2.6区域间路由计算
单区域的弊端:
- 网络规模扩大,导致SPF树变大,需要跟多的CPU资源,收敛慢
- 网络不稳定时,导致单区域全网路由进行计算
- 无法执行路由汇总,路由表规模变大,消耗内存资源
2.6.1 Network Summary LSA(3类LSA)
3类LSA,ABR路由器至少有一个接口属于区域0,将其他区域的1,2类LSA转换为3类LSA在本地区域内泛洪,如果骨干区域收到3类LSA还需要传递给其他的区域,也可以通过其他ABR路由器将该3类LSA再转换为3类LSA。如图2.24所示,AR2是ABR,将区域0中的1,2类LSA转换为3类LSA发送到区域1中,将区域1中的1,2类LSA转换成3类LSA发送到区域0中。
图2.24 OSPF多区域ABR设备
如图2.24,AR2是ABR设备,此时在AR1上输入命令display ospf abr-asbr查看与ABR和ASBR的相关路由,结果如图2.25所示,Destination字段显示了ABR或者ASBR的Router ID,Type字段显示了该条区域内路由是查找ABR的路由。
图2.25 命令显示了ABR相关信息
2.6.2区域间路由计算过程
- ABR通过1类LSA中的三个bit位(V/B/E)告诉直连区域自身是该区域的ABR设备。
- ABR同区域的所有路由器根据区域内的SPF树计算自身到ABR的开销以及下一跳。Display ospf abr-asbr命令可以显示(实际上是通过1,2类LSA计算而得)。
- 查看LSDB中的三类LSA,并计算路由条目。计算出来的路由条目依附对应的ABR路由器上。
- 路由器根据3类LSA结合自身到ABR的路由,计算区域间的路由。
- ABR将直连和区域内路由转换成3类LSA发送到其他区域。
- ABR将区域0中的3类LSA转换成非骨干区域3类,Adv rtr会改变,cost重新计算。
- 非骨干区域的3类LSA不会再传回骨干区域,非骨干区域的3类都是从骨干区域学习到的,如果传回骨干区域,那么可能会出现环路,因此不允许。叫做区域间的水平分割。
- ABR在区域0存在活动的Full邻居关系是,不会用非骨干区域的3类进行路由计算。
Network Summary LSA的数据结构如图2.26所示,
图2.26 Network Summary LSA的数据结构
3类LSA的结构中,从LS Age字段到Length字段都与1类LSA和2类LSA类似,只是取值不同,介绍以下几个:
- LS Type:取值为3,表示该LSA为Network Summary LSA
- LS ID:为路由条目的前缀信息
- Advertising Router:产生该LSA的路由器Router ID,即ABR的Router ID。
- Network Mask:路由前缀的掩码信息。
- Metric:区域间路由前缀的开销值
图2.26 Network Summary LSA数据包结构
图2.26是抓包显示的封装在LSU报文中的Summary LSA的数据结构。Option字段的内容和Hello报文中的Option功能相同。
3类LSA中携带的路由前缀信息,以及掩码,可以根据这些参数可以计算区域间的前缀和路由信息。而域内的路由器根据1,2类LSA计算出ABR的位置,最终计算出对应的3类前缀路由。区域间路由的开销是3类LSA的开销加上自身到ABR的开销之和。
如果两个非骨干区域相连,没有区域0,那么两个区域中间的路由器是非ABR路由器。如图2.27,AR1和AR3存在通信问题。
图2.27 非骨干区域之间直接相连的OSPF域
AR1需要知道ABR的Router ID,并且可以通过1,2类LSA计算ABR的位置,但是由于AR2没有任何一个接口是属于区域0,则AR2产生的LSA不会将Bbit位置位(宣称自己是ABR),那么AR1无法计算AR3上的路由,同理AR3亦然。
如果在AR2上配置一个Loopback接口,并规划进入区域0中,那么AR2将成为ABR的角色,并在1类LSA中置位Bbit位,此时AR1和AR3都可以根据区域内LSA计算出到达ABR路由器(AR2)的路由,因此,AR1和AR3才能通信。
如果此时AR3再连接一台路由器,并将接口宣告进入区域0中,那么此时,AR1虽然能够学习区域0中的路由条目,但是AR3旁边的新加路由器属于区域0,无法学习到AR1的路由条目,因为。AR2将3类LSA发送给AR3的时候,AR3无法在将该LSA再转化为3 LSA而发送回骨干区域。区域间的水平分割。
2.27 OSPF区域之间存在多个ABR的思考问题
如图2.27所示,x路由发送给AR2之后,AR2转换为3类LSA给到AR4,再给到AR3,此时AR3学习到AR10给他的1类LSA和AR4给他的3类LSA。AR3选择路径时候,1类LSA优于3类LSA。
y路由发送给AR2,AR2生成3类LSA发送给AR1,再给AR3,此时AR3收到3类LSA,也收到AR4的1类LSA,该3类LSA因为ABR路由器AR3在骨干区域存在邻居,而不会被计算。直接使用1类LSA计算Y路由,此时收到的3类LSA不会进行计算,也就不会再次转换为3类LSA发往区域1。
总结:区域间防环机制
- OSPF要求所有的非骨干区域必须与骨干区域相连,区域间路由需要经由Area 0中转。
- 区域间的路由传递不能发送在两个非骨干区域之间,这使得OSPF的区域架构上形成类似星型的拓扑。
- 1,2类LSA优于3类LSA,区域0中的3类优于非骨干区域的3类LSA。
2.6.3 虚链路
Vlink的用途:
- 修复不连续的区域0。
- 逻辑上让没有和区域0相连的非骨干区域和骨干区域相连。
- 区域0的备用链路。
配置Vlink的限制:
- Vlink只能在非骨干区域创建
- Vlink只能穿越一个非骨干区域
- 特殊区域不能创建Vlink
除非必要不建议使用Vlink,Vlink配置不合理可能会回出现环路。Vlink两端的开销等于虚链路穿越的区域的物理接口的开销之和。
虚链路有环路风险,V-link的特点:
- 通过虚链路得到的LSA1和LSA2,LSA3,LSA4所计算出的路由,不会转换成虚链路所咋的区域的LSA3,LSA4目的是防环。
- 无法再虚链路所在的区域对区域0的路由实现汇总。(不满足规则3)
- 规则3,即存在V-link的ABR得到一条LSA3(非自身产生的),那么该LSA在自身区域0中存在,此时也要求次LSA也必须在V-link穿越的transit区域的LSDB中也存在,否则将不使用该3类LSA进行计算路由。V-link通过1,2类LSA计算路由,在V-link所经过的区域没有对应的3类,也不会计算这些经过V-link泛洪来的1,2类的路由。逻辑推理:传输区域如果没有次3类LSA,那么存在黑洞的可能。
- 如果存在V-link ABR,通过V-link 传来的1类LSA、3类LSA与Vlink所经过的区域的其他ABR传递来的3类LSA进行比较,在满足条件3的情况下,优选cost小的计算区域的路由。
2.28虚链路产生环路的场景
如图2.28所示,R5上有x路由,转发给R4,R4将三类传递给AR2的区域0数据库,通过虚链路传递给R3,保存到区域0数据库中,此时R3面临两条路径选择,1是R2发送给他的区域0的3类LSA,2是R4发给他的区域2 的3类LSA,最终R3选择区域0的,当数据报文从R3发送给R6、R2之后,R2通过虚链路将数据报文发送给R3,R3又继续发送给R6,从而形成环路。