(57)【要約】ネットワーク環境において、第２のノードと接続する第１のサービスを有する第１のノードを変更する要求を処理するための方法及びシステムが、ここに開示される。本発明の１つの態様において、例示的な方法が、第１のノードにおいて第２のサービスを動的に起動させ（１１５１）、該第２のサービスを第２のノードと接続させ（１１５２）、サービスについての要求を該第２のサービスに伝送し（１１５３）、第１のサービスを終了させる（１１５７）。他の方法及びシステムについても説明される。
2005524908.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク環境において、第２のノードと接続する第１のサービスを有する第１のノードを変更する要求を処理する方法であって、前記方法が、
前記第１のノードにおいて第２のサービスを動的に起動させ、
前記第２のサービスを前記第２のノードと接続させ、
サービスについての要求を前記第２のサービスに指向させ、
前記第１のサービスを終了する、
段階を含むことを特徴とする方法。
【請求項２】
前記サービスについての要求がデータの新しいセッションから来るかどうかを判断し、
前記サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を前記第２のサービスに伝送し、
前記サービスについての要求がデータの既存のセッションから来る場合には、該サービスについての要求を前記第１のサービスに伝送する、
段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のサービスは、予め特定された条件が満たされた時に終了されることを特徴とする請求項１に記載の方法。
【請求項４】
前記予め特定された条件が、処理する必要があるデータ量を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記予め特定された条件が、期間の経過を含むことを特徴とする請求項３に記載の方法。
【請求項６】
前記第１のサービスが前記サービスについての要求を処理する間、前記第２のサービスと前記第２のノードとの間の接続が確立されることを特徴とする請求項１に記載の方法。
【請求項７】
前記第１のノードの変更についての前記要求が、ユーザ・インターフェースによる入力から受け取られたことを特徴とする請求項１に記載の方法。
【請求項８】
前記条件が満たされる前に前記要求が中止されたかどうかを検知し、前記第１のノードの設定を元の設定に動的にロールバックする段階をさらに含むことを特徴とする請求項３に記載の方法。
【請求項９】
ロールバック操作が、
前記第１のサービスを介して、サービスについての全ての要求を指向させ、
前記第２のサービスにおいてデータ処理を終了させる、
段階を含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記第２のサービスを前記ネットワークから切断し、
前記第２のサービスを終了させる、
段階を含むことを特徴とする請求項９に記載の方法。
【請求項１１】
ネットワーク環境において、第１のノードと第２のノードとの間の直接接続を有するトポロジーを変更する要求を処理する方法であって、前記方法が、
前記第１のノードと前記第２のノードとの間に付加されるように意図された新しいサービスを動的に起動させ、
前記新しいサービスを前記第１のノード及び第２のノードと接続させ、
前記サービスについての要求を前記第１のノードから前記新しいサービスに指向させ、その後、該要求を前記第２のノードに伝送し、
前記第１のノードと前記第２のノードとの間の前記直接接続を終了させる、
段階を含むことを特徴とする方法。
【請求項１２】
前記サービスについての要求がデータの新しいセッションから来るかどうかを判断し、
前記サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を前記新しいサービスに伝送し、
前記サービスについての要求がデータの既存のセッションから来る場合には、該サービスについての要求を前記第１のサービスと前記第２のサービスとの間の直接接続に伝送する、
段階をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記直接接続は、予め特定された条件が満たされた時に終了されることを特徴とする請求項１１に記載の方法。
【請求項１４】
前記予め特定された条件が、処理する必要があるデータ量を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記予め特定された条件が、期間の経過を含むことを特徴とする請求項１３に記載の方法。
【請求項１６】
前記サービスについての要求が前記第１のノードと前記第２のノードとの間の前記直接接続を介して処理される間、前記新しいサービスと該第１のノードとの間、及び該新しいサービスと該第２のノードとの間の接続が確立されることを特徴とする請求項１１に記載の方法。
【請求項１７】
前記条件が満たされる前に前記要求が中止されたかどうかを検知し、
前記第１のノードと前記第２のノードとの間の設定を元の設定に動的にロールバックする、
段階をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１８】
ロールバック操作が、
サービスについての全ての要求を直接前記第１のノードから前記第２のノードに指向させ、
前記新しいサービスを終了させる、
段階を含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
ネットワーク環境において、直接第２のノードに接続された第１のノードと、直接第３のノードに接続された第２のノードと、第３のノードとを有するトポロジーを変更する要求を処理する方法であって、前記方法が、
前記第１及び第３のノードを動的に接続させ、
サービスについての要求を直接前記第１のノードから前記第３のノードに指向させ、
前記第２のノードを終了させる、
段階を含むことを特徴とする方法。
【請求項２０】
前記サービスについての要求がデータの新しいセッションから来るかどうかを判断し、
前記サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を直接前記第１のノードから前記第３のノードに伝送し、
前記サービスについての要求がデータの既存のセッションから来る場合には、該サービスについての要求を前記第１のサービスから前記第２のノードに、かつ該第２のノードから前記第３のノードに伝送する、
段階をさらに含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
前記第２のノードが、予め特定された条件が満たされた時に終了されることを特徴とする請求項１９に記載の方法。
【請求項２２】
前記予め特定された条件が、処理する必要があるデータ量を含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記予め特定された条件が、期間の経過を含むことを特徴とする請求項２１に記載の方法。
【請求項２４】
前記サービスについての要求が、前記第１のノード、前記第２のノード、及び前記第３のノードを介して処理される間、該第１のノードと該第３のノードとの間の接続が確立されることを特徴とする請求項１９に記載の方法。
【請求項２５】
前記条件が満たされる前に前記要求が中止されたかどうかを検知し、
前記第１のノードと前記第３のノードとの間の設定を元の設定に動的にロールバックする、
段階をさらに含むことを特徴とする請求項２１に記載の方法。
【請求項２６】
ロールバック操作が、
サービスについての全ての要求を前記第１のノードから前記第２のノードに指向させ、
前記第１のノードと前記第３のノードとの間で処理されるサービスについての残りの要求を終了させ、
前記第１のノードと前記第３のノードとの間の直接接続を切断する、
段階を含むことを特徴とする請求項２５に記載の方法。
【請求項２７】
ネットワーク環境において、第１のサービスを有するノードを変更するためのシステムであって、前記システムが、
前記第１のサービスと並列に作動し、前記ノードにおいて動的に起動される第２のサービスを備え、
前記第１のサービスがデータの既存のフローを処理し、前記第２がデータの新しいフローを同時に処理し、
満たされた時に前記第２のサービスがデータの全てのフローを処理し、前記第１のサービスが終了される予め特定された条件が設けられた、
ことを特徴とするシステム。
【請求項２８】
前記予め特定された条件が、処理する必要があるデータ量を含むことを特徴とする請求項２７に記載のシステム。
【請求項２９】
前記予め特定された条件が、期間を含むことを特徴とする請求項２７に記載のシステム。
【請求項３０】
前記条件が満たされる前に受け取られた時に、前記ノードの設定が元の設定に動的にロールバックされる中止要求をさらに備えることを特徴とする請求項２７に記載のシステム。
【請求項３１】
ロールバック操作が、
処理のためにデータの全てのフローを前記第１のサービスに指向させ、
前記第２のサービスを終了させる、
段階を含むことを特徴とする請求項３０に記載のシステム。
【請求項３２】
ネットワーク環境において、第１のノードと第２のノードとの間の直接接続を有するトポロジーを変更するためのシステムであって、前記システムが、
前記第１のノード及び前記第２のノードを連結させる、動的に起動された少なくとも１つの新しいサービスを備え、
データの既存のフローが前記第１のノードから前記第２のノードに直接転送される間、前記少なくとも１つの新しいサービスがデータの新しいフローを処理し、
満たされた時に、前記少なくとも１つの新しいサービスがデータの全てのフローを処理し、前記第１のノードと前記第２のノードとの間の前記直接接続が終了される、予め特定された条件が設けられた、
ことを特徴とするシステム。
【請求項３３】
前記予め特定された条件が、処理する必要があるデータ量を含むことを特徴とする請求項３２に記載のシステム。
【請求項３４】
前記予め特定された条件が、期間を含むことを特徴とする請求項３２に記載のシステム。
【請求項３５】
前記条件が満たされる前に受け取られた時に、前記ノードの設定が元の設定に動的にロールバックされる中止要求をさらに備えることを特徴とする請求項３２に記載のシステム。
【請求項３６】
ロールバック操作が、
データの全てのフローを直接前記第１のノードから前記第２のノードに指向させ、
前記少なくとも１つの新しいサービスを終了させる、
段階を含むことを特徴とする請求項３５に記載のシステム。
【請求項３７】
ネットワーク環境において、第２のノードと接続する第１のサービスを有する第１のノードを変更する要求を処理する方法を機械に実行させるための実行可能なコードを有する機械可読媒体であって、前記方法が、
前記第１のノードにおいて第２のサービスを動的に起動させ、
前記第２のサービスを前記第２のノードと接続させ、
サービスについての要求を前記第２のサービスに指向させ、
前記第１のサービスを終了させる、
段階を含むことを特徴とする機械可読媒体。
【請求項３８】
前記方法が、
前記サービスについての要求がデータの新しいセッションから来るかどうかを判断し、
前記サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を前記第２のサービスに伝送し、
前記サービスについての要求がデータの既存のセッションから来る場合には、該サービスについての要求を前記第１のサービスに伝送する、
段階をさらに含むことを特徴とする請求項３７に記載の機械可読媒体。
【請求項３９】
前記方法が、
前記要求が中止されたかどうかを検知し、
前記要求が中止された場合には、前記第１のノードの設定を元の設定に動的にロールバックする段階をさらに含むことを特徴とする請求項３７に記載の機械可読媒体。
【請求項４０】
ネットワーク環境において、第１のノードと第２のノードとの間の直接接続を有するトポロジーを変更する要求を処理する方法を機械に実行させるための実行可能なコードを有する機械可読媒体であって、前記方法が、
前記第１のノードと前記第２のノードとの間に付加されることが意図される新しいサービスを動的に起動させ、
前記新しいサービスを前記第１のノード及び前記第２のノードと接続させ、
サービスについての要求を前記第１のノードから前記新しいサービスに指向させ、その後、前記要求を前記第２のノードに伝送し、
前記第１のノードと前記第２のノードとの間の前記直接接続を終了させる、
段階を含むことを特徴とする機械可読媒体。
【請求項４１】
前記方法が、
前記サービスについての要求がデータの新しいセッションから来るかどうかを判断し、
前記サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を前記新しいサービスに伝送し、
前記サービスについての要求がデータの既存のセッションから来る場合には、該サービスについての要求を前記第１のノードと前記第２のノードとの間の前記直接接続に伝送する、
段階をさらに含むことを特徴とする請求項４０に記載の機械可読媒体。
【請求項４２】
前記方法が、
前記要求が中止されたかどうかを検知し、
前記要求が中止された場合には、前記第１のノードと前記第２のノードとの間の設定を元の設定に動的にロールバックする段階をさらに含むことを特徴とする請求項４０に記載の機械可読媒体。
【請求項４３】
直接第２のノードに接続された第１のノードと、直接第３のノードに接続された第２のノードと、第３のノードとを有するトポロジーを変更する要求を処理する方法を機械に実行させるための実行可能なコードを有する機械可読媒体であって、前記方法が、
前記第１のノード及び前記第３のノードを動的に接続させ、
サービスについての要求を直接前記第１のノードから前記第３のノードに指向させ、
前記第２のノードを終了させる、
段階を含むことを特徴とする機械可読媒体。
【請求項４４】
前記方法が、
前記サービスについての要求がデータの新しいセッションから来るかどうかを判断し、
前記サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を直接前記第１のノードから前記第３のノードに伝送し、
前記サービスについての要求がデータの既存のセッションから来る場合には、該サービスについての要求を前記第１のノードから前記第２のノードに、かつ該第２のノードから前記第３のノードに伝送する、
段階をさらに含むことを特徴とする請求項４３に記載の機械可読媒体。
【請求項４５】
前記方法が、
前記要求が中止されたかどうかを検知し、
前記要求が中止された場合には、前記第１のノードと前記第２のノードとの間の設定を元の設定に動的にロールバックする段階をさらに含むことを特徴とする請求項４３に記載の機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ネットワーク・システムに関し、より具体的には、処理されるサービスを中断することなく、ネットワーク・システムのトポロジーを動的に変更する方法に関する。
（著作権通知)
本特許文献の開示の一部は、著作権の保護を受ける材料を含んでいる。著作権者は、本特許文献が米国特許商標庁の特許ファイル又は記録において公開されたときに、何者かが特許文献又は特許の開示を複写することに異議はないが、他の場合には、如何なる場合にも全ての著作権を留保する。
【背景技術】
【０００２】
典型的な標準的ネットワーキング・システムは、単一の機能、一定の機能を実施するものであった。仮想化システムの第１世代は、顧客ごとの機能を提供するが、この機能は依然として固定されたものである。これらの制限により、幾つかの欠点がもたらされる。顧客は、サービス可用性に基づいて、サービス・プロバイダを判断する。顧客は、如何なるあらゆる休止時間をサービス・プロバイダに関連する問題と認識し、プロバイダを変えることを考える。サービス・プロバイダは、該サービス・プロバイダのオファリングにサービス製品を付加し、より高い価値のオファリングにより、より多くの収益を生み出し、マージンを増大させたいと思う。今日のシステムの一部は、更新と関連した休止時間を必要とする。これは、サービス・プロバイダのシステムが、全ての機能を単一のランタイムイメージ内にパッケージするためである。全ての機能が単一のユニットにパッケージされ、解放された場合には、システムの設計及び試験がより簡単である。場合によっては、サービス・プロバイダは、バックアップシステムがサービスを処理する間、冗長トポロジーを構築し、１つのシステムを停止させることによって、休止時間を最小にしなければならない。これは、サービス・プロバイダに、冗長ハードウェアを購入し、複雑な設定を設計することを強いので、最適なものではない。規模の経済性及び低い資本支出を達成するために、サービス・プロバイダは、単一システム上の多数の顧客にサービスするシステムをインストールしている。各々の個別の顧客に対する専用ハードウェアではなく、サービス・プロバイダは、多くの顧客全体にわたって設備投資を償却し、その平均コストを低減させる。これらのサービス・プロバイダは、一般的に、ルーチン保守のために顧客に対して休止時間の予定を設定する。同じシステムを利用するため多数の顧客が設定される場合、このスケジューリングはより困難である。
【０００３】
さらに、典型的なネットワーキング・システムは、一定の方法で構成された一定の機能を提供することができる。例えば、処理は、通常層２であり、その後層３が続くか、セキュア・ソケット層（ＳＳＬ）加速であり、その後ロード・バランシングが続く。一般的には、ネットワーキング・システムは、モノリシック・バージョンのソフトウェアを用いて一定の機能を実施する。仮想ローディングを提供するこれらのシステムは、一般的に、開始時に、簡単なリンク時間設定戦略又は仮想ローディングを用いるが、その後は用いない。このように、起動時にどの機能を動作させたいかを選択できるが、その後はそれを変更することができない。一般的に、従来のシステムは、更新された時に再起動を必要とするといった欠点を有するものであった。このことが、休止時間をもたらす。その結果、幾つかの従来のシステムは、任意のトポロジーを用いて、任意の方法で機能を設定し、休止時間をもたらすことなく、作動しているシステムに新しい機能を付加する能力、又は機能の一部を新しい改訂に更新する能力を欠いている。
【０００４】
さらに、データ・センタにおいては、該データ・センタが、その時々に、パケット処理システム上で動作しているソフトウェアを更新するか、ネットワーク・トポロジーを変更するか、或いはハードウェアを更新しなければならない。ソフトウェア又はハードウェアの如何なる更新も、サービス可用性を中断する。こうした更新は、通常、サービスが顧客に提供されていない保守時間中に行われる。代替的に、サービスがネットワークの１つ上で常に利用可能なように、サービス・ネットワークが複写される。第１の手法においては、サービスが中断される。第２の手法においては、冗長ネットワークをセットアップし、注意深く維持しなければならない。
【０００５】
したがって、ネットワーク・システムのトポロジーを構成し、管理し、変更し、又は更新することができるより優れた解決法が極めて望ましい。
【発明の開示】
【０００６】
ネットワーク環境において、第２のノードと接続する第１のサービスを有する第１のノードを変更する要求を処理するための方法及びシステムが、ここに開示される。本発明の１つの態様において、例示的な方法が、第１のノードにおいて第２のサービスを動的に起動させ、該第２のサービスを第２のノードと接続させ、サービスについての要求を該第２のサービスに伝送し、第１のサービスを終了させる。
【０００７】
１つの特定の例示的な実施形態においては、この方法は、サービスについての要求がデータの新しいセッションから来るかどうかを判断し、該サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を第２のサービスに伝送し、該サービスについての要求がデータの既存のセッションから来る場合には、該要求を第１のサービスに伝送する段階を含む。さらに、予め特定された条件が満たされた場合には、第１のサービスが終了される。１つの実施形態においては、予め特定された条件は、処理する必要があるデータ量を含むことができる。代替的に、予め特定された条件が、期間を含むことができる。１つの実施形態においては、予め特定された条件が満たされる前はいつでも、第２のサービスを終了させ、第１のサービスにロールバックすることができる。
【０００８】
本発明は、これらの方法を実行するシステムと、データ処理システム上で実行されたときに該システムにこれらの方法を実行させる機械可読媒体とを含む。本発明の他の特徴は、添付の図面及び以下の詳細な説明から明らかであろう。
【発明を実施するための最良の形態】
【０００９】
本発明は、例として示されており、同じ参照番号が同じ要素を示す添付の図面の図に限定されるものではない。
以下の説明及び図は、本発明の実証であり、本発明を限定するものとして解釈すべきではない。本発明の完全な理解を提供するために、多数の特定の詳細を説明する。しかしながら、特定の例においては、本発明を不必要に分かりにくくしないように、公知の詳細又は従来の詳細は説明されていない。
【００１０】
図１は、本発明と共に用いることができるネットワーク・システムを示す。ネットワーク・システム１００が、インターネット１０１、ネットワーク機器１０２、及び複数のネットワーク・サーバ１０３のような外部ネットワークを含む。ネットワーク機器１０２は、インターネット１０１上の別のネットワーク・システムからデータ・パケットを受け取る。パーソナル・コンピュータのようなクライアントから、データを受け取ることができる。代替的に、企業イントラネットのような別のネットワーク環境から、データを受け取ることもできる。データは、ＴＣＰ／ＩＰプロトコル内にパッケージすることができる。ネットワーク機器１０２は、データを受け取り、対象とされるサーバのソース及び宛先を識別する。ネットワーク機器１０２は、データを処理し、データ・フローをサーバ１０３内の適切なサーバに分散させる。代わりに、サーバ１０３内の１つ又はそれ以上のサーバが、データ・パケットを処理し、それに応じて応答する。この応答は、対応するサーバからネットワーク機器１０２に伝送され、該ネットワーク機器１０２は、クライアントの宛先を解決し、そのデータをインターネット１０１上の適切なクライアントに伝送する。多数のサーバ１０３は、物理ポート又はＩＰアドレスを共有することができるが、ネットワーク機器１０２によって識別された対応する論理ＩＤによって、サーバ１０３の各サーバを識別することができる。ネットワーク機器１０２が、これらのリソースの解決を担当しており、このことは、以下にさらに詳細に説明される。
【００１１】
図２は、本発明の１つの実施形態の例示的なアーキテクチャを示す。システム２００は、入力／出力（Ｉ／Ｏ）モジュール２０１、管理モジュール２０２及び２０４、スイッチ・ファブリック・モジュール２０３、及びサービス処理モジュール２０５を含む。サービス処理モジュール（ＳＰＭ）は、フロー処理モジュール（ＦＰＭ）とも呼ばれる。データ・フローが、図１のインターネット１０１のような外部ネットワークから来ると、Ｉ／Ｏモジュール２０１がデータを受け取り、既存のフロー内のメンバーシップに関する全ての受信パケットを分類する。管理処理モジュール２０２は、全ての管理処理を制御する。管理処理モジュール２０２は、システムを初期化し、コマンド・ライン・インターフェース（ＣＬＩ）、シンプル・ネットワーク管理プロトコル（ＳＮＭＰ）、ウェブ管理などの種々の管理インターフェースを実装し、設定及び再設定要求に応答する。サービス処理モジュール２０５は、全ての受信データを処理し、該データを図１のサーバ１０３内の適切なサーバに分散させる。スタンバイ管理モジュール２０４は、主管理モジュール２０２の補足である。主管理モジュール２０２が故障した場合、スタンバイ管理モジュール２０４は、管理機能の全ての役目を積極的に再開する。全てのモジュールは、モジュール間の全てのトラフィック・フローを調整するスイッチ・ファブリック２０３に連結されている。
【００１２】
図３Ａは、本発明の１つの実施形態によるＩ／Ｏモジュールの例示的なブロック図を示す。Ｉ／Ｏモジュール３００は、Ｉ／Ｏポート３０１、フロー分類子３０２、ファブリック・インターフェース論理３０３、及びフローテーブル・ランダム・アクセス・メモリ（ＲＡＭ）３０４を含む。幾つかのタイプのＩ／Ｏモジュールがあり、各々が異なるポート数、ポート速度、及び媒体形式を有する。１つの実施形態においては、Ｉ／Ｏモジュールは、イーサネットの変形（例えば、１０／１００、ギガビット、１０ギガビット、ファイバー、銅など）とすることができる。Ｉ／Ｏモジュールは、基本的な抽象アーキテクチャを共有することができる。
Ｉ／Ｏポート３０１は、媒体アクセス制御（ＭＡＣ）及び物理（ＰＨＹ）層の両方を表す。一般的には、これは、１００Ｍｂｐｔ、１Ｇｂｐｓ、又は１０ＧｂｐｓイーサネットＭＡＣ／ＰＨＹとなる。１００Ｍｂｐｓイーサネットのポートの場合には、このブロックの高レベルの統合があり、多数の物理ポートを組み込む１つのチップを有する。フロー分類子３０２は、受信パケットの適切なフローへのマッピングを担当している。利用可能な帯域幅によって、フロー分類子３０２は、１つより多い物理ポートとして働くことができる。フロー分類子３０２は、フロー分類アルゴリズムを実装する標準的なネットワーク・プロセッサによって、又は特定用途向け集積回路（ＡＳＩＣ）として、実装することができる。
【００１３】
Ｉ／Ｏモジュール３００はまた、どのＳＰＥがパケットを処理すべきかを判断するために、受信パケットの構文解析も担当する。本発明の１つの実施形態による、各ＳＰＥにおけるこの構文解析を複写するのではなく、Ｉ／Ｏモジュール３００は、パケットと共にＳＰＥに送られることになる長さフィールド及びフォーマット・フィールドを作成する。このフィールドは、以下にさらに詳細に説明される高速パスが、Ｉ／Ｏモジュールの仕事の全てを複写する必要なく、予め構文解釈されたパケットを用いて内部バッファをセットアップすることを可能にする。ファブリック・メッセージ・セクションは、Ｉ／Ｏモジュールとサービス処理モジュールとの間に送られるメッセージ・ヘッダを示すテーブルを有する。１つの実施形態においては、パケット・トレーラを有するように、１つより多いファブリック・セルにわたるパケットを必要とすることがある。
【００１４】
図４Ａは、本発明の１つの実施形態によるサービス処理モジュール（ＳＰＭ）の例示的なブロック図を示す。ＳＰＭは、システムのためのパケット処理を実施する。図４Ａを参照すると、ＳＰＭは、１つ又はそれ以上のサービス処理素子（ＳＰＥ）４０１を含む。全てのＳＰＥは、ファブリック・インターフェース４０２によって、システムの他のコンポーネントに接続することができるファブリック・スイッチ（図示せず）に連結される。各々のＳＰＥは、ＰｏｗｅｒＰＣのような汎用プロセッサ・コンピュータ（ＧＰＣ）、ＡＳＩＣのようなハードウェア加速装置、及び任意の暗号加速装置から構成することができる。パケット処理は、２つの主なカテゴリー、すなわちハードウェア加速装置を通じて実装される高速パス及びＰｏｗｅｒＰＣのような汎用プロセッサ・コンピュータを通じて実装される低速パスに分けられる。
パケット処理のための高速パスは、簡単で速くなるように設計され、簡単な処理を必要とする認識されたフロー内のパケットは、汎用プロセッサ・コンピュータ（例えば、ＰｏｗｅｒＰＣ）を用いることなく、処理すべきである。低速パスのパケットの場合は、ハードウェア加速装置（例えば、ＡＳＩＣ）が、大部分のパケットについてのパケット構文解釈及び他の低レベルのプリミティブを実行することによって、ＧＰＣを助けることができる。パケット・ヘッダ及びデータは、ＧＰＣのメモリ内に配置される。ＩＭＬメッセージが、修正されずにＧＰＣメモリ内に配置される。
【００１５】
図４Ｂは、本発明の代替的な実施形態による、ＳＰＭの例示的なブロック図を示す。ＳＰＭは、汎用中央処理ユニット（ＣＰＵ）４１１、ノースブリッジ（例えば、メモリ・コントローラ）のような基本的な周辺機器４１２、ハードウェア加速装置４１４、暗号装置４１０のような任意のコプロセッサ、及びスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）４１５、並びにダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）４１３及び４１６のような他のメモリを含む。１つの実施形態においては、汎用ＣＰＵは、Ｍｏｔｏｒｏｌａ  Ｉｎｃ．社からのＰＰＣ７４００のようなＰｏｗｅｒＰＣプロセッサである。他のＣＰＵを用いることもできる。１つの実施形態においては、ハードウェア加速装置４１４を、ＡＳＩＣとして実装することができる。
ＧＰＣは、新しいフローの少なくとも第１のパケットの受信、及びそのフローをどのように処理すべきかの判断を担当する。ＧＰＣ上で動作しているソフトウェアは、どのサービスを新しいフローに適用すべきか、もしある場合には、そのフローに属する更に別のパケットを処理するためにどの高速パス操作を用いるべきかを判断する。
【００１６】
ハードウェア加速装置４１４は、ファブリック・インターフェース、高速パス・パケット処理、及びＧＰＣへの低速パス・インターフェースを含む。ファブリック・インターフェースは、セグメント化、及びセル・ベースのスイッチ・ファブリックを横切ってパケットを送るのに必要とされる再組み立てを実施する。高速パスは、該高速パス上に配置された各フローのためにプログラムされた、全体及び半分のネットワーク・アドレス変換（ＮＡＴ）、伝送制御プロトコル（ＴＣＰ）接続スプライシング、及びインターネット・プロトコル（ＩＰ）・チェックサム再計算のような、１組のプリミティブを実装する。低速パス・インターフェースは、ＧＰＣ  ＤＲＡＭへの完全アクセスを可能にするＰＰＣバス・マスターである。ハードウェア加速装置は、トークン・ベースの速度制御を用いて、顧客ごとのパケット・キューイングも行う。ＧＰＣは、図２のスイッチ・ファブリック２０３のようなスイッチ・ファブリックと、Ｉ／Ｏモジュール、管理モジュール、及び他のＳＰＥと通信するメッセージ送信プロトコルとを用いる。
【００１７】
図４Ｃは、本発明のさらに別の代替的な実施形態による、ＳＰＭの例示的なブロック図を示す。図４Ｂに示されるシステム４２０に加えて、システム４３０は、ペリフェラル・コンポーネント・インターフェース（ＰＣＩ）バス４５７に連結されたバッファ４５０も含む。初期化のためのブート読み取り専用メモリ（ＲＯＭ）４５１によって、デバッグのための汎用非同期受信器／送信器（ＵＡＲＴ）４５２によって、又は汎用入力／出力（ＧＰＩＯ）４５３によって、バッファ４５０を用いることができる。さらに、ＳＰＭは、ＰＣＩブリッジ４５４を介してＰＣＩバスに連結された別のＵＡＲＴ４５５を含むことができる。ＵＡＲＴ４５５は、主コンソール４５６のような遠隔端末にデータを提供する。
【００１８】
図６Ａは、本発明の１つの実施形態による例示的な管理モジュールの簡単化されたブロック図を示す。１つの実施形態においては、管理モジュール６００は、汎用ＣＰＵ６０１、メモリ・コントローラ、タイマー、直接メモリ・アクセス（ＤＭＡ）、及び割込みを含む基本的な周辺機器６０２、ＤＲＡＭ６０３、及びスイッチ・ファブリック・インターフェース６０４を含む。管理モジュールは、スイッチ・ファブリック・インターフェース６０４を介してスイッチ・ファブリック６０５に連結されている。１つの実施形態において、管理モジュール６００及びスイッチ・ファブリック６０５は、同じ物理的ボード内に配置することができる。
管理モジュール６００は、全体のシステム管理処理を担当する。外部エンティティが「ボックスに話しかける」際には、それは、管理モジュールに話しかけている。管理モジュールは、システムＩＰプロトコル・スタック及びシステムＩＰアドレスを有する。管理モジュールは、シンプル・ネットワーク管理プロトコル（ＳＮＭＰ）のようなプロトコル・モジュール、及び管理アプリケーションに完全なシステム視点を提供するために、ボックス内の他のモジュールと通信するハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）を動作させる。
【００１９】
管理モジュールは、簡単なプロセッサ・メモリ・サブシステムである。この管理モジュールは、ファブリック６０５及び帯域外接続を介してシステム内の他のモジュールに接続する。管理モジュールはまた、別のカードが挿入されるか又はシステムから取り外される度にもハードウェアの割込みが発生する。トポロジーの機能の動的な変更、又は以下にさらに詳細に説明される動的なソフトウェアの更新（例えば、実行中に）など、システム内の全ての再設定イベントを駆動するために、このハードウェアの通知が用いられる。管理モジュールは、システム内の集中リソースであり、よって図２のスタンバイ管理モジュール２０４のようなホット・スタンバイ冗長モジュールを有する。アクティブ・モジュール（例えば、図２のアクティブ管理モジュール２０２）及び冗長モジュールは、互いに監視し、システム内に同等のものが存在するかどうか、及び正常に機能しているかどうかを判断する。何らかの異常が、スタンバイ・モジュール２０４によってアクティブ管理モジュール２０２内に検知された場合には、該スタンバイ・モジュール２０４は、システムの支配権を握り、アクティブ・モジュールになる。
【００２０】
スイッチ・ファブリック・モジュール６０５は、システム内の全てのデータ切り換えを制御する。その主な目的は、ファブリック・シリコン実装（例えば、ファブリック６０６）を収容することである。システムは、１つ又はそれ以上のスイッチ・ファブリック・モジュールを含む。スイッチ・ファブリックは、システムのバックプレーンを介して該システム内の他のモジュールに接続される。１つの実施形態においては、システム内の他のモジュールの各々への少なくとも１つの接続がある。代替的に、スイッチ・ファブリックがどのように設定されたかによって、及び他のモジュールの帯域幅ニーズによって、１つより多い接続があることもある。スイッチ・ファブリック・モジュールは、システム・バスにも接続する。システム・バスを通じて、管理モジュール及び他の処理モジュールは、スイッチ・ファブリックの動作を変えることができる。大部分のシステムの動作中に、スイッチ・ファブリックを再設定する必要はほとんどない。スイッチ・ファブリック自体は、当該技術分野において公知の標準的なシリコン供給業者からの市販のファブリックを用いて実装される。典型的な市販のファブリックは、共有メモリ、又はクロスバー・アーキテクチャのいずれかを実装する。図６Ｂは、本発明の代替的な実施形態による管理モジュールのさらに別の簡単化されたブロック図を示す。
【００２１】
幾つかの実施形態において、本発明は、仮想ネットワーク・トポロジー・モデルの導入もする。本発明の１つの実施形態によるこのモデルにおいては、システム内の全体のパケット処理機能が、接続された仮想サービス・モジュール（ＶＳＭ）ノードの抽象グラフとしてモデル化される。仮想サービス・モジュールは、動的サービス・モジュール（ＤＳＭ）とも呼ばれる。システム内の各ＶＳＭは、実社会の個々のネットワーク素子のラインに沿って大まかにモデル化される。例えば、ＶＳＭは、ほぼ独立型ＩＰルータ、イーサネット・スイッチ、ファイアウォール、又はロード・バランサーの機能を実装することができる。次に、これらの素子は、該素子が実社会内にある方法と類似した方法で任意のグラフ内に構成される。種々の地点において、ＮＳＥシステム上の物理ポートをグラフに取り付け、内部の仮想システムを外部の世界に「接続させる」ことを可能にする。グラフを非常に大きく拡大させてもよい。内部の表示を、典型的なネットワーク・データ・センタの大部分又は全てに置き換えてもよい。グラフのサイズは、ＲＡＭ及び処理能力によってのみ制限される。
【００２２】
図７は、本発明の１つの実施形態による例示的な仮想ネットワーク・システムを示す。仮想ネットワーク・システム７００の動作は、単に、標準的なネットワーク素子の集合の等価動作にすぎない。システム７００は、仮想ネットワークのトポロジーを模擬し、予想される外部の動作を生成する。事実上、仮想ネットワーク・システムの動作は、単に、標準的なネットワーク素子の集合の等価動作にすぎない。仮想ネットワーク・システムは、仮想ネットワークのトポロジーを模擬し、予想される外部の動作を生成する。
【００２３】
本発明の１つの実施形態によると、システムの動作の視覚化は容易である。外部の動作は、実際のコンポーネントから構築された同じシステムと全く同じなので、現在のネットワーク管理者及び技術者は、これと共に動作する既存の精神的モデルを有する。このことは、顧客が、困難な学習曲線を経験することなく、製品に取り組むことを可能にする。さらに、システムの全コンポーネントを動的に設定し、管理することができるので、設定がより柔軟である。位置、電源、及びケーブル布線のような物理的考慮事項は排除される。
さらに、仮想ネットワークは、イーサネットも、他の何らかのコンピュータ間リンク層プロトコルも必要としない。代わりに、仮想ノード間に特殊データリンク層を提供するために、フレームワークが用いられる。フレームワークは、ボックスを介してパケットを移動させるので、仮想サービス・モジュール（ＶＳＭ）は、これらがもたらす特徴が、データリンク層及びＩＰ層からの情報を操作し、又は該情報を得ることによって決まるのでない限り、データリンク層及びさらにＩＰ層を無視することができる。
【００２４】
さらに、システムをより容易に最適化することができる。仮想ネットワーク・システム内部の種々のネットワーク素子全てを簡単化し、仮想化することは、ユーザが、個々のコンポーネント全ての動作を組み合わせることによって、個々のパケットの処理を最適化することを可能にする。仮想ネットワーク・システムの外部から見られるような処理動作が等しい限り、システム全体にわたって何らかの最適化及び全ての最適化が可能である。
仮想ネットワーク・コンポーネントを、非常に軽量にすることができる。場合によっては、実社会に相当するものがない程度まで、仮想ネットワーク・コンポーネントを徹底的に微々たるものにすることができる。例えば、ソース及び宛先アドレスの両方が素数である場合にパケットを送るだけの、２つのポートを有するネットワーク機器の実際の部品を構築し、市場に出すのは不可能である。仮想ネットワーク・グラフ・トポロジーの内部にある仮想コンポーネントの場合には、この機能が容易に実装される。コンポーネントは、必要なだけ軽量にすることができる。必要条件の大部分の態様を満たすために、興味深い動作及び奇妙な動作を意のままに作ることができる。
【００２５】
仮想ネットワーク・トポロジー・モデルは、接続された仮想サービス・モジュール・ノードの抽象的な仮想グラフとして、システム内のパケット処理機能全体をモデル化する。システム内の各仮想サービス・モジュールは、実社会の個々のネットワーク素子のラインに沿って、大まかにモデル化される。例えば、仮想サービス・モジュールは、ほぼ独立型ＩＰルータ、イーサネット・スイッチ、ファイアウォール、ロード・バランサーなどのものの機能を実装することができる。次に、これらの素子は、該素子が実社会内にある方法と類似した方法で任意のグラフ内に構成される。モデル化されたネットワーク素子の構成及びトポロジーを、特定の顧客の要望に基づいて任意に組み立てることができる。種々の地点において、ＮＳＥシステム上の物理ポートをグラフに取り付け、内部の仮想システムを外部の世界に接続させることを可能にする。１つの実施形態において、仮想ラックは、ネットワークに常駐している多数のアプリケーション・サービスのための論理容器であり、ネットワーク器具の物理的ラックに類似している。
様々な機能が別箇の「サービス」を表すネットワーク・システムが、パケット処理がネットワーク・サービスの設定された仮想グラフにより支配されている任意のトポロジー内に構成される。仮想グラフは、ボックス全体にわたって、設定されたＶＳＭの互いに対する関係を含む。各々の関連したパケット・フローがシステムに導入される時、サポート・ソフトウェア・フレームワークは、ＶＳＭグラフに話して、そのフローについての一連のリストを作成させる。
【００２６】
仮想グラフ内のノードが所定のネットワーク顧客及びリソースと関連付けられたネットワーク・システムが、顧客の割り当てにより、システム内の各ノードについて管理される。異なる顧客がリソースを予約しても、１人の顧客のためにリソースを使い果たすことが、第２の顧客に見えるサービス・レベルに影響を与えない。
ユーザは、特定のサービス・トポロジーにおいて１つ又はそれ以上のサービス・インスタンスを有する仮想ラックにデータを取り込み、該仮想ラックをシステム内の単一ユニットとして管理することができる。より重要なことには、仮想ラックは、サービスの周囲に基本的なリソース管理境界を形成する。システム・リソースは、各々の仮想ラックがシステムを適正に分担し、１つの仮想ラック内で生じる破壊的なイベントが同じシステム内の他の仮想ラックに影響を与えないことを保証するように管理される。
【００２７】
図７を参照すると、仮想ネットワーク・システム７００が、顧客Ａの仮想ラック７０４、顧客Ｂの仮想ラック７０５、及び顧客Ｃの仮想ラック７０のような様々な顧客のための多数の仮想ラックを含む。仮想ラックは、幾つかの仮想サービス・モジュール（ＶＳＭ）をグループ化し、ネットワーク・システムの物理的ラックを模擬するためのソフトウェア容器である。ＶＳＭは、実際の物理的ネットワーク・システム内のバックプレーンのラック上に差し込まれた機能ブロック又はドーターボードを表す。１つの実施形態において、ＶＳＭは、実行コード、インストール情報、バージョン情報、及び依存に関する情報を含むバイナリ・ファイルである。ＶＳＭは、管理インターフェースによってシステム上にインストールされる。ＶＳＭは、１つ又はそれ以上のＪａｖａクラス・ファイル及び該ＶＳＭを正しくインストールするのに管理システムに必要な他の情報を含む、Ｊａｖａアーカイブ（例えば、「ｊａｒ」ファイル）の形態をとることができる。さらに、ＶＳＭは、管理モジュール２０２のようなシステム管理モジュール、及び図２のサービス処理モジュール２０５のようなサービス処理モジュール上で動作する多数のモジュールから構成される。
【００２８】
例えば、本発明の１つの実施形態によると、仮想ラック７０６は、バックプレーンのスロット内に差し込まれた、ネットワーク・システム内の物理的ラックを表す。仮想ラック７０６は、フィルタＶＳＭ７１１、ルータＶＳＭ７１２、ポート共有ＶＳＭ７１３、仮想プライベート・ネットワーク（ＶＰＮ）ＶＳＭ７１４、及び別のルータＶＳＭ７１５を含むことができる。対応する顧客によって特定された設定に従って、これらのコンポーネントの各々を動的に読み込むことができ、又はアンロードすることができる。１つの実施形態においては、対応する顧客は、管理仮想ラック７０７のユーザ・インターフェースを介して、仮想ラック７０６を特定するか又は設定することができる。ルータＶＳＭ７１２及び７１５のような、多数のＶＳＭインスタンスを同時に読み込むことができる。
【００２９】
さらに、本発明の１つの実施形態によると、多数のＶＳＭインスタンスは、異なるバージョンを含むことができる。例えば、ルータＶＳＭ７１２は、ルータＶＳＭ７１５とは異なるバージョンを有してもよい。他のＶＳＭの他のサービスを中断することなく、各々のＶＳＭを個別に変更するか、更新することができる。仮想ラックのトポロジーは、もたらされるサービスを中断することなく、機能の点で変更することができ、これは、以下により詳細に説明される。このように、トポロジーが変更されるか、又はＶＳＭが更新される場合、このことは、エンド・ユーザには分からない。
さらに、各々の仮想ラックは、他のラックとの如何なる干渉もなく、別箇に作動する。例えば、仮想ラック７０５がクラッシュした場合には、他の仮想ラック７０４及び７０６に影響を及ぼさない。その結果、仮想ラック７０４及び７０６は、仮想ラック７０５が回復のために自動的に再起動する間、作動し続ける。仮想ラック間のリソースは、各仮想ラックが、作動のために十分なリソースを有することを保証するように、ハードウェア・レブルで管理される。このように、１つの仮想ラックの故障が、他のラックの作動に感染することはない。
【００３０】
図８は、本発明の１つの実施形態による仮想サービス・モジュール（ＶＳＭ）の例証を示す。１つの実施形態においては、各々のサービス・モジュールは、実行可能なコード、及び該サービス・モジュールをネットワーク・システムと統合させるメタデータの両方を含むアーカイブ・ファイルを有する、データ及びその関連した処理ソフトウェアをもった自立型モジュールである。各々のサービス・モジュールは、ファイアウォール、フィルタ、ロード・バランサー、ルータなどといった別箇のネットワーク素子をモデル化することができる。
【００３１】
１つの実施形態においては、仮想サービス・モジュールは、各仮想サービス・モジュールの１つ又はそれ以上のインスタンスが存在し得るオブジェクト・クラスに属することができる。オブジェクトは、オブジェクト指向プログラミング言語内に書き込まれた独立したプログラム・モジュールである。オブジェクトは、何らかの従来のリンク付け又はグループとしての事前コンパイルなしに、実行時に互いに差込み、作動するように構成されソフトウェア・コンポーネントである。特定のタイプの仮想サービス・モジュールの１つ又はそれ以上のインスタンスを作成することができる。例えば、ファイアウォールを表すようにモデル化された仮想サービス・モジュールのクラスは、仮想グラフ全体にわたって、多数の顧客の仮想ラック内に差し込まれたその仮想サービス・モジュールの多数のインスタンスを有することができる。しかしながら、各ＶＳＭの１つ又はそれ以上のインスタンスは、仮想ネットワーク・グラフの一部として存在し得るものである。クラスは、階層状に形成され、継承により、該階層においてより高い層内にある１つのクラスの知識を、該階層においてより低い別のクラス（サブクラス）に伝えることが可能になる。
【００３２】
仮想サービス・モジュールを別箇のバイナリー・イメージ内にパッケージすることができる。このイメージは、実行可能なコード、及び仮想サービス・モジュールをシステムと統合するメタデータの両方のアーカイブ・ファイルを含む。メタデータは、仮想サービス・モジュールによってサポートされる種々の設定パラメータ、及びコマンド・ライン・インターフェース（ＣＬＩ）を介して該モジュールを設定するのに必要とされる何らかの特定のコマンドを説明する情報を含む。この情報を用いて、ネットワーク・システムは、どの機能がベース・システムに「組み込まれており」、どの機能が後で付加されるかをユーザに知られることなく、仮想サービス・モジュールを容易に組み込むことができる。１つの実施形態においては、拡張マークアップ言語（ＸＭＬ）を用いて、メタデータを初期化することができる。
【００３３】
図８を参照すると、１つの実施形態において、各ＶＳＭインスタンスが、多数の協働する部分を含む。ＶＳＭ８００は、管理コンポーネント８０１、フロー・セットアップ・コンポーネント８０２、及びパケット処理コンポーネント８０３を含む多数のサブパートの高レベルの抽象化とみなすことができる。ＶＳＭインスタンス８００は、他のコンポーネントに対する関係を説明するポート８０５も有する。このポートは、管理コンポーネント８０１及びフロー・セットアップ・コンポーネント８０２の両方によって用いられる。
管理コンポーネント８０１は、仮想ネットワーク・システムに共通する種々の管理インターフェースとの接続を担当する。このコンポーネントは、必要とされるあらゆるグローバルな情報も維持し、ルータ及び認証権威者のような外部エンティティと通信することによって情報を集める。
【００３４】
フロー・セットアップ・コンポーネント８０２は、実際に仮想ネットワーク・グラフの「内部に」存在するＶＳＭの一部である。このＶＳＭの一部が、第１のパケットの処理、仮想ネットワーク・グラフを通過するパスの判断、及びフローに関する動作リストの構築を担当している。
パケット処理コンポーネント８０３は、ＶＳＭの抽象部分である。このパケット処理コンポーネント８０３は、図４Ｂのハードウェア加速用ＡＳＩＣ４１４のようなハードウェア加速装置内にプログラムされた動作リストを含むことができる。標準的なプリミティブが達成可能なものを超えて処理を要求するＶＳＭが、フロー・セットアップ・コンポーネント内のパケットを処理し続ける。このタイプの拡張されたフロー・セットアップとして各フローを開始するＶＳＭは、いつでも動作をバインドできるが、決してハードウェアの助け（例えば、ハードウェア加速装置）に切り換えることなく、幾つかのＶＳＭが、フロー全体を処理することは、極めて一般的なことである。１つの実施形態においては、ＶＳＭが動作リストをバインドした後でさえ、該ＶＳＭは、めったに起こらないイベントに時々必要とされる、より複雑な処理を処理するために、該動作リストから報告された例外条件を処理することがある。
【００３５】
各々のＶＳＭコンポーネントを、システム内の異なる物理的ボードにマッピングすることができる。１つの実施形態においては、管理モジュール（ＭＭ）は、スイッチ・ファブリック・ハードウェアを含むことができる。フロー処理モジュールとも呼ばれるサービス処理モジュール（ＳＰＭ）は、１つ又はそれ以上のサービス処理エンジン（ＳＰＥ）を含むことができる。各々のエンジンは、汎用プロセッサ及びパケット処理ハードウェア加速装置（例えば、図４Ｂのハードウェア加速用ＡＳＩＣ４１４）から構成することができる。図２のＩ／Ｏモジュール２０１のようなＩ／Ｏモジュール（ＩＯＭ）は、１つ又はそれ以上のＩ／Ｏエンジン（ＩＯＥ）を介して、１つ又はそれ以上の外部Ｉ／Ｏポートをサポートすることができる。このエンジンは、汎用プロセッサによって制御されるネットワーク・プロセッサから構成することができる。１つの実施形態においては、ネットワーク・プロセッサは、Ｖｉｔｅｓｓｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  ＣｏｒｐｏｒａｔｉｏｎからのＶｉｔｅｓｓｅネットワーク・プロセッサとしてもよく、汎用プロセッサは、Ｍｏｔｏｒｏｌａ，Ｉｎｃ．社からのＰｏｗｅｒＰＣ  ＰＰＣ７４００  ＣＰＵとしてもよい。他の供給業者のプロセッサを用いることもできる。
【００３６】
１つの実施形態において、ＶＳＭの管理コンポーネントは、ＭＭ上で動作する。フロー・セットアップ・コンポーネントは、ＦＰＥの１つの上のＧＰＰ上で動作する。パケット処理は、図４ＢのＡＳＩＣ４１４のようなハードウェア加速用ＡＳＩＣにおいて処理され、特別の場合は、ＧＰＰに送られる例外を介して処理される。ＶＳＭは、ＩＯＥに気付かず、代わりに物理ポート及び論理Ｉ／Ｏポートの両方を表すＦＰＥ上のオブジェクトと対話する。ＶＳＭの種々のコンポーネントは、システム・ソフトウェアによって与えられたアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して通信する。ＡＰＩは、どのように通信が実施されたかモジュールが分からないように、通信パスを抽象化する。
フロー・セットアップ・コンポーネントは、最初のパケット処理を行い、仮想ネットワーク・グラフを通過するパケットを判断し、フローについての動作リストを構築する。フローは、関連したパケットの特定の流れとすることができる。例えば、サーバが特定のＴＣＰを通してクライアントに送るデータの流れが、フローである。
【００３７】
パケット処理コンポーネントは、仮想サービス・モジュールの抽象部分である。仮想ネットワーク・システムによって与えられた標準的な処理プリミティブを用い得る仮想サービス・モジュールの場合、パケット処理コンポーネントは、ハードウェア加速装置内にプログラムされた動作リストからなる。パケット処理コンポーネント内の標準的なプリミティブが達成可能なものを超えてパケット処理を必要とする仮想サービス・モジュールが、フロー・セットアップ処理コンポーネント内のパケットを処理し続ける。このタイプの拡張されたフロー・セットアップとして関連した各パケット・フローを開始する仮想サービス・モジュールは、いつでも動作リストをバインドすることができるが、決してハードウェアの助け（例えば、ハードウェア加速装置）に切り換えることなく、幾つかの仮想サービス・モジュールが、関連したパケット・フロー全体を処理することは、極めて一般的なことである。
【００３８】
動作リストは、仮想サービス・モジュールが、所定の関連したパケット・フローにおいて各パケットに適用されることを望む、処理プリミティブのリストである。処理プリミティブは、単一の原始的なパケット変換操作である。例えば、ＩＰ  ＴＴＬフィールドを減らすこと、又はＩＰチェックサム・フィールドを再計算することは、各々処理プリミティブである。組み合わせられた動作リストは、所定の一連のノード・リスト内の全てのノードについての各仮想サービス・モジュールの動作リストの連結である。一般的な動作リストは、到達する全てのパケットに適用されるグローバルな動作リストである。最適化された動作リストは、最適化された後に組み合わせられた動作リストである。
仮想サービス・モジュールが動作リストをバインドした後でさえ、該仮想サービス・モジュールのフロー・セットアップ・コンポーネントは、めったに起こらないイベントに時々必要とされる、より複雑な処理を処理するために、該動作リストから報告された例外条件を処理することがある。１つ又はそれ以上の仮想サービス・モジュールのインスタンスも、他のコンポーネントに対する関連を説明し、仮想ネットワーク・システムの外部にあるコンポーネントと通信するためのインターフェースを有する。ポートは、管理コンポーネント及びフロー・セットアップ・コンポーネントの両方によって用いられる。
【００３９】
図９は、本発明の１つの実施形態による例示的なフロー・セットアップ処理ダイアグラムを示す。１つの実施形態において、システム９００は、Ｉ／Ｏモジュール９０１、サービス処理モジュール（例えば、フロー処理モジュール）９０２、及び別のＩ／Ｏモジュール９０３を含む。ＳＰＭ９０２は、多数のＶＳＭ９０５を含むことができるフロー・セットアップ容器９０４、パケット処理ハードウェア９０６、及びファブリック・インターフェース９０７を含むことができる。Ｉ／Ｏモジュール９０１は、Ｉ／Ｏポート９０８、特殊フロー識別子９０９、及びサービス処理素子セレクタ９１０を含む。Ｉ／Ｏモジュール９０３は、特殊フロー分類子９１１及びＩ／Ｏポート９１２を含む。
図９を参照すると、１つの実施形態において、パケットが、Ｉ／Ｏモジュール９０１の入力ポート（例えば、Ｉ／Ｏポート９０８）に到達する。パケットは、その特定のポートからのトラフィックを処理するように割り当てられた特殊フロー識別子９０９に送られる。一般的には、Ｉ／Ｏモジュール９０１は、特定のフローに気付かず、その表内に合致点を見出さないが、フロー識別子９０９が特定のフローを見つけた際は、該フロー識別子９０９は、直接、該パケットを示されたＳＰＥに送る。特定のフローが見つからなかった場合には、パケットは、ＳＰＥ選択のためにＳＰＥセレクタ９１０に渡される。
【００４０】
ＳＰＥセレクタ９１０は、アルゴリズムをパケットのアドレス指定情報に適用することによってＳＰＥを選択し、システム内のＳＰＥの中のフローを均一に分散させる。アルゴリズムは、同じフローについて同じＳＰＥを選択する。次に、Ｉ／Ｏ９０１は、システムのスイッチ・ファブリック９０７を介して、パケットを選択されたＳＰＥに送る。
ＳＰＥのファブリック・インターフェース９０７は、一般的な動作リストが適用されるパケット処理ハードウェア９０６にパケットを送る。新しいフロー又は完全にバインドされていないフローの場合には、パケット処理ハードウェア９０６は、できることを行い、次にパケットをフロー・セットアップ容器９０４に送る。
【００４１】
前に認識されなかったフローの場合は、フロー・セットアップ容器９０４は、仮想ネットワーク・グラフを介してパケットのパスを判断する。フロー・パス上のＶＳＭがバインドする（すなわち、動作リストを生成する）際、フロー・セットアップ容器９０４は、フローの次のパケットをどのように処理するかを局所的パケット処理ハードウェア９０６に命令する。フロー・セットアップ容器９０４は、パケット処理ハードウェアにより、バインドされたフローの一部についての組み合わせられた動作リストが与えられる。一旦全てのＶＳＭがバインドすると、フロー・セットアップは、組み合わせられた最終的な動作リストを最適化し、その後、フローは、ハードウェア加速用ハードウェア９０６によって完全に処理される。しかしながら、全てのフローが全てのＶＳＭバインドを有するわけではなく、パケット処理の少なくとも一部分が、より高度でさらに低速のフロー・セットアップ・ソフトウェアによって処理されなければならないことを意味する。
【００４２】
一旦パケットが処理されると、ハードウェア（例えば、高速パス）によろうと、ソフトウェア（例えば、低速パス）によろうと、或いは両方の組み合わせによろうと、パケット処理ハードウェア９０６は、パケットをＳＰＥのファブリック・インターフェース９０７に送る。ファブリック・インターフェース９０７は、送信Ｉ／Ｏモジュール９０３上のＩ／Ｏポート９１２のような正しいＩ／Ｏポートに、ファブリック上のパケットを伝送する。
特殊フロー分類子９１１は、送信パケットを監視し、戻ってくるパケットが、フローを処理するＳＰＥに自動的に送られない特別な場合を認識する。その場合は、特殊フロー分類子９１１は、その特殊フロー・リストに、フロー及び宛先ＳＰＥを付加する。逆方向のフロー上のパケットが到着した場合、該パケットは、順方向のフローを処理するＤＰＥに送られる。出口Ｉ／Ｏポートにおいて、Ｉ／Ｏモジュールは、関連した内部ファブリック経路指定情報の全てを取り除き、パケットをワイヤ上に送り出す。
【００４３】
場合によっては、サービスを決定するために、ＶＳＭは、フローの第１のパケット内に存在しない情報を必要とすることがある。その場合には、ＶＳＭは、該ＶＳＭが高レベルの依存関係を解決するまで、高速パスによって実行されることになる低レベルの処理機能を形成できない。フロー・ライフサイクルの終わりごろまで、ＶＳＭチェーン・グラフを通過するフローを解決又はバインドできないので、このプロセスは、「遅延結合」と呼ばれる。他の場合には、機能を提供するあらゆるフローが、決して完全にバインドされず、該フローの一部は、該機能のＶＳＭのフロー・セットアップ・コンポーネントによって処理される。
異なるＶＳＭは、フロー・ライフサイクルにおける様々な地点でバインディングを決定することができる。例えば、簡単なポート・レベルのフィルタリングを行っているファイアウォールＶＳＭは、極めて初期にバインディングを決定することができる。このファイアウォールＶＳＭは、フローを認めるかどうか、又は第１のパケット内のＴＣＰポート数に基づいていないかどうかを決定する。
【００４４】
１つの実施形態においては、遅延結合に直面してさえもハードウェア加速を達成するために、各フローの各パケットは、一連のノード・リストにおける主要なＶＳＭによってバインドされた何らかの動作リストによって可能な限り処理される。パケットは、ハードウェア加速装置が全てのパケットに適用する少なくとも初期設定値の動作リストによって処理される。一連のノード・リストの最初の部分でＶＳＭが動作リストをバインドするので、ハードウェア加速は、いっそう多くの処理を行う。最初にバインドされた動作リストの処理が完了した後、パケットは、さらなる処理のために汎用プロセッサ（ＧＰＰ）に送られ、一連のノード・リストにおける第１のバインドされていないＶＳＭで始まる。代替的に、ＧＰＰ内で動作しているソフトウェアは、バインドされていない第１のＶＳＭに従う、ＶＳＭによってバインドされた動作リストを実行する。このことは、ＶＳＭがいつでもバインドすることを可能にするが、その動作リストは、先行する全てのＶＳＭもバインドされるまで、ソフトウェアにおいて模擬される。
【００４５】
図１０は、本発明の１つの実施形態による例示的な動作リスト処理ダイアグラムを示す。１つの実施形態において、システム１０００は、低速パスを構成するＧＰＰ１００１及び高速パスを構成するハードウェア加速装置１００２を含む。各々のパケットは、できる限りハードウェア加速装置１００２によって処理されるが、一旦バインドされていないＶＳＭ（例えば、ＶＳＭ１００３）に遭遇すると、加速装置１００２は、更なる処理のために、該バインドされていないＶＳＭをＧＰＰ１００１に送る。一旦パケットがＧＰＰ１００１に送られると、次のＶＳＭ（例えば、ＶＳＭ１００４）がバインドされても、その処理はそのままである。このことは、システムが、部分的にのみ処理される際に、パケットをハードウェア層まで後方に移動させる、複雑で費用のかかる問題を回避することを可能にし、さらに、ＶＳＭの動作がハードウェアによって実行されるかどうかを知る必要なく、該ＶＳＭが望む時はいつでもバインドすることを可能にする。互いにつながれるやいなや、動作リストを組み合わせ、最適化することができる。
【００４６】
上述のように、与えられるサービスを中断することなく、仮想サービス・モジュール（ＶＳＭ）を動的に変更又は更新することができる。図２に示されるように、本発明の１つの実施形態によると、仮想サービス・スイッチと呼ばれる多数のボード・システムが用いられる。このシステムは、管理プロセッサ、幾つかのフロー・プロセッサ、及び通常の使用においてスイッチ・ファブリックにより接続されるＩＯプロセッサを有する。高可用性モードにおいて、このシステムは、２つの管理プロセッサ及び２つのスイッチ・ファブリックを有することができる。このシステムにおいては、データ・センタ内のラックが、仮想ラックとして表される。各々の仮想ラックは、仮想ネットワーク・グラフを有する。ラック内の装置は、仮想ネットワーク上のノードとして表される。ノードは、ラック上の装置が持ち得る数と同数のポートを有する。装置に接続するワイヤは、グラフのエッジとして表される。このシステムは、システム・ノード及びＩＯポートによって接続された多数の仮想ラックをサポートする。仮想ラック、システム・ノード、及びＩＯポートの接続された大きなグラフが、管理プロセッサ及びフロー・プロセッサにおいて作成され、複製される。
【００４７】
各々のノードは、物理的ラック上の装置と同じ方法で、ロード・バランシング、ファイアウォールのようなサービスを提供する仮想サービス・モジュール（ＶＳＭ）を動作させる。各々のＶＳＭは、管理プロセッサ上で動作する管理コンポーネントと、フロー・プロセッサ上で動作するフロー処理コンポーネントとを有する。ＶＳＭの管理コンポーネントは、設定を得、装置の管理部分を実行する。ＶＳＭのフロー処理コンポーネントは、これに与えられるパケットを処理する。ノード内の各ＶＳＭは、該ＶＳＭの管理コンポーネントとフロー処理コンポーネントとの間の通信のような幾つかのシステム・サービスを提供するフレームワーク内で動作する。フレームワークはまた、該フレームワークがＩＯポートからパケットを受け取る際に、グラフ内のＩＯポートに接続されたＶＳＭにもパケットを送る。パケットは、グラフを通り、エッジを通って流れる。ＶＳＭは、どのエッジにパケットを送るかを決定する。フレームワークは、パケットをグラフ内の次のノードに送る。
【００４８】
仮想ラック内のＶＳＭは、そのＶＳＭによって提供されるサービスを中断することなく、更新することができる。ＶＳＭがノード内で更新された場合、該ＶＳＭの別のインスタンスが作成される。フレームワークは、属するパケットのフローを処理したものと同じＶＳＭのインスタンスにパケットを送る。フレームワークは、各フローについて維持されたコンテキストからＶＳＭインスタンスを得る。フレームワークは、新しいフロー内の第１のパケットをＶＳＭの新しいインスタンスに送り、これに応じてフロー・コンテキストを設定する。更新が完了するまで、ＶＳＭの新旧のインスタンスの両方が共存可能である。更新が完了すると、古いインスタンスが終了し、ノードから取り除かれる。更新操作において特定された完了条件の１つを達成した場合には、更新が完了したとみなされる。更新は、古いインスタンスを通るフローの数が特定された値に達するまで、又は一定の時間が経過するまで進行する。上述のように同様の手順によって、ＶＳＭを格下げすることができる。完了条件に達する前に更新を中止することができる。
【００４９】
図１１Ａは、本発明の１つの実施形態によるＶＳＭの更新を示す例示的なブロック図を示す。図１１Ａを参照すると、１つの実施形態において、トポロジーの最初の設定１１０１が、ルータＶＳＭ１１０４、ファイアウォールＶＳＭ１１０５、セキュア・ソケット層（ＳＳＬ）ＶＳＭバージョンＩ  １１０６、及びロード・バランサーＶＳＭ１１０７を介して、データ・フローを処理する。ＳＳＬ  ＶＳＭの更新要求が受け取られた場合には（例えば、管理仮想ラックのユーザ・インターフェースによって）、ＳＳＬ  ＶＳＭバージョンＩＩ  １１０８の別のインスタンスが起動される。一旦ＳＳＬ  ＶＳＭバージョンＩＩ  １１０８が起動されると、システムは、エッジ１１０９を介して該ＳＳＬ  ＶＳＭ  １１０８をファイアウォールＶＳＭ１１０５に、かつエッジ１１１０を介してロード・バランサーＶＳＭ１１０７に接続させる。したがって、設定１１０２に示されるように、ＳＳＬ  ＶＳＭバージョンＩＩ  １１０８及びＳＳＬ  ＶＳＭバージョンＩ  １１０６は、並列に動作する。
【００５０】
次に、システムは、何らかの新しいフロー・データを新しく実行されたＳＳＬ  ＶＳＭバージョンＩＩ  １１０８に指向させる。ＳＳＬ  ＶＳＭ１１０８は、新しいデータ・フローを処理し、その後、該データをロード・バランサーＶＳＭ１１０７に伝送する。その間、システムは、既存のデータ・フローをＳＳＬ  ＶＳＭバージョンＩ  １１０６に指向させ続ける。この並列処理は、一定の条件が満たされるまで続く。１つの実施形態においては、この条件は、処理される必要がある既存のデータ・フローの予め特定されたデータ量とすることができる。代替的な実施形態においては、条件は、予め特定された期間とすることができる。
本発明の１つの実施形態によると、条件が満たされる前はいつでも、更新を瞬時に中止することができる。１つの実施形態において、こうした中止要求は、上記に説明された図６の管理モジュール６００のような管理モジュールのユーザ・インターフェース（例えば、管理仮想ラックのインターフェース）によって入力することができる。こうした要求を受け取るために、他のチャネルを用いることもできる。
【００５１】
一旦条件が満たされると、システムは、全てのトラフィックを新しいＳＳＬ  ＶＳＭ１１０８に指向させる。一旦ＳＳＬ  ＶＳＭ１１０８が安定化すると、システムは、ＳＳＬ  ＶＳＭ１１０６とファイアウォールＶＳＭ１１０５との間のエッジ１１１１、及び該ＳＳＬ  ＶＳＭ１１０６とロード・バランサーＶＳＭ１１０７との間のエッジ１１１２を切断する。その後、設定１１０３に示されるように、ＳＳＬ  ＶＳＭ１１０６が終了され、グラフから取り除かれる。その結果、ＳＳＬ  ＶＳＭのサービスが動的に更新され、元はＳＳＬ  ＶＳＭ１１０６によって提供されたサービスが中断されない。設定１１０２から１１０３までグラフを変移させるプロセスは、コミット操作１１３０とも呼ばれる。
【００５２】
上述のように、条件が満たされる前はいつでも、更新を瞬時に中止することができる。更新が中止されると、システムは、全ての新しいフロー・データをＳＳＬサービス１１０６のような古いサービスに指向させることができる。次に、システムは、エッジ１１０９及び１１１０を切断する。その結果、更新が完了する前に、対応する仮想ラックが元の設定に戻される１１２０。このプロセスは、ロールバック・プロセスとも呼ばれる。ＳＳＬサービス１１０８を通過して開始した全てのフローが、システムによって終了される。ＳＳＬサービス１１０６を通過した古いフローは、如何なる変更もなく、通過し続ける。条件が満たされる前に中止要求が受け取られなかった場合には、新しいＳＳＬ  ＶＳＭが古いＳＳＬ  ＶＳＭ１１０６にとって代わる。その結果、グラフの設定が、設定１１０２から設定１１０３にコミットされる１１３０。
【００５３】
図１１Ｂは、本発明の１つの実施形態によるＶＳＭを更新する例示的な方法を示すフローチャートを示す。１つの実施形態において、この方法は、ネットワーク環境において第２のノード及び第３のノードと接続する第１のサービスを有する第１のノードを変更するための要求を処理する段階を示す。この方法１１５０は、第１のノードにおいて第２のサービスを動的に起動し、第２のサービスを第２及び第３のノードと接続させ、サービスについての要求を第２のサービスに指向させ、第１のサービスを終了させる段階を含む。別の実施形態においては、この方法は、サービスについての要求がデータの新しいセッションから来るかどうかを判断し、該サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を第２のサービスに伝送し、該サービスについての要求がデータの既存のセッションから来る場合には、該サービスについての要求を第１のサービスに伝送する段階をさらに含む。
【００５４】
図１１Ｂを参照すると、ブロック１１５１において更新要求が受け取られた時、既存のサービス（例えば、更新する必要がある既存のＶＳＭ）が依然としてデータ・フローを第１のノードから第２のノードまで処理しながら、システムは、新しいサービス（例えば、更新バージョンを有するＶＳＭインスタンス）を動的に起動する。ブロック１１５２において、システムは、新しいＶＳＭを第１及び第２のノードに接続させる。ブロック１１５３において、システムは、処理のためにデータの既存のフローを既存のＶＳＭに指向させながら、データの新しいフローを新しいＶＳＭに指向させる。このように、データの新しいフロー及び既存のフローが、新しいＶＳＭ及び既存のＶＳＭによってそれぞれ並列処理される。ブロック１１５４において、システムは、予め特定された条件が満たされたかどうかを調べる。１つの実施形態においては、条件は、処理すべきデータの既存のフロー量とすることができる。代替的な実施形態においては、条件は、残りの期間とすることができる。他の条件を用いることもできる。並列処理は、条件が満たされるまで続く。一旦条件が満たされると、ブロック１１５５において、システムは、全てのデータ・フローを新しいＶＳＭに指向させ、ブロック１１５６において既存のＶＳＭを終了させる。
【００５５】
上述のように、条件が満たされる前はいつでも、更新を瞬時に中止することができる。ブロック１１５７において、中止要求が受け取られると、条件が満たされる前に、グラフの設定が元の設定にロールバックされる。１つの実施形態においては、ブロック１１５８において、システムは、新しいフローの全てを古いサービス（例えば、ＳＳＬ  ＶＳＭ  １１０６）に指向させ、新しいサービス（例えば、ＳＳＬ  ＶＳＭ  １１０８）によって該フローを終了させ、ＳＳＬ  ＶＳＭ  １１０６のような古いサービスを通過するフローを続ける。その後、ブロック１１５９において、システムは、新しいサービス（例えば、ＳＳＬ  ＶＳＭ  １１０８）を終了させ、ロールバック操作を完了する。
【００５６】
ラック内の装置のトポロジーを従来どおりに変更することにより、ラックによって提供されるサービスが中断される。本発明の１つの実施形態によると、仮想ラック内の何らかのノードによって提供されるサービスを中断することなく、該仮想ラックのトポロジーを動的に変更することができる。ノードを仮想ネットワーク・グラフにおいて付加するか、又は該仮想ネットワーク・グラフから削除することができる。ノードが仮想ネットワーク・グラフにおいて付加された場合には、ノードは、１つのエッジを１つのノード及び２つのエッジと置き換える。トポロジーの変更が完了するまで、フレームワークは、古いエッジ及び新しいエッジの両方を維持する。フレームワークは、該パケットが属するフローを処理したものと同じエッジにパケットを送る。フレームワークは、各々のフローについて維持されるフロー・パスから、この情報を得る。フレームワークは、新しいフロー内の第１のパケットを新しいノードに行くエッジに送り出し、これに応じてフロー・パスを設定する。トポロジーの変更が完了すると、古いエッジは、グラフから取り除かれる。プロセスにおいて特定された完了条件の１つが達成された場合には、トポロジーの変更が完了したとみなされる。トポロジーの変更プロセスは、古いエッジを通るフローの数が特定された値に達するまで、或いは一定の時間が経過するまで進行する。
【００５７】
図１２Ａは、本発明の１つの実施形態による仮想ネットワーク・システムのトポロジーの変更を示す例示的なブロック図を示す。図１２Ａを参照すると、１つの実施形態において、トポロジーの最初の設定１２０１が、ルータＶＳＭ１２０４、ファイアウォールＶＳＭ１２０５、セキュア・ソケット層（ＳＳＬ）ＶＳＭ１２０６、及びロード・バランサーＶＳＭ１２０７を介して、データ・フローを処理する。変更要求（例えば、ＶＰＮ  ＶＳＭをグラフに付加する）が受け取られると（管理仮想ラックのユーザ・インターフェースによって）、ＶＰＮ  ＶＳＭ１２０８のインスタンスが起動される。一旦ＶＰＮ  ＶＳＭ１２０８が起動されると、システムは、エッジ１２０９を介して、該ＶＰＮ  ＶＳＭ１２０８をファイアウォールＶＳＭ１２０５に、かつエッジ１２１０を介して、ファイアウォールＶＳＭ１２０７に接続させる。したがって、設定１２０２に示されるように、ＶＰＮ  ＶＳＭ１２０８及びＶＳＭ１２０６及びＶＳＭ１２０５を接続するエッジ１２１１は、並列に動作する。
【００５８】
次に、システムは、何らかの新しいフロー・データを新しく実行されたＶＰＮ  ＶＳＭ１２０８に指向させる。ＶＰＮ  ＶＳＭ１２０８は、新しいデータ・フローを処理し、その後、該データをＳＳＬ  ＶＳＭ１２０６に伝送する。その間、システムは、エッジ１２１１を介して既存のデータ・フローをＳＳＬ  ＶＳＭ１２０６に指向させ続ける。この並列処理は、一定の条件が満たされるまで続く。１つの実施形態においては、この条件は、処理する必要がある、既存のフローの予め特定されたデータ量とすることができる。代替的な実施形態においては、条件は、予め特定された期間とすることができる。コミットする（例えば、コミット１２３０）ための条件が満たされる前はいつでも、トポロジーの変更を中止することができる。条件が最初に満たされた場合には、設定は、設定１２０３に類似して見える。条件が満たされる前に変更が中止された場合には、システムは、グラフを、設定１２０２から設定１２０１のような元の設定に戻す（例えば、ロールバック１２２０）。
【００５９】
一旦条件が満たされると、システムは、全てのトラフィックを新しいＶＰＮ  ＶＳＭ１２０８に指向させる。一旦ＶＰＮ  ＶＳＭ１２０８が安定化すると、システムは、ＳＳＬ  ＶＳＭ１２０６とファイアウォールＶＳＭ１２０５との間のエッジ１２１１を切断する。その結果、ＶＰＮ  ＶＳＭサービスがグラフに動的に付加され、元はエッジ１２１１によって提供されたサービスは中断されない。
変更が中止されると、システムは、エッジ１２１１を介して、全ての新しいフロー・データをＳＳＬ  ＶＳＭ１２０６に指向させる。システムは、エッジ１２１１を介して既存のデータ・フローをＳＳＬ  ＶＳＭ１２０６に指向させ続ける。システムは、エッジ１２０９及び１２１０、並びにＶＰＮ  ＶＳＭ１２０８を切断する。このように、グラフが元のトポロジーに戻された（例えば、ロールバックされた１２２０）。
【００６０】
図１２Ｂは、本発明の１つの実施形態によるトポロジーの変更の例示的な方法を示すフローチャートを示す。１つの実施形態においては、この方法は、ネットワーク環境において第１のノードと第２のノードとの間に直接接続を有するトポロジーを変更するための要求を処理する段階を示す。この方法は、第１のノードと第２のノードとの間に付加されるように意図された新しいサービスを動的に起動し、該第１のノードと該第２のノードとの間の新しいサービス・ノードを接続させ、該新しいサービスに対するサービスについての要求を該第１のノードから該新しいノードに指向させ、その後、該要求を該第２のノードに伝送し、該第１のノードと該第２のノードとの間の直接接続を終了させる段階を含む。代替的な実施形態においては、この方法は、サービスについての要求がデータの新しいセッションから来るかどうかを判断し、該サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を新しいサービスに伝送し、該サービスについての要求がデータの既存のセッションから来る場合には、該サービスについての要求を第１のノードと第２のノードとの間の直接接続に伝送する段階をさらに含む。
【００６１】
図１２Ｂを参照すると、要求が受け取られると、ブロック１２５１において、システムは、第１のノードと第２のノードとの間で付加されるように意図された新しいサービスを動的に起動し、該第１のノード及び該第２のノードは、エッジを介して互いに直接接続される。ブロック１２５２において、新しいサービスが起動された後、システムは、該新しいサービスを第１のノード及び第２のノードに接続する。次に、システムは、新しいデータ・フローを、第１のノードから、新しいデータ・フローを処理する新しいサービスに指向させ、該新しいサービスは、該データを第２のノードに伝送する。
【００６２】
その間、第１のノードは、第１及び第２のノードと直接接続するエッジを直接介して、既存のデータ・フローを第２のノードに伝送し続ける。これらの並列処理は、ブロック１２５４において、システムによって調べられる一定の条件が満たされるまで続く。条件が満たされた場合には、ブロック１２５５において、システムは、全てのデータ・フローを新しいサービスに伝送するよう、第１のノードに命令し、新しいサービスは、データを処理し、第２のノードに伝送する。一旦新しいサービスが立ち上がり、動作すると、ブロック１２５６において、システムは、第１及び第２のノードを直接接続するエッジを切断する。
上述のように、条件が満たされる前はいつでも、変更を瞬時に中止することができる。ブロック１２５７において、中止要求が受け取られると、条件が満たされる前に、グラフの設定が元の設定にロールバックされる。１つの実施形態においては、ブロック１２５８において、第１のノードは、全てのデータを第２のノードに伝送し、ブロック１２５９において、新しいサービス・ノード（例えば、ＶＰＮ  ＶＳＭ  １２０８）がグラフから切断される（例えば、エッジ１２０９及び１２１０）。その後、システムは、新しいサービスを終了し、ロールバック操作を完了する。
【００６３】
図１３Ａは、本発明の１つの実施形態による仮想ネットワーク・システムのトポロジーの変更を示す例示的なブロック図を示す。図１３Ａを参照すると、１つの実施形態において、トポロジーの最初の設定１３０１が、ルータＶＳＭ１３０４、ファイアウォールＶＳＭ１３０５、ＶＰＮ  ＶＳＭ１３０６、及びロード・バランサーＶＳＭ１３０７を介して、データ・フローを処理する。変更要求（例えば、グラフからＶＰＮ  ＶＳＭ１３０６を削除する）が受け取られると（例えば、管理仮想ラックのユーザ・インターフェースによって）、エッジ１３０８が作成され、ファイアウォールＶＳＭ１３０５及びロード・バランサー１３０７を接続する。
【００６４】
一旦エッジ１３０８が作成され、接続されると、システムは、既存のデータ・フローがファイアウォールＶＳＭ１３０５によって、ＶＰＮ  ＶＳＭ１３０６を介してロード・バランサーＶＳＭ１３０７に伝送される間、直接エッジ１３０８を介して何らかの新しいデータ・フローを該ロード・バランサーＶＳＭ１３０７に伝送するよう、該ファイアウォールＶＳＭ１３０５に命令する。このように、設定１２０２に示されるように、エッジ１３０８及びＶＰＮ  ＶＳＭ１３０６は、並列に動作する。この並列処理は、一定の条件が満たされるまで続く。１つの実施形態においては、条件は、処理する必要がある既存のフローの予め特定されたデータ量とすることができる。代替的な実施形態において、条件は、予め特定された期間とすることができる。
同様に、本発明の１つの実施形態によると、条件が満たされる前はいつでも、変更を瞬時に中止することができる。１つの実施形態においては、こうした中止要求は、上記で説明された図６の管理モジュール６００のような管理モジュールのユーザ・インターフェース（例えば、管理仮想ラックのインターフェース）によって入力することができる。
【００６５】
一旦条件が満たされると、システムは、ファイアウォールＶＳＭ１３０５からの全てのトラフィックを、エッジ１３０８を介して、直接ロード・バランサーＶＳＭ１３０７に指向させる。一旦エッジ１３０８のデータ処理が安定化すると、システムは、ＶＰＮ  ＶＳＭ１３０６とファイアウォールＶＳＭ１３０５との間のエッジ１３０９及び該ＶＰＮ  ＶＳＭ１３０６とロード・バランサーＶＳＭ１３０７との間のエッジ１３１０を切断する。その後、ＶＰＮ  ＶＳＭ１３０６が終了され、グラフから取り除かれる。その結果、ＶＰＮ  ＶＳＭサービスはグラフから動的に削除され、仮想ラックによって初めに提供されたサービスは中断されない。
変更が中止された場合には、システムは、エッジ１３０９及び１３１０を介して、新しいフロー・データの全てをＶＰＮ  ＶＳＭ１３０６に指向させる。システムは、エッジ１３０８を通過するあらゆるフローを終了させる。システムは、エッジ１３０９及び１３１０を介して、既存のデータ・フローをＶＰＮ  ＶＳＭ１３０６に指向させ続ける。その後、システムは、エッジ１３０８を切断する。このように、グラフが元のトポロジーに戻される（例えば、ロールバックされる１３２０）。
【００６６】
図１３Ｂは、本発明の１つの実施形態によるトポロジーの変更の例示的な方法を示すフローチャートを示す。１つの実施形態においては、この方法は、第１のノード、第２のノード、及び第３のノードを有するトポロジーを変更するための要求の処理を示し、第１のノードは、第２のノードに直接接続され、第２のノードは、直接第３のノードに接続される。この方法は、第１及び第３のノードを動的に接続させ、サービスについての要求を第１のノードから直接第２のノードに指向させ、該第２のノードを終了させる段階を含む。代替的な実施形態において、この方法は、サービスについての要求がデータの新しいセッションから来るのかどうかを判断し、該サービスについての要求がデータの新しいセッションから来る場合には、該サービスについての要求を直接第１のノードから第３のノードに伝送し、該サービスについての要求がデータの既存のセッションから来る場合には、該サービスについての要求を第１のノードから第２のノードに及び第２のノードから第３のノードに伝送する段階をさらに含む。
【００６７】
図１３Ｂを参照すると、要求が受け取られると、ブロック１３５１において、システムは、第１のノード及び第３のノードを動的に接続させ、そこでは、該第１のノード及び該第３のノードは、中間の第２のノードを介して接続する。ブロック１３５２において、一旦第１のノードと第３のノードとの間の接続が形成されると、システムは、新しいデータ・フローを第１のノードと第３のノードとの間の直接接続に直接指向させる。その間、第２のノードは、依然として第１のノードから受け取った既存のデータ・フローを処理し、その後、データを第３のノードに伝送する。この並列処理は、ブロック１３５３において、１組の条件が満たされるまで続く。ブロック１３５４において、その上で、第２のノードを通過することなく、全てのデータ・フローを直接第１のノードからの第３のノードに指向させる。ブロック１３５５においては、もはや必要とされないので、第２のノードが終了され、グラフから取り除かれる。
【００６８】
上述のように、条件が満たされる前はいつでも、変更を瞬時に中止することができる。ブロック１３５６において、中止要求が受け取られると、条件が満たされる前に、グラフの設定が元の設定にロールバックされる。１つの実施形態においては、ブロック１３５７において、システムは、全ての新しいデータを第１のノードから第２のノードに指向させ、直接該第１のノードと該第２のノードとの間を通るあらゆる残りのフローを終了させる。その後、ブロック１３５８において、システムは、第１及び第２のノードを接続するエッジを削除し、ロールバック操作を完了する。
【００６９】
図１４は、本発明の１つの実施形態による仮想ネットワーク・システムのトポロジーの変更を示す更に別の例示的なブロック図を示す。図１４を参照すると、１つの実施形態において、トポロジーの最初の設定１４０１が、ルータＶＳＭ１４０４、ファイアウォールＶＳＭ１４０５、ＳＳＬ  ＶＳＭ１４０６、及びロード・バランサーＶＳＭ１４０７を介して、データ・フローを処理する。例えば、ＶＰＮ  ＶＳＭ１４０８を付加し、ＳＳＬ  ＶＳＭ１４０６をバージョンＩからバージョンＩＩに更新するなどの変更要求が、管理仮想ラックのユーザ・インターフェースによって受け取られると、システムは、対応するＶＰＮ  ＶＳＭ１４０８及びＳＳＬ  ＶＳＭバージョンＩＩをそれぞれ起動する。次に、システムは、ＶＰＮ  ＶＳＭ１４０８及びＳＳＬ  ＶＳＭ１４０９を、それぞれファイアウォールＶＳＭ１４０５及びロード・バランサーＶＳＭ１４０７に接続させる。
【００７０】
一旦ＶＰＮ  ＶＳＭ１４０８及びＳＳＬ  ＶＳＭ１４０９が動作すると、システムは、あらゆる新しいデータ・フローを該ＶＰＮ  ＶＳＭ１４０８及び該ＳＳＬ  ＶＳＭ１４０９に伝送し、その後、データをロード・バランサーＶＳＭ１４０７に伝送するよう、ファイアウォールＶＳＭ１４０５に命令する。その間、設定１４０２に示されるように、既存のデータ・フローがファイアウォールＶＳＭ１４０５によって、ＳＳＬ  ＶＳＭバージョンＩ  １４０６を介して、ロード・バランサーＶＳＭ１４０７に伝送される。この並列処理は、一定の条件が満たされるまで続く。１つの実施形態において、条件は、処理する必要がある既存のフローの予め特定されたデータ量とすることができる。代替的な実施形態において、条件は、予め設定された期間とすることができる。
【００７１】
一旦条件が満たされると、システムは、全てのトラフィックを、ファイアウォールＶＳＭ１４０５からＶＰＮ  ＶＳＭ１４０８及びＳＳｌ  ＶＳＭ１４０９ブランチに、その後ロード・バランサーＶＳＭ１４０７に指向させる。設定１４０３に示されるように、一旦ＶＰＮ  ＶＳＭ１４０８及びＳＳＬ  ＶＳＭ１４０９ブランチが安定化すると、システムは、ＳＳＬ  ＶＳＭＩ  １４０６を終了し、グラフから該ＳＳＬ  ＶＳＭバージョンＩ  １４０６を取り除く。その結果、ＶＰＮ  ＶＳＭ１４０８サービスがグラフに付加され、ＳＳＬ  ＶＳＭが動的に更新され、提供されるサービスは、処理全体にわたって中断されない。図１１Ａ、図１２Ａ、及び図１３Ａの操作と同様に、図１４の実施形態は、変更が中止された場合のロールバック操作１４２０と、対応する条件が満たされた場合のコミット操作１４３０とを含む。
【００７２】
本発明の範囲から逸脱することなく、図に示される方法により多くの処理又はより少ない処理を組み込むことができること、及び、ここに示され説明されたブロックの構成によって特定の順番を暗黙に定義するものではないことが理解される。図と共に説明された方法を、例えば、ソフトウェアのような機械実行可能な命令において具体化できることが、さらに理解される。命令を用いて、該命令を用いてプログラムされた汎用プロセッサ又は特殊用途向けプロセッサに、説明された操作を実行させることができる。代替的に、操作を行うためのハードワイヤード論理を含む特別のハードウェア・コンポーネントによって、又はプログラムされたコンピュータ・コンポーネント及びカスタム・ハードウェア・コンポーネントの何らかの組み合わせによって、該操作を行うことができる。
【００７３】
この方法は、該方法を実行するためにコンピュータ（又は他の電子装置）をプログラムするために用い得る命令が格納された機械可読媒体を含むことができるコンピュータ・プログラム製品として提供することができる。この明細書のために、「機械可読媒体」という用語は、機械による実行のための一連の命令を格納又はエンコードすることができ、該機械に本発明の方法論のいずれか１つを実行させる何らかの媒体を含むものとする。「機械可読媒体」という用語は、これに応じて、これらに限られるものではないが、ソリッド・ステート・メモリ、光ディスク及び磁気ディスク、搬送波信号を含むものとする。さらに、１つの形態又は別の形態のソフトウェア（例えば、プログラム、処理手順、プロセス、アプリケーション、モジュール、論理・・・）を、動作をとるもの又は結果をもたらすものとして話すのは、当該技術分野において一般的である。こうした表現は、コンピュータによるソフトウェアの実行が、該コンピュータのプロセッサに動作を行わせ、又は結果を生成させる、簡単明瞭な言い方でしかない。
【００７４】
上記の明細書において、本発明は、その特定の例示的な実施形態に関して説明されてきた。上記の特許請求の範囲に述べられるような本発明の広い精神及び範囲から逸脱することなく、種々の修正をなし得ることが明らかである。したがって、本明細書及び図面は、制限的な意味ではなく、例証の意味で考えるべきである。
【図面の簡単な説明】
【００７５】
【図１】本発明と共に用いることができるネットワーク・システムの例示的なブロック図を示す。
【図２】本発明の１つの実施形態の例示的なアーキテクチャのブロック図を示す。
【図３】本発明の１つの実施形態による入力／出力（Ｉ／Ｏ）モジュールの簡単化されたブロックを示す。
【図４Ａ】本発明の１つの実施形態による例示的なサービス処理モジュールのブロック図を示す。
【図４Ｂ】本発明の代替的な実施形態による例示的なサービス処理モジュールのブロック図を示す。
【図４Ｃ】本発明の更に別の代替的な実施形態による例示的なサービス処理モジュールのブロック図を示す。
【図５】本発明の１つの実施形態による例示的な管理モジュールのブロック図を示す。
【図６】本発明の代替的な実施形態による例示的な管理モジュールのブロック図を示す。
【図７】本発明の１つの実施形態による例示的な仮想ネットワーク・システムを示す。
【図８】本発明の１つの実施形態による仮想サービス・モジュール（ＶＳＭ）の例証を示す。
【図９】本発明の１つの実施形態による例示的なフロー・セットアップ処理ダイアグラムを示す。
【図１０】本発明の１つの実施形態による例示的な動作リスト処理ダイアグラムを示す。
【図１１Ａ】本発明の１つの実施形態による、仮想ネットワーク・システムにおけるトポロジーの動的な変更／更新のブロック図を示す。
【図１１Ｂ】本発明の１つの実施形態による、仮想ネットワーク・システムにおけるトポロジーの動的な変更／更新の例示的な処理を示すフローチャートである。
【図１２Ａ】本発明の１つの実施形態による、仮想ネットワーク・システムにおけるトポロジーの動的な変更／更新のブロック図を示す。
【図１２Ｂ】本発明の代替的な実施形態による、仮想ネットワーク・システムにおける、トポロジーの動的な変更／更新の例示的な処理を示すフローチャートである。
【図１３Ａ】本発明の更に別の代替的な実施形態による、仮想ネットワーク・システムにおけるトポロジーの動的な変更／更新のブロック図を示す。
【図１３Ｂ】本発明の更に別の代替的な実施形態による、仮想ネットワーク・システムにおける、トポロジーの動的な変更／更新の例示的な処理を示すフローチャートである。
【図１４】本発明の更に別の代替的な実施形態による、仮想ネットワーク・システムにおけるトポロジーの動的な変更／更新のブロック図を示す。
【図１】
2005524908.tif 000003
【図２】
2005524908.tif 000004
【図３】
2005524908.tif 000005
【図４Ａ】
2005524908.tif 000006
【図４Ｂ】
2005524908.tif 000007
【図４Ｃ】
2005524908.tif 000008
【図５】
2005524908.tif 000009
【図６】
2005524908.tif 000010
【図７】
2005524908.tif 000011
【図８】
2005524908.tif 000012
【図９】
2005524908.tif 000013
【図１０】
2005524908.tif 000014
【図１１Ａ】
2005524908.tif 000015
【図１１Ｂ】
2005524908.tif 000016
【図１２Ａ】
2005524908.tif 000017
【図１２Ｂ】
2005524908.tif 000018
【図１３Ａ】
2005524908.tif 000019
【図１３Ｂ】
2005524908.tif 000020
【図１４】
2005524908.tif 000021
【国際調査報告】
2005524908.tif 000022