tcp/ip(十)

来源:互联网 发布:软件系统开发协议 编辑:程序博客网 时间:2024/06/07 11:29

下载
第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)。
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
最常用的I G P是选路信息协议R I P。一种新的I G P是开放最短路径优先O S P F(Open Shortest
Path First)协议。它意在取代R I P。另一种1 9 8 6年在原来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)。请
求表示要求其他系统发送其全部或部分路由
96使用TCP/IP详解,卷1:协议
下载
内部网点协议
守护程序
routed
gated, 版本2
gated, 版本3
外部网点协议
图10-2 封装在UDP数据报中的RIP报文
IP数据报
UDP数据报
RIP报文
首部首部
20字节8字节
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
表。应答则包含发送者全部或部分路由表。
版本字段通常为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 1 2字节。由于每个报文最多携带2 5个路由,因此为了发送整
个路由表,经常需要多个报文。
图10-3
10.4.2 正常运行
让我们来看一下采用R I P协议的r o u t e d程序正常运行的结果。R I P常用的U D P端口号是5 2 0。
• 初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送
一个请求报文,要求其他路由器发送完整路由表。在点对点链路中,该请求是发送给其
他终点的。如果网络支持广播的话,这种请求是以广播形式发送的。目的U D P端口号是
5 2 0(这是其他路由器的路由守护程序端口号)。
这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为1 6。这是一
种要求另一端完整路由表的特殊请求报文。
• 接收到请求。如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送
给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度
量设置成我们的值,否则将度量置为1 6(度量为1 6是一种称为“无穷大”的特殊值,它
意味着没有到达目的的路由)。然后发回响应。
• 接收到响应。使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行
修改,或是将已有表项删除。
• 定期选路更新。每过3 0秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发
送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的。
第10章动态选路协议使用97
下载
命令
地址系列(2)
32位IP地址
(必须为0)
(必须为0)
度量(1-16)
(最多可有24个另外的路由,与前20字节具有相同的格式)
版本(必须为0)
(必须为0)
字节
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
• 触发更新。每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,
而只需要发送那些发生变化的表项。
每条路由都有与之相关的定时器。如果运行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中得到。
98使用TCP/IP详解,卷1:协议
下载
图10-4 路由器和网络示例
经过R1到N1的一
条跳数为2的路由
经过R2到N3的一
条跳数为2的路由
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
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 0 4字节
这里删除了许多行
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 4 4字节下面删除了许多行
正如我们所猜想的那样, n e t b告诉我们子网的度量为1。另外,与n e t b相连的位于机端
的以太网( 1 4 0 . 2 5 2 . 1 . 0)的m e t r i c也是1(-n参数表示
直接打印I P地址而不需要去查看其域名)。在本例中,
将n e t b配置成认为所有位于1 4 0 . 2 5 2 . 1 3子网的主机都与
其直接相连— 即, n e t b 并不知道哪些主机真正与
1 4 0 . 2 5 2 . 1 3子网相连。由于与1 4 0 . 2 5 2 . 1 3子网只有一个
连接点,因此,通告每个主机的度量实际上没有太大意
义。
图1 0 - 6给出了使用t c p d u m p交换的报文。采用- i
s 1 0选项指定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 0 4。这是上面的r i p q u e r y程序所打印出来的结果。我们为t c p d u m p程
序指定- s 6 0 0选项,以让它从网络中读取6 0 0个字节。这样,它可以接收整个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 4 0 . 2 5 2 . 1 3 . 0)的度量
为2。可以运行下面的命令来进行验证:
第10章动态选路协议使用99
下载
图10-5 查询其路由表内容的两个
路由器n e t b 和g a t e w a y
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
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 4 0 . 2 5 2 . 1 . 0)的度量依然是1,这是因为该以太网直接
与g a t e w a y和n e t b相连。而我们的子网1 4 0 . 2 5 2 . 1 3 . 0正如预想的一样,其度量为2。
10.4.6 另一个例子
现在察看以太网上所有非主动请求的R I P更新,以看一看R I P定期给其邻站发送的信息。图1 0 - 7
是n o a o . e d u网络的多种排列情况。为了简化,我们不用本文其他地方所采用的路由器表示方式,
而以R n来代表路由器,其中n是子网号。以虚线表示点对点链路,并给出了这些链路对端的I P地址。
图10-7 noao.edu 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秒内所捕获的报文。在这里,我们将大部分正式的主机名以Rn来表示。
-P标志以非混杂模式捕获报文,- t r打印出相应的时戳,而u d p p o r t 5只2捕0 获信源
或信宿端口号为5 2 0的U D P数据报。
来自R 6、R 4、R 2、R 7、R 8和R 3的前6个报文,每个报文只通告一个网络。查看这些报文,
可以发现R 2通告前往1 4 0 . 2 5 2 . 6 . 0的跳数为1的一条路由, R 4通告前往1 4 0 . 2 5 2 . 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给出了输出结果。
100使用TCP/IP详解,卷1:协议
下载
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
图10-8 s o l a r i s 在60秒内所捕获到的RIP广播报文
把这些子网1 4 0 . 2 5 2 . 1上通告报文经过的路由与图1 0 - 7中的拓扑结构进行比较。
使人迷惑不解的一个问题是为什么图1 0 - 8输出结果中, R 1 0通告其有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 4 0 . 2 5 1的路由是假的,不应该通告它(它属于其他机构而不是n o a o . e d u)。
图10-9 来自g a t e w a y 的RIP响应
图1 0 - 8中,对于R 1 0发送的R I P报文,s n o o p输出“B R O A D C A S T”符号,它表示目的I P
地址是有限的广播地址2 5 5 . 2 5 5 . 2 5 5 . 2 5 5(1 2 . 2节),而不是其他路由器用来指向子网的广播地
第10章动态选路协议使用101
下载
删去许多行
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
址(1 4 0 . 2 5 2 . 1 . 2 5 5)。
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 - 1 0重新给出了由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 ffff,
路由标记为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 9 9 1 ]中对第2版O S P F进行了描述。
与采用距离向量的R I P协议不同的是, O S P F是一个链路状态协议。距离向量的意思是,
R I P发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接收到邻站的这些距离向
102使用TCP/IP详解,卷1:协议
下载
命令(1-6) 版本(2) 路由域
路由标记
20字节
地址类(2)
32位IP地址
32位子网掩码
32位下一站IP地位
度量(1-16)
(最多超过24个路由,与前20字节具有相同的格式)
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
量来更新自己的路由表。
在一个链路状态协议中,路由器并不与其邻站交换距离信息。它采用的是每个路由器主
动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在
自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。
从实际角度来看,二者的不同点是链路状态协议总是比距离向量协议收敛更快。收敛的
意思是在路由发生变化后,例如在路由器关闭或链路出故障后,可以稳定下来。[ P e r l m a n
1 9 9 2 ]的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 PA 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 9 9 3年开发第4版的B G P(见RFC 1467 [To p o l c i c
1 9 9 3 ]),以支持我们将在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的一个目的就是
第10章动态选路协议使用103
下载
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
减少通过流量。
可以将自治系统分为以下几种类型:
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 9 9 3 ]是它的综述。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地址必须具有相同的高位地址比特。
104使用TCP/IP详解,卷1:协议
下载
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
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 9 5 . 2 5 5 . 2 5 5 . 2 5 5。以1 6进制表示,这些地址的范围是0 x c 2 0 0 0 0 0 0~0 x c 3 ffffff。它代表了6 5 5 3 6
个不同的C类网络号,但它们地址的高7 bit是相同的。在欧洲以外的国家里,可以采用I P地址
为0 x c 2 0 0 0 0 0 0和32 bit 0xfe000000 (254.0.0.0) 为掩码的单个路由表表项来对所有这些6 5 5 3 6个
C类网络号选路到单个点上。C类地址的后面各比特位(即在1 9 4或1 9 5后面各比特)也可以进
行层次分配,例如以国家或服务提供商分配,以允许对在欧洲路由器之间使用除了这32 bit掩
码的高7 bit外的其他比特进行概括。
C I D R同时还使用一种技术,使最佳匹配总是最长的匹配:即在32 bit掩码中,它具有最
大值。我们继续采用上一段中所用的例子,欧洲的一个服务提供商可能会采用一个与其他欧
洲服务提供商不同的接入点。如果给该提供商分配的地址组是从1 9 4 . 0 . 1 6 . 0到194.0.31.255 (16
个C类网络号) ,那么可能只有这些网络的路由表项的I P地址是1 9 4 . 0 . 1 6 . 0 ,掩码为
255.255.240.0 (0xfffff 0 0 0 )。发往1 9 4 . 0 . 2 2 . 1地址的数据报将同时与这个路由表表项和其他欧洲
C类地址的表项进行匹配。但是由于掩码2 5 5 . 2 5 5 . 2 4 0比2 5 4 . 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 0 0个表项。
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章动态选路协议使用105
下载
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
习题
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 4 0 . 2 5 2 . 1网络的每个路由器只通
告它所提供的路由,而它并不能通过其他路由器的广播中知道任何其他路由。这种技术
的名称是什么?
10.6 在3 . 4节中,我们说过除了图1 0 - 7中所示的8个路由器外,1 4 0 . 2 5 2 . 1子网上还有超过1 0 0个主
机。那么这100个主机是如何处理每30秒到达它们的8个广播信息呢(图10-8)?
106使用TCP/IP详解,卷1:协议
下载
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^

原创粉丝点击