ISIS协议基础知识

2023-05-16

前言

介绍

ISIS,中间系统到中间系统的网络协议,最初是OSI组织为了他的CLNP(类似于TCP/IP中的IP网络)而设计的动态路由协议,后IETF对其进行修改和填充,现可以在TCP/IP和OSI环境中使用,称为:集成IS-IS。ISIS是采用SPF算法的链路状态协议

概念:

COST开销

ISIS的所有链路开销,默认为10,不和带宽相关。

ISIS特点:

1、支持CLNP网络和IP网络或两者双重网络。

2、集成ISIS工作在数据链路层

注:纯ISIS仅支持CLNP网络,现在的都是支持IP网络的集成ISIS

常用术语

CLNS:无连接网络服务,OSI协议簇使用CLNS来提供无连接的数据传送。

CLNS由以下三个协议构成:

  • CLNP:类似于TCP/IP中的IP协议
  • ISIS:中间系统间的路由协议,即路由器之间的协议(OSPF,RIP等)
  • ES-IS:主机系统与中间系统间的协议(相当于IP中的ARP,ICMP等)
  • NSAP:OSI协议通过NSAP来寻址OSI网络中传输传输层的各种服务(类似于IP)

地址格式

NET(Network Entity Title)

NET是一类特殊的NSAP特殊地址,在路由器上配置ISIS,仅需要考虑NET地址即可,NSAP不需要关注。NET长度最小为8B,最大为20B。

图1 IS-IS地址结构示意图

Area ID(区域地址)

区域地址由IDP和DSP中的Igh Order DSP一起,用于标识路由域和区域。这被称为区域地址。区域地址相同于OSPF中的区域号。同一个L1区域内的所有路由器必须具有相同的区域地址。L2区域内的路由器可以具有不同的区域地址。

System ID 用来在区域内唯一性标识路由器。一般采用R-ID与System ID对应。

SEL 类似于协议标识符,不同的传输协议对应不同的SEL,在IP上SEL为00。

例子 49.0001.aaaa.bbbb.cccc.00

Area address=49.0001; System ID=aaa.bbb.ccc ;SEL=00

报文格式

IS-IS报文是直接基于数据链路层协议封装的,每个报文由报头和TLV字段组成,其中报文又分为通用报头和专用报头,每种报文的通用报头(前8 Bye)是一样的,但是专用报文根据报文的不同而不同,并且每种报文所支持的TLV不同。

图2 报文格式

其中对通用报文(IS-IS 头部)中主要字段的解释如下:

  • 域内路由协议鉴别符:IS-IS 的网络层标识,值为0x83

  • 头长度:数据包报头的字节数

  • 版本或协议号拓展号:当前设置为1

  • System-ID 长度:标识源路由器的 System-ID 长度,值为0表示长度为 6Byte,值为255表示长度为 0Byte。

    System-ID 长度范围为 1~8Byte,华为的VRP系统使用6Byte。

  • PDU类型:表示IS-IS报文的类型。

  • 版本:当前值为1

  • 预留位:值为0

  • 最多区域地址数:值为0表示最多支持的区域地址为3。

PDU类型说明:

类型值PDU类型简称
15Level-1 LAN IS-IS Hello PDUL1 LAN IIH
16Level-2 LAN IS-IS Hello PDUL2 LAN IIH
17Point-to-Point IS-IS Hello PDUP2P IIH
18Level-1 Link State PDUL1 LSP
20Level-2 Link State PDUL2 LSP
24Level-1 Complete Sequence Numbers PDUL1 CSNP
25Level-2 Complete Sequence Numbers PDUL2 CSNP
26Level-1 Partial Sequence Numbers PDUL1 PSNP
27Level-2 Partial Sequence Numbers PDUL2 PSNP

常见的TLV字段及功能

TLV Code名称所应用的PDU类型
1Area Addresses携带源路由器的区域地址IIH、LSP
2IS Neighbors(LSP)标识邻居路由器和伪节点LSP
4Partition Designated Level2 IS标识L2的LSPL2 LSP
6IS Neighbors(MAC Address)标识邻居路由器的mac地址LAN IIH
7IS Neighbors(SNPA Address)标识邻居路由器的System-idLAN IIH
8Padding 填充将Hello包填充至MTU大小IIH
9LSP Entries描述序列号报文SNP
10Authentication Information 认证信息报文的认证信息IIH、LSP、SNP
128IP Internal Reachability Information IP可达性信息描述域内部路由LSP
129Protocols Supported 支持的协议描述支持的上层协议(IP或CLNP)IIH、LSP
130IP External Reachability Information IP可达性信息描述域外路由L2 LSP
131Inter-Domain Routing Protocol Information描述域间路由协议信息L2 LSP
132IP Interface Address IP接口地址描述启用了IS-IS进程的接口IP地址信息IIH、LSP

