8

我发现自己需要处理使用tcpdump. 阅读流量并不难,但有点棘手的是发现流量中存在“峰值”的地方。我最关心的是 TCP SYN 数据包,我想做的是找到给定目标端口的流量突然增加的日子。有相当多的数据需要处理(大约一年)。

到目前为止,我尝试的是使用指数移动平均线,这足以让我得到一些有趣的度量,但是将我所看到的与外部数据源进行比较似乎在将事物标记为时有点过于激进异常的。

我考虑过使用指数移动平均线加上历史数据的组合(可能从过去 7 天开始,认为我所看到的应该有一个每周周期),因为我读过的一些论文似乎有成功地以这种方式对资源使用进行建模。

那么,有没有人知道一种好的方法或某个地方可以去阅读这类事情。

我一直使用的移动平均线大致如下:

avg = avg+0.96*(new-avg)

avg成为 EMA 并成为new新的衡量标准。我一直在尝试使用什么阈值,但发现“在权衡新值之前必须是高于平均值的给定因素”和“必须至少高 3”的组合以给出最不坏的结果。

4

2 回答 2

5

这是被广泛研究的入侵检测文献。这是一篇关于该问题的开创性论文,其中展示了如何分析 tcpdump 数据以获得相关见解。

这是论文:http : //www.usenix.org/publications/library/proceedings/sec98/full_papers/full_papers/lee/lee_html/lee.html 这里他们使用 RIPPER 规则归纳系统,我想你可以替换那个旧的一个用于更新的东西,例如http://www.newty.de/pnc2/http://www.data-miner.com/rik.html

于 2010-02-08T14:12:29.123 回答
4

我将对数据应用两个低通滤波器,一个具有长时间常数 T1,另一个具有短时间常数 T2。然后,您将查看这两个滤波器输​​出的幅度差异,当它超过某个阈值 K 时,这将是一个尖峰。最难的部分是调整 T1、T2 和 K,这样您就不会得到太多误报,也不会错过任何小的尖峰。

下面是一个单极点 IIR 低通滤波器:

new = k * old + (1 - k) * new

k 的值决定了时间常数,通常接近 1.0(但当然 < 1.0)。

我建议您并行应用两个具有不同时间常数的此类滤波器,例如从一个(短时间常数)的 k = 0.9 和另一个(长时间常数)的 k = 0.99 开始,然后查看幅度差异在他们的输出中。幅度差异在大多数情况下会很小,但在出现尖峰时会变大。

于 2010-02-08T14:06:00.523 回答