APP下载

流媒体拥塞控制中的整形算法研究

2018-04-03南京邮电大学钱国明

电子世界 2018年5期
关键词:令牌包率码率

南京邮电大学 温 璋 钱国明

1.引言

随着近年来新兴直播平台,小视频软件的兴起,对于围绕着用户的视频业务,也提出了新的要求:降低卡顿率、抗网络不稳定性等方面急需提高。所以对于视频的数据发送源——流媒体服务器(Media Server,以下简称MS),需要在软件设计上,针对网络性能部分做重点的优化,以跟上当前视频业务市场的网络能力和用户需求。

实时视频的传输要求丢包率低、时延小、码率抖动小。这几个特征结合起来决定了实时视频的质量。出现突发的流量导致网络拥塞,影响服务质量。流量整形技术就是针对在网络产生拥塞的情况下限制和调整流媒体服务器的发送速率,适当提高视频数据的发送优先级,在减轻网络突发压力的同时,优先保障视频数据的传输,保证用户体验。流量整形是对网络流量的速率进行主动调控。最早出现在处于网络交换与网络转发节点位置的网络设备中,其主要目的是为了解决突发数据流对网络所带来的拥塞问题,是对网络流量的速率进行主动调控[1-2]。

在本文中,我们将重点放在流量整形技术应用在流媒体的速率控制服务(RCS)上。令牌桶算法在应用于流量整形和速率限制时,一方面可控制网络传输速率(将平均情况下的速率控制在S),并且在一定情况下允许突发数据的发送(突发数据的大小最多为桶的大小T)。传统令牌桶算法工作原理是以恒定的速率s往桶中添加令牌,当桶中令牌个数达到桶容量时,不再生产新令牌,阻止数据入桶。数据的是否发送,取决于在桶内是否能获得令牌。

本文的媒体服务器软件基于nginx优化,虽然Nginx有基于令牌桶算法的请求限制模块,通过配置它们可方便的控制令牌速率,自定义调节限流,实现基本的限流控制[3],但这只是通过限制用户上线频率限流,并没有对每一个用户的数据发送管道进行优化。本文应用数传领域的流量整形技术,基于令牌桶算法,结合视频业务的特点,将流量整形算法设计到流媒体服务器中,在应用层对每一个用户都控制数据的读取和发送速率,提高自适应网络能力,优化视频体验,并用实际部署的MS流量做报文分析测试改进后的效果。

2.MS数据处理逻辑设计

数据处理逻辑包含两个大模块:

(1)数据缓存模块:用来从磁盘上读取实体文件,解析出文件码率,分包打时戳并将打好时戳的数据包压入数据发送令牌队列;

(2)数据发送模块:接收cache模块入队列的数据,做流量整形后发出。

2.1 数据缓存模块(cache module)设计

Cache的主要功能就是从媒体文件中读取数据,并将数据打上时间戳入队,时间戳的计算方法模拟令牌桶原理,即每一个数据包的时间戳计算公式(1)如下:

其中T为当数据包的rtc时间戳,size为当前数据包的大小(固定为1316字节),speed为当前流媒体文件码率,t为上一个数据包的rtc时间戳。从公式可以看出,单位时间1秒内,将size=1316带入,可计算发送报文数n如公式(2)所示:

即给n个数据包打上时间戳。即time秒内理论发送数据可以达到公式(3):

从上面的步骤可以看出,通过RTC时戳,在单位时间内精确控制发包个数,从而达到控制均匀控制码率的目的。相对于传统令牌桶软件实现相比,这种时间戳控制方式,在保证速率控制的同时,减少了发送模块对于令牌结构出队入队,申请内存等操作,提高系统性能。

2.2 数据发送模块(shape_sender module)设计

Shaper_sender模块框架如图1所示:

图1 Shaper_sender模块框架

Shaper模块主要负责将cache模块入队的数据进行发送,并打点计算发送结果,根据单位时间内发送的字节数B计算出当前的链路带宽b,实时更新每一个发送对端的链路速度,针对每一路用户的数据流进行数据降速或者增速。

本文MS系统结合具体的业务场景增加了桶水位线的优化:如果当前媒体文件的码率为s,MS数据缓存模块以每1/s的精度,从当前RTC时钟自加,给每个数据包打上时间戳。数据发送模块预先开辟一定大小m的队列,将打好时间戳,并且需要发送出去的数据入队,当数据包到达发送时间后,获得令牌,出队发送。每个队列有一条上水位线H和下水位线L,当网络阻塞时,队列内的数据大于等于H,则新到的数据不入队,队列中的每个数据时间戳往后移动d个精度单位(unit),降低发送速率,减少拥塞;降低后的速率为,如式(4)所示:

