Skip to content

データセンタネットワークの進化に向けて(RDMA/IB/RoCE)

帯域幅と遅延 – コンピュータネットワークにおける性能指標

Section titled “帯域幅と遅延 – コンピュータネットワークにおける性能指標”

RTT = 伝送遅延 + 伝搬遅延 + キューイング遅延 + 処理遅延

  • 伝送遅延 出力ポートからパケットを送出するのにかかる時間(広帯域 IF ほど遅延が短い) Delay = L /Bandwidth : L は送信するパケットのビット数
  • 伝搬遅延 パケットが通信経路上を伝わるのにかかる時間 Delay = Distance / Velocity : Distance は伝送距離, Velocity は伝送媒体の速度(光ファイバは 2.1*10^8 m/s)
  • キューイング遅延 パケットをバッファに保持している時間(公式がないため計算困難)
  • 処理遅延 パケットの送受信処理にかかる時間、パケットを TCP/IP 層に渡す時のメモリコピーなどで発生する遅延
  • DMA (Direct Memory Access): マザーボード上のデバイスが CPU を介さずに直接ターゲットメモリにデータを書き込める技術 CPU コピーのオーバーヘッド削減
  • RDMA (Remote Direct Memory Access): リモートデバイスのメモリに対して DMA を行う技術 システムスループットの向上、ネットワーク遅延の削減
  • 従来の TCP/IP ネットワークスタックでは、ユーザー空間を介してリモートマシンのユーザー空間にデータを送信する必要があり、この処理中にいくつかのメモリコピーを実行する必要がある
  • NIC のリングバッファにデータそのものを格納する
  • データの移動やコピー操作のオーバーヘッドが大きく、高速ネットワークでボトルネックになる
  • TCP Offloading Engine を搭載した NIC に処理をオフロードさせる解決策が一般的
  • カーネルバイパス: 遅延箇所の回避、CPU 使用率の削減
  • ゼロコピー: 複数回のコピー操作の排除
  • プロトコルオフロード: トランスポート層の処理のオフロードによる CPU 使用率削減
  • ワンサイドオペレーション: 対向側デバイスの CPU 介入が不要で、計算サイクルを消費しない

RMDA には異なるハードウェア(物理・リンク層)実装が 3 種類存在

  • Infiniband IBTA が策定したスタンダードで HPC 領域で圧倒的なシェアをもち、最もパフォーマンスが高い Infiniband は RDMA のために作られたプロトコル 専用のネットワークカード(HCA)とスイッチが必要
  • RoCE (RDMA over Converged Ethernet) IBTA が策定したスタンダードで、標準イーサネット上での RDMA をサポートする(IBoE) RoCE をサポートするネットワークカードとスイッチが必要で、ロスレスイーサネットを必要とする L2 ネットワーク上で動作する RoCEv1 と、L3 ネットワーク上で UDP で動作する RoCEv2 がある
  • iWARP (Internet Wide Area RDMA Protocol) IETE 標準の TCP/IP に基づく RDMA 技術で RoCE のようにロスレスイーサネットを必要としない iWARP 対応のネットワークカードがサーバ側に必要 TCP をトランスポートに利用する性質上、RoCE よりパフォーマンスが僅かに低下する

IBTA(InfiniBand Trade Association)が策定する高速インターコネクト規格 TCP/IP と異なり IETF で仕様策定していないため、RFC は存在しない 技術仕様書は IBTA のサイトからダウンロード可能(要アカウント) 専用のチャネルアダプタ(CA)とスイッチで IBA(Infiniband Architecture)を構成する

IBA Network はサブネットとそこに接続されるエンドノードで構成される サブネットは Ethernet の L2 network に近い概念で、サブネット間通信には IB ルータが必要になる エンドノードは複数のサブネットに接続可能

Infiniband Architecture – Subnet Manager

Section titled “Infiniband Architecture – Subnet Manager”

IBA Network には最低 1 台の Subnet Manager(SM)が必要 トポロジ検知、アドレス割当、転送テーブル作成などの管理機能全般は Subnet Manager が担う エンドノードとスイッチでどれが SM になっても良いが、複数設定しても Active になれるのは 1 台のみ Active な SM が停止すると、プライオリティ順に SM が引き継がれる 最も信頼性の高いデバイスを SM に設定することが望ましい SM の機能があるスイッチが Managed スイッチと呼ばれる Unmanaged スイッチには物理管理ポートも存在しない

