IS-IS是国际标准化组织ISO为它的无连接网络协议CLNP设计的一种动态路由协议。
随着TCP/IP协议的流行,为了提供对IP路由的支持,IETF(Internet Engineering Task Force )在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI环境中,称为集成IS-IS(Integrated IS-IS或Dual IS-IS)。
在IS-IS中,路由器被描述为是一个中间系统(Intermediate System,IS),主机被描述为端系统(End System,ES)。因此提供主机和路由器之间的通信的协议即为ES-IS;而路由器之间的通信即为IS-IS。
和IP中使用Proxy ARP或IRDP,或在主机上配置默认网关不同的是,CLNP会在ES和IS之间形成ES-IS的邻接关系。
随着IPv6网络的建设,同样需要动态路由协议为IPv6报文的转发提供准确有效的路由信息。IS-IS路由协议结合自身具有良好的扩展性的特点,实现了对IPv6网络层协议的支持,可以发现、生成和转发IPv6路由。
IS-IS是一种链路状态路由协议,每一台路由器都会生成一个LSP,它包含了该路由器所有使能IS-IS协议接口的链路状态信息。
通过跟相邻设备建立IS-IS邻接关系,互相更新本地设备的LSDB,可以使得LSDB与整个IS-IS网络的其他设备的LSDB实现同步。然后根据LSDB运用SPF算法计算出IS-IS路由。如果此IS-IS路由是到目的地址的最优路由,则此路由会下发的IP路由表中,并指导报文的转发。
Level-1路由器
Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,属于不同区域的Level-1路由器不能形成邻居关系。
Level-1路由器只负责维护Level-1的链路状态数据库LSDB(Link State Database),该LSDB包含本区域的路由信息,到本区域外的报文转发给最近的Level-1-2路由器。
Level-2路由器
Level-2路由器负责区域间的路由,它可以与同一或者不同区域的Level-2路由器或者其它区域的Level-1-2路由器形成邻居关系。Level-2路由器维护一个Level-2的LSDB,该LSDB包含区域间的路由信息。
所有Level-2级别(即形成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-1-2路由器形成Level-2的邻居关系。Level-1路由器必须通过Level-1-2路由器才能连接至其他区域。
Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由。
IS-IS只支持两种类型的网络,根据物理链路不同可分为:广播链路:如Ethernet、Token-Ring等;点到点链路:如PPP、HDLC等。
对于NBMA(Non-Broadcast Multi-Access)网络,需对其配置子接口,并注意子接口类型应配置为P2P。IS-IS不能在点到多点链路P2MP(Point to MultiPoint)上运行。
在IS-IS中,可以通过Network Entity Tiyle(NET)来同时定义区域ID和系统ID。即使集成IS-IS只使用在TCP/IP的环境中,由于它是以CLNP为基础的,所以仍然要配置OSI CLNP地址。
IS-IS报文有以下几种类型:HELLO PDU(Protocol Data Unit)、LSP和SNP。
Hello PDU
Hello报文用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)。其中,广播网中的Level-1 IS-IS使用Level-1 LAN IIH;广播网中的Level-2 IS-IS使用Level-2 LAN IIH;非广播网络中则使用P2P IIH。它们的报文格式有所不同。
P2P IIH中相对于LAN IIH来说,多了一个表示本地链路ID的Local Circuit ID字段,缺少了表示广播网中DIS的优先级的Priority字段以及表示DIS和伪节点System ID的LAN ID字段。
LSP
链路状态报文LSP(Link State PDUs)用于交换链路状态信息。LSP分为两种:Level-1 LSP和Level-2 LSP。Level-1 LSP由Level-1 IS-IS传送,Level-2 LSP由Level-2 IS-IS传送,Level-1-2 IS-IS则可传送以上两种LSP。
LSP报文中主要字段的解释如下:
ATT字段:当Level-1-2 IS-IS在Level-1区域内传送Level-1 LSP时,如果Level-1 LSP中设置了ATT位,则表示该区域中的Level-1 IS-IS可以通过此Level-1-2 IS-IS通往外部区域。
OL(LSDB Overload)字段:过载标志位。
设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过过载路由器的路由时不会被采用。即对路由器设置过载位后,其它路由器在进行SPF计算时不会使用这台路由器做转发,只计算该节点上的直连路由。更多内容请参见后面介绍的-IS-IS过载位。
IS Type字段:用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS(01表示Level-1,11表示Level-2)。
SNP
序列号报文SNP(Sequence Number PDUs)通过描述全部或部分数据库中的LSP来同步各LSDB(Link-State DataBase),从而维护LSDB的完整与同步。
SNP包括全序列号报文CSNP(Complete SNP)和部分序列号报文PSNP(Partial SNP),进一步又可分为Level-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP。
CSNP包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒);在点到点链路上,CSNP只在第一次建立邻接关系时发送。
PSNP只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行确认,当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP。
定义区域和地址
在ISIS中,所有区域间数据流都必须穿越L2主干区域。因此,必须规划CLNS地址,以实现两级的层次结构。必须确定哪些路由器将作为主干(L2)路由器,哪些路由器将作为(L1/L2) ABR,哪些路由器作为内部区域(L1)路由器。
如果有些路由器必须同时进行L1和L2路由选择,还应确定接口参与哪种路由选择。
路由器的CLNS地址被称为NET,它由3个主要部分组成:
– 区域地址(前缀):标识路由器所在的区域
– 系统ID:唯一地标识设备。在Cisco设备上为定长6字节。在每个区域中系统ID必须要保证唯一性。
– NSEL:作为NET,这个字段必须为0
启用集成ISIS
router(config)#router isis [area-tag]
#在全局下启用ISIS。还可以使用可选的名称来标识多个ISIS进程(就像在同一台路由器上可以存在多个OSPF进程一样)。进程名称只对本地有意义;如果省略,则Cisco IOS软件将假定它为0。
如果要使用多个ISIS进程,则进行网络规划时应配置哪些接口分别参与哪些ISIS进程。
router(config)#clns routing
#默认情况下,IP路由选择被启用,而CLNS路由选择是被禁用的。要启用CLNS路由选择,除了在全局模式下使用这个命令以外,还必须在每个接口上启用CLNS路由选择。在TCP/IP环境中可以不必要开启这个功能。
配置路由器的NET
router(config-router)#net 49.0000.0000.0000.0001.00
#配置NET以标识路由器。即使只将ISIS用于IP路由选择(没有启用CLNS路由选择),也必须配置NET。因为集成ISIS依赖于CLNS路由选择的支持。
在适当的接口上启用集成ISIS
包括那些连接到末节IP网络的接口,比如环回接口(尽管他们没有CLNS邻居)
router(config-if)#ip router isis [area-tag]
#在需要使用ISIS来分发其路由选择信息的接口上进行配置。如果有多个ISIS进程,还必须使用area-tag字段指明此接口属于哪个ISIS进程。
router(config-if)#clns router isis [area-tag]
#在接口上启用ISIS路由选择进程,以支持CLNS路由选择。
修改ISIS路由器的级别
router(config-router)#is-type {level-1/level-1-2/level-2-only}
#默认的ISIS配置将路由器设置为L1/L2路由器。这种配置的缺点就是路由器需要同时发送L1和L2 Hello,并需要同时维护L1和L2 LSDB。
修改ISIS接口级别
router(config-if)#isis circuit-type {level-1/level-1-2/level-2-only}
#尽管路由器可以配置成L1/L2路由器,但是可能并不需要在其所有接口上建立两种类型的邻接关系。为了让ISIS在这些情况下效率更高,需要将接口配置成只发送必要类型的Hello报文。
修改ISIS度量值
router(config-if)#isis metric metric_number {level-1/level-2}
#ISIS规范定义了4种度量值。默认度量值为成本,所有路由器都支持它;延迟、花费和差错是可选的度量值。延迟度量值指的是传输延迟,花费是链路的经济成本,差错度量值指的是链路出现错误的可能性。对于同一个接口,可以为L1和L2指定不同的度量值。metric取值范围为1~63。
配置ISIS的IP路由汇总
router(config-router)#summary-address prefix mask [level-1/level-1-2/level-2] [tag tag-number] [metric metric_value]
#路由器将IP路由汇总为L1、L2或L1/L2,默认为L2(level-2)。
可选的tag-number用于标记汇总的路由,可选的metric_value用于指定汇总路由的度量值。
虽然这个命令适用于所有的ISIS路由器,但它只能汇总来至外部ISIS的L1路由(重分发到ISIS L1中的路由)。