阅读 2894

QUIC 将会是 WebRTC 的未来么?

欢迎访问 RTC 开发者社区,与更多WebRTC、实时音视频开发者交流经验。 

QUIC 自从2013年为人所知,最近两年一直是讨论的热门话题。原因是,QUIC作为传输层协议发挥了TCP、UDP的优点,添加了加密,速度倍增,其它方面也有改进,使得设备上部署速度和更新速度较之前都有提升。

你可能认为传输层协议应该与在它上面运行的App分开设计,QUIC的历史与HTTP/2有千丝万缕的联系,并且QUIC上的HTTP/2几乎是同时发展的。关于IETF103,QUIC工作组实际上需要正在进行的工作局限于单一使用情况。这项技术很热门,并有很多公司投入了大量资金,这就是为什么如今有多种实施方式。

QUIC背后的主要参与者当然是网络公司,还有CDN。Akamai是此技术的一个重度参与者,并且其中许多员工都是规范和说明的制定者。

通常网络上的媒体会被分为两个生态系统:广播和实时。在广播领域里,大多数分布是基于文件和HTPP的。在实时领域里,大多数通信是基于RTP(RTSP/RTCP/STRP/WebRTC…)。

这里有一个关于RTP和QUIC的问题需要额外讨论:我们应该用RTP作为实时媒体,还是应该放弃它,因为RTP中的某些机制对于QUIC中的某些机制来说是多余的?如果我们使用RTP,我们应该如何规划架构,并且基于这些协议应该如何规划多路传输?如果我们放弃它,我们如何管理不在QUIC中的媒体机制?

事实上,许多组织和个人都很对于通过 QUIC 传输(实时)媒体感兴趣,并且开始着手去做了。QUIC 小组也有任何理由继续迟疑。

下面是一些我们知道的一些举措,可能有更多。

A. 来自ORTC,一些人已经实现了早期的QUIC传输和QUIC流,代码可以在Chromium代码库找到。目标是只让数据传输,而不包括媒体。

B. 为了在媒体栈中提供更灵活的pipeline,就像在斯德哥尔摩的一次会议提出的一样,Google团队正在推动WebRTC中更多的模块类来允许人们使用自己的编解码器,加密方式,媒体和网络传输方式。

这里有一些关于下一代 WebRTC 版本的信息:

支持添加与视频帧层第一个包不同的RTP扩展

重构类表示编码的视频frame

将代表视频编解码配置的类数量降低到合理的数字

将每一帧加密接口集成到WebRTC

实现可插入的媒体传输

将图片Id加入一般的RTP打包形式

将帧加密解密加入媒体频道中

C. RMCAT工作组的主席,负责处理带宽评估和拥堵控制的问题,和来自callstats.io的另一位成员,一同在做direct-media-over-QUIC与RTP-over-QUIC

D. AVTCORE工作组,负责管理与RTP有关的一切,正在研究QUIC多路传输,以及其它RTP需要支持的协议。

E. TAPS工作组正在关注如何如何支持QUIC为它们的传输协议之一。

这些工作组各自的目标不同,并且在同一个分组里可能还有更多的分支。QUIC的使用情况数量等于UDP和TCP的使用情况数量之和。当然了,对于每个人来说,他们的use case才应该是最重要的。

1.0为止不再增加新特性

这是包括Apple在内的许多公司的明确立场。不同的人对此有不同的理由。W3C工作组正在结束目前章程的进度,但是一些计划的延期执行和simulcast所需的 APIs使得simulcast测试变得困难。就像近期在Lyon的一次会议上提到的:“Simulcast目前最大的难题,像一座高山。不仅需要考虑难度,更大的疑问是需要花费我们多少时间。”对于W3C员工和主席来说,这是一个主要的担忧。Apple和其它的供应商也想稳定webrtc1.0版本,还有一些供应商表示,正在研究包括QUIC在内的其它方面。

QUIC仍不够成熟

这是Mozilla在去年一直以来都坚持的态度,不仅仅在斯德哥尔摩的面对面会议中提出过,还在近期在 Lyon 举行的 TPAC 会议中提到了。那些不同意的人表示,QUIC小组的主席(一个Mozilla员工)致力于在Q4完成标准文档,其它小组(包括 WebRTC)不应该继续等下去,因此WebRTC应不应该采取QUIC成为了一个棘手的问题。也有人认为,QUIC 已经被应用了起来,所以如果 WebRTC 小组不作出决定,那么他们将自己来分别着手解决。(这样的争论也发生在 SVC condec 上)

我个人认为:

QUIC是未来,我们可以推迟它,但是无法避免。WebRTC也曾有过相同经历。

直接放弃RTP将会让很多现存的WebRTC基础设施受到影响。QUIC背后的团队起初花费了很多时间设计技术选型,使得QUIC可以帮现在的传输技术得到更大的优化,并且让这项技术得到更快更广泛的采用。我相信他们也在 QUIC 应用于实时传输方面做出了同样的努力。

最后给希望开发实时音视频App,或希望学习 WebRTC 的开发者推荐一些博文与资料