ISIS基础
基本概念
IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO (International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionLessNetwork Protocol,无连接网络协议)设计的一种动态路由协议。
随着TCP/IP协议的流行,为了提供对IP路由的支持,IETF在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI(Open System Interconnect,开放式系统互联)环境中,我们将扩展后的IS-IS称为集成IS-IS。
NSAP地址
NSAP(Network Service Access Point,网络服务访问点)是OSI协议栈中用于定位资源的地址,主要用于提供网络层和上层应用之间的接口。NSAP包括IDP及DSP,如下图所示:

1.IDP:相当于IPv4地址中的有类网络号
1.AFI:表明分配机构和地址格式 1字节
2.IDI:表明地址分配的域 2字节
2.DSP:相当于IPv4地址中的子网络号和主机地址
1.header older dsp:分割区域 10字节
2.system-id :主机标识 6字节
3.sel :上层标识 1字节
NET地址
NET(Network Entity Title,网络实体名称)是OSI协议栈中设备的网络层信息,主要用于路由计算,由区域地址(Area ID)和System ID组成,可以看作是特殊的NSAP(SEL为00的NSAP)。NET的长度与NSAP的相同,最长为20Byte,最短为8Byte。
在IP网络中运行IS-IS时,只需配置NET,根据NET地址设备可以获取到Area ID以及System ID。

