最近需要用winpcap发包,期间发现了很多问题。
1.在我的一台主机(惠普图形工作站wx8400,称为主机A)上,连接的是100M的路由器,发送广播包速度一直在10Mbit/s,此时如果网络上有其他的winpcap广播包,那么发送和接收速度平均分配10M。另外一台主机(cpu为i3的组装机,称为主机B)同样连接的是100M的路由器,发送广播包速度为28Mbit/s,此时如果网络上有其他的winpcap广播包,这个没测。 后来经过测试发现,A主机网卡上有流控被打开了。B主机流控是关闭的。 将流控都关闭掉,A的速度提升到98Mbit/s,而B的速度没有提升。怀疑B的网卡上其他设置有影响,待调查。
2.利用pcap_sendpacket和pcap_sendqueue_transmit发包的速度不一样。pcap_sendqueue_transmit是高于pcap_sendpacket的,而且对cpu的开销也要小。
在100M的连接下A主机能达到98Mbit/s,在1000M连接下能达到740Mbit/s。
3.对同的设备,发送速度不一样。同一套代码,
情景1:A主机+vs2012+pcap_sendpacket
情景2:B主机+vs2010+pcap_sendpacket
情景3:A主机+vs2012+pcap_sendqueue_transmit
情景4:B主机+vs2010+pcap_sendqueue_transmit
100M:
情景1:发送速度98Mbit/s
情景2:发送速度30Mbit/s
情景3:发送速度130Mbit/s
情景4:发送速度110-300Mbit/s不稳定
1000M:
情景1:发送速度98Mbit/s
情景2:发送速度98Mbit/s
情景3:发送速度800-980Mbit/s不稳定
情景4:发送速度500-800Mbit/s不稳定
关于不稳定的原因,可能是我程序的问题,我是循环发包,结束一次后打印发送信息,然后进入第二次发包。不过还是可以看出,不同的设备上发送的速度不一样。这个问题也还需调查。
情景1:发送速度98Mbit/s
情景2:发送速度30Mbit/s
情景3:发送速度130Mbit/s
情景4:发送速度110-300Mbit/s不稳定