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



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

我已通过 netsh>interface>ipv4 将 PC 上的 MTU 增加到 15,000。但是当我从 PC 上 ping 电路板时,我只能 ping 到"ping 192.168.2.100 -l 10194",如果我 ping 195 字节以上,我会收到请求超时。这是我的电脑的限制还是其他什么?

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

谢谢!

增加电脑上的 MTU 可能无法防止碎片。我不知道究竟是什么在控制它,但即使未到达 MTU,您的网卡或驱动程序也可以对数据包进行分段。使用像Wireshark这样的嗅探器来查看数据包是如何发送的。

关于超时,您的主板可能会拒绝分段的 ping(因为死亡保护的 Ping)。其数据包缓冲区也可能为 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。

最新更新