【概述】
边界网关协议(Border Gateway Protocol,BGP),是不同自治系统的路由器间交换路由信息的协议,是外部网关协议 EGP
由于因特网的规模太大,这使得自治系统之间路由选择非常困难,因此 BGP 只是是力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由
其具有以下特点:
- 交换路由信息的结点数量级是自治系统的数量级
- 支持 CIDR,因此 BGP 的路由表中的每一项为:
<目的网络前缀>,<下一跳路由地址>,<到达该目的网络要经过的各自治系统序列>
- 应用层协议,在传输层上采用的是 TCP 协议
【工作原理】
每一个自治系统的管理员要选择至少一个路由器作为该自治系统的 BGP 发言人,通常来说,为了避免自治系统间的路由选择不过分复杂,BGP 发言人的数目是很少的,通常选择边界路由器来作为 BGP 发言人
每一个 BGP 发言人除了运行 BGP 协议外,还要运行该自治系统内所使用的内部网关协议
一个 BGP 发言人与其他自治系统的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在该 TCP 连接的基础上,将 BGP 报文封装进 TCP 报文的数据部分,进而建立 BGP 会话,再利用 BGP 会话来交换路由信息
在 BGP 刚运行时,BGP 的邻站交换的是整个 BGP 路由表,但之后仅需要交换发生变化时新变化的部分,当所有的 BGP 发言人都互相交换网络可达性信息后,各 BGP 发言人就可以找出到达各自治系统的比较好的路由
BGP 采用路径向量路由选择算法,所交换的网络可达性信息,就是要到某个网络所要经过的一系列自治系统
如下图,给出了主干网与自治系统间的路径向量交换
【BGP 报文】
BGP 的运行是通过消息驱动的,总共有 $4$ 种类型,这些消息具有相同的报文首部,其格式如下图
其中,各字段含义如下:
- 标记:检查 BGP 对等体的同步信息是否完整,同时用于 BGP 验证的计算
- 长度:BGP 消息的总长度
- 类型:BGP 消息的类型,总共有 $4$ 个类型
BGP 消息总共有 $4$ 种类型,通过报文首部的类型字段制约,具体类型如下:
- 打开报文(Open):与相邻的另一个 BGP 发言人建立关系
- 更新报文(Update ):发送某一路由的信息,以及列出要撤销的多条路由
- 保活报文(Keepalive):确认打开报文、周期性证实邻站关系
- 通知报文(Notification):发送检测到的差错