购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 常用路由协议

前面介绍了路由的分类,下面重点介绍两种常用的动态路由协议。这两种路由协议分别是RIP和OSPF协议。

3.3.1 RIP

1.RIP简述

RIP是最早出现的一种路由协议,它最初发源于UNIX系统的GATED服务,在RFC 1508文档中对RIP进行了描述。RIP系统的开发是以XEROX Palo Alto研究中心(PARC)所进行的研究以及XEROX的PDU和XNC路由选择协议为基础的。但是RIP的广泛应用却得益于它在加利福尼亚大学伯克利分校的许多局域网中的实现。

RIP是一种相对简单的动态路由协议,但在实际使用中有着广泛的应用。RIP是一种基于D-V算法的路由协议,它通过UDP交换路由信息,每隔30s向外发送一次更新报文。如果路由器经过180s没有收到来自邻居的路由更新报文,则将所有来自此路由器的路由信息标识为不可达;如果在其后120s内仍未收到更新报文,就将该条路由从路由表中删除。

RIP使用跳数(Hop Count)来衡量到达目的网络的距离,称为路由权(Routing Metric)。在RIP中,路由器到与它直接相连网络的跳数为0(需要注意的是,在ZTE路由器中将该跳数定义为1,其他厂家定义为0),通过一个路由器可达的网络的跳数为1,以此类推。为限制收敛时间,RIP规定Metric取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。

RIP具有以下特点:

1)RIP属于典型的距离矢量路由协议。

2)RIP通过跳数来衡量距离的优劣。

3)RIP允许的最大跳数为15,大于或等于16时表示不可达。

4)RIP仅和相邻路由器交换信息。

5)RIP交换的路由信息是当前本路由器的整个路由表。

6)RIP每隔30s周期性地交换路由信息。

7)RIP适用于中小型网络,分为RIPv1和RIPv2两个版本。

2.RIP的实现

(1)RIP路由表的初始化

路由器在刚刚开始工作时,只知道到自己直连接口的路由(直连路由),在RIP中将直连路由的距离定义为0。如图3-6所示,路由器RTA、RT B仅仅知道与它们直接连接的网络信息,RTA在初始化时将它的直连子网10.1.0.0和10.2.0.0距离定义为0,RTB在初始化时将它的直连子网10.2.0.0和10.3.0.0距离定义为0。

图3-6 RIP路由表的初始化

(2)RIP的更新

在RIP中,路由器每隔30s周期性地向其邻居路由器发送自己完整的路由表信息,并且同样也从相邻的路由器接收路由信息,然后更新自己的路由表。在图3-6中,路由器RTA向RT B发送自己的完整路由表信息,同时RT B也向RTA发送自己的完整路由表信息。当RTA与RT B相互交换路由表后,它们各自更新自己的路由表。更新后的路由表如图3-7所示,对于RTA,学习到了10.3.0.0的路由,下一跳指向RTB,距离为1;对于RTB,学习到了10.1.0.0的路由,下一跳指向RTA,距离为1。

图3-7 更新后的路由表

在RIP中,路由表的更新遵循以下原则。

1)对本路由表中已有的路由项,当发送报文的网关相同时,不论度量值增大或是减少,都更新该路由项。

2)对本路由表中已有的路由项,当发送报文的网关不同时,只在度量值减少时,更新该路由项。

3)对本路由表中不存在的路由项,在度量值小于不可达值(16)时,在路由表中增加该路由项。

4)路由表中的每一路由项都对应一老化定时器,当路由项在180s内没有任何更新时,定时器超时,该路由项的度量值变为不可达(16)。

某路由项的度量值变为不可达后,在120s之后从路由表中清除。

3.RIP版本

RIP主要有两个版本:RIPv1和RIPv2。RIPv1报文格式如图3-8所示。

图3-8 RIPv1报文格式

每个RIP报文都以由4B组成的一个公用头开始,紧跟在后面的是一系列路由条目,反映了其路由信息,具体内容如下。

· Command:RIP报文类型。Command为1,表示一个路由请求报文;Command为2,表示一个路由响应报文。

· Version:RIP的版本号。

在一个RIP报文中,最多可通告25条路由条目,若路由条目数多于25条,则需要用多个RIP报文来交换路由信息。每条路由条目所包含的信息用以下字段来描述。

· Address Family identifier:地址族标识,对一般的路由条目,取值为2。若是跟在RIP报文头后面的第一条路由条目,则取值为0xFFFF,表示是一个安全认证;若是对所有路由的请求报文,取值为0。

· Route Tag:路由标识,用于描述由其他路由协议所导入的外部路由信息。该字段域在扩散过程中保持不变,使所携带的外部路由信息在经过RIP路由域时得以保存,并导入到另一自治系统中。Route Tag一般要保存产生该路由的AS值,RIP本身不需要该属性值。

