IS-IS的原理
IS-IS的基本概念:
概述:
IS-IS,中间系统到中间系统,是ISO国际标准化组织为它的无连接网络协议设计的一种动态路由协议
IS-IS支持CLNP网络和IP网络,采用数据链路层封装,区别于ospf只支持IP网络,采用IP报文封装
NSAP:
网络服务访问点,是用于定位资源的地址,提供网络层和上层应用之间的接口,包括IDP和DSP
IDP:由两部分组成,AFI表示地址分配机构和地址格式, ISI用来表示域,有点像Ip地址中的主网络号
DSP:它由三部分组成,High Order DSP用来分割区域,System ID用来区分主机,SEL(NSAP Selector)用来指示服务类型
NET:
网络实体名称,是OSI协议栈中设备的网络层信息,用于路由计算,由区域地址(Area ID)和System ID组成,可以看作是特殊的NSAP
长度与NSAP相同,8~208
配置:
每台运行IS-IS的设备至少需要一个NET,一个设备也可以有多个NET,system ID必须相同
华为网络设备上,System ID的长度是固定的6比特,在一个IS-IS路由域中设备的system ID必须唯一
IS-IS和OSPF区域划分的区别:
IS-IS中每个路由器都只属于一个区域;OSPF中一个路由器的不同接口可以属于不同的区域
IS-IS中单个区域没有骨干和非骨干区域的概念;在OSPF中,区域0属于骨干区域
IS-IS中,level-1和level-2级别的路由都采用SPF算法,分别生成最短路径树SPT;OSPF中,同一区域才使用SPF算法,路由需要通过骨干区域来转发
IS-IS路由器的分类:
level-1路由器,属于IS-IS的内部路由器,只与属于同一区域的level-1-2路由器形成邻接关系,并且需要通过它去访问那其他区域
Level-1路由器无法与Level-2路由器建立邻接关系
Level-1路由器只负责维护Level-1的链路状态数据库LSDB,该LSDB只包含本区域的路由信息
Level-2路由器是IS-IS的骨干路由器,可以与同一或不同一的level-2和level-1-2路由器形成邻接关系
Level-2路由器维护一个Level-2的LSDB,该LSDB包含整个IS-IS域的所有路由信息
所有level-2级别的路由器组成路由域的骨干网,负责不同区域的通信
路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性
Level-1-2路由器属于骨干网络的组成部分,维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由
可以与同一区域的level-1和1-2形成level-1的邻接关系,也可以与其他区域的Level-2和Level-1-2路由器形成Level-2的邻接关系
IS-IS开销值:
IS-IS使用Cost开销作为路由度量值,Cost越小,路由越优
一条IS-IS路径的Cost等于本路由器到达目标网段沿途的所有链路的Cost总和
IS-IS有三种方式来确定接口的开销,按照优先级由高到低:
1. 接口开销:为单个接口设置开销 2. 全局开销:为所有接口设置开销 3. 自动计算开销:根据接口带宽,自动计算开销
IS-IS报文格式
报文是封装在数据链路层的帧结构中的
PDU协议数据单元可以分为两个部分,报文头和变长字段部分
其中IS-IS Header又可分为通用头部(PDU Common Header)和专用头部(PDU Specific Header)。对于所有PDU来说,通用报头 都是相同的,但专用报头根据PDU类型不同而有所差别
IS-IS通用头部详解:1Byte
IS-IS的四种报文类型:
IIH:Hello报文,用于建立和维持邻接关系, level-1使用level-1 LAN IIH, level-2使用level-2 LAN IIH
LSP:链路状态报文,交换链路状态信息,分为level-1 LSP和level-2 LSP两种
PSNP:部分序列号报文,同步LSDB链路信息数据库,维护,也分两种
CSPN:全序列号报文,同步LSDB链路信息数据库,维护,也分两种
IS-IS常见的TLV
T :类型type ; L:长度length ; V:值value
使用TLV结构构建报文的好处是灵活性和扩展性好
采用TLV使得报文的整体结构固定,增加新特性只需要增加新TLV即可,不需要改变整个报文的整体结构
IS-IS工作原理
邻接关系建立:
建立原则:
只有同一层次的相邻路由器才由可能成为邻接
对于level-1路由,区域ID要一致
链路两端IS-IS接口的网络类型必须一致
链路两端IS-IS接口的地址必须处于同一网段
使用IIH报文建立和维持邻接关系
广播网络中邻接关系的建立过程:
1. 两个路由器A, B的邻接标识状态均处于Down状态
2. A首先发起IIH报文,B收到后回复给A
3. A收到后将邻接标识状态变为Up, 再向B发送IIH报文 4. B收到报文后,也改变为Up状态,两个路由器成功建立邻接关系 5. 广播网络中需要选举DIS,在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举
抽象来说:有点像打电话,A给B打电话说 ”喂“ , B回应说 ”欸喂,你哪位“, A又说”我是某某“ , B说 ”我知道了,我是某某某“ , 接下来就可以进行会话了
DIS和伪节点
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS
DIS用来创造伪节点,并生成伪结点的LSP,用来描述网络上的网络设备
伪结点是用来模拟广播网络的一个虚拟节点,并非真实的路由器
IS-IS中的DIS与OSPF中的DR
DIS优先级数值最大的被选为DIS,如果DIS优先级数值相同,就选MAC地址最大的路由器作为DIS
DIS发送Hello PDU的时间间隔是普通路由器的1/3,这样可以确保DIS出现故障时能够被更快速地被发现
DIS与DR的区别:
1,在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举
2, 在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除
而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR
3,在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系
点到点网络中邻接关系的建立过程:
使用两次握手方式:只要路由器收到对端发来的Hello报文,就单方面宣布邻接为Up状态,建立邻接关系使用两次握手方式:只要路由 器收到对端发来的Hello报文,就单方面宣布邻接为Up状态,建立邻接关系
链路状态数据库同步:
LSP:链路状态报文,用于交换链路状态的信息
LSP ID:由三部分组成,System ID、伪节点ID和LSP分片后的编号
display isis lsdb查看链路状态数据库
广播网络中新加入路由器与DIS同步LSDB数据库的过程:
新加入的路由器R3首先发送IIH报文,与该广播域中的路由器建立邻接关系。建立邻接关系之后,R3等待LSP刷新定时器超时,然后将 自己的LSP发往组播地址
网段中的DIS会把收到的R3的LSP加入到LSDB中,并等待CSDN报文定时器超时并发送CSNP报文
新加入的R3收到DIS发来的报文后,对比自己的数据库,像DIS发送PSNP报文请自己没有的LSP
DIS收到后,发送回应的报文进行LSDB同步
点到点网络中LSP的同步过程:
二次握手,建立邻接关系后,发送方发给CSNP给接收方
接收方核对数据库, 缺少信息的话就像发送方索取相应的LSP
LSP的处理机制
路由器收到LSP后的处理原则
1, 如果收到的LSP比本地的LSP更优,或者收到本地没有的LSP
在广播域中,会将其加入数据库,组播发送新的LSP
在点到点的网络中,将其加入数据库,并发送 PSNP报文来确认收到,并发送给他邻居
2,如果收到的LSP比本地的LSP更劣,则不做处理
LSP产生的原因,IS-IS路由域内的所有路由器都会产生LSP,以下事件会触发一个新的LSP:
邻接Up或Down
IS-IS相关接口Up或Down
引入的IP路由发生变化
区域间的IP路由发生变化
接口被赋了新的metric值
周期性更新(刷新间隔15min)
路由计算
level- 1 的路由计算:
目前R1是level- 1 路由器,R2,R3是level-1-2路由器
R1只维护level-LSDB,该LSDB中包含同属于一个区域的设备所产生的Level-1 LSP
R1根据LSDB中的Level-1 LSP计算出本区域内的拓扑,以及到达区域内各个网段的路由信息
R2及R3作为该区域内的Level-1-2路由器,会在它们向该区域下发的Level-1 LSP中设置ATT标志位,用于向区域内的Level-1路由器宣布 可以通过自己到达其他区域
level-1-2路由器的路由计算
R2,R3维护level-1 LSDB,计算本区域的路由,维护level-2 LSDB,计算其他区域的路由
将本区域的路由通过LSP的形式发送给其他区域
level-2路由器的路由计算
R4及R5作为Level-2路由器,只会维护Level-2 LSDB,它们能够根据该LSDB计算出到达全网各个网段的路由
以上为个人学习笔记,总结于华为资料和网络资源
下一次再来说一说IS-IS的配置
相关文章:

