IS-IS LSP泛洪同步过程

概述:

IS-IS通过泛洪LSP来实现链路状态同步过程,如何保证泛洪过程的可靠性及LSP的完整性则需要SNP报文的协助完成,它分为两类:

  1. CSNP (Complete Sequence Number Packet:完全序列号报文)。
  2. PSNP (Partial Sequence Number Packet:部分序列号报文)。

CSNP和PSNP的报文格式是相同的,而且都携带LSP的摘要信息。不同的地方是,CSNP报文携带的是当前路由器的链路状态数据库中的所有LSP的摘要信息,类似OSPF的DD (数据库描述)报文;而PSNP报文携带的是数据库中部分LSP的摘要信息。这个摘要包括了LSP ID、序列号、校验和及剩余生存时间。

因为链路状态数据库有LI类型和L2类型的,所以CSNP和PSNP两种报文也有L1类型和L2类型。广播链路下:L1发送到组播地址01-80-C2-00-00-14, L2发送到组播地址01-80-C2-00-00-15。并且在广播网络和P2P网络中,对这两种报文的使用还有此区别。

报文格式分析如下:
https://blog.csdn.net/tushanpeipei/article/details/112557014

泛洪机制:

机制概述:
作为一种链路状态路由协议,IS-IS 和OSPF一样,在学习和计算路由之前,区域中的路由器首先要交换链路状态信息,最终所有路由器的链路状态数据库达到一致的状态,这就好比每台路由器都有了一张相同的网络拓扑。然后,每台路由器利用自己的SPF算法计算到区域内任何其他网络的最优路由。

路由器产生一个LSP后,然后从所有运行了IS-IS 的接口打散出去,区域中的其他路由器从一个接口接收到LSP后,将这份LSP的一份拷贝装入L1或L2的数据库中,然后再将这份LSP从其他所有运行了IS-IS的接口继续扩散。

IS-IS路由域内的所有路由器都会产生LSP,以下事件会触发一个新的LSP:

  1. 邻居Up或Down
  2. IS-IS相关接口Up或Down
  3. 引入的IP路由发生变化
  4. 区域间的IP路由发生变化
  5. 接口被赋了新的metric值
  6. 周期性更新

路由器接收到一条LSP时,处理流程如下:

  1. IS-IS路由器接收到LSP,在数据库中搜索对应的记录。若没有该LSP,则将其加入数据库,并组播新数据库内容。
  2. 若收到的LSP序列号大于本地LSP的序列号,就替换为新报文,并组播新数据库内容;若收到的LSP序列号小于本地LSP的序列号,就向入端接口发送本地LSP报文。
  3. 若两个序列号相等,则比较Remaining Lifetime (剩余生存时间)。若收到的LSP的Remaining Lifetime小于本地LSP的Remaining Lifetime,就替换为新报文,并组播新数据库内容;若收到的LSP的Remaining Lifetime大于本地LSP的Remaining Lifetime,就向入端接口发送本地LSP报文。
  4. 若两个序列号和Remaining Lifetime都相等,则比较Checksum。若收到的LSP的Checksum大于本地LSP的Checksum,就替换为新报文,并组播新数据库内容;若收到的LSP的Checksum小于本地LSP的Checksum,就向入端接口发送本地LSP报文。
  5. 若两个序列号、Remaining Lifetime和Checksum都相等,则不转发该报文。

注意与OSPF的区别。

SRM和SSN标志:
SRM和SSN标志在链路状态信息泛洪过程发挥了重要作用。SRM标志用来跟踪路由器从一个接口向邻居发送LSP的状态。在广播网络中,SSN 标志用来跟踪向邻居请求完整的LSP状态;在点对点网络中,SSN标志用来跟踪对LSP的确认状态。

SRM和SSN标志可以帮助路由器以更优化的方式发送LSP和PSNP,从而减少带宽和CPU的开销,提高链路状态数据库的同步。详细信息会分别在广播网络和点到点网络数据库同步的内容中介绍。

