大型网络中内部网关(IGP)的选择
众多Internet服务提供商在自治域系统(Autonomous System)间普遍使用外部网关路由—BGP(Border Gateway Protocol) Version 4,然而在自治域系统内部使用的路由都不尽相同,但都属于内部网关协议—IGP(Internal Gateway Protocol)。
本文将结合目前国内大型网络中正在使用着的内部网关路由协议进行分析对比,并提出自己的见解和看法。
首先,让我们来看两个早期的比较简单的路由协议:
RIP Version1 (--Routing Information Protocol)和IGRP(--Interior Gateway Routing Protocol)
这两个路由协议都是非常容易设计、配置和维护的路由协议,属于距离矢量路由协议,仅适用于小型网络,而且并不需要结构化的地址方案,只是用平面的网络体系结构。
它们的缺点主要有:
· RIP使用路由器跳数(Hop Count)作为路径的开销,并作为最佳路径的选择依据,所以有时会导致选择出来的路径并不是真正的最佳路径,并且使网络直径只能限制在15跳之内,超过15跳的路由将被RIP认为是不可到达。而IGRP并不使用路由器跳数计算路径开销,所以对于网络直径的限制非常小(最大允许255跳路由器)。IGRP使用复合的开销算法,利用这些参数:带宽(Bandwidth);延时(Delay);可信度(Reliability);负载(Load);最大传输单元(MTU)。所以选择最佳路径将会更准确。
· RIP(每30秒)和IGRP(每90秒)定期就要将整个路由表作为路由更新从各个端口广播出去,这样虽然需要的计算不多,占用的CPU和内存并不多,但是消耗的网络带宽很多。而且因为必须是等到更新周期到才能通知其他路由器路由的变化,所以网络收敛速度非常慢,在大型网络中有可能导致路由表不一致。
· 需要使用例如Split Horizon; Count to Infinity; Poison Reverse; Hold-Down timer 等等技术以保证不出现路由循环。(这些技术中,有些在一定条件下反而有负面影响)
即使RIP现在已经有了Version 2,相对于第一个版本已经有了很多改进,例如RIP v2已经支持VLSM,并且使用组播发送路由更新,但是RIP v2在很多特性仍然是继承了第一个版本,所以仍然属于距离矢量路由协议,仍然不适用于大型网络。
IGRP是特有的距离矢量路由协议,是于80年代中期为了解决RIP路由协议所具有的问题的开发的。IGRP较RIP已经有了很多改进,包括使用更丰富的开销算法参数、消除了RIP对于网络直径的15跳数限制、可以在开销不等的路径上进行负载均衡等等。 但是IGRP仍然没有解决RIP version1的例如扩展性方面的问题。
这两种路由协议都是较早期推出的距离矢量路由协议,所以都有一定的缺点,使它们非常不适于在大型网络上应用。
随着网络规模不断扩大,需要一些运行更加高效的路由协议,它们包括:
EIGRP----Enhanced IGRP
从该路由协议的名称就可以看出,EIGRP是Cisco开发的增强型版本的IGRP路由协议,所以仍然是Cisco特有的。
开发EIGRP的目的就是解决IGRP所面临的可扩展性问题。因为EIGRP仍然属于距离矢量路由协议,但是它却又具有链路状态路由协议的一些特性,所以Cisco将EIGRP定性为高级距离矢量路由协议。
EIGRP使用DUAL算法,将最佳路由的计算分布到了多个路由器上,每个路由器仅仅负责自己的一小部分计算,所以这就比OSPF进行的SPF算法根据整个网络的拓扑计算最短路径树时占用的CPU资源要少得多了。
和IGRP一样,使用复合型路径开销算法,参数仍然是:带宽(Bandwidth);延时(Delay);可信度(Reliability);负载(Load);最大传输单元(MTU)。 所以计算最佳路由非常准确,并且会对网络直径有任何限制。
EIGRP具有链路状态路由协议的许多特性,所以它也维护邻居表、拓扑数据库,并且在它的拓扑数据库中维护着多条可选最佳路径(Feasible Successor),如果最佳路径失效了,不用经过任何复杂的算法,EIGRP仅需要进行简单的比较之后就可以将冗余路径提升为当前最佳路径,并装载到路由表中,这个特性使得EIGRP收敛速度非常快,所以,也可以说是因为具有链路状态路由协议的部分属性,才使得EIGRP收敛速度如此之快。 并且支持在等开销和非等开销的路径上进行负载均衡。
EIGRP并不是定期发送路由更新,它只有在拓扑结构有变化时才发送路由更新,并且也不是发送整个路由表,而是只发送有变化的链路的状态;并且EIGRP并不是使用广播发送路由信息,而是使用组播,从而减少了带宽的的消耗。
EIGRP是无类路由协议,所以支持VLAM,CIDR等等技术。EIGRP并没有像OSPF那样必须在区域边界或自治系统边界才能进行汇总, EIGRP可以在网络任何地方进行汇总,并且还支持自动和手动汇总。
EIGRP支持非常多的被路由协议(Routed Protocol),包括IP,IPX,AppleTalk。
EIGRP也支持多种类型的广域网链路:点到点; 非广播多路访问(NBMA),多点。因为EIGRP路由协议本身消耗的带宽非常小,所以也可以在广域网链路上运行,并且该路由协议占用的带宽是可以根据实际情况进行调节的。
EIGRP比OSPF配置要简单得多,并且并不需要必须是结构化的网络(当然,如果是结构化网络会使路由协议运行效率更高,并且使路由汇总非常容易)。 EIGRP一开始就是为了在非常大型网络上应用而设计的。 而OSPF则是对于网络的设计非常敏感的。
我个人认为,EIGRP的局限性就在于它是Cisco公司特有的路由协议,网络上必须都是Cisco的路由器,其他厂商生产的路由设备并不能在运行EIGRP的网络上正常工作。
所以在像网通集团骨干网络、中国电信ChinaNet、及各个省的省网这种城域网甚至是国家级的大型网络上,并不适于运行该路由协议,既不便于掌握路由协议的核心技术,又不便于将来网络升级或扩容改造。
但是EIGRP的确是有很多开放的、标准化了的路由协议所没有的特性,非常适于在大型网络上使用。 所以研究该路由协议的确实有利于提高网络运行效率的。
OSPF----Open Shortest Path First
OSPF的确是在很多省网上(例如北京省网)正在运行着的路由协议,运行效率很高,网络非常稳定。 所以我们着重对该路由协议进行研究。
根据该路由协议的名称就可以知道,OSPF是一个开放标准,并不被某个设备厂商所独自拥有,也就是说各个厂商生产的路由设备可以互操作(只要支持该路由协议),这也就正是OSPF被广泛使用的原因之一。OSPF是由IETF在RFC 1583中定义的。
OSPF使用链路带宽作为路径开销,并没有使用路由器跳数,所以对网络直径没有限制。
作为链路状态路由协议,OSPF维护邻居表和拓扑数据库(相同区域中的每个OSPF路由器都维持一个整个区域的拓扑数据库,并且都是相同的),并且根据拓扑数据库通过Dijkstra或SPF(Shortest Path First)算法以自己作为根节点计算出最短路径树。因为一旦某个链路状态有变化,区域中所有OSPF路由器必须再次同步拓扑数据库,并重新计算最短路径树,所以会使用大量CPU和内存资源。 然而OSPF不像RIP操作那样使用广播发送路由更新,而是使用组播技术发布路由更新,并且也只是发送有变化的链路状态更新(路由器会在每30分钟发送链路状态的概要信息,不论是否已经因为网络有拓扑变化发送了更新),所以OSPF会更加节省网络链路带宽。
在大型的网络中,通常会将整个网络分成多个区域进行管理。
作为整个网络的骨干区域—区域零必须存在,其必须唯一存在其他非骨干区域必须和骨干区域相连(通过物理连接或通过Cisco的技术—Virtual Link均可以),非骨干区域之间只能通过骨干区域相互通信。
将网络划分成多个区域有很多益处:
· 可以按照不同的地域或行政上的策略创建区域,从而限制区域之间路由信息的共享。
· 创建区域可以增加性。
· 有助于增加整个网络的稳定性。
考虑到OSPF网络中划分区域将会使配置和故障排除的难度增大,也许有人会提出,可以将所有的路由器放在同一个区域中,也就是说整个网络只有骨干区域--区域零,那么有没有考虑过这个问题呢:
因为根据OSPF路由协议的特点,每个OSPF路由器都需要维持一份整个网络的拓扑,一旦有某条链路状态改变,这将促使区域内部的所有路由器都需要重新计算自己的最短路径树,这将消耗大量的路由器CPU和内存资源。
所以对于ChinaNet这样的大型骨干网络,网络内需要运行近百台路由器,如果网络上只建立区域零,所有路由器都在这一个区域中,那么网络将会变得非常的不稳定,整个网络受到的波动非常大, 如果分成区域后,如果有链路状态改变,则只有该区域内的路由器需要更新拓扑数据库,并重新计算最短路径树,而该区域之外的路由器却不受到影响,这样就隐藏了链路状态变化带来的影响,而且减少了需要传送的链路状态发布信息,大大节省了网络带宽。
况且,如果整个网络只有一个区域,所有路由器都只存在于区域零中,则每个路由器中存放的整个网络的拓扑数据库将会非常大,不但占用大量路由器的内存,而且在计算该路由器的最短路径树时也将会占用大量的CPU资源。 所以Cisco推荐的是区域所包含的路由器最大不应该超过200个。
OSPF中规定区域的类型有以下几种:
· Backbone Area: 也就是区域零。 所有的非骨干区域必须通过骨干区域才能互相通信,这也是OSPF的一个缺点,它导致了骨干区域的压力非常大,从而限制了OSPF的扩展性。
· Stub Area: 并不接收外部的链路状态发布信息(是由ABSR产生的,用于出此自治域的路由),但是仍然接收ABR发送的汇总的链路状态发布信息。
· Totally Stubby: 不接收汇总的和外部的链路状态发布信息。 注意,这种类型的区域是Cisco特有的. 该有更多类型的区域在此不作更深的介绍,如果有兴趣可以查阅相关资料。
根据以上区域的划
【责编:admin】
--------------------next---------------------