APP下载

一种灵活控制服务功能链的新方法

2020-12-25张顺康

计算机技术与发展 2020年12期
关键词:网络服务队列调度

张顺康,陈 鸣,许 博

(1.南京航空航天大学 计算机科学与技术学院,江苏 南京 211106;2.陆军工程大学 指挥控制工程学院,江苏 南京 210007)

0 引 言

在计算机网络中,网络服务是运行在应用层的一种程序,能够提供数据存储、处理、表示、通信或其他分布式计算能力,网络服务可认为是某种网络功能的集合,是网络创新最为活跃的领域,是网络价值的体现。在网络功能虚拟化(network function virtualization,NFV)环境下,NFV通过软硬件解耦和功能抽象,形成不依赖于物理设备的虚拟网络功能(virtual network function,VNF),VNF运行在虚拟机或容器中,通过服务功能链(service function chaining,SFC)将若干个VNF互连,形成一条具有特定功能、性能的网络路径,用于提供端到端的NFV网络服务[1-2]。SFC可以灵活部署网络服务,有效降低网络建设与运维的成本,加快新服务的应用和升级。SFC是当前学术界的研究热点,2015年至今的HotMiddlebox研讨会上,收录了多篇SFC方面的论文,甚至计算机网络的顶级会议——ACM SIGCOMM,也将SFC列为专题来研讨。分析SFC的相关工作,对于SFC的研究主要分为以下3个方面:SFC标准化研究、SFC编排研究和SFC应用研究[3-6]。

在SFC应用研究领域,目前研究者比较关注的是如何降低时延、增强服务可靠性以及灵活调整服务功能。该文研究如何灵活调整NFV网络服务的功能,提出了两个问题并给出了解决方案。第一,目前SFC仅通过定义VNF序列的执行顺序来控制网络服务功能,而事实上,VNF的运行参数及执行时间段等都会对NFV网络服务的功能产生影响;第二,如何让系统理解用户对NFV网络服务的要求,并且能够自动将其转换为对VNF序列的控制操作。针对第一个问题,文中提出了增强服务功能链(enhanced service function chaining,ESFC)的概念,并给出了一种基于XML语言的描述方法,通过自定用户义的标签描述VNF序列的执行顺序、运行参数以及执行时间段等,从而精细地定制ESFC,满足用户细粒度控制NFV网络服务的需求;对于第二个问题,文中设计了一种灵活控制ESFC的系统模型,可以自动解析控制描述文件,并生成对VNF序列的控制任务,执行相应的任务,就可以控制特定VNF在特定时间内,以特定的参数运行,从而自动调整ESFC,实现NFV网络服务的精细化控制。

1 SFC相关研究

目前,SFC的标准化工作主要由IETF下的SFC工作组完成,该组织在草案[7]中详细定义了SFC的框架结构、适用场景、数据包分组格式等。SFC编排问题已经被证明是一个NP难问题[8],可将SFC编排问题转化为整数线性规划模型,然后设计启发式算法求最优解,如Beck等人[9]设计了一种基于弹性约束的启发式算法,根据SFC策略需求可以快速得到最优解,有效降低计算资源消耗;李丹等人[10]则提出了一种基于最优加权图匹配的算法,将SFC抽象为功能拓扑图,利用特征向量分解算法获得匹配结果,并利用爬山算法对结果进行优化,可以显著降低带宽资源消耗,并且算法复杂度很低,具有较高的时效性。

当前对于SFC应用问题的研究主要集中在如何降低时延以及保证服务的可靠性,如Oljira等人[11]通过一些仿真试验测试了虚拟化对网络时延的影响,仿真结果表明,对于端到端的网络时延,虚拟化环境下的数值比非虚拟化环境要大;陈卓等人[12]抽象了一个面向业务流服务时延优化的数学模型,并基于遗传算法提出了一种启发式SFC重迁移配置策略,并通过对比试验证明了模型和算法的有效性。而为了提高服务的可靠性,通常采用VNF备份机制,如Fan等人[13]基于VNF备份机制提出了一种新颖的在线算法,可以在资源消耗最小的同时,确保网络服务的可靠性;兰巨龙等人[14]通过将网络拓扑抽象为有向图进行建模分析,提出了一种基于路径选择的可靠性算法;韩青等人[15]提出了一种最优备份拓扑生成算法,可以在保证服务可靠性的前提下,减少VNF备份数量,提高资源利用率。

