终端网络技术与长连接演进
如果无法正常显示,请先停止浏览器的去广告插件。
1. 终端网络技术与长连架构演进
讲师: 若明 & 暁陽
2.
3. 端云交互模式升级
Client
Server
1、建连
Client
Server
1、建连
2、req req
3、resp resp
4、断连
5、建连
6、req
…
…
请求响应式短连
…
…
…
长连接
4. ACCS (Ali-Cloud-Channel-Service)是淘宝无线自研全双工、安全和开放的云通道服务,阿里移动技术三驾马车之
一,双11高峰承载近亿级长连接同时在线
淘宝APP
业务多样性
互动游戏 消息聊天 直播 云派对
通知推送 购物车 订单 ……
衍生技术
技术开放性
AGOO
实时推送
DingTalk
IM聊天
PowerMsg
厂商辅助通道
自研设备ID
多容器及多平台接入
订阅扩散 实时语音 ARTC HMS Mi PUSH H5 WEEX 轻应用
NextRPC Orange OPPO VIVO Android iOS Windows
多段式返回
动态配置
长连接技术
移动通信技术底座
ACCS
友盟、阿里云移动推送
集团APP
智能心跳
冲突率0.004% 前后台动态调整
消息保序 消息重传
自研中间件
APP全生命周期运维
XQUIC
自研传输协议
可靠消息
冗余+推拉+幂等
链路追踪 日志抓取
埋点采集 热修复
网络库
原生网络能力
ADaemon
进程管理
TNET
S-SSL
ASP
跨进程SP
ARanger
面向对象IPC
……
5. 长连接技术
通道传输效率&稳定性
短轮询
自研原生
ACCS
高频请求,服务器压力大
长轮询
保持连接不断开,收到数据断开
Web
Socket
SSE
保持连接不断开,可重复收数据,单向
SSE
长轮询
WebSocket
保持连接不断开,可重复收数据,双向,长时在线能力弱
短轮询
技术优雅性
自研原生ACCS
保持连接不断开,可重复收数据,双向,长时在线能力强
(智能心跳、低时延、TCP&UDP等)
6. 斗地主业务由WebSocket切换至Native ACCS
95%
83%
游戏开局建连失败数
下降
1. 加载游戏
淘宝斗地主
清零
牌局推送失败数 用户反馈建连失败舆情
下降 基本消失
2. 游戏开局
3. 网络抖动
4. 退出游戏
H5 WS 开始建连 等待建连,建连率94% 业务手动尝试建连 断开长连接
ACCS APP启动已建连 直接开局 原生网络技术提升稳定性
&自动重连 保持长连接
结论:端内优先使用原生基础能力
7. ACCS终端三代技术架构
2014 ~ 至今
8. ACCS单体架构(2014年)
——满足业务诉求的初代架构。
业务关注
多进程多连接
主进程(手淘业务)
中间件-动态配置
channel进程
不限于传统请求响应模式,能够与用户实时交互
中间件-动态配置
SDK API
SDK API
SDK Service
ACCS
ACCS
应用内推送
静默推送
上/下行
下行
【低感知】核心功能及全量业务仍保留在主进程
【全双工】由双连接实现,保留后台低功耗进程接收消息
统一接入网关
应用集群
静默集群
Android架构
架构设计
【升降级】push进程嵌入动态配置模块控制放量
9. ACCS单体架构(2014年)
代表性业务
——满足业务诉求的初代架构。
多进程多连接
主进程(手淘业务)
中间件-动态配置
channel进程
中间件-动态配置
SDK API
SDK API
SDK Service
ACCS
ACCS
应用内推送
静默推送
上/下行
下行
统一接入网关
应用集群
静默集群
Android架构
淘宝消息
淘宝直播
10. ACCS连接合并架构(2018年)
——主要是技术升级,增效、降本和解耦。
v1 单体架构(多进程多连接) v2 连接合并(单进程单连接)
主进程(手淘业务) 主进程(手淘业务)
中间件-动态配置
channel进程
中间件-动态配置
SDK API
中间件-动态配置
SDK API
1. 业务上需要关注2条连接
2.
3. 多连接技术冗余,不贴合原生系统特性
复杂且不对等的后端双集群架构
SDK Service
ACCS
应用内推送
ACCS
静默推送
上/下行
下行
ACCS
自研轻量级存储 自研轻量级存储
自研进程管理 自研进程管理
SDK API 接口代理
进程安全
执行策略
统一接入网关
应用集群
channel进程
SDK API
SDK API
SDK Service
ACCS
中间件-动态配置
业务关注(v1)
静默集群
进程安全
管理策略
合并连接
自研IPC-ARanger
上/下行
动态心跳
统一接入网关
静默集群
应用集群
架构设计(v2)
【绿色低碳】合并连接,每年节省百万服务器费用
【架构迁移】孵化面向接口低侵入IPC ARanger
【模块解耦】推进ACCS向进程分离演进
【能力沉淀】实现进程安全轻量级存储SDK以及参考Linux
Cgroup的进程管理模块
11. ACCS连接服务化架构(2022年)
——支撑业务全天候可用,首次落地终端连接服务化清晰架构。
v2 连接合并(单进程单连接) v3 连接服务化(进程调度单连接)
主进程(手淘业务) 主进程(手淘业务)
中间件-动态配置
channel进程
中间件-动态配置
SDK API
中间件-动态配置
SDK API
SDK API
SDK Service
ACCS
中间件-动态配置
channel进程
SDK API
1. 低端机进程拉起耗时,导致APP启动建连慢
2.
3. 服务化不彻底,会降级到v1架构,静默无法下架
技术开发上,需要关注进程环境
SDK Service
ACCS
ACCS
ACCS
自研轻量级存储 自研轻量级存储 自研轻量级存储 自研轻量级存储
自研进程管理 自研进程管理 自研进程管理 自研进程管理
接口代理 SDK API
SDK API
合并连接
自研IPC-ARanger
上/下行
动态心跳
统一接入网关
静默集群
业务关注(v2)
应用集群
自研IPC-ARanger 接口代理
Sidecar Sidecar
Case 1
独立模式
轻连接服务
静默集群
Case 2
非独立模式
连接服务 合并连接服务
统一网关
应用集群
订单交易成功
12. ACCS连接服务化架构(2022年)
——支撑业务全天候可用,首次落地终端连接服务化清晰架构。
v2 连接合并(单进程单连接) v3 连接服务化(进程调度单连接)
主进程(手淘业务) 主进程(手淘业务)
中间件-动态配置
channel进程
中间件-动态配置
SDK API
中间件-动态配置
SDK API
SDK API
SDK Service
ACCS
中间件-动态配置
channel进程
SDK API
1. 低端机进程拉起耗时,导致APP启动建连慢
2.
3. 服务化不彻底,会降级到v1架构,静默无法下架
技术开发上,需要关注进程环境
SDK Service
ACCS
ACCS
ACCS
自研轻量级存储 自研轻量级存储 自研轻量级存储 自研轻量级存储
自研进程管理 自研进程管理 自研进程管理 自研进程管理
接口代理 SDK API
SDK API
合并连接
自研IPC-ARanger
上/下行
动态心跳
统一接入网关
静默集群
业务关注(v2)
应用集群
【灵活架构】奠定架构演进方式,连接层解耦
自研IPC-ARanger 接口代理
Sidecar Sidecar
Case 1
独立模式
轻连接服务
静默集群
架构设计(v3)-引入微服务Sidecar模式
Case 2
非独立模式
连接服务 合并连接服务
统一网关
应用集群
【低端机体验】新增轻连接服务,轻量级快速建连
【架构归一】支撑v1单体架构可彻底下线
13. HTTP(s)/TCP
网络标准协议发展:
HTTP2.0/TCP
1980-2010
PC互联网时代
HTTP3.0/QUIC
2018-?
5G/万物互联时代
2010-2018
移动互联网时代
淘宝自研协议XQUIC:
主进程(手淘业务)
中间件-动态配置
SDK API
channel进程
中间件-动态配置
SDK API
SDK Service
ACCS
ACCS
自研轻量级存储 自研轻量级存储
自研进程管理 自研进程管理
IETF
QUIC
Google Google
开始研究 规模化部署 工作组
成立
GQUIC
GQUIC
2013
2015
2016
手淘
XQUIC 经
手淘使用 开始自研 正式使用 历双十一
GQUIC
XQUIC
XQUIC
考验
2017
2018
2020
2021
XQUIC
开源
2022
SDK API
自研IPC-ARanger
接口代理
Sidecar
Sidecar
轻连接服务
连接服务 合并连接服务
传输层:自研XQUIC
应用集群
统一网关
应用集群
RPC
请求耗时降低
15%+
短视频点播 图片/视频上传
卡顿率下降 速度提升
22%+
10%+
14. QUIC解决了什么?
APP
HTTP
TLS
OS
TCP
IP
应用层
传输层
APP
HTTP2
TLS
OS
网络层
短连
Pipelining
TCP
IP
应用层
APP
传输层
网络层
OS
长连
多路复用
Server Push
应用层协议的问题
传输层协议的问题
HTTP3
QUIC/TLS
UDP
IP
长连/多路复用
Server Push
解决HoL
0RTT建连
连接迁移
协议扩展性
丢包导致
其它请求
阻塞
多个TCP连接
单个TCP连接
QUIC连接
应用层
传输层
网络层
15. 图片库
播放器
MtopSDK
quic策略下发
Network SDK
Tnet
•
XQUIC
端
云
AMDC
LVS / SLB
Tengine
Tengine
Tengine
•
Tengine
标准化协议库 XQUIC
• 用户态协议栈
• C库/跨平台
模块化拥塞控制算法
• Cubic / BBRv1&v2 / Copa / ……
类型 特点
Cubic Loss-based 丢包容忍度低,时延高,时延抖动容忍度高
BBR Model-based 丢包容忍好,低时延,速率定期陡变
Copa Delay-based 丢包容忍好,低时延,不存在发送速率陡变,
带宽竞争能力相对不如BBR与Cubic
丢包率、RTT、有效带宽等状态感知
• 支撑算法选择 / 决策
协议功能模块
ngx_xquic_module
XQUIC
关于XQUIC的详细介绍《阿里XQUIC:标准QUIC实现自研之路》
XQUIC开源地址:https://github.com/alibaba/xquic
Application
Layer
Transport
Layer
公共模块
H3 Frame封
装 QPACK Request管理 优先级管理 日志管理
握手信息交换 密钥生成 证书校验 对称加解密 配置参数管理
Frame封装 Stream管理 MTU探测 流控 基础数据结构
Packet封装 连接管理 丢包检测 拥塞控制 内存管理
UDP socket
16. 弱网破障仍然存在挑战
提升物理接入链路的质量
多路径接入技术
无线质量波动、噪声丢包/接入点切换/……
公网传输段
接入侧
基站/WiFi
拥塞/故障/…...
隧道技术
减少公网传输段问题的影响
IDC内部
17. 弱网破障仍然存在挑战
提升物理接入链路的质量
多路径接入技术
无线质量波动、噪声丢包/接入点切换/……
公网传输段
接入侧
基站/WiFi
IDC内部
18. QUIC vs Multipath QUIC(MPQUIC)
Application
Application
HTTP/3.0
HTTP/3.0
TLS1.3
Others
TLS1.3
QUIC Transport
UDP socket
Others
QUIC Transport
+
MP Extension
Path
management Packet
Scheduler
UDP socket UDP socket
WiFi Interface 4G/5G Interface
WiFi Interface
19. Multipath QUIC(MPQUIC)
Application
HTTP/3.0
.html/.css/.js/图片/视频分片/……
HTTP/3 Streams
Others
TLS1.3
QUIC Streams
QUIC Transport
+
MP Extension
Path
management
Packet
Scheduler
连接级别发送队列(包)
最小RTT调度(MinRTT)
路径级别发送队列(包)
UDP socket UDP socket UDP socket UDP socket
WiFi Interface 4G/5G Interface WiFi Interface 4G/5G Interface
20. Multipath QUIC(MPQUIC)
Application
HTTP/3.0
.html/.css/.js/图片/视频分片/……
HTTP/3 Streams
Others
TLS1.3
QUIC Transport
+
MP Extension
Path
management
Packet
Scheduler
QUIC Streams
Stream重组
不同路径收包
UDP socket UDP socket UDP socket UDP socket
WiFi Interface 4G/5G Interface WiFi Interface 4G/5G Interface
更多细节参考我们的IETF标准草案:https://datatracker.ietf.org/doc/draft-ietf-quic-multipath/
21. 关于Multipath的认知误区
“1 + 1 = 2”
Head-of-Line Blocking(HOL)
无法交付应用层
快路径
慢路径
1 2 3 4
22. 重注入(Reinjection)如何缓解HoL
交付应用层
快路径
慢路径
问题:冗余流量开销
1 2 3 4
23. 通用HoL优化
• Deadline-aware重注入策略
• 对每一个未确认的数据包
• 按照公式计算重注入deadline
• 对于超过deadline的包p ! ,按照MinRTT选择未传输过p ! 且还有空闲发送窗口的路径? " ,将p ! 进行冗余发送
? = max(??????????, min ? ∗ ??????, ?????????? )
控制冗余数据量
e.g. 大盘请求耗时p50分位
自适应网络环境
p99耗时降低比例
保障性能
e.g. 大盘请求耗时p90分位
冗余数据比例
40.00%
30.00%
20.00%
寻找合适参数:可接受的冗余数据
比例+尽量提升性能
10.00%
0.00%
(0, 0.01, +∞)
X1
X2
X3
X4
……
Xn
(0, 1.1, +∞)
24. 短视频体验优化
视频传输/卡顿模型
网络传输有效带宽不够时引发卡顿/启动慢
25. 短视频体验优化
业务诉求:利用多路径增加秒开、减少卡顿,冗余流量尽可能低
应用多路径的难点:HoL问题可能导致有效带宽反而下降
核心思想:只重注入影响秒开和卡顿的关键数据!
三个关键问题
P1. 什么是关键数据?
无法及时送达时,会造成
卡顿的数据(无法秒开也
是某种意义上的“卡顿”)
P2. 发送方(视频服务器)
如何鉴别关键数据?
如果播放器缓存水位过低
P3.发送方如何获取播放器缓存
信息?
播放器将缓存信息通过API传给
MPQUIC,MPQUIC将信息反馈
给发送端
26. 多路径优化方案 - XLINK
播放器通过MPQUIC将缓存水位信息实时反馈给发送方
发送方正常情况下,在双路分配不同的数据发送,最大化利用带宽;
缓存水位过低时,利用重注入双路冗余发送,避免短时间内由于
HoL问题导致有效带宽下降,引发卡顿
27. 发送方如何判断缓存水位是否过低?
按照大盘数据将缓存水位划分为三个区间[0, TH1), [TH1, TH2], (TH2, +∞)
CDF
P80
调整TH1/TH2来
控制重注入比例
?
?
?
P10
TH1
区间1: 水位过低,
必须重注入
TH2
区间2:根据网络情
况判断是否重注入
缓存水位
区间3:缓存充足,
无需重注入
剩余可播放时长(T)= 缓存水位/码率
当前传输中数据的预计送达时间(D)= max(路径RTT+时延抖动)
T<D
新数据到达前,缓存消耗完,需要重注入
T>=D
缓存消耗完之前有新数据到达,无需重注入
28. XLINK如何工作
1. 双路径接入,但是
Path1链路质量波动
2. MPQUIC因为HoL问题,导致播
放器缓存数据水位下降,最终卡顿
3. XLINK感知播放器缓存数据水位
过低,开启重注入提升缓存水位
以2%冗余数据量的代价,p99首帧加载时间优化19%-50%,平均卡顿时长降低23%-67%
更多细节参见论文:XLINK: QoE-driven multi-path QUIC transport in large-scale video services, SIGCOMM 2021
29. XLINK在手淘短视频中的应用效果
左边 : 手淘集成 XLINK ,同时使用 Wi-Fi & LTE
右边 : 手淘集成 QUICv1 的版本,只使用 Wi-Fi
当 Wi-Fi 出现带宽波动 , 在右边播放的短视频会出现卡顿 , 与此同时左边能够流畅播放
30. 弱网破障仍然存在挑战
公网传输段
接入侧
基站/WiFi
拥塞/故障/…...
隧道技术
减少公网传输段问题的影响
IDC内部
31. 隧道技术 && Why QUIC
公网传输段
接入侧
IDC内部
基站/WiFi
(边缘)隧道接入点
企业专线/骨干网
边缘点离客户端较近,更快感
知无线丢包,进行重传恢复
企业专线/骨干网提供更可
靠的物理传输保障
SOCKS/HTTP-Connect IPSec/L2TP等VPN方案
安全性问题
支持协议受限 系统级方案
需要特殊权限
灵活性有限
QUIC Tunnel
QUIC安全/性能
灵活性强
无需特殊权限
32. QUIC Tunnel(IETF-MASQUE-UDP Proxy)
https://datatracker.ietf.org/doc/rfc9298/
HTTP3
MASQUE
QUIC/TLS
UDP
IP
Stream模式
- 可靠/保序/存在HoL阻塞
Datagram模式
- 非可靠/可乱序/无HoL阻塞
两种模式各有优劣
33. Stream模式的问题
存在阻塞问题
一个丢包导致后续所有应用连接的数据包阻塞在隧
道服务器,等待该包重传,即使这些数据包与丢包
无依赖关系(不同的stream,ACK等)
1. 应用连接中的请求传输耗时增加
2. 应用连接错误认为出现Burst丢包,影响拥塞算法的带宽估计
3. 应用连接RTT采样造成较大干扰,影响拥塞算法/丢包检测
34. Datagram模式的问题
无法快速恢复丢包
>110ms 后应用重传
如果Tunnel段重传,丢包恢复时间理论上可以下降到10ms
35. 重传策略管理
???1 + ???2
????_??? =
−1
???1
36. 更多的QoS(Quality of Service)分级策略?
隧道优先级管理、重传策略管理、etc
根据应用的需求,为不同类型的隧道提供差异化的网络QoS保障
37. 扫码回复「D2」
获取第十七届 D2 演讲 PDF 材料
后续也将推送 D2 会后技术文章,敬请关注!!
38. 感谢大家观看