简介
本文档介绍如何确定内部或外部边界网关协议(BGP)邻居抖动是由最大传输单元(MTU)问题引起的。
先决条件
在完成本文档中的步骤之前,请确保在两台BGP路由器上完成以下任务:
- 检查BGP配置。
- 验证BGP邻居是否可通过互联网控制消息协议(ICMP)到达,并且未观察到丢弃。
- 验证用于对等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#
- 确认TCP同意的两个BGP扬声器的最大数据段:
Router#show ip bgp neigh 20.20.20.2 | inc segment
Datagrams (max data segment is 1460 bytes):
Router#
在上例中,1460是正确的,因为TCP报头分配了20个字节,IP报头分配了20个字节。
- 确认是否启用了BGP使用的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会话的不正确最大数据分配。
- BGP路径最大传输单元发现(PMTUD)可能因PMTUD ICMP数据包被阻止(防火墙或ACL)而失败
以下是解决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配置指南的配置BGP对TCP路径MTU每会话发现的支持部分。
有关PMTUD的详细信息,请参阅什么是PMTUD?