关于网络传输协议:声网自研传输层协议-AUT-的落地实践丨Dev-for-Dev-专栏

14次阅读

共计 4402 个字符,预计需要花费 12 分钟才能阅读完成。

本文为「Dev for Dev 专栏」系列内容,作者为声网大后端传输协定负责人 夏天。

针对实时互动利用对网络传输带来的新需要和新挑战,声网通过将实时互动中的应用层业务需要与传输策略的分层和解耦,于 2019 年自研外部公有的传输层协定 Agora Universal Transport(AUT),将异构网络下的各种传输控制能力汇聚起来,并于 2021 ~ 2022 年开始逐渐大规模落地在各项业务中,用一套传输协定 / 框架解决各项业务不同的传输需要。

相干内容分为高低两篇,本文将具体介绍 AUT 传输协定的设计和演进过程。

01 纷繁复杂的传输场景

作为一家提供实时互动平台的公司,传输毫无疑问是所有互动的基石,随着网络的倒退,互动的场景也越来越多样,传输的内容也越来越简单,实时互动下的传输次要面临以下需要和挑战:

媒体数据传输

RTC 声网最次要的实时互动场景,实时音视频的传输也是和下层业务逻辑耦合最为严密的传输场景,传输逻辑须要与媒体层面的信源编码紧密配合实现低提早的互动。

● 须要有一个牢靠的网络通道,来实现管制音讯的收发。

● 须要有多个牢靠的实时通道,来满足多路数据流(音视频等)的收发。

● 在带宽受限时,须要解决上述流的优先级治理问题(管制通道 > 音频 > 视频)。

● To B 场景下,要能让客户自主灵便地决定流的优先级和传输降级策略。

● 媒体中的相干策略,须要与以后的网络情况紧密配合。

● 在网内传输时,不同地区间和运营商间互通的网络品质迥异,各种网络 buffer、提早及丢包相差微小。

通用数据传输

声网推出的 FPA 全链路减速 产品在寰球范畴为各类利用(包含 Web/ 游戏 / 音视频等)提供端到端的链路减速服务。

● 同时反对端到端的牢靠传输通道和不牢靠传输通道。

● 作为通用数据减速通道,数据流量变动范畴较大。

● 低提早。

低提早可靠消息传输

RTM 是声网对外提供的稳固牢靠、超低延时、高并发的寰球信令与音讯云服务。

● 音讯体积小,音讯频率较高,整体流量绝对较低。

● 低提早。

低优先级牢靠数据传输

Report 是声网外部的埋点和事件数据上报,对内和对外提供问题排查的信息。

● 传输优先级和实时性要求低,要防止对其余业务数据产生影响。

● 与后端放弃长连贯,连贯数量微小,但绝大部分工夫闲暇。

各项业务网内传输

SD-RTN™是声网外部的寰球笼罩网络,笼罩 200 多个国家和地区,承载着不同业务的流量。

● 跨区传输中长肥链路(亦即长肥网络,带宽提早积大、丢包率高)的传输,大链路提早下的带宽俯冲 / 丢包要迅速复原。

● 不同国家 / 运营商之间的网络品质难以保障,丢包 / 抖动非常常见。

● 不同业务 / 客户 / 场景的不同水平 QoS 保障。

02 解决之道 – 自研传输层协定

现有计划的有余

传输需要各有不同,咱们首先 review 业界的各项产品,以求取得成熟的解决方案,但只管调研发现均存在各种不满足的中央:

计划 长处 局限
RTP/RTCP 能够定制化传输策略 无优先级治理; 短少多路复用能力;
TCP/RTMP 通用性好 容易队头阻塞且无奈多路复用;不能定制化传输策略,优化计划较少;
SRT 有局部弱网反抗机制 短少独立的拥塞管制;短少多路复用能力;
QUIC 具备多路复用、优先级治理和防排头阻塞 短少对实时非牢靠数据流的传输反对;短少各种弱网反抗和网络适配能力;协定大而全,但绝对于外部应用太重;

咱们从业务需要整顿发现,各业务之间的传输存在共性的同时也存在差异性,独自为一个业务的传输寻求已有的解决方案尚可满足,然而应用一种传输框架兼顾所有的业务场景绝非易事,这需要对各业务需要的深刻了解和形象提炼,业界的各项产品难也实现。

最终,自研传输层协定 / 框架成为了最轻便、适配性最强,但也是最具备挑战的解决方案。

AUT 的设计指标

咱们依据已有业务的传输需要和个性,梳理并总结了自研传输协定须要实现的几个指标,如下:

1、提供多路复用的传输通道以同时 承载不同的数据类型 ,并 对不同类型数据提供无效的形容 计划。

2、提供 足够的可扩展性,可能适配各种应用层的传输相干的逻辑和输出,例如整块数据 / 分块数据 / 零散数据等,实时传输往往和利用联合揭秘,对于底层传输管制的粒度也会要求更细。

3、对不同数据提供 不同级别的传输质量保证,例如不同的优先级 / 可靠性 / 冗余力度。

4、灵便的传输管制模块接口,可扩大实现不同拥塞管制、丢包检测、网络检测等策略。

5、底层网络接口化,可能 反对任何虚构网络

6、对下层 提供无效的网络品质剖析,不便下层针对不同网络品质利用不同业务逻辑。

7、适配不同的网络场景,适应异构网络下的乱序 / 抖动 / 长肥 / 限流等网络情况。

03 AUT 的演进过程

架构演进过程

● 最开始的原型验证阶段,咱们应用最简模型实现传输层的形象,并仅针对音视频媒体中的不牢靠传输场景下利用。

● 在实现原型验证后,AUT 演进成为 Session 和 Connection 的分层设计:Session 次要负责 Stream 的治理,不同的 Stream 实现不同的业务需要,Connection 负责业务无关的纯正传输管制,以此实现传输管制和业务需要的解耦;独立形象出网络收发相干的接口,使得 AUT 能够 Overlay 在各种网络上;引入加密 / 认证等平安个性;引入 MTU 探测、Padding 等网络状态探测能力。

● 实现分层设计后,AUT 的分层进一步细化:在 Stream 中逐渐演进出更细粒度的通用模块和专用模块,通过形象实现 Writer/Reader、组合流控制器和缓存等实现不同的信道编解码、流控和重传管制等操作,使得每条流的弱网反抗能力具备差异化以适配不同的业务数据;Connection 兼顾治理多个 Path,每个 Path 作为独立的传输管制单元互不影响,从可能同时反对多调 Path 同时传输;在传输算法上,引入了流量模型检测、丢包类型检测等更深刻的网络状态检测模块。

弱网反抗能力

随同 AUT 的演进,咱们对网络的剖析评估的维度也逐渐丰盛,这些网络分析能力是 AUT 弱网反抗能力的根底:

● 乱序检测能力:检测网络中的乱序水平,并在乱序条件下对传输算法做对应的调整,例如调整丢包检测算法和拥塞控制算法以适配乱序场景;

● 带宽探测能力:具备多种不同维度的带宽探测算法,在不同的探测需要下进行优势互补:packet train 探测带宽下限,以极小的流量含糊探测较高的传输带宽;padding 探测理论带宽,在利用数据有余时,将理论流量填充到网络中,实在地验证网络的理论容量;

● 流量模型检测能力:对理论网络流量的模型进行检测,例如公网中典型的 traffic policing/shaping 等流量限度策略,并针对性的调整发送控制策略;

● 丢包类型检测能力:对实在丢包的模式进行剖析,输出以后的丢包模型,例如随机丢包和拥塞丢包等,并依据丢包类型在其余模块中进行动静弥补。

在明确网络的以后状态后,AUT 外部的各种弱网反抗能力能力“隔靴搔痒”:

● Stream 级别的通用信道编码能力:Stream 外部实现了通用的分组编解码框架,针对 FEC 中的分组码可能非常容易集成,使得不同的 Stream 在重传、流控等差异之外,还具备不同编码力度的爱护,对外提供的传输伸缩性更宽泛;

● 动静反馈控制能力:AUT 的反馈次要是 Ack 包,无效的 Ack 反馈为外部算法逻辑的准确性提供保障:动静启用 AckAck 反抗 Ack 丢包;不同 Ack Delay 适配性能 / 提早;Ack 链路抖动 / 突发检测,弥补发送管制;

● 深度优化的拥塞管制 / 丢包检测算法:外部对典型的拥塞管制 / 丢包检测算法在各种场景下进行深度优化和摸索,在放弃算法自身个性的同时,适配实时传输中各种传输管制的需要。

传输成果比照

作为传输层协定,咱们同样于其余传输层协定对于局部实在业务场景进行了成果的比照,一些后果如下:

能够看到无论在高下带宽限度(100Mbps 和 4Mbps)、0-50% 的独自上行和同时上下行的随机丢包、20ms 和 200ms 的 RTT 场景下,AUT 相比 lsquic 可能做到更靠近理论带宽的吞吐量。

落地场景综述

截至目前,AUT 逐渐落地在了声网以下的业务场景:

RTC

AUT 在声网 RTC 业务中的整体所在位置如下图所示,能够看到,在用户接入声网边缘节点的 Lastmile,和声网边缘节点之间基于 SD-RTNTM 的网内传输,都应用 AUT 作为 4 层传输协定。

Lastmile 应用 AUT 协定,让咱们整体重构了媒体和传输的协作关系,实现了更快的网络状态跟踪(码率俯冲从 20+ 秒晋升到 3 秒左右)、更好的音频优先体验(无卡顿),并无效升高了卡顿和时延、对硬件编码的反对更好从而大幅晋升了弱网的用户体验。

在不同网络条件下,应用 AUT 后视频的局部指标如下:

FPA

FPA 中 AUT 的所在位置和 RTC 相似,FPA 内的传输数据不再局限于音视频,但因为复用 AUT,各种场景下的传输能力也失去了大幅晋升,咱们在不同地区测试 FPA 与公网的传输速率,相干数据如下:

RTM

在接入 RTM 的边缘节点中,RTM 应用 AUT 替换 TCP,应用 AUT 接入 RTM 在各种弱网下的达到率和时延大幅度当先于 TCP 接入。通过发送 1000 个音讯数据并记录其达到工夫,比照测试 AUT 和由 TCP 代表的公共互联网传输协定在三种状况下的测试成果显示,应用 AUT 相比 TCP 在限速 100Kbps 条件下均匀音讯达到提早降落 53%,丢包 20% 的条件下均匀音讯达到提早降落 67%,限速 + 丢包条件下均匀音讯达到提早降落 55%。

Report

咱们在连贯 Report 和 RTC 边缘同时应用 AUT,并在 Report 的 AUT 连贯中应用 LEDBAT 算法,如果此时各连贯存在共享的瓶颈带宽时,Report 连贯可能以极地竞争性参加传输,保障对其余业务数据产生最小的影响。

SD-RTN™

在声网 SD-RTN™ 网内应用 AUT 协定,使得网内传输具备提供不同 QOS 的能力,进一步提高了业务数据的传输效率,在长肥网络下应用 FEC 缩小重传次数,进一步升高弱网下的网内提早,对公网的中的 Traffic Policing/Traffic Shaping 能明确检测并适配,防止超发导致的丢包,网络品质评估更明确、实现了更好的网内门路布局,Metadata 机制极大简化了业务的管制面逻辑。

针对 RTC 网内传输后果,咱们抽取了 40 个机房进行比照,后果如下:

计划 AUT 应用前 AUT 应用后
达到率不达标工夫 00.00709% 00.00489%
抖动率不达标工夫 00.00577% 00.00564%

因为之前的 RTC 网内传输品质曾经非常优良,在达到率和抖动相干指标都曾经做到 4 个 9 的达标前提下,引入 AUT 后进一步升高不达标工夫,使得 SD-RTN™ 的品质向专线进一步看齐。

对于 Dev for Dev

Dev for Dev 专栏全称为 Developer for Developer,该专栏是声网与 RTC 开发者社区独特发动的开发者互动翻新实际流动。

透过工程师视角的技术分享、交换碰撞、我的项目共建等多种形式,汇聚开发者的力量,开掘和传递最具价值的技术内容和我的项目,全面开释技术的创造力。

正文完
 0