一、 IS-IS协议简介
  IS-IS(Intermediate System-to- Intermediate System)是ISO(International Organization for Standardization)的标准协议,该协议与无连接网络服务(Connectionless Network Service, CLNS)和其它ISO路由协议一起使用。IETF也已经通过一系列RFCs将IS-IS与IP路由集成在一起。 
 IS-IS是链路状态协议,它采用最短路径优先算法(Shortest Path First, SPF或者Dijsktra)来计算通过网络的最佳路径。IS-IS提供两级路由——层次1(Level1, L1)路由区域间通过层次2(Level 2, L2)路由进行互联,L2路由域有时也被称为核心。 
 IS-IS用有层次的地址分配将一个自治域分为多个L1路由区域,并区分L1和L2之间的路由。同一区域内的所有节点都使用L1路由互通,不同区域里的节点之间使用L2路由互通。 
 IS-IS是链路状态协议,路由器向其所在区域(L1或L2)内的其它路由器扩散与之相连的链路状态,从而传递拓扑信息,每个路由器会对接收到的其它路由器发来的链路状态数据包(Link-State Packet, LSP),运用SPF算法找到网络里每个目的地的最短路径。  由于链路状态协议中的任何路由器都依赖于路由区域中所有其他的路由器,路由器的数据库里有防止路由循环的信息,所以IS-IS通常不允许对路由信息进行过滤。  端系统和中间系统 
 IS-IS用两个不同的hello-type协议来建立邻居和交换信息——ES-IS和IS-IS。端系统和中间系统(End System-to-Intermediate System, ES-IS)协议被路由器用来发现主机(和主机发现路由器)和交换配置信息以及将数据包重定向到更好的路径。 
 IS-IS协议在路由器之间建立和维护邻居(中间系统),功能上类似于OSPF里用来发现和维护邻居的hello协议。
二、 IS-IS与OSPF的比较
1) IS-IS 只定义了两种网络拓扑类型:broadcast(广播多路访问)和general topology。在Cisco路由器中链路分为point-to-point 和broadcast。 OPSF定义了5种网络类型:point-to-point、point-to-multipoint、broadcast和NBMA,以及virtual links
2) 两种协议都维护一个链路状态数据库(Link State Database) IS-IS使用LSP(Link State PDU),LSP自己就是一个数据报; OSPF使用LSA(Link State Advertisements),LSA必须被封装(encapsulate)在OSPF报头和IP报头内。
3) 两种协议都使用SPF算法来计算路由 IS-IS在域内(intra-area)运行Level 1 SPF计算路由,在域间(inter-area)运行Level 2 SPF计算路由; OSPF在域内(intra-area)运行SPF计算路由,在域间(inter-area)运行距离向量算法(distance vector algorithm)来计算路由。
4) 两种协议都使用域(area)来建立两层分级的网络拓扑结构 IS-IS的骨干不是特定的一个域,而是由连续的Level 2 路由器组成; OSPF的骨干必须有而且必须为area 0; IS-IS的域边界是在路由器之间的链路(link)上; OSPF的域边界是在路由器上; IS-IS的两层分级的网络拓扑结构不是必须的,网络可以完全由Level 1 路由器或完全由Level 2 路由器构成。 OSPF的必须有area 0,可以只有一个area,但必须是area 0。
5) IS-IS的特性之一是:IS-IS路由器最多能有3个域地址(area addresses),这在域间传输中很有用。
6) 两种协议都是无类路由协议,都在area间汇总(summary)
7) 两种协议处理错误(corrupted)LSP/LSA的方法不同: IS-IS中任何一个路由器都能丢弃(purge)corrupted LSP; OSPF中只有corrupted LSA的发送者(originator)才能丢弃(purge)它。
8) 在广播网络(broadcast network)中两种协议都要建立adjacency关系 IS-IS中,只要neighbor的Hello数据报中有你的identity,adjacency关系就建立成功。该阶段经历一个三次握手的过程:Down→Init→Up。 OSPF中,建立adjacency关系前经历的过程:Down→Init→Two-way→Exstart→Exchange→Uploading→Full。
9) IS-IS neighbors会建立adjacency关系,即使Hello-intervals或Hello multipliers不同; OSPF neighbors不会建立adjacency关系,如果Hello-intervals或Dead-intervals不同。
10) 在广播网络(broadcast network)中两种协议都要选择一个DIS/DR IS-IS中DIS是动态选择的,即若有更高优先级或更大的地址的路由器加入网络,则新加入的路由器成为DIS; OSPF中DR相对稳定,即只要DR没有down掉,DR保持其地位; IS-IS中,广播网络中的路由器与所有的邻居建立adjacency关系; OSPF中,广播网络中的路由器只与DR和BDR邻居建立adjacency关系; IS-IS中,DIS不与它的neighbors同步(synchronize)。DIS生成the pseudonode for the LAN,并且每3秒发送PSNPs(partial sequence number PDUs)或每10秒发送CSNPs(complete sequence number PDUs)。其他的路由器也可以用PSNPs向DIS申请丢失的LSP或发送给DIS一个新的LSP。因为DIS能flood PDUs,所以DIS不需要与其neighbors同步(synchronization);有因为不需要与其neighbors同步(synchronization),所以不需要BDIS。 OSPF中,DR/BDR用单播(unicast)传送DDP的方式分别与其他的所以路由器同步(synchronization)。
11) 两种协议都有认证(authentication) IS-IS只支持简单认证; OSPF支持简单认证和MD5认证。
12) IS-IS的L1/L2路由器不向L1路由器发布L2路由。L1路由器就象OSPF中的完全端域(totally stubby area)。
13)ISIS 协议的配置中没有一个类似于OSPF协议中的ip ospf network命令的配置选项,因此在NBMA中做为“HUB”的ROUTER必须被配置为point to point subinterfaces(包括地址的改变),以便每一个PVC链路都在不同的SUBNET中。
三、 IS-IS协议配置常用命令

