APP下载

一种基于标签交换的OpenStack SDN网络高效多流表方案

2018-05-28许延伟黄志林徐晔刘永红

电脑知识与技术 2018年9期
关键词:软件定义网络

许延伟 黄志林 徐晔 刘永红

摘要:在OpenStack云计算平台中采用基于SDN技术的网络架构是当前的一个技术发展趨势,因为其可以很好的满足OpenStack在网络管理方面的灵活性和敏捷性需求。其中基于OpenFlow流表为虚拟机提供各种二层和三层网络功能是实现高效的网络通信的关键。针对OpenStack平台的网络需求特性,该文提出了一种基于标签交换的SDN网络高效多流表方案,通过多流水线有效降低SDN网络流表数量,提高网络通信的效率,具备适应不同云计算平台的能力和网络功能扩展能力,从而可为OpenStack提供高效的SDN组网实现方案。

关键词: 软件定义网络;OpenStack;OpenFlow;多流表方案

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)09-0053-04

Abstract:The adoption of SDN-based network architecture in the OpenStack cloud-computing platform is a current trend, because of its ability to meet OpenStack's flexibility and agility requirements in network management. Providing various Layer 2 and Layer 3 network functions for virtual machines based on the OpenFlow flow entries is the key to achieving efficient network communication. Aiming at the network characteristics of OpenStack, this paper proposes an efficient multi-flow table Implementation for SDN network based on label switching, which can effectively reduces the number of SDN network flow tables and improves the efficiency of network communication by multi-pipelines. In addition, it has the ability to adapt to different cloud computing platforms and extending the network functionalities.

Key words:SDN ; OpenStack; OpenFlow; Multi-Flow Table Implementation

1 引言

近年来云计算己经在各大软件厂商、互联网公司中得到广泛认可和使用。当前,基于OpenStack架构的云计算平台占领了绝对的市场份额。无论在国内一线互联网和软件公司还是国外各软件巨头,近90%的厂商都在关注和实践OpenStack项目,成为了事实上的开源云计算平台标准[1]。

OpenStack是由Rackspace和美国国家航空航天局(NASA)合作研发的用于搭建IaaS平台的云计算管理软件[2]。OpenStack是一个开源的云计算管理平台项目,并基于社区开发模式,无论是企业或个人都可以根据自己的需要修改源代码,并将修改的代码作为开源或者商业产品发布出去[3]。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

作为OpenStack云平台中的三大关键基础资源之一,Neutron网络的管理相当复杂,各种网络功能和配置对用户的要求很高,而且出现问题以后非常难以定位原因,而且开源社区版本的虚拟网络性能表现不是很理想。因此,依靠其内在的高灵活性和可编程性,开发可对接OpenStack Neutron的软件定义网络(Software Defined Network,SDN)[4]网络就成为了一个技术上的必然选择和当前主流趋势。SDN把传统网络设备紧密耦合的网络架构分拆为应用、控制、数据转发3层分离的体系架构,其核心技术是通过实现网络设备的控制权和转发权的相互独立,从而灵活、方便地控制数据包的转发,提供了一种可编程的网络管理模式。在软件定义网络中,控制器通过南向接口(OpenFlow[5]协议)获取底层网络设备信息,进行统一部署、集中管理以及灵活控制,从而解决了分散网络设备的管理控制问题。同时,控制器提供了可编程扩展的北向接口,按不同需求设计的功能应用软件可以直接运行在控制器上,利用控制器对全局网络设备进行统一管理。

当前基于SDN的OpenStack网络方案主要可以分为Overlay网络架构[6, 7]和非Overlay网络架构[8, 9]。在Oveylay网络架构下,不同服务器上的虚拟机之间的通信依靠构建在虚拟交换机之上的二层隧道,例如VxLan [10]、GRE [11]等。由于二层隧道需要对数据包进行封包和解封包的操作,Overlay网络架构下的虚拟机通信性能和网络的灵活性都会受到很大的限制[8]。非Overlay网络架构一般是利用物理SDN交换机进行组网,利用SDN控制器下发OpenFlow实现虚拟机的端到端的SDN通信。这种组网方案可以充分利用SDN网络的灵活性和敏捷特性,充分发挥物理交换机的高效数据包处理性能,但是其面临的主要问题是当前的SDN物理交换机的流表数量有限和SDN控制器流表下发的低效率。

文献[12]提出了一种基于标签进行数据包转发的SDN网络方案,如图1所示。文献[12]會为每一个交换机定义一个标签,并预先计算所有交换机之间的最短路径,然后以OpenFlow流表的形式在所有的交换机上下发基于标签进行路由的流表。因此,交换机中的流表的数量就从主机数量数量级降低到了交换机数量级,从而可以大大降低物理交换机上流表的数量。但是文献[10]的方法无法直接应用于OpenStack平台,主要是由于Neutron网络功能众多,各种功能特性也具有很大区别,导致了设计开发在功能和性能上能满足要求的SDN网络难度很大。因此,如何设计一种高效的多流表方案以达到灵活性和性能的统一就成为了一个关键因素。

