- 路由选择协议
★★★4.6 路由选择协议
4.6.1 路由选择协议概述
★路由选择
静态路由:由人工配置的网络路由、默认路由、特定主机路由、 黑洞路由等都属于静态路由。
动态路由:路由器通过路由选择协议自动获取路由信息。

因特网的路由选择协议的主要特点

自适应
- 因特网采用动态路由选择,能较好地适应网络状态的变化。
分布式
- 因特网中的各路由器,通过相互间的信息交互,共同完成路由信息的获取和更新。
★分层次
将整个因特网划分成许多较小的自治系统 AS(Autonomous System)。
自治系统外部的路由选择简称为域间路由选择;自治系统内部的路由选择简称为域内路由选择。
域间路由选择使用外部网关协议 EGP(Exterior Gateway Protocol) 这个类别的路由选择协议;域内路由选择使用内部网关协议 IGP(Interior Gateway Protocol) 这个类别的路由选择协议。
在一个自治系统内部使用的具体的内部网关协议与因特网中其他自治系统中选用何种内部网关协议无关。

常用的路由选择协议

★路由器的基本结构
路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组。
路由器主要分为两大部分:路由选择部分和分组转发部分。
路由选择部分
- 核心部件是路由选择处理机,其任务是根据所使用的路由选择协议,周期性地与其他路由器进行路由信息的交互,来更新路由表。
分组转发部分
- 分组转发部分由一组输入端口、一组输出端口以及交换结构(含有输入缓冲区和输出缓冲区)三部分构成。


- 注意:路由器的端口一般都具有输入和输出的功能,上面这么表示是为了更好地演示路由器的基本工作过程。
★4.6.2 路由信息协议RIP的基本工作原理
★路由信息协议RIP
路由信息协议 RIP(Routing Information Protocol)是内部网关协议 IGP 中最先得到广泛使用的协议之一。
RIP 要求自治系统 AS 内的每一个路由器都要维护从它自己到 AS 内其他每一个网络的距离记录,这是一组距离,称为 “距离向量 D-V(Distance-Vector)”。
RIP 使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。

在 RIP 协议中,认为好的路由就是 “距离短” 的路由,也就是所通过路由器数量最少的路由。
注意:在 RIP 协议中,允许一条路径最多只能包含 15 个路由器,“距离” 等于 16 时相当于不可达。

★RIP的三个要点
RIP 包含以下三个要点:
- 和谁交换信息:仅和相邻路由器交换信息;
- 交换什么信息:自己的路由表;
- 何时交换信息:周期性交换(例如每 30s 发送一次 RIP 更新报文)。

RIP的基本工作过程
如下图所示:
- 路由器刚开始工作时,只知道自己到直连网络的距离为 1;
- 然后每个路由器仅和相邻路由器周期性地交换并更新路由信息;
- 若干次交换和更新后,每个路由器都知道到达本 AS 内各网络地最短距离和下一跳地址,称为收敛。

★RIP的路由条目更新规则
如下图所示,路由器 C 和 D 是相邻路由器,它们之间可以周期性地交换并更新路由信息。
假设路由器 C 的 RIP 更新报文的发送周期到了,则路由器 C 将自己路由表中的相关路由信息封装到 RIP 更新报文中发送给路由器 D(可以看作是路由器 C 将自己的路由表发送给了路由器 D),路由器 D 收到后对其进行改造:

路由器 D 会将收到的路由器 C 的路由表中到达各目的网络的下一跳都改为 C,然后把每一条路由条目的距离都加 1(即,若路由器 D 要到达这些目的网络,则它可以通过路由器 C 来到达这些网络,只是由于要经过路由器 C,所以距离都加 1);

然后路由器 D 就可以根据改造后的路由器 C 的路由表来更新自己的路由表。

坏消息传得慢
如下图所示,当与 R1 直连的网络 N1 出现故障后,R1 会将自己路由表中对应于 N1 的路由条目的距离改为 16,表示 N1 不可达;
当 R1 的 RIP 更新周期到达后,R1 会发送自己的路由表给 R2;与此同时,R2 也可能将自己的路由表发送给 R1。

