首页 > 其他分享 >02、IS-IS基本原理

02、IS-IS基本原理

时间:2024-04-15 16:27:00浏览次数:22  
标签:02 LSP 基本原理 报文 收到 邻居 链路 路由器

IS-IS基本原理

IS-IS是一种链路状态路由协议,每一台路由器都会生成一个LSP,它包含了该路由器所有使能IS-IS协议接口的链路状态信息。通过跟相邻设备建立IS-IS邻接关系,互相更新本地设备的LSDB,可以使得LSDB与整个IS-IS网络的其他设备的LSDB实现同步。然后根据LSDB运用SPF算法计算出IS-IS路由。如果此IS-IS路由是到目的地址的最优路由,则此路由会下发到IP路由表中,并指导报文的转发。

IS-IS邻居关系的建立

两台运行IS-IS的路由器在交互协议报文实现路由功能之前必须首先建立邻居关系。在不同类型的网络上,IS-IS的邻居建立方式并不相同。

  • 广播链路邻居关系的建立

    图1以Level-2路由器为例,描述了广播链路中建立邻居关系的过程。Level-1路由器之间建立邻居与此相同。

    图1 广播链路邻居关系建立过程

    1. RouterA广播发送Level-2 LAN IIH,此报文中无邻居标识。
    2. RouterB收到此报文后,将自己和RouterA的邻居状态标识为Initial。然后,RouterB再向RouterA回复Level-2 LAN IIH,此报文中标识RouterA为RouterB的邻居。
    3. RouterA收到此报文后,将自己与RouterB的邻居状态标识为Up。然后RouterA再向RouterB发送一个标识RouterB为RouterA邻居的Level-2 LAN IIH。
    4. RouterB收到此报文后,将自己与RouterA的邻居状态标识为Up。这样,两个路由器成功建立了邻居关系。

    因为是广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。Hello报文中包含Priority字段,Priority值最大的将被选举为该广播网的DIS。若优先级相同,接口MAC地址较大的被选举为DIS。

  • P2P链路邻居关系的建立

    在P2P链路上,邻居关系的建立不同于广播链路。分为两次握手机制和三次握手机制。

    • 两次握手机制

      只要路由器收到对端发来的Hello报文,就单方面宣布邻居为Up状态,建立邻居关系。

    • 三次握手机制

      此方式通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,类似广播邻居关系的建立。

    两次握手机制存在明显的缺陷。当路由器间存在两条及以上的链路时,如果某条链路上到达对端的单向状态为Down,而另一条链路同方向的状态为Up,路由器之间还是能建立起邻接关系。SPF在计算时会使用状态为UP的链路上的参数,这就导致没有检测到故障的路由器在转发报文时仍然试图通过状态为Down的链路。三次握手机制解决了上述不可靠点到点链路中存在的问题。这种方式下,路由器只有在知道邻居路由器也接收到它的报文时,才宣布邻居路由器处于Up状态,从而建立邻居关系。

IS-IS按如下原则建立邻居关系:
  • 只有同一层次的相邻路由器才有可能成为邻居。

  • 对于Level-1路由器来说,区域号必须一致。

  • 链路两端IS-IS接口的网络类型必须一致。

      通过将以太网接口模拟成P2P接口,可以建立P2P链路邻居关系。
  • 链路两端IS-IS接口的地址必须处于同一网段。

    由于IS-IS是直接运行在数据链路层上的协议,并且最早设计是给CLNP使用的,IS-IS邻居关系的形成与IP地址无关。但在实际的实现中,由于只在IP上运行IS-IS,所以是要检查对方的IP地址的。如果接口配置了从IP,那么只要双方有某个IP(主IP或者从IP)在同一网段,就能建立邻居,不一定要主IP相同。

      当链路两端IS-IS接口的地址不在同一网段时,如果配置接口对接收的Hello报文不作IP地址检查,也可以建立邻居关系。对于P2P接口,可以配置接口忽略IP地址检查;对于以太网接口,需要将以太网接口模拟成P2P接口,然后才可以配置接口忽略IP地址检查。

IS-IS的LSP交互过程

