(57)【要約】【課題】複数ベンダによるネットワーク機器が混在するネットワークにおいて、端末装置のネットワークに対する接続に関するログ情報を容易に管理および解析可能とする。【解決手段】通信処理装置は、入力されたパケットを解析し、少なくともパケットの送信元を示す送信元情報を抽出する解析部と、解析した結果に応じたルールに従った処理を実行する処理部とを備える。通信制御装置は、少なくとも、入力されたパケットから抽出された送信元情報が未知の送信元を示す場合に、パケットと、パケットが入力された旨を示す通知とを通信制御装置に送信する処理を実行する第１のルールを処理部に設定する制御部と、通信処理装置から通知に伴い受け取ったパケットから送信元情報を抽出する抽出部と、少なくとも、送信元情報と、送信元情報を受け取った時間に対応する時間情報とを記憶部に記憶する記憶制御部とを備える。【選択図】図９
2018061219.tif 000002
【特許請求の範囲】
【請求項１】
通信制御装置と通信処理装置とを含む通信システムであって、
前記通信処理装置は、
入力されたパケットを解析し、少なくとも該パケットの送信元を示す送信元情報を抽出する解析部と、
前記解析した結果に応じたルールに従った処理を実行する処理部と
を備え、
前記通信制御装置は、
少なくとも、入力された前記パケットから抽出された前記送信元情報が未知の送信元を示す場合に、該パケットと、該パケットが入力された旨を示す通知とを前記通信制御装置に送信する処理を実行する第１のルールを前記処理部に設定する制御部と、
前記通信処理装置から前記通知に伴い受け取った前記パケットから前記送信元情報を抽出する抽出部と、
少なくとも、前記送信元情報と、該送信元情報を受け取った時間に対応する時間情報とを記憶部に記憶する記憶制御部と
を備える
通信システム。
【請求項２】
前記制御部は、前記通知を受け取った場合に、
前記解析部が抽出した前記送信元情報を含むパケットが入力された場合に該送信元情報を含むパケットの入力を示す通知を前記通信制御装置に一定時間送信しない第２のルールを、前記処理部に前記第１のルールに追加して設定し、
前記処理部は、
前記第２のルールが前記解析部に設定された時間を開始時間として計時を行い、該開始時間から前記一定時間が経過した場合に前記第２のルールを削除する
請求項１に記載の通信システム。
【請求項３】
前記送信元情報は、前記パケットの送信元の装置に固有の識別情報である
請求項１または請求項２に記載の通信システム。
【請求項４】
前記送信元情報は、前記パケットの送信元の装置が前記通信処理装置に該パケットを送信するネットワーク上での該装置の位置を示す位置情報である
請求項１または請求項２に記載の通信システム。
【請求項５】
前記解析部、前記処理部、前記制御部および前記抽出部は、ＯｐｅｎＦｌｏｗ（登録商標）プロトコルに従い構成される
請求項１乃至請求項４の何れか１項に記載の通信システム。
【請求項６】
入力されたパケットを解析し、少なくとも該パケットの送信元を示す送信元情報を抽出する解析部と、前記解析した結果に応じたルールに従った処理を実行する処理部とを備える通信処理装置に前記ルールを設定する通信制御装置であって、
少なくとも、前記通信処理装置に入力された前記パケットから抽出された前記送信元情報が未知の送信元を示す場合に、該パケットと、該パケットが入力された旨を示す通知とを前記通信制御装置に送信する処理を実行する第１のルールを前記処理部に設定する制御部と、
前記通信処理装置から前記通知に伴い受け取った前記パケットから前記送信元情報を抽出する抽出部と、
少なくとも、前記送信元情報と、該送信元情報を受け取った時間に対応する時間情報とを記憶部に記憶する記憶制御部と
を備える
通信制御装置。
【請求項７】
入力されたパケットを解析し、少なくとも該パケットの送信元を示す送信元情報を抽出する解析部と、前記解析した結果に応じたルールに従った処理を実行する処理部とを備える通信処理装置に前記ルールを設定する通信制御装置に搭載されるコンピュータに実行させるための通信制御プログラムであって、
少なくとも、前記解析部により入力された前記パケットから抽出された前記送信元情報が未知の送信元を示す場合に、該パケットと、該パケットが入力された旨を示す通知とを前記通信制御装置に送信する処理を実行する第１のルールを前記処理部に設定する制御ステップと、
前記通信処理装置から前記通知に伴い受け取った前記パケットから前記送信元情報を抽出する抽出ステップと、
少なくとも、前記送信元情報と、該送信元情報を受け取った時間に対応する時間情報とを記憶部に記憶する記憶制御ステップと
をコンピュータに実行させるための通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、通信制御装置および通信制御プログラムに関する。
【背景技術】
【０００２】
近年では、企業など組織体においては、組織体内で有線および無線通信によるＬＡＮ(Local  Area  Network)を構築し（組織内ＬＡＮと呼ぶ）、組織体内で使用する各情報処理機器を組織内ＬＡＮを介して互いに接続可能とすることが一般的に行われている。また、ネットワークを構成するスイッチ、アクセスポイント、ルータなどにパケットやフレームを通過、処理させたログや、システムのログをサーバに集約し、アクセス解析や障害解析を行う技術が知られている。
【０００３】
特許文献１は、各ネットワーク機器より出力されたアクセスログ情報をリアルタイムでアクセスログ収集サーバに送信し、アクセスログデータベースに格納するようにした、大規模ネットワークシステムのログ収集方法が開示されている。特許文献１によれば、ネットワーク機器におけるアクセスログを、ネットワークを介して収集することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、一般的なネットワーク機器は、ログの確認方法、収集方法、収集するデータや形式などは、ベンダ依存であり、複数のベンダの機器が混在するネットワークにおいては、システム全体としてのログの管理や解析が困難であるという問題点があった。また、特許文献１によれば、ネットワーク機器のアクセスログをネットワークを介して収集可能としているが、複数のベンダが混在するネットワークにおいて収集したアクセスログの管理、解析が困難であるという問題は、解消できていない。
【０００５】
本発明は、上記に鑑みてなされたものであって、複数ベンダによるネットワーク機器が混在するネットワークにおいて、端末装置のネットワークに対する接続に関するログ情報を容易に管理および解析可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、通信制御装置と通信処理装置とを含む通信システムであって、通信処理装置は、入力されたパケットを解析し、少なくともパケットの送信元を示す送信元情報を抽出する解析部と、解析した結果に応じたルールに従った処理を実行する処理部とを備え、通信制御装置は、少なくとも、入力されたパケットから抽出された送信元情報が未知の送信元を示す場合に、パケットと、パケットが入力された旨を示す通知とを通信制御装置に送信する処理を実行する第１のルールを処理部に設定する制御部と、通信処理装置から通知に伴い受け取ったパケットから送信元情報を抽出する抽出部と、少なくとも、送信元情報と、送信元情報を受け取った時間に対応する時間情報とを記憶部に記憶する記憶制御部とを備える。
【発明の効果】
【０００７】
本発明によれば、複数ベンダによるネットワーク機器が混在するネットワークにおいて、端末装置のネットワークに対する接続に関するログ情報の管理および解析が容易となるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に適用可能な、ＯｐｅｎＦｌｏｗに基づく構成の例を概略的に示すブロック図である。
【図２】図２は、実施形態に適用可能な通信システムの一例の構成を示すブロック図である。
【図３】図３は、実施形態に適用可能な、ＯＦＳを含むＯＦ機器の一例の構成を概念的に示すブロック図である。
【図４】図４は、実施形態に適用可能な、ＯＦＳがデータパケットを受け取った場合の処理を示すフローチャートである。
【図５】図５は、実施形態に係る通信制御装置の一例のハードウェア構成を示すブロック図である。
【図６】図６は、実施形態に係る通信制御装置の機能を説明するための一例の機能ブロック図である。
【図７】図７は、実施形態に適用可能なＯＦ機器の一例のハードウェア構成を示すブロック図である。
【図８】図８は、実施形態に係るＯＦ機器の機能を説明するための一例の機能ブロック図である。
【図９】図９は、実施形態に係る処理の具体的な例を示す一例のシーケンス図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、通信システム、通信制御装置および通信制御プログラムの実施形態を詳細に説明する。
【００１０】
（実施形態に適用可能な技術）
実施形態の説明に先立って、理解容易とするために、実施形態に適用可能な技術概念として、ＳＤＮ(Software-Defined  Network)について概略的に説明する。
【００１１】
従来、組織体内で閉じた構成の組織内ＬＡＮ(Local  Area  Network)などのネットワーク環境は、各ベンダが提供するＬＡＮスイッチや無線ＬＡＮアクセスポイントの設定・運用を熟知した専任の担当者が構築するのが一般的であった。このようなネットワーク環境は、ベンダのソリューションによる認証手段や運用方法しか提供されない、所謂「ベンダロックイン」の状態であり、組織体が自在に認証手段や運用方法を設定することが困難であった。
【００１２】
これに対して、近年では、ユーザである組織体が独自のネットワークを構築できるようにするため、ネットワーク上のデータの動きをソフトウェアだけで制御可能とするＳＤＮと呼ばれる概念が注目されている。このＳＤＮに関連して、注目を集めている代表的な構成技術要素として「ネットワークの仮想化」と、その仮想化されたネットワーク上での通信を制御する手法（プロトコル）の一つでありベンダに依存しないオープンな仕様である「オープンフロー（ＯｐｅｎＦｌｏｗ）」とがある。
【００１３】
ネットワークの仮想化は、例えば、一つの物理インタフェースを複数に（若しくは複数の物理インタフェースを一つに）見せるような仮想インタフェース技術や、仮想インタフェースを接続中継する仮想スイッチ技術などに至る、複数の構成要素を含む技術の集合体である。ネットワーク仮想化は、物理ネットワーク機器と仮想ネットワーク部品、プロトコル技術の組合せによって、物理的なネットワーク構成から論理的なネットワーク構成を仮想的に分離し、物理構成に縛られない柔軟なネットワーク構成を実現する。
【００１４】
ＯｐｅｎＦｌｏｗ（登録商標）は、通信をエンド・ツー・エンドのフローとして捉えて、そのフロー単位に経路制御、負荷分散、最適化などを行うことができる。具体的には、ＯｐｅｎＦｌｏｗは、データ通信経路の中継機器などにおいて自立分散的に各データパケットを解析して転送するのではなく、集中制御型に変えることで実現する。
【００１５】
図１は、実施形態に適用可能な、ＯｐｅｎＦｌｏｗに基づく構成の例を概略的に示す。ＯｐｅｎＦｌｏｗでは、データの解析と転送先判断および決定制御とを行う「コントロール・プレーン」と、単なるパケットの物理的な伝送を担う部分である「データ・プレーン」とを分離する。ＯｐｅｎＦｌｏｗでは、コントロール・プレーンを司るＯＦＣ（ＯｐｅｎＦｌｏｗコントローラ）１００が転送ルールを指示し、データ・プレーンを担うＯＦＳ（ＯｐｅｎＦｌｏｗスイッチ）２００は、ＯＦＣ１００の指示に従ってパケットの転送を行う。より具体的には、ＯＦＳ２００は、ＯＦＣ１００が追加および書き換えを行う、ＯＦＳ２００が持つフローテーブルが有するフローエントリに従って、パケットの転送を行う。
【００１６】
ＯＦＳ２００は、パケットのヘッダの情報に基づきパケットを識別する。ヘッダは、「受信ポート」、「送信元ＭＡＣ(Media  Access  Control)アドレス」、「宛先ＭＡＣアドレス」、「プロトコル種別」、「ＶＬＡＮ(Virtual  Local  Area  Network)  ＩＤ」、「ＶＬＡＮ  ＰＣＰ(VLAN  Priority  Code  Point)値」、「送信元ＩＰアドレス」、「宛先ＩＰアドレス」、「プロトコル番号」、「ＴｏＳ(Type  of  Service)値」、「送信元ポート番号」および「宛先ポート番号」の、１２種類のヘッダフィールドを含む。識別に使用しないヘッダフィールドには、ワイルドカードを指定することで、任意のヘッダフィールドを識別条件として用いることができる。
【００１７】
ＯＦＣ１００は、ＯＦＳ２００と接続され、ＯＦＣ１００とＯＦＳ２００との間にＯｐｅｎＦｌｏｗ（ＯＦ）チャネルと呼ばれる通信経路が確立されると、フローテーブルおよびフローエントリをＯＦＳ２００に転送する。ＯＦＳ２００は、ＯＦチャネル確立後、Modify-Stateメッセージに伴いＯＦＣ１００から転送されたフローテーブルおよびフローエントリを、初期設定のフローテーブルおよびフローエントリとして、メモリに記憶させる。
【００１８】
ここで、ＯｐｅｎＦｌｏｗにおいては、同じルールを持つ通信の集合体を「フロー」と呼ぶ。例えば、宛先ＩＰアドレスが同一のＩＰアドレスであり、且つ、各々同一の処理がなされる一連のパケットの通信は、１つのフローを構成する。ＯＦＣ１００は、ユーザにより定義されたフローをＯＦＳ２００に指示する。ＯＦＳ２００は、指示されたフローをフローエントリとして、フローテーブルに登録する。フローエントリは、パケットを判別する条件（マッチ）と、条件に従い判別されたパケットを受信した場合の動作（インストラクション）との組み合わせを含む。フローテーブルは、０以上のフローエントリが登録される。すなわち、ＯＦＳ２００の初期状態では、フローテーブルにはフローエントリが含まれない。
【００１９】
このような仕組みを用いることで、上述したネットワークの仮想化を制御するためのツールなどとしてＯｐｅｎＦｌｏｗを活用できる。
【００２０】
（実施形態）
次に、実施形態について説明する。図２は、実施形態に適用可能な通信システム１の一例の構成を示す。図２の例では、通信システム１は、ＯＦＣ１００の機能を含む通信制御装置１０と、通信制御装置１０に対してネットワーク１１を介して接続される有線ＳＷ２０ａおよび無線ＡＰ２０ｂと、ログＤＢ（データベース）７０とを含む。
【００２１】
有線ＳＷ２０ａは、例えば端末装置とネットワーク１１との有線による接続を仲介する。また、無線ＡＰ２０ｂは、例えば端末装置とネットワーク１１とを無線ＬＡＮにより接続するための無線ＡＰ（アクセスポイント）である。有線ＳＷ２０ａおよび無線ＡＰ２０ｂは、それぞれＯＦＳ２００を含む。通信システム１は、有線ＳＷ２０ａおよび無線ＡＰ２０ｂは、何れか一方のみを含んでもよいし、それぞれさらに多数を含んでもよい。
【００２２】
有線ＳＷ２０ａは、パーソナルコンピュータ（ＰＣ）３０がケーブル１２により接続される。また、無線ＡＰ２０ｂは、スマートデバイス３１が無線通信により接続される。この例では、これらＰＣ３０およびスマートデバイス３１は、ＭＡＣアドレス(Media  Access  Control  address)が、それぞれ「aa:bb:cc:dd:ee:ff」および「uu:vv:ww:xx:yy:zz」とされている。なお、スマートデバイス３１は、多機能型携帯電話端末（スマートフォン）やタブレット型コンピュータといった、携帯容易で無線ＬＡＮ機能を備える情報処理装置である。
【００２３】
また、図２において、ネットワーク１１に対して、ＤＨＣＰ(Dynamic  Host  Configuration  Protocol)サーバ６０と、プリンタ５０と、機密情報サーバ５１とがさらに接続される。ネットワーク１１に対して、さらに、有線ＳＷ２０ａを介してＰＣ３０が接続され、無線ＡＰ２０ｂを介してスマートデバイス３１が接続されている。
【００２４】
ここで、ＤＨＣＰサーバ６０は、ネットワーク１１および当該ネットワーク１１に接続される各機器に対してＩＰアドレスを割り当てる。図２の例では、ＤＨＣＰサーバ６０は、ネットワーク１１に対してネットワークアドレス「192.168.1.0」を割り当て、ログＤＢ７０、プリンタ５０、機密情報サーバ５１および無線ＡＰ２０ｂに、それぞれＩＰアドレス「192.168.1.10」、「192.168.1.30」、「192.168.1.40」および「192.168.1.50」を割り当てている。また、ＤＨＣＰサーバ６０は、無線ＡＰ２０ｂを介してネットワーク１１に接続されるスマートデバイス３１に対してＩＰアドレス「192.168.1.110」を割り当て、有線ＳＷ２０ａを介して接続されるＰＣ３０に対してＩＰアドレス「192.168.1.100」を割り当てている。なお、ＤＨＣＰサーバ６０自身は、ＩＰアドレス「192.168.1.20」が割り当てられている。
【００２５】
通信制御装置１０（ＯＦＣ１００）は、ＩＰアドレス「192.168.1.1」が割り当てられる。このＯＦＣ１００のＩＰアドレス「192.168.1.1」は、例えばＯＦＣ１００に対して固定的に割り当てられる。有線ＳＷ２０ａおよび無線ＡＰ２０ｂは、このＯＦＣ１００のＩＰアドレス「192.168.1.1」が予め設定されており、ネットワーク１１と接続した際に、このＩＰアドレス「192.168.1.1」に基づき、ＯＦＣ１００との間にＯＦチャネルを確立する。
【００２６】
図３は、実施形態に適用可能な、ＯＦＳ２００を含むＯＦ（ＯｐｅｎＦｌｏｗ）機器２０の一例の構成を概念的に示す。図３に例示されるＯＦ機器２０は、上述した有線ＳＷ２０ａに対応する。上述した有線ＳＷ２０ａと無線ＡＰ２０ｂとを、有線接続および無線接続を区別しない場合に、有線ＳＷ２０ａおよび無線ＡＰ２０ｂを纏めてＯＦ機器２０と呼ぶ。
【００２７】
図３において、ＯＦ機器２０は、プロセスとして稼働するＯＦＳ２００と、物理インタフェースまたは仮想インタフェースによる第１接続部２０１ａおよび第２接続部２０１ｂ（それぞれ接続部＃１および＃２とも記載）とを含む。ＯＦＳ２００は、第１接続部２０１ａおよび第２接続部２０１ｂと論理的にポート接続され、それぞれ管理番号としてポート番号「１」(ofport=1)およびポート番号「２」(ofport=2)が割り当てられている。
【００２８】
ＯＦＳ２００は、複数のフローテーブル２１０0、２１０1、…、２１０nを含む（それぞれフローテーブル＃０、＃１、…、＃ｎとも記載）。各フローテーブル２１０0、２１０1、…、２１０nは、それぞれ０以上のフローエントリを含む。
【００２９】
図３の例では、ＯＦ機器２０において、例えば有線ＳＷ２０ａの例では、端末装置としてのＰＣ３０が第２接続部２０１ｂに接続され、ネットワーク１１が第１接続部２０１ａに接続されている。ＯＦ機器２０は、ＰＣ３０とネットワーク１１との間の通信を仲介する。また、ＯＦ機器２０は、ネットワーク１１を介してＯＦＣ１００と接続されている。ＯＦＣ１００は、ＯｐｅｎＦｌｏｗに規定されるModify-Stateメッセージを、ネットワーク１１を介して送信し、ＯＦＳ２００が有する各フローテーブル２１０0、２１０1、…、２１０nがそれぞれ含むフローエントリを設定することができる。
【００３０】
図４は、実施形態に適用可能な、ＯＦＳ２００がデータパケットを受け取った場合の処理を示すフローチャートである。
【００３１】
ＯＦＳ２００は、例えばＰＣ３０から接続部２０１ｂを介してパケットが入力されると（ステップＳ１０）、パケットの先頭に記述されたヘッダの情報を読み込み、読み込んだヘッダ情報を解析する（ステップＳ１１）。ヘッダは、パケットの通信に適用されるプロトコル毎に付与されており、ＯＦＳ２００は、ＯＳＩ参照モデル(Open  Systems  Interconnection  reference  model)におけるトランスポート層以下のヘッダから特定の情報を抽出することができる。ＯＦＳ２００が抽出するヘッダ情報の例としては、送信元および宛先のＭＡＣ(Media  Access  Control)アドレス、ＩＰ(Internet  Protocol)アドレス、ＴＣＰ(Transmission  Control  Protocol)またはＵＤＰ(User  Datagram  Protocol)のポート番号などがある。
【００３２】
ＯＦＳ２００は、ヘッダ情報から抽出したこれらの情報を、各フローテーブル２１０0、２１０1、…、２１０nにそれぞれ含まれる各フローエントリに定義される条件と照合する。より具体的には、ＯＦＳ２００は、各フローテーブル２１０0、２１０1、…、２１０nを優先度が高い順に参照し、条件の照合が行われる（ステップＳ１２0〜ステップＳ１２n）。図３および図４の例では、フローテーブル２１０0が最も優先度が高く、フローテーブル２１０nが最も優先度が低いものとしている。
【００３３】
ＯＦＳ２００は、各フローテーブル２１０0、２１０1、…、２１０nから、入力されたパケットと条件が一致するフローエントリが検出された時点で照合を中断し（ステップＳ１２0〜ステップＳ１２nの何れかが「Ｙｅｓ」）、処理をステップＳ１３に移行させて、検出されたフローエントリに応じたインストラクションを実行する。
【００３４】
一方、ＯＦＳ２００は、各フローテーブル２１０0、２１０1、…、２１０nから、入力されたパケットと条件が一致するフローエントリが見つからなかった場合（ステップＳ１２0〜ステップＳ１２nの全てで「Ｎｏ」）、処理をステップＳ１４に移行させ、ＯＦＣ１００に、入力されたパケットを含むpacket_inメッセージを通知して、処理を問い合わせる。
【００３５】
なお、packet_inメッセージは、フローテーブル中に条件が一致するフローエントリが見つからなかった場合に、受信したパケットをＯＦＣ１００に送るために用いられるメッセージである。したがって、packet_inメッセージは、未知の送信元からのパケットの入力を通知するメッセージとして用いることができる。
【００３６】
ＯＦＳ２００は、パケットに対して、単に伝送または破棄するだけでなく、ヘッダ情報の書き換えを行うこともできる。宛先や送信元のアドレスを書き換えることで、ＮＡＴ(Network  Address  Translation)やルータのような既存ネットワーク機器と同等の機能を実現することもできるし、既存のネットワーク機器では実現が難しい、複雑であったり動的な通信制御を、用途に応じて実現することもできる。
【００３７】
図５は、実施形態に係る通信制御装置１０の一例のハードウェア構成を示す。図５において、通信制御装置１０は、ＣＰＵ(Central  Processing  Unit)１０００と、ＲＯＭ(Read  Only  Memory)１００１と、ＲＡＭ(Random  Access  Memory)１００２と、ストレージ１００３と、データＩ／Ｆ１００４と、通信Ｉ／Ｆ１００５とを含み、これらがバス１０１０により互いに通信可能に接続される。このように、実施形態に係る通信制御装置１０は、一般的なコンピュータと同様の構成により実現できる。
【００３８】
ストレージ１００３は、ハードディスクドライブや不揮発性半導体メモリ（フラッシュメモリ）により構成され、ＣＰＵ１０００が動作するための各種プログラムやデータが格納される。また、ＲＯＭ１００１は、例えば通信制御装置１０が起動、動作するために用いるプログラムやデータが予め記憶される。ＣＰＵ１０００は、ストレージ１００３やＲＯＭ１００１に格納されるプログラムに従い、ＲＡＭ１００２をワークエリアとして用いて動作し、通信制御装置１０の全体の動作を制御する。通信Ｉ／Ｆ１００４は、ＣＰＵ１０００の指示に従い、ネットワーク１１を介した通信を制御する。データＩ／Ｆ１００４は、外部の機器との間でデータの入出力を行うためのインタフェースであって、例えばＵＳＢ(Universal  Serial  Bus)を適用できる。
【００３９】
図６は、実施形態に係る通信制御装置１０の機能を説明するための一例の機能ブロック図である。図６において、通信制御装置１０は、接続部１１０と、制御部１１１と、記憶制御部１１２とを含む。これら接続部１１０、制御部１１１および記憶制御部１１２は、ＣＰＵ１０００上で動作するプログラムが動作することにより構成される。これに限らず、これら接続部１１０、制御部１１１および記憶制御部１１２を、互いに協働して動作するハードウェア回路により構成してもよい。
【００４０】
接続部１１０は、通信Ｉ／Ｆ１００５を制御してネットワーク１１に接続し、ネットワーク１１を介した通信を行う。また、接続部１１０は、ＩＰアドレス「192.168.1.1」が予め設定されている。記憶制御部１１２は、ログＤＢ７０に対する記憶および読み出しを制御する。
【００４１】
制御部１１１は、通信制御装置１０の全体の動作を制御する。制御部１１１は、図３におけるＯＦＣ１００の機能を含む。例えば、制御部１１１は、所定に定義されたフローに従い、ＯＦＳ２００が有する各フローテーブル２１０0、２１０1、…、２１０nに適用するための各フローエントリを生成する。制御部１１１は、生成した各フローエントリをＯＦ機器２０に転送する。ＯＦ機器２０は、転送された各フローエントリを、ＯＦ機器２０が有するＯＦＳ２００に含まれる各フローテーブル２１０0、２１０1、…、２１０nに書き込む。
【００４２】
通信制御装置１０における各機能を実現するための通信制御プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ(Compact  Disk)、フレキシブルディスク（ＦＤ）、ＤＶＤ(Digital  Versatile  Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供される。これに限らず、当該通信制御プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、当該ネットワークを介してダウンロードさせることにより提供してもよい。また、当該通信制御プログラムをインターネットなどのネットワークを経由して提供または配布するように構成してもよい。
【００４３】
上述のようにして提供されコンピュータに格納された通信制御プログラムは、例えば、当該コンピュータから、データＩ／Ｆ１００４を介して通信制御装置１０に供給されてストレージ１００３またはＲＯＭ１００１に記憶される。
【００４４】
当該通信制御プログラムは、上述した各部（接続部１１０、制御部１１１および記憶制御部１１２）を含むモジュール構成となっている。実際のハードウェアとしては、ＣＰＵ１０００がＲＯＭ１００１やストレージ１００３などの記憶媒体から当該通信制御プログラムを読み出して実行することにより、上述した各部がＲＡＭ１００２などの主記憶装置上にロードされ、接続部１１０、制御部１１１および記憶制御部１１２が主記憶装置上に生成されるようになっている。
【００４５】
これに限らず、例えば、接続部１１０、制御部１１１および記憶制御部１１２の基本的な機能を提供するプログラムがＲＯＭ１００１またはストレージ１００３に予め記憶され、通信制御装置１０に対して、これら接続部１１０、制御部１１１および記憶制御部１１２の動作を定義するパラメータなどを供給するようにもできる。
【００４６】
図７は、実施形態に適用可能なＯＦ機器２０の一例のハードウェア構成を示す。図７において、ＯＦ機器２０は、ＣＰＵ２０００と、ＲＯＭ２００１と、ＲＡＭ２００２と、通信Ｉ／Ｆ２００４および２００５とを含み、これらがバス２０１０により互いに通信可能に接続される。なお、これに限らず、ＲＯＭ２００１、ＲＡＭ２００２、ならびに、通信Ｉ／Ｆ２００４および２００５は、ＣＰＵ２０００に対して直接的に接続し、バス２０１０を省略してもよい。
【００４７】
ＲＯＭ２００１は、ＣＰＵ２０００が動作するために用いるプログラムやデータが予め記憶される。ＣＰＵ２０００は、ＲＯＭ２００１に格納されるプログラムに従い、ＲＡＭ２００２をワークエリアとして用いて動作し、有線ＳＷ２０ａの全体の動作を制御する。通信Ｉ／Ｆ２００４および２００５は、それぞれ上述した第１接続部２０１ａおよび第２接続部２０１ｂに対応するハードウェア回路であって、それぞれＣＰＵ２０００の指示に従い通信を制御する。図７の例では、通信Ｉ／Ｆ２００４がネットワーク１１に接続され、通信Ｉ／Ｆ２００５が端末装置（例えばＰＣ３０）に接続されることが想定されている。ＯＦ機器２０が無線ＡＰ２０ｂである場合、通信Ｉ／Ｆ２００５が無線通信に対応する構成となる。
【００４８】
図８は、実施形態に係るＯＦ機器２０の機能を説明するための一例の機能ブロック図である。なお、図８において、上述した図３と対応する部分には同一の符号を付して、詳細な説明を省略する。図８において、ＯＦ機器２０は、ＯＦＳ２００と、第１接続部２０１ａと、第２接続部２０１ｂと、タイマ２１４とを含む。また、ＯＦＳ２００は、解析部２１２と、処理部２１３と、記憶部２１５とを含む。
【００４９】
これらＯＦＳ２００、第１接続部２０１ａおよび第２接続部２０１ｂ、タイマ２１４、ならびに、ＯＦＳ２００に含まれる解析部２１２、処理部２１３および記憶部２１５は、ＣＰＵ２０００上で動作するプログラムにより構成される。これに限らず、これらＯＦＳ２００、第１接続部２０１ａおよび第２接続部２０１ｂ、タイマ２１４ならびに、ＯＦＳ２００に含まれる解析部２１２、処理部２１３および記憶部２１５の一部または全部を、互いに協働して動作するハードウェア回路により構成してもよい。
【００５０】
ＯＦＳ２００において、解析部２１２は、第１接続部２０１ａおよび第２接続部２０１ｂに入力されたパケットを解析し、ヘッダ情報を抽出する。処理部２１３は、解析部２１２の解析結果に応じて、第１接続部２０１ａおよび第２接続部２０１ｂに入力されたパケットを処理する。記憶部２１５は、処理部２１３が解析部２１２の解析結果に応じてパケットを処理する際に用いる各フローテーブル２１０0、２１０1、…、２１０nの、記憶媒体（例えばＲＡＭ２００２）に対する記憶および読み出しを実行する。タイマ２１４は、処理部２１３の指示に応じて時間を計測する。
【００５１】
（実施形態に適用可能なフローエントリ）
次に、実施形態に適用可能なフローエントリについて説明する。表１〜表３は、ＯＦＣ１００とＯＦＳ２００との間でＯＦチャネルが確立された後に初期設定を行った状態のフローテーブルの例をそれぞれ示す。この例では、ＯＦ機器２０は、３つのフローテーブル２１０0、２１０1および２１０2を含むものとする。また、以下では、各フローテーブル２１０0、２１０1および２１０2を、フローテーブルの番号を「＃ｎ（ｎは０以上の整数）」として、フローテーブル＃０、＃１および＃２として説明を行う。
【００５２】
表１は、フローテーブル＃０の例を示す。フローテーブル＃０は、３つのフローテーブル＃０〜＃２において、最初に参照される。表１において、フローテーブル＃０は、２つのフローエントリを含み、各フローエントリは、「ｍａｔｃｈ」、「ｉｎｓｔｒｕｃｔｉｏｎｓ」および「ｐｒｉｏｒｉｔｙ」の各項目を含む。
【００５３】
【表１】
2018061219.tif 000003
【００５４】
項目「ｍａｔｃｈ」は、そのフローエントリにおけるマッチングルールが記述される。項目「ｉｎｓｔｒｕｃｔｉｏｎｓ」は、入力されたフローが、そのフローエントリの項目「ｍａｔｃｈ」に記述されるマッチングルールに合致したフローであると判定された場合に、処理部２１３が当該フローに対して行う処理が記述される。なお、フローは、上述したように、同じルールを持つ通信の集合体であり、より具体的には、例えば項目「ｍａｔｃｈ」に記述されるマッチングルールに基づき判別するための条件が同一のパケットの集合である。
【００５５】
項目「ｐｒｉｏｒｉｔｙ」は、各フローエントリの優先度が記述される。この例では、優先度は、４桁の１６進数により記述され（文字列「０ｘ」により示す）値が大きいほど高く、値「０ｘ０００１」が最も低い優先度とされる。
【００５６】
表１の例では、２つのフローエントリのうち、１行目のフローエントリは、項目「ｍａｔｃｈ」に、ポート番号「１」のポート（第１接続部２０１ａに対応）が、フローが入力される入力ポート(in_port)として記述される(in_port=1)。項目「ｉｎｓｔｒｕｃｔｉｏｎｓ」は、ＯＦ機器２０が通常のＬ２／Ｌ３スイッチとして動作する処理を示す処理「ＯＦＰＰ＿ＮＯＲＭＡＬ」が記述される。また、項目「ｐｒｉｏｒｉｔｙ」は、値「０ｘＦＦＦＦ」が記述され、最も高い優先度が設定される。
【００５７】
表１の２行目のフローエントリは、項目「ｍａｔｃｈ」に、任意のポート番号のポートが、フローが入力される入力ポートとして記述される(any)。項目「ｉｎｓｔｒｕｃｔｉｏｎｓ」は、フローテーブル＃１を参照する処理が記述される。また、項目「ｐｒｉｏｒｉｔｙ」は、値「０ｘ０００１」が記述され、最も低い優先度が設定される。
【００５８】
表２は、フローテーブル＃１の例を示す。表２において、フローテーブル＃１は、１つのフローエントリを含み、フローエントリは、表１の各項目に対して、項目「ｈａｒｄ＿ｔｉｍｅｏｕｔ」が追加されて含まれる。
【００５９】
【表２】
2018061219.tif 000004
【００６０】
表２の例では、フローエントリは、項目「ｍａｔｃｈ」に、任意のポート番号のポートが、フローが入力される入力ポートとして記述される(any)。項目「ｉｎｓｔｒｕｃｔｉｏｎｓ」は、入力されたフローをＯＦＣ１００に送るためのpacket-inメッセージをＯＦＣ１００に通知する処理を示す処理「ＯＦＰＰ＿ＣＯＮＴＲＯＬＬＥＲ」が記述される。また、項目「ｐｒｉｏｒｉｔｙ」は、値「０ｘ０００１」が記述され、最も低い優先度が設定される。このフローエントリは、ＯＦＳ２００に対して第１のルールを定義する。
【００６１】
表２の例では、項目「ｈａｒｄ＿ｔｉｍｅｏｕｔ」は、空欄とされている。この項目「ｈａｒｄ＿ｔｉｍｅｏｕｔ」については、後述する。
【００６２】
表３は、フローテーブル＃２の例を示す。表３において、フローテーブル＃２は、２つのフローエントリを含み、各フローエントリは、上述の各項目「ｍａｔｃｈ」、「ｉｎｓｔｒｕｃｔｉｏｎs」および「ｐｒｉｏｒｉｔｙ」の各項目を含む。
【００６３】
【表３】
2018061219.tif 000005
【００６４】
表３の例では、２つのフローエントリのうち、１行目のフローエントリは、項目「ｍａｔｃｈ」に、宛先ＩＰアドレス(ipv4_dst)としてＩＰアドレス「192.168.1.30」が記述される。このＩＰアドレス「192.168.1.30」は、図２の例では、プリンタ５０に割り当てられている。項目「ｉｎｓｔｒｕｃｔｉｏｎｓ」は、処理「ＯＦＰＰ＿ＮＯＲＭＡＬ」が記述される。また、項目「ｐｒｉｏｒｉｔｙ」は、値「０ｘＦＦＦＦ」が記述され、最も高い優先度が設定される。
【００６５】
表３の２行目のフローエントリは、項目「ｍａｔｃｈ」に、任意のポート番号のポートが、フローが入力される入力ポートとして記述される(any)。項目「ｉｎｓｔｒｕｃｔｉｏｎｓ」は、入力されたパケットを破棄する処理(drop)が記述される。また、項目「ｐｒｉｏｒｉｔｙ」は、値「０ｘ０００１」が記述され、最も低い優先度が設定される。
【００６６】
処理部２１３は、上述した表１および表２のフローテーブル＃０および＃１に従い、下記の処理を実行する。
（１）ポート番号「１」のポート（第１接続部２０１ａ）から入力されたフローに対しては、ＯＦＳ２００は、表１の１行目のフローエントリに従い、ＯＦ機器２０を通常のＬ２／Ｌ３スイッチとして動作させる。
（２）任意に入力されたフローに対しては、ＯＦＳ２００は、表１の２行目のフローエントリに従い、フローテーブル＃１を参照して処理を実行する。この場合、２行目のフローエントリは、１行目のフローエントリに対して低い優先度が設定されているため、この２行目のフローエントリによる処理は、ポート番号「２」のポート（第２接続部２０１ｂ）から入力されたフローに対する処理となる。
（３）表１の２行目のフローエントリに従い処理が表１のフローテーブル＃０から表２のフローテーブル＃１に引き継がれる。ＯＦＳ２００は、処理が引き継がれたフローテーブル＃１における処理「ＯＦＰＰ＿ＣＯＮＴＲＯＬＬＥＲ」に従い、入力されたフロー（パケット）を含むpacket-inメッセージをＯＦＣ１００に通知する。
【００６７】
実施形態では、上述した表２のフローテーブル＃１において、packet-inメッセージがＯＦＣ１００に通知されると、ＯＦＣ１００は、Modify-StateメッセージをＯＦＳ２００に送信し、フローテーブル＃１の書き換えを通知する。表４は、packet-inメッセージの通知に応じて書き換えられたフローテーブル＃１の例を示す。
【００６８】
【表４】
2018061219.tif 000006
【００６９】
表４に示されるフローテーブル＃１は、表２に示したフローテーブル＃１に対して１行目のフローエントリを追加する書き換えが行われている。フローテーブル＃１に追加されたこのフローエントリは、ＯＦＳ２００に対して第２のルールを定義する。表４のフローテーブル＃１の２行目のフローエントリは、表２の示したフローテーブル＃１のフローエントリと同一である。
【００７０】
表４のフローテーブル＃１において、追加された１行目のフローエントリは、項目「ｍａｔｃｈ」に、送信元ＭＡＣアドレスとしてＰＣ３０のＭＡＣアドレス「aa:bb:cc:dd:ee:ff」が記述される。詳細は後述するが、このＭＡＣアドレス「aa:bb:cc:dd:ee:ff」は、書き換え前のフローテーブル＃１のフローエントリにおける処理「ＯＦＰＰ＿ＣＯＮＴＲＯＬＬＥＲ」によるpacket-inメッセージに応じてＯＦＣ１００に取得される。
【００７１】
表４のフローテーブル＃１の追加された１行目のフローエントリにおける項目「ｉｎｓｔｒｕｃｔｉｏｎｓ」は、フローテーブル＃２（フローテーブル２１０2）を参照する処理が記述される。また、項目「ｐｒｉｏｒｉｔｙ」は、値「０ｘＦＦＦＦ」が記述され、最も高い優先度が設定される。
【００７２】
フローテーブル＃２は、表３を用いて説明したように、宛先ＩＰアドレスがプリンタ５０のＩＰアドレスである「192.168.1.30」の場合に、ＯＦＳ２００がＬ２／Ｌ３スイッチとして機能するフローエントリが最も高い優先度で記述されている。そのため、送信元のＭＡＣアドレスが「aa:bb:cc:dd:ee:ff」であり、且つ、宛先ＩＰアドレスが「192.168.1.30」であれば、ポート番号「２」のポート（第２接続部２０１ｂに対応）から入力されたフローがポート番号「１」のポート（第１接続部２０１ａに対応）から送出される。これにより、例えばＰＣ３０がネットワーク１１に接続されるプリンタ５０のみに対して、ユニキャストによる通信を行う制御が可能となる。
【００７３】
表４のフローテーブル＃１において、追加された１行目のフローエントリの項目「ｈａｒｄ＿ｔｉｍｅｏｕｔ」は、この１行目のフローエントリの有効期限が秒単位で記述される。すなわち、表２のフローテーブル＃１に対してこの表４の１行目のフローエントリが追加されて表４のフローテーブル＃１が生成された時点を開始時間ｔstとして、ＯＦ機器２０において、処理部２１３は、タイマ２１４により計時を開始させる。処理部２１３は、開始時間ｔstから項目「ｈａｒｄ＿ｔｉｍｅｏｕｔ」に記述されるタイムアウト時間が経過して終了時間ｔoutになると、この１行目のフローエントリを削除する。
【００７４】
表４のフローテーブル＃１の１行目のフローエントリが削除されると、フローテーブル＃１は、表２の状態に戻る。したがって、ポート番号「２」からフローが入力されると、ＯＦＳ２００は、フローテーブル＃０と、表２のフローテーブル＃１とに従い、ＯＦＣ１００に対してpacket_inメッセージを通知する。このように、表４に示す、フローテーブル＃１に追加されたフローエントリは、ＯＦＳ２００に対して、packet_inメッセージを一定時間通知しない処理を設定する。
【００７５】
なお、表４の例では、項目「ｈａｒｄ＿ｔｉｍｅｏｕｔ」に値「６００」が記述され、タイムアウト時間が６００秒であることが示される。また、上述した表２においては、項目「ｈａｒｄ＿ｔｉｍｅｏｕｔ」が空欄とされ値が設定されていないので、そのフローエントリに対する有効期限は設定されない。
【００７６】
（実施形態に係る処理の具体的な例）
次に、実施形態に係る処理の具体的な例について説明する。実施形態では、ＯＦＣ１００は、ＯＦ機器２０からpacket_inメッセージが通知されると、通知されたpacket_inメッセージに含まれるフロー（パケット）のヘッダから、当該フローの送信元を特定可能な識別情報（例えばＭＡＣアドレス）を抽出する。ＯＦＣ１００は、少なくとも、抽出した識別情報と、packet_inメッセージが通知された時間とを関連付けて、ログ情報としてログＤＢ７０に記憶する。ＯｐｅｎＦｌｏｗの仕組みを用いることで、ネットワーク上に複数のベンダによる機器が混在している場合でも、容易に管理および解析可能な状態で、ログ情報を取得できる。
【００７７】
図９は、実施形態に係る処理の具体的な例を示す一例のシーケンス図である。なお、図９において、上述した図２と共通する部分には同一の符号を付して、詳細な説明を省略する。
【００７８】
通信制御装置１０とＯＦ機器２０とが接続されると、ＯＦＣ１００とＯＦＳ２００との間でＯＦチャネルの確立処理が行われる（ステップＳ１００）。ＯＦチャネルが確立されると、ＯＦＣ１００からＯＦＳ２００に対して、ＯＦＳ２００内の各フローテーブル２１０0〜２１０2に初期値のフローエントリを書き込み、初期化するためのModify-Stateメッセージが送信される（ステップＳ１０１）。ＯＦＳ２００は、このModify-Stateメッセージに従い各フローテーブル２１０0〜２１０2を初期化して、表１〜表３を用いて説明したフローテーブル＃０〜＃２を形成する。
【００７９】
以下、ＯＦ機器２０の第２接続部２０１ｂ（ポート番号「２」）に接続されるＰＣ３０からプリンタ５０を利用する場合を例にとって説明する。なお、ＰＣ３０は、予めプリンタ５０のＩＰアドレス「192.168.1.30」を取得しているものとする。
【００８０】
ＰＣ３０は、プリンタ５０に対するメッセージＡを、ＩＰ通信によりＯＦ機器２０に送信する（ステップＳ１１０）。このメッセージＡのパケットは、ＯＦ機器２０に受信され、ＯＦＳ２００に渡される。
【００８１】
ＯＦＳ２００は、受け取ったパケットに対してフローテーブル＃０および＃１によるマッチングを行う。ＯＦＳ２００は、受信ポートがポート番号「２」であるので、フローテーブル＃０において２行目のフローエントリにマッチすると判定し、処理をフローテーブル＃１に引き継ぐ。この時点におけるフローテーブル＃１は、表２に示す、１つのフローエントリのみを含む状態であるので、ＯＦＳ２００は、項目「ｉｎｓｔｒｕｃｔｉｏｎ」の記述に従い、当該パケットを含むpacket_inメッセージをＯＦ機器２０から送信し（ステップＳ１１１）、ＯＦＣ１００に通知する。このとき、ＯＦＳ２００は、当該パケットのヘッダにおける受信ポートのヘッダフィールドに、ポート番号「２」を書き込む。
【００８２】
ＯＦ機器２０から送信されたpacket_inメッセージは、通信制御装置１０に受信され、ＯＦＣ１００に渡される。ＯＦＣ１００は、渡されたpacket_inメッセージに含まれるパケットのヘッダから、送信元ＭＡＣアドレスを抽出する（ステップＳ１１２）。これに限らず、ＯＦＣ１００は、当該パケットのヘッダから、受信ポート(in_port)、送信元ＩＰアドレスなど、複数の情報をさらに抽出してもよい。
【００８３】
ＯＦＣ１００は、パケットのヘッダから各情報を抽出すると、表４の１行目のフローエントリを表２のフローテーブル＃１に追加するためのModify_Stateメッセージを生成する。ＯＦＣ１００は、パケットのヘッダから抽出された各情報のうち、送信元ＭＡＣアドレスを項目「ｍａｔｃｈ」におけるマッチングルールとして含めて、このModify_Stateメッセージを生成する。ＯＦＣ１００は、このように生成したModify_Stateメッセージを、ＯＦＳ２００に通知する（ステップＳ１１３）。このModify_Stateメッセージは、通信制御装置１０から送信されＯＦ機器２０に受信される。ＯＦ機器２０は、受信したModify_StateメッセージをＯＦＳ２００に渡す。
【００８４】
ＯＦＳ２００は、渡されたModify_Stateメッセージに従いフローテーブル＃１にフローエントリを追加し、表４に示したフローテーブル＃１を形成する。ＯＦＳ２００は、フローテーブル＃１にフローエントリが追加された時間を開始時間ｔstとして、追加されたフローエントリの項目「ｈａｒｄ＿ｔｉｍｅｏｕｔ」に記述された値に従い、計時を開始する（ステップＳ１１４）。
【００８５】
ＯＦＣ１００は、ステップＳ１１３でＯＦＳ２００にModify_Stateメッセージを通知すると、パケットを宛先ＩＰアドレスで示される宛先に送信させるためのpacket_outメッセージをＯＦＳ２００に通知する（ステップＳ１１５）。このpacket_outメッセージは、通信制御装置１０から送信されＯＦ機器２０に受信される。ＯＦ機器２０は、受信したpacket_outメッセージをＯＦＳ２００に渡す。
【００８６】
ＯＦＳ２００は、渡されたpacket_outメッセージに従い、ステップＳ１１１でpacket_inメッセージによりＯＦＣ１００に通知した、メッセージＡを含むパケットを、宛先ＩＰアドレスに従いプリンタ５０に送信する（ステップＳ１１６）。これにより、ＰＣ３０からプリンタ５０に対するメッセージＡの送信が実現される。
【００８７】
ＯＦＳ２００は、計時された時間に基づき、開始時間ｔstからタイムアウト時間が経過し終了時間ｔoutになると、フローテーブル＃１から、ステップＳ１１３で通知されたModify_Stateメッセージに応じて追加されたフローエントリを削除する（ステップＳ１１７）。
【００８８】
ここで、開始時間ｔstから終了時間ｔoutまでの間に、ＰＣ３０から、プリンタ５０のＩＰアドレスを宛先ＩＰアドレスとしたメッセージＢが送信された（ステップＳ１２０）場合について考える。このメッセージＢのパケットは、ＯＦ機器２０に受信され、ＯＦＳ２００に渡される。ＯＦＳ２００は、受け取ったパケットに対してフローテーブル＃０〜＃２によりマッチングを行う。
【００８９】
ＯＦＳ２００は、受信ポートがポート番号「２」であるので、フローテーブル＃０において２行目のフローエントリにマッチすると判定し、処理をフローテーブル＃１に引き継ぐ。この時点では、フローテーブル＃１は、表４に示す、２つのフローエントリを含む状態となっている。ＯＦＳ２００は、フローテーブル＃１に含まれる２つのフローエントリのうち優先度が高い１行目のフローエントリによる照合を行う。
【００９０】
ＯＦＳ２００は、パケットのヘッダから送信元ＭＡＣアドレス「aa:bb:cc:dd:ee:ff」を抽出し、当該フローエントリの項目「ｍａｔｃｈ」に記述される値「aa:bb:cc:dd:ee:ff」と比較する。この場合、パケットに含まれる送信元ＭＡＣアドレスと項目「ｍａｔｃｈ」に記述される値とが一致するので、ＯＦＳ２００は、項目「ｉｎｓｔｒｕｃｔｉｏｎ」の記述に従い、処理をフローテーブル＃２に引き継ぐ。
【００９１】
ＯＦＳ２００は、処理を引き継いだフローテーブル＃２に含まれる２つのフローエントリのうち優先度が高い１行目のフローエントリによる照合を行う。ＯＦＳ２００は、パケットのヘッダから宛先ＩＰアドレスを抽出し、当該フローエントリの項目「ｍａｔｃｈ」に記述される値「192.168.1.30」と比較する。この場合、パケットに含まれる宛先ＩＰアドレスと項目「ｍａｔｃｈ」に記述される値とが一致するため、ＯＦＳ２００は、項目「ｉｎｓｔｒｕｃｔｉｏｎ」の記述に従い、ＯＦ機器２０を通常のＬ２／Ｌ３スイッチとして機能させる。これにより、ＰＣ３０から送信されたメッセージＢのパケットは、ＯＦ機器２０を介してプリンタ５０に送信される（ステップＳ１２１）。
【００９２】
ここで、フローテーブル＃１の追加されたフローエントリ（表４の１行目のフローエントリ）の項目「ｍａｔｃｈ」に記述される値「aa:bb:cc:dd:ee:ff」は、ＯＦＣ１００により、ＰＣ３０から送信されたメッセージＡのパケットに含まれる送信元ＭＡＣアドレスが用いられている。したがって、ＯＦＳ２００は、ステップＳ１２０で送信されたメッセージＢが既知の機器（ＰＣ３０）から送信されたものであると判断できる。このように、フローテーブル＃１に追加されたフローエントリは、既知の機器から送信されたパケットを、ＯＦ機器２０を介して宛先ＩＰアドレスに示される送信先に送信させる処理を実現するためのものであるといえる。
【００９３】
開始時間ｔstからタイムアウト時間が経過して終了時間ｔoutになり、ステップＳ１１３のModify_Stateメッセージに応じてフローテーブル＃１に追加されたフローエントリが削除（ステップＳ１１７）された後は、フローテーブル＃１による送信元ＭＡＣアドレスのマッチングが行われない。そのため、ＯＦＳ２００は、ＰＣ３０からプリンタ５０のＩＰアドレスを宛先ＩＰアドレスとして送信されたメッセージＸ（ステップＳ１４０）が未知の機器からのメッセージであると判断し、上述したステップＳ１１１と同様に、メッセージＸのパケットを含むpacket_inメッセージをＯＦＣ１００に通知する（ステップＳ１４１）。
【００９４】
一方、通信制御装置１０は、上述のステップＳ１１２でＯＦ機器２０から送信されたpacket_inメッセージに含まれるパケットのヘッダから、ＯＦＣ１００により、送信元ＭＡＣアドレスを少なくとも含む各情報を抽出すると、抽出した各情報と、packet_inメッセージを受信した時間とをログＤＢ７０に送信する（ステップＳ１３０）。ログＤＢ７０は、通信制御装置１０から送信された送信元ＭＡＣアドレスを少なくとも含む情報と時間とを関連付けて、ＰＣ３０の接続に関するログ情報として記憶する（ステップＳ１３１）。表５は、ログＤＢ７０に記憶されるログ情報の例を示す。この例では、ログ情報は、「時間」と、「送信元ＭＡＣアドレス」および「受信ポート」とが関連付けられたレコードを含む。
【００９５】
【表５】
2018061219.tif 000007
【００９６】
このように、実施形態では、端末装置の接続に関するログ情報を、ＯｐｅｎＦｌｏｗの仕組みを用いて取得している。そのため、複数ベンダによるネットワーク機器が混在するネットワークにおいて、端末装置のネットワークに対する接続を示すログ情報を容易に管理および解析可能となる。
【００９７】
なお、上述したように、ＯＦＣ１００は、ＯＦＳ２００から通知されたpacket_inメッセージに応じてログ情報の取得および記憶を行っている。一方、ＯＦＣ１００は、packet_inメッセージに応じて、ＯＦＳ２００が有するフローテーブルを、当該packet_inメッセージに含まれるパケットの送信元の機器を既知の機器とし、既知の機器から送信されたパケットを宛先ＩＰアドレスに示される宛先に送信できるように書き換えている。
【００９８】
そのため、この書き換えた内容が有効である開始時間ｔstから終了時間ｔoutの間は、機器からのメッセージに応じたpacket_inメッセージがＯＦＳ２００からＯＦＣ１００に通知されない。したがって、この期間内ではログＤＢ７０へのログ情報の送信が行われず、ログＤＢ７０へのアクセス量を抑制することができる。
【００９９】
（他の実施形態）
上述では、ＰＣ３０とＯＦ機器２０とが予めケーブル１２により接続されているものとして説明したが、実施形態は、ケーブル１２の物理的な接続（例えばケーブル１２の端のモジュラープラグの、モジュラージャックへの挿入）を示すログ情報を取得することも可能である。ＰＣ３０やスマートデバイス３１といった、ＬＡＮ接続が可能な情報機器は、ＬＡＮに対して物理的に接続された際に、ＡＲＰ(Address  Resolution  Protocol)により、ＬＡＮに接続される他の機器のＭＡＣアドレスの情報を取得する必要がある。このＡＲＰによる通信をＯＦ機器２０により検出することで、ケーブル１２の物理的な接続のログ情報を取得できる。
【０１００】
具体的な例として、表２のフローテーブル＃１に対して、項目「ｍａｔｃｈ」をＡＲＰによる通信を示す値とし、項目「ｉｎｓｔｒｕｃｔｉｏｎ」を「ＯＦＰＰ＿ＣＯＮＴＲＯＬＬＥＲ」とし、項目「ｐｒｉｏｒｉｔｙ」を例えば値「０ｘ０００１」より大きく「０ｘＦＦＦＦ」より小さい値としたフローエントリを追加する。そして、図９のシーケンスにおいて、ＡＲＰによる通信（ステップＳ１１０に対応）に対して、ステップＳ１１１およびステップＳ１１２、ならびに、ステップＳ１３０およびステップＳ１３１を実行する。これにより、例えばＰＣ３０のＯＦ機器２０に対する物理的な接続を示すログ情報を取得することが可能となる。
【０１０１】
また、上述では、図９のシーケンスにおいて、ＯＦＣ１００は、ステップＳ１１１でＯＦＳ２００から通知されたpacket_inメッセージに応じて、ＯＦＳ２００に対して一定期間におけるpacket_inメッセージによる通知を行わないように設定しているが、これはこの例に限られない。例えば、ログＤＢ７０の容量やネットワーク１１の通信量に余裕があれば、ＰＣ３０からのメッセージの送信毎にpacket_inメッセージによる通知を行うようにしてもよい。
【０１０２】
この場合、例えば、図９のシーケンスにおけるステップＳ１１３（およびステップＳ１１４〜ステップＳ１１７）の処理を省略する。また、フローテーブル＃０から参照されるフローテーブル＃１は、表２のものではなく、表４のフローテーブル＃１を用いる。このとき、フローテーブル＃１は、１行目のフローエントリの項目「ｈａｒｄ＿ｔｉｍｅｏｕｔ」の値を設定しない。
【０１０３】
なお、上述の各実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。
【符号の説明】
【０１０４】
１  通信システム
１０  通信制御装置
１１  ネットワーク
１２  ケーブル
２０  ＯＦ機器
２０ａ  有線ＳＷ
２０ｂ  無線ＡＰ
３０  ＰＣ
３１  スマートデバイス
５０  プリンタ
７０  ログＤＢ
１００  ＯＦＣ
２００  ＯＦＳ
２０１ａ  第１接続部
２０１ｂ  第２接続部
２１０0、２１０1、…、２１０n  フローテーブル
２１３  処理部
２１４  タイマ
【先行技術文献】
【特許文献】
【０１０５】
【特許文献１】特開２００７−２４１８５０号公報
【図１】
2018061219.tif 000008
【図２】
2018061219.tif 000009
【図３】
2018061219.tif 000010
【図４】
2018061219.tif 000011
【図５】
2018061219.tif 000012
【図６】
2018061219.tif 000013
【図７】
2018061219.tif 000014
【図８】
2018061219.tif 000015
【図９】
2018061219.tif 000016