IS-IS DIS
原理概述
OSPF 协议支持4种网络类型, IS-IS 协议只支持两种网络类型,即广播网络和点到点网络。与 OSPF 协议相同, IS-IS 协议在广播网络中会将网络视为一个伪节点( Pseudonode ,简称 PSN ),并选举出一台 DIS ( Designated IS )路由器来代行这个伪节点的职责。 DIS 的作用与 OSPF 的 DR 类似,可以减少不必要的 LSP 泛洪。注意,与 OSPF 协议中的 DR 选举不同, DIS 的选举是抢占性的。另外, DIS 还有 Level-1和 Level-2之分,同一网络的 Level-1 DIS 和 Level-2 DIS 可能是同一台路由器,也可能是不同的路由器。在点到点网络中, IS-IS 协议不选举 DIS 。
注意,选举出 DIS 后,广播网络中的路由器仍然需要与所有的邻居建立邻接关系,而不仅仅是与 DIS 建立邻接关系。在广播网络中, DIS 会周期性(默认为10s)地发送携带 CSNP ( Complete Sequence Number PDU )消息的组播帧来实现链路状态数据库之间的同步,其中 Level-1DIS使用的组播 MAC 地址为0180.C200.0014, Level-2 DIS 使用的组播 MAC 地址为0180.C200.0015。
选举 DIS 的过程是自动进行的,选举的依据是比较同一网络中路由器接口的 DIS 优先级,其次是比较接口的 MAC 地址。在接口的 DIS 优先级相同的情况, MAC 地址较大者将成为 DIS 。
路由器的 IS-IS 接口都拥有一个 Level-1 DIS 优先级和一个 Level-2 DIS 优先级,取值范围都是0到127,默认值都是64。 IS-IS 接口所发出的 Level-1 Hello 报文中携带了 Level-1 DIS 优先级的值, Level-2 Hello 报文中携带了 Level-2 DIS 优先级的值。注意,如果 DIS 优先级的值为0,并不表示不参与 DIS 的选举,而只是表示 DIS 优先级最低。
最后需要说明的是,在 OSPF 协议中,除了有 DR ,还有 Backup DR ( BDR )。但是在 IS-IS 协议中,只有 DIS ,没有 Backup DIS 。
实验目的
理解 IS-IS 协议中 DIS 的作用和选举方法
理解 IS-IS 接口的 DIS 优先级的概念
掌握通过修改 DIS 优先级来控制 DIS 选举结果的方法
实验内容
实验拓扑如图所示。本实验模拟了一个简单的企业网络场景,R1、R2、R3、R4分别连接着公司部门 A 、 B 、 C 、 D ;R1、R2、R3、R4分别为 Level-1-2、 Level-1-2、 Level-1、 Level-2路由器。网络需求是:必须让R1成为 Level-1 DIS ,R2成为 Level-2 DIS 。注意,本实验中路由器接口的 MAC 地址是随机生成的。
实验拓扑
1.基本配置
根据拓扑图进行相应的基本配置,并使用ping命令检测R1与R4之间的连通性。
其余路由器的连通性测试过程在此省略。
2.配置IS-IS路由协议
在每台路由器上配置IS-IS协议,其中R1和R2为Level-1-2路由器,R3为Level-1路由器,R4为Level-2路由器。
[r1]isis 1
[r1-isis-1]network-entity 10.0000.0000.0001.00
[r1-isis-1]is-name R1
[r1-isis-1]q
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]
[r1-GigabitEthernet0/0/0]isis enable[r2]isis 1
[r2-isis-1]network-entity 10.0000.0000.0002.00
[r2-isis-1]is-name R2
[r2-isis-1]q
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]
[r2-GigabitEthernet0/0/0]isis enable[r3]isis 1
[r3-isis-1]network-entity 10.0000.0000.0003.00[r3-isis-1]is-level level-1
[r3-isis-1]is-name R3
[r3-isis-1]q
[r3]int g0/0/0
[r3-GigabitEthernet0/0/0]isis enable[r4]isis 1
[r4-isis-1]network-entity 10.0000.0000.0004.00[r4-isis-1]is-level level-2
[r4-isis-1]is-name R4
[r4-isis-1]q
[r4]int g0/0/0
[r4-GigabitEthernet0/0/0]
[r4-GigabitEthernet0/0/0]isis enable
配置完成后,在R1上查看IS-IS邻居信息。
可以看到,R1与相邻路由器的IS-IS邻接关系是正常的,其中R1与R2分别建立了Level-1邻接关系和Level-2邻接关系,R1与R3建立了Level-1邻接关系,R1与R4建立了Level-2邻接关系。
3.查看默认选举的DIS
在每台路由器上使用display isis interface GigabitEthernet 0/0/0命令查看GE0/0/0接口的IS-IS协议信息。
可以看到,在使用缺省DIS优先级的情况下,能够发送Level-1 Hello报文的接口中,R3的GE0/0/0接口的MAC地址最大,因此R3被选举为Level-1 DIS;能够发送Level-2 Hello报文的接口中,R4的GE0/0/0接口的MAC地址最大,因此R4被选举为Level-2 DIS;
在每台路由器上使用display isis interface GigabitEthernet 0/0/0 verbose命令查看GE0/0/0接口的IS-IS详细信息。
可以看到,R1、R2、R3、R4的 SNPA ( Sub-Netowrk Point of Attachment )地址分别为00e0-fc0a-50a6、 00e0-fc4d-2c26、00e0-fc82-7f4c、00e0-fc97-7ad3( SNPA 地址在这里指的就是 MAC 地址),而 Level-1 DIS 优先级和 Level-2 DIS 优先级的值都为默认值64。R3被选举为 Level-1 DIS ,R4被选举为 Level-2 DIS 。需要注意的是,R1和R2都是 Level-1-2路由器,它们会使用 Level-1 DIS 优先级参与到 Level-1的 DIS 选举中,同时还会使用 Level-2 DIS 优先级参与到 Level -2的 DIS 选举中。
IS-IS 协议会将广播型网络本身抽象成一个伪节点,伪节点并不实际存在,它只是一个逻辑上的概念,广播型网络中的路由器都认为自己和伪节点存在邻接关系,并通过产生相应的 LSP 来描述自己和这个伪节点之间的链路状态。广播型网络中的 DIS 充当了伪节点的角色并代行伪节点的职责; DIS 路由器会代替抽象的伪节点产生 PSN LSP (伪节点LSP ),用以描述哪些路由器与伪节点相连。 PSN LSP 与 OSPF 中的 Type-2 LSA 非常相似。
在R1上查看 IS-IS 的链路状态数据库。
可以看到, Level-1链路状态数据库中有一条 LSP ID 为R3.01-00的 LSP ,这就是一条 Level-1 PSN LSP ,同时也说明R3是 Level-1 DIS ;在 Level-2链路状态数据库中有一条 LSP ID 为R4.01-00的 LSP ,这就是一条 Level-2 PSN LSP ,同时说明R4是 Level-2 DIS 。
在R1上使用 display isis lsdb is-name R1 verbose 命令查看R1生成的 LSP 的详细信息。
可以看到,在 RI 的 Level-1的 LSDB 中 LSP ID 为0000.0000.0001.00-00*的 LSP 由 R1自己产生,这条 LSP 描述了R1和伪节点R3.01之间的链路状态信息,其中 Area Addr 描述了 R1自己所在的区域 ID 为10, INTF Addr 描述了R1自己与伪节点R3.01相连的接口 IP 地址为10.0.1.1, NBR ID 描述了邻居是伪节点R3.01, Cost 描述了R1自己到伪节点 R3.01的开销值为10, IP-Internal 描述了R1和伪节点R3.01之间的网络前缀和掩码以及开销值信息。
伪节点只是一个逻辑上的概念,用来表示一个广播型网络本身,而 DIS 路由器是连接到这个广播型网络的一台路由器, DIS 和伪节点是两个不同的概念,只是 DIS 代行了伪节点的职责而已。
R2既不是 Level-1 DIS ,也不是 Level-2 DIS ,在R2上使用 display isis lsdb is-name R2 verbose 命令查看R2生成的 LSP 的详细信息。
可以看到,R2生成了两条 LSP ,第一条描述了自己与伪节点R3.01的关系,第二条描述了自己与伪节点R3.01的关系。
4.修改 DIS 优先级来控制 DIS 选举结果
根据需求,R1应当成为 Level-1 DIS, R2应当成为 Level-2 DIS 。这一需求很容易通过修改接口的 Level-1 DIS和Level-2 DIS 优先级来实现。
在R1的 GE 0/0/0接口的视图下使用 isis dis-priority 127 Level-1命令修改 GE 0/0/0接口的 Level-1 DIS 优先级的值为120;在R2的 GE 0/0/0接口的视图下使用 isis dis-priority 127 Level-2命令修改 GE 0/0/0接口的 Level-2 DIS 优先级的值为127。
[r1-GigabitEthernet0/0/0]isis dis-priority 120 level-1
[r2-GigabitEthernet0/0/0]isis dis-priority 127 level-2
在R1和R2上使用命令display isis interface GigabitEthernet 0/0/0 verbose 查看 GE 0/0/0接口的 IS-IS 协议的详细信息。
可以看到,R1的 GE 0/0/0接口的 Level-1 DIS 优先级的值已被修改成120, Level-2 DIS 优先级的值依旧为64,接口信息中 DIS 属性为 Yes /No 。说明R1现在是 Level-1 DIS 。R2的 GE 0/0/0接口的 Level-2 DIS 优先级的值已被修改成127, Level-1 DIS 优先级的值依旧为64,接口信息中 DIS 属性为 No / Yes 。说明R2现在是 Level-2 DIS 。注意,与 OSPF 协议不同, DIS 优先级修改之后,优先级更高的路由器会迅速抢占 DIS 的角色。
在R1上使用命令display isis lsdb is-name R1 verbose命令查看R1生成的LSP的详细信息。
可以看到,在 RI 的 Level-1的 LSDB 中 LSP ID 为0000.0000.0001.00-00*的 LSP 由 RI 自己产生,这条 LSP 描述了R1和伪节点R1.01之间的链路状态信息。
观察还发现,在R1的 Level-1 LSDB 中还有一条 LSP ID 为0000.0000.0001.01-00*的 LSP ,这条 LSP 其实就是由R1代替伪节点R1.01产生的一条 Level-1 PSN LSP ,其中的 NBR ID 描述了R1.01这个伪节点同时连接了R1、R2、R3这3台路由器,而 Cost 说明了R1.01这个伪节点到R1、R2、R3的开销值都为0。注意,在广播网络上,路由器到伪节点的开销值默认为是10,而伪节点到路由器的开销值为0。
相关文章:

