ISIS-3 LSDB链路状态数据库同步
上一章我们介绍了ISIS的邻居建立关系以及ISIS的路由器角色有哪些,在不同的网络类型当中建立邻居关系有什么不同,并且以实验案例抓包的形式给大家进一步介绍了建立的过程。
这一章我们来介绍ISIS中是如何实现链路状态数据库同步的,与OSPF的链路状态同步有什么不同,在不同网络类型中的同步过程是否一致。
一、概述
我们在第一章说过ISIS一共有9个报文,分别为L1/L2/P2P的IIH报文,L1/L2的LSP报文,L1/L2的CSNP和L1/L2的PSNP,我们现在来说一下这几个报文的作用是什么
IIH报文在上一章已经介绍过这里不过多赘述
LSP报文
(ISIS中的LSP有点类似于OSPF中的LSA)
- IS-IS链路状态报文LSP用于交换链路状态信息的。LSP分为两种分别为:Level-1 LSP与Level-2 LSP。Level-1 LSP由Level-1路由器传送,Level-2 LSP由Level-2路由器传送,Level1-2路由器则可传送以上两种LSP。
- 两类LSP有相同的报文格式。

CSNP报文
CSNP包含了该设备LSDB中所有的LSP摘要,路由器通过交互CSNP来判断是否需要同步LSDB。
- 在MA广播型网络类型当中,CSNP由DIS定期发送(缺省的发送周期为10秒)。
- 在P2P点到点网络类型当中,CSNP只在第一次建立邻接关系时发送,对方接收到这个CSNP后查看当中的LSP摘要,如果自己的数据库当中没有的话就发送PSNP去请求对方。

PSNP报文
PSNP只包含了部分LSP的摘要信息(与CSNP不同)
- 当发现LSDB不同步时,PSNP来请求邻居发送新的LSP。
- 在P2P点到点网络类型当中,当收到LSP时,会使用PSNP对收到的LSP进行确认(这就对应了我们第一章所说的PSNP报文不仅可以用来当作请求报文也可以用来当作确认报文)

ISIS的LSDB链路状态数据库

查看非伪节点的LSP

查看伪节点LSP

LSDB同步

在这张拓扑当中区域5中的L1路由器只能与同区域的L1/L2建立L1的邻居关系
区域5中的L1/L2路由器只能与同区域的L1建立邻居关系,与不同区域的L1/L2只能够建立L2的邻居关系,那么L1/L2怎么学习到区域3中的L1的链路信息呢?
在ISIS中L1/L2会对L2的邻居做一个引入的操作,这个操作是默认的类似于OSPF中ABR将区域间的路由转发给区域内的路由器,当然这里转发的是L1的链路信息所以区域5中的L1/L2路由器就可以通过L2的邻居关系学习到不同区域中的链路信息
那么L1/L2学习到了不同区域的L1链路信息但L1并没有学习到因为只有L2邻居关系会引入L1的链路信息而L1邻居关系并不会引入L2的链路信息,那区域5中的L1路由器怎么去访问区域3中的L1路由器呢?
L1/L2路由器会在它们该区域下发的Level-1中设置ATT标志位,用于向区域内的Level01路与其宣告可以通过自己到达其他区域。L1路由器会根据ATT标志位计算出指向L1/L2路由器的默认路由用于访问不同区域之间的网段。(非常类似于OSPF中的Stub区域)

LSP的更新时间
- LSP的刷新间隔为15分钟;老化时间为20分钟
- 一条LSP的老化除了要等待20分钟外,还要等待60秒的零老化时延
- LSP重传时间为5秒
LSP的比较规则
- 序列号:越大越新
- Remaining Lifetime:越小越新
- Checksum:越打越新

P2P网络类型同步LSDB过程
1、在P2P点到点网络当中我们前面说了只有在第一次建立邻居关系时才会发送CSNP报文,这个报文中包含了本路由设备所有的LSDB的摘要信息
2、当对方收到我的CSNP报文后会查看与自己的链路状态数据库中的链路数据是否一致,如果有自己没有的链路信息,那就发送PSNP来请求对方
3、当对方收到了来自邻居的PSNP请求报文时,会查看PSNP中的LSP的摘要信息并发送相应的LSP给对方,如果一段时间内没有收到对方发来的PSNP的确认报文则重新发送一份LSP报文给对方
4、这里的确认是隐式的确认通过PSNP报文中LSP entries(t=9,l=16)的LSP的校验和以及序列号和LSP-ID来做相应的确认
5、如果后面链路数据发生变化了就直接发送LSP给对方,告诉邻居我们的链路信息变化了,对方会做相应的撤销和请求

