한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › L5 数据中心网络设备

交换机微突发 Switch microburst drops

原因 ID dc-microburst · 主责 研发团队·服务器开发 · 配合 运维团队·网络运维, 运维团队·系统运维

在含图示和实验的完整版中打开此卡片 →

多台服务器在同一瞬间向数千名玩家集中发包时,这些流量汇聚的交换机端口缓冲区很小,不到 1 ms 就会溢出。

起因 世界 BOSS 登场、大范围技能,或多台服务器的 tick 恰好在同一瞬间对齐,集中发送 → 结果 在多个端口汇聚到一个端口、或从高速端口转到低速端口的位置,缓冲区(每个端口几百 KB 到几 MB)瞬间被占满 → 画面表现 部分数据包被丢弃,很多人同时瞬移、吞技能

症状
瞬移, 吞操作/回档
因素
丢包
谁会遇到
特定地点/分线
何时出现
人多的时候
负责方
主责 研发团队·服务器开发 · 配合 运维团队·网络运维, 运维团队·系统运维
研发团队要做的事
把发送均匀分散到一个 tick 内(平滑发送,pacing);让各服务器的 tick 起始时间稍微错开。
运维团队要做的事
网络:选用大缓冲交换机;分散流量(把服务器分布到多台交换机、多个端口上);监控交换机各端口的丢弃计数器。服务器/OS:限制服务器整体发送速率上限(Linux tc 流量整形)。
数值参考
10 Gbps 端口 1 ms 内能发出约 1.25 MB。两个端口的流量同时涌向一个端口时,每 1 ms 就会积压 1.25 MB。即使 1 秒平均利用率只有 10%,按 1 ms 粒度看仍可能溢出。
监控图上
随人数/负载上升 · 交换机端口出方向丢弃数
查看位置
以尽可能短的间隔采集服务器所连交换机端口及其流量汇聚端口的出方向丢弃计数器(ifOutDiscards,视设备而定也叫 output drops),与 BOSS 登场、大规模战斗的时刻对照。只看 1 秒、1 分钟平均利用率曲线看不出来
确认依据
平均利用率不高,但每当人群聚到一处时出方向丢弃就增加,同时有多名玩家反馈瞬移、吞技能
排除依据
丢弃在平均利用率高的时段持续增加,看“数据中心线路饱和”。输入错误(CRC)增加,看“线缆不良/端口错误”
确认手段
运维工具即可确认(无需游戏代码)

出处

  1. High-Resolution Measurement of Data Center Microbursts (IMC 2017) ACM
    数据中心的突发 70% 以上在几十 µs 内结束;即使平均利用率约 9% 的端口,也会因突发而丢包
  2. Data Center TCP (DCTCP) (SIGCOMM 2010) ACM
    通用交换机缓冲区浅(48 个端口共享 4 MB,单个端口最多用到约 700 KB),多条流在短时间内涌向同一端口就会丢包
  3. RFC 2863: The Interfaces Group MIB IETF
    ifOutDiscards:没有错误,却因需要腾出缓冲区空间等原因未能发出而丢弃的数据包数

相关原因

同一层:L5 数据中心网络设备

其他层中同样导致“瞬移”的原因

查看含图示和实验的原卡片