简介
本文档介绍在会话因LPTS(Local Packet Transport Services,本地数据包传输服务)条目不正确而停滞在活动状态时,如何排除eBGP(外部边界网关协议)的故障。
作者:William Xu,思科TAC工程师。
先决条件
要求
Cisco 建议您了解以下主题:
- 调试输出中显示“BGP
- TCP
- 适用于IOS XR的LPTS
使用的组件
本文档中的信息基于ASR9000(聚合服务路由器)平台。
本文档中的信息在特定实验室环境设备上创建。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解任何命令的潜在影响。
问题
配置eBGP时,在以下情况下,会话可能会无限期停滞在活动状态:
- 未配置update-source命令
- 拓扑发生变化时,流量会采用不同的路径
出现此问题时,会出现以下症状:
- 可访问IP地址
- 两个BGP对等体都保持活动状态
- 数据包捕获显示路由器发送了许多TCP重置
- show tcp trace error 表示BGP会话的此错误。
Feb 18 09:32:15.393 tcp/error 0/RSP0/CPU0 t9 Lpts set the drop flag for 179 -> 5368, drop packet (pak 0xb1cf80f3) and send a RST
总之,问题的根本原因是路由和转发更改不会更新LPTS条目。这意味着拓扑更改后,它们将保持陈旧状态。
对BGP进行了一些增强。这两种方案将详细介绍此问题。
注意:iBGP(内部边界网关协议)通常不会遇到此问题,因为update-source始终使用。
场景1 — 拓扑更改的多跳EBGP
您可以在ASR9K-1和ASR9K-3之间构建多跳eBGP会话。物理接口的对等IP地址为172.123.1.1和172.123.2.2。未配置update-source命令。在当前拓扑中,会话保持活动状态。这是预期结果,因为两台路由器都将使用子网172.123.3.0/24中的接口作为出口接口。
您可以关闭ASR9K-1和ASR9K-3之间的直接链路。然后,通过ASR9K-2(多跳链路)可到达对等体地址,因此ping操作成功。源IP地址在两端都匹配,但BGP会话仍处于活动状态。
配置BGP邻居时,将根据CEF(思科快速转发)表创建LPTS条目。对于ASR9K-1,可通过172.123.3.0/24子网到达IP地址172.123.2.2。因此,LPTS中的相关条目可用。它允许BGP邻居使用本地IP地址172.123.3.1连接端口179。由于它尝试从本地端口26036发起TCP会话,因此您可以看到它的另一个条目。
ASR9K-1:
========
ASR9K-1#show lpts ifib entry brief | inc "BGP"
...
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.1,179 172.123.2.2
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.1,26036 172.123.2.2,179
此输出在ASR9K-3中相同。
ASR9K-3:
========
ASR9K-3#show lpts ifib entry brief | inc "BGP"
...
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.2,11126 172.123.1.1,179
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.2,179 172.123.1.1
当ASR9K-1和ASR9K-3之间的链路断开时,使用新的本地源IP地址通过ASR9K-2路径可以到达对等体。但是,拓扑更改不会触发LPTS更新。带有端口179的原始条目保留原始本地IP地址。这可以防止路由器允许向新的本地IP地址发出入口TCP请求。因此,两端的BGP会话仍停滞在活动状态。
场景2 — 更新源地址更改的eBGP
您可以在ASR9K-1和ASR9K-3之间部署eBGP会话。IP地址为172.123.3.1和172.123.3.2。根据新计划,您将IP地址更改为172.123.3.111和172.123.3.222。如果首先配置eBGP,然后更新接口的IP地址,则EBGP会话将停滞在活动状态。
原因与场景1相同。配置eBGP会话后,将根据此点的本地出口接口生成LPTS条目。
ASR9K-1:
========
ASR9K-1#show lpts ifib entry brief | inc "BGP"
...
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.1,179 172.123.3.222
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.1,24067 172.123.3.222,179
ASR9K-3:
========
ASR9K-3#show lpts ifib entry brief | inc "BGP"
...
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.2,45091 172.123.3.111,179
BGP4 default TCP any 0/RSP1/CPU0 172.123.3.2,179 172.123.3.111
尽管本地IP地址后来被更改,但LPTS条目不会更新。TCP请求被阻止,会话始终处于活动状态。
解决方案
要解决此问题,您需要触发对LPTS的更新。您可以使用以下选项来解决问题:
- Shut/No shut the BGP neighbors
- 重新配置BGP邻居
- 重新启动进程bgp
- 在两端配置update-source,可以防止此问题。
XR版本中的增强
最近的IOS XR版本中有一些增强功能。
CSCuz51103 - BGP会话停滞在活动状态
XR版本6.1.1中引入的此增强功能。在此版本中,当BGP尝试重新建立会话时,LPTS会使用新的本地IP地址(IP地址)更新其条目。更新时间取决于两端的保持时间配置。您仍然可以等待有时看到会话启动。
即使有此增强功能,如果已配置passive模式,BGP会话仍可能停滞在主动状态。原因显而易见。如果BGP不尝试重新建立会话,则不会检查本地IP地址。因此,LPTS条目不会更新。
XR 6.2.1版对此情况进行了另一次增强。
CSCvb15128 -当路由器配置了被动BGP模式时,BGP会话停滞在主动模式
相关信息