本文提出了一种基于标签交换的SDN网络高效多流表方案,通过多流水线有效降低SDN网络流表数量,提高网络通信的效率,具备适应不同云计算平台的能力和网络功能扩展能力,从而可为OpenStack提供高效的SDN组网实现方案。本文的方案主要有以下几个特性:1)基于标准OpenFlow流表实现OpenStack中虚拟机的内外网所有网络通信,交换网中的交换机分为计算节点OVS虚拟交换机、转发交换机、外网出口交换机三种角色,根据其角色分别下发不同的流表;2)通过标签实现整个交换网内的数据包的统一路由交换;3)每个OVS虚拟交换机和外网出口交换机都使用多个流表来完成流量处理,每一个流表对应于一个独立的网络处理流程,根据通信类型在不同的流表之间进行跳转以支持虚拟机的各种通信需求;4)多流表中的流表项根据其相应的功能特性分别采取了反应式和预先式两种下发策略。

2 全流程OpenFlow流表交换的网络组网架构

为了能更好的发挥SDN在OpenStack中的应用潜力,避免Overlay网络带来的各项难题,我们提出了基于物理OpenFlow交换机的高效网络方案,其主要优点如下:

1)无须封包、解包带来的高网络吞吐量,可以最大程度发挥物理网络性能;

2)VM的南北向流量可以直接通过物理交换网转发,不仅南北向带宽可以达到线性速度,而且NAT、Floating IP和负载均衡等高级网络功能都可在控制器的统一调度下由交换机来实现;

3)基于标准OpenFlow协议,无厂商绑定,造价较传统网络方案可大幅降低,而且网络可动态线性扩展;

4)物理网络中流量可视带来的可管可控优势,可支持网络安全功能和流量工程等功能扩展,提高系统的灵活性。

基于标准OpenFlow流表实现OpenStack中虚拟机的内外网所有网络通信,交换网中的交换机分为计算节点OVS虚拟交换机、转发交换机、外网出口交换机三种角色,根据其角色分别下发不同的流表。转发交换机和出口交换机都可以采用支持OpenFlow协议的物理交换机。

通过控制器计算交换机之间的通信路径,每个交换机分配一个唯一的基于Vlan ID的标签, 根据路径建立基于Vlan ID标签的数据流表,当有网络通信请求时候,在通信两端点所在交换机上分别建立两个流表,在起点处数据加上Vlan ID的标签并放在路径上,在终点把数据拆解标签并转发到指定的通信端点上,完成数据通信。交换机间的通信路径都基于标签下发OpenFlow流表。转发交换机上只要基于标签进行路由的流表,因此流量数量会得以大大降低。

转发交换机上面只有一个0号标签转发表,会根据数据包中的不同标签转发到不同的端口。本专利使用VLAN ID作为数据包标签,所以标签转发表上面的流表都是类似于如下的流表模式:

IP,dl_vlan=x,actions=output:y

转发交换机上面的流表只和网络拓扑有关,和主机的通信过程无关,所以只在拓扑发生变化影响到交换机之间的转发路径时才需要进行更新。

3 OVS虚拟交换机多流表方案

在OpenStack网络中,所有的虚拟机都会连接在宿主机上的一个虚拟OVS交换机上。OVS支持通过标准的OpenFlow协议下发流表,每一条流表包含Match域以匹配不能数据包字段和Action域以对相应的数据包执行不同的动作。为了能实现多种流水线的处理,Goto_Table是最为关键的一个Action操作,以实现多个流水线处理之间的跳转。需要注意的是,OpenFlow标准本身并没有限制Goto_Table的目的流表,但是在OVS中Goto_Table的目的流表号必须大于当前的流表号,即OVS中的流水线只能“向前”。

图3显示了本文提出的OVS虚拟交换机的多流表方案。每个OVS虚拟交换机上的流表分为两个不同的流水线,分别对应于处理本地虚拟机发送的数据包和其他交换机转发过来的带标签的数据包,0号流表会根据数据包的实际情况选择不同的流水线进行处理。本地虚拟机发送的数据包流经的流水线包括0号出口分发表、1号输出防火墙表、2号输出QoS表、3至10号的网络功能区表、11号虚机间通信会话表和12号标签转发表,最终由12号表输出到不同的交换机上联端口。其他交换机转发过来的带有本地标签的数据包流经的流水线包括13至20号的网络功能区表、21号入口防火墙表、22号入口QoS表和30号本地主机转发表,最终由30号表输出到本地不同的虚拟机。

其中网络功能区中的每一个流表都对应于一个单独的网络功能,多个网络功能之间彼此隔离,可以根据实际需求增加或删除网络功能,以适应不能的云平台环境,而且可以根据其功能特性分别支持反应式和预先式两种下发策略。例如,对于Floating IP流表,其中的流表下发方式为预先下发式,当用户在OpenStack平台中更新相应配置以后可以直接在5号和15号表中下发相应的流表。但是对于NAT流表,就要求在每次NAT会话时才能以反应式的方式在4号和14号表中下发相应的流表。

4 外网出口交换机多流表方案

