详解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…...

行为树(Behavior Trees)
行为树(Behavior Trees)是一种在游戏开发中广泛使用的AI设计模式,主要用于描述AI的行为和决策过程,实现更加智能和自然的游戏AI。它由多个节点组成,每个节点代表一个行为或决策,按照特定的方式连接在一起&a…...

opensssl BIO方式https客户端
废话不多说,代码中使用了两种https客户端的实现方式。 #include <windows.h> #include <WinSock.h>#pragma comment(lib,"ws2_32.lib") #include "../include/openssl\ssl.h" #include "../include/openssl\err.h"#pragm…...

JavaScript之判断是否整数、取余、取整、进制、位或、ES6
MENU 方法一方式二方式三方式四方式五结束语 方法一 使用取余运算符判断,利用任何整数都会被1整除的原理,即余数是0的特点,通过这个规则来判断是否是整数。 let isInteger (val) > val % 1 0;// true isInteger(5); // false isInteger(…...

【打造你自己的Shell:编写定制化命令行体验】
本节重点: 学习进程创建,fork/vfork 学习到进程等待 学习到进程程序替换, 微型shell,重新认识shell运行原理 学习到进程终止,认识$? 一、进程创建 1.1.fork函数初识 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程…...

PGSQL主键序列
PostgreSQL和 MySQL数据库还是有一定的区别。 下面了解一下 PGSQL的主键序列。 一、主键 1、系统自带主键序列 在 PostgreSQL 中,GENERATED BY DEFAULT 和 GENERATED ALWAYS 是用于定义自动生成的列(Generated Column)的选项。一般可作用…...

pg14.2迁移至KingbaseV8R6后部分表记录数为空
pg14.2迁移至KingbaseV8R6后部分表记录数为空 问题描述 kdts工具迁移详情里显示表数据已迁移成功,但是迁移后测试发现部份表记录数为空 分别查看源库和目标库表记录数 --源库 select count(*) from aaf_sys_param order by 1; 229条--目录库 select count(*) fr…...

【Spring 篇】深入解析SpringMVC的组件魅力
SpringMVC,这个名字在Java Web开发者的耳边仿佛是一首动听的旋律,携着轻盈的氛围,带给我们一种愉悦的编程体验。但是,当我们深入探寻这个框架时,它的魅力远不止表面的简单,它由许多组件构成,每个…...

HPsocket 在 C# 中的运用:一款优秀的 socket 通信框架
摘要:本文将为您详细介绍 HPsocket,一款适用于 win32 平台的 socket 通信框架。同时,我们还将探讨如何在 C# 项目中使用 HPsocket,实现网络通信功能。通过本文,您将深入了解 HPsocket 的特点、优势以及在 C# 中的实际应…...

黑豹程序员-MyBatisPlus封装SQL的where条件的对象 QueryWrapper
说明 我们使用MybatisPlus时,我们可以不直接通过SQL操作数据库,而使用面向对象的方式。 其中遇到一个问题,就是如何用面向对象的方式实现 SQL中的where条件拼接。 MybatisPlus很体贴,它提供了一个QueryWrapper,查询包…...

每日一题——LeetCode1252.奇数值单元格的数目
进阶:你可以设计一个时间复杂度为 O(n m indices.length) 且仅用 O(n m) 额外空间的算法来解决此问题吗? 方法一 直接模拟: 创建一个n x m的矩阵,初始化所有元素为0,对于indices中的每一对[ri,ci],将矩…...