欢迎光临散文网 会员登陆 & 注册

HCIE面试题之三大协议如何撤销路由的

2021-06-16 13:34 作者:太阁网络  | 我要投稿

本文是解释 OSPF和ISIS以及BGP是如何撤销路由的。

所谓路由撤销,就是路由通告的反操作, 就是告诉邻居,一个目的地不可达,请把对应的路由删除掉。


OSPF 路由撤销

OSPF和ISIS都是链路状态协议,其中撤销路由部分相似


OSPF的路由是以LSA来承载的,OSPF中撤销路由实则是撤销LSA或更新LSA的一个操作,


根据OSPF对LSA的操作情况可以将其分为:

1、一类、二类LSA的撤销路由

2、三类、五类、七类LSA撤销路由


LSA1 撤销

在OSPF中LSA-1-2是来描述拓扑的,所以一般用更新LSA来撤销

也就是seq+1撤销。


如图, 在R1 上创建loopback 0 1.1.1.1 宣告进OSPF1 area 0, 其他所有设备都宣告进OSPF 1 area 0

我们在R2/3 之间抓包, 在R1 的OSPF 进程下反复的network 宣告和undo network 1.1.1.1 0.0.0.0

查看抓包结果:


实验现象描述:
当network一个路由之后,该路由器会产生一条一类LSA,其中就有刚添加的那个接口的信息。

该LSA里面包含着link-ID和link-DATA,序列号是:0x80000009


备注:

loopback接口为stub网络类型,所以它的一类LSA的link-ID是接口的地址,link-data是接口地址的掩码,

普通传输网络的link-ID则是DR的接口IP,link-data则是本设备的接口IP


当撤销一条路由后,该路由器仍然会产生一条LSA,只不过不再包含loopback0接口的信息了,

变化的是序列号,变成了:0x8000000a


物理口的路由撤销

如图, 在这个场景下模拟交换机这个接口故障,看下这种场景下的路由撤销


首先看到, R2-3 之间OSPF 邻居是好好的, 这样, R2-3之间就是传输路径TransNet



而当关闭这个接口时, R2 会经历一个hello dead 时间, , 从邻居R3 收不到hello, 然后就认为邻居失效,


这个时候, R2 给处于同一个区域, 但是不同广播域的R4 发送更新, 更新的内容, 就是说这个区域现在

连接的是一个stub网络, 因为我们这里这个交换机所在的网络只有两个路由器


我们在这里再加一个设备, 可以看到现在


关于这个交换机所在的网络的2类LSA 更新中, 会携带这个广播域内的成员信息

由于这个交换机所在的广播域内还有其他成员,所以这个transit 信息并没有更改,图略

但是,失联的这个成员RID 就会从2类LSA中消失,



总结:

每个广播与都会产生一条2类LSA 泛洪到本区域的其他广播域

物理口撤销路由,

LSA 2 路由撤销就是把这个失联的路由器RID 从本广播域的2类LSA中的成员列表删除

LSA 1, 如果这个网络只有2个成员, 其中一个失联, 就把这个网络使用更新的方式, 告诉其他广播域路由器

这里连接 的是一个STUB网络, 本广播域没有这个更新。

如果这个广播域还有不止一个邻居, 那么就不发1类LSA更新去改这个STUB, 只是发LSA 2 去减少成员RID

LSA2撤销

2类LSA是DR产生的, 用于描述这个网络内掩码的长度和这个网络内的成员RID

环境如下:


在这个环境下,DR是R4, BDR是R2

当把DR所在的接口关闭时, 由BDR首先发送LSU更新, 发送给224.0.0.5 , 告诉网络内的其他设备,

R2 设备上最新的1类LSA 内容, 以及现在这个网络的2类LSA, 这个2类LSA包含的内容是掩码的长度和这个网络内的成员RID,其他路由器收到这个更新之后, 向224.0.0.6发送确认, 

然后依据这个新的BR的1类和2类LSA来计算自己目前针对这个网络的信息, 然后将自己计算之后的结果也发送到224.0.0.5 。



可以看到R4接口被关闭之后, R1 收到R2 发送的LSA之后计算的到的更新发出来了,用的还是之前R4 的2类LSA计算的, 得到的结果还是R4是DR,把更新发出来了。

 后来发现不对, 新的DR应该是R2,后来又使用R2 的2类LSA计算了一遍,


现象描述:由于 DR不支持抢占, 所以我们是采用直接关闭DR所对应的接口,

当关闭这个DR接口时, 这个网络内的BDR路由器首先会发一个更新报文, 报文中会携带BDR的1类LSA和这个网络内的2类LSA, 来告诉其他路由器, BDR成为DR路由器


 总结:

OSPF的一类、二类LSA在撤销路由的时候会产生一条新的一类、二类LSA,新产出的LSA中不再包含撤销的那条路由信息,新LSA的序列号会在旧的LSA序列号上加1,发送给区域中所有的路由器,当其它路由器收到该新的LSA后会覆盖旧的LSA,路由器重新计算路由,以达到撤销路由的目的。


而且根据这现象可以发现,当拓扑发生改变之后(一类LSA)路由器就会重新发送一次LSA,

信息也会跟着计算一次,由于二类LSA携带的是掩码等信息,所有路由也会跟着计算一遍,简而言之:拓扑变化会引起路由变化。这也是OSPFv2中的一个缺点,在OSPFv3(IPv6)中对其进行了改进(一类、二类LSA不在描述路由信息,仅描述拓扑信息,实现路由与拓扑计算分离),否则拓扑的重复变化也会导致路由频繁的计算,不仅对链路带宽造成影响也会增加路由器的计算压力。


LSA3撤销

