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

发布人:红松小e 发布时间:2019-11-25 14:09:33
今天为大家分析一下华为认证HCIE面试中的一些问题,希望能够帮助到各位华为认证备考学员。




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

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

华为认证HCIE面试

 

拓扑稳定后,在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信息:
 

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转发表项(数据平面):
 

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 标签转发信息联系起来的。

 

华为认证HCIE面试


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

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 ?
 

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绑定的。

 

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
 

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数据转发黑洞。

以上就是华为认证面试MPLS L3VPN公网路由汇总问题的分析,如有你想要报名华为认证考试,可以选择红松教育VUE授权考试中心进行笔试考试。有相关问题可以随时咨询哦!

华为认证

红松教育