Dynamic VNF placement, resource allocation and traffic routing in 5G
5G中的动态VNF布局、资源分配和流量路由
ABSTRACT
5G网络将通过使用软件定义的网络和网络功能虚拟化等使能技术,支持各种垂直服务,并提供一组不同的关键性能指标(KPI)。网络运营商有责任有效地将可用资源分配给服务请求,以满足KPI要求,同时考虑可用资源的有限数量及其成本。一个关键挑战是,请求可能随着时间的推移而变化很大,需要一个解决方案来解释它们的动态生成和终止。基于这种动机,我们寻求对请求接纳、资源激活、VNF放置、资源分配和流量路由做出联合决策。我们通过考虑虚拟机的设置时间等现实世界方面来实现这一点,目标是最大化移动网络运营商的利润。为此,首先,我们提出了一个单点优化问题,该问题可以在整个系统生命周期内完全了解请求者的到达和离开时间的情况下,获得小规模问题的最优解。然后,我们提出了一个高效实用的启发式解决方案,只需要在下一个时间段了解这些知识,并适用于实际规模的场景。最后,我们使用实际服务和大规模网络拓扑来评估这些解决方案的性能。结果表明,我们的启发式解决方案比最先进的在线方法表现更好,接近最优。
1.介绍
5G网络的设想是支持各种服务,以满足不同需求的垂直行业(如自动驾驶、媒体和娱乐)。服务被定义为虚拟网络功能(VNF)的有向图,具有特定且变化的关键性能指标(KPI),例如吞吐量和延迟。对这些服务的请求会随着时间的推移而到达,移动网络运营商(MNO)有责任通过满足其相关KPI,同时最大限度地降低自身成本,从而有效满足此类需求。
由于5G及以上网络的软件化,以及软件定义网络(SDN)和网络功能虚拟化(NFV)的支持,现在可以使用通用资源(如虚拟机)来实现不同服务所需的VNF。由一个名为orchestrator的网络组件决定要将哪些资源与哪个VNF和服务相关联,正如ETSI[1]所标准化的那样。在不丧失通用性的情况下,我们只关注计算和通信资源(例如,虚拟机及其链接);但是请注意,我们提出的框架适用于其他资源类型(例如存储)。
网络协调器做出以下决定[1]:
- 接受请求;
- 虚拟机的激活/停用;
- 在其中放置VNF实例;
- 将CPU分配给虚拟机以运行托管的VNF实例;
- 通过物理链路的流量路由。
这些决定显然是相互依赖的,因此应该做出正确的决定,以解释它们相互影响的方式——通常是非平凡的方式。本文的重点是考虑联合接入、VM激活/去激活、VNF布局、CPU分配和流量路由问题,以最大化MNO利润,同时考虑。
- 每个VNF的属性;
- 每项服务的KPI要求;
- VM和POP(存在点,如数据中心)的能力及其延迟;
- 物理链路的容量和延迟;
- VM设置时间;
- 服务请求的到达和离开时间。
正如第2节更好地讨论的那样,在现有的5G编排工作中,其中一些因素被简化,甚至被忽略。值得注意的是,我们考虑了虚拟机设置时间,这在(例如)物联网应用程序中是一个重要因素,因为请求通常是短暂的。忽略设置(和拆除)时间会降低现有解决方案的最优性。
此外,我们考虑到不同的VNF可能具有不同的复杂性,因此,可能需要不同数量的计算资源来实现相同的KPI目标。受文献[2]中几项工作的启发,我们将单个VNF建模为队列,将服务建模为排队网络。关键的是,与传统排队网络不同,流量(即队列中的客户端数量)可以在队列之间变化,因为VNF可以丢弃一些数据包(例如防火墙)或改变其数量(例如视频转码器)。我们的模型通过将传统的流量守恒约束替换为通用的流量守恒约束来说明这一重要方面,使我们能够用任意的VNF图来描述任意服务。
基于这个模型,我们提出了一个一次性的优化问题,假设对未来的请求有充分的了解,它允许我们最大化MNO利润。考虑到此类问题的NP难度以及未来请求的知识通常不可用的事实,我们提出了一种高效的启发式算法MaxSR,该算法将基于每个时间段内请求的知识定期调用。对于大规模网络场景,该方法可以获得近似最优解。我们使用现实世界的服务和不同的网络场景,将MaxSR与最优和其他基准进行比较。
综上所述,本文的主要贡献如下:
- 我们提出了5G主要组件的完整模型,包括垂直服务(动态请求、VNF和服务KPI)和资源(如虚拟机和链接);
- 我们的模型考虑了服务请求的时间变化,并在考虑VMs设置时间的同时动态分配计算和网络资源。它还可以在计算复杂度和KPI要求方面容纳一组反向VNF、多个VNF实例,以及具有多个入口和出口VNF的任意VNF图,而不是简单的链或有向无环图(DAG);
- 我们将一次优化问题描述为一个混合整数非线性规划(MINLP),根据整个系统生命周期内的完整请求统计信息,对VM状态、VNF位置、CPU分配和流量路由做出联合决策;
- 我们提出了一种有效的近似最优启发式算法MaxSR来解决上述问题,该算法基于对大规模网络场景的近期知识;
- 最后,通过使用合成服务和请求以及不同网络场景的大量实验,我们将MaxSR与最优和在线方法Best Fit进行比较。
论文的其余部分组织如下。第二节回顾相关工作。第3节描述了系统模型和问题公式,而第4节阐明了我们的解决策略。最后,第5节介绍了我们在不同网络场景下的数值评估,第6节讨论了所提出的解决方案的适用性和可扩展性,第7节总结了本文。
2.相关工作
如调查文件[3]所示,有几项工作已经解决了VNF布局和流量路由问题。在这些工作中,大多数问题被描述为一个具有不同目标和约束集的混合整数线性规划(MILP)。这种方法可以产生精确的解,但只适用于小的情况;因此,提供近似最优解的启发式算法也被提出。
特别是,第一部分工作提供了一个一次性的VNF位置,给出了传入的服务请求。由于这种方法使预先放置的VNF保持不变,因此当流量随时间变化时,它可能会导致次优解决方案。[4–10]中可以找到这种方法的例子,其目的是最小化成本函数,例如运营成本、QoS降低成本、服务器利用率或两者的组合,并假设总是有足够的资源来为客户服务收到的请求。其中,Cohen等人[4]提出了一种近似算法,以最佳方式放置多组VNF,通过常数因子接近约束。Pham等人[8]介绍了一种基于马尔可夫近似技术的分布式解决方案,以放置VNF链,其中成本包括延迟成本,以及流量和服务器成本。[9] 相反,它解决了相同的问题,但旨在最大限度地降低能耗,同时考虑到每个流的端到端延迟和服务器利用率的限制。Pei等人[10]针对这个问题提出了一种在线启发式方法,通过这种方法,VNF实例使用最短路径算法进行部署和连接,以最小化VNF实例的数量并满足其端到端延迟约束。
另一个工作重点是高效的接纳策略,该策略可以最大化已接纳请求的吞吐量或收入[11–14]。特别是,Sallam等人[11]在考虑预算和容量限制的情况下,提出了联合VNF布局和资源分配问题,以最大化完全服务流的数量。他们利用子模块特性来解决问题的放松版本,并提出了两种具有恒定近似比的启发式方法。[12] 研究了VNF的联合放置和服务链嵌入问题,以最大限度地提高接纳请求的收益。[14]和[13]中解决了一个类似的问题,但对于在线环境,请求应该在到达时被接受和服务。另一方面,Zhou等人[13]首先在整个系统生命周期内制定一个一次性优化问题,然后利用原始-对偶方法设计一个在线解决方案,在理论上证明了竞争比率的上限。
[15–21]中采用了一种不同的方法,可以通过VNF共享和迁移来重新调整VNF位置,以最佳地适应随时间变化的服务需求。[15] [16]根据对未来服务需求的估计,提出适当扩展过度利用或未充分利用的VNF实例的算法。Jia等人[17]提出了一种具有有限竞争比的非线性算法,该算法可以在地理分布的数据中心之间动态部署延迟受限的服务功能链,从而最小化运营成本。
[18-21]中考虑了请求许可控制。更详细地说,Li等人[18]提出了一种主动算法,该算法动态地提供资源,以便在有时间保证的情况下接纳尽可能多的请求。类似地,[19]允许请求并在峰值时间间隔内放置它们的VNF,但通过迁移和在非峰值时间间隔内关闭空的VNF实例,将VNF实例的能量消耗降至最低。Liu等人[20]设想了一种算法,通过定期接纳新请求并重新安排当前服务请求,同时考虑迁移的操作开销,从而使服务提供商的利润最大化。最后,利用VNF迁移和共享[21]提出了一种在线算法,以最大限度地提高吞吐量,同时最小化服务成本并满足延迟限制。
与我们的工作相关的还有专门针对5G系统的研究,虽然它们只考虑服务器中的链路延迟和忽略处理延迟。[2]中有一个例子,它将虚拟机建模为M/M/1 PS队列,并提出了一个优化公式和启发式解决方案,以最小化平均服务延迟,同时满足链路和主机容量的约束。[22]和[23]中的工作旨在分别最小化虚拟机和链路的运行成本和能耗,同时确保端到端延迟KPI。[22]还允许VNF共享,并研究在共享VNF中对不同服务应用优先级的影响。Zhang等人[24]解决了请求接纳问题,以最大化总吞吐量,而忽略了ATVM的排队延迟。我们总结了大多数相关的解决方案,并将它们与表1中的工作进行了比较。
我们注意到,上述大多数工作都提供了积极的方法,只涉及成本最小化或请求许可。相反,我们将重点放在动态资源激活、VNF放置和CPU分配上,以在整个系统生命周期内最大限度地增加允许请求的收入,同时最大限度地减少部署成本和一些实际问题的核算。我们的主动MINLP问题的制定通过将最大端到端延迟作为主要KPI来扩展现有模型,这是一个实用的、可扩展的解决方案,它周期性地管理新的请求并重新调整现有的VNF部署。据我们所知,这是第一个5G网络服务编排的动态解决方案。
3.系统模型与问题表述
在本节中,我们首先通过一个简单的例子来描述我们的系统模型。随后,我们提出了联合请求接纳、VM激活、VNF放置、CPU分配和流量路由问题;接下来将讨论问题的时间复杂性。表2总结了常用的符号。
3.1.系统模型
物理基础设施。允许
G
=
(
M
,
ε
)
\mathcal{G=(M, \varepsilon)}
G=(M,ε) 是表示物理基础设施网络的有向图,其中每个节点
m
∈
M
m \mathcal{\in M}
m∈M有虚拟机或网络节点(即路由器或交换机)。虚拟机
m
m
m有最大的计算能力
C
v
m
(
m
)
C_{vm}(m)
Cvm(m)。设置
ε
\varepsilon
ε表示连接网络节点的物理链路。我们定义
B
(
e
)
B(e)
B(e)和
D
p
h
y
(
e
)
D_{phy}(e)
Dphy(e)分别是物理链路的带宽和延迟
e
e
e
∈
ε
\mathcal{\in \varepsilon}
∈ε。 时间被分解成几步,
T
=
{
1
,
2
,
.
.
.
,
T
}
\mathcal{T}=\{1,2,...,T\}
T={1,2,...,T} ,我们假设在每一步中,虚拟机都可能处于以下状态之一:终止、打开或活动。具体来说,虚拟机只能在处于活动状态时使用,并且在处于活动状态之前需要打开一个时间步。根据文献[16]中的测量结果,我们还考虑到VM建立时间对交通流迁移时间的影响可以忽略不计。
每个虚拟机可以承载一个VNF,并且属于一个数据中心
d
∈
D
d \mathcal{\in D}
d∈D ;我们表示数据中心
d
d
d中可用的计算资源量通过
C
d
c
(
d
)
C_{dc}(d)
Cdc(d)以及其中的一组虚拟机
d
d
d具有
M
d
\mathcal{M}_d
Md 。在物理图形中
G
\mathcal{G}
G ,数据中心内的物理链路被认为是理想的,即它们没有容量限制和零延迟。让逻辑链接
l
∈
L
l \mathcal{\in L}
l∈L是连接两个虚拟机的一系列物理链接,
s
r
c
(
l
)
src(l)
src(l)和目的地
d
s
t
(
l
)
dst(l)
dst(l), 然后定义端到端路径
p
∈
P
p \mathcal{\in P}
p∈P作为一系列逻辑链接。
服务。我们代表每项服务
s
∈
S
s \mathcal{\in S}
s∈S 使用一个VNF 转发图(VNFFG),其中节点是VNF
q
∈
Q
q \mathcal{\in Q}
q∈Q, 有向边显示了流量是如何通过VNF的。VNFFG可以是任何可能具有多个入口和出口VNF的通用图。我们表示进入服务入口的总新流量
s
s
s, 通过
λ
n
e
w
s
\lambda_{new}s
λnews 。自动分组服务
s
s
s,在VNF中处理
q
1
q_1
q1,在时间
q
2
q_2
q2转发给VNF
q
2
q_2
q2概率为
P
(
s
,
q
1
,
q
2
,
t
)
\Bbb{P}(s,q_1,q_2,t)
P(s,q1,q2,t)。同样,
P
(
s
,
◦
,
q
,
t
)
\Bbb{P}(s,◦,q,t)
P(s,◦,q,t)是一个新的业务包
s
s
s在时间
t
t
t时开始在进入 VNF中获取服务
q
q
q的概率 ,
P
(
s
,
◦
,
q
,
t
)
\Bbb{P}(s,◦,q,t)
P(s,◦,q,t)是指一个业务数据包
s
s
s 已经在VNF
q
q
q出口服务过了,在时间
t
t
t离开服务
s
s
s的概率。 每项服务
s
s
s, 我们考虑它的目标延迟,
D
Q
o
s
s
D_{Qos}s
DQoss作为最关键的KPI,指定流量数据包
s
s
s的最大容许端到端延迟。
VNF可能有不同的处理要求,这取决于它们的计算复杂度。我们用
w
(
q
)
w(q)
w(q)的计算能力即VNF
q
q
q需要处理一个单位的流量来标记。一些VNF可能无法在单个VM上找到足够的资源来完全服务于流量,同时满足目标延迟。因此,可以创建多个实例,在每个时间点
N
(
s
,
q
)
N(s,q)
N(s,q)是VNF
q
q
q的最大数字。同一VNF的实例可以部署在同一数据中心内或不同的数据中心;在后一种情况下,每对VNF之间的流量必须通过连接运行相应VNF实例的虚拟机的不同逻辑链路进行拆分。
随着时间的推移,对相同服务的不同请求可能会到达;我们用
K
s
K_s
Ks表示服务
s
s
s的所有服务请求的集合,随着时间的推移
t
a
r
v
(
k
)
t_{arv}(k)
tarv(k)和出发时间
t
d
p
r
(
k
)
t_{dpr}(k)
tdpr(k),对通用服务请求进行特征化
k
∈
K
k \mathcal{\in K}
k∈K。由于切片隔离要求[25],我们假设不同服务请求的VNF实例不与其他服务请求共享。
举例。
图1表示两个样本服务上的可能部署,即车辆碰撞检测(VCD)和视频点播(VoD),在一个时间步长内显示在物理图形(图1c)上。VCD是一种低延迟服务,目标延迟
D
Q
o
S
D_{QoS}
DQoS非常低, 而VoD是一种流量密集型服务,具有很高的
λ
n
e
w
\lambda_{new}
λnew。图1a和1b分别描述了VCD和VoD服务的VNFFGS,其中,边缘上的数字表示流量包在相应的VNF上的转移概率。物理图形包含一组数据中心
D
=
{
d
1
,
d
2
,
d
3
}
\mathcal{D}=\{d_1,d_2,d_3\}
D={d1,d2,d3},具有计算能力
C
d
c
C_{dc}
Cdc。数据中心通过交换机和宽带物理链路相互连接𝐵还有延迟
D
p
h
y
D_{p h y}
Dphy。每个数据中心内的虚拟机由集合表示
M
d
1
=
{
m
1
,
m
2
}
\mathcal{M_{d_1}}=\{m_1,m_2\}
Md1={m1,m2},
M
d
2
=
{
m
3
,
m
4
}
\mathcal{M_{d_2}}=\{m_3,m_4\}
Md2={m3,m4},
M
d
3
=
{
m
5
,
m
6
,
m
7
}
\mathcal{M_{d_3}}=\{m_5,m_6,m_7\}
Md3={m5,m6,m7}每个都具有计算能力
C
v
m
C_{vm}
Cvm。如图1c所示,服务VCD部署在数据中心
d
2
d_2
d2内为了避免数据中心间的网络延迟。服务VoD部署在整个数据中心
d
1
d_1
d1和第三方数据中心
d
3
d_3
d3。代码转换器VNF,具有较高的计算复杂度高
w
w
w, 在数据中心中
d
3
d_3
d3需要两个实例来全面服务流量。
3.2问题表述
在本节中,我们首先描述将服务请求映射到网络资源时必须做出的决策。然后,我们使用第3.1节提出的模型以及我们定义的决策变量,将系统约束和目标形式化。一般来说,考虑到服务请求的未来到达和离开时间,我们应该做出以下决定:
- 服务请求激活,即当服务请求得到服务时;
- VM激活/停用,即设置或终止VM时;
- VNF实例放置,即哪些虚拟机必须在状态下运行VNF;
- CPU分配,即分配给虚拟机多少计算能力来运行部署的VNF;
- 流量路由,即VNF之间的交通如何通过物理链路路由。
服务请求激活。让二进制变量
V
(
K
,
t
)
∈
{
0
,
1
}
V(K,t)\mathcal{\in\{0,1\}}
V(K,t)∈{0,1}表示服务请求
k
k
k在时间
t
t
t准时送达。 一旦提交,服务请求必须在其整个生命周期内提供。给定服务请求到达时间
t
a
r
v
(
k
)
t_{arv}(k)
tarv(k)和出发时间
t
d
p
r
(
k
)
t_{dpr}(k)
tdpr(k),这就转化为:
V
(
k
,
t
)
=
0
,
∀
k
∈
K
,
t
∈
T
:
t
<
t
a
r
v
(
k
)
⋁
t
>
t
d
p
r
(
k
)
(1)
V(k,t)=0, \forall k\mathcal{\in\mathcal{K}},t\mathcal{\in\mathcal{T}}:t<t_{arv(k)} \bigvee t>t_{dpr(k)} \tag{1}
V(k,t)=0,∀k∈K,t∈T:t<tarv(k)⋁t>tdpr(k)(1)
VNF例子。以下约束限制了部署的VNF
q
q
q实例的数量的任何服务请求
k
∈
K
s
k\mathcal{\in{K_s}}
k∈Ks在任何时间都少于
N
(
s
,
q
)
N(s,q)
N(s,q):
∑
m
∈
M
A
(
k
,
m
,
q
,
t
)
≤
N
(
s
,
q
)
,
∀
t
∈
T
,
s
∈
S
,
k
∈
K
s
,
q
∈
Q
(2)
\sum_{m\mathcal{\in\mathcal{M}}}A(k,m,q,t)\leq N(s,q),\forall t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}},k\mathcal{\in\mathcal{K_s}}, q\mathcal{\in\mathcal{Q}} \tag{2}
m∈M∑A(k,m,q,t)≤N(s,q),∀t∈T,s∈S,k∈Ks,q∈Q(2)
其中二进制变量
A
(
k
,
m
,
q
,
t
)
A(k,m,q,t)
A(k,m,q,t)表示在时间
t
t
t时,VNF
q
q
q是否服务请求
k
k
k放在虚拟机
m
m
m上。5G网络的网络片隔离特性防止了不同服务请求之间的VNF共享。此外,在任何VM上最多可以部署一个VNF实例,即
∑
k
∈
K
∑
q
∈
Q
A
(
k
,
m
,
q
,
t
)
≤
1
,
∀
m
∈
M
,
t
∈
T
(3)
\sum_{k\mathcal{\in\mathcal{K}}}\sum_{q\mathcal{\in\mathcal{Q}}}A(k,m,q,t)\leq 1,\forall m\mathcal{\in\mathcal{M}},t\mathcal{\in\mathcal{T}} \tag{3}
k∈K∑q∈Q∑A(k,m,q,t)≤1,∀m∈M,t∈T(3)
VM状态。我们定义了两个二进制变量
U
(
m
,
t
)
U(m,t)
U(m,t)和
O
(
m
,
t
)
O(m,t)
O(m,t)代表VM
m
m
m在时间
t
t
t是处于打开状态还是处于活动状态。我们建立一个简单的约束,防止虚拟机在任何时候同时开启和激活,即
O
(
m
,
t
)
+
U
(
m
,
t
)
≤
1
,
∀
m
∈
M
,
t
∈
T
(4)
O(m,t)+U(m,t)\leq 1,\forall m\mathcal{\in\mathcal{M}},t\mathcal{\in\mathcal{T}} \tag{4}
O(m,t)+U(m,t)≤1,∀m∈M,t∈T(4)
以下约束强制执行该VM
m
m
m可以在时间
t
t
t时处于活动状态,仅当它在上一时间步中已打开或处于活动状态时:
O
(
m
,
t
)
≤
O
(
m
,
t
−
1
)
+
U
(
m
,
t
−
1
)
,
∀
m
∈
M
,
t
∈
T
(5)
O(m,t)\leq O(m,t-1)+U(m,t-1),\forall m\mathcal{\in\mathcal{M}},t\mathcal{\in\mathcal{T}} \tag{5}
O(m,t)≤O(m,t−1)+U(m,t−1),∀m∈M,t∈T(5)
虚拟机只有在处于活动状态时才能运行VNF,即:
∑
k
∈
K
∑
q
∈
Q
A
(
k
,
m
,
q
,
t
)
≤
O
(
m
,
t
)
,
∀
m
∈
M
,
t
∈
T
(6)
\sum_{k\mathcal{\in\mathcal{K}}}\sum_{q\mathcal{\in\mathcal{Q}}}A(k,m,q,t)\leq O(m,t),\forall m\mathcal{\in\mathcal{M}},t\mathcal{\in\mathcal{T}} \tag{6}
k∈K∑q∈Q∑A(k,m,q,t)≤O(m,t),∀m∈M,t∈T(6)
计算能力。让实变量
μ
(
k
,
m
,
q
,
t
)
\mu(k,m,q,t)
μ(k,m,q,t)表示在时间
t
t
t时分配给VM
m
m
m去运行VNF
k
k
k服务请求
k
k
k的服务率。乘以
w
(
q
)
w(q)
w(q), 我们的计算能力相当于在时间
t
t
t时VM
m
m
m运行VNF
q
q
q。数据中心和虚拟机的有限计算能力分别表示为
C
d
c
(
d
)
C_{dc}(d)
Cdc(d)和
C
v
m
(
m
)
C_{vm}(m)
Cvm(m), 在任何时间点都不应超过。我们通过实施以下措施来描述此类限制:
∑
m
∈
M
d
∑
k
∈
K
∑
q
∈
Q
μ
(
k
,
m
,
q
,
t
)
⋅
w
(
q
)
≤
C
d
c
(
d
)
,
∀
t
∈
T
,
d
∈
D
(7)
\sum_{m\mathcal{\in\mathcal{M_d}}}\sum_{k\mathcal{\in\mathcal{K}}}\sum_{q\mathcal{\in\mathcal{Q}}}\mu(k,m,q,t)\cdot w(q)\leq C_{dc}(d),\forall t\mathcal{\in\mathcal{T}},d\mathcal{\in\mathcal{D}} \tag{7}
m∈Md∑k∈K∑q∈Q∑μ(k,m,q,t)⋅w(q)≤Cdc(d),∀t∈T,d∈D(7)
不等式左侧的和是数据中心内所有虚拟机包括数据中心
d
d
d的总和。 同样,对于虚拟机有
μ
(
k
,
m
,
q
,
t
)
⋅
w
(
q
)
≤
A
(
k
,
m
,
q
,
t
)
,
∀
t
∈
T
,
k
∈
K
,
q
∈
Q
,
m
∈
M
(8)
\mu(k,m,q,t)\cdot w(q)\leq A(k,m,q,t) ,\\ \forall t\mathcal{\in\mathcal{T}},k\mathcal{\in\mathcal{K}},q\mathcal{\in\mathcal{Q}}, m\mathcal{\in\mathcal{M}} \tag{8}
μ(k,m,q,t)⋅w(q)≤A(k,m,q,t),∀t∈T,k∈K,q∈Q,m∈M(8)
当没有放置VNF时,
A
(
k
,
m
,
q
,
t
)
A(k,m,q,t)
A(k,m,q,t) 在不等式右边对虚拟机
m
m
m强制执行零服务率。
KPI目标实现。每当服务请求被送达时,即
V
(
k
,
t
)
=
1
V(k,t)=1
V(k,t)=1,对应VNFFG中的所有流量都应该由底层物理链路承载。以下约束在任何时间点为每对VNF之间的流量确定了该条件:
∑
l
∈
L
ρ
(
k
,
l
,
q
1
,
q
2
,
t
)
≥
V
(
k
,
t
)
,
∀
t
∈
T
,
s
∈
S
,
k
∈
K
s
,
q
1
,
q
2
∈
Q
:
P
(
s
,
q
1
,
q
2
,
t
)
>
0.
(9)
\sum_{l\mathcal{\in\mathcal{L}}}\rho(k,l,q_1,q_2,t)\geq V(k,t),\\ \forall t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}},k\mathcal{\in\mathcal{K_s}}, q_1,q_2\mathcal{\in\mathcal{Q}} : \Bbb{P}(s,q_1,q_2,t)>0 \tag{9}.
l∈L∑ρ(k,l,q1,q2,t)≥V(k,t),∀t∈T,s∈S,k∈Ks,q1,q2∈Q:P(s,q1,q2,t)>0.(9)
实变量
ρ
(
k
,
l
,
q
1
,
q
2
,
t
)
\rho(k,l,q_1,q_2,t)
ρ(k,l,q1,q2,t)显示在时间
t
t
t时,通过逻辑链路路由
l
l
l从VNF
q
1
q_1
q1到
q
2
q_2
q2的流量的比例。 如前所述,从VNF
q
1
q_1
q1到
q
2
q_2
q2的流量可以拆分为几个逻辑链路(见等式(2))。此外,由于我们考虑了多路径路由,在每一个VNF实例之间可能有多个逻辑链路。因此,约束(9)意味着时间
t
t
t时,对于任何服务请求
k
k
k请求从VNF
q
1
q_1
q1到
q
2
q_2
q2的流量(即
P
(
s
,
q
1
,
q
2
,
t
)
>
0
\Bbb{P}(s,q_1,q_2,t)>0
P(s,q1,q2,t)>0),在服务请求被服务时,通过任何逻辑链路的所有分数流量的总和应等于1。
上述限制不包括入口和出口流量。为了解释这些贡献,我们需要在VNFFG和物理图中引入虚拟节点。我们添加了一个端点虚拟VNF,
◦
◦
◦在每个VNFFG中,它直接连接到所有入口和出口VNF,并且在物理图中有一个虚拟虚拟机,它直接连接到所有虚拟机。我们定义
L
◦
\mathcal{L_◦}
L◦作为从虚拟机开始或结束的虚拟逻辑链路集。我们假设数据链路是理想的,也就是说,它们没有容量限制,没有延迟和成本。我们现在可以将相关的流量约束表述为:
∑
l
∈
L
◦
ρ
(
k
,
l
,
◦
,
q
,
t
)
≥
V
(
k
,
t
)
,
∀
t
∈
T
,
s
∈
S
,
k
∈
K
s
,
q
∈
Q
:
P
(
s
,
◦
,
q
,
t
)
>
0
,
.
(10)
\sum_{l\mathcal{\in\mathcal{L_◦}}}\rho(k,l,◦,q,t)\geq V(k,t),\forall t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}},k\mathcal{\in\mathcal{K_s}}, q\mathcal{\in\mathcal{Q}} : \Bbb{P}(s,◦,q,t)>0 ,\tag{10}.
l∈L◦∑ρ(k,l,◦,q,t)≥V(k,t),∀t∈T,s∈S,k∈Ks,q∈Q:P(s,◦,q,t)>0,.(10)
∑
l
∈
L
◦
ρ
(
k
,
l
,
q
,
◦
,
t
)
≥
V
(
k
,
t
)
,
∀
t
∈
T
,
s
∈
S
,
k
∈
K
s
,
q
∈
Q
:
P
(
s
,
q
,
◦
,
t
)
>
0
,
.
(11)
\sum_{l\mathcal{\in\mathcal{L_◦}}}\rho(k,l,q,◦,t)\geq V(k,t),\forall t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}},k\mathcal{\in\mathcal{K_s}}, q\mathcal{\in\mathcal{Q}} : \Bbb{P}(s,q,◦,t)>0 ,\tag{11}.
l∈L◦∑ρ(k,l,q,◦,t)≥V(k,t),∀t∈T,s∈S,k∈Ks,q∈Q:P(s,q,◦,t)>0,.(11)
ρ
(
k
,
l
,
◦
,
q
,
t
)
\rho(k,l,◦,q,t)
ρ(k,l,◦,q,t)和
ρ
(
k
,
l
,
q
,
◦
,
t
)
\rho(k,l,q,◦,t)
ρ(k,l,q,◦,t)分别是时间
t
t
t通过逻辑链接
l
l
l进入VNF
q
q
q的新流量的比例以及离开出口VNF
q
q
q的流量比例。
安置我们现在可以关联路由决策
ρ
\rho
ρ和安置决定
A
A
A如下
ρ
(
k
,
l
,
q
1
,
q
2
,
t
)
≤
A
(
k
,
m
,
q
2
,
t
)
,
∀
t
∈
T
,
k
∈
K
,
q
1
∈
Q
⋃
{
0
}
,
q
2
∈
Q
,
m
∈
M
,
l
∈
L
⋃
L
0
:
d
s
t
(
l
)
=
m
.
(12)
\rho(k,l,q_1,q_2,t)\leq A(k,m,q_2,t) ,\forall t\mathcal{\in\mathcal{T}},k\mathcal{\in\mathcal{K}},q_1\mathcal{\in\mathcal{Q\bigcup \{0\}}}, q_2\mathcal{\in\mathcal{Q}},m\mathcal{\in\mathcal{M}} ,l\mathcal{\in\mathcal{L\bigcup L_0}}:dst(l)=m. \tag{12}
ρ(k,l,q1,q2,t)≤A(k,m,q2,t),∀t∈T,k∈K,q1∈Q⋃{0},q2∈Q,m∈M,l∈L⋃L0:dst(l)=m.(12)
上述约束意味着,无论何时,只要通过逻辑链接 l l l传入流量到VNF q 2 q_2 q2目的地是虚拟机 m m m,即 d s t ( l ) = m dst(l)=m dst(l)=m, VNF q 2 q_2 q2它部署在虚拟机 m m m上。 类似地,只要通过逻辑链接 l l l从VNF q 1 q_1 q1传出流量,来源是虚拟机 m m m,即 s r c ( l ) = m src(l)=m src(l)=m, VNF q 1 q_1 q1它部署在虚拟机 m m m上:
ρ ( k , l , q 1 , q 2 , t ) ≤ A ( k , m , q 1 , t ) , ∀ t ∈ T , k ∈ K , q 1 ∈ Q , q 2 ∈ Q ⋃ { 0 } , m ∈ M , l ∈ L ⋃ L 0 : s r l ( l ) = m . (13) \rho(k,l,q_1,q_2,t)\leq A(k,m,q_1,t) ,\\ \forall t\mathcal{\in\mathcal{T}},k\mathcal{\in\mathcal{K}},q_1\mathcal{\in\mathcal{Q}},q_2\mathcal{\in\mathcal{Q\bigcup \{0\}}},\\ m\mathcal{\in\mathcal{M}} ,l\mathcal{\in\mathcal{L\bigcup L_0}}:srl(l)=m. \tag{13} ρ(k,l,q1,q2,t)≤A(k,m,q1,t),∀t∈T,k∈K,q1∈Q,q2∈Q⋃{0},m∈M,l∈L⋃L0:srl(l)=m.(13)
系统稳定性。允许
λ
(
s
,
q
,
t
)
\lambda(s,q,t)
λ(s,q,t)表示在时间
t
t
t时服务范围
s
s
s的VNF
q
q
q总流入流量。
λ
(
s
,
q
,
t
)
\lambda(s,q,t)
λ(s,q,t)等于在时间
t
t
t时入口总流量和从其他VNF到服务范围
s
s
s的VNF
q
q
q的流量之和:
λ
(
s
,
q
,
t
)
=
λ
n
e
w
(
s
)
⋅
P
(
s
,
◦
,
q
,
t
)
+
∑
q
′
∈
|
Q
{
q
}
λ
(
s
,
q
′
,
t
)
⋅
P
(
s
,
q
′
,
q
,
t
)
.
(14)
\lambda(s,q,t)=\lambda_{new}(s)\cdot\Bbb{P}(s,◦,q,t)+\sum_{q'\mathcal{\in\mathcal{|Q\{q\}}}}\lambda(s,q',t)\cdot\Bbb{P}(s,q',q,t).\tag{14}
λ(s,q,t)=λnew(s)⋅P(s,◦,q,t)+q′∈|Q{q}∑λ(s,q′,t)⋅P(s,q′,q,t).(14)
使用
λ
(
s
,
q
,
t
)
\lambda(s,q,t)
λ(s,q,t),在时间
t
t
t时服务范围
s
s
s的VNF
q
1
q_1
q1到VNF
q
2
q_2
q2流量可以表示为:
Λ
(
s
,
q
,
t
)
=
λ
(
s
,
q
1
,
t
)
⋅
P
(
s
,
q
1
,
q
2
,
t
)
.
(15)
\Lambda(s,q,t)=\lambda(s,q_1,t)\cdot\Bbb{P}(s,q_1,q_2,t).\tag{15}
Λ(s,q,t)=λ(s,q1,t)⋅P(s,q1,q2,t).(15)
现在我们可以定义一个辅助变量来表示时间
t
t
t时进入虚拟机
m
m
m,服务请求
k
k
k的VNF
q
q
q的流入流量:
I
(
k
,
m
,
q
,
t
)
=
∑
q
′
∈
Q
⋃
{
0
}
∑
l
∈
L
⋃
{
L
0
}
:
d
s
t
(
l
)
=
m
ρ
(
k
,
l
,
q
′
,
q
,
t
)
⋅
Λ
(
s
,
q
′
,
q
,
t
)
t
∈
T
,
s
∈
S
,
k
∈
K
s
,
q
∈
Q
,
m
∈
M
(16)
I(k,m,q,t)=\sum_{q'\mathcal{\in\mathcal{Q\bigcup\{0\}}}}\sum_{l\mathcal{\in\mathcal{L\bigcup\{L_0\}:dst(l)=m}}}\rho(k,l,q',q,t)\cdot \Lambda(s,q',q,t) \\ t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}},k\mathcal{\in\mathcal{K_s}}, q\mathcal{\in\mathcal{Q}} , m\mathcal{\in\mathcal{M}} \tag{16}
I(k,m,q,t)=q′∈Q⋃{0}∑l∈L⋃{L0}:dst(l)=m∑ρ(k,l,q′,q,t)⋅Λ(s,q′,q,t)t∈T,s∈S,k∈Ks,q∈Q,m∈M(16)
其中,求和是在VM
m
m
m结尾的所有逻辑链路。最后,我们描述了系统稳定性要求,该要求是在任何时间点上,输入流量不得超过虚拟机
m
m
m上服务请求
k
k
k的每个VNF
q
q
q的指定服务速率:
I
(
k
,
m
,
q
,
t
)
≤
μ
(
k
,
m
,
q
,
t
)
,
∀
t
∈
T
,
k
∈
K
s
,
q
∈
Q
,
m
∈
M
(17)
I(k,m,q,t)\leq \mu(k,m,q,t),\forall t\mathcal{\in\mathcal{T}},k\mathcal{\in\mathcal{K_s}}, q\mathcal{\in\mathcal{Q}} , m\mathcal{\in\mathcal{M}} \tag{17}
I(k,m,q,t)≤μ(k,m,q,t),∀t∈T,k∈Ks,q∈Q,m∈M(17)
广义流量守恒。我们的模型捕获了VNF的可能性,由于处理的原因,输入和输出流量的数量是不同的。我们定义了比例因子
α
(
s
,
q
,
t
)
\alpha(s,q,t)
α(s,q,t)作为在时间
t
t
t时服务范围
s
s
s的VNF
q
q
q的传出流量与传入流量的比率:
α
(
s
,
q
,
t
)
=
∑
q
′
∈
Q
⋃
{
0
}
Λ
(
s
,
q
,
q
′
,
t
)
∑
q
′
∈
Q
⋃
{
0
}
Λ
(
s
,
q
′
,
q
,
t
)
t
∈
T
,
s
∈
S
,
q
∈
Q
,
(18)
\alpha(s,q,t)=\frac{\sum_{q'\mathcal{\in\mathcal{Q\bigcup\{0\}}}}\Lambda(s,q,q',t)}{\sum_{q'\mathcal{\in\mathcal{Q\bigcup\{0\}}}}\Lambda(s,q',q,t)}\\ t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}}, q\mathcal{\in\mathcal{Q}} , \tag{18}
α(s,q,t)=∑q′∈Q⋃{0}Λ(s,q′,q,t)∑q′∈Q⋃{0}Λ(s,q,q′,t)t∈T,s∈S,q∈Q,(18)
我们还定义了辅助变量
D
(
k
,
m
,
q
,
t
)
D(k,m,q,t)
D(k,m,q,t)代表在时间
t
t
t时服务请求
k
k
k离开虚拟机
m
m
m的VNF
q
q
q的流量:
D
(
k
,
m
,
q
,
t
)
=
∑
q
′
∈
Q
⋃
{
0
}
∑
l
∈
L
⋃
{
L
0
}
:
s
r
c
(
l
)
=
m
ρ
(
k
,
l
,
q
,
q
′
,
t
)
⋅
Λ
(
s
,
q
,
q
′
,
t
)
t
∈
T
,
s
∈
S
,
k
∈
K
s
,
q
∈
Q
,
m
∈
M
(19)
D(k,m,q,t)=\sum_{q'\mathcal{\in\mathcal{Q\bigcup\{0\}}}}\sum_{l\mathcal{\in\mathcal{L\bigcup\{L_0\}:src(l)=m}}}\rho(k,l,q,q',t)\cdot \Lambda(s,q,q',t) \\ t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}},k\mathcal{\in\mathcal{K_s}}, q\mathcal{\in\mathcal{Q}} , m\mathcal{\in\mathcal{M}} \tag{19}
D(k,m,q,t)=q′∈Q⋃{0}∑l∈L⋃{L0}:src(l)=m∑ρ(k,l,q,q′,t)⋅Λ(s,q,q′,t)t∈T,s∈S,k∈Ks,q∈Q,m∈M(19)
其中,右侧包含从VM
m
m
m开始流经逻辑链路的所有流量。然后,我们可以为在时间
t
t
t时虚拟机
m
m
m上服务请求
k
k
k的每个VNF
q
q
q制定广义流守恒定律:
D
(
k
,
m
,
q
,
t
)
=
α
(
s
,
q
,
t
)
⋅
I
(
k
,
m
,
q
,
t
)
∀
t
∈
T
,
s
∈
S
,
k
∈
K
s
,
q
∈
Q
,
m
∈
M
(20)
D(k,m,q,t)=\alpha(s,q,t)\cdot I(k,m,q,t)\\ \forall t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}},k\mathcal{\in\mathcal{K_s}}, q\mathcal{\in\mathcal{Q}} , m\mathcal{\in\mathcal{M}} \tag{20}
D(k,m,q,t)=α(s,q,t)⋅I(k,m,q,t)∀t∈T,s∈S,k∈Ks,q∈Q,m∈M(20)
这意味着对于在任何时候虚拟机
m
m
m上服务请求
k
k
k的每个VNF
q
q
q,传出流量等于传入流量乘以比例因子
α
(
s
,
q
,
t
)
\alpha(s,q,t)
α(s,q,t)。
延迟。服务请求的流量数据包的端到端网络延迟是从入口到出口VNF的路径上的所有VNF为数据包提供服务所需的时间。这种延迟包括两个因素,即部署后续VNF的虚拟机对之间的网络延迟和VNF本身的处理时间。前者可以根据逻辑链路的延迟来定义
l
l
l,记为
D
l
o
g
(
l
)
D_{log}(l)
Dlog(l)。 这种延迟是底层物理链路延迟的总和:
D
l
o
g
(
l
)
=
∑
e
∈
l
D
p
h
y
(
e
)
(21)
D_{log}(l)=\sum_{e\mathcal{\in\mathcal{l}}}D_{phy}(e)\tag{21}
Dlog(l)=e∈l∑Dphy(e)(21)
我们还引入了二进制变量
F
(
k
,
l
,
q
1
,
q
2
,
t
)
F(k,l,q_1,q_2,t)
F(k,l,q1,q2,t)表示逻辑联系
l
l
l用于路由在时间
t
t
t时服务请求
k
k
k的来自VNF
q
1
q_1
q1到
q
2
q_2
q2的流量。
F
F
F可以描述为:
ρ
(
(
k
,
l
,
q
1
,
q
2
,
t
)
≤
F
(
k
,
l
,
q
1
,
q
2
,
t
)
,
∀
t
∈
T
,
k
∈
K
,
q
1
,
q
2
∈
Q
,
l
∈
L
(22)
\rho((k,l,q_1,q_2,t)\leq F(k,l,q_1,q_2,t),\\ \forall t\mathcal{\in\mathcal{T}},k\mathcal{\in\mathcal{K}}, q_1,q_2\mathcal{\in\mathcal{Q}} , l\mathcal{\in\mathcal{L}} \tag{22}
ρ((k,l,q1,q2,t)≤F(k,l,q1,q2,t),∀t∈T,k∈K,q1,q2∈Q,l∈L(22)
VNFFG中的流量数据包遵循一条路径
p
p
p底层物理图中的逻辑链接,用于连接VNFFG中的所有VNF。允许
w
∈
W
s
w\mathcal{\in\mathcal{W_s}}
w∈Ws是VNF的序列,从服务
s
s
s的VNFFG中的入口VNF到出口VNF。服务请求
k
k
k的流量包的网络延迟,按照
w
w
w并通过属于
p
p
p,由以下公式给出:
∑
(
q
1
,
q
2
)
∈
w
∑
l
∈
p
F
(
k
,
l
,
q
1
,
q
2
,
t
)
⋅
D
l
o
g
(
l
)
.
(23)
\sum_{(q_1,q_2)\mathcal{\in\mathcal{w}}}\sum_{l\mathcal{\in\mathcal{p}}}F(k,l,q_1,q_2,t)\cdot D_{log}(l). \tag{23}
(q1,q2)∈w∑l∈p∑F(k,l,q1,q2,t)⋅Dlog(l).(23)
虚拟机
m
m
m的处理时间记为
R
(
m
,
t
)
R(m,t)
R(m,t), 是在VM中完全处理流量数据包所需的时间。将每个虚拟机建模为一个队列,其中包含规则PS(或等效的FIFO),即在时间
t
t
t时虚拟机
m
m
m的处理时间是[2]:
R
(
m
,
t
)
=
1
∑
k
∈
K
∑
q
∈
Q
μ
(
k
,
m
,
q
,
t
)
−
I
(
k
,
m
,
q
,
t
)
,
m
∈
M
,
t
∈
T
.
(24)
R(m,t)=\frac{1}{\sum_{k\mathcal{\in\mathcal{K}}}\sum_{q\mathcal{\in\mathcal{Q}}}\mu(k,m,q,t)-I(k,m,q,t)},m\mathcal{\in\mathcal{M}} ,t\mathcal{\in\mathcal{T}}.\tag{24}
R(m,t)=∑k∈K∑q∈Qμ(k,m,q,t)−I(k,m,q,t)1,m∈M,t∈T.(24)
然后,是VNF序列
w
w
w之后的流量数据包的处理时间,是由:
∑
q
∈
w
∑
m
∈
p
A
(
k
,
m
,
q
,
t
)
⋅
R
(
m
,
t
)
.
(25)
\sum_{q\mathcal{\in\mathcal{w}}}\sum_{m\mathcal{\in\mathcal{p}}}A(k,m,q,t)\cdot R(m,t). \tag{25}
q∈w∑m∈p∑A(k,m,q,t)⋅R(m,t).(25)
最后,所经历的延迟必须小于目标延迟,即:
∑
(
q
1
,
q
2
)
∈
w
∑
l
∈
p
F
(
k
,
l
,
q
1
,
q
2
,
t
)
⋅
D
l
o
g
(
l
)
+
∑
q
∈
w
∑
m
∈
p
A
(
k
,
m
,
q
,
t
)
⋅
R
(
m
,
t
)
≤
D
Q
o
S
(
s
)
,
∀
t
∈
T
,
s
∈
S
,
k
∈
K
s
,
w
∈
W
s
,
p
∈
P
.
(26)
\sum_{(q_1,q_2)\mathcal{\in\mathcal{w}}}\sum_{l\mathcal{\in\mathcal{p}}}F(k,l,q_1,q_2,t)\cdot D_{log}(l)\\+\sum_{q\mathcal{\in\mathcal{w}}}\sum_{m\mathcal{\in\mathcal{p}}}A(k,m,q,t)\cdot R(m,t)\leq D_{QoS}(s),\\\forall t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}},k\mathcal{\in\mathcal{K_s}}, w\mathcal{\in\mathcal{W_s}} , p\mathcal{\in\mathcal{P}} . \tag{26}
(q1,q2)∈w∑l∈p∑F(k,l,q1,q2,t)⋅Dlog(l)+q∈w∑m∈p∑A(k,m,q,t)⋅R(m,t)≤DQoS(s),∀t∈T,s∈S,k∈Ks,w∈Ws,p∈P.(26)
我们的模型支持VNFFG中的一系列VNF强制执行特定延迟要求的情况。允许
w
ˉ
∈
W
ˉ
s
\bar w\mathcal{\in\mathcal{\bar W_s}}
wˉ∈Wˉs是服务
s
s
s的VNFFG中的一系列VNF,这需要更多的延迟要求
D
ˉ
Q
o
S
(
s
,
w
ˉ
)
\bar D_{QoS}(s,\bar w)
DˉQoS(s,wˉ)。
w
ˉ
\bar w
wˉ经历的延迟必须小于
D
ˉ
Q
o
S
(
s
,
w
ˉ
)
\bar D_{QoS}(s,\bar w)
DˉQoS(s,wˉ),即
∑
(
q
1
,
q
2
)
∈
w
ˉ
∑
l
∈
p
F
(
k
,
l
,
q
1
,
q
2
,
t
)
⋅
D
l
o
g
(
l
)
+
∑
q
∈
w
ˉ
∑
m
∈
p
A
(
k
,
m
,
q
,
t
)
⋅
R
(
m
,
t
)
≤
D
Q
o
S
(
s
,
w
ˉ
)
,
∀
t
∈
T
,
s
∈
S
,
k
∈
K
s
,
w
∈
W
ˉ
s
,
p
∈
P
.
(27)
\sum_{(q_1,q_2)\mathcal{\in\mathcal{\bar w}}}\sum_{l\mathcal{\in\mathcal{p}}}F(k,l,q_1,q_2,t)\cdot D_{log}(l)\\+\sum_{q\mathcal{\in\mathcal{\bar w}}}\sum_{m\mathcal{\in\mathcal{p}}}A(k,m,q,t)\cdot R(m,t)\leq D_{QoS}(s,\bar w),\\\forall t\mathcal{\in\mathcal{T}},s\mathcal{\in\mathcal{S}},k\mathcal{\in\mathcal{K_s}}, w\mathcal{\in\mathcal{\bar W_s}} , p\mathcal{\in\mathcal{P}} . \tag{27}
(q1,q2)∈wˉ∑l∈p∑F(k,l,q1,q2,t)⋅Dlog(l)+q∈wˉ∑m∈p∑A(k,m,q,t)⋅R(m,t)≤DQoS(s,wˉ),∀t∈T,s∈S,k∈Ks,w∈Wˉs,p∈P.(27)
链路容量。任何物理链路上的流量都不应超过最大链路容量,
B
(
e
)
B(e)
B(e)。 为了形式化这个约束,我们定义了辅助变量
L
(
e
,
t
)
L(e,t)
L(e,t)表示时间
t
t
t时物理链路
e
e
e上的流量,该变量等于通过逻辑链路
l
l
l的每对VNF之间的总流量,包含物理链路
e
e
e:
L
(
e
,
t
)
=
∑
s
∈
S
∑
k
∈
K
s
∑
q
1
,
q
2
∈
Q
∑
l
∈
L
:
e
∈
l
Λ
(
s
,
q
1
,
q
2
,
t
)
⋅
ρ
(
k
,
l
,
q
1
,
q
2
,
t
)
(28)
L(e,t)=\sum_{s\mathcal{\in\mathcal{S}}}\sum_{k\mathcal{\in\mathcal{K_s}}}\sum_{q_1,q_2\mathcal{\in\mathcal{Q}}}\sum_{l\mathcal{\in\mathcal{L:{e\mathcal{\in\mathcal{l}}}}}}\Lambda(s,q_1,q_2,t) \cdot \rho(k,l,q_1,q_2,t)\tag{28}
L(e,t)=s∈S∑k∈Ks∑q1,q2∈Q∑l∈L:e∈l∑Λ(s,q1,q2,t)⋅ρ(k,l,q1,q2,t)(28)
链路容量约束表示为
L
(
e
,
t
)
≤
B
(
e
)
,
∀
e
∈
ε
,
t
∈
T
(29)
L(e,t)\leq B(e),\forall e\mathcal{\in\mathcal{\varepsilon}}, t\mathcal{\in\mathcal{T}}\tag{29}
L(e,t)≤B(e),∀e∈ε,t∈T(29)
目标。优化问题的目标是使服务收益最大化,同时使总成本最小化。服务可能属于不同的类别,如超可靠低延迟通信(URLLC),增强型移动宽带(eMBB)或大规模机器型通信(mMTC),它们对收入的要求不同。通过服务一个单位的服务
s
s
s流量而获得的收入表示为
X
r
e
v
(
s
)
X_{rev}(s)
Xrev(s), 它允许支持任何任意的收入场景。例如,这样的数量可以与服务
s
s
s的目标延迟成正比,即
1
/
D
Q
o
s
(
s
)
1/D_{Qos}(s)
1/DQos(s),这意味着具有较低目标延迟的服务为MNO带来较高的均衡。总收入表示为
R
=
∑
t
∈
T
∑
s
∈
S
∑
k
∈
K
s
X
r
e
v
(
s
)
⋅
V
(
k
,
t
)
⋅
λ
n
e
w
(
s
)
.
(30)
R=\sum_{t\mathcal{\in\mathcal{T}}}\sum_{s\mathcal{\in\mathcal{S}}}\sum_{k\mathcal{\in\mathcal{K_s}}}X_{rev}(s)\cdot V(k,t)\cdot \lambda _{new}(s).\tag{30}
R=t∈T∑s∈S∑k∈Ks∑Xrev(s)⋅V(k,t)⋅λnew(s).(30)
总成本是物理链路中的传输成本、虚拟机中的计算成本和空闲成本的总和,分别描述如下:
C
l
i
n
k
=
∑
t
∈
T
∑
e
∈
ε
X
l
i
n
k
(
e
)
⋅
L
(
e
,
t
)
,
(31)
C_{link}=\sum_{t\mathcal{\in\mathcal{T}}}\sum_{e\mathcal{\in\mathcal{\varepsilon}}}X_{link}(e)\cdot L(e,t),\tag{31}
Clink=t∈T∑e∈ε∑Xlink(e)⋅L(e,t),(31)
C
c
p
u
=
∑
t
∈
T
∑
m
∈
M
∑
k
∈
K
∑
q
∈
Q
X
c
p
u
(
m
)
⋅
μ
(
k
,
m
,
q
,
t
)
⋅
w
(
q
)
,
(32)
C_{cpu}=\sum_{t\mathcal{\in\mathcal{T}}}\sum_{m\mathcal{\in\mathcal{M}}}\sum_{k\mathcal{\in\mathcal{K}}}\sum_{q\mathcal{\in\mathcal{Q}}}X_{cpu}(m)\cdot \mu(k,m,q,t)\cdot w(q),\tag{32}
Ccpu=t∈T∑m∈M∑k∈K∑q∈Q∑Xcpu(m)⋅μ(k,m,q,t)⋅w(q),(32)
C
i
d
l
e
=
∑
t
∈
T
∑
m
∈
M
X
i
d
l
e
(
m
)
⋅
(
U
(
m
,
t
)
+
O
(
m
,
t
)
)
.
(33)
C_{idle}=\sum_{t\mathcal{\in\mathcal{T}}}\sum_{m\mathcal{\in\mathcal{M}}}X_{idle}(m)\cdot (U(m,t)+O(m,t)).\tag{33}
Cidle=t∈T∑m∈M∑Xidle(m)⋅(U(m,t)+O(m,t)).(33)
上述成本以单位时间表示,分别取决于比例成本
X
l
i
n
k
(
e
)
X_{link}(e)
Xlink(e)为每个物理链接
e
e
e付费每单位流量,按比例计算的成本
X
c
p
u
(
m
)
X_{cpu}(m)
Xcpu(m)对于每个虚拟机
m
m
m按计算单位支付,固定成本
X
i
d
l
e
(
m
)
X_{idle}(m)
Xidle(m)对于每个虚拟机
m
m
m,如果虚拟机
m
m
m是付费的这很有吸引力。最后,我们将优化公式写成:
m
a
x
[
R
−
(
C
l
i
n
k
+
C
c
p
u
+
C
i
d
l
e
)
]
,
s
u
b
j
e
c
t
t
o
(
1
)
−
(
13
)
,
(
17
)
,
(
20
)
,
(
26
)
a
n
d
(
29
)
(30)
max[R-(C_{link}+C_{cpu}+C_{idle})],\\ subject \; to \; (1)-(13),(17),(20),(26)and(29) \tag{30}
max[R−(Clink+Ccpu+Cidle)],subjectto(1)−(13),(17),(20),(26)and(29)(30)
我们注意到,上述优化包括连续优化(例如
μ
(
k
,
m
,
q
,
t
)
\mu(k,m,q,t)
μ(k,m,q,t) )和整数(例如
A
(
k
,
m
,
q
,
t
)
A(k,m,q,t)
A(k,m,q,t))具有非线性约束(26)和(27)的变量,因此它是一个MINLP。
3.3.问题复杂性
上述关于VM激活、VNF放置、CPU分配和流量路由的联合决策问题包含整数和实数决策变量,因此它是非凸的。在下文中,我们通过将权重约束最短路径问题(WCSPP)简化为我们自己的更简单版本,证明了该问题是NP难问题。
定理1 第3.1节提到当目标值大于零时的问题是NP难的。
证明 我们将一个NP难问题(称为权重约束最短路径问题[26])简化为我们的问题。给出一张图表
G
(
V
,
E
)
G(V,E)
G(V,E),以及与边缘相关的成本和权重,WCSPP要求在确保总权重小于给定值的情况下,找到两个指定节点之间的最小成本路由。我们考虑了我们问题的一个特例,其中在
t
=
1
t=1
t=1时只有一个包含两个VNF的服务请求到达并在下一时间步离开。我们将两个VNF的最大实例数设置为1。物理基础设施中只有两个虚拟机,
C
v
m
(
m
)
=
∞
C_{vm}(m)=∞
Cvm(m)=∞和
X
c
p
u
(
m
)
=
X
i
d
l
e
(
m
)
=
0
X_{cpu}(m)=X_{idle}(m)=0
Xcpu(m)=Xidle(m)=0;剩下的是网络节点。我们设置
C
d
c
(
d
)
=
∞
,
∀
d
∈
D
C_{dc}(d)=∞,\forall d\mathcal{\in\mathcal{D}}
Cdc(d)=∞,∀d∈D。然后,很容易看出,当目标值大于零时,WCSPP等价于我们问题的特例。
除了复杂性之外,解决第3.2节中提出的问题还需要对所有服务请求的到达和离开时间有完整的了解,这在许多情况下是不现实的。如下所述,为了应对这个问题,我们的策略是定期解决问题,每个问题实例只利用有关过去和当前服务请求的信息。
4.MaxSR解决方案
鉴于上述问题的复杂性,我们提出了一种称为MaxSR的启发式解决方案,该方案的决策(i)仅涉及包含当前和近期的后续时间间隔,可以高精度预测(如第6节所述),以及(ii)基于在该时间间隔内发生的服务请求的知识。更准确地说,从时间步长
t
t
t开始, MaxSR就当前的服务请求做出决策,并对时间范围
H
H
H进行说明,即延长到
t
+
H
t+H
t+H。之后
τ
\tau
τ时间步长,当
τ
≤
H
\tau\leq H
τ≤H, 在下一个时间间隔再次执行MaxSR,即:
[
t
+
τ
,
t
+
τ
+
H
)
[t+\tau,t+\tau+H)
[t+τ,t+τ+H)。这意味着,尽管决策的时间跨度等于
H
H
H,它们将在下次执行MaxSR之前颁布。换句话说,
τ
\tau
τ指定算法连续执行之间的时间步数。在每次执行时,算法都会计算决策,即使是当前的服务请求,也会允许它们迁移到发布的更便宜的资源。请注意,迁移成本可以通过将该值合并到可能发生迁移的资源成本中来计算。即使时间有限,直接解决第3.2节定义的问题仍然是NP难的。为了绕过这个限制,在每次执行时,MaxSR都会处理上一次接收到的服务请求
τ
\tau
τ按顺序的时间步,即一次一个请求。下面,我们将在第4.1节中概述MaxSR,并在第4.2节中详细介绍构成我们的启发式算法的算法。
4.1. 概述
在每次执行时,MaxSR首先根据相应的服务收入按递减顺序考虑服务请求。然后,它激活为第一个服务请求提供服务所需的VM,尝试映射VNF序列
w
w
w走上路径
p
p
p连接虚拟机以承载所需的VNF。在执行此操作时,如果需要满足服务目标延迟,可以为VNF创建多个实例。为此,我们为每个VNF关联一个延迟预算,该预算与VNF计算复杂度
w
(
q
)
w(q)
w(q)成正比。然而,这种预算是灵活的,因为VNF超过其延迟预算的延迟贡献可能会由在
w
w
w随后的VNF补偿,它部署在一个VM中,能够以比VNF预算所指示的更快的速度处理流量。此外,MaxSR利用了一种回溯方法:在当前路径
p
p
p的某一点缺乏足够资源的情况下,该算法可以返回到上次成功部署的VNF,并寻找替代部署(因此路径),为后续的VNF留下更多的备用预算。尽管如此,可能无法找到足够的资源来满足给定VNF实例的流量和延迟约束;在这种情况下,服务请求被拒绝。
MaxSR做出的决定总结如下。
安置。MaxSR旨在将安置成本降至最低。这意味着部署的VNF实例的数量应该较低,并且所选的VM应该具有较低的成本。因此,该算法从一个实例开始,从可用的实例中选择成本最低的VM。如果这个位置不可行,它会尝试使用容量最高的VM来避免使用额外的实例。如果后一种策略也不可行,它会增加实例数量并重复该过程,直到成功部署,或者达到最大实例数量的限制(Alg.2和Alg.3)。
路由。回想一下,每个VNF可能有几个实例,这些实例可以部署在通过多逻辑链路连接的VM上。MaxSR采用注水方法,通过一对虚拟机之间的不同逻辑链路,在每对虚拟机之间路由流量。为了限制每个虚拟机的处理时间,根据虚拟机可用容量正确设置进入每个虚拟机的流量(Alg.3)。
CPU分配。MaxSR的目标是尽可能降低所用虚拟机的服务率,以减少计算资源的消耗,从而降低成本。这意味着设置与每VNF延迟预算兼容的最低服务率,除非我们必须补偿超过其延迟预算的VNF;在后一种情况下,算法选择VM上的最大服务速率(Alg.4)。
4.2. 算法
算法1:它是MaxSR启发式的主体,作为输入时间范围
H
H
H,当前时间步长
t
t
t,应在时间范围
[
t
,
t
+
H
]
[t,t+H]
[t,t+H]内提供服务的服务请求集
K
t
,
H
\mathcal{K}_{t,H}
Kt,H。第二行对于每个请求
k
k
k计算服务收入
R
(
k
)
R(k)
R(k),基于在时间范围内服务的预期流量和预期流量,即:
X
r
e
v
(
s
)
X_{rev}(s)
Xrev(s)对于服务
s
s
s。在第三行的算法根据
R
(
k
)
R(k)
R(k)按降序分类服务请求。然后,它为每个请求调用BSRD,以确定是否以及如何在时间范围内为其提供服务。如果可以满足请求,则结果VNF放置/CPU分配和路由决策分别存储在
R
p
\mathcal{R}_{p}
Rp和
R
r
\mathcal{R}_{r}
Rr内。对于每个已送达的请求,
R
p
\mathcal{R}_{p}
Rp 将为每个VNF实例包含一个元组,用于指定分配的VM及其分配的服务速率,而
R
r
\mathcal{R}_{r}
Rr将为每对VNF实例包含一个元组,确定其连接逻辑链路上的通信量。最后,如果尚未激活,则激活运行服务请求所需的VM;我们记得激活它们需要一个时间步(打开状态),它们将一直保持到服务离开时间。
算法2:给定服务
s
s
s服务请求
k
k
k作为输入,算法2的目标是检查
s
s
s可以使用可用资源进行部署。如果可能的话,服务请求并返回结果集
R
p
\mathcal{R}_{p}
Rp和
R
r
\mathcal{R}_{r}
Rr。全局布尔变量状态和可以回溯分别表示部署状态和回溯的可能性。如果最后一次VNF部署失败,则状态为“关键”,否则状态为“正常”。全局缓存
C
\mathcal{C}
C是一组有助于回溯操作的结果(参见Alg.3)。算法在正常模式下启动;显然,VNFFG中的第一个VNF不允许回溯,缓存
C
\mathcal{C}
C为空(第1行)。算法首先为服务的每个VNF分配一个延迟预算,该预算与VNF计算复杂度成比例(第2行),其中
Q
s
(
j
)
Q_s(j)
Qs(j)表示VNFFG中的第
j
j
j个VNF。然后,它从入口VNF开始遍历VNF序列,并逐个部署它们。
对于每个VNF,第4-11行根据部署状态决定所需的状态数和VM选择策略。策略可以是最便宜的,也可以是最大的:当策略最便宜时,算法选择成本最低的虚拟机,当策略最大时,算法选择容量最高的虚拟机。第一部分(第5-8行)将VNF部署在正常模式中。由于该算法旨在将所需的VNF实例数保持在尽可能低的水平,因此它从一个实例和最便宜的策略开始,调用VPTR来确定布局和路由,调用CA来确定CPU分配。如果这两种算法均未失败,则部署成功。如果最便宜的策略不能成功部署VNF,则该算法将保持实例数不变,并尝试最大的策略。如果两种策略都失败,则实例数将增加一个,并重复该过程。当发现成功部署(第8行)或达到最大实例数时,算法结束。
第12-22行根据部署结果、状态和回溯来决定如何按照VNF顺序进行。如果部署成功(第12行),算法将更新结果集,将状态设置为正常,并继续执行VNFFG中的下一个VNF(第14行)。回溯也在第13行中更新,这意味着只有在当前VNF在正常模式下成功部署时,才允许对下一个VNF进行回溯:这防止算法再次回溯到已在关键模式下部署的VNF。否则(第15行),状态设置为临界,算法如下。作为第一次尝试,它会尝试优化上一步中的位置。因此,如果允许回溯,它会在VNFFG中翻转与前一个VNF相关的结果集,并返回以再次部署它(第18行)。当部署失败但由于违反延迟预算而无法回溯时,算法会在结果集中保留当前部署,并继续进行下一个VNF,希望补偿超出的延迟预算(第20行)。如果两个选项都不可行,算法将决定不为当前服务请求提供服务,并恢复与其部署相关的所有结果集(第22行)。
第10-11行在状态危急时部署VNF,即之前的VNF部署失败时。当算法处于回溯阶段时,此VNF是VNFFG中的下一个VNF,或者当算法将补偿当前部署超出的延迟预算时,此VNF是前一个VNF。在任何一种情况下,算法都会选择最快的选项来部署VNF,考虑到成本,使用最大的实例数和最大的策略。最后,在第23行的每次VNF部署之后,该算法检查决策模型在数据中心容量和服务目标延迟方面的可行性。对于前者,检查每个数据中心内分配给虚拟机的总计算能力不超过其最大容量就足够了,即每个数据中心
d
d
d,
∑
μ
(
k
,
m
,
q
)
∈
R
p
:
m
∈
M
d
μ
(
k
,
m
,
q
)
⋅
w
(
q
)
≤
C
d
c
(
d
)
.
(35)
\sum_{\mu(k,m,q)\mathcal{\in\mathcal{R}}_p:{m\mathcal{\in\mathcal{M_d}}}} \mu(k,m,q)\cdot w(q)\leq C_{dc}(d).\tag{35}
μ(k,m,q)∈Rp:m∈Md∑μ(k,m,q)⋅w(q)≤Cdc(d).(35)
属于一个服务的流量包可能会在物理网络中通过不同的端到端路径,并经历不同的端到端延迟。我们定义
δ
ˉ
(
k
,
m
,
q
)
\bar\delta(k,m,q)
δˉ(k,m,q)作为属于服务请求
k
k
k从入口VNF到离开承载一个VNF
q
q
q实例的VM
m
m
m的流量数据包的最大端到端延迟。 因此,在部署服务请求
k
∈
K
s
{k\mathcal{\in\mathcal{K_s}}}
k∈Ks的VNF
q
q
q之后,检查任何虚拟机
m
m
m的延迟就足够,托管一个
q
q
q,不超过服务目标延迟:
δ
ˉ
(
k
,
m
,
q
)
≤
D
Q
o
S
(
s
)
.
(36)
\bar\delta(k,m,q)\leq D_{QoS}(s).\tag{36}
δˉ(k,m,q)≤DQoS(s).(36)
算法3:它确定请求服务范围
s
s
s请求
k
k
k的第
i
i
i个VNF的位置和流量路由,使用𝑛实例和给定的策略。第1行初始化
(
q
1
,
q
2
)
(q_1,q_2)
(q1,q2) 到服务
s
s
s的VNFFG中的第
i
i
i个VNFs对,路由结果集
R
r
{\mathcal{R}}_r
Rr到
∅
\emptyset
∅,其余的未服务的流量是
q
1
q_1
q1和
q
2
q_2
q2,即
Λ
′
\Lambda'
Λ′到
Λ
(
k
,
q
1
,
q
2
,
t
)
\Lambda(k,q_1,q_2,t)
Λ(k,q1,q2,t)。第一对VNF是
(
◦
,
q
1
)
(◦,q_1)
(◦,q1) 假设虚拟VNF
◦
◦
◦被放置在虚拟机上。在第2–3行中,首先,计算并存储每个逻辑链路
l
l
l的剩余容量并将其存储在
B
′
l
o
g
(
l
)
B′_{log}(l)
B′log(l)中,然后是剩余容量大于零的主机VNF
q
q
q在它们的源VM上,以及在它们的目标主机上没有VNF,都被拾取并存储在集合
L
t
o
p
{\mathcal{L}}_{top}
Ltop中。
L
t
o
p
{\mathcal{L}}_{top}
Ltop中的链路及其目标VM是该算法放置第
i
i
i个VNF并适应其传入流量
Λ
′
\Lambda'
Λ′。换言之,在算法的其余部分,我们考虑联合逻辑链路及其目的地VM作为一个实体,并根据策略选择最好的。如果所选实体无法适应传入流量,则放置失败;尽管如此,我们仍然在缓存中保留满意的流量,并在回溯阶段利用这些信息。
通过缓存,回溯操作的实现速度大大提高。具体来说,当在回溯阶段调用算法3来优化第
i
i
i个VNF的放置,缓存包含的结果确定了第
(
i
+
1
)
(i+1)
(i+1)个VNF的一部分传出流量到第
(
i
+
2
)
(i+2)
(i+2)个 VNF的路由,这是由之前在VNFFG中部署
(
i
+
1
)
(i+1)
(i+1)个 VNF之前所满足的。第4–6行利用缓存的结果,并通过使用不同的实例来适应传入流量的未服务部分,这有助于下一次部署第
(
i
+
1
)
(i+1)
(i+1)个VNF以充分服务其流量。例如,假设
α
(
s
,
Q
s
(
i
+
1
)
)
=
1
\alpha(s,{\mathcal{Q}}_{s}(i+1))=1
α(s,Qs(i+1))=1和第
(
i
+
1
)
(i+1)
(i+1)个VNFVNF的放置因
Λ
′
\Lambda'
Λ′未服务的通信量而失败,回溯步骤必须只容纳额外VM上的
Λ
′
\Lambda'
Λ′流量,即服务流量部分
D
(
k
,
m
,
q
2
)
∈
C
D(k,m,q_2)\mathcal{\in\mathcal{C}}
D(k,m,q2)∈C的路由和放置结果不会改变。
将根据给定策略选择逻辑链路对和连接的虚拟机进行放置和路由。如果策略是最便宜的,它们将根据逻辑链路的成本加上VM CPU成本按升序排序(第8行)。如果策略是最大的,我们将按照逻辑链路和虚拟机剩余容量的最小值(第10行)按降序对它们进行排序。第11行选择最大的顶级逻辑链路集,以便唯一目标VM的数量等于实例的数量,即
n
n
n,并将其储存在
L
t
o
p
{\mathcal{L}}_{top}
Ltop。请注意,此集合中可能有多个逻辑链路与同一目标VM,因此我们应该选择最大的集合,以增加适应流量的机会。如果唯一目标VM的数量小于
n
n
n,
L
t
o
p
{\mathcal{L}}_{top}
Ltop将为空,放置失败。否则,我们存储与集合
M
t
o
p
{\mathcal{{M}}_{top}}
Mtop中的逻辑链接
l
∈
L
t
o
p
l\mathcal{\in\mathcal{{L}}_{top}}
l∈Ltop对应的目标虚拟机(第12行)。
为了避免过高的处理时间,第13行对进入给定VM
m
∈
M
t
o
p
m\mathcal{\in\mathcal{{M}}_{top}}
m∈Mtop的流量进行了限制,与VM的最大计算能力成比例。请注意,在同一目标VM上结束的所有逻辑链接都有相同的限制。
每个选定VM的剩余计算能力,
C
′
v
m
(
m
)
C′_{vm}(m)
C′vm(m), 已初始化为其最大值
C
v
m
(
m
)
C_{vm}(m)
Cvm(m)(第14行)。该算法采用注水方法来填充第15-18行中的逻辑链接。首先,对于每个逻辑链接
l
l
l及其连接的虚拟机
d
s
t
(
l
)
dst(l)
dst(l),剩余容量,即
l
l
l和
d
s
t
(
l
)
dst(l)
dst(l)剩余容量的最小值,存储在
c
(
l
)
c(l)
c(l)(第16行)。然后是逻辑链接
l
l
l由虚拟机
s
r
c
(
l
)
src(l)
src(l)上剩余的未服务的VNF
q
1
q_1
q1传出流量填充,这样既不会违反逻辑链路
l
l
l容量的
c
(
l
)
c(l)
c(l)限制,也不会违反虚拟机
d
s
t
(
l
)
dst(l)
dst(l)传入流量的
I
^
(
k
,
m
,
q
2
)
{\hat I(k,m,q_2)}
I^(k,m,q2)限制。第18行更新来自的剩余未服务流量
q
1
q_1
q1到
q
2
q_2
q2
(
Λ
′
)
(\Lambda')
(Λ′), 逻辑链路
l
(
B
l
o
g
′
(
l
)
)
l(B'_{log}(l))
l(Blog′(l))的剩余容量,目标VM
(
C
v
m
′
(
d
s
t
(
l
)
)
)
(C'_{vm}(dst(l)))
(Cvm′(dst(l)))的剩余容量和路由结果集(
R
r
\mathcal{{R}}_{r}
Rr). 最后,如果仍然有一些来自从
q
1
q_1
q1到
q
2
q_2
q2VNF的未服务流量(也就是说,并非所有的流量都能得到服务),算法失败(第19-21行)。
第20行保留托管VNF
q
1
q_1
q1实例的VM
m
m
m的满意传出流量,即
D
(
k
,
m
,
q
1
)
D(k,m,q_1)
D(k,m,q1) ,以便以后回溯时使用。否则,算法将返回路由结果集
R
r
\mathcal{{R}}_{r}
Rr。
算法4:
当在算法3中成功部署VNF
q
q
q时,在算法2的第7行和第11行中调用它。考虑到结果集
R
r
\mathcal{{R}}_{r}
Rr,该算法负责将服务速率分配给虚拟机,以运行已部署的VNF
q
q
q实例。 初始化后,在第2行,
L
d
e
p
\mathcal{{L}}_{dep}
Ldep定义用于从任何VNF
q
1
q_1
q1实例到任何VNF
q
2
q_2
q2实例路由部分流量的逻辑链路集。我们将VNF
q
2
q_2
q2已经部署在集合
M
p
\mathcal{{M}}_{p}
Mp中的虚拟机存储起来。然后,对于每个
m
∈
M
t
o
p
m\mathcal{\in\mathcal{{M}}_{top}}
m∈Mtop,我们通过以VM结尾的所有逻辑链路的流量之和来计算传入流量,并将其存储在第5行的
I
(
k
,
m
,
q
2
)
I(k,m,q_2)
I(k,m,q2)。
δ
ˇ
(
k
,
m
,
q
2
)
\check {\delta}(k,m,q_2)
δˇ(k,m,q2)表示从入口VM到承载VNF
q
2
q_2
q2实例的VM的流量数据包在被
m
m
m处理之前经历的最大端到端延迟。对于每个逻辑链接
l
∈
L
d
e
p
l\mathcal{\in\mathcal{{L}}_{dep}}
l∈Ldep
d
s
t
(
l
)
=
m
dst(l)=m
dst(l)=m ,此延迟等于在虚拟机
s
r
c
(
l
)
src(l)
src(l)上VNF
q
1
q_1
q1处理后流量数据包的最大端到端延迟之和,即
δ
ˉ
(
q
1
,
s
r
c
(
l
)
)
\bar {\delta}(q_1,src(l))
δˉ(q1,src(l))以及逻辑链路
l
l
l的延迟即
D
l
o
g
(
l
)
D_{log}(l)
Dlog(l)。最大限度地利用所有这些逻辑链接,我们在第六行有
δ
ˇ
(
k
,
m
,
q
2
)
\check {\delta}(k,m,q_2)
δˇ(k,m,q2) 。
与算法3中的VNF部署类似,该算法根据部署状态将服务速率分配给虚拟机。在临界模式下,该算法旨在减少延迟贡献,这取决于虚拟机上的逻辑链路延迟和处理时间。VPTR算法已经选择了逻辑链路,因此这里我们为VM分配了最大可能的服务速率,以减少处理时间(第8行)。相反,当算法处于正常模式时,它会为VM
m
m
m 选择尽可能低的服务速率(第10行),以便VNF延迟预算不会违反,即:
∑
j
=
1
i
Δ
(
s
,
Q
S
(
j
)
)
−
δ
ˇ
(
k
,
m
,
q
2
)
=
1
μ
(
k
,
m
,
q
2
)
−
I
(
k
,
m
,
q
2
)
.
(37)
\sum_ {j=1}^i {\Delta(s,Q_S(j))-\check {\delta}(k,m,q_2)=\frac{1}{\mu(k,m,q_2)-I(k,m,q_2)} }.\tag{37}
j=1∑iΔ(s,QS(j))−δˇ(k,m,q2)=μ(k,m,q2)−I(k,m,q2)1.(37)
在上面的等式中,右边和左边代表VM
m
m
m的处理时间以及VNF的剩余延迟预算。为了计算后者,首先计算VNF到第
i
i
i个VNF(即当前VNF)的总延迟预算。然后,在VNF
q
2
q_2
q2处理之前,它在虚拟机上
m
m
m被流量数据包的最大端到端延迟所抵消,即
δ
ˇ
(
k
,
m
,
q
2
)
\check {\delta}(k,m,q_2)
δˇ(k,m,q2)。
VM
m
m
m的计算服务率可能无效,因为(i)没有留下延迟预算来处理VM
m
m
m上的当前VNF,即(37)中等式的左侧变为非正,或者(ii)分配的服务率超过了VM的最大容量。在这两种情况下,CA算法都会失败,但是VM被分配到其最大计算能力来处理VNF(第12行)。回想一下,虽然当前VNF的CPU分配失败,但当不允许回溯时,该算法将保留结果以用于算法2(第19行)。在这种情况下,算法将继续执行下一个VNF,并尝试补偿超出的延迟预算。第13行存储结果,第14行更新
δ
ˉ
(
k
,
m
,
q
2
)
{\bar\delta}(k,m,q_2)
δˉ(k,m,q2), 对于此VM,显示VM
m
m
m处理数据包后的最大端到端延迟。最后,当分配了所有服务速率后,如果至少有一个VM(第15行)违反了剩余的延迟预算,则算法返回失败,否则成功返回。
4.3计算复杂性
MaxSR启发式采用物理链接集
ε
\varepsilon
ε, 服务请求
K
{\mathcal{K}}
K,还有他们的VNFFG
Q
s
{\mathcal{Q_s}}
Qs, 虚拟机
M
{\mathcal{M}}
M,和逻辑链接
L
{\mathcal{L}}
L作为输入。注意
L
{\mathcal{L}}
L被认为是一个输入,因为它是为MaxSR算法的所有执行计算一次的。下面,我们证明了该算法在输入参数方面具有最坏情况下的多项式复杂性。
定理2:MaxSR算法具有最坏情况下的多项式计算复杂度。
证明:首先,我们确定VPTR和CA算法的复杂性。VPTR构造并排序在
O
(
∣
L
∣
log
∣
L
∣
)
O(|\mathcal{L}|\log|\mathcal{L}|)
O(∣L∣log∣L∣)中的集合
L
′
\mathcal{L'}
L′,在
O
(
L
)
O(\mathcal{L})
O(L)的逻辑链路采用注水填充,因此该算法的总时间复杂度为
O
(
∣
L
∣
log
∣
L
∣
)
O(|\mathcal{L}|\log|\mathcal{L}|)
O(∣L∣log∣L∣)。CA也有
O
(
L
)
O(\mathcal{L})
O(L)复杂度,因此VPTR和CA的总计算复杂度与VPTR相同。算法1在
O
(
∣
K
∣
log
∣
K
∣
)
O(|\mathcal{K}|\log|\mathcal{K}|)
O(∣K∣log∣K∣)中对服务请求进行排序,并为每个服务请求调用BSRD。在最坏的情况下,BSRD会为给定服务请求的VNFFG中的所有VNF尝试所有可能数量的实例和策略。让
N
N
N 和
Q
Q
Q 分别是VNFFG中最大实例数(即
N
(
s
,
q
)
,
∀
s
∈
S
,
q
∈
Q
N(s,q),\forall s\mathcal{\in\mathcal{{S}}},q\mathcal{\in\mathcal{{Q}}}
N(s,q),∀s∈S,q∈Q)和VNF数(即
∣
Q
s
∣
,
∀
s
∈
S
{ |\mathcal{Q_s}|},\forall s\mathcal{\in\mathcal{{S}}}
∣Qs∣,∀s∈S)的上界。因此,BSRD的总时间复杂度等于
O
(
N
Q
∣
L
∣
log
∣
L
∣
)
O(NQ|\mathcal{L}|\log|\mathcal{L}|)
O(NQ∣L∣log∣L∣),算法1的总时间复杂度
O
(
∣
K
∣
N
Q
∣
L
∣
log
∣
L
∣
+
∣
K
∣
log
∣
K
∣
)
O(|\mathcal{K}|NQ|\mathcal{L}|\log|\mathcal{L}|+|\mathcal{K}|\log|\mathcal{K}|)
O(∣K∣NQ∣L∣log∣L∣+∣K∣log∣K∣)。因此,最坏情况下的总时间复杂度是输入参数的多项式。换句话说,启发式的复杂性主要取决于服务请求的数量、每个VNFFG中的VNF数量、每个VNF的部署尝试次数以及逻辑链路的数量。
5.数值结果
现在,我们给出了我们进行的数值实验的结果,并表明所提出的方案始终优于最新的方法,并且与最佳方案非常匹配。我们以众所周知的最佳拟合方法为基准,因为许多最先进的作品(例如[5,8,15,18])都遵循这一点。我们将我们的启发式算法与以下基准进行比较:
- 全局最优。第3.2节中定义的优化问题的解决方案通过蛮力搜索获得,假设所有服务请求的到达和离开时间的准确知识。
- 最佳匹配。它是一种在线算法,在每个服务请求到达时决定其内容,而不提供任何关于未来服务请求的信息。最佳匹配使用每个VNF的单个实例和最便宜的策略,逐个部署服务请求的VNF。如果请求可以得到满足,则所选资源将专用于该服务请求,直到其离开。
在我们的绩效评估中,我们使用以下绩效指标:
- 服务收入,定义为通过服务请求实现的收入之和。只需一次服务请求 s s s, 该指标等于服务流量乘以 X r e v ( s ) X_{rev}(s) Xrev(s)。
- 成本/流量,反映为一个单位的流量提供服务所产生的平均成本。
在下文中,我们首先考虑一个小规模的网络场景,在合理的时间内可以获得最优解。该场景将提供有趣且易于解释的见解,以了解每种服务类型如何影响收入和成本/流量比。然后,我们在大规模实际网络场景中运行MaxSR和最佳匹配,在这种场景中,实现最佳解决方案是不切实际的。表3总结了我们为我们的性能评估考虑的服务,激励到真实世界的5G应用程序。从服务一个服务
s
s
s单元获得的收入,即
X
r
e
v
(
s
)
X_{rev}(s)
Xrev(s),与服务目标延迟成反比。我们假设服务请求按照泊松过程到达,请求的持续时间服从指数分布。
在这两种情况下,我们通过将流量到达率
λ
n
e
w
\lambda _{new}
λnew和物理链路延迟
D
p
h
y
(
e
)
D_{phy}(e)
Dphy(e)乘以不同的因素来研究流量和延迟对性能指标的影响。我们将每个实验进行50次,并报告图中每个点的平均值。一般来说,MaxSR利用回溯,比最佳拟合更好地接近最佳服务收入。然而,成本/流量比的值取决于目标延迟的严格程度。当目标延迟很小时,回溯的机会增加;因此,MaxSR需要更多的成本来满足这些请求。
5.1.小规模
我们考虑两对不同类型的虚拟机,即表4中描述的小和中型。内部的虚拟机对使用物理链路连接:小型和中型虚拟机之间的物理链路每小时的成本分别为0.02e/Gb和0.04e/Gb,而它们的延迟从1毫秒到7毫秒不等,默认值设置为2毫秒,我们不考虑链路容量。设置虚拟机所需的时间为一分钟。
我们考虑两种简单的服务
s
1
s _1
s1和
s
2
s_2
s2,每个都有一个由两个VNF组成的链,目标延迟为10毫秒和45毫秒,输入流量率分别为3Mb/s和15Mb/s(如表3所示)。在这个场景中,我们设置对于所有VNF
N
(
s
,
q
)
=
1
N(s,q)=1
N(s,q)=1,每个服务的平均持续时间为3分钟,我们将它们随机分配到泊松过程的到达点,平均速率为每分钟0.5个请求,而总系统寿命设置为10分钟。
到达流量和物理链路延迟的影响。图2显示了交通到达强度对服务收入和成本/交通率的影响。MaxSR匹配最佳,Best-Fit在服务收入和成本/流量比方面都接近最佳。由于它没有回溯机制,所以当任何VNF不能在其延迟预算内提供时,Best-Fit不会提供请求,即它没有预算灵活性;因此,它获得的服务收入低于最佳水平。虽然物理链路的成本与流量成比例增加,但在开启模式下虚拟机的成本保持不变,而在活动模式下虚拟机的成本与流量成比例增加的幅度较小;由此产生的影响是,成本/流量比随着流量的增加而降低,这符合服务更多流量更具成本效益的直观概念。与MaxSR和最佳条件相比,Best-Fit的成本更高,因为它不支持VNF迁移,导致VNF在高成本VM上继续运行,即使低成本VM可用。超额虚拟机的CPU成本和传输成本随着流量的增加而增加,超额虚拟机的空闲成本保持不变;因此,随着流量的增加,Best-Fit和最佳拟合之间的差异变小。
图3显示了物理链路延迟对服务收入和成本/流量比的影响。对于所有延迟值,MaxSR仍然能够实现最佳服务收入。如图4a所示,当物理链路延迟为3毫秒时,没有任何策略(甚至不是最优的)可以服务于所有请求,尤其是对于服务
s
2
s_2
s2。原因是,当并发请求的数量超过两个时,最优和MaxSR都将优先权给予高收入服务
s
1
s_1
s1和请求
s
2
s_2
s2,只有在资源可用时才会处理。当物理链路延迟增加时,服务请求需要虚拟机上更多的计算能力来满足其目标延迟,以抵消更长的网络延迟。具体而言,当物理链路延迟为7毫秒时,类型
s
1
s_1
s1的请求只能在高容量VM上提供服务,因此,无法提供此类并发请求。这通过图3a和图4b中的最优值的降低得到了证实,其中,当物理链路延迟为7毫秒时,
s
1
s_1
s1类型服务请求的分数小于1。
与其他服务相比,Best-Fit获得了更低的服务收入,尤其是在物理链路延迟值更高的情况下。如图4b所示,这是因为在这些情况下,Best-Fit无法部署
s
1
s_1
s1类型的请求。这反过来是因为它不支持回溯:当违反了
s
1
s_1
s1链中第二个VNF的延迟预算时,不会采取纠正措施,整个请求都会失败。
结果表明,当物理链路延迟超过4毫秒时,MaxSR的成本/流量比更高。原因是回溯的需求随着物理链路延迟的增加而增加,虚拟机更有可能被扩展到其最大容量,从而导致更高的成本。正如人们可能期望的那样,当物理链路延迟时,最佳拟合的成本/流量比降低≥4毫秒,因为它不服务于成本较高的服务请求
s
1
s_1
s1。回想一下,服务的成本取决于虚拟机上所需CPU的数量,因此目标延迟较低的服务为一个单位的流量服务的成本较高。
5.2.大规模
我们考虑真实世界的数据中心网络协作,一个互联网服务提供商(图5)。该网络拓扑包含197个接入节点,245个物理链路和32个数据中心。我们将连接数据中心的链路成本设置为0.02e/GB。连接数据中心的逻辑链路的延迟被设置为与其地理长度成比例,而每个数据中心内的链路被认为是理想的,没有容量限制、延迟和成本。我们假设每个数据中心承载42个虚拟机,每个虚拟机都连接到一些边缘交换机。我们根据容量和成本将每个数据中心内的虚拟机分为小型、中型和大型类型,如表4所示。我们假设虚拟机在激活前需要一分钟进行设置。
我们考虑表3中描述的四种不同的服务,每一种服务是真实5G应用的一类的代表。在这个场景中,我们假设每个服务的VNFFG是五个VNF链。我们进一步假设服务
s
4
s_4
s4的两个VNF的计算复杂度即:
w
w
w 和最大实例数即:
N
(
s
,
q
)
N(s,q)
N(s,q)是三个,而其他VNF的计算复杂度
w
=
1
w=1
w=1和最大实例数
N
(
s
,
q
)
=
1
N(s,q)=1
N(s,q)=1。与前面的情况类似,我们考虑请求次数相等的请求,其中请求跨越时间步长到达,平均到达时间为三分钟,在平均持续时间为2小时之后结束,并且假定总系统寿命为一天。在这个实验中,我们设置
H
H
H到40分钟,
τ
\tau
τ到20分钟。
到达流量和物理链路延迟的影响。如上所述,无法在合理的时间内获得该场景的最佳值,因此我们依赖于MaxSR和最佳拟合的结果。图6a显示了到达流量对服务收入的影响,而图7显示了每个服务的请求中可以成功部署的部分。我们观察到,MaxSR的服务收入几乎与流量成比例地变化,因为增加流量几乎不会影响该算法服务请求的比例。Best-Fit服务的服务请求比例较低,因此收入较低。此外,当到达流量乘数为1.6时,Best-Fit显示服务收入下降:如图7b所示,这是因为当流量乘数超过1.6时,Best-Fit不支持高流量服务
s
4
s_4
s4的请求,因为它不支持多个VNF实例。
图6b显示到达流量对成本/流量比的影响。当到达流量乘数小于1.4时,Best-Fit具有更低的成本/流量比,因为MaxSR必须使用更高成本和更高计算能力的资源来服务更多的服务请求;换句话说,Best-Fit服务的流量较少,但服务的成本较低。与服务收入类似,当到达交通乘数为1.6时,Best-Fit的成本/交通比值显著上升,如图8所示,当交通乘数从1.0增加到1.6时,Best-Fit不再能够服务总交通量的很大一部分。如图7所示,业务最佳匹配无法服务主要属于低成本服务
s
4
s_4
s4,这导致服务业务的成本较高。
图9a显示了物理链路延迟对服务收入的影响。与小规模场景类似,MaxSR优于Best-Fit,尤其是在物理链路延迟值较高的情况下,因为后者无法以较低的目标延迟(因此收入较高)服务请求。由于这些服务类型的成本较高,它们也会导致最佳拟合的成本/流量比低于图9b所示的最大值(参见图10)。
5.3.运行时间
我们使用一台具有40核Intel Xeon E5-2690 v2 3.00 GHz CPU和64 GB内存的服务器来运行我们的实验。为了比较不同算法的运行时间,我们考虑到达业务和物理链路延迟乘法器等于1的情况。对于每个场景,我们运行算法50次,并在表5中报告平均运行时间。在小规模场景中,MaxSR和Best-Fit的速度远远快于蛮力。蛮力的运行时间长得让人望而却步,这突出了它的可扩展性差,使得它在实践中不适用于大规模场景。大规模场景的结果表明,虽然由于回溯,与Best-Fit相比,MaxSR具有更高的运行时间,但对于大规模网络而言,两者都是可扩展的,且速度足够快。
6.讨论
在本节中,我们将讨论MAXSR算法的适用性和可扩展性。
适用性。MaxSR解决方案基于这样一个假设,即将到来的服务请求的知识在不久的将来是可用的。然而,在一些实际场景中,请求的到达时间和服务类型事先是未知的。因此,我们需要根据之前的网络统计数据对其进行预测。关于交通预测的广泛相关工作[27–36]证实了未来交通的高质量预测是存在的。特别是,通过利用深度学习[29–36],预测正朝着更准确、更可靠的方向发展,预测技术的进一步改进目前正在研究中。特别是,He等人[31]提出了一种高效的基于深度学习的解决方案,用于在短时间内预测用户级别的网络流量,该解决方案动态地适应高度变化的数据流量,性能非常接近oracle的情况。因此,可以合理地提前估计短时间内即将到来的服务请求。
可伸缩性。如第4.3节所示,MaxSR算法具有最坏情况下的多项式计算复杂度,其可扩展性在前一节中报告的运行时间中得到了高度重视。重要的是要强调如何在不诉诸分布式解决方案(例如[8])的情况下实现这种可伸缩性,这代表了一种改变的本机策略,以实现可伸缩性和短运行时间,同时以不同决策者可能会发生冲突的决策为代价。
7.结论
我们提出了5G网络中的动态服务部署策略,考虑了虚拟机设置时间等现实世界方面,并共同做出所有必要的决策。我们首先将联合请求接纳、VM激活、VNF放置、资源分配和流量路由问题描述为一个基于请求到达和离开时间的完整知识的MINLP。我们以MNO利润为主要目标,在整个系统生命周期内进行优化,利用排队模型确保所有请求遵守其延迟目标。我们的模型还考虑了5G服务的关键特性,如复杂的VNF图和任意输入流量。
由于问题的复杂性,我们进一步提出了一种启发式算法MaxSR,它具有多项式复杂性,可以获得接近最优的解,同时只需要在短时间内了解/预测即将到来的服务请求。该算法以倾斜地平线的方式工作,在现有虚拟机上重新排列当前服务的请求,以降低部署成本,并在新请求到达系统时接纳它们。此外,MAXSR的参数允许在解决方案最优性和运行时间之间进行不同的权衡。我们通过包括不同网络场景的数值评估,证明了我们方法的有效性和效率。