区域及路由器类型

区域类型

Level-1 区域:常规区域,由L1路由器组成

Level-2 区域:骨干区域,由连续的L2和L1-L2路由器组成。

路由器类型

Level-1 路由器

1)L1路由器负责区域内的路由,它只于同一区域的L1和L1-2路由器形成邻居关系,不同区域的L1路由器无法形成邻居关系。L1路由器只负责维护L1的链路状态数据库,该LSDB包含本区域的路由信息。

2)通过与自己最近的L1-L2路由器的ATT Bit置位LSP生成指向此台设备的默认路由作为出口路由(L1区域类似于OSPF的To Stub区域)

3)在转发时,如果目的地址在本区域内,直接利用L1 LSDB生成的路由进行转发;如果目的地址不在本区域,则利用本区域最近的L1/L2路由器作为区域外网络的出口,由此可能会导致次优路由的产生

📖说明:次优路由的产生也是ISIS中的一个大问题,可依靠路由泄露来避免

Level-2 路由器

1)路由器负责区域内的路由,它可以和同一或者不同区域的L2路由器或者L1-2路由器形成邻居关系。

2)L2路由器维护一个L2的LSDB,该LSDB包含ISIS区域的所有路由信息。(包含了所有建立L2级别的所有路由器各自通告的LSP信息,而且这些设置为L2级别的路由器的RIB表中的确有整个区域的明细路由)

3)所有L2级别路由器(即形成L2邻居关系)组成路由域的骨干网,负责在不同区域间通信。路由域中L2级别路由器必须是物理连续的,以保证骨干网的连续性。

Level-1-2路由器

1)同时属于L1和L2的路由器称为L1-2路由器,它可以和同一区域的L1形成L1邻居,也可以和同一区域的L1-2形成L1和L2双重邻居关系,也可以和不同区域的L2路由器形成L2邻居关系。

2)L1路由器必须通过L1-2路由器才能连接至其他区域(L1路由器的LSDB中有ATT为1的,这是标识默认路由的发出区域,并产生一条默认路由)

3)L1-2维护两个LSDB,L1的LSDB用于区域内路由,L2的LSDB用于区域间路由

📖说明:L1/2区域如果和其他区域的路由器形成邻居关系,那么它将向本L1区域通告ATT 置位的L1 LSP发送给区域内的L1邻居。

IS-IS 网络类型

相较于OSPF支持四类网络类型,P2P仅支持两类。

  • 广播网络
  • P2P网络

默认情况下,物理介质如果是以太网链路,对应的ISIS网络类型是广播网络。而物理介质如果是串行链路(比如PPP、HDLC),对应的ISIS网络类型为P2P网络。ISIS在这两种网络下的工作机制不一。对于NMBA网络(比如ATM、帧中继)需要配置子接口,并且是点对点的子接口才能支持ISIS协议,ISIS协议是不支持点到多点子接口的。

相较于P2P网络,广播网络需要选举DIS,此外,两种网络的链路状态数据库的同步过程也有区别。下文邻接关系将会详细说明。

**图4 **网络类型

DIS及伪节点

DIS:Designated IS指定中间系统(就相当于是OSPF中的DR)

功能:在广播网络中创建伪节点和更新伪节点LSP,在LAN中通过10s周期性发送CSNP来保持LSP的更新。

CSNP:类似于OSPF中的DD,所有LSA的摘要信息。对于某台路由器中数据的LSA摘要信息

在广播网络中MA中,ISIS需要在所有路由器中选举一个路由器作为DIS。(L1和L2的DIS是分别选举的)

由选举的DIS,选举的DIS会创建一个虚拟的伪节点,继而通过伪节点来发送LSP,DIS负责创建和更新伪节点。

DIS的选举原则:

优先比较接口优先级数值最大的。如果数值最大的有多台,则选择SNPA地址最大的。
(默认接口优先级64,范围0~127)[在LAN中,SNPA指的是MAC地址]
//命令dis isis int g0/0/0可以查看DIS
修改优先级命令:isis dis-priority (0-127) level-1/level2

1)任何优先级值的路由器都能进行DIS选举,且DIS选举支持抢占。(0也可以参与选举)

2)同一网段上的同一优先级的路由间会形成邻居关系,包括所有非DIS路由间也会形成邻接关系,但LSDB得同步仍然依靠DIS来保证。(DIS与非DIS可以建立邻接关系,非DIS间也可以建立。)

