1.7 独立且平等
OSPF和IS-IS详解
与TCP/IP相比,OSI协议对各国政府、电信运营商以及许多其他机构的吸引力要更大一点,因为ISO是一家按流程和规矩办事的组织,而IETF则不那么“循规蹈矩”。由于上面提到的那些机构代表了很大一部分客户群体,因此那时有许多计算机和网络设备供应商都开始着手开发兼容OSI参考模型的协议族。Novell (NetWare)、Banyan (VINES)、General Motors(通用汽车公司)(MAP 和TOP)、Apple(苹果公司)(AppleTalk)以及许多其他公司也都急不可耐地吹嘘自家网络OS的架构如何符合OSI参考模型(其实有时候也是“削足适履”)。
但是,只有数据设备公司(Digital Equipment Corporation ,DEC)在OSI协议的实现方面取得重大进展,该公司开发出的协议也成为了OSI协议的代名词。DEC公司在20世纪70年代中期便已经研发出了自己的数字网络架构(Digital Network Architecture,DNA),并先后开发出了4个版本的DECnet软件,作为DNA的实现。该公司把DECnet的版本称为阶段(phase),说准确点,DECnet的1-4版本就是DECnet Phases I–IV。1987年,DEC公司推出了DECnet Phase V,并于1991开始销售支持DECnet Phase V的产品1。为了在架构上符合OSI参考模型,最新的第5版DECnet软件在前期1-4版的基础上做了大幅改动。ISO也认可了DEC公司的这一“劳动成果”,因此,我们现在所说的OSI协议族跟DECnet Phase V几乎没有任何区别。
内置于DECnet Phase V的网络路由协议,正是由Radia Perlman、Mike Shand、Dave Oran以及其他前辈在DEC公司开发。ISO自然也“照单全收”,作为其IS-IS路由协议。“之所以把路由CLNP数据包的ISO标准称为IS-IS,”Perlman在一本书中写道,“是因为所有其他称谓(例如,ISO10589中的这段话“中间系统到中间系统域内路由信息交换协议[Intermediate system to Intermediate system Intra-Domain routing information exchange protocol]与……结合使用”)都很糟糕2。”
大约在1987年(即ISO将IS-IS采纳为其标准路由协议的同时),IETF也意识到了需要开发出一种链路状态内部网关协议。在那个时代,NSFNET骨干网和许多地区性的网络在部署路由协议时,只有两种选择:一、配置静态路由;二、在需要使用动态路由协议的地方部署RIP。从网络管理的角度来看,静态路由毫无可扩展性而言;而RIP的诸多缺陷也注定其可扩展性极差,而那些缺陷在ARPANET初期运行Bellman-Ford型路由协议时,早已暴露无疑。凭借着专为ARPANET开发的SPF路由协议,以及在ARPANET内运行此类路由协议的经验,IETF认为有必要开发出一种具备高可扩展性,适用于大型网络的链路状态IGP。
于是,在IETF内部形成了两派。一派把目光盯在了IS-IS身上,他们认为,在有现成的链路状态路由协议可用的情况下,重新开发一种新协议意义不大。干吗不对IS-IS做一番改进,令其支持TCP/IP呢?另一派则不想让如此重要的协议受控于外部组织,何况这个组织还是官场味十足的ISO。在他们看来,IETF的行事风格不但已得到了证明,而且人人都觉得很爽,那为何不开发出一种开放的、非私有的ARPANET版SPF协议——OSPF协议呢?这一开放的SPF协议与TCP/IP的融合度也一定会更好。ISO对TCP/IP不屑一顾的态度,使得这一派打心眼里憎恨ISO;他们不接受IS-IS,只是因为该协议是ISO的标准。
IETF也没打算让两派决个高下,而是采取了一种妥协的做法,同时接受了“改造”IS-IS以及“自造”OSPF的建议,并把两种协议作为平等而又独立的协议来对待。就这样,IETF分别成立了IS-IS和OSPF工作组。
IS-IS工作组于1990年完成了对IS-IS的改造,令其能够支持TCP/IP,这一经过改造的IS-IS版本被命名为“集成(Integrated)”或“双(Dual)”IS-IS。IS-IS针对IP的扩展功能发表于RFC 1195,作者是Ross Callon,一名DEC公司的工程师,此前他曾效力过BBN公司3。
OSPF工作组于1989年10月推出了首版OSPF。然而,此版OSPF(OSPFv1)暴露出了几处操作层面的问题,而且某些地方还无法优化,因此从未得到正式部署。工作组对其进行了改进,于1991年7月推出了OSPFv2,并发表于RFC 1147,作者是John Moy4。Moy当时效力于Proteon公司,这是一家早期的路由器厂商。他与Callon一样,同为前BBN公司的工程师。
1990年,OSPF在几个地区性网络内得到了成功部署。1991年10月,在INTEROP内部署也大获成功。Moy写道:“要想搞一次华而不实的路由协议示范操作非常困难。当路由协议运行正常时,一般人根本就不知道它的存在5。”
在整个开发过程中,两个工作组相互取长补短。比如,OSPF和IS-IS共有的在广播网络内选举指定路由器的概念,是最先用于IS-IS的。两个工作组还同时吸取了ARPANET内运行SPF路由协议的教训。比方说,1980年10月27日发生的ARPANET全网瘫痪(详情请见RFC 789),很大程度上要归咎于协议报文字段中序列号的循环取值方式。于是,IS-IS和OSPF不约而同地采用了序列号的线性取值方式(详见第2章)。两个工作组都同时认识到了自适应性路由度量值的复杂性,于是便规定了可配置的非自适应型路由度量值。
20世纪90年代中期,Cisco公司正逐步向具有统治性地位的Internet骨干和区域性网络路由器销售商迈进。Cisco公司于1991年开始让路由器同时支持OSPF和OSI版本的IS-IS;又过了几年,该公司又发布了支持IP的集成IS-IS的实现。对IS-IS影响最深的事件发生在1994年,那一年,Cisco路由器开始支持NLSP,这也使得IS-IS在世界各地众多ISP的网络中得到了部署。
几年之前,Novell公司也开始为其NetWare网络操作系统开发链路状态路由协议。在Neil Castagnoli的指导下6,Novell公司发布了自己的NetWare链路服务协议(NetWare Link Services Protocol,NLSP)。NLSP基本上照搬了IS-IS,只是可以路由Novell IPX数据包而已。(NLSP发布后不久,Radia Perlman便火速加盟了Novell公司,从而书写了一段借IS-IS的东风创造NLSP的神话。)
开发出NLSP实现之后,Cisco公司决定重写IS-IS代码,以求尽可能地将NLSP和IS-IS这两种非常类似的协议,以单协议(IS-IS)的方式融合进IOS。该项目由Dave Katz负责,Cisco最终夙愿成真,得到了稳定而又健壮的IS-IS实现。那时,Cisco的OSPF实现还欠精致,服务提供商对此很不满意。在受到当时OSI协议狂躁症的刺激之后,许多ISP都把IGP改成了IS-IS,并自此成为该协议的忠实拥趸,时至今日仍痴心不改。如今,Cisco公司的OSPF代码早已变得“稳如磐石”,但1994~1996年间OSPF给那些ISP留下的不良印象,让他们至今都认为IS-IS比OSPF可靠得多。
1James Martin和Joe Leben,DECnet Phase V: An OSI Implementation,Digital Press,1992年。
2Radia Perlman,Interconnections:Bridges and Routers,268页,Addison-Wesley,1992年。
3Ross Callon,“Use of OSI IS-IS for Routing in TCP/IP and Dual Environments”,RFC 1195,1990年12月。
4John Moy,“OSPF Version 2”,RFC 1247,1991年7月。
5John Moy,OSPF:Anatomy of an Internet Routing Protocol,Addison-Wesley,1998年。
6Hannes Gredler和Walter Goralski,The Complete IS-IS Routing Protocol,第5页,Springer,2005年。