(57)【要約】ネットワークシステムが、複数の個別のネットワークから構成される仮想グラフを含むようになった方法、装置、及びシステムである。第一の個別のネットワークは、第一のユーザーと関連付けられる。第一の個別のネットワークは、ネットワーク要素の第一のセットを表すようにモデル化された複数のサービスモジュールを含む。第二の個別のネットワークは、第二のユーザーと関連付けられる。第二の個別のネットワークは、ネットワーク要素の第二のセットを表すようにモデル化された複数のサービスモジュールを含む。ネットワーク要素の第二のセットは、第二の個別のネットワーク内に含まれるネットワーク要素の形式、及び第二の個別のネットワーク内のネットワーク要素のトポロジー配列、の点でネットワーク要素の第一のセットとは異なる。
2005523621.tif 000002
【特許請求の範囲】
【請求項１】
一又はそれ以上の機能を実行してネットワークシステム内のパケットを処理するネットワーク要素を表すようにモデル化されたサービスモジュールを備え、
前記サービスモジュールが、コンテナプログラム内に埋め込まれ、データ、及びその関連処理ソフトウェアの内蔵モジュールであり、該関連処理ソフトウェアが、実行可能なコード、並びに前記サービスモジュールを前記ネットワークシステムと統合するメタデータの両方を含むアーカイブファイルを持つ、
ことを特徴とする装置。
【請求項２】
前記サービスモジュールが、複数のサブコンポーネントから構成される上層の抽象概念からなり、
前記サブコンポーネントが、
仮想ネットワークグラフ内部のコンポーネントと接続する管理コンポーネント、
前記仮想ネットワークグラフを通るパケットのパスを定めるパケット処理コンポーネント、及び、
前記パケット処理コンポーネント内の命令が達成できることを超えて、パケットを処理するフローセットアップコンポーネント、
を含む請求項１記載の装置。
【請求項３】
前記サービスモジュールがオブジェクトクラスに属し、前記サービスモジュールの一又はそれ以上のインスタンスが存在し、前記サービスモジュールの第一のインスタンスが前記サービスモジュールの第二のインスタンスとは異なるバージョン情報を持つ、
請求項１記載の装置。
【請求項４】
前記ネットワーク要素が、ルーター、イーサーネットスイッチ、仮想私設ネットワーク、ファイアウォール、負荷平衡器、ブリッジ、及びネットワークアドレス変換器から構成されるグループの１つである、
請求項１記載の装置。
【請求項５】
前記メタデータが、前記サービスモジュールによってサポートされる様々な構成パラメータ、及びコマンドラインインターフェースを通して前記サービスモジュールを構築するように要求される特定のコマンド、を説明する情報を含む、
請求項１記載の装置。
【請求項６】
前記コンテナプログラムは、第一のサービスモジュールが第二のサービスモジュールと相互作用するための共通環境を提供する、
請求項１記載の装置。
【請求項７】
前記コンテナプログラムがオペレーティングシステムを備える、
請求項１記載の装置。
【請求項８】
前記コンテナプログラム内に埋め込む第一のサービスモジュールと、
前記コンテナプログラム内に埋め込む第二のサービスモジュールと、
をさらに備え、前記第二のサービスモジュールが、前記第一のサービスモジュールへの直接オブジェクト参照なしで、前記コンテナプログラムを介して、前記第一のサービスモジュールと情報通信を行う、
請求項１記載の装置。
【請求項９】
前記実行可能なコードが、前記サービスモジュールをインストール及び削除する命令に加えて、構成情報で前記サービスモジュールを構築する命令を含む、
請求項１記載の装置。
【請求項１０】
前記サービスモジュールが、当該サービスモジュール専用の物理処理能力及びメモリ容量にマッピングされる、
請求項１記載の装置。
【請求項１１】
前記サービスモジュールをコンピューター読み取り可能な媒体に収容する、
請求項１記載の装置。
【請求項１２】
複数の個別のネットワークから構成される仮想グラフ、
専用の処理及びメモリリソースを持ち、第一のユーザーと関連付けられる第一の個別のネットワーク、及び、
第二のユーザーと関連付けられる第二の個別のネットワーク、
を備え、前記第二の個別のネットワークが専用の処理及びメモリリソースを持ち、前記第一の個別のネットワーク専用の処理及びメモリリソースが、前記第二の個別のネットワーク専用の処理及びメモリリソースから独立している、
ことを特徴とするネットワークシステム。
【請求項１３】
前記第一の個別のネットワークのトポロジー内に含まれる二又はそれ以上のサービスモジュール、
をさらに備え、第一のサービスモジュールがネットワーク要素を表すようにモデル化され、前記二又はそれ以上のサービスモジュールが、任意のトポロジー内の前記第一の個別のネットワーク内に配置可能である、
請求項１２記載のネットワークシステム。
【請求項１４】
前記第一の個別のネットワークが、ネットワーク要素を表すようにモデル化された第一のサービスモジュールを含み、前記第二の個別のネットワークが、ネットワーク要素を表すようにモデル化された第二のサービスモジュールを含み、前記第一の個別のネットワークのトポロジーが、前記第二の個別のネットワークのトポロジー内に含まれるのとは異なるネットワーク要素から構成されている、
請求項１２記載のネットワークシステム。
【請求項１５】
前記第一の個別のネットワークが、全ての仮想アドレス空間を収容するグローバルドメイン内の第一の仮想アドレス空間にマッピングし、前記第二の個別のネットワークが、全ての仮想アドレス空間を収容するグローバルドメイン内の第二の仮想アドレス空間にマッピングする、
請求項１２記載のネットワークシステム。
【請求項１６】
前記第一の個別のネットワークが、ネットワーク要素を表すようにモデル化された第一のサービスモジュールを含み、前記第一のサービスモジュールの新しいインスタンスが、前記第一のサービスモジュールの既存のインスタンスとは異なる機能を持って、プログラム実行の間、動的にロードするようになった、
請求項１２記載のネットワークシステム。
【請求項１７】
前記新しいインスタンスのインストールの間、機能の付加が他のコンポーネントのいずれにおいてもダウンタイムを引き起こさないように、前記新しいインスタンスが、前記既存のインスタンスのネットワークルーティングパスをミラーするようになった、
請求項１６記載のネットワークシステム。
【請求項１８】
前記第一の個別のネットワークが、ネットワーク要素を表すようにモデル化された第一のサービスモジュールを含み、前記第一のサービスモジュールの第一のインスタンスがコンテナプログラム内に埋め込まれており、前記サービスモジュールの第二のインスタンスが前記コンテナプログラム内に埋め込まれていて、特定の形式のネットワーク要素を表すようにモデル化された同じサービスモジュールの複数のインスタンスを独立してアップグレードすることを可能にする、
請求項１２記載のネットワークシステム。
【請求項１９】
トークンバケットアルゴリズムを用いて、各個別のネットワークが、その個別のネットワーク専用の処理及びメモリを受け取ることを確実にするリソース管理回路、
をさらに備える請求項１２記載のネットワークシステム。
【請求項２０】
前記第一の個別のネットワークのトポロジーが、ネットワーク要素及び前記仮想グラフ外部の物理ネットワーク要素を表すようにモデル化された第一のサービスモジュールを含む、
請求項１２記載のネットワークシステム。
【請求項２１】
複数の個別のネットワークから構成される仮想グラフと、
ネットワーク要素の第一のセットを表すようにモデル化された第一の複数のサービスモジュールを含む、第一のユーザーと関連付けられる第一の個別のネットワークと、
第二のユーザーと関連付けられる第二の個別のネットワークと、
を備え、前記第二の個別のネットワークがネットワーク要素の第二のセットを表すようにモデル化された第二の複数のサービスモジュールを含み、前記ネットワーク要素の第二のセットが、前記第二の個別のネットワーク内に含まれるネットワーク要素の形式、及びトポロジー配列の点で、前記ネットワーク要素の第一のセットとは異なる、
ことを特徴とするネットワークシステム。
【請求項２２】
前記第一の複数のサービスモジュールが、コンテナプログラム内に埋め込まれる第一のサービスモジュールを含み、前記第一のサービスモジュールが、データ、及びその関連処理ソフトウェアの内蔵モジュールであり、該関連処理ソフトウェアが、実行可能なコード、並びに前記サービスモジュールを前記ネットワークシステムと統合するメタデータの両方を含むアーカイブファイルを持つ、
請求項２１記載のネットワークシステム。
【請求項２３】
前記第一の個別のネットワークが、固有仮想アドレス空間、専用の処理能力、及び専用のメモリを持って、前記第一の個別のネットワークを、論理的及び物理的に前記第二の個別のネットワークとは異なるようにする、
請求項２１記載のネットワークシステム。
【請求項２４】
前記専用の処理能力がトークンバケットアルゴリズムを用いる、
請求項２３記載のネットワークシステム。
【請求項２５】
前記第一の複数のサービスモジュールが第一のサービスモジュールを含み、前記ネットワークシステムが、プログラム実行の間、パケットフローの中断なしに、前記第一のサービスモジュールをロード、削除、構築、又は変更する、
請求項２１記載のネットワークシステム。
【請求項２６】
複数の個別のネットワークから構成される前記仮想グラフが、単一のコンピューティングマシン上に収容される、
請求項２１記載のネットワークシステム。
【請求項２７】
前記第一のユーザーと関連付けられる前記第一の個別のネットワークがまた、前記単一のコンピューティングマシン外部の物理ネットワーク要素を含む、
請求項２６記載のネットワークシステム。
【請求項２８】
前記サービスモジュール専用の処理能力及びメモリ空間を持つ、前記ネットワークシステム内の物理層、
をさらに備える請求項１記載の装置。
【請求項２９】
複数の個別のネットワークから構成される前記仮想グラフが、ネットワークによって接続された複数のコンピューティングマシン上に収容される、
請求項２１記載のネットワークシステム。
【請求項３０】
前記第一のユーザーと関連付けられる前記第一の個別のネットワークがまた、前記複数のコンピューティングマシンを接続する前記ネットワーク外部の物理ネットワーク要素を含む、
請求項２９記載のネットワークシステム。
【請求項３１】
一又はそれ以上の機能を実行して、ネットワークシステム内のパケットを処理するネットワーク要素、を表すようにモデル化されたソフトウェアモジュールを格納するコンピューター読み取り可能な媒体、
を備え、前記ソフトウェアモジュールが、複数のサブコンポーネントから構成される上層抽象概念で構成され、
前記サブコンポーネントが、
仮想ネットワークグラフ内部のコンポーネントと接続する管理コンポーネント、
前記仮想ネットワークグラフを通るパケットのパスを定めるパケット処理コンポーネント、及び、
前記パケット処理コンポーネント内の命令が達成できることを超えて、パケットを処理するフローセットアップコンポーネント、
を含むことを特徴とする装置。
【請求項３２】
前記ソフトウェアモジュールが、データ、及びその関連処理ソフトウェアの内蔵モジュールであり、該関連処理ソフトウェアが、実行可能なコード、並びに前記ソフトウェアモジュールを前記ネットワークシステムと統合するメタデータの両方を含むアーカイブファイルを持つ、
請求項３１記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、ネットワークシステムに関するものである。特に、本発明の側面は、一又はそれ以上の仮想サービスモジュールを用いるネットワークシステムに関するものである。
【０００２】
(著作権の表示)
本特許文書の開示の一部には、著作権保護を条件とする題材が含まれている。著作権者は、特許局及び商標局の特許書類又は記録に掲載される限りでは、そのソフトウェアエンジン及びモジュールの何人による複製にも全く異議はないが、その他の場合は一切の無断転載を禁ずる。
【背景技術】
【０００３】
典型的な標準ネットワーキングシステムは、単一目的の固定機能を実装するものであった。仮想化システムの最初の生成は顧客ごとの機能を提供するが、しかしこの機能はまだ固定されている。これらの制限は、いくつかの欠点をもたらす。顧客は、サービスの有用性に基づいて、サービスプロバイダーを評価できる。顧客は、どんなダウンタイムもサービスプロバイダーの問題として認識し、プロバイダーを切り替えることを検討することがある。サービスプロバイダーは、彼らの提供物にサービス製品を付加して、より多くの収入を生み出し、かつより高価値の提供物でマージンを増やすことを望む。今日のシステムの幾つかは、アップグレードと関連付けられるダウンタイムを必要とする。これは、それらのシステムが全ての機能を単一の実行時イメージにパッケージ化するためという事情である。全ての機能が単一装置にパッケージ化され、公開されるとき、システムを設計及び試験することはより単純である。幾らかの場合、サービスプロバイダーは、冗長なトポロジーを構築し、バックアップシステムがサービスを扱うと同時に一システムを取り壊すことにより、ダウンタイムを最小化しなければならない。これは、サービスプロバイダーに、冗長なハードウェアを購入し、複雑な構成を設計することを強要するので、最適ではない。量産効果、及びより低い資本支出を実現するために、サービスプロバイダーは、単一システム上で複数の顧客にサービスを提供するシステムをインストールしている。ハードウェアを各個々の顧客に専用にするのではなく、サービスプロバイダーが、多くの顧客全体にわたるその資本経費を償却し、平均コストを下げる。これらのサービスプロバイダーは、典型的には、定期的なメンテナンスのために、顧客でのダウンタイムを計画する。複数の顧客が同じシステムを利用するように構成されるとき、この計画はより困難になる。
【０００４】
さらに、典型的なネットワーキングシステムは、固定された手法で構成される固定機能を提供することがある。例えば、処理は、通常はネットワーク層L3が次に続くデータリンク層L2であるか、又は負荷平衡化が次に続くセキュアソケットレイヤー(SSL)加速である。典型的には、ネットワーキングシステムは、一体式バージョンのソフトウェアを用いて固定機能を実装する。仮想ローディングを提供するそれらのシステムは、典型的には起動時に、単純なリンク時間構成戦略、又は単純な仮想ローディングを使用するが、その後は使用しない。従って、何の機能を起動時に実行したいか選択できるようになるが、その後それを変えることはできない。典型的には、従来のシステムは、アップグレードされるとき再起動を必要とする、というような不利な点を持っていた。これがダウンタイムを引き起こす。結果として、幾つかの従来のシステムは、任意のトポロジーを使用して任意の手法で機能を構築する、ダウンタイムを引き起こすことなく新しい機能を稼動中のシステムに付加する、又は機能の一部を新しい改訂版にアップグレードする能力が欠如している。
【０００５】
さらに、データセンターでは時々、パケット処理システム上で稼動するソフトウェアをアップグレードするか、ネットワークトポロジーを変更するか、又はハードウェアをアップグレードしなければならない。ソフトウェア又はハードウェアの如何なるアップグレードも、サービスの有用性を阻害する。このようなアップグレードは、通常はメンテナンス時間の間に行われ、この間は、サービスを顧客が利用できない。代わりに、サービスが１つのネットワーク上で常に利用可能であるように、サービスネットワークを複製することもある。第一の手法では、サービスが中断される。第二の手法では、冗長なネットワークをセットアップし、かつ注意深く維持しなければならない。
【０００６】
従って、ネットワークシステムのトポロジーを構成、管理、変更、又はアップグレードできるように、よりよい解決策が非常に望まれる。
【発明の開示】
【０００７】
(本発明の要約)
ネットワークシステムが、複数の個別のネットワークから構成される仮想グラフを含むようになった方法、装置、及びシステムである。第一の個別のネットワークは、第一のユーザーと関連付けられる。第一の個別のネットワークは、ネットワーク要素の第一のセットを表すようにモデル化された複数のサービスモジュールを含む。第二の個別のネットワークは、第二のユーザーと関連付けられる。第二の個別のネットワークは、ネットワーク要素の第二のセットを表すようにモデル化された複数のサービスモジュールを含む。ネットワーク要素の第二のセットは、第二の個別のネットワーク内に含まれるネットワーク要素の形式、及び第二の個別のネットワーク内のネットワーク要素のトポロジー配列、の点でネットワーク要素の第一のセットとは異なる。
【０００８】
本発明は、様々な変更及び代替の形が可能であるが、その特定の実施形態が、図面で例を介して示されており、以下に詳細に説明する。本発明は、開示された特定の形に限定されないと理解すべきであるが、一方、本発明の技術的範囲内に入る全ての変更、均等技術、及び代替形を対象として含むことを意図している。
【０００９】
(詳細な説明)
以下の説明では、本発明の完全な理解を提供するために、具体的なデータ信号の例、指定されるコンポーネント、接続、ネットワークの数等のような多数の具体的な詳細を明示する。しかしながら、これらの具体的な詳細なしでも本発明を実施できることが、当業者には明らかであろう。その他の例では、本発明を不必要に不明瞭にするのを避けるため、よく知られたコンポーネント又は方法は詳細に説明せず、ブロック図で説明した。さらに、第一ドライバーのような固有の数値参照をつけることができる。しかしながら、固有の数値参照は、文字通りの連続した順番として解釈すべきではなく、むしろ第一の仮想サービスモジュールは第二の仮想サービスモジュールとは異なると解釈すべきである。従って、示される具体的な詳細は、単に例証的なものにすぎない。具体的な詳細は、本発明の技術的範囲内であると意図される範囲で変化し得る。パケットという用語は、パケットスイッチシステムにおける伝送のために使用されるデータのかたまりとすることができる。フレーム、パケット、及びデータグラムという用語は、しばしば同じ意味で使われる。
【００１０】
一般的には、その中のネットワークシステムが複数の個別のネットワークから構成される仮想グラフを含む方法、装置、及びシステムを説明する。第一の個別のネットワークは、第一のユーザーと関連付けられる。第一の個別のネットワークは、ネットワーク要素の第一のセットを表しているようにモデル化された複数のサービスモジュールを含む。第二の個別のネットワークは、第二のユーザーと関連付けられる。第二の個別のネットワークは、ネットワーク要素の第二のセットを表しているようにモデル化された複数のサービスモジュールを含む。ネットワーク要素の第二のセットは、第二の個別のネットワーク内に含まれるネットワーク要素の形式、及び第二の個別のネットワーク内のネットワーク要素のトポロジー配列、の点で、ネットワーク要素の第一のセットとは異なる。
【００１１】
図１は、複数ユーザーの固有のネットワーク要求を満たすために一又はそれ以上の仮想サービスモジュールから構成される複数の個別のネットワーク、を含むネットワークシステムの実施形態を示している。複数の個別のネットワーク102、104、106は仮想グラフ108にまとめられ、リソースは、ユーザー割り当てに従って、システム内の各個別のネットワークについて運用される。ネットワークシステム100は、インターネットのような外界への第一のポート110、顧客Aのネットワーク要素を収容する第一の仮想ラック119を含む第一の個別のネットワーク102、顧客Bのネットワーク要素を収容する第二の仮想ラック120を含む第二の個別のネットワーク104、顧客Cのネットワーク要素を収容する第三の仮想ラック121を含む第三の個別のネットワーク106、ネットワークシステムの管理モジュール114を収容するシステム管理仮想ラック112に割り当てられる仮想アドレス空間、及び仮想グラフ108を各顧客のネットワーク118に接続する複数の入出力ポート116、から構成される。ある実施形態では、仮想グラフが、全ての個別のネットワーク102、104、106のトポロジーを収容するが、論理的に及び物理的に互いに異なるように各個別のネットワークを保持する。
【００１２】
ある実施形態では、仮想グラフ100が、全ての仮想アドレス空間を収容するグローバルドメインの範囲内で、各個別のネットワーク102、104、106に別個の仮想アドレス空間を割り当てる。ある実施形態では、仮想ラック119〜121が各ユーザーに割り当てられる。仮想ラック119〜121は、仮想アドレス空間、及び、その仮想アドレス空間専用の処理能力、帯域幅、及びメモリのようなハードウェアリソース、から構成される。仮想ラック119〜121の固有アドレス空間、及び専用のハードウェアリソースが、各個別のネットワーク102、104、106を他の個別のネットワークとは論理的及び物理的に異なるものにする。ある実施形態では、仮想ラック119〜121が、仮想サービスモジュールのような複数のネットワーク常駐アプリケーションサービスのための論理的な容器であり、ネットワーク機器の物理ラックに類似している。
【００１３】
仮想ネットワークトポロジーは、システム内のパケット処理機能を、接続された仮想サービスモジュール(VSM)122〜150のノードの抽象仮想グラフ108としてモデル化する。システム内の各仮想サービスモジュール122〜150は、実世界の個々のネットワーク要素のラインに沿って大雑把にモデル化される。例えば、仮想サービスモジュール122〜150は、独立型IPルーター、イーサーネットスイッチ、仮想私設ネットワーク、フィルタ/ファイアウォール、負荷平衡器、ブリッジ、ネットワークアドレス変換器等の機能をほとんど実装できる。これらの仮想サービスモジュール122〜150のノードは、次に、それらが実世界にあるのと同じように、仮想グラフ108内で構成される。
【００１４】
ネットワーク要素を表すようにモデル化された仮想サービスモジュール122〜150の構成及びトポロジーを、特定の顧客の要望に基づいて任意に組み立てることができることに注意しなさい。例えば、顧客Bのネットワーク104は、顧客Cのネットワーク106内に含まれるのとは異なるネットワーク要素から構成される。ネットワークスイッチ上の物理ポート110、116が様々なポイントで仮想グラフ108に取り付けられ、内部仮想システムを仮想グラフ108外部のコンポーネントに繋げることを可能にする。
【００１５】
仮想グラフ108は非常に大きく増大し、典型的なネットワークセンターの殆どもしくは全てを取り替えるようになることができる。仮想グラフ108のサイズは、一又はそれ以上のホストマシンのメモリ容量及び処理能力によって制限され得る。ある実施形態では、仮想グラフ108は、単一のコンピューティングマシン上に収容される。
【００１６】
言及するように、ネットワークシステム100は、個別の「サービス」を表す可変な機能を持つことができる。各仮想サービスモジュール122〜150は、一又はそれ以上の機能を持つネットワーク要素をモデル化する。ある実施形態では、ネットワーク要素を表すようにモデル化された各仮想サービスモジュール122〜150が、個別のサービスを提供する。
【００１７】
各仮想サービスモジュール122〜150は、パケット処理が構築されたネットワークサービスの仮想グラフ108によって管理される任意のトポロジー、に構成され得る。各関連パケットフローがシステムに投入されるとき、サポートフレームワークソフトウェアが、ファイアウォール仮想サービスモジュール132、負荷平衡化仮想サービスモジュール134、及びルーター仮想サービスモジュール136のような、個別のネットワークトポロジー内の仮想サービスモジュールの仮想グラフを動いて、その関連パケットフローのための連続したノードリストを作成する。
【００１８】
言及するように、異なる個別のネットワーク102、104、106はリソースを確保していて、一顧客におけるリソースの消耗が、第二の顧客により認識されるサービスレベルに影響を及ぼすことはない。物理層がハードウェアレベルでのリソース管理を実行して、各個別のネットワーク102、104、106がシステムで利用可能な処理及びメモリリソースの保証された領域を受け取ること、及び各個別のネットワーク102、104、106が互いに干渉できないこと、を確実にする。仮想ラックに割り当てられた固有アドレス空間、及び専用の物理リソースが、各個別のネットワーク102、104、106内で仮想サービスモジュール122〜150のまわりの境界を形成する。ある実施形態では、物理層が、カリフォルニア州フレモントにあるInkra Networks社で作成されるHardWall技術を用いて、システムリソースの消耗を管理し、一仮想ラック内で生じる阻害イベントが同じシステム内の他の仮想ラックに影響を及ぼさないことを確実にする。従って、各個別のネットワーク102、104、106が、そのサービストポロジー専用の処理及びメモリリソースを持ち、第一の個別のネットワークにおけるこれらの専用リソースの枯渇は、第二の個別のネットワークに提供されるサービスレベルから独立している。
【００１９】
例えば、図１は、３つの別個の仮想ラック119〜121を示しており、その各々は多数の仮想サービスモジュール122〜150が実装されている。物理層は、トークンバケットアルゴリズムを用いる仮想ラックプロセッサのようなリソース管理回路を収容して、サービスアタックの拒否のような仮想ラックA119に対して仕掛けられたリソースをたくさん使う行為が、保証レベルを超える仮想ラックB120の性能の如何なる低下も引き起こさないことを確実にする。仮想ラックA119は、リソースのその指定されたシェアのみを消費することができ、過去には、リソース管理回路が如何なる更なる消費も制限して、仮想ラックB120が通常に作動し続けることを確実にする。仮想ラック119〜121内に複数の仮想サービスモジュール122〜150をインストールすることができるので、リソース管理回路が、仮想ラック境界内の仮想サービスモジュールのグループ全体のためのリソース管理を実行する。各個別の仮想サービスモジュールのためのリソースパラメータを手動で構築するようにユーザーに強要しないので、この手法は、構築の複雑さを劇的に軽減させる。
【００２０】
一実施形態では、ユーザーが、管理仮想ラック112のユーザーインターフェースを通して、仮想ラック119〜121を指定又は構築することができる。
【００２１】
各個別のネットワーク102、104、106内の仮想サービスモジュール122〜150は、任意の連続した順番で配置することができる。ファイアウォール132を表すようにモデル化された仮想サービスモジュールは、負荷平衡器134を表すようにモデル化された仮想サービスモジュールの前又は後に置くことができる。さらに、顧客Aの個別のネットワーク102は、セキュアソケットレイヤー126、ネットワークアドレス変換器128、及びブリッジ130のような、顧客Bの個別のネットワーク104のトポロジー内に含まれるのとは異なるネットワーク要素から構成されることができる。従って、仮想グラフ108内の各顧客は、その顧客と対応付けられる個別のネットワークトポロジー102、104、106内の仮想サービスモジュールの配置及び機能を、その顧客に必要な固有の要求に合わせることができる。さらに、顧客/ユーザーは、一又はそれ以上の仮想サービスモジュールのインスタンス122〜150を実装した仮想ラック119〜121を、ネットワークシステム100内の単一の装置として管理することができる。
【００２２】
図２は、一又はそれ以上の機能を実行して、ネットワークシステム内のパケットを処理するネットワーク要素、を表すようにモデル化された仮想サービスモジュールのアーキテクチャの実施形態を示している。仮想サービスモジュール200のインスタンスのアーキテクチャは、複数の協働部品から構成されることができる。このように、仮想サービスモジュール200は、複数の下位部品から構成される実際には上層抽象概念である。サブコンポーネントは、管理コンポーネント201、フローセットアップコンポーネント202、及びパケット処理コンポーネント203を含む。各仮想サービスモジュールのインスタンス200はまた、他のコンポーネントとの関係を説明するポート、及び仮想ネットワークシステムの外部のコンポーネントと通信するためのインターフェース、を持つことができる。管理コンポーネント201及びフローセットアップ202の双方が、ポートを使用する。
【００２３】
管理コンポーネント201が、仮想システム内部のコンポーネントに共通な様々な管理インターフェースとの接続を導く。管理コンポーネント201はまた、如何なる必要なグローバル情報も保持する。管理コンポーネント201は、ルーター及び認証局のような外部エンティティと通信することにより、情報を収集する。管理コンポーネント201は、仮想サービスモジュール200を動的に構築することができる。
【００２４】
フローセットアップコンポーネント202は、初期パケット処理を実行して、仮想ネットワークグラフを通るパケットパスを定め、そのフローのためのアクションリストを構築する。フローは、関連パケットの特定のストリームとすることができる。例えば、特定のTCP接続を通じてサーバーがクライアントに送信するデータのストリームが、関連パケットのフローである。
【００２５】
パケット処理コンポーネント203は、仮想サービスモジュール200の抽象部品である。パケット処理コンポーネント203は、ハードウェア加速器用集積回路内にプログラムされる初期命令、の標準処理のアクションリストを含むことができる。パケット処理コンポーネント203内の標準初期命令が達成できる以上のパケット処理を要求する仮想サービスモジュールは、フローセットアップ処理コンポーネント202内のパケットを処理し続けるであろう。この形式の拡張フローセットアップのように各関連パケットフローを開始する仮想サービスモジュールは、いつでもアクションリストをバインドすることができるが、しかし幾つかの場合には、ハードウェア支援に一度も切り替えることなく、仮想サービスモジュールが関連パケットフロー全体を処理する。
【００２６】
ある実施形態では、各仮想サービスモジュール200は、データ、及び実行可能なコードに加えてサービスモジュールをネットワークシステムと統合するメタデータを収容するアーカイブファイルを持つその関連処理ソフトウェア、の内蔵モジュールである。実行可能なコードは、仮想サービスモジュール200のそのインスタンスをインストール及び削除する命令を含む。さらに、実行可能なコードは、構成情報で仮想サービスモジュール200のそのインスタンスを構築する命令も含む。言及するように、各仮想サービスモジュール200は、データ、及びファイアウォール、フィルタ、負荷平衡器、ルーター等のような個別のネットワーク要素をモデル化するその関連処理ソフトウェア、を収容することができる。
【００２７】
ある実施形態では、仮想サービスモジュール200は、各仮想サービスモジュール200の一又はそれ以上のインスタンスが存在し得るオブジェクトクラスに属する。オブジェクトは、オブジェクト指向プログラミング言語で書かれた独立したプログラムモジュールとすることができる。オブジェクトは、グループのような如何なる事前リンキング又は事前コンパイルもなく、実行時に互いにプラグイン接続して、互いに作用するように構築されるソフトウェアコンポーネントである。特定の形式の仮想サービスモジュール200の一又はそれ以上のインスタンスを作成することができる。
【００２８】
代替の実施形態では、サービスモジュールがネットワーク要素を表すようにモデル化される限りのみ、各VSMコンポーネントを単一のコンテナアプリケーション内に収めることができる。
【００２９】
例えば、図１を参照すると、ファイアウォール132、138を表すようにモデル化された仮想サービスモジュールのクラスは、仮想グラフ108全体にわたって複数の顧客の仮想ラック120、121にプラグ接続されるその仮想サービスモジュール、の複数のインスタンスを持つことができる。ネットワーク要素を表すようにモデル化された仮想サービスモジュールのクラスは階層構造に作成され、継承は、VSMファイアウォールのインスタンスのように、階層構造内の上層のレイヤーの中の1クラスの情報を下層の他のクラスに伝えることを可能にする。
【００３０】
図２を参照すると、ある実施形態では、仮想サービスモジュール200を独立したバイナリイメージでパッケージ化することができる。イメージは、実行可能コードに加えて仮想サービスモジュール200をシステムと統合するメタデータのアーカイブファイルを収容する。メタデータは、仮想サービスモジュールによってサポートされる様々な構成パラメータを説明する情報、バージョン情報、要求されるリソース、従属情報、及びコマンドラインインターフェース(CLI)を通してモジュールを構築するのに必要な任意の特有のコマンド、を含む。この情報を使用して、何の機能をベースシステムに「組み込む」か及び何を後で付加したか、をユーザーが知ることなく、ネットワークシステムは、仮想サービスモジュール200を容易に統合することができる。ある実施形態では、拡張マーク付け言語(XML)を、メタデータをフォーマットするために使用することができる。
【００３１】
ある実施形態では、仮想サービスモジュール200がアクションリストをバインドした後でさえ、滅多にないイベントのために時々必要なより複雑な処理を扱うために、フローセットアップコンポーネント202が、パケット処理コンポーネント203内のアクションリストから報告される例外条件を処理することができる。ある実施形態では、アクションリストは、仮想サービスモジュールが所定の関連パケットフロー内の各パケットに適用させようとする初期命令、の処理のリストとすることができる。初期命令の処理は、単一の初期命令のパケット変換操作とすることができる。例えば、IP TTLフィールドを減らすこと、又はIPチェックサムフィールドを再計算することは、初期命令の各処理である。複合アクションリストは、所定の連続したノードリスト内の全てのノードにおける各仮想サービスモジュールのアクションリストの連結である。共通アクションリストは、全ての到着パケットに適用されるグローバルアクションリストである。最適化アクションリストは、それが最適化された後の複合アクションリストである。
【００３２】
ある実施形態では、仮想サービスモジュール200は、3つの形式のアドレス指定の観点を持つことができる。
【００３３】
図１を参照すると、最もありふれたアドレス指定の観点は、「標準」ルーティング機能を実行するルーターのような仮想サービスモジュール124、136である。他の2つの仮想サービスモジュールのアドレス指定の観点は、2つのポートに制限されることができ、これは、全くルーティング決定を要求されないことを意味している。これら2つのアドレス指定の観点は、転送決定をするアドレス可能なバンプ及びアノニマスバンプである。例えば、ファイアウォール仮想サービスモジュール132、138は、どのパケットを削除するか決定するアノニマスバンプとすることができるが、しかし、一旦パケットを転送する決定をしたら、パケットをどのポートに送信すべきかについては全く選択肢はない。アドレス可能なバンプは、例えば仮想私設ネットワークとすることができる。
【００３４】
図３は、仮想サービスモジュールのコンテナアーキテクチャ、及びその仮想サービスモジュールの物理層へのマッピング、の実施形態を示している。ある実施形態では、コンテナプログラムは、二又はそれ以上のサブプログラムから構成される。各サブプログラムは、管理コンテナ302、フローセットアップコンテナ304、及びパケット処理コンテナ306、のような特定の機能のためにプログラムされる。コンテナアーキテクチャは、3つの異なる形式のコンテナ302、304、306を使用して、管理コンポーネント308、フローセットアップコンポーネント310、及びパケット処理コンポーネント312、という仮想サービスモジュールの3つの個別のコンポーネントを管理することができる。ある実施形態では、管理コンテナ302、フローセットアップコンテナ304、及びパケット処理コンテナ306を、オペレーティングシステムのソフトウェアの一部として含めることができる。管理コンポーネント308は、管理コンテナ302内に埋め込むことができる。フローセットアップコンポーネント310は、フローセットアップコンテナ304内に埋め込むことができる。パケット処理コンポーネント312は、パケット処理コンテナ306内に埋め込むことができる。
【００３５】
管理コンテナ308は、SNMP、ウェブ、及びCLIのような様々な共通管理インターフェースを提供し、かつ、仮想サービスモジュールがその機能と相互作用することを可能にする。フローセットアップコンテナ304は、仮想サービスモジュールのフローセットアップコンポーネント310をラップし、フローセットアップコンポーネントへの新たな関連パケットフローの発送に備える。フローセットアップコンテナ304は、アクションリストの作成及び最適化を提供する。パケット処理コンテナ306は、フローセットアップモジュール310から転送される最適化複合処理リストを、フローごとに管理する。
【００３６】
仮想サービスモジュール322のような仮想サービスモジュールは、コンテナプログラムを通して、他の仮想サービスモジュールと相互作用することができる。ある実施形態では、どの仮想サービスモジュールも、他の仮想サービスモジュールへの直接オブジェクト参照を収容しない。これにより、古いオブジェクト参照を保持する他の仮想サービスモジュールを気にする必要なく、仮想ネットワークグラフを変更する、及び仮想サービスモジュールをアップグレードすることがずっと容易になる。従って、何の他のサービスモジュールがチェーン内に存在し得るか、及びそれらの他のサービスモジュールが経験し得る様々なライフサイクルの変化を気にする必要なく、仮想サービスモジュールは、全く単独で作動することができる。
【００３７】
ある実施形態では、管理コンテナ302、フローセットアップコンテナ304、及びパケット処理コンテナ306が、仮想サービスモジュールのアプリケーションプログラムインターフェースの様々な部分を実装する。管理コンテナ302は、API機能を提供して、仮想サービスモジュールをインストール及び削除し、ボックス全体にわたる構成情報、及びコンテンツプロバイダ特有の構成情報の双方を用いて、仮想サービスモジュールを構築し、かつ仮想サービスモジュールを管理する。
【００３８】
フローセットアップコンテナ304は、API機能を提供して、新しい関連パケットフローを発送し、最適化処理リストの作成をビルド及び管理し、そのパケットフローはパケット処理モジュールに移り、パケットの中身を操作し、及び関連パケットフローの状態を操作する。
【００３９】
パケット処理コンテナ306は、高速パス上でパケット処理を実施し、パケット処理の物理実装内に常駐する。パケット処理コンテナは、フローセットアップコンテナのサービスの幾つかを提供するが、仮想サービスモジュール構築及びライフサイクル管理、のような上位層の問題を扱う殆どの機能を取り除く。パケット処理コンテナ306は、パケットの中身を操作し、関連パケットフローの状態を操作し、フローセットアップコンテナにフローの終了を通知する機能を提供し、次にこれは、適切な仮想サービスモジュールのフローセットアップコンポーネント310に伝えられる。
【００４０】
ある実施形態では、仮想サービスモジュール322の管理コンポーネント308、フローセットアップコンポーネント310、及びパケット処理コンポーネント312を、コンテナプログラム内に埋め込むことができる、又はリンクすることができる。VSM308、310、312のこれらのコンポーネントを、埋め込むのではなく、リンクすることができ、その場合、コンテナアプリケーションは、VSMのコンポーネントを物理的に保持することはないが、それへのポインタを提供する。リンクされたVSMのコンポーネントに変更がなされる場合には、同じリンクを収容する全てのドキュメントが、次にそれらを開くとき、自動的に更新される。これらのコンポーネント308、310、312が埋め込まれる場合には、コンテナは、そのコンポーネントのコピーを収容する。VSMのコンポーネントになされた変更は、そのコンポーネントのインスタンスを収容するコンテナプログラムにのみ影響を及ぼす。VSMのコンポーネントがリンクされる場合には、ドキュメントは、元のファイルへのポインタを収容する。リンクされたコンポーネントを変更するとき、元のものを変更していて、かつそのコンポーネントにリンクする全てのプログラムが自動的に更新される。コンテナプログラムは、セキュリティ及びトランザクションのサポートのような共通機能を提供することができ、かつサーバーの形式に関係なく、アプリケーションに一貫したインターフェースを提供することができる。オブジェクトの究極の目的は、それらがどのソース言語でプログラムされるか、又はネットワーク上のどのコンピューターでそれらが動作しているか、を問題にすべきでないということである。仮想サービスモジュールは、コンテナプログラム間で渡されるメッセージを通して相互運用する。
【００４１】
仮想サービスモジュールコンポーネント308、310、312の各々を、異なる物理回路基板314、316、318にマッピングすることができる。仮想ネットワークシステムの物理層は、管理モジュール314、フロー処理モジュール316に加えてパケット処理モジュール318を含むサービス処理モジュール、及びI/Oモジュール、のような幾つかの形式の回路モジュールを持つことができる。管理モジュール314は、スイッチ構造ハードウェアを含む。スイッチ構造ハードウェアは、シャシー内のデータ引渡し基板から構成される。各フローセットアップモジュール316(FPM)は、一又はそれ以上のフロー処理エンジンを収容することができる。各フロー処理エンジンは、汎用プロセッサ及び特定用途向け集積回路を含んで、パケット処理ハードウェア加速器のように、パケット化された情報を処理することができる。各パケット処理モジュール318は、一又はそれ以上のフロー処理エンジンを収容することができる。各フロー処理エンジンは、シャシー内のデータ引渡しハードウェア接続基板上のアドレス可能な終点である。入力-出力(I/O)モジュールは、一又はそれ以上のI/Oエンジンを介して、一又はそれ以上の外部I/Oポートをサポートする。
【００４２】
仮想サービスモジュールの管理コンポーネント308は、管理モジュール314にマップすることができ、かつその上で動作することができる。フローセットアップコンポーネント310は、フロー処理エンジンの1つの上の汎用プロセッサにマップし、かつその上で動作する。パケット処理は、パケット処理ハードウェア加速器で処理されることができ、特別な場合には、汎用プロセッサに渡される例外を介して処理されることもある。
【００４３】
図４は、仮想ネットワーク要素及び物理ネットワーク要素から構成されるトポロジーを持つ個別のネットワーク、の実施形態を示している。第一の個別のネットワーク402は、顧客Aの仮想ネットワーク要素を収容する仮想ラック419を含む。仮想ラック419は、ポート416を介して、顧客Aのネットワーク418に繋がる。また、仮想ラック419は、第二のポート425を介して、ファイアウォール452のような物理ネットワーク要素に繋がる。顧客A402と関連付けられる個別のネットワークのSSL仮想サービスモジュール426は、システムルーター仮想サービスモジュール424からパケットを受け取る。SSL仮想サービスモジュール426は、第二のポート425を介して、パケットを物理ファイアウォール452に転送する。物理ファイアウォール452は、第二のポート425を介して、パケットをNAT仮想サービスモジュール428に転送する。NAT仮想サービスモジュール428は、パケットをブリッジ仮想サービスモジュール430に送る。パケットは、複数のポート416を介して、顧客A402と関連付けられる個別のネットワークのトポロジーから、顧客のネットワーク418に出る。
【００４４】
ある実施形態では、物理層は、一又はそれ以上の仮想ラックプロセッサを収容する。各仮想ラックプロセッサは、物理層を通してデータのフローを管理し、各仮想ラック419にリソースを割り当て、かつ高速パケット処理を実行して特定のサービスを実装する。仮想ラック419は、ハードウェアベースのリソース管理を使用するので、ソフトウェアベースの方式よりも効率的、正確、かつ安全である。仮想ラックプロセッササブシステムの活動は、キューイング及び高速処理、一般処理リソースの管理、及び仮想ラックの整合性及びセキュリティの扱い、という3つの主なカテゴリーに分けることができる。
【００４５】
ある実施形態では、各仮想ラックプロセッサは、システム内の各仮想ラック419に複数のキューを割り当てる。仮想ラックプロセッサは、各仮想ラックがVRP処理リソースのそのシェアを受け取ることを確実にするトークンバケットアルゴリズムを使って、これらのキューを処理する。仮想ラックプロセッサは、大きなバッファリング容量を持つ非常に大きなメモリ領域で、仮想ラックキューを管理する。仮想ラックごとに複数のキューを割り当てることにより、仮想ラックプロセッサは、どの仮想ラック419も、第二の仮想ラック420を犠牲にして全ての利用可能なバッファメモリを消費できないことを確実にする。トークンバケット論理は、どの仮想ラックも、仮想ラックプロセッサ処理装置への公平なアクセスを持つことを保証する。
【００４６】
言及するように、仮想ラックプロセッサが、特定のパケットが大量の高レベルな処理を必要とすることを決定する場合には、更なる対処のためにパケットを一般処理ブロックに転送し、そのキューの中の次のパケットの処理に移る。仮想ラックプロセッサと一般処理ブロックの間に、仮想ラックプロセッサは、キューイングロジックの第二のセットを実装する。キューの第一のセットと同様に、システム内の各仮想ラック419〜421は、第二のセット内のキューが割り当てられる。仮想ラックプロセッサは、キューのこの第二のセットを管理し、要求どおりにパケットを一般処理ブロックに転送する。これは、一般処理ブロックに与えられたままに保ち、最高の可能なスループットを提供する。仮想ラックプロセッササブシステムは、一般処理ブロック向けの次のパケットを予定して、処理リソースが物理層のリソース割り当てに従って分配されることを確実にする。このように、どのラック419〜421も、他を犠牲にして、処理リソースを独占することはできない。
【００４７】
仮想ラックプロセッササブシステムは、システム内の各仮想ラック419〜421のためにメモリ領域を割り当てる。メモリ領域は、仮想ラックA419のような特定の仮想ラックと関連付けられるパケット及びサービス状態情報、を格納する。システムは、リソース消耗があるか、各領域を厳密に監視する。仮想ラックA419のような特定の仮想ラックが、物理層のメモリ割り当て限界に侵入する場合には、他の仮想ラックを犠牲にして更に拡張することは許されない。この動作は、どの仮想ラック419〜421も他を犠牲にしてメモリリソースを独占できないことを、確実にする。
【００４８】
物理層は、ハードウェアメモリ管理装置(MMU)を使用して、各仮想ラック419〜421のために保護領域を作成する。サービスがクラッシュするとき、この保護領域が、そのサービスが置かれる特定の仮想ラック419〜421への影響を切り離す。システムがクラッシュを検知するとき、仮想ラック419〜421と関連付けられる保護領域がフラッシュされ、仮想ラック419〜421が自動的に再起動される。このように、システムは、サービス障害が生じる仮想ラック419〜421についてのそのサービス障害を収容し、それらが他の仮想ラック419〜421に伝播すること、又はそれらの処理に影響を及ぼすことを防ぐ。
【００４９】
パケットを処理するとき、処理ブロックははじめに、そのパケットが属する仮想ラック419〜421と関連付けられる保護領域に入る。この状況の間、処理ブロックは、その仮想ラック419〜421と関連付けられるメモリにアクセスのみでき、システムのセキュリティを保証する。この保護領域の外部のメモリリソースにアクセスしようとする如何なる試みも、サービスクラッシュとして扱われ、その場合、保護領域がフラッシュされ、仮想ラック419〜421が再起動される。
【００５０】
上で言及するように、管理仮想ラック412のユーザーインターフェースを通して、各仮想サービスモジュール424、426、428、430を、動的にロード又はアンロードすることができる。ルーター仮想サービスモジュール424及び436のように、仮想サービスモジュールの複数のインスタンスを同時にロードすることができる。さらに、仮想サービスモジュールの複数のインスタンスは、異なるバージョンを収容することができる。例えば、ルーター仮想サービスモジュール424は、ルーター仮想サービスモジュール436と異なるバージョンを持つことができる。各仮想サービスモジュールは、他の仮想サービスモジュールの他のサービスを中断することなく、個々に変更又はアップグレードされることができる。
【００５１】
図５Ａは、本発明の実施形態に従う仮想サービスモジュールのアップグレードを示す例示的なブロック図を示している。図５Ａを参照すると、一実施形態では、トポロジーの初期構成501が、ルーター仮想サービスモジュール504、ファイアウォール仮想サービスモジュール505、セキュアソケットレイヤー(SSL)仮想サービスモジュールバージョンI506、及び負荷平衡器仮想サービスモジュール507を通して、データフローを処理する。SSL仮想サービスモジュールのアップグレード要求が受け取られるとき(例えば、管理仮想ラックのユーザーインターフェースを通して)、SSL仮想サービスモジュールバージョンII508のもう1つのインスタンスが起動される。SSL仮想サービスモジュールバージョンII508が起動されると、システムは、SSL仮想サービスモジュール508を、端線509を通してファイアウォール仮想サービスモジュール505に、及び端線510を通して負荷平衡器仮想サービスモジュール507に接続する。従って、構成502に示すように、SSL仮想サービスモジュールバージョンII508及びSSL仮想サービスモジュールバージョンI506は、並行して動作している。
【００５２】
次にシステムは、如何なる新しいフローデータも、新たに実行されたSSL仮想サービスモジュールバージョンII508に向ける。SSL仮想サービスモジュール508は、新しいデータフローを処理し、その後、そのデータを負荷平衡器仮想サービスモジュール507に送る。しばらくの間、システムは、既存のデータフローをSSL仮想サービスモジュールバージョンI506に向け続ける。この並列処理は、ある一定の条件が満たされるまで続く。一実施形態では、その条件は、処理を待つ既存フローのあらかじめ指定されたデータ量とすることができる。代替の実施形態では、その条件は、あらかじめ指定された期間とすることができる。この条件が達成される前はいつでも、アップグレードは、管理仮想ラックのユーザーインターフェースを通して、即座に中止され得る。
【００５３】
条件が満たされると、システムは、全てのトラフィックを新しいSSL仮想サービスモジュール508に向ける。SSL仮想サービスモジュール508が安定すると、システムは、仮想サービスモジュール506とファイアウォール仮想サービスモジュール505の間の、及び仮想サービスモジュール506と負荷平衡器仮想モジュール507の間の、端線511及び512をそれぞれ切断する。その後、SSL仮想サービスモジュール506は終了され、構成503に示すようにグラフから削除される。結果として、SSL仮想サービスモジュールのサービスは動的にアップグレードされて、元々SSL仮想サービスモジュール506によって提供されているサービスは中断されない。
【００５４】
アップグレードが中止されるとき、システムは、全ての新しいフローデータを古いSSL仮想サービスモジュールバージョンI506に向ける。システムは、端線509及び510を切断する。これは、仮想ラックを、アップグレードが開始される前のその元の状態に持っていく。SSL仮想サービスモジュール508を通り抜け始めた全てのフローは、システムにより終了される。SSL仮想サービスモジュールバージョンI506を通り抜けていた古いフローは、何の変更もなく通り抜け続けるであろう。
【００５５】
図５Ｂは、本発明の実施形態に従って仮想サービスモジュールをアップグレードする例示的な方法、を示すフローチャートを示している。一実施形態では、その方法は、第二のノード及び第三のノードと接続する第一のサービスを持つ第一のノードを変更する要求の処理、を示している。その方法は、第一のノードで動的に第二のサービスを起動すること、その第二のサービスを第二及び第三のノードと接続すること、サービスの要求をその第二のサービスに向けること、及び第一のサービスを終了させること、を含む。代替の実施形態では、その方法はさらに、サービスの要求がデータの新しいセッションから生じているか定め、サービスの要求がデータの新しいセッションから生じる場合にはそのサービスの要求を第二のサービスに送り、サービスの要求がデータの既存のセッションから生じる場合にはそのサービスの要求を第一のサービスに送ること、を含む。
【００５６】
図５Ｂを参照すると、アップグレード要求が受け取られるとき、ブロック551で、システムは、動的に新しいサービス(例えば、アップグレードされたバージョンを持つ仮想サービスモジュールのインスタンス)を起動する一方で、既存のサービス(例えば、アップグレードされる必要のある既存の仮想サービスモジュール)が、第一のノードから第二のノードへのデータフローをまだ処理している。ブロック552で、システムは、新しい仮想サービスモジュールを第一及び第二のノードに接続する。ブロック553で、システムは次に、データの新たなフローを新しい仮想サービスモジュールに向ける一方で、データの既存のフローを処理のための既存の仮想サービスモジュールに向ける。従って、データの新たなフロー及び既存のフローが、新たな仮想サービスモジュール及び既存の仮想サービスモジュールによって、それぞれ並列に処理される。ブロック554では、システムが、あらかじめ指定された条件が満たされたか調べる。一実施形態では、その条件は、まだ処理されていないデータの既存のフローの量とすることができる。代替の実施形態では、その条件は、残された期間とすることができる。他の条件を利用することもできる。その条件が満たされるまで、並列処理が続く。条件が満たされると、ブロック555で、システムは、全てのデータフローを新しい仮想サービスモジュールに向け、ブロック556で、既存の仮想サービスモジュールを終了させる。
【００５７】
従って、サービスモジュールの既存のインスタンスとは異なる機能を持つサービスモジュールの新しいインスタンスが、プログラム実行の間、具体的には初期起動段階の後長く、ロードすることができる。サービスモジュールの新しいインスタンスは、如何なる他のコンポーネントのダウンタイムも引き起こすことなく機能を付加するように、新しいインスタンスのインストールの間、既存のインスタンスのネットワークルーティングパスをミラーする。
【００５８】
ある実施形態では、ブロック557で、システムが、変更が中止されたか調べる。変更が中止される場合、ブロック558で、システムは、全ての新しいデータフローを古いサービスに向ける。システムは、新しいサービスを通る新しいフローを終了させる。またシステムは、古いサービスを通る古いフローを続ける。ブロック559では、次にシステムが、新しいサービスを終了させる。
【００５９】
図６Ａは、本発明の実施形態に従う仮想ネットワークシステムのトポロジーの変更を示す例示的なブロック図を示している。図６Ａを参照すると、一実施形態では、トポロジーの初期構成601が、ルーターVSM604、ファイアウォールVSM605、セキュアソケットレイヤー(SSL)VSM606、及び負荷平衡器VSM607を通して、データフローを処理する。変更要求(例えば、VPN VSMをグラフに付加する)が受け取られるとき(例えば、管理仮想ラックのユーザーインターフェースを通して)、VPN VSM608のインスタンスが起動される。VPN VSM608が起動されると、システムは、VPN VSM608を、端線609を通ってファイアウォールVSM605に、及び端線610を通って負荷平衡器VSM607に、接続する。従って、構成602に示すように、VPN VSM608、及び、VSM606及びVSM605を接続する端線611が、並列に動作している。
【００６０】
次にシステムは、如何なる新しいフローデータも、新たに実行されたVPN VSM608に向ける。VPN VSM608は、新しいデータフローを処理し、その後、そのデータをSSL VSM606に送る。しばらくの間、システムは、既存のデータフローを、端線611を通してSSL VSM606に向け続ける。この並列処理は、ある一定の条件が満たされるまで続く。一実施形態では、その条件は、処理を待つ既存フローのあらかじめ指定されたデータ量とすることができる。代替の実施形態では、その条件は、あらかじめ指定された期間とすることができる。
【００６１】
ある実施形態では、完遂すべき条件が満たされる前はいつでも、トポロジーの変更は中止され得る。初めに条件が満たされない場合には、構成は603のようである。条件が満たされる前に変更が中止される場合には、元の構成601に逆戻りする。
【００６２】
条件が満たされると、システムは、全てのトラフィックを新しいVPN VSM608に向ける。システムは、VPN VSM608からのフローの全ての古い関連パケットをクリアすると、SSL VSM606とファイアウォールVSM605の間の端線611を切断する。結果として、VPN VSMサービスが動的にグラフに付加されて、端線611によって元々提供されているサービスは中断されない。
【００６３】
変更が中止される場合には、システムは、新しいフローデータの全てを、端線611を通してSSL仮想サービスモジュール606に向ける。システムは、端線609、VPN仮想サービスモジュール608、及び端線610を通り抜ける如何なるフローも終了させる。システムは、既存のデータフローを、端線611を通してSSL VSM606に向け続ける。システムは、端線609及び610、及びVPN仮想サービスモジュール608を切断する。このように、元のトポロジーを復元する。
【００６４】
図６Ｂは、本発明の実施形態に従ってトポロジーを変更する例示的な方法、を示すフローチャートを示している。一実施形態では、その方法は、ネットワーク環境内の第一のノードと第二のノードの間に直接接続を持つトポロジーを変更する要求の処理を示している。その方法は、第一のノードと第二のノードの間に付加されることを意図する新しいサービスを動的に起動すること、その新しいサービスを第一及び第二のノードと接続すること、サービスの要求を第一のノードから新しいサービスに向け、その後その要求を第二のノードに送ること、及び第一と第二のノードの間の直接接続を終了させること、を含む。代替の実施形態では、その方法は、サービスの要求がデータの新たなセッションから生じているか定め、サービスの要求がデータの新しいセッションから生じる場合には、そのサービスの要求を新しいサービスに送り、サービスの要求がデータの既存のセッションから生じる場合には、そのサービスの要求を第一のノードと第二のノードの間の直接接続に送ること、をさらに含む。
【００６５】
図６Ｂを参照すると、要求が受け取られるとき、ブロック651で、システムは新しいサービスを動的に起動し、そのサービスは第一のノードと第二のノードの間に付加されることを意図しており、第一及び第二のノードは端線を通して互いに直接接続される。新しいサービスが起動された後、ブロック652で、システムは、新しいサービスを第一及び第二のノードに接続する。次にシステムは、新しいデータフローを第一のノードから新しいサービスに向け、その新しいサービスが新しいデータフローを処理し、そのデータを第二のノードに送る。
【００６６】
しばらくの間、第一のノードは、第一及び第二のノードと直接接続する端線を通して直接、第二のノードに既存のデータフローを送り続ける。これら並列処理は、ブロック654でシステムによって調べられて、ある一定の条件が満たされるまで続く。条件が満たされる場合には、ブロック655で、システムが、第一のノードに全てのデータフローを新しいサービスに送るように指示し、新しいサービスがそのデータを処理し、第二のノードに送る。新しいサービスが起動し動作していると、ブロック656で、システムが、第一と第二のノードを直接接続する端線を切断する。
【００６７】
ある実施形態では、ブロック657で、システムが、変更が中止されたか調べる。変更が中止される場合には、ブロック658で、システムが、第一のノードに全てのデータを第二のノードに送らせる。ブロック659で、次にシステムが、第一のサービスノードを切断する。
【００６８】
図７Ａは、本発明の実施形態に従う仮想ネットワークシステムのトポロジーの変更、を示す例示的なブロック図を示している。図７Ａを参照すると、一実施形態では、トポロジーの初期構成701が、ルーターVSM704、ファイアウォールVSM705、VPN VSM706、及び負荷平衡器VSM707を通して、データフローを処理する。変更要求(例えば、VPN VSM706をグラフから削除する)が受け取られるとき(例えば、管理仮想ラックのユーザーインターフェースを通して)、ファイアウォールVSM705及び負荷平衡器VSM707を接続するように端線708が作成される。
【００６９】
端線708が作成され、接続されると、如何なる新しいデータフローも端線708を通して負荷平衡器VSM707に直接送るように、システムがファイアウォールVSM705に指示する一方で、既存のデータフローは、ファイアウォールVSM705によって、VPN VSM706を通って負荷平衡器VSM707に送られる。従って、構成702に示すように、端線708及びVPN VSM706は並行して動作している。この並列処理は、ある一定の条件が満たされるまで続く。一実施形態では、その条件は、処理を待つ既存のフローのあらかじめ指定されたデータ量とすることができる。代替の実施形態では、その条件は、あらかじめ指定された期間とすることができる。
【００７０】
ある実施形態では、上で説明するように、変更が中止される場合には、データパケットの新しいフローを切り替え、データパケットの既存のフローを続ける。
【００７１】
条件が満たされると、システムは、全てのトラフィックを、端線708を通して直接、ファイアウォール705から負荷平衡器VSM707に向ける。端線708のデータ処理が安定すると、システムが、VPN VSM706とファイアウォールVSM705の間、及びVPN VSM706と負荷平衡器VSM707の間の、端線709及び710を切断する。その後、VPN VSM706が終了され、グラフから削除される。結果として、VPN VSMサービスが動的にグラフから削除されて、VPM VSM706によって元々提供されているサービスは中断されない。
【００７２】
図７Ｂは、本発明の実施形態に従ってトポロジーを変更する例示的な方法、を示すフローチャートを示している。一実施形態では、その方法は、第一のノード、第二のノード、及び第三のノードを持つトポロジーを変更する要求の処理を示しており、第一のノードは第二のノードに直接接続されていて、第二のノードは第三のノードに直接接続されている。その方法は、第一のノード及び第三のノードを動的に接続すること、サービスの要求を第一のノードから第二のノードに直接送ること、及び第二のノードを終了させること、を含む。代替の実施形態では、その方法は、サービスの要求がデータの新しいセッションから生じているか定め、サービスの要求がデータの新しいセッションから生じる場合には、サービスの要求を第一のノードから第三のノードへ直接送り、サービスの要求がデータの既存のセッションから生じる場合には、サービスの要求を第一のノードから第二のノードへ、及び第二のノードから第三のノードへ送ること、をさらに含む。
【００７３】
図７Ｂを参照すると、要求が受け取られるとき、ブロック751で、システムが第一及び第三のノードを動的に接続し、そこでは第一及び第三のノードが、間に第二のノードを通って接続される。第一及び第三のノードの間の接続が作成されると、ブロック752で、システムは、新しいデータフローを、第一のノードと第三のノードの間の直接接続に向ける。しばらくの間、第二のノードはまだ、第一のノードから受け取られる既存のデータフローを処理しており、その後、データを第三のノードに送る。この並列処理は、ブロック753で一連の条件が満たされるまで続く。そのときブロック754で、システムは、第一のノードからの全てのデータフローを、第二のノードを通り抜けることなく直接、第三のノードに向ける。ブロック755で、第二ノードはもはや必要とされていないので、終了され、グラフから削除される。
【００７４】
ある実施形態では、ブロック757で、変更が中止されたか、システムが調べる。変更が中止される場合には、ブロック758で、システムが、全ての新しいデータフローを第一のノードから第二のノードに送る。また、システムは、第一のノードと第三のノードの間を通る如何なる残りのフローも終了させる。ブロック759で、システムが、第一のノード及び第三のノードを接続する端線を削除する。
【００７５】
一実施形態では、アルゴリズムを促進するために使用されるソフトウェアを、コンピューター読み取り可能な媒体上で具現化することができる。コンピューター読み取り可能な媒体は、マシン(例えば、コンピューター)によって読み取り可能な形で情報を提供する(例えば、格納する及び/又は送る)如何なる機構、も含む。例えば、マシン読み取り可能な媒体は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光学ストレージ媒体、フラッシュメモリデバイス、DVD、電気,光,音響,又は他の形の伝播信号(例えば、搬送波、赤外線信号、デジタル信号)のEPROM、EEPROM、FLASH、磁気又は光学カード、又は電子命令を格納するために適した任意の形式の媒体、を含む。より低速な媒体は、より高速、より実用的な媒体にキャッシュされることができるであろう。
【００７６】
上述の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットの操作のアルゴリズム及び記号表現の観点で示されている。これらアルゴリズム的説明及び表現は、データ処理分野の当業者が、最も効果的に彼らの作業の実体を他の当業者に伝えるために使用する手段、である。ここでアルゴリズムは、一般的に、望まれる結果に導くステップの自己矛盾のないシーケンスであると考えられる。そのステップは、物理量の物理操作を要求するものである。必ずしもそうではないが、通常、これらの量は、格納、転送、合成、比較、及びその他の方法で操作されることのできる電気又は磁気信号の形をとる。これらの信号をビット、値、要素、記号、文字、用語、番号等として参照することは、主に一般的使用の理由のため、時々便利であると判明する。
【００７７】
しかしながら、これら及び同様の単語の全ては適切な物理量と関連付けられ、これらの量に適用される単なる便利なラベルにすぎないことを、念頭に置くべきである。上述の説明から明らかなように特に述べない限り、説明全体にわたって、「処理する」又は「演算する」又は「計算する」又は「定める」又は「表示する」等のような用語を利用する議論は、コンピューターシステム又は同様な電気コンピューティングデバイスの動作及び処理を参照し、これは、コンピューターシステムのレジスタ及びメモリ内で物理(電気)量で表されるデータを操作し、コンピューターシステムのメモリ又はレジスタ、又は他のそのような情報ストレージ、伝達、又は表示デバイス内で同様に物理量で表される他のデータに変換する、ということを理解する。
【００７８】
本発明の幾つかの具体的な実施形態が示される一方で、本発明はこれらの実施形態に限定されるべきではない。本発明は、本出願で説明する特定の実施形態によって限定されるのではなく、添付の特許請求の範囲の技術的範囲によってのみ限定されるものとして理解すべきである。
【図面の簡単な説明】
【００７９】
【図１】複数の個別のネットワークを含んで、複数のユーザーの固有のネットワーク要求に応えるネットワークシステムの実施形態を示している。
【図２】一又はそれ以上の機能を実行して、ネットワークシステム内のパケットを処理するネットワーク要素、を表すようにモデル化された仮想サービスモジュールのアーキテクチャの実施形態を示している。
【図３】仮想サービスモジュールのコンテナアーキテクチャ、及びその仮想サービスモジュールの物理層へのマッピング、の実施形態を示している。
【図４】仮想ネットワーク要素及び物理ネットワーク要素から構成されるトポロジー、を持つ個々のネットワークの実施形態を示している。
【図５Ａ】本発明の実施形態に従う仮想サービスモジュールのアップグレード、を示す例示的なブロック図を示している。
【図５Ｂ】本発明の実施形態に従って仮想サービスモジュールをアップグレードする例示的な方法、を示すフローチャートを示している。
【図６Ａ】本発明の実施形態に従う仮想ネットワークシステムのトポロジーの変更、を示す例示的なブロック図を示している。
【図６Ｂ】本発明の実施形態に従ってトポロジーを変更する例示的な方法、を示すフローチャートを示している。
【図７Ａ】本発明の実施形態に従う仮想ネットワークシステムのトポロジーの変更、を示す例示的なブロック図を示している。
【図７Ｂ】本発明の実施形態に従ってトポロジーを変更する例示的な方法、を示すフローチャートを示している。
【図１】
2005523621.tif 000003
【図２】
2005523621.tif 000004
【図３】
2005523621.tif 000005
【図４】
2005523621.tif 000006
【図５Ａ】
2005523621.tif 000007
【図５Ｂ】
2005523621.tif 000008
【図６Ａ】
2005523621.tif 000009
【図６Ｂ】
2005523621.tif 000010
【図７Ａ】
2005523621.tif 000011
【図７Ｂ】
2005523621.tif 000012
【国際調査報告】
2005523621.tif 000013
2005523621.tif 000014