夏兴
OpenFlow 全称是 OpenFlow Switch Specification,其字面意思就是 OpenFlow 交換机规则。在 SDN 网络架构中,其基础设施层的交换机主要完成数据转发的功能,而 OpenFlow 技术就是为实现这一功能的 OpenFlow 交换机设置结构和功能规则,同时它也定义规范了控制平面控制器对交换机进行控制管理的 OpenFlow 协议。根据它的功能可以看出其技术核心包括了 OpenFlow 交换机、OpenFlow 控制器以及 OpenFlow 协议,另外通过控制器下发的流表信息也是核心技术之一。
一、OpenFlow交换机和控制器
1.1 OpenFlow交换机
OpenFlow 网络的核心就是 OpenFlow 交换机,它是一个二层交换机,主要功能是完成数据转发处理:根据网络要求将数据层的数据信息转发到相应数据网络端口。其实现数据转发主要依赖于 OpenFlow 控制器所下发的流表,即就是 OpenFlow 控制器控制交换机实现数据转发,这一方式的优势就在于 OpenFlow 交换机不需要存储、记忆和学习过程,提高了数据转发的准确性和效率。而控制器下发的流表信息是在响应网络状态、拓扑变化以及应用需求时,自行下发或通过手动下发生成,生成的流表信息需要经过SDN 控制数据平面接口发送给交换机为其提供转发机制。
OpenFlow 交换机处理数据包的过程如图 1.1.1 所示,当数据包从端口传输被OpenFlow 交换机上接收后,交换机首先对接收到的数据包包头进行分析,根据分析结果按照流表的优先级高低顺序从已有流表中依次进行匹配,如果匹配到流表,则使用契合程度最高的一个流表,实施与之对应的操作,完成数据包的转发传输,然后将数据信息更新到计算机上。如果没有匹配到与之对应的流表,就将数据包通过安全通道发送给控制器,由控制器管理数据包并做进一步处理。
OpenFlow 交换机是当前在应用范围和应用空间等方面最为普遍的 Open vSwitch 软件交换机,通过开源的 Open vSwitch 交换机和控制器构建实验场景和拓扑。在单个物理机中,如果想使得网络数据实现隔离,只需要通过对网络划分不同的 VLAN 空间,使得网络的不同 VLAN 隔离完成物理机网络隔离。而当安装多个虚拟机在一个物理机中时,物理机上各个虚拟机之间的网络隔离就不能通过划分 VLAN 的方式实现,Open vSwitch 交换机作为虚拟网络的核心部件之一,可以通过交换机连接虚拟机,在交换机上完成网络隔离的操作过程。Open vSwitch 交换机作为一款开源的软件定义网络交换机,是唯一支持OpenFlow 协议的交换机,同时它也支持 802.1q 协议。
1.2 OpenFlow控制器
OpenFlow控制器是SDN的中央处理单元,也是 SDN 中的两大重要元素之一,被称作网络设备的“上帝”。控制器掌握网络中所有设备的信息,主要完成对设备工作的指挥控制,其功能有:网络拓扑的管理控制、数据链路的发现应用以及流表的下发交付,而且可以通过北向接口(NBI)给应用平面的应用程序实现其对网络的调用功能。相比于传统网络设备,OpenFlow控制器最大优势在于可以通过对软件进行编程的方式实现网络拓扑等设计,并且对网络资源,例如局域网,广域网等,以及应用程序的开发调用等都可以在控制器进行配置管理,使网络管理变得简单方便。由此可以发现,在 OpenFlow技术和 SDN 网络中,OpenFlow控制器具有极其重要的作用。
随着 OpenFlow 技术和 SDN 网络的发展进步,OpenFlow 控制器也在日益创新,不断推出一系列适合网络需求的不同种类的控制器,而当前最为常见的控制器有 NOX、POX、OpenDaylight、Floodlight、Ryu、ONOS 等,表 1.2.1 将对以上几种控制器做简要介绍。
二、OpenFlow 协议
在 OpenFlow 技术中,OpenFlow 控制器和 OpenFlow 交换机之间是以怎样的方式进行通信? OpenFlow 协议就是用于规定这一方式。实际上,OpenFlow 协议就是 OpenFlow 控制器发送给OpenFlow交换机的一组信息和 OpenFlow 交换机回复 OpenFlow 控制器发送的信息一起组成的。其主要功能是将交换机和控制器的信息发送到控制器上,控制器根据 OpenFlow 协议信息完成对交换机的控制管理,并通过编程的方式处理数据信息,如修改、删除以及下发流表,对通过交换机的不同用户流进行流量控制。
OpenFlow 协议自 2009 年 OpenFlow 技术产生以来,也经过了一系列的发展完善,至今以有 v1.1、v1.2、v1.3、v1.3.1 和 v1.3.2 五个版本标准,其具体发布时间如图 2.1 所示。
三、安全通道与流表
3.1 安全通道
OpenFlow 技术使用集中控制的方式完成对网络的管理,在网络中,控制器对交换机进行的配置操作等功能都需要根据 OpenFlow 协议信息以下发流表的方式实现,而在这一过程中,控制器和交换机之间数据传输的安全性极为重要。而安全通道就是用于保证控制器和交换机之间传输安全。OpenFlow 技术规定,数据传输的安全通道需要使用传输层协议技术保障其安全完整,达到网络数据的通信加密要求,实现安全传输。安全通道在系统中所处位置如图 3.1 所示。
3.2 流表
OpenFlow 技术中,实现交换机数据转发交换,需要控制器对其下发流表,交换机根据流表信息实现相应操作处理。传统网络中,数据转发需要交换机的二层 MAC 地址转发表或者路由器的三层 IP 地址路由表,而 OpenFlow 技术提供 OpenFlow 交换机进行数据转发机制的流表也需要二层 MAC 地址,其与传统交换机二层 MAC 地址的区别在于它具有更为全面的信息,包含着网络架构三个层次所有的网络配置信息,这一优势使得 OpenFlow 交换机可以使用所有的更加完善全面的规则进行数据转发。
网络在不断进步和创新,同样 OpenFlow 技术也在不断发展,而随着OpenFlow 的发展,OpenFlow 流表也暴露出了其不足之处,而为了解决这些问题,OpenFlow 流表也在被优化完善,至今出现了以下不同版本的 OpenFlow 流表项与其结构,如图 3.2 所示。
由图 3.2可以对 OpenFlow v1.3 交换机流表项结构有大体了解,OpenFlow v1.3 流表项在以往版本流表项的基础上,多出了优先级、超时定时器以及 Cookie(存储在用户本地终端上的数据)三部分。
OpenFlow v1.3 交换机的流表匹配流程,如图 3.3 报文从表0开始匹配,若在表n匹配到流表则执行更新计数器指令,若没有匹配到流表,则将报文数据信息储存到 Table-Miss 项中,执行后续操作。
四、结论
OpenFlow 技术解决了在无法修改网络设备的情况下完成对网络架构和协议的创新。在此前提下,提出能否将网络的控制层和数据转发层分离出来,然后只需要通过控制平面,对网络设备进行编程处理,而通过编程设计可以在不改变网络设备的基础上,针对不同问题和发展要求,实现可编程化,最终实现在控制层改变网络的拓扑结构和协议。OpenFlow 技术的提出和发展,推动了另一个新型技术--软件定义网络(SDN)的产生发展。