摘 要: 基于SDN技术的虚拟租户网络(VTN)能够使得数据中心网络向多个租户提供互相隔离的虚拟网络。VTN提供了VLAN映射、端口映射用于将虚拟网络节点与物理网络节点进行映射。其中VLAN映射需要对每个主机配置VLAN id,增加了映射的复杂性;端口映射时一旦出现交换机端口故障便不能成功映射。为解决上述问题,本文提出了基于MAC地址映射方法,即通过主机的MAC地址直接与虚拟节点进行映射。通过搭建OpenDaylight实验平台验证了该方法的可行性。结果表明,该方法能够解决以上映射中的不足,简化了VTN网络与底层网络映射配置,提高了VTN的性能。
关键词: SDN;VTN;VLAN映射;端口映射;MAC地址
0 引言
随着云服务规模的扩大,云计算服务提供商需要向大量租户提供相互隔离的、具有质量保证的虚拟网络,即实现网络即服务(NaaS)模式[1]。传统构建虚拟网络具有一定的局限性。其中VLAN具有个数限制以及配置VLAN的交换机需要处理大量的虚拟机使得转发表变得非常巨大[2]。IP覆盖方法如VXLAN[3]、GRE方法[4],这些方法在新增虚拟机时,虚拟交换机就要更新,缺少纠错工具使得覆盖网络管理复杂。
基于SDN技术的虚拟租户网络(Virtual Tenant Network,VTN)能够很好地使得数据中心向多个租户提供互相隔离的虚拟网络,借助于SDN控制器掌握全网网络拓扑便于进行集中化控制[5]。解决虚拟网络与物理网络的映射问题是实现VTN的核心环节,也是本文的研究重点。
目前对VTN提供的端口映射、VLAN映射的研究相对成熟。参考文献[5]提出的端口映射是指通过物理交换机的端口与虚拟网络的虚拟交换机接口进行映射,但网络易受到物理交换机端口故障或主机入网位置变动的影响。参考文献[6]提出的VLAN映射是指根据数据流的VLAN id与虚拟交换机进行映射,但需要对每个主机配置VLAN id且VLAN存在个数限制。
本文在现有映射技术的基础上,针对基于SDN技术的虚拟租户网络技术,提出了基于主机MAC地址进行虚拟网络的映射,并对基于主机MAC地址的映射方案进行设计以及实现。实验结果表明,基于MAC地址的映射机制具有一定的可行性,解决了物理交换机故障对网络的影响,简化了VTN网络与底层网络映射的配置,提高了VTN的性能。
1 基于SDN的VTN技术
1.1 VTN简介
虚拟租户网络(VTN)所解决的场景就是现在数据中心网络的场景。不同租户需要不同的网络配置,运行不同的应用程序。而这些需求将在同一个物理网络中实现,达到资源的共用。如果不建立虚拟网络,那么在同一物理网络中分别针对不同租户进行配置和管理,情况将变得十分复杂[7]。
本节主要介绍了VTN的网络架构。租户将通过VTN应用程序建立所需的虚拟网络,该虚拟网络能够自动与物理网络进行映射。其中与物理网络映射是VTN的核心问题,也是本文研究的重点。
如1图所示,VTN由两个关键部分组成:VTN Coordinator和VTN manager。其中VTN manager向VTN Coordinator提供了建立虚拟网络的APIs。该虚拟网络由虚拟节点、虚拟链路、虚拟接口组成,如表1所示。
VTN协调组件向VTN应用程序提供REST API,供用户建立虚拟网络,当虚拟网络跨越多个SDN控制器网络时,支持多个控制器之间的合作配置,支持动态添加控制器和删除控制器。
1.2 VTN网络与物理网络映射
一旦租户通过调用VTN接口建立虚拟网络,该虚拟网络就能够与物理网络进行映射,VTN通过这些映射关系调用SDN控制器routing功能接口计算节点间的转发路径,然后告诉SDN控制器的forwarding rules转发规则功能模块添加什么样的流表,并通过SDN控制协议向各个交换机下发转发规则。
VTN映射分为两个方面:虚拟节点映射以及虚拟链路映射。VTN的链路映射问题由SDN控制器决定,SDN控制器掌握全网网络拓扑以及资源信息,根据自身的路径计算功能,指定节点之间的路径。因此本文只讨论VTN的节点映射问题。目前VTN节点映射方法包括以下两种:
(1)VLAN映射:利用网包的VLAN id与vBridge进行映射。
(2)端口映射:利用网包到达的物理交换机号、端口号、网包的VLAN号(如果没有划分VLAN,则VLAN id默认为0)与虚拟网络中的虚拟节点vBridge的接口进行映射。
这些映射配置完成后,VTN manager存储这些映射关系,判断数据流所属的虚拟网络,并按照相应的虚拟网络转发规则进行转发。
图2所示为虚拟交换机通过VLAN映射、端口映射与底层物理网络的交换机进行映射。
通过VLAN映射与端口映射都能够使物理交换机与虚拟交换机相对应,但都具有一定的缺点。VLAN映射的缺点是每个主机都要进行VLAN的配置,且VLAN有个数限制,使得网络容量受限,不易扩展。端口映射的缺点是当虚拟网络的数量和规模增大时,端口映射表巨大,而且该种映射配置属于静态配置,一旦与物理交换机相连的主机位置改变或者物理交换机发生故障都会相应地影响虚拟网络的可靠性和安全性。
为了改善以上映射的不足,本文提出基于MAC地址的映射。
2 设计与实现
2.1 MAC地址映射模块设计目标
MAC地址映射,就是根据主机的MAC地址与虚拟交换机vBridge进行映射。MAC地址映射过程如下:
(1)与主机直接接入的物理交换机第一次收到来自主机的数据流时,会将其封装在packet-in中发给控制器。
(2)控制器根据VTN manager中存储的映射关系,判断该数据流属于哪个虚拟网络,根据该虚拟网络的路径规则以流表的形式下发到物理交换机上。
其中虚拟网络的路径是由VTN manager根据映射关系调用SDN控制器提供的路径计算routing功能来计算,并把计算结果通过API调用SDN控制器提供的forwarding rules模块,添加相应的流表信息,然后forwarding rules模块把要求发给相对应的协议插件(protocol plugin),由协议插件打包信息发给底层交换机。
(3)当交换机收到转发规则后,对该主机的数据流进行转发。具体流程如图3所示。
因此要实现MAC地址映射,VTN manager需要添加如下功能:
(1)获取主机信息,即SDN网络下主机的MAC地址。
(2)记录分配给虚拟网络的主机MAC地址信息以及未分配的主机MAC地址。
(3)为了防止其中一个已经分配的主机再次分配给新的虚拟网络,需要对主机进行标记。
(4)在已有的MapType中添加MacMap,即VTN manager可实现的三种类型的映射。前两种是端口映射、VLAN映射。
(5)实现MacMap启动程序。
当MacMap机制启动后,属于VTN网络的主机向Openflow交换机发送数据包,VTN管理组件通过控制器向该Openflow交换机下发流表转发规则,虚拟交换机vBridge具有自学习终端信息的能力,并配置MAC转发表。最终使得VTN网络中的主机能够互相到达。
2.2 MAC地址模块实现
本文在研究Opendaylight开源控制器功能以及VTN manager功能基础上,实现了基于MAC地址虚拟网络资源与物理网络资源的映射。其中Opendaylight控制器提供了拓扑管理、routing路由计算、forwarding rules流表添加模块、Arphandler模块等功能[8];VTN manager向用户提供了构建虚拟网络的资源,包括虚拟交换机、虚拟链路等,存储用户的物理资源与虚拟资源的映射信息,根据这些映射信息通过API调用routing功能接口,计算相应的路径,并通过控制器中的流表添加模块添加相应的流表,最后打包给底层物理交换机[9]。
其中,在VTN manager中实现基于MAC地址映射需要实现如下功能:
(1)获取SDN网络下主机信息,该功能通过调用SDN控制器提供的HostTrack功能接口实现。部分实现代码如下:
public class host {
public void GetHost() throws IOException, JSONException{
JSONObject response=
client.json(odl.resolve("hosttracker/default/hosts/active")).toObject();//解析控制器中hosttrack的信息
JSONArray data=response.getJSONArray
("hostConfig");
(2)因为物理交换机处理的是帧,因此获取主机信息后,需要记录所有的主机MAC地址。然后对属于或不属于VTN网络的主机进行记录,创建MacMapConfig类,该类作为MacMap机制的配置信息,指出了已经分配的主机和没有进行分配的主机。通过列表来实现部分代码如下:
Public class MacMapConfig implements Serializable
{Private final Set
New HashSet
Private final Set
New HashSet
(3)应用MacMapPortBusyLog类来记录该主机有没有其他的映射。
Public final class MacMapPortBusyLog{
Private final MacVlan host;
Private final NodeConnector port;
//与主机相连的交换机端口
Private final MapReferenceotherMap;
//判断该端口有无别的映射
(4)在VTN manager提供的MapType中添加MacMap。部分代码如下:
Enummaptype
{portmapping,vlanmapping,macmapping}
(5)实现MacMap启动程序。当与主机直接接入的物理交换机端口已经映射,且该端口不存在其他映射则可启动。部分代码如下:
Public MacMapActivation(NodeConnectorport,PortMapreleased,boolean activated){...}
以上功能是MacMap机制的主要功能,除此之外还需要其他一些补充,限于篇幅不再赘述。将MacMap一系列代码结合VTNmanager功能以及Opendaylight控制器,可实现简单的MacMap机制,最终以接口的形式供租户进行调用,即通过调用MacMap机制使得虚拟节点与物理网络设备进行映射。
3 测试与分析
3.1 测试环境
服务器端:物理主机上运行ubuntu12.04系统,配置Java环境,安装Opendaylight控制器,安装VTN Manager。数据转发网络采用Mininet进行模拟[10]。
客户端:物理主机上运行ubuntu12.04系统,配置Java环境,安装myeclipse。其中myeclipse中导入了必要的控制器jar包、VTN manager.jar包以及MacMap机制下的代码。
3.2 测试步骤与结果分析
(1)在服务器端运行Opendaylight控制器,运行VTN manager并用Mininet创建转发网络(包括4台主机、3台openflow交换机),关闭Opendaylight控制器默认的网络转发应用,使得四台主机彼此不可达。建立网络的命令如下:
Sudomn--controller=remote,ip=
(2)配置网络使得客户端与服务器端可连接,通过运行myeclipse,打开MacMap机制,使之运行。通过调用控制器HostTrack功能接口得到四台主机的MAC地址。
(3)在服务器端的终端输入命令实现如下流程:
建立VTN1→在VTN中建立虚拟交换机vBridge1→建立MacMap。
即调用MacMap接口使得h1的MAC地址、h3的MAC地址与虚拟交换机vBridge进行映射,如图4所示。命令如下:
Curl-X PUT http://localhost:8080/controller/nb/v2/vtn/default/vtns/Tenant1/vBridge1/macmap-d′{“host1mac”:{4e:3a:e0:40:2c:5b},“host3mac”:{9e:3b:56:a7:4a:e7}}′
然后应用mininet执行h1和h3的ping操作。最终两台主机可以ping通,如图5所示,h1和h3已被划分在同一个VTN虚拟网络中。
实验结果表明,VTN虚拟网络可以通过指定的主机MAC地址使得与主机直接接入的物理交换机与虚拟交换机进行映射,即使租户的主机接入位置发生改变也不影响VTN网络,使得租户可以灵活接入网络。由于不需要额外对端口进行固定配置,简化了VTN manager的能力。由于获取主机信息可直接通过调用控制器提供的功能接口,使得虚拟网络与物理网络之间的映射变得简单。同时网络的容量也得到一定的提高。
4 结束语
本文通过研究基于SDN的虚拟租户网络VTN技术,分析了虚拟网络与物理网络之间的映射,提出了基于主机的MAC地址的映射方法,该方法解决了终端主机的移动性问题,对基于主机MAC地址的映射方案进行了系统的描述,对MAC地址模块进行了技术实现。实验结果表明,所提出的基于MAC地址的映射方案具有一定的可行性,提高了VTN网络的可靠性,简化了VTN映射机制。目前研究仅限于在单SDN控制器下租户网络的建立,未来还需继续研究在多租户技术下基于MAC地址映射机制建立VTN虚拟网络。
参考文献
[1] KEMPF J, ZHANG Y, MISHRA R, et al. Zeppelin-a third generation data center network virtualization technology based on SDN and MPLS[C]. Cloud Networking (CloudNet), 2013 IEEE 2nd International Conference on. IEEE, 2013:1-9.
[2] BARI M F, BOUTABA R, ESTEVES R, et al. Data center network virtualization: a survey[J]. Communications Surveys & Tutorials, IEEE, 2013,15(2):909-928.
[3] KANG S H, KWAK J Y, LEE B Y, et al. The study on configuration of multi-tenant networks in SDN controller[C].Advanced Communication Technology (ICACT), 2014 16th International Conference on, 2014:1223-1226.
[4] LARA A, KOLASANI A, RAMAMURTHY B. Network innovation using OpenFlow: a survey[J]. OmmnaonRvy& Oral, 2014, 16(1):493-512.
[5] 陈琳,吴强.基于SDN技术构建数据中心虚拟网络[J].互联网天地,2013(1):40-44.
[6] DAS S, SHARAFAT A R, PARULKAR G, et al. MPLS with a simple OPEN control plane[J]. Optical Fiber Communication Conference and Exposition(OFC/NFOEC),2011(10):1-3.
[7] MUDIGONDA J, YALAGANDULA P, MOGUL J, et al. NetLord: a scalable multi-tenant network architecture for virtualized datacenters[J]. ACM SIGCOMM Computer Communication Review, 2011, 41(4): 62-73.
[8] CASADO M, KOPONEN T, RAMANATHAN R, et al. Virtualizing the network forwarding plane[C]. Proceedings of the Workshop on Programmable Routers for Extensible Services of Tomorrow, ACM, 2010: 8.
[9] ELFERKOUSS O, CORREIA S, BEN A R, et al. Opendaylight: towards a model-driven SDN controller architecture[C]. Global Telecommunications Conference(GLOBECOM 2012), IEEE, 2012:1-6.
[10] CHEN Z, DONG W, LI H, et al. Collaborative network security in multi-tenant data center for cloud computing[J]. Tsinghua Science and Technology, 2014,19(1):82-94.