HCIE面试中有关MPLS L3VPN公网路由汇总问题的简单分析

[复制链接]
发表于 : 2018-2-5 15:27:03 最新回复:2018-02-06 22:52:58
656 8
忧郁的红雨伞  专家  

大家好:
    总感觉大家在分析有关MPLS网络中进行路由汇总后导致LSP断裂问题时,比较缺乏逻辑和条例,并没有说到该问题的关键,现借宝地一用做一个简单分析,希望能够帮助大家捋清答题思路。

    简单示例拓扑如下,MPLS域中的使用OSPF协议作为IGP,宣告直连网段与各路由器的loopback 0  /32位主机地址:


拓扑稳定后,在PE1上查看PE2通过MPBGP通告的CE2所连接的site2路由:

[PE1]display bgp vpnv4 all routing-table 55.5.5.0 24


 BGP local router ID : 2.2.2.2
 Local AS number : 100

 Total routes of Route Distinguisher(100:11): 1
 BGP routing table entry information of 55.5.5.0/24:
 Label information (Received/Applied): 1026/NULL
 From: 3.3.3.3 (3.3.3.3)
 Route Duration: 00h44m43s  
 Relay IP Nexthop: 12.1.1.1
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Relay Tunnel Out-Interface: GigabitEthernet0/0/0
 Relay token: 0x9
 Original nexthop: 3.3.3.3
 Qos information : 0x0
 Ext-Community:RT <100 : 10>
 AS-path Nil, origin incomplete, MED 0, localpref 100, pref-val 0, valid, intern
al, best, select, pre 255, IGP cost 2
     重点关注标红色的部分,VPNV4路由在进行路由优选的时候出了常规的BGP属性判断以外,还要查看是否有到达BGP邻居原始下一跳的公网隧道LSP和对应的出接口。


在PE1上查看与3.3.3.3/32前缀相关的 FEC信息:

<PE1>display mpls lsp  verbose  
  No                  :  5
  VrfIndex            :        
  Fec                 :  3.3.3.3/32
  Nexthop             :  12.1.1.1
  In-Label            :  NULL
  Out-Label           :  1027
  In-Interface        :  ----------
  Out-Interface       :  GigabitEthernet0/0/0
  LspIndex            :  6147
  Token               :  0x9
  FrrToken            :  0x0
  LsrType             :  Ingress
  Outgoing token      :  0x0
  Label Operation     :  PUSH
  Mpls-Mtu            :  1500
  TimeStamp           :  8226sec
  Bfd-State           :  ---
  BGPKey              :  ------
     重点关注标红色的部分,与3.3.3.3/32关联的FEC,Token 为0x9,动作为压入标签,标签值为1027,出接口为g0/0/0. Token值与上面VPNV4路由的BGP销一跳一致。
    

 在PE1上查看与3.3.3.3 32 前缀相关联的FIB转发表项(数据平面):
 
 <PE1>display fib 3.3.3.3 32 verbose 
  Route Entry Count: 1
 Destination: 3.3.3.3             Mask     : 255.255.255.255     
 Nexthop    : 12.1.1.1            OutIf    : GigabitEthernet0/0/0
 LocalAddr  : 12.1.1.2            LocalMask: 0.0.0.0             
 Flags      : DGHU                Age      : 3152sec             
 ATIndex    : 0                     Slot     : 0                   
 LspFwdFlag : 1                   LspToken : 0x3                 
 InLabel    : NULL                OriginAs : 0                   
 BGPNextHop : 0.0.0.0             PeerAs   : 0                   
 QosInfo    : 0x0                 OriginQos: 0x0                 
 NexthopBak : 0.0.0.0             OutIfBak : [No Intf]           
 LspTokenBak: 0x0                 InLabelBak : NULL                
 LspToken_ForInLabelBak : 0x0                 
 EntryRefCount : 0                   
 VlanId : 0x0                 
 BgpKey : 0                   
 BgpKeyBak : 0                   
 LspType         : 3              Label_ForLspTokenBak   : 0
 MplsMtu         : 1500           Gateway_ForLspTokenBak : 0.0.0.0             
 NextToken       : 0x0            IfIndex_ForLspTokenBak : 0
 Label_NextToken : NULL           Label : 1027
 LspBfdState     : 9    

   FIB表中与3.3.3.3/32前缀关联的表项下一跳地址、LSPTokenID、出接口与LDP LSP 、VPNV4路由是对应的,也就意味着PE1在将VPN互通的数据发送给PE2时,需要压入值为1027的标签,发送给P,该标签是P通过LDP分发给PE1的。

  下图可以帮助大家理解路由器在进行MPLS转发时是如何将IP转发信息与MPLS 标签转发信息联系起来的。
   

