(57)【要約】仮想ネットワーキング（１００）のためのシステムおよび方法。交換イーサネットローカルエリアネットワークセマンティックスは、根元的な2地点間回線網に亘って提供されている。コンピュータプロセッサノードは、直接的にスイッチ構造に亘って仮想インタフェース経由で通信することがあるが、あるいはそれらはイーサネットスイッチエミュレータ(115a、115b)経由で通信することもある。ARP(アドレス解決プロトコル)ロジック(135)は、コンピュータプロセッサが、仮想MACアドレスを有するARP要求に答えることを可能にしつつ、仮想インタフェースにIP アドレスを関連づけさせるために使用される。【選択図】図１
2005506726.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータプロセッサ、スイッチ構造、および前記プロセッサへの2地点間リンクを有するプラットホームにおける交換イーサネットローカルエリアネットワークをエミュレートする方法であって：
少なくとも2台のコンピュータプロセッサ上でタスクを実行するためにイーサネットドライバエミュレーションロジックを提供することと;
コンピュータプロセッサの少なくとも1台の上でタスクを実行するためにスイッチエミュレーションロジックを提供することと;
前記スイッチエミュレーションロジックと、ソフトウェア通信をその間に可能にするために、その上でタスクを実行するイーサネットドライバエミュレーションロジックを有する各コンピュータプロセッサと、の間に仮想インタフェースを確立することであって、各仮想インタフェースは、前記スイッチ構造経由であるコンピュータプロセッサから別のコンピュータプロセッサまでのソフトウェア通信路を定義する仮想インタフェースを確立することと;
その上でタスクを実行するイーサネットドライバエミュレーションロジックを有する各コンピュータプロセッサと、その上でタスクを実行するイーサネットドライバエミュレーションロジックを有する１台おきのコンピュータプロセッサとの間に仮想インタフェースを確立することと;
1台のコンピュータプロセッサと別のものとの間で前記仮想インタフェースが、所定の評価基準を満たすように動作している場合、前記１台のコンピュータプロセッサの前記イーサネットドライバエミュレーションロジックが、その間にソフトウェア通信路を規定する仮想インタフェース経由で他のコンピュータプロセッサとユニキャスト通信すること;および、
1台のコンピュータプロセッサと別のものとの間で前記仮想インタフェースが、所定の評価基準を満たさないで動作している場合、前記1台のコンピュータプロセッサの前記イーサネットドライバエミュレーションロジックが、前記他のコンピュータプロセッサに前記ユニキャスト通信を送信する前記スイッチエミュレーションロジックへの仮想インタフェース経由で前記他のコンピュータプロセッサとユニキャスト通信すること、
を備えている方法。
【請求項２】
請求項１に記載の方法であって、その上にタスクを実行するイーサネットドライバエミュレーションロジックを有する前記コンピュータプロセッサの各々が仮想MACアドレスと関連づけられていて、前記MACアドレスは、前記コンピュータプロセッサを外部ネットワークのMACアドレスとは異なる前記複数のコンピュータプロセッサ内の1台であると確認するための規則に従って形成されている前記方法。
【請求項３】
請求項２に記載の方法であって、前記プラットホームは外部ネットワークと通信するためにインタフェースロジック経由で外部ネットワークに接続されていて、前記外部ネットワークインターフェイスロジックはそれ自身のMACアドレスと関連づけられていて、そしてメッセージは前記外部ネットワークインターフェイスロジックの前記MACアドレスを使用して前記外部ネットワーク上で通信される前記方法。
【請求項４】
請求項１に記載の方法であって、第１のコンピュータプロセッサは、第２のコンピュータプロセッサとユニキャスト通信するために、第１の仮想インタフェースを使用し、しかし前記第2のコンピュータプロセッサは、前記第１のコンピュータプロセッサに通信するために、異なる仮想インタフェースを使用する前記方法。
【請求項５】
請求項１に記載の方法であって、各コンピュータプロセッサは、2地点間リンク上で通信するためにスイッチ構造ドライバロジックを含んでいて、またそれはチェックサム能力を含んでおり、前記イーサネットドライバエミュレーションロジックはチェックサム能力を含んでいるが、もし前記スイッチ構造ドライバロジックが既にメッセージのチェックサムを行っていればそのようなチェックサム機能を抑止する前記方法。
【請求項６】
前記スイッチ構造ドライバロジックは、前記スイッチ構造上でのメッセージの受信を確保するために信頼できる通信プロトコルを実装する請求項５に記載の方法。
【請求項７】
前記スイッチ構造および2地点間リンクが冗長構成状態で配置されている請求項1に記載の方法。
【請求項８】
請求項１に記載の方法であって、前記イーサネットドライバエミュレーションロジックが、仮想インタフェース経由で前記スイッチエミュレーションロジックにメッセージを送信することにより前記メッセージを同報通信して、前記スイッチエミュレーションロジックが、仮想インタフェースからの同報通信メッセージを受け取ってクローン化し、さらに前記ネットワーク中の他のコンピュータプロセッサに前記クローン化されたメッセージを送信する前記方法。
【請求項９】
前記スイッチエミュレーションロジックは、エミュレートされたネットワークへのコンピュータプロセッサメンバーシップを規定し、かつ保全する請求項1に記載の方法。
【請求項１０】
前記イーサネットドライバエミュレーションロジックは、最大転送単位(MTU)サイズより大きなメッセージを伝送する請求項1に記載の方法。
【請求項１１】
交換イーサネットローカルエリアネットワークをエミュレートするためのシステムであって：
複数のコンピュータプロセッサと;
スイッチ構造および前記プロセッサへの2地点間リンクと;
前記スイッチ構造および2地点間リンクに亘る仮想インタフェースを確立するための仮想インタフェースロジックであって、各仮想インタフェースが前記スイッチ構造経由で、あるコンピュータプロセッサから別のコンピュータプロセッサまでのソフトウェア通信路を規定する仮想インタフェースロジックと;
少なくとも2台のコンピュータプロセッサ上でタスクを実行するイーサネットドライバエミュレーションロジックと;
少なくとも１台のコンピュータプロセッサ上でタスクを実行するスイッチエミュレーションロジックであって、
前記スイッチエミュレーションロジックとその上でタスクを実行するイーサネットドライバエミュレーションロジックを有する各コンピュータプロセッサとの間に、その間でのソフトウェア通信を可能にするために仮想インタフェースを確立するロジックと、
その上でタスクを実行するイーサネットドライバエミュレーションロジックを有するコンピュータプロセッサへの前記仮想インタフェースの内の1つからメッセージを受け取り、前記メッセージに関連づけられたアドレス情報に応じてその上でタスクを実行するイーサネットドライバエミュレーションロジックを有する別のコンピュータプロセッサにメッセージを伝送するためのロジックと、および
その上でタスクを実行するイーサネットドライバエミュレーションロジックを有する各コンピュータプロセッサと、その上でタスクを実行するイーサネットドライバエミュレーションロジックを有する１台おきのコンピュータプロセッサとの間に仮想インタフェースを確立するためのロジックと、
を含む前記スイッチエミュレーションロジック、
を備えていて、
前記イーサネットドライバエミュレーションロジックは、前記仮想インタフェースが所定の評価基準を満たすように動作している場合には、ソフトウェア通信路をその間に規定する仮想インタフェース経由で、そして前記仮想インタフェースが所定の評価基準を満たすように動作していない場合には、前記スイッチエミュレーションロジック経由で、前記エミュレートされたイーサネットネットワーク中の別のコンピュータプロセッサとユニキャスト通信するためのロジックを含んでいる交換イーサネットローカルエリアネットワークをエミュレートするためのシステム。
【請求項１２】
請求項１１に記載のシステムであって、その上でタスクを実行するイーサネットドライバエミュレーションロジックを有する前記コンピュータプロセッサの各々が、仮想MACアドレスと関連づけられ、前記MACアドレスが、前記コンピュータプロセッサを外部ネットワークのMACアドレスとは異なる複数のコンピュータプロセッサ内の1つであると確認するための規則に従って形成される前記システム。
【請求項１３】
請求項１２に記載のシステムであって、さらに、外部ネットワークと通信するための外部ネットワークインターフェイスロジックを備え、前記外部ネットワークインターフェイスロジックはそれ自身のＭＡＣアドレスと関連づけられ、また前記スイッチエミュレーションロジックが、前記外部ネットワーク上への通信のための前記外部ネットワークインターフェイスロジックにメッセージを送信するためのロジックを含んでおり、そのようなメッセージは前記外部ネットワークインターフェイスロジックの前記MACアドレスを使用して、前記外部ネットワーク上で通信される前記システム。
【請求項１４】
請求項11に記載のシステムであって、第１のコンピュータプロセッサは、第２のコンピュータプロセッサとユニキャスト通信するために第１の仮想インタフェースを使用するが、前記第2のコンピュータプロセッサは、前記第１のコンピュータプロセッサへ通信するために、異なる仮想インタフェースを使用するシステム。
【請求項１５】
請求項11に記載のシステムであって、各コンピュータプロセッサが、前記2地点間リンクの上で通信するためのスイッチ構造ドライバロジックを含んでいて、前記スイッチ構造ドライバロジックがチェックサム能力を含んでおり、また前記イーサネットドライバエミュレーションロジックがチェックサム能力を含み、かつ前記スイッチ構造ドライバロジックがメッセージのチェックサムを行ってある場合には前記イーサネットドライバエミュレーションロジック内でのチェックサム機能を抑止するためのロジックを含んでいる前記システム。
【請求項１６】
前記スイッチ構造に亘るメッセージの受信を保証するために前記スイッチ構造ドライバロジックが信頼できる通信プロトコルを実装する請求項15に記載のシステム。
【請求項１７】
前記スイッチ構造および2地点間リンクが冗長構成の状態で配置される請求項11に記載のシステム。
【請求項１８】
請求項11に記載のシステムであって、前記イーサネットドライバエミュレーションロジックが、仮想インタフェース経由で前記スイッチエミュレーションロジックへ前記メッセージを送信することによってメッセージの同報通信するためのロジックを含み、前記スイッチエミュレーションロジックは、仮想インタフェースからの同報通信メッセージを受け取ってクローン化し、かつ前記ネットワーク中の他のコンピュータプロセッサに前記クローン化されたメッセージを伝送するための同報通信ロジックを含んでいる前記システム。
【請求項１９】
前記スイッチエミュレーションロジックが、エミュレートされたネットワークへのコンピュータプロセッサメンバーシップを規定し保全するためのロジックを含んでいる請求項11に記載のシステム。
【請求項２０】
前記イーサネットドライバエミュレーションロジックが、最大転送単位(MTU)サイズより大きなメッセージを伝送するためのロジックを含む請求項11に記載のシステム。
【請求項２１】
複数のプロセッサを有する計算プラットホームにアドレス解決プロトコル(ARP)を実装する方法であって：
前記計算プラットホーム上でエミュレートされるべきイーサネットネットワークのトポロジーで、プロセッサノードとスイッチノードノードを含む前記トポロジーを規定するステップと；
前記プロセッサノードの役割をするためのプロセッサとして複数のものから一組のプロセッサを割り当てるステップと;
前記スイッチノードの役割をするためのプロセッサを割り当てるステップと;
前記エミュレートされるイーサネットネットワークの各プロセッサノードに仮想MACアドレスを割り当てるステップと;
各プロセッサノードから１つおきのプロセッサノードへの直接的なソフトウェア通信を提供するための根元的な物理的ネットワーク上に仮想インタフェースを割り付けるステップで、各仮想インタフェースが対応する識別表示を有しているステップと;
プロセッサノードがARP要求を前記スイッチノードに伝えるステップであって、前記ARP要求がIPアドレスを含んでいるステップと；
前記スイッチノードがARP要求を前記エミュレートされたイーサネットネットワーク中の他のすべてのプロセッサノードに通信するステップと;
プロセッサノードであって、前記IPアドレスに関連付けられた前記プロセッサノードの前記仮想MACアドレスを含んでいるARP応答を、前記スイッチノードに供与する前記IPアドレスと関連づけられているプロセッサノードと;
前記スイッチノードが前記ARP応答を受け取り、前記ARP要求を出す前記プロセッサノードが前記IPアドレスと関連づけられた前記プロセッサノードとの後続の通信に使用するべき仮想インタフェース用の仮想インタフェース識別表示を含むように前記ARP応答を修正するステップと、
を備えるARP実装方法。
【請求項２２】
前記根元的な物理的ネットワークが前記複数のプロセッサを接続している2地点間回線網である請求項21に記載の方法。
【請求項２３】
請求項21に記載の方法であって、前記プロセッサのサブセットがクラスタとして編制され、前記クラスタ中の前記プロセッサ内の1台が負荷バランスを取るプロセッサノードであり、また前記クラスタ中の任意のプロセッサがARP要求を供与すると、前記負荷バランス取りプロセッサノードのための前記仮想インタフェース識別表示が含まれるように、前記ARP応答を前記スイッチノードが修正する方法。
【請求項２４】
前記スイッチノードは外部IPネットワークと通信していて、ARP応答を通信する行為が前記ARP応答が前記プラットホームのプロセッサノードからであることを識別するステップを含んでいる請求項21に記載の方法。
【請求項２５】
アドレス解決プロトコル(ARP)システムであって：
根元的な物理的ネットワークによって接続されている複数のプロセッサを有する計算プラットホームと；
前記プロセッサの１台の上で実行可能であり、前記計算プラットホーム上でエミュレートされるべきイーサネットネットワークのトポロジーを規定するためのロジックであって、前記トポロジーはプロセッサノードおよびスイッチノードを含んでいるロジックと;
前記プロセッサの1台の上で実行可能であり、前記プロセッサノードの役割をするためのプロセッサとなるように前記複数のものから一組のプロセッサを割り当てるためのロジックと；
前記プロセッサの1台の上で実行可能であり、前記エミュレートされたイーサネットネットワークの各プロセッサノードに仮想MACアドレスを割り当てるロジックと；
前記プロセッサの1台の上で実行可能であり、各プロセッサノードから1台おきのプロセッサノードへの直接的なソフトウェア通信を供給するために、前記根元的な物理的ネットワークに仮想インタフェースを割り付けるロジックであって、各仮想インタフェースが対応する識別表示を有するロジックと；
ARP要求がIPアドレスを含んでいる前記スイッチノードにARP要求を伝えるためのARP要求ロジックを有している各プロセッサノードと；
前記エミュレートされたイーサネットネットワーク中の他のすべてのプロセッサノードに前記ARP要求を伝えるためにARP要求同報通信ロジックを含んでいる前記スイッチノードと；
ARP応答ロジックを有する各プロセッサノードであって、応答がARP要求内の前記IPアドレスに関連した前記プロセッサノードかどうかを決定し、そしてもしそうであれば、前記スイッチノードにARP応答を供与し、前記ARP応答は前記IPアドレスに関連した前記プロセッサノードの前記仮想MACアドレスを含んでいる各プロセッサノードと；
ARP応答ロジックを含む前記スイッチノードであって、前記ARP応答を受け取り、前記ARP要求ノードに対する仮想インタフェース識別表示を含むことを含むために前記ARP応答を修正するためのARP応答ロジックを含んでいる前記スイッチノード、
とを備えているアドレス解決プロトコル(ARP)システム。
【請求項２６】
前記根元的な物理的ネットワークが前記複数のプロセッサを接続している２地点間回線網である請求項25に記載のシステム。
【請求項２７】
請求項２５に記載のシステムであって、前記プロセッサのサブセットがクラスタとして編制され、前記クラスタ中の前記プロセッサの１台が負荷バランス取りプロセッサノードであり、また前記スイッチノードが、プロセッサノードからのARP応答がクラスタ中のいずれかのプロセッサからかどうかを検知し、もしそうであれば前記負荷バランス取りプロセッサノード用の前記仮想インタフェース識別表示を含めるように前記ARP応答を修正するためのロジックを含んでいるシステム。
【請求項２８】
前記スイッチノードが外部IPネットワークと通信していて、前記プロセッサノードARP応答ロジックは前記ARP応答が前記プラットホームのプロセッサノードからであることを識別するためのロジックを含んでいる請求項25に記載のシステム。
【請求項２９】
コンピュータ処理用のプラットホームであって、
内部通信ネットワークに接続される複数のコンピュータプロセッサと；
外部の通信ネットワークと、外部記憶装置アドレス空間を有する外部記憶装置ネットワークとの通信をしている少なくとも1つの制御ノードであって、前記少なくとも1つの制御ノードが前記内部ネットワークに接続され、それにより前記複数のコンピュータプロセッサと通信している、少なくとも1つの制御ノードと；
仮想処理エリアネットワークを規定し、確立する構成ロジックであって、前記複数プロセッサからの一組の対応するコンピュータプロセッサと、前記一組のコンピュータプロセッサ内の通信を提供するが、規定された組には無い前記複数のものからの前記プロセッサは除外する仮想のローカルエリア通信ネットワーク、および前記記憶ネットワークの前記アドレス空間への規定された対応を備えた仮想記憶空間を有する構成ロジック、
を備えているコンピュータ処理用のプラットホーム。
【請求項３０】
前記制御ノードが、前記内部通信ネットワーク経由で前記外部通信ネットワーク上の実体にアドレスされている通信メッセージを受信し、前記制御ノードが前記受信メッセージに対応する前記外部通信ネットワークに関するメッセージを提供するためのロジックを含んでいる請求項29に記載のプラットホーム。
【請求項３１】
前記制御ノードが、前記外部通信ネットワーク経由で前記プラットホーム上の実体にアドレスされている通信メッセージを受信し、前記制御ノードが前記受信メッセージに対応する前記アドレスされた実体にメッセージを提供するためのロジックを含んでいる請求項29に記載のプラットホーム。
【請求項３２】
前記コンピュータプロセッサおよび前記制御ノードが、前記内部通信ネットワーク上のイーサネット機能をエミュレートするためのネットワークエミュレーションロジックを含んでいる請求項29に記載のプラットホーム。
【請求項３３】
前記内部通信ネットワークが、2地点間交換構造である請求項32に記載のプラットホーム。
【請求項３４】
前記内部通信ネットワークが、前記コンピュータプロセッサと冗長スイッチ構造への少なくとも１つの制御ノードとを接続する冗長相互結線を備えた請求項29に記載のプラットホーム。
【請求項３５】
前記相互結線に接続された少なくとも1つの他の制御ノードを有して冗長制御ノードを形成する請求項34に記載のプラットホーム。
【請求項３６】
前記制御ノードが内部通信ネットワーク経由で前記コンピュータプロセッサからの記憶装置メッセージを受信し、また前記制御ノードが受信記憶装置メッセージからアドレスを抽出するための、前記外部記憶装置アドレス空間における前記規定された対応アドレスを識別するための、さらに前記受信記憶装置メッセージに対応しかつ前記対応するアドレスを有する外部記憶装置ネットワーク上にメッセージを提供するための、ロジックを含んでいる請求項29に記載のプラットホーム。
【請求項３７】
前記制御ノードが、コンピュータプロセッサから受け取られるメッセージを書くことに対応するデータをバッファするための、および前記外部記憶装置ネットワークに提供される前記対応するメッセージ中にバッファされたデータを提供するための、ロジックを含んでいる請求項36に記載のプラットホーム。
【請求項３８】
前記制御ノードが前記外部記憶装置ネットワークから記憶装置メッセージを受け取り、前記制御ノードが、前記受信メッセージが反応する対応コンピュータプロセッサあるいは制御ノードを識別するための、および前記識別されたプロセッサか制御ノードに対応するメッセージを提供するための、ロジックを含んでいる請求項36に記載のプラットホーム。
【請求項３９】
仮想処理エリアネットワークの配備方法であって：
内部通信ネットワークに接続された複数のコンピュータプロセッサおよび少なくとも1つの制御ノードを有するプラットホームであって、前記制御ノードが外部通信ネットワークおよび外部記憶装置アドレス空間を有する外部記憶装置ネットワークと通信しているプラットホームを提供する行為と、
前記仮想処理ネットワーク用の対応する一組のコンピュータプロセッサを規定する行為と、
前記一組のコンピュータプロセッサ内の通信を提供するが、しかし前記規定された組にはない複数のものからのプロセッサを除く仮想ローカルのエリア通信ネットワークを確立する行為と、
規定されたものを有する前記仮想処理ネットワークの仮想記憶空間と前記記憶装置ネットワークの前記アドレス空間との対応を規定する行為、
を備えている仮想処理エリアネットワークの配備方法。
【請求項４０】
前記制御ノードが、前記内部通信ネットワーク経由で前記外部通信ネットワーク上の実体にアドレスされている通信メッセージを受信し、前記制御ノードが前記受信メッセージに対応する前記外部通信ネットワーク上にメッセージを提供する請求項39に記載の方法。
【請求項４１】
前記制御ノードが、前記外部通信ネットワーク経由で前記プラットホーム上の実体にアドレスされている通信メッセージを受信し、前記制御ノードが前記受信メッセージに対応する前記アドレスされた実体にメッセージを提供する請求項39に記載の方法。
【請求項４２】
前記コンピュータプロセッサおよび前記制御ノードが前記内部通信ネットワーク上のイーサネット機能をエミュレートする請求項39に記載の方法。
【請求項４３】
前記内部通信ネットワークは、aであり、2地点間交換構造であり、イーサネット機能の前記エミュレーションが、前記内部2地点間交換構造に亘って提供される請求項42に記載の方法。
【請求項４４】
前記コンピュータプロセッサが、前記コンピュータプロセッサおよび前記少なくとも1つの制御ノードを接続する冗長相互結線上で通信する請求項39に記載の方法。
【請求項４５】
前記相互結線に接続された少なくとも1つの他の制御ノードを有し、冗長制御ノードを形成する請求項44に記載のプラットホーム。
【請求項４６】
前記制御ノードが、前記内部通信ネットワーク経由で前記コンピュータプロセッサからの記憶装置メッセージを受信し、前記制御ノードが受信記憶装置メッセージからアドレスを抽出し、前記外部記憶装置アドレス空間中の規定された対応アドレスを識別し、また前記受信記憶装置メッセージに対応し、かつ前記対応するアドレスを有する外部記憶装置ネットワーク上にメッセージを提供する請求項39に記載の方法。
【請求項４７】
前記制御ノードが、コンピュータプロセッサから受け取られるメッセージを書くことに対応するデータをバッファし、前記外部記憶装置ネットワークに提供される前記対応するメッセージ中に前記バッファされたデータを提供する請求項46に記載の方法。
【請求項４８】
前記制御ノードが前記外部記憶装置ネットワークから記憶装置メッセージを受け取り、前記制御ノードが前記受信メッセージが反応する対応コンピュータプロセッサあるいは制御ノードを識別し、かつ前記識別されたプロセッサか制御ノードに、対応するメッセージを提供することを特徴とする請求項46に記載の方法。
【請求項４９】
外部通信ネットワークおよび記憶装置ネットワークに連結可能なコンピュータ処理用のプラットホームであって、
内部通信ネットワークに接続される複数のコンピュータプロセッサと;
次の(a)、（ｂ）を規定し確立するための構成ロジックであって、
前記仮想ローカルのエリア通信ネットワーク内の各コンピュータプロセッサは対応する仮想MACアドレスを有し、前記仮想ローカルエリアネットワークが、一組のコンピュータプロセッサ間の通信を提供するが、規定された組の中にはない複数のものからのプロセッサは除外する、前記内部ネットワーク上の前記仮想ローカルエリア通信ネットワークと、
前記記憶装置ネットワークの前記アドレス空間への規定された連絡を有する仮想記憶空間と
を、規定し確立するための構成ロジックと;
コンピュータプロセッサによる故障に応答し、前記故障したプロセッサを交換するために前記複数のものからコンピュータプロセッサを割り付けるフェイルオーバーロジックであって、前記故障プロセッサのMACアドレスを、前記故障プロセッサに取って代わるプロセッサに割り当てるロジック、前記故障プロセッサの前記仮想記憶空間および規定された対応を、前記故障プロセッサに取って代わる前記プロセッサに割り当てるロジック、および前記故障プロセッサに取って代わる前記プロセッサを含み、かつ前記故障プロセッサを除外するために、前記仮想ローカルエリアネットワークを再度確立するロジック、を含むフェイルオーバーロジックと、
を備えているコンピュータ処理用のプラットホーム。
【請求項５０】
前記構成ロジックが、前記仮想ネットワークのプロセッサ中のソフトウェア通信路を規定するために、仮想インタフェースを確立し、前記フェイルオーバーロジックが、前記仮想ネットワーク中の前記プロセッサから、前記故障したプロセッサに取って代わる前記プロセッサまで仮想インタフェースを確立するためのロジックを含んでいる請求項49に記載のプラットホーム。
【請求項５１】
請求項４９に記載のプラットフォームであって、前記構成ロジックが、第２の組のコンピュータプロセッサと、前記記憶装置ネットワ−クアドレス空間へ規定の連絡を保った第２の仮想記憶装置空間とから、第２の仮想ローカルエリアネットワークを確立し、また前記フェイルオーバーロジックが、前記故障したプロセッサに取って代わる前記プロセッサに、前記仮想ローカルエリアネットワークおよび前記故障したプロセッサの前記仮想記憶装置の個性を継承させる前記プラットホーム。
【請求項５２】
内部通信ネットワークに接続された複数のコンピュータプロセッサを有するプラットホームにおけるコンピューター処理方法であって、
前記仮想ローカルエリア通信ネットワーク中の各コンピュータプロセッサが、対応する仮想MACアドレスを有し、また前記仮想ローカルエリアネットワークが、一組のコンピュータプロセッサ間での通信を提供するが、その規定されたセット内ではない複数のものからは、前記プロセッサを除外する、前記内部ネットワーク上の仮想ローカルエリア通信ネットワークを規定し、確立するステップと、
前記記憶装置ネットワークの前記アドレス空間への規定の連絡を有している仮想記憶空間を規定し、確立するステップと;
コンピュータプロセッサによる故障に応じて、前記故障したプロセッサを交換するために複数からのコンピュータプロセッサを割り付けるステップで、前記故障したプロセッサに取って代わる前記プロセッサに前記MACアドレスを割り当てること、該故障したプロセッサに取って代わる該プロセッサに、前記故障したプロセッサの前記仮想記憶空間および規定の連絡を割り当てること、および前記故障プロセッサに取って代わる前記プロセッサを含み、かつ前記故障プロセッサは除外するために、前記仮想ローカルエリアネットワークを、再度確立することを含める前記ステップ、
を備えている前記コンピュータ処理方法。
【請求項５３】
仮想ローカルエリアネットワークを確立するときには、仮想インタフェースが、前記仮想ネットワークのプロセッサ間にソフトウェア通信路を規定するために確立され、またプロセッサが故障したプロセッサに取って代わるときには、仮想インタフェースは前記故障したプロセッサに取って代わる前記プロセッサに対して確立される請求項52に記載の方法。
【請求項５４】
第２の仮想ローカルエリアネットワークが、前記記憶装置ネットワークアドレス空間に規定の連絡を有している第２の組のコンピュータプロセッサと第２の仮想記憶スペースによって確立され、またプロセッサが故障すると、前記故障したプロセッサに取って代わる前記プロセッサが、前記仮想ローカルエリアネットワークおよび前記故障したプロセッサの前記仮想記憶装置の個性を継承する請求項52に記載の方法。
【請求項５５】
少なくとも2台のコンピュータプロセッサの各々がサービスを提供するためのロジックを含むことと;
前記サービスのための要求メッセージを受け取るためのクラスタロジックであり、前記メッセージはIPアドレスを有し、前記サービスを提供するためのロジックを有する少なくとも2台のコンピュータプロセッサ内の1台に要求を配布するためのクラスタロジック、
を備えている前記サービスを提供するためのシステム。
【請求項５６】
分配のための前記ロジックは、どのプロセッサがメッセージをサービスするべきか決定する際に、入力メッセージ中の前記ソース情報を分析するためのロジックを含んでいる請求項55に記載のシステム。
【請求項５７】
IPアドレスによってアドレスされるサービスを提供する方法であって：
少なくとも2台のコンピュータプロセッサの各々にサービスを提供するためのロジックを含んでいることと;
前記サービスに対する要求メッセージを受け取ることと、前記メッセージはIPアドレスを有しており、さらに前記少なくとも２台のコンピュータプロセッサの内、前記サービスを供給するためのロジックを有する１台に前記要求を分配すること、
を備えているサービスを提供する方法。
【請求項５８】
どのプロセッサが前記メッセージをサービスするかを決定するために、着信メッセージのソース情報が分析される請求項57に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、企業とアプリケーションサービスプロバイダーのための計算機システムに関し、特に、仮想通信ネットワークを有する処理システムに関する。
【背景技術】
【０００２】
現在の企業計算およびアプリケーションサービスプロバイダーの環境では、複数の情報技術(IT)機能(電気的、ネットワーキングなど)からの社員が処理およびネットワークのリソースを配備するために参加しなければならない。従って、複数の部からの活動を調整する際のスケジューリング、および他の障害のために、新しいコンピュータサーバーを配備するのに数週間または数か月かかることがある。この長くて人手によるプロセスは人的および機器双方の費用を増加させて、アプリケーションの開始を遅らせる。
【０００３】
さらに、どれだけの処理能力をアプリケーションが必要とするかを予想することが難しいので、管理者は、計算能力の量を過剰に供給しがちである。その結果、データセンターの計算リソースは、利用されないか、低利用率であることが多い。
【０００４】
当初の供給より、さらに大きな処理能力が最終的に必要になった場合は、様々なIT機能は、より多くのまたは改善されたサーバーを配備し、それらを通信と記憶装置のネットワークに接続することなどの活動を、再度調整する必要があるであろう。システムが大きくなるにつれて、このタスクはますます困難になる。
【０００５】
配備もまた問題である。例えば、24台の従来型サーバーを配備する場合、全体のシステムを形成するために100箇所を越える個別の接続が必要になることがある。これらのケーブルの管理は継続中の挑戦であり、また各々は失敗ポイントを象徴している。冗長度を加えることにより失敗の危険を軽減することを試みることは、配線を２倍にしてその問題を悪化させる可能性がある一方、複雑さとコストを増加させる。
【０００６】
今日の技術によって高い有用性を供給することは困難で高価な命題である。一般に、フェイルオーバーサーバーは、すべてのプライマリサーバ用に配備されなければならない。さらに、通常、複雑な管理ソフトウェアおよびプロフェッショナルサービスが必要である。
【０００７】
一般に、既存のサーバー上で処理能力を調整するか、CPUをアップグレードすることは可能ではない。その代わりに、プロセッサ容量の拡大およびベンダーの次世代アーキテクチャーへの移動、あるいはその両方は、しばしば、さらに多くのハードウェア/ソフトウェア システムが追加されることを意味して、新しい接続等を必要とする「フォークリフトアップグレード」を要求する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従って、上記の欠点に取り組む企業およびASPの計算用のプラットホームを提供するシステムおよび方法に対しての必要性がある。
【課題を解決するための手段】
【０００９】
本発明は、仮想処理エリアネットワークが形成され配備されるはずのコンピューター処理用のプラットホームおよび方法を特徴とする。
【００１０】
本発明のある態様によれば、交換イーサネットローカルエリアネットワークをエミュレートする方法およびシステムが提供される。複数のコンピュータプロセッサ、スイッチ構造およびそれらのプロセッサへの2地点間リンクが提供される。仮想インタフェースロジックは、スイッチ構造および2地点間リンクに亘る仮想インタフェースを確立する。仮想インタフェースはそれぞれスイッチ構造によって、あるコンピュータプロセッサから別のコンピュータプロセッサまでのソフトウェア通信路を規定する。イーサネットドライバエミュレーションロジックは、少なくとも2台のコンピュータプロセッサ上でタスクを実行し、またスイッチエミュレーションロジックはそれらのコンピュータプロセッサ内の少なくとも1台の上でタスクを実行する。そのスイッチエミュレーションロジックは、スイッチエミュレーションロジックと、その上で実行するイーサネットドライバエミュレーションロジックを有する各コンピュータプロセッサとの間に仮想インタフェースを確立し、その間のソフトウェア通信を可能にする。さらに、それは、その上でタスクを実行するイーサネットドライバエミュレーションロジックを有するコンピュータプロセッサへの仮想インタフェースの内の1つからメッセージを受け取り、また、そのメッセージに関連した情報への対処に応じて、その上でタスクを実行するイーサネットドライバエミュレーションロジックを有する別のコンピュータプロセッサにメッセージを送信する。さらに、それは、その上でタスクを実行するイーサネットドライバエミュレーションロジックを有する各コンピュータプロセッサと、その上でタスクを実行するイーサネットドライバエミュレーションロジックを有する１台おきのコンピュータプロセッサとの間に仮想インタフェースも確立する。イーサネットドライバエミュレーションロジックユニキャストは、仮想インタフェースが満足に作動している場合はそこにソフトウェア通信路を規定する仮想インタフェース経由で、また仮想インタフェースが満足に作動していない場合はスイッチエミュレーションロジック経由で、エミュレートされるイーサネットネットワーク中の別のコンピュータプロセッサと通信する。
【００１１】
発明の別の態様によれば、アドレス解決プロトコル(ARP)を実装する方法およびシステムが提供される。計算プラットホームは、根元的な物理的ネットワークによって接続されている複数のプロセッサを有している。プロセッサ内の1台の上で実行可能なロジックは、計算プラットホーム上でエミュレートされるようにイーサネットネットワークのトポロジーを規定する。そのトポロジーはプロセッサノードおよびスイッチノードを含んでいる。それらのプロセッサ内の1台上で実行可能なロジックは、プロセッサノードの役割をするためのプロセッサとなるように、複数のものから一組のプロセッサを割り当てる。それらのプロセッサ内の1台上で実行可能なロジックは、エミュレートされるイーサネットネットワークの各プロセッサノードに仮想MACアドレスを割り当てる。それらのプロセッサ内の1台上で実行可能なロジックは、各プロセッサノードからの直接的なソフトウェア通信を、１台おきのプロセッサノードに供給するために、根元的な物理的ネットワークに仮想インタフェースを割り付ける。各仮想インタフェースは対応する識別表示を有する。各プロセッサノードは、ARP要求がIPアドレスを含んでいるスイッチノードにARP要求を伝えるために、ARP要求ロジックを有する。スイッチノードは、エミュレートされたイーサネットネットワーク中の他のすべてのプロセッサノードにARPの要求を伝えるためにARP要求同報通信ロジックを含んでいる。各プロセッサノードは、それがARP要求にあるIPアドレスに関連したプロセッサノードかどうかを判定し、そしてそうであれば、そのスイッチノードにARP応答を出すためのARP応答ロジックを有し、そこではそのARP応答はそのIPアドレスに関連したプロセッサノードの仮想MACアドレスを含んでいる。そのスイッチノードは、ARP応答を受け取り、かつARP要求ノードに対する仮想インタフェース識別表示を含むARP応答を修正するためのARP応答ロジックを含んでいる。
【００１２】
本発明の別の態様によると、コンピューター処理のためのプラットホームとその方法が、プロセッサフェイルオーバーをサポートするために提供される。複数のコンピュータプロセッサが、内部通信ネットワークに接続される。その内部ネットワーク上の仮想ローカルのエリア通信ネットワークが規定され、そして確立される。その仮想ローカルのエリア通信ネットワーク中の各コンピュータプロセッサは、対応する仮想MACアドレスを有し、またその仮想ローカルエリアネットワークは、一組のコンピュータプロセッサ間での通信を提供するが、その規定されたセット内以外の複数からのプロセッサは除外される。仮想記憶空間は、記憶ネットワークのアドレス空間への規定された対応によって規定され、そして確立される。コンピュータプロセッサによる故障に応じて、複数のものから１台のコンピュータプロセッサが、その故障プロセッサと交換するために、割り付けられる。その故障プロセッサのMACアドレスは、故障プロセッサに取って代わるプロセッサに割り当てられる。その故障プロセッサの仮想記憶空間および規定された対応は、故障プロセッサに取って代わるプロセッサに割り当てられる。仮想ローカルエリアネットワークが、その故障プロセッサに取って代わるプロセッサを含めて、かつ故障プロセッサを除外するために、再度確立される。
【００１３】
発明の別の態様によれば、IPアドレスによってアドレスされるサービスを提供するためのシステムとその方法が提供される。少なくとも2台のコンピュータプロセッサが、各々そのサービスを提供するためのロジックを含んでいる。クラスタロジックはそのサービスの要求メッセージを受け取る。そのメッセージはIPアドレスを有する。そのクラスタロジックは、そのサービスを提供するロジックを有する少なくとも2台のコンピュータプロセッサの内の1台にその要求を配布する。
【００１４】
発明の別の態様によれば、コンピュータ処理プラットホームは、内部通信ネットワークに接続された複数のコンピュータプロセッサを含んでいる。少なくとも1つの制御ノードは、外部の通信ネットワークと、外部記憶装置アドレス空間を有する外部記憶装置ネットワークと通信している。少なくとも1つの制御ノードは内部ネットワークに接続され、それにより複数コンピュータプロセッサと通信する。構成ロジックは、複数プロセッサから一組の対応するコンピュータプロセッサを有する仮想処理エリアネットワークと、その一組のコンピュータプロセッサ間の通信を提供するが、その規定された組には無い複数からのプロセッサは除外する仮想ローカルエリア通信ネットワーク、および記憶ネットワークのアドレス空間への規定された対応を備えた仮想記憶空間、を規定しかつ確立する。
【発明を実施するための最良の形態】
【００１５】
本発明の好ましい複数の実施態様は、構成コマンドによって仮想システムが配備される処理プラットホームを提供する。そのプラットホームは大きなプロセッサ集団を提供し、そこからソフトウエアコマンドによって下位集団が選ばれて、所与の一組のアプリケーションと顧客に役立つように配備されうるコンピュータ (「処理エリアネットワーク」あるいは「プロセッサクラスタ」)の仮想ネットワークが形成される。そして、その仮想化された処理エリアネットワーク(PAN)は、ウェブベースのサーバーアプリケーションのような特定顧客向けアプリケーションを実行するために使用され得る。その仮想化は、ローカルエリアネットワーク(LAN)の仮想化あるいは入出力記憶装置の仮想化を含み得る。そのようなプラットホームの提供によって、処理リソースは、例えば物理的にサーバーを供給しネットワークや記憶装置の結線を行い各サーバーに電源を提供するなどよりも、むしろ管理者から構成コマンドによってソフトウェア経由で素早くかつ容易に配備され得る。
【００１６】
（プラットホームとその挙動の概観）
図1に示されるように、好ましいハードウェアプラットホーム100は、高速相互結線110a、b経由でスイッチ構造115a、bに接続された一組の処理ノード105aから105nを含んでいる。そのスイッチ構造115a、bは、外部IPネットワーク125(あるいは他のデータ通信ネットワーク)と、および記憶装置ネットワーク(SAN)130との通信経路にある少なくとも1つの制御ノード120a、bにも接続されている。例えば、リモートでタスクを実行する管理アプリケーション135は、プラットホーム100を構成して仮想PANを配備することをサポートするために、IPネットワーク125経由で制御ノードの1つ以上にアクセスするであろう。
【００１７】
ある実施態様の下で、約24の処理ノード105aから105n、2つの制御ノード120、および2つのスイッチ構造115 a、115bが、単一のシャーシに収容されて、2地点間(PtP)リンクの固定された事前配線済みの回路網と相互結線されている。各処理ノード105は、他のものの中にブートと初期設定のための何らかのBIOSファームウエアを含んでいる1台以上(例えば4台)のプロセッサ106Jから106l、1枚以上のLAN接続カード(NIC)107およびローカルメモリ(例えば、4 Gバイトより大きな)を含んでいるボードである。プロセッサ106用のローカルディスクはない;その代わりに、ページングに必要な記憶装置を含むすべての記憶装置は、SAN記憶装置130によって取り扱われる。
【００１８】
各制御ノード120は、1台以上(例えば4台)のプロセッサ、ローカルメモリ、および処理ノード105用および制御ノード106用のオペレーティングシステムソフトウェアをブートするために使用される、ブートイメージおよび初期ファイルシステムの独立したコピーを保持するためのローカル磁気ディスク装置を含んでいる単一のボードである。各制御ノードは、ファイバーチャネルリンク122、124に接続された100 メガバイト/秒のファイバー・チャネル・アダプタ・カード128経由でSAN 130と通信し、そして、ギガビットイーサネットリンク121、123に接続された1つ以上のギガビットイーサネットNICを有する外部ネットワークインターフェイス129経由で、インターネット(あるいは他の外部ネットワーク)125と通信する。(他の多くの技術およびハードウェアがSANおよび外部ネットワーク接続のために使用され得る。) 各制御ノードは、管理アプリケーション135によって、リモートでウェブベースの管理の代わりに使用され得る専用管理ポートとして、低速イーサネットポート (図示されていない) を含んでいる。
【００１９】
そのスイッチ構造は、NIC-CLAN 1000およびclan 5300スイッチ等の1つ以上の30のポートGiganetスイッチ115から構成されていて、また、様々な処理および制御ノードは、対応するNICをそのような構造モジュールとの通信に使用している。Giganetスイッチ構造は、非同報通信多元接続性(NBMA)ネットワークのセマンティックスを有している。ノード間通信はすべてスイッチ構造経由である。各リンクは、NIC 107と、スイッチ構造115中のポートとの間に直列接続として形成される。各リンクは112 メガバイト/秒で作動する。
【００２０】
いくつかの実施態様では、複数のキャビネットあるいはシャーシは、より大きなプラットホームを形成するために、相互接続されることがある。また、他の実施態様では、構成が異なる場合がある；例えば、冗長な接続、スイッチおよび制御ノードが除去される場合がある。
【００２１】
ソフトウェア管理の下で、プラットホームは複数で同時で独立な処理エリアネットワーク(PANs)をサポートする。各PANは、PtP網に亘ってエミュレートされる仮想ローカルエリアネットワーク経由で通信するプロセッサ106の対応するサブセットを有するように、ソフトウェアコマンドによって形成される。各PANは、対応する仮想I/Oサブシステムを有するように形成される。物理的な配備あるいは配線は、PANを確立するためには必要ではない。ある好ましい実施態様の下では、プロセッサノードまたは制御ノード、あるいはその両方上でタスクを実行するソフトウェアロジックが、交換イーサネットセマンティックスをエミュレートする;プロセッサノードまたは制御ノード、あるいはその両方上でタスクを実行する他のソフトウェアロジックは、SCSIセマンティックスに従い、各PAN用の独立したI/Oアドレス空間を提供する仮想記憶サブシステム機能を提供する。
【００２２】
（ネットワークアーキテクチャ）
ある好ましい実施態様は、仮想のコンポーネント、インタフェースおよび接続を使用して、管理者が仮想でエミュレートされるLANを構築することを可能にしている。各バーチャルLANはプラットホーム100に対して内部的かつ専用であり得るし、あるいは複数のプロセッサが、単一のIPアドレスとして外部的には見えるプロセッサクラスタに形成される場合もある。
【００２３】
ある実施態様の下で、物理的で基礎的なネットワークはPtP網であるが、そのようにして作成された仮想ネットワークは、交換イーサネットネットワークをエミュレートする。仮想ネットワークはIEEE MACアドレスを利用し、また、処理ノードは、IPアドレスをMACアドレスと結び付け、関連付けるためにIETF ARPの処理をサポートする。従って、所与のプロセッサノードは、ARP要求がプラットホームに対して内部または外部であるノードから来たかどうかを、ARP要求に一貫して答える。
【００２４】
図2Aは、モデル化されるか、またはエミュレートされ得る典型的なネットワーク配置を示す。第１のサブネット202は、スイッチ206経由でお互いと通信する処理ノードPN1、PN2およびPNkにより形成される。第２サブネット204は、スイッチ208経由でお互いと通信する処理ノードPNkおよびPNmにより形成される。交換イーサネットセマンティックスの下では、サブネット上の1つのノードは、そのサブネット上の別のノードと直接通信する場合がある;例えば、PN1がPN2にメッセージを送信する場合がある。また、セマンティックスは、あるノードが他のノードの組と通信することを可能にする;例えば、PN1が他のノードに同報通信メッセージを送信する場合もある。PNmが異なるサブネット上にあるので、処理ノードPN1とPN2がPNmと直接的に通信することはできない。PN1とPN2がPNmと通信するためには、両方のサブネットについてのより十分な理解を有する上位レイヤーのネットワークソフトウェアが利用される必要があるであろう。図示されていないが、所与のスイッチは、別のスイッチ等への「アップリンク」経由での通信も可能であろう。以下の記述で分かるように、そのようなアップリンクの必要性はスイッチが物理的な場合には必要性が異なる。具体的にはスイッチが仮想でありソフトウェア内でモデル化されているので、それらは要求される広さだけ水平に拡大することが出来る。(対照的に、物理的なスイッチは固定数の物理的なポートを有しており、水平スケーラビリティを提供するために時折アップリンクが必要とされる。)
【００２５】
図2Bは、図2Aのサブネット202および204をモデル化するために、ある実施態様の下で使用される典型的なソフトウェア通信路およびロジックを示す。通信路212は、処理ノードPN1、PN2、PNkおよびPNm、特にそれらの対応するプロセッサ側ネットワーク通信ロジック210を接続し、またさらにそれらは制御ノードに処理ノードを接続する。(明確化のためにロジックの単一のインスタンスとして挙げるが、PNkは対応するプロセッサロジックの複数のインスタンス、例えば、1つのサブネット当たりの一つを有する場合がある。) 好ましい実施態様の下では、管理ロジックおよび制御ノードロジックは、通信路を確立し管理し破棄する責任がある。個々の処理ノードは、そのような経路を確立することは許されない。
【００２６】
以下に詳細に説明されるように、プロセッサロジックおよび制御ノードロジックは、共にそのような通信路上の交換イーサネットセマンティックスをエミュレートする。例えば制御ノードは、イーサネットスイッチのセマンティックス内のいくつか(全てが必要ではないが)をエミュレートするために制御ノード側仮想スイッチロジック214を有し、またプロセッサロジックは、イーサネットドライバのセマンティックス内のいくつか(全て必要ではないが)をエミュレートするためのロジックを含んでいる。
【００２７】
サブネット内では、１つのプロセッサノードが、対応する仮想インタフェース212経由で別のものと直接通信することがある。同様にあるプロセッサノードが別の仮想インタフェース経由で制御ノードロジックと通信することがある。ある実施態様の下では、根元的なスイッチ構造および関連するロジック(例えば、スイッチ構造管理者ロジック(図示されていない))は、2地点間回線網上にそのような仮想インタフェース(VIs)を確立して管理するための能力を提供する。さらにこれらの仮想インタフェースは信頼できる冗長な方法で確立され、ここでRVIと呼ばれる。この記述における局面では、VI対RVIの間の選択がシステムリソースとしてかけた費用とそのシステムによって望まれる信頼性の量に大きく依存するので、仮想インタフェース(VI)および信頼できる仮想インタフェース(RVI)という用語は、交換可能に使用される。
【００２８】
図2A、2Bを結合して参照すると、ノードPN1がノードPN2と通信するはずである場合、それは仮想インタフェース2121-2によってごく普通に行なわれる。しかしながら例えばVI 2121-2が満足に作動していない場合、好ましい実施態様では、PN1とPN2の間の通信がスイッチエミュレーションロジック経由で発生することを可能にしている。この場合メッセージはVI 2121#switch206経由で、またVI 212switch206-2経由で送信され得る。PN1がサブネット202内の他のノードへのメッセージを同報通信するかマルチキャストするべき場合には、仮想インタフェース2121-switch206経由で制御ノード側ロジック214にそのメッセージを送信することによりそうする。その後、制御ノード側ロジック214は、関連性のあるVIを使用して、他の関連性のあるノードへのメッセージのクローンを作って送信することにより、同報通信かマルチキャストの機能をエミュレートする。同じか類似したVIが制御ノード側ロジックを要求する他のメッセージを伝達するために使用されてもよい。例えば下記に説明されるように、制御ノード側ロジックは、アドレス解決プロトコル(ARP)をサポートするためのロジックを含んでいて、またVIは制御ノードにARP応答および要求を伝えるために使用される。上記の記述はプロセッサロジックと制御ロジックの間の1つだけのVIを示唆しているが、多くの実施態様が複数のそのような接続を使用している。さらに、図はソフトウェア通信路における対称性を示唆しているが、そのアーキテクチャーは実際に非対称の通信を可能にしている。例えば、クラスタ通信サービスについては、以下で議論されるように、パケットは制御ノード経由で送られるであろう。しかしながら、戻り通信はノード間で直接である場合がある。
【００２９】
図2Aのネットワークのように、ノードPN2とPNmの間に通信用機構がないことに注目すべきである。さらに、通信路が中心に(処理ノード経由ではなく)管理され作成されていることによって、そのような経路は処理ノードによって作成可能ではなく、またその規定されたサブネットの接続は、プロセッサによって破られない。
【００３０】
図2Cは、図2AおよびBのサブネットを実現するための、ある実施態様の典型的な物理的接続を示す。特に処理ネットワークロジック210の各インスタンスは、相互結線110のPtPリンク216経由でスイッチ構造115と通信する。同様に、制御ノードは、スイッチロジック214の複数のインスタンスを有し、また各々はスイッチ構造に対してPtP接続216上で通信する。図2Bの仮想インタフェースは、さらに以下に記述されるように、これらの物理的なリンクに亘って情報を伝達するためのロジックを含んでいる。
【００３１】
そのようなネットワークを作成し形成するために、管理者は、PANのネットワークトポロジーを規定し、様々なノードのMACアドレス割当てを指定する(例えば、管理ソフトウェア135内のユーティリティ経由で)。MACアドレスは仮想であって、仮想インタフェースを識別しまたいかなる特定の物理的ノードにも結び付けられない。ある実施態様の下では、MACアドレスはIEEE 48ビットアドレスフォーマットに従うが、しかしその内容は、「ローカルに処理された」ビット(1に設定)、仮想インタフェースが最初に規定された(詳細は下記)制御ノード120のシリアル番号、および制御ノードにおいてNVRAMに維持される制御ノード上の持続性の遂次カウンターからのカウント値を含んでいる。これらのMACはレイヤー2レベルでノードを識別する(在来型として)ために使用されるであろう。例えばARP要求(PANに対して内部の、あるいは外部ネットワーク上のノードからであるか否か)に答える際に、これらのMACはARP応答に含まれるであろう。
【００３２】
制御ノード側のネットワークロジックは、LANの接続を反映する情報(例えば、どのノードが他のどのノードと通信するか)を含むデータ構造を保全する。また制御ノードロジックは規定されたMACアドレスにVI(あるいはRVI)マッピングを分配して割り当て、そして制御ノード間で、および制御ノードと処理ノード間でVI(あるいはRVI)を割り付けて割り当てる。図2Aの例では、そのロジックは、図2BのVI 212を割り付けて割り当てるであろう。(いくつかの実施態様中のVIおよびRVIの命名は、使用されたスイッチ構造およびスイッチ構造管理者ロジックの結果である。)
【００３３】
各プロセッサが立ち上がる時に、BIOSベースのブートロジックは、ノード105の各プロセッサ106を初期化し、とりわけ、制御ノードロジックに対してVI212を確立する(あるいは発見する)。次に、プロセッサノードは、制御ノードからプロセッサノードのMACアドレスのような関係データリンク情報、および同じデータリンク構成内の他の機器のMAC認証を得る。その後各プロセッサは制御ノードを備えたそのIPアドレスを登録し、その際、それはそのIPアドレスをノード、およびRVI(例えば、登録が到着したRVI)に結び付ける。このように制御ノードはサブネット上の各ノードに対する個々の仮想MAC用のIPアドレスを結び付けることができるであろう。上記のものに加えて、プロセッサノードは、さらに、他のノードへの、あるいは制御ノードネットワークロジックへのその接続に対するRVIまたはVI関連情報も得る。
【００３４】
したがって、ブートと初期設定の後、様々なプロセッサノードはそれらのレイヤー2データリンク接続を理解するに違いない。以下に説明されるように、レイヤー3(IP)の接続および特にレイヤー3とレイヤー２の結合はアドレス解決プロトコルの結果としてプロセッサの通常の処理中に決定される。
【００３５】
図3Aはプロセッサ側のネットワークロジック210を詳述し、また、図3Bは、ある実施態様の制御ノード側のネットワーク310ロジックを詳述する。プロセッサ側ロジック210はIPスタック305、仮想ネットワークドライバ310、ARPロジック350、RCLANレイヤー315および冗長なGiganetドライバ320a、bを含んでいる。制御ノード側ロジック310は、冗長なGiganetドライバ325a、b、RCLANレイヤー330、仮想クラスタプロキシロジック360、仮想LANサーバー335、AJRPサーバーロジック355、仮想LANプロキシ340および物理的LANドライバ345を含んでいる。
【００３６】
（IPスタック）
IPスタック305は、処理ノード106によって使用されるオペレーティングシステム(例えばLinux)と共に提供される通信プロトコルスタックである。IPスタックは、シミュレートされたイーサネットネットワークと通信するためにプロセッサ106上でタスクを実行するアプリケーションおよびオペレーティングシステムに、レイヤー3インタフェースを供給する。IPスタックは、仮想イーサネットレイヤー310に情報のパケットを供給し、それと共に、そのパケットの行き先としてのレイヤー3のIPアドレスの提供を行う。IPスタックロジックは、ある実施態様がチェックサム計算およびロジックを回避するという点を除いて、在来型である。
【００３７】
（仮想イーサネットドライバ）
仮想イーサネットドライバ310が、「真の」イーサネットドライバのようにIPスタック305に現われるであろう。この点では、仮想イーサネットドライバ310は、ネットワーク上の後続の送信のためにIPスタックからIPパケットあるいはデータグラムを受け取り、また、それは、IPパケットとしてそのスタックに届けられるように、ネットワークからパケット情報を得る。
【００３８】
スタックはMACヘッダを作成する。スタック中の「通常の」イーサネットコードが使用されてもよい。仮想イーサネットドライバは、既に作成されたMACヘッダおよび既にヘッダにある正確なMACアドレスを備えたパケットを受け取る。
【００３９】
資料部分において、また図4A〜Cに関して、パケットがネットワーク上で送信されるように、仮想イーサネットドライバ310は405出力IPデータグラムを待ち行列から外す。標準IPスタックARPのロジックが使用される。以下に説明されるように、ドライバは、適切な情報が各ノードのARPテーブルの中で終了するようにそれらを修正するために、そのシステムに入って出ていくARPパケットをすべて遮断する。パケットがイーサネットドライバに対して待ち行列に入れられる前に、通常のARPロジックは出力パケットのリンクレイヤーヘッダに正確なMACアドレスを入れる。その後そのドライバは、パケットを送る方法を決定するためにリンクレイヤーヘッダおよび行き先MACの検査だけを行う。そのドライバは直接的にはARPテーブルを操作しない(ARPのエントリの時に発生することがある無効を除いて)。
【００４０】
ARPのロジック350が待ち行列から外されたパケット中でIPアドレスに関連したMACアドレス情報(詳細は下記に)を有しいるか否か、ドライバ310が415を決定する。ARPロジック350が情報を有する場合、その情報は、パケットをそれに応じて送るために使用される(420)。ARPのロジック350が情報を持っていない場合、ドライバはそのような情報を決定する必要があり、また、ある好ましい実施態様では、この情報は、図4B、4Cに関して議論されるような、ARPプロトコルの実行の結果として得られる。
【００４１】
ARPのロジック350がMACアドレス情報を有する場合、ドライバはどこで、どのようにパケットを送るかを決定するために、ARPロジック350から返された情報を分析する。特に、MACアドレスが有効なフォーマットで、あるいは特別に無効なフォーマットであるかどうか判定するために、ドライバはアドレスを見る。例えば、ある実施態様では、内部ノード(つまり、そのプラットホーム内にあるPANノード)は、MACアドレスの最初のバイトに、ローカルに管理されたビット、マルチキャストビット、および別のあらかじめ定めたビットのパターンを設定する組合せで信号を与えられる。支配的なパターンは、有効なパターンである可能性は殆どないものである。
【００４２】
ARPのロジックから戻されたMACアドレスが有効なフォーマットである場合、そのMACアドレスに関連したIPアドレスは、少なくとも関連するサブネットに対して外部にあるノード向けで、また、好ましい実施態様においては、そのプラットホームに対して外部である。そのようなパケットを伝えるために、ドライバは、TLV(タイプ−長さ−値)ヘッダを備えたそのパケットを先頭に付加する。その後、そのロジックは、あらかじめ確立しているVIに亘る制御ノードに、そのパケットを送る。さらに、制御ノードはその送信の残りを適切に扱う。
【００４３】
ARPのロジック350から戻されたMACアドレス情報が、ある特別に無効なフォーマットである場合、その無効のフォーマットは、そのIPアドレスのノードが内部ノードに対するものであるという信号を送り、さらに、そのMACアドレス情報中のその情報は直接的に2つの処理ノードを接続しているVI(あるいはRVI)を識別するのを支援するために使用される。例えば、ARPテーブルエントリは、別の処理ノードに、パケット、例えば212i-2を送るために使用するRVI 212を識別する情報を保持する場合がある。ドライバは、TLVヘッダを備えたパケットを先頭に付加する。その後それはイーサネットプロトコルタイプを識別する情報と共に、ヘッダにアドレス情報も入れる。次にそのロジックはカプセルに入れられたパケットを送るための適切なVI(あるいはRVI)を選択する。そのVI(あるいはRVI)が満足に作動している場合、それはパケットを運ぶために使用される;それが満足に作動していない場合、スイッチロジックが適切なノードにそれを送ることができるように、パケットは、制御ノードスイッチロジック(以下に詳述)に送られる。そのARPの表は実際に使用するためのRVIを指定するための情報を含んでいる場合があるが、他の多くの技術が使用される場合もある。例えばその表の中の情報はそのような情報を間接的に供給することがあり、例として当該情報を指すことによって、あるいは当該情報が含まれていないことを通して当該情報を明らかにすることによる。
【００４４】
任意のマルチキャストまたは同報通信型メッセージについては、ドライバは、規定されたVI上の制御ノードにそれらのメッセージを送る。その後、その制御ノードはそのパケットのクローンを作り、すべてのノード(送信ノード以外の)とアップリンクにそれを送る。
【００４５】
ARPマッピングがなければ、上のレイヤーはドライバにそのパケットを決して送ってはいないであろう。利用可能なデータリンクレイヤーマッピングがない場合、ARPの分解が完了するまで、そのパケットは棚上げにされる。一旦ARPレイヤーがARP化を終了すると、保留ARPを押しとどめていたパケットは、それらのデータリンクヘッダを構築されて、その後そのパケットはドライバに送られる。
【００４６】
ARPロジックがIPスタックからのIPパケットのIPアドレスのためのマッピングを有せず、従って、ドライバ310が関連するアドレス指定情報(つまりMACアドレスあるいはRVI関連情報)を決定することができない場合、ドライバは、ARPのプロトコルに従うことにより、そのような情報を得る。図4B、4Cを参照すると、それに対するMACマッピングがローカルのARP表にはない関連IPアドレスを含んでいるARP要求パケットをそのドライバが作成する（425）。次にそのノードはTLVタイプヘッダを備えたARPのパケットを先頭に付加する（430）。次にARP要求が制御ノード側のネットワークロジック、具体的には仮想LANサーバー335に専用RVI経由で送られる。
【００４７】
より詳細に下に議論されるように、ARP要求パケットは関連するノードに対して制御ノードおよび同報通信440によって処理される（435）。例えば、要求しているノードがIPサービスクラスタの一部であるか否かを制御ノードがフラグを立てるであろう。
【００４８】
関連するノードのイーサネットドライバロジック310は、ARP応答を受け取り（445）、さらにそのノードのIPスタックへのコールを行うことにより、ターゲットIPアドレスをローカルに形成されたIPアドレスのリストと比較することにより、それがARP要求のターゲットであるかどうかを判定する（450）。それがターゲットでない場合、それは修正をしないでそのパケットを見送る。それがターゲットであるとそのドライバはTLVヘッダからローカルMACヘッダを作成し（460）、またローカルARP表を更新して、ARP応答を作成する（465）。ドライバは、ARP要求での情報(主としてソースMAC)を修正し、次に上位のレイヤーが扱うように通常はそのARP要求を見送る。必要な場合ARPの応答を形成するのは上位のレイヤーである。他のものの中にある応答は、その返答するノードのMACアドレスを含んでおり、その応答がローカルのノードからであることを示すTLVヘッダに設定されるビットを有している。この点ではそのノードはEETFタイプARPのセマンティックスに応じて(ARPの応答が中心的に扱われるATM ARPのプロトコルとは対照的に)応答する。次にその応答は470に送られる。
【００４９】
以下により詳細に説明されるように、制御ノードロジック335は、その応答を受け取ってそれを修正する（473）。例えば制御ノードは、ソースキャビネット、処理ノード番号、RVI接続番号、チャネル、仮想インタフェース番号および仮想LAN名を識別する情報を備えた、返答する内部ノードのMACアドレスを代用してもよい。次に一旦ARP応答が修正されると制御ノードロジックは適切なノード、つまりARP要求を送ったノード、あるいは、具体例では以下で議論されるJDPサービスクラスタ中のロードバランサーに、ARP応答を送る（475）。
【００５０】
最終的に、カプセル化されたARP応答が受信される（480）。返答するノードが外部ノードである場合、ARP応答は返答するノードのMACアドレスを含んでいる。返答するノードが内部ノードである場合、その代りにARP応答はノードと通信する関連RVIを識別する情報を含んでいる。いずれの場合もローカルの表は更新される（485）。
【００５１】
保留のデータグラムはキューから外されて（487）、適切なRVIが選択される（493）。上で議論されているように、適切なRVIはターゲットノードが内部か外部かに基づいて選択されている。TLVヘッダはパケットの先頭に付加されて送信される（495）。
【００５２】
仮想LAN内の通信については最大転送単位(MTU)は16,896バイトとして形成される。たとえ形成されたMTUが16,896バイトでも、イーサネットドライバ310は、パケットが外部ネットワークへ送られているときに認識する。経路MTU発見、ICMPおよびIPスタック変化の使用を通じて、経路MTUはソースノード105で変更される。この機構はパケットチェックサムをトリガーするために使用される。
【００５３】
本発明のある実施態様は、仮想LANサーバー335と仮想LANドライバ310との中にあるロジックの組合せによって、プロミスキャスモードを支援する。仮想LANドライバ310が仮想LANサーバー335からプロミスキャスモードメッセージを受け取ると、そのメッセージはプロミスキャスモードにを入ることを望むレシーバーの認証に関する情報を含んでいる。この情報は、レシーバーの場所(キャビネット、ノードなど)、そのレシーバー上のプロミスキャス仮想インタフェース310のインタフェース番号(パケットのデマルチプレクシングに必要な)、およびそのレシーバーが属する仮想LANの名前を含んでいる。次にレシーバーへプロミスキャスのパケットを送る方法(それらのパケットを送るためにどのRVIあるいは他の機構を使用するか)を決定するために、この情報はドライバ310によって使用される。仮想インタフェース310は、同じ仮想LANの上でプロミスキャスリスナーリストを保全する。送信ノードがプロミスキャスモードメッセージを受け取ると、それはそのプロミスキャスリストをそれに応じて更新するであろう。
【００５４】
パケットが仮想イーサネットドライバ310を通して送信される場合、このリストが検査されるであろう。リストが空でなければ、仮想イーサネットインタフェース310は下記のことを行うであろう:
【００５５】
送信パケットが同報通信されかあるいはマルチキャストされる場合、プロミスキャスコピーは送られないであろう。通常の同報通信動作はプロミスキャスリスナーにパケットを送信するであろう。
【００５６】
パケットがプロミスキャスリスナー以外の送付先を持つユニキャストパケットである場合、そのパケットはクローンを作られてプロミスキャスリスナーに送られるであろう。
【００５７】
ヘッダTLVは、着信パケットを多重分離して有効にするために、送付先が使用することができる追加情報を含んでいる。この情報の一部は行き先仮想イーサネットインタフェース番号(その受信ノード上の送付先装置番号)である。これらは実際のパケット送付先とプロミスキャスな送付先との間で異なり得るので、このヘッダは単純にクローン化され得ない。このようにメモリは個々のプロミスキャスリスナーへの各パケットクローンの各ヘッダに割り当てられなければならないであろう。プロミスキャスパケット用のパケットヘッダが成形される場合、パケットタイプはパケットがユニキャスト送信というよりむしろプロミスキャスな送信だったことを示すように設定されるであろう。
【００５８】
さらに仮想イーサネットドライバ310には、冗長な制御ノード接続を取り扱う責任がある。例えば、仮想イーサネットドライバは、各接続RVIにTLV心拍を送ることにより、周期的にエンド・ツー・エンドの連結度をテストするであろう。これは、ノードが応答を停止したか、あるいは停止されたノードが再度応答を始めたかどうかを、仮想イーサネットドライバが判定することを可能にするであろう。RVIまたは制御ノード120がダウンしていると判断されると、イーサネットドライバは残存する制御ノードによってトラフィックを送るであろう。両方の制御ノードが機能しているならば、ドライバ310は、その2つのノード間のバランストラフィックをロードしようとするであろう。
【００５９】
本発明のある実施態様は、パフォーマンスの向上をもたらす。例えば、IPスタック305への変更で、プラットホーム100内でのみ送信されたパケットは、プラットホーム100の要素がすべてエラー検出を提供するので、チェックサムは行なわれずにデータ送出が保証される。
【００６０】
さらに、PAN(あるいはプラットホーム100内でさえ)内の通信については、パケットがイーサネットによって許された最大寸法より大きいようにRVIが形成されてよい。このようにモデルがある実施態様中ではイーサネットの挙動をエミュレートしている一方で、最大のパケットサイズがパフォーマンスを改善するために突破される可能性がある。実際のパケットサイズはデータリンクレイヤーの一部としてうまく処理されるであろう。
【００６１】
制御ノードの故障は、RCLANレイヤーからの通知によって、あるいはTLV心拍の故障によって検知される。もし制御ノードが故障するとイーサネットドライバ310は残りの制御ノードにのみトラフィックを送るでろう。イーサネットドライバ310は、RCLANレイヤーからの通知あるいはTLV心拍の再開からの通知経由で、制御ノードの回復を認識するであろう。一旦制御ノードが回復したならば、イーサネットドライバ310はロードバランシングを再開するであろう。
【００６２】
ノードが直接のRVI(上に概説されたように)経由で別のノードと通信することができないことを検知すると、そのノードはスイッチの役割をして制御ノード経由で通信することを試みる。そのような故障は例えば仮想インタフェース応答信号の受信故障から、あるいは心拍機構を通して検知された故障からといった下部のRCLANレイヤーによって信号を送られことがある。この実例では、ドライバはTLVヘッダ中のビットをマークしてメッセージがユニキャストされるべきであることを指示し、希望のノード(例えば、必要ならIPアドレスに基づいて)にそのパケットを送ることができるように制御ノードにそのパケットを送る。
【００６３】
（RCLANレイヤー）
RCLANレイヤー315には、冗長な相互結線NIC 107の冗長度、フェイルオーバー、および負荷バランシングロジックを取り扱う責任がある。これは、故障の検知、故障時に冗長接続上でのトラフィック経路再設定、ロードバランシングおよび仮想ネットワークドライバ310にトラフィックを返送できないことの報告を、含んでいる。任意のRVI上にRVIを使用不可能にする決定的エラーがある場合、あるいはRVIが何らかの理由で故障した場合、仮想インターネットドライバ310は非同期的に通知されるはずである。
【００６４】
通常の状況下では、各プロセッサ上の仮想ネットワークドライバ310は、利用可能な制御ノード間で送信パケットのロードをバランスしようとするであろう。これは利用可能な制御ノード間の単純なラウンドロビン交替経由で行なわれるか、あるいはそれぞれにどれだけのバイトが送信されたかの追跡を続けて、最小バイトが送られた制御ノードに送信することによって実行され得る。
【００６５】
RCLANは、カーネル間の高帯域(経路毎に224 MB/秒)で、短い待ち時間で、信頼できる非同期固定通信を提供する。データを伝えることができない場合には、データのセンダーに通知され、それを伝えるための最善の努力がなされるであろう。RCLANはカーネル間の冗長な通信路を提供するために2つのGiganet clan 1000カードを使用する。それはclan 1000カードあるいはGiganetスイッチにおける単一の故障をとぎれることなく回復する。それはデータ脱落とデータエラーを検知し、必要に応じてそのデータを再送する。接続の内の1つが部分的に働いている、例えば誤り率が5%を超過しない限り通信は中断しないであろう。RCLANのクライアントは、RFC機構、リモートSCSI機構およびリモートイーサネットを含んでいる。RCLANはさらに単純形状のフロー制御も提供する。短い待ち時間および高い並列性は、各デバイスに対する複数の同時的な要求がデバイスへできるだけ早く転送され得るか、あるいはプロセッサノードに関するすべての要求を待ち行列に入れることに抗して可能な限りその装置の近くで完成のために待ち行列に入れられ得るように、プロセッサノードによって制御ノードに送られるようにすることによって達成される。
【００６６】
制御ノード側のRCLANレイヤー330は、上記のものと同様に作動する。
【００６７】
（Giganetドライバ）
Giganetドライバロジック320は、プロセッサ106または制御ノード120上にあるGiganet NIC 107にインタフェースを提供することに責任のあるロジックである。要するに、Giganetドライバロジックは、より上位のレイヤー、例えばRCLAN 315、イーサネットドライバ310が単にVIのセマンティックスを理解するだけでよいようにVI 標識によって関連づけられているVI接続を確立する。
【００６８】
Giganetドライバロジック320は、VI用のバッファおよび待ち行列用の各ノードにメモリを割り付けること、および接続とその記憶割当てのことを知るようにNIC 107を条件付けることに、責任がある。ある実施態様は、Giganetドライバによって提供されるVI接続を使用する。Giganet NICドライバコードは、仮想のインタフェース対(つまりVI)を確立し、対応する仮想インタフェース標識にそれを割り当てる。
【００６９】
各VIは、1つのGiganetポートと別のポートの間、あるいはより正確にいえば、メモリバッファとバッファに対する1つのノード上のメモリ待ち行列および別のノード上の待ち行列との間で確立される双方向接続である。ポートとメモリの割当ては上に述べられるようにNICドライバによって取り扱われる。データはNICが知っているバッファにそれを入れて、特定のメモリマップレジスタに書くことによりアクションをトリガーすることによって送信される。受信側ではそのデータがバッファに現われて、また、完了ステータスが待ち行列に現われる。送信と受信のプログラムが接続のバッファ中のメッセージを生成し消費することができる場合、そのデータをコピーする必要はない。オペレーティングシステムがアプリケーションアドレス空間へ接続のバッファおよび命令レジスターをメモリマップする場合、その送信は、アプリケーションプログラムからアプリケーションプログラムまで直接であり得る。各Giganetポートは、その上の1024箇所の同時的VI接続をサポートし、ハードウェアプロテクションでそれらを互いに離れているようにしておくことができ、したがって、異種のアプリケーションと同様にオペレーティングシステムも安全に一つのポートを共有することができる。本発明のある実施態様の下で、14箇所のVI接続が、すべてのポートから1ポートおきに同時的に確立される。
【００７０】
好ましい実施態様では、NICドライバは、対になった冗長接続内にVI接続を確立し、対の内の１接続は2個のスイッチ構造115a、115bの一方を通り、他の接続はもう一方のスイッチを通る。さらに、好ましい実施態様では、データは対になった2つのレッグ上を交互に送信され、スイッチ上の負荷を等しくする。代替的に冗長な対がフェイルオーバーの手法で使用されてもよい。
【００７１】
オペレーティングシステムが残る限り、そのノードによって確立された接続対は、すべて存続する。イーサネット接続をシミュレートするための接続対の確立は、ネットワークインターフェースカード間のケーブルを物理的に差し込むことに類似し、また同様に持続的であるように意図される。そのオペレーティングシステムが動作している間に、ノードの規定された構成が変わると、適用可能な冗長な仮想のインタフェース接続対がその確立され、あるいは変化のときに廃棄されるであろう。
【００７２】
制御ノード側のGiganetドライバロジック325は、上記のものに相似して作動する。
【００７３】
（仮想LANサーバー）
仮想LANサーバーロジック335は、基礎的なNBMAネットワーク上のイーサネットネットワークのエミュレーションを容易にする。仮想LANサーバーロジックは:
1. 対応する仮想LANへのメンバーシップを管理し;
2. RVIマッピングおよび管理を提供し;
3. RVIへのARPの処理およびIPマッピング;
4. 同報通信とマルチキャストのサービスを提供し;
5. 他の領域へ橋渡しし経路設定することを容易にし;
また
6. サービスクラスタを管理する。
【００７４】
（1. 仮想LANメンバーシップ管理）
管理者達は、管理アプリケーション135を使用して、仮想LANを構成する。仮想LAN上のIPアドレスの割当ておよび構成は、「通常の」サブネット上と同じ方法で行われればよい。使用するためのIPアドレスの選択は、仮想LAN上のノードの外部可視性に依存する。仮想LANがグローバルに見えない場合(プラットホーム100の外で可視でないか、あるいはインターネットから可視でないかのどちらか)、プライベートIPアドレスが使用されるべきである。そうでなければ、IPアドレスは、インターネット接続を提供するインターネットサービスプロバイダー(ISP)によって提供される範囲から構成されなければならない。一般に、仮想LAN IPアドレス割当ては、通常のLAN IPアドレス割当てと同様に扱われなければならない。制御ノード120のローカルディスク上に格納された構成ファイルは、仮想LANの内のIPアドレスを規定する。仮想ネットワークインターフェイスのために、IPエイリアスが仮想LANサーバーロジック335上のRVIマッピングに単に別のIPを作成する。各プロセッサは必要に応じて複数の仮想インタフェースを形成してもよい。仮想ネットワークインターフェイスの生成および構成に関する主な制限はIPアドレスの割り当ておよび構成である。
【００７５】
各仮想LANは、制御ノード120およびプロセッサノード105上でタスクを実行する多くのノードの両方上でタスクを実行するサーバーロジック335の対応するインスタンスを有する。トポロジーは管理者によって規定される。
【００７６】
各仮想LANサーバー335はちょうど1つの同報通信領域を管理するために形成され、また任意の数のレイヤー3(IP)サブネットがレイヤー2同報通信領域に存在してもよい。サーバー335は仮想LANを作成するための管理者コマンドに応じて形成され作成される。
【００７７】
プロセッサ106がその仮想ネットワークをブートし構成する場合、それは特別の管理RVI経由で仮想LANサーバー335に接続する。次にそのプロセッサは、それに割り当てられた仮想MACアドレス、および仮想LANメンバーシップ情報等のそれらのデータリンク構成情報を得る。仮想LANサーバー335は、それに接続することを試みるプロセッサが、適切にそのサーバー335がサービスしている仮想LANのメンバであると決定し、確認する。プロセッサが仮想LANメンバでない場合、サーバーへの接続が拒絶される。それがメンバである場合、仮想ネットワークドライバ310は仮想LANサーバーを有するそのIPアドレスを登録する。(ドライバ310が構成される場合、IPアドレスはIPスタック305によって提供される。) 次に仮想LANサーバーは、そのIPアドレスを登録が到着したRVIに結び付ける。これは、仮想LANサーバーが特定のIPアドレスに関連付けられるプロセッサを見つけ出せるようにする。さらにプロセッサとIPアドレスとの関連付けは、仮想LAN管理インタフェース135経由で行なってもよい。後の方法は、クラスタIPアドレス、あるいは下で議論される特殊扱いによるIPアドレスを適切に構成するのに必要である。
【００７８】
（2. RVIマッピングおよび管理）
上に概説されているように、ある実施態様は、データリンク層でにノードを接続して、制御接続を形成するためにRVIを使用する。これらの接続のいくつかは、制御ノードブートおよび初期設定の一部として、作成され割り当てられる。データリンク層接続は上記の理由で使用される。制御接続は管理、構成および健全性の情報を交換するために使用される。
【００７９】
いくつかのRVI接続は、ユニキャストトラフィック(例えば212i.2)用のノード間にある。サーバーがその要求、例えばARPのトラフィック、同報通信等を扱うことができるように、他のRVI接続は仮想LANサーバーロジック335にある。RVIを作成するために仮想LANサーバー335は、Giganetスイッチマネージャー360(スイッチ構造およびGiganet NICと共に給される)へのコールを通じてRVIを作成し、削除する。そのスイッチマネージャーは、制御ノード120上でタスクを実行して、Giganetドライバと協力してRVIを作成してもよい。
【００８０】
プロセッサ接続に関して、ノードが仮想LANサーバー335と共に登録するので、上記のように、仮想LANサーバーはそれらのノードに対して仮想MACアドレスを作成し、割り当てる。これと共に、仮想LANサーバーロジックは、様々なノードのためのトポロジーとMACの割当てを反映するデータ構造を保全する。次に仮想LANサーバーロジックは、ノード間のユニキャスト経路用に対応するRVIを作成する。これらのRVIは、その後に割り付けられ、そのノードのブート中に、そのノードに知られるようにされる。さらにRVIも仮想LANサーバーのARPのトラフィックの取り扱いの間にIPアドレスと関連づけられる。ノードがトポロジーから取り除かれる場合RV1接続が切り離される。
【００８１】
確立しているRVI接続の1つの終端でのノード106がリブ-トされる場合、その接続の各端末の2つのオペレーティングシステム、およびRVI管理ロジックはその接続を再度確立する。残された処理ノード上の接続を使用するソフトウェアは、何がその接続自体に起こったかに気づかないであろう。そのソフトウェアがもう一つの端のソフトウェアがリブ-トされたことに気づくか、あるいは注目するかは、それが使用している接続は何のためかということと、リブ-トされた端末が持続性の記憶装置からその状態を再度確立することができる程度とに依存する。例えば、転送制御プロトコル(TCP)経由で通信するどのようなソフトウェアも、TCPセションがすべてリブートによって閉じられることに気づくであろう。他方では、それが許可されたタイムアウト期間内に発生する場合、ネットワークファイルシステム(NFS)アクセスは無所属で、リブートによって影響されない。
【００８２】
万一ノードが直接のRVIの上にパケットをいつでも送れない場合は、それは仮想LANサーバー335経由で送付先へそのパケットを送ることを常に試みることができる。仮想LANサーバー335が制御接続経由で、仮想LAN上のすべての仮想イーサネットドライバ310インタフェースに接続されるので、仮想LANサーバー335はさらに、最後の手段のパケットリレー機構として役立てる。
【００８３】
仮想LANサーバー335への接続に関して、ある実施態様は、その関連する仮想LANサーバー335に接続するために、それが使用するべきRVIをアルゴリズム的に決定する仮想イーサネットドライバ310を使用する。実施態様に依存するアルゴリズムは、RVIを識別するためにキャビネット番号のような識別情報を考慮する必要があるであろう。
【００８４】
（3. RVIへのARP処理およびIPマッピング）
上で説明されているように、ある実施態様の仮想イーサネットドライバ310はARPを支援する。これらの実施態様では、IPパケットを含むユニキャストトラフィックをノード間で搬送するために使用されIPアドレスとRVIの間のノードでマッピングを作成するために、ARPの処理が効果的に使用される。
【００８５】
これを行うために、仮想イーサネットドライバ310は、専用RVI経由でARPパケット要求と応答を仮想LANサーバー335に送る。仮想LANサーバー335、また、特にARPサーバーロジック355は、パケットヘッダに情報を加えることによりそのパケットを処理する。上で説明されているように、この情報は、ソースとターゲットの識別を容易にし、ノード間で使用されるRVIを識別する。
【００８６】
ARPサーバーロジック355はARP要求を受け入れ、TLVヘッダを処理し、適切な場合には、内部プラットホームおよび外部ネットワーク上のすべての関連するノードにその要求を同報通信する。とりわけ、サーバーロジック355は、要求に起因するARP応答を誰が受け取るかを決定する。例えば、ソースがクラスタIPアドレスである場合、その応答は、必ずしもARP要求のソースではなく、クラスタ負荷バランサーに送られるべきである。サーバーロジック355は、ARP要求のTLVヘッダに情報を含めることにより、そうであることを示し、その結果、そのARPのターゲットはそれに応じて応答する。サーバー335は、追加されたヘッダにさらに詳しい情報を含めることにより、そのARPパケットを処理し、関連する領域のノードにそのパケットを同報通信するであろう。例えば修正済のヘッダは、ソースキャビネット、処理ノード番号、RYE接続番号、チャネル、仮想インタフェース番号および仮想LAN名(それらの内のいくつかはサーバー335だけに知られている)を識別する情報を含んでいてもよい。
【００８７】
そのARP応答は、サーバーロジック355によって受け取られ、次に、それは、対応するRVI関連情報への応答にMAC情報をマップする。そのRVI関連情報は、応答のターゲットMACエントリに入れられ、適切なソースノード(例えば、その要求のセンダーであろうが、クラスタIPアドレス付のようなインスタンスでは、異なるノードである場合もある)に送られる。
【００８８】
（4. 同報通信とマルチキャストのサービス）
上に概説されているように、同報通信は、専用RVI上のパケットを受け取ることにより処理される。次にそのパケットはサーバー335によってクローンを作られ、さらに関連する同報通信領域のすべての仮想インタフェース310にユニキャストされる。
【００８９】
同じアプローチがマルチキャストに使用され得る。マルチキャストパケットは、すべて仮想LANサーバーに反映されるであろう。いくつかの代わりの実施態様の下では、仮想LANサーバーは、同報通信と同様にマルチキャストを処理して、さらに望まれないパケットを排除するために各ノード上のIPフィルタリングに依存する。
【００９０】
アプリケーションがマルチキャストアドレスを送るか、または受け取りたい場合、それは最初にマルチキャストグループに参加しなければならない。プロセスがプロセッサ上でマルチキャスト結合を行なう場合、プロセッサ仮想ネットワークドライバ310は、専用RVI経由で仮想LANサーバー335に結合要求を送る。次に仮想LANサーバーは、インタフェース上の特定のマルチキャストMACアドレスを構成し、必要なときには以下で議論されているようにLANプロキシ340に通知する。プロキシ340は特定のマルチキャストグループ上で使用カウントを追跡し続ける必要があり、従ってどのプロセッサもそのマルチキャストグループに属さない場合にマルチキャストアドレスが撤去されるだけである。
【００９１】
（5. 他の領域へ橋渡しと経路設定）
システム100の透視図から、外部ネットワーク125は2つのモードの内の1つで作動し得る:フィルタ処理済み、あるいはフィルタ未処理。フィルタ処理済みモードにおいて、全システムのための単一のMACアドレスは、すべての送信パケットに使用される。これは、仮想LANプロキシ340の後の処理ノード107の仮想MACアドレスを隠し、ネットワーク125上の単一のノードとして(あるいはブリッジかプロキシ後の複数のノードとして)、そのシステムを出現させる。これが各内部ノード107の独自のリンクレイヤー情報を露出しないので、適切に着信パケットを伝えるために、他のある独自の識別子が要求される。フィルタモードで動作する場合、MACアドレスがそのシステムしか識別しないので、意図した受取人を独自に識別するために、各着信パケットの送付先IPアドレスが使用される。フィルタ未処理モードにおいて、ノード107の仮想MACはそれらが着信トラフィックを指示するために使用されるようにシステムの外部で見える。つまり、フィルタ処理済みモードはレイヤー3スイッチングを命じ、その一方でフィルタ未処理モードはレイヤー2スイッチングを可能にする。フィルタ処理済みモードは、ある基本要素(この場合仮想LANプロキシ340)がノード仮想MACにアドレスをすべての送信パケット上の外部ネットワーク125のMACアドレスと置換することを要求する。
【００９２】
いくつかの実施態様は、仮想LANが外部ネットワークに接続される能力をサポートしている。従って仮想LANはローカルに構成されないIPアドレスを処理しなければならないであろう。これをアドレスするためにある実施態様は、そのように接続された各仮想LANは1つの外部同報通信領域に制限されるという制限を課している。仮想LANの内部ノード用のIPアドレスおよびサブネット割当ては、外部領域に応じていなければならないであろう。
【００９３】
仮想LANサーバー335は、それが外部イーサネットドライバ345と内部プロセッサの間にパケットを移動させて、IP処理を行なわないという点でデータリンク層ブリッジの役割を有効に果たすことにより、外部接続にサービスする。しかしながらデータリンク層ブリッジのようなものとは違って、サーバーは必ずしも外部ネットワークから内部ノードへ独特なレイヤー2アドレスに依存することができるとは限らず、またその代わりに接続は、橋渡しの決定を下すためにレイヤー3(IP)情報を使用する場合がある。これを行うために、外部接続ソフトウェアは着信パケットからIPアドレス情報を抽出し、またそれは、それがそのノードにパケットを移動させるように、正しいノード106を識別するために、この情報を使用する。
【００９４】
付属の外部同報通信領域を有する仮想LANサーバー335は、外部ノードが同報通信領域のサブネットについての一貫した見方を有するように、外部領域からの、およびその領域へのパケットを遮断して、処理しなければならない。
【００９５】
付属の外部同報通信領域を有する仮想LANサーバー335が外部ノードからARPの要求を受け取ると、それは、すべての内部ノードへの要求を中継するであろう。次に、正しいノードは応答を構成し、仮想LANサーバー335を通ってリクエスターにその応答を送るであろう。プロキシが送信要求上のどのような必要なMACアドレス変換も処理するように、仮想LANサーバーは仮想LANプロキシ340と協力する。外部ソースからのARP応答およびARPの公示はすべて、ターゲットノードに直接的に中継されるであろう。
【００９６】
仮想イーサネットインタフェース310は、制御接続RVI上の仮想LANサーバー335へ外部送付先を有するユニキャストパケットをすべて送るであろう。(外部送付先は、MACアドレス形式によりドライバによって認識されてもよい。) 次に仮想LANサーバーはそれに応じて外部ネットワーク125にパケットを移動させるであろう。
【００９７】
仮想LANサーバー335が内部ノードから同報通信またはマルチキャストのパケットを受け取ると、すべての内部仮想LANメンバへのパケットの中継に加えて外部ネットワークへのパケットも中継する。仮想LANサーバー335が外部ソースから同報通信またはマルチキャストのパケットを受け取ると、すべての付属の内部ノードへのそのパケットを中継する。
【００９８】
ある実施態様の下では、IPルーターまたはファイアウォールの使用を通じて仮想LANを相互に連結させることは、物理的なLANを相互に連結させるのに使用されるものへの類似した機構を使用して遂行される。あるプロセッサは両方のLANの上で構成され、また、そのプロセッサ上のLinuxカーネルは、イネーブルにされたルーティング(また、恐らくIP擬装している)を有するに違いない。通常のIPサブネット作りおよび経路設定セマンティックスは、同じプラットホームにある2つのノード用に、常に保全されるであろう。
【００９９】
2つの外部サブネット間、間でそして外部と内部サブネット、そして2つの内部サブネット間のルーターとして、プロセッサが構成され得るであろう。内部ノードがルーター経由でパケットを送っている場合は、内部ネットワークの2地点間トポロジーであるために何も問題はない。センダーは、仮想LANサーバー(つまり、上で議論した典型的なプロセッサ同士の通信)の介入なしでルーター(つまり、経路設定するロジック付きで構成されたプロセッサ)に直接送るであろう。
【０１００】
外部ノードが内部ルーターにパケットを送り、外部ネットワーク125がフィルタ処理済みモードで動作している時、着信パケットの送付先MACアドレスはプラットホーム100のそれになるであろう。したがってMACアドレスは、独自にパケット送付先ノードを識別するために使用され得ない。送付先が仮想LANの上の内部ノードであるパケットについては、IPヘッダ中の送付先IPアドレスが、パケットを適切な送付先ノード宛てにするために使用される。しかしながらルーターは最終送付先ではないので、IPヘッダ中の送付先IPアドレスは、次のホップ(内部ルーターである)のそれではなく、最終送付先のそれである。したがって正しい内部ノードにそれを向けるために使用され得るものは、着信パケットにはない。この状況を処理するために、ある実施態様は、仮想LAN上の外部ネットワークに露出された高々1台のルーターという制限を課する。有効な送付先を持たない着信パケットが、このデフォルトノードに向けられるように、このルーターはデフォルト送付先として仮想LANサーバー335によって登録される。
【０１０１】
外部ノードが内部ルーターにパケットを送り、外部ネットワーク125がフィルタ未処理モードで動作している時、着信パケットの送付先MACアドレスは内部送付先ノードの仮想MACアドレスになるであろう。次にLANサーバー335は、送付先内部ノードへパケットを直接送るためにこの仮想MACを使用するであろう。この場合着信パケットのMACアドレスとしてのルーターが、独自に送付先ノードを識別するとともに任意の数の内部ノードがルーターとして機能していてもよい。
【０１０２】
ある構成がサブネット上の複数のルーターを要求する場合、1台のルーターが露出されたルーターとして取り上げられ得る。このルーターは必要なときに順番に他のルーターに回すことができるはずである。
【０１０３】
ある実施態様の下では、ルーターの冗長性は、ルーターをクラスタサービスおよび負荷バランシングにするか、または無所属方式(つまりTCPごとの接続ではなく、IPパケット毎)でフェイルオーバーすることによりもたらされる。
【０１０４】
本発明のある実施態様は、スイッチを通過するトラフィックがすべてプロミスキャスポート上で繰り返されるように、与えられたポートがプロミスキャスポートとして指定されるスイッチセマンティックスを提供することにより、プロミスキャスモードでの機能性をサポートする。プロミスキャスモードで聞くことを許されるノードは、仮想LANサーバーで管理上割り当てられるであろう。
【０１０５】
仮想イーサネットインタフェース310がプロミスキャスな受信モードに入る時、管理RVI上で仮想LANサーバー335にメッセージを送るであろう。このメッセージは、プロミスキャスモードに入る仮想イーサネットインタフェース310に関する情報をすべて含むであろう。仮想LANサーバーがノードからプロミスキャスモードメッセージを受け取る時、そのノードが相手かまわずに聞くのを許されているかどうかを判定するために、その構成情報をチェックするであろう。許されていない場合は、仮想LANサーバーは、それ以上の処理をしないで、そのプロミスキャスモードメッセージを取り下げるであろう。そのノードがプロミスキャスモードに入ることを許されていれば、仮想LANサーバーは仮想LAN上の他のすべてのノードへプロミスキャスモードメッセージを同報通信するであろう。仮想LANサーバーはまた着信外部パケットのコピーをそのノードに転送することができるように、プロミスキャスであるとしてそのノードをマークするであろう。プロミスキャスリスナーがそのRVI構成における何らかの変化を検知すると、関連する同報通信領域上の他のすべてのノードの状態を更新するために、仮想LANにプロミスキャスモードメッセージを送信するであろう。このことは、仮想LANに入るかまたは出るいかなるノードも更新するであろう。仮想イーサネットインタフェース310がプロミスキャスから出ると、そのインタフェースがプロミスキャスモードを出ていると通知するメッセージを仮想LANサーバーに送るであろう。次に、仮想LANサーバーは、仮想LAN上の他のすべてのノードにこのメッセージを送るであろう。プロミスキャス設定は任意の内部仮想インタフェースがプロミスキャスリスナーである場合に、外部接続をプロミスキャスモードにすることを可能にするであろう。これは、そのプラットホーム(しかし同じ仮想LAN上で)に対して外部であるトラフィックを、プロミスキャスリスナーに利用可能にするであろう。
【０１０６】
（6. 管理するサービスクラスタ）
サービスクラスタは、1つ以上のIPアドレス(あるいはホスト名)で利用可能な一組のサービスである。これらのサービスの例はHTTP、FTP、テルネット、NFSなどである。IPアドレスとポート番号の対は、外部ネットワーク125上のクライアントを含むクライアントに、クラスタによって提示された特定のサービスタイプ(サービスインスタンスではないが)を表わす。
【０１０７】
図5は、ある実施態様がクラスタIPアドレス経由でインターネットあるいは他の外部ネットワーク125に単一の仮想ホストとして仮想クラスタ505のサービスをどのように提供するかを示す。クラスタ505のサービスは、すべてそのIPアドレスの異なるポートを通って、単一のIPアドレスによってアドレスされる。図5の例では、サービスBは、負荷バランスサービスである。
【０１０８】
図3Bに関して、仮想クラスタは、仮想LANサーバー335と協力する仮想クラスタプロキシ(VCP)ロジック360の介在によって支援される。要するに、VCP 360には、個々の構成された仮想IPアドレスに対する着信接続、ポートフィルタおよび真のサーバー接続の配分を取り扱う責任がある。構成された、各クラスタIPアドレスに対して1つのVCPがあるであろう。
【０１０９】
パケットが仮想クラスタIPアドレス上に到着すると、仮想LANプロキシロジック340は処理のためにVCP 360にパケットを送るであろう。次に、そのVCPは、パケット内容、その内部接続状態キャッシュ、着信トラフィックに適用されている任意の負荷バランシングアルゴリズム、および構成されたサービスの稼動率に基づいて、そのパケットをどこに送るかを決定するであろう。VCPは、TCPかUDPポート番号だけでなく、送付先IPアドレスの両方に基づいて、着信パケットを中継するであろう。さらに、それは、VCP(あるいは既存のTCP接続のために)に既知のポート番号行きのパケットを分配するだけであろう。それはこれらのポートの構成、および仮想のクラスタを作成し特定のサービスインスタンスをそのクラスタにおいて利用可能にする、1台以上のプロセッサへのポート番号のマッピングである。複数のアプリケーションプロセッサからの同じサービスの複数のインスタンスが構成される場合には、そのVCPは、サービスインスタンス間の負荷バランスを取ることができる。
【０１１０】
VCP 360は、クラスタのIPアドレスに存在するすべての稼動中の接続のキャッシュを保全する。何らかの負荷バランシング判断は新しい接続がクライアントとサービスの間で確立されたときだけになされるであろう。一旦その接続が設定されると、そのサービスを提供するように構成された同じプロセッサ106にTCPストリームのパケットがすべて送られていることを確かめるために、VCPは、着信パケットヘッダの中のソースおよび送付先情報を使用するであろう。クライアントセション(例えばHTTPセション)を決定するための能力がない状態で、実際の接続/負荷バランシングマッピングキャッシュは、クライアントアドレスに基づいてパケットを送り、その結果、同じクライアントからの後続の接続は、同じプロセッサに行く(クライアントセションを持続的か、「粘着性」にして)。あるタイプだけのサービスがセション持続性を要求するので、セション持続性はサービスポート番号方式で選択可能でなければならない。
【０１１１】
ARP要求への応答およびARP応答のルーティングは、VCPによって処理される。プロセッサが任意のARPパケットを送ると、それは仮想イーサネットドライバ310によってそれを送り出すであろう。次にそのパケットは通常のARP処理のために、仮想LANサーバー335に送られるであろう。通常通り、その仮想LANサーバーはそのパケットを同報通信するだろうが、クラスタのどのメンバ(単なるセンダーではない)にもそれが同報通信されないことを確かめるであろう。さらにそれはその仮想LANサーバーを通して、具体的には負荷バランサーを通してのみARPソースが到達され得ることをARPターゲットに示す情報をパケットヘッダTLVに入れるであろう。そのARPターゲットは、内部か外部かにかかわらず、ARP要求を普通に処理し、仮想LANサーバーを通して応答を送り返すであろう。ARPソースがクラスタIPアドレスであったので、仮想LANサーバーは、どのプロセッサがオリジナルの要求を発送したかを判定することができないであろう。したがって、それを適切に処理することができるように、仮想LANサーバーは、各クラスタメンバにその応答を送るであろう。ARPのパケットがターゲットとして、クラスタIPアドレスを有するソースによって送られると、仮想LANサーバーはすべてのクラスタメンバにその要求を送るであろう。各クラスタメンバはARP要求を受け取り、それを普通に処理するであろう。次に、それらはARP応答を構成し、仮想LANサーバー経由でソースにそれを送るであろう。仮想LANサーバーがクラスタメンバから何らかのARP応答も受け取ると、その応答を止めるであろうが、その仮想LANサーバーは、ARPのソースへのARP応答を構成して、送るであろう。したがって、その仮想LANサーバーは、クラスタIPアドレスのすべてのARPに応答するであろう。そのARP応答は、ARPソースがVCPへのクラスタIPアドレスにパケットをすべて送るのに必要な情報を含んでいるであろう。外部のARPソースについては、これは、単純にソースハードウェアアドレスとして外部MACアドレスを有するARP応答になるであろう。内部ARPのソースについては、これは、直接接続されているRVIを通じてではなく、仮想LAN管理RVIの下でクラスタIPアドレスにパケットを送るように、そのソースに命じるのに必要な情報になるであろう。受け取られる任意の無償のARPパケットが、すべてのクラスタメンバに転送されるであろう。クラスタメンバによって送られた任意の無償のARPパケットも普通に送られるであろう。
【０１１２】
（仮想LANプロキシ）
仮想LANプロキシ340は、外部の物理的なネットワーク125への仮想インタフェースを有するすべてのプロセッサ中の物理的なネットワークリソースの基本的な調整を行なう。それは仮想LANサーバー335を外部ネットワーク125に橋渡しする。その外部ネットワーク125がフィルタ処理済みモードで動作していると、仮想LANプロキシ340は、内部仮想MACアドレスを、各ノードから、システム100に割り当てられた単一の外部MACに変換するであろう。外部ネットワーク125がフィルタ未処理モードで作動している場合は、そのようなMACの変換は必要ではない。仮想LANプロキシ340は、さらにIEEE 802.1Q 仮想LAN IDタグ付け情報、およびそれらのVLAN標識に基づいた、多重分離するパケットの挿入および除去も行なう。さらにそれは物理的なイーサネットインタフェース129へのアクセスを一列に並べて、物理的なネットワーク上のマルチキャストアドレスのようなMACアドレスの割当ておよび除去を調整する。
【０１１３】
外部ネットワーク125がフィルタ処理済みモードで動作しており、仮想LANプロキシ340が仮想LANサーバー335から送信パケット(ARP、あるいは他のもの)を受け取ると、それは、ソースMACアドレスとして内部フォーマットMACアドレスを物理的なイーサネット機器129のMACアドレスに置換する。外部ネットワーク125がフィルタ未処理モードで動作している場合は、そのような置換は必要ではない。
【０１１４】
仮想LANプロキシ340が着信ARPパケットを受け取る場合、それは、パケットを処理し、正しい送付先にパケットを中継する仮想LANサーバー335にパケットを移動させる。ARPのパケットが同報通信パケットである場合、そのパケットは、仮想LAN上のすべての内部ノードに中継される。そのパケットがユニキャストパケットである場合、そのパケットは送付先ノードにのみ送られる。外部ネットワーク125がフィルタ処理済みモードで動作しているときにそのARPパケット中のIPアドレスによって、あるいはそのARPパケット(そのMACアドレスでないものがそのARPパケットである)のイーサネットヘッダ中のMACアドレスによって、送付先ノードは決定される。
【０１１５】
（物理的なLANドライバ）
ある実施態様の下では、外部ネットワーク125への接続は、制御ノードに接続されたGigabit か100/10 base-Tイーサネットリンク経由である。物理的なLANドライバ345には、そのようなリンクとインタフェースする責任がある。そのインタフェース上に送られているパケットは、ソケットバッファにそれらのパケットを入れることを含む通常の方法で、装置への待ち行列に入れられるであろう。パケットを待ち行列に入れるために使用される待ち行列は、その装置の転送ルーチンへのパケットを待ち行列に入れるためにプロトコルスタックによって使用されるものである。着信パケットについては、そのパケットを含んでいるソケットバッファは、通過され、また、パケットデータはコピーされないであろう(マルチキャスト動作に必要とされれば、クローンを作られるが)。これらの実施態様の下では、総括的なLinuxネットワークデバイスドライバが、変更のない制御ノードの中で使用されてもよい。これは、付加的なデバイスドライバ作業を要求せずに、プラットホームへの新しい機器の追加を容易にする。
【０１１６】
物理的なネットワークインターフェイス345は、仮想LANプロキシ340とだけの通信状態にある。これは、制御ノードが仮想LANの動作に干渉する何らかの方法で外部接続を使用するのを防ぎ、さらにユーザーデータのセキュリティおよび分離を改善する、つまり管理者はどのユーザーのパケットでも「においを嗅が」なくてよい。
【０１１７】
（負荷バランシングとフェイルオーバー）
いくつかの実施態様の下では、外部ネットワーク125への冗長な接続は、外部ネットワーク125への2つの冗長なインタフェース間のパケット伝送の負荷バランスを取るために交互に使用されるであろう。他の実施態様は、仮想インタフェースが2つの制御ノード間で平等に分配されるように制御ノードを交互にすることに関して個々の仮想ネットワークインターフェイスを構成することにより、負荷バランスを取る。別の実施態様は1つの制御ノードを通じて送信し、別の制御ノードを通じて受け取る。
【０１１８】
フィルタ処理済みモードにある場合、外部ノードが一組の仮想ネットワークインターフェイスのためのパケットを送信する1つの外部的に見えるMACアドレスがあるであろう。そのアダプタが機能停止する場合、仮想ネットワークインターフェイスが別の制御ノードにフェイルオーバーしなければならないだけでなく、MACアドレスも外部ノードがARPのキャッシュ中に既にあるMACアドレスへパケットを送り続けることができるようにファイルオーバーする必要がある。本発明のある実施態様の下では、故障した制御ノードが回復すると、単一のMACアドレスが操作されて、また、そのMACアドレスは回復時に再マップされる必要はない。
【０１１９】
本発明の別の実施態様の下では、負荷バランシングは、両方の制御ノード上の送信を許可することにより実行されるが、受信だけは一つを通してである。フェイルオーバーの場合は、同じ制御ノードを通じて送信と受信の両方を行う。回復の場合は、それがMAC操作を要求しないので、回復された制御ノードを通した送信である。
【０１２０】
受信を行う制御ノードは、フィルタリングのためのIP情報と、マルチキャストMAC構成のためのマルチキャストアドレス情報とを有する。この情報は着信パケットを処理するために必要で、万一、受信制御ノードが故障した場合には、フェイルオーバーされなければならない。送信制御ノードが故障した場合、仮想ネットワークドライバは、受信制御ノードにのみ送信パケットを送り始める必要がある。特別のフェイルオーバー処理は、その送信制御ノードが故障したという認識以外に必要ではない。故障した制御ノードが回復する場合、仮想ネットワークドライバは、付加的な特別の回復処理なしに、回復された制御ノードに送信パケットを送ることを再開し得る。受信制御ノードが故障すると、送信制御ノードは受信インタフェースの役割を引き受けなければならない。これを行うためにそれは、パケット受信を可能にするために、その物理的なインタフェース上のMACアドレスをすべて構成しなければならない。交互に、両方の制御ノードは、それらのインタフェース上で構成された同じMACアドレスを有することができるはずであるが、受信は、制御ノードはパケットを受け取るための準備ができるまで、デバイスドライバによるイーサネット装置上で物理的に不可能にされるはずである。次にフェイルオーバーが単純にその装置上での受信を可能にするだろう。
【０１２１】
任意のプロセッサがマルチキャストグループに参加すると、そのインタフェースはマルチキャストMACアドレスで構成しなければならないので、フェイルオーバーがそのプロセッサに対してトランスペアレントになるように、マルチキャスト情報が制御ノード間で共有されなければならない。仮想ネットワークドライバは、とにかくマルチキャストグループメンバーシップの追跡をしなければならないので、必要に応じて、この情報は常に仮想LANサーバー経由でLANプロキシに利用可能になる。したがって、受信フェイルオーバーは、ローカルマルチキャストグループメンバーシップ表を再構築するために、仮想ネットワークドライバから尋ねられているマルチキャストグループメンバーシップに帰結するであろう。この動作は、低いオーバヘッドであり、フェイルオーバーと回復の間を除いて特別の処理を要せず、また制御ノード間のデータの何らかの特別な模写も要しない。受信がフェイルオーバーしており、さらに故障した制御ノードが回復すると、送信だけが、回復された制御ノードに譲られるであろう。したがって、仮想ネットワークインターフェイス上の回復用のアルゴリズムは、回復された制御ノードに送信を常に移動させて、それが存在するところに受信処理を任せる。
【０１２２】
仮想サービスクラスタはさらに負荷バランシングとフェイルオーバーを使用する場合がある。
【０１２３】
（マルチキャビネットプラットホーム）
いくつかの実施態様は、より大きなプラットホームを形成するためにキャビネットが相互に接続されることを可能にしている。各キャビネットは、キャビネット間接続に使用される少なくとも1つの制御ノードを有するであろう。各制御ノードは、ローカルの接続およびトラフィックを処理するために、仮想LANサーバー335を含むであろう。サーバーの内の1つは、仮想LANのための外部接続を有する制御ノードに設置されたもの等のマスターであるように構成される。それらのキャビネットのローカルプロセッサが参加できるように、別の仮想LANサーバーは、プロキシサーバーあるいはスレーブの役割を果たすであろう。そのマスターは、仮想LAN状態および制御をすべて保全し、一方プロキシはプロセッサとマスターの間でパケットを中継する。
【０１２４】
各仮想LANサーバープロキシは各マスター仮想LANサーバーへのRVIを保全する。あたかもマスターであるかのように、各ローカルプロセッサは仮想LANサーバープロシキサーバーに接続するであろう。プロセッサがIPおよびMACのアドレスを接続して登録すると、プロキシはそのIPおよびMACアドレスをマスターと共に登録するであろう。これは、マスターに、そのアドレスをプロキシからのRVIに結び付けさせるであろう。したがって、マスターはすべての内部ノード用のRVI結合を含むが、プロキシは同じキャビネットのノード用結合だけを含むであろう。
【０１２５】
マルチキャビネット仮想LANのある場所にあるプロセッサがその仮想LANサーバーに任意のパケットを送ると、そのパケットは処理のためにそのマスターに中継されるであろう。次に、マスターは、パケットに関する通常の処理を行うであろう。マルチキャストと同報通信に必要なこととして、マスターは、プロキシにパケットを中継するであろう。マスターは、さらに、プロキシ上のユニキャストパケットの送付先IPアドレスおよび登録済みのIPアドレスに基づいたユニキャストパケットを中継するであろう。マスターにおいては、プロキシ接続は、多くの構成されたIPアドレスを有するノードに非常によく似ていることに注意すること。
【０１２６】
（ネットワーク管理ロジック）
ブートするかカーネルデバッギングのような処理ノード上で動作するオペレーティングシステムがない間、そのノードのシリアルコンソールトラフィックおよびブートイメージは、その処理ノードのカーネルデバッギングソフトウェア、あるいはBIOSにあるスイッチドライバコードによって、制御ノード(図示されていない)上で動作している管理ソフトウェアに送られる。そこから、コンソールトラフィックは、再び、高速の外部ネットワーク125から、あるいは制御ノードの管理ポートを通ってアクセスされ得る。ブートイメージ要求は、その制御ノードのローカルディスクから、あるいは外部SAN 130上のパーティションから満たされ得る。好ましくは、処理ノードに何かが行われ得る前に、制御ノード120がブートされ、普通に動作している。制御ノードは、その管理ポートからそれ自体、ブートされるか、またはデバッグされる。
【０１２７】
何人かの顧客は、必要な時に、現場コンピュータに彼らの管理ポートを差し込むことにより、コントローラのブートとデバッギングを、ローカルなアクセスのみに制限したいことがある。他のものは、彼等の管理ポートに蓋をすることによってインターネットから適切に絶縁される、経営目的のための安全なネットワークセグメントを確立することにより、リモートブートおよびデバッギングを可能にすることを選択するかもしれない。一旦制御装置がブートされ普通に動作していれば、制御装置のため、およびそのプラットホームの残りのためのすべての他の管理機能は、管理者によって許可された場合には管理ポートからも高速外部ネットワーク125からもアクセスされ得る。
【０１２８】
各処理ノード105との間のシリアルコンソールトラフィックは、スイッチ構造115上のオペレーティングシステムカーネルドライバによって、制御ノード120上で動作している管理ソフトウェアに送られる。そこから、任意のノードのコンソールトラフィックは、通常の高速外部ネットワーク125、あるいは制御ノードの管理ポートのどちらかを通ってアクセスされ得る。
【０１２９】
（記憶装置アーキテクチャー）
ある実施態様は、記憶装置のSCSI型に従う。各仮想PANはそれ自身の仮想I/O空間を有し、さらにSCSIコマンドおよびそのような空間内のステータスを発する。制御ノードのロジックは、PANから必要なときに、アドレスとコマンドを変換するか変形し、さらにそれらのコマンドを取り扱うSAN 130にそれらを送信する。SANの透視図から、そのクライアントはプラットホーム100であり、また、コマンドを出した実際のPANは隠されていて、匿名である。SANアドレス空間が仮想になるので、プラットホーム100上で動作しているあるPANは、装置番号1から始めて番号付けする装置を有することがあり、また、別のPANも装置番号1を有することがある。しかし、装置番号1の各々は、SAN記憶装置の異なっていて独自である部分に対応するであろう。
【０１３０】
好ましい実施態様の下では、管理者は仮想記憶装置を作成することができる。各PANは、それ自身の独立した観点の大容量記憶装置を有するであろう。したがって、下に説明されるように、最初のPANは、そのSANの最初の場所に対する所与の装置/LUNアドレスマップを有することがあり、また、別のPANは、そのSANの第２の異なる場所に対する同一の所与の装置/LUNマップを有することがある。各プロセッサは、例えば、ディスクとパーティションを識別するために、主と副の装置番号に装置/LUNアドレスをマップする。それらの主と副の装置番号は、PANおよびPANの内のプロセッサによって物理アドレスととらえられるが、事実、それらは、SANによって提供される大容量記憶装置に対する仮想アドレスとして、プラットホームによって扱われる。つまり、各プロセッサの主と副の装置番号は対応するSANの場所へマップされる。
【０１３１】
図6は、ある実施態様の記憶アーキテクチャーを実装するために使用されるソフトウエアコンポーネントを図示している。通常、制御ノード120上で実行される構成基本要素605は、外部SAN 130と通信している。管理インタフェース基本要素610は、その構成基本要素605へのインタフェースを提供し、IPネットワーク125と、したがってリモート管理ロジック135(図1参照)と通信している。システム100の各プロセッサ106は、プロセッサ側記憶ロジック620のインスタンスを含んでいる。そのようなインスタンス620は、各々、制御ノード側記憶ロジック615の対応するインスタンスに対して、2つのRV1接続625経由で通信する。
【０１３２】
要するに、構成基本要素605およびインタフェース610は、プラットホーム100に分配されるSAN記憶装置の部分を発見すること、さらに特定のPANあるいはプロセッサ106に一部を細分割当てすることを管理者に許可することに責任がある。さらに、記憶装置配置ロジック605には、制御ノード側ロジック615にSAN記憶域割り当てを伝える責任もある。プロセッサ側記憶ロジック620には、制御ノード側ロジック615に専用RVI 625経由でプロセッサの内部相互結線110および記憶構造115上の記憶装置要求を伝える責任がある。その要求は、ある実施態様の下で、仮想記憶アドレスおよびSCSIコマンドを含むであろう。制御ノード側ロジックには、SANに対する対応実アドレスを識別し、コマンドとプロトコルを、例えば、ファイバーチャネル(iSCSIを備えたGigabitイーサネットは別の典型的な連結である)を含むが、限定はされない、SAN用の適切な形式に変換することにより、そのようなコマンドを受け取り処理する責任がある。
【０１３３】
（構成基本要素）
構成基本要素605は、SAN 130の中のどの要素が各個別のプロセッサ106に見えるかを決定する。それは、そのプロセッサが使用する装置番号(例えばSCSIターゲットおよびLUN)を、それらの付属のSCSIおよびファイバーチャンネルI/Oインタフェース128を通じて制御ノードに見える装置番号に変換するマッピング機能を提供する。さらに、それは、プロセッサが制御ノードに取り付けられるが、プロセッサの構成には含まれていない外部記憶装置にアクセスしないようにするアクセス管理機能を提供する。プロセッサに対して(およびそのプロセッサ上のシステム管理者およびアプリケーション/ユーザーに対して)提示されるモデルは、それを各プロセッサがそのプロセッサ上のインタフェースに取り付けられたそれ自身の大容量記憶装置を有するかのように見せる。
【０１３４】
とりわけ、この機能は、プロセッサ106上のソフトウェアが別のプロセッサに容易に移動され得るようにする。例えば、ある実施態様では、ソフトウェア(物理的な再ケーブル接続なしに)経由の制御ノードは、新しいプロセッサが必要な装置にアクセスできるようにするためにPAN構成を変更する場合がある。したがって、新しいプロセッサは別の記憶装置の個性を継承させられることがある。
【０１３５】
ある実施態様では制御ノードがSAN上のホストとして出現するが、代替の実施態様ではプロセッサがそのように動作することを可能にする。
【０１３６】
上に概説されるように、構成ロジックは、プラットホーム100に分配されたSAN記憶装置を発見し(例えばプラットホームブート中に)、また、このプールは管理者によって後に割り付けられる。発見があとで起動される場合、その発見動作を行なう制御ノードは新しい見え方を先の見え方と比較する。新しく利用可能な記憶装置は、管理者によって割り付けられ得る記憶装置のプールに加えられる。それを見えなくさせるパーティションは割り当てられずに、PANに分配され得る記憶装置の利用可能なプールから取り除かれる。それを見えなくさせるパーティションは、トリガーエラーメッセージを割り当てられるであろう。
【０１３７】
（管理インタフェース基本要素）
構成基本要素605は、管理ソフトウェアが、制御ノード120に見える装置と、個別のプロセッサ106に見える仮想装置との間の装置マッピングについて記述する情報にアクセスし、更新することを可能にする。さらにそれは制御情報へのアクセスを可能にする。割当てはシミュレートされたSCSIディスク識別に関連する処理ノードによって、例えばシミュレートされたコントローラ、ケーブル、ユニットあるいは論理装置番号(LUN)の名前によって、識別され得る。
【０１３８】
ある実施態様の下では、インタフェース基本要素610は、下記のような情報と統計を集めてモニターするように、その構成基本要素と協力する:
実行された入出力操作の総数
転送されたバイトの総数
実行された読み取り動作の総数
実行された書込み操作の総数
進行中だった入出力時間の総量
【０１３９】
（プロセッサ側記憶ロジック）
プロトコルのプロセッサ側ロジック620は、プロセッサ106上のオペレーティングシステムに、低レベルの仮想インタフェースを提供することにより、SCSIサブシステムをエミュレートするホストアダプタモジュールとして、実装される。プロセッサ106は、処理のために制御ノード120にSCSI I/Oコマンドを送るために、この仮想インタフェースを使用する。
【０１４０】
冗長な制御ノード120を使用する実施態様の下では、処理ノード105は、制御ノード120当たりロジック620の1つのインスタンスを含むであろう。ある実施態様の下では、プロセッサは論理的ではなく、物理的な装置番号付けを使用して、記憶装置を参照する。つまり、LUN、SCSIターゲット、チャネル、ホストアダプタおよび制御ノード120(例えばノード120aあるいは120b)を識別するために、アドレスは装置名として指定される。図8に示されるように、ある実施態様はホストアダプタ(H)、チャネル(C)、マップされたターゲット(mT)、およびマップされたLUN(mL)にターゲット(T)およびLUN(L)をマップする。
【０１４１】
図7は、プロセッサ側ロジック720用の典型的なアーキテクチャーを示す。ロジック720は、機器タイプに特有のドライバ(例えばディスクドライバ)705、中間レベルのSCSI I/Oドライバ710、とラッパーおよび相互結線ロジック715を含んでいる。
【０１４２】
機器タイプ専用のドライバ705は、オペレーティングシステムが用意されており、特定の機器タイプに関連付けられた在来型ドライバである。
【０１４３】
中間のレベルのSCSI I/Oドライバ710は、一旦その装置がSCSI機器であるとドライバ705が決定すれば機器タイプに専用のドライバ705によって呼び出される在来型の中間レベルドライバである。
【０１４４】
ラッパーおよび相互結線ロジック715は、中間レベルのSCSI I/Oドライバ710によって呼び出される。このロジックはSCSIサブシステムインタフェースを提供し、それによりSCSIサブシステムをエミュレートする。Giganet構造を使用するある実施態様では、ロジック715は、必要なときにSCSIコマンドを覆い隠すこと、および上述のように、NICに、制御ノードへの専用RVI経由で制御ノードにパケットを送らせるように、GiganetおよびRCLANインタフェースと対話することに責任がある。Giganetパケット用のヘッダー情報はこれが記憶装置パケットで、下に文脈で記述されて、他の情報を含んでいることを示すように修正される。図7に図示されなかったが、ラッパーロジック715は、冗長な相互結線110および構造115をサポートして利用するためにRCLANレイヤーを使用することがある。
【０１４５】
Giganet構造115を使用する実施態様については、接続725のRVIは、1024の利用可能なVIの範囲から仮想インタフェース(VI)番号を割り当てられる。通信すべき2つの端点については、スイッチ115は、ペアである(制御ノードスイッチポート、制御ノードVI番号)と、(プロセッサノード105スイッチポート、プロセッサノードVI番号)との間の双方向経路と共にプログラムされる。
【０１４６】
個別のRVIは、一方の方向に送信される各タイプのメッセージに使用される。したがって、プロトコルの反対側から送信することができるメッセージ用の各RVI上に未決の受信バッファが常にある。さらに、1つのタイプのメッセージだけが、各RVI上の一方の方向に送信されるので、RVIチャネルの各々にポストされた受信バッファは、プロトコルがその種のメッセージに使用する最大のメッセージ長に対して、適切に大きさを合わされ得る。他の実施態様の下では、すべての可能なメッセージタイプは2つのVIを使用するのではなく、単一のRVI上に多重化される。プロトコルとメッセージ形式は、特に2つのRVIの使用を要求せず、また、それらを多重分離することができるように、メッセージはそれ自体、それらのヘッダにメッセージタイプ情報を有する。
【０１４７】
2つのチャネルの内の1つは、SCSIコマンド(CMD)およびステータス(STAT)メッセージを交換するために使用される。別のチャネルはバッファ(BUF)および転送(TRAN)メッセージを交換するために使用される。このチャネルは、SCSIコマンドのデータペイロードを処理するために使用される。
【０１４８】
CMDメッセージは、ノード105に、制御情報、実行されるべきSCSIコマンド、およびI/Oバッファの仮想アドレスおよびサイズも含んでいる。STATメッセージは制御情報、およびSCSIコマンドを処理する間に生じる可能性のある任意のエラーを反映する完了ステータスコードを含んでいる。BUFメッセージは、制御ノード120における制御情報およびI/Oバッファの仮想アドレスおよびサイズを含んでいる。TRANメッセージは、制御情報を含んでおり、ノード105から制御ノード120までデータ送信の成功を確認するために使用される。
【０１４９】
プロセッサ側ラッパーロジック715は、コマンドがデータの転送を要求するかどうか、そしてそうであるならばどの方向であるかを決定するために送られるSCSIコマンドを検査する。分析によって、ラッパーロジック715は、それに応じてメッセージヘッダーに適切なフラグ情報を設定する。制御ノード側ロジックを説明するセクションは、フラグ情報がどのように利用されるかを説明する。
【０１５０】
本発明のある実施態様の下では、プロセッサ側記憶装置ロジック720と制御ノード側記憶装置ロジック715との間のリンク725は、SCSIプロトコルの一部ではなくまたSAN 130に通信されることではなくて、制御メッセージを伝達するために使用されることがある。代わりに、これらの制御メッセージは制御ノード側ロジック715によって処理されることになっている。
【０１５１】
プロトコル制御メッセージは、プロトコルのプロセッサ側に常に生成され、制御ノード側記憶装置ロジック715にプロセッサ側ロジック720を接続する、2つの仮想インタフェース(VI)の内の1つにあるプロトコルの制御ノード側に送られる。プロトコルコントロール操作に使用されたメッセージヘッダーは、プロトコル制御メッセージとしてメッセージを識別するために、異なるフラグビットが使用される以外は、コマンドメッセージヘッダーと同じである。制御ノード120は要求された動作を実行し、ステータスメッセージによって使用されるものと同じであるメッセージヘッダーを有するRVIに対応する。この方法では、まれに使用されるプロトコルコントロール操作用の個別のRVIは、必要ではない。
【０１５２】
冗長な制御ノードを使用するある実施態様の下では、プロセッサ側ロジック720は、出されたコマンドからあるエラーを検知し、さらにそれに応じて別の制御ノードへのコマンドを、再度出す。この再試行は中間のレベルのドライバ710中で実装されるであろう。
【０１５３】
（制御ノード側記憶装置ロジック）
ある実施態様の下では、制御ノード側記憶装置ロジック715は、デバイスドライバモジュールとして実装される。ロジック715は、制御ノード120上のオペレーティングシステムに装置レベルインタフェースを提供する。この装置レベルインタフェースは、構成基本要素705にアクセスするためにも使用される。このデバイスドライバモジュールが初期化されると、それは、プラットホーム100のすべてのプロセッサ106からのプロトコルメッセージに応答する。すべての構成活動は、装置レベルインタフェースを通って導入される。すべてのI/O活動は、相互結線110およびスイッチ構造115を通じて送信されて、受け取られるメッセージを通じて導入される。制御ノード120においては、プロセッサノード105(それは単に図7の１つのボックスとして示されるが)当たりロジック715の1つのインスタンスがあるであろう。ある実施態様の下では、制御ノード側ロジック715は、FCPかFCP-2プロトコル、あるいはiSCSI、あるいは様々な媒体に亘ってSCSI-2またはSCSI-3コマンドセットを使用する他のプロトコル経由で、SAN 130と通信する。
【０１５４】
上記のように、プロセッサ側ロジックは、データの流れがコマンドを関連づけるかどうか、そして、そうならば、どの方向であるかを示すRVIメッセージヘッダーにおけるフラグを設定する。制御ノード側記憶装置ロジック715は、プロセッサ側ロジックからメッセージを受け取り、次に、動作する方法を決定するための、例えば、バッファ等を割り付けるためにヘッダー情報を分析する。さらにそのロジックは、そのプロセッサからのメッセージに含まれているアドレス情報を、対応し、マップされたSANアドレスに変換し、さらにSAN 130にコマンドを出す(例えばFCPあるいはFCP-2経由で)。
【０１５５】
SCSIデータ転送段階を要求しないTEST UNIT READYコマンドのようなSCSIコマンドは、コマンドメッセージに使用されるRVI上に単一のコマンドを送るプロセッサ側ロジック720によって、および同じRVI上に単一のステータスメッセージを送り返す制御ノード側ロジックによって処理される。より具体的には、そのプロトコルのプロセッサ側は、標準メッセージヘッダー、このコマンドのための新しいシーケンス番号、希望のSCSIターゲットおよびLUN、実行されるべきSCSIコマンド、およびゼロのリストサイズを有するメッセージを構築する。そのロジックの制御ノード側は、メッセージを受け取り、SCSIコマンド情報を抽出し、インタフェース128経由でSAN 130にそれを伝達する。制御ノードはコマンド完了コールバックを受け取った後、標準メッセージヘッダー、このコマンドのためのシーケンス番号、完了したコマンドのステータス、および、コマンドがチェック条件ステータスで完成した場合、任意に要求センス・データを使用して、それは、プロセッサへのステータスメッセージを構築する。
【０１５６】
ホストメモリへSCSI機器からデータを転送することをSCSIデータ転送段階に要求するREADコマンドのようなSCSIコマンドは、制御ノード側のロジック715、およびプロセッサノード105Tのメモリへの1つ以上のRDMA WRITE動作、および制御ノードからの単一のステータスメッセージとで応答する制御ノードに、コマンドメッセージを送信するプロセッサ側のロジックによって、処理される。より具体的には、プロセッサ側ロジック720は、標準メッセージヘッダー、このコマンドのための新しいシーケンス番号、希望のSCSIターゲットおよびLUN、実行されるべきSCSIコマンド、そしてコマンドからのデータが格納されることになっているメモリの領域のリストを有するコマンドメッセージを構築する。制御ノード側ロジック715は、SCSIコマンドが制御ノード上でタスクを実行している間、SCSI動作からのデータを格納するために一時記憶装置バッファを割り付ける。制御ノード側ロジック715が処理のためにSAN 130にSCSIコマンドを送り、コマンドが完了した後、それは、1つ以上のRDMA WRITE動作のシーケンスを有するプロセッサ105メモリにデータを送り返す。次に、それは、標準メッセージヘッダー、このコマンドのためのシーケンス番号、完了したコマンドのステータス、および、そのコマンドがSCSI CHECK CONDITIONステータスで完成した場合、任意にREQUEST SENSEデータを有するステータスメッセージを構築する。
【０１５７】
ホストメモリからSCSI機器までデータを転送することをSCSIデータ転送段階に要求するWRITEコマンドのようなSCSIコマンドは、制御ノード側ロジック715へ単一コマンドメッセージ、制御ノード側ロジック715からプロセッサ側ロジックまでの1つ以上のBUFメッセージ、制御ノードにおけるメモリにプロセッサ側記憶装置ロジックからの1つ以上のRDMA WRITE動作、プロセッサ側ロジックから制御ノード側ロジックまでの1つ以上のTRANメッセージおよび制御ノード側ロジックからプロセッサ側ロジックへの単一ステータスメッセージを送るプロセッサ側ロジック720によって処理される。プロセッサ側記憶装置ロジックに制御ノードの一時的バッファ・メモリの場所を伝えるためのBUFメッセージの使用、およびRDMA WRITEデータ転送の完了を示すためのTRANメッセージの使用は、基礎的なGiganet構造中のRDMA READ能力の不足による。基礎的な構造がRDMA READ動作をサポートする場合、異なるシーケンスの対応するアクションが使用されるであろう。より具体的にはプロセッサ側ロジック720は、標準メッセージヘッダー、このコマンドのための新しいシーケンス番号、希望のSCSIターゲットおよびLUN、および実行されるべきSCSIコマンドを有するCMDメッセージを構築する。制御ノード側ロジック７１５は、ＳＣＳＩコマンドが制御ノード上でタスクを実行している間、ＳＣＳＩ動作からのデータを格納するために一時記憶装置バッファを割り付ける。次に、プロトコルの制御ノード側は、標準メッセージヘッダー、このコマンドのためのシーケンス番号、および制御ノード上で一時記憶装置バッファに使用される、仮想メモリの領域のリストを有するBUFメッセージを構築する。次に、プロセッサ側ロジック720は、一連の1回以上のRDMA WRITE動作で制御ノードメモリにデータを送る。次に、それは、標準メッセージヘッダーとこのコマンドのためのシーケンス番号とを有するTRANメッセージを構築する。制御ノード側ロジックはSCSIコマンドを処理にためにSAN 130に送り、さらにコマンド完了を受け取った後、標準メッセージヘッダー、このコマンドのためのシーケンス番号、完了したコマンドのステータス、および、コマンドがCHECK CONDITIONステータスで完了した場合、任意にREQUEST SENSEデータを有するSTATメッセージを構築する。
【０１５８】
いくつかの実施態様の下では、CMDメッセージは、そのコマンド用のデータが格納される仮想メモリの領域のリストを含んでいる。BUFとTRANのメッセージは、CMDメッセージにおける領域リストの各エントリへプロトコルの制御ノード側が個別のBUFメッセージを送れるようにするインデックスフィールドも含んでいる。プロトコルのプロセッサ側は、データ転送の単一のセグメントの完了を示すためのTRANメッセージを後に続けて、BUFメッセージに記述されたデータの量に対するRDMA WRITE動作の実行により、そのようなメッセージに応答するであろう。
【０１５９】
プロセッサ側ロジック720と制御ノード側ロジック715との間のプロトコルは、scatter-gather 入出力操作を可能にする。この機能は、入出力要求に含まれるデータが、仮想または物理あるいはその両方のメモリーのいくつかの別個の領域から読まれるかあるいは書かれ得るようにする。これは、複数の隣接していないバッファが、制御ノード上でその要求に使用され得るようにする。
【０１６０】
上記のように、構成ロジック705は、プラットホームに分配されたSAN記憶装置を発見すること、および管理者が特定のPANに記憶装置を細分割当てするように、インタフェースロジック710と対話することに責任がある。この割当ての一部として、構成基本要素705は、プロセッサアドレスおよび実際のSANアドレスとの一致を識別する情報を含んでいる記憶データ構造915を作成し保全する。図7はそのような構造を示す。その一致は、その処理ノードと、例えばシミュレートされたコントローラ、ケーブル、ユニットあるいは論理装置番号(LUN)の名前によって、シミュレートされたSCSIディスク識別表示との間であるであろう。
【０１６１】
（管理ロジック）
管理ロジック135はPANを供給するための制御ノードソフトウェアにインタフェースするために使用される。とりわけ、ロジック135は、管理者がPANの仮想ネットワークトポロジー、外部ネットワークへのその可視性を確立することを可能にし(例えばサービスクラスタとして)、そしてPAN上の装置のタイプ、例えば、ブリッジと経路設定を確立することを可能にする。
【０１６２】
管理者が最初の割当ての間に、あるいはその後にPANのための記憶装置を定義してもよいように、ロジック135は記憶管理インタフェースロジック710とのインタフェースも行う。その構成定義は上に議論された記憶装置の一致(SANに対するSCSI)、およびアクセス管理許可を含んでいる。
【０１６３】
上記のように、各PANおよび各プロセッサは、その仮想ネットワーキング(仮想MACアドレスを含めて)および仮想記憶によって定義された個性を有するであろう。プロセッサクラスタリングを実装するために、下記のように、そのような個性を記録する構造は管理ロジックによってアクセスされるであろう。さらにそれらは、上記のような管理者によってまたはエージェント管理者と共にアクセスされるであろう。例えば、エージェントは時刻または年のようなある出来事に応じて、あるいはそのシステム上のある負荷に応じてPANを再構成するために使用されるであろう。
【０１６４】
プロセッサのオペレーティングシステムソフトウェアは、制御ノード上で動作する管理ソフトウェアへGiganetスイッチ115を通ってノード用のコンソールI/Oトラフィックを送るためにシリアルコンソールドライバコードを含んでいる。そこから、管理ソフトウェアは、任意のノードのコンソールI/Oストリームを制御ノードの管理ポート(その低速イーサネットポートおよびその緊急時管理ポート)経由で、あるいは高速外部ネットワーク125経由で、管理者による許可に従いアクセス可能にすることができる。コンソールトラフィックは監査と履歴の目的で記録され得る。
【０１６５】
（クラスタ管理ロジック）
図9は、ある実施態様のクラスタ管理ロジックを図示する。クラスタ管理ロジック905は、PANのネットワークトポロジー、PAN内のMACアドレス割当てなどのように、上記ネットワークの情報を記録するデータ構造910にアクセスする。さらに、クラスタ管理ロジック905は、様々なプロセッサ106の記憶装置対応を記録するデータ構造915にもアクセスする。さらに、クラスタ管理ロジック905は、プラットホーム100内の割り付けられていないプロセッサのようなフリーリソースを記録するデータ構造920にもアクセスする。
【０１６６】
プロセッサエラーイベントあるいは管理者コマンドに応じて、クラスタ管理ロジック905は、与えられたプロセッサの記憶装置およびネットワークの個性を新しいプロセッサに「移動させる」ためにデータ構造を変更することができる。この方法では、新しいプロセッサは、前のプロセッサの個性を「継承する」。クラスタ管理ロジック905は、故障しているものを交換するために、PANにおいて新しいプロセッサを交換するために、これを行わせる原因になり得る。
【０１６７】
その新しいプロセッサは、前のプロセッサのMACアドレスを継承し、以前のもののように動作するであろう。新しいプロセッサがブートする時、制御ノードは連結度情報を通信し、必要とされるような故障してないプロセッサのための連結情報を更新するであろう。例えば、ある実施態様では、他のプロセッサのためのRVI接続はトランスペアレントに更新される;つまり、他のプロセッサ上のソフトウェアは、新しく交換されたプロセッサへの連結の確立に関係する必要はない。さらに、その新しいプロセッサは、以前のものの記憶装置対応を継承し、従って、以前のプロセッサの存続された状態を継承するであろう。
【０１６８】
他の利点の中でこれは、プロセッサを含むリソースのフリープールが所与のPANに亘ってではなく全プラットホームに亘って共有されることを可能にする。このようにフリーリソース(システムの信頼性およびフォルトトレランスを改善するためにそういうものとして維持されるであろう)はより効率的に使用されるであろう。
【０１６９】
新しいプロセッサが「交換される」時、それは、IPアドレスとMACアドレスとの関連付けを学習するために、再度ARPすることが、必要であろう。
【０１７０】
（選択肢）
スイッチ構造115の各Giganetポートが、その上の1024の同時的仮想インタフェース接続をサポートすることができ、ハードウェアプロテクションでそれらを相互に離れているようにしておくことができるので、オペレーティングシステムは、アプリケーションプログラムとノードのGiganetポートを、安全に共有することができる。これは、ドライバコードの全スタックを通じて動作する必要なしに、アプリケーションプログラムの直接の接続を可能にするであろう。これを行うと、オペレーティングシステムコールは、仮想インタフェースチャネルを確立し、アプリケーションアドレス空間へそのバッファと待ち行列をメモリマップするであろう。さらに、そのチャネルにインタフェースする低レベルの詳細をカプセル化しているライブラリは、そのような仮想のインタフェース接続の使用を容易にするであろう。そのライブラリは、自動的に冗長な仮想のインタフェースチャネルペアを確立し、呼出しアプリケーションからの任意の努力あるいは意識も要求せずに、それらの間の共有化や故障を管理することができるであろう。
【０１７１】
上記の実施態様は、ATMのような構造に関して内部的にイーサネットをエミュレートした。本設計は、アーキテクチャーの多くを単純化する内部イーサネット構造を使用するために変更されることがあり、例えば、エミュレーション機能に対するニーズの除去である。外部ネットワークがATMに応じて通信すると、別のバリエーションはイーサネットのエミュレーションなしでATMを内部に使用するであろうし、また、ATMは、そのようにアドレスされると、外部ネットワークに外部的に通信することができるであろう。別のバリエーションは、プラットホーム(つまりイーサネットのエミュレーションのない)に対して内部的に、ATMを可能にするだろうし、また、外部通信だけがイーサネットに変換される。これは内部通信を合理化するだろうが、コントローラでエミュレーションロジックを要求するだろう。
【０１７２】
ある実施態様は、ソフトウェア構成コマンドに基づいてPANを配備している。配備がプログラム制御に基づくであろうことが認識されるであろう。例えば、より多くのプロセッサがそのPANための動作のピーク時にソフトウェア管理の下で配備されるか、あるいは、そのPANに対して多かれ少なかれ記憶空間を対応させることが、ソフトウェアアルゴリズムの制御の下で展開されるかもしれない。
【０１７３】
本発明の範囲が上記の実施態様に制限されることがないが、追加された請求項によって規定されること;およびこれらの請求項は記述されたものの変更および改良を包含するであろうことは、認識されるであろう。
【図面の簡単な説明】
【０１７４】
【図１】本発明のある実施態様を図示する系統図である。
【図２Ａ】本発明のある実施態様に応じて確立された通信リンクを図示するダイアグラムである。
【図２Ｂ】本発明のある実施態様に応じて確立された通信リンクを図示するダイアグラムである。
【図２Ｃ】本発明のある実施態様に応じて確立された通信リンクを図示するダイアグラムである。
【図３Ａ】本発明のある実施態様のネットワークソフトウェアアーキテクチャを図示するダイアグラムである。
【図３Ｂ】本発明のある実施態様のネットワークソフトウェアアーキテクチャを図示するダイアグラムである。
【図４Ａ】本発明のある実施態様に応じてドライバロジックを図示する流れ図である。
【図４Ｂ】本発明のある実施態様に応じてドライバロジックを図示する流れ図である。
【図４Ｃ】本発明のある実施態様に応じてドライバロジックを図示する流れ図である。
【図５】本発明のある実施態様に応じてサービスクラスタを図示している。
【図６】本発明のある実施態様の記憶装置ソフトウェアアーキテクチャを図示している。
【図７】本発明のある実施態様のプロセッサ側の記憶装置ロジックを図示している。
【図８】本発明のある実施態様の記憶装置アドレスマッピングロジックを図示している。
【図９】本発明のある実施態様のクラスタ管理ロジックを図示している。
【符号の説明】
【０１７５】
105  処理ノード
115  スイッチ機構
120  制御ノード
135  管理ロジック
206  スイッチ
208  スイッチ
210  プロセッサロジック
214  仮想スイッチロジック
305  IPスタック
310  仮想ネットワークドライバ
320  Giganetドライバ
325  Giganetドライバ
335  仮想LANサーバー
340  仮想LANプロキシ
350  ARPロジック、
505  クラスタ
605  記憶装置構成ロジック
610  管理インタフェース、
615  制御ノード側記憶装置ロジック
905  クラスタ管理ロジック、
910  ネットワークデータ構造
915  記憶装置データ構造
920  フリーリソースデータ構造
【図１】
2005506726.tif 000003
【図２Ａ】
2005506726.tif 000004
【図２Ｂ】
2005506726.tif 000005
【図２Ｃ】
2005506726.tif 000006
【図３Ａ】
2005506726.tif 000007
【図３Ｂ】
2005506726.tif 000008
【図４Ａ】
2005506726.tif 000009
【図４Ｂ】
2005506726.tif 000010
【図４Ｃ】
2005506726.tif 000011
【図５】
2005506726.tif 000012
【図６】
2005506726.tif 000013
【図７】
2005506726.tif 000014
【図８】
2005506726.tif 000015
【図９】
2005506726.tif 000016
【国際公開パンフレット】
2005506726.tif 000017
2005506726.tif 000018
2005506726.tif 000019
2005506726.tif 000020
2005506726.tif 000021
2005506726.tif 000022
2005506726.tif 000023
2005506726.tif 000024
2005506726.tif 000025
2005506726.tif 000026
2005506726.tif 000027
2005506726.tif 000028
2005506726.tif 000029
2005506726.tif 000030
2005506726.tif 000031
2005506726.tif 000032
2005506726.tif 000033
2005506726.tif 000034
2005506726.tif 000035
2005506726.tif 000036
2005506726.tif 000037
2005506726.tif 000038
2005506726.tif 000039
2005506726.tif 000040
2005506726.tif 000041
2005506726.tif 000042
2005506726.tif 000043
2005506726.tif 000044
2005506726.tif 000045
2005506726.tif 000046
2005506726.tif 000047
2005506726.tif 000048
2005506726.tif 000049
2005506726.tif 000050
2005506726.tif 000051
2005506726.tif 000052
2005506726.tif 000053
2005506726.tif 000054
2005506726.tif 000055
2005506726.tif 000056
2005506726.tif 000057
2005506726.tif 000058
2005506726.tif 000059
2005506726.tif 000060
2005506726.tif 000061
2005506726.tif 000062
2005506726.tif 000063
2005506726.tif 000064
2005506726.tif 000065
2005506726.tif 000066
2005506726.tif 000067
2005506726.tif 000068
2005506726.tif 000069
2005506726.tif 000070
2005506726.tif 000071
2005506726.tif 000072
2005506726.tif 000073
2005506726.tif 000074
2005506726.tif 000075
2005506726.tif 000076
2005506726.tif 000077
2005506726.tif 000078
2005506726.tif 000079
2005506726.tif 000080
2005506726.tif 000081
2005506726.tif 000082
2005506726.tif 000083
2005506726.tif 000084
2005506726.tif 000085
2005506726.tif 000086
2005506726.tif 000087
2005506726.tif 000088
2005506726.tif 000089
2005506726.tif 000090
2005506726.tif 000091
2005506726.tif 000092
【国際調査報告】
2005506726.tif 000093
2005506726.tif 000094
2005506726.tif 000095