IS-IS报文是直接封装在数据链路层的帧结构中的。
一个IS-IS PDU(协议数据单元)分为IS-IS报头和可变字节长度部分。
IS-IS报头可分为IS-IS通用报头和专用报头。


Intradomain Routing Protocol Discriminator:域内路由选择协议鉴别符,固定为0x83。
Length Indicator:IS-IS头部的长度(包括通用头部和专用头部),以Byte为单位。
Version/Protocol ID Extension:版本/协议标识扩展,固定为0x01。
System ID Length:NSAP地址或NET中System ID区域的长度。值为0时,表示System ID区域的长度为6Byte。
R(Reserved):保留,固定为0。
Version:固定为0x01。
Max.Areas:支持的最大区域个数。设置为1~254的整数,表示该IS-IS进程实际所允许的最大区域地址数;设置为0,表示该IS-IS进程最大只支持3个区域地址数。

1 域内路由协议:ISIS(0x83)
2 IS-IS PDU长度:27字节
3 版本/协议标识扩展:0x01
4 系统ID长度:6字节
5 保留位:0
6 携带的专用报文类型:等级2的hello(类型值16)
7 版本:0x01
8 保留位:0
9 支持最大区域数量:3
ISIS有9种报文类型值

可分为4种类型
IS-IS HELLO 报文:相当于OSPF中的HELLO报文,用于建立和维持邻接关系,包括L1 LAN IIH(15)、L2 LAN IIH(16)、P2P IIH(17)
链路状态(LSP --- Link State PDU)报文:相当于OSPF中的LSU报文,用于交换链路状态信息,包括L1 LSP(18)、L2 LSP(20)
全序列号(CSNP ---- Complete Sequence Number PDU)报文:相当于OSPF中的DD报文,通过描述全部链路数据库中的LSP来同步各LSDB,包括 L1 CSNP(24)、L2 CSNP(25)
部分序列号(PSNP ---- Partial Sequence Number PDU)报文:相当于OSPF中的LSR报文和LSACK报文,通过描述部分链路数据库中的LSP来同步各LSDB,包括 L1 PSNP(26)、L2 PSNP(27)
TLV用于在报文中描述属性参数,含义是:类型(TYPE),长度(LENGTH),值(VALUE)。实际上是一个数据结构,这个结构包含了这三个字段。
使用TLV结构构建报文的好处是灵活性和扩展性好。采用TLV使得报文的整体结构固定,增加新特性只需要增加新TLV即可,不需要改变整个报文的整体结构。

只有同一层次的相邻路由器才有可能成为邻接。
对于Level-1路由器来说,Area ID必须一致。
链路两端IS-IS接口的网络类型必须一致。
链路两端IS-IS接口的地址必须处于同一网段(默认情况下),如果配置接口对接收的Hello报文不作IP地址检查,也可以建立邻接关系。
IS-IS中建立邻接关系的过程和OSPF类似。在状态称呼上OSPF的2-way改成了UP。

1.在Down状态下,R1组播发送Level-1 LAN IIH,此报文中邻接列表为空。
2.R2收到此报文后,将邻接状态标识为Initial。然后,R2再向R1回复Level-1 LAN IIH ,此报文中标识R1为R2的邻接。
3. R1收到此报文后,将自己与R2的邻接状态标识为Up。然后R1再向R2发送一个标识R2为R1邻接的Level-1 LAN IIH 。
4.R2收到此报文后,将自己与R1的邻接状态标识为Up。这样,两个路由器成功建立了邻接关系。
5.广播网络中需要选举DIS,在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。
PS:Level-1 IIH和Level-2 IIH发送的组播地址分别为01-80-C2-00-00-14、01-80-C2-00-00-15。
Down:邻接关系的初始状态。
Initial:收到IIH,但是报文中的邻接列表未包含路由器自身的System ID。
UP:收到IIS,且邻接列表中包含路由器自身的System ID。
在缺省情况下,IS-IS的邻接过程被称为三次握手,既交换三次报文后建立邻接关系。在网络类型为P2P的情况下还可以支持二次握手的方式来建立邻接关系。只要路由器收到对端发来的Hello报文,就单方面宣布邻居为Up状态,建立邻接关系。
二次握手存在明显的缺陷。当路由器间存在两条及以上的链路时,如果某条链路上到达对端的单向状态为Down,而另一条链路同方向的状态为Up,路由器之间还是能建立起邻接关系。
修改邻接方式为二次握手
[R1-GigabitEthernet0/0/0]isis ppp-negotiation 2-way
这条命令后还可以加上only参数 代表本接口只接收2-way或者3-way的邻接方式,例如
[R1-GigabitEthernet0/0/0]isis ppp-negotiation 3-way only

Reserved/Circuit Type:表示路由器的类型(01表示L1,10表示L2,11表示L1/L2)。
Source ID :发出Hello报文的路由器的System ID。
Holding Time : 保持时间。在此时间内如果没有收到邻接发来的Hello报文,则中止已建立的邻接关系。相当于OSPF中的死亡时间。
Priority :选举DIS的优先级,取值范围为0~127。数值越大,优先级越高。该字段只在广播网中的Hello消息(LAN IIH消息)携带;点到点网络的Hello消息(P2P IIH消息)没有此字段,也没有此字段之前的R保留位。 默认值64。
LAN ID : 包括DIS的System ID和伪节点ID。该字段只在广播网中的Hello消息(LAN IIH消息)携带;点到点网络的Hello消息(P2P IIH消息)没有此字段。
Local Circuit ID :本地链路ID。该字段只在点到点网络的Hello消息(P2P IIH消息)携带;广播网中的Hello消息(LAN IIH消息)没有此字段。

1.路由器类型:level 2
2.保留位:0
3.系统ID:0000.0000.0003
4.保持时间:9秒
5.PUD长度:1497
6.DIS优先级:64
7.保留位:0
8.系统ID(包括SEL):0000.0000.00003.01
9.区域地址信息
10.邻居信息
11.IP接口地址信息
12.支持的协议信息
13.重启标志位信息
14.多拓扑信息
15.填充用字段
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS(Designated Intermediate System)。DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备,记录该广播网络内所有IS-IS路由器,保证广播网络中链路状态数据库的同步。伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。
1.DIS优先级数值最大的被选为DIS。
2.如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会成为DIS(PPP网络中比较system-id)。
DIS发送Hello PDU的时间间隔是普通路由器的1/3,这样可以确保DIS出现故障时能够被更快速地被发现。缺省情况下,普通路由器是10秒,因此DIS发送Hello PDU的时间间隔是3秒。
1 优先级为0的路由器也参与DIS的选举,优先级为0的路由器不参与DR的选举。
2 DIS的HELLO时间缺省情况下是3秒。DR的HELLO时间缺省情况是10秒。
3 DIS的选举时间为发送时间的2倍,缺省值6秒。DR的选举时间为死亡时间,缺省值40秒。
4 DIS没有备份路由器。OSPF中有有BDR。
5 DIS的选举是抢占式的,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
6 同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系。
修改DIS优先级
[R1-GigabitEthernet0/0/0]isis dis-priority 127 level-1