MTU 检测和设置

来源:互联网 发布:mac连接wifi经常断线 编辑:程序博客网 时间:2024/05/29 10:12

转载地址:http://blog.csdn.net/zhoujunyi/article/details/1575585

 MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包。MTU的单位是字节。
  大部分网络设备都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。

linux MTU调整

1、找到服务器的MTU值

使用netstat -i 来查看MTU的值

[root@asterisk ~]# netstat -i 
Kernel Interface table
Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0    60041      0      0      0    48841      0      0      0 BMRU
lo        16436   0       63      0      0      0       63      0      0      0 LRU


找到一台终端:输入以下命令:

ping -c (number) -M do -s (bytes) IP

其中number是次数、是封包大小。结果如下

Frag needed and DF set (mtu = 1500)

意思是说,这个封包的大小大于MTU能够接受的大小,如果要达到最佳化,那么MTU数值的设定要更小才行!继续使用1400來测试:

1408 bytes from 1.1.1.1: icmp_seq=0 ttl=64 time=3.15 ms

结果出现回应!这表示这个MTU值是可行的!不过,建议找出可行的最大MTU值!这样一來,在设定的时候,才可以达到最佳的网络速率!

最终MTU最佳数值为:
最佳MTU+28
对EtherNet来说:1472+28=1500

2、调整MTU值:

ifconfig eth0 mtu 1500

这样应该已经可以解決MTU无法搭配的问题

注:
MTU: Maximum Transmission Unit 网络最大传输单位。并不是越大越好,而是需要针对网络來进行最佳化

常见网络MTU 
EtherNet(一般的网络)  1500 
PPPoE(ADSL用的)   1492 
Dial-up(modem)    576

 

my example:(from 218.7.43.7)

[root@flat root]# ping -c 3 -M do -s 1473 218.7.43.6
PING 218.7.43.6 (218.7.43.6) 1473(1501) bytes of data.
From 218.7.43.7 icmp_seq=0 Frag needed and DF set (mtu = 1500)
From 218.7.43.7 icmp_seq=0 Frag needed and DF set (mtu = 1500)
From 218.7.43.7 icmp_seq=0 Frag needed and DF set (mtu = 1500)

--- 218.7.43.6 ping statistics ---
0 packets transmitted, 0 received, +3 errors

[root@flat root]# ping -c 3 -M do -s 1472 218.7.43.6
PING 218.7.43.6 (218.7.43.6) 1472(1500) bytes of data.
1480 bytes from 218.7.43.6: icmp_seq=0 ttl=255 time=0.937 ms
1480 bytes from 218.7.43.6: icmp_seq=1 ttl=255 time=0.912 ms
1480 bytes from 218.7.43.6: icmp_seq=2 ttl=255 time=0.972 ms

--- 218.7.43.6 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2022ms
rtt min/avg/max/mdev = 0.912/0.940/0.972/0.035 ms, pipe 2