Research on Concurrent Transmission Control of Heterogeneous Wireless Links Based on Adaptive Network Coding
-
摘要: 随着高清视频直播、虚拟现实等高速率业务不断兴起,单一的网络很难满足用户的业务需求。利用多种异构链路实现并发传输,可以有效聚合带宽资源,提高服务质量。但是,在异构无线网络中,由于链路状况复杂多变,多条链路质量不一,现有的多路径并发传输算法并不能自适应地根据复杂的网络状况做出最优的决策。该文提出了一种自适应网络编码的多路径并发传输控制算法,引入Asynchronous Advantage Actor-Critic(A3C)强化学习,通过自适应的网络编码,根据当前网络状况智能地选择编码分组大小和冗余大小,从而解决数据包的乱序问题。仿真结果表明,该算法能够提高10%左右的传输速率,提升了用户体验。Abstract: With the continuous rise of high-speed services such as high-definition video live broadcast and virtual reality, it is difficult for a single network to meet the business needs of users. Using a variety of heterogeneous links to achieve concurrent transmission can effectively aggregate bandwidth resources and improve the quality of service. However, in heterogeneous wireless networks, due to the complex link conditions and the different quality of multiple links, the existing multi-path concurrent transmission algorithms can not make the optimal decision adaptively according to the complex network conditions. In this paper, a multi-path concurrent transmission control algorithm based on adaptive network coding is proposed. The Asynchronous Advanced Actor Critical (A3C) reinforcement learning is introduced. Through adaptive network coding, the coding packet size and redundancy size can be intelligently selected according to the current network conditions, so as to solve the problem of disordered packet. Simulation results show that the algorithm can improve the transmission rate by about 10% and improve the user experience.
-
Key words:
- Wireless network /
- Concurrent transmission /
- Network coding /
- Reinforcement learning
-
1. 引言
随着超高清视频直播、无人驾驶、虚拟现实等高速率业务的不断兴起,人们对带宽、时延的要求不断提高。利用多种异构网络实现并发传输成为一种有效的解决方案,该方案已经成为目前的研究热点。一方面,未来的网络将是5G,4G,Wifi等多种网络共存的异构网络,任何单一的网络将无法随时随地满足用户高速率业务需求,文献[1]对5G网络中异构网络应用场景以及未来的研究趋势进行了讨论。另一方面,随着智能硬件的不断普及,越来越多的终端设备配备有多种类型的网络接口,使得一个用户终端同时具有访问目标通信节点的多条链路,实现多路径并行传输,极大地提高传输速率。
多路径并行传输在有线网络中的应用已经相对成熟。然而,在无线网络环境中,由于无线链路本身具有动态性和不可靠性,加上终端的移动性导致无线网络状况复杂多变,多路径传输不可避免地会产生队头阻塞、缓冲区拥塞、不必要的快速重传、接收乱序等现象,严重影响了传输效率,降低传输性能。
目前已有大量文献深入研究了多路径传输问题[2-10]。多路径并行传输可以在应用层、传输层、网络层等网络协议栈的各个层面实施。目前研究较多的主要是在传输层实现,而现有的传输层协议并不支持多路径传输,因此需要对现有的传输协议进行扩展,其中较为典型的是对TCP及流控制传输协议SCTP(Stream Control Transmission Protocol)[11]的扩展。目前主要的改进版本有pTCP(parallel TCP)[12], mTCP(TCP on multicore system)[13], MPTCP(MultiPath TCP)[14]等。基于扩展的传输协议,大量文献针对无线网络场景下不同业务需求进行了研究,提出了各种不同的算法。文献[2]针对异构无线网络环境,使用SCTP进行多宿主高清视频通信,在多个无线接入网络进行单个高清视频流的端到端传输。文献[3]提出了一种新颖的质量感知自适应并发多路径传输解决方案CMT-QA,通过实时感知多路径的通信状态,根据路径处理能力的不同,将SCTP数据包分发到不同路径上。文献[4]提出了一种基于软件定义网络的分段路由多径传输方案以满足实时交互式多媒体业务对带宽和低端到端传输时延的要求。文献[5]建立了路径吞吐量与不同丢包率和延迟的拟合关系,并提出了路径加权算法CMT-PW。
针对数据包乱序问题,将网络编码和多路径传输相结合,可以有效解决接收端数据包乱序问题。文献[6]针对异构车联网场景提出了一种BigNum网络编码方案,该编码方案在编码灵活性和编解码效率之间有了更好的折中。文献[7]提出了一种网络编码感知的多路径路由协议NCAnt,通过最大化重编码机会实现可靠的端到端传输。文献[8]提出了一种基于网络编码的多路径并发传输解决方案CMT-NC,该方案避免了数据重新排序以减轻缓冲区阻塞,但编码时延较大。文献[9]针对传统网络编码的缺点,提出了一种新颖的基于管道网络编码的MPTCP-PNC,但是该方案中分组大小的确定并不能根据网络状况实时动态调整。文献[10]提出了一种基于强化学习的多路径拥塞控制方法SmartCC,该算法采用异步强化学习框架学习拥塞规则,发送方通过观察环境来自适应地调整子流的拥塞窗口,但是该方案并不能解决数据包乱序问题。
从以上文献可以看出,现有的研究主要通过数据包的合理调度和拥塞控制来解决数据包的乱序问题,但是只能减少数据包乱序,并不能从根本上解决乱序问题。因此,本文将强化学习和网络编码相结合,采用网络编码技术打破数据包序列号和交付顺序之间的强约束关系,基于强化学习,通过与环境交互,学习出最优的网络编码策略,从而解决了异构无线链路多路径传输存在的乱序问题,有效提升系统吞吐量。
2. 系统模型
本文的系统架构如图1所示,分为发送端、异构无线网络环境和接收端3个部分。主要包含以下5个模块:强化学习模块、数据包分组模块、网络编码模块、基于路径质量分发模块以及网络解码模块。其中,强化学习模块主要用于获取最优的编码策略;数据包分组模块基于强化学习模块的结果对数据包进行分组;网络编码模块对数据包进行网络编码;基于路径质量分发模块根据路径的网络状况将编码数据包分发到路径缓存中,通过多路径异构无线网络环境,将数据包发送到接收端;网络解码模块对接收的数据包进行解码,解码完成后递交上层应用。
3. 基于Asynchronous Advantage Actor-critic(A3C)的自适应传输控制算法
3.1 A3C算法
强化学习通过智能体与环境不断地交互学习出最优的策略,已经被用于解决各种各样的问题。本文采用表现非常优异的异步强化学习算法A3C[15]算法,该算法通过异步学习框架,每个智能体和环境交互,分别计算神经网络损失函数的梯度,然后更新公共的神经网络。同时,智能体每隔一段时间从公共神经网络获取参数,指导自己与环境的交互过程。通过多个智能体不断地与环境交互,使得模型收敛更加迅速。
如图2所示,发送方根据当前的网络状态
St ,运行A3C算法,算法会根据神经网络的输出选择一个动作at ,执行动作at 后,基于状态转移概率,网络状态由St 变为St+1 。同时,环境会基于定义的奖励函数产生一个奖励值rt ,以衡量执行动作at 的好坏。St+1 和rt 被一同反馈到决策代理,以进行下一次的决策。(1)状态集
网络环境的状态是决策的依据。为了决策出编码分组大小
N 和冗余大小R ,需要获取当前每条路径的状态信息。本文状态集St 定义为St={Bwt,Buft,(N,R),T,Tt,Plt} (1) 其中,
Bwt={Bwt,1,Bwt,2,⋯,Bwt,I} ,Bwt,i 表示t 时刻路径i 的平均带宽大小;Buft 表示t 时刻视频缓冲时间大小;(N,R) 表示前一时刻选择的N 和R ;T 表示当前分组传输时延;Tt={Tt,1,Tt,2,⋯,Tt,I} ,其中Tt,i 表示t 时刻路径i 的下载时延;Plt={Plt,1,Plt,2,⋯,Plt,I} ,Plt,i 表示t 时刻路径i 的丢包率,以上定义中,I(1≤i≤I) 表示链路总数。(2)动作集
在本文中,强化学习的动作定义为:
at={N,R} ,其中N 表示编码分组大小,R 表示冗余数据包大小,N 和R 为整数值。(3)状态转移概率
在执行动作
at 后,环境状态由St 转移到St+1 的概率称为状态转移概率。由于强化学习任务具有马尔可夫特性,即下一时刻的状态只由当前时刻的状态决定,因此,状态转移概率PatSt→St+1 可表示为PatSt→St+1=P(St+1|at,St) (2) (4)奖励函数
执行动作
at 后,强化学习环境会反馈一个奖励值rt ,以衡量动作at 执行的好坏。本文以视频传输为背景,目标是使得视频传输的吞吐量最大化。因此,本文奖励函数rt 定义为rt=log2(I∑i=1Bwi×Tt,i)−α2(1+e(−rebuf))−1−βlog2(T)−λB (3) 其中,第1项
log2(∑Ii=1Bwi×Tt,i) 表示最大化吞吐量;第2项中α 表示重新缓冲的惩罚因子,rebuf表示重新缓冲的时间;第3项中β 表示时延惩罚因子,其中T=max 表示当前分组传输时延;第4项中\lambda 表示缓冲区惩罚因子,其中B = \left\{ \begin{aligned} & {({{1}} - \theta )({{\rm Buf}_t} - {B_2}),{{\rm Buf}_t} > {B_2}} \\ & \quad {0,{B_1} \le {{\rm Buf}_t} \le {B_2}} \\ & {\theta ({B_1} - {{\rm Buf}_t}),{{\rm Buf}_t} < {B_1}} \end{aligned} \right. (4) 其中,
{B_1} ,{B_2} 是缓冲区上下限阈值,\theta (0 \le \theta \le 1) 为缓冲区调节因子。3.2 基于A3C的自适应编码决策
在强化学习中,智能体需要通过不断的尝试来学习策略
\pi ,即在当前状态{S_t} 下,执行动作{a_t} 的概率为\pi ({a_t}|{S_t}) \in [0,1] 。策略的更新主要依赖状态值函数{V^{\pi} }({S_t}) ,状态值函数{V^{\pi} }({S_t}) 即在状态{S_t} 下,执行策略\pi 所带来的长期累计奖赏,其基于折扣奖赏的值函数可表示为V_\gamma ^{\pi} ({S_t}) = {E_{\pi} }\left[\sum\nolimits_{t = 0}^\infty {{\gamma ^t}{r_t}|{S_0} = {S_t}} \right] (5) 其中,
\gamma (0 < \gamma \le 1) 表示折扣因子。传统的Actor-Critic算法运行两张卷积神经网络(Convolutional Neural Networks, CNN),即Actor网络和Critic网络,利用非线性函数拟合的方式,分别产生策略
\pi 和值函数V ,即\pi ({a_t}|{S_t}) \approx \pi ({a_t}|{S_t};{\theta _a}) 和{V_\gamma }({S_t}) \approx {V_\gamma }({S_t};{\theta _c}) ,其中{\theta _a} 和{\theta _c} 分别表示Actor网络和Critic网络的神经网络参数。Critic网络的作用是对Actor网络产生的策略进行评估,辅助Actor网络更新参数,但Actor-Critic算法无法去除样本间的相关性,导致神经网络很难收敛。而A3C算法采用多线程的异步学习架构,可以大大加快神经网络的收敛速度。在A3C算法中,Critic网络采用基于时序差分(Temporal Difference, TD)的梯度下降法来更新网络参数
{\theta _c} ,即\begin{split} & {\theta _c} \leftarrow {\theta _c} - a\sum\limits_t {\nabla _{{\theta _c}}}({r_t} + \gamma V_\gamma ^{\pi ({\theta _a})}({S_{t + 1}};{\theta _c}) \\ & \quad - V_\gamma ^{\pi ({\theta _a})}({S_t};{\theta _c}))^2 \end{split} (6) 其中,
a 表示Critic网络的更新步长。{r_t} + \gamma V_\gamma ^{\pi ({\theta _a})} ({S_{t + 1}};{\theta _c}) - V_\gamma ^{\pi ({\theta _a})}({S_t};{\theta _c}) 表示TD误差。Actor网络采用基于优势函数的梯度上升法来更新网络参数{\theta _a} ,即\begin{split} & {\theta _a} \leftarrow {\theta _a} + w\sum\nolimits_t {\nabla _{{\theta _a}}}{{\log }_2}\pi ({a_t}|{S_t};{\theta _a}){A^{\pi ({\theta _a})}}({a_t}|{S_t};{\theta _c}) \\ & \quad + \varphi {\nabla _{{\theta _a}}}H(\pi ({a_t}|{S_t};{\theta _a}))\\[-10pt] \end{split} (7) 其中,
w 表示Actor网络的更新步长。{A^{\pi ({\theta _a})}}({a_t}|{S_t};{\theta _c}) 表示优势函数,即运用策略\pi ({\theta _a}) 所获奖励与预期奖励的差值。由于Critic网络的目的是输出值函数,以评估Actor网络产生的策略。因此,将TD误差作为优势函数的估计,即{A^{\pi ({\theta _a})}}({a_t}|{S_t};{\theta _c}) \approx {r_t} + \gamma V_\gamma ^{\pi ({\theta _a})} - \gamma V_\gamma ^{\pi ({\theta _a})}({S_t};{\theta _c}) 。H(\cdot ) 表示正则化熵值,以保证决策代理充分地探索环境空间。\varphi 表示熵的系数,开始时设置为较大的值,使得Actor网络的参数随熵值增大的方向改变。具体的算法步骤如表1所示。
表 1 基于A3C的自适应编码决策算法(算法1)输入:全局代理的网络参数{\theta _c}和{\theta _a},全局迭代次数m,全局最大
的迭代次数M输出:迭代后的网络参数{\theta _c}和{\theta _a} 1:初始化时间t = 0 2:repeat 3: (1) 初始化起始状态{S_t} = {S_0} 4: (2) 初始化网络参数增量{\rm{d}}{\theta _c} = 0,{\rm{d}}{\theta _a} = 0 5: (3) 将全局代理的网络参数赋值给局部代理\theta _c' = {\theta _c},\theta _a' = {\theta _a} 6: (4) for t = 1,2, \cdots ,T do 7: (a) 基于策略 \pi ({a}_{t}|{S}_{t};{\theta }_{a}^{\text{'}}) ,执行动作{a_t} 8: (b) 从视频播放环境中获得奖励值{r_t}和新的状态{S_{t + 1}} 9: (c) t\leftarrow t+1,m\leftarrow m+1 10: end for 11: (5) 计算状态{S_T}的值函数V_\gamma ^{\pi (\theta _a^,)}({S_T};\theta _c') 12: (6) for i=T,T-1,\cdots ,1 do 13: (a)更新 {\theta }_{a} 的增量 14: {\rm{d}}{\theta }_{a}\leftarrow {\rm{d}}{\theta }_{a}+{\nabla }_{ {\theta }_{a}^{,} }{\mathrm{log} }_{ {}_{2} }\pi ({a}_{i}|{S}_{i};{\theta }_{a}^{\text{'} }){A}^{\pi ({\theta }_{c}^{\text{'} })}
+\varphi {\nabla }_{{\theta }_{a}^{\text{'}}}H(\pi ({a}_{i}|{S}_{i};{\theta }_{a}^{\text{'}}))15: (b)更新{\theta _c}的增量 16: {\rm{d}}{\theta _c} \leftarrow {\rm{d}}{\theta _c} + {\nabla _{\theta _c'} }{({r_i} + \gamma V_\gamma ^{\pi (\theta _a')}({S_{i + 1} };\theta _c')}
- V_\gamma ^{\pi (\theta _a')}({S_i};\theta _c'))^217: end for 18: (7) 更新全局代理的网络参数 19:until m > {{M} } 由上述算法步骤可知,A3C算法的时间复杂度主要来源于Actor网络的复杂度
O({T}_{a}) 、Critic网络的复杂度O({T_c}) 、视频块的个数N 、局部代理的个数l 以及迭代的总次数M 。因此,A3C算法的时间复杂度可表示为O((MN{T}_{a}+M{T}_{c})/l) ,而传统的Actor-Critic算法的时间复杂度为O(MN{T}_{a}+ M{T}_{c}) 。对比可知,A3C算法的时间复杂度较低,因为A3C算法采用了多线程异步学习架构,可以大大加快训练的速度。3.3 自适应网络编码算法
网络编码最基本的编码方式是对原始数据包进行线性组合。假设源节点有
K 个大小相同的数据包{{{P}}}_{1},{{{P}}}_{2},\cdots ,{{{P}}}_{K{\rm{}}} ,则采用线性编码方式得到的编码数据包为{{{P}}}_{ek}={{\rm{c}}}_{1}{{P}}_{1}\oplus {{\rm{c}}}_{2}{{{P}}}_{2}\cdots \oplus {{\rm{c}}}_{{\rm{K}}}{{{P}}}_{{\rm{K}}} (8) 其中,
{c}_{k}(1\le k\le K) 表示编码系数,\oplus 表示异或运算符,{P}_{ek} 表示编码数据包。发送方编码公式为\left[ {\begin{array}{*{20}{c}} {{c_{11}}} \\ {{c_{21}}} \\ \vdots \\ {{c_{{{K}}1}}} \end{array}\begin{array}{*{20}{c}} {{c_{12}}} \\ {{c_{22}}} \\ \vdots \\ {{c_{{{K}}2}}} \end{array}\begin{array}{*{20}{c}} \cdots \\ \cdots \\ \ddots \\ \cdots \end{array}\begin{array}{*{20}{c}} {{c_{1{{K}}}}} \\ {{c_{2{{K}}}}} \\ \vdots \\ {{c_{{{KK}}}}} \end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{{{P}}_1}} \\ {{{{P}}_2}} \\ \vdots \\ {{{{P}}_{\rm{K}}}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {{{{P}}_{{{e}}1}}} \\ {{{{P}}_{{{e}}2}}} \\ \vdots \\ {{{{P}}_{{{eK}}}}} \end{array}} \right] (9) 其中,
{c}_{11},{c}_{12},\cdots ,{c}_{{{KK}}} 表示编码系数,左边的系数矩阵为编码矩阵,{P}_{1},{{{P}}}_{2},\cdots ,{{{P}}}_{{{K}}} 表示原始数据包,{{{P}}}_{{\rm{e}}1},{{{P}}}_{{\rm{e}}2},\cdots ,{{{P}}}_{{\rm{eK}}} 表示编码完成的数据包。为了保证接收方能够解码出原始数据包,编码矩阵每一行之间需要保证线性无关,接收方解码公式为\left[ {\begin{array}{*{20}{c}} {{{{P}}_1}} \\ {{{{P}}_2}} \\ \vdots \\ {{{{P}}_{{K}}}} \end{array}} \right] = {\left[ {\begin{array}{*{20}{c}} {{c_{11}}} \\ {{c_{21}}} \\ \vdots \\ {{c_{{{K}}1}}} \end{array}\begin{array}{*{20}{c}} {{c_{12}}} \\ {{c_{22}}} \\ \vdots \\ {{c_{{{K}}2}}} \end{array}\begin{array}{*{20}{c}} \cdots \\ \cdots \\ \ddots \\ \cdots \end{array}\begin{array}{*{20}{c}} {{c_{1{{K}}}}} \\ {{c_{2{{K}}}}} \\ \vdots \\ {{c_{{{KK}}}}} \end{array}} \right]^{ - 1}}\left[ {\begin{array}{*{20}{c}} {{{{P}}_{{{e}}1}}} \\ {{{{P}}_{{{e}}2}}} \\ \vdots \\ {{{{P}}_{{{eK}}}}} \end{array}} \right] (10) 管道网络编码[9]采用“从一到全部”的渐进编码策略对数据包进行线性编码,编码矩阵是一个下三角矩阵。而管道网络编码分组大小和冗余大小的确定是根据网络参数值计算得出的,在网络参数值测量估计不准确的情况下,所得结果并不是最优,且实时性不足。本文在管道网络编码的基础上提出了自适应网络编码方案,首先根据强化学习模块获取的
N 和R 值,网络编码模块对接收到的数据包进行网络编码,遵循“从一到全部”的渐进编码策略。在发送方和接收方约定编码矩阵,编码系数不需要携带在数据包中,以减轻编码数据包的大小,节省带宽资源。同时,在数据包中设置了不同的标志位,以区分该数据包是编码数据包还是冗余编码包,根据不同的标志从对应的矩阵选择编解码系数。由于编码分组的大小N 和分组内冗余数据包大小R 是由强化学习模块根据网络状况学习出的最优策略,所以该编码方案是一种自适应的网络编码方案。如图3所示,
{{G}}k 表示第k 个分组,{{P}}k 表示第k 个原始数据包,{{C}}k 表示编码完成的第k 个数据包。对于编码分组{{G}}1 ,编码分组大小N = 3 ,冗余大小R=1 ,表示将3个数据包作为1组进行编码,同时还需要一个冗余包{{C}}3 (图中深灰色表示)。假设数据包{{C}}3 在传输过程中由于网络原因造成数据包丢失,由于在发送端增加了冗余包C3 ,接收端仍可以恢复原始数据包,从而有效避免数据包的重传。同时,对于接收方来说,即使数据包乱序到达,只要收到足够数量的数据包即以可恢复原始的数据包,而不关心数据包的序列号。因此,网络编码打破了数据包序列号和交付顺序之间的强约束关系。本文采用的数据包编码矩阵{{\boldsymbol{C}}_{\boldsymbol{p}}} 以及冗余数据包编码矩阵{{\boldsymbol{C}}_{\boldsymbol{r}}} 定义为{{\boldsymbol{C}}_{\boldsymbol{p}}} = \left[ {\begin{array}{*{20}{c}} 1&0&0 &0& \cdots &0 \\ {{{{C}}_{21}}}&1&0 & 0& \cdots &0 \\ {{{{C}}_{31}}}&{{{{C}}_{32}}}&1 & 0& \cdots &0 \\ {{{{C}}_{41}}}&{{{{C}}_{42}}}&{{{{C}}_{43}}}& 1& \cdots &0 \\ \vdots & \vdots & \vdots &\vdots & \ddots & \vdots \\ {{{{C}}_{{{N}}1}}}&{{{{C}}_{{{N}}2}}}&{{{{C}}_{{{N}}3}}}&\cdots &{{{{C}}_{{{NN}} - 1}}}&1 \end{array}} \right] (11) {{\boldsymbol{C}}_{\boldsymbol{r}}} = \left[ {\begin{array}{*{20}{c}} {{{{C}}_{11}}}&{{{{C}}_{12}}}&{{{{C}}_{13}}} &{{{{C}}_{14}}}& \cdots &{{{{C}}_{1{{N}}}}} \\ {{{{C}}_{21}}}&{{{{C}}_{22}}}&{{{{C}}_{23}}} & {{{{C}}_{24}}}& \cdots &{{{{C}}_{2{{N}}}}}\\ {{{{C}}_{31}}}&{{{{C}}_{32}}}&{{{{C}}_{33}}} & {{{{C}}_{34}}}& \cdots &{{{{C}}_{3{{N}}}}} \\ {{{{C}}_{41}}}&{{{{C}}_{42}}}&{{{{C}}_{43}}} &{{{{C}}_{44}}}& \cdots &{{C_{4{{N}}}}} \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots\\ {{C{{}}_{{{N}}1}}}&{{{{C}}_{{{N}}2}}}&{{{{C}}_{{{N}}3}}} &\cdots &{{C_{{{NN}} - 1}}}&{{{{C}}_{{{NN}}}}} \end{array}} \right] (12) 其中,
{{{C}}_{ij}} 表示高斯域{\rm{GF}}({2^8}) 中的数,矩阵{{\boldsymbol{C}}}_{{\boldsymbol{p}}} 和{{\boldsymbol{C}}_{\boldsymbol{r}}} 中的每一行都是线性无关的,从而保证在接收端的可解性。自适应编码算法如表2所示。表 2 自适应编码算法(算法2)1: int N = 0; 2: int R = 0; 3: while(!isEnd){ 4: //从强化模块获取N和R 5: N,R = ReinforcementLearning(); 6: //从编码矩阵{C_P}中选取编码系数,编码原始数据包 7: 获取编码系数{a_1},{a_2}, \cdots ,{a_N} 8: //从冗余编码矩阵{C_r}中选取编码系数,编码冗余数据包 9: 获取编码系数{b_1},{b_2}, \cdots ,{b_N} 10: NetworkCoding(N,R); 11: \} 4. 基于路径质量的数据包分发算法
由于采用网络编码,打破了数据包序列号和交付顺序之间的强约束关系。接收方并不关心接收的数据包的顺序,只需要接收足够的数据包就可以恢复原始的数据包,所以在发送方进行调度时,希望将编码完成的数据包尽快发送出去。因此,本文设计的基于路径质量的分发模块在每一次调度分发时根据每条路径的质量,每次选取最优的路径将编码的数据包调度到该路径的缓存中。算法流程如表3所示。路径
i 的质量{Q_i} 定义为表 3 基于路径质量的数据包分发算法(算法3)1:j=null; 2: {Q_{\max }} = 0; 3: for (每一条路径)\{ 4: {Q_i} = ({{\rm{effwnd}}_i} - {{\rm{unAck}}_i}) \times (1 - {{\rm{Pl}}_i}); 5: {\rm{if}}({Q_i} > {Q_{\max } })\{ 6: j = i; 7: {Q_{\max }} = {Q_i}; 8: \} {\rm{else}} {\rm{if}}({Q_{\max } } = {Q_i}\& \& i.{\rm{Bw}} > j.{\rm{Bw}})\{ 9: j = i; 10: \} 11: \} 12: {\rm{if}}(j! = {\rm{null}})\{ 13: 将编码数据包发送到路径j; 14: \} {Q_i} = ({{\rm{effwnd}}_i} - {{\rm{unAck}}_i}) \times (1 - {{\rm{Pl}}_i}) (13) 其中,
{{\rm{effwnd}}_i} 表示路径i 的有效窗口大小,即路径i 最大能够发送的数据包个数,{{\rm{unAck}}_i} 表示路径i 已经发送但还未确认的数据包个数。5. 仿真分析和性能评估
基于Opnet仿真软件,搭建的仿真拓扑如图4所示,多模终端通过WiMax和WLAN两条链路发起视频会议,远程服务器通过两条链路传输视频流,最后在多模终端处进行合并,链路参数配置如表4所示。
表 4 仿真参数设置参数 Path A Path B 通信方式 WiMax WLAN 核心网时延(ms) 50 100 接入带宽(Mbps) 8 11 接入链路时延(ms) 20 45 5.1 仿真环境和参数设置
本文采用多流并发模拟器,具体环境参数设置如表5所示。
表 5 多流并发环境参数参数 参数值 参数 参数值 视频块个数 48 缓冲区起始长度(s) 4 视频块长度(s) 4 异构链路个数 2 缓冲区容量(s) 50 缓冲区上溢等待时间(s) 0.5 分组大小范围N 1-25 分组内冗余大小范围R 0-5 时延惩罚因子\beta 0.5 重新缓冲惩罚因子\alpha 0.3 缓冲区惩罚因子\lambda 0.2 缓冲区长度下限{B_1}(s) 15 缓冲区长度上限{B_2}(s) 50 数据包大小(bytes) 1500 在仿真过程中,编码分组大小的设置尤为重要,如果设置较大则导致解码时延较大,设置过小则不能充分利用网络编码的优势,所以本文选取的分组大小的范围为
1 \sim 25 ,冗余大小范围为0 \sim 5 。因此,本文设定可选的动作个数为:25 \times 6 = 150 。A3C算法的参数设置如表6所示。表 6 A3C算法参数参数 参数值 参数 参数值 折扣因子\gamma 0.99 Critic 网络的更新步长a 0.001 视频信息数量 8 Actor 网络的更新步长w 0.01 局部代理个数l 16 熵的系数\varphi 0.2 在训练阶段熵的系数
\varphi 设置为较大值0.2,以充分地探索视频播放环境。随着迭代次数增加,逐渐减小\varphi 的值到0.0001,使得网络收敛。在测试阶段,直接根据训练完成的Actor网络输出策略,\pi ({a_t}|{S_t};{\theta _a}) 决策代理根据策略来选择动作(N,R) 。5.2 仿真结果与分析
如图5所示,黑色实线表示分组大小
N ,灰色虚线表示分组内冗余数据包大小R 。由于初始时刻网络状况未知,在仿真中将分组大小设置为15,分组内冗余的数据包大小设置为1。而在t = 1 时刻,由于网络状况较差,需要调整分组大小和分组内冗余数据包大小,从图中可以看出,分组大小的值为13,而分组内冗余数据包大小为3。在迭代过程中,根据网络状况动态调整分组大小和分组内冗余数据包大小,以适应不同的网络状况。本文采用两条链路并发传输视频,吞吐量对比如图6所示。图6(a)对多路径与单路径传输吞吐量进行对比,可以发现多路径传输可以获得较高的吞吐量;图6(b)黑色实线表示自适应网络编码方案总吞吐量,深灰色虚线表示管道网络编码方案MPTCP-PNC总吞吐量,浅灰色虚线表示无网络编码方案总吞吐量。从图中可以看出,自适应网络编码方案相比于无网络编码方案能够获得较高的吞吐量。由于采用了网络编码,接收端只要接收足量的数据包就可以解码出原始的数据包。而不采用网络编码算法时,由于接收端存在乱序现象,可能产生队头阻塞现象,使得发送方降低发送速率,从而导致吞吐量的不合理的下降。而本文提出的自适应网络编码方案相比管道网络编码方案,吞吐量有一定的提升,两者变化趋势相同,而自适应网络编码方案能够快速应对网络的变化。
传输完成时间随数据包个数变化如图7所示,其中黑色实线表示采用自适应网络编码方案,灰色虚线表示不采用网络编码方案。从图中可以看出,随着传输的数据包个数增加,采用自适应网络编码方案完成视频传输所需要的时间较小,而当数据包个数较少时,不采用网络编码方案所需传输时间较小,因为编码存在一定时延。
接收方缓存时间对比如图8所示,其中黑色实线表示采用自适应网络编码方案、深灰色虚线表示不采用网络编码方案、浅灰色虚线表示管道网络编码。从图中可以看出,采用自适应网络编码方案相比不采用网络编码算法能够更快地获得较大的缓存大小。自适应网络编码在7 s左右达到最大值(本文缓冲区容量设置为50 s),管道网络编码在9 s左右达到最大值,而不采用网络编码方案在12 s左右达到缓冲最大值,之后缓冲区大小一直保持在50 s左右。
6. 结束语
本文主要研究了异构网络环境下多路径并发传输问题,针对异构无线网络环境中多路径并发传输存在的数据包乱序问题,提出了一种基于自适应网络编码的异构无线链路并发传输控制算法。首先,强化学习模块通过智能体与环境的不断交互学习出最优的编码策略,获取最优编码分组大小和冗余大小。基于最优的编码策略对数据包进行编码传输,接收方不断接收编码的数据包,然后对数据包进行解码。最后,通过Opnet网络仿真数据对本文所提方法进行仿真,相比无网络编码方案以及管道网络编码方案,本文所提的自适网络编码算法能够获取更高的吞吐量。仿真结果表明,相比管道网络编码方案提高了10%左右的吞吐量,通过冗余编码解决了数据包的乱序问题,从而有效提升网络吞吐量,同时可以快速填满视频缓冲区,一直维持较高的缓冲时间。本文采用的网络编码算法没有考虑数据包内容之间的关联性,未来可以与视频编码相结合,进一步提高编码效率。
-
表 1 基于A3C的自适应编码决策算法(算法1)
输入:全局代理的网络参数{\theta _c}和{\theta _a},全局迭代次数m,全局最大
的迭代次数M输出:迭代后的网络参数{\theta _c}和{\theta _a} 1:初始化时间t = 0 2:repeat 3: (1) 初始化起始状态{S_t} = {S_0} 4: (2) 初始化网络参数增量{\rm{d}}{\theta _c} = 0,{\rm{d}}{\theta _a} = 0 5: (3) 将全局代理的网络参数赋值给局部代理\theta _c' = {\theta _c},\theta _a' = {\theta _a} 6: (4) for t = 1,2, \cdots ,T do 7: (a) 基于策略 \pi ({a}_{t}|{S}_{t};{\theta }_{a}^{\text{'}}) ,执行动作{a_t} 8: (b) 从视频播放环境中获得奖励值{r_t}和新的状态{S_{t + 1}} 9: (c) t\leftarrow t+1,m\leftarrow m+1 10: end for 11: (5) 计算状态{S_T}的值函数V_\gamma ^{\pi (\theta _a^,)}({S_T};\theta _c') 12: (6) for i=T,T-1,\cdots ,1 do 13: (a)更新 {\theta }_{a} 的增量 14: {\rm{d}}{\theta }_{a}\leftarrow {\rm{d}}{\theta }_{a}+{\nabla }_{ {\theta }_{a}^{,} }{\mathrm{log} }_{ {}_{2} }\pi ({a}_{i}|{S}_{i};{\theta }_{a}^{\text{'} }){A}^{\pi ({\theta }_{c}^{\text{'} })}
+\varphi {\nabla }_{{\theta }_{a}^{\text{'}}}H(\pi ({a}_{i}|{S}_{i};{\theta }_{a}^{\text{'}}))15: (b)更新{\theta _c}的增量 16: {\rm{d}}{\theta _c} \leftarrow {\rm{d}}{\theta _c} + {\nabla _{\theta _c'} }{({r_i} + \gamma V_\gamma ^{\pi (\theta _a')}({S_{i + 1} };\theta _c')}
- V_\gamma ^{\pi (\theta _a')}({S_i};\theta _c'))^217: end for 18: (7) 更新全局代理的网络参数 19:until m > {{M} } 表 2 自适应编码算法(算法2)
1: int N = 0; 2: int R = 0; 3: while(!isEnd){ 4: //从强化模块获取N和R 5: N,R = ReinforcementLearning(); 6: //从编码矩阵{C_P}中选取编码系数,编码原始数据包 7: 获取编码系数{a_1},{a_2}, \cdots ,{a_N} 8: //从冗余编码矩阵{C_r}中选取编码系数,编码冗余数据包 9: 获取编码系数{b_1},{b_2}, \cdots ,{b_N} 10: NetworkCoding(N,R); 11: \} 表 3 基于路径质量的数据包分发算法(算法3)
1:j=null; 2: {Q_{\max }} = 0; 3: for (每一条路径)\{ 4: {Q_i} = ({{\rm{effwnd}}_i} - {{\rm{unAck}}_i}) \times (1 - {{\rm{Pl}}_i}); 5: {\rm{if}}({Q_i} > {Q_{\max } })\{ 6: j = i; 7: {Q_{\max }} = {Q_i}; 8: \} {\rm{else}} {\rm{if}}({Q_{\max } } = {Q_i}\& \& i.{\rm{Bw}} > j.{\rm{Bw}})\{ 9: j = i; 10: \} 11: \} 12: {\rm{if}}(j! = {\rm{null}})\{ 13: 将编码数据包发送到路径j; 14: \} 表 4 仿真参数设置
参数 Path A Path B 通信方式 WiMax WLAN 核心网时延(ms) 50 100 接入带宽(Mbps) 8 11 接入链路时延(ms) 20 45 表 5 多流并发环境参数
参数 参数值 参数 参数值 视频块个数 48 缓冲区起始长度(s) 4 视频块长度(s) 4 异构链路个数 2 缓冲区容量(s) 50 缓冲区上溢等待时间(s) 0.5 分组大小范围N 1-25 分组内冗余大小范围R 0-5 时延惩罚因子\beta 0.5 重新缓冲惩罚因子\alpha 0.3 缓冲区惩罚因子\lambda 0.2 缓冲区长度下限{B_1}(s) 15 缓冲区长度上限{B_2}(s) 50 数据包大小(bytes) 1500 表 6 A3C算法参数
参数 参数值 参数 参数值 折扣因子\gamma 0.99 Critic 网络的更新步长a 0.001 视频信息数量 8 Actor 网络的更新步长w 0.01 局部代理个数l 16 熵的系数\varphi 0.2 -
[1] XU Yongjun, GUI Guan, GACANIN H, et al. A survey on resource allocation for 5G heterogeneous networks: Current research, future trends, and challenges[J]. IEEE Communications Surveys & Tutorials, 2021, 23(2): 668–695. doi: 10.1109/COMST.2021.3059896 [2] WU Jiyan, YUEN C, WANG Ming, et al. Content-aware concurrent multipath transfer for high-definition video streaming over heterogeneous wireless networks[J]. IEEE Transactions on Parallel and Distributed Systems, 2016, 27(3): 710–723. doi: 10.1109/TPDS.2015.2416736 [3] XU Changqiao, LIU Tianjiao, GUAN Jianfeng, et al. CMT-QA: Quality-aware adaptive concurrent multipath data transfer in heterogeneous wireless networks[J]. IEEE Transactions on Mobile Computing, 2013, 12(11): 2193–2205. doi: 10.1109/TMC.2012.189 [4] ZHANG Wei, LEI Weimin, and ZHANG Songyang. A multipath transport scheme for real-time multimedia services based on software-defined networking and segment routing[J]. IEEE Access, 2020, 8: 93962–93977. doi: 10.1109/ACCESS.2020.2994346 [5] 刘杰民, 白雪松, 王兴伟. 多路径并行传输中传输路径选择策略[J]. 电子与信息学报, 2012, 34(6): 1521–1524. doi: 10.3724/SP.J.1146.2011.01221LIU Jiemin, BAI Xuesong, and WANG Xingwei. The strategy for transmission path selection in concurrent multipath transfer[J]. Journal of Electronics &Information Technology, 2012, 34(6): 1521–1524. doi: 10.3724/SP.J.1146.2011.01221 [6] ZHANG Yuyang, DONG Ping, DU Xiaojiang, et al. BNNC: Improving performance of multipath transmission in heterogeneous vehicular networks[J]. IEEE Access, 2019, 7: 158113–158125. doi: 10.1109/ACCESS.2019.2948954 [7] HAN Chen, YIN Jun, YE Lei, et al. NCAnt: A network coding-based multipath data transmission scheme for multi-UAV formation flying networks[J]. IEEE Communications Letters, 2021, 25(3): 1041–1044. doi: 10.1109/LCOMM.2020.3039846 [8] XU Changqiao, LI Zhuofeng, ZHONG Lujie, et al. CMT-NC: Improving the concurrent multipath transfer performance using network coding in wireless networks[J]. IEEE Transactions on Vehicular Technology, 2016, 65(3): 1735–1751. doi: 10.1109/TVT.2015.2409556 [9] XU Changqiao, WANG Peng, XIONG Chunshan, et al. Pipeline network coding-based multipath data transfer in heterogeneous wireless networks[J]. IEEE Transactions on Broadcasting, 2017, 63(2): 376–390. doi: 10.1109/TBC.2016.2590819 [10] LI Wenzhong, ZHANG Han, GAO Shaohua, et al. SmartCC: A reinforcement learning approach for multipath TCP congestion control in heterogeneous networks[J]. IEEE Journal on Selected Areas in Communications, 2019, 37(11): 2621–2633. doi: 10.1109/JSAC.2019.2933761 [11] STEWART R. RFC 4960 Stream control transmission protocol[S]. Fremont: IETF, 2007. [12] HSIEH H Y and SIVAKUMAR R. pTCP: An end-to-end transport layer protocol for striped connections[C]. Proceedings of the 10th IEEE International Conference on Network Protocols, Paris, France, 2002: 24–33. [13] ZHANG Ming, LAI Junwen, KRISHNAMURTHY A, et al. A transport layer approach for improving end-to-end performance and robustness using redundant paths[C]. Proceedings of USENIX 2004 Annual Technical Conference, Boston, USA, 2004: 99–112. [14] PAASCH C and BONAVENTURE O. Multipath TCP[J]. Communications of the ACM, 2014, 57(4): 51–57. doi: 10.1145/2578901 [15] MNIH V, BADIA A P, MIRZA M, et al. Asynchronous methods for deep reinforcement learning[C]. Proceedings of the 33rd International Conference on Machine Learning, New York, USA, 2016: 1928–1937. -