Hyperscan 扫描时间过长
Hyperscan scanning in too much time
- 我正在使用具有一千万行签名的数据库来匹配 PCAP 包。我用c++完成了代码。 匹配一个200m的PCAP封装需要100秒
- 嗯,据我所知,有人完成了这个项目,匹配一个200m PCAP封装只需要几秒钟。
- 这是我的步骤:
- 我所有的图案都是这样的:
id:1258808
pattern:\x06\x62\x68\x69\x66\x72\x69\x03\x63\x6F\x6D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
flag :0
- 我使用块模式。
- 函数hs_scan()
for (size_t i = 0; i < packets.size(); ++i) {
const std::string pkt = packets[i];
err = hs_scan(database, pkt.c_str(), pkt.length(), 0,
scratch, onMatch, &matchCount);
if (err != HS_SUCCESS) {
cerr << "ERROR: Unable to scan packet. Exiting." << endl;
exit(-1);
}
}
我想知道我的问题在哪里,如何缩短运行时间?
我弄清楚了问题,缓慢的原因是因为我在我的数据库中混合了太多不同模式的标志。所以我用不同的标志拆分模式,效果非常好。谢谢大家。
- 我正在使用具有一千万行签名的数据库来匹配 PCAP 包。我用c++完成了代码。 匹配一个200m的PCAP封装需要100秒
- 嗯,据我所知,有人完成了这个项目,匹配一个200m PCAP封装只需要几秒钟。
- 这是我的步骤:
- 我所有的图案都是这样的:
id:1258808
pattern:\x06\x62\x68\x69\x66\x72\x69\x03\x63\x6F\x6D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
flag :0
- 我使用块模式。
- 函数hs_scan()
for (size_t i = 0; i < packets.size(); ++i) {
const std::string pkt = packets[i];
err = hs_scan(database, pkt.c_str(), pkt.length(), 0,
scratch, onMatch, &matchCount);
if (err != HS_SUCCESS) {
cerr << "ERROR: Unable to scan packet. Exiting." << endl;
exit(-1);
}
}
我想知道我的问题在哪里,如何缩短运行时间?
我弄清楚了问题,缓慢的原因是因为我在我的数据库中混合了太多不同模式的标志。所以我用不同的标志拆分模式,效果非常好。谢谢大家。