随笔:故障处理之BGP翻动

故障处理-BGP篇

BGP Flapping Issue Case Study

一、问题状态

发现两个IBGP邻居不停的flapping,有一个明显的规律是bgp 邻居建立起来之后经过大约5分钟的时间就会因为holdtimer超时而down掉,然后邻居又会马上建立起来。

二、问题分析思路

环境两个IBGP邻居用loopback0建立IBGP邻居,中间经过多台路由器。
示意拓扑如下:

在这里插入图片描述
1.问题的规律
2.从log中我们可以发现这个IBGP邻居断掉以及重建的规律。

每次都是因为holdtimer超时,并且是因为对端收不到本端发出去keepalive报文。
Dec  6 13:28:36: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Up
Dec  6 13:33:55: %BGP-3-NOTIFICATION: received from neighbor 2.2.2.2 4/0 (holdtime expired) 0bytes
Dec  6 13:33:55: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Down BGP Notification received
Dec  6 13:34:22: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Up
Dec  6 13:39:37: %BGP-3-NOTIFICATION: received from neighbor 2.2.2.2 4/0 (holdtime expired) 0bytes
Dec  6 13:39:37: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Down BGP Notification received

因为bgp邻居每次断掉之后就会很快的重建起来,IP路由应该没有问题。
(1)现在我们要理解bgp邻居建立起来之后会做什么。发送路由更新,也就是update报文。
(2)对于bgp来说,邻居的维护使用keepalive报文,但是如果有路由更新,发送update报文的话,此update报文就具有keepalive报文的功能,路由器就不用再专门发送一个bgp keepalive报文。 综合以上两点我们可以怀疑是bgp update报文对端没有收到。

3.由于是第一个update报文,根据路由表容量的大小,我们可以知道这个报文会达到最大值,我们知道bgp 报文最大可以达到4096个字节,同时也受限于TCP 对端的MSS大小。
MSS(Maximum Segment Size ) 是指一个host能够接受最大TCP datagram的大小,这个值是在tcp option字段中协商得到的。我们可以通过以下命令知道。
如下这个命令输出的Datagrams (max data segment is 4394 bytes)。

4.检查当前BGP的MSS值

show ip bgp vpnv all neighbors 10.32.100.100 | in Datagrams
在这里插入图片描述

5, 检查线路是否可以通过当前的MSS值报文

这里可以使用设备自带的扩展ping或者不分片ping测试即可,具体命令不写了。如果不通,我们可以知道是路径中某台路由器的接口mtu较小导致。

6.解决办法

变更线路经过的所有接口MTU值为一致,或者将本端出接口MTU调整到全程最小MTU,即可稳定

问题总结此问题

对于bgp 的troubleshooting,因为bgp 是基于tcp报文的,所以不仅仅是ip层面的,也有可能是也要基于tcp层面进行分析。
1.BGP neighbor发出的notification而导致的邻居down掉,我们都可以基于给出的 error code 和subcode(holdtimer 超时是4/0)来知道down掉的原因。
具体的code的分类和意思可以参考RFC4271.2.相关命令Show ip bgp

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值