搜档网
当前位置:搜档网 › 10 动态选路协议

10 动态选路协议

第10章动态选路协议

10.1 引言

在前面各章中,我们讨论了静态选路。在配置接口时,以默认方式生成路由表项(对于直接连接的接口),并通过r o u t e命令增加表项(通常从系统自引导程序文件),或是通过I C M P 重定向生成表项(通常是在默认方式出错的情况下)。

在网络很小,且与其他网络只有单个连接点且没有多余路由时(若主路由失败,可以使用备用路由),采用这种方法是可行的。如果上述三种情况不能全部满足,通常使用动态选路。

本章讨论动态选路协议,它用于路由器间的通信。我们主要讨论R I P,即选路信息协议(Routing Infromation Protocol),大多数T C P/I P实现都提供这个应用广泛的协议。然后讨论两种新的选路协议,O S P F和B G P。本章的最后研究一种名叫无分类域间选路的新的选路技术,现在I n t e r n e t上正在开始采用该协议以保持B类网络的数量。

10.2 动态选路

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

动态选路并不改变我们在9 .2节中所描述的内核在I P层的选路方式。这种选路方式称为选路机制(routing mechanism)。内核搜索路由表,查找主机路由、网络路由以及默认路由的方式并没有改变。仅仅是放置到路由表中的信息改变了—当路由随时间变化时,路由是由路由守护程序动态地增加或删除,而不是来自于自引导程序文件中的r o u t e命令。

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

在像I n t e r n e t这样的系统中,目前采用了许多不同的选路协议。I n t e r n e t是以一组自治系统(A S,Autonomous System)的方式组织的,每个自治系统通常由单个实体管理。常常将一个公司或大学校园定义为一个自治系统。N S F N E T的I n t e r n e t骨干网形成一个自治系统,这是因为骨干网中的所有路由器都在单个的管理控制之下。

每个自治系统可以选择该自治系统中各个路由器之间的选路协议。这种协议我们称之为内部网关协议I G P(Interior Gateway Protocol)或域内选路协议(intradomain routing protocol)。

最常用的I G P 是选路信息协议R I P 。一种新的I G P 是开放最短路径优先O S P F (Open Shortest Path First )协议。它意在取代R I P 。另一种1 986年在原来N S F N E T 骨干网上使用的较早的I G P 协议—H E L L O ,现在已经不用了。

新的RFC [Almquist 1993]规定,实现任何动态选路协议的路由器必须同时支持

OSPF 和RIP ,还可以支持其他IGP 协议。

外部网关协议E G P (Exterier Gateway Protocol )或域内选路协议的分隔选路协议用于不同自治系统之间的路由器。在历史上,(令人容易混淆)改进的E G P 有着一个与它名称相同的协议:E G P 。新E G P 是当前在N S F N E T 骨干网和一些连接到骨干网的区域性网络上使用的是边界网关协议B G P (Border Gateway Protocol )。B G P 意在取代E G P 。10.3 Unix 选路守护程序

U n i x 系统上常常运行名为r o u t e d 路由守护程序。几乎在所有的T C P /I P 实现中都提供该程序。该程序只使用R I P 进行通信,我们将在下一节中讨论该协议。这是一种用于小型到中型网络中的协议。

另一个程序是g a t e d 。I G P 和E G P 都支持它。[Fedor 1998]描述了早期开发的g a t e d 。图1 0-1对r o u t e d 和两种不同版本的g a t e d 所支持的不同选路协议进行了比较。大多数运行路由守护程序的系统都可以运行r o u t e d ,除非它们需要支持g a t e d 所支持的其他协议。

图10-1 r o u t e d 和g a t e

d 所支持的选路协议

我们在下一节中描述RIP 版本1,1 0.5节描述它与R I P 版本2的不同点,1 0.6节描述O S P F ,1 0.7节描述B G P 。

10.4 RIP :选路信息协议

