(57)【要約】  オープンフローネットワークシステムにおいて、マルチキャスト送信したいパケットを、複数の異なるＶＬＡＮ宛に送信する。具体的には、パケット転送処理装置は、パケットを受信すると、そのパケットがマルチキャスト送信するパケットかどうかを判断する。マルチキャスト送信であった場合、宛先に指定されたポートに全て送信済みかどうかを確認する。全て送信済みでない場合、パケットヘッダを書き換えてパケットをコピーし、宛先ポート及びネットワークプロセッサ（ＮＰ）へ送信する。ループバック処理により、ＮＰから受信したパケットがマルチキャスト送信するパケットかどうかを判断する。マルチキャスト送信であった場合、宛先に指定されたポートに全て送信済みかどうかを確認する。全て送信済みでない場合、パケットヘッダを書き換えてパケットをコピーし、宛先ポート及びＮＰへ送信する。全て送信済みである場合、パケットを廃棄して処理を終了する。
2012121098.tif 000002
【特許請求の範囲】
【請求項１】
パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリに従って、受信パケットを処理するパケット転送処理装置と、
前記パケット転送処理装置からパケットを受信した際、該パケットを前記パケット転送処理装置に送信するループバック処理装置と
を含む
ネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記パケット転送処理装置は、前記受信パケットがマルチキャスト送信のパケットであるか確認し、前記受信パケットがマルチキャスト送信のパケットである場合、前記フローエントリに従って、前記受信パケットの変換アクションを実施し、前記受信パケットのパケットヘッダを書き換え、該パケットをコピーし、一方のパケットを宛先に指定されたポートの１つに出力し、他方のパケットを前記ループバック処理装置に送信し、前記ループバック処理装置から返信されたパケットを受信した際、宛先に指定された全てのポートに送信済みか確認し、宛先に指定された全てのポートに送信済みである場合、該パケットを破棄し、宛先に指定された全てのポートに送信済みでない場合、宛先に指定された全てのポートに送信するまで上記の処理を繰り返す
ネットワークシステム。
【請求項３】
請求項１又は２に記載のネットワークシステムであって、
前記パケット転送処理装置は、前記受信パケットがマルチアクションのパケットであるか確認し、前記受信パケットがマルチアクションのパケットである場合、前記受信パケットをコピーし、一方のパケットに対して、前記フローエントリに従って、指定されたアクションの１つを実行し、他方のパケットを前記ループバック処理装置に送信し、前記ループバック処理装置から返信されたパケットを受信した際、指定された全てのアクションを実行済みか確認し、指定された全てのアクションを実行済みである場合、該パケットを破棄し、指定された全てのアクションを実行済みでない場合、指定された全てのアクションを実行するまで上記の処理を繰り返す
ネットワークシステム。
【請求項４】
パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリに従って、受信パケットを処理するパケット転送処理部と、
前記パケット転送処理部からパケットを受信した際、該パケットを前記パケット転送処理部に送信するループバック処理部と
を具備する
スイッチ。
【請求項５】
請求項４に記載のスイッチであって、
前記パケット転送処理部は、
前記受信パケットがマルチキャスト送信のパケットであるか確認する手段と、
前記受信パケットがマルチキャスト送信のパケットである場合、前記フローエントリに従って、前記受信パケットの変換アクションを実施し、前記受信パケットのパケットヘッダを書き換える手段と、
前記パケットヘッダを書き換えたパケットをコピーする手段と、
一方のパケットを宛先に指定されたポートの１つに出力する手段と、
他方のパケットを前記ループバック処理部に送信する手段と、
前記ループバック処理部から返信されたパケットを受信した際、宛先に指定された全てのポートに送信済みか確認する手段と、
宛先に指定された全てのポートに送信済みである場合、該パケットを破棄する手段と、
宛先に指定された全てのポートに送信済みでない場合、宛先に指定された全てのポートに送信するまで上記の処理を繰り返す手段と
を更に具備する
スイッチ。
【請求項６】
請求項４又は５に記載のスイッチであって、
前記パケット転送処理部は、
前記受信パケットがマルチアクションのパケットであるか確認する手段と、
前記受信パケットがマルチアクションのパケットである場合、前記受信パケットをコピーする手段と、
一方のパケットに対して、前記フローエントリに従って、指定されたアクションの１つを実行する手段と、
他方のパケットを前記ループバック処理部に送信する手段と、
前記ループバック処理部から返信されたパケットを受信した際、指定された全てのアクションを実行済みか確認する手段と、
指定された全てのアクションを実行済みである場合、該パケットを破棄する手段と、
指定された全てのアクションを実行済みでない場合、指定された全てのアクションを実行するまで上記の処理を繰り返す手段と
を更に具備する
スイッチ。
【請求項７】
スイッチにより実施されるパケット処理方法であって、
パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリに従って、受信パケットを処理することと、
前記処理されたパケットのコピーをループバック処理用の出力先に出力することと、
ループバックされたパケットを受信することと、
前記ループバックされたパケットを再度受信パケットとして扱うことと
を含む
パケット処理方法。
【請求項８】
請求項７に記載のパケット処理方法であって、
前記受信パケットがマルチキャスト送信のパケットであるか確認することと、
前記受信パケットがマルチキャスト送信のパケットである場合、前記フローエントリに従って、前記受信パケットの変換アクションを実施し、前記受信パケットのパケットヘッダを書き換えることと、
前記パケットヘッダを書き換えたパケットをコピーすることと、
一方のパケットを宛先に指定されたポートの１つに出力することと、
他方のパケットをループバック処理用の出力先に出力することと、
ループバックされたパケットを受信した際、宛先に指定された全てのポートに送信済みか確認することと、
宛先に指定された全てのポートに送信済みである場合、該パケットを破棄することと、
宛先に指定された全てのポートに送信済みでない場合、宛先に指定された全てのポートに送信するまで上記の処理を繰り返すことと
を更に含む
パケット処理方法。
【請求項９】
請求項７又は８に記載のパケット処理方法であって、
前記受信パケットがマルチアクションのパケットであるか確認することと、
前記受信パケットがマルチアクションのパケットである場合、前記受信パケットをコピーすることと、
一方のパケットに対して、前記フローエントリに従って、指定されたアクションの１つを実行することと、
他方のパケットをループバック処理用の出力先に出力することと、
ループバックされたパケットを受信した際、宛先に指定された全てのポートに送信済みか確認することと、
宛先に指定された全てのポートに送信済みである場合、該パケットを破棄することと、
宛先に指定された全てのポートに送信済みでない場合、宛先に指定された全てのポートに送信するまで上記の処理を繰り返すことと
を更に含む
パケット処理方法。
【請求項１０】
請求項７乃至９のいずれか一項に記載のパケット処理方法を、スイッチに実行させるためのプログラムを格納した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムに関し、特にネットワークシステムのパケット処理方法に関する。
【背景技術】
【０００２】
ネットワークシステムの制御方式の１つとして、外部の制御装置（コントロールプレーン）からノード装置（ユーザプレーン）を制御するＣＵ（Ｃ：コントロールプレーン／Ｕ：ユーザプレーン）分離型ネットワークシステムが提案されている。【０００３】
ＣＵ分離型ネットワークシステムの一例として、コントローラからスイッチを制御してネットワークの経路制御を行うオープンフロー（ＯｐｅｎＦｌｏｗ）技術を利用したオープンフローネットワークシステムが挙げられる。オープンフロー技術の詳細については、非特許文献１に記載されている。なお、オープンフローネットワークシステムは一例に過ぎない。【０００４】
［オープンフローネットワークシステムの説明］
オープンフローネットワークシステムでは、ＯＦＣ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）等のコントローラが、ＯＦＳ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）等のスイッチのフローテーブルを操作することによりスイッチの挙動を制御する。コントローラとスイッチは、セキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）で接続されている。【０００５】
オープンフローネットワークシステムにおけるスイッチとは、オープンフローネットワークを形成し、コントローラの制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入口側エッジスイッチでのパケット（ｐａｃｋｅｔ）の受信（流入）から出口側エッジスイッチでの送信（流出）までのパケットの一連の流れをフロー（Ｆｌｏｗ）と呼ぶ。【０００６】
パケットは、フレーム（ｆｒａｍｅ）と読み替えても良い。パケットとフレームの違いは、プロトコルが扱うデータの単位（ＰＤＵ：Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）の違いに過ぎない。パケットは、「ＴＣＰ／ＩＰ」（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）のＰＤＵである。一方、フレームは、「Ｅｔｈｅｒｎｅｔ（登録商標）」のＰＤＵである。【０００７】
フローテーブルとは、所定のマッチ条件（ルール）に適合するパケット（通信データ）に対して行うべき所定の動作（アクション）を定義したフローエントリ（Ｆｌｏｗ  ｅｎｔｒｙ）が登録されたテーブルである。すなわち、フローテーブルは、フローエントリの集合である。【０００８】
フローエントリのルールは、パケットの各プロトコル階層のヘッダ領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローエントリのルールとして使用可能である。また、フローエントリのルールとして、フローを示すパケットのヘッダ領域の値の一部（又は全部）を、正規表現やワイルドカード「＊」等で表現したものを設定することもできる。【０００９】
フローエントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった動作である。例えば、スイッチは、フローエントリのアクションに出力ポートの識別情報（出力ポート番号等）が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチは、フローエントリのアクションにヘッダ情報が示されていれば、当該ヘッダ情報に基づいてパケットのヘッダを書き換える。【００１０】
オープンフローネットワークシステムにおけるスイッチは、フローエントリのルールに適合するパケット群（パケット系列）に対して、フローエントリのアクションを実行する。【００１１】
［既存のオープンフローネットワークシステムにおけるマルチキャスト送信について］
オープンフローネットワークシステムにおいても、従来のネットワークシステムと同様に、マルチキャスト（ｍｕｌｔｉｃａｓｔ）でのパケット送信が行われることがある。【００１２】
マルチキャストは、１つの宛先を指定することで、複数の宛先へパケット送信を行うことができる技術である。マルチキャストを用いることで、ネットワーク内で、複数の相手に同じデータを送信することができる。【００１３】
このマルチキャストに関する処理をオープンフローネットワークシステムのスイッチで実現するには、受信したパケットのヘッダを書き換え、それぞれの宛先ポートに出力する必要がある。【００１４】
しかし、スイッチはパケットの変換アクションを１回しか行うことができないため、スイッチでマルチキャスト送信を行う場合、単一のＶＬＡＮ（仮想ＬＡＮ：Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）には送信できるが、複数の異なるＶＬＡＮ宛に送信することはできない、等の制約がある。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｖｅｒｓｉｏｎ  １．０．０”，［ｏｎｌｉｎｅ］，インターネット（ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．０．０．ｐｄｆ）
【発明の概要】
【００１６】
本発明の目的は、オープンフローネットワークシステムのスイッチにネットワークプロセッサを搭載し、そのループバック（Ｌｏｏｐｂａｃｋ）機能を活用して、マルチキャスト送信及びマルチアクションを実現するネットワークシステムを提供することである。
【００１７】
本発明に係るネットワークシステムは、パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリに従って、受信パケットを処理するパケット転送処理装置と、パケット転送処理装置からパケットを受信した際、ループバック処理を行い、該パケットをパケット転送処理装置に送信し、オープンフローネットワークにおけるマルチキャスト送信及びマルチアクションを実現するループバック処理装置とを含む。
【００１８】
本発明に係るスイッチは、パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリに従って、受信パケットを処理するパケット転送処理部と、パケット転送処理部からパケットを受信した際、ループバック処理を行い、該パケットをパケット転送処理部に送信し、オープンフローネットワークにおけるマルチキャスト送信及びマルチアクションを実現するループバック処理部とを具備する。
【００１９】
本発明に係るパケット処理方法では、パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリに従って、受信パケットを処理する。また、処理されたパケットのコピーをループバック処理用の出力先に出力する。また、ループバックされたパケットを受信する。また、ループバックされたパケットを再度受信パケットとして扱う。これにより、オープンフローネットワークにおけるマルチキャスト送信及びマルチアクションを実現する。本発明に係るパケット処理方法は、オープンフローネットワークにおけるスイッチにより実施される。ループバック処理は、スイッチの内部で実施しても良いし、スイッチと通信／連携可能な外部装置で実施しても良い。
【００２０】
本発明に係るプログラムは、上記のパケット処理方法における処理を、計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００２１】
これにより、オープンフローネットワークシステムにおいて、複数の異なるＶＬＡＮ宛に同一パケットを送信することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明に係るネットワークシステムの構成例を説明するための図である。
【図２】本発明におけるマルチキャスト送信処理の動作を説明するための図である。
【図３】本発明におけるフローテーブルの構成例を説明するための図である。
【発明を実施するための形態】
【００２３】
本発明は、ＣＵ分離型ネットワークシステムを対象としている。ここでは、ＣＵ分離型ネットワークシステムの１つであるオープンフローネットワークシステムを例に説明する。但し、実際には、オープンフローネットワークシステムに限定されない。
【００２４】
＜実施形態＞
以下に、本発明の実施形態について添付図面を参照して説明する。
【００２５】
［基本構成］
図１に示すように、本発明に係るネットワークシステムは、スイッチ１と、マルチキャスト配信サーバ１００と、クライアント２００（２００−ｉ、ｉ＝１〜ｎ：ｎは台数）を含む。
【００２６】
スイッチ１は、オープンフローネットワークシステムにおけるスイッチである。すなわち、スイッチ１は、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行う。図示しないが、オープンフローネットワークシステムにおけるコントローラは、スイッチ１に対して、フローエントリの設定を行うことができる。
【００２７】
マルチキャスト配信サーバ１００は、マルチキャストパケットを送信するサーバ装置である。
【００２８】
クライアント２００（２００−ｉ、ｉ＝１〜ｎ）は、マルチキャスト配信サーバ１００から送信されるマルチキャストパケットを受信する端末装置である。クライアント２００（２００−ｉ、ｉ＝１〜ｎ）の各々は、利用するプロトコル等に応じてグループ化されており、同一の宛先アドレスを有する。ここでは、クライアント２００（２００−ｉ、ｉ＝１〜ｎ）の各々は、同一のＶＬＡＮグループに属する。
【００２９】
したがって、マルチキャスト配信サーバ１００は、１つの宛先を指定することで、クライアント２００（２００−ｉ、ｉ＝１〜ｎ）の全てに対してパケット送信を行う。
【００３０】
［スイッチ］
スイッチ１は、パケット転送処理部１０と、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）２０と、フローテーブル３０を備えている。
【００３１】
パケット転送処理部１０は、オープンフローインタフェースを有し、オープンフローインタフェースからパケットを受信し、フローテーブル３０の内容に従ってパケットを送信する。すなわち、パケット転送処理部１０は、パケット転送処理装置に相当する。オープンフローインタフェースは、スイッチ外部の通信装置との間で、オープンフロープロトコルに準拠したパケットを送受信するための通信ポートである。
【００３２】
ネットワークプロセッサ（ＮＰ）２０は、ループバックインタフェース（Ｌｏｏｐｂａｃｋ  Ｉｎｔｅｒｆａｃｅ）を有し、パケット転送処理部１０から送信されたパケットに対するループバック処理を行う。すなわち、ネットワークプロセッサ（ＮＰ）２０は、ループバック処理装置に相当する。ループバックインタフェースは、パケット転送処理部１０との間でパケットを送受信するための通信ポートである。ネットワークプロセッサ（ＮＰ）２０は、パケット転送処理部１０からループバックインタフェースを介して受信したパケットを、そのままパケット転送処理部１０に返信する。
【００３３】
フローテーブル３０は、オープンフローネットワークシステムにおけるコントローラから設定されたフローテーブルを格納するＤＢ（データベース）である。
【００３４】
［マルチキャスト配信サーバ及びクライアント］
マルチキャスト配信サーバ１００、及びクライアント２００（２００−ｉ、ｉ＝１〜ｎ）については、従来のシステムと同様であるため、説明を省略する。
【００３５】
［マルチキャスト送信処理］
次に、図２を参照して、本発明におけるマルチキャスト送信処理の動作について説明する。
【００３６】
（１）ステップＳ１０１
スイッチ１のパケット転送処理部１０は、オープンフローインタフェースでパケットを受信する。なお、受信パケットに適合するフローエントリは既にスイッチ１のフローテーブル３０に設定されているものとする。
【００３７】
（２）ステップＳ１０２
スイッチ１のパケット転送処理部１０は、受信パケットがマルチキャスト送信するパケットかどうかを判断する。スイッチ１のパケット転送処理部１０は、受信パケットの宛先アドレスがマルチキャストアドレスであるかどうかを確認し、宛先アドレスがマルチキャストアドレスであればマルチキャスト送信であると判断する。
【００３８】
（３）ステップＳ１０３
スイッチ１のパケット転送処理部１０は、受信パケットがマルチキャスト送信するパケットでない場合、フローテーブル３０の内容に従ってパケットを処理する。すなわち、スイッチ１のパケット転送処理部１０は、通常のオープンフローネットワークシステムにおけるパケット処理を行う。
【００３９】
（４）ステップＳ１０４
スイッチ１のパケット転送処理部１０は、受信パケットがマルチキャスト送信するパケットである場合、宛先に指定されたポートに全て送信済みかどうかを確認する。例えば、スイッチ１のパケット転送処理部１０は、受信パケットがマルチキャスト送信するパケットである場合、宛先に指定されたポートの一覧情報を作成し、未送信のポートがないか確認する。詳細については、「全宛先ポート送信済みの確認手順」として後述する。
【００４０】
（５）ステップＳ１０５
スイッチ１のパケット転送処理部１０は、宛先に指定されたポートに全て送信済みでない場合、元の受信パケットに適合したフローエントリのアクションに従い、受信パケットの変換アクションを実施し、受信パケットのパケットヘッダを書き換える。ここでは、変換後のパケットのヘッダは、変換前のパケットのヘッダと比べて「ＶＬＡＮ  ＩＤ」が変更されているものとする。「ＶＬＡＮ  ＩＤ」は、ＶＬＡＮグループを一意に特定するための識別情報である。
【００４１】
（６）ステップＳ１０６
スイッチ１のパケット転送処理部１０は、変換アクションを実施したパケットをコピー（複製）する。すなわち、スイッチ１のパケット転送処理部１０は、パケットヘッダを書き換えたパケットをコピーする。
【００４２】
（７）ステップＳ１０７
スイッチ１のパケット転送処理部１０は、変換アクションを実施したパケットを、宛先ポートへ出力（送信）する。ここでは、スイッチ１のパケット転送処理部１０は、コピーして２つになったパケットの一方を宛先ポートへ出力する。例えば、スイッチ１のパケット転送処理部１０は、変換アクションを実施したパケットを、宛先に指定されたポートの一覧情報の先頭に記載された宛先ポートへ出力した後、宛先に指定されたポートの一覧情報から該宛先ポートを削除する。或いは、該宛先ポートが送信済みである旨を示す情報を、宛先に指定されたポートの一覧情報に記録する。
【００４３】
（８）ステップＳ１０８
スイッチ１のパケット転送処理部１０は、変換アクションを実施したパケットを、ネットワークプロセッサ（ＮＰ）２０のループバックインタフェースへ送信する。例えば、スイッチ１のパケット転送処理部１０は、変換アクションを実施したパケットを、ループバックアドレス（Ｌｏｏｐｂａｃｋ  Ａｄｄｒｅｓｓ）宛に送信する。ここでは、スイッチ１のパケット転送処理部１０は、コピーして２つになったパケットのもう一方（他方）をネットワークプロセッサ（ＮＰ）２０のループバックインタフェースへ送信する。すなわち、スイッチ１のパケット転送処理部１０は、受信パケットの宛先アドレスがマルチキャストアドレスである場合は、アクションに指定された出力ポートに加えてネットワークプロセッサ（ＮＰ）２０のループバックインタフェースへも送信する。
【００４４】
（９）ステップＳ１０９
ネットワークプロセッサ（ＮＰ）２０は、ループバックインタフェースを介して受信したパケットをパケット転送処理部１０に返信する。
【００４５】
（１０）ステップＳ１１０
スイッチ１のパケット転送処理部１０は、ネットワークプロセッサ（ＮＰ）２０のループバックインタフェースからパケットを受信する。その後、スイッチ１のパケット転送処理部１０は、再度、受信パケットがマルチキャスト送信するパケットかどうかを判断する（ステップＳ１０２に戻る）。このとき、スイッチ１のパケット転送処理部１０は、ネットワークプロセッサ（ＮＰ）２０のループバックインタフェースから受信したパケット（ループバックされたパケット）はマルチキャスト送信するパケットであると自動的に判断しても良い。
【００４６】
（１１）ステップＳ１１１
スイッチ１のパケット転送処理部１０は、宛先に指定されたポートに全て送信済みである場合、パケットを廃棄して処理を終了する。
【００４７】
これにより、マルチキャスト送信したいパケットを、複数の異なるＶＬＡＮ宛に送信することができる。
【００４８】
［全宛先ポート送信済みの確認手順］
スイッチ１のフローテーブル３０に、図３に示すようなフローエントリが予め登録されているものとする。また、スイッチ１のパケット転送処理部１０は、送信済みのエントリ数を確認するためのカウンタを備えているものとする。
【００４９】
スイッチ１のパケット転送処理部１０は、フローテーブル３０を検索し、宛先アドレスが一致するフローエントリにヒットした場合、そのフローエントリと同一のマッチ条件を持つフローエントリ数にカウンタ値が達していれば、全宛先ポートに送信済みと判断する。
【００５０】
全宛先ポートに送信済みでない場合、ヒットしたエントリよりカウンタ値だけ後ろへずれたフローエントリのアクションに従ってパケットの「ＶＬＡＮ  ＩＤ」を書き換え、パケットをコピーし、指定されたポートと、ネットワークプロセッサ（ＮＰ）２０のループバックインタフェースへ送信する。その後、カウンタ値を１カウントアップする。
【００５１】
［補足］
なお、マルチキャスト送信ではなく、マルチアクションを行う場合、上記の説明において、「宛先に指定されたポート」を「指定されたアクション」と読み替え、「変換アクションの実施（受信パケットのパケットヘッダの書き換え）」及び「宛先ポートへの出力」を「指定されたアクションの実行」と読み替える。「変換アクションの実施（受信パケットのパケットヘッダの書き換え）」は行わなくても良い。すなわち、指定されたアクションを全て実行するまで、ループバック処理を行い、指定されたアクションを１つずつ実行していく。
【００５２】
［他の実施例］
図１において、ネットワークプロセッサ（ＮＰ）２０の代わりに、スイッチ１の持つループバックインタフェースを使用することでも、マルチキャスト送信やマルチアクションを実現することができる。すなわち、ネットワークプロセッサ（ＮＰ）２０に相当する装置は、スイッチ１の外部に存在していても良い。例えば、ネットワークプロセッサ（ＮＰ）２０は、オープンフローネットワークシステムにおけるコントローラでも良い。
【００５３】
また、スイッチ１は、単体のスイッチ装置に限らず、複数の装置を組み合わせたスイッチシステムでも良い。すなわち、パケット転送処理部１０、ネットワークプロセッサ（ＮＰ）２０、及びフローテーブル３０の各々も、同一のスイッチ装置内に存在しているとは限らず、物理的に独立した装置であっても良い。例えば、パケット転送処理部１０に相当する「パケット転送処理装置」と、ネットワークプロセッサ（ＮＰ）２０に相当する「ループバック処理装置」と、を組み合わせたスイッチシステムを、スイッチ１としても良い。
【００５４】
更に、上記の説明では、宛先に指定された全てのポートにパケットを出力しているが、実際には、宛先に指定されたポートであっても所定のポートには出力しないように設定することもできる。この場合、図２のステップＳ１０７において、出力先の宛先ポートが出力しないように設定されたポートであれば、コピーしたパケットを該宛先ポートへ出力せずに破棄するようにしても良い。これにより、マルチキャスト送信であっても、スイッチ側で送信先の制限を行うことが可能になる。また、マルチアクションについても同様に、特定のアクションの制限を行うことが可能になる。
【００５５】
＜ハードウェアの例示＞
以下に、本発明に係るネットワークシステムを実現するための具体的なハードウェアの例について説明する。
【００５６】
スイッチ１の例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、ロードバランサ（ｌｏａｄ  ｂａｌａｎｃｅｒ：負荷分散装置）、帯域制御装置（ｐａｃｋｅｔ  ｓｈａｐｅｒ）、セキュリティ監視制御装置（ＳＣＡＤＡ：Ｓｕｐｅｒｖｉｓｏｒｙ  Ｃｏｎｔｒｏｌ  Ａｎｄ  Ｄａｔａ  Ａｃｑｕｉｓｉｔｉｏｎ）、ゲートキーパー（ｇａｔｅｋｅｅｐｅｒ）、基地局（ｂａｓｅ  ｓｔａｔｉｏｎ）、アクセスポイント（ＡＰ：Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、通信衛星（ＣＳ：Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ）、或いは、複数の通信ポートを有する計算機等が考えられる。なお、スイッチ１は、ネットワークカード等の拡張カードや、物理マシン上に構築された仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＶＭ））により実現される仮想スイッチでも良い。
【００５７】
マルチキャスト配信サーバ１００、及びクライアント２００（２００−ｉ、ｉ＝１〜ｎ）の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。なお、クライアント２００（２００−ｉ、ｉ＝１〜ｎ）は、携帯電話機、スマートフォン、スマートブック、ＩＰ電話機、カーナビ（カーナビゲーションシステム）、携帯型ゲーム機、家庭用ゲーム機、携帯型音楽プレーヤー、ハンディターミナル、ガジェット（電子機器）、双方向テレビ、デジタルチューナー、デジタルレコーダー、情報家電（ｉｎｆｏｒｍａｔｉｏｎ  ｈｏｍｅ  ａｐｐｌｉａｎｃｅ）、ＯＡ（Ｏｆｆｉｃｅ  Ａｕｔｏｍａｔｉｏｎ）機器、店頭端末・高機能コピー機、デジタルサイネージ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｇｅ：電子看板）等でも良い。また、クライアント２００（２００−ｉ、ｉ＝１〜ｎ）は、車両や船舶、航空機等の移動体に搭載されていても良い。
【００５８】
スイッチ１、マルチキャスト配信サーバ１００、及びクライアント２００（２００−ｉ、ｉ＝１〜ｎ）の各々は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインタフェースによって実現される。
【００５９】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ（ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ）、或いは、専用の機能を有する半導体集積回路（ＬＳＩ：Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等が考えられる。
【００６０】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）でも良い。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【００６１】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。したがって、計算機等に搭載される１チップマイコンが、プロセッサ及びメモリを備えている事例が考えられる。
【００６２】
上記のインタフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００６３】
また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【００６４】
パケット転送処理部１０の例として、上記のインタフェースが考えられる。なお、パケット転送処理部１０は、上記のプロセッサと上記のインタフェースを組み合わせたものでも良い。
【００６５】
ネットワークプロセッサ（ＮＰ）２０の例として、上記のプロセッサが考えられる。なお、ネットワークプロセッサ（ＮＰ）２０は、上記のプロセッサと上記のインタフェースを組み合わせたものでも良い。
【００６６】
フローテーブル３０の例として、上記のメモリが考えられる。なお、フローテーブル３０は、上記のプロセッサと上記のメモリを組み合わせたものでも良い。
【００６７】
また、パケット転送処理部１０、ネットワークプロセッサ（ＮＰ）２０、及びフローテーブル３０の各々は、互いに独立した計算機等であっても良い。
【００６８】
なお、スイッチ１の内部の構成要素は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【００６９】
但し、実際には、これらの例に限定されない。
【００７０】
＜まとめ＞
以上のように、本発明は、オープンフローネットワークシステムにおけるマルチキャスト送信やマルチアクションを実現するための技術に関する。
【００７１】
本発明では、オープンフローネットワークシステムのスイッチにネットワークプロセッサを搭載し、そのループバック機能を活用して、マルチキャスト送信及びマルチアクションを実現することを特徴としている。
【００７２】
また、本発明では、ネットワークプロセッサの代替品として、スイッチ本体のループバックインタフェースを使用することも可能である。
【００７３】
本発明では、マルチキャスト送信したいパケットを受信した場合、まず受信したパケットに対して変換アクションを行い、変換後のパケットをコピーする。
【００７４】
コピーしたパケットをマルチキャスト送信したい宛先ポート及びネットワークプロセッサのループバックインタフェースへ送信し、ネットワークプロセッサのループバックインタフェースから返信してもらう。
【００７５】
ネットワークプロセッサのループバックインタフェースから受信したパケットに対して、再度、変換アクションを行い、変換後のパケットをコピーして宛先ポート及びネットワークプロセッサのループバックインタフェースへ送信する。
【００７６】
これを繰り返すことにより、複数の異なるＶＬＡＮ宛に同一パケットを送信することができる。
【００７７】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【００７８】
（付記１）
パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリに従って、受信パケットを処理するパケット転送処理部と、
パケット転送処理部からパケット（処理されたパケット、又はそのコピー等）を受信した際、当該パケットに対してループバック処理を行い、当該パケットをパケット転送処理部に送信し、オープンフローネットワークにおけるマルチキャスト送信及びマルチアクションを実現するループバック処理部と
を具備する
スイッチ。
【００７９】
（付記２）
付記１に記載のスイッチであって、
パケット転送処理部は、
マルチキャスト送信のパケットを受信した際、ループバック処理部にパケットを送信する機能部と、
ループバック処理部から返信されたパケットを受信する機能部と
を具備する
スイッチ。
【００８０】
（付記３）
付記２に記載のスイッチであって、
パケット転送処理部は、
受信パケットがマルチキャスト送信のパケットであるか確認する機能部と、
受信パケットがマルチキャスト送信のパケットである場合、フローエントリに従って、受信パケットの変換アクションを実施し、受信パケットのパケットヘッダを書き換える機能部と、
パケットヘッダを書き換えたパケットをコピーする機能部と、
一方のパケットを宛先に指定されたポートの１つに出力する機能部と、
他方のパケットをループバック処理部に送信する機能部と、
ループバック処理部から返信されたパケットを受信した際、宛先に指定された全てのポートに送信済みか確認する機能部と、
宛先に指定された全てのポートに送信済みである場合、当該パケットを破棄する機能部と、
宛先に指定された全てのポートに送信済みでない場合、宛先に指定された全てのポートに送信するまで上記の処理を繰り返す機能部と
を更に具備する
スイッチ。
【００８１】
（付記４）
付記１乃至３のいずれか一項に記載のスイッチであって、
パケット転送処理部は、
受信パケットがマルチアクションのパケットであるか確認する機能部と、
受信パケットがマルチアクションのパケットである場合、受信パケットをコピーする機能部と、
一方のパケットに対して、フローエントリに従って、指定されたアクションの１つを実行する機能部と、
他方のパケットをループバック処理部に送信する機能部と、
ループバック処理部から返信されたパケットを受信した際、指定された全てのアクションを実行済みか確認する機能部と、
指定された全てのアクションを実行済みである場合、当該パケットを破棄する機能部と、
指定された全てのアクションを実行済みでない場合、指定された全てのアクションを実行するまで上記の処理を繰り返す機能部と
を更に具備する
スイッチ。
【００８２】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【００８３】
なお、本出願は、日本出願番号２０１１−０４８１２９に基づく優先権を主張するものであり、日本出願番号２０１１−０４８１２９における開示内容は引用により本出願に組み込まれる。
【図１】
2012121098.tif 000003
【図２】
2012121098.tif 000004
【図３】
2012121098.tif 000005
【国際調査報告】
2012121098.tif 000006
2012121098.tif 000007