3)DIS用来创建和更新伪节点,并负责生成伪节点的链路状态协议数据单元LSP(LSA)用来描述这个网络上有哪些网络设备。

4)IS-IS中DIS发送Hello时间为10/3秒,而非DIS,即普通路由器发送HELLO为10秒。

reset isis all命令用于重启IS-IS进程。
ISIS不像OSPF一样拥有备份DR,这是因为ISIS中DIR发送Hello的时间,以及检测设备挂掉的时间十分短暂

伪节点

伪节点是在广播多路访问网络中的一个台虚拟路由器

1、伪节点由DIS创建,伪节点用DIS的System ID和一个一字节非0的Circuit值。

使用伪节点可以简化网络拓扑。

<Huawei>dis isis lsdb

                       Database information for ISIS(10)
                       ---------------------------------

                          Level-1 Link State Database

LSPID                 Seq Num      Checksum      Holdtime      Length  ATT/P/OL
-------------------------------------------------------------------------------
0000.0000.1111.00-00* 0x00000003   0xa65c        1138          70      0/0/0
0000.0000.2222.00-00  0x0000000c   0x783b        1123          70      0/0/0
0000.0000.2222.02-00  0x00000001   0xad57        1123          55      0/0/0

Total LSP(s): 3
    *(In TLV)-Leaking Route, *(By LSPID)-Self LSP, +-Self LSP(Extended), 
           ATT-Attached, P-Partition, OL-Overload
  1. LSPID前面是systemid,后面的00或非00,代表其他含义,*代表本地通告

  2. 后面的02代表发送的伪节点ID(只用于广播),00代表非DIS发送的,非00代表着是DIS发送的

  3. DIS发出的LSP,该LSP表示哪些设备和DIS建立邻接关系。LSP内的信息表示与DIS建立邻接关系的system ID。

注:-00代表LSP的分段,范围从00-FF(可以分256段)

例如:AR1.01-00

AR1为系统ID,此处为命名后的系统ID。

01为伪节点ID,此处非0,代表此LSDP为一个伪节点LSP

00为LSP分片号,此处为00,表示该LSP没有发生数据分片。

OSPF中是用Router-ID来全网标识一台主机的,在ISIS中是用SystemID,也就是系统ID来全网标识

DIS与OSPF的DR/BDR不同之处

ISISOSPF
DIS支持被抢占DR/BDR不支持被抢占
优先级为0的路由器可以参加选举优先级为0无法参加选举
DIS选举依靠优先级和SNAP地址DR选举依靠优先级和Router ID
DIS为节点概念,由System-ID+Circurt-ID表示DR为接口概念,由接口地址表示
DIS的选举在互相收到对方IIH后即可产生DR的选举在等待wait time到MA内所有节点hello同步后产生
DIS中不选举备份的DISDR存在备份BDR
ISIS中所有路由器与所有邻居建立邻接关系OSPF中所有路由器与DR和BDR建立邻接关系
DIS发送时间间隔为普通路由器间隔1/3DR以正常频率发送hello,时间间隔与网络类型有关

说明:由于DIS特殊的机制,OSPF不支持DR/BDR的抢占,这是因为OSPF的抢占会导致广播网络中邻居状态的重新形成,因为DR和BDR要和所有的Drother形成邻居关系,而且泛洪MA网络中的二类,是依靠于DR来进行的。而DIS不同于DR,DIS中,所有的路由器,没有角色的路由器之间也是形成FULL最终关系的。

IS-IS 邻接关系

握手报文

路由器的接口在启用IS-IS进程后,就会发出Hello报文,用以发现邻居并形成邻接关系。Hello报文中除了发送包含发送路由器的System-ID之外,还包含了发送端全局和接口的一系列参数,这些参数如果被邻居路由器接受了,那么就能形成邻接关系,否则不建立邻接关系。

在LAN(广播网络)和P2P(点到点网络)中形成邻接关系的过程稍有不同,使用的Hello报文也有些区别,如下是三种IIH(IS-IS Hello)

  • 点到点 IIH:用于点到点网络;
  • L1 LAN IIH:用于广播 Level-1 邻接;
  • L2 LAN IIH:用于广播 Level-2 邻接。

2-way握手机制:即只要路由器收到对端发来的IIH报文,就宣布邻居为Up状态,建立邻接关系。这种机制存在明显缺陷。

即:当路由器存在两条及以上的链路时,如果某条链路到达对端的到达对端的单向状态为Down,而另一条链路同方向的状态为Up,路由器之间还是能建立起邻接关系(可能是单向路径)。而SPF算法在计算时会使用状态为UP的链路上的参数,这就导致没有检测到故障的路由器在转发报文时仍然试图通过状态为Down的链路。