本节对R I P 进行了描述,这是因为它是最广为使用(也是最受攻击)的选路协议。对于R I P 的正式描述文件是RFC 1058 [Hedrick 1988a],但是该R F C 是在该协议实现数年后才出现的。10.4.1 报文格式

RIP 报文包含中在UDP 数据报中,如图10-2

所示(在第11章中对UDP 进行更为详细的描述)。图1 0-3给出了使用I P 地址时的R I P 报文

格式。

命令字段为1表示请求,2表示应答。还

有两个舍弃不用的命令(3和4),两个非正

式的命令:轮询(5)和轮询表项(6)。请

求表示要求其他系统发送其全部或部分路由内部网点协议守护程序

routed

gated, 版本2

gated, 版本3外部网点协议

图10-2 封装在UDP 数据报中的RIP 报文

IP 数据报UDP 数据报RIP 报文首部首部20字节8字节

表。应答则包含发送者全部或部分路由表。版本字段通常为1,而第2版R I P (1 0.5节)将此字段设置为2。

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

采用这种2 0字节格式的R I P 报文可以通告多达2 5条路由。上限2 5是用来保证R I P 报文的总长度为2 0×25 + 4 = 504,小于5 12字节。由于每个报文最多携带2 5个路由,因此为了发送整

个路由表,经常需要多个报文。图10-3

10.4.2 正常运行

让我们来看一下采用R I P 协议的r o u t e d 程序正常运行的结果。R I P 常用的U D P 端口号是520。? 初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表。在点对点链路中,该请求是发送给其他终点的。如果网络支持广播的话,这种请求是以广播形式发送的。目的U D P 端口号是5 20(这是其他路由器的路由守护程序端口号)。

这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为1 6。这是一种要求另一端完整路由表的特殊请求报文。

? 接收到请求。如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为1 6(度量为1 6是一种称为“无穷大”的特殊值,它意味着没有到达目的的路由)。然后发回响应。

? 接收到响应。使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除。

?定期选路更新。每过3 0秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的。命令地址系列(2)

32位IP 地址

(必须为0)

(必须为0)

度量(1-16)(最多可有24个另外的路由,与前20字节具有相同的格式)

版本

(必须为0)(必须为0)字节

? 触发更新。每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,而只需要发送那些发生变化的表项。

每条路由都有与之相关的定时器。如果运行R I P 的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大(1 6),并标注为删除。这意味着已经在6个3 0秒更新时间里没收到通告该路由的路由器的更新了。再过6 0秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开。

10.4.3 度量

R I P 所使用的度量是以跳( h o p )计算的。所有直接连接接口的跳数为1。考虑图1 0-4所示的路由器和网络。画出的4条虚线是广播R I

P

报文。

路由器R 1通过发送广播到N 1通告它与

N 2之间的跳数是1(发送给N 1的广播中通

告它与N 1之间的路由是无用的)。同时也通

过发送广播给N 2通告它与N 1之间的跳数为

1。同样,R 2通告它与N 2的度量为1,与N 3

的度量为1。

如果相邻路由器通告它与其他网络路由的跳数为1,那么我们与那个网络的度量就是2,这是因为为了发送报文到该网络,我们必须经过那个路由器。在我们的例子中,R 2到N 1的度量是2,与R 1到N 3的度量一样。

由于每个路由器都发送其路由表给邻站,因此,可以判断在同一个自治系统 A S 内到每个网络的路由。如果在该A S 内从一个路由器到一个网络有多条路由,那么路由器将选择跳数最小的路由,而忽略其他路由。

跳数的最大值是1 5,这意味着R I P 只能用在主机间最大跳数值为1 5的A S 内。度量为1 6表示到无路由到达该I P 地址。

10.4.4 问题

这种方法看起来很简单,但它有一些缺陷。首先,R I P 没有子网地址的概念。例如,如果标准的B 类地址中16 bit 的主机号不为0,那么R I P 无法区分非零部分是一个子网号,或者是一个主机地址。有一些实现中通过接收到的R I P 信息,来使用接口的网络掩码,而这有可能出错。

