BGP(Border Gateway Protocol)邻居建立过程
BGP(Border Gateway Protocol)是用于在自治系统(AS)之间交换路由信息的路径向量路由协议。BGP邻居建立过程是指两个BGP路由器之间建立BGP会话的过程,这个会话用于交换路由信息。邻居建立的过程可以分为五个主要阶段:Idle、Connect、Active、OpenSent、OpenConfirm和Established。每个阶段都有特定的行为和消息交换。
1. Idle(空闲)
描述:BGP状态机的初始状态,路由器等待启动事件以开始建立BGP连接。
行为:等待BGP进程启动。
处理:如果BGP进程启动,状态机转到Connect状态。
2. Connect(连接)
描述:路由器尝试建立TCP连接(使用端口179)与对等体。如果连接成功,状态转到OpenSent;如果连接失败,则进入Active状态。
行为:尝试建立TCP连接。
处理:
- 如果TCP连接成功:
- 发送BGP OPEN消息。
- 状态机转到OpenSent状态。
- 如果TCP连接失败:
- 检查重试计时器是否到期。
- 转到Active状态。
3. Active(活跃)
描述:路由器主动尝试与对等体建立TCP连接。如果成功,状态转到OpenSent;如果失败,保持在Active状态并定期重试。
行为:尝试重新建立TCP连接。
处理:
- 如果TCP连接成功:
- 发送BGP OPEN消息。
- 状态机转到OpenSent状态。
- 如果TCP连接失败:
- 继续在Active状态等待重试。
4. OpenSent(打开已发送)
描述:路由器已发送OPEN消息并等待对等体的OPEN消息。在接收到有效的OPEN消息后,状态转到OpenConfirm。
行为:等待对等体的OPEN消息。
消息:
- 发送OPEN消息:
- 包含BGP版本号、AS号、保持时间(Hold Time)、BGP标识符等信息。
处理:
- 接收对等体的OPEN消息:
- 验证BGP版本号、AS号、BGP标识符。
- 如果验证通过,发送KEEPALIVE消息。
- 状态机转到OpenConfirm状态。
- 如果验证失败,发送NOTIFICATION消息,关闭TCP连接,状态机回到Idle状态。
5. OpenConfirm(打开确认)
描述:路由器在接收到KEEPALIVE消息后,状态转到Established。否则,返回Active状态。
行为:等待KEEPALIVE消息。
消息:
- 发送KEEPALIVE消息以确认连接。
处理:
- 接收KEEPALIVE消息:
- 状态机转到Established状态。
- 如果未接收到KEEPALIVE消息或接收到NOTIFICATION消息:
- 关闭TCP连接,状态机回到Idle或Active状态。
6. Established(建立)
描述:BGP会话成功建立,路由器开始交换UPDATE消息,正式进行路由信息的传播。
行为:开始交换BGP UPDATE消息。
消息:
- 发送和接收UPDATE消息:
- 包含网络前缀、路径属性等信息。
处理:
- 处理收到的UPDATE消息:
- 更新本地路由表。
- 根据策略选择最佳路径,并传播给其他BGP对等体。
- 定期发送KEEPALIVE消息以维持会话。
详细信息处理
OPEN消息
- 发送方:发起连接的路由器。
- 接收方:目标对等体路由器。
- 内容:BGP版本号、本地AS号、保持时间、BGP标识符、选项参数。
- 处理:接收方验证消息内容,如版本号和AS号是否匹配。验证通过后,发送KEEPALIVE消息,转入OpenConfirm状态。
KEEPALIVE消息
- 发送方:接收到有效OPEN消息的路由器。
- 接收方:对等体路由器。
- 内容:确认连接保持活跃,无附加数据。
- 处理:接收方接收到KEEPALIVE消息后,状态机进入Established状态,表示BGP会话已建立。
UPDATE消息
- 发送方:已建立BGP会话的任一对等体。
- 接收方:对等体路由器。
- 内容:包含网络前缀、路径属性等路由信息。
- 处理:接收方更新本地路由表,并根据策略选择最佳路径。选择的最佳路径传播给其他BGP对等体。
NOTIFICATION消息
- 发送方:任何检测到错误或异常的路由器。
- 接收方:对等体路由器。
- 内容:错误代码和子代码,详细错误描述。
- 处理:接收方关闭TCP连接,BGP状态机回到Idle状态。
总结
BGP邻居建立过程涉及多步消息交换和状态转换,每一步都有特定的行为和处理逻辑。这一过程确保了BGP对等体之间的可靠连接,并为路由信息的稳定交换奠定基础。理解每一步的细节和处理逻辑对网络工程师来说非常重要,有助于诊断和解决BGP相关的问题。