· IP Address:可达的目的地址,一般是指网络地址。

· Metric:到可达路由所需经过的路由器数,其取值范围在1~16。度量值在1~15内为可达路由,大于或等于16表示路由不可达。

RIPv1是最早使用的动态路由协议,其特点如下。

1)RIPv1是有类路由协议。

2)RIPv1使用255.255.255.255的广播地址发送路由更新信息。

3)RIPv1不支持变长子网掩码(Variable-Length Subnet Masks, VLSM),也不支持对于不连续子网的划分。

4)RIPv1不支持报文认证。

RIPv2报文格式如图3-9所示。

图3-9 RIPv2报文格式

· Subnet Mask:可达目的地址的掩码。IP Address和Subnet Mask是一个地址/掩码对,共同标识一个可达的网络地址前缀。当其取值为0.0.0.0时,该路由条目没有子网掩码。

· Next Hop:到达该可达路由的更好的下一跳的IP地址。对一般的可达路由,Next Hop为0.0.0.0,表示下一跳的IP地址就是发布该路由信息的路由器地址。对于公共访问介质(如以太网、FDDI等)上的路由器扩散路由信息时,若某路由信息是由该公共访问介质上的某路由器传送来的,则在该公共访问介质上往其他路由器进一步扩散该路由信息时,下一跳IP地址Next Hop应为先前的路由器地址,而不是目前发布该路由信息的路由器地址,以使该路由上的IP报文在途经公共访问介质时,直接送往前一个路由器,不需经由这个多余的中转路由器,此时,Next Hop不再为0.0.0.0,而是前一个路由器的IP地址。

· 认证:确认合法的信息包,目前支持纯文本的口令形式。在RIPv2中,增加了口令和MD5的安全认证机制。认证是每一报文的功能,因为在报文头中只提供2B的空间,而任一合理的认证表均要求多余2B的空间,故RIPv2认证表使用一个完整的RIP路由项。如果在报文中最初路由项Address Family Identifier域的值是0xFFFF,路由项的剩余部分就是认证。包含认证RIP报文路由项采用如图3-10所示的格式。

图3-10 RIPv2的认证报文格式

相对于RIPv1,RIPv2做了改进,特点主要如下。

1)RIPv2是一种无类别路由协议。

2)RIPv2协议报文中携带子网掩码信息,支持VLSM和无类别域间路由(Classless Inter-Domain Routing, CIDR)。

3)RIPv2支持以组播方式发送路由更新报文,组播地址为224.0.0.9,减少网络与系统资源消耗。

4)RIPv2支持对协议报文进行验证,并提供明文验证和MD5验证两种方式,增强安全性。

4.RIP的缺陷

在20世纪80年代,主要使用的动态路由协议为RIP。这种距离矢量路由协议存在一些缺陷,主要表现在以下几个方面。

1)Metric的可信度差。RIP只以跳数衡量路由的优劣,对路由器之间的链路带宽、延迟等因素不做考虑,这会导致数据包传送在一个看起来跳数最小,但实际带宽窄和延时大的链路上。

2)交换路由信息对网络带宽浪费大。RIP在交换路由信息的方式上,相邻路由器之间通过定期广播整个路由表信息来进行路由信息的交换,然而,在传递的这个路由表中,有些路由信息对于接收方来说可能完全不需要,这样就对网络带宽造成了浪费;再则,在稍大一点的网络中,路由器之间交换的路由表会很大,而且很难维护,导致路由收敛很缓慢。

3)RIPv1不支持CIDR和VLSM。

3.3.2 OSPF协议

1.链路状态路由协议

由于RIP的缺陷,为了更加合理地计算路由和使用网络资源,需要一种新的路由协议,这就是链路状态路由协议。链路状态路由协议的目的是映射互联网的拓扑结构。基于链路状态的路由算法也叫最短路径优先(SPF)算法。该算法维护着关于整个网络拓扑信息的复杂数据库。每个链路状态路由器提供关于它邻居的拓扑结构的信息。这个信息在网络上泛洪,目的是所有的路由器可以接收到第一手信息。链路状态协议的路由器并不会广播路由表内的所有路由信息,相反,链路状态路由器将发送已经改动的链路状态信息。链路状态路由器将向它们的邻居发送呼叫消息,这种信息称为链路状态通告(LSA)。然后,邻居将LSA复制到它们的路由选择表中,并传递信息到网络的剩余部分,这个过程称为泛洪(Flooding)。它的结果是向网络发送第一手信息,为网络建立更新路由的准确映射。链路状态路由协议使用代价,而不是使用跳数来衡量路由的优劣。代价是自动或人工赋值的,根据链路状态协议的算法,代价可以由数据包必须穿越的跳数、链路带宽、链路负荷或者管理员加入的其他权重来评价。

