因MTU问题导致MPLS VPN业务不通

发布时间:  2012-07-26 浏览次数:  213 下载次数:  7
问题描述
 组网图见附件文档。
 
 VPN用户不能访问Web服务器A,但是可以正常访问Web服务器B。
PC机与服务器A、服务器B都属于同一个VPN,服务器A、服务器B在不同的PE下。
      
告警信息

处理过程
1、检查MPLS VPN业务是否正常。
         a、在PE上检查M-BGP连接已经处于Established状态。
         b、RT配置正确无误。
         c、检查两端PE均已学习到对端PE传播的私网路由信息。
         d、检查标签分配均已打上正确的公私网标签。
                  
2、检查Web服务器A。
        a、 Web服务器工作正常。
3、MTU故障排查。
       a、抓包发现Web服务器发出IP层包长1496,且为不可分片报文。
             当数据包在进入MPLS网络后为1496+8(MPLS*2)=1504。
       b、将防火墙禁止ICMP报文配置去掉,在PC侧Ping -f  -l 1464 的
             包能通,但ping -f -l 1465就不能通,
             这说明当前PathMtu的值应为1464+8(MPLS*2)+8(ICMP)+20(IP) =1500。
       c、 检查网络设备发现C12012上标签交换MTU值为1500导致1504
              的包不能通过。 
      
      
根因
1、NE80-A与NE80-B之间MPLS VPN业务是否存在故障?
         a、M-BGP没有建立连接。
         b、RT的配置不正确。
         c、私网路由信息传播错误。
         d、LDP没有正确分配公网标签。
         e、M-BGP分配私网标签错误。
2、Web服务器A是否存在故障?
        a、 Web服务器的Http服务没有起来。
        b、与网络连接断开。
3、否存在MTU问题?
        如果Web服务器发送的数据报文过大,超过某台网络设备的
        mtu值,且DF位=1,会造成该报文不能通过。此时网络设备
        会反馈一个ICMP不可达报文,如果Web服务器收到该报文会
        自动减小发送数据报文的大小 (路径MTU发现机制) 。
      
      
建议与总结
本问题的产生原因有两点:
      1、 Web服务器发出的报文为不可分片报文,且Web服务器侧发送
            的报文大小加上两层MPLS标签后,超过中间网络设备能通过的
            MTU值,导致报文被丢弃。
      2、防火墙禁止了ICMP报文,导致路径MTU发现机制失灵。
附注:
路径MTU发现的基本思想是:源主机最初假设到目的主机的路径MTU为源主机发送这个报文的第一跳接口的MTU,并把发送到主机的所有IP报文IP头中的DF(Don’t Fragment)Bit位设置为1。在这个转发路径中的某个路由器收到某个报文,要从某个出接口转发出去的时候发现该报文大于出接口的MTU,并且其DF位为1,该路由器将会丢弃本报文,并且返回一个ICMP目的地址不可达报文(type 3,code 4,fragment needed but don’t-fragment bit set)通知被丢弃报文的源主机,源主机收到这个ICMP报文后就减小假定的这条路径上的PMTU值。
      
      

END