握手报文
路由器的接口一旦启动 IS-IS 进程,就会发出 Hello 报文,用以发现邻居并形成邻接关系。Hello 报文中除了包含
发送路由器的 System-ID 之外,还包含了发送端全局和接口的一系列参数,这些参数如果被邻居路由器接受了,那么就
能形成邻接关系,否则不建立邻接关系。
在 LAN (广播网络) 和 P2P (点对点网络) 中形成邻接关系的过程稍有不同,使用的 Hello 报文也有些区别,下面
是三种 IIH:
点到点 IIH:用于点到点网络
L1 LAN IIH:用于广播网络 Level-1 邻接
L2 LAN IIH:用于广播网络 Level-2 邻接
Hello 报文格式各字段解释
和所有的 IS-IS 报文一样,Hello 报文由报头和 TLV 构成,LAN Hello 和 P2P Hello 携带的信息及 TLV 略有不同,
下图显示了 LAN 中 Hello 报文格式。
LAN Hello 报文各字段解释如下。
Circuit Type (接口类型):标识发送端接口的层次
System-ID (系统 ID):标识发送端路由器的系统 ID。
Holding Timer (保持计时器):表示发送端路由器宣告邻接关系失效的超时时间,默认是发送 Hello 间隔时间的 3 倍
PDU Length (报文长度):表示整个 IS-IS 报文的长度。
Priotity (优先级):标识发送端接口的优先级,用来在 LAN 中选举 DIS,默认值=64.
System-ID {DIS}:标识了发送端接口对应的链路上的 DIS 的系统 ID。
Area Address (区域地址):标识了发送端路由器的区域,使用类型 1 的 TLV。
IS Neighbor (邻居列表):标识了发送端路由器的邻居,使用类型 6 的 TLV。
IP Interface Address (es) (接口 IP 地址):标识了发送端路由器所有已经启动了 IS-IS 进程的接口 IP 地址,
使用类型为 132 的 TLV。
Protocols Supported (支持的协议):标识发送端路由器所支持的网络层协议,使用类型 129 的 TLV。
Restart Signaling (重启信令):标识发送端路由器是否支持 GR。
Multi Tpology (多拓扑):表示发送端路由器是否支持多拓扑。
Padding (填充):填充字段,用于将 Hello 包填充至 MTU 大小,使用类型 8 的 TLV。
ISIS 在点对点网络中使用的 Hello 和 LAN 有些区别,下图显示了点对点网络中的 Hello 报文的格式。
通过对比 LAN 和 P2P 网络的 Hello 报文,可以发现,P2P Hello 报头中没有 Priority 和 System-ID {DIS} 这两
个字段,原因是 P2P 网络中不需要 DIS;同时 P2P Hello 报头中新增了一个 Local Circuit ID (本地电路 ID) 字段,
用来标识发送端接口。此外,在 TLV 字段中,P2P Hello 携带了一个点对点邻接状态:Point-topoint 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 间隔时间及超时时间。