HCIE面试:三大路由协议的撤销。
三大路由协议的撤销
OSPF的路由撤销
OSPF的路由发布和撤销都是通过发送LSU报文来实现的,LSU报文中的LSA包含了具体的要发布或者撤销的路由信息,那么OSPF路由的撤销其实就是LSA的更新。
在OSPF中常用的LSA主要有以下类型:LSA1、LSA2、LSA3、LSA4、LSA5、LSA7;
下面讲讲一下各个LSA的更新方式。

上图中,R1、R2、R3、R4运行ospf协议,所有设备都在运行在区域0中,R1/2/3的互联网段为123.1.1.0/24,R3/4的互联网段为34.1.1.0/30,R3的两个接口各为两个MA网络的DR;
LSA1的撤销:1类LSA,所有运行了ospf协议的设备都会产生一类LSA,用于描述自身的链路状态信息,如网络信息和拓扑信息,在本区域内泛洪;
1类LSA的撤销方式为在原先LSA的序列号的基础上序列号加1,如下图当前R1的loop0口宣告在area0中,通过LSA1的link type为stub类型来承载路由信息,当前的序列号为80000006;

现在在R1上undo network 1.1.1.1 0.0.0.0,再次观察R1产生的LSA1;

R1的1类LSA信息
上图中可以看出,R1产生的LSA中序列号变成了80000007,LSA的身体中不再包含link type为stub的关于1.1.1.1网段的路由信息;从下图的抓包也可以看出,123.1.1.1(R1)向224.0.0.6发送了一条LSU,更新的内容就是序列号加1,身体中不再包含1.1.1.1的网络信息;此外还可以看到123.1.1.3(DR)向224.0.0.5发送了一条LSU,LSA内容和R1发出的一样,就是源目IP变了,因为DR other(R1和R2)间是不能直接通信的,他们之间只是two-way状态,不交互LSDB信息,需要通过DR当作反射器,反射链路状态信息;经过反射后,R2才能知道R1撤销了1.1.1.1的路由;



LSA2的撤销:2类LSA,由DR产生,用于描述MA网络中的网络信息和拓扑信息,在本区域内泛洪。2类LSA的撤销分为序列号加1的情况和Ls Age=3600的情况;
如下图,是123.1.1.3产生的2类LSA,内容包含了MA的网络信息和拓扑信息。网络信息使用LS id和netmask做与运算即可得出MA的网络信息,拓扑信息就是attached router 使用router-id来填充;

如下图,中断R1的互联链路,再次查看LSA2信息;


可以看出序列号加1变成了8000000a,拓扑信息attached router中不再包含1.1.1.1;
如下图,中断R1、R2的链路,再次查看LSA2;

可以看到,123.1.1.3不再产生LSA2,从抓包的数据可以看出,区域0中产生一条LS Age=3600的2类LSA撤销。那么此时再看R3产生的LSA1,可以看出原先的123.1.1.0.24的MA网络信息以stub类型承载在R3的1类LSA中;



LSA3的撤销:3类LSA,由ABR产生,用于描述区域间的路由信息,在本区域内泛洪。3类LSA的撤销是以Ls Age=3600的方式来实现;
如下图,我们将拓扑做一些小小的改动,将R3和R4之间的区域变更为area1;

先查看一下目前R3的LSDB,如下图,可以看到在一共有5条3类LSA(原本应该有6条,1.1.1.1被undo掉了,所以只剩5条),接下来,我们在R2的area0中undo network 2.2.2.2 0.0.0.0;

根据在区域1抓包结果可以看出,在区域1内产生一条关于2.2.2.2网段撤销的3类LSA
Ls Age=3600,序列号不变;

LSA4:4类LSA由ASBR所在区域的ABR产生,描述ASBR的信息,在除ASBR所在的区域泛洪;4类LSA的撤销也是以Ls Age=3600,序列号不变的方式撤销;
LSA5:5类LSA由ASBR产生,描述外部路由信息,在所有OSPF区域泛洪,除了特殊区域;5类LSA的撤销也是以Ls Age=3600,序列号不变的方式撤销;
如下图,在之前的拓扑基础上,在R4上新增一条静态路由,并引入OSPF;

在R4上引入静态路由后,R4产生一条5类LSA,描述外部路由信息,同时产生一条1类LSA用来描述自己是ASBR,R3会产生一条4类LSA,用来描述ASBR的信息;
如图,在区域1中,R4产生两条LSU,一条包含1类LSA,用来表示自己是ASBR,一条包含5类LSA,用来描述外部路由信息;



如下图,在区域0中,R3产生一条LSU信息,包含4类LSA,用来描述ASBR的信息,
Link state id用ASBR的router-id填充,使用netmask做与运算,得出指向ASBR的主机路由;

现在,我们在R4的OSPF的进程下undo import-route static,接着抓包分析;
如下图,在区域0中抓到一条4类LSA,Ls Age=3600,序列号不变(仍为0x8000001),在区域0和区域1都可以抓到一条5类LSA,Ls Age=3600,序列号不变(仍为0x8000001)。(当然在区域1还会产生一条LSA1,是R4产生的,序列号加1来撤销自己ASBR的角色,这个1类LSA的撤销之前分析过了,这里不再赘述;)


LSA7的撤销:7类LSA,是由NSSA区域的ASBR产生,也是用来描述区域外部路由信息,在本NSSA区域泛洪;其撤销方式和LSA5一致,这里不再赘述;
isis的路由撤销
isis路由的更新和撤销都是通过更新LSP报文来实现的,此外isis的路由撤销分内部撤销和外部撤销,外部撤销又分为部分撤销和全部撤销;
isis的内部路由撤销方式,isis的内部路由是有TLV 128 ip internal reachability承载,在路由撤销时,发送LSP的序列号加1,TLV128不再携带被撤销的路由信息来完成路由的撤销;
如下图,R1和R2运行isis路由协议,并建立了L2的邻接关系,R1将loop0口宣告进isis中;

当R1的将Loop0是发布到isis时,我们抓包分析,查看抓包数据,可以看出当前LSP的序列号为0x0000000a,在TLV128中包含两条IPv4前缀信息,一个互联口的网段12.1.1.0/30,一个loop0口的1.1.1.1/32;

此时,我们在R1的loop0口下undo isis enable,并抓包分析数据,可以看到LSP的序列号变成了0x0000000b,TLV128中不再包含被撤销的1.1.1.1的相关前缀信息;

isis外部路由撤销方式:分部分撤销和全部撤销,部分撤销使用序列号加1的方式撤销路由,全部撤销使用remaining lifetime=0,序列号不变来实现外部路由的撤销;
如下图,在R1上新增两条静态路由,然后在isis中引入静态,然后抓包进行分析;

可以看到生成一条LSP,并且以分片号1来承载(isis引入外部路由一定使用新的分片承载),序列号为0x00000001,TLV130承载两条静态路由前缀信息;

此时我们在R1上删除一条静态路由undo ip route-static 9.9.9.9 32,再分析抓包数据;
可以看出,LSP的序列号变为0x00000002,TLV130中不再包含9.9.9.9的前缀信息;

此时我们再将8.8.8.8的静态路由也删除,再分析抓包数据;可以看出LSP的remaining lifetime被置为0,序列号不变,并且不再携带TLV130字段,也就不携带任何路由前缀;

isis默认为窄带宽,使用TLV128承载内部路由信息,使用TLV130承载外部路由信息;宽带宽使用TLV135承载内部和外部路由信息,TLV135的内部撤销方式和TLV128一致,TLV135的外部撤销方式和TLV130的撤销方式一致,这里不再赘述;
BGP路由的撤销方式
BGP路由的发布和撤销都是通过update报文来实现的,主要通过update报文中的NLRI和witedrawn-routes来发布和撤销路由;
如下图,R1和R2建立IBGP邻居关系,R1将network 1.1.1.1 32 ,抓包分析数据;

通过抓包数据可以看出,BGP在更新路由时,发送update报文,报文中携带一些路径属性,如origin、as_path、next-hop等,NLRI(网络层可达信息)中携带具体的路由前缀信息;

下面,我们在R1的BGP进程下undo network 1.1.1.1 32 继续抓包分析,可以看到,撤销后的update报文里没有携带BGP的路径属性,只使用withdrawn-routes字段,携带撤销的路由信息;