当网络状况良好,无发送失败记录,并且队列中的数据量在[L,H]之间,则将令牌生成间隔相对提高%d,按缓慢升速发送,如式(5)所示:

直到队列水位线下降到L处,为了保留缓存,数据发送速率回复到媒体文件码率s。当数据发送成功后,该数据的令牌被销毁。所以令牌桶的原理就是通过控制令牌产生的速度,将数据发送码率平稳在s左右,对于每一个长稳连接,令牌桶的数据流量为B,如式(6)所示:

3.应用场景下流量整形前后测试

本文流媒体服务器在某大型运营商的CDN网络中进行的测试结果:

(1)单用户发包波形比较

带宽充足的情况下,对于单点用户,用wireshark抓包,比较出流IO图。

图2 流量整形前后的数据发送码率对比

从图2左可以看出,在抓包的10秒内,有2次明显的码率欠载。图2右,优化过后的流媒体服务器数据发送码率明显平齐,这表明流量整形已经生效:在网络中提高了抗抖动能力。

(2)增加丢包率场景下的网络性能指标比较

在城域网里,IPTV的容忍丢包率是五万分之一[5],所以重点测试和对比五万分之一附近的卡顿状况,如图3:

图3 丢包率和拥塞指数关系图

图3横轴表示丢包率(单位是1/500000),纵轴表示拥塞指数(单位1/100),表示在当前丢包率下,网络设备监控到的整体链路拥塞程度从图中可以对比出,10/500000丢包率以内,两者相差不多,流量整形算法系统略优,但到了10/500000这个阀值,出现了明显的差别,到25/500000的时候,两者又趋于相同。所以可以得出结论:流量整形后的交换机拥塞指数要大大低于非整形的软件,在丢包可控的小概率丢包情况下,流量整形技术可以明显降低交换机侧的拥塞,优化网络性能,在IP网络传输中,流量整形并不会引起额外的端到端延迟,经正确整形后的流量将在中间网络节点经历更小的网络拥塞。

(3)水位线参数对服务性能的影响

图4 水位线和终端欠载率关系图

测试环境模拟恒定的丢包率,模拟一般网络拥塞可控情况下的城域网丢包范围[1/50000,1/10000],流媒体服务器对每一个发送用户都维护一个数据缓存水位,分别在0.5s,1s,1.5s,2s,2.5s,3s各个值进行测试分析。从图4中可以看出,在可控网络质量情况下,调整流媒体shaper模块的缓存水位线参数,可以有效的提高在网络闪断获拥塞时候的QOS指标,减少终端因流媒体数据欠载导致的卡顿花屏问题。水位线的灵活设置,虽然牺牲了很小一部分的视频实时性,但能够有效保证流媒体服务器的数据流质量。

4.结语

本文基于令牌桶算法,设计并实现优化了流媒体服务器的数据发送软件。在软件设计中,采用了数据缓存和发送模块分离的思路,将令牌桶算法变种为用时间戳控制,并设置了发送队列数据包缓存水位线,用于更加灵活的控制抗抖动能力。从测试结果来看,基本达到了流量整形目的,提高网络侧QOS指标,降低拥塞和卡顿率。

[1]J.Y.L.Boudec.Some Properties of Variable Length Packet Shapers.IEEE/ACM Transactions On Networking,2002,10(3):329-338.

[2]JohanssonI.RFC5506:Supportforreducedsizerealtirnetrailsportconl rolprotocol(RTCP):Opportunities and consequenccs[J/OL].http://www.ietf.org/rfc/rfc5506.txt,2009.

[3]Paez S,Kathern G,Guevara Amaya J C.Traffic management algorithms: Leaky Bucket,Token Bucket and Virl:ual Scheduling[J].Tecnura,2011,15(29):76-89.

[4]Zhang Ertong,Xu Li song.Capacity and token rate estimation for networks with token bucket shapers[J].Computer Networks The International Journal of Computer and Telecommunications Networking,2015,9:1-11.

[5]中国电信上海公司IPTV质量技术指标体系V1.1,2008:7.

猜你喜欢

令牌包率码率
支持向量机的船舶网络丢包率预测数学模型
称金块
一种基于喷泉码的异构网络发包算法*
基于路由和QoS令牌桶的集中式限速网关
一种新的VANET网络链路丢包率估计算法
基于状态机的视频码率自适应算法
动态令牌分配的TCSN多级令牌桶流量监管算法
TCN 协议分析装置丢包率研究
基于场景突变的码率控制算法
X264多线程下码率控制算法的优化