陈源宝,吴礼华,黄 双,谢 刚,陈夏爽
(1.武汉第二船舶设计研究所,湖北 武汉 430000;2.武汉大学 电子信息学院,湖北 武汉 430000)
随着网络用户数量的不断增多以及网络规模的不断扩大,各种新型网络应用不断涌现,对如今网络运营商的服务能力提出了越来越高的要求,传统的网络形态无法及时满足这些新业务和新需求,并逐渐暴露出一系列问题。因此需要研究既能快速满足需求,又能全面解决传统网络遗留问题的新技术和新手段。
在一个可编程的虚拟网络中,每个虚拟网络切片都是由一些互相独立的、服务于特定应用的网络功能单元构成,并且每个租户都拥有自己的控制器。多个切片之间存在严格的逻辑隔离,租户之间的应用流量和操作行为相互不会造成影响,即使在共享部分底层物理资源时也是如此。这种模式对于未来网络运营商而言是非常有吸引力的,它可以极大降低网络建设成本,提高运营收益。
在多租户虚拟网络环境中,用户对于网络服务的多样性以及性能的稳定性需求并不会随着网络架构和运营模式的升级而削弱;反而,用户需求之间的差异性和动态性对于不同切片间资源的分配和调度效率提出了新的挑战。例如,在多租户场景下,运营商需要为每个租户提供有保障的差异化服务。在5G、窄带物联网[1]和机器对机器通信[2]等复杂应用场景中,需要能够为租户同时提供多种QoS等级的混合服务。同时,由于租户的需求是动态变化的,与很多因素有关,比如能耗、应用类型以及使用习惯等,更进一步增加了虚拟资源的管理难度。
针对这个问题,目前业界对于虚拟资源的动态分配与优化问题的主流解决方案存在以下几点不足:① 缺乏足够高效的网络状态感知方法,现有的方法要么精确度不足,支持的特征参数比较少,要么测量成本(计算和存储)很高;② 缺乏能够自动获取特征,在线解决虚拟网络嵌入问题的方法,现有方法要么只适用于求解小规模问题,要么只适合离线场景,无法满足用户需求的动态性;③ 对租户虚拟网络中的局部资源优化问题时,没有将其与虚拟网络请求联系起来当做一个联合优化问题看待,对虚拟网络的动态性考虑不足。
本文针对多租户虚拟网络的特殊环境,将用户流量调度与网络虚拟资源分配看做一个联合优化问题,提出了面向多租户的流量调度算法以及用于共享链路的动态带宽分配算法,该算法能够释放更多的物理网络资源,明显降低了租户网络的延时和拥塞。对所提算法进行了实验仿真,并对结果进行分析。
基于虚拟化的网络环境给租户QoS的保障工作带来了新的挑战。如何在基于SDN的虚拟网络中达到与专用硬件所保证的服务质量相当的水平是一个必须解决的重要问题。
目前对于这个问题,Al-Jawad等人[3]提出了一种基于强化学习(Reinforcement Learning,RL)的框架,其利用基于策略网络管理的Q-learning算法来优化基于多媒体应用的SDN网络中的QoS问题。通过定义业务矩阵的方式来表示网络状态,针对RL-Agent设计了4种不同的动作:① 不做任何操作;② 降低数据速率;③ 增加数据速率;④ 重新路由。而奖励信号是基于用户服务等级协议(Service Level Agreement,SLA)的要求。虽然由该方法引入了更多的网络开销,但实验结果表明,与基于多媒体业务的传统方法相比,QoS保障的能力显著提高。
文献[4]提出了一种可用于SDN网络的认知路由引擎(Cognitive Routing Engine,CRE),主要由3个模块组成。第一个模块是认知路由算法模块(Cognitive Routing Algorithm Module,CRAM),该模块采用随机神经网络并结合强化学习来寻找可使目标函数最大化的流量路径,以满足应用的QoS需求。该方法中流量的转发端口可以在两种不同的模式下进行:① 探索模式;② 开发模式。在探索模式中,随机选择输出端口,而当处于开发模式时,选择概率最大的神经元节点作为输出。因此,当选择的新路径获得的奖励值高于阈值时,则认为该路径是正确的,同时更新相应的权重参数;反之,则表示Agent做出了错误的选择,会更新权重以允许重新选择其他路径。第二个模块是网络监控模块,它获取网络状态信息并通知CRAM。最后一个模块是路径转换模块,它将CRIM找到的路径转换成Openflow流规则。基于Mininet[5]和Géant网络拓扑的实验表明,CRE达到接近最优路径所需要的数据比传统SDN方式快9.5倍。
文献[6]给出了一种可为远程手术提供QoS保障的方法。该方法周期性收集网络状态的统计数据,并使用蚁群算法来计算外科医生和患者之间的最佳路径。这种方法改进了平均端到端延迟、平均丢包率和峰值信噪比。类似的研究还有文献[7]中的一种结合QoS需求和能量感知的SDN路由策略,采用了基于进化算法的多目标进化算法来处理两个目标函数。
在网络中,同时存在多个不同QoS需求的流量会对用户的体验带来以下影响:实时性业务会占用那些非实时业务的资源,而那些QoS冗余度高的业务可能在出现拥塞时被迫给冗余度低的业务让路,因为在未加干预时,实时业务流量无法公平有效地分享网络资源[8]。当多业务共存时必然意味着各种类型SLA的存在,这就进一步增加了全局路由决策的难度[9]。现有的关于SDN中流量工程的研究工作在面对不同租户应用的流量调度时,并没有深入考虑过多租户虚拟化场景下提供QoS一致性保障的解决方案。且传统的网络配置并未考虑带宽会有动态变化的需求,即所谓带宽配置是刚性的,但是在多租户虚拟网络中,如果不及时进行调整就会出现资源利用率降低的情况。
本文的目标是设计一种可以将切片资源申请与业务流量调度联合进行优化的方案,以确保在虚拟资源完全隔离的情况下,可运行在多租户应用程序之间的最佳流量调度方案。
虚拟化切片和流量调度的联合模型可用如下归纳的公式来描述。
目标函数minGn;∀n∈N ∑1≤n
根据建立的目标函数,提出一种QoS保障的动态流量分配算法QVR,如算法1所示,它可以在保障端到端QoS的情况下调度数据流,然后,让该流量调度算法与网络hypervisor的反馈控制算法一起工作,实现一种自适应控制,可为多个租户提供一个最大化最小流到达速率的动态解决方案。
算法1:QVR输入:G1,G2,...,GN;链路容量{ci,j},QoS约束{Dmaxn,f,Jn,f,pmaxn,f},输出:总传输速率λ*,流量的调度方法{Xnf,i,j}1:for 每个切片GNdo2: for 每条流f∈Fndo3: 查找{snf,dnf}之间的所有路径4: for 每条路径k do5: 初始化λnf,k=吠6: While 评价QoS约束Eq.(7)-(10),λnf,kdo7: λnf,k←λnf,k-18: 对于路径k查找所有满足Eq.(4)-(6)的{Xnf,i,j}9: end10: end11: λnf=maxkλnf,k12: end13: λn=minλnff∈Fn14: end15: 最终得到 λ*=∑n∈Nλn
首先,对于子网中每个应用的流量而言,找出流量的“源-目的”对之间所有可用路径,然后对于这些路径依据上文中的约束条件进行评估,输出相应的最大流量抵达速率。用算法1中步骤6中的QoS约束进行评估,如果QoS无法满足此轮中给定的到达率,则该评估结果输出真值。在这种情况下,算法会主动降低到达速率,并通过步骤8对路径k进行相应的流量调度路径查找,经过多轮迭代后算法找到最优解后退出循环。
最终算法可在所有路径中选择流量的最大速率作为到达速率和每个切片中的最小流速率,同时也可以相应地获得多个租户的总速率。
如算法2所示,在虚拟网络请求和流动态调度算法1之间提供了一个自适应的反馈控制,为虚拟化切片策略和路由决策的联合控制提供支持。在执行过程中,网络hypervisor在接收到分配策略后,首先为多租户将SDN基础网络切分为多个虚拟切片,一旦切片完成后,动态流量调度算法1将会输出网络吞吐量和响应时间的最优调度策略。正常情况下该算法可以解决QoS需求随时间变化的动态问题,然而,如果网络资源的分配不能提供可行的方案(比如λ*=0),此时算法2对网络hypervisor提供反馈控制,请求更好的网络切片来及时生成可执行的切片策略。有了这种自适应的反馈方案就能及时解决在保障QoS的同时,为虚拟资源的分配和流量调度的问题寻找联合优化方案。
算法2:反馈控制输入:G;{wmaxn};{ci,j};{Dmaxn,f,Jn,f,pmaxn,f}输出:{Gn};λ*;{Xnf,i,j}1:Whileλ*==0do 请求网络虚拟切片资源2: {Gn}←(G,{wmaxn})执行流量调度3: (λ*;{Xnf,i,j})←算法1({Gn},·)4:end
(11)
(12)
第i个资源请求者的资源的需求估计值r(i) 可由式(13)确定。对于资源请求者来说,利用率ux可以处于上下边界γ和β之间;p(i)表示来自第i个资源提供者的供给值,对于资源提者而言,利用率ux在边界γ和β之间。式(14)和式(15)确定了资源需求的总量rt和资源供给的总量pt,g和h分别为资源请求者和提供者的数目。
(13)
(14)
(15)
本文使用带约束条件的损失函数来获得最优调度策略,最优调度策略需要保证总成本最小,损失函数如式(16),其中,cm和xm分别为mth优先级中每个资源单元的成本和mth优先级中的资源数量。
(16)
为保证调整算法可行,式(17)表示优先级m的资源总量之和,其必须小于总供应量;为保证最小带宽的使用,式(18)限制资源回收pm(i),并考虑最小带宽限制;式(19)确定由切片提供优先级m的可用资源pm(i)的范围;式(20)表示所需资源数量需要介于最大和最小rt之间。
(17)
pm(i)≤Ai(t)-Si,
(18)
x1,x2,…,xn≥0,
(19)
(20)
OpenVirteX(OVX)[10]是一个开源的网络hypervisor,它可以作为交换机和SDN控制器之间的透明代理,为租户提供端到端的虚拟化网络。每一个虚拟网络可称为一个切片,每个切片都有属于自己的网络和计算资源,OVX使切片之间彼此隔离,隔离机制包括带宽隔离、拓扑隔离、CPU资源隔离和流表空间隔离。
OVX允许每个租户在各自的切片内选择不同的SDN控制器,更重要的是其支持地址虚拟化。它可以为切片内用户任意分配虚拟地址,例如各自的虚拟IP和虚拟MAC。除此之外,OVX还提供开放的API供开发者使用。
实验系统的结构如图1所示。主要包括SDN控制器、OVX虚拟化平台、弹性带宽分配模块、QoS保障模块以及软件交换机组成的数据平面。其中,QoS保障模块运行在SDN控制器中,动态带宽分配模块运行在OVX平台上。
图1 实验系统结构图Fig.1 Experimental system structure diagram
实验分两部分进行,设置好租户/切片的初始状态后,先测试QoS保障的流量调度功能模块(算法1、算法2),然后测试动态带宽分配模块的性能。
参考Sprint网络参数,使用Mininet生成一个包含25个节点、53条链路的底层网络拓扑,如图2所示,其中标注了链路延迟的典型值,单位为ms。
图2 底层物理层网络拓扑Fig.2 The underlying physical layer network topology
图3为租户1~3的虚拟拓扑结构,图4为测试链路拓扑图,其中虚线标注了3个租户所共享的底层链路,单位均为ms。可以看到运行了OVX之后,按照要求创建了3个切片,且这3个切片拥有较少的公共链路,接下来将在这3个虚拟网络切片上测试前面所提到的2个应用程序的性能。
(a) 租户1
图4 多租户共享的链路Fig.4 Multi-tenant shared link
本测试设置了2个对:OSPF算法和随机分配算法。每次实验持续时间120 s,共进行30轮,结果如图5和图6所示。
(a) 30次实验中共享链路数的平均值图
(a) 30次实验中拥塞链路的平均值
首先测试了流量调度功能,由图6(a)可以看出,在对比的3种方法中,OSPF是通过选择对应切片上的最短路径来进行转发,它的表现与随机选择路径转发流量的方法类似,共享链路的数量快速上升,尤其是随机路径方法,共享链路数很快就达到了最大值。然而本文方法由于与OVX存在反馈机制,可以一直维持稳定的共享链路数,所以各个租户可以获得更好更稳定的服务。图6(b)统计的是出现了拥塞的链路数,本文将延时达到最大可接受阈值(100 ms)定义为该链路出现拥塞。可以看到,QVR方法出现的拥塞链路数最少,能够在较短时间内达到稳定。原因在于对路由策略做出的优化,QVR方法选择了最优吞吐量和延时的路径,并拒绝了那些会引起切片资源过载的路径,在遇到与切片资源冲突的情况,它会受到QoS保障算法的约束并及时反馈给OVX,申请更多的资源。本文统计了3个切片中租户业务延时的情况,如图7所示。
(a) 租户1
由于实验的初始设置,租户1运行的是实时应用,且引入了很多突发流量,所以要求比租户2和租户3拥有更低的延时保障。结果显示OSPF和随机路径方式由于延迟很大而且波动也很大,不能满足租户1的需求,而且在运行租户2和3的业务时也都产生了更大的延迟。另一方面,租户QVR算法在3个切片上都获得了更短、更稳定的延时,尤其是在运行租户1的业务时,能够保障延时平均值在5 ms以内。验证了该算法对于流量调度和QoS保障的有效性,可为多租户在虚拟网络中的应用提供可靠和高效的传输。
测试链路拓扑如图4所示,图中蓝色标注的链路为存在租户共享的链路,测试参数的初始配置如表1所示。然后对链路进行带宽初始化设置,每条物理链路的最小带宽容量是75 Mbit/s。切片1的优先级是1,意味着最高。切片1的初始最小带宽保证是15 Mbit/s,最大上限是25 Mbit/s,其余切片的最低保障带宽是20 Mbit/s,上限为30 Mbit/s。最大带宽限制可以根据当前网络和服务的状态进行自动调整。
表1 实验设置Tab.1 Experimental setup
所有切片在业务运行时的带宽变化情况如图8所示。随着切片中带宽利用率与总体带宽利用率关系的变化(紫色虚线为物理、链路带宽总利用率),各个切片的最大带宽上限也随之发生调整,例如在最左侧的第一组窗口中,切片2的带宽利用率一直在80%以上,而切片3此时利用率不足40%,此时切片1的利用率几乎与总利用率相当,所以切片2与切片3构成互相供给关系,带宽分配模块中的分析子模块会判定切片2此时的角色为资源请求者,切片3的角色为资源提供者,系统会将切片2的带宽上限提高、切片3的带宽上限降低,以将切片3链路中闲置的带宽分享给切片2;等到达第二个窗口后,切片2的利用率开始下降到50%以下,此时切片1的利用率上升到了85%,又构成了供给关系,切片2由资源请求者变成了资源提供者,切片1由资源中立者变为资源提供者,可以看到它们的带宽上限也分别作出了调整。每个切片都在不断切换,以保证始终较高的总体带宽利用率。
(a) 宽带利用率
实验证明,本文的动态带宽分配方案保障了每个业务片的最小可用带宽,且可以根据实际情况动态调整最大带宽限制。与单独的OVX平台相比,本文的动态带宽分配将网络的总体利用率提高了25.7%,仅在控制器处理新消息的延迟方面做了很小的牺牲(增加了约8 ms的延时)。可见对OVX的操作增加了控制器和数据平面之间的通信开销,尽管动态带宽分配模块需要利用OVX做为最终策略的执行者,OVX增加的开销对也会其性能造成直接影响,但是共享链路上可用带宽的动态分配使得在使用虚拟化切片的基础上进一步提高了底层资源的利用率。
在多租户虚拟网络环境中,用户对于网络服务的多样性以及性能的稳定性需求越来越高,而现有方法都存在很大缺陷。本文将租户应用的QoS保障与虚拟网络中的流量调度作为一个多目标联合优化问题进行了研究,提出了QVR流量调度算法,改进了这一问题。通过将网络虚拟化和流量调度结合起来,QVR能够针对用户时变的QoS需求、网络拓扑和流量统计数据提供一种自适应的解决方案,为能满足各租户的业务流量计算应用QOS需求的最佳路径。然后讨论了如何在共享的链路上动态调整租户切片带宽容量上限的问题,为带宽资源供给不足的租户激活空余链路资源,达到提供底层物理链路带宽利用率的目的。
性能评估结果证实了QVR算法和动态带宽分配算法能够保障在多租户场景下,提供链路的利用率,并且降低了通信延时,减少了拥塞的发生。