详解ISIS动态路由协议
华子目录
- 前言
- 应用场景
- 历史起源
- ISIS路由计算过程
- ISIS的地址结构
- ISIS路由器分类
- ISIS邻居关系的建立
- P2P
- MA
- ISIS中的DIS与OSPF中DR的对比
- 链路状态信息的交互
- ISIS的最短路径优先算法(SPF)
- ISIS区域划分
- ISIS区域间路由访问原理
- ISIS与OSPF的不同
- ISIS与OSPF的术语对比
- ISIS配置
- ISIS的LSP存在4种状态
- ISIS的工作原理和选路规则
- 选路规则
- ISIS的数据包类型
- ISIS的接口网络类型
- DIS选举规则
- ISIS的路由泄露
前言
- 和OSPF一样,ISIS也是一种基于无类别链路状态(LS) 并使用最短路径优先算法(SPF算法) 进行路由计算的一种IGP协议,基于OSI模型开发。ISIS最初是国际化标准组织ISO为它的无连接网络协议CLNP设计的一种动态路由协议。
- 为了提供对IP的路由支持,IETF在RFC1195中对ISIS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI环境中, 修订后的ISIS协议被称为集成化的ISIS(集成的ISIS,基于OSI开发后转移到TCP/IP模型执行),由于ISIS的简便性及扩展性强的特点,目前在大型ISP的网络中被广泛地部署。
- OSI模型的网络层协议:1.CLNS无连接的网络服务 2.CONS面向连接的网络服务
- CLNS存在子协议:
- 1.CLNP 类似于TCP/IP的IP协议,用来寻址
- 2.ISIS 类似于TCP/IP中的RIP/OSPF/EIGRP,用来学习路由条目
- 3.ESIS 类似于TCP/IP中的ICMP/ARP/IGMP,用来pc和路由器间的通信
应用场景
- OSPF多用于园区网,其特点:区域多样,策略多变,调度精细
- ISIS多用于骨干网,其特点:区域扁平,收敛极快,承载庞大,工作半径大,原理简单
历史起源
集成isis特点:
- 支持CLNP网络,IP网络
- 工作在数据链路层
OSPF特点:
- 目前只支持IP网络
- 工作在IP层
ISIS路由计算过程
- 建立邻居关系
- 同步LSDB
- 执行SPF路由计算
ISIS的地址结构
在配置ISIS时,由于ISIS基于OSI模型开发,而在OSI模型中,存在IP地址外,还存在NSAP地址;
故在TCP/IP模型中配置ISIS也必须先配置NSAP地址;
IDP:初始域
AFI:权威格式部分----固定1个字节,16进制数,需要付费使用,49为私有
IDI:权威格式ID----可变长
DSP:域的指定
High Order DSP:高的DSP位
System-ID:6个字节,在ISIS中类似于OSPF中的RID,全网必须独一无二
NSEL:固定1个字节,类似TCP/IP中的端口号,在ISIS协议中为0(NSEL为0的NSAP地址又被称为net地址)
49.0001.1111.1111.1111.0049:相当于AS号
0001:区域
1111.1111.1111:RID
00:全0
ISIS路由器分类
ISIS邻居关系的建立
ISIS只支持点到点和广播网络类型
ISIS只有邻接关系,没有邻居关系
P2P
MA
ISIS中的DIS与OSPF中DR的对比
类比点 | ISIS-DIS | OSPF-DR |
---|---|---|
选举优先级 | 所有优先级都参与选举 | 0优先级不参与选举 |
选举等待时间 | 2个Hello报文的时间间隔 | 40秒 |
备份 | 无 | 有(BDR) |
邻接关系 | 所有路由器相互都是邻接关系 | DRother之间是2-way邻居关系 |
抢占性 | 会抢占 | 不会抢占 |
主要作用 | 周期发送CSNP,保障MA网络LSDB的同步 | 主要为了减少LSA泛洪 |
链路状态信息的交互
ISIS的最短路径优先算法(SPF)
ISIS区域划分
注:L12及扮演L1也扮演L2
连续的L2或L12构成骨干
注:L1所在的区域相当于OSPF区域中的完全stub区域
ISIS区域间路由访问原理
ISIS与OSPF的不同
差异性 | ISIS | OSPF |
---|---|---|
网络类型 | 少 | 多 |
开销方式 | 简便 | 复杂 |
区域类型 | 少 | 多 |
路由报文类型 | 简单 | 多样 |
路由收敛速度 | 很快 | 快 |
扩展性 | 强 | 一般 |
路由负载能力 | 超强 | 强 |
注:
1.周期更新时间不同:OSPF30min中更新,60min老化;ISIS15min更新,20min老化
2.ISIS存在逻辑骨干0
3.ISIS中一台设备只能在一个区域中
4.ISIS仅两种LSP(类似于OSPF中的LSA)
5.度量计算方式不同
6.仅存在邻接关系
ISIS与OSPF的术语对比
ISIS | OSPF |
---|---|
DIS | DR |
system ID | router-id |
LSP | LSA |
ISIS Hello | Hello |
PSNP | LSR或LSack |
CSNP | DBD |
ISIS配置
[R2]isis 1 定义isis进程号
[R2-isis-1]network-entity 49.0001.2222.2222.2222.00 定义NSAP地址
[R2-isis-1]q
[R2]interface g0/0/0
[R2-G0/0/0]isis enable 1 宣告接口
配置完成后,邻居间使用hello包建立邻接关系,生成邻居表[R2]isis 1
[R2-isis-1]is-level level-1 修改路由器为Level 1路由器
[R2]display isis peer 查看isis邻居表(isis的邻居表就相当于邻接表)
[R2]display isis name-table 1
[R2]isis 1
[R2-isis-1]log-peer-change 默认isis间工作无日志信息,可以开启显示功能
<R1>reset isis peer 2222.2222.2222 在R1上重启邻居2222.2222.2222<R1>reset isis all 重启所有的isis邻居
在邻接关系建立后,邻居间交换LSP(LSA)—链路状态协议数据单元
收集完成后生成数据库表和拓扑表
<R1>display isis lsdb
<R1>display isis lsdb verbose 查看数据库明细
<R1>display isis brief 查看拓扑表
再之后,isis协议基于拓扑表和数据库表计算最佳路径,然后将其加载到路由表中。
华为设备优先级为15
度量存在:1.狭义度量,2.广义度量
- 狭义度量:每个接口参数默认为10,可以再1-63范围内修改
[R1]interface g0/0/0
[R1-GigabitEthernet0/0/00]isis cost 15 修改狭义度量
ISIS路由汇总,仅针对L2 LSP汇总
[R1]isis 1
[R1-isis-1]summary 192.168.0.0 255.255.252.0
缺省路由
[R1]isis 1
[R1-isis-1]default-route-advertise
修改hold时间
[R1]interface g0/0/0
[R1-GigabitEthernet0/0/00]isis timer holding-multiplier 15
修改发送hello包的间隔时间
[R1]interface g0/0/0
[R1-GigabitEthernet0/0/00]isis timer hello 5
ISIS安全认证
[R1]keychain ccna mode absolute
[R1-keychain]key-id 1
[R1-keychain-keyid-1]key-string huawei
[R1-keychain-keyid-1]quit
进入接口调用
[R1]interface g0/0/0
[R1-GigabitEthernet0/0/0]isis authentication-mode keychain ccna level-2
[R1-GigabitEthernet0/0/0]isis authentication-mode md5 123
ISIS的LSP存在4种状态
- Level 0:路由器同pc间使用
- Level 1:同一区域使用
- Level 2:区域间路由器沟通
- Level 3:AS间的路由沟通
ISIS的工作原理和选路规则
工作再不同级别下的设备可以发出不同的LSP,主要是L1/2信息
默认所有设备均工作于Level 1-2模式下
总结:
- ISIS的骨干区域为逻辑骨干----所有连续的L2和L1-2路由器集合构成了ISIS的逻辑骨干区域
- 一个区域内至少有一台设备属于逻辑骨干,否则该区域将无法访问其他区域
- 骨干区域内的路由器拥有全网的路由
- L1路由器只能和区域内的L1和L1-2路由器建立邻居关系,L1和L2路由器不能建立邻居关系
选路规则
- L1路由器访问某个目标时,先查看是否和目标在同一区域,若在,通过L1路由访问,若不在,使用缺省路由通过本地最近的L1-2路由器访问
- L2路由器访问某个目标时,直接通过L2数据库访问
- L1-2路由器访问目标时,先查看是否和目标在同一区域,若在,通过L1路由访问,若不在,通过L2数据库访问。
- L1-2路由器会向本区域内的L1路由器下放缺省路由
- 条件:1.该L1-2路由器和L1路由器在同一区域。2.该L1-2路由器必须连接了其他的区域
ISIS的数据包类型
isis存在9种数据包,集成的ISIS在TCP/IP模型中工作时,其实际跨层封装到2层
在以太网中,目标MAC地址尾号为14标识L1路由,15标识L2路由
- Hello包:邻居发现,建立,保活;10s的hellotime;30s的deadtime;
- 在拥有DIS时,hellotime为3.3s;deadtime为10s
- LSP:相当于OSPF的LSA
- PSNP(部分序列号的PDU):相当于OSPF中的LSR或LSack
- CSNP (完整序列号的PDU):相当于OSPF中的DBD报文
以上4种报文存在L1和L2两种,另在MA网络使用了专门的Hello包
PSNP CSNP
广播型: LSR DBD,默认由DIS周期10s发送
点到点: LSack DBD,邻接关系建立发送一次
ISIS的接口网络类型
1.广播型:以太网,为避免重复LSP更新,存在DIS的角色,类似OSPF中的DR,没有BDR,在广播网络中非DIS间虽然建立了邻接关系,但不交换LSP
2.点到点
注:在ISIS中不存在NBMA概念,使用点到点工作
DIS选举规则
- 优先级高,默认64,大优
- 接口MAC大
[R2]display isis interface g0/0/0 查看接口是否为DIS
[R2]display isis interface g0/0/0 verbose 详细查看
[R2]interface g0/0/0
[R2-GigabitEthernet0/0/0]isis dis-priority 77
ISIS的路由泄露
默认L1-2路由器仅向同一区域的L1路由器发送一条缺省,若希望L1-2路由器在发送缺省路由的基础上在发送部分部分明细路由,那么需要该路由器将L2数据库中的部分路由泄露到L1数据库中来
第一步:使用前缀列表或acl抓取网络号
[R1]acl 2000
[R1-acl-basic-2000]rule permit source 7.7.7.7 0.0.0.0 使用acl抓取
[R1]ip ip-prefix aa permit 9.9.9.9 32 使用前缀列表抓取第二步:在isis进程中导入路由策略
[R1]isis 1
[R1-isis-1]import-route isis level-2 into level-1 filter-policy 2000 导入acl
[R1-isis-1]import-route isis level-2 into level-1 filter-policy ip-prefix aa 导入前缀列表
相关文章:

