NOX – 现代网络操作系统

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




[注]本系列前面的三篇文章中,介绍了软件定义网络(SDN)的基本概念和相关平台。按照SDN的观点,网络的智能/管理实际上是通过控制器来实现的。本篇将介绍一个代表性的控制器实现——NOX。

现代大规模的网络环境十分复杂,给管理带来较大的难度。特别对于企业网络来说,管控需求繁多,应用、资源多样化,安全性、扩展性要求都特别高。因此,网络管理始终是研究的热点问题。

从操作系统到网络操作系统

早期的计算机程序开发者直接用机器语言编程。因为没有各种抽象的接口来管理底层的物理资源(内存、磁盘、通信),使得程序的开发、移植、调试等费时费力。而现代的操作系统提供更高的抽象层来管理底层的各种资源,极大的改善了软件程序开发的效率。

同样的情况出现在现代的网络管理中,管理者的各种操作需要跟底层的物理资源直接打交道。例如通过ACL规则来管理用户,需要获取用户的实际IP地址。更复杂的管理操作甚至需要管理者事先获取网络拓扑结构、用户实际位置等。随着网络规模的增加和需求的提高,管理任务实际上变成巨大的挑战。

而NOX则试图从建立网络操作系统的层面来改变这一困境。网络操作系统(Network Operating System)这个术语早已经被不少厂家提出,例如Cisco的IOS、Novell的NetWare等。这些操作系统实际上提供的是用户跟某些部件(例如交换机、路由器)的交互,因此称为交换机/路由器操作系统可能更贴切。而从整个网络的角度来看,网络操作系统应该是抽象网络中的各种资源,为网络管理提供易用的接口。

实现技术探讨

模型

NOX的模型主要包括两个部分。

一是集中的编程模型。开发者不需要关心网络的实际架构,在开发者看来整个网络就好像一台单独的机器一样,有统一的资源管理和接口。

二是抽象的开发模型。应用程序开发需要面向的是NOX提供的高层接口,而不是底层。例如,应用面向的是用户、机器名,但不面向IP地址、MAC地址等。

通用性标准

正如计算机操作系统本身并不实现复杂的各种软件功能,NOX本身并不完成对网络管理任务,而是通过在其上运行的各种“应用”(Application)来实现具体的管理任务。管理者和开发者可以专注到这些应用的开发上,而无需花费时间在对底层细节的分析上。为了实现这一目的,NOX需要提供尽可能通用(General)的接口,来满足各种不同的管理需求。

架构

组件

下图给出了使用NOX管理网络环境的主要组件。包括交换机和控制(服务)器(其上运行NOX和相应的多个管理应用,以及1个Network View),其中Network View提供了对网络物理资源的不同观测和抽象解析。注意到NOX通过对交换机操作来管理流量,因此,交换机需要支持相应的管理功能。此处采用支持OpenFlow的交换机。

操作

流量经过交换机时,如果发现没有对应的匹配表项,则转发到运行NOX的控制器,NOX上的应用通过流量信息来建立Network View和决策流量的行为。同样的,NOX也可以控制哪些流量需要转发给控制器。

多粒度处理

NOX对网络中不同粒度的事件提供不同的处理。包括网包、网流、Network View等。

应用实现

NOX上的开发支持Python、C++语言,NOX核心架构跟关键部分都是使用C++实现以保证性能。代码可以从http://www.noxrepo.org获取,遵循GPL许可。

系统库

提供基本的高效系统库,包括路由、包分类、标准的网络服务(DHCP、DNS)、协议过滤器等。

相关工作

NOX项目主页在http://noxrepo.org

其他类似的项目包括SANE、Ethane、Maestro、onix、difane等,有兴趣的同学可以进一步研究参考。

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

雁过留声

