目录

简介

先决条件

要求

使用的组件

问题

场景1 — 拓扑更改的多跳EBGP

场景2 — 更新源地址更改的eBGP

解决方案

XR版本中的增强

相关信息

简介

本文档介绍在会话因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会话停滞在主动模式

相关信息

- ASR9000/XR：本地数据包传输服务(LPTS)CoPP(控制平面策略)

- 配置指南：实施LPTS

- 配置指南：实施BGP