路由协议的种类繁多是每一个协议学习者都知道的。那么今天我们就来认识一下OSPF路由协议。这个协议的使用弥补了RIP协议的不足,更能适应现在大规模的异构网络的链接。
OSPF路由协议
20世纪80年代中期,RIP已不能适应大规模异构网络的互连,OSPF(Open Shortest Path First,开放最短路径优先)路由协议随之产生。它是网间工程任务组织(1ETF)的内部网关协议工作组为IP网络而开发的一种路由协议。
1.OSPF路由协议简介
OSPF是一种基于链路状态的路由协议,需要每个路由器向其同一管理域的所有其他路由器发送链路状态广播信息。在OSPF的链路状态广播中包括所有接口信息、所有的量度和其他一些变量。利用OSPF的路由器首先必须收集有关的链路状态信息,并根据一定的算法计算出到每个节点的最短路径。而基于距离向量的路由协议仅向其邻接路由器发送有关路由更新信息。
开放最短路由优先协议OSPF是IETF组织开发的一个基于链路状态的内部网关协议。目前使用的是版本2(RFC2328),其特性如下:
适应范围。支持各种规模的网络,最多可支持几百台路由器。
快速收敛。在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
无自环。由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
区域划分。允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
等值路由。支持到同一目的地址的多条等值路由。
路由分级。使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第1类外部路由、
第2类外部路由。
支持验证。支持基于接口的报文验证以保证路由计算的安全性。
组播发送。支持组播地址。#p#
2.OSPF路由协议计算过程
每个支持OSPF协议的路由器都维护着一份描述整个自治系统拓扑结构的链路状态数据库LSDB(Link State Database)。每台路由器根据自己周围的网络拓扑结构生成链路状态广播LSA(Link State Advertisement),通过相互之间发送协议报文将LSA发送给网络中其他路由器。这样每台路由器都收到了其他路由器的LSA,所有的LSA放在一起便组成了链路状态数据库。
OSPF路由协议利用链路状态算法建立和计算到每个目标网络的最短路径,该算法本身十分复杂,下面简单、概括地描述了链路状态算法工作的总体过程:
初始化阶段,路由器将产生链路状态通告,该链路状态通告包含了该路由器全部链路状态。
所有路由器通过组播的方式交换链路状态信息,每台路由器接收到链路状态更新报文时,将拷贝一份到本地数据库,然后再传播给其他路由器。
当每台路由器都有一份完整的链路状态数据库时,路由器应用算法针对所有目标网络计算最短路径树,结果内容包括:目标网络、下一跳地址、花费,是IP路由表的关键部分。
如果没有链路花费、网络增删变化,OSPF将会十分安静,如果网络发生了任何变化,OSPF通过链路状态进行通告,但只通告变化的链路状态,变化涉及到的路由器将重新运行算法,生成新的最短路径树。
每台路由器都使用算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由,外部路由信息为叶子节点,外部路由可由广播它的路由器进行标记以记录关于自治系统的额外信息。显然,各个路由器各自得到的路由表是不同的。
此外,OSPF路由协议为使每台路由器能将本地状态信息(如可用接口信息、可达邻居信息等)广播到整个自治系统中,在路由器之间要建立多个邻接关系,这使得任何一台路由器的路由变化都会导致多次传递,既没有必要,也浪费了宝贵的带宽资源。为解决这一问题,OSPF协议定义了“指定路由器"DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态广播出去。这样就减少了多址访问网络上各路由器之间邻接关系的数量。