针对终端用户开发与部署网络服务的问题,提出了一个基于网络功能虚拟化技术的网络服务编排环境.该环境主要包含3部分:虚拟网络功能数据模型用于适配异构的网络功能,将网络功能以可视化的形式呈献给用户;服务编排环境用于协助用户完成网络服务流程的设计;服务执行环境用于协助用户完成网络服务的部署与运行.3部分构成了轻量级虚拟网络功能编排工具(LVO).将该工具引入相应的开发方法,用户可以在网页浏览器上通过易用的图形化界面"设计即开发"的方式开发网络服务.通过面向用户的实验和系统性能实验,评估了该网络服务生成环境.评估结果表明,LVO可有效降低普通用户的工具学习时间,提高网络服务开发的正确率.
We propose a network service orchestration environment based on network function virtualization (NFV) technology to help end users develop and deploy network services. The environment includes:a virtual network function data model for adapting heterogeneous network functions; a development environment to assist users in the design of network service processes; and a deployment environment to assist users in the deployment and execution of network services. Finally, user-oriented experiments and system performance experiments were conducted to evaluate the network service generation environment. Our evaluation shows that lightweight virtualization orchestrator can effectively reduce the tool learning time of ordinary users and improve the development accuracy of network services.
网络功能虚拟化(NFV, network functions virtualization)[1]是一种新兴的网络技术,显著地改变了网络服务的部署、管理以及运营方式. NFV的主要优点是能够降低硬件成本,显著提高网络功能的灵活性与可扩展性.得益于NFV技术的发展,越来越多的虚拟网络功能(VNF, virtual network function)从物理设备上被抽象出来,并通过标准化接口发布. NFV技术使网络服务开发人员能够将原本独立的VNF根据自己的需求组合在一起,开发出新的增值服务.因此不仅是专业的开发人员,越来越多的非专业人员(普通终端用户和UI设计人员)也开始尝试参与网络增值服务的开发.传统的网络服务开发方法需要投入大量的人力和资金,而且开发周期较长,无法适应个性化网络服务的开发需求.因此,轻量级的开发环境与方法成为解决个性化需求的关键.
为了加快网络服务开发的过程,并让更多的终端用户能够参与网络服务开发,涌现出众多的VNF编排工具,如OpenMANO[2]和EperiaSphere[3].这些工具大都具备管理VNF生命周期和将网络资源虚拟化的能力,在一定程度上可以消除代码障碍,帮助用户开发服务,通过对这些开发框架和工具的分析可以发现,尽管一些管理编排工具已经能够应用在特定的网络服务开发当中,但很少有工具能够帮助用户利用现有的VNF,无障碍地开发个性化的网络服务.举例而言,EperiaSphere的关注点主要放在VNF生命周期的管理调度上,大多需要从命令行进行操作,因此对于一般的用户而言很难完成相关开发工作.整体而言,上述工具或框架主要存在3个问题:
1) 多数开发框架的关注点集中在NFV与虚拟资源的管理上,缺乏面向终端用户的服务开发环境[4].例如,OpenMANO包含openmano、openvim以及一个图形化用户界面3个主要的组件. openvim是一个轻量级的、针对NFV的管理模块,负责与计算节点和存储节点的交互,同时还能够创建基础的网络拓扑. Openmano模块主要负责VNF模板和实例的创建和删除,虽然也提供了网络服务实例的生成功能,但这些实例都是较为基础的网络服务,并不能满足用户个性化定制网络服务的需求, 同时在易用性方面也存在一些局限性.
2) 多数工具的开发模型过于复杂,学习成本较高.终端用户指的是具备一定的创新思维并掌握一些相关领域知识的人员,如网络社区爱好者.但由于他们缺乏专业的程序设计知识,当前很多工具的开发模型对他们并不适用.例如,Open Network Strategy采用了一种基于模型的工作流程来实现基于预定义的服务设计,这也要求终端用户应具备一些程序设计的相关知识.
3) 缺乏系统化的开发模式.目前,示例性开发方法[5]被广泛地应用于各种开发工具中.该方法通过简洁的方式引导用户进行开发,例如可为开发者展示一个经典应用的开发过程,作为参照,用户可以继续设计类似的服务, 但这仅仅适用于简单类型的服务.由于该方法难以从抽象层次上系统化地引导用户进行服务开发,所以并不适用于类型较为复杂的网络服务开发.
针对以上问题,笔者提出了一种基于NFV技术的轻量级网络服务编排环境(LVO, lightweight virtualization orchestrator). LVO不仅为用户提供了一个易用的网络服务生成环境,同时也能适配目前的NFV架构.主要工作包括3个方面.
1) 提出了一个统一的VNF数据模型(VDM, VNF data model),该模型提供了一系列的机制支持VNF功能描述、数据交互和可视化功能.使用JavaScript和IFrame为VDM开发了实例化模板.
2) 在VDM的基础上,实现了轻量级VNF编排工具LVO. LVO是一个利用VNF开发与部署网络服务的工具, 其包含服务编排环境(SOE, service orchestration environment)和服务执行环境(SEE, service execution environment)2部分.当用户开发了个性化网络服务后,服务功能链被发送到SEE中执行,并且将网络服务部署在物理设备上.
3) 从服务响应时间、用户的工具学习时间和网络服务开发正确率等方面对LVO进行了评估.结果显示,LVO能够有效降低终端用户的工具学习时间,同时提高其网络服务开发的正确率,在系统性能上也优于同类型工具.
1 虚拟网络功能数据模型LVO是一个以VNF为中心的开发环境,所以VNF是此开发环境中基本的数据单元.由于这些VNF来自于不同的供应商,所以每个VNF都有自己特定的配置语言与模型,这使得不同类型的VNF之间很难直接进行数据访问与交互.为了实现VNF之间的互操作性,欧洲电信标准化协会开发了关于NFV规范化的信息模型[6-7].笔者为LVO定义并实现了一个VNF模型,称为VDM,用以对VNF进行功能描述、数据操作以及开放可视化接口等.下面给出VDM的描述和构建方法.
1.1 基本概念VDM中涉及的基本概念有如下3个.
1) 属性是VNF之间进行交互的数据对象,表示为ai、aIi、aOi,其中,ai表示任意类型的VNF数据对象,aIi表示VNF的输入数据对象,aOi表示VNF的输出数据对象. VNF的属性分为3种类型:输入属性集AI;输出属性集AO;中间属性集AE.
2) VNF操作表示为pi:AIi
3) 可视化操作为用户提供了将VNF可视化的功能. VNF的可视化操作包括基本的网络功能框架NF和具体的网络功能框架NP.对于NF定义了公共操作集VPC,用于将VNF的基本框架NF显示为统一的图形结构N′F,如一个基于组件的表达形式;对于NP,则用VPS表示NP的可视化效果或相关数据.
1.2 模型描述根据1.1节的基本概念,VDM可以表示为一个五元组<FD, AS, T, V, E>,其中:
FD为VNF具体功能和使用方法的功能性文档;
AS为VNF的属性集,其中AS=AI∪AO∪AE;
T表示VNF输入属性集AI到VNF输出属性集AO的转换过程.其中, AI:(ai1, ai2, …,ain)表示输入属性有限集合,AO:(ao1, ao2, …,aon)表示输出属性有限集合,NP:(p1, p2, …,pn)表示VNF操作的有限集合. T还可以详细地表达为: AI1
V:{NF, NP}
E:AE1
通过VDM的重新包装,一个VNF可归结为5部分——<FD, AS, T, V, E>. AS和T共同提供了数据驱动的核心数据处理机制.其中,T的子操作NP允许采用第3方提供的服务调用方式,如SOAP服务、RESTful服务. FD与V分别提供了VNF描述与VNF可视化的功能,这使得VNF的选取与使用更加便捷. E是一个扩展接口,可用于帮助终端用户在VNF生命周期内对VNF的功能进行扩展与改进. VDM提供了一种统一的方式来封装异构的VNF,并使之可直接交互.
1.3 VDM基于IFrame的实例化一个VNF本质上是一个抽象的构建块,通过处理网络数据完成一项具体的功能.因此对于终端用户而言,需要为其提供一种可视化形式的VDM.笔者采用IFrame[8]技术实现了VDM的可视化,用户可以通过Web浏览器对VNF进行直接访问.对于IFrame模板而言,其实际上是一个可以被嵌入到另一个HTML文档中的HTML文档. IFrame常常用于向Web网页中快速插入Web资源. IFrame拥有独立的控制单元,同时具有页面内嵌图形便于操作的特性.因此,IFrame很适合用于构建VDM的可视化模板.在IFrame的帮助下,VDM对用户呈现出一种图形化的可视化效果,用户可以轻松地对其进行开发或修改. IFrame模式下的VDM实现算法如下.
< html>
<head>
<script citing dependency library to implement iframe in LVO>
//i.e, implementation of NF and NP
< /script>
< /script> definition of Inputs, Outputs & Transformation for VNFs;
LVO.setInfo({
//i.e, implementation of VD
basic information of VNF
}).
addInputs({
//i.e, implementation of AI and T
definition of Input name & type;
definition of execution action corresponding to input name.
It will be triggered as soon as data arrives.
——invoking VNF operation to manipulate data.;
——invoking output port to transmitdata;
}).
addOutputs({
//i.e, implementation of A0
definition of Output name & type;
})
< /script>
<script>
//i.e, implementation of E
inline operation defined by user to manipulate data.
< /script>
<script>
//i.e, implementation of VPS
Scripts to render Iframe page
< /script>
</head>
<body> web page contents of NVF </doby>
</html>
插入算法由于IFrame的实例代码冗长,笔者采用一个便于理解的模板全面地展示VDM的开发过程, 该模板中添加了一些注释,用于指出对应VDM中不同元素的代码段.
IFrame模板的第1部分构建了VNF的依赖库,可根据具体的VNF类别调用相应的依赖库, 每个依赖库对应NP和NF的一个实例化对象.基于预先的VNF类型分类,初步开发了若干个依赖库.当IFrame获取到用户关于某一具体依赖库的请求时,IFrame为用户显示出VNF的可视化界面和交互接口.
模板的第2部分是一组VNF相关的配置信息,其会依靠VNF提供者具体的服务需求进行再次更新.该部分包括Setinfo、AddInputs&addOutputs和Transformation 3个元素. Setinfo主要包含了VNF的基本配置信息,如开发者、功能名称和功能描述.根据这些信息,用户可以快速理解VNF的功能、特点和使用方法. IFrame模板的核心模块是AddInputs&addOutputs,同时该模块的功能对应于VDM中的T:AINPAO.在AddInputs模块中,VNF的提供者需要通过配置属性的名称来定义输入内容的数据类型和被适配的Transformation.同样地,对于AddOutputs模块,VNF的提供者需要通过配置属性的名称来定义输入内容的数据类型.作为VNF进行交互的接口,配置好的输入属性和输出属性对于用户而言具有较好的直观性. Transformation则负责提供从输入到输出的数据处理,配置与对应VNF相关的输入和输出属性,并自动实现VNF功能调用.
模板的其余2部分分别为页面元素和渲染模块,它们为实现VNF所需的可视化资源与操作提供了基本元素.如果用户希望其展示特定的可视化功能,可以在这2部分中完成相关配置操作.
2 LVO系统与开发方法论 2.1 系统框架下面将详细介绍LVO的系统框架. LVO旨在提供一个图形化的开发环境,从而满足终端用户利用现有的VNF开发增值服务的需求. 图 1给出了LVO的基本框架. LVO中最重要的就是对虚拟资源的描述.目前有几种虚拟资源建模语言,如TOSCA和YANG均被应用于描述现有开源平台中的虚拟资源[9-10]. TOSCA数据模型是ETSI提出的一个成熟的VNF描述模型,已经被ONAP采用,并得以验证.因此,在LVO系统中,采用TOSCA作为资源模型描述虚拟资源与生成的可执行脚本.关于该资源模型的详细情况可见文献[11]. LVO主要由服务编排环境和服务执行环境2个子系统构成.处于上层的服务编排环境采用Web技术(HTML、Node. js)基于网页浏览器实现,负责协助用户设计和开发网络服务,并生成可执行脚本交由下层系统处理.处于下层的服务执行环境负责解析执行生成好的网络服务脚本.下面分别介绍2个子系统.
1) 服务编排环境:服务编排环境由3部分组成:用户开发环境、控制器和虚拟服务库.用户开发环境由4部分组成,工作台是一块可供用户绘制服务流程的区域. VNF商店提供了用来创建网络服务的基本组件.在VNF商店中,每一个图标对应一个具体的VNF,并且每个VNF可以被便捷地拖拽至工作台进行设计与开发.模板商店保存了一些常用的样例,用户在设计自己的网络服务时可以作为参考. VNF商店与模板商店中的资源均来自于虚拟服务库, 它们之间通过HTML技术进行交互;部署接口负责将设计好的网络服务流程发送至控制器中.虚拟服务库为用户开发环境提供基本支持,主要负责接入VNF和示范性的网络服务模板,其核心子模块为基于Iframe的模板.虚拟服务库从VNF的技术细节(编程接口或通信协议)中提取VNF特征,使用IFrame模板描述VNF,并将VNF以统一的形式呈现给用户.这使得用户不必关注实现细节就可以便捷地从虚拟服务库中选取所需的VNF.控制器包含4个子模块:业务链解析器、VNF加载器、动态业务链创建及业务导出. VNF加载器提供了一种将VNF所关联的资源加载到开发环境中的机制,利用该机制,当选中的VNF被拖拽至工作台时,系统会生成相应IFrame形式的VNF控制单元,用户可以在其中配置VNF的相关信息.动态业务链创建负责将设计好的服务流程链(SPC, service process chain)解析为YAML [12]格式的业务脚本.动态业务链创建采用Web技术(HTML、Node.js)实现了动态更新机制.该机制可以根据用户设计服务时的行为动态地更新SPC.业务导出模块负责解析网络服务脚本,将其转换成服务执行环境可执行的格式.
2) 服务执行环境.解析引擎是一个基于YAML的脚本解析器,可以直接对服务编排环境中用户设计好的SPC脚本进行业务逻辑解析,如VNF的执行顺序.同时解析引擎遵循了NFV MANO[11]的标准,对SPC脚本中的TOSCA模型进行解析,这是SPC脚本被部署在底层设备上必不可少的环节.执行环境服务器是服务执行环境的核心模块,旨在为用户提供服务部署和资源管理功能.执行环境服务器根据解析引擎中解析完成的可执行脚本请求资源,该模块基于微服务架构,并由Kubernetes [9]进行管理.执行环境服务器的资源请求随后会发往VNF仓库.该模块负责为SPC分配资源,虚拟化编排器和VNF管理器,共同负责VNF生命周期的资源分配与管理.
2.2 面向终端用户的开发模式对于网络服务开发环境而言,系统化的开发方法有助于使目标用户快速学习,并掌握该工具的开发流程.同时,关注并研究网络服务开发模式的工作少之又少.笔者基于LVO工具,提出了一套系统化的面向终端用户的开发模式.终端用户在整个开发过程中具有非常重要的作用.根据Cheng等[13]的定义,终端用户是指在某些领域具有丰富经验的人,他们不擅长编程但却需要使用互联网技术来实现应用需求. LVO为开发网络服务而提供了一个可拖拽的开发环境,用户可以通过拖拽绘制服务流程链开发个性化的网络服务. LVO还支持服务的动态模拟,以便终端用户随时查看网络服务的执行效果.开发分为以下3个步骤.
1) 终端用户根据自身服务的需求,分析网络服务中所涉及的VNF.用户从VNF store中查找相关VNF,并将符合需求的VNF拖拽至工作台,等待下一步完善.
2) 终端用户根据自身的需求输入或选择VNF的属性值,并分析是否缺失某些VNF.如果发现缺失,则需要返回步骤1),将缺失的VNF补充进服务流程中.
3) 在已拖拽并完成配置的VNF基础上,用户根据自身的领域知识和相关经验完成VNF之间的数据依赖关系,并模拟网络服务的执行效果.如果执行正确,那么服务流程链的执行脚本将被部署到执行环境中.
VNF是整个设计过程中的核心元素. LVO中的VNF依靠其可视化的特性,便于被终端用户理解和使用.此外,终端用户可以通过领域知识和结构化分析的方法直观地构建网络服务流程链,并将构建好的流程链一键部署在底层环境中.由此可见,LVO所提供的这一开发模式非常适合终端用户进行个性化的网络服务开发.
2.3 使用实例下面将展示终端用户如何利用LVO系统地开发部署网络服务.在实际情况中,一些网络服务,如视频传输服务,并不会被临时中断传输而受影响.另一方面,一些以文本传输的工业控制命令则会因中断传输而导致丢失.为此,设计开发了一项网络服务,用于保证重要的文本控制指令可以快速传输.用户可以根据自己的实际需求对带宽进行配置,从而保证某些数据的传输质量.对于该服务而言,需要5个VNF来构建起整个服务流程. 图 2展示了服务的开发过程.图中:矩形节点为服务所需的VNF.虚线表示VNF之间的关联关系.用户可以根据自己的需要在Bandwidth control中修改带宽.在该条业务中,Bandwidth control会输出多个数据包,并按预先分配的带宽传输给Server-2.最终,用户设计好的SPC会生成相应的YAML格式的脚本.
使用Python和Node.js(共15 000行源代码)实现了LVO的原型系统.将LVO部署在两台服务器上,每台服务器均配备了2×4 Intel Xeon 3.00 GHz处理器和256 GB内存,服务器运行Linux内核4.4.0 -31.由于较难找到恰当的开发工具与LVO进行公平对比,选择了最接近的编排工具OpenMANO作为对比工具.对比方法参照Cheng等[13]所采用的面向终端用户的开发工具的对比方法.从3方面对LVO进行评估:
1) 对比LVO和OpenMANO的网络服务部署响应时间;
2) 对比为了完成难度相同的任务,终端用户学习使用LVO所花费的时间和学习OpenMANO所花费的时间;
3) 对比终端用户在使用LVO和OpenMANO时,完成相同网络服务的开发正确率.
3.1 实验设计对于评估1),生成了5×10个网络服务.由于实际情况中大部分网络服务包含至多5个VNF,所以实验中的网络服务分别包含1~5个VNF.评估1)中提到的网络服务响应时间是指从SEE收到SOE中生成的网络服务脚本至SEE完成对该脚本的解析并下发部署指令的时间.该时间越短,表明工具的部署效率越高.将这50个网络服务分别导入LVO与OpenMANO,并记录其响应时间.
对于评估2)和3),为保证实验的全面性,从北京邮电大学的师生中招募了60名志愿者,他们均为本科以上学历,可以熟练操作计算机同时缺乏程序设计经验的普通终端用户.首先将60名志愿者分为四大组,每一大组人员对应一项网络服务开发任务.在每一大组中,将志愿者再分为两小组,一组人员学习LVO的使用方法,另一组人员学习OpenMANO的使用方法.在志愿者认为自己完全掌握工具并且可以完成开发任务之后记录其学习时间.
最后要求志愿者使用所学工具完成预先分配的开发任务.四大组人员对应的开发任务难度各不相同.一项网络服务所涉及的VNF数量越多,用户需要配置的内容就越多,因此其开发与部署难度就越大. 4项开发任务所涉及的VNF数量分别为2、3、4和5.在用户完成开发后,统计网络服务开发正确率.
3.2 实验结果图 3的实验数据显示在网络服务响应时间方面,LVO的表现明显优于OpenMANO,50个网络服务的平均响应时间都在25 ms之内.可以看出,响应时间随着网络服务中VNF数量的增加而不断变长,这是因为LVO需要处理更多的VNF实例与协议.总体来看,LVO具有较好的网络服务响应处理能力.
图 4和图 5分别给出了与评估2)和3)相关的实验数据,包含工具学习时间与服务开发正确率两方面.如图 4所示,实验参与者学习LVO使用方法的平均时间为8 min,而学习OpenMANO平均花费的时间为14 min.从每一项任务来看,志愿者掌握LVO所需学习时间也明显少于掌握OpenMANO所需要花费的时间,表明LVO可以有效降低普通用户的学习成本.
图 5展示了在任务开发正确率方面,终端用户对前两个复杂度较低的任务完成质量较高,在第4个复杂度高的任务中表现一般.值得注意的是,用户使用LVO时的任务完成质量明显优于使用OpenMANO时的任务完成质量.可以看出,LVO在提高普通用户服务开发正确率上具有较好的表现.
4 结束语近年来,得益于NFV技术的迅速发展,越来越多的网络功能从笨重的物理设备上被虚拟化,也为用户开发个性化的网络增值服务提供了至关重要的资源.因此,提出了一种重新包装异构VNF的统一虚拟网络功能数据模型和面向终端用户的网络服务生成环境,并介绍了该工具的面向终端用户的开发方法.实验结果表明,LVO在易用性与服务生成效率方面具有一定优势,可有效减少用户的学习时间成本, 并提高服务开发正确率.
[1] |
Sherry J, Hasan S, Scott C, et al. Making middleboxes someone else's problem:network processing as a cloud service[J]. Acm Sigcomm Computer Communication Review, 2012, 42(4): 13-24. DOI:10.1145/2377677.2377680 |
[2] |
Lopez D R. OpenMANO: the dataplane ready open source NFV MANO stack[C]//Proceedings of IETF 92 Meeting. Dallas: ACM, 2015: 66-82.
|
[3] |
Mijumbi R, Serrat J, Gorricho J, et al. Management and orchestration challenges in network functions virtualization[J]. IEEE Communications Magazine, 2016, 54(1): 98-105. DOI:10.1109/MCOM.2016.7378433 |
[4] |
Zhang Yang, Anwer B, Gopalakrishnan V, et al. ParaBox: exploiting parallelism for virtual network functions in service chaining[C]//Symposium on Sdn Research. New York: ACM, 2017: 143-149.
|
[5] |
Aleven V, Mclaren B M, Sewall J. Scaling up programming by demonstration for intelligent tutoring systems development:an open-access web site for middle school mathematics learning[J]. IEEE Transactions on Learning Technologies, 2009, 2(2): 64-78. |
[6] |
Herrera J G, Botero J F. Resource allocation in NFV:a comprehensive survey[J]. IEEE Transactions on Network and Service Management, 2016, 13(3): 518-532. DOI:10.1109/TNSM.2016.2598420 |
[7] |
Zhou Qianru, Wang C X, Mclaughlin S, et al. Network virtualization and resource description in software-defined wireless networks[J]. IEEE Communications Magazine, 2015, 53(11): 110-117. DOI:10.1109/MCOM.2015.7321979 |
[8] |
Qiu Chen, Mutka M W. IFrame:dynamic indoor map construction through automatic mobile sensing[J]. Pervasive and Mobile Computing, 2016(38): 346-362. |
[9] |
Adamuz-Hinojosa O, Ordonez-lucena J, Ameigeiras P, et al. Automated network service scaling in NFV:concepts, mechanisms and scaling workflow[J]. IEEE Communications Magazine, 2018, 56(7): 162-169. DOI:10.1109/MCOM.2018.1701336 |
[10] |
Salsano S, Lombardo F, Pisa C, et al. RDCL 3D, a model agnostic web framework for the design and composition of NFV services[C]//IEEE Conference on Network Function Virtualization and Software Defined Networks(NFV-SDN). New York: IEEE Press, 2017: 216-222.
|
[11] |
NFV ETSI IGS. Network functions virtualisation (NFV) release 2; protocols and data models; NFV descriptores based on TOSCA specification v. 0.6.0: ETSI GS NFV-SOL 001[S]. Sophia Antipolis: NFV ETSI IGS, 2018: 3.
|
[12] |
Sinha V, Doucet F, Siska C, et al. YAML: a tool for hardware design visualization and capture[C]//International Symposium on System Synthesis. New York: IEEE Press, 2000: 9-14.
|
[13] |
Cheng Bo, Zhai Zhongyi, Zhao Shuai, et al. LSMP:a lightweight service mashup platform for ordinary users[J]. IEEE Communications Magazine, 2017, 55(4): 115-123. DOI:10.1109/MCOM.2017.7901487 |