另外,也可以使用ping lsp 、tracert lsp 工具检测LSP的联通性,例如:

<PE1>tracert lsp -a 2.2.2.2 ip 3.3.3.3 32
  LSP Trace Route FEC: IPV4 PREFIX 3.3.3.3/32 , press CTRL_C to break.
  TTL   Replier            Time    Type      Downstream 
  0                                Ingress   12.1.1.1/[1027 ]
  1     12.1.1.1           30 ms   Transit   13.1.1.3/[3 ]
  2     3.3.3.3            30 ms   Egress       


   下面通过一个示例认为制造一个公网LSP断裂的故障,方法是在P路由器上配置一个LDP通告过滤规则,不向PE1路由器通告3.3.3.3/32前缀的FEC绑定信息。

[P]display ip ip-prefix
Prefix-list 10
Permitted 0
Denied 42
        index: 10               deny    3.3.3.3/32              
[P]mpls ldp
[P-mpls-ldp]dis this
[V200R003C00]
#
mpls ldp
 outbound peer 2.2.2.2 fec ip-prefix 10
#

  在P路由器的LDP中应用该过滤规则后,在PE1路由器上查看LSP,已无法看到与3.3.3.3/32 相关联的FEC信息,这时再看CE2的VPNV4路由已经不是best的了,查看其具体信息也没有与该VPNV4路由关联的公网LSP信息了。

 VPN-Instance vpn1, Router ID 2.2.2.2:

 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
    i  55.5.5.0/24        3.3.3.3         0          100        0      ?

<PE1>display bgp vpnv4 all routing-table 55.5.5.0


 BGP local router ID : 2.2.2.2
 Local AS number : 100

 Total routes of Route Distinguisher(100:11): 1
 BGP routing table entry information of 55.5.5.0/24:
 Label information (Received/Applied): 1027/NULL
 From: 3.3.3.3 (3.3.3.3)
 Route Duration: 02h51m56s  
 Relay IP Nexthop: 12.1.1.1
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Relay Tunnel Out-Interface: 
 Relay token: 0x0
 Original nexthop: 3.3.3.3

    可以看到华为的路由器在进行VPNV4路由优选的时候,会进行公网LSP迭代,如果不能迭代到相关的公网LSP该路由不能作为有效路由,这与一些其他厂商的实现有所不同。



  我们不妨类比一下该实例中我们使用了LDP标签分发过滤认为制造了LSP断裂,同样如果在LSP途径的某台路由器上对MPBGP的loopback 接口32位地址做了地址汇总,由于华为路由器默认仅对32位主机前缀分配标签,也就造成了在汇总点上游的所有路由器都没有相关的FEC,MPBGP无法递归到下一跳的公网LSP。 
  另外,华为路由器有个比较特殊的特性,如果IGP使用OSPF,无论loopback接口地址是多少位的掩码在发布LSA时都按照32位主机地址发布,这个行为也是在控制层面规避LSP有可能断裂的问题,也参考了其他友商实现的一些问题。一个小测试,在PE2路由器上配置一个掩码为24位的loopback 2接口地址,同时宣告到ospf进程中。

[PE2-LoopBack2]dis this
[V200R003C00]
#
interface LoopBack2
 ip address 22.2.2.2 255.255.255.0 
 ospf enable 10 area 0.0.0.1
#

  
[PE2]display ospf routing 

OSPF Process 10 with Router ID 3.3.3.3
  Routing Tables 

 Routing for Network 
 Destination        Cost  Type       NextHop         AdvRouter       Area
 3.3.3.3/32         0     Stub       3.3.3.3         3.3.3.3         0.0.0.1
 13.1.1.0/24        1     Stub       13.1.1.3        3.3.3.3         0.0.0.1
 22.2.2.2/32        0     Stub       22.2.2.2        3.3.3.3         0.0.0.1


[PE2]display mpls lsp  
-------------------------------------------------------------------------------
                 LSP Information: BGP  LSP
-------------------------------------------------------------------------------
FEC                In/Out Label  In/Out IF                      Vrf Name       
55.5.5.0/24        1027/NULL     -/-                            vpn1           
-------------------------------------------------------------------------------
                 LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC                In/Out Label  In/Out IF                      Vrf Name       
1.1.1.1/32         NULL/3        -/GE0/0/0                                     
1.1.1.1/32         1028/3        -/GE0/0/0                                     
2.2.2.2/32         NULL/1026     -/GE0/0/0                                     
2.2.2.2/32         1029/1026     -/GE0/0/0                                     
3.3.3.3/32         3/NULL        -/-                                           
22.2.2.2/32        3/NULL        -/- 

 在PE2的OSPF路由表和MPLS表中该24位前缀都是按照/32的主机地址宣告路由与FEC绑定的。