MA网络类型同步LSDB过程
在MA广播网络类型当中,所有的CSNP报文都由我们选举出来的DIS来周期性发送,当邻居收到DIS发送的CSNP时会比较自己的链路状态数据库,发现自己没有的链路信息时会发送PSNP的请求报文给DIS
当DIS收到来自邻居的请求报文时会发送相应的LSP给对方,这里是不会有请求报文的,如果没收到或者丢包了,则下次DIS发送CSNP时在发出PSNP的请求相应的LSP即可。
假如这时新加入一台路由器设备,它会发送IIH报文先建立邻居关系随后发送自己的LSP信息,当DIS收到这个LSP时会将LSP中的内容加入到自己的LSDB中,在发送新的CSNP报文,新加入的路由器就会根据DIS的CSNP报文来请求响应的LSP信息

二、实验
拓扑

(1)基础配置
AR1
system
sysname AR1
interface g0/0/0
ip add 10.0.12.1 24AR2
system
sysname AR2
interface g0/0/0
ip add 10.0.12.2 24
interface g0/0/1
ip add 10.0.23.2 24
interface g0/0/2
ip add 10.0.24.2 24AR3
system
sysname AR3
interface g0/0/0
ip add 10.0.23.3 24
interface g0/0/1
ip add 10.0.35.3 24AR4
system
sysname AR4
interface g0/0/0
ip add 10.0.24.4 24
interfacae g0/0/1
ip add 10.0.45.4 24AR5
system
sysname AR5
interface g0/0/0
ip add 10.0.35.5 24
interface g0/0/1
ip add 10.0.45.5 24
(2)ISIS配置
AR1
isis 1
is-level level-1
network-entity 48.0001.0000.0001.00
q
interface g0/0/0
isis enable 1AR2
isis 1
network-entity 48.0001.0000.0002.00
q
interface g0/0/0
isis enable 1
interface g0/0/1
isis enable 1
interface g0/0/2
isis enable 1AR3
isis 1
network-entity 49.0001.0000.0003.00
q
interface g0/0/0
isis enable 1
interface g0/0/1
isis enable 1AR4
isis 1
network-entity 49.0001.0000.0004.00
q
interface g0/0/0
isis enable 1
interface g0/0/1
isis enable 1AR5
isis 1
is-level level-1
network-entity 49.0001.0000.0005.00
q
interface g0/0/0
isis enable 1
interface g0/0/1
isis enable 1
这里我们将AR1与AR5配置为Level-1的路由器,所以它们只能建立Level-1的邻居状态,并且只维护本区域的LSDB数据库,他们是没有其他区域LSDB数据的,而AR2/3/4他们为L1/2路由器设备,他们的LSDB数据库中会存在完整的链路数据信息

我们可以看到AR1上只有自己与AR2的链路数据,并且AR2的链路数据中ATT置为了,说明AR2连着其他外部区域,如果我们AR1想要去访问外部区域网段的话就需要通过AR2来访问,所以AR1会计算生成一条指向AR2的默认路由。


我们可以看到AR2上拥有L1的LSDB和L2的LSDB,并且通过L2中的链路信息学习到了R5的网段信息
这时我们在AR5上创建一个Loopback接口设置IP为1.1.1.1并且使能ISIS
这时AR3就会收到来自AR5的LSP的更新报文

AR3会把其中自己没有LSP加入到自己的L1与L2的链路数据库当中


由于AR3的L2的链路状态数据库发生了变化所以AR3会把自己更新的L2的LSP发送出去,当AR2收到这条LSP时也会将其中自己没有的LSP放入到自己的L2的LSDB当中


当然AR1还是通过AR2下发的LSP中ATT置位所生成的默认路由去访问AR5的1.1.1.1网段


