TCP/IP详解 卷一 动态路由选路协议
发表于:2025-10-10 | 分类: 学习
动态路由选路协议

概述

我们主要讨论RIP,即选路信息协议(Routing Infromation Protocol),大多数TCP / IP实现都提供这个应用广泛的协议。然后讨论两种新的选路协议, OSPF和BGP。最后研究一种名叫无分类域间选路的新的选路技术。

动态选路

当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路。路由器之间必须采用选路协议进行通信,这样的选路协议有很多种。路由器上有一个进程称为路由守护程(routing daemon),它运行选路协议,并与其相邻的一些路由器进行通信。路由守护程序根据它从相邻路由器接收到的信息,更新内核中的路由表。

路由守护程序将选路策略( routing policy)加入到系统中,选择路由并加入到内核的路由表中。如果守护程序发现前往同一信宿存在多条路由,那么它(以某种方法)将选择最佳路由并加入内核路由表中。如果路由守护程序发现一条链路已经断开(可能是路由器崩溃或电话线路不好),它可以删除受影响的路由或增加另一条路由以绕过该问题。

Internet是以一组自治系统(A S,Autonomous System)的方式组织的,每个自治系统通常由单个实体管理。常常将一个公司或大学校园定义为一个自治系统。 每个自治系统可以选择该自治系统中各个路由器之间的选路协议。这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(intradomain routing protocol)。

Unix选路守护程序

Unix系统上常常运行名为routed路由守护程序。几乎在所有的 TCP / IP实现中都提供该程序。该程序只使用 RIP进行通信,

另一个程序是 gated。IGP和EGP都支持它。

RIP:选路信息协议

RIP报文包含中在UDP数据报中,如图:

下图给出了使用 IP地址时的 RIP报文格式:

命令字段为1表示请求,2表示应答。还有两个舍弃不用的命令( 3和4),两个非正式的命令:轮询( 5)和轮询表项( 6)。

请求表示要求其他系统发送其全部或部分路由表。应答则包含发送者全部或部分路由表。

版本字段通常为1,而第2版RIP将此字段设置为2。

紧跟在后面的20字节指定地址系列( address family)(对于IP地址来说,其值是 2)、IP地址以及相应的度量。在本节的后面可以看出, RIP的度量是以跳计数的。

采用这种 20字节格式的RIP报文可以通告多达 25条路由。上限25是用来保证RIP报文的总长度为20×25 + 4 = 504,小于512字节。由于每个报文最多携带 25个路由,因此为了发送整个路由表,经常需要多个报文。

RIP所使用的度量是以跳 ( hop )计算的。所有直接连接接口的跳数为1。跳数的最大值是 15,这意味着 RIP只能用在主机间最大跳数值为 15的AS内。度量为 16表示到无路由到达该IP地址。

这种方法看起来很简单,但它有一些缺陷。首先,RIP没有子网地址的概念。次,在路由器或链路发生故障后,需要很长的一段时间才能稳定下来。这段时间通常需要几分钟。在这段建立时间里,可能会发生路由环路。

采用跳数作为路由度量忽略了其他一些应该考虑的因素。同时,度量最大值为15则限制了可以使用RIP的网络的大小。

RIP版本2

RIP2对RIP的定义进行了扩充,这些扩充并不改变协议本身,而是利用一些标注为“必须为0”的字段来传递一些额外的信息。如果RIP忽略这些必须为0的字段,那么,RIP和RIP2可以互操作。

下图是RIP2定义的图:

选路域 (routing domain)是一个选路守护程序的标识符,它指出了这个数据报的所有者。

选路标记 (routing tag)是为了支持外部网关协议而存在的。它携带着一个EGP和BGP的自治系统号。

每个表项的子网掩码应用于相应的IP地址上。下一站IP地址指明发往目的IP地址的报文该发往哪里。该字段为0意味着发往目的地址的报文应该发给发送 RIP报文的系统。

OSPF:开放最短路径优先

OSPF是除 RIP外的另一个内部网关协议。它克服了 RIP的所有限制。

与采用距离向量的 RIP协议不同的是, OSPF是一个链路状态协议。距离向量的意思是,RIP发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接收到邻站的这些距离向量来更新自己的路由表。

