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