我有一个千兆位网卡,可以以80 to /s的速度传输1500字节大小的数据包,但在64字节大小的数据包中,我很难分辨出大约25 to/s。我知道,在1500字节数据包的情况下,我需要发送大约80k个PPS才能达到线路速率,而对于64个字节,需要发送大约140万PPS。
但是为什么小数据包的吞吐量会有很大的差异呢?编辑:在linux中使用内存映射将数据包从用户空间传输到内核空间,然后直接写入网络驱动程序进行传输。我看到我的CPU利用率非常低,与64个字节和1500字节数
最近,我读了很多关于10 mb/s网卡、它们的DMA和linux内核(10/100mb/s网卡)处理数据方式的网站和书籍,有几个问题出现在我的脑海里。将10 at /s的数据流从NIC发送到用户域的最简单方法是什么(我假设能够以相同的速率处理用户域中的数据)。和或者他们还有我想不到的更好的解决方案:
谢谢。
我已经写了一个自定义的无线系统/驱动程序,它工作在无线网卡上,带有数据包注入,并且处于监控模式。我的程序基于libpcap,使用pcap_inject在无线设备上发送数据包。然而,问题是,当我开始尝试以更快的速度(TCP,更有用的25+数据包每秒传输协议)传输时,我似乎很快就耗尽了缓冲区,我的程序错误在Failed to inject packet: send: Resource我知道,我的无线网卡传输速度足够快,可以以超过500 my /S的速率处理TCP (因此它