• 欢迎访问db1024网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏db1024吧

什么是MTU,Linux VPS/Windows VPS设置MTU新手教程

主机教程 Liam 1年前 (2019-05-11) 439次浏览 12个评论 扫描二维码
文章目录[隐藏]

最近在设置一款国外VPS的时候,能够连上,可是不能够使用浏览器上网,后来发现问题居然是MTU错误,重新设置后就可以上网了。今天我就说说MUT是怎么回事,我们在国外VPS中有可能会用到。

MTU是Maximum Transmission Unit的缩写,中文名是:最大传输单元。

我们先看下网络中注明的7层协议。

什么是MTU,Linux VPS/Windows VPS设置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

从上面的表格中可以看到,在7层网络协议中,MTU是数据链路层的概念。MTU限制的是数据链路层的payload,也就是上层协议的大小,例如IP,ICMP等。

MTU作用

举一个最简单的场景,你在家用自己的笔记本上网,用的是路由器,路由器连接电信网络,然后访问了www.baidu.com,从你的笔记本出发的一个以太网数据帧总共经过了以下路径:

笔记本 -> 路由器 -> 电信机房 -> 服务器

其中,每个节点都有一个MTU值,如下:

1500        1500                            1500    
   笔记本 -> 路由器 -> 电信机房  -> 服务器

假设现在我把笔记本的MTU最大值设置成了1700,然后发送了一个超大的ip数据包(2000),这时候在以外网传输的时候会被拆成2个包,一个1700,一个300,然后加上头信息进行传输。

1700        1500                            1500    
   笔记本 -> 路由器 -> 电信机房  -> 服务器

路由器接收到了一个1700的帧,发现大于自己设置的最大值:1500,如果IP包DF标志位为1,也就是不允许分包,那么路由器直接就把这个包丢弃了,根本就不会到达电信机房,也就到不了服务器了,所以,到这里我们就会发现,MTU其实就是在每一个节点的管控值,只要是大于这个值的数据帧,要么选择分片,要么直接丢弃。

为什么MTU通常设置为1500

其实一个标准的以太网数据帧大小是:1518,头信息有14字节,尾部校验和FCS占了4字节,所以真正留给上层协议传输数据的大小就是:1518 – 14 – 4 = 1500,那么,1518这个值又是从哪里来的呢?

假设取一个更大的MTU值会怎么样?

假设MTU值和IP数据包大小一致,一个IP数据包的大小是:65535,那么加上以太网帧头和为,一个以太网帧的大小就是:65535 + 14 + 4 = 65553,看起来似乎很完美,发送方也不需要拆包,接收方也不需要重组。

那么假设我们现在的带宽是:100Mbps,因为以太网帧是传输中的最小可识别单元,再往下就是0101所对应的光信号了,所以我们的一条带宽同时只能发送一个以太网帧。如果同时发送多个,那么对端就无法重组成一个以太网帧了,在100Mbps的带宽中(假设中间没有损耗),我们计算一下发送这一帧需要的时间:

( 65553 * 8 ) / ( 100 * 1024 * 1024 ) ≈ 0.005(s)

在100M网络下传输一帧就需要5ms,也就是说这5ms其他进程发送不了任何数据。如果是早先的电话拨号,网速只有2M的情况下:

( 65553 * 8 ) / ( 2 * 1024 * 1024 ) ≈ 0.100(s)

100ms,这简直是噩梦。其实这就像红绿灯,时间要设置合理,交替通行,不然同一个方向如果一直是绿灯,那么另一个方向就要堵成翔了。

MTU值既然大了不行,那把MTU的值设置小一点可以么?

假设MTU值设置为100,那么单个帧传输的时间,在2Mbps带宽下需要:

( 100 * 8 ) / ( 2 * 1024 * 1024 ) * 1000 ≈ 5(ms)

时间上已经能接受了,问题在于,不管MTU设置为多少,以太网头帧尾大小是固定的,都是14 + 4,所以在MTU为100的时候,一个以太网帧的传输效率为:

( 100 – 14 – 4 ) / 100 = 82%

写成公式就是:( T – 14 – 4 ) / T,当T趋于无穷大的时候,效率接近100%,也就是MTU的值越大,传输效率最高,但是基于上一点传输时间的问题,来个折中的选择吧,既然头加尾是18,那就凑个整来个1500,总大小就是1518,传输效率:

1500 / 1518 =  98.8%

100Mbps传输时间:

( 1518 * 8 ) / ( 100 * 1024 * 1024 ) * 1000 = 0.11(ms)

2Mbps传输时间:

( 1518 * 8 ) / ( 2 * 1024 * 1024 ) * 1000 = 5.79(ms)

至于MUT的值最少是64,这个值是因为和以太网帧在半双工下的碰撞有关,具体这里就不展开了。

玩游戏,有可能你把MTU改了就不卡了

路由器默认值大多都是1500,理论上是没有问题的,那为什么我玩游戏的时候改成1480才能流畅呢?原因在于当时我使用的是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。

当时我的上网路径如下:

PC -> 路由器 -> 电信

我在路由器进行拨号,然后PC连接路由器进行上网。

问题就出在路由器拨号,如果是PC拨号,那么PC会进行PPPoE的封装,会按照MTU:1492来进行以太网帧的封装,即使通过路由器,路由器这时候也只是转发而已,不会进行拆包。

