IS-IS 报文结构
IS-IS 报文是直接基于数据链路层协议封装的,每个报文由报头和 TLV 字段组成,其中报头又分为通用报文
和专用报头,每种报文的通用报头(前 8Byte)是一样的,但是专用报头根据报文的不同而不同,并且每种报文所
支持的 TLV 不同。
IS-IS 报文是直接封装在数据链路层的帧结构中的。PDU 可以分为两个部分,报文头和边长字段部分。其中
头部又可分为通用头部和专用头部。对于所有 PDU 来说,通用报头都是相同的,但专用报头根据 PDU 类型不同
而有所差别。
IS-IS 的 PDU 有 4 种类型:Hello 报文,LSP,CSNP,PSNP。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
IS-IS 的 PDU 格式
|---PDU Common Header---|---PDU Specific Header---|---Variable Length Fields(CLV)---|
通用报头 专用报头 变长字段部分
所有的 PDU 都有相同的通用头格式:
IS-IS 通用报头格式
PDU Common Header
长度
Intradomain Routein Protocol Discriminator 1 域内路由选择协议鉴别符,设置为 0x83
Length Indicator 1 PDU 头部的长度(包括通用头部和专用头部),以字节为单位。
Version/Protocol ID Extension 1 版本/协议标识扩展,设置为 1(0x01)
ID Length 1 NSAP 地址或 NET 中 System ID 区域的长度。值为 0 时,
表示 System ID 区域的长度为 6 字节。值为 255 时,表示
System ID 区域为空(即长度为 0)
| R | R | R | PDU Type | 1 R:保留,设置为 0。 PDU Type:PDU 类型。
Version 1 版本
Reserved 1
Maximum Area Address 1 支持的最大区域个数。设置为1~254 的整数,表示该 IS-IS
进程实际所允许的最大区域地址数,设置为 0,标识该 IS-IS
进程最大只支持 3 各区域地址数。
CLV 报文格式
PDU 中的变长字段部分是多个 CLV(Code-Length-Value)三元组。CLV 也称为 TLV (Type-Length-Value)。
Code 1
Length 1
Value Length
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
IS-IS Hello 消息格式
报文格式
Hello 报文用于建立和维持邻居关系,也称为 IIH (IS-to-IS Hello PDUs)。其中,广播网络中的 Level-1 路由器
使用 Level-1 LAN IIH;广播网络中的 Level-2 路由器使用 Level-2 LAN IIH;非广播网络中则使用 P2P IIH。它们的
报文格式有所不同。
广播网络中的 Hello 报文格式如下图所示(蓝色部分是通用报文头)。
L1/L2 LAN IIH 格式
Reserved/Circuit Type 1
Source ID ID Length
Holding Time 2
PDU Length 2
|R| Priority 1
LAN ID ID Length+1
Variable Length Fields
主要字段的解释如下:
Reserved/Circuit Type:高位的 6 比特保留,值为 0.低位的 2 比特表示路由器的类型(01 表示 L1,10 标识 L2,
11标识 L1/L2)。
Source ID:发出 Hello 报文的路由器的 System ID。
Holding Time:保持时间。在此时间内如果没有收到邻居发来的 Hello 报文,则终止已建立的邻居关系。
PDU Length:PDU 的总长度,单位是字节。
Priority:选举 DIS 的优先级,取值范围为 0~127。数值越大,优先级越高。
LAN ID:包括 DIS 的 System ID 和一字节的伪节点 ID。
P2P IIH 格式
Reserved/Circuit Type 1
Source ID ID Length
Holding Time 2
PDU Length 2
Local Circuit ID 1
Variable Length Fields
从图中可以看出,P2P IIH 中的多数字段与 LAN IIH 相同。不同的是没有 Priority 和 LAN ID 字段,而多了一个
Local Circuit ID 字段,表示本地链路 ID。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
IS-IS LSP 消息格式
报文格式
链路状态报文 LSP (Link State PDUs) 用于交换链路状态信息。LSP 分为两种:Level-1 LSP 和 Level-2 LSP。
Level-1 LSP 由 Level-1 路由器传送,Level-2 LSP 由 Level-2 路由器传送,Level-1-2 路由器则可传送以上两种 LSP。
两类 LSP 有相同的报文格式。
PDU Length 2
Remaining Lifetime 2
LSP ID ID Length+2
Sequency Number 4
Checksum 2
| P | ATT | OL | IS Type | 1
Variable Length Fields
主要字段的解释如下:
PDU Length:PDU 的总长度,以字节为单位。
Remaining Lifetime:LSP 的生存时间,以秒为单位。
LSP ID:由三部分组成,System ID、伪节点 ID(一字节)和 LSP 分片后的编号(一字节)。
Sequency Number:LSP 的序列号。
Checksum:LSP 的校验和。
P(Partition Repair):仅与 L2 LSP 有关,表示路由器是否支持自动修复区域分割。
ATT(Attachment):由 Level-1-2 路由器产生,用来指明始发路由器是否与其它区域相连。虽然此标示位也存在与
Level-1 和 Level-2 的 LSP 中,但实际上此字段只和 Level-1-2 路由器始发的 L1 LSP 有关。此字段有 4bit,用来
表明相连的区域所使用的度量方式。
从右至左这 4 位依次表示如下所示:
第 4 位:缺省度量
第 5 位:时延度量
第 6 位:代价度量
第 7 位:差错度量
OL(LSDB Overload):过载标志位。设置了过载标志位的 LSP 虽然还会在网络中扩散,但是在计算通过超载路由器的
路由时不会被采用。即,对路由器设置过载位后,其它路由器在进行 SPF 计算时不会考虑这台路由器。当路由器内存不足
时,系统自动在发送的 LSP 报文中设置过载标志位。
IS Type:生成 LSP 的路由器的类型。用来指明是 Level-1 还是 Level-2 路由器(01 表示 Level-1,11 表示
Level-2)。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IS-IS SNP 消息格式
报文格式
时序报文 SNP (Sequence Number PDUs) 通过描述全部或部分数据库中的 LSP 来同步各 LSDB (Link-State DataBase)
从而维护 LSDB。
SNP 包括 CSNP (Complete SNP,全时序报文)和 PSNP (Partial SNP,部分时序报文),进一步又可分为 L1 CSNP、
L2 CSNP、L1 PSNP 和 L2 PSNP。
CSNP 包括 LSDB 中所有 LSP 的摘要信息,从而可以在相邻路由器间保持 LSDB 的同步。在广播网络上,CSNP 由 DIS
定期发送 (缺省的发送周期为 10 秒);在点到点链路上,CSNP 只在第一次建立邻接关系时发送。
L1/L2 CSNP 消息格式
PDU Length 2
Source ID ID Length+1
Start LSP ID ID Length+2
End LSP ID ID Length+2
Variable Length Fields
主要字段的解释如下:
Source ID:发出 SNP 报文的路由器的 System ID。
Start LSP ID:CSNP 报文中的第一个 LSP 的 ID 值。
Een LSP ID:CSNP 报文中最后一个 LSP 的 ID 值。
PSNP 只列举最近收到的一个或多个 LSP 的序号,它能够一次对多个 LSP 进行确认,当发现 LSDB 不同步时,也用
PSNP 来请求邻居发送新的 LSP。
L1/L2 PSNP 格式
PDU Length 2
Source ID ID Length+1
Variable Length Fields