查看完整版本: 由OSPF 32位主机路由引起的MPLS标签分发问题

IT傻博士 2008-5-7 15:54

由OSPF 32位主机路由引起的MPLS标签分发问题

本文档由ITAA学习情报小组原创,大家看着好就请把此帖顶起来




















本实验服务商网络R1/R2/R3/R4均匀行OSPF,环回口地址为x.x.x.x/32,如果不慎配置为x.x.x.x/24,则OSPF仍会以/32形式通告环回口网络,因此引发的标签分发问题如下:




1、路由器收不到自身FIB表的下游标签





以R4为例,标签表LIB:


R4#show mpls ip binding
  1.1.1.0/24    收到/24位的路由标签,该标签来自R1(R1自身按照直连接口安装路由)
        out label:    imp-null  lsr: 1.1.1.1:0      
  1.1.1.1/32  收到/32位路由的标签,因为R2/R3FIB表均为/32位路由
        in label:     16        
        out label:    19        lsr: 3.3.3.3:0      
        out label:    19        lsr: 2.2.2.2:0      





!这里R1自然不会通告1.1.1.1/32的标签。




  4.4.4.0/24
        in label:     imp-null  
  4.4.4.4/32 (no route) 在R4上并没有自身的/32位路由
        in label:     imp-null  
        out label:    20        lsr: 3.3.3.3:0      
        out label:    20        lsr: 2.2.2.2:0      
        out label:    22        lsr: 1.1.1.1:0      


(后面省略)














R4的FIB表:





R4#show ip route ospf
     1.0.0.0/32 is subnetted, 1 subnets
O       1.1.1.1 [110/11] via 14.1.1.1, 00:03:57, Ethernet0/0.14
     2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/11] via 24.1.1.2, 00:03:57, Ethernet0/0.24
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/11] via 34.1.1.3, 00:03:57, Ethernet0/0.34
     23.0.0.0/24 is subnetted, 1 subnets
O       23.1.1.0 [110/20] via 24.1.1.2, 00:03:57, Ethernet0/0.24
                 [110/20] via 34.1.1.3, 00:03:57, Ethernet0/0.34





结合FIB+LIB表,形成的LFIB表如下:





R4#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop   
tag    tag or VC   or Tunnel Id      switched   interface              
16     Untagged    1.1.1.1/32        0          Et0/0.14   14.1.1.1     
17     Untagged    2.2.2.2/32        0          Et0/0.24   24.1.1.2     
18     Untagged    3.3.3.3/32        0          Et0/0.34   34.1.1.3     
19     Pop tag     23.1.1.0/24       0          Et0/0.24   24.1.1.2     
       Pop tag     23.1.1.0/24       0          Et0/0.34   34.1.1.3   








R4并没有收到1.1.1.1/32,2.2.2.2/32,3.3.3.3/32的下游标签,因此形成的LFIB表,对于这几个条目,均表示为Untagged ,这代表收到对应数据包之后,要将MPLS外层标签剥掉。这个剥掉和PHP不同,PHP剥掉标签之后,往最后1跳转,在标签转发表里显示为Pop tag,而Untagged则会进一步读该数据报。





2、MPLS外层剥掉之后,读到内层VPN标签,对于中间P路由器来说,是无法正确识别的,因此丢包。从客户站点R5 ping R6,在P路由器可见:





R4#debug mpls drops
MPLS drops debugging is on
*Apr 26 16:51:48.135: tagsw_replace_header: Pkt drop -- EoS conflict, incg label 17 hwinput Et0/0





解决办法:A、将接口IP子网掩码设置为/32


      或者:B、在环回口下配置ip ospf network point-to-point








该问题具备很强的隐蔽性,特别在路由较多的时候,不易直接发现。因此不要认为消除主机路由是可有可无的,也不要认为将环回口全部配置为/32位子网掩码,仅仅是为了节省一点点地址空间这么简单,在实际的应用中,类似的问题会层出不穷,训练严谨的配置习惯,少用省略法。

[[i] 本帖最后由 IT傻博士 于 2008-5-7 16:02 编辑 [/i]]
页: [1]
查看完整版本: 由OSPF 32位主机路由引起的MPLS标签分发问题