一、故障现象描述
RSR20路由器上VPNV4路由表收到了路由,但是没有导入vrf路由表中,如下图收到了10.70.X.0/27的路由。但是show ip route vrf XXX发现没有加表。

场景拓扑

二、故障排查分析
-
检查RT值是否匹配。如果VPNV4路由所携带的RT值与vrf的import RT不匹配将导致无法加入对应的vrf表。通过show bgp vpnv4 unicastt all 10.70.X.0发现该VPNV4路由所携带的RT 64800:901与vrf的import RT匹配,理论上应当是可以加入vrf vpn-nrt表的。


-
检查是否vrf路由条目超过限制。如果vrf路由条目超限,将导致vrf路由表无法继续学习到更多路由。通过show run | be r bgp,发现对应的vrf配置的限制前缀为10000,对比show ip route vrf xxx summary的路由实际数量没有超限:


-
检查到VPN下一跳地址的LSP是否正常。通过show bgp vpnv4 unicast all x.x.x.x 查看问题路由的明细信息,发现该路由在公网表项中优选(即在show bgp vpnv4 unicast all中>号),说明VPNV4路由的下一跳地址10.231.X.245可达(即:路由表有10.231.X.245的IGP路由),故怀疑是到10.231.X.245的LSP隧道不通。通过命令show mpls forwarding-table查看10.231.X.245发现只有ilm表项(PI弹出标签执行IP路由查找),没有ftn表项压入PH标签,故确定由于缺少FTN表项,导致去往vpnv4路由下一跳10.231.X.245的LSP异常。


-
检查没有FTN表项的原因。10.231.X.245/32 没有FTN表项。show ip route 10.231.X.245查看去往该VPNV4下一跳的路由,发现下一跳是10.231.X.46,出接口Serial0/1/1:0,也就是和10.231.X.241的RR互联的接口。怀疑与该RR建立的LDP有异常。走哪个上游设备也可以通过show bgp vpnv4 uni all [业务路由]的输出中from后面的地址来判断。

-
检查LDP邻居信息。发现缺失没有到10.231.X.241 的Ldp邻居(show mpls ldp neighbor),如果没有邻居是不会下发ftn的。


-
检查没有LDP邻居的原因。客户重新配置了LDP密码,发现重新和10.231.X.241的LDP邻居建立成功,确认是LDP密码错误导致LDP邻居建立失败。
三、故障根因说明
由于去往VPNV4下一跳地址方向的LDP邻居没有建立(密码不对导致),导致无法收到对应LDP邻居为该下一跳地址分配的VPNV4标签,故LSP建立失败,不加入vrf表。
四、故障解决方案
通过修复ldp密码,恢复和10.231.X.241的LDP邻居建立后问题解决。
知识点补充
NHLFE (Next Hop Label Forwarding Entry,下一跳标签转发表项):NHLFE表用于存储转发MPLS报文的下一跳信息,通常包含数据报文的下一跳、转发数据报文使用的链路层封装、转发数据报文标签栈使用的编码方式和对数据报文标签栈的操作。
FTN (FEC-To-NHLFE):FTN负责将每个FEC映射到一系列的NHLFE(多个NHLFE表明其是多径)。FTN表主要用在LER收到未带标签数据报文的转发情况。LER收到一个未带标签的IP数据包后,会根据FTN表,按照最长匹配原则匹配IP数据包的目的地址。如果查找到下一跳,则对IP数据包执行标签封装后进行转发。
ILM (Incoming Label Map,入标签映射):ILM负责将每个入标签映射到一系列的NHLFE(多个NHLFE表明其是多径)。ILM表主要用在当LSR收到带标签MPLS报文的转发情况。