详解ISIS动态路由协议
华子目录 前言应用场景历史起源ISIS路由计算过程ISIS的地址结构ISIS路由器分类ISIS邻居关系的建立P2PMA ISIS中的DIS与OSPF中DR的对比链路状态信息的交互ISIS的最短路径优先算法(SPF)ISIS区域划分ISIS区域间路由访问原理ISIS与OSPF的不同ISIS与OSPF的术语…...

Linux操作系统----gdb调试工具(配实操图)
绪论 “不用滞留采花保存,只管往前走去,一路上百花自会盛开。 ——泰戈尔”。本章是Linux工具篇的最后一章。gdb调试工具是我们日常工作中需要掌握的一项重要技能我们需要基本的掌握release和debug的区别以及gdb的调试方法的指令。下一章我们将进入真正…...
去除GIT某个时间之前的提交日志
背景 有时git提交了太多有些较早之前的提交日志,不想在git log看到,想把他删除掉。 方法 大概思路是通过 git clone --depth 来克隆到指定提交的代码,此时再早之前的日志是没有的 然后提交到新仓库 #!/bin/bash ori_git"gityour.gi…...

4 python快速上手
计算机常识知识 1.Python代码运行方式2.进制2.1 进制转换 3. 计算机中的单位4.编码4.1 ascii编码4.2 gb-2312编码4.3 unicode4.4 utf-8编码4.5 Python相关的编码 总结 各位小伙伴想要博客相关资料的话关注公众号:chuanyeTry即可领取相关资料! 1.Python代…...
单元测试-spring-boot-starter-test+junit5
前言: 开发过程中经常需要写单元测试,记录一下单元测试spring-boot-starter-testjunit5的使用 引入内容: 引用jar包 <!-- SpringBoot测试类依赖 --> <dependency><groupId>org.springframework.boot</groupId><…...

