简介
本文档介绍如何确定由MTU引起的内部或外部边界网关协议(BGP)邻居抖动的原因。
先决条件
要求
Cisco 建议您了解以下主题:
在您完成本文档中的过程之前,请确保在两个BGP路由器上完成以下任务:
- 检查BGP配置。
- 验证可通过Internet控制消息协议(ICMP)到达BGP邻居且未观察到丢包。
- 验证用于对等BGP的已连接接口未超订用并且没有任何输入/输出丢弃或错误。
- 检查CPU和内存利用率。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
问题
BGP邻居形式;但是,在前缀交换时,BGP状态会丢弃,日志会生成丢失的BGP hello keepalive,或者其它对等体会终止会话。
完成以下步骤以确定MTU是否导致BGP邻居摆动:
- 使用下列命令检查哪一个邻居受到了影响,以及两台BGP路由器上连接的接口。如果对等地址是环回地址,请检查可到达环回的已连接接口。此外,检查两台对等路由器上的BGP OutQ。一致的非零OutQ强烈表示更新由于路径中的MTU问题未到达对等体。
Router#show ip bgp summ | in InQ|10.10.10.2
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.10.10.2 4 3 64 62 3 0 0 00:00:3 2
Router#show ip route 10.10.10.2
Routing entry for 10.10.10.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Routing Descriptor Blocks:
* directly connected, via GigabitEthernet1/0
Route metric is 0, traffic share count is 1
- 检查两端的接口MTU:
Router#show ip int g1/0 | i MTU
MTU is 1500 bytes
Router#
- 确认两个BGP发言者的TCP协议最大数据段:
Router#show ip bgp neigh 10.20.20.2 | inc segment
Datagrams (max data segment is 1460 bytes):
Router#
在上面的示例中,1460是正确的,因为20个字节分配给TCP报头,另外20个字节分配给IP报头。
- 确认是否已启用BGP used path-mtu:
Router#show ip bgp neigh 10.10.10.2 | in tcp
Transport(tcp) path-mtu-discovery is enabled
Router#
- 对设置了最大接口MTU和DF(不分段)位的BGP对等体执行ping操作:
Router#ping 10.10.10.2 size 1500 df
Type escape sequence to abort.
Sending 5, 1500-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds:
Packet sent with the DF bit set
.....
Success rate is 0 percent (0/5)
- 减小ICMP大小值,以确定可以使用的最大MTU大小:
ping 10.10.10.2 size 1300 df
解决方案
以下是一些可能的原因:
- 两台路由器上的接口MTU不匹配。
- 两台路由器上的接口MTU匹配,但形成BGP会话的第2层域不匹配。
- 路径MTU发现确定TCP BGP会话的最大数据集不正确。
- 由于PMTUD ICMP数据包被阻止(防火墙或ACL),BGP路径最大传输单元发现(PMTUD)可能失败
以下是解决MTU问题的可能方法:
- 两台路由器上的接口MTU必须相同;运行show ip int | in MTU命令以检查当前MTU设置。
- 如果两台路由器上的接口MTU正确(例如,1500),但设置了DF位的ping测试不超过1300,则在其上形成受影响的BGP会话的第2层域可能包括不一致的MTU配置。检查每个第2层接口MTU。更正第2层接口MTU以解决问题。
- 如果无法检查/更改第2层域,可以将ip tcp mss全局命令设置为较小的值,例如1000,这会强制所有本地发起的TCP最大数据段会话(包括BGP)设置为1000。有关此命令的详细信息,请参阅Cisco IOS® IP应用服务命令参考的ip tcp mss部分。
此外,您可以使用ip tcp adjust-mss命令进一步排除故障;此命令在接口级别配置,影响所有TCP会话。有关此命令的详细信息,请参阅Cisco IOS IP应用服务命令参考的ip tcp adjust-mss部分。
- (可选)BGP路径最大传输单元发现(PMTUD)无法生成正确的最大数据大小。您可以全局或按邻居禁用此功能,以确认是否是因为此原因。禁用BGP PMTUD时,BGP最大分段大小(MSS)默认为536,如RFC 879中所定义。
有关如何禁用PMTUD的信息,请参阅Cisco IOS BGP配置指南的为TCP路径MTU发现每个会话配置BGP支持部分。
有关PMTUD的详细信息,请参阅解决GRE和IPsec的IPv4分段、MTU、MSS和PMTUD问题。
相关信息