三大路由协议是如何撤销路由的?

三大路由协议是如何撤销路由的?

三大路由协议包括:OSPF、ISIS、BGP

细想这些协议技术的产生其实挺有意思的,由于都是人将其研发出来的,所以协议的很多机制都挺人性化。比如OSPF的邻居建立,它就像两个人第一次见面建立邻居关系,最基本的条件就是咱们两个人在互相问侯时候需要知道双方的名字,比如:hello,我是XXX,你是YYY吧?。。 否则你连我的名字都不知道也就没有必跟你建立邻居关系。。

OSPF:

OSPF的路由是以LSA来承载的,OSPF中撤销路由实则是撤销LSA或更新LSA的一个操作,根据OSPF对LSA的操作情况可以将其分为一类、二类LSA的撤销路由和三类、五类、七类LSA撤销路由两方面去讨论。

一类、二类LSA撤销路由:

情况一(一类、二类LSA处理过程类似):

在该拓扑中运行OSPF路由协议,AR1路由器上有一个loopback0接口,地址为1.1.1.1/32。接下来在OSPF中将该地址先宣告到OSPF区域0然后删除再后查看LSA的变化情况。

[AR1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0        //宣告路由
[AR1-ospf-1-area-0.0.0.0]display  this 
[V200R003C00]
#
 area 0.0.0.0 
  network 1.1.1.1 0.0.0.0 
  network 10.0.12.1 0.0.0.0 
#
return
[AR1-ospf-1-area-0.0.0.0]
[AR1-ospf-1-area-0.0.0.0]undo network 1.1.1.1 0.0.0.0    //删除该路由

 

宣告路由的时候:

撤销路由的时候:

根据抓包情况可以看出,当network一个路由之后,该路由器会产生一条一类LSA,其中就有刚添加的那个接口的信息。该LSA里面包含着link-ID和link-DATA(loopback接口为stub网络类型,所有它的一类LSA的link-ID是接口的地址,link-data是接口地址的掩码,普通传输网络的link-ID则是DR的接口IP,link-data则是本设备的接口IP)
序列号是:0x80000005

当撤销一条路由后,该路由器仍然会产生一条LSA,只不过不再包含loopback0接口的信息了,变化的是序列号,变成了:0x80000006

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

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

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

该三种LSA的撤销方式一致,只不过五类和七类的LSA只有当OSPF引入了外部路由的时候才产生,而三类LSA则是当添加或撤销路由时候ABR向其它区域通告的,所以此处直接以三类LSA举例。环境如下:此时存在两个区域,AR2就变成了ABR,当在AR1上宣告或删除接口地址信息的时候,AR2路由器就会像area1区域通告三类LSA,描述其区域0内的路由信息。

宣告路由的时候:

撤销路由的时候:

可以看出,当AR1新宣告一个地址后,作为ABR的AR2路由器会向区域1通告一条三类LSA,LSA的link-ID、metric和netmask共同描述路由信息,LS-age为1(OSPF的LS-age是递增的,而ISIS路由协议的ls-age则是递减的)。

当撤销一条路由后,ABR同样会产生一条三类LSA,只不过此时的ls-age就被设置成了3600秒,ospf的LSA最大老化时间为3600秒,当达到最大老化时间后该LSA将不可用,路由器就会删除与该LSA相关的路由,以此来撤销路由。

ISIS:

ISIS路由协议的路由信息是封装在LSP报文中的TLV中的,但是它对撤销路由的处理和OSPF的处理方式类似。

环境如下:路由器均为level-1-2路由器区域号均为49.0001

在ISIS中撤销一条路由实则是将接口下的ISIS关闭:

<AR1>system view                        //进入系统视图
Enter system view, return user view with Ctrl+Z.
[AR1]interface LoopBack 0                //进入接口实挺
[AR1-LoopBack0]isis  enable                //加入一条路由
[AR1-LoopBack0]display this                //查看当前配置信息 
[V200R003C00]
#
interface LoopBack0
 ip address 1.1.1.1 255.255.255.255 
 isis enable 1
#
[AR1-LoopBack0]undo isis  enable         //撤销一条路由
[AR1-LoopBack0]display this 
[V200R003C00]
#
interface LoopBack0
 ip address 1.1.1.1 255.255.255.255 

撤销内部路由:

此时我们只观察L2路由器发的LSP报文

宣告路由的时候:

撤销路由的时候:

由此可见,在ISIS中路由信息是由IP接口TLV和IP内部可达性TLV共同来描述的,ip接口TLV携带的是地址信息,区域内部可达性TLV携带的路由前缀信息和度量(外部引入的路由会放到IP外部可达性TLV里)且剩余生命时间是1199秒,默认1200秒,递减。

撤销一条路由时的操作也是重新发送一条LSP消息,LSP的两个TLV中不再包含删除的路由的信息,并且序列号加1,路由器在收到一条LSP后会比较新旧,优选序列号大的LSP。路由器通过路由计算撤销该路由。

撤销外部路由:

宣告路由的时候:

撤销路由的时候:

根据数据包分析可知,ISIS在撤销外部路由的时候除了在IP外部可达性TLV中不存在该路由信息之外(外部引入的路由没有IP接口TLV,它是用于描述拓扑的)其剩余生产时间会被置为0(当生存周期减到0后该LSP不可用,再等60sLSP从数据库中删除,路由删除,该60秒称为0老化时间,在该时间内,路由器会向网络通告撤销的lsp,该lsp里的剩余生存时间为0秒,用于加速网络收敛,收到该lsp的路由器会将路由删除。

BGP:

BGP是通过update包来携带路由信息和撤销路由信息的

拓扑如下:

两台设备通过直连接口建立IBGP邻居关系,AS为100,在AR1上将loopback0接口的地址加入到BGP中,然后撤销该路由,抓包分析。

<AR1>system-view 
Enter system view, return user view with Ctrl+Z.
[AR1]bgp 100
[AR1-bgp]dis thi    
[AR1-bgp]display this 
[V200R003C00]
#
bgp 100
 peer 10.0.12.2 as-number 100 
 #
 ipv4-family unicast
  undo synchronization
  peer 10.0.12.2 enable
#
return
[AR1-bgp]
[AR1-bgp]network 1.1.1.1 32            //加入路由
[AR1-bgp]undo network 1.1.1.1 32    //撤销路由

宣告路由的时候:

撤销路由的时候:

根据抓包的分析可以得知,BGP在宣告一条路由的时候,该路由信息被放在update包中的NLRI(网络层可达性信息)中,包含了地址信息和前缀长度,度量的话是放在了路径属性中的MED属性中。

而撤销路由则是路由器直接发update包,带有withdraw routes(撤销路由)这个属性,对方路由器收到该update报文后就会删除相应的IP路由。

BGP对引入的路由的撤销也是如此,只不过起源属性不一样,引入的是incomplete,network的是IGP。不同区域的路由撤销也是如此,只不过AS属性会改变。

Tell us about your thoughtsWrite message

电子邮件地址不会被公开。 必填项已用*标注

Back to Top
Close Zoom