ISIS报文及格式(2)

2020-09-09  本文已影响0人  虽然逆风依然不羁

ISIS报文分为四大类:Hello报文、CSNP报文、PSNP报文和LSP报文;

每一类报文又分为Level-1、Level-2两种报文,Hello报文多一个p2p类型Hello,共9种报文;

ISIS报文直接基于数据链路层协议封装,每个报文由通用报头、专用报头和TLV组成;

每种报文的通用报头(前8字节)是一样的,但是专用报头根据报文的不同而不同,每种报文所支持的TLV也不同;

1、通用报头


(1)域内路由协议区分符:ISIS网络层标识,值为0x83;

(2)报头长度:通用报头和专用报头的长度;

(3)版本:当前为1;

(4)System ID长度:发送报文的路由器的System-ID长度,华为使用6字节;

(5)报文类型:ISIS报文有Hello、CSNP、PSNP和LSP四大类,9种报文;

(6)版本:当前为1;

(7)预留位:暂未使用,值为0;

(8)最大区域地址数:支持的最大区域地址数,华为是3;

2、Hello报文及格式


Hello报文用于建立和维护邻接关系;

Hello报文是周期性发送的,如果等待时间到达时还没收到邻居的Hello,就宣告邻接关系失效;

默认发送Hello时间间隔是10s,邻居关系超时时间是hello间隔的3倍;

广播链路上,DIS发送hello的频率是普通路由器的1/3倍;

Hello报文有三种:点到点hello报文、Level-1 LAN hello报文和Level-2 LAN hello报文;

点到点IIH:用于点到点网络;

L1 LAN IIH:用于广播网络Level-1邻接;

L2 LAN IIH:用于广播网络Level0-2邻接;

在LAN(广播网络)和P2P(点到点网络)中形成邻接关系的过程稍有不同,所以使用的Hello报文也有些区别。

LAN hello报文格式

(1)Circuit Type:表示发送端接口的层次,Level-1 or Level-2;

(2)System-ID:表示发送端路由器的系统ID;

(3)Holding Timer:表示发送端路由器邻接关系失效的超时时间,缺省Hello时间的3倍;

(4)PDU Length:表示整个ISIS报文的长度;

(5)Priority:表示发送端接口的优先级,用来在LAN中选举DIS,缺省为64;

(6)System ID(DIS):表示发送端接口所在网段上DIS的系统ID;

(7)Area Address:表示发送端路由器的区域地址;

(8)IS Neighbor:表示发送端路由器的邻居MAC地址;

(9)IP Interface Address:表示发送端路由器所有启动ISIS进程的接口IP地址;

(10)Protocols Supported:表示发送端路由器支持的网络层协议;

(11)Restart Signaling:表示发送端路由器是否支持GR;

(12)Multi Topology:表示发送端路由器是否支持多拓扑;

(13)Padding:用于将hello报文填充至MTU大小;

P2P Hello报文格式

通过对比LAN和P2P网络的hello报文,可以发现:

(1)P2P hello报头中没有Priority和System(DIS)这两个字段,原因是P2P网络中不需要DIS,同时P2P hello报头中新增了一个Local Circuit ID字段,用来表示发送端接口;

(2)P2P hello携带了一个点对点邻接状态,这个字段携带了发送端路由器所有邻居系统ID、发送端接口ID及其邻接状态,在LAN hello报文中,等价的字段是IS Neighbor字段,这个字段表明了发送端路由器的所有邻居MAC地址;

3、CSNP报文及格式


CSNP报文用来描述LSDB,类似于OSPF的DD报文;

CSNP报文携带当前路由器LSDB中所有LSP的摘要信息;

摘要信息包括LSP ID、序列号、剩余生存时间和校验和;

(1)PDU length:整个CSNP报文的长度;

(2)Source-ID:发送端路由器的系统ID;

在P2P网络中,双方都会发送CSNP报文,在广播网络中,只有DIS会发送CSNP报文;

(3)Start LSP-ID:表示CSNP报文描述的LSP条目中第一条LSP的LSP-ID;

(4)End LSP-ID:表示CSNP报文描述的LSP条目中最后一条LSP的LSP-ID;

(5)LSP Entries:LSP条目,用来携带LSP摘要信息;

LSP摘要信息(LSP-ID、序列号、剩余生存时间和校验和),用来比较LSP新旧;

所有LSP的摘要信息按LSP-ID的升序依次排列在LSP条目中;

由于有些链路状态数据库的信息较多,单个CSNP报文不能完整描述,所以CSNP报文引入Start LSP-ID和End LSP-ID两个字段,用来说明一个CSNP报文所描述的LSP范围;

如果一个CSNP报文描述了整个LSDB中的信息,LSP-ID就起始于0000.0000.0000.00,结束于FFFF.FFFF.FFFF;

4、PSNP报文及格式


PSNP报文用来请求缺失或最新的LSP,在点对点网络中确认收到的LSP;

PSNP类似于OSPF中的LSR、LSAck两个报文;

PSNP报文携带部分LSP的摘要信息;

5、LSP报文及格式


LSP报文用来描述链路状态和路由信息,类似于OSPF中的LSA;

(1)PDU长度:表示整个LSP报文的长度;

(2)Remaining Lifetime:剩余生存时间,表示LSP到期之前的生存时间;

(3)LSP-ID:由源路由器的系统ID、伪节点ID和LSP分片号组成,在LSDB中唯一标识一条LSP;

(4)Sequence Number:LSP的序列号,4字节的无符号整数;

(5)Checksum:从Sys-ID开始到报文末尾所有字段的校验和;

(6)Type block标志位:

