美文网首页
2019-11-25 二层MTU和IP MTU

2019-11-25 二层MTU和IP MTU

作者: AK蜗牛 | 来源:发表于2019-11-25 23:53 被阅读0次

    几个概念:

    1. 二层MTU:
      Maximum Transmit Unit,最大传输单元,指数据链路层提供给其上层(IP/MPLS等)最大传输数据的大小,单位字节。
      不同的协议要求的MTU大小不同。比如:
    • IEEE802.3/802.2最大MTU 1492.
    • 以太网口的MTU,范围是64-1518字节,过大或过小的以太网帧都可能被丢弃。
    • IP协议会根据二层MTU的值来决定是否对数据进行分片,两台PC之间的路由会经过很多跳,其中MTU最小的决定了传输速率。
    1. IP MTU:范围是(68-65535)
      网络层的上层协议(如TCP/IP),网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。
      分片会导致传输性能降低,另外有些高层要求本层数据包不能切片,则会在IP数据包包头里面加上一个标签:DF(Do not Fragment)。这样会造成,当这个数据包传输过程中遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包,然后返回一个错误信息给发送者。

    2. MSS:Maximum Segment Size ,最大分段大小,不包含TCP头和 option,只包含TCP Payload ,TCP用来限制自己每次发送的最大分段尺寸。MTU大小影响TCP分片的大小。一般需要尽量减少TCP分片,否则发送和接收路由器需要花费更多的资源来处理分片和重组。
      MSS: Maximum Segmeant Size 最大传输大小,在TCP协议中,MSS是可协商项.

    3. 三者的关系
      举例来说,MTU=1500,即IP包的尺寸<=1500,可以不分片从这个网络接口发送,否则就需要分片。
      公式如下:

    IP = IP Header + TCP = 20 + 1480 = 1500
    TCP = TCP Header + TCP Payload = 20 + 1460 = 1480
    这里TCP Payload = 1460 = MSS 
    
    就是说:
    MSS= MTU - IP Header - TCP Header = 1500 - 20 -20 =1460
    

    TCP 在三次握手的第一个SYN消息中有一个选项option 4,通告双方的MSS,如果一方MSS=1460,而另一方的MSS=9000,会选择较小的一方即1460作为这个TCP连接的MSS:

    MSS =minimum{MSSs ,MSSr}
    则 MSS = 最小值 { 1460,8960 }= 1460
    

    注意,MSS只是解决路径上第一跳的MTU问题,不能保证由于路径中有更小的MTU导致的分片。

    什么时候用配置大MTU值?

    比如在数据中心,MTU经常设置为大于8192字节。 这是因为NFS网络服务器之间的数据读取、存储最小单位是磁盘扇区,而服务器扇区多用8192,而且为了避免被分片,发送这些扇区数据的IP包的DF设置为1,意思是不允许分片。这里整个数据中心的MTU都要设置为大于8192,再加上IP 头,UDP头,文件系统头等,一般设置9000就好了。

    案例:
    在华为路由器上,接口配置mtu 9000,我们可以看到:端口下配置的是IP MTU,配置成9000字节后, 二层MTU自动变成9600.

    [~ar01]disp int g0/2/0
    GigabitEthernet0/2/0 current state : UP (ifindex: 6)
    Line protocol current state : UP
    Last line protocol up time : 2019-10-08 05:14:19
    Link quality grade : GOOD
    Route Port,The Maximum Transmit Unit(L3) is 9000 bytes, The Maximum Receive Unit(L2) is 9600 bytes
    Internet Address is .....
    [~ar01] disp ip int g0/2/0
    GigabitEthernet0/2/0 current state : UP
    Line protocol current state : UP
    The Maximum Transmit Unit : 9000 bytes
    input packets : 1470020, bytes : 93544273, multicasts : 0
    

    在思科NCS上,端口配置MTU 9014,可以看到:MTU is 9014 (9000 is available to IP)

    RP/0/RP0/CPU0:ncs01#sh int tenGigE 0/0/0/12
    Mon Nov 25 16:19:27.790 UTC
    TenGigE0/0/0/12 is up, line protocol is up
      Interface state transitions: 9
      Hardware is TenGigE, address is b402.1615.a030 (bia b402.1615.a030)
      Internet address is ...
      MTU 9014 bytes, BW 10000000 Kbit (Max: 10000000 Kbit)
         reliability 235/255, txload 0/255, rxload 0/255
    ...
    RP/0/RP0/CPU0:ncs01#sh ipv4 int tenGigE 0/0/0/12
    Mon Nov 25 16:20:09.183 UTC
    TenGigE0/0/0/12 is Up, ipv4 protocol is Up
      Vrf is default (vrfid 0x60000000)
      Internet address is 94.247.86.237/31
      MTU is 9014 (9000 is available to IP)
    ...
    

    相关文章

      网友评论

          本文标题:2019-11-25 二层MTU和IP MTU

          本文链接:https://www.haomeiwen.com/subject/vhmswctx.html