(57)【要約】【課題】データの伝送制御に係る設定を容易にできる情報伝送装置、及びプログラムを提供する。【解決手段】複数の通信ポートを有し、予め指定されたパターンと、当該パターンに関連付けられた処理指示情報とを記憶するデータベースにアクセス可能に接続される。通信ポートを介して、ヘッダ部とペイロード部とを含んだパケットデータを受け入れると、当該受け入れたパケットデータのうち処理対象となったパケットデータのペイロード部の少なくとも一部を含んで設定される比較範囲に、データベースに記憶された、予め定められたパターンに合致する情報が含まれるか否かを判断し、その判断結果に基づいて、記憶された処理指示情報に基づく処理等を行う情報伝送装置である。【選択図】図１
2015095768.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信ポートを有し、
予め指定されたパターンと、当該パターンに関連付けられた処理指示情報とを記憶するパターンデータベースにアクセス可能に接続され、
前記通信ポートを介して、ヘッダ部とペイロード部とを含んだパケットデータを受け入れる受入手段、
前記受入手段にて受け入れたパケットデータのうち、処理対象となったパケットデータのペイロード部の少なくとも一部を含んで設定される比較範囲に、前記パターンデータベースに記憶された、予め定められたパターンに合致する情報が含まれるか否かを判断する判断手段、
前記判断手段による判断結果に基づいて、前記パターンデータベースに記憶された処理指示情報に基づく処理を行う処理手段、
前記処理対象となったパケットデータのヘッダ部に含まれる情報と、前記処理手段によって行われた処理内容を特定する処理指示情報とを関連付けて保持する保持手段、及び
前記受入手段にて受け入れたパケットデータのヘッダ部を参照し、当該ヘッダ部に含まれる情報に対して、前記保持手段に処理指示情報が関連付けて保持されていれば、当該パケットデータに対して、当該処理指示情報で特定される処理を行い、前記参照したヘッダ部に含まれる情報に対して、前記保持手段に処理指示情報が関連付けられていなければ、当該パケットデータを処理対象として前記判断手段における処理に供する分類手段、
を含む情報伝送装置。
【請求項２】
請求項１記載の情報伝送装置であって、
前記判断手段は、処理対象となった複数のパケットデータの各ペイロード部の少なくとも一部を含んで設定される各比較範囲に、それぞれ予め定められたパターンに合致する情報が含まれるか否かを判断し、
前記出力手段は、前記判断結果の統計演算結果に基づいて、前記パターンデータベースに記憶された処理指示情報に基づく処理を行う情報伝送装置。
【請求項３】
請求項１または２記載の情報伝送装置であって、
一連の通信の終了時に、前記保持手段が保持する、互いに関連付けられたパケットデータのヘッダ部に含まれる情報と、処理指示情報とを削除する処理を実行する情報伝送装置。
【請求項４】
複数の通信ポートを有し、予め指定されたパターンと、当該パターンに関連付けられた処理指示情報とを記憶するパターンデータベースにアクセス可能に接続されたコンピュータを、
前記通信ポートを介して、ヘッダ部とペイロード部とを含んだパケットデータを受け入れる受入手段、
前記受入手段にて受け入れたパケットデータのうち処理対象となったパケットデータのペイロード部の少なくとも一部を含んで設定される比較範囲に、前記パターンデータベースに記憶された、予め定められたパターンに合致する情報が含まれるか否かを判断する判断手段、
前記判断手段による判断結果に基づいて、前記パターンデータベースに記憶された処理指示情報に基づく処理を行う処理手段、
前記処理対象となったパケットデータのヘッダ部に含まれる情報と、前記処理手段によって行われた処理内容を特定する処理指示情報とを関連付けて保持する保持手段、及び
前記受入手段にて受け入れたパケットデータのヘッダ部を参照し、当該ヘッダ部に含まれる情報に対して、前記保持手段に処理指示情報が関連付けて保持されていれば、当該パケットデータに対して、当該処理指示情報で特定される処理を行い、前記参照したヘッダ部に含まれる情報に対して、前記保持手段に処理指示情報が関連付けられていなければ、当該パケットデータを処理対象として前記判断手段における処理に供する分類手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報の伝送を行う情報伝送装置及びプログラムに関する。
【背景技術】
【０００２】
近年では、ネットワークの構成を動的に変化させるなどの要望に応えるため、ネットワーク上でのデータの伝送経路をソフトウエアによって動的に制御する、ソフトウエア・デファインド・ネットワーク（ＳＤＮ：Software Defined Network）が研究・開発されている。
【０００３】
一例として、OpenFlow（オープンフロー）と呼ばれるＳＤＮでは、ネットワーク上に配されたスイッチ装置が、中央に配されたコントローラからの指示に従ってデータ伝送処理を行う。オープンフローでは、コントローラはパケットのヘッダ部に含まれる情報についてのパターンと、当該パターンがヘッダ部に含まれるパケットについて実行するべき処理とをスイッチ装置側へ伝達する。スイッチ装置では、このパターンと処理とを関連付けて記憶しておく。また、スイッチ装置は、入力されたパケットのヘッダ部を参照し、コントローラから指定されたパターンに合致する場合に、当該パターンに関連付けられた処理を実行する。
【０００４】
なお、パケットのヘッダ部には、パケットの通信フローを識別するための情報、具体的には受信ポートの識別情報、送信元ＭＡＣ（Media Access Controller）アドレス、宛先ＭＡＣアドレス、ＶＬＡＮ（Virtual Local Area Network）の情報、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号等が含まれる。
【０００５】
また、実行するべき処理としては、パケットを特定のポートを介して送出する処理や、破棄する処理、ヘッダ部の情報を書き換える処理等が指定され、スイッチ装置において実行される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１０−１０３９０９号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来のオープンフロー等のＳＤＮ技術においては、パケットは、その通信フローを識別する情報、つまりはヘッダ情報に基づいて制御が行われるため、設定が容易でないことが多い。例えば、動画配信を行うサイトからのパケットと、そうでないパケットとで送信経路を異ならせたい場合に、当該動画配信を行うサイトのＩＰアドレスを予め知らなければならず、設定の利便性が低い。
【０００８】
また通信先のＩＰアドレスが固定されているとは限らないピア・ツー・ピアの通信等に対応したい場合、ヘッダ部の情報では設定が困難な場合もある。
【０００９】
本発明は上記実情に鑑みて為されたもので、データの伝送制御に係る設定を容易にできる情報伝送装置、及びプログラムを提供することを、その目的のひとつとする。
【課題を解決するための手段】
【００１０】
上記従来例の問題点を解決するための本発明は、複数の通信ポートを有し、予め指定されたパターンと、当該パターンに関連付けられた処理指示情報とを記憶するパターンデータベースにアクセス可能に接続された情報伝送装置であって、前記通信ポートを介して、ヘッダ部とペイロード部とを含んだパケットデータを受け入れる受入手段、前記受入手段にて受け入れたパケットデータのうち処理対象となったパケットデータのペイロード部の少なくとも一部を含んで設定される比較範囲に、前記パターンデータベースに記憶された、予め定められたパターンに合致する情報が含まれるか否かを判断する判断手段、前記判断手段による判断結果に基づいて、前記パターンデータベースに記憶された処理指示情報に基づく処理を行う処理手段、前記処理対象となったパケットデータのヘッダ部に含まれる情報と、前記処理手段によって行われた処理内容を特定する処理指示情報とを関連付けて保持する保持手段、及び前記受入手段にて受け入れたパケットデータのヘッダ部を参照し、当該ヘッダ部に含まれる情報に対して、前記保持手段に処理指示情報が関連付けて保持されていれば、当該パケットデータに対して、当該処理指示情報で特定される処理を行い、前記参照したヘッダ部に含まれる情報に対して、前記保持手段に処理指示情報が関連付けられていなければ、当該パケットデータを処理対象として前記判断手段における処理に供する分類手段、を含むこととしたものである。
【００１１】
またここで前記判断手段は、処理対象となった複数のパケットデータの各ペイロード部の少なくとも一部を含んで設定される各比較範囲に、それぞれ予め定められたパターンに合致する情報が含まれるか否かを判断し、前記出力手段は、前記判断結果の統計演算結果に基づいて、前記パターンデータベースに記憶された処理指示情報に基づく処理を行うこととしてもよい。
さらに一連の通信の終了時に、前記保持手段が保持する、互いに関連付けられたパケットデータのヘッダ部に含まれる情報と、処理指示情報とを削除する処理を実行してもよい。
【００１２】
また、本発明の別の態様に係るプログラムは、複数の通信ポートを有し、予め指定されたパターンと、当該パターンに関連付けられた処理指示情報とを記憶するパターンデータベースにアクセス可能に接続されたコンピュータを、前記通信ポートを介して、ヘッダ部とペイロード部とを含んだパケットデータを受け入れる受入手段、前記受入手段にて受け入れたパケットデータのうち処理対象となったパケットデータのペイロード部の少なくとも一部を含んで設定される比較範囲に、前記パターンデータベースに記憶された、予め定められたパターンに合致する情報が含まれるか否かを判断する判断手段、前記判断手段による判断結果に基づいて、前記パターンデータベースに記憶された処理指示情報に基づく処理を行う処理手段、前記処理対象となったパケットデータのヘッダ部に含まれる情報と、前記処理手段によって行われた処理内容を特定する処理指示情報とを関連付けて保持する保持手段、及び前記受入手段にて受け入れたパケットデータのヘッダ部を参照し、当該ヘッダ部に含まれる情報に対して、前記保持手段に処理指示情報が関連付けて保持されていれば、当該パケットデータに対して、当該処理指示情報で特定される処理を行い、前記参照したヘッダ部に含まれる情報に対して、前記保持手段に処理指示情報が関連付けられていなければ、当該パケットデータを処理対象として前記判断手段における処理に供する分類手段、として機能させることとしたものである。
【発明の効果】
【００１３】
本発明によると、データの伝送制御に係る設定を容易にできる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態に係る情報伝送装置の構成例を表すブロック図である。
【図２】本発明の実施の形態に係る情報伝送装置の取扱うパケットデータの例を表す説明図である。
【図３】本発明の実施の形態に係る情報伝送装置が用いるパターンデータベースの内容例を表す説明図である。
【図４】本発明の実施の形態に係る情報伝送装置の例を表す機能ブロック図である。
【図５】本発明の実施の形態に係る情報伝送装置が用いる通信フローデータベースの内容例を表す説明図である。
【図６】本発明の実施の形態に係る情報伝送装置の動作例を表すフローチャート図である。
【図７】本発明の実施の形態に係る情報伝送装置の別の動作例を表すフローチャート図である。
【発明を実施するための形態】
【００１５】
本発明の実施の形態について図面を参照しながら説明する。本実施の形態に係る情報伝送装置は、図１に例示するように、制御部１１と、記憶部１２と、複数の通信ポート１３０ａ，ｂ，…を備えた通信部１３と、を含んで構成されている。
【００１６】
制御部１１は、ＣＰＵ等のプログラム制御デバイスであり、記憶部１２に格納されたプログラムに従って動作する。本実施の形態の制御部１１は、通信部１３の通信ポート１３０を介して、パケットデータを受け入れて次の処理を行う。ここでパケットデータは図２に例示するようにヘッダ部（Ｈ）と、ペイロード部（Ｐ）とを含んでなり、ヘッダ部には、パケットデータの通信フローを識別するための情報、具体的には受信ポートの識別情報、送信元ＭＡＣ（Media Access Controller）アドレス、宛先ＭＡＣアドレス、ＶＬＡＮ（Virtual Local Area Network）の情報、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号等が含まれる。またペイロード部は、ユーザデータを含む。ユーザデータは、一般に、いわゆるレイヤ４（トランスポート層、ＴＣＰ／ＵＤＰ等のプロトコルに係る情報を含む部分）よりも上位のレイヤ７（アプリケーション層）の内容を指す。具体的にはＨＴＴＰプロトコルにより、ＵＲＬ「http://aaa.bbb.ccc/ddd」を要求するデータであれば、「GET http://aaa.bbb.ccc/ddd」といったコマンド文字列やＨＴＴＰヘッダを含むものとなる。
【００１７】
本実施の形態の制御部１１は、このパケットデータのペイロード部の少なくとも一部を含んで設定される比較範囲に、予め定められたパターンに合致する情報が含まれるか否かを判断し、当該判断結果に基づいて、予め指定された処理指示情報に基づく処理を行う。ここで上記比較範囲は、例えばパケットデータの先頭から予め定められたオフセットの値が示すビット位置を始点とし、またはパケットデータの先頭から予め定められたオフセット（一般に、先頭からのオフセットとは別の値）の値が示すビット位置を終点とする範囲であって、ペイロード部の少なくとも一部を含む範囲として規定されるデータ部分である。
また、この比較範囲を規定する情報は、上述のように始点と終点とをそれぞれパケットデータの先頭または末尾からのオフセットに限られない。比較範囲は、パケットデータの先頭からのオフセットで始点または終点を定め、また別途定めたビット数長のデータ部分であるとして規定されてもよい。同様に、パケットデータの末尾からのオフセットで始点または終点を定め、また別途定めたデータ長のデータ部分であるとして規定されてもよい。
またこの制御部１１は、パケットデータのヘッダ部に、ＴＣＰプロトコルのセッションの開始を意味するSYNフラグが立っているか否かを検出し、あるいは、SYN、SYN/ACK、ACKの各フラグが立っているデータの送受といったシーケンスを検出する処理を行う。制御部１１は、この検出の結果如何により、上記比較範囲に予め定められたパターンに合致する情報が含まれるか否かを判断する処理等を行うこととしてもよい。この制御部１１の詳しい動作については後に述べる。
【００１８】
記憶部１２は、メモリ素子あるいは、ディスクデバイス等であり、制御部１１によって実行されるプログラムを保持している。このプログラムは、ＤＶＤ−ＲＯＭ等のコンピュータ可読な記録媒体に、非一時的に（non-transitory）格納されて提供され、この記憶部１２に複写されたものであってもよい。
【００１９】
本実施の形態のある例では、この記憶部１２には、図３に例示するように、予め指定されたパターン（Ａ）と処理指示情報（Ｃ）とを関連付けた組（エントリー）を少なくとも一組、記憶するデータベース（パターンデータベースと呼ぶ）が格納されている。ここでパターン（Ａ）は、例えば、ペイロード部の少なくとも一部を含んで設定される比較範囲のデータと比較される正規表現（Regular Expression）である。正規表現については広く知られているので、その説明を省略する。
またこの記憶部１２は、制御部１１のワークメモリとしても動作し、制御部１１の処理に必要となる情報を格納する。本実施の形態の一例では、この記憶部１２は、保持手段としても機能する。
【００２０】
ここでパターンデータベースは、管理者によって書き換え可能なものであり、具体的には制御部１１は、外部（例えば通信ポート１３０のいずれか、または図示しないＵＳＢ（Universal Serial Bus）等のインタフェースを介して接続されたパーソナルコンピュータ等）からパターンデータベースの書き換え指示を受け入れて、当該指示に従って、パターンデータベース内に、パターンと処理指示情報とを関連付けて記録し、またいずれかのパターンと処理指示情報とを関連付けたエントリーをパターンデータベースから削除する等の処理を行う。またこのパターンデータベースは、オープンフローと同様に、コントローラからの指示によって書き換えられてもよい。この場合制御部１１は、通信ポート１３０のいずれかを介して接続されたネットワークを介して、コントローラからの指示を受け入れ、当該指示に従って、パターンデータベースを書き換える。
【００２１】
通信部１３は、ネットワークインタフェース等であり、本実施の形態では複数の通信ポート１３０ａ，ｂ…を含んで構成されている。この通信部１３は、いずれかの通信ポート１３０に到来したパケットデータに、当該パケットデータを受け入れた通信ポートを識別する情報（受信ポートの識別情報）を設定して、制御部１１に出力する。またこの通信部１３は、いずれかの通信ポート１３０を特定する情報とともに、制御部１１からパケットデータを受け入れると、当該情報で特定される通信ポート１３０を介して、当該パケットデータを送出する。
【００２２】
次に本実施の形態の制御部１１の動作について説明する。本実施の形態の制御部１１は、機能的には、図４に例示するように、受入部２１と、分類部２２と、判断部２３と、処理部２４とを含んで構成される。
【００２３】
受入部２１は、通信部１３の通信ポート１３０のいずれかを介して受信されたパケットデータを受け入れる。分類部２２は、受入部２１が受け入れたパケットデータのヘッダ部（Ｈ）を参照して、次の処理を行う。本実施の形態では、図５に例示するように、ヘッダ部（Ｈ）に含まれる情報（例えば送信元ＩＰアドレスまたは宛先ＩＰアドレス）に対し、処理指示情報を関連付けた組を少なくとも一つ含む、通信フローデータベースが記憶部１２に保持されているものとする。
【００２４】
分類部２２は、受入部２１が受け入れたパケットデータのヘッダ部に含まれる情報に対して処理指示情報を関連付けた組が通信フローデータベースに保持されているか否かを調べる。ここで、当該ヘッダ部に含まれる情報に対して処理指示情報が関連付けられて記憶部１２の通信フローデータベースに保持されていれば、分類部２２は、当該処理指示情報（ヘッダ部に含まれる情報に関連付けられている処理指示情報）を読み出して、受け入れたパケットデータと読み出した処理指示情報とを処理部２４に出力する。
【００２５】
また分類部２２は、参照したヘッダ部（Ｈ）に含まれる情報に対して、処理指示情報が関連付けられて、記憶部１２の通信フローデータベースに保持されていなければ、当該パケットデータを処理対象として判断部２３に出力して、その処理に供する。
【００２６】
なお、この分類部２２は、受入部２１が受け入れたパケットデータのヘッダ部に含まれる宛先ＭＡＣアドレスが後に説明する処理部２４により、いずれかの通信ポート１３０に接続された機器に割り当てられたＭＡＣアドレスであるとして当該通信ポート１３０を特定する情報に関連付けて記憶され、いわゆるフォワーディングまたはフィルタリングが可能であれば、当該パケットデータのヘッダ部に含まれる情報に対して処理指示情報を関連付けた組が通信フローデータベースに保持されていない場合であっても、当該パケットデータをそのまま処理部２４に出力することとしてもよい。
【００２７】
判断部２３は、分類部２２から、受入部２１が受け入れたパケットデータのうち、処理対象となったパケットデータの入力を受け入れる。そして判断部２３は、この受け入れたパケットデータのペイロード部（Ｐ）の少なくとも一部を含んで設定される比較範囲（Ｗ）に、記憶部１２に記憶されている、予め定められたパターンに合致する情報が含まれるか否かを判断する。この比較範囲（Ｗ）は、例えばペイロード部自体であってもよいし、ペイロード部とヘッダ部との双方を含む範囲であってもよい。ここで比較範囲は、例えば予めパケットデータの先頭からのオフセットや末尾からのオフセット、または比較範囲のデータ長等を用いて予め設定されたものであってもよい。また後に述べるように、比較するパターンごとに個別に定められてもよい。具体的に判断部２３は、記憶部１２に図３に示した正規表現により表されるパターンが記憶されている場合、当該正規表現を予め定めた順番で順次読み出していき、読み出した正規表現で表される文字列が、処理対象となったパケットデータのペイロード部（Ｐ）の少なくとも一部を含んで設定される比較範囲（Ｗ）に含まれているか否かを調べる。
【００２８】
判断部２３は、受け入れたパケットデータのペイロード部（Ｐ）の少なくとも一部を含んで設定される比較範囲（Ｗ）に、記憶部１２に記憶されている、予め定められたパターンが含まれていると判断すると、当該含まれていたパターンに関連付けて記憶部１２に記憶されている処理指示情報を読み出して、受け入れたパケットデータと読み出した処理指示情報とを処理部２４に出力する。これにより処理部２４が、判断部２３の判断結果に基づいて、記憶部１２に記憶された処理指示情報に基づく処理を行うこととなる。
【００２９】
判断部２３は、ここで受け入れたパケットデータのペイロード部（Ｐ）の少なくとも一部を含んで設定される比較範囲（Ｗ）に、記憶部１２に記憶されている、予め定められたパターンが含まれていないと判断すると、当該パケットデータをそのまま処理部２４に出力する。
【００３０】
本実施の形態のある例では、処理部２４は、基本的には一般的なスイッチとしての動作を行う。すなわち、この処理部２４は、通信ポート１３０ａ，ｂ…ごとに、当該通信ポート１３０に対して外部から到来するパケットデータの送信元ＭＡＣアドレスを関連付けて記憶する（ラーニング）。そして処理部２４は、入力されたパケットデータのヘッダ部を参照し、当該ヘッダ部に含まれる宛先ＭＡＣアドレスが関連付けられた通信ポート１３０を介して当該パケットデータを送出する（フォワーディング）。また、処理部２４は、入力されたパケットデータのヘッダ部に含まれる宛先ＭＡＣアドレスがどの通信ポート１３０にも関連付けられて記憶されていない場合、すべての通信ポート１３０を介して当該パケットデータを送出する（フラッディング）。そのほか、フィルタリング、エージングといった一般的なスイッチとしての動作をこの処理部２４が行うこととなる。
また処理部２４は、基本的にはOpenFlowにおけるのと同様に、外部のコントローラからの指示に従った処理を行ってもよい。
【００３１】
また本実施の形態の処理部２４は、上記基本的な処理に加え、分類部２２または判断部２３から、処理指示情報とともにパケットデータが入力された場合、当該処理指示情報によって特定される処理を実行する。ここで処理指示情報は例えば、特定の通信ポート１３０を介して送出する処理や、パケットデータを破棄する処理、ヘッダ部の情報を書き換える処理を表すものである。
【００３２】
また処理部２４は、判断部２３から、処理指示情報とともにパケットデータが入力されている場合には、当該処理対象となったパケットデータのヘッダ部に含まれる情報と、実行された処理内容を特定する処理指示情報とを関連付けて、記憶部１２の通信フローデータベースに追記する。
【００３３】
具体的に処理部２４は、分類部２２または判断部２３から、パケットデータとともに入力される処理指示情報が、特定の通信ポート１３０ｘを介してパケットデータを送出するべき旨を表すものである場合、当該入力されたパケットデータを、指定された特定の通信ポート１３０ｘを介して送出する。この場合、処理部２４は、フォワーディングやフラッディングの処理等をさらに行うことはしない。またこのとき処理部２４は、当該入力されたパケットデータのヘッダ部の情報のうち、予め定められた部分（例えば宛先ＩＰアドレス）を取り出して、当該取り出した情報と、パケットデータとともに入力された処理指示情報とを関連付けて、記憶部１２の通信フローデータベースに保持させる。
【００３４】
これで、以下同じ宛先ＩＰアドレス宛のパケットデータが、分類部２２の処理により、処理指示情報とともに処理部２４に供されることとなる。
【００３５】
本実施の形態の情報伝送装置は、以上の構成を備えており、一例として次のように動作する。以下の例では、記憶部１２のパターンデータベースに、パターン（Ａ）として「GET http://aaa.bbb.ccc/ddd」から始まる文字列に合致する正規表現が設定され、このパターンに関連付けて、特定の通信ポート１３０ｘを介して送出するべき旨の処理指示情報が設定されているものとする。
【００３６】
この例においてヘッダ部に宛先ＩＰアドレスとして「ppp.qqq.rrr.sss」が含まれ、ペイロード部に「GET http://aaa.bbb.ccc/ddd HTTP/1.1」なる文字列が含まれているパケットデータＰ１が、通信ポート１３０ａに到来したとする。このパケットデータＰ１を受け入れた情報伝送装置の制御部１１は、分類部２２としての動作を開始する。すなわち制御部１１は、図６に例示するように、通信フローデータベースを参照し、このパケットデータのヘッダ部に含まれる情報（ここでは例えば宛先ＩＰアドレス）に対し、処理指示情報を関連付けた組が保持されているか否かを調べる（Ｓ１）。
【００３７】
ここで保持されていない（Noである）と判断すると、制御部１１は、判断部２３としての動作を開始する。当初は、このパケットデータＰ１のヘッダ部に含まれる宛先ＩＰアドレスに対し、処理指示情報を関連付けた組は、通信フローデータベースに保持されていないので、制御部１１は判断部２３としての動作を行うこととなる。
【００３８】
制御部１１は、判断部２３としての動作として、受け入れたパケットデータのペイロード部の少なくとも一部を含んで設定される比較範囲に、記憶部１２のパターンデータベースに記憶されている、予め定められたパターンに合致する情報（ここでの例では文字列）が含まれるか否かを判断する（Ｓ２）。ここでの動作例では比較範囲は予め、パケットデータの先頭からαビット目からβビット長の部分などとして定められているものとし、具体的にはペイロード部そのものを表すものとする。ここでこの比較範囲にいずれかのパターンが含まれていれば（Yesならば）、制御部１１は、当該含まれていたパターンに関連付けて記憶部１２に記憶されている処理指示情報を読み出して（Ｓ３）、処理部２４としての動作を開始する。
【００３９】
ここではパケットデータＰ１のペイロード部（ここでの例で比較範囲に相当する）に「GET http://aaa.bbb.ccc/ddd HTTP/1.1」なる文字列が含まれているものとしているので、パターンデータベースに含まれるパターンの一つ、「GET http://aaa.bbb.ccc/ddd」から始まる文字列に合致する正規表現に合致することとなる。従って制御部１１は、このパターンに関連付けられた、「通信ポート１３０ｘを介して送出する」ことを表す処理指示情報を読み出す。
【００４０】
制御部１１は、処理部２４の動作として、当該パケットデータのヘッダ部に含まれる、送信元ＭＡＣアドレスを取得し、パケットデータを受け入れた通信ポート１３０ａを特定する情報に関連付けて記憶部１２に保持する（ラーニング）とともに、処理Ｓ３で読み出した処理指示情報によって特定される処理を実行する（Ｓ４）。ここでは読み出した処理指示情報が、通信ポート１３０ｘを介してパケットデータを送出する処理を表すものであるので、制御部１１は、受け入れたパケットデータＰ１を通信ポート１３０ｘを介して送出する。
【００４１】
さらに制御部１１は、処理対象となったパケットデータのヘッダ部に含まれる情報と、実行された処理内容を特定する処理指示情報とを関連付けて、記憶部１２の通信フローデータベースに追記する（Ｓ５）。ここでは制御部１１は、例えば、パケットデータＰ１のヘッダ部に含まれる宛先ＩＰアドレス「ppp.qqq.rrr.sss」と、実行した処理指示情報「通信ポート１３０ｘを介して送出する」とを関連付けて記憶部１２の通信フローデータベースに追記することとする。制御部１１は、そして処理Ｓ１に戻って処理を続ける。
【００４２】
また、処理Ｓ１においてパケットデータのヘッダ部に含まれる情報（ここでは例えば宛先ＩＰアドレス）に対し、処理指示情報を関連付けた組が保持されていた場合（Yesの場合）、制御部１１は、当該処理指示情報（ヘッダ部に含まれる情報に関連付けられている処理指示情報）を読み出して（Ｓ６）、処理部２４としての動作を開始する。すなわち制御部１１はラーニングの処理を行うとともに、処理Ｓ６で読み出した処理指示情報によって特定される処理を実行する（Ｓ７）。
【００４３】
すなわち制御部１１が、パケットデータＰ１についての上記処理後に、通信ポート１３０ａを介して、ヘッダ部に宛先ＩＰアドレスとして「ppp.qqq.rrr.sss」が含まれるパケットデータＰ２が受信したとする。この場合、パケットデータＰ２の受信時には、先にパケットデータＰ１に対する処理で実行した処理Ｓ５において通信フローデータベースに追記されたところにより、この宛先ＩＰアドレスに対して「通信ポート１３０ｘを介して送出する」べき旨を表す処理指示情報が関連付けられて保持されている。そこで制御部１１は、処理Ｓ１においてパケットデータのヘッダ部に含まれる宛先ＩＰアドレスに対し、処理指示情報を関連付けた組が保持されていたと判断して、対応する当該処理指示情報、「通信ポート１３０ｘを介して送出する」を読み出す。そして処理Ｓ７にて、受け入れたパケットデータＰ２を通信ポート１３０ｘを介して送出する。制御部１１は、そして処理Ｓ１に戻って処理を続ける。
【００４４】
さらに制御部１１は、処理Ｓ２において、受け入れたパケットデータのペイロード部の少なくとも一部を含んで設定される比較範囲（ここではペイロード部そのものとしている）に、記憶部１２のパターンデータベースに記憶されている、予め定められたパターンが含まれていないと判断すると（Noであると）、処理部２４としての動作を開始する。この場合制御部１１は、一般的なスイッチとしての動作を行い（Ｓ８）、ラーニングの処理を行うとともに、受け入れたパケットデータのヘッダ部を参照し、当該ヘッダ部に含まれる宛先ＭＡＣアドレスが関連付けられた通信ポート１３０を介して当該パケットデータを送出する（フォワーディング）。また制御部１１は、入力されたパケットデータのヘッダ部に含まれる宛先ＭＡＣアドレスがどの通信ポート１３０にも関連付けられて記憶されていない場合、すべての通信ポート１３０を介して当該パケットデータを送出する（フラッディング）。そのほか、フィルタリング、エージングといった一般的なスイッチとしての動作を行う。なお、エージングの処理など、処理指示情報による処理と矛盾しない処理については、処理指示情報に従って処理を行う、処理Ｓ４，処理Ｓ７においても実行してもよい。
【００４５】
また本実施の形態の一例では、制御部１１は、処理Ｓ４または処理Ｓ７において、受け入れたパケットデータのヘッダ部に含まれる、例えばＴＣＰ（Transmission Control Protocol）ヘッダのフラグを参照し、FINフラグが立っている場合など、一連の通信（例えばＴＣＰセッション）が終了したことを検出したときには、そのパケットデータの宛先ＩＰアドレス等、ヘッダ部に含まれる情報と、当該情報に関連付けられている処理指示情報とを、通信フローデータベースから削除することとしてもよい。
なおこのようにＴＣＰセッションの終了のタイミングで通信フローデータベースからの情報の削除を行う場合、図６の処理Ｓ７等、通信フローデータベースに格納されている処理指示情報を利用したときに、そのとき処理の対象としていたパケットデータの送信元を表す情報を、当該利用した処理指示情報に関連付けて記録し（既に記録されている場合は記録しない）、このＴＣＰセッションの終了のタイミングにおいて当該ＴＣＰセッションの終了を表すフラグを含んだパケットデータの送信元を表す情報を、通信フローデータベースに格納された情報のうちから削除し、パケットデータの送信元を表す情報が一つも関連付けられていない処理指示情報（及びそれに関連付けられたヘッダに含まれるデータ）が通信フローデータベースにある場合に、当該処理指示情報（及びそれに関連付けられたヘッダに含まれるデータ）を削除するようにしてもよい。
【００４６】
さらにＴＣＰセッションが終了したことを検出した場合以外であっても、制御部１１は、保持から一定の時間が経過した等の条件により、ヘッダ部に含まれる情報と、当該情報に関連付けられている処理指示情報とを、通信フローデータベースから削除することとしてもよい。この場合は、ヘッダ部に含まれる情報と、当該情報に関連付けられている処理指示情報とを、通信フローデータベースに追記する際に、図示しない計時部から日時情報を取得し、当該日時情報を併せて保持させておけばよい。制御部１１はこの計時部が計時する日時を表す処理の時点の日時情報と、保持されている日時情報とを比較して、その差が予め定めたしきい値を超える日時情報とともに保持されているエントリー（ヘッダ部に含まれる情報と、当該情報に関連付けられている処理指示情報との組）を通信フローデータベースから削除する。
【００４７】
また図６の処理に代えて、制御部１１は図７に例示するように、一連の通信（ＴＣＰセッション等）の開始時に通信フローデータベースへの登録をするか否かを判断する処理を行うようにしてもよい。
なお以下の例でも、記憶部１２のパターンデータベースに、パターン（Ａ）として「GET http://aaa.bbb.ccc/ddd」から始まる文字列に合致する正規表現が設定され、このパターンに関連付けて、特定の通信ポート１３０ｘを介して送出するべき旨の処理指示情報が設定されているものとする。また、この例においてはヘッダ部に宛先ＩＰアドレスとして「ppp.qqq.rrr.sss」が含まれ、SYNフラグが立っているパケットデータが送出され、その後、同じ送信元からヘッダ部に宛先ＩＰアドレスとして「ppp.qqq.rrr.sss」が含まれ、ACKフラグが立っているパケットデータが送出され、さらにその後、ヘッダ部に宛先ＩＰアドレスとして「ppp.qqq.rrr.sss」が含まれ、ペイロード部の少なくとも一部を含んで設定される比較範囲に「GET http://aaa.bbb.ccc/ddd HTTP/1.1」なる文字列が含まれているパケットデータＰ１（処理の対象となる）が、通信ポート１３０ａに到来したとする。
【００４８】
図７の処理では制御部１１は、パケットデータを受け入れると、当該パケットデータがＴＣＰセッションの開始までに送受されるパケットデータ（SYNフラグが立っている、あるいはSYNフラグが立っているパケットデータの後、同じ送信元から到来したACKフラグの立っているパケットデータ）であるか否かを判断する（Ｓ１１）。
【００４９】
ここで受け入れたパケットデータがＴＣＰセッションの開始を表すパケットデータであると判断すると（Yesであると）、制御部１１は、当該送信元を特定する情報（送信元ＭＡＣアドレス等）を、当該送信元から到来する次のパケットデータが処理対象パケットであることとして記憶部１２に記憶する（Ｓ１２）。
【００５０】
そして制御部１１は、通信フローデータベースを参照し、このパケットデータのヘッダ部に含まれる情報（ここでは例えば宛先ＩＰアドレス）に対し、処理指示情報を関連付けた組が保持されているか否かを調べる（Ｓ１３）。ここで保持されていない（Noである）と判断すると、制御部１１は、一般的なスイッチとしての動作を行い（Ｓ１４）、次のパケットデータが受信されると処理Ｓ１１に戻って処理を続ける。
【００５１】
また処理Ｓ１３において、パケットデータのヘッダ部に含まれる情報（ここでは例えば宛先ＩＰアドレス）に対し、処理指示情報を関連付けた組が保持されていた場合（Yesの場合）、制御部１１は、当該処理指示情報（ヘッダ部に含まれる情報に関連付けられている処理指示情報）を読み出して（Ｓ１５）、処理部２４としての動作を開始する。すなわち制御部１１はラーニングの処理を行うとともに、処理Ｓ１５で読み出した処理指示情報によって特定される処理を実行し（Ｓ１６）、処理Ｓ１１に戻って処理を続ける。
【００５２】
また制御部１２は、処理Ｓ１１において、受け入れたパケットデータがＴＣＰセッションの開始を表すパケットデータでないと判断すると（Noであると）、当該パケットデータから、その送信元を特定する情報を参照し、当該情報が、送信元から到来する次のパケットデータが処理対象パケットであることを表すものとして記憶されているか否かを調べる（Ｓ１７）。
【００５３】
ここで当該送信元から到来する次のパケットデータが処理対象パケットであることとして記憶されていれば（Yesならば）、つまり到来したパケットデータがパケットデータＰ１であれば）、制御部１１は、当該送信元から到来する次のパケットデータが処理対象パケットであることであることを表す情報を記憶部１２から削除し、分類部２２としての動作を開始する。すなわち制御部１１は、通信フローデータベースを参照し、このパケットデータのヘッダ部に含まれる情報（ここでは例えば宛先ＩＰアドレス）に対し、処理指示情報を関連付けた組が保持されているか否かを調べる（Ｓ１８）。
【００５４】
ここで保持されていない（Noである）と判断すると、制御部１１は、判断部２３としての動作を開始する。すなわち制御部１１は、判断部２３としての動作として、受け入れたパケットデータの比較範囲に、記憶部１２のパターンデータベースに記憶されている、予め定められたパターンに合致する情報（ここでの例では文字列）が含まれるか否かを判断する（Ｓ１９）。ここで当該パターンが含まれていれば（Yesならば）、制御部１１は、当該含まれていたパターンに関連付けて記憶部１２に記憶されている処理指示情報を読み出して（Ｓ２０）、処理部２４としての動作を開始する。
【００５５】
ここではパケットデータＰ１の比較範囲に「GET http://aaa.bbb.ccc/ddd HTTP/1.1」なる文字列が含まれているものとしているので、パターンデータベースに含まれるパターンの一つ、「GET http://aaa.bbb.ccc/ddd」から始まる文字列に合致する正規表現に合致することとなる。従って制御部１１は、このパターンに関連付けられた、「通信ポート１３０ｘを介して送出する」ことを表す処理指示情報を読み出す。
【００５６】
制御部１１は、処理部２４の動作として、当該パケットデータのヘッダ部に含まれる、送信元ＭＡＣアドレスを取得し、パケットデータを受け入れた通信ポート１３０ａを特定する情報に関連付けて記憶部１２に保持する（ラーニング）とともに、処理Ｓ２０で読み出した処理指示情報によって特定される処理を実行する（Ｓ２１）。ここでは読み出した処理指示情報が、通信ポート１３０ｘを介してパケットデータを送出する処理を表すものであるので、制御部１１は、受け入れたパケットデータＰ１を、通信ポート１３０ｘを介して送出する。
【００５７】
さらに制御部１１は、処理対象となったパケットデータのヘッダ部に含まれる情報と、実行された処理内容を特定する処理指示情報とを関連付けて、記憶部１２の通信フローデータベースに追記する（Ｓ２２）。ここでは制御部１１は、例えば、パケットデータＰ１のヘッダ部に含まれる宛先ＩＰアドレス「ppp.qqq.rrr.sss」と、実行した処理指示情報「通信ポート１３０ｘを介して送出する」とを関連付けて記憶部１２の通信フローデータベースに追記することとする。このとき、通信フローデータベースの当該、処理指示情報にはさらに、参照数を表す情報として「１」を設定してもよい。制御部１１は、そして処理Ｓ１１に戻って処理を続ける。
【００５８】
また、処理Ｓ１８においてパケットデータのヘッダ部に含まれる情報（ここでは例えば宛先ＩＰアドレス）に対し、処理指示情報を関連付けた組が保持されていた場合（Yesの場合）、また、制御部１１は当該処理指示情報（ヘッダ部に含まれる情報に関連付けられている処理指示情報）を読み出し（Ｓ２３）、処理部２４としての動作を開始する。このとき制御部１１は、当該処理指示情報（ヘッダ部に含まれる情報に関連付けられている処理指示情報）に関連付けられた参照数があれば当該参照数の情報を「１」だけインクリメントして参照数の情報を更新してもよい。
【００５９】
制御部１１は、処理部２４として動作してラーニングの処理を行うとともに、処理Ｓ２３で読み出した処理指示情報によって特定される処理を実行する（Ｓ２４）。
すなわち通信フローデータベースに、この宛先ＩＰアドレスに対して「通信ポート１３０ｘを介して送出する」べき旨を表す処理指示情報が関連付けられて保持されているときには、当該処理指示情報、「通信ポート１３０ｘを介して送出する」を読み出し、受け入れたパケットデータを通信ポート１３０ｘを介して送出する。制御部１１は、そして処理Ｓ１１に戻って処理を続ける。
【００６０】
さらに制御部１１は、処理Ｓ１９において、受け入れたパケットデータの比較範囲に、記憶部１２のパターンデータベースに記憶されている、予め定められたパターンのいずれも含まれていないと判断すると（Noであると）、制御部１１は処理Ｓ１４に移行して処理を続ける。この場合制御部１１は、一般的なスイッチとして、ラーニングの処理を行うとともに、受け入れたパケットデータのヘッダ部を参照し、当該ヘッダ部に含まれる宛先ＭＡＣアドレスが関連付けられた通信ポート１３０を介して当該パケットデータを送出する（フォワーディング）。また制御部１１は、入力されたパケットデータのヘッダ部に含まれる宛先ＭＡＣアドレスがどの通信ポート１３０にも関連付けられて記憶されていない場合、すべての通信ポート１３０を介して当該パケットデータを送出する（フラッディング）。そのほか、フィルタリング、エージングといった一般的なスイッチとしての動作を行う。なお、エージングの処理など、処理指示情報による処理と矛盾しない処理については、処理指示情報に従って処理を行う、処理Ｓ１６，処理Ｓ２１，処理Ｓ２４においても実行してもよい。
【００６１】
制御部１１は、また、処理Ｓ１７にて、受け入れたパケットデータの送信元から到来する次のパケットデータが処理対象パケットであることとして記憶されていない場合は（Noならば）、処理Ｓ１３に移行して処理を続ける。
【００６２】
また、この処理において制御部１１は、処理Ｓ１６，処理Ｓ２１，処理Ｓ２４において、受け入れたパケットデータのヘッダ部に含まれる、例えばＴＣＰヘッダのフラグを参照し、FINフラグが立っている場合など、ＴＣＰセッションが終了したことを検出したときには、そのパケットデータの宛先ＩＰアドレス等、ヘッダ部に含まれる情報を参照し、当該参照した情報に関連付けられている当該処理指示情報と、参照数の情報とを、通信フローデータベースから読み出す。そしてこの参照数の情報を「１」だけデクリメントし、参照数の情報が「０」となったならば、当該互いに関連付けられている、パケットデータの宛先ＩＰアドレス等（ヘッダ部に含まれる情報）と、当該処理指示情報と、参照数の情報とを削除することとしてもよい。
【００６３】
さらにこの例においても、ＴＣＰセッションが終了したことを検出した場合以外であっても、制御部１１は、保持から一定の時間が経過した等の条件により、ヘッダ部に含まれる情報と、当該情報に関連付けられている処理指示情報とを、通信フローデータベースから削除することとしてもよい。このための具体的処理方法は既に述べたので繰返しての説明を省略する。
【００６４】
またこれら図６，図７の処理Ｓ８，Ｓ１４において制御部１１は、一般的なスイッチとしての処理を行うこととしたが、これに代えてOpenFlowにおけるのと同様に、外部のコントローラ等から与えられた指示に従ってパケットデータを処理してもよい。
さらに本実施の形態のここまでの説明においては、制御部１１は、ペイロード部の少なくとも一部を含んで設定される比較範囲に、予め定められたいずれかのパターンを含むパケットデータが受信されたときに、当該含まれていたパターンに関連付けて記憶されている処理指示情報に従った処理を直ちに実行することとしていたが、本実施の形態はこれに限られない。
【００６５】
本実施の形態の別の例では、制御部１１の判断部２３は、パケットデータが入力されると、当該パケットデータを記憶部１２に蓄積するとともに、当該パケットデータのペイロード部の少なくとも一部を含んで設定される比較範囲に、記憶部１２に記憶されている、予め定められたパターンのいずれかに合致する文字列が含まれるか否かを判断する。そして判断部２３は、蓄積した各パケットデータの各比較範囲を参照し、記憶部１２に格納されている予め定められたパターンごとに、各パターンがそれぞれの比較範囲に含まれているパケットデータの数をカウントする。判断部２３は、このカウントしたパケットデータの数を用いた統計情報に基づき、蓄積しているパケットデータについて、記憶部１２に記憶された処理指示情報に基づく処理を行うか否かを判断する。
【００６６】
具体的に、記憶部１２のパターンデータベースに例えば、比較範囲（例えばペイロード部そのもの）のデータと比較されるパターンとして（１）「GET http://aaa.bbb.ccc/ddd」から始まる文字列に合致する正規表現と、（２）「CONNECT http://aaa.bbb.ccc」から始まる文字列に合致する正規表現とが含まれるものとし、（１）「GET http://aaa.bbb.ccc/ddd」から始まる文字列に合致する正規表現に処理指示情報「通信ポート１３０ｘを介して送出する」が関連付けられ、（２）「CONNECT http://aaa.bbb.ccc」から始まる文字列に合致する正規表現に処理指示情報「通信ポート１３０ｙを介して送出する」が関連付けられているものとする。
【００６７】
この例では判断部２３は、入力され、蓄積したｎ個（ｎは２以上の整数）の各パケットデータの比較範囲にこれらのパターンに合致する文字列が含まれるか否かを調べる。そしてパターンごとに、当該パターンに合致する文字列を比較範囲に含むと判断されるパケットデータの数をカウントする。
【００６８】
判断部２３は、当該判断結果の統計演算結果の一例として、上記カウントが最大値となったパターンを注目パターンとして（なお、最大値となったパターンが複数ある場合は、いずれかを選択する。この選択の方法は例えばパターンデータベースに登録されている順に基づいてもよいし、予め優先順位を定めておき、当該優先順位が最大のものを選択することとしてもよい）、注目パターンに関連付けてパターンデータベースに記憶されている処理指示情報を読み出す。
【００６９】
上記の例を用いれば、判断部２３が蓄積したパケットデータのうち、比較範囲に（１）「GET http://aaa.bbb.ccc/ddd」から始まる文字列が含まれるものが３つあり、また、比較範囲に（２）「CONNECT http://aaa.bbb.ccc」から始まる文字列が含まれるものが１つあったとすると、判断部２３は、（１）「GET http://aaa.bbb.ccc/ddd」から始まる文字列に合致する正規表現を注目パターンとし、この注目パターンに関連付けられている、「通信ポート１３０ｘを介して送出する」旨の処理指示情報を読み出すことになる。
【００７０】
判断部２３は、処理指示情報を読み出すと、蓄積しているパケットデータと、読み出した処理指示情報とを処理部２４に出力する。これにより処理部２４が、判断部２３の判断結果に基づいて、蓄積されていたパケットデータのすべてについて記憶部１２に記憶された処理指示情報に基づく処理を行うこととなる。
【００７１】
なお、ここでは判断部２３の判断結果の統計演算結果の一例として、各パターンに合致する情報を比較範囲に含んだパケットデータの数をカウントし、そのカウントの最大値を求めることとしていたが、本実施の形態はこれに限らず、より早い時間に入力されたパケットデータほど大きい値となるような重みを乗じてカウント値を演算し、そのカウント値が最大となっているパターンを注目パターンとしてもよい。このほか、種々の統計演算の方法が、処理の目的に合わせて採用されても構わない。
【００７２】
また図７の例においてこのような処理を実現するには、当該送信元から到来する次のパケットデータが処理対象パケットであることであることを表す情報を、処理Ｓ１７にてYesとなったときにすぐに削除せず、複数回（統計演算に必要な回数以上の回数）だけ処理Ｓ１７にてYesとなった後に記憶部１２から削除するようにすればよい。
【００７３】
さらに、ここまでの説明において、パターンデータベースは記憶部１２に格納されているものとしたが、制御部１１がアクセス可能であれば、このパターンデータベースは外部の装置に記憶されていてもよい。
また、ここまでの例の制御部１１や記憶部１２等の各構成は、ＡＳＩＣ（Application
Specific Integrated Circuit）や、ＦＰＧＡ（Field-Programmable Gate Array）等により実現されてもよい。
【００７４】
また、既に述べたように、パターンデータベースに格納されたパターンと比較される比較範囲は、必ずしも予め設定されたものでなくてもよい。例えば比較範囲は、パターンごとに個別に設定されてもよい。この場合、パターンデータベースにおいて、各パターンについて、そのパターンに合致するか否かを比較するパケットデータの比較範囲を設定する情報（パケットデータの先頭からのオフセットやデータ長等でよい）をさらに関連付けて格納しておく。制御部１１は、各パターンとの比較を行うにあたり、当該パターンに関連付けられた比較範囲を、処理の対象となったパケットデータから抽出して、当該パターンに合致するか否かを判断することとなる。さらに、この比較範囲は必ずしも連続したデータ範囲でなくてもよい。また、比較範囲は、パケットデータの種別（セッションの開始時のパケットデータ、セッション開始直後のパケットデータ、セッション終了時のパケットデータ等の別）ごとに異なる範囲として予め設定されていてもよい。
【００７５】
本実施の形態によると、ペイロード部の少なくとも一部を含んで設定される比較範囲に含まれ得る文字列等に合致するパターン（正規表現等）に基づいてパケットデータの処理を指定することができ、データの伝送制御に係る設定を容易にできる。
【符号の説明】
【００７６】
１１  制御部、１２  記憶部、１３  通信部、２１  受入部、２２  分類部、２３  判断部、２４  処理部、１３０  通信ポート。
【図１】
2015095768.tif 000003
【図２】
2015095768.tif 000004
【図３】
2015095768.tif 000005
【図４】
2015095768.tif 000006
【図５】
2015095768.tif 000007
【図６】
2015095768.tif 000008
【図７】
2015095768.tif 000009