在一个链路状态协议中,路由器并不与其邻站交换距离信息。它采用的是每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。

从实际角度来看,二者的不同点是链路状态协议总是比距离向量协议收敛更快。

OSPF与RIP(以及其他选路协议)的不同点在于, OSPF直接使用IP。也就是说,它并不使用UDP或TCP。对于IP首部的protocol字段,OSPF有其自己的值

OSPF有着一些优于RIP的特点:

  1. OSPF可以对每个 IP服务类型计算各自的路由集。这意味着对于任何目的,可以有多个路由表表项,每个表项对应着一个 IP服务类型。
  2. 给每个接口指派一个无维数的费用。可以通过吞吐率、往返时间、可靠性或其他性能来进行指派。可以给每个 IP服务类型指派一个单独的费用。
  3. 当对同一个目的地址存在着多个相同费用的路由时,OSPF在这些路由上平均分配流量。我们称之为流量平衡
  4. OSPF支持子网:子网掩码与每个通告路由相连。这样就允许将一个任何类型的 IP地址分割成多个不同大小的子网。到一个主机的路由是通过全 1子网掩码进行通告的。默认路由是以 IP地址为0.0.0.0、网络掩码为全0进行通告的。
  5. 路由器之间的点对点链路不需要每端都有一个IP地址,我们称之为无编号网络。这样可以节省IP地址—现在非常紧缺的一种资源。
  6. 采用了一种简单鉴别机制。可以采用类似于 RIP2机制的方法指定一个明文口令。
  7. OSPF采用多播,而不是广播形式,以减少不参与OSPF的系统负载。

BGP:边界网关协议

BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。 BGP是ARPANET所使用的老EGP的取代品。

BGP系统与其他BGP系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统 AS中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。

首先,我们将一个自治系统中的IP数据报分成本地流量和通过流量。在自治系统中,本地流量是起始或终止于该自治系统的流量。也就是说,其信源IP地址或信宿IP地址所指定的主机位于该自治系统中。其他的流量则称为通过流量。在Internet中使用BGP的一个目的就是减少通过流量。

自治系统分为以下几种类型:

  1. 残桩自治系统(stub AS),它与其他自治系统只有单个连接。 stub AS只有本地流量。
  2. 多接口自治系统(multihomed AS),它与其他自治系统有多个连接,但拒绝传送通过流量。
  3. 转送自治系统(transit AS),它与其他自治系统有多个连接,在一些策略准则之下,它可以传送本地流量和通过流量。

可以将Internet的总拓扑结构看成是由一些残桩自治系统、多接口自治系统以及转送自治系统的任意互连。残桩自治系统和多接口自治系统不需要使用 BGP——它们通过运行EGP在自治系统之间交换可到达信息。

BGP允许使用基于策略的选路。由自治系统管理员制订策略,并通过配置文件将策略指定给BGP。

BGP与RIP和OSPF的不同之处在于BGP使用TCP作为其传输层协议。两个运行BGP的系统之间建立一条TCP连接,然后交换整个BGP路由表。

BGP是一个距离向量协议,但是与(通告到目的地址跳数的) RIP不同的是,BGP列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离向量协议的问题。采用16bit数字表示自治系统标识。

BGP通过定期发送keepalive报文给其邻站来检测 TCP连接对端的链路或主机失败。两个报文之间的时间间隔建议值为30秒。应用层的 keepalive报文与 TCP的keepalive选项是独立的。

CIDR:无类型域间选路

CIDR的基本观点是采用一种分配多个IP地址的方式,使其能够将路由表中的许多表项总和(summarization)成更少的数目。

要使用这种总和,必须满足以下三种特性:

  1. 为进行选路要对多个IP地址进行总和时,这些IP地址必须具有相同的高位地址比特。
  2. 路由表和选路算法必须扩展成根据 32 bit IP地址和32 bit掩码做出选路决策。
  3. 必须扩展选路协议使其除了32bit地址外,还要有32 bit掩码OSPF和RIP2都能够携带第4版BGP所提出的32bit掩码。

CIDR同时还使用一种技术,使最佳匹配总是最长的匹配:即在 32 bit掩码中,它具有最大值。

上一篇:
TCP/IP详解 卷一 UDP:用户数据报协议
下一篇:
TCP/IP详解 卷一 IP选路