在OpenStack Neutron网络方案中,网络的管理分为内部网络(Internal network)和外部网络(public network)。内部网络为虚拟机可以直接连接的网络,一般分配的是局域网IP地址。所谓外部网络是指openstack部署环境以外的网络。这个网络可以是数据中心中的另一个网络、Internet、或者一个不被openstack控制的私有网络。与外部网络通信,我们需要在openstack中创建一个network并设置为public。这个network用于虚拟机与public network通信。虚拟机不能直接连接到这个新创建的属性为public的network,所有网络流量必须使用openstack创建的router从private network路由到public network。OpenStack管理员可以创建多个属性为public的网络,用以把虚拟机连接到不同的外部网络中。

在本文所提出的SDN网络方案会包含多个外网出口交换机,每一个外网出口对应于一个Public网络。每个外网出口交换机上的流表分为两个不同的流水线,如图4所示,分别对应于处理其他交换机转发过来的由虚拟机发出的数据包和外连网口发送过来的数据包,0号流表会根据数据包的实际情况选择不同的流水线进行处理。外连网口发送过来的数据包流经的流水线包括0号出口分发表、1号输入防火墙表、2号输入QoS表、3至10号的网络功能区表和12号标签转发表,最终由12号表通过不同的内联端口输出到内部交换机。其他交换机转发过来的带有本地标签的数据包流经的流水线包括21号外连输出防火墙表、22号外连输出QoS表和30号外部网关MAC转发表,最终由30号表输出到不同的外联端口。

为了能和OVS虚拟交换机上面的多流表方案保持相对应,这里把外网出口作为一个连接所有外部主机的本地端口。和OVS虚拟交换机上面的多流表方案最大的不同是外网出口交换机上的网络功能区流表只有一份,目的是为了减少出口交换机上面的流表数量,而把其实现在了每一个虚拟交换机上面。

外网出口交换机可以是OVS虚拟交换机也可以是支持OpenFlow协议的物理交换机,如Pica8的交换机P-5401、P-5101等1。基于现有物理OpenFlow交换机的实现方式和交换芯片的限制,在一个数据包处理的流水线中,对数据包相关字段做出修改后必须要立即输出到某个端口[13]。因此,若外网出口交换机为物理交换机,则图4所示的第12号流表需要删除,而应由网络功能区中的各流表直接进行输出,但是这样会破坏流表的耦合性要求。另外一个常用的解决方案是令相应的数据包可以从0号流表开始重新走一次流水线,这可以通过由两个网口直连构造的“回路”来实现。

5 总结

本文提出了一种基于多流表的OpenStack SDN网络实现方法,通过多流表分级有效降低SDN网络流表数量,可有效提高交换机的性能。通过基于标签进行交换网中的数据包转发,可大大降低一次通信的路径计算时间以及流表下发数量,有效提高数据通信的速度,并可支持现有物理SDN交换机组网。另外,本文所提出的多流表方案可支持网络功能的扩展,具备适应不同云计算平台的能力。所以,可解决现有云计算环境中网络灵活性和性能方面的矛盾,具高度产业利用价值。

注释:

1.http://www.pica8.com/products/pre-loaded-switches

参考文献:

[1] 张宇霞,周明辉,张伟,等.OpenStack开源社区中商业组织的参与模式[J].软件学报,2017,28(06):1343-1356.

[2] 李知杰,赵健飞. Open Stack开源云计算平台[J].软件导刊, 2012,12:10-12.

[3] 张进铎,毛承国,李硕,等. Open Stack开源云平台主模块的架构分析[J]. 信息技术与信息化, 2014,04:244-247.

[4] Fundation O N. Software-defined networking: The new norm for networks. ONF White Paper, 2012.

[5] McKeown N, et al. OpenFlow: enabling innovation in campus networks. ACM SIGCOMM Computer Communication Review, 2008,38(2): 69-74.

[6] Denton J.Learning OpenStack Networking ( Neutron)[M].Packt Publishing Ltd.,2015.

[7] 詹晗.基于OpenStack的分布式SDN控制器Dragonflow研究[J].計算机与现代化,2017(07):91-94.

[8] 许延伟,许凯.一种基于SDN全物理交换机部署OpenStack的实现[J].电脑知识与技术,2016,12(04):66-69.

[9] 罗朝乐.基于OpenFlow硬件交换机实现OpenStack网络虚拟化性能优化[D].东南大学,2015.

[10] 缪仕福.VXLAN 网络技术研究[J].科技资讯, 2015,4:009.

[11] 唐琴.GRE 隧道技术在大型企业网中的应用[J].电脑知识与技术:学术交流, 2008(8): 800-802.

[12] Xiaoyuan Lu, Yanwei Xu.SFabric: A scalable SDN based large layer 2 data center network fabric. IWQoS,2015: 57-58.

[13] http://www.pica8.com/document/v2.3/html/ovs-commands-reference/

猜你喜欢

软件定义网络
中国联通SDN的思考和应用实例
业务功能链技术及其应用探析
针对大规模软件定义网络的子域划分及控制器部署方法
一种新的SDN架构下端到端网络主动测量机制