# GPUネットワーク設計・運用 基礎勉強会 Lossless Ethernet – PFC/ECN編 Navigation: [[../index|index]] | [[../overview|overview]] ## 概要 LINEヤフー(LY Corporation)Staff Engineer の Masayuki Kobayashi(markunet)による社内基礎勉強会資料。RoCEv2 が前提とする Lossless Ethernet を構成する3つの技術要素——PFC(Priority Flow Control, IEEE 802.1Qbb)・ECN(Explicit Congestion Notification, IEEE 802.1Qau)・CNP(Congestion Notification Packet, IBTA規格)——について、パケットのプライオリティ分類の仕組みから NIC/スイッチ双方の実コマンド設定例(NVIDIA Cumulus Linux、Arista EOS、Juniper Junos、Cisco Nexus、SONiC)まで一貫して解説する。RoCEv2に全く触れたことのないネットワークエンジニアを対象とした基礎編に位置づけられる。 ## 主要メッセージ - Lossless Ethernet とは「輻輳によるバッファ溢れを防ぐバッファ管理技術の集合」であり、リンクダウンや伝送エラーは対象外(BER/FECのレイヤーが担当)である(p.6)。 - ネットワーク機器の各ポートには送信・受信それぞれ8個の仮想キュー(TC: Traffic Class)があり、パケットは VLAN tag の PCP(Priority Code Point)または IP ヘッダの DSCP(DiffServ Code Point)ビットで、どのキューを使うかは Trust Mode の設定で識別される(p.10)。 - RoCEv2 = DSCP 26 = TC 3、CNP = DSCP 48 = TC 6 という組み合わせがデファクトスタンダードであり、NVIDIA(Mellanox)の推奨値かつ Broadcom NIC のデフォルト値とも一致する(p.13)。運用上はすべての機器でこの設定値を揃えることが重要とされる。 - PFC はキュー単位で PAUSE フレームを送り送信を一時停止させる Hop-by-Hop の制御、ECN は IP ヘッダの ECN ビットでスイッチが輻輳をマーキングし、CNP は受信側が送信元へ送り返す専用 Ack パケットであり、輻輳が解消するまで両者は継続動作する(p.22, p.27, p.35)。 - PFC の継続発動はパケットの送信停止そのものであるため性能低下を招く。輻輳解消の主防御は ECN/CNP によるレート抑制(DCQCN)であるべきで、PFC は瞬間的な最終手段と位置づけるのが適切である(p.27, p.45)。 - Headroom バッファ(PFC 発動時に伝送路上のin-flightパケットを受信するための安全領域)はケーブル長とMTUから算出する必要があり、XOFF閾値の過大・過小はそれぞれパケットロスとバッファ浪費を招く(p.24-25)。 ## 視覚的に重要な図表 **p.4 Backend Network — Lossy Fabric と Lossless Fabric の分離** ![[_attachments/markunet-lossless-ethernet-pfc-ecn/page-004.png]] Storage/Inference/Training クラスタ間の GPU 通信専用ネットワーク(Lossless Fabric、RDMA・Rail-optimized)を、インターネットサービス向けの Lossy Fabric(Clos・TCP・ベストエフォート)から意図的に分離する設計思想を示す。RoCEv2 が有効なネットワークでは TCP の輻輳制御アルゴリズムに律速されるため、この分離が前提となる。 **p.9 Egress Traffic Class の優先制御設定例** ![[_attachments/markunet-lossless-ethernet-pfc-ecn/page-009.png]] TC 1(その他通信)に DWRR 5%、TC 3(RoCEv2通信)に DWRR 95%、TC 6(CNP)に Strict(絶対優先)を割り当てる代表的な帯域配分設定を示す。 **p.22 Lossless Ethernet の実現方式 — OSI レイヤーと制御機構の対応** ![[_attachments/markunet-lossless-ethernet-pfc-ecn/page-022.png]] CNP は InfiniBand BTH(L4)、ECN は IP/UDP(L3)、PFC は Ethernet(L2)のレイヤーでそれぞれ動作することを示す。PFC は隣接ノード間の Hop-by-Hop 制御、ECN は End-to-End のフロー制御という制御範囲の違いが明示される。 **p.28 ECN/CNP の動作メカニズム — パケットヘッダレベルの詳細** ![[_attachments/markunet-lossless-ethernet-pfc-ecn/page-028.png]] 送信側が IP ヘッダの ECN ビットに ECT(0b10)をセットし、輻輳したスイッチが CE(0b11)に書き換え、受信側が CE を検知すると Opcode 129(0x81)の CNP パケットを送信元に送り返す4ステップの流れを示す。 **p.45 Headroom Buffer と PFC/WRED 閾値の階層構造** ![[_attachments/markunet-lossless-ethernet-pfc-ecn/page-045.png]] No-Drop Queue 内で WRED min/max・PFC xon/xoff・Headroom が階層的に積み上がる様子を示す(Cisco Live 2024 BRKDCN-2921 より画像引用)。バッファ使用量が WRED 閾値を超えると ECN マーキング、PFC xoff 閾値を超えると PAUSE フレーム送信、Headroom は PAUSE 後も届き続ける in-flight パケットを吸収する安全領域として機能する。 ## 概念・実体への接続 - [[データセンター輻輳制御]] — 本資料は PFC/ECN/DCQCN/CNP の設定・運用レベルの実装知識を提供し、同 concept の理論的知見(DCQCN論文の流体モデル等)を補完する。 - [[マルチベンダーLosslessネットワーク]] — 本資料が示す Arista EOS の設定例(StrataXGS Chip 前提、DNXでは異なる旨の明示的注記あり)は、同 concept が指摘する「ASIC実装依存のパラメータ」を裏付ける具体例。 - [[Mellanox]] — RoCEv2=DSCP26=TC3 のデファクト値の出典として NVIDIA(Mellanox)の公式ドキュメントが引用される。 - [[Masayuki Kobayashi]] / [[LINE株式会社]] — 発表者と所属組織。 ## 限界・不確実点 - p.26(実クラスタでの Headroom Buffer 個別設定例)、p.35(ECN/CNP の実際の動作キャプチャ例)、p.41(Scheduled Fabric での RoCEv2 設定)、p.42(SONiC での RoCEv2 設定)、p.43(Juniper Junos 設定の参考情報)、p.44(Cisco Nexus 設定の参考情報)は「非公開」として内容が伏せられており、本noteには反映できない。 - タイトルスライド(p.1)には発表日として「2024/07/25」の記載があるが、SpeakerDeck ページのメタデータ(`datePublished`)は 2024-12-27 であり、PDF のファイル作成日時も 2024-12-28 である。本ページの `date_published` は SpeakerDeck 公開日である 2024-12-27 を採用した。「2024/07/25」は社内勉強会シリーズの実施回の日付である可能性があるが未確認。 - 音源・動画・文字起こしは提供されておらず、口頭説明・質疑応答の内容は本noteに含まれない。 - PDF原本は SpeakerDeck の共有ページから直接リンクを発見して取得した(ボット対策のフォールバックは不要だった)。