JP6518697B2 - コントローラにスイッチモデリングインターフェイスを使用してネットワークスイッチを制御するためのシステム及び方法 - Google Patents

コントローラにスイッチモデリングインターフェイスを使用してネットワークスイッチを制御するためのシステム及び方法 Download PDF

Info

Publication number
JP6518697B2
JP6518697B2 JP2016568396A JP2016568396A JP6518697B2 JP 6518697 B2 JP6518697 B2 JP 6518697B2 JP 2016568396 A JP2016568396 A JP 2016568396A JP 2016568396 A JP2016568396 A JP 2016568396A JP 6518697 B2 JP6518697 B2 JP 6518697B2
Authority
JP
Japan
Prior art keywords
switch
network
controller
configuration
modeling interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016568396A
Other languages
English (en)
Other versions
JP2017516417A (ja
Inventor
アンドレアス ヴントサム
アンドレアス ヴントサム
リチャード リーガン レーン
リチャード リーガン レーン
ロバート ダブリュー シャーウッド
ロバート ダブリュー シャーウッド
Original Assignee
ビッグ スウィッチ ネットワークス インコーポレイテッド
ビッグ スウィッチ ネットワークス インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ビッグ スウィッチ ネットワークス インコーポレイテッド, ビッグ スウィッチ ネットワークス インコーポレイテッド filed Critical ビッグ スウィッチ ネットワークス インコーポレイテッド
Publication of JP2017516417A publication Critical patent/JP2017516417A/ja
Application granted granted Critical
Publication of JP6518697B2 publication Critical patent/JP6518697B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/13Flow control; Congestion control in a LAN segment, e.g. ring or bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history

Description

関連出願の相互参照:本出願は、2014年6月3日に出願された米国特許出願第14/295,196号の優先権を主張するもので、前記出願は、参考としてここにそのまま援用される。
本発明は、通信ネットワークに関するもので、より詳細には、コントローラにより制御されるネットワークスイッチを有する通信ネットワークに関する。
インターネット及びインターネットに接続されたローカルデータネットワークのようなパケットベースのネットワークは、ネットワークスイッチを備えている。ネットワークスイッチは、パケットソースからパケット行先へパケットを転送するのに使用される。パケットは、時々、フレームとも称される。例えば、データは、オープンシステムズインターコネクション(OSI)モデルのレイヤ2を経てフレーム(例えば、イーサネット(登録商標)フレーム)として転送され、一方、データは、OSIモデルのレイヤ3を経てパケット(例えば、インターネットプロトコルパケット)として転送される。
ある売主のスイッチを、別の売主の装置を使用して構成することは、困難であるか又は不可能である。これは、ある売主のスイッチ装置が、別の売主のスイッチ装置とは異なるオペレーティングシステム及び1組の制御手順を使用するためである。異なるタイプのスイッチプラットホームの制御に関連した課題に対処するため、クロスプラットホームプロトコルが開発された。これらのプロトコルは、両立性のないスイッチの集中制御を許す。
クロスプラットホームのコントローラクライアントをネットワーク内のスイッチに含ませることができる。コントローラクライアントは、ネットワーク経路を経て対応するコントローラサーバーと通信することができる。コントローラクライアントは、種々のスイッチハードウェアにおいて実施できるので、両立性のないスイッチ装置を単一のコントローラで制御することができる。
コントローラにとって、スイッチが意図されたコントローラとして首尾良く構成されることを保証することが課題である。コントローラが数千の制御パケットをスイッチに供給するが、コントローラにより供給されるレートで制御パケットを処理するのにスイッチの処理容量が充分でない場合について考える。別の例として、スイッチの構成記憶容量がいっぱいになり、スイッチは、既存の構成データにオーバーライトせずに付加的な構成データを記憶することができない。更に別の例として、新たなスイッチが接続されるか、又は既存のスイッチがネットワークから切断され、コントローラから見たネットワークとネットワークの実際の構成状態との間に不一致を招くことがある。
コントローラは、スイッチに結合されたエンドホストを有するネットワーク内のスイッチを制御する。コントローラは、ネットワーク内のスイッチのスイッチモデルを維持しそしてそのスイッチモデルを使用して、望ましいネットワーク構成を実施するようスイッチのための制御メッセージを発生するスイッチモデリングインターフェイスを備えている。スイッチモデリングインターフェイスは、スイッチの接続又は切断或いは新規ネットワークポリシーのようなネットワークイベントに応答するアプリケーションモジュールから望ましいネットワーク構成を受け取る。望ましいネットワーク構成は、1組のテーブル及び機能を含む。スイッチモデリングインターフェイスは、1組のテーブルにおける機能を働かせて望ましいネットワーク構成を生じさせる。例えば、1組のテーブルは、エンドホストアタッチポイントを識別するホストテーブル、及びスイッチ間転送テーブルを含む。この場合に、スイッチモデリングインターフェイスは、ホストテーブル及びスイッチ間転送テーブルにおける機能を働かせて、各スイッチのためのスイッチ特有転送テーブルを形成する。
スイッチモデリングインターフェイスは、望ましいネットワーク構成(例えば、スイッチ特有転送テーブル)を、スイッチモデルにより表わされた現在ネットワーク構成と比較する。スイッチモデリングインターフェイスは、望ましいネットワーク構成と、スイッチモデルにより識別された現在ネットワーク構成との間の識別された差のみについてスイッチへ制御メッセージを発生する。スイッチモデリングインターフェイスは、制御メッセージがスイッチにより首尾良く受信されて処理されたかどうかを、同期要求メッセージ(例えば、バリア要求メッセージ)を制御メッセージと共に送信しそして同期返答メッセージ(例えば、バリア返答メッセージ)、エラーメッセージ、又は応答に対するスイッチ欠陥(例えば、タイマーの時間切れ)を待機することにより、決定する。スイッチモデリングインターフェイスは、望ましいネットワーク構成を送ったアプリケーションモジュールに成功又は失敗を指示する。
スイッチモデリングインターフェイスは、スイッチと通信することによりスイッチモデルを更新する。ネットワーク制御経路上のトラフィック負荷を減少する上で助けとなるように、スイッチは、ダイジェストテーブルを維持するように構成される。スイッチにより維持されるダイジェストテーブルは、各ダイジェスト値に各々関連した複数のエントリ(例えば、バケット)を含む。スイッチにおいて受け取られるテーブルエントリを(例えば、コントローラから制御メッセージを経て)転送するようなスイッチ構成データは、スイッチによりハッシュされ、そしてハッシュ値に基づいて選択されたテーブルエントリに指定される。スイッチは、各テーブルエントリのダイジェスト値を、そのテーブルエントリに指定されたハッシュ値のXORとして計算する。スイッチにより維持されるダイジェスト値は、コントローラにより検索され、そして望ましいネットワーク構成についてコントローラにより計算されたダイジェスト値と比較される。コントローラにおけるスイッチモデリングインターフェイスは、その比較に基づき、望ましいネットワーク構成を実施する際にどんなスイッチ構成データを更新しなければならないか決定する。
本発明の更に別の特徴、その性質及び種々の効果は、添付図面及び以下の詳細な説明から明らかとなるであろう。
本発明の一実施形態によるコントローラ及びパケット転送システムを備えた例示的ネットワークの図である。 本発明の一実施形態によりネットワーク接続を経て通信するコントローラサーバー及びコントローラクライアントの図である。 本発明の一実施形態によりパケット処理システムに使用されるタイプの例示的フローテーブルの図である。 パケット処理システムに使用されるタイプの例示的フローテーブルの図で、本発明の一実施形態によりフローテーブルのフローテーブルエントリに基づき遂行されるパケット転送の3つの例示的タイプを示す図である。 本発明の一実施形態によるパケット処理システムにおけるパケット処理に含まれる例示的ステップのフローチャートである。 本発明の一実施形態によりスイッチモデリングインターフェイスを有するコントローラにより制御されるスイッチを有する例示的ネットワークの図である。 本発明の一実施形態による例示的スイッチモデルの図である。 本発明の一実施形態によりエンドホストの切断がスイッチモデルにどのように反映されるかを示す例示的スイッチモデルの図である。 本発明の一実施形態によりスイッチモデルに記憶される例示的なスイッチ状態情報の図である。 本発明の一実施形態によりスイッチモデルに記憶され且つスイッチ特有状態情報を発生するのに使用される例示的なグローバルネットワーク状態情報の図である。 本発明の一実施形態によりスイッチモデルに記憶され且つスイッチモデリングインターフェイスにより使用されてスイッチ特有の状態情報を発生する例示的機能の図である。 本発明の一実施形態によりアプリケーションモジュールによってスイッチモデリングインターフェイスに与えられる望ましいネットワーク構成の例示的ネットワークスナップショットの図である。 本発明の一実施形態により、1組のテーブルと、その1組のテーブルに対して作用してスイッチ特有の状態情報を発生する機能とを含む例示的ネットワークスナップショットの図である。 本発明の一実施形態により望ましいネットワークスナップショットと現在ネットワーク構成の差からスイッチ制御メッセージを発生するようにスイッチモデリングインターフェイスによって遂行される例示的ステップのフローチャートである。 本発明の一実施形態によりスイッチモデリングインターフェイスを使用してネットワークイベントに対する応答においてネットワーク構成を変更する際にコントローラにより遂行される例示的ステップのフローチャートである。 本発明の一実施形態により受け取ったスイッチ構成データに基づいてダイジェストテーブルを維持するようにスイッチにより遂行される例示的ステップのフローチャートである。 本発明の一実施形態によりスイッチ構成データに基づいてスイッチによって維持される例示的なダイジェストテーブルである。 本発明の一実施形態により、スイッチにより維持されるダイジェストテーブルを使用して、望ましいネットワーク構成と現在ネットワーク構成との間の差を識別するようにコントローラにより遂行される例示的ステップのフローチャートである。
インターネットのようなネットワーク、及びインターネットに結合されるローカル及び地域的ネットワークは、パケットベースのスイッチに依存している。ここでは、時々、ネットワークスイッチ、パケット処理システム又はパケット転送システムとも称されるこれらのスイッチは、アドレス情報に基づいてパケットを転送することができる。このように、パケットソースにより送信されるデータパケットは、パケット行先へ配送される。ネットワーク用語において、パケットソース及び行き先は、時々、エンドホストと称される。エンドホストは、例えば、パーソナルコンピュータ、サーバー、及び他のコンピューティング装置、例えば、ワイヤード又はワイヤレステクノロジーを使用してネットワークにアクセスするポータブル電子装置である。
ネットワークスイッチの能力の範囲は、比較的小型のイーサネットスイッチ及びワイヤレスアクセスポイントから、複数ラインカード、冗長電源、及びスーパーバイザー能力を含む大型のラックベースシステムまでである。ネットワークが複数の売主からの装置を含むことは珍しいことではない。異なる売主からのネットワークスイッチは、パケット転送ネットワークを形成するように相互接続できるが、それらのオペレーティングシステムと制御プロトコルとの間に互換性がないために集中形態で管理することは困難である。
これらの潜在的な非互換性は、共通のクロスプラットホーム制御モジュール(ここではコントローラクライアントとも称される)を各ネットワークスイッチに合体することにより克服することができる。コントローラサーバー又は分散型コントローラサーバーのような集中型クロスプラットホームコントローラは、各ネットワークリンクを経てコントローラクライアントの各々と相互作用する。クロスプラットホームコントローラ及びそれに対応するコントローラクライアントを使用することで、潜在的に異種のネットワークスイッチ装置を集中管理することができる。
一例としてここに述べる1つの例示的構成では、図1のコントローラサーバー18のような1つ以上のコントローラサーバーにより集中制御が与えられる。コントローラサーバー18は、スタンドアローンコンピュータ、コンピュータのクラスター、複数の位置にわたって分散される1組のコンピュータ、ネットワークスイッチ内で実施されるハードウェア、又は他の適当なコンピューティング装置12において具現化される。コントローラサーバー18は、単一コンピュータにおいて単一プロセスとして実行するか、又は冗長性のために多数のホストにわたって分散させることができる。分散構成の使用は、予期せぬネットワーク分割(例えば、2つのキャンパス間のネットワークリンクが中断される状態)に対する弾力性をネットワーク10に与える上で助けとなる。
分散型のコントローラ構成では、コントローラノードは、コントローラ内プロトコルを使用して情報を交換することができる。例えば、新たなエンドホストが、第1のコントローラノードのみに接続されたネットワークハードウェア(例えば、スイッチ)に接続される場合には、その第1のコントローラノードは、コントローラ内プロトコルを使用して、新たなエンドホストの存在を他のコントローラノードに通知する。要望があれば、スイッチ又は他のネットワークコンポーネントが複数のコントローラノードに接続される。単一のコントローラサーバーを使用して関連スイッチのネットワークを制御する構成を、一例として、ここに時々述べる。
図1のコントローラサーバー18は、ネットワーク10のトポロジーに関する情報を収集する。例えば、コントローラサーバー18は、ネットワークを通してリンクレイヤディスカバリープロトコル(LLDP)プローブパケットを送信し、ネットワーク10のトポロジーを発見する。コントローラサーバー18は、ネットワークトポロジーに関する情報及びネットワーク装置の能力に関する情報を使用して、ネットワークに流れるパケットのための適当な経路を決定する。適当な経路が識別されると、コントローラサーバー18は、それに対応する設定データをネットワーク10のハードウェアへ送信して、パケットが必要に応じてネットワークに流れるように保証する。そのようなネットワーク構成オペレーションは、システム設定オペレーション中に、又はバックグランドにおいて連続的に、或いは新たに送信されるデータパケット(即ち、既存の経路が確立されていないパケット)の出現に応答して、遂行される。
コントローラサーバー18は、ネットワーク構成ルール20を実施するために使用される。ルール20は、種々のネットワークエンティティにどのサービスが利用できるか特定する。例えば、ルール20は、ネットワーク10内のどのユーザ(又はユーザのタイプ)が特定のサーバーにアクセスできるか特定する。別の例として、ルール20は、ネットワークトラフィックを識別するサービス挿入ポリシー、及び識別されたネットワークトラフィックに対して遂行されるべきサービスを含む。ルール20は、例えば、コンピューティング装置12のデータベースに維持される。
コントローラサーバー18、及び各ネットワークスイッチ14のコントローラクライアント30は、ネットワークプロトコルスタックを使用して、ネットワークリンク16を経て通信する。
各スイッチ(例えば、各パケット転送システム)14は、入力/出力ポート34(ネットワークスイッチインターフェイスとも称される)を有する。ケーブルを使用して、装置の断片をポート34に接続する。例えば、パーソナルコンピュータ、ウェブサーバー及び他のコンピューティング装置のようなエンドホストは、ポート34にプラグインされる。又、ポート34は、スイッチ14の1つを他のスイッチ14に接続するためにも使用される。
パケット処理回路32は、ポート34の1つから別のポート34へパケットを転送するのに使用されると共に、到来するパケットに対して他の適当なアクションを遂行するのにも使用される。パケット処理回路32は、専用高速スイッチ回路のような1つ以上の集積回路を使用して実施され、ハードウェアデータ経路として働く。必要に応じて、制御ユニット24において実行されるパケット処理ソフトウェア26を使用して、ソフトウェアデータ経路が実施される。
制御ユニット24は、制御ソフトウェアを記憶しそして実行するために処理及びメモリ回路(例えば、1つ以上のマイクロプロセッサ、メモリチップ及び他の制御回路)を備えている。例えば、制御ユニット24は、パケット処理ソフトウェア26のようなソフトウェアを記憶しそして実行し、フローテーブル28を記憶し、そしてコントローラクライアント30のオペレーションをサポートするのに使用される。
コントローラクライアント30及びコントローラサーバー18は、OpenFlowプロトコルのようなネットワークスイッチプロトコルに適合する(例えば、OpenFlowスイッチ仕様書バージョン1.0.0、1.3.1、又はOpenFlowプロトコルの他のバージョンを参照されたい)。又、コントローラクライアント30の中の1つ以上のクライアントは、他のプロトコルにも適合する(例えば、シンプルネットワークマネージメントプロトコル)。OpenFlowプロトコル又は他の適当なプロトコルを使用して、コントローラサーバー18は、入力/出力ポート34からの到来パケットをスイッチ14がどのように処理すべきかを決定するデータをコントローラクライアント30に与える。
1つの適当な構成では、コントローラサーバー18からのフローテーブルデータは、フローテーブル28のようなフローテーブルに記憶される。フローテーブル28のエントリは、スイッチ14を構成するのに使用される(例えば、パケット処理回路32及び/又はパケット処理ソフトウェア26の機能)。典型的なシナリオでは、フローテーブル28は、フローテーブルエントリのためのキャッシュストレージとして働き、そしてそれらフローテーブルエントリの対応バージョンは、パケット処理回路32の回路により維持される設定内に埋め込まれる。しかしながら、これは、単なる例示に過ぎない。フローテーブル28は、スイッチ14のフローテーブルエントリに対する排他的ストレージとして働くか、又はパケット処理回路32内のフローテーブルストレージリソースの利益のために省略される。一般的に、フローテーブルエントリは、適当なデータ構造(例えば、1つ以上のテーブル、リスト、等)を使用して記憶される。明瞭化のために、フローテーブル28のデータ(コントロールユニット24のデータベースに維持されているかパケット処理回路32の構成内に埋め込まれているかに関わらず)は、ここでは、フローテーブルエントリ(例えば、フローテーブル28の行)を形成するものと称される。
スイッチ14が到来パケットをどのように処理すべきか決定するデータを記憶するフローテーブル28の例は、単なる例示に過ぎない。必要に応じて、ネットワークパケットをどのように転送すべきかの判断をパケット転送システム14が行う上で助けとなるようにフローテーブル28に代って又はそれに加えてパケット転送判断エンジンが使用されてもよい。一例として、パケット転送判断エンジンは、ネットワークパケットの属性に基づき(例えば、ネットワークプロトコルヘッダに基づき)ネットワークパケットを所定のポートへ転送するようにパケット転送システム14に指令する。
望ましいスイッチには、コントローラサーバーと通信し且つそれにより制御されるコントローラクライアントが設けられる。例えば、スイッチ14は、制御ソフトウェアを実行し且つパケット処理回路32を省略する汎用処理プラットホームを使用して実施される。別の例として、スイッチ14は、1つ以上の高速スイッチング集積回路(スイッチIC)に結合される制御回路を使用して実施される。更に別の例として、スイッチ14は、それ自身のパケット処理回路を各々伴う複数のラインカードを有するラックベースのシステムにおいてラインカードとして実施される。コントローラサーバーは、必要に応じて、ラックベースシステムの1つ以上のラインカード、別のラックベースシステム、又はネットワークに結合される他のコンピューティング装置において実施される。
図2に示すように、コントローラサーバー18及びコントローラクライアント30は、ネットワークプロトコルスタック58及びネットワークプロトコルスタック60のようなネットワークプロトコルスタックを使用してネットワーク経路66を経て通信する。スタック58及び60は、例えば、Linux(登録商標) TCP/IPスタック、又はVxWorksオペレーティングシステムにおけるTCP/IPスタックである(一例として)。経路66は、例えば、スイッチ14と外部装置との間のネットワーク接続をサポートする経路(例えば、図1のネットワーク経路16)であるか、又はラックベースシステムにおけるバックボーン経路である。経路66が経路16のようなネットワーク経路である構成を一例としてここに時々述べる。
制御プロトコルスタック56は、ネットワークプロトコルスタック58と制御ソフトウェア54との間のインターフェイスとして働く。制御プロトコルスタック62は、ネットワークプロトコルスタック60と制御ソフトウェア64との間のインターフェイスとして働く。オペレーション中に、コントローラサーバー18がコントローラクライアント30と通信するとき、制御プロトコルスタック56は、制御プロトコルメッセージ(例えば、ポートをアクチベートするか又は特定のフローテーブルエントリをフローテーブル28にインストールするための制御メッセージ)を発生しそしてパースする。図2に示す形式の構成を使用することにより、コントローラサーバー18とコントローラクライアント30との間のリンクを経てネットワーク接続が形成される。コントローラサーバー18及びコントローラクライアント30は、送信制御プロトコル(TCP)又はユーザデータグラムプロトコル(UDP)を使用して、インターネットプロトコル(IP)ネットワーク接続を経て通信することができる。ネットワーク接続を経てコントローラサーバー18とコントローラクライアント30との間で通信するときに使用されるコントロールプロトコルは、例えば、SNMP及びOpenFlowプロトコルスタックバージョン1.0.0を含む(一例として)。
フローテーブル28は、複数のフィールド(時々、ヘッダフィールドとも称される)を有するフローテーブルエントリ(例えば、テーブルの行)を含む。スイッチ14によって受信されたパケットのフィールドは、フローテーブルのフィールドと比較される。各フローテーブルエントリは、関連するアクションを有する。パケットのフィールドとフローテーブルエントリのフィールドとの間に一致があるときには、そのフローテーブルエントリのための対応アクションが行われる。
例示的なフローテーブルが図3に示されている。図3に示されたように、テーブル28は、フローテーブルエントリ(行)68を有する。各フローテーブルエントリは、ヘッダ70、アクション72及び統計値74に関連している。ヘッダ70は、各々、複数のヘッダフィールド76を含む。各フローテーブルエントリのアクションは、パケットのフィールドとそのフローテーブルエントリのヘッダの対応フィールドとの間に一致が検出されたときにアクションスイッチ14がパケットに対して何を遂行すべきか指示する。スイッチ14は、スイッチ14の性能に関する情報を得ることが望まれるときにコントローラサーバー18により質問されるフローテーブル28の統計値部分に統計データ(カウンタ値)を維持する。
ヘッダ70のヘッダフィールド(及び各到来パケットの対応フィールド)は、次のフィールド、即ち入口ポート(即ち、パケットが受け取られるところのスイッチ14の物理的ポートのアイデンティティ)、イーサネットソースアドレス、イーサネット行先アドレス、イーサネットタイプ、バーチャルローカルエリアネットワーク(VLAN)識別(VLANタグとも称される)、VLANプライオリティ、IPソースアドレス、IP行先アドレス、IPプロトコル、IP ToS(サービスのタイプ)ビット、トランスポートソースポート/インターネットコントロールメッセージプロトコル(ICMP)タイプ(ソースTCPポートとも称される)、及びトランスポート行先ポート/ICMPコード(行先TCPポートとも称される)を含む。必要に応じて、他のフィールドが使用されてもよい。例えば、ネットワークプロトコルフィールド及びプロトコルポートフィールドが使用されてもよい。
各フローテーブルエントリ(フローエントリ)は、スイッチが一致パケットをどのように取り扱うか指令するゼロ又はそれ以上のアクションに関連している。転送アクションがない場合には、パケットがドロップされるのが好ましい。フローテーブルエントリにおいてパケットフィールドとヘッダフィールドとの間に一致が検出されたときにスイッチ14により行われるアクションは、次のアクション、即ち転送(forward)(例えば、到来インターフェイスを含まない全てのインターフェイスにパケットを送出するALL、パケットをカプセル化してコントローラサーバーへ送信するCONTROLLER、スイッチのローカルネットワークスタックにパケットを送信するLOCAL、フローテーブル28においてアクションを遂行するTABLE、入力ポートからパケットを送出するIN_PORT、例えば、慣習的なレベル2、VLAN、及びレベル3処理を使用してスイッチによりサポートされるデフォールト転送経路でパケットを処理するNORMAL、及び到来インターフェイスを含まない最小転送ツリーに沿ってパケットを殺到させるFLOOD)を含む。スイッチ14により行われる付加的なアクションは、ポートにアタッチされたキューを通してパケットを転送するエンキューアクション、及びドロップアクション(例えば、特定のアクションを伴わずにフローテーブルエントリに一致するパケットをドロップする)を含む。変更フィールドアクションも、スイッチ14によりサポートされる。行われる変更フィールドアクションは、例えば、セットVLAN ID、セットVLANプライオリティ、ストリップVLANヘッダ、変更VLANタグ、変更イーサネットソースMAC(メディアアクセスコントロール)アドレス、変更イーサネット行先MACアドレス、変更IPv4ソースアドレス、変更IPv4 ToSビット、変更トランスポート行先ポートを含む。変更フィールドアクションは、フローテーブルエントリに一致するネットワークパケットの部分をリライトするのに使用される。
図4は、3つのフローテーブルエントリを有する例示的フローテーブルである。エントリは、ワイルドカード(例えば、“*”記号)を伴うフィールドを含む。特定のフィールドにワイルドカードが存在するときは、全ての到来パケットは、到来パケットにおけるフィールドの特定値に関わりなく、フィールドに関して「一致」を形成すると考えられる。付加的なフィールドは、付加的なパケット情報(例えば、ネットワークパケットのパケットヘッダ情報)と一致する。
図4のテーブルの第1行のエントリは、フローテーブルエントリが作用しているスイッチに、イーサネットスイッチングを遂行するよう指令する。より詳細には、イーサネット行先アドレスに一致する到来パケットは、ポート3へ転送される。
図4のテーブルの第2行のエントリは、インターネットルーティングを遂行するためにスイッチをどのように構成するか示している(即ち、パケットは、その行先IPアドレスに基づいて転送される)。
図4のテーブルの第3行は、ファイアウオールを形成するためにスイッチをどのように構成するか示すエントリを含む。行先IPポート値が80のパケットが受け取られると、そのパケットは、ドロップされる(即ち、スイッチは、ポート80トラフィックをブロックするファイアウオールとして働くように構成される。
図4に示すタイプのフローテーブルエントリは、システム設定オペレーション中にコントローラサーバー18によりスイッチ14にロードされるか、又はスイッチ14のようなスイッチからコントローラサーバー18においてパケットを受け取って処理するのに応答してリアルタイムでコントローラサーバー18からスイッチ14に与えられる。多数のスイッチ14を伴うネットワークでは、ネットワークを通る経路を形成するために適当なフローテーブルエントリが各スイッチに与えられる。
入力/出力ポート34に受け取られるパケットを処理する際にスイッチ14により遂行される例示的ステップが図5に示されている。ステップ78において、スイッチ14は、そのポートの1つ(例えば、図1の入力/出力ポート34の1つ)にパケットを受け取る。
ステップ80において、スイッチ14は、受け取ったパケットのフィールドを、そのスイッチのフローテーブル28におけるフローテーブルエントリのフィールドと比較して、一致があるかどうか決定する。フローテーブルエントリの幾つかのフィールドは、完全な値(例えば、完全なアドレス)を含む。他のフィールドは、ワイルドカード(即ち、「ドントケア(don't care)」ワイルドカードキャラクタ“*”でマークされたフィールド)を含む。更に別のフィールドは、部分的に完全なエントリ(例えば、部分的にワイルドカードが付された部分アドレス)を有する。幾つかのフィールドは、範囲を使用し(例えば、TCPポート番号を1と4096との間の値に制限することにより)、そして実際に、その範囲を使用して、あるタイプの部分的ワイルドカード付けを遂行する。受け取ったパケットとフローテーブルエントリとの間でフィールドごとの比較を行う際に、スイッチ14は、フローテーブルエントリの各フィールドが、ワイルドカードを伴わない完全な値を含むか、ワイルドカードを伴う部分的な値を含むか、又はワイルドカードキャラクタ(即ち、完全にワイルドカードの付いたフィールド)を含むか否か考慮することができる。
ステップ80のオペレーション中に、パケットのフィールドとフローテーブルエントリの対応フィールドとの間に一致がないと決定された場合には、スイッチ14は、リンク16を経てコントローラサーバー18へパケットを送信する(ステップ84)。
ステップ80のオペレーション中に、パケットとフローテーブルエントリとの間に一致があると決定された場合には、スイッチ14は、そのフローテーブルエントリに関連したアクションを遂行し、そしてそのフローテーブルエントリの統計値フィールドのカウンタ値を更新する(ステップ82)。次いで、処理は、線86で示したように、ステップ78へループバックして、スイッチ14により別のパケットが処理される。
図6は、スイッチがコントローラ18により制御される例示的ネットワーク100の図である。コントローラ18は、コントローラサーバーであるか、又は複数のコンピューティング装置にわたって実施される分散型コントローラである。図6に示すように、ネットワーク100は、スイッチSW1及びSW2を備えている。コントローラ18は、制御経路66を経てネットワーク100のスイッチに結合される。コントローラ18は、制御経路66を使用してスイッチを制御する(例えば、図3のフローテーブルエントリ68のようなフローテーブルエントリを与えることにより)。スイッチは、エンドホスト又は他のスイッチに結合されたスイッチポートを含む。図6の例において、エンドホストEH1及びEH3は、スイッチSW1の各ポートP1及びP3に結合され、エンドホストEH2及びEH4は、スイッチSW2の各ポートP1及びP2に結合され、そしてスイッチSW1及びSW2は、スイッチSW1のポートP2及びスイッチSW2のポートP3を経て結合される。
コントローラ18は、ネットワーク内のスイッチのオペレーションを制御する1つ以上のアプリケーションモジュール102を備えている。例えば、第1のアプリケーションモジュール102は、スイッチを、スイッチのエンドホスト又はポートのグループから形成されたバーチャルスイッチへと編成する。このシナリオでは、第1のアプリケーションモジュールは、ネットワークポリシーを施行しそしてバーチャルスイッチレベルで転送する際にネットワークの基礎的なスイッチSW1及びSW2を制御する(例えば、ネットワークポリシーは、基礎的なスイッチではなく、バーチャルスイッチに対して定義される)。別の例として、第2のアプリケーションモジュール102は、ネットワークトラフィックを分析してネットワークトラフィックレポートを発生するようなネットワーク監視機能を取り扱う。アプリケーションモジュールは、望ましいネットワーク構成(例えば、全ネットワークの)を生成して、スイッチモデリングインターフェイス104に与える。スイッチモデリングインターフェイス104は、スイッチモデル108を使用して望ましいネットワーク構成を実施し、そしてその実施が成功であるか失敗であるかをアプリケーションモジュールに指示する。
モジュール102のようなモジュールは、コントローラ18において、汎用又は特定用途向けのコンピューティング装置或いは専用ハードウェア上でソフトウェアとして実施される。例えば、モジュール102は、共有コンピューティング装置でソフトウェアモジュールとして実施される。別の例として、モジュール102は、分散型コントローラ構成の異なるコンピューティング装置において実施される。
アプリケーションモジュール102は、アプリケーションモジュールに維持されるか又はコントローラ18の他のモジュールにより維持されるネットワークトポロジー情報に基づいてスイッチを制御する。しかしながら、ネットワークには、数百、数千又はそれ以上のスイッチがある。アプリケーションモジュール102にとって、ネットワークのスイッチに送られる制御メッセージがスイッチにより首尾良く受け取られ又は実行されるように保証することが課題である。更に、複数のアプリケーションモジュール102がコントローラ18において実施され、そして潜在的に互いに衝突する。コントローラ18から受け取ったフローテーブルエントリをスイッチが実施し損なう場合について考える。この場合に、スイッチの状態は、予想される状態に一致せず、そしてコントローラにより与えられるその後のフローテーブルエントリは、望ましからぬネットワーク構成を生じることがある。
コントローラ18には、スイッチとの通信及びスイッチ状態の維持を取り扱うスイッチモデリングインターフェイスモジュール104が設けられる。スイッチモデリングインターフェイスモジュール104は、アプリケーションモジュール102がネットワークのスイッチと同期されることを保証する上で助けとなる。スイッチモデリングインターフェイス104は、ネットワーク内の各スイッチを表わすモジュール108を実施する。例えば、スイッチモデルMSW1は、スイッチSW1を表わし、一方、スイッチモデルMSW2は、スイッチSW2を表わす。スイッチモデルMSW1及びMSW2は、各スイッチSW1及びSW2の現在状態に関する情報を維持する。例えば、スイッチモデルMSW1は、スイッチSW1で実施される転送ルール又はポリシーを識別する情報を維持し、一方、スイッチモデルMSW2は、スイッチSW2の状態を識別する。
スイッチモデル108は、制御モジュール106により制御される。制御モジュール106は、スイッチモデル108を制御し、そしてネットワークのスイッチに制御メッセージを発生して、アプリケーションモジュール102からのネットワーク制御要求を満足させる。スイッチモデル108は、1組のテーブルのようなデータ構造として実施される。図7は、スイッチSW1の例示的スイッチモデル(例えば、図6のスイッチモデルMSW1)の図である。図7に示すように、スイッチモデル112は、対応するスイッチSW1の状態に関する情報を含む。スイッチ状態は、エンドホストアタッチポイント、転送ルール、又はスイッチMSW1の状態(例えば、現在スイッチ構成)に関する情報を記憶する他のテーブルを含む。
図6の例示的ネットワークを参照すれば、スイッチSW1のスイッチモデル112は、エンドホストを識別する情報、及びどのスイッチポートがエンドホストに結合されるかの情報を含む。エンドホストEH1は、スイッチSW1のポートP1にアタッチされるものとして識別され、一方、エンドホストEH3は、スイッチSW1のポートP3に接続されるものとして識別される。スイッチSW1に直接アタッチされないエンドホストは、それらエンドホストがスイッチSW1から届くところのポートによって識別される。例えば、エンドホストEH2及びEH4は、スイッチSW1のポートP2に結合されるものとして識別される。というのは、スイッチSW1のポートP2から転送されるパケットは、ポートP2を通してエンドホストEH2及びEH4に到達するからである。スイッチモデル112は、スイッチSW1によりネットワークトラフィックをどのように転送すべきか支配する転送ルールを含む。例えば、転送ルールは、各エンドホストに対してスイッチSW1がネットワークパケットをどのように転送すべきか定義するエントリを含むテーブルとして記憶される。転送ルールは、スイッチごとの転送ルールとしてスイッチモデルに記憶されるか、又はグローバルルールで働く1つ以上の機能を経てスイッチ特有のルールへ変換されるグローバルネットワーク規模のルール(例えば、テーブル)として記憶される。
スイッチモデル112は、対応するスイッチ(例えば、スイッチSW1)の状態に関する情報を含む。例えば、スイッチモデル112は、リンクアグリゲーショングループを定義するエントリを有するリンクアグリゲーショングループ(LAG)テーブルを含む。各リンクアグリゲーショングループには、論理ポートとして働くスイッチのポートのグループが指定される(例えば、スイッチの複数の物理的ポートが、ネットワークトラフィックを転送及び受信するところのリンクアグリゲーショングループを形成する)。
スイッチモデリングインターフェイス104は、ネットワークの状態を監視するためにスイッチと通信する。例えば、制御モジュール106は、制御メッセージをスイッチへと送信し及び/又はスイッチから状態メッセージを受信して、ネットワークの状態を監視する。制御モジュール106は、スイッチからの更新された状態情報に応答してスイッチモジュールを更新する。図8は、エンドホストEH1がスイッチSW1から切断されたことを識別する状態更新に応答して、図7のスイッチモデル112がどのように更新されるか示す図である。例えば、スイッチSW1は、制御経路66を経て制御モジュール104へポートダウンメッセージを送信する。このシナリオでは、ポートダウンメッセージは、スイッチSW1のポートP1が切断されたことを識別し、そしてスイッチSW1での電気的センサデータに応答して、又はコントローラ18からスイッチSW1へ送られる制御メッセージに応答して、直ちに送信される。
図8に示すように、変更されたスイッチモデル114は、エンドホストEH1の状態情報を含まない。換言すれば、制御モジュール104は、アタッチポイント情報、転送ルール又は他のテーブルからエンドホストEH1を除去する。
スイッチに送られるエントリを含む例示的転送テーブルが図9に示されている。図9の例において、転送テーブル122及び124は、イーサネットメディアアクセスコントロールのアドレスに対して作用するOSIレイヤ−2(L2)転送テーブルである。転送テーブル122及び124は、スイッチSW1及びSW2のためのフローテーブルとして、又はフローテーブルのサブセット(例えば、一部分)として働く。例えば、制御モジュール106は、スイッチSW1及びSW2にフローテーブルエントリを与えて、転送テーブル122及び124をポピュレートする。転送テーブル122は、ネットワークパケットをどのように転送するか決定するためにスイッチSW1により記憶されそして使用される。同様に、スイッチSW2は、ネットワークパケットを転送するために転送テーブル124を記憶しそして0使用する。
スイッチSW1のためのL2転送テーブル122の各エントリは、イーサネットアドレスと、識別されたイーサネットアドレスに向けられるネットワークトラフィックを転送すべきスイッチSW1のポートとにより、エンドホストを識別する。第1のL2転送テーブルエントリは、イーサネットアドレスMACEH1(即ち、エンドホストEH1)に向けられるネットワークパケットをスイッチSW1のポートP1へ転送するようにスイッチSW1に指令する。というのは、エンドホストEH1がスイッチSW1のポートP1に接続されているからである。同様に、L2転送テーブルエントリは、エンドホストEH3に向けられるネットワークパケットをポートP3(即ち、エンドホストEH3がアタッチされるポート)から送信すべきであることを識別する。スイッチSW1に直接アタッチされないエンドホストEH2及びEH4のようなエンドホストに対して、ネットワーク経路に沿ってエンドホスト(例えば、ポートP2)にネットワークパケットを転送するようにスイッチSW1に指令するL2転送テーブルエントリが設けられる。同様に、スイッチSW2のL2転送テーブル124は、イーサネットアドレスMACEH1、MACEH2、MACEH3及びMACEH4に向けられるネットワークパケットをスイッチSW2のポートP3、P1、P3及びP2に各々転送すべきことを識別するエントリを含む。
転送テーブル122及び124のコピーが、スイッチモデリングインターフェイス(例えば、図7のスイッチモデル112の転送ルールの一部分)により記憶される。制御モジュール106は、アプリケーションモジュール102とネットワークのスイッチとの間をインターフェイスする上で助けとなるようローカルコピーを維持する。例えば、制御モジュール106は、ローカルコピーを使用して、スイッチに送られる制御メッセージの作用を模擬する。又、制御モジュール106は、スイッチへ制御メッセージを送る一部分として、スイッチと更に通信して、スイッチにおけるポスト制御メッセージ状態がスイッチモデル108における模擬状態に一致することを検証する。
スイッチモデリングインターフェイス104にとって、ネットワークの全てのスイッチに状態のローカルコピーを維持することが課題である。ネットワークが、複数の転送テーブル(例えば、L2転送テーブル、IP転送テーブル、等)を各々有する数百のスイッチを備えるシナリオについて考える。このシナリオでは、各スイッチは、そのスイッチの現在状態を定義する数百ないし数千のテーブルエントリ(例えば、転送テーブルエントリ、アドレス分析テーブルエントリ、リンクアグリゲーショングループテーブルエントリ、等)を含む。コントローラにおける利用可能なメモリのような限定リソースのために、スイッチモデリングインターフェイスが各スイッチの各テーブルエントリを記憶することは困難であるか又は不可能である。
コントローラにおけるスイッチモデリングインターフェイスは、グローバルデータ構造としての1つ以上のスイッチ状態、及びグローバルデータに作用してスイッチ特有の状態情報を発生するスイッチごとの機能を記憶するように構成される。図10は、図9のスイッチ特有の転送テーブルにおけるスイッチ状態情報を、ホストテーブル132及びスイッチ間転送テーブル136を含むグローバルデータ構造としてどのように記憶するかを例示する図である。
ホストテーブル132は、エンドホストに対するアタッチポイントを識別するホストテーブルエントリ134を含む。図10の例では、エンドホストEH1のイーサネットアドレスMACEH1が、第1のホストテーブルエントリ134においてスイッチSW1のポートP1にアタッチされるとして定義される。同様に、イーサネットアドレスMACEH2は、スイッチSW2のポートP1にアタッチされるとして識別され、イーサネットアドレスMACEH3は、スイッチSW1のポートP3にアタッチされるとして識別され、そしてイーサネットアドレスMACEH4は、スイッチSW2のポートP2にアタッチされるとして識別される。ホストテーブル132は、特定のスイッチに対して特有ではない(例えば、ホストテーブル132は、グローバルテーブルである)。
スイッチ間転送テーブル136は、ネットワークのスイッチ間のリンクを識別するスイッチ間転送テーブルを含む。第1のエントリ138は、スイッチSW2(例えば、行先スイッチ)に転送されるべきスイッチSW1(例えば、ソーススイッチ)からのネットワークパケットをソーススイッチSW1のポートP2から転送すべきであることを識別する。第2のエントリ138は、行先スイッチSW1へ転送すべきソーススイッチSW2からのネットワークパケットをスイッチSW2のポートP3から転送すべきであることを識別する。
スイッチ間転送リンクがトラフィックの方向に基づいて識別される図10の例は、単なる例示である。必要に応じて、スイッチの各対は、ネットワークリンクにより接続されるスイッチのポートによって識別される。例えば、エントリ138は、第1スイッチSW1、第2スイッチSW2を識別し、そして第1スイッチSW1のポートP2は、第2スイッチSW2のポートP3に接続される。それ故、スイッチ間転送テーブル136は、ここでは、スイッチ間リンクテーブル又はスイッチ間接続テーブルとも称される。というのは、テーブル136は、ネットワークのスイッチ間の接続を識別するからである。
ホストテーブル132及びスイッチ間転送テーブル136は、ネットワークのグローバルビューを表わし、それにより、コントローラに記憶されたスイッチ状態情報の冗長性を除去する上で助けとなる。例えば、図9のスイッチ特有のL2転送テーブル122及び124は、各ホストが対応スイッチの観点からどこに接続されるか識別する情報を各テーブルが含むので冗長な情報を含む(即ち、テーブル122は、各ホストがスイッチSW1に対してどこに接続されるか識別し、一方、テーブル124は、各ホストがスイッチSW2に対してどこに接続されるか識別する)。多数のスイッチ(例えば、数十、数百又はそれ以上)を伴うネットワークでは、図10のグローバルテーブルは、コントローラにより記憶されるエントリの数を実質的に減少させる(例えば、各エンドホストの位置が一度しか識別されないので)。
コントローラにおけるスイッチモデリングインターフェイスには、スイッチモデルのためのスイッチ特有テーブルを得るために1つ以上のグローバルなテーブルに作用する機能が設けられる。図11は、入力スイッチ及び入力アドレスを含む入力データを受け取りそして図10のホストテーブル132及びスイッチ間転送テーブル136に作用して、図9のテーブル122及び124のようなスイッチ特有の転送テーブルを生成するL2転送テーブル機能(FL2TABLE)142を例示する図である。
スイッチの特定エンドホストのためのスイッチ特有の転送テーブルエントリを生成するために、スイッチモデリングインターフェイスは、そのエンドホストのイーサネットアドレスを与え、そしてそのスイッチを機能FL2TABLEのための入力アドレス及び入力スイッチとして識別する。機能FL2TABLEは、入力アドレス及び入力スイッチを検査するようにスイッチモデリングインターフェイスに指令する。ホストテーブル132のエントリが、入力アドレスが入力スイッチにアタッチされると識別する場合は、その入力スイッチの対応ポートがそのエントリから検索され、そしてFL2TABLEの出力として返送される。入力アドレスのエントリが入力スイッチを識別しない場合には、機能FL2TABLEは、入力スイッチ及びホストテーブルエントリにより識別されるスイッチに一致するスイッチ間転送テーブルエントリからポートを返送するようにスイッチモデリングインターフェイスに指令する。
スイッチモデリングインターフェイスがスイッチSW1及びイーサネットアドレスMACEH1を機能FL2TABLEへ入力として与えるシナリオについて考える。このシナリオでは、機能FL2TABLEは、入力アドレスMACEH1においてホストテーブルエントリを検索するようにスイッチモデリングインターフェイスに指令する。検索されたホストテーブルエントリは、スイッチSW1と、入力スイッチに一致するポートP1(図10を参照)とを識別し、それ故、ポートP1は、機能FL2TABLEの出力として返送される。従って、イーサネットアドレスMACEH1をスイッチSW1のポートP1にアタッチされるものとして識別するテーブル122のためのスイッチ特有のL2転送テーブルエントリが生成される。
別の例として、スイッチモデリングインターフェイスが、スイッチS1及びイーサネットアドレスMACEH2を機能FL2TABLEへ入力として与えることにより、スイッチSW1及びエンドホストEH2のためのL2転送テーブルエントリを発生するというシナリオについて考える。このシナリオでは、スイッチモデリングインターフェイスは、機能FL2TABLEにより指令されて入力アドレスMACEH2においてホストテーブルエントリを検索する。検索されたホストテーブルエントリは、イーサネットアドレスMACEH2がスイッチSW2のポートP1にアタッチされ、これは、入力スイッチSW1に一致しないことを識別する。それに応答して、機能FL2TABLEは、入力スイッチSW1及び識別されたスイッチSW2に一致するスイッチ間接続テーブルエントリを検索するようにスイッチモデリングインターフェイスに指令する。検索されたエントリ138は、スイッチSW1のポートP2がスイッチSW2に接続されることを識別する(例えば、図10のテーブル136の第1エントリを参照)。スイッチSW1の識別されたポートP2は、機能FL2TABLEの出力として返送される。従って、イーサネットアドレスMACEH2をスイッチSW1のポートP2に結合されるものとして識別するテーブル122のスイッチ特有のL2転送テーブルエントリが発生される。
L2転送情報のストレージ占有域を減少するのに役立つようにグローバルテーブルを使用する図10及び11の例は、単なる例示に過ぎない。コントローラ18は、アドレス分析プロトコルテーブル、リンクアグリゲーショングループテーブル、又はネットワークの個々のスイッチに維持された他の情報のような望ましいスイッチ特有の情報に対するグローバルデータ構造で構成される。コントローラ18は、入力及びグローバルデータ構造に作用してスイッチ特有の情報を再構成する多数の機能で構成される。
図6のアプリケーションモジュール102のようなアプリケーションモジュールは、スイッチモデリングインターフェイスにネットワークスナップショットを与えることによりネットワーク構成に対する望ましい変更を指示する。スイッチモデリングインターフェイスは、スイッチモデルを使用して正しさを保証するよう役立ちながら望ましい変更を実施するためにスイッチと通信する。図12は、アプリケーションモジュールによりスイッチモデリングインターフェイスに与えられる例示的ネットワークスナップショット152である。ネットワークスナップショット152は、1組の望ましいスイッチ状態を含む。図12の例において、ネットワークスナップショット152は、ネットワークのスイッチSW1及びSW2のためのレイヤ2転送テーブルL2TABLESW1及びL2TABLESW2(例えば、図9のテーブル122及び124)を含む。この例は、単なる例示に過ぎない。スナップショット152は、ネットワーク内のスイッチの望ましい状態を識別する望ましいスイッチ特有の情報を含む。換言すれば、スナップショット152は、実施されるべき望ましいネットワーク構成を定義する。
アプリケーションモジュールは、コントローラに要求されるストレージの量を減少する上で役立つように、スイッチ特有の状態情報に加えて又はそれに代って、グローバルデータ構造を与えるように構成される。図13に示すように、ネットワークスナップショット162は、ホストテーブル及びスイッチ間転送テーブル(例えば、図10のホストテーブル132及びスイッチ間転送テーブル136)を含む。ネットワークスナップショット162は、グローバルデータ構造からスイッチ特有の状態情報を発生する機能FL2TABLE(例えば、図11のFL2TABLE142)を含む。
ネットワークスナップショットは、スイッチ特有状態情報(例えば、図12のスナップショット152)のみ、グローバル状態情報のみ、又はスイッチ特有及びグローバル状態情報の組合せを含む。ネットワークスナップショットに含まれる情報は、ネットワークの望ましい状態を識別し、これは、スイッチモデリングインターフェイスにより処理されて、ネットワークの望ましい状態を実施するためのスイッチ制御メッセージを発生する。図14は、ネットワークスナップショットに基づいてネットワークの構成に対する望ましい変更を実施する際にスイッチモデリングインターフェイスにより遂行される例示的ステップのフローチャート200である。
ステップ202の間に、スイッチモデリングインターフェイスは、ネットワークの構成に対してなされるべき望ましい変更(例えば、望ましいネットワーク構成)を指示する新たなスナップショットを受け取る。例えば、図12のスナップショット152又は図13のスナップショット162が受け取られる。
ステップ204の間に、スイッチモデリングインターフェイスは、ネットワーク内の各スイッチに対してステップ206のオペレーションを遂行する(例えば、スイッチモデリングインターフェイスは、スイッチを選択し、選択されたスイッチに対してステップ206のオペレーションを遂行し、付加的なスイッチを選択し、等々)。
ステップ206の間に、スイッチモデリングインターフェイスは、受け取ったスナップショットにおける各テーブル(例えば、スイッチ特有又はグローバル構造)に対してステップ208−224のオペレーションを遂行する。
ステップ208の間に、スイッチモデリングインターフェイスは、選択されたスイッチ(例えば、処理のためにステップ204の間に選択されたスイッチ)の状態が既知であるかどうか決定する。例えば、スイッチモデリングインターフェイスは、各スイッチモデル108の情報が最後に更新されたときを識別する情報を記憶する。この情報は、各テーブルに又はスイッチモデルのテーブルエントリにタイムスタンプとして記憶される。このシナリオでは、スイッチモデリングインターフェイスは、選択されたスイッチに関連したタイムスタンプを現在のシステム時間と比較する。その時間差がスレッシュホールドを越える場合には、スイッチモデリングインターフェイスは、選択されたスイッチの現在状態を更新すべきであることを決定する。
選択されたスイッチの状態がスイッチモデルから既知であると決定するのに応答して、ステップ210の間に現在スイッチ状態が検索され(例えば、対応するスイッチモデル108から)、その後、ステップ214のオペレーションが遂行される。選択されたスイッチの状態が既知でない(例えば、対応するスイッチモデル108が最新の情報を記憶していない)と決定するのに応答して、スイッチモデリングインターフェイスは、選択されたスイッチと通信して、ステップ214へ進む前に対応スイッチモデルを更新するためにその現在スイッチ状態を検索する。例えば、スイッチモデリングインターフェイスは、要求されたスイッチ状態情報(例えば、L2転送テーブル、ARPテーブル、等)に応答するようにスイッチに指令する制御メッセージを送信する。スイッチから受け取られるスイッチ状態情報は、スイッチモデル108を更新するのに使用される。
ステップ214の間に、スイッチモデリングインターフェイスは、現在スイッチ状態と、受け取られたネットワークスナップショットに定義された新たなスイッチ状態との間の差(Δ)を計算する。ネットワークスナップショット及び/又はスイッチモデルが、グローバルデータ構造に作用する機能を使用して定義されるシナリオでは、スイッチモデリングインターフェイスは、機能及びグローバルデータ構造を使用して、選択されたスイッチに対するスイッチ特有の状態情報を計算する。スイッチモデル及び受け取られたスナップショットからのスイッチ特有の状態情報が直接比較される。或いは又、グローバル構造が直接比較されてもよく、そしてグローバル構造で識別された差を使用して、対応するスイッチ特有の状態情報の差を識別してもよい。
ステップ216の間に、スイッチモデリングインターフェイスは、現在スイッチ状態と新たなスイッチ状態との間の計算された差を使用して、望ましい新たなスイッチ状態を実施するスイッチ制御メッセージを発生する。例えば、スイッチモデリングインターフェイスは、スイッチにおける1つ以上の現在L2転送テーブルエントリを、望ましい新たなスイッチ状態からのL2転送テーブルエントリと交換するように選択されたスイッチに指令するOpenFlow制御メッセージを発生する。
ステップ218の間に、スイッチモデリングインターフェイスは、その発生されたスイッチ制御メッセージを同期要求メッセージと共にスイッチに与える。同期要求メッセージは、制御メッセージの首尾良い処理に応答して同期応答メッセージを与えるようにスイッチに指令する。換言すれば、スイッチ制御メッセージのスイッチ状態変更がスイッチにより首尾良く実施される場合に、スイッチは、ステップ220の間にコントローラのスイッチモデリングインターフェイスに受け取られる同期応答メッセージに応答しなければならない。スイッチ制御メッセージがスイッチにおいて首尾良く処理されない場合には、スイッチは、エラーメッセージを与えるか、又は同期要求に応答できない。スイッチから受け取られるエラーメッセージは、スイッチに生じたエラーのタイプを識別する。例えば、エラーメッセージは、スイッチにおけるテーブルがいっぱいで且つスイッチ制御メッセージで与えられる新たなエントリを記憶できないことを識別する。別の例として、エラーメッセージは、スイッチが制御メッセージ(例えば、サポートされないオペレーションエラー)で特定されたオペレーションを遂行できないことを識別する。必要に応じて、制御モジュールは、ステップ218の間にスイッチ制御メッセージが送信されたときにイネーブルされるタイマーを維持する。タイマーは、スイッチが応答(例えば、同期応答又はエラーメッセージ)を与えると予想される期間を表わす値で構成される。このシナリオでは、制御モジュールは、タイマーの時間切れに応答してエラーを識別する。
スイッチ制御メッセージが発生時に送出される図14の例は、単なる例示に過ぎない。必要に応じて、ステップ216の間に発生されたスイッチ制御メッセージを累積してグループで送出することができる。このシナリオでは、スイッチ制御メッセージの各グループに対して同期要求が送出され、そして同期応答メッセージが全対応グループに対する首尾良い応答を確認する。
図15は、ネットワーク内のスイッチを制御する際にスイッチモデリングインターフェイスを有するコントローラにより遂行される(例えば、図6のコントローラ18により遂行される)例示的ステップのフローチャート300である。
ステップ302に間に、コントローラは、ネットワークイベントを識別する。ネットワークイベントは、スイッチから又はネットワークアドミニストレータのようなユーザから受け取られた情報に基づいて識別され又は検出される。例えば、エンドホストの接続又は切断は、スイッチから制御経路を経て受け取られたメッセージから識別される。別の例として、ユーザは、望ましい新たなネットワーク構成(例えば、新たな転送テーブル値、リンクアグリゲーショングループ指定、等)を識別する新たなネットワークポリシーを与える。
ステップ304の間に、コントローラのアプリケーションモジュールは、ネットワークイベントに基づいて新たなネットワークスナップショットを発生する(例えば、図6のアプリケーションモジュール102)。例えば、ネットワークイベントに応答して望ましいネットワーク構成を指示する図12のスナップショット152又は図13のスナップショット162のようなネットワークスナップショットが発生される。エンドホストの切断に応答して、アプリケーションモジュールは、ネットワーク構成からエンドホストを除去するネットワークスナップショットを発生する。エンドホストの接続に応答して、アプリケーションモジュールは、ネットワーク構成にエンドホストを追加するネットワークスナップショットを発生する(例えば、転送テーブルエントリが既存のネットワーク転送ルールを満足することを保証しながら転送テーブルにエンドホストを追加する)。新たなネットワークポリシーに応答して、アプリケーションモジュールは、既存のネットワーク構成にネットワークポリシーを適用するネットワークスナップショットを発生する(例えば、転送テーブルエントリのような既存のテーブルエントリを置き換え又は変更する)。
ステップ306の間に、アプリケーションモジュールは、新たなネットワークスナップショットをスイッチモデリングインターフェイスへ送信する。その後のステップ308の間に、スイッチモデリングインターフェイスは、現在ネットワークスナップショットと新たなスナップショットとの間の差(Δ)を計算する。現在ネットワークスナップショットは、コントローラに記憶されるか、又はスイッチとの通信により発生される。ステップ310の間に、スイッチモデリングインターフェイスは、ネットワーク内の各ステーションに対して、新たなネットワークスナップショットを実施するため新たなスナップショットをスイッチの現在状態と調和させる。例えば、スイッチモデリングインターフェイスは、ステップ308及び310を遂行する際に、図14のフローチャート200のステップを遂行する。ステップ312の間に、スイッチモデリングインターフェイスは、新たなネットワークスナップショットを実施する際にアプリケーションモジュールに成功又は失敗を通知する。
スイッチモデリングインターフェイスにとって、現在スイッチ状態と、望ましい新たなネットワークスナップショットとの間の差Δを決定することが課題である。例えば、スイッチの状態は、数百ないし数千のテーブルエントリを含む。制御経路を経てコントローラへこれらのテーブルエントリを転送しそして差Δを計算するには時間がかかる。ネットワーク内のスイッチには、現在スイッチ状態と望ましいネットワークスナップショットとの間の差を決定する上で助けとなるようにコントローラにより使用されるハッシュ能力が設けられる。
図16は、コントローラにおけるスイッチモデリングインターフェイスの性能を改善する上で助けとなるようにテーブルエントリからダイジェスト識別子を発生する際にスイッチにより遂行される例示的ステップのフローチャート400である。フローチャート400のステップは、例えば、図1のスイッチ14の制御ユニット24における回路によって遂行される。
ステップ402の間に、スイッチは、転送テーブルエントリ、リンクアグリゲーショングループテーブルエントリ、アドレス分析プロトコルテーブルエントリ、又はスイッチの構成を少なくとも部分的に定義する他のテーブルエントリのようなテーブルエントリを受け取るか、さもなければ、処理する。例えば、テーブルエントリは、フローテーブルエントリであるか、又はコントローラにより与えられるフローテーブルエントリの一部分である。
ステップ404の間に、スイッチは、テーブルエントリのためのハッシュ値を計算する。ハッシュは、望ましいハッシュアルゴリズムを使用して計算される。例えば、スイッチは、テーブルエントリのバイナリデータに対してセキュアハッシュアルゴリズム(SHA)を使用してハッシュ値を発生する。
スイッチは、ハッシュ値に基づいてテーブルエントリを編成するためのバケット(例えば、ゼロ又はそれ以上のテーブルエントリのグループ)を維持する。ステップ406の間に、スイッチは、ハッシュ値の一部分に基づいてバケットにテーブルエントリを指定する。例えば、ハッシュ値のビットの最初の2つ、3つ、4つ、又は選択されたN個を使用して、どのバケットにテーブルエントリを指定するか決定する。
ステップ408の間に、スイッチは、指定のバケットに対するダイジェスト値(例えば、ダイジェスト識別子)を計算する。ダイジェスト値は、指定のバケットにおける全てのエントリにわたってビットごとの論理XORを計算することにより計算される。スイッチは、指定のバケットに対するダイジェスト値を記憶し、そしてコントローラからの要求に応答して、バケットのダイジェスト値を与える。
図17は、バケット414を含む例示的ダイジェストテーブル412の図である。ダイジェストテーブル412は、スイッチにより(例えば、スイッチのストレージに)維持される。バケット414には、計算されたハッシュ値に基づいてテーブルエントリが指定される(例えば、図16のフローチャート400のオペレーション中に)。図17の例では、ハッシュテーブルエントリに対するハッシュ値の最初の2ビットに基づいてバケット414にハッシュテーブルエントリが指定される。各バケットに関連したハッシュ値ビットの数は、バケットの数に対応する。
各バケット414は、ゼロ又はそれ以上のハッシュテーブルエントリと、それらハッシュテーブルエントリのビットごとのXORから計算されたダイジェスト値とを含む(例えば、全てのハッシュテーブルエントリにわたる各ビット位置のXOR値は、各ハッシュテーブルエントリと同じ合計数のビットを有するダイジェスト値を発生するように計算される)。バケット0は、00のバイナリ値に対応し、そして“00”でスタートするハッシュテーブルエントリH1及びH2が指定される。同様に、バケット1(バイナリ01)には、“01”で始まるエントリが指定され、バケット2(バイナリ10)には、“10”で始まるエントリH3が指定され、そしてバケット3(バイナリ11)には、“11”で始まるエントリH4が指定される。
バケット0のダイジェストは、ハッシュ値H1及びH2のXORである。一例として、ハッシュ値H1及びH2は、図9のテーブル122の最初の2つのL2転送テーブルエントリのハッシュ値である。バケット1のダイジェスト(バイナリ値01)は、バケット1に指定されるテーブルエントリがないので、ゼロである。バケットH3及びH4は、それらバケットH3及びH4の各々に1つのテーブルエントリしか指定されないので、各ハッシュ値H3及びH4に等しいダイジェストを有する。
XORが各バケット414のハッシュテーブルエントリから計算される図17の例は、単なる例示に過ぎない。必要に応じて、別のハッシュ関数のような論理的関数が各バケット414のエントリに対して計算されて、そのバケットのためのダイジェスト値が発生される。論理的XOR関数が望ましい。というのは、ハッシュテーブルエントリの1ビットの変化で異なるダイジェスト値が形成されるからである。更に、ダイジェスト値は、追加又は除去されるべきハッシュ値と共に現在ダイジェスト値のXORを計算することによりハッシュテーブルエントリの追加又は除去に応答して更新される(例えば、バケットの全てのハッシュテーブルエントリからダイジェスト値を再計算する必要はない)。
スイッチにより維持されるネットワーク状態(例えば、転送テーブルのようなテーブル)のダイジェスト値は、望ましいネットワーク構成のネットワークスナップショットが既存のネットワーク構成と異なるかどうか決定するのに使用される。図18は、スイッチで計算されたダイジェスト値を使用して望ましいネットワークスナップショットと既存のネットワーク構成との間の差を識別するためにコントローラにおいてスイッチモデリングインターフェイスにより遂行される例示的ステップのフローチャート500である。フローチャート500のステップは、例えば、図14のステップ212及び214の間に或いは図15のステップ308の間に遂行される。
ステップ502の間に、スイッチモデリングインターフェイスの制御モジュールは、望ましいネットワークスナップショット(例えば、ネットワークのスイッチに対して望ましいネットワーク構成を指示するアプリケーションモジュールから受け取られるネットワークスナップショット)に対する1つ以上のダイジェストテーブルを計算する。制御モジュールは、スイッチがそれ自身のダイジェストテーブルをどのように計算するのかと同様に各スイッチのダイジェストテーブルを計算する。例えば、制御モジュールは、スイッチに関連したネットワークスナップショットのテーブルエントリを使用してスイッチごとに図16のステップ404−408を遂行する(例えば、ネットワーク内のスイッチごとに個別のダイジェストテーブルが計算される)。
ステップ504の間に、制御モジュールは、スイッチを選択し、そしてその選択されたスイッチにより維持されるダイジェストテーブル(例えば、図16のフローチャート400のステップを遂行する際にスイッチにより維持されるダイジェストテーブル)を要求する。
ステップ506の間に、制御モジュールは、コントローラにより計算されたダイジェスト値をスイッチから検索されたダイジェスト値と比較して、ダイジェスト値の差を識別する。スイッチから検索されたダイジェスト値と一致しないところの選択されたスイッチの計算されたダイジェストテーブルのバケットは、更新を要求するものとして識別される。逆に、検索されたダイジェスト値と一致するところの選択されたスイッチの計算されたダイジェストテーブルのバケットは、更新を要求しないものとして識別される。
ステップ508の間に、制御モジュールは、選択されたスイッチと通信して、選択されたバケットのみのテーブルエントリ(例えば、選択されたバケットに指定されるハッシュ値を計算するのに使用されたテーブルエントリ)を検索する。制御モジュールは、検索されたテーブルエントリをネットワークスナップショットの望ましいテーブルエントリと比較し、そしてネットワークスナップショットの望ましいネットワーク構成を実施する矯正的テーブルエントリを選択されたスイッチに与える。
図18に示すダイジェスト値を使用して、望ましいネットワーク構成を実施するのにどんな変更を行う必要があるか決定することは、コントローラとネットワーク内のスイッチとの間の制御経路上のトラフィックの量を減少するのに役立つ。というのは、非一致ダイジェスト値を有するバケットのテーブルエントリしか転送されないからである。非一致ダイジェスト値に関連したテーブルエントリだけを転送することで、コントローラにおけるストレージリソース(例えば、メモリ)をより効率的に使用することができる。というのは、いかなる所与の時間にもコントローラに全スイッチ状態を記憶する必要がないからである。
一実施形態によれば、スイッチに結合されたエンドホストを有するネットワーク内のスイッチを制御するコントローラを使用する方法において、コントローラにおけるスイッチモデリングインターフェイスで、ネットワーク内のスイッチのスイッチモデルを維持し;コントローラにおけるスイッチモデリングインターフェイスで、スイッチのネットワークの望ましいネットワーク構成を受け取り;及びスイッチモデリングインターフェイスで、スイッチモデルに基づいて望ましいネットワーク構成を実施するようにスイッチのための制御メッセージを発生する;ことを含む方法が提供される。
別の実施形態によれば、スイッチモデリングインターフェイスで受け取られる望ましいネットワーク構成は、1組のテーブル及び機能を含み、前記方法は、スイッチモデリングインターフェイスで、1組のテーブルに機能を作用させて、望ましいネットワーク構成を識別することを含む。
別の実施形態によれば、前記1組のテーブルは、エンドホストアタッチポイントを識別するホストテーブル、及びスイッチ間転送テーブルを含み、そして1組のテーブルに機能を作用させて望ましいネットワーク構成を識別することは、前記ホストテーブル及びスイッチ間転送テーブルに機能を作用させてスイッチのための転送テーブルを生成することを含む。
別の実施形態によれば、前記方法は、コントローラで、ネットワークイベントを識別し、及びコントローラで、そのネットワークイベントに基づいて望ましいネットワーク構成を生成することを含む。
別の実施形態によれば、ネットワークイベントは、エンドホストの接続、エンドホストの切断、及び新たなネットワークポリシーより成るグループから選択されたイベントを含む。
別の実施形態によれば、スイッチモデルは、ネットワーク構成を識別し、前記方法は、スイッチモデリングインターフェイスで、望ましいネットワーク構成とスイッチモデルにより識別されたネットワーク構成との間の差を識別することを含み、スイッチモデルに基づいて望ましいネットワーク構成を実施するようにスイッチのための制御メッセージを発生することは、望ましいネットワーク構成とスイッチモデルにより識別されたネットワーク構成との間の識別された差のみに対する制御信号を発生することを含む。
別の実施形態によれば、前記方法は、スイッチモデリングインターフェイスで、スイッチに制御メッセージを送出し;及びスイッチモデリングインターフェイスで、その制御メッセージがスイッチにおいて首尾良く実施されたかどうか決定する;ことを含む。
別の実施形態によれば、コントローラは、スイッチモデリングインターフェイスと通信することによりスイッチを制御する複数のアプリケーションモジュールを備え、そしてネットワークイベントに基づいて望ましいネットワーク構成を発生することは、複数のアプリケーションモジュールの所与の1つで、望ましいネットワーク構成を発生し、及びその所与のアプリケーションモジュールで、望ましいネットワーク構成をスイッチモデリングインターフェイスに与えることを含む。
別の実施形態によれば、前記方法は、スイッチモデリングインターフェイスで、制御メッセージがスイッチにおいて首尾良く実施されたかどうか識別する情報を所与のアプリケーションモジュールに与えることを含む。
別の実施形態によれば、制御メッセージがスイッチにおいて首尾良く実施されたかどうか決定することは、同期要求メッセージを制御メッセージと共にスイッチに与え、そしてその同期要求メッセージに対応する同期応答メッセージをスイッチから受け取るのに応答して、制御メッセージがスイッチにおいて首尾良く実施されたと決定することを含む。
別の実施形態によれば、制御メッセージがスイッチにおいて首尾良く実施されたかどうか決定することは、スイッチからエラーメッセージを受け取るのに応答して、制御メッセージがスイッチにおいて首尾良く実施されなかったと決定することを含む。
別の実施形態によれば、各スイッチは、ハッシュされたスイッチ状態情報を含むエントリを有するダイジェストテーブルを維持し、ダイジェストテーブルの各エントリは、そのエントリのハッシュされたスイッチ状態情報から計算されたダイジェスト値を含み、そして望ましいネットワーク構成と、スイッチモジュールにより識別されるネットワーク構成との間の差を識別することは、コントローラで、望ましいネットワーク構成に対する1組の望ましいダイジェストテーブルを計算し、スイッチモデリングインターフェイスで、スイッチからダイジェストテーブルを検索し、そしてコントローラにより計算された望ましいダイジェストテーブルをスイッチからの検索されたダイジェストテーブルと比較することを含む。
一実施形態によれば、ネットワークスイッチを操作する方法において、ネットワークスイッチで、スイッチ構成データを受信し;及びネットワークスイッチで、その受信されたスイッチ構成データ及びネットワークスイッチにおける既存のスイッチ構成データに少なくとも一部分基づいてダイジェスト値を計算する;ことを含む方法が提供される。
別の実施形態によれば、前記方法は、ネットワークスイッチで、複数のバケットを有するダイジェスト値を維持し、各バケットは各ダイジェスト値に関連し;ネットワークスイッチで、受信されたスイッチ構成データをハッシュし;及びそのハッシュされたスイッチ構成データに基づいて複数のバケットのうちの選択された1つにそのハッシュされたスイッチ構成データを指定し、その選択されたバケットに対して計算されたダイジェスト値が記憶される;ことを含む。
別の実施形態によれば、ハッシュされたスイッチ構成データは、複数のビットを含み、そしてハッシュされたスイッチ構成データに基づいて複数のバケットのうちの選択された1つにそのハッシュされたスイッチ構成データを指定することは、その複数のビットのサブセットに基づいてバケットを選択することを含む。
別の実施形態によれば、選択されたバケットは、以前にハッシュされたスイッチ構成データを含み、そして受信されたスイッチ構成データ及びネットワークスイッチにおける既存のスイッチ構成データに少なくとも一部分基づいてダイジェスト値を計算することは、ハッシュされたスイッチ構成データ及び選択されたバケットにおける以前にハッシュされたスイッチ構成データに基づいて論理的XORを計算することを含む。
別の実施形態によれば、前記スイッチ構成データは、スイッチのための転送テーブルを含む。
別の実施形態によれば、スイッチは、ネットワーク制御経路を経てコントローラと通信し、前記方法は、コントローラからの要求に応答して、テーブルのダイジェスト値をコントローラへ送信することを含む。
別の実施形態によれば、スイッチに結合されたエンドホストを有するネットワーク内のスイッチを制御するコントローラを使用する方法において、コントローラで、現在ネットワーク構成を識別する情報を維持することを含み、その現在ネットワーク構成を識別する情報は、1組のテーブル、及びその1組のテーブルに対して作用して、現在ネットワーク構成の少なくとも一部分を生成する機能を含むものである方法が提供される。
別の実施形態によれば、1組のテーブルは、全てのエンドホストに対するエンドホストアタッチポイントを識別するホストテーブル、及びスイッチ間のリンクを識別するスイッチ間転送テーブルを含み、前記方法は、コントローラで、前記機能を使用して、ホストテーブル及びスイッチ間転送テーブルに基づいて前記スイッチの所与の1つに対するスイッチごとの転送テーブルを生成することを含む。
別の実施形態によれば、前記方法は、コントローラで、現在ネットワーク構成を識別する情報に基づいて望ましいネットワーク構成を実施するためにスイッチに対する制御メッセージを発生することを含む。
以上は、本発明の原理の単なる例示であり、本発明の精神及び範囲から逸脱せずに種々の変更が当業者に明らかであろう。
10:ネットワーク
12:コンピューティング装置
14:ネットワークスイッチ(パケット転送システム)
18:コントローラサーバー
20:ネットワーク構成ルール
24:制御回路
26:パケット処理ソフトウェア
28:フローテーブル
30:コントローラクライアント
32:パケット処理回路
34:入力/出力ポート
54:制御ソフトウェア
56:制御プロトコルスタック
58:ネットワークプロトコルスタック
60:ネットワークプロトコルスタック
62:制御プロトコルスタック
64:制御ソフトウェア
102:アプリケーションモジュール
104:スイッチモデリングインターフェイス
106:制御モジュール
108:スイッチモデル
112:スイッチモデル
114:変更されたスイッチモデル
122、124:転送テーブル
132:ホストテーブル
134:ホストテーブルエントリ
136、138:スイッチ間転送テーブル
152、162:ネットワークスナップショット

Claims (18)

  1. スイッチに結合されたエンドホストを有するネットワーク内のスイッチを制御するコントローラを使用する方法において、
    前記コントローラにおけるスイッチモデリングインターフェイスで、前記ネットワーク内のスイッチのスイッチモデルを維持し、
    前記コントローラにおけるスイッチモデリングインターフェイスで、前記スイッチのネットワークの望ましいネットワーク構成を受け取り、及び
    前記スイッチモデリングインターフェイスで、前記スイッチモデルに基づいて望ましいネットワーク構成を実施するように前記スイッチのための制御メッセージを発生し、前記スイッチモデリングインターフェイスで受け取られる前記望ましいネットワーク構成は、機能、エンドホストアタッチポイントを識別するグローバルホストテーブル及びグローバルスイッチ間転送テーブルを含み、
    前記スイッチモデリングインターフェイスで、前記スイッチの各々のためのスイッチ特有の転送テーブルを生成するように、前記グローバルホストテーブル及び前記グローバルスイッチ間転送テーブルに前記機能を作用させる、
    ことを含む方法。
  2. 前記コントローラで、ネットワークイベントを識別し、及び
    前記コントローラで、前記ネットワークイベントに基づいて前記望ましいネットワーク構成を生成する、
    ことを更に含む、請求項1に記載の方法。
  3. 前記ネットワークイベントは、エンドホストの接続、エンドホストの切断、及び新たなネットワークポリシーより成るグループから選択されたイベントを含む、請求項2に記載の方法。
  4. 前記スイッチモデルは、ネットワーク構成を識別し、前記方法は、
    前記スイッチモデリングインターフェイスで、前記望ましいネットワーク構成と前記スイッチモデルにより識別されたネットワーク構成との間の差を識別する、
    ことを更に含み、前記スイッチモデルに基づいて前記望ましいネットワーク構成を実施するように前記スイッチのための制御メッセージを発生することは、
    前記望ましいネットワーク構成と前記スイッチモデルにより識別された前記ネットワーク構成との間の前記識別された差のみに対する制御信号を発生する、
    ことを含む、請求項2に記載の方法。
  5. 前記スイッチモデリングインターフェイスで、前記スイッチに制御メッセージを送出し、及び
    前記スイッチモデリングインターフェイスで、前記制御メッセージが前記スイッチにおいて首尾良く実施されたかどうか決定する、
    ことを含む、請求項4に記載の方法。
  6. 前記コントローラは、前記スイッチモデリングインターフェイスと通信することにより前記スイッチを制御する複数のアプリケーションモジュールを備え、そして前記ネットワークイベントに基づいて望ましいネットワーク構成を発生することは、
    前記複数のアプリケーションモジュールの所与の1つで、望ましいネットワーク構成を発生し、及び
    前記所与のアプリケーションモジュールで、前記望ましいネットワーク構成を前記スイッチモデリングインターフェイスに与える、
    ことを含む、請求項5に記載の方法。
  7. 前記スイッチモデリングインターフェイスで、前記制御メッセージが前記スイッチにおいて首尾良く実施されたかどうか識別する情報を前記所与のアプリケーションモジュールに与える、ことを更に含む、請求項6に記載の方法。
  8. 前記制御メッセージがスイッチにおいて首尾良く実施されたかどうか決定することは、 同期要求メッセージを前記制御メッセージと共に前記スイッチに与え、及び
    前記同期要求メッセージに対応する同期応答メッセージを前記スイッチから受け取るのに応答して前記制御メッセージが前記スイッチにおいて首尾良く実施されたと決定する、ことを含む、請求項5に記載の方法。
  9. 前記制御メッセージがスイッチにおいて首尾良く実施されたかどうか決定することは、前記スイッチからエラーメッセージを受け取るのに応答して、前記制御メッセージが前記スイッチにおいて首尾良く実施されなかったと決定することを含む、請求項8に記載の方法。
  10. 各スイッチは、ハッシュされたスイッチ状態情報を含むエントリを有するダイジェストテーブルを維持し、該ダイジェストテーブルの各エントリは、そのエントリのハッシュされたスイッチ状態情報から計算されたダイジェスト値を含み、そして前記望ましいネットワーク構成と、前記スイッチモジュールにより識別されるネットワーク構成との間の差を識別することは、
    前記コントローラで、前記望ましいネットワーク構成に対する1組の望ましいダイジェストテーブルを計算し、
    前記スイッチモデリングインターフェイスで、前記スイッチから前記ダイジェストテーブルを検索し、及び
    前記コントローラにより計算された望ましいダイジェストテーブルを前記スイッチからの検索されたダイジェストテーブルと比較する、
    ことを含む請求項4に記載の方法。
  11. ネットワークにおけるネットワークスイッチ及び当該ネットワークスイッチを制御するコントローラを操作する方法において、
    前記コントローラにおけるスイッチモデリングインターフェイスで、前記ネットワークスイッチを含むネットワークのためのネットワーク構成を維持し、
    前記スイッチモデリングインターフェイスで、機能、グローバルホストテーブル及び望ましいネットワーク構成のためのグローバルスイッチ間転送テーブルを受け取り、
    前記スイッチモデリングインターフェイスで、前記ネットワークスイッチのためにスイッチ特有の転送テーブルを生成するように、前記グローバルホストテーブル及び前記グローバルスイッチ間転送テーブルにおいて前記機能を作用させ、
    前記スイッチ特有の転送テーブルに基づいて、前記ネットワークスイッチで、スイッチ構成データを受信し、
    前記ネットワークスイッチで、前記受信されたスイッチ構成データ及び既存のスイッチ構成データに少なくとも部分的に基づいてダイジェスト値を計算する
    ことを含む方法。
  12. 前記ネットワークスイッチで、複数のバケットを有するダイジェストテーブルを維持し、各バケットは各ダイジェスト値に関連付けられ、
    前記ネットワークスイッチで、前記受信されたスイッチ構成データをハッシュし、及び 前記ハッシュされたスイッチ構成データに基づいて前記複数のバケットのうちの選択された1つに前記ハッシュされたスイッチ構成データを指定し、前記選択されたバケットに対して前記計算されたダイジェスト値が記憶される、
    ことを更に含む、請求項11に記載の方法。
  13. 前記ハッシュされたスイッチ構成データは、複数のビットを含み、そして前記ハッシュされたスイッチ構成データに基づいて前記複数のバケットのうちの選択された1つに前記ハッシュされたスイッチ構成データを指定することは、前記複数のビットのサブセットに基づいて前記バケットを選択することを含み、更に、前記選択されたバケットは、以前にハッシュされたスイッチ構成データを含み、前記ネットワークスイッチで、前記受信されたスイッチ構成データ及び既存のスイッチ構成データに少なくとも部分的に基づいてダイジェスト値を計算することは、前記ハッシュされたスイッチ構成データ及び前記選択されたバケットにおける以前にハッシュされたスイッチ構成データに基づいて論理的XORを計算することを含む、請求項12に記載の方法。
  14. 前記スイッチ構成データは、前記スイッチのための転送テーブルを含む、請求項11に記載の方法。
  15. 前記スイッチは、ネットワーク制御経路を経てコントローラと通信し、前記方法は、前記コントローラからの要求に応答して、前記テーブルのダイジェスト値を前記コントローラへ送信することを含む、請求項11に記載の方法。
  16. スイッチに結合されたエンドホストを有するネットワーク内のスイッチを制御するコントローラを使用する方法において、
    前記コントローラで、現在ネットワーク構成を識別する情報を維持する、
    ことを含み、前記現在ネットワーク構成を識別する情報は、1組のテーブル、及び該1組のテーブルに対して作用して、前記現在ネットワーク構成の少なくとも一部分を生成する機能を含むものであり、
    前記コントローラで、望ましいネットワーク構成を受信し、前記望ましいネットワーク構成は付加的な機能、グローバルホストテーブル及びグローバルスイッチ間転送テーブルを含み、
    前記コントローラで、前記スイッチのうちの所与のスイッチのためのスイッチ特有の転送テーブルを生成するために、前記グローバルホストテーブル及び前記グローバルスイッチ間転送テーブルにおいて前記機能を作用させ、
    前記コントローラで、前記コントローラに記憶された前記所与のスイッチのための構成状態を検索し、
    前記コントローラで、前記所与のスイッチのための前記検索された構成状態及び前記スイッチ特有の転送テーブルに基づいて前記現在ネットワーク構成と前記望ましいネットワーク構成との差を計算する、
    方法。
  17. 前記1組のテーブルは、全てのエンドホストに対するエンドホストアタッチポイントを識別するホストテーブル、及び前記スイッチ間のリンクを識別するスイッチ間転送テーブルを含み、前記方法は、前記コントローラで、前記機能を使用して、前記ホストテーブル及び前記スイッチ間転送テーブルに基づいて前記スイッチの所与の1つに対するスイッチごとの転送テーブルを生成することを更に含む、請求項16に記載の方法。
  18. 前記コントローラで、前記現在ネットワーク構成を識別する情報に基づいて望ましいネットワーク構成を実施するために前記スイッチに対する制御メッセージを発生することを更に含む、請求項16に記載の方法。
JP2016568396A 2014-06-03 2015-05-14 コントローラにスイッチモデリングインターフェイスを使用してネットワークスイッチを制御するためのシステム及び方法 Expired - Fee Related JP6518697B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/295,196 US9935831B1 (en) 2014-06-03 2014-06-03 Systems and methods for controlling network switches using a switch modeling interface at a controller
US14/295,196 2014-06-03
PCT/US2015/030874 WO2015187337A1 (en) 2014-06-03 2015-05-14 Systems and methods for controlling network switches using a switch modeling interface at a controller

Publications (2)

Publication Number Publication Date
JP2017516417A JP2017516417A (ja) 2017-06-15
JP6518697B2 true JP6518697B2 (ja) 2019-05-22

Family

ID=53434446

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016568396A Expired - Fee Related JP6518697B2 (ja) 2014-06-03 2015-05-14 コントローラにスイッチモデリングインターフェイスを使用してネットワークスイッチを制御するためのシステム及び方法

Country Status (6)

Country Link
US (1) US9935831B1 (ja)
EP (1) EP3143726A1 (ja)
JP (1) JP6518697B2 (ja)
CN (1) CN106416132B (ja)
AU (1) AU2015271104B2 (ja)
WO (1) WO2015187337A1 (ja)

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9794379B2 (en) 2013-04-26 2017-10-17 Cisco Technology, Inc. High-efficiency service chaining with agentless service nodes
US9781004B2 (en) 2014-10-16 2017-10-03 Cisco Technology, Inc. Discovering and grouping application endpoints in a network environment
US9660909B2 (en) 2014-12-11 2017-05-23 Cisco Technology, Inc. Network service header metadata for load balancing
USRE48131E1 (en) 2014-12-11 2020-07-28 Cisco Technology, Inc. Metadata augmentation in a service function chain
US9942140B2 (en) * 2015-10-08 2018-04-10 Arista Networks, Inc. Dynamic forward information base prefix optimization
US10250488B2 (en) * 2016-03-01 2019-04-02 International Business Machines Corporation Link aggregation management with respect to a shared pool of configurable computing resources
US10187306B2 (en) 2016-03-24 2019-01-22 Cisco Technology, Inc. System and method for improved service chaining
US10931793B2 (en) 2016-04-26 2021-02-23 Cisco Technology, Inc. System and method for automated rendering of service chaining
CN107547293B (zh) * 2016-06-29 2020-09-08 新华三技术有限公司 一种流路径探测方法和装置
US10419550B2 (en) 2016-07-06 2019-09-17 Cisco Technology, Inc. Automatic service function validation in a virtual network environment
US10320664B2 (en) 2016-07-21 2019-06-11 Cisco Technology, Inc. Cloud overlay for operations administration and management
US10218616B2 (en) 2016-07-21 2019-02-26 Cisco Technology, Inc. Link selection for communication with a service function cluster
US10225270B2 (en) 2016-08-02 2019-03-05 Cisco Technology, Inc. Steering of cloned traffic in a service function chain
US10218593B2 (en) 2016-08-23 2019-02-26 Cisco Technology, Inc. Identifying sources of packet drops in a service function chain environment
EP3501140B1 (de) * 2016-09-29 2020-08-26 Siemens Aktiengesellschaft Verfahren zum betrieb eines mehrere kommunikationsgeräten umfassenden kommunikationsnetzes eines industriellen automatisierungssystems und steuerungseinheit
US10491513B2 (en) 2017-01-20 2019-11-26 Hewlett Packard Enterprise Development Lp Verifying packet tags in software defined networks
US10425287B2 (en) 2017-02-23 2019-09-24 Dell Products L.P. Systems and methods for network topology discovery
US10785118B2 (en) * 2017-02-23 2020-09-22 Dell Products L.P. Systems and methods for network topology validation
US10225187B2 (en) 2017-03-22 2019-03-05 Cisco Technology, Inc. System and method for providing a bit indexed service chain
US10884807B2 (en) 2017-04-12 2021-01-05 Cisco Technology, Inc. Serverless computing and task scheduling
US10257033B2 (en) 2017-04-12 2019-04-09 Cisco Technology, Inc. Virtualized network functions and service chaining in serverless computing infrastructure
US10333855B2 (en) 2017-04-19 2019-06-25 Cisco Technology, Inc. Latency reduction in service function paths
US10560328B2 (en) 2017-04-20 2020-02-11 Cisco Technology, Inc. Static network policy analysis for networks
US10826788B2 (en) 2017-04-20 2020-11-03 Cisco Technology, Inc. Assurance of quality-of-service configurations in a network
US10623264B2 (en) 2017-04-20 2020-04-14 Cisco Technology, Inc. Policy assurance for service chaining
US10554689B2 (en) 2017-04-28 2020-02-04 Cisco Technology, Inc. Secure communication session resumption in a service function chain
US10505816B2 (en) 2017-05-31 2019-12-10 Cisco Technology, Inc. Semantic analysis to detect shadowing of rules in a model of network intents
US10693738B2 (en) 2017-05-31 2020-06-23 Cisco Technology, Inc. Generating device-level logical models for a network
US10554483B2 (en) 2017-05-31 2020-02-04 Cisco Technology, Inc. Network policy analysis for networks
US10581694B2 (en) 2017-05-31 2020-03-03 Cisco Technology, Inc. Generation of counter examples for network intent formal equivalence failures
US20180351788A1 (en) 2017-05-31 2018-12-06 Cisco Technology, Inc. Fault localization in large-scale network policy deployment
US10623271B2 (en) 2017-05-31 2020-04-14 Cisco Technology, Inc. Intra-priority class ordering of rules corresponding to a model of network intents
US10812318B2 (en) 2017-05-31 2020-10-20 Cisco Technology, Inc. Associating network policy objects with specific faults corresponding to fault localizations in large-scale network deployment
US10439875B2 (en) 2017-05-31 2019-10-08 Cisco Technology, Inc. Identification of conflict rules in a network intent formal equivalence failure
US11469986B2 (en) 2017-06-16 2022-10-11 Cisco Technology, Inc. Controlled micro fault injection on a distributed appliance
US10735275B2 (en) 2017-06-16 2020-08-04 Cisco Technology, Inc. Releasing and retaining resources for use in a NFV environment
US11150973B2 (en) 2017-06-16 2021-10-19 Cisco Technology, Inc. Self diagnosing distributed appliance
US10498608B2 (en) 2017-06-16 2019-12-03 Cisco Technology, Inc. Topology explorer
US11645131B2 (en) 2017-06-16 2023-05-09 Cisco Technology, Inc. Distributed fault code aggregation across application centric dimensions
US10686669B2 (en) 2017-06-16 2020-06-16 Cisco Technology, Inc. Collecting network models and node information from a network
US10587621B2 (en) 2017-06-16 2020-03-10 Cisco Technology, Inc. System and method for migrating to and maintaining a white-list network security model
US10574513B2 (en) 2017-06-16 2020-02-25 Cisco Technology, Inc. Handling controller and node failure scenarios during data collection
US10547715B2 (en) 2017-06-16 2020-01-28 Cisco Technology, Inc. Event generation in response to network intent formal equivalence failures
US10904101B2 (en) 2017-06-16 2021-01-26 Cisco Technology, Inc. Shim layer for extracting and prioritizing underlying rules for modeling network intents
US10798187B2 (en) 2017-06-19 2020-10-06 Cisco Technology, Inc. Secure service chaining
US10652102B2 (en) 2017-06-19 2020-05-12 Cisco Technology, Inc. Network node memory utilization analysis
US10805160B2 (en) 2017-06-19 2020-10-13 Cisco Technology, Inc. Endpoint bridge domain subnet validation
US10218572B2 (en) 2017-06-19 2019-02-26 Cisco Technology, Inc. Multiprotocol border gateway protocol routing validation
US10341184B2 (en) 2017-06-19 2019-07-02 Cisco Technology, Inc. Validation of layer 3 bridge domain subnets in in a network
US11343150B2 (en) 2017-06-19 2022-05-24 Cisco Technology, Inc. Validation of learned routes in a network
US10567229B2 (en) 2017-06-19 2020-02-18 Cisco Technology, Inc. Validating endpoint configurations between nodes
US10700933B2 (en) 2017-06-19 2020-06-30 Cisco Technology, Inc. Validating tunnel endpoint addresses in a network fabric
US10560355B2 (en) 2017-06-19 2020-02-11 Cisco Technology, Inc. Static endpoint validation
US10673702B2 (en) 2017-06-19 2020-06-02 Cisco Technology, Inc. Validation of layer 3 using virtual routing forwarding containers in a network
US10812336B2 (en) 2017-06-19 2020-10-20 Cisco Technology, Inc. Validation of bridge domain-L3out association for communication outside a network
US10644946B2 (en) 2017-06-19 2020-05-05 Cisco Technology, Inc. Detection of overlapping subnets in a network
US11283680B2 (en) 2017-06-19 2022-03-22 Cisco Technology, Inc. Identifying components for removal in a network configuration
US10528444B2 (en) 2017-06-19 2020-01-07 Cisco Technology, Inc. Event generation in response to validation between logical level and hardware level
US10437641B2 (en) 2017-06-19 2019-10-08 Cisco Technology, Inc. On-demand processing pipeline interleaved with temporal processing pipeline
US10411996B2 (en) 2017-06-19 2019-09-10 Cisco Technology, Inc. Validation of routing information in a network fabric
US10348564B2 (en) 2017-06-19 2019-07-09 Cisco Technology, Inc. Validation of routing information base-forwarding information base equivalence in a network
US10567228B2 (en) 2017-06-19 2020-02-18 Cisco Technology, Inc. Validation of cross logical groups in a network
US10547509B2 (en) 2017-06-19 2020-01-28 Cisco Technology, Inc. Validation of a virtual port channel (VPC) endpoint in the network fabric
US10554493B2 (en) 2017-06-19 2020-02-04 Cisco Technology, Inc. Identifying mismatches between a logical model and node implementation
US10505817B2 (en) 2017-06-19 2019-12-10 Cisco Technology, Inc. Automatically determining an optimal amount of time for analyzing a distributed network environment
US10432467B2 (en) 2017-06-19 2019-10-01 Cisco Technology, Inc. Network validation between the logical level and the hardware level of a network
US10536337B2 (en) 2017-06-19 2020-01-14 Cisco Technology, Inc. Validation of layer 2 interface and VLAN in a networked environment
US10333787B2 (en) 2017-06-19 2019-06-25 Cisco Technology, Inc. Validation of L3OUT configuration for communications outside a network
US10623259B2 (en) 2017-06-19 2020-04-14 Cisco Technology, Inc. Validation of layer 1 interface in a network
US10397271B2 (en) 2017-07-11 2019-08-27 Cisco Technology, Inc. Distributed denial of service mitigation for web conferencing
US10673698B2 (en) 2017-07-21 2020-06-02 Cisco Technology, Inc. Service function chain optimization using live testing
US10797959B2 (en) * 2017-08-11 2020-10-06 Quanta Computer Inc. LLDP based rack management controller
US11063856B2 (en) 2017-08-24 2021-07-13 Cisco Technology, Inc. Virtual network function monitoring in a network function virtualization deployment
US10587456B2 (en) 2017-09-12 2020-03-10 Cisco Technology, Inc. Event clustering for a network assurance platform
US10587484B2 (en) 2017-09-12 2020-03-10 Cisco Technology, Inc. Anomaly detection and reporting in a network assurance appliance
US10554477B2 (en) 2017-09-13 2020-02-04 Cisco Technology, Inc. Network assurance event aggregator
US10791065B2 (en) 2017-09-19 2020-09-29 Cisco Technology, Inc. Systems and methods for providing container attributes as part of OAM techniques
US10333833B2 (en) 2017-09-25 2019-06-25 Cisco Technology, Inc. Endpoint path assurance
US11018981B2 (en) 2017-10-13 2021-05-25 Cisco Technology, Inc. System and method for replication container performance and policy validation using real time network traffic
US10541893B2 (en) 2017-10-25 2020-01-21 Cisco Technology, Inc. System and method for obtaining micro-service telemetry data
US11102053B2 (en) 2017-12-05 2021-08-24 Cisco Technology, Inc. Cross-domain assurance
US10873509B2 (en) 2018-01-17 2020-12-22 Cisco Technology, Inc. Check-pointing ACI network state and re-execution from a check-pointed state
US10572495B2 (en) 2018-02-06 2020-02-25 Cisco Technology Inc. Network assurance database version compatibility
US10666612B2 (en) 2018-06-06 2020-05-26 Cisco Technology, Inc. Service chains for inter-cloud traffic
US10812315B2 (en) 2018-06-07 2020-10-20 Cisco Technology, Inc. Cross-domain network assurance
US10659298B1 (en) 2018-06-27 2020-05-19 Cisco Technology, Inc. Epoch comparison for network events
US10911495B2 (en) 2018-06-27 2021-02-02 Cisco Technology, Inc. Assurance of security rules in a network
US11218508B2 (en) 2018-06-27 2022-01-04 Cisco Technology, Inc. Assurance of security rules in a network
US11019027B2 (en) 2018-06-27 2021-05-25 Cisco Technology, Inc. Address translation for external network appliance
US11044273B2 (en) 2018-06-27 2021-06-22 Cisco Technology, Inc. Assurance of security rules in a network
US10904070B2 (en) 2018-07-11 2021-01-26 Cisco Technology, Inc. Techniques and interfaces for troubleshooting datacenter networks
US10826770B2 (en) 2018-07-26 2020-11-03 Cisco Technology, Inc. Synthesis of models for networks using automated boolean learning
US10616072B1 (en) 2018-07-27 2020-04-07 Cisco Technology, Inc. Epoch data interface
CN109474467B (zh) * 2018-11-15 2022-02-01 上海携程商务有限公司 网络自动化管理方法、装置、存储介质及电子设备
US11610110B2 (en) 2018-12-05 2023-03-21 Bank Of America Corporation De-conflicting data labeling in real time deep learning systems
CN111327446B (zh) * 2018-12-17 2022-02-25 北京华为数字技术有限公司 配置数据处理方法、软件定义网络设备、系统及存储介质
US11012315B2 (en) 2019-05-29 2021-05-18 Cisco Technology, Inc. Retroactively detecting state change in a network fabric across times
US11582105B2 (en) * 2020-06-30 2023-02-14 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Telemetry-based network switch configuration validation
US20230049447A1 (en) * 2021-08-11 2023-02-16 Commscope Technologies Llc Systems and methods for fronthaul optimization using software defined networking
CN114710434B (zh) * 2022-03-11 2023-08-25 深圳市风云实业有限公司 一种基于OpenFlow交换机的多级流表构建方法

Family Cites Families (150)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832484A (en) * 1996-07-02 1998-11-03 Sybase, Inc. Database system with methods for parallel lock management
US5914938A (en) * 1996-11-19 1999-06-22 Bay Networks, Inc. MAC address table search unit
US6381633B2 (en) * 1997-05-09 2002-04-30 Carmel Connection, Inc. System and method for managing multimedia messaging platforms
US6034957A (en) * 1997-08-29 2000-03-07 Extreme Networks, Inc. Sliced comparison engine architecture and method for a LAN switch
US6363396B1 (en) * 1998-12-21 2002-03-26 Oracle Corporation Object hashing with incremental changes
US7643481B2 (en) * 1999-03-17 2010-01-05 Broadcom Corporation Network switch having a programmable counter
TW431094B (en) * 1999-07-16 2001-04-21 Via Tech Inc Memory access of Ethernet
US6775281B1 (en) * 1999-09-30 2004-08-10 Mosaid Technologies, Inc. Method and apparatus for a four-way hash table
US6690667B1 (en) * 1999-11-30 2004-02-10 Intel Corporation Switch with adaptive address lookup hashing scheme
US6665297B1 (en) * 1999-12-09 2003-12-16 Mayan Networks Corporation Network routing table
US7133403B1 (en) * 2000-05-05 2006-11-07 Fujitsu Limited Transport network and method
US6947963B1 (en) * 2000-06-28 2005-09-20 Pluris, Inc Methods and apparatus for synchronizing and propagating distributed routing databases
US20020129086A1 (en) * 2000-08-31 2002-09-12 The Regents Of The University Of California Cluster-based aggregated switching technique (CAST) for routing data packets and information objects in computer networks
CA2388938C (en) * 2001-06-08 2010-05-04 The Distributions Systems Research Institute Terminal-to-terminal communication connection control system for ip full service
US20030208572A1 (en) * 2001-08-31 2003-11-06 Shah Rajesh R. Mechanism for reporting topology changes to clients in a cluster
US7133365B2 (en) * 2001-11-02 2006-11-07 Internap Network Services Corporation System and method to provide routing control of information over networks
US7286528B1 (en) * 2001-12-12 2007-10-23 Marvell International Ltd. Multiple address databases in a switch without the need for extra memory
US7277426B2 (en) * 2002-05-24 2007-10-02 Mosaid Technologies, Inc. Method and apparatus for reordering entries in a multi probe lookup
US7284272B2 (en) * 2002-05-31 2007-10-16 Alcatel Canada Inc. Secret hashing for TCP SYN/FIN correspondence
US6915296B2 (en) * 2002-10-29 2005-07-05 Agere Systems Inc. Incremental reorganization for hash tables
US7443841B2 (en) * 2002-10-30 2008-10-28 Nortel Networks Limited Longest prefix matching (LPM) using a fixed comparison hash table
US7342931B2 (en) * 2002-11-11 2008-03-11 Lg Electronics Inc. Apparatus and method for routing an AAL5 PDU in a mobile communication system
KR100918733B1 (ko) * 2003-01-30 2009-09-24 삼성전자주식회사 포워딩정보를 동적으로 관리하는 분산구조라우터 및 그방법
US7426518B2 (en) * 2003-03-28 2008-09-16 Netlogic Microsystems, Inc. System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size
US7512123B1 (en) * 2003-07-16 2009-03-31 Cisco Technology, Inc. Fibre channel fabric and switches with flexible prefix addressing
US20050074003A1 (en) * 2003-10-02 2005-04-07 Ball David Alexander Distributed software architecture for implementing BGP
US7539131B2 (en) * 2003-11-26 2009-05-26 Redback Networks Inc. Nexthop fast rerouter for IP and MPLS
US7379952B2 (en) * 2004-01-30 2008-05-27 Oracle International Corporation Techniques for multiple window resource remastering among nodes of a cluster
US7355983B2 (en) * 2004-02-10 2008-04-08 Cisco Technology, Inc. Technique for graceful shutdown of a routing protocol in a network
US7376078B1 (en) * 2004-03-24 2008-05-20 Juniper Networks, Inc. Selective replay of a state information within a computing device
US7397766B2 (en) * 2004-03-31 2008-07-08 Lucent Technologies Inc. High-speed traffic measurement and analysis methodologies and protocols
US7386753B2 (en) * 2004-09-02 2008-06-10 International Business Machines Corporation Subscription-based management and distribution of member-specific state data in a distributed computing system
US8145642B2 (en) * 2004-11-30 2012-03-27 Oracle International Corporation Method and apparatus to support bitmap filtering in a parallel system
US7984180B2 (en) * 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US7653670B2 (en) * 2005-11-28 2010-01-26 Nec Laboratories America, Inc. Storage-efficient and collision-free hash-based packet processing architecture and method
US7756805B2 (en) * 2006-03-29 2010-07-13 Alcatel-Lucent Usa Inc. Method for distributed tracking of approximate join size and related summaries
US7508772B1 (en) * 2006-06-02 2009-03-24 Cisco Technology, Inc. Partial graceful restart for border gateway protocol (BGP)
US20070288526A1 (en) * 2006-06-08 2007-12-13 Emc Corporation Method and apparatus for processing a database replica
US20070294319A1 (en) * 2006-06-08 2007-12-20 Emc Corporation Method and apparatus for processing a database replica
US7940649B2 (en) * 2006-08-01 2011-05-10 Cisco Technology, Inc. Techniques for graceful restart in a multi-process operating system
US7756015B1 (en) * 2006-09-13 2010-07-13 Marvell Israel (M.I.S.L) Ltd. Fast failover recovery for stackable network switches
US7885268B2 (en) * 2006-11-10 2011-02-08 Broadcom Corporation Method and system for hash table based routing via table and prefix aggregation
WO2008066481A1 (en) * 2006-11-27 2008-06-05 Telefonaktiebolaget Lm Ericsson (Publ) A method and system for providing arouting architecture for overlay networks
FR2914523B1 (fr) * 2007-03-30 2009-09-25 Thales Sa Procede et systeme de routage multipologie.
US7885294B2 (en) * 2007-08-23 2011-02-08 Cisco Technology, Inc. Signaling compression information using routing protocols
US8271500B2 (en) * 2007-09-11 2012-09-18 Microsoft Corporation Minimal perfect hash functions using double hashing
CN101232444B (zh) * 2008-01-22 2012-03-21 杭州华三通信技术有限公司 哈希冲突解决方法、装置及具有该装置的交换设备
US7886175B1 (en) * 2008-03-05 2011-02-08 Juniper Networks, Inc. Delaying one-shot signal objects
JP5074274B2 (ja) * 2008-04-16 2012-11-14 株式会社日立製作所 計算機システム及び通信経路の監視方法
US8204985B2 (en) * 2008-04-28 2012-06-19 Alcatel Lucent Probabilistic aggregation over distributed data streams
WO2010024931A1 (en) * 2008-08-29 2010-03-04 Brown University Cryptographic accumulators for authenticated hash tables
CN101729384B (zh) * 2008-10-15 2013-04-17 华为技术有限公司 一种标签交换方法、装置和系统
WO2010073996A1 (ja) * 2008-12-25 2010-07-01 株式会社日立製作所 通信システム及び通信制御装置
US7826369B2 (en) * 2009-02-20 2010-11-02 Cisco Technology, Inc. Subsets of the forward information base (FIB) distributed among line cards in a switching device
US8218561B2 (en) * 2009-04-27 2012-07-10 Cisco Technology, Inc. Flow redirection employing state information
WO2010141375A2 (en) * 2009-06-01 2010-12-09 Phatak Dhananjay S System, method, and apparata for secure communications using an electrical grid network
US8149713B2 (en) * 2009-09-29 2012-04-03 Cisco Technology, Inc. Forwarding of packets based on a filtered forwarding information base
US8270318B1 (en) * 2009-11-18 2012-09-18 Juniper Networks, Inc. Efficient switch-to-switch link discovery
US9882809B2 (en) * 2009-11-24 2018-01-30 Verizon Patent And Licensing Inc. Just-in time forwarding information base
US8638791B2 (en) * 2009-11-24 2014-01-28 Verizon Patent And Licensing Inc. Heterogeneous forwarding information bases in line cards
US20110134931A1 (en) * 2009-12-08 2011-06-09 Jacobus Van Der Merwe Virtual router migration
US8931088B2 (en) * 2010-03-26 2015-01-06 Alcatel Lucent Adaptive distinct counting for network-traffic monitoring and other applications
CN102405623B (zh) * 2010-04-08 2014-10-08 华为技术有限公司 路由表项的存储方法和装置
US20110249676A1 (en) * 2010-04-09 2011-10-13 Bijendra Singh Method and System for Forwarding and Switching Traffic in a Network Element
US8971342B2 (en) * 2010-04-19 2015-03-03 Nec Corporation Switch and flow table controlling method
US8467403B2 (en) * 2010-04-29 2013-06-18 Cisco Technology, Inc. Coordinated updating of forwarding information bases in a multistage packet switching device
EP2421225A1 (en) * 2010-08-20 2012-02-22 Alcatel Lucent Processing method, proxy processing agent, system and method for filling a routing table of a DHT client node, router and dht client node
US8290919B1 (en) * 2010-08-27 2012-10-16 Disney Enterprises, Inc. System and method for distributing and accessing files in a distributed storage system
US20120163165A1 (en) * 2010-12-23 2012-06-28 Electronics And Telecommunications Research Institute Apparatus and method for packet transport service based on multi protocol label switching-transport profile (mpls-tp) network
US8397025B2 (en) * 2010-12-30 2013-03-12 Lsi Corporation Apparatus and method for determining a cache line in an N-way set associative cache using hash functions
US9401772B2 (en) 2011-01-28 2016-07-26 Nec Corporation Communication system, control device, forwarding node, communication control method, and program
US20120221708A1 (en) * 2011-02-25 2012-08-30 Cisco Technology, Inc. Distributed content popularity tracking for use in memory eviction
US8938469B1 (en) * 2011-05-11 2015-01-20 Juniper Networks, Inc. Dynamically adjusting hash table capacity
US8812555B2 (en) * 2011-06-18 2014-08-19 Microsoft Corporation Dynamic lock-free hash tables
KR101269222B1 (ko) * 2011-06-24 2013-05-30 한국기초과학지원연구원 통신 장치, 허브 감지 방법 및 패킷 전송 방법
US8964563B2 (en) 2011-07-08 2015-02-24 Telefonaktiebolaget L M Ericsson (Publ) Controller driven OAM for OpenFlow
US8873409B2 (en) * 2011-08-30 2014-10-28 Cisco Technology, Inc. Installing and using a subset of routes for forwarding packets
CN103023773B (zh) * 2011-09-23 2015-05-27 华为技术有限公司 多拓扑网络中转发报文的方法、装置和系统
US8769224B1 (en) * 2011-09-30 2014-07-01 Emc Corporation Discovering new physical machines for physical to virtual conversion
US20130151535A1 (en) * 2011-12-09 2013-06-13 Canon Kabushiki Kaisha Distributed indexing of data
US8750099B2 (en) * 2011-12-16 2014-06-10 Cisco Technology, Inc. Method for providing border gateway protocol fast convergence on autonomous system border routers
US8521905B2 (en) 2011-12-22 2013-08-27 Telefonaktiebolaget L M Ericsson (Publ) System for flexible and extensible flow processing in software-defined networks
US9135123B1 (en) * 2011-12-28 2015-09-15 Emc Corporation Managing global data caches for file system
US9083710B1 (en) * 2012-01-03 2015-07-14 Google Inc. Server load balancing using minimally disruptive hash tables
US20130185430A1 (en) * 2012-01-18 2013-07-18 LineRate Systems, Inc. Multi-level hash tables for socket lookups
US20130182713A1 (en) * 2012-01-18 2013-07-18 LineRate Systems, Inc. State management using a large hash table
US20130226813A1 (en) * 2012-02-23 2013-08-29 Robert Matthew Voltz Cyberspace Identification Trust Authority (CITA) System and Method
EP2645645A1 (en) * 2012-03-30 2013-10-02 British Telecommunications Public Limited Company Packet network routing
US9049149B2 (en) * 2012-03-30 2015-06-02 Fujitsu Limited Minimal data loss load balancing on link aggregation groups
US8868926B2 (en) * 2012-04-06 2014-10-21 Exablox Corporation Cryptographic hash database
US9191139B1 (en) * 2012-06-12 2015-11-17 Google Inc. Systems and methods for reducing the computational resources for centralized control in a network
EP2680663B1 (en) * 2012-06-29 2015-11-18 BlackBerry Limited Managing multiple forwarding information bases
US9178806B2 (en) * 2012-07-31 2015-11-03 Alcatel Lucent High-speed content routing
US8958294B2 (en) * 2012-08-09 2015-02-17 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Assigning identifiers to mobile devices according to their data service requirements
US8854973B2 (en) * 2012-08-29 2014-10-07 International Business Machines Corporation Sliced routing table management with replication
US9124527B2 (en) * 2012-08-29 2015-09-01 International Business Machines Corporation Sliced routing table management
US8817796B2 (en) * 2012-08-29 2014-08-26 International Business Machines Corporation Cached routing table management
US9215171B2 (en) * 2012-08-29 2015-12-15 International Business Machines Corporation Hashing-based routing table management
US8792494B2 (en) * 2012-09-14 2014-07-29 International Business Machines Corporation Facilitating insertion of device MAC addresses into a forwarding database
KR101977575B1 (ko) * 2012-09-28 2019-05-13 삼성전자 주식회사 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
US9245626B2 (en) * 2012-10-26 2016-01-26 Cisco Technology, Inc. System and method for packet classification and internet protocol lookup in a network environment
US9237066B2 (en) * 2012-11-16 2016-01-12 Dell Products, L.P. Packet switch modules for computer networks with efficient management of databases used in forwarding of network traffic
US9491087B1 (en) * 2012-11-28 2016-11-08 The Arizona Board Of Regents On Behalf Of The University Of Arizona Devices and methods for forwarding information base aggregation
US9036477B2 (en) * 2012-12-10 2015-05-19 Verizon Patent And Licensing Inc. Virtual private network to label switched path mapping
US9240975B2 (en) * 2013-01-30 2016-01-19 Palo Alto Networks, Inc. Security device implementing network flow prediction
US9077702B2 (en) * 2013-01-30 2015-07-07 Palo Alto Networks, Inc. Flow ownership assignment in a distributed processor system
US8997223B2 (en) * 2013-01-30 2015-03-31 Palo Alto Networks, Inc. Event aggregation in a distributed processor system
US8934490B2 (en) * 2013-01-31 2015-01-13 Telefonaktiebolaget L M Ericsson (Publ) Accelerated MAC address resolution for IPv6 traffic with IS-IS protocol
US9537771B2 (en) * 2013-04-04 2017-01-03 Marvell Israel (M.I.S.L) Ltd. Exact match hash lookup databases in network switch devices
US20140317256A1 (en) * 2013-04-17 2014-10-23 Cisco Technology, Inc. Loop and Outage Avoidance in Software Defined Network
US20140337375A1 (en) * 2013-05-07 2014-11-13 Exeray Inc. Data search and storage with hash table-based data structures
CN104219125B (zh) * 2013-05-31 2017-12-05 华为技术有限公司 信息为中心网络icn中转发报文的方法、装置及系统
US9384227B1 (en) * 2013-06-04 2016-07-05 Amazon Technologies, Inc. Database system providing skew metrics across a key space
US9264302B2 (en) * 2013-06-17 2016-02-16 Telefonaktiebolaget L M Ericsson (Publ) Methods and systems with enhanced robustness for multi-chassis link aggregation group
US9253086B2 (en) * 2013-07-09 2016-02-02 Telefonaktiebolaget L M Ericsson (Publ) Method and system of dynamic next-hop routing
US9891857B2 (en) * 2013-07-15 2018-02-13 International Business Machines Corporation Utilizing global digests caching in similarity based data deduplication
US20150019815A1 (en) * 2013-07-15 2015-01-15 International Business Machines Corporation Utilizing global digests caching in data deduplication of workloads
US10296597B2 (en) * 2013-07-15 2019-05-21 International Business Machines Corporation Read ahead of digests in similarity based data deduplicaton
US9892048B2 (en) * 2013-07-15 2018-02-13 International Business Machines Corporation Tuning global digests caching in a data deduplication system
US9892127B2 (en) * 2013-07-15 2018-02-13 International Business Machines Corporation Global digests caching in a data deduplication system
US9906436B2 (en) * 2013-08-05 2018-02-27 Futurewei Technologies, Inc. Scalable name-based centralized content routing
US20150113166A1 (en) * 2013-10-18 2015-04-23 Palo Alto Research Center Incorporated Method and apparatus for a named network within an autonomous system
US9397946B1 (en) * 2013-11-05 2016-07-19 Cisco Technology, Inc. Forwarding to clusters of service nodes
US9405643B2 (en) * 2013-11-26 2016-08-02 Dropbox, Inc. Multi-level lookup architecture to facilitate failure recovery
US9740759B1 (en) * 2014-01-24 2017-08-22 EMC IP Holding Company LLC Cloud migrator
US9225597B2 (en) * 2014-03-14 2015-12-29 Nicira, Inc. Managed gateways peering with external router to attract ingress packets
US9270636B2 (en) * 2014-04-07 2016-02-23 Oracle International Corporation Neighbor lookup operations in a network node
US9485115B2 (en) * 2014-04-23 2016-11-01 Cisco Technology, Inc. System and method for enabling conversational learning in a network environment
US20150324690A1 (en) * 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
US20150350077A1 (en) * 2014-05-30 2015-12-03 Brocade Communications Systems, Inc. Techniques For Transforming Legacy Networks Into SDN-Enabled Networks
US9825913B2 (en) * 2014-06-04 2017-11-21 Nicira, Inc. Use of stateless marking to speed up stateful firewall rule processing
US9860316B2 (en) * 2014-09-19 2018-01-02 Facebook, Inc. Routing network traffic based on social information
US9559936B2 (en) * 2015-02-12 2017-01-31 Arista Networks, Inc. Method and system for initializing the border gateway protocol on network devices
US20160241474A1 (en) * 2015-02-12 2016-08-18 Ren Wang Technologies for modular forwarding table scalability
US10021017B2 (en) * 2015-03-18 2018-07-10 Futurewei Technologies, Inc. X channel to zone in zone routing
US10630585B2 (en) * 2015-04-16 2020-04-21 Arista Networks, Inc. Method and system for withdrawing programmed routes in network devices
US10891264B2 (en) * 2015-04-30 2021-01-12 Vmware, Inc. Distributed, scalable key-value store
US9729427B2 (en) * 2015-05-08 2017-08-08 Arista Networks, Inc. Method and system for route hardware programming in network devices
US9787575B2 (en) * 2015-05-28 2017-10-10 Arista Networks, Inc. Method and system for programming equal-cost multi-path routes on network devices
KR20170006742A (ko) * 2015-07-09 2017-01-18 한국전자통신연구원 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법
US9960999B2 (en) * 2015-08-10 2018-05-01 Futurewei Technologies, Inc. Balanced load execution with locally distributed forwarding information base in information centric networks
US20170090814A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Efficient storage and retrieval for wearable-device data
US9760283B2 (en) * 2015-09-28 2017-09-12 Zscaler, Inc. Systems and methods for a memory model for sparsely updated statistics
US11100073B2 (en) * 2015-11-12 2021-08-24 Verizon Media Inc. Method and system for data assignment in a distributed system
WO2017096564A1 (zh) * 2015-12-09 2017-06-15 北京大学深圳研究生院 一种基于内容的集中式路由体系架构mccn
US10802737B2 (en) * 2016-02-01 2020-10-13 Cloudian Holdings, Inc. System and processes for dynamic object routing
US10412009B2 (en) * 2016-03-10 2019-09-10 Arista Networks, Inc. Next hop groups
US9973411B2 (en) * 2016-03-21 2018-05-15 Nicira, Inc. Synchronization of data and control planes of routers
US9960994B2 (en) * 2016-03-23 2018-05-01 Juniper Networks, Inc. Method, system, and apparatus for forwarding network traffic using minimal forwarding information bases
US10320675B2 (en) * 2016-05-04 2019-06-11 Cisco Technology, Inc. System and method for routing packets in a stateless content centric network

Also Published As

Publication number Publication date
WO2015187337A1 (en) 2015-12-10
CN106416132A (zh) 2017-02-15
AU2015271104A1 (en) 2016-12-01
AU2015271104B2 (en) 2018-05-17
JP2017516417A (ja) 2017-06-15
CN106416132B (zh) 2019-12-10
US9935831B1 (en) 2018-04-03
EP3143726A1 (en) 2017-03-22

Similar Documents

Publication Publication Date Title
JP6518697B2 (ja) コントローラにスイッチモデリングインターフェイスを使用してネットワークスイッチを制御するためのシステム及び方法
CN106605392B (zh) 用于使用控制器在网络上进行操作的系统和方法
US9654380B1 (en) Systems and methods for determining network topologies
US10270645B2 (en) Systems and methods for handling link aggregation failover with a controller
CN107431642B (zh) 用于控制交换机以捕获和监视网络流量的系统和方法
US9548896B2 (en) Systems and methods for performing network service insertion
US10142160B1 (en) System and methods for managing network hardware address requests with a controller
US8787388B1 (en) System and methods for forwarding packets through a network
US20130223444A1 (en) System and methods for managing network packet forwarding with a controller
US9008080B1 (en) Systems and methods for controlling switches to monitor network traffic
US9548900B1 (en) Systems and methods for forwarding network packets in a network using network domain topology information
US10291533B1 (en) Systems and methods for network traffic monitoring
US11115346B2 (en) Systems and methods for generating network flow information
US9356838B1 (en) Systems and methods for determining network forwarding paths with a controller
US9264295B1 (en) Systems and methods for forwarding broadcast network packets with a controller
US10873476B2 (en) Networks with multiple tiers of switches

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161117

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180918

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181217

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190422

R150 Certificate of patent or registration of utility model

Ref document number: 6518697

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees