网络设备操作系统(Linux .vs. vxWorks)

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




网络设备操作系统(Linux .vs. vxWorks)

2001年IBM大张旗鼓的宣布支持Linux,并投入10亿美金用于Linux相关开发。

最近的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绑定了的,没有提供完整的寄存器文档。

(4个打分, 平均:5.00 / 5)

雁过留声

“网络设备操作系统(Linux .vs. vxWorks)”有9个回复

  1. 中兴之象 于 2008-12-21 5:41 下午

    长远看
    flash和sdram的价格是下降
    人事费用是上升

    基于linux/BSD,软件的复用周期会加长,总体成本更低

  2. peterguo 于 2008-12-21 6:49 下午

    作为IT的开发从业人员,这点体会尤其深刻。作者的结论有些道理,产业链决定着厂商的选择,特别是在一个成本决定一切时代。但有时候选择是一种结合层面,比如说以前的legacy代码是基于什么样操作系统,转换到新的平台需要多少代价是一个重要的衡量尺度。

  3. remon 于 2008-12-21 6:53 下午

    的确是一个趋势,VxWorks用的越来越少了

  4. bob 于 2008-12-21 7:05 下午

    不知到microkernel以后的发展能否撼动linux.

  5. 陈怀临 于 2008-12-21 7:25 下午

    已阅,甚好。请正非和为贵同志斟酌,考虑并贯彻执行。

  6. softmaster 于 2008-12-22 1:05 上午

    1)本文所指的是嵌入式Linux吧
    2)如果使用嵌入式Linux,哪些Linux厂商能提供support?
    3) 如果只是依靠开源社区,估计很难有系统厂商来使用Linux

  7. slopover 于 2008-12-22 5:48 上午

    市面上有大量的Linux功能模块销售,可以极大的缩短一个厂商在某个功能上的开发时间

  8. faif 于 2008-12-26 4:33 下午

    linux就内核来说,不分嵌入不嵌入吧,高度可配置。厂商支持是个问题,但是有很多呀,专营的例如montavista,但是大的电信制造商一般in house的工程师都很强吧,这点问题不是很大。

    另华为初期搞路由的时候,还不是专研zebra的代码么。

  9. Jacky 于 2010-01-07 5:07 下午

    所言极是。。