openflow引领数据浪潮

上工艺课,老师让我们多关注下电子领域的发展,并顺口提了一句openflow,细看还挺有意思的,这里就做一个总结吧。

一、起源

随着互联网的发展,今天的互联网业务对互联网提出了越来越高的传输质量要求,如何修改互联网以满足新业务的需求,出现了改良派和改革派两种不同的做法。改良派认为可以在原有的基础设施上添加新的协议来解决问题,改革派则认为必须推到一切重来。改革派向自己提出这样的两个问题:“就自己目前掌握的知识,如果我从一个全新的开始设计互联网,我会怎么做”和“15年后的互联网应该是什么样子”。为此,改革派们开始了一系列新的设计方案,OpenFlow就是改革派提出的一种新型网络交换模型,与此相应的,他们还成立了OpenFlow交换机论坛(The OpenFlow Switch Consorlium,后文简称OpenFlow论坛)。
与那些动辄成立多年的论坛相比,OpenFlow论坛只是于2008年刚刚成立的新兴组织。OpenFlow论坛起源于斯坦福大学的“Clean slate”计划(斯坦福大学的“Clean slate ”计划是一个致力于研究重新设计互联网的项目,这个计划目前支持了大约10个不同方向致力于重新设计互联网的项目),最早的成员只有斯坦福大学的高性能网络研究组(The High Perfomance Networking Group)。随着论坛的发展,目前OpenFlow论坛已经变成一个由大学的研究者和网络管理者共同组成的开放论坛,吸引了来自麻省理工学院、加州理工学院等著名高校的教授以及Deutsche Telekom这样的大型电信公司的网络一线工程师加盟。论坛欢迎任何希望对网络进行革新的人加入,但有一个前提是加入者不能为任何网络设备制造商工作。作为未来互联网的设计者之一,OpenFlow论坛希望防止制造商的利益冲突被引入论坛。

二、基本原理
由于现在的网络暴露出了越来越多的弊病以及人们对网络性能需求的提高,于是研究人员不得不把很多复杂功能加入到路由器的体系结构当中,例如OSPF,BGP,组播,区分服务,流量工程,NAT,防火墙,MPLS等等。这就使得路由器等交换设备越来越臃肿而且性能提升的空间越来越小。
然而与网络领域的困境截然不同的是,计算机领域实现了日新月异的发展。仔细回顾计算机领域的发展,不难发现其关键在于计算机领域找到了一个简单可用的硬件底层(x86指令集)。由于有了这样一个公用的硬件底层,所以在软件方面,不论是应用程序还是操作系统都取得了飞速的发展。现在很多主张重新设计计算机网络体系结构的人士认为:网络可以复制计算机领域的成功来解决现在网络所遇到的所有问题。在这种思想的指导下,将来的网络必将是这样的:底层的数据通路(交换机、路由器)是“哑的、简单的、最小的”,并定义一个对外开放的关于流表的公用的API,同时采用控制器来控制整个网络。未来的研究人员就可以在控制器上自由的调用底层的API来编程,从而实现网络的创新。
OpenFlow正是这种网络创新思想的强有力的推动者。OpenFlow交换机将原来完全由交换机/路由器控制的报文转发过程转化为由OpenFlow交换机(OpenFlow Switch)和控制服务器(Controller)来共同完成,从而实现了数据转发和路由控制的分离。控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表,从而达到控制数据转发的目的。
因此,OpenFlow开启了一条网络创新的道路。如果OpenFlow得到广泛的应用和推广,则未来的网络将如曾经的计算机一样取得日新月异的发展。
流表由很多个流表项组成,每个流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口。流表项由头域、计数器和操作组成;其中头域是个十元组,是流表项的标识;计数器用来计数流表项的统计数据;操作标明了与该流表项匹配的数据包应该执行的操作。

三、OpenFlow的应用  随着OpenFlow/SDN概念的发展和推广,其研究和应用领域也得到了不断拓展。目前,关于OpenFlow/SDN的研究领域主要包括网络虚拟化、安全和访问控制、负载均衡、聚合网络和绿色节能等方面。另外,还有关于OpenFlow和传统网络设备交互和整合等方面的研究。

下面将举几个典型的研究案例来展示OpenFlow的应用。

1. 网络虚拟化 – FlowVisor[11]

网络虚拟化的本质是要能够抽象底层网络的物理拓扑,能够在逻辑上对网络资源进行分片或者整合,从而满足各种应用对于网络的不同需求。为了达到网络分片的目的,FlowVisor实现了一种特殊的OpenFlow Controller,可以看作其他不同用户或应用的Controllers与网络设备之间的一层代理。因此,不同用户或应用可以使用自己的Controllers来定义不同的网络拓扑,同时FlowVisor又可以保证这些Controllers之间能够互相隔离而互不影响。下图展示了使用FlowVisor可以在同一个物理网络上定义出不同的逻辑拓扑。FlowVisor不仅是一个典型的OpenFlow应用案例,同时还是一个很好的研究平台,目前已经有很多研究和应用都是基于FlowVisor做的。

3. OpenFlow的通信通道
2. 负载均衡 – Aster*x[12]

