目录
4)虚链路建立后的ABR,会重新封装数据包,以单播的形式将信息转发给对端。
忽略虚链路来看,同样都是3类LSA,走R3的cost只有1最小,所以走下路R3。 这是正确的。
虚链路建立后的ABR,在向其他区域泛洪骨干区域的LSA时,需要在虚链路穿越的区域,学习到对应的3类LSA
假设:在AR7上做了三类LSA的过滤(R7,R9无虚链路连接),会发生什么???
虚链路建立后的ABR,在向其他区域泛洪骨干区域的LSA时,需要在虚链路穿越的区域,学习到对应的3类LSA
虚链路建立后的ABR,不会 向虚链路穿越的区域 泛洪骨干链区域的LSA
虚链路建立后的ABR,不会 向虚链路穿越的区域 泛洪骨干链区域的LSA
一、虚拟链路
1.虚拟链路产生的背景
假设,公司机房搬迁,原本的骨干区域area0就会不得不暂时断开,被分割,那么在这个搬迁过程中就会导致网络不通。又或者,假设,公司旗下有个子公司在海外,那么是没办法用具体的物理介质(网线)进行连接,那么公司如何与子公司进行正常的数据交流呢??
虚拟链路就由此产生了。但虚拟链路的作用还远不只如此。
2.虚拟链路能解决的问题:
- 骨干区域被分割
- 没有骨干区域的场景
- 非骨干区域没有连接骨干区域的场景
- 骨干区域的备份
- 路径优化
3. 虚拟链路配置方法:
vlink-peer 对端router ID
4.虚拟链路实现的原理:
1)虚链路建立后,会建立ospf邻接关系。
2)邻接关系建立后,会产生骨干区域的LSDB。
3)虚链路是骨干区域的延伸,会交互骨干区域的LSA。
4)虚链路建立后的ABR,会重新封装数据包,以单播的形式将信息转发给对端。
5)虚链路不能跨区域建立
6)虚链路本质是将骨干区域的SPF进行连续或补充。
实际上,虚链路只是控制平面的一中手段,不会影响到转发平面。
结合第6点,思考R4会走R2还是R3去访问R1 ???
分析:
忽略虚链路来看,同样都是3类LSA,走R3的cost只有1最小,所以走下路R3。 这是正确的。
为什么呢??不是说虚链路建立邻居关系后,会出现骨干链路的LSA吗?这不就是1类的LSA吗?不就由于3类的LSA吗?
nonono,根据虚链路的原理,第3点:虽然说虚链路是骨干链路的延伸可以交换骨干链路的LSA,但是,第6点补充了,虚链路本质是对骨干区域的SPF进行连续或补充。
也就是说,仅仅是让R1去往R3的拓扑图里的SPF的路径上R2后延续了R3而已,仅仅只是延续。
最重要的一点是:虚链路只是控制平面的一种手段,不影响转发平面!!换句话说,虚拟链路转发建立在实际的物理链路上,最终看的还是物理链路的开销值,开销越低越优。
虚拟链路的开销值 =物理链路开销最小值
虚链路的转发依赖于真实的物理链路,所以虚链路有多条真实物理链路可走时,会选择物理链路开销值最小的那条路。
所以虚链路的开销就是实际物理链路的最小开销值了。
该图的虚链路开销为2
、
5.实现路径优化
假设4.4.4.4访问1.1.1.1怎样才能使它的开销更小??
分析:
4.4.4.4访问1.1.1.1首先需要1.1.1.1的路由。
AR3作为ABR,1.1.1.1直接到AR3是1类LSA;
AR2同样作为ABR,当1.1.1.1到AR2时,将1类LSA转化为3类LSA,再交给AR3。
根据规则:1、2类LSA优于3类LSA,所以路径为431
但是计算开销发现,431路径开销=101 > 4231路径开销=3
解决:
可以发现此时路径并非最优,可以采取虚拟链路的方式解决。
在AR2和AR3之间建立虚拟链路,这样AR2 、AR3都有了骨干链路的LSDB数据库,可以交互骨干链路的LSA,这样4231路径转发的LSA就为1类LSA了,在两条类型相同的LSA中,选择路径,会选择开销值最小的那个。此时,4231路径开销=3 < 431路径开销=101 ,4231路径最优。
6.虚拟链路的存在的问题
虽然理论上如此,但是有时实际的选路径并非如此,由此我们发现了虚拟链路的存在的问题
虚链路的防环规则
第一条防环规则:
虚链路建立后的ABR,在向其他区域泛洪骨干区域的LSA时,需要在虚链路穿越的区域,学习到对应的3类LSA
1)实例
AR8 AR9之间建立虚拟链路,此时AR10能与AR6能正常通信,AR9与AR6也能正常通信。
2)如果,在AR7和AR8之间连接起来
AR10和AR6依然能通信,追踪一下路径发现10 9 7 6 ,没问题
3)此时,删除AR8和AR9的物理线路,只剩下一个单纯的虚拟链路。
AR10无法与AR6ping通了,追踪路径发现到了AR9就没有了
分析:
正常情况下,AR10到AR9之后,无论是从虚拟链路AR8学习到的6.6.6.6的路由还是从实际链路AR7学习到的,最终走的路径都会是实体的路线,所以AR9之后会走AR7,在AR7选择路径时,会选择1类LSA这条路径直接到AR6(1类、3类LSA优于3类LSA)
当AR6接受到信息后,会回复AR10
此时往返的路径进行选择,AR6的拓扑信息告诉它,AR8与AR9之间虚拟链路,走AR8最近,AR8到AR9虽然是最近的,但由于是虚拟链路,所以必须递归到实际的物理链路去走,所以到了AR7
到了AR7需要将数据交给AR9,但是此时查看路由表,发现去往目的网段的下一跳是AR6,又回到AR6了
形成了AR6 AR7 AR8 的环路
问题来了,为什么AR7会优选AR6去访问呢????
分析:
虚拟链路建立后的ABR9,将AR10的拓扑信息由1类LSA转化为3类LSA,一个交给虚拟链路的骨干链路AR8最终交给AR7,一个直接将3类LSA交给AR7。AR7收到两条3类LSA发现,一条是来自骨干链路的LSA,一条是来自非骨干的,果断选择相信来自骨干区域的AR6的LSA。
这也就解释了为什么,AR7去往AR10网段的路由的会优选走AR6这条路
解决方法:将R7,R9用虚链路连接
分析:
这样可以使得R7到R9的选路,收到的两条都是3类LSA,那么相比较来自R6的LSA,R7会选择来自R9的3类LSA,因为其开销值小。
假设:在AR7上做了三类LSA的过滤(R7,R9无虚链路连接),会发生什么???
AR8将6.6.6.6的路由信息以3类LSA的形式发送给AR9,同时AR9会将该3类LSA告知AR10。但由于AR7会将3类LSA过滤掉,在AR10回包给AR6时,递归到实际物理链路,走AR7,这是3类LSA就被过滤了。
这就造成了ABR给出了一个3类LSA的假消息。
所以在虚链路中有这样一个防环规则:
虚链路建立后的ABR,在向其他区域泛洪骨干区域的LSA时,需要在虚链路穿越的区域,学习到对应的3类LSA
就是说,虚链路建立后的ABR(AR9),在向其他区域(AREA 2)泛洪骨干链路的LSA( 6.6.6.6路由的1类LSA)时,必须在虚链路穿越的区域(AREA 1)学习到对应的3类LSA(对应的6.6.6.6路由的3类LSA)
第二条防环规则:
虚链路建立后的ABR,不会 向虚链路穿越的区域 泛洪骨干链区域的LSA
2)实例
假设,AR7和AR9之间有一台路由器AR11,AR9访问AR6时,AR6会泛洪骨干链路的LSA,AR7正常会转化为3类LSA给AR11,倘若AR9将骨干链路的LSA也泛洪给AR11,此时AR11会做路径优选,若恰好AR9开销最小,当AR11放AR6时,则通过AR9的3类LSA访问。但是AR9为虚链路,递归到实际物理链路中来,AR9需要走AR11。
这样AR9和AR11之间就形成了环路。
所以在虚链路中有这样一个防环规则:
虚链路建立后的ABR,不会 向虚链路穿越的区域 泛洪骨干链区域的LSA