图5 三次握手示意图

3-way握手机制:在三次握手机制下,路由器只有在知道邻居路由器也接收到它的报文时,才宣布邻居路由器处于UP状态,从而建立邻居关系。同时,三次握手机制中使用32比特的扩展Circuit ID,打破了目前由本地8比特Circuit ID字段限制的255个点到点链路。

关于“路由器只有在知道邻居路由器也接收到它的报文时” 一词的解释,广播Link下,只要收到的IS Neighbor中含有自己的MAC地址,即进入UP State状态

P2P Link下采用TLV 240 去建立双向邻居关系,只要收到的hello中tlv 240含有自己的system ID,即进入UP State状态

总结一下:二次握手即收到对方IIH,P2P 三次握手 为TLV 240包含自身sys ID,LAN 三次握手 为 IS Nei字段包含自身MAC地址。

📖说明:广播链路上仅有3-way握手机制

邻接关系的建立

对于L1和L2的路由器,IS-IS协议可以形成不同层次的邻接关系,需要注意的是一台L1路由器是不能和L2路由器建立邻接关系的。

  • 相连接的L1路由器之间需要Area ID匹配形成Level-1邻接关系。
  • 两台L2路由器建立L2邻接关系不要求在同一区域。
  • 一台L1路由器和一台L1/2路由器在相同区域时才能形成L1邻接关系。
  • 一台L2路由器和一台L1/L2路由器在不同区域时可以形成L2邻接关系。
  • 两台L1/L2路由器,同区域内可形成L1和L2邻接关系,不同区域只能形成L2邻接关系。

📖说明:即 L1邻接需要相同区域。L2邻接关系不需要相同区域。

从其他因素考虑,有以下条件需要满足。

  • 链路两端的IS-IS接口的网络类型必须一样,并且处于相同网段内。

  • IS-IS要求整个域内路由器使用的System-ID长度一致,华为实现中System-id长度固定为6Bye;该规则用于P2P邻接。

  • 两台路由器使用的最大区域地址数要相同,华为默认支持最大区域数量数是3;该规则用于P2P邻接。

  • 如果存在认证,要求认证类型和密钥信息一致。

  • 要求链路两端的接口MTU值要一致。

IS-IS 链路状态数据库

概述

数据库同步报文

用到LSP,CSNP,PSNP报文。

CSNP:用于描述LSDB中所有的LSP(摘录信息,不携带真正的LSP数据,类似OSPF中DD)

  • 以组播方式周期性发送(10秒)

PSNP:

  • P2P链路上作为LSP的确认工作,类似LsAck
  • P2P和MA中作为LSP的请求,类似LS Request

泛洪机制

数据库同步过程

Point-to-point LSDB同步情况:

  1. 邻居互相发送hello包,邻接建立后相互发送LSP。(并需要对端对LSP进行PSNP确认)
  2. 紧接着本地路由器会发送CSNP报文给对端。若对端发现缺少CSNP中某些条目,将会发送PSNP请求相应LSP。
  3. 本地将对端请求的LSP发送给对端的同时,将启动LSP重传定时器,并等待邻居对LSP进行PSNP确认。
  4. 若接口LSP重传定时器超时后仍未收到对端发送的PSNP报文应答,则重传LSP,直至数据库同步。

📖说明:LSP重传定时器 华为实现中缺省5秒。在广播网络中发送的LSP不需要应答,也就不需要LSP重传定时器。

LAN LSDB同步:两种情况

第一种情况:两台设备初始建立邻接的情况

  1. 邻居互相发送hello包,邻接建立后相互发送LSP。

  2. 通过hello包选出的DIS会周期性的发送CSNP。

  3. 若有设备发现缺少CSNP中某些条目,将会发送PSNP请求相应LSP。

  4. 收到PSNP请求后,DIS设备会发送LSP回复。并且不需要确认。

第二种情况:有新设备加进来的情况。

  1. 新加入的路由器RouterC首先发送hello报文,与该广播域中的路由器建立邻居关系。

  2. 邻居关系建立起来后,并在选举出DIS后,Router C等待LSP定时器超时然后将自己的LSP发往组播地址:

    Level1:01-80-C2-00-00-14 ; Level-2 01-80-C2-00-00-15 ;

  3. 网段中的DIS会将RouterC的LSP加入到LSDB中,并等待CSNP报文定时器超时并再次发送CSNP报文,用于网段内的LSDB同步(CSNP 10秒周期发送)

  4. 其他Router收到DIS发送过来的CSNP报文,与之本地LSDB对比后,发送PSNP请求自身没有的LSP。

  5. DIS收到该PSNP报文请求后发送对应的LSP进行LSDB的同步。

