王 卉,占 敖,吴呈瑜,夏雨峰
(浙江理工大学 信息学院,杭州 310018)
随着无线通信技术和互联网技术的快速发展,流媒体直播应用得到了迅速的推广普及。与此同时,在极致的视觉体验的背后,需要对海量的视频数据进行快速、准确的传输,传统的流媒体传输协议已经满足不了对于低延时、高画质的要求。
在传统TCP协议的基础上,文献[1]提出了MP TCP(Multi-path TCP)协议,该协议通过拥塞控制、数据调度技术来实现系统高吞吐量传输的要求;文献[2]提出了流控制传输协议(Stream Control Transmission Protocol,SCTP),其是一种在网络连接之间同时传输多个数据流的协议,该协议的特点是安全性高并支持多数据流服务。
为了满足无误码传输要求,MPTCP设计了数据调度,重传等复杂机制,一方面增加了协议的复杂度,另一方面影响了系统带宽,对于允许少量的丢包,要求高带宽的音视频数据传输系统是不合适的。然而,UDP协议通过有限次的重传机制保证数据传输的丢包率,相比MPTCP,能够简化系统传输机制,提升系统传输带宽;文献[3]提出了基于UDP的传输协议,在较小的网络开销下,继承了UDP传输实时性的同时,保证了数据的可靠传输性。针对大数据量的信息传输,文献[4]提出了一种既能满足UDP高效性又能降低网络丢包率和延时的协议,在提高可靠性的基础上又满足了实时性的需求。UDP协议在可靠性和实时性上已经取得了较好的成果,但这些方案都是以单链路传输为背景,利用UDP协议将多链路协同通信运用在数据传输的研究更是一个全新的方向。
本文提出的MPUDP协议是一种基于UDP多链路协同通信的协议,实现多条路径协作传输数据。在此过程中,通过真实数据训练评估实时的信道状态信息,对每条路数的数据传输进行管理,达到扩大系统传输带宽的目的,其应用模型如图1所示。多个用户端将视频数据推流到聚合推流设备,紧接着发送端(聚合推流设备)与接收端(聚合服务器)建立多个信道的连接,MPUDP协议在异构网络环境下对不同的信道分配不同的数据量,其异构网络包括WiFi、4G、5G等多路网络环境。聚合服务器汇集多路数据,有序发送到用户服务器,客户端发出拉流请求,实现在线直播观看的功能。
图1 系统应用模型Fig.1 System application scenarios
MPUDP协议是面向连接的数据报协议,与传统的UDP协议不同,MPUDP协议在兼容UDP协议的基础上,支持以多路径数据传输的方式,并根据信道性能分配速率,实现信道的高效传输。MPUDP系统在发送端和接收端之间存在多条路径,首先确立发送端和接收端的握手连接,然后发送真实数据进行信道训练,来获得信道状态信息,并且根据信道信息进行速率分配。当接收端出现数据丢包现象,重传机制保证可靠性。如果当信道连接过程中出现连接错误,需要将数据调度到其他信道继续传送,最后聚合多路数据后统一排序组合,得到最后的数据帧。由此可见,MPUDP的关键工作组件包括训练机制、速率分配、数据调度、重传机制,如图2所示。通过这4种工作组件,设计出满足负载均衡原则和可靠性原则的MPUDP协议。
图2 MPUDP的系统模型Fig.2 MPUDP system model
负载均衡原则:
(1)利用训练机制在数据传输的过程中实时监测链路性能;
(2)利用速率分配原则,根据训练结果动态调整链路的数据占比,减少不同信道对系统实时性的影响。
可靠性原则:
(1)利用数据调度在信道连接中断时切换数据传输的信道;
(2)利用重传机制从根源上降低丢包率。
本文设计MPUDP协议主要目标是解决由某条链路负载过大等原因引起的链路性能等问题,然而协议能否具有可靠性和低延时的特性,主要取决于以下4种工作组件,分别为训练机制、速率分配、数据调度、重传机制。
MPUDP协议定义了一系列的数据包和字段,为了说明设计思路,将用到的数据包和重要字段加以说明,见表1。
表1 数据包含义描述Tab.1 Packet meaning description
其中,训练数据包的帧结构见表2,Channel_Length:信道发送数据长度;Frame_Length:发送帧长数据,表示一帧数据包括多少个数据信号S,最大值为2 047,如果出现2 047,则丢弃数据包;Sequence:添加数据序列,保证为:0、1、…,Channel_Length。
表2 训练信号包结构Tab.2 Structure of training signal package
其中,训练数据回复包的帧结构见表3。
表3 训练回复包结构Tab.3 Structure of training reply package
Loss_Len:丢包数量;Num_Loss:丢包序列号,每两个Byte表示一个序列号;SeqV:接收数据排序值。
4种工作机制原理设计及功能显示各不相同。
3.2.1 训练机制
MPUDP算法协议的基础就是训练机制,训练机制的目的是检测各链路的信道性能。
首次发送训练信号,该信号为确定的模拟信号,利用已知信号对未知信道进行快捷的信道质量评估。在数据传输过程中,训练序列为实际的媒体数据,利用边发送媒体数据边训练信道的机制来提升实时信道传输性能。发送端发送数据给接收端,接收端返回接收时间、丢包率和数据顺序到发送端,发送端根据接收完毕时间和发送时间计算得到,按照信道的丢包率和数据顺序以及往返时延三要素判断信道性能,并将信道分为5个等级,信道性能从好到差依次为C、C、C、C、C,见表4。
表4 信道等级分类标准Tab.4 Standard of channel classification
其中,表示数据长度;为判定的加权因子;、为规定完成数据的时间差();、为特定丢包率数值()。当按序接收时,则表示为式(1):
按照表4的分类标准对信道性能分类,依据训练结果对不同等级的信道进行数据包分配,为下一步速率分配提供基础。
3.2.2 速率分配
MPUDP算法协议的核心就是速率分配策略,利用对多路径链路传输的信道性能进行速率分配,实现链路之间数据传输量的“动态”平衡。发送端采用多链路开发,优化通信流程,随时尝试在多条路径之间保持负载均衡。
发送训练信号后,若信道被判定为同一等级的情况,按信道数量等额分配数据包;若信道判定为不同信道性能等级,采用差额速率分配数据,提高数据传输的吞吐量。当最差信道被判定为C标准时,传输系统停止该信道的数据传输;当最差信道被判定为C标准时,信道性能归一化速率v表示为式(2):
x表示等级为C的信道数量,以此类推;x、x、x分别表示等级为C、C、C的信道数量;表示的是各类信道等级的权重。当最差信道被判定为C标准时,信道性能归一化速率v表示为式(3):
若最差信道性能降为C标准,则信道性能归一化速率v表示为式(4):
在训练的过程中,当出现未达要求的信道在训练时通过了信道训练要求,即达到C、C标准时,增加10%的速率在该信道传输,并在下一次的训练中,加入该信道协作调整最差信道,达到信道性能,实现闭环提升的功能。
3.2.3 数据调度
在数据传输过程中链路发送端处在训练信号、数据信号和发送数据+训练信号过程中,链路出现中断情况时,进一步影响链路的可靠性和传输速率。
为保证链路数据的传输速率,需要在链路中启用数据调度的工作机制,将发送在异常链路的数据分发到其他链路中。具体实现:发送过程中当出现数据帧链路错误,MPUDP协议将未传输数据包分配到其他良好信道上传送,其速率分配遵循上述的速率分配原则。例如:数据传输时有3个并行信道,分别为C、C和C,在信道传输过程中,信道C发生错误,数据调度将其数据速率分配到其他信道中。在信道没有发生错误的情况下,各信道按照式(5)原则:
其中,V表示信道C的分配速率;V表示信道C的分配速率;V表示信道C的分配速率。
当信道C连接断开,信道C和C归一化传输速率为公式(6):
此时,C、C两信道帮助断开信道C成功发送该数据帧。以该方法为核心,数据调度可以避免断开链路的丢包率,从而加强信道传输的可靠性。
3.2.4 重传机制
在数据传输阶段,如果信道出现丢包现象,该机制能够有效减少丢包率,提高数据可靠性。
在信道连接过程中,与TCP协议握手机制类似,MPUDP协议通过3次握手的机制建立连接,区别在于MPUDP协议收发两端需要确认双方的IP地址及端口号。在发送数据过程中,发送端将每包数据连续编号,接收端建立缓冲区,对接收数据包重新进行序号排列。如果接收端检测到没有丢包,则按照数据序号全部移出缓存区;如果接收端检测到丢包,接收端将未接收到的数据包信息(即丢包数量Loss_Len和丢包序列号Num_Loss数据包)反馈给发送端,发送端重新发送指定的数据信息,并保持丢包数据始终在原本信道上进行重传,最大重传次数为3次,超过重传次数,停止该帧信息传输,进入下一帧数据传输,即允许适当的丢包率来改善系统吞吐量,此重传机制适用于海量数据传输,如:音视频传输系统。
以上4种工作组件设计成一种兼具可靠性和数据传输效率的MPUDP协议,并在系统的发送和接收的过程也充分利用了上述4种工作组件。
MPUDP协议是一种提供可靠机制、面向连接的数据流传输协议。MPUDP的协议算法设计见表5,MPUDP的4种工作机制建立起多路径传输以及如何实现数据包的合理分配的过程。发送端分别发送数据请求包,训练信号和数据信号,接收端对多条发送结果进行反馈,并不断通过训练情况实时提升信道传输速率。
表5 MPUDP的协议算法设计Tab.5 Protocol design of MPUDP
实验仿真环境的搭建为:实验室有线路由器与交换机通过网线相连,无线路由器与有线路由器通过网线相连,有线路由器可对无线路由器设置不同的传输带宽,两客户端与无线路由器进行无线信道连接,服务端电脑与有线路由器通过光纤连接。为评估设计系统的可靠性与高效性,需利用仿真环境实现基于MPUDP协议在多种情况下的网络传输的实验仿真。为研究多链路协同传输,在两条传输链路中分别采用UDP和MPUDP传输协议,两台电脑作为客户端A、B分别使用UDP、MPUDP协议协同传输同一份大文件,客户端C作为接收端,接收两客户端发送过来的文件。
UDP协议是传统流媒体服务器协议;MPTCP协议表示多链路数据传输协议;MPUDP是本文设计的多路径协作传输协议,3种通信协议对实时链路带宽的吞吐量,如图3所示。MPUDP协议在进行数据传输时,与UDP、MPTCP协议相对比,吞吐量在不同丢包率情形下都有不同程度的提高。在丢包率为0%的情况下,MPUDP协议由于自身的协作特性,在满足要求的情况下,能够实现较高的吞吐量;MPTCP协议由于协议高精准度的要求,必须满足0%的丢包率,但由于协议特性缺少自适应的算法,在吞吐量上不敌MPUDP协议;在丢包率为0%的情况下,UDP协议的吞吐量最低,而随着丢包率要求的降低,UDP和MPUDP协议的吞吐量也在稳步提升。
图3 模拟信道在不同算法协议下的吞吐量Fig.3 Throughput of analog channel under different algorithm protocols
MPUDP协议和UDP协议在不同丢包率要求下的吞吐量如图4所示,在MPUDP协议中,运用了多链路协作运输,这相比于UDP的单信道传输在信道传输速率上有了近链路数目倍的提高。
图4 模拟信道在不同丢包率情况下的吞吐量Fig.4 Throughput of analog channel under different packet loss rate
本文分别对MPUDP训练机制、速率分配、重传机制、数据调度进行了设计及优化。通过训练获得每条链路信道传输带宽进行数据分配传输,达到多条链路协作传输视频的能力。在允许少量丢包的情况下,改善系统数据的传输带宽,适用于音视频传输的应用场景。实验仿真表明:在丢包率较小的情形下,MPUDP协议相较于UDP协议在模拟信道的吞吐量上都有了近链路数目倍的增长。