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邻居关系建立

影响邻居建立的因素

  1. 路由器的类型要一致(L1—L2路由器不能建立)
  2. L1邻居建立路由器的区域ID要在同一区域
  3. 互连接口在同一网段(P2P的网络协议可以配置忽略检查isis peer-ip-ignore )
  4. 接口的网络类型要一致
  5. 认证要一致
  6. 接口MTU要一致
  7. SYS ID不能一致

广播网络

邻居关系有Level-1和Level-2两种

三次握手

  1. 在邻居状态为DOWN时,发出IIH,报文中的邻居列表为空
  2. 邻居收IIH报文,进行参数协商,发现IIH报文中的邻居列表为空,进入init状态,并且向邻居回复IIH报文,报文中的邻居列表为邻居接口的MAC地址
  3. 邻居收到IIH报文,发现IIH报文中的MAC地址为自己接口的MAC地址,进入UP状态,并且向邻居回复IIH报文,报文中的邻居列表为邻居接口的MAC地址。

image-20231228205410806

P2P网络

能通过三次握手或者二次握手建立邻居关系,华为默认为三次握手

二次握手

  1. 在邻居状态为DOWN时,发出IIH报文,邻居收到IIH报文,进行参数协商,协商通过直接进入UP,并且回复IIH
  2. 收到IIH报文,进行参数协商,协商通过由DOWN直接进入UP。
  3. 缺点:容易造成单通故障

三次握手

与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网络类型同步过程(标准)

  1. 当邻居建立完成之后,会相互发送CSNP报文,报文中包含LSDB中LSP ID
  2. 收到邻居发送的CSNP报文之后,检查缺少哪些LSP ID,然后缺少的针对LSP ID发送PSNP进行请求
  3. 收到PSNP进行请求,发送LSP报文进行回复,LSP报文中包含邻居请求的LSP
  4. 邻居收到LSP后,回复PSNP报文进行确认

华为P2P网络类型同步过程

  1. 当邻居建立完成之后,直连发送自身所有的LSP,邻居收到LSP报文也会回复PSNP报文
  2. 以下步骤与标准一致

避免第一份CSNP报文丢失导致数据库无法同步

MA网络类型同步过程

  1. 当邻居建立完成之后,直连发送自身所有的LSP

  2. 网络中会选出DIS,DIS会发出CSNP报文,CSNP报文中包含自身的LSP ID和收到的LSP ID

  3. 非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默认的度量值)

  1. 存在4种COST度量方式,但是默认只会使用一种default度量方式
  2. COST值范围0-63,2^6
  3. 不能携带tag
  4. 能区分内部路由以及外部路由

宽度量 (进程下配置cost-style wide)

  1. 只会使用一种default度量方式
  2. COST值范围增加,2^24
  3. 支持携带tag
  4. 不能区分内部路由以及外部路由

如果邻居之间的度量类型不一致,不影响邻居关系建立,但是导致路由无法计算。

L1区域的路由器通过默认路由访问到其他的区域,默认路由的产生主要是通过L1-L2路由器产生的LSP中的ATT=1,当L1路由器收到ATT=1的LSP会生成默认路由指定L1-L2路由器。

如果收到多条ATT=1的LSP,会根据到达那条LSP的COST最小生成默认路由,相等就负载。

产生ATT=1的LSP的条件:

  1. 路由器类型为L1-L2
  2. 必须有L1和L2的邻居关系
  3. 和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区域下的所有路由器都要配置

注意问题:

  1. 不同的认证分类对不同的ISIS报文生效,通过在不同的报文中添加认证的TLV实现
  2. 配置不同的认证分类是无法通过认证,因为认证的报文类型不同

认证方式: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)

对路由进行标记,方便做策略是匹配路由

如何产生标记:

  1. 路由是引入时
  2. 路由汇总时
  3. 路由泄露时

注意:对路由进行标记时,注意先把度量类型改成宽度量

ISIS路由引入:默认情况只向L2区域引入路由,需要手工调整引入的区域

ISIS路由汇总

  1. L1-L2路由上汇总
  2. 在产生明细路由的设备上进行汇总

汇总路由时,不需要区分路由的类型(外部/内部)

  • 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区域产生
  • PSNP包含部分LSDB中的LSP摘要信息,能够对LSP进行请求和确认。

    • PSNP 部分序列号报文,相当OSPF LSR或者LSACK
      • Level 1 PSNP 只会在L1区域产生
      • Level 2 PSNP 只会在L2区域产生

IS-IS PDU数据包起始报文结构

image-20231228213205058

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报文

image-20231228213239749

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 请求和确认链路状态信息

ISIS
https://www.intx.work/posts/7a7bac40.html
发布于
2015年8月20日
更新于
2019年12月1日
许可协议