综上所述,虽然目前关于SFC标准化以及SFC编排的研究已经相对成熟,在SFC应用方面也取得了一定的研究成果,提出的一些算法和模型也具备一定的可行性,但是,由于上述算法基本都是通过仿真系统进行验证的,在真实网络中的效果还有待商榷。另外当前也缺少利用SFC灵活、精细地控制NFV网络服务的研究。文中针对这一问题进行了探讨,提出了两个问题并给出了解决方案,同时在NFV网络中进行试验,确保了结果的准确性及可靠性。

2 增强服务功能链机制

2.1 相关定义

定义1:NFV环境下,所谓VNF是一段能够在虚拟机或容器等环境中运行的代码或软件。

定义2:NFV环境下,虚拟中间盒(virtual middle-box,VMB)是指具有特定网络功能的Linux容器(Linux container,LXC),在LXC环境中运行一个或多个VNF提供某种网络功能,这种LXC即被称为VMB。

定义3:NFV环境下,某VNFi的定义为:VNFi={F,P},其中F是性能与功能集合,P是运行参数集合。当分组序列通过VNFi时,所呈现的功能及性能集合称为VNFi行为。当前的VNF通常认为其行为是不变的,但事实上,若P取不同的子集pt,则其可能呈现不同的功能和性能Ft={fs|pt}。

当前的SFC较之传统方式提供网络服务的优势,就在于它可以定制VNF的次序,增强网络服务的灵活性。但是SFC一旦确定并部署完成,SFC的行为就是固定的,且xAi(x),x∈A取值为1。而事实上,VNFi的行为是可变的,因此xAi(x)可能取值为0,并且由定义3可知,每个VNF的行为都可能随着运行参数的改变而不同。

定义5:NFV环境下,当某SFC的运行参数P可控调整,且xAi(x)可按时间t取值0或1,该SFC称为增强服务功能链(ESFC)。

SFC与ESFC的本质区别是,前者仅能定制VNF次序,且一旦定制完成,则其行为固定不变;而后者则可通过VNF顺序、运行参数集合P和随时间变化的xAi(x)等要素来定制SFC,从而灵活、精细地控制SFC,使得NFV网络服务呈现丰富的功能多样性。

2.2 灵活控制ESFC的系统模型

引入上述概念使得灵活、精细地控制NFV网络服务成为可能,但由于用户对网络服务的需求不断变化,通过人工修改程序来满足网络服务行为调整的方法是不可取的,需要研发一种系统:理解人类用户需求,进而自动将其转换为可执行的网络任务。

为此,基本思路是:定义一种形式化描述ESFC的方法,用户利用该方法描述所需的网络服务,并形成控制描述文件;系统读入并解析控制描述文件,进而将其分解为对VNF序列的控制任务。

为了具有灵活、精细地控制网络服务的能力,需要系统提供相关的功能支持。该系统的层次模型如图1所示,它分为服务定制层、服务编排层以及任务执行层。其中,服务定制层主要供用户定制NFV网络服务的控制描述文件,用于解决提出的第一个问题;服务编排层是控制描述文件的解释执行环境,负责编排控制描述文件并生成任务队列,用来解决提出的第二个问题;任务执行层的主要功能就是执行具体的任务以控制VNF呈现特定行为,从而灵活调整ESFC的功能,实现灵活控制NFV网络服务的目标。

对于该灵活控制ESFC的系统模型,有以下3条假设:

图1 灵活控制ESFC的系统模型

(1)NFV网络服务由ESFC提供。

(2)ESFC已经部署在NFV网络中。

(3)用户明确NFV网络服务需求。

