前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可靠互联网传输协议(RIST)简介

可靠互联网传输协议(RIST)简介

作者头像
用户1324186
发布2019-08-14 16:33:34
5.1K0
发布2019-08-14 16:33:34
举报
文章被收录于专栏:媒矿工厂

引言

视频压缩技术的进步和互联网基础设施的普及,使得流媒体在互联网上广泛传输。但是网络丢包一直是一个困扰人们的问题。市面上已经有许多私有的解决方案用于解决流媒体传输的丢包问题,但是由于是私有协议,各个厂商的设备之间无法实现互操作性。为解决在公共网络上的丢包问题,同时解决各厂商设备之间缺乏互操作性的问题,Video Services Forum (VSF) 于2017年初成立了可靠的互联网流传输协议(Reliable Internet Stream Transport,RIST)小组,为协议创建通用规范[1][2]。

RIST系统基本框架

基本RIST系统包括发送端(A)和接收端(B),它们连接在可能有损的网络上,同时可能启用了多路径传输。

图1 基本RIST系统

RIST的首选流传输协议是RTP配合RTCP。RTP发送端口为偶数P,则RTCP端口为P+1。推荐发送端RTCP使用Sender Report (SR) + CNAME,接收端使用Receiver Report (RR) + CNAME。

RIST系统应使用基于NACK的选择性重传协议来恢复数据包丢失。该协议的一般操作如下:

• 除非发现数据包丢失,否则接收方不与发送方通信

• 一旦检测到丢包,接收方将请求重传丢失的数据包

• 接收端将实现一个缓冲区,以适应一个或多个网络往返延迟和数据包重新排序

• 如果解码器缓冲区足够大以允许将恢复的分组以正确的顺序放置在解码器流中,则可以多次请求数据包。

RIST数据流

图2 RIST编解码器

RIST编码器:RIST编码器负责接受视频输入(基本版本接受多种媒体格式的RTP流)并生成适当标记的输出流。除了RTP SSRC,目标IP地址和UDP端口号之外,不对流进行重大修改。另外,RIST中不应该阻止用户使用多个同时进行的IP连接。

当数据包被发送时,编码器会在一段时间内存储每个出站的包的副本以应对解码器请求重传该包的情况,注意,此缓冲区不会为整个端到端数据包传输时间添加任何延迟。

数据包可以通过标准单播或多播IP网络从RIST编码器传输到RIST解码器,预计偶尔会遇到数据包丢失的情况。

RIST解码器:RIST解码器负责整个传输系统的大部分处理。当数据包到达解码器时,它们将被接收在一个缓冲区中,该缓冲区处理无序数据包并根据它们的序列号将它们放回正确的顺序。该操作还将支持多个信道的绑定(例如,小区绑定),从而应对沿着不同路径行进的数据包经历不同的延迟到达的情况。该缓冲区的大小至少应与编码器和解码器之间的最佳和最差路径延迟之间的差异一样,并且具有足够的额外余量以适应由网络引起的任何可能的包重排序。

下一个主要处理步骤是分析RTP分组号,并通过查找序列中的间隙来确定是否丢包。如果是,则解码器将需要向编码器发出请求以重新发送丢失的分组。

分组重传:分组重传由解码器发送(未经请求的)NACK RTCP包到编码器来启动。该NACK中的数据指示丢失分组的序列号。当编码器收到此消息时,它从其缓冲区中检索指示的数据包并将其重新发送到解码器。当数据包到达解码器时,必须将它们放回解码器缓冲区内的正确序列中。

多次往返可用于对延迟不是特别敏感的应用中。对于这些情况,解码器可以多次向编码器发送NACK消息以请求丢失的数据包。可以进行的重试次数(n)受到解码器缓冲器大小的限制,该大小必须至少是最大往返延迟的n倍。注意,每个数据包必须以FIFO方式通过解码器缓冲区,故RIST系统的整体延迟由解码器缓冲区的大小驱动。解码器输出使用去抖动缓冲器来平滑出站数据包的流量。

性能测试

性能测试结果引用自Cobalt Digital公司的报告[3]。测试使用媒体比特率为8Mb/s(1080i@59.94),模拟RTT时延200ms,持续时长2分钟,分别模拟单个丢包和连续5个突发丢包两种情况,记录在重传请求次数在1-10的情况下,仍可以恢复数据的最大丢包率。每个测试重复10次,测试结果如下:

图3 单个丢包性能测试

图4 5个突发丢包性能测试

上述结果表明,无论是单个丢包还是5个突发丢包,重传请求次数大于6就可以抵御10%的丢包率。

技术建议

VSF小组已经发布了第一版RIST技术建议TR-06-1[4]。该建议中只包括RIST软硬系统应该具有的最小能力,但是后续可能会增添新的特性,例如支持V**隧道、加密、NAT遍历、自动会话协商、通用音视频编解码器等。该建议还给出了RIST系统参数建议的默认值:

• 接收器缓冲区:1000毫秒

• 发送缓冲区:等于或高于接收缓冲区

• 重新排序缓存:70毫秒

• 每个数据包的重传请求数:7

可以从这些参数导出重传请求之间的间隔。它是接收器缓冲区减去重新排序部分除以重发请求的数量。对于上述值,结果为132毫秒。

参考资料

[1] http://www.videoservicesforum.org/RIST.shtml

[2] http://www.videoservicesforum.org/activity_groups/RIST_poster_for_VidTrans2018Feb25.pdf

[3] http://www.ipshowcase.org/wp-content/uploads/2019/05/1530-Ciro-Noronha-NoronhaC_RIST_Measurement.pdf

[4] http://vsf.tv/download/technical_recommendations/VSF_TR-06-1_2018_10_17.pdf

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 媒矿工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档