基本配置命令:
1. Router(config)# router isis [tag] 启动IS-IS路由进程,tag用于区别多个IS-IS进程。
2. Router(config-router)# net network-entity-title 为路由进程配置NET地址。注意:因为这个地址用于毗邻关系的形成和路由计算时的路由器识别,所以即使在纯IP路由的网络中依然要进行配置。
3. Router(config-if)# ip router isis在相应接口下启用IS-IS对IP路由的支持。
4. Router(config-if)# clns router isis在相应接口下启用IS-IS对CLNS路由的支持。
5. Router(config-router)# is-type {level-1 | level-1-2 | level-2-only}全局模式下配置路由器的角色,缺省为L1/L2(Station/Area)。
6. Router(config-if)# is-circuit-type {level-1 | level-1-2 | level-2-only}接口模式下配置毗邻关系的类型,缺省为L1/L2。
7. Router(config-if)# isis metric default-metric {level-1 | level-2}为两级路由分别指定缺省度量值,缺省为10。
常用show命令:
1、 show clns显示关于CLNS的总体信息,较少使用。
2、 show clns protocol [tag]类似于show ip protocol,显示协议总体信息,运行该协议的接口以及重分布的情况。
3、 show clns interface [type number]显示指定接口下的毗邻关系建立情况,电路路由级别类型,度量值,DIS协商的优先级以及计时器等信息。
4、 show clns neighbors [type number] [detail]显示毗邻关系表。
5、 show isis topology/route(新/旧)显示IS-IS路由协议的一级路由表
6、 show clns route类似于show ip route显示CLNS路由协议的路由表。
7、 show isis database显示拓扑结构数据库的内容。
8、 show ip protocol与所有其它IP路由协议一样,显示路由整体系统,运行该协议的接口,重分布信息以及路由信息源。
四、 IS-IS故障检测

  1、 检验毗邻关系首先检查接口状态是否UP,用show cdp neighbor detail检查链路是否可以通讯,用show clns neighbor和debug isis adj-packet检验毗邻关系建立的情况。在使用show clns neighbor命令时,应该注意协议类型(IS-IS not ES-IS),毗邻关系状态(UP not Init)
2、 检验LSPs内容是否正确可以使用show isis database detail命令检查链路状态数据库,注意链路条目的数量和度量值是否正确。
3、 检验LSPs是否被正确Flooding,链路状态有否达到同步。可以使用命令show clns traffic、debug isis local-updates或debug isis update-packet命令(后两个是典型的实验室命令)检验链路状态更新消息的发送情况。
4、 SPF计算结果是否存在问题。使用show isis topology、show isis route或show ip route(Old command)来检验。
5、 监视性能。当然是show process cpu