该系统中,执行一个控制任务指调整一个VNF的行为,任务队列中的所有任务全部被执行之后,即完成了相应的ESFC的调整,即实现了用户的NFV网络服务需求。控制任务具有“控制描述”、“解析调度”和“任务执行”3种状态,系统调度控制任务执行时的有限状态机如图2所示。其中,当新的网络服务需求到达时,任务处于“控制描述”状态,采用形式化方法描述NFV网络服务行为,定义构成网络服务行为的控制任务可通过描述ESFC实现,而事实上是描述构成ESFC的VNF序列的行为,任务保持在“控制描述”状态直至描述完毕为止;而当完成控制描述文件时,提交控制描述文件,任务处于“解析调度”状态。控制任务处于“解析调度”状态时,当任务队列中某个任务的调度时间到了,提交该任务,转向“任务执行”状态;如果当任务调度时间到了而没有任务可调度,则返回。当任务处于“任务执行”状态,若某个控制任务是一次性任务,则执行完毕后删除该任务;而当该任务需要重复执行时,则需要将该任务重新插入队列的适当位置。

图2 系统执行控制任务的有限状态机

2.3 形式化描述方法

XML是一种可扩展标记语言,允许用户自定义标签,同时具有自描述性,可定义各种标识描述信息的所有元素[16]。因此为了解决文中提出的第一个问题,提出了一种基于XML语言描述ESFC的形式化方法,用户可根据NFV网络服务需求自主定义标签,从而能够灵活地基于多个约束条件定义一个ESFC,满足用户灵活、精细地描述NFV网络服务的需求。

文中给出了从VNF次序、VNF执行时间、VNF运行参数等因素共同定义的ESFC的控制描述文件control.xml。该文件共3层,第1层为根标签,表示此文件用来描述NFV网络服务的控制信息,其标签定义为;第2层标签为,定义了一条控制信息的序号;第3层定义了一个VNF的控制信息,包括VNF所在VMB的名称、VNF名称、VNF执行时间、VNF动作、VNF运行参数等,其具体标签定义如表1所示。

表1 VNF控制信息的标签定义

2.4 控制器设计

上述控制描述文件可解决灵活、细粒度地描述ESFC的问题,而为了解决文中提出的第二个问题,基于图1所示的灵活控制ESFC的系统模型,设计实现了一个控制器,用来解析控制描述文件,并将其自动转换为控制相应VNF行为的任务队列,调度队列执行任务即可及时、准确地调整ESFC,从而实现NFV网络服务的精细化控制。

控制器分为解析模块和任务队列模块两部分,解析模块负责检测控制描述文件的语法格式,并解析描述文件得到NFV网络服务的控制描述信息;任务队列模块根据控制描述信息构建任务队列,并调度任务队列的任务在特定时间下发到任务执行模块执行。其中,解析模块的语法检测功能由检测函数XMLGrammarD()提供,基于DTD文件实现,描述文件解析功能由解析函数analysisXML()提供,基于Java DOM4j函数库实现,逐行解析控制描述文件即可得到NFV网络服务的控制描述信息;任务队列基于双向链表实现,构造任务队列时,有VNF运行时间和VNF优先级两个约束条件,因此得到的任务队列中,排在前面的都是执行时间靠前且优先级较高的控制任务。控制器的工作流程如下:

(1)系统读入控制描述文件,执行函数XMLGrammarD()检查控制描述文件的语法,若语法正确,执行解析函数;否则,给出错误提示,由人工修改控制描述文件后再重新读入。

(2)执行完解析函数之后得到NFV网络服务的控制信息,根据控制描述信息生成任务队列,执行调度函数taskControl()处理任务队列。

(3)若已到达队首任务的执行时间startTime,则让队首控制任务出队,获取控制任务信息,然后执行队列函数taskAdjustment(),此过程中根据任务类别,对该任务进行不同操作,然后开启线程下发任务参数到任务执行模块,从而控制特定VMB中特定的VNF执行特定的操作;若未到达队首任务的执行时间,则继续等待。

调度任务队列的详细流程如图3所示。

图3 任务队列调度流程

2.5 任务执行模块设计

任务执行模块,用来执行具体的控制任务,改变特定VNF的行为,其基于shell脚本实现,主要接收任务队列下发的控制任务信息。首先,根据任务信息确定操作的VMB以及VNF;然后,根据VNF的动作信息调整VNF行为。任务执行脚本control.sh位于/usr/local/目录下,共有3个函数:start()、stop()和restart(),分别用来执行启动VNF、停止VNF运行以及重启VNF等操作。

