Sockets Direct Protocol ( SDP ) は、リモートダイレクトメモリアクセス(RDMA)ネットワークファブリック上でストリームソケットをサポートするトランスポート非依存プロトコルです。SDP は、InfiniBand Trade Associationの Software Working Group (SWG) によって最初に定義されました。元々はInfiniBand (IB) 用に設計された SDP は、現在OpenFabrics Allianceによって維持されています。[ 1 ]
SDPは、RDMAファブリック上でストリームソケット(SOCK_STREAM)をサポートする標準ワイヤプロトコルを定義します。SDPは、高性能なゼロコピーデータ転送のために、さまざまなRDMAネットワーク機能を使用します。SDPは純粋なワイヤプロトコルレベルの仕様であり、ソケットAPIや実装の詳細には触れません。
ソケットダイレクトプロトコルの目的は、IP上でTCPプロトコルに代わるRDMAアクセラレーション対応のプロトコルを提供することです。その目的は、アプリケーションにとって透過的な方法でこれを実現することです。
Solaris 10およびSolaris 11 Express には SDP のサポートが含まれています。他のいくつかの Unix オペレーティングシステムの派生版も Sockets Direct Protocol のサポートを含める予定です。Windows には Winsock Direct と呼ばれるサブシステムがあり、これを使用して SDP をサポートできます。[ 2 ]
SDP サポートは、 Solaris およびLinuxオペレーティングシステム (OFED 1.4.2 および 1.5)にデプロイされたアプリケーション向けに、Java Platform, Standard Edition の JDK 7 リリース(2011 年 7 月) で導入されました。 [ 3 ] Oracle Database 11g は SDP 経由の接続をサポートしています。[ 4 ]
Sockets Direct Protocol (SDP) はストリームソケットのみを扱い、システムにインストールされている場合は、RDMA ファブリック上の任意のエンドポイント間のストリーム接続において、OS 常駐の TCP スタックをバイパスします。その他のソケットタイプ (データグラム、生データ、パケットなど) は、Linux IP スタックによってサポートされ、標準の IP インターフェイス (InfiniBand ファブリック上の IPoIB など) 上で動作します。IP スタックは SDP スタックに依存しませんが、SDP スタックは、ローカル IP 割り当てとエンドポイント識別のための IP アドレス解決に IP ドライバを必要とします。
SDPは、オーストラリアの通信会社テルストラが自社の3Gプラットフォーム「Next G」上で、モバイルTVのストリーミング配信に利用している。
このプロトコルは非推奨[ 5 ]になっているか、OFEDの最新リリースではメンテナンスされていないため、代替手段を探してください。考えられる代替案としては、RSocket、Winsockなどがあります。