故障一点通 >> 路由产品线 >> 03.IP路由协议 >> 3.4 BGP >> 3.4.2 BGP邻居关系正常,但无法学到路由 >> |
1、故障现象
部署BGP路由协议,邻居建立正常,但在路由表中无法看到路由表。
2、故障可能原因
1)协议支持地址族能力异常
2)没有学到BGP路由
3)学到BGP路由,但计算失败
3、故障排查步骤
步骤1、确认设备运行的BGP协议是否支持地址族
通过show ip bgp neighbor查看
BGP邻居可同时支持多个地址族能力,只有地址族能力协商成功后,才能学习该地址族对应的路由。协商结果如下:
1)advertised:本地设备有激活能力,邻居设备未激活,协商失败。
2)received: 本地设备未激活能力,邻居设备有激活,协商失败。
3)advertised and received:本地和邻居设备都激活能力,协商成功。
步骤2、若协议对地址族的支持正常,则确认是否有学到BGP路由
通过show ip bgp来查看BGP路由表中是否存在路由表
相关查看命令
show bgp ipv4 unicast
A.B.C.D
查看IPv4 Unicast路由,效果同show ip
bgp A.B.C.D
如果BGP路由存在,则确认是否路由计算失败,转入步骤3进行排查。
如果BGP路由不存在,则表示为从邻居学到BGP路由,需要对本端和对端设备进行排查
详细排查步骤如下:
本地设备:
1)打开debug开关
debug ip bgp update in 、debug
ip bgp warn(隐藏命令),打开调试开关。
2)clear ip bgp peer-ip soft
in 软重启BGP邻居,让邻居重新通告路由
3)确认信息
如果本地设备有接收到该路由,查看BGP debug开关打印出的路由过滤信息,格式如“Peer-IP-incoming/outgoing [RIB]
Update: Prefix A.B.C.D/32 denied due to Reason”,其中“Reason”为一个字符串,包含多种如下
A)“attr comon check fail”
表示报文解码时发现非法字段,路由被过滤。如果是这种错误,在这个打印的同时,会有其他信息进一步提示什么字段非法,如:
i)"%s-%s [DECODE] Attr
OrigID: OrigID(%r) same as Self, Ignoring UPDATE..." 路由Originate-id是本地设备,路由环路。
ii)"%s-%s [DECODE] Attr
Cluster: my cluster-id in the cluster-list"路由cluster-id包含本地设备,路由环路。
iii)"%s-%s [DECODE]
Update: Invalid Nexthop: %r" 路由下一跳为无效IP地址、或者路由下一跳为本地设备的某个接口IP。
B)“MPLS VPN/BGP implicit inbound
filter”
表示L3VPN或L2VPN路由的RT属性匹配失败,需要检查本地VRF或VFI的import
route-target配置是否正确。
C)“as-path contains our own AS”
表示AS-PATH环路。
D)“filter”
表示路由被入向策略过滤,需要检查邻居的入向过滤策略配置,包括filter-list、prefix-list和distribute-list。
E)“route-map”
表示路由被route-map in过滤,需要检查路由图配置。
F)“non-connected next-hop”
表示从EBGP直连邻居接收到的IPv4路由下一跳,不是直连接口,需要检查网络配置。
G) max prefix overflow”
表示从邻居接收到的路由,超过max限制导致溢出,需要检查邻居的配置和接收到的路由条目(show
ip bgp summary),确认是否溢出。
H)“address-family overflow”
表示地址族下路由表总容量异常,检查BGP地址族下的maximum-prefix配置。
如果本地确认没有接收到对端的路由更新,则到邻居设备进行排查
对端设备:
1)确认network语句是否正确,要求和IGP路由表的网络号和掩码必须严格一致。
2)先通过show命令查看路由状态,如show ip
bgp A.B.C.D
A)“(inaccessible)”:表示路由计算失败,确认是否路由下一跳计算失败。
B)“(suppressed due to dampening)”:表示本地设备开启了dampening功能,路由被震荡抑制,此时需要进一步检查网络是否一直在震荡。
C)检查路由团体属性,确认是否包含No_Export、Local_AS、NO_Advertise等抑制路由通告的属性。
3)查看是否有配置路由聚合,并且该路由聚合带有summary-only选项。
如果有,路由会被正常抑制通过,邻居设备想要学习路由需要撤销summary-only参数,或者在本地设备针对该邻居配置unsuppress-map。
也可以通过show ip bgp 进行查看,被聚合summary-only抑制的路由,最前面会有“s”标记。(这个show
命令只能在少量路由状态下使用)
4)如果上述两部确认路由没有被抑制,需要进一步调试路由被抑制通告出去的其他原因:
debug ip bgp update out
debug ip bgp filter
debug ip bgp warn(隐藏命令)
打开上述调试开关。
5)clear ip bgp peer-ip soft
out,软重启BGP邻居,向邻居重新通告路由
根据打印调试信息,确认路由未通告出去的原因,可能如下:
A)"%s-%s [RIB] Announce
Check: %O Originator-ID is same as Remote Router-ID"
路由Originate-ID与邻居设备相同,路由环路抑制。
B)"%s-%s [RIB] Announce
Check: %O site-of-origin is same as peer site"
路由SOO属性与邻居设备相同,路由环路抑制。
C)"%s-%s [RIB] Announce
Check: %O is denied by out filter"
路由被出向策略过滤,需要检查邻居配置,包括filter-list、prefix-list和distribute-list。
D)"%s-%s [RIB] Announce
Check: %O No announcement since AS %u is in AS Path"
AS-PATH检测出环路。
E)"%s-%s [RIB] Announce
Check: %O is denied by unsuppress-map"
已经处于suppress状态的路由,没有被邻居的unsuppress-map配置匹配成功。
F)"%s-%s [RIB] Announce
Check: %O is denied by out routemap"
路由被route-map out过滤,检查邻居路由图配置。
步骤3、确认BGP的路由状态,明确是否路由计算失败
通过show ip bgp来确认
例如:
“inaccessible”表示路由下一跳不可达,这样的BGP路由无法计算出来。
需要进一步确认是否有有效IGP路由到达这个下一跳,如上图所示路由,可通过show
ip route 3.3.3.3查看。
步骤4、收集信息,拨打4008-111-000寻求技术支持
收集信息详见BGP故障信息收集