HCIE面试题之三大协议如何撤销路由的
本文是解释 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撤销。//i0.hdslb.com/bfs/article/7b15077e1c9c8bd8e8239f4509d8776289ae7043.png@946w_362h.webp
如图, 在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查看抓包结果://i0.hdslb.com/bfs/article/0998d4f654f1943380600cddc5b9b45dbf34c6f9.png@1280w_162h.webp
//i0.hdslb.com/bfs/article/3b2174a609b3d4013c2e68cb9c9c209b2f36a4dd.png@1280w_1080h.webp
//i0.hdslb.com/bfs/article/a11246a89185fd79c512d866d6ef1618df9a11d6.png@1280w_882h.webp
实验现象描述:
当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
物理口的路由撤销如图, 在这个场景下模拟交换机这个接口故障,看下这种场景下的路由撤销//i0.hdslb.com/bfs/article/cbab595bd0f4b473c1817680aa5a33e14fc7b04e.jpg@1280w_756h.webp
首先看到, R2-3 之间OSPF 邻居是好好的, 这样, R2-3之间就是传输路径TransNet
//i0.hdslb.com/bfs/article/4c64fa816f5705088b0d633e981ee0b9395dbbb7.jpg@1280w_404h.webp
//i0.hdslb.com/bfs/article/1d9a1d1196474202afdb71d705e6990b0194b240.png@898w_1190h.webp
而当关闭这个接口时, R2 会经历一个hello dead 时间, , 从邻居R3 收不到hello, 然后就认为邻居失效,//i0.hdslb.com/bfs/article/083b9ea6af790b18a82e04272edba1bfad28b097.png@1280w_1036h.webp
这个时候, R2 给处于同一个区域, 但是不同广播域的R4 发送更新, 更新的内容, 就是说这个区域现在连接的是一个stub网络, 因为我们这里这个交换机所在的网络只有两个路由器//i0.hdslb.com/bfs/article/42e91a5c96fb641b8d2d08f2d33f54e60c32800b.png@1280w_856h.webp
我们在这里再加一个设备, 可以看到现在//i0.hdslb.com/bfs/article/d1e833d24399c0a88d40539942e3a030078c9c6e.jpg@1280w_1806h.webp
//i0.hdslb.com/bfs/article/524dc766e6a4e2ea22dece9b2f86bde1b74f227a.png@1280w_1370h.webp
关于这个交换机所在的网络的2类LSA 更新中, 会携带这个广播域内的成员信息由于这个交换机所在的广播域内还有其他成员,所以这个transit 信息并没有更改,图略但是,失联的这个成员RID 就会从2类LSA中消失,
//i0.hdslb.com/bfs/article/7f12d8c1d9ec73120de3d4b5182db2eaf6281d91.jpg@1280w_1110h.webp
总结:每个广播与都会产生一条2类LSA 泛洪到本区域的其他广播域物理口撤销路由,LSA 2 路由撤销就是把这个失联的路由器RID 从本广播域的2类LSA中的成员列表删除LSA 1, 如果这个网络只有2个成员, 其中一个失联, 就把这个网络使用更新的方式, 告诉其他广播域路由器这里连接 的是一个STUB网络, 本广播域没有这个更新。如果这个广播域还有不止一个邻居, 那么就不发1类LSA更新去改这个STUB, 只是发LSA 2 去减少成员RIDLSA2撤销
2类LSA是DR产生的, 用于描述这个网络内掩码的长度和这个网络内的成员RID环境如下://i0.hdslb.com/bfs/article/e16961f35ad85071e994722d97805fd653615422.jpg@1280w_1270h.webp
//i0.hdslb.com/bfs/article/bc231f98239d635c75de6e6ec7c05d10acefaa30.jpg@1280w_1036h.webp
在这个环境下,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 。
//i0.hdslb.com/bfs/article/b58123e984fb96bc6175df06654e41895ce3d376.png@1280w_588h.webp
//i0.hdslb.com/bfs/article/13c356c43a1f88a97e017648b7eea1e9a9529c21.png@1280w_944h.webp
//i0.hdslb.com/bfs/article/1311e7689a1ace4f3a39c5ba9c38e094ab9c03d7.png@1280w_800h.webp
可以看到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撤销。//i0.hdslb.com/bfs/article/334c96bf271781d43dbec5d7c5b7a75a4cbf6ce8.png@1280w_324h.webp
场景一、AR1上1.1.1.1这条路由撤销的时候,直接undo loopback接口
//i0.hdslb.com/bfs/article/1557ee364993265464961c04578aab4ffa198398.png@1280w_762h.webp
通过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 撤销这是通告更新//i0.hdslb.com/bfs/article/93e8a4fc7fb23885c55e4f206c53ffa28311eeae.png@1280w_1122h.webp
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.
//i0.hdslb.com/bfs/article/17d2ce79ed003561c6751d9f0eb8289d1bc91a23.jpg@1280w_896h.webp
区域内路由:使用LSA1 和LSA9
AR1上有一条loopback0的路由,我们给undo这个接口后发现AR1向FF02::6发了一个LSU来更新//i0.hdslb.com/bfs/article/20109319ca3ed56ecb2fb88cfca50d5c338c1166.png@1280w_498h.webp
分别是一个9-LSA和1-LSA。因为依据1-LSA形成的LSA-9是用来描述主机路由的,所以撤销的时候猜想应该是LSA-1的seq+1然后LSA-9为3600s再次实验,在loopback0接口上配两个全球IPV6单播地址,宣告进入ospfv3,这次只undo 一条路由发现9-LSA只seq+1 而不是3600s//i0.hdslb.com/bfs/article/ff753b5c015e5f7002e7d24bfbd427fddf3a3325.jpg@1280w_1794h.webp
并且也只有一条9-LSA了,所以猜想刚刚undo loopback接口的时候,由于删掉了接口,相当于拓扑也有变化,并且路由也是全部删除。所以情况是LSA-1的seq+1 LSA-9为3600s。
区域间:使用LSA 3//i0.hdslb.com/bfs/article/76099a2a71e86115aad7dee7fa15c540b2325887.png@1280w_1066h.webp
区域间路由撤销的时候, 是使用发送老化时间为3600 的3类LSA
接下来是测试5+7
LSA4-5LSA 4-5 通告路由 如下//i0.hdslb.com/bfs/article/2cd56ee12f10ade1dba4d53ad55542366fbb5e4e.png@1280w_1196h.webp
LSA 4/5 撤销路由如下//i0.hdslb.com/bfs/article/2cff76ce78465f3a6b5c55a9df85d74e273dd11c.png@1280w_1132h.webp
LSA 4-5 撤销路由使用老化时间为 3600 的路由
LSA-7 在NSSA区域引入路由//i0.hdslb.com/bfs/article/2351f9d2e65e2ef997a409202b1208acbb57aa8f.png@1280w_414h.webp
//i0.hdslb.com/bfs/article/a531da235a1fb031c835c975efd64feb13574a4f.png@1280w_1136h.webp
都是使用老化时间为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 路由撤销
路由通告://i0.hdslb.com/bfs/article/0db7f582ded10516206c1a0c9b82173cf2e1c3fd.png@1280w_656h.webp
//i0.hdslb.com/bfs/article/acbea1165f89ebf48defd6b1c7aad35554415bbf.png@1280w_530h.webp
总结:BGP在通告路由更新的时候, 是放在NLRI 字段中的,会携带路由的公认必遵属性,包括起源属性ORIGIN,AS-PATH,NEXT-HOP,
撤销AS内部路由的时候, 是放在Withdrawn Routes 字段中的,是不带这些路径属性的,
BGP的路由撤销是不分AS内的还是AS间的,
总结:路由撤销的方式
路由撤销是路由通告的反操作, 谁通告的, 就是谁撤销OSPFv2/3中, 都是使用老化时间 3600秒的LSA去撤销路由, 序列号+1
OSPF撤销路由报文是LSUISIS撤销路由报文是LSP
BGP通过update报文的withdrawn routes length 撤销路由长度withdrawn routes 撤销的路由列表
最后
太阁老师的个人微信
添加太阁老师个人微信领取:太阁免费视频资料、NA综合实验配置文件拓扑图及模拟器、太阁独家实验手册、网工必读书籍等 //i0.hdslb.com/bfs/article/9a1e93b751fdd637d6413b4fb1a1c61c9f584770.jpg@1320w_1326h.webp
页:
[1]