目前主流的信令传输协议基本是使用 WebSocket, WebSocket 是基于 tcp 来实现的,其抗弱网能力比较弱,在高丢包的网络环境下无法保证信令的可靠传输,基本会出现延时增高,链路断开等问题。目前新的协议 WebTransport 已经正式使用,百家云已经使用 WebTransport 来改善信令的传输能力。本文将基于我们的实现做一个探讨总结。
WebTransport 是一个全新的 Web 传输协议,其基于 quic 协议,quic 协议基于 udp 协议;旨在为 Web 应用程序提供高性能、低延迟的数据传输机制。该协议设计用于在 Web 浏览器和服务器之间传输数据,以支持更高效的通信。以下是一些关键特点和方面:
-
多路复用(Multiplexing): WebTransport 允许在单个连接上进行多个并发数据流的传输。这可以提高网络利用率,降低延迟。
-
低延迟: 协议的设计考虑到了减少通信的延迟,使得 Web 应用程序能够更迅速地进行数据传输。
-
可靠性: WebTransport 提供可靠的传输机制,确保数据的可靠传递,适用于对数据完整性要求较高的场景。
-
适应性: 协议支持不同类型的数据传输,包括双向流、单向流等,以满足不同应用场景的需求。
-
安全性: WebTransport 考虑到了安全性问题,采用了一些安全机制来保护数据的传输过程。
-
可扩展性: 协议的设计允许将来添加新的功能和扩展,以适应不断变化的网络通信需求。
Web 应用层协议栈
WebTransport 优势
1. 更快的握手连接(1-RTT(首次) 或者 0-RTT)
2. 使用 UDP 底层协议,可以支持发送可靠的数据流(单向和双向,多条流同时使用)和不可靠的数据报
3. 更高的抗丢包能力和更好的拥塞控制
4. 改善了队头阻塞的问题
5. 不依赖 ip,port 四元组,可无缝切换网络
WebTransport 信令方案
当 rtt 低时使用 1 条双向流传输数据
当 rtt 高时使用 2 条双向流传输数据,每一条信令发双份,服务器使用最先到达的数据,后到达的直接丢弃
WebTransport 可在双向 50%,单向 70% 的丢包下稳定运行
WebTransport 性能数据
测试方法说明
1. 在内网的一台服务器上部署 server 端
2. 本地启动 web 服务使用最新的 chrome 访问测试用例页面
3. 通过弱网工具(本测试使用 mac 系统插件 Network Link Conditioner)设置不同的丢包和延时
4. 通过 WebTransport 与服务器建立连接,循环发送信令到服务器,服务器马上原样返回
5. 记录每次信令往返延时,最终通过 echarts 绘制出折线图
上下行丢包 50% 下 WebTransport 的表现
上下行丢包 30% 下 WebSocket 和 WebTransport 的对比
上下行丢包 40%,400ms 延时下 WebTransport 的多 stream 对比
WebTransport 目前存在的问题和优化方向
1. 上下行高于 60% 丢包下容易断开链接,重连有较大概率无法握手成功
2. 客户端可以调高握手超时时间(chrome 浏览器为 4 秒),去掉心跳来提高 WebTransport 的抗丢包能力。
总结
通过上面的实验可以看到使用 WebTransport 来传输信令在弱网的情况下会比传统的 WebSocket 好很多,特别是使用多路传输可以大大提高抗丢包能力;根据我们的实验,在高丢包下建议使用 4 路流来同时发送信令从而达到一个很好的平衡。
https://www.baijiayun.com/brtc/文章来源:https://www.toymoban.com/news/detail-806297.html
https://docs.baijiayun.com/resources/docs/open/download/tpl.html文章来源地址https://www.toymoban.com/news/detail-806297.html
到了这里,关于web 端 udp 信令优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!