其次,在路由器或链路发生故障后,需要很长的一段时间才能稳定下来。这段时间通常需要几分钟。在这段建立时间里,可能会发生路由环路。在实现R I P 时,必须采用很多微妙的措施来防止路由环路的出现,并使其尽快建立。RFC 1058 [Hedrick 1988a]中指出了很多实现R I P 的细节。

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

10.4.5 举例

我们将使用r i p q u e r y 程序来查询一些路由器中的路由表,该程序可以从g a t e d 中得到。图10-4 路由器和网络示例经过R1到N1的一条跳数为2的路由

经过R2到N3的一条跳数为2的路由

r i p q u e r y 程序通过发送一个非正式请求(图1 0-3中命令字段为5的“p o l l ”)给路由器,要求

得到其完整的路由表。如果在5秒内未收到响应,则发送标准的R I P 请求(c o m m a n d 字段为1)(前面提到过的,将地址系列字段置为0,度量字段置为1 6的请求,要求其他路由器发送其完整路由表)。

图1 0 - 5给出了将从s u n 主机上查询其路由表的两个路由器。如果在主机s u n 上执行r i p q u e r y 程序,以得到其下一站路由器n e t b 的选路信息,那么可以得到下面的结果:

sun % ripquery -n netb 504 bytes from netb (140.252.1.183):第一份报文包含5 04字节

这里删除了许多行

140.252.1.0, metric 1图1 0-5中上面的以太网

140.252.13.0, metric 1图1 0-5中下面的以太网

244 bytes from netb (140.252.1.183): 第二份报文包含剩下的2 44字节下面删除了许多行正如我们所猜想的那样,n e t b 告诉我们子网的度量为

1。另外,与n e t b 相连的位于机端的以太网(1 40.252.1.0

)的m e t r i c 也是1(-n 参数表示

直接打印I P 地址而不需要去查看其域名)。在本例中,

将n e t b 配置成认为所有位于1 40.252.13子网的主机都与

其直接相连—即,n e t b 并不知道哪些主机真正与

1 40.252.13子网相连。由于与1 40.252.13子网只有一个

连接点,因此,通告每个主机的度量实际上没有太大意

义。

图1 0 - 6给出了使用t c p d u m p 交换的报文。采用- i

s 10选项指定S L I P 接口。

第1个请求发出一个R I P 轮询命令(第1行)。这个请

求在5秒后超时,发出一个常规的R I P 请求(第2行)。

第1行和第2行最后的2 4表示请求报文的长度:4个字节

的R I P 首部(包括命令和版本),然后是单个2 0字节的

地址和度量。

第3行是第一个应答报文。该行最后的2 5表示包含了2 5个地址和度量对,我们在前面已经计算过,其字节数为5 04。这是上面的r i p q u e r y 程序所打印出来的结果。我们为t c p d u m p 程序指定- s 600选项,以让它从网络中读取6 00个字节。这样,它可以接收整个U D P 数据报(而不是报文的前半部),然后打印出R I P 响应的内容。该输出结果省略了。图10-6 运行r i p q u e r y 程序的t c p d u m p 输出结果

第4行是来自路由器的第二个响应报文,它包含后面的1 2个地址和度量对。可以计算出该报文的长度为1 2×20 + 4=244,这正是r i p q u e r y 程序所打印出来的结果。

如果越过n e t b 路由器,到g a t e w a y ,那么可以预测到我们子网(1 40.252.13.0)的度量为2。可以运行下面的命令来进行验证:

图10-5 查询其路由表内容的两个路由器n e t b 和g a t e w a

y

sun % ripquery -n gateway

504 bytes from gateway (140.252.1.4):

这里删除了许多行

140.252.1.0, metric 1 图1 0-5上面的以太网

