4-6-4 边界网关协议BGP的基本工作原理
本节课我们介绍边界网关协议 BGP 的基本工作原理。
因特网采用分层次的路由选择协议
在之前的课程中,我们已经介绍过了因特网采用分层次的路由选择协议。
内部网关协议IGP
- 这一类别的协议用于自治系统内部的路由选择,典型的协议有路由信息协议RIP和开放最短路径优先OSPF。
- 他们都是设法使分组在一个自治系统内部尽可能有效的从源网络传输到目的网络,无需考虑自治系统外部其他方面的策略。
外部网关协议EGP
- 这一类别的协议用于自治系统之间的路由选择,典型的协议是边界网关协议 BGP 。
- 在不同自治系统内度量路由的代价(距离、带宽、费用等)可能不同,因此对于自治系统之间的路由选择使用代价作为度量来寻找最佳路由是不可行的。
- 自治系统之间的路由选择还必须考虑相关策略(政治、经济、安全等)
- 边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(也就是不能兜圈子),而并非要寻找一条最佳路由
自治系统的连接关系及不同自治系统内度量路由的代价
我们来举例说明各自治系统的连接关系,如图所示。

其中
- 自治系统AS1将时延作为度量
- AS2将距离,也就是跳数作为度量
- AS3将链路带宽作为度量
那么AS4 可以通过哪些路径到达 AS5 ?

- AS4 可以通过 AS1, AS3 到达 AS5

- AS4 可以通过 AS1, AS2 到达 AS5

- 当然还可以有其他路径,我们就不再一一列出了。
那么这些路径中哪一个是最佳路由呢?
由于没有统一的路由度量,因此寻找最佳路由是无意义的。
自治系统之间的路由选择还必须考虑相关策略(政治、经济、安全等)
自治系统之间的路由选择还必须考虑相关策略。例如,我国国内的站点在互相传送数据报时,不应经过国外兜圈,特别是不要经过某些对我国的安全有威胁的国家。

又例如,自治系统 AS4 要发送数据报给 AS5。本来最好是依次经过 AS1, AS3,但是 AS3 不愿意让这些数据报经过自己自治系统内的网络,因为这是那两个自治系统的事情,与我这个自治系统无关。而 ASR 愿意让某些相邻自治系统的数据报通过自己的网络,只要支付相应的服务费用即可。

由此可见,自治系统之间的路由选择协议应当允许使用多种路由选择策略,这些策略包括政治、经济、安全等,他们都是由网络管理人员对每一个路由器进行设置的。但这些策略并不是自治系统之间的路由选择协议本身。
边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(也就是不能兜圈子),而并非要寻找一条最佳路由
基于上述情况,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由,也就是不能兜圈子,而并非要寻找一条最佳路由。我们来举例说明:
- 在配置 BGP 时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的 “BGP 发言人”
一般来说,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器。如下图所示:

- 不同自治系统的 BGP 发言人要交换路由信息,首先必须建立 TCP 连接,端口号为179
- 在此 TCP 连接上交换 BGP 报文以建立 BGP 会话
- 利用 BGP 会话交换路由信息,例如增加新的路由或撤销过时的路由以及报告出错的情况等。
- 使用 TCP 连接交换路由信息的两个 BGP 发言人彼此称为对方的邻站或对等站。

- BGP 发言人除了运行 BGP 协议外,还必须运行自己所在自治系统所使用的内部网关协议,例如 OSPF 或RIP。
- BGP 发言人交换网络可达性的信息(也就是要到达某个网络所要经过的一系列自治系统)。
- 当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略,从收到的路由信息中找出到达各自治系统的较好的路由,也就是构造出树形结构,不存在环路的自治系统连通图

如图所示,这是自治系统 AS1 的某个 BGP 发言人构造出的自治系统连通图。
- 边界网关协议 BGP 适用于多级结构的因特网,这里我们给出一个 BGP 发言人交换路径向量的例子
自治系统 AS2 的 BGP 发言人通知主干网的 BGP 发言人:要到达网络,N1、N2、 N3 和 N4 可经过AS2

主干网在收到这个通知后就发出通知,要到达网络N1,N2、 N3 和N4,可沿路径 (AS1,AS2)

这里的路径 (AS1,AS2)称为路径向量。
自治系统 AS3收到这条路径向量信息后,如果 AS3 自身也包含在其中,则不能采用这条路径,否则会兜圈子。
BGP版本4中规定的4种报文
接下来我们介绍 BGP-4 中规定的 4 种报文。
OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。
NOTIFICATION(通知)报文:用来发送检测到的差错。
在 BGP 协议刚刚运行时, BGP 的邻站交换整个 BGP 路由表,但以后只需要在发生变化时更新有变化的部分,这样做对节省网络带宽和减少路由器的处理开销都有好处。
习题
习题1

解析:图中的 R1 和 R2 分别位于两个不同的自治系统 AS1 和 AS2 中,自治系统之间需要使用外部网关协议 EGP 这一类协议,具体为边界网关协议 BGP ,目前使用最多的版本是BGP-4。
BGP4 的报文被封装在 TCP 报文段中进行传说。
习题2

解析:本题并没有什么计算过程和解答技巧,需要大家记住上图所示的封装关系即可。
本节小结

说明:BGP 协议非常复杂,很多内容都超出了本系列课程的教学目标,因此不再深入讨论,有兴趣可查阅 RFC 4271 文档。