美文网首页
Linux和Windows网卡MTU的修改

Linux和Windows网卡MTU的修改

作者: 潘猛_9f76 | 来源:发表于2020-10-21 16:19 被阅读0次

    实验结果

    • MTU参数只作用于发包,不作用于收包。
    • 收包规格取决于网卡
    • 发包规格取决于MTU参数

    实验拓扑

    WINDOWS 10:"VMware Network Adapter VMnet8"[mtu 1500]---[mtu 1500]"ens33":Linux
    

    Windows10网卡配置

    netsh  interface  ipv4 show subinterfaces "VMware Network Adapter VMnet8"
    
       MTU  MediaSenseState   传入字节  传出字节      接口
    ------  ---------------  ---------  ---------  -------------
      1500                1       4461      67219  VMware Network Adapter VMnet8
    

    linux网卡配置

    # ip a
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:e7:54:74 brd ff:ff:ff:ff:ff:ff
        inet 192.168.232.110/24 brd 192.168.232.255 
    

    修改linux的ens33 mtu为1600

    # nmcli  con modify ens33 802-3-ethernet.mtu 1600
    # nmcli con up ens33
    

    在linux上测试,发现1572字节icmp报文可以ping通

    # ping -c 1 -s 1572 192.168.232.2
    PING 192.168.232.2 (192.168.232.2) 1572(1600) bytes of data.
    1580 bytes from 192.168.232.2: icmp_seq=1 ttl=128 time=0.326 ms
    
    --- 192.168.232.2 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.326/0.326/0.326/0.000 ms
    

    经过抓包发现,发送的报文确实是1580字节的包,收到的reply是两个包,说明windows在replay的时候,因为mtu是1500,所以发生了IP分片,发送了两个报文。

    # tcpdump -i ens33 icmp
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
    02:21:11.240517 IP backend > _gateway: ICMP echo request, id 14608, seq 1, length 1580
    02:21:11.240812 IP _gateway > backend: icmp
    02:21:11.240819 IP _gateway > backend: ICMP echo reply, id 14608, seq 1, length 1480
    

    windows发送报文MTU参数不受限制,虽然IP头的长度规格是65535,但是以太网并不一定是承载ip,以太帧头中也没有长度的定义,所以可以修改mtu到10万

    netsh  interface  ipv4 set   subinterface  "VMware Network Adapter VMnet8"  mtu=1000000
    确定。
    netsh  interface  ipv4 show   subinterface  "VMware Network Adapter VMnet8"
    
       MTU  MediaSenseState   传入字节  传出字节      接口
    ------  ---------------  ---------  ---------  -------------
    1000000                1     239347     365732  VMware Network Adapter VMnet8
    

    由于ip的限制,最大ping报文长度为65500,测试windows可以发送65500大的ping包,但是由于受网卡规格的限制,无法ping通

    ping -f -l 65500 192.168.232.110
    正在 Ping 192.168.232.110 具有 65500 字节的数据:
    请求超时。
    

    linux 只可以修改mtu到16110,更大的值不会报错,但是不会生效(会变回1500)

    # nmcli  con modify ens33 802-3-ethernet.mtu 16110
    # nmcli con up ens33
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/41)
    # ip link
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 16110 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:0c:29:e7:54:74 brd ff:ff:ff:ff:ff:ff
    

    使用ping可以测得两个网卡可以支持的最大接收mtu规格为9170

    ping -n 1 -f -l 9170 192.168.232.110
    
    正在 Ping 192.168.232.110 具有 9170 字节的数据:
    来自 192.168.232.110 的回复: 字节=9170 时间<1ms TTL=64
    
    192.168.232.110 的 Ping 统计信息:
        数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
        最短 = 0ms,最长 = 0ms,平均 = 0ms
    
    ping -n 1 -f -l 9171 192.168.232.110
    
    正在 Ping 192.168.232.110 具有 9171 字节的数据:
    请求超时。
    
    192.168.232.110 的 Ping 统计信息:
        数据包: 已发送 = 1,已接收 = 0,丢失 = 1 (100% 丢失),
    

    相关文章

      网友评论

          本文标题:Linux和Windows网卡MTU的修改

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