ISIS路由器分类
1.Level-1路由器
Level-1路由器(例如图中的R1)是一种IS-IS区域内部路由器,它只与属于同一区域的Level-1和Level-1-2路由器形成邻接关系,这种邻接关系称为Level-1邻接关系。Level-1路由器无法与Level-2路由器建立邻接关系。
Level-1路由器只负责维护Level-1的链路状态数据库LSDB,该LSDB只包含本区域的路由信息。值得一提的是,Level-1路由器必须通过Level-1-2路由器接入IS-IS骨干区域从而访问其他区域。
2.Level-2路由器
Level-2路由器(例如图中的R4、R5、R6、R7)是IS-IS骨干路由器,它可以与同一或者不同区域的Level-2路由器或者Level-1-2路由器形成邻接关系。Level-2路由器维护一个Level-2的LSDB,该LSDB包含整个IS-IS域的所有路由信息。
所有Level-2级别(即形成Level-2邻接关系)的路由器组成路由域的骨干网,负责在不同区域间通信。路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性。
3.Level1-2路由器
Level-1-2路由器与OSPF中的ABR非常相似,它也是IS-IS骨干网络的组成部分。
Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由。
同时属于Level-1和Level-2的路由器称为Level-1-2路由器(例如图中的R2和R3),它可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻接关系,也可以与其他区域的Level-2和Level-1-2路由器形成Level-2的邻接关系。
在华为路由器上配置IS-IS时,缺省时,路由器全局Level为Level-1-2。
当然,可以通过命令修改该设备的类型:
[AR1-isis-1]is-level level-1 修改设备级别
ISIS路由器接口分类
ISIS接口分为三类:
- 1.L1接口
- 2.L2接口
- 3.L12接口
修改路由器的接口级别:
[AR1-GigabitEthernet0/0/0]isis circuit-level level-1
注意:
L1设备 和 L1接口 发送L1报文
L1设备 和 L2接口 发送L1报文
L2设备 和 L1接口 发送L2报文
L2设备 和 L2接口 发送L2报文
L12设备 和 L1接口 发送L1报文
L12设备 和 L2接口 发送L2报文
L12设备 和 L12接口 发送L12报文
接口存在级别意义: 当L1/2设备只需要建立某一个级别的邻居时,只需要修改接口级别即可
区域划分
IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构:
Level-1路由器部署在非骨干区域。
Level-2路由器和Level-1-2路由器部署在骨干区域。
每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。
如图所示,整个骨干区域不仅包括Area49.0002中的所有路由器,还包括其它区域的Level2和Level-1-2路由器。
以上拓扑结构图可以体现IS-IS与OSPF的不同点:
- 在IS-IS中,每个路由器都只属于一个区域;而在OSPF中,一个路由器的不同接口可以属于不同的区域。
- 在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域。
- 在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT(Shortest Path Tree);而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。
OSPF封装于网络层之上,服务于IP层
ISIS封装于数据链路层(数据帧)之上,服务于IP层
网络类型
IS-IS会自动根据接口的数据链路层封装决定该接口的缺省网络类型, IS-IS支持两种类型的网络:
广播(Broadcast): 如Ethernet。
点到点(P2P): 如PPP、 HDLC等。
ISIS开销
IS-IS使用Cost(开销)作为路由度量值,Cost值越小,则路径越优。IS-IS链路的Cost与设备的接口有关,与OSPF类似,每一个激活了IS-IS的接口都会维护接口Cost。然而与OSPF不同的是,IS-IS接口的Cost在缺省情况下并不与接口带宽相关(在实际部署时,IS-IS也支持根据带宽调整Cost值),无论接口带宽多大,缺省时Cost为10。
一条IS-IS路径的Cost等于本路由器到达目标网段沿途的所有链路的Cost总和。
开销更改:
1.接口开销:
[AR2-GigabitEthernet0/0/0]isis cost
2.全局开销:
[AR2-isis-1]circuit-cost 该命令可以同时改变所有的接口的开销
3.根据带宽自动计算开销:
[AR2-isis-1]auto-cost enable 开启自动计算
[AR2-isis-1]bandwidth-reference 设置参考带宽
优先级由高到低: 接口> 全局 > 自动计算
ISIS报文及状态机
报文
IIH报文
类似于OSPF的Hello报文,用来建立和维护邻居关系,广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH。
CSNP报文
全序列号PDU,类似于OSPF的DD报文,用来发布链路状态通告摘要,分为L1 CSNP、L2 CSNP。
PSNP报文
部分序列号PDU,类似于OSPF的LSR报文、LSAck报文,分为L1 PSNP、L2 PSNP。
*如果PSNP携带的摘要LSP,序列号为全0 则表示LSR 用来请求完整的链路状态信息,序列号不为全0 则表示LSAck 用来确认收到的链路状态信息。
LSP报文
链路状态PDU,类似于OSPF的LSU报文,用于交换链路状态信息。LSP分为两种:Level–1 LSP和Level–2 LSP。Level–1 LSP由Level-1路由器传送,Level–2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP。
状态机
状态机:
1.down:设备接口未使能ISIS。
2.init:收到hello报文,但hello报文中不存在自身的MAC地址。
3.up:收到的hello报文中携带了自身的MAC地址。
ISIS邻接关系建立过程
广播网络
1.设备处于down状态,没有使能ISIS
2.设备处于init状态,发送hello报文,收到hello报文,但hello报文中不存在自身的MAC地址
3.设备处于up状态,收到的hello报文中携带了自身的MAC地址
*设备根据交互的hello报文进行DIS设备的选举(DIS类似于OSPF中的DR)
根据报文内的优先级值,值越大越优先;如果值相等,则比较接口的MAC地址,地址越大越优先
*DIS主要用于在广播型网络中连接所有物理设备的虚拟设备,负责伪节点LSP的通告和维护
*DIS是可以抢占的
*DIS没有明确的备份设备,广播网络内的所有设备都在监听DIS
选举为DIS的设备会周期10/3s发送hello报文,这样可以确保DIS出现故障时能够被更快速地被发现.
*设备接口优先级值为0,也会参与DIS的选举
4.邻接关系建立完成后,设备会通告自身所有的LSP通过LSP报文给DIS设备(目标地址为0180-c200-0014)
5.DIS设备会周期(10s)通告CSNP报文(会携带DIS设备具有的所有LSP信息摘要)(目标地址为0180-c200-0014)
6.广播内的其他设备收到CSNP报文后,根据报文内的摘要进行对比自身的LSDB
1.如果自身LSDB和CSNP报文携带的摘要同步,则不做理会
2.如果自身LSDB不存在CSNP报文携带的摘要,则发送PSNP报文,请求自身缺少的LSP(目标地址为0180-c200-0014)
7.DIS设备收到PSNP报文后,回复LSP报文
IS-IS中DIS与OSPF协议中DR(Designated Router)的区别:
- 在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举。
- 在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
- 在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系。
p2p网络
1.设备处于down状态,没有使能ISIS
2.设备处于init状态,发送hello报文,收到hello报文,但hello报文中不存在自身的system-id
3.设备处于up状态,收到的hello报文中携带了自身的system-id地址
*P2P网络不会选举DIS
4.邻接关系建立完成后,会将自身完整的LSP信息通过LSP报文发送
5.对端收到LSP报文后,会发送PSNP报文进行确认
6.LSP同步完成后,发送CSNP报文进行LSDB的同步检测
如果收到的CSNP报文和自身的LSDB同步,则不予理会
如果收到的CSNP报文和自身的LSDB不同步,则会发送PSNP报文进行请求
收到PSNP报文后,会发送LSP报文
收到LSP报文,回复PSNP进行确认
ISIS路由计算
区域内路由计算
ISIS根据学习到的LSP,分析所有链路状态,先通过SPF算法计算出拓扑树,SPF算法计算出拓扑树后,直接将路由信息当作叶子挂载在拓扑节点上。
所有的链路开销默认都为10,路由的开销是迭加计算的。
区域间路由计算
L2设备如何计算L1设备的路由信息?
L1/2设备会将L1的路由信息 当作叶子挂载在自身产生的L2-LSP上
路由信息挂载时,会携带明细的开销值
从L2设备视角看,该路由相当于是L1/2设备的路由信息
L1设备如何计算L2设备的路由信息?
L1设备组成的非骨干区域类似于OSPF的特殊区域
即L1设备通过缺省路由访问L2设备的路由信息
*L1设备的缺省路由如何得到?
L1设备收到L1/2设备产生的L1-LSP中 ATT bit置位为1
自动生成一条下一跳指向L1/2设备的缺省路由
*L1/2的L1-LSP中ATT bit如何置位?
1.产生该L1-LSP的设备一定是 L1/2设备
2.L1/2设备存在L2的邻居关系
3.L1/2设备收到不同区域的L2-LSP
L1访问L2设备路由信息的次优问题:
L1设备通过ATT bit计算的缺省路由开销,都是到达L1/2设备的开销,没有L2设备路由的明细开销,容易出现次优路径。
如果解决次优路径?
通过路由渗透实现
*什么是路由渗透?
就是L1/2设备上 执行L2路由 引入到 L1
[AR2-isis-1]import-route isis level-2 into level-1
多台L1/2设备,都要执行渗透
区域外路由计算
ISIS本质上不区分内外部路由,都是将路由信息当作叶子挂载在自身的LSP上,ISIS的外部路由,在设备引入后,通过分片LSP进行携带。
L1/2设备进行路由渗透时,会把内部、外部路由信息都当作叶子节点挂载在L1的LSP上。
ISIS设备在引入外部路由时,要根据设备的级别来执行引入,即外部路由默认的引入级别为L2。
L1/2设备在执行外部路由引入时,必须是L1-2的引入,因为单一的级别不支持路由渗透的操作
注意:ISIS外部路由的引入,根据设备的级别 指定引入路由时的级别。
ISIS路由更新和撤销、开销风格
内部路由更新和撤销
内部路由:都是更新式的路由更新 和 更新式的路由撤销
更新:1200s ,seq 是顺序排列的值 携带需要更新的信息
撤销:1200s ,seq 是更新的seq+1(大于原序列号) 不携带需要撤销的信息
外部路由更新和撤销
外部路由: 存在更新式更新、撤销 也存在时间老化的撤销
更新:第一条外部路由引入,时间1200s,seq是顺序排列的值,携带更新的信息
第二条外部路由引入,时间1200s,seq是上一个更新的seq+1,携带更新的信息
后面以此类推......
撤销:当存在多条外部路由,撤销其中一条,时间1200s,seq是上一个更新的seq+1,不携带需要撤销的信息
如果所有外部路由都被撤销,时间 0s,seq 是上一个更新的seq(不变) ,不携带撤销的信息
开销风格
开销风格: 发送报文类型 接收报文类型
窄风格(默认的) 窄 窄
窄兼容 窄 窄、宽
兼容 窄、宽 窄、宽
宽风格 宽 宽
宽兼容 宽 窄、宽
相邻设备如果开销风格不一致,不会影响邻居的建立,会影响路由信息的计算
ISIS认证、汇总、过滤
认证
1.接口认证:对于ISIS邻居建立的Hello报文认证
[AR1-GigabitEthernet0/0/0]isis authentication-mode md5 plain Huawei@123 ?
也可以在接口认证时指定是发送L1-hello认证 还是L2-hello认证
接口认证配置时,可以设置send-only参数,表示只发送带有认证的hello报文,本端不检测对方的hello认证(防止修改认证密码时邻居断开)
2.区域认证:L1的LSP和SNP报文做认证
[AR1-isis-1]area-authentication-mode md5 plain Huawei@123 ?
all-send-only 发送LSP和SNP报文时携带认证,但是接收对端的LSP和SNP报文不做检测
snp-packet 对SNP报文选择认证,LSP报文做认证
[AR1-isis-1]area-authentication-mode md5 plain Huawei@123 snp-packet ?
authentication-avoid 发送时不携带认证,接收时不做认证检测
send-only 发送时携带认证,接收时不做认证检测
*做区域认证,默认对LSP和SNP报文进行认证
通过参数snp-packet,来指定是否对SNP报文做认证
1.LSP报文一定携带认证
2.SNP报文可以通过参数配置是否携带认证
3.路由域认证:L2的LSP和SNP报文做认证
[AR4-isis-1]domain-authentication-mode md5 plain Huawei
和区域认证配置相同,且参数也相同,只是报文的级别发生了变化
汇总
1.内部路由汇总
1.可以在ISIS视图下使用summary命令执行汇总操作
[AR4-isis-1]summary 4.4.4.0 255.255.255.0
2.必须是叶子路由挂载的节点设备来执行路由汇总
3.如果是L1/2设备执行了渗透,则汇总时需要指定汇总的级别为L1
2.外部路由汇总
和内部路由汇总一致
*汇总条目和明细条目关系:
1.从LSP上来看,内部路由汇总:汇总后的LSP信息会直接替换明细的LSP信息
2.从LSP上来看,外部路由汇总:汇总后不会存在分片LSP,只会使用实节点LSP进行携带
3.汇总路由会继承明细路由最小的开销值
过滤
1、在ISIS视图下使用:
filter-policy import:对于接收到的LSP,计算路由后是否加入到路由表中
[AR1]acl 2000
[AR1-acl-basic-2000]rule 5 deny source 4.4.4.0 0
[AR1-acl-basic-2000]rule 10 permit
[AR1]isis
[AR1-isis-1]filter-policy 2000 import
filter-policy export:针对于外部路由信息,在发出时过滤
[AR4]acl 2000
[AR4-acl-basic-2000]rule 5 deny source 192.168.4.4 0
[AR4-acl-basic-2000]rule 10 permit
[AR4]isis
[AR4-isis-1]filter-policy 2000 export
*该命令只在ASBR设备上引入外部路由后生效
2、filter 过滤:L1/2设备在路由渗透时执行的操作
#
acl number 2000
rule 5 deny source 1.1.1.1 0
rule 10 permit
#
isis
import-route isis level-1 into level-2 filter-policy 2000
*可以做L2到L1的过滤,也可以执行L1到L2的过滤
*因为ISIS不区分内外部路由,且所有的路由都是叶子挂载的