📖说明:LAN 中的LSP确认是隐式过程,通过DIS周期发送CSNP,根据CSNP与本地LSDB进行对比,若本地缺少就请求,不缺少就不管。来进行LSP的确认。

根据本地LSDB与CSNP对比来确认

DIS的LSDB更新过程

  1. DIS接收到LSP,在数据库中查找对应记录。若没有该LSP,则将其加入数据库,并组播新数据库内容。
  2. 若收到的LSP序列号大于本地LSP的序列号,则更新本地LSDB,并向外发送。若更小则向入端接口发送本地LSP。
  3. 若序列号相等,则比较Remainning Lefetime。若收到LSP的R L小于本地,则更新本地LSDB,并向外发送。若更大则向入端接口发送本地LSP。
  4. 上面皆相同则比较Checksum。若收到的LSP的Checksum大于本地LSP的Checksum,则更新本地LSDB,并向外发送;若收到的LSP的Checksum小于本地LSP的Checksum,入端接口发送本地LSP。
  5. 上述条件皆相同,则不转发该报文。

路由渗透(路由泄露)

路由渗透特性是指Level-1-2 IS-IS将己知的其他Level-1区域以及Level-2区域的路由信息通报给指定的Level-1区域。

通常情况下,区域内的路由通过Level-1的路由器进行管理。所有的Level-2和Level-1-2路由器构成一个连续的骨干区域。Level-1区域必须且只能与骨干区域相连,不同的Level-1区域之间并不相连。

Level-1区域内的路由信息通过Level-1-2路由器通报给Level-2区域的,即Level-1-2路由器将学习到的Level-1路由信息装进Level-2 LSP,再泛洪LSP给其他Level-2和Level-1-2路由器。因此,Level-1-2和Level-2路由器知道整个IS-IS路由域的路由信息。但是,为了有效减小路由表的规模,在缺省情况下,Level-2路由器并不将自己知道的Level-1区域以及骨干区域的路由信息通报给Level-1区域。这样,Level-1路由器将不了解本区域以外的路由信息,可能导致对本区域之外的目的地址无法选择最佳的路由。

为解决上述问题,IS-IS提供了路由渗透功能。通过在Level-1-2路由器上定义ACL(Access Control List)、路由策略、Tag标记等方式,将符合条件的路由筛选出来,实现将其他Level-1区域和骨干区域的部分路由信息通报给自己所在的Level-1区域。

图6 路由渗透示例

img

  • RouterA、RouterB、RouterC和RouterD同属于Area10区域,RouterA和RouterB为Level-1路由器,RouterC和RouterD为Level-1-2路由器。
  • RouterE、RouterF同属于Area20区域,为Level-2路由器。

RouterA发送报文给RouterF,选择的最佳路径应该是RouterA->RouterB->RouterD->RouterE->RouterF。因为这条链路上的cost值为10+10+10+10=40,但在RouterA上查看发送到RouterF的报文选择的路径是:RouterA->RouterC->RouterE->RouterF,其cost值为10+50+10=70,不是RouterA到RouterF的最优路由。

这是由于RouterA并不知道本区域外部的路由,所以发往非本区域网段内的报文都是通过由最近的Level-1-2路由器产生的缺省路由发送出去的。

此时分别在Level-1-2路由器RouterC和RouterD上使能路由渗透。再查看报文选择的路径,发现路径是RouterA->RouterB->RouterD->RouterE->RouterF,为RouterA到RouterF的最优路由。

认证

IS-IS认证可根据报文的种类,将分为以下三类:

  • 接口认证

    在接口视图下配置,只对Level-1 和Level-2的Hello报文认证。

  • 区域认证

    在IS-IS进程视图下配置,只对Level-1的SNP和LSP报文进行认证。

  • 路由域认证

    在IS-IS进程视图下配置,只对Level-2的SNP和LSP报文进行认证。

说明:SNP即CSNP+PSNP 偷了个懒就统一SNP代表了。

根据报文的认证方式,可以分为以下三类:

  • Simple 认证(明文)

  • MD5认证

    通过将配置的密码进行MD5算法之后再加入报文中,这样提高了密码的安全性。

  • Keychian认证

    通过配置随时间变化的密码链表来进一步提升网络的安全性。