IS-IS的原理
IS-IS的基本概念: 概述: IS-IS,中间系统到中间系统,是ISO国际标准化组织为它的无连接网络协议设计的一种动态路由协议 IS-IS支持CLNP网络和IP网络,采用数据链路层封装,区别于ospf只支持IP网络࿰…...

C++(4个类型转换)
1. C语言中的类型转换 1. 隐式 类型转换: 具有相近的类型才能进行互相转换,如:int,char,double都表示数值。 2. 强制类型转换:能隐式类型转换就能强制类型转换,隐式类型之间的转换类型强相关,强制类型转换…...
Ubuntu20.04安装NVIDIA显卡驱动
Ubuntu20.04安装NVIDIA显卡驱动 参考资料:https://blog.csdn.net/weixin_39244242/article/details/136282614?fromshareblogdetail&sharetypeblogdetail&sharerId136282614&sharereferPC&sharesourceqq_37397652&sharefromfrom_link 成功配置…...
速盾:介绍一下高防cdn的缓存响应事什么功能?
高防CDN(Content Delivery Network)是一种基于分布式缓存技术的网络加速服务,能够提供强大的缓存响应功能。它的缓存响应功能主要包括缓存加速和智能缓存两个方面。 首先,高防CDN的缓存加速功能是指通过在全球范围内部署大量的缓…...