传统的负载均衡方案一般需要在服务器集群的入口处,通过一个gateway或者router来监测、统计服务器工作负载,并据此动态分配用户请求到负载相对较轻的服务器上。既然网络中所有的网络设备都可以通过OpenFlow进行集中式的控制和管理,同时应用服务器的负载可以及时地反馈到OpenFlowController那里,那么OpenFlow就非常适合做负载均衡的工作。Aster*x通过Host Manager和Net Manager来分别监测服务器和网络的工作负载,然后将这些信息反馈给FlowManager,这样Flow Manager就可以根据这些实时的负载信息,重新定义网络设备上的OpenFlow规则,从而将用户请求(即网络包)按照服务器的能力进行调整和分发。

3. OpenFlow的通信通道

3. 绿色节能的网络服务 – ElasticTree[13]

在数据中心和云计算环境中,如何降低运营成本是一个重要的研究课题。能够根据工作负荷按需分配、动态规划资源,不仅可以提高资源的利用率,还可以达到节能环保的目的。ElasticTree创新性地使用OpenFlow,在不影响性能的前提下,根据网络负载动态规划路由,从而可以在网络负载不高的情况下选择性地关闭或者挂起部分网络设备,使其进入节电模式达到节能环保、降低运营成本的目的。

四、Openflow简介和安装 

研究人员可以利用OpenFlow的试验性新技术来调整网络基础设施,从而增加带宽,优化时延和节约能源。OpenFlow是Clean Slate计划的部分内容,该计划的目标是重新设计互联网,让它可以对实际应用作出更多反应。研究员们认为可以用OpenFlow技术来测试现有网络上的新网络协议。被认为是 20个超前网络研发项目 之一。
这篇文章讲了更多的细节,以及与GINI计划的关系:
http://www.yeeyan.com/articles/view/93175/48733/dz目前,有三个版本供不同的人使用:
1.linux用户空间版,稳定,可靠,速度慢,操作简便,主要用于算法研究和软件研究,会C语言就够了。
2.linux用户空间-内核空间版,速度快,但修改和操作较麻烦,需要内核编程和底层驱动的知识,适合产品开发中的底层软件开发人员。
3.NETFPGA版,硬件加速,运行可以达到线速度,需要XILINX FPGA和硬件编程知识以及前两种知识,适合产品开发中的硬件开发人员。前两种版本可以跑在虚拟机Virtualbox上, 因此,很容易在一台机器上用虚拟机组成一群网络连接系统并进行测试研究, 然后,这一群虚拟机可以访问第三个版本的带NETFPGA加速的真实计算机,组成虚拟与真实并存的网络。一个很Cool的应用演示就是把玩网络游戏时,把真实计算机的流量卸载到另一台机器上的虚拟机上,加快玩网络游戏的顺畅性。

支持以下的Linux:
* Ubuntu
* Debian
* CentOS
* CentOS with NetFPGA
* Fedora

用Virtualbox虚拟机跑Ubuntu 9.04,然后安装Openflow的流程如下:
http://www.openflowswitch.org/wk/index.php/Ubuntu_Install

国内高校中,能查到的,好像清华FIIT 2008年10月有人做seminar时提到openflow过,看上去,他们只做DPI相关的软件和算法,与NETFPGA没啥关系,anyway,把当时会议记录链接存在这里:
http://security.riit.tsinghua.edu.cn/seminar/2008_10_23/review.txt

参考链接:

参考资料

[1]斯坦福大学Clean Slate项目网站, http://cleanslate.stanford.edu/

[2] Ethane项目首页,http://yuba.stanford.edu/ethane/

[3] Sane项目首页,http://yuba.stanford.edu/sane/

[4] OpenFlow: EnablingInnovation in Campus Networks, www.openflow.org/documents/openflow-wp-latest.pdf

[5] TechnologyReview网站关于2009年十大前沿技术的评选, http://www.technologyreview.com/article/412194/tr10-software-defined-networking/

[6] Software DefinedNetworking: The New Norm for Networks, https://www.opennetworking.org/images/stories/downloads/white-papers/wp-sdn-newnorm.pdf

[7] Open Networking Summit2012日程安排,http://opennetsummit.org/speakers.html

[8] SDN Standards: What andWhatnot, http://opennetsummit.org/talks/ONS2012/pitt-tue-standards.pdf

[9] OpenFlow SwitchSpecification v1.3.0, https://www.opennetworking.org/images/stories/downloads/specification/openflow-spec-v1.3.0.pdf

[10] OpenFlow v1.0.0源代码, http://openflowswitch.org/downloads/openflow-1.0.0.tar.gz

[11] FlowVisor: A Network Virtualization Layer,

http://www.openflow.org/downloads/technicalreports/openflow-tr-2009-1-flowvisor.pdf

[12]Aster*x:Load-Balancing as a Network Primitive,

http://www.stanford.edu/~nikhilh/pubs/handigol-acld10.pdf

[13] ElasticTree: Saving Energy in Data Center Networks,

http://static.usenix.org/event/nsdi10/tech/full_papers/heller.pdf

发表评论

电子邮件地址不会被公开。 必填项已用*标注