IP : 边界网关协议(BGP)

与MTU故障排除TechNote的BGP邻居飘荡

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈

简介

本文描述如何确定内部或外部边界网关协议(BGP)邻接飘荡是否是由最大传输单元(MTU)问题造成的。

贡献用阿梅尔易卜拉希莫维奇,玛尼Ganesan和杰伊Kulkarni, Cisco TAC工程师。

先决条件

在您完成在本文前的步骤请保证您完成在两个BGP路由器的这些任务:

  • 检查BGP配置。
  • 验证BGP邻居通过互联网控制消息协议(ICMP)是可及的,并且丢包没有被观察。
  • 验证用于的连接的接口并列BGP不是订购过量的,并且没有任何输入/输出丢包或错误。
  • 检查CPU和存储器利用率。

问题

BGP邻居表;然而,在前缀交换时, BGP状态丢包和日志生成缺少BGP Hello Keepalive或另一对等体终止会话。

完成这些步骤为了确定MTU是否造成BGP邻居摆动:

  1. 请使用下面的命令为了检查哪个邻居是受影响和在两个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
  2. 检查在两边的接口MTU :
    Router#show ip int g1/0 | i MTU
    MTU is 1500 bytes
    Router#
  3. 确认两个BGP扬声器的TCP同意的最大数据段:
    Router#show ip bgp neigh 20.20.20.2 | inc segment
    Datagrams (max data segment is 1460 bytes):
    Router#

    在以上示例中,因为20个字节分配到TCP报头和另外20对IP报头, 1460正确。

  4. 确认,如果BGP使用的路径MTU启用
    Router#show ip bgp neigh 10.10.10.2 | in tcp
    Transport(tcp) path-mtu-discovery is enabled
    Router#
  5. ping有最大接口MTU的BGP对等体和设置的DF (不要分段)位:
    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)
  6. 减少ICMP大小值为了确定能使用的最大值MTU大小:
    ping 10.10.10.2 size 1300 df 

解决方案

这是一些可能的原因:

  • 在两路由器的接口MTU不配比。
  • 在两路由器的接口MTU配比,但是BGP会话形成的Layer2域不配比。
  • 路径MTU发现确定了不正确最大为TCP BGP会话datasize。
  • BGP路径最大传输单位发现(PMTUD)可能是失败由于阻塞的PMTUD ICMP数据包(firewal或ACL)

这是可能的方式解决MTU问题:

  1. 在两路由器的接口MTU应该是相同的;运行显示ip int|在mtu命令为了检查当前MTU设置。

  2. 例如如果在两路由器的接口MTU正确(1500),但是与DF位集的ping测试不超过1300,则受影响的BGP会话形成的Layer2域也许包括不一致MTU配置。检查每第二层接口MTU。更正第二层接口MTU为了解决问题。

  3. 如果将无法检查/更改Layer2域,您能设置ip tcp毫秒global命令对一点值类似1000,将迫使所有本地产生的TCP最大数据段会话(包括BGP)到1000。关于此命令的更多信息,参考Cisco IOS IP应用服务命令参考的ip tcp毫秒部分。

    另外,您能使用ip tcp adjust-mss命令为了进一步排除故障;此命令配置在接口级并且影响所有TCP会话。关于此命令的更多信息,参考Cisco IOS IP应用服务命令参考的ip tcp adjust-mss部分。

  4. (可选) BGP路径最大传输单位发现(PMTUD)也许不生成正确最大数据大小。您能禁用它全局或每个邻居为了确认这是否是原因。当BGP PMTUD禁用时, BGP最大分段尺寸(MSS)默认到536如对RFC 879定义

    关于如何禁止PMTUD的信息,参考TCP路径MTU发现的配置的BGP技术支持每个Cisco IOS BGP配置指南的会话部分

    关于PMTUD的更多信息,参考什么是PMTUD ?


Document ID: 116377