140.252.13.0, metric 2 图1 0-5下面的以太网

这里,位于图1 0-5上面的以太网(1 40.252.1.0)的度量依然是1,这是因为该以太网直接与g a t e w a y 和n e t b 相连。而我们的子网1 40.252.13.0正如预想的一样,其度量为2。10.4.6 另一个例子

现在察看以太网上所有非主动请求的R

I P 更新,以看一看R I P 定期给其邻站发送的信息。图10-7是n o a o .e d u 网络的多种排列情况。为了简化,我们不用本文其他地方所采用的路由器表示方式,而以R n 来代表路由器,其中n 是子网号。以虚线表示点对点链路,并给出了这些链路对端的I P 地址。图10-7 https://www.sodocs.net/doc/1c13536226.html, 140.252的多个网络

在主机s o l a r i s 上运行Solaris 2.x 的s n o o p 程序,它与t c p d u m p 相类似。我们可以在不需要超用户权限的条件下运行该程序,但它只捕获广播报文、多播报文以及发送给主机的报文。图1 0-8给出了在6 0秒内所捕获的报文。在这里,我们将大部分正式的主机名以R n 来表示。

-P 标志以非混杂模式捕获报文,-t r 打印出相应的时戳,而u d p p o r t 520

只捕获信源或信宿端口号为5 20的U D P 数据报。

来自R 6、R 4、R 2、R 7、R 8和R 3的前6个报文,每个报文只通告一个网络。查看这些报文,可以发现R 2通告前往1 40.252.6.0的跳数为1的一条路由,R 4通告前往1 40.252.4.0的跳数为1的一条路由,等等。

但是,g a t e w a y 路由器却通告了1 5条路由。我们可以通过运行s n o o p 程序时加上-v 参数来查看R I P 报文的全部内容(这个标志输出全部报文的全部内容:以太网首部、I P 首部、U D P 首部以及R I P 报文。我们只保留了R I P 信息而删除了其他信息)。图1 0-9给出了输出结果。

图10-8

s o l a r i

s 在60秒内所捕获到的RIP 广播报文

把这些子网1 40.252.1上通告报文经过的路由与图1 0-7中的拓扑结构进行比较。

使人迷惑不解的一个问题是为什么图1 0-8输出结果中,R 10通告其有4个网络而在图1 0-7中显示的只有3个。如果查看带s n o o p 的R I P 报文,就会得到以下通告路由:

R I P :Address Metric

RIP: 140.251.0.0 16 (not reachable)

RIP: 140.252.9.0 1

RIP: 140.252.10.0 1

RIP: 140.252.11.0 1前往B 类网络1 40.251的路由是假的,不应该通告它(它属于其他机构而不是n o a o .e d u )。

图10-9 来自g a t e w a y 的RIP 响应

图1 0-8中,对于R 10发送的R I P 报文,s n o o p 输出“B R O A D C A S T ”符号,它表示目的I P 地址是有限的广播地址2 55.255.255.255(1 2.2节),而不是其他路由器用来指向子网的广播地删去许多行

址(1 40.252.1.255)。

10.5 RIP 版本2

RFC 1388 [Malkin 1993a]中对R I P 定义进行了扩充,通常称其结果为R I P -2。这些扩充并不改变协议本身,而是利用图1 0-3中的一些标注为“必须为0”的字段来传递一些额外的信息。如果R I P 忽略这些必须为0的字段,那么,R I P 和R I P -2可以互操作。

图1 0-10重新给出了由R I P -2定义的图。对于R I P -2来说,其版本字段为2。

图10-10 RIP-2报文格式

选路域(routing domain)是一个选路守护程序的标识符,它指出了这个数据报的所有者。在一个U n i x 实现中,它可以是选路守护程序的进程号。该域允许管理者在单个路由器上运行多个R I P 实例,每个实例在一个选路域内运行。

