最近,我读了很多关于10 mb/s网卡、它们的DMA和linux内核(10/100mb/s网卡)处理数据方式的网站和书籍,有几个问题出现在我的脑海里。将10 at /s的数据流从NIC发送到用户域的最简单方法是什么(我假设能够以相同的速率处理用户域中的数据)。和或者他们还有我想不到的更好的解决方案:
谢谢。
我有一个问题,为什么我的机器的吞吐量与大小为1500字节的小数据包(即64字节)相比非常糟糕?我有一个千兆位网卡,可以以80 to /s的速度传输1500字节大小的数据包,但在64字节大小的数据包中,我很难分辨出大约25 to/s。我知道,在1500字节数据包的情况下,我需要发送大约80k个PPS才能达到线路速率,而对于64个字节,需要发送大约140万PPS。
但是为什么小数据包的吞吐量会有很大的差异呢?编辑:在linux中使用内存映射将数据
我正在开发一个程序,它使用原始套接字(AF_PACKET,SOCK_RAW)嗅探网络数据包,并以某种方式处理它们。如何知道数据包是否由于套接字的接收缓冲区中缺少空间而被丢弃?
我试过运行ss -f link -nlp。我使用的是Ubuntu14.04.2LTS(GNU/Linux3.13.0-52-泛型x86_64)。