IS-IS通过TLV的形式携带认证信息,认证TLV的类型为10:

  • Type

    ISO定义认证报文的类型值为10,1字节。

  • Length

    认证TLV值的长度,1字节。

  • Value

    认证的具体内容,其中包括了认证的类型和认证的密码,1~254字节。

    在Value中,认证的类型为1字节,具体定义如下:

    • 0:保留的类型
    • 1:明文认证
    • 54:MD5认证
    • 255:路由域私有认证方式

IS-IS 单向认证:配置了认证的一端可以识别没配置的一端,没配置认证的一端不可以识别另一端。

LSP 分片拓展

使IS-IS路由器生成更多的LSP分片,用来携带更多的IS-IS信息

图7 LSP分片拓展示意图

分片最大256片,超过256则需要分片拓展。分为两个模式,Mode-1和Mode-2。

Mode-1:用于两端一个支持分片,一个不支持分片的情况。在支持分片的路由器上虚拟出2个节点,最多虚拟50个片号。

Mode-2:两台路由器都支持分片。

IS-IS GR平滑重启

IS-IS 快速收敛机制

IS-IS快速收敛是为了提高路由的收敛速度而做的扩展特性。包括:

  • I-SPF(Incremental SPF)

    增量最短路径优先算法,是指当网络拓扑改变的时候,只对受影响的节点进行路由计算,而不是对全部节点重新进行路由计算,从而加快了路由的计算。

  • PRC(Partial Route Calculation)

    部分路由计算,是指当网络上路由发生变化的时候,只对发生变化的路由进行重新计算。

  • LSP快速扩散

    可以加快LSP的扩散速度。

  • 智能定时器

    定时器第一次超期时间是一个固定的时间。如果在定时器被设置但是还未超期的时候,又有触发定时器的事件发生,则该定时器下一次超期的时间会增加。

    在产生LSP和进行SPF计算的时候都用到这种定时器。

I-SPF

在ISO10589中定义使用Dijkstra算法进行路由计算。当网络拓扑中有一个节点发生变化时,这种算法需要重新计算网络中的所有节点,计算时间长,占用过多的CPU资源,影响整个网络的收敛速度。

I-SPF改进了这个算法,除了第一次计算时需要计算全部节点外,每次只计算受到影响的节点,而最后生成的最短路径树SPT与原来的算法所计算的结果相同,大大降低了CPU的占用率,提高了网络收敛速度。

PRC

PRC的原理与I-SPF相同,都是只对发生变化的路由进行重新计算。不同的是,PRC不需要计算节点路径,而是根据I-SPF算出来的SPT来更新路由。

在路由计算中,叶子代表路由,节点则代表路由器。如果I-SPF计算后的SPT改变,PRC会只处理那个变化的节点上的所有叶子;如果经过I-SPF计算后的SPT并没有变化,则PRC只处理变化的叶子信息。

比如一个节点使能一个IS-IS接口,则整个网络拓扑的SPT是不变的,这时PRC只更新这个节点的接口路由,从而节省CPU占用率。

PRC和I-SPF配合使用可以将网络的收敛性能进一步提高,它是原始SPF算法的改进,所以已经代替了原有的算法。

说明 :在华为实现中,使用I-SPF和PRC作为IS-IS路由计算的唯一算法。

LSP快速扩散

当IS-IS收到其它路由器发来的LSP时,如果此LSP比本地LSDB中相应的LSP要新,则更新LSDB中的LSP,并用一个定时器定期将LSDB内已更新的LSP扩散出去。

LSP快速扩散特性改进了这种方式,配置此特性的设备收到一个或多个比较新的LSP时,在路由计算之前,先将小于指定数目的LSP扩散出去,加快LSDB的同步过程。这种方式在很大程度上可以提高整个网络的收敛速度。

智能定时器

改进了路由算法后,如果触发路由计算的时间间隔较长,同样会影响网路的收敛速度。使用毫秒级定时器可以缩短这个间隔时间,但如果网络变化比较频繁,又会造成过度占用CPU资源。SPF智能定时器既可以对少量的外界突发事件进行快速响应,又可以避免过度的占用CPU。

通常情况下,一个正常运行的IS-IS网络是稳定的,发生大量的网络变动的几率很小,IS-IS不会频繁的进行路由计算,所以第一次触发的时间可以设置的非常短(毫秒级)。如果拓扑变化比较频繁,智能定时器会随着计算次数的增加,间隔时间也会逐渐延长,避免占用大量的CPU资源。

与SPF智能定时器类似的还有LSP生成智能定时器。在IS-IS协议中,当LSP生成定时器到期时,系统会根据当前拓扑重新生成一个自己的LSP。原有的实现机制是采用间隔时间定长的定时器,不能同时满足快速收敛和低CPU占用率的需要。为此将LSP生成定时器也设计成智能定时器,使其可以对于突发事件(如接口Up/Down)快速响应,加快网络的收敛速度。同时,当网络变化频繁时,智能定时器的间隔时间会自动延长,避免过度占用CPU资源。

