一、Router LSA(一类LSA)

为什么会有伪节点?

如上面拓扑,如果没有伪节点的情况下R2描述自己与R3和R4互联,R4也描述与R2和R3建立邻居关系,这样子在R1看来在整个广播链路当中所有设备都是全互联的,所以说在广播型链路上要是进行SPF计算时就会有两个弊端,1、邻居描述复杂度高2、邻居的可行数量多 得到的最短路劲需要多次计算。

所以说由于上述问题,那么就要进行优化,优化方式就是产生一个伪节点,就是找到所有路由器的共同点,那他们的共同点就是他们连接着相同的链路,所以说我们在算法中把这样一条链路抽象成一台路由器看待,我们称之为伪节点,那么所以路由器就描述与这个伪节点相连就好了,那么对于其他路由器收到后就知道,你们这些路由器都是连接在同一链路上的。所以说是在算法上把他抽象成一个伪节点,在物理上他们同属于一条共享链路上

那么伪节点怎么表示呢?我们统一使用DR的接口IP来充当伪节点的Router ID,因为这个是唯一的。而他的本质是用于描述一个MA的链路

之前说过DR是否具有可抢夺性,如果要是DR被抢夺的话是不是全部路由的一类LSA都要改变了,所以说DR不可以有抢夺性的原因在这里

二、Network LSA(二类LSA)

图中方块图形表示的是叶子信息,这个图是通过LSA分析出来的,其中10.1.12.0/24会发现,连接在同一片叶子上面,即表示是在同一链路上,或者说随便一个路由都可以通过这两台路由到达这个网段。

伪节点去往同一共享链路上的其他路由开销为0,而所有路由去往伪节点的开销为1,其实就是相当于直连本身的开销路径,只是在算法上面产生了伪节点,但是开销是0的话也并不会有什么影响。
广播型链路上所有的路由器之间的直连网段掩码都需要相同,为什么呢?

因为我们选举伪节点的router id是通过DR的接口地址来进行设置的,我们看到二类LSA的Ls id可以发现从取值来看可以表示为DR接口的地址,从逻辑上来看是伪节点的router id,同时也有DR接口的子网掩码,那么地址与掩码做与运算得出的不就是网络号嘛,所以是因为DR当选就一定要有代表性,网络号就要保持统一,假设说不统一的话,例如R2是24位,R3是28位,R3是DR的时候,1、能够接受的网络位不同2、不具有代表性,那我们都不一样怎么能选你呢?所以说在广播型链路上要选举DR,并且DR要具有代表性所以掩码都需要相同才行。

当某台路由器出现故障的时候路由条目消失了那么其他路由器是否还要进行3600秒的老化时间?

例如当R1与R2直连链路坏掉的时候,那么R2就会触发更新自己的LSA信息通告给其他路由器,会删除掉这个P2P的叶子信息,当R3收到R2更新的LSA时就会立马更新自己的LSA,然而ospf路由的产生就是看LSA信息来决定的,那既然LSA里都没有了那么路由表里就会删除,但是自己的LSDB表中还是存在这条路由信息的要等到3600秒的时候才删除,但是不影响整一个路由的进行。

三、summary LSA(三类LSA)

ABR定义:连续多个区域,并且至少有一个活动接口属于区域0的
ABR的作用:

将自身直连区域的区域内路由转化成其他区域的3类LSA

将区域0的3类LSA转化非骨干区域的3类LSA

区域间路由的计算:

到达其他区域路由时如何防环呢?

例如R2去往R4路由时,自身到ABR的cost值是由SPF算法算出来的,所以说本身就是一个无环的路径,而ABR到R4也是通过SPF算法无环算出来的,所以说不管从那台路由器去往其他区域的路由,都是先到达ABR计算出无环拓扑,接着由ABR进行无环计算,从而有着防环机制。

其他路由如何知道该路由就是ABR呢?

思考一个问题?我们可以通过一个人的行为去判断他的职业吗?例如一个大叔在扫地,你就可以直接断定出他就是扫地工人吗?没准人家是那个企业的大老板来体验生活的,所以说怎样可以更加准确的去保证路由就是ABR呢,我们自己直接告诉他们不就好了嘛。

所以我们可以看到由R1通告的一类LSA中options字段里就标识了自身是ABR,那么一类LSA不就是表示的是自己嘛,所以就是由自己来告诉其他路由。

那么R2接收到了发现查看R1的一类LSA的时候,R1标识了自己是ABR所以说R2就知道了,接着

R2就会计算出到ABR的cost值,从而方便进行之后区域间的路由计算。

所以我们通过抓包发现,options字段中的,通过flags B bit 置 1 判断出该路由器是ABR

ospf 路由表项与静态路由选举

如图我们现在全网联通,在R3我们可以看见4.4.4.0的路由是一个三类的外部路由,我们在R3上打一台静态路由指向4.4.4.4下一跳为R2我们观察实验现象。

在LSDB表中我们可以看出任然产生这里一条三类的路由

在ospf路由表当中我们也可以看出有这条路由的产生

观察路由表发现我们的4.4.4.4路由不是跑ospf路由了,而是去走静态路由了

我们去仔细看路由表的ospf表项可以发现,4.4.4.4的路由不是消失了而是放在inactive的表项当中了,所以作用就相当于一个浮动路由一样,首先路由表当中是选举一个优先级低的路由,所以说ospf路由被比下去了,所以这种情况下仍然可以产生一个三类路由,只是在路由表当中选举被比下去了。

ospf环路避免情况

如果我们将去往4.4.4.4的路由下一跳设置为R5会产生什么现象呢?

我们发现路由表项任然存在。

接着我们跟踪路径发现路由产生环路了,这是由于三类的路由任然由R3产生,但是写了一条静态路由过后在路由当中产生了环路,所以说尽管ospf机制已经很强大可以由于人为造成的环路任然无可避免,所以避免这种傻傻的操作。

为什么ospf链路的类型需要统一?

设置R2的0口为p2p,设置R1的0口为广播形链路

我们观察到两边路由器的邻居可以正常建立

可是我们观察路由表发现,他们之间的路由收不到了,为什么呢?

在R1来说他是广播型链路所以说描述的一类LSA是连在一个伪节点上面的,而伪节点的信息不会去描述存在R2,对于R2来说是点到点链路,所以说R2是可以与R1建立邻居关系的可是由于对于链路的理解不同,所以说不能产生路由信息,这就是为什么在ospf当中两端的链路类型应该保持一致的原因。

ospf如何过滤产生三类LSA?

我们在R3上进行对4.4.4.4的路由过滤

我们可以看见在ospf的路由表当中任然存在该路由信息

查看到LSDB表中在area0当中任然有这个三类的路由产生,可是在area 2当中就没有产生这条三类的LSA所有说我们将4.4.4.4的三类LSA进行过滤了

我们发现不管是路由表和路由表ospf当中都没有发现4.4.4.4这条路由,

所以说这个过滤就相当于把从ospf的路由表中的路由直接不传到路由表当中了,就直接不产生想对应的三类LSA路由了,不管你ospf是否是active或者inactive了,直接就不进入路由表了

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