王俊博 邢 凯
1(中国科学技术大学软件学院 江苏 苏州 215123)
2(中国科学技术大学计算机科学与技术学院 安徽 合肥 230026)
基于Erasurecode的实时流媒体传输系统
王俊博1邢 凯2
1(中国科学技术大学软件学院 江苏 苏州 215123)
2(中国科学技术大学计算机科学与技术学院 安徽 合肥 230026)
传统的流媒体传输系统需要一定规模的服务器群和集中式的带宽,在丢包问题中大部分采用丢包重传,即带ACK回执和重传的数据报文。提出一种新的容忍丢包和边缘服务器的传输方式,基于Erasure code的可恢复性,实现容忍丢包的发送接收模型。采用边缘计算的思想,将集中式的服务器群分散到任意主机上,通过动态地获取服务端地址,将实时数据流分成多块,经由不连续的边缘服务器进行转发,以降低对边缘服务器的带宽要求。可以根据边缘服务器的服务能力的不同分配传输数据量,达到动态的负载均衡。同时该系统具备隐私保护的功能。实验结果表明,该系统即使在较高丢包率和较差的网络环境下,仍然可以保证较低延迟的正常使用。
Erasure code 网络 流媒体 实时 边缘服务器 边缘计算
随着互联网的飞速发展,实时流媒体的需求日渐增大,应用范围逐渐扩大,包括直播、视频聊天、远程教育、远程医疗和电视电话会议等。根据中投顾问的报告[1]显示,2015年中国网络直播平台用户数量已经达到2亿。大型直播平台每日高峰时段同时在线人数接近400万。以720 p的分辨率需要使用1 024 Kbit/s的码率为例,一个用户每秒需要传输128 KB的数据,此时服务器每秒要传输的数据量高达488 GB(即3.9 TB的带宽需求)。此数据还在不断增大。实时流媒体性能主要体现在:编码和压缩性能、流服务器性能、数据流传输质量三个方面。传统的流媒体传输系统对网络稳定性和带宽的要求愈发苛刻,并且存在单一服务器传输速度较慢、需要的带宽资源较大、对服务器群性能要求较高、P2P的传输方式丢包严重等问题。因而本文提出了一种利用Erasure code和Edge computing思想的解决方案,提高数据流传输速度,解决P2P的丢包问题,分治服务器带宽需求,降低对服务器群的性能要求,同时保护使用者隐私。利用不连续的Edge service,保证实时流媒体稳定传输的系统。
Erasure code是一种数据保护方法,它将数据分割成片段,把冗余数据块扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其他地理位置[2]。该系统利用Erasure code冗余可恢复的性质,将之利用在实时传输系统中,用来实现丢包容忍。减少了丢包重传的时间以及过程中的等待时间。同时可以在不中断的情况下,切换服务端。Edge computing[5]是将计算应用,数据和服务的前沿从集中式节点推向网络的逻辑极端[6]。它使分析和知识生成能够在数据源发生。边缘应用服务显著减少必须移动的数据量、数据通信和数据移动的距离[7-8],从而减少传输成本,收缩延迟时间,以及提高服务质量(QoS)[9]。本系统采用Edge service构建一个网络传输模型。该流媒体传输系统摒弃传统的单一服务器方式,采用Edge service,利用包括使用者和服务提供者在内的整个传输系统的资源,降低对服务器的带宽要求,并具有一定的隐私保护功能。
传统Erasure code多使用在云存储上,多个分散的服务器分别存储部分Erasure code处理后的数据。在使用时仅需要其中一部分就可还原出完整数据,即使部分数据不可用或丢失,原始数据还是可以恢复的。本文将Erasure code的数据可恢复性利用到实时流媒体传输中,发送端将实时流媒体数据通过Erasure code过程后创建出m份冗余数据块,其中k代表原始数据或符号的值。m代表生成的额外或冗余符号的值。如图1所示。
图1 Erasure code对流媒体数据的使用过程
将k+m份数据有选择的分别发送k+m′份,接收端在收到其中任意k份数据时即可将原始数据还原。所以即使网络环境稳定性较差,该模型也可以在m′/(k+m′)的容忍丢包率内,保证正常使用。对于任一帧数据而言,收到k份数据即可正常使用,而无须将k+m′份全部接收,因而降低了网络传输的延迟。其中m′是根据当前网络环境中丢包率动态调整的,m满足:m≥k(该系统取m=k),m′满足:m≥m′>δk/(1-δ)(其中δ实时丢包率)。
综上,Erasure code传输模型是根据网络环境中丢包率的变化,发送原始数据报文不同比例的新报文来保证流媒体正常工作的,因此较传统传输模型而言,Erasure code传输模型会承载更多的数据报文。但是相对于一帧数据而言,减少了丢包重传的延迟时间,提高了传输的稳定性,降低了流媒体传输的平均延迟。
Edge service组模型传输方式如图2所示,发送端将Erasure code编码后的数据报文分发给系统中多个不同的Edge service节点,由这些不同的Edge service节点将数据报文转发给真正的接收端。其中多个不同的Edge service节点的选择在2.2节中介绍。由于经过Erasure code的数据之间是相对独立且容忍丢包的。所以将数据由不连续的Edge service组转发是被允许的。在传输过程中,可以动态地调整Edge service对象,减少非必要的数据量传输,降低数据传输的距离。以达到降低网络延迟,分治网络带宽,实现更好的传输效果的目的。不同的Edge service切换过程中出现丢包的情况并不影响数据的完整性,适合于复杂的网络环境,可以尽可能地利用网络资源,将传统单一服务器的负载分摊到Edge service组中。
图2 Edge service组模型
Edge service组模型可以实现将数据转发由单一中转服务器到多Edge service的转变。有效地减少了服务器的带宽和负载压力,同时减少非必要的数据量传输,降低数据传输的距离,使得网络延迟进一步降低。如果采用n台服务端构成的服务端组,理论上网络传输延迟可以降低到原先的1/n。
较传统服务器模型不同,Edge service组模型中一定数量Edge service的数据泄露并不影响数据的安全性,即不能得到原始数据,只有拿到某一客户端对应的Edge service组所有的数据才可以还原出原始的流媒体数据。所以Edge service组模型还对数据起到隐私保护的作用。
由中央服务器维持一个服务端列表,用来保存当前可以提供服务的Edge service的信息。在使用者登录该系统的同时,将本地信息在服务端列表中进行注册或者更新。意味着在使用系统资源的同时,也为系统中其他使用者提供服务。具体服务提供依照服务能力的大小决定。若使用者退出系统,则将其在服务端列表中删除,并通知使用其服务的其他使用者选择新的Edge service。
为了避免因Edge service宕机导致的传输数据丢失和降低使用者的服务端替换率,服务端列表中的各个Edge service与中央服务端采用一个折中的频率(该系统采用0.02 Hz)的心跳协议,兼顾了一定的实时性和较低的列表维护资源。
进行流媒体传输前,由发送端向接收端发出请求,得到肯定答复后,通知中央服务器可以建立流媒体连接。此时,由中央服务端发送p×n台Edge service地址信息给使用者(p为冗余倍数默认为3,n为使用者需要的服务端台数),并携带Edge service被使用次数u和其设备质量参数λ。在使用者收到中央服务端发来的服务端信息后,使用者通过Ping命令测试本地与各个Edge service的连通,并统计响应时间τ;然后对确认连通的节点发送传输延迟检查包(check包)经由Edge service到对方,再从对方经Edge service重新回到使用者。统计整个过程中的响应时间t。再根据u和λ采用如下公式,计算出各自的order值:
(1)
摒弃掉不能连通或者丢包率持续较高或者超过丢包率阈值的Edge service节点,通过得到的order值从小到大对服务端列表排序,取前n位作为当前网络传输过程使用的Edge service组。
同时,客户端采用一个折中的频率(该系统采用0.003 Hz)对服务端列表重复上面的Edge service选择过程,对服务端列表进行更新。目的在于将多个Edge service同时不工作的可能性降到最低,保证流媒体的稳定传输。
系统包括三部分:中央服务端、负责服务端和客户端的登录请求,保存服务端列表并统筹分配;Edge service,由系统默认的提供转发服务的多台服务器和系统使用者的客户端组成,默认服务器用来保证系统中客户端较少时用户的正常使用;客户端,既是系统服务的使用者,也是系统服务端的提供者。Edge service和客户端均认为是节点。
客户端和Edge service统一由中央服务端管理,其中包括登录、退出、服务端分配、服务端下线通知等。中央服务器拥有备份服务器,保证中央服务器的稳定工作。中央服务端只起到管理和调配作用,不涉及流媒体数据传输,所以对带宽的需求不高。
Edge service作为流媒体数据传输的中转站,负责将目的地址非本地的流媒体数据转发。并与中央服务端维持固定频率的心跳连接,保证系统稳定性。
客户端作为系统服务的使用者,负责提供流媒体数据和接收流媒体数据。其中包括流媒体数据的采集、编码、发送、接收、解码、播放等过程,并通过2.2节中提到的服务端发现方式,选取和更改服务端地址。将流媒体数据发送给相对应的服务端,实现实时通信。
相较于传统实时流媒体通信系统。本文提出的系统没有丢包重传的机制,采用Erasure code这种可还原的快速编码的方式,减少了丢包重传带来的网络延迟。并且将数据通过Edge service组进行转发有效地利用系统中网络资源,适应于复杂网络环境。避免了单一服务器延迟过高导致实时通信中断或者异常。提高了系统的QoS和用户体验。同时降低了服务器端的负载,将原本的服务器集群的任务合理地分散到各个Edge service节点上。并且单个节点收到的流媒体数据都并非原始数据,更无法还原出真实数据,增强了对用户隐私保护的功能。
在流媒体通信双方建立连接并选择合适的Edge service组后,客户端通过采集相应设备的流媒体数据,并压缩编码(视频采用H.264格式,音频采用AAC格式)后,根据1.1节中描述的方式对数据做Erasure code 处理。参考当前丢包率将原始的k份数据编码成k+m′份数据,m′满足:m≥m′>δk/(1-δ)(其中δ实时丢包率)。
由2.2节中Edge service的选择得到动态的Edge service组,并按照Edge service组的顺序对k+m′份新数据进行分发。order值表示Edge service服务能力的强弱,根据order值顺序对数据进行分发,可以使得负载更均衡,更有效地利用系统中的带宽。若某一Edge service因某种不能正常使用,中央服务器会根据心跳包计数超时机制认为其登出,并建议客户端选择新的Edge service进行替换,在此过程中不会影响到流媒体的正常通信。
同时也将保护用户隐私,若其中一台或多台Edge service遭到攻击使得数据泄露,泄露的数据是不足以还原出原始数据,起到了隐私保护的作用。
无论是Edge service还是客户端,在收到数据后,首先根据数据报文的报文头,判断目的节点是否是自己。若是,则表示该节点在此过程中为客户端,使用系统服务。此时将数据放入消息缓冲区中,并通知对应的工作线程处理数据,包括流媒体通信前的确认信息,传输延迟检查包的回复,流媒体数据的播放等。反之,表示该节点为Edge service端,目前在为系统中其他使用者提供服务。所以根据数据包携带的目的地址,将数据报文发送到该目的地址。
中央服务器通过心跳机制维持与各个Edge service之间的连接,用来排查非正常退出的Edge service。同时客户端每隔一段时间会对服务端列表进行排序,用来选择更合适的Edge service,降低正常使用过程中因为网络异常或Edge service异常掉线而导致的服务端替换率。
针对以上两种方式不能及时排查的影响系统稳定的不同情况进行讨论。首先是Edge service异常导致非正常退出,此时客户端中该Edge service的丢包率会异常提升(丢包率的提升会使客户端发送更多的数据,加剧该Edge service丢包率的提升),客户端通常会在1~2帧的数据内将丢包率异常甄别出来,对该Edge service进行动态替换。其次是Edge service带宽使用受限,此种情况丢包率会缓慢增加,客户端通常会在3~4帧数据内将其甄别出来,替换成服务能力更好的Edge service。
由于实时流媒体数据经过Erasure code处理,所以单一的Edge service中的数据泄露,是不足以还原出原始数据的,只有拿到某客户端对应的Edge service组中超过ω(ω=m′/(k+m′))的Edge service的流媒体数据才可以还原出原始数据。在网络状况较好时ω≈1(k≥m′),需要拿到Edge service组全部数据才可还原出原始数据。即便是网络状况不好时ω≈1/2(m′=m=k),还原原始数据也需要拿到一半的Edge service组中数据。
该系统中,中央服务器分配使用者服务端列表的行为带有随机性。同样使用者对Edge service的选择也具备一定的实时性。除非获取确切信息,否则不可能知道某一个使用者对应的Edge service组成员。也就是说,只有获取到整个系统中超过ω的Edge service的实时流媒体数据,才可以还原出某一个特定使用者的原始数据。
为了验证该系统的表现,本节通过设计实验进行分析和说明。实验环境是采样率为640×480,使用H.264编码格式,此种流媒体数据分为I、B、P三种帧结构,实验中服务器为华北地区的阿里云服务器ECS,源节点地址为中国科学技术大学校园内。以下实验均在同一时间段进行,可以忽略不同时间段网络环境的影响。
通过使用Erasure code实现容忍延迟的网络传输模型与传统实时流媒体传输网络传输模型作对比。统计了两种传输模型中发送端H.264编码后到接收端播放前的网络传输延迟。如图3所示。
实验结果显示,传统实时流媒体传输模型的数据帧平均网络传输延迟是238.107 234 272 ms。使用Erasure code的实时流媒体传输模型的数据帧的平均网络传输延迟是107.073 214 516 ms。较传统实时流媒体传输模型而言,平均网络传输延迟降低了55.03%。
统计了两种传输模型中实时流媒体数据从发送端摄像头采集到接收端播放器播放的整个过程延迟。如图4所示。
实验结果显示,传统实时流媒体传输模型的数据帧平均播放延迟是485.190 139 84 ms。使用Erasure code的实时流媒体传输模型的数据帧的平均播放延迟是317.919 507 757 ms,已可以将延迟控制在500 ms以内。较传统实时流媒体传输模型而言,平均播放延迟降低了34.47%,相对于每帧数据而言,帧延迟平均降低了28.70%。
使用Edge service组和单一服务器进行对比实验。实验中使用由3台非本地的个人电脑组成的Edge service组。统计了仅使用Erasure code的实时流媒体传输模型和使用该系统的实时流媒体传输模型的网络传输延迟。如图5所示。
实验结果显示,仅使用Erasure code的实时流媒体传输模型的数据帧平均网络传输延迟是107.073 214 516 ms。使用该系统的实时流媒体传输模型的数据帧的平均网络传输延迟是81.753 202 451 6 ms。较仅使用Erasure code的实时流媒体传输模型而言,平均网络传输延迟降低了23.65%,较传统实时流媒体模型网络传输延迟降低了65.67%。
统计仅使用Erasure code的实时流媒体传输模型和使用该系统的实时流媒体传输模型的播放延迟。如图6所示。
图6 使用该系统的实时流媒体传输模型和使用Erasure code的实时流媒体传输模型的播放延迟对比
实验结果显示,仅使用Erasure code的实时流媒体传输模型的数据帧平均播放延迟是317.919 507 757 ms。使用该系统的实时流媒体传输模型的数据帧的平均播放延迟是179.739 083 112 ms。较仅使用Erasure code的实时流媒体传输模型而言,平均网络传输延迟降低了43.46%。较传统实时流媒体模型网络传输延迟降低了62.95%。
本文在传统流媒体传输的基础上提出了容忍丢包的概念,减少了因丢包重传带来的数据延迟。同时采用Edge service组的策略,降低服务器带宽压力,进一步降低网络传输延迟,有效利用系统使用者的剩余带宽。解决了单一服务器带宽需求较高的问题。即使在较恶劣网络环境下,仍可以保证实时稳定的流媒体传输。
[1] 中投顾问.2017-2021年中国网络直播行业深度调研及投资前景预测报告[R].北京中宏经略信息咨询有限公司,2016.
[2] Wiki百科.Crowdsourcing[OL].en.wikipedia.org/wiki/Crowdsourcing.
[3] Liang G,Kozat U C.Use of erasure code for low latency cloud storage[C]//Communication,Control,and Computing (Allerton),2014 52nd Annual Allerton Conference on.IEEE,2014:576-581.
[4] Reddy G R,Subashini N J.Secure Storage Services and Erasure Code Implementation in Cloud Servers[C]//International Journal of Engineering Research and Technology.ESRSA Publications,2014,3(1(January-2014)).
[5] Wiki百科.Edge computing[OL].en.wikipedia.org/wiki/Edge_computing.
[6] Garcia Lopez P,Montresor A,Epema D,et al.Edge-centric computing: Vision and challenges[J].ACM SIGCOMM Computer Communication Review,2015,45(5):37-42.
[7] Kurniawan I P,Febiansyah H,Kwon J B.Cost-effective content delivery networks using clouds and nano data centers[M]//Ubiquitous Information Technologies and Applications.Springer Berlin Heidelberg,2014:417-424.
[8] Ryden M,Oh K,Chandra A,et al.Nebula:Distributed edge cloud for data intensive computing[C]//Cloud Engineering (IC2E),2014 IEEE International Conference on.IEEE,2014:57-66.
[9] Lee E A,Hartmann B,Kubiatowicz J,et al.The Swarm at the Edge of the Cloud[J].IEEE Design & Test,2014,31(3):8-20.
REAL-TIMESTREAMINGMEDIATRANSMISSIONSYSTEMBASEDONERASURECODE
Wang Junbo1Xing Kai2
1(SchoolofSoftwareEngineering,UniversityofScienceandTechnologyofChina,Suzhou215123,Jiangsu,China)2(SchoolofComputerScienceandTechnology,UniversityofScienceandTechnologyofChina,Hefei230026,Anhui,China)
The traditional streaming media transmission system needs a certain scale of the server group and centralized bandwidth. Most of the packet loss problem adopts retransmission, namely data packets with ACK receipt and retransmission. This paper proposes a new way to packet loss tolerance and edge server transmission. Based on the recoverability of erasure code, the transmission and reception model of packet loss tolerance was realized. This model uses the idea of edge computing to distribute the centralized server cluster to any host. First, real-time data stream was divided into several blocks by dynamically obtaining the service address. It is then forwarded via a discontinuous edge server to reduce bandwidth requirements for the edge server. Next, the system can dynamically allocate the amount of data according to different service capabilities of the edge server to achieve dynamic load balancing. Meanwhile, the system has the function of privacy protection. The results we obtained demonstrate that the system can guarantee the normal use of low latency even under the condition of high packet loss rate and poor network environment.
Erasure code Network Media streaming Real-time Edge Service Edge Computing
TP3
A
10.3969/j.issn.1000-386x.2017.10.037
2016-11-25。国家自然科学重点基金项目(61332004)。王俊博,硕士生,主研领域:网络计算。邢凯,副教授。