而3LSA是描述路由信息,一条路由信息对应一条LSA-3。所以通过3600s来撤销

包括LSA5也是通过3600S撤销。


场景一、AR1上1.1.1.1这条路由撤销的时候,直接undo loopback接口



通过seq+1来更新LSA, 撤销的时候, 更新中 LSA 老化时间 3600,


LSA4 撤销

4类LSA的通告是伴随路由引入,和5类LSA一起通告给其他邻居的。

4类LSA是通告ASBR的路径信息的,告诉其他区域的路由器, 本ABR去往本ASBR的开销是多少,

以及ASBR 的router ID是多少

什么时候发LSA4:当一台路由器对本OSPF做了路由引入操作,

什么时候撤销LSA4:当一台ASBR不再继续做ASBR, 即把对应引入的路由undo

这个时候也会出发本ASBR产生 1类LSA 通告这个操作。

LSA5 撤销

这是通告更新


LSA 4类5类撤销都是 LSA的产生者路由器通告 老化时间3600 秒的LSA,序列号+1 


LSA7 撤销

第一次做路由引入的操作:

通告的时候, ASBR先产生LSA1申明自己是一个ASBR


ASBR 身份已经确认, 现在单独引入一条外部路由




总结:

当LSA描述多条路由信息的时候,只能通过seq+1更新来重新计算, 而这里序列号没有改变, 是模拟器问题, 按照理论, 重新产生的LSA, 序列号是要+1的

LSA一对一的时候可以通过3600s来老化。

路由通告, 4类LSA和5类LSA是使用同一个LSU来发布的, 而路由撤销, LSA4 是单独发的, LSA5 可以放一起发


ISIS 路由撤销

分通告和路由引入两种情况


通告路由

我们分两种情况来通告路由, 图都是一样的。

都是L1以L1 形式通告

都是L2以L2 形式通告


现在改都是L2 , 以L2 形式通告


通告路由:



总结:

ISIS 以L1 或者L2 的形式更新和撤销路由, 形式是一样的, 都是以序列号+1 的形式传递的,

更新的时候, 就在LSP中携带这个路由, 撤销的时候, 就不携带这个不可达的路由

路由引入


ISIS中如果是引入的外部,当undo import命令后,会出现life=0的撤销路由


总结:

忽略这里的序列号不变, 按照所学理论, 重新产生LSP, 序列号是要+1的

由于一条LSP中携带了很多路由信息,所以撤销一条路由也是通过seq+1来撤销。通过更新LSP重新计算

当撤销L1 或者L2 的路由的时候, lifetime 不为0, 只是不携带这条不可达的路由

ISIS中如果是引入的外部,当undo import命令后,会出现life=0的撤销路由


OSPFv3

在这个环境下,R1-2-4 之间运行OSPFv3 area 0,R2-3 之间运行area 1.



区域内路由:使用LSA1 和LSA9


AR1上有一条loopback0的路由,我们给undo这个接口后发现AR1向FF02::6发了一个LSU来更新


分别是一个9-LSA和1-LSA。

因为依据1-LSA形成的LSA-9是用来描述主机路由的,所以撤销的时候猜想应该是LSA-1的seq+1

然后LSA-9为3600s

再次实验,在loopback0接口上配两个全球IPV6单播地址,宣告进入ospfv3,这次只undo 一条路由

发现9-LSA只seq+1 而不是3600s


并且也只有一条9-LSA了,所以猜想

刚刚undo loopback接口的时候,由于删掉了接口,相当于拓扑也有变化,并且路由也是全部删除。

所以情况是LSA-1的seq+1 LSA-9为3600s。


区域间:

使用LSA 3


区域间路由撤销的时候, 是使用发送老化时间为3600 的3类LSA


接下来是测试5+7


LSA4-5

LSA 4-5 通告路由 如下


LSA 4/5 撤销路由如下


LSA 4-5 撤销路由使用老化时间为 3600 的路由


LSA-7 在NSSA区域引入路由


都是使用老化时间为3600 的路由撤销的

总结:

OSPF v3 路由分区域内, 区域间和外部路由

区域内路由的发布和撤销都是基于LSA1和LSA 9 , 撤销的时候是序列号+1 , 老化时间3600

区域间路由撤销的时候, 是使用LSA 3 类撤销, 老化时间 3600, 序列号+1

外部路由撤销的时候, 是 使用LSA 5/7 来撤销的, 老化时间 3600, 序列号+1

当ASBR不做ASBR的时候, 会出现4类LSA 撤销,老化时间 3600, 序列号+1


是谁通告的, 谁就去发这个老化时间 3600 的LSA去撤销路由


BGP 路由撤销

路由通告:


总结:

BGP在通告路由更新的时候, 是放在NLRI 字段中的,会携带路由的公认必遵属性,

包括起源属性ORIGIN,AS-PATH,NEXT-HOP,


撤销AS内部路由的时候, 是放在Withdrawn Routes 字段中的,是不带这些路径属性的, 


BGP的路由撤销是不分AS内的还是AS间的, 


总结:路由撤销的方式

路由撤销是路由通告的反操作, 谁通告的, 就是谁撤销

OSPFv2/3中, 都是使用老化时间 3600秒的LSA去撤销路由, 序列号+1


OSPF撤销路由报文是LSU

ISIS撤销路由报文是LSP


BGP通过update报文的

withdrawn routes length 撤销路由长度

withdrawn routes 撤销的路由列表



最后


太阁老师的个人微信


添加太阁老师个人微信领取:太阁免费视频资料、NA综合实验配置文件拓扑图及模拟器、太阁独家实验手册、网工必读书籍等


HCIE面试题之三大协议如何撤销路由的的评论 (共 条)

分享到微博请遵守国家法律