增加MTU但仍然无法发送大型UDP数据包

时间:2015-01-13 08:42:43

标签: sockets udp texas-instruments mtu

我想先在这里尝试实现的一些信息。我正在使用德州仪器板EVM6678LE,我想要做的是提高主板和PC之间的UDP传输速率。

我通过netsh>接口> ipv4将PC上的MTU增加到15,000。但是,当我从我的电脑上ping电路板时,我只能ping通“ping 192.168.2.100 -l 10194”,如果我用195bytes开启,我将收到请求超时。这是我PC的限制吗?

有没有人知道可能的原因是什么?任何建议或建议都会受到欢迎。作为提高传输速率的唯一方法,我可以想到它增加了每个数据包的大小,从而减少了开销。在10k我的速率大约为9.1MB / s,而我正试图达到25MB / s。

谢谢!

1 个答案:

答案 0 :(得分:0)

增加PC上的MTU可能无法防止碎片。我不确切知道控制它的确切内容,但即使未达到MTU,您的网卡或驱动程序也可能会分组数据包。使用像Wireshark这样的嗅探器来查看数据包的发送方式。

关于超时,您的主板可能会拒绝碎片ping(因为Ping of Death保护)。它的数据包缓冲区也有可能是10kB(10240)字节长,并且不能接收更大的数据包。此外,请确保接收端点具有匹配的MTU。

无论如何,如果你试图提高转移率,那你就走错了路。 UDP的开销是8字节,IP 20字节,以太网18字节,总共46个字节(哦,巧合,46 + 10194正好是10240)。 1024 MTU的46字节开销为95.5%。 4096的46个字节是98.9%,16384的46个字节是99.7%。这意味着你从1024到4096 MTU获得+ 3.5%的传输速率,从4096到16384再获得+ 0.8%。增益非常荒谬,你应该让MTU达到普通默认1500.

无论如何,仅通过改变MTU从9.1MB / s到25MB / s是不可能的(如果是,为什么PC默认不高?)。在这里,我猜您使用的是快速以太网(100BASE-T),并且您已经在全带宽附近进行传输。要获得更高的速率,您需要具有千兆以太网(1000BASE-T)。这意味着您需要两个硬件端点来支持1000BASE-T。