すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Linux:SMC の問題

最終更新日:May 16, 2025

このトピックでは、共有メモリ通信 (SMC) で発生する可能性のある問題とその解決方法について説明します。このトピックは Alibaba Cloud Linux 3 に適用されます。

SMC が TCP よりもアプリケーションのパフォーマンス向上をもたらさない

問題の説明

アプリケーションの TCP 接続を高速化するために TCP の代わりに SMC を使用した場合、アプリケーションのパフォーマンスは向上しません。

原因と解決策

  • アプリケーションに対して確立された SMC 接続が TCP にフォールバックします。この場合、リモートダイレクトメモリアクセス (RDMA) を使用してネットワーク通信を高速化することはできません。フォールバックの問題のトラブルシューティングと解決方法については、このトピックのSMC が TCP にフォールバックし、RDMA を使用して通信を高速化できないセクションを参照してください。

  • アプリケーションのネットワーク通信オーバーヘッドは、全体的なオーバーヘッドのほんの一部を占めています。たとえば、アプリケーションは CPU 集約型であり、ネットワーク通信への依存度はわずかです。

  • TCP パケットと比較して、RDMA パケットには、RDMA 関連の情報を格納するための追加のヘッダー領域が必要です。利用可能な帯域幅が同じ場合、RDMA パケットの送信で達成できる実際の帯域幅は、TCP パケットの送信で達成できる帯域幅よりもわずかに低くなります。この問題を軽減するには、ジャンボフレーム機能を使用します。この機能の詳細については、「ジャンボフレーム」をご参照ください。

  • SMC は、アプリケーションのネットワーク通信モデルと互換性がありません。シナリオ例:

    • 短命の接続が頻繁に確立および切断されるシナリオ。SMC 接続の確立には、RDMA リソースの作成や要求などのスローパス操作が含まれます。主に短命の接続を使用するアプリケーションの場合、SMC は TCP よりもパフォーマンスの向上をもたらしません。

    • リソースが制限されているシナリオ。SMC 通信に必要なリソースは、Elastic Compute Service (ECS) インスタンスのメモリと eRDMA インターフェース (ERI) の仕様によって異なります。リソースが不足している場合、SMC は TCP にフォールバックすることがあります。詳細については、「SMC を有効化および構成する」をご参照ください。

SMC を有効にした後、通信に失敗する

問題の説明

Alibaba Cloud Linux 3 を実行している ECS インスタンスに対して、Remote Direct Memory Access を介した共有メモリ通信 (SMC-R) を有効にした後、特定のインターネット向けサービスのアドレスなど、特定のアドレスを ping することはできますが、アクセスすることはできません。SMC-R を無効にすると、問題は解決します。

原因

一部のサーバーは TCP の仕様に厳密には準拠していません。サーバーが TCP オプションを処理するときに、サーバーは TCP オプションを再生することがあります。その結果、ローカルエンドは、SMC 非対応のピアサーバーが SMC をサポートしていると誤って認識します。

説明

TCP 実装MUST (MUST-6) は、オプションに長さフィールドがあると仮定して、実装していない TCP オプションをエラーなしで無視する必要があります。詳細については、「RFC 9293」をご参照ください。

SMC のサポートを示すために使用される TCP オプションが再生されると、ローカルエンドはピアサーバーを SMC 対応であると誤認します。この場合、ハンドシェイクエラーが発生します。その結果、cURL リクエストなどのリクエストは失敗しますが、インターネット制御メッセージプロトコル (ICMP) を介した ping は成功します。

通信リンクチェックを実行して、問題を診断できます。

解決策

TCP オプションのリプレイ問題は予期せず発生し、中間ネットワークノードまたはピアによって TCP オプションがリプレイされるため、解決できません。 BPF ポリシーに基づく SMC ネゴシエーション制御を実行し、問題のあるリンクでのアクセスに SMC を使用しないことをお勧めします。

smc_run コマンドを実行した後、SMC を有効にできなかった

問題の説明

smc_run ./foo コマンドを実行してアプリケーションの SMC を有効にした後、smcr l コマンドを実行して SMC-R リンクグループを調べますが、コマンド出力は SMC-R リンクグループが作成されていないことを示しています。次に、smcss -a コマンドを実行して SMC ソケットをクエリしますが、コマンド出力は SMC 接続が存在しないか、SMC 接続が片側で TCP にフォールバックしていることを示しています。コマンドの詳細については、「SMC を有効化および構成する」をご参照ください。

原因

smc_run コマンドは、次のメカニズムを使用して SMC を透過的に有効にします。LD_PRELOAD 変数で指定された smc-tools からの動的リンクライブラリを他のライブラリよりも前にプリロードし、プリロードされた動的リンクライブラリで socket(2) 呼び出しを行って、ソケットのファミリとプロトコルを変更します。アプリケーションが動的にリンクされていない場合、smc_run コマンドを実行してアプリケーションの SMC を透過的に有効にすることはできません。

