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将网络链路状态广播出去。这样就减少了多址访问网络上各路由器之间邻接关系的数量。


相关内容