Nuclei-快速漏洞扫描器
Nuclei-快速漏洞扫描器 声明 学习内容来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 ✍Ἷ…...

linux网络抓包工具
linux网络抓包工具 一、tcpdump1.1 基本用法1.2 龙芯平台实例操作 二、wireshark2.1 主要功能2.2 龙芯平台实例操作 一、tcpdump tcpdump 指令可列出经过指定网络界面的数据包文件头,可以将网络中传送的数据包的 “头” 完全截获下来提供分析。它支持针对网络层、协…...

详解桥接模式
引言 在开发过程中,可能会遇到系统设计有多种维度变化的情况,比如我们想画一幅五彩斑斓的画,需要用到12个颜色,但是需要粗细不同的线条(粗、中、细),如果用蜡笔,就需要粗中细三种蜡笔…...

探索AI新世界!热门工具与学习资源免费获取
抖知书老师推荐: 人工智能技术的迅速发展让人们既充满期待又有些迷茫。有人担忧被AI技术取代,有人却积极拥抱这场科技浪潮。无论你处于哪种心态,人工智能已经深入到我们生活的方方面面。如果你希望轻松掌握最新的AI工具与动态,…...

vue3项目搭建-6-axios 基础配置
axios 基础配置 安装 axios npm install axios 创建 axios 实例,配置基地址,配置拦截器,目录:utils/http.js 基地址:在每次访问时,自动作为相对路径的根 // axios 基础封装 import axios from "axios";…...

Django 视图层
from django.shortcuts import render, HttpResponse, redirectfrom django.http import JsonResponse1. render: 渲染模板 def index(request):print(reverse(index))return render(request, "index.html")return render(request, index.html, context{name: lisi})…...
代理IP与百度在信息时代的交互
目录 一、代理IP的基本概念和工作原理 二、代理IP在百度搜索中的多重作用 解决网络延时问题,提高搜索速度 提高网络安全 隐藏用户的真实IP地址,保护个人隐私 突破访问限制,拓宽网络视野 三、代理IP在百度关键词排名优化中的应用 模拟…...

1、Three.js开端准备环境
准备工作 从 CDN 导入 1.安装 VSCode 2.安装 Node.js 3.查看Three.js最新版本 4.如何cdn引入: https://cdn.jsdelivr.net/npm/threev版本号/build/three.module.js 例如:https://cdn.jsdelivr.net/npm/threev0.170.0/build/three.module.js 我们需要…...

什么是Batch Normalization?
一、概念 Batch Normalization是在2015年提出的数据归一化方法,主要用在深度神经网络中激活层之前。它的主要作用是加快模型训练时的收敛速度,使模型训练过程更加稳定,避免梯度爆炸或消失,并起到一定的正则化作用,有时…...

十四(AJAX)、AJAX、axios、常用请求方法(GET POST...)、HTTP协议、接口文档、form-serialize
1. AJAX介绍及axios基本使用 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content&q…...
vue2怎么写computed属性
在Vue 2中,computed属性是基于它们的响应式依赖进行缓存的计算属性。只有当计算属性依赖的响应式数据发生变化时,计算属性才会重新计算。以下是如何在Vue 2中定义computed属性的步骤: 定义响应式数据:首先,你需要在组件…...

【从零开始的LeetCode-算法】35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入: …...

vscode + conda + qt联合开发
安装vscode 安装conda 清华大学开源软件镜像(Anaconda下载)_清华大学镜像-CSDN博客 conda create新建一个环境,激活这个环境,然后安装pyside6 pip install pyside6 -i https://pypi.tuna.tsinghua.edu.cn/simple 安装成功后输入 pip list查看是否安装…...

技术总结(四十三)
1 索引介绍 1.1 什么时MySQL的索引 MySQL官方对于索引的定义:索引是帮助MySQL高效获取数据的数据结构。 MySQL在存储数据之外,数据库系统中还维护着满足特定查找算法的数据结构,这些数据结构以某种引用(指向)表中的数据,这样我们就可以通…...

mac终端自定义命令打开vscode
1.打开终端配置文件 open -e ~/.bash_profile终端安装了zsh,那么配置文件是.zshrc(打开zsh配置,这里举🌰使用zsh) sudo open -e ~/.zshrc 2.在zshrc配置文件中添加新的脚本(这里的code就是快捷命令可以进…...
代码设计:设计模式:应对变化
文章目录 概述1.拆分代码2.解耦3.扩展总结概述 代码的设计模式主要为了应对变化 三种代码设计中应对变化的方式 1.拆分代码 2.解耦 3.扩展 1.拆分代码 减小变化对代码的影响 需要拆分代码的几种情况 1.类或方法的代码量巨大,导致代码可读性降低 2.存在复杂的代码,如…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...