• 幕客老师召集小伙伴
  • 运维高手36项修炼
  • python自动化运维项目实战
  • nginx从入门到实战
  • 阿里云与Centos7实战

通过修改MTU设置降低UDP丢包率

一、介绍MTU 

MTU及最大传输单元。在默认情况下,TCP/IP在网络中的最大传输单元为1500。通俗的讲认的MTU值为1500字节,那么当传送的数据大于1500时,则会以此为标准,将其分封个若干个1500字节,然后进行封包、解包操作。

值过小,那么会在网络中进行频繁的封包和解包,其影响显而易见;而设置的值过大那么适合局域网内部的高速传输,但是接入Internet则会影响稳定性。因此我们需要寻找最合适的MTU值。

二、在linux下如何测试网络的MTU值呢。可以通过ping命令进行:

1
2
3
4
5
6
7
8
16:11 root@Operation.Machine#ping -c 3 -s 2222 -M do 10.100.28.254
PING 10.100.28.254 (10.100.28.254) 2222(2250) bytes of data.
From 10.100.28.128 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 10.100.28.128 icmp_seq=1 Frag needed and DF set (mtu = 1500)
From 10.100.28.128 icmp_seq=1 Frag needed and DF set (mtu = 1500)
 
--- 10.100.28.254 ping statistics ---
0 packets transmitted, 0 received, +3 errors

-s参数表示发送的ICMP包大小为8000个字节,-M do表示不能拆包,结果将返回错误信息。

 

三、如何对应修改linux的设备中的mtu值大小呢?

可以通过ifconfig 来进行指定。

1
2
3
4
5
6
7
8
9
10
11
12
13
16:33 root@Operation.Machine#ifconfig eth0 mtu 2000
tty:[1] jobs:0] cwd:[~]
16:33 root@Operation.Machine#ifconfig eth0    
eth0      Link encap:Ethernet  HWaddr 52:54:00:9B:9F:CD 
          inet addr:10.100.28.128  Bcast:10.100.28.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe9b:9fcd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:2000  Metric:1
          RX packets:68415321 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32718119 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:13491417598 (12.5 GiB)  TX bytes:11123478941 (10.3 GiB)
 
tty:[1] jobs:0] cwd:[~]

四、Mtu=1500 是经过了多次的测试得出的默认值,一般不建议进行修改。

由于程序可以控制每次发包的大小的。比如程序会大量的发3000个字节的Mtu包,那么系统就频繁的修改进行数据包的拆解。这样的话,可能导致系统的开销过大,而导致丢包率增加。

通过修改MTU设置降低UDP丢包率

Pingbacks已打开。

引用地址

暂无评论

发表评论