计算机网络-IS-IS工作原理之邻接关系建立

news/2024/9/24 12:01:12/

前面我们学习了IS-IS的基础理论与相关概念,IS-IS与OSPF一样是链路状态路由协议,需要建立邻接关系,互相传递LSP信息的,因此现在开始学习IS-IS的工作原理,如何建立邻接关系、链路状态数据库同步以及路由更新计算。

一、邻接关系建立

1.1 邻接关系建立原则

IS-IS按如下原则建立邻接关系:

  • 只有同一层次的相邻路由器才有可能成为邻接。
  • 对于Level-1路由器来说,Area ID必须一致。
  • 链路两端IS-IS接口的网络类型必须一致。
  • 链路两端IS-IS接口的地址必须处于同一网段(默认情况下)。

tips:

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

简单讲就是Level-1和Level-1建邻接,Level-2和Level-2建立邻接,Level-1-2分别和Level-1、Level-2建立对应级别的邻接关系。正常情况下相邻路由器网段一致检查,可以通过配置忽略,因为最初IS-IS不是在IP网络运行。两端网络接口类型必须一致为广播网络或者P2P类型。

1.2 IIH报文

IIH报文就是IS-IS的Hello报文,和OSPF的hello报文一致用于协商和保持邻接状态。IIH根据网络类型区分广播的IIH和点到点的IIH。IIH报文用于建立和维持邻接关系,广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH

报文结构:

IIH报文
IIH报文
  • Reserved/Circuit Type:表示路由器的类型(01表示L1,10表示L2,11表示L1/L2)。
  • Source ID :发出Hello报文的路由器的System ID。
  • Holding Time : 保持时间。在此时间内如果没有收到邻接发来的Hello报文,则中止已建立的邻接关系。 默认9秒。
  • Priority :选举DIS的优先级,取值范围为0~127。 数值越大,优先级越高。该字段只在广播网中的Hello消息(LAN IIH消息)携带;点到点网络的Hello消息(P2P IIH消息)没有此字段,也没有此字段之前的R保留位。
  • LAN ID : 包括DIS的System ID和伪节点ID。该字段只在广播网中的Hello消息(LAN IIH消息)携带;点到点网络的Hello消息(P2P IIH消息)没有此字段。
  • Local Circuit ID :本地链路ID。该字段 只在点到点网络的Hello消息(P2P IIH消息)携带;广播网中的Hello消息(LAN IIH消息)没有此字段。

1.3 广播网络邻接关系建立

广播网络中建立邻接关系过程:

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

广播网络邻接关系
广播网络邻接关系
  1. 在Down状态下,R1组播发送Level-1 LAN IIH,此报文中邻接列表为空。
  2. R2收到此报文后,将邻接状态标识为Initial。然后,R2再向R1回复Level-1 LAN IIH ,此报文中标识R1为R2的邻接。
  3. R1收到此报文后,将自己与R2的邻接状态标识为Up。然后R1再向R2发送一个标识R2为R1邻接的Level-1 LAN IIH 。
  4. R2收到此报文后,将自己与R1的邻接状态标识为Up。这样,两个路由器成功建立了邻接关系。
  5. 广播网络中需要选举DIS,在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。

大概就是先发送IIH报文到组播地址,然后ISIS路由器接收到之后变更状态为初始化,如果报文中区域ID相同则标识为邻居,通过三次握手方式协商。

Level-1 IIH和Level-2 IIH发送的组播地址分别为01-80-C2-00-00-14、01-80-C2-00-00-15。

几种状态变化:

  • Down:邻接关系的初始状态。
  • Initial:收到IIH,但是报文中的邻接列表未包含路由器自身的System ID。
  • UP:收到IIS,且邻接列表中包含路由器自身的System ID。

DIS与伪节点:

在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS(Designated Intermediate System)。DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。 伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器 。在IS-IS中,伪节点用DIS的System ID和Circuit ID(非0值)标识。

DIS与伪节点
DIS与伪节点

DIS作用:

  • 创建伪节点,生成伪节点的LSP
  • 发送CSNP同步LSDB,维护数据库,维护邻接关系。

DIS选举规则:

Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。

