OSPF虚链路技术原理与注意点

虚链路的概念:

在这里插入图片描述
因为OSPF采用了区域化的设计,并且区域也采用了Hub-Spoke的架构,所有区域中定义出一个核心,然后其它部分都与核心相连,OSPF的区域0就是所有区域的核心,称为BackBone 区域(骨干区域),而其它Normal 区域(常规区域)应该直接和骨干区域相连,常规区域只能和骨干区域交换LSA,常规区域与常规区域之间即使直连也无法互换LSA,但在某些情况下,某些常规区域无法与骨干区域直连,这时便无法得到其它区域的路由,因此,设计了将骨干区域的范围通过虚拟的方法进行扩展到相邻常规区域的位置,因而让不能直接与骨干区域相连的区域,最终可以与骨干区域直连,这种对骨干虚拟的扩展和拉伸就是OSPF虚链路(Virtual Link)能实现的。

因为某些常规区域不能与骨干区域直连而只能与其它常规区域直连,所以OSPF虚链路(Virtual Link)通过将相邻的常规区域虚拟为骨干区域,从而让那些不能与骨干区域直连的常规区域也能获得其它OSPF区域的路由。与骨干区域相邻的常规区域被扩展后,该区域被称为Transit Area,理论上Transit Area不应该为末节区域。

虚链路使用场景:

场景一:
在这里插入图片描述
在上图中,区域2只能与区域1直连,而无法与骨干区域直连,在这种情况下,由于常规区域与常规区域之间即使直连也无法互换LSA,R3不是ABR(ABR是需要连接的区域至少有一个为区域0),但因为没有连接骨干区域,最后不可能将任何区域的LSA发进区域2,最终导致区域2无法外其它区域通信,在这种情况下,需要通过OSPF虚链路将骨干区域的范围扩展到相邻的区域1,如下图:
在这里插入图片描述
在进行OSPF虚链路扩展后,区域1被虚拟成了骨干区域,而这时的R3等同于连接骨干区域和区域2的ABR(因为有一个virtual接口在区域0,因此变成了ABR),所以可以将自己所有的LSA发进区域2。在扩展OSPF虚链路时,是通过连接R2(ABR)与R3(ABR)的Router-ID 来建立的。

场景2:
因为OSPF虚链路(Virtual Link)能将骨干区域扩展到相邻的常规区域,从而将常规区域虚拟为骨干区域,所以在某些情况下,如公司合并,或者为了备份骨干区域,可能出现骨干区域被常规区域所隔离,如下图:

在这里插入图片描述
图中骨干区域被区域1分割为两部分,将使得骨干区域自己的路由无法相互传递,在使用OSPF虚链路后,可以将区域1也扩展为骨干区域,如下图:
在这里插入图片描述
在经过OSPF虚链路将区域1也扩展为骨干区域后,可见所有的区域都变成了骨干区域,从而使网络中骨干区域能够收到另外一边被分割的骨干区域的路由,并且最后骨干区域自己的路由都为Intra-Area Route,但Area 1与骨干区域的路由将仍然为O IA。

场景三:
除此之外,虚链路还可以解决次优路径问题及增加骨干区域的可靠性,如下图:
在这里插入图片描述

图中,存在次优路径及骨干区域不健壮的问题。

R3和R4间在Areal.上创建Vlink,作用有两个,一个作用是可以用于提高Area0 的健壮性,避免R1和R2之间链路断开而导致的Area0分裂。另一个作用在于,若R4访问R3的G0/0/0接口,如果不做Vlink,需要经过Area0中的R2和R1(此接口通告进入了R0),而做了Vlink后,R4访问G0/0/0经过R5到R3,这可解决次优路径问题。即R4访问G0/0/0接口,路径R4-R5-R3优于R4-R2-R1-R3。

注意点:

  1. OSPF虚链路必须是在两个拥有共同区域的ABR之间建立的,其中必须至少有一个ABR是连接骨干的。
  2. OSPF虚链路被认为是骨干区域的一个接口,一条链路,也需要建立OSPF邻居,但在邻居建立之后,链路上是没有Hello包传递的。

