共计 5568 个字符,预计需要花费 14 分钟才能阅读完成。
编者按:** 近日,寰球软件案例钻研峰会在北京召开。寰球软件案例钻研峰会(简称“TOP100Summit”)是科技界一年一度的案例钻研榜单,每年甄选年度最值得借鉴的 100 个好案例,旨在揭幕优良研发团队背地的做法、思考,为读者提炼最佳学习门路梳理、思考案例长尾价值。
在壹佰案例峰会的“架构演进 / 工程实际 / 开源落地”专题上,声网 Agora 首席架构师刘勇发表了《QOE 驱动下的分布式实时网络构建:Agora SD-RTN 的演进》的演讲。他重点分享了 SD-RTN 和 Agora RTC 零碎 如何在放弃线上无停机无大故障的状况下保证系统逐渐降级、扩容和实时交互体验的品质继续改良,撑持了客户每天数十亿分钟的通信时长。
刘勇 2001 年浙江大学本科毕业;2013 年清华大学博士毕业;2014 年退出声网 Agora,从事整体零碎的设计和开发。提出并设计、主导开发了 SD-RTN 零碎,基于 SD-RTN 搭建了 Agora RTC 零碎等。C++ 语言的忠诚粉丝,互联网畛域永远的新兵。
摘要
随着网络和视频技术的倒退,以实时音视频为主的实时互动利用对长距离网络传输的低延时和高可靠性带来了新的挑战和需要。与传统网络架构和 SDN 技术不同,声网 SD-RTN 构建了以笼罩网络为次要思维的低延时高可靠性网络,配合基于 UDP 的多路复用传输协定 AUT,为 RTC 等实时服务提供了底层网络保障,保障了 Agora RTE 用户在寰球范畴内的端到端体验。
• 通过将 RTC 服务和网络传输分层、解耦,不同于传统 RTC 协定如 RTP 协定等将音视频媒体流和网络传输协定重度耦合的计划,提供了可伸缩、灵便且业余的零碎架构,保障了服务的品质
• 利用笼罩网络和 SDN 的思维,保障了肯定规模的寰球组网的实时网络云的网内传输品质
• 提出了 4 层多路复用实时传输协定 AUT,基于该协定加强了 Agora RTC/RTE 在 lastmile 端的体验品质,并为下层利用提供了形象灵便的管制机制
SD-RTN 与 Agora RTC 服务架构
RTC 零碎架构的演进
Real – Time Communication 顾名思义,既然是通信,通信的单方或者多方必须要发动连贯或者握手。在常见的 2 人场景中,通信单方能够通过信令服务来发动 P2P 连贯,间接实现数据通道的建设。
RTC 零碎架构的演进(P2P/Mesh 架构)
长处: 服务器负载轻,只做信令的逻辑
毛病:
• 依赖单方的网络环境,实现互联。穿透成功率低,可用性不能保障
• 单方处于不同网络环境下,通信品质依赖于单方间的互联网品质,在跨区域、网络自治域时的品质存在着不稳固,不能提供稳固的 QoE 保障
• 多人会议场景下,须要两两建设 P2P 通道,可用性将显著升高;同时存在着上行节约和性能问题
• 零碎架构可伸缩性差
论断: 综合以上因素,P2P 架构不适宜寰球范畴内的 RTC 根底服务提供商的底层架构,只能实用于小型受限特定畛域,或者作为晋升特定场景笼罩品质的无益补充。
RTC 零碎架构的演进(MCU 架构)
MCU(Multipoint Conferencing Unit)计划由一个服务器和多个终端组成一个星形构造。各终端将音视频流发送给服务器,服务器端会将在同一个房间中的所有终端的音视频流进行混合,最终生成一个混合后的音视频流再发给各个终端。
毛病:
• 混流服务器资源耗费大
• 延时大
• 伸缩性差
• 灵活性差
RTC 零碎架构的演进(SFU 架构)
SFU(Selective Forwarding Unit)计划由一个服务器和多个终端组成,SFU 不对音视频进行混流,收到某个终端共享的音视频流后,就间接将该音视频流依据终端的订阅后果,来转发给房间内的其余终端。
利用这种公布 - 订阅的模式,就能够实现灵便的多人互动场景。在上图的简化模型中还存在着两个问题:1)多人场景下, 用一台服务器去服务地理位置散布较远的通信方,笼罩品质就得不到保障,同时还存在着对繁多会话的并发参加人数的限度,零碎的伸缩性差。
于是业界天然想到了分布式多服务器协同计划,尽量采纳就近接入的形式,它具备:
• 伸缩性好
• 笼罩品质好
• 但对服务器间网络品质形成了挑战
将 SFU 架构做分布式扩大,其具备如下 长处:
• 离接入者近,防止了远距离接入带来的对 lastmile 的影响
• 因为 RTC 通信具备区域性的特点,在本区域的通信会话汇聚到本区域的边缘服务中心中,有利于升高通信的时延
毛病:
• 不同边缘集群间存在着网间流量,带来了老本的回升
• 不同边缘集群间的数据交互对网络品质带来了挑战:如跨地区、国别和运营商等。
利用分布式边缘计算的架构,通过致力优化边缘计算中心间的网络品质,可能将公共互联网络的不稳固对用户体验带来的影响尽量减少。基于这种思维,声网便提出 SD-RTN 的概念。
Agora SD-RTN 的提出
设计指标:
不同于 RTP/RTCP 等协定及 webRTC 及其衍生的服务端架构,设计上,咱们心愿通过横向分层的零碎设计,升高零碎耦合带来的复杂度。通过一层独立于音视频媒体协定的网络传输协定及服务架构,让音视频 RTC 服务专一于业务逻辑自身,让网络算法和协定设计及网络硬件架构工程师施展其各自特长的畛域来满足下层服务对 QOS 的要求:
• 协定解耦
• 服务解耦
• 充沛灵便利用已有的网络基础设施,如公共互联网、专线等的能力
• 平安
Agora SD-RTN 形象了 RTC 分布式架构下对网络传输的需要(低延时、高牢靠),采纳协定分层设计,将 RTC 服务和网络传输解耦,实现了协定、模块和服务的层次化和解耦:
• SD-RTN 对下层出现的是一个 overlay network 的 3 层接口
• SD-RTN 是基于 UDP 的运行在异构网络下不依赖特定硬件和软件的分布式网络系统,能够针对不同的 qos 需要进行路由实时抉择和流量调度
SD-RTN 与 Agora 层次化服务架构
下图是整个 Agora 的服务架构,咱们能够看到 SD-RTN 与 4 层传输协定 AUT 形成了 Agora 实时云的网络根底:
Agora SD-RTN 架构
SD-RTN 零碎又包含管制面和转发面:
• 管制面
链路探测和容量评估零碎
边缘节点信息收集零碎
路由调度零碎
管理系统
• 转发面
上面详述一下链路探测和容量评估零碎、路由调度零碎两局部。
1、链路探测和容量评估零碎: 依据调肯定的调度策略,来定期的测试不同服务器集群间的网络品质数据,剖析网络的模型,尤其是有损网络下的品质,进行汇总和评估
2、路由调度零碎: 路由剖析和调度零碎相似于 SDN-Controller。SD-RTN 调度零碎是一组实时的智能化承当路由布局和负载平衡的并行计算服务,依据全网汇总来的链路品质、节点间的实时传输带宽、QOS 要求和转发节点的负载等,来计算和下发网内的数据流的路由
Agora SD-RTN 与 SDN
RTN 零碎在设计和继续演进上,从已有的网络设计实际中尤其是 SDN 的架构上借鉴了一些思维。
相同之处
SD-RTN 与 SDN 的设计思维总体类似,次要体现为:
• 将路由器的简单管制面逻辑和转发面逻辑拆散
• 将管制面的路由策略的计算由集中式的控制中心(SDN-controller)来配置或计算
不同之处
• SDN 转发面须要依赖流表来管制转发逻辑,而随着网络规模的增大,对流表的查问、保护和更新就变得复杂,尤其是多跳的情景;SD-RTN 利用 SR 等技术简化了转发的逻辑
• SD-RTN 在底层依据网络链路评估情况,依据所需的 qos 级别,采纳 FEC 或多路冗余等技术,来实现包级别的实时牢靠投递
• SD-RTN 是一个笼罩网络的设计,不依赖特定硬件和软件,能同时利用公共互联网和专有线路,进行链路计算和流量散发
Agora SD-RTN 的演进
演进的过程分三个阶段:
• 初始阶段
SD-RTN 和 RTC 服务重度耦合,除链路评估和路由算法外,协定自身和服务都集成在 RTC 接入和转发器中
• 较成熟阶段
RTC/RTN 协定分层和模块化,大部分服务解耦,为 Agora RTC 提供专用服务
• 以后和将来方向:
RTN 服务化,对 Agora 云内业务提供服务化接口(进行中)
Agora SD-RTN 带来的收益
• 开发效率
SD-RTN 和 AUT(见后)的引入,使得下层业务不必再关怀底层网络传输的品质问题,能够专一于业务逻辑自身的开发,升高了零碎的复杂度,简化了业务的模型,缩短了 RTC 业务开发的迭代周期
• 传输品质
针对不同 QOS 要求,SD-RTN 提供了相应的不同传输策略,配合 AUT 协定来实现相应的品质要求。
SD-RTN 关注和优化两个网络品质的技术指标:
• 时延
• 包投递 / 送达成功率
Agora SD-RTN 质量指标(时延)
而在包投递成功率这一指标则进行了进一步的细分,针对常见的 Agora RTC 需要,RTN 重点关注了以下几个指标并进行继续优化:
1、2s 时延内的包投递达到率在 99.9% 以上的达标服务工夫。该指标针对个别直播类业务观众端的时延需要。该指标达标时,绝大部分直播观众端在无其余因素影响下,可能晦涩无卡顿。(曾经根本优于基于 CDN 的直播技术计划)
2、800ms 时延内的包投递达到率在 99.9% 以上的达标服务工夫。该指标针对 Agora 极速直播业务场景下的观众端的品质要求
3、200ms 时延内的包投递达到率在 99.9% 以上的达标服务工夫。该指标关注一般 RTC 的通信需要。该指标达标时,通信单方能够晦涩对话,而无延时感和抢话的情景
Agora SD-RTN 质量指标(jitter 200ms 达到率)
Agora SD-RTN 面临的挑战和问题
• 扩展性(通过和 RTC 零碎配合,实现程度扩大)
• 有损发散网络下的链路品质评估和容量评估
• 疾速流量调度算法(NP 问题)
• 安全性 (Ipsec)
Agora RTC over RTN 架构
Agora RTC 零碎,在传输层上有以下几个次要服务:
• AP/LBS 服务
• RTC SFU 服务
1、Native
2、webRTC
3、RTMP
• 频道同步服务和订阅服务
• 能力协商和仲裁服务
Agora Universal
Agora Universal UDP-based Transport Protocol (Aut)
RTC 场景中,须要:
• 一个牢靠的网络通道,来收发管制音讯
• 须要多条尽量牢靠的实时通道,来满足多路数据流(音视频等)的收发
• 在带宽受限时,须要解决以上流的优先级治理问题
• To B 场景下,要能让客户本人自主灵便的决定流的优先级和传输降级策略
RTC 场景下对网络传输带来的挑战
举例来说,在带宽受限时,往往须要保障控制指令的高优先级发送;场景化利用中,比方有保障音频的发 送;保障老师优于学生等。思考一种惯例实现,控制指令走 TCP 通道;而每条音视频流走一条 RTP/RTCP 的计划。这种情景下,多条流的竞争下:
• 如果 RTP/RTCP 通道采纳的 TCP-friendly 控制策略,音视频流和网络上其余数据流一样,就取得不了高优先级保障
• 如果采纳了激进的拥塞控制策略,那么可能会阻塞 RTC 控制指令通道
• 多个 RTP/RTCP 通道的拥塞控制策略,如何调整保障高优先级流
在这种场景下,咱们须要一个多路复用的传输通道,在同一个拥塞管制模块下,对流进行优先级治理,进行统筹安排:
• 利用 TCP 通道进行逻辑上的多路复用如 RTMP 的最大问题在于 TCP 的实现会导致排头阻塞问题
• Quic 针对 web 的利用场景,从协定层面实现了传输通道的多路复用、优先级治理和防排头阻塞,但它对实时非牢靠数据流则没有反对
• 实时流的使用者对于底层的管制要求要比牢靠数据流要多,如何进行媒体和网络传输分层设计和实现不是一个无关紧要的问题
• 灵活性与大客户的定制化需要的矛盾: 如果不能很好的做好灵活性的设计,那么很多大客户的需要就变成 了定制化的需要,不得不通过大量的 hard code 形式来解决
设计指标
• 通用性:应用一套协定设计来满足不同场景的需要,不仅 RTC,也包含牢靠数据通道
• 传输协定中原生的流反对:
1、多路复用,灵便的优先级治理
2、通过流中捎带自定义的 Stream Meta 信息,给使用者进行流的管理决策
• 灵便的拥塞管制模块接口,可扩大实现不同的拥塞控制算法
• 底层网络接口化,可能反对 SD-RTN,udp socket 和任何虚构网络等
Aut 协定设计参考了 QUIC 的协定设计,但进行了大量的从新设计。
• 删除了一些版本治理和协商机制
• 减少了如为反对实时流场景利用中的 Stream Option/Meta 信息机制等
• 设计了实时流的接口和实现
Aut 协定除了对实时流的反对外,还包含了:
• 加密
• 连贯迁徙
• FEC 反对
• MultiPath(试验中)
Aut 在 RTC 中的利用
Aut 协定在 Agora RTC SDK Nasa2(以后 3.0.0.18) 版本中作为底层传输技术曾经失去了技术验证,为下层利用提供了高质量的传输保障和灵便的管制机制。灵活的管制和反馈机制为下层引擎或利用优化提供了可能。
Aut 在 RTM 中的利用
Aut Over Aut: 点到点的网络减速 (RTNS 服务)
总结
• 零碎架构遵循逐渐演进,灰度迭代的形式,要与客户需要及生产规模相适应,不同阶段采纳最正当、合算的计划,同时保障技术方向演进的持续性和一致性
• 零碎设计要充沛关注、调研已有的零碎和设计实现,跟踪最新的技术演进(学术界和工业界)
• To B 行业里,一要尽量满足客户和产品的需要,也要防止技术产品我的项目化、外包化。和产品一起尽量寻求讲将抽取客户的公共痛点难点,思考进零碎的整体演变中
• 零碎迭代过程中,须要考查零碎的:
1、迭代线性性。控制线上零碎的迭代复杂程度
2、可察看性。基于数据驱动的形式来察看和保证系统改良的有效性
ROI 剖析
• SD-RTN 和 Agora RTC 零碎 6 年多放弃线上无停机无大故障的状况下实现了零碎的逐渐降级、扩容和实时交互体验的品质继续改良。撑持了客户每天数十亿分钟的通信时长
• 随着 SD-RTN 和 AUT 的逐渐交付,为 Agora 云内业务搭建零碎提供了快捷统一的计划;并利用 AUT 协定能力通过 RTC SDK 为客户的定制化需要提供灵便自助的解决方案
以上内容来自刘勇老师的分享。