1
ISIS协议详解
一、ISIS协议概述


在网络早期存在两种参考模型:OSI参考模型和TCP/IP模型,在两种参考模型的网络层存在很大区别,TCP/IP模型使用的网络层协议为IP协议和OSPF协议,在OSI参考模型中则使用CLNP-无连接网络协议和ISIS协议(现今ISIS进行了版本迭代,集成ISIS同样支持IP协议(即支持TCP/IP协议簇))。
ISIS协议和OSPF协议类似同样是一种链路状态路由协议,同样使用SPF算法计算路由信息,ISIS同样在直连设备之间通过发送hello报文发现彼此,然后建立邻接关系,并交互链路状态信息。
CLNP协议由三个部分组成:
CLNP——类似TCP/IP协议中的IP协议
ISIS——类似OSPF协议
ESIS——类似TCP/IP系统中的ARP和ICMP协议
二、NSAP--ISIS协议地址(类似IP地址)

类似在IP协议中为了物理设备之间能够互相寻址,研发了IP地址,在CLNP协议中同样需要进行寻址使用NSAP地址进行网络寻址,该地址实际上是可变的,其中最后6字节的system ID(系统ID)和1字节的SEL(服务类型)是固定的,前面部分为可变长度,最小1字节最大13字节,所以NSAP地址长度最小8字节最大20字节,其中AFI和IDI共同组成组织ID---(类似IP地址的网络位:需要向ISO组织进行申请,例如AFI47-美国国防部),就类似不同的组织申请的AFI不同,可以标定组织(实际因为地址透明导致很容易溯源和攻击-因为是固定的且公布的),IDI路由域--就类似组织内部的分支,类似不同的部门也需要进行规划和划分。例如A分支划分一个路由域B分支划分另外的路由域进行区分。DSP--类似IP地址的子网:网段(可以在路由域中继续进行地址划分(子网划分子网汇总)
拆解一下:AFI-组织 IDI-组织内部部门划分网段(合起来类似IP协议网络位) High Order DSP-子网(网段) System ID--主机 SEL-协议号(如果代表设备那么为0)
参考地址规划--西安
AFI IDI
49(私有) 0001(雁塔区) System ID SEL(代表主机不代表协议则00)
DSP 0001(A街道办) 00
0002(B街道办)... 0000.0000.0001(网段1)
0000.0000.0002(网段2)...
0002(高新区)
0003(莲湖区)
0004(碑林区)...
完整IP地址为:49.0001.0001.0000.0000.0001.00
(可变 )
PS:因为ISIS地址可变的特性就导致在规划地址的时候不够统一,不像IP地址是定长的,前面49.0001.0001可以代表不同机构下的组织,可以很灵活根据组织的大小灵活分配。共同不能超过13字节即可。就很类似现实生活中的地址概念,例如西安市-固定,区开始就已经自己命名:雁塔区 莲湖区,到底下的组织区域名称就更难统一,北大街 太白南路 长度就不一样,到每一户就独立即可。
但是ISIS的地址性质就同样导致不安全,因为可以根据地址之间找到目标主机大致的位置信息。
三、NET-类似OSPF协议RID
ISIS协议同样作为链路状态路由协议,也需要区分和标识不同的运行ISIS协议的设备身份-利用NET进行设备标识区分(实际上是由NSAP地址过渡来的,类似OSPF-RID(利用IP地址的唯一性))

System ID是定长的6字节
SEL定长1字节
AFI-申请
IDI+HD-DSP--表示ISIS区域ID
区域ID可灵活规划
0001
0002
0003--可以代表区域
0001.0001.0001
0001.0001.0002--也可以代表区域,只要不超过12字节就行
因为ISIS-NET地址规定格式为
XX(一字节AFI).XXXX(两字节).XXXX(两字节)分开...XXXX.XXXX.XXXX(system ID固定6字节).XX(一字节SEL)

ISIS规定当设备存在多个NET地址(类似OSPF一台设备存在多个区域),那么要求System ID必须一致仅改变区域ID
例:


但是System ID不一致会导致报错
NET-配置原则(不唯一)
例如设备RID为10.0.1.1,因为system ID固定为6字节,所以建议根据设备配置的RID配置NET,讲每一部分拓展为3位,不够的前面补0即可,
例如10-010,0-000,1-001,1-001。在将其平均的分为4字节即可-
0100. 0000. 1001
四、ISIS区域


PS:总结L1路由器只能建立L1邻接,并且L1邻接必须保证区域ID必须一致,L2路由器建立的是L2邻接。

ISIS协议同样存在区域的概念,并且也存在骨干区域,但是和OSPF协议存在很大不同
OSPF协议区域ID根据人为的规划和配置进行区分,宣告在区域0的设备属于骨干区域的设备
但是ISIS协议区域ID仅作为物理层面的区分,ISIS采用分层结构,简单来说就是给路由器分级,包含L2级路由器所属的区域就是ISIS的骨干区域,纯粹L1级别路由器属于非骨干区域,骨干区域和非骨干区域用L1/L2路由器相连,并且isis协议只允许存在一个骨干区域
下图这种区域的规划在isis中不被允许
其中L2级链路属于骨干区域,L1级链路属于非骨干区域

五、ISIS路由器角色
5.1 Level-1路由器
所有接口均属于L1的路由器类似OSPF协议所以接口属于非骨干的设备,Level-1路由器只能建立level-1邻接,也只交互level-1区域的LSDB信息,这里和OSPF协议一致,区域内部的lsdb不会传递到其他的区域中,ISIS允许多个level-1级区域,类似OSPF允许多区域。

5.2 Level-2路由器
所有接口均属于L2的路由器类似OSPF协议所以接口属于骨干的设备,Level-2路由器可以和同属于骨干区域的设备建立level-2邻接也可以建立Level-1/2级邻接,设备只交互level-2区域的LSDB信息,这里和OSPF协议一致,区域内部的lsdb不会传递到其他的区域中,ISIS只允许一个level-2级区域存在,即只允许存在一个骨干区域。

5.3 Level-1/2路由器
类似OSPF协议中的ABR设备,用来连接骨干区域设备和非骨干区域设备

总结:简单来说就是
L1级别路由器就是非骨干路由器-只能建立L1的邻接,也只能传递本非骨干区域的LSDB信息,isis允许划分多个L1区域
L2级别路由器就是骨干路由器-只能建立L2的邻接,也只传递骨干区域的LSDB信息
L1/2级路由器类似ABR设备-用来连接骨干区域设备和非骨干区域设备,传递区域之间的路由信息
和L1路由器建立L1邻接
和L2路由器建立L2邻接

PS--isis协议建立邻接条件
1.L1邻接要求区域ID必须相同,L2邻接不做限制,可以相同可以不同。
isis区域划分

六、isis协议支持网络类型和开销

运行isis协议的设备接口会自动识别接口网络类型,值得注意的是isis只支持两种接口网络类型,即P2P和BMA

isis协议计算开销的方法和OSPF一致,均计算沿途入接口开销值累加和,但是问题在于isis接口开销默认是固定的,无论接口开销是多少均为10,所以往往在实际中需要根据网络环境手工调整isis开销优先级大小:
接口修改>全局修改(即修改所有设备运行isis协议的接口)>开启自动计算开销(根据接口开销进行计算,不同的开销计算默认值不一致,和接口带宽有关)>如果均不修改那么接口开销按照默认10来算,不看接口开销。
操作步骤
配置IS-IS接口开销类型。
进入系统视图。
system-view进入IS-IS视图。
isis [ process-id ] [ vpn-instance vpn-instance-name ]设置IS-IS开销的类型。
cost-style { { narrow | wide | wide-compatible } | { compatible | narrow-compatible } [ relax-spf-limit ] }缺省情况下,IS-IS接收和发送路由的开销类型为narrow。对于不同的开销类型,其接口开销的取值范围有所不同,接收到的路由开销取值范围也有所不同。
narrow类型:接口开销取值范围为1~63。接收到的路由开销值最大为1023。
narrow-compatible和compatible类型:接口开销取值范围为1~63。接收到的路由开销值和参数relax-spf-limit有关。
wide和wide-compatible类型:接口开销取值范围是1~16777214或maximum(16777215)。接收到路由开销的最大值为16777214。
PS---一般情况下,建议将isis协议开销类型修改为wide,计算方法:接口开销=(参考带宽/真实带宽)*10,默认参考带宽=100M/bps
如果是narrow类型-开启接口自动计算功能则会根据该表项生成接口cost

6.1
修改接口开销
进入系统视图。
system-view进入接口视图。
interface interface-type interface-number设置IS-IS接口的开销。
对于IPv4 IS-IS
isis cost cost [ level-1 | level-2 ]
[Huawei-GigabitEthernet0/0/0]isis enable --接口运行isis协议 进入设备接口配置isis-cost值,默认narrow类型,取值范围1~63 [Huawei-GigabitEthernet0/0/0]isis cost ? INTEGER<1-63> Cost value 并且可以指定接口属于的级别进行配置,可以选择链路级别,如果不选则默认L1/2均修改 [Huawei-GigabitEthernet0/0/0]isis cost 50 ? level-1 Level-1 level-2 Level-2 <cr> Please press ENTER to execute command

七、ISIS协议头部






ISIS报文叫做PDU--协议数据单元,其中ISIS协议定义了4类PDU,分别为:
IIH(ISIS-hello包)--周期发送用来发现建立和保活邻居关系
LSP--用于交互LSA信息-类似OSPF协议LSU报文
SNP:
CSNP--用来交互LSA摘要信息,减少资源重复更新浪费资源,类似OSPF协议DD报文
PSNP--用来请求和确认LSA信息,类似OSPF协议LSR/LSACK报文
IIH--isis-hello报文
IIH(ISIS-hello包)--周期发送用来发现建立和保活邻居关系--因为isis协议工作链路环境的不同,isis协议hello报文分为3种
P2P-hello:因为在点到点链路中仅存在一个邻居,无论L1邻居还是L2邻居都需要建立,并且只有一个,所有一种hello报文即可维护
L1-hello
L2-hello:因为在广播型链路中设备数量众多,设备身份不同,可能存在L1邻居也可能存在L2邻居,所有需要用不同的hello报文进行维护:参考

ISIS协议也使用组播发送报文:因为hello报文存在3中,所有人为定义了三种MAC地址进行组播传递报文。同时因为网络层没有使用IP协议,所有没有组播IP地址。

LSP--ISIS-LSU报文
用来传递LSA(拓扑信息)的报文:因为广播网络环境设备众多,存在两种级别的邻居关系,所以LSP也分为两种--
- L1 LSP---用来传递L1邻居请求的LSA信息
- L2 LSP---用来传递L2邻居请求的LSA信息
值得注意的是,LSP的类型只针对对端邻居的身份是那一级别的邻居,但是无论L1邻居还是L2邻居传递同一拓扑信息时,内容完全一致

CSNP--ISIS-DD
传递本地链路状态数据库摘要信息,因为广播网络环境设备众多,存在两种级别的邻居关系,所以CISP报文也分为两种--
- L1-CSNSP:用来L1邻居交互数据库摘要信息
- L2-CSNP:用来L2邻居交互数据库摘要信息
PSNP--ISIS-LSR/LSACK
用来请求和确认本地链路状态数据库摘要信息,因为广播网络环境设备众多,存在两种级别的邻居关系,所以PNSP报文也分为两种--
- L1-PSNP:用来L1邻居请求和确认LSA信息
- L2-PSNP:用来L2邻居请求和确认LSA信息

八、ISIS协议建邻原则



实际上,简单来说就是L1级别路由器只能发送L1的hello报文,L2级别的路由器只发送L2的hello,只有L12级别的路由器需要考虑广播环境下链路级别--默认都是L1/2。也可以手工修改链路级别。



并且也可以手工修改链路类型(ISIS)协议只支持P2P和BRO-广播网络类型--注意两端链路类型不一致将导致建立邻居失败

其中ISIS协议hello报文发送周期,因为网络类型环境的不同实际上也存在区别:
P2P--发送间隔10S、邻居默认失效时间是hello时间的3倍。
BRO--DIS发送间隔3S,DIS失效时间9S,非DIS发送间隔10S,非DIS失效间隔为30S。(DIS--ISIS协议中DR)
可以手工修改默认hello报文时间和保活时间倍数。


此上命令,表示hello时间为3S,失效时间为3*3=9S

九、IIH-ISIS-hello



同时ISIS协议支持接口配置主地址和从地址,并且这两个地址均会传递,设备会检测是否存在地址在一个网段,现网很少会这样使用。

PS:DIS-ISIS协议中的DR
DIS-ID为广播域中用来描述伪节点的标识符,由DIS设备生成---生成规则:DIS-system id + pid
例如DIS设备system id为0000.0000.0001,那么该伪节点为0000.0000.0001.01(pid顺序赋予默认01、02。。。)
实质为上图IIH报文中LAN字段--用来描述链路

十、ISIS协议建立邻接关系

ISIS协议仅存在三种状态机--分别为down init up 在同步lsdb数据库时不涉及协议状态的变化。
ISIS协议建立邻接的过程实际上和OSPF建立邻居的过程基本类似,都是发送ISIS-hello报文即IIH报文建立,当协议启动,接口激活ISIS协议之后邻居状态从down状态切换到init状态,当收到对端邻居发送的IIH报文中携带自身的RID,那么邻居的状态从init状态切换到up状态。
PS:实际上ISIS协议在工作中IIH报文并没有携带邻居的system-ID而是携带的是对端邻居的MAC地址,如果收到了对端邻居发送的IIH报文中携带自身的MAC地址,那么状态从init切换到UP状态(直白一点就是IIH报文实际没有携带设备system-id)

PS:状态到达UP状态之后,也会进行DR-即DIS的选举

值得注意的是ISIS协议和OSPF协议不同的是设备存在级别,所以在一个广播域中L1级别邻居需要选举L1级DIS,L2级别邻居需要选举L2级DIS。
十一、ISIS协议-DIS选举规则

比较规则汇总:
1.先比较设备优先级,优先级数值越大越优选
2.如果优先级一致,那么比较设备MAC地址
3.如果设备优先级为0也会参与DIS选举,即通过自身MAC地址进行选举
4.DIS可以被抢占
5.设备默认优先级为 ,可以通过调整设备优先级到达人工干涉DIS选举结果的目的。

因为DIS发送报文失效时间是9S,hello时间是3S可以判断R2是DIS
手工修改R1-dis优先级,直接回车修改自身在L1和L2邻居之间的DIS优先级,也可以单独针对某一基本的邻居单独


可以发现对端设备失效时间已经修改为30S--非DIS设备失效时间30S。
值得注意的是ISIS协议DIS选举是抢占模式的,而OSPF协议是非抢占的,这样做坏处是可能造成网络震荡,当网络中加入新设备一旦发生抢占,将会导致伪节点DIS改变,影响逻辑拓扑的生成进而影响路由的计算,会带来网络的不稳定,所以一般建议提前指定DIS设备(将该设备DIS优先级提前配高)。
并且在ISIS协议中同一级别的设备均会建立邻接关系,其中非DIS设备之间也会建立邻接关系,而OSPF协议DR-other设备之间实际上只保持了邻居关系。
十二、广播型网络环境中LSDB同步规则


简单来说,就是新加入的设备,首先发送IIH报文和其他运行了ISIS协议的设备建立邻接关系,之后会直接通过组播发送自身的LSP报文,该报文其他设备收到之后仅添加内部携带的LSDB消息,但是不会回复PSNP报文进行确认,之后DIS设备会发送LSP报文进行LSDB数据库的同步,新加入设备收到之后(因为均为组播发送),同样先进行lSDB数据库的同步,但是也不会发送PSNP进行确认,非DIS设备不发送任何报文,仅完成LSDB数据库同步,之后DIS设备发送CSNP(链路状态数据库摘要)以10S的周期进行发送,当设备比对如果内容一致,那么不做任何处理,如果设备发现部分摘要信息自身LSDB数据库没有,那么才会发送PSNP进行请求,DIS设备会在发送携带该拓扑信息的LSP报文。总结:就是广播域中所有设备LSDB的同步仅靠DIS进行同步,所有设备LSDB数据库信息和DIS一致,非DIS设备仅需要获取自身没有的LSA信息即可。
PS:图示网络中新增R3设备,首先因为R3需要和R2和R1建立ISIS邻居,其中R1为DIS,那么R3会主动发送自身的LSP信息-LSP3,该报文会洪范到整个广播域所以R1和R2均收到该LSP报文,其中R2因为身份是非DIS设备,所以仅添加这部分信息不进行回复,DIS设备R1会同步由R3传递的LSP信息之外,还会将自身的LSP进行洪范,之后R3完成自身LSDB数据库的同步,并且DIS设备会10S周期发送CSNP报文周期发送自身的LSDB摘要,所以即使出现同步问题,后续设备也能感知到,从而自身发送PSNP报文请求自身没有的LSDB即可。但是在该环境下,在无故障情况下,不会存在PSNP报文,因为已经通过直接发送LSP的行为完成了LSDB的同步

十三、ISIS协议-P2P网络中建立邻居过程+LSDB同步

ISIS协议在P2P网络中存在两种建立邻居的方式:
三次握手,首先设备运行ISIS协议,激活接口后开始发送IIH报文建立邻居,开始状态为down,收到对端发送的IIH报文,即发现邻居之后状态变为INIT状态,之后收到对端发送的IIH报文中携带自身的system-ID时变为UP状态
两次握手,收到对端发送的hello报文即直接进入UP状态,省去INIT状态
PS:两次握手实际上可能会出现一端设备参数协商成功,状态转为邻接,但是对端设备可能参数协商失败没有建立的情况,直白一点就是我收到邻居发送的IIH报文就直接进入UP状态,不考虑自身发送的IIH报文对端是否协商成功。所有默认在华为设备中使用3次握手的建立邻居方式。
[r4-GigabitEthernet0/0/0]isis circuit-type p2p --修改ISIS协议接口网络类型命令
[r3-GigabitEthernet0/0/0]isis ppp-negotiation 2-way--修改ISIS协议建立邻接使用两次握手,只能在P2P链路使用,可以加快协商效率。一般来说不建议使用两次握手。

PS:抓包分析
TLV 240---ISIS协议在P2P链路专用



十四、LSP


如何进行区分:伪节点标识符为0的LSP就是实节点LSP--用来描述客观存在的运行ISIS协议的设备,伪节点标识符不为0均为伪节点,用来描述一个MA网络本身
至于分片标识符--因为ISIS协议多条LSA可以利用一条LSP进行传递,那么也会涉及分片的问题,因为接口MTU限制,所以分片标识符可以用来还原数据报文。
ISIS协议也存在周期更新机制,每900S更新一次,序列号加1,校验和重新计算,老化时间1200S(倒计时),同时ISIS协议也存在触发更新机制

PS:因为ISIS-LSP可以同时携带多条LSA信息,当一条LSA被更新(网段消失设备失效。。。)会直接触发更新整个LSP-并且将旧有的LSPhold time(老化时间直接置为0),相当于删除这条LSP,但没有彻底删除会继续存在至老化时间为0。
如下图,老化时间被置为0,LSP失效,但是彻底删除的时间是括号中显示的时间(相当于头七-纪念时间)。

PS:补充PPT



十五、CSNP

PS:因为ISIS协议没有设计单独的ACK报文,所以PNSP报文既需要做LSA的请求也需要做LSA的确认,如何区分功能。
如果PNSP报文序列号全0,那么意味着是请求报文,PNSP初始序列号是1(ISIS报文),其余为确认作用,当发送CNSP之后设备需要进行确认。
十六、ISIS协议LSP传递规则(路由计算规则)
16.1 单区域ISIS协议路由计算

因为ISIS协议L2级别路由器不限制自身区域必须一致,所以可以自行配置设备的区域ID,并且ISIS协议是通过路由器级别来进行区域的判断和路由器自身配置的区域ID无关。
相关ISIS协议配置:
所有设备均存在环回地址模拟用户网段(以设备编号进行分配,例如R1-1.1.1.1/24...),链路IP地址如图所示:
具体配置以R1为例,其余设备参考
sysname r1
#
isis 1
is-level level-2
network-entity 49.0001.0000.0000.0001.00
#
interface GigabitEthernet0/0/0
ip address 13.0.0.1 255.255.255.0
isis enable 1
isis circuit-type p2p
#
interface GigabitEthernet0/0/1
ip address 12.0.0.1 255.255.255.0
isis enable 1
isis circuit-type p2p
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.0
isis enable 1

配置完成之后,设备利用ISIS协议学习到路由信息,并且会标注路由级别,ISIS协议优先级为15,并且即使是环回接口掩码仍为真实掩码。并且在MA网络环境中,OSPF要求必须网段掩码一致(本质是二类LSA生成的网段掩码以DR接口掩码为准),但ISIS不要求掩码必须一致,并且OSPF协议要求同一区域的设备区域ID必须一致,ISIS协议除L1级别路由器外不做限制。

查看R1链路状态数据库。
一共5条LSP,ISIS协议描述拓扑信息实际上相较于OSPF协议更加简单,LSP分为两类:利用LSP-ID进行区分(LSP-ID)由network-entity-ID+伪节点标识符+分片标识符组成。例如
0000.0000.0001.00-00 ---其中代表自身产生的LSP。0000.0000.0001-R1的NID 00-伪节点标识符,00代表是实节点(用来描述真实存在的运行ISIS协议设备,非0代表伪节点)

- 实节点LSP---伪节点标识符为0则代表实节点
- 伪节点LSP---伪节点标识符非0则代表伪节点(因为设备可能存在接口工作在多个MA网络中),用来描述MA网络本身的网段信息。
PS:在该图中,将P2P链路默认ISIS网络类型修改为P2P默认为MA--R1-R2链路和R1-R3链路,所以在数据库中只存在一个伪节点LSP。
余下数据库参数:
Seq Num---LSP序列号
Checksum--校验和
Holdtime ---失效实践默认1200S
Length---LSP长度(因为ISIS协议允许一条LSP携带多个网段信息(拓扑信息))所以要表明LSP的完整长度
ATT/P/OL---标志位
...

展开一条具体的LSP--直接选择对应的LSPID即可,展开命令:display isis lsdb 0000.0000.0002.00-00 verbose
SOURCE 0000.0000.0001.00 ---实节点,代表网络中存在一个设备叫做0000.0000.0001
NLPID IPV4--工作在IPV4环境,传递IPV4路由
AREA ADDR 49.0001 ---设备所属区域
INTF ADDR 1.1.1.1
INTF ADDR 12.0.0.1
INTF ADDR 13.0.0.1---自身运行ISIS协议的接口IP地址
NBR ID 0000.0000.0002.00 COST: 10
NBR ID 0000.0000.0003.00 COST: 10 ---邻居NID,以及到达该邻居的开销
IP-Internal 1.1.1.0 255.255.255.0 COST: 0
IP-Internal 12.0.0.0 255.255.255.0 COST: 10
IP-Internal 13.0.0.0 255.255.255.0 COST: 10 ---自身设备所有直连网段和对应掩码信息
ISIS协议和OSPF协议类似,均需要收集拓扑信息然后计算路由信息,并且同级别的设备收集到的拓扑信息完全一致,并且自身产生的LSP会利用*标注。
如何画出拓扑图:
首先判断节点信息为实节点-判断依据在于伪节点标识符:SOURCE 0000.0000.0001.00 -伪节点标识符为00,代表实节点
其次判断该节点设备所属区域:AREA ADDR 49.0001
然后检测节点自身有那些接口运行了ISIS协议-这里节点存在三个接口分别为
INTF ADDR 1.1.1.1
INTF ADDR 12.0.0.1
INTF ADDR 13.0.0.1
之后是节点连接的邻居NID-该设备存在两个邻居:邻居设备之间会传递ISIS协议报文中会携带自身的NID
NBR ID 0000.0000.0002.00 COST: 10
NBR ID 0000.0000.0003.00 COST: 10
最后是网段以及对应的掩码信息
IP-Internal 1.1.1.0 255.255.255.0 COST: 0
IP-Internal 12.0.0.0 255.255.255.0 COST: 10
IP-Internal 13.0.0.0 255.255.255.0 COST: 10

此时只能判断接口地址和掩码信息,以及网络中该节点存在两个邻居-0000.0000.0002/0000.0000.0003,但是并不能判断两个邻居如何连接需要继续查看其他的LSP
查看实节点0000.0000.0002产生的LSP

查看实节点0000.0000.0003产生的LSP

查看0000.0000.0003伪节点LSP

可以发现ISIS协议的伪节点LSP和OSPF协议的二类LSA很类似,均指示该伪节点连接了那些设备,也就是一个MA网络存在的ISIS设备NID,并且伪节点计算到达实节点开销为0。由此得出0000.0000.0002和0000.0000.0003在一个MA网络中。

查看0000.0000.0004实节点LSP信息

完整的拓扑图计算得出,后续和OSPF协议一致,利用SPF算法计算到达节点的最短路径即可。
16.2 存在非骨干区域的ISIS协议路由计算
配置:
sysname r5
#
isis 1
is-level level-1
network-entity 49.0001.0000.0000.0005.00
#
interface GigabitEthernet0/0/0
ip address 15.0.0.1 255.255.255.0
isis enable 1
可以发现R5建立ISIS邻居之后,会自动生成一条缺省路由用来访问骨干区域的网络以及其他非骨干区域网络,至于1.1.1.0/12.0.0.0/13.0.0.0是因为R5和R1建立了ISIS邻居R1在描述自身拓扑信息时会传递自身的网段信息。

产生缺省的原因在于L1-2级别路由器在传递路由信息时会将自身的ATTbit位置为1,非骨干区域设备会将ATTbit置为1的节点视为"ABR",会自动根据SPF算法计算自身到达L1-2级别路由器的最短路由。至于L1-2级别路由器所有L2级别直连网段也会被L1-2级别路由器传递。相当于在其他设备R5开来,这些网段就是叶子挂载在L1-2级别路由器上。

PS:一些特殊场景
1.如果L1-2级别路由器没有L2级别邻居,无法正常传递路由(类似OSPF协议没有骨干区域一样)
[r1-GigabitEthernet0/0/1]isis circuit-level level-1
[r1-GigabitEthernet0/0/0]isis circuit-level level-1--将R10/0/1和0/0/0号口配置为L1级别链路,相当于R1没有L2级别邻居。


可以发现如果L1-2级别路由器没有L2级别邻居,将不会在把ATT-bit位置为1,非骨干区域设备自然也就不会计算到达该设备的缺省路由,因为该设备此时相当于没有连接到骨干区域中,自然也无法传递路由。
2.也可以配置ATT-bit位是否下发
[r1-isis-1]attached-bit advertise ?
always Always set attached bit---总是下发
never Never set attached bit---不下发
根据情况配置,例如,如果存在多条路径期望路径为R2,那么就可以让R1不下发ATT比特位
同时也可以配置always,例如R2除ISIS网络之外还存在OSPF等外部网络(R2为ASBR),那么将ISIS邻居失效,非骨干区域设备虽然无法继续访问ISIS骨干区域网络,但是还可以利用缺省访问ASBR设备,以访问外部网络。

[r1-isis-1]attached-bit advertise always --可以发现即使R1没有L2级别的ISIS邻居,但是将att-bit位置为1。

ISIS协议这样设计实际上也是为了减少拓扑信息的更新,相当于默认把ISIS协议的非骨干区域配置为完全末梢区域。
值得注意的是ISIS协议接口默认是L1-2级别的,也就是说接口默认能够发出L1级别IIH报文也可以发出L2级别的IIH报文,当对端设备为L2级别路由器那么建立L2级别邻居,如果对端设备是L1级别路由器,那么建立L1级别邻居,这样即使一个MA网络既存在L1级别设备也存在L2级别设备,ISIS协议也可以正常工作。
十七、ISIS路由渗透(ISIS路由过滤)
ISIS协议缺省路由存在次优路径

如图,ISIS存在内部路由,R1作为非骨干路由器,因为R2和R3均为L1/2级别路由器,那么R1在计算缺省路由时,默认会负载均衡,但是访问过程中,例如访问192.168.20.0/24网段,一旦负载到R2设备,那么实际上会绕路走R1-R2-R4-R5那么实际开销为30,而如果负载到R3则更近一些,但是至少会存在次优路径风险。所以往往需要进行路由渗透,让R2除了下发缺省之外,还需要传递192.168.10.0/24网段的明细路由;让R3除了下发缺省之外,还需要传递192.168.20.0/24网段的明细路由.这样利用明细路由访问就不会产生次优路径,缺省路由还可以作为备份路由。提高网络可靠性。
观察R1路由表:

[r1-isis-1]import-route isis level-2 into level-1 --将L1/2级别路由器所有L2级别ISIS路由传递到L1非骨干区域。
[r1-isis-1]import-route isis level-1 into level-2 --将非骨干区域L1级别路由引入到L2骨干区域中,默认存在,这也是骨干区域能够访问非骨干区域路由的主要原因。
也可以根据需求单独引入某一条,或者某一些路由
[r1]ip ip-prefix 1 permit 192.168.1.0 24
[r2-isis-1]import-route isis level-2 into level-1 filter-policy ip-prefix 1.0---让R2路由器在引入L2级别区域路由时,把距离自身开销最近的路由渗透到L1级别区域

缺省作为备份和距离R2/R3开销一致的网段通讯,其次不会产生次优路径,距离R1开销最近的网段利用明细访问。
十八、ISIS协议认证

认证:为了防止协议报文遭到篡改和攻击
其中ISIS协议接口认证会对ISIS协议hello报文进行认证,并且不分L1/2区域,所以一般都需要配置
其中区域认证是对ISIS-L1级别路由器的CSNP、PSNP、LSP进行认证
路由域认证是对L2级别的CSNP、PSNP以及LSP报文进行认证
总结:L1级别设备一般配置接口认证和区域认证,L2级别路由器配置接口认证和路由域认证
案例1、配置接口认证

[r1-GigabitEthernet0/0/0]isis authentication-mode md5 cipher 123456

查看ISIS设备邻居,可以发现R1没有任何邻居,因为R1设备接收到R2发送的hello报文之后,发现该报文没有认证内容,所以建立邻居失败,因为配置了接口认证所以要求收到的hello报文携带认证,R2因为接口没有配置接口认证,华为设备ISIS协议默认没有启用接口认证功能,所以可以发送和接收hello报文,但是因为对端存在认证将导致建立邻居失败卡在init状态。(协商参数失败)

ISIS协议-区域认证
isis 1
is-level level-1
network-entity 49.0000.0000.0000.0001.00
area-authentication-mode simple plain 123456
因为区域认证只针对L1级别路由器生效,同样在R1配置区域认证R2不配置,将导致邻居关系正常建立,因为ISIS接口认证才会对hello报文进行认证。区域认证只针对CSNP、PSNP和LSP报文进行认证。

但是观察设备LSDB-数据库可以发现,R1没有R2设备发送的LSP,因为R2没有配置认证导致发送的数据(LSP)R1认为不合法。
但是因为R2没有配置认证,所有默认不进行认证检测,所以R2-LSDB数据是全的。


所以建议一旦配置了区域认证,那么区域内部所有设备均需要配置区域认证,否则将导致即使能够建立邻居,但是LSP学习不全的情况。
同理-域认证也是一样,一旦配置所有L2级别路由器均需要配置:
isis 1
is-level level-1
network-entity 49.0000.0000.0000.0001.00
domain-authentication-mode simple plain 123456
总结:接口认证主要针对hello报文进行认证,根据需要进行配置,为了保证路由计算的安全性,建议所有L1级别路由器配置区域认证,所有L2级别路由器配置域认证。
华为区域/域认证配置汇总:
[r1-isis-1]area-authentication-mode simple plain huawei
对发送的L1级别的LSP、CSNP、PSNP添加认证TLV,并对接收到的L1级别LSP、CSNP、PSNP进行认证校验
[r1-isis-1]area-authentication-mode simple plain huawei all-send-only
对发送的L1级别的LSP、CSNP、PSNP添加认证TLV,但是不对接收到的LSP、PSNP、CSNP进行认证校验
[r1-isis-1]area-authentication-mode simple plain huawei snp-packet send-only
对发送的L1级别的LSP、CSNP、PSNP添加认证TLV,但是不对接收到的PSNP、CSNP进行认证校验,并且对接收的L1级别LSP进行认证校验---单独计算接收的LSP认证
[r1-isis-1]area-authentication-mode simple plain huawei snp-packet authentication-avoid
对发送的L1级别的LSP添加认证TLV,并且对接收到的L1-LSP进行认证校验但是不做-CSNP和PSNP报文认证---相当于仅对传递路由信息的报文进行验证即单独做LSP认证。
域认证配置
[r1-isis-1]domain-authentication-mode simple plain hauwei
对发送的L2级别的LSP、CSNP、PSNP添加认证TLV,并对接收到的L2级别LSP、CSNP、PSNP进行认证校验
[r1-isis-1]domain-authentication-mode simple plain huawei all-send-only
对发送的L2级别的LSP、CSNP、PSNP添加认证TLV,但是不对接收到的LSP、PSNP、CSNP进行认证校验
[r1-isis-1]domain-authentication-mode simple plain huawei snp-packet send-only
对发送的L2级别的LSP、CSNP、PSNP添加认证TLV,但是不对接收到的PSNP、CSNP进行认证校验,并且对接收的L2级别LSP进行认证校验---单独计算接收的LSP认证
[r1-isis-1]domain-authentication-mode simple plain huawei snp-packet authentication-avoid
对发送的L2级别的LSP添加认证TLV,并且对接收到的L2-LSP进行认证校验但是不做-CSNP和PSNP报文认证---相当于仅对传递路由信息的报文进行验证即单独做LSP认证。
单独
ISIS报文即工作过程总结:
总结与关系
| 报文类型 | 英文全称 | 主要作用 | 常见场景比喻 |
|---|---|---|---|
| Hello | Intermediate System Hello PDU | 建立和维护邻居关系 | 打招呼、自我介绍 |
| LSP | Link State PDU | 描述网络拓扑和路由信息 | 个人名片(包含自身信息和关系) |
| CSNP | Complete Sequence Numbers PDU | 发布完整的LSDB摘要,用于数据库同步 | 图书馆总目录 |
| PSNP | Partial Sequence Numbers PDU | 请求或确认特定的LSP | 借书条 / 收货确认单 |
工作流程简述:
- 路由器通过发送和接收Hello报文建立邻居关系。
- 建立关系后,路由器相互通告自己的LSP,描述自身的链路状态。
- 在广播网络中,DIS定期发送CSNP(目录),其他路由器用PSNP(借书条)来请求缺失的LSP(书)。
- 在点对点网络中,路由器直接使用PSNP来请求和确认LSP。
- 当所有路由器拥有完全一致的LSDB(地图)后,它们各自使用SPF算法计算出无环的最短路径树,从而生成路由表。