虚链路LSA格式:

  1. Flag字段:v位为0表示了这是虚链路的LSU报文,1表示不是虚链路的数据。在这里插入图片描述

  2. 一类LSA:type为virtual
    在这里插入图片描述
    查看LSDB中的信息:
    在这里插入图片描述
    具体携带的内容,Link ID含义为Vlink对端ABR的RID,data为自己与之相连的接口ip地址。其实和P2P的是一样的,不过这里是不是直连的而已,所以还需要通过对端RID,通过区域内LSA计算得到对端的地址,以本地LSA中data的地址发送单播信息与对端建立邻接关系。

  3. OSPF在虚链路中建立邻居的OSPF 所有报文是单播报文(例如下面的hello报文),源目地址是虚链路两个ABR的地址:因为两台路由器可能不是直连的,并且对应的所有报文的ttl值为255,普通的OSPF报文为1。
    在这里插入图片描述

虚链路导致的环路问题:

在这里插入图片描述
如图所示:此拓扑中Area 2没有与Area 0相连,打破了OSPF区域设计时所有非骨干区域都需要与骨干区域相连的规则,所以在正常情况下,区域0与区域2中的路由器是不能互访的,为了能使这两个区域互访,我们可以在R2与R4之间建立一条Vlink,使得区域2能使用R2与R4之间的这条虚链路连接到区域0,此时我们一步一步的分析下这个拓扑所产生的问题。

  1. R5上有一个loopback接口,地址为5.5.5.5/32,宣告进了区域2。
  2. R4作为区域2中的ABR(R2与R4之间的Vlink建立起来后,R4就成为了一台ABR),会产生关于5.5.5.5网段的3类LSA,并向区域1与区域0泛洪。
  3. 区域0中的关于5.5.5.5网段的这条3类LSA会通过Vlink传递给R2(Vlink使用单播传递LSA),R2经区域0传递给R1,R1经区域0传递给R3(注意R2并不能直接把这条3类LSA传递给R3,因为R2与R3之间的链路在区域1中)。
  4. 这个时候我们来分析下R3的情况,经第三步与第四步可得知,R3能收到两条关于5.5.5.5网段的3类LSA:
    A:由R4产生,在区域0中由R4-R2-R1-R3传递过来
    B:由R4产生,在区域1中由R4-R3传递过来
  5. 根据三类LSA的规则,从非骨干区域收到的3类LSA,ABR能接收但不会使用这条3类LSA(水平分割原则),即R3虽然能收到两条关于5.5.5.5网段的3类LSA,但它能使用的只有第一条,即由区域0传递过来的这条3类LSA。
  6. 因为只能使用R1传递给R3的3类LSA,所以当R3要访问5.5.5.5时,会先把数据包转发给R1,R1转发给R2,R2知道去往5.5.5.5的数据包是要转发到R4的,但R2去往R4只能经过区域1传递给R3,所以此时产生了R3-R2-R1-R3的环路。

总结:此环路的解决办法为修改Vlink的邻居建立路由器,在R3与R4之间配置Vlink就可以避免环路。

虚链路的区域为什么不存在区域0的汇总路由:


场景说明:
Area 0中的路由通过 ABR R2通告到Area 1中,为减少Area 1中路由的数量,在边界 ABR R2上做路由的聚合。

但由于在Areal (Transit Area).上创建Vlink后,R2无法再对骨干区域路由做聚合,原因是为了避免在Transit Area内出现路由环路。

具体分析:

如果能聚合成功的话,在图中,Area 1的边界路由器R2执行聚合,产生LSA3(包含路由10.0.0.0/8), R4执行路由聚合,产生LSA3 (包含路由10.1.0.0/16), Area1 的网络结构是一个线性的网络,R3上会收到R2和R4通告的聚合路由,所以R3上10.0.0.0/8路由下一跳指向R2,而10.1.0.0/16 路由下一跳指向R4。

若R3收到访问10.1.3.1 的数据包,R3 路由报文到R4,R4上有Vlink,所以路由表中有到达10.1.1.0/24、10.1.2.0/24、10.1.3.0/24的Area0的路由并指向R3,R4会送流量到R3,R3会送流量到R4,路由环路出现。

若Vlink邻居不存在,则R4不是ABR,不能执行路由聚合,仅R2上可以执行路由聚合,环路不会发生。

知识点:Vlink做好之后,Vlink端点路由器都将成为ABR并在区域间传递路由,可以执行聚合/区域间路由过滤。上图中:(1) (2)处不会产生聚合路由,Area0 中明细路由仍会通告到Area1,图中仅(3)处会产生聚合路由。

参考资料:CCIE文档、HCIE学习指南

  • 11
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格洛米爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值