Partition Repair:区域修复位,表示是否支持区域修复,只在L2 LSP中生效;

Attachment:区域关联位,表示源路由器是否与多个区域相连;

Overload bit:超载位,表示源路由器内存和CPU资源已经严重不足;

IS Type:路由器类型,表示源路由器是L1路由器还是L2路由器;

1、LSP ID详解

LSP ID用来在LSDB中唯一标识一条LSP;

LSP ID总长8字节,由6字节系统ID、1字节伪节点ID和1字节LSP分片号组成;

伪节点ID值为0,表示LSP是由普通路由器发出的,非0表示LSP是由DIS发出的;

同时,系统ID和伪节点ID一起组成LAN ID;

一台路由器会把本区域的所有路由信息都放在一条LSP传送,如果路由信息很多,会导致LSP报文很大以至于超过发出接口的MTU,就需要将路由信息放在不同分段的LSP传送;

LSP第一个分段编号为0,第二个分段编号为1,如果某些分段在传递过程中丢失了,接收路由器会丢弃所有分段,LSP所有分段发生重传;

LSP ID主机名映射功能,可以使用主机名替换系统ID,动态主机名映射通过LSP报文发送,静态主机名映射仅在本地生效;

2、LSP序列号详解

LSP序列号用来表示被刷新的次数,是一个4字节长的无符号整数,从0开始计数,但是一台路由器启动ISIS进程后,第一次生成LSP序列号是1,以后LSP每重新生成(刷新)一次,序列号加1,最大值2的32次方减1;

假设路由器使用最新的LSP刷新间隔30s来不断生成新的LSP,需要约4085年才能耗完序列号;

当LSP序列号到达最大值,路由器的ISIS进程会停止LSP最大生成时间+零生存时间的时间,直到这条LSP在网络其他路由器的LSDB中老化并清除,接着路由器重新启动后生成一条序列号为1的新的LSP;

3、LSP校验和详解

校验和用来在接收端路由器上进行完整性检查,确保LSP在传送过程中没有被损坏;

校验和是利用校验和算法根据LSP中剩余生存时间字段之后到报文最后的内容计数出来的,这个值会在LSP源路由器计算一次,然后将结果放在校验和字段中:

LSP的接收路由器也会根据同样的算法和内容计算出一个校验和的值,用这个值和收到的校验和值进行比较,如果一致,说明报文是完整的;如果校验和不一致,说明LSP损坏了,丢弃该LSP;

4、LSP剩余生存时间详解

LSP最大生存时间为1200s,源路由器产生LSP时,会将剩余生成时间设置到最大年龄值,然后泛洪到区域中,这条LSP被存储在数据库中,它的剩余生成时间随着时间的推移而逐渐减少,如果没有及时得到刷新,这条LSP的剩余生存时间减少到0时,会从数据库中清除;

ISIS和OSPF一样,有周期性刷新,每隔900s刷新一次,当一条LSP收到源路由器的刷新时,剩余生存时间被重置到最大生存时间;

如果LSP没有得到及时刷新,LSP的剩余生存时间会逐渐减少到0,路由器在等待零生存时间60s,如果始发路由器还没发来更新,那么该LSP会被清除掉;

5、区域关联位ATT

(1)L1/2通告ATT置1的L1 LSP的条件是至少在骨干区域有一个活动的L2邻接;

(2)一台L1/2路由器在向L1区域通告的LSP中将ATT位设置为1,向L1区域内的路由器表明它具有到其他区域的路由信息;

(3)L1路由器根据这条LSP,生成一条指向最近的L1/2路由器的默认路由,用于将数据包发向其他区域;

(4)根据实际需要,配置L1/2是否通告ATT置位的LSP;

attached-bit advertise命令配置能让L1/2路由器在通告的L1 LSP中永远不设置ATT位;

attached-bit avoid-learing配置在接收到ATT置1的L1 LSP时,L1路由器不生成默认路由;

6、区域修复位Partition Repair

OSPF协议要求网络中的区域是连续的,并且只能有一个区域0,如果区域0不连续或其他区域没有直接连接区域0,需要使用虚链路来修复;

ISIS协议的区域修复是指L1区域被分裂后的修复,如果该位置1,表示源路由支持区域修复;

一个L1区域修复需要通过骨干区域(L2区域),通过骨干区域创建虚连接实现L1区域的修复,虚连接的端点是在该L1区域的两台L1/2路由器上,它们产生的L2 LSP会将P位置1;

7、过载位Overload

Overload位置1,表示源路由器的CPU和内存资源已经不足,数据流经过这台设备时可能得不到正常的转发;

如果一台路由器收到了Overload位置1的LSP,那么它在进行SPF计算时不会以过载的那台路由器作为中间转发设备,除了去往那台过载路由器的直连网络外;

设备可以自动进入过载状态(比如设备工作异常),在过载状态下,设备会删除所有引入或渗透进来的路由信息;

也可以通过手工设置让设备进入过载状态,比如在设备需要升级或维护时,需要将业务切换到其他路径转发;

OL位扩展应用示例:

由于ISIS协议向AS100下发默认路由,假设某一天,R2需要升级或维护,设备重启后,由于ISIS协议先启动BGP后启动,所以当AS100内部路由器有了R2的默认路由后,会将去往AS200的数据流发往R2,而此时R2的BGP还没完全收敛,数据包到达R2时就会被丢弃,导致路由黑洞;

(1)set-overload on-starup命令配置路由器重启时设置Overload位的时间,超过这个时间后,Overload位清除;

(2)set-overload wait-for-bgp命令配置路由器只有在BGP收敛完成后,才清除Overload位;

上一篇下一篇

猜你喜欢

热点阅读