目录
一、BGP概述
边界网关协议(BGP)运行在TCP上,是一种自治系统间路由协议。BGP是唯一设计用于处理互联网规模的网络的协议,也是唯一可以很好地处理与不相关路由域的多个连接的协议。它是建立在EGP获得的经验之上的。BGP系统的主要功能是与其他BGP系统交换网络可达性信息。此网络可达性信息包括可达性信息经过的自治系统(AS)列表中的信息。此信息足以构建AS连接图,从中可以修剪路由环路,并可以实施AS级别的一些策略决策。
1.1、BGP特性
- 传输协议:TCP,端口号179。
- BGP是外部路由协议,用来在AS之间传递路由信息。
- 是一种增强的路径矢量路由协议。
- 拥有可靠的路由更新机制。
- 具备丰富的Metric度量方法。
- 无环路有协议设计。
- 为路由条目附带多种属性信息。
- 支持CIDR(无类别域间选路)。
- 丰富的路由过滤和路由策略。
- 无需周期性更新。
- 路由更新时只发送增量路由。
- 周期性发送KeepAlive报文,以保持TCP连通性。
二、BGP邻居关系
运行BGP的路由器通常被称为BGPSpeaker(发言者),相互之间传递报文的Speaker之间互称为对等体(Peer)。BGP邻居关系的建立,更新和删除是通过对等体之间交互五种报文,六种状态机和五个表等信息来完成的,最后形成BGP邻居。
2.1、BGP报文
Open报文
负责和对等体建立邻居关系,主要包括BGP版本、AS号等信息,试图建立邻居关系的两个路由器在建立了TCP会话连接后开始交换Open信息,以确认是否形成邻居关系。
KeepAlive报文
该报文在对等体之间周期性的发送,用于判断对等体之间的可达性,实现BGP邻居关系的维护。
Update报文
该报文用于BGP对等体之间交换路由信息,其中包括撤销路由信息和可达路由信息及其各种路由属性,是BGP五个报文中最重要的报文。
Notification报文
BGP的差错检测机制,一旦检测到任何形式的差错BGP Speaker会发送一个Notification报文,随后与之相关的邻居关系将会被关闭。
Route-Refresh报文
用来通知BGP对等体,自己支持路由刷新的能力。
2.2、BGP状态机
BGP状态机描述的是BGP邻居的建立过程,通过对这些不同的状态的学习,可以更加深入的了解BGP的工作原理,以及排查思路。BGP状态机有六种形态,分别是Idle、Connect、Active、OpenSent、OpenConfirm和Established。
Idle(空闲)
Idle是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,启动事件出现以后,BGP初始化资源,复位连接重试计时器(Connect—Retry),发起一个TCP连接,同时转入Connect(连接状态)。
Connect(连接)
在Connect状态,BGP发起第一个TCP连接,如果连接重试计时器(Connect—Retry)超时,就重新发起TCP连接,并继续保持Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就转入Active状态。
Active(活跃)
在Active状态,BGP总是在试图建立TCP连接,如果连接重试计时器(Connect—Retry)超时,就退回Connect状态,如果TCP连接成功就转入OpenSent状态,如果TCP连接失败,就继续保持Active状态,并继续发起TCP连接。
OpenSent(打开消息已发送)
在OpenSent状态,TCP连接已经建立,BGP已经发送了第一个Open报文,剩下的工作,BGP就等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回Idle状态,如果没有错误,BGP就开始发送Keepalive报文,并复位Keepalive计时器,开始计时,同时转入OpenConfirm状态。
OpenConfirm(打开消息以确认)
在OpenConfirm状态,BGP发送一个Keepalive报文,同时复位保持计时器,如果收到了一个Keepalive报文,就转入Estabished阶段,BGP邻居关系建立起来了,如果TCP连接中断,就退回Idle状态。
Established(连接以建立)
在Established状态,BGP邻居关系已经建立这时,BGP将和他的邻居交换Update报文,同时复位保持计时器。