4.6 互连网的路由选择协议
4.6.1 有关路由选择协议的几个基本概念
1、理想的路由算法
(1)关于"最佳路由"
不存在一种绝对的最佳路由算法。
所谓"最佳"只能是相对于某一种特定要求下得出的较为合理的选择而已。
(2)路由选择非常复杂
需要所有节点共同协调工作的。
环境不断变化,而这种变化有时无法事先知道。
当网络发生拥塞时,很难获得所需的路由选择信息。
(3)路由算法分类(自适应)
静态路由选择策略:非自适应路由选择; 不能及时适应网络状态的变化; 简单,开销较小。
动态路由选择策略:自适应路由选择; 能较好地适应网络状态的变化; 实现较为复杂,开销较大。
2、分层次的路由选择协议
(1)互联网:
采用自适应的(即动态的)、分布式路由选择协议。
把整个互联网划分为许多较小的自治系统 AS,采用分层次的路由选择协议。
分为 2 个层次: 自治系统之间的路由选择 或 域间路由选择 (interdomain routing); 自治系统内部的路由选择 或 域内路由选择 (intradomain routing);
(2)自治系统 AS (Autonomous System)
是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
(3)2 大类路由选择协议
内部网关协议 IGP:Interior Gateway Protocol,在一个自治系统内部使用的路由选择协议,常用:RIP,OSPF
外部网关协议 EGP:External Gateway Protocol,在不同自治系统之间进行路由选择时使用的协议,使用最多:BGP-4
(4)自治系统和内部网关协议、外部网关协议
自治系统之间的路由选择也叫做域间路由选择 (interdomain routing)。
自治系统内部的路由选择叫做域内路由选择 (intradomain routing) 。
4.6.2 内部网关协议 RIP
1、协议 RIP 的工作原理
路由信息协议 RIP (Routing Information Protocol) 是一种分布式的、基于距离向量的路由选择协议。
互联网的标准协议。
最大优点:简单。
要求网络中的每个路由器都要维护从它自己到其他每一个目的网络的距离记录。
(1)RIP"距离"的定义
路由器到直接连接的网络的距离 = 1。
路由器到非直接连接的网络的距离 = 所经过的路由器数 + 1。
RIP 协议中的"距离"也称为"跳数"(hop count),每经过一个路由器,跳数就加 1。
好路由 = "距离短"的路由。最佳路由 = "距离最短"的路由。
一条路径最多只能包含 15 个路由器。
"距离"的最大值为 16 时即相当于不可达。
RIP 不能在两个网络之间同时使用多条路由,只选择距离最短"的路由。
(2)RIP 协议的三个特点
仅和相邻路由器交换信息。
交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
按固定时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
(3)路由表的建立
路由器在刚刚开始工作时,路由表是空的。
然后,得到直接连接的网络的距离(此距离定义为 1)。
之后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
RIP 协议的收敛 (convergence) 过程较快。"收敛"就是在自治系统中所有的结点都得到正确的路由选择信息的过程。
(4)路由表主要信息和更新规则
路由表主要信息:
路由表更新规则:使用距离向量算法找出到达每个目的网络的最短距离。
2、距离向量算法
1)对每个相邻路由器(假设其地址为 X)发送过来的 RIP 报文,路由器:
(1) 修改 RIP 报文中的所有项目(即路由):把"下一跳"字段中的地址都改为 X,并把所有的"距离"字段的值加 1。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
若路由表中没有目的网络N,则把该项目添加到路由表中。否则
若路由表中网络 N 的下一跳路由器为 X,则用收到的项目替换原路由表中的项目。否则
若收到项目中的距离小于路由表中的距离,则用收到项目更新原路由表中的项目。否则
什么也不做。
(3) 若 3 分钟还未收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
(4) 返回。
2)算法基础:Bellman-Ford 算法(或 Ford-Fulkerson 算法)。
算法要点:
设 X 是结点 A 到 B 的最短路径上的一个结点。
若把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径 A→X 和 X→B 也都分别是结点 A 到 X 和结点 X 到 B 的最短路径。
3)RIP2 报文
(1)组成:首部和路由 2 个部分。
(2)路由部分:由若干个路由信息组成。每个路由信息共 20 个字节。
地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。
路由标记填入自治系统的号码。
后面为具体路由,指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
(3)一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是 4+20 x25=504 字节。如超过,必须再用一个 RIP 报文来传送。
(4)RIP2 具有简单的鉴别功能。
3、坏消息传播得慢
RIP 协议特点:好消息传播得快,坏消息传播得慢。
问题:坏消息传播得慢(慢收敛)。
当网络出现故障时,要经过比较长的时间才能将此信息(坏消息)传送到所有的路由器。
(1)RIP 协议的优缺点
优点: 实现简单,开销较小。
缺点: 网络规模有限。最大距离为 15(16 表示不可达)。 交换的路由信息为完整路由表,开销较大。 坏消息传播得慢,收敛时间过长。
4.6.3 内部网关协议 OSPF
开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的。
原理很简单,但实现很复杂。
使用了 Dijkstra 提出的最短路径算法 SPF。
采用分布式的链路状态协议 (link state protocol)。
现在使用 OSPFv2。
三个主要特点:
(1)采用洪泛法 (flooding),向本自治系统中所有路由器发送信息。
(2)发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
链路状态:说明本路由器都和哪些路由器相邻,以及该链路的度量 (metric)。
(3)当链路状态发生变化或每隔一段时间(如30分钟),路由器才用洪泛法向所有路由器发送此信息。
1、链路状态数据库 (link-state database)
每个路由器最终都能建立。
全网的拓扑结构图。
在全网范围内是一致的(这称为链路状态数据库的同步)。
每个路由器使用链路状态数据库中的数据构造自己的路由表(例如,使用Dijkstra的最短路径路由算法)。
链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。 重要优点:OSPF 更新过程收敛速度快。
2、(1)OSPF 将自治系统划分为两种不同的区域 (area)
(2)OSPF 中的路由器:区域边界路由器 ABR (area border router)
(3)OSPF 中的路由器:主干路由器 BR (backbone router)
(4)OSPF 中的路由器:自治系统边界路由器 ASBR (AS border router)
(5)划分区域优点和缺点
优点: 减少了整个网络上的通信量。 减少了需要维护的状态数量。
缺点: 交换信息的种类增多了。 使 OSPF 协议更加复杂了。
分层次划分区域的好处: 使每一个区域内部交换路由信息的通信量大大减小,因而使 OSPF 协议能够用于规模很大的自治系统中。
(6)其他特点
对于不同类型的业务可计算出不同的路由。
可实现多路径间的负载均衡(load balancing)。
所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
支持可变长度的子网划分和无分类编址 CIDR。 32 位的序号,序号越大状态就越新。
全部序号空间在 600 年内不会产生重复号。
3、OSPF 的五种分组类型
问候 (Hello) 分组。
数据库描述 (Database Description) 分组。
链路状态请求 (Link State Request) 分组。
链路状态更新 (Link State Update) 分组。
链路状态确认 (Link State Acknowledgment)分组。
1)OSPF 分组用 IP 数据报传送
2)OSPF 工作过程
(1)确定邻站可达。
相邻路由器每隔 10 秒钟要交换一次问候分组。
若有 40 秒钟没有收到某个相邻路由器发来的问候分组,则可认为该相邻路由器是不可达的。
(2)同步链路状态数据库。
同步:指不同路由器的链路状态数据库的内容是一样的。
两个同步的路由器叫做完全邻接的 (fully adjacent) 路由器。
注:不是完全邻接的路由器:它们虽然在物理上是相邻的,但其链路状态数据库并没有达到一致。
(3)更新链路状态。
只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法向全网更新链路状态。
为确保链路状态数据库与全网的状态保持一致,OSPF 还规定:每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
注:OSPF 链路状态只涉及相邻路由器,与整个互联网的规模并无直接关系,因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。 OSPF 没有"坏消息传播得慢"的问题,收敛数度快。
3)指定的路由器 DR
多点接入的局域网采用了指定的路由器 DR (designated router) 的方法,使广播的信息量大大减少。
指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。
4.6.4 外部网关协议 BGP
BGP 是不同自治系统的路由器之间交换路由信息的协议。
BGP 较新版本是 2006 年 1 月发表的 BGP-4(BGP 第 4 个版本),即 RFC 4271 ~ 4278。
可以将 BGP-4 简写为 BGP。
1、协议 BGP 的主要特点
(1)用于自治系统 AS 之间的路由选择。
(2)只能是力求选择出一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由。
互联网的规模太大,使得自治系统AS之间路由选择非常困难。
自治系统AS之间的路由选择必须考虑有关策略。
(3)采用了路径向量 (path vector) 路由选择协议。
2、1)BGP 发言者 (BGP speaker)
2)eBGP 连接和 iBGP 连接
(1)在 AS 之间, BGP 发言者在半永久性 TCP 连接(端口号为179)上建立 BGP 会话(session)。这种连接又称为 eBGP 连接。
(2)在 AS 内部,任何相互通信的两个路由器之间必须有一个逻辑连接(也使用 TCP 连接)。AS 内部所有的路由器之间的通信是全连通的。这种连接常称为 iBGP 连接。
eBGP (external BGP) 连接:运行 eBGP 协议,在不同 AS 之间交换路由信息。
iBGP (internal BGP) 连接:运行 iBGP 协议, 在 AS 内部的路由器之间交换 BGP 路由信息。
3)IGP、iBGP 和 eBGP 的关系
(1)在 AS 内部运行: 内部网关协议 IGP(可以是协议 OSPF 或 RIP)。 协议 iBGP。
(2)在 AS 之间运行: 协议 eBGP。
4) eBGP 和 iBGP
(1)同一个协议 BGP(使用的报文类型、使用的属性、使用的状态机等都完全一样)。
(2)但它们在通报前缀时采用的规则不同:
在 eBGP 连接的对等端得知的前缀信息,可以通报给一个 iBGP 连接的对等端。反过来也是可以的。
但从 iBGP 连接的对等端得知的前缀信息,则不能够通报给另一个 iBGP 连接的对等端。
R3 从 eBGP 连接的对等端 R4 得到的前缀信息可以通报给 iBGP 连接的对等端 R1 或 R2。
R3 从 iBGP 连接的对等端 R1 和 R2 得到的前缀信息可以通报给 eBGP 连接的对等端 R4。
但 R3 从 iBGP 连接的对等端 R1 得到的前缀信息不允许再通报给另一个 iBGP 连接的对等端 R2。
5)BGP 路由信息
(1)BGP 路由 = [ 前缀, BGP属性 ] = [ 前缀, AS-PATH, NEXT-HOP ]
(2)前缀:指明到哪一个子网(用 CIDR 记法表示)。
(3)BGP 属性:最重要的两个属性是自治系统路径 AS-PATH 、下一跳 NEXT-HOP。
3、三种不同的自治系统 AS
末梢 AS:不会把来自其他 AS 的分组再转发到另一个 AS。必须向所连接的 AS 付费。
多归属 AS (multihomed AS):同时连接到两个或两个以上的 AS。增加连接的可靠性。
穿越 AS:为其他 AS 有偿转发分组。
对等 AS:经过事先协商的两个 AS,彼此之间的发送或接收分组都不收费。
注:BGP 路由如何避免兜圈子?
4、BGP 的路由选择
(1)本地偏好 (local preference) 值最高的路由 (默认值=100)
(2)AS 跳数最小的路由
(3)使用热土豆路由选择算法(分组在 AS 内的转发次数最少)
(4)路由器 BGP ID 数值最小的路由。具有多个接口的路由器有多个 IP 地址,BGP ID 就使用该路由器的 IP 地址中数值最大的一个。
5、BGP-4 的四种报文
OPEN (打开):用来与相邻的另一个 BGP 发言者建立关系,使通信初始化。
UPDATE (更新):用来通告某一路由的信息,以及列出要撤销的多条路由。
KEEPALIVE (保活):用来周期性地证实邻站的连通性。
NOTIFICATION (通知):用来发送检测到的差错。
BGP 报文具有通用首部
4.6.5 路由器的构成
路由器工作在网络层,用于互连网络。
是互联网中的关键设备。
路由器的主要工作:转发分组。
把从某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
1、路由器的结构
1)"转发"和"路由选择"的区别
(1)转发
根据转发表将用户的 IP 数据报从合适的端口转发出去。
仅涉及到一个路由器。
转发表是从路由表得出的。
转发表必须包含完成转发功能所必需的信息,每一行必须包含从要到达的目的网络到输出端口和某些 MAC 地址信息(如下一跳的以太网地址)的映射。
(2)路由选择
按照路由选择算法,根据网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个的路由表。 涉及到很多路由器。
路由表一般仅包含从目的网络到下一跳(用 IP 地址表示)的映射。
2)输入端口对线路上收到的分组的处理
3)输出端口将交换结构传送来的分组发送到线路
2、交换结构
常用交换方法有三种:通过存储器、通过总线、通过纵横交换结构。
1)通过存储器
(1)当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后分组就从输入端口复制到存储器中。
(2)路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。
(3)若存储器的带宽(读或写)为每秒 M 个分组,那么路由器的交换速率(即分组从输入端口传送到输出端口的速率)一定小于 M/2。
2)通过总线
(1)数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。
(2)当分组到达输入端口时若发现总线忙,则被阻塞而不能通过交换结构,并在输入端口排队等待。
(3)因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽就受总线速率的限制。
3)通过纵横交换结构 (crossbar switch fabric)
常被称为互连网络 (interconnection network)。
(1)它有 2N 条总线,控制交叉节点可以使 N 个输入端口和 N 个输出端口相连接。
(2)当输入端口收到一个分组时,就将它发送到水平总线上。
(3)若通向输出端口的垂直总线空闲,则将垂直总线与水平总线接通,把该分组转发到这个输出端口。若输出端口已被占用,分组在输入端口排队等待。
特点:是一种无阻塞的交换结构,分组可以转发到任何一个输出端口,只要这个输出端口没有被别的分组占用。