若 R2 先于 R1 发送自己的 RIP 更新报文,则 R1 就会 “被谣言误导”,认为可以通过 R2 来到达 N1;然后 R1 又将自己的 RIP 更新报文发送给 R2,R2 就会 “被谣言误导”,认为可以通过 R1 来到达 N1(但实际上这时 N1 是故障的,无法到达);如下图所示,最后 R1 的路由表和 R2 的路由表中关于 N1 的距离都变为 16,R1 和 R2 才知道 N1 不可达,最后才收敛。

在上述过程中,R1 和 R2 之间出现路由环路问题,即存在 “坏消息传得慢” 问题。
“坏消息传播得慢” 又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。



之所以选项是 B,是因为 R2 接收到了 R1 的 “谣言”。
★★★4.6.3 开放最短路径优先协议OSPF的基本工作原理
开放最短路径优先协议OSPF
开放最短路径优先协议 OSPF(Open Shortest Path First),是为克服 RIP 的缺点而开发出来的。
- 开放:OSPF 协议不受某一家厂商控制,而是公开发表的;
- 最短路径优先:使用了 Dijkstra 提出的最短路径算法。

★链路状态
- 链路状态:本路由器都和哪些路由器相邻,以及相应链路的 “代价”。
链路代价

问候分组

★链路状态通告、链路状态更新分组、链路状态数据库
链路状态通告 LSA(Link State Advertisement),包含以下内容:
- 直连网络的链路状态信息;
- 邻居路由器的链路状态信息。

LSA 被封装在链路状态更新分组 LSU(Link State Update)中,采用洪泛法发送,即收到链路状态更新分组 LSU 的路由器,将从自己的其他所有接口转发该分组,最终,系统中其他所有路由器都会收到该分组。

使用 OSPF 的每个路由器都有一个链路状态数据库 LSDB(Link State Database),用于存储 LSA。
通过各路由器洪泛发送封装有自己 LSA 的 LSU 分组,各路由器的 LSDB 最终将达到一致。
然后,使用 OSPF 的各路由器会基于最终达到一致的 LSDB 进行最短路径优先 SPF 计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。

OSPF分组类型

★OSPF的基本工作过程
相邻路由器之间周期性发送问候分组,以便建立和维护邻居关系;
建立邻居关系后,给邻居路由器发送数据库描述分组,也就是将自己的链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器;
假设 R1 收到 R2 的数据库描述分组后,发现自己缺少其中的某些链路状态项目,于是就给 R2 发送链路状态请求分组,R2 收到后,将 R1 所缺少的链路状态项目的详细信息,封装在链路状态更新分组中发送给 R1,R1 收到后,将这些所缺少的链路状态项目的详细信息添加到自己的链路状态数据库中,并给 R2 发送链路状态确认分组。同理,R2 也可以向 R1 请求自己所缺少的链路状态项目的详细信息。
最终,R1 和 R2 的链路状态数据库将达到一致,即链路状态数据库达到同步。
每 30 分钟或链路状态发生变化时,链路状态发生变化的路由器都会洪泛发送自己的链路状态更新分组,以达到新情况下的链路状态数据库同步。

多点接入网络中路由器邻居关系的建立

区域
为了使 OSPF 能够用于规模很大的网络,OSPF 把一个自治系统再划分为若干个更小的范围, 叫做**区域(Area)**。
使用区域的好处是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,可以减少整个网络上的通信量。

4.6.4 边界网关协议BGP的基本工作原理
边界网关协议BGP
前面已经说过,因特网采用分层次的路由选择协议:
- 内部网关协议 IGP (例如路由信息协议 RIP 或开放最短路径优先 OSPF ),该协议设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络,无需考虑自治系统外部其他方面的策略;
- 外部网关协议 EGP (例如边界网关协议BGP),在不同自治系统内,度量路由的 “代价” (距离、带宽、费用等)可能不同,因此,对于自治系统之间的路由选择,使用 “代价” 作为度量来寻找最佳路由是不行的;而且,自治系统之间的路由选择还必须考虑相关策略(政治、经济、安全等)。因此,边界网关协议 BGP(Border Gateway Protocol)只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子)而并非要寻找一条最佳路由。

BGP的基本工作原理


BGP适用于多级结构的因特网
