美文网首页网络
【PMTU】TCP的MTU探测

【PMTU】TCP的MTU探测

作者: Bogon | 来源:发表于2022-09-18 00:15 被阅读0次

    Linux内核默认情况下未开启TCP的MTU探测功能。

    #  cat /proc/sys/net/ipv4/tcp_mtu_probing
    0
    

    想要启用tcp mtu probe, 先要设置ip_no_pmtu_disc=0(默认值), 表示启用pmtu discovery, 这样tcp发送的时候才会设置DF标记。

    通过DF标记,中间路由设备如果需要分片就会返回ICMP消息通知, 但是有可能因为防火墙等原因,发送方收不到ICMP消息,因此发送方一直发送探测包,却一直没收到回应, 这个就称为black hole。

    系统默认tcp_mtu_probe=1, 表示默认禁用mtu,只有当检测到black hole的时候,才会开启tcp mtu probe。

    # ping -s 2500  -M do  8.8.8.8 
    PING 8.8.8.8 (8.8.8.8) 2500(2528) bytes of data.
    ping: local error: Message too long, mtu=1500
    ping: local error: Message too long, mtu=1500
    ping: local error: Message too long, mtu=1500
    ping: local error: Message too long, mtu=1500
    ping: local error: Message too long, mtu=1500
    ping: local error: Message too long, mtu=1500
    ping: local error: Message too long, mtu=1500
    ping: local error: Message too long, mtu=1500
    ping: local error: Message too long, mtu=1500
    ping: local error: Message too long, mtu=1500
    ^C
    --- 8.8.8.8 ping statistics ---
    10 packets transmitted, 0 received, +10 errors, 100% packet loss, time 9213ms
    

    在 TCP 三次握手期间交换的 TCP 数据段不会太大,因而不会被 PMTU 黑洞路由器丢弃。但是,一旦开始在连接上传输数据—假定基于协商的 MSS 确定的 PMTU 比实际 PMTU 大—TCP 数据段的大于实际 PMTU 的 IP 包就会被直接丢弃。

    如果有 IP MTU 更小的中间链路,且路由器发送了“ICMP Destination Unreachable-Fragmentation Needed and DF Set”消息,则 Ping 工具会显示“Packet needs to be fragmented but DF set”消息。如果有 IP MTU 更小的中间链路,且 PMTU 黑洞路由器直接丢弃了包,则 Ping 工具会显示“Request timed out”消息。

    要找出包含 PMTU 黑洞路由器的路径的有效 IP MTU,请使用 Ping 工具,同时不断增大 Echo 消息的有效负载的大小。因为典型子网的最小 IP MTU 是 576 字节,因此开始时可将 ICMP Echo 消息的有效负载设置为 548 字节,然后每次递增 100 字节,直到找到有效 PMTU。

    参考

    什么是MTU(Maximum Transmission Unit)?
    https://info.support.huawei.com/info-finder/encyclopedia/zh/MTU.html

    既然IP层会分片,为什么TCP层也还要分段?
    https://blog.csdn.net/maimang1001/article/details/123369897

    TCP path MTU discovery
    https://www.ibm.com/docs/en/aix/7.2?topic=tuning-tcp-path-mtu-discovery

    路径最大传输单元 (PMTU) 黑洞路由器
    https://www.cnblogs.com/cunshen/articles/162441.html

    通过案例来学习TCP的MSS、MTU
    https://cloud.tencent.com/developer/article/1032223?from=article.detail.1411873

    看招MTU!!!——高端路由器GRE组网中需要注意的问题
    http://www.h3c.com/cn/d_201411/921527_30005_0.htm

    相关文章

      网友评论

        本文标题:【PMTU】TCP的MTU探测

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