PC上最快的发包工具

昨天做了个实验,测试了三种发包方式所能达到的最快速度。测试平台是一台双至强、1G内存的服务器,操作系统为Linux,内核版本2.6.15.3,网卡为Intel e1000光口网卡。使用一台smartbit来记录发包速度。
所使用的三种方法分别是:
tcpreplay:常用的发包软件,可以重发tcpdump所捕获的报文。
pktgen:linux内核自带的发包工具。
修改的e1000驱动:在驱动里直接写网卡的发送缓冲区
下面是测试结果:

  tcpreplay ,64字节报文 pkggen,64字节报文 e1000,64字节报文 tcpreplay,512字节报文 pktgen,512字节报文 e1000,512字节报文
pps 298725 600000 610000 232382 234091 234000
Mbps 146 266 270 908 857 850

说明一下,统计数据的值不算精确,因为只花了半个小时时间测了一下,但是拿来参考还是有说服力的。
可以看出,当发送小包时,tcpreplay的性能较差。发送大包时,三者性能接近。
有点出乎意料的是,通过e1000驱动发包,在64字节小包的时候也只达到不到300Mbps的速度。驱动修改的方式是在预先设置好e1000的4096个发送缓冲区,通过在中断处理函数里设置e1000的发送首尾指针来发包,相信这种方式是软件所能做到的最快的方式了。
如果继续深入测试,可以通过调整控制e1000中断产生的几个参数看能不能达到更高的吞吐率。但也可能e1000发包的上限就是这样了。

你可能感兴趣的:(linux,网卡)