虚链路(Virtual-link):由于OSPF网络拓扑结构复杂,有时无法满足每个非骨干区域必须和骨干区域直接相连的要求,为解决此问题,OSPF提出了虚链路的概念。例如:当机房升级,需要进行割接操作,造成骨干区域被分割,但是不能影响现有业务的运作,就可能用到虚链路。


OSPF虚链路使用场景:1.用于连接与骨干区域不相连的非骨干区域的场景,如下图所示


ospf虚链路备份 ospf 虚链路_最短路径


2.用于连接不连续的骨干区域的场景,如下图所示:

ospf虚链路备份 ospf 虚链路_最短路径_02


3.用于连接两个非骨干区域或不存在骨干区域的场景,如下图所示:

ospf虚链路备份 ospf 虚链路_最短路径_03


4.用于骨干区域备份的场景,如下图所示:

ospf虚链路备份 ospf 虚链路_最短路径_04

当AR4和AR5之间的链路Down,便会造成骨干区域不连续,会导致区域之间访问异常。比如AR4不能访问AR5,甚至不能访问AR3的G0/0/0接口,这个是因为AR3是ABR,不会使用非骨干区域的三类LSA(AR4对应的LSA由AR2转为三类LSA泛洪进行Area 1),所以非骨干区域的三类LSA就不会引入AR5所在的Area 0,导致AR5不能学到AR4对应的三类LSA。

为了解决骨干区域不连续的问题,在Area 1的两台ABR之间做一条虚链路,当作骨干区域的备份链路。


5.用于优化路径的场景,如下图所示:

ospf虚链路备份 ospf 虚链路_ospf避免环路_05

AR1存在一条直连的环回口路由,通过一类LSA来描述,由AR2和AR3转为3类LSA防洪进Area 1。AR4在访问1.1.1.1/32,报文到达AR3后,根据开销规划,最优的路径下一跳应该是AR2。但是AR3可以在Area 0学到对应的一类LSA,也可以在Area 1学到对应的三类LSA,根据LSA的优选规则,AR3会优选一类LSA,即优选下一跳开销大的路径。

为了优化路径的选择,在Area 1中的ABR(AR2和AR3)之间做一条虚链路,即AR3也可以通过AR2学到对应1.1.1.1/32的一类LSA。下面便可以通过开销来进行路径的优选。


OSPF虚链路的作用:


经过以上虚链路场景的描述,可以得出虚链路一般用于临时或备用的连接,且虚链路只能穿越一个非骨干区域,但是在设计中应该避免使用虚链路。

       使用隧道技术可以在某些场景下替代虚链路,如GRE隧道

       使用不同OSPF进程配置在进行路由重引入,也可以达到全网可达的效果。

虚链路和隧道有什么区别?

1.报文封装不同:虚链路是封装在IP报文中,并且通过单播进行发送,而隧道技术是将报文封装在隧道中本质还是通过组播进行报文发送。

2. 邻居建立范围不同:虚链路只能穿越一个区域,虚链路需要有到达对方的路由并且在同一区域才能建立邻居,而隧道技术只要双方路由可达,就能建立邻居,可以穿越多个区域。

虚链路通过单播进行发送,但是虚链路的邻居使用邻居的Router ID来标识,不能作为协议报文的目的IP地址(配置虚链路时后跟的是RID),怎么确定协议报文的目的IP地址?

每个虚链路的端点都要计算两个最短路径树,一个是本地最短路径树,而另一个是邻居的最短路径树,当然前提是每个区域内的LSDB都是同步的。

计算虚链路邻居的最短路径树后,在最短路径树上查找如何到达本地路由器(通过Router ID标识),虚链路邻居到达本地路由器的出端口的IP地址为本地路由器发送给虚链路邻居的协议报文的目的IP地址。

虚链路邻居建立及维护:

1. 虚链路上邻居建立不要求在同一个网段,不要求掩码相同。

2. 周期性发送单播Hello报文,维护邻居关系,邻居失效时间为40s

3. 如果建立虚链路的最短路径树中断,虚链路会自动断开

4. 本端虚链路的出接口出现故障,虚链路会立即失效

虚链路的缺点:



ospf虚链路备份 ospf 虚链路_OSPF_06

如上图所示,AR5上有一个环回口地址5.5.5.5/32通告进OSPF Area 2。AR2和AR4在Area 1配置了虚链路,AR4成为ABR,所以AR4会将Area 2的一类LSA(5.5.5.5/32)转换为三类LSA泛洪进Area 1,且通过虚链路泛洪进Area 0。以此AR3可以在Area 1、Area 0都学习到相同的三类LSA。

       当AR1访问AR5的5.5.5.5/32时,AR1需要去往ABR(AR4),根据最短路径树计算得知下一跳是AR2。而AR2是通过虚链路得到的三类LSA,所以去往AR4要走实际的物理链路先到达AR3,到达AR3后,根据上述判断AR3会优选骨干区域的三类LSA,所以AR3访问5.5.5.5/32是会走骨干区域(即下一跳为AR1)从而产生环路。

      解决方法是在AR3和AR4之间也打上一条虚链路,使得数据包达到AR3时可以直接通过虚链路给到AR4,避免环路。

虚链路产生ABR的特点:

1.建立虚链路后产生的ABR,不会向虚链路穿越的区域泛洪骨干区域的三类LSA

2. 建立虚链路后产生的ABR,在使用骨干区域的三类LSA时,必须在该虚链路穿越的区域也学到这条三类LSA

3. 无法在虚链路穿越的区域对Area 0的路由做汇总

4. 如果做了区域0的认证,由于虚链路也属于Area 0,所以建立虚链路的设备也需要启用认证

5. 增加了Area 0的设备,即增加了区域LSDB的复杂度