IS-IS近年来由于Cisco的力推,得到了比较大范围的应用。IS-IS和OSPF作为两种典型的链路状态路由协议,很多人希望知道他们的异同点和各自的优点,本文对这两种协议做了些总结,很多都是自己的观点,仅供参考。不当之处,欢迎讨论!

相同点:

IS-IS和OSPF是链路状态路由协议的两个最典型的代表,都采用SPF算法来计算路由;

由于具有快速收敛、无环路等特点,IS-IS和OSPF都能很好地支持大型网络,但从全球的部署来看,采用OSPF的还是占了多数,而IS-IS在近几年开始得到比较多的应用;

IS-IS和OSPF一样采用Hello协议来维护邻居关系,但IS-IS的Hello协议与OSPF比起来,相对简单的多;

IS-IS和OSPF都采用分层路由的概念,都有骨干区域,为网络规划提供了比较灵活而且实际的设计方案;

为了控制链路状态数据库的规模和复杂度,IS-IS和OSPF在广播网络上都选举DR来担任数据库同步的主要角色,但在细节处理上还是有较大的差别的;

对协议报文的验证能力是所有高级路由协议所必须具备的功能,IS-IS对于协议报文的验证处理是有些特别的,它按照Level和PDU类型来处理;

IS-IS和OSPF对路由开销的度量(metric)都采用了接口可配置的cost,能够比较正确地反映网络的实际情况;

在支持大型网络的时候,触发更新的Update方式比周期性广播方式要节约大量的协议报文所产生带宽消耗;

对于每个LSP(LSA)都有一个记时器相关联,正常情况下在一定时间内(较长时间)会更新重新计时,如果在规定时间内没有收到新的更新,将从数据库中清除该LSP(LSA),不再用做路由计算用;

对于边缘区域中的路由器,一是通过区域划分,二是通过设置区域类型来减少对路由器资源的需求。IS-IS可以将区域中的路由器设置为level-1 only类型,OSPF可以将整个区域设置为stub、total-stub或NSSA来减少数据库的大小,同时保证正确路由。

不同点:

IS-IS最初是为ISO的标准协议,为CLNS设计的,后来增加了对IP的支持;而OSPF一开始就是IETF为IP网络设计的;

IS-IS协议直接在链路层上运行,报文直接封装在链路层报文中,支持CLNS、IP等多种协议;OSPF报文封装在IP中,只支持IP协议;

IS-IS协议中整个路由器只能全部属于一个区域,区域边界位于两个路由器之间,路由器的LSDB按Level来维护;而OSPF按接口来,一个路由器可以属于多个区域,为每个区域维护一个LSDB数据库;

OSPF通过特殊的区域ID Area0区来定义骨干区,而IS-IS是通过连续的L2路由器来组成骨干区;

IS-IS的采用的Hello协议比较简单,OSPF比较复杂;而且IS-IS检查比较宽松,邻居之间的Hello和Dead等间隔不一定必须一样,不象 OSPF要求必须一致才能形成邻居关系;IETF对IS-IS提供一个改进的3-way的Hello协议,现已有draft:draft-isis- 3way-04.txt(3-way handshake);

IS-IS的LSP生存时间是从20分钟(可配置)往下计算到0来清除旧的LSP,而OSPF是从0往最大值涨到60分钟(周期不可配置)来清除更新旧的LSA的;

IS-IS协议的DR选举比较简单,而且是抢占式可预见的,优先级最高的是DR,优先级别为0的也可能成为DR;为了保证变动比较小,OSPF协议DR选 举机制比较复杂并不可预见,优先级最高的不一定是DR,优先级为0的不可能成为DR,并且有BDR的概念,DR失败,BDR立即承担DR的职责,而IS- IS没有BDR,DR失败,重新选举DR;

IS-IS不支持P-2-MP类型的网络,并且NBMA网络都只能设置为子接口模拟成P2P来运行;OSPF可以很好地支持以下各种网络类型:Broadcast,NBMA,P-2-P,P-2-MP;

标准的IS-IS 接口cost取值为:0-63,对链路层区分不够,并且一个网络的metric达到1024就认为不可达;而OSPF接口cost取值范围为:0- 1024,一个网络的metric达到65535才认为不可达。IEFT在 draf-ietf-isis-traffic-02.txt中扩大了IS-IS的cost的取值范围和最大有效路径metric。

IS-IS的Level-1的区域只能是是OSPF中Total Stub区域样,依赖最近的区域边界路由器作为所有到区域外网络的出口,造成次优路由;而OSPF非常灵活,非骨干普通区域即可设置为普通区域,选择最优 路由,也可以设置为Stub,Total Stub,NSSA;IETF对IS-IS已经提供一个改进解决方法: RFC 2966: Domain-wide Prefix Distribution with Two-Level IS-IS;

IS-IS一个路由器在一个协议报文中插入所有它发布的IP前缀信息,如果大于发布链路MTU,将分片,当前一个IS-IS LSP最多分为255片,限制了大约只有3000个IP地址前缀; IETF对IS-IS提供一个改进解决方法,现已有draft:draft-isis-lsp-fragmets-04.txt;

IS-IS虽然在《ISO 10589》中虽然提出了virtual-link来修复分开的骨干区域,但目前厂商基本没有实现,在RFC 1195中也没有提出;OSPF可以很好地支持virtual-link来修复分开的骨干区域或让远端的普通区域连接骨干区;

RFC 1195中对于Level-1引入的外部可达信息,没有以Code 130的TLV作为IP External Reachability Information加入到LSP中,与区域内的路由信息无法区分开;而OSPF对于引入的外部路由统一以Type 5(NSSA的时候是Type 7再转换成Type 5)的LSA来区分处理。该问题已经在RFC 2966: Domain-wide Prefix Distribution with Two-Level IS-IS中解决;

IS-IS历史上是为CLNS路由而制定的,发展比较缓慢,对于IP的支持很多地方需要改进,虽然已经提出了draft,但大部分还没有形成RFC, CNLP和IP双环境使用的优势并不明显,是一个不是很成熟的协议; OSPF是专门为IP设计的,更适合IP的路由,发展成熟,标准化程度高,支持厂商多,使用多缺点暴露多,改进也多。