链路状态路由协议工作过程如图3-11所示。

图3-11 链路状态路由协议工作过程

1)每个路由器通过泛洪链路状态通告(LSA)向外发布本地链路状态信息。

2)每一个路由器通过收集其他路由器发布的链路状态通告以及自身生成的本地链路状态通告,形成一个链路状态数据库(LSDB),最终所有路由器上的链路状态数据库是相同的。

3)通过自己的LSDB,每台路由器计算一个以自己为根、以网络中其他节点为叶的最短路径树。

4)每台路由器计算的最短路径树给出了到网络中其他节点的路由信息。

2.OSPF协议概述

OSPF是IETF(Internet Engineering Task Force)开发的一个基于链路状态的自治系统内部路由协议(IGP),用于在单一自治系统(Autonomous System, AS)内部决策路由。在IP网络上,它通过收集和传递自治系统的链路状态来动态地发现并传播路由。

随着Internet技术在全球范围的飞速发展,OSPF已成为目前Internet广域网和Intranet企业网采用最多、应用最广泛的路由协议之一。

OSPF协议特点如下:

1)适应范围广。OSPF支持各种规模的网络,最多可支持几百台路由器。

2)最佳路径。OSPF是基于带宽来选择路径。

3)快速收敛。如果网络的拓扑结构发生变化,OSPF立即发送更新报文,使这一变化在自治系统中同步。

4)无自环路由协议。由于OSPF是通过收集到的链路状态信息来计算最短路径树,故从算法本身保证了不会生成自环路由。

5)支持变长子网掩码。由于OSPF在描述路由时携带网段的掩码信息,所以OSPF协议不受自然掩码的限制,对VLSM和CIDR提供很好的支持。

6)支持区域划分。OSPF协议允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用网络的带宽。

7)等值路由。OSPF支持到同一目的地址的多条等值路由。

8)支持验证。它支持基于接口的报文验证以保证路由计算的安全性。

9)组播发送。OSPF在有组播发送能力的链路层上以组播地址发送协议报文,既达到了广播的作用,又最大程度地减少了对其他网络设备的干扰。

3.OSPF的基本术语

(1)自治系统

自治系统简称为AS。一个自治系统是指使用同一种路由协议交换路由信息的一组路由器。

(2)路由器ID

OSPF协议使用一个被称为路由器ID(Router ID)的32位无符号整数来唯一标识一台路由器。这个编号在整个自治系统内部是唯一的。

路由器ID是否稳定对于OSPF协议的运行来说是很重要的。路由器ID可以通过手工配置和自动选取两种方式产生。手工配置路由器ID时,一般将其配置为该路由器的某个活动状态的接口IP地址。自动选取的原则如下:

如果路由器配置了逻辑环回接口(Loopback Interface),选取具有最小IP地址的环回接口的IP地址作为路由器ID。如果不存在环回接口,则选取路由器上处于激活(UP)状态的物理接口中最小的IP地址作为路由器ID。

采用环回接口的好处是,它不像物理接口那样随时可能失效。因此,用环回接口的IP地址作为路由器ID更稳定,也更可靠。

当一台路由器的路由器ID选定以后,除非该IP所在接口被关闭或该接口IP地址被删除、更改或路由器重新启动,否则路由器ID将一直保持不变。

(3)邻居(Neighbors)

运行OSPF协议的路由器每隔一定时间发送一次Hello数据包,Hello数据包的TTL值为1。可以互相收到对方Hello数据包的路由器构成邻居关系。两个互为邻居的路由器之间可以一直维持这样的邻居关系,也可以进一步形成邻接关系。如图3-12所示,两台路由器形成邻居关系。

(4)邻接(Adjacency)

邻接关系是一种比邻居关系更为密切的关系。互为邻接关系的两台路由器之间不但交流Hello数据包,还发送LSA泛洪消息。

(5)OSPF链路状态数据库LSDB

在一个OSPF区域内,每个路由器都将自己活动接口(并且是运行OSPF协议的接口)的状态及所连接的链路情况通告给其他所有的OSPF路由器。同时,每个路由器也收集本区域内所有其他OSPF路由器的链路状态信息,并将其汇总成为OSPF链路状态数据库。

图3-12 邻居关系的建立

经过一段时间的同步后,同一个OSPF区域内的所有OSPF路由器将拥有完全相同的链路状态数据库。这些路由器定时传送Hello存活信息包以及LSA更新数据包以反映网络拓扑结构的变化。 LnwxE4R5Vj3qv6Mx38j+OvhJUtzjrd/YeE/XUU33jSnB/5yRPoEn4Cg9emfFsUXT

点击中间区域
呼出菜单
上一章
目录
下一章
×