IS-IS形成邻居关系的条件
- 同一层次
- 同一区域
- 同一网段
- 相同网络类型
不同层次类型的路由器不能形成邻居关系,即Level-2路由器不能和Level-1路由器形成邻居关系,但是Level-1-2路由器既能和同一区域的Level-1路由器形成Level-1邻居关系又能和相同或者不同区域Level-2路由器形成Level-2邻居关系。
由于IS-IS是直接运行在数据链路层上的协议,并且最早设计是给CLNP使用的,IS-IS邻居关系的形成与IP地址无关,所以容易导致相互形成邻居关系的路由器间处于不同的IP网段。但在实际的实现中,由于只在IP上运行IS-IS,所以是要检查对方的IP地址的。为了解决这一问题,华为设备进行同一网段检查,保证邻居关系的正确建立。如果网络需要不检查子网掩码,在P2P网络中,可以配置接口忽略IP 地址检查;在广播网络中,需要将以太网接口模拟成P2P接口,然后才可以配置接口忽略IP地址检查。
邻居建立过程
两台运行IS-IS的路由器在交互协议报文实现路由功能之前必须首先建立邻居关系。在不同类型的网络上,IS-IS 的邻居建立方式并不相同。
- 在广播网络上
在广播网络上,使用LAN IIH报文来建立邻接关系。有两种类型的LAN IIH:L1 LAN IIH(组播MAC:01-80-C2-00-00-14)和L2 LAN IIH (组播MAC:01-80-C2-00-00-15) 。Level-1路由器通过交互L1 LAN IIH报文来建立邻接关系;Level-2路由器通过交互L2 LAN IIH报文来建立邻接关系;Level-1-2路由器会同时交互L1 LAN IIH报文和L2 LAN IIH报文来建立邻接关系。
以两台L2路由器在广播链路上建立邻居关系为例:
1、R1组播发送Level-2 LAN IIH(组播MAC:01-80-C2-00-00-15),此报文中无邻居标识。
2、R2收到此报文后,将自己和R1的邻居状态标识为Initial。然后,R2再组播向R1回复Level-2 LAN IIH,此报文中标识R1为R2的邻居。
3、R1收到此报文后,将自己与R2的邻居状态标识为Up。然后R1再组播向R2发送一个标识R2为R1邻居的Level-2 LAN IIH。
4、R2收到此报文后,将自己与R1的邻居状态标识为Up。这样,两个路由器成功建立了邻居关系。
5、 因为是广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔再进行DIS的选举。Hello报文中包含Priority 字段,Priority值最大的将被选举为该广播网的DIS。若优先级相同,接口MAC地址较大的被选举为DIS。IS-IS中DIS发送Hello时间间隔为10/3秒,而其他非DIS路由器发送Hello间隔为10秒。
- 在p2p链路上
在P2P链路上,邻居关系的建立不同于广播链路。分为两次握手机制和三次握手机制。
1、两次握手
只要路由器收到对端发来的Hello报文,就单方面宣布邻居为Up状态,建立邻居关系。但是容易存在单通风险。
3、三次握手
此方式通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,类似广播邻居关系的建立。
IS-IS和OSPF关于邻接关系的区别
1、IS-IS两个邻居路由器只要相互交换HELLO数据包就认为相互形成了邻接关系;而OSPF中,两台路由器进入2-Way状态则认为形成了邻居关系,但是只有进入Full状态才被认为进入完全邻接关系。
2、IS-IS中,优先级为0的路由器亦然可以参与DIS选举;而OSPF汇总优先级为0表示不参与选举。
3、IS-IS中,DIS是基于抢占的;OSPF中DR/BDR已经选举不得抢占。