(54)【発明の名称】ミドルウェアおよびアプリケーションの実行のための設計されたシステムに対するサービス妨害(DOS:DENIAL OF SERVICE)攻撃を防止するためのシステムおよび方法、ならびに、ミドルウェアおよびアプリケーションの実行のための設計されたシステムにおいてサブネットアドミニストレータ(SA:SUBNET ADMINISTRATOR)アクセスに基づいて信頼性のある接続(RC:RELIABLE CONNECTION)をサポートするためのシステムおよび方法
(58)【調査した分野】(Int.Cl.,DB名)
前記サブネットが、ファットツリートポロジまたはホストポートからの接続が1つ以上のリーフスイッチを介するトポロジのうちの少なくとも1つとして実現されるインフィニバンド(IB)サブネットであることを可能にするステップをさらに含む、請求項1に記載の方法。
前記1つ以上のクライアントノードについて、SAアクセスのために専用のパーティションをセットアップするステップをさらに含み、前記1つ以上のクライアントノードは、ネットワークファブリックにおけるクライアントノードの物理的なサブセットと、ネットワークファブリックにおけるクライアントノードの論理的なサブセットとのうちの少なくとも1つを含む、請求項1または2に記載の方法。
各指定されるQPナンバーに明示的に関連付けられるパケット受信バッファの専用のセットのみを各クライアントノードが使用することを保証するステップをさらに含む、請求項1〜4のいずれか1項に記載の方法。
前記サブネットは、ファットツリートポロジまたはホストポートからの接続がリーフスイッチを介するトポロジのうちの少なくとも1つとして実現されるインフィニバンド(IB)サブネットであり、
SAアクセスについての専用のパーティションは、前記1つ以上のクライアントノードについてセットアップされ、前記1つ以上のクライアントノードは、ネットワークファブリックにおけるクライアントノードの物理的なサブセットと、ネットワークファブリックにおけるクライアントノードの論理的なサブセットとのうちの少なくとも1つを含み、
専用のキューペア(QP)ナンバーが、各クライアントノードについて割り当てられ、
各クライアントノードは、各指定されるQPナンバーに明示的に関連付けられるパケット受信バッファの専用のセットのみを使用することが可能であり、
異なるクライアントノードから受け取られる前記1つ以上の要求の実際の処理は公平なインターリービングとともに行われ、
専用のパーティションナンバーと、1つ以上のクライアントポートについての専用のQPナンバーとを選択するよう1つ以上の規定が使用され、および/または、
特定のクライアントQPナンバーへのアクセスを、指定される特定のクライアントポートに制限するために、前記1つ以上のクライアントノードに関連付けられるクライアントポートについて信頼されたホストチャネルアダプタインプリメンテーションが使用され、かつ、SA要求パケットにおける信頼されたソースLID情報に依拠する、請求項7に記載のシステム。
前記サブネットは、ファットツリートポロジまたはホストポートからの接続がリーフスイッチを介するトポロジのうちの少なくとも1つとして実現されるインフィニバンド(IB)サブネットであり、
SAアクセスについての専用のパーティションは、前記1つ以上のクライアントノードについてセットアップされ、前記1つ以上のクライアントノードは、ネットワークファブリックにおけるクライアントノードの物理的なサブセットと、ネットワークファブリックにおけるクライアントノードの論理的なサブセットとのうちの少なくとも1つを含み、
専用のキューペア(QP)ナンバーは、各クライアントノードについて割り当てられ、
各クライアントノードは、各指定されるQPナンバーに明示的に関連付けられるパケット受信バッファの専用のセットのみを使用することが可能であり、
異なるクライアントノードから受け取られる前記1つ以上の要求の実際の処理は公平なインターリービングとともに行われ、
専用のパーティションナンバーと、1つ以上のクライアントポートについての専用のQPナンバーとを選択するよう1つ以上の規定が使用され、および/または、
特定のクライアントQPナンバーへのアクセスを、指定される特定のクライアントポートに制限するために、前記1つ以上のクライアントノードに関連付けられるクライアントポートについて信頼されたホストチャネルアダプタインプリメンテーションが使用され、かつ、SA要求パケットにおける信頼されたソースLID情報に依拠する、請求項9に記載のシステム。
マシン読取可能なフォーマットのプログラム命令を含むコンピュータプログラムであって、前記プログラム命令は、コンピュータシステムによって実行されると、請求項1〜6のいずれか1項に記載の方法を前記コンピュータシステムに行なわせる、コンピュータプログラム。
【発明を実施するための形態】
【0007】
詳細な説明
本発明は、限定目的ではなく例示目的で、添付の図面の図において示される。当該図面においては、同様の参照符号が同様の要素を示す。なお、この開示における「ある」、「1つ」または「いくつか」の実施形態への参照は、必ずしも同じ実施形態に対してなされるものではなく、このような参照は、少なくとも1つの実施形態を意味する。
【0008】
以下の本発明の記載は、高性能ネットワークについての例として、インフィニバンド(IB)ネットワークを使用する。他のタイプの高性能ネットワークが限定なしで使用され得るということは、当業者には明らかであろう。
【0009】
ミドルウェアおよびアプリケーションの実行のための設計されたシステムまたはミドルウェアマシン環境といったネットワーク環境においてサブネットアドミニストレータ(SA:subnet administrator)アクセスをサポートし得るシステムおよび方法が本願明細書において記載される。
【0010】
インフィニバンド(IB)アーキテクチャ
IBアーキテクチャはシリアルポイントツーポイント技術である。IBネットワークまたはサブネットの各々は、スイッチおよびポイントツーポイントリンクを使用して相互接続されるホストのセットを含み得る。単一のサブネットは、1万より多いノードまでスケーラブルであり得、2つ以上のサブネットがIBルータを使用して相互接続され得る。サブネット内のホストおよびスイッチは、ローカル識別子(LID:local identifier)を使用してアドレス指定されており、たとえば単一のサブネットは49151個のユニキャストアドレスに限定され得る。
【0011】
IBサブネットは、サブセットにおけるスイッチ、ルータおよびホストチャネルアダプタ(HCA:host channel adapter)に存在するすべてのIBポートの構成を含むサブネットを初期化および起動することを担う少なくとも1つのサブネットマネージャ(SM)を使用し得る。SMの役割はさらに、ルーティングテーブル演算および展開を含む。ネットワークのルーティングの目的は、完全な接続性と、デッドロックのないことと、すべてのソースおよびデスティネーションペアの間のロードバランシングとを得ることである。ルーティングテーブルはネットワーク初期化時に計算され得、このプロセスは、ルーティングテーブルを更新して最適な性能を保証するために、トポロジが変更するたびに繰り返され得る。
【0012】
IBネットワークにおけるHCAは、キューペア(QP:queue pair)を使用して、互いに通信し得る。QPは、通信セットアップの間に作り出され、QPナンバー、HCAポート、デスティネーションLID、キューサイズおよびトランスポートサービスといった初期属性のセットが供給される。他方、通信においてHCAに関連付けられるQPは、通信が終わった際に破棄される。HCAは多くのQPを処理し得、各QPは、キューのペア、すなわち、送信キュー(SQ:send queue)および受信キュー(RQ:receive queue)からなる。1つのそのようなペアが、当該通信に参加している各エンドノードに存在する。送信キューは、リモートノードに転送されるワーク要求を保持する一方、受信キューは、リモートノードから受け取ったデータで何を行なうべきかについての情報を保持する。QPに加えて、各HCAは、送信キューおよび受信キューのセットに関連付けられる1つ以上の完了キュー(CQ:completion queue)を有し得る。CQは、送信および受信キューにポスティングしたワーク要求についての完了通知を保持する。
【0013】
IBアーキテクチャはフレキシブルなアーキテクチャである。IBサブネットを構成および維持することは、特別なインバンドサブネット管理パケット(SMP:subnet management packet)を介して行なわれ得る。SMの機能は、原理上、IBサブネットにおける任意のノードから実現され得る。IBサブネットにおける各エンドポートは、自身に方向付けられるSMPベースの要求パケットを処理することを担う関連付けられたサブネット管理エージェント(SMA)を有し得る。IBアーキテクチャにおいて、同じポートは、SMPベースの通信を使用するSMインスタンスまたは他のソフトウェアコンポーネントを表わし得る。したがって、SMPオペレーションの良好に定義されたサブセットのみがSMAによって処理され得る。
【0014】
SMPは、ファブリックにおいて、たとえばフロー制御されていない特別なバーチャルレーン(VL15)といった、専用のパケットバッファリソースを使用する(すなわち、SMPパケットはバッファオーバフローの場合にはドロップされ得る)。さらに、SMPは、SMがエンドポートのローカル識別子(LID)に基づきセットアップするルーティング、または、ルートがセンダーによって完全に定義されるとともにパケットに埋め込まれるダイレクトルートをSMPが使用し得るルーティングを使用し得る。ダイレクトルートを使用して、HCAおよびスイッチ上のポートナンバーの順序づけられたシーケンスで、パケットのパスはファブリックを通過する。
【0015】
SMは、すべてのスイッチおよび/またはすべてのHCAにおいて存在するSMAを使用して、変更についてネットワークを監視し得る。SMAは、トラップ(trap)および通知(notice)を使用して、新しい接続、切断およびポート状態変化といった変更をSMに通信する。トラップは、あるイベントに関してエンドノードを警告するように送信されるメッセージである。トラップは、イベントを説明する詳細を有する通知属性を含み得る。異なるトラップは、異なるイベントについて定義され得る。トラップの不必要な配布を低減するために、IBは、エンドノードが通知されることを望むトラップを明示的に利用(subscribe)するのに必要とされるイベント転送メカニズムを適用する。
【0016】
IBアーキテクチャは、どのIBエンドポートが他のIBエンドポートと通信することが許可されるべきであるかを定義する方法としてパーティションを提供する。パーティショニングは、IBファブリック上のすべての非SMPパケットについて定義される。デフォルトパーティション以外のパーティションの使用は随意である。パケットのパーティションは、15ビットのパーティションナンバーおよびシングルビットのメンバータイプ(完全(full)または限定(limited))からなる16ビットのP_Keyによって定義され得る。
【0017】
ホストポートまたはHCAポートのパーティションメンバーシップは、SMが、当該ホストについての現在のパーティションメンバーシップポリシーに対応するP_Key値を有するポートのP_Keyテーブルをセットアップする前提に基づき得る。ホストが完全には信頼されないかもしれない可能性を補償するために、IBアーキテクチャはさらに、スイッチポートがパーティションエンフォースメント(partition enforcement)を行なうよう随意にセットアップされ得ることを定義する。したがって、ホストポートに接続するスイッチポートのP_Keyテーブルが、ホストポートがメンバーであると考えられるのと同じパーティションを反映するようセットアップされ得る(すなわちイーサネット(登録商標)LANにおけるスイッチエンフォースされたVLAN制御と実質上同等)。
【0018】
IBアーキテクチャは、SMPを介してIBサブネットの完全なインバンド構成およびメンテナンスを可能にするので、SMP自体は如何なるパーティションメンバーシップ制限にも従わない。したがって、IBファブリック上の如何なるラフな(rough)または損なわれたノードも任意のファブリック構成(パーティションメンバーシップを含む)を定義することが可能である可能性を回避するために、他の保護メカニズムが必要である。
【0019】
IBアーキテクチャによって提供されるフレキシビリティは、IBファブリック/サブネットのアドミニストレータ、たとえば、HPCクラスタが、ファブリックにおいて1つ以上のスイッチ上で埋め込まれたSMインスタンスを使用するかどうか、および/または、SMファンクションを実行するためにIBファブリック上で1つ以上のホストをセットアップするかどうかを決定することを可能にする。さらに、SMによって使用されるSMPによって定義されるワイヤプロトコルはAPIを通じて利用可能であるので、異なるツールおよびコマンドが、発見、診断のためのそのようなSMPの使用に基づいて実現され得、如何なる現在のサブネットマネージャオペレーションからも独立して制御される。
【0020】
セキュリティの観点から、IBアーキテクチャのフレキシビリティは、IBファブリックに接続されるさまざまなホストへのルートアクセスと、IBファブリック構成へのアクセスを可能にするルートアクセスとの間に根本的な差が存在しないことを示す。これは、物理的に安全かつ安定しているシステムにとって良好である。しかしながら、これは、IBファブリック上の異なるホストが異なるシステムアドミニストレータによって制御されており、かつ、そのようなホストがIBファブリック上において互いから論理的に分離されるべきであるシステム構成には問題であり得る。
【0021】
サブネットアドミニストレータ(SA)およびサービス妨害(DoS)攻撃
サブネットアドミニストレータ(SA)は、サブネットに関する異なる情報を格納し得るマスターSMに関連付けられるサブネットデータベースである。さまざまなエンドノードがQPを確立するのを支援し得るSAとの通信は、たとえばQP1といった指定されたQPを通じて一般的なサービス管理データグラム(MAD:management datagram)を送信することに基づき得る。さらに、センダーおよびレシーバの両方は、QPを介して通信を確立するために、ソース/デスティネーションLID、サービスレベル(SL: service level)および最大伝送単位(MTU:maximum transmission unit)といった情報を必要とし得る。そのような情報は、SAによって提供されるパスレコードとして既知のデータ構造から抽出され得る。パスレコードを得るために、エンドノードは、たとえばSubnAdmGet/SubnAdmGetableオペレーションを用いて、SAに対してパスレコードクエリを実行し得る。その後、SAは、要求されたパスレコードをエンドノードに返し得る。
【0022】
たとえば、IBの仕様は、サブネットアドミニストレータ(SA)へのすべての要求が、ローカルIBポート情報におけるSM_LIDの値によって定義されたデスティネーションLID、すなわち、サブネットマネージャ(SM)によってセットアップされたデスティネーションLIDに送信されるということを定義している。さらに、それらの要求は、さらにSMによってローカルIBポート情報においてセットアップされ得るSM_SL値によって定義されるSL値を使用し得る。
【0023】
さらに、IB仕様は、SAとの通信を確立するために使用されるデスティネーションQPが一般的なサービスインターフェイスQP(すなわちQP1)であるということを定義している。さらに、これらの値のための代替物がセットアップされ得ない場合、1クライアントポートベースで、SAとの通信は、クライアントノードが初期SA要求をする前にこの情報を観察することを可能にする態様でデフォルトパーティション上で実行され得る。初期要求の後、SAは、クライアントにリダイレクト応答を送信し、SAにアクセスするために異なるアドレスを使用することをクライアントに指示し得る。アドレスのこの変更は、異なるデスティネーションポート、異なるSL、異なるパーティションおよび異なるデスティネーションQPナンバーを含み得る。
【0024】
したがって、初期要求がデフォルトパーティションを使用してQP1に送信される必要がある限り、たとえば、不正クライアントもしくはエラー状態のクライアントがSAポートのQP1をオーバーロードさせている場合、および/または、複数のソースからの大量のトラフィックの結果、SAポート自身がオーバーロードしている場合には、SAアクセスに対するサービス妨害(DoS)攻撃がサブネットにおいて起こり得る可能性がある。
【0025】
分散型サブネットアドミニストレータ(SA)スキーム
図1は、本発明の実施形態に従った、ネットワーク環境における分散型サブネットアドミニストレータ(SA)スキームをサポートする図を示す。
図1に示されるように、ネットワーク環境100におけるIBサブネット110は、複数のスイッチ(たとえばファットツリートポロジまたはホストポートからの接続がリーフスイッチを介する任意のトポロジにおけるリーフスイッチ111〜114)を含み得る。さらに、IBサブネット110は、サブネットマネージャ(SM)101およびサブネットアドミニストレータ(SA)102を含み得る。
【0026】
SA要求によりSAポートがオーバーロードすることを回避するために、当該システムは、システムにおけるSA102の全クライアントロードをSAプロキシ121〜124を介して異なるSAポートへ分散するよう分散型SAスキームを使用し得る。たとえば、リーフスイッチ111〜114に直接的に接続するクライアントノード131〜134についてのSAプロキシ121〜124は、それぞれのリーフスイッチ111〜114上の管理プロセッサであり得る。
【0027】
さらに、ローカルリーフスイッチ111〜114上のスイッチインプリメンテーションは、ローカルリーフスイッチ111〜114がSA102のプロキシポートに対する入力帯域幅の公平なシェアを取得し得ることのみを保証し得る。したがって、ローカルリーフスイッチ111〜114上のローカルSAプロキシ121〜124のみを使用するようSAクライアントノード131〜134を制限することによって、クライアントノードは、他のローカルクライアントによるフォワードプログレス(forward progress)を防止できない。
【0028】
さらに、SAプロキシインプリメンテーションは、異なるローカルSAクライアント131〜134からの要求の実際の処理が、異なるローカルクライアント131〜134の間での公平なインターリービングとともに行なわれ得るということを保証し得る。したがって、各良好に振る舞うクライアントノード131〜134は、許容可能な応答時間および妥当なフォワードプログレスを確保または達成し得る。
【0029】
本発明の実施形態に従うと、SAクライアントノード131〜134と異なり、SAプロキシ121〜124は、全体的なファブリックインプリメンテーションによって完全に制御されるとともに当該ファブリックについてオーナ権限を有する管理エンティティ(人間またはソフトウェア)によってのみ管理される信頼されたソフトウェアコンポーネントを表わし得る。したがって、全体のファブリック状態が、たとえばSM101といった中央エンティティによって維持される場合に、さまざまなSAプロキシインスタンス121〜124と中央エンティティとの間のプロトコルは、すべてのSAプロキシインスタンス121〜124について公平性およびフォワードプログレスを保証し得る。
【0030】
図2は、本発明の実施形態に従った、ネットワーク環境におけるSAアクセスに対するサービス妨害(DoS)攻撃を防止する図を示す。
図2に示されるように、ネットワーク環境200は、複数のスイッチ(たとえばリーフスイッチ211〜213)を含み得る。さらに、リーフスイッチ211〜213の各々は、SA202と通信し得るSAプロキシ221〜223をサポートするように構成され得る。
【0031】
さらに、リーフスイッチ211〜213の各々は、1つ以上のクライアントノードまたはホストノードに接続し得る。たとえば、クライアントノード231〜232はSAポート241を介してSAプロキシ221に接続され、クライアントノード233〜235はSAポート242を介してSAプロキシ222に接続され、クライアントノード236〜238はSAポート243を介してSAプロキシ223に接続される。
【0032】
さらに、SAアクセスのためのさまざまな専用パーティションが、ネットワーク環境200にセットアップされ得る。
図2に示されるように、SAアクセスについての専用のパーティション250は、ファブリックにおけるクライアントノードの物理的なサブセット(たとえばリーフスイッチ213に直接的に接続されるノード236〜238のセット)についてセットアップされ得る。さらに、SAアクセスについての専用のパーティション252は、論理的なサブセット(たとえば、特定のテナントまたはシステムに属するとともにそもそも既にパーティションを共有している場合のあるノード232〜234のセット)についてセットアップされ得る。したがって、SM201は、クライアントノード231〜238が、関連するパーティションに存在しないSAポートにアクセスするのを防止し得、これによりそのようなトラフィックが送られることも防止し得る。
【0033】
さらに、専用のQPナンバーは、QP1に初期要求を常に送信する必要性がないように、各クライアントノード231〜238について割り当てられ得る。その後、指定されたクライアントノードのみが、指定されたSAポートにて特定されたQPナンバーについて受け入れられ得る。たとえば、SAインプリメンテーションは、各クライアントノード231〜238が、各指定されたQPに明示的に関連付けられるパケット受信バッファの専用のセットのみを使用し得ることを保証し得る。したがって、システムは、すべての利用可能な受信バッファをクライアントノードがポートレベルにて消費し得ないことを保証し得、これにより、他のクライアントがフォワードプログレスを行なうのを防止し得る。
【0034】
本発明の実施形態に従うと、システムは、さまざまな専用パーティションを定義するSA_Partitionフィールドと、さまざまな専用のQPナンバーを定義するSA_QPフィールドとを含むようIBポート情報を拡張し得る。したがって、システムは、如何なるローカルクライアントノードもローカルSAポート上のQP1をオーバーロードさせるのを防止し得るとともに、すべてのSAポートがデフォルトパーティションのフルメンバーである場合でも、如何なるノードも非ローカルSAポートに要求を送ることを防止し得る。
【0035】
さらに、システムは、関連付けられるSMAインプリメンテーションが、IBポート情報としてSMによってセットアップされる情報の如何なる修正も許可しない場合でも、クライアントポートについて分散型SAスキームを促進し得る。たとえば、SA/SAプロキシにアクセスするためのパーティションナンバー(P_Key)を選択するための1つの規定は、ローカルポートP_Keyテーブルにおける第1のP_Key値を使用することであり得る。
【0036】
さらに、如何なる明示的な付加的なローカルIBポート情報も有することなく演繹的に既知となる専用のQPナンバーを使用するために、規定は、デスティネーションQPナンバーとしてローカルポートLID値を使用することであり得る。代替的には、システムは、SAアクセスについて使用されるデスティネーションQPナンバー内のビットフィールドにおける値として、ローカルLIDナンバーを使用し得る。いずれの場合においても、デスティネーションQPナンバーの残りは、あらかじめ定義された周知のナンバー(すなわち現在のQP1値といった)であるか、または、さまざまなIBクライアントノード231〜238上のIBソフトウェアスタックについての一般的な構成パラメータの一部として定義され得る構成パラメータであり得る。
【0037】
本発明の実施形態に従うと、システムは、各クライアントポートについて信頼されたHCAインプリメンテーションを提供することに基づき得る。たとえば、信頼されたHCAインプリメンテーションは、各SA要求におけるソースLIDが常に、対応するクライアントポートについてSMによって定義される正しい値であることを保証し得る。さらに、SAプロキシインプリメンテーションは、クライアントソースLID値が、たとえば特定ビットフィールドとしての、各クライアントポートデスティネーションQPナンバーの部分であることを保証し得る。代替的には、デスティネーションQPのコンテキストは、(たとえばIB仕様において定義されるような)被接続モードQPと同様の態様で、入力パケットがQPに届けられることを可能にするための特定のパケットソースLIDを定義するためにセットアップされ得る。したがって、SAポートハードウェアインプリメンテーションは、レガシーインプリメンテーションに対して有意な拡張を必要とすることなく、かつ、SAプロキシインスタンスにアクセスするために専用のパーティションを使用する各クライアントポートに依存することなく、QPレベルでの簡潔なアクセス制御を可能にし得る。
【0038】
図3は、本発明の実施形態に従った、ネットワーク環境において分散型サブネットアドミニストレータ(SA)スキームをサポートするための例示的なフローチャートを示す。
図3に示されるように、ステップ301では、システムは、サブネットにおけるサブネットアドミニストレータ(SA)を1つ以上のSAプロキシに関連付け得る。その後、ステップ302では、上記1つ以上のSAプロキシは、1つ以上のクライアントノードから1つ以上の要求を受け取り得る。さらに、ステップ303では、上記SAは、上記1つ以上のSAプロキシから転送される1つ以上の要求を処理し得る。
【0039】
サブネットアドミニストレータ(SA)アクセスのための信頼性のある接続(RC)
本発明の実施形態に従うと、システムは、信頼性のある接続(RC)に基づいてサブネットアドミニストレータ(SA)へのアクセスを提供し得る。(たとえばエンドツーエンド信頼性、完全なトランスポートオフロード、大きなメッセージおよびリモートダイレクトメモリアクセスをサポートするIBRCトランスポートサービス)。
【0040】
図4は、本発明の実施形態に従った、ネットワーク環境における信頼性のある接続(RC)に基づいて、サブネットアドミニストレータ(SA)アクセスをサポートする図を示す。
図4に示されるように、ネットワーク環境400は、SMノード403上のサブネットマネージャ(SM)401と、ホストチャネルアダプタ(HCA)404に接続されるクライアントノード402とを含み得る。
【0041】
本発明の実施形態に従うと、クライアントノード402についてのHCA404上のサブネット管理エージェント(SMA)406は、クライアントノード402がRCベースのSAアクセスをサポートすることを示す能力405をアドバタイズし得る。
【0042】
さらに、SMA406は、RCベースのSAアクセスについて利用可能なQPナンバー415のセットをアドバタイズすることにより、1つ以上のキューペア(QP)411を公開(expose)し得る。たとえば、SMA406は、RCベースのSAアクセスについて割り当てられたQPナンバーの良好に定義されたセット(たとえばQPナンバー2〜N)を有していることを保証し得るか、または、SMA406が、1つ以上のノード固有のSMA属性値として、RCベースのSAアクセスについて割り当てられたQPナンバー(たとえばn〜m(nおよびmの両方はクライアントノード402によって定義され得る))を報告し得ることを保証し得る。
【0043】
さらに、サブネットアドミニストレータ(SA)422に関連付けられるSM401は、IBサブネットにおける各クライアントノードのタイプについての情報と、さらにこれらのクライアントノードの異なる能力についての情報とを抽出することができる。SM401は、ディスカバリの間、能力405およびQPナンバー415の情報の両方を記録することができる。したがって、SM401は、その側でのRC接続をセットアップするために必要な情報を取得し得る。
【0044】
その後、SM401および/またはSA422は、SMノード403上において、たとえばポート413の後ろにローカルRCQP412を確立し得る。ここで、ポート413は、すべてのポートをセットアップするためにSM401が使用するSMLID属性を使用して定義され得る。
【0045】
図4に示されるように、SM401は、特定のクライアントノード402についての接続状態によりRCQP412を構成した後、クライアントノード402上でポート414をアクティベートし得る。たとえば、SM401は、ポート414をアクティブ状態にセットすることによって、クライアントノード402上のポート414を動作状態にし得る。
【0046】
さらに、SM401は、RCベースのSAアクセスが利用可能であることを、明示的にクライアントノード402に信号通知し得る。たとえば、クライアントノード402に代わってSM401および/またはSA422によって確立されるRCQP412についてのQPナンバーは、クライアントノードポート414に割り当てられるベースLIDのファンクションであり得る。言いかえれば、クライアントノード402は、RCQP412のためのQPナンバーを演繹的に知ることができる。
【0047】
代替的には、クライアントノード402と通信するために使用されるRCQP412についてのQPナンバーは、独立してかつ動的に割り当てられ得る。たとえば、RCQP412についてのQPナンバーは、SMLIDのような、SM401が他のプロパティと共にクライアントノード402上でSMA406についてセットアップし得るSMA属性であり得る。
【0048】
その後、クライアントノード402は、クライアントノード402側のポート414がSM401によってアクティベートされた後、SAアクセスについての接続情報によりローカルRCQP411を更新し得る。そのような接続情報は、1つ以上のSMA属性から抽出され得るか、または、演繹的に既知である情報に基づいて取得され得る。その後、クライアントノード402は、たとえばSA422とのさらなる接続管理プロトコル通信なしで、SA422に要求を送ることを開始し得る。
【0049】
本発明の実施形態に従うと、システムは、SAがRCQP上で入力メッセージを受け取る準備ができていることの指示として、アクティブ状態へのクライアントノード側上のポートのセッティングを使用する規定を利用し得る。
図4に示されるように、クライアントノード402は、クライアントノード402上のポート414がアクティベートされた後、SA422がRCQP412上で入力メッセージを受け取る準備ができている(すなわちRCQP412が既に動作状態へ構成されている)ということを認識し得る。
【0050】
さらに、SA422は、クライアントノード402から第1の入力メッセージを受け取った後、RC接続410がクライアントノード402によって確立されたとを仮定し得る。これに対応して、SA403は、さまざまなイベントの応答および通知を含み得る1つ以上のメッセージをクライアントノード402に送り得る。
【0051】
代替的には、クライアントノード402およびSA422は、QPナンバーがどのように確立されるかから独立して、通信管理メッセージ交換420に基づいて、必要なRC接続を確立し得る。
【0052】
さらに、メッセージバッファメモリを効率的に利用するために、システムは、複数の接続をサポートするよう上記のプロトコルを拡張し得る。本発明の実施形態に従うと、システムは、異なる接続について異なる最大のメッセージサイズを使用することを可能にする。たとえば、システムは、単純な小さなメッセージ要求/応答プロトコルをサポートするために1つのRC接続を使用し得るとともに、マルチパス応答のようなより大きなメッセージをサポートするために別のRC接続を使用し得る。
【0053】
図4に示されるように、システムは、1つ以上のRC接続を介して、SA422またはSAプロキシから転送される状態情報を含むために、クライアントノード402において1つ以上のあらかじめ定義されたメモリエリア421をセットアップし得る。たとえば、あらかじめ定義されたメモリエリア421は、ローカルクライアントノード402から、クライアントノード402が到達し得る他のすべてのクライアントノードへのすべての可能であるパスを含み得る。
【0054】
さらに、SA422は、たとえば多くのパスが使用される場合に、RDMA書込を使用して、あらかじめ定義されたメモリエリア421を更新し得る。たとえば、任意のその後の更新は、更新を必要とする正確なセクションをターゲットとする選択されたRDMA書込を使用して実現され得る。さらに、そのような選択された更新は、RC接続についての専用のイベントを介して実現されるイベントメッセージ、または、RDMA書込オペレーションに関連付けられる即値データとして実現されるイベントメッセージを伴い得る。
【0055】
本発明の実施形態に従うと、クライアントノード402は、たとえばSM401がSAアクセスについてのRC能力を明示的に信号通知しない場合に、SAアクセスをサポートするよう管理データグラム(MAD)ベースのプロトコルを使用し得る。たとえば、IBサブネットにおけるクライアントノードとSAとの間のインタラクションおよび通信プロトコルは、256バイトの信頼性の低いデータグラム(UD:unreliable datagram)であるMADに基づいて定義され得る。ここで、UDベースのMADは、すべてのIBエンドノードがサポートすることができる最小のパケットフォーマットおよびプロトコルを表わす。
【0056】
さらに、単一のMADパケットよりサイズが大きいメッセージの信頼性のある転送を提供するために、信頼性のあるマルチパケットプロトコル(RMPP:reliable multi-packet protocol)のような付加的なソフトウェアベースのプロトコルが、MADプロトコル上でサポートされ得る。他方、有効にされたHCAの後ろでSAファンクションが実現されるとともに有効にされたHCAからほとんどのクライアントが動作している場合に特に、信頼性のあるメッセージ転送についてソフトウェアベースのプロトコルを使用することは、信頼性のある接続についてHCA能力を利用するほど、効率的でない場合がある。
【0057】
図5は、本発明の実施形態に従った、ネットワーク環境においてサブネットアドミニストレータ(SA)と複数のクライアントノードとの間の通信をサポートする図を示す。
図5に示されるように、ネットワーク環境500は、サブネットマネージャ(SM)501と、複数のクライアントノード(たとえばクライアントノード511〜514)とを含み得る。さらに、SM501はサブネットアドミニストレータ(SA)502に関連付けられ得、クライアントノード511〜514は、各々がSMA531〜534をサポートし得るHCA521〜524に接続し得る。
【0058】
本発明の実施形態に従うと、システムは、多くのクライアントノードと通信するために、SA502が異なるマルチキャストメッセージを送信することを可能にする。たとえば、SA502は、関連するイベントに関してクライアントノード511〜514に通知するために、IBサブネットの異なるパーティション(たとえば1つ以上のSAアクセスパーティション)において1つ以上のマルチキャストメッセージを送信し得る。
【0059】
さらに、システムは、異なるシーケンスナンバーを有する関連するパーティションにおいてマルチキャストメッセージを構成し得る。したがって、関連するパーティションにおけるクライアントノード511〜514は、欠けているイベントを検出し得、その後、当該欠けているイベントメッセージについてSA503に要求し得る。
図5に示されるように、クライアントノード511〜514は、マルチキャストベースのイベントメッセージの受信を確認するよう、RCベースのメッセージ(すなわちユニキャストメッセージ)を使用し得る。
【0060】
図5に示されるように、SA502は、マルチキャストベースのイベントメッセージについての確認がクライアントノード514から受け取られていないと判定すると、SA502は、たとえばSA502からクライアントノード514まで専用のRC接続を介する代わりに、ユニキャストメッセージを使用して、クライアントノード514にイベントメッセージを再び送信し得る。
【0061】
図6は、本発明の実施形態に従った、ネットワーク環境において信頼性のある接続(RC)に基づいてサブネットアドミニストレータ(SA)アクセスをサポートするための例示的なフローチャートを示す。
図6に示されるように、ステップ601では、サブネットにおけるサブネットマネージャ(SM)は、サブネットアドミニストレータ(SA)とクライアントノードとの間の信頼性のある接続(RC)をセットアップするための情報を抽出し得る。その後、ステップ602では、SMは、SMノードに関連付けられるポートと上記クライアントノードに関連付けられるポートとの間にRC接続を確立するよう、SMノードに関連付けられるポートについて1つ以上の接続状態をセットアップし得る。さらに、ステップ603では、SMは、上記クライアントノードに関連付けられるポートをアクティベートし得る。
【0062】
図7は、本発明の実施形態に従った、ネットワーク環境においてサブネット管理をサポートするためのシステム700のブロック図である。システム700のブロックは、本発明の原理を実施するために、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せによって実現され得る。当業者であれば、
図7に記載されるブロックは、上述のように、本発明の原理を実現するために、組み合されてもよく、またはサブブロックへと分離されてもよいということが理解される。したがって、本願明細書における記載は、本願明細書において記載される機能ブロックの任意の可能な組合せ、分離、またはさらなる定義をサポートし得る。
【0063】
図7に示されるように、ネットワーク環境においてサブネット管理をサポートするためのシステム700は、関連付ユニット710、受取ユニット720、および、処理ユニット730を含む。関連付ユニット710は、サブネットにおけるサブネットアドミニストレータ(SA)を1つ以上のSAプロキシに関連付け得る。受取ユニット720は、上記1つ以上のSAプロキシを介して、1つ以上のクライアントノードから1つ以上の要求を受け取り得る。処理ユニット730は、前記SAを介して、上記1つ以上のSAプロキシから転送される上記1つ以上の要求を処理し得る。
【0064】
本発明の実施形態に従うと、サブネットは、ファットツリートポロジまたはホストポートからの接続がリーフスイッチを介するトポロジのうちの少なくとも1つとして実現されるインフィニバンド(IB)サブネットであり得る。
【0065】
本発明の実施形態に従うと、クライアントノードに直接的に接続するリーフスイッチ上の管理プロセッサはSAプロキシとして使用され得る。
【0066】
本発明の実施形態に従うと、SAアクセスについての専用のパーティションは、上記1つ以上のクライアントノードについてセットアップされ得る。1つ以上のクライアントノードは、ネットワークファブリックにおけるクライアントノードの物理的なサブセットと、ネットワークファブリックにおけるクライアントノードの論理的なサブセットとのうち少なくとも1つを含み得る。
【0067】
本発明の実施形態に従うと、専用のキューペア(QP)ナンバーが、各クライアントノードについて割り当てられ得る。
【0068】
本発明の実施形態に従うと、各クライアントノードは、各指定されたQPナンバーに明示的に関連付けられるパケット受信バッファの専用のセットのみを使用し得る。
【0069】
本発明の実施形態に従うと、異なるクライアントノードから受け取られる1つ以上の要求の実際の処理は、公平なインターリービングとともに行なわれ得る。
【0070】
本発明の実施形態に従うと、システム700はさらに、1つ以上のSAプロキシに公平性およびフォワードプログレスを保証する、ファブリック状態を管理する中央エンティティを含み得る。
【0071】
本発明の実施形態に従うと、1つ以上の規定は、特定のクライアントQPナンバーへのアクセスを、指定された特定のクライアントポートに制限するために、専用のパーティションナンバーと、1つ以上のクライアントポートについての専用のQPナンバーとを選択するよう使用され得、および/または、信頼されたホストチャネルアダプタインプリメンテーションは、1つ以上のクライアントノードに関連付けられるクライアントポートについて使用され得、SA要求パケットにおける信頼されたソースLID情報に依拠する。
【0072】
図8は、本発明の実施形態に従った、ネットワーク環境においてサブネット管理をサポートするためのサブネットマネージャ800のブロック図である。サブネットマネージャ800は、抽出ユニット810、セットアップユニット820、および、アクティベートユニット830を含み得る。抽出ユニット810は、サブネットアドミニストレータ(SA)とクライアントノードとの間に信頼性のある接続(RC)をセットアップするための情報を抽出し得る。セットアップユニット820は、SMノードに関連付けられるポートとクライアントノードに関連付けられるポートとの間にRC接続を確立するよう、SMノードに関連付けられるポートについて1つ以上の接続状態をセットアップし得る。アクティベートユニット830は、上記クライアントノードに関連付けられるポートをアクティベートし得る。
【0073】
本発明の実施形態に従うと、クライアントノードに関連付けられるサブネット管理エージェント(SMA)は、クライアントノードがRCベースのSAアクセスについてサポートを有することを示す能力をアドバタイズするよう動作し得る。
【0074】
本発明の実施形態に従うと、クライアントノードは、クライアントノードに関連付けられるポートについて、1つ以上のRCキューペア(QP)の第1のセットを確立するために動作し得る。1つ以上のRCQPの第1のセットは、RCベースのSAアクセスについて割り当てられる1つ以上のキューペア(QP)ナンバーに関連付けられ得る。
【0075】
本発明の実施形態に従うと、サブネットマネージャ800はさらに、確立ユニット(図示せず)を含み得る。確立ユニットは、SMノードに関連付けられるポートについて、1つ以上のRCキューペア(QP)の第2のセットを確立し得る。1つ以上のRCQPの第2のセットについてのQPナンバーは、クライアントノードに関連付けられるポートに割り当てられるベースのローカル識別子(LID)のファンクションと、クライアントノードに関連付けられるSMAについてSMによってセットアップされるSMA属性とのうちの1つに基づき得る。
【0076】
本発明の実施形態に従うと、RC接続を確立するために管理メッセージ交換が使用され得る。
【0077】
本発明の実施形態に従うと、クライアントノードは、RC接続を使用して、SAにメッセージを送信するよう動作し得る。
【0078】
本発明の実施形態に従うと、メッセージバッファメモリを効率的に利用するために複数のRC接続が使用され得る。
【0079】
本発明の実施形態に従うと、あらかじめ定義されたメモリエリアが、RC接続を介してSAおよびSAプロキシのうちの少なくとも1つから転送される状態情報を含むようクライアントノードにおいてセットアップされ得る。
【0080】
本発明の実施形態に従うと、サブネットマネージャ800はさらに、送信ユニット(図示せず)および割当ユニット(図示せず)を含み得る。送信ユニットは、1つ以上のイベントに関して少なくとも1つのパーティションにおける複数のクライアントノードに通知するために1つ以上のマルチキャストメッセージを送信し得る。割当ユニットは、シーケンスナンバーを各マルチキャストメッセージに割り当て得る。
【0081】
図9を参照して、本発明の実施形態に従ったシステム900が示される。
図9は、システム900によって実現される機能構成の図を示す。システム900は、抽出モジュール910と、メモリモジュール920と、セッティングモジュール930と、サブネットマネージャ(SM)ノードに関連付けられるポート940と、クライアントノードに関連付けられるポート950と、アクティベートモジュールとを含む。
【0082】
抽出ユニット910は、サブネットアドミニストレータ(SA)とクライアントノードとの間に信頼性のある接続(RC)をセットアップするための情報を抽出する。当該情報はメモリモジュール920に格納される。セッティングモジュール930は、SMノードに関連付けられるポート940とクライアントノードに関連付けられるポート950との間にRC接続を確立するよう、SMノードに関連付けられるポート940について1つ以上の接続状態をセットアップする。アクティベートモジュール960は、クライアントノードに関連付けられるポート950をアクティベートする。
【0083】
図10は、周知のハードウェア要素を含むコンピュータシステム1000の図を示す。すなわち、コンピュータシステム1000は、中央処理装置(CPU)1010、マウス1020、キーボード1030、ランダムアクセスメモリ(RAM)1040、ハードディスク1050、ディスクドライブ1060、通信インターフェイス(I/F)1070、およびモニタ1080を含む。コンピュータシステム1000は、システム900を構成するノードとして機能し得る。
【0084】
本発明の実施形態に従うと、抽出モジュール910と、セッティングモジュール930と、SMノードに関連付けられるポート940と、クライアントノード950に関連付けられるポート950と、アクティベートモジュール960とは、1つ以上のコンピュータシステム900によって提供される。抽出モジュール910と、セッティングモジュール930と、SMノードに関連付けられるポート940と、クライアントノード950に関連付けられるポート950と、アクティベートモジュール960とがCPU1010によって実現される。さらに別の局面において、抽出モジュール910と、セッティングモジュール930と、SMノードに関連付けられるポート940と、クライアントノード950に関連付けられるポート950と、アクティベートモジュール960とが実現されるように、1つより多いプロセッサが使用され得る。すなわち、抽出モジュール910と、メモリモジュール920と、セッティングモジュール930と、SMノードに関連付けられるポート940と、クライアントノード950に関連付けられるポート950と、アクティベートモジュール960とのいずれかは、互いから物理的にリモートであり得る。
【0085】
さらに別の局面において、システム900は、抽出モジュール910と、セッティングモジュール930と、SMノードに関連付けられるポート940と、クライアントノード950に関連付けられるポート950と、アクティベートモジュール960として機能する複数のハードワイヤード回路を使用することにより実現され得る。
【0086】
本発明は、1つ以上のプロセッサ、メモリ、および/または本開示の教示に従ってプログラムされたコンピュータ読取可能な記録媒体を含む1つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを用いて簡便に実施され得る。ソフトウェア技術の当業者には明らかであるように、適切なソフトウェアコーディングは、熟練したプログラマによって本開示の教示に基づき容易に用意され得る。
【0087】
いくつかの実施形態では、本発明は、本発明の処理のいずれかを実行するようコンピュータをプログラムするのに用いられ得る命令を格納した記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラムプロダクトを含む。当該記憶媒体は、フロッピーディスク(登録商標)、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリ素子、磁気または光学カード、ナノシステム(分子メモリICを含む)、または命令および/またはデータを格納するのに好適な任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
【0088】
本発明の上記の記載は、例示および説明目的で与えられている。網羅的であることまたは開示されたそのものの形態に本発明を限定することを意図したものではない。当業者にとっては、多くの修正例および変形例が明確であろう。上記修正例および変形例は、記載された機能の任意の関連する組合せを含む。上記の実施形態は、本発明の原理およびその実際的な適用を最もよく説明するために選択および記載されたものであり、これにより他の当業者が、特定の使用に好適なさまざまな修正例を考慮して、さまざまな実施形態について本発明を理解するのが可能になる。本発明の範囲は、添付の特許請求の範囲およびそれらの均等物によって定義されることが意図される。