(1)执行start()函数需要传递的参数有VMB名称、VNF名称以及VNF运行参数(可选)。

(2)执行stop()函数需要传递的参数有VMB名称和VNF名称。

(3)执行restart()函数需要传递的参数有VMB名称、VNF名称以及VNF运行参数。

其中VNF的运行参数存储在文件config.txt中,以“参数名=参数值”的格式存储,每个参数占一行,位于相应VMB中的/usr/local/目录下。启动VNF实际上就是根据该配置文件使VNF的功能生效;停止VNF运行实际上是根据VNFname的值关闭相应的进程;重启VNF实际上就是更新该配置文件,并以新的配置文件为参数让VNF的功能生效。

3 原型系统试验及结果分析

根据第2节提出的灵活控制ESFC的系统模型,本节基于LXC技术在一台服务器上建立了原型系统,通过对原型系统的试验,验证了基于XML语言描述NFV网络服务需求的方法的可行性,以及ESFC机制的有效性。

3.1 原型系统组成

原型系统运行在一台型号为Intel(R) Xeon(R) X5647的服务器上,服务器的主频为2.93 GHz,内存为32 G,CPU为四核,安装Ubuntu 16.04 server版系统。原型系统的NFV网络拓扑结构如图4所示,NFV网络中的所有虚拟网络节点都是通过在LXC中运行VNF得到的,所有链路的带宽均为1 000 Mbps,在LXC中运行Quagga[17]软件得到虚拟路由器R1~R5,所有路由器中都运行OSPF协议[18];在LXC运行OpenvSwitch软件得到交换机S1;在LXC中运行IPERF软件得到虚拟主机iperf1和iperf2,用来发送或接收TCP/UDP流量;在LXC中运行TFN2K[19]软件得到可以发动DDoS攻击中间盒A1,可发送DDoS攻击流;在LXC中运行DDoS防御程序[20]得到DDoS防御中间盒D1,可用来检测并防御DDoS攻击。

图4 测试原型系统的NFV网络

3.2 系统功能验证及分析

为了验证灵活控制ESFC的系统能够根据控制描述文件准确地调整ESFC,从而按需灵活控制NFV网络服务,在此NFV网络中,部署了两条ESFC:iperf2→iperf1和A1→D1→iperf1,通过以下试验来验证灵活控制ESFC的系统功能,试验开始前,ESFC的功能节点中的VNF都未运行。

试验过程如下:

(1)在T0=0 s时,启动iperf2和iperf1,并让iperf2向iperf1发送带宽为100 Mbps的TCP流。

(2)在T1=10 s时,改变iperf2中IPERF VNF的运行参数,让其向iperf1发送带宽为200 Mbps的UDP流。

(3)在T2=20 s时,启动A1中的TFN2K VNF,让其对iperf1发动DDoS攻击,攻击方式为TCP flood。

(4)在T3=30 s时,启动D1中的防御程序。

(5)在T4=40 s时,结束试验。

编辑表示此次试验过程的控制描述文件,并将其提交给原型系统执行,统计这段时间内,iperf1端口捕获分组速率的变化情况,试验重复了30次,取其平均值作为iperf1端口捕获分组速率的数值。图5展示了iperf1端口捕获分组速率的变化曲线。

图5 通过系统控制ESFC的行为

由图5可见,在T0~T1(0~10 s)时间段内,iperf1端口捕获分组的速率大约在8 500个报文/秒左右,报文类型为TCP;在T1~T2(10~20 s)时间段内,iperf1端口捕获分组的速率约为17 000个报文/秒,报文类型为UDP;在T2~T3(20~30 s)时间段内,iperf1端口捕获UDP分组的速率基本不变,仍为17 000个报文/秒,捕获TCP分组的速率则迅速增加,约为60 000个报文/秒;在T3~T4(30~40 s)时间段内,iperf1端口捕获UDP分组的速率保持不变,仍为17 000个报文/秒,而捕获TCP分组的速率则迅速下降到0。并且在时刻T0、T1、T2、T3,捕获分组的速率变化基本都在极短时间内完成,此后基本保持稳定。分析捕获分组速率的变化曲线可知,在T0时刻,iperf1接收到带宽为100 Mbps的TCP报文;在T1时刻iperf1接收到带宽为200 Mbps的UDP 报文;在T2时刻iperf1遭受了TCP flood 攻击;在T3时刻启动了DDoS防御中间盒D1,因此,DDoS攻击报文不能通过交换机S1转发到iperf1。可以看到,试验过程中,相关VNF的行为与预定义的控制描述文件完全一致。

