🎯 课程摘要:BGP(边界网关协议) 是用于自治系统之间路由选择的外部网关协议(EGP)。由于不同 AS(自治系统) 度量路由的代价不同且需考虑政治、经济、安全等策略,BGP(边界网关协议) 只能力求寻找一条能够到达目的网络且比较好的路由(不兜圈子),而非最佳路由。BGP 基于 TCP(端口号 179) 交换路径向量信息。
- 协议类别:BGP(边界网关协议) 属于外部网关协议 EGP(External Gateway Protocol),用于 AS(自治系统) 之间的路由选择。
- 前置知识:
- RIP(路由信息协议) 与 OSPF(开放最短路径优先) 是用于 AS 内部路由选择的内部网关协议(IGP)。
- BGP 是用于 AS 之间路由选择的外部网关协议(EGP)。
- 度量差异:不同 AS(自治系统) 内度量路由的代价可能不同,例如 AS1 用时延、AS2 用跳数、AS3 用链路带宽。
- 无法统一:由于没有统一的路由度量,对于 AS 之间的路由选择,使用统一代价作为度量来寻找最佳路由是行不通的,寻找最佳路由是无意义的。
- 策略内容:政治、经济、安全等,由网络管理人员对每一个路由器进行设置。
- ⚠️ 注意:这些策略并不是 AS 之间路由选择协议本身,而是由管理人员配置。
- 示例 1(政治/安全):我国国内站点互相传送数据报时不应经过国外兜圈,特别是不要经过某些对国家安全有威胁的国家。
- 示例 2(经济):AS4 数据报要去往 AS5,本来可经过 AS1 和 AS3;但 AS3 不愿让这些数据报经过自己内部网络(与 AS3 无关);而 AS2 愿意让相邻 AS 的数据包通过,只要支付相应服务费用即可。
- 核心结论:BGP(边界网关协议) 只能是力求寻找一条能够到达目的网络且比较好的路由(即不能兜圈子),而并非要寻找一条最佳路由。
- 适用范围:BGP 适用于多级结构的因特网。
- BGP 发言人:配置 BGP 时,每个 AS(自治系统) 的管理员要选择至少一个路由器作为该 AS 的 BGP 发言人。
- 连接方式:两个 BGP 发言人一般通过一个共享网络连接在一起,BGP 发言人往往就是 BGP 边界路由器。
- TCP 连接:不同 AS 的 BGP 发言人要交换路由信息,首先必须建立 TCP 连接,端口号为 179。
- BGP 会话:在此 TCP 连接上交换 BGP 报文以建立 BGP 会话,利用 BGP 会话交换路由信息(增加新路由、撤销过时路由、报告出错等)。
- 对等站:使用 TCP 连接交换路由信息的两个 BGP 发言人彼此成为对方的临站或对等站。
- ⚠️ 协议运行要求:BGP 发言人除了运行 BGP 协议外,还必须运行自己所在 AS 所使用的内部网关协议(例如 RIP 或 OSPF)。
- 交换内容:BGP 发言人交换网络可达性的信息,即要到达某个网络所要经过的一系列 AS(自治系统)。
- 构造结果:各 BGP 发言人根据所采用的策略,从收到的路由信息中找出到达各 AS 的较好的路由,构造出树形结构且不存在环路的 AS 连通图。
- 路径向量示例:
- AS2 的 BGP 发言人通知主干网的 BGP 发言人:要到达网络 N1、N2、N3、N4 可经过 AS2。
- 主干网 BGP 发言人收到后,向 AS3 的 BGP 发言人发出通知:要到达 N1、N2、N3、N4 可沿路径 AS1 → AS2(路径向量)。
- ⚠️ 防环机制:AS3 的 BGP 发言人收到该路径向量信息后,如果发现 AS3 自身也包含在其中,则不能采用这条路径,否则会兜圈子。
BGP4 是目前使用最多的版本,在 RFC4271 文档中规定了 BGP4 的四种报文:
| 报文类型 | 作用 |
|---|
| 打开报文(OPEN) | 用来与相邻的另一个 BGP 发言人建立关系,进行通信初始化 |
| 保活报文(KEEPALIVE) | 用来周期性地证实临站的连通性 |
| 更新报文(UPDATE) | 用来通告某一条路由的信息,以及列出要撤销的多条路由 |
| 通知报文(NOTIFICATION) | 用来发送检测到的差错 |
| 对比项 | RIP(路由信息协议) | OSPF(开放最短路径优先) | BGP(边界网关协议) |
|---|
| 协议类别 | 内部网关协议 IGP | 内部网关协议 IGP | 外部网关协议 EGP |
| 算法基础 | 距离向量 | 链路状态 | 路径向量 |
| 度量 | 跳数 | 代价 | 策略(可达性而非最优性) |
| 传输层封装 | UDP,端口 520 | 不使用运输层 | TCP,端口 179 |
| 网络层封装 | IP 数据报 | IP 数据报,协议号 89 | IP 数据报 |
| 封装角度看所属层 | 应用层 | 网际层(网络层) | 应用层 |
| 路由选择功能所属层 | 网际层 | 网际层 | 网际层 |
| 适用范围 | AS 内 | AS 内 | AS 之间 |
- ⚠️ 关键区分:
- 从实现路由选择功能的角度看,三个协议都属于网络层。
- 从数据包按网络体系结构逐层封装的角度看,RIP 和 BGP 属于应用层,OSPF 属于网络层。
- BGP(边界网关协议) = 外部网关协议 + 路径向量 + TCP 端口 179 + 策略路由。
- 设计目标是寻找"比较好"的可达路由(不兜圈子),而非"最佳"路由。
- BGP 发言人通过 TCP 连接交换路径向量,发现自身在路径中则拒绝该路径以防环。
- 四种报文:打开、保活、更新、通知。
- 封装角度:RIP/BGP 属应用层,OSPF 属网络层;功能角度三者均属网络层。
- (2013 408 题 47 第三问) R1 与 R2 被划分到不同的 AS(自治系统),二者之间的路由选择应使用外部网关协议(EGP),具体即 BGP(边界网关协议),不同 AS 的 BGP 发言人通过建立 TCP 连接(端口 179) 交换 BGP 报文。
- (2017 408) 关于 RIP、OSPF、BGP 的封装关系:从实现路由选择功能角度看三者都属于网络层;从数据包按体系结构逐层封装角度看,RIP 和 BGP 属于应用层,OSPF 属于网络层。(答案:D)
- 为什么 AS 之间的路由选择不能像 AS 内部那样寻找"最佳路由"?BGP(边界网关协议) 的设计目标是什么?
- BGP 发言人如何利用路径向量避免路由环路?
- BGP4 规定了哪四种报文?各自的作用是什么?