ISIS路由协议
骨干区域与非骨干区域
- 凡是由级别2组建起来的邻居形成骨干区域;
- 级别1就在非骨干区域,骨干区域有且只有一个,并且需要连续,
- ISIS在IP环境下目前不支持虚链路。
路由器级别
- L1路由器只能建立L1的邻居;
- L2路由器只能建立L2的邻居;
- L1-2路由器和L1的路由器建立L1的邻居,和L2的路由器建立L2的邻居。
- L1-2和L1-2分别建立L1和L2的邻居,两种邻居独立工作,互不影响。
L1的邻居要求区域ID要相同,L2的邻居不要求区域ID相同。
上图ISIS只能建立L2的邻居,因为L1邻居的区域号要相同。
ISIS支持的网络类型
邻居建立的条件是两边的网络类型要相同,ISIS只有两个网络类型,分别是广播,点到点。
int g0/0/0
isis circuit-type p2p
ISIS的开销值
ISIS无论接口带宽多大,缺省cost为10;三种方式来确定接口的开销,优先级高到低分别是:接口开销(为单个接口设置开销),全局开销(为所有接口设置开销),自动计算开销(根据接口带宽自动计算开销)。
[R1-G0/0/0]isis cost 20 level-1 接口下修改,优先级最高
[R1-isis-1]circuit-cost 30 全局开销
[R1-isis-1]auto-cost enable compatible 自动计算开销
dis isis cost interface g0/0/0 查看isis接口开销值、
cost-style 开销度量值风格,有窄,宽,混合
[R1-isis-1]bandwidth-reference 1000 参考带宽
ISIS的报文格式
基于TLV的数据结构路由协议:ISISI,BGP,LDP...
TlV用3个参数表达某一个路由属性或者业务特征,便于实现新功能扩展,可以按需携带TLV,在需要的时候携带,不需要的时候可以不携带。
ISIS报文类型
dis isis lsdb
在级别1和级别2中产生的LSP内容没有任何区别,只是邻居类型不一样
ISIS通用头部
ID length:system id的长度
PDU type:报文的类型
Max Areas:支持的最大的区域个数,最大支持3个
ISIS常见TLV
邻接关系建立原则
- 只有同一层次的相邻路由器才有可能成为邻接
- 对于L1路由器来说,区域 ID必须一致
- 链路两端ISIS接口的网络类型必须一致
- ISIS接口的地址必须处于同一网段下(主从地址有一对在一网段就可以建立)
- 点到点链路上必须主地址在同一网段
dis isis error interface g0/0/0 //查看isis错误信息
ip address 1.1.1.2 24 sub //从地址
在IP网络上运行ISIS时,需要检查对方的IP地址。如果接口配置了从IP,那么只要双发有某个IP在同一网段,就能建立邻接,不一定要IP相同。
广播型链路邻接关系建立过程
状态机:Down,init,up(相当于2-way);LSDB的同步过程没有任何定义任何状态机制,自己默默完成同步
实际上Neighbour携带的是MAC地址,不是system id,采用三次握手建立邻居
广播型链路同步过程
R1是DIS,R2是非DIS,已经完成了LSP同步。
此时,R3为新增路由器接入,分别和这两台路由器建起邻居到up状态,并且DIS没有被抢夺
新增路由器和DIS一旦建立邻居,就会直接互相发送自身LSDB中的所有LSP
非DIS路由器和新增路由器建立邻居关系,但不会向新增路由器发送自身的LSDB中的LSP,避免重复发送LSP
非DIS路由器收到新增路由器的LSP后,如果是新的LSP,添加到自身的LSDB中,不会发送PSNP确认此LSP,并向其他链路上邻居泛洪这些LSP
新增路由器收到DIS的CSNP后(DIS会每隔10s周期性发送CSNP信息),根据比较自身的LSDB,发送相应的PSNP,DIS接收PSNP后,发送相应的LSP,新增路由器接收到之后,添加到自身的LSDB,不会发送PSNP确认这些LSP,同步过程结束,并向其他链路泛洪
DIS每10秒周期组播发送CSNP,维护此广播型网络上路由器的LSDB同步
上来直接互相发送LSP,发送完成之后,开始互相发送PSNP进行确认,之后再发送CSNP
点到点网络中的邻接关系建立过程
- 两次握手开启:isis ppp-negotiation 2-way 只能在点到点链路上使用,hello报文中不携带TLV240,接口也不处理TLV240;两次握手的速度更快,但是可能会导致对方并没有把自己当成邻居
- 三次握手开启:isis ppp-negotiation 3-way 接口启用3次握手建立邻居,但向下兼容2次握手,接口发送的hello的报文携带TLV240,但可以处理不携带TLV240的hello包,三次握手使用TLV240
- 仅用三次握手建立邻居,isis ppp-negotiation 3-way only仅用3次握手建立邻居
点到点网络中LSP的同步过程
有了LSP之后会直接发给对方,对方收到之后回复PSNP进行确认,如果R1没有收到PSNP的确认,会重新发送LSP,R2会重新回复PSNP
为什么ISIS可以做到直接发送全部LSP
如果将8条静态路由引入到ospf之后将会产生8条LSA,而如果引入到ISIS中,ISIS只会产生一条LSP
DIS与伪节点
DIS基于级别来选举,L1选举出L1的DIS,L2选举出L2的DIS,分别来维护各个级别的数据库。
DIS负责生成为节点LSP(2类LSA)
DIS选举:
- DIS的优先级越大越优,优先级相同,比较MAC地址,越大越优。
- 优先级等于0的路由器依然可以进行DIS选举,比较MAC地址。
- DIS可以被抢夺
- 没有BDIS
在ISIS广播网中,同一网段上的同一级别路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。
IIH
DIS 的systemID是伪节点标识符(DIS SYSTEM ID.PID)
IIH L1HELLO L2 HELLO
- L1的路由器在bro链路上发送L1的hello,L2的路由器在bro链路发送L2的hello,和接口链路级别无关。
- L12路由器在L12的bro链路上发送L1的hello,也发送L2的hello
- L12路由器在L1的bro链路上只发送L1的hello
- L12路由器在L2的bro链路上只发送L2的hello
- isis circuit-level 控制bro链路的链路级别
- 两边的hello周期与失效时间不一样,也可以建立起邻居关系(如果是ospf则需要一样)
IIH P2P HELLO
- L1路由器在P2P链路上建立L1的邻居,和链路级别无关
- L2路由器在P2P链路上建立L2的邻居,和链路级别无关
- L12的路由器在P2P的L1链路上建立L1的邻居,区域ID要一样
- L12的路由器在P2P的L2链路上建立L2的邻居,区域ID无关
- L12的路由器在P2P的L12链路上和相同区域的L12路由建立L12的邻居
- L12的路由器在P2P的L12链路上和不同区域的路由器建立L2的邻居
总结:L1,L2路由器级别决定邻居的级别,L12的路由器和链路级别共同决定邻居的级别
p2p链路上hello包,10s发送一次,邻居失效时间是30s,默认是hello间隔的3倍(让邻居认为自己多久失效)
bro链路上DIS发送间隔是3s,DIS失效时间是9S;非DIS发送间隔是10s,失效时间是30s
int g0/0/0
isis time hello //修改hello的时间
isis timer holding-multiplier 3 //失效时间是hello时间的3倍
LSP
ISIS链路状态报文LSP用于交换链路状态信息。LSP分为两种:L1和L2 LSP。L1 LSP由L1路由器传送,L2 LSP由L2路由器传送,L1-2路由器则可以传送以上两种LSP
两类LSP有相同的报文格式
LSPID是唯一的描述一条LSP,星号代表是自己产生的LSP,前面6个字节用来代表SYSTEM ID ,后面紧跟着00用来标识伪节点标识符,-后面是分片标识符
system id.伪节点标识符-分片标识符
对于ISIS来说,只有两种LSA类型,分别是实节点LSP对应于(对应于ospf中的1类lsa)与伪节点LSP(对应ospf中的2类lsa),伪节点标识符等于0就是实节点,不等于0就是伪节点。
LSP的更新机制,周期性更新(每隔900秒更新一次,序列号加1,老化时间是1200秒,倒计时),触发更新(链路状态发生了变化,更新一次)
LSP的新旧判断,
- 先比序列号,越大越优先
- 如果序列号相同,则比较剩余存活时间,如过剩余存活时间为0,就将LSP存入到LSDB中(用于删除一条LSP)
- 如果序列号相同且都不等于0,就比较校验和,校验和大的优先
- 校验和相同,则认为一致
CSNP
包含设备LSDB中所有的LSP摘要,路由器通过交换CSNP来判断是否需要同步LSDB
-
- 在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)
- 在点到点网络上,CSNP只在第一次建立邻接关系时发送
PSNP
如果PSNP是请求的话,序列号会变成0,如果不是0,那么就是在做确认
路由计算
在一个区域,使用SPF算法即可算出。
L1的路由器 使用L1的LSP描述直连网段信息
L2的路由器 使用L2的LSP描述直连网段信息
对于 L1-2路由器来说,默认会将所有的直连链路分别在L1和L2中去描述
L12 根据链路级别对直连叶子做描述
- 如果链路为L2,则在L2的LSP中描述该链路的叶子,不在L1的LSP描述
- 如果链路为L1或者L2,则在L1和L2的LSP中都描述该链路的叶子
- 接口默认也是L1-2,int g0/0/2 ; isis circuit-level level-1
- 骨干区域可以计算出非骨干区域的明细路由,原因:L12路由将L1 LSP计算出的路由作为自身直连的叶子挂载到L2的LSP来描述
- 非骨干区域路由器不可以计算出骨干区域的路由信息,默认情况L12路由器不在L1的LSP中描述骨干区域的路由信息
- 非骨干区域通过缺省路由访问其他网络
- 导致ISIS的L1区域默认成为完全Stub区域
ATT置位
LSP中,ATTbit成为骨干区域连接服务,当L12路由器在L2的LSDB中,存在其他区域的L2 LSP时,将自身产生的L1 LSP中的ATT bit置1
L1区域路由器根据ATT bit置1,计算出一条到达L12路由的缺省路由
让它一直置1,可以ISIS断开不需要的时候,也可以去正常访问连接的其他网络
isis 1
attached-bit advertise never|always(一直置位)
attached-bit avoid-learning L1收到att置位不生成默认路由,他不计算,他的下联路由器可以计算
路由渗透
缺省路由的计算存在次优路径,可以将L2的路由引入到L1的路由中,路由泄露,DU位会置1
isis 1
import-route isis level-2 into level-1 //L1-2会把L2的路由挂到自己的L1数据库中的叶子上面
undo import-route isis leve-1 into level-2 不让L1引入到L2中
ISIS认证
认证方式:明文认证,MD5认证,Keychian认证(时间到了自己换密码),HMAC-SHA256认证
三种类型:接口认证(只对hello包做认证),区域认证,路由域认证(每台设备都要做)
默认接口没有启用接口认证,代表发送ISIS报文时不携带认证tlv,也不要求接收的hello是否携带认证tlv
ospf做认证是放在头部,ISIS做认证是放在了LSP中,随着LSP进行传递,所有链路都要使用相同认证
ISIS中途路由器只有泛洪的能力,没有修改认证的能力
isis authentication-mode md5 plain huawei//启用接口认证,发送hello包是携带认证TLV
isis authentication-mode md5 plain huawei send-only //不要求接收hello包是要携带TLV
area-authentication-mode //区域认证
domain-authentication-mdoe //对自己产生的LSP做认证
ISIS选路与防环
如果R1收到两个ATT置位的L12路由器,那么就负载分担;R2不会生成指向R3的默认路由,因为UP置位
骨干区域L2的路由优于L1泄露的路由,L1的路由优于L2的
L1路由>L2路由>L1*
引入外部路由到达ISIS中后,LSP信息会使用分片
IP-External外部路由
相关文章:
ISIS路由协议
骨干区域与非骨干区域 凡是由级别2组建起来的邻居形成骨干区域;级别1就在非骨干区域,骨干区域有且只有一个,并且需要连续,ISIS在IP环境下目前不支持虚链路。 路由器级别 L1路由器只能建立L1的邻居;L2路由器只能建立L…...
论文解读:Bert原理深入浅出
摘取于https://www.jianshu.com/p/810ca25c4502 任务1:Masked Language Model Maked LM 是为了解决单向信息问题,现有的语言模型的问题在于,没有同时利用双向信息,如 ELMO 号称是双向LM,但实际上是两个单向 RNN 构成的…...
共享内存 windows和linux
服务端,即写入端 #include <iostream> #include <string.h> #define BUF_SIZE 1024 #ifdef _WIN32 #include <windows.h> #define SHARENAME L"shareMemory" HANDLE g_MapFIle; LPVOID g_baseBuffer; #else #define SHARENAME "sh…...
一个mongodb问题分析
mongodb问题分析 现状 表的个数: 生产上常用的表就10来个。 sharding cluster replica set方式部署: 9个shard server, 每个shard server 1主2从, 大量数据写入时或对大表创建索引时,可能有主从复制延迟问题。实…...
Vue3.0极速入门- 目录和文件说明
目录结构 以下文件均为npm create helloworld自动生成的文件目录结构 目录截图 目录说明 目录/文件说明node_modulesnpm 加载的项目依赖模块src这里是我们要开发的目录,基本上要做的事情都在这个目录里assets放置一些图片,如logo等。componentsvue组件…...
RabbitMQ---订阅模型-Direct
1、 订阅模型-Direct • 有选择性的接收消息 • 在订阅模式中,生产者发布消息,所有消费者都可以获取所有消息。 • 在路由模式中,我们将添加一个功能 - 我们将只能订阅一部分消息。 例如,我们只能将重要的错误消息引导到日志文件…...
Django REST framework实现api接口
drf 是Django REST framework的简称,drf 是基于django的一个api 接口实现框架,REST是接口设计的一种风格。 一、 安装drf pip install djangorestframework pip install markdown # Markdown support for the browsable API. pip install …...
4.19 20
服务端没有 listen,客户端发起连接建立,会发生什么? 服务端如果只 bind 了 IP 地址和端口,而没有调用 listen 的话,然后客户端对服务端发起了连接建立,服务端会回 RST 报文。 没有 listen&#x…...
(动态规划) 剑指 Offer 10- II. 青蛙跳台阶问题 ——【Leetcode每日一题】
❓剑指 Offer 10- II. 青蛙跳台阶问题 难度:简单 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97(1000000007),如计算初始结果为:1…...
物联网WIFI 模块AT指令版本七大元凶
前言 目前我们讨论的这个问题,并不是说WIFI方案不具备以应的功能。而是指在同一个AT固件下可能存在的问题。由于各厂商AT指令的开发深度不同,导致各厂商之间的AT指令差异很大。我总结了一些问题,可能是导致目前AT指令不好用元凶。 底层库问题…...
Qt 正则(数据格式校验、替换指定格式数据、获取匹配数据)
头文件引用 #include <QRegExp>初始化QRegExp实列 QRegExp re("^\\d{1,3},\\d{1,3}$");数据格式验证 QRegExp re("^\\d{1,3},\\d{1,3}$"); QString msg "12,33"; if(re.exactMatch()){// 验证通过 }else{//验证不通过 }替换数…...
网络层协议——ip
文章目录 1. 网络层2. IP协议2.1 协议头格式 3. 网段划分3.1 特殊的IP地址3.2 IP地址的数量限制 4. 私有IP地址和公网IP地址 1. 网络层 在应用层解决了如何读取完整报文、序列化反序列化、协议处理问题。在传输层解决了可靠性问题。那么网络层IP的作用是在复杂的网络环境中确定…...
Qt6和Rust结合构建桌面应用
桌面应用程序是原生的、快速的、安全的,并提供Web应用程序无法比拟的体验。 Rust 是一种低级静态类型多范式编程语言,专注于安全性和性能,解决了 C/C 长期以来一直在努力解决的问题,例如内存错误和构建并发程序。 在桌面应用程序开…...
Kubernetes(K8S)简介
Kubernetes (K8S) 是什么 它是一个为 容器化 应用提供集群部署和管理的开源工具,由 Google 开发。Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项…...
面试中问:React中函数组件和class组件的区别,hooks模拟生命周期
React中函数组件和class组件的区别,hooks模拟生命周期 React中函数组件和class组件的区别hooks模拟生命周期 React中函数组件和class组件的区别 函数组件: 定义:函数组件是使用纯函数定义的组件,它接受 props 作为参数并返回 JSX。简洁性&am…...
Python高光谱遥感数据处理与高光谱遥感机器学习方法应用
本文提供一套基于Python编程工具的高光谱数据处理方法和应用案例。 本文涵盖高光谱遥感的基础、方法和实践。基础篇以学员为中心,用通俗易懂的语言解释高光谱的基本概念和理论,旨在帮助学员深入理解科学原理。方法篇结合Python编程工具,专注…...
Java实现接收xml格式数据并解析,返回xml格式数据
需求描述:后端接受xml格式数据,解析出相应数据,并返回xml格式数据。 <!--XML解析--><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId>…...
【C++】初步认识模板
🏖️作者:malloc不出对象 ⛺专栏:C的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、泛型编程二、函数模板2.1 函…...
Ansible 临时命令搭建安装仓库
创建一个名为/ansible/yum.sh 的 shell 脚本,该脚本将使用 Ansible 临时命令在各个受管节点上安装 yum 存储库. 存储库1: 存储库的名称为 EX294_BASE 描述为 EX294 base software 基础 URL 为 http://content/rhel8.0/x86_64/dvd/BaseOS GPG 签名检查为…...
phpstorm动态调试
首先在phpstudy搭建好网站,在管理拓展开启xdebug拓展 查看php.ini配置已经更改 需要增添修改一下设置 [Xdebug] zend_extensionD:/phpstudy_pro/Extensions/php/php5.6.9nts/ext/php_xdebug.dll xdebug.collect_params1 xdebug.collect_return1 xdebug.auto_trace…...
二叉树的层序遍历及完全二叉树的判断
文章目录 1.二叉树层序遍历 2.完全二叉树的判断 文章内容 1.二叉树层序遍历 二叉树的层序遍历需要一个队列来帮助实现。 我们在队列中存储的是节点的地址,所以我们要对队列结构体的数据域重定义, 以上代码 从逻辑上来讲就是1入队,1出队&am…...
java八股文面试[JVM]——JVM内存结构
参考: JVM学习笔记(一)_卷心菜不卷Iris的博客-CSDN博客 JVM是运行在操作系统之上的,它与硬件没有直接的交互 JVM内存结构: 方法区:存储已被虚拟机加载的类元数据信息(元空间) 堆:存放对象实…...
Kafka基本使用
查看Kafka的进程是否在运行 #命令行终端中运行如下命令 ps -ef | grep kafkafind / -iname kafka-server-start.shcd /usr/local/kafka/bin/#启动kafka ./kafka-server-start.sh -daemon /usr/local/kafka/config/server.propertiesKafka默认使用9092端口提供服务…...
【目标检测】理论篇(2)YOLOv3网络构架及其代码实现
网络构架图: 代码实现: import math from collections import OrderedDictimport torch.nn as nn#---------------------------------------------------------------------# # 残差结构 # 利用一个1x1卷积下降通道数,然后利用一个3x3卷…...
k8s之工作负载、Deployment、DaemonSet、StatefulSet、Job、CronJob及GC
文章目录 1、工作负载1.1、定义1.2、分类 2、Deployment2.1、定义2.2、Deployment创建2.3、Deployment 更新机制2.3.1、比例缩放(Proportional Scaling)2.3.2、HPA(动态扩缩容)2.3.2.1、需要先安装metrics-server2.3.2.2、配置hpa…...
IDEA项目实践——Element UI概述
系列文章目录 IDEA项目实践——JavaWeb简介以及Servlet编程实战 IDEA项目实践——Spring当中的切面AOP IDEA项目实践——Spring框架简介,以及IOC注解 IDEA项目实践——动态SQL、关系映射、注解开发 IDEWA项目实践——mybatis的一些基本原理以及案例 文章目录 …...
Docker 容器学习笔记
Docker 容器学习笔记 容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个…...
Day03-vue基础
Day03-vue基础 一 列表渲染 v-for这个指令可以实现列表渲染 1 数组 <ul><!-- v-for遍历的时候,key必须赋唯一值第一个参数是数组元素,第二个参数是元素下标--><li v-for="(item,index) in [1,3,5,7]" :key="item">{{item}}--{{index}…...
RAC sid=‘*‘ 最好加上 v$system_parameter
实验结论:在RAC环境中,最好修改参数sid* 安全可靠,因为暂时未明确知道哪些参数是默认全局修改,什么参数是默认单节点修改的,* 靠谱,不容易出问题 在RAC环境中,修改全局参数scopespfile生效时&am…...
【位运算进阶之----左移(<<)】
今天我们来谈谈左移这件事。 ❤️简单来说,对一个数左移就是在其的二进制表达末尾添0。左移一位添一个0,结果就是乘以2;左移两位添两个0,结果就乘以2 ^ 2;左移n位添n个0,结果就是乘以2 ^ n,小心…...
网站怎么做充值提现功能/苏州seo免费咨询
基本数据类型: 字符串: 字符串可以相加, 表示连接; 可以将字符串乘以某个数,表示将此字符串复制多少次. 数: 数的加减乘除取余等. 需要注意的是两个乘号**和两个除号/ / python2中的除法和3有所不同,那么需要import math ,然后使用math方法来达到和…...
公众平台的微信网站开发/web网页制作成品免费
问题提出假定有3个一维数组x0、x1、x2,其元素分别为:x0 [1, 2, 3]x1 [4, 5, 6]x2 [7, 8, 9]请将这3个一维数组的元素交叉拼接后,组成一个新的一维数组y:y [1, 4, 7, 2, 5, 8, 3, 6, 9]即新的数组y是从3个原始的一维数组中依次分别取一个元素进行交叉…...
b站是什么网站/如何联系百度推广
Atitit.rsa密钥生成器的attilax总结 1.1. 密钥生成器 1 1.2. 生成固定的密钥 2 1.2.1. 设置或重置 SecureRandom 对象的随机数种子 2 1.3. 密钥结构 2 1.1. 密钥生成器 public static Map<String, Object> initKey2(String md5_deta) throws Exception{ /** RSA算法要…...
自己做网站都需要什么/cps广告是什么意思
[转载]风声水起的blog题目:已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);1.不调用库函数,实现strcpy函数。2.解释为什么要返回char *。解说:1.strcpy的实现代码char * strcpy(char * strDest,const…...
桂林生活网疫情最新消息/搜索引擎关键词优化
blog地址:https://blog.friddle.me/post/frida-js-de-retrofit-si-lu-he-chang-shi/开始博客又搞来搞去。本来准备在知乎上了。不过可以在这里写。然后知乎上再拷贝一份 Retrofit是一个很牛逼的框架/Frida也是。我作为新手。通过hack某个App一周多。也算正式入门了目…...
电子商务的网站案例/网络营销电子版教材
题目大意是: 有一些点,每个点都有一个重量值,然后给出了一些边,每个边都有一个权值 最后让用一些边组成一棵树,使得花费最少,每个边(u,v)的花费(边得所有子孙节点的重量和)*(该边的权值) 对于这个花费&a…...