CentOS 7上安装Anaconda 详细教程
目录 1. 下载Anaconda安装脚本2. 校验数据完整性(可选)3. 运行安装脚本4. 遵循安装指南5. 选择安装位置6. 初始化Anaconda7. 激活安装8. 测试安装9. 更新Anaconda10. 使用Anaconda 1. 下载Anaconda安装脚本 首先需要从Anaconda的官方网站下载最新的Anac…...

2023年全球软件架构师峰会(ArchSummit深圳站):核心内容与学习收获(附大会核心PPT下载)
本次峰会是一次重要的技术盛会,旨在为全球软件架构师提供一个交流和学习的平台。本次峰会聚焦于软件架构的最新趋势、最佳实践和技术创新,吸引了来自世界各地的软件架构师、技术专家和企业领袖。 在峰会中,与会者可以了解到数字化、AIGC、To…...

RT-Thread Studio学习(十六)定时器计数
RT-Thread Studio学习(十六)定时器计数 一、简介二、新建RT-Thread项目并使用外部时钟三、启用PWM输入捕获功能四、测试 一、简介 本文将基于STM32F407VET芯片介绍如何在RT-Thread Studio开发环境下使用定时器对输入脉冲进行计数。 硬件及开发环境如下…...

【linux进程间通信(一)】匿名管道和命名管道
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:Linux从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学更多操作系统知识 🔝🔝 进程间通信 1. 前言2. 进程间…...
第11章 jQuery
学习目标 了解什么是jQuery,能够说出jQuery的特点 掌握jQuery的下载和引入,能够下载jQuery并且能够使用两种方式引入jQuery 掌握jQuery的简单使用,能够使用jQuery实现简单的页面效果 熟悉什么是jQuery对象,能够说出jQuery对象与DOM对象的区别 掌握利用选择器获取元素的方法…...