“NOX – 现代网络操作系统”有18个回复

  1. Will Chie 于 2011-03-01 11:52 下午

    读后感:
    看这个之前一定要理解open flow,作为一个只开发过网络安全设备的我来理解,这个flow可以理解为防火墙的session,而OF switch就相当于做fast path做的事情。
    至于slow path,则交由NOX去处理。

    NOX是一个带有编程接口的OS(相对而言,IOS就是不可编程的),用户可以通过NOX提供的API,编写应用程序来做一些自己想在slow path上做的工作,这个可以做很多事情,例如负载,基于策略的QOS等等,并且可以根据流量信息,形成自己想表现出来的network view,例如TOP10。

    不知道以上描述妥不妥,望各位老大指点。

    另有一事不明,请教:
    形成的network view是放到NOX中最后大家可以共享的么?还是自己只能看到自己形成的network view,只是通过NOX提供的一些接口展现出来。

  2. Will Chie 于 2011-03-02 12:18 上午

    另外,像NOX这类controller,有没有统一的编程接口(至少定义一套通用些的编程接口子集)?我觉得这个很重要,现在智能手机应用就挺郁闷,几乎没啥可移植性。

  3. 理客 于 2011-03-02 3:28 上午

    OPEN FLOW的理想是IP路由和交换设备全开放,这基本是在看得见的本世纪内很难完成的任务。但开发一个标准接口,根据客户需要把流量从转发设备引出来到外面的server,处理完后,再回注给转发设备,这个是目前现实的有一定意义的事

  4. 清华土著 于 2011-03-02 7:19 上午

    OpenFlow未必需要全开放,只要有接入层支持即可实现相当多的应用,例如楼上所说的Flow detour。

  5. kernelchina 于 2011-03-02 7:15 下午

    企业内部用还是有意义的吧,不像路由器,主要是在不同的组织之间交换。

  6. Will Chie 于 2011-03-02 7:24 下午

    有个问题,这些APP的编程能不能简单到让网络管理员很快掌握?我觉得对大多数很难。

    这样的话如果所谓下代网络普及后,会不会出现这样的公司(或工作室、自由职业者、兼职者),专门按照公司的需求去定制APP,甚至会提供一些已有的成熟的解决方案?

  7. donge 于 2011-03-07 7:07 上午

    open flow是不是用户可以自定义流量特征策略,将捕获流量送到controllor中,controllor开放一些API供用户再处理这些特征流量。

  8. netsitter 于 2011-03-07 10:42 上午

    貌似是:

    switch端:
    if (flow = match_flow(frame) == NULL) {
    deliver_to_controller(frame);
    } else {
    /* deny, permit, qos? blah blah */
    flow_process(flow, frame);
    }

    controller端:
    frame = frame_rcv();
    flow = controller_process(frame);
    push_flow_to_switch(flow, frame);

  9. netsitter 于 2011-03-07 10:43 上午

    晕,wordpress把空格都去掉了。

  10. sunset3000 于 2011-03-15 6:02 上午

    这几个开源项目的初衷还是为大学提供一个实验的环境,从商业应用的角度来说,路还很长。

  11. chinomango 于 2011-03-17 12:45 下午

    NOX根本不是一个OS。它只是一个openflow的控制器,是一个在LINUX上的小规模应用。做得事情很少,主要只是处理一些openflow switch不知道如何转发的包。

  12. huhu 于 2011-06-14 1:01 上午

    很新颖的论文,这里都有啊!

  13. 散人 于 2011-10-10 9:41 下午

    从技术上来讲of是没有前途的,但从商业上讲在某一时期是有些市场的,尤其是各厂家对新技术苦苦期盼以寻找新忽悠点的现在。

  14. 扯风头 于 2011-10-10 11:58 下午

    SMB内部用应该可以的,集中控制管理,简化方便,规模也不大.

  15. 初学者 于 2012-02-22 3:06 下午

    具有代表性的NOX是什么产品?

  16. bigrong 于 2012-09-17 7:13 下午

    NOX我觉得说是下一代操作系统还是不太严谨。
    NOX是在机器层面之上的虚拟,而非文章开头提到的操作系统层面的问题,个人觉得偷换了概念。
    从整体网络架构层面看,设备之间引入NOX是不错的。
    但是就个体层面,如何去演进下一代的OS呢?还是说因为整体架构引入了nox,所以个体上再做操作系统的升级意义不大了。因为之前看到的一些问题比如在线升级一些模块软件,在线热补丁其实都不需要了。因为在流表层面上的集中管控都解决了?

  17. matrix 于 2012-09-17 10:10 下午

    依然是传统路线,只不过在应用上略有创新

  18. matrix 于 2012-09-17 10:12 下午

    还是让matrix来一统江湖。哈哈,,,