选路标记(routing tag)是为了支持外部网关协议而存在的。它携带着一个E G P 和B G P 的自治系统号。每个表项的子网掩码应用于相应的I P 地址上。下一站I P 地址指明发往目的I P 地址的报文该发往哪里。该字段为0意味着发往目的地址的报文应该发给发送R I P 报文的系统。

R I P -2提供了一种简单的鉴别机制。可以指定R I P 报文的前2 0字节表项地址系列为0 x f fff ,路由标记为2。表项中的其余1 6字节包含一个明文口令。

最后,R I P -2除了广播(第1 2章)外,还支持多播。这可以减少不收听R I P -2报文的主机的负载。

10.6 OSPF :开放最短路径优先

O S P F 是除R I P 外的另一个内部网关协议。它克服了R I P 的所有限制。RFC 1247 [Moy 1 991]中对第2版O S P F 进行了描述。

与采用距离向量的R I P 协议不同的是,O S P F 是一个链路状态协议。距离向量的意思是,R I P 发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接收到邻站的这些距离向命令(1-6)

版本(2)路由域路由标记

20字节

地址类(2)32位IP 地址

32位子网掩码

32位下一站IP 地位

度量(1-16)

(最多超过24个路由,与前20字节具有相同的格式)

量来更新自己的路由表。

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

从实际角度来看,二者的不同点是链路状态协议总是比距离向量协议收敛更快。收敛的意思是在路由发生变化后,例如在路由器关闭或链路出故障后,可以稳定下来。[ P e r l m a n 1 992]的9 .3节对这两种类型的选路协议的其他方面进行了比较。

O S P F与R I P(以及其他选路协议)的不同点在于,O S P F直接使用I P。也就是说,它并不使用U D P或T C P。对于I P首部的p r o t o c o l字段,O S P F有其自己的值(图3 -1)。

另外,作为一种链路状态协议而不是距离向量协议,O S P F还有着一些优于R I P的特点。

1) OSPF可以对每个I P服务类型(图3 -2)计算各自的路由集。这意味着对于任何目的,可以有多个路由表表项,每个表项对应着一个I P服务类型。

2) 给每个接口指派一个无维数的费用。可以通过吞吐率、往返时间、可靠性或其他性能来进行指派。可以给每个I P服务类型指派一个单独的费用。

3) 当对同一个目的地址存在着多个相同费用的路由时,O S P F在这些路由上平均分配流量。我们称之为流量平衡。

4) OSPF支持子网:子网掩码与每个通告路由相连。这样就允许将一个任何类型的I P地址分割成多个不同大小的子网(我们在 3 .7节中给出了这样的一个例子,称之为变长度子网)。到一个主机的路由是通过全1子网掩码进行通告的。默认路由是以I P地址为0 .0.0.0、网络掩码为全0进行通告的。

5) 路由器之间的点对点链路不需要每端都有一个I P地址,我们称之为无编号网络。这样可以节省I P地址—现在非常紧缺的一种资源。

6) 采用了一种简单鉴别机制。可以采用类似于R I P-2机制(1 0.5节)的方法指定一个明文口令。

7) OSPF采用多播(第1 2章),而不是广播形式,以减少不参与O S P F的系统负载。

随着大部分厂商支持O S P F,在很多网络中O S P F将逐步取代R I P。

10.7 BGP:边界网关协议

B G P是一种不同自治系统的路由器之间进行通信的外部网关协议。B G P是A R P A N E T所使用的老E G P的取代品。RFC1267 [Lougheed and Rekhter 1991] 对第3版的B G P进行了描述。

RFC 1268 [Rekhter and Gross 1991] 描述了如何在I n t e r n e t中使用B G P。下面对于B G P的大部分描述都来自于这两个R F C文档。同时,1 993年开发第4版的B G P(见RFC 1467 [To p o l c i c

1 993]),以支持我们将在1 0.8节描述的C I D R。

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

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

减少通过流量。

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

