文章目录
OSPF的3-LSA防环
先说结论
我们都知道,OSPF中3-LSA的防环其实就是区域水平分割,适用于解决多点出入区域的防环原则;意思就是说,从其他区域进到本区域的路由,不会再从本区域发出去,听上去比较拗口,看看下图吧
1、传回给骨干域的情况
- R1将自己的环回传递给a0(1类转3类LSA),a0将这个3类LSA从R3这个ABR上重新产生成一条3-LSA给a1,此时R4不能再将这个3-LSA传回给a0!
2、传回给非骨干域的情况
- R5将自己的环回传递给a0(1类转3类LSA),a0将这个3类LSA从R3这个ABR上重新产生成一条3-LSA给a1,此时R3不能再将这个3-LSA传回给a1!
结合实验现象详解
实验拓扑
a0与a1多出口
a2中放入R1的回环
详解
以上的结论是简单的基础,即3-LSA的区域水平分割;至于为什么它不能传进去,就要详细分析
传回a0
对于第一种情况,有两种子情况;
- R3上进行1/2 转 3-LSA;即R3将a0中的1/2类LSA转换成3-LSA给R4,此时R4当然不会在传给a0中,因为R4从a0中可以学习到1/2LSA,1类永远优与3类
举例,R1-R2之间的transit链路就是2-LSA,网段为10.0.12.0/24 这个2-LSA从R3上进入a1,做2转3行为,R4在a1中收到这个3-LSA,并不会在传回给a0,检查R4的a0的lsdb中有没有3-LSA的10.0.12.0/24 并且检查R4的去10.0.12.0/24的下一跳是否走R2去
- R3上进行3 转 3-LSA;即R3将a0中的3类LSA(从R1进来的时候进行了2-3LSA)转换成3-LSA给R4,此时R4当然不会在传给a0中,因为R4从a0中可以学习到3-LSA,打死都不会在将这个3-LSA传回给a0!!!
当查看这这条1.1.1.1的summary-LSA的detial时,你可能会说a0学到的metic小,所以优选,注意,这里跟metic的大小无关!
怎么能证明这里的metric是无关的呢?
直接在R1上将自己的回环的cost改成1000 看R4如何选择
[R1-LoopBack0]ospf cost 1000
R4不管你cost多大,都是走a0
注意,路由是根据lsdb来生成的,R4 打死都不会在将这个3-LSA传回给a0!!! 所以R4计算路由肯定是以a0的lsdb为准的
那么什么时候会学呢?
是不是觉得我说的有问题?没问题的,确实是打死都不学,都不会加入路由表,但是存在意外情况,即骨干域的断裂
这种情况写,R4R4就会很疑惑,我自己是ABR,但是并没有收到a0发来的LSA,则R4判断自己与a0断开了,即骨干域的断开
多说一嘴,R4如何判断自己是ABR的,当然是根据1-LSA中的V E B位的,在LSDB是可以看到的
总结:
R4(ABR)从非骨干area学到的3-LSA,肯定不会再发送给a0,除非下列情况(special)
- 与a0有full state,肯定不学
- 与a0无full state,肯定学
传回给ax
R5将自己的环回传递给a0(1类转3类LSA),a0将这个3类LSA从R3这个ABR上重新产生成一条3-LSA给a1,此时R3不能再将这个3-LSA传回给a1!
其实此时对于R3来说,他会进行比较
R3(ABR)从a0学到的3-LSA,要与其所处的非a0中进行比对
- R3在其所处的非a0学到了这个3-LSA的路由,即R3通过本非a0域的1/2-LSA学到了,这样的话,R3肯定不会再接受这个3-LSA,因为1/2-LSA > 3-LSA
可见,R3会将R4生成的3-LSA加入到lsdb中,到是并不会放到routing-table中
- R3没有在其所处的非a0中学到1/2-LSA,那么R3就会接受这个从a0收到的3-LSA
就上图而言,R3很明显可以从其非a0中学到1/2-LSA,那么怎样做才会使R3不会学到本地的1/2-LSA呢?
聚合,在R4上将R5的回环路由聚合成/24的,这样一来,对于R3来说这个/24的路由并不会从1/2-LSA学到,那么R3此时就会从a0处学习到这个/24的3-LSA,出环!
[R4-ospf-1-area-0.0.0.1]abr-summary 5.5.5.0 255.255.255.0
此时R3又会吧这条3-LSA传给R5
为什么出环?
- 对于R5来说,去5.5.5.0/24段的地址走R3,因为R3会将这个/24的发给R5,R5肯定会学,因为R5没有这个LSDB,所以R5就会学
- 对于R3来说,去5.5.5.0/24段的地址走R4,因为R3就是从R4那里收到的这个3-LSA
- 对于R4来说,去5.5.5.0/24段的地址走R5,实验环境下手工指静态
R5去ping一个5.5.5.0/24直接出环,绕圈圈
可见,出环!!!