从今天开始,给大家介绍IS-IS协议相关内容。本文主要内容是IS-IS Hello报文的相关结构和作用。
推荐阅读:
IS-IS详解(一)——IS-IS基础
IS-IS详解(二)——IS-IS邻居建立
IS-IS详解(三)——IS-IS 报文结构与功能
一、Hello包发送原则
可以通过在IS-IS视图中修改IS-IS的级别来控制IS-IS路由器发送的Hello包类型,同时,在运行IS-IS协议的接口上,也可以修改IS-IS的级别,而这也会对Hello包的发送造成影响,实际上,Hello包的发送有一个较为复杂的原则,具体如下:
L1和L2路由器在广播型链路上,只发相应级别的Hello包,此时发送的Hello级别只与IS-IS视图下配置的路由器级别有关,而与接口上配置的IS-IS链路级别无关。
默认情况下,L1/2路由器在广播型链路上既发送L1的Hello包,也发送L2的Hello包。但是L1/2路由器发送Hello包的类型收到链路上配置的IS-IS级别的影响,当链路上配置IS-IS级别为L1时,则该路由器在该链路上只发L1的Hello包,当链路上配置IS-IS级别为L2时,则该路由器在该链路上只发L2的Hello包。
二、Hello报文结构
(一)广播型链路上Hello包头
(二)P2P链路上Hello包头
三、Hello报文各字段功能
(一)Hello包头字段详解
Hello包头字段功能如下:
1、Reserved/Circuit Type。 表示路由器级别,0x01表示L1级别,0x02表示L2级别,0x03表示L1/2级别(注:此字段与链路上IS-IS级别也有关系,当必须路由器级别和接口级别均为L1/2,此时此字段才为L1/2,具体规则如本文第一章介绍相同)。
2、Source ID。 发送报文的IS-IS路由器SID,占6Byte。
3、Holding Time。 保持计时器,单位为秒,占用2Byte,默认为Hello-Interval的三倍。本字段的含义是告诉邻居本端失效的时间。这里IS-IS协议与OSPF不同,IS-IS允许建立邻居的相邻路由器之间Hello-Interval和Holding Time不一致。可以在路由器IS-IS视图下修改本字段时间,但是有一定的限制。
4、PDU Length。 本字段表示整个IS-IS报文的长度,包括头部、Hello报文以及后面的TLV字段的长度,占用2Byte。
5、Priority。 表示优先级,占用1Byte,但是该字段值使用了7个bit,因此该字段取值范围是0-127。该字段主要用于DIS的选举,且该字段越大越优先。当该字段值相等时,则比较MAC地址,越大越优先。
6、R。 预留字段,用0填充。
7、LAN ID。 用于描述链路上的伪节点DIS。
8、Local Circuit ID。 表示本地链路ID。
实际上,在Hello报文头字段,广播型链路上的Hello包和P2P链路上Hello包的区别在于广播型有独有的LAN ID和Priority字段,而P2P链路上有独有的Local Circuit ID字段。
(二)Hello包常见TLV字段功能
TLV机制即Type(类型)、Length(长度)和Value(值)的意思。
TLV机制允许路由协议只携带需要的属性,不需要的属性可以不携带,扩展性强,如果协议需要支持新的特性,则只需要开发新的TVL属性即可支持。在使用wireshark抓包时,如果字段的前面有一个“>”符号,则代表该字段为一个TLV字段。
Hello包常见的TLV字段如下:
1、Area Address。 区域地址,考虑到IS-IS协议中可配置3个以内的区域地址,因此该字段长度并不固定,因此该字段放在了TLV字段中。
2、IS Neighbor。 中间系统邻居,在广播型链路上,该字段使用邻居的MAC地址表示,但是在P2P链路上该字段使用路由器的System ID表示。
3、IP Interface Address。 接口IP地址。如果一个接口配置了多个IP地址,IS-IS协议默认携带所有的IP地址。
4、Protocol Supported。 表示本路由器支持的协议。
5、Restart Signaling。 主要用于重启动时使用。
6、Muti Topology。 主要用于多拓扑时使用。
7、Padding 。 填充字段,该字段全为0。
四、Hello抓包展示
(一)广播链路上IS-IS Hello包
(二)P2P链路上Hello包
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/119974828