IS-IS Wide Metric

早期IS-IS协议接口最大配置开销为6bit,即取值范围为0~63(narrow窄度量)。在后期拓展到32bit,接口开销之拓展到16777215,路由器总开销拓展到4261412864,此时的IS-IS开销类型为wide,宽度量。缺省COST为narrow模式,Metric字段共有8个bit,其中第七个bit用来区分度量是内部还是外部,第八个bit保留(UP/DOWN比特),只有6个bit可用。故最大cost值为63。

在IS-IS Narrow-Metric下,使用128号和130号TLV作为携带路由的TLV,使用2号TLV作为携带邻居信息的TLV。

  • Narrow模式下使用的TLV:
    • IP Internal Reachability TLV:用来携带域内的路由。(128号TLV)
    • IP External Reachability TLV:用来携带域外的路由信息。(130号TLV)
    • IS Neighbors TLV:用来携带邻居信息。(2号TLV)

在IS-IS Wide-Metric下,使用135号TLV作为携带路由的TLV,并使用22号TLV作为携带邻居信息的TLV。

  • Wide模式下使用的TLV:
    • Extended IP Reachability TLV:用来替换原有的IP reachability TLV,携带路由信息,它扩展了路由开销值的范围(4字节),并可以携带sub TLV。
    • IS Extended Neighbors TLV:用来携带邻居信息。

图9 度量值开销类型示意图

IS-IS 路由过载

使用IS-IS过载标记来标识过载状态,对设备设置过载标志位后,其他设备在计算SPF时,不会使用这台设备做转发,只计算该设备上的直连路由。

进入过载状态的方法:

  1. 设备异常(内存不足)导致自动进入过载状态
  2. 手工使设备进入过载

IS-IS 路由过滤及路由汇总 [实验]

后续补充

TLV

后续补充

IS-IS For IPv6

后续补充

OSPF 与 IS-IS 的对比 [华为面试题]

有点长,删去了。而且如果不是为了HCIE考试的话,这个不适用与大部分初学者。如果想看可以私聊我,或者自己整理一份对比哦。

思维导图

后续补充

思考题

1、2way握手机制和3way握手机制的优点和缺点?

2、两台IS-IS路由器,符合什么条件才可以建立邻居关系

为什么要有DR和DIS?如果没有会怎么样

拓展性知识点

拓展性知识点仅提供一个学习思路,不做为本章节的讲述部分。

  • IS-IS TE
  • IS-IS 动态主机名交换 [仅作了解]
  • IS-IS 结合BFD [结合实验去做]
  • IS-IS 多实例和多进程
  • IS-IS Auto FRR

