目录
IS-IS前世今生
IS-IS指的是什么
OSI模型与TCP/IP模型的网络层协议
IS-IS与OSPF比较
ISIS网络概念
IS-IS如何标识不同的网络设备
ISIS路由器的分类/角色
IS-IS网络类型
IS-IS工作过程
第一步 建立邻居关系
邻居建立Hello报文讲解
广播和P2P类型的邻居建立过程
ISIS邻居建立状态
第二步 同步LSDB数据库
LSDB同步SNP和LSP报文讲解
DIS介绍
广播和P2P类型的LSDB同步过程
第三步 进行SPF路由计算
ISIS报文封装
ISIS静默接口
IS-IS前世今生
IS-IS指的是什么
IS 指的是中间系统(路由器、运行了IS-IS协议的设备)
ES 指的是终端系统(PC、平板、打印机等)
IS-IS指的就是中间系统与中间系统进行路由信息的交换方式
OSI模型与TCP/IP模型的网络层协议
网络层协议的作用
用于网络设备的编址以及寻址
OSI模型网络层是CLNP协议(无连接网络协议)
TCP/IP模型的网络层是IP协议
IS-IS最初就是为CLNP协议设计的一种基于链路状态的使用最短路径算法的动态路由协议
- 即IS-IS最先是为OSI模型服务的,不过由于IS-IS扩展性强的原因,通过扩展能够支持TCP/IP模型的IP协议
- 现在IS-IS称为集成IS-IS,是多栈路由协议,它支持CLNP,IPv4、IPv6等
- IS-IS由于节省设备资源、扩展性强,学习难度低,很快在ISP市场得到了很多应用
IS-IS与OSPF比较
路由计算算法
IS-IS与OSPF都使用SPF算法
都是基于接口的路由协议(即一台设备上的不同接口可以运行不同的路由协议进程)
为谁工作
- IS-IS最初是为CLNP协议工作,现在也可以为IP协议工作
- OSPF只是为IP协议工作
所属层次
- IS-IS是工作在链路层之上的网络层协议(即IS-IS相对于网络层是独立的一个协议)
- OSPF是工作在网络层之上的路由协议(即OSPF是基于网路层封装的,不过不能说是传输层协议,只能说和传输层一个层次)
应用场景
ISIS网络概念
IS-IS如何标识不同的网络设备
ISIS协议通过NET地址标识网络设备
OSPF协议是通过 area id+router id对设备进行标识的
IS-IS协议则通过NET地址(area id+system id+00)来对设备进行标识
NET地址是什么(网络实体标识符)
IP协议是通过IP地址进行网络服务访问的,NSAP协议是通过NSAP地址进行网络访问的
而NET地址就是一类特殊的NASP(即SEL=00的NSAP地址就代表NET地址,用来标识IS-IS设备)
注意:在配置IS-IS过程中,NET最多配置3个,并且它们的System ID都要相同
ISIS配置的区域ID是以整个设备为单位的(即一台设备只可以运行在一个区域)
OSPF配置的区域ID是以端口为单位的 (即一台设备可以运行在多个区域)
ISIS路由器的分类/角色
IS-IS中路由器分为三类
L1路由器 只维护L1的LSDB;只能和同区域 L1/L1-2 路由器 建立邻居
L2路由器 只维护L2的LSDB;可以和同区域/不同区域的 L2/L1-2路由器 建立邻居
L1-2路由器 维护L1的LSDB,也维护L2的LSDB;可以和同区域的L1、同/不同区域的L2路由器建立邻居; 连接L1和L2设备
注意:华为设备默认路由器为L1-2
IS-IS网络类型
IS-IS只支持两种网络类型:P2P、广播;不同网络类型的邻居建立方式、LSDB同步方式不同
PPP、HDLC链路默认是P2P网络类型
发送的所有报文的目的地址都是组播地址09:00:2B:00:00:05
以太网、FDDI链路默认是广播网络类型
发送的所有报文的目的地址都是组播地址
L1路由器发送的地址为01:80:C2:00:00:14
L2路由器发送的地址为01:80:C2:00:00:15
IS-IS工作过程
第一步 建立邻居关系
邻居建立Hello报文讲解
邻居建立报文——Hello报文
Hello报文分类
Hello报文细分为三种类型,主要用于邻居关系建立
P2P Hello报文 在P2P链路上建立L1/L2邻居关系
L1 Hello报文 在广播链路上建立L1的邻居关系
L2 Hello报文 在广播链路上建立L2的邻居关系
Hello间隔(Hello报文不影响邻居的建立)
- Hello报文10s发送一次,邻居失效时间为3倍的发送间隔(30s)
- 但是当选举DIS后,DIS路由器会10/3s周期性发送Hello报文,非DIS路由器还是10s发送一次
- 当非DIS路由器在10s没有收到DIS发的Hello报文,则认为DIS失效
- 当DIS路由器/非DIS路由器在30s没有收到非DIS路由器发送的Hello报文,则认为邻居失效
ISIS Hello报文填充字段
标准的Hello报文会通过填充字段来使得报文达到固定的长度
P2P接口——填充字段长度等于本地生成LSP报文的长度
P2P邻居建立之前,发送带有填充字段的标准Hello报文
P2P邻居建立之后,发送不带有填充字段的小型Hello报文
广播接口——填充字段长度等于MTU的长度
邻居建立前后,都发送带有填充字段的标准Hello报文
为了简化Hello报文的收发操作,可以配置接口建立邻居之前发送Hello报文时不携带填充字段
华为设备配置 int g0/0/0 isis padding-hello 配置发送带有填充字段的hello报文(缺省配置) isis small-hello 配置发送不带有填充字段的小型hello报文
广播和P2P类型的邻居建立过程
广播链路仅使用3次握手(同P2P的三次握手)
- 3次握手,当邻居发送的Hello报文中没有自己的System ID,状态进入initialized
- 当邻居发送的Hello报文中TLV 6字段有自己的MAC(因为MA网络需要依靠MAC识别对端设备,而P2P网络不需要MAC识别),设备才会由initialized状态进入up状态
P2P建立邻居的2种方式:2次握手和三次握手(默认使用3次握手,兼容两次握手)
- 2次握手只要收到对端的Hello报文,就单方面宣布自己为up状态,容易造成单项邻居,出现路由单通;P2P的二次握手不需要TLV240,直接进入up状态
- P2P的三次握手在收到对端Hello包后,需要Hello包中的TLV240字段有自己的System ID,设备才从Initialized状态进入到up状态
ISIS邻居之间强制使用三次握手实现邻居建立 华为设备配置 int g0/0/1 isis ppp-negotiation only(只使用三次握手,不兼容二次握手)
ISIS邻居建立状态
二次握手
Down——初始状态
UP—— 收到对方发来的Hello包(无论邻居列表是否有自己的System id)
三次握手
Down——初始状态
Init —— 收到Hello包,但邻居列表无自己的System id
Up —— 收到Hello包,邻居列表有自己的System id
第二步 同步LSDB数据库
LSDB同步SNP和LSP报文讲解
当邻居状态UP后,开始进行LSDB同步,发送以下报文(与OSPF不一致;OSPF进行LSDB同步是需要建立邻接关系,而ISIS是直接进行LSDB同步,不涉及邻居状态的改变)
LSDB同步报文1——SNP报文分类
CSNP报文(类似OSPF的DD报文)——主要用于通告链路状态数据库(LSDB)摘要
又细分为L1 CSNP、L2 CSNP两种类型
CSNP发送间隔:
在广播网络中,CSNP由DIS周期发送,每10s发送一次
在P2P网络中,CSNP只发送一次,邻居状态UP后发送一次
PSNP报文(类似OSPF的LSR或者LSACK)——用于请求和确认链路状态信息
又细分为L1 PSNP、L2 PSNP两种类型
LSDB同步报文2——LSP报文分类
LSP类似OSPF的LSU,用于邻居之间交换链路状态信息(携带完整信息)
细分为L1 LSP(L1 邻居之间发送)、L2 LSP(L2 邻居之间发送)
DIS介绍
IS-IS同步所需要用到的角色——DIS(类似于OSPF的DR,不过作用不同)
IS-IS在广播型链路上会进行DIS选举(DIS在邻居建立之后进行),P2P网络没有DIS
DIS类似于OSPF的DR,没有BDIS
DIS的作用
DIS主要用于LSDB数据库同步
DIS分类
DIS分为L1 DIS 和 L2 DIS(L1路由器之间选举L1 DIS,L2路由器之间选举L2 DIS)
DIS如何选举
- DIS优先级的取值范围为0~127,默认是64,越大越优先为DIS(0可以参与选举)
- DIS相同,比较接口的MAC地址,MAC地址大的成为DIS
广播和P2P类型的LSDB同步过程
P2P链路LSDB同步过程
- 两台邻居UP后,会互相发送CSNP报文携带自身LSDB的全部LSP摘要给对方
- R2收到CSNP后,检查自身LSDB中LSP新旧判断,发送PSNP携带自己想要的LSP摘要以及需要更新的LSP摘要
- R1收到PSNP后,根据摘要通过LSP报文发送完整的链路状态信息
- 如果RT2没有发送PSNP对LSP做确认
- 5s后RT1会对LSP会重新传送
- RT2收到后再回复PSNP做确认
为什么华为的流程和标准协议RFC定义的不一样
P2P网路中CSNP只会发送一次,当CSNP丢包,就无法建立邻居了
华为设备上先发送LSP,当LSP丢包后,5s重传,可靠性更高
PSNP的请求和回应消息是怎么区分的
通过LSP ID序列号来判断是请求报文还是确认报文
0表示请求 非0表示确认报文
广播链路LSDB同步过程
在DIS稳定的情况下,新增R3与DIS建立邻居进行LSDB同步的过程(此时RT2已经与RT1建立邻居,LSDB完成同步) 以下讲解的是R3发送LSP的过程
- 新增非DIS设备与DIS建立邻居后,互相发送LSP,收到LSP后加入自身数据库(不回复PSNP做确认)
- DIS设备周期性10s发一次CSNP,描述自身LSP摘要信息
- 非DIS设备收到此CSNP,会了解到自己缺少哪些LSP以及DIS有无自己的LSP等信息,如果当发现自身缺少LSP时,发送PSNP请求(如果发现DIS没有自身的LSP,则发送LSP)
- DIS收到PSNP请求后,发送LSP信息
- 非DIS收到LSP信息后,不回复PSNP做确认,当收到下一次的CSNP报文时,如果自己还缺少LSP,就再次请求,如果不缺少LSP,就无反应
注意
- 新增路由器和DIS一旦建立邻居,会互相发送自身LSDB的LSP
- 非DIS路由器会和新增路由器建立邻居关系,但不会向新增的路由器发自身LSDB中的LSP,避免重复发送LSP
- 广播网络中的PSNP只有请求作用,无确认作用
- 广播网络中对LSP的确认是通过CSNP隐式确认的
第三步 进行SPF路由计算
ISIS接口开销默认都是10,与带宽无关,开销类型为narrow窄带
窄带路由会收宽带的LSP,但是不会进行计算
ISIS接口开销类型
开销类型为Narrow和Wide两大类;其中Wide和narrow类型下的ISIS不可以实现互通
Narrow 发送narrow类型开销 接收narrow类型开销
Wide 发送wide类型开销 接收wide类型开销
Compatible 发送wide和narrow类型开销 接收wide和narrow类型开销
Narrow-compatible 发送wide和narrow类型开销 接收narrow类型开销
Wide-compatible 发送wide和narrow类型开销 接收wide类型开销
ISIS不同开销类型的范围
窄带(narrow):开销取值范围为 1~63
宽带(wide):开销取值范围为 1~2^24
路由开销计算方式
接口手动配置开销--可以全局更改和指定接口下更改
所有ISIS接口默认为窄带,开销为10 ,环回口为0
当接口开销类型改为宽带后,开销默认也为10 环回口为0
ISIS可以配置自动计算接口开销
ISIS接口开销配置
华为配置 isis cost 1 接口下配置;手动配置单个ISIS接口开销为1 circuit-cost 1 ISIS视图下配置;手动配置所有ISIS接口开销为1 cost-style wide ISIS视图下配置;将开销类型改为宽带 bandwidth-reference [100Mbt/s] ISIS视图下配置;配置参考带宽 auto-cost enable ISIS视图下配置;使能自动计算接口的开销值
计算所需TLV
TLV 132 携带携带接口的IPv4地址,用于计算下一跳
窄带
TLV 2 携带拓扑信息
TLV 128 携带内部路由信息
TLV 130 携带外部路由信息
宽带
TLV 22 携带拓扑信息
TLV 135 携带路由信息
SPF计算过程
- 单区域LSDB同步完成
- 生成全网拓扑结构图
- 以本节点为根生成最短路径树
ISIS报文封装
ISIS封装在数据链路层
广播——被封装在802.3帧中
P2P——被封装在PPP链路中(PPP链路无MAC地址)
数据链路层的封装格式
以太网II帧(常见的)
IEEE 802.3帧(BPDU、ISIS就封装在802.3帧中)
PPP
HDLC
ATM等
ISIS静默接口
作用同OSPF的静默接口
ISIS接口配置为静默接口后,此接口会禁止发送和接收协议报文
当用户希望本地ISIS的路由信息不被其他网络中的设备获得,并且本地设备不接受其他设备发布的路由信息时,可以禁止ISIS接口发送与接收协议报文
注意事项
接口静默之后,接口的直连路由可以发布出去
但是Hello报文被阻塞,无法建立邻居关系
配置命令
华为设备配置 int g1/0/0 配置静默接口的前提是此接口加入到ISIS中 isis enable 1 isis silent