LSP产生的原因

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

  • 邻居Up或Down

  • IS-IS相关接口Up或Down

  • 引入的IP路由发生变化

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

  • 接口被赋了新的metric值

  • 周期性更新

收到邻居新的LSP的处理过程

  1. 将接收的新的LSP合入到自己的LSDB数据库中,并标记为flooding。

  2. 发送新的LSP到除了收到该LSP的接口之外的接口。

  3. 邻居再扩散到其他邻居。

LSP的“泛洪”

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

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

广播链路中新加入路由器与DIS同步LSDB数据库的过程

图2 广播链路数据库更新过程

  1. 图2所示,新加入的路由器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同步。
  4. RouterC收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP。
  5. DIS收到该PSNP报文请求后向RouterC发送对应的LSP进行LSDB的同步。
在上述过程中DIS的LSDB更新过程如下:
  1. DIS接收到LSP,在数据库中搜索对应的记录。若没有该LSP,则将其加入数据库,并广播新数据库内容。
  2. 若收到的LSP序列号大于本地LSP的序列号,就替换为新报文,并广播新数据库内容;若收到的LSP序列号小本地LSP的序列号,就向入端接口发送本地LSP报文。
  3. 若两个序列号相同,且Remaining Lifetime有一侧为0,则比较Remaining Lifetime。若收到的LSP的Remaining Lifetime小于本地LSP的Remaining Lifetime,就替换为新报文,并广播新数据库内容;若收到的LSP的Remaining Lifetime大于本地LSP的Remaining Lifetime,就向入端接口发送本地LSP报文。
  4. 若两个序列号相同,且Remaining Lifetime都不为0,则比较Checksum。若收到的LSP的Checksum大于本地LSP的Checksum,就替换为新报文,并广播新数据库内容;若收到的LSP的Checksum小于本地LSP的Checksum,就向入端接口发送本地LSP报文。
  5. 若两个序列号、Remaining Lifetime和Checksum都相等,则不转发该报文。

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

图3 P2P链路数据库更新过程

  1. RouterA先与RouterB建立邻居关系。

  2. 建立邻居关系之后,RouterA与RouterB会先发送CSNP给对端设备。如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP。

  3. 图3所示假定RouterB向RouterA索取相应的LSP。RouterA发送RouterB请求的LSP的同时启动LSP重传定时器,并等待RouterB发送的PSNP作为收到LSP的确认。

  4. 如果在接口LSP重传定时器超时后,RouterA还没有收到RouterB发送的PSNP报文作为应答,则重新发送该LSP直至收到PSNP报文。

在P2P链路上PSNP有两种作用:
  • 作为Ack应答以确认收到的LSP。

  • 用来请求所需的LSP。

在P2P链路中设备的LSDB更新过程如下:
  1. 若收到的LSP比本地的序列号更小,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认;若收到的LSP比本地的序列号更大,则将这个新的LSP存入自己的LSDB,再通过一个PSNP报文来确认收到此LSP,最后再将这个新LSP发送给除了发送该LSP的邻居以外的邻居。
  2. 若收到的LSP序列号和本地相同,则比较Remaining Lifetime,若收到LSP的Remaining Lifetime小于本地LSP的Remaining Lifetime,则将收到的LSP存入LSDB中并发送PSNP报文来确认收到此LSP,然后将该LSP发送给除了发送该LSP的邻居以外的邻居;若收到LSP的Remaining Lifetime大于本地LSP的Remaining Lifetime,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。
  3. 若收到的LSP和本地LSP的序列号相同且Remaining Lifetime都不为0,则比较Checksum,若收到LSP的Checksum大于本地LSP的Checksum,则将收到的LSP存入LSDB中并发送PSNP报文来确认收到此LSP,然后将该LSP发送给除了发送该LSP的邻居以外的邻居;若收到LSP的Checksum小于本地LSP的Checksum,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。
  4. 若收到的LSP和本地LSP的序列号、Remaining Lifetime和Checksum都相同,则不转发该报文。
 

标签:02,LSP,基本原理,报文,收到,邻居,链路,路由器
From: https://www.cnblogs.com/laixufei/p/18136203