IBA には独⾃の⽤語が定義されているため、運⽤する上で最低限理解しなければならないものがある

  • HCA(Host Channel Adapter) IBA の主役であり最重要コンポーネントでありエンドノード IB スイッチや IB ルータは HCA が生成したパケットを中継するにすぎない Ethernet の NIC と同一のハードウェア上で動作する(OFED などのドライバで動作モードを変更可) ストレージデバイスなど非コンピュートノードに装着する CA は TCA(Target Channel Adapter

IBA の帯域幅は ” Data Rate(DR)” という単位で規定 1 チャネルあたりのシグナリングレート x チャネル数 = 帯域幅 チャネル数は光トランシーバがサポートするチャネル数と同一である必要がある そのため現在主流のチャネル数は X4 になる

  • Start/End Delimiter パケットの開始/終了を識別する特殊文字
  • LRH (Local Routing Header) 必須、サブネット内転送に使用
  • GRH (Global Routing Header) オプション、サブネット間ルーティングに使用 サブネット内転送では付与されない
  • BTH (Base Transport Header) 必須、QP の制御に使用
  • ETH (Extended Transport Header) RDMA 操作に使用
  • ICRC/VCRC エラー訂正に使用
  • Virtual Lane(VL) 単一の物理リンク上で複数の独立したデータストリームを個別に制御 異なるアプリケーションのトラフィックが相互に影響を与えることは避けたい 各チャネルに個別の Service Level(SL)が設定され、相互に影響を受けない VL は最大 16 本: データ用 15 本 + 管理用 1 本 16 段階の SL を VL 毎にマッピングする
  • Local ID (LID) IB は LID と呼ばれる 16bit の識別子で通信相手を特定する(サブネット内でのみ有効) LID は必須で電源を入れると Subnet Manager が自動で割り当て(揮発性) HCA には各ポートに、スイッチにはポート 0(内部の特殊ポート)にのみ LID が割り当てられる 送信元 LID(SLID)/宛先 LID(DLID)は LRH に格納されサブネット内ルーティングに使用される 通常のパケット転送ではスイッチノードの LID が使用されるためポートの LID は重要ではない

Infiniband Architecture – ネットワーク層

Section titled “Infiniband Architecture – ネットワーク層”
  • Global ID (GID) サブネットを超えて通信する場合には 128bit の GID で相手を特定する 上位 64bit がサブネット ID、下位 64bit がホスト ID で、IPv6 のアドレス体系を踏襲している IB ルータが GRH に含まれる GID を解釈する IB ルータはパケット転送時に LRH の Source LID(SLID)を自身の LID に書き換えて転送する サブネット内通信で LID を使用せずに GID を利⽤した転送はできない

Infiniband Architecture – トランスポート層

Section titled “Infiniband Architecture – トランスポート層”
  • MTU IB は最⼤2GB のメッセージを MTU サイズに分割して送信 パス上の最小値が採用される 256(最⼩), 512, 1024, 2048, 4096(最⼤)Bytes をサポート ジッタの安定性や効率の経験則から最適値を設定する
  • Transport Service (信頼性) TCP/UDP に相当する 4 つのサービスタイプが、信頼性と通信方式の組み合わせで規定されている 再送制御・順序制御のある Reliable と信頼性の無い Unreliable 1 対 1 通信の Connection と 多対多の Datagram
  • Infiniband Transport Service
    • RC (Reliable Connected) TCP と論理的に同等 パケットは順番に配送され再送制御がある
    • UD (Unreliable Datagram) UDP と論理的に同等 順序や配送に保証が無い
    • RD (Reliable Datagram) 実装が無いので無視してよい
    • UC (Unreliable Connected) 使われないので無視してよい

Infiniband Architecture – RDMA メモリモデル

Section titled “Infiniband Architecture – RDMA メモリモデル”
  • Memory Region RDMA オペレーションはメモリを固定することから始まる HCA は物理メモリアドレスに対して DMA を行うので、ユーザプログラムの仮想メモリアドレス空間が理解できない HCA がアクセス可能な領域を Memory Region として、仮想メモリページと物理メモリページの関係を固定化 メモリの物理アドレスは連続している必要がある Memory Region 内の仮想メモリはスワップなどによってディスクに追い出されることが無い データの転送中、アプリケーションはデータが存在するメモリの変更が不可
  • QP (Queue Pair) TCP/UDP のソケットに相当するもので、IB RDMA の中核となるメモリモデル RMDA は 3 つのキュー 送信キュー(SQ), 受信キュー(RQ), 完了キュー(CQ) に基づいている SQ と RQ は常にペアで作成されるため Queue Pair と呼ばれる QP はソケットのリングバッファモデルと異なり、データそのものを格納しない HCA が直接アクセスするためのデータの位置やサイズなどの情報が入ったメタデータ(WQE)格納される CQ はメッセージが処理されたことをユーザーに通知するために使用される
  • One-Side Operation (⼀⽅向性操作) リモートデバイスの OS に操作を検知されない RDMA Write: リモートメモリへの書き込み、ターゲット CPU の介入なし RDMA Read: リモートメモリからの読み込み、ターゲット CPU の介入なし
  • Atomic Operation (不可分操作) Fetch and Add: リモートメモリの位置を更新する Compare and Swap:リモートメモリの内容比較と値の入れ替え

IB は専用ハードウェアへの投資が必要なため、IB のパフォーマンスを得つつ既存資産を活用する方法 RoCE はイーサネット上での IB プロトコルの伝送をサポート L2 ネットワーク用の RoCEv1 と L3 ネットワーク用の RoCEv2 が存在する どちらの場合でもロスレスイーサネットを実現するためのフロー制御と輻輳制御が前提となる

データセンターネットワークでの輻輳要因

Section titled “データセンターネットワークでの輻輳要因”
  • TCP Incast 多くのノードが同時に 1 台に TCP データストリームを送る多対一の通信でバッファ不足が発生 バッファが溢れるとパケットロスになる
  • デバイスのオーバーサブスクリプションレート 上下帯域が非対称な設計の場合、輻輳が発生しやすくなる パケット交換ネットワークにおいて厳密なノンブロッキングは実現不可能
  • ECMP の不均衡 ECMP で負荷分散する場合、そのリンクがすでにどれだけ輻輳しているかは考慮されない エレファントフローが使用中のリンクに他のフローが参加する可能性がある

RDMA の再送はハードウェア実装 RoCEv2 では基本的に自動再送信(Go-Back-N)を採用 RDMA はロスレスネットワークを前提として考案された手法 ドロップが発生するとパフォーマンスが極度に低下する 最近 RoCEv2 で選択的再送信が実装された

ロスレスイーサネットは Data Center Bridging(DCB) と呼ばれる 3 つの技術で実現される Lossless Configuration = ETS + PFC + CN

  • 802.1Qaz Enhanced Transmission Selection (ETS) Priority Group 単位の帯域保証付き優先キューイングと情報交換プロトコル(DCBX)
  • 802.1Qbb Priority-based Flow Control (PFC)︓ 優先キューごとに PAUSE(XOFF/XON) フレームの送信でバッファ溢れを防止
  • 802.1Qau Congestion Notification (CN) IP ヘッダの ECN (Explicit Congestion Notification)と、BT ヘッダの CNP (Congestion Notification Packet)を組み合わせて送信元に輻輳を通知 輻輳を発生元から緩和
  • Global Pause Frame 最古のイーサネットフロー制御機構(IEEE 802.3X) 受信キューの深さが閾値を超えると、XOFF を送信側に送信 送信側は XON を受信するまですべての送信を一時停止 トラフィックフローを区別しないため、高優先度フローも停止
  • PFC Pause Frame パケットを 0~7 の優先度に分類(IEEE 802.1Qbb) 各ポートにには優先度に対応する 8 個のキューが存在 異なる優先度のパケットは異なるキューに格納 キュー毎に XOFF/XON を行う

PFC は使用する優先度のフィールドに応じて PCP ベース と DSCP ベース の 2 種類が存在

  • PCP based PFC dot1q ヘッダにある PCP(Priority Code Point)の 3bit を利⽤ L2 なのでここしか優先制御に使えるフィールドが無い 8 つの優先順位(0~7)を設定可能で RoCEv1 で使⽤
  • DSCP based PFC IP ヘッダにある DSCP を PFC に利⽤し RoCEv2 でサポート RoCEv2 では 26 でマーキング PCP と両⽅組み合わせて使うことも可能

RDMA はパケットロスがパフォーマンスに与える影響が TCP に⽐べてはるかに大きいため、 TCP の輻輳制御のようにパケットロスが発生するまで待ってから輻輳検出する方法がとれない。 DCQCN という新しい輻輳制御アルゴリズムを用いる(Microsoft と Mellanox が共同開発)

  • ECN IP ヘッダにある TOS フィールドの下位 2bit を利用 輻輳が発生したかどうかを 4 値 で定義 スイッチはキューサイズを監視(RED) 輻輳が発生すると、スイッチは ECN を 11 (輻輳発生) にして転送 受信側は ECN bit に基づいて送信側に輻輳状況を報告(CNP) 送信側は送信レートを調整