1) 残桩自治系统(stub AS),它与其他自治系统只有单个连接。stub AS只有本地流量。

2) 多接口自治系统(multihomed AS),它与其他自治系统有多个连接,但拒绝传送通过流量。

3) 转送自治系统(transit AS),它与其他自治系统有多个连接,在一些策略准则之下,它可以传送本地流量和通过流量。

这样,可以将I n t e r n e t的总拓扑结构看成是由一些残桩自治系统、多接口自治系统以及转送自治系统的任意互连。残桩自治系统和多接口自治系统不需要使用 B G P——它们通过运行E G P在自治系统之间交换可到达信息。

B G P允许使用基于策略的选路。由自治系统管理员制订策略,并通过配置文件将策略指定给B G P。制订策略并不是协议的一部分,但指定策略允许 B G P实现在存在多个可选路径时选择路径,并控制信息的重发送。选路策略与政治、安全或经济因素有关。

B G P与R I P和O S P F的不同之处在于B G P使用T

C P作为其传输层协议。两个运行B G P的系统之间建立一条T C P连接,然后交换整个B G P路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。

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

B G P通过定期发送k e e p a l i v e报文给其邻站来检测T

C P连接对端的链路或主机失败。两个报文之间的时间间隔建议值为3 0秒。应用层的k e e p a l i v e报文与T C P的k e e p a l i v e选项(第2 3章)是独立的。

10.8 CIDR:无类型域间选路

在第3章中,我们指出了B类地址的缺乏,因此现在的多个网络站点只能采用多个C类网络号,而不采用单个B类网络号。尽管分配这些C类地址解决了一个问题(B类地址的缺乏),但它却带来了另一个问题:每个C类网络都需要一个路由表表项。无类型域间选路( C I D R)是一个防止I n t e r n e t路由表膨胀的方法,它也称为超网(s u p e r n e t t i n g)。在RFC 1518 [Rekher and Li 1993] 和RFC 1519 [Fuller et al. 1993]中对它进行了描述,而[Ford, Rekhter, and Braun 1 993]是它的综述。C I D R有一个Internet Architecture Board’s blessing [Huitema 1993]。R F C 1467 [Topolcic 1993] 对I n t e r n e t中C I D R的开发状况进行了小结。

C I

D R的基本观点是采用一种分配多个I P地址的方式,使其能够将路由表中的许多表项总和( s u m m a r i z a t i o n)成更少的数目。例如,如果给单个站点分配1 6个C类地址,以一种可以用总和的方式来分配这1 6个地址,这样,所有这1 6个地址可以参照I n t e r n e t上的单个路由表表项。同时,如果有8个不同的站点是通过同一个I n t e r n e t服务提供商的同一个连接点接入I n t e r n e t的,且这8个站点分配的8个不同I P地址可以进行总和,那么,对于这8个站点,在I n t e r n e t上,只需要单个路由表表项。

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

1) 为进行选路要对多个I P地址进行总和时,这些I P地址必须具有相同的高位地址比特。

2) 路由表和选路算法必须扩展成根据32 bit IP地址和32 bit掩码做出选路决策。

3) 必须扩展选路协议使其除了32 bit地址外,还要有32 bit掩码。O S P F(1 0.6节)和R I P-2(1 0.5节)都能够携带第4版B G P所提出的32 bit掩码。

例如,RFC 1466 [Gerich 1993] 建议欧洲新的C类地址的范围是1 9 4 . 0 . 0 . 0~1 95.255.255.255。以1 6进制表示,这些地址的范围是0 x c2000000~0 x c3f fffff。它代表了6 5536个不同的C类网络号,但它们地址的高7 bit是相同的。在欧洲以外的国家里,可以采用I P地址为0 x c2000000和32 bit 0xfe000000 (254.0.0.0) 为掩码的单个路由表表项来对所有这些6 5536个C类网络号选路到单个点上。C类地址的后面各比特位(即在1 94或1 95后面各比特)也可以进行层次分配,例如以国家或服务提供商分配,以允许对在欧洲路由器之间使用除了这32 bit掩码的高7 bit外的其他比特进行概括。

