本文是解释 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-5LSA 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综合实验配置文件拓扑图及模拟器、太阁独家实验手册、网工必读书籍等
|