(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-18
(45)【発行日】2024-12-26
(54)【発明の名称】高性能コンピューティング環境においてパーティションメンバーシップに関連して定義されるマルチキャストグループメンバーシップを提供するシステムおよび方法
(51)【国際特許分類】
H04L 45/42 20220101AFI20241219BHJP
H04L 41/0806 20220101ALI20241219BHJP
【FI】
H04L45/42
H04L41/0806
【外国語出願】
(21)【出願番号】P 2023217956
(22)【出願日】2023-12-25
(62)【分割の表示】P 2022077499の分割
【原出願日】2018-03-22
【審査請求日】2024-01-23
(32)【優先日】2017-03-24
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-08-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-03-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ヨンセン,ビョルン・ダグ
(72)【発明者】
【氏名】ボグダンスキー,バルトシュ
(72)【発明者】
【氏名】ホレン,リネ
【審査官】吉田 歩
(56)【参考文献】
【文献】特表2014-527330(JP,A)
【文献】特表2010-507338(JP,A)
【文献】米国特許出願公開第2005/0027801(US,A1)
【文献】特表2004-537918(JP,A)
【文献】V.Kasyap,RFC 4392, IP over InfiniBand (IPoIB) Architecture,2006年04月,<https://rfc-editor.org/rfc/pdfrfc/rfc4392.txt.pdf>, 検索日[2024.11.14]
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/42
H04L 41/0806
(57)【特許請求の範囲】
【請求項1】
高性能コンピューティング環境においてパーティションメンバーシップに対して定義されたマルチキャストグループメンバーシップを提供するための方法であって、
1つ以上のマイクロプロセッサを備えるコンピュータにおいて、1つ以上のスイッチとサブネットマネージャとを備えるサブネットを提供することと、
サブネットのエンドノードにおいて、マルチキャスト参加要求メッセージを生成することとを含み、前記マルチキャスト参加要求メッセージは、複数のサブネット管理属性を含み、前記エンドノードは、前記サブネット内で定義されるパーティションのメンバーであり、前記方法はさらに、
前記マルチキャスト参加要求メッセージの前記複数のサブネット管理属性のうちの1つを介して、前記パーティションのすべてのメンバーが同じマルチキャストグループに追加されるべきであることを示すことを含む、方法。
【請求項2】
前記マルチキャスト参加要求メッセージの前記複数のサブネット管理属性のうちの別のサブネット管理属性を介して、前記パーティションの識別子を示すことをさらに含む、請求項1に記載の方法。
【請求項3】
前記サブネットマネージャにおいて、前記マルチキャスト参加要求メッセージを受信することと、
前記マルチキャスト参加要求メッセージを受信すると、前記パーティションのすべてのメンバーを同じマルチキャストグループに追加することとをさらに含む、請求項2に記載の方法。
【請求項4】
スパニングツリーを生成することをさらに含み、前記スパニングツリーは、前記サブネットのうち、前記パーティションのメンバーであるすべてのエンドノードを含む、請求項3に記載の方法。
【請求項5】
生成された前記スパニングツリーに基づいて更新されるべき前記1つ以上のスイッチのセットを決定することをさらに含む、請求項4に記載の方法。
【請求項6】
生成された前記スパニングツリーを、決定された各スイッチに分散させることをさらに含む、請求項5に記載の方法。
【請求項7】
各決定されたスイッチにおいて、生成された前記スパニングツリーに基づいてマルチキャスト転送テーブルを更新することをさらに含む、請求項6に記載の方法。
【請求項8】
高性能コンピューティング環境においてパーティションメンバーシップに対して定義されたマルチキャストグループメンバーシップを提供するためのシステムであって、
1つ以上のマイクロプロセッサを含むコンピュータにおいて、
1つ以上のスイッチとサブネットマネージャとを含むサブネットを備え、
マルチキャスト参加要求メッセージが、サブネットのエンドノードにおいて生成され、前記マルチキャスト参加要求メッセージは、複数のサブネット管理属性を含み、前記エンドノードは、前記サブネット内で定義されるパーティションのメンバーであり、
前記マルチキャスト参加要求メッセージの前記複数のサブネット管理属性のうちの1つを介して、前記パーティションのすべてのメンバーが同じマルチキャストグループに追加されるべきであるという指示が提供される、システム。
【請求項9】
前記マルチキャスト参加要求メッセージの前記複数のサブネット管理属性のうちの別のサブネット管理属性を介して、前記パーティションの識別子の指示が提供される、請求項8に記載のシステム。
【請求項10】
前記マルチキャスト参加要求メッセージは、前記サブネットマネージャにおいて受信され、
前記マルチキャスト参加要求メッセージを受信すると、前記パーティションのすべてのメンバーが同じマルチキャストグループに追加される、請求項9に記載のシステム。
【請求項11】
スパニングツリーが生成され、前記スパニングツリーは、前記サブネットのうち、前記パーティションのメンバーであるすべてのエンドノードを含む、請求項10に記載のシステム。
【請求項12】
生成された前記スパニングツリーに基づいて更新されるべき前記1つ以上のスイッチのセットに関する決定が行われる、請求項11に記載のシステム。
【請求項13】
生成された前記スパニングツリーは、決定された各スイッチに分散される、請求項12に記載のシステム。
【請求項14】
マルチキャスト転送テーブルが、決定された各スイッチにおいて更新され、各更新は、生成された前記スパニングツリーに基づく、請求項13に記載のシステム。
【請求項15】
命令を有するコンピュータプログラムであって、前記命令は、読み出され、実行されると、コンピュータに請求項1~7のいずれか1項に記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
著作権表示
本特許文献の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、この特許文献または特許開示の何者かによる複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を留保する。
【0002】
優先権の主張および関連出願への相互参照
この出願は、2017年3月24日に提出された「SAアクセスおよびスタートアップフェイルオーバー時間を最小限にするインフィニバンドファブリック最適化のためのシステムならびに方法(SYSTEM AND METHOD FOR INFINIBAND FABRIC OPTIMIZATIONS TO MINIMIZE SA ACCESS AND STARTUP FAILOVER TIMES)」と題する米国仮特許出願第62/476,423号;2017年8月18日に提出された「高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性を提供するシステムおよび方法(SYSTEM AND METHOD TO PROVIDE HOMOGENEOUS FABRIC ATTRIBUTES TO REDUCE THE NEED FOR SA ACCESS IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する米
国仮特許出願第62/547,203号;2017年8月18日に提出された「高性能コンピューティング環境において同種のファブリック属性に基づいてARP応答およびピアツーピアネゴシエーションから導出されるパスレコードを提供するシステムならびに方法(SYSTEM AND METHOD TO PROVIDE PATH RECORDS DERIVED FROM ARP RESPONSES AND PEER-TO-PEER NEGOTIATION ON HOMOGENOUS FABRIC ATTRIBUTE IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する米国仮特許出願第62/547,206号;2017年8月18日に提出された「高性能コンピューティング環境においてパーティションメンバーシップに対して定義されたマルチキャストグループメンバーシップを提供するシステムおよび方法」と題する米国仮特許出願第62/547,213号;2017年8月18日に提出された「高性能コンピューティング環境において正規パーティションメンバーおよび制限付きパーティションメンバーの両方を容易にするためにマルチキャストグループごとにデュアルマルチキャストLID割り当てを提供するシステムならびに方法(SYSTEM AND METHOD TO PROVIDE DUAL MULTICAST LID ALLOCATION PER MULTICAST GROUP TO FACILITATE
BOTH FULL AND LIMITED PARTITION MEMBERS IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する米国仮特許出願第62/547,218号;2017年8月18日に提出された「高性能コンピューティング環境において関連するMGIDについて受信マルチキャストメッセージ上でマルチキャストグループMLIDダイナミックディスカバリを提供するシステムおよび方法(SYSTEM AND METHOD TO PROVIDE MULTICAST GROUP MLID DYNAMIC DISCOVERY ON RECEIVED MULTICAST MESSAGES FOR RELEVANT MGID IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する米国仮特許出願第第62/547,223号;2017年8月18日に提出された「高性能コンピューティング環境において追加のSMA属性としてパーティションごとにデフォルトのマルチキャストLID値を提供するシステムおよび方法(SYSTEM AND METHOD TO PROVIDE DEFAULT MULTICAST LID VALUES PER PARTITION AS ADDITIONAL SMA ATTRIBUTES IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する米国仮特許出願第62/547,225号;2017年8月18日に提出された「高性能コンピューティング環境においてSMポリシー入力として定義されるパーティションごとのデフォルトのマルチキャストLIDに対する明示的なマルチキャストLID割り当てを提供するシステムおよび方法(SYSTEM AND METHOD TO PROVIDE EXPLICIT MULTICAST LID ASSIGNMENT FOR PER PARTITION DEFAULT MULTICAST LIDS DEFINED AS SM PO
LICY INPUT IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する米国仮特許出願第62/547,255号;2017年8月18日に提出された「高性能コンピューティング環境において拡張ポート情報としてアナウンスメントおよびディスカバリのためにデフォルトのマルチキャストグループ(MCG)を提供するシステムおよび方法(SYSTEM AND METHOD TO PROVIDE DEFAULT MULTICAST GROUP (MCG) FOR ANNOUNCEMENTS AND DISCOVERY AS EXTENDED PORT INFORMATION IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」
と題する米国仮特許出願第62/547,258号;2017年8月18日に提出された「高性能コンピューティング環境におけるアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトのマルチキャストプロキシを提供するシステムならびに方法(SYSTEM AND METHOD TO PROVIDE DEFAULT MULTICAST PROXY FOR SCALABLE FORWARDING OF ANNOUNCEMENTS AND INFORMATION REQUEST INTERCEPTING IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する米国仮特許出願第62/547,259号;2017年8月18日に提出された「高性能コンピューティング環境において複数のパーティションにおいてマルチキャストベースのアナウンスメントを受信するためにキューペア1を用いるシステムおよび方法(SYSTEM AND METHOD TO USE QUEUE PAIR 1 FOR RECEIVING MULTICAST BASED ANNOUNCMENTS IN MULTIPLE PARTITIONS IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する米国仮特許出願第62/547,260号;201
7年8月18日に提出された「高性能コンピューティング環境においてGUIDからLIDへのキャッシュコンテンツのための基礎としてすべての着信マルチキャストパケットを用いるシステムおよび方法(SYSTEM AND METHOD TO USE ALL INCOMING MULTICAST PACKETS AS A BASIS FOR GUID TO LID CACHE CONTENTS IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する米国仮特許出願第62/547,261号;および2017年8月
18日に提出された「高性能コンピューティング環境におけるデフォルトのIBマルチキャストグループを介する組み合わされたIBおよびIPアドレスならびに名前解決スキームを提供するシステムならびに方法(SYSTEM AND METHOD TO PROVIDE COMBINED IB AND IP ADDRESS AND NAME RESOLUTION SCHEMES VIA DEFAULT IB MULTICAST GROUPS IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題する仮特許出願第62/547,264号
の優先権の利益を主張し、これらの各出願をここに引用により援用する。
【0003】
この出願は、以下の特許出願に関連しており、それらの各々はその全体がここに引用により援用される。本願と同時に提出された「高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性を提供するシステムおよび方法(SYSTEM AND METHOD TO PROVIDE HOMOGENEOUS FABRIC ATTRIBUTES TO REDUCE THE NEED FOR SA ACCESS IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題される米国特
許出願、出願番号 / 、(弁護士整理番号ORACL‐05828US1);本願と同時に提出された「高性能コンピューティング環境において同種のファブリック属性に基づいてARP応答およびピアツーピアネゴシエーションから導出されるパスレコードを提供するシステムならびに方法(SYSTEM AND METHOD TO PROVIDE PATH RECORDS DERIVED FROM ARP RESPONSES AND PEER-TO-PEER NEGOTIATION ON HOMOGENOUS FABRIC ATTRIBUTE IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題される米国特許出願、出願番号 / 、(弁護士整理番号ORACL‐05829US1);本願と同時に提出された「高性能コンピューティング環境において正規パーティションメンバーおよび制限付きパーティションメンバーの両方を容易にするためにマルチキャストグループごとにデュアルマルチキャストLID割り当てを提供するシステムおよび方法(SYSTEM AND
METHOD TO PROVIDE DUAL MULTICAST LID ALLOCATION PER MULTICAST GROUP TO FACILITATE BOTH FULL AND LIMITED PARTITION MEMBERS IN A HIGH PERFORMANCE COMPUTING ENVIRONMENT)」と題される米国特許出願、出願番号 / 、(代理整理番号ORACL‐05831US1);本願と同時に提出された「高性能コンピューティング環境において関連するマルチキャストGIDの受信マルチキャストメッセージに基づいてマルチキャストグループマルチキャストLIDダイナミックディスカバリを提供するシステムお
よび方法(SYSTEM AND METHOD TO PROVIDE MULTICAST GROUP MULTICAST LID DYNAMIC DISCOVERY BASED ON RECEIVED MULTICAST MESSAGES FOR RELEVANT MULTICAST GID IN A HIGH
PERFORMANCE COMPUTING ENVIRONMENT)」と題される米国特許出願、出願番号 /
、(弁護士整理番号ORACL‐05832US1)。
【背景技術】
【0004】
背景
導入されるクラウドコンピューティングアーキテクチャがより大規模になるのに応じて、従来のネットワークおよびストレージに関する性能および管理の障害が深刻な問題になってきている。クラウドコンピューティングファブリックのための基礎としてインフィニバンド(InfiniBand:IB)技術などの高性能な無損失相互接続を用いることへの関心がますます高まってきている。これは、本発明の実施形態が対応するように意図された一般領域である。
【発明の概要】
【0005】
概要:
高性能コンピューティング環境でパーティションメンバーシップに関連するマルチキャストグループ(MCG)メンバーシップを提供するシステムおよび方法。高性能コンピューティング環境でパーティションメンバーシップに関連して定義されるマルチキャストグループメンバーシップを提供する例示的な方法は、サブネットマネージャが、マルチキャストグループを作成する要求を受信することができ、要求はインジケータを含み、インジケータは、サブネットにおいて定義されるパーティションの各メンバーがマルチキャストグループに関連付けられることを示す。この方法は、サブネットマネージャが、サブネットにおいて定義されるパーティションのメンバーである、ある数の追加のエンドポートを決定することができる。この方法は、サブネットマネージャが、パーティションのメンバーである、ある数の追加のエンドポートを、マルチキャストグループを定義する識別子に関連付けることができる。この方法は、サブネットマネージャが、マルチキャストグループを定義する識別子を含むマルチキャストパケットを、マルチキャストグループを定義する識別子に関連付けられた各エンドポートに配信するためのルートを定義することができる。
【図面の簡単な説明】
【0006】
【
図1】一実施形態に従うインフィニバンド環境の一例を示す図である。
【
図2】一実施形態に従う分割されたクラスタ環境の一例を示す図である。
【
図3】一実施形態に従うネットワーク環境におけるツリートポロジーの一例を示す図である。
【
図4】一実施形態に従う例示的な共有ポートアーキテクチャを示す図である。
【
図5】一実施形態に従う例示的なvSwitchアーキテクチャを示す図である。
【
図6】一実施形態に従う例示的なvPortアーキテクチャを示す図である。
【
図7】一実施形態に従うLIDが予めポピュレートされている例示的なvSwitchアーキテクチャを示す図である。
【
図8】一実施形態に従う動的LID割当てがなされた例示的なvSwitchアーキテクチャを示す図である。
【
図9】一実施形態に従う、vSwitchに動的LID割当てがなされかつLIDが予めポピュレートされている、例示的なvSwitchアーキテクチャを示す図である。
【
図10】一実施形態に従う例示的なマルチサブネットインフィニバンドファブリックを示す図である。
【
図11】一実施形態に従う、高性能コンピューティング環境における2つのサブネット間の相互接続を示す図である。
【
図12】一実施形態に従う、高性能コンピューティング環境におけるデュアルポート仮想ルータ構成を介した2つのサブネット間の相互接続を示す図である。
【
図13】一実施形態に従う、高性能コンピューティング環境においてデュアルポート仮想ルータをサポートする方法のフローチャートを示す図である。
【
図14】実施形態による、マルチキャスト通信をサポートする例示的なサブネットA00を示す。
【
図15】一実施形態による、マルチキャストグループを管理するためにSM/SAによって用いられる例示的なSAデータストアを示す。
【
図16】実施形態による、サブネット内においてスパニングツリーアルゴリズムを介して判断され得る例示的なルートを示す。
【
図17】一実施形態によるスイッチの詳細図を示す。
【
図18】一実施形態による、マルチキャストグループのメンバーへのマルチキャストパケット配信を提供する方法のフローチャートを示す。
【
図19】一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートするシステムを示す。
【
図20】一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートするシステムを示す。
【
図21】一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートするシステムを示す。
【
図22】一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートするシステムを示す。
【
図23】一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートする方法のフローチャートを示す。
【
図24】一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートする方法のフローチャートである。
【
図25】一実施形態による、高性能コンピューティング環境における同種のファブリック属性に関するARP応答およびピアツーピアネゴシエーションから導出されたパスレコードを提供するためのシステムを示す。
【
図26】一実施形態による、ファブリックの最小値/最大値との相関を含む、入来ARP要求および応答からGIDおよびLIDを判断する方法のフローチャートである。
【
図27】一実施形態による、ファブリックの最小値/最大値との相関を含む、新たなCMタイプのメッセージ交換に基づいてパス情報を構築する方法のフローチャートである。
【
図28】一実施形態による、ファブリックの最小値/最大値との相関を含む、新たなCMタイプのメッセージ交換に基づいてパス情報を構築する方法のフローチャートである。
【
図29】一実施形態による、マルチキャストグループ(MCG)の作成および参加のフローチャートを示す。
【
図30】一実施形態による、エンドポートによるMLIDに対する要求(例えば、MCGへの参加の要求)に応答するためのフローチャートを示す。
【
図31】一実施形態による、サブネット内において制限付きパーティションメンバーMLIDに対してスパニングツリーアルゴリズムを介して判断され得る例示的なマルチキャストパケットルートを示す。
【
図32】一実施形態による、デュアルMLIDがMCGに対して割り当てられた状態で用いるためにエンドポートを構成するためのフローチャートを示す。
【
図33】一実施形態による、高性能コンピューティング環境において正規パーティションメンバーおよび制限されたパーティションメンバーの両方を容易にするようマルチキャストグループごとにデュアルマルチキャストローカル識別子(MLID)を提供するためのフローチャートを示す。
【
図34】一実施形態による、高性能コンピューティング環境においてパーティションメンバーシップに関して定義されたマルチキャストグループメンバーシップを提供するためのフローチャートを示す。
【
図35】一実施形態による、高性能コンピューティング環境においてパーティションメンバーシップに関して定義されたマルチキャストグループメンバーシップを提供する方法のフローチャートを示す。
【
図36】一実施形態による、高性能コンピューティング環境においてパーティションメンバーシップに関して定義されたマルチキャストグループメンバーシップを提供する方法のフローチャートを示す。
【
図37】一実施形態による、エンドポートのパーティションテーブルに従ってエンドポートのデフォルトのMLIDテーブルを更新する方法のフローチャートである。
【
図38】一実施形態による、IBクライアントによって、サポートするエンドポートのデフォルトのMLIDテーブルからデフォルトMLID値を判断するための方法のフローチャートである。
【
図39】一実施形態による、高性能コンピューティング環境において追加のサブネット管理エージェント(SMA)属性としてパーティションごとにデフォルトのマルチキャストローカル識別子(MLID)値を提供する方法のフローチャートを示す。
【
図40】一実施形態による、高性能コンピューティング環境において、関連するMGID(マルチキャストグローバル識別子)について受信マルチキャストメッセージ上でマルチキャストグループマルチキャストローカル識別子(MLID)ダイナミックディスカバリを提供する方法のフローチャートを示す。
【
図41】一実施形態による、高性能コンピューティング環境において、関連するMGID(マルチキャストグローバル識別子)について受信マルチキャストメッセージ上でマルチキャストグループマルチキャストローカル識別子(MLID)ダイナミックディスカバリを提供する方法のフローチャートである。
【
図42】一実施形態による、高性能コンピューティング環境において、関連するMGID(マルチキャストグローバル識別子)について受信マルチキャストメッセージ上でマルチキャストグループマルチキャストローカル識別子(MLID)ダイナミックディスカバリを提供する方法のフローチャートである。
【
図43】一実施形態による、パーティション固有のMLIDと、発信マルチキャストパケット用の専用MCG MLIDとの両方のレコードを維持するためのフローチャートを示す。
【
図44】一実施形態による、高性能コンピューティング環境においてマルチキャストローカル識別子のエンドノードダイナミックディスカバリを提供する方法のフローチャートを示す。
【
図45】一実施形態による、SMポリシー入力として定義されるパーティション固有のデフォルトMLIDに対する明示的なマルチキャストローカル識別子(MLID)割り当てを提供する方法のフローチャートを示す。
【
図46】一実施形態による、SMポリシー入力として定義されるパーティションごとのデフォルトMLIDに対する明示的なマルチキャストローカル識別子(MLID)割り当てを提供する方法のフローチャートを示す。
【
図47】一実施形態による、サブネットマージ操作前において、SMポリシー入力として定義されるパーティション固有のデフォルトMLIDに対する明示的なマルチキャストローカル識別子(MLID)割り当てを各々が有する2つの独立したファットツリーベースのサブネットを示す。
【
図48】サブネットマージ操作後において、SMポリシー入力として定義されるパーティション固有のデフォルトMLIDに対する明示的なマルチキャストローカル識別子(MLID)割り当てを有する単一のファットツリーベースのサブネットを示す。
【
図49】一実施形態による、高性能コンピューティング環境において拡張ポート情報としてアナウンスメントおよびディスカバリのためにデフォルトマルチキャストグループ(MCG)を提供する方法のフローチャートを示す。
【
図50】一実施形態による、高性能コンピューティング環境において拡張ポート情報としてアナウンスメントおよびディスカバリのためにデフォルトマルチキャストグループ(MCG)を提供する方法のフローチャートを示す。
【
図51】一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供する方法のフローチャートを示す。
【
図52】一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供するシステムを示す。
【
図53】一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供するシステムを示す。
【
図54】一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供するシステムを示す。
【
図55】一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供する方法のフローチャートを示す。
【
図56】一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供する方法のフローチャートを示す。
【
図57】一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供する方法のフローチャートを示す。
【
図58】一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いる方法のフローチャートを示す。
【
図59】一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いるシステムを示す。
【
図60】一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いるシステムを示す。
【
図61】一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いるシステムを示す。
【
図62】一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いるシステムを示す。
【
図63】一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いるシステムを示す。
【
図64】一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いる方法のフローチャートを示す。
【
図65】一実施形態による、高性能コンピューティング環境においてグローバル一意識別子(GUID)からローカル識別子(LID)へのキャッシュコンテンツの基礎としてすべての着信マルチキャスト(MC)パケットを用いる方法のフローチャートを示す。
【
図66】一実施形態による、高性能コンピューティング環境においてグローバル一意識別子(GUID)からローカル識別子(LID)へのキャッシュコンテンツの基礎としてすべての着信マルチキャスト(MC)パケットを用いるシステムを示す。
【
図67】一実施形態による、高性能コンピューティング環境においてグローバル一意識別子(GUID)からローカル識別子(LID)へのキャッシュコンテンツの基礎としてすべての着信マルチキャスト(MC)パケットを用いるシステムを示す。
【
図68】一実施形態による、高性能コンピューティング環境においてグローバル一意識別子(GUID)からローカル識別子(LID)へのキャッシュコンテンツの基礎としてすべての着信マルチキャスト(MC)パケットを用いる方法のフローチャートを示す。
【
図69】一実施形態による、高性能コンピューティング環境において、デフォルトのIBマルチキャストグループを介して、組み合わされたIBおよびIPアドレスならびに名前解決スキームを提供する方法のフローチャートを示す。
【
図70】一実施形態による、高性能コンピューティング環境において、デフォルトのIBマルチキャストグループを介して、組み合わされたIBおよびIPアドレスならびに名前解決スキームを提供するシステムを示す。より具体的には、この図は、従来のGUIDからLIDへのキャッシュを示す。
【
図71】一実施形態による、高性能コンピューティング環境において、デフォルトのIBマルチキャストグループを介して、組み合わされたIBおよびIPアドレスならびに名前解決スキームを提供する方法のフローチャートを示す。
【
図72】一実施形態による、高性能コンピューティング環境において、デフォルトのIBマルチキャストグループを介して、組み合わされたIBおよびIPアドレスならびに名前解決スキームを提供する方法のフローチャートを示す。
【発明を実施するための形態】
【0007】
詳細な説明:
本発明は、同様の参照番号が同様の要素を指している添付図面の図において、限定のためではなく例示のために説明されている。なお、この開示における「ある」または「1つの」または「いくつかの」実施形態への参照は必ずしも同じ実施形態に対するものではなく、そのような参照は少なくとも1つを意味する。特定の実現例が説明されるが、これらの特定の実現例が例示的な目的のためにのみ提供されることが理解される。当業者であれば、他の構成要素および構成が、この発明の範囲および精神から逸脱することなく使用され得ることを認識するであろう。
【0008】
図面および詳細な説明全体にわたって同様の要素を示すために、共通の参照番号が使用され得る。したがって、ある図で使用される参照番号は、要素が別のところで説明される場合、そのような図に特有の詳細な説明において参照される場合もあり、または参照されない場合もある。
【0009】
本明細書では、高性能コンピューティング環境においてパーティションメンバーシップに関して定義されたマルチキャストグループメンバーシップを提供するシステムおよび方法について説明する。
【0010】
この発明の以下の説明は、高性能ネットワークの一例として、インフィニバンドTM(IB)ネットワークを使用する。以下の説明全体にわたり、インフィニバンドTMの仕様(インフィニバンド仕様、IB仕様、またはレガシーIB仕様など、さまざまな呼ばれ方がある)を引用することがある。このような引用は、2015年3月に発表され、http://www.inifinibandta.orgから入手可能な、本明細書にその全体を引用により援用するInfiniBand Trade Association Architecture Specification, Volume 1, Version 1.3を引用
することであると理解される。他のタイプの高性能ネットワークが何ら限定されることなく使用され得ることが、当業者には明らかであるだろう。以下の説明ではまた、ファブリックトポロジーについての一例として、ファットツリートポロジーを使用する。他のタイプのファブリックトポロジーが何ら限定されることなく使用され得ることが当業者には明らかであるだろう。
【0011】
今の時代(たとえばエクサスケール(exascale)時代)のクラウドの要求を満たすためには、仮想マシンが、リモートダイレクトメモリアクセス(Remote Direct Memory Access:RDMA)等の低オーバーヘッドのネットワーク通信パラダイムを利用できることが
望ましい。RDMAはOSスタックをバイパスしハードウェアと直接通信するため、シングルルートI/O仮想化(SR-IOV)ネットワークアダプタのようなパス・スルー技術を使用することができる。一実施形態に従うと、仮想スイッチ(vSwitch)SR-IOVアーキテクチャを、高性能無損失相互接続ネットワークに適用することができる。ネットワーク再構成時間はライブマイグレーションを現実的な選択肢にするために重要なので、ネットワークアーキテクチャに加えて、スケーラブルでありトポロジーに依存しない動的再構成機構を提供することができる。
【0012】
一実施形態に従い、さらに、vSwitchを使用する仮想化環境に対するルーティングストラテジーを提供することができ、ネットワークトポロジー(たとえばファットツリートポロジー)に対する効率的なルーティングアルゴリズムを提供することができる。動的再構成機構をさらに調整することにより、ファットツリーに課されるオーバーヘッドを最小にすることができる。
【0013】
本発明の一実施形態に従うと、仮想化は、クラウドコンピューティングにおける効率的なリソースの利用および柔軟なリソースの割当てにとって有益になり得る。ライブマイグレーションは、アプリケーションにとってトランスペアレントになるように物理サーバ間で仮想マシン(VM)を移動させることでリソースの利用を最適化することを可能にする。このように、仮想化は、ライブマイグレーションにより、コンソリデーション、リソースのオンデマンドプロビジョニング、および柔軟性を可能にする。
【0014】
インフィニバンドTM
インフィニバンドTM(IB)は、インフィニバンドTM・トレード・アソシエーション(InfiniBandTM Trade Association)によって開発されたオープン標準無損失ネットワーク技術である。この技術は、特に高性能コンピューティング(high-performance computing:HPC)アプリケーションおよびデータセンタを対象とする、高スループットおよび少ない待ち時間の通信を提供するシリアルポイントツーポイント全二重相互接続(serial point-to-point full-duplex interconnect)に基づいている。
【0015】
インフィニバンドTM・アーキテクチャ(InfiniBand Architecture:IBA)は、2
層トポロジー分割をサポートする。低層では、IBネットワークはサブネットと呼ばれ、1つのサブネットは、スイッチおよびポイントツーポイントリンクを使用して相互接続される一組のホストを含み得る。より高いレベルでは、1つのIBファブリックは、ルータを使用して相互接続され得る1つ以上のサブネットを構成する。
【0016】
1つのサブネット内で、ホストは、スイッチおよびポイントツーポイントリンクを使用して接続され得る。加えて、サブネットにおける指定されたデバイス上に存在する、1つのマスター管理エンティティ、すなわちサブネットマネージャ(subnet manager:SM)があり得る。サブネットマネージャは、IBサブネットを構成し、起動し、維持する役割を果たす。加えて、サブネットマネージャ(SM)は、IBファブリックにおいてルーティングテーブル計算を行なう役割を果たし得る。ここで、たとえば、IBネットワークの
ルーティングは、ローカルサブネットにおけるすべての送信元と宛先とのペア間の適正な負荷バランシングを目標とする。
【0017】
SMは、サブネット管理(SA)をローカルサブネットに提供する役割を果たす。SAは、ローカルサブネットに関するいくつかのタイプの情報へのアクセスおよびその保存を提供する。SAを提供するために、サブネットマネージャは通常、サブネット関連情報を記憶するためのクエリ可能なデータベースを保持する。一般にSAによって記憶/提供される情報の例には、エンドノード間のパス、イベントの通知、サービス属性など、エンドノードがサブネットでの動作に必要な情報;パーティショニングデータ、M_Keysなどの非アルゴリズム情報;トポロジーデータ、スイッチ転送テーブルなど、他の管理エンティティに役立つオプションの情報が含まれる。
【0018】
SAが提供するデータは、管理データグラム(MAD)の使用を介してアクセス、照会、または報告される。MADは標準化された管理パケットであり、他の用途の中でも特に、SM/SAとIBデバイスとの間、およびIBデバイス、それら自体間の管理操作を可能にする。
【0019】
サブネットマネージャは、サブネット管理インターフェイスを介して、サブネット管理パケット(MADのサブセットであるSMP)と呼ばれる制御パケットをサブネット管理エージェント(SMA)と交換する。サブネット管理エージェントは、すべてのIBサブネットデバイスに常駐する。SMPを用いることにより、サブネットマネージャはファブリックを発見し、エンドノードおよびスイッチを構成し、SMAから通知を受信することができる。
【0020】
サブネット管理インターフェイスを通して、サブネットマネージャは、サブネット管理パケット(subnet management packet:SMP)と呼ばれる制御パケットを、サブネット管理エージェント(subnet management agent:SMA)と交換する。サブネット管理エ
ージェントは、すべてのIBサブネットデバイス上に存在する。SMPを使用することにより、サブネットマネージャは、ファブリックを発見し、エンドノードおよびスイッチを構成し、SMAから通知を受信することができる。
【0021】
一実施形態に従うと、IBネットワークにおけるサブネット内のルーティングは、スイッチに格納されたリニアフォワーディングテーブル(linear forwarding table)(LF
T)に基づき得る。LFTは、使用中のルーティングメカニズムに従って、SMによって計算される。サブネットでは、エンドノード上のホストチャネルアダプタ(Host Channel
Adapter:HCA)ポートおよびスイッチが、ローカル識別子(LID)を使用してアドレス指定される。LFTにおける各エントリは、宛先LID(destination LID:DLI
D)と出力ポートとからなる。テーブルにおけるLIDごとに1つのエントリのみがサポートされる。パケットがあるスイッチに到着すると、その出力ポートは、そのスイッチのフォワーディングテーブルにおいてDLIDを検索することによって判断される。所与の送信元-宛先ペア(LIDペア)間のネットワークにおいてパケットは同じ経路を通るため、ルーティングは決定論的である。
【0022】
一般に、マスタサブネットマネージャを除く他のすべてのサブネットマネージャは、耐故障性のために待機モードで作動する。しかしながら、マスタサブネットマネージャが故障した状況では、待機中のサブネットマネージャによって、新しいマスタサブネットマネージャが取り決められる。マスタサブネットマネージャはまた、サブネットの周期的なスイープ(sweep)を行なってあらゆるトポロジー変化を検出し、それに応じてネットワー
クを再構成する。
【0023】
IBサブネットでは、各エンドノードは1つ以上のホストチャネルアダプタ(HCA)を含むことができる。HCAは、データパケットの生成および送信、ならびにデータパケットの受信および処理を担う。各ホストチャネルアダプタ(HCA)は、1つ以上のポートを有することができる。HCAのポートは、HCA、およびHCAを含むエンドノードをネットワークファブリックに接続するために用いられる。たとえば、HCAのポートは、ケーブル(ツイストペア銅線、光ファイバーケーブルなど)などの物理的媒体を介してサブネットスイッチに接続することができる。
【0024】
ネットワークファブリックに接続されたHCAポートには、ローカルサブネットマネージャ(つまり、HCAが接続されるサブネットのサブネットマネージャ)によってローカル識別子(LID)が割り当てられる。LIDは、HCAポートのアドレス指定に用いられる。他のサブネットノードにも、ローカルサブネットマネージャによってLIDを割り当てることができる。たとえば、サブネットホストおよびスイッチに、サブネットマネージャによってローカル識別子(LID)を割り当てることができ、サブネットホストおよびスイッチは、それらの割り当てられたLIDによってアドレス指定することができる。LIDはサブネット内で一意であり、単一のサブネットは49151のユニキャストLIDに制限され得る。
【0025】
一実施形態によれば、IBネットワークにおけるサブネット内ルーティングは、ローカルサブネットスイッチに格納された線形転送テーブル(LFT)に基づくことができる。LFTは、使用中のルーティングメカニズムに従ってSMによって計算される。各データパケットには、パケットを作成したポートを識別するソースLID(SLID)と、パケットの配信先ポートを識別する宛先LID(DLID)とが含まれる。さらに、線形転送テーブル(LFT)の各エントリは、DLIDと出力ポートとで構成される。テーブル内のLIDごとに1つのエントリのみがサポートされる。パケットがスイッチに到着すると、その出力ポートはスイッチの転送テーブルにおいてパケットのDLIDを探索することにより判断される。次に、パケットは、LFTにおけるパケットのDLIDに対応するスイッチポートを介して外部に転送される。ルーティングは、パケットがネットワーク内で所与の送信元/宛先ペア(LIDペア)間において同じパスを取るため、決定論的である。
【0026】
さらに、サブネット内のホストおよびスイッチは、ローカル識別子(LID)を用いてアドレス指定され得るとともに、単一のサブネットは49151個のユニキャストLIDに制限され得る。サブネット内で有効なローカルアドレスであるLIDの他に、各IBデバイスは、64ビットのグローバル一意識別子(global unique identifier:GUID)を有し得る。GUIDは、IBレイヤー3(L3)アドレスであるグローバル識別子(global identifier:GID)を形成するために使用され得る。
【0027】
SMは、ネットワーク初期化時間に、ルーティングテーブル(すなわち、サブネット内のノードの各ペア間の接続/ルート)を計算し得る。さらに、トポロジーが変化するたびに、ルーティングテーブルは、接続性および最適性能を確実にするために更新され得る。通常動作中、SMは、トポロジー変化をチェックするためにネットワークの周期的なライトスイープ(light sweep)を実行し得る。ライトスイープ中に変化が発見された場合、
または、ネットワーク変化を信号で伝えるメッセージ(トラップ)をSMが受信した場合、SMは、発見された変化に従ってネットワークを再構成し得る。
【0028】
たとえば、SMは、リンクがダウンした場合、デバイスが追加された場合、またはリンクが除去された場合など、ネットワークトポロジーが変化する場合に、ネットワークを再構成し得る。再構成ステップは、ネットワーク初期化中に行なわれるステップを含み得る。さらに、再構成は、ネットワーク変化が生じたサブネットに制限されるローカルスコー
プを有し得る。また、ルータを用いる大規模ファブリックのセグメント化は、再構成スコープを制限し得る。
【0029】
サブネット内で有効で一意のローカルアドレスであるLIDに加えて、各IBデバイス(例えばHCAまたはスイッチ)は64ビットのグローバル一意識別子(GUID)を有することができる。さらに、HCAの各ポートは独自のGUIDを有することができる。IBデバイスのGUIDは、デバイスのベンダーによって割り当てられることができる。IBデバイスのGUIDは、ネットワークインターフェイスカードのメディアアクセス制御(MAC)アドレスのように、デバイスにハードコーディングすることができる。GUIDを用いて、IBレイヤ3(L3)アドレスであるグローバル識別子(GID)を形成することができる。
【0030】
一実施形態に従うインフィニバンド環境100の一例を示す
図1に、インフィニバンドファブリックの一例を示す。
図1に示す例では、ノードA101~E105は、インフィニバンドファブリック120を使用して、それぞれのホストチャネルアダプタ111~115を介して通信する。一実施形態に従うと、さまざまなノード(たとえばノードA101~E105)はさまざまな物理デバイスによって表わすことができる。一実施形態に従うと、さまざまなノード(たとえばノードA101~E105)は仮想マシンなどのさまざまな仮想デバイスによって表わすことができる。
【0031】
インフィニバンドにおけるパーティショニング
一実施形態に従うと、IBネットワークは、ネットワークファブリックを共有するシステムの論理グループを分離するためのセキュリティメカニズムとしてのパーティショニングをサポートし得る。ファブリックにおけるノード上の各HCAポートは、1つ以上のパーティションのメンバである可能性がある。パーティションメンバーシップは、SMの一部であり得る集中型パーティションマネージャによって管理される。SMは、各ポートに関するパーティションメンバーシップ情報を、16ビットのパーティションキー(partition key:P_Key)のテーブルとして構成することができる。SMはまた、これらの
ポートを介してデータトラフィックを送信または受信するエンドノードに関連付けられたP_Key情報を含むパーティション実施テーブルを用いて、スイッチポートおよびルータポートを構成することができる。加えて、一般的な場合には、スイッチポートのパーティションメンバーシップは、(リンクに向かう)出口方向に向かってポートを介してルーティングされたLIDに間接的に関連付けられたすべてのメンバーシップの集合を表わし得る。
【0032】
P_Keyは、制限付きまたは正規の、2つのタイプのパーティションメンバーシップのいずれかを指定することができる。P_Keyの上位ビットは、自身のP_KeyテーブルにP_Keyを有するHCAのメンバーシップのタイプを指定するために用いられる。値1は正規メンバーを示し、値0は制限付きメンバーを示す。制限付きパーティションメンバーは、他の制限付きメンバーからのパケットを受け入れることはできない。ただし、他のすべての組み合わせのメンバーシップタイプ間での通信は許可される。
【0033】
一実施形態に従うと、パーティションはポートの論理グループであり、あるグループのメンバは同じ論理グループの他のメンバとしか通信できない。ホストチャネルアダプタ(HCA)およびスイッチにおいて、パーティションメンバーシップ情報を用いてパケットをフィルタリングすることにより、分離を実施することができる。無効なパーティショニング情報を有するパケットは、当該パケットが入口ポートに達すると直ちにドロップすることができる。パーティショニングされたIBシステムにおいて、パーティションを用いることにより、テナントクラスタを作成できる。パーティションを適所で実施すると、ノードは異なるテナントクラスタに属する他のノードと通信することができない。このよう
にして、欠陥があるまたは悪意があるテナントノードが存在していても、システムのセキュリティを保証することができる。
【0034】
一実施形態に従うと、ノード間の通信のために、マネージメントキューペア(QP0およびQP1)を除き、キューペア(Queue Pair:QP)およびエンドツーエンドコンテキスト(End-to-End context:EEC)を特定のパーティションに割当てることができる。次に、P_Key情報を、送信されたすべてのIBトランスポートパケットに追加することができる。パケットがHCAポートまたはスイッチに到着すると、そのP_Key値を、SMによって構成されたテーブルに対して確認することができる。無効のP_Key値が見つかった場合、そのパケットは直ちに廃棄される。このようにして、通信は、パーティションを共有するポート間でのみ許可される。
【0035】
一実施形態に従い、パーティショニングされたクラスタ環境の一例を示す
図2に、IBパーティションの一例が示される。
図2に示す例では、ノードA101~E105は、インフィニバンドファブリック120を使用して、それぞれのホストチャネルアダプタ111~115を介して通信する。ノードA~Eは、パーティション、すなわち、パーティション1 130、パーティション2 140、およびパーティション3 150に配置されている。パーティション1はノードA 101とノードD 104とを含む。パーティション2はノードA 101とノードB 102とノードC 103とを含む。パーティション3はノードC 103とノードE 105とを含む。パーティションのこの配置により、ノードD 104およびノードE 105は、1つのパーティションを共有していないので、通信することができない。一方、たとえばノードA 101およびノードC 103は、どちらもパーティション2 140のメンバなので、通信することができる。
【0036】
インフィニバンドにおける仮想マシン
過去10年の間に、ハードウェア仮想化サポートによってCPUオーバーヘッドが実質的に排除され、メモリ管理ユニットを仮想化することによってメモリオーバーヘッドが著しく削減され、高速SANストレージまたは分散型ネットワークファイルシステムの利用によってストレージオーバーヘッドが削減され、シングルルートI/O仮想化(Single Root Input/Output Virtualization:SR-IOV)のようなデバイス・パススルー技術
を使用することによってネットワークI/Oオーバーヘッドが削減されてきたことに応じて、仮想化された高性能コンピューティング(High Performance Computing:HPC)環境の将来の見通しが大幅に改善されてきた。現在では、クラウドが、高性能相互接続ソリューションを用いて仮想HPC(virtual HPC:vHPC)クラスタに対応し、必要な性
能を提供することができる。
【0037】
しかしながら、インフィニバンド(IB)などの無損失ネットワークと連結されたとき、仮想マシン(VM)のライブマイグレーションなどのいくつかのクラウド機能は、これらのソリューションにおいて用いられる複雑なアドレス指定およびルーティングスキームのせいで、依然として問題となる。IBは、高帯域および低レイテンシを提供する相互接続ネットワーク技術であり、このため、HPCおよび他の通信集約型の作業負荷に非常によく適している。
【0038】
IBデバイスをVMに接続するための従来のアプローチは直接割当てされたSR-IOVを利用することによるものである。しかしながら、SR-IOVを用いてIBホストチャネルアダプタ(HCA)に割当てられたVMのライブマイグレーションを実現することは難易度の高いものであることが判明した。各々のIBが接続されているノードは、3つの異なるアドレス(すなわちLID、GUIDおよびGID)を有する。ライブマイグレーションが発生すると、これらのアドレスのうち1つ以上が変化する。マイグレーション中のVM(VM-in-migration)と通信する他のノードは接続性を失う可能性がある。これ
が発生すると、IBサブネットマネージャ(Subnet Manager:SM)にサブネット管理(Subnet Administration:SA)経路記録クエリを送信することによって、再接続すべき
仮想マシンの新しいアドレスを突きとめることにより、失われた接続を回復させるように試みることができる。
【0039】
IBは3つの異なるタイプのアドレスを用いる。第1のタイプのアドレスは16ビットのローカル識別子(LID)である。少なくとも1つの固有のLIDは、SMによって各々のHCAポートおよび各々のスイッチに割当てられる。LIDはサブネット内のトラフィックをルーティングために用いられる。LIDが16ビット長であるので、65536個の固有のアドレス組合せを構成することができ、そのうち49151個(0×0001-0×BFFF)だけをユニキャストアドレスとして用いることができる。結果として、入手可能なユニキャストアドレスの数は、IBサブネットの最大サイズを定義することとなる。第2のタイプのアドレスは、製造業者によって各々のデバイス(たとえば、HCAおよびスイッチ)ならびに各々のHCAポートに割当てられた64ビットのグローバル一意識別子(GUID)である。SMは、HCAポートに追加のサブネット固有GUIDを割当ててもよく、これは、SR-IOVが用いられる場合に有用となる。第3のタイプのアドレスは128ビットのグローバル識別子(GID)である。GIDは有効なIPv6ユニキャストアドレスであり、少なくとも1つが各々のHCAポートに割当てられている。GIDは、ファブリックアドミニストレータによって割当てられたグローバルに固有の64ビットプレフィックスと各々のHCAポートのGUIDアドレスとを組合わせることによって形成される。
【0040】
ファットツリー(FTree)トポロジーおよびルーティング
一実施形態に従うと、IBベースのHPCシステムのいくつかは、ファットツリートポロジーを採用して、ファットツリーが提供する有用な特性を利用する。これらの特性は、各送信元宛先ペア間の複数経路の利用可能性に起因する、フルバイセクション帯域幅および固有の耐故障性を含む。ファットツリーの背後にある初期の概念は、ツリーがトポロジーのルート(root)に近づくにつれて、より利用可能な帯域幅を用いて、ノード間のより太いリンクを採用することであった。より太いリンクは、上位レベルのスイッチにおける輻輳を回避するのに役立てることができ、バイセクション帯域幅が維持される。
【0041】
図3は、一実施形態に従う、ネットワーク環境におけるツリートポロジーの例を示す。
図3に示すように、ネットワークファブリック200において、1つ以上のエンドノード201~204が接続され得る。ネットワークファブリック200は、複数のリーフスイッチ211~214と複数のスパインスイッチまたはルート(root)スイッチ231~234とを含むファットツリートポロジーに基づき得る。加えて、ネットワークファブリック200は、スイッチ221~224などの1つ以上の中間スイッチを含み得る。
【0042】
また、
図3に示すように、エンドノード201~204の各々は、マルチホームノード、すなわち、複数のポートを介してネットワークファブリック200のうち2つ以上の部分に接続される単一のノードであり得る。たとえば、ノード201はポートH1およびH2を含み、ノード202はポートH3およびH4を含み、ノード203はポートH5およびH6を含み、ノード204はポートH7およびH8を含み得る。
【0043】
加えて、各スイッチは複数のスイッチポートを有し得る。たとえば、ルートスイッチ231はスイッチポート1~2を有し、ルートスイッチ232はスイッチポート3~4を有し、ルートスイッチ233はスイッチポート5~6を有し、ルートスイッチ234はスイッチポート7~8を有し得る。
【0044】
実施形態に従うと、ファットツリールーティングメカニズムは、IBベースのファット
ツリートポロジーに関して最も人気のあるルーティングアルゴリズムのうちの1つである。ファットツリールーティングメカニズムはまた、OFED(Open Fabric Enterprise Distribution:IBベースのアプリケーションを構築しデプロイするための標準ソフトウ
ェアスタック)サブネットマネージャ、すなわちOpenSMにおいて実現される。
【0045】
ファットツリールーティングメカニズムの目的は、ネットワークファブリックにおけるリンクにわたって最短経路ルートを均一に広げるLFTを生成することである。このメカニズムは、索引付け順序でファブリックを横断し、エンドノードの目標LID、ひいては対応するルートを各スイッチポートに割当てる。同じリーフスイッチに接続されたエンドノードについては、索引付け順序は、エンドノードが接続されるスイッチポートに依存し得る(すなわち、ポートナンバリングシーケンス)。各ポートについては、メカニズムはポート使用カウンタを維持することができ、新しいルートが追加されるたびに、ポート使用カウンタを使用して使用頻度が最小のポートを選択することができる。
【0046】
一実施形態に従うと、パーティショニングされたサブネットでは、共通のパーティションのメンバではないノードは通信することを許可されない。実際には、これは、ファットツリールーティングアルゴリズムによって割当てられたルートのうちのいくつかがユーザトラフィックのために使用されないことを意味する。ファットツリールーティングメカニズムが、それらのルートについてのLFTを、他の機能的経路と同じやり方で生成する場合、問題が生じる。この動作は、リンク上でバランシングを劣化させるおそれがある。なぜなら、ノードが索引付けの順序でルーティングされているからである。パーティションに気づかずにルーティングが行なわれるため、ファットツリーでルーティングされたサブネットにより、概して、パーティション間の分離が不良なものとなる。
【0047】
一実施形態に従うと、ファットツリーは、利用可能なネットワークリソースでスケーリングすることができる階層ネットワークトポロジーである。さらに、ファットツリーは、さまざまなレベルの階層に配置された商品スイッチを用いて容易に構築される。さらに、k-ary-n-tree、拡張された一般化ファットツリー(Extended Generalized Fat-Tree:XGFT)、パラレルポート一般化ファットツリー(Parallel Ports Generalized Fat-Tree:PGFT)およびリアルライフファットツリー(Real Life Fat-Tree:RLFT)を含むファットツリーのさまざまな変形例が、一般に利用可能である。
【0048】
また、k-ary-n-treeは、nレベルのファットツリーであって、knエンドノードと、n・kn-1スイッチとを備え、各々が2kポートを備えている。各々のスイッチは、ツリーにおいて上下方向に同数の接続を有している。XGFTファットツリーは、スイッチのための異なる数の上下方向の接続と、ツリーにおける各レベルでの異なる数の接続とをともに可能にすることによって、k-ary-n-treeを拡張させる。PGFT定義はさらに、XGFTトポロジーを拡張して、スイッチ間の複数の接続を可能にする。多種多様なトポロジーはXGFTおよびPGFTを用いて定義することができる。しかしながら、実用化するために、現代のHPCクラスタにおいて一般に見出されるファットツリーを定義するために、PGFTの制限バージョンであるRLFTが導入されている。RLFTは、ファットツリーにおけるすべてのレベルに同じポートカウントスイッチを用いている。
【0049】
入出力(I/O)仮想化
一実施形態に従うと、I/O仮想化(I/O Virtualization:IOV)は、基礎をなす物理リソースに仮想マシン(VM)がアクセスすることを可能にすることによって、I/Oを利用可能にすることができる。ストレージトラフィックとサーバ間通信とを組合わせると、シングルサーバのI/Oリソースにとって抗し難い高い負荷が課され、結果として、データの待機中に、バックログが発生し、プロセッサがアイドル状態になる可能性がある
。I/O要求の数が増えるにつれて、IOVにより利用可能性をもたらすことができ、最新のCPU仮想化において見られる性能レベルに匹敵するように、(仮想化された)I/Oリソースの性能、スケーラビリティおよび融通性を向上させることができる。
【0050】
一実施形態に従うと、I/Oリソースの共有を可能にして、VMからリソースへのアクセスが保護されることを可能にし得るようなIOVが所望される。IOVは、VMにエクスポーズされる論理装置を、その物理的な実装から分離する。現在、エミュレーション、準仮想化、直接的な割当て(direct assignment:DA)、およびシングルルートI/O
仮想化(SR-IOV)などのさまざまなタイプのIOV技術が存在し得る。
【0051】
一実施形態に従うと、あるタイプのIOV技術としてソフトウェアエミュレーションがある。ソフトウェアエミュレーションは分離されたフロントエンド/バックエンド・ソフトウェアアーキテクチャを可能にし得る。フロントエンドはVMに配置されたデバイスドライバであり得、I/Oアクセスをもたらすためにハイパーバイザによって実現されるバックエンドと通信し得る。物理デバイス共有比率は高く、VMのライブマイグレーションはネットワークダウンタイムのわずか数ミリ秒で実現可能である。しかしながら、ソフトウェアエミュレーションはさらなる不所望な計算上のオーバーヘッドをもたらしてしまう。
【0052】
一実施形態に従うと、別のタイプのIOV技術として直接的なデバイスの割当てがある。直接的なデバイスの割当てでは、I/OデバイスをVMに連結する必要があるが、デバイスはVM間では共有されない。直接的な割当てまたはデバイス・パススルーは、最小限のオーバーヘッドでほぼ固有の性能を提供する。物理デバイスはハイパーバイザをバイパスし、直接、VMに取付けられている。しかしながら、このような直接的なデバイスの割当ての欠点は、仮想マシン間で共有がなされないため、1枚の物理ネットワークカードが1つのVMと連結されるといったように、スケーラビリティが制限されてしまうことである。
【0053】
一実施形態に従うと、シングルルートIOV(Single Root IOV:SR-IOV)は、
ハードウェア仮想化によって、物理装置がその同じ装置の複数の独立した軽量のインスタンスとして現われることを可能にし得る。これらのインスタンスは、パス・スルー装置としてVMに割当てることができ、仮想機能(Virtual Function:VF)としてアクセスすることができる。ハイパーバイザは、(1つのデバイスごとに)固有の、十分な機能を有する物理機能(Physical Function:PF)によってデバイスにアクセスする。SR-I
OVは、純粋に直接的に割当てする際のスケーラビリティの問題を軽減する。しかしながら、SR-IOVによって提示される問題は、それがVMマイグレーションを損なう可能性があることである。これらのIOV技術の中でも、SR-IOVは、ほぼ固有の性能を維持しながらも、複数のVMから単一の物理デバイスに直接アクセスすることを可能にする手段を用いてPCI Express(PCIe)規格を拡張することができる。これにより、SR-IOVは優れた性能およびスケーラビリティを提供することができる。
【0054】
SR-IOVは、PCIeデバイスが、各々のゲストに1つの仮想デバイスを割当てることによって複数のゲスト間で共有することができる複数の仮想デバイスをエクスポーズすることを可能にする。各々のSR-IOVデバイスは、少なくとも1つの物理機能(PF)と、1つ以上の関連付けられた仮想機能(VF)とを有する。PFは、仮想マシンモニタ(virtual machine monitor:VMM)またはハイパーバイザによって制御される通
常のPCIe機能であるのに対して、VFは軽量のPCIe機能である。各々のVFはそれ自体のベースアドレス(base address:BAR)を有しており、固有のリクエスタIDが割当てられている。固有のリクエスタIDは、I/Oメモリ管理ユニット(I/O memory
management unit:IOMMU)がさまざまなVFへの/からのトラフィックストリーム
を区別することを可能にする。IOMMUはまた、メモリを適用して、PFとVFとの間の変換を中断する。
【0055】
しかし、残念ながら、直接的デバイス割当て技術は、仮想マシンのトランスペアレントなライブマイグレーションがデータセンタ最適化のために所望されるような状況においては、クラウドプロバイダにとって障壁となる。ライブマイグレーションの本質は、VMのメモリ内容がリモートハイパーバイザにコピーされるという点である。さらに、VMがソースハイパーバイザにおいて中断され、VMの動作が宛先において再開される。ソフトウェアエミュレーション方法を用いる場合、ネットワークインターフェイスは、それらの内部状態がメモリに記憶され、さらにコピーされるように仮想的である。このため、ダウンタイムは数ミリ秒にまで減らされ得る。
【0056】
しかしながら、SR-IOVなどの直接的デバイス割当て技術が用いられる場合、マイグレーションはより困難になる。このような状況においては、ネットワークインターフェイスの内部状態全体は、それがハードウェアに結び付けられているのでコピーすることができない。代わりに、VMに割当てられたSR-IOV VFが分離され、ライブマイグレーションが実行されることとなり、新しいVFが宛先において付与されることとなる。インフィニバンドおよびSR-IOVの場合、このプロセスがダウンタイムを数秒のオーダでもたらす可能性がある。さらに、SR-IOV共有型ポートモデルにおいては、VMのアドレスがマイグレーション後に変化することとなり、これにより、SMにオーバーヘッドが追加され、基礎をなすネットワークファブリックの性能に対して悪影響が及ぼされることとなる。
【0057】
インフィニバンドSR-IOVアーキテクチャ-共有ポート
さまざまなタイプのSR-IOVモデル(たとえば共有ポートモデル、仮想スイッチモデルおよび仮想ポートモデル)があり得る。
【0058】
図4は、一実施形態に従う例示的な共有ポートアーキテクチャを示す。図に示されるように、ホスト300(たとえばホストチャネルアダプタ)はハイパーバイザ310と対話し得る。ハイパーバイザ310は、さまざまな仮想機能330、340および350をいくつかの仮想マシンに割当て得る。同様に、物理機能はハイパーバイザ310によって処理することができる。
【0059】
一実施形態に従うと、
図4に示されるような共有ポートアーキテクチャを用いる場合、ホスト(たとえばHCA)は、物理機能320と仮想機能330、350、350との間において単一の共有LIDおよび共有キュー対(Queue Pair:QP)のスペースがあるネットワークにおいて単一のポートとして現われる。しかしながら、各々の機能(すなわち、物理機能および仮想機能)はそれら自体のGIDを有し得る。
【0060】
図4に示されるように、一実施形態に従うと、さまざまなGIDを仮想機能および物理機能に割当てることができ、特別のキュー対であるQP0およびQP1(すなわちインフィニバンド
TM管理パケットのために用いられる専用のキュー対)が物理機能によって所有される。これらのQPはVFにも同様にエクスポーズされるが、VFはQP0を使用することが許可されておらず(VFからQP0に向かって入来するすべてのSMPが廃棄され)、QP1は、PFが所有する実際のQP1のプロキシとして機能し得る。
【0061】
一実施形態に従うと、共有ポートアーキテクチャは、(仮想機能に割当てられることによってネットワークに付随する)VMの数によって制限されることのない高度にスケーラブルなデータセンタを可能にし得る。なぜなら、ネットワークにおける物理的なマシンおよびスイッチによってLIDスペースが消費されるだけであるからである。
【0062】
しかしながら、共有ポートアーキテクチャの欠点は、トランスペアレントなライブマイグレーションを提供することができない点であり、これにより、フレキシブルなVM配置についての可能性が妨害されてしまう。各々のLIDが特定のハイパーバイザに関連付けられており、かつハイパーバイザ上に常駐するすべてのVM間で共有されているので、マイグレートしているVM(すなわち、宛先ハイパーバイザにマイグレートする仮想マシン)は、そのLIDを宛先ハイパーバイザのLIDに変更させなければならない。さらに、QP0アクセスが制限された結果、サブネットマネージャはVMの内部で実行させることができなくなる。
【0063】
インフィニバンドSR-IOVアーキテクチャモデル-仮想スイッチ(vSwitch)
図5は、一実施形態に従う例示的なvSwitchアーキテクチャを示す。図に示されるように、ホスト400(たとえばホストチャネルアダプタ)はハイパーバイザ410と対話することができ、当該ハイパーバイザ410は、さまざまな仮想機能430、440および450をいくつかの仮想マシンに割当てることができる。同様に、物理機能はハイパーバイザ410によって処理することができる。仮想スイッチ415もハイパーバイザ401によって処理することができる。
【0064】
一実施形態に従うと、vSwitchアーキテクチャにおいては、各々の仮想機能430、440、450は完全な仮想ホストチャネルアダプタ(virtual Host Channel Adapter:vHCA)であり、これは、ハードウェアにおいて、VFに割当てられたVMに、IBアドレス一式(たとえばGID、GUID、LID)および専用のQPスペースが割当てられていることを意味する。残りのネットワークおよびSMについては、HCA400は、仮想スイッチ415を介して追加のノードが接続されているスイッチのように見えている。ハイパーバイザ410はPF420を用いることができ、(仮想機能に付与された)VMはVFを用いる。
【0065】
一実施形態に従うと、vSwitchアーキテクチャは、トランスペアレントな仮想化を提供する。しかしながら、各々の仮想機能には固有のLIDが割当てられているので、利用可能な数のLIDが速やかに消費される。同様に、多くのLIDアドレスが(すなわち、各々の物理機能および各々の仮想機能ごとに1つずつ)使用されている場合、より多くの通信経路をSMによって演算しなければならず、それらのLFTを更新するために、より多くのサブネット管理パケット(SMP)をスイッチに送信しなければならない。たとえば、通信経路の演算は大規模ネットワークにおいては数分かかる可能性がある。LIDスペースが49151個のユニキャストLIDに制限されており、(VFを介する)各々のVMとして、物理ノードおよびスイッチがLIDを1つずつ占有するので、ネットワークにおける物理ノードおよびスイッチの数によってアクティブなVMの数が制限されてしまい、逆の場合も同様に制限される。
【0066】
インフィニバンドSR-IOVアーキテクチャモデル-仮想ポート(vPort)
図6は、一実施形態に従う例示的なvPortの概念を示す。図に示されるように、ホスト300(たとえばホストチャネルアダプタ)は、さまざまな仮想機能330、340および350をいくつかの仮想マシンに割当てることができるハイパーバイザ410と対話することができる。同様に、物理機能はハイパーバイザ310によって処理することができる。
【0067】
一実施形態に従うと、ベンダーに実装の自由を与えるためにvPort概念は緩やかに定義されており(たとえば、当該定義では、実装がSRIOV専用とすべきであるとは規定されていない)、vPortの目的は、VMがサブネットにおいて処理される方法を標
準化することである。vPort概念であれば、空間ドメインおよび性能ドメインの両方においてよりスケーラブルであり得る、SR-IOV共有のポートのようなアーキテクチャおよびvSwitchのようなアーキテクチャの両方、または、これらのアーキテクチャの組合せが規定され得る。また、vPortはオプションのLIDをサポートするとともに、共有のポートとは異なり、SMは、vPortが専用のLIDを用いていなくても、サブネットにおいて利用可能なすべてのvPortを認識する。
【0068】
インフィニバンドSR-IOVアーキテクチャモデル-LIDが予めポピュレートされたvSwitch
一実施形態に従うと、本開示は、LIDが予めポピュレートされたvSwitchアーキテクチャを提供するためのシステムおよび方法を提供する。
【0069】
図7は、一実施形態に従う、LIDが予めポピュレートされた例示的なvSwitchアーキテクチャを示す。図に示されるように、いくつかのスイッチ501~504は、ネットワーク切替環境600(たとえばIBサブネット)内においてインフィニバンド
TMファブリックなどのファブリックのメンバ間で通信を確立することができる。ファブリックはホストチャネルアダプタ510、520、530などのいくつかのハードウェアデバイスを含み得る。さらに、ホストチャネルアダプタ510、520および530は、それぞれ、ハイパーバイザ511、521および531と対話することができる。各々のハイパーバイザは、さらに、ホストチャネルアダプタと共に、いくつかの仮想機能514、515、516、524、525、526、534、535および536と対話し、設定し、いくつかの仮想マシンに割当てることができる。たとえば、仮想マシン1 550はハイパーバイザ511によって仮想機能1 514に割当てることができる。ハイパーバイザ511は、加えて、仮想マシン2 551を仮想機能2 515に割当て、仮想マシン3 552を仮想機能3 516に割当てることができる。ハイパーバイザ531は、さらに、仮想マシン4 553を仮想機能1 534に割当てることができる。ハイパーバイザは、ホストチャネルアダプタの各々の上で十分な機能を有する物理機能513、523および533を介してホストチャネルアダプタにアクセスすることができる。
【0070】
一実施形態に従うと、スイッチ501~504の各々はいくつかのポート(図示せず)を含み得る。いくつかのポートは、ネットワーク切替環境600内においてトラフィックを方向付けるためにリニアフォワーディングテーブルを設定するのに用いられる。
【0071】
一実施形態に従うと、仮想スイッチ512、522および532は、それぞれのハイパーバイザ511、521、531によって処理することができる。このようなvSwitchアーキテクチャにおいては、各々の仮想機能は完全な仮想ホストチャネルアダプタ(vHCA)であり、これは、ハードウェアにおいて、VFに割当てられたVMに、IBアドレス一式(たとえばGID、GUID、LID)および専用のQPスペースが割当てられていることを意味する。残りのネットワークおよびSM(図示せず)については、HCA510、520および530は、仮想スイッチを介して追加のノードが接続されているスイッチのように見えている。
【0072】
一実施形態に従うと、本開示は、LIDが予めポピュレートされたvSwitchアーキテクチャを提供するためのシステムおよび方法を提供する。
図7を参照すると、LIDは、さまざまな物理機能513、523および533に、さらには、仮想機能514~516、524~526、534~536(その時点でアクティブな仮想マシンに関連付けられていない仮想機能であっても)にも、予めポピュレートされている。たとえば、物理機能513はLID1が予めポピュレートされており、仮想機能1 534はLID10が予めポピュレートされている。ネットワークがブートされているとき、LIDはSR-IOV vSwitch対応のサブネットにおいて予めポピュレートされている。VFの
すべてがネットワークにおけるVMによって占有されていない場合であっても、ポピュレートされたVFには、
図7に示されるようにLIDが割当てられている。
【0073】
一実施形態に従うと、多くの同様の物理的なホストチャネルアダプタが2つ以上のポートを有することができ(冗長性のために2つのポートが共用となっている)、仮想HCAも2つのポートで表わされ、1つまたは2つ以上の仮想スイッチを介して外部IBサブネットに接続され得る。
【0074】
一実施形態に従うと、LIDが予めポピュレートされたvSwitchアーキテクチャにおいては、各々のハイパーバイザは、それ自体のための1つのLIDをPFを介して消費し、各々の追加のVFごとに1つ以上のLIDを消費することができる。IBサブネットにおけるすべてのハイパーバイザにおいて利用可能なすべてのVFを合計すると、サブネットにおいて実行することが可能なVMの最大量が得られる。たとえば、サブネット内の1ハイパーバイザごとに16個の仮想機能を備えたIBサブネットにおいては、各々のハイパーバイザは、サブネットにおいて17個のLID(16個の仮想機能ごとに1つのLIDと、物理機能のために1つのLID)を消費する。このようなIBサブネットにおいては、単一のサブネットについて理論上のハイパーバイザ限度は利用可能なユニキャストLIDの数によって規定されており、(49151個の利用可能なLIDをハイパーバイザごとに17個のLIDで割って得られる)2891であり、VMの総数(すなわち限度)は(ハイパーバイザごとに2891個のハイパーバイザに16のVFを掛けて得られる)46256である(実質的には、IBサブネットにおける各々のスイッチ、ルータまたは専用のSMノードが同様にLIDを消費するので、実際これらの数はより小さくなる)。なお、vSwitchが、LIDをPFと共有することができるので、付加的なLIDを占有する必要がないことに留意されたい。
【0075】
一実施形態に従うと、LIDが予めポピュレートされたvSwitchアーキテクチャにおいては、ネットワークが一旦ブートされると、すべてのLIDについて通信経路が計算される。新しいVMを始動させる必要がある場合、システムは、サブネットにおいて新しいLIDを追加する必要はない。それ以外の場合、経路の再計算を含め、ネットワークを完全に再構成させ得る動作は、最も時間を消費する要素となる。代わりに、VMのための利用可能なポートはハイパーバイザのうちの1つに位置し(すなわち利用可能な仮想機能)、仮想マシンは利用可能な仮想機能に付与されている。
【0076】
一実施形態に従うと、LIDが予めポピュレートされたvSwitchアーキテクチャはまた、同じハイパーバイザによってホストされているさまざまなVMに達するために、さまざまな経路を計算して用いる能力を可能にする。本質的には、これは、LIDを連続的にすることを必要とするLMCの制約によって拘束されることなく、1つの物理的なマシンに向かう代替的な経路を設けるために、このようなサブネットおよびネットワークがLIDマスク制御ライク(LID-Mask-Control-like:LMCライク)な特徴を用いること
を可能にする。VMをマイグレートしてその関連するLIDを宛先に送達する必要がある場合、不連続なLIDを自由に使用できることは特に有用となる。
【0077】
一実施形態に従うと、LIDが予めポピュレートされたvSwitchアーキテクチャについての上述の利点と共に、いくつかの検討事項を考慮に入れることができる。たとえば、ネットワークがブートされているときに、SR-IOV vSwitch対応のサブネットにおいてLIDが予めポピュレートされているので、(たとえば起動時の)最初の経路演算はLIDが予めポピュレートされていなかった場合よりも時間が長くかかる可能性がある。
【0078】
インフィニバンドSR-IOVアーキテクチャモデル-動的LID割当てがなされたv
Switch
一実施形態に従うと、本開示は、動的LID割当てがなされたvSwitchアーキテクチャを提供するためのシステムおよび方法を提供する。
【0079】
図8は、一実施形態に従う、動的LID割当てがなされた例示的なvSwitchアーキテクチャを示す。図に示されるように、いくつかのスイッチ501~504は、ネットワーク切替環境700(たとえばIBサブネット)内においてインフィニバンド
TMファブリックなどのファブリックのメンバ間で通信を確立することができる。ファブリックは、ホストチャネルアダプタ510、520、530などのいくつかのハードウェアデバイスを含み得る。ホストチャネルアダプタ510、520および530は、さらに、ハイパーバイザ511、521および531とそれぞれ対話することができる。各々のハイパーバイザは、さらに、ホストチャネルアダプタと共に、いくつかの仮想機能514、515、516、524、525、526、534、535および536と対話し、設定し、いくつかの仮想マシンに割当てることができる。たとえば、仮想マシン1 550はハイパーバイザ511によって仮想機能1 514に割当てることができる。ハイパーバイザ511は、加えて、仮想マシン2 551を仮想機能2 515に割当て、仮想マシン3 552を仮想機能3 516に割当てることができる。ハイパーバイザ531はさらに、仮想マシン4 553を仮想機能1 534に割当てることができる。ハイパーバイザは、ホストチャネルアダプタの各々の上において十分な機能を有する物理機能513、523および533を介してホストチャネルアダプタにアクセスすることができる。
【0080】
一実施形態に従うと、スイッチ501~504の各々はいくつかのポート(図示せず)を含み得る。いくつかのポートは、ネットワーク切替環境700内においてトラフィックを方向付けるためにリニアフォワーディングテーブルを設定するのに用いられる。
【0081】
一実施形態に従うと、仮想スイッチ512、522および532は、それぞれのハイパーバイザ511、521および531によって処理することができる。このようなvSwitchアーキテクチャにおいては、各々の仮想機能は完全な仮想ホストチャネルアダプタ(vHCA)であり、これは、ハードウェアにおいて、VFに割当てられたVMに、IBアドレス一式(たとえばGID、GUID、LID)および専用のQPスペースが割当てられていることを意味する。残りのネットワークおよびSM(図示せず)については、HCA510、520および530は、仮想スイッチを介して、追加のノードが接続されているスイッチのように見えている。
【0082】
一実施形態に従うと、本開示は、動的LID割当てがなされたvSwitchアーキテクチャを提供するためのシステムおよび方法を提供する。
図8を参照すると、LIDには、さまざまな物理機能513、523および533が動的に割当てられており、物理機能513がLID1を受取り、物理機能523がLID2を受取り、物理機能533がLID3を受取る。アクティブな仮想マシンに関連付けられたそれらの仮想機能はまた、動的に割当てられたLIDを受取ることもできる。たとえば、仮想マシン1 550がアクティブであり、仮想機能1 514に関連付けられているので、仮想機能514にはLID5が割当てられ得る。同様に、仮想機能2 515、仮想機能3 516および仮想機能1 534は、各々、アクティブな仮想機能に関連付けられている。このため、これらの仮想機能にLIDが割当てられ、LID7が仮想機能2 515に割当てられ、LID11が仮想機能3 516に割当てられ、LID9が仮想機能1 534に割当てられている。LIDが予めポピュレートされたvSwitchとは異なり、アクティブな仮想マシンにその時点で関連付けられていない仮想機能はLIDの割当てを受けない。
【0083】
一実施形態に従うと、動的LID割当てがなされていれば、最初の経路演算を実質的に減らすことができる。ネットワークが初めてブートしており、VMが存在していない場合
、比較的少数のLIDを最初の経路計算およびLFT分配のために用いることができる。
【0084】
一実施形態に従うと、多くの同様の物理的なホストチャネルアダプタが2つ以上のポートを有することができ(冗長性のために2つのポートが共用となっている)、仮想HCAも2つのポートで表わされ、1つまたは2つ以上の仮想スイッチを介して外部IBサブネットに接続され得る。
【0085】
一実施形態に従うと、動的LID割当てがなされたvSwitchを利用するシステムにおいて新しいVMが作成される場合、どのハイパーバイザ上で新しく追加されたVMをブートすべきであるかを決定するために、自由なVMスロットが発見され、固有の未使用のユニキャストLIDも同様に発見される。しかしながら、新しく追加されたLIDを処理するためのスイッチのLFTおよびネットワークに既知の経路が存在しない。新しく追加されたVMを処理するために新しいセットの経路を演算することは、いくつかのVMが毎分ごとにブートされ得る動的な環境においては望ましくない。大規模なIBサブネットにおいては、新しい1セットのルートの演算には数分かかる可能性があり、この手順は、新しいVMがブートされるたびに繰返されなければならないだろう。
【0086】
有利には、一実施形態に従うと、ハイパーバイザにおけるすべてのVFがPFと同じアップリンクを共有しているので、新しいセットのルートを演算する必要はない。ネットワークにおけるすべての物理スイッチのLFTを繰返し、(VMが作成されている)ハイパーバイザのPFに属するLIDエントリから新しく追加されたLIDにフォワーディングポートをコピーし、かつ、特定のスイッチの対応するLFTブロックを更新するために単一のSMPを送信するだけでよい。これにより、当該システムおよび方法では、新しいセットのルートを演算する必要がなくなる。
【0087】
一実施形態に従うと、動的LID割当てアーキテクチャを備えたvSwitchにおいて割当てられたLIDは連続的である必要はない。各々のハイパーバイザ上のVM上で割当てられたLIDをLIDが予めポピュレートされたvSwitchと動的LID割当てがなされたvSwitchとで比較すると、動的LID割当てアーキテクチャにおいて割当てられたLIDが不連続であり、そこに予めポピュレートされたLIDが本質的に連続的であることが分かるだろう。さらに、vSwitch動的LID割当てアーキテクチャにおいては、新しいVMが作成されると、次に利用可能なLIDが、VMの生存期間の間中ずっと用いられる。逆に、LIDが予めポピュレートされたvSwitchにおいては、各々のVMは、対応するVFに既に割当てられているLIDを引継ぎ、ライブマイグレーションのないネットワークにおいては、所与のVFに連続的に付与されたVMが同じLIDを得る。
【0088】
一実施形態に従うと、動的LID割当てアーキテクチャを備えたvSwitchは、いくらかの追加のネットワークおよびランタイムSMオーバーヘッドを犠牲にして、予めポピュレートされたLIDアーキテクチャモデルを備えたvSwitchの欠点を解決することができる。VMが作成されるたびに、作成されたVMに関連付けられた、新しく追加されたLIDで、サブネットにおける物理スイッチのLFTが更新される。この動作のために、1スイッチごとに1つのサブネット管理パケット(SMP)が送信される必要がある。各々のVMがそのホストハイパーバイザと同じ経路を用いているので、LMCのような機能も利用できなくなる。しかしながら、すべてのハイパーバイザに存在するVFの合計に対する制限はなく、VFの数は、ユニキャストLIDの限度を上回る可能性もある。このような場合、当然、アクティブなVM上でVFのすべてが必ずしも同時に付与されることが可能になるわけではなく、より多くの予備のハイパーバイザおよびVFを備えることにより、ユニキャストLID限度付近で動作する際に、断片化されたネットワークの障害を回復および最適化させるための融通性が追加される。
【0089】
インフィニバンドSR-IOVアーキテクチャモデル-動的LID割当てがなされかつLIDが予めポピュレートされたvSwitch
図9は、一実施形態に従う、動的LID割当てがなされてLIDが予めポピュレートされたvSwitchを備えた例示的なvSwitchアーキテクチャを示す。図に示されるように、いくつかのスイッチ501~504は、ネットワーク切替環境800(たとえばIBサブネット)内においてインフィニバンド
TMファブリックなどのファブリックのメンバ間で通信を確立することができる。ファブリックはホストチャネルアダプタ510、520、530などのいくつかのハードウェアデバイスを含み得る。ホストチャネルアダプタ510、520および530は、それぞれ、さらに、ハイパーバイザ511、521および531と対話することができる。各々のハイパーバイザは、さらに、ホストチャネルアダプタと共に、いくつかの仮想機能514、515、516、524、525、526、534、535および536と対話し、設定し、いくつかの仮想マシンに割当てることができる。たとえば、仮想マシン1 550は、ハイパーバイザ511によって仮想機能1 514に割当てることができる。ハイパーバイザ511は、加えて、仮想マシン2 551を仮想機能2 515に割当てることができる。ハイパーバイザ521は、仮想マシン3 552を仮想機能3 526に割当てることができる。ハイパーバイザ531は、さらに、仮想マシン4 553を仮想機能2 535に割当てることができる。ハイパーバイザは、ホストチャネルアダプタの各々の上において十分な機能を有する物理機能513、523および533を介してホストチャネルアダプタにアクセスすることができる。
【0090】
一実施形態に従うと、スイッチ501~504の各々はいくつかのポート(図示せず)を含み得る。これらいくつかのポートは、ネットワーク切替環境800内においてトラフィックを方向付けるためにリニアフォワーディングテーブルを設定するのに用いられる。
【0091】
一実施形態に従うと、仮想スイッチ512、522および532は、それぞれのハイパーバイザ511、521、531によって処理することができる。このようなvSwitchアーキテクチャにおいては、各々の仮想機能は、完全な仮想ホストチャネルアダプタ(vHCA)であり、これは、ハードウェアにおいて、VFに割当てられたVMに、IBアドレス一式(たとえばGID、GUID、LID)および専用のQPスペースが割当てられていることを意味する。残りのネットワークおよびSM(図示せず)については、HCA510、520および530は、仮想スイッチを介して、追加のノードが接続されているスイッチのように見えている。
【0092】
一実施形態に従うと、本開示は、動的LID割当てがなされLIDが予めポピュレートされたハイブリッドvSwitchアーキテクチャを提供するためのシステムおよび方法を提供する。
図9を参照すると、ハイパーバイザ511には、予めポピュレートされたLIDアーキテクチャを備えたvSwitchが配置され得るとともに、ハイパーバイザ521には、LIDが予めポピュレートされて動的LID割当てがなされたvSwitchが配置され得る。ハイパーバイザ531には、動的LID割当てがなされたvSwitchが配置され得る。このため、物理機能513および仮想機能514~516には、それらのLIDが予めポピュレートされている(すなわち、アクティブな仮想マシンに付与されていない仮想機能であってもLIDが割当てられている)。物理機能523および仮想機能1 524にはそれらのLIDが予めポピュレートされ得るとともに、仮想機能2 525および仮想機能3 526にはそれらのLIDが動的に割当てられている(すなわち、仮想機能2 525は動的LID割当てのために利用可能であり、仮想機能3 526は、仮想マシン3 552が付与されているので、11というLIDが動的に割当てられている)。最後に、ハイパーバイザ3 531に関連付けられた機能(物理機能および仮想機能)にはそれらのLIDを動的に割当てることができる。これにより、結果として
、仮想機能1 534および仮想機能3 536が動的LID割当てのために利用可能となるとともに、仮想機能2 535には、仮想マシン4 553が付与されているので、9というLIDが動的に割当てられている。
【0093】
LIDが予めポピュレートされたvSwitchおよび動的LID割当てがなされたvSwitchがともに(いずれかの所与のハイパーバイザ内で独立して、または組合わされて)利用されている、
図9に示されるような一実施形態に従うと、ホストチャネルアダプタごとの予めポピュレートされたLIDの数はファブリックアドミニストレータによって定義することができ、(ホストチャネルアダプタごとに)0<=予めポピュレートされたVF<=総VFの範囲内になり得る。動的LID割当てのために利用可能なVFは、(ホストチャネルアダプタごとに)VFの総数から予めポピュレートされたVFの数を減じることによって見出すことができる。
【0094】
一実施形態に従うと、多くの同様の物理的なホストチャネルアダプタが2つ以上のポートを有することができ(冗長性のために2つのポートが共用となっている)、仮想HCAも2つのポートで表わされ、1つまたは2つ以上の仮想スイッチを介して外部IBサブネットに接続され得る。
【0095】
インフィニバンド-サブネット間通信(ファブリックマネージャ)
一実施形態に従うと、1つのサブネット内にインフィニバンドファブリックを提供することに加え、本開示の実施形態は、2つ以上のサブネットにまたがるインフィニバンドファブリックを提供することもできる。
【0096】
図10は、一実施形態に従う例示的なマルチサブネットインフィニバンドファブリックを示す。この図に示されるように、サブネットA 1000の内部の多数のスイッチ1001~1004は、サブネットA 1000(たとえばIBサブネット)内におけるインフィニバンドファブリックなどのファブリックのメンバ間の通信を提供することができる。このファブリックは、たとえばチャネルアダプタ1010などの多数のハードウェアデバイスを含み得る。ホストチャネルアダプタ1010は、ハイパーバイザ1011と対話することができる。ハイパーバイザは、対話の相手であるホストチャネルアダプタとともに、多数の仮想機能1014をセットアップすることができる。加えて、ハイパーバイザは、仮想マシンを仮想機能各々に割当てることができる。たとえば、仮想マシン1 1015は仮想機能1 1014に割当てられる。ハイパーバイザは、その対応付けられたホストチャネルアダプタに、各ホストチャネルアダプタ上の物理機能1013などの十分な機能を有する物理機能を通して、アクセスすることができる。多数のスイッチ1021~1024は、サブネットB 1040(たとえばIBサブネット)内におけるインフィニバンドファブリックなどのファブリックのメンバ間の通信を提供することができる。このファブリックは、たとえばホストチャネルアダプタ1030などの多数のハードウェアデバイスを含み得る。ホストチャネルアダプタ1030は、ハイパーバイザ1031と対話することができる。ハイパーバイザは、対話の相手であるホストチャネルアダプタとともに、多数の仮想機能1034をセットアップすることができる。加えて、ハイパーバイザは、仮想マシンを仮想機能各々に割当てることができる。たとえば、仮想マシン2 1035は仮想機能2 1034に割当てられる。ハイパーバイザは、その対応付けられたホストチャネルアダプタに、各ホストチャネルアダプタ上の物理機能1033などの十分な機能を有する物理機能を通して、アクセスすることができる。なお、各サブネット(すなわちサブネットAおよびサブネットB)内に示されているホストチャネルアダプタは1つだけであるが、各サブネット内に複数のホストチャネルアダプタおよびそれらに対応するコンポーネントが含まれていてもよいことが、理解されるはずである。
【0097】
一実施形態に従うと、各ホストチャネルアダプタはさらに、仮想スイッチ1012およ
び仮想スイッチ1032などの仮想スイッチに対応付けられていてもよく、上記のように各HCAは異なるアーキテクチャモデルでセットアップされてもよい。
図10のサブネットはどちらもLIDが予めポピュレートされているvSwitchのアーキテクチャモデルを使用するものとして示されているが、これは、このようなサブネット構成すべてが同様のアーキテクチャモデルに従い得ることを示唆しようとしているのではない。
【0098】
一実施形態に従うと、各サブネット内の少なくとも1つのスイッチがルータに対応付けられていてもよい。たとえば、サブネットA 1000内のスイッチ1002はルータ1005に対応付けられ、サブネットB 1040内のスイッチ1021はルータ1006に対応付けられている。
【0099】
一実施形態に従うと、少なくとも1つのデバイス(たとえばスイッチ、ノード等)を、ファブリックマネージャ(図示せず)に対応付けることができる。ファブリックマネージャを使用して、たとえば、サブネット間ファブリックトポロジーを発見し、ファブリックプロファイル(たとえば仮想マシンファブリックプロファイル)を作成し、仮想マシンファブリックプロファイルを構築するための基礎を形成する仮想マシン関連データベースオブジェクトを構築することができる。加えて、ファブリックマネージャは、どのサブネットがどのルータポートを介しどのパーティション番号を用いて通信することを許可されるかについて、法的なサブネット間接続性を規定することができる。
【0100】
一実施形態に従うと、サブネットA内の仮想マシン1などの発信ソースにおけるトラッフィックを、サブネットB内の仮想マシン2などの異なるサブネットを宛先としてそれに向ける場合、トラフィックは、サブネットA内のルータ、すなわち、ルータ1005に向ければよく、そうすると、ルータ1005はこのトラッフィックをルータ1006とのリンクを介してサブネットBに送ることができる。
【0101】
仮想デュアルポートルータ
一実施形態に従うと、デュアルポートルータアブストラクション(dual port router abstraction)は、GRH(グローバルルートヘッダ(global route header))からLR
H(ローカルルートヘッダ(local route header))への変換を、通常のLRHベースのスイッチングの実行に加えて行なう機能を有するスイッチハードウェア実装に基づいてサブネット間ルータ機能を規定することを可能にする簡単な方法を提供することができる。
【0102】
一実施形態に従うと、仮想デュアルポートルータは、対応するスイッチポートの外部で論理的に接続することができる。この仮想デュアルポートルータは、サブネットマネージャ等の標準管理エンティティに対しインフィニバンド規格に準拠したビューを提供することができる。
【0103】
一実施形態に従うと、デュアルポートルータモデルは、異なるサブネットを、各サブネットがサブネットへの進入(ingress)経路におけるパケット転送とアドレスマッピング
とを完全に制御し、かつ、間違って接続されたサブネットのうちいずれのサブネット内のルーティングおよび論理的接続にも影響を与えないように、接続できることを、示している。
【0104】
一実施形態に従うと、間違って接続されたファブリックを含む状況において、仮想デュアルポートルータアブストラクションを使用することにより、サブネットマネージャおよびIB診断ソフトウェア等の管理エンティティが、遠隔サブネットへの意図しない物理的接続の存在下で、正しく作用するようにすることもできる。
【0105】
図11は、一実施形態に従う、高性能コンピューティング環境における2つのサブネッ
ト間の相互接続を示す。仮想デュアルポートルータを用いて構成する前に、サブネットA
1101内のスイッチ1120を、スイッチ1120のスイッチポート1121を通し、物理接続1110を介して、サブネットB 1102内のスイッチ1130に、スイッチ1130のスイッチポート1131を通して接続することができる。このような実施形態において、スイッチポート1121および1131の各々は、スイッチポートとしてもルータポートとしても機能することができる。
【0106】
一実施形態に従うと、この構成の問題は、インフィニバンドサブネット内のサブネットマネージャ等の管理エンティティが、スイッチポートでもありルータポートでもある物理ポートを区別できないことである。このような状況において、SMは、スイッチポートを、このスイッチポートに接続されたルータポートを有するものとして扱うことができる。しかしながら、スイッチポートがたとえば物理リンクを介して別のサブネットマネージャを有する別のサブネットに接続されている場合、サブネットマネージャはディスカバリメッセージを物理リンクに送ることができる。しかしながら、このようなディスカバリメッセージは他方のサブネットでは許可されない。
【0107】
図12は、一実施形態に従う、高性能コンピューティング環境におけるデュアルポート仮想ルータ構成を介した2つのサブネット間の相互接続を示す。
【0108】
一実施形態に従うと、構成後に、デュアルポート仮想ルータ構成を、サブネットマネージャの責任であるサブネットの端部を示す適切なエンドノードが、サブネットマネージャにわかるように、提供することができる。
【0109】
一実施形態に従うと、サブネットA 1201内のスイッチ1220におけるスイッチポートは、仮想リンク1223を介して仮想ルータ1210内のルータポート1211に接続(すなわち論理的に接続)することができる。仮想ルータ1210(たとえばデュアルポート仮想ルータ)は、実施形態ではスイッチ1220の外部にあるものとして示されているが、論理的にはスイッチ1220の中に含めることができ、第2のルータポートであるルータポートII 1212も含み得る。一実施形態に従うと、2つの端部を有し得る物理リンク1203は、サブネットA 1201を、サブネットB 1202に、物理リンクの第1の端部を介し、物理リンクの第2の端部を介し、ルータポートII 1212を介し、サブネットB 1202内の仮想ルータ1230に含まれるルータポートII
1232を介して、接続することができる。仮想ルータ1230はさらに、仮想リンク1233を介してスイッチ1240上のスイッチポート1241に接続(すなわち論理的に接続)することができるルータポート1231を含み得る。
【0110】
一実施形態に従うと、サブネットA上のサブネットマネージャ(図示せず)は、仮想ルータ1210上のルータポート1211を、当該サブネットマネージャが制御するサブネットの終点として検出することができる。デュアルポート仮想ルータアブストラクションは、サブネットA上のサブネットマネージャが、サブネットAを通常のやり方で(たとえばインフィニバンド規格に規定されているように)扱うことを可能にする。サブネット管理エージェント(subnet management agent)レベルにおいて、デュアルポート仮想ルー
タアブストラクションを提供して通常のスイッチポートがSMにわかるようにし、その後、SMAレベルにおいて、当該アブストラクションを提供してこのスイッチポートに接続されている別のポートが存在しこのポートがデュアルポート仮想ルータ上のルータポートとなるようにすることができる。ローカルSMでは、従来のファブリックトポロジーを引続き使用することができ(このトポロジーにおいてSMはポートを標準スイッチポートとみなす)、したがって、SMはルータポートをエンドポートとみなす。物理的接続は、2つの異なるサブネット内のルータポートとしても構成されている2つのスイッチポート間で行なうことができる。
【0111】
一実施形態に従うと、デュアルポート仮想ルータは、物理リンクが間違って同じサブネット内の他のいずれかのスイッチポートに接続される、または、別のサブネットへの接続を提供することを意図していないスイッチポートに接続される可能性があるという問題を、解決することもできる。したがって、本明細書に記載の方法およびシステムは、サブネットの外側にあるものも表現する。
【0112】
一実施形態に従うと、サブネットA等のサブネット内のローカルSMは、スイッチポートを確定し、次に、このスイッチポートに接続されているルータポート(たとえば仮想リンク1223を介してスイッチポート1221に接続されているルータポート1211)を確定する。SMは、ルータポート1211を、当該SMが管理するサブネットの端部とみなすので、SMはディスカバリおよび/または管理メッセージをこのポイントよりも遠くに(たとえばルータポートII 1212に)送ることができない。
【0113】
一実施形態に従うと、上記デュアルポート仮想ルータは、当該デュアルポート仮想ルータが属するサブネット内の管理エンティティ(たとえばSMまたはSMA)によってデュアルポート仮想ルータアブストラクションが完全に管理されるという利点を提供する。管理をローカル側のみにすることにより、システムは外部の独立した管理エンティティを提供する必要がない。すなわち、サブネット間接続の各側は自身のデュアルポート仮想ルータを構成する役割を担う。
【0114】
一実施形態に従うと、遠隔の宛先(すなわちローカルサブネットの外部)に向けられたSMP等のパケットが、上記デュアルポート仮想ルータを介して構成されていないローカルターゲットポートに到着した場合、ローカルポートは、自身はルータポートではないことを示すメッセージを返すことができる。
【0115】
本発明の多数の特徴は、ハードウェア、ソフトウェア、ファームウェア、またはこれらを組合わせたものにおいて、これを用いて、またはこれに支援されて、実施することができる。したがって、本発明の特徴は、処理システム(たとえば1つ以上のプロセッサを含む)を用いて実現し得る。
【0116】
図13は、一実施形態に従う、高性能コンピューティング環境においてデュアルポート仮想ルータをサポートする方法を示す。ステップ1310において、1つ以上のマイクロプロセッサを含む1つ以上コンピュータに、この方法は第1のサブネットを設けることができる。第1のサブネットは複数のスイッチを含み、複数のスイッチは少なくともリーフスイッチを含み、複数のスイッチの各々は複数のスイッチポートを含む。第1のサブネットはさらに、各々が少なくとも1つのホストチャネルアダプタポートを含む複数のホストチャネルアダプタと、各々が複数のホストチャネルアダプタのうちの少なくとも1つのホストチャネルアダプタに対応付けられている複数のエンドノードと、サブネットマネージャとを含み、サブネットマネージャは、複数のスイッチおよび複数のホストチャネルアダプタの一方において実行される。
【0117】
ステップ1320において、この方法は、複数のスイッチのうちの1つのスイッチ上の複数のスイッチポートのうちの1つのスイッチポートを、ルータポートとして構成することができる。
【0118】
スイッチ1330において、この方法は、ルータポートとして構成したスイッチポートを仮想ルータに論理的に接続することができ、この仮想ルータは少なくとも2つの仮想ルータポートを含む。
【0119】
マルチキャスト通信
マルチキャストは、単一のパケットを複数の宛先に配信する機能である。したがって、マルチキャストは、ネットワークファブリックのエンドノード間の通信を簡素化し、その効率を向上させることができる。マルチキャストは、マルチキャストグループの使用を通して実現および管理される。マルチキャストをサポートする各HCA、スイッチ、またはルータは、ゼロ、1つ、または多数のマルチキャストグループに参加する(つまり、メンバーになる)ことができる。マルチキャストグループは、サブネットマネージャなどの管理エンティティによって管理されることができる。
【0120】
マルチキャストグループは、エンドノードの集合であり、それらの各々は、単一のマルチキャストアドレスに送信されるマルチキャストパケットを受信する。各マルチキャストグループは、サブネット固有のマルチキャストLID(ここではMLIDと呼ばれる)およびグローバルに一意なマルチキャストGID(ここではMGIDと呼ばれる)に関連付けられる。マルチキャストグループは、それのMGIDによって定義され、それはマルチキャストグループの作成時にマルチキャストグループに関連付けられている。マルチキャストグループのMGIDは、サブネットマネージャによって割り当てることもできるし、マルチキャストグループの作成時にSMに提供することもできる。MLIDは、マルチキャストグループの作成時にSMによって割り当てられる。複数のMGIDを単一のMLIDに関連付けることができる(つまり、複数のマルチキャストグループが同じMLIDを共有することができる)。ただし、所与のMGIDを同じサブネット上の複数のMLIDに関連付けることはできない。マルチキャストグループのメンバーであるポートのLIDやおよびGIDなど、マルチキャストグループに関するMLID、MGID、およびその他の詳細は、サブネット管理(SA)によって、またはサブネット管理(SA)のためにアクセス可能なデータストアに格納することができる。
【0121】
一実施形態によれば、ローカルサブネットで定義されたマルチキャストグループに関する情報は、サブネット内のスイッチに配信することができる。各スイッチは、受信したマルチキャストパケットのコピーを1つ以上のポートに転送するために用いられるルーティング情報とともに構成され、受信したマルチキャストパケットのコピーは、受信したマルチキャストパケットのMLID/MGIDに対応するマルチキャストグループに含まれる(つまりマルチキャストグループのMGIDに関連付けられる)LIDを有する各HCAポートに転送される。ある場合には、マルチキャストパケットは複製され、コピーを直接HCAポートに送信するポートに転送され、他の場合では、コピーはHCAポートに到達する前に別のスイッチに転送される必要がある。
【0122】
SMは、マルチキャストパケットの配信先となるべきマルチキャストグループ内のすべてのポートを含む単一のスパニングツリーを生成することができる。マルチキャスト転送に参加するサブネット内の各スイッチのマルチキャスト転送テーブル(MFT)が、この場合、スパニングツリーから取得することができる。単一のスパニングツリーを用いてスイッチMFTを導出すると、マルチキャストパケットの重複コピーが既にそのマルチキャストパケットのコピーを処理したスイッチに転送されないことが保証される。
【0123】
マルチキャストパケットは、それのパケットヘッダのDLIDフィールドにMLIDを含むパケットである。スイッチがマルチキャストパケットを受信すると、スイッチはパケットヘッダを調べてDLIDを抽出し、それがマルチキャストグループに対応しているかどうかを判断する。DLIDがマルチキャストグループに対応する(つまり、DLIDフィールドにMLIDが含まれる)と判断されると、スイッチはパケットを複製し、マルチキャストパケットのMLIDが関連付けられているマルチキャストグループに関連付けられている、MFTで指定されているポートの各々(到着ポートを除く)に、そのパケットを送信する。
【0124】
図14は、実施形態による、マルチキャスト通信をサポートする例示的なサブネット1400を示す。サブネットAはノード1401~1408を含む。ノード1401~1408は、それぞれHCA1409~1416を含む。HCA1409~1416は各々ポート、つまりポート1417~1424を含む。ポート1417~1424は、リンク1425~1432を介してスイッチ1450~1453に接続されている。たとえば、ポート1417はリンク1425を介してスイッチ1450に接続され、ポート1418はリンク1426を介してスイッチ1450に接続され、ポート1419はリンク1427を介してスイッチ1451に接続されている。
【0125】
サブネット1400にはSM/SA1460が含まれる。簡略化のために
図15では別個のエンティティとして描かれているが、異なる実施形態に従って、SM/SA1460は、スイッチ1450~1453のいずれかのコンポーネント、ノード1401~1408のいずれか、または図示されていない別のIBデバイスのコンポーネントとして展開することができることを理解されたい。マルチキャストグループ(MCG)1465はSM/SA1460で定義される。MCG1465は、一点鎖線のブロック図形式で描かれている。さらなるポート1417~1419およびポート1421~1423も、それらがMCG1465のメンバーであることを示すために、一点鎖線で示される。逆に、ポート1420および1424は、それらがMCG1465のメンバーではないことを示すために、実線のブロック図形式で描かれている。
【0126】
スイッチ1450は、リンク1440を介してスイッチ1453に相互接続され、リンク1442を介してスイッチ1452に相互接続される。同様に、スイッチ1451は、リンク1441を介してスイッチ1452に相互接続され、リンク1443を介してスイッチ1453に相互接続される。
【0127】
一実施形態によれば、ポート1421がMCG1465を定義するMGIDを含むマルチキャストパケットをネットワークに送信すると、ポート1417~1419ならびにポート1422および1423の各々は、MCG1465のメンバーであることにより、ポート1421によって送信されたマルチキャストパケットのコピーを受信する。
【0128】
図15は、一実施形態による、マルチキャストグループを管理するためにSM/SAによって用いられる例示的なSAデータストアを示す。データストア1500は、リレーショナルデータベースダイアグラムのテーブルとして表され、なぜならば、そのようなダイアグラムは関連するコンポーネント間の関係を示すからである。ただし、
図15は、マルチキャストグループコンポーネント間の関係およびそのようなコンポーネント間の連想マッピングを示すことを意図しており、限定することを意図していない。関連するコンポーネント間の適切な連想マッピングを可能にする任意の好適なデータ構造により、実施形態を提供することができる。実際、IB仕様では、SAの特定の実現例および任意のSAデータストアは未定義のままである。
【0129】
図15に示されるように、SAデータストア1500は、MCGテーブル1540およびLIDテーブル1544を含むことができる。MCGテーブル1540は、ローカルサブネットにおいて各定義されたMCGのMGIDおよび対応するMLIDを含む、ローカルサブネットにおいて定義されたMCGに関する情報を含むことができる。LIDテーブル1544は、各LIDが割り当てられているポートの対応するGUIDなど、サブネットにおけるLIDに関する情報を含むことができる。関係は、クエリが、所与のMGID(つまり、所与のMGIDによって定義されるMCGのメンバーであるすべてのポート)に関連付けられるすべてのLID(エンドポートに割り当てられた)を示すデータを返すことができるように構成することができる。
【0130】
例えば、一実施形態によれば、マッピングテーブルを利用して、ローカルサブネット内のLIDを、LIDが関連付けられているマルチキャストグループのMGIDにマッピングすることができる。引き続き
図15を参照すると、MCGおよびLIDデータは、たとえばマッピングテーブルMCG_LID1542においてマッピングすることができ、ローカルサブネットのエンドポートに割り当てられたLIDは、1つ以上のMGIDにマッピングすることができる。一実施形態によれば、テーブル1540および1542は、関係1550を介して関係付けることができ、テーブル1542および1544は、関係1552を介して関係付けることができる。このような関係が整っていると、SMは、データストアのクエリを介して、どのLIDがどのMGIDに関連付けられているか(つまり、どのポートがどのマルチキャストグループのメンバーであるか)を判断することができる。
【0131】
前述のように、各マルチキャストパケットの単一コピーをすべてのマルチキャストグループメンバーに効率的に転送するために、SMはサブネットトポロジーを通る単一のスパニングツリールートを判断することができる。一実施形態によれば、
図16は、サブネット1600内においてスパニングツリーアルゴリズムを介して判断され得る例示的なルートを示す。前述のように、マルチキャストグループ(MCG)1665はSM/SA 1660によって定義される。MCG1665は、一点鎖線のブロック図形式で描かれている。さらなるポート1617~1619およびポート1621~1623も、それらがMCG1665のメンバーであることを示すために一点鎖線で描かれている。
図16では、マルチキャストトラフィックの配信を処理するべくスパニングツリーに含まれるリンクも一点鎖線で示され、スパニングツリーから除外されたリンクは実線形式で示される。
【0132】
一実施形態によれば、SM1660は、どのエンドポートがMCG1665のメンバーであるかを判断することができる。判断されたエンドポートを用いて、SM1660は、サブネットに注入されたマルチキャストパケットのわずか1つのコピーのみがMCG1665のメンバーである各エンドポートに配信されることを保証するスパニングツリーを判断することができる。例えば、リンク1642、1640、および1643をスパニングツリーに含めることができるが、リンク1641を含める必要はない。リンク1642、1640、および1643を含めると、どのエンドポートがマルチキャストパケットをサブネットに注入するかに関係なく、MCG1665のメンバーである各エンドポートにマルチキャストパケットのコピーが1つだけ配信される。
【0133】
たとえば、ポート1621がマルチキャストパケットをサブネットに注入すると、スイッチ1652によって受信される。次に、スイッチ1652は、スパニングツリーで指定された各リンクにマルチキャストパケットのコピーを転送することができる(マルチキャストパケットが受信されたリンクを除く)。したがって、スイッチ1652は、受信されたマルチキャストパケットのコピーをリンク1642および1630に転送し、(リンク1629を除外することができ、なぜならば、マルチキャストパケットはこのリンクで受信されたからである)。この場合では、ポート1622は、それの、マルチキャストパケットの(唯一の)コピーを、リンク1630を介して受信し、スイッチ1650はリンク1642を介してコピーを受信する。ここから、スイッチ1650も、リンク1642から受信したマルチキャストパケットのコピーをリンク1625、1626、および1640に転送すること(およびリンク1642を除外すること)ができる。したがって、ポート1617および1618は、それぞれリンク1625および1626を介して、それらの、マルチキャストパケットの(唯一の)それぞれのコピーを受信し、スイッチ1653はリンク1640を介してコピーを受信する。このパターンは、SMによって判断されたスパニングツリールートを介して、すべてのエンドポートがマルチキャストパケットのコピーを1つだけ受信するまで継続することができる。
【0134】
一実施形態によれば、SMがマルチキャストトラフィックのために単一のスパニングツリールートを判断すると、SMは、スパニングツリールートの一部である各スイッチのマルチキャスト転送テーブル(MFT)を判断することができる。
図17は、リンク1725~1732およびリンク1740~1743が接続されているスイッチリンクポートを含むスイッチ1750~1753の詳細図を示す。
図17に示すように、リンク1725~1732は、それぞれスイッチポート1733~1740に接続される。同様に、リンク1740~1743は、それぞれ、一端がポート1760~1763に、他端がスイッチポート1764~1767にそれぞれ接続されている。前の図と整合して、SM1765(図示せず)のスパニングツリールートに含まれるリンクに接続されるスイッチポートは一点鎖線で示され、スパニングツリーから除外されたリンクに接続されるポートは実線形式で示される。
【0135】
スイッチのMFTを判断する際に、SMは、マルチキャストトラフィックの配信のためにスパニングツリールートに含まれるリンクに接続される所与のスイッチの各ポートを判断することができる。例として、
図17を参照すると、スイッチ1750のMFTはリンク1733、1734、1760、および1762を含み得、なぜならば、MCG1765のメンバーである各エンドポートがマルチキャストパケットのコピーを確実に受信するために、受信したマルチキャストパケットのコピーをこれらの各ポート(リンクを受信したポートを除く)から転送しなければならないからである。スイッチ1751に関しては、ポート1735および1763はスイッチ1751のMFTエントリに含まれ、ポート1736および1761はMFTエントリから除外される。MFTはMLIDによってインデックスが付けられ、特定のMFTエントリには、MLIDが関連付けられるスパニングツリーに対応するポートベクトルが含まれる。
【0136】
図18は、一実施形態による、マルチキャストグループのメンバーにマルチキャストパケット配信を提供する方法のフローチャートを示す。ステップ1810で、サブネットマネージャは、マルチキャストグループのメンバーである各エンドポートを判断することができる。ステップ1820で、サブネットマネージャは、マルチキャストグループのメンバーである各エンドポートにマルチキャストパケットのコピーを配信する単一のスパニングツリーを判断することができる。ステップ1830で、サブネットマネージャは、スパニングツリーによって判断されるように、マルチキャストトラフィックを転送するローカルサブネット内の各スイッチのマルチキャスト転送テーブルを判断することができる。ステップ1840で、SMは、各それぞれのスイッチごとに判断される転送テーブルでマルチキャストトラフィックを転送する各スイッチを更新することができる。
【0137】
SAアクセスに対する必要性を低減するための同種のファブリック属性
InfiniBand(IB)仕様で定義されているサブネットマネージャ(SM)およびサブネットアドミニストレータ(SA)は、IBサブネットディスカバリおよび初期化ならびに探索および登録サービスを実行する中央集中型の方法を提供する。
【0138】
IBクライアントとSAとの間の通信のためのプロトコルは、SAとIBクライアントとの両方が最小機能IBエンドポート実装形態を表すことができるように設計される。したがって、仕様では、256バイトのUD(信頼できないデータグラム)パケットのみがプロトコルの実現に用いられる。
【0139】
一実施形態によれば、サブネットマネージャ(SM)は、それぞれのサブネットを通るパスを確立/定義する責任を担い得る。これは、たとえば、スイッチ転送テーブル(線形転送テーブル)、LIDなどを設定することができるサブネット管理パケット(SMP)を介して行なう。サブネットアドミニストレータ(SA)は、パス解決要求GMP(一般
的な管理パケット)への応答を担い得る。たとえば、パスレコードの要求で、SAは、応答することができ、ローカルルートヘッダ(DLID、SLID、SL)、グローバルヘッダ(DGID、SGID)、およびMTU、レート、レイテンシ、P_Keyなどの他のプロパティを含むことができる。
【0140】
通信パラメータが関連するIBファブリックおよびピアノードの機能ならびに関連付けられる管理ポリシーと整合するようにするために、IBクライアントは、関連するL2アドレス情報(LID)、および最大MTU(最大伝送単位)、最大レート、サービスレベル(SL)などの通信パラメータの両方を得るために、SAからパスレコードを取得するよう期待される。
【0141】
関連するピアノードが到達可能であり、同じマスターSM/SAインスタンスがサブネットを担当している限り、SAからクライアントによって取得されたパスレコードおよびその他の情報は変更されないことが期待されるが、一般的には、新たなマスターSM/SAインスタンスがアクティブになるたびに、キャッシュされた情報をリフレッシュする必要がある。
【0142】
マルチキャストグループメンバーシップの場合、新たなSMが新たなMGIDをMLIDマッピングに割り当てることがあるため、新たなマスターSM/SAがアクティブなときは常にどのマルチキャストメンバーシップも(再)参加させる内在的な必要性がある。
【0143】
特定の実施形態では、IBクライアントが、マスターSM/SAの変更にわたってもパスレコードおよびマルチキャストグループ情報を楽観的にキャッシュするようマスターSM/SAに対する任意の変更が可能になると、IBクライアントがパスレコードマルチキャストグループメンバーシップ情報をキャッシュすることが可能であり得る。ただし、マルチキャストメンバーシップの場合、キャッシュされた情報がもはや有効ではない例外ケースを選別することは、さまざまな競合状態のため、簡単ではない場合がある。
【0144】
SRIOVベースのVM展開の場合、各そのようなVMが物理サーバとして同様のタイプのSA要求(たとえば、パスレコードの照会)を実行する限り、SA要求トラフィックの問題は拡大される。つまり、各クライアントが、システム内でエンドノードとして機能する(つまり、非SRIOV環境で物理サーバとして機能する)単一の仮想マシンを含み得る仮想化環境では、それは、従来であればそのようなSA要求を必要とするであろうイベントでSA要求を介してSAへのトラフィックを大幅に増大させ得る。
【0145】
スイッチ管理インターフェイスに接続される低パフォーマンスプロセッサモジュールに基づく実装など、低能力SM/SA実装例では、SA要求負荷の中程度の増大でも、SMおよび全体としてシステムの両方について深刻なオーバーヘッドおよび前進の低減を引き起こし得る。
【0146】
高速フェールオーバーおよびリカバリが重要な高可用性(HA)システムの場合、遅延は問題を表わす。たとえば、1秒未満のフェールオーバー時間が目標である場合、動作可能なノード間の物理的な接続が失われない限り、動作可能な計算ノードが通常の動作および他の動作可能なノードとの通信をどのような中断もなく継続することができることが重要である。したがって、すべてのノードがSAと対話する必要なくユニキャストトラフィックとマルチキャストトラフィックとの両方に対して既存のアドレスおよびパス情報を引き続き用いることができること、および唯一の接続の中断が生じるのは、SMがファブリック内の障害のあるリンクのために再ルーティングまたは再初期化を実行する必要がある場合であることが、望ましい。
【0147】
また、本格的なHCAを伴うハイエンドサーバに基づくSM/SA実装例でも、SA通信に256バイトのMAD(管理データグラム)を用いると、パフォーマンスおよびスケーラビリティが大幅に制限される可能性がある。そのような場合、SA要求処理のための最適なキャッシングおよび非常に高いパフォーマンスであっても、新たなマスターSMとともにマルチキャストメンバーシップを再登録する必要性は、動作可能なスイッチおよびリンクによって接続される動作可能なノード間の接続性の不必要な中断を表わし得る。
【0148】
IBクライアントとSM/SAインフラストラクチャとの間の対話の最適化に関連する2つの主な目標がある。スイッチが組み込まれた(ローエンド)SM/SA実装を伴う中小規模のシステムの場合、目標は、可能な限り、SMが、SA要求を処理したり、またはそうでない場合に物理サーバや仮想マシンなどのIBクライアントと通信したりする必要なく(つまり、SMAレベルでのディスカバリおよび初期化動作を越えて)、できるだけ早くサブネットを発見して初期化することができることである。ハイエンドのSM/SA実装を伴う大規模システムの場合、目標は、SM/SAが最適なIB通信メカニズムを利用する方法で関連情報をIBクライアントに配信できることであり、また、スケーラビリティを提供し、非常に大規模なクラスタドメインでも大規模なマルチキャストストームを防止する階層実現を有する能力を提供もすることである。
【0149】
一実施形態によれば、デフォルトで、各IBクライアントは、SAに対して、許可されたレート、MTU、SL、パーティション、LIDなどに関してリモートエンドポートと通信する方法を記述するパスレコードを取得するように要求することができる。
【0150】
一実施形態によれば、一部のIBファブリック構成では、リモートポートのアイデンティティから独立したパラメータの変動はない。代替的に、すべてのノードで用いることができる充分に定義された共通の最大値が存在するか、またはノードのペアが中間のファブリック接続性を考慮せずに関連する最大値を交換およびそれに合意できるようにファブリックを構築し、それによって、SAにそのようなパラメータを取得するよう要求する必要性を回避することができる。
【0151】
一実施形態によれば、クライアントノードが上記のように振る舞うべきであることを指定することが可能である。ただし、これはエラーが発生しやすく、関連する前提条件に違反するファブリックの変更が動的に検出されない可能性があることを意味する。
【0152】
一実施形態によれば、ポート毎のSMAレベル属性(例えば、「同種ファブリック」バイナリフラグ属性)を導入することができる。このような属性により、サブネットマネージャは、簡易スキームを用いることができるかどうか、およびローカルポートパラメータに関連する制約(それがある場合)について、関連するクライアントに指示する情報をクライアントポートレベルで動的に維持することができる。従来のポートレベルイベントを用いて、動的な変更についてIBクライアントに非同期的に通知することもできる。
【0153】
一実施形態によれば、エンジニアドシステム(ES)プライベートファブリックが同種のHCAおよびスイッチ機能に基づいており、通常のファットツリートポロジーが使用されている場合、通常の場合に適切なパスパラメータが用いられることを保証するためにSM/SAによって定義される必要のあるパス属性は一般的にはない。たとえば、サポートされるデータレート、MTU、およびSLのセットはローカルHCAポートの機能によって定義することができ、通信のための関連するパーティションはローカルHCAに対するパーティションセットアップによって定義されるであろう。
【0154】
一実施形態によれば、ESプライベートファブリックのこの態様は、関連するESホストノードで用いられるホストスタックの構成パラメータであり得る。ただし、特別なシス
テム構成とは無関係に用いることができる、より柔軟なスキームは次のとおりである。
【0155】
一実施形態によれば、SMが、ファブリック内のすべてのホストノードならびにホストノードを接続するスイッチおよびスイッチポートがすべて同じ機能をサポートすると判断すると、この状態を明記する特別なSMAフラグ属性(例えば、「同種ファブリック」属性フラグ)を、システムのさまざまなHCAポートに対して設定することができる。(HCAポートには、そもそもこの属性に対するサポートを示す機能フラグを含めることもできる。)
一実施形態によれば、このフラグは、ポートが現在メンバーとして設定されている各パーティションの追加属性としてさらに含めることができる。
【0156】
一実施形態によれば、スキームの柔軟性を改善するために、そのような属性を拡張して、すべてのパス属性について(グローバルに、またはパーティションごとに)最大値を含めることができ、最大機能が、異なるホストノードに対して異なり得る場合でも、ホストノードが、すべてのピアによってサポートされる値を用いることができるようにする態様で、SMが不均一なケースも処理できるようになる。このようにして、ホストノードは、ローカルポート情報のみに基づいて、SAクエリを実行する必要なく、リモートピアのアイデンティティおよびアドレスに依存しないすべてのパス情報を判断することができる。
【0157】
一実施形態によれば、構成パラメータおよび/または新たなSMA属性の代替は、ノードごとに1つまたは少数のSA要求を用いてエンドノードがサブネットまたはパーティションごとに「デフォルト最大パスパラメータ」を取得できるであろう新たなタイプのSAクエリを導入することであろう。‐それでも、多数のノードがある場合、それは依然として起動時に大きな負荷を表わすであろう。
【0158】
一実施形態によれば、いくつかの追加のSMA/PortInfo(ポート情報)属性を含めることができる。
【0159】
一実施形態によれば、「Homogenous Fabric Attributes(同種ファブリック属性)」をサポートするためのポート機能をサポートすることができる。この属性のデフォルト値は偽である。それは、リンクアップでサポートSMAにより真にセットされることができる。真にセットされると、サポートマスターSMが、関連するSMAプロパティを更新してもよい。
【0160】
一実施形態によれば、「HomogeneousSubnet(同種サブネット)」フラグをサポートす
ることができる。このフラグのデフォルト値は偽とすることができる。このフラグは、このローカルポートから潜在的に見えるローカルサブネット内のすべてのエンドポートが同じパスプロパティを有し、すべての中間リンクが同じプロパティをサポートする場合に、サポートマスターSMによって設定されることができる。真にセットされると、ローカルIBクライアントは、ローカルポートプロパティから、関連するパスプロパティを安全に導出することができる。
【0161】
一実施形態によれば、「SemiHomogeneousSubnet(準同種サブネット)」フラグをサポ
ートすることができる。このフラグのデフォルト値は偽とすることができる。このフラグは、中間リンクが、常に、ローカルポートがサポートする値とローカルポートから見えるローカルサブネット内のピアポートがサポートする値との間の最小値と同じパスプロパティをサポートする場合に、サポートマスターSMによって設定されることができる。フラグの値が真にセットされている場合、ローカルポートは、関連するピアポートと直接、ネゴシエーションに基づいて、パスプロパティを判断することができる。
【0162】
一実施形態によれば、有効フラグ(真/偽)、MTU(法的MTU値)、レート(法的レート値)の「SubnetGlobalMinimalPathParameters(サブネットグローバル最小パスパ
ラメータ)」レコードをサポートすることができる。これは、サポートマスターSMによって、このローカルポートから潜在的に見えるローカルサブネット内の任意のエンドポートおよび任意の中間リンクによってサポートされる最小値に設定することができる。真にセットされると、ローカルIBクライアントは、ローカルサブネット内の通信にこれらのパスプロパティを用いることを選択することができる。
【0163】
一実施形態によれば、「HomogeneousFabric(同種のファブリック)」フラグをサポー
トすることができる。このフラグのデフォルト値は偽とすることができる。このフラグは、ローカルポートから潜在的に見えるすべてのエンドポートが同じパスプロパティを有し、すべての中間リンクが同じプロパティをサポートする場合に、サポートマスターSMによって設定されることができる。真にセットされると、ローカルIBクライアントはローカルポートプロパティからすべてのパスプロパティを安全に導出することができる。
【0164】
一実施形態によれば、「SemiHomogeneousFabric(準同種ファブリック)」フラグをサ
ポートすることができる。このフラグのデフォルト値は偽とすることができる。このフラグは、中間リンクが、常に、ローカルポートがサポートする値とローカルポートから見えるピアポートがサポートする値との間の最小値と同じパスプロパティをサポートする場合に、サポートマスターSMによって設定されることができる。真にセットされると、ローカルIBクライアントは、直接、関連するピアポートと、ネゴシエーションに基づいて、パスプロパティを判断することができる。
【0165】
一実施形態によれば、「FabricGlobalMinimalPathParameters(ファブリックグローバ
ル最小パスパラメータ)」‐有効フラグ(真/偽)、MTU(法的MTU値)、レート(法的レート値)のレコードをサポートすることができる。これは、サポートマスターSMによって、このローカルポートから潜在的に見える任意のエンドポートおよび中間リンクによってサポートされる最小値に設定することができる。真にセットされると、ローカルIBクライアントは、通信にこれらのパスプロパティを用いることを選択することができる。
【0166】
図19は、一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートするシステムを示す。
【0167】
一実施形態によれば、
図19は、複数のノード、ノードA~ノードE、1910~1914を含む簡略化されたインフィニバンドファブリックを示し、それらは、多数のスイッチ1902およびサブネットマネージャ/サブネットアドミニストレータ1901を含むInfiniBandファブリック1900を介して(それぞれ)ホストチャネルアダプタ1920~1924を介して相互接続される。
【0168】
一実施形態によれば、サブネットマネージャ/サブネットアドミニストレータ1901は、複数のホスト(例えば、ノードA~E)および複数のスイッチ1902が同じ機能セットをサポートすると判断することができる。複数のホストおよび複数のスイッチが同じ機能セットをサポートすると判断すると、サブネットマネージャは、フラグA(図ではフラグAを含む円として表示)などのSMAフラグを設定する。このフラグはある状態をホストチャネルアダプタポートごとに設定することができることを示す。フラグAは、上述の同種のファブリック属性などの1つ以上の属性を含むことができる。フラグAのデフォルト値は偽にセットされることができ、それは、さまざまなポートが同じ機能セットをサポートすると判断されると、SA/SMによって真に変更することができる。
【0169】
一実施形態によれば、SA/SMは、IBファブリック内の異なるポート間およびHCAポートで同じである機能セットを判断することができる。この機能セットは、サポートされるデータレート、MTU(最大伝送単位)、サポートされるリンク幅、サポートされるリンク速度、およびサポートされる拡張リンク速度のセットで構成されるが、これらに限定されない。(実施形態では、異なるリンク速度および幅の組み合わせが同じデータレートを表してもよいことに留意されたい。したがって、パス情報の観点からは、レートのみが関係する。ただし、SMはすべての速度と幅との組み合わせを相関させて、関係するレートセットを判断する必要がある。)
一実施形態によれば、フラグAは、「Homogenous Fabric Attributes」をサポートするためにポート機能を反映/含むことができ、サポートされることができる。そのような状況におけるフラグAのデフォルト値は偽である。それは、リンクアップでサポートSMAにより真にセットされることができる。真にセットされると、サポートマスターSMが、関連するSMAプロパティを更新してもよい。
【0170】
一実施形態によれば、フラグAは「HomogeneousSubnet」フラグを反映/含むことがで
きる。このフラグのデフォルト値は偽とすることができる。このフラグは、ローカルポートから潜在的に見えるローカルサブネット内のすべてのエンドポートが同じパスプロパティ(たとえば、MTU、サポートされるデータレート)を有し、すべての中間リンクが同じプロパティをサポートする場合に、サポートマスターSMによって設定されることができる。真にセットされると、ローカルIBクライアントは、従来のIBファブリックよりもSAへの要求が少ない状態で、ローカルポートプロパティから関連するパスプロパティを安全に導出することができる。
【0171】
一実施形態によれば、フラグAは、「SemiHomogeneousSubnet」フラグを反映/含むこ
とができる。このフラグのデフォルト値は偽である。このフラグは、エンドノード(ローカルポートおよびリモートポート)間の中間リンクが、ローカルポートがサポートする値とローカルポートサポートから見えるローカルサブネット内のピアポートがサポートする値との間の最小値と同じパスプロパティをサポートする場合に、サポートマスターSMによって設定されることができる。フラグの値が真にセットされると、ローカルポートは、直接、関連するリモートポートと、ネゴシエーションに基づいて、パスプロパティを判断することができる。
【0172】
一実施形態によれば、フラグAは、有効フラグ(真/偽)、MTU(法的MTU値)、レート(法的レート値)の「SubnetGlobalMinimalPathParameters」レコードを反映/含
み、サポートされることができる。これは、サポートマスターSMによって、このローカルポートから潜在的に見えるローカルサブネット内の任意のエンドポートおよび任意の中間リンクによってサポートされる最小値に設定することができる。真にセットされると、ローカルIBクライアントは、ローカルサブネット内の通信にこれらのパスプロパティを用いることを選択することができる。
【0173】
一実施形態によれば、フラグAは、「HomogeneousFabric」フラグを反映/含むことが
でき:このフラグのデフォルト値は偽とすることができる。このフラグは、ローカルポートから潜在的に見えるすべてのエンドポート(ローカルポートのサブネット外のものを含む)が同じパスプロパティを有し、すべての中間リンクが同じプロパティをサポートする場合に、サポートマスターSMによって設定されることができる。真にセットされると、ローカルIBクライアントはローカルポートプロパティからすべてのパスプロパティを安全に導出することができる。
【0174】
一実施形態によれば、フラグAは、「SemiHomogeneousFabric」フラグを反映/含むこ
とができる。このフラグのデフォルト値は偽とすることができる。このフラグは、中間リ
ンクが、常に、ローカルポートがサポートする値とローカルポートから見えるピアポートがサポートする値との間の最小値と同じパスプロパティをサポートする場合に、サポートマスターSMによって設定されることができる。真にセットされると、ローカルIBクライアントは、直接、関連するピアポートと、ネゴシエーションに基づいて、パスプロパティを判断することができる。
【0175】
一実施形態によれば、フラグAは、「FabricGlobalMinimalPathParameters」フラグを
反映/含むことができる。このフラグは、有効フラグ(真/偽)、MTU(法的MTU値)、レート(法的レート値)のレコードを含むことができ、サポートされることができる。これは、サポートマスターSMによって、このローカルポートから潜在的に見える任意のエンドポートおよび任意の中間リンクによってサポートされる最小値に設定することができる。真にセットされると、ローカルIBクライアントは、通信にこれらのパスプロパティを用いることを選択することができる。
【0176】
図20は、一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートするシステムを示す。
【0177】
より詳細には、この図は、ノード1 2010、ノード2 2020、およびノード3
2030を含むいくつかのノードを備える例示的なサブネットを示し、各ノードはホストチャネルアダプタ、すなわちHCA1 2011、HCA2 2021、およびHCA3 2031を介して、切り換えられたファブリックに接続される。ノードは、それぞれのHCAを介して、スイッチ1 2040やスイッチ2 2041などの多数のスイッチを介して相互接続される。
【0178】
一実施形態によれば、サブネットの各メンバー(HCAおよびスイッチ)はすべて同じ「タイプ」を含むことができ、これらのサブネットメンバーの各々上の各ポートは、同じ機能、例えばサポートされるデータレート、MTU(最大伝送単位)、サポートされるリンク幅、サポートされるリンク速度、およびサポートされる拡張リンク速度などをサポートすることを意味する。
【0179】
図21は、一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートするシステムを示す。
【0180】
より詳細には、この図は、ノード1 2110、ノード2 2120、およびノード3
2130を含むいくつかのノードを備える例示的なサブネットを示し、各ノードはホストチャネルアダプタ、すなわちHCA1 2111、HCA2 2121およびHCA3
2131を介して、切り替えられたファブリックに接続される。ノードは、それぞれのHCAを介して、スイッチ1 2140やスイッチ2 2141などの多数のスイッチを介して相互接続される。
【0181】
一実施形態によれば、サブネットの異なるメンバー(HCAおよびスイッチ)は異なる「タイプ」を含むことができ、同じタイプのサブネットのメンバーは同じ機能セットをサポートするが、異なるタイプのメンバーは同じ機能セットをサポートしないことを意味する。
【0182】
たとえば、図のタイプAのスイッチのホストチャネルアダプタは第1の最大データレートおよび第1の最大伝送単位をサポートし、タイプBのホストチャネルアダプタおよびスイッチは同じ第1の最大データレートおよび異なる第2の最大伝送単位をサポートする。このような状況では、フラグ、「SemiHomogeneousSubnet」フラグは、エンドノード(ロ
ーカルポートおよびリモートポート)間の中間リンクが、ローカルポートがサポートする
値とローカルポートから見えるローカルサブネット内のピアポートがサポートする値との間の最小値と同じパスプロパティをサポートする場合に、サブネットマネージャによって設定されることができる。フラグの値が真にセットされると、ローカルポートは、直接、関連するリモートポートと、ネゴシエーションに基づいて、パスプロパティを判断することができる。
【0183】
図22は、一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートするシステムを示す。
【0184】
より具体的には、この図は、ノード1 2210、ノード2 2220、ノード3 2230、ノード4 2215、ノード5 2225、およびノード6 2235を含む複数のノードを備える例示的なサブネットを示しており、各ノードは、ホストチャネルアダプタ、つまりHCA1 2211、HCA2 2221、およびHCA3 2231、HCA4 2216、HCA5 2226、およびHCA6 2236を介して、切り替えられたファブリックに接続される。ノードは、それぞれのHCAを介して、スイッチ1 2240、スイッチ2 2241、スイッチ3 2242、スイッチ4 2243、スイッチ5 2244、スイッチ6 2245などの多数のスイッチを介して相互接続される。
【0185】
一実施形態によれば、スイッチは、いくつかのレベルで配置することができる。ここでは、スイッチは2つのレベルに配置され、レベル0はスイッチ1~4を含み、レベル1はスイッチ5~6を含む。
【0186】
一実施形態によれば、サブネットの異なるメンバー(HCAおよびスイッチ)は異なる「タイプ」を含むことができ、同じタイプのサブネットのメンバーは同じ機能セットをサポートするが、異なるタイプのメンバーは同じ機能セットをサポートしないことを意味する。たとえば、「タイプB」のスイッチおよびHCAは、「タイプA」のスイッチおよびHCAよりも高い能力であることができる(つまり、より大きなMTU、最大データレート、リンク幅などをサポートすることができる)。
【0187】
一実施形態によれば、次に、サブネットマネージャは、いくつかの異なるパスに沿って進むことができる。
【0188】
一実施形態では、サブネットマネージャは、「タイプB」のすべてのスイッチおよびHCAが単一のサブネットに属し、「タイプA」に属するスイッチおよびHCAが異なるサブネットに属すると判断することができる。次に、SMは「サブネットB」内の各ポートにHomogenousSubnetフラグでフラグを立て、「サブネットA」内の各ポートに同様にフラグを立てることができる。
【0189】
ある実施形態では、サブネットマネージャは、「SemiHomogeneousSubnet」フラグを設
定することができる。これは、エンドノード(ローカルポートおよびリモートポート)間の中間リンクが、ローカルポートがサポートする値とローカルポートから見えるローカルサブネット内のピアポートがサポートする値との間の最小値と同じパスプロパティをサポートするからである。フラグの値が真にセットされると、ローカルポートは、直接、関連するリモートポートと、ネゴシエーションに基づいて、パスプロパティを判断することができる。
【0190】
一実施形態によれば、サブネットマネージャは、有効フラグ(真/偽)、MTU(法的MTU値)、レート(法的レート値)の「SubnetGlobalMinimalPathParameters」レコー
ドを設定することができ、サポートされることができる。これは、サポートマスターSM
によって、ローカルポートから潜在的に見えるローカルサブネット内の任意のエンドポートと任意の中間リンクとでサポートされる最小値に設定されることができる。真にセットされると、ローカルIBクライアントは、ローカルサブネット内の通信にこれらのパスプロパティを用いることを選択することができる。
【0191】
図23は、一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートする方法のフローチャートである。
【0192】
一実施形態によれば、ステップ2301で、この方法は、ファブリックディスカバリを開始および実行することができる。
【0193】
一実施形態によれば、ステップ2302で、この方法は、サブネット/ファブリック内のすべてのHCAが同じ最大機能を有するかどうか、およびすべてのスイッチも少なくともそれらの機能をサポートするかどうかを判断することができる。
【0194】
一実施形態によれば、ステップ2303で、この方法は、HCAとスイッチとの両方で同じ最大機能がサポートされているかどうかを判断することができる。
【0195】
一実施形態によれば、ステップ2304で、HCAとスイッチとの両方で同じ最大機能がサポートされる場合、ファブリックは初期化され、すべてのエンドノード(少なくとも、このような新しい属性をサポートするすべてのエンドノード)について<<同種ファブリック>>(またはSMがサブネットをただ見ている場合の同種サブネット属性)を反映することができる。
【0196】
一実施形態によれば、ステップ2305で、同じ最大機能がサポートされない場合、この方法は、同じタイプのすべてのHCAが同じ最大機能をサポートするスイッチを介して同じタイプの他のすべてのHCAと通信することができるかどうかを判断することができる。
【0197】
一実施形態によれば、ステップ2306で、この方法は、同じタイプのHCA間でそのような同じ最大パス機能がサポートされているかどうかを判断することができる。
【0198】
一実施形態によれば、ステップ2307で、同じタイプのHCA間で同じ最大パス機能がサポートされる場合、ファブリックを初期化して、すべてのエンドノード(そのような新たな属性をサポートする少なくともすべてのエンドノード)について<<準同種ファブリック>>を反映させることができる。
【0199】
一実施形態によれば、ステップ2308で、同じタイプのHCA間で同じ最大パス機能がサポートされない場合、ファブリックを初期化して、すべてのエンドノード(そのような新たな属性をサポートする少なくともすべてのエンドノード)について<<グローバル最小パスパラメータ>>を反映させることができる。
【0200】
図24は、一実施形態による、高性能コンピューティング環境においてSAアクセスの必要性を低減するために同種のファブリック属性をサポートする方法のフローチャートである。
【0201】
ステップ2410で、この方法は、1つ以上のマイクロプロセッサにおいて、第1のサブネットを提供することができ、第1のサブネットは複数のスイッチを含み、この1つ以上のスイッチは少なくともリーフスイッチを含み、複数のスイッチの各々は、複数のスイ
ッチポートのうちの少なくとも1つのスイッチポートを含み、第1のサブネットは、さらに、複数のホストチャネルアダプタを含み、各ホストチャネルアダプタは、複数のホストチャネルアダプタポートのうちの少なくとも1つのホストチャネルアダプタポートを含み、複数のホストチャネルアダプタは複数のスイッチを介して相互接続され、第1のサブネットは、さらに、サブネットマネージャを含み、サブネットマネージャは、複数のスイッチおよび複数のホストチャネルアダプタの一方で実行される。
【0202】
ステップ2420で、この方法は、サブネットマネージャが、複数のホストチャネルアダプタポートのセットと複数のスイッチのセットとが同じ機能のセットをサポートする、と判断することができる。
【0203】
ステップ2430で、この方法は、前記判断で、サブネットマネージャが、SMA(サブネット管理エージェント)フラグ、複数のホストチャネルアダプタポートのセットに対してある条件を設定することができることを示すフラグを構成することができる。
【0204】
同種のファブリック属性に基づいたARP応答およびピアツーピアネゴシエーションから導出されるパスレコード
一実施形態によれば、IB固有のアイデンティティ情報の判断がARP(アドレス解決プロトコル)のようなブロードキャストベースのクエリメカニズムに基づく限り、リモートポート固有のIBアドレス情報は、ソースGIDとソースLIDとの両方を含むIBマルチキャストメッセージが受信されるたびに、適切に定義される。
【0205】
一実施形態によれば、このリモートポート固有の情報は、その場合、同種のファブリック」属性/フラグによって定義される情報と組み合わされて、リモートポートのフルパスレコードを形成することができる。
【0206】
一実施形態によれば、「同種のファブリック」フラグ属性自体または追加の属性を用いて、通信を確立するときに宛先アドレスとして用いることができるという意味ですべてのソースIBアドレスが可逆的であることを指定することができる。
【0207】
実施形態によれば、さらに、マルチキャストベースのアドレス解決プロトコルとユニキャストベースの通信管理プロトコルとの両方を用いて、「同種のファブリック」属性によって定義される情報を増強するために用いることができるポート固有のパスパラメータを表すことができる。
【0208】
一実施形態によれば、上述のパス情報に加えて、SAパスレコードによって定義される追加情報は、GIDに関する関連ピアポートのアイデンティティおよびLIDに関するサブネットローカルアドレスである。
【0209】
一実施形態によれば、汎用RDMA CM(接続マネージャ)ベースの接続の場合、アドレス解決はパーティションの範囲内のIPアドレスに基づき、IPアドレスからGIDへのマッピングはブロードキャストベースのARPプロトコルを介して定義される。
【0210】
一実施形態によれば、単一のサブネット内では、各HCAポートに単一のLIDが割り当てられている限り、ピアHCAポートのサブネットローカル宛先LIDアドレスは、最初のARP要求マルチキャストパケットおよび対応するARP応答ユニキャストパケットの両方におけるソースLIDアドレスに基づいて充分に定義される。
【0211】
一実施形態によれば、上記で定義された同種のファブリック/サブネットフラグ(または構成パラメータ)からの値で定義されたパスレコードパラメータと、IPoIB AR
P要求および応答によって定義されるGIDおよびSLID情報との組み合わせに基き、一般にパスレコードまたはパス関連情報を取得するSA要求の追加的必要性はない。
【0212】
一実施形態によれば、マルチサブネットファブリックの場合、GID情報は依然としてIPoIB ARPプロトコルによって十分に定義される。ただし、カプセル化IBパケットのSLID情報は、元の送信元を定義しなくなり、パケットをローカルサブネットへの入力パスで転送したIB‐IBルータポートのLIDを定義する。‐これは、元のマルチキャスト要求と後のユニキャスト応答との両方に適用される。
【0213】
実施形態によれば、依然として、全体的なサブネット間ルーティングがサブネット境界を越えた可逆的パスを許可する限り、ユニキャストトラフィックのDLIDとしてルータSLIDを用いると、依然として、完全なパスレコード情報が、同種のファブリックフラグからの情報との組み合わせで、提供される。次に、接続されているさまざまなサブネットにおいてSM間で同種のファブリックフラグを同期させる必要があるであろう。
【0214】
一実施形態によれば、IPoIB ARPプロトコル(またはRDMA CMプロトコル)は、ピアノードが「グローバル」最大値を超えるであろう相互パラメータ値を交渉し、それらに合意できるように、ローカルの同種ファブリック属性を含むように拡張することができる。特に、これにより、異なる速度インターフェイスを有するノードの異なる「サブファブリック」(例えば、QDR(クアドラプルデータレート)ベースのサブファブリックのEDR(拡張データレート)との組み合わせ、または、同じ、より速い速度のノードの接続が常にこの高速度をサポートするスイッチ/ルータのみを介するであろうHDR(ハイデータレート)ベースのサブファブリック)が可能になるであろう。
【0215】
一実施形態によれば、様々なPortInfo(ポート情報)属性を定義することができる。
一実施形態によれば、そのような属性の1つは、「AllSubnetLocalChannelAdapterLIDsUsable(すべてのサブセットローカルチャネルアダプタLID使用可能)」フラグとすることができる。このフラグは真/偽フラグにすることができ、デフォルトで偽にセットされる。このフラグは、ローカルポートから潜在的に見えるローカルサブネット内のCA(チャネルアダプタ)ポートに関連付けられるすべてのLIDが有効なDLIDを表す場合に、サポートマスターSMによって設定されることができる。真の場合、ローカルIBクライアントは、ローカルサブネットのリモートCAポートと通信するときに、リモートCAポートから受信した任意のソースLIDを宛先LIDとして用いることができる。
【0216】
一実施形態によれば、そのような属性の1つは、「RouterSourceLIDsReversible(ルータソースLID可逆)」フラグであることができる。このフラグは真/偽フラグにすることができ、デフォルトで偽にセットされる。このフラグは、リモートサブネットのエンドポートからパケットを転送するときにローカルサブネットのルータポートによって生成されるすべてのソースLIDを用いてリモートサブネットの関連のエンドポートに到達することができる場合に、サポートマスターSMによって、設定されることができる。真の場合、ローカルIBクライアントは、リモートサブネットのリモートCAポートと通信するときに、CAポートから受信した任意のパケットのソースLIDを宛先LIDとして用いることができる。
【0217】
一実施形態によれば、新たに定義された様々な通信管理プロトコルの追加を提供することができる。
【0218】
一実施形態によれば、そのような方法の1つは、新たな通信管理(CM)方法(メッセージタイプ)である「PortAndNodeAttributeRequestMessage(ポートおよびノード属性要求メッセージ)」とすることができる。メッセージには、送信ポートが表す最大パスパラ
メータ(レート、MTUなど)、および送信ポートに関する追加情報(プラットフォーム固有の情報も含めることができる)が含まれる。この方法は、LIDが既知であるリモートポートへの他の通信を開始する前に、SAパス要求のピアツーピアベースの置換として用いることができる。SAへのパスクエリと同様に、リモートポートが依然として利用可能な限り、受信した情報をキャッシュし、複数の接続にわたって再利用することができる。
【0219】
一実施形態によれば、そのような方法の1つは、新たなCMメソッド(メッセージタイプ)である「PortAndNodeAttributeResponseMessage(ポートおよびノード属性応答メッ
セージ)」とすることができる。メッセージには、応答ポートが表す最大パスパラメータ(レート、MTUなど)、および応答ポートに関する追加情報(プラットフォーム固有の情報も含めることができる)が含まれる。SAへのパスクエリと同様に、リモートポートが依然として利用可能な限り、受信した情報をキャッシュし、複数の接続にわたって再利用することができる。
【0220】
図25は、高性能コンピューティング環境で同種のファブリック属性に関するアドレス解決プロトコル(ARP)応答およびピアツーピアネゴシエーションから導出されたパスレコードを提供するシステムを示す。
【0221】
一実施形態によれば、この図は、複数のノード、ノードA~ノードE、2510~2514を含む簡略化されたInfiniBandファブリックを示し、複数のノードは、多数のスイッチ2502およびサブネットマネージャ2501を備えるInfiniBandファブリック2500を通って(それぞれ)ホストチャネルアダプタ2520~2524を介して相互接続される。
【0222】
一実施形態によれば、サブネットマネージャ2501は、複数のホスト(例えば、ノードA~E)および複数のスイッチ2502が同じ機能セットをサポートすることを判断するように構成され得る。複数のホストおよび複数のスイッチが同じ機能セットをサポートすると判断すると、サブネットマネージャは、フラグA(図ではフラグAを含む円として表示)などのSMAフラグを設定する。このフラグはある状態をホストチャネルアダプタポートごとに設定することができることを示す。フラグAは、上述の同種のファブリック属性などの1つ以上の属性を含むことができる。
【0223】
一実施形態では、パケット2530をリモートポートから受信することができ、そのパケットはソースLIDおよびソースGIDを含む。リモートポートアドレス情報を同種のファブリック属性と組み合わせて、完全なパスレコード2535を判断することができる。
【0224】
一実施形態によれば、マルチサブネットファブリックの場合(すなわち、パケットがリモートサブネットから到着する場合)、GID情報は依然としてIPoIB ARPプロトコルによって十分に定義される。ただし、カプセル化IBパケットのSLID情報は、元の送信元を定義しなくなり、パケットをローカルサブネットへの入力パスで転送したIB‐IBルータポートのLIDを定義する。‐これは、元のマルチキャスト要求と後のユニキャスト応答との両方に適用される。
【0225】
実施形態によれば、依然として、全体的なサブネット間ルーティングがサブネット境界を越えた可逆的パスを許可する限り、ユニキャストトラフィックのDLIDとしてルータSLIDを用いると、依然として、完全なパスレコード情報が、同種のファブリックフラグからの情報との組み合わせで、提供される。次に、接続されているさまざまなサブネットにおいてSM間で同種のファブリックフラグを同期させる必要があるであろう。
【0226】
図26は、同種のファブリック属性に基づいてARP応答およびピアツーピアネゴシエーションからパスレコードを導出する方法のフローチャートである。
【0227】
より具体的には、この図は、一実施形態による、リモートノードからの、ファブリックの最小/最大値との相関を含む、着信ARP要求および応答からGIDおよびLIDを判断する方法のフローチャートを示す。
【0228】
一実施形態によれば、ステップ2601で、方法を開始することができる。
一実施形態によれば、ステップ2602で、この方法は、着信ARP要求または応答からソースGID(グローバル識別子)およびソースLID(SLIDまたはソースローカル識別子)を取得することができる。
【0229】
一実施形態によれば、ステップ2603で、この方法は、ソースGIDがローカルサブネットからのものであるかどうかを判断することができる。
【0230】
ソースGIDがローカルサブネットからのものである場合、この方法は、ステップ2604で、ローカルポートから潜在的に見えるローカルサブネット内のCA(チャネルアダプタ)ポートに関連付けられたすべてのLIDが有効なDLID(上記の「AllSubnetLocalChannelAdapterLIDsUsable」フラグ)を表わす旨を、ローカルマスターSMによって設定されたフラグが示す、とローカル拡張ポート情報が示すかどうかを判断することができる。
【0231】
そのような判断が行われた場合、一実施形態によれば、ステップ2606で、この方法は、そのような判断が受信したソースLIDをリモートノードの宛先LIDとして用いることができる旨を記録することができることを、記録することができる。
【0232】
そのような判断が行われない場合、一実施形態によれば、ステップU05で、この方法は、リモートノードの宛先LIDを判断するためにSAアクセスまたは他の追加情報が必要であることを記録することができる。
【0233】
ソースGIDがローカルサブネットからのものではないと判断された場合、実施形態によれば、ステップ2607で、この方法は、拡張PortInfoがRouterSourceLIDsReversibleフラグ(またはリモートサブネットのエンドポートからパケットを転送するときにローカルサブネットのルータポートによって生成されるすべてのソースLIDを、リモートサブネットの関連するエンドポートに到達するために用いることができることを表す、別のフラグ)が真であることを示すかどうかを判断することができる。
【0234】
そのような判断が行われる場合、実施形態によれば、ステップで2608で、この方法は、受信したソースLIDをリモートノードの宛先LIDとして用いることができることを記録することができる。
【0235】
そのような判断が行われない場合、実施形態に従って、ステップ2609で、この方法は、リモートノードの宛先LIDを判断するためにSAアクセスまたはその他の追加情報が必要であることを記録することができる。
【0236】
図27は、同種のファブリック属性に基づいて、ARP応答およびピアツーピアネゴシエーションからパスレコードを導出する方法のフローチャートである。
【0237】
より具体的には、この図は、一実施形態による、ファブリックの最小値/最大値との相
関を含む、新たなCMタイプのメッセージ交換に基づくパス情報を構築する方法のフローチャートを示す。
【0238】
一実施形態によれば、ステップ2701で、方法を開始することができる。
一実施形態によれば、ステップ2702で、この方法は、同種ファブリックフラグが真にセットされていることをローカル拡張PortInfoが示すかどうかを判断することができる。
【0239】
一実施形態によれば、ステップ2703で、同種ファブリックフラグが真にセットされている場合、この方法は、ローカルPortInfo情報に基づいてパス情報属性を構築することができる。
【0240】
一実施形態によれば、ステップ2704で、同種ファブリックフラグが真にセットされていない場合、この方法は、準同種ファブリックフラグが真にセットされていることをローカル拡張PortInfoが示すかどうかを判断することができる。
【0241】
一実施形態によれば、ステップ2705で、準同種ファブリックフラグが真にセットされている場合、この方法は「PortandNodeAttributeReqeustMessage(ポートおよびノード属性要求メッセージ)」または「PortandNodeAttributeResponseMessage(ポートおよび
ノード属性応答メッセージ)」のいずれかを受信する。
【0242】
一実施形態によれば、PortandNodeAttributeRequestMessageは、送信ポートが表す最大パスパラメータ(レート、MTUなど)および送信ポートに関する追加情報(プラットフォーム固有の情報も含むことができる)を含むことができる。この方法は、LIDが既知であるリモートポートへの他の通信を開始する前に、SAパス要求のピアツーピアベースの置換として用いることができる。SAへのパスクエリと同様に、リモートポートが依然として利用可能な限り、受信した情報をキャッシュし、複数の接続にわたって再利用することができる。
【0243】
一実施形態によれば、「PortAndNodeAttributeResponseMessage」はCMメソッド(メ
ッセージタイプ)である。メッセージには、応答ポートが表す最大パスパラメータ(レート、MTUなど)、および応答ポートに関する追加情報(プラットフォーム固有の情報も含めることができる)が含まれる。SAへのパスクエリと同様に、リモートポートが依然として利用可能な限り、受信した情報をキャッシュし、複数の接続にわたって再利用することができる。
【0244】
一実施形態によれば、ステップ2705でメッセージの一方または両方を受信した後、この方法は、ステップ2706で、ローカルPortInfo情報とリモートノードからメッセージで受信した情報との間の最小値に基づいてパス情報を構築することができる。
【0245】
一実施形態によれば、ローカル拡張PortInfoが、準同種ファブリックフラグが真であることを示さない場合、この方法は、ステップ2707で、SAクエリまたは他の手段(例えば、ローカルPortInfoからの「FabricGlobalMinimalPathParameters」)を用いて、リ
モートノードの情報属性を取得することができる。
【0246】
図28は、一実施形態による、パスレコードを導出する方法のフローチャートである。
実施形態によれば、ステップ2810で、この方法は、1つ以上のマイクロプロセッサにおいて、第1のサブネットを提供することができ、第1のサブネットは複数のスイッチを含み、複数のスイッチは少なくともリーフスイッチを含み、複数のスイッチの各々は、複数のスイッチポートのうちの少なくとも1つのスイッチポートを含み、第1のサブネッ
トは、さらに、複数のホストチャネルアダプタを含み、各ホストチャネルアダプタは、複数のホストチャネルアダプタポートのうちの少なくとも1つのホストチャネルアダプタポートを含み、複数のホストチャネルアダプタは1つ以上のスイッチを介して相互接続され、第1のサブネットは、さらに、複数のホストと、サブネットマネージャとを含み、サブネットマネージャは、複数のスイッチおよび複数のホストチャネルアダプタの一方で実行される。
【0247】
一実施形態によれば、ステップ2820で、この方法は、サブネットマネージャが、複数のホストチャネルアダプタポートのセットおよび複数のスイッチポートのセットが同じ機能セットをサポートすると判断することができる。
【0248】
一実施形態によれば、ステップ2830で、サブネットマネージャが複数のホストチャネルアダプタポートのセットおよび複数のスイッチポートのセットが同じ機能セットをサポートすると判断すると、サブネットマネージャはSMAフラグを構成することができ、このフラグは、複数のホストチャネルアダプタポートおよび複数のスイッチポートの各々に、ある条件を設定することができることを示す。
【0249】
一実施形態によれば、ステップ2840で、リモートポートから、第1のサブネット内のスイッチ上のポートでソースLIDおよびソースGIDを含むパケットを受信することができる。
【0250】
一実施形態によれば、ステップ2850で、ソースLIDおよびソースGIDをSMAフラグと組み合わせて完全なパスレコードを判断することができる。
【0251】
マルチキャストグループの作成および参加
マルチキャストグループは、管理ポリシー/アクションに基づいてファブリックアドミニストレータによって作成することができる。ファブリックアドミニストレータは、管理インターフェイスを用いて、マルチキャストグループの作成を促すことができる。このようなインターフェイスは、マルチキャストグループの定義に必要なパラメータを受け入れることができる。多くの場合、マルチキャストグループは上位プロトコル(ULP)が用いるために作成される。これらのULPの一部は、IBパーティションのコンテキストで作成されるマルチキャストグループを用い、IBパーティションはULPのリンク境界を表す。一部の管理インターフェイスでは、IBパーティションとの関連でマルチキャストグループを作成できるため、マルチキャストグループを特定のIBパーティションに関連付ける場合の管理オーバーヘッドが軽減される。たとえば、IBパーティションが作成されると、作成されたIBパーティションのコンテキストでマルチキャストグループの自動作成を容易にするフラグを設定することができる(たとえば、Internet Protocol over InfiniBand (インフィニバンドを介するインターネットプロトコル(IPoIB) フラグ)。
【0252】
一実施形態によれば、リスティング1は、対応するIBパーティションのコンテキストで(およびそれを作成するための同じコマンド内で)IPoIBマルチキャストグループを作成するための管理インターフェイスコマンドを示す。リスティング1に示すように、「ipoib」フラグを用いると、作成中の「partition_name」パーティションのコンテキストでマルチキャストグループが作成される。
【0253】
【0254】
上記のように、IBパーティションに関連付けられるマルチキャストグループを用いるULPの1つの例は、 Internet Protocol over InfiniBand(IPoIB)である。IPoIBは、特定のIBパーティションのコンテキストで作成されたIBマルチキャストグループであるブロードキャストグループを用いる。ブロードキャストグループはレガシーインターネットプロトコル(IP)サブネットでブロードキャストトラフィックをシミュレートするために用いられ、なぜならば、IBアーキテクチャはブロードキャストトラフィックをサポートしていないからである。
【0255】
IPoIBは、IBパーティションを用いてIPサブネットをシミュレートする(つまり、IBパーティションは、IPoIBプロトコルからブロードキャストトラフィックのリンク境界を定義およびシミュレートする)。ブロードキャストグループに関連付けられるIBパーティションの各メンバーエンドポートは、IPサブネットのシミュレートされたメンバーである。トラフィックは、ブロードキャスト(マルチキャスト)グループを介して、シミュレートされたIPサブネットの各メンバー(つまり、IBパーティションメンバー)に「ブロードキャスト」される。パーティションのメンバーである各エンドポートは、そのパーティションのコンテキストにおいて定義されるブロードキャストグループのメンバーでもある。これにより、IPプロトコルを用いるレガシーアプリケーションは、IBサブネットを介してブロードキャストされるパケット(アドレス解決プロトコル(ARP)パケットなど)を受信できる。
【0256】
マルチキャストグループがIBパーティションのコンテキストで定義される場合、マルチキャストグループのMGIDは、既知の規則に従ってアルゴリズムで作成することができる。マルチキャストグループが作成されるコンテキストのパーティションのP_Keyは、マルチキャストグループのMGIDに埋め込むことができる。MGIDの作成時に、追加の規則に従うこともできる。たとえば、ブロードキャストIPoIBマルチキャストグループの場合、特別な署名もMGIDに埋め込まれる。このような規則に従うことにより、IBクライアントは、マルチキャストグループを定義するMGIDを導出するためにマルチキャストグループを定義するコンテキストのパーティションのP_Keyを知るだけで済む。
【0257】
マルチキャストグループは、エンドポートがMADをSMに送信して、新たなマルチキャストグループの作成を要求するときに、動的に作成することもできる。MADは、新たなマルチキャストグループの定義/作成に用いる特定のパラメータを指定することができる。たとえば、MADは有効なMGIDを指定することができる。代替的に、MADはMGIDを未指定のままにすることができ、その場合、SMは有効なMGIDを生成し、生成されたMGIDを新たに作成されたマルチキャストグループに割り当てることができる。新たなマルチキャストグループを作成する要求で指定することができるその他のパラメータには、P_Key、Q_Key、 Service Level(サービスレベル) (SL), FlowLabel(フローレベル), TClass, JoinState(参加状態)およびPortGID(ポートGID)が含まれる。
【0258】
新たなマルチキャストグループの作成を要求するMADは、IB仕様で定義されているサブネット管理クラスによって提供されるSubnAdmSet() メソッドを指定することができ
る。MADは、MCMemberRecord(MCメンバーレコード)属性をさらに指定することがで
き、上記のパラメータ(MGID、P_Key、Q_KEYなど)を指定することができる。
【0259】
一般に、新たなマルチキャストグループを作成する要求は、要求元のエンドポート(つまり、新たなマルチキャストグループの作成を要求するMADを送信するエンドポート)による、新たに作成されるマルチキャストグループに参加する暗黙的な要求として扱われ、SMは、新たに作成されたマルチキャストグループに要求元のポートを含ませる。つまり、SMは要求元のポートのLIDを、要求元のポートと新たに作成されたマルチキャストグループのMGIDとの間の関連付けを作成する方法として用いる(つまり、ポートのLIDはマルチキャスト処理にとって重要性はない)。
【0260】
従来は、既存のマルチキャストグループに参加するために、エンドポートはSMに参加要求を送信する。参加要求は、既存のマルチキャストグループの構成が既存のマルチキャストグループへの参加を要求しているポートの構成と互換性があるかどうかをSMが判断できるようにする他のパラメータとともに、既存のマルチキャストグループのMGIDを指定する。SMは、要求元のポートの構成が既存のマルチキャストグループの構成と互換性があると判断した場合、要求元のポートのLIDを既存のマルチキャストグループに追加する。つまり、SMは、要求元のポートのLIDを(たとえば、
図15に示すようなSAデータストアにおいて)既存のマルチキャストグループのMGIDと関連付ける。さらに、SMは、マルチキャストパケットを送信するときにエンドポートで用いるためにMCGに割り当てられたMLIDで要求元のエンドポートに応答する。
【0261】
エンドポートが既存のMCGに参加した後、SMは、マルチキャストグループに関連付けられている要求元のポートを含む、関連付けられたスパニングツリーを再生成する。さらに、更新されたMFT(新たに生成されたスパニングツリーによって更新される)は、要求元のポートのマルチキャストグループへの追加によって既存のMFTが廃止されたスイッチに送信することができる。したがって、パケットのDLIDフィールドに既存のマルチキャストグループのMLIDを有するマルチキャストパケットが送信されると、要求元のポートは関連するマルチキャストグループのメンバーとして認識され、マルチキャストパケットのコピーが要求元のポートに配信される。
【0262】
図29は、一実施形態による、マルチキャストグループ(MCG)の作成および参加のためのフローチャートを示す。ステップ2910で、SMは新たなMCGを作成する要求を受信することができる。ステップ2930で、SMは、第1のエンドポートから新たなMCGに参加する要求を受信することができる。ステップ2940で、SMは、第1のエンドポートのLIDを新たなMCGのMGIDと関連付けることができる。ステップ2950で、SMは、新たなMCGにおける第1のエンドポートのメンバーシップに基づいてスパニングツリーおよびM29Tを生成することができる。ステップ2960で、SMは、第2のエンドポートから新たなMCGに参加する別の要求を受信することができる。ステップ2970で、SMは、第2のエンドポートのLIDを新たなMCGのMGIDと関連付けることができる。ステップ2980で、SMは新たなMCGにおける第2のエンドポートのメンバーシップに基づいてスパニングツリーおよびMFTを生成することができる。
【0263】
図29からわかるように、エンドポートがMCGに参加するたびに、SMはMADを受信して処理し、関連付けを更新し、スパニングツリーを判断し、新たなMFTを判断する。これは、多くのエンドポートが参加要求を送信する大規模なサブネットでは、特にサブネットの初期化時に、SM/SAに対して多大なオーバーヘッドを生じる可能性がある。
【0264】
マルチキャストグループの作成および参加に関する上記のプロセスからわかるように、マルチキャストグループに含まれることになるすべてのエンドポートは、マルチキャスト
グループに参加するために、SM/SAと対話する必要がある。さらに、新たなマスターSMがサブネットで選択されるたびに、どのエンドポートも、そのエンドポートがメンバーであるマルチキャストグループに再参加するという内在的な必要性があり、なぜならば、新たなSMが新たなMGIDをMLIDマッピングに割り当て得るからである。サブネット上のSR‐IOVベースの仮想マシン展開の場合、複数のvPortが各々同じタイプのSM/SA要求(例えば、マルチキャストグループ参加要求)を物理的なエンドポートとして実行することになるため、SM/SAが処理する必要がある要求トラフィックの量が増加する。
【0265】
その結果、サブネットの管理要件がこれらの要件を処理するSMの能力を超えて拡大する場合、(物理エンドポートおよび仮想エンドポートの両方で)密集したサブネットで問題が発生する可能性がある。特に、能力の低いSM/SA実装例(たとえば、スイッチ管理インターフェイスに接続された低パフォーマンスプロセッサモジュールに基づく実装例)の場合、中程度のSA要求負荷でも、SMおよび全体としてシステムの両方について深刻なオーバーヘッドと効率の低下と遅延の増加とを引き起こし得る。
【0266】
高速フェールオーバーと復旧とが重要な高可用性(HA)システムの場合、遅延は問題を表す。特に、1秒未満のフェールオーバー時間が必要な場合、(ノード間の物理的な接続が失われない限り、)ファブリックノードが通常の動作および他の動作可能なノードとの通信を中断なく継続することができることが重要である。したがって、すべてのノードがSM/SAと対話する必要なくユニキャストトラフィックとマルチキャストトラフィックとの両方に対して既存のアドレスおよびパス情報を引き続き用いることができること、およびSMがファブリック内の障害のあるリンク(またはスイッチ)のために再ルーティングまたは再初期化を実行する必要がある場合に接続性の中断のみが生ずることが、望ましい。
【0267】
さらに、完全に機能するHCAを有するハイエンドサーバに基づくSM/SA実装例でも、SA通信に256バイトのMADを用いると、パフォーマンスおよびスケーラビリティが大幅に制限される。そのため、SA要求処理に対して最適なキャッシングおよび高性能ハードウェアを用いる場合でも、新たなマスターSMが選出されたときにマルチキャストメンバーシップを再登録(つまり、それに対する新たな参加要求を処理)する必要性は、動作可能なスイッチおよびリンクによって接続される動作可能なノード間の接続が中断する結果となり得る。
【0268】
したがって、IBクライアントとSM/SAインフラストラクチャとの間の対話を最適化する必要がある。ローエンドの、スイッチが埋め込まれたSM/SA実装を伴う小規中規模のシステムでは、SA要求を処理したり、またはそうでなければIBクライアントと(つまり、ディスカバリをこえて)通信したりする必要性を回避しながら(つまり、SMAレベルでのディスカバリおよび初期化動作を越えて)、サブネットの高速ディスカバリおよび初期化が必要である。よりハイエンドのSM/SA実装を有するシステムの場合、最適なIB通信メカニズムを利用し、‐非常に大規模なクラスタドメインでも‐スケーラビリティを提供し、大規模なマルチキャストストームを防止する階層実現例を有する能力を提供もする方法で関連情報をSM/SA実装によってIBクライアントに配信するための処理が必要とされる。
【0269】
マルチキャストグループの作成、参加、削除、および参加解除の管理に関する既存の技術プロセスの改善は、SM/SAのオーバーヘッドを克服し、SM/SA実装の効率を強化するのに役立ち得る。
【0270】
MCGに対するデュアルMLID割り当て
上記のように、IBパーティションのコンテキストでマルチキャストグループを作成することができる。さらに、各パーティションメンバーは、制限付きメンバーまたは正規メンバーの2種類のうちの1つであることができる。ただし、マルチキャストグループメンバーシップを定義する場合、IB仕様では、正規パーティションメンバーと制限付きパーティションメンバーとを区別しない。したがって、MLIDごとにわずか1つのルート(たとえば、わずか1つのスパニングツリー)しか判断されないため、所与のポートがどのようなタイプのパーティションメンバーであるかに関係なく、判断されたルートは、マルチキャストグループの各メンバーポートにマルチキャストパケットを配信しなければならない。
【0271】
MLIDごとに1つのルートという制限があると問題が発生する可能性があり、なぜならば、IB仕様によれば、制限付きパーティションメンバーは他の制限付きパーティションメンバーからパケットを受け入れない場合があるためである。したがって、制限付きパーティションメンバーがマルチキャストパケットを送信すると、マルチキャストパケットは、パーティションの制限付きメンバーでもあるパーティション内の各受信ポートについてP_Keyアクセス違反を表わす。このようなP_Keyアクセス違反は、SMに送信されるP_Key違反トラップの生成につながる可能性がある。
【0272】
IB仕様は、ここで、マルチキャストパケットが1つの制限付きパーティションメンバーから別のパーティションメンバーに転送される結果であるP_Keyアクセス違反は、P_Keyアクセス違反として(トラップ経由でSMに)報告する必要がないことを反映するが、一方で、この現代的な機能を提供しないレガシー実装例の重要なセットが依然として存在する。さらに、リンク容量がマルチキャストパケット自体で浪費され、それは、宛先ポートに転送されるべくサブネットリソースを使用した後、宛先ポートでドロップされるだけとなる。
【0273】
一実施形態によれば、P_Keyアクセス違反の上記の特別な処理の必要性を回避し、マルチキャストトラフィックに関して制限付きパーティションメンバー間の完全な分離を保証するために、2つのMLIDを単一のMCGに割り当てることができる。第1のMLIDは、正規パーティションメンバーから正規パーティションメンバーおよび制限付きパーティションメンバーの両方に送信するために、割り当てられ、エンドポートによって用いられる(ここでは「正規パーティションメンバーMLID」と呼ぶ)。さらに、第2のMLIDは、制限付きパーティションメンバーから正規パーティションメンバーに送信するために、割り当てられ、エンドポートによって用いられる(ここでは「制限付きパーティションメンバーMLID」と呼ぶ)。このスキームを用いると、制限付きパーティションメンバーは、MCG内の他の制限付きパーティションメンバーにマルチキャストパケットを送信することを回避することができる。
【0274】
一実施形態によれば、SMは、マルチキャストグループのメンバーシップを要求したエンドポートにマルチキャストグループのMLIDを提供することを担う。エンドポートは、マルチキャストグループにマルチキャストパケットを送信するときに、SMによって提供されるMLIDを用いる。さらに、要求元のエンドポートは、エンドポートがSMに参加を要求しているマルチキャストグループに関連付けられるP_Keyを提供することができる。P_Keyは、MCG参加要求でSMに送信されるMCMemberRecord(MCメンバーレコード)の一部である。したがって、SMは、エンドポートの参加要求からンドポートが参加を要求しているMCGに関連付けられるP_Keyを判断することができる。SMは、どのエンドポートがどのパーティションのメンバーであるか、およびポートが関連するパーティションの制限付きメンバーであるかまたは正規メンバーであるかについて、それの独自のポリシー情報を維持することもできる。
【0275】
SMは、エンドポートが参加を要求しているMCGに関連付けられるP_keyを判断すると、SMは、要求元のエンドポートが、それが参加を要求しているMCGに関連付けられるパーティションの正規メンバーであるかまたは制限付きメンバーであるかどうかを(判断されたP_Keyの上位ビットから)判断することができる。要求元のエンドポートがパーティションの正規メンバーであると判断された場合、SMは正規パーティションメンバーMLIDをエンドポートに提供することができる。要求元のエンドポートがパーティションの制限付きメンバーである場合、SMはエンドポートに制限付きパーティションメンバーMLIDを提供することができる。
【0276】
リスティング1の擬似コードは、一実施形態による、エンドポートによるMLIDの要求(MCGへの参加要求など)に応答するためのアルゴリズムを示す。
【0277】
【0278】
図30は、一実施形態による、エンドポートによるMLIDに対する要求(例えば、MCGへの参加の要求)に応答するためのフローチャートを示す。開始3002で、エンドポートから参加要求を受信する。ステップ3004で、要求元エンドポートのパーティションメンバータイプが判断される。判断3006で、参加要求が正規パーティションメンバーからのものかどうかが判断される。参加要求が正規パーティションメンバーからのものであると判断された場合、制御はステップ3010に進み、応答MLIDは、要求元のエンドポートが参加を要求したMCGグループに割り当てられる正規パーティションメンバーMLIDの値にセットされる。参加要求が正規パーティションメンバーからのものではないと判断された場合、制御はステップ3008に進み、応答MLIDは、要求元のエンドポートが参加を要求したMCGに割り当てられる制限付きパーティションメンバーMLIDの値にセットされる。ステップ3010または3008のいずれかから、制御はステップ3012に進み、応答MLIDは応答メッセージで要求元のエンドポートに送信される。
【0279】
図30およびリスティング1に示すように、一実施形態によれば、SMは、MCGに関連付けられたパーティションについての要求元エンドノードのパーティションメンバーシップに基づいてMCGの正規パーティションメンバーMLIDまたは制限付きパーティションメンバーMLIDのいずれかをMCGのメンバーシップを要求したエンドポートに提供することができる。このプロセスはエンドノードに対して完全に透過的であり、要求元のエンドノードのSMAにおいてレガシーコードまたは属性を変更する必要はない。さらに、制限付きパーティションメンバーが正規MLIDを用いて他の制限付きメンバーにパケットを転送しようとすると、それは有効なP_Keyアクセス違反となり、そのように報告する必要がある。このような違反は、一般に、エンドノードがパケットを生成して任意の宛先LID‐任意のユニキャストDLIDまたはマルチキャストDLID(つまりMLID)を含む‐に送信した結果である。ただし、送信されたパケットは送信元ポートに
対して有効なP_Key値しか表すことができず、送信P_Keyが宛先ポートに対して有効でない場合、パケットはP_Keyチェック後に破棄される。
【0280】
一実施形態によれば、SMは、2つのMLID‐正規パーティションメンバーMLIDおよび制限付きパーティションメンバーMLID‐をMCGに割り当てることができる。さらに、SM/SAによって保存されるMCGレコードは、正規パーティションメンバーMLID、制限付きパーティションメンバーMLID、正規パーティションメンバーMLIDのスパニングツリールート、制限付きパーティションのスパニングツリールート、両方のMLIDのメンバーノードのリスト、MGID、関連するP_Keyなどのメタデータを含むことができる。
【0281】
MCGの正規パーティションメンバーMLIDおよび制限付きパーティションメンバーMLIDの両方を正しくルーティングするために、SMは、正規パーティションメンバーMLID用に1つ、および制限付きパーティションメンバーMLID用に1つ、の2つのスパニングツリーを計算することができる。さらに、SMは、判断された各スパニングツリーごとにすべての影響を受けたスイッチに対する関連のMLIDについてMFTエントリの内容を判断し、更新されたMFTを任意の影響を受けたサブネットスイッチに転送することができる。
【0282】
図31は、一実施形態による、サブネット3100内の制限付きパーティションメンバーMLIDについてスパニングツリーアルゴリズムを介して判断され得る例示的なマルチキャストパケットルートを示す。サブネット3100には、ノード3101~3108が含まれる。ノード3101~3108には、それぞれHCA3109~3116が含まれる。さらに、HCA 3109~3116は各々、ポート、すなわちポート3117~3124を含む。サブネット3100のすべてのポートは、パーティション3170のメンバーである。同様に、サブネット3100のすべてのポートはMCG3165のメンバーである。
【0283】
サブネット3100では、マルチキャストグループ(MCG)3165はSM/SA3160によって定義される。デュアルMLIDがMCG3165に割り当てられている。正規パーティションメンバーMLID3172は、実線のブロック図形式で示される。制限付きパーティションメンバーMLID3174は、一点鎖線のブロック図形式で示される。ポート3118~3119ならびにポート3121および3123は、それらがSM/SA3160から制限付きパーティションメンバーMLID3174を受信したこと(およびしたがって、パーティション3170の制限付きメンバーであること)を示すために、一点鎖線で描かれている。さらに、ポート3117、3120、3122、および3124は実線で示されており、それらがSM/SA3160から正規パーティションメンバーMLID3172を受け取ったこと(したがって、パーティション3170の正規メンバーであること)を示す。
【0284】
図31では、制限付きパーティションメンバーMLID3174のマルチキャストトラフィックの配信を処理するスパニングツリーに含まれるリンクが実線で示される。これは、パケットのDLIDとして制限付きパーティションメンバーMLIDを有するマルチキャストパケットの配信用に生成されたスパニングツリーがパーティションの正規メンバーにのみマルチキャストパケットを配信するからである。一実施形態によれば、SM/SA3160は、制限付きパーティションメンバーMLID3174のスパニングツリーを生成するときに、パーティション3170の各メンバー(MCG3165のメンバーでもある)を判断し、DLIDとして制限付きパーティションメンバーMLID3174を有するパケットをパーティション3170の判断された正規メンバーにのみ配信するスパニングツリーを判断することができる。このようにして、制限付きメンバーP_Keyを有す
るマルチキャストパケットは、パーティション3170の制限付きメンバーである他のポートに配信されない。したがって、P_Keyアクセス違反が引き起こされてSM/SAに送信されることはなく、リンクリソースは、最終的に配信ポートでドロップされるパケットで無駄にされない。
【0285】
さらに
図31を参照すると、制限付きパーティションメンバーMLID3174に対して判断されたスパニングツリーにリンク3142、3141、3143を含めることができる。さらに、それぞれエンドポート3117、3120、3122、および3124にサービスを提供するリンク3125、3128、3130、および3132も、制限付きパーティションメンバーMLID3174のスパニングツリーに含めることができる。したがって、制限付きパーティションメンバーMLID3174のスパニングツリーは、DLIDとして制限付きパーティションメンバーMLID3174を有するマルチキャストパケットが、MCG3165のメンバーおよびパーティション3170の正規メンバーの両方である各エンドポートにのみ配信されることを保証することができる。
【0286】
たとえば、ポート3121がマルチキャストパケットをサブネットに注入すると、スイッチ3152がそれを受信する。次に、スイッチ3152は、マルチキャストパケットのコピーをスパニングツリーで指定された各リンクに転送することができる。したがって、スイッチ3152は、受信したマルチキャストパケットのコピーをリンク3142、3141、および3130に転送することができる。この場合では、ポート3122はリンク3130を介してマルチキャストパケットのコピーを受信し、スイッチ3150はリンク3142を介してコピーを受信し、スイッチ3151はリンク3141を介してコピーを受信する。ここから、スイッチ3150もリンク3142から受信したマルチキャストパケットのコピーをリンク3125に転送することができる(ただし、スパニングツリーの一部ではないため、リンク3126には転送できない)。このパターンは、すべての正規パーティションメンバーポートがマルチキャストパケットのコピーを受信するまで、サブネット全体を通してスパニングツリーをたどって続行することができる。
【0287】
正規メンバーMLID3172のスパニングツリールートは、
図31には示されてはいない。これは、サブネット3100のすべてのノードが(上記のとおり)MCG3165のメンバーおよびパーティション3170のメンバーであるため、一実施形態によれば、ルートにはすべてのポート3117~3124が含まれるであろうからである。そうではあるが、SM/SA3160は、各ポート3117~3124が正規メンバーMLID3172のスパニングツリーに含まれるであろうことを除いて、上記と同じ方法で正規メンバーMLID3172のスパニングツリーを生成することができる。
【0288】
一実施形態によれば、SM/SA3160は、
図31に示されるスパニングツリーに基づいて、影響を受ける各スイッチ3150~3153のMFTを生成することができる。生成されると、SM/SA3160はMFTをスイッチ3150~3153に送信して、それぞれのスイッチで実装することができる。さらに、正規メンバーMLID3172用に生成されたスパニングツリーのMFTを生成し、それぞれのスイッチによる実装のためにスイッチ3150~3153に送信することができる。これらのMFTのそれぞれのセットは、
図17に関して上で説明したプロセスに従って生成することができる。
【0289】
一実施形態によれば、エンドポートは、SMがデュアルMGIDをMCGに割り当てたことを認識することができる。SMがMCGにデュアルMLIDを割り当てたことをエンドポートが認識すると、エンドポートはデュアルMLID間の区別を行うことができる。このような認識により、エンドポートは、エンドポートが対応するパーティションの正規メンバーであっても、マルチキャストパケットを関連するMCG内の他の正規パーティションメンバーにのみ転送するために、限定付きパーティションメンバーMLIDを用いる
ことができる。
【0290】
追加のプロパティを、たとえばPortInfo属性に追加して、MCGに割り当てられたデュアルMLIDを、エンドポートが認識し、利用できるようにすることができる。一実施形態によれば、そのようなプロパティの1つは、エンドポートが正規メンバーMLIDと制限付きメンバーMLIDとの区別をサポートするかどうかを示すことができる。たとえば、PortInfo属性に「DualMLIDAllocation(デュアルMLID割り当て)」インジケータを追加することができる。DualMLIDAllocationインジケータは、たとえば、ビットとすることができ、ハイにセットされると、エンドポートが正規メンバーMLIDと制限付きメンバーMLIDとの区別をサポートすることを示す、とすることができる。DualMLIDAllocationインジケータは、デフォルトで偽にセットすることができる(たとえば、ビットをローに設定することができる)。サポートするHCAのSMAは、リンクアップ/初期化中にDualMLIDAllocationインジケータを真にセットすることができる。真にセットした場合(たとえば、ハイにセットした場合)、サポートするSMは関連付けられるSMAプロパティを更新することができる。
【0291】
別のそのようなプロパティは、実施形態に従って、サブネット内のMCGにデュアルMLIDが割り当てられているかどうかを示すことができる。例示的なプロパティは、「DualMLIDAllocationInUse(デュアルMLID割り当て使用中)」インジケータである。DualMLIDAllocationInUseインジケータは、たとえば、ビットとすることができ、ビットをハイにセットすると、サポートするSMがサブネットにおいて定義されたマルチキャストグループにデュアルMLID(正規パーティションメンバー用に1つ、および制限付きパーティションメンバー用に1つ)を割り当てたことを示す、とすることができる。DualMLIDAllocationInUseインジケータは、デフォルトで偽にセットすることができる(たとえば
、ビットをローにセットすることができる)。SMがサブネット内のMCGにデュアルMLIDを割り当てている場合、サポートするSMはDualMLIDAllocationInUseインジケー
タを真にセットすることができる。
【0292】
一実施形態によれば、制限付きパーティションメンバーによる使用のための第2のMLIDの割り当ては、サブネットオーバーヘッドおよびトラフィックを低減するために、ある規則に従うことができる。たとえば、制限付きパーティションメンバーが用いる第2のMLIDは、正規パーティションメンバーが用いるために割り当てられたMLID値の(数値的に)後の次のMLID値として定義することができる。このようにして、サポートするエンドポートは、第2のMLIDの値を、SMから実際に受信することなく、判断することができる。
【0293】
一実施形態によれば、たとえば、PortInfo属性のプロパティは、制限付きパーティションメンバーが使用する第2のMLIDの割り当てに関して、SMがある規則に従うことを示すことができる。例示的なインジケータは、「ConsecutiveDualMLIDs(連続デュアルMLID)」インジケータであることができる。インジケータ(例:ConsecutiveDualMLIDs)は、たとえば、ビットとすることができ、ビットをハイにセットすると、制限付きパーティションメンバーが用いる第2のMLIDが正規パーティションメンバーが用いるために割り当てられたMLID値の(数値的に)後の次のMLID値として定義されることを示す、とすることができる。ConsecutiveDualMLIDsインジケータは、デフォルトで偽にセットすることができる(たとえば、ビットをローにセットすることができる)。サポートするSMが、正規パーティションメンバーが用いるために割り当てられたMLID値の(数値的に)後の次のMLID値として制限付きパーティションメンバーが用いるために第2のMLIDを割り当てる場合、サポートSMはConsecutiveDualMLIDsインジケータを真にセットすることができる。
【0294】
一実施形態によれば、サブネット内のMCGへのデュアルMLID割り当てを認識し、かつデュアルMLIDが割り当てられたMCGに関連付けられるパーティションの正規メンバーであるエンドポートは、SMへの参加要求で、SMから制限付きパーティションメンバーMLIDが返されることを要求することができる。SMは、エンドポートが、参加を要求しているMCGに関連付けられるパーティションの正規メンバーであることを確認することができ、SMによって、エンドポートがそのパーティションの正規メンバーであると判断された場合、SMは制限付きパーティションメンバーMLIDを要求元のエンドポートに返すことができる。この方法は、関連するMCGのメンバーでもある他の正規パーティションメンバーエンドポートにのみマルチキャストパケットを転送するために、正規パーティションメンバーエンドポートによって用いることができる。
【0295】
一実施形態によれば、送信元エンドポートをメッセージで指定される(すなわち、メッセージで指定されたMGIDに関連付けられる)MCGに参加させること、および制限付きパーティションメンバーMLIDを要求元のエンドポートに返すことの両方を要求するメッセージタイプを定義することができる。このメッセージタイプには、(デフォルトの)正規パーティションメンバーMLIDではなく、制限付きパーティションメンバーMLIDが要求元のエンドポートに返されることを除き、通常の参加操作と同じパラメータを含めることができる。このメッセージタイプは、たとえば、MCMemberRecord属性のプロパティ(GetLimitedMLID (制限付きMGID取得)プロパティなど)として、または新た
なSAメソッドとして実装することができる。
【0296】
一実施形態によれば、MCGへのデュアルMLID割り当ての使用、構成、および/または管理をサポートするIB実装例は、MCGへのデュアルMLID割り当ての使用、構成、および/または管理(たとえば、上記のDualMLIDAllocationおよびDualMLIDAllocationInUse)で用いられるプロパティの状態変更イベントを含むことができる。さらに、M
CGへのデュアルMLID割り当ての使用、構成、および/または管理をサポートするIB実装例には、MCGへのデュアルMLID割り当て(たとえば、上記のようなDualMLIDAllocation、およびDualMLIDAllocationInUse)の使用、構成、および/または管理で用
いられるプロパティの値を照会するための動詞インターフェイスを含めることができる。
【0297】
図32は、一実施形態による、デュアルMLIDがMCGに割り当てられた状態での使用のためにエンドポートを構成するためのフローチャートを示す。ステップ3202で、SMはデュアルMLIDをMCGに割り当てる。ステップ3204で、SMは、サブネットに接続されたエンドポートがMCGへのデュアルMLID割り当てをサポートするという指示を受信する。ステップ3206で、SMは、SMがデュアルMLIDをMCGに割り当てたことを示すインジケータをエンドポートに設定する。ステップ3208で、SMはMCGに参加するための要求をエンドポートから受信する。ステップ3210で、SMはMCGに割り当てられたデュアルMLIDの1つをエンドポートに提供する。ステップ3212で、この方法は終了することができる。
【0298】
図33は、一実施形態による、マルチキャストグループごとにデュアルマルチキャストローカル識別子(MLID)を提供して、高性能コンピューティング環境において正規および制限付きパーティションメンバーの両方を容易にするフローチャートを示す。ステップ3310で、第1のマルチキャストローカル識別子および第2のマルチキャストローカル識別子が、サブネット内においてマルチキャストグループを定義するマルチキャストグローバル識別子に関連付けられる。ステップ3330で、マルチキャストグループのメンバーであり、サブネットで定義された第1のパーティションのメンバーである、サブネットにおけるある数のエンドポートが判断される。ステップ3340で、ある数のエンドポートのうち、パーティションの正規メンバーであるエンドポートからなる第1のサブセットが判断される。ステップ3350で、ある数のエンドポートのうち、パーティションの
制限付きメンバーであるエンドポートからなる第2のサブセットが判断される。ステップ3360で、第1のマルチキャストローカル識別子は、ある数のエンドポートのうちの第1のサブセットの各エンドポートに関連付けられる。ステップ3370で、第2のマルチキャストローカル識別子は、ある数のエンドポートのうちの第2のサブセットの各エンドポートに関連付けられる。ステップ3380で、第1のマルチキャストローカル識別子を含むマルチキャストパケットを、マルチキャストグループのメンバーであり、サブネットにおいて定義される第1のパーティションのメンバーである、サブネットの、判断された数のエンドポートの各々に配信する、サブネットトポロジーを通る第1のルートが判断される。ステップ3390で、第2のマルチキャストローカル識別子を含むマルチキャストパケットを、ある数のエンドポートのうち、パーティションの正規メンバーである、判断された第1のサブセットの各エンドポートのみに配信する、サブネットトポロジーを通る第2のルートが判断される。
【0299】
パーティションメンバーシップに関連して定義されるマルチキャストグループ(MCG)メンバーシップ
一実施形態によれば、特定のIBパーティションのメンバーであるすべてのエンドポートが特定のIBマルチキャストグループのすべてのメンバーでもあることは珍しくない。たとえば、上記のように、IPoIBブロードキャストグループは、IBパーティションのコンテキストで定義されたマルチキャストグループである。パーティションのメンバーである各エンドポートは、そのパーティションのコンテキストで定義されたブロードキャストグループのメンバーでもある。これにより、IPプロトコルを用いるレガシーアプリケーションは、IBサブネットを介してブロードキャストパケットを受信できる。
【0300】
ただし、上記でさらに論じたように、ブロードキャストグループが対応するIBパーティションの各エンドポートメンバーは、ブロードキャスト(マルチキャスト)グループのメンバーになるために、SM/SAに参加要求を送信する必要がある。MCG参加要求に応答して、要求元エンドポートのLIDをブロードキャストグループのMGIDに関連付けることに加えて、SMは単一のスパニングツリーを再作成し(上記を参照)、影響を受ける任意のスイッチのMFTを再作成して送信する必要がある。この場合のオーバーヘッドおよび非効率性を回避するために、ある実施形態に従って、特定のパーティションのコンテキストで定義されるマルチキャストグループをそのように示すことができる。さらに、SMは、パーティションがこの態様でいつマルチキャストグループに関連付けられるかを判断することができ、次いで、パーティションの各メンバーからMCG参加要求を受信する必要なく、パーティションメンバーをマルチキャストグループに自動的に追加することができる。
【0301】
一実施形態によれば、SMが新たなマルチキャストグループ(MCG)を作成する要求を受信すると、サブネットマネージャは要求を調べて、マルチキャストグループを定義するために必要な従来のパラメータ(例えば、IB仕様で指定されるパラメータ)を判断することができる。上記のように、P_Keyは、マルチキャストグループを定義するために要求に必要なパラメータの1つである。さらに、要求に含まれるP_Keyに対応するパーティションの各メンバーを新たなマルチキャストグループのメンバーとしても追加するかどうかを示すパラメータ(またはインジケータ)を要求に含めることができる(たとえば、「JoinAllPartitionMembers(すべてのパーティションメンバーを参加させる)」
パラメータ)。SMは、指定されたパーティションの各エンドポートメンバーも新たなマルチキャストグループに追加されることをパラメータが示すと判断すると、SMは指定されたパーティションの各メンバーのLIDを新たなマルチキャストグループのMGIDに関連付けることができる。
【0302】
この方法は、MCG作成要求で指定されたパーティションの各エンドポートメンバー(
MCGが動的に作成される場合は作成エンドポートメンバーを除く)が、新たに作成されたMCGのSMに参加要求を伝達する必要性を取り除き、なぜならば、これらのパーティションメンバーは、MCG作成要求に含まれる追加パラメータの指示の結果として追加することができるからである。したがって、この方法は、クライアント/エンドポートとSM/SA実装例と間の通信を、特に、そのような通信の大部分が通常行われているファブリックの初期化の重要な時間中に、大幅に削減する。
【0303】
さらに、この方法により、SM/SAが、各参加要求の後にスパニングツリーを生成し、MFTを更新して、各個々の参加要求の影響を受けるスイッチに送信する必要がなくなる。そうではなく、SMは、パーティションメンバーのすべてのLIDを新たに作成されたMCGのMGIDに関連付けることができる。次に、SMは、MCGに追加された各LIDを考慮に入れた単一のスパニングツリーを作成することができる。このスパニングツリーから、SMはMCGに追加されたすべてのLIDを説明するMFTのセットを生成し、このMFTのセットをサブネットスイッチに送信することができる。その結果、SMの作業負荷を、初期化中およびその他のときに大幅に低減することができる。
【0304】
図34は、一実施形態による、高性能コンピューティング環境においてパーティションメンバーシップに関して定義されたマルチキャストグループメンバーシップを提供するためのフローチャートを示す。ステップ3410で、サブネットのサブネットマネージャは、マルチキャストグループを作成する要求を受信し、要求はインジケータを含み、インジケータは、サブネットで定義されたパーティションの各メンバーがマルチキャストグループに関連付けられることを示す。ステップ3420で、サブネットマネージャは、サブネットで定義されたパーティションのメンバーである、ある数の追加のエンドポートを判断する。ステップ3430で、サブネットマネージャは、パーティションのメンバーである、ある数の追加のエンドポートを、マルチキャストグループを定義する識別子に関連付ける。ステップ3440で、サブネットマネージャは、マルチキャストグループを定義する識別子を含むマルチキャストパケットを、マルチキャストグループを定義する識別子に関連付けられた各エンドポートに配信するためのルートを定義する。
【0305】
図35は、一実施形態による、高性能コンピューティング環境においてパーティションメンバーシップに関して定義されたマルチキャストグループメンバーシップを提供する方法のフローチャートを示す。より具体的には、
図35は、マルチキャストルーティングを設定し、対応するパーティションの各メンバーを作成されたマルチキャストグループに追加すべきであることを示すマルチキャストグループ作成要求に基づいてマルチキャスト転送テーブルを更新するフローチャートを示す。
【0306】
図35を参照すると、ステップ3505で、すべてのパーティションメンバーが関連のMCGのメンバーであるべきであることを示すMCG参加要求またはMCG作成命令を受信することができる。判断ステップ3510で、要求がMCGに関する最初の要求であるかどうかを判断することができる。MCGに関して最初の要求ではないと判断された場合、ステップ3515で、要求が関連するMCGに参加するための参加要求であるかどうかをさらに判断することができる。要求が参加要求であると判断された場合、ステップ3520で、MCGレコードを、更新されたMLIDとともに返すことができる。ただし、ステップ3510で、要求がMCGに関する最初の要求であると判断された場合、制御はステップ3525に進むことができる。ステップ3525で、MCGに対してMLIDを割り当てることができる。次に、ステップ3530で、キャッシュされたトポロジー情報から関連するすべてのパーティションメンバーを取得することができる。ステップ3535で、すべてのパーティションメンバーエンドノードを含むスパニングツリーを生成することができる。ステップ3540で、影響を受けるスイッチのMFTを更新してスパニングツリーを反映することができ、更新されたMFTをそれらのそれぞれのスイッチに送信す
ることができる。
【0307】
表1は、対応するパーティションの各メンバーも新たに作成されたマルチキャストグループのメンバーとして追加する必要があるかどうかを示すために SM/SAによって使
用されるパラメータを含むマルチキャストグループを作成するための例示的なサブネット管理属性(MCMemberRecord属性など)を示す。表1の属性には、新しいMCGを作成するためにIB仕様で指定された従来のパラメータが含まれる。表1で指定された属性には、さらに、対応するパーティションの各メンバーを作成されたマルチキャストグループのメンバーとしても追加する必要があるかどうかを示すJoinAllPartitionMembers(すべての
パーティションのメンバー参加)パラメータまたはインジケータが含まれる。対応するパーティションは、属性で指定されたパーティションとすることができる。
【0308】
【0309】
一実施形態によれば、表1の属性などの属性(属性は、新たなMCGを作成するための管理要求または動的要求のいずれかに含まれる)を受信すると、SM/SAのロジックは、JoinAllPartitionMembersパラメータの値を判断することができる。SMは、判断され
たJoinAllPartitionMembersパラメータの値に基づいて、対応するパーティションの各メ
ンバーを新たなMCGグループに追加するべきであると判断することができる。つまり、パーティションの各エンドポートメンバーのLIDは、新たなMCGを定義するMGIDに関連付ける必要がある。これらの関連付けは、SAデータストアなどに保存することができる。
【0310】
たとえば、SMは新たなマルチキャストグループの作成を要求するMADを受信するこ
とができる。MADは、IB仕様で定義されているサブネット管理クラスによって提供されるSubnAdmSet()メソッドを指定することができる。MADは、MCMemberRecord属性をさらに指定することができ、上記のパラメータ(MGID、P_Key、Q_KEYなど)を指定することができる。さらに、MCMemberRecord属性にはJoinAllPartitionMembersパ
ラメータを含めることができる。一実施形態によれば、JoinAllPartitionMembersパラメ
ータは単一ビットとすることができる。
【0311】
JoinAllPartitionMembersパラメータを有するMCMemberRecord属性を含むMADを受信
すると、SM/SAはJoinAllPartitionMembersパラメータの値を判断することができる
。たとえば、JoinAllPartitionMembersパラメータビットを1にセットして、MCMemberRecordのP_Keyパラメータで指定されたパーティションの各メンバーが新たなMCGグループに参加するべきであることを示してもよい。JoinAllPartitionMembersパラメータビット
が1(または設計に応じて0)にセットされていると判断すると、サブネットマネージャのロジックは、MCMemberRecord属性で指定されたP_Keyで表されるパーティションのすべ
てのメンバーを新たに作成されたMCGに追加することができる。
【0312】
図36は、一実施形態による、高性能コンピューティング環境においてパーティションメンバーシップに関して定義されたマルチキャストグループメンバーシップを提供する方法のフローチャートを示す。ステップ3600で、パーティションAなどのパーティションのメンバーである、あるエンドノードは、MCG AなどのMCGに参加するマルチキャストグループ(MCG)参加要求を開始することができる。ステップ3605で、サブネットマネージャはMCG参加要求を受信することができる。示された方法では、参加要求が向けられたMCGにはすでにサブネット内においてマルチキャストローカル識別子(MLID)が割り当てられている。ステップ3610で、(たとえば、エンドノードがサブネットへの新規追加であり、MCG Aへの追加を要求している場合)SMマネージャはパーティションAの他のメンバーがすでにMCG Aのメンバーでもあるかどうかを判断することができる。そのような場合、MCG参加要求は通常通りに処理され(3615)、この方法は終了する。ただし、パーティションAの他のメンバー(一部またはすべてのメンバー)がMCG Aのメンバーではない場合、SMは、ステップ3620で、SMが最初のエンドノードから受信したMCG参加要求にのみ基づいて、パーティションAの他のすべてのメンバーをMCG Aに自動的に追加することができる。パーティションAの他のメンバーがMCG Aに追加されると、SMは3625でMCG AのMLIDを更新して、MCG A宛てのMCパケットの宛先としてパーティションAの他のメンバーを含めることができる。この方法は3630で終了することができる。
【0313】
SMA属性としてのパーティションごとのデフォルトMLID値
一実施形態によれば、上述のように、複数のMCGが同じMLIDを共有することが可能である。つまり、(マルチキャストグループを定義する)複数のMGIDを1つの同じMLIDに関連付けることができる。さらに、マルチキャストパケットルーティングはマルチキャストパケットのDLIDとして指定されるMLIDに基づいているため、同じMLIDを共有するMCGは、サブネットを介するそれぞれのマルチキャストパケットの同じルーティングを共有する。したがって、サブネットマネージャは、パーティションごとに専用のMLIDを割り当てることができ、パーティションには、パーティションのコンテキストで1つ以上のMCGが定義される。パーティションに関連付けられた、またはパーティションのコンテキストで定義されたすべてのMCGは、同じMLIDを共有することができる。これにより、サブネット内のLIDの数を増やすことができ、なぜならば、有限数のLIDのうち、より少ないLIDがマルチキャストグループに用いられるからである。これにより、サブネットのSMは単一のスパニングツリーを作成し、同じパーティションに関連付けられた複数のMCGに対して単一のMFTセットを作成できるため、SM/SAオーバーヘッドが低減される。
【0314】
一実施形態によれば、SMポリシーは、パーティションに対してデフォルトMLIDが定義されることを指定することができる。このポリシーは、サブネット内の各パーティションにデフォルトのMLIDを割り当てること、またはマルチキャスト通信用に定義されたパーティション(つまり、MCGがコンテキストに定義されているパーティション)にのみデフォルトのMLIDを割り当てることを指定することができる。さらに、関連するパーティションのエンドポートメンバーに、関連するパーティションにおけるエンドポートのメンバーシップによって、デフォルトのMLIDを知らせることができる。
【0315】
一実施形態によれば、デフォルトのMLID値は、サブネットの初期化中にSMが各ポートに配信するP_Keyテーブルコンテンツに関連するメタデータとして提供され得る。このようにして、特定のパーティションのエンドポートメンバーに対して、エンドポートが特定のパーティションのメンバーである限り、特定のパーティションのコンテキストにおいて設定されている任意のMCGのMLIDを、認識させることができる。したがって、エンドポートは、事前にエンドポートがメンバーであるMCGグループのMLIDを学習することができるため、SMによって処理されるMCG参加要求の送信を回避することができる。
【0316】
デフォルト(つまり、「パーティション固有」)MLIDが、パーティションに関連付けられた1つ以上のMCGに割り当てられる場合、一実施形態によれば、パーティション固有のMLIDは、エンドポートのP_Keyテーブルに配置される各P_Keyとともに、SMA属性としてエンドポートに提供することができる。P_Keyテーブルの情報は、P_KeyテーブルのエントリとデフォルトのMLIDテーブルのエントリとの間に関連付けまたは関係を含めることにより、論理的に拡張することができる。
【0317】
P_Keyテーブルのサイズは、IB仕様に従って、サブネットの各ノード(たとえば、各HCA)によって実装されるNodeInfo(ノード情報)属性のPartitionCap(パーティションキャップ)コンポーネントによって指定することができる。P_Keyテーブルのサイズは一般にベンダー固有であるが、PartitionCapコンポーネントは各ノードについて少なくとも1の値にセットされて、P_Keyテーブルが少なくとも1つの16ビットP_Keyを格納することができることを示し、なぜならば、各エンドポートは、少なくともデフォルトパーティションのメンバーであるからである。ただし、より大きなP_Keyテーブルが一般的である。一実施形態によれば、従来のP_Keyテーブルは、配列の要素の数がノードのPartitionCapコンポーネントで指定された数に等しい配列を含むことができる。
【0318】
一実施形態によれば、HCAは、エンドポートがメンバーである任意のパーティションのパーティション固有のMLID(割り当てられている場合)を含むデフォルトのMLIDテーブルを格納するように構成することができる。エンドポートのデフォルトのMLIDテーブルは、P_Keyテーブルの各エントリがデフォルトのMLIDテーブルのエントリにマッピングされるように、エンドポートのP_Keyテーブルに関連付けることができる。
【0319】
例えば、P_Keyテーブルが配列である実施形態では、デフォルトのMLIDテーブルも配列であり得る。デフォルトのMLIDテーブル配列は、P_Keyテーブル配列と同じ数の要素を有することができる。さらに、P_Keyテーブル配列の所与の要素のインデックス値は、P_Keyテーブル配列の所与の要素に保持されるP_Keyによって表されるパーティションに対して割り当てられるデフォルトのMLIDを保持するデフォルトのMLIDテーブル配列の要素のインデックス値と等しくすることができる。つまり、P_KeyテーブルおよびデフォルトのMLIDテーブルは並列配列にすることができ
る。この方法では、P_Keyテーブルの各要素をデフォルトのMLIDテーブルの要素に直接マッピングすることができ、エンドポートノードは、P_KeyテーブルからデフォルトのMLIDテーブルへのマッピングを用いて、(存在する場合には)パーティションに割り当てられるデフォルトMLIDを判断することができる。
【0320】
リスティング2は、一実施形態による、例示的な並列配列としてP_KeyテーブルおよびデフォルトのMLIDテーブルを表す。リスティング2に見られるように、P_KeyテーブルはデフォルトのMLIDテーブル配列と並列な配列であるため、P_Key配列要素NのP_Keyの場合、そのP_Keyに関連付けられるデフォルトのMLIDはデフォルトのMLID配列要素Nに見出されることになる。
【0321】
【0322】
P_KeyテーブルからデフォルトのMLIDテーブルへのマッピングの他の例示的な実施形態は、例えば、プライマリキーおよび外部キーならびに/またはマッピングテーブルを利用するリレーショナルデータベース構造を含み、P_keyテーブルにおけるP_KeyとデフォルトのMLIDテーブルにおけるそれの割り当てられたデフォルトMLIDとの間の関係を形成する。さらに別の実施形態では、記述されるマッピング関係をパーティションキーとデフォルトMLIDとの間に形成するために、2次元配列(または、デュアルデフォルトMLIDがパーティションに割り当てられる場合は多次元配列)を用いることができる。さらに他の実施形態は、コンマ区切り値などのファイルアーキテクチャを含むことができる。適切なマッピング手法を用いて、記述される関係をパーティションのP_Keyとパーティションに割り当てられたデフォルトのMLIDの間に形成することができる。
【0323】
(上記で詳細に説明したように)デフォルトパーティション固有のデュアルMLIDがMCGに割り当てられている場合、2つの独立した値がデフォルトのMLIDテーブルで表され、‐1つの値は、正規パーティションメンバーシップを有するMCGメンバーに割り当てられるMLIDに対してであり、1つの値は、限定付きパーティションメンバーシップを有するMCGメンバーに割り当てられるMLIDに対してである。代替的に、デフォルトのMLIDテーブルで、対応する値(正規のまたは制限付きメンバーMLID値)を簡単に導出できるように定義された規則を用いて、単一の値を表すことができる。たとえば、正規パーティションメンバーシップを有するMCGメンバーに割り当てられたMLIDがデフォルトのMLIDテーブルで表される場合、その規則は、正規パーティションメンバーシップを有するMCGメンバーに割り当てられたMLIDは、正規メンバーシップMLIDのそれ+1(つまり、正規パーティションメンバーMLID+1=制限付きパーティションメンバーMLID)であることを明記し得る。したがって、デュアルMLIDの1つを、エンドポートに明示的に知られるようにしたり、通信したりする必要はない。
【0324】
一実施形態によれば、パーティションにデフォルトMLIDが割り当てられていない場合、そのパーティションを表すP_Keyを保持するP_Keyテーブル内の要素は、(
P_Keyテーブルを収容するノードによって)既知の値にマッピングされて、そのパーティションにはデフォルトのMLIDは割り当てられていないことを示すことができる。たとえば、特定のパーティションにデフォルトのMLIDが割り当てられていない場合、特定のパーティションのP_Keyを保持するパーティションテーブルの要素にマッピングされるデフォルトのMLIDテーブルの要素は、ゼロ(0)の値を格納することができ、0の値は、対応するパーティションにデフォルトのMLIDが割り当てられていないことを示す。
【0325】
一実施形態によれば、IBコンポーネントは、ノードのエンドポートのデフォルトのMLIDテーブルをサポートすることができる。たとえば、HCAはデフォルトのMLIDテーブルを含むことができるだけでなく、その構成および使用を属性を通してサポートすることもできる。さらに、サブネットマネージャはノードと連携して、このような属性の使用を通してデフォルトのMLIDテーブルの構成および管理をサポートすることもできる。
【0326】
そのような属性の1つは、ノード(HCAなど)がデフォルトのMLIDテーブルをサポートすることを示すフラグまたはインジケータである。このようなインジケータは、「偽」のデフォルト値を有することができる。たとえば、デフォルトのMLIDテーブルの使用/構成/管理をサポートするSMは、デフォルトのMLIDテーブルサポート属性(たとえば、「HasDefaultMLIDsTable(デフォルトのMLIDテーブルを有する)」属性)を「偽」にセットすることができる。したがって、SMが、デフォルトのMLIDテーブルをサポートしないHCAを発見した場合、SMは、サポートされていない、またはそのサポートしていないHCAにおいて含まれていないデフォルトのMLIDテーブルを構成しようとしてそのサポートしていないHCAにサポートのない属性修飾子を送信しない。
【0327】
初期化中に、SMはサブネットに接続されたHCAを発見し、発見されたHCAに構成情報を送信することができる。HCAは、サポートされているHCAの機能について、SMと通信したり、SMからの要求に応答したりすることもできる。一実施形態によれば、発見されたHCAがデフォルトのMLIDテーブルをサポートすることを明示的に通信しないとき、SMは、例えば、HasDefaultMLIDsTable属性のデフォルト設定を偽として単純に残すことができる。逆に、HCAがデフォルトのMLIDテーブルをサポートする場合、サポートするHCAは初期化SMへの通信で属性を「真」にセットすることができる。このような通信は、SMへの直接通信、または情報の要求に対する応答(SubnGet() SMP
などであり、応答はSMに戻るSubnGetResp() SMPの形式である)とすることができる。
【0328】
ノードのエンドポートがデフォルトのMLIDテーブルをサポートする旨をノードが(サポートしている)SMに通信すると、SMはエンドポートのデフォルトのMLIDテーブルを設定することができる。SMは、デフォルトのMLIDのレコードを維持することができる。デフォルトのMLIDの各々は、それぞれのパーティションに関連付けることができる。これらのMLIDは、サブネットポリシーによって、それらのそれぞれのパーティションに関連付けられ得る(つまり、それらのそれぞれのパーティションのデフォルトMLIDとして割り当てられ得る)。サブネットマネージャは、サポートするエンドポートがどのパーティションのメンバーであるかを判断し、エンドポートのP_Keyテーブルを更新し、更新されたP_Keyテーブルに基づいてデフォルトのMLIDテーブルを更新することができる。
【0329】
一実施形態によれば、エンドポートとともに用いるためのデフォルトのMLIDテーブルをサポートするHCAは、デフォルトのMLIDテーブルが使用中であるかどうかを示す属性を含むことができる。たとえば、デフォルトのMLIDテーブルを含み、その使用をサポートするHCAは、DefaultMLIDTableInUse(デフォルトのMLIDテーブル使用
中)属性を含むこともできる。SMが、サポートするエンドポートのMLIDテーブルを更新すると、この属性は、SMによって「真」にセットされることができる。IBクライアントは、この属性を用いて、クライアントに関連するMLID値を、サポートするエンドポートのデフォルトのMLIDテーブルから学習/取得することができるかどうかを判断することができる。
【0330】
一実施形態によれば、以下のリスティング3に示される擬似コードは、エンドポートのパーティションテーブルに従ってエンドポートのデフォルトのMLIDテーブルを更新する方法を示す。
【0331】
【0332】
図37は、一実施形態による、エンドポートのパーティションテーブルに従ってエンドポートのデフォルトのMLIDテーブルを更新する方法のフローチャートである。
図37を参照して、(およびリスティング3の擬似コードに反映されるように、)エンドポートのP_Keyテーブルを更新する際、SMは、最初に、エンドポートがデフォルトのMLIDテーブルをサポートするかどうかの判断を、そのように示す属性(例えば、HasDefaultMLIDsTable属性)を確認することにより行なうことができる。エンドポートがデフォルトのMLIDテーブルをサポートしていない場合(例:エンドポートのHasDefaultMLIDsTable属性が偽の場合)、SMは、エンドポートのパーティションテーブルを更新する必要がある場合には、エンドポートのパーティションテーブルを更新し続けることができる。ただし、エンドポートがデフォルトのMLIDテーブルをサポートする(したがって、含む)場合(たとえば、エンドポートのHasDefaultMLIDsTable属性が真の場合)、SMは、エンドポートのデフォルトのMLIDテーブルが使用中であるかどうか示すエンドポートの属性の値を確認することができる。
【0333】
引き続き
図37を参照し、エンドポートのデフォルトのMLIDテーブルが使用中であるかどうかを示すエンドポートの属性(たとえば、エンドポートのDefaultMLIDTableInUse属性)が真にセットされている場合、およびエンドポートのパーティションテーブルの
更新が必要な場合、SMはこの属性を真にセットされるままにし、エンドポートのデフォルトのMLIDテーブルをクリアし、エンドポートのパーティションテーブルを更新してから、エンドポートの更新されたパーティションテーブルに基づいてエンドポートのデフォルトのMLIDテーブルを更新することができる。
【0334】
逆に、エンドポートのデフォルトのMLIDテーブルが使用中であるかどうかを示すエンドポートの属性(たとえば、エンドポートの DefaultMLIDTableInUse属性)が偽にセットされている場合、SMは、エンドポートのデフォルトのMLIDテーブルをクリアして、この属性を真にセットすることができる。次いで、エンドポートのパーティションテーブルが更新を必要とする場合、SMはパーティションテーブルを更新することができる。最後に、SMは、更新されたエンドポートのパーティションテーブルに基づいて、エンドポートのデフォルトのMLIDテーブルを更新することができる。
【0335】
図38は、一実施形態による、IBクライアントにより、サポートするエンドポートのデフォルトのMLIDテーブルからデフォルトのMLID値を判断するための方法のフローチャートである。
図38を参照すると、サポートするエンドポートのデフォルトのMLIDテーブルからデフォルトのMLIDを取得/学習する際に、IBクライアントはまず、関連するローカルエンドポートのP_Keyテーブルの内容が変更または更新されたかどうかを判断することができる。これは、たとえば、IBクライアントが認識しているローカルポートイベントによって判断することができる。ローカルエンドポートのP_Keyテーブルの内容に変更があると判断されると、P_Keyテーブルの内容をローカルキャッシュにコピーすることができる。IBクライアントは、ローカルエンドポートがデフォルトのMLIDテーブルをサポートしていること(例:エンドポートのHasDefaultMLIDsTable属性が真であること)およびMLIDテーブルが使用中であること(例:エンドポートのDefaultMLIDTableInUse属性が真であること)をチェックすることができる。両方
の属性が真にセットされている場合、エンドポートのP_Keyテーブル内の各有効なエントリについて、IBクライアントは、エンドポートのデフォルトのMLIDテーブル内の対応するエントリがデフォルトのMLIDを示すまで(たとえば、エントリが非零になるまで)待機し、次いで、MLIDテーブルの内容をローカルキャッシュにコピーすることができる。
【0336】
実施形態に従って、以下のリスティング4に示す疑似コードは、IBクライアントが、サポートしているエンドポートのデフォルトのMLIDテーブルからデフォルトのMLID値を判断する方法を示す。
【0337】
【0338】
一実施形態によれば、デフォルトのMLIDテーブルの使用、構成、および/または管理をサポートするIB実装例は、デフォルトのMLIDテーブルの使用、構成、および/または管理で用いられる属性(例えば、上記の属性)についての状態変更イベントを含むことができる。さらに、デフォルトのMLIDテーブルの使用、構成、および/または管理をサポートするIB実装例は、デフォルトのMLIDテーブルの使用、構成、および/または管理で用いられる属性(たとえば、上記の属性)の値を問い合わせるための動詞インターフェイスを含むことができる。
【0339】
図39は、一実施形態による、高性能コンピューティング環境において追加のサブネット管理エージェント(SMA)属性としてパーティションごとにデフォルトのマルチキャストローカル識別子(MLID)値を提供する方法のフローチャートを示す。ステップ3900で、パーティションキーを格納するためのテーブルがサブネットのノードに提供され、パーティションキーはサブネットのパーティションを定義する。ステップ3910で、マルチキャストローカル識別子を格納するためのテーブルがサブネットのノードに提供される。ステップ3920で、パーティションキーを格納するためのテーブルの要素とマルチキャストローカル識別子を格納するためのテーブルの要素との関係が構成され、この関係は、パーティションキーを格納するためのテーブルの要素を、マルチキャストローカル識別子を格納するためのテーブルの要素にマッピングする。ステップ3930で、サブネットのサブネットマネージャへの通信がノードから送信され、この通信は、ノードがマルチキャストローカル識別子を格納するためのテーブルをサポートすることを示す。ステップ3940で、パーティションキーがノードで受信される。ステップ3950で、マルチキャストローカル識別子がノードで受信される。ステップ3960で、パーティションキーは、パーティションキーを格納するためのテーブルに格納される。ステップ3970で、マルチキャストローカル識別子は、マルチキャストローカル識別子を格納するためのテーブルに格納される。ステップ3980で、パーティションキーを格納するためのテーブルの要素とマルチキャストローカル識別子を格納するためのテーブルの要素との間の関係を用いて、マルチキャストローカル識別子を格納するためのテーブルからマルチキャストローカル識別子を検索する。ステップ3990で、ノードのマルチキャストグループレコード内のマルチキャストローカル識別子フィールドに、マルチキャストローカル識別子を格納するためのテーブルから検索されたマルチキャストローカル識別子がポピュレートされる。
【0340】
エンドポートによるMLIDのダイナミックディスカバリ
IB仕様によれば、IBマルチキャストメッセージを受信するには、QPをマルチキャストグループにアタッチする(つまり、マルチキャストグループを表すMGIDに関連付ける)必要がある。QPは、IB動詞を用いてマルチキャストグループに対してアタッチまたはデタッチされる。IB動詞は、セマンティクスのセットを含むサービスインターフェイスであり、HCAの必要な動作を、HCAが提供するI/Oサービスの消費者(IBクライアント)に公開する。動詞は、作業要求をHCAに提出し、完了ステータスを返すための特定のキューイングモデルに基づいてHCAとIBクライアントの間で行われる操作を記述する。動詞は、チャネルアダプタの構成および管理、キューペアの割り当て(作成および破棄)、QP操作の構成、QPへの作業要求のポスティング、完了キューからの完了ステータスの取得に必要なパラメータを記述する。
【0341】
IBクライアントが、それが参加したいMCGのMGIDを知っていることが、IB仕様の要件である。従来の参加要求では、IBクライアントに関連付けられたエンドポートは既知のMGIDをSMに渡し、SMはエンドポートを参加させるMCGを認識する。さらに、上記のように、IBマルチキャストメッセージを受信するために、QPをマルチキャストグループにアタッチする(つまり、マルチキャストグループを表すMGIDに関連付ける)必要がある。したがって、一実施形態によれば、HCAは、参加要求をSMに送信することなく、ローカルQPを関連するマルチキャストグループ(MCG)のMGIDと関連付けるIBクライアントをサポートすることができる。したがって、このようなサポートするHCAのエンドポートは、SMに、パケットの受信元であるMCGにおいてメンバーシップを要求する参加要求を送信することなく、MCGのマルチキャストパケットを受信し始めることができる。
【0342】
図40は、一実施形態による、高性能コンピューティング環境において、関連するMGID(マルチキャストグローバル識別子)について受信マルチキャストメッセージにおいてマルチキャストグループマルチキャストローカル識別子(MLID)ダイナミックディスカバリを提供する方法のフローチャートを示す。ステップ4000で、ローカルの信頼できないデータグラム(UD)QPをMCGのMGIDに関連付けることができる。ステップ4005で、MCGからのマルチキャストパケットをULPで受信することができる。ステップ4010で、ULPは、マルチキャストパケットからMCGのMLIDを判断することができる。ステップ4015で、ULPは、MCGのMLIDを別のUD QPに関連付けることができる。ステップ4020で、ローカルMCGアドレスキャッシュを更新して、MLIDとMCG/MGIDとの関連付けを反映することができる。
【0343】
一実施形態によれば、HCAは、MLIDが知られていない状態でMGID(すなわち、MCG)とのQP関連付けをサポートするかどうかを判断するために評価することができるクエリパラメータをサポートすることができる。例えば、「NoMLIDRequiredForQPMCGAttach(QPMCGアタッチのためにMLIDを必要としない)」パラメータが、サポートするHCAにおいて照会可能パラメータとして含まれてもよい。このようなパラメータのデフォルト値は「偽」である。HCAインターフェイスプロバイダは、HCA実装例がQP対MCG関連付け操作中にMLID(例:MLIDパラメータにおける0の値など)をサポートする場合、パラメータを「真」にセットすることができる。そのようなパラメータは、IBクライアントによって照会されて、QP対MCG関連付け操作中に、HCAが未知のMLID(例:MLIDパラメータにおける0の値)をサポートするかどうかを判断してもよい。パラメータの照会のため、および未知のMLIDでのQP対MCG関連付けのために、インターフェイスプロバイダによって、適切な動詞を提供することもできる。
【0344】
一実施形態によれば、リスティング5は、照会されたHCAがQP対MCG関連付け操作中に未知のMLIDをサポートするかどうかに応じて、QPをMCGに関連付けるため
の例示的な擬似コードを示す。
【0345】
【0346】
図41は、一実施形態による、高性能コンピューティング環境において、関連するMGID(マルチキャストグローバル識別子)について受信マルチキャストメッセージ上においてマルチキャストグループマルチキャストローカル識別子(MLID)ダイナミックディスカバリを提供する方法のフローチャートである。より具体的には、この図は、MLIDの有無にかかわらずMCGとのローカルQP関連付けを判断するためのフローチャートを示す。
【0347】
この方法は、ステップ4105でローカルQPを作成することから開始することができる。QPをMCGに、MLIDが指定されない状態でアタッチすることができる旨を、ローカルHCA情報が示す場合(ステップ4110)、ステップ4115で、関連するMGIDを指定する操作を介してQPをMCGにアタッチすることができるが、MLID=0である。そうでない場合、ステップ4125で、関連するMCGに参加し、関連するMLIDで応答を取得する、従来のSA要求を実行することができる。次に、ステップ4130で、関連のMGIDおよびSAから応答で受信されるMLID値を指定する、QPをMCGにアタッチする操作を実行することができる。
【0348】
エンドポートからのMCGへの参加要求により、通常、マルチキャストパケット配信の2つの必要な側面が確実に実行される。まず、正常な参加要求は、SMが、要求元エンドポートを、要求元エンドポートが参加を要求したMCGのマルチキャストルートに組み込むことを含む。次に、1つ以上のQPが、エンドポートが参加を要求したMCGのMGIDに関連付けられる。上述のように、第2の局面を実行するための情報は、例えば、IBクライアントまたはULPに既知であるので、第2の局面は、エンドポートがSMに参加要求を送信することなく実行することができる。さらに、これも前述のように、SMは管理/サブネットポリシーの問題として、またはMCGの「作成参加」操作の副作用として、MCGのマルチキャストルートに適切なエンドポートを暗黙的に組み込むことができ、‐たとえば、関連するエンドポートは、前述のように、パーティションメンバーシップに関連して定義されたMCGメンバーシップのプロダクトとして、MCGのスパニングツリールートに含めることができる。したがって、一実施形態によれば、エンドノードが従来の参加要求をSMに送信することなく、マルチキャストパケットをエンドノードで受信することができる。
【0349】
ただし、マルチキャストパケットを送信するには、エンドポートはMCGに関連付けられたMLIDを知っている必要がある。IB仕様では、MCGに参加するためにエンドノードがMCGのMLIDを認識する必要はなく、なぜならば、従来、MLIDは、SMに
よって、エンドポートに、SMが参加要求に応答してエンドポートに返すMCMemberRecord属性において提供されるためである。ただし、エンドポートがMCGのマルチキャストルートに組み込まれ、QPが同じMCGのMGIDに関連付けられている、と想定できる場合、エンドポートには、従来の参加要求の送信およびそれに対する応答の受信を超えてMCGのMLIDを学習する、他のオプションがある。
【0350】
一実施形態によれば、IBクライアント/ULPは、IBクライアント/ULPに関連付けられたエンドポートで受信されたマルチキャストパケットのMLIDフィールドを検査することからMCGのMLIDを学習することができる。各マルチキャストパケットには、パケットが関連付けられているMCGのMGIDも含まれる。したがって、IBクライアント/ULPは、受信したマルチキャストパケットに含まれるMGIDを判断し、MLID(つまり、受信したマルチキャストパケットのDLID)を検査し、検出されたMLIDを、受信したパケットから判断されるMGIDによって表されるMCGのMLIDとして保存する。したがって、IBクライアント/ULPは、従来のMCG参加要求を送信およびそれに対する応答を受信することなく、MCGのMLIDを動的に学習することができる。
【0351】
MGIDを判断し、マルチキャストパケットのMLIDフィールドを検査して、MCGのMLIDを学習する際の課題の1つは、関連するMGIDを含む最初のマルチキャストパケットが送信されなければならないことである。一実施形態によれば、作成/参加操作を実行するエンドポートによって動的に作成されるMCGに関して、作成するエンドポートに関連付けられるIBクライアント/ULPは、最初のマルチキャストパケット(例えば、無償ARP)を送信するように構成することができる。MCGメンバーエンドポートは、この配信されたパケットで検査を実行することができる。
【0352】
ただし、SMが作成したMCGの場合、マルチキャストグループの作成後に最初のマルチキャストパケットを送信することを担う、作成するMCGメンバーエンドポートはない。一実施形態によれば、そのような場合、SM/SA(または関連する特別なサービス‐例えば、SMと協調して実行するデーモン)は、最初のマルチキャストパケットの生成を担い得る。ただし、MCGについて最初のマルチキャストパケットを生成する場合、SM(またはデーモン)は、パケットが生成されるべきマルチキャストパケットプロトコルを認識しなくてもよい。一実施形態によれば、任意のMCGメンバーエンドポートに配信され、ULP/IBクライアントによって一様に処理されることができる汎用マルチキャストパケットタイプを定義する規則が、最初のマルチキャストパケットを送信する際に、SMによって使用されることができる。このような規則に従って、関連するIBクライアント/ULPは、この規則に準拠するマルチキャストパケットを、パケットに含まれるMLIDおよびパケットに含まれるその他のMLID関連情報の検査/学習を除き、無視することができる。
【0353】
実施形態によれば、関連するMLIDおよびMGID(すべてのマルチキャストパケットにデフォルトで含まれる)に加えて、最初のマルチキャストパケットは、含まれるMLIDがパーティション固有のMLID(つまり、上記のように、関連するパーティションのコンテキストにおいて作成されるすべてのMCGに対するデフォルトMLID)であるかどうかを示す情報を含むことができる。たとえば、最初のマルチキャストパケットの規則またはプロトコルは、最初のマルチキャストパケットが、(たとえば、特別な最初のマルチキャストパケットペイロードおよび/または最初のマルチキャストパケットヘッダ内において、)パーティション固有のMLID、または専用MLID、を識別するかどうかを示す情報を含んでもよい。最初のマルチキャストパケットがパーティション固有のMLIDを識別する場合、最初のマルチキャストパケットは、パケットのMLIDがデフォルトのMLIDであるパーティションのP_Keyを含むこともできる。
【0354】
一実施形態によれば、パーティション固有のデフォルトMLID(上で詳細に説明した)がサブネットで用いられる場合、任意のエンドポートが、特定のパーティションのコンテキストにおいて定義される任意のMCGのMLIDを、特定のパーティションに関連付けられた任意のマルチキャストパケットのMLIDを検査することによって、学習することが可能である。これは、別の専用(つまり、パーティション固有ではない)MLID(または専用MLIDのペア)がMCGに関連付けられる場合でも当てはまり、なぜならば、IBには、エンドノードついて、任意のMGIDとともに用いられるよう特定のMLIDを実施する要件はなく、IB仕様では、複数のMGIDを単一のMLIDに明示的に関連付けることが許可されるからである。
【0355】
一実施形態によれば、リスティング6は、着信マルチキャストパケットから学習されたMLIDを既知のMGIDと関連付け、(必要な場合には)デフォルトのMLIDテーブルを更新するための例示的な擬似コードを示す。
【0356】
【0357】
図42は、一実施形態による、高性能コンピューティング環境において、関連するMGID(マルチキャストグローバル識別子)について受信マルチキャストメッセージ上でマルチキャストグループマルチキャストローカル識別子(MLID)ダイナミックディスカバリを提供する方法のフローチャートである。より具体的には、この図は、最初のマルチキャストパケット規則に準拠し、(たとえば、特別な最初のマルチキャストパケットペイロードおよび/または最初のマルチキャストパケットヘッダ内において)最初のマルチキャストパケットがパーティション固有のMLID、または専用MLID、を識別するかどうかを示す情報を含むパケットを含む着信MCパケットの結果としてMLIDを登録するためのフローチャートを示す。
【0358】
この方法は、着信マルチキャストパケットを受信するステップ4205で開始することができる。マルチキャストパケットが最初のマルチキャストパケット(たとえば、最初のマルチキャスト規則またはプロトコルに準拠するパケット)であり、最初のマルチキャストパケットが専用(非パーティション固有)MLIDを示す場合(ステップ4210)、
受信パケットからMCG MLIDを反映するローカルMCG情報を、ステップ4215で更新することができる。そうではなく、ステップ4225で、マルチキャストパケットが最初のマルチキャストパケットであり、最初のマルチキャストパケットがパーティション固有のMLIDを示す場合には、ステップ4230で、ローカルパーティション情報を更新して、受信したマルチキャストパケットからパーティション固有のMLIDを反映することができる。そうでない場合には、ステップ4245で、この方法は、受信したMGIDに関連付けられるローカルMCG情報を見つけることができる。MLIDがMCGに関連付けられていないか、またはMCG MLIDがパーティションMLIDと同じである場合、この方法は、ステップ4255で、ローカルMCG情報を更新して、受信したマルチキャストパケットからMLIDを反映することができる。
【0359】
一実施形態によれば、リスティング7は、パーティション固有のMLIDと発信パケットのための専用のMLIDとの両方を追跡するための例示的な擬似コードを示す。
【0360】
【0361】
図43は、一実施形態による、パーティション固有のMLIDおよび発信マルチキャストパケット用の専用MCG MLIDの両方のレコードを維持するためのフローチャートを示す。ステップ4305で、発信MCパケットからMGIDが検索される。ステップ4310で、検索されたMGIDのMCGレコードが探索される。判断4315で、MCGレコードが専用MCG MLIDを反映する場合、ステップ4320でパケット宛先LIDがMCGレコードからの専用MCG MLIDに設定され、MCパケットはステップ4350で送信される。そうではなく、MCGに関連付けられるパーティションが、関連付けられたデフォルト(パーティション固有)MLIDを有する場合には(ステップ4325)、パケット宛先LIDはMCGのパーティションに関連付けられたデフォルトMLIDに設定され、MCパケットはステップ4350で送信される。そうでなければ(ステップ4335で)、この方法は、マルチキャストパケットを送信することができる前にMLIDを判断しなければならないことを記録することができ、ステップ4335でタイムアウト期間を開始することができる。関連するMGIDのMLIDが判断されたかどうかは
、タイム期間が終了するまで引き続きチェックされることができる。MLIDがタイムアウト期間の満了までに判断されていない場合、この方法はタイムアウトして終了することができる(ステップ4355)。ただし、タイムアウト期間内に(たとえば、ステップ4315または4325のいずれかで)MLIDが判断される場合、正しいMLIDでパケットを送信することができる。
【0362】
含まれるMLIDの検査/学習のための最初のマルチキャストパケットの配信に関連するさらに別の課題は、ホストノードおよび関連付けられるエンドノードがサブネットの開始/初期化においてだけでなく、いつでも開始/初期化できることである。したがって、このような遅延到着ノード/ULP/エンドポートが関連するMLIDを効果的に学習できるようにすることを保証するために、「最初の」MCパケット(たとえば、上記のように、MLID学習パケット規則に準拠する最初のマルチキャストパケット)の、定期的な、時間を設定された送信は、遅延開始/初期化ノード/エンドポートによるMLID学習が妥当な遅延内でMLIDを学習することができるように実行されなければならない。
【0363】
一実施形態によれば、リスティング8は、特別な最初のマルチキャストパケットプロトコルの使用と、IPoIBが有効にされた状態でのパーティションにおける逆アドレス解決プロトコル(RARP)などのプロトコルの利用との両方で、最初のマルチキャストパケットを送信するための例示的な擬似コードを示す。このコードは、たとえば、関連するMCGの作成を担当するコンポーネントに関連付けられたSM共存デーモンから実行することができる。関連するパーティションごとに1つのデーモンコンテキストが存在することができる。
【0364】
【0365】
図44は、一実施形態による、高性能コンピューティング環境においてマルチキャストローカル識別子のエンドノードダイナミックディスカバリを提供する方法のフローチャートを示す。ステップ4410で、サブネットのマルチキャストグループを定義するマルチキャストグローバル識別子が、サブネットのノードでマルチキャストグループレコードに含まれる。ステップ4420で、ノードのポートに関連付けられるキューペアが、サブネット内のマルチキャストグループを定義するマルチキャストグローバル識別子に関連付けられ、それにより、キューペアをマルチキャストグローバル識別子に関連付けることにより、ポートが、マルチキャストグローバル識別子を含むマルチキャストパケットを受信することを可能にする。ステップ4430で、マルチキャストグローバル識別子およびマルチキャストローカル識別子を含むマルチキャストパケットがノードで受信される。ステップ4440で、マルチキャストパケットは、マルチキャストローカル識別子を学習するために検査される。ステップ4450で、学習されたマルチキャストローカル識別子は、サブネットのノードでマルチキャストグループレコードに含まれる。
【0366】
デフォルトおよび専用MLIDの明示的なMLID割り当て
従来の実装例では、異なるマスターSMインスタンスが、ローカル状態情報に基づいて、およびIBクライアントが新たなマルチキャストグループが定義されるよう要求した結果として、MLID値を割り当てる。このような場合では、どのようなマスターSMの再
起動もしくはフェールオーバー、またはどのようなサブネットマージ操作も、異なるMLIDが異なるMGIDに用いられる(つまり、ことなるMGIDからMLIDへのマッピング)に至る可能性があり、それによって、マルチキャスト通信が関連するエンドポート間で再び完全に動作可能になる前に些細ならぬ遅延を生じる可能性がある。
【0367】
一実施形態によれば、(上記のような)パーティション固有のデフォルトMLID値が使用中である実装例において、どのMLIDがどのパーティションに用いられるかを明示的に定義する明示的なMLID割り当てポリシーを(例えば管理入力として)提供することができる。さらに、MLID割り当てポリシーは、どの専用MLIDを所与のMGIDに関連付けるかを定義することもできる(たとえば、パーティションに依存しないMLID)。このようなMLID割り当てポリシーを採用することにより、新たなまたは再起動されたマスターSMは、新たなMGIDからMLIDへのマッピングを生成する代わりに、既存のIBパーティションに用いられるMLIDを観察(および検証)することができる。このようにして、対応するMGIDに対するMLID関連付けにおける変更を、マスターSMの再起動もしくはフェールオーバーまたはサブネットマージ操作の結果として、回避することができる。
【0368】
図45は、一実施形態による、SMポリシー入力として定義されるパーティション固有のデフォルトMLIDについて明示的なマルチキャストローカル識別子(MLID)割り当てを提供する方法のフローチャートを示す。ステップ4500で、この方法は、サブネットのサブネットマネージャに、複数のパーティションのうちのあるパーティションについてデフォルトMLID値を提供することができる。ステップ4505で、この方法は、サブネットへのアクセスおよび制御を有するマスターサブネットマネージャをオフラインにすることができる。ステップ4510で、この方法は、サブネットへのアクセスおよび制御を有する新たなマスターサブネットマネージャを起動することができる。ステップ4515で、この方法は、複数のパーティションのうちのあるパーティションのデフォルトMLID値を新たなマスターサブネットマネージャに提供することができる。ステップ4520で、この方法は終了することができる。
【0369】
図46は、一実施形態による、SMポリシー入力として定義されるパーティションごとのデフォルトMLIDについて明示的なマルチキャストローカル識別子(MLID)割り当てを提供する方法のフローチャートを示す。特に、
図46は、サブネット再ディスカバリ中に既存のMLID/P_Keyインデックス(たとえば、前述のP_KeyテーブルからデフォルトのMLIDテーブルへのマッピング)関連付けを検証する方法のフローチャートである。この方法は、サブネットディスカバリを実行し、発見されたHCAポートについてP_Keyテーブルの内容および任意の定義済みのMLIDテーブルの両方をキャッシュすることができる。発見された各HCAポートについて、キャッシュされたP_Keyテーブルの内容が現在のメンバーシップポリシーと同期していない場合、この方法はCAポートがパーティションテーブルの更新を必要とすることを記録することができる。それ以外の場合、HCAポートがMLIDテーブルをサポートし、かつMLIDテーブルが現在のP_Keyテーブルと同期していないか、またはMLIDテーブルの内容が現在のP_KeyごとのMLID割り当てと同期していない場合には、この方法はHCAポートがMLIDテーブルの更新を必要とすることを記録することができる。次に、この方法は、サブネットの再ルーティングを実行し、パーティションメンバーシップが変更されたパーティションごとのMLIDに新たなスパニングツリーを生成することができる。この方法は、次いで、P_Keyテーブルおよび/またはMLIDテーブルの更新に対する記録されたニーズに従って、サブネットの再初期化を実行し、各CAポートを更新することができる。
【0370】
一実施形態によれば、MLID割り当てポリシーは、4つのポリシー変数の値を指定す
ることができる。MLID割り当てポリシーは、(たとえば、管理入力を介して)サブネットにおいて明示的に定義されるMCGに割り当てられるMLIDの範囲の開始値と終了値とを指定することができる。さらに、MLID割り当てポリシーは、エンドポートによって動的に作成されるMCGに割り当てられるMLIDの範囲の開始値と終了値とを指定することができる。MLIDは各タイプのMCGに割り当てられるので、割り当ては、たとえば不揮発性フォーマットで保存することができ、現在のマスターSMおよび将来のSMは、MLIDからMGID(つまり、MCG)へのマッピングを判断することができ、新たなMLIDからMGIDへのマッピングを作成する代わりに、これらのマッピングを再利用することができる。
【0371】
従来の実装例では、サブネット内のすべてのパーティション定義は、SMへの明示的なポリシー入力に基づいている。一実施形態によれば、従来のパーティションポリシー入力規則を拡張して、明示的なMLID割り当てポリシーを含めることができる。たとえば、SMは、パーティションを作成するためのサブネットパーティションポリシー入力を受信することができる。ポリシー入力には、パーティション番号(つまりP_Key)、パーティション名、IPoIBフラグ(IPoIBがパーティションメンバーに対して有効にされることを示す)、およびサブネット内のポートのメンバーシップ仕様を含めることができる。さらに、ポリシー入力には、ポリシー入力の結果としてパーティションのコンテキストにおいて作成されるMCGに割り当てられるMLIDの値であるMLID値を含めることができる。一実施形態によれば、ポリシー入力に含まれるMLID値は、正規パーティションメンバーMLIDの値を示し、制限付きパーティションMLID値を導出することができる(またはその逆)(上述の)規則に準拠するベース値とすることができる。
【0372】
一実施形態によれば、例えば上記の明示的なポリシー入力を用いて、パーティションのコンテキストにおいてMCGが作成される場合、MLID値は、サブネットにおいて明示的に定義されるMCGについて割り当てられるMLIDの範囲からのMLID値であることができる。一実施形態によれば、MLID値は、ポリシー入力で明示的に定義されなくてもよく、サブネットにおいて明示的に定義されるMCGについて割り当てられるMLIDの範囲から、SMによって、割り当てられることができる。
【0373】
一実施形態によれば、MLID割り当てポリシーを採用するサブネットでは、MLIDからMGIDへのマッピングを変更することなく、サブネットのマージおよび分割を行うことができる。独立したサブネット間のスイッチ間クロスリンクは、MLIDからMGIDへの再マッピングを必要とせずに、MCパケットの選択的な転送に用いることができる。さらに、グローバルルートヘッダからローカルルートヘッダへのマッピングを実行するべくヘッダマッピングリソースを割り当てる必要なく、異なるIBサブネット間のIB間ルータベースの接続を実現することができる。
【0374】
図47は、一実施形態による、サブネットマージ操作前において、SMポリシー入力として定義されるパーティション固有のデフォルトMLIDに対する明示的なマルチキャストローカル識別子(MLID)割り当てを各々が有する2つの独立したファットツリーベースのサブネットを示す。
図47に示すように、各サブネット、サブネット4702および4704には、各サブネットのスパニングツリーのルートとして単一のスパインスイッチを有する、関連するMCG/MLIDのためのスパニングツリーが含まれる。サブネット4702では、スパインスイッチ4730は、(スイッチ4730を定義する太線で示されているように)サブネット4702のスパニングツリーのルートである。同様に、スイッチ4733は、サブネット4704のスパニングツリーのルートである。一実施形態に従って(例えば、上記のように)、スパニングツリーが生成され、対応するMFTがスイッチに配布されている。
【0375】
引き続き
図47を参照すると、一実施形態によれば、サブネット4702のスパニングツリーは、スイッチ4730をサブネット4702のスパニングツリーのルートとして示すことができる。この場合、スパニングツリーには、スイッチ4731への/からのリンクは含まれない。同様に、サブネット4704のスパニングツリーは、スイッチ4733をサブネット4704のスパニングツリーのルートとして示すことができ、スイッチ4732への/からのリンクは含まない。
【0376】
図48は、サブネットマージ操作後において、SMポリシー入力として定義されるパーティション固有のデフォルトMLIDに対する明示的なマルチキャストローカル識別子(MLID)割り当てを有する単一のファットツリーベースのサブネットを示す。
図48に示すように、サブネットマージ操作は、元の各サブネット(つまり、
図47のサブネット4702および4704)からスパインを相互接続することによって実現される。一実施形態によれば、各元のサブネットで同じポリシーベースのMLIDを採用しながら、マージ後に必要な唯一の再構成は、相互転送を実行するようスパインスイッチ4830および4833のMFTを更新することにより2つの元のスパニングツリーを論理的に接続することである。したがって、スイッチ4830に到着し、スイッチ4833の下流で接続されているエンドポートに向かうすべてのマルチキャストトラフィックをスイッチ4833に転送する、スイッチ4830のMFTにおけるエントリを作成することができる。このようなパケット(スイッチ4830から転送される)がスイッチ4833に到着すると、MLID割り当てポリシーの結果として生成された元のMFTは、パケットをMCGメンバーのエンドポートに転送する。したがって、スパインスイッチ4830のMFTのみをサブネットマージの結果として更新する必要がある。同様に、スパインスイッチ4833のMFTのみを更新して、スイッチ4833で受信されスパインスイッチ4830の下流のエンドポートに向かうパケットをスイッチ4830に転送する必要がある。スパインスイッチの「下流」エンドポートは、たとえばHCA4801~4812となるであろう。
【0377】
アナウンスメントおよびディスカバリのためのデフォルトマルチキャストグループ(MCG)
一実施形態によれば、IB仕様は、SA要求に用いられるLIDおよびSL(サービスレベル)値を指定するPortInfo要素を定義することにより、および各ポートがデフォルトパーティションの少なくとも限定付きメンバーであることを指定することにより、ノードからのIB通信のブートストラップの問題を解決する。
【0378】
一実施形態によれば、同様に、IP‐over‐IB仕様(InfiniBand仕様の一部ではない)は、IPからIBへのアドレス解決に用いることができるデフォルトマルチキャストグループ(MCG)を定義する。ただし、IP‐over‐IBはIB仕様の一部ではないため、汎用IBのディスカバリ、アナウンスメント、およびアドレス解決スキームに関して依存することができる機能ではない。
【0379】
したがって、実施形態によれば、SAアクセスに依存せずに充分に定義された方法でIBマルチキャスト動作を可能にするために、少なくとも1つのIBマルチキャストグループ(MCG)をサブネットマネージャによって定義し、拡張SMA属性を介してIBクライアントに通信することができる。
【0380】
一実施形態によれば、MCG定義を追加のSMAレベル情報として含めることにより、異なるIBクライアントバージョンが関連付けられるMGIDに関して同期していることに対する依存性はない。また、サブネットマネージャは、現在予約されていない1つ以上のMGID値を予約し、SMが自身の使用のために予約するよう意図するMGID値を伴うMCGの作成を防ぐこともできる。
【0381】
一実施形態によれば、SMAレベルで定義される専用MCGの追加的局面は、それが関連するポートに対して定義される任意のパーティションとともに用いることができるように指定することができることであり、その場合、IBクライアントは、MCメッセージを送信するときに、そのパーティションに定義されたパーティション固有のMLIDを用いることができる。
【0382】
一実施形態によれば、基本的なアナウンスメントプロトコルを実装するために、ポートおよびノード属性のピアツーピア交換に用いられるものと同じメッセージフォーマットを用いることができる。ただし、この場合、送信元のアドレス情報のみが指定され、ターゲットは指定されず、応答も期待されない。
【0383】
一実施形態によれば、アドレス解決およびディスカバリも実施するために、1つの特定のノードからの期待される応答とともにターゲットGIDまたはGUIDを指定する1つの要求メッセージフォーマットを用いることができる。また、利用可能なピアノードの一般的なディスカバリを可能にするために、完全または部分的にワイルドカード化されたターゲットを指定し、すべての関連する受信者がユニキャスト応答をそれらのローカル情報とともに送信することができる。‐このスキームは、送信されるマルチキャストメッセージが少ないことを意味するため、IBファブリックを介して転送され、異なるノードで受信される「無関係な」マルチキャストメッセージの数に関して全体のオーバーヘッドが削減される。
【0384】
一実施形態によれば、上記の開示により、様々なInfiniBand仕様の強化/追加が企図される。このような追加のSMA属性の1つは、デフォルト値が偽の「DefaultMCG(デフォルトMCG)」をサポートするポート機能である。この属性は、リンクアップ時に、サポートするSMAによって真にセットすることができる。真にセットすると、SMまたはマスターSMは関連するSMAプロパティを更新することができる。
【0385】
一実施形態によれば、128ビット整数である「DefaultMCGMGID(デフォルトMCGMGID)」を設定することができる(デフォルト0‐すなわち、DefautlMCGポート機能が偽の場合)。
【0386】
一実施形態によれば、32ビット整数である「DefaultMCGMQ_Key」を設定することができる(デフォルト0‐すなわち、DefautlMCGポート機能が偽の場合)。
【0387】
一実施形態によれば、IB仕様は、従来のMCGメタデータを、MGID、P_Key、MLID、および他の属性を含むものとして定義する。上記で企図されることは、新たなMCG対複数のMLID(またはMLIDペア)値の関連付けを定義する。特別なMCGメタデータは、(たとえば、拡張PortInfoのからの「FabricGlobalMinimalPathParameters」に基づいて、)(拡張PortInfoからの)MGID、パーティショングローバルフラ
グ、およびその他の属性を含むことができる。PartitionGlobalFlagは、MCGを、ロー
カルで定義されたP_Key値および対応するP_Key固有のMLIDとともに、送信時の宛先MLIDとして用いることができることを意味する。
【0388】
一実施形態によれば、アナウンスメントマルチキャストメッセージを提供することができる。アナウンスメントMCメッセージは、MCメッセージのGRHおよびLRHの一部として送信元GUIDおよび送信元LIDを含むことができる。アナウンスメントメッセージの受信者は、送信元に関するキャッシュされた情報を更新することができる。
【0389】
一実施形態によれば、ターゲット固有のディスカバリ要求MCメッセージを提供することができる。このメッセージは、MCメッセージのGRHおよびLRHの一部として、送
信元GUIDおよび送信元LIDを含むことができる。メッセージタイプは、ターゲットディスカバリメッセージであってもよい。このアナウンスメントメッセージの受信者は、指定されたターゲット情報がローカル情報の完全一致またはワイルドカード一致を表すかどうかを確認し、該当する場合はユニキャスト応答を関連するローカル情報とともに送信することができる。
【0390】
一実施形態によれば、上記の開示により、様々なInfiniBand仕様の強化/追加が企図される。そのような拡張機能の1つは、新たなクラスのアナウンスメントおよびディスカバリプロトコルメッセージである。これらには、アナウンスメントマルチキャストメッセージ、ターゲット固有のディスカバリ要求マルチキャストメッセージ、およびディスカバリ応答ユニキャストメッセージを含めることができる。
【0391】
図49は、一実施形態による、高性能コンピューティング環境において拡張ポート情報としてアナウンスメントおよびディスカバリのためにデフォルトマルチキャストグループ(MCG)を提供する方法のフローチャートを示す。
【0392】
一実施形態によれば、ステップ4900で、この方法はサブネットを提供することができ、サブネットは2つ以上のノードを含み、2つ以上のノードの第1のノードは第1のバージョンの仕様を含み、第2のノードは第2のバージョンの仕様を含む。
【0393】
一実施形態によれば、ステップ4905で、この方法は、サブネットマネージャによって、デフォルトMGIDとして用いられるマルチキャストグローバル識別子を予約する。
【0394】
一実施形態によれば、ステップ4910で、この方法は、サブネット管理エージェントで、デフォルトMGIDを含むマルチキャストグループ定義を提供する。
【0395】
一実施形態によれば、ステップ4915で、この方法はサブネットの他の要素を発見することができ、このディスカバリは少なくともマルチキャストグループ定義に基づいている。
【0396】
図50は、一実施形態による、高性能コンピューティング環境において拡張ポート情報としてアナウンスメントおよびディスカバリのためにデフォルトマルチキャストグループ(MCG)を提供する方法のフローチャートを示す。
【0397】
実施形態によれば、ステップ5010で、この方法は、1つ以上のマイクロプロセッサにおいて、第1のサブネットを提供することができ、第1のサブネットは複数のスイッチを含み、複数のスイッチは少なくともリーフスイッチを含み、複数のスイッチの各々は、複数のスイッチポートのうちの少なくとも1つのスイッチポートを含み、第1のサブネットは、さらに、複数のホストチャネルアダプタを含み、各ホストチャネルアダプタは、複数のホストチャネルアダプタポートのうちの少なくとも1つのホストチャネルアダプタポートを含み、複数のホストチャネルアダプタは複数のスイッチを介して相互接続され、第1のサブネットは、さらに、サブネットマネージャを含み、サブネットマネージャは、複数のスイッチおよび複数のホストチャネルアダプタの一方で実行される。
【0398】
一実施形態によれば、ステップ5020で、この方法は、サブネットマネージャによって、少なくともマルチキャストグローバル識別子(MGID)によって定義されるマルチキャストグループを定義することができる。
【0399】
一実施形態によれば、ステップ5030で、この方法は、定義されたMCGを、複数のホストチャネルアダプタに対して、MGIDとともに、サブネット管理エージェント(S
MA)属性を介して、通信することができる。
【0400】
一実施形態によれば、ステップ5040で、この方法は、複数のエンドノードのうちの送信側エンドノードを介して、定義されたMCGを利用するアナウンスメントメッセージを複数のエンドノードに送信することができ、このアナウンスメントメッセージは少なくとも送信側エンドノードのローカル識別子を含む。
【0401】
スケーラブル転送用のデフォルトマルチキャストグループプロキシ(5836)
一実施形態によれば、情報を交換する必要があるノードの数が増加すると、すべてのN個のノードが他のすべてのノードに対してアドレス解決を実行するようマルチキャストメッセージを送信する際に基本的な複雑さがN乗されるため、ブロードキャストベースのアナウンスメントおよびディスカバリ/アドレス解決プロトコルのスケーラビリティが低下する。
【0402】
一実施形態によれば、単一の要求マルチキャストメッセージにおける複数のターゲットノードのアドレス解決の要求の集約により、スケーラビリティを高めることができるが、大きなノードセットの場合、これは依然として限られたスケーラビリティを有する。
【0403】
一実施形態によれば、任意の数のノードをカバーするようにプロトコルをスケーリングするために、システム全体が複数のドメインに分割され、各ドメインが関連プロトコルのMCGプロキシインスタンスによって表される階層スキームを導入することができる。
【0404】
一実施形態によれば、そのような各プロキシインスタンスは、それのドメイン内のノードからMCベースのアナウンスメントおよび要求を受信することができるが、そのようなMC要求はローカルドメインの境界を越えて直接送信されないであろう。代わりに、さまざまなプロキシは、プロキシ間のMCベースのプロトコルの組み合わせ、およびプロキシのペア間のピアツーピアトラフィックとしてのデータのバルク転送を介して、情報を交換することができる。
【0405】
一実施形態によれば、プロキシは、サブネット/ファブリック内のSMと協働することもでき、SMに代わって、利用可能なノードのためにMCベースのアナウンスメントを送信することができる(すなわち、ユニキャストベースのSAイベント通知と同様)。
【0406】
一実施形態によれば、特権プロキシは、関与するクライアントノードに対してプロキシの存在を透過的にする態様で、他のノードに代わってメッセージを送信することができるモードで動作することを許可されてもよい。この場合、プロキシは、要求または応答を転送するときに、関連するノードのソースアドレス情報を用いることができるであろう。
【0407】
一実施形態によれば、このようにして、デフォルトパーティション(参照管理パーティション)において正規メンバーとして動作するプロキシは、制限付きメンバークライアントノードからのディスカバリ要求に応答することができ、それにより、関与するクライアントノードの実際のパーティションメンバーシップに基づく可視性ルールを実施することができるであろう。
【0408】
一実施形態によれば、プロキシにより転送または生成される要求、応答、およびアナウンスメントは、プロキシインスタンスを含むものとして明示的に識別されてもよい。この場合、そのようなメッセージを受信するクライアントノードは、メッセージのIBソースアドレスが、メッセージが関係する関連のピアノードにではなく、プロキシに関連付けられていることを知っているだろう。
【0409】
単一のサブネット内のドメイン間で必要な分離を提供するために、SMはドメイン境界およびさまざまなプロキシインスタンスを識別することができる必要があり、単一の論理MCGでも、マルチキャストルーティングが設定され、非プロキシにより送信されるMCパケットは、ドメインから外に転送されない。
【0410】
一実施形態によれば、異なるIBスイッチ間にドメイン境界が存在する限り、同じMLIDを、異なるドメインにおいて、ドメイン間の「偶発的な転送」なしに用いることができる。ただし、1つのIBスイッチを2つの異なるドメインで共有する場合、同じ論理MCGについて2つのMLIDを割り当てなければならないであろう。したがって、実際には、単一のスイッチ内にドメイン境界があることは意味をなさないであろう。
【0411】
一実施形態によれば、ファットツリーベースのトポロジーでは、個々のリーフスイッチを単一のドメインとして有することは意味をなすであろうと考えられるか、または、独自のスイッチのセットを有するが、関与するすべてのリーフスイッチ間に完全に冗長な物理接続を有するサブツリーが、ドメインを表し得る。
【0412】
一実施形態によれば、様々なIB仕様の拡張が想定される。1つのそのような拡張は、アナウンスメントおよびディスカバリプロトコルメッセージの拡張であり得る。このような拡張により、プロキシの生成および転送の明示的な表現が可能になるであろう。
【0413】
一実施形態によれば、別のそのような拡張は、プロキシ間通信用の特定のプロトコルを可能にすることができるが、ベンダー、コンソーシアム、またはディストリビューション固有の革新および付加価値のための領域として残すこともできる。
【0414】
一実施形態によれば、ドメインおよびプロキシ対応のマルチキャストルーティングを提供するために、SMは、ドメイン境界および個々のプロキシポートの両方を認識しなければならない。これは、SM実装固有の構成ポリシーを介して実現することができるか、または、プロキシの存在およびドメイン境界の両方がノードローカル構成情報を表す場合には、インバンドディスカバリを介して実現することができるかもしれない。
【0415】
図51は、一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供する方法のフローチャートを示す。
【0416】
一実施形態によれば、ステップ5100で、この方法は、階層を複数のドメインに分割することができ、複数のドメインの各々は、マルチキャストグループプロキシインスタンスを含む。
【0417】
一実施形態によれば、ステップ5105で、この方法は、MCGプロキシインスタンスで、MCGプロキシインスタンスのドメイン内のノードからMCベースのアナウンスメントを受信することができる。
【0418】
一実施形態によれば、ステップ5110において、この方法は、MCGプロキシインスタンスにより、別のドメイン内の別のMCGプロキシインスタンスに、MCベースのアナウンスメントに含まれる情報を送信することができる。
【0419】
一実施形態によれば、ステップ5115で、この方法は、MCGプロキシインスタンスにより、MCベースのアナウンスメントに含まれる情報をサブネットマネージャに送信することができる。
【0420】
一実施形態によれば、ステップ5120で、この方法は終了することができる。
図52は、一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供するシステムを示す。
【0421】
より具体的には、この図は、プロキシインスタンスが各リーフスイッチに関連付けられる任意のファブリックのシステムを示す。システム5200は、ドメインA 5250、ドメインB 5251、ドメインC 5252など、いくつかの任意のドメインに分割することができる。このシステムは、HCA1~HCA9 5210~5218などの多数のホストチャネルアダプタ、およびスイッチ1~スイッチ6 5240~5245などのHCAを相互接続する多数のスイッチを含むことができる。HCAは、1つの以上のホスト/エンドノード(図示せず)をシステム5200に接続した。
【0422】
一実施形態によれば、特定のスイッチ(例えば、定義された各ドメイン内の1つのスイッチ)をプロキシとして定義することができる。図示の実施形態では、スイッチ1 5240、スイッチ3 5242、およびスイッチ5 5244がプロキシとして定義される。特定の実施形態では、これらのスイッチは、特定のプロトコルのマルチキャストグループプロキシインスタンスとして定義することができる。
【0423】
一実施形態によれば、そのような各プロキシインスタンスは、それのドメイン内のノードからMCベースのアナウンスメントおよび要求を受信することができるが、そのようなMC要求はローカルドメインの境界を越えて直接送信はされないであろう。代わりに、さまざまなプロキシは、情報を、他のプロキシとの間で、MCベースのプロトコルを組み合わせを介して交換したり、プロキシのペア間で、ピアツーピアトラフィックとして、データのバルク転送を介して交換したりすることができる。
【0424】
一実施形態によれば、プロキシは、サブネット/ファブリック内のSMと協働することもでき、SMに代わって、利用可能なノードのためにMCベースのアナウンスメントを送信することができる(すなわち、ユニキャストベースのSAイベント通知と同様)。
【0425】
図53は、一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供するシステムを示す。
【0426】
より具体的には、この図は、プロキシが特定のサイズ‐単一レベル‐の各サブツリーに関連付けられる中規模のファットツリーベースのファブリックを示す。スイッチプロキシ1 5301は、左サブツリーまたはサブツリー1 5330を処理し、サブツリー1 5330は、スイッチ1 5310およびスイッチ2 5311と、HCA1~HCA3
5320~5322とを含む。同様に、スイッチプロキシ2 5302は、右サブツリーまたはサブツリー2 5331を処理し、サブツリー2 5331は、スイッチ3 5312およびスイッチ4 5313と、HCA4~HCA6 5323~5325とを含む。
【0427】
図54は、一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供するシステムを示す。
【0428】
より具体的には、この図は、プロキシが階層的なサブツリー、複数のレベルに関連付けられる、大きなファットツリーベースのファブリックを示す。太字の境界線を有するスイッチはプロキシインスタンスを表し、1つは各スパインベースのサブツリーにあり、1つ
はスパインレベルプロキシ間の集約を提供するルートスイッチレベルにある。
【0429】
一実施形態によれば、ファブリックは、HCA 5401~HCA 5412などのいくつかのHCA、およびツリートポロジーの様々なレベルにおけるいくつかのスイッチを含むことができる。図示の実施形態では、スイッチ5420~5427はリーフレベルスイッチであり、スイッチ5440~5443はルートレベルスイッチである。スイッチ5430~5433は中間レベルのスイッチである。
【0430】
一実施形態によれば、太字の境界線を有するスイッチ、すなわち、スイッチ5430、スイッチ5432、およびスイッチ5440は、プロキシインスタンスを表す。スイッチ5430は左端のサブツリーのプロキシインスタンスであり、スイッチ5432は右端のサブツリーのプロキシインスタンスである。スイッチ5440は、サブツリープロキシインスタンス間の集約を提供するルートレベルのプロキシインスタンスである。
【0431】
図55は、一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供する方法のフローチャートを示す。
【0432】
一実施形態によれば、ある方法では、プロキシは、他のプロキシに転送するか、または他のプロキシと相談する必要があってもよい。
【0433】
一実施形態によれば、この方法は、ステップ5501でメッセージを受信することができる。この方法は、ステップ5502でメッセージの内容に基づいてローカル情報を更新することができる。受信したメッセージがローカルドメイン内のノードからの情報要求であり、関連情報がローカルにキャッシュされている場合、この方法はステップ5504で応答メッセージを関連情報とともに送信することができる。関連情報がローカルにキャッシュされていない場合、この方法は、ステップ5505で関連のピアプロキシのセットに情報要求を送信することができる。
【0434】
一実施形態によれば、受信したメッセージが異なるドメイン内のプロキシからの情報要求である場合、この方法は現在キャッシュされているローカル情報に基づいて応答を送信することができる。
【0435】
一実施形態によれば、受信したメッセージが別のドメイン内のプロキシからの応答または更新である場合、この方法は、受信した情報を待っていた保留中の要求を完了することができる。この方法は、ローカルドメインの関連ノードに更新通知を送信し、他のドメインの関連プロキシに更新通知を送信することができる。
【0436】
図56は、一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供する方法のフローチャートを示す。
【0437】
ステップ5601で、この方法はプロキシでメッセージを受信することができる。
ステップ5602で、この方法は、メッセージの内容に基づいてローカル情報を更新することができる。
【0438】
ステップ5603で、この方法は、受信したメッセージがローカルドメイン内のノードからの情報要求メッセージであったかどうかを判断することができる。
【0439】
ステップ5604で、メッセージがローカルドメイン内のノードからの情報要求メッセ
ージである場合、この方法は、関連情報がローカルにキャッシュされているかどうかを判断することができる。
【0440】
ステップ5605で、関連情報がローカルにキャッシュされている場合、プロキシは応答メッセージを関連情報とともに送信することができる。
【0441】
ステップ5606で、関連情報がローカルにキャッシュされていない場合、プロキシは関連のピアプロキシのセットに情報要求を送信することができる。
【0442】
ステップ5607で、受信したメッセージが別のドメインのプロキシからのものであった場合、この方法は、受信したメッセージが別のドメインのプロキシからの情報要求であったかどうかを判断することができる。
【0443】
ステップ5608で、受信したメッセージが別のドメインのプロキシからの情報要求であった場合、プロキシは現在キャッシュされているローカル情報に基づいて応答を送信することができる。
【0444】
ステップ5609で、メッセージが別のドメインのプロキシからの情報要求でなかった場合、プロキシはメッセージが別のドメインのプロキシからの応答または更新であったかどうかを判断することができる。
【0445】
ステップ5610で、メッセージが別のドメインのプロキシからの応答または更新であったという判断で、プロキシは、受信した情報を待っていた保留中の要求を完了することができる。
【0446】
ステップ5611で、プロキシは、更新通知をローカルドメイン内の関連するノードに送信することができる。
【0447】
ステップ5612で、プロキシは更新通知を他のドメイン内の関連するプロキシに送信することができる。
【0448】
図57は、一実施形態による、高性能コンピューティング環境においてアナウンスメントのスケーラブルな転送および情報要求インターセプトのためにデフォルトマルチキャストグループ(MCG)プロキシを提供する方法のフローチャートを示す。
【0449】
実施形態によれば、ステップ5710で、この方法は、1つ以上のマイクロプロセッサにおいて、第1のサブネットを提供することができ、第1のサブネットは複数のスイッチを含み、複数のスイッチは少なくともリーフスイッチを含み、複数のスイッチの各々は、複数のスイッチポートのうちの少なくとも1つのスイッチポートを含み、第1のサブネットは、さらに、複数のホストチャネルアダプタを含み、各ホストチャネルアダプタは、複数のホストチャネルアダプタポートのうちの少なくとも1つのホストチャネルアダプタポートを含み、複数のホストチャネルアダプタは複数のスイッチを介して相互接続され、第1のサブネットは、さらに、サブネットマネージャを含み、サブネットマネージャは、複数のスイッチおよび複数のホストチャネルアダプタの一方で実行される。
【0450】
一実施形態によれば、ステップ5720で、この方法は、サブネットアドミニストレータによって、第1のサブネットを2つ以上の論理ドメインに分割することができ、各論理ドメインは、複数のスイッチの少なくとも1つのスイッチおよび複数のホストチャネルアダプタの少なくとも1つのホストチャネルアダプタを含む。
【0451】
一実施形態によれば、ステップ5730で、この方法は、サブネットマネージャによって、2つ以上の論理ドメインの各々内にデフォルトマルチキャストグループプロキシを定義することができ、各デフォルトマルチキャストグループプロキシはキャッシュに関連付けられる。
【0452】
一実施形態によれば、ステップ5740で、この方法は、2つ以上の論理ドメインの第1の論理ドメイン内の第1のマルチキャストグループプロキシで、2つ以上の論理ドメインの第2の論理ドメイン内の第2のマルチキャストグループプロキシから、情報に対する要求を受信することができる。
【0453】
一実施形態によれば、ステップ5750で、この方法は、第1のMCGプロキシによって、第1のMCGプロキシに関連付けられた第1のキャッシュ内で、受信した要求に応答する情報をチェックすることができる。
【0454】
一実施形態によれば、ステップ5760で、この方法は、第1のMCGプロキシによって、第2のMCGプロキシに、要求に応答する情報を含む応答メッセージを送信する。
【0455】
複数のパーティションでMCベースのアナウンスメントを受信するためのQP1の使用
一実施形態によれば、一般管理パケット(GMP)のために充分に定義された宛先として用いられるキューペア1(QP1)を伴うある独自の機能は、通常のQPとは異なり、単一のパーティションに関連付けられるだけでなく、代わりに、関連するポートに現在関連付けられているすべてのパーティションに代わって送信および受信の両方に対して動作することができることである。
【0456】
一実施形態によれば、QP1の範囲を拡張して、ポートに対して定義された任意のパーティションでマルチキャストパケットを送受信することも含めることにより、個々のパーティションに対する独自のQPの複雑さも、パーティションメンバーシップの変更の結果としてのQP構成の更新も必要とせずに、汎用なMCベースのアナウンスメントおよびディスカバリを実現することができる。
【0457】
一実施形態によれば、ポートのデフォルトMGIDは、SMAレベルで定義されているため、この機能をサポートするポートに対しては本質的に充分に定義される。したがって、おそらくはこのようなMCトラフィックに対してQP1の使用を有効または無効にするためのサポートを除き、特別な初期化手順は必要ない。
【0458】
一実施形態によれば、IBクライアントは、いずれにせよ、関連するパーティションに対して特に割り当てられる他のQPを介して、関連するMCトラフィックを処理することを許可されるであろう。任意のQP MCG関連付けと同様に、同じMCGに関連付けられる複数のローカルQPが存在することができ、したがって、異なるパーティションにおけるデフォルトMCGトラフィックに対する専用QPの使用を、同じパーティションに対するQP1の使用の代わりに、またはそれに加えて、用いることができる。
【0459】
一実施形態によれば、プロキシを含むリモートノードに対して、異なるパーティションでのデフォルトMCGトラフィックに対するQP1または専用QPの使用は、一般に、GMPトラフィックの場合のそれを除き、完全に透過的であることができ、着信要求のソースQPを対応する(ユニキャスト)応答の宛先QPとして用いることが可能であるはずである。ただし、この方式は、ソースQPがQP1であるかまたは他のQP番号であるかに関係なく、同じ態様で当てはまる。
【0460】
一実施形態によれば、パーティションごとに専用のMLIDを利用することにより、I
Bクライアントは、任意のローカルパーティションでアナウンスメントおよびディスカバリメッセージを送信し、それを追加の初期化なしに関連するすべてのピアノードに受信してもらうことができる。
【0461】
一実施形態によれば、プロキシベースの動作の場合、関連するドメインプロキシがドメインごとのデフォルトパーティションで通知を送信することも可能であろうが、異なるパーティションのMLIDを用い、関連するノードのみが対応するメッセージを受信するであろう。パーティション固有のMLIDは、関連する実際のメンバーのルーティングを有するであろうが、プロキシが用いるポートは依然として送信専用メンバーとして含まれ得る。
【0462】
一実施形態によれば、プロキシがすべての関連するパーティションでポートメンバーシップを有する場合、デフォルトパーティションを用いる代わりに特定のパーティションでそのようなMCメッセージを送信することを選択することができる。
【0463】
一実施形態によれば、IB仕様は、QP1を介するMCトラフィックのためにHCAサポートを照会する動詞インターフェイス、およびサポートされる場合にこの機能を有効化および無効化するポート固有の動作を含むように拡張することができる。
【0464】
図58は、一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いる方法のフローチャートを示す。
【0465】
一実施形態によれば、ステップ5800で、この方法は、InfiniBandサブネットにおいて、各パーティションが1つ以上のエンドノードを含む複数のパーティションを提供することができる。
【0466】
一実施形態によれば、ステップ5805で、この方法は、2つ以上のパーティションからのマルチキャストパケットの送信および受信を含むよう、キューペア1を拡張した。
【0467】
一実施形態によれば、ステップ5810で、この方法は、キューペア1を介した汎用なマルチキャストベースのアナウンスメントを実現することができる。
【0468】
一実施形態によれば、ステップ5815で、この方法は終了することができる。
図59は、一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いるシステムを示す。
【0469】
より具体的には、この図は、各パーティションに対して専用のアナウンスメントQPを備えたデフォルトスキームを示す。
【0470】
一実施形態によれば、インフィニバンドファブリックなどのファブリック内のHCAの、ポート1 5901などのポートは、パーティションテーブルと、キューペアA 5902、キューペアB 5903、キューペアC 5904、キューペアD 5905、キューペアE 5906などのマルチキャストアナウンスメント用の専用キューペアとを備えるようにセットアップすることができる。関連付けられたマルチキャストグループに従って、各キューペアを、異なるパーティションキーに関連付けることができる。
【0471】
図60は、一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP
1)を用いるシステムを示す。
【0472】
より具体的には、この図は、パーティションメンバーシップ処理の結果としてのアナウンスメントQPポピュレーションの再構成を示す。
【0473】
一実施形態によれば、インフィニバンドファブリックなどのファブリック内のHCAの、ポート1 6001などのポートは、パーティションテーブルと、キューペアA 6002、キューペアB 6003、キューペアC 6004、キューペアE 6005、およびキューペアF 6006などの、マルチキャストアナウンスメントのための専用キューペアとを備えるようにセットアップすることができる。関連付けられたマルチキャストグループに従って、各キューペアを異なるパーティションキーに関連付けることができる。
【0474】
一実施形態によれば、
図60は、
図59に示されるシステムのパーティションメンバーシップの変更後の再構成を示す。
【0475】
図61は、一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いるシステムを示す。
【0476】
より具体的には、この図は、アナウンスメントが行われたときに新たなQPが配置されていないためにアナウンスメントが失われる特別な競合状態を示す。
【0477】
一実施形態によれば、インフィニバンドファブリックなどのファブリック内のHCAのポート1 6101などのポートは、パーティションテーブルと、キューペアA 6102、キューペアB 6103、キューペアC 6104、キューペアD 6105、キューペアE 6106などのマルチキャストアナウンスメント用の専用キューペアとを備えるようにセットアップすることができる。関連付けられたマルチキャストグループに従って、各キューペアを、異なるパーティションキーに関連付けることができる。
【0478】
一実施形態によれば、
図61は、マルチキャストグループFからのマルチキャストアナウンスメントを処理するために新たなキューペア(QP F)をセットアップすることができる前の、
図60のシステムを示す。MC情報メッセージ6110がポート1で受信される状況において、ポート1は、キューペアFがP_KeyFおよび/またはマルチキャストグループFに対して確立されていないため、MC情報メッセージを処理できない。
【0479】
図62は、一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いるシステムを示す。
【0480】
より具体的には、この図は、QP1が拡張された接続管理ユニキャストメッセージとマルチキャストベースのアナウンスメントメッセージとの両方を受信する簡略化されたスキームを示す。
【0481】
一実施形態によれば、インフィニバンドファブリックなどのファブリック内のHCAの、ポート1 6201などのポートは、パーティションテーブルを含むようにセットアップすることができる。同様に、ポートは、キューペア1 6202が6220などの拡張された接続管理ユニキャストメッセージおよび6210などのマルチキャスト情報メッセージの両方に用いられる単純化されたスキームを利用することができる。
【0482】
一実施形態によれば、ユニキャスト管理メッセージおよびマルチキャスト情報メッセージの両方にキューペア1を採用することにより、システムは
図61に示される競合状態を回避することができる。
【0483】
一実施形態によれば、QP1の範囲を拡張して、ポートのために定義された任意のパーティションでマルチキャストパケットを送受信することも含めることにより、 個々のパ
ーティションに対する独自のQPの複雑さも、パーティションメンバーシップの変更の結果としてのQP構成の更新も必要とせずに、汎用なMCベースのアナウンスメントおよびディスカバリを実現することができる。
【0484】
一実施形態によれば、ポートのデフォルトMGIDは、SMAレベルで定義されているため、それは、この機能をサポートするポートに対しては本質的に充分に定義される。したがって、おそらくはこのようなMCトラフィックに対してQP1の使用を有効または無効にするためのサポートを除き、特別な初期化手順は必要ない。
【0485】
一実施形態によれば、IBクライアントは、いずれにせよ、関連するパーティションに対して特に割り当てられる他のQPを介して、関連するMCトラフィックを処理することを許可されるであろう。 任意のQP MCG関連付けと同様に、同じMCGに関連付け
られる複数のローカルQPが存在することができ、したがって、異なるパーティションにおけるデフォルトMCGトラフィックに対する専用QPの使用を、同じパーティションに対するQP1の使用の代わりに、またはそれに加えて、用いることができる。
【0486】
図63は、一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いるシステムを示す。
【0487】
より具体的には、この図は、デフォルトのMCG/MGIDに関連付けられるQPの存在が、QPの確立とアナウンスメントMCパケット6310の受信との間の競合状態を除去することを示す。
【0488】
一実施形態によれば、QP1 6302は、ポート1 6301によって使用されるように、MCG‐Speに永久的に関連付けることができ、SMが関連付けられたポートに対してセットアップしたどのようなP_Key値のセットにも常に関連付けられる。
【0489】
図64は、一実施形態による、高性能コンピューティング環境において複数のパーティションでマルチキャストベースのアナウンスメントを受信するためにキューペア1(QP1)を用いる方法のフローチャートを示す。
【0490】
実施形態によれば、ステップ6410で、この方法は、1つ以上のマイクロプロセッサにおいて、第1のサブネットを提供することができ、第1のサブネットは複数のスイッチを含み、複数のスイッチは少なくともリーフスイッチを含み、複数のスイッチの各々は、複数のスイッチポートのうちの少なくとも1つのスイッチポートを含み、第1のサブネットは、さらに、複数のホストチャネルアダプタを含み、各ホストチャネルアダプタは、複数のホストチャネルアダプタポートのうちの少なくとも1つのホストチャネルアダプタポートを含み、複数のホストチャネルアダプタは複数のスイッチを介して相互接続され、第1のサブネットは、さらに、サブネットマネージャを含み、サブネットマネージャは、複数のスイッチおよび複数のホストチャネルアダプタの一方で実行される。
【0491】
一実施形態によれば、ステップ6420で、この方法は、複数のパーティションのすべてのパーティションからマルチキャストパケットを受信するようにキューペア1をセット
アップすることができる。
【0492】
一実施形態によれば、ステップ6430で、この方法は、複数のホストチャネルアダプタのうちのあるホストチャネルアダプタに関連付けられたローカルノードから、アナウンスメントマルチキャストパケットを通信することができる。
【0493】
一実施形態によれば、ステップ6440で、この方法は、キューペア1を利用して第1のサブネット内でアナウンスメントマルチキャストパケットを転送することができる。
【0494】
GUID/GIDからLIDへのキャッシュコンテンツの基礎として着信MCパケットを用いる(5838)
一実施形態によれば、すべてのマルチキャストパケットはグローバルルートヘッダ(GRH)を有するため、着信マルチキャストパケットに対して定義されるソースGIDおよびソースLIDの両方が常に存在する。これは、一般に、HCA実装例が、すべての着信MCパケットに基づいて、送信元ノードについてGIDおよびGUIDからLIDへのマッピングに関する情報を収集することが可能であることを意味する。
【0495】
一実施形態によれば、「AllSubnetLocalChannelAdapterLIDsUsable」フラグ値および「RouterSourceLIDsReversible」フラグ値が真または偽であるかどうかについてローカルSMAレベルのプロパティと相関させることにより、およびローカルデフォルトMCGについて着信する明示的なプロキシMCメッセージを識別できることに基づいて、ローカルポートロジックは、GIDおよび/またはGUIDと対応するLIDとの間のマッピングを含む動的キャッシュを構築および維持することができる。
【0496】
一実施形態によれば、着信作業要求処理を処理するためにHCA固有の機能が存在する限り、この種のキャッシングロジックをHCAのCI(チャネルインターフェイス)インターフェイスの下に維持することが可能である。
【0497】
一実施形態によれば、そのようなキャッシュ保守の実行は大きなオーバーヘッドを表さないが、それはゼロではなく、したがってこの理由から、この機能の有効化はポートおよび個々のQPレベルの両方で明示的に制御可能でなければならない。
【0498】
一実施形態によれば、本開示により、様々なIB仕様の拡張が企図される。第1の拡張機能は、MCベースのアドレスマップキャッシングのHCAサポートを照会するための新たな動詞インターフェイス、ならびにこれをポートごとおよびQP(QP1を含む)ごとレベルの両方で有効および無効にする制御操作を含むことができる。キャッシュがサポートされて有効になっている場合、キャッシュの内容を監視および制御するための動詞インターフェイスが存在する必要がある。
【0499】
図65は、一実施形態による、高性能コンピューティング環境においてグローバル一意識別子(GUID)からローカル識別子(LID)へのキャッシュコンテンツの基礎としてすべての着信マルチキャスト(MC)パケットを用いる方法のフローチャートを示す。
【0500】
一実施形態によれば、ステップ6500で、この方法は、複数のマルチキャストグループを含むサブネットを提供することができる。
【0501】
一実施形態によれば、ステップ6505で、この方法はマルチキャストパケットを受信することができ、マルチキャストパケットは、ソースグローバル識別子(GID)およびソースローカル識別子(LID)を定義するグローバルルータヘッダ(GRH)を含む。
【0502】
一実施形態によれば、ステップ6510で、この方法は、GRHならびにソースGIDおよびソースLIDをローカルサブネット管理エージェント(SMA)レベルプロパティと相関させることができる。
【0503】
一実施形態によれば、ステップ6515で、この方法は動的キャッシュを構築することができ、キャッシュはソースGIDまたはソースGUIDと対応するLIDとの間のマッピングを含む。
【0504】
一実施形態によれば、ステップ6520で、この方法は終了することができる。
図66は、一実施形態による、高性能コンピューティング環境においてグローバル一意識別子(GUID)からローカル識別子(LID)へのキャッシュコンテンツの基礎としてすべての着信マルチキャスト(MC)パケットを用いるシステムを示す。
【0505】
一実施形態によれば、この図は、CIインターフェイス、およびCIインターフェイスの下のGUIDからLIDへのキャッシュの存在の図を示す。
【0506】
一実施形態によれば、汎用な動詞インターフェイス6601およびチャネルプロバイダインターフェイス6602(CI)を備えるホストチャネルアダプタでは、動詞インターフェイスのプラットフォーム固有の実装6603およびGIDまたはGUIDからLIDへのマッピングキャッシュ6604を、CIレベルの下に提供することができる。
【0507】
図67は、高性能コンピューティング環境においてグローバル一意識別子(GUID)からローカル識別子(LID)へのキャッシュコンテンツの基礎としてすべての着信マルチキャスト(MC)パケットを用いるシステムを示す図である。
【0508】
一実施形態によれば、この図は、CIインターフェイス上の標準の受信機能およびIBクライアントが着信MCパケットの結果としてキャッシュ更新を認識していない図を示す。
【0509】
一実施形態によれば、次いで、MCパケットを受信すると、HCAはプラットフォーム固有の受信機能6703を実行し、GID/GUIDからLIDへのキャッシュ6704においてMCパケットのGRHに基づいてGID/GUIDからLIDへのマッピングをキャッシュするが、受信機能6701など、CI6702の上の何も、そのようなキャッシュを認識しない。次に、たとえば、MCメッセージ完了メッセージを汎用受信機能に送信することができる。
【0510】
一実施形態によれば、メッセージ交換の数を低減するために、接続管理動作を実行する前に、ローカルキャッシュを用いて「相談」する。
【0511】
一実施形態によれば、宛先ノードへの新たな接続をセットアップするときに、ローカルGID/GUIDからLIDへのキャッシュマッピングを用いることができる。宛先ノードに既知/(キャッシュに)保存されたGUID/GIDがない場合、ローカルノードは典型的なARPタイプの操作を用いて宛先ノードのGUID/GIDを取得することができる。一方、宛先ノードのGID/GUIDが(以前のMCメッセージから)キャッシュに保存されている場合、宛先ノードのGID/GUIDからLIDへのマッピングを用いて、メッセージのアドレスを作成することができる。
【0512】
図68は、一実施形態による、高性能コンピューティング環境においてグローバル一意識別子(GUID)からローカル識別子(LID)のキャッシュコンテンツの基礎としてすべての着信マルチキャスト(MC)パケットを用いる方法のフローチャートを示す。
【0513】
実施形態によれば、ステップ6810で、この方法は、1つ以上のマイクロプロセッサにおいて、第1のサブネットを提供することができ、第1のサブネットは複数のスイッチを含み、複数のスイッチは少なくともリーフスイッチを含み、複数のスイッチの各々は、複数のスイッチポートのうちの少なくとも1つのスイッチポートを含み、第1のサブネットは、さらに、複数のホストチャネルアダプタを含み、各ホストチャネルアダプタは、複数のホストチャネルアダプタポートのうちの少なくとも1つのホストチャネルアダプタポートを含み、複数のホストチャネルアダプタは複数のスイッチを介して相互接続され、第1のサブネットは、さらに、サブネットマネージャを含み、サブネットマネージャは、複数のスイッチおよび複数のホストチャネルアダプタの一方で実行される。
【0514】
一実施形態によれば、ステップ6820で、この方法は、第1のサブネット内において複数のマルチキャストグループを定義することができる。
【0515】
一実施形態によれば、ステップ6830において、この方法は、第1のサブネット内のノードで、ソースグローバル識別子(GID)およびソースローカル識別子(LID)を定義するグローバルルートヘッダ(GRH)を含むマルチキャストパケットを受信することができる。
【0516】
一実施形態によれば、ステップ6840で、この方法は、サブネットマネージャによって、少なくともソースグローバル識別子と対応するソースローカル識別子との間のマッピングを含む動的キャッシュを構築することができる。
【0517】
デフォルトIB MCGを介してIBおよびIPアドレスならびに名前解決を組み合わせる(5839)
一実施形態によれば、IBファブリックにおけるノード/ポートのほとんどのアドレス指定およびノード識別スキームは、RDMA‐CMおよび通信するエンドノードのアプリケーションレベル識別としてのIPアドレスの使用に基づいているため、IPアドレスからIBアドレスへのマッピング、ならびにノードおよびインターフェイスとの記号名関連付けを解決することが必要である。
【0518】
一実施形態によれば、デフォルトIB MCGを活用するアナウンスメントおよびディスカバリプロトコルに基づいてIBアドレスを解決するための効率的でスケーラブルなスキームに基づいて、プロトコルを拡張して、IPアドレスおよび記号名情報を含める機能を含めることもできる。
【0519】
一実施形態によれば、より具体的には、プロトコルは、TLV(タイプ‐長さ‐値)スタイルの汎用表現を用いてアプリケーション固有の値を提供するためのオプションを含むことができる。このようにして、IBアドレスマッピングが要求される、アプリケーション固有の引数(例:IPアドレス)を有する要求を発行でき、そのようなTLVの任意のセットを含む応答およびアナウンスメントメッセージを有することも可能であろう。
【0520】
一実施形態によれば、コアIBアドレスキャッシュに基づいて、様々なTLVをキャッシュ内のIBアドレスに関連付けることができ、探索基準として用いることもできる。このようにして、両方のさまざまなIPアドレス、記号名、MACアドレスなどをすべて、関連するIBアドレス情報に関連付け、各ノードの単一キャッシュで維持し、IBファブリック上で単一のメッセージで伝達することもできる。
【0521】
図69は、一実施形態による、高性能コンピューティング環境において、デフォルトのIBマルチキャストグループを介して、組み合わされたIBおよびIPアドレスならびに
名前解決スキームを提供する方法のフローチャートを示す。
【0522】
一実施形態によれば、ステップ6900で、この方法は、複数のマルチキャストグループを含むサブネットを提供することができる。
【0523】
一実施形態によれば、ステップ6905で、この方法は、インフィニバンドアドレスマッピングを求める、アプリケーション固有の引数を有する要求を発行することができる。
【0524】
一実施形態によれば、ステップ6910で、この方法は、要求に応答して、アプリケーション固有の引数に対応するIBアドレスマッピングを発行することができる。
【0525】
一実施形態によれば、6915で、アプリケーション固有の引数は、IPアドレス、TLV、記号名、およびMACアドレスのうちの1つである。
【0526】
一実施形態によれば、ステップ6920で、この方法は終了することができる。
図70は、一実施形態による、高性能コンピューティング環境において、デフォルトのIBマルチキャストグループを介して、組み合わせられたIBおよびIPアドレスならびに名前解決のスキームを提供するシステムを示す。より具体的には、この図は、従来のGUIDからLIDへのキャッシュを示す。
【0527】
一実施形態によれば、従来のGUIDからLIDへのキャッシュは、GUIDのためのハッシュ関数7001と、バケット1 7002からバケットN 7004などのN個のバケットと、GUID7005をLID7006に関係付けるいくつかのバケットエントリとを含むことができる。
【0528】
一実施形態によれば、GUIDからLIDへのキャッシュは、固定された機能として利用することができる。TLVベースのノード情報レコードを用いると、そのようなレコードの動的リストを、関連付けられたインデックス付けスキームで維持することができる。
【0529】
一実施形態によれば、サポートされる各情報タイプ(例えば、IP、MACアドレスなど)について、ハッシュベースのGUIDからLIDへのキャッシュに類似した専用の探索インフラストラクチャを提供することができる。ただし、この場合、探索される値は、ノード情報レコードリストのメインインデックスにアクセスするためのインデックス値である。
【0530】
一実施形態によれば、探索機能は、サポートされるTLVを入力として取り、一致する場合には、関連するレコードを返す。追加のパラメータは、探索の範囲を制限することができる(たとえば、名前の探索を特定のパーティションに制限することができる)。
【0531】
一実施形態によれば、任意の情報のための汎用TLVを備えた拡張通知マルチキャストパケットプロトコルを用いることができる。送信元GUIDと送信元LIDは、マルチキャストパケットおよびユニキャストパケットのGRHおよびLRHの一部であり、‐GRHは両方に必要である。
【0532】
一実施形態によれば、複数のメッセージを用いて、単一のメッセージが含むことができるものよりも多くのTLVベースの情報を表すことができる。
【0533】
図71は、一実施形態による、高性能コンピューティング環境においてデフォルトのIBマルチキャストグループを介して組み合わされたIBおよびIPアドレスならびに名前解決スキームを提供する方法のフローチャートを示す。
【0534】
より具体的には、このフローチャートは、IBアドレス(GIDおよびLID)をマッピングするため、または追加のTLVでキャッシュレコードを完成するために、TLV(タイプ‐長さ値)タイプおよび値を入力できる汎用キャッシュ探索スキームを示す。
【0535】
一実施形態によれば、ステップ7101で、この方法を開始することができる。
一実施形態によれば、ステップ7102で、この方法は、指定されたタイプがキャッシュインスタンスによってサポートされることを保証することができる。つまり、この方法は、受信メッセージの、指定されたタイプが、当該メッセージが受信されるノード内で実行されているキャッシュインスタンスによってサポートされていることを保証することができる。
【0536】
一実施形態によれば、ステップ7103で、この方法は、関連するタイプに対するハッシュ構造を用いて、関連するインデックス(すなわち、受信メッセージの、指定されたタイプをサポートするインデックス)を探索することができる。
【0537】
一実施形態によれば、ステップ7104で、インデックスが見つかった場合、この方法は、見つかったインデックス(すなわち、見つかったインデックスを意味する、関連するタイプをサポートする正しい見つかったインデックス)を用いて、関連するレコード(すなわち、GRHまたはGUID/LIDおよびLIDマッピング)を探索することができる。
【0538】
一実施形態によれば、ステップ7105で、この方法は、探索されたレコードから要求された情報を返すことができる。
【0539】
一実施形態によれば、ステップ7106で、インデックスが見つからない/位置を突き止められない場合、この方法は、インデックスが見つからない、および/または指定されたタイプがサポートされていない、というメッセージを返すことができる。
【0540】
図72は、一実施形態による、高性能コンピューティング環境において、デフォルトのIBマルチキャストグループを介して、組み合わされたIBおよびIPアドレスならびに名前解決スキームを提供する方法のフローチャートを示す。
【0541】
実施形態によれば、ステップ7210で、この方法は、1つ以上のマイクロプロセッサにおいて、第1のサブネットを提供することができ、第1のサブネットは複数のスイッチを含み、複数のスイッチは少なくともリーフスイッチを含み、複数のスイッチの各々は、複数のスイッチポートのうちの少なくとも1つのスイッチポートを含み、第1のサブネットは、さらに、複数のホストチャネルアダプタを含み、各ホストチャネルアダプタは、複数のホストチャネルアダプタポートのうちの少なくとも1つのホストチャネルアダプタポートを含み、複数のホストチャネルアダプタは複数のスイッチを介して相互接続され、第1のサブネットは、さらに、サブネットマネージャを含み、サブネットマネージャは、複数のスイッチおよび複数のホストチャネルアダプタの一方で実行される。
【0542】
一実施形態によれば、ステップ7220で、この方法は、第1のサブネットに関連して、ハッシュ関数を提供することができる。
【0543】
一実施形態によれば、ステップ7230で、この方法は、インフィニバンドアドレスマッピングを求める、アプリケーション固有の引数を含む要求を受信することができる。
【0544】
一実施形態によれば、ステップ7240で、この方法は、ハッシュ関数との関連におい
てアプリケーション固有の引数に基づいてIBアドレスマッピングを発行することができ、アプリケーション固有の引数は、IPアドレス、TLV、記号名、またはMACアドレスの1つである。
【0545】
本発明の様々な実施形態を説明してきたが、上記実施形態が限定ではなく例示として提示されていることが理解されるべきである。上記実施形態は、本発明の原理およびその実際の適用例を説明するために選択され記載されたものである。上記実施形態は、新たな特徴および/もしくは改善された特徴を提供することによって、ならびに/または、リソース利用の低減、容量の増加、効率の向上および待ち時間の低下などの利点を提供することによって、システムおよび方法の性能を向上させるために本発明が利用されているシステムおよび方法を例示している。
【0546】
いくつかの実施形態においては、本発明の特徴は、全体的または部分的に、プロセッサ、メモリなどの記憶媒体、および他のコンピュータと通信するためのネットワークカードを含むコンピュータにおいて実現される。いくつかの実施形態においては、本発明の特徴は、コンピュータの1つ以上のクラスタがローカルエリアネットワーク(Local Area Network:LAN)、スイッチファブリックネットワーク(例えば、インフィニバンド)、またはワイドエリアネットワーク(Wide Area Network:WAN)などのネットワークによ
って接続されている分散コンピューティング環境において実現される。分散コンピューティング環境は、一箇所において全てのコンピュータを有していてもよく、または、WANによって接続されているさまざまな遠隔地理位置においてコンピュータのクラスタを有していてもよい。
【0547】
いくつかの実施形態においては、本発明の特徴は、全体的または部分的に、ウェブ技術を用いたセルフサービスの調整された態様でユーザに送達される共有型で融通性のあるリソースに基づいて、クラウド・コンピューティング・システムの一部またはサービスとしてクラウドにおいて実現される。(米国標準技術局(National Institute of Standards and Technology)よって定義される)クラウドの5つの特徴がある。すなわち、オン・デマンドのセルフサービス、広域ネットワークアクセス、リソースプール化、高速伸縮性、およびメジャードサービスである。例えば、本明細書に引用によって援用されている「クラウドコンピューティングのNIST定義(The NIST Definition of Cloud Computing)」(特殊出版(Special Publication)800~145(2011))を参照されたい。
クラウド展開モデルは、パブリック、プライベートおよびハイブリッドを含む。クラウドサービスモデルは、ソフトウェア・アズ・ア・サービス(Software as a Service:Sa
aS)、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)
、データベース・アズ・ア・サービス(Database as a Service:DBaaS)およびイ
ンフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)
を含む。本明細書で使用するとき、クラウドは、セルフサービスの調整された態様で、共有される融通性のあるリソースをユーザに対して配信する、ハードウェア技術とソフトウェア技術とネットワーク技術とウェブ技術とを組合せたものである。特に指定がなければ、クラウドは、本明細書で使用するとき、パブリッククラウド、プライベートクラウドおよびハイブリッドクラウドの実施形態を包含しており、全てのクラウド展開モデルは、クラウドSaaS、クラウドDBaaS、クラウドPaaSおよびクラウドIaaSを含むもののこれらに限定されない。
【0548】
いくつかの実施形態においては、本発明の特徴が、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組合せを用いて、またはそれらの組合せの助けを借りて実現される。いくつかの実施形態においては、本発明の特徴は、本発明の1つ以上の機能を実行するように構成されたかまたはプログラムされたプロセッサを用いて実現される。プロセッサは、いくつかの実施形態においては、シングルプロセッサもしくはマルチチッププロ
セッサ、デジタル信号プロセッサ(digital signal processor:DSP)、システム・オン・ア・チップ(system on a chip:SOC)、特定用途向け集積回路(application specific integrated circuit:ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)もしくは他のプログラマブルロジックデバイス、ステートマシン、離散的なゲートもしくはトランジスタ論理、離散的なハードウェアコンポーネント、または、本明細書に記載される機能を実行するように設計されたそれらのいずれかの組合せである。いくつかの実現例においては、本発明の特徴が、特定の機能に特化した回路類によって実現され得る。他の実現例においては、これらの特徴は、例えば、コンピュータ可読記憶媒体上に格納された命令を用いて特定の機能を実行するように構成されたプロセッサにおいて実現され得る。
【0549】
いくつかの実施形態においては、本発明の特徴は、処理システムおよび/またはネットワーキングシステムのハードウェアを制御するために、かつ、プロセッサおよび/またはネットワークが本発明の特徴を利用する他のシステムと対話することを可能にするために、ソフトウェアおよび/またはファームウェアに組込まれている。このようなソフトウェアまたはファームウェアは、アプリケーションコード、デバイスドライバ、オペレーティングシステム、仮想マシン、ハイパーバイザ、アプリケーションプログラミングインターフェイス、プログラミング言語、および実行環境/コンテナを含み得るがこれらに限定されない。適切なソフトウェアコーディングは、ソフトウェア技術に精通した当業者にとって明らかになるように、熟練したプログラマであれば本開示の教示に基づいて容易に準備することができる。
【0550】
いくつかの実施形態においては、本発明は、命令が格納された記憶媒体またはコンピュータ可読媒体であるコンピュータプログラムプロダクトを含む。これらの命令を用いて、本発明の処理または機能のいずれかを実行するように、コンピュータなどのシステムをプログラムするか、または他の方法で構成することができる。記憶媒体またはコンピュータ可読媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD-ROM、マイクロドライブ、および磁気光ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気または光カード、ナノシステム(分子メモリICを含む)、ならびに、命令および/またはデータを格納するのに適した任意のタイプの媒体または装置、を含み得るが、これらには限定されない。特定の実施形態においては、記憶媒体またはコンピュータ可読媒体は、非一時的な記憶媒体または非一時的なコンピュータ可読媒体である。
【0551】
上述の記載は、網羅的となるように意図されたものではなく、または、本発明を開示通りの形態に限定するように意図されたものではない。また、本発明の実施形態を特定の一連のトランザクションおよびステップを用いて説明したが、本発明の範囲が上述の一連のトランザクションおよびステップに限定されないことは、当業者にとって明らかであろう。さらに、本発明の実施形態をハードウェアとソフトウェアとの特定の組合せを用いて説明したが、ハードウェアとソフトウェアとの他の組合せが本発明の範囲内にあることも認識すべきである。さらに、さまざまな実施形態で本発明の特徴の特定の組合せを記載したが、一実施形態の特徴が別の実施形態に組込まれ得るというように、これらの特徴の異なる組合せが本発明の範囲内にあることは当業者にとって明らかであることを理解すべきである。さらに、本発明の精神および範囲から逸脱することなく、形態、詳細、実施および用途のさまざまな追加、削減、削除、変形および他の変更がなされ得ることも、当業者にとっては明らかであろう。より広い本発明の精神および範囲を添付の特許請求の範囲およびその均等物によって規定することを意図している。