(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IS,JP,KE,KG,KM,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LT,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US,UZ,VC
特定のネットワーク制御器は、第1の制御器から第1の入力セットを受信し、第2の制御器から第2の入力セットを受信する。その後、特定の制御器は、第1の入力セットを使用して出力セットの計算を開始する。第1の制御器の障害発生後、特定の制御器は、第2の制御器から第3の入力セットを受信する。第3の入力セットと第1の入力セット又は第2の入力セットとは、まとめて処理され且つ別の入力グループとは別に処理される入力グループを形成する。その後、特定の制御器は、入力グループの全ての入力が特定の制御器に到着したことを示すインジケータを第2の制御器から受信する。インジケータを受信し且つ出力セットを完全に計算した後、特定の制御器は、第4の制御器又は被管理転送要素に出力セットを送出する。
ネットワークにおいてデータを転送する複数の被管理転送要素を含む前記ネットワークを管理する特定の制御器が、第1の制御器及び第2の制御器からの入力を使用して転送状態を計算する方法であって、
前記第1の制御器から第1の入力セットを受信し、前記第2の制御器から第2の入力セットを受信する工程と、
前記第1の入力セットを使用して出力セットの計算を開始する一方で、前記第2の入力セットを格納する工程と、
前記第1の制御器の障害発生後、第3の入力セットの前記第2の制御器からの受信を開始する工程であって、前記第3の入力セットと、前記第1の入力セットまたは前記第2の入力セットとは、別の入力グループとは独立にまとめて処理されるべき特定の入力グループの一部である工程と、
前記第2の入力セット及び前記第3の入力セットを使用して、前記出力セットを計算する工程と、
前記特定の入力グループの前記第3の入力セットにおける最後の入力を前記特定の制御器が受信したことを示し、それにより前記特定の入力グループの全ての入力が前記特定の制御器に到達したことを示すインジケータを前記第2の制御器から受信する工程と、
前記インジケータを受信し前記出力セットを完全に計算した後に、第3の制御器に前記出力セットを送出する工程と
を備え、
前記第3の制御器は、その後に前記特定の制御器からの前記出力セットを処理し、前記処理された出力を被管理転送要素に送出することを特徴とする方法。
ネットワークにおいてデータを転送する複数の被管理転送要素を含む前記ネットワークを管理する受信側制御器が、送出元制御器のセットからの入力を使用して転送状態を計算する方法であって、
各入力グループが別の入力グループとは独立にまとめて処理される複数の入力グループを、前記送出元制御器のセットから受信する工程と、
前記入力グループが特定の条件を満たす場合、出力セットを生成するために前記入力グループのうちの2以上をまとめて処理する工程と、
前記入力グループが前記特定の条件を満たさない場合、出力セットを生成するために、入力グループ毎の処理をまとめて同時に行うことにより前記入力グループを処理する工程と、
被管理転送要素のセットに前記生成された出力セットを送出する工程と、
を備えることを特徴とする方法。
前記出力セットを受信する前記被管理転送要素のセットは、別の入力グループとは独立にまとめて処理される入力グループとして前記出力セットを扱うことを特徴とする請求項6記載の方法。
少なくとも1つの処理装置により実行される場合に、ネットワークにおいてデータを転送する複数の被管理転送要素を含む前記ネットワークを管理する第1のコントローラを格納するコンピュータ可読媒体であって、前記第1のコントローラは、
エンドマシンのセットを論理的に接続する論理転送要素に関する情報の要求を受信する命令と、
前記論理転送要素を実現する被管理転送要素のセットを管理する第2のコントローラのセットを識別する命令と、
前記要求を前記第2のコントローラのセットに分配する命令と、
前記第2のコントローラのセットのそれぞれから前記要求された情報の少なくとも一部分を含む応答を受信する命令と、
前記応答のセットが特定の基準を満たす場合、前記第2のコントローラのセットから受信した前記応答を組み合わせ、前記組み合わされた応答を前記要求の送出元に送出する命令
のセットを備えることを特徴とするコンピュータ可読媒体。
前記第1のコントローラは、前記受信した要求を前記被管理転送要素のセットの物理構造の汎用名称を用いて表される汎用物理要求に変換するための命令セットを更に備え、
前記要求を分配するための前記命令セットは、前記汎用物理要求を分配するための命令セットを含むことを特徴とする請求項14記載のコンピュータ可読媒体。
前記第2のコントローラのセットは更に、前記汎用物理要求を前記被管理転送要素のセットの前記物理構造のカスタマイズされた名称を用いて表されるカスタマイズ済物理要求に変換することを特徴とする請求項15記載のコンピュータ可読媒体。
ネットワークにおいてデータを転送する複数の被管理転送要素を含む前記ネットワークを管理する第1の制御器のための、第2の制御器へ送出する転送状態を計算する方法であって、
被管理転送要素のセットの転送挙動を定義する前記転送状態を含む出力の変更のセットを生成する工程と、
前記出力の変更が生成されると、前記出力の変更のセット内の出力の変更の各々を前記第2の制御器に送出する工程と、
前記出力の変更のセットの末尾を示すインジケータを前記第2の制御器に送出する工程とを備え、
前記第2の制御器は、前記第1の制御器からの前記インジケータの受信後にのみ前記第2の制御器が生成する出力セットに対する自身のインジケータを生成することを特徴とする方法。
前記第2の制御器が前記インジケータを受信した場合、前記出力の変更のセット内の前記出力の変更の全てが前記第2の制御器に到着したとみなされることを特徴とする請求項18記載の方法。
前記送出されたインジケータは、入力の変更のセットのうちの全ての入力の変更が前記出力の変更のセットを生成するために使用されたことを更に示すことを特徴とする請求項18記載の方法。
【発明を実施するための形態】
【0010】
以下の本発明の詳細な説明において、本発明の多くの詳細、例及び実施形態を記載及び説明する。しかし、本発明は記載される実施形態に限定されず、説明する特定の詳細及び例のいくつかを用いずに実施されてもよいことが当業者には明らかになるだろう。
【0011】
いくつかの実施形態は、ネットワーク制御器が被管理転送要素のセットの転送挙動を定義するために被管理転送要素のセットにプッシュする転送状態情報を計算するネットワーク制御システムを提供する。いくつかの実施形態において、ネットワーク制御器は、複数の制御器レイヤを有する階層を形成する。論理制御器のセットは、階層の最上位レイヤに位置し、入力された論理制御プレーンデータから汎用物理制御プレーンデータを生成する。論理制御器のセットの下位レイヤは物理制御器のセットであり、いくつかの実施形態において、これは汎用物理制御プレーンデータを被管理転送要素に特有の物理制御プレーンデータにカスタマイズする。
【0012】
いくつかの実施形態において、物理制御器は、被管理転送要素に対するカスタマイズを実際に実行するシャーシ制御器のセットに汎用物理制御プレーンデータを中継する。これらの実施形態において、シャーシ制御器は、制御器により形成される階層の最下位レイヤに存在する。物理制御器又はシャーシ制御器は被管理転送要素とインタフェースし、被管理転送要素にカスタマイズ済物理制御プレーンデータを供給する。被管理転送要素は、制御器から受信したデータを使用して、ネットワークにおいてデータを転送する。
【0013】
階層の上位レイヤの特定の制御器は、階層における下位レイヤの別の制御器に自身の出力データを供給する。いくつかの実施形態において、特定の制御器は、特定の制御器に対するホットスタンドバイ又は冗長制御器として動作する(例えば、階層の下位レイヤの制御器に同一の出力データを供給する)バックアップ制御器を同一レイヤに有する。いくつかの実施形態において、下位レイヤの制御器は、特定の制御器から受信した出力データから自身の出力を生成する。
【0014】
特定の制御器に障害が発生した場合、下位レイヤの制御器は、バックアップ制御器からの同一の出力データを処理することで出力データが変化することのないように、(1)特定の制御器からそれまでに受信した出力データ及び(2)バックアップ制御器からの出力データから自身の出力データを生成する。すなわち、特定の制御器の障害発生後、下位レイヤの制御器は、障害発生前に特定の制御器から受信したデータと同一のデータを含む出力データをバックアップ制御器から受信し且つ処理する。しかし、下位レイヤの制御器は、下位レイヤの制御器の出力データが特定の制御器からの出力データのみを処理することにより生成された場合の出力データと同一になるように、バックアップ制御器からの出力データを処理する。
【0015】
階層の下位レイヤの制御器は、上位レイヤの複数の異なる制御器の各々から出力データを受信する。上位レイヤの制御器からの出力データは、複数の異なるトランザクションとして供給される。いくつかの実施形態において、下位レイヤの制御器は、異なる制御器から受信した出力データから自身の出力データを生成し、自身の出力データを単一のトランザクションとして更に下位のレイヤの制御器のセットに送出する。
【0016】
更に詳細な実施形態を以下の節で説明する。詳細には、最初に第I節において、論理ネットワーク及び物理ネットワークを制御するいくつかの実施形態のネットワーク制御システムを説明する。次に第II節において、更新速度の最低限化を説明する。第III節において、本発明のいくつかの実施形態が実現される電子システムを説明する。
【0017】
I.ネットワーク制御システム
図1は、ネットワーク制御器が被管理転送要素のセットの転送挙動を定義するために被管理転送要素のセットにプッシュする転送状態情報を計算するネットワーク制御システム100を示す。ネットワーク制御システム100は、論理制御器110と、2つの物理制御器115及び120と、3つの被管理転送要素125〜135とを含む。ネットワーク制御システム100は、2つの物理制御器115及び120が3つの被管理転送要素に状態をプッシュする単純化された例を表す。多くの場合、いくつかの実施形態のネットワーク制御システムは、非常に多くの制御器及び数百個又は数千個の被管理転送要素を含む。
【0018】
いくつかの実施形態において、ネットワーク制御器110〜120は、転送状態の計算を実行し、当該状態をフローエントリの形態で被管理転送要素にプッシュする。いくつかの実施形態のネットワーク制御器は、論理ネットワークを定義する論理制御プレーン(LCP)データを受信し、当該LCPデータを物理制御プレーン(PCP)データに変換して被管理転送要素125〜135に送出する。いくつかの実施形態において、論理ネットワークの論理制御プレーンは、論理アドレス空間においてエンドマシン(例えば、仮想マシン)を接続する1つ以上の論理転送要素(例えば、論理スイッチ、論理ルータ)を定義する。論理転送要素は、送出元マシンからのパケットが論理空間において宛先マシンに転送される方法(例えば、論理ポートと仮想マシンのMACアドレスとの結び付き)を定義する。更に、いくつかの実施形態において、LCPは、論理転送要素により実現される論理ポリシー(例えば、アクセス制御リスト)を定義する。LCP及びその構造が実現される物理ネットワークにとって、LCP及びその構造は既知でない。
【0019】
いくつかの実施形態のネットワーク制御器は、被管理転送要素にプッシュされるPCPデータに到達するために、LCPデータの複数の異なる変換を実行する。いくつかの実施形態において、制御器はLCPデータを論理転送プレーン(LFP)データに変換し、その後、LFPデータをPCPデータに変換する。LFPデータは、論理空間においてパケットを転送するための転送エントリを定義する。すなわち、LFPデータは、単に論理ポートとアドレスとを結び付けるだけでなく、アドレスが一致する場合にパケットを論理ポートに転送することを示すエントリを含む。
【0020】
LFPデータからPCPデータへの変換は、論理転送エントリを物理ネットワークに組み込む。PCPエントリは、物理ネットワーク内の論理アドレス空間における転送(例えば、物理ポートに対する論理ポートのマッピング等)を実行するための情報を含む。
【0021】
いくつかの実施形態において、被管理転送要素にプッシュするPCPの計算は、制御器により形成される階層内の異なる制御器レイヤ間で分散される。例えばいくつかの実施形態において、論理制御器110は、少なくとも1つの論理転送要素を管理する。論理制御器110は、
図1の右半分で示すように、LCPからLFPへの変換及びその後のLFPから汎用PCP(UPCP)への変換を実行する。UPCPデータはフローエントリを含む。これらのフローエントリは、何らかの被管理転送要素に特有のデータを含むようにカスタマイズされておらず、特定の物理的実現に特有のデータに対する抽象的概念(例えば、ポート番号、トンネル識別子等)のみを含む。
【0022】
いくつかの実施形態において、特定の論理転送要素を管理する論理制御器は、1つ又は複数の物理制御器にUPCPデータを送出する。例えば論理制御器110は、2つの物理制御器115及び120にUPCPデータを送出する。被管理転送要素の各々は、マスタ物理制御器により管理される。従って、複数の被管理転送要素にわたり実現される論理転送要素に対するUPCPデータは、それらの転送要素を管理する複数の異なるマスタ物理制御器に送出されてもよい。示すように、物理制御器115は、2つの被管理転送要素125及び130を管理するマスタ制御器である。物理制御器120は、被管理転送要素135を管理するマスタ制御器である。
【0023】
物理制御器又は被管理転送要素と同一の物理マシン内のシャーシ制御器(
図1では不図示)のいずれかにおいて、UPCPデータはカスタマイズ済PCP(CPCP)データに変換される。CPCPデータは、特定の被管理転送要素に特有のカスタマイズデータが記入された物理制御プレーンデータである。述べられるように、いくつかの実施形態において、物理制御器は、被管理転送要素から受信した情報を使用して当該変換を実行する。他の実施形態において、物理制御器は、被管理転送要素が存在するホストマシンにUPCPデータを送出する通過点として動作し、この場合、制御器の論理(シャーシ制御器)がUPCPからCPCPへの変換を実行する。
【0024】
被管理転送要素125〜135は、ネットワーク制御器により管理される(例えば、ネットワーク制御器から転送状態情報を受信する)ソフトウェア又はハードウェアの転送要素である。いくつかの実施形態において、被管理転送要素は、ホストマシン上(例えば、ホストマシンのユーザ空間及び/又はカーネル内)で動作するソフトウェアの転送要素である。これらの被管理転送要素は、エンドマシン140〜160からパケットを受信し、パケットに対して論理処理を実行し、物理ネットワークを介して宛先(例えば、異なる被管理転送要素に同様に接続された別のエンドマシン)にパケットを送出する。
【0025】
エンドマシン140〜160は、物理マシン又は仮想マシンであってもよい。いくつかの実施形態において、仮想マシンであるエンドマシンは、それらに対するパケットを転送する被管理転送要素を有する同一ホスト内で動作する。複数の物理ネットワークに属する仮想マシンが単一のホストマシン内に位置してもよいため(例えば、エンドマシン140及び145は、被管理転送要素125が位置する同一のホストマシン内に位置してもよい)、被管理転送要素の各々が複数の異なる論理転送要素を実現してもよい。更に、上述のように、単一の論理転送要素は一般に、多くの被管理転送要素にわたり実現される。
【0026】
仮想マシンを有するホスト上のネットワークエッジに位置する被管理転送要素に加えて、いくつかの実施形態は第2レベル非エッジ被管理転送要素を更に含む(プールノード又はサービスノードと呼ぶ場合もある)。エッジ被管理転送要素がパケットに対する処理の全てを実行できない場合(例えば、宛先MACアドレスと論理ポートとを結び付けるフローエントリを有さないため)、プールノードがパケットを処理して宛先に送出するために、エッジ被管理転送要素はプールノードにパケットを送出する。
【0027】
図2は、いくつかの実施形態のネットワーク制御器200のアーキテクチャの例を概念的に示す。ネットワーク制御器200は、それが処理するデータの種類に依存して、論理制御器、物理制御器又はシャーシ制御器として機能できる。
【0028】
論理制御器である場合、ネットワーク制御器200はLCPデータを入力として受信する。いくつかの実施形態において、ネットワーク制御器200は、LCPデータをLFPデータに変換した後にUPCPデータに変換する。ネットワーク制御器200は、論理制御器であるネットワーク制御器200が管理する論理転送要素を実現する被管理転送要素のマスタである物理制御器のセットにUPCPデータをプッシュする。
【0029】
いくつかの実施形態の物理制御器である場合、ネットワーク制御器200はUPCPデータを入力として受信し、UPCPデータをCPCPデータに変換する。その後、ネットワーク制御器は、ネットワーク制御器200がマスタである被管理転送要素のセットにCPCPデータをプッシュする。他の実施形態において、物理制御器であるネットワーク制御器200は、被管理転送要素のセットが動作するホストにおいて動作するシャーシ制御器のセットにUPCPデータを中継する。これらの実施形態において、ネットワーク制御器200は、この被管理転送要素のセットのマスタである。
【0030】
シャーシ制御器である場合、ネットワーク制御器200は、物理制御器のセットからのUPCPデータを入力として受信する。ネットワーク制御器200は、UPCPデータをシャーシ制御器が管理する被管理転送要素に対するCPCPデータに変換し、被管理転送要素にCPCPデータを送出する。
【0031】
図2に示すように、ネットワーク制御器200は、規則エンジン入力テーブルのセット210、関数テーブル及び定数テーブルのセット215、インポータ220、規則エンジン225、規則エンジン出力テーブルのセット245、変換器250、エクスポータ255、非一時的トランザクションデータベース(PTD)260及びコンパイラ235を含む。コンパイラ235は、制御器の他の構成要素と異なる時点で動作する制御器の1つの構成要素である。コンパイラは、開発者が特定のネットワーク制御器及び/又は仮想環境に対する規則エンジンを指定する必要がある場合に動作し、制御器の残りのモジュールは、制御器が他の制御器又は被管理転送要素とインタフェースする時に実行時に動作する。
【0032】
いくつかの実施形態において、コンパイラ235は、宣言型言語で指定される相対的に小さいセット(例えば、数百行)の宣言型命令240を受信し、制御器のテーブルマッピングを実行する規則エンジン225の動作を指定する大きいセット(例えば、数千行)のコード(すなわち、オブジェクトコード)にこれらを変換する。このように、コンパイラにより、ネットワーク制御器の開発者によるネットワーク制御器の定義及び更新処理が大幅に簡略化される。これは、コンパイラにより、開発者が、ネットワーク制御器の複雑なマッピング動作のコンパクトな定義を可能にする高度なプログラミング言語を使用でき、その後、任意の数の変更(例えば、ネットワーク制御器によりサポートされる論理ネットワーク化機能の変更、ネットワーク制御器の所望の挙動への変更等)に応答して当該マッピング動作を更新できるからである。更に、コンパイラにより、開発者は、マッピング動作を定義する際にイベントがネットワーク制御器に到着する順序を考慮する必要がなくなる。また、開発者は、ネットワーク制御器200が論理制御器、物理制御器又はシャーシ制御器として機能するように、異なる規則セットを用いてネットワーク制御器200をプログラムする。
【0033】
いくつかの実施形態において、規則エンジン(RE)入力テーブル210は、ネットワーク制御器200がどの種類のネットワーク制御器として動作するかに基づいて、異なる種類のデータを有するテーブルを含む。ネットワーク制御器200が論理制御器として動作する場合、入力テーブル210は、LFPデータにマッピングされる必要のあるLCPデータを含み且つUPCPデータにマッピングされる必要のあるLFPデータを含む。ネットワーク制御器200が物理制御器又はシャーシ制御器として動作する場合、入力テーブル210は、CPCPデータにマッピングされる必要のあるUPCPデータを含む。
【0034】
RE入力テーブル210に加えて、ネットワーク制御器200は、規則エンジン225がテーブルマッピング動作のための入力を収集するために使用する他の種々のテーブル215を含む。これらのテーブル215は、規則エンジン225がテーブルマッピング動作を実行するために必要とする定数に対する規定値を格納する定数テーブルを含む。例えば定数テーブル215は、値0として定義される定数「zero」、値4000として定義される定数「dispatch_port_no」、並びに値0xFF:FF:FF:FF:FF:FFとして定義される定数「broadcast_MAC_addr」を含む。
【0035】
規則エンジン225が定数を参照する場合、定数に対して定義された対応する値が実際は検索され且つ使用される。更に、定数テーブル215内の定数に対して定義された値は、変更及び/又は更新されてもよい。このように、定数テーブル215は、規則エンジン225の動作を指定するコードを書き換えるか又は再度コンパイルする必要なく、規則エンジン225が参照する定数に対して定義された値を変更する機能を提供する。テーブル215は、出力テーブル245をポピュレートするために必要な値の計算に使用するために規則エンジン225が必要とする関数を格納する関数テーブルを更に含む。
【0036】
規則エンジン225は、入力データを出力データに変換する1つの方法を指定するテーブルマッピング動作を実行する。規則エンジン(RE)入力テーブルのうちの1つが変更される度に規則エンジンはテーブルマッピング動作のセットを実行し、その結果、1つ以上のRE出力テーブル内の1つ以上のデータタプルが変更される。いくつかの実施形態において、ネットワーク制御システムは、nLogと呼ばれるデータログデータベース言語の変形を使用して規則エンジン225を作成する。データログと同様に、nLogが提供する開発者が異なるイベントの発生時に実行される異なる動作を指定できるようにする宣言規則及び演算子の数は少ない。いくつかの実施形態において、nLogは、nLogの動作を高速化するために、データログにより提供される演算子の限られたサブセットを提供する。例えばいくつかの実施形態において、nLogは、いずれかの宣言規則におけるAND演算子の使用のみを許可する。
【0037】
図2に示すように、規則エンジン225は、イベントプロセッサ222、複数のクエリプラン227及びテーブルプロセッサ230を含む。各クエリプランは、RE入力テーブルのうちの1つに対する変更が発生した時に実行される結合動作のセットを指定する規則セットである。以下、そのような変更を入力テーブルイベントと呼ぶ。各クエリプランは、コンパイラ235により宣言セット240内の1つの宣言規則から生成される。いくつかの実施形態において、2つ以上のクエリプランが1つの宣言規則から生成される。例えばクエリプランは、1つの宣言規則により結合されるテーブルの各々に対して作成される。すなわち、宣言規則が4つのテーブルを結合するように指定する場合、4つの異なるクエリプランがこの1つの宣言から作成される。いくつかの実施形態において、クエリプランは、nLogの宣言的言語を使用することにより定義される。
【0038】
規則エンジン225のイベントプロセッサ222は、各入力テーブルイベントの発生を検出する。異なる実施形態のイベントプロセッサは、入力テーブルイベントの発生を異なる方法で検出する。いくつかの実施形態において、イベントプロセッサは、RE入力テーブルのレコードに対する変更の通知に対するRE入力テーブルとのコールバックに登録する。そのような実施形態において、イベントプロセッサ222は、レコードのうちの1つが変更されたという通知をRE入力テーブルから受信した場合に入力テーブルイベントを検出する。
【0039】
検出された入力テーブルイベントに応答して、イベントプロセッサ222は、(1)検出されたテーブルイベントに対する適切なクエリプランを選択し、(2)テーブルプロセッサ230にクエリプランを実行するように命令する。いくつかの実施形態において、クエリプランを実行するために、テーブルプロセッサ230は、クエリプランにより指定された結合動作を実行し、1つ以上の入力テーブル210及び種々のテーブル215から1つ以上のデータ値セットを表す1つ以上のレコードを生成する。その後、いくつかの実施形態のテーブルプロセッサ230は、(1)結合動作により生成されたレコードからデータ値サブセットを選択する選択動作を実行し、(2)1つ以上のRE出力テーブル245に選択されたデータ値サブセットを書き込む。
【0040】
いくつかの実施形態において、RE出力テーブル245は、論理ネットワーク要素及び物理ネットワーク要素の双方のデータ属性を格納する。テーブル245が規則エンジン225のテーブルマッピング動作の出力を格納する場合、テーブル245をRE出力テーブルと呼ぶ。いくつかの実施形態において、RE出力テーブルは複数の異なるカテゴリでグループ化される。例えばいくつかの実施形態において、これらのテーブルは、RE入力テーブル及び/又は制御器出力テーブルである場合がある。テーブルにおける変更により規則エンジンがクエリプランの実行を必要とする入力ベントを検出する場合、テーブルはRE入力テーブルである。RE出力テーブル245は、規則エンジンに別のクエリプランを実行させるイベントを生成するRE入力テーブル210である場合もある。そのようなイベントを内部入力イベントと呼び、これは、インポータ220により生成されたRE入力テーブルの変更により発生するイベントである外部入力イベントと対比される。
【0041】
テーブルにおける変更によりエクスポータ255が変更を別の制御器又は被管理転送要素にエクスポートする場合、テーブルは制御器出力テーブルである。RE出力テーブル245内のテーブルは、RE入力テーブルである場合もあり、制御器出力テーブルである場合もあり、あるいはRE入力テーブル及び制御器出力テーブルの双方である場合もある。いくつかの実施形態において、RE入力テーブル及びRE出力テーブルは、関係型データベース管理システム(RDBMS)のテーブルである。これらのテーブルは、ネットワーク制御器の一次データ記憶構造である関係型データベースのデータ構造として格納される。
【0042】
エクスポータ255は、RE出力テーブル245の制御器出力テーブルに対する変更を検出する。異なる実施形態のエクスポータは、制御器出力テーブルイベントの発生を異なる方法で検出する。いくつかの実施形態において、エクスポータは、制御器出力テーブルのレコードに対する変更の通知に対する制御器出力テーブルとのコールバックに登録する。そのような実施形態において、エクスポータ255は、レコードのうちの1つが変更されたという通知を制御器出力テーブルから受信した場合に出力テーブルイベントを検出する。
【0043】
検出された出力テーブルイベントに応答して、エクスポータ255は、変更された制御器出力テーブル内の変更されたデータタプルの一部又は全てを取得し、この変更されたデータタプルを他の制御器又は被管理転送要素に伝搬する。詳細には、ネットワーク制御器200が論理制御器として動作する場合、エクスポータ255は、物理制御器との間に確立された通信チャネル(例えば、遠隔手続き呼出し(RPC)チャネル)のセットを介して物理制御器のセットにUPCPデータを伝搬する。ネットワーク制御器200が物理制御器として動作する場合、いくつかの実施形態のエクスポータ255は、シャーシ制御器との間に確立された通信チャネルのセットを介してシャーシ制御器のセットにUPCPデータを伝搬する。他の実施形態のエクスポータ255は、各被管理転送要素との間に確立された通信チャネル対(例えば、OpenFlowチャネル及びコンフィギュレーションチャネル)を介して被管理転送要素のセットにCPCPデータを伝搬する。ネットワーク制御器200がシャーシ制御器として動作する場合、いくつかの実施形態のエクスポータ255は、各被管理転送要素との間の通信チャネル対(例えば、OpenFlowチャネル及びコンフィギュレーションチャネル)を介して被管理転送要素のセットにCPCPデータを伝搬する。
【0044】
いくつかの実施形態において、ネットワーク制御器は、それが管理する責任を有さないデータを出力テーブル245内に保持しない。しかし、そのようなデータは、変換器250によりPTDに格納できる形式に変換され、PTD260に格納される。PTDは、ネットワーク制御器の2次記憶構造である。ネットワーク制御器200のPTDは、1つ以上の他のネットワーク制御器に当該データを伝搬し、それにより、それらのネットワーク制御器の中でデータを管理する責任を有するいくつかのネットワーク制御器がデータを処理できる。
【0045】
いくつかの実施形態において、ネットワーク制御器は、データの回復のために、出力テーブル245に格納されたデータ(すなわち、ネットワーク制御器が管理する責任を有するデータ)をPTDに更に格納する。そのようなデータは、変換器250により同様に変換され、PTDに格納され、他の制御器インスタンスの他のPTDに伝搬される。従って、これらの実施形態において、制御器インスタンスのPTDは、ネットワーク制御システムにより管理される全てのデータに対する全ての構成データを有する。すなわち、いくつかの実施形態において、各PTDは論理及び物理ネットワークの構成の全体像を含む。
【0046】
インポータ220は、多くの異なる入力データ送出元とインタフェースし、入力データを使用して入力テーブル210を変更又は作成する。いくつかの実施形態のインポータ220は、ネットワーク制御器200が論理制御器として動作する場合、ユーザ入力(例えば、アプリケーションプログラミングインタフェース(API)呼出しの形態である)をLCPデータに変換する入力変換制御器(不図示)を介してユーザ(テナント)から入力データを受信する。いくつかの実施形態において、インポータ220は通信チャネルを介してLCPデータを受信する。インポータ220は、PTDを介して他の制御器インスタンスから受信したデータを入力テーブル210を変更又は作成するための入力データとして使用できるように、PTD260と更にインタフェースする。更に、インポータ220は、RE出力テーブル245のRE入力テーブル及び制御器出力テーブルにおける変更も検出する。出力テーブル245において生成及び格納されたLFPデータは、規則エンジン225がUPCPデータを生成するために、インポータ220により規則エンジン225にフィードバックされる。
【0047】
ネットワーク制御器200が物理制御器として動作する場合、インポータ220は、論理制御器のセットとの間に確立された通信チャネルのセットを介して論理制御器のセットからUPCPデータを取得する。ネットワーク制御器200がシャーシ制御器として動作する場合、インポータは、物理制御器のセットとの間に確立された通信チャネルのセットを介して物理制御器のセットからUPCPデータを取得する。
【0048】
図2ではここまで、入力テーブル210は制御器の階層の上位レイヤの制御器からの入力を含み、出力テーブル245は制御器の階層の下位レイヤの制御器又は被管理転送要素のセットに対する出力を含むと説明した。入力及び出力が逆方向に送受信される場合もある。すなわち、そのような場合、ネットワーク制御器は下位レイヤの制御器又は被管理転送要素から入力を取得し、上位レイヤの制御器に出力を送出する。例えばネットワーク制御器200は、ユーザから送出される要求を受信し、要求を下位レイヤの制御器のセット又は被管理転送要素のセットに分散してもよい。これらの分散された要求は被管理転送要素に到達し、被管理転送要素は応答を作成する。応答は、インポータを介して入力としてネットワーク制御器200に戻る。規則エンジン255は、テーブルマッピング動作を実行して応答を組み合わせ、ネットワーク制御器200に要求を送出した制御器に送出する応答を生成する。
図9及び
図10を参照して、要求及び応答の処理に関する更なる詳細を後で説明する。
【0049】
ネットワーク制御器が階層を形成するネットワーク制御システムを説明したが、以下の第II節では、トランザクションを組み合わせることによりネットワーク制御システムにおけるチャーン化を最小限にすることを説明する。
【0050】
II.更新速度の最低限化
A.外部入力の並べ替え
ネットワーク制御システムにおいて、ネットワーク制御器は、物理ネットワークにわたり論理ネットワークを実現するためにネットワーク状態を管理する。ネットワーク状態は不変でなく、状態が変化する場合、状態の更新はネットワーク全体にわたり被管理転送要素に分散される必要がある。これらのネットワーク状態の更新は、少なくとも3つの理由から生じる。第1に、論理パイプラインにより実施されるネットワークポリシーが再構成される(例えば、論理ネットワークの管理者によるアクセス制御リストの更新)ため論理ポリシーが変化する場合、ネットワーク状態が変化する。第2に、作業負荷の動作の変化の結果、ネットワーク状態が変化する。例えば仮想マシンを第1のノードから第2のノードに移動する場合、論理的観点は変化しない。しかし、VMが接続する論理ポートの物理的位置が異なるため、この移動によりネットワーク状態が更新される必要がある。第3に、装置の追加、除去、アップグレード及び再構成等の物理的再構成イベントの結果、ネットワーク状態が変化する場合がある。
【0051】
一般的なユーザ主導によるポリシー構成の変更では小さい漸進的変化が生じ、転送状態に対する当該漸進的変化は効率的に計算可能であるが、フェイルオーバの状況によりnLog計算エンジンに対する入力が大きく変更される場合がある。送出元制御器から入力を受信するように構成される受信側制御器であり、送出元制御器が故障し且つ新しい制御器が送出元制御器のタスクを含む場合の受信側制御器を考慮する。新しい制御器はバックアップ制御器であるため、状態を事前に計算されていたが、受信側制御器は依然として古い送出元から新しい送出元へのフェイルオーバを行う必要がある。
【0052】
いくつかの実施形態において、受信側制御器は、故障した制御器から受信した全ての入力を単純に削除し(入力の影響を取り消し)、古い入力及び新しい入力が完全に同一でなくてもほぼ同一である可能性が非常に高いと予想できる場合でも、新しい制御器からの新しい入力をnLog計算エンジンに供給する。計算のトランザクション性により、新しい送出元が起動し且つ計算が固定点(例えば、計算が所定の入力データに対して行われる時点)に到達する前に転送状態の変更が公開されることは阻止されるが、計算のオーバーヘッドは膨大になる。最初に状態を除去するために計算され、次に状態を再度確立するために計算されるため、転送状態全体が2回計算される。
【0053】
いくつかの実施形態において、受信側制御器は、古い送出元からの入力と新しい送出元からの入力との相違点を識別し、変更された入力に対してのみ転送状態の変更を計算する。これにより、オーバーヘッドが完全に解消される。しかし、トランザクションの計算及び固定点到達機能を用いる場合、いくつかの実施形態の受信側制御器は、相違点を識別することなく同一の結果を得ることができる。相違点を識別することなく入力の送出元から別の送出元に徐々に効率的に移行するために、ネットワーク制御システムは単に、古い送出元からの入力を削除することから始めるのではなく、古い送出元からの入力を依然として使用しつつ新しい送出元からの入力を計算エンジンに供給する。その後、ネットワーク制御システムは、新しい送出元が新しい送出元からの入力に対する固定点に到達するまで待ち、新しい送出元がそのような固定点に到達してから、古い送出元からの入力を削除する。
【0054】
外部入力/イベントをこのように並べ替えることにより、いくつかの実施形態のnLog計算エンジンは重複を検出でき、古い状態を完全に削除するというオーバーヘッドを回避できる。古い送出元から状態を削除する必要がないため、受信側制御器は新しい送出元が固定点に到達するまでトランザクションをコミットしない。新しい送出元が固定点に到達すると、受信側制御器は、変更された入力による転送状態(すなわち、出力状態)に対する変更を消費側転送要素にプッシュする。変更が著しい場合、この手法により、一時的なメモリの使用が増加するというコストが生じる。いくつかの実施形態において、送出元制御器が固定点に到達した場合、送出元制御器はバリアを送出する。バリアが受信側制御器において受信される場合、受信側制御器は、送出元制御器が固定点に到達したことを認識する。
【0055】
図3は、論理制御器310から入力を受信する物理制御器305を概念的に示す。特に、
図3は、論理制御器310に障害が発生し、論理制御器335が更新を計算し且つ物理制御器305に送出するタスクを引き継ぐ場合の物理制御器305の入力処理を4つの異なる段階301〜304で示す。論理制御器335は、論理制御器310に対するホットスタンドバイ論理制御器である。
【0056】
物理制御器305は、制御器200の対応する構成要素と同様であるインポータ315、規則エンジン320、入力テーブル325及び出力テーブル330を含む点で
図2を参照して上述したネットワーク制御器200と同様である。説明を簡略にするために、物理制御器305の全ての構成要素を
図3に示すわけではない。
【0057】
第1の段階301において、論理制御器310は、白色の平行四辺形で示す入力の変更1及び2を物理制御器305に送出している。入力の変更は、制御器の入力テーブルの1つ以上のレコードに対する変更である。いくつかの実施形態において、入力の変更はデータタプルの形態である。論理制御器335も同様に、同一の変更1及び2を物理制御器305に送出する。論理制御器310からの変更1及び2と視覚的に区別するために、バックアップ論理制御器335から送出された変更1及び2を灰色の平行四辺形で示す。
【0058】
第2の段階302において、物理制御器305は、論理制御器310から変更1及び2を受信し且つ論理制御器335から変更1及び2を受信した。しかし、インポータ315は、論理制御器310からの変更1及び2のみを用いて入力テーブル325を更新し、バックアップ論理制御器335からの変更1及び2を記憶構造(不図示)に保持している。
【0059】
いくつかの実施形態において、物理制御器305は、論理制御器335が論理制御器310のバックアップ制御器であることを認識しない。すなわち、物理制御器305から見た場合、論理制御器310及び335は同一の入力の変更を供給する2つの制御器である。物理制御器305は、制御器のうちの一方からの変更を使用することをローカルに決定し、変更を使用していた制御器に障害が発生した場合、他方の制御器に切り替える。段階302において、物理制御器305は論理制御器310からの変更を使用する。
【0060】
段階302は、論理制御器310に障害が発生し、論理制御器335が論理制御器310の障害発生後に変更3及び4を送出していることを更に示す。変更4が論理制御器335からのトランザクションの最後の変更であることを示すために、太枠を用いて変更4を示す。換言すると、変更3及び4はトランザクションを形成し、変更4(又は変更4の後の別個のデータ)は、1つのトランザクションに対する入力セットの末尾を示すバリアを有する。規則エンジン320は、例えば他の変更(不図示)の処理がまだ終了していないため、変更1及び2をまだ処理していない。
【0061】
第3の段階303は、規則エンジン320がテーブルマッピング動作を実行して、変更1及び2から出力の変更のセットを生成したことを示す。出力の変更は、入力の変更により変更される入力テーブルにおいてテーブルマッピング動作を実行した結果、制御器の出力テーブルの1つ以上のレコードに対して行われる変更である。いくつかの実施形態において、出力の変更はデータタプルの形態である。これらの出力の変更が論理制御器310からの変更1及び2を処理した結果であることを示すために、変更1及び2を含む破線の枠として出力の変更を示す。また、第3の段階303において、インポータ315は、記憶構造に保持された論理制御器335からの変更1及び2を用いて入力テーブル325を更新した。また、論理制御器310に障害が発生し、論理制御器335が論理制御器335に切り替えられ且つ変更が論理制御器335から受信されるため、インポータ315は論理制御器310からの変更1及び2を除去した。更に、物理制御器305は論理制御器335から変更3及び4を受信した。インポータ315は、変更3及び4を用いて入力テーブル325を更新する。
【0062】
第4の段階304は、規則エンジン320がテーブルマッピング動作を実行し、バックアップ論理制御器335を介して受信した変更1〜4から出力の変更を生成したことを示す。変更1〜4を含む破線の枠として示す出力の変更は、インポータが変更1及び2を用いて入力テーブルを2回更新しなかった(1回目は論理制御器310からの変更1及び2を用い、2回目は論理制御器335からの変更1及び2を用いる)場合に生成される出力の変更と同一であることを示す。これは、いくつかの実施形態の規則エンジンが、重複する入力の変更に対してテーブルマッピング動作を実行することにより重複する出力の変更を生成しないからである。
【0063】
物理制御器が上位レイヤの制御器からのトランザクションを形成する全ての入力の変更を処理したため、論理制御器335は自身の固定点に到達した。その後、物理制御器335は、被管理転送要素のセット又はシャーシ制御器のセットにこの出力の変更のセットを送出する。
図3は、物理制御器による論理制御器のフェイルオーバの処理を示す。しかし、シャーシ制御器が物理制御器のフェイルオーバを同様に処理してもよいことが当業者には認識されるだろう。
【0064】
図4は、ネットワーク制御器の階層における上位レイヤの送出元制御器のフェイルオーバを処理するためにいくつかの実施形態が実行する処理400を概念的に示す。処理400は、入力の変更を生成する2つ以上の送出元制御器から入力の変更を受信する受信側制御器により実行される。いくつかの実施形態において、受信側制御器は、UPCPデータを含む入力の変更を生成する論理制御器のセットから入力の変更を受信する物理制御器である。また、受信側制御器は、UPCPデータを中継する物理制御器のセットから入力の変更を受信するシャーシ制御器であってもよい。いくつかの実施形態の受信側制御器は、
図3を参照して上述した物理制御器305と同様である。
【0065】
処理400は、マスタ送出元制御器及びバックアップ送出元制御器から入力の変更を受信する(405)ことにより開始する。バックアップ制御器は、マスタ制御器が送出するのと同一の入力の変更を受信側制御器に送出するスタンドバイ又は冗長制御器である。いくつかの実施形態において、受信側制御器は、2つの送出元制御器のうちのどちらがマスタ制御器であるかを認識しない。受信側制御器は、それらのうちの一方を選択し、選択された送出元制御器からの入力の変更を使用して受信側制御器自身の出力の変更を生成する。説明の便宜上、マスタ送出元制御器は受信側制御器により最初に選択された制御器である。
【0066】
次に、処理400において、マスタ制御器からの入力のみを使用して出力の変更を計算する(410)。いくつかの実施形態の処理400において、トランザクション(例えば、バリア間の入力の変更のセット)がマスタ送出元制御器から完全に受信されるまで、バックアップ制御器からの重複する入力の変更を記憶構造に保持する。いくつかの実施形態の処理400において、記憶構造に保持される入力の変更は使用されない。いくつかの実施形態の処理400において、マスタ制御器から受信される入力の変更は入力テーブルから除去されない。
【0067】
処理400において、マスタ送出元制御器に障害が発生したかを判定する(415)。いくつかの実施形態において、送出元制御器は、自身の状態又はハートビートを定期的に送信し、受信側制御器は、状態を使用して送出元制御器が動作しているかを判定する。いくつかの実施形態において、受信側制御器は、送出元制御器が動作しているかを判定するために送出元制御器をポーリングする。処理400において、マスタ送出元制御器に障害が発生したと判定される場合(415)、処理400は430へ進む。430を後で説明する。
【0068】
処理400において、マスタ送出元制御器に障害が発生していないと判定される場合(415)、マスタ制御器からバリアを受信したかが判定される(420)。すなわち、受信済みの入力の変更が完全なトランザクションを形成するかが判定される。処理400において、マスタ送出元制御器から完全なトランザクションを受信していないと判定される場合(420)、処理400は405に戻り、マスタ送出元制御器及びバックアップ送出元制御器からの入力の変更の受信を続行する。
【0069】
処理400において、マスタ送出元制御器からバリアを受信したと判定される場合(420)、処理400が自身の固定点に到達したかが判定される(425)。いくつかの実施形態の処理400において、マスタ送出元制御器から受信したトランザクションの入力の変更の全ての処理が終了して出力の変更を生成した場合、処理400は固定点に到達したと判定される。その場合、処理400は450へ進む。450を後で説明する。
【0070】
処理400において、マスタ送出元制御器に障害が発生したと判定される場合(415)、バックアップ送出元制御器に切り替えてバックアップ制御器から入力の変更を受信する(430)。その後、処理400において、バックアップ制御器から受信した入力に基づいて出力の変更を計算する(435)。いくつかの実施形態では、処理400において、保持された(410)変更を更に使用して出力の変更を計算する。保持された変更は、出力の変更を生成するために使用されたマスタ送出元制御器からの入力の変更の重複する変更である。しかし、処理400において、マスタ送出元制御器から受信した同一の入力の変更を処理することにより生成された出力の変更は削除されない。処理400において、保持された重複する入力の変更が依然として処理されるが、処理400を実行する受信側制御器の規則エンジンは、重複する入力の変更を処理することにより重複する出力の変更を生成しない。いくつかの実施形態の処理400において、バックアップ送出元制御器に切り替える際に、障害が発生した制御器から受信される変更が入力テーブルから除去される。
【0071】
次に、処理400において、バックアップ送出元制御器からバリアを受信したが判定される(440)。すなわち、受信済みの入力の変更が完全なトランザクションを形成するかが判定される。完全なトランザクションを形成する入力の変更は、保持されている重複する入力の変更とマスタ制御器の障害発生後にバックアップ制御器から受信した入力の変更とを含む。
【0072】
処理400において、バリアを受信していないと判定される場合(440)、処理400は430に戻り、バックアップ送出元制御器からの入力の変更の受信を続行する。処理400において、バリアを受信したと判定される場合(440)、処理400が自身の固定点に到達したかが判定される(425)。
【0073】
次に、処理400において、制御器の階層における下位レイヤの制御器のセット又は出力の変更に基づいてデータを転送する被管理転送要素のセットに計算された出力の変更を送出する(450)。いくつかの実施形態の処理400において、出力の変更の末尾にバリアを挿入するか、あるいは出力の変更のうちの最後の変更に完全なトランザクションを示す情報を追加する。その後、処理は終了する。
【0074】
B.階層型の転送状態計算におけるトランザクション
いくつかの実施形態において、ネットワーク制御器は、複数の制御器から受信側トランザクションの更新を受信する転送要素に更新を供給するネットワーク制御器の2つ以上のレイヤを有する階層を形成する。これらの実施形態において、最上位の制御器は更新をトランザクションで計算するが、下位レイヤの制御器は複数の最上位の制御器から更新を受信してもよく、同様に、転送要素は複数の第2のレベルの制御器から更新を受信してもよい。
【0075】
トランザクションは、境界で変更されずに下方に進む。すなわち、第2のレベルの制御器において処理された最上位のトランザクションは、最上位の制御器から受信したトランザクションの結果として得られた変更のみを含んで転送要素に供給されるトランザクションになる。しかし、トランザクションが転送要素に向かう途中で集約される場合でも、ポリシーの一貫性は維持される。いくつかの実施形態において、第2のレベルの制御器は、受信した複数のトランザクション(異なる最上位の制御器から受信される場合がある)を集約して、転送要素に供給される単一のトランザクションにする。適切な集約レベルを判定するのは(そのようなレベルが存在する場合)、ローカルな決定である。例えばシステムは、トランザクションがデフォルトでは全く集約されないが、キューのトランザクションの数が増加する過負荷状態において、互いに相殺し合う重複する変更を有するトランザクション(同一の送出元からの)を期待してトランザクションを集約する手法を実施してもよい。更に広いネットワークの場合、当該手法はルートフラップダンピングの一種であると考えられる。
【0076】
図5は、論理制御器510から入力を受信する物理制御器505を概念的に示す。特に、
図5は、物理制御器505に入力の変更を供給する論理制御器510からの複数の完全なトランザクションを形成する入力の変更を物理制御器505が集約する動作を4つの異なる段階501〜504で示す。物理制御器505は、制御器200の対応する構成要素と同様であるインポータ515、規則エンジン520、入力テーブル525及び出力テーブル530を含む点で
図2を参照して上述したネットワーク制御器200と同様である。説明を簡略にするために、物理制御器505の全ての構成要素を
図5に示すわけではない。
【0077】
第1の段階501において、論理制御器510は物理制御器505に入力の変更1〜3を送出している。変更1〜3が完全なトランザクションを形成することを示すために、太枠を用いて変更3を示す。すなわち、変更3はバリアを含むか又はバリアを伴う。段階501において、物理制御器505が前にトランザクションの出力の変更のセットを計算して送出したため、入力テーブル525及び出力テーブル530は空である。
【0078】
第2の段階502において、物理制御器505は論理制御器510から変更1〜3を受信した。インポータ515は、変更1〜3を用いて入力テーブル525を更新した。第2の段階502は、論理制御器がトランザクションを形成する次の入力の変更4及び5のセットを送出していることを更に示す。
【0079】
第3の段階503において、物理制御器505は、トランザクションを形成する次の入力の変更4及び5のセットを論理制御器530から受信した。インポータ515は、変更4及び5を用いて入力テーブル525を更新する。第3の段階503は、規則エンジン520がテーブルマッピング動作を実行して、前の段階502において入力テーブル525に入力された変更1〜3から出力の変更のセットを生成したことを更に示す。これらの出力の変更が変更1〜3を処理した結果であることを示すために、変更1〜3を含む破線の枠として出力の変更を示す。
【0080】
また、段階503において、物理制御器505は、(1)制御器が完全なトランザクションを形成する入力の変更のセットを処理することにより出力の変更を生成したため、出力テーブル530内に現在存在する出力の変更を送出するか、あるいは(2)更なる入力の変更が供給されるのを待つかを判定する。いくつかの実施形態において、物理制御器は、特定の基準に基づいて当該判定を行う。例えば物理制御器は、最後の出力の変更のセットを送出してから又は最後のトランザクションを受信してからある期間が経過していない場合、更なる入力の変更が供給されるのを待つ。これらの実施形態のうちのいくつかにおいて、ある期間が経過した場合、物理制御器505は、完全なトランザクションを形成する入力の変更の全てを集約して、トランザクションの出力の変更の単一セットを生成する。
【0081】
その代わりに又はそれに加えて、いくつかの実施形態の物理制御器505は、入力テーブル525内に有するデータ量を考慮する。これらの実施形態のうちのいくつかにおいて、入力テーブル525が閾値量を上回るデータを有する場合、物理制御器505は、完全なトランザクションを形成する入力の変更の全てを集約して、トランザクションの出力の変更の単一セットを生成する。データ量を考慮する代わりに又はそれに加えて、いくつかの実施形態の物理制御器505は、入力テーブル525が有する完全なトランザクションの数を考慮する。いくつかのそのような実施形態において、入力テーブル525が閾値数を上回る完全なトランザクションを有する場合、物理制御器は完全なトランザクションを形成する入力の変更を集約して、トランザクションの出力の変更の単一セットを生成する。
【0082】
第4の段階504において、物理制御器505は、トランザクションの出力の変更の単一セットを生成するために更なるトランザクションを使用する必要があると判定した。従って、物理制御器505は、変更1〜3から計算された出力の変更を送出していない。規則エンジン520は、変更4及び5に対してテーブルマッピング動作を実行して、出力の変更を生成した。示すように、変更4及び5から生成された出力の変更は、変更1〜3から生成された出力の変更と共にグループ化される。その後、物理制御器505は、この出力の変更のグループを被管理転送要素のセット又はシャーシ制御器のセットに送出する。
【0083】
トランザクションの出力の変更の単一セットは、別の制御器又は被管理転送要素に送出されるトランザクションを形成する。トランザクションは、受信側被管理転送要素の転送状態に適用される変更セットを含む。従って、いくつかの実施形態の制御器は、入力側で複数のトランザクションを集約して出力側に送出する単一のトランザクションを生成することにより変更セットを組み合わせ、それにより、それらの変更の全てが被管理転送要素に共に適用される。
【0084】
図6は、複数の論理制御器635〜645から入力の変更を受信する物理制御器610を概念的に示す。特に、
図6は、物理制御器610が複数の異なる論理制御器からの複数のトランザクションを形成する入力の変更を集約してトランザクションの出力の変更の単一セットにする動作を5つの段階601〜605で示す。物理制御器610は、制御器200の対応する構成要素と同様であるインポータ615、規則エンジン620、入力テーブル625及び出力テーブル630を含む点で
図2を参照して上述したネットワーク制御器200と同様である。説明を簡略にするために、物理制御器610の全ての構成要素を
図6に示すわけではない。
【0085】
第1の段階601において、論理制御器635は、物理制御器610に入力の変更1を送出している。論理制御器640は、完全なトランザクションを形成する入力の変更2〜4を送出している。段階601において、物理制御器610が前にトランザクションの出力の変更のセットを計算して送出したため、入力テーブル625及び出力テーブル630は空である。
【0086】
第2の段階602において、物理制御器610は、論理制御器635及び640から変更1〜4を受信した。インポータ615は、変更1〜4を用いて入力テーブル625を更新した。第2の段階602は、論理制御器645が完全なトランザクションを形成する変更5及び6を送出していることを更に示す。
【0087】
第3の段階603において、物理制御器610は、トランザクションを形成する入力の変更5及び6を論理制御器645から受信した。インポータ615は、変更5及び6を用いて入力テーブル625を更新する。この時点で、入力テーブル625は変更1〜6を有する。第3の段階603は、規則エンジン620がテーブルマッピング動作を実行して、前の段階602で入力テーブル625に入力された変更1〜4から出力の変更を生成したことを更に示す。出力の変更の2つのセットが生成された。示すように、第1のセットは、変更1を処理することにより生成された出力の変更を含む。第2のセットは、変更2〜4を処理することにより生成された出力の変更を含む。
【0088】
また、段階603において、物理制御器610は、(1)物理制御器が完全なトランザクションを形成する全ての入力の変更を処理することにより出力の変更を生成したため、変更2〜4を処理することにより生成されたこれらの出力の変更を送出するか、あるいは(2)更なる入力の変更が供給されるのを待つかを判定する。いくつかの実施形態において、物理制御器は、
図5を参照して上述したように、特定の基準、すなわち、トランザクションの出力の変更のセットを送出してから又は完全なトランザクションを受信してから経過した期間、入力テーブル625内のデータ量、並びに/あるいは入力テーブル625内の完全なトランザクションの数に基づいて当該判定を行う。
【0089】
第4の段階604において、物理制御器610は、トランザクションの出力の変更の単一セットを生成するために更なるトランザクションを使用する必要があると判定した。従って、物理制御器610は、入力の変更2〜4から計算された出力の変更を送出していない。規則エンジン620は、変更5及び6に対してテーブルマッピング動作を実行して、対応する出力の変更を生成した。しかし、示すように、この場合、入力の変更5及び6から計算された出力の変更は、入力の変更2〜4から計算された出力の変更と共にグループ化される。従って、物理制御器610は、2つのトランザクションを形成する入力の変更2〜4のセットと入力の変更5及び6のセットとを処理することで得られた出力を集約することにより、出力の変更の単一セットを生成した。
【0090】
第5の段階605において、物理制御器610は、シャーシ制御器のセット又は被管理転送要素のセットに変更2〜6から計算された出力の変更を送出した。物理制御器は、送出された出力の変更を出力テーブル630から除去した。物理制御器は、入力テーブル625から入力の変更2〜6を更に除去した。段階605は、入力の変更1が入力テーブル625に残存し且つ入力の変更1から計算された出力の変更が出力テーブル630に残存することを示す。これは、入力の変更1が完全なトランザクションを形成せず、すなわち、変更1を含む完全なトランザクションが物理制御器610において受信されたことを示すバリアを物理制御器が受信していないためである。
【0091】
図7は、複数のトランザクションを形成する入力の変更からトランザクションの出力の変更のセットを生成するためにいくつかの実施形態が実行する処理700を概念的に示す。処理700は、入力の変更を生成する2つ以上の送出元制御器から入力の変更を受信する受信側制御器により実行される。いくつかの実施形態において、受信側制御器は、UPCPデータを含む入力の変更を生成する論理制御器のセットから入力の変更を受信する物理制御器である。また、受信側制御器は、UPCPデータを中継する物理制御器のセットから入力の変更を受信するシャーシ制御器であってもよい。受信側制御器は、
図5及び
図6の物理制御器505及び605と同様である。
【0092】
処理700は、送出元制御器から入力の変更を受信する(705)ことにより開始する。いくつかの実施形態において、異なる送出元制御器からの入力の変更は、異なる論理転送要素のセットに関する。処理700において、それまでに受信した入力の変更を使用して出力の変更を計算する(710)。
【0093】
次に、処理700において、送出元制御器から少なくとも1つの完全なトランザクションを受信したかを判定する(715)。上述のように、完全なトランザクションは、1つの送出元制御器からバリアを受信してから別のバリアを受信するまでの間に当該送出元制御器から受信した入力の変更を含む。処理700において、少なくとも1つの完全なトランザクションを受信していないと判定される場合(715)、処理700は705に戻り、送出元制御器から更なる入力の変更を受信する。
【0094】
処理700において、少なくとも1つの完全なトランザクションを受信したと判定される場合(715)、処理700は720に進み、特定の集約基準が満たされるかを判定する。異なる実施形態は、異なる集約基準を有する。例えばいくつかの実施形態において、特定の基準は、最後の出力の変更のセットを送出してから又は最後の完全なトランザクションを受信してから経過した期間を含む。この期間が経過した場合、特定の基準は満たされる。その代わりに又はそれに加えて、いくつかの実施形態において、特定の集約基準は、(処理700を実行する受信側制御器の)入力テーブル内に有するデータ量を含む。これらの実施形態において、入力テーブルが閾値量を上回るデータを有する場合、特定の基準は満たされる。これらの実施形態のうちのいくつかにおいて、データ量の代わりに又はそれに加えて、特定の基準は、入力テーブルが有する完全なトランザクションの数を含む。これらの実施形態において、入力テーブルが閾値数を上回る完全なトランザクションを有する場合、特定の基準は満たされる。
【0095】
次に、処理700において、完全なトランザクションの全てを構成する入力の変更から計算された出力の変更を集約する(725)。いくつかの実施形態では、処理700において、完全なトランザクションを形成しない入力の変更から計算される出力の変更は除外される。換言すると、これらの除外される出力の変更は、バリアが受信されていない入力の変更から計算される。
【0096】
処理700において、制御器の階層における下位レイヤに存在する制御器のセット又は出力の変更に基づいてデータを転送する被管理転送要素のセットに集約された出力の変更を送出する(730)。いくつかの実施形態の処理700において、出力の変更の末尾にバリアを挿入するか又は出力の変更のうちの最後の変更に完全なトランザクションを示す情報を追加する。また、送出された出力の変更を受信側制御器の出力テーブルから除去し、完全なトランザクションを形成し且つ送出された出力の変更を計算する際に使用した入力の変更を受信側制御器の入力テーブルから除去する。その後、処理は終了する。
【0097】
C.ユースケース
1.API
アプリケーションプログラミングインタフェース(API)呼出しの形態である論理転送要素を定義する入力は、APIをサポートする入力変換制御器に送出される。いくつかの実施形態のネットワーク制御システムは、APIの更新をアトミックにレンダリングする。すなわち、構成の変更は、システムを古い状態から新しい状態にアトミックに移行する。詳細には、API呼出しを受信後、システム内のAPI受信コードはnLogエンジンに対する状態を更新し、全ての更新を供給後、システム内のAPI受信コードは固定点(計算を収束させる)に到達するのを待ち、nLogに対する変更を行うことにより終了されるトランザクションを信号伝送する。この後、転送状態の更新は、全てが単一のトランザクションの更新でクラスタ階層において下位の制御器に送出されるか又は転送要素に向けて送出される。更新は、受信側要素によりトランザクションで適用される。
【0098】
いくつかの実施形態において、APIの更新は、更新が単一のトランザクションの更新として受信機に到着する限り、分散格納システム(例えば、制御器内のPTD)にわたり送信される。すなわち、更新が単一のトランザクションの更新として記憶装置に書き込まれ且つnLog処理制御器が更新を単一のトランザクションとして受信する限り、状態の更新をプッシュする処理が上述のように継続するため、nLog計算処理に対する更新を単一のトランザクションの更新として書き込むことができる。
【0099】
2.制御器のフェイルオーバ
論理転送要素のセットを管理するマスタ論理制御器を考慮する。いくつかの実施形態において、制御器は、同一の状態を計算し且つマスタと同様の方法で当該状態をプッシュするホットバックアップを有する。マスタとホットバックアップとの間の1つの相違点は、フェイルオーバが開始するまでバックアップからのストリームが無視されることである。マスタに障害が発生すると、受信側制御器/転送要素は、以下のように古い状態から新しい状態に徐々に移行することによりバックアップに切り替える。
【0100】
古いマスタからの状態の更新のストリームを除去/遮断し且つアクティブな更新のストリームが上位の制御器から受信される状態に向けて計算を収束させる代わりに、単に新しいマスタに切り替え、計算を収束させ、古いストリームと新しいストリームとを効果的に合成する。すなわち、これは、双方の送出元が同一又はほぼ同一のストリームを生成するという仮定に基づく。この動作を実行後、制御器は、固定点に到達するのを待つことにより計算が収束するのを待ち、固定点に到達してから古いストリームを完全に除去する。この場合も、固定点に到達するのを待つことにより、制御器は新しい送出元のみの使用に向けて計算を収束させる。この後、制御器は、トランザクションをコミットすることにより古い送出元から新しい送出元への移行を完成させる。これにより、状態の更新が処理される必要があるという信号としてバリアを下位の制御器/転送要素から効果的に渡すためのnLogの実行時間が信号伝送される。
【0101】
D.オンデマンド要求の処理
API要求の処理は、nLogエンジンを使用して実現される場合がある。その場合、要求は、nLogによるAPI応答の計算をトリガするタプルのセットに変換されてnLogエンジンに供給される。API応答は、同様にタプルとして表される。タプルである要求及び応答が要求タプル及び応答タプルと1対1のマッピングを有するため、応答を待つことは容易である。API要求の処理は、要求とマッチングする応答が到着するのを単に待つことである。要求とマッチングする応答が到着すると、応答に対する計算を実行できる状態になる。
【0102】
しかし、要求/応答が1対1のマッピングを有さない場合、要求の処理が完了したことを認識するのは困難である。その場合、API要求の処理は、要求を供給後に計算の固定点を尋ねてもよい。固定点に到達すると、要求は、生成された全ての応答を有する。要求タプル及び応答タプルが何らかの共通する識別子を有する限り、応答タプルの数に関係なく、応答タプルを識別することは容易である。従って、このユースケースはそのようなコミットの使用を必要としないが、計算を許可するプリミティブは、固定点を待つことである。
【0103】
図8は、ネットワーク制御器がユーザからの要求を被管理転送要素に分散し且つ要求に対する応答をユーザに返すネットワーク制御システム800を示す。ネットワーク制御システム800は、ネットワーク制御システム800内の制御器が被管理転送要素の転送挙動を定義するために被管理転送要素にプッシュする転送状態情報を同様に計算する点で
図1のネットワーク制御システム100と同様である。ネットワーク制御システム800は、入力変換制御器805、論理制御器810、2つの物理制御器815及び820、並びに3つの被管理転送要素825〜835を含む。ネットワーク制御システム800は、2つの物理制御器815及び820が要求を3つの被管理転送要素に分散する単純化された例を表す。多くの場合、いくつかの実施形態のネットワーク制御システムは、非常に多くの制御器と数百個又は数千個の被管理転送要素とを含む。
【0104】
いくつかの実施形態の入力変換制御器805は、ユーザから入力を受信する。これらの入力は論理ネットワークの指定を含み、入力変換制御器は、これを論理制御器が後に処理するLCPデータに変換する。更に、入力は、論理ネットワークに関する情報に対する要求を更に含んでもよい。例えばユーザからの要求は、統計情報(例えば、ある期間の論理転送要素の論理ポートに対するトラフィック量)を求めてもよい。入力変換制御器805は、論理制御器が後に処理するデータタプルの形態の論理要求に要求を変換する。
【0105】
いくつかの実施形態において、入力変換制御器805は、API呼出しの形態でユーザから入力を受信する。入力変換制御器805はAPIをサポートし、ネットワーク管理アプリケーション(例えば、ウェブアプリケーション又はコマンドラインインタフェース(CLI)アプリケーション)はAPIの上に構築可能である。ユーザは、ネットワークアプリケーションを使用して、入力変換制御器に対する入力を取得する。
【0106】
いくつかの実施形態において、ネットワーク制御器810〜820は、要求の変換を実行し、データタプルの形態で要求を被管理転送要素に分散する。いくつかの実施形態のネットワーク制御器は、要求を被管理転送要素に分散する前に複数の異なる要求変換を実行する。詳細には、論理制御器810は、入力変換制御器805から論理要求を受信する。いくつかの実施形態において、論理要求は、論理ネットワークの論理属性を用いて指定される。論理要求の一例は、特定の論理転送要素の特定の論理ポートに関する情報に対する要求である。この要求は、論理ポートの名称又はアドレス、並びに論理転送要素の名称又はアドレスを用いて作成される。
【0107】
論理制御器810は、この論理要求を汎用要求に変換する。いくつかの実施形態において、汎用要求は、論理ネットワークを実現する被管理転送要素の属性を用いて指定される。しかし、これらの属性は、特定の物理的実現に特有ではない抽象的な用語で表される(例えば、ポート番号、トンネル識別子等)。例えば汎用要求は、物理ポートの実際のポート番号を使用する代わりに、いずれかの被管理転送要素の物理ポートの名称を使用して作成される。
【0108】
いくつかの実施形態において、論理制御器810は、任意の数の物理制御器に当該汎用要求を送出する。例えば論理制御器810は、2つの物理制御器815及び820に汎用要求を送出する。いくつかの実施形態において、汎用要求は、要求を識別するための識別子を有する。この識別子は、要求と対応する応答とをマッチングさせるために使用される。応答を後で説明する。
【0109】
各被管理転送要素は、マスタ物理制御器により管理される。従って、複数の被管理転送要素にわたり実現される論理転送要素に対する論理要求は、これらの転送要素を管理する複数の異なるマスタ物理制御器に送出されてもよい。示すように、物理制御器815は、2つの被管理転送要素825及び830を管理するマスタ制御器である。物理制御器820は、被管理転送要素835を管理するマスタ制御器である。
【0110】
物理制御器又は被管理転送要素と同一の物理マシン内のシャーシ制御器(
図8に不図示)のいずれかにおいて、汎用要求はカスタマイズ済要求に変換される。いくつかの実施形態において、カスタマイズ済要求は、被管理転送要素に特有の被管理転送要素の属性を用いて指定される。例えば被管理転送要素に対するカスタマイズ済要求は、被管理転送要素の物理ポートに対してローカルに使用される実際のポート番号で作成される。物理制御器がシャーシ制御器にUPCPデータを送出する通過点である実施形態において、物理制御器はシャーシ制御器に汎用要求を送出する通過点である。
【0111】
被管理転送要素825〜835は、
図1の被管理転送要素125〜135と同様である。エンドマシン840〜860は、
図1のエンドマシン140〜160と同様である。被管理転送要素825〜835は、カスタマイズ済要求が問い合わせる情報を収集する。被管理転送要素825〜835の各々は、カスタマイズ済要求の受信に応答して、収集した情報を含むカスタマイズ済応答を生成する。
【0112】
被管理転送要素は、被管理転送要素がカスタマイズ済要求を受信した物理制御器(又はシャーシ制御器)にカスタマイズ済応答を渡す。物理制御器又はシャーシ制御器のいずれかにおいて、カスタマイズ済応答は必要に応じて集約され、汎用応答に変換される。その後、汎用応答は、物理制御器が汎用要求を受信した論理制御器に渡される。
【0113】
例えば物理制御器815は、被管理転送要素825及び830からカスタマイズ済応答を受信し、カスタマイズ済応答を集約して汎用応答に変換する。いくつかの実施形態において、物理制御器820はカスタマイズ済応答を集約する必要がない。物理制御器820は、被管理転送要素825から受信したカスタマイズ済応答の変換のみを行い、論理制御器810に汎用応答を渡す。
【0114】
論理制御器810は、論理制御器810が汎用要求を送出した物理制御器から汎用応答を受信する。論理制御器810は汎用応答を集約し、集約された汎用応答を論理応答に変換し、入力変換制御器805に論理応答を渡す。いくつかの実施形態において、入力変換制御器805は、ユーザが管理アプリケーションを介して閲覧する出力に論理応答を変換する。
【0115】
いくつかの実施形態において、カスタマイズ済応答、汎用応答及び論理応答は、カスタマイズ済要求、汎用要求及び論理要求を指定するために使用されたのと同一の属性でそれぞれ指定される。いくつかの実施形態において、これらの要求及び応答はデータタプルの形態である。
【0116】
尚、制御器の階層における制御器は、階層において下位の制御器から複数の応答を受信しない場合がある。例えば要求が特定の被管理転送要素の特定の物理ポートにマッピングされる特定の論理ポートの情報を取得するためのものである場合、論理制御器は、汎用要求を2つ以上の物理制御器に分散する必要がないため、物理制御器から1つの汎用応答を取得する。
【0117】
制御器がそれに要求を送出した制御器の階層において上位の別の制御器に応答を渡す場合、制御器は応答をトランザクションで送出する。
図9は、物理制御器935、940及び945のセットから受信した汎用応答を集約するいくつかの実施形態の論理制御器910を示す。特に、
図9は、論理制御器910が複数の異なる物理制御器からの複数のトランザクションを形成する入力の変更を処理してトランザクションの出力の変更の単一セットにすることにより出力の変更を集約する動作を5つの段階901〜905で示す。この場合、論理制御器910は、集約された出力の変更を入力変換制御器(不図示)に渡す。集約された出力の変更は、論理制御器910が入力変換制御器から受信した論理要求により問い合わされた情報を含む論理応答を含む。
【0118】
論理制御器910は、制御器200の対応する構成要素と同様であるインポータ915、規則エンジン920、入力テーブル925及び出力テーブル930を含む点で
図2を参照して上述したネットワーク制御器200と同等である。説明を簡略にするために、論理制御器910の全ての構成要素を
図9に示すわけではない。
【0119】
第1の段階901において、物理制御器935は、論理制御器910に入力の変更1〜3を送出している。入力の変更1〜3は、論理制御器910から汎用要求を受信したのに応答して物理制御器935により作成される汎用応答を含む。いくつかの実施形態において、入力の変更1〜3は汎用要求の識別子を含む。論理制御器910は、識別子を使用して応答と要求とをマッチングする。
【0120】
いくつかの実施形態において、物理制御器935は、(1)物理制御器935が被管理転送要素のセットから受信するカスタマイズ済応答のセットを集約し且つ(2)集約されたカスタマイズ済応答を汎用応答に変換することにより、汎用応答を作成する。他の実施形態において、物理制御器935は、物理制御器935がシャーシ制御器(不図示)のセットから受信する汎用応答のセットを集約することにより、汎用応答を作成する。シャーシ制御器は、シャーシ制御器が動作するのと同一のホストにおいて動作する被管理転送要素のセットからのカスタマイズ済応答のセットを集約することにより、物理制御器935に渡す汎用応答を作成する。
【0121】
段階901において、入力テーブル925及び出力テーブル930は、転送状態、要求及び/又は応答に対するレコードを含んでもよい。説明を簡略にするために、これらの他のレコードを
図9に示さない。
【0122】
第2の段階902において、論理制御器910は、物理制御器935から変更1〜3を受信した。インポータ915は、変更1〜3を用いて入力テーブル925を更新した。第2の段階902は、物理制御器940が完全なトランザクションを形成する変更4〜6を送出していることを更に示す。制御器945は、完全なトランザクションを形成する変更7及び8を送出している。変更4〜6及び変更7〜8は、物理制御器940及び945が論理制御器910から汎用要求を受信したのに応答して作成した汎用応答をそれぞれ含む。いくつかの実施形態において、変更4〜8は汎用要求の識別子を更に含む。
【0123】
第3の段階903において、論理制御器910は、物理制御器940からトランザクションの入力の変更4〜6のセットを受信し、物理制御器945からトランザクションを形成する入力の変更7及び8を受信した。インポータ915は、変更4〜8を用いて入力テーブル925を更新する。この時点で、入力テーブル925は変更1〜8を有する。第3の段階903は、規則エンジン920がテーブルマッピング動作を実行して、前の段階902において入力テーブル925に入力された変更1〜3から出力の変更を生成したことを更に示す。
【0124】
また、段階903において、論理制御器910は、(1)論理制御器910が完全なトランザクションを形成する入力の変更を処理することにより出力の変更を生成したため、変更1〜3を処理することにより生成されたこれらの出力の変更を送出するか、あるいは(2)汎用応答を含む更なる入力の変更が供給されるのを待つかを判定する。物理制御器は、特定の基準に基づいてこの判定を行う。例えばいくつかの実施形態において、論理制御器910は、論理制御器910から汎用要求を受信した物理制御器の全てが汎用応答を渡すのを待つ。これらの実施形態において、論理制御器910は、全ての汎用応答を処理することにより生成された出力の変更を集約して、論理応答を生成する。その代わりに又はそれに加えて、論理制御器910は、汎用要求が物理制御器に送出されてから所定の期間中に受信された汎用応答を処理することにより生成された出力の変更を集約する。論理制御器は、所定の期間中に集約された出力の変更から論理応答を生成する。
【0125】
第4の段階904において、論理制御器910は、論理応答を含むトランザクションの出力の変更の単一セットを生成するために、汎用応答を含む更なるトランザクションを使用する必要があると判定した。従って、論理制御器910は、前の段階903において計算された入力の変更1〜3から計算された出力の変更を送出していない。規則エンジン920は、変更4〜8に対してテーブルマッピング動作を実行して、対応する出力の変更を生成した。しかし、示すように、この場合、入力の変更4〜8から計算された出力の変更は、入力の変更1〜3から計算された出力の変更と共にグループ化される。従って、論理制御器910は、3つの完全なトランザクションを形成する入力の変更1〜3、4〜6及び7〜8を集約することにより、論理応答を含むこの出力の変更の単一セットを生成した。
【0126】
第5の段階905において、論理制御器910は、変更1〜8から計算された出力の変更を入力変換制御器(不図示)に送出した。物理制御器は、入力テーブル925から入力の変更1〜8を除去し、出力テーブル930から出力の変更を除去した。
【0127】
図9は、論理制御器による汎用応答の集約を示す。物理制御器によるカスタマイズ済応答の集約を示すために、
図9に示す論理制御器及び物理制御器をそれぞれ物理制御器及びシャーシ制御器に置換できることが当業者には認識されるだろう。
【0128】
図10は、制御器の階層における下位レイヤの下位制御器のセットからの応答セットを集約して階層における上位レイヤの上位制御器に渡す単一の応答を生成するためにいくつかの実施形態が実行する処理1000を概念的に示す。いくつかの実施形態において、処理1000は、
図8及び
図9の論理制御器810及び910と同様の中間制御器により実行される。すなわち、中間制御器は、(1)上位制御器から要求を受信し、(2)要求を下位制御器のセットに分散し、(3)下位制御器からの要求に対する応答を集約して単一の応答を生成し且つ上位制御器に渡す。いくつかの実施形態において、中間制御器が受信又は生成する要求及び応答は、完全なトランザクションを形成する変更(例えば、データタプル)の形態である。
【0129】
いくつかの実施形態において、受信側制御器は、入力変換制御器から論理要求を受信し、物理制御器のセットに汎用要求を送出し、物理制御器から汎用応答を受信し且つ入力変換制御器に論理応答を送出する論理制御器である。論理制御器により実行される際の処理1000を以下に説明する。しかし、いくつかの実施形態の受信側制御器は、論理制御器から汎用要求を受信し、被管理転送要素のセットにカスタマイズ済要求を送出するか又はシャーシ制御器のセットに汎用要求を中継し、被管理転送要素からカスタマイズ済応答を受信するか又はシャーシ制御器から汎用応答を受信し且つ論理制御器に汎用応答を送出する物理制御器であってもよい。
【0130】
処理1000は、入力変換制御器から論理要求を受信する(1005)ことから開始する。入力変換制御器は、いくつかの実施形態のネットワーク制御システムのユーザにより提供された入力データから論理要求を生成する。論理要求は、入力変換制御器を介してユーザが管理する論理転送要素の特定の情報を問い合わせる。処理1000において、論理要求を汎用要求に変換することにより汎用要求を計算する(1010)。
【0131】
次に、処理1000において、汎用要求の送出先である物理制御器のセットを識別する(1015)。物理制御器のセットを識別するために、処理1000において、最初に論理転送要素を実現する被管理転送要素のセットを識別し、その後被管理転送要素のセットのマスタ物理制御器を識別する。いくつかの実施形態において、これらのマスタ物理制御器は汎用要求を受信する必要がある。処理1000において、識別された各物理制御器に汎用要求を送出する(1015)。いくつかの実施形態では、処理1000において、論理要求の識別子を保持し、汎用要求に識別子を追加する。処理1000において、汎用応答と汎用要求及び論理要求とをマッチングするために、当該識別子が使用される。
【0132】
識別された物理制御器のセットに汎用要求を送出した後、処理1000において、物理制御器から汎用応答を受信する(1020)。また、1020において、処理1000は汎用応答を含む入力の変更を処理して(例えば、テーブルマッピング動作を実行して)出力の変更を生成する。
【0133】
次に、処理1000において、物理制御器から少なくとも1つの完全なトランザクションを受信したかを判定する(1025)。完全なトランザクションは、物理制御器からバリアを受信してから別のバリアを受信するまでの間に当該物理制御器から受信した入力の変更を含む。物理制御器からの完全なトランザクションは、汎用応答を含む。
【0134】
処理1000において、物理制御器から少なくとも1つの完全なトランザクション(例えば、少なくとも1つの完全な汎用応答)を受信していないと判定される場合(1025)、処理1000は1020に戻り、物理制御器から更なる入力の変更を受信する。
【0135】
処理1000において、少なくとも1つの完全なトランザクションを受信したと判定される場合(1025)、処理1000は1030に進み、特定の集約基準が満たされるかを判定する。異なる実施形態は、異なる集約基準を含む。例えばいくつかの実施形態において、特定の基準は、汎用要求を送出してから(1015)又は論理要求を受信してから(1005)経過した期間を含む。この期間が経過した場合、特定の基準は満たされる。その代わりに又はそれに加えて、いくつかの実施形態において、特定の基準は、汎用要求を受信した物理制御器の全てから汎用応答が受信されるかを含む。これらの実施形態において、汎用要求を受信した物理制御器の全てから汎用応答が受信される場合、特定の基準は満たされる。
【0136】
処理1000において、特定の基準が満たされないと判定される場合(1030)、1020に戻り、汎用応答の受信を続行し、汎用応答を処理する。処理1000において、特定の基準が満たされると判定される場合(1030)、受信した汎用応答(すなわち、汎用応答を含む完全なトランザクションの入力の変更)から計算された出力の変更を集約する(1035)。また、1035において、処理1000は集約された出力の変更から単一の論理応答を生成する。
【0137】
その後、処理1000において、論理制御器に論理要求を送出した入力変換制御器に論理応答を送出する(1040)。いくつかの実施形態の処理1000において、出力の変更の末尾にバリアを挿入するか、あるいは出力の変更のうちの最後の変更に完全なトランザクションを示す情報を追加する。また、送出された出力の変更を論理制御器の出力テーブルから除去し、論理応答の計算に使用された完全なトランザクションを形成する入力の変更を論理制御器の入力テーブルから除去する。その後、処理は終了する。
【0138】
III.電子システム
上述の特徴及びアプリケーションの多くは、コンピュータ可読記憶媒体(コンピュータ可読媒体とも呼ぶ)に記録された命令セットとして指定されるソフトウェア処理として実現される。1つ以上の処理装置(例えば、1つ以上のプロセッサ、プロセッサのコア又は他の処理装置)により実行される場合、これらの命令は、命令において示される動作を処理装置に実行させる。コンピュータ可読媒体の例は、CD−ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROM等を含むがそれらに限定されない。コンピュータ可読媒体は、無線又は有線接続を介する搬送波及び電子信号を含まない。
【0139】
本明細書において、用語「ソフトウェア」は、プロセッサにより処理するためにメモリに読み込み可能である読出し専用メモリに常駐するファームウェア又は磁気記憶装置に格納されたアプリケーションを含むことを意図する。また、いくつかの実施形態において、複数のソフトウェア発明は、残りの部分が異なるソフトウェア発明である大きいプログラムの一部として実現可能である。いくつかの実施形態において、複数のソフトウェア発明は、別個のプログラムとしても実現可能である。最後に、本明細書中で説明するソフトウェア発明を共に実現する別個のプログラムの何らかの組み合わせは、本発明の範囲内である。いくつかの実施形態において、1つ以上の電子システムにおいて動作するためにインストールされる場合、ソフトウェアプログラムは、ソフトウェアプログラムの動作を実行する1つ以上の特定のマシンの実現を定義する。
【0140】
図11は、本発明のいくつかの実施形態が実現される電子システム1100を概念的に示す。電子システム1100は、上述の制御、仮想化又はオペレーティングシステムのアプリケーションのいずれかを実行するために使用可能である。電子システム1100は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、大型コンピュータ、ブレードコンピュータ等)、電話、PDA又は他の何らかの種類の電子装置であってもよい。そのような電子システムは、種々のコンピュータ可読媒体と、種々の他のコンピュータ可読媒体に対するインタフェースとを含む。電子システム1100は、バス1105、処理装置1110、システムメモリ1125、読出し専用メモリ1130、固定記憶装置1135、入力装置1140及び出力装置1145を含む。
【0141】
バス1105は、電子システム1100の多くの内部装置に通信可能に接続する全てのシステムバス、周辺バス及びチップセットバスを一括して表す。例えばバス1105は、処理装置1110と、読出し専用メモリ1130、システムメモリ1125及び固定記憶装置1135とを通信可能に接続する。
【0142】
処理装置1110は、これらの種々の記憶装置から、本発明の処理を実行するために実行する命令及び処理するデータを検索する。異なる実施形態において、処理装置は単一のプロセッサであってもよく、あるいはマルチコアプロセッサであってもよい。
【0143】
読出し専用メモリ(ROM)1130は、処理装置1110及び電子システムの他のモジュールが必要とする静的データ及び命令を格納する。それに対して、固定記憶装置1135は、読出し書込み記憶装置である。当該装置は、電子システム1100の電源がオフである場合でも命令及びデータを格納する不揮発性記憶装置である。本発明のいくつかの実施形態は、固定記憶装置1135として大容量記憶装置(磁気ディスク又は光ディスク及びそれに対応するディスクドライブ等)を使用する。
【0144】
他の実施形態は、固定記憶装置として取外し可能記憶装置(フロッピディスク、フラッシュドライブ等)を使用する。固定記憶装置1135と同様に、システムメモリ1125は読出し書込み記憶装置である。しかし、記憶装置1135と異なり、システムメモリは、ランダムアクセスメモリ等の揮発性読出し書込みメモリである。システムメモリは、プロセッサが実行時に必要とする命令及びデータの一部を格納する。いくつかの実施形態において、本発明の処理は、システムメモリ1125、固定記憶装置1135及び/又は読出し専用メモリ1130に格納される。処理装置1110は、これらの種々の記憶装置から、いくつかの実施形態の処理を実行するために実行する命令及び処理するデータを検索する。
【0145】
バス1105は、入力装置1140及び出力装置1145に更に接続する。入力装置により、ユーザは電子システムに対して情報を通信し且つコマンドを選択できる。入力装置1140は、英数字キーボード及びポインティングデバイス(「カーソル制御装置」とも呼ぶ)を含む。出力装置1145は、電子システムにより生成される画像を表示する。出力装置は、プリンタ、並びにブラウン管(CRT)又は液晶ディスプレイ(LCD)等の表示装置を含む。いくつかの実施形態は、入力装置及び出力装置の双方として機能するタッチスクリーン等の装置を含む。
【0146】
最後に、
図11に示すように、バス1105は、ネットワークアダプタ(不図示)を介して電子システム1100をネットワーク1165に更に結合する。このように、コンピュータは、コンピュータのネットワーク(ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)又はイントラネット等)の一部であってもよく、あるいはインターネット等のネットワークのネットワークの一部であってもよい。電子システム1100のいずれか又は全ての構成要素が本発明に関連して使用されてもよい。
【0147】
いくつかの実施形態は、マシン可読媒体又はコンピュータ可読媒体(あるいは、コンピュータ可読記憶媒体、マシン可読媒体又はマシン可読記憶媒体と呼ぶ)にコンピュータプログラム命令を格納するマイクロプロセッサ、記憶装置及びメモリ等の電子構成要素を含む。そのようなコンピュータ可読媒体のいくつかの例は、RAM、ROM、読出し専用コンパクトディスク(CD−ROM)、記録可能コンパクトディスク(CD−R)、書換え可能コンパクトディスク(CD−RW)、読出し専用デジタル汎用ディスク(例えば、DVD−ROM、2層式DVD−ROM)、種々の記録可能/書換え可能DVD(例えば、DVD−RAM、DVD−RW、DVD+RW等)、フラッシュメモリ(例えば、SDカード、ミニSDカード、マイクロSDカード等)、磁気ハードドライブ及び/又は固体ハードドライブ、読出し専用Blu−Ray(r)ディスク及び記録可能Blu−Ray(r)ディスク、超高密度光ディスク、他の何らかの光媒体又は磁気媒体、並びにフロッピディスクを含む。コンピュータ可読媒体は、少なくとも1つの処理装置により実行可能であり且つ種々の動作を実行するための命令セットを含むコンピュータプログラムを格納してもよい。コンピュータプログラム又はコンピュータコードの例は、コンパイラにより生成されるようなマシンコード、並びにインタープリタを使用するコンピュータ、電子構成要素又はマイクロプロセッサにより実行される高レベルコードを含むファイルを含む。
【0148】
上記の説明はソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを主に参照するが、いくつかの実施形態は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)等の1つ以上の集積回路により実行される。いくつかの実施形態において、そのような集積回路は、回路自体に格納される命令を実行する。
【0149】
本明細書中で使用される場合、用語「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」は全て、電子装置又は他の技術装置を参照する。これらの用語は、人間又は人間のグループを含まない。本明細書の便宜上、用語「表示する」は、電子装置上に表示することを意味する。本明細書中で使用される場合、用語「コンピュータ可読媒体」及び「マシン可読媒体」は全て、コンピュータが読み出せる形態で情報を格納する有形の物理物体に限定される。これらの用語は、無線信号、有線ダウンロード信号及び他の何らかの一時的な信号を含まない。
【0150】
多くの特定の詳細を参照して本発明を説明したが、本発明が本発明の主旨から逸脱せずに他の特定の形態で実現可能であることが当業者には認識されるだろう。更に、多くの図面(
図4、
図7及び
図10を含む)は処理を概念的に示す。これらの処理の特定の動作は、図示及び説明される正確な順序で実行されなくてもよい。特定の動作は、一連の連続する動作で実行される必要がなく、異なる実施形態において、異なる特定の動作が実行されてもよい。更に、処理は、複数の副処理を使用して実現されてもよく、あるいは大きいマクロ処理の一部として実現されてもよい。