建立邻接关系的原则
在 IS-IS 中,按如下原则建立邻接关系(无邻接关系):
1)仅具有同层次的相邻路由器,才有可能成为邻接关系。
2)对于 Level-1 邻接关系,路由器来说,Area ID 必须一致。
3)链路两端 IS-IS 接口的网络类型必须一致。
3)链路两端IS-IS接口的地址必须处于同一网段(默认情况下)。
对于主机的 IP Address 的要求:
1)由于 IS-IS 是直接运行在数据链路层上的协议,并且最早设计是给 CLNP 使用的,IS-IS 邻接关系的形成与 IP Address 无关。
2)但在实际的部署中,在 IP Network 上运行 IS-IS 协议时,需要检查对方的 IP Address 的。
3)如果接口配置 Sub IP Address,那么只要双方有某个 IP Address(Main IP 或者 Sub IP)在同一网段,就能建立邻接,不一定要主 IP 相同。
邻接关系的建立过程
两台运行 IS-IS 的路由器,在交互协议报文实现路由功能前,必须首先建立邻接关系。在不同类型的网络上,IS-IS的邻接建立方式并不相同。
在广播网络中,邻接关系建立过程
在广播网络中,使用三次握手建立邻接关系。
Down ⇒ Initial ⇒ Up
Down:邻接关系的初始状态。
Initial:收到IIH,但是报文中的邻接列表未包含路由器自身的System ID。
UP:收到IIS,且邻接列表中包含路由器自身的System ID。
R1及R2通过千兆以太接口互联,这两台直连的Level-1路由器建立邻接关系的过程如下:
1)在 Down 状态下,R1 组播发送 Level-1 LAN IIH,此报文中邻接列表为空。
2)R2 收到此报文后,将邻接状态标识为 Initial 状态,并再向 R1 回复 Level-1 LAN IIH 报文且标识 R1 为 R2 的邻接;
3)R1 收到此报文后,将其与 R2 的邻接状态标识为 Up 状态,并向 R2 发送标识 R2 为 R1 邻接的 Level-1 LAN IIH 报文;
4)R2收到此报文后,将自己与 R1 的邻接状态标识为 Up 状态;这样,两个路由器成功建立了邻接关系。
补充说明
Level-1 IIH 发送的组播地址为 01-80-C2-00-00-14;
Level-2 IIH 发送的组播地址为 01-80-C2-00-00-15;
在广播网络中,需要选举 DIS,在邻接关系建立后,路由器会等待两个 Hello 报文间隔,再进行DIS的选举。
在点到点网络中,邻接关系建立过程
在点到点网络中,邻接关系的建立使用两次握手方式:只要路由器收到对端发来的 Hello 报文,就单方面宣布邻接为Up状态,建立邻接关系。
两次握手机制存在的缺陷
比如,在单向网络中,会导致设备单方进入邻接关系,而对方仍旧出于 Down 状态(因为未收到回复)。
但是,这种问题多半会出现在某些特殊的网络环境中。
华为设备在点到点网络中使用 IS-IS 时,默认使用三次握手建立邻接关系。此方式通过三次发送P2P IIH最终建立起邻接关系。
邻居关系无法正常建立的原因
IS-IS邻居关系无法正常建立的原因有:
区域ID不一致。(只会影响level-1)
运行级别不一致。(注:在华为中如果系统级别和接口电路级别不同,以系统级别为准)
接口认证不一致。
system-id长度不一致或者system-id冲突。
IP地址不在同一个网段。(IS-IS在广播网中是开启源检查的,但是可以关闭)
邻接关系建立正常,但无路由
IS-IS协议邻接关系建立正常,但是却无法获取路由信息,可能有以下原因:
接口没有开启IS-IS协议
Metric值的类型不一致
设备做了路由策略
网络类型不一致
Cost-Style不匹配