ゲームラグ白書 › L5 データセンターのネットワーク機器
スイッチのマイクロバースト Switch microburst drops
原因ID dc-microburst · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 インフラチーム・ネットワークインフラ, インフラチーム・サーバーインフラ
図と実験のあるメインページでこのカードを開く →
複数のサーバーが同じ瞬間に数千人へ一斉にパケットを送ると、そのトラフィックが集まるスイッチポートの小さなバッファが1ms足らずであふれます。
なぜ ワールドボスの出現・大規模スキル、または複数サーバーのティックが同じ瞬間に重なって一斉に送信 → すると 複数のポートが1つのポートに集まる場所や、速いポートから遅いポートへ渡る場所のバッファ(ポートあたり数百KB〜数MB)が瞬間的にいっぱいになる → 画面では 一部のパケットが破棄され、多くの人が同時にワープ・スキル不発
- 症状
- ワープ, 不発・ロールバック
- 要因
- パケットロス
- 誰に起きるか
- 特定の場所・チャンネル
- いつ
- 人が集中したとき
- 担当
- 主担当 ゲーム開発チーム・サーバー開発 · 副担当 インフラチーム・ネットワークインフラ, インフラチーム・サーバーインフラ
- ゲーム開発チームの対応
- 送信をティック内で均等に分ける(ペーシング)、サーバーごとにティックの開始タイミングを少しずつずらす。
- インフラチームの対応
- ネットワーク:バッファの大きなスイッチ、トラフィックの分散(サーバーを複数のスイッチ・ポートに分けて配置)、スイッチポートごとの破棄カウンターを監視。サーバー機器・OS:サーバー全体の送信速度の上限(Linuxのtcシェーパー)。
- 数値の目安
- 10Gbpsのポートが1msで送り出せる量は約1.25MBです。2つのポートのトラフィックが1つのポートに同時に集まると、1msごとに1.25MBずつたまります。1秒平均の使用率が10%でも、1ms単位ではあふれることがあります。
- グラフでは
- 人数・負荷に連動して上昇 · スイッチポートの出力破棄数
- 確認箇所
- サーバーがつながるスイッチポートと、そのトラフィックが集まるポートの出力破棄カウンター(ifOutDiscards、機器によってはoutput drops)をできるだけ短い間隔で集め、ボスの出現・大規模戦闘の時刻と照合。1秒・1分平均の使用率グラフだけでは見えない
- 該当する場合
- 平均使用率は低いのに、人が1か所に集まる瞬間ごとに出力破棄が増え、そのときに複数のユーザーが同時にワープ・スキル不発を報告する
- 該当しない場合
- 平均使用率が高い時間帯に破棄が継続的に増えるなら「データセンター回線の飽和」。入力エラー(CRC)が増えるなら「ケーブル不良・ポートエラー」
- 確認手段
- インフラのツールで確認(ゲームコード不要)
出典
- High-Resolution Measurement of Data Center Microbursts (IMC 2017) ACM
データセンターのバーストの70%以上は数十µs以内に終わる、平均使用率が約9%のポートでもバーストでパケットが破棄される - Data Center TCP (DCTCP) (SIGCOMM 2010) ACM
汎用スイッチはバッファが浅い(48ポートで4MBを共有、1ポートが使えるのは約700KBまで)、複数のフローが短い瞬間に1つのポートに集まるとパケットロス - RFC 2863: The Interfaces Group MIB IETF
ifOutDiscards:エラーはないのに、バッファ領域の確保などの理由で送り出せずに破棄したパケット数
あわせて読みたい原因
同じ層:L5 データセンターのネットワーク機器
同じ症状(ワープ)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る