小编Ale*_*ale的帖子

丢弃大于1500字节的UDP数据包

我正在开发一个tftp客户端和服务器,我想动态选择udp有效负载大小来提高传输性能.

我用两台linux机器测试了它(一台有千兆以太网卡,另一台是快速以太网卡).我将千兆卡的MTU更改为2048字节,另一台更改为1500.

我曾经习惯setsockopt(sockfd, IPPROTO_IP, IP_MTU_DISCOVER, &optval, sizeof(optval))MTU_DISCOVER旗帜设置为IP_PMTUDISC_DO.

根据我的阅读,此选项应将该DF位设置为1,因此应该可以找到网络的最小MTU(具有最低MTU的主机的MTU).但是,当我发送一个大小大于我发送数据包的机器的MTU的数据包时,这个东西只会给我一个错误.

另一台机器(在这种情况下是服务器)不接收超大数据包(服务器的MTU为1500).丢弃所有UDP数据包,唯一的方法是发送1472字节的数据包.

为什么主机这样做?根据我的阅读,如果我发送的数据包大于MTU,ip层应该将其分段.

linux networking udp

3
推荐指数
1
解决办法
8973
查看次数

标签 统计

linux ×1

networking ×1

udp ×1