一、BGP的报文
1、Open报文:用于建立BGP对等体连接。(AS,RID,holdtime 180s)
2、Update报文:用于在对等体之间交换路由信息。(NLRI,网络层可达信息,即路由前缀及对应的属性,公认必遵:下一跳、起源和AS-path)
3、Notification报文:用于中断BGP连接。(错误通知)
4、Keepalive报文:用于保持BGP连接。//保活报文(60s)
5、Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。
二、BGP拓扑
[R1-bgp]peer 10.1.15.5 ignore //主动断开到R5的邻居关系
通过抓包可以查看到FIN(主动发起断开连接)位为1
[R1-bgp]undo peer 10.1.15.5 ignore 恢复BGP邻居关系
[R1-bgp]timer keepalive 70 hold 210 //修改keepalive时间,时间不同不影响邻居关系建立,两端keepalive设置不一样情况则两端统一采用较小的时间值
三、BGP状态机
邻居状态:
1、IDLE,没有建立TCP 连接
原因:EBGP通过环回口建立邻居,忘记配置多跳,没有到达对端更新源的路由,在地址族中没有激活邻居
查看BGP邻居关系为IDLE:
[R2-bgp]peer 66.1.1.1 ebgp-max-hop 2//配置多跳后邻居关系正常
在ipv4地址簇下面关闭激活邻居后出现IDLE,ipv4单播默认激活,其他协议默认不激活
2、CONNECT
在重连计时器时间内和邻居尝试建立TCP连接,BGP发起第一个TCP连接,如果连接重试计时器超时,就重新发起TCP连接,并继续保持在Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就转入Active状态。
3、ACTIVE
没有构建TCP会话,指定错误的TCP目的地址,指定错误的更新源
4、OpenSent:在此状态,TCP连接已经建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到Idle状态,如果没有错误,BGP就开始发送Keepalive报文,并复位Keepalive计时器,开始计时。同时转入OpenConfirm状态。
5、OpenConfirm:确认收到open报文,在OpenConfirm状态,BGP等待一个Keepalive报文,同时复位保持计时器,如果收到了一个Keepalive报文,就转入Established阶段,BGP邻居关系就建立起来了。
6、Established:在Established状态,BGP邻居关系已经建立,这时,BGP将和它的邻居们交换Update报文,同时复位保持计时器。
BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。
欢迎关注转发学网络小伙伴们,关注分享该WX Gongzhonghao,持续分享干货网络技术。
同时为方便广大网络爱好者一起共同学习交流,开设了华为&思科网络技术交流qun,qun里上传大量免费学习资料,欢迎广大网络爱好者进群学习交流!