<PE1>display mpls lsp
-------------------------------------------------------------------------------
                 LSP Information: BGP  LSP
-------------------------------------------------------------------------------
FEC                In/Out Label  In/Out IF                      Vrf Name       
44.4.4.0/24        1027/NULL     -/-                            vpn1           
-------------------------------------------------------------------------------
                 LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC                In/Out Label  In/Out IF                      Vrf Name       
2.2.2.2/32         3/NULL        -/-                                           
1.1.1.1/32         NULL/3        -/GE0/0/0                                     
1.1.1.1/32         1032/3        -/GE0/0/0                                     
3.3.3.3/32         NULL/1027     -/GE0/0/0                                     
3.3.3.3/32         1033/1027     -/GE0/0/0                                     
22.2.2.2/32        NULL/1028     -/GE0/0/0                                     
22.2.2.2/32        1034/1028     -/GE0/0/0           
                          
<PE1>display ip routing-table 22.2.2.2
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       22.2.2.2/32  OSPF    10   2           D   12.1.1.1        GigabitEthernet
0/0/0

这时再PE1上关于22.2.2.2的路由协议与LSP信息也都是按照/32主机前缀存储的,LSP是正常的。
     


最后,说一下公网标签迭代与标签分发控制方式的关系:
  1.华为路由器默认的分发控制方式为有序,即当收到下游为某个FEC的标签绑定消息后才会为该FEC分配本地标签并通告给上游;
   2.如果将P路由器的控制方式改为独立后(需要注意的是eNSP不支持修改LDP的标签控制方式,有条件的同学可以在AR路由器上进行测试),即使没有收到PE1的标签绑定通告P仍然会为3.3.3.3/32前缀FEC分配1027的本地标签,并通告给PE2;
   3.这时再PE1路由器上到达55.5.5.0/24的VPNV4路由可以迭代到下一跳BGP邻居公网LSP,路由是有效的;

 From: 3.3.3.3 (3.3.3.3)

 Route Duration: 00h52m59s 

 Relay IP Nexthop: 12.1.1.2

 Relay IP Out-Interface: Serial1/0/0

 Relay Tunnel Out-Interface: Serial1/0/0

 Relay token: 0x7

 Original nexthop: 3.3.3.3

 Qos information : 0x0

 Ext-Community:RT <10 : 10>

 AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, pre 255, IGP cost 3124

 

  4.但是,两个CE的业务网段是无法通信的,产生了转发黑洞问题,该问题的原因是P路由器上无法进行公网标签的SWAP操作,出标签为空,将执行弹出动作,造成私网标签泄露。

 

  No                  :  4

  VrfIndex            :       

  Fec                 :  3.3.3.3/32

  Nexthop             :  23.1.1.3

  In-Label            :  1027

  Out-Label           :  NULL

  In-Interface        :  ----------

  Out-Interface       :  ----------

  LspIndex            :  14339

  Token               :  0x0

  FrrToken            :  0x0

  LsrType             :  Egress

  Outgoing token      :  0x0

  Label Operation     :  POP


    结论:在华为路由器上VPNV4路由的公网标签迭代与LSR的有序标签分发保持方式结合避免造成VPN数据转发黑洞。

 




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
  • x
  • 常规:

点评 回复

壹粥壹菜壹世界
跳转到指定楼层
李宗易  版主   发表于 2018-2-5 16:07:54 已赞(0) 赞(0)

干货,感谢分享,
  • x
  • 常规:

点评 回复

miracleg520     发表于 2018-2-5 16:08:50 已赞(0) 赞(0)

精品
  • x
  • 常规:

点评 回复

社区管理员咕噜噜  管理员   发表于 2018-2-5 17:02:40 已赞(0) 赞(0)

好分享,帮助大家清晰答题思路
  • x
  • 常规:

点评 回复

zangxuetao123  新锐   发表于 2018-2-6 17:10:14 已赞(0) 赞(0)

伞哥,你到底是何方神圣
  • x
  • 常规:

点评 回复

社区管理员咕噜噜 回复 龙镍  发表于 2018-2-6 17:48
开始对楼主好奇啦 
zangxuetao123 回复 社区管理员咕噜噜  发表于 2018-2-9 10:30
加好友,加好友,QQ 微信都可以 
社区管理员咕噜噜 回复 zangxuetao123  发表于 2018-2-9 10:35
已添加,请通过,也添加楼主哦 
hxft     发表于 2018-2-6 22:52:58 已赞(0) 赞(0)

感谢分享!
  • x
  • 常规:

点评 回复

发表回复
您需要登录后才可以回帖 登录 | 注册

如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!
快速回复 返回顶部