ISIS的报文类型
IS-IS报文有以下几种类型:HELLO PDU(Protocol Data Unit)、LSP和SNP。
Hello PDU
Hello报文用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)。其中,广播网中的Level-1 IS-IS使用Level-1 LAN IIH;广播网中的Level-2 IS-IS使用Level-2 LAN IIH;非广播网络中则使用P2P IIH。它们的报文格式有所不同。P2P IIH中相对于LAN IIH来说,多了一个表示本地链路ID的Local Circuit ID字段,缺少了表示广播网中DIS的优先级的Priority字段以及表示DIS和伪节点System ID的LAN ID字段。
LSP
链路状态报文LSP(Link State PDUs)用于交换链路状态信息。LSP分为两种:Level-1 LSP和Level-2 LSP。Level-1 LSP由Level-1 IS-IS传送,Level-2 LSP由Level-2 IS-IS传送,Level-1-2 IS-IS则可传送以上两种LSP。
LSP报文中主要字段的解释如下:
ATT字段:当Level-1-2 IS-IS在Level-1区域内传送Level-1 LSP时,如果Level-1 LSP中设置了ATT位,则表示该区域中的Level-1 IS-IS可以通过此Level-1-2 IS-IS通往外部区域。
OL(LSDB Overload)字段:过载标志位。
设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过过载路由器的路由时不会被采用。即对路由器设置过载位后,其它路由器在进行SPF计算时不会使用这台路由器做转发,只计算该节点上的直连路由。
IS Type字段:用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS(01表示Level-1,11表示Level-2)。
SNP
序列号报文SNP(Sequence Number PDUs)通过描述全部或部分数据库中的LSP来同步各LSDB(Link-State DataBase),从而维护LSDB的完整与同步。
SNP包括全序列号报文CSNP(Complete SNP)和部分序列号报文PSNP(Partial SNP),进一步又可分为Level-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP。
CSNP包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒);在点到点链路上,CSNP只在第一次建立邻接关系时发送。
PSNP只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行确认,当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP。
IS-IS报文中的变长字段部分是多个TLV(Type-Length-Value)三元组。TLV也称为CLV(Code-Length-Value)。
常见的TLV:
TLV Type | 名称 | 所应用的PDU类型 |
---|---|---|
1 | Area Addresses | IIH、LSP |
2 | IS Neighbors(LSP) | LSP |
4 | Partition Designated Level2 IS | L2 LSP |
6 | IS Neighbors(MAC Address) | LAN IIH |
7 | IS Neighbors(SNPA Address) | LAN IIH |
8 | Padding | IIH |
9 | LSP Entries | SNP |
10 | Authentication Information | IIH、LSP、SNP |
128 | IP Internal Reachability Information | LSP |
129 | Protocols Supported | IIH、LSP |
130 | IP External Reachability Information | L2 LSP |
131 | Inter-Domain Routing Protocol Information | L2 LSP |
132 | IP Interface Address | IIH、LSP |
IS-IS报文通用格式
##ISIS报文通用格式:
IS-IS报文是直接封装在数据链路层的帧结构中的。PDU可以分为两个部分,报文头和变长字段部分。其中头部又可分为通用头部和专用头部。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别。
IS-IS的PDU有4种类型:Hello报文,LSP,CSNP,PSNP。
- Intradomain Routing Protocol Discriminator:域内路由选择协议鉴别符,设置为0x83。
- Length Indicator:PDU头部的长度(包括通用头部和专用头部),以字节为单位。
- Version/Protocol ID Extension:版本/协议标识扩展,设置为1(0x01)。
- ID Length:NSAP地址或NET中System ID区域的长度。值为0时,表示System ID区域的长度为6字节。值为255时,表示System ID区域为空(即长度为0)。
- R(Reserved):保留,设置为0。
- PDU Type:PDU的类型。IS-IS PDU共有9种类型,详细信息请参考下表。
- Version:设置为1(0x01)。
- Maximum Area Address:支持的最大区域个数。设置为1~254的整数,表示该IS-IS进程实际所允许的最大区域地址数;设置为0,表示该IS-IS进程最大只支持3个区域地址数。
PDU类型对应关系:
类型值 | PDU类型 | 简称 |
---|---|---|
15 | Level-1 LAN IS-IS Hello PDU | L1 LAN IIH |
16 | Level-2 LAN IS-IS Hello PDU | L2 LAN IIH |
17 | Point-to-Point IS-IS Hello PDU | P2P IIH |
18 | Level-1 Link State PDU | L1 LSP |
20 | Level-2 Link State PDU | L2 LSP |
24 | Level-1 Complete Sequence Numbers PDU | L1 CSNP |
25 | Level-2 Complete Sequence Numbers PDU | L2 CSNP |
26 | Level-1 Partial Sequence Numbers PDU | L1 PSNP |
27 | Level-2 Partial Sequence Numbers PDU | L2 PSNP |
抓包示例:
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报文格式:
主要字段的解释如下:
- 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中的多数字段与LAN IIH相同。不同的是没有Priority和LAN ID字段,而多了一个Local Circuit
ID字段,表示本地链路ID。
IIH 抓包示例:
图:LAN网中IIH报文抓包示例
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有相同的报文格式。
LSP报文格式:
主要字段的解释如下:
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)。
LSP报文抓包示例:
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只在第一次建立邻接关系时发送。
SNP报文格式:
主要字段的解释如下:
- Source ID:发出SNP报文的路由器的System ID。
- Start LSP ID:CSNP报文中第一个LSP的ID值。
- End LSP ID:CSNP报文中最后一个LSP的ID值。
PSNP只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行确认,当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP。
SNP报文抓包示例:
图:CSNP报文抓包示例
图:PSNP报文抓包示例
参考资料:华为HedEx文档