技术编程,网易|网易云信流媒体服务端架构设计与实现( 六 )


此外 , ARQ模块和FEC模块产生的 , 流量也会统筹的告知抗丢包综合控制器 , 最终由抗丢包综合控制器进行公式的参数调整 , 最终做到在不影响网络质量的场景下做到最大的丢包场景 。
3.3.2 传输层下行QoS策略
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

下行QoS服务器策略在复用了上行QoS服务器策略的基础上增加了一些其他的QoS手段 , 主要有四个模块:一是设计出下行接收端可弹性接收流组合的方案;二是准确的探测出用户真实的下行宽带;三是制定合理的宽带分配方案;四是进行流量的平滑发送以及拥塞控制 。
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

这张图展示了四个模块相互作用的关系 。用户在上行发布了两天流 , 要做到下行的最佳体验 , 实际接收到的流要匹配用户的真实带宽 。如果上行发布的都是大流 , 而用户的带宽不足 , 无法支撑所有大流的支撑 , 可能就会将某些大流切成小流 。
智能订阅
总体就是首先是发布订阅管理模块 , 基于多流的发布订阅管理 , 进行下行的一个可智能选取的方案 。其次是带宽分配模块 , 探测出用户真实的带宽之后告知带宽分配器 , 再结合用户实际订阅以及上行流的码率等数据后 , 帮助用户选取最佳的接受组合 。最后是总体把控拥塞控制模块 , 它的工作是进行下行流量的平滑 , 另外 , 它基于其他的设计能够避免让网络产生拥塞 , 最终让下行产生最佳的效果 。
下行带宽探测
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

接下来我将介绍以上四个模块是如何具体操作的 。第一个模块是发布订阅模块 。第二个模块是带宽探测模块 , 它是基于GooGle的BBR音视频场景下的优化 , 主要有六点:一是probe_RTT阶段的隐藏弱化;二是上行网络丢包带宽补偿;三是上行网络RTT突变以及高jitter场景优化;四是下行链路抖动自己丢包的优化;五是padding流量的优化;六是快速上探机制的实现 。右图展示了我们优化后的BBR在弱网下的探测效果 , 基本做了探测准确度为95%以上 。
带宽分配策略
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

探测出带宽后如何结合地域关系、上行的实际码率做下行带宽的分配 。假如下行用户实际带宽有2M , 订阅了A、B、C的大流 , A、B、C的大流的最大码率和最小码率分别是2M、800k , 1M、700k , 1.6M、1M 。那么下行用户实际带宽2M是不可以接收所有的大流的 。
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

针对以上问题 , 带宽的分配策略为:首先基于现有大小流进行选择性接收;其次综合所有下行接收端的带宽以及预分配结果 , 反馈到发送端 , 进行上行流的码率的压制 。
拥塞控制
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

拥塞控制模块主要有四个模块:一是平滑发送;二是基于流级别的优先级策略以及可选择性发送策略;三是拥塞避免;四是拥塞缓解 。
技术编程,网易|网易云信流媒体服务端架构设计与实现


推荐阅读