计时器:
IS-IS协议在链路状态信息泛洪过程中使用了多个计时器,这些计时器中有的用来控制LSP刷新的间隔,有的用来限制LSP产生的频率等。在不稳定的网络中,这些计时器确保了LSP泛洪不会带来过大的网络资源开销,还提供了保证数据库完整性的方法,这一节就来跟大家解释一下这些计时器的使用及在华为VRP系统中的配置命令。

  1. 最大生存时间
    • 最大生存时间是指一个LSP 从“生命”诞生开始直到“老死”经历的最长时间,IS010589定义的LSP最大生存时间为1200s。 一个LSP的“阳寿”是从最大生存时间向下递减的,当一个LSP的“阳寿”等于0时,就从数据库中清除掉了。在华为VRP系统中,使用剩余生存时间来标识一个LSP的“阳寿”。正常情况下,一个LSP的始发源路由器会定期更新它的LSP (LSP 更新时间在下文介绍),路由器接收到新的LSP后,替换掉老的LSP并重置LSP的剩余生存时间到最大生存时间。如果LSP的剩余生存时间减少到0时,还没有得到源路由器的刷新,那么这个LSP就会被清除。在清除之前路由器还会等-一个“零阳寿生存时间”(Zero Age Life Time),ISO 10589定义的零阳寿生存时间为60s。
    • 一般情况 下,不建议大家修改LSP的默认最大生存时间,因为网络中的路由器使用的LSP最大生存时间必须一致,如果路由器接收到一个LSP的剩余生存时间比本地的最大生存时间还要大,那么会认为该LSP已经被破坏而将其丢弃,从而影响网络的稳定性。

  2. LSP刷新间隔
    LSP始发路由器在LSP“阳寿”消耗尽之前(LSP剩余生存时间减少到0之前),每隔一定时间会重新产生该LSP的新实例,这个时间间隔默认为900s。周期性的刷新有利于网络中所有路由器的链路状态数据库的完整性。华为VRP系统修改LSP刷新间隔的命令是timer lsp- refresh。适当将刷新时间间隔设置大些,可以减少网络资源的消耗,但是不利用网络的收敛。

  3. LSP连续生成间隔
    LSP连续生成间隔是指路由器连续生成两个LSP的时间间隔。在一些不稳定的网络中,可以将LSP生成间隔设置大些,比如网络中有条链路持续翻滚的话,就会导致路由器不停地产生新的LSP,这会让网络中其他路由器的SPF进程频繁进行路由计算,增大了CPU开销。为了避免LSP频繁生成给网络带来的冲击,LSP的生成存在一个最小间隔的限制,即同一个LSP在最小间隔内不允许重复生成,一般缺省最小时间间隔为Ss,作了这种限制后,路由收敛速度受到较大影响。IS-IS 中,当本地路由信息发生变化时, 路由器需要产生新的LSP来通告这些变化。当本地路由信息的变化比较频繁时,立即生成新的LSP会占用大量的系统资源。另一方面,如果产生LSP的延迟时间过长,则本地路由信息的变化无法及时通告给邻居,导致网络的收敛速度变慢。可以使用timerlsp-generation命令来设置产生LSP (这些LSP具有相同的LSP ID)的延迟时间。

  4. LSP传输间隔
    LSP传输间隔是指连续传送两个LSP的间隔,缺省情况下,接口上发送LSP的最小时间间隔为50ms。如果邻居路由器的资源有限,其他路由器向其传递一个LSP后,它无法按时确认的话,其他路由器就会重传LSP,这时可能使情况更加恶化,为了保护这样的邻居,LSP 传输间隔就得设置大些。

  5. CSNP发送间隔
    在广‘播网络中,为维护链路状态数据库的完整性,DIS 周期性地发送CSNP, 默认间隔是10s。华为VRP系统可以通过接口命令isis timer csnp来修改默认值。这个值设置得小些,有利于网络的快速收敛,但同时增加了带宽的开销。如果一个网络在比较稳定的情况下,可以适当增大该值,以减少对带宽的开销。

以上这些计时器提供了一些优化和控制链路状态信息泛洪的方法。一般情况下,不建议修改这些计时器的默认值,除非修改后能预测相应的结果。如果网络规模大,加快收敛速度的办法就是升级路由器。另外,在网络规划时,一定要保证网络的高可用性。

广播链路下LSDB同步过程:

概述:

在广播网络中,路由器在邻接关系初始化后,首先泛洪自己的LSP,L1的LSP发送到组播地址01-80-C2-00-00-14(L1 IS), L2的LSP发送到组播地址01-80-C2-00-00-15(L2 IS)。 其他L1或L2邻居接收LSP后,并不需要确认,因此,在广播网络中,LSP的泛洪是不可靠的。这样的话,对于LSP的始发路由器来说,如何确保所有邻居都接收到了自己的LSP呢? IS-IS 协议使用DIS周期性地发送CSNP来保证广播网络中链路状态数据库的同步。

DIS作用之一是IS-IS协议用来在广播网络中控制数据库信息的泛洪和同步的。在广播网络中,路由器都与DIS建立了邻接关系(当然,所有路由器之间都建立了邻接关系),这就意味着,DIS 的数据库拥有其他所有路由器的数据库信息,基于这个前提,DIS使用一个或多个CSNP描述自己整个链路状态数据库信息,然后周期性地(每隔10秒)扩散到网络中。