解決策

sysctl net.smc.tcp2smc コマンドを実行して SMC を有効にします。詳細については、「SMC を有効化および構成する」をご参照ください。

SMC を有効にした後、特定のポートが使用できなくなる

問題の説明

SMC がロードされると、65500 ~ 65515 のポート範囲内の 16 個のポートが使用できなくなります。ポートに対して bind(2) 呼び出しを行うと、EADDRINUSE が返されます。

原因

SMC-R と eRDMA が一緒に使用されています。SMC モジュールは、ERI が存在するネット名前空間のポート 65500 ~ 65515 を使用して、アウトオブバンド (OOB) 接続を確立します。dmesg コマンドを実行し、コマンド出力で次の情報を確認できます。

smc: smc: load SMC module with reserve_mode
NET: Registered protocol family 43
smc: netns <netns ID> reserved ports [65500 ~ 65515] for eRDMA OOB
smc: adding ib device erdma_0 with port count 1
smc: ib device erdma_0 port 1 has pnetid

SMC モジュールがポートを占有できなかった場合、SMC モジュールは eRDMA デバイスを使用できません。

解決策

SMC モジュールをアンロードして、ポートを解放します。SMC モジュールのアンロード方法については、「SMC の使用」トピックのAlibaba Cloud ECS で SMC を使用するセクションを参照してください。

IPv6 アドレスを使用すると、SMC が TCP にフォールバックする

問題の説明

IPv6 アドレスを使用するアプリケーションに対して SMC を有効にした後、smcss コマンド出力は、原因コード 0x03030000 または 0x0x09990000 で SMC が TCP にフォールバックしたことを示しています。

原因

Alibaba Cloud eRDMA デバイスと SMC は IPv6 アドレスをサポートしていないため、SMC は TCP にフォールバックします。

解決策

新しい接続に対して SMC を有効にする前に、次のいずれかの方法を使用します。

  • 方法 1: IPv6 アドレスを無効にする。

    • 次のコマンドを実行して、すべてのネットワークインターフェースの IPv6 アドレスを無効にします。

      sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
      sysctl -w net.ipv6.conf.default.disable_ipv6=1
    • 次のコマンドを実行して、特定のネットワークインターフェースの IPv6 アドレスを無効にします。

      <NetInName> をネットワークインターフェースの名前に置き換えます。

      sudo sysctl -w net.ipv6.conf.<NetInName>.disable_ipv6=1
  • 方法 2: カーネルバージョン 5.10.134-17.3 以降で IPv4 マップ IPv6 アドレスを使用する。

極端な PPS 条件下では、SMC のパフォーマンスが TCP のパフォーマンスよりも低い

問題の説明

ネットワーク負荷が ECS インスタンスタイプで定義されている最大 1 秒あたりのパケット数 (PPS) レートに達すると、eRDMA で SMC を使用するアプリケーションは、TCP を使用するアプリケーションよりもクエリ/秒 (QPS) パフォーマンスが低くなります。

  • TCP トラフィック: sar -n DEV 1 コマンドを実行して、ネットワークインターフェースで 1 秒あたりに送信されるパケット数 (rxpck/s および txpck/s) を確認し、ネットワーク負荷が PPS 制限に達しているかどうかを確認します。

  • SMC eRDMA トラフィック: eadm stat -d <ibdev_name> -l コマンドを実行して、eRDMA ネットワークインターフェースで 1 秒あたりに送信されるパケット数を確認し、ネットワーク負荷が PPS 制限に達しているかどうかを確認します。eadm の詳細については、「eadm を使用して eRDMA の問題を診断およびトラブルシューティングする」をご参照ください。

原因

RDMA は、同じ数のネットワークリクエストに対して TCP よりも多くのネットワークパケットを生成します。その結果、ECS インスタンスの PPS 制限に早く達し、アプリケーションの QPS パフォーマンスが向上しなくなります。

解決策

この問題は、ベンチマークストレステスト中など、PPS 制限に達する極端なネットワーク負荷条件下でのみ発生します。実際のシナリオでは、ネットワークトラフィック負荷が PPS 制限に達することはめったにありません。これが発生した場合は、SMC を使用しないことをお勧めします。

SMC が TCP にフォールバックし、RDMA を使用して通信を高速化できない

問題の説明

アプリケーションで TCP を置き換えるために SMC を有効にした後、smcss -a コマンドを実行すると、コマンド出力は SMC 接続が自動的に TCP にフォールバックしたことを示しています。

原因

SMC 接続の確立中に例外が発生して SMC 接続が TCP にフォールバックした場合でも、SMC 接続を通信に使用することはできますが、SMC 接続を使用するアプリケーションは RDMA のパフォーマンス上の利点を利用できません。SMC から TCP へのフォールバックが発生すると、原因コードが返されます。コードに基づいてフォールバックの原因を特定できます。

