福哥答案2020-08-28:
1.边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
2.BGP路由选择协议执行中使用5种分组:打开分组(open)、更新分组(update)、存活分组(keepalive)、通告分组(notification)、Route-refresh路由重发。
3.BGP邻居建立中的状态和过程如下:
空闲(Idle):为初始状态,当协议激活后开始初始化,复位计时器,并发起第一个TCP连接,并开始倾听远程对等体所发起的连接,同时转向Connect状态。。
连接(Connect):开始TCP连接并等待TCP连接成功的消息。如果TCP连接成功,则进入OpenSent状态;如果TCP连接失败,进入Active状态。
行动(Active):BGP总是试图建立TCP连接,若连接计时器超时,则退回到Connect状态,TCP连接成功就转为Open sent状态。
OPEN发送(Open sent):TCP连接已建立,自己已发送第一个OPEN报文,等待接收对方的Open报文,并对报文进行检查,若发现错误则发送Notification消息报文并退回到Idle状态。若检查无误则发送Keepalive消息报文,Keepalive计时器开始计时,并转为Open confirm状态。
OPEN证实(Open confirm):BGP等待Keepalive报文,同时复位保持计时器。如果收到了Keepalive报文,就转为Established状态,邻居关系协商完成。如果系统收到一条更新或Keepalive消息,它将重新启动保持计时器;如果收到Notification消息,BGP就退回到空闲状态。
已建立(Established):即建立了邻居(对等体)关系,路由器将和邻居交换Update报文,同时复位保持计时器。
4.BGP在进行路由通告的时候,需要遵循以下原则:
多条路径时,BGP Speaker只选最优的给自己使用(负载均衡和FRR除外)。
BGP Speaker只把自己使用的路由(最优路由)通告给相邻体。
BGP Speaker从EBGP获得的路由会向自己所有BGP相邻体通告(包括EBGP和IBGP)。
BGP Speaker从IBGP获得的路由不向自己的IBGP相邻体通告(反射器除外)。
BGP Speaker从IBGP获得的路由是否通告给自己的EBGP相邻体要根据IGP和BGP同步的情况来决定。
当收到对端的refresh报文并且本端邻居支持refresh能力,BGP Speaker将把自己所 有BGP路由通告给对等体。
GR过程中,主备倒换方在GR结束时BGP Speaker会把自己所有BGP路由通告给对等体。
5.路径属性分为4类:公认必遵、公认自决、可选过渡、可选非过渡。
6.协议结构
Marker (16 bytes) Length (2 bytes) Type (1 byte)
Marker – 信息包含信息接收端可预测值。
Length – 包含协议头的信息长度。
Type –信息类型。信息可能是:Open、Update、Notification、Keepalive。