边界网关协议(BGP)的故障分析
- 格式:pdf
- 大小:432.62 KB
- 文档页数:89
bgp协议的几种状态BGP(Border Gateway Protocol,边界网关协议)是一种用于在互联网中交换路由信息的协议。
BGP协议定义了多种状态,用于描述与邻居路由器之间的连接和路由信息的交换状态。
以下是BGP协议的几种状态:1. Idle(空闲状态),在该状态下,BGP路由器尚未建立与邻居路由器的TCP连接。
这可能是因为配置错误、网络故障或邻居路由器尚未配置的原因。
2. Connect(连接状态),在该状态下,BGP路由器正在尝试与邻居路由器建立TCP连接。
如果连接成功,将进入下一个状态;如果连接失败,将返回到Idle状态。
3. Active(活动状态),在该状态下,BGP路由器正在尝试与邻居路由器建立TCP连接,但是尝试失败。
这可能是因为网络故障、配置错误或邻居路由器不可达。
4. OpenSent(已发送打开消息状态),在该状态下,BGP路由器已经成功建立了TCP连接,并向邻居路由器发送了打开消息。
BGP路由器等待邻居路由器的确认。
5. OpenConfirm(确认打开消息状态),在该状态下,BGP路由器已经收到了邻居路由器的确认消息,并等待邻居路由器发送Keepalive消息。
6. Established(已建立状态),在该状态下,BGP路由器与邻居路由器之间的连接已经成功建立,并且可以开始交换路由信息。
BGP路由器将持续发送Keepalive消息以保持连接。
这些状态描述了BGP路由器与邻居路由器之间的连接和路由信息交换的不同阶段。
通过检查这些状态,网络管理员可以了解BGP路由器的连接状态,并进行故障排除和网络维护。
BGP协议故障处理-1 1. 邻居关系不能建立故障现象描述TCP连接没有建立,OPEN报文没有正常交互。
故障可能原因AS号不正确对等体的IP地址不正确环回接口配置错误EBGP没有配置peer ebgp-max-hopTCP连接不正常路由不可达TCP端口179被禁用故障处理流程故障处理步骤1) 检查AS号是否配置正确检查AS号是否正确,使用display current-configuration命令检查本端的AS号配置,在对端使用display bgp peer检查其邻居的AS号是否与本端一致;2) 检查对等体IP是否正确检查对等体的IP地址是否正确;3) 检查环回接口是否配置正确如果使用环回接口,检查是否配置了connect-interface loopback。
缺省情况下,路由器使用最佳路由建立TCP连接,而不是loopback接口;4) 检查EBGP配置peer ebgp-max-hop没有如果是EBGP邻居,且EBGP连接在物理上不是直连的,检查是否配置了peerebgp-max-hop。
默认情况下,EBGP邻居的TTL被置为1,如果不是直连,必须配置peer ebgp-max-hop;5) 检查TCP连接正常否使用扩展的ping命令检查TCP连接是否正常,由于一台路由器可能有多个接口能够到达对端,应使用ping -a ip-address命令指定发送ping包的源IP地址;6) 检查路由是否可达如果Ping不通,使用display ip routing-table命令检查路由表中是否存在到邻居的可用路由;7) 检查179端口是否被禁用如果能Ping通,检查是否配置了禁止TCP端口179的ACL,如果有,取消对179端口的禁止。
2. 邻居关系DOWN掉故障故障现象描述除对端发生重启的情况外,已经建立好的邻居又Down掉一般是由于链路层的问题导致的。
故障可能原因对端设备发生重启MTU问题QoS问题网络拥塞问题故障处理流程图2邻居关系DOWN掉故障处理流程故障处理步骤1) 检查对端BGP是否重启过,一些可能导致BGP重启的事件:对端关闭会话。
BGP协议故障处理-41. 配置BGP反射,不同的群具有相同的cluster-id导致路由丢失故障现象描述在下面的BGP组网应用中,RTA和RTC组成一个群(cluster),RTA作为反射器;RTB和RTD组成一个群,RTB作为反射器。
在RTD上发布一条路由189.1.0.0/16,RTB学习到了这条路由,按照反射器的特性,应该把这条路由反射给非客户机RTA。
但是在RTA上观察发现并没有这条路由。
图1不同的群具有相同的cluster-id导致路由丢失RTA的BGP配置如下:bgp 100reflector cluster-id 2332098817default med 1000undo synchronizationgroup g1 externalgroup g2 internalgroup g3 internalpeer 133.1.1.2 group g1 as-number 200peer g1 ebgp-max-hoppeer 150.1.1.2 group g2peer 200.1.7.2 group g3peer g3 reflect-clientRTB的BGP配置如下:bgp 100undo synchronizationgroup g1 internalgroup g2 internalpeer 150.1.1.1 group g1peer 12.110.250.1 group g1peer g1 reflect-clientdisplay信息或者debugging信息:打开debugging开关,在RTB上可以看到RTB已经向RTA发送了update报文:*0.29444933-RM-7-RTDBG:BGP SEND 150.1.1.2+1025 -> 150.1.1.1+179*0.29444999-RM-7-RTDBG:BGP SEND message type 2 (Update) length 61*0.29445066-RM-7-RTDBG:BGP SEND flags 0x40 code Origin(1): IGP*0.29445133-RM-7-RTDBG:BGP SEND flags 0x40 code ASPath(2): <null>*0.29445199-RM-7-RTDBG:BGP SEND flags 0x40 code NextHop(3): 12.110.250.1*0.29445283-RM-7-RTDBG:BGP SEND flags 0x40 code LocalPref(5): 1000*0.29445349-RM-7-RTDBG:BGP SEND flags 0x80 code Originator_ID(9):12.110.250.1*0.29445449-RM-7-RTDBG:BGP SEND flags 0x80 code Cluster_List(10):139.1.1.1*0.29445533-RM-7-RTDBG:BGP SEND 189.1.0.0/16在RTA上也可以看到RTA收到了RTB发过来的update报文:*0.29444687-RM-7-RTDBG:BGP RECV 150.1.1.2+1025 -> 150.1.1.1+179*0.29444754-RM-7-RTDBG:BGP RECV message type 2 (Update) length 61*0.29444820-RM-7-RTDBG:BGP RECV flags 0x40 code Origin(1): IGP*0.29444887-RM-7-RTDBG:BGP RECV flags 0x40 code ASPath(2): <null>*0.29444954-RM-7-RTDBG:BGP RECV flags 0x40 code NextHop(3): 12.110.250.1*0.29445037-RM-7-RTDBG:BGP RECV flags 0x40 code LocalPref(5): 1000*0.29445104-RM-7-RTDBG:BGP RECV flags 0x80 code Originator_ID(9):12.110.250.1*0.29445204-RM-7-RTDBG:BGP RECV flags 0x80 code Cluster_List(10):139.1.1.1*0.29445287-RM-7-RTDBG:BGP RECV 189.1.0.0/16但是在RTA上发现路由189.1.0.0/16并没有添加到BGP路由表:进一步打开bgp的event调试开关,可发现如下信息:*0.374978900 RM/7/RTDBG:bgp: peer 150.1.1.2 (Internal AS 100) unicastroutes DENIED due to: cluster id loop found故障原因分析在RTB发给RTA的update报文中,可以看到一个originator-id属性和一个cluster-list属性。
BGP协议故障处理-21. 路由发起过程的路由丢失故障故障现象描述路由发起过程的路由丢失,是指在将运行OSPF接口的路由发布出去的时候,因发布命令配置不当而引起的路由丢失。
故障可能原因¾使用network命令发布路由不当导致¾使用network mask命令发布路由不当导致¾使用aggregate-address命令发布聚合路由不当导致故障处理流程图1路由发起过程的路由丢失故障处理流程故障处理步骤1) 检查是否因使用network命令发布路由不当导致使用networ k命令发布路由时,如果不指定发布网络的掩码,则BGP认为发布的是自然网段的路由,使用display ip routing-table检查路由表中是否存在该自然网段的路由。
在AR系列路由器中,BGP缺省不进行子网路由的自动聚合。
所以,如果仅有子网路由,是不能被正确发布的。
network命令发布路由时进行精确匹配才能将子网路由发布出去。
2) 检查是否因使用network mask命令发布路由不当导致使用network mask命令可以发布带子网掩码的路由,必须存在精确匹配的路由才能被正确地发布出去,使用display ip routing-table检查路由表中是否存在网络地址和掩码都精确匹配的路由。
3) 检查是否因使用aggregate-address命令发布聚合路由不当导致使用aggregate命令可以对本地路由进行任意子网掩码长度的聚合,待聚合的路由需要存在于BGP路由表中,使用display bgp routing-table确认BGP路由表是否存在这些路由。
如果使用aggregate detail-suppressed命令进行聚合,则只有聚合后的路由被发布出去,而具体路由都将被抑制。
aggregate对BGP路由表中的路由进行聚合,使用参数detail-suppressed将导致具体路由被抑制发布。
BGP协议故障处理-51. 使用network命令发布路由的精确匹配问题故障现象描述在下面的BGP组网应用中,RTA和RTB属于同一个AS,它们之间运行IGP(如OSPF);RTA和RTC属于不同的AS,它们之间运行BGP,建立EBGP邻居关系。
在RTB上通过OSPF协议发布三条路由172.16.1.0/24、172.16.2.0/24、172.16.3.0/24,RTA学习到了这三条路由,并通过network 172.16.0.0命令发布出去。
但是在EBGP邻居RTC上并没有学习到这三条路由,RTA和RTC之间的邻居关系稳定,没有出现异常。
图1使用network命令发布路由的精确匹配问题RTA的BGP配置:bgp 100default med 1000network 172.16.0.0undo synchronizationgroup g1 externalgroup g2 internalgroup g3 internalpeer 133.1.1.2 group g1 as-number 200peer g1 ebgp-max-hoppeer 150.1.1.2 group g2peer 200.1.7.2 group g3peer g3 reflect-clientdisplay信息或者debugging信息:在RTA上用display ip routing-table查看本地路由表:[RTA]display ip routing-tableRouting Tables: public netDestination/Mask Protocol Pre Cost Nexthop Interface172.16.1.0/24 OSPF 10 1563 150.1.1.2 Serial1/0172.16.2.0/24 OSPF 10 1563 150.1.1.2 Serial1/0172.16.3.0/24 OSPF 10 1563 150.1.1.2 Serial1/0 可以看到三条OSPF路由已经装入本地路由表中。
1 BGP策略错误导致路由持续震荡场景分析1.1 BGP策略错误导致路由持续震荡概述1.2 典型组网1.3 BGP路由震荡产生原理1.4 BGP路由持续震荡的错误配置示例1.5 防止路由震荡的建议配置示例1.6 适用产品和版本1.7 总结与建议1.1 BGP策略错误导致路由持续震荡概述动态路由协议BGP在现网广泛应用,现网会根据自己的业务特点进行组网部署,但可能因为配置不合理造成BGP路由持续震荡,导致业务受损。
但无论什么配置,路由持续震荡的根因是原始引入路由的设备又从BGP邻居收到了相同前缀的路由,且优先级高于本地引入的路由。
1.2 典型组网如图1-1所示,DeviceA、DeviceC处于AS 100,DeviceB处于AS 200。
由于在DeviceB上配置AS替换功能,且DeviceC上使用入口策略提升来自DeviceB的路由的本地优先级属性后再发布给DeviceA,使DeviceA从DeviceC收到的路由优先级高于本地引入路由,导致BGP路由持续震荡形成环路。
图1-1 BGP路由持续震荡典型组网说明本例中interface1,interface2分别代表GE0/1/0,GE0/2/0。
1.3 BGP路由震荡产生原理1.3.1 数据准备为完成上述组网场景配置,需准备如下数据:1.3.2 BGP路由震荡原理详细介绍各设备详细配置数据参见1.3.1 数据准备和1.4.1 BGP策略错误导致路由持续震荡错误示例。
如图1-1所示,以DeviceA发布的路由192.168.6.6/32为例,形成BGP路由持续震荡的过程可分为如下阶段:阶段一:DeviceA上在BGP视图下通过配置import-route static命令引入静态路由192.168.6.6/32,通过EBGP邻居发布给DeviceB,又通过IBGP邻居发布给DeviceC。
阶段二:DeviceB对与DeviceC建立的EBGP邻居配置peer substitute-as命令,使能AS号替换功能,因此DeviceB给DeviceC发布路由AS_Path属性的AS号为200。
Trouble Shooting 协议故障可以从R1的路由信息,的“State/PfxRcd”列的确实“Idle”试向外部由信息了。
对应的,R1也可以收到相同的BGP路由信息。
可以看出,该故障是由于链路异常造成的,导致邻居关系无法正常建立。
由BGP邻居配置参数错误引发的故障如果R1无法接收来自AS103的路由信息,而且检测和R2的邻居关系处于正常状态,但是在进入R2管理界返回信息中和R3对应的“State/PfxRcd”列显示的是“active”信息,说明在R2和R3之间可以互相发送Hello 包,但是其中的参数没有匹配和对应。
造成无法协商的情况,即使用Hello包中的参数无法继续协商建立邻居关系。
然后执行“ping 172.16.23.3”命令,和R3可以正常通讯。
在R2路由器上执行“show running-configTrouble Shooting上执行以下命令,172.16.23.2 这样就解决了上述故障。
bgp”命令,都没有发现收到172.16.3.0/32网段的信息。
因为R3的172.16.0.3/24是自身的直连网段,在R3上执行“show ip route”命令,显示“172.16.3.0/24 isdirectly connectd”内容,就说明了上述分析的正确性。
该网段应该被注入到R3的BGP数据库,注入的方法有多种,包括通过network指令将其匹配到BGP数据库中,或者将直连网段重分发到BGP数据库中等。
255.255.255.0”信息却与实际情况不符。
是在注入现的错误,入到BGP的IGP协使用重分发指令实现注入。
在默认情况下,中的所有路由都会被重分发。