leetcode:1736. 替换隐藏数字得到的最晚时间(python3解法)
难度:简单 给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。 有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。 …...

MySQL存储函数与存储过程习题
创建表并插入数据: 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 2 1、创建一个可以统计表格内记录…...

基于 Hologres+Flink 的曹操出行实时数仓建设
本文整理自曹操出行实时计算负责人林震基于 HologresFlink 的曹操出行实时数仓建设的分享,内容主要分为以下六部分: 曹操出行业务背景介绍曹操出行业务痛点分析HologresFlink 构建企业级实时数仓曹操出行实时数仓实践曹操出行业务成果分析未来展望 一、曹…...

【Docker】实战多阶段构建 Laravel 镜像
作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! 本节适用于 PHP 开发者阅读。Laravel 基于 8.x 版本,各个版本的文件结构可能会有差异,请根据实际自行修改。 准备 新…...

【MATLAB源码-第118期】基于matlab的蜘蛛猴优化算法(SMO)无人机三维路径规划,输出做短路径图和适应度曲线。
操作环境: MATLAB 2022a 1、算法描述 蜘蛛猴优化算法(Spider Monkey Optimization, SMO)是一种灵感来源于蜘蛛猴觅食行为的群体智能优化算法。蜘蛛猴是一种生活在南美洲热带雨林中的灵长类动物,它们在寻找食物时展现出的社会行…...

【计算机组成与体系结构Ⅱ】Tomasulo 算法模拟和分析(实验)
实验5:Tomasulo 算法模拟和分析 一、实验目的 1:加深对指令级并行性及开发的理解。 2:加深对 Tomasulo 算法的理解。 3:掌握 Tomasulo 算法在指令流出、执行、写结果各阶段对浮点操作指令以及 load 和 store 指令进行了什么处…...

Nginx 简介
1、概念介绍 Nginx ("engine x") 是一个轻量级、高性能的 WEB 服务器软件和反向代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发…...

C++入门学习(一)写一个helloworld
1、头文件 #include <iostream> using namespace std; 任何程序都需要这两句的,写上就好。 2、主文件 int main() {cout<<"Hello World!"<<endl;return 0; } 由于是int型数据,所以要返回一个值,即return0。…...
ChatGPT 股市知识问答
我 2024-01-17 14:16:38 股市交易的关键指标有哪些? ChatGPT 2024-01-17 14:16:38 股市交易中常用的关键指标有很多,以下是一些常见的指标: 股价指标:股价是衡量股票价格变化的重要指标,包括每股收益(EPS…...

uniapp多端评价页
如图所示:评价页 <template><view><!-- 顶部 --><view class"evaluate_head"><image class"headBg" src"/static/evaluate/head.png" mode""></image><view class"headZindex…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...