解決策

  1. smcss -a コマンドを実行して、SMC から TCP へのフォールバックの原因コードを取得します。

    コマンド出力の例:

    State          UID   Inode   Local Address           Peer Address            Intf Mode
    ACTIVE         00000 0156721 192.168.99.21:60188     192.168.99.22:8090      0000 TCP 0x03010000
    ACTIVE         00000 1202539 172.16.4.189:44780      172.16.4.190:1811       0000 SMCR

    最初のエントリでは、[Intf Mode] 列の TCP は、SMC 接続が TCP にフォールバックしたことを示しています。原因コードは 0x03010000 です。2 番目のエントリでは、[Intf Mode] 列の SMCR は、SMC-R 接続が確立されていることを示しています。2 つの原因コード (例: 0x05000000 と 0x03030001) が [Intf Mode] 列に表示されている場合、最初のコードはローカルホストの原因を示し、2 番目のコードはピアホストの原因を示します。ほとんどの場合、SMC から TCP へのフォールバックはピアホストによって発生します。

  2. 原因コードに基づいて SMC から TCP へのフォールバックの原因を特定し、フォールバックを解決します。

    次の表に、SMC から TCP へのフォールバックの原因と原因コード、およびフォールバックの解決策を示します。

    原因コード

    説明

    考えられる原因と解決策

    0x01010000

    メモリ不足のため、リソースを作成できません。

    • 原因: ホストメモリが不足しており、SMC 接続の確立に必要なデータ構造と読み取りおよび書き込み操作に対応できません。

    • 解決策: 不要なプロセスを終了するなどの操作を実行して、使用可能なメモリを増やします。

    0x02010000

    TCP ハンドシェイクプロセス中に接続層制御 (CLC) またはリンク層制御 (LLC) メッセージが送信されると、RDMA リンクを介して送信されるリンク確認メッセージがタイムアウトします。

      • 原因 1: RDMA ネットワークインターフェースカード (RNIC) または RDMA リンクに障害が発生しています。その結果、RDMA リンクを介して送信される LLC メッセージへの応答がタイムアウトします。

      • 解決策 1: RNIC が期待どおりに動作していることを確認します。

      • 原因 2: イーサネットネットワークインターフェースコントローラー (NIC) または TCP/IP ネットワークに障害が発生しています。その結果、TCP 接続を介して送信される CLC メッセージへの応答がタイムアウトします。

      • 解決策 2: イーサネット NIC が期待どおりに動作していることを確認します。

    0x02020000

    RDMA リンクを確立するために LLC メッセージが送信されると、タイムアウトが発生します。

    原因コードは使用されていません。

    0x03000000

    構成が正しくないため、正しい IP アドレスを取得できません。

    • 原因: SMC 接続を確立するための提案が作成されるときに、CLC ソケットに対応する IP アドレスを取得できません。

    • 解決策: TCP ベースの CLC 接続と対応するデバイスが期待どおりに動作していることを確認します。

    0x03010000

    ピアホストは SMC をサポートまたは使用していません。

    • 原因: ピアホストは SMC をサポートしていません。ピアホストが SMC をサポートしている場合、TCP ハンドシェイクプロセス中に CLC 接続を介して送信される SYN または SYNACK パケットは、SMC TCP オプションフラグを伝送します。

    • 解決策: ローカルホストまたはピアホスト上のアプリケーションのプロトコルスタックが SMC プロトコルスタックに置き換えられているかどうかを確認し、smc-tools パッケージから smcss コマンドを実行して SMC 接続の状態を確認します。アプリケーションに対応する接続とポートが存在しない場合は、TCP を SMC に置き換え、SMC 接続を確立します。

    0x03020000

    IPsec はサポートされていません。

    • 原因: SMC 接続で IPsec が使用されていますが、SMC は IPsec をサポートしていません。

    • 解決策: SMC 接続で IPsec を使用しないでください。

    0x03030000

    共有メモリ通信 - ダイレクトメモリアクセス (SMC-D) または SMC-R デバイスが使用できません。

      • 原因 1: SMC-R 接続を確立するために使用できる RDMA デバイスがありません。

      • 解決策 1: smcr d コマンドを実行して、SMC-R 接続を確立するために使用できる RDMA デバイスがあるかどうかを確認します。Alibaba Cloud eRDMA シナリオで使用できる RDMA デバイスがない場合は、ECS コンソールで ERI が正しく構成されており、インスタンスのオペレーティングシステムに ERI ドライバーが正しくインストールされていることを確認します。

      • 原因 2: 複数のイーサネット NIC が使用されている場合、SMC-R 接続に使用されるイーサネット NIC は eRDMA 対応ではなく、eRDMA デバイスは見つかりません。

      • 解決策 2: ibv_devinfo コマンドを実行して、eRDMA デバイスのノード GUID をクエリします。ip addr コマンドを実行して、イーサネット NIC の MAC アドレスをクエリします。次に、eRDMA デバイスのノード GUID とイーサネット NIC の MAC アドレスを比較して、イーサネット NIC が eRDMA 対応かどうかを判断します。

      • 原因 3: RDMA デバイスが排他モードで実行するように設定されている場合、SMC は RDMA ソケットが作成されたネット名前空間でのみ RDMA デバイスを検索します。

      • 解決策 3: rdma system コマンドを実行して、RDMA デバイスの動作モードを確認します。RDMA デバイスが排他モードで実行されている場合、コマンド出力に netns exclusive と表示されます。ネット名前空間で RDMA デバイスを使用するには、rdma dev set <RDMA デバイス名> netns <ネット名前空間名> コマンドを実行して、RDMA デバイスをネット名前空間に移動します。RDMA デバイスが RDMA over Converged Ethernet (RoCE) または Internet Wide Area RDMA Protocol (iWARP) デバイスである場合は、RDMA デバイスと必要なイーサネットデバイスをネット名前空間に移動します。

      • 原因 4: eRDMA デバイスが使用されている場合、クライアントは AF_INET6 接続を SMC 接続に置き換えようとします。

      • 解決策 4: eRDMA デバイスは、AF_INET6 接続の置き換えを許可しない SMC バージョン 2 (SMCv2) プロトコルにのみ基づいています。TCP を使用します。次に、アプリケーションのプロトコルファミリを AF_INET に変更します。

    0x03030001

    SMC-D デバイスが利用できません。

    Alibaba Cloud では SMC-D デバイスを提供していません。問題が発生した場合は、Alibaba Cloud テクニカルサポートに連絡してください。

    0x03030002

    使用可能な SMC-R デバイスがありません。

      • 原因 1:SMC 接続の確立中に、選択された RDMA デバイスが無効になります。

      • 解決策 1: smcr d コマンドを実行して、システムで使用可能な SMC-R デバイスがあるかどうかを確認します。必要な RDMA デバイスが Alibaba Cloud ERI の場合は、ERI が ECS コンソールに追加され、ERI ドライバーが正しくインストールおよび構成されていることを確認します。

      • 原因 2:複数のイーサネット NIC を使用する場合、SMC-R 接続に使用されるイーサネット NIC が eRDMA 対応ではなく、eRDMA デバイスが見つかりません。

      • 解決策 2: ibv_devinfo コマンドを実行して、eRDMA デバイスのノード GUID をクエリします。ip addr コマンドを実行して、イーサネット NIC の MAC アドレスをクエリします。次に、eRDMA デバイスのノード GUID とイーサネット NIC の MAC アドレスを比較して、イーサネット NIC が eRDMA 対応かどうかを判断します。

      • 原因 3:RDMA デバイスが排他モードで実行するように設定されている場合、SMC は RDMA ソケットが作成されたネット名前空間でのみ RDMA デバイスを検索します。

      • 解決策 3: rdma system コマンドを実行して、RDMA デバイスの動作モードを確認します。RDMA デバイスが排他モードで実行されている場合、コマンド出力に netns exclusive が表示されます。ネット名前空間で RDMA デバイスを使用するには、rdma dev set <RDMA device name> netns <Net namespace name> コマンドを実行して、RDMA デバイスをネット名前空間に移動します。RDMA デバイスが RoCE または iWARP デバイスの場合は、RDMA デバイスと必要なイーサネットデバイスをネット名前空間に移動します。

    0x03030003

    SMC-D デバイスは、ISMv2 プロトコルをサポートしていません。

    Alibaba Cloud では SMC-D デバイスを提供していません。問題が発生した場合は、Alibaba Cloud テクニカルサポートにお問い合わせください。

    0x03030004

    ピア ホストは、SMCv2 プロトコルの拡張機能をサポートしていません。

    • 原因: ローカルホストでは SMCv2 プロトコルが有効になっていますが、ピアホストは SMCv2 プロトコルをサポートしていません。SMC プロトコルスタックは、基盤となるデバイスの機能に基づいて SMCv1 または SMCv2 プロトコルを使用します。Alibaba Cloud eRDMA または RoCE v2 シナリオでは、SMCv2 が使用されます。

    • 解決策: 通信する両方のホストで同じ種類の RDMA デバイスを使用して、ホストで同じ SMC プロトコルバージョンが使用されるようにします。smcr d コマンドを実行して、SMC-R デバイスをクエリします。コマンド出力の Type 列の値は、SMC-R デバイスの種類を示します。値には、RoCE_Express、RoCE_Express2、および 0x107f が含まれます。値 0x107f は、Alibaba Cloud eRDMA を示します。

    0x03030005

    ピア ホストは、SMC-D v2 プロトコルの拡張機能をサポートしていません。

    Alibaba Cloud は SMC-D デバイスを提供していません。問題が発生した場合は、Alibaba Cloud テクニカルサポートに連絡してください。

    0x03030006

    ピア ホストにシステム エンタープライズ ID(SEID)がありません。

    この原因コードは使用されていません。

    0x03030007

    SMC-D v2 デバイスが利用できません。

    Alibaba Cloud では SMC-D デバイスを提供していません。問題が発生した場合は、Alibaba Cloud テクニカルサポートに連絡してください。

    0x03030008

    ピアホストにユーザー定義エンタープライズ ID (UEID) がありません。

    • 原因: SMCv2 プロトコルが使用されていますが、UEID が指定されていません。

    • 解決策: smc-tools パッケージから smcr ueid {show | add | del} コマンドを実行して、通信する両方のホストに同じ UEID を指定します。

    0x03030009

    ローカルホストとピアホスト間の SMC バージョンネゴシエーションが失敗します。

    • 原因: ローカルホストとピアホストによってネゴシエートされた SMC バージョンが、CLC ハンドシェイク中に変更されます。

    • 解決策: ローカルホストとピアホストが同じオペレーティングシステムディストリビューションを実行していることを確認します。

    0x0303000a

    リンクグループあたりの最大接続数に関するネゴシエーション(リンクグループあたりの最大接続数ネゴシエーション)が失敗しました。

    • 原因: SMCv2.1 はリンクグループあたりの最大接続数ネゴシエーションをサポートしています。ネゴシエーションの結果が受け入れられない場合、フォールバックが発生します。たとえば、ネゴシエートされた数がゼロであるか、ローカルホストで許可されている最大値を超えています。

    • 解決策: ローカルホストとピアホストが同じオペレーティングシステムディストリビューションを実行していることを確認してください。

    0x0303000b

    リンクグループあたりの最大リンク数に関するネゴシエーション(リンクグループあたりの最大リンク数ネゴシエーション)が失敗しました。

    • 原因: SMCv2.1 は、リンクグループあたりの最大リンク数ネゴシエーションをサポートしています。ネゴシエーションの結果が受け入れられない場合は、フォールバックが発生します。たとえば、ネゴシエートされた数がゼロであるか、ローカルホストで許可されている最大値を超えています。

    • 解決策: ローカルホストとピアホストが同じオペレーティングシステムディストリビューションを実行していることを確認します。

    0x0303000c

    ローカルホストとピアホスト間の SMC ベンダー機能のネゴシエーションが失敗しました。

    • 原因:ローカルホストとピアホストによってネゴシエートされた SMC ベンダー機能が、CLC ハンドシェイク中に変更されます。

    • 解決策:ローカルホストとピアホストが同じオペレーティングシステムディストリビューションを実行していることを確認します。次に、uname -r コマンドを実行してカーネルバージョンを確認します。カーネルバージョンが 5.10.134-015 の場合は、接続確立中に sysctl net.smc.vendor_exp_options の値を変更しないでください。カーネルバージョンが 5.10.134-016 以降の場合は、接続確立中に sysctl net.smc.experiment_vendor_options の値を変更しないでください。

    0x03040000

    ローカルホストとピアホストが、SMC デバイスの異なるモード(SMC-D または SMC-R)を使用しています。

    Alibaba Cloud は SMC-D デバイスを提供していません。問題が発生した場合は、Alibaba Cloud テクニカルサポートにお問い合わせください。

    0x03050000

    ピアホストのリモートメモリバッファ要素 (CNYE) にアイキャッチャーがあります。

    この原因コードは Linux では使用されていません。

    0x03060000

    SMC 接続は MSG_FASTOPEN フラグをサポートしていません。

    • 原因: SMC は MSG_FASTOPEN フラグをサポートしていません。

    • 解決策: SMC ソケットを作成する際に、MSG_FASTOPEN フラグを削除してください。

    0x03070000

    ローカル ホストの IP プレフィックスまたは IP サブセットが、ピア ホストの IP プレフィックスまたは IP サブセットと異なります。

    • 原因: RDMA デバイスが RoCEv1 デバイスの場合、SMCv1 プロトコルが自動的に使用されます。 SMCv1 は、サブネット内通信のみをサポートします。 通信する両方のホストが同じサブネット内にない場合、フォールバックが発生します。

    • 解決策: RDMA デバイスが RoCEv1 デバイスの場合は、通信する両方のホストが同じサブネット内にあることを確認してください。 RDMA デバイスが eRDMA 対応の場合、SMCv2 プロトコルが自動的に使用され、サブネットの制限によるフォールバックは発生しません。

    0x03080000

    デバイスの VLAN ID を取得できません。

    • 原因: 接続の確立中に、SMC は SMC ソケットに対応するデバイスの VLAN ID を取得しようとします。

    • 解決策: クインタプルと対応するイーサネット デバイスによって識別される TCP 接続が想定どおりに機能していることを確認します。

    0x03090000

    VLAN ID を内部共有メモリ(ISM)デバイスに登録できません。

    Alibaba Cloud は SMC-D デバイスを提供していません。問題が発生した場合は、Alibaba Cloud テクニカルサポートに連絡してください。

    0x030a0000

    リンクグループで使用可能な SMC-R RDMA リンクがありません。

    • 原因: SMC-R 接続が確立されると、接続が属するリンクグループからリンクが割り当てられます。接続にリンクが割り当てられていない場合、RDMA を使用して接続を高速化することはできません。

    • 解決策: smcr d コマンドを実行して、ECS インスタンスの RNIC が想定どおりに動作しているかどうかを確認します。必要な RDMA デバイスが Alibaba Cloud ERI の場合は、ERI が ECS コンソールに追加され、ERI ドライバーが正しくインストールおよび構成されていることを確認してください。

    0x030b0000

    クライアントは、サーバーによって提供された RDMA リンクを見つけることができません。

    • 原因: クライアントは、サーバーによって提供されたキューペア番号 (QPN)、グローバル識別子 (GID)、およびメディアアクセス制御アドレス (MAC) 情報に基づいて RDMA リンクを検索し、サーバーへの接続を確立します。 クライアントが必要な RDMA リンクを見つけられない場合、接続は RDMA によって高速化されません。

    • 解決策: smcr d コマンドを実行して、ECS インスタンスの RNIC が想定どおりに動作しているかどうかを確認します。 必要な RDMA デバイスが Alibaba Cloud ERI の場合は、ERI が ECS コンソールに追加され、ERI ドライバーが正しくインストールおよび構成されていることを確認します。

    0x030c0000

    SMC バージョンのネゴシエーションに失敗しました。

    • 原因: ローカルホストとピアホストによってネゴシエートされた SMC バージョンが受け入れられません。

    • 解決策: ローカルホストとピアホストが同じオペレーティングシステムディストリビューションを実行していることを確認します。

    0x030d0000

    SMC-D DMB の最大数に達しました。

    Alibaba Cloud は SMC-D デバイスを提供していません。問題が発生した場合は、Alibaba Cloud テクニカルサポートに連絡してください。

    0x030e0000

    ピア ホストは、SMC-R V2 プロトコルを介してローカル ホストに接続できません。

    • 原因: SMCv2 プロトコルを介して接続が確立されると、クライアントはサーバーによって提供された IP アドレスに基づいてルーティング情報を検索する必要があります。現在、クライアントはローカル ホストとピア ホストの IP アドレスに基づいてルーティング情報を検索できません。

    • 解決策: クインタプルと対応するイーサネット デバイスによって識別される TCP 接続が想定どおりに機能し、到達可能であることを確認します。たとえば、イーサネット NIC、IP 構成、およびルーティング構成が正常でアクセス可能であることを確認します。

    0x030f0000

    SMC-R V2 接続が間接接続であるかどうかを示すフラグが正しく設定されていません。

    • 原因: SMCv2 プロトコルで接続が確立されると、クライアントはサーバーからのゲートウェイフラグに基づいてトラフィックがゲートウェイを通過すると判断します。ただし、ローカルホストとピアホストの IP アドレスに基づいて取得されたルーティング情報は、トラフィックがゲートウェイを通過しないことを示しています。

    • 解決策: クインタプルと対応するイーサネットデバイスによって識別される TCP 接続が想定どおりに機能し、到達可能であり、同じネットワークパスを使用していることを確認します。たとえば、イーサネット NIC、IP 構成、およびルーティング構成が正常でアクセス可能であることを確認します。

    0x04000000

    サーバーとクライアントが同じリンクグループを使用していません。

    • 原因: 接続確立時に、サーバーはリンクグループを再利用しますが、クライアントはリンクグループを作成しようとします。

    • 解決策: smcr d コマンドを実行して、ECS インスタンス上の RNIC が想定どおりに動作しているかどうかを確認します。必要な RDMA デバイスが Alibaba Cloud ERI の場合は、ERI が ECS コンソールに追加され、ERI ドライバーが正しくインストールおよび構成されていることを確認してください。

    0x05000000

    ピア ホストがハンドシェイクを拒否します。

    • 原因: 接続の確立中に、ピア ホストが CLC メッセージで RDMA 接続を拒否しました。

    • 解決策: smcss コマンドを実行し、5 つの情報に基づいて拒否された RDMA 接続を見つけ、ピア ホストのエラー コードに基づいてフォールバックの原因を特定します。

    0x09990000

    RDMA 関連リソースの作成に失敗しました。

    • 原因: RDMA リソースの作成または初期化に失敗しました。

    • 解決策: RDMA 監視ツールを使用して、失敗したリソースリクエストに関する統計情報を表示します。Alibaba Cloud eRDMA デバイスを使用している場合は、eadm stat コマンドを実行してエラー統計を表示できます。

    0x09990001

    RDMA RToken を追加できませんでした。

    これは、SMC プロトコルスタックの問題です。問題が発生した場合は、Alibaba Cloud テクニカルサポートに連絡してください。

    0x09990002

    RDMA キューペア(QP)の初期化に失敗しました。

    • 原因: 接続の確立中に RDMA QP を必要とする RDMA リンクを作成する必要がある場合、SMC は InfiniBand (IB) verbs インターフェイスを呼び出して、RDMA QP を初期化および変更します。このプロセス中に問題が発生します。

    • 解決策: smcr d コマンドを実行して、使用可能な SMC-R デバイスをクエリします。RDMA デバイスが Alibaba Cloud ERI の場合は、ERI が ECS コンソールで適切に構成されており、ERI ドライバーがオペレーティングシステムに適切にインストールされていることを確認してください。

    0x09990003

    メモリ領域 (MR) が、SMC で使用される RDMA デバイスに登録できません。

    • 原因: RDMA を使用して通信する場合、MR はデータにアクセスして書き込むために RDMA デバイスに登録する必要があります。 MR の数またはサイズが RDMA デバイスでサポートされている仕様を超えると、エラーが報告されます。

    • smcr d コマンドを実行して、SMC で使用されている RDMA デバイスの名前をクエリします。 ibv_devinfo -d <RDMA デバイス名> -v | grep max_mr コマンドを実行します。 コマンド出力では、max_mr は RDMA デバイスでサポートされている MR の最大数を示し、max_mr_size は RDMA デバイスでサポートされている MR の最大サイズを示します。 ほとんどの場合、MR の最大数に達したために問題が発生します。 MR の数を減らすには、SMC 接続の数を減らします。

    0x09990004

    SMC フロー制御に必要なクレジットは初期化できません。

    • 原因: RNIC または RDMA リンクに障害が発生しました。その結果、クレジット メッセージを RDMA リンク経由で送信できません。

    • 解決策: RNIC が想定どおりに動作していることを確認します。

SMC を有効にした後、一般的なネットワーク O&M ツールで収集されたデータが期待どおりにならない

問題の説明

Alibaba Cloud Linux 3 を実行している ECS インスタンスで SMC を有効にした後、tcpdump や Wireshark などの一般的なネットワーク分析ツール、および Socket Statistics(ss)や netstat ユーティリティなどのネットワーク監視ツールで収集されるネットワークトラフィックデータが期待どおりにならないか、期待されるトラフィックデータを収集できません。

原因

SMC-R は、RDMA に基づく通信プロトコルです。現在、一般的なネットワーク O&M ツールは TCP トラフィックのみを分析または監視し、RDMA パケットを識別できません。その結果、ネットワーク O&M ツールに表示されるデータは、実際のネットワークデータと一致しません。

解決策

RDMA 関連の O&M ツールを使用して、データを分析または監視します。詳細については、「eRDMA の監視と確認」をご参照ください。

GPU アクセラレーションインスタンスまたはスーパーコンピューティングクラスタ (SCC) インスタンスにロードされている SMC モジュールが使用できません

問題の説明

GPU アクセラレーションインスタンスまたは SCC インスタンスにロードされている SMC モジュールが使用できません。

原因

Mellanox OpenFabrics Enterprise Distribution (OFED) ドライバーは、GPU アクセラレーションインスタンスおよび SCC インスタンスにインストールされています。OFED スタックの SMC モジュールは自動的にロードされ、動作しません。Mellanox OFED ドライバーをインストールすると、RDMA 関連関数のシンボルが変更されます。カーネルに含まれる SMC モジュールはロードに失敗し、Unknow symbol エラーが表示されます。

解決策

Alibaba Cloud Linux 3 の SMC モジュールは、GPU アクセラレーションインスタンスまたは SCC インスタンスでは使用できません。

SMC を有効にした後、setsockopt および getsockopt 呼び出しの一部の SOL_SOCKET または SOL_TCP レベルのオプションが期待どおりに動作しません

問題の説明

アプリケーションで TCP を置き換えるために SMC を有効にした後、TCP 接続に使用されていた一部の SOL_SOCKET または SOL_TCP レベルのオプションを、setsockopt または getsockopt 呼び出しを行うことで構成できなかったり、構成後に期待どおりに動作しなかったりします。

原因

TCP プロトコルスタックを SMC プロトコルスタックに置き換えると、共有バッファーを使用して SMC リンク経由でデータが転送されます。 SMC のプロトコルスタック設計とデータ転送方法は、TCP のプロトコルスタック設計とデータ転送方法とは大きく異なります。 この場合、SOL_SOCKET または SOL_TCP レベルのオプションは適用できません。

解決策

Alibaba Cloud Linux 3 で SMC によってサポートされている SOL_SOCKET または SOL_TCP レベルのオプション、およびサポートされていないオプションに注意してください。 次の表は、SOL_SOCKET または SOL_TCP レベルのオプションに対する SMC のサポートについて説明しています。

表には、Y、M、および N が表示されます。

  • Y: オプションは SMC でサポートされており、構成および取得が可能で、期待どおりに動作します。

  • M: オプションは SMC でサポートされておらず、構成および取得は可能ですが、SMC と TCP の設計の違いにより、期待どおりに動作しません。

  • N: オプションは SMC でサポートされておらず、構成または取得できません。 原因コード 0x03060000 または 0x03010001 で TCP へのフォールバックが発生します。

SOL_SOCKET レベルのオプション

オプション

SMC でのサポート

SO_DEBUG

Y

SO_REUSEADDR

Y

SO_TYPE

Y

SO_ERROR

Y

SO_DONTROUTE

M

SO_BROADCAST

M

SO_SNDBUF

Y

SO_RCVBUF

Y

SO_SNDBUFFORCE

Y

SO_RCVBUFFORCE

Y

SO_KEEPALIVE

M

SO_OOBINLINE

M

SO_NO_CHECK

M

SO_PRIORITY

M

SO_LINGER

Y

SO_BSDCOMPAT

M

SO_REUSEPORT

Y

SO_PASSCRED

M

SO_PEERCRED

M

SO_RCVLOWAT

M

SO_SNDLOWAT

M

SO_RCVTIMEO_OLD

Y

SO_SNDTIMEO_OLD

Y

SO_SECURITY_AUTHENTICATION

N

SO_SECURITY_ENCRYPTION_TRANSPORT

N

SO_SECURITY_ENCRYPTION_NETWORK

N

SO_BINDTODEVICE

N

SO_ATTACH_FILTER

M

SO_DETACH_FILTER

M

SO_PEERNAME

Y

SO_ACCEPTCONN

M

SO_PEERSEC

N

SO_PASSSEC

M

SO_MARK

M

SO_PROTOCOL

Y

SO_DOMAIN

Y

SO_RXQ_OVFL

M

SO_WIFI_STATUS

M

SO_PEEK_OFF

N

SO_NOFCS

M

SO_LOCK_FILTER

Y

SO_SELECT_ERR_QUEUE

M

SO_BUSY_POLL

M

SO_MAX_PACING_RATE

M

SO_BPF_EXTENSIONS

Y

SO_INCOMING_CPU

M

SO_ATTACH_BPF

M

SO_ATTACH_REUSEPORT_CBPF

M

SO_ATTACH_REUSEPORT_EBPF

N

SO_CNX_ADVICE

M

SO_MEMINFO

M

SO_INCOMING_NAPI_ID

M

SO_COOKIE

Y

SO_PEERGROUPS

N

SO_ZEROCOPY

N

SO_TXTIME

M

SO_BINDTOIFINDEX

N

SO_TIMESTAMP_OLD

M

SO_TIMESTAMPNS_OLD

M

SO_TIMESTAMPING_OLD

M

SO_TIMESTAMP_NEW

M

SO_TIMESTAMPNS_NEW

M

SO_TIMESTAMPING_NEW

M

SO_RCVTIMEO_NEW

Y

SO_SNDTIMEO_NEW

Y

SO_DETACH_REUSEPORT_BPF

N

SOL_TCP レベルのオプション

オプション

SMC でのサポート

TCP_NODELAY

Y

TCP_MAXSEG

M

TCP_CORK

Y

TCP_KEEPIDLE

M

TCP_KEEPINTVL

M

TCP_KEEPCNT

M

TCP_SYNCNT

M

TCP_LINGER2

M

TCP_DEFER_ACCEPT

Y

TCP_WINDOW_CLAMP

M

TCP_INFO

M

TCP_QUICKACK

M

TCP_CONGESTION

M

TCP_MD5SIG

Y

TCP_THIN_LINEAR_TIMEOUTS

M

TCP_THIN_DUPACK

M

TCP_USER_TIMEOUT

M

TCP_REPAIR

M

TCP_REPAIR_QUEUE

M

TCP_QUEUE_SEQ

M

TCP_REPAIR_OPTIONS

M

TCP_FASTOPEN

N

TCP_TIMESTAMP

M

TCP_NOTSENT_LOWAT

M

TCP_CC_INFO

M

TCP_SAVE_SYN

Y

TCP_SAVED_SYN

Y

TCP_REPAIR_WINDOW

M

TCP_FASTOPEN_CONNECT

N

TCP_ULP

N

TCP_MD5SIG_EXT

Y

TCP_FASTOPEN_KEY

N

TCP_FASTOPEN_NO_COOKIE

N

TCP_ZEROCOPY_RECEIVE

N

TCP_CM_INQ/TCP_INQ

M

TCP_TX_DELAY

M