web 端 udp 信令优化

目前主流的信令传输协议基本是使用 WebSocket, WebSocket 是基于 tcp 来实现的,其抗弱网能力比较弱,在高丢包的网络环境下无法保证信令的可靠传输,基本会出现延时增高,链路断开等问题。目前新的协议 WebTransport 已经正式使用,百家云已经使用 WebTransport 来改善信令的传输能力。本文将基于我们的实现做一个探讨总结。

WebTransport 是一个全新的 Web 传输协议,其基于 quic 协议,quic 协议基于 udp 协议;旨在为 Web 应用程序提供高性能、低延迟的数据传输机制。该协议设计用于在 Web 浏览器和服务器之间传输数据,以支持更高效的通信。以下是一些关键特点和方面:

  1. 多路复用(Multiplexing): WebTransport 允许在单个连接上进行多个并发数据流的传输。这可以提高网络利用率,降低延迟。

  2. 低延迟: 协议的设计考虑到了减少通信的延迟,使得 Web 应用程序能够更迅速地进行数据传输。

  3. 可靠性: WebTransport 提供可靠的传输机制,确保数据的可靠传递,适用于对数据完整性要求较高的场景。

  4. 适应性: 协议支持不同类型的数据传输,包括双向流、单向流等,以满足不同应用场景的需求。

  5. 安全性: WebTransport 考虑到了安全性问题,采用了一些安全机制来保护数据的传输过程。

  6. 可扩展性: 协议的设计允许将来添加新的功能和扩展,以适应不断变化的网络通信需求。

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://docs.baijiayun.com/resources/docs/open/download/tpl.html

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值