libpcap到达间隔时间和调度程序

时间:2010-10-06 12:05:35

标签: linux networking pcap libpcap tcpdump

我正在研究网络流量表征。 在处理收集的数据(由tcpdump捕获并保存到数据库中)时,我偶然发现了数据包(或流)到达间隔时间的奇怪现象:

从未观察到35-170μsec的到达间隔时间

当然,如果没有DAG卡(可以对数据包进行硬件时间戳),我就不能依赖于毫秒以下的尺寸精度。然而,我正在寻找一个原因,为什么这个差距存在于以下累积分布函数中:CDF for flow inter-arrival times

我还绘制了使用特定IAT看到的流量数量:alt text

我的数据基础包含> 13 Mio流量,所以这种差距不太可能意外存在 - 我只是在寻找原因。

是吗?如何安排? 我知道linux内核调度程序(是一个debian机器)使用250Hz的频率,因此每个tick是4ms,这大于我的35-170μsec的间隙因子> 200。 网卡是否进行过任何调度?可以看到许多 IAT为0μsec,因此我假设这些数据包是在彼此之后直接处理的。我可以想象我正在搜索的那种调度器嘀嗒约为40μsec,导致IAT为0

你有什么线索,我怎么解释这个差距? 非常感谢! 斯特芬

2 个答案:

答案 0 :(得分:1)

这只是一个假设(又名WAG),但也许170us是从NIC连续中断之间的最短时间(由于NIC硬件,DMA控制器,中断控制器,CPU或所有这些的某种组合) )。

到达间隔时间<35us的分组将对应于在一个中断中接收的多个分组(具有不同的处理时间,取决于大小和协议)。 35us本身将对应于在一个中断中可以接收的最大数据包数(由于NIC缓冲区的大小),以及最坏情况下的处理时间。

答案 1 :(得分:0)

确实不确定,但我可以想象这张卡片会以某种刻度率进行某种书籍保存。此外,35-170μs的范围如何与数据包长度相关?