创新路
我们一直在努力

合理设置操作系统网卡的MTU值

MTU:是网络的最大传输单元,通信术语:最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关。

OSI中的层 功能 TCP/IP协议族
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 解除或建立与别的接点的联系 没有协议
传输层 提供端对端的接口 TCP,UDP
网络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

当MTU不合理时会造成如下问题

1.本地MTU值大于网络MTU值时,本地传输的"数据包"过大导致网络会拆包后传输,不但产生额外的数据包,而且消耗了“拆包、组包”的时间。

2.本地MTU值小于网络MTU值时,本地传输的数据包可以直接传输,但是未能完全利用网络给予的数据包传输尺寸的上限值,传输能力未完全发挥。

具体问题:服务器上:第一:使用pptp后,未将服务器上mtu改小,可能造成带宽跑不上去。

                                第二:使用GRE后,未将服务器上mtu改小,可能造成部分网站无法打开,如百度,hao123等。

                生活中:在拨号上网的年代,如果MTU设置不合理,你玩游戏会很难受,因为,使用的是ADSL上网的方式,ADSL使用的PPPoE协议。        

 PPPoE协议介于以太网和IP之间,协议分为两部分,PPP( Point to Point Protocol )和oE( over Ethernet ),也就是以太网上的PPP协议,而PPPoE协议头信息为:

| VER(4bit) | TYPE(4bit) | CODE(8bit) | SESSION-ID(16bit) | LENGTH(16bit) |

这里总共是48位,也就是6个字节,那么另外2个字节是什么呢?答案是PPP协议的ID号,占用两个字节,所以在PPPoE环境下,最佳MTU值应该是:1500 – 4 – 2 = 1492。

这是一个真实的例子,据说当年魔兽贴吧就有这样一个帖子说的就是放技能AOE的那个瞬间,很大概率会掉线,修改MTU1480后又可以愉快的玩耍。

什么是合理的MTU值

让本地MTU值与网络的MTU值一致,以致于不会出现数据包的大小超过网络传输的MTU值,而不得不进行拆包,然后组包,再进行转发,所谓合理的设置MTU值,就是让本地的MTU值与网络的MTU值一致,既能完整发挥传输性能,又不让数据包拆分。

探测以及设置

查看

image.png

image.png

测试

linux下探测MTU值
ping -s 1460 -M do baidu.com

含义:发送大小包大小是1460(+28)字节,禁止路由器拆分数据包。

image.png

image.png

image.png

image.png

可以看到,临界值为1472

windows下探测MTU值

ping -f -l 1460 baidu.com

image.png

设置:

linux临时修改
ifconfig eth0 mtu 1472 up

win:运行 cmd

netsh interface ipv4 set subinterface "本地连接" mtu=1472 store=persistent

为什么mtu值是探测出来的值加上28

因为ping使用icmp协议,你指定的探测值是数据包数据净荷的长度,还需要加上20字节的ip头部,和8字节的icmp封装。

为什么是1500

现在默认都是1500,包括大部分网络设备和系统,

其实一个标准的以太网数据帧大小是:1518,头信息有14字节,尾部校验和FCS占了4字节,所以真正留给上层协议传输数据的大小就是:1518 – 14 – 4 = 1500,而1518这个值是考虑到传输效率以及传输时间而折中选择的一个值,并且由于目前网络链路中的节点太多,其中某个节点的MTU值如果和别的节点不一样,就很容易带来拆包重组的问题,甚至会导致无法发送。

未经允许不得转载:天府数据港官方信息博客 » 合理设置操作系统网卡的MTU值

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机