专栏首页媒矿工厂可靠互联网传输协议(RIST)简介

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

引言

视频压缩技术的进步和互联网基础设施的普及,使得流媒体在互联网上广泛传输。但是网络丢包一直是一个困扰人们的问题。市面上已经有许多私有的解决方案用于解决流媒体传输的丢包问题,但是由于是私有协议,各个厂商的设备之间无法实现互操作性。为解决在公共网络上的丢包问题,同时解决各厂商设备之间缺乏互操作性的问题,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

本文分享自微信公众号 - 媒矿工厂(media_tech)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RIST: What is the Future?

    本文来自The Broadcast Knowledge,演讲者为Rick Ackermans,射频与传输工程总监。演讲主要介绍了什么是RIST协议:RIST的历...

    用户1324186
  • 用于高端实时媒体工作流的RIST

    本文来自RIST Forum at IBC2019的一篇演讲。演讲的主题是用于高端实时媒体工作流的RIST以及它如何在高端工作流中发挥作用。

    用户1324186
  • 一些新旧视频质量评价指标

    本文是来自SF VideoTechnology的演讲,演讲作者是 Elecard Group 创始人兼总裁Andrey Pozdnyakov。演讲主要介绍了一些...

    用户1324186
  • Linux命令(9)——tcpdump命令

    tcpdump是一款类Unix/Linux环境下的抓包工具,允许用户截获和显示发送或收到的网络数据包。tcpdump 是一个在BSD许可证下发布的自由软件。

    Dabelv
  • 国际多通道语音分离和识别大赛讯飞再夺冠,不知不觉已「三连冠」!

    5月4日,有着最难语音识别任务之称的CHiME-6成绩揭晓:科大讯飞联合中科大语音及语言信息处理国家工程实验室(USTC-NELSLIP)在给定说话人边界的多通...

    新智元
  • H3C VRRP

    [S2-Vlan-interface10]vrrp vrid 10 virtual-ip 172.16.10.254  配置VIP地址

    py3study
  • 双通道音频缩放系统的智能手机(CS SD)

    本文首次提出了两种基于麦克风的音频变焦系统。音频缩放应用程序允许从前方方向捕获和增强声音,同时衰减来自所有其他方向的干扰源。完整的音频缩放系统采用基于波束形成的...

    用户6853689
  • muduo网络库学习之EventLoop(四):EventLoopThread 类、EventLoopThreadPool 类

    1、EventLoopThread(IO线程类) 任何一个线程,只要创建并运行了EventLoop,都称之为IO线程 IO线程不一定是主线程 muduo并发模型...

    s1mba
  • muduo网络库学习之EventLoop(四):EventLoopThread 类、EventLoopThreadPool 类

    muduo并发模型one loop per thread + threadpool(计算线程池)

    用户1058143
  • 蜂鸟e203,芯来n201处理器在FPGA上移植总结

    本处理器本来是基于芯来科技自定制的FPGA上实现的,本次通过把其移植到ARTY和GENESYS2板子上,过程中走了一些弯路,因此总结一下:

    数字IC小站

扫码关注云+社区

领取腾讯云代金券