[RDMA over Converged Ethernet (RoCE) - NVIDIA Docs](https://docs.nvidia.com/networking/display/mlnxofedv451010/rdma+over+converged+ethernet+(roce)#src-12004903_safe-id-UkRNQW92ZXJDb252ZXJnZWRFdGhlcm5ldChSb0NFKS1Sb0NFdjI)
[[RoCE]]プロトコルを簡単に拡張することで、IPレイヤー3環境でのトラフィックが可能になる。この機能は、RoCEパケットフォーマットの単純な変更によって得られる。RoCEで使用されるGRHの代わりに、IPルーティング可能なRoCEパケットは、IP L3ルーターを通過できるIPヘッダーと、IP上のRDMAトランスポートプロトコルパケットのステートレスカプセル化レイヤーとして機能するUDPヘッダー(RoCEv2のみ)を運ぶ。
提案されている RoCEv2 パケットでは、データグラムを明確に区別するために、よく知られた UDP 宛先ポート値を使用します。UDPカプセル化を使用する他のプロトコルと同様に、UDPソースポートフィールドは不透明なフロー識別子を伝送するために使用され、ネットワークデバイスがプロトコルヘッダーフォーマットの仕様にとらわれずにパケット転送の最適化(ECMPなど)を実装できるようにします。さらに、この変更はワイヤ上のパケットフォーマットにのみ影響し、RDMAセマンティクスではパケットはAPの下で生成および消費されるため、アプリケーションは完全に透過的な方法で、あらゆる形式のRDMAサービス上でシームレスに動作できます。
## GID Table Population
GIDテーブル・エントリは、NICのポートのイーサネット・デバイスの1つにIPアドレスが設定されるたびに作成されます。RoCEポートのGIDテーブルの各エントリには、以下のフィールドがあります:
- GID値
- GIDタイプ
- ネットワークデバイス
2つのRoCEモードをサポートするデバイス(ConnectX®3 Pro)のポートの場合、テーブルは2つのGIDで占有されます。エントリ内のネットワークデバイスは、そのGIDが関連付けられているIPアドレスを持つイーサネットデバイスです。GIDフォーマットには、IPv4とIPv6の2種類があります。IPv4 GIDはIPv4にマッピングされたIPv6アドレスであり、IPv6 GIDはIPv6アドレスそのものである。IPv4 GIDに関連するパケットのレイヤ3ヘッダはIPv4(RoCEv2の場合)、IPv6 GIDに関連するパケットのレイヤ3ヘッダはIPv6/GRH、RoCEv1のIPv4 GIDに関連するパケットのレイヤ3ヘッダはIPv6/GRHとなる。
GIDテーブルのエントリ数はN1,2(K+1)に等しく、NはVLANデバイス、エイリアスデバイス、ボンディングマスター(アクティブスレーブのみ)を含む、ポートに関連するすべてのネットワークデバイスに割り当てられるIPアドレスの数です。リンクローカルIPv6アドレスは、各テーブルの最初に常にGIDが事前設定(デフォルトGID)されているため、このカウントから除外されます。K はサポートされる RoCE タイプの数です。ハードウェアのエントリ数は各ポートで 128 に制限されているため、N の制限を理解することが重要です。MLNX_OFED は、GID テーブルを便利に表示する show_gids というスクリプトを提供しています。
デバイスのモードが RoCEv1/RoCEv2 の場合、GID テーブルの各エントリ