百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

学习回顾—IS-IS路由协议(0x0F)-IS-IS协议基本原理-LSP交互过程

ztj100 2024-12-13 17:20 9 浏览 0 评论

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

① 邻居UP或Down

② IS-IS相关接口UP或Down

③ 引入的IP路由发生变化

④ 区域间的IP路由发生变化

⑤ 接口被赋予新的Metric值

⑥ 周期更新。

在收到邻居新的LSP后,将接收的新的LSP合并到自己的LSDB中,并标记为flooding(泛洪),然后发送新的LSP到本地除了接收到该LSP的接口之外的其他所有同进程IS-IS接口。邻居收到再扩散到它们的邻居,一级级地扩散,最终实现整个IS-IS网络中各种录取的LSDB同步。

【说明】LSP报文的“泛洪”(flooding)是指当一个路由器向邻居路由器通告自己的LSP后,相邻路由器再讲同样的LSP报文传送给除发送该LSP的路由器外的其他邻居,这样逐级将LSP传送到整个层次内所有路由器的一种方式。通过这种“泛洪”,整个层次内的每一台路由器都可以拥有相同的LSP信息,并保持LSDB的同步。

每一个LSP都拥有一个标识自己的4字节的序列号。在路由器启动时所发送的第一个LSP报文中的序列号为1,以后当需要生成新的LSP时,新LSP的序列号在前一个LSP序列号的基础上加1.更高的序列号意味着更新的LSP。

1) 广播链路中新加入路由器与DIS同步LSDB的过程

如图所示为例介绍广播链路中新加入路由器与都是同步LSDB的流程。假设RouterC是新加入的,在广播网络中,这些IS-IS报文均以二层组播方式发送。


① 新加入的路由器RouterC首先发送Hello报文,与该广播域中的相邻路由器建立邻居关系。

② 建立邻居关系之后,RouterC等待LSP刷新定时器超时,然后将自己的LSP发网组播地址(参见图中的1号报文)。这样网络上的所有邻居都应该收到该LSP。

③ 该网段中的DIS(RouterB)会把收到RouterC的LSP加入LSDB中,并等待CSNP报文定时器超时并向网络内组播发送CSNP报文(参见图中的2号报文),进行该网络内的LSDB同步。而其他邻居在收到RouterC发来的LSP时会直接丢弃,因为在广播网络中,区域内的非DIS只能与DIS进行LSP交互。

④ RouterC收到DIS发来的CSNP报文,对比自己的LSDB数据库,发现有许多LSP在本地数据库中没有,于是向DIS发送PSNP报文(参见图中的3号报文),请求自己没有的LSP。

⑤ DIS收到该PSNP报文请求后,向RouterC发送对应的LSP(参见图中的4号报文)进行LSDB的同步。

上述过程中的LSDB更新过程如下。

① DIS收到LSP后再自己的LSDB中搜索对应的记录。如果没有该LSP(每个IS-IS路由器都会向邻居设备发送自己的LSP,通过LSP ID中的System ID进行区分),则将其加入LSDB数据库,并在网络内泛洪新的LSDB。

② 如果收到的LSP序列号大于本地已有的对应路由器的LSP的序列号(此时新接收的LSP更新),就替换为新的LSP报文,并在网络中泛洪新的LSDB;如果收到的LSP序列号小于本地已有的对应路由器的LSP的序列号(比本地LSP还旧),则向入端接口发送本地已有的对应路由器的LSP报文,是对端更新LSDB。

③ 如果新接收的LSP与本地已有的对应路由器的LSP的序列号相等,则比较两LSP报文中的Remaining Lifetime(剩余生存时间)字段值。如果收到的LSP报文的Remaining Lifetime为0,则将本地的报文替换为新报文(随后将因为Remaining Lifetime计时器超时而被删除),并泛洪新的LSDB;如果收到的LSP报文的Remaining Lifetime不为0,而本地LSP报文的Remaining Lifetime为0,就向入端接口发送本地LSP报文,使对端从LSDB中删除对应的LSP。

【说明】每个IS-IS LSP都有一个Remaining Lifetime(剩余生存时间)字段(参见13.2.4节的图13-11),用来表示当前LSP剩余的生存时间,是一个倒计时的计时器,用于老化LSP,当该计时器为0时,对应的LSP需要从当前设备的LSDB中删除。

④ 如果收到的LSP和本地已有的对应路由器的LSP的序列号相同,且Remaining Lifetime都不为0,则比较Checksum。如果收到的LSP的Checksum大于本地LSP的Checksum就替换为新报文,并泛洪新的LSDB;如果收到的LSP的Checksum小于本地LSP的Checksum,就想入端接口发送本地的LSP报文。

⑤ 如果收到的LSP和本地对应路由器的序列号、Remaining Lifetime和Checksum都相等就不转发该报文。

2) P2P链路上LSDB数据库的同步过程

在P2P链路中不存在DIS、LSDB的同步,更新是在链路两端的路由器上进行的。下面以图13-23为例介绍P2P链路上LSDB的同步与更新流程。先介绍LSDB的同步流程。



① RouterA先和RouterB建立邻居关系。

② 建立邻居关系之后,RouterA与RouterB会先发送各自的CSNP给对端设备。如果一方发现,自己的LSDB没有与接收到的CSNP同步(里面的数据库内容存在不一致的地方)则该方向另一方发送PSNP报文(参见图中1号报文),请求索取相应的LSP。

