赞
踩
IS-IS路由协议和其他路由协议不同,他直接运行在数据链路层上,对等路由器间通过PDU来传递链路状态信息,完成链路状态PDU数据库(LSDB的同步),如下是IS-IS中主要的PDU类型,主要分为3大类:
以上这些IS-IS PDU都包括一个报头和可变长字段两部分。报头又包括“通用报头”和“专用报头”。对所有PDU来说,通用报头是相同的,专用报头根据不同PDU类型而不同。总体的IS-IS PDU结构如图所示:
以hello报文作说明:
Intra domain routing protocol discriminator
•IS-IS PDU中,该字段不变,都为0x83。
PDU header length indicator
•标识该固定头部字段的长度。包括通用报头和各种PDU的专用报头两部分的长度,以字节为单位。
Version/protocol ID extension
•版本/协议ID拓展,占一个字节,目前始终为1。
System ID length
•用来表示system ID长度,固定为6B。
PDU type
•标识PDU类型。15表示 L1 LAN IIH;值为16表示L2 LAN IIH;值为18表示L1 LSP,20表示L2 LSP;值为24表示L1 CSNP;值为25表示L2 CSNP;值为26表示L1 PSNP;值为27表示L2 CSNP。
Version
•该字段和上一个version字段一样,目前仍然为1
Reserve
•当前设置为全0。
Max areas
•表示该IS所支持的最大区域数量,该字段为3表示所支持的最大区域地址数为3,默认情况下为0。
抓包信息:
专用报头会在介绍IS-IS具体每种报文结构时再详细说明。除了专用报头,每种IS-IS报文仅支持特定的TLV字段,这些TLV字段在数据包中是可选的,IS-IS 协议正因为起初是基于TLV设计的,所以很方便日后的功能扩展。TLV也称为CLV(Code-Length-Value),这些可变长字段才是真正的PDU报文的内容部分。
下图中包括了一些常用的TLV:
更多关于TLV的信息会在介绍IS-IS每种报文时说明。
IIH PDU用来建立和维持IS-IS路由器之间的邻接关系。IIH PDU包括IS-IS PDU通用报头、IIH专用报头和可变长字段三部分。在IIH专用报头部分包括了发送者的系统ID、分配的区域地址和发送路由器已知的链路上邻接标识。不同IIH报文使用场景:
P2P IIH中相对于LAN IIH来说,多了一个表示本地链路ID 的Local Circuit ID字段,缺少了表示广播网中DIS的优先级的Priority字段以及表示DIS和伪节点System ID的LAN ID 字段。通过填充字段将IIH报文扩展到MTU大小,用于邻居之间协商发送报文的大小。
通过填充字段将IIH报文扩展到MTU大小,用于邻居之间协商发送报文的大小。
Broadcast环境下IIH报文格式:
专用报头:
可变长字段(TLV):
点到点环境下IIH报文格式:
专用报头:
Circuit type
•表示发送该PDU的层级。如果改为被置位0,那么该PDU将被忽略。
System ID(发送该PDU的IS)
•是指始发该IIH的路由器的系统ID。
Holding time
•是指邻居路由器等待始发路由器发送下一个IIH的时间间隔。发送时间和Broadcast环境中一样。
PDU length
•是指整个PDU数据包的长度。
Local circuit ID(独有)
•由始发路由器发送hello数据包时分配给这条电路,并且在路由器的接口上是唯一的。在点到点链路的另一端,hello数据包中的电路ID可能包含也可能不包含相同的值。
可变长字段(TLV):
通过对比LAN和P2P网络的Hello报文,可以发现,P2P Hello报头中没有Priority和 LAN ID这两个字段,原因是P2P网络中不需要DIS;同时P2P Hello 报头中新增了一个Local Circuit ID (本地电路ID)字段,用来标识发送端接口。
此外,在TLV字段中,P2P Hello携带了一个点对点邻接状态: Point-to point Adjacency State,这个字段携带了发送端路由器所有邻居System-ID及其邻接状态,用来保证建立邻接关系的可靠性,使用类型240的TLV来承载信息;在LAN Hello 报文中,等价的字段是IS Neighbor字段,这个字段只表明了发送端路由器的所有邻居MAC地址。
不管在哪一种网络中,Hello 报文都是周期性发送的,用于维持邻接关系。如果等待时间到达时还没收到邻居的Hello,就宣告邻接关系失效。默认发送Hello的时间间隔为10s,邻接关系的超时时间(Hold-timer) 是Hello间隔的3倍。但是在广播链路上,DIS发送Hello的频率是普通路由器的1/3倍(每3.3333秒发送一次Hello)。接口下可以修改Hello间隔时间及超时时间。
类比于OSPF的LSA报文的作用。从本质上讲,IS-IS 的LSP和OSPF的LSA的功能是一样的,L1的LSP用来描述L1区域内的链路状态和路由信息,L2的LSP用来描述L2区域的链路状态和路由信息,这两种LSP在报文格式上是差不多的。其中:
LSP报文格式:
专用报头:
PDU length
•整个PDU的长度。
Remaining lifetime
•LSP过期前等待的秒数,默认为1200s,当生存时间为0的时候就被删除。
LSP ID
•可以是系统ID、伪节点ID或者LSP数据包的LSP编号。它分为三部分:source ID,Pseudonode ID(简称为PN-ID,伪节点ID,普通路由器的伪节点ID为0)和LSP Number(LSP序列号,也就是LSP的分片号,简称为Frag-Nr),LSP分片号的作用是当LSP一次性发送不完的时候,就可以通过分片继续发送,如下举例:
•0000.0000.0001.00-00 常规LSP。
•0000.0000.0001.01-00 伪节点LSP。同一个网段只有一个伪节点,同一个设备在不同网段都为伪节点时PN-ID会增加,例如为02都是其他网段的伪节点。
•0000.0000.0001.00-01 常规LSP的一个分片。对于分片我们可以这么理解:当发送LSP报文因为MTU值的限制,不能一次性发送,那么可以进行分片发送。不同的LSP通过seq序号进行分别,同一序号的LSP报文可以分片为0x01-0xFF个报文,如果在拓展报文中可以拓展为256X256个报文。
Sequence number
•LSP的序列号。从0开始,每次加1,最大为2^32-1。
Checksum
•校验和字段,占2个字节,用于接收端校验传送的LSP PDU的完整性和正确性。如果发现校验和不一致,那么说明ISP在传输环境中已经被破坏,不再接受和泛洪。
P
•Partition,分区。表示区域划分或者分段区域的修复位。当P位被设置为1时,表明始发路由器支持自动修复区域的分段况。
ATT
•Attached,区域关联。L1/L2路由器在其生成的L1 LSP中设置该字段以通知同一区域中的L1路由器自己与其他区域相连。通常来说就是L2骨干区域相连。当L1区域中的路由器收到L1/2路由器发送的ATT位被置位的L1 LSP后,它将创建一条指向L1/2路由器的默认路由,以便数据可以被路由到其他区域(一般情况下不会保存其他区域的路由)。虽然ATT位同时在L1 LSP和L2 LSP中进行了定义,但是它只会在L1 LSP中被置位,并且只有L1/2路由器会设置这个字段。
OL
•Overload,超载。表示路由器的资源状态。如果该bit被置位,就表示路由器发生了超载。超载是指路由器没有足够的系统资源(CPU资源和内存资源)用来处理路由选择交换信息。被设置了超载位的LSP不会在网络中进行泛洪,并且当其他路由器收到设置了超载位的LSP后,在计算路径信息时不会考虑此LSP,因此最终计算出来的到达目的地的路径将绕过超载的路由器。设置超载位还可以使数据的传输路径绕过某个特定的路由器。之后进行 相应的补充。
IS Type
•中间系统类型。该字段表示了此LSP是来自L1路由器还是L2路由器。这也表示了收到此LSP的路由器将把这个LSP放到L1链路状态数据库还是L2链路状态数据库。01表示L1,11表示L2,00与10未使用。
L1 LSP可变长字段(TLV):
Area Address (区域地址)
•标识了发送端路由器的区域,使用类型1的TLV,这里是49.0001。
Protocol supported
•表示发送端路由器所支持的网络层协议,使用类型129的TLV,这里表示是IP环境。
Host name
•主机名。这里是R1。
IP interface address
•IP接口地址。使用类型132的TLV,这里表示是IP环境。 描述启动了IS-IS进程的接口IP地址,这里是12.1.1.1。
IP Internal reachablity
•内部路由可达信息。使用类型128的TLV,描述了区域内的路由信息。
IS Neighbor
•邻居列表。标识了发送端路由器的邻居,使用类型2的TLV(区别Hello报文中的这个字段),使用的是邻居的system ID+SEL地址表示邻居。
L2 LSP可变长字段(TLV):
相比于L1 LSP的TLV字段,L2 LSP主要多了两种TLV,第一种是:IP External reachablity。
IP External reachablity:用来携带路由域外的IS-IS路由信息,例如当将其他路由协议条目重分发进入IS-IS区域中时(或者将L2路由泄露进入L1区域中),由支持L2的IS-IS路由设备产生,type字段为130。
第二种是:Inter-Domain Routing Protocol Information
域间路由选择协议(IRDP)信息TLV只用于L2 LSP中。type字段为131,IETF定义此TLV用于支持在IS-IS路由域边界上与其他域间路由选择协议的交互,用来透传来自外部路由选择协议的信息。
SNP PDU通过描述全部或部分数据库中的LSP来同步各LSDB,从而维护相同区域中级别LSDB的完整同步,类似与OSPF中的DD报文。SNP包括CSNP(完全序列号 PDU)和PSNP(部分序列号PDU)。
PSNP只列举最近收到的一个或多个LSP的序号,主要作用是:在广播网络和点对点网络中请求缺失或最新的LSP;在点对点网络中确认收到的LSP。
CSNP包括某个级别中LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10 秒);在点到点链路上,CSNP 只在第一次建立邻接关系时发送。
CSNP和PSNP分部也分为L1 CSNP(类型号为24),L2 CSNP(类型号为25),L1 PSNP(类型号为26)和L2 PSNP(类型号为27)。
CSNP报文格式:
专用报头:
PDU length
•整个PDU的长度,包括通用报头。
Source-ID
•始发路由器系统ID,也就是systemID。
Start LSP-ID,End LSP-ID(仅此报文中存在)
•由于有些链路状态数据库的信息较多,单个CSNP报文不能完整描述,所以CSNP报文引入了Start LSP-ID 和End LSP-ID 两个字段,用来说明一个CSNP报文所描述的LSP的范围。一个CSNP报文如果描述了整个链路状态数据库中的信息,那么它描述的LSP-ID 就起始于00.0000.0000-00, 结束于FFFF.FFFF.FFFF-FF。
•开始于0000.0000.0000.00-00。
•结束于ffff.ffff.ffff.ff-ff。
可变长字段(TLV):
PSNP报文格式:
专用报头:
PDU length
•整个PDU的长度。
Source-ID
•始发路由器系统ID。
可变长字段(TLV):
内容和CSNP类似,只是LSP entries字段只是部分的摘要信息。
参考资料:华为hedex文档、《HCIE路由交换学习指南》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。