(57)【要約】【課題】オープンフロー技術を用いた通信システムにおいて、オープンフローコントローラの分散配置を可能とし、オープンフローコントローラの故障に対する通信システムの耐性を高くすることを目的とする。【解決手段】通信システム１００は、複数のコントローラ２０（オープンフローコントローラ）と、複数のスイッチ３０（オープンフロースイッチ）とを備える。各スイッチ３０は、受信したパケットの種別に対応するフローエントリ５０が設定されていない場合、全てのコントローラ２０へフローエントリ５０の送信を依頼し、いずれかのコントローラ２０から送信されたフローエントリ５０に基づき、パケットを制御する。【選択図】図１
2015039097.tif 000002
【特許請求の範囲】
【請求項１】
パケットの種別毎に、パケットの制御方法を規定した制御情報を記憶する制御情報記憶部と、
パケットを受信するパケット受信部と、
前記パケット受信部が受信したパケットの種別に対応する制御情報を前記制御情報記憶部が記憶していない場合に、その種別に対応する制御情報の送信依頼を複数のコントローラへ送信する依頼部と
を備え、
前記制御情報記憶部は、前記依頼部が送信した送信依頼に対して送信された複数の制御情報のうち、いずれかの制御情報を記憶する
ことを特徴とするスイッチ。
【請求項２】
前記制御情報記憶部は、前記複数の制御情報のうち、同一内容の制御情報の数が最も多い制御情報を記憶する
ことを特徴とする請求項１に記載のスイッチ。
【請求項３】
前記制御情報記憶部は、前記複数の制御情報のうち、最も早く受信した制御情報を記憶する
ことを特徴とする請求項１に記載のスイッチ。
【請求項４】
パケットの制御方法を規定した制御情報をスイッチへ送信する複数のコントローラと、前記コントローラから送信された制御情報に従いパケットを制御するスイッチとを備える通信システムであり、
前記スイッチは、
前記制御情報を記憶する制御情報記憶部と、
パケットを受信するパケット受信部と、
前記パケット受信部が受信したパケットの種別に対応する制御情報を前記制御情報記憶部が記憶していない場合に、その種別に対応する制御情報の送信依頼を前記複数のコントローラへ送信する依頼部と
を備え、
前記制御情報記憶部は、前記依頼部が送信した送信依頼に対して前記複数のコントローラから送信された複数の制御情報のうち、いずれかの制御情報を記憶する
ことを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、オープンフロー技術を利用した通信システムにおけるオープンフローコントローラの冗長化技術に関する。
【背景技術】
【０００２】
オープンフロー技術では、従来１台のネットワーク機器に組み込まれていた、ネットワークの経路制御を行う機能と、データ転送を行う機能とが分離され別の機器に組み込まれている。ネットワークの経路制御を行う機能が組み込まれたのがオープンフローコントローラ（以下、コントローラ）であり、データ転送を行う機能が組み込まれたのがオープンフロースイッチ（以下、スイッチ）である。
【０００３】
オープンフロー技術を利用した通信システムでは、１台のコントローラに対して、複数台のスイッチが割り当てられる。コントローラは、割り当てられたスイッチに、パケットの種別毎に、フローエントリと呼ばれる経路を制御する制御情報を設定する。各スイッチは、受信したパケットの種別に対応したフローエントリに従い、受信したパケットを制御する。
受信したパケットの種別に対応したフローエントリが設定されていない場合、スイッチはコントローラから対応したフローエントリを取得し、受信したパケットを制御する。
【０００４】
しかし、コントローラが故障してしまうと、新たにフローエントリを取得することができなくなってしまう。そのため、受信したパケットの種別に対応したフローエントリが設定されていない場合、スイッチは受信したパケットを制御できなくなってしまう。
この対策として、従来は、コントローラをクラスタ構成とし、１台のコントローラが故障しても代替機が稼働するようにしていた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】再表２０１０−１０３９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
コントローラをクラスタ構成とする場合、クラスタ化した各コントローラを物理的に隣接させて配置する必要がある。そのため、地震のような地域災害が発生し、設置場所が被災した場合等には、クラスタ化したコントローラが全て故障してしまう恐れがある。
この発明は、コントローラの分散配置を可能とし、コントローラの故障に対する通信システムの耐性を高くすることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るスイッチは、
パケットの種別毎に、パケットの制御方法を規定した制御情報を記憶する制御情報記憶部と、
パケットを受信するパケット受信部と、
前記パケット受信部が受信したパケットの種別に対応する制御情報を前記制御情報記憶部が記憶していない場合に、その種別に対応する制御情報の送信依頼を複数のコントローラへ送信する依頼部と
を備え、
前記制御情報記憶部は、前記依頼部が送信した送信依頼に対して送信された複数の制御情報のうち、いずれかの制御情報を記憶する
ことを特徴とする。
【０００８】
前記制御情報記憶部は、前記複数の制御情報のうち、同一内容の制御情報の数が最も多い制御情報を記憶する
ことを特徴とする。
【０００９】
前記制御情報記憶部は、前記複数の制御情報のうち、最も早く受信した制御情報を記憶する
ことを特徴とする。
【００１０】
この発明に係る通信システムは、
パケットの制御方法を規定した制御情報をスイッチへ送信する複数のコントローラと、前記コントローラから送信された制御情報に従いパケットを制御するスイッチとを備える通信システムであり、
前記スイッチは、
前記制御情報を記憶する制御情報記憶部と、
パケットを受信するパケット受信部と、
前記パケット受信部が受信したパケットの種別に対応する制御情報を前記制御情報記憶部が記憶していない場合に、その種別に対応する制御情報の送信依頼を前記複数のコントローラへ送信する依頼部と
を備え、
前記制御情報記憶部は、前記依頼部が送信した送信依頼に対して前記複数のコントローラから送信された複数の制御情報のうち、いずれかの制御情報を記憶する
ことを特徴とする。
【発明の効果】
【００１１】
この発明に係るスイッチは、受信したパケットの種別に対応するフローエントリ（制御情報）が設定されていない場合、複数のコントローラへフローエントリの送信を依頼し、送信されたフローエントリのうちいずれかのフローエントリを設定する。そのため、いずれかのコントローラが故障した場合であっても、スイッチはフローエントリを取得でき、受信したパケットを制御することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る通信システム１００の構成図。
【図２】実施の形態１に係るコントローラ２０及びスイッチ３０の構成図。
【図３】実施の形態１に係る通信システム１００の動作を示すフローチャート。
【図４】上記実施の形態に係るコントローラ２０、スイッチ３０のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１は、実施の形態１に係る通信システム１００の構成図である。
通信システム１００は、複数のデータセンタ１０（ここでは、データセンタ１０Ａ〜Ｃ）にそれぞれ１台ずつ設置された複数のコントローラ２０（ここでは、コントローラ２０Ａ〜Ｃ）と、複数のスイッチ３０（ここでは、スイッチ３０Ａ〜Ｄ）とを備える。各コントローラ２０Ａ〜Ｃと、各スイッチ３０Ａ〜Ｄとは、制御ネットワーク４０を介して接続されている。また、隣接したスイッチ３０は、互いに接続されている。
各スイッチ３０Ａ〜Ｄには、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）や、ＳＶ（ＳｅｒＶｅｒ）等の機器が接続されている。また、各スイッチ３０Ａ〜Ｄには、フローエントリ５０（ここでは、フローエントリ５０Ａ〜Ｄ）が設定されている。
【００１４】
ＰＣやＳＶは、他のＰＣやＳＶへメッセージやコマンド等を乗せたパケットを送信する。ＰＣやＳＶは、自身が接続されたスイッチ３０に接続されたＰＣやＳＶを宛先としたパケットを送信するだけでなく、他のスイッチ３０に接続されたＰＣやＳＶを宛先としたパケットを送信する場合がある。ＰＣやＳＶは、他のスイッチ３０に接続されたＰＣやＳＶを宛先としたパケットを送信する場合、パケットを自身が接続されたスイッチ３０へ送信する。
パケットを受信したスイッチ３０は、受信したパケットの種別に対応したフローエントリ５０に従い、接続された他のスイッチ３０へパケットを転送したり、パケットを破棄したりという制御を行う。
【００１５】
パケットを受信したスイッチ３０は、受信したパケットの種別に対応したフローエントリ５０が設定されていない場合、全てのコントローラ２０Ａ〜Ｃへフローエントリ５０の送信を依頼する。
フローエントリ５０の送信を依頼された各コントローラ２０Ａ〜Ｃは、依頼を出したスイッチ３０へ依頼されたフローエントリ５０を送信する。ここで、前提として、各コントローラ２０Ａ〜Ｃは、ＩＰアドレス等の識別情報を除き同じ設定がされており、同じフローエントリ５０を記憶しているものとする。したがって、各コントローラ２０Ａ〜Ｃから送信されるフローエントリ５０は原則として同じものである。
フローエントリ５０の送信を依頼したスイッチ３０は、いずれかのコントローラ２０から受信したフローエントリ５０を設定して、設定したフローエントリ５０に従いパケットを制御する。
【００１６】
図２は、実施の形態１に係るコントローラ２０及びスイッチ３０の構成図である。
図２では、コントローラ２０及びスイッチ３０を１台ずつ示している。
コントローラ２０は、依頼受信部２１、制御情報送信部２２、制御情報管理部２３を備える。スイッチ３０は、パケット受信部３１、パケット制御部３２、依頼部３３、選択部３４、制御情報記憶部３５（フローテーブル）を備える。
【００１７】
図３は、実施の形態１に係る通信システム１００の動作を示すフローチャートである。
（Ｓ１：パケット受信処理）
いずれかのスイッチ３０（ここでは、スイッチ３０Ａとする）のパケット受信部３１は、接続されたＰＣやＳＶ、あるいは、隣接したスイッチ３０Ｂからパケットを受信する。
【００１８】
（Ｓ２：判定処理）
スイッチ３０Ａのパケット制御部３２は、Ｓ１で受信されたパケットの種別に対応するフローエントリ５０を、制御情報記憶部３５が記憶しているか否かを処理装置により判定する。
フローエントリ５０を記憶している場合（Ｓ２でＹＥＳ）、処理をＳ８へ進める。一方、フローエントリ５０を記憶していない場合（Ｓ２でＮＯ）、処理をＳ３へ進める。
【００１９】
（Ｓ３：依頼送信処理）
スイッチ３０Ａの依頼部３３は、Ｓ１で受信されたパケットの種別に対応するフローエントリ５０の送信を依頼する送信依頼を、全てのコントローラ２０Ａ〜Ｃへ送信する。
【００２０】
（Ｓ４：依頼受信処理）
各コントローラ２０Ａ〜Ｃの依頼受信部２１は、Ｓ３で送信された送信依頼を受信する。
【００２１】
（Ｓ５：フローエントリ送信処理）
各コントローラ２０Ａ〜Ｃの制御情報送信部２２は、Ｓ４で受信した送信依頼が送信を依頼する種別に対応するフローエントリ５０を制御情報管理部２３から取得して、取得したフローエントリ５０を送信依頼を送信したスイッチ３０Ａへ送信する。
【００２２】
（Ｓ６：フローエントリ選択処理）
スイッチ３０Ａの選択部３４は、Ｓ５で各コントローラ２０Ａ〜Ｃから送信されたフローエントリ５０のうち、いずれかのフローエントリ５０を処理装置により選択する。
【００２３】
（Ｓ７：フローエントリ記憶処理）
スイッチ３０Ａの制御情報記憶部３５は、Ｓ６で選択されたフローエントリ５０を記憶する。
【００２４】
（Ｓ８：制御処理）
スイッチ３０Ａのパケット制御部３２は、Ｓ１で受信されたパケットの種別に対応するフローエントリ５０であって、制御情報記憶部３５が記憶したフローエントリ５０に従い、Ｓ１で受信したパケットを処理装置により制御する。
【００２５】
以上のように、実施の形態１に係る通信システム１００では、各スイッチ３０が、受信したパケットの種別に対応したフローエントリ５０が設定されていない場合、複数台あるコントローラ２０の全てへ、送信依頼を送信する。
そのため、仮に一部のコントローラ２０が故障したとしても、残りのコントローラ２０からはフローエントリ５０が送信されてくる。したがって、一部のコントローラ２０が故障した場合であっても、スイッチ３０はフローエントリ５０を得ることができる。
【００２６】
特に、実施の形態１に係る通信システム１００では、コントローラ２０を異なるデータセンタ１０に設置することができる。例えば、データセンタ１０Ａを東京、データセンタ１０Ｂを福岡、データセンタ１０Ｃを北海道等とすれば、地震等の災害が発生した場合であっても、一部のデータセンタ１０に設置されたコントローラ２０は、影響を受けず、故障しない可能性が高い。
【００２７】
また、実施の形態１に係る通信システム１００では、コントローラ２０のプログラム等に手を加える必要はなく、各コントローラ２０Ａ〜Ｃについて単に同一の設定を行うだけでよい。つまり、スイッチ３０側のプログラムや設定を変更するだけで、通信システム１００を実現可能である。
【００２８】
なお、上記説明では、コントローラ２０を３台、スイッチ３０を４台とした。しかし、これは一例であり、コントローラ２０が複数台であれば、コントローラ２０やスイッチ３０は何台であってもよい。
【００２９】
実施の形態２．
実施の形態２では、図３のＳ６でパケットを選択する方法について説明する。
【００３０】
１つ目は、多数決により決定する方法である。
選択部３４は、Ｓ５で各コントローラ２０Ａ〜Ｃから送信されたフローエントリ５０のうち、同一内容のフローエントリ５０の数が最も多いフローエントリ５０を選択する。
例えば、通信回線の品質によって、コントローラ２０から送信されたフローエントリ５０の一部にノイズが入ってしまうことや、途中でフローエントリ５０が改ざんされてしまうこと等もあり得る。そこで、送信されたフローエントリ５０のうち、同一内容のフローエントリ５０の数が最も多いフローエントリ５０を選択することで、正しい（コントローラ２０が送信した）フローエントリ５０を選択することができる。その結果、正しい制御を行うことが可能となる。
【００３１】
なお、選択部３４は、一定の時間内に受信したフローエントリ５０のうち、同一内容のフローエントリ５０の数が最も多いフローエントリ５０を選択するとしてもよい。これにより、フローエントリ５０の待ち時間を一定の時間に抑えることができる。
【００３２】
２つ目は、到着順により決定する方法である。
選択部３４は、Ｓ５で各コントローラ２０Ａ〜Ｃから送信されたフローエントリ５０のうち、最も早く受信したフローエントリ５０を選択する。
例えば、コントローラ２０との間の通信回線の品質が悪い場合や、コントローラ２０との間の中継機器が混雑している場合等には、そのコントローラ２０へ送信依頼を送信してからフローエントリ５０を受信するまでに時間がかかる場合がある。そこで、送信されたフローエントリ５０のうち、最も早く受信したフローエントリ５０を選択することで、スムーズなパケット制御を行うことが可能となる。
【００３３】
以上の説明において、パケットの種別とは、オープンフロー技術において、フローエントリ５０の条件（ヘッダーフィールド）として定められたものである。例えば、パケットの種別とは、スイッチ３０の物理ポート、宛先のＭＡＣアドレス、送信元のＭＡＣアドレス、宛先のＩＰアドレス、送信元のＩＰアドレス等である。
【００３４】
また、あるコントローラ２０からフローエントリ５０を受信しない場合、そのコントローラ２０から何らかの通知があるまで、そのコントローラ２０へは送信依頼を送信しないようにしてもよい。これにより、故障したコントローラ２０へ送信依頼を送信することがなくなり、通信回線を不要に混雑させることがなくなる。
【００３５】
図４は、上記実施の形態に係るコントローラ２０、スイッチ３０のハードウェア構成の一例を示す図である。
図４に示すように、コントローラ２０、スイッチ３０は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０（固定ディスク装置）の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。磁気ディスク装置９２０は、所定の固定ディスクインタフェースを介して接続される。
【００３６】
磁気ディスク装置９２０又はＲＯＭ９１３などには、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００３７】
プログラム群９２３には、上記の説明において「依頼受信部２１」、「制御情報送信部２２」、「パケット受信部３１」、「パケット制御部３２」、「依頼部３３」、「選択部３４」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、上記の説明において「制御情報管理部２３」、「制御情報記憶部３５」に格納される情報やデータや信号値や変数値やパラメータが、「データベース」の各項目として記憶される。「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵ９１１の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵ９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００３８】
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、その他光ディスク等の記録媒体やＩＣチップに記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組合せ、さらには、ファームウェアとの組合せで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ＲＯＭ９１３等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
【符号の説明】
【００３９】
１０  データセンタ、２０  コントローラ、２１  依頼受信部、２２  制御情報送信部、２３  制御情報管理部、３０  スイッチ、３１  パケット受信部、３２  パケット制御部、３３  依頼部、３４  選択部、３５  制御情報記憶部、４０  制御ネットワーク、５０  フローエントリ。
【図１】
2015039097.tif 000003
【図２】
2015039097.tif 000004
【図３】
2015039097.tif 000005
【図４】
2015039097.tif 000006
【手続補正書】
【提出日】平成25年10月9日(2013.10.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
パケットの種別毎に、パケットの制御方法を規定した制御情報を記憶する制御情報記憶部と、
パケットを受信するパケット受信部と、
前記パケット受信部が受信したパケットの種別に対応する制御情報を前記制御情報記憶部が記憶していない場合に、その種別に対応する制御情報の送信依頼を複数のコントローラへ送信する依頼部と
を備え、
前記制御情報記憶部は、前記依頼部が送信した送信依頼に対して送信された複数の制御情報のうち、いずれかの制御情報を記憶し、
前記依頼部は、送信依頼を送信した前記複数のコントローラのうち、制御情報が送信されなかったコントローラに対しては、前記パケット受信部が新たに受信したパケットの種別に対応する制御情報を前記制御情報記憶部が記憶していない場合に、送信依頼を送信しない
ことを特徴とするスイッチ。
【請求項２】
前記制御情報記憶部は、前記複数の制御情報のうち、同一内容の制御情報の数が最も多い制御情報を記憶する
ことを特徴とする請求項１に記載のスイッチ。
【請求項３】
前記制御情報記憶部は、前記複数の制御情報のうち、最も早く受信した制御情報を記憶する
ことを特徴とする請求項１に記載のスイッチ。
【請求項４】
パケットの制御方法を規定した制御情報をスイッチへ送信する複数のコントローラと、前記コントローラから送信された制御情報に従いパケットを制御するスイッチとを備える通信システムであり、
前記スイッチは、
前記制御情報を記憶する制御情報記憶部と、
パケットを受信するパケット受信部と、
前記パケット受信部が受信したパケットの種別に対応する制御情報を前記制御情報記憶部が記憶していない場合に、その種別に対応する制御情報の送信依頼を前記複数のコントローラへ送信する依頼部と
を備え、
前記制御情報記憶部は、前記依頼部が送信した送信依頼に対して前記複数のコントローラから送信された複数の制御情報のうち、いずれかの制御情報を記憶し、
前記依頼部は、送信依頼を送信した前記複数のコントローラのうち、制御情報が送信されなかったコントローラに対しては、前記パケット受信部が新たに受信したパケットの種別に対応する制御情報を前記制御情報記憶部が記憶していない場合に、送信依頼を送信しない
ことを特徴とする通信システム。