(57)【特許請求の範囲】
【請求項１】
ネットワークエンティティとネットワークエレメントとを含む複数のネットワーク構成要素を有するネットワークを管理するための方法であって、
前記ネットワークの状態のビューを自動的及び動的に維持することと、前記ネットワークの状態は前記ネットワークエレメントの転送挙動に関連するデータフローを含む、前記ネットワークエンティティは前記ネットワークエレメントにより転送されるデータフローのソース及びデスティネーションである、
前記ネットワークの状態における変化に対応するイベントを検出することと、
前記検出したイベントに基づいて前記ネットワークの状態の前記ビューを変更することと、
前記検出したイベントに基づいて前記ネットワークエレメントの少なくとも１つの転送挙動を変更することと、
を具備するネットワークを管理するための方法。
【請求項２】
請求項１の方法であって、前記ネットワークの状態の前のビューのヒストリを維持することをさらに具備する。
【請求項３】
請求項１の方法であって、前のネットワークフロー及びイベントのヒストリを維持することをさらに具備する。
【請求項４】
ネットワークエンティティとネットワークエレメントとを含む複数のネットワーク構成要素を有するネットワークを管理するための方法であって、
コアオペレーションのセットを実行することと、前記オペレーションのコアセットは、少なくとも、
前記ネットワークの状態のビューを維持することと、前記ネットワークの状態は前記ネットワークエレメントの転送挙動に関連するデータフローを含む、前記ネットワークエンティティは前記ネットワークエレメントにより転送されるデータフローのソース及びデスティネーションである、
前記ネットワークの状態の前記ビューにおける変化に対応するイベントを検出することと、
前記データフローの転送をコントロールするために１つ又はそれ以上の前記ネットワークエレメントを設定することと、を含む、
前記コアオペレーションのセットに対するプログラムインターフェイスを提供することと、前記プログラムインターフェイスは、前記ネットワークの状態の前記ビューにアクセスする、ネットワークイベントを送受信する、及び前記ネットワークエレメントを設定することを、マネージメントアプリケーションに許可する、
を具備するネットワークを管理するための方法。
【請求項５】
請求項１の方法であって、前記ネットワーク構成要素は、複数のサーバでホストされたバーチャルマシンと前記サーバで実装された複数のバーチャルスイッチとを含むバーチャルネットワークエンティティ及びバーチャルネットワークエレメントのセットを含み、前記バーチャルスイッチはコントロール可能なスイッチアブストラクションをサポートする。
【請求項６】
請求項２の方法であって、前のネットワークフロー及びイベントのヒストリを維持することをさらに具備する。
【請求項７】
請求項６の方法であって、トラブルシューティング及びフォレンシックのために、前記ネットワークの状態の前のビューの前記ヒストリ、及び、前のネットワークフロー及びイベントの前記ヒストリの解析を実行することをさらに具備する。
【請求項８】
請求項１の方法であって、前記ネットワークエンティティはホストを含む。
【請求項９】
請求項１の方法であって、前記ネットワークエンティティはサーバを含む。
【請求項１０】
請求項１の方法であって、前記ネットワークエンティティはバーチャルマシンを含む。
【請求項１１】
請求項１の方法であって、前記ネットワークエンティティはバーチャルスイッチを含む。
【請求項１２】
少なくとも１つのプロセッサユニットによって実行するためのネットワークオペレーティングシステムであって、前記ネットワークオペレーティングシステムは複数のネットワークエレメントを有するネットワークを管理するためのものであり、前記ネットワークオペレーティングシステムは、
ネットワーク状態にアクセスすること及び前記ネットワークエレメントが実施するためのネットワークポリシーを宣言することを、前記ネットワークオペレーティングシステム上に構築された１以上のマネージメントアプリケーションに許可するプログラムインターフェイスと、
モジュールセットと、
を含み、
前記モジュールセットは、
前記プログラムインターフェイスを介して前記１以上のマネージメントアプリケーションに前記ネットワーク状態を提供することと、
前記プログラムインターフェイスを介して前記宣言されたネットワークポリシーを受信することと、
前記ネットワークポリシーに従って前記ネットワークエレメントの転送挙動を自動的に設定することと、
のためのものである
ことを特徴とするネットワークオペレーティングシステム。
【請求項１３】
前記ネットワークは、前記ネットワークエレメントにより転送されるデータフローのソース及びデスティネーションである複数のネットワークエンティティを更に有する
ことを特徴とする請求項１２に記載のネットワークオペレーティングシステム。
【請求項１４】
前記ネットワーク状態は、前記ネットワークにおいて前記ネットワークエンティティの場所を識別しない高レベルのネットワーク構成要素名と、前記ネットワークにおいて前記ネットワークエンティティの場所を識別する低レベルのネットワークアドレスと、の間のバインドを含み、
前記ネットワークポリシーは、ネットワークエンティティの前記高レベルの名前に関して宣言される
ことを特徴とする請求項１３に記載のネットワークオペレーティングシステム。
【請求項１５】
前記モジュールセットは、更に、前記高レベルの名前と前記低レベルのネットワークアドレスとの間の前記バインドを維持するためのものである
ことを特徴とする請求項１４に記載のネットワークオペレーティングシステム。
【請求項１６】
前記ネットワークエレメントはバーチャルスイッチを含む
ことを特徴とする請求項１２に記載のネットワークオペレーティングシステム。
【請求項１７】
各ネットワークエレメントの前記転送挙動は、転送挙動に関連するデータフローの少なくとも一部を示すフローエントリとして実装される
ことを特徴とする請求項１２に記載のネットワークオペレーティングシステム。
【請求項１８】
前記ネットワークオペレーティングシステムは、更に、前記ネットワークの全体を単一のマシンとして見ることを前記マネージメントアプリケーションに許可するためのメカニズムを提供するためのものである
ことを特徴とする請求項１２に記載のネットワークオペレーティングシステム。
【請求項１９】
前記ネットワークエレメントにより転送されるデータフローは、データパケットを含む
ことを特徴とする請求項１２に記載のネットワークオペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータネットワーク管理及び安全、特にコントロールネットワークのための拡張可能な（scalable）及び自動設定可能な（autoconfigurable）システム及び方法に関する。
【背景技術】
【０００２】
多くの現在の企業は大規模であり、複雑化されたネットワークを有する。ネットワークは、リンク、スイッチ、バス、ルータ、サーバ、ワークステーション及び他のネットワークデバイスを有し、様々なコネクション、アプリケーション及びシステムをサポートする。２００８年１月８日に出願された同時継続の米国出願第１１／９７０，９７６号において、参考によってここで組み入れたコンテンツは、ネットワーク管理技術の状態を前進させる。しかし、これら及び他の重要な商業及び学問がネットワークアドミニストレータの負担を軽減するために取り組んでいるにもかかわらず、これらのネットワークは管理及び安全が困難なままである。
【０００３】
これらのネットワークアドミニストレータによって遭遇された問題のいくつかは、ホストの開発及びネットワークオペレーティングシステムの違いを参考にすることでよい説明ができる。コンピューティングの早い時期において、プログラムは、根本的な物理資源（physical resource）のための共通のアブストラクションがない機械語で書かれていた。この作られたプログラムは、ライト、ポート、推論する（reason about）及びデバッグすることが困難である。現代のオペレーティングシステムは、メモリ、ストレージ、通信及びファイルやディレクトリなどの情報のような、資源（resource）のための高レベルなアブストラクションにコントロールされたアクセスを提供することによって、容易なプログラム開発に発展された。これらのアブストラクションは、幅広い種類のコンピューティングハードウエアで複雑なタスクを実行するプログラムを使用可能にする。
【０００４】
一方、ネットワークは、通常、個々のエレメントの低レベルの構成で管理される。ネットワークの構成は、多くの場合、下位のネットワークによって決まる。例えば、アクセスコントロールリスト（「ＡＣＬ」）エントリにおけるユーザのアクセスをブロックすることは、ユーザの現在のＩＰアドレスを知ることを要求する。複雑化されたタスクは、さらに広範囲なネットワーク知識を要求する。ＨＴＴＰプロキシをトラバースするためのゲストユーザのポート８０トラフィックを強要することは、現在のネットワークの接続形態及び各ゲストの位置を知ることを要求する。従来のネットワークは、ハードウエアの独立した機械語プログラミングの役割を実行するネットワークの独立したコンポーネント構成で、オペレーティングシステムがないコンピュータと似ている。
【発明の概要】
【０００５】
（関連出願への相互参照）
本出願は、２００７年９月２６日に出願された「ネットワークオペレーティングシステムに基づくフロー（Flow Based Network Operating System）」と題する米国出願第６０／９９５，４３５号から、２００８年１月１４日に出願された「企業ネットワークを管理する及び安全にするためのネットワークオペレーティングシステム（Network Operating System for Managing and Securing Enterprise Networks）」と題する米国出願第６１／０１０，９８５号に、優先権を要求し、その出願はこの結果、すべての目的のためにこれらの全部がここに組み込まれる。
【０００６】
本発明のある実施形態は、（ネットワークアドレス翻訳、暗号化、カプセル化、ステートフルトンネリング及びサービスの品質の種々のフォームを含む）グローバルなルーティングと他の転送行為をコントロールするためのシステムと方法を提供する。これらの決定は、フローが始まるとき、リアルタイムで、各フローで独立してなされることができ、（ホスト、ユーザ、サービスなどのために）高レベルの名前に関して表現された一般的なポリシをベースになされることがきる。これらのポリシの実行は、ネットワークトポロジから独立することができ、そして、ユーザとホストが動き、そしてネットワークが変化するとき、実行は有効なまま維持される。本発明のある実施形態は、たいていのコマーシャルスイッチングチップのために提供されたＡＣＬ機能を使って実行されることができる。
【０００７】
本発明のある実施形態は、包括的なネットワークビューを維持するためのシステムと方法を提供する。これらの実施形態のいくつかにおいて、ネットワークビューは、ネットワークエレメントのトポロジを構成する。これらの実施形態のいくつかにおいて、ネットワークビューは、エンティティのロケーション、ユーザ、サービスとホストを含めてのエンティティを識別する。これらの実施形態のいくつかにおいて、ネットワークビューのヒストリは、ネットワークフローのヒストリとともに、維持される。
【０００８】
本発明のある実施形態は、ネットワークエレメントをコントロールすることに関して、高レベル言語に、ネットワークビューへのアクセス、フロー開始を含むネットワークイベントの通知及びネットワークビューとコントロールメカニズムの変更を与える集中化されたプログラムインターフェイスを提供する。システムは、グローバルなルートのリアルタイムのフロー単位のコントロールを提供してもよい。これらの実施形態のいくつかにおいて、システムはネットワークを通してフローのパスを、そしてネットワークエレメントによってフローの処理をコントロールする。これらの実施形態のいくつかにおいて、システムは、ネットワークビューだけがグローバルな一貫性を必要とするという状態で、一貫性必要条件の厳密な分類を通して拡張可能である。これらの実施形態のいくつかにおいて、フローに関しての決定は、グローバルなネットワークビューとフロー状態に基づいている。これらの実施形態のいくつかにおいて、これは、ネットワークビューをローカルからゆっくりと変化することを除いて、パラメータから急速に変化することを除いて、一貫性の分類を許可する。これらの実施形態のいくつかにおいて、フロー状態は複数のコントローラのそれぞれによって独立して処理される。
【０００９】
発明のある特定の実施形態は、ネットワークを自動設定するための方法を提供する。これらの実施形態のいくつかにおいて、自動設定は新しいデバイス及びネットワークに接続されたサービスを自動的に検出することを含む。これらの実施形態のいくつかにおいて、自動設定は自動的にアップデートしているフローエントリ及び他の設定情報を含む。これらの実施形態のいくつかにおいて、フローエントリ及び他の設定情報のこの自動的なアップデートは、種々のネットワーク変更に直面して保守されるグローバルな指令（「ポリシ」）の実行を許す。
【００１０】
発明のある特定の実施形態は、低電力モードでホストを維持することを可能として、パケットのインテリジェントなインターセプションのためにサポートすることを提供する。
【００１１】
発明のある特定の実施形態は、ＶＭを移行させるためのサポートを含むバーチャル環境に関してサポートを提供する。これらの実施形態のいくつかにおいて、ここで多数のＶＭはある特定のデバイスと結び付けられる、システムはこれらの共同レジデント（co-resident）のＶＭｓの間で通信のコントロールを可能にする。これらの実施形態のいくつかにおいて、インバンドのコントロールがデバイスを管理するために使われる。これらの実施形態のいくつかにおいて、スイッチは、グローバルな機能を提供するために、ＡＣＬ機能を使って、コントロールされる。
【００１２】
発明のある特定の実施形態は、シングルシステムを通して多数のネットワークを管理及び安全に保つためのサポートを提供する。
【００１３】
発明のある特定の実施形態は、異なった管理上の権限にコントロールを分割することができるようにして、シングルネットワーク基礎構造の多数のマネージメントシステムシェアコントロールを持つためのサポートを提供する。
【００１４】
発明のある特定の実施形態は、ネットワークを管理するためのシステムと方法を提供する。これらの実施形態のいくつかは、ネットワークの現在の状態のネットワークビューを維持することと、ネットワークの状態の変更に対応しているイベントを発表することと、そしてネットワークビューとイベントの１つに基づいてネットワークエレメントの１つを設定することとを具備し、ネットワークの現在の状態はネットワーク構成要素とネットワークトポロジを特徴付け、ネットワーク構成要素はネットワークエンティティ及び現在アドレス可能なネットワークエレメントを含む。これらの実施形態のいくつかにおいて、ネットワークエンティティはネットワークユーザを含む。これらの実施形態のいくつかにおいて、ネットワークビューは１つ又はそれ以上のネットワークマネージメントアプリケーションによってアクセスされる。これらの実施形態のいくつかにおいて、ネットワークの現在の状態はネットワーク構成要素のロケーションを含む。これらの実施形態のいくつかにおいて、ネットワークの現在の状態はネットワークでデータフローをさらに特徴づける。
【図面の簡単な説明】
【００１５】
【図１ａ】本発明のある態様によるネットワークマネージャ及びネットワークエレメントを説明するブロック図。
【図１ｂ】本発明のある態様によるネットワークマネージャ及びネットワークエレメントを説明するブロック図。
【図２】本発明のある態様によるネットワークマネージャのコンポーネントを示すブロック図。
【図３】本発明のある態様によるＮＯＸのコアなコンポーネントを示す図。
【図４】本発明のある態様によるシステムにおけるディレクトリマネージャ及びそのインテグレーションを示す図。
【図５】本発明のある態様によるＮＯＸにおけるインテグレイトされたポリシコントロールの例を示す図。
【図６】本発明のある態様によるＮＯＸにおけるホスト認証の例を示す図。
【図７】本発明のある態様によるフローエントリの例を示す図。
【発明の詳細な説明】
【００１６】
本発明の実施形態は、本発明を実行するための技術に熟練した者が実行するために、例を示すために与えられた図面を参照して詳細が述べられる。特に、図や以下の例は、本発明の要旨を一実施形態に限定することを要求するものではない。しかし、他の実施形態は、いくつか又は全ての記述又は図示されたエレメントを入れ替えることが可能である。便利な場合はいつでも、いくつかの参照番号は、同じ又は一部が似ていることを参照するために、図の至るところで使われるであろう。これらの実施形態のいくつかのエレメントは、知られたコンポーネントを用いて、部分的に又は全体的に実行されることができる。本発明を理解するために必要なそのような知られたコンポーネントのこれらの一部のみ、説明されるであろう。本発明が不明確とならないように、そのような知られたコンポーネントの他の部分の詳細な説明は省略されるであろう。本明細書において、単数のコンポーネントで示す実施形態は、限定していると考えるべきでない。むしろ、本発明は、複数のコンポーネントを含んだ他の実施形態を含むことが意図される。ここで別に明示的に規定されていない限り、逆も同様である。さらに、そのような説明が明白でない限り、出願人は、明細書又はクレームにおけるどのタームも珍しい又は特別な意味を意図するものではない。さらに、本発明は、説明のためにここで参照されたコンポーネントとここにあるもの及び知られたものと同等なものを含む。
【００１７】
本発明のある実施形態では、データ通信ネットワークを管理する及び安全にするためのシステム及び方法を提供する。これらのシステム及び方法は、一般的に、ネットワークエレメントに関して、拡張可能な及び自動設定可能なプログラムのコントロールをサポートする。ネットワークトラフィックに関して、ネットワーク及びプレフロー（per-flow）コントロールの包括的な意見を提供する。本発明の実施形態で使用するために構成及び適合されたネットワークシステムに新しい特徴と機能性を提供することに加えて、本発明の特徴は、従来のコマーシャルスイッチのインテグレーション及びコントロールを許す。
【００１８】
データ通信ネットワークは、相互接続スイッチ、バーチャルスイッチ、ハブ、ルータ、ネットワークを通過するときにデータを処理するように構成された他のデバイスを含むことができる。これらのデバイスは、ここでは、「ネットワークエレメント（network elements）」と呼ぶ。１つ又はそれ以上の通信リンクを使って、ネットワークエレメント間において、データパケット、セル、フレーム、セグメントなどをパスすることによって、データがデータ通信ネットワークを通して伝達される。通信リンクは、マルチセグメント（multi-segment）されることができ、有線、無線、光などを用いることができる。一例において、パケットは複数のネットワークエレメントによって処理されてもよく、ソース及びデスティネーションの間でネットワーク上に伝わるとき、複数の通信リンクの複数のセグメントをクロスする。
【００１９】
ネットワークにおいてソースが他のソースからデータを受ける場合でも、又はデスティネーションが他のデスティネーションにデータを前方に受ける場合でも、ソース及びデスティネーションは、ネットワークにおける端末（endpoint）と考えられるであろう。種々の端末システムは、一般的に、ウェブサーバ、Ｅメールサーバ、ファイルサーバなどのようなサーバを用いて、クライアントマシン、バーチャルマシン（「ＶＭｓ」）、サーバ、種々のネットワークサービスを提供するシステムを含むネットワーク上で存在することができる。ユーザは、サーバ、ワークステーション、パーソナルコンピュータ及びモービル通信デバイスを含むこれらの端末システムの一つ又はそれ以上の中にログインしてもよい。端末システムは、ユーザ及びそれらの上に存在するサービスとともに、ここでは、「ネットワークエンティティ（network entities）」と呼ばれるであろう。
【００２０】
この論議の目的のために、ネットワークエンティティ及びネットワークエレメントは、「ネットワーク構成要素（network constituents）」と呼ばれることができ、タームを単数として使用すること（つまり、「ネットワーク構成要素（network constituent）」）は、ネットワークエレメント又はネットワークエンティティのどちらかを意味することができる。特定のネットワークエレメントがネットワークエンティティとして動作してもよく、この逆も同様であるという、特別なケースが存在することは理解されるであろう。例えば、ネットワークスイッチは、システムアドミニストレーションを受け入れる端末サービスを提供してもよく、ユーザワークステーションは、ネットワークデータを転送して、無線デバイスにブリッジ又はゲートウェイとして働いてもよい。これらの特別なケースにおいて、別な記載がある場合を除いて、デバイスの異なる機能は別に及び独立して扱われる。
【００２１】
本発明のある実施形態は、ネットワークのためにオペレーティングシステムを有する。オペレーティングシステムは、全部のネットワークへの同一の及び集中化されたプログラムのインターフェイス（centralized programmatic interface）を提供する。ネットワークオペレーティングシステムはネットワーク自身を管理する必要がないが、ネットワークオペレーティングシステムはネットワークの監視及び制御を可能にする。ネットワークオペレーティングシステムは、一般的に、ネットワーク管理タスクを実行するために構築及び／又は実行されることができるアプリケーションに基づいてプログラムのインターフェイスを提供する。この説明において、「アプリケーション（application）」というタームは、特に他で記述されない限り、ネットワークオペレーティングシステム上で実行するプログラムを意味するであろう。
【００２２】
本発明のある態様によるネットワークオペレーティングシステムによれば、従来のネットワーク管理システムからの概念的な出発を具体化する。例えば、ネットワークオペレーティングシステムは、ネットワーク状態の論理的に集中化されたビューを含めて、集中化されたプログラミングモデルでプログラムを与える。アプリケーションは、全部のネットワークがシングルマシンであるかのように、書かれることができる。従って、Bellman-Ford法よりDijkstra法を用いて、アプリケーションは最も短い経路で計算することができる。もう１つの例において、アプリケーションは、ＩＰアドレス及びＭａｃアドレスのような低レベルの設定パラメータよりも、例えばユーザ名及びホスト名を含んだ高レベルなアブストラクションのタームで書かれることができる。このアブストラクションは、基礎をなしているネットワークトポロジの独立を実行する管理及び安全のポリシを認める。ネットワークオペレーティングシステムは、アブストラクション及び対応する低レベルの構成の間において、現在の及び正確なマッピング又はビルディングを維持する。
【００２３】
ある実施形態において、ネットワークオペレーティングシステムは、低レベルのアドレスに関する分散アルゴリズムとは対照的に高レベルな名前に関して、集中化されたプログラムとして、マネージメントアプリケーションが書かれることを可能にする。特に、本発明のある実施形態は、ネットワークをコントロールする及び望ましいポリシを実行するために、集中化されたデクラティブステートメント（declarative statements）（ここでは、「コマンド（directives）」として扱う）を使うためにオペレータに許可する方法において、管理及び安全なネットワークのためのシステム及び方法を有する。それぞれの個別のネットワークコンポーネントを設定する代わりに、ネットワークオペレータは一つ又はそれ以上のネットワークのワイドコマンドを単に作ることができ、望まれる動作が実行されるネットワークオペレーティングシステムのコントロールの下、システムはネットワークコンポーネントを保証することによって実行するであろう。
【００２４】
本発明のある実施形態は、一般的なプログラムのインターフェイスを提供する。これは、Ｃ＋＋とＰｙｔｈｏｎのような高レベルの言語を使って、ネットワークオペレータに指令を指示することができる。ある実施形態のシステム及び方法は、安全、管理、ネットワークコントロール、スケーリング、バックワードの互換性（backwards compatibility）、自動設定、バーチャル環境、インバンドコントロール、ヒストリ及びフォレンシック（forensic）、ルーティング、パケットインターセプション（interception）、及びサービスプロテクションの拒否に関連されたアドレスの問題について提供される。
【００２５】
本発明のある実施形態は、以下で「ＮＯＸ」として呼ばれたネットワークのためのオペレーティングシステムを定義及び備える。ＮＯＸは、データ通信ネットワークを監視及びコントロールするために、ネットワークオペレータを可能にする。ＮＯＸは、一般的に、現在のトポロジ、現在のサービス提供、及びホスト、サービス並びにユーザ認証の現在の位置を含む、全体的なネットワークの現在のビューを維持する。申し出られたサービスは、ＨＴＴＰ及びＮＦＳのような標準によって定義されたサービスを含んでもよく、また、ＮＯＸ又は特徴づけることができるＮＯＸに知られている独自のサービスを含んでもよい。マネージメントアプリケーションがＮＯＸによって維持されたネットワークビューにアクセスすることができる実行環境（execution environment）を提供することによって、ＮＯＸはネットワークのコントロールを容易にしてもよい。マネージメントアプリケーションは、少なくともデータ通信ネットワークの一部をモニタ及びコントロールするコンポーネントを含む。ここで、一部は、特定の管理のコントロール及び／又は物理的なエリアの下において、１つ又はそれ以上のドメイン、１つ又はそれ以上のタイプのネットワークエレメント、１つ又はそれ以上のコンポーネントによって、定義されてもよい。マネージメントアプリケーションは、ネットワークイベントの通知を受け取るため及びネットワークコンポーネントのマネージメントを容易にするために、ＮＯＸに登録されてもよい。
【００２６】
次の例の目的のために、「ネットワーク」は、イーサネット（登録商標）のようなレイヤ２のネットワーク、ＡＴＭ、例えば、インターネットプロトコル（「ＩＰ」）及び／又は他の適当なネットワーキング技術を使用しているレイヤ３のネットワークによって、スイッチのセット、ルータ、ファイアウォール、プロキシ及び他のネットワークエレメントが、相互に連結されたことを意味するととらえることが可能である。ネットワークエレメント間のリンクは、ネイチャー及び／又はそのどんな組み合わせにおいて、ローカルエリア又はワイドエリアであってもよい。ユーザ及び、ホスト、サーバ及び他のデバイスのようなエンティティは、ネットワークに接続されてもよく、ネットワーク上に存在すると言われてもよい。特定のネットワークアーキテクチャ、ネットワークエンティティの同種（homogeneity）、異種（heterogeneity）、コンポーネントの部分及び構成（configuration）にかかわらず、ＮＯＸベースのシステムはネットワークをモニタ及びコントロールするために実装されることができる。
【００２７】
次の例の目的のために、「フロー」は、普通の特徴を共有するパケット又は他のネットワーク伝達ユニットのシリーズであると理解される。一般的に、この普通の特徴は、ネットワークエレメントによって検出されて、そして類似の行動をそれぞれのパケットに適用するために使われることができる。例えば、フローは、同じパケットヘッダを有する又はパケットヘッダのある特定の指定された部分を共有するパケットのシリーズを含んでもよい。
【００２８】
参照は、今図１ａ及び図１ｂについてである。図１ａは、コントロール可能なネットワークエレメント（「ＣＮＥｓ」）及びネットワークマネージャの存在を描写する。図１ｂは、ラインによって示されたリンクを有し、及び種々の「ＣＮＥｓ」、ネットワークコントローラ１６ａ−ｃのホストとして機能しているデバイスの３つのインスタンス、ネットワークヒストリ１８ａ及び１８ｂを含んでいるデバイス及びネットワークビュー１７を維持する１つのデバイスの２つのインスタンスを示すネットワークの例を描写する。ある特定の実施形態において、システムは、ネットワークマネージャ１０及び、スイッチ及び／又は他のネットワークエレメントを含む１つ又はそれ以上のコントロール可能なネットワークエレメント１２ａ−１２ｈ及び１２ｉ−１２ｐを構成する。図１ａの特定の参照において、ネットワークマネージャ１０は、ネットワークコントローラ、ネットワークビューデータベース及びネットワークヒストリデータベースを含む複数のロジカルコンポーネントを含む。これらのロジカルコンポーネントは、ネットワークによって付加されたサーバ又はネットワークに接続された他のデバイスの上にホストされてもよい。それで、分散されたエンティティとして描写されたネットワークマネージャ１０は、専用の処理デバイスの上に存在するか、又は、Ｌｉｎｕｘ（登録商標）サーバ、ＵＮＩＸ（登録商標）サーバ、Ｗｉｎｄｏｗｓ（登録商標）サーバなどのような多数の処理デバイスの至る所に分散されることができる。さらに、ネットワークマネージャ１０は、ネットワークエレメント１２ａ−１２ｈによって、集められた及び／又は処理された情報を集めてもよい。１つ又はさらに多くのネットワークコントローラは、共通のサーバ又は異なったサーバの上に存在するか否かにかかわらず、ＮＯＸのインスタンス及びマネージメントアプリケーションのセットをそれぞれ実行することができる。ＮＯＸは、一般的に、プログラムのインターフェイスを提供し、他方、マネージメントアプリケーションは、進歩したネットワーク管理能力を提供する。
【００２９】
図１ａにおいて、ネットワークマネージャ１０は、その潜在的に分散されたネイチャーを示しているクラウド（cloud）で描写され、そして（図示しない）他のネットワークエレメントの間の接続は任意で可能である。図１ｂは、ネットワークマネージャの種々のコンポーネントの配置とともに、コントローラ１６ａ−１６ｃ、ネットワークビュー１７及びヒストリ１８ａ−１８ｂを含むネットワークエレメントの間の相互接続の追加の特定の例を示す。図１ｂに示されるように、ネットワークマネージャの種々のコンポーネントは、ネットワーク構成及びネットワークマネージャのコンポーネントの配置をもとに、異なった場所でネットワークに接続されてもよく、そしてネットワークエレメント１２ｉ−１２ｐのいくつかと直接的に通信することができ、そして特定の他のネットワークエレメント１２ｉ−１２ｐに間接的のみに通信することができる。例えば、ネットワークマネージャは、一つのサーバに、又はネットワークの至るところに位置された、いくつものサーバに提供されてもよい。これらのサーバは、また他のサービスをサポートしてもよく、アプリケーション及びユーザは、それらにログインしてもよい。これらのサーバは、（例えば、スイッチとして機能することによって、）またネットワークエレメントの機能を果たしてもよい。他のネットワークエレメントと同じサーバの上にコントローラファンクションが収容される例において、ネットワークマネージャは、通信のために、例えば、共通のバス、共通のメモリ、プロセス間（interprocess）のチャネル及び他のスキームを使って、ネットワークなしでネットワークエレメントと通信してもよい。従って、図１ｂで描写された接続図は、どのような通信及びコントロールのフォームでも包含するとして、読まれるべきである。また図２を参照して、ある特定の実施形態において、ネットワークマネージャ１０はネットワークの現在の状態を記述しているネットワークビュー２２を維持する。ネットワークの状態は、現在のネットワークトポロジ、ネットワーク上で存在していることを示されたホスト、ユーザ及びネットワークサービスの現在の位置を記述する情報を構成する。現在の状態は、ユーザ名、ホスト、サービスなどを含む高レベルの名前の間及びホスト、ネットワークエレメントなどのためのアドレスを含む低レベルのアドレスの間のビンディング（binding）に関して記録されてもよい。一般的に、ネットワークビューの一つのロジカルバージョンが利用可能である。しかし、ビューのコピー又はビューの一部は、維持されてもよく、そして１つ又はそれ以上のネットワークによって付加されたサーバ又は他のネットワークデバイスの上に格納されてもよい。
【００３０】
ある特定の実施形態において、ネットワークヒストリ２４は、トポロジ、エンティティの場所などを含めて、過去のネットワーク状態の総合的な記録を維持する。ネットワークヒストリ２４は、時間内に、ある特定のインスタンスにおいてネットワークの前の状態を再現すること可能にする。このネットワークヒストリ２４は、前もって定められた照会言語（query language）を使って照会されることができる。一般的に、ヒストリ２４は１つ又はそれ以上のネットワークによって付加されたサーバ又は他のネットワークデバイスで具体化されてもよいが、このヒストリ２４の一つのロジカルなバージョンは維持される。ネットワークビューの及びこのヒストリの分析は、ネットワークの警告を生成するために使われてもよい。これらの警告は、ネットワークエレメントのイベント検出能力を補完又は代理してもよい。例えば、継続的な（successive）ネットワーク状態の検査は、ネットワークマネージャ１０によって及び／又はネットワークオペレーティングシステム１０１を使っているアプリケーションによって発生させられるために、方策として起こされた警告を可能にすることで、コネクションのロスを確認することができる。
【００３１】
ある特定の実施形態でコントロール可能なスイッチ及び他のネットワークエレメントは、ネットワークマネージャ１０によってコントロールされることができる。１つの例において、これらのスイッチはオープンフロー（OpenFlow）インターフェイスを実行及びサポートする。それによって、スイッチはフォームがエントリされたフローテーブルによって表される（ヘッダ：カウンタ、アクション）。しかしながら、発明はこのオープンフローの例に制限されない。そして、現在の例によって教えられた後で、これらの当業者は他の選択肢を認識するであろう。指定されたヘッダフィールドは完全に定義されるかもしれない。そして、完全なヘッダとマッチしているパケットだけが選択される。代わりに、フローエントリのヘッダ仕様は、ワイルドカード値又はフローにマッチするようなＴＣＡＭに供給している「ＡＮＹｓ」を含んでもよい。この場合、パケットは、ヘッダのサブセットでマッチに基づいてフローに割り当てられてもよい。ある特定の実施形態において、ヘッダは、ヘッダの伝統的な概念（notion）に対応する必要がないが、入力パケットでビットの任意のセットとして定義されることができる。ビットの指定されたセットを共有するパケットだけが指定されたヘッダとマッチすると考えられる。識別されたヘッダとマッチして処理されたそれぞれのパケットのために、対応するカウンタは更新されることができ、そして特定のアクションの１つ又はさらに多くがアップデートされることができる。パケットは、多数のフローヘッダとマッチすることができ、そして事前に設定されたルールに従ってフローに割り当てられてもよい。１つの例において、多数のフローヘッダエントリとマッチしているパケットが最も高いプライオリティのフローエントリに割り当てられることを、構成は影響（dictate）してもよい。
【００３２】
オープンフローに関して、現在サポートされるアクションは、デフォルトとしての転送（forward）、特定のインターフェイスの転送アウト（forward out）、否定（deny）、ネットワークコントローラへの転送、及び種々のパケットヘッダフィールドを変更することを含むことができ、変更されるパケットヘッダフィールドは、ＶＬＡＮタグ、ソース及びデスティネーションのＩＰアドレス、及びポート番号を含むことができる。１つの例において、スイッチがその伝統的なソフトウェアを使っているパケットを転送するように、パケットが転送されるので、「デフォルトとしての転送」のアクションは、効果的にＮＯＸを無視することをスイッチにさせる。オープンフロー仕様と一貫した他のアクション及び機能はサポートされてもよい。（オープンフロードキュメンテーション及びソースコードは、http://www.openflowswitch.org/.で入手可能である。)
ある実施形態はスイッチの動作のために他のアブストラクションを使用してもよく、これらはアクションの異なったセットをサポートしてもよい。これらの他のアクションは、ネットワークアドレスの翻訳、暗号化、カプセル化、ステートフルトンネリング、及びサービスの品質（「ＱｏＳ」）の種々のフォームを含んでもよい。加えて、カウンタ及びアクションは前もって定められてもよく、及び／又はユーザ及びネットワークマネージメントアプリケーションによって配置されることができる。オープンフロースイッチアブストラクションのようなアブストラクションは、フローテーブルエントリを挿入して、フローテーブルエントリを削除して、フローテーブルエントリのプライオリティを管理して、そしてフローテーブルカウンタを読むためのマネージメントアプリケーションを許可してもよい。これらのエントリはアプリケーションスタートアップで、又はネットワークイベントに応えて準備されることができる。オープンフロー及びネットワークエレメントのための類似のアブストラクションは、またコントローラとエレメントの間により広い通信を可能にするメッセージのセットを供給してもよい。このようなメッセージの例は、スイッチ結合（switch join）、スイッチリーブ（switch leave）、パケットレシーブ（packet received）、及びとスイッチ統計値（switch statistics）である。
【００３３】
ＮＯＸによってコントロールされたデータ通信ネットワークのあるオペレーションが今論じられるであろう。図６は、以下でさらに詳細に述べ、入力パケットのために起こることができる処理の１つの例を記述する。ある特定の実施形態において、ＮＯＸによってコントロールされたネットワークエレメントによって出会ったパケット又は他のデータユニットは、分析及び分類されてもよい。いくつかのネットワークによって付加されたデバイス及びパケットがＮＯＸによってコントロールされたネットワークエレメントにいつ届くかによって、パケットが生成されることができ、パケットヘッダ又はもう１つのパケットの特質はパケットが割り当てられるべきであるフローを決定するために調べられる。例えば、もし入力パケットのヘッダがスイッチのフローエントリの１つで特定されたフィールドと一致するなら、スイッチはフローにパケットを割り当てることができて、そして適切なカウンタを更新して、そして対応するアクションを応用してもよい。しかしながら、もしパケットがフローエントリとマッチしないなら、それは一般的に、パケットを点検して、そして、パケット及び／又はパケットに対応するフローをどのように処理するかについて決断してもよいネットワークコントローラに転送される。決定は、ネットワークビュー、前もって定められたルール及びポリシディレクティブにおける情報に基づいてされる。例えば、フロー処理決定は、パケットをドロップし、パケットデスティネーションへのパスに沿って、フローエントリを挿入することによって、パスをセットアップし、そして、フローエントリをセットアップしないでパケットをデスティネーションに転送するために、スイッチ及び／又はコントローラを起こすアクションを含む１つ又はそれ以上のアクションを起こしてもよい。
【００３４】
いくつかの場合において、既存のフローエントリにアンマッチであるパケットはフローの最初のパケット（「フロー開始パケット」）であり、そして次のパケットはフロー開始パケットに対応して作ったフローエントリにマッチすることが予期されることができる。ある特定の実施形態において、コントローラはフロー開始に対応していくつかのフローエントリを挿入しなくてもよく、そして、従って、コントローラはそのフローであるすべてのパケットを受け取り続けるであろう。１つの例において、コントローラがすべてのＤＮＳトラフィックを見ることができるように、これはされてもよい。ある特定の実施形態において、システムはパケットからフロー情報を決定して、そして、最初のパケットの一部を受け取った後で、又は最初のパケットより多くを受け取った後で、フローエントリを挿入するように構成されてもよい。ある特定の実施形態において、マネージメントアプリケーションが個別のフローを処理することについての方法を決める。コントロール決定がＮＯＸのプログラムインターフェイスを通して伝達されることができる。
【００３５】
図２の参照を続けて、ある特定の実施形態はアプリケーション２０に種々のサービスを提供するプログラムインターフェイスを構成する。プログラムのインターフェイスはネットワークビュー２２とヒストリのビュー２４へのアクセスをアプリケーションに提供してもよい。一般的に、アプリケーション２０は、とられたアクション及び／又はとられたアクションの範囲を決定するために、応答の情報を使って、ネットワークビュー２２を照会することができる。プログラムインターフェイスはネットワークイベントと関連した警告をアプリケーションに提供してもよい。１つの例において、アプリケーションは、あるネットワークイベントについて知らされるために、通知サービスに登録されることができる。プログラムインターフェイスは、アプリケーション２０にネットワークエレメントをコントロールすることができるようにしてもよい。例えば、ネットワークエレメントの動作を変更するために、アプリケーションはオープンフローのようなコントロールデバイスインターフェイスを使ってもよい。
【００３６】
ある実施形態は、ネットワークイベントの異なったカテゴリをモニタ及び報告する。カテゴリは、新規ホストの挿入、新規ユーザの認証及びネットワークトポロジの変更のようなネットワークビューに変更を反映するイベントを含み、イベントはフロー開始及びコントローラに到着した他のパケットを反映し、イベントはスイッチ結合（switch join）、スイッチリーブ（switch leave）、パケットレシーブ（packet received）、及びとスイッチ統計値の受理（receipt of switch statistics）のようなオープンフローメッセージによって直接発生し、イベントは他の低レベルのイベント及び／又は他のアプリケーションで発生されたイベントの処理の結果としてＮＯＸアプリケーションによって発生する。例えば、このようなホストが検出されたとき、「スキャンニングホスト」を検出するよう設計されたマネージメントアプリケーションがイベントを生成することができた。このスキャンニングアプリケーションは、順番に、スキャナーを発見するために（フロー開始のような）より低レベルのイベントに適用してもよい。
【００３７】
ある特定の実施形態において、ある特定の識別されたイベント又はイベントのカテゴリが起こるとき、実行されるために構成された登録ハンドラ（handler）のセットをＮＯＸアプリケーションは使う。イベントハンドラは、ハンドラ登録の間に指定されたプライオリティのオーダーについて一般的に実行される。イベントに関連するハンドラの実行が止められるべきである、又はイベントの処理が次の登録されたハンドラにパスされるべきであるかどうかを示すＮＯＸに、ハンドラは値を返してもよい。ある特定の実施形態において、アプリケーションハンドリングイベントは１つ又はそれ以上のアクションをとってもよく、アクションは、ネットワークビュー２２をアップデートし、フローエントリを１つ又はそれ以上のネットワークエレメントに挿入し、そして追加のネットワークイベントを生成することを含む。
【００３８】
ＮＯＸコアは、好ましくは他のコンポーネントが構築されるベースソフトウェア基礎構造を含む。１つの例において、ＮＯＸコアは、非同期の通信ハーネス、イベントハーネス、コーオペラティブスレッドライブラリ（cooperative threading library）、コンポーネントアーキテクチャ、及びネットワークアプリケーションに共通のファンクションを提供する組み込みのシステムライブラリのセットを提供してもよい。図３は、一実施形態における特定のＮＯＸコアコンポーネントの高レベルのビューを提供する。Ｉ／Ｏハーネス３１０は、ネットワークスイッチへの接続を管理するファンクションを含むシステムインプット及びアウトプット（「Ｉ／Ｏ」）機能３００、３０２、３０４へ非同期のインターフェイスを提供し、ファンクションはファイルシステムで通信を処理し、ファンクションは管理Ｗｅｂサーバのような一般的なネットワークサービスをサポートしているソケットインターフェイスを提供する。
【００３９】
イベントハーネス３２２は、システムイベントの創造（creation）と分散（distribution）を管理するコンポーネントを含む。システムイベントは、ネットワークの中へのスイッチの挿入又は新しいフローの到着のような、ネットワークレベルイベントを含むことができ、スキャンニングホストを検出するアプリケーション２０によって作られた「検出されたスキャン（scan detected）」イベントのような、アプリケーション２０によって作られたイベントを含むことができる。
【００４０】
コーオペラティブスレッドライブラリ３２０は、実行の同時（concurrent）のスレッドを管理するために便利なインターフェイスを提供する。それぞれのＩ／Ｏイベントは、別個のスレッド状況（context）の中で一般的に実行される。ブロッキングＩ／Ｏに関連したパフォーマンスペナルティを避ける間、これはアプリケーションが通信境界線の向こう側に線形プログラムのフローを提供することを可能にする。例において、イベントに対応しているコールバックを登録することによって、アプリケーション２０が特定のイベントに関心を示す完全に非同期の通信モデルを、ＮＯＸコア１０１はサポートする。アプリケーション２０は強調的スレッド及びコールバックの両方を使うことができる。
【００４１】
強調的スレッド３２０、イベントハーネス３２２及びＩ／Ｏ基礎構造コンポーネント３００、３０２、３０４は、好ましくは、アプリケーション２０にさらされることができるコアアプリケーションプログラミングインターフェイス（「ＡＰＩ」）３３０を基に提供する。これらのコンポーネントは、アプリケーション間の依存性（dependencies）、アプリケーション２０の動的なローディングに対するサポート、及びコアＡＰＩへのインターフェイスを宣言及び解決するための方法を提供する。
【００４２】
ある特定の実施形態において、ＮＯＸコア１０１はまたネットワークアプリケーション２０に共通の機能を提供するアプリケーションの小さいセットを構成してもよい。これらの機能は、パケット分類（packet classification）３５０、言語ビンディング（language bindings）３５６、ロケーション３５２、ルーティング３５４、及びトポロジディスカバリ３６０を含んでもよい。パケット分類３５０は、アプリケーション２０がそれらがどのパケットのタイプに関心を持っているか明示することができる一般的なインターフェイスを提供する。クラシファ（classifier）は、アプリケーション２０がこれらのパケットを受け取るだけであることを保証する。プログラミング言語ビンディング３５６は、アプリケーションが異なったプログラミング言語で書かれることを可能にする。描写される例において、C++のような異なった言語でコアＮＯＸ１０１が実行されるとき、Pythonプログラミング言語ビンディングはPython言語におけるアプリケーション開発を認める。プログラミング言語ビンディング３５６は、機能性の速いプロトタイピングと非パフォーマンスの重大な機能性の高レベルの実行を認める。プログラミング言語ビンディング３５６の他の例は、Ｊａｖａ（登録商標）とＲｕｂｙのためにビンディングを含む。
【００４３】
ロケータアプリケーション３５２は、ネットワークに新規ホストがいつ参加又は去ったかを決定するために使われるロジックとデータを構成する。ある特定の実施形態において、ロケータアプリケーション３５２はネットワークビュー２２にデータを提供する。ロケータアプリケーション３５２は、一般的に、付加された物理的なポートによって決定されるネットワーク上のホストの位置を含むホストに関連するネットワーク状態、及びホストに割り当てたアドレスを追跡する。ネットワーク上でセットアップされたフローのソース及びデスティネーションの物理的な位置が決定するため、及びフローによってトラバースされたネットワークエレメントの転送動作を変更するために、この情報は、ホスト結合／リーブイベントを生成するために使われてもよいし、ルーティングアプリケーションによって使われてもよい。
【００４４】
ネットワークビュー２２は、複数のネットワークコントローラの個人的な貢献（individual contribution）を通して組み立てられてもよい。ロケータアプリケーション３５２、トポロジディスカバリアプリケーション３６０及びコントローラの他のコンポーネントは、一般的にネットワークビュー２２を変更することができる。１つの例において、複合したビューは、それらが知る又は「見る（see）」というネットワークビュー２２のピースを挿入しているコントローラによって組み立てられ、その結果の現在の複合したネットワークビュー２２は、すべてのコントローラと共有されてもよい。ある特定の実施形態において、複合したネットワークビュー２２は、それぞれのコントローラの上にキャッシュされた状態にされ、そして、複合したネットワークビュー２２のアップデートがあるとき、アップデートされる。例えば、コントローラに関するキャッシュは、ルーティングアプリケーションによって維持されてもよい。複合したビュー２２はシングルサーバ上に格納される必要がなく、そしてそれが複数のサーバに渡って拡張された分散ハッシュテーブル（「ＤＨＴ」）に容易にストアされることができ、１つ又はそれ以上のコントローラにホストとして仕えてもよい。
【００４５】
ルーティングアプリケーション３５４は、好ましくは、ネットワーク上で利用可能な、及び／又はアクティブなパスを計算する。パスは、リンク変更の上に徐々にアップデートされる「動的な全てのペアの最も短いパス（dynamic all-pairs shortest path）」アルゴリズムを使って計算されてもよい。他のパスの計算は、適切に又は所望に使われてもよい。コントローラがルーティングを必要とするフローを受けるとき、例えば、パケット及び／又はフローによって識別されるように、ソースとデスティネーションのメディアアクセスコントロール（「ＭＡＣ」）アドレスが接続されている物理的なポートに基づいて、コントローラはルートを決定又は選択してもよい。ルーティングアプリケーション３５４は、例えば、フローがパスしなくてはならない１つ又はそれ以上の中間ノード（intermediate node）の識別（identification）を含むパスについての制約の数を受け入れることができる。１つの例において、パスはマルチホップDjikstraアルゴリズム（a multi-hop Djikstra algorithm）を使って要求に従って計算されることができる。ルーティングアプリケーション３５４は、標準的なテクニックを使ってマルチパス（multipath）とマルチコスト（multicast）パスを計算することができる。多数のパスの計算は、パスの間の重複の程度がコントロールされ得るように、制約として、さまざまな程度のディスジョイントネス（disjointness）を含むことができる。データフローのために計算されたパスを有することにおいて、ルーティングアプリケーションは、計算パスを実行するために、１つ又はもっと多くのネットワークエレメントの転送動作の変更を起こしてもよい。
【００４６】
トポロジディスカバリアプリケーション３６０は、ＬＬＤＰパケットをノードとリンクレベルネットワークトポロジを検出するために使うことができる。それぞれのスイッチポートから固有のＬＬＤＰパケットを送ること及びそのようなパケットの受理の上に接続されたポートを決定することによって、検出は達成され得る。この情報は、一般的にコントローラに内部でストアされて、そしてルーティングコンポーネントを含む複数のＮＯＸコンポーネントによって使ってもよい。トポロジディスカバリは、コントローラにおいて実行される又はスイッチにおいて実行されることができる。
【００４７】
ある特定の実施形態は、ディレクトリ統合をサポートする。図４の参照において、ＮＯＸは、ディレクトリマネージャコンポーネント４２０を通して１つ又はそれ以上のローカル又はリモートディレクトリサービス４３０、４３２、４３４、４３６への抽象的なインターフェイスを提供してもよい。ＬＤＡＰ４３２又はＡＤ４３０のようなディレクトリサービスは、ユーザ、ホスト、グループ及びサービス名を含むネットワークリソースに関する情報を構成する。ネットワークでユーザ、ホスト又はスイッチを認証することを要求されたクリデンシャル（credential）を保守する「認証ストア（authentication stores）」として、ディレクトリサービス４３０、４３２、４３４、４３６は通常動作する。
【００４８】
ある特定の実施形態において、ディレクトリは、ユーザ、スイッチ及びホストを認証するために使われてもよい、そして、さらに、ユーザ、スイッチ及びホストの特徴に関して関連づけられたメタデータを供給するために使われてもよい。例えば、ディレクトリは、ユーザ及び／又はホストが所属するグループに関して情報を維持してもよい。発明のある態様によれば、アプリケーション４００、４０２、４０４は、ディレクトリマネージャ４２０でインターフェイスに書かれてもよく、そして、ディレクトリマネージャ基礎構造につながるディレクトリ特定のバックエンドを作ることによって、新しいディレクトリは加えられてもよい。一般的に、新しいディレクトリの付加は、アプリケーションへのいくつかの変更を要求しない。ディレクトリは、ＮＯＸが走っている同じデバイス上で格納及び動作されることができ、また、他のネットワークデバイスの上で格納及び動作されることができる。
【００４９】
ある特定の実施形態において、ＮＯＸディレクトリマネージャ４２０は複数のディレクトリへのインターフェイスを見せることができる。これらのインターフェイスは、そのインターフェイスを含んでもよく、そのインターフェイスは、ユーザ／ホスト／認証時間で受理されたスイッチクリデンシャルをアクセスする、スイッチ認証情報からスイッチ名を決定する、スイッチ及びポート番号を基にポート名を決定する、ホスト、スイッチ及び／又はユーザに関連する位置を決定する、ホストと関連する周知のＭａｃ及びＩＰアドレスを決定する、例えばゲートウェイ又はルータとして動作するかどうかについてホストのファンクションを決定する、ユーザ及びホスト間の関係を決定する、ディレクトリ又はディレクトリでエントリを追加／削除／変更する。
【００５０】
ある特定の実施形態において、ＮＯＸは、アドミッションコントロールポリシとアクセスコントロールポリシの両方を処理するポリシエンジンを構成する。アドミッションコントロールポリシは、ユーザ、ホスト、又はネットワークに加入するためのスイッチのために要求された認証を決定する。アクセスコントロールポリシは、どのフローがネットワークの使用を許可されるか、及びそのような使用の制限を決定する。図５は、ＮＯＸのコアコンポーネントと統合されたポリシコントロールの例を描写する。一般的に、ポリシコントロールは、トポロジディスカバリ、ルーティング、認証及びフローセットアップを行うために実行する他のＮＯＸアプリケーションに頼る。ポリシは、低レベルのルックアップツリーにコンパイルされてもよい、１つ又はそれ以上のファイルで宣言されることができる。ポリシは、フローベースのセキュリティ言語（「ＦＳＬ」）のような、特別な目的のポリシ言語で表現されることができる。コンパイルプロセスは、一般的に、ポリシファイルで使われた主要な名前の実在を検証するためのすべての利用可能な認証ストアをチェックする。
【００５１】
ある特定の実施形態において、スイッチエントが存在ないスイッチによってコントローラに転送されたパケットを含む、ＮＯＸによって受けられたパケット５００は、５０２で名前とグループが関連づけられたファーストタグが付けられる。名前とアドレスの間のビルディング情報は、主要な認証において得られることができ、そしてビルディング情報はロケータコンポーネントにストアされてもよい。もしビルディング情報がパケットに存在しないなら、ホストとユーザは本物と証明されていないと考えられる。ポリシエンジンは、本物と証明されていないホストとユーザをカバーする宣言されたルールを許してもよい。
【００５２】
ポリシルックアップツリー（policy lookup tree）は、ネットワークがタグを付けられたパケットをどのように処理するべきであるか決定してもよい。ある特定の実施形態において、ポリシルックアップはフローに適用されることができる制約を提供し、そして制約はポリシに準拠するパスを見つけるためにルーティングコンポーネントにパスされてもよい。もしポリシ制約で与えられたパスが存在しないなら、パケットは一般的にドロップされる。制約の例は全部のフローの拒否（denial）であり、そしてそれは１つ又はそれ以上のドロップされたパケットをもたらすであろう。
【００５３】
ルックアップツリーは、カスタムプログラムされたファンクション又は入力パケットに適用するためのアクションとしてのアプレットの使用を許可する。このようなファンクションは、例えばＣ＋＋とＰｙｔｈｏｎを含むいくつかの所望のプログラミング言語で作られたプログラマ又はコードによって作られてもよい。これらのカスタムプログラムされたファンクションは、種々の目的のために使われることができる、例えば、ある特定のファンクションが認証ポリシを増大させるために開発されることができる。１つの例において、ネットワーク上で許可される前に、アクセスポイントからすべて本物と証明されていないホストが８０２．１ｘを介して認証するように要求されることを、ルールは記載してもよい。発明のある特定の実施形態は、キャプティブＷｅｂポータル（captive web portal）にリダイレクションを介して、Ｍａｃベースのホスト認証、８０２．１ｘホスト認証及びユーザ認証を含んで、複数の異なった認証スキームをサポートする。
【００５４】
ある特定の実施形態で導入されたポリシコントロールの使用は、例の使用を通して最も良く理解されてもよい。例えば、一方向のフロー（「ユニフロー（uniflow）」）は８タプルによって特徴付けられる。
【００５５】
<usrc, hsrc, asrc, utgt, htgt, atgt, prot, request>, in which
usrc, utgt are source and target users, respectively,
hsrc, htgt are the source and target hosts, respectively,
asrc, atgt are the source and target access points, respectively,
prot is the protocol, and
request indicates whether a flow is a response to a previous flow.
ユニフローはアクセスコントロール決定マーカにインプットを構成する。ＮＯＸのためのセキュリティポリシは、すべての可能なユニフローを制約のセットと結び付け、そして、この例の目的のために、ユニフローが、許可され、否定され、明記されたホストを含むネットワークを通るルートをとるように要求されて（ユニフローは「中間地点（waypointed）」である）、ある特定の明記されたホスト（「中間地点」）を通過することを禁止されて、レート制限されることができる。
【００５６】
ポリシ評価エンジンは、フロー毎にチェックされなくてはならないルールの数を最小にするように意図されたデシジョンツリーのもとで構築されることができる。ツリーは、例えば、１０ディメンションスペースにおけるルールセットの簡潔な説明の結果、８つのユニフローフィールドとグループのセットに基づいてルールを分割してもよい。否定的なリテラルは、インデクサ（indexer）によって無視されて、そしてランタイムで評価されることができる。デシジョンツリーにおけるそれぞれのノードは、一般的に、ノードによって表されるディメンションのためにそれぞれの可能な値のために１つのチャイルドを有する。例えば、ｕｓｒｃを表しているノードは、ｕｓｒｃがサブツリーのポリシルールで拘束（constrain）されるそれぞれの値のために１つのチャイルドを有することができる。加えて、サブツリーのルールがノードによって示されたディメンションを拘束する場合は、それぞれのノードはポピュレーティングルール（populating rule）のために、「ＡＮＹ」チャイルドを含むことができる。デシジョンツリーにおけるそれぞれのノードは、そのチャイルドたちのそれぞれが一定の時間の近くで見つけ出すことができる保証するために連鎖されたハッシュテーブルを用いて実行されることができる。ツリーにおけるいくつかのポイント上に分岐するための１０のアトリビュートに関するデシジョンは、サブツリーのルールセットを最も広く分割するディメンションを見つけることがベースとされてもよい。例えば、それぞれのチャイルドノードはサブツリーでＡＮＹルールの数を足すとき、ディメンションはルールの平均の数を最小にするために選択されてもよい。
【００５７】
ある特定の実施形態において、グループメンバーシップは認証の間に計算されることができる。Ｇ（ｓ）はユニフローのソースが属するすべてのグループを示すために使われることができ、そしてＧ（ｔ）はユニフローのターゲットが属するグループを示すために使われることができる。いくつかの与えられたユニフローに関係するすべてのルールを見つけるために、複数のブランチがいくつかの与えられたノードに従うように、標準的なデシジョンツリーアルゴリズムは変更されてもよい。１つの例において、ＡＮＹのブランチは常に後に従われ、そして、枝がソースグループ及びターゲットグループに分けられたブランチに関して、ユニフローのＧ（ｓ）及びＧ（ｔ）に属するすべてのチャイルドたちはそれぞれ後に従われる。
【００５８】
図６は、ＮＯＸの中でホスト認証のためにコントロールフローの例を描写し、そして、ホストを認証するとき、これらの構造のコンポーネントがどのように一緒に働くか例示する。ステップ６００において、パケットがスイッチからＮＯＸによって受け取られ、そしてパケットインメッセージがスイッチとパケットが受け取られた上であるイッチポートを示す。ステップ６０２において、ロケータコンポーネントは、もしホストが認証したなら決定する入力ポート、ＭＡＣアドレス及びＩＰアドレスを使う。ステップ６０３において、もしホストが認証されたなら、ロケータは調べ（look up）、そして高レベルの名前とそのホストのグループ名を加える。しかしながら、もしホストが認証されなかったなら、ロケータはステップ６０４において「本物と証明されていない」ホスト名を使う。
【００５９】
ステップ６０６において、ロケータコンポーネントはポリシルックアップコンポーネントにフローと関連づけられた名前をパスする。ステップ６０８において、コンパイルされたネットワークポリシを維持するポリシルックアップは、ネットワークアドレスと高レベルの名前に基づいてパケットがどのように処理されるべきであるか明示する。ポリシは、使われるべき認証メカニズム６０９を明示し、そして本物と証明されていないホストからのパケットは示されたサブシステムにパスされる。例えば、パケットは、８０２．１ｘ認証のためにパス、又は、登録されたＭＡＣのためにチェックしてもよい。ある特定の実施形態において、プロトコルの特定の認証エクスチェンジを実行することに関して、認証サブシステムは責任がある。ホストがうまく認証した度に、認証したとして、アドレスがホストに関連したことを認証サブシステムはマークをする。このホストからのすべての次のパケットは、そのホストに関連した名前及びグループでラベルされるであろう。ステップ６１０において、認証されたホストからパケットに適用された制約を、ポリシは明示する。もしフローが許されるなら、パケットはルーティングコンポーネントステップ６１１にパスされ、そしてそれはポリシに従っているルートを決定して、そしてネットワークでそのルートを準備するであろう。さもなければ、パケットはステップ６１２においてドロップされることができる。
【００６０】
ポリシルールを書いて、そして実施するとき、ユーザが一般的にポリシをルールのコレクションとして書いて、そしてポリシを編集する。コンパイラは、シンタックス（syntax）をチェックして、そして配置されたディレクトリの１つで主要な名前が存在することを確かめてもよい。コンパイラはポリシルールを低レベルの内部のフォーマットに編集する。例えば、「ＯＲ」が複数のルールの中に拡張されることによって、コンパイルは正規化（canonicalization）及びルール拡大を含むことができる。コンパイラは、パーシステントストレージ（persistent storage）でコンパイルされたポリシをセーブしてもよく、そして全部のポリシをルックアップツリーに作り上げる。
【００６１】
ある特定の実施形態は、インバンドコントロール及びコントローラディスカバリにシステムと方法を提供する。データトラフィックと同じ送信メディアを共有することによって、インバンドコントロールシステムはスイッチとコントローラの間にコントロールトラフィックを伝達する。別個のコントロールネットワークの必要を取り除くことによって、インバンドコントロールの使用は物理的なネットワークセットアップと構成を単純化することができる。スイッチと及びコントローラは、インバンドコントロールによって使われたある特定のファンクションをサポートするために設定及び／又は変更されてもよい。一般的に、コントローラからの助けなしに、スイッチは、コントローラへの接続を見いだして、そして確立する能力を備えられる。スイッチは、通信ループを避けるために、コントロールトラフィックとデータトラフィックを区別することができなければならない。さらに、ポリシシステムは、インバンドの通信オペレーションと通信を認めるように設定されなくてはならない。
【００６２】
ある特定の実施形態において、コントローラの特定の状態の優先的な知識を持たないでスイッチは自動的にコントローラを発見することが可能である。例えば、スイッチが自動的にコントローラを検出して、そしてネットワークに接続する上でコントローラに安全なチャネルを確立してもよい。セキュリティを意識するアプリケーションにおいて、最初のＳＳＬ接続を安全にするために信頼できるパスの上にスイッチは接続され得る。
【００６３】
デフォルトによって、それらがコントローラに接続を確立したときだけ、スイッチは発見パケットを転送する。スタートアップにおいて、コントローラをサーチするためのすべてのポートからＤＨＣＰの要求をスイッチが公表してもよい。スイッチは、ＤＨＣＰの応答を受け取るそれからポートの上にあるためにコントローラを仮定する。ＤＨＣＰの応答は、スイッチのためのＩＰアドレス、コントローラが聞いているＩＰアドレス及びポート数を含むであろう。スイッチは、ＤＨＣＰが受け取られたポートからコントローラにコントロール接続を確立することができる。一般的に、スイッチは、他のスイッチからコントローラまで前方へトラフィックをコントロールしないであろう。周知のコントローラに又はからそれが送られていると決定することによって、コントロールトラフィックが検出される。
【００６４】
ある特定の実施形態において、オープンフローのような標準ベースのプロトコルを使って、スイッチのようなネットワークエレメントをＮＯＸはコントロールすることができる。オープンフローのアブストラクションにおいて、それぞれのエントリがヘッダ及びパケットマッチングが実行されるためのアクションを含んでいるフローテーブルによってスイッチは表される。オープンフローと他のそのようなプロトコルは、サポートされ、そして発明のある特定の態様に従って組み立てられたシステムに拡張されてもよい。
【００６５】
従来のネットワークスイッチは、マネージメントタスクのための低電力で動くＣＰＵと、ラインレートスイッチングを実行するスイッチオンアチップ（switch-on-a-chip）（「ＳｏＣ」）のような特別な目的のハードウエアをしばしば使用する。多くのＳｏＣｓは、ファイアウォールを実行するために、ＡＣＬｓに対する組み込みのサポートを有する。これらのＡＣＬｓは、レイヤ２から４で一般的にマッチすることをサポートして、そしてワイルドキャット（wildcarding）フィールドをサポートしてもよい。管理ＣＰＵはスイッチをトランジットしてすべてのパケットを受け取ることができないので、ＳｏＣｓはラインレート処理をサポートするよう意図され、しかし、管理ＣＰＵは一般にリモートＳｏＣｓの上にＡＣＬｓを配置することが可能である。ＳｏＣｓの上のＡＣＬｓは、一般的に、オープンフローのインターフェイスに非常に類似している＜ｈｅａｄｅｒ：ａｃｔｉｏｎ＞インターフェイスをサポートする。それぞれのＡＣＬエントリのために必要とされるマッチフィールドとアクションの望ましいセットは指定されなくてはならない。ＡＣＬ実行はまた一般的にパケットにマッチする厳格なオーダの決定を認め、そしてファーストマッチングエントリ関連されたアクションはパケットに対して実行される。
【００６６】
たいていのＳｏＣｓは、１つ又はそれ以上の物理的なポートを通して、パケットをドロップすること、管理ＣＰＵに送ること、転送することを含む複数のアクションをサポートする。いくらかのプラットホームの上に、ＡＣＬｓアクションがエントリと関連したカウンタを増加させること及びパケットヘッダを変更することをサポートする。しばしばスイッチは、より高いプライオリティのそれにマッチしなかったいくつかのパケットにマッチした最も低いプライオリティルールで構成される。一般的なファイアウォールに関して、アクションは、パケットをドロップさせる（デフォルを否定する）又は通過させる（デフォルトを許可する）。
【００６７】
管理ＣＰＵは、ＮＯＸによって構成されたローカルなソフトウェアテーブルを調べてもよい。もしマッチしないエントリが見つけ出されるなら、パケットはコントローラに転送されてもよい。ＮＯＸは、オープンフローのようなプロトコルを用いて、フローエントリを付加又は削除するコマンドを送ることができる。スイッチ管理ＣＰＵは、ＳｏＣによってサポートされたＡＣＬｓの能力を利用するためにプログラムされることができ、そしてＳｏＣ、ＡＣＬｓのフレキシビリティと能力に基づいてＳｏＣ、ＡＣＬｓテーブルを配置することができる。管理ＣＰＵは、ＮＯＸの要求を処理するために必要なＡＣＬテーブルを配置してもよく、フローテーブルで存在する十分なスペースが提供される。 
管理ソフトウェアは、一般的に、ネットワークオペレーションに影響を与えるかもしれない複数の要因と問題に気付くように設定される。管理プロセッサは、より低いプライオリティでフローエントリの前により高いマッチングプライオリティのフローエントリが見つけられ及び処理されることを保証し、そして、それに応じてＡＣＬテーブルでエントリのアレンジメントを再設定してもよい。もしＮＯＸによって要求されたエントリの数がＡＣＬテーブルで利用可能なスペースを超えるなら、プロセッサはそれ自身のソフトウェアテーブルにエントリを超過又は追加でストアしてもよい。ローカルな使用において、プロセッサテーブルはＡＣＬｓにストレージの注意深い任務を要求してもよく、そして、いくつかの場合には、フローエントリプライオリティの調整が作用する。ＡＣＬテーブルでマッチするエントリは、管理ＣＰＵに送られないであろう、そしてそれでソフトウェアテーブルでマッチを見いださないであろう。そのために、このようなフローのパフォーマンスにネガティブな影響を与えるのを避けるために、プロセッサソフトウェアテーブルにエントリを置くことに関して、管理ソフトウェアはルールで構成されてもよい。さらに、スイッチハードウエアが２又はそれ以上のＳｏＣｓを構成する場合、管理ソフトウェアは、チップの入力及び出力の間を移動するパケットを許すために、スイッチで２つの場所でＡＣＬｓをセットしてもよい。
【００６８】
従来のＡＣＬｓは、一般的に、期限切れのコンセプトを有しないが、ＮＯＸによって挿入されたフローエントリは、一般的に、期限切れのメカニズムが提供される。ＡＣＬｓにおけるこの矛盾をサポートするために、管理ＣＰＵ上で動いているソフトウェアは、ＡＣＬエントリがトラフィックとマッチし続けるかどうかを記録するように設定されてもよい。他のフォワードへの追加におけるエントリに関連されたカウンタを増加するアクションとＮＯＸによって設定されたドロップアクションを設定することによって、このような追跡は達成されていてもよい。ソフトウェアは、それからＡＣＬカウンタをポールし、そしてパケットが最後のポールインターバルからエントリとマッチしたかどうかチェックしてもよい。もしマッチしないパケットがエントリのための動作時間の所定の期間に関して監視するなら、エントリはＡＣＬテーブルから取り除かれてもよい。
【００６９】
発明のある特定の態様によって構成されたシステムは、包括的なコントロール、スケーリング、バックワードの互換性、自動設定及びバーチャル環境を含むある特性を示す。
【００７０】
包括的なコントロール特性に関して、図７は、ネットワークを通してパケットのパスを指示できるフローエントリを示し、そして特にパスがフローエントリのセットによって指示されるヘッダＨを持っているパケットのパスを描写する。ある特定の実施形態はネットワークで処理するフローの方法に関して完全なコントロールを有するシステムを構成する。これらのシステムは、フローへのサービスを拒否する、フローでいくつか又は全てのパケットをドロップする、ネットワークエレメントで適切なフローエントリを挿入することによってネットワークを通してパスを選択する、フローエントリを用いて選ばれたサービスの品質（「ＱｏＳ」）を可能にする、挿入することによって及び難しいパケット検査又はデータロギングが可能なエレメントのような、所望のサービスを供給するネットワークエレメントにつながるパスのピッキングによるパスに沿ってサービスを挿入することによって、暗号化、カプセル化、アドレス変換、限界率（rate-limiting）及びステートフルトンネリング（stateful tunneling）のような種々のパケット単位の動作をネットワークエレメントに実行させる、ことを含む種々のアクションを通してコントロールを実行してもよい。サービスに挿入する能力はアブストラクションで現在サポートされていないアクションを実行するためのシステムを認めるから、ネットワークデバイスをコントロール又はモニタするために使われる、いくつかのアブストラクションの制限によってシステムが拘束されないことを、この後のコントロールオプションは明示する。
【００７１】
ある特定の実施形態において、マネージメント決定は、種々のファクタがベースとされ、それは、ソース及び／又はデスティネーションユーザアイデンティティ、役割、ロケーション、グループメンバーシップ、及び他の特質；ソース及び／又はデスティネーションホストアイデンティティ、役割、ロケーション、グループメンバーシップ、及び他の特質；ローカル及び又は他のマネージメントアプリケーションによって種々のネットワークイベント及び／又は通知を含むグローバルなネットワークコンディション、；日付と時間を含む。マネージメント決定はフローの中間で変更されることができる。例えば、もしネットワークコンディションが変化するか、又は何か他のネットワークイベントが検出されるなら、フローが難しいパケット点検のサービスによってルートが変更され、及び／又は追加の検査を受けさせられることができる。
【００７２】
ある特定の実施形態において、ＮＯＸは極めて大きいシステムサイズにスケーリングされることができる。これらの実施形態において、デザインのある特定の一貫性必要条件（consistency requirement）がしっかりとコントロールされている必要があてもよい。一般的に、指定されたポリシとともに、コントロール決定をするために、アプリケーションはしばしばネットワークビューからのデータだけを使うから、ネットワークビューだけがコントローラの至る所で連続して（consistently）使われる必要がある。個別のパケット又はフローの状態についての情報がないことは一般的にこれらのコントロール決定をさせることに使われるので、コントローラがどのフローを受けるかにかかわらず、フローと関係があるコントロール決定における一貫性が達せられるであろう。
【００７３】
ある特定の実施形態において、ネットワークビューは新しいフローが到着するレートと比較して非常にゆっくりと変化する。これは、コントローラの大きいセットのグローバルな一貫したビューをネットワークビューが提供することを可能にする、そしてそれは、ネットワークでフローのサブセットのケアをそれぞれ行い、システムに並列に多くのコントローラを利用させることを可能にし、それによってシステムがスケーリングされることを可能にする。システムのスケーリングを制限するファクタはネットワークビューの変更のレートである。生の計算の必要条件に関して、シングルサーバがたいていの現在の企業ネットワークのために容易に変更のレートを処理することができる。
【００７４】
さらに、一般的に、パケットアライバルとフローアライバルを含むイベントのような、速いタイムスケールの上で起こるイベントのために、ＮＯＸは並行して使うことができる。パケットアライバルはグローバルなパケット単位の調整なしで一般的に個別のスイッチによって処理され、そしてフロー開始はグローバルなパケット単位の調整なしでコントローラによって処理されることができる。フローがどのコントローラにでも送られることができ、それで、コントローラプロセスを処理しているサーバをさらに加えることによって、システムの容量は増やされることができる。ネットワークビューのグローバルなデータ構造は、主として非常に大きいネットワークのために保守されることができるほど十分ゆっくりと一般的に変化する。レジリエンス（resilience）に関して、しかしながら、ネットワークビューは複製の小さいセットの上に維持されてもよい。
【００７５】
発明のある特定の実施形態は、後進的な従来のシステムと互換性があるコンポーネントとエレメントを構成する。発明の態様によって構成されたシステムは、ネットワークで付加されたデバイスの一部において特別なアクションを要求されない。例えば、それらが標準的なイーサネット（登録商標）ネットワークに付加されるように、イーサネット（登録商標）の接続されたデバイスが動作することができ、よって、変更を要求されない。発明の態様によって構成されたシステムは、ここで述べた類似の機能性と共に、オープンフローをサポートしないネットワークエレメント又は他の標準ベースのインターフェイスと共存することができる。これらの非オープンフローのネットワークエレメントは通常パケットを転送するであろう、そしてシステムは体的なネットワーク構造にそれらを単に組み込むことができる。しかしながら、システムはこれらの変更されていないネットワークエレメントがどのように作用するかに関してコントロールさせることが可能でなくてもよく、しかし、それらが従うネットワーキング標準（例えば、標準的なイーサネット（登録商標）など）に従ってこのようなコンポーネントを特徴づけてもよい。
【００７６】
ある特定の実施形態は、ネットワークとその構成要素の自動設定をサポートする。構成は、役割、特質及びグループメンバーシップのようなネットワークエンティティについての必要な情報を取り込んでもよいシステムディレクトリを使って促進されてもよい。管理目的は、１つ又はそれ以上のマネージメントアプリケーション又はシステムファイルで明瞭に表現されたポリシのセットを通して獲得されてもよい。システムに入力している新しいネットワークエンティティは自動的に検出されることができ、そして適切なポリシは新しいエンティティで通信に適用されることができる。同様に、システムに入力している新しいネットワークエレメントは自動的に検出されることができ、そしてフローエントリ又は他のマネージメント指令がシステムポリシのとおりに新しいエレメントに送られることができる。従って、しっかりとコントローラと通信するために必要な暗号キーでエレメントを装備するときを除いて、一般的に個別のネットワークエレメントの明示的な構成の必要がない。
【００７７】
ある特定の実施形態は、バーチャルマシン（「ＶＭ」）とバーチャルスイッチを持っていてバーチャル環境をサポートする。ＶＭはネットワークエンティティのフォームであり、そしてバーチャルスイッチはネットワークエレメントのフォームである。もしそれぞれのサーバ又はネットワークエレメントがそのバーチャルスイッチの上にオープンフローのようなアブストラクションをサポートするなら、システムは正確にポリシを強制する。ＶＭが動作する又は同じサーバの上に同一場所に配置される（co-locate）場合にこれは正確に維持し、そして、オープンフローの実施（implementation）と比べて、サーバの上に特別な機能性を必要としない。
【００７８】
ある特定の実施形態は、トラブルシューティングとフォレンシック（forensics）のために使われるかもしれないネットワーク状態のヒストリを維持する。システムは、到着及び出発のタイミングに加えて、フローの完全なリストとパケット及びバイトのようなそれらの統計値に加えて、ネットワークビューのヒストリの記録を保持する。時間内に任意のポイントで、オペレータにネットワークビューの状態を見ることをこれは許す。例えば、現在の時間の２年又は２時間前にネットワークの完全なビューをオペレータは見てもよい。ヒストリのビューから、オペレータがどのユーザとホストがパケットを送ったか決定してもよい。すべての通信のヒストリは、定義された一定の時期にわたって起きたネットワークイベントを決定するために使われることができるネットワークトラフィックのフローレベル分析をオペレータに実行できるようにする。それでヒストリは、電子メール送信、ホストリブート及びターゲットイベントの先の及び／又は次のイベントを明らかにするかもしれない。ヒストリのビューは、一般的に、個別のユーザに過去のイベントの明確な帰属を認める高レベルの名前と低レベルのアドレスの間のビンディングのヒストリを含む。それで、誰がファイルを転送したか、そして誰がある時間に選ばれたホストにログインしたかは決定されることができる。この情報は、ネットワークのトラブルシューティングのために、及び過去のネットワークトラフィックにおいて異常又は不審な動作の種々のフォームを検出するために使われることができる。ＮＯＸは、このようなトラブルシューティングとフォレンシックの分析をサポートする追加の情報を提供することができる。
【００７９】
ある特定の実施形態は、拡張されたルーティング機能を提供し、そしてフローがネットワークを通してとるパスのルーティングの上に完全なコントロールを有するシステムを提供する。コントローラは、ネットワークを通ってフローからのパケットを任意のパスで運ばせるであろうフローエントリのセットをセットアップすることができる。特に、パスは、シングルの「スパンニングツリー（spanning tree）」から選ばれる必要がなく、そして同じソースとデスティネーションの間に行っている異なったフローが異なったパスをとることができる。さらに、マネージメントアプリケーションは、いつでも、フローエントリの新しいセットを単に挿入することによって、フローのルートを変更することができる。これは、バランスをとってロードを達成するルートを選択する、ショートカットされたパスを使う、そして速いフェイルオーバ（failover）をサポートするなどのマネージメントアプリケーションを許す。１つ又はもっと多くのネットワークでのリンクが過度に利用されるとき、ロードバランスを用いてもよい。アプリケーションは、オーバロードされたリンクをトラバースするフローのために新しいパスを選ぶことができる、又は新たに到着しているフローのためにそのリンクを避けるパスを選ぶことができる。特に、ルーティングは、ネットワークロードを広げるために多数のパスを利用することができる。
【００８０】
ショートカットされたパスは階層的（hierarchical）なパターンの後に続く必要がないルートを提供する、そしてそこですべてのフローは主要な集合体スイッチを通して移動しなくてはなりません。その代わりに、中心の階層を避けるパスである「ショートカット」をパスが選択することができる。速いフェイルオーバは、故障の発見上における故障したリンクをトラバースしたそれらのパスだけのルートを変更するために使われる。これは故障の間に機能するためにたいていのフローを認める。必要である場合は、コントローラが故障したリンクを通知されるとすぐに、フローのリルーティングは達成され得る。
【００８１】
ある特定の実施形態は、改善されたパケットインターセプションをサポートし、そしてホストスリープのような機能と関連づけられる。動作中で使わないとき、従来のコンピュータは、スリープ又はさもなければ電力セーブのための能力をサポートしてもよい。しかしながら、これらのパケットがＣＰＵによって処理される必要があるから、これらのネットワークインターフェイスカード（「ＮＩＣ」）におけるパケットのアライバルは、電力低減特性を妨害することができる。しばしば低いデューティ時の間に、トラフィックのほとんどすべては、デスティネーションホストに有用な情報を伝えず、そして重要なアクションがホストによってとられることが要求されない、ネットワークチャッタ（network chatter）である。本発明の態様によれば、コントローラは、これらのパケットを転送しないことを決めることができ、そして所望のホスト（intended host）に代わってパケットを処理してもよい。例えば、ネットワークコントローラ又はその代理として動作しているネットワークエレメントは、デスティネーションホストがネットワークと連絡をとって残存するかどうかをつかむために追及するある特定のネットワーク要求に応答することができる。これは、その減少した電力モードでホストを維持することを可能にするであろう。しかしながら、コントローラは、ホストに適切に応答することを可能にするために、セキュアシェル（「ＳＳＨ」）トラフィック、警告、問合せ及び他の要求のような、重要なトラフィックを認識及び転送することができる。それらを転送するそしてあるいはフローエントリを確立する前に、コントローラがパケットを点検することによって、どのパケットを転送するかについて、ネットワークマネージャはインテリジェントな決定をすることができる。
【００８２】
ある特定の実施形態はコントローラを守ることができ、そしてサービス否定（「ＤｏＳ」）からのネットワークビューは攻撃する。コントローラ及びネットワークビューに対するフラッディングサービスの否認攻撃を妨げるために、システムは個別のネットワークエレメント及びエンティティがコントローラとシステムの他のエレメントに向かってパケットを送ることができるレートを制限することができる。これは、重大なネットワークとシステムリソースを保護することができる。コントローラがリソースオーバーロードを検出して、そして制限するべき適切なフローエントリを修正する、又はオーバーロードリソースへのアクセスを妨げることができるので、この保護は可能である。
【００８３】
発明の前述の説明は、実例であり、そして限定しないことが意図される。例えば、発明を理解できるであろうこれらの技術で熟練した人たちは、上述した機能（functionalities）及び性能（capabilities）の種々の組み合わせで実施されることができて、そして上述よりも少数又は追加のコンポーネントを含むことができる。発明のある特定の追加の態様及び特徴は、以下でさらにセットされて、そして、現在の公表によって教えられた後で、これらの技術で熟練した人たちによって理解されるであろうように、もっと多くの上記の詳細で記述された機能とコンポーネントを使って得られることができる。
【００８４】
発明のある特定の実施形態は、（ネットワークアドレス翻訳、暗号化、カプセル化、トテートフルトンネリング及び種々のサービスの品質フォームを含めて）グローバルなルーティングと他の転送動作をコントロールするためのシステム及び方法を提供する。これらの決定は、フロー開始のようなリアルタイムで各フローに関して個々にさせることができ、（ホスト、ユーザ、サービスなどのために）高レベルの名前に関して表現された一般的なポリシをベースにし得る。これらのポリシの実行はネットワークトポロジから独立でき、そして、実行はユーザとホストが動く及びネットワークが変化するときは正当を維持する。発明のある特定の実施形態は、たいていのコマーシャルスイッチングチップで備えられたＡＣＬ機能を使って実行されることができる。
【００８５】
発明のある特定の実施形態は、包括的なネットワークビューを維持するためのシステム及び方法を提供する。これらの実施形態のいくつかにおいて、ネットワークビューはネットワークエレメントのトポロジを構成する。これらの実施形態のいくつかにおいて、ネットワークビューは、エンティティのロケーション、ユーザ、サービス及びホストを含むエンティティを識別する。これらの実施形態のいくつかにおいて、ネットワークビューのヒストリは、ネットワークフローのヒストリとともに、持続される。
【００８６】
発明のある特定の実施形態は、ネットワークエレメントをコントロールするために、ネットワークビューへのアクセス、フロー開始を含むネットワークイベントの通知、ネットワークビュー及びコントロールメカニズムの変更を高レベルの言語に与える集中化されたプログラムインターフェイスを提供する。これらの実施形態のいくつかにおいて、システムはグローバルなルートのリアルタイムのフロー単位のコントロールを提供する。これらの実施形態のいくつかにおいて、システムはネットワークを通してフローのパスを、そしてネットワークエレメントによってフローの処理をコントロールする。これらの実施形態のいくつかにおいて、システムは、グローバルな一貫性を必要とするネットワークビューだけで、一貫性必要条件の厳密な分類を通して拡張可能である。これらの実施形態のいくつかにおいて、フローに関しての決定はグローバルなネットワークビューとフロー状態に基づく。これらの実施形態のいくつかにおいて、これは、ローカルからネットワークビューがゆっくりと変化することを除いて、急速にパラメータが変化することを除いて、一貫性を分類することを許す。これらの実施形態のいくつかにおいて、フロー状態は複数のコントローラのそれぞれによって独立して処理される。
【００８７】
発明のある特定の実施形態は、ネットワークを自動設定するための方法を提供する。これらの実施形態のいくつかにおいて、自動設定は新しいデバイス及びネットワークに接続されたサービスを自動的に検出することを含む。これらの実施形態のいくつかにおいて、自動設定は自動的にアップデートしているフローエントリ及び他の構成の情報を含む。これらの実施形態のいくつかにおいて、フローエントリ及び他の構成の情報のこの自動的なアップデートは、種々のネットワーク変更に直面して保守されるグローバルな指令（「ポリシ」）の実行を許す。
【００８８】
発明のある特定の実施形態は、低電力モードでホストを維持することを可能として、パケットのインテリジェントなインターセプションのためにサポートすることを提供する。
【００８９】
発明のある特定の実施形態は、ＶＭを移行させるためのサポートを含むバーチャル環境に関してサポートを提供する。これらの実施形態のいくつかにおいて、ここで多数のＶＭはある特定のデバイスと結び付けられる、システムはこれらの共同レジデント（co-resident）のＶＭｓの間で通信のコントロールを可能にする。これらの実施形態のいくつかにおいて、インバンドのコントロールがデバイスを管理するために使われる。これらの実施形態のいくつかにおいて、スイッチは、グローバルな機能を提供するために、ＡＣＬ機能を使って、コントロールされる。
【００９０】
発明のある特定の実施形態は、シングルシステムを通して多数のネットワークを管理及び安全に保つためのサポートを提供する。
【００９１】
発明のある特定の実施形態は、異なった管理上の権限にコントロールを分割することができるようにして、シングルネットワーク基礎構造の多数のマネージメントシステムシェアコントロールを持つためのサポートを提供する。
【００９２】
発明のある特定の実施形態は、ネットワークを管理するためのシステムと方法を提供する。これらの実施形態のいくつかは、ネットワークの現在の状態のネットワークビューを維持することと、ネットワークの状態の変更に対応しているイベントを発表することと、そしてネットワークビューとイベントの１つに基づいてネットワークエレメントの１つを設定することとを具備し、ネットワークの現在の状態はネットワーク構成要素とネットワークトポロジを特徴付け、ネットワーク構成要素はネットワークエンティティ及び現在アドレス可能なネットワークエレメントを含む。これらの実施形態のいくつかにおいて、ネットワークエンティティはネットワークユーザを含む。これらの実施形態のいくつかにおいて、ネットワークビューは１つ又はそれ以上のネットワークマネージメントアプリケーションによってアクセスされる。これらの実施形態のいくつかにおいて、ネットワークの現在の状態はネットワーク構成要素のロケーションを含む。これらの実施形態のいくつかにおいて、ネットワークの現在の状態はネットワークでさらにデータフローを特徴づける。
【００９３】
これらの実施形態のいくつかにおいて、ネットワークエレメントの１つを構成することはネットワークトポロジを変えることを含む。これらの実施形態のいくつかにおいて、ネットワークトポロジを変えることは、複数のネットワークエレメント、データフローの１つ又はさらに多くに対応しているルーティング情報にルーティング情報を提供することを含む。これらの実施形態のいくつかは、さらに前のネットワークビューのヒストリを保存することを含む。これらの実施形態のいくつかにおいて、ヒストリでのそれぞれの前のネットワークビューは、指定された時間でネットワーク状態を記録し、指定された時間より前に検知されたイベントをさらに記録する。これらの実施形態のいくつかにおいて、指定された時間はスケジュールによって定義され、そしてイベントのそれぞれの発生はヒストリで１つ前のネットワークビューだけで記録される。これらの実施形態のいくつかにおいて、指定された時間はイベントの発生に対応する。これらの実施形態のいくつかにおいて、データフローのそれぞれは、ネットワークエレメントの１つ又はさらに多くの転送行為と関連付けられ、そしてネットワークビューに基づいて転送行為のいくつかをコントロールすることをさらに含む。
【００９４】
これらの実施形態のいくつかにおいて、転送行為のいくつかをコントロールすることは、イベントの１つにすぐに反応する転送行為の少なくとも１つを変更することを含む。これらの実施形態のいくつかにおいて、転送行為のいくつかをコントロールすることは、ネットワークトポロジを変えることに続く転送行為の少なくとも１つを変更することを含む。これらの実施形態のいくつかにおいて、転送行為の少なくとも１つを変更することについてのステップは、ネットワークコントローラによって行われる。これらの実施形態のいくつかにおいて、ネットワークトポロジを変えることは、新たにネットワークに挿入されたデバイスを自動設定することを含む。これらの実施形態のいくつかにおいて、デバイスを自動設定することは、それぞれの自動設定されたデバイスに少なくとも１つのＡＣＬを供給することを含む。これらの実施形態のいくつかにおいて、データフローのそれぞれは１つ又はそれ以上のネットワークエレメントの転送行為に関連付けられ、そしてデバイスを自動設定することはネットワークビューに基づいて転送行為の少なくとも１つを変更することを含む。これらの実施形態のいくつかにおいて、ネットワークエレメントの１つを設定することはネットワーク管理システムによって実行される。これらの実施形態のいくつかにおいて、イベントのいくつかは、ネットワークの現在の状態の比較とネットワーク管理システムによって整備されたネットワーク状態のヒストリに基づいて、ネットワーク管理システムによって生成される。
【００９５】
これらの実施形態のいくつかにおいて、ネットワーク管理システムは、ネットワークの現在の状態を記述しているネットワークビューを構成する。これらの実施形態のいくつかにおいて、ネットワークの状態は、現在のネットワークトポロジ、ネットワーク上の複数のネットワークエレメントのロケーション、ネットワーク構成要素のロケーション、ネットワークの少なくとも１つのユーザとネットワークマネージャを含むネットワーク構成要素を含む。これらの実施形態のいくつかにおいて、ネットワークマネージャは、ネットワーク状態に基づいてネットワークエレメントを構成する。これらの実施形態のいくつかにおいて、ネットワークビューはネットワーク構成要素によって提供された情報から生成され、そしてネットワークビューの一部はネットワーク構成要素のいくつかによってアクセス可能である。
【００９６】
これらの実施形態のいくつかにおいて、ネットワークエレメントはスイッチを含む。これらの実施形態のいくつかにおいて、ネットワークエレメントはルータを含む。これらの実施形態のいくつかにおいて、ネットワークマネージャは複数のネットワークエレメントの至る所に分散される。これらの実施形態のいくつかにおいて、ネットワークエンティティはネットワークを通して提供されたサービスを含む。これらの実施形態のいくつかにおいて、ネットワークエンティティはアプリケーションを含む。これらの実施形態のいくつかは、ネットワークマネージャの選択されたファンクションへのアプリケーションアクセスを提供しているネットワークオペレーティングシステムをさらに構成する。これらの実施形態のいくつかにおいて、選択されたファンクションはネットワークビューを含む。これらの実施形態のいくつかにおいて、選択されたファンクションはイベント通知機能を含む。これらの実施形態のいくつかにおいて、イベント通知ファンクションはネットワークトポロジに対する変更の通知を提供する。これらの実施形態のいくつかにおいて、イベント通知ファンクションは、ログインとログアウトイベントを含む、ユーザログイベントの通知を提供する。
【００９７】
これらの実施形態のいくつかにおいて、イベント通知ファンクションはフロー開始の通知を提供する。これらの実施形態のいくつかにおいて、ネットワークマネージャはネットワーク状態の変更に基づいてスイッチを再設定する。これらの実施形態のいくつかにおいて、スイッチはデータフローと関連付けられた新しい転送行為を確立するために再設定される。これらの実施形態のいくつかにおいて、スイッチはアクセスコントロールリストを用いて再設定される。これらの実施形態のいくつかにおいて、スイッチはオープンフローを用いて再設定される。これらの実施形態のいくつかにおいて、スイッチはオープンフローを用いて再設定される。これらの実施形態のいくつかにおいて、ネットワークマネージャは新たに付加されたネットワークエレメントに設定情報を検出及び自動的に供給する。これらの実施形態のいくつかにおいて、設定情報は１つ又はそれ以上のネットワークアドレスを含む。これらの実施形態のいくつかにおいて、設定情報は１つ又はそれ以上のルーティングテーブルを含む。これらの実施形態のいくつかにおいて、設定情報は１つ又はそれ以上のアクセスコントロールリストを含む。これらの実施形態のいくつかにおいて、設定情報はネットワークビューの一部を含む。
【００９８】
これらの実施形態のいくつかは、前のネットワーク状態のヒストリ、ネットワーク状態におけるヒストリ記録の変化、そしてネットワーク状態における変化を起こしたイベントをさらに構成する。これらの実施形態のいくつかにおいて、ネットワークの状態は、パケット分類、言語ビンディング、ネットワークエンティティのロケーション、データフローのルーティング情報とトポロジの１つ又はさらに多くをさらに含む。これらの実施形態のいくつかにおいて、ネットワークの状態は、データフローの状態に対応して情報をさらに含む。これらの実施形態のいくつかにおいて、ネットワーク構成要素は、それぞれのデータフローと関連されたネットワークエレメントによって維持されたそれぞれのデータフローの状態に対応しているネットワークエレメントと情報を構成する。
【００９９】
発明のある特定の実施形態はネットワークオペレーティングシステムを提供する。これらの実施形態のいくつかはネットワークの現在の状態を記述しているネットワークビューを構成し、ネットワークの状態は、現在のネットワークトポロジ、ネットワーク上の複数のネットワークエレメントのロケーション、ネットワーク構成要素のロケーション、ネットワークの少なくとも１つのユーザを含むネットワーク構成要素、ネットワーク構成要素とアプリケーションにアクセス可能なネットワークサービスのセットでインストールされたアプリケーションへのネットワークビューへのアクセスを提供しているプログラムインターフェイス、そして現在のネットワーク状態と関係がある情報へのアクセスを提供することを含む。これらの実施形態のいくつかにおいて、情報は、パケット分類、言語ビンディング、ネットワークエンティティのロケーション、データフローのルーティング情報とトポロジの１つ又はさらに多くを含む。
【０１００】
発明のある特定の実施形態はネットワーク接続を処理するためのシステムと方法を提供する。これらの実施形態のいくつかは、ネットワークでフローを識別することとソースからデスティネーションへデータを導くための１つ又はそれ以上のネットワークエレメントを構成することを含み、フローはデータのソースとデスティネーションを識別し、少なくとも１つのネットワークエレメントを設定することは、１つ又はもっと多くのネットワークエレメントでアクセスコントロールリスト（「ＡＣＬ」）を変更することを含む。これらの実施形態のいくつかにおいて、少なくとも１つのネットワークエレメントを設定することは、少なくとも１つのネットワークエレメントのためにＡＣＬを生成することをさらに含む。これらの実施形態のいくつかにおいて、少なくとも１つのネットワークエレメントはスイッチを含む。これらの実施形態のいくつかにおいて、スイッチはチップ上のスイッチ（「ＳｏＣ」）を含み、ＡＣＬを変更することについてのステップはＳｏＣでＡＣＬテーブルに生成されたＡＣＬを加えることを含む。これらの実施形態のいくつかにおいて、ＡＣＬテーブルはＳｏＣで存在する。これらの実施形態のいくつかにおいて、ＡＣＬテーブルはスイッチでプロセッサと結び付けられたストレージに存在する。これらの実施形態のいくつかにおいて、少なくとも１つのネットワークエレメントを設定することは生成されたＡＣＬに終了期間（expiration period）を供給することをさらに含む。これらの実施形態のいくつかにおいて、少なくとも１つのネットワークエレメントを設定することはＡＣＬに終了期間を供給することをさらに含む。
【０１０１】
これらの実施形態のいくつかにおいて、アクセスコントロールリストを変更することは、１つ又はもっと多くのネットワークエレメントにおいてＡＣＬテーブルでエントリの処理を再設定することを含む。これらの実施形態のいくつかにおいて、フローを識別することは、ネットワークの現在の状態のネットワークビュー、ネットワーク構成要素とネットワークトポロジを特徴づけているネットワークの現在の状態、ネットワークエンティティを含むネットワーク構成要素、及びネットワーク上で現在アクセス可能なネットワークエレメントを維持することを含む。
【０１０２】
発明のある特定の実施形態はネットワークトラフィックをインターセプトするためのシステムと方法を提供する。これらの実施形態のいくつかは、ネットワークに接続されたホストのスリープ状態を決定すること、ホストに向けられたデータ通信を点検するためのネットワークエレメントを設定すること、ホストによってアクションが要求されたデータ通信における情報の決定の上でホストにデータ通信の一部を転送すること、もしデータ通信がホストによってアクションを要求されないのならホストに代わって要求に選択的に応答することを含む。これらの実施形態のいくつかにおいて、ホストによってアクションが要求されている情報は１つ又はそれ以上の要求を含む。これらの実施形態のいくつかにおいて、ホストによってアクションが要求されている情報は１つ又はそれ以上の問合せを含む。これらの実施形態のいくつかにおいて、ホストによってアクションが要求されている情報は１つ又はそれ以上の警告を含む。これらの実施形態のいくつかにおいて、ホストによってアクションが要求されている情報はＳＳＨトラフィックを含む。
【０１０３】
本発明は特定の模範的な実施形態に関して記述されたが、発明のより広い思想及び範囲から外れずに、種々の修正と変更がこれらの実施形態でなされることで、技術において普通の技能の１人にそれは明らかであるであろう。したがって、明細書及び図面は、限定的な意味よりむしろ実例であるとみなされる。
【図１ａ】
0005393686.tif 000002
【図１ｂ】
0005393686.tif 000003
【図２】
0005393686.tif 000004
【図３】
0005393686.tif 000005
【図４】
0005393686.tif 000006
【図５】
0005393686.tif 000007
【図６】
0005393686.tif 000008
【図７】
0005393686.tif 000009