路由选择协议:帮助路由器构建路由表

基本概念

理想的路由算法

  • 算法必须是正确的和完整的。 这里的“正确”是指沿着各路由表所指引的路由,一定可以找到目的网络和目的主机。
  • 算法在计算上应简单。 路由选择不应该增加太多开销
  • 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
  • 算法应具有稳定性。 就是在通信量和网络拓扑相对稳定的情况下,路由算法应收敛于一个可接受的值。
  • 算法应是公平的。 算法对所有用户都是平等的。
  • 算法应是最佳的。算法可以找出最好的路由。

关于“最佳路由”

  • 不存在一种绝对的最佳路由算法。
  • 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
    实际的路由选择算法,应尽可能接近于理想的算法。
  • 路由选择是个非常复杂的问题
    • 它是网络中的所有结点共同协调工作的结果。
    • 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。

从路由算法的自适应性考虑

  • 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
  • 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。

分层次的路由选择协议

互联网采用分层次的路由选择协议。这是因为:
(1) 互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。
(2) 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。

自治系统 AS (Autonomous System)

  1. 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
  2. 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
    计算机网络 互联网的路由选择协议——RIP_计算机网络

互联网有两大类路由选择协议

内部网关协议 IGP (Interior Gateway Protocol)

  1. 在一个自治系统内部使用的路由选择协议。
  2. 目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。

外部网关协议 EGP (External Gateway Protocol)

  1. 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。
  2. 在外部网关协议中目前使用最多的是 BGP-4。

自治系统之间的路由选择也叫做域间路由选择 (interdomain routing),在自治系统内部的路由选择叫做域内路由选择 (intradomain routing) 。

计算机网络 互联网的路由选择协议——RIP_计算机网络_02
需要注意的是,互联网的早期 RFC 文档中未使用**“路由器**”而是使用“网关”这一名词。但是在新的 RFC 文档中又使用了“路由器”这一名词。应当把这两个术语当作同义词。
IGP 和 EGP 是协议类别的名称。但 RFC 在使用 EGP 这个名词时出现了一点混乱,因为最早的一个外部网关协议的协议名字正好也是 EGP。因此在遇到名词 EGP 时,应弄清它是指旧的协议 EGP 还是指外部网关协议 EGP 这个类别。

互联网的路由选择协议

  • 内部网关协议 IGP:具体的协议有多种,如 RIP 和 OSPF 等。
  • 外部网关协议 EGP:目前使用的协议就是 BGP。
    计算机网络 互联网的路由选择协议——RIP_计算机网络_03

内部网关协议 RIP

工作原理

  • 路由信息协议 RIP (Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议。
  • RIP 是一种分布式的、基于距离向量的路由选择协议。
  • RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

“距离”的定义

  • 从一个路由器到直接连接的网络的距离定义为 1。
  • 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
  • RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
  • 这里的“距离”实际上指的是“最短距离”。
  • RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
  • RIP 允许一条路径最多只能包含 15 个路由器。
  • “距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。
  • RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

RIP 协议的三个特点

  • 仅和相邻路由器交换信息。
  • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
  • 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。

路由表的建立

  • 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1)。它的路由表是空的。
  • 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
  • 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
  • RIP 协议的收敛 (convergence) 过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程。

距离向量算法

路由器收到相邻路由器(其地址为 X)的一个 RIP 报文:
(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
     若项目中的目的网络不在路由表中,则把该项目加到路由表中。
     否则
          若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
           否则
               若收到项目中的距离小于路由表中的距离,则进行更新,
               否则,什么也不做。
(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
(4) 返回。

  • 距离向量算法的基础就是 Bellman-Ford 算法(或 Ford-Fulkerson 算法)。
  • 这种算法的要点是这样的:
    设X是结点 A 到 B 的最短路径上的一个结点。
    若把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径 A→X 和 X→B 也都分别是结点 A 到 X 和结点 X 到 B 的最短路径。

路由器之间交换信息与路由表更新

  • RIP 协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
  • 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。

RIP2 协议的报文格式

计算机网络 互联网的路由选择协议——RIP_计算机网络_04

  • RIP2 报文由首部和路由部分组成。
  • RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。
  • 路由标记填入自治系统的号码,这是考虑使 RIP 有可能收到本自治系统以外的路由选择信息。
  • 再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
  • 一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是 4+20 x25=504 字节。如超过,必须再用一个 RIP 报文来传送。
  • RIP2 具有简单的鉴别功能。
    • 若使用鉴别功能,则将原来写入第一个路由信息(20 个字节)的位置用作鉴别。
    • 在鉴别数据之后才写入路由信息,但这时最多只能再放入 24 个路由信息。

RIP 协议特点:好消息传播得快,坏消息传播得慢。
RIP 存在的一个问题:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器。

RIP 协议的优缺点

  • 优点:
    • 实现简单,开销较小。
  • 缺点:
    • RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
    • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
    • “坏消息传播得慢”,使更新过程的收敛时间过长。