Reliable Deployment Algorithm of Service Function Chain Based on Deep Reinforcement Learning
-
摘要:
针对当前关于服务功能链(SFC)的部署问题都未考虑到虚拟网络功能(VNF)的失效重要度,该文提出了基于深度强化学习的SFC可靠部署算法。首先建立VNF和虚拟链路可靠映射模型,为重要的VNF设置高可靠性需求,并通过链路部署长度限制尽可能保证虚拟链路可靠性需求。其次,以负载均衡为资源协调原则,与VNF可靠性联合优化,最终使用深度强化学习得到服务功能链部署策略。另外,提出了基于重要度的节点备份和链路备份策略,用于应对部署过程中VNF/链路可靠性难以满足的情况。仿真结果表明,该文的可靠部署算法在保证可靠性需求的基础上能够有效减少SFC失效损失,同时使虚拟网络更加稳定可靠。
Abstract:In view of the current deployment of the Service Function Chain (SFC), the failure importance of the Virtual Network Function (VNF) is not considered,an SFC reliable deployment algorithm based on deep reinforcement learning is proposed. Firstly, a reliable mapping model of VNF and virtual links is establised, high reliability requirements is set for important VNFs, and the reliability requirements of virtual links is ensured as much as possible through link deployment length restrictions. Secondly, taking load balancing as the resource coordination principle, joint optimization the VNF reliability is jointly optimized. Finally, the deep reinforcement learning is used to get the service function chain deployment strategy. In addition, node backup and link backup strategies based on importance are proposed to deal with situations where VNF/link reliability is difficult to meet during deployment. Simulation results show that the reliable deployment algorithm in this paper can effectively reduce the failure SFC loss on the basis of ensuring the reliability requirements, and at the same time make the virtual network more stable and reliable.
-
1. 引言
传统通信网通过每个专用设备提供相应的服务功能,这种紧密耦合通常意味着即使对网络功能进行微小的操作也可能需要替换相应的专用设备,不够灵活高效。第5代移动通信技术将网络虚拟化作为解决当前网络结构僵化问题的重要技术之一。然而虚拟化环境中资源的切片化利用也导致了故障增多。因此虚拟网络的可靠性成为研究热点之一。
目前为止,大多文献都着重于提高整体可靠性。文献[1-3]通过备份的方式保证可靠性。文献[4]将可靠性与大型灾难产生与否相关联,并最小化资源使用量和失败风险。文献[5]降低服务功能链部署的可靠性来降低资本支出。部分文献研究基于虚拟网络功能(Virtual Network Function, VNF)的映射。文献[6]基于可靠性-成本比部署每个VNF。文献[7]考虑了节点可靠性和资源的负载平衡。
综上,可以发现当前研究的可靠性都是基于一定规律的概率失效,并不能准确反映可靠性值。同时现有可靠部署都未考虑到VNF的差异,服务功能链(Service Function Chain, SFC)中不同VNF失效造成的损失并不相同,需要给予高损失VNF以高可靠性保障。因此本文提出了基于设备使用度和周边可靠系数的可靠性度量指标,并建立了虚拟链路和VNF可靠映射模型。该模型根据VNF的功能特性和拓扑特性确定重要程度,进而设置相应的可靠性需求。同时基于虚拟链路可靠性需求得到可映射链路长度限制,使部署结果满足虚拟链路可靠性需求的同时减少备份资源消耗。最终将负载均衡与VNF可靠性联合优化。并采用深度强化学习得到部署方案。同时为应对部署过程中可能存在的VNF链路可靠性不足的情况,提出了基于VNF重要度的节点备份算法和链路重要度的链路备份算法。备份方案能够针对不同的实际情况得出最优备份结果。
2. 系统模型
本文中网络虚拟化环境下提供端到端服务的基本模型如图1所示,端到端的服务功能链起始于终端设备、通过接入网、核心网,在其上有序地部署VNF,以实现相应的业务需求。如图1中的切片1的SFC1和切片2的SFC2。服务功能链组成的虚拟子网由服务提供商(Service Provider, SP)负责构建和管理,并借助全局服务编排器(Global Service Orchestrator, GS-O)实现全局管理。基础设施提供商(Infrastructure Provider, InP)负责基础物理设施的搭建和运维,按照SP的资源申请通过标准化接口提供可靠的资源。
3. 网络模型
3.1 基层网络结构
本文基层网络用无向图
${{{G}}_s} = ({{{N}},{{L}}})$ 表示,${{N}} = \{ {n_1}{{,}}{n_2}{{,}}··· {n_i} ··· {n_M}\} $ 中包含$M$ 个为物理节点,${{C}}_{{{{n}}_{{i}}}}^{}$ ,${{{c}}_{{{{n}}_{{i}}}}}$ 表示节点${{{n}}_{{i}}}$ 的计算能力和剩余资源容量。${{L}} = \{ {{l}}_{{{i,j}}}^{}{{|}}{{{n}}_{{i}}}{{,}}{{{n}}_{{j}}} \in {{N}}\} $ 中${{{B}}_{{{i,j}}}}$ ,${{{b}}_{{{i,j}}}}$ 链表示链路${l_{i,j}}$ 的带宽和可用带宽容量。${{{p}}_{{{i,j}}}}$ 为节点${{{n}}_{{i}}}$ 到${{{n}}_j}$ 之间的路径集。${\rm{hop}}({{i,j}})$ 为${{{p}}_{{{i,j}}}}$ 之间的跳数。3.2 虚拟网络结构及请求
服务功能链由
${\rm{G}}_v^k = ({{N}}_v^k,{{L}}_v^k)$ 表示。${{G}}_{{v}}^{{k}}$ 的虚拟请求需求包括$\{ {{{s}}_{{k}}}{{,}}{{{d}}_{{k}}}{{,}}{{{b}}^{{k}}}{{,}}{{{C}}^{{k}}}{{,R}}_{{k}}^{{\rm{req}}}\} $ 。${{{s}}_{{k}}}$ 是${{G}}_{{v}}^{{k}}$ 数据流入口,${{{d}}_{{k}}}$ 是数据流送达的位置,${{N}}_{{v}}^{{k}} = \left\{ {{v}}_{{1}}^{{k}}{{,v}}_{{2}}^{{k}} ,···, {{v}}_{{I}}^{{k}}, ··· , {{v}}_{{D}}^{{k}} \right\}$ 为D个处理数据的VNF功能序列组,$R_k^{{\rm{req}}}$ 为可靠性需求。${{{b}}^{{k}}}$ 为${{G}}_{{v}}^{{k}}$ 所需带宽,${{c}}_{{{{n}}_{{I}}}}^{{k}} \in {{{C}}^{{k}}}$ 为${{v}}_{{I}}^{{k}}$ 计算资源需求。${{g}}({{v}}_{{I}}^{{k}})$ 和${{h}}({{l}}_{{{I,J}}}^{{k}})$ 表示${{v}}_{{I}}^{{k}}$ 和${{l}}_{{{I,J}}}^{{k}}$ 的映射结果,${{{P}}_{{{I,J}}}}$ 表示${{v}}_{{I}}^{{k}}$ 和${{v}}_J^{{k}}$ 间部署的物理链路集合。3.3 可靠性模型
基于文献[8]的可靠性表达,得到本文相对精确的可靠性度量方式。
定义1 设备使用度。由Weibull分布来评估设备的使用度。其累积分布函数
${{F}}(\varpi )$ 为$$ F(\varpi ) = \int\limits_0^\varpi {f(x){\rm d}x = } 1 - {{\exp}}( - {(\varpi /\eta )^m}),\varpi \ge 0$$ (1) $F(\varpi )$ 表示随着时间$\varpi $ 设备损耗导致失效的概率。其中$\eta $ 和m可根据服务器日志、配置数据,统计分析得出[9]。$F(\varpi )$ 越大,失效概率越大。故从使用度的角度物理节点可靠度为$$ {\rm{UR}}({n_i}) = 1 - F(\varpi ) = {{\exp}}( - {(\varpi /\eta )^m}),\varpi \ge 0 $$ (2) 同理,链路使用度
${\rm{UL}}({l_{i,j}})$ 使用相同的表达方式。定义2 周边可靠系数。通常某些设备所处环境比较恶劣或受到攻击等,发生故障次数会偏多,同时如果最近一次故障在附近刚刚发生,则一定程度上说明节点目前所处的环境可能存在较大安全隐患。因此物理节点周边可靠系数定义为
$${\rm{ER}}({n_i}) = {{\exp}}( - q/{\rm{pos}}[{n_i}])$$ (3) 其中,
$q$ 为${n_i}$ 在一段时间内发生故障的次数,${\rm{pos}}[{n_i}]$ 表示${n_i}$ 到上次的故障节点的距离跳数。同理,物理链路可靠系数${\rm{ER}}({l_{i,j}})$ 表达方式相同,其中${\rm{pos[}}{l_{i,j}}{{]}}$ 为上一次故障链路离本次${l_{i,j}}$ 链路故障中间隔的物理节点数。定义3 可靠性。综合考虑定义1, 2,物理节点和物理链路的可靠性为
$$ \begin{split} {\rm{RN}}({n_i}) \, &= {\rm{UR}}({n_i}) \cdot {\rm{ER}}({n_i}) \\ & = \exp ( - {(\varpi /\eta )^m} - q/{\rm{pos}}[{n_i}]),\varpi \ge 0 \end{split} $$ (4) $$ \begin{split} {\rm{RL}}({l_{i,j}}) \,&= {\rm{UR}}({l_{i,j}}) \cdot {\rm{ER}}({l_{i,j}}) \\ & = \exp( - {(\varpi /\eta )^m} - q/{\rm{pos[}}{l_{i,j}}{\rm{]}}),\varpi \ge 0 \end{split} $$ (5) 端到端映射的SFC的可靠性为所有VNF和虚拟链路可靠性的乘积。
3.4 虚拟网络功能和虚拟链路可靠映射模型
本文的可靠映射将SFC可靠性需求
$R_k^{{\rm{req}}}$ 细化为多个组件的可靠性需求。首先虚拟节点可靠性需求$R_N^k$ 和虚拟链路可靠性需求$R_L^k$ 的值都定义为$R_N^k = R_L^k = {\left( {R_k^{{\rm{req}}}} \right)^{1/2}}$ 。然后将虚拟节点可靠性需求进一步细化为VNF可靠性需求,虚拟链路可靠性则通过可部署长度限制来保障。3.4.1 虚拟网络功能可靠性需求确定模型
由于SFC中的每个VNF具有不同的拓扑特性和功能特性,失效造成的影响、恢复难度,恢复时间各不相同。需要通过特定特性确定每个VNF在失效中的重要程度,进而得到相应的可靠性需求。因此本文确定了一些参考特征[10],这些特征量纲不同,需要进行归一化处理:
(1) VNF共享度:功能复用使单个VNF会被多个SFC共用。多个SFC之间共享的VNF故障将影响所有相关业务。本文将共用同一VNF的SFC数目定义为VNF共享度ψ。为避免共用过多导致共因故障概率过大,因此设最大共享度只能为4。因而归一化结果
${z}_I^1 = \psi /4$ 。(2) 恢复成本:每个VNF都要消耗相应的资源,而资源需求越高恢复的可能性越小。因而需要给予高资源需求的VNF以更多的可靠性。归一化结果
$z_I^2 = c_{{v_I}}^k/\mathop {\max }\limits_{v_I^k} {{ }}c_{{v_I}}^k,v_I^k \in {{{v}}_k}$ 。(3) VNF功能重要度:对于InP而言,VNF功能本身都有各自的重要程度。比如核心网涉及全局控制,数据处理,相比接入网更重要。可根据人为经验为每个VNF确定重要度。赋予相对重要的功能更高的可靠性。设重要度评分为
${\chi _I}$ ,记录在评分表中。归一化结果$z_I^3 = {\chi _I} - \min\limits_I {{ }}{\chi _I}/\max\limits_I {{ }}{\chi _I} - \min\limits_I {{ }}{\chi _I}$ ;(4) VNF状态:VNF状态分为相关状态和非相关状态,其中非相关状态会随着数据流的到达和处理而被修改,需要更长的恢复时间和更多的恢复成本。所以非相关状态的VNF则需要更高的可靠性。本文设VNF状态中包括非相关状态
$z_I^4$ 为1,无非相关状态为0.5。根据每个最终属性值,
$v_I^k$ 的属性值之和表示在SFC中的重要程度,得到可靠性系数${w_I}$ $$ {w_I} = \sum\limits_{e = 1}^4 {z_I^e} /\sum\limits_{I = 1}^{{D}} {\sum\limits_{e = 1}^4 {z_I^e} } $$ (6) 此时已可得到
$v_I^k$ 的可靠性需求${(R_N^k)^{{w_I}}}$ 。在部署时寻找满足VNF需求的物理节点即可。3.4.2 基于功能复用的链路可靠映射模型
由于本文考虑了功能复用,为联合优化功能部署和带宽需求,需要在功能复用和路径长度之间找到一个最优的平衡点。因此部署问题分为两步:(1)设置传输跳数最大值
${u'_k}$ ; (2)在${u'_k}$ 范围内找到复用度最高的路径。对于(1),可通过链路可靠性需求确定。由于映射结果路径越长,链路可靠性越低,可通过控制链路长度${u_k}$ 来尽量满足链路的可靠性需求。因而可得$${u_k} = {[{\rm{lo}}{{\rm{g}}_{{r_l}{R_L^k}}}]^ + }$$ (7) 其中
${[]^ + }$ 表示向上取整,${r_l}$ 为基层链路的平均可靠性$$ {r_l} = \sum\limits_{{l_{i,j}} \in {{L}}} {{\rm{RL}}({l_{i,j}})} /\left| {{L}} \right| $$ (8) $|{{L}}|$ 表示基层链路的条数。然而该长度未考虑到基层拓扑特征,资源充足时也不一定能够部署所有的VNF。可考虑适当延长,部署结果链路可靠性不足则通过备份满足。由此得到$${\rm{SF}} = \max \left( {\sum\limits_{{l_{i,j}} \in {{L}}} {{b_{i,j}}} {\rm{/2}}{b^k}{u_k},1} \right)$$ (9) SF称为扩展因子,具体扩展长度由实际剩余资源量确定。扩展后能大大增加节点部署成功的可能性。扩展后的距离
${\rm{SF}} \times {u_k}$ 即为${u'_k}$ 。最终部署时应使链路长度小于${u'_k}$ 。在确定最大传输距离${u'_k}$ 后,通过第4节深度强化学习的方法在范围内找到复用度最高的有效路径。3.5 优化目标
本文基于组件可靠性对于服务功能链进行优化部署,保证每个VNF的可靠性需求。即部署结果要满足
${\rm{RN}}(g(v_I^k)) > {(R_k^{{\rm{req}}})^{{w_I}}}$ 。若对可靠性执行贪婪映射,高可靠性节点资源将立即被占用。使后续VNF高可靠性请求不能被接受。为避免该情况产生,应该优化VNF部署可靠性和可靠性需求的差值,即${\rm{ob}}{{\rm{j}}^1}{{ = }}\displaystyle\sum\limits_{v_I^k \in {{N}}_v^k}^{} {x_{{n_i}}^{v_I^k}{\rm{ga}}{{\rm{p}}_{v_I^k}}}$ ,其中${\rm{RN}}(g(v_I^k)) - {(R_k^{{\rm{req}}})^{{w_I}}} = {\rm{ga}}{{\rm{p}}_{v_I^k}}$ 。另外,如果在映射过程中只考虑可靠性,忽略节点(链路)的资源调节,这可能会导致网络负载不平衡。负载不均会造成资源的浪费、网络的拥塞和不稳定。资源的优化方式为$$ \begin{split} {\rm{ob}}{{\rm{j}}^2} =\,& \sum\limits_{{l_{i,j}} \in {{L}}} \sum\limits_{l_{I,J}^k \in {{L}}_v^k} (y_{ij}^{kIJ} + y_{ji}^{kIJ}){\rm{hop}}(i,j)b_v^k/{b_{i,j}} \\ & + \sum\limits_{{n_i} \in {{N}}} {\sum\limits_{v_I^k \in {{N}}_v^k} {x_{{n_i}}^{v_I^k}c_{{n_v}}^k/{{\rm{c}}_{{n_i}}}} } \\[-21pt] \end{split} $$ (10) 同时对可靠性和负载均衡联合优化,优化目标整理为
$$ \min\limits_{x_{{n_i}}^{v_I^k},y_{ij}^{kIJ}} {{ }}\phi {\rm{ob}}{{\rm{j}}^1} + (1 - \phi ){\rm{ob}}{{\rm{j}}^2} $$ (11) $$ \left. \begin{aligned} & {\rm{s}}{\rm{.t}}. \ {\rm{C1:}}\prod\limits_{V_I^k \in N_v^k} {{\rm{RN}}(g(v_I^k)) \ge R_N^k} ,\\ & \qquad\quad \prod\limits_{l_{I,J}^k \in L_v^k} {{\rm{RL}}(h(l_{I,J}^k)) \ge R_L^k} \\ & \quad\ \ {\rm{ C2:}}{P_{s,d}} < {{u'}_k}\\ & \quad\ \ {\rm{ C3:}}\sum\limits_{k = 1}^m {c_{{n_I}}^k} \le {C_{{n_s}}},\sum\limits_{k = 1}^n {b_{I,J}^k} \le {B_{i,j}},\forall f(v_v^k) = {n_s},\\ &\qquad\quad \forall g(l_{I,J}^k) = {l_{i,j}}\\ & \quad\ \ {\rm{ C4:}}\sum\limits_{{{\rm{w}}_s}{\rm{ = }}1}^m {y_{{w_s}j}^{kIJ}} \le 1,\sum\limits_{{{\rm{w}}_d}{\rm{ = 1}}}^m {y_{{w_d}q}^{kIJ}} \le 1,\forall G_v^k \in {G_v},\\ & \qquad\quad\forall l_{I,J}^k \in L_v^k\\ & \quad\ \ {\rm{ C5:}}x_{{n_i}}^{v_I^k}{\rm{ = \{ 0,1\} ,}}\forall {{\rm{n}}_i} \in {{N}},\forall v_I^k \in {{N}}_v^k\\ & \quad\ \ {\rm{ C6:}}y_{ij}^{kIJ} = \{ 0,1\} ,\forall {l_{i,j}} \in {{L}},\forall l_{I,J}^k \in {{L}}_v^k \end{aligned} \right\} $$ (12) 其中
$\phi $ 表示优化目标的权重系数且$0 < \phi < 1$ 。现对式(12)的限制条件进行说明,C1:SFC的节点映射和链路映射的满足需相应的可靠性需求;C2:实际部署长度应小于链路长度限制;C3:节点和链路的资源需求不能超过底层节点和链路的资源限制;C4:确保链路映射不分流,否则映射后的链路可靠性难以确定;C5, C6:为节点映射和链路映射的二进制变量。4. 算法描述与分析
4.1 基于深度强化学习的服务功能链可靠映射算法
深度强化学习(如图2所示)把深度学习的强感知能力应用到强化学习的决策过程中,通过最大化累计奖励的方式寻找最佳策略[11]。本文SDN/NFV架构使用GS-O实现业务信息的收集、分析和可靠映射策略的执行[12]。另外由于VNF共享度未知,需要通过不断与虚拟层环境和基层环境联合交互,探寻环境以寻找适合的VNF可靠性需求,同时得到最佳的部署方案。
探寻所需状态空间为
${{{s}}_t} = \{ {{{B}}_{{\rm{left}}}}{{,}}{{{C}}_{{\rm{left}}}}{{,}}{{{b}}_{{\rm{map}}}}{{,}}{{{c}}_{{\rm{map}}}}\} $ ;${{{B}}_{{\rm{left}}}}$ 和${{{C}}_{{\rm{left}}}}$ 分别表示剩余的节点资源集合和链路资源集合,代表基层状态。${{{b}}_{{\rm{map}}}}{{,}}{{{c}}_{{\rm{map}}}}$ 为SFC中已映射部分的状态集合,表示相应的虚拟网络状态。节点状态包括节点已部署结果及共享度大小,链路状态为已部署链路。动作空间为${{{a}}_t} = \{ {a_n},{a_l},{a_o}\} $ ,${a_n}$ 为节点映射动作,${a_l}$ 为链路映射动作,${a_o}$ 为资源分配动作。在部署时如果发所选择物理节点已承载该VNF,直接复用该VNF,重新计算各个${w_I}$ ,反之消耗计算资源实例化VNF。由于对非有效动作状态对的学习并不重要,对于动作空间可基于文献[13]的思想对动作空间进行筛选。包括路径长度限制、资源限制、可靠性限制。得集合$$ \begin{split} {{{{N'}}}_{k{n_i}}} =\,& \{ {n_i}|{\rm{hop}}({s_k},{n_{i - 1}}) + {\rm{hop}}({n_{i - 1}},{n_i}) \\ & + {\rm{hop}}({n_i},{d_k}) \le {{u'}_k},{R_{{n_i}}} \ge {(R_N^k)^{{\omega _I}}},\\ &c_{{n_I}}^k < {c_i}\} \cdot {p_{{s_k},{n_{i - 1}}}} \in {p_{{s_k},v_{I - 1}^k}}{{,}}{p_{{n_{i - 1}},{n_i}}} \\ =\,& {\ell _{{n_{i - 1}},{n_i}}},{p_{{n_i},{d_k}}} = {\ell _{{n_i},{d_k}}},{n_i} \in h(v_I^k) \end{split} $$ (13) ${\ell _{i,j}}$ 代表节点${n_i}$ 和${n_j}$ 间满足资源需求的最短路径。当映射节点确定后,可确定部署链路集${{{L'}}_{k{l_{i,j}}}}$ ,从中选择${\rm{hop}}(i,j)b_{I,J}^k/{b_{i,j}}$ 最小的链路。使动作更利于实现优化目标。最终在${{{N'}}_{k{n_i}}}$ 中选择部署节点和链路。部署奖励基于优化目标,表示为$$ \begin{split} {r_t} =\,& \left( - \phi {\rm{ga}}{{\rm{p}}_{v_I^k}} - (1 - \phi )[{\rm{hop}}(i,j)b_{I,J}^k{\rm{/}}{b_{i,j}} \right.\\ & + c_{{n_v}}^k{\rm{/}}{{\rm{c}}_{{n_i}}}]|s = {{{s}}_t},a = {{{a}}_t} \Bigr) \end{split} $$ (14) 若无有效动作可选择,此时奖励为负奖励值-100。RL将得到预期累积未来奖励
$Q({s_t},{a_t})$ $$ Q({s_t},{a_t}) = {\rm{E}}\left[\sum\limits_{t{{ = 1}}}^{\rm{D}} {{\alpha ^t}G(r|s = {{{s}}_t},a = {{{a}}_t})} \right] $$ (15) 其表示该动作对未来的潜在价值,
$\alpha \in [0,1]$ 为折扣因子,该值越大越侧重于经验对最终结果的影响。通过最大化预期累积奖励并得到相应的策略${\pi ^*}(s)$ ,即为SFC的部署方案$${\pi ^*}(s) = {{\arg }}\max\limits_{a'} Q({{{s}}_t},{{{a'}}_t})$$ (16) 本文使用CNN来拟合Q估值函数得到Q值。通过环境探寻得到向量
$[{{{s}}_t},{{{a}}_t},{r_t},{{{s}}_{t + 1}}]$ 。存入经验回放池中,并随机抽取一组向量训练使神经网络能够得出正确的Q值。由于初始的神经网络并不能得到正确的Q估计值。可使用即时动作得到的即时奖励和体现长期奖励下一状态Q值来调整参数。为避免预估值失控,通过两个相同的神经网络分开估计,估计当前Q值的网络称为主神经网络。估计下一状态的为目标神经网络。将两种奖励值联合为目标Q值$$ \begin{split} \tilde Q({{{s}}_t},{{{a}}_t}|{\theta ^ - }) =\,& G({r_t}|s = {{{s}}_t},a = {{{a}}_t}) \\ & + \alpha {{{\max}}_{{{a'}_{t + 1}}}}Q({{{s}}_{t{{ + }}1}}{{,}}{{{a'}}_{t + 1}}{{|}}{\theta ^ - }) \end{split} $$ (17) 期望奖励值和预估值的差即为损失函数
$${\rm{Loss}} = {(\tilde Q({{{s}}_t},{{{a}}_t}|{\theta ^ - }) - Q({{{s}}_t},{{{a}}_t}|\theta ))^2}$$ (18) 基于损失函数对参数
$\theta $ 求导得梯度$\nabla L(\theta )$ ,并通过随机梯度下降更新参数$$\theta \leftarrow \theta - {\lambda _{{\rm{SGD}}}}\nabla L(\theta )$$ (19) 其中
${\lambda _{{\rm{SGD}}}}$ 是学习率,将参数减去梯度误差得到此次更新后的参数。每训练T次将主网络参数$\theta $ 复制给目标网络。持续训练使神经网络充分学习到相应知识从而收敛,根据Q估计值结果得到服务功能链部署方案。整个基于深度强化学习的服务功能链可靠部署算法(Deep Reinforcement Learning-based Reliable Deployment Algorithm, DQN-RDA)如表1所示。表 1 基于深度强化学习的服务功能链可靠部署算法算法1 基于深度强化学习的服务功能链可靠部署算法 经验回放池初始化为空,随机初始化主网络的参数,并复制给目标网络,探寻环境信息基于式(6)~式(9)得到${w_I}$,${u'_k}$ for episode=1, 2, ···, E do 初始化状态为${{{s}}_1} = \{ {{{B}}_{{\rm{left}}}}{{,}}{{{C}}_{{\rm{left}}}}{{,}}{{{b}}_{{\rm{map}}}}{{,}}{{{c}}_{{\rm{map}}}}\} $, ${{{b}}_{{\rm{map}}}}{{,}}{{{c}}_{{\rm{map}}}}$为空 for t=1,2…D do 确定可选动作集${N'_{k{n_i}}}$, ${N''_{k{n_i}}}$随机产生0到1的数$\tau $ if $\tau < \varepsilon $:先从${ {{N'} }_{k{n_i} } }$中选择动作${a_t}$,若为空则根据算法2在${ {{N''} }_{k{n_i} } }$中选择${a_t}$,都无动作选择则${a_t}$为空 else:依据主神经网络估值${\pi ^*}(s) = {{\arg }}\max\limits_{a'} Q({{{s}}_t},{{{a'}}_t})$选取动作。end if 执行动作${{{a}}_t}$,获得奖励${r_t}$、下一状态${{{s}}_{t + 1}}$,将向量$[{{{s}}_t},{{{a}}_t},{r_t},{{{s}}_{t + 1}}]$放入经验回放池。 随机取出小批量样本向量$[{{{s}}_t},{{{a}}_t},{r_t},{{{s}}_{t + 1}}]$组成样本向量集${\upsilon _t}$ for $[{{{s}}_t},{{{a}}_t},{r_t},{{{s}}_{t + 1}}]$ in ${\upsilon _t}$ do $L{{(}}\theta {{)}} = {(\tilde Q({{{s}}_t},{{{a}}_t}|{\theta ^ - }) - Q({{{s}}_t},{{{a}}_t}|\theta ))^2}$,$\theta \leftarrow \theta - {\lambda _{{\rm{SGD}}}}\nabla L(\theta )$ end for 在θ更新T次后将主网络参数复制给目标网络。end for end for 通过主网络得到每个VNF的策略${\pi ^*}(s)$ if累计奖励$Q({s_t},{a_t}) < - 100$:拒绝该请求 else if 部署结果不满足链路可靠性需求:执行算法3 end if 上述部署方案能够得到最优的部署结果,然而在VNF部署时可能存在可映射范围内没有满足VNF可靠性需求的物理节点的情况。另外链路可靠映射模型适当提高了链路可映射长度,需通过链路备份满足可靠性,因而为提高映射成功率,都需要相应的备份方案。
4.2 基于虚拟网络功能重要度的节点备份算法
当VNF可靠性需求较高,
${N'_{k{n_i}}}$ 为空时。可基于备份的思想。同时选择两个部署节点,其中一个为备份节点。此时的节点集为$$ \begin{split} {{{{N''}}}_{k{n_i}}} =\, & \{ {n_i}|{\rm{hop}}({s_k},{n_{i - 1}}) + {\rm{hop}}({n_{i - 1}},{n_i}) \\ & + {\rm{hop}}({n_i},{d_k}) \le {{u'}_k},c_{{n_I}}^k < {c_i}\} \\ {p_{{s_k},{n_{i - 1}}}} \in &{p_{{s_k},v_{I - 1}^k}}{{,}}{p_{{n_{i - 1}},{n_i}}} = {\ell _{{n_{i - 1}},{n_i}}},{p_{{n_i},{d_k}}} \\ =\, & {\ell _{{n_i},{d_k}}},{n_i} \in h(v_I^k) \end{split} $$ (20) 为有效提高可靠性,同时提高备份的资源利用率,本文针对VNF的重要度设定备份方式,如表2所示。通过归一化重要度,对于高于SFC平均重要度的进行专用备份,其中可靠性较大的物理节点用于部署,较小的用于备份。反之进行共享备份,在保证重要VNF不失效的情况下进一步减少资源的消耗。此时在
${N''_{k{n_i}}}$ 中选择部署节点,备份节点作为此次节点映射动作。表 2 基于虚拟网络功能重要度节点备份算法算法2:基于虚拟网络功能重要度的节点备份算法 初始化节点部署方案$g'(v_I^k)$为空 repeat: if ${\omega _I} < 1/D$:搜寻${N''_{k{n_i}}}$已作为备份节点的节点集$V_{I'}^k$ if $V_{I'}^k$非空:$g'(v_I^k)$←从$V_{I'}^k$中寻找备份节点,从${{{N''}}_{k{n_i}}}/V_{I'}^k$中寻
找部署节点else:$g'(v_I^k)$←从${N''_{k{n_i}}}$中选出2个节点。可靠性最高的为部署节
点,另一备份。endifelse:$g'(v_I^k)$←从${N''_{k{n_i}}}$中选出2个节点。可靠性最高的为部署节
点,另一备份。endifuntil $RN(g'(v_I^k)) > {(R_k^{{\rm{req}}})^{{w_I}}}$or 已遍历所有组合 return 节点部署方案$g'(v_I^k)$ 4.3 基于链路备份重要度的链路备份算法
由于部署结果可能不满足虚拟链路可靠性,此时需要链路备份。为选择合适的待备份路径,以最少链路资源损耗消耗获得足够的可靠性增量为目标,提出单位资源可靠性提升率
$$ \sigma _{I,J}^k = \varDelta {\rm{/BW}} $$ (21) $$ \begin{split} \qquad \varDelta =\,& \prod\limits_{l_{{{i,j}}}^{}{\rm{ = g}}(l_{I,J}^k),l_{I,J}^k \in L_v^k} {{\rm{RL}}({l_{i,j}})}\\ & \cdot \left(1 - \prod\limits_{l_{i,j}^*{\rm{ = g}}(l_{I,J}^{*k}),l_{I,J}^{*k} \in L_v^k} {{\rm{RL}}(l_{i,j}^*)} \right) \end{split} $$ (22) BW为链路备份
${l_{i,j}}$ 的资源消耗。$l_{i,j}^*$ 为已部署链路。为提高低可靠虚拟链路可靠性,则$$ \gamma _{I,J}^k = {{\sigma _{I,J}^k} \Bigr/ {\prod\limits_{l_{{{i,j}}}^{} \in {\rm{g(}}l_{I,J}^k)} {{\rm{RL}}({l_{i,j}})} }} $$ (23) $\gamma _{I,J}^k$ 有效评估了链路$l_{I,J}^k$ 在备份过程中的重要度。以实现消耗较少的链路资源有较大可靠性提升。因而如表3所示,对$l_{I,J}^k$ 按$\gamma _{I,J}^k$ 排序,从大到小迭代备份直到满足可靠性需求。表 3 基于链路备份重要度的链路备份算法算法3:基于链路备份重要度的链路备份算法 基于$\gamma _{I,J}^k$对虚拟链路链路$l_{I,J}^k \in L_v^k$排序 for 排过序的链路链路$l_{I,J}^k \in L_v^k$ if 链路可靠性不满足: 确定$l_{I,J}^k$映射的段物理起始节点${n_i}$和终止节点${n_j}$:${p_{I,J}}$ $p{{ = \{ }}{\ell _{i,j}}|{L'_{k{l_{i,j}}}}/{p_{I,J}}\} $,部署方案增加链路P else: break end for return 部署方案 5. 仿真实验与性能分析
仿真场景设计如下:底层网络包含50个物理节点和若干条链路。底层网络的节点CPU和链路带宽资源均为[40, 90]随机分布。每个SFC的虚拟节点个数在[4, 7]均匀分布。虚拟节点的CPU和虚拟链路的带宽需求均为1~15 均匀分布。VNF设有10种类型功能,各类VNF的功能重要度在1~5的范围内随机生成。此外,虚拟网络请求基于时间的平均到达率为10。虚拟网络的平均生存时间为[200 250 300]个时间单位随机选择。虚拟节点设置3组η和m值,
$[2 \times {10^6},1]$ $[6 \times {10^5},1]$ $[6 \times {10^2},2]$ 对应服务器的3种新旧程度。且3个等级所占比例分别为70%, 25%, 5%。链路设置2组值$[2 \times {10^6},1]$ 和$[6 \times {10^5},1]$ 。本文采用蒙特卡洛方法,取20组仿真测试的平均值作为测试结果。仿真过程中,本文的DQN-RDA将与文献[14]的基于模式感知的可靠部署算法(Pattern-Aware Reliable Deployment algorithm, PARD),和文献[6]的基于CCI的可靠部署算法(Cost-aware Criticality-based priority Index Redundancy Allocation algorithm, CCI-RA)对比。图3为3种方法的请求接收率。仿真执行5000个时间单位里大约产生500个虚拟网络请求。DQN-RDA算法充分考虑到基层环境资源分布,基于资源负载均衡和减少可靠性浪费为原则部署。相比CCI-RA和PARD考虑的更全面,故请求接受率高。能维持90%左右。
图4表示不同可靠性需求下各个方案的备份效果。使用同一VNF个数为7的SFC来验证。DQN-RDA所消耗的备份节点最少,首先在部署过程中考虑尽可能直接部署满足可靠性需求,其次是共享备份减少了资源消耗。图5使用同一组SFC部署在基层网络,使基层设备基于可靠性概率失效,验证基层某一物理节点失效造成的失效影响,VNF失效则采用文献[15]的方法尝试恢复,失效损失本文通过暂时失效损失和未恢复损失表示。即
${\rm{damage = }} \displaystyle\sum\nolimits_{\vartheta = 1}^{{X_{\rm error1}}} {6 \times {R_\vartheta }} + \displaystyle\sum\nolimits_{\vartheta = 1}^{{X_{\rm error2}}} {12 \times {R_\vartheta }}$ ,${X_{\rm error1}}$ 和${X_{\rm error2}}$ 分别为暂时失效的SFC条数不能恢复的SFC条数。图中黑色柱对应左边Y轴,白色柱对应右Y轴。DQN-RDA算法的故障失效率和失效损失明显小于其它算法,由于其保证了每个VNF的需求,避免了VNF可靠性过低故障。同时也保证了重要的和难以重映射恢复的VNF的高可靠性,增大了恢复概率。图6验证了深度强化学习中学习效率对收敛效果的影响,可见随着学习率的减少,收敛速率降低,但收敛后振动幅度更小更稳定。因为学习率越大,Q值更新幅度越大,参数更新越快,但较大的变化幅度使其难以收敛到比较稳定的值。因而需根据实际需求设定学习率。
6. 结论
本文基于网络虚拟化架构,针对整体可靠性满足的情况下仍可能有较大失效概率和失效损失的问题,通过满足VNF可靠性来满足SFC的可靠性的方法,提出了基于深度强化学习的可靠部署算法。该方案基于失效损失确定每个VNF的可靠性需求,以避免VNF可靠性浪费和负载均衡为目标,采用深度强化学习的方法得到部署方案。进一步地,采用节点(链路)备份方案保证可靠性的同时也提高了服务请求的接受率。仿真结果表明,这种部署方案在最大化请求接收率的同时能够有效减少基层网络失效导致的虚拟网络服务的失效损失。
-
表 1 基于深度强化学习的服务功能链可靠部署算法
算法1 基于深度强化学习的服务功能链可靠部署算法 经验回放池初始化为空,随机初始化主网络的参数,并复制给目标网络,探寻环境信息基于式(6)~式(9)得到${w_I}$,${u'_k}$ for episode=1, 2, ···, E do 初始化状态为${{{s}}_1} = \{ {{{B}}_{{\rm{left}}}}{{,}}{{{C}}_{{\rm{left}}}}{{,}}{{{b}}_{{\rm{map}}}}{{,}}{{{c}}_{{\rm{map}}}}\} $, ${{{b}}_{{\rm{map}}}}{{,}}{{{c}}_{{\rm{map}}}}$为空 for t=1,2…D do 确定可选动作集${N'_{k{n_i}}}$, ${N''_{k{n_i}}}$随机产生0到1的数$\tau $ if $\tau < \varepsilon $:先从${ {{N'} }_{k{n_i} } }$中选择动作${a_t}$,若为空则根据算法2在${ {{N''} }_{k{n_i} } }$中选择${a_t}$,都无动作选择则${a_t}$为空 else:依据主神经网络估值${\pi ^*}(s) = {{\arg }}\max\limits_{a'} Q({{{s}}_t},{{{a'}}_t})$选取动作。end if 执行动作${{{a}}_t}$,获得奖励${r_t}$、下一状态${{{s}}_{t + 1}}$,将向量$[{{{s}}_t},{{{a}}_t},{r_t},{{{s}}_{t + 1}}]$放入经验回放池。 随机取出小批量样本向量$[{{{s}}_t},{{{a}}_t},{r_t},{{{s}}_{t + 1}}]$组成样本向量集${\upsilon _t}$ for $[{{{s}}_t},{{{a}}_t},{r_t},{{{s}}_{t + 1}}]$ in ${\upsilon _t}$ do $L{{(}}\theta {{)}} = {(\tilde Q({{{s}}_t},{{{a}}_t}|{\theta ^ - }) - Q({{{s}}_t},{{{a}}_t}|\theta ))^2}$,$\theta \leftarrow \theta - {\lambda _{{\rm{SGD}}}}\nabla L(\theta )$ end for 在θ更新T次后将主网络参数复制给目标网络。end for end for 通过主网络得到每个VNF的策略${\pi ^*}(s)$ if累计奖励$Q({s_t},{a_t}) < - 100$:拒绝该请求 else if 部署结果不满足链路可靠性需求:执行算法3 end if 表 2 基于虚拟网络功能重要度节点备份算法
算法2:基于虚拟网络功能重要度的节点备份算法 初始化节点部署方案$g'(v_I^k)$为空 repeat: if ${\omega _I} < 1/D$:搜寻${N''_{k{n_i}}}$已作为备份节点的节点集$V_{I'}^k$ if $V_{I'}^k$非空:$g'(v_I^k)$←从$V_{I'}^k$中寻找备份节点,从${{{N''}}_{k{n_i}}}/V_{I'}^k$中寻
找部署节点else:$g'(v_I^k)$←从${N''_{k{n_i}}}$中选出2个节点。可靠性最高的为部署节
点,另一备份。endifelse:$g'(v_I^k)$←从${N''_{k{n_i}}}$中选出2个节点。可靠性最高的为部署节
点,另一备份。endifuntil $RN(g'(v_I^k)) > {(R_k^{{\rm{req}}})^{{w_I}}}$or 已遍历所有组合 return 节点部署方案$g'(v_I^k)$ 表 3 基于链路备份重要度的链路备份算法
算法3:基于链路备份重要度的链路备份算法 基于$\gamma _{I,J}^k$对虚拟链路链路$l_{I,J}^k \in L_v^k$排序 for 排过序的链路链路$l_{I,J}^k \in L_v^k$ if 链路可靠性不满足: 确定$l_{I,J}^k$映射的段物理起始节点${n_i}$和终止节点${n_j}$:${p_{I,J}}$ $p{{ = \{ }}{\ell _{i,j}}|{L'_{k{l_{i,j}}}}/{p_{I,J}}\} $,部署方案增加链路P else: break end for return 部署方案 -
AYOUBI S, ZHANG Yanhong, and ASSI C. A reliable embedding framework for elastic virtualized services in the cloud[J]. IEEE Transactions on Network and Service Management, 2016, 13(3): 489–503. doi: 10.1109/TNSM.2016.2581484 汤红波, 邱航, 游伟, 等. 基于联合备份的服务功能链可靠性保障的部署方法[J]. 电子与信息学报, 2019, 41(12): 3006–3013. doi: 10.11999/JEIT190013TANG Hongbo, QIU Hang, YOU Wei, et al. A reliability-guarantee method for service function chain deployment based on joint backup[J]. Journal of Electronics &Information Technology, 2019, 41(12): 3006–3013. doi: 10.11999/JEIT190013 季新生, 赵硕, 艾健健, 等. 异构备份式的虚拟网映射方法研究[J]. 电子与信息学报, 2018, 40(5): 1087–1093. doi: 10.11999/JEIT170730JI Xinsheng, ZHAO Shuo, AI Jianjian, et al. Research on heterogeneous-backup virtual network embedding[J]. Journal of Electronics &Information Technology, 2018, 40(5): 1087–1093. doi: 10.11999/JEIT170730 POURVALI M, BAI Hao, CRICHIGNO J, et al. Multicast virtual network services embedding for improved disaster recovery support[J]. IEEE Communications Letters, 2018, 22(7): 1362–1365. doi: 10.1109/LCOMM.2018.2822739 SUN Jian, ZHU Guangyang, SUN Gang, et al. A reliability-aware approach for resource efficient virtual network function deployment[J]. IEEE Access, 2018, 6: 18238–18250. doi: 10.1109/ACCESS.2018.2815614 DINH N T and KIM Y. An efficient reliability guaranteed deployment scheme for service function chains[J]. IEEE Access, 2019, 7: 46491–46505. doi: 10.1109/ACCESS.2019.2908185 刘光远, 安秀芳, 苏森. 基于节点可靠性感知和共享路径保护的虚拟网映射算法研究[J]. 通信学报, 2016, 37(8): 51–57. doi: 10.11959/j.issn.1000-436x.2016155LIU Guangyuan, AN Xiufang, and SU Sen. Virtual network mapping algorithm with node reliability awareness and shared-path protection[J]. Journal on Communications, 2016, 37(8): 51–57. doi: 10.11959/j.issn.1000-436x.2016155 European Telecommunications Standards Institute. Network Functions Virtualisation (NFV); Reliability; Report on models and features for end-to-end reliability[R]. ETSI GS NFV-REL 003 V1.1.1, 2016. TANG Xiaoyong, LI Kenli, QIU Meikang, et al. A hierarchical reliability-driven scheduling algorithm in grid systems[J]. Journal of Parallel and Distributed Computing, 2012, 72(4): 525–535. doi: 10.1016/j.jpdc.2011.12.004 BIJWE S, MACHIDA F, ISHIDA S, et al. End-to-End reliability assurance of service chain embedding for network function virtualization[C]. 2017 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN), Berlin, Germany, 2017: 1–4. doi: 10.1109/NFV-SDN.2017.8169853. KUO Tungwei, LIOU B Hheng, LIN K C J, et al. Deploying Chains of virtual network functions: On the relation between link and server usage[J]. IEEE/ACM Transactions on Networking, 2018, 26(4): 1562–1576. doi: 10.1109/TNET.2018.2842798 魏亮, 黄韬, 张娇, 等. 基于强化学习的服务链映射算法[J]. 通信学报, 2018, 39(1): 90–100. doi: 10.11959/j.issn.1000-436x.2018002WEI Liang, HUANG Tao, ZHANG Jiao, et al. Service Chain mapping algorithm based on reinforcement learning[J]. Journal on Communications, 2018, 39(1): 90–100. doi: 10.11959/j.issn.1000-436x.2018002 CAO Haotong, ZHU Yongxu, ZHENG Gan, et al. A novel optimal mapping algorithm with less computational complexity for virtual network embedding[J]. IEEE Transactions on Network and Service Management, 2018, 15(1): 356–371. doi: 10.1109/TNSM.2017.2778106 ZHANG Xin, QIAN Zhuzhong, ZHANG Sheng, et al. Pattern-aware reliable virtual network function chain deployment[C]. 2017 IEEE International Symposium on Parallel and Distributed Processing with Applications and 2017 IEEE International Conference on Ubiquitous Computing and Communications (ISPA/IUCC), Guangzhou, China, 2017: 335–342. doi: 10.1109/ISPA/IUCC.2017.00055. SHAHRIAR N, AHMED R, CHOWDHURY S R, et al. Generalized recovery from node failure in virtual network embedding[J]. IEEE Transactions on Network and Service Management, 2017, 14(2): 261–274. doi: 10.1109/TNSM.2017.2693404 期刊类型引用(6)
1. 沈建军. 基于特征分析的长江新链网络资源分配算法. 微型电脑应用. 2024(08): 236-239 . 百度学术
2. 高媛,方海,赵扬,杨旭. 基于自然梯度Actor-Critic强化学习的卫星边缘网络服务功能链部署方法. 电子与信息学报. 2023(02): 455-463 . 本站查看
3. 胡海岩,康巧燕,赵朔,王建峰,付有斌. 基于节点综合重要度排序的服务功能链部署优化方法. 计算机应用. 2023(03): 860-868 . 百度学术
4. 吕振辉,张敬伟,崔强,陈曦,王胜,孙毅,陈明昊. 基于Q-learning改进蜘蛛猴算法的电工装备边缘网关部署研究. 电力信息与通信技术. 2022(01): 51-60 . 百度学术
5. 黄万伟,李松,张超钦,王苏南,张校辉. 基于图注意力网络的服务功能链路径优化研究. 电子与信息学报. 2022(08): 2833-2841 . 本站查看
6. 吴晓春,洪晨,张岳,张俊楠,周静静. 基于微服务架构的粒度可变服务功能链映射算法. 电信科学. 2022(12): 11-26 . 百度学术
其他类型引用(4)
-