的路由器请求路由信息,响应报文用来发送本地路由器的路由信息。RIP协议使用距离 向量路由算法,因此发送的路由信息可以用序偶< vector, distance>来表示,在实际报文 中, vector用路由的目的地址 address表示,而 distance用该路由的距离度量值 metrIc表 示, metrIc值规定为从本机到达目的网络路径上经过的路由器数目, metrIc的有效值为 1~16,其中16表示网络不可到达,由此也可以看出RIP协议运行的网络规模是有限的。 当系统启动时,RIP协议处理模块在所有RIP配置运行的接口处发出 request报文, 然后RIP协议就进入了循环等待状态,等待外部RIP协议报文(包括请求报文和响应报 文)的到来。而接收到 request报文的相邻路由器会发出包含它们路由表信息的 response 报文。 当请求的路由器接收到一个 response报文后,它会逐一处理收到的路由表项内容 如要报文中的表项为新的路由表项,那么就会向路由表加入该表项。如果该报文表项已 经在路由表中存在,那么首先判断此更新路由是否就是本地路由当初获得的源主机,如 果是,则无论表项的距离度量值( metrIc)如何,都需要更新表项;如果不是,那么只 有当更新表项的 metrIc值小于路由表中相应表项的 metrIc值时才需要替代原来的表项。 (2)定时器定义 系统启动后,路由器以30s的间隔自动发送 response报文,在这种 response报文中 会包括本路由器中除一些被水平分裂等策略抑制之外的所有路由信息。协议将此定时器 成为路由更新定时器( Update Timer)。为了防止整个网络中参与RP协议交互的路由器 同时广播路由更新报文从而造成网络的拥塞,协议规定在30s的基本更新时间间隔上附 加一个随机变化量,此变化量的取值范围为5s。因此真正的RIP协议实现中更新定时器 值的变化为25~35s。 为了防止系统长期保留无效路由,协议为每条路由设置了路由无效定时器( Invalid Timer或 Expiration Timer)。如果在路由无效定时器超时之前没有收到关于该路由表项的 任何信息,那么该表项就会被标记为无效(距离度量值为16)。无效定时器在路由表项 创建时启动,在每次收到该路由的更新时重置。协议规定路由无效定时器为180s,即6 次路由更新的时间。 当路由变为无效时,为了能够向相邻路由器通知此路由的变化,协议仍然在路由表 中保存了该无效路由,在经过一段路由更新时间之后,当RIP确信周围的邻居路由器已 经得到了这个路由更新信息之后,此无效路由才真正地被删除。这段无效路由的存在时
的路由器请求路由信息,响应报文用来发送本地路由器的路由信息。RIP 协议使用距离 向量路由算法,因此发送的路由信息可以用序偶<vector,distance>来表示,在实际报文 中,vector 用路由的目的地址 address 表示,而 distance 用该路由的距离度量值 metric 表 示,metric 值规定为从本机到达目的网络路径上经过的路由器数目,metric 的有效值为 1~16,其中 16 表示网络不可到达,由此也可以看出 RIP 协议运行的网络规模是有限的。 当系统启动时,RIP 协议处理模块在所有 RIP 配置运行的接口处发出 request 报文, 然后 RIP 协议就进入了循环等待状态,等待外部 RIP 协议报文(包括请求报文和响应报 文)的到来。而接收到 request 报文的相邻路由器会发出包含它们路由表信息的 response 报文。 当请求的路由器接收到一个 response 报文后,它会逐一处理收到的路由表项内容。 如要报文中的表项为新的路由表项,那么就会向路由表加入该表项。如果该报文表项已 经在路由表中存在,那么首先判断此更新路由是否就是本地路由当初获得的源主机,如 果是,则无论表项的距离度量值(metric)如何,都需要更新表项;如果不是,那么只 有当更新表项的 metric 值小于路由表中相应表项的 metric 值时才需要替代原来的表项。 (2)定时器定义 系统启动后,路由器以 30s 的间隔自动发送 response 报文,在这种 response 报文中 会包括本路由器中除一些被水平分裂等策略抑制之外的所有路由信息。协议将此定时器 成为路由更新定时器(Update Timer)。为了防止整个网络中参与 RIP 协议交互的路由器 同时广播路由更新报文从而造成网络的拥塞,协议规定在 30s 的基本更新时间间隔上附 加一个随机变化量,此变化量的取值范围为 5s。因此真正的 RIP 协议实现中更新定时器 值的变化为 25~35s。 为了防止系统长期保留无效路由,协议为每条路由设置了路由无效定时器(Invalid Timer 或 Expiration Timer)。如果在路由无效定时器超时之前没有收到关于该路由表项的 任何信息,那么该表项就会被标记为无效(距离度量值为 16)。无效定时器在路由表项 创建时启动,在每次收到该路由的更新时重置。协议规定路由无效定时器为 180s,即 6 次路由更新的时间。 当路由变为无效时,为了能够向相邻路由器通知此路由的变化,协议仍然在路由表 中保存了该无效路由,在经过一段路由更新时间之后,当 RIP 确信周围的邻居路由器已 经得到了这个路由更新信息之后,此无效路由才真正地被删除。这段无效路由的存在时
间由路由删除定时器( Flush timer)来控制,协议规定路由删除定时器为120s。 (3)慢收敛问题及对策 包括RIP在内的所有距离向量算法路由协议都有一个严重的缺陷,即慢收敛(slow convergence)问题,或者称为计数至无穷( count to infinity)。“收敛”就是在自治系统 中所有的节点都得到正确的路由选择信息的过程。慢收敛问题又称为“好消息传播得快, 而坏消息传播得慢”。 图412(a)是一个正常的网络拓扑结构,从Rl可以直接到达net,从R2经过R 可到达netl。正常情况下,R2收到R1的距离向量报文后,会建立一条路径(net,R1 1),表示经过R1一跳可达netl R R 图412慢收敛问题实例 现在假设从R1到netl的路径因故障而崩溃,但R1依然能正常工作。Rl一旦检测 到netl不可到达,它会立即将原来去往netl的路径废除(将距离值设为16)。然后会出 现如下两种情况。 ①在收到来自R2的路由更新报文之前,R1将修改后的路径信息广播出去,于是 R2将修改其路由表,将原来经R1去往netl的路径(netl,Rl,1)删除。这时整个网 络路由状态是正确的。 ②R2赶在R1发送新的更新路由报文之前广播自己的路由更新报文,该报文中必 然有一条(netl,1)表项,说明从R2出发,经过一个路由器就可以到达netl。这时R 会根据此表项来修改自己的路由表,产生关于net的新路径(netl,R,2)。于是在Rl 与R2之间出现了路径环路,如图4.12(b)所示。 上述路径环路会通过RⅠ、R之间不断的路由更新报文交换而解除,但是解除过程 是非常缓慢的。在出现路径环路之后,在下一轮路由广播中,Rl将向R2广播(net1,2) 表项,R2收到此表项后,将去往netl的路径改为(netl,R1,3);然后R2向R1通告 (net1,3)表项,R1将去往netl的路由项改为(net,R2,4);…。如此下去,直到
间由路由删除定时器(Flush Timer)来控制,协议规定路由删除定时器为 120s。 (3)慢收敛问题及对策 包括 RIP 在内的所有距离向量算法路由协议都有一个严重的缺陷,即慢收敛(slow convergence)问题,或者称为计数至无穷(count to infinity)。“收敛”就是在自治系统 中所有的节点都得到正确的路由选择信息的过程。慢收敛问题又称为“好消息传播得快, 而坏消息传播得慢”。 图 4.12(a)是一个正常的网络拓扑结构,从 Rl 可以直接到达 net1,从 R2 经过 Rl 可到达 net1。正常情况下,R2 收到 R1 的距离向量报文后,会建立一条路径(netl,R1, 1),表示经过 R1 一跳可达 net1。 net1 R1 R2 (a) net1 R1 R2 (b) 图 4.12 慢收敛问题实例 现在假设从 R1 到 net1 的路径因故障而崩溃,但 R1 依然能正常工作。R1 一旦检测 到 net1 不可到达,它会立即将原来去往 net1 的路径废除(将距离值设为 16)。然后会出 现如下两种情况。 ① 在收到来自 R2 的路由更新报文之前,R1 将修改后的路径信息广播出去,于是 R2 将修改其路由表,将原来经 R1 去往 net1 的路径(net1,R1,1)删除。这时整个网 络路由状态是正确的。 ② R2 赶在 R1 发送新的更新路由报文之前广播自己的路由更新报文,该报文中必 然有一条(net1,1)表项,说明从 R2 出发,经过一个路由器就可以到达 net1。这时 R1 会根据此表项来修改自己的路由表,产生关于 netl 的新路径(netl,R2,2)。于是在 Rl 与 R2 之间出现了路径环路,如图 4.12(b)所示。 上述路径环路会通过 R1、R2 之间不断的路由更新报文交换而解除,但是解除过程 是非常缓慢的。在出现路径环路之后,在下一轮路由广播中,Rl 将向 R2 广播(net1,2) 表项,R2 收到此表项后,将去往 net1 的路径改为(net1,R1,3);然后 R2 向 R1 通告 (net1,3)表项,R1 将去往 net1 的路由项改为(netl,R2,4);···。如此下去,直到
路径长度变为16。也就是说,要经过7次来回(至少30×7s)路径环路才可以消除。 这就是所谓的慢收敛问题。上述讨论的只是一个简单的实例,路径环路只在两个相邻路 径器之间形成。更为复杂的路径环路还有可能发生在一系列路由器之间。 为了克服慢收敛问题,RIP协议中提出了以下方法。 ①简单的水平分裂法。当路由器从某个网络接口发送RIP路由更新报文时,其中 不能包含从该接口获取的路径信息。例如在图412的例子中,R2向R1发送的路由更 新报文中就不应该包含(net,1)这个表项,这样就避免了在R、R2之间形成路径环 路 ②带有毒性逆转的水平分裂法。与简单水平分裂法的原理类似,唯一的差别是 路由器向某一个接口发送RIP路由更新报文时,包含从该接口获取的路由信息,但是将 这些路由项的路径设为无穷 这两种水平分裂法各有优缺点。带有毒性逆转的水平分裂法具有更快的路由收敛速 度,但是它需要发送更多的报文,比如说在一个拥有大量路由器的局域网中使用带有毒 性逆转的水平分裂法就有可能导致大量的广播报文,造成网络泛滥现象。简单的水平分 裂法虽然收敛速度比较慢,但是由于它的处理简单,发送的报文少,所以也得到了广泛 的采用。 需要注意的是,水平分裂法可以避免两个路由器之间产生的路径环路现象,但是它 仍然不能完全避免路径环路的产生。 ③触发更新法。为了加速网络路由收敛的速度,协议提出了触发更新法。它的做 法是。一旦发现某些路由表项发生变化,就立即广播路由更新报文,而不必等待下一次 刷新周期。 触发更新法能够大大加快路由的收敛速度,但是它同样存在着更新报文数量太多 太频繁的缺点,因此需要对触发更新报文的发送频率做严格的控制。协议规定触发更新 报文的发送间隔时间范围为1~5s。 42.2开放最短路径优先协议 1、OSPF的特点 开放最短路径优先协议( Open Shortest Path Fist,OSPF)是由IETF在IS-IS协议的 基础上硏发出的基于链路状态的路由选择协议,它用来解决RIP存在的一些问题,是当 前使用较为广泛的一种内部网关协议。早期使用的内部网关协议RIP基于距离向量工作
路径长度变为 16。也就是说,要经过 7 次来回(至少 30×7s)路径环路才可以消除。 这就是所谓的慢收敛问题。上述讨论的只是一个简单的实例,路径环路只在两个相邻路 径器之间形成。更为复杂的路径环路还有可能发生在一系列路由器之间。 为了克服慢收敛问题,RIP 协议中提出了以下方法。 ① 简单的水平分裂法。当路由器从某个网络接口发送 RIP 路由更新报文时,其中 不能包含从该接口获取的路径信息。例如在图 4.12 的例子中,R2 向 R1 发送的路由更 新报文中就不应该包含(netl,1)这个表项,这样就避免了在 R1、R2 之间形成路径环 路。 ② 带有毒性逆转的水平分裂法。与简单水平分裂法的原理类似,唯一的差别是: 路由器向某一个接口发送 RIP 路由更新报文时,包含从该接口获取的路由信息,但是将 这些路由项的路径设为无穷。 这两种水平分裂法各有优缺点。带有毒性逆转的水平分裂法具有更快的路由收敛速 度,但是它需要发送更多的报文,比如说在一个拥有大量路由器的局域网中使用带有毒 性逆转的水平分裂法就有可能导致大量的广播报文,造成网络泛滥现象。简单的水平分 裂法虽然收敛速度比较慢,但是由于它的处理简单,发送的报文少,所以也得到了广泛 的采用。 需要注意的是,水平分裂法可以避免两个路由器之间产生的路径环路现象,但是它 仍然不能完全避免路径环路的产生。 ③ 触发更新法。为了加速网络路由收敛的速度,协议提出了触发更新法。它的做 法是。一旦发现某些路由表项发生变化,就立即广播路由更新报文,而不必等待下一次 刷新周期。 触发更新法能够大大加快路由的收敛速度,但是它同样存在着更新报文数量太多、 太频繁的缺点,因此需要对触发更新报文的发送频率做严格的控制。协议规定触发更新 报文的发送间隔时间范围为 1~5s。 4.2.2 开放最短路径优先协议 1、OSPF 的特点 开放最短路径优先协议(Open Shortest Path Fist,OSPF)是由 IETF 在 IS-IS 协议的 基础上研发出的基于链路状态的路由选择协议,它用来解决 RIP 存在的一些问题,是当 前使用较为广泛的一种内部网关协议。早期使用的内部网关协议 RIP 基于距离向量工作
具有跳数的限制,超过15跳的路由被认为不可达,而且RIP不支持可变长子网掩码, 导致IP地址分配的低效率,在运行时RIP需要周期性广播整个路由表,在低速链路及 广域网中应用将产生很大问题,大大降低了收敛速度,对拓扑变化的反应较为迟钝,在 大型网络中收敛时间甚至需要几分钟,这些问题的解决需要基于链路状态的新型的内部 网关协议。这种基于链路状态的新型的内部网关协议必须满足以下的实际需求 ①更快的收敛速度和更少的网络资源耗费; ②具有更易描述和实现的路由度量标准,具有可配置、区间范围介于1~65535之 间、对网络直径无限制等属性 ③支持等代价的多路径,易于实现负载均衡; ④层次化的路由体系、支持较大规模的路由域; ⑤相互独立的内部路由和外部路由 ⑥灵活的子网划分和构建机制; ⑦具有一定的安全性; ⑧能够针对服务类型选择路由等属性。 为了解决RIP的固有问题并实现上述需求,OSPF应运而生,它具有以下特点 (1)OSPF采用 Dijkstra最短路径优先算法来计算最短路径树以实现最短路径路 (2)支持CIDR,可以完全无类别地处理IP目的地址; (3)分布式的、可复制的数据模型:每一个路由器都自主建立一个网络拓扑数据 库,用来描述完整的路由拓扑数据; (4)链路状态宣告( Link State Advertisements,LSA):LSA报文通常携带部分 路由拓扑信息,这些路由信息主要包括每一个路由器和周边所有路由器的邻接关系 (5)使用了区域的概念,这样可以有效减少路由选择协议对路由器的CPU和内存 的占用,划分区域还可以降低路由器选择协议的通信量,这使构建层次化的互联网络拓 扑成为可能 (6)支持使用多条等代价的路由路径,实现负载均衡 7)使用保留的组播地址来减小对不运行OSPF协议的设备的影响,比如向所有 OSPF路由器发送 LSA Request或者 LSA Update报文时的目标地址是2240.0.5;向所 有代表路由器( Designated router)发送 LSA Request或者 LSA Update报文时的目标
具有跳数的限制,超过 15 跳的路由被认为不可达,而且 RIP 不支持可变长子网掩码, 导致 IP 地址分配的低效率,在运行时 RIP 需要周期性广播整个路由表,在低速链路及 广域网中应用将产生很大问题,大大降低了收敛速度,对拓扑变化的反应较为迟钝,在 大型网络中收敛时间甚至需要几分钟,这些问题的解决需要基于链路状态的新型的内部 网关协议。这种基于链路状态的新型的内部网关协议必须满足以下的实际需求: ① 更快的收敛速度和更少的网络资源耗费; ② 具有更易描述和实现的路由度量标准,具有可配置、区间范围介于 l~65535 之 间、对网络直径无限制等属性; ③ 支持等代价的多路径,易于实现负载均衡; ④ 层次化的路由体系、支持较大规模的路由域; ⑤ 相互独立的内部路由和外部路由; ⑥ 灵活的子网划分和构建机制; ⑦ 具有一定的安全性; ⑧ 能够针对服务类型选择路由等属性。 为了解决 RIP 的固有问题并实现上述需求,OSPF 应运而生,它具有以下特点: (1)OSPF 采用 Dijkstra 最短路径优先算法来计算最短路径树以实现最短路径路 由; (2)支持 CIDR,可以完全无类别地处理 IP 目的地址; (3)分布式的、可复制的数据模型:每一个路由器都自主建立一个网络拓扑数据 库,用来描述完整的路由拓扑数据; (4)链路状态宣告(Link State Advertisements,LSA):LSA 报文通常携带部分 路由拓扑信息,这些路由信息主要包括每一个路由器和周边所有路由器的邻接关系; (5)使用了区域的概念,这样可以有效减少路由选择协议对路由器的 CPU 和内存 的占用,划分区域还可以降低路由器选择协议的通信量,这使构建层次化的互联网络拓 扑成为可能; (6)支持使用多条等代价的路由路径,实现负载均衡; (7)使用保留的组播地址来减小对不运行 OSPF 协议的设备的影响,比如向所有 OSPF 路由器发送 LSA Request 或者 LSA Update 报文时的目标地址是 224.0.0.5;向所 有代表路由器(Designated Router)发送 LSA Request 或者 LSA Update 报文时的目标
地址是2240.0.6; (8)支持更安全的路由选择认证; (9)使用可以跟踪外部路由的路由标记; (10)支持无大小限制的、任意的度量值( Metric); (11)链路状态数据库;所有路由器保持全局一致性; (12)除了层次化的路由,对于大多数报文而言,TTL=1。 OSPF的度量值( Metric)规定为: ①除了cost(代价), Metric还可以考虑包括跳数、tik(链路延时)、负载、MTU 和可靠性等 ② Metric的取值范围是1~65535; ③RFC最初规定 Metric从带宽中推导(108/带宽):56Kb/s串行链路=1785;以太 网=10;64Kb/s串行链路=1562;T1(1.544Mb/s串行链路)=64;高速以太网/FDDI=1。 但是随着主干网带宽的提高,目前已经不采用这一推导规范。 2、OSPF的网络拓扑结构 互联网中的很多自治系统AS自身规模很庞大,拥有的OSPF路由器数量很多,这 时如果整个自治系统中OSPF路由器都运行OSPF协议则开销很大。为此,OSPF协议 对网络进行了进一步的划分,它把一个网络或一系列相邻的网络分为编号区域(Area), 一个区域的拓扑结构对于自治系统的其余部分是不可见的。这种信息的隐藏可以带来路 由信息量的显著降低。同时,区域内的路由只由区域本身的拓扑结构决定,使其不受区 域外错误信息的影响。OSPF还定义了一个特殊的区域,称为主干( Backbone),其编号 为0,所有的区域都必须与主干相连,主干负责向所有的非主干区域分发路由信息。主 干在逻辑上必须是连续的。与其它区域一样,在主干之外其拓扑结构是不可见的。图413 表示了在分级的路由结构中AS、主干和区域之间的关系
地址是 224.0.0.6; (8)支持更安全的路由选择认证; (9)使用可以跟踪外部路由的路由标记; (10)支持无大小限制的、任意的度量值(Metric); (11)链路状态数据库;所有路由器保持全局一致性; (12)除了层次化的路由,对于大多数报文而言,TTL=1。 OSPF 的度量值(Metric)规定为: ① 除了 cost(代价),Metric 还可以考虑包括跳数、tick(链路延时)、负载、MTU 和可靠性等; ② Metric 的取值范围是 1~65535; ③ RFC 最初规定 Metric 从带宽中推导(108/带宽):56Kb/s 串行链路=1785;以太 网=10;64Kb/s 串行链路=1562;T1(1.544Mb/s 串行链路)=64;高速以太网/FDDI=1。 但是随着主干网带宽的提高,目前已经不采用这一推导规范。 2、OSPF 的网络拓扑结构 互联网中的很多自治系统 AS 自身规模很庞大,拥有的 OSPF 路由器数量很多,这 时如果整个自治系统中 OSPF 路由器都运行 OSPF 协议则开销很大。为此,OSPF 协议 对网络进行了进一步的划分,它把一个网络或一系列相邻的网络分为编号区域(Area), 一个区域的拓扑结构对于自治系统的其余部分是不可见的。这种信息的隐藏可以带来路 由信息量的显著降低。同时,区域内的路由只由区域本身的拓扑结构决定,使其不受区 域外错误信息的影响。OSPF 还定义了一个特殊的区域,称为主干(Backbone),其编号 为 0,所有的区域都必须与主干相连,主干负责向所有的非主干区域分发路由信息。主 干在逻辑上必须是连续的。与其它区域一样,在主干之外其拓扑结构是不可见的。图 4.13 表示了在分级的路由结构中 AS、主干和区域之间的关系