Author [email protected]
Date Aug. 21, 2023
Description BGP协议---基于RFC4271标准。
RFC4271是最新的BGPv4版本的协议。虽然直接看协议是非常晦涩难懂的,而且104页的全英文,真的很难完全阅读下来,但如果理解有出入,还是看RFC最为标准了。
第1、2、3章自己就可以看懂了,唯一的就是可能缩写比较多,但是知道英文应该问题也不大。
第4章,介绍BGP的4类报文格式,分别是OPEN、UPDATE、NOTIFICATION、KEEPALIVE,以及他们的公共头格式。
- OPEN:在TCP连接建立后,OPEN报文用于宣告此BGP支持的能力CAPABILITY,虽然能力是可选的。
- UPDATE:用于宣告以及撤销路由。BGP的大部分功能都和UPDATE报文有关。
- KEEPALIVE:保活报文,以确保Hold Timer不会过期,BGP不使用任何基于TCP的保活机制。
- NOTIFICATION:一般是用作错误处理,告知对方哪里出问题了。
第5章开始介绍Path Attribute,如果要看已经分配的所有的Path Attribute,需要去看IANA。这一章值得好好研究,重点关注Well-Known类型的。
第6章是消息错误处理机制。基本上都能通过NOTIFICATION报文看出来发给peer的报文到底是哪里出问题了,进而可以排查。最多的可能就是配置的问题。
第7章在说version的问题,目前应该都是在用BGPv4吧。
第8章定义了BGP有限状态机(FSM)。状态机,也就是根据条件xxx触发从状态yyy迁移到状态zzz。有限状态机,就是状态的个数是有限制的。BGP协议的状态可以分为:
- IDLE:BGP的开始状态,等待ManualStart事件或者AutomaticStart事件。
- CONNECT:初始化后,BGP router向peer发起TCP连接请求。tcp三次握手完成后还继续保持该状态。
- ACTIVE:不常见的状态,除非initial connect失败了。
- OpenSent:发送OPEN报文呗。
- OpenConfirm:发出BGP-OPEN报文后进入该状态,收到了KEEPALIVE报文,就可以进入ESTABLISHED状态。
- ESTABLISHED:可以开始交换路由了。这才是我们需要的状态。
第9章介绍了UPDATE消息处理,主要就是BGP优选,这块了解不是很深,可以参考[思科],也可以参考华为。
第10章是BGP的各类定时器。
标签:BGP,状态机,状态,报文,UPDATE,RFC4271,---,OPEN From: https://blog.51cto.com/basilguo/7178105