知道OpenBox源于SIGCOMM 2016的会议,这个会议的影响力在计算机和通信领域的专家相信都知道,CCF推荐的A类会议,一年接收文章的数量也就在30篇左右,但是每一篇质量非常高(也会有大公司推销产品的),影响力也非常大,即使一些workshop的文章引用率也非常高。可以说,SIGCOMM代表了计算机通信领域的最高水平。
OpenBox这项工作事实上在2015年SIGCOMM的HotMiddleBox就出现过,今年直接被主会录用。下面本文将对这项工作的背景,技术路线以及开源工具进行一一分析介绍。
OpenBox是一个用于提供网络功能(Network Functions)和网络虚拟化实施和管理的软件定义系统框架。该框架共包含三大逻辑层次(如下图所示):
1)用户定义的OpenBox应用程序。这些应用程序通过OpenBox北向接口提供网络功能规程。
2)一个逻辑集中式的OpenBox控制器将多种多样的网络功能囊括其中,并能够通过OpenBox协议来控制数据层操作。
3)最底层的数据层全部通过软件来定义,或某些特定的硬件支持。
这项工作是由欧盟的FP7支持,主要团队由以色列的一个研究中心和Hebrew大学承担。
OpenBox项目的动机源于他们认为目前SDN解决方案过分强调了数据层的可编程性,但是在网络功能和中间件的支持方面却不足。从OpenBox的层次来看,其实仍然延续了SDN的框架模式,在这方面并没有做太大的突破。所以,我们可以这样理解,OpenBox是一种深度SDN实现框架。
OpenBox的基础在于对常用的网络应用程序的抽象。例如,防火墙的处理流程首先示处理数据包,然后根据数据包头部进行分类,在进行分类后决定是否进行丢包处理或者通知管理员(如下图)。
而相应的,另外一种常用的网络应用程序,入侵检测系统,其处理流程与防火墙工作流略有不同,在进行数据包头部分类后,进行了正则表达式分类,如下图所示:
从上面两个例子不难看出,网络应用程序的工作流可以由一些网络功能构成。这也正是OpenBox的出发点和基础。OpenBox目前共定义了40种这种抽象的网络功能基本块。
OpenBox的技术实现目前已经开源,在Github上该项目的所有工作可以通过下面的链接[3]找到。其中下面安装过程会使用到obsi和moonlight控制器这两个工具。除此之外,MoonlightFirewall和MoonlightSnort是他们论文中用来推自己工作使用到的两个例子。
下面,对OpenBox-mininet的安装和使用进行简要介绍。
我使用的操作系统是Ubuntu 14.04, mininet使用apt-get进行安装。OpenBox提供了非常良好的shell脚本,可以直接下载或者通过wget进行下载,具体的安装命令如下:
在安装过程中,我们需要做的就是在需要输入Yes的情况下输入Y并回车。安装的时间稍微有点长,主要原因是这一过程需要安装OpenBox service instance(相当于data plane device,可以当作OpenvSwitch),还有Moonlight控制器。这是OpenBox自己实现的控制器,其中实现了自定义的网络功能规程和南北向接口协议(注意,并不是OpenFlow)。
安装完成后,在安装脚本的同一目录下,会多出来两个目录:obsi和moonlight。其中,obsi是数据层面的实例,而moonlight是OpenBox的控制器。
进入Moonlight目录之后,直接运行./start_moonlight,OpenBox控制器就会被启动,如下图:
目前关于OpenBox的技术资料很少,只有在发表的论文中谈及里面使用的技术,本文的后续将会对OpenBox的技术进行更加深入的分析。
参考资料:
1、openboxproject官网
2、Anat Bremler-Barr, Yotam Harchol, David Hay. "OpenBox: A Software-Defined Framework for Developing, Deploying and Managing Network Functions". Accepted to ACM SIGCOMM, Florianapolis, Brazil. 2016.
3、https://github.com/OpenBoxProject
4、https://github.com/OpenBoxProject/openbox-mininet