OSPF协议是我们网络中最常用的IGP路由协议之一,很多时候是可以把之一去掉的,为什么OSPF有如今的地位呢?
原因有很多,今天我们就来学习一下其中一个原因,OSPF协议丰富的防环机制。
OSPF属于基于链路状态的动态路由协议,运行OSPF的路由器之间交互LSA,而OSPF的计算正是基于各种LSA(以下解析以常见LSA类型为例),所以OSPF路由的防环机制是基于LSA的设计。
下面我们就来分别探讨各种类型的LSA在防环上的考虑。
一
Router LSA及Network LSA的防环机制
Router LSA(1类LSA):每台OSPF路由器都会产生。它描述了该路由器直连接口的信息。Router LSA只能在所属的区域内泛洪。Router LSA使用Link来承载路由器直连接口的信息。每条Link均包含“链路类型”、“链路ID”、“链路数据”以及“度量值”这几个关键信息。
Network LSA(2类LSA) :由DR产生,描述本网段的链路状态,在所属的区域内传播。Network LSA 记录了该网段内所有与DR建立了邻接关系的OSPF路由器,同时携带了该网段的网络掩码。
通过在区域内泛洪的Router LSA及Network LSA,OSPF路由器能够描述出区域内的网络拓扑及网段信息。OSPF路由器为每个区域维护一个独立的LSDB,并且以区域为单位运行SPF算法。由于同一个区域内的OSPF路由器拥有相同的LSDB,所以可以基于这个LSDB计算出一棵以自身为根的、无环的最短路径树。
简单举个例子
第一步:构建SPF树
路由器将自己作为最短路径树的树根,根据Router-LSA和Network-LSA中的拓扑信息,依次将cost值最小的路由器添加到SPF树中。路由器以Router ID或者DR标识。
广播网络中DR和其所连接路由器的cost值为0。
SPF树中只有单向的最短路径,保证了OSPF区域内路由计算不会出现环路。
第二步:计算最优路由
将Router-LSA、Network-LSA中的路由信息以叶子节点形式附加在对应的OSPF路由器上,计算最优路由。
已经出现的路由信息不会再添加到SPF树干上。
所以,通过Router-LSA和Network-LSA,路由器能够描绘出区域内的拓扑及网段信息,再运行SPF算法,计算出到达每个网段的最优路径,并将这些路径安装到OSPF路由表中,因此当前区域内的路由可以实现无环路。
二
Network Summary LSA的防环
OSPF区域间路由信息传递是通过ABR产生的Network Summary LSA(3类LSA)实现的。Network Summary LSA(3类LSA)由ABR产生,用于向一个区域通告到达另一个区域的路由。注意,这类LSA所携带的直接就是路由信息了,于是有产生环路的可能。
比如:
OSPF区域间路由的传播过程与距离矢量路由协议的路由传播过程非常相似。因此对于区域间路由的传递,OSPF也需要一定的防环机制。
1、OSPF要求所有的非0区域必须与骨干区域(区域0)相连,区域间路由需经由骨干区域中转。
OSPF要求所有的非骨干区域必须与Area0直接相连,区域间路由需经由Area0中转。区域间的路由传递不能发生在两个非骨干区域之间,这使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑。
2、ABR只能够将其所连接的区域的区域内部路由注入到Area0,但是可以将区域内部路由及区域间的路由注入到非0常规区域。ABR从非骨干区域收到的Network Summary LSA不能用于区域间路由的计算。
严格上来说,OSPF要求ABR设备至少有一个接口属于骨干区域。
当一台ABR在非Area0的区域中收到Network Summary LSA时,会将其装载进LSDB,但是该OSPF路由器不会使用这些Network Summary LSA进行路由计算,更不会将这些Network Summary LSA再注入回Area0中。
3、ABR不会将描述一个Area内部的路由信息的Network Summary LSA再注入回该区域中。
OSPF区域间路由的传递行为,类似于距离矢量路由协议的机制,比如水平分割和cost值的叠加。以下图为例:
在Area1中,R1及R2通过泛洪Router LSA、Network LSA,两台路由器都能够根据这些LSA计算区域内的无环路由,而作为ABR的R2会向Area0中注入用于描述Area1内路由的Network Summary LSA,而这些Network Summary LSA是不会再注入回Area1的,这类似水平分割行为。
R2在向Area0通告Network Summary LSA时携带上cost值,这个值就是R2到达目标网段的cost,而R3收到这些Network Summary LSA并计算路由时,路由的cost就是在R2所通告的Cost值的基础上,加上R3自己到R2的cost值。cost值仅仅是数字相加,类似于距离矢量路由协议(比如RIP)。
4、Network Summary LSA还涉及了DN比特位,用于解决在MPLS VPN环境下的环路问题。
三
ASBR-Summary LSA的防环
ASBR Summary LSA本质上与Network Summary LSA类似(报文结构上也有体现),Network Summary LSA用于描述网段路由,ASBR Summary LSA用于描述ASBR,二者的防环机制是一致的,因此这里不在赘述。
四
AS-external LSA的防环
ASBR(AS Boundary Router):自治系统边界路由器。只要一台OSPF设备引入了外部路由,它就成为了ASBR。ASBR将外部路由信息以AS-external LSA(5类LSA)的形式在整个OSPF网络内泛洪。一台路由器使用AS-external LSA计算出路由的前提有两个,一是要收到AS-external LSA,二是要知道产生这个AS-external LSA的ASBR的位置。
与ASBR同在一个区域的路由器能够根据该区域内泛洪的Router LSA及Network LSA计算出到达该ASBR的最短路径,从而计算出外部路由。其他区域的路由器需要获取ASBR-Summary LSA后才能计算出到达ASBR的最短路径,进而利用该ASBR产生的AS-external LSA计算出外部路由。
AS-external LSA将会被泛洪到整个OSPF域。表面上看,它本身并不具有什么防环的能力,但实际上,它可以依靠Router LSA(区域内)、Network Summary LSA(区域外,有FA地址)及ASBR-Summary LSA(区域外,无F地址)来实现防环。
另外AS-external LSA中的External Route Tag字段可以用于在MPLS VPN环境下外部路由的防环。
以上内容我们可以看到OSPF从LSA设计角度、区域设计角度、路由学习机制角度等方面多加考虑,保障了“无环路”的路由计算,从而在越发复杂的网络环境中仍能立足于重要路由协议之列。通过本文的学习,也能更好的提升对于OSPF原理的理解。
关键词:路由协议系列之七(各种路由协议)