ISIS路由协议
IS-IS概述
- isis是intermediate system to intermediate system 的简称。
- IS-IS最初是国际标准化组织ISO为它的无连接网络协议CLNP设计的一种动态路由协议。
- IETF对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI环境中,称为集成IS-IS。
- 集成IS-IS能够同时应用在TCP/IP和OSI环境中。后续提到的IS-IS协议,如无特殊说明均为集成IS-IS。
- isis是基于SFP算法的链路状态协议,也是一种内部网关协议。
- 适用于大型网络。
IS-IS常用术语
- CLNS:无连接网络服务
- CLNS由以下三个协议构成:
CLNP:类似于TCP/IP中的IP协议;
IS-IS:中间系统间的路由协议,即路由器之间的协议;
ES-IS:主机系统与中间系统间的协议,相当于IP中的ARP,ICMP等。 - NSAP:OSI协议通过NSAP(Network Service Access Point)来寻址OSI网络中处于传输层的各种服务,即NSAP类似于IP地址。
IS-IS整体拓扑
为了支持大规模路由网络,IS-IS在自制系统内采用骨干区域与非骨干区域两级的分层结构。一般来说
- Level-1路由器部署在非骨干区域
- Level2路由器和Level-1-2路由器部署在骨干区域
- 每一个非骨干区域都通过Level-1-2路由器与骨干区域相连
拓扑介绍 - 拓扑中为一个运行IS-IS协议的网络,整个骨干区域不仅包括Area 47.0001中的所有路由器,还包括其它区域的Level-1-2路由器。
- Level-2级别的路由器可以不在同一个区域,即可以属于不同的区域。
拓扑体现出的IS-IS与OSPF不同点 - OSPF中一条链路只属于一个区域;IS-IS中一条链路可以跨越不同的区域。
- OSPF中Area0被定义为骨干区域;IS-IS中Backbone指的不是一个特定的区域。
- OSPF中只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干网来转发;IS-IS中Level-1和Level-2级别的路由器分别采用SPF算法,分别生成最短路径树SPT。
IS-IS路由器分类
Level-1路由器
- Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,属于不同区域的Level-1路由器不能形成邻居关系。 Level-1路由器只负责维护Level-1的链路状态数据库LSDB,该LSDB包含本区域的路由信息。
- 到本区域外的报文转发给最近的Level-1-2路由器。
- Level-1路由器必须通过Level-1-2路由器才能连接至其他区域。
Level-2路由器
- Level-2路由器负责区域间的路由,它可以与位于同一区域或者不同区域的Level-2及Level-1-2路由器形成邻居关系。
- Level-2路由器维护一个Level-2的LSDB,该LSDB包含IS-IS所有区域的路由信息。
- 所有Level-2级别(即形成Level-2邻居关系)的路由器组成路由域的骨干网,负责在不同区域间通信。路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性。
Level-1-2路由器
- 同时属于Level-1和Level-2的路由器称为Level-1-2路由器,它可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻居关系;也可以与同一或者不同区域的Level-2路由器形成Level-2的邻居关系;还可以与同一或不同区域的Level-1-2路由器形成Level-2的邻居关系。
- Level-1路由器必须通过Level-1-2路由器才能连接至其他区域。
- Level-1-2路由器维护两个LSDB,Level-1的LSDB 用于区域内路由,Level-2的LSDB用于区域间路由。
IS-IS网络类型
IS-IS支持的网络类型
- 点对点网络:PPP、HDLC等链路
- 广播网络:Ethernet链路
- NBMA网络:帧中继
广播链路:DIS和为节点
- DIS:Designated Intermediate system 指定中间系统
- 功能:在广播网络实现更高效的数据库同步。
DIS
- 在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS。
- Level-1和Level-2的DIS是分别选举的。
- DIS优先级数值最大的被选为DIS。如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会被选中。
- 同一台路由器在不同level的DIS选举中可以设置不同的优先级。
- 优先级为0的路由器也参与DIS的选举,且DIS选举支持抢占。
- 同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系,但LSDB的同步仍然依靠DIS来保证。
- DIS用来创建和更新伪节点,并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。
伪节点
- 伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和一个字节的Circuit ID(非0值)标识。
- 使用伪节点可以简化网络拓扑。
- 当网络发生变化时,需要产生的LSP数量较少,减少进行SPF运算时的资源消耗。
ISIS DIS与OSPF DR/BDR的区别
- 在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举。
- 在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
- 在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间。
IS-IS报文类型
Hello PDU(IIH)用于建立与维持邻居关系
- Level-1 LAN IIH:用于广播网中Level-1 IS-IS使用
- Level-2 LAN IIH:用于广播网中Level-2 IS-IS使用
- P2P IIH:用于非广播网中使用
注:
- P2P IIH相对于LAN IIH来说,多了一个表示本地链路ID的Local Circuit ID字段,缺少了表示广播网中DIS的优先级的Priority字段和表示DIS和伪节点System ID的LAN ID 字段。
- 通过填充字段将IIH报文扩展到MTU大小,用于邻居之间协商发
送报文的大小。
LSP PDU用于交换链路状态信息
- Level-1 LSP:由Level-1 IS-IS传送。
- Level-2 LSP:由Level-2 IS-IS传送。
注:
- Level-1-2 IS-IS 则可传送以上两种LSP。
- LSP 报文中包含的主要字段有ATT字段、 OL字段和IS-Type字段。其中ATT用于标识该路由是L1/L2发送的,OL字段后续部分会介绍,IS-Type用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS(01表示Level-1,11表示Level-2)。
- LSP的刷新间隔为15分钟;老化时间为20分钟,但是一条LSP的老化除了要等待20分钟外,还要等待60秒的零老化时延;LSP重传时间为5秒。
SNP PDU(序列号报文)用于维护LSDB完整与同步,且为摘要信息
- CSNP
++ Level 1 CSNP
++ Level 2 CSNP - PSNP
++ Level 1 PSNP
++ Level 2 PSNP
注:
- CSNP包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10 秒);在点到点链路上,CSNP 只在第一次建立邻接关系时发送。
- PSNP包含部分LSDB中的LSP摘要信息,能够对LSP进行请求和确认。发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP。
IS-IS形成邻居关系的条件
- 同一层次:Level-2路由器不能和Level-1路由器形成邻居关系,但是Level-1-2路由器既能和同一区域的Level-1路由器形成Level-1邻居关系又能和相同或者不同区域Level-2路由器形成Level-2邻居关系。
- 同一区域:Level-1路由器只能与同一区域的Level-1路由器或者Level-1-2路由器形成Level-1邻居关系。
- 同一网段:链路两端IS-IS接口的地址必须处于同一网段。
- 相同网络类型:
- 根据原理,IS-IS 邻居关系的形成与IP 地址无关的,所以容易导致相互形成邻居关系的路由器间处于不同的IP网段。为了解决这一问题,华为设备进行同一网段检查,保证邻居关系的正确建立。
- 如果不需要检查对端地址,在P2P网络中,可以配置接口忽略IP地址检查;在广播网络中,需要先在接口下将网络类型修改成P2P网络,然后才可以配置接口忽略IP地址检查。
IS-IS邻接关系的建立
两台运行IS-IS的路由器在交互协议报文实现路由功能之前必须首先建立邻居关系。在不同类型的网络上,IS-IS 的邻居建立方式并不相同。
1、广播网络中邻接关系的建立
在广播网络上,使用LAN IIH报文来建立邻接关系。有两种类型的LANIIH:L1 LAN IIH(组播MAC:01-80-C2-00-00-14)和L2 LAN IIH(组播MAC:01-80-C2-00-00-15) 。 Level-1路由器通过交互L1 LANIIH报文来建立邻接关系;Level-2路由器通过交互L2 LAN IIH报文来建立邻接关系;Level-1-2路由器会同时交互L1 LAN IIH报文和L2 LAN IIH报文来建立邻接关系。
以两台L2路由器在广播链路上建立邻居关系为例:
- R1组播发送Level-2 LAN IIH(组播MAC:01-80-C2-00-00-15),此报文中无邻居标识。
- R2收到此报文后,将自己和R1的邻居状态标识为Initial。然后,R2再组播向R1回复Level-2 LAN IIH,此报文中标识R1为R2的邻居。
- R1收到此报文后,将自己与R2的邻居状态标识为Up。然后R1再组播向R2发送一个标识R2为R1邻居的Level-2 LAN IIH。
- R2收到此报文后,将自己与R1的邻居状态标识为Up。这样,两个路由器成功建立了邻居关系。
因为是广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔再进行DIS的选举。 Hello报文中包含Priority 字段,Priority值最大的将被选举为该广播网的DIS。若优先级相同,接口MAC地址较大的被选举为DIS。 IS-IS中DIS发送Hello时间间隔为10/3秒,而其他非DIS路由器发送Hello间隔为10秒。
IS-IS和OSPF关于邻接关系的区别
- IS-IS两个邻居路由器只要相互交换HELLO数据包就认为相互形成了邻接关系;而OSPF中,两台路由器进入2-Way状态则被认为形成了邻居关系,只有进入Full状态才被认为建立了邻接关系。
- IS-IS中,优先级为0的路由器也可以参与DIS选举;而OSPF端口优先级为0表示不参与DR选举。
- IS-IS中,DIS是基于抢占的;OSPF中DR/BDR选举结束后不得被抢占
2、P2P邻接关系的建立
在P2P网络上,邻居关系的建立不同于广播网络,分为两次握手机制和三次握手机制。
两次握手
- 只要路由器收到对端发来的Hello报文,就单方面宣布邻居为Up状态,建立邻居关系。
- 容易存在单通风险。
三次握手
- 此方式通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,类似广播网络中邻居关系的建立。
IS-IS LSP交互过程
1、广播网络中LSP的交互过程
新加入的路由器与DIS LSDB同步交互过程
- 假设新加入的路由器R3已经与R2(DIS)和R1建立了邻居关系。
- 建立邻居关系之后,R3将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻居都将收到该LSP。
- 该网段中的DIS会把收到R3的LSP加入到LSDB中,并等待CSNP报文定时器超时(DIS每隔10秒发送CSNP报文)并发送CSNP报文,进行该网络内的LSDB同步。
- R3收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP。
- DIS收到该PSNP报文请求后向R3发送对应的LSP进行LSDB 的同步。
上述过程中DIS的LSDB 更新过程如下
- DIS接收到LSP,在数据库中搜索对应的记录。若没有该LSP,则将其加入数据库,并组播新数据库内容。
- 若收到的LSP序列号大于本地LSP的序列号,就替换为新报文,并组播新数据库内容;若收到的LSP序列号小于本地LSP的序列号,就向入端接口发送本地LSP报文。
- 若两个序列号相等,则比较Remaining Lifetime(剩余生存时间)。若收到的LSP 的Remaining Lifetime 小于本地LSP 的Remaining Lifetime,就替换为新报文,并组播新数据库内容;若收到的LSP 的Remaining Lifetime 大于本地LSP 的Remaining Lifetime,就向入端接口发送本地LSP 报文。
- 若两个序列号和Remaining Lifetime都相等,则比较Checksum。若收到的LSP的Checksum大于本地LSP 的Checksum,就替换为新报文,并组播新数据库内容;若收到的LSP的Checksum小于本地LSP的Checksum,就向入端接口发送本地LSP报文。
- 若两个序列号、 Remaining Lifetime 和Checksum 都相等,则不转发该报文。
2、P2P网络中LSP的交互过程
P2P网络LSDB同步过程
- 建立邻居关系之后,R1与R2会先发送CSNP给对端设备。如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP。
- 假定R2向R1索取相应的LSP。则R1发送R2请求的LSP的同时启动LSP重传定时器,并等待R2发送的PSNP作为收到LSP的确认。
- 如果在接口LSP重传定时器超时后,R1还没有收到R2发送的PSNP报文作为应答,则重新发送该LSP直至收到PSNP报文。
在P2P链路中设备的LSDB 更新过程如下
- 若收到的LSP比本地的序列号更小,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认;若收到的LSP比本地的序列号更大,则将这个新的LSP 存入自己的LSDB,再通过一个PSNP 报文来确认收到此LSP,最后再将这个新LSP发送给除了发送该LSP的邻居以外的邻居。
- 若收到的LSP序列号和本地相同,则比较Remaining Lifetime,若收到LSP的Remaining Lifetime 小于本地LSP的RemainingLifetime,则将收到的LSP存入LSDB中并发送PSNP报文来确认收到此LS,然后将该LSP发送给除了发送该LSP的邻居以外的邻居;若收到LSP的Remaining Lifetime大于本地LSP的Remaining Lifetime,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。
- 若收到的LSP和本地LSP的序列号和Remaining Lifetime都相同,则比较Checksum,若收到LSP的Checksum大于本地LSP的Checksum,则将收到的LSP存入LSDB中并发送PSNP报文来确认收到此LSP,然后将该LSP发送给除了发送该LSP的邻居以外的邻居;若收到LSP的Checksum小于本地LSP的Checksum,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。
- 若收到的LSP和本地LSP的序列号、 Remaining Lifetime和Checksum都相同,则不转发该报文。
在P2P网络中,PSNP的作用
- 作为Ack应答以确认收到的LSP。
- 用来请求所需的LSP。