RIST 媒体流传输协议应用研究

2022-01-07 12:52潘家跃汤志敏
电视技术 2021年11期
关键词:掩码序列号重传

潘家跃,汤志敏

(伟乐视讯科技股份有限公司,广东 惠州 516025)

0 引言

可靠互联网流传输(Reliable Internet Stream Transport,RIST)协议是一种传输实时音视频流的技术方案。本文分析并论述该协议的特点及其关键实现原理。RIST 协议的一般应用场景如图1 所示。

图1 RIST 流传输示意图

RIST用于实现从发送端到接收端的单向流传输。数据流中每个报文的有效负载是由1~7 个TS 封装报文组成。数据流发送前,RIST 发送端会顺序定义每个报文的标识(0~65 535),可以通过一条或者多条通道发送到接收端。RIST 接收端可以根据接收到的报文标识进行重新排序,并检测是否有丢包。如存在丢包,可以请求发送端重传相关报文[1]。

1 媒体流传输的技术演进

为了达成高效传输的目标,流媒体传输的相关技术都是基于用户数据报协议(User Datagram Protocol,UDP)。后期为了达到新的应用标准,逐步定义了更多的字段来完成相应的功能。

流媒体传输技术演进如图2 所示。从最简单MPEG/IP 的UDP 传输数据包结构,到RTP 流传输协议,再到RIST 传输协议,图2 展示了各种模式对应的数据包结构,从中可以看出流传输技术的演进历史[2]。

图2 流媒体传输技术演进图

RIST 协议是基于RTP 协议再次开发的,兼容并扩充了RTP 协议。UDP、RTP 以及RIST 协议的对比如表1 所示。其中,RIST 协议包含Simple profile 和Main profile 两种模式[3]。

表1 流媒体传输技术对比

2 RIST 技术协议的特点

RIST 技术协议的特点及实现原理如表2 所示。

表2 RIST 技术协议特征表

3 丢包重传的实现机制

RIST 丢包重传机制如图3 所示。图3 详细描述了RIST 发送端和接收端如何实现丢包重传,具体步骤如下。

图3 RIST 丢包重传机制图

(1)发送端在发送报文到接收端的同时,会将报文备份到发送缓冲区中。

(2)接收端接收到报文后,首先对报文进行排序,解决报文到达顺序不一致的问题。

(3)在排序缓冲区超时的时候,接收端开始检测是否丢失报文。如果有报文丢失,就往发送端请求某个报文的重传。

(4)发送端从发送缓冲区中取出相应的报文,再次发送到接收端。

(5)接收缓冲区在RTT 的时间内,如果还是没有接收到该报文,可以再次要求重传。重传的最大次数跟接收缓冲区的大小有关。缓冲区越大,可以要求重传的次数越多,但是造成码流延迟的时间就越大。一般缓冲区设置为1 s 左右。

(6)数据包在接收缓冲区超时的时候出队列,进行接收视频流后续的解码处理。

(7)当数据包在发送缓冲区中超时,意味着不会再用到,也出队列,释放相关内存。

需要注意的是,发送缓冲区不能比接收缓冲区小[4],避免请求重传报文时发送缓冲区中的相关报文已释放。

4 基于位掩码和范围的丢包反馈方法

在当前的互联网传输技术中,当要连续传输多个数据包时,报文发送端会针对要发送的每一个报文,按顺序定义其报文标识(seq number),然后把报文一个个发送到接收端。而接收端接收到部分报文后,会检查接收的报文标识是否连续,是否存在丢包。如果存在丢包,接收端便会把丢失的报文标识反馈给发送端。丢失一个报文,回传一次,丢失两个报文,回传两次,依次类推。当发送端收到回传的报文后,解析其中丢失的报文标识,将对应的报文再次发送给接收端。以这样的方式实现丢包重传的功能[5]。

在上述方案中,对于丢失报文标识,一般是丢失一个报文便要回传一次,以告知发送端具体是哪个报文丢失了。这种方式直接了当,但是如果网络环境不好,出现了大量报文丢失的情况,那么回传的报文数也会急剧提升,会增加网络负担,然后可能又会加重网络丢包的情况。

针对上述情况,设计一种方案,通过接收端的一次报文丢失反馈,可以告知发送端多个报文丢失。

4.1 基于掩码的定义方式

反馈报文只需定义丢失的起始报文号以及其后16 个报文是否丢失,如果丢失了,用比特1 标识,否则用0 表示。起始报文号占16 个比特,其后16个报文标识也占用16 个比特,共计32 个比特就可以用来定义17 个报文是否存在丢包。这种定义方式比较适合用于零散丢包的情形。比如,接收端发现序列号为10 000 的报文丢失,并且后面的10 002和10 016 号报文也丢失了,那么起始报文号为10 000,位掩码就是二进制0100 0000 0000 0001。

在反馈的报文类型中,可以把负荷类型定义特别的数值(205)用于表示该报文是基于位掩码的定义方式。相关包结构定义基于位掩码反馈的协议定义,如图4 所示。

图4 基于位掩码反馈的协议定义图

4.2 基于范围的定义方式

传输过程中,一旦出现大量连续丢包的情况,比如有100 个甚至更多的连续丢包的情况,这时如果使用上述基于位掩码的反馈方式,每次最多只能反馈17 个丢包情况,那么就需要连续反馈多个丢包报文。针对这种情况,可以使用基于范围的定义方式。

基于范围的定义方式需要定义丢包的起始序列号和后续丢包数量。比如丢包的起始序列号为10 000,其后120 个报文都丢失了,这意味着序列号为10 000~10 121 的报文都丢失了。如果后续丢包数量为0,就表示只有起始序列号的那个报文丢失了。这种情况适用在大量连续报文丢失的情况。基于范围的丢包反馈报文的负荷类型是204。相关包结构定义基于范围反馈的协议定义,如图5所示。

图5 基于范围反馈的协议定义图

4.3 丢包反馈方式的选择

流的发送端需要同时支持两种丢包反馈的解析,并根据反馈包中负荷类型的数值确定反馈方式。如果是204,表示为基于范围的丢包反馈方式;如果是205,则是基于位掩码的丢包反馈方式。

流的接收端需要根据丢包的实际情况来选择反馈方式。选择方式按如下的计算方式来确定:如果是连续的丢包,并且连续丢包的数量大于等于17,则采用基于范围的丢包反馈方式;否则采用基于位掩码的丢包反馈方式。

5 结语

RIST 技术协议实现了媒体流传输目标的几个关键特性,即实时性、可靠性、安全性、高效性及兼容性。伟乐视讯科技股份有限公司在2021 年10 月正式推出支持RIST 协议的媒体网关产品。通过横向比较,相关产品的功能已经领先国内外同行。

猜你喜欢
掩码序列号重传
一种离线电子钱包交易的双向容错控制方法
低面积复杂度AES低熵掩码方案的研究
recALL
面向异构网络的多路径数据重传研究∗
基于布尔异或掩码转算术加法掩码的安全设计*
基于掩码的区域增长相位解缠方法
数据链路层的选择重传协议的优化改进
基于掩码的AES算法抗二阶DPA攻击方法研究
PP助手教你辨别翻新iPhone5小白不再中招
MPTCP中一种减缓缓存阻塞的重传策略