WebRTC 中的网络拥塞控制
如果无法正常显示,请先停止浏览器的去广告插件。
1. WebRTC网络传输控制
李超
音视跳动首席架构师
2. •
Content Title 1
3. • 实时通信的目标
• 存在哪些困难,或存在哪些矛盾点?
• WebRTC是如何解决这些矛盾的
4. 一些思考
问题一:开会时是喜欢在一个办
公室里开呢,还是更喜欢在线上
开?
问题二:如果有一场演唱会,你
愿意去现场呢?还是愿意在线上
听?
5. 为什么线上沟通与线下不同?
• 网络延迟过大
• 摄像头与人眼看到的效果不一样,如采集的角度过小
• 采集设备的质量参差不齐
• 现场的气氛无法被摄像头采集到
6. 实时通信的目标
尽可能逼近或
达到面对面交流的效果
7. 主要矛盾
8. 主要矛盾
音视频的服务质量与带宽大
小、网络质量、实时性之间的
矛盾
9. WebRTC解决矛盾的方法
10. 网络模块要解决的问题
• 实时性
• 抗丢包性
• 公平性
• 带宽评估的准确性和及时性
11. 如何能做到实时性?
12. 解决实时性的方法
• TCP/UDP?
• 通信双方是否可以走内网?
• P2P是否可以连通?
• 服务器中转 turn/sfu/mcu
13. 为什么极端网络下不能用TCP?
• 发送->接收->确认
14. 实时性的延时指标
15. 传输路径的选择
16. WebRTC抗丢包
17. 造成丢包的原因
• 链路质量差
• 带宽满
• 主动丢包
• 光纤被挖断
• …
18. WebRTC抗丢包的方法
• 丢包重传(NACK),
可以容忍10%的丢包
• FEC
19. 50%以上丢包靠谱吗?
20. 丢包重传
21. 什么时候适合丢包重传?
• 重传用时为:
1.5RTT+10ms
• 时延比较小的丢包适用
于丢包重传
22. FEC异或操作
• A ^
• C ^
• C ^
• A ^
• …
B = C
A = B
B = A
B ^ C = D
23. ULPFEC
• 1-9是正常的数据包
• Rn 是冗余包
24. FlexFEC
• 先横向进行纠错
• 再进行纵向纠错
25. 结论
• 丢包重传 NACK不适用于时延大的场景
• FEC不适用于连续丢包的场景
• 50%以上丢包是实验室环境,不是真实场景
26. 网络传输的公平性
27. 多个GCC连接的公平性
• 40ms加入第二个GCC连接
• 80ms加入第三个GCC连接
28. 与TCP共存时的公平性
• 20ms~100ms加入TCP
• REMB-GCC和SCReAM
表现不佳
29. 带宽评估的准确性
30. 通常带宽的使用
2Mbps
31. 更好的带宽的利用率
2Mbps
1.5Mbps
1Mbps
32. 带宽评估的准确度
• 基于丢包的带宽评估
• 基于延时的带宽评估
• Goog-REMB
• Goog-TCC
33. 基于丢包的评估方法
34. 基于延时的评估方法
35. WebRTC拥塞控制流程
36. 总结
37.
38.
39. •
Content Title 1
40. WebRTC_中的网络拥塞控制
扫描二维码 提交议题反馈