最近的Cisco抛弃了其专有的IOS核心,在 ASR1000的控制平面软件上采用了Linux为基础平台。据传Huawei、H3C等厂商的软件平台也纷纷转向以Linux为基础,而以前他们都采用 vxWorks作为基础。几年前,就连vxWorks的开发者风河公司也宣布同时支持vxWorks和Linux。由此看来,Linux在网络设备领域取 代vxWorks几乎已成定局。这背后的原因究竟是什么?与vxWorks相比,Linux究竟有那些优势?

  在我看来,IBM支持Linux,是为了借Linux来挽救其规模庞大的服务器产品线,借助Linux拓展其软件服务市场。(注1)

  而网络设备上用Linux,并不在于Linux的技术有多先进,而是Linux所代表的产业链的发展速度超过了vxWorks,用Linux会使软件开发成本更低。

  Linux和vxWorks在技术上的主要差异在于:
  
  A、Linux的核心和用户进程之间是的地址空间隔离的,每个用户进程之间的地址空间是隔离的,当某一个用户进程崩溃的时候,不会影响操作系统核心和其他用户进程正常运行。
  B、Linux支持页面级的内存管理,支持换页。
  C、由于隔离的原因,使得Linux软件的各部分之间耦合性更小,Linux的应用程序跟核心之间有清晰的界限,POSIX API。
  
  总而言之,Linux充分利用了现代微处理器的MMU硬件,而VxWorks则采用平面地址空间(注2)。在某些高端设备上Linux的保护模式 的确可以让系统更稳定,至少更容易找Bug。这个特点也是也是长期依赖Juniper赖以攻击Cisco IOS的主要论据,因为Juniper的JunOS是基于freebsd的,也具有同样的特点,而Cisco的IOS核心与vxWorks类似(注3)。

  Linux除了具有上述技术优势之外,其实也还有很多缺点,如:
  
  (a)Linux的网络协议栈是针对主机优化的, 对于低端路由器这类设备,运行效率不高。
  (b) Linux的软件镜像较大,占用flash和内存空间大,对甚低端设备来说,成本高。
  (c)就总体运行效率而言,Linux比vxWorks 差,Linux系统调用开销大,Linux的动态连接库调用的开销也大,在某些硬件上Linux的进程间切换的开销也大等等。

  我认为,Linux相对于vxWorks的技术优势是微不足道的。导致网络设备厂商转向Linux的主要原因是 Linux代表产业链越来越成熟,用Linux的开发成本将远低于vxWorks。主要表现在:(a)支持Linux的软件越来越越多,而支持 vxWorks的软件越来越少,Linux下面有很多开源软件,而这些开源软件多半不支持vxWorks。现在用于网络设备的商业软件几乎都支持 Linux,如:Gated、Zebos、Trillium、InterPeek的协议栈等。(b)几乎所有的芯片都提供Linux驱动程序,几乎所有的CPU、评估板都提供Linux支持。(c)熟悉Linux的开发人员更好找。与Linux相比,vxWorks则越来越显得曲高和寡,其生存环境也越来越差。

  对于网络设备来说,选择哪种操作系统软件并不是决定成败的关键因素,操作系统只提供了一些如任务调度、任务间通 信、中断管理、内存管理等基本功能。在一个路由器中,操作系统软件占总代码量的5-20%,而且无论选择那种操作系统,这部分代码都是相对稳定的,不需要作太多修改和维护。但是如果操作系统选择不当,却可能增加很多开发成本。例如:如果你选择的CPU不被vxWorks支持,那么就必须自己开发其CPU支 持代码和BSP(注4)。如果某个以太网芯片没有vxWorks的驱动程序,那么你也不得不开发vxWorks的驱动程序。最让人无法忍受的事情是,现在用过vxWorks的人越来越少,会Linux编程的人越来越多,并且很多人非常熟练。

  如果说IBM选择Linux还带有一定的冒险成分的话,那么现在Cisco、H3C、Huawei等选择Linux,更多是无奈之举。


注1: 当时的Linux已经在互联网行业得到了广泛应用,像FTP、Web这类服务器程序在Linux上运行已经没有任何问题,并且有Sybyse、 Oracle、Infomix等一批商业数据库有Linux版本。有一大批刚刚从学校毕业不久的年轻技术人员熟悉Linux,Linux各种技术资料在互 联网随处可得,讨论Linux论坛网站也层出不穷,Linux在服务器市场的份额快速增长。虽然IBM的AIX在技术上暂时领先(这一点也许有人不同意, 但我认为在2001年左右的时候,Linux在技术上还远远赶不上AIX、Solaris等商业Unix。也许这个问题可以专门作为一个话题展开讨 论。),并且有良好的商业化支持,而且在金融等传统企业市场占有率暂时领先与Linux,但是其活力和前景却远远落后于Linux。对IBM来说,AIX 软件销售并不是其主要收入来源,IBM主要业务是软件服务、服务器硬件的研发和销售。在这种情况下,IBM押宝Linux,不失为明智的选择。当大批信仰 Linux的年轻技术人员逐渐掌握了决策权的时候,他们会在采购中更倾向Linux,这是他们会发现,这些产品中很多都是IBM的。

注2:这样说不完全准确,vxWorks在6.x版本中也提供了保护模式的支持,但这个不是vxWorks主要的特性,vxWorks下的大部分应用程序还没有用到这个特性。

注3:可能是基于某个QNX特殊版本的。

注4:有时候甚至这个工作是完全不可行的,某些CPU是跟Linux绑定了的,没有提供完整的寄存器文档。