③ 现假定RouterB通过PSNP报文向RouterA索取某些所需的LSP,RouterA在收到该PSNP报文后,向RouterB发送所请求的LSP(参见图中2号报文),同时启动LSP重传定时器,并等待RouterB发来用作收到确认的PSNP报文。

④ 如果在LSP重传定时器超时后,RouterA还没有收到RouterB发送的PSNP报文作为应答,则重新发送原来已发送的对应LSP(参见图中3号报文),直到收到了来自RouterB的响应PSNP报文(参见图中4号报文)。

【说明】以上过程可以看出,在P2P链路上的PSNP报文有两种作用:一是用来向对方请求所需的LSP,二是作为ACK应答以确认收到的LSP。

在P2P链路中,设备的LSDB更新过程如下。

① 如果收到的LSP比本地对应路由器的LSP的序号更小(新收到的LSP更旧),则直接给对方发送本地LSP,然后等待对方给自己一个PSNP报文作为确认;如果收到的LSP比本地对应路由器的LSP的序列号更大(新收到的LSP更新),则将这个新LSP发送给除了发送该LSP的邻居以外的邻居。

② 如果收到的LSP序列号和本地对应路由器的LSP的序列号相同,则比较Remaining Lifetime,如果收到的LSP报文的Remaining Lifetime为0,则将收到的LSP存入LSDB中,并发送PSNP报文来确认收到此LSP,然后将LSP发送给除了发送该LSP的邻居以外的邻居(可使邻居从LSDB中删除该LSP,更新其LSDB);如果收到的LSP报文的Remaining Lifetime不为0,而本地对应路由器的LSP报文的Remaining Lifetime为0,则直接给对方发送本地的LSP(也可使对端从LSDB中删除该LSP,更新LSDB),然后等待对方给自己一个PSNP报文作为确认。

③ 如果收到的LSP和本地对应路由器的LSP的序列号相同,且Remaining Lifetime都不为0,则比较Checksum,如果收到LSP的Checksum大于本地LSP的Checksum,则将收到的LSP存入LSDB中,并发送PSNP报文来确认收到此LSP,然后将该LSP发送给除了发送该LSP的邻居以外的邻居;如果收到LSP的Checksum小于本地对应路由器的LSP的Checksum,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。

④ 如果收到的LSP和本地对应路由器的LSP的序列号、Remaining Lifetime和Checksum都相同,则不转发该报文。

相关推荐

Java项目宝塔搭建实战MES-Springboot开源MES智能制造系统源码

大家好啊,我是测评君,欢迎来到web测评。...

一个令人头秃的问题,Logback 日志级别设置竟然无效?

原文链接:https://mp.weixin.qq.com/s/EFvbFwetmXXA9ZGBGswUsQ原作者:小黑十一点半...

实战!SpringBoot + RabbitMQ死信队列实现超时关单

需求背景之为什么要有超时关单原因一:...

火了!阿里P8架构师编写堪称神级SpringBoot手册,GitHub星标99+

Springboot现在已成为企业面试中必备的知识点,以及企业应用的重要模块。今天小编给大家分享一份来着阿里P8架构师编写的...

Java本地搭建宝塔部署实战springboot仓库管理系统源码

大家好啊,我是测评君,欢迎来到web测评。...

工具尝鲜(1)-Fleet构建运行一个Springboot入门Web项目

Fleet是JetBrains公司推出的轻量级编辑器,对标VSCode。该款产品还在公测当中,具体下载链接如下JetBrainsFleet:由JetBrains打造的下一代IDE。想要尝试的...

SPRINGBOOT WEB 实现文件夹上传(保留目录结构)

网上搜到的SpringBoot的代码不多,完整的不多,能用的也不多,基本上大部分的文章只是提供了少量的代码,讲一下思路,或者实现方案。之前一般的做法都是使用HTML5来做的,大部都是传文件的,传文件夹...

Java项目本地部署宝塔搭建实战报修小程序springboot版系统源码

大家好啊,我是测评君,欢迎来到web测评。...

新年IT界大笑料“工行取得基于SpringBoot的web系统后端实现专利

先看看专利描述...

看完SpringBoot源码后,整个人都精神了

前言当读完SpringBoot源码后,被Spring的设计者们折服,Spring系列中没有几行代码是我们看不懂的,而是难在理解设计思路,阅读Spring、SpringMVC、SpringBoot需要花...

阿里大牛再爆神著:SpringBoot+Cloud微服务手册

今天给大家分享的这份“Springboot+Springcloud微服务开发实战手册”共有以下三大特点...

WebClient是什么?SpringBoot中如何使用WebClient?

WebClient是什么?WebClient是SpringFramework5引入的一个非阻塞、响应式的Web客户端库。它提供了一种简单而强大的方式来进行HTTP请求,并处理来自服务器的响应。与传...

SpringBoot系列——基于mui的H5套壳APP开发web框架

  前言  大致原理:创建一个main主页面,只有主页面有头部、尾部,中间内容嵌入iframe内容子页面,如果在当前页面进行跳转操作,也是在iframe中进行跳转,而如果点击尾部按钮切换模块、页面,那...

在Spring Boot中使用 jose4j 实现 JSON Web Token (JWT)

JSONWebToken或JWT作为服务之间安全通信的一种方式而闻名。...

Spring Boot使用AOP方式实现统一的Web请求日志记录?

AOP简介AOP(AspectOrientedProgramming),面相切面编程,是通过代码预编译与运行时动态代理的方式来实现程序的统一功能维护的方案。AOP作为Spring框架的核心内容,通...

取消回复欢迎 发表评论: