SDN在Openstack云数据中心的技术研究
2017-03-07刘瑛
刘瑛
摘要:为了满足云数据中心灵活多样的网络服务需求,提出了一种基于SDN的Openstack云数据中心系统架构,分析了SDN管理平面和业务平面的关键技术,研究了Openstack Neutron模块和SDN控制器的结合方法,阐述了基于Vxlan的组网技术方案,并经过实际部署,验证了本架构在Openstack云数据中心整体方案中的有效性。
关键词:软件定义网络 Openstack云数据中心 Openflow协议 Vxlan
1 引言
云计算近十年来受到互联网、IT和电信业共同的关注,云计算技术的快速发展和广泛应用使得数据中心的业务形态产生了很大的变化。云计算利用自身所拥有的计算、存储、网络、软件平台等资源向用户提供虚拟资源出租,高度模块化和自动化的云计算数据中心是业界研究的热点。目前,基于Openstack架构的云计算数据中心占领了绝对的市场份额。
云计算数据中心提供虚拟资源服务的方式具有自助、弹性、灵活和按需的特点,网络也作为服务(Network as a Service,NaaS)面向客户提供。为满足云计算多样化的业务服务需求,网络应面向不同用户和应用提供动态、按需、隔离的网络环境和自定义网络业务链的连接服务。基于IP的传统网络架构在虚拟化、灵活配置和可编程方面能力不足,存在4 k个Vlan制约用户数量,无法解决不同用户复用IP地址段等诸多问题。为了解决上述问题,软件定义网络(Software Define Network,SDN)应运而生。
SDN是一种新型网络架构,可以实现上层业务应用对底层网络资源的直接控制和使用,打破不同设备厂家的技术壁垒,提高网络资源的使用效率,降低网络方案的投资成本。与传统的网络架构相比,SDN把网络设备的控制平面和转发平面进行分离,采用控制器集中控制的方式来替代原本分散在各个网络设备上的控制引擎功能,通过定义开放的可编程接口实现业务的灵活定制[1]。在SDN组成架构中可以分为控制层和网络转发层两个层次,其中控制层即SDN控制器,实现对网络转发层设备的操作控制;转发层负责网络数据转发。SDN控制器对外提供两个外部接口,其中,向上为应用提供自定义业务功能的API称为北向接口,向下控制使用底层网络资源的API称为南向接口。常用的北向接口标准是Restful,常用的南向接口标准是Openflow。控制器接收北向接口的业务需求,通过自身软件处理,依靠南向接口实现数据中心的网络设备的远程自助配置和运行。
2 SDN在Openstack数据中心的系统架构
将业界最主流的Openstack技术和网络新型架构SDN结合成一个整体解决方案应用在云数据中心,可以最大化呈现两个技术的优势。云数据中心SDN解决方案具有多级架构,包括应用层、协同层/虚拟化平台、控制器和转发层,如图1所示[2]。多级架构有助于实现网络的灵活调度,提供真正的网络即服务。同时,为保障数据中心的网络信息安全和流量走向的有序性,基于数据类型将系统架构划分为管理和业务两个平面。图1中的虚线为系统管理流量,实线为用户业务流量。
(1)应用层
应用层通常指云计算数据中心的运营管理平台,它是云数据中心的访问入口,为用户提供产品和资源的自助服务界面。网络方面,用户可以自主灵活定义网络拓扑,可自定义业务数据链路(如防火墙-负载均衡-路由器-交换机-子网),可提供实时网络流量监控等。
(2)協同层
协同层在Openstack云数据中心特指Openstack平台。Openstack是2010发起的开源项目,具有简单、丰富、统一及可扩展的特性。Openstack最新发布的版本包含Nova、Glance、Cinder、Keystone、Horizon、Neutron等六个核心模块,分别实现云数据中心计算资源管理、镜像管理、存储服务、身份验证、Web界面管理和网络管理等基本服务功能[3]。网络模块Neutron实现用户网络拓扑与网络产品的抽象,如将用户的网络拓扑抽离并映射成虚拟机、子网、网络、安全组规则、弹性公网IP、负载均衡等网络产品[4]。
(3)控制层
云数据中心控制层由虚拟化平台和SDN控制器组成,其中SDN控制器负责网络相关功能实现。SDN控制器一方面接收来自协同层的业务请求一方面收集转发层网络设备的状态、链路统计和告警等信息,经过综合汇总和精准分析,完成全网业务的路径计算、链路设计、策略制定和流表下发等管控操作,实现对网络转发层设备的管控与调度。
(4)转发层
转发层由具有分组转发功能的物理网元设备或虚拟网元设备组成,包含多种网元类型,如交换机、路由器、负载均衡和防火墙等。每个转发层设备均包含管理代理、控制代理和转发引擎等基本单元,基于SDN控制器南向接口下发的流表完成数据转发[4],用来满足云计算环境下的虚拟机流量交换需求并提供灵活的流量调度。
3 管理平面的关键技术
SDN在Openstack数据中心的整体解决方案基于数据流量类型可以划分为管理和业务两个平面。管理平面是系统平台为满足用户需求进行的命令控制流转平面,如图1中的应用层、协同层、控制层和转发层之间的控制数据流进路径。业务平面是用户业务数据在转发层网络设备间的运行流转平面,它与用户信息关联紧密。在解决方案的管理平面中,协同层的Neutron模块和控制器层的SDN控制器的无缝结合是技术要点也是技术难点。
3.1 Neutron
Neutron是Openstack的网络管理模块。Neutron对上与应用层交互,在协同层通过消息队列与Nova、Keystone等Openstack模块交互,面向用户提供浮动IP、路由、子网、虚拟端口等网络产品服务。Neutron主要由Neutron Server、插件代理(Plugin Agent)构成。
Neutron Server包含守护进程Neutron-server和各种插件Neutron-*-plugin。守护进程Neutron-server对外暴露API接口,配置管理网络插件,并把来自API的调用请求传给已经配置好的插件进行后续处理[5]。插件需要访问数据库来维护各种配置数据和对应关系,如路由器、网络、子网、端口、浮动IP、安全组等[5]。为了实现功能多样化的云网络服务,Plugin的种类也极为丰富,有提供二、三层网络基本功能的L2/L3 Plugin,提供防火墙服务的FWaaS Plugin,提供负载均衡服务的LBaaS Plugin以及提供VPN服务的VPNaaS Plugin等。
插件代理(Plugin Agent)Neutron支持多种类型的插件代理,名字为Neutron-*-agent,通常与Neutron上的各种插件Neutron-*-plugin相对应。云数据中心中用户业务数据包的处理都是由插件代理来完成的。插件代理通过消息队列与Neutron-server守护进程及其插件进行信息交互。
Neutron上关于同一类型的插件可以兼容适配多种选择。比如L2 Plugin可以配置为Linux Bridge模式,也可以配置为Openvswitch或者商用虚拟交换机模式。不同的Plugin配置,后端技术实现方案也不一样。若配置为Linux Bridge模式,在网络实现方面仍然是使用传统的Vlan技术;若配置为支持SDN的Openvswitch,在网络实现方面可以使用Openflow流表来进行控制转发,数据流可以使用Vxlan、GRE等技术进行隧道封装。SDN与Openstack结合应用的一个极大优势在于Plugin的选择具有多样性,这样就可以灵活实现自定义的后端网络API。
3.2 Openflow
SDN控制器的常用南向接口是Openflow。Openflow协议的核心思想就是将原本完全由交换机独立控制的数据包转发过程转化为由Openflow交换机和控制器分别完成。
在传统IP网络中,交换机基于MAC地址表进行数据转发,路由器基于路由表进行数据转发。而在SDN网络中,Openflow网络设备基于控制器下发的流表来进行数据转发。Openflow协议的1.3版本支持多级流表,每张流表包含多个流表项。在单个流表项中,主要关注匹配字段、优先级、计数器、指令、超时时间、Cookie这六个关键字段[6]。匹配字段定义了很多具体细项,如源IP地址、目的IP地址、源MAC地址、目的MAC地址、出入端口号、Vlan ID等。匹配字段可以由一个或者多个匹配构成。例如一个匹配字段可以包含TCP协议端口、源IP地址和目的MAC这三个匹配细项。跟传统交换机只能基于MAC地址转发的模式相比,流表匹配字段的控制实现方式极为灵活。优先级字段决定在同一个流表中流表项的执行顺序,优先级高的流表项可以优先执行。计数器用来统计数据流的计量信息。指令是对数据包动作集的操作。超时时间定义流表存活时间。Cookie通常用于控制器对于流表项的标识。在Openflow交换机的数据包转发过程中,首先是将数据包包头的信息与流表项中的匹配字段进行匹配分析,若完全匹配流表项中的指令会更新数据包的动作集,通过动作集实现对数据包的转发控制。Openflow交换机基于流表处理数据包的工作流程如图2所示[6]。
通常云数據中心服务器的规模都是千台及千台以上,转发层网络设备数量也比较多。云数据中心转发层的网络设备基于Openflow流表进行数据转发,若流表超时,网络设备会向SDN控制器发出请求,获取新的流表。若流表超时时间设置得过小,网络设备会频繁向控制器发起请求,极易导致控制器与网络设备间的链路拥塞,影响控制器的正常运行。因此流表超时时间的大小值需谨慎选取。业界也存在一些其他的解决方案,比如将流表设计为静态流表和动态流表两种类型,其中静态流表会一直存在,这种模式下网络设备的请求会大量减少。
4 业务平面的关键技术
为确保不同用户在同一物理网络架构中拥有各自隔离的网络环境,在SDN整体解决方案的业务平面就不得不提到Overlay技术。Overlay的大体框架是在物理网络不进行大规模修改的条件下,在现有的物理网络之上构建一个虚拟网络,用户业务数据与虚拟网络紧密相关。当前主流的Overlay技术都是基于隧道封装模式,即将原始数据包封装至隧道里面进行传输,主要有Vxlan(虚拟可扩展局域网)、NVGRE(使用通用路由封装的网络虚拟技术)和STT(无状态传输隧道)这三种技术形态,差异性在于选择和构造隧道的技术不同[7]。总体来看,Vxlan利用了现有通用的UDP传输,成熟性极高,具有优势。Vxlan的数据报文如图3所示[8]。
Vxlan网络设备主要有两种类型,分别是VTEP(Vxlan Tunnel End Point)和Vxlan硬件网关(Vxlan Gateway)。在云数据中心VTEP通常是虚拟交换机,它直接与云数据中心虚拟机相连,负责把原始数据包封装到Vxlan隧道和对应的隧道解封装。Vxlan硬件网关除了具备VTEP的功能外,同时也是数据中心内部服务向外发布业务的出口。受限于高性能的转发需求,Vxlan硬件网关通常是高性能物理交换机。对于Openstack云数据中心的用户系统而言,具体网络实现只与Vxlan网络设备相关,而与底层物理网络无关。结合前面提到的Openflow,在业务平面的网元设备中通常只有这两种设备基于流表实现数据转发。
4.1 VTEP的技术关键点
在Openstack数据中心中直接与终端虚拟机(VM)连接的VTEP通常是位于每个物理服务器上的虚拟交换机。虚拟交换机支持Openflow,接受SDN控制器的统一管控。本文以开源虚拟交换机为例,给出物理服务器虚拟化层的组网拓扑,如图4所示:
虚拟机数据流量到物理服务器的网卡会经过qbr、Br-int和Br-tun三个虚拟网元设备。虚拟机以及三个虚拟网元设备通过Tap设备(Linux内核虚拟化出来的一个网络接口)进行逻辑连接。
qbr是一个Linux Bridge,主要用于实现虚拟机的安全组规则。安全组规则是通过Iptables技术来实现的。Openstack把安全组的规则定义为由Tap设备实现,但是Openvswitch的Tap端口并不支持Iptable。所以采用一个折衷的方式,在虚拟化层引入Linux Bridge来实现安全组的规则,与Openvswitch联动工作。
Br-int和Br-tun是由Openvswitch虚拟化出来的网桥。Br-int类似于交换机的功能,它的主要职责就是把这台物理服务器上所有VM都连接在一起。Br-tun与Br-int的交换机功能有一定差异,它的主要职责是用来充当一个通道层,通过Br-tun Tap设备与其他物理机上的Br-tun构成一个统一的通信层。基于Br-tun,所有物理服务器就可以点对点地形成多个基于Vxlan的隧道通信网络从而进行大量的数据交换。Br-tun通常是按需建立Vxlan隧道,只有承载同一用户同一逻辑子网虚拟机的物理服务器之间才会建立Vxlan隧道。通过Br-tun的穿透功能,实现了不同物理服务器上的VM连接在同一个逻辑上的虚拟交换机上。
本文以同一用户同一逻辑子网的两台虚拟机进行数据通信为例,分析数据包的流经路径和封装过程如下:
(1)物理服务器A上的VM1(192.168.1.3/24)发出的数据包,经过Linux Bridge到达Br-int,被打上Vlan ID Tag。
(2)数据包到达Br-tun,进行原始以太报文的Vxlan封装,将Vlan ID转化为Vxlan隧道ID,并经过Vxlan隧道到达物理服务器B。
(3)数据包到达服务器B的Br-tun,进行Vxlan的解封装,将Vxlan隧道ID转化为Vlan ID。
(4)数据包到达到Br-int,剥离Vlan ID Tag,经
Linux Bridge送达物理服务器B上的VM2(192.168.
1.5/24)。
(5)数据包的回程类似。
4.2 Vxlan硬件网关的技术关键点
Overlay网络中的Vxlan硬件网关通常是物理交换机,受SDN控制器的统一管控,也支持Openflow和Netconf两种配置模式。从冗余性考虑,支持多个网元设备组成网关组实现备份。Vxlan硬件网关组对Overlay网络提供统一的VTEP IP地址,能够与物理服务器上的Openvswitch构建Vxlan隧道进行数据转发。控制器统一管理网关成员的状态和信息同步,真正实现了无状态网关组。网关组成员可以动态增减,也可以支持部署多个Vxlan网关组,灵活支持Overlay网络的动态扩容。
5 结束语
SDN技术是一项全局性、颠覆性的网络变革技术,它采用IT技术的模式来改造传统的封闭网络,为网络发展带来新的机遇[6]。SDN在Openstack云数据中心的应用,提供了灵活、扩展和简单的网络即服务,已经初步展示了两大技术相结合的巨大优势。本文提到的SDN解决方案已经应用在某运营商的千台服务器规模的公有云数据中心上,能够面向用户提供浮动IP、路由、子网等多种网络服务。但是,SDN在上万台超大规模云数据中心组网、跨云数据中心融合组网、网络运维模式方面仍然需要不断地进行探索和实践。
参考文献:
[1] 熊雄. 面向未来,把握机遇——电信网络转型升级需寻求政策突破[J]. 中国电信业, 2015(10): 29-35.
[2] 段晓东. 云数据中心SDN/NFV应用分析[J]. 电信技术, 2015(7): 33-38.
[3] 李莉,李纪成,张超然,等. 基于OpenStack云平台Neutron关键技术研究[J]. 长春理工大学学报:自然科学版, 2015(6): 114-117.
[4] 李晨,段晓东,黄璐. 基于SDN和NFV的云数据中心网络服务[J]. 电信网技术, 2014(6): 1-5.
[5] 刘志聪,李秦伟,王胜俊. OpenStack云平台Neutron的研究与测试[J]. 自动化与仪器仪表, 2015(6): 91-93.
[6] 任晶晶,戴锦友,刘琼,等. 基于OpenStack的SDN相关技术研究[J]. 光通信研究, 2016(1): 11-14.
[7] 谢胜军,蔡利平,殷锋. Overlay解决虚拟化难题[J]. 中国教育网络, 2015(7): 54-56.
[8] 赵辉,丁鸣,程青松,等. SDN与NFV技术在云数据中心的规模应用[J]. 电信科学, 2016(1): 144-151.
[9] 顾戎,王瑞雪,李晨,等. 云數据中心SDN/NFV组网方案、测试及问题分析[J]. 电信科学, 2016,32(1): 126-130.
[10] 张学亮,陈金勇,陈勇. 基于Hadoop云计算平台的海量文本处理研究[J]. 无线电通信技术, 2014,40(1): 54-57. ★