ISIS
IS-IS地址结构
OSI
NSAP地址用于表示CLNP网络中的设备地址,一台设备一个NSAP地址(NSAP地址相当于TCP/IP的IP地址)
NSAP组成:8–20字节
- IDP:相当于IP网络中主网络号
- AFI:1个字节 49.私有(表示地址分配机构和地址格式)
- IDI:(用来标识域)
DSP:相当于IP网络中子网号+主机号+端口号
- High Oreder DSP:相当于IP网络中子网号
- system id:相当于IP网络主机号
- select:相当于IP网络端口号
TCP/IP
AFI+IDI+High Oreder DSP=ISIS区域ID
system id = ISIS的router id
- 固定为6个字节:0001.0001.0001
- ISIS的system id只能手工指定(OSPF可能自动手动)
select: 服务选择位,1个字节,在IP网络中固定为00,表示在IP网络下运行
- 当select标示为00时,NSAP地址称NET地址
- NET地址=ISIS区域ID+ISIS system id+select
- 运行ISIS的路由器必须存在一个NET地址
NET地址
NET地址用于标识ISIS网络中的路由器,区域内唯一,一台路由器最多配三个区域地址,这些区域地址使用相同的System ID
NET地址格式:xx.xxxx.xxxx.xxxx.00
区域号.主机号.主机号.主机号.00
ISIS路由器分类
Level-1路由器
- Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,属于不同区域的Level-1路由器不能形成邻居关系。Level-1路由器只负责维护Level-1的链路状态数据库LSDB,该LSDB包含本区域的路由信息。
- 到本区域外的报文转发给最近的Level-1-2路由器。
- Level-1路由器必须通过Level-1-2路由器才能连接至其他区域。
Level-2路由器
- Level-2路由器负责区域间的路由,它可以与位于同一区域或者不同区域的Level-2及Level-1-2路由器形成邻居关系。
- Level-2路由器维护一个Level-2的LSDB,该LSDB包含IS-IS所有区域的路由信息。
- 所有Level-2级别(即形成Level-2邻居关系)的路由器组成路由域的骨干网,负责在不同区域间通信。路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性。
Level-1-2路由器(缺省)
- 同时属于Level-1和Level-2的路由器称为Level-1-2路由器,它可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻居关系;也可以与同一或者不同区域的Level-2路由器形成Level-2的邻居关系;还可以与同一或不同区域的Level-1-2路由器形成Level-2的邻居关系。
- Level-1路由器必须通过Level-1-2路由器才能连接至其他区域。
- Level-1-2路由器维护两个LSDB,Level-1的LSDB 用于区域内路由,Level-2的LSDB用于区域间路由。
IS-IS的网络类型
- 点对点网络,对应PPP、HDLC等链路
对于NBMA网络,如帧中继,需对其配置子接口,并注意子接口类型应配置为P2P。IS-IS没有专门对应于点到多点(P2MP)链路的网络类型。
- 广播网络,对应Ethernet等链路
DIS
- 在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS。
- Level-1和Level-2的DIS是分别选举的。
- DIS优先级数值最大的被选为DIS(优先级默认为64,范围0-127)。如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会被选中。
- 同一台路由器在不同level的DIS选举中可以设置不同的优先级。
- 优先级为0的路由器也参与DIS的选举,且DIS选举支持抢占。
- 同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系,但LSDB的同步仍然依靠DIS来保证。
- DIS用来创建和更新伪节点,并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。
伪节点
- 伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和一个字节的Circuit ID(非0值,Circuit Id为链路的一个编号)标识。
- 使用伪节点可以简化网络拓扑。
- 当网络发生变化时,需要产生的LSP数量较少,减少进行SPF运算时的资源消耗。
ISIS网络类型与OSPF网络类型比较
OSPF | 链路层协议 | ISIS |
---|---|---|
Broadcast | 以太网 | Broadcast |
NBMA | 帧中继 | - |
P2P | PPP/HDLC | P2P |
P2MP | - | - |
ISIS DIS与OSPF DR/BDR的不同点
- 在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举。
- 在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
- 在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间。
ISIS邻居关系建立
影响邻居建立的因素
- 路由器的类型要一致(L1—L2路由器不能建立)
- L1邻居建立路由器的区域ID要在同一区域
- 互连接口在同一网段(P2P的网络协议可以配置忽略检查isis peer-ip-ignore )
- 接口的网络类型要一致
- 认证要一致
- 接口MTU要一致
- SYS ID不能一致
广播网络
邻居关系有Level-1和Level-2两种
三次握手
- 在邻居状态为DOWN时,发出IIH,报文中的邻居列表为空
- 邻居收IIH报文,进行参数协商,发现IIH报文中的邻居列表为空,进入init状态,并且向邻居回复IIH报文,报文中的邻居列表为邻居接口的MAC地址
- 邻居收到IIH报文,发现IIH报文中的MAC地址为自己接口的MAC地址,进入UP状态,并且向邻居回复IIH报文,报文中的邻居列表为邻居接口的MAC地址。
P2P网络
能通过三次握手或者二次握手建立邻居关系,华为默认为三次握手
二次握手
- 在邻居状态为DOWN时,发出IIH报文,邻居收到IIH报文,进行参数协商,协商通过直接进入UP,并且回复IIH
- 收到IIH报文,进行参数协商,协商通过由DOWN直接进入UP。
- 缺点:容易造成单通故障
三次握手
与MA网络的三次握手基本一致,不同在于IIH报文中的邻居列表为邻居的sys id。
两种邻居建立过程比较
P2P | Broadcast | |
---|---|---|
Hello报文 | P2P IIH | Level-1/Level-2 LAN IIH |
Hello报文形式 | 单播 | 组播 |
Hello Timer | 10s | 10s,DIS是3.3s(华为3s) |
有无DIS | 无 | 有 |
邻接关系数量 | 1个 | 多个 |
ISIS LSDB同步
P2P网络类型同步过程(标准)
- 当邻居建立完成之后,会相互发送CSNP报文,报文中包含LSDB中LSP ID
- 收到邻居发送的CSNP报文之后,检查缺少哪些LSP ID,然后缺少的针对LSP ID发送PSNP进行请求
- 收到PSNP进行请求,发送LSP报文进行回复,LSP报文中包含邻居请求的LSP
- 邻居收到LSP后,回复PSNP报文进行确认
华为P2P网络类型同步过程
- 当邻居建立完成之后,直连发送自身所有的LSP,邻居收到LSP报文也会回复PSNP报文
- 以下步骤与标准一致
避免第一份CSNP报文丢失导致数据库无法同步
MA网络类型同步过程
当邻居建立完成之后,直连发送自身所有的LSP
网络中会选出DIS,DIS会发出CSNP报文,CSNP报文中包含自身的LSP ID和收到的LSP ID
非DIS邻居收到CSNP报文,会对比自身的LSDB,
如果发现CSNP报文中缺少自身的LSP,发送LSP报文携带缺少的LSP;
如果发现CSNP报文中的LSP本路由器缺少,会发送PSNP报文进行请求,其他邻居收到PSNP报文后,只有DIS会回复LSP报文
MA网络的LSP报文是没有确认机制
MA网络的CSNP报文是会由DIS周期性10S发送一次,主要用于确保MA网络中的数据库同
DIS是在邻居关系建立之后才会进行选举,选举时间为2个HELLO包时间
ISIS路由计算
默认情况下ISIS的COST计算是基于接口的,每个接口的固定COST值为10
auto-cost enable 在进程下配置,开启COST计算基于接口的带宽(注意在所有设备都要调整)
窄度量(ISIS默认的度量值)
- 存在4种COST度量方式,但是默认只会使用一种default度量方式
- COST值范围0-63,2^6
- 不能携带tag
- 能区分内部路由以及外部路由
宽度量 (进程下配置cost-style wide)
- 只会使用一种default度量方式
- COST值范围增加,2^24
- 支持携带tag
- 不能区分内部路由以及外部路由
如果邻居之间的度量类型不一致,不影响邻居关系建立,但是导致路由无法计算。
L1区域的路由器通过默认路由访问到其他的区域,默认路由的产生主要是通过L1-L2路由器产生的LSP中的ATT=1,当L1路由器收到ATT=1的LSP会生成默认路由指定L1-L2路由器。
如果收到多条ATT=1的LSP,会根据到达那条LSP的COST最小生成默认路由,相等就负载。
产生ATT=1的LSP的条件:
- 路由器类型为L1-L2
- 必须有L1和L2的邻居关系
- 和L2的邻居关系区域ID不能相同
IS-IS路由渗透
为什么需要路由渗透:为了避免次优路径的问题
路由渗透:在L1-L2路由器将L2区域的明细渗透到L1区域,使L1区域存在L2的明细路
import-route isis level-2 into level-1
路由渗透时,要注意使用策略控制,否则会使所有L2的路由都进入到L1区域,导致L1区域设备性能消耗过大
路由渗透后的环路以及次优问题防止:使用LSP 度量值中的UP/DOWN位,当路由从L2区域渗透到L1区域,会将路由度量值中的DOWN位置位,L1-L2收到DOWN位置位能接收但是不会参与计算。
IS-IS收敛特性:
支持算法
FULL-SPF:与OSPF的一致
I-SPF:与OSPF的一致
PRC:OSPF区域内路由发生变化,OSPF触发的是LSA1/2,会引起I-SPF计算,只有LSA3/5/7才会PRC计算;ISIS区域内路由发生变化,由于ISIS的路由信息和拓扑信息采用不同的TLV承载,实现拓扑和网段分离,所以当区域内路由发生变化只会触发PRC算法。
保证网络的稳定性
- 智能定时器(与OSPF的智能定时器功能一致):当网络变化频繁时,智能定时器的间隔时间会自动延长,避免网络的抖动
提高路由收敛
LSP快速扩散:优先发送发送变化的LSP
按优先级收敛:能够让某些特定的路由优先收敛的一种技术
IS-IS认证
认证分类:
接口认证:只对Level-1和Level-2的Hello 报文进行认证
区域认证:对Level-1的SNP和LSP报文进行认证
- 注意在L1区域下的所有路由器都要配置
路由域认证:对Level-2的SNP和LSP报文进行认证
- 注意在L2区域下的所有路由器都要配置
注意问题:
- 不同的认证分类对不同的ISIS报文生效,通过在不同的报文中添加认证的TLV实现
- 配置不同的认证分类是无法通过认证,因为认证的报文类型不同
认证方式:Null、明文、MD5
IS-IS LSP分片扩展
用于当一条LSP携带的路由信息过多,256个分片都无法满足携带路由信息时需要使用分片扩展功能
分片扩展功能实现:使用虚拟SYS ID,每一个虚拟SYS ID能支持256个分片,每一个路由器能支持50个虚拟SYS ID(虚拟SYS ID必须是唯一)
Mode-1
- 用于网络中的部分路由器不支持LSP分片扩展特性的情况
- 虚拟系统参与路由SPF计算,初始系统发布的LSP中携带了到每个虚拟系统的链路信息。类似地,虚拟系统发布的LSP也包含到初始系统的链路信息。这样,在网络中虚拟系统看起来与初始系统相连的真实路由器是一样的。
- 虚拟系统的LSP中包含和原LSP中相同的区域地址和overload bit。如果还有其它特性的TLV,也必须保持一致。
- 虚拟系统所携带的邻居信息指向初始系统,metric为最大值(窄度量情况下最大值为64)减1;初始系统所携带的邻居信息指向虚拟系统,metric必须为0。这样就保证了其它路由器在进行路由计算的时候,虚拟系统一定会成为初始系统的下游节点。
- 如拓扑所示:R2是不支持分片扩展的路由器,R1设置为mode-1的分片扩展,R1-1和R1-2是R1的虚拟系统,R1将一部分路由信息放入R1-1和R1-2的LSP报文中向外发送。R2收到R1,R1-1和R1-2的报文时,认为对端有三台独立的路由器,并进行正常的路由计算。同时R1到R1-1和R1-2的开销都是0,所以,R2到R1的路由开销值与R2到R1-1路由开销值都相等。
- 虚拟系统产生的LSP包含的邻居只有初始系统(邻居类型为点到点),且虚拟系统仅当做叶子考虑。
Mode-2
- 用于网络中所有路由器都支持LSP分片扩展特性的情况。在该模式下,虚拟系统不参与路由SPF计算,网络中所有路由器都知道虚拟系统生成的LSP实际属于初始系统。
- R2支持分片扩展,R1设置为Mode-2的分片扩展,R1将一部分路由信息放入到R1-1和R1-2的LSP报文中向外发送。当R2收到R1-1和R1-2的LSP时,通过IS Alias ID TLV知道他们的初始系统是R1,则把R1-1,R1-2所发布的信息都视为R1的信息。
IS-IS管理标记(Tag)
对路由进行标记,方便做策略是匹配路由
如何产生标记:
- 路由是引入时
- 路由汇总时
- 路由泄露时
注意:对路由进行标记时,注意先把度量类型改成宽度量
ISIS路由引入:默认情况只向L2区域引入路由,需要手工调整引入的区域
ISIS路由汇总
- L1-L2路由上汇总
- 在产生明细路由的设备上进行汇总
汇总路由时,不需要区分路由的类型(外部/内部)
summary 172.16.0.0 255.255.252.0
默认为L2区域产生summary 172.16.0.0 255.255.252.0 avoid-feedback
summary 172.16.0.0 255.255.252.0 avoid-feedback generate_null0_route
针对汇总路由不会在接收并且在本地路由表中产生一条指定null 0的汇总路由
ISIS报文格式
ISIS的报文格式是基于TLV(类型,长度,值),方便做扩展,支持新的特性;
能够实现ISIS的拓扑信息和路由信息分离,更好的支持PRC算法。
HELLO PDU
- 广播网中的Level-1 IS-IS使用Level-1 LAN IIH。发送报文的目的MAC:01-80-C2-00-00-14
- 广播网中的Level-2 IS-IS使用Level-2 LAN IIH。发送报文的目的MAC:01-80-C2-00-00-15
- 非广播网络中则使用P2P IIH。
P2P IIH中相对于LAN IIH来说,多了一个表示本地链路ID 的Local Circuit ID字段,缺少了表示广播网中DIS的优先级的Priority字段以及表示DIS和伪节点System ID的LAN ID 字段。
通过填充字段将IIH报文扩展到MTU((1497)大小,用于邻居之间协商发送报文的大小。
IIH报文中需要协商参数:
- SYS ID:不能一致
- AREA ID:L1邻居必须一致
- IP地址:必须在同一网段,掩码可以不一致(与P2P,MA无关,但P2P配置isis peer-ip-ignore就不检查了,MA无此功能)
- 接口支持的区域类型要一致
- 接口的MTU必须一致:协商MTU时,没有专门的MTU字段,通过在HELLO包中添加padding字段实现(在P2P的网络中,只有邻居关系建立之前会协商)
- 认证(可选配置):类型,秘钥必须一致
LSP PDU(类似于OSPF的LSA)
- Level-1 LSP由Level-1 IS-IS传送。
- Level-2 LSP由Level-2 IS-IS传送。
- Level-1-2 IS-IS 则可传送以上两种LSP。
- LSP 报文中包含的主要字段有ATT字段、OL字段和IS-Type字段。其中ATT用于标识该路由是L1/L2发送的,OL字段后续部分会介绍,IS-Type用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS(01表示Level-1,11表示Level-2)。
- LSP的刷新间隔为15分钟;老化时间为20分钟,但是一条LSP的老化除了要等待20分钟外,还要等待60秒的零老化时延;LSP重传时间为5秒。
LSP类型区分
实点LSP:
相当于OSPF中的LSA 1类,每台路由器都会产生
用于描述本台路由器拓扑信息以及路由信息
虚节点LSP:
相当于OSPF中的LSA 2类,由DIS路由器产生
用于描述MA路由的拓扑信息,没有携带路由信息
SNP PDU为LSDB的摘要信息,主要用于维护LSDB的完整与同步
CSNP包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10 秒);在点到点链路上,CSNP 只在第一次建立邻接关系时发送。
- CSNP完全序列号报文,携带LSP ID,相当于OSPF DD报文
- Level 1 CSNP 只会在L1区域产生
- Level 2 CSNP 只会在L2区域产生
- CSNP完全序列号报文,携带LSP ID,相当于OSPF DD报文
PSNP包含部分LSDB中的LSP摘要信息,能够对LSP进行请求和确认。
- PSNP 部分序列号报文,相当OSPF LSR或者LSACK
- Level 1 PSNP 只会在L1区域产生
- Level 2 PSNP 只会在L2区域产生
- PSNP 部分序列号报文,相当OSPF LSR或者LSACK
IS-IS PDU数据包起始报文结构
Intra domain routing protocol discriminator:IS-IS PDU中,该字段不变,都为0x83。
PDU header length indicator:标识该固定头部字段的长度。
Version/protocol ID extension:始终为1。
System ID length:用来表示system ID长度,固定为6B。
PDU type:标识PDU类型。
Version:该字段和上一个version字段一样。
Reserve:当前设置为全0。
Max areas:表示该IS所支持的最大区域数量,该字段为3表示所支持的最大区域地址数为3。
IIH报文点到点
Circuit type:表示发送该PDU的层级。如果改为被置位0,那么该PDU将被忽略。
System ID(发送该PDU的IS):是指始发该IIH的路由器的系统ID。
Holding time:是指邻居路由器等待始发路由器发送下一个IIH的时间间隔。
PDU length:是指整个PDU数据包的长度。
Local circuit ID:由始发路由器发送hello数据包时分配给这条电路,并且在路由器的接口上是唯一的。在点到点链路的另一端,hello数据包中的电路ID可能包含也可能不包含相同的值。
Area address TLV:始发路由器的区域地址。
IP interface address TLV:是指发送PDU数据包的接口地址或IP地址。
Protocol supported TLV:用来表示始发路由器支持的协议类型,如IP/CLNP/IPv6。
Restart option TLV:用于优雅重启动部分。
Point-to-point adjacency state TLV:支持三次握手功能。
Multi topology TLV:支持多拓扑功能。
Padding TLV:支持IIH填充。
LSP报文
PDU length:整个PDU的长度。
Remaining lifetime(Holdtime):老化时间,用于标示一个LSP的新旧
范围:0—1200S
老化时间倒数计算,1200最新,0表示LSP需要老化
泛洪周期:900S
老化时间比较越小越优先,越旧越稳定
LSP ID:用于标示唯一一条LSP
组成:SYS ID + 虚节点标示 + 分片标示
SYS ID用于表示LSP的产生路由器
当虚节点标示00表示为实点LSP,非00为虚节点LSP
分片标示用于表示LSP是否被分片
- 0000.0000.0001.00-00 常规LSP。
- 0000.0000.0001.01-00 伪节点LSP。
- 0000.0000.0001.00-01 常规LSP的一个分片。
Sequence number:LSP的序列号
从0开始,每次加1,最大为2^32-1。
范围:0X00000001—–0XFFFFFFFF
序列号比较越大越优先,越大越新
Checksum:校验和
- 校验和是从LSP Remaining lifetime之后开始的,一直校验到最后。越大越新
P位:区域修复位,标示是否支持骨干区域修复,类似OSPF的虚连接,当前固定为0
ATT位:区域连接位,标示是否连接多个区域,一般在L1-L2路由器出现
OL位:overload超载位,标示路由器是否进入超载状态
IS type:路由器类型位,表示路由器支持的路由器角色
Protocol supported TLV:用来表示始发路由器支持的协议类型,如IP/CLNP/IPv6。
Area address TLV:始发路由器的区域地址。
IS reachability TLV:用来列出始发路由器的邻居。
IP interface address TLV:是指发送PDU数据包的接口地址或IP地址。
IP internal reachability TLV:路由可达信息
- 用于通告该LSP的、路由器直连的路由选择域内的IP地址和相关掩码信息。该TLV不会出现在伪节点的LSP中。
CSNP和PSNP
PDU length:整个PDU的长度。
Source-ID:始发路由器系统ID。
Start LSP-ID
- 开始于0000.0000.0000.00-00。
- 结束于ffff.ffff.ffff.ff-ff。
LSP entries:LSP摘要信息
ISIS报文与OSPF报文比较
OSPF | ISIS | 作用 |
---|---|---|
Hello | IIH | 建立和维护邻居关系 |
DD | CSNP | 通告链路状态数据库 (LSDB)中所有摘要信息 |
LSU | LSP | 传输链路状态信息 |
LSR\LSAck | PSNP | 请求和确认链路状态信息 |