`

关于VPN链路中的MTU传输问题

 
阅读更多

一、问题概述:
在我们的实际组网中经常遇到此类问题:
1)        某些网站浏览没有问题,而某些网站浏览非常慢甚至无法浏览。QQ等正常没有任何问题。
2)        无法下载大的文件。
3)        EMAIL无法发大附件。
二、问题分析:
一般所来是由于路径MTU不匹配的缘故,特别是在经过了VPN链路的时候,譬如ADSL PPPOE拨号,L2TP,PPTP,IPSEC,GRE隧道等情况。下面就以GRE隧道为例来说明MTU的问题,其他隧道协议类似只是头部字节不同而已。
拓扑结构:


VPN网关1和2之间建立了一条GRE隧道,VPN1 VPN2的外网口均为以太网口,MTU为1500。PC与SERVER通过该GRE隧道互访。
分析过程:
        PC在ping –f –l 1448 SERVER 的时候可以ping 通,而ping –f –l 1449 SERVER的时候却收到报文不可分片错误。
        PC出来的IP报文长度为1448+8(ICMP)+20(IP),到达VPN网关1,VPN网关1发到GRE隧道口,封装GRE头(4),再加上 外层IP头,到达VPN网关外层以太口,这时IP报文的长度已经变为:1448+8+20+4+20=1500字节,刚好等于以太口的MTU,于是被顺利 传送。而ping 1449时,到达外层以太口为1501字节,超出了1500的MTU,又因为报文DF位被设置,于是就只能丢弃改报文,并返回DF错误。
上述实验中出现此结果是因为DF被置位,导致无法分片。但是如果DF没有置位则可以正常的通过但是会出现分片的现象。不过现在很多服务器譬如WEB为了提 高效率以及安全问题等所发出的包是不允许分片的。并且大多防火墙、IPS等设备,这些设备通常也是不允许分片通过的。因此就出现了有些网站无法浏览,大文 件无法传输的情况。

解决方法:

假设PC建立了到SERVER的HTTP连接,PC希望从SERVER下载一个大的网页。SERVER接收到PC的请求后开始发送大网页文件,其IP的 DF位置1,不允许分片,IP报文长度为1500字节。到达VPN网关2的外网口(以太)后,VPN网关2发现其长度超过了1500个字节,于是将其丢 弃,并给SERVER发回一个目的地址不可达的ICMP信息,同时指出“MTU of next hop: 1500”。PC接收到该消息后,又按照1500字节对外发送,又被丢弃,于是就形成了循环,无法通讯。
根据上述的分析,很容易得到如下解决方式,在VPN网关2的出接口设置MTU为1500-4-20=1476,这样VPN网关2返回ICMP不可达消息时 将给出”MTU of next hop: 1476”。SERVER将以1476作为自己的最大MTU对外发送,到达VPN网关1,封装GRE和外层IP头后就不会超过1500而顺利发到对端。这 个是下载问题的解决,如果要解决上传的问题,在相应方向的接口修改MTU即可。当然也可以修改TCPMSS,不过这个是影响到TCP的windows从而 减小了包的长度。另外修改操作系统的最大MTU值也是可行的,不过比较麻烦。

分享到:
评论

相关推荐

    于ROS中mss,mtu的问题

    ### 关于ROS中MSS与MTU的问题 在探讨ROS(RouterOS)系统中的MSS(Maximum Segment Size)与MTU(Maximum Transmission Unit)时,我们首先需要理解这两个概念的基本含义及其相互之间的关系。 #### MTU (Maximum ...

    检测组播最大传输单元(MTU)的工具

    在IP网络中,包括组播在内的任何数据传输都受到MTU的限制,因为超过MTU的数据包会被分片,这可能会导致网络效率降低,甚至在某些情况下引起通信问题。了解并正确设置MTU对于优化网络性能,特别是进行大量数据传输...

    MTU:网络传输单元的基石及其在网络中的作用

    MTU是网络通信中一个重要的参数,它决定了在不进行分片的情况下可以通过网络的最大数据包大小。...随着对MTU的进一步了解和实践,可以更有效地解决网络中的数据传输问题,提高网络的性能和稳定性。

    ipv6 路径mtu简介.pdf

    如果数据包在传输过程中遇到MTU较小的链路,中间路由器会检测到数据包过大,并返回一个ICMPv6消息,告知源节点实际的MTU值。 3. **调整数据包大小**:收到ICMPv6消息后,源节点会根据反馈的MTU值调整后续发送的...

    mtu.rar_Mtu_linux mtu

    描述中提到的"一个很小的脚本,可以批量修改MTU的大小",意味着这个脚本可能是为了解决以下情况设计的:在多台服务器或设备之间进行大流量传输时,需要统一调整网络接口的MTU值以优化传输效率,避免数据包分片问题。...

    MTU 和mss的学习总结

    当网络中存在不同MTU大小的链路时,路径MTU发现(Path MTU Discovery,PMTUD)机制可以帮助确定最小的MTU,以避免数据包在传输过程中被分片。PMTUD依赖于ICMP的"目的地不可达"消息,当路由器发现无法转发大于其MTU的...

    mtu测试工具及源码

    当使用到udp传输数据时,出现丢包或绝大部分包都丢失,可能时网络链路上的mtu小于udp的数据负载长度,默认的mtu大小是(1472 = 1500-ip包头-udp包头)但有些服务器或路由器有些高级功能 mtu值小于1472.而且随路由...

    Path MTU RFC中文

    在 Path MTU 发现过程中,节点可以通过终止发送大于 IPv6 最小链路 MTU 的数据包来结束路径 MTU 发现过程。路径 MTU 发现协议可以支持组播和单播,不是所有的 IPv6 节点都要求要知行路径 MTU 发现协议。 路径 MTU ...

    MTU与MMS详细

    在实际网络环境中,由于各种链路层协议(如PPP、PPPoE等)和不同网络设备的MTU可能不同,所以了解和正确设置MTU和MSS对于优化网络性能和解决网络连接问题至关重要。例如,当使用PPP连接时,MTU会进一步减小,因为PPP...

    安卓手机MTU修改方法

    MTU,即最大传输单元(Maximum Transmission Unit),指的是在一个网络层协议的数据包中,能够被传输的最大数据块大小。这个值对于网络性能的影响非常大,因为它直接影响到数据在网络中的传输效率。如果MTU设置不当,...

    MTU修改工具,wiondows下使用

    它定义了数据帧在网络中传输的最大尺寸,包括帧头和帧尾。如果一个数据包超过了网络链路层的MTU限制,它会被分片为多个较小的数据包进行传输,这可能会导致网络延迟增加,尤其是在高带宽低延迟的应用场景下。 在...

    MTU、TCP、UDP优化配置的一些总结.docx

    本文总结了 MTU、TCP、UDP 在网络编程中的优化配置知识点,从链路层到应用层,详细介绍了数据帧、IP 包、TCP/UDP 包和数据的关系,并分析了 MTU 的限制对应用层的影响。 一、链路层和 MTU * 以太网(Ethernet)的...

    win7修改mtu

    - 在已经以管理员身份打开的命令提示符窗口中输入以下命令来修改指定接口的MTU值(本例中修改MTU值为2000): ``` netsh interface ipv4 set subinterface "接口名称" mtu=2000 store=persistent ``` - 替换`...

    改mtu值

    在探讨“改mtu值”的话题时,我们首先需要了解MTU(Maximum Transmission Unit,最大传输单元)的基本概念以及其在网络通信中的作用。MTU定义了在特定网络接口上能够发送的最大数据包大小(不包括帧头部)。调整MTU...

    思科MTU设置软件

    MTU,即最大传输单元,是指网络协议数据单元(如IP数据报或以太网帧)在传输过程中可以携带的最大数据量。这个值不包括网络协议头的大小。不同的网络技术有不同的MTU限制,例如以太网的默认MTU通常为1500字节。MTU的...

    对mtu详细解说请评分

    MTU,全称为Maximum Transmission Unit,中文名为最大传输单元,是网络通信中一个重要的概念,尤其是在数据链路层。在TCP/IP协议栈中,MTU定义了网络接口所能传输的最大数据包大小,不包括帧头和帧尾。理解并正确...

    如何设置MTU值

    MTU(Maximum Transmission Unit)最大传输单元,是网络层及其以下各层协议能够传输的数据报的最大长度。设置正确的MTU值对于提高网络传输效率至关重要。下面将详细介绍如何根据不同的网络环境来确定并设置合适的MTU...

    自动设置网卡MTU

    过大的MTU可能导致数据包传输问题,而过小的MTU可能会降低网络效率。因此,在实际操作前,应了解具体网络环境,进行适当测试,以找到最合适的MTU值。 总之,通过批处理文件自动设置网卡的MTU值是一种实用的方法,它...

    MTU值抓包详细分析举例说明

    在TCP/IP协议栈中,不同层次的协议都有自己的最大传输单元限制,但通常我们所说的MTU是指网络层的IP数据报的最大尺寸。标准以太网的MTU通常是1500字节,但这并不是绝对的,具体数值可能会因网络设备和配置而异。 **...

Global site tag (gtag.js) - Google Analytics