参考致谢

  • HCIE路由交换学习指南
  • HedEx产品文档
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ISIS协议基础知识 的相关文章

  • Mvc Web工程中加入Web Api后,Web Api接口无法访问

    用vs2015 C 建立了一个web mvc工程 xff0c 实现了一些简单的功能 xff0c 包括对后台数据库的访问 xff0c 添加 修改数据等普通功能 xff0c 其中有好几个controller xff0c 比如用户管理 任务添加修
  • OpenMP与OpenMPI介绍与简单程序编写

    首先说一下OpenMP与OpenMPI的区别 OpenMP主要是在单机上进行并行 xff0c 是基于共享内存的 xff0c 共享内存就是多个核 xff08 包括单CPU多核和多CPU多核 xff08 都是单机 xff09 xff09 共享一
  • Web Api获取POST中的body数据

    一个普通的web api xff0c 大佬说为了安全 xff0c 上传的参数数据一般是放在Body中的 xff0c 所以后台也要从body中来拿参数 xff0c 这个确实好一些 xff0c 在地址栏中看不到参数 xff0c 相对来说 xff
  • MFC视图中的OnPaint()更新

    今天弄了个工具 xff0c vs2015 mfc 单文档结构的工程 xff0c 没有选择 34 文档 视图体系结构支持 34 xff0c 因为我不需要文档 xff0c 只需要有个视图就行了 后台有个从网络接收数据的服务 xff0c 当收到数
  • vs中加入.h文件后改名为.cpp后,其中的函数无法被链接

    这个问题一般碰不到 一个项目 xff0c 是vs2015 c 43 43 win32类型的 xff0c 项目不大 xff0c 大约有10来个源文件 xff0c 一切都是正常的 后来由于需要添加md5加密 xff0c 所以就从别的项目中拿了一
  • windows下编译opencv 3.4.0

    为了方便后期的调试 xff0c 自己动手编译opencv3 4 0 xff0c 这样有需要的时候还可以自己修改修改源代码 通常来说 xff0c 编译32位比较简单 xff0c 直接用cmake生成编译的工程就行了 xff0c 但64位就比较
  • opencv添加的新接口clearVec()的实现

    自己编译的opencv xff0c 之前文章有说添加了这个接口 xff0c 也有上传3 3 0版本添加这个接口之后编译好的库 xff0c 但是没有把实现过程展现出来 xff0c 导致有些朋友问我如何实现的 xff0c 今天把这个实现放出来
  • Unity 3D代码在vs中无法自动提示的解决办法

    我安装Unity 3D后 xff0c 建立一个工程 xff0c 采用vs2019来编写代码 xff0c 发现没有自动提示功能 xff0c 根据网上说的 xff0c 要在unity中选择vs2019做为编辑器 xff0c 我也选择了 xff0
  • Arduino的全局变量的单独定义

    Arduino语言和C语言很像 xff0c 比如先定义变量再使用 xff0c 也可以采用 define 进行一些预定义等等 xff0c 但又有一些不同 当一个文件中的代码理过多时 xff0c 如果想把它们分开成多个文件 xff0c 则涉及到
  • 苏泊尔电饭煲不工作的维修

    本篇文章与其说是维修 xff0c 倒不如说成是 拆 xff0c 因为维修相对容易 xff0c 但想拆开却很艰难 xff0c 大部分的时间都花在了拆的工作上面 老家伙的样子如下 型号为 xff1a CYSB50FC99 100 xff0c 铭
  • 萨克斯吹不响的解决办法

    刚开始吹萨克斯 xff0c 发现总是吹不响 看各种入门的文章 xff0c 很多都强调口型的重要性 xff0c 各文章说得也都差不多 xff0c 我仔细捉摸 xff0c 不断尝试 xff0c 似乎还是不得要领 特别是安装好之后 xff0c 很
  • webpack是什么

    一 webpack是什么 webpack 是一个用于现代 JavaScript 应用程序的静态模块化打包构建工具 模块化 xff1a 服务端Common js xff08 module exports require xff09 浏览器端E
  • OLED显示秒表

    OLED显示秒表 include stm32f10x h include sys h include delay h include relay h include oled0561 h include led h include key
  • IP和MAC的通俗理解

    首先看下为什么有IP地址 xff0c 借鉴大佬的帖子 https showme codes 2018 05 17 understand mac ip 若有侵权 xff0c 即刻删除 IP和MAC都是为了确定一个地址 xff0c 区别在于 I
  • 图像特征提取三大法宝:HOG特征、LBP特征、Haar-like特征

    转自http dataunion org 20584 html xff08 一 xff09 HOG特征 1 HOG特征 xff1a 方向梯度直方图 xff08 Histogram of Oriented Gradient HOG xff09
  • 中英文环境配置 /etc/environment

    lwg 64 anima cat etc environment 中文界面配置 LANGUAGE 61 34 zh CN zh en US en 34 LC ALL 61 zh CN UTF 8 LANG 61 zh CN UTF 8 GS
  • SDN你必须知道的十大问题——SDN有哪些开源项目

    SDN之所以能够发展的如此之快 xff0c 其中开源社区的贡献不容忽视 随着SDN 各类社区的不断发展状大 xff0c 开源项目也在不断增多 xff0c 从控制器到交换机再到网络虚拟化 xff0c 开源项目一度让小编眼花缭乱 可能你熟悉Op
  • 使用Eclipse编译运行MapReduce程序 Hadoop2.6.0/Ubuntu

    上篇介绍了使用命令行编译打包运行自己的MapReduce程序 xff0c 使用 Eclipse 更加方便 要在 Eclipse 上编译和运行 MapReduce 程序 xff0c 需要安装 hadoop eclipse plugin xff
  • windows远程连接阿里云ubuntu(问题集合)

    w 阿里云轻量应用服务器简单图形化界面以及VNC安装使用 橘游静的博客 CSDN博客 成功部署如上 xff1a 灰屏问题解决方法如下 xff1a vncviewe连接ubuntu系统显示灰屏解决方案 jx18080136806的专栏 CSD
  • VTK学习笔记(十)基于VTK和ITK程序

    VTK学习笔记 xff08 十 xff09 基于VTK和itk程序 1 程序2 CMakeLists txt3 哪里使用了VTK4 程序的执行5 数据存储与显示6 数据变化流程 1 程序 下面程序是一个基于ITK的连通域分析程序 span

随机推荐