相关文章

  • IntelliJ IDEA2021.3.1 使用 MybatisCodeHelperPro插件
    摘自:https://blog.csdn.net/weixin_44321065/article/details/132576008一、下载下载破解后的MybatisCodeHelperPro的V3.2.2版本V3.2.2-CSDN或者V3.2.2-Gitee二、应用将下载下来的Zip文件放到电脑上的某个位置(最好放在Idea管理插件的plugins下)然后自行搜索Idea......
  • 记录解决VS 2022调试C++ DLL项目时卡顿的问题
    项目结构运行时为DotNet6的C#通过Cli/C++去调用C++的DLL。问题表现在VisualStudio2022中调试C++DLL代码时,按下F5、F10、F11跳转到下一行时VS卡顿会2秒左右,体验非常不好。问题原因然后发现原因是项目的配置属性中,调试那一行,调试器类型选择的是“自动”。解决此问题的方法......
  • 02、OSPF协议基本原理
    OSPF协议基本原理OSPF协议路由的计算过程可简单描述如下:建立邻接关系,过程如下:本端设备通过接口向外发送Hello报文与对端设备建立邻居关系。两端设备进行主/从关系协商和DD报文交换。两端设备通过更新LSA完成链路数据库LSDB的同步。路由计算OSPF采用SPF(ShortestP......
  • 云原生周刊:CNCF 2023 年度调查报告 | 2024.4.15
    开源项目推荐highlight该项目是一个开源全栈监控平台。其功能包括错误监控、会话重放、日志记录、分布式跟踪等。HelmComposeHelmCompose是一个helm插件,用于在单个配置文件中管理一个或多个图表的多个版本。HAMi异构AI计算虚拟化中间件(HAMi),是一个“一站式”图表,旨在......
  • 新手大白话 FSCTF 2023刷题记录1
    [FSCTF2023]源码!启动!进入页面ctrl+u查看源码得到flagwebshell是啥捏进入页面,发现给出源码笨办法,一个一个找出表情代表啥,最后发现为命令执行函数passthru,而passthru出现在了漏洞点eval处,也就是RCE漏洞,而且进一步查看发现没有过滤,直接打它:细狗2.0进入页面随意输入试试,......
  • 2024.4.15学习记录
    锚点链接<ahref="#Cat"></a>点击这个链接将为跳转到这个页面上id为Cat的页面利用这个功能,我们可以实现给一个页面插眼的功能。比如我们想建一个动物园的网站<!--动物园导航栏--><header><ul><li><ahref="cat">Cats</a></li><li><ahref="d......
  • 都 2024 年了,程序员必备网站也要更新
    https://mp.weixin.qq.com/s?__biz=MzA5NDIzNzY1OQ==&mid=2735626552&idx=1&sn=466bc9760cae36321fc19c620230e9e3&chksm=b7c7d065f78ece47450e04011fe55c326dff81383838cd464e2653bbcf30963da4ffc785e64a&xtrack=1&scene=90&subscene=93&ses......
  • 2024SMUSpring天梯4补题
    L2-3:用扑克牌计算24点题意:思路:全排列枚举ordfs得到全排列。枚举方式和"飞机降落"一样。题目类似"电阻组合"那题。要注意的是要枚举3种东西:数字的全排列,符号的全排列,以及!括号的情况!。一开始括号只是考虑到样例那种情况,wa两个点。括号会影响除法的计算。总的来说:枚举出全排列......
  • 2024.4.15 学习数理结构“栈”后的四则运算
    使用栈的四则运算1.题目描述用顺序栈和算符优先法求解表达式的值2.任务定义和问题分析四则运算基本运要通过算法优先级和后缀表达式的思想完成,应当由以下功能:(1)可以先求解后缀表达式。然后再求值,也可以一并完成。(2)表达式中的运算为加、减、乘、除四种,包括括号,参与运算的数字为......
  • 02 Shell 运算符,条件判断
    Shell运算符(1)"$((运算符))"或"$[运算符]"(2)expr+,-,\*,/,%加,减,乘,除,取余例如:①expr2+3结果:5②expr3-2结果:1③expr`expr2+3`\*4结果:20s=$[(2+3)*4] echo$s结果:20 Shell条件判断[condition]注:condition前后都要空格,条件非空即为true,[atguigu]......