试验小结:基于XML语言编辑控制描述文件可以表示复杂、多变的NFV网络服务需求,并且该系统读入控制描述文件,可以按照预期调控相关VNF的行为,从而按需调整ESFC,进而实现灵活、精细地控制NFV网络服务的目标。

3.3 系统性能验证及分析

为了测试通过系统控制VNF行为的及时性,将VNF行为预定发生时间与实际执行时间的间隔称为调度时间,以其作为评价指标。通过该系统反复测试了控制不同的VNF执行不同操作时的调度时间,最后得到如表2所示的试验结果。

表2 三种VNF的调度时间 ms

由表2可见,调度时间与VNF类型基本无关,但与VNF行为有关。启动或停止VNF的调度时间约为40 ms,而重启VNF的调度时间大致为100 ms。这说明,当同时刻仅有一个控制任务需要被执行时,该系统可以在极短时间内完成特定VNF行为的控制。

但在实际应用中,用户可能需要同时改变大量VNF的行为,为此,让该系统在同一时刻分别调度100、200、300、400、500和800个任务进行试验,这些控制任务并发执行,此时统计处理完成同一时刻执行的所有任务所需要的调度时间。图6显示了并发执行任务的测试结果。

由图6可见,任务调度时间与同一时刻需要执行的任务数量大致呈线性增长的关系。该系统在1秒内可以同时处理大约200个动作为“restart”的VNF操作,800个动作为“start”或“stop”的VNF操作,因此该系统应当能满足大部分实际网络服务的应用需求。

图6 并发执行多个任务所需的调度时间

为了测试该系统工作时对宿主机的影响,在试验过程中,统计了宿主服务器资源的使用情况。图7展示了系统运行过程中宿主服务器的CPU使用率及内存占用率的变化情况。

图7 宿主服务器资源与任务数量的关系

由图7可见,尽管宿主服务器的CPU利用率和内存占用率随任务数量的增加而上升,但即使在调度800个任务时,内存占用率的增长也没有超过1%,CPU利用率最大也没有达到15%。上述试验结果表明,系统总的调度时间随着任务数量的增加而大致呈线性增长趋势,该系统能够同时处理200个动作为“restart”的VNF调度,或800个动作为“start”或“stop”的VNF调度,而不影响响应的及时性,并且这些调度操作对系统资源的影响较小。说明基于普通宿主服务器,原型系统能够满足完成处理大量并发任务调度的需求。

4 结束语

当前,通过SFC定制NFV网络服务,仅能定义VNF次序,并且在SFC部署完成之后,不能再调整相应的VNF行为。文中研究了SFC定制NFV网络服务时所面临的两个问题,并给出了解决方案。首先,提出了ESFC的概念,给出了一种基于XML语言的细粒度描述NFV网络服务的表示方法;其次,设计并实现了灵活控制ESFC的系统。原型系统的试验结果表明,该系统通过解析控制描述文件,能够灵活、精细地控制NFV网络服务。并且该系统基于NFV技术实现,所得的试验结果真实可靠。接下来,将进一步优化控制器设计,使所提架构与机制能够更好地满足多种NFV网络服务的需求,以及研究该系统如何应用到真实网络中。

猜你喜欢

网络服务队列调度
基于智慧高速的应急指挥调度系统
水资源平衡调度在农田水利工程中的应用
网络服务合同的法律问题研究
基于网络服务者在侵权法中的应用分析
基于增益调度与光滑切换的倾转旋翼机最优控制
队列队形体育教案
队列里的小秘密
基于多队列切换的SDN拥塞控制*
基于强化学习的时间触发通信调度方法
青春的头屑