Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ロスレスイーサネットの要素技術の紹介とSONiCの設定方法

 ロスレスイーサネットの要素技術の紹介とSONiCの設定方法

SONiC Workshop Japan 2024
https://sonic.connpass.com/event/313138/
ロスレスイーサネットの要素技術の紹介とSONiCの設定方法
Koki Obuchi

Tweet

More Decks by SONiC Users Group Japan

Other Decks in Technology

Transcript

  1. 2 SONiC Workshop Japan 2024 氏名 ◊ 大渕 光希(おおぶち こうき)

    経歴 ◊ 2015年 日立金属株式会社※に入社 ◊ 2015年-2021年 APRESIAシリーズの製品ソフトウェア開発を担当 ◊ 2021年-現在 オープンネットワーキング(SONiCなど)の業務を担当 ※2016年にAPRESIA Systems株式会社として通信機器事業をカーブアウト 自己紹介
  2. 3 SONiC Workshop Japan 2024  大規模AI/ML基盤の構築 ◊ 2023/6/16 さくらインターネット、生成AI向けクラウドサービス開始へ

    〜NVIDIA H100 GPUを搭載した2EFの大規模クラウドインフラを石狩データセンターに整備〜 − https://www.sakura.ad.jp/corporate/information/newsreleases/2023/06/16/1968211860/ ◊ 2023/7/7 経済産業省による「クラウドプログラム」の供給確保計画の認定について(ソフトバンク株式会社) − https://www.softbank.jp/corp/news/press/sbkk/2023/20230707_01/ ◊ 2024/2/1 三井物産子会社のゼウレカ、ヘルスケア業界で最先端AIサービスを提供する「Tokyo-1プロジェクト」を開始 − https://xeureka.co.jp/609 ◊ 2024/4/19 GMOインターネットグループ、NVIDIA H200 Tensor コア GPU を採用した生成AI向けのGPUクラウドサービスを国内最速提供へ ~経済産業省による「クラウドプログラム」の供給確保計画の認定~ − https://www.gmo.jp/news/article/8933/ ◊ 2024/4/19 RUTILEA及びAI福島が経済産業省より「特定重要物資クラウドプログラムの供給確保計画」の認定を受けました − https://rutilea.com/info/3519/ ◊ 2024/4/19 生成AI開発を支える大規模計算基盤の整備に1,000億円投資(KDDI株式会社) − https://newsroom.kddi.com/news/detail/kddi_nr-55_2775.html ◊ 2024/4/19 経済産業省による「クラウドプログラム」供給確保計画の認定に関して(株式会社ハイレゾ、株式会社ハイレゾ香川) − https://highreso.jp/information/8000  AI/MLのネットワークの関連プレゼン ◊ 2023/7/7 JANOG52 AI/ML基盤の400G DCネットワークを構築した話(株式会社サイバーエージェント) − https://www.janog.gr.jp/meeting/janog52/aiml400/ ◊ 2023/10/26 MPLS Japan 2023 LLM と GPU とネットワーク(ソフトバンク株式会社) − https://mpls.jp/2023/presentations/mpls2023-yuyarin.pdf AI/ML基盤のネットワーク構築の事例が出てきている AI/ML基盤の事例・発表
  3. 4 SONiC Workshop Japan 2024  RDMA(Remote Direct Memory Access)

    ◊ リモートデバイスのメモリに対してCPUを介さずデータを書き込む 技術 − 低レイテンシ、高スループット、CPU負荷の削減 ◊ RDMAのデータ転送技術:Infiniband, RoCEv2  Infiniband ◊ クレジットベース(ロスレス保証)のフロー制御が特徴 ◊ Infiniband対応のスイッチベンダーは少ない  RoCEv2(RDMA over Converged Ethernet version2) ◊ RDMAの通信をL3プロトコルで中継(Ethernet/IP/UDP) ◊ Ethernet自体はロスレスの保証がないため 以下のロスレスイーサネット機能が必要 ① PFC (Priority Flow Control): IEEE802.1Qbb ② ECN (Explicit Congestion Notification): IEEE802.1Qau ③ ETS (Enhanced Transmission Selection): IEEE802.1Qaz ◊ RoCEv2を使用することで、複数のEthernetスイッチベンダーを 採用することが可能 AI/ML基盤ネットワークの要素技術 GPU CPU RDMA NIC GPU GPU メモリ RDMA NIC メモ リ GPU メモリ CPU メモ リ 送信レート 制限要求 データ送信 PFC ECN 送信エンド 受信エンド PFC:リンクレベルフロー制御 ECN:End to End フロー制御
  4. 5 SONiC Workshop Japan 2024 GPUクラスタ基盤 ネットワーク Leaf 従来のネットワーク Spine

    端末・サーバ GPUクラスタ基盤 General/Storage Network(Lossy) GPU Network(Lossless) Leaf Spine 端末・サーバ Leaf Spine
  5. 6 SONiC Workshop Japan 2024 AI/ML基盤のロスレスイーサネットに必要な技術と SONiCでのロスレスイーサネットの設定方法の紹介 本講演の主旨 解決策 課題

    PFC/ECN/ETS ロスレスイーサネットの実現 IP CLOS Fabric + EVPN/VXLANを併用 マルチテナント可能な ファブリックネットワークの構築 SONiCとホワイトボックススイッチの 組み合わせ オープン技術による実現
  6. 7 SONiC Workshop Japan 2024 ポーズフレームを使ったリンクレベルでのキュー単位の輻輳制御機能 ロスレス対象のトラフィックをCoSまたはDSCPで分類し 対象のキューでPFCが動作することでパケットロスを防止 ①PFC(Priority Flow

    Control) 割り当て キュー 通常 0 1 2 RoCEv2 3 4 5 6 7 キュー使用量 キュー 0 1 2 3 4 5 6 7 使用バッファ 送信機器 受信機器 閾値 PFC ポーズフレーム 一定期間 送信停止 受信側の パケットロス防止 トラフィック
  7. 8 SONiC Workshop Japan 2024 スイッチ ②ECN(Explicit Congestion Notification) 動作

    ECNビット 非ECN対応 0x00 ECN対応(0) 0x10 ECN対応(1) 0x01 輻輳発生 0x11 最小閾値 最大閾値 100% 20% WREDの平均 使用キューサイズ ECNビット 書き換え確率 ECN対応全パケットの ECNビット書き換え 送信 エンド 受信 エンド スイッチ スイッチ ① ECN = 0x10 ② ECN = 0x11 ③ ECN = 0x11の 受信で輻輳検知 ⑤CNP(ECN=0x01)受信により 送信レート抑制 設定は可変(赤字) 送信側に輻輳を通知し、送信レートを抑制することでパケットロスを防止 輻 輳 ④ CNP(Congestion Notification Packet) 送信(ECN = 0x01) WRED(Weighted Random Early Detection) ランダムに ECNビット書き換え
  8. 9 SONiC Workshop Japan 2024 ECN PFC 割り当て (DSCP) 優先制御設定

    優先度 キュー Traffic Class 未使用 高 7 7 未使用 6 6 未使用 5 5 - - ECN CNP Strict 4 4 有効 有効 RDMA通信 DWRR:90 3 3 未使用 2 2 未使用 1 1 - - 通常トラフィック DWRR:10 低 0 0 プライオリティグループ毎にキューの優先順位を定義 WRR(Weighted Round Robin)、DWRR(Deficit WRR)やStrict(絶対優先)でキューの優先制御 ③ETS(Enhanced Transmission Selection)
  9. 10 SONiC Workshop Japan 2024 L3ネットワークの上にオーバーレイネットワーク(L2VPN,L3VPN)を構築するカプセル技術 物理ネットワーク上に論理的に複数のマルチテナントを構築可能 EVPN/VXLAN Spine Leaf

    Leaf アンダーレイ・下位層 (物理ネットワーク・BGP) オーバーレイ・上位層 (論理ネットワーク・VXLAN) BGP Spine トンネリング 端末・サーバ テナントA テナントB 端末・サーバ
  10. 11 SONiC Workshop Japan 2024 EVPN/VXLAN併用時のロスレスイーサネットの動き IP UDP RoCEv2 Data

    IP UDP RoCEv2 Data IP UDP RoCEv2 Data IP UDP RoCEv2 Data IP IP VXLAN VXLAN RoCEv2の DSCPを付与 Ethernet Ethernet UDP UDP Ethernet Ethernet Ethernet Ethernet DSCP/ECNビットコピー DSCP/ECNビットコピー  VXLANでカプセル化する場合 Leaf Spine Leaf RoCEv2 ターゲット RoCEv2 イニシエータ ロスレス キュー ロスレス キュー ロスレス キュー DSCPキューマッピング
  11. 12 SONiC Workshop Japan 2024 EVPN/VXLAN併用時のロスレスイーサネットの動き Leaf Spine Leaf RoCEv2

    ターゲット PFC ECN (0x10) ECN CNP(0x01) 輻 輳 ECN (0x11) RoCEv2 イニシエータ ロスレス キュー ロスレス キュー ロスレス キュー IP UDP RoCEv2 Data IP UDP RoCEv2 Data IP UDP RoCEv2 Data IP UDP RoCEv2 Data IP IP VXLAN VXLAN Ethernet Ethernet UDP UDP Ethernet Ethernet ECNのビット 書き換え発生 Ethernet Ethernet  VXLANでカプセル化する場合 DSCP/ECNビットコピーはASICに対応した実装が必要 DSCP/ECNビットコピー DSCP/ECNビットコピー RoCEv2の DSCPを付与 PFC DSCPキューマッピング
  12. 13 SONiC Workshop Japan 2024 PFC StormとPFC Watchdog PFC Storm

    ◊ 大量のPFCポーズフレームが送出される(PFC Storm)とトラフィックの一部もしくは全てが流れなくなる PFC Watchdog ◊ PFC Stormを検知して緩和する機能 ◊ 緩和機能はdrop(すべてのパケットを破棄),forward(PFCポーズフレームを無視)を選択可能 https://github.com/sonic-net/SONiC/wiki/PFC-Watchdog https://github.com/sonic-net/sonic-mgmt/tree/master/docs/testplan/pfcwd Leaf Spine Leaf RoCEv2 ターゲット PFC ロスレス キュー ロスレス キュー ロスレス キュー 輻 輳 RoCEv2 イニシエータ トラフィック
  13. 14 SONiC Workshop Japan 2024 ロスレスイーサネットのSONiCでの設定 優先制御 キュー Priority Group

    DSCP Loss-less トラフィック DWRR:10 0 0 0,63 × 通常フロー DWRR:90 3 3 26 ◦ RoCEv2(データ) STRICT 4 4 48 ◦ RoCEv2(CNP) 本資料のパラメータの対象機種:Edgecore AS7726-32X(Trident3:100Gx32port) Enterprise SONiC Distribution by Edgecore(以降Edgocre SONiC)向けの 設定方法(普段はこちらで実験) https://support.edge-core.com/hc/en-us/articles/900002737063--Enterprise-SONiC-PFC https://support.edge-core.com/hc/en-us/articles/29098647250969--Enterprise-SONiC-ECN https://support.edge-core.com/hc/en-us/articles/900000240066--Enterprise-SONiC-QoS-Quality-of-Service Community SONiCの設定方法の参考(本資料の設定ベース ※実験未実施) https://github.com/sonic-net/sonic-utilities/blob/master/doc/Command-Reference.md https://github.com/sonic-net/SONiC/wiki/Configuration 本資料の想定パラメータ
  14. 15 SONiC Workshop Japan 2024 ①PFCのロスレストラフィック用のバッファプールとバッファプロファイルを用意 SONiCでの設定方法(/etc/sonic/config_db.json) "BUFFER_POOL": { "egress_lossless_pool":

    { "mode": "dynamic", "size": "16189824", "type": "egress" }, "egress_lossy_pool": { "mode": "dynamic", "size": "16189824", "type": "egress" }, "ingress_lossless_pool": { "mode": "dynamic", "size": "2940941", "type": "ingress", "xoff": "14704704" }, "ingress_lossy_pool": { "mode": "dynamic", "size": "15031475", "type": "ingress" } }, "BUFFER_PROFILE": { "egress_lossless_profile": { "dynamic_th": "1", "pool": "egress_lossless_pool", "size": "0" }, "egress_lossy_profile": { "dynamic_th": "1", "pool": "egress_lossy_pool", "size": "0" }, "ingress_lossless_profile": { "dynamic_th": "1", "pool": "ingress_lossless_pool", "size": "0", "xoff": "244706", "xon": "1746919", "xon_offset": "18432" }, "ingress_lossy_profile": { "dynamic_th": "1", "pool": "ingress_lossy_pool", "size": "0" } }, size,xoff,xon,xon_offsetの値は ASICのキューのサイズによって 値の調整が必要 Edgecore SONiCの 設定値を参考に記載
  15. 16 SONiC Workshop Japan 2024 ②PFC:受信側のロスレスバッファを設定するために、PFC閾値を適用するプライオリティグループを設定 ③PFC:送信側のロスレスキューのプロファイルを割り当て SONiCでの設定方法(/etc/sonic/config_db.json) "BUFFER_QUEUE": {

    "Ethernet0|0": { "profile": "egress_lossy_profile" }, "Ethernet0|3": { "profile": "egress_lossless_profile" }, "Ethernet0|4": { "profile": "egress_lossy_profile" } }, "BUFFER_PG": { "Ethernet0|0": { "profile": "ingress_lossy_profile" }, "Ethernet0|3": { "profile": "ingress_lossless_profile" }, "Ethernet0|4": { "profile": "ingress_lossy_profile" } },
  16. 17 SONiC Workshop Japan 2024 ④ PFC:インターフェースのPFC機能を有効化 ⑤ PFC:PFCプライオリティをインターフェースのPFCのキューで有効化 SONiCでの設定方法(CLIおよび/etc/sonic/config_db.json)

    sudo config interface pfc priority Ethernet0 3 on sudo config interface pfc asymmetric Ethernet0 on "PORT_QOS_MAP": { "Ethernet0": { "dscp_to_tc_map": "dscp-tc-prof", "pfc_enable": "3", "pfc_to_queue_map": "pfc-queue-profile", "tc_to_pg_map": "tc-pg-prof", "tc_to_queue_map": "tc-queue-prof" }, "Ethernet4": { "dscp_to_tc_map": "dscp-tc-prof", "pfc_enable": "3", "pfc_to_queue_map": "pfc-queue-profile", "tc_to_pg_map": "tc-pg-prof", "tc_to_queue_map": "tc-queue-prof" } }, ⑤ ⑤
  17. 18 SONiC Workshop Japan 2024 ⑥ PFC/ECN:受信フレームのDSCPからトラフィッククラスへのプロファイルを作成し、インターフェースに設定 ⑦ PFC:PFCプライオリティからキューへの プロファイルを作成し、インターフェースに設定

    SONiCでの設定方法(/etc/sonic/config_db.json) "MAP_PFC_PRIORITY_TO_QUEUE": { "pfc-queue-profile": { "3": "3" } }, "DSCP_TO_TC_MAP": { "dscp-tc-prof": { "0": "0", "26": "3", "48": "4", "63": "0" } }, "PORT_QOS_MAP": { "Ethernet0": { "dscp_to_tc_map": "dscp-tc-prof", "pfc_enable": "3", "pfc_to_queue_map": "pfc-queue-profile", "tc_to_pg_map": "tc-pg-prof", "tc_to_queue_map": "tc-queue-prof" }, "Ethernet4": { "dscp_to_tc_map": "dscp-tc-prof", "pfc_enable": "3", "pfc_to_queue_map": "pfc-queue-profile", "tc_to_pg_map": "tc-pg-prof", "tc_to_queue_map": "tc-queue-prof" } }, ⑥ ⑦ ⑥ ⑦
  18. 19 SONiC Workshop Japan 2024 ⑧ ETS:トラフィッククラスからプライオリティグループ、トラフィッククラスからキューへの プロファイルを作成し、インターフェースに設定 SONiCでの設定方法(/etc/sonic/config_db.json) "PORT_QOS_MAP":

    { "Ethernet0": { "dscp_to_tc_map": "dscp-tc-prof", "pfc_enable": "3", "pfc_to_queue_map": "pfc-queue-profile", "tc_to_pg_map": "tc-pg-prof", "tc_to_queue_map": "tc-queue-prof" }, "Ethernet4": { "dscp_to_tc_map": "dscp-tc-prof", "pfc_enable": "3", "pfc_to_queue_map": "pfc-queue-profile", "tc_to_pg_map": "tc-pg-prof", "tc_to_queue_map": "tc-queue-prof" } }, "TC_TO_QUEUE_MAP": { "tc-queue-prof": { "0": "0", "3": "3", "4": "4" } }, "TC_TO_PRIORITY_GROUP_MAP": { "tc-pg-prof": { "0": "0", "3": "3", "4": "4" } },
  19. 20 SONiC Workshop Japan 2024 ⑨ ETS:スケジューラーのプロファイルを作成し、インターフェースの各キューに設定 SONiCでの設定方法(/etc/sonic/config_db.json) "SCHEDULER": {

    "sched-dwrr-10": { "type": "DWRR", "weight": "10" }, "sched-dwrr-90": { "type": "DWRR", "weight": "90" }, "sched-strict": { "type": "STRICT" } }, "QUEUE": { "Ethernet0|0": { "scheduler": "sched-dwrr-10" }, "Ethernet0|3": { "scheduler": "sched-dwrr-90", "wred_profile": "ecn-prof" }, "Ethernet0|4": { "scheduler": "sched-strict" }, "Ethernet4|0": { "scheduler": "sched-dwrr-10" }, "Ethernet4|3": { "scheduler": "sched-dwrr-90", "wred_profile": "ecn-prof" }, "Ethernet4|4": { "scheduler": "sched-strict" } },
  20. 21 SONiC Workshop Japan 2024 ⑩ ECN:WREDのプロファイルを作成し、インターフェースのECN対象の各キューにプロファイルを設定 SONiCでの設定方法(/etc/sonic/config_db.json) "WRED_PROFILE": {

    "ecn-prof": { "ecn": "ecn_all", "green_grop_probability": "20", "green_min_threshold": "100000", "green_max_threshold": "800000" } }, "QUEUE": { "Ethernet0|0": { "scheduler": "sched-dwrr-10" }, "Ethernet0|3": { "scheduler": "sched-dwrr-90", "wred_profile": "ecn-prof" }, "Ethernet0|4": { "scheduler": "sched-strict" }, "Ethernet4|0": { "scheduler": "sched-dwrr-10" }, "Ethernet4|3": { "scheduler": "sched-dwrr-90", "wred_profile": "ecn-prof" }, "Ethernet4|4": { "scheduler": "sched-strict" } }, 実際のトラフィックのパターン によってチューニングが必要
  21. 22 SONiC Workshop Japan 2024 ⑪ PFC Watchdogの設定[msec](PFCが有効なポートのみ適用) PFCが有効なポート全てに設定(緩和機能、復元時間、検出時間) 特定のポートに設定(アクション、復元時間、検出時間)

    ⑫ PFC Watchdogの検出間隔の設定[msec] SONiCでの設定方法(CLI) sudo config pfcwd start --action forward --restoration-time 400 ports all detection-time 400 sudo config pfcwd interval 100 sudo config pfcwd start --action forward --restoration-time 400 Ethernet0 detection-time 400