而当用路由器拨号时,PC并不知道路由器的通信方式,会以网卡的设置,默认1500的MTU来进行以太网帧的封装,到达路由器时,由于路由器需要进行PPPoE协议的封装,加上8字节的头信息,这样一来,就必须进行拆包,路由器把这一帧的内容拆成两帧发送,一帧是1492,一帧是8,然后分别加上PPPoE的头进行发送。

平时玩游戏不卡,是因为数据量路由器还处理得过来,而当进行群怪AOE的时候,由于短时间数据量过大,路由器处理不过来,就会发生丢包卡顿的情况,也就掉线了。

设为1480是避免二次拨号带来的又一次PPPoE的封装,因为时间久远,没办法回到当时的场景再去抓包了

总结一下,1518这个值是考虑到传输效率以及传输时间而折中选择的一个值,并且由于目前网络链路中的节点太多,其中某个节点的MTU值如果和别的节点不一样,就很容易带来拆包重组的问题,甚至会导致无法发送。

怎样修改VPS服务器 MTU值

下面我们就说一说Linux VPS和Windows VSP的值怎样修改。

Linux VPS 修改MTU值

因为Linux的版本众多,这里主要说下Centos 6 和 Centos 7的设置。

Centos 6 MTU值的修改只需要输入如下命令就可以了:

ifconfig eth0 mtu 这里填写MTU的值

Centos 7 MTU值修改需要修改文件,输入如下命令:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

然后增加如下内容:

MTU="这里填写MTU的值"

保存后输入如下命令重启网卡生效就可以了。

service network restart

然后重新启动

reboot

Windows VPS 修改MTU值

1、以管理员身份运行命令行

2、在命令提示符中输入如下命令,按下回车键查看当前的MTU值

netsh interface ipv4 show subinterfaces

什么是MTU,Linux VPS/Windows VPS设置MTU新手教程

接着按下面格式输入下面的命令, 然后按下回车键:

netsh interface ipv4 set subinterface "连接名" mtu=这里填写MTU的值 store=persistent

比如用前面的例子就应该像下面这样写:

netsh interface ipv4 set subinterface "WLAN" mtu=1458  store=persistent

出现“确定”提示 则说明修改完成。

什么是MTU,Linux VPS/Windows VPS设置MTU新手教程

以上就是关于MTU的一些介绍,并介绍了Linux VPS和WIndows VPS修改MTU的方法,希望可以帮助到有需要的朋友。


db1024 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:什么是MTU,Linux VPS/Windows VPS设置MTU新手教程
喜欢 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(12)个小伙伴在吐槽
  1. Excellent article. I certainly love this site. Keep writing!
    web hosting reviews2020-08-11 05:15 (14小时前)回复 Linux | Chrome 66.0.3359.139
  2. Hi, just wanted to tell you, I loved this post. It was inspiring. Keep on posting!
    web hosting2020-08-05 18:37 (6天前)回复 Mac OS X | Chrome 66.0.3359.181
  3. Hi i am kavin, its my first time to commenting anywhere, when i read this article i thought i could also create comment due to this good piece of writing.
    cheap fly2020-07-31 10:12 回复 Linux | Firefox浏览器 60.0.2
  4. I was wondering if you ever considered changing the layout of your blog? Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having one or two images. Maybe you could space it out better? adreamoftrains hosting services
    adreamoftrains best website hosting2020-07-30 21:09 回复 Linux | Chrome 65.0.3325.181
  5. Howdy! I know this is kind of off topic but I was wondering if you knew where I could get a captcha plugin for my comment form? I'm using the same blog platform as yours and I'm having problems finding one? Thanks a lot!
    cheap flights with jet2 sale flights2020-07-28 12:29 回复 Linux | Chrome 65.0.3400.0
  6. Hi, Neat post. There's a problem with your website in web explorer, may test this? IE still is the market leader and a good component to other people will leave out your wonderful writing due to this problem.
    best web hosting 20202020-07-27 07:58 回复 Linux | Firefox浏览器 56.0
  7. Do you have a spam problem on this site; I also am a blogger, and I was curious about your situation; we have developed some nice procedures and we are looking to trade strategies with other folks, be sure to shoot me an email if interested.
    best website hosting2020-07-23 09:36 回复 Linux | Chrome 56.0.2924.87
  8. I have to thank you for the efforts you've put in writing this site. I'm hoping to see the same high-grade content by you in the future as well. In truth, your creative writing abilities has inspired me to get my own, personal site now ;)
    best website hosting2020-07-22 05:29 回复 Linux | Firefox浏览器 56.0.4
  9. Outstanding post however I was wondering if you could write a litte more on this subject? I'd be very grateful if you could elaborate a little bit more. Thanks!
    best website hosting2020-07-18 13:53 回复 Linux | Chrome 65.0.3325.181
  10. My brother suggested I might like this website. He was totally right. This post actually made my day. You can not imagine just how much time I had spent for this info! Thanks!
    cbd oil that works 20202020-06-29 17:09 回复 未知操作系统 | Chrome 43.0.2357.125
  11. Hi there, this weekend is good in favor of me, as this time i am reading this impressive informative paragraph here at my residence.
    cbd oil that works 20202020-06-27 17:06 回复 Windows 8.1 | Chrome 63.0.3239.132
  12. Thanks for every other great post. The place else could anybody get that type of info in such a perfect approach of writing? I've a presentation next week, and I'm at the look for such information.
    g rsacwgxy2020-06-23 05:23 回复 Windows 8.1 | Chrome 63.0.3239.132