(58)【調査した分野】(Int.Cl.,DB名)
ネットワークコントローラコンピューティングデバイスにおいて実行されるネットワークオペレーティングシステムであって、ネットワークにおいてデータフローを転送する複数のネットワークエレメントを含む当該ネットワークを管理するネットワークオペレーティングシステムのための、方法であって、
前記ネットワークオペレーティングシステムの上で動作する管理アプリケーションのセットにより宣言されたネットワークポリシに従って、前記複数のネットワークエレメントの転送挙動を設定するステップと、
前記複数のネットワークエレメントのうちの特定のネットワークエレメントが設定された転送挙動にパケットをマッチさせることができない場合に、特定のデータフローのための前記パケットを、前記特定のネットワークエレメントから受信するステップと、
前記特定のネットワークエレメントの転送挙動を修正するか否かを判定するために、前記宣言されたネットワークポリシと前記ネットワークの現在のビューとに従って前記パケットを分析するステップと、
前記特定のネットワークエレメントの前記転送挙動が修正される場合に、前記特定のデータフローのための追加のパケットを転送するように前記特定のネットワークエレメントを設定するステップと、
前記特定のネットワークエレメントの前記転送挙動が修正されない場合に、前記パケットを転送するステップと、
を備えることを特徴とする方法。
特定のネットワークエレメントからパケットを受信する前記ステップは、前記特定のネットワークエレメントと前記特定のネットワークエレメントの特定のポートとを示すメッセージと共に前記パケットを受信するステップを含む
ことを特徴とする請求項1に記載の方法。
ネットワークオペレーティングシステムであって、前記ネットワークオペレーティングシステムは、プロセッサのセットにより実行されると、ネットワークにおいてデータフローを転送する複数のネットワークエレメントを含む当該ネットワークを管理するものであり、前記ネットワークオペレーティングシステムは、
管理アプリケーションのセットにより宣言されたネットワークポリシに従って、前記複数のネットワークエレメントの転送挙動を設定する命令セットと、
前記複数のネットワークエレメントのうちの特定のネットワークエレメントが設定された転送挙動にパケットをマッチさせることができない場合に、特定のデータフローのための前記パケットを、前記特定のネットワークエレメントから受信する命令セットと、
前記特定のネットワークエレメントの転送挙動を修正するか否かを判定するために、前記宣言されたネットワークポリシと前記ネットワークの現在のビューとに従って前記パケットを分析する命令セットと、
前記特定のネットワークエレメントの前記転送挙動が修正される場合に、前記特定のデータフローのための追加のパケットを転送するように前記特定のネットワークエレメントを設定する命令セットと、
前記特定のネットワークエレメントの前記転送挙動が修正されない場合に、前記パケットを転送する命令セットと、
を含むことを特徴とするネットワークオペレーティングシステム。
特定のネットワークエレメントからパケットを受信する前記命令セットは、前記特定のネットワークエレメントと前記特定のネットワークエレメントの特定のポートとを示すメッセージと共に前記パケットを受信する命令セットを含む
ことを特徴とする請求項9に記載のネットワークオペレーティングシステム。
前記ネットワークオペレーティングシステムは、前記特定のネットワークエレメントの前記転送挙動が修正されない場合に、前記特定のデータフローのための追加のパケットを受信して分析する命令セットを更に含む
ことを特徴とする請求項9に記載のネットワークオペレーティングシステム。
前記複数のネットワークエレメントの各々は、各ネットワークエレメントと各ネットワークエレメントの特定のポートとを示すメッセージと共に前記特定のデータフローのための各パケットを送信する
ことを特徴とする請求項15に記載のネットワーク制御システム。
【発明を実施するための形態】
【0016】
本発明の実施形態は、本発明を実行するための技術に熟練した者が実行するために、例
を示すために与えられた図面を参照して詳細が述べられる。特に、図や以下の例は、本発
明の要旨を一実施形態に限定することを要求するものではない。しかし、他の実施形態は
、いくつか又は全ての記述又は図示されたエレメントを入れ替えることが可能である。便
利な場合はいつでも、いくつかの参照番号は、同じ又は一部が似ていることを参照するた
めに、図の至るところで使われるであろう。これらの実施形態のいくつかのエレメントは
、知られたコンポーネントを用いて、部分的に又は全体的に実行されることができる。本
発明を理解するために必要なそのような知られたコンポーネントのこれらの一部のみ、説
明されるであろう。本発明が不明確とならないように、そのような知られたコンポーネン
トの他の部分の詳細な説明は省略されるであろう。本明細書において、単数のコンポーネ
ントで示す実施形態は、限定していると考えるべきでない。むしろ、本発明は、複数のコ
ンポーネントを含んだ他の実施形態を含むことが意図される。ここで別に明示的に規定さ
れていない限り、逆も同様である。さらに、そのような説明が明白でない限り、出願人は
、明細書又はクレームにおけるどのタームも珍しい又は特別な意味を意図するものではな
い。さらに、本発明は、説明のためにここで参照されたコンポーネントとここにあるもの
及び知られたものと同等なものを含む。
【0017】
本発明のある実施形態では、データ通信ネットワークを管理する及び安全にするための
システム及び方法を提供する。これらのシステム及び方法は、一般的に、ネットワークエ
レメントに関して、拡張可能な及び自動設定可能なプログラムのコントロールをサポート
する。ネットワークトラフィックに関して、ネットワーク及びプレフロー(per-flow)コ
ントロールの包括的な意見を提供する。本発明の実施形態で使用するために構成及び適合
されたネットワークシステムに新しい特徴と機能性を提供することに加えて、本発明の特
徴は、従来のコマーシャルスイッチのインテグレーション及びコントロールを許す。
【0018】
データ通信ネットワークは、相互接続スイッチ、バーチャルスイッチ、ハブ、ルータ、
ネットワークを通過するときにデータを処理するように構成された他のデバイスを含むこ
とができる。これらのデバイスは、ここでは、「ネットワークエレメント(network elem
ents)」と呼ぶ。1つ又はそれ以上の通信リンクを使って、ネットワークエレメント間に
おいて、データパケット、セル、フレーム、セグメントなどをパスすることによって、デ
ータがデータ通信ネットワークを通して伝達される。通信リンクは、マルチセグメント(
multi-segment)されることができ、有線、無線、光などを用いることができる。一例に
おいて、パケットは複数のネットワークエレメントによって処理されてもよく、ソース及
びデスティネーションの間でネットワーク上に伝わるとき、複数の通信リンクの複数のセ
グメントをクロスする。
【0019】
ネットワークにおいてソースが他のソースからデータを受ける場合でも、又はデスティ
ネーションが他のデスティネーションにデータを前方に受ける場合でも、ソース及びデス
ティネーションは、ネットワークにおける端末(endpoint)と考えられるであろう。種々
の端末システムは、一般的に、ウェブサーバ、Eメールサーバ、ファイルサーバなどのよ
うなサーバを用いて、クライアントマシン、バーチャルマシン(「VMs」)、サーバ、
種々のネットワークサービスを提供するシステムを含むネットワーク上で存在することが
できる。ユーザは、サーバ、ワークステーション、パーソナルコンピュータ及びモービル
通信デバイスを含むこれらの端末システムの一つ又はそれ以上の中にログインしてもよい
。端末システムは、ユーザ及びそれらの上に存在するサービスとともに、ここでは、「ネ
ットワークエンティティ(network entities)」と呼ばれるであろう。
【0020】
この論議の目的のために、ネットワークエンティティ及びネットワークエレメントは、
「ネットワーク構成要素(network constituents)」と呼ばれることができ、タームを単
数として使用すること(つまり、「ネットワーク構成要素(network constituent)」)
は、ネットワークエレメント又はネットワークエンティティのどちらかを意味することが
できる。特定のネットワークエレメントがネットワークエンティティとして動作してもよ
く、この逆も同様であるという、特別なケースが存在することは理解されるであろう。例
えば、ネットワークスイッチは、システムアドミニストレーションを受け入れる端末サー
ビスを提供してもよく、ユーザワークステーションは、ネットワークデータを転送して、
無線デバイスにブリッジ又はゲートウェイとして働いてもよい。これらの特別なケースに
おいて、別な記載がある場合を除いて、デバイスの異なる機能は別に及び独立して扱われ
る。
【0021】
本発明のある実施形態は、ネットワークのためにオペレーティングシステムを有する。
オペレーティングシステムは、全部のネットワークへの同一の及び集中化されたプログラ
ムのインターフェイス(centralized programmatic interface)を提供する。ネットワー
クオペレーティングシステムはネットワーク自身を管理する必要がないが、ネットワーク
オペレーティングシステムはネットワークの監視及び制御を可能にする。ネットワークオ
ペレーティングシステムは、一般的に、ネットワーク管理タスクを実行するために構築及
び/又は実行されることができるアプリケーションに基づいてプログラムのインターフェ
イスを提供する。この説明において、「アプリケーション(application)」というター
ムは、特に他で記述されない限り、ネットワークオペレーティングシステム上で実行する
プログラムを意味するであろう。
【0022】
本発明のある態様によるネットワークオペレーティングシステムによれば、従来のネッ
トワーク管理システムからの概念的な出発を具体化する。例えば、ネットワークオペレー
ティングシステムは、ネットワーク状態の論理的に集中化されたビューを含めて、集中化
されたプログラミングモデルでプログラムを与える。アプリケーションは、全部のネット
ワークがシングルマシンであるかのように、書かれることができる。従って、Bellman-Fo
rd法よりDijkstra法を用いて、アプリケーションは最も短い経路で計算することができる
。もう1つの例において、アプリケーションは、IPアドレス及びMacアドレスのよう
な低レベルの設定パラメータよりも、例えばユーザ名及びホスト名を含んだ高レベルなア
ブストラクションのタームで書かれることができる。このアブストラクションは、基礎を
なしているネットワークトポロジの独立を実行する管理及び安全のポリシを認める。ネッ
トワークオペレーティングシステムは、アブストラクション及び対応する低レベルの構成
の間において、現在の及び正確なマッピング又はビルディングを維持する。
【0023】
ある実施形態において、ネットワークオペレーティングシステムは、低レベルのアドレ
スに関する分散アルゴリズムとは対照的に高レベルな名前に関して、集中化されたプログ
ラムとして、マネージメントアプリケーションが書かれることを可能にする。特に、本発
明のある実施形態は、ネットワークをコントロールする及び望ましいポリシを実行するた
めに、集中化されたデクラティブステートメント(declarative statements)(ここでは
、「コマンド(directives)」として扱う)を使うためにオペレータに許可する方法にお
いて、管理及び安全なネットワークのためのシステム及び方法を有する。それぞれの個別
のネットワークコンポーネントを設定する代わりに、ネットワークオペレータは一つ又は
それ以上のネットワークのワイドコマンドを単に作ることができ、望まれる動作が実行さ
れるネットワークオペレーティングシステムのコントロールの下、システムはネットワー
クコンポーネントを保証することによって実行するであろう。
【0024】
本発明のある実施形態は、一般的なプログラムのインターフェイスを提供する。これは
、C++とPythonのような高レベルの言語を使って、ネットワークオペレータに指
令を指示することができる。ある実施形態のシステム及び方法は、安全、管理、ネットワ
ークコントロール、スケーリング、バックワードの互換性(backwards compatibility)
、自動設定、バーチャル環境、インバンドコントロール、ヒストリ及びフォレンシック(
forensic)、ルーティング、パケットインターセプション(interception)、及びサービ
スプロテクションの拒否に関連されたアドレスの問題について提供される。
【0025】
本発明のある実施形態は、以下で「NOX」として呼ばれたネットワークのためのオペ
レーティングシステムを定義及び備える。NOXは、データ通信ネットワークを監視及び
コントロールするために、ネットワークオペレータを可能にする。NOXは、一般的に、
現在のトポロジ、現在のサービス提供、及びホスト、サービス並びにユーザ認証の現在の
位置を含む、全体的なネットワークの現在のビューを維持する。申し出られたサービスは
、HTTP及びNFSのような標準によって定義されたサービスを含んでもよく、また、
NOX又は特徴づけることができるNOXに知られている独自のサービスを含んでもよい
。マネージメントアプリケーションがNOXによって維持されたネットワークビューにア
クセスすることができる実行環境(execution environment)を提供することによって、
NOXはネットワークのコントロールを容易にしてもよい。マネージメントアプリケーシ
ョンは、少なくともデータ通信ネットワークの一部をモニタ及びコントロールするコンポ
ーネントを含む。ここで、一部は、特定の管理のコントロール及び/又は物理的なエリア
の下において、1つ又はそれ以上のドメイン、1つ又はそれ以上のタイプのネットワーク
エレメント、1つ又はそれ以上のコンポーネントによって、定義されてもよい。マネージ
メントアプリケーションは、ネットワークイベントの通知を受け取るため及びネットワー
クコンポーネントのマネージメントを容易にするために、NOXに登録されてもよい。
【0026】
次の例の目的のために、「ネットワーク」は、イーサネット(登録商標)のようなレイ
ヤ2のネットワーク、ATM、例えば、インターネットプロトコル(「IP」)及び/又
は他の適当なネットワーキング技術を使用しているレイヤ3のネットワークによって、ス
イッチのセット、ルータ、ファイアウォール、プロキシ及び他のネットワークエレメント
が、相互に連結されたことを意味するととらえることが可能である。ネットワークエレメ
ント間のリンクは、ネイチャー及び/又はそのどんな組み合わせにおいて、ローカルエリ
ア又はワイドエリアであってもよい。ユーザ及び、ホスト、サーバ及び他のデバイスのよ
うなエンティティは、ネットワークに接続されてもよく、ネットワーク上に存在すると言
われてもよい。特定のネットワークアーキテクチャ、ネットワークエンティティの同種(
homogeneity)、異種(heterogeneity)、コンポーネントの部分及び構成(configuratio
n)にかかわらず、NOXベースのシステムはネットワークをモニタ及びコントロールす
るために実装されることができる。
【0027】
次の例の目的のために、「フロー」は、普通の特徴を共有するパケット又は他のネット
ワーク伝達ユニットのシリーズであると理解される。一般的に、この普通の特徴は、ネッ
トワークエレメントによって検出されて、そして類似の行動をそれぞれのパケットに適用
するために使われることができる。例えば、フローは、同じパケットヘッダを有する又は
パケットヘッダのある特定の指定された部分を共有するパケットのシリーズを含んでもよ
い。
【0028】
参照は、今
図1a及び
図1bについてである。
図1aは、コントロール可能なネットワ
ークエレメント(「CNEs」)及びネットワークマネージャの存在を描写する。
図1b
は、ラインによって示されたリンクを有し、及び種々の「CNEs」、ネットワークコン
トローラ16a−cのホストとして機能しているデバイスの3つのインスタンス、ネット
ワークヒストリ18a及び18bを含んでいるデバイス及びネットワークビュー17を維
持する1つのデバイスの2つのインスタンスを示すネットワークの例を描写する。ある特
定の実施形態において、システムは、ネットワークマネージャ10及び、スイッチ及び/
又は他のネットワークエレメントを含む1つ又はそれ以上のコントロール可能なネットワ
ークエレメント12a−12h及び12i−12pを構成する。
図1aの特定の参照にお
いて、ネットワークマネージャ10は、ネットワークコントローラ、ネットワークビュー
データベース及びネットワークヒストリデータベースを含む複数のロジカルコンポーネン
トを含む。これらのロジカルコンポーネントは、ネットワークによって付加されたサーバ
又はネットワークに接続された他のデバイスの上にホストされてもよい。それで、分散さ
れたエンティティとして描写されたネットワークマネージャ10は、専用の処理デバイス
の上に存在するか、又は、Linux(登録商標)サーバ、UNIX(登録商標)サーバ
、Windows(登録商標)サーバなどのような多数の処理デバイスの至る所に分散さ
れることができる。さらに、ネットワークマネージャ10は、ネットワークエレメント1
2a−12hによって、集められた及び/又は処理された情報を集めてもよい。1つ又は
さらに多くのネットワークコントローラは、共通のサーバ又は異なったサーバの上に存在
するか否かにかかわらず、NOXのインスタンス及びマネージメントアプリケーションの
セットをそれぞれ実行することができる。NOXは、一般的に、プログラムのインターフ
ェイスを提供し、他方、マネージメントアプリケーションは、進歩したネットワーク管理
能力を提供する。
【0029】
図1aにおいて、ネットワークマネージャ10は、その潜在的に分散されたネイチャー
を示しているクラウド(cloud)で描写され、そして(図示しない)他のネットワークエ
レメントの間の接続は任意で可能である。
図1bは、ネットワークマネージャの種々のコ
ンポーネントの配置とともに、コントローラ16a−16c、ネットワークビュー17及
びヒストリ18a−18bを含むネットワークエレメントの間の相互接続の追加の特定の
例を示す。
図1bに示されるように、ネットワークマネージャの種々のコンポーネントは
、ネットワーク構成及びネットワークマネージャのコンポーネントの配置をもとに、異な
った場所でネットワークに接続されてもよく、そしてネットワークエレメント12i−1
2pのいくつかと直接的に通信することができ、そして特定の他のネットワークエレメン
ト12i−12pに間接的のみに通信することができる。例えば、ネットワークマネージ
ャは、一つのサーバに、又はネットワークの至るところに位置された、いくつものサーバ
に提供されてもよい。これらのサーバは、また他のサービスをサポートしてもよく、アプ
リケーション及びユーザは、それらにログインしてもよい。これらのサーバは、(例えば
、スイッチとして機能することによって、)またネットワークエレメントの機能を果たし
てもよい。他のネットワークエレメントと同じサーバの上にコントローラファンクション
が収容される例において、ネットワークマネージャは、通信のために、例えば、共通のバ
ス、共通のメモリ、プロセス間(interprocess)のチャネル及び他のスキームを使って、
ネットワークなしでネットワークエレメントと通信してもよい。従って、
図1bで描写さ
れた接続図は、どのような通信及びコントロールのフォームでも包含するとして、読まれ
るべきである。また
図2を参照して、ある特定の実施形態において、ネットワークマネー
ジャ10はネットワークの現在の状態を記述しているネットワークビュー22を維持する
。ネットワークの状態は、現在のネットワークトポロジ、ネットワーク上で存在している
ことを示されたホスト、ユーザ及びネットワークサービスの現在の位置を記述する情報を
構成する。現在の状態は、ユーザ名、ホスト、サービスなどを含む高レベルの名前の間及
びホスト、ネットワークエレメントなどのためのアドレスを含む低レベルのアドレスの間
のビンディング(binding)に関して記録されてもよい。一般的に、ネットワークビュー
の一つのロジカルバージョンが利用可能である。しかし、ビューのコピー又はビューの一
部は、維持されてもよく、そして1つ又はそれ以上のネットワークによって付加されたサ
ーバ又は他のネットワークデバイスの上に格納されてもよい。
【0030】
ある特定の実施形態において、ネットワークヒストリ24は、トポロジ、エンティティ
の場所などを含めて、過去のネットワーク状態の総合的な記録を維持する。ネットワーク
ヒストリ24は、時間内に、ある特定のインスタンスにおいてネットワークの前の状態を
再現すること可能にする。このネットワークヒストリ24は、前もって定められた照会言
語(query language)を使って照会されることができる。一般的に、ヒストリ24は1つ
又はそれ以上のネットワークによって付加されたサーバ又は他のネットワークデバイスで
具体化されてもよいが、このヒストリ24の一つのロジカルなバージョンは維持される。
ネットワークビューの及びこのヒストリの分析は、ネットワークの警告を生成するために
使われてもよい。これらの警告は、ネットワークエレメントのイベント検出能力を補完又
は代理してもよい。例えば、継続的な(successive)ネットワーク状態の検査は、ネット
ワークマネージャ10によって及び/又はネットワークオペレーティングシステム
101
を使っているアプリケーションによって発生させられるために、方策として起こされた警
告を可能にすることで、コネクションのロスを確認することができる。
【0031】
ある特定の実施形態でコントロール可能なスイッチ及び他のネットワークエレメントは
、ネットワークマネージャ10によってコントロールされることができる。1つの例にお
いて、これらのスイッチはオープンフロー(OpenFlow)インターフェイスを実行及びサポ
ートする。それによって、スイッチはフォームがエントリされたフローテーブルによって
表される(ヘッダ:カウンタ、アクション)。しかしながら、発明はこのオープンフロー
の例に制限されない。そして、現在の例によって教えられた後で、これらの当業者は他の
選択肢を認識するであろう。指定されたヘッダフィールドは完全に定義されるかもしれな
い。そして、完全なヘッダとマッチしているパケットだけが選択される。代わりに、フロ
ーエントリのヘッダ仕様は、ワイルドカード値又はフローにマッチするようなTCAMに
供給している「ANYs」を含んでもよい。この場合、パケットは、ヘッダのサブセット
でマッチに基づいてフローに割り当てられてもよい。ある特定の実施形態において、ヘッ
ダは、ヘッダの伝統的な概念(notion)に対応する必要がないが、入力パケットでビット
の任意のセットとして定義されることができる。ビットの指定されたセットを共有するパ
ケットだけが指定されたヘッダとマッチすると考えられる。識別されたヘッダとマッチし
て処理されたそれぞれのパケットのために、対応するカウンタは更新されることができ、
そして特定のアクションの1つ又はさらに多くがアップデートされることができる。パケ
ットは、多数のフローヘッダとマッチすることができ、そして事前に設定されたルールに
従ってフローに割り当てられてもよい。1つの例において、多数のフローヘッダエントリ
とマッチしているパケットが最も高いプライオリティのフローエントリに割り当てられる
ことを、構成は影響(dictate)してもよい。
【0032】
オープンフローに関して、現在サポートされるアクションは、デフォルトとしての転送
(forward)、特定のインターフェイスの転送アウト(forward out)、否定(deny)、ネ
ットワークコントローラへの転送、及び種々のパケットヘッダフィールドを変更すること
を含むことができ、変更されるパケットヘッダフィールドは、VLANタグ、ソース及び
デスティネーションのIPアドレス、及びポート番号を含むことができる。1つの例にお
いて、スイッチがその伝統的なソフトウェアを使っているパケットを転送するように、パ
ケットが転送されるので、「デフォルトとしての転送」のアクションは、効果的にNOX
を無視することをスイッチにさせる。オープンフロー仕様と一貫した他のアクション及び
機能はサポートされてもよい。(オープンフロードキュメンテーション及びソースコード
は、http://www.openflowswitch.org/.で入手可能である。)
ある実施形態はスイッチの動作のために他のアブストラクションを使用してもよく、こ
れらはアクションの異なったセットをサポートしてもよい。これらの他のアクションは、
ネットワークアドレスの翻訳、暗号化、カプセル化、ステートフルトンネリング、及びサ
ービスの品質(「QoS」)の種々のフォームを含んでもよい。加えて、カウンタ及びア
クションは前もって定められてもよく、及び/又はユーザ及びネットワークマネージメン
トアプリケーションによって配置されることができる。オープンフロースイッチアブスト
ラクションのようなアブストラクションは、フローテーブルエントリを挿入して、フロー
テーブルエントリを削除して、フローテーブルエントリのプライオリティを管理して、そ
してフローテーブルカウンタを読むためのマネージメントアプリケーションを許可しても
よい。これらのエントリはアプリケーションスタートアップで、又はネットワークイベン
トに応えて準備されることができる。オープンフロー及びネットワークエレメントのため
の類似のアブストラクションは、またコントローラとエレメントの間により広い通信を可
能にするメッセージのセットを供給してもよい。このようなメッセージの例は、スイッチ
結合(switch join)、スイッチリーブ(switch leave)、パケットレシーブ(packet re
ceived)、及びとスイッチ統計値(switch statistics)である。
【0033】
NOXによってコントロールされたデータ通信ネットワークのあるオペレーションが今
論じられるであろう。
図6は、以下でさらに詳細に述べ、入力パケットのために起こるこ
とができる処理の1つの例を記述する。ある特定の実施形態において、NOXによってコ
ントロールされたネットワークエレメントによって出会ったパケット又は他のデータユニ
ットは、分析及び分類されてもよい。いくつかのネットワークによって付加されたデバイ
ス及びパケットがNOXによってコントロールされたネットワークエレメントにいつ届く
かによって、パケットが生成されることができ、パケットヘッダ又はもう1つのパケット
の特質はパケットが割り当てられるべきであるフローを決定するために調べられる。例え
ば、もし入力パケットのヘッダがスイッチのフローエントリの1つで特定されたフィール
ドと一致するなら、スイッチはフローにパケットを割り当てることができて、そして適切
なカウンタを更新して、そして対応するアクションを応用してもよい。しかしながら、も
しパケットがフローエントリとマッチしないなら、それは一般的に、パケットを点検して
、そして、パケット及び/又はパケットに対応するフローをどのように処理するかについ
て決断してもよいネットワークコントローラに転送される。決定は、ネットワークビュー
、前もって定められたルール及びポリシディレクティブにおける情報に基づいてされる。
例えば、フロー処理決定は、パケットをドロップし、パケットデスティネーションへのパ
スに沿って、フローエントリを挿入することによって、パスをセットアップし、そして、
フローエントリをセットアップしないでパケットをデスティネーションに転送するために
、スイッチ及び/又はコントローラを起こすアクションを含む1つ又はそれ以上のアクシ
ョンを起こしてもよい。
【0034】
いくつかの場合において、既存のフローエントリにアンマッチであるパケットはフロー
の最初のパケット(「フロー開始パケット」)であり、そして次のパケットはフロー開始
パケットに対応して作ったフローエントリにマッチすることが予期されることができる。
ある特定の実施形態において、コントローラはフロー開始に対応していくつかのフローエ
ントリを挿入しなくてもよく、そして、従って、コントローラはそのフローであるすべて
のパケットを受け取り続けるであろう。1つの例において、コントローラがすべてのDN
Sトラフィックを見ることができるように、これはされてもよい。ある特定の実施形態に
おいて、システムはパケットからフロー情報を決定して、そして、最初のパケットの一部
を受け取った後で、又は最初のパケットより多くを受け取った後で、フローエントリを挿
入するように構成されてもよい。ある特定の実施形態において、マネージメントアプリケ
ーションが個別のフローを処理することについての方法を決める。コントロール決定がN
OXのプログラムインターフェイスを通して伝達されることができる。
【0035】
図2の参照を続けて、ある特定の実施形態はアプリケーション2
0に種々のサービスを
提供するプログラムインターフェイスを構成する。プログラムのインターフェイスはネッ
トワークビュー22とヒストリのビュー24へのアクセスをアプリケーションに提供して
もよい。一般的に、アプリケーション2
0は、とられたアクション及び/又はとられたア
クションの範囲を決定するために、応答の情報を使って、ネットワークビュー22を照会
することができる。プログラムインターフェイスはネットワークイベントと関連した警告
をアプリケーションに提供してもよい。1つの例において、アプリケーションは、あるネ
ットワークイベントについて知らされるために、通知サービスに登録されることができる
。プログラムインターフェイスは、アプリケーション2
0にネットワークエレメントをコ
ントロールすることができるようにしてもよい。例えば、ネットワークエレメントの動作
を変更するために、アプリケーションはオープンフローのようなコントロールデバイスイ
ンターフェイスを使ってもよい。
【0036】
ある実施形態は、ネットワークイベントの異なったカテゴリをモニタ及び報告する。カ
テゴリは、新規ホストの挿入、新規ユーザの認証及びネットワークトポロジの変更のよう
なネットワークビューに変更を反映するイベントを含み、イベントはフロー開始及びコン
トローラに到着した他のパケットを反映し、イベントはスイッチ結合(switch join)、
スイッチリーブ(switch leave)、パケットレシーブ(packet received)、及びとスイ
ッチ統計値の受理(receipt of switch statistics)のようなオープンフローメッセージ
によって直接発生し、イベントは他の低レベルのイベント及び/又は他のアプリケーショ
ンで発生されたイベントの処理の結果としてNOXアプリケーションによって発生する。
例えば、このようなホストが検出されたとき、「スキャンニングホスト」を検出するよう
設計されたマネージメントアプリケーションがイベントを生成することができた。このス
キャンニングアプリケーションは、順番に、スキャナーを発見するために(フロー開始の
ような)より低レベルのイベントに適用してもよい。
【0037】
ある特定の実施形態において、ある特定の識別されたイベント又はイベントのカテゴリ
が起こるとき、実行されるために構成された登録ハンドラ(handler)のセットをNOX
アプリケーションは使う。イベントハンドラは、ハンドラ登録の間に指定されたプライオ
リティのオーダーについて一般的に実行される。イベントに関連するハンドラの実行が止
められるべきである、又はイベントの処理が次の登録されたハンドラにパスされるべきで
あるかどうかを示すNOXに、ハンドラは値を返してもよい。ある特定の実施形態におい
て、アプリケーションハンドリングイベントは1つ又はそれ以上のアクションをとっても
よく、アクションは、ネットワークビュー22をアップデートし、フローエントリを1つ
又はそれ以上のネットワークエレメントに挿入し、そして追加のネットワークイベントを
生成することを含む。
【0038】
NOXコアは、好ましくは他のコンポーネントが構築されるベースソフトウェア基礎構
造を含む。1つの例において、NOXコアは、非同期の通信ハーネス、イベントハーネス
、コーオペラティブスレッドライブラリ(cooperative threading library)、コンポー
ネントアーキテクチャ、及びネットワークアプリケーションに共通のファンクションを提
供する組み込みのシステムライブラリのセットを提供してもよい。
図3は、一実施形態に
おける特定のNOXコアコンポーネントの高レベルのビューを提供する。I/Oハーネス
310は、ネットワークスイッチへの接続を管理するファンクションを含むシステムイン
プット及びアウトプット(「I/O」)機能300、302、304へ非同期のインター
フェイスを提供し、ファンクションはファイルシステムで通信を処理し、ファンクション
は管理Webサーバのような一般的なネットワークサービスをサポートしているソケット
インターフェイスを提供する。
【0039】
イベントハーネス322は、システムイベントの創造(creation)と分散(distributi
on)を管理するコンポーネントを含む。システムイベントは、ネットワークの中へのスイ
ッチの挿入又は新しいフローの到着のような、ネットワークレベルイベントを含むことが
でき、スキャンニングホストを検出するアプリケーション2
0によって作られた「検出さ
れたスキャン(scan detected)」イベントのような、アプリケーション2
0によって作
られたイベントを含むことができる。
【0040】
コーオペラティブスレッドライブラリ320は、実行の同時(concurrent)のスレッド
を管理するために便利なインターフェイスを提供する。それぞれのI/Oイベントは、別
個のスレッド状況(context)の中で一般的に実行される。ブロッキングI/Oに関連し
たパフォーマンスペナルティを避ける間、これはアプリケーションが通信境界線の向こう
側に線形プログラムのフローを提供することを可能にする。例において、イベントに対応
しているコールバックを登録することによって、アプリケーション2
0が特定のイベント
に関心を示す完全に非同期の通信モデルを、NOXコア10
1はサポートする。アプリケ
ーション2
0は強調的スレッド及びコールバックの両方を使うことができる。
【0041】
強調的スレッド320、イベントハーネス322及びI/O基礎構造コンポーネント3
00、302、304は、好ましくは、アプリケーション2
0にさらされることができる
コアアプリケーションプログラミングインターフェイス(「API」)330を基に提供
する。これらのコンポーネントは、アプリケーション間の依存性(dependencies)、アプ
リケーション2
0の動的なローディングに対するサポート、及びコアAPIへのインター
フェイスを宣言及び解決するための方法を提供する。
【0042】
ある特定の実施形態において、NOXコア10
1はまたネットワークアプリケーション
2
0に共通の機能を提供するアプリケーションの小さいセットを構成してもよい。これら
の機能は、パケット分類(packet classification)350、言語ビンディング(languag
e bindings)356、ロケーション352、ルーティング354、及びトポロジディスカ
バリ360を含んでもよい。パケット分類350は、アプリケーション2
0がそれらがど
のパケットのタイプに関心を持っているか明示することができる一般的なインターフェイ
スを提供する。クラシファ(classifier)は、アプリケーション2
0がこれらのパケット
を受け取るだけであることを保証する。プログラミング言語ビンディング356は、アプ
リケーションが異なったプログラミング言語で書かれることを可能にする。描写される例
において、C++のような異なった言語でコアNOX10
1が実行されるとき、Pythonプロ
グラミング言語ビンディングはPython言語におけるアプリケーション開発を認める。プロ
グラミング言語ビンディング356は、機能性の速いプロトタイピングと非パフォーマン
スの重大な機能性の高レベルの実行を認める。プログラミング言語ビンディング356の
他の例は、Java(登録商標)とRubyのためにビンディングを含む。
【0043】
ロケータアプリケーション352は、ネットワークに新規ホストがいつ参加又は去った
かを決定するために使われるロジックとデータを構成する。ある特定の実施形態において
、ロケータアプリケーション352はネットワークビュー22にデータを提供する。ロケ
ータアプリケーション352は、一般的に、付加された物理的なポートによって決定され
るネットワーク上のホストの位置を含むホストに関連するネットワーク状態、及びホスト
に割り当てたアドレスを追跡する。ネットワーク上でセットアップされたフローのソース
及びデスティネーションの物理的な位置が決定するため、及びフローによってトラバース
されたネットワークエレメントの転送動作を変更するために、この情報は、ホスト結合/
リーブイベントを生成するために使われてもよいし、ルーティングアプリケーションによ
って使われてもよい。
【0044】
ネットワークビュー22は、複数のネットワークコントローラの個人的な貢献(indivi
dual contribution)を通して組み立てられてもよい。ロケータアプリケーション352
、トポロジディスカバリアプリケーション360及びコントローラの他のコンポーネント
は、一般的にネットワークビュー22を変更することができる。1つの例において、複合
したビューは、それらが知る又は「見る(see)」というネットワークビュー22のピー
スを挿入しているコントローラによって組み立てられ、その結果の現在の複合したネット
ワークビュー22は、すべてのコントローラと共有されてもよい。ある特定の実施形態に
おいて、複合したネットワークビュー22は、それぞれのコントローラの上にキャッシュ
された状態にされ、そして、複合したネットワークビュー22のアップデートがあるとき
、アップデートされる。例えば、コントローラに関するキャッシュは、ルーティングアプ
リケーションによって維持されてもよい。複合したビュー22はシングルサーバ上に格納
される必要がなく、そしてそれが複数のサーバに渡って拡張された分散ハッシュテーブル
(「DHT」)に容易にストアされることができ、1つ又はそれ以上のコントローラにホ
ストとして仕えてもよい。
【0045】
ルーティングアプリケーション354は、好ましくは、ネットワーク上で利用可能な、
及び/又はアクティブなパスを計算する。パスは、リンク変更の上に徐々にアップデート
される「動的な全てのペアの最も短いパス(dynamic all-pairs shortest path)」アル
ゴリズムを使って計算されてもよい。他のパスの計算は、適切に又は所望に使われてもよ
い。コントローラがルーティングを必要とするフローを受けるとき、例えば、パケット及
び/又はフローによって識別されるように、ソースとデスティネーションのメディアアク
セスコントロール(「MAC」)アドレスが接続されている物理的なポートに基づいて、
コントローラはルートを決定又は選択してもよい。ルーティングアプリケーション354
は、例えば、フローがパスしなくてはならない1つ又はそれ以上の中間ノード(intermed
iate node)の識別(identification)を含むパスについての制約の数を受け入れること
ができる。1つの例において、パスはマルチホップDjikstraアルゴリズム(a multi-hop
Djikstra algorithm)を使って要求に従って計算されることができる。ルーティングアプ
リケーション354は、標準的なテクニックを使ってマルチパス(multipath)とマルチ
コスト(multicast)パスを計算することができる。多数のパスの計算は、パスの間の重
複の程度がコントロールされ得るように、制約として、さまざまな程度のディスジョイン
トネス(disjointness)を含むことができる。データフローのために計算されたパスを有
することにおいて、ルーティングアプリケーションは、計算パスを実行するために、1つ
又はもっと多くのネットワークエレメントの転送動作の変更を起こしてもよい。
【0046】
トポロジディスカバリアプリケーション360は、LLDPパケットをノードとリンク
レベルネットワークトポロジを検出するために使うことができる。それぞれのスイッチポ
ートから固有のLLDPパケットを送ること及びそのようなパケットの受理の上に接続さ
れたポートを決定することによって、検出は達成され得る。この情報は、一般的にコント
ローラに内部でストアされて、そしてルーティングコンポーネントを含む複数のNOXコ
ンポーネントによって使ってもよい。トポロジディスカバリは、コントローラにおいて実
行される又はスイッチにおいて実行されることができる。
【0047】
ある特定の実施形態は、ディレクトリ統合をサポートする。
図4の参照において、NO
Xは、ディレクトリマネージャコンポーネント420を通して1つ又はそれ以上のローカ
ル又はリモートディレクトリサービス430、432、434、436への抽象的なイン
ターフェイスを提供してもよい。LDAP432又はAD430のようなディレクトリサ
ービスは、ユーザ、ホスト、グループ及びサービス名を含むネットワークリソースに関す
る情報を構成する。ネットワークでユーザ、ホスト又はスイッチを認証することを要求さ
れたクリデンシャル(credential)を保守する「認証ストア(authentication stores)
」として、ディレクトリサービス430、432、434、436は通常動作する。
【0048】
ある特定の実施形態において、ディレクトリは、ユーザ、スイッチ及びホストを認証す
るために使われてもよい、そして、さらに、ユーザ、スイッチ及びホストの特徴に関して
関連づけられたメタデータを供給するために使われてもよい。例えば、ディレクトリは、
ユーザ及び/又はホストが所属するグループに関して情報を維持してもよい。発明のある
態様によれば、アプリケーション400、402、404は、ディレクトリマネージャ4
20でインターフェイスに書かれてもよく、そして、ディレクトリマネージャ基礎構造に
つながるディレクトリ特定のバックエンドを作ることによって、新しいディレクトリは加
えられてもよい。一般的に、新しいディレクトリの付加は、アプリケーションへのいくつ
かの変更を要求しない。ディレクトリは、NOXが走っている同じデバイス上で格納及び
動作されることができ、また、他のネットワークデバイスの上で格納及び動作されること
ができる。
【0049】
ある特定の実施形態において、NOXディレクトリマネージャ420は複数のディレク
トリへのインターフェイスを見せることができる。これらのインターフェイスは、そのイ
ンターフェイスを含んでもよく、そのインターフェイスは、ユーザ/ホスト/認証時間で
受理されたスイッチクリデンシャルをアクセスする、スイッチ認証情報からスイッチ名を
決定する、スイッチ及びポート番号を基にポート名を決定する、ホスト、スイッチ及び/
又はユーザに関連する位置を決定する、ホストと関連する周知のMac及びIPアドレス
を決定する、例えばゲートウェイ又はルータとして動作するかどうかについてホストのフ
ァンクションを決定する、ユーザ及びホスト間の関係を決定する、ディレクトリ又はディ
レクトリでエントリを追加/削除/変更する。
【0050】
ある特定の実施形態において、NOXは、アドミッションコントロールポリシとアクセ
スコントロールポリシの両方を処理するポリシエンジンを構成する。アドミッションコン
トロールポリシは、ユーザ、ホスト、又はネットワークに加入するためのスイッチのため
に要求された認証を決定する。アクセスコントロールポリシは、どのフローがネットワー
クの使用を許可されるか、及びそのような使用の制限を決定する。
図5は、NOXのコア
コンポーネントと統合されたポリシコントロールの例を描写する。一般的に、ポリシコン
トロールは、トポロジディスカバリ、ルーティング、認証及びフローセットアップを行う
ために実行する他のNOXアプリケーションに頼る。ポリシは、低レベルのルックアップ
ツリーにコンパイルされてもよい、1つ又はそれ以上のファイルで宣言されることができ
る。ポリシは、フローベースのセキュリティ言語(「FSL」)のような、特別な目的の
ポリシ言語で表現されることができる。コンパイルプロセスは、一般的に、ポリシファイ
ルで使われた主要な名前の実在を検証するためのすべての利用可能な認証ストアをチェッ
クする。
【0051】
ある特定の実施形態において、スイッチエントが存在ないスイッチによってコントロー
ラに転送されたパケットを含む、NOXによって受けられたパケット500は、502で
名前とグループが関連づけられたファーストタグが付けられる。名前とアドレスの間のビ
ルディング情報は、主要な認証において得られることができ、そしてビルディング情報は
ロケータコンポーネントにストアされてもよい。もしビルディング情報がパケットに存在
しないなら、ホストとユーザは本物と証明されていないと考えられる。ポリシエンジンは
、本物と証明されていないホストとユーザをカバーする宣言されたルールを許してもよい
。
【0052】
ポリシルックアップツリー(policy lookup tree)は、ネットワークがタグを付けられ
たパケットをどのように処理するべきであるか決定してもよい。ある特定の実施形態にお
いて、ポリシルックアップはフローに適用されることができる制約を提供し、そして制約
はポリシに準拠するパスを見つけるためにルーティングコンポーネントにパスされてもよ
い。もしポリシ制約で与えられたパスが存在しないなら、パケットは一般的にドロップさ
れる。制約の例は全部のフローの拒否(denial)であり、そしてそれは1つ又はそれ以上
のドロップされたパケットをもたらすであろう。
【0053】
ルックアップツリーは、カスタムプログラムされたファンクション又は入力パケットに
適用するためのアクションとしてのアプレットの使用を許可する。このようなファンクシ
ョンは、例えばC++とPythonを含むいくつかの所望のプログラミング言語で作ら
れたプログラマ又はコードによって作られてもよい。これらのカスタムプログラムされた
ファンクションは、種々の目的のために使われることができ
る、例えば、ある特定のファ
ンクションが認証ポリシを増大させるために開発されることができる。1つの例において
、ネットワーク上で許可される前に、アクセスポイントからすべて本物と証明されていな
いホストが802.1xを介して認証するように要求されることを、ルールは記載しても
よい。発明のある特定の実施形態は、キャプティブWebポータル(captive web portal
)にリダイレクションを介して、Macベースのホスト認証、802.1xホスト認証及
びユーザ認証を含んで、複数の異なった認証スキームをサポートする。
【0054】
ある特定の実施形態で導入されたポリシコントロールの使用は、例の使用を通して最も
良く理解されてもよい。例えば、一方向のフロー(「ユニフロー(uniflow)」)は8タ
プルによって特徴付けられる。
【0055】
<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.
ユニフローはアクセスコントロール決定マーカにインプットを構成する。NOXのため
のセキュリティポリシは、すべての可能なユニフローを制約のセットと結び付け、そして
、この例の目的のために、ユニフローが、許可され、否定され、明記されたホストを含む
ネットワークを通るルートをとるように要求されて(ユニフローは「中間地点(waypoint
ed)」である)、ある特定の明記されたホスト(「中間地点」)を通過することを禁止さ
れて、レート制限されることができる。
【0056】
ポリシ評価エンジンは、フロー毎にチェックされなくてはならないルールの数を最小に
するように意図されたデシジョンツリーのもとで構築されることができる。ツリーは、例
えば、10ディメンションスペースにおけるルールセットの簡潔な説明の結果、8つのユ
ニフローフィールドとグループのセットに基づいてルールを分割してもよい。否定的なリ
テラルは、インデクサ(indexer)によって無視されて、そしてランタイムで評価される
ことができる。デシジョンツリーにおけるそれぞれのノードは、一般的に、ノードによっ
て表されるディメンションのためにそれぞれの可能な値のために1つのチャイルドを有す
る。例えば、usrcを表しているノードは、usrcがサブツリーのポリシルールで拘
束(constrain)されるそれぞれの値のために1つのチャイルドを有することができる。
加えて、サブツリーのルールがノードによって示されたディメンションを拘束する場合は
、それぞれのノードはポピュレーティングルール(populating rule)のために、「AN
Y」チャイルドを含むことができる。デシジョンツリーにおけるそれぞれのノードは、そ
のチャイルドたちのそれぞれが一定の時間の近くで見つけ出すことができる保証するため
に連鎖されたハッシュテーブルを用いて実行されることができる。ツリーにおけるいくつ
かのポイント上に分岐するための10のアトリビュートに関するデシジョンは、サブツリ
ーのルールセットを最も広く分割するディメンションを見つけることがベースとされても
よい。例えば、それぞれのチャイルドノードはサブツリーでANYルールの数を足すとき
、ディメンションはルールの平均の数を最小にするために選択されてもよい。
【0057】
ある特定の実施形態において、グループメンバーシップは認証の間に計算されることが
できる。G(s)はユニフローのソースが属するすべてのグループを示すために使われる
ことができ、そしてG(t)はユニフローのターゲットが属するグループを示すために使
われることができる。いくつかの与えられたユニフローに関係するすべてのルールを見つ
けるために、複数のブランチがいくつかの与えられたノードに従うように、標準的なデシ
ジョンツリーアルゴリズムは変更されてもよい。1つの例において、ANYのブランチは
常に後に従われ、そして、枝がソースグループ及びターゲットグループに分けられたブラ
ンチに関して、ユニフローのG(s)及びG(t)に属するすべてのチャイルドたちはそ
れぞれ後に従われる。
【0058】
図6は、NOXの中でホスト認証のためにコントロールフローの例を描写し、そして、
ホストを認証するとき、これらの構造のコンポーネントがどのように一緒に働くか例示す
る。ステップ600において、パケットがスイッチからNOXによって受け取られ、そし
てパケットインメッセージがスイッチとパケットが受け取られた上であるイッチポートを
示す。ステップ602において、ロケータコンポーネントは、もしホストが認証したなら
決定する入力ポート、MACアドレス及びIPアドレスを使う。ステップ603において
、もしホストが認証されたなら、ロケータは調べ(look up)、そして高レベルの名前と
そのホストのグループ名を加える。しかしながら、もしホストが認証されなかったなら、
ロケータはステップ604において「本物と証明されていない」ホスト名を使う。
【0059】
ステップ606において、ロケータコンポーネントはポリシルックアップコンポーネン
トにフローと関連づけられた名前をパスする。ステップ608において、コンパイルされ
たネットワークポリシを維持するポリシルックアップは、ネットワークアドレスと高レベ
ルの名前に基づいてパケットがどのように処理されるべきであるか明示する。ポリシは、
使われるべき認証メカニズム609を明示し、そして本物と証明されていないホストから
のパケットは示されたサブシステムにパスされる。例えば、パケットは、802.1x認
証のためにパス、又は、登録されたMACのためにチェックしてもよい。ある特定の実施
形態において、プロトコルの特定の認証エクスチェンジを実行することに関して、認証サ
ブシステムは責任がある。ホストがうまく認証した度に、認証したとして、アドレスがホ
ストに関連したことを認証サブシステムはマークをする。このホストからのすべての次の
パケットは、そのホストに関連した名前及びグループでラベルされるであろう。ステップ
610において、認証されたホストからパケットに適用された制約を、ポリシは明示する
。もしフローが許されるなら、パケットはルーティングコンポーネントステップ611に
パスされ、そしてそれはポリシに従っているルートを決定して、そしてネットワークでそ
のルートを準備するであろう。さもなければ、パケットはステップ612においてドロッ
プされることができる。
【0060】
ポリシルールを書いて、そして実施するとき、ユーザが一般的にポリシをルールのコレ
クションとして書いて、そしてポリシを編集する。コンパイラは、シンタックス(syntax
)をチェックして、そして配置されたディレクトリの1つで主要な名前が存在することを
確かめてもよい。コンパイラはポリシルールを低レベルの内部のフォーマットに編集する
。例えば、「OR」が複数のルールの中に拡張されることによって、コンパイルは正規化
(canonicalization)及びルール拡大を含むことができる。コンパイラは、パーシステン
トストレージ(persistent storage)でコンパイルされたポリシをセーブしてもよく、そ
して全部のポリシをルックアップツリーに作り上げる。
【0061】
ある特定の実施形態は、インバンドコントロール及びコントローラディスカバリにシス
テムと方法を提供する。データトラフィックと同じ送信メディアを共有することによって
、インバンドコントロールシステムはスイッチとコントローラの間にコントロールトラフ
ィックを伝達する。別個のコントロールネットワークの必要を取り除くことによって、イ
ンバンドコントロールの使用は物理的なネットワークセットアップと構成を単純化するこ
とができる。スイッチと及びコントローラは、インバンドコントロールによって使われた
ある特定のファンクションをサポートするために設定及び/又は変更されてもよい。一般
的に、コントローラからの助けなしに、スイッチは、コントローラへの接続を見いだして
、そして確立する能力を備えられる。スイッチは、通信ループを避けるために、コントロ
ールトラフィックとデータトラフィックを区別することができなければならない。さらに
、ポリシシステムは、インバンドの通信オペレーションと通信を認めるように設定されな
くてはならない。
【0062】
ある特定の実施形態において、コントローラの特定の状態の優先的な知識を持たないで
スイッチは自動的にコントローラを発見することが可能である。例えば、スイッチが自動
的にコントローラを検出して、そしてネットワークに接続する上でコントローラに安全な
チャネルを確立してもよい。セキュリティを意識するアプリケーションにおいて、最初の
SSL接続を安全にするために信頼できるパスの上にスイッチは接続され得る。
【0063】
デフォルトによって、それらがコントローラに接続を確立したときだけ、スイッチは発
見パケットを転送する。スタートアップにおいて、コントローラをサーチするためのすべ
てのポートからDHCPの要求をスイッチが公表してもよい。スイッチは、DHCPの応
答を受け取るそれからポートの上にあるためにコントローラを仮定する。DHCPの応答
は、スイッチのためのIPアドレス、コントローラが聞いているIPアドレス及びポート
数を含むであろう。スイッチは、DHCPが受け取られたポートからコントローラにコン
トロール接続を確立することができる。一般的に、スイッチは、他のスイッチからコント
ローラまで前方へトラフィックをコントロールしないであろう。周知のコントローラに又
はからそれが送られていると決定することによって、コントロールトラフィックが検出さ
れる。
【0064】
ある特定の実施形態において、オープンフローのような標準ベースのプロトコルを使っ
て、スイッチのようなネットワークエレメントをNOXはコントロールすることができる
。オープンフローのアブストラクションにおいて、それぞれのエントリがヘッダ及びパケ
ットマッチングが実行されるためのアクションを含んでいるフローテーブルによってスイ
ッチは表される。オープンフローと他のそのようなプロトコルは、サポートされ、そして
発明のある特定の態様に従って組み立てられたシステムに拡張されてもよい。
【0065】
従来のネットワークスイッチは、マネージメントタスクのための低電力で動くCPUと
、ラインレートスイッチングを実行するスイッチオンアチップ(switch-on-a-chip)(「
SoC」)のような特別な目的のハードウエアをしばしば使用する。多くのSoCsは、
ファイアウォールを実行するために、ACLsに対する組み込みのサポートを有する。こ
れらのACLsは、レイヤ2から4で一般的にマッチすることをサポートして、そしてワ
イルドキャット(wildcarding)フィールドをサポートしてもよい。管理CPUはスイッ
チをトランジットしてすべてのパケットを受け取ることができないので、SoCsはライ
ンレート処理をサポートするよう意図され、しかし、管理CPUは一般にリモートSoC
sの上にACLsを配置することが可能である。SoCsの上のACLsは、一般的に、
オープンフローのインターフェイスに非常に類似している<header:action
>インターフェイスをサポートする。それぞれのACLエントリのために必要とされるマ
ッチフィールドとアクションの望ましいセットは指定されなくてはならない。ACL実行
はまた一般的にパケットにマッチする厳格なオーダの決定を認め、そしてファーストマッ
チングエントリ関連されたアクションはパケットに対して実行される。
【0066】
たいていのSoCsは、1つ又はそれ以上の物理的なポートを通して、パケットをドロ
ップすること、管理CPUに送ること、転送することを含む複数のアクションをサポート
する。いくらかのプラットホームの上に、ACLsアクションがエントリと関連したカウ
ンタを増加させること及びパケットヘッダを変更することをサポートする。しばしばスイ
ッチは、より高いプライオリティのそれにマッチしなかったいくつかのパケットにマッチ
した最も低いプライオリティルールで構成される。一般的なファイアウォールに関して、
アクションは、パケットをドロップさせる(デフォルを否定する)又は通過させる(デフ
ォルトを許可する)。
【0067】
管理CPUは、NOXによって構成されたローカルなソフトウェアテーブルを調べても
よい。もしマッチしないエントリが見つけ出されるなら、パケットはコントローラに転送
されてもよい。NOXは、オープンフローのようなプロトコルを用いて、フローエントリ
を付加又は削除するコマンドを送ることができる。スイッチ管理CPUは、SoCによっ
てサポートされたACLsの能力を利用するためにプログラムされることができ、そして
SoC、ACLsのフレキシビリティと能力に基づいてSoC、ACLsテーブルを配置
することができる。管理CPUは、NOXの要求を処理するために必要なACLテーブル
を配置してもよく、フローテーブルで存在する十分なスペースが提供される。
管理ソフトウェアは、一般的に、ネットワークオペレーションに影響を与えるかもしれ
ない複数の要因と問題に気付くように設定される。管理プロセッサは、より低いプライオ
リティでフローエントリの前により高いマッチングプライオリティのフローエントリが見
つけられ及び処理されることを保証し、そして、それに応じてACLテーブルでエントリ
のアレンジメントを再設定してもよい。もしNOXによって要求されたエントリの数がA
CLテーブルで利用可能なスペースを超えるなら、プロセッサはそれ自身のソフトウェア
テーブルにエントリを超過又は追加でストアしてもよい。ローカルな使用において、プロ
セッサテーブルはACLsにストレージの注意深い任務を要求してもよく、そして、いく
つかの場合には、フローエントリプライオリティの調整が作用する。ACLテーブルでマ
ッチするエントリは、管理CPUに送られないであろう、そしてそれでソフトウェアテー
ブルでマッチを見いださないであろう。そのために、このようなフローのパフォーマンス
にネガティブな影響を与えるのを避けるために、プロセッサソフトウェアテーブルにエン
トリを置くことに関して、管理ソフトウェアはルールで構成されてもよい。さらに、スイ
ッチハードウエアが2又はそれ以上のSoCsを構成する場合、管理ソフトウェアは、チ
ップの入力及び出力の間を移動するパケットを許すために、スイッチで2つの場所でAC
Lsをセットしてもよい。
【0068】
従来のACLsは、一般的に、期限切れのコンセプトを有しないが、NOXによって挿
入されたフローエントリは、一般的に、期限切れのメカニズムが提供される。ACLsに
おけるこの矛盾をサポートするために、管理CPU上で動いているソフトウェアは、AC
Lエントリがトラフィックとマッチし続けるかどうかを記録するように設定されてもよい
。他のフォワードへの追加におけるエントリに関連されたカウンタを増加するアクション
とNOXによって設定されたドロップアクションを設定することによって、このような追
跡は達成されていてもよい。ソフトウェアは、それからACLカウンタをポールし、そし
てパケットが最後のポールインターバルからエントリとマッチしたかどうかチェックして
もよい。もしマッチしないパケットがエントリのための動作時間の所定の期間に関して監
視するなら、エントリはACLテーブルから取り除かれてもよい。
【0069】
発明のある特定の態様によって構成されたシステムは、包括的なコントロール、スケー
リング、バックワードの互換性、自動設定及びバーチャル環境を含むある特性を示す。
【0070】
包括的なコントロール特性に関して、
図7は、ネットワークを通してパケットのパスを
指示できるフローエントリを示し、そして特にパスがフローエントリのセットによって指
示されるヘッダHを持っているパケットのパスを描写する。ある特定の実施形態はネット
ワークで処理するフローの方法に関して完全なコントロールを有するシステムを構成する
。これらのシステムは、フローへのサービスを拒否する、フローでいくつか又は全てのパ
ケットをドロップする、ネットワークエレメントで適切なフローエントリを挿入すること
によってネットワークを通してパスを選択する、フローエントリを用いて選ばれたサービ
スの品質(「QoS」)を可能にする、挿入することによって及び難しいパケット検査又
はデータロギングが可能なエレメントのような、所望のサービスを供給するネットワーク
エレメントにつながるパスのピッキングによるパスに沿ってサービスを挿入することによ
って、暗号化、カプセル化、アドレス変換、限界率(rate-limiting)及びステートフル
トンネリング(stateful tunneling)のような種々のパケット単位の動作をネットワーク
エレメントに実行させる、ことを含む種々のアクションを通してコントロールを実行して
もよい。サービスに挿入する能力はアブストラクションで現在サポートされていないアク
ションを実行するためのシステムを認めるから、ネットワークデバイスをコントロール又
はモニタするために使われる、いくつかのアブストラクションの制限によってシステムが
拘束されないことを、この後のコントロールオプションは明示する。
【0071】
ある特定の実施形態において、マネージメント決定は、種々のファクタがベースとされ
、それは、ソース及び/又はデスティネーションユーザアイデンティティ、役割、ロケー
ション、グループメンバーシップ、及び他の特質;ソース及び/又はデスティネーション
ホストアイデンティティ、役割、ロケーション、グループメンバーシップ、及び他の特質
;ローカル及び又は他のマネージメントアプリケーションによって種々のネットワークイ
ベント及び/又は通知を含むグローバルなネットワークコンディション、;日付と時間を
含む。マネージメント決定はフローの中間で変更されることができる。例えば、もしネッ
トワークコンディションが変化するか、又は何か他のネットワークイベントが検出される
なら、フローが難しいパケット点検のサービスによってルートが変更され、及び/又は追
加の検査を受けさせられることができる。
【0072】
ある特定の実施形態において、NOXは極めて大きいシステムサイズにスケーリングさ
れることができる。これらの実施形態において、デザインのある特定の一貫性必要条件(
consistency requirement)がしっかりとコントロールされている必要があてもよい。一
般的に、指定されたポリシとともに、コントロール決定をするために、アプリケーション
はしばしばネットワークビューからのデータだけを使うから、ネットワークビューだけが
コントローラの至る所で連続して(consistently)使われる必要がある。個別のパケット
又はフローの状態についての情報がないことは一般的にこれらのコントロール決定をさせ
ることに使われるので、コントローラがどのフローを受けるかにかかわらず、フローと関
係があるコントロール決定における一貫性が達せられるであろう。
【0073】
ある特定の実施形態において、ネットワークビューは新しいフローが到着するレートと
比較して非常にゆっくりと変化する。これは、コントローラの大きいセットのグローバル
な一貫したビューをネットワークビューが提供することを可能にする、そしてそれは、ネ
ットワークでフローのサブセットのケアをそれぞれ行い、システムに並列に多くのコント
ローラを利用させることを可能にし、それによってシステムがスケーリングされることを
可能にする。システムのスケーリングを制限するファクタはネットワークビューの変更の
レートである。生の計算の必要条件に関して、シングルサーバがたいていの現在の企業ネ
ットワークのために容易に変更のレートを処理することができる。
【0074】
さらに、一般的に、パケットアライバルとフローアライバルを含むイベントのような、
速いタイムスケールの上で起こるイベントのために、NOXは並行して使うことができる
。パケットアライバルはグローバルなパケット単位の調整なしで一般的に個別のスイッチ
によって処理され、そしてフロー開始はグローバルなパケット単位の調整なしでコントロ
ーラによって処理されることができる。フローがどのコントローラにでも送られることが
でき、それで、コントローラプロセスを処理しているサーバをさらに加えることによって
、システムの容量は増やされることができる。ネットワークビューのグローバルなデータ
構造は、主として非常に大きいネットワークのために保守されることができるほど十分ゆ
っくりと一般的に変化する。レジリエンス(resilience)に関して、しかしながら、ネッ
トワークビューは複製の小さいセットの上に維持されてもよい。
【0075】
発明のある特定の実施形態は、後進的な従来のシステムと互換性があるコンポーネント
とエレメントを構成する。発明の態様によって構成されたシステムは、ネットワークで付
加されたデバイスの一部において特別なアクションを要求されない。例えば、それらが標
準的なイーサネット(登録商標)ネットワークに付加されるように、イーサネット(登録
商標)の接続されたデバイスが動作することができ、よって、変更を要求されない。発明
の態様によって構成されたシステムは、ここで述べた類似の機能性と共に、オープンフロ
ーをサポートしないネットワークエレメント又は他の標準ベースのインターフェイスと共
存することができる。これらの非オープンフローのネットワークエレメントは通常パケッ
トを転送するであろう、そしてシステムは体的なネットワーク構造にそれらを単に組み込
むことができる。しかしながら、システムはこれらの変更されていないネットワークエレ
メントがどのように作用するかに関してコントロールさせることが可能でなくてもよく、
しかし、それらが従うネットワーキング標準(例えば、標準的なイーサネット(登録商標
)など)に従ってこのようなコンポーネントを特徴づけてもよい。
【0076】
ある特定の実施形態は、ネットワークとその構成要素の自動設定をサポートする。構成
は、役割、特質及びグループメンバーシップのようなネットワークエンティティについて
の必要な情報を取り込んでもよいシステムディレクトリを使って促進されてもよい。管理
目的は、1つ又はそれ以上のマネージメントアプリケーション又はシステムファイルで明
瞭に表現されたポリシのセットを通して獲得されてもよい。システムに入力している新し
いネットワークエンティティは自動的に検出されることができ、そして適切なポリシは新
しいエンティティで通信に適用されることができる。同様に、システムに入力している新
しいネットワークエレメントは自動的に検出されることができ、そしてフローエントリ又
は他のマネージメント指令がシステムポリシのとおりに新しいエレメントに送られること
ができる。従って、しっかりとコントローラと通信するために必要な暗号キーでエレメン
トを装備するときを除いて、一般的に個別のネットワークエレメントの明示的な構成の必
要がない。
【0077】
ある特定の実施形態は、バーチャルマシン(「VM」)とバーチャルスイッチを持って
いてバーチャル環境をサポートする。VMはネットワークエンティティのフォームであり
、そしてバーチャルスイッチはネットワークエレメントのフォームである。もしそれぞれ
のサーバ又はネットワークエレメントがそのバーチャルスイッチの上にオープンフローの
ようなアブストラクションをサポートするなら、システムは正確にポリシを強制する。V
Mが動作する又は同じサーバの上に同一場所に配置される(co-locate)場合にこれは正
確に維持し、そして、オープンフローの実施(implementation)と比べて、サーバの上に
特別な機能性を必要としない。
【0078】
ある特定の実施形態は、トラブルシューティングとフォレンシック(forensics)のた
めに使われるかもしれないネットワーク状態のヒストリを維持する。システムは、到着及
び出発のタイミングに加えて、フローの完全なリストとパケット及びバイトのようなそれ
らの統計値に加えて、ネットワークビューのヒストリの記録を保持する。時間内に任意の
ポイントで、オペレータにネットワークビューの状態を見ることをこれは許す。例えば、
現在の時間の2年又は2時間前にネットワークの完全なビューをオペレータは見てもよい
。ヒストリのビューから、オペレータがどのユーザとホストがパケットを送ったか決定し
てもよい。すべての通信のヒストリは、定義された一定の時期にわたって起きたネットワ
ークイベントを決定するために使われることができるネットワークトラフィックのフロー
レベル分析をオペレータに実行できるようにする。それでヒストリは、電子メール送信、
ホストリブート及びターゲットイベントの先の及び/又は次のイベントを明らかにするか
もしれない。ヒストリのビューは、一般的に、個別のユーザに過去のイベントの明確な帰
属を認める高レベルの名前と低レベルのアドレスの間のビンディングのヒストリを含む。
それで、誰がファイルを転送したか、そして誰がある時間に選ばれたホストにログインし
たかは決定されることができる。この情報は、ネットワークのトラブルシューティングの
ために、及び過去のネットワークトラフィックにおいて異常又は不審な動作の種々のフォ
ームを検出するために使われることができる。NOXは、このようなトラブルシューティ
ングとフォレンシックの分析をサポートする追加の情報を提供することができる。
【0079】
ある特定の実施形態は、拡張されたルーティング機能を提供し、そしてフローがネット
ワークを通してとるパスのルーティングの上に完全なコントロールを有するシステムを提
供する。コントローラは、ネットワークを通ってフローからのパケットを任意のパスで運
ばせるであろうフローエントリのセットをセットアップすることができる。特に、パスは
、シングルの「スパンニングツリー(spanning tree)」から選ばれる必要がなく、そし
て同じソースとデスティネーションの間に行っている異なったフローが異なったパスをと
ることができる。さらに、マネージメントアプリケーションは、いつでも、フローエント
リの新しいセットを単に挿入することによって、フローのルートを変更することができる
。これは、バランスをとってロードを達成するルートを選択する、ショートカットされた
パスを使う、そして速いフェイルオーバ(failover)をサポートするなどのマネージメン
トアプリケーションを許す。1つ又はもっと多くのネットワークでのリンクが過度に利用
されるとき、ロードバランスを用いてもよい。アプリケーションは、オーバロードされた
リンクをトラバースするフローのために新しいパスを選ぶことができる、又は新たに到着
しているフローのためにそのリンクを避けるパスを選ぶことができる。特に、ルーティン
グは、ネットワークロードを広げるために多数のパスを利用することができる。
【0080】
ショートカットされたパスは階層的(hierarchical)なパターンの後に続く必要がない
ルートを提供する、そしてそこですべてのフローは主要な集合体スイッチを通して移動し
なくてはなりません。その代わりに、中心の階層を避けるパスである「ショートカット」
をパスが選択することができる。速いフェイルオーバは、故障の発見上における故障した
リンクをトラバースしたそれらのパスだけのルートを変更するために使われる。これは故
障の間に機能するためにたいていのフローを認める。必要である場合は、コントローラが
故障したリンクを通知されるとすぐに、フローのリルーティングは達成され得る。
【0081】
ある特定の実施形態は、改善されたパケットインターセプションをサポートし、そして
ホストスリープのような機能と関連づけられる。動作中で使
わないとき、従来のコンピュ
ータは、スリープ又はさもなければ電力セーブのための能力をサポートしてもよい。しか
しながら、これらのパケットがCPUによって処理される必要があるから、これらのネッ
トワークインターフェイスカード(「NIC」)におけるパケットのアライバルは、電力
低減特性を妨害することができる。しばしば低いデューティ時の間に、トラフィックのほ
とんどすべては、デスティネーションホストに有用な情報を伝えず、そして重要なアクシ
ョンがホストによってとられることが要求されない、ネットワークチャッタ(network ch
atter)である。本発明の態様によれば、コントローラは、これらのパケットを転送しな
いことを決めることができ、そして所望のホスト(intended host)に代わってパケット
を処理してもよい。例えば、ネットワークコントローラ又はその代理として動作している
ネットワークエレメントは、デスティネーションホストがネットワークと連絡をとって残
存するかどうかをつかむために追及するある特定のネットワーク要求に応答することがで
きる。これは、その減少した電力モードでホストを維持することを可能にするであろう。
しかしながら、コントローラは、ホストに適切に応答することを可能にするために、セキ
ュアシェル(「SSH」)トラフィック、警告、問合せ及び他の要求のような、重要なト
ラフィックを認識及び転送することができる。それらを転送するそしてあるいはフローエ
ントリを確立する前に、コントローラがパケットを点検することによって、どのパケット
を転送するかについて、ネットワークマネージャはインテリジェントな決定をすることが
できる。
【0082】
ある特定の実施形態はコントローラを守ることができ、そしてサービス否定(「DoS
」)からのネットワークビューは攻撃する。コントローラ及びネットワークビューに対す
るフラッディングサービスの否認攻撃を妨げるために、システムは個別のネットワークエ
レメント及びエンティティがコントローラとシステムの他のエレメントに向かってパケッ
トを送ることができるレートを制限することができる。これは、重大なネットワークとシ
ステムリソースを保護することができる。コントローラがリソースオーバーロードを検出
して、そして制限するべき適切なフローエントリを修正する、又はオーバーロードリソー
スへのアクセスを妨げることができるので、この保護は可能である。
【0083】
発明の前述の説明は、実例であり、そして限定しないことが意図される。例えば、発明
を理解できるであろうこれらの技術で熟練した人たちは、上述した機能(functionalitie
s)及び性能(capabilities)の種々の組み合わせで実施されることができて、そして上
述よりも少数又は追加のコンポーネントを含むことができる。発明のある特定の追加の態
様及び特徴は、以下でさらにセットされて、そして、現在の公表によって教えられた後で
、これらの技術で熟練した人たちによって理解されるであろうように、もっと多くの上記
の詳細で記述された機能とコンポーネントを使って得られることができる。
【0084】
発明のある特定の実施形態は、(ネットワークアドレス翻訳、暗号化、カプセル化、ト
テートフルトンネリング及び種々のサービスの品質フォームを含めて)グローバルなルー
ティングと他の転送動作をコントロールするためのシステム及び方法を提供する。これら
の決定は、フロー開始のようなリアルタイムで各フローに関して個々にさせることができ
、(ホスト、ユーザ、サービスなどのために)高レベルの名前に関して表現された一般的
なポリシをベースにし得る。これらのポリシの実行はネットワークトポロジから独立でき
、そして、実行はユーザとホストが動く及びネットワークが変化するときは正当を維持す
る。発明のある特定の実施形態は、たいていのコマーシャルスイッチングチップで備えら
れたACL機能を使って実行されることができる。
【0085】
発明のある特定の実施形態は、包括的なネットワークビューを維持するためのシステム
及び方法を提供する。これらの実施形態のいくつかにおいて、ネットワークビューはネッ
トワークエレメントのトポロジを構成する。これらの実施形態のいくつかにおいて、ネッ
トワークビューは、エンティティのロケーション、ユーザ、サービス及びホストを含むエ
ンティティを識別する。これらの実施形態のいくつかにおいて、ネットワークビューのヒ
ストリは、ネットワークフローのヒストリとともに、持続される。
【0086】
発明のある特定の実施形態は、ネットワークエレメントをコントロールするために、ネ
ットワークビューへのアクセス、フロー開始を含むネットワークイベントの通知、ネット
ワークビュー及びコントロールメカニズムの変更を高レベルの言語に与える集中化された
プログラムインターフェイスを提供する。これらの実施形態のいくつかにおいて、システ
ムはグローバルなルートのリアルタイムのフロー単位のコントロールを提供する。これら
の実施形態のいくつかにおいて、システムはネットワークを通してフローのパスを、そし
てネットワークエレメントによってフローの処理をコントロールする。これらの実施形態
のいくつかにおいて、システムは、グローバルな一貫性を必要とするネットワークビュー
だけで、一貫性必要条件の厳密な分類を通して拡張可能である。これらの実施形態のいく
つかにおいて、フローに関しての決定はグローバルなネットワークビューとフロー状態に
基づく。これらの実施形態のいくつかにおいて、これは、ローカルからネットワークビュ
ーがゆっくりと変化することを除いて、急速にパラメータが変化することを除いて、一貫
性を分類することを許す。これらの実施形態のいくつかにおいて、フロー状態は複数のコ
ントローラのそれぞれによって独立して処理される。
【0087】
発明のある特定の実施形態は、ネットワークを自動設定するための方法を提供する。こ
れらの実施形態のいくつかにおいて、自動設定は新しいデバイス及びネットワークに接続
されたサービスを自動的に検出することを含む。これらの実施形態のいくつかにおいて、
自動設定は自動的にアップデートしているフローエントリ及び他の構成の情報を含む。こ
れらの実施形態のいくつかにおいて、フローエントリ及び他の構成の情報のこの自動的な
アップデートは、種々のネットワーク変更に直面して保守されるグローバルな指令(「ポ
リシ」)の実行を許す。
【0088】
発明のある特定の実施形態は、低電力モードでホストを維持することを可能として、パ
ケットのインテリジェントなインターセプションのためにサポートすることを提供する。
【0089】
発明のある特定の実施形態は、VMを移行させるためのサポートを含むバーチャル環境
に関してサポートを提供する。これらの実施形態のいくつかにおいて、ここで多数のVM
はある特定のデバイスと結び付けられる、システムはこれらの共同レジデント(co-resid
ent)のVMsの間で通信のコントロールを可能にする。これらの実施形態のいくつかに
おいて、インバンドのコントロールがデバイスを管理するために使われる。これらの実施
形態のいくつかにおいて、スイッチは、グローバルな機能を提供するために、ACL機能
を使って、コントロールされる。
【0090】
発明のある特定の実施形態は、シングルシステムを通して多数のネットワークを管理及
び安全に保つためのサポートを提供する。
【0091】
発明のある特定の実施形態は、異なった管理上の権限にコントロールを分割することが
できるようにして、シングルネットワーク基礎構造の多数のマネージメントシステムシェ
アコントロールを持つためのサポートを提供する。
【0092】
発明のある特定の実施形態は、ネットワークを管理するためのシステムと方法を提供す
る。これらの実施形態のいくつかは、ネットワークの現在の状態のネットワークビューを
維持することと、ネットワークの状態の変更に対応しているイベントを発表することと、
そしてネットワークビューとイベントの1つに基づいてネットワークエレメントの1つを
設定することとを具備し、ネットワークの現在の状態はネットワーク構成要素とネットワ
ークトポロジを特徴付け、ネットワーク構成要素はネットワークエンティティ及び現在ア
ドレス可能なネットワークエレメントを含む。これらの実施形態のいくつかにおいて、ネ
ットワークエンティティはネットワークユーザを含む。これらの実施形態のいくつかにお
いて、ネットワークビューは1つ又はそれ以上のネットワークマネージメントアプリケー
ションによってアクセスされる。これらの実施形態のいくつかにおいて、ネットワークの
現在の状態はネットワーク構成要素のロケーションを含む。これらの実施形態のいくつか
において、ネットワークの現在の状態はネットワークでさらにデータフローを特徴づける
。
【0093】
これらの実施形態のいくつかにおいて、ネットワークエレメントの1つを構成すること
はネットワークトポロジを変えることを含む。これらの実施形態のいくつかにおいて、ネ
ットワークトポロジを変えることは、複数のネットワークエレメント、データフローの1
つ又はさらに多くに対応しているルーティング情報にルーティング情報を提供することを
含む。これらの実施形態のいくつかは、さらに前のネットワークビューのヒストリを保存
することを含む。これらの実施形態のいくつかにおいて、ヒストリでのそれぞれの前のネ
ットワークビューは、指定された時間でネットワーク状態を記録し、指定された時間より
前に検知されたイベントをさらに記録する。これらの実施形態のいくつかにおいて、指定
された時間はスケジュールによって定義され、そしてイベントのそれぞれの発生はヒスト
リで1つ前のネットワークビューだけで記録される。これらの実施形態のいくつかにおい
て、指定された時間はイベントの発生に対応する。これらの実施形態のいくつかにおいて
、データフローのそれぞれは、ネットワークエレメントの1つ又はさらに多くの転送行為
と関連付けられ、そしてネットワークビューに基づいて転送行為のいくつかをコントロー
ルすることをさらに含む。
【0094】
これらの実施形態のいくつかにおいて、転送行為のいくつかをコントロールすることは
、イベントの1つにすぐに反応する転送行為の少なくとも1つを変更することを含む。こ
れらの実施形態のいくつかにおいて、転送行為のいくつかをコントロールすることは、ネ
ットワークトポロジを変えることに続く転送行為の少なくとも1つを変更することを含む
。これらの実施形態のいくつかにおいて、転送行為の少なくとも1つを変更することにつ
いてのステップは、ネットワークコントローラによって行われる。これらの実施形態のい
くつかにおいて、ネットワークトポロジを変えることは、新たにネットワークに挿入され
たデバイスを自動設定することを含む。これらの実施形態のいくつかにおいて、デバイス
を自動設定することは、それぞれの自動設定されたデバイスに少なくとも1つのACLを
供給することを含む。これらの実施形態のいくつかにおいて、データフローのそれぞれは
1つ又はそれ以上のネットワークエレメントの転送行為に関連付けられ、そしてデバイス
を自動設定することはネットワークビューに基づいて転送行為の少なくとも1つを変更す
ることを含む。これらの実施形態のいくつかにおいて、ネットワークエレメントの1つを
設定することはネットワーク管理システムによって実行される。これらの実施形態のいく
つかにおいて、イベントのいくつかは、ネットワークの現在の状態の比較とネットワーク
管理システムによって整備されたネットワーク状態のヒストリに基づいて、ネットワーク
管理システムによって生成される。
【0095】
これらの実施形態のいくつかにおいて、ネットワーク管理システムは、ネットワークの
現在の状態を記述しているネットワークビューを構成する。これらの実施形態のいくつか
において、ネットワークの状態は、現在のネットワークトポロジ、ネットワーク上の複数
のネットワークエレメントのロケーション、ネットワーク構成要素のロケーション、ネッ
トワークの少なくとも1つのユーザとネットワークマネージャを含むネットワーク構成要
素を含む。これらの実施形態のいくつかにおいて、ネットワークマネージャは、ネットワ
ーク状態に基づいてネットワークエレメントを構成する。これらの実施形態のいくつかに
おいて、ネットワークビューはネットワーク構成要素によって提供された情報から生成さ
れ、そしてネットワークビューの一部はネットワーク構成要素のいくつかによってアクセ
ス可能である。
【0096】
これらの実施形態のいくつかにおいて、ネットワークエレメントはスイッチを含む。こ
れらの実施形態のいくつかにおいて、ネットワークエレメントはルータを含む。これらの
実施形態のいくつかにおいて、ネットワークマネージャは複数のネットワークエレメント
の至る所に分散される。これらの実施形態のいくつかにおいて、ネットワークエンティテ
ィはネットワークを通して提供されたサービスを含む。これらの実施形態のいくつかにお
いて、ネットワークエンティティはアプリケーションを含む。これらの実施形態のいくつ
かは、ネットワークマネージャの選択されたファンクションへのアプリケーションアクセ
スを提供しているネットワークオペレーティングシステムをさらに構成する。これらの実
施形態のいくつかにおいて、選択されたファンクションはネットワークビューを含む。こ
れらの実施形態のいくつかにおいて、選択されたファンクションはイベント通知機能を含
む。これらの実施形態のいくつかにおいて、イベント通知ファンクションはネットワーク
トポロジに対する変更の通知を提供する。これらの実施形態のいくつかにおいて、イベン
ト通知ファンクションは、ログインとログアウトイベントを含む、ユーザログイベントの
通知を提供する。
【0097】
これらの実施形態のいくつかにおいて、イベント通知ファンクションはフロー開始の通
知を提供する。これらの実施形態のいくつかにおいて、ネットワークマネージャはネット
ワーク状態の変更に基づいてスイッチを再設定する。これらの実施形態のいくつかにおい
て、スイッチはデータフローと関連付けられた新しい転送行為を確立するために再設定さ
れる。これらの実施形態のいくつかにおいて、スイッチはアクセスコントロールリストを
用いて再設定される。これらの実施形態のいくつかにおいて、スイッチはオープンフロー
を用いて再設定される。これらの実施形態のいくつかにおいて、スイッチはオープンフロ
ーを用いて再設定される。これらの実施形態のいくつかにおいて、ネットワークマネージ
ャは新たに付加されたネットワークエレメントに設定情報を検出及び自動的に供給する。
これらの実施形態のいくつかにおいて、設定情報は1つ又はそれ以上のネットワークアド
レスを含む。これらの実施形態のいくつかにおいて、設定情報は1つ又はそれ以上のルー
ティングテーブルを含む。これらの実施形態のいくつかにおいて、設定情報は1つ又はそ
れ以上のアクセスコントロールリストを含む。これらの実施形態のいくつかにおいて、設
定情報はネットワークビューの一部を含む。
【0098】
これらの実施形態のいくつかは、前のネットワーク状態のヒストリ、ネットワーク状態
におけるヒストリ記録の変化、そしてネットワーク状態における変化を起こしたイベント
をさらに構成する。これらの実施形態のいくつかにおいて、ネットワークの状態は、パケ
ット分類、言語ビンディング、ネットワークエンティティのロケーション、データフロー
のルーティング情報とトポロジの1つ又はさらに多くをさらに含む。これらの実施形態の
いくつかにおいて、ネットワークの状態は、データフローの状態に対応して情報をさらに
含む。これらの実施形態のいくつかにおいて、ネットワーク構成要素は、それぞれのデー
タフローと関連されたネットワークエレメントによって維持されたそれぞれのデータフロ
ーの状態に対応しているネットワークエレメントと情報を構成する。
【0099】
発明のある特定の実施形態はネットワークオペレーティングシステムを提供する。これ
らの実施形態のいくつかはネットワークの現在の状態を記述しているネットワークビュー
を構成し、ネットワークの状態は、現在のネットワークトポロジ、ネットワーク上の複数
のネットワークエレメントのロケーション、ネットワーク構成要素のロケーション、ネッ
トワークの少なくとも1つのユーザを含むネットワーク構成要素、ネットワーク構成要素
とアプリケーションにアクセス可能なネットワークサービスのセットでインストールされ
たアプリケーションへのネットワークビューへのアクセスを提供しているプログラムイン
ターフェイス、そして現在のネットワーク状態と関係がある情報へのアクセスを提供する
ことを含む。これらの実施形態のいくつかにおいて、情報は、パケット分類、言語ビンデ
ィング、ネットワークエンティティのロケーション、データフローのルーティング情報と
トポロジの1つ又はさらに多くを含む。
【0100】
発明のある特定の実施形態はネットワーク接続を処理するためのシステムと方法を提供
する。これらの実施形態のいくつかは、ネットワークでフローを識別することとソースか
らデスティネーションへデータを導くための1つ又はそれ以上のネットワークエレメント
を構成することを含み、フローはデータのソースとデスティネーションを識別し、少なく
とも1つのネットワークエレメントを設定することは、1つ又はもっと多くのネットワー
クエレメントでアクセスコントロールリスト(「ACL」)を変更することを含む。これ
らの実施形態のいくつかにおいて、少なくとも1つのネットワークエレメントを設定する
ことは、少なくとも1つのネットワークエレメントのためにACLを生成することをさら
に含む。これらの実施形態のいくつかにおいて、少なくとも1つのネットワークエレメン
トはスイッチを含む。これらの実施形態のいくつかにおいて、スイッチはチップ上のスイ
ッチ(「SoC」)を含み、ACLを変更することについてのステップはSoCでACL
テーブルに生成されたACLを加えることを含む。これらの実施形態のいくつかにおいて
、ACLテーブルはSoCで存在する。これらの実施形態のいくつかにおいて、ACLテ
ーブルはスイッチでプロセッサと結び付けられたストレージに存在する。これらの実施形
態のいくつかにおいて、少なくとも1つのネットワークエレメントを設定することは生成
されたACLに終了期間(expiration period)を供給することをさらに含む。これらの
実施形態のいくつかにおいて、少なくとも1つのネットワークエレメントを設定すること
はACLに終了期間を供給することをさらに含む。
【0101】
これらの実施形態のいくつかにおいて、アクセスコントロールリストを変更することは
、1つ又はもっと多くのネットワークエレメントにおいてACLテーブルでエントリの処
理を再設定することを含む。これらの実施形態のいくつかにおいて、フローを識別するこ
とは、ネットワークの現在の状態のネットワークビュー、ネットワーク構成要素とネット
ワークトポロジを特徴づけているネットワークの現在の状態、ネットワークエンティティ
を含むネットワーク構成要素、及びネットワーク上で現在アクセス可能なネットワークエ
レメントを維持することを含む。
【0102】
発明のある特定の実施形態はネットワークトラフィックをインターセプトするためのシ
ステムと方法を提供する。これらの実施形態のいくつかは、ネットワークに接続されたホ
ストのスリープ状態を決定すること、ホストに向けられたデータ通信を点検するためのネ
ットワークエレメントを設定すること、ホストによってアクションが要求されたデータ通
信における情報の決定の上でホストにデータ通信の一部を転送すること、もしデータ通信
がホストによってアクションを要求されないのならホストに代わって要求に選択的に応答
することを含む。これらの実施形態のいくつかにおいて、ホストによってアクションが要
求されている情報は1つ又はそれ以上の要求を含む。これらの実施形態のいくつかにおい
て、ホストによってアクションが要求されている情報は1つ又はそれ以上の問合せを含む
。これらの実施形態のいくつかにおいて、ホストによってアクションが要求されている情
報は1つ又はそれ以上の警告を含む。これらの実施形態のいくつかにおいて、ホストによ
ってアクションが要求されている情報はSSHトラフィックを含む。
【0103】
本発明は特定の模範的な実施形態に関して記述されたが、発明のより広い思想及び範囲
から外れずに、種々の修正と変更がこれらの実施形態でなされることで、技術において普
通の技能の1人にそれは明らかであるであろう。したがって、明細書及び図面は、限定的
な意味よりむしろ実例であるとみなされる。