IS-IS DIS
原理概述 OSPF 协议支持4种网络类型, IS-IS 协议只支持两种网络类型,即广播网络和点到点网络。与 OSPF 协议相同, IS-IS 协议在广播网络中会将网络视为一个伪节点( Pseudonode ,简称 PSN ),并选举出一台 DIS ( Designa…...
random和range
含义: random(1,10) 不包含10,用于生成随机数。它可以生成浮点数或整数,取决于具体的使用方式。 range(0,1) 不包含1,用于生成一个整数序列。它可以生成一个指定范围内的连续整数序列。 区别在于&#x…...

研二学妹面试字节,竟倒在了ThreadLocal上,这是不要应届生还是不要女生啊?
一、写在开头 今天和一个之前研二的学妹聊天,聊及她上周面试字节的情况,着实感受到了Java后端现在找工作的压力啊,记得在18,19年的时候,研究生计算机专业的学生,背背八股文找个Java开发工作毫无问题&#x…...
Golang:gammazero/deque是一个快速环形缓冲区deque(双端队列)实现
gammazero/deque是一个快速环形缓冲区deque(双端队列)实现。 文档 https://github.com/gammazero/deque 安装 go get github.com/gammazero/deque代码示例 先入先出队列 package mainimport ("fmt""github.com/gammazero/deque&quo…...
C++ 时间处理-统计函数运行时间
1. 关键词2. 问题3. 解决思路4. 代码实现 4.1. timecount.h4.2. timecount.cpp 5. 测试代码6. 运行结果7. 源码地址 1. 关键词 C 时间处理 统计函数运行时间 跨平台 2. 问题 C如何简单便捷地实现“函数运行时间的统计”功能? 3. 解决思路 类的构造函数&#x…...
JAVA面试题大全(十五)
1、Zookeeper 是什么? zookper是一个分布式的,开放源码的分布式应用程序协调服务。是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护…...

使用python对指定文件夹下的pdf文件进行合并
使用python对指定文件夹下的pdf文件进行合并 介绍效果代码 介绍 对指定文件夹下的所有pdf文件进行合并成一个pdf文件。 效果 要合并的pdf文件,共计16个1页的pdf文件。 合并成功的pdf文件:一个16页的pdf文件。 代码 import os from PyPDF2 import …...
Day50 | 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 总结
代码随想录算法训练营Day50 | 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 总结 LeetCode 309.最佳买卖股票时机含冷冻期 题目链接:LeetCode 309.最佳买卖股票时机含冷冻期 思路: 四个状态。 保持持有股票,保持卖出股票…...

Steam在连接至服务器发生错误/连接服务器遇到问题解决办法
Steam作为全球最大的数字游戏分发平台,构建了一个活跃的玩家社区,用户可以创建个人资料,添加好友,组建群组,参与讨论,甚至直播自己的游戏过程。通过创意工坊,玩家还能分享自制的游戏模组、地图、…...
kafka 工作流程文件存储
爬虫组件分析 目录概述需求: 设计思路实现思路分析1.kafka 工作流程2.kafka 文件存储 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for…...

贪心算法4(c++)
过河的最短时间 题目描述 输入 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过,如果…...
【无标题】yoloV8目标检测与实例分割--目标检测onnx模型部署
1. 模型转换 ONNX Runtime 是一个开源的高性能推理引擎,用于部署和运行机器学习模型,其设计的目标是优化执行open neural network exchange (onnx)格式定义各模型,onnx是一种用于表示机器学习模型的开放标准。ONNX Ru…...

深入理解与防御跨站脚本攻击(XSS):从搭建实验环境到实战演练的全面教程
跨站脚本攻击(XSS)是一种常见的网络攻击手段,它允许攻击者在受害者的浏览器中执行恶意脚本。以下是一个XSS攻击的实操教程,包括搭建实验环境、编写测试程序代码、挖掘和攻击XSS漏洞的步骤。 搭建实验环境 1. 安装DVWAÿ…...

初步认识栈和队列
Hello,everyone,今天小编讲解栈和队列的知识!!! 1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&…...

插件:NGUI
一、版本 安装完毕后重启一下即可,否则可能创建的UI元素不生效 二、使用 Label文字 1、创建Canvs 2、只有根节点的这些脚本全部展开才能鼠标右键创建UI元素 3、选择字体 Label添加打字效果 Sprite图片 1、选择图集 2、选择图集中的精灵 InvisibleWidget容器 用来…...

网络爬虫原理及其应用
你是否想知道Google 和 Bing 等搜索引擎如何收集搜索结果中显示的所有数据。这是因为搜索引擎对其档案中的所有页面建立索引,以便它们可以根据查询返回最相关的结果。网络爬虫使搜索引擎能够处理这个过程。 本文重点介绍了网络爬虫的重要方面、网络爬虫为何重要、其…...

串口中断原理及实现
一、串口的原理 SM0、SM1——串行口工作模式 SM0SM1模式特点00模式0移位寄存器方式,用于I/O口扩展01模式18位UART,波特率可变10模式29位UART,波特率为时钟频率/32或/6411模式39位UART,波特率可变 TI、RI——发送、接收中断标志位 TITI0 允许发送>TI1 发送完成后…...
课时136:变量进阶_变量实践_高级赋值
2 变量进阶 2.1 变量实践 2.1.1 高级赋值 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 所谓的高级赋值,是另外的一种变量值获取方法,这里涉及到更多我们学习之外的一些shell内置变量格式,其实这部分…...

牛客网刷题 | BC99 正方形图案
目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi学习了循环&am…...
启动小程序F12窗口管理器
如何使用小程序F12任务窗口管理器教学流程 一、引言 小程序的开发者们,是否希望有一款工具能帮助你们更好地管理任务窗口? 二、前置准备 观看视频教程 访问B站视频链接:https://www.bilibili.com/video/BV1aa4y197UU/?spm_id_from333.9…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...