JP5637148B2 - スイッチネットワークシステム、コントローラ、及び制御方法 - Google Patents

スイッチネットワークシステム、コントローラ、及び制御方法 Download PDF

Info

Publication number
JP5637148B2
JP5637148B2 JP2011548949A JP2011548949A JP5637148B2 JP 5637148 B2 JP5637148 B2 JP 5637148B2 JP 2011548949 A JP2011548949 A JP 2011548949A JP 2011548949 A JP2011548949 A JP 2011548949A JP 5637148 B2 JP5637148 B2 JP 5637148B2
Authority
JP
Japan
Prior art keywords
entry
switch
flow table
controller
action
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
JP2011548949A
Other languages
English (en)
Other versions
JPWO2011083682A1 (ja
Inventor
洋史 上野
洋史 上野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2011548949A priority Critical patent/JP5637148B2/ja
Publication of JPWO2011083682A1 publication Critical patent/JPWO2011083682A1/ja
Application granted granted Critical
Publication of JP5637148B2 publication Critical patent/JP5637148B2/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
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • 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/12Avoiding congestion; Recovering from congestion
    • H04L47/127Avoiding congestion; Recovering from congestion by using congestion prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、スイッチとコントローラを含むスイッチネットワークシステムを制御する技術に関する。
非特許文献1(Nick McKeown et al., “OpenFlow: Enabling Innovation in Campus Networks”, ACM SIGCOMM Computer Communication Review, Vol. 38, No. 2, 2008. (http://www.openflowswitch.org//documents/openflow−wp−latest.pdf))に、「オープンフロー(OpenFlow)」という技術が記載されている。オープンフローでは、フロー単位で経路制御、障害回復、負荷分散、最適化が行われる。オープンフローでは、転送ノードとして機能するオープンフロースイッチと、そのオープンフロースイッチを制御するオープンフローコントローラが用いられる。
オープンフロースイッチは、「マッチ条件」と「アクション」との対応関係を示すフローテーブルを備え、このフローテーブルに従って動作する。具体的には、オープンフロースイッチは、パケットを受け取ると、フローテーブルを参照し、受信パケットにマッチするエントリをフローテーブルから検索する。受信パケットにマッチするエントリがフローテーブルに登録されている場合、オープンフロースイッチは、当該マッチエントリのアクションで指定されている処理を、受信パケットに対して実行する。典型的には、オープンフロースイッチは、アクションで指定されている出力ポートに受信パケットを転送する。
オープンフロースイッチのフローテーブルを制御するのが、オープンフローコントローラである。すなわち、オープンフローコントローラは、新規エントリの追加、エントリ変更、エントリ削除などをオープンフロースイッチに指示し、それにより、オープンフロースイッチの動作を制御する。例えば、マッチエントリがフローテーブルに無い場合、オープンフロースイッチは、オープンフローコントローラに経路設定を要求する。この経路設定要求に応答して、オープンフローコントローラは、当該受信パケットのフローの経路を設計する。そして、オープンフローコントローラは、設計経路に沿ったパケット転送が実現されるように、設計経路上の各スイッチに対して、新規エントリの追加を指示する。
Nick McKeown et al., "OpenFlow: Enabling Innovation in Campus Networks", ACM SIGCOMM Computer Communication Review, Vol. 38, No. 2, 2008. (http://www.openflowswitch.org//documents/openflow−wp−latest.pdf)
上記オープンフローのようなスイッチとコントローラとが分離したスイッチネットワークシステムに関して、本願発明者は、次のような課題を見出した。
コントローラを介して所望のスイッチのフローテーブルの内容を設定したい場合がある。その場合、まず、その所望のスイッチにコントローラへパケットを送らせる。そして、そのパケットに応答して、コントローラが所定のアプリケーション処理を実行し、所望のスイッチのフローテーブルの設定を行う。
しかしながら、所望のスイッチからコントローラへパケットを送らせる場合、大量のトラヒックがコントローラに流入する可能性がある。一般に、コントローラ上のアプリケーション処理は、汎用CPUがソフトウェアを実行することにより実現され、スイッチにおいてハードウェアにより実現されるパケット転送処理に比べてはるかに遅い。従って、スイッチが大量のトラヒックをコントローラに転送した場合、コントローラ側ではその大量のトラヒックを処理しきれない。その結果、コントローラの処理負荷が増大し、他の重要な制御処理ができなくなる。
コントローラでは、他の重要な制御処理ができなくなることを防止するため、パケット受信のタスクの優先度が下げられる場合がある。あるいは、パケット受信キューのサイズを調整することにより、過剰なトラヒック流入が防止されることもある。しかしながら、そのような方法では、重要な情報を含むパケットを取りこぼしてしまう可能性がある。
本発明の1つの目的は、スイッチのフローテーブルを制御する際に、コントローラへの過剰なトラヒック流入を防ぐことにある。
本発明の1つの観点において、スイッチネットワークシステムが提供される。そのスイッチネットワークシステムは、フローテーブルを参照してパケット処理を行うスイッチと、そのスイッチのフローテーブルを制御するコントローラと、を備える。フローテーブル中の各エントリは、マッチ条件とアクションを示す。スイッチは、フローテーブルを参照して、マッチ条件にマッチする受信パケットに対してアクションで指定される処理を実行する。フローテーブルにおいて、アクションが「コントローラへの受信パケットの転送」に変更されるエントリは、対象エントリである。
コントローラは、エントリ制御ブロックと、フローテーブル設定ブロックと、を備える。エントリ制御ブロックは、対象エントリのマッチ条件にマッチするパケットがコントローラに転送された場合にコントローラにかかる負荷を予測する。その負荷が許容値以内の場合、フローテーブル設定ブロックは、スイッチに対して、対象エントリのアクションの変更を指示する。一方、負荷が許容値を超える場合、エントリ制御ブロックは、負荷が許容値以内となるまでエントリ分割処理を繰り返す。エントリ分割処理において、エントリ制御ブロックは、対象エントリを複数の分割後エントリに分割し、対象エントリのマッチ条件を複数の条件に分割し、複数の分割後エントリのマッチ条件を複数の条件のそれぞれに設定する。フローテーブル設定ブロックは、スイッチに対して、複数の分割後エントリをフローテーブルに設定することを指示する。エントリ制御ブロックは、複数の分割後エントリのいずれかを新たに対象エントリに設定する。
本発明の他の観点において、スイッチのフローテーブルを制御するコントローラが提供される。フローテーブル中の各エントリは、マッチ条件とアクションを示す。スイッチは、フローテーブルを参照し、マッチ条件にマッチする受信パケットに対してアクションで指定される処理を実行する。フローテーブルにおいて、アクションが「コントローラへの受信パケットの転送」に変更されるエントリは、対象エントリである。
コントローラは、エントリ制御ブロックと、フローテーブル設定ブロックと、を備える。エントリ制御ブロックは、対象エントリのマッチ条件にマッチするパケットがコントローラに転送された場合にコントローラにかかる負荷を予測する。その負荷が許容値以内の場合、フローテーブル設定ブロックは、スイッチに対して、対象エントリのアクションの変更を指示する。一方、負荷が許容値を超える場合、エントリ制御ブロックは、負荷が許容値以内となるまでエントリ分割処理を繰り返す。エントリ分割処理において、エントリ制御ブロックは、対象エントリを複数の分割後エントリに分割し、対象エントリのマッチ条件を複数の条件に分割し、複数の分割後エントリのマッチ条件を複数の条件のそれぞれに設定する。フローテーブル設定ブロックは、スイッチに対して、複数の分割後エントリをフローテーブルに設定することを指示する。エントリ制御ブロックは、複数の分割後エントリのいずれかを新たに対象エントリに設定する。
本発明の更に他の観点において、スイッチのフローテーブルをコントローラによって制御する制御方法が提供される。フローテーブル中の各エントリは、マッチ条件とアクションを示す。スイッチは、フローテーブルを参照し、マッチ条件にマッチする受信パケットに対してアクションで指定される処理を実行する。フローテーブルにおいて、アクションが「コントローラへの受信パケットの転送」に変更されるエントリは、対象エントリである。
制御方法は、(A)対象エントリのマッチ条件にマッチするパケットがコントローラに転送された場合にコントローラにかかる負荷を予測するステップと、(B)負荷が許容値以内の場合、スイッチに対して、対象エントリのアクションの変更を指示するステップと、(C)負荷が許容値を超える場合、負荷が許容値以内となるまでエントリ分割処理を繰り返すステップと、を含む。エントリ分割処理は、(a)対象エントリを複数の分割後エントリに分割し、対象エントリのマッチ条件を複数の条件に分割し、複数の分割後エントリのマッチ条件を複数の条件のそれぞれに設定するステップと、(b)スイッチに対して、複数の分割後エントリをフローテーブルに設定することを指示するステップと、(c)複数の分割後エントリのいずれかを新たに対象エントリに設定するステップと、を含む。
本発明の更に他の観点において、上記制御方法をコントローラに実行させる制御プログラムが提供される。
本発明によれば、スイッチのフローテーブルを制御する際に、コントローラへの過剰なトラヒック流入を防ぐことが可能となる。その結果、コントローラの処理負荷の増大が抑制され、他の重要な制御処理ができなくなるといった事態が未然に防がれる。
上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。
図1は、本発明の実施の形態に係るスイッチネットワークシステムの構成例を示すブロック図である。 図2は、本実施の形態に係るスイッチ及びコントローラの構成例を示すブロック図である。 図3は、本実施の形態におけるフローテーブルを示す概念図である。 図4は、本実施の形態に係るコントローラのハードウェア構成例を示すブロック図である。 図5は、本実施の形態に係るスイッチ処理を示すフローチャートである。 図6は、本実施の形態に係る負荷予測及びエントリ分割処理を含む処理を示すフローチャートである。 図7は、本実施の形態に係るエントリ削除処理を含む処理を示すフローチャートである。 図8は、本実施の形態に係る処理の具体例を説明するための概念図である。 図9は、本実施の形態に係る処理の具体例を説明するための概念図である。 図10は、本実施の形態に係る処理の具体例を説明するための概念図である。 図11は、本実施の形態に係る処理の具体例を説明するための概念図である。 図12は、本実施の形態に係る処理の具体例を説明するための概念図である。 図13は、本実施の形態に係る処理の具体例を説明するための概念図である。 図14は、本実施の形態に係る処理の具体例を説明するための概念図である。
添付図面を参照して、本発明の実施の形態を説明する。
1.構成
図1は、本実施の形態に係るスイッチネットワークシステム1の構成例を示すブロック図である。スイッチネットワークシステム1は、スイッチ10、サーバ20、及びコントローラ100を備えている。複数のスイッチ10は、ネットワーク内に分散的に配置されている。スイッチ10間はリンク(回線)で接続されており、複数のスイッチ10によってスイッチネットワークが構成されている。このスイッチネットワークが、複数のサーバ20間に介在している。
各スイッチ10は、フローテーブルを備えており、そのフローテーブルに従ってパケット処理を行う。そのフローテーブルの制御を行うのが、コントローラ100である。コントローラ100は、制御回線5を介してスイッチ10に接続されており、制御回線5を介して各スイッチ10のフローテーブルを設定する機能を有している。コントローラ100は、フローテーブルの設定を通してスイッチ10の動作を制御することによって、ネットワーク通信を適宜制御することができる。このような処理を実現するためのコントローラ100とスイッチ10との間のインタフェース方式としては、例えば、Openflow(http://www.openflowswitch.org/を参照)が挙げられる。この場合、「Openflow Controller」がコントローラ100となり、「Openflow Switch」が各スイッチ10となる。
本実施の形態に係るスイッチネットワークシステム1は、例えば、データセンター(data center)に適用される。
図2は、本実施の形態に係るスイッチ10及びコントローラ100の構成例を示すブロック図である。
スイッチ10は、スイッチ処理ブロック11、統計情報作成ブロック12、記憶ブロック13、制御インタフェース14、及び複数のポート15を備えている。外部からパケットが入力されるポート15は入力ポートであり、パケットが外部に出力されるポート15は出力ポートである。スイッチ処理ブロック11は、入力ポートから出力ポートへのパケット転送等、スイッチの主要な処理を行う。制御インタフェース14は、制御回線5を介してコントローラ100に接続されており、コントローラ100との間で通信を行う際のインタフェースとなる。
記憶ブロック13には、フローテーブルTBLが格納されている。図3に示されるように、フローテーブルTBLは、少なくとも1つのエントリを備えており、各エントリは「マッチ条件」と「アクション」を示している。「マッチ条件」は、入力ポート、送信元MACアドレス、宛先MACアドレス、送信元IPアドレス、宛先IPアドレス、L4プロトコル識別子、送信元L4ポート番号、宛先L4ポート番号などのパラメータの組み合わせで構成される。「アクション」は、マッチ条件にマッチするパケットに対して実行される処理内容を示す。
スイッチ処理ブロック11は、入力ポートを通してパケットを受信すると、記憶ブロック13に格納されているフローテーブルTBLを参照する。そして、スイッチ処理ブロック11は、受信パケットのヘッダ情報などに基いて、受信パケットがいずれかのエントリのマッチ条件にマッチするか否かを調べる。つまり、スイッチ処理ブロック11は、受信パケットにマッチするエントリをフローテーブルTBLから検索する。受信パケットがいずれかのエントリのマッチ条件にマッチした場合、スイッチ処理ブロック11は、該当エントリのアクションで指定される処理を、受信パケットに対して実行する。典型的には、アクションはパケットの出力ポート(転送先)を示しており、スイッチ処理ブロック11は、その出力ポートに受信パケットを転送する。
記憶ブロック13には、更に、統計情報STAが格納されている。統計情報STAは、フローテーブルTBLのエントリ毎にマッチ状況を示す。マッチ状況は、各エントリにマッチしたパケットの数、すなわち、各エントリのマッチ回数を含む。マッチ状況は、マッチしたパケットのバイト数を含んでいてもよい。フローテーブルTBLと統計情報STAは、1つのテーブルにまとめられていてもよい。
この統計情報STAを作成するのが、スイッチ10の統計情報作成ブロック12である。統計情報作成ブロック12は、スイッチ処理ブロック11によるパケット処理状況に基いて、統計情報STAを作成する。例えば、統計情報作成ブロック12は、フローテーブルTBLのエントリ毎に統計カウンタを有し、その統計カウンタを用いてマッチ回数をカウントする。また、統計情報作成ブロック12は、sFlow(登録商標)やNetFlow(登録商標)といったサンプリングベースの統計処理技術によっても実現され得る。
コントローラ100は、パケット受信ブロック110、フロー処理ブロック120、統計情報収集ブロック130、エントリ制御ブロック140、フローテーブル設定ブロック150、及び制御インタフェース160を備えている。制御インタフェース160は、制御回線5を介して各スイッチ10に接続されており、各スイッチ10との間で通信を行う際のインタフェースとなる。
パケット受信ブロック110は、制御インタフェース160を介して、スイッチ10からパケットを受け取る。パケット受信ブロック110は、受け取ったパケットをフロー処理ブロック120に渡す。フロー処理ブロック120は、受け取ったパケットに基いてフローを識別し、当該フローに対して様々なアプリケーション処理を行う。アプリケーション処理の例として、経路設計や負荷分散が挙げられる。そして、フロー処理ブロック120は、スイッチ10のフローテーブルTBLの設定変更を、フローテーブル設定ブロック150に指示する。フローテーブルTBLの設定変更の内容は、アプリケーション処理に応じて様々である。
統計情報収集ブロック130は、制御インタフェース160を介して、スイッチ10から統計情報STAを受け取る。統計情報収集ブロック130は、受け取った統計情報STAをエントリ制御ブロック140に渡す。エントリ制御ブロック140は、統計情報STA等に基いて、後述される「負荷予測」や「エントリ分割処理」を実行する。そして、エントリ制御ブロック140は、スイッチ10のフローテーブルTBLの設定変更を、フローテーブル設定ブロック150に指示する。
フローテーブル設定ブロック150は、フロー処理ブロック120やエントリ制御ブロック140からの指示に従って、スイッチ10のフローテーブルTBLの設定変更を行う。具体的には、フローテーブル設定ブロック150は、制御インタフェース160を介して、スイッチ10に対してフローテーブルTBLの設定を指示する。その指示内容としては、新規エントリの追加、エントリ変更、エントリ削除などが挙げられる。
図4は、コントローラ100のハードウェア構成例を示している。コントローラ100は、CPU(Central
Processing Unit)101、メモリ102、二次記憶装置103、ネットワークインタフェース104等を備える計算機である。上述のパケット受信ブロック110、フロー処理ブロック120、統計情報収集ブロック130、エントリ制御ブロック140、フローテーブル設定ブロック150、及び制御インタフェース160は、CPU101が制御プログラムを実行することにより実現される。制御プログラムは、コンピュータ(CPU101)によって実行されるコンピュータプログラムであり、メモリ102に格納される。また、制御プログラムは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。
2.処理フロー
2−1.スイッチ処理
図5は、本実施の形態に係るスイッチ処理を示すフローチャートである。スイッチ10は、あるフローのパケットを受信する(ステップS11)。具体的には、スイッチ処理ブロック11が、入力ポートを通してパケットを受信する。入力ポートからパケットを受け取ると、スイッチ処理ブロック11は、受信パケットのヘッダ情報を抽出する。そして、スイッチ処理ブロック11は、抽出したヘッダ情報と入力ポートを検索キーとして用いて、受信パケットにマッチするエントリをフローテーブルTBLから検索する(ステップS12)。
受信パケットにマッチするエントリがフローテーブルTBLに有る場合(ステップS13;Yes)、スイッチ処理ブロック11は、該当エントリのアクションで指定される処理を、受信パケットに対して実行する(ステップS14)。典型的には、アクションはパケットの出力ポート(転送先)を示しており、スイッチ処理ブロック11は、その出力ポートに受信パケットを転送する。一方、受信パケットにマッチするエントリがフローテーブルTBLに無い場合(ステップS13;No)、スイッチ処理ブロック11は、制御インタフェース14を介して、受信パケット(あるいは受信パケットのヘッダ情報)をコントローラ100に送信する(ステップS15)。受信パケット(あるいは受信パケットのヘッダ情報)をコントローラ100に送信したスイッチ10は、以下「要求元スイッチ」と参照される。
コントローラ100のフロー処理ブロック120は、制御インタフェース160及びパケット受信ブロック110を介して、スイッチ10から受信パケット(あるいは受信パケットのヘッダ情報)を受け取る。それに応答して、フロー処理ブロック120は、フロー識別を行い、当該フローに対して様々なアプリケーション処理を行う(ステップS100)。アプリケーション処理の例として、要求元スイッチから宛先までの経路設計が挙げられる。そして、フロー処理ブロック120は、必要なスイッチ10のフローテーブルTBLの設定変更を、フローテーブル設定ブロック150に指示する。フローテーブル設定ブロック150は、制御インタフェース160を介して、必要なスイッチ10に対してフローテーブルTBLの設定を指示する。
コントローラ100から指示を受けた各スイッチ10は、その指示に従って、自身のフローテーブルTBLの設定を行う(ステップS16)。その指示内容としては、新規エントリの追加、エントリ変更、エントリ削除などが挙げられる。その後、コントローラ100は、受信パケット(あるいは受信パケットのヘッダ情報)を要求元スイッチに返送する。
2−2.負荷予測及びエントリ分割処理
コントローラ100を介して、スイッチ10のフローテーブルTBL中のあるエントリの内容を変更したい場合がある。例えば、多数のフローにマッチするワイルドカードエントリ(wildcard entry)に関して、一部のフローに対するアクションを変えたい場合がある。内容が変更されるエントリは、以下「対象エントリ」と参照される。この場合、対象エントリのアクションが、一旦、「コントローラ100への受信パケットの転送」に変更される。コントローラ100は、スイッチ10からパケットを受け取ると、所定のアプリケーション処理を実行し、それにより、フローテーブルTBLの内容を所望のものに設定する。
しかしながら、対象エントリのアクションが「コントローラ100への受信パケットの転送」に変更されている期間、その対象エントリのマッチ条件にマッチする全てのパケットがコントローラ100に転送される。これは、コントローラ100の処理負荷の増大を招く。特に、対象エントリがワイルドカードエントリの場合、大量のトラヒックがコントローラ100に流入し、最悪の場合、コントローラ100は他の重要な制御処理ができなくなる。
このような事態を未然に防ぐため、本実施の形態に係るコントローラ100は、「負荷予測」及び「エントリ分割処理」を行う。図6を参照して、「負荷予測」及び「エントリ分割処理」を説明する。
ステップS110:
統計情報収集ブロック130は、制御インタフェース160を介して、スイッチ10から統計情報STAを定期的に受け取る。統計情報収集ブロック130は、受け取った統計情報STAをエントリ制御ブロック140に渡す。
ステップS120:
エントリ制御ブロック140は、対象エントリのマッチ条件にマッチするパケットがコントローラ100に転送された場合にコントローラ100(CPU101)にかかる負荷を予測する。このとき、エントリ制御ブロック140は、上記統計情報STAに基いて負荷を予測する。具体的には、統計情報STAは、所定期間内に対象エントリにマッチしたパケットの数やバイト数といった統計量を示している。よって、エントリ制御ブロック140は、それら統計量を統合することによって、パケットレートや帯域を計算することができる。更に、エントリ制御ブロック140は、予め用意されたパケットレートと負荷との対応表を参照することによって、CPU101にかかる負荷を予測することができる。
ステップS130:
エントリ制御ブロック140は、予測負荷と許容値との比較を行い、予測負荷が許容値以内に収まっているか否かを判定する。
ステップS140:
予測負荷が許容値以内の場合(ステップS130;Yes)、エントリ制御ブロック140は、対象エントリの設定変更を、フローテーブル設定ブロック150に指示する。更に、フローテーブル設定ブロック150は、制御インタフェース160を介して、スイッチ10に対して、対象エントリのアクションの変更を指示する。具体的には、フローテーブル設定ブロック150は、スイッチ10に対して、対象エントリのアクションを「コントローラ100への受信パケットの転送」に変更することを指示する。スイッチ10は、指示に従って、対象エントリのアクションを「コントローラ100への受信パケットの転送」に変更する。
ステップS150:
一方、予測負荷が許容値を超える場合(ステップS130;No)、エントリ制御ブロック140は、「エントリ分割処理」を実行する。具体的には、エントリ分割処理(ステップS150)は、次のステップS151〜S153を含む。
ステップS151:
エントリ制御ブロック140は、対象エントリを、複数の部分エントリに分割する。各部分エントリのアクションは、対象エントリのアクションと同一である。一方、部分エントリのマッチ条件にマッチするマッチ範囲は、対象エントリのマッチ条件にマッチするマッチ範囲の一部である。つまり、エントリ制御ブロック140は、対象エントリのマッチ条件(マッチ範囲)も複数の条件(範囲)に分割し、複数の部分エントリのそれぞれのマッチ条件を複数の条件のそれぞれに設定する。例えば、エントリ制御ブロック140は、対象エントリのマッチ条件で示されているIPアドレス範囲を複数の部分範囲に分割し、それら複数の部分範囲を複数の部分エントリのそれぞれのマッチ条件として設定する。部分エントリは、以下、「分割後エントリ」と参照される。
ステップS152:
エントリ制御ブロック140は、ステップS151で得られた複数の分割後エントリを設定することを、フローテーブル設定ブロック150に指示する。更に、フローテーブル設定ブロック150は、制御インタフェース160を介して、スイッチ10に対して、複数の分割後エントリをフローテーブルTBLに設定することを指示する。スイッチ10は、指示に従って、複数の分割後エントリをフローテーブルTBLに設定する。
ステップS153:
エントリ制御ブロック140は、複数の分割後エントリのうちいずれかを、新たな対象エントリとして設定する。つまり、エントリ制御ブロック140は、対象エントリを更新する。その後、処理は、ステップS110に戻る。
このようにして、エントリ制御ブロック140は、対象エントリに関連する予測負荷が許容値以内となるまで、エントリ分割処理(ステップS150)を繰り返す。
ステップS160:
上記ステップS140において、対象エントリのアクションは「コントローラ100への受信パケットの転送」に変更される。その後、スイッチ10において対象エントリのマッチ条件にマッチする受信パケットは、コントローラ100へ送られる。コントローラ100のフロー処理ブロック120は、制御インタフェース160及びパケット受信ブロック110を介して、スイッチ10からそれら受信パケットを受け取る。このとき、上述の通り対象エントリに関連する予測負荷は許容値以内となっているため、過剰なトラヒック流入は発生しないことが期待される。
ステップS170:
フロー処理ブロック120は、受け取ったパケットに応答して、所定のアプリケーション処理を実行し、新たなフローテーブルTBLの内容を決定する。具体的には、フロー処理ブロック120は、受け取ったパケットのフロー識別を行い、当該フローに関する所望の新規エントリを決定する。
ステップS180:
フロー処理ブロック120は、新規エントリの設定を、フローテーブル設定ブロック150に指示する。フローテーブル設定ブロック150は、制御インタフェース160を介して、スイッチ10に対して、新規エントリをフローテーブルTBLに設定することを指示する。スイッチ10は、指示に従って、新規エントリをフローテーブルTBLに設定する。このようにして、フローテーブルTBLの内容が所望のものに変更される。
以上に説明されたように、本実施の形態によれば、スイッチ10のフローテーブルTBLの内容が変更される際、コントローラ100は、自身が受け取る可能性のあるトラヒック量を予測する。そして、コントローラ100は、流入トラヒックを処理しきれないと判断した場合、エントリ分割処理を実行し、対象エントリのマッチ範囲を小さくする。これにより、コントローラ100への過剰なトラヒック流入を防ぐことが可能となる。その結果、コントローラ100の処理負荷の増大が抑制され、他の重要な制御処理ができなくなるといった事態が未然に防がれる。また、重要な情報を含むパケットを取りこぼしてしまうといった事態も防止される。
2−3.エントリ削除処理
次に、図7を参照して、エントリ削除処理を説明する。
ステップS210:
コントローラ100のエントリ制御ブロック140は、統計情報と内蔵タイマを用いることにより、「無トラヒック期間」をエントリ毎に計測する。無トラヒック期間とは、トラヒックが流れない期間である。
ステップS220:
あるエントリに関して、無トラヒック期間が所定の閾値を超えた場合、すなわち、タイムアウトが発生した場合、処理はステップS230に進む。
ステップS230:
エントリ制御ブロック140は、タイムアウトが発生したエントリを検出すると、当該検出エントリの削除をフローテーブル設定ブロック150に指示する。またこのとき、エントリ集約等が必要であれば、エントリ制御ブロック140は合わせてフローテーブル設定ブロック150に指示する。
ステップS240:
フローテーブル設定ブロック150は、制御インタフェース160を介して、スイッチ10に対して、フローテーブルTBLの設定を指示する。具体的には、フローテーブル設定ブロック150は、スイッチ10に対して、上記検出エントリをフローテーブルTBLから削除することを指示し、必要に応じてエントリ集約を指示する。スイッチ10は、指示に従って、フローテーブルTBLの設定を行う。
3.処理例
図8〜図14を参照して、フローテーブルTBLの操作の一例を説明する。図8〜図14の各々は、フローテーブルTBLに含まれるエントリ番号(#)、優先度(pri)、マッチ条件及びアクションと、統計情報STAに含まれるマッチ回数(カウント値)を示している。尚、マッチ条件は、送信元IPアドレスの範囲で与えられている。そのアドレス範囲の表記は、プレフィックス表記であり、[アドレス範囲の最初のIPアドレス]/[プレフィックス値]である。プレフィックス値は、サブネットマスクの「1」の数を表している。アクションは、パケットの出力先を示している。
図8は、初期状態を示している。初期状態では、3個のエントリ#1〜#3がある。このうちエントリ#1が、上述の「対象エントリ」であるとする。また、エントリ分割判定のための許容値は、「カウント値=1000」であるとする。
図8において、対象エントリ#1のカウント値は許容値を超えている。従って、図9に示されるように、対象エントリ#1は、2個の部分エントリ(分割後エントリ)#4、#5に分割される(ステップS150)。ここで、対象エントリ#1のマッチ条件「10.0.0.0/9」が2分割され、分割後のマッチ条件「10.0.0.0/10」、「10.64.0.0/10」が分割後エントリ#4、#5のそれぞれに割り当てられていることに留意されたい。一方、アクションや優先度は、対象エントリ#1と分割後エントリ#4、#5とで同一である。その後、分割後エントリ#4が、新たな対象エントリに設定される。
図9において、対象エントリ#4のカウント値は許容値を超えている。従って、図10に示されるように、対象エントリ#4は、2個の部分エントリ(分割後エントリ)#6、#7に分割される(ステップS150)。ここでも、対象エントリ#4のマッチ条件「10.0.0.0/10」が2分割され、分割後のマッチ条件「10.0.0.0/11」、「10.32.0.0/11」が分割後エントリ#6、#7のそれぞれに割り当てられていることに留意されたい。一方、アクションや優先度は、対象エントリ#4と分割後エントリ#6、#7とで同一である。その後、分割後エントリ#6が、新たな対象エントリに設定される。
図10において、対象エントリ#6のカウント値は許容値以内である。従って、図11に示されるように、対象エントリ#6のアクションが、「port1」から「controller(=コントローラ100へのパケット転送)」に変更される(ステップS140)。これにより、対象エントリ#6のマッチ条件「10.0.0.0/11」にマッチするパケットが、コントローラ100に転送されることになる。
その後、図12に示されるように、対象エントリ#6にマッチするパケットに応答して、2つの新規エントリ#8、#9が追加されるとする(ステップS160〜S180)。新規エントリ#8は、送信元IPアドレスが「10.1.1.1」であるパケットに応答して作成されたものであり、マッチ条件が「10.1.1.1」であるイグザクトマッチエントリである。同様に、新規エントリ#9は、送信元IPアドレスが「10.1.1.2」であるパケットに応答して作成されたものであり、マッチ条件が「10.1.1.2」であるイグザクトマッチエントリである。また、新規エントリ#8は、対象エントリ#6の変更前のアクション「port1(第1アクション)」と同じアクションを有しており、既存フローに対応している。一方、新規エントリ#9は、「port1」と異なる「port2(第2アクション)」をアクションとして有しており、新規のフローに対応している。
その後、新規エントリ#8にタイムアウトが発生したとする。この場合、図13に示されるように、新規エントリ#8がフローテーブルTBLから削除される(ステップS230〜S240)。
ここで、旧アクション「port1」を有する新規エントリ#8が無くなったため、それ以外の新規エントリ#9が対象エントリ#6に集約される。具体的には、図14に示されるように、対象エントリ#6のアクションが、新規エントリ#9のアクション「port2」に変更される(ステップS30〜S240)。更に、新規エントリ#9は削除される。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
本出願は、2010年1月5日に出願された日本国特許出願2010−000368を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (9)

  1. フローテーブルを参照してパケット処理を行うスイッチと、
    前記スイッチの前記フローテーブルを制御するコントローラと
    を備え、
    前記フローテーブル中の各エントリは、マッチ条件とアクションを示し、
    前記スイッチは、前記フローテーブルを参照して、前記マッチ条件にマッチする受信パケットに対して前記アクションで指定される処理を実行し、
    前記コントローラは、
    エントリ制御ブロックと、
    フローテーブル設定ブロックと
    を備え、
    前記フローテーブルにおいて、前記アクションが前記コントローラへの前記受信パケットの転送に変更されるエントリは、対象エントリであり、
    前記エントリ制御ブロックは、前記対象エントリの前記マッチ条件にマッチするパケットが前記コントローラに転送された場合に前記コントローラにかかる負荷を予測し、
    前記負荷が許容値以内の場合、前記フローテーブル設定ブロックは、前記スイッチに対して、前記対象エントリの前記アクションの変更を指示し、
    前記負荷が前記許容値を超える場合、前記エントリ制御ブロックは、前記負荷が前記許容値以内となるまでエントリ分割処理を繰り返し、
    前記エントリ分割処理において、
    前記エントリ制御ブロックは、前記対象エントリを複数の分割後エントリに分割し、前記対象エントリの前記マッチ条件を複数の条件に分割し、前記複数の分割後エントリの前記マッチ条件を前記複数の条件のそれぞれに設定し、
    前記フローテーブル設定ブロックは、前記スイッチに対して、前記複数の分割後エントリを前記フローテーブルに設定することを指示し、
    前記エントリ制御ブロックは、前記複数の分割後エントリのいずれかを新たに前記対象エントリに設定する
    スイッチネットワークシステム。
  2. 請求項1に記載のスイッチネットワークシステムであって、
    前記コントローラは更に、フロー処理ブロックを備え、
    前記対象エントリの前記アクションが前記コントローラへの前記受信パケットの転送に変更された後、前記フロー処理ブロックは、前記対象エントリの前記マッチ条件にマッチするパケットを前記スイッチから受け取り、
    前記フロー処理ブロックは、前記受け取ったパケットに応答して、前記受け取ったパケットのフローに関する新規エントリを決定し、
    前記フローテーブル設定ブロックは、前記スイッチに対して、前記新規エントリを前記フローテーブルに設定することを指示する
    スイッチネットワークシステム。
  3. 請求項2に記載のスイッチネットワークシステムであって、
    前記エントリ制御ブロックは、タイムアウトが発生したエントリを検出し、
    前記フローテーブル設定ブロックは、前記スイッチに対して、前記検出されたエントリを前記フローテーブルから削除することを指示する
    スイッチネットワークシステム。
  4. 請求項3に記載のスイッチネットワークシステムであって、
    前記対象エントリの変更前の前記アクションは第1アクションであり、
    前記新規エントリは、
    前記アクションが前記第1アクションである第1新規エントリと、
    前記アクションが前記第1アクションと異なる第2アクションである第2新規エントリと
    を含み、
    前記第1新規エントリにタイムアウトが発生した場合、前記エントリ制御ブロックは、前記第1新規エントリの削除と、前記対象エントリの前記アクションの前記第2アクションへの変更を決定し、
    前記フローテーブル設定ブロックは、前記スイッチに対して、前記第1新規エントリの削除と、前記対象エントリの前記アクションの前記第2アクションへの変更を指示する
    スイッチネットワークシステム。
  5. 請求項1乃至4のいずれか一項に記載のスイッチネットワークシステムであって、
    統計情報は、前記フローテーブルのエントリ毎にマッチ状況を示し、
    前記エントリ制御ブロックは、前記統計情報に基づいて前記負荷を予測する
    スイッチネットワークシステム。
  6. 請求項5に記載のスイッチネットワークシステムであって、
    前記スイッチが前記統計情報を作成する
    スイッチネットワークシステム。
  7. スイッチのフローテーブルを制御するコントローラであって、
    前記フローテーブル中の各エントリは、マッチ条件とアクションを示し、
    前記スイッチは、前記フローテーブルを参照し、前記マッチ条件にマッチする受信パケットに対して前記アクションで指定される処理を実行し、
    前記コントローラは、
    エントリ制御ブロックと、
    フローテーブル設定ブロックと
    を備え、
    前記フローテーブルにおいて、前記アクションが前記コントローラへの前記受信パケットの転送に変更されるエントリは、対象エントリであり、
    前記エントリ制御ブロックは、前記対象エントリの前記マッチ条件にマッチするパケットが前記コントローラに転送された場合に前記コントローラにかかる負荷を予測し、
    前記負荷が許容値以内の場合、前記フローテーブル設定ブロックは、前記スイッチに対して、前記対象エントリの前記アクションの変更を指示し、
    前記負荷が前記許容値を超える場合、前記エントリ制御ブロックは、前記負荷が前記許容値以内となるまでエントリ分割処理を繰り返し、
    前記エントリ分割処理において、
    前記エントリ制御ブロックは、前記対象エントリを複数の分割後エントリに分割し、前記対象エントリの前記マッチ条件を複数の条件に分割し、前記複数の分割後エントリの前記マッチ条件を前記複数の条件のそれぞれに設定し、
    前記フローテーブル設定ブロックは、前記スイッチに対して、前記複数の分割後エントリを前記フローテーブルに設定することを指示し、
    前記エントリ制御ブロックは、前記複数の分割後エントリのいずれかを新たに前記対象エントリに設定する
    コントローラ。
  8. スイッチのフローテーブルをコントローラによって制御する制御方法であって、
    前記フローテーブル中の各エントリは、マッチ条件とアクションを示し、
    前記スイッチは、前記フローテーブルを参照し、前記マッチ条件にマッチする受信パケットに対して前記アクションで指定される処理を実行し、
    前記フローテーブルにおいて、前記アクションが前記コントローラへの前記受信パケットの転送に変更されるエントリは、対象エントリであり、
    前記制御方法は、
    前記対象エントリの前記マッチ条件にマッチするパケットが前記コントローラに転送された場合に前記コントローラにかかる負荷を予測するステップと、
    前記負荷が許容値以内の場合、前記スイッチに対して、前記対象エントリの前記アクションの変更を指示するステップと、
    前記負荷が前記許容値を超える場合、前記負荷が前記許容値以内となるまでエントリ分割処理を繰り返すステップと
    を含み、
    前記エントリ分割処理は、
    前記対象エントリを複数の分割後エントリに分割し、前記対象エントリの前記マッチ条件を複数の条件に分割し、前記複数の分割後エントリの前記マッチ条件を前記複数の条件のそれぞれに設定するステップと、
    前記スイッチに対して、前記複数の分割後エントリを前記フローテーブルに設定することを指示するステップと、
    前記複数の分割後エントリのいずれかを新たに前記対象エントリに設定するステップと
    を含む
    制御方法。
  9. 請求項8に記載の制御方法を前記コントローラに実行させる制御プログラムが記録された記録媒体。
JP2011548949A 2010-01-05 2010-12-21 スイッチネットワークシステム、コントローラ、及び制御方法 Expired - Fee Related JP5637148B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011548949A JP5637148B2 (ja) 2010-01-05 2010-12-21 スイッチネットワークシステム、コントローラ、及び制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010000368 2010-01-05
JP2010000368 2010-01-05
JP2011548949A JP5637148B2 (ja) 2010-01-05 2010-12-21 スイッチネットワークシステム、コントローラ、及び制御方法
PCT/JP2010/072954 WO2011083682A1 (ja) 2010-01-05 2010-12-21 スイッチネットワークシステム、コントローラ、及び制御方法

Publications (2)

Publication Number Publication Date
JPWO2011083682A1 JPWO2011083682A1 (ja) 2013-05-13
JP5637148B2 true JP5637148B2 (ja) 2014-12-10

Family

ID=44305419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011548949A Expired - Fee Related JP5637148B2 (ja) 2010-01-05 2010-12-21 スイッチネットワークシステム、コントローラ、及び制御方法

Country Status (3)

Country Link
US (1) US8588072B2 (ja)
JP (1) JP5637148B2 (ja)
WO (1) WO2011083682A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012127894A1 (ja) * 2011-03-18 2012-09-27 日本電気株式会社 ネットワークシステム、及びスイッチ方法
EP2745475B1 (en) 2011-08-18 2015-10-07 Telefonaktiebolaget L M Ericsson (publ) Centralized control of data plane applications
EP2782298A4 (en) * 2011-11-15 2015-05-06 Nec Corp NETWORK COMMUNICATION DEVICE AND METHOD FOR RESTRICTING A TRANSMISSION FRAME PRIORITY BAND
EP2811701B1 (en) * 2012-02-02 2019-07-24 Nec Corporation Controller, load-balancing method, computer program product and computer system
WO2013113171A1 (zh) * 2012-02-03 2013-08-08 华为技术有限公司 流识别的方法、设备和***
JP5808700B2 (ja) * 2012-03-05 2015-11-10 株式会社Nttドコモ 通信制御装置、通信制御システム、仮想化サーバ管理装置、スイッチ装置および通信制御方法
US9210039B2 (en) 2012-05-10 2015-12-08 Intel Corporation Generating and/or receiving at least one packet to facilitate, at least in part, network path establishment
CN106789751B (zh) 2012-05-10 2020-07-28 英特尔公司 基于资源可用性的网络路由
US8908539B1 (en) 2012-05-25 2014-12-09 Google Inc. Systems and methods for testing network connections of a centrally-controlled network
US8982734B2 (en) 2012-06-26 2015-03-17 Intel Corporation Methods, apparatus, and systems for routing information flows in networks using spanning trees and network switching element resources
US9843516B2 (en) 2012-12-19 2017-12-12 Nec Corporation Communication node, control apparatus, method for management of control information entries and program
JP6175766B2 (ja) * 2012-12-25 2017-08-09 日本電気株式会社 通信ノード、制御装置、通信システム、エントリ集約方法及びプログラム
KR102087226B1 (ko) * 2013-02-14 2020-03-10 삼성전자주식회사 다수의 사업자 지원을 위한 sdn 기반의 네트워크 공유 방법
US9712439B2 (en) 2013-02-28 2017-07-18 Texas Instruments Incorporated Packet processing match and action unit with configurable memory allocation
EP2966813A4 (en) * 2013-03-06 2016-09-14 Nec Corp COMMUNICATION SYSTEM, SWITCH, CONTROL DEVICE, PACKET PROCESSING METHOD, AND PROGRAM
US9104643B2 (en) 2013-03-15 2015-08-11 International Business Machines Corporation OpenFlow controller master-slave initialization protocol
US9118984B2 (en) 2013-03-15 2015-08-25 International Business Machines Corporation Control plane for integrated switch wavelength division multiplexing
US9444748B2 (en) 2013-03-15 2016-09-13 International Business Machines Corporation Scalable flow and congestion control with OpenFlow
US9769074B2 (en) 2013-03-15 2017-09-19 International Business Machines Corporation Network per-flow rate limiting
US9596192B2 (en) 2013-03-15 2017-03-14 International Business Machines Corporation Reliable link layer for control links between network controllers and switches
US9609086B2 (en) 2013-03-15 2017-03-28 International Business Machines Corporation Virtual machine mobility using OpenFlow
US9407560B2 (en) 2013-03-15 2016-08-02 International Business Machines Corporation Software defined network-based load balancing for physical and virtual networks
CN104348740B (zh) 2013-07-31 2018-04-10 国际商业机器公司 数据包处理方法和***
JP6275850B2 (ja) * 2013-08-31 2018-02-07 華為技術有限公司Huawei Technologies Co.,Ltd. ストレージシステムにおいて操作要求を処理するための方法及び装置
US10686712B2 (en) 2014-05-01 2020-06-16 Nec Corporation Communication apparatus, control apparatus, communication system, received packet processing method, communication apparatus control method, and program
JPWO2015178415A1 (ja) 2014-05-21 2017-04-20 日本電気株式会社 通信装置、制御装置、通信システム及び送信制御方法
KR101629089B1 (ko) * 2014-09-24 2016-06-22 (주)유비쿼스 레거시 네트워크 프로토콜 기능과 sdn 기능이 하이브리드하게 동작하는 오픈플로우 동작 방법
CN104901836B (zh) * 2015-06-18 2019-01-25 新华三技术有限公司 一种跨区域sdn控制器与转发设备的连接方法和装置
JP6724427B2 (ja) * 2016-03-07 2020-07-15 日本電気株式会社 コントローラ、通信スイッチ、通信システム、通信制御方法、及びプログラム
JP6953713B2 (ja) * 2016-12-28 2021-10-27 日本電気株式会社 通信ノード、通信システム、通信方法及びプログラム
US10104000B2 (en) 2017-01-31 2018-10-16 Hewlett Packard Enterprise Development Lp Reducing control plane overload of a network device
CN108282414B (zh) * 2017-12-29 2020-05-29 网宿科技股份有限公司 一种数据流的引导方法、服务器和***
WO2020027181A1 (ja) * 2018-08-01 2020-02-06 日本電気株式会社 スイッチ、制御装置、通信システム、通信制御方法及びプログラム
JP6984756B2 (ja) * 2018-08-01 2021-12-22 日本電気株式会社 スイッチ、制御装置、通信システム、通信制御方法及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060006248A1 (en) * 2004-07-06 2006-01-12 Chin-Chiang Wu Floating rotatable fountain decoration
US9083609B2 (en) * 2007-09-26 2015-07-14 Nicira, Inc. Network operating system for managing and securing networks
JP4964164B2 (ja) * 2008-02-15 2012-06-27 三菱電機株式会社 通信装置の冗長構成制御方法
CN104702537B (zh) * 2009-04-01 2018-07-10 Nicira股份有限公司 用于实现和管理虚拟交换机的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CSND201000023032; '人と地球にやさしい情報社会の実現に向けたNEC中央研究所の取組み' BUSINESS COMMUNICATION 第47巻 第1号, 20100101, pp.111〜113, 株式会社ビジネスコミュニケーション社 *

Also Published As

Publication number Publication date
US20120020361A1 (en) 2012-01-26
JPWO2011083682A1 (ja) 2013-05-13
US8588072B2 (en) 2013-11-19
WO2011083682A1 (ja) 2011-07-14

Similar Documents

Publication Publication Date Title
JP5637148B2 (ja) スイッチネットワークシステム、コントローラ、及び制御方法
US8832272B2 (en) Network system, control method for the same, and controller, using targeted relay processing devices
EP2676410B1 (en) Flow communication system
US9276852B2 (en) Communication system, forwarding node, received packet process method, and program
JP5850131B2 (ja) ネットワークシステム、リソース使用率改善方法
US20130246655A1 (en) Communication path control system, path control device, communication path control method, and path control program
US20150036498A1 (en) Control apparatus, communication system, switch controlling method and program
US20130250797A1 (en) Communication control system, control device, communication control method, and communication control program
JP5725236B2 (ja) 通信システム、ノード、パケット転送方法およびプログラム
US10462064B2 (en) Maximum transmission unit installation for network traffic along a datapath in a software defined network
US9906438B2 (en) Communication node, control apparatus, communication system, packet processing method, communication node controlling method and program
JP2011159247A (ja) ネットワークシステム、コントローラ、ネットワーク制御方法
EP2763358A1 (en) Network system, front-end device, and control message transmission rate minimizing method
JP5870995B2 (ja) 通信システム、制御装置、計算機、ノードの制御方法およびプログラム
US20150381775A1 (en) Communication system, communication method, control apparatus, control apparatus control method, and program
Chemeritskiy et al. Managing network resources with flow (de) multiplexing protocol
US20170324669A1 (en) Control apparatus, data transmitting system, and method of data transmitting
WO2014020902A1 (en) Communication system, control apparatus, communication method, and program
JP2017147526A (ja) 帯域制御装置及び方法
JP2020078011A (ja) スイッチ制御装置、スイッチ制御方法、およびスイッチ制御プログラム

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140924

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141007

LAPS Cancellation because of no payment of annual fees