OSPF 路由优选规则
01
基本优选规则
1.直连路由 :本路由器发起的LSA1、2 ;
2.区域内路由 : 0; LSA1、 2;
3.区域间路由: OIA; LSA3 ;
4. 1类外部路由: OE1; LSA5类型1 ;
5. 2类外部路由: OE2 : LSA5类型2 ;
6.1类NSSA路由:ON1;LSA7类型1;.
7.2类NSSA路由:ON2;LSA7类型2。
注意: E1绝对优于E2,而E1之间、E2 之间的比较,则需要严格注意(LSA详解部分章节的讲解后续会有)。
另外,OE及ON的优选,要看厂商,不同的厂商,优选方式不同。
努力才有结果
在这个图中,R1同时从R2及R3学习到3.3.3.0的路由,一条是0, 一条是OIA, R1将绝对优选R3作为前往3.3.3.0的下一跳,而不看metric.
验证实验: OIA之间的比较
一般来说,OIA之间比较metric ,谁小取谁,但是也有特例,如下:
上图中,R2上,能学习到由ABR R1及R3发出的关于路由1.1.1.0的3类LSA,两条路由都是0 IA,但是R2将恒定优选R1作为去往1.1.1.0的下一跳,而不管这条路由的metric多大。
同一台路由器,本地如果跑两个OSPF进程,则各自独立,路由信息不会自动相互注入;另外如果同时从两个进程学习到同一条路由, 则不管metric如何,先到先用,而不会负载均衡。
● 证实实验:多进程问题2
由于是两个OSPF进程,因此依然是先到先得, R1上,如果率先与R2建立邻居关系,那么4.4.4.0 的路由在路由表中,仍然是0IA的。
即使通过R3过来的是0但是由于是不同的进程因此只看谁先来不管metric也不管什么O>IA>OE1>OE2
02
OSPF的距离矢量特征
上图中,假设所有的OSPF接口cost=1 ,那么R5更新5.5.5.0这条路由, R3是能学习到的, R3会怎么走呢?直观的来看,R3去往5.5.5.0走R4,cost会更小,然而实际的结果是,R3去R5会走R1。
因为R1作为ABR产生的3类LSA,而R4不是ABR(还记得ABR的概念么?)无法下发3类LSA,那么,R3将只会从R1收到3类LSA,因此不管从R4走cost如何小,R3将只能通过R1到5.5.5.0网络。
其实,OSPF在区域内部,的确是链路状态协议的处理方式,然而在区域之间, OSPF的对路由的处理却有典型的距离矢量特性。
我们看上面的图,R1宣告1.1.1.1/32这条直连链路, R1将在area1内泛洪自己的LSA1 ,其中就包含这段直连链路,这是典型的链路状态协议的特征。随后R2搜集到LSA1 ,并且为area0生成LSA3 , 注意,这时候LSA3的通告路由器就变成了2.2.2.2也就是R2 ,同时R2为路由加上自己的接口metric , 64+1=65. 随后这条LSA3被R3接收, R3将信息改写,仍然是这条路由,通告路由器变成了3.3.3.3 也就是R3 ,同时,R3在自己接收到的metric 65的基础上,累加上自己接口的cost , 得到129 ,并将这条LSA3再注入到area2-.上述动作,是典型的距离矢量路由协议的特征, RIP不就是这么干的么?路由一跳-跳的传递,每跳路由器累加一跳然后发出去。好了那么RIP作为距离矢量路由协议,有水平分割等防环机制,那么OSPF呢? OSPF则要求,所有的非骨干区域的3类LSA的传递必须经过area0来中转,也就是说,所有常规区域必须与骨干区域area0直连,以此来达到防止环路的目的。
这么一来本小节的第一个图就能理解了 ,既然3类LSA只能通过area0进行中转,且中转的动作必须由ABR来完成,那么R4这个属丝自然无法为area1或area2去生成3类LSA。
接下去,我们来看一个典型的问题:
上图中,编号1、2、3. 4并非实际的协议运行步骤,只是我们观察点的一个转移而已。R1、R2. R3、R4都会在area1内泛洪自己的LSA ,从而描述自己所有直连的OSPF接口( Link ),因此R3将4.4.4.0的路由装载进路由表,这是经过SPF算法计算得出的最短路径,路由的类型为0 ,区域内的路由。接下去我们将视角切换到R1、R2 ,这两个ABR都会收到area1内路由器的1LSA的泛洪,它两会各自将area1内的LSA1及LSA2 (若有)搜集后归纳成LSA3,并且在area0内进行泛洪, LSA3的LINKID就是其描述的路由的前缀,在R1及R2上查看OSPF database可以看到在area0中R1及R2都会各自泛洪4条3类LSA分别描述10.1.13.0、10.1.34.0、10.1.24.0、4.4.4.0 这四个网段,如此一来,在area0中,就有共计8条3类LSA在泛洪。接下去我们将视角放到R1 , R1从R2收到这四个网段的3类LSA,会将这些LSA的通告路由器改为R1自身,并且进一步在area1内泛洪,如此-来R3将从R1收到四条3类LSA,尽管R3并不需要这些LSA, R3会将忽略它们,甚至不会安装进自己的LSDB.
OK ,那么现在我们在R3.上定义个ACL ,匹配4.4.4.0 ,随后debug ip routing access-list x去跟踪这条路由的更新,然后在R4.上DOWN掉4.4.4.0 ,这个时候会出现个诡异的现象:
我们可以看到,R3.上关于这条路由经历了上面这个诡异的过程造成这种现象的原因,还是在于LSA3 ,OSPF处理LSA3的行为,是典型的距离矢量的行为,是不是有感觉了?
当然,对于LSA3 , OSPF也是存在类似水平分割的机制,如下图:
R2将area1内的路由归纳成LSA3注入area0 , R3收到后,将这些LSA3的信息修改,通告路由器变成自身,同时累加路由的metric ,然后再传入area2 , 那么在这个过程中,R3是不会将这些LSA3再注入回area0的。
我们刚才那个的双ABR的环境比较特殊,因此存在上述的问题。
为了方便广大网络爱好学习者
一起学(聚)习(众)交(搞)流(基),
特开设思科干货交流群,
里面已经上传大量学习资料,
欢迎广大网络工程师进群学习!
我知道你在看哟