Juniper公司一直高调宣传他们只有一个操作系统(OS, Operating System),JUNOS,贯穿其所有产品,大大降低了用户网络的管理成本,不像其竞争对手,有很多个操作系统,管理困难,…,云云。Juniper所谓的竞争对手,也就是思科(Cisco),却好像每宣布一个新产品,就推出一个新的操作系统–边缘路由器ASR 1000的操作系统是IOS XE,网络交换机Nexus 7000的操作系统是NX-OS,再加上原有的核心路由器CRS-1的操作系统IOS XR,以及思科传统的IOS操作系统。看起来,Juniper和思科的OS战略有所不同,那么,一个和多个OS,到底哪个更好?
直觉告诉我们,当然是一个更好。多个不同的OS增加用户的维护成本和学习时间,很多网络设备用户也表示同意这一看法。但是从商业角度来看,多个OS似乎并未使思科丢失市场份额。据Dell’Oro公司数据,2007年,思科在总额是42亿美元的企业级路由器市场的份额是82%,在47亿美元的电信商边缘路由器市场占54%,27亿美元的核心路由器市场占55%。Juniper在上述市场都是第二位,分别占据5%,18%,和30%。在局域网(LAN)交换机市场,思科占总额18亿美元的71%,Juniper的份额可忽略不计,因为其EX系列交换机上个月才刚刚开始交付。
让我们首先从技术上比较一下思科的传统OS,IOS,和Juniper的JUNOS。IOS起源于1987年,大概每两年发布一个重要的升级版本,目前最新版本是12.4;JUNOS起源于1996年,每三个月定期发布一个新版本,目前最新版本是9.0版,大概含有两千万行源代码(IOS和JUNOS一样,主要源代码都是C语言)。IOS起步较早,发展过程是从小逐步到大,整个OS就是一个进程(Process)。也就是说,所有的功能模块共享同一个地址空间。这样的话,一个模块的Bug可能会影响到其它模块,甚至造成整个系统当机;另外,如果某个模块需要更新,必须先停机,加载新的OS,再重新启动。JUNOS起步比IOS要晚将近十年,它一开始就是一个模块化的OS,在开源的FreeBSD的基础上开发。Juniper改写了BSD的网络部分,如TCP/IP stack和路由协议,以及用户界面,硬件管理部分等,各个功能模块都是独立的进程。可以说,与IOS相比,JUNOS是一个更加现代的OS, 一个模块的Bug影响其他模块的可能性较小,比较容易Debug。另外,JUNOS可以进行不停机的功能升级。从用户的角度来看,IOS和JUNOS的用户界面类似,都是使用所谓的CLI(Commend Line Interface);在网络功能上,它们都支持标准的协议,MPLS,RIP,OSPF,BGP,VPN等等,由于市场竞争激烈,在网络功能方面,IOS和JUNOS基本上完全相同。
IOS诞生于思科还是初创公司之时,随着思科的成长壮大,它兼并了120多家公司,许许多多的来自五湖四海的代码也不断的加入IOS,使得IOS对于不同的设备,衍生出许多不同的版本。您如果看到过IOS的“Upgrade Tree”,就知道它不是“tree”,更像一片茂密的森林。IOS含有如此多来源不定的代码在同一个地址空间内运行,可想而知,Debug是多么的艰难。
所以,思科的OS战略是用三个OS逐步取代IOS。IOS XR用于核心路由器(Core Router),IOS XE用于边缘路由器,NX-OS用于数据中心的网络交换机。三个都是模块化的OS,IOS XE和NX-OS基于Linux内核(目前Linux的代码质量已经全面超过BSD,JUNOS 1996年起步时Linux还不成熟,如果Juniper现在起步,大概也会选择Linux),IOS XR基于一个兼容POSIX的微内核(Microkernel), 名叫QNX。IOS的各个功能模块被移植到这些新的OS,作为单独的进程运行于内核之上。
当然,战略归战略,实现起来非常复杂,完成这一工作需要不是一年、两年,而是五年、甚至十年。再加上IOS的数十万的Installation Base,在可预见的将来IOS会长期存在下去。另一方面,虽然Juniper一直宣称他们的JUNOS贯穿其所有设备,那么他们真的只有一个OS吗?当然不是。除JUNOS外,Juniper的边缘路由器的OS是JUNOSe,虽然名字中也有JUNOS,但JUNOSe和JUNOS完全是两码事;防火墙产品用的是ScreenOS;其它OS还有JUNOS ES,IVE OS,NetScreen-IDP,WXOS,和CTP等。可见一个OS也只是Juniper的战略,但战略和现实总有一定的距离。和思科一样,Juniper的这些OS也是来自其收购的几个公司(JUNOSe来自Unisphere,ScreenOS、IVE OS、NetScreen-IDP来自NetScreen,WXOS来自Peribit,等等),往JUNOS的集成工作也在不断进行,例如JUNOS 9.0中就集成了ScreenOS的许多功能模块。但集成工作进展缓慢,在这些OS消失之前,Juniper很可能又兼并了新的公司,他们大概永远都不会只有一个OS。不过,Juniper的产品比思科少很多,历史也比较短,所以其OS的混乱情况要比思科好很多。
理论上讲,对于一家网络设备厂商来说,一个OS要好于多个OS。但是,不论是思科还是Juniper,由于许多技术和非技术上的原因,长时间内都需要开发和维护多个OS。那么,他们就应该尽量使各个OS的用户界面相同,降低用户的使用和学习难度。在这一点上,思科做得较好,其IOS和三个后续OS的CLI基本兼容。而Juniper的各个OS的CLI完全不一样,这大概和用户不从Juniper购买成套网络设备有关,还有就是Juniper的主要产品都已经运行JUNOS,包括T系列,M系列,MX系列,E系列,和J系列路由器和交换机等。