首页 > 代码库 > 下一代网络互连技术 - OpenFlow

下一代网络互连技术 - OpenFlow

目录:

----OpenFlow起源

----OpenFlow基本组成,

--------OpenFlow交换机,

--------FlowVisor,

--------Controller

起源:OpenFlow起源于斯坦福大学的Clean Slate项目组。在2006年,斯坦福的学生Martin Casado领导了一个关于网络安全与管理的项目Ethane。该项目视图通过一个集中式的控制器,让网络管理员可以方便地定义基于网络流的安全控制。受此启发,Martin 和他的导师Nick McKeown发现,如果将Ethane的设计更一般化,将传统网络设备的数据转发和路由控制功能分离,通过集中式的控制器以标准化的接口对各种网络设备进行管理和配置,那么这将为网络资源的设计、管理和使用提供更多的可能。于是,他们便提出了OpenFlow概念,并2008年在ACM SIGCOMM发表了OpenFlow:Enabling Innovation in Campus Networks的论文。不仅阐述了OpenFlow工作原理,还例举了应用场景:(1)校园网络中心对实验性通讯协议的支持,(2)网络管理和控制访问,(3)网络隔离和VLAN,(4)基于WiFi的移动网络,(5)非IP网络,(6)基于网络包的处理。


OpenFlow基本组成:OpenFlow交换机,FlowVisor,Controller三个部分组成。

其中,OpenFlow交换机进行数据层的转发。FlowVisor对网络进行虚拟化。Controller对网络进行集中控制,实现控制层的功能。

OpenFlow交换机由流表、安全通道和OpenFlow协议三部分组成。


     流表由很多个流表项组成,每个流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口。流表项由头域、计数器和操作组成;其中头域是个十元组,是流表项的标识;计数器用来计数流表项的统计数据;操作标明了与该流表项匹配的数据包应该执行的操作。
     安全通道是连接OpenFlow交换机到控制器的接口。控制器通过这个接口控制和管理交换机,同时控制器接收来自交换机的事件并向交换机发送数据包。交换机和控制器通过安全通道进行通信,而且所有的信息必须按照OpenFlow协议规定的格式来执行。
     OpenFlow协议用来描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机的接口标准。协议的核心部分是用于OpenFlow协议信息结构的集合。OpenFlow协议支持三种信息类型:Controller-to-Switch,Asynchronous和Symmetric,每一个类型都有多个子类型。Controller-to-Switch信息由控制器发起并且直接用于检测交换机的状态。Asynchronous信息由交换机发起并通常用于更新控制器的网络事件和改变交换机的状态。Symmetric 信息可以在没有请求的情况下由控制器或交换机发起。

FlowVisor就是硬件结构元件和软件之间的网络虚拟层。FlowVisor允许多个控制同时控制一台OpenFlow交换机,但是每个控制器仅仅可以控制经过这个OpenFlow交换机的某一个虚拟网络(即slice)。因此通过FlowVisor建立的试验平台可以在不影响商业流的转发速度的情况下,允许多个网络试验在不同的虚拟网络上同时进行。FlowVisor与一般的商用交换机是兼容的,而不需要使用FPGA和网络处理器等可编程硬件。

Controller实现的是控制层功能。OpenFlow实现了数据层和控制层的分离,其中OpenFlow交换机进行数据层交换的转发,Controller实现了控制层的功能。Controller通过OpenFlow协议这个标准接口对OpenFlow交换机中的流表进行控制,从而实现对整个网络进行集中控制。Controller的这一切功能都要通过运行NOX来实现,因此NOX就像是OpenFlow网络的操作系统。此外,在NOX上还可以运行Plug-n-serve、OpenRoads以及OpenPipes等应用程序。Plug-n-Serve通过规定数据传输路径来控制网络以及服务器上的负载,从而使得负载均衡并降低响应时间。OpenRoads是支持OpenFlow无线网络移动性研究的框架。OpenPipes可以在网络系统中通过移动每个子模块来测试每个子模块,并可以决定如何划分设计单元。

下一代网络互连技术 - OpenFlow