C I

D R同时还使用一种技术,使最佳匹配总是最长的匹配:即在32 bit掩码中,它具有最大值。我们继续采用上一段中所用的例子,欧洲的一个服务提供商可能会采用一个与其他欧洲服务提供商不同的接入点。如果给该提供商分配的地址组是从1 94.0.16.0到194.0.31.255 (16个C类网络号),那么可能只有这些网络的路由表项的I P地址是1 9 4 . 0 . 1 6 . 0,掩码为255.255.240.0 (0xfffff 000)。发往1 94.0.22.1地址的数据报将同时与这个路由表表项和其他欧洲C类地址的表项进行匹配。但是由于掩码2 55.255.240比2 54.0.0.0更“长”,因此将采用具有更长掩码的路由表表项。

“无类型”的意思是现在的选路决策是基于整个32 bit IP地址的掩码操作,而不管其I P地址是A类、B类或是C类,都没有什么区别。

C I

D R最初是针对新的C类地址提出的。这种变化将使I n t e r n e t路由表增长的速度缓慢下来,但对于现存的选路则没有任何帮助。这是一个短期解决方案。作为一个长期解决方案,如果将C I D R应用于所有I P地址,并根据各洲边界和服务提供商对已经存在的I P地址进行重新分配(且所有现有主机重新进行编址!),那么[Ford, Rekhter, and Braun 1993] 宣称,目前包含10 000网络表项的路由表将会减少成只有2 00个表项。

10.9 小结

有两种基本的选路协议,即用于同一自治系统各路由器之间的内部网关协议(I G P)和用于不同自治系统内路由器通信的外部网关协议(E G P)。

最常用的I G P是路由信息协议(R I P),而O S P F是一个正在得到广泛使用的新I G P。一种新近流行的E G P是边界网关协议(B G P)。在本章中,我们讨论了R I P及其交换的报文类型。第2版R I P是其最近的一个改进版,它支持子网,还有一些其他改进技术。同时也对O S P F、B G P 和无类型域间选路(C I D R)进行了描述。C I D R是一种新技术,可以减小I n t e r n e t路由表的大小。

你可能还会遇到一些其他的O S I选路协议。域间选路协议(I D R P)最开始时,是一个为了使用O S I地址而不是I P地址,而进行修改的B G P版本。Intermediate System to Intermediate System 协议(I S-I S)是O S I的标准I G P。可以用它来选路C L N P(无连接网络协议),这是一种与I P类似的O S I协议。I S-I S和O S P F相似。

动态选路仍然是一个网间互连的研究热点。对使用的选路协议和运行的路由守护程序进行选择,是一项复杂的工作。[Perlman 1992]提供了许多细节。

习题

10.1 在图1 0-9中哪些路由是从路由器k p n o进入g a t e w a y的?

10.2 假设一个路由器要使用R I P通告3 0个路由,这需要一个包含2 5条路由和另一个包含5条路

由的数据报。如果每过一个小时,第一个包含2 5条路由的数据报丢失一次,那么其结果如何?

10.3 OSPF报文格式中有一个检验和字段,而R I P报文则没有此项,这是为什么?

10.4 像O S P F这样的负载平衡,对于传输层的影响是什么?

10.5 查阅RFC1058 关于实现R I P的其他资料。在图1 0-8中,1 40.252.1网络的每个路由器只通

告它所提供的路由,而它并不能通过其他路由器的广播中知道任何其他路由。这种技术的名称是什么?

10.6 在3 .4节中,我们说过除了图1 0-7中所示的8个路由器外,1 40.252.1子网上还有超过1 00个主

机。那么这100个主机是如何处理每30秒到达它们的8个广播信息呢(图10-8)?

相关主题