到这里本章内容就到此结束了如果有疑问可以关注博主私聊,如果有问题欢迎私聊博主及时更改谢谢大家的观看学习!!!
相关文章:
ISIS-3 LSDB链路状态数据库同步
上一章我们介绍了ISIS的邻居建立关系以及ISIS的路由器角色有哪些,在不同的网络类型当中建立邻居关系有什么不同,并且以实验案例抓包的形式给大家进一步介绍了建立的过程。 这一章我们来介绍ISIS中是如何实现链路状态数据库同步的,与OSPF的链路状态同步有什么不同,在不同网络类…...
快速入手-基于Django的Form和ModelForm操作(七)
1、Form组件 2、ModelForm操作 3、给前端表单里在django里添加class相关属性值 4、前端 5、后端form 新增数据处理 6、更新数据处理...
Springboot集成Debezium监听postgresql变更
1.创建springboot项目引入pom <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>io.debezium</groupI…...
Ubuntu22.04搭建freeradius操作说明
Ubuntu22.04搭建freeradius操作说明 更新依赖库 sudo apt update sudo apt install build-essential sudo apt install libtalloc-dev sudo apt install libssl-dev 按照freeradius sudo apt install freeradius 修改freeradius配置 文件路径如下 /etc/freeradius/3.…...
【重装系统】全流程记录,在 MacOS 的电脑上烧录 Ubuntu 启动盘
背景 Ubuntu 无法联网,排查下来应该是网卡驱动的问题,安装驱动的过程中又缺失各种包需要网络,陷入死循环。 全流程以及相关资料 整体流程参考:【史上最全】重装ubuntu20.04系统基本环境配置 烧录启动盘启动盘插入需要重装的服务…...
去中心化金融
什么是去中心化金融 去中心化金融(Decentralized Finance,简称 DeFi)是一种基于区块链技术构建的金融系统,旨在通过去除传统金融机构(如银行、证券公司等)作为中介,提供各种金融服务。这些服务…...
centos 7 部署FTP 服务用shell 脚本搭建
#!/bin/bash# 检查是否以root身份运行脚本 if [ "$EUID" -ne 0 ]; thenecho "请以root身份运行此脚本。"exit 1 fi# 安装vsftpd yum install -y vsftpd# 启动vsftpd服务并设置开机自启 systemctl start vsftpd systemctl enable vsftpd# 配置防火墙以允许F…...
VMware启动虚拟机报“另一个程序已锁定文件的一部分,进程无法访问”
解决方案: 1)定位到虚拟机磁盘目录,我这里是“E\VM_Disk\CactiEZ\”这个目录,每个人目录不一样,详见上图报错位置 2)在这个目录中找到后缀名以“.lck”结尾的目录,将所有以 .lck 结尾的目录删…...
Python基础(正则表达式)
正则表达式使用 在 Python 中,使用 re 模块来处理正则表达式 re.match函数 import re print(re.match(www, www.baidu.com).span()) #.span():获取匹配对象的起始和结束索引,以元组形式返回 print(re.match(com, www.baidu.com))line &q…...
CPU架构和微架构
CPU架构(CPU Architecture) CPU架构是指处理器的整体设计框架,定义了处理器的指令集、寄存器、内存管理方式等。它是处理器设计的顶层规范,决定了软件如何与硬件交互。 主要特点: 指令集架构(ISA, Instr…...
基于Zookeeper的微服务配置管理与灰度发布实战指南
引言 在分布式系统中,服务注册与发现、配置管理以及平滑发布是保障系统高可用性的关键。Apache Zookeeper作为一款成熟的分布式协调服务,结合Spring Cloud生态,能够有效解决这些挑战。本文将深入探讨Zookeeper的核心配置参数、服务注册机制&…...
帕金森病致生活艰难,如何缓解心理负担?
你是否留意到身边有人手部不由自主地颤抖,且肢体变得僵硬,行动也愈发迟缓?这很可能是帕金森病的症状。帕金森病是一种常见的神经系统退行性疾病,多发生于中老年人。 静止性震颤往往是帕金森病的首发症状,患者在安静状…...
使用 fn_dblog手动恢复误操作的 update(单列数值型数据恢复)
使用 fn_dblog手动恢复误操作的 update(单列数值型数据恢复) 事由fn_dblogfn_dblog 列数据意义 事由 通常,我们在操作数据库的时候,很对 update 指令指定一个更新范围,比如指定更新某个ID的数据,指定某个类…...
ambiq apollo3 ADC实例程序注释
#include "am_mcu_apollo.h" // Apollo MCU 外设寄存器定义和HAL库 #include "am_bsp.h" // 板级支持包(引脚定义、LED函数等) #include "am_util.h" // 通用工具函数(如printf重…...
[Windows] Edge浏览器_134.0.3124.83绿色便携增强版-集成官方Deepseek侧边栏
微软Edge浏览器 绿色便携增强版 长期更新 链接:https://pan.xunlei.com/s/VOMA-aVC_GPJiv-MzRS89lsVA1?pwdemxj# Edge浏览器_134.0.3124.83绿色便携增强版-集成官方Deepseek侧边栏...
Python大数据方向就业
一、基础必备技能 1. Python编程 核心语法:熟练掌握函数、面向对象、异常处理、文件操作等。数据处理库:Pandas(数据清洗、分析)、NumPy(数值计算)、Matplotlib/Seaborn(数据可视化&…...
从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.3实战案例:在笔记本电脑上运行轻量级LLM
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 实战案例:在笔记本电脑上运行轻量级LLM2.2.3 模型架构设计与实现1. 环境与工具准备1.1 硬件要求1.2 软件栈选择2. 轻量级模型架构设计2.1 模型参数配置2.2 关键技术优化3. 实战流程3.1 数据准备流程3.2…...
CAN基础知识学习二
一、控制器局域网总线(CAN,Controller Area Network); 二、CAN FD 是CAN with Flexible Data rate的缩写,翻译为【可变速率的 CAN】 CAN-FD 采用了两种位速率:从控制场中的 BRS 位到 ACK 场之前(…...
新能源行业:卓越 UE/UI 设计,引领业务腾飞的新引擎
在全球积极推动可持续发展的大背景下,新能源行业蓬勃兴起,成为经济发展的新引擎。在这个充满机遇与挑战的赛道上,优秀的用户体验(UE)和用户界面(UI)设计正扮演着愈发关键的角色,它不…...
Webview详解(上)
第一阶段:基础入门 WebView基础概念 什么是Webview? WebView是一种用于在移动应用程序中展示网页内容的嵌入式浏览器组件。它允许开发者将网页内容直接加载到应用界面中,用户无需离开应用即可浏览网页。WebView 通常用于加载 HTML、CSS、J…...
Docker镜像相关命令(Day2)
文章目录 前言一、问题描述二、相关命令1.查看镜像2.搜索镜像3.拉取镜像4.删除镜像5.镜像的详细信息6.标记镜像 三、验证与总结 前言 Docker 是一个开源的容器化平台,它让开发者能够将应用及其依赖打包到一个标准化的单元(容器)中运行。在 D…...
C++值传递和引用传递
系列文章目录 值传递和引用传递是 C 中两种常见的参数传递方式,它们的主要区别在于函数内部对参数的操作是否会影响原始数据 C值传递和引用传递 系列文章目录1、值传递2、引用传递3 、常量引用传递4、值传递 vs 引用传递总结 1、值传递 值传递会复制传入的参数&…...
LangChain4J开源开发框架简介
目录 1.1、前言1.2、集成方式简单1.3、核心功能与优势1.4、两种调用方式1.5、链式调用示例代码1.6、AI服务调用示例代码1.7、典型使用场景1.8、总结 1.1、前言 LangChain4J 是一个专为 Java 开发者设计的开源框架,旨在简化大型语言模型(LLMs)…...
Qt图形视图框架在项目中的应用
一、基本概念 Qt 的图形视图框架(Graphics View Framework)提供了一套用于显示和管理2D图形对象的框架。它提供了一组类,这些类可以组合使用来构建用户界面、处理图形对象、实现缩放、平移、旋转等操作。以下是Qt GraphicsView框架的主要组件…...
SpringBoot集成Elasticsearch 7.x spring-boot-starter-data-elasticsearch 方式
SpringBoot集成Elasticsearch 7.x | spring-boot-starter-data-elasticsearch 方式 前言添加maven依赖配置application.properties测试实体类 方式一:继承 ElasticsearchRepository(适合简单查询) 直接使用想自定义自己的Repository接口 方式…...
STM32蜂鸣器播放音乐
STM32蜂鸣器播放音乐 STM32蜂鸣器播放音乐 Do, Re, Mi, Fa, 1. 功能概述 本系统基于STM32F7系列微控制器,实现了以下功能: 通过7个按键控制蜂鸣器发声,按键对应不同的音符。每个按键对应一个音符(Do, Re, Mi, Fa, Sol, La, Si&a…...
GitLab 中文版17.10正式发布,27项重点功能解读【二】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
解码未来:DeepSeek开源FlashMLA,推理加速核心技术,引领AI变革
前言: DeepSeek 兑现了自己的诺言,开源了一款用于 Hopper GPU 的高效型 MLA 解码核:FlashMLA。 项目地址:https://github.com/deepseek-ai/FlashMLA 1:FlashMLA 是什么呀? MLA是DeepSeek大模型的重要技术创新点&…...
leetcode:136. 只出现一次的数字(python3解法)
难度:简单 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例 1 …...
Isaac Sim与Isaac Lab初使用
目录 基于Omiverse下载Isaacsim安装Isaac Lab配置isaacsim环境测试克隆仓库配置python环境强化学习训练的测试 IsaacLab模板配置vscode环境ros接口安装 作为nvidia出品的仿真软件,很多机器人、机器狗【具身智能】都可以有很不错的效果,所以会使用isaac s…...
