ISIS报文类型

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。

ISIS通用报文格式

图:IS-IS通用报文格式

  • 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

抓包示例:

ISIS头部抓包

图:IS-IS通用报文抓包示例

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报文格式:

广播网中hello报文格式

图:广播网中 IIH报文格式

主要字段的解释如下:

  • 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。

点到点中IIH报文格式

图:P2P中IIH报文格式

从图中可以看出,P2P IIH中的多数字段与LAN IIH相同。不同的是没有Priority和LAN ID字段,而多了一个Local Circuit
ID字段,表示本地链路ID。

IIH 抓包示例:

LAN中IIH

图:LAN网中IIH报文抓包示例

P2P中IIH

图:P2P中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报文格式:

LSP报文格式

图:ISIS 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报文抓包示例:

LSP报文抓包

图: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报文格式:

CSNP报文格式

图:CSNP报文类型

主要字段的解释如下:

  • Source ID:发出SNP报文的路由器的System ID。
  • Start LSP ID:CSNP报文中第一个LSP的ID值。
  • End LSP ID:CSNP报文中最后一个LSP的ID值。

PSNP只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行确认,当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP。

PSNP报文格式

图:PSNP报文格式

SNP报文抓包示例:

CSNP报文抓包示例

图:CSNP报文抓包示例

PSNP报文抓包

图:PSNP报文抓包示例


参考资料:华为HedEx文档


坚持原创技术分享,您的支持将鼓励我继续创作!