DIS的选举规则如下:(优先级大优先,相等MAC地址大优先)

  • DIS优先级数值最大的被选为DIS。
  • 如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会成为DIS。

DIS发送Hello PDU的时间间隔是普通路由器的1/3(普通发送时间10s),这样可以确保DIS出现故障时能够被更快速地被发现。

IS-IS中DIS与OSPF协议中DR(Designated Router)的区别

在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举。

在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。(IS-IS会抢占?因为IS-IS只有邻接关系,而且没有备选的DIS,切换影响较小,收敛较快)

在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系。

1.4 点到点网络中的邻接关系建立过程

点到点网络中,邻接关系的建立使用两次握手方式:只要路由器收到对端发来的Hello报文,就单方面宣布邻接为Up状态,建立邻接关系。

两次握手机制存在明显的缺陷,华为设备在点到点网络中使用IS-IS时,默认使用三次握手建立邻接关系。此方式通过三次发送P2P IIH最终建立起邻接关系。

P2P邻接关系建立
P2P邻接关系建立

总结:IS-IS中相同级别路由建立同级别的邻接关系,广播网络使用Level-1 LAN IIH和Level-2 LAN IIH建立协商,点到点网络使用P2P IIH进行协商。IS-IS邻接关系通过三次握手协商,广播网络还需要选举DIS,类似与OSPF中的DR,DIS维护网络中所有的邻接关系,会抢占。

本文由 mdnice 多平台发布


http://www.ppmy.cn/news/1438216.html

相关文章

每天一个数据分析题(二百八十四)

已知随机变量X服从二项分布 X~B(n,p), 且 E(X)2 ,D(X)1,则P(X3)() A.1/4 B.1/3 C.3/8 D.1/2 题目来源于CDA模拟题库 点击此处获取答案

java的ArrayList LinkedList的操作

文章目录 ArrayList1. ArrayList集合的特点2. 操作 LinkedList1. LinkedList集合的特点2. 操作 参考链接 ArrayList 1. ArrayList集合的特点 2. 操作 add(Object element) 向列表的尾部添加指定的元素。size() 返回列表中的元素个数。get(int index) 返回列表中指定位置的元素…

OpenHarmony鸿蒙南向开发案例:【智能窗户通风设备】

样例简介 本文档介绍了安全厨房案例中的相关智能窗户通风设备,本安全厨房案例利用轻量级软总线能力,将两块欧智通V200Z-R/BES2600开发板模拟的智能窗户通风设备和燃气告警设备组合成。当燃气数值告警时,无需其它操作,直接通知软总…

Qt中ui界面的stylesheet转换为代码设置

问题背景: 多语言翻译时,有些翻译文本内容过长,无法全部显示出来,需要改变部分按钮字体的大小。在针对有多级结构的风格设置时,代码中调用setStyleSheet不生效。如下图: 直接将样式表中的内容复制到qstrin…

APP开发_ js 控制手机是否显示状态栏

1 Android 控制手机显示或隐藏状态栏的方法 1.1 使用 View 的 setSystemUiVisibility 方法 这个方法允许设置系统 UI 的可见性,包括状态栏。你可以通过组合不同的标志来实现不同的效果。 示例代码: Override protected void onCreate(Bundle saved…

Golang实现一个批量自动化执行树莓派指令的软件(2)指令

简介 基于上篇 Golang实现一个批量自动化执行树莓派指令的软件(1)文本加密&配置&命令行交互实现, 这篇实现的是指令, 即通过ssh执行linux指令的实现。 环境描述 运行环境: Windows, 基于Golang, 暂时没有使用什么不可跨平…

被删除的照片和视频能找回吗?如何恢复手机删除的照片和视频?

手机里的照片和视频是我们记录生活的每一个瞬间,也是工作学习等场合经常用到的东西,一旦不慎丢失,将对我们造成很大损失。那么我们该如何恢复手机删除的照片和视频呢?通过掌握正确的恢复方法,能够最大程度地保护手机中…

wstunnel (websocket模式代理http)

项目地址:Releases erebe/wstunnel GitHub 客户端centos7 192.168.254.134 服务端centos7 192.168.254.131 在客户端浏览器访问网站,流量经过客户端和服务端的websocket通信,最终服务端请求网站,返回数据,达到代…