编者按:路由器要企业网络连接甚至全国网络互连,需要得到EIGRP、OSPF等这样的路由协议支持,因为EIGRP属于Cisco专属协议,OSPF路由协议因其开放性而得到广泛应用,本例就是介绍在基于OSPF路由协议基础上,如何进行全国网络的互连组建问题。
基于OSPF路由协议,组建全国互连项目(上)
基于OSPF路由协议,组建全国互连项目(下)
【IT168 专稿】在之前所有介绍的路由协议中,适合荣新外企IT培训中心全国互连项目的协议只有EIGRP、OSPF与IS-IS。
采用EIGRP路由协议,需要所有的设备都必须使用Cisco产品,这样大大地增加了设备采购的成本。所以直到目前EIGRP也不能被广泛使用的原因也是受到了产品垄断的限制。IS-IS的性能也足以适应荣新外企IT培训中心全国网络互连的项目,但由于IS-IS最初是ISO的标准协议,为CLNS设计的,后来增加了对IP的支持。
而OSPF一开始就是IETF为IP网络设计的,所以在对IP网络的支持上IS-IS还存在很大的发展与改进空间。OSPF是专门为IP设计的,更适合IP的路由,发展成熟,标准化程度高,支持厂商多,使用多缺点暴露多,改进也多。所以目前使用的OSPF路由协议已经是比较完善的了。
通过以上的综合考虑,最终采用OSPF路由协议实施荣新外企IT培训中心的全国互连项目。其实不仅仅是该项目会采用OSPF路由协议作为组网的动态路由选择协议,OSPF路由协议几乎是目前类似项目采用最为广泛的路由协议,所以此节也是本章的核心。
了解OSPF路由协议
鉴于早期距离矢量协议所造成的诸多网络问题,网络设计者又开发了更新、更先进的路由协议——链路状态路由协议。OSPF路由协议就是一种链路状态路由协议。随着Internet技术在全球范围的飞速发展,OSPF已成为目前Internet广域网和Intranet企业网采用最多、应用最广泛的路由协议之一。OSPF(Open Shortest Path First)路由协议是由IETF(Internet Engineering Task Force)IGP工作小组提出的,是一种基于SPF算法的路由协议,目前使用的OSPF协议是其第2版,定义于RFC 1247和RFC 1583。
作为一种链路状态的路由协议,OSPF将链路状态广播数据包LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。
OSPF路由协议也是一种IGP协议,它只能在工作在自治域系统内部,不能跨自治域系统工作。对比距离矢量路由协议,OSPF路由协议具有快速收敛与适用范围更广的优势。
在大型的网络拓扑结构中,如果每台路由器都将自己学到的整个网络的路由信息传送更新的话,将会严重地占用带宽资源,对于像荣新外企IT培训中心这样以传输音频、视频为主的数据时,更会出现音频、视频传输的不流畅。而OSPF路由协议很好地解决了这些问题。在刚刚开始工作的时候,首先和相邻的路由器建立邻居关系,形成邻居表,然后互相交换自己所了解的网络拓扑。路由器在没有学习到全部网络拓扑是不会进行任何路由操作的,因为这时候的路由表是空的。只有当路由器学到了全部的网络拓扑,建立了拓扑表(也称链路状态数据库)之后,他们会使用最短路径优先(SPF)算法,从拓扑表中计算出非常好的路由。因为,所有运行OSPF路由协议的路由器都维护着相同的拓扑表,路由器可以自己从中计算路由,所以这些路由器不需要周期性的发送路由更新包,这样便有效地降低了带宽的使用率。
提示:
使用OSPF协议对路由设备需要考虑,虽然OSPF路由协议对带宽的占用降低,但是由于它需要针对整个网络拓扑结构做出计算,所以对路由器的硬件设施,包括CPU、内存等都有较高的要求。
在运行OSPF路由协议的网络里,当网络拓扑发生了变化,例如,一条物理线路出现了故障。发现该变化的邻居路由器会向其他路由器发送触发的路由更新包——链路状态更新包(LSU)。在LSU中包含了关于发生变化的网段信息,链路状态通告(LSA)。接收到该更新包的路由器,会继续向其他路由器发送更新,同时根据LSA中的信息,在拓扑表里重新计算发生变化网段的路由。由于没有对链路的保持时间,OSPF路由协议的收敛速度是相当快的,这一点对于大型的网络是非常关键的。
OSPF路由协议还可以把一个大型的网络划分区域,这点跟IS-IS相似,不同的是在OSPF中会有一个唯一的骨干区域。这样对于路由信息的汇总起了很好的作用,对于设备的采用也可以根据其所在区域的位置选择不同成本的设备,对工程成本有了很好的规划。这种特性也使OSPF路由协议能够在大规模的路由网络中正常高效地工作。
1.链路
将运行OSPF路由协议的路由器所连接的网络线路称为链路。
路由器会检查其所连接的网络状态,然后将该信息由自己的所有接口向邻居传送,这个过程称为“泛洪(Flooding)”。运行OSPF路由协议的路由器,由邻居处得到关于链路的信息,并且将该信息继续向其他邻居传送。
2.链路状态
链路的工作状态,是正常工作,还是发生故障,这些相关的信息称为链路状态。
在OSPF中,只需要发送链路状态信息就可以确保对网络的掌握。也是通过这种信息来交换学习路由信息。
3.区域
OSPF路由协议会把大规模的网络划分成多个小范围的区域,以避免大规模网络所带来的弊病,从而提高网络性能。OSPF中区域的划分是非常重要的内容,很多公司的面试题都会涉及到这个方面,后面会具体了解OSPF。
4.邻居
在同样运行OSPF路由协议的两台路由器物理直连时,就可以成为邻居关系。只有成为了邻居关系它们互相才能交换路由信息。当线路出现问题时,可以通过查看邻居状态来排除故障。
5.链路开销
OSPF路由协议通过计算链路的带宽来计算非常好的路径的选择。每条链路根据带宽不同会有不同的度量值,这个度量值在OSPF路由协议中称作“开销(Cost)”。
10Mbps的以太网的链路开销是10,16Mbps令牌环网的链路开销是6,FDDI或快速以太网的开销是1,2M串行链路的开销是48,56KB串行线路的开销为1785。
路由器将整条路径的开销相加,所得之和最小的值为非常好的路径。
6.邻居表
与EIGRP、IS-IS一样,OSPF路由协议也需要维系3张表。最基础的就是邻居表。
凡是与路由器同在OSPF路由协议中并且物理直连的路由器都会被收录在该表中,只有形成了邻居表,路由器才可能像其他的路由器学习拓扑结构。
7.拓扑表
当路由器建立了邻居表之后,运行OSPF路由协议的路由器会互相通告自己所了解的网络拓扑建立拓扑表。在一个区域里,所有的路由器应该形成相同的拓扑表。只有建立了拓扑表之后,路由器才能使用SPF算法从拓扑表里计算路由。
8.路由表
路由器依靠路由表来为数据包进行路由操作。在运行OSPF路由协议的路由器中,当完整的拓扑表建立起来之后,路由器便会按照链路带宽的不同,使用SPF算法从拓扑表例计算出路由,记入路由表。
9.路由器标识(Route ID)
路由器标识不是为路由器起的名称,而是路由器在OSPF路由协议操作中对自己的标识。一般来说,在没有配置回环接口(Loopback Interface:一种路由器上的虚拟接口,它是逻辑存在的,路由器上并没有这种物理接口,它是永久开启的。)时,路由器的所有物理接口上配置的最大IP地址就是这台路由器的标识。如果在路由器上配置了回环地址接口,则不论回环地址上的IP地址是多少,该地址都自动成为路由器的标识。当在路由器上配置了多个回环接口时,这些回环接口中最大的IP地址将作为路由器的标识。
在实际工程中,可能会遇到没有设置Route ID的情况,由路由器默认的最大物理接口地址为Route ID,而这个接口并没有连接任何设备,也就是Shut Down状态,在这时不管这台路由器的其他接口状态如何,OSPF都将随着Route ID的Shut Down而不启动。所以,在设置Route ID时一定要选用Loopback地址作为Route ID,因为这个地址是永久不关闭的,而且最好有完善的规划。
10.LSA与LSU
路由器对某一条线路的状态更新称为LSA,对一组链路的状态更新称为LSU,LSU更新包里可包含多个LSA。
11.DR与BDR
当几台路由器工作在同一网段上时,为了减少网段中路由信息的交换数量,OSPF路由协议定义了DR和BDR。负责收集网络中的链路状态通告,并将他们集中发给其他的路由器。BDR实际上是DR的备份,在DR本身没有问题时,BDR并不工作,一旦DR出现了问题BDR就会接替DR的工作。在实际工程中,DR与BDR的概念应用并不广泛。
最短路径优先算法
OSPF路由协议使用SPF(Shortest Path First)算法计算路由的非常好的路径。该算法是由一位荷兰的计算机科学家Dijkstra于1959年发现的,所以该算法也称为Dijkstra算法。IS-IS也使用这种算法。
该算法把网络考虑为一组点到点连接的节点,每条链路有一个开销值,每个节点有它自己的名称及一个包含已知物理拓扑的完整链路信息的数据库。如图10-32所示的网络环境。
下图描述了每一台路由器到达邻居的开销,如果从R-A路由器出发访问到R-F将会有两条链路,通过SPF的算法将链条链路的Cost值相加得出的结果为:
* R-A→R-B→R-D→R-F的cost值为50。
* R-A→R-C→R-E→R-F的cost值为97。
根据SPF的算法规定,R-A到达R-F的非常好的路径为R-A→R-B→R-D→R-F。
在图下中可以看到R-D与R-E之间还有一条链路,这对于网络本身来说造成了环路,无论这条链路的Cost值为多少,都将不会列入OSPF路由协议的非常好的路径之中。OSPF路由协议会使用SPF算法计算出一条路径优先树以避免环路。
图: 运行OSPF路由协议的网络环境
OSPF路由协议对路由网络区域的划分
在荣新外企IT培训中心全国互连的网络中总路由器多达上百台。这样庞大的网络中如果没有区域的划分,按照OSPF路由协议的规定,每台路由器都要熟悉整个的网络拓扑结构并且计算全部网络的路由信息,对于路由器本身来说造成了非常大的负载需求。因为在这样的网络中路由信息很可能成千上万条,如果每台路由器都使用可以存储并运算如此庞大的路由信息的路由设备的话,那么肯定会对工程的成本增加,也会使得路由器对数据传输的反应速度过慢。
另外,在一个大的区域里集中了如此多的路由器和链路,出现设备故障和链路故障的概率也会相应增加,而每次故障都会引起路由信息更新包在网内的传送,即便是OSPF这样快速收敛的路由协议也将会严重地影响网络可用性。
OSPF路由协议通过使用分级的设计,把整个大型路由网络划分成多个小范围的区域,从而解决了上述问题。OSPF路由协议将大型网络划分为骨干域和非骨干域。骨干域只有一个,称为区域0(Area0),所有的非骨干域都必须要与骨干域相连。
这样的区域划分方法,使得每个区域中的路由器都不再考虑其他区域的网络变化,只关心其内部区域的状态就可以了。一个区域内的变化,只会引起本区域内的收敛发生。通过这样的区域划分,网络故障的影响范围被缩小,整个网络不会进行频繁的收敛。注意图10-33中在各个分中心区域有边界路由器。
该路由器负责学习两个区域的路由,而区域内部的路由器只需要使用几台路由或者汇总路由,其目的是其他区域的数据包路由给边界路由器,右边界路由器将数据包路由到其他区域,而区域内部的路由器不需要学习其他区域的路由。这样,相对而言,路由器所维护的路由表体积显著减小,路由操作效率提高。
在网络还存在一种区域成为末节区域,在声明该区域为末节区域后该区域不接受其他区域的链路状态通告,这可以有效地阻止链路故障造成的拓扑重新计算在网络中蔓延,从而控制网络故障传递的范围,防止因个别网络故障造成整个网络不稳定情况的发生。末节区域如图10-34所示,Router1路由器存在于整个网络的边缘,在路由器的物理连接中拉出一条线路外没有再接触OSPF网络的线路。
图:荣新外企IT培训中心全国互连部分网络拓扑结构
图10-34 末节区域的形态
提示:
区域划分要注意规划地址。在实际案例中,为了到达到真正的区域划分的目的,每一个区域的路由都要尽量的进行汇总,这就要求进行分级的、体系化的编址。另外,在网络工程师的面试中经常会问到OSPF的区域划分,一般是给出一个拓扑结构让应聘者划分。记得不要把路由器整个圈在区域内,只把接口圈进去就可以了,从这点一般来判定应聘人员的从业资历。