广播链路下不用PSNP报文进行确认的原因是广播链路相比P2P环境会更加的复杂,如果一个网络中有多个邻居,组播泛洪的PSNP报文会对整个链路带宽和其他邻居造成影响。

其他路由器接收到DIS的CSNP后,与自己的数据库中的内容作比较,比较后会发现自己缺失或较新的LSP,然后发送PSNP来请求相应的LSP。

网络中的DIS或具有这份LSP的邻居收到请求后就会回应相应的LSP。在广播链路上,发送LSP之前会在接口上先设置一个SRM标志,待发送完LSP后立刻清除标志。如果路由器查看DIS发过来的CSNP内容后,发现自己数据库中具有的LSP而DIS没有或DIS具有的更老,这时它会主动将自己的LSP泛洪出来。通过上述过程,保证了广播网络中所有路由器的数据库都是一致的。在一个广播网络中有可能存在多台路由器,在链路状态数据库的同步过程中,如果对每条接收的LSP都要给予确认的话,这就需要发送端路由器跟踪其他所有邻居的接收情况,从而让整个过程变得更复杂。虽然DIS周期性泛洪CSNP会带来一定 的带宽开销,但是这个方法相对来说简单得多。

具体步骤:
在这里插入图片描述

  1. 如上图所示,新加入的路由器RouterC首先发送Hello报文,与该广播域中的路由器建立邻居关系。
  2. 建立邻居关系之后,RouterC等待LSP刷新定时器超时,然后将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻居都将收到该LSP。
  3. 该网段中的DIS会把收到RouterC的LSP加入到LSDB中,并等待CSNP报文定时器超时并发送CSNP报文,进行该网络内的LSDB同步。而其他邻居在收到RouterC发来的LSP时会直接丢弃,因为在广播环境中,区域内的路由器只能与DIS进行LSP交互。
  4. RouterC收到DIS发来的CSNP报文,对比自己的LSDB数据库,发现有许多LSP在本地数据库没有,所以向DIS发送PSNP报文请求自己没有的LSP。
  5. DIS收到该PSNP报文请求后向RouterC发送对应的LSP进行LSDB的同步。

P2P链路下LSDB同步过程:

概述:

跟广播网络不一样,IS-IS 协议在P2P网络中的数据库同步过程中,接收到邻居的LSP后是需要给予确认的(可靠方式)。因为在P2P链路上,每台路由器只有一个邻居,确认不会带来过多的资源开销。

在P2P网络中,当两台路由器建立好邻接关系后,首先交换CSNP。跟前文介绍的一样,路由器通过比较接收到的CSNP的内容,确定本地数据库缺失的LSP,并根据前面介绍的LSP的新旧比较规则,比较自己的数据库和邻居数据库中LSP的新旧;对于缺少或过时的LSP,路由器会发出PSNP进行请求,并且在收到邻居回应过来的LSP后使用PSNP确认;如果路由器发现邻居路由器有缺失或拥有更旧的LSP,它会主动将LSP
发送给邻居。

如果发送的LSP没有得到邻居的PSNP确认,在重传间隔时间超时后,路由器会重传先前的LSP,直到接收到邻居的PSNP确认为止。在P2P链路上接收到一个LSP后,接口上会设置一个SSN标志表示需要向该接口发送PSNP确认,接收到确认后,SSN标志就会被清除;同时,如果需要将LSP拷贝从一个接口发送出去,也会在该接口上设置SRM标志,发送后标志立刻被清除。

具体步骤:
在这里插入图片描述

  1. R2接收到R1的CSNP (描述了一条LSP: R1.00-00)后,发送PSNP进行请求。
  2. R1收到请求后,将相应的LSP拷贝发送到网络中。
  3. R2接收到请求的LSP后,将其拷贝存入数据库中,并且在接口2设置SSN标志,在接口3设置SRM标志。
  4. R2向R3转发这个LSP的拷贝并向R1发送PSNP进行确认。
  5. R2清除接口,上的SSN标志。
  6. R3从R2接收到这个LSP后,存入数据库中,并同时在接口4上设置SSN标志。
  7. R4向R2发送PSNP确认,并同时清除接口4.上的SSN标志。
  8. R2接收到R3的PSNP确认后,清除接口3的SRM标志。

总结在P2P链路上PSNP有两种作用:(在广播环境中只有请求LSP的作用)

  1. 作为Ack应答以确认收到的LSP。
  2. 用来请求所需的LSP。

资料整理来源:《HCIE路由交换学习指南》、华为hedex指南

猜你喜欢

转载自blog.csdn.net/tushanpeipei/article/details/112654114