本文是我对学习完OSPF和ISIS后的一点总结,其中很多推断只是本人总结,并不确保其正确性,欢迎指导。



    OSPF是IETF根据TCP/IP参考模型设计的路由协议,而ISIS是ISO根据OSI参考模型设计的路由协议。



    从其LSDB可以看出,OSPF的最小管理单元为network。AS中所有RT必须清晰描述出每个network所处的位置。由于RT的每个端口代表一个子网,因此每个端口以及其连接子网就成为了OSPF的管理单元(这就是为何OSPF neighbor建立full-adj前要求对端端口在同一子网,因为每台RT必须确保neighbor对相连子网的认识与自己相同)。



    整个ISIS包括了从主机(level 0)到AS(level 3)的路由发现定义。ISIS中的最小管理单元为NET。全网中所有IS都必须清晰地描述出其余IS所在的位置(level 1的IS还包括所在区域ES)。而IP子网信息则作为TLV附于LSP中。可以说,在集成ISIS里,NET属于控制平面的内容,IP属于转发层面的内容。后面可以看到,把转发层面和控制层面分离开来所带来的好处。



    这里提出了“管理单元”的概念,主要是为了说明为何OSPF的运行效率要比ISIS差。由于Dijkstra算法在拓扑没有改变时不会产生全网的泛洪和计算,因此集中讨论当拓扑产生变化时两种SPF的差别。假设一个点到点full mesh网络共有n台RT(IS),则链路数量应该为n*(n-1)/2,SPF运行效率的参考值为:生成LSA个数*参与SPF计算的路由器数。



    一、首先关注链路变化的差异。链路变化分为以下情况:1、新增链路;2、删除链路;3、修改链路。由于之间差异不大,因此考虑其中一种:链路修改的情况:



    (一)对于OSPF而言,每条链路(子网)都是一个管理单元。无论出现上述哪种情况,该链路所对应的RT都必须生成1个LSA并泛洪到整个area里。因此对应的LSA数量为n;由于每台RT都必须重新计算SPF,因此效率参考值为n。



    (二)对于ISIS而言,情况差别不大,因为子网作为TLV附加在LSP中,因此链路状态变化同样影响到LSP的泛洪和SPF计算,但由于每条链路涉及到两台IS,即两个管理单元,因此SPF运行效率为2n。



    由于ISPF和PRC两种快速优化只是针对特殊情况,故不作考虑。



    二、接着是关注RT(IS)变化的差异。同样只考虑修改路由器的情况:



    (一)对于OSPF而言,由于每个节点关联n-1条链路,因此涉及到的的LSA为n-1个;当泛洪时,所有n台RT都处理这n-1个LSA,因此运行参考值为n(n-1);



    (二)对于ISIS而言,每台IS只对应一个LSP,因此全网只需要泛洪1个LSP,并由n台IS进行SPF运算,因此运算效率为n。



    上述拓扑是为了使差异最大化。实际环境中两者的差异会相对少一些。但无论如何,在处理链路状态变化时,ISIS的效率较低(考虑到ISIS使用PRC,效率会更高一些);而在处理节点状态变化时,ISIS的运行效率则远远高出OSPF。



    OSPF多区域的一个重要实现是,所有非骨干区域必须直接连接到骨干上。剔除虚链路的实现,这个限制有何意义呢?可以回想一下,ABR以type 3 summary lsa通告直连区域到骨干时,并没有携带一个非常重要的参数:区域ID。因为缺乏了这个参数,OSPF没有办法防止区域间路由环路的产生。由于OSPF域间路由采用DV的形式建立路由表,可以考虑一下RIP和BGP两种DV协议的防环路实现:RIP采用水平分割防止路由反向广播,但不能防止超过一跳的环路;最大跳数限制路由环路进入路由表,但OSPF没有跳数的概念;eBGP则采用AS-PATH记录所经过的AS拒绝重复的路由,但域间OSPF没有携带area参数;至于iBGP,只能采用类似水平分割的方式防止路由环路,这个和OSPF如出一辙,只能从设计的角度防止问题,而且如同iBGP引入route-reflector后有可能造成环路,为OSPF引入虚链路的设计必须慎之又慎。



    但ISIS也没有通告区域信息,却可以使其骨干区域无限制延伸呢?实际上,ISIS的处理形式与OSPF有所不同。ISIS首先计算管理层面(NET)的可达性,然后再计算转发层面(IP子网)的可达性。由于NET信息包含了area ID,而只要确保了NET之间没有形成环路,则转发层面上的IP子网也不会出现环路。也就是说,ISIS与eBGP类似,通过区域特征值防止DV算法中的环路。



    OSPF注定最适合支持IP路由协议。由于其管理单元为IP子网,几乎不需要任何其他额外的信息即可描述出全网IP子网的分布。相比之下,ISIS只能把IP子网作为其中末节TLV来泛洪。但在IPv4向IPv6的过渡里,OSPF完全落在下风。一方面,OSPF v3的一个明显特征是,保留控制平面中ip v4特性并在转发平面中添加ip v6特性。可以看到,OSPF v3中所使用的router-id等用于控制平面的信息全部使用ip v4的格式,而新增的LSA所使用的ip v6信息;另一方面,正是因为OSI所定义的七层模型中严格分离了网络层和数据链路层的内容,造就了ISIS三层协议无关性,使其在向IPv6过渡时获得巨大的优势:添加一种TLV,仅此而已。夸张的说,甚至可能连进程都不用重启即可完成过渡。