(57)【特許請求の範囲】
【請求項１】
プラントの運転制御を行う、送信元から送信されるデータを送信先に向けて転送するデータ転送システムを具備するプロセス制御システムにおいて、
前記データ転送システムは、
受信したデータにおける送信先および送信元に係る情報に適合するか否かを定義する条件を示す第１情報と、該条件に適合した場合にのみ前記受信したデータを出力する、自機の通信ポートを示す第２情報とが対応づけられたテーブルを参照して、受信したデータの転送処理を行うための、国際標準規格ＩＥＣ／ＩＳＯ６２２６４で規定されるレベル３の階層とレベル４の階層との間に設置される、または、レベル３の階層内に設置される、１または複数のデータ転送機器と、
前記送信元と前記送信先との間の経路が不明な場合には前記第１情報で示される条件に適合したデータを自機に出力すべき旨を示す情報が前記第２情報として格納された仮テーブルを前記データ転送機器に設定し、前記送信元と前記送信先との間の経路を示す経路情報が得られた場合に、前記仮テーブルを、前記経路情報に基づいて前記第１情報及び前記第２情報が変更されたテーブルに更新する経路制御機器と、を具備し、
前記データ転送機器及び前記経路制御機器は、
オープンフロー仕様に準拠、若しくはそれに類しており、
前記経路制御機器は、
送信元から送信先へのデータの転送制御の条件を規定する条件リストと、
前記条件リストを用いて、オープンフロー仕様に準拠した前記データ転送機器に設定される前記仮テーブルと、オープンフロー仕様に準拠していない非準拠転送装置で用いられるアクセス制御リストとを生成可能な生成部と、
を備えることを特徴とするプロセス制御システム。
【請求項２】
前記制御装置は、前記経路情報が得られたタイミング、或いは、前記経路情報が得られた後に前記送信元から前記送信先に最初にデータが送信されるタイミングで、前記仮テーブルの更新を行うことを特徴とする請求項１記載のプロセス制御システム。
【請求項３】
前記転送装置に設定される前記テーブルは優先度が設定されており、
前記制御装置は、前記仮テーブルを、前記仮テーブルに設定された優先度よりも高い優先度が設定されたテーブルに更新する
ことを特徴とする請求項１又は請求項２記載のプロセス制御システム。
【請求項４】
前記転送装置で用いられる前記テーブル又は前記仮テーブルは、有限の寿命又は無限の寿命を設定可能であることを特徴とする請求項１から請求項３の何れか一項に記載のプロセス制御システム。
【請求項５】
前記制御装置は、予め規定されたスケジュールに従って、前記転送装置に対する前記仮テーブルの設定及び削除の少なくとも一方を行うことを特徴とする請求項１から請求項３の何れか一項に記載のプロセス制御システム。
【請求項６】
前記転送装置は、ポート毎に帯域の異なる複数のキューを有しており、前記仮テーブルが更新された場合に、前記ポート毎に前記キューを選択可能であることを特徴とする請求項１から請求項５の何れか一項に記載のプロセス制御システム。
【請求項７】
プラントの運転制御を行うプロセス制御システムにおける、送信元から送信されるデータを送信先に向けて転送するデータ転送方法であって、
前記送信元と前記送信先との間の経路が不明なときに、受信したデータにおける送信先および送信元に係る情報に適合するか否かを定義する条件を示す第１情報と、該条件に適合にのみ前記受信したデータを出力する、自機の通信ポートを示す第２情報とが対応づけられた仮テーブルを、経路制御装置が、受信したデータの転送処理を行う１または複数のデータ転送装置に設定する第１ステップと、
前記送信元と前記送信先との間の経路を示す経路情報が得られた後に、前記経路制御装置が、前記仮テーブルを、前記経路情報に基づいて前記第１情報及び前記第２情報が変更されたテーブルに更新する第２ステップとを含み、
前記データ転送機器は、
受信したデータにおける送信先および送信元に係る情報に適合するか否かを定義する条件を示す第１情報と、該条件に適合した場合にのみ前記受信したデータを出力する、自機が備える通信ポートを示す第２情報とが対応づけられたテーブルを参照して、受信したデータの転送処理を行うための、国際標準規格ＩＥＣ／ＩＳＯ６２２６４で規定されるレベル２の階層とレベル３の階層との間に設置される、レベル３の階層とレベル４の階層との間に設置される、または、レベル３の階層内に設置されることを特徴とするデータ転送方法。
【請求項８】
前記第２ステップは、前記経路情報が得られたタイミング、或いは、前記経路情報が得られてから最初に前記送信元から前記送信先にデータが送信されるタイミングで行われることを特徴とする請求項７記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス制御システム及びデータ転送方法に関する。
【背景技術】
【０００２】
一般的に、ネットワークを構成するネットワーク機器（例えば、スイッチ）は、アクセス制御リスト（ＡＣＬ：Access Control List）を備えており、このアクセス制御リストの内容を参照してデータの転送制御を行っている。上記のアクセス制御リストには、ネットワークの具体的構成によらず、抽象的な内容（例えば、送信先のアドレスやソフトウェアのポート番号等）を設定可能である。このようなアクセス制御リストの内容は、例えばＬｉｎｕｘ（登録商標）のコマンド「iptables」によって設定可能である。
【０００３】
また、近年においては、複雑な転送制御や柔軟なネットワーク構成の変更を可能とすべく、ネットワークをプログラミングによって制御する「Software-Defined Network」というコンセプトに基づいて開発されたオープンフロー（OpenFlow）と呼ばれる技術が用いられるようになってきている。このオープンフローは、ネットワークを構成するネットワーク機器を、経路制御機器（ＯＦＣ：OpenFlow Controller）とデータ転送機器（ＯＦＳ：OpenFlow Switch）とに分離し、経路制御機器が、データ転送機器に設けられたフローテーブル（FlowTable）を一括管理することによって転送制御を行うものである。
【０００４】
ここで、上記のオープンフローで用いられるフローテーブルは、前述したアクセス制御リストを記述できるものであり、転送制御を行う条件（match）、条件に適合した場合に実施すべき処理（Action）等が対応づけられた情報が格納されるテーブルである。尚、以下の特許文献１には、アクセス制御リストを参照して転送制御を行う従来技術の一例が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−７４３８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、プラントのようなクリティカルインフラと呼ばれる環境では、セキュリティを確保するために、ネットワークを介して行われる通信を厳密に制御したいという要求がある。例えば、基本的には全ての通信が拒否されており、明示的に指示された特定の機器間における特定のアプリケーションの通信のみを許容するといったホワイトリスト的な制御が要求されている。
【０００７】
ここで、アクセス制御リストを用いて転送制御を行うネットワーク機器（以下、「従来のネットワーク機器」という）は、前述の通り、送信先のアドレス等の抽象的な内容をアクセス制御リストに設定することが可能である。このため、ネットワークの管理者が、ネットワークの具体的構成を把握していなくとも、アクセス制御リストをホワイトリストとして作成して厳密な転送制御を行うことは可能である。
【０００８】
しかしながら、従来のネットワーク機器におけるアクセス制御リストの設定は、ネットワーク機器のベンダや機種に依存するコマンドを用いて行わなければならない。このため、様々なベンダから提供されるネットワーク機器が混在するネットワークでは、設定対象のネットワーク機器に適したコマンドを用いてアクセス制御リストの設定を行わなければならず、煩雑な管理が必要になり、厳密な転送制御を適時に行うことが困難であるという問題がある。
【０００９】
これに対し、前述したオープンフロー仕様に準拠したネットワーク機器は、統一されたプロトコルでフローテーブルの設定を行うことができる。このため、上述の機種に依存するコマンドを用いる必要がなく、管理が簡素化されることから、様々なベンダから提供されるネットワーク機器が混在するネットワークであっても、厳密な転送制御を適時に行うことは可能であると考えられる。
【００１０】
しかしながら、フローテーブルは、ネットワークの具体的構成に基づいて記述しなければならない部分がある。例えば、転送制御の条件に適合した場合に実施すべき処理（Action）がデータの送信（出力）である場合には、そのデータを出力するデータ転送機器の物理ポートを記述する必要がある。このため、ネットワークの管理者が、ネットワークの具体的構成（具体的な接続状況）を事前に把握しないと、フローテーブルを作成することができないという問題がある。
【００１１】
加えて、従来のネットワーク機器で構成されているネットワークに対し、オープンフロー仕様に準拠したネットワーク機器を導入する場合には、従来のネットワーク機器とオープンフロー仕様に準拠したネットワーク機器とが混在する状況になることが考えられる。このような状況では、各々のネットワーク機器に対して異なる管理が必要になることから、管理が更に煩雑になるという問題がある。
【００１２】
本発明は上記事情に鑑みてなされたものであり、ネットワークの具体的構成を事前に把握していなくとも、または具体的構成機器が運用中に交換されても、厳密な転送制御を適時に行うことが可能なデータ転送システム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明のデータ転送システムを具備するプロセス制御システムは、プラントの運転制御を行う、送信元から送信されるデータを送信先に向けて転送するデータ転送システムを具備するプロセス制御システムにおいて、前記データ転送システムは、受信したデータにおける送信先および送信元に係る情報に適合するか否かを定義する条件を示す第１情報と、該条件に適合した場合にのみ前記受信したデータを出力する、自機の通信ポートを示す第２情報とが対応づけられたテーブルを参照して、受信したデータの転送処理を行うための、国際標準規格ＩＥＣ／ＩＳＯ６２２６４で規定されるレベル３の階層とレベル４の階層との間に設置される、または、レベル３の階層内に設置される、１または複数のデータ転送機器と、前記送信元と前記送信先との間の経路が不明な場合には前記第１情報で示される条件に適合したデータを自機に出力すべき旨を示す情報が前記第２情報として格納された仮テーブルを前記データ転送機器に設定し、前記送信元と前記送信先との間の経路を示す経路情報が得られた場合に、前記仮テーブルを、前記経路情報に基づいて前記第１情報及び前記第２情報が変更されたテーブルに更新する経路制御機器と、を具備し、前記データ転送機器及び前記経路制御機器は、オープンフロー仕様に準拠、若しくはそれに類しており、前記経路制御機器は、送信元から送信先へのデータの転送制御の条件を規定する条件リストと、前記条件リストを用いて、オープンフロー仕様に準拠した前記データ転送機器に設定される前記仮テーブルと、オープンフロー仕様に準拠していない非準拠転送装置で用いられるアクセス制御リストとを生成可能な生成部と、を備えることを特徴としている。
この発明によると、条件に適合したデータを制御装置に出力すべき旨を示す情報が格納された仮テーブルが転送装置に設定され、送信元と送信先との間の経路を示す経路情報が得られた場合に、仮テーブルが、上記条件に適合したデータの出力先が経路情報に基づいて変更されたテーブルに更新される。
また、本発明のデータ転送システムを具備するプロセス制御システムは、前記制御装置が、前記経路情報が得られたタイミング、或いは、前記経路情報が得られた後に前記送信元から前記送信先に最初にデータが送信されるタイミングで、前記仮テーブルの更新を行うことを特徴としている。
また、本発明のデータ転送システムを具備するプロセス制御システムは、前記転送装置に設定される前記テーブルは優先度が設定されており、前記制御装置が、前記仮テーブルを、前記仮テーブルに設定された優先度よりも高い優先度が設定されたテーブルに更新することを特徴としている。
また、本発明のデータ転送システムを具備するプロセス制御システムは、前記転送装置で用いられる前記テーブル又は前記仮テーブルは、有限の寿命又は無限の寿命を設定可能であることを特徴としている。
また、本発明のデータ転送システムを具備するプロセス制御システムは、前記制御装置が、予め規定されたスケジュールに従って、前記転送装置に対する前記仮テーブルの設定及び削除の少なくとも一方を行うことを特徴としている。
また、本発明のデータ転送システムを具備するプロセス制御システムは、前記転送装置が、ポート毎に帯域の異なる複数のキューを有しており、前記仮テーブルが更新された場合に、前記ポート毎に前記キューを選択可能であることを特徴としている。
本発明のプラントの運転制御を行うプロセス制御システムにおける、送信元から送信されるデータを送信先に向けて転送するデータ転送方法は、前記送信元と前記送信先との間の経路が不明なときに、受信したデータにおける送信先および送信元に係る情報に適合するか否かを定義する条件を示す第１情報と、該条件に適合にのみ前記受信したデータを出力する、自機の通信ポートを示す第２情報とが対応づけられた仮テーブルを、経路制御装置が、受信したデータの転送処理を行う１または複数のデータ転送装置に設定する第１ステップと、前記送信元と前記送信先との間の経路を示す経路情報が得られた後に、前記経路制御装置が、前記仮テーブルを、前記経路情報に基づいて前記第１情報及び前記第２情報が変更されたテーブルに更新する第２ステップとを含み、前記データ転送機器は、受信したデータにおける送信先および送信元に係る情報に適合するか否かを定義する条件を示す第１情報と、該条件に適合した場合にのみ前記受信したデータを出力する、自機が備える通信ポートを示す第２情報とが対応づけられたテーブルを参照して、受信したデータの転送処理を行うための、国際標準規格ＩＥＣ／ＩＳＯ６２２６４で規定されるレベル２の階層とレベル３の階層との間に設置される、レベル３の階層とレベル４の階層との間に設置される、または、レベル３の階層内に設置されることを特徴としている。
また、本発明のデータ転送方法は、前記第２ステップが、前記経路情報が得られたタイミング、或いは、前記経路情報が得られてから最初に前記送信元から前記送信先にデータが送信されるタイミングで行われることを特徴としている。
【発明の効果】
【００１４】
本発明によれば、条件に適合したデータを制御装置に出力すべき旨を示す情報が格納された仮テーブルを転送装置に設定し、送信元と送信先との間の経路を示す経路情報が得られた場合に、仮テーブルを、上記条件に適合したデータの出力先が経路情報に基づいて変更されたテーブル更新するようにしているため、ネットワークの具体的構成を事前に把握していなくとも、または具体的構成機器が運用中に交換されても、厳密な転送制御を適時に行うことが可能であるという効果がある。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１実施形態によるデータ転送システムの要部構成を示すブロック図である。
【図２】本発明の第１実施形態で用いられる仮のフローテーブルの一例を示す図である。
【図３】本発明の第１実施形態で用いられるフローテーブルの一例を示す図である。
【図４】本発明の第１実施形態によるデータ転送システムの動作の一例を示すタイミングチャートである。
【図５】本発明の第１実施形態によるデータ転送システムが適用されるプロセス制御システムを説明する図である。
【図６】本発明の第２実施形態によるデータ転送システムの要部構成を示すブロック図である。
【図７】本発明の第３実施形態によるデータ転送システムで用いられるＯＦＳの要部構成を示すブロック図である。
【図８】本発明の実施形態によるデータ転送システムで用いられるＯＦＳの変形例を示す図である。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の実施形態によるデータ転送システム及び方法について詳
細に説明する。
【００１７】
〔第１実施形態〕
図１は、本発明の第１実施形態によるデータ転送システムの要部構成を示すブロック図である。図１に示す通り、本実施形態のデータ転送システム１は、ＯＦＳ（OpenFlow Switch：転送装置）１１，１２、及びＯＦＣ（OpenFlow Controller：制御装置）２０を備えており、ＯＦＣ２０の制御の下で、ＯＦＳ１１，１２が送信元から送信されてくるデータを送信先に向けて転送する。尚、図１では、理解を容易にするために、２つのＯＦＳ１１，１２を備えるデータ転送システム１を図示しているが、データ転送システム１に設けられるＯＦＳの数は任意である。
【００１８】
以下では、理解を容易にするために、ホストＨ１がデータの送信元であり、ホストＨ２がデータの送信先であるとする。また、ホストＨ１は、「１０．０．０．９」なるＩＰ（Internet Protocol）アドレスが割り当てられたＤＮＳ（Domain Name System）クライアントであり、ホストＨ２は、「１０．０．０．１」なるＩＰアドレスが割り当てられたＤＮＳサーバであるとする。これらホストＨ１，Ｈ２は、例えばノート型のコンピュータ、デスクトップ型のコンピュータ、タブレット型のコンピュータ、その他のコンピュータで実現される。
【００１９】
ＯＦＳ１１，１２は、複数の物理ポートＰ１〜Ｐ１２を備えており、ＯＦＣ２０の制御の下で、受信したデータの転送処理を行う。具体的に、ＯＦＳ１１，１２は、ＯＦＣ２０によって一括管理されるフローテーブル（FlowTable）ＴＢ１，ＴＢ２（テーブル：図２，３参照）をメモリ（図示せず）に記憶しており、フローテーブルＴＢ１，ＴＢ２を参照してデータの転送を転送部（図示せず）により行う。尚、フローテーブルＴＢ１，ＴＢ２の詳細については後述する。
【００２０】
図１に示す通り、ＯＦＳ１１の物理ポートＰ１にはホストＨ１が接続されており、ＯＦＳ１２の物理ポートＰ６にはホストＨ２が接続されており、ＯＦＳ１１の物理ポートＰ１２とＯＦＳ１２の物理ポートＰ７とが接続されている。これにより、ホストＨ１とホストＨ２との間において、データ転送用のネットワークＮ１が構築されている。また、ＯＦＳ１１，１２は、物理ポートＰ１〜Ｐ１２とは異なる制御ポート（図示省略）を介してＯＦＣ２０に接続されており、これによりオープンフロー制御用のネットワークＮ２が構築されている。尚、ＯＦＳ１１，１２に設けられる物理ポートの数は任意である。
【００２１】
ＯＦＣ２０は、ＯＦＳ１１，１２で用いられるフローテーブルＴＢ１，ＴＢ２を一括管理することによってネットワークＮ１を介して転送されるデータの転送制御を行う。具体的に、ＯＦＣ２０は、ホストＨ１，Ｈ２間の経路が不明な場合には、メモリ（図示せず）に記憶されている仮のフローテーブルＴＢ０（仮テーブル：図２参照）をフローテーブルＴＢ１，ＴＢ２としてＯＦＳ１１，１２にそれぞれ設定してデータの転送制御を制御部（図示せず）により行う。また、ＯＦＣ２０は、ホストＨ１，Ｈ２間の経路を示す経路情報が得られた場合には、仮のフローテーブルＴＢ０を、その経路情報に基づいて内容が更新されたフローテーブルＴＢ１，ＴＢ２（図３参照）に更新してデータの転送制御を行う。このような仮のフローテーブルＴＢ０の設定及び更新を行うのは、ネットワークＮ１の具体的構成を事前に把握していなくとも、ホワイトリスト的な厳密な転送制御を適時に行うためである。
【００２２】
次に、ＯＦＣ２０によって管理されるフローテーブルについて説明する。図２は、本発明の第１実施形態で用いられる仮のフローテーブルの一例を示す図である。また、図３は、本発明の第１実施形態で用いられるフローテーブルの一例を示す図である。図２，図３に示す通り、仮のフローテーブルＴＢ０及びフローテーブルＴＢ１，ＴＢ２は、エントリ番号（ＩＤ）で特定されるエントリ毎に、優先度（Priority）が格納されるフィールド、転送制御を行う条件（match：第１情報）が格納されるフィールド、及び条件に適合した場合に実施すべき処理（Action：第２情報）が格納されるフィールドが設けられたテーブルである。尚、上記の優先度は、エントリの優先度を規定するものであり、値が大きな優先度が格納されているエントリほど優先される。
【００２３】
図２に例示する仮のフローテーブルＴＢ０には、優先度が「１０００」に設定された２つのエントリが設けられている。ＩＤが「１」であるエントリには、条件及び処理としてそれぞれ以下の情報が格納されている。
［条件］
・送信元アドレス（ＳＡＤＤＲ）＝「ａｎｙ（任意）」
・送信先アドレス（ＤＡＤＤＲ）＝「１０．０．０．１」
・プロトコル（ＰＲＯＴＯＣＯＬ）＝「ＵＤＰ（User Datagram Protocol）」
・送信元のポート番号（ＳＰＯＲＴ）＝「ａｎｙ」
・送信先のポート番号（ＤＰＯＲＴ）＝「５３（ＤＮＳで用いられるポート番号）」
［処理］
・ｏｕｔｐｕｔ
・物理ポート（Ｐｏｒｔ）＝「Ｃｔｒｌ」
【００２４】
また、ＩＤが「２」であるエントリには、条件及び処理としてそれぞれ以下の情報が格
納されている。
［条件］
・送信元アドレス（ＳＡＤＤＲ）＝「１０．０．０．１」
・送信先アドレス（ＤＡＤＤＲ）＝「ａｎｙ」
・プロトコル（ＰＲＯＴＯＣＯＬ）＝「ＵＤＰ」
・送信元のポート番号（ＳＰＯＲＴ）＝「５３」
・送信先のポート番号（ＤＰＯＲＴ）＝「ａｎｙ」
［処理］
・ｏｕｔｐｕｔ
・物理ポート（Ｐｏｒｔ）＝「Ｃｔｒｌ」
【００２５】
つまり、ＩＤが「１」であるエントリには、条件として「送信先がホストＨ２の５３番ポートであるＵＤＰデータ（データグラム）」なる情報が格納されており、処理として「不図示の制御ポート（Ｃｔｒｌ）に出力」なる情報が格納されている。また、ＩＤが「２」であるエントリには、条件として「送信元がホストＨ２の５３番ポートであるＵＤＰデータ（データグラム）」なる情報が格納されており、処理として「不図示の制御ポートに出力」なる情報が格納されている。即ち、仮のフローテーブルＴＢ０には、条件に適合したデータを、ＯＦＳ１１，１２に設けられた不図示の制御ポートに接続されたＯＦＣ２０に出力すべき旨を示す情報が格納されている。
【００２６】
また、図３に例示するフローテーブルＴＢ１，ＴＢ２には、優先度が「１０００」に設定された２つのエントリと、優先度が「２０００」に設定された２つのエントリとがそれぞれ設けられている。フローテーブルＴＢ１，ＴＢ２の優先度が「１０００」に設定された２つのエントリ（ＩＤが「１」，「２」であるエントリ）には、仮のフローテーブルＴＢ０の２つのエントリ（ＩＤが「１」，「２」であるエントリ）と同じ内容がそれぞれ格納されている。
【００２７】
フローテーブルＴＢ１の優先度が「２０００」に設定されたエントリの１つ（ＩＤが「３」であるエントリ）には、条件及び処理としてそれぞれ以下の情報が格納されている。
［条件］
・送信元アドレス（ＳＡＤＤＲ）＝「１０．０．０．９」
・送信先アドレス（ＤＡＤＤＲ）＝「１０．０．０．１」
・プロトコル（ＰＲＯＴＯＣＯＬ）＝「ＵＤＰ」
・送信元のポート番号（ＳＰＯＲＴ）＝「ａｎｙ」
・送信先のポート番号（ＤＰＯＲＴ）＝「５３」
［処理］
・ｏｕｔｐｕｔ
・物理ポート（Ｐｏｒｔ）＝「１２」
【００２８】
また、フローテーブルＴＢ１の優先度が「２０００」に設定されたエントリのもう１つ（ＩＤが「４」であるエントリ）には、条件及び処理としてそれぞれ以下の情報が格納されている。
［条件］
・送信元アドレス（ＳＡＤＤＲ）＝「１０．０．０．１」
・送信先アドレス（ＤＡＤＤＲ）＝「１０．０．０．９」
・プロトコル（ＰＲＯＴＯＣＯＬ）＝「ＵＤＰ」
・送信元のポート番号（ＳＰＯＲＴ）＝「５３」
・送信先のポート番号（ＤＰＯＲＴ）＝「ａｎｙ」
［処理］
・ｏｕｔｐｕｔ
・物理ポート（Ｐｏｒｔ）＝「１」
【００２９】
つまり、フローテーブルＴＢ１のＩＤが「３」であるエントリには、条件として「送信元がホストＨ１であって、送信先がホストＨ２の５３番ポートであるＵＤＰデータ（データグラム）」なる情報が格納されており、処理として「物理ポートＰ１２に出力」なる情報が格納されている。また、フローテーブルＴＢ１のＩＤが「４」であるエントリには、条件として「送信元がホストＨ２の５３番ポートであって、送信先がホストＨ１であるＵＤＰデータ（データグラム）」なる情報が格納されており、処理として「物理ポートＰ１に出力」なる情報が格納されている。即ち、フローテーブルＴＢ１には、ＯＦＳ１１に設けられた複数の物理ポートＰ１〜Ｐ１２のうち、ホストＨ１，Ｈ２間の実際の経路に即してデータを出力すべき物理ポートを示す情報が格納されている。
【００３０】
同様に、フローテーブルＴＢ２のＩＤが「３」であるエントリには、条件として「送信元がホストＨ１であって、送信先がホストＨ２の５３番ポートであるＵＤＰデータ（データグラム）」なる情報が格納されており、処理として「物理ポートＰ６に出力」なる情報が格納されている。また、フローテーブルＴＢ２のＩＤが「４」であるエントリには、条件として「送信元がホストＨ２の５３番ポートであって、送信先がホストＨ１であるＵＤＰデータ（データグラム）」なる情報が格納されており、処理として「物理ポートＰ７に出力」なる情報が格納されている。即ち、フローテーブルＴＢ２には、ＯＦＳ１２に設けられた複数の物理ポートＰ１〜Ｐ１２のうち、ホストＨ１，Ｈ２間の実際の経路に即してデータを出力すべき物理ポートを示す情報が格納されている。
【００３１】
ここで、図３に例示するフローテーブルＴＢ１，ＴＢ２では、優先度が「１０００」に設定された２つのエントリ（ＩＤが「１」，「２」であるエントリ）よりも、優先度が「２０００」に設定された２つのエントリ（ＩＤが「３」，「４」であるエントリ）が優先される。このため、図３に例示するフローテーブルＴＢ１，ＴＢ２が用いられる場合には、ホストＨ１，Ｈ２間の実際の経路に即したデータの転送処理が行われることになる。
【００３２】
次に、上記構成におけるデータ転送システム１の動作について説明する。図４は、本発明の第１実施形態によるデータ転送システムの動作の一例を示すタイミングチャートである。尚、図４に示す処理は、例えばネットワークＮ１が新たに構築された場合、ネットワークＮ１の変更が行われた場合、或いはネットワークＮ１の管理者からの指示があった場合等に開始される。
【００３３】
処理が開始されると、まずＯＦＣ２０からネットワークＮ２を介してＯＦＳ１１，１２にメッセージ（Flow＿Modメッセージ）が送信され、ネットワークＮ１を介した通信を許可する条件であるホワイトリストを登録する処理が行われる（ステップＳ１０：第１ステップ）。具体的には、図２に示す仮のフローテーブルＴＢ０（条件に適合したデータをＯＦＣ２０に出力すべき旨を示す情報が格納されたテーブル）を、フローテーブルＴＢ１，ＴＢ２としてＯＦＳ１１，１２にそれぞれ設定する処理が行われる。
【００３４】
以上の処理が完了すると、ＤＮＳサーバとしてのホストＨ２のＭＡＣ（Media Access Control）アドレスを得るために、ＤＮＳクライアントとしてのホストＨ１からＡｒｐ（Address Resolution Protocol）リクエストがブロードキャストされる（ステップＳ１１）。ホストＨ１によってブロードキャストされたＡｒｐリクエストは、ＯＦＳ１１で受信された後に予め規定されたルールに従って不図示の制御ポート（Ｃｔｒｌ）に出力され、ネットワークＮ２を介してメッセージ（Packet＿Inメッセージ）としてＯＦＣ２０に送信される（ステップＳ１２）。
【００３５】
ここで、ＯＦＳ１１から送信されてきたメッセージ（Packet＿Inメッセージ）には、ＡｒｐリクエストをブロードキャストしたホストＨ１が接続されているＯＦＳ及びポートを特定する情報が含まれている。このため、ＯＦＣ２０では、ホストＨ１の接続位置を示す情報（ホストＨ１がＯＦＳ１１の物理ポートＰ１に接続されている旨を示す情報）を記録する処理が行われる（ステップＳ１３）。
【００３６】
また、ＯＦＳ１１からのメッセージ（Packet＿Inメッセージ）を受信すると、ＯＦＣ２０では、メッセージ（Ａｒｐリクエストをブロードキャストすべき旨を示すFloodメッセージ）を、ネットワークＮ２を介してＯＦＳ１１，１２に送信する処理が行われる（ステップＳ１４）。この処理は、Ａｒｐリクエストを送信すべきホストＨ２が、ＯＦＳ１１，１２の何れに接続されているかが不明であるために行われる。これにより、ＯＦＳ１１，１２において、接続関係が不明な全ての物理ポート（ＯＦＳ１１の物理ポートＰ２〜Ｐ１１及びＯＦＳ１２の物理ポートＰ１〜Ｐ６，Ｐ８〜Ｐ１２）から、Ａｒｐリクエストをブロードキャストする処理が行われる（ステップＳ１５）。
【００３７】
以上の処理が行われると、ホストＨ１からのＡｒｐリクエストが、ＯＦＳ１２の物理ポートＰ６に接続されたホストＨ２で受信される。これにより、ホストＨ２からは、Ａｒｐリクエストに対する返信としてのＡｒｐリプライが送信される（ステップＳ１６）。ホストＨ２から送信されたＡｒｐリプライは、ＯＦＳ１２で受信された後に、ネットワークＮ２を介してメッセージ（Packet＿Inメッセージ）としてＯＦＣ２０に送信される（ステップＳ１７）。
【００３８】
ここで、ＯＦＳ１２から送信されてきたメッセージ（Packet＿Inメッセージ）には、Ａｒｐリプライを送信したホストＨ２が接続されているＯＦＳ及びポートを特定する情報が含まれている。このため、ＯＦＣ２０では、ホストＨ２の接続位置を示す情報（ホストＨ２がＯＦＳ１２の物理ポートＰ６に接続されている旨を示す情報）を記録する処理が行われる（ステップＳ１８）。
【００３９】
また、ＯＦＳ１２からのメッセージ（Packet＿Inメッセージ）を受信すると、ＯＦＣ２０では、メッセージ（Packet＿Outメッセージ）を、ネットワークＮ２を介してＯＦＳ１１に送信する処理が行われる（ステップＳ１９）。この処理は、ステップＳ１３の処理にて、Ａｒｐリプライを送信すべきホストＨ１がＯＦＳ１１の物理ポートＰ１に接続されていることが既知であるために行われる。
【００４０】
ＯＦＣ２０から送信されたメッセージ（Packet＿Outメッセージ）がＯＦＳ１１で受信されると、ＯＦＳ１１の物理ポートＰ１からＡｒｐリプライが出力される（ステップＳ２０）。これにより、ホストＨ２からのＡｒｐリプライが、ＯＦＳ１１の物理ポートＰ１に接続されたホストＨ１で受信され、ホストＨ１では、ＤＮＳサーバとしてのホストＨ２のＭＡＣアドレスが得られる。
【００４１】
以上の処理が完了すると、ＤＮＳクライアントとしてのホストＨ１からＤＮＳサーバとしてのホストＨ２に対し、データパケット（ＤＮＳクエリ）が送信される（ステップＳ２１）。これは、ホストＨ１が、例えばネットワークＮ１に接続された他のホスト（図示省略）のＩＰアドレスを問い合わせるために行われる。
【００４２】
ホストＨ１からのＤＮＳクエリを受信すると、ＯＦＳ１１では、フローテーブルＴＢ１（図２に示す仮のフローテーブルＴＢ０）を参照した転送処理が行われる。ここで、ホストＨ１から送信されたＤＮＳクエリは、「送信先がホストＨ２の５３番ポートであるＵＤＰデータ（データグラム）」であり、図２に示す仮のフローテーブルＴＢ０のＩＤが「１」であるエントリに格納された条件に適合する。このため、ＯＦＳ１１では、図２に示す仮のフローテーブルＴＢ０のＩＤが「１」であるエントリに格納された処理に従い、ホストＨ１からのＤＮＳクエリを、メッセージ（Packet＿Inメッセージ）として不図示の制御ポート（Ｃｔｒｌ）に出力する処理が行われる。
【００４３】
ＯＦＳ１１の不図示の制御ポートから出力されたメッセージ（Packet＿Inメッセージ）は、ネットワークＮ２を介してＯＦＣ２０に送信される（ステップＳ２２）。ＯＦＳ１１からのメッセージ（Packet＿Inメッセージ）を受信すると、ＯＦＣ２０は、ホストＨ１からホストＨ２への経路を求める処理を行う。この処理は、ＯＦＣ２０が、ステップＳ１３，Ｓ１８の処理によってホストＨ１，Ｈ２の接続位置は把握しているものの、その接続位置の間の経路を把握していないために行われる。
【００４４】
ホストＨ１からホストＨ２への経路が求められると、ＯＦＣ２０からネットワークＮ２を介してＯＦＳ１１，１２にメッセージ（Flow＿Modメッセージ）が送信され、ホストＨ１からホストＨ２への経路が反映されたフローテーブルを登録する処理が行われる（ステップＳ２３：第２ステップ）。具体的には、フローテーブルＴＢ１，ＴＢ２としてＯＦＳ１１，１２に設定された仮のフローテーブルＴＢ０（図２参照）を、図３に示すＩＤが「３」であるエントリが追加されたフローテーブルＴＢ１，ＴＢ２にそれぞれ更新する処理が行われる。
【００４５】
ここで、図３に示すフローテーブルＴＢ１，ＴＢ２の新たに追加されたエントリ（ＩＤが「３」であるエントリ）は、元のエントリ（ＩＤが「１」，「２」であるエントリ）よりも高い優先度が設定されている。このため、仮のフローテーブルＴＢ０の更新処理が行われた後は、ＯＦＳ１１，１２では、フローテーブルＴＢ１，ＴＢ２の新たに追加されたエントリ（ＩＤが「３」であるエントリ）を優先してデータの転送処理が行われることになる。
【００４６】
また、ＯＦＳ１１からのメッセージ（Packet＿Inメッセージ）を受信すると、ＯＦＣ２０では、メッセージ（Packet＿Outメッセージ）を、ネットワークＮ２を介してＯＦＳ１１に送信する処理が行われる（ステップＳ２４）。この処理は、ステップＳ２３の処理にて、仮のフローテーブルＴＢ０が、ホストＨ１からホストＨ２への経路が反映されたフローテーブルＴＢ１，ＴＢ２に更新されことから、ＯＦＳ１１に対し、ホストＨ１からのＤＮＳクエリをホストＨ２に向けて転送させるために行われる。
【００４７】
ＯＦＣ２０からのメッセージ（Packet＿Outメッセージ）を受信すると、ＯＦＳ１１では、フローテーブルＴＢ１を参照した転送処理が行われる。ここで、ＯＦＣ２０からのメッセージに含まれるＤＮＳクエリは、「送信元がホストＨ１であって、送信先がホストＨ２の５３番ポートであるＵＤＰデータ（データグラム）」であり、図３に示すフローテーブルＴＢ１のＩＤが「３」であるエントリに格納された条件に適合する。このため、ＯＦＳ１１では、図３に示すフローテーブルＴＢ１のＩＤが「３」であるエントリに格納された処理に従い、ＤＮＳクエリを物理ポートＰ１２に出力する処理が行われる（ステップＳ２５）。
【００４８】
ＯＦＳ１１から出力されたＤＮＳクエリは、ＯＦＳ１２の物理ポートＰ７に入力されてＯＦＳ１２で受信される。ＯＦＳ１１からのＤＮＳクエリを受信すると、ＯＦＳ１２では、フローテーブルＴＢ２を参照した転送処理が行われる。ここで、ＯＦＳ１２からのメッセージに含まれるＤＮＳクエリは、図３に示すフローテーブルＴＢ２のＩＤが「３」であるエントリに格納された条件に適合する。このため、ＯＦＳ１２では、図３に示すフローテーブルＴＢ２のＩＤが「３」であるエントリに格納された処理に従い、ＤＮＳクエリを物理ポートＰ６に出力する処理が行われる（ステップＳ２６）。これにより、ホストＨ１からのＤＮＳクエリが、ＯＦＳ１２の物理ポートＰ６に接続されたホストＨ２で受信される。
【００４９】
上述のステップＳ２３の処理によって、ＯＦＳ１１，１２には、ホストＨ１からホストＨ２への経路が反映されたフローテーブルＴＢ１，ＴＢ２がそれぞれ設定されている。このため、以後ホストＨ１からＤＮＳクエリが送信されると、ＯＦＣ２０に対するメッセージの送信は行われずに、フローテーブルＴＢ１，ＴＢ２を参照した転送処理がＯＦＳ１１，１２の各々で行われる。これにより、ホストＨ１からのＤＮＳクエリは、ネットワークＮ１を介してホストＨ２に転送される（ステップＳ２７〜Ｓ２９）。
【００５０】
ここで、図４においては図示を省略しているが、ホストＨ２がホストＨ１からのＤＮＳクエリを受信した場合には、ホストＨ２からホストＨ１に向けてＤＮＳレスポンスが送信される。このＤＮＳレスポンスが送信される際には、図４示すステップＳ１１〜Ｓ２６と同様の処理が行われる。但し、図４中のホストＨ１，Ｈ２を入れ替え、ＯＦＳ１１，１２を入れ替え、図４中の「DNS Query」を「DNS Response」と読み替える必要がある。尚、ホストＨ２がホストＨ１からのＡｒｐリクエストを受信した場合に、ホストＨ１のＭＡＣアドレスを得るようにすれば、ステップＳ１１〜Ｓ２０に相当する処理は省略することができる。
【００５１】
ホストＨ２からＤＮＳレスポンスが送信される際に、図４に示すステップＳ２３に相当する処理が行われることによって、ＯＦＳ１１，１２に設定されたフローテーブルＴＢ１，ＴＢ２には、図３に示すＩＤが「４」であるエントリが追加される。これにより、ＯＦＳ１２では、フローテーブルＴＢ２に基づいてホストＨ２からのＤＮＳレスポンスを物理ポートＰ７に出力する処理が行われ、ＯＦＳ１１では、フローテーブルＴＢ１に基づいてＯＦＳ１２からのＤＮＳレスポンスを物理ポートＰ１に出力する処理が行われる。このようにして、ホストＨ２からのＤＮＳレスポンスがネットワークＮ１を介してホストＨ１に転送される。
【００５２】
尚、ネットワークＮ１からホストＨ１，Ｈ２が外されると、その旨を示す情報がＯＦＳ１１，１２からネットワークＮ２を介してＯＦＣ２０に通知される。このような情報が通知された場合には、ネットワークＮ１から外されたホストＨ１，Ｈ２に紐付いている情報を削除させる旨の制御信号が、ＯＦＣ２０からネットワークＮ２を介してＯＦＳ１１，１２に送信される。
【００５３】
以上の通り、本実施形態では、ホストＨ１，Ｈ２間の経路が不明な場合に、仮のフローテーブルＴＢ０をＯＦＳ１１，１２に設定し、ホストＨ１，Ｈ２間の経路を示す経路情報が得られた場合に、仮のフローテーブルＴＢ０を、その経路情報に基づいて内容が更新されたフローテーブルＴＢ１，ＴＢ２に更新してデータの転送制御を行うようにしている。ここで、上記の仮のフローテーブルＴＢ０は、受信したデータに対する条件と、この条件に適合したデータをＯＦＣ２０に出力させる処理とが規定されたフローテーブルである。このため、本実施形態では、ネットワークＮ１の具体的構成を事前に把握していなくとも、ホワイトリスト的な厳密な転送制御を適時に行うことが可能である。
【００５４】
ここで、上記の仮のフローテーブルＴＢ０を用いずに、条件に適合しないデータの処理ルールをＯＦＳ１１，１２がＯＦＣ２０に問い合わせる方法も考えられる。しかしながら、このような方法では、悪意のある者が、条件に適合しないデータを大量に送信した場合には、データ転送システム１の障害が生ずる可能性が考えられる。本実施形態は、受信したデータに対する条件と、この条件に適合したデータをＯＦＣ２０に出力させる処理とが規定された仮のフローテーブルＴＢ０を用いているため、上記の障害の発生を防止することができ、セキュリティを高めることができる。
【００５５】
尚、上記実施形態では、ホストＨ１からホストＨ２に対してＤＮＳクエリが送信されるタイミングで、仮のフローテーブルＴＢ０を更新する処理（ステップＳ２３の処理）が行われる例について説明した。しかしながら、仮のフローテーブルＴＢ０を更新する処理が行われるタイミングは、ホストＨ１とホストＨ２との間の経路（一部の経路でも良い）を示す経路情報が得られたタイミング、或いは上記の経路情報が得られてから最初にホストＨ１からホストＨ２に対して何らかのデータが送信されるタイミングであっても良い。
【００５６】
例えば、図４に示す例において、ステップＳ１１〜Ｓ１８の処理が行われれば、ホストＨ１，Ｈ２間の経路を示す経路情報を求めることができる。このため、ステップＳ１８の処理を終えたタイミングで、ＯＦＣ２０がホストＨ１，Ｈ２間の経路を示す経路情報を求めて、仮のフローテーブルＴＢ０を更新する処理（ステップＳ２３の処理に相当する処理）を行っても良い。また、図４では、ホストＨ１，Ｈ２間のデータ送受信がユニキャストで行われる例を図示しているが、ホストＨ１，Ｈ２間のデータ送受信はマルチキャストにて行われても良い。但し、Ａｒｐは送られないため、ＩＧＲＰ（Interior Gateway Routing Protocol）等のメッセージを用いてホストＨ１，Ｈ２の接続ポートを知る必要がある。
【００５７】
また、上記実施形態では、仮のフローテーブルＴＢ０を更新する処理（ステップＳ２３の処理）が行われた後に、ＯＦＣ２０からＯＦＳ１１にメッセージ（Packet＿Outメッセージ）が送信され（ステップＳ２４）、ＯＦＳ１１，１２の転送処理によってホストＨ１からのＤＮＳクエリがホストＨ２に転送される例について説明した。しかしながら、ＯＦＳ１１に代えてＯＦＳ１２にメッセージ（Packet＿Outメッセージ）を送信し、ＯＦＳ１２のみの転送処理によってホストＨ１からのＤＮＳクエリがホストＨ２に転送されるようにしても良い。このようにすることで、ＯＦＳ１１での転送処理を省略することができ、転送に要する時間を短縮することができる。
【００５８】
或いは、ＯＦＳ１１がホストＨ１からのデータを一時的に記憶するメモリを有する場合には、ホストＨ１からのＤＮＳクエリを受信したときに、受信したＤＮＳクエリをメモリに一時的に記憶し、その旨を示す情報をステップＳ２２の処理にてＯＦＣ２０に送信するようにしても良い。このような場合には、仮のフローテーブルＴＢ０を更新する処理（ステップＳ２３）が行われた後に、ＯＦＣ２０からの指示に基づいて、ＯＦＳ１１がフローテーブルＴＢ１を参照して一時的に記憶したＤＮＳクエリの転送処理をするようにすれば良い。
【００５９】
次に、以上説明したデータ転送システム１を、プラントに構築されるプロセス制御システムに適用した例について説明する。尚、上記のプラントとしては、化学等の工業プラントの他、ガス田や油田等の井戸元やその周辺を管理制御するプラント、水力・火力・原子力等の発電を管理制御するプラント、太陽光や風力等の環境発電を管理制御するプラント、上下水やダム等を管理制御するプラント等がある。
【００６０】
図５は、本発明の第１実施形態によるデータ転送システムが適用されるプロセス制御システムを説明する図であって、（ａ）はプロセス制御システムの階層構造を説明する図であり、（ｂ）はデータ転送システムが適用されたプロセス制御システムを例示する図である。図５（ａ）に示す通り、プラントに構築されるプロセス制御システムは、複数の階層（レベル０〜４の階層）からなる階層構造とされている。このような階層構造は、例えば国際標準規格ＩＥＣ／ＩＳＯ ６２２６４で規定されている。
【００６１】
レベル４の階層は、企業の経営、営業等の業務が行われる階層であり、基幹業務システム（ＥＲＰ：Enterprise Resource Planning）や、ＰＡＭ（Plant Asset Management）と呼ばれる統合機器管理システム等が構築される。これに対し、レベル３以下の階層は、産業制御システム（ＩＣＳ：Industrial Control System）と呼ばれる階層であり、製品の製造等が行われる階層である。このレベル３以下の階層は、製品に関わる制御が行われ、危険物が取り扱われることもあるため、高いセキュリティが求められる。
【００６２】
具体的に、レベル３の階層には、製造実行システム（ＭＥＳ：Manufacturing Execution System）や、プラント情報管理システム（ＰＩＭＳ：Plant Information Management System）等が構築される。また、レベル１，２の階層には、プラントに設置されたフィールド機器と、これらフィールド機器を制御するＦＣＳ（Field Control Station）とを備える分散制御システム（ＤＣＳ：Distributed Control System）等が構築される。
【００６３】
上述の通り、プラントの制御を行うレベル３以下の階層は高いセキュリティが求められることから、レベル３以下に構築されるネットワークは、基本的にはレベル４に構築されるネットワークから切り離される。また、レベル１，２の階層に構築されるネットワークは、制御用通信のトラフィックを保護する観点から、基本的にはレベル３の階層に構築されるネットワークから分離されて運用される。
【００６４】
図５（ｂ）に示す通り、データ転送システム１は、例えばレベル３の階層に適用され、ＯＦＳ１１はレベル２，３間に設けられるスイッチＳＷ１として用いられ、ＯＦＳ１２は、レベル３，４間に設けられるスイッチＳＷ２として用いられる。また、データ転送システム１をなすＯＦＳ１１，１２は、レベル３の階層に構築されるネットワークをなすスイッチＳＷ３として用いることもできる。尚、図５（ｂ）に示す例では、レベル３の階層に構築されるネットワークが、２つの通信グループＧ１，Ｇ２に論理的に分けられている。
【００６５】
図５（ｂ）に示す通り、データ転送システム１をプロセス制御システムに適用することで、レベル３の階層に構築されたネットワークにおいて、ホワイトリスト的な厳密な転送制御を適時に行うことが可能である。これにより、他のレベル（レベル２，４）の階層との間でやりとりされるデータを厳密に管理できるばかりではなく、同じレベル３の階層内でやりとりされるデータを厳密に管理することができる。このような管理は、スイッチＳＷ１〜ＳＷ３が異なるベンダが提供されたものである場合（或いは、異なる種類のものである場合）であっても、レベル３に構築されたネットワークの具体的構成を事前に把握していない場合であっても可能である。
【００６６】
〔第２実施形態〕
図６は、本発明の第２実施形態によるデータ転送システムの要部構成を示すブロック図である。図６に示す通り、本実施形態のデータ転送システム２は、オープンフロー仕様に準拠したＯＦＳ３１、オープンフロー仕様に準拠していないスイッチ３２，３３、及びＯＦＣ４０を備えており、ＯＦＣ４０の制御の下で、ＯＦＳ３１及びスイッチ３２，３３が送信元から送信されてくるデータを送信先に向けて転送する。
【００６７】
つまり、本実施形態のデータ転送システム２は、オープンフロー仕様に準拠したＯＦＳ３１とオープンフロー仕様に準拠していないスイッチ３２，３３とがネットワークに混在しており、これらＯＦＳ３１及びスイッチ３２，３３をＯＦＣ４０が一括して制御するものである。尚、図６では、理解を容易にするために、オープンフロー仕様に準拠した１つのＯＦＳ３１と、オープンフロー仕様に準拠していない２つのスイッチ３２，３３とを備えるデータ転送システム２を図示しているが、データ転送システム２に設けられるＯＦＳ及びスイッチの数は任意である。
【００６８】
ＯＦＳ３１は、図１に示すＯＦＳ１１，１２と同様のものであり、ＯＦＣ４０によって管理されるフローテーブル（図２，３に示すフローテーブルＴＢ１，ＴＢ２と同様のフローテーブル）を参照してデータの転送処理を行う。スイッチ３２，３３は、不図示のアクセス制御リスト（ＡＣＬ）を備えており、このアクセス制御リストの内容を参照してデータの転送処理を行う。スイッチ３２は、Ｎｅｔｃｏｎｆ（Network Configuration Protocol）に対応しており、Ｎｅｔｃｏｎｆに準拠した通信を行ってアクセス制御リストの設定を行う。また、スイッチ３３は、ＳＮＭＰ（Simple Network Management Protocol）に対応しており、ＳＮＭＰに準拠した通信を行ってアクセス制御リストの設定を行う。
【００６９】
ＯＦＣ４０は、図１に示すＯＦＣ２０と同様に、ＯＦＳ３１で用いられるフローテーブルを管理することによってネットワーク（ＯＦＳ３１及びスイッチ３２，３３等によって構成される不図示のネットワーク）を介して転送されるデータの転送制御を行う。但し、ＯＦＣ４０は、ＯＦＳ３１で用いられるフローテーブルに加えて、スイッチ３２，３３で用いられるアクセス制御リストも管理する点が、図１に示すＯＦＣ２０とは異なる。
【００７０】
図６に示す通り、ＯＦＣ４０は、コンバータ４１（生成部）及び通信部４２〜４４を備えており、不図示のメモリに記憶されたホワイトリストＷＬ（条件リスト）及び機器リストＤＬに基づいてＯＦＳ３１で用いられるフローテーブル（図２に示す仮のフローテーブルＴＢ０と同様のテーブル）及びスイッチ３２，３３で用いられるアクセス制御リストを生成する。そして、生成したフローテーブル及びアクセス制御リストを、ＯＦＳ３１及びスイッチ３２，３３にそれぞれ設定する。
【００７１】
上記のホワイトリストＷＬは、ネットワークを介したデータの転送制御の条件を規定するリストである。このホワイトリストＷＬには、例えば図２，３に示すフローテーブルＴＢ１，ＴＢ２における条件のように、ネットワークの具体的構成によらず、抽象的な内容（例えば、送信元及び送信先のアドレス、送信元及び送信先のポート番号等）が規定されている。上記の機器リストＤＬは、ネットワークに接続された機器毎に、機器を特定する識別情報、機器がオープンフロー仕様に準拠しているか否かを示す情報、及び機器が対応しているプロトコルを示す情報等が対応づけられたリストである。尚、上記のホワイトリストＷＬ及び機器リストＤＬは、例えばネットワークの管理者によって作成される。
【００７２】
コンバータ４１は、ホワイトリストＷＬ及び機器リストＤＬを読み込み、その内容に従ってＯＦＳ３１に適したフローテーブル及びスイッチ３２，３３に適したアクセス制御リストをそれぞれ生成する。具体的に、コンバータ４１は、ホワイトリストＷＬの内容が条件として規定され、この条件に適合した場合にデータをＯＦＣ４０に出力すべき旨を示す情報が規定された仮のフローテーブルＴＢ０（図２参照）をＯＦＳ３１用に生成する。また、コンバータ４１は、Ｎｅｔｃｏｎｆに準拠した通信に適したアクセス制御リスト及びＳＮＭＰに準拠した通信に適したアクセス制御リストをスイッチ３２，３３用にそれぞれ生成する。
【００７３】
通信部４２は、オープンフロー用のプロトコルに対応しており、ＯＦＳ３１との間で通信を行ってコンバータ４１で生成された仮のフローテーブルをＯＦＳ３１に設定する。通信部４３は、Ｎｅｔｃｏｎｆに対応しており、スイッチ３２との間でＮｅｔｃｏｎｆに準拠した通信を行ってコンバータ４１で生成されたアクセス制御リストをスイッチ３２に設定する。通信部４４は、ＳＮＭＰに対応しており、スイッチ３３との間でＳＮＭＰに準拠した通信を行ってコンバータ４１で生成されたアクセス制御リストをスイッチ３３に設定する。尚、図６では、理解を容易にするために、上記の各プロトコルに対応する通信部４２〜４４を個別に図示しているが、これら通信部４２〜４４は１つにまとめられていても良い。
【００７４】
上記構成におけるデータ転送システム２では、まずネットワークの管理者によってホワイトリストＷＬ及び機器リストＤＬが作成される。次に、ネットワークの管理者からの指示があると、ホワイトリストＷＬ及び機器リストＤＬがコンバータ４１によって読み込まれ、ＯＦＳ３１に適したフローテーブル及びスイッチ３２，３３に適したアクセス制御リストがそれぞれ生成される。続いて、通信部４２によってＯＦＳ３１との間で通信が行われ、コンバータ４１によって生成されたフローテーブルがＯＦＳ３１に設定されるとともに、通信部４３，４４によってスイッチ３２，３３との間で通信が行われ、コンバータ４１によって生成されたアクセス制御リストがスイッチ３２，３３にそれぞれ設定される。
【００７５】
以上の通り、本実施形態では、ホワイトリストＷＬ及び機器リストＤＬに基づいて、ＯＦＳ３１に適したフローテーブルとスイッチ３２，３３に適したアクセス制御リストとが自動的に作成される。これにより、ネットワークの管理者は、オープンフロー仕様に準拠したＯＦＳ３１と、オープンフロー仕様に準拠していないスイッチ３２，３３とがネットワークに混在していても、ホワイトリストＷＬ及び機器リストＤＬを管理するだけで良くなり、管理が煩雑になることはない。
【００７６】
また、ネットワークの管理者が管理すべきホワイトリストＷＬは、送信元及び送信先のアドレス等のネットワークの具体的構成によらない抽象的な内容を規定したものである。このため、第１実施形態と同様に、ネットワークの管理者が、ネットワークの具体的構成を事前に把握していなくとも、ホワイトリスト的な厳密な転送制御を適時に行うことが可能である。
【００７７】
〔第３実施形態〕
図７は、本発明の第３実施形態によるデータ転送システムで用いられるＯＦＳの要部構成を示すブロック図である。本実施形態のデータ転送システムで用いられるＯＦＳ５０は、フローテーブルに基づいたデータの転送処理と、アクセス制御リストに基づいたデータのフィルタリング処理とが可能なもの（所謂、ハイブリッド型のもの）である。尚、本実施形態のデータ転送システムでは、図６に示されているＯＦＣ４０と同様に、ホワイトリストＷＬ等に基づいて、フローテーブル及びアクセス制御リストを作成可能なＯＦＣが用いられる。
【００７８】
図７に示す通り、ＯＦＳ５０は、フィルタ部５１、転送部５２、フィルタ部５３、メモリ５４、通信部５５、及び通信部５６を備える。フィルタ部５１は、転送部５２の前段に設けられており、メモリ５４に記憶されたアクセス制御リストを参照して入力されるデータのフィルタリング処理を行う。転送部５２は、メモリ５４に記憶されたフローテーブルを参照して、フィルタ部５１を介したデータの転送処理を行う。フィルタ部５３は、転送部５２の後段に設けられており、メモリ５４に記憶されたアクセス制御リストを参照して転送部５２から出力されるデータのフィルタリング処理を行う。尚、フィルタ部５１，５３の何れか一方は、省略されていても良い。
【００７９】
メモリ５４は、フィルタ部５１，５３に参照されるアクセス制御リスト及び転送部５２に参照されるフローテーブルを記憶する。尚、メモリ５４に記憶されるアクセス制御リストは、第２実施形態のスイッチ３２に適したものと同様のものであり、メモリ５４に記憶されるフローテーブルは、第２実施形態のＯＦＳ３１に適したものと同様のものである（図６参照）。
【００８０】
通信部５５は、オープンフロー用のプロトコルに対応しており、不図示のＯＦＣとの間で通信を行って、ＯＦＣで生成されたフローテーブル（図２に示す仮のフローテーブルＴＢ０）をメモリ５４に記憶させる。通信部５６は、ＮｅｔｃｏｎｆやＳＮＭＰに対応しており、不図示のＯＦＣとの間で通信を行って、ＯＦＣで生成されたアクセス制御リストをメモリ５４に記憶させる。尚、第２実施形態と同様に、これら通信部５５，５６は１つにまとめられていても良い。
【００８１】
本実施形態においても、第２実施形態と同様に、まずネットワークの管理者によってホワイトリストＷＬ等が作成され、ネットワークの管理者から不図示のＯＦＣに対する指示があると、ホワイトリストＷＬ等に基づいて上述したフローテーブル及びアクセス制御リストがそれぞれ生成される。次いで、ＯＦＳ５０の通信部５５，５６と不図示のＯＦＣとの間で通信が行われ、不図示のＯＦＣで生成されたフローテーブル及びアクセス制御リストがＯＦＳ５０のメモリ５４に記憶される。そして、ＯＦＳ５０のフィルタ部５１，５３では、メモリ５４に記憶されたアクセス制御リストを参照してデータのフィルタリング処理が行われ、ＯＦＳ５０の転送部５２では、メモリ５４に記憶されたフローテーブルを参照してデータの転送処理が行われる。
【００８２】
以上の通り、本実施形態では、ホワイトリストＷＬ等に基づいて作成されたフローテーブルに基づいた転送処理がＯＦＳ５０の転送部５２で行われ、ホワイトリストＷＬ等に基づいて作成されたアクセス制御リストに基づいたフィルタリング処理がＯＦＳ５０のフィルタ部５１，５３で行われる。これにより、ネットワークの管理者は、ハイブリッド型のＯＦＳ５０がネットワークに接続されていても、ホワイトリストＷＬ及び機器リストＤＬを管理するだけで良くなり、管理が煩雑になることはない。尚、ＯＦＳ５０は、フィルタ部５１、転送部５２、及びフィルタ部５３の何れか１つを用いることでアクセスコントロールを行うことが可能である。
【００８３】
また、本実施形態においても、ネットワークの管理者が管理すべきホワイトリストＷＬは、送信元及び送信先のアドレス等のネットワークの具体的構成によらない抽象的な内容を規定したものである。このため、第２実施形態と同様に、ネットワークの管理者が、ネットワークの具体的構成を事前に把握していなくとも、ホワイトリスト的な厳密な転送制御を適時に行うことが可能である。
【００８４】
〔変形例〕
〈第１変形例〉
一般的に、オープンフロー仕様に準拠したフローテーブルは、使用可能な期間であるライフタイム（寿命）を有する。前述した第１〜第３実施形態で用いられる仮のフローテーブルＴＢ０及びフローテーブルＴＢ１，ＴＢ２に対しては、有限のライフタイムを設定しても良く、無限のライフタイムを設定しても良い。
【００８５】
有限のライフタイムを設定した場合には、ライフタイムが到来するとフローテーブルが自動的に削除される。このため、例えばネットワークの管理者がライフタイムを超過したフローテーブルを削除し忘れるといった事態を防止できるため、セキュリティを高めることができる。これに対し、無限のライフタイムを設定した場合には、ネットワークの管理者の削除指示がなければフローテーブルは削除されない。このため、ネットワークの管理者の知らないうちにフローテーブルが削除されるといった事態を防止できるため、フローテーブルの管理をネットワークの管理者の意図に即して明示的に行うことができる。
【００８６】
〈第２変形例〉
前述した第１〜第３実施形態において、ＯＦＣ２０，４０等にタイマを設け、ＯＦＳ１１，１２，３１，５０等に対して仮のフローテーブルＴＢ０を設定する処理（図４中のステップＳ１０の処理）、或いは設定した仮のフローテーブルＴＢ０を削除する処理を、予め規定されたスケジュールに従って自動的に行うようにしても良い。これにより、ネットワークを介した通信を特定の期間のみ可能にし、或いはネットワークを介した通信を一時的に可能にするといった運用か可能であり、安全性を高めることができる。
【００８７】
〈第３変形例〉
図８は、本発明の実施形態によるデータ転送システムで用いられるＯＦＳの変形例を示す図である。図８に示す通り、ＯＦＳ６０は、転送部６１及び複数の物理ポートＰ１，Ｐ２を備えており、不図示のメモリに記憶されたフローテーブルを参照してデータの転送処理を行う。転送部６１は、図７に示す転送部５２と同様のものである。尚、図８では、２つの物理ポートＰ１，Ｐ２を備えるＯＦＳ６０を図示しているが、ＯＦＳ６０に設けられる物理ポートの数は任意である。
【００８８】
ここで、ＯＦＳ６０の物理ポートＰ１，Ｐ２には複数のキューＱ１〜Ｑ３が設けられており、キューＱ１〜Ｑ３の各々には互いに異なる帯域幅を割り当てることが可能である。特定のフローにキューを割り当てるには、フローが出力される物理ポートを特定し、特定した物理ポートに設けられている複数のキューのうちの割り当てるべきキューを指定する必要がある。
【００８９】
前述した実施形態では、図４を用いて説明した通り、物理ポートが指定されていない仮のフローテーブルＴＢ０（図２参照）は、ネットワークの経路を示す経路情報が得られた場合に、物理ポートが特定されたフローテーブルＴＢ１，ＴＢ２（図３参照）に更新される。このため、本変形例において、帯域の割り当てを行いたいフロー毎の帯域をＯＦＣのホワイトリストＷＬ等に指定しておけば、ネットワークの経路を示す経路情報が得られて仮のフローテーブルＴＢ０が更新される際に、物理ポートが特定されるとともにキューが選択される。
【００９０】
ここで、フローや帯域の利用を可能にする設定を行う場合には、その設定がネットワーク運用上のポリシーに適合しているか否かを検証することが望ましい。例えば、図４に示すステップＳ１０の処理（ＯＦＣ２０が、仮のフローテーブルＴＢ０をＯＦＳ１１，１２に設定する処理）が行われる場合には、ネットワークの管理者は、仮のフローテーブルＴＢ０を利用するユーザが利用権限を有するか否かを検証することが望ましい。従って、図４に示すステップＳ１０の処理が行われる場合には、ＡＡＡ機能（Authentication（認証）、Authorization（認可）、Accounting（アカウンティング））を有するサーバへ問い合わせることが望ましい。これにより、設定者や機器の認証、権限の管理、課金情報の記録等が可能となる。
【００９１】
以上、本発明の実施形態によるデータ転送システム及び方法について説明したが、本発明は上記実施形態に制限される訳ではなく、本発明の範囲内で自由に変更が可能である。例えば、前述した第１実施形態では、図１に示すネットワークＮ１が、ＩＰｖ４プロトコルが用いられるネットワークであることを前提としてＡＲＰを用いてホストＨ１，Ｈ２間の経路を示す経路情報を得る例について説明した。しかしながら、本発明は、ネットワークＮ２が、ＩＰｖ６プロトコルが用いられるネットワークとである場合にも適用可能である。このようなネットワークでは、近隣者発見（Neighbor Discovery）プロトコルを用いてホストＨ１，Ｈ２間の経路を示す経路情報を得ることができる。また、上記実施形態では、オープンフロー仕様に準拠したものを例に挙げて説明したが、本発明は、ＳＤＮ（Software-Defined Network）を実現する他の機器において、オープンフローと同様の制約がある場合も利用可能である。
【符号の説明】
【００９２】
１，２            データ転送システム
１１，１２        ＯＦＳ
２０              ＯＦＣ
３１              ＯＦＳ
４０              ＯＦＣ
４１              コンバータ
５０              ＯＦＳ
６０              ＯＦＳ
Ｈ１，Ｈ２        ホスト
ＳＷ１〜ＳＷ３    スイッチ
ＴＢ０            仮のフローテーブル
ＴＢ１，ＴＢ２    フローテーブル
ＷＬ              ホワイトリスト
【図１】
0006332497.tif 000002
【図２】
0006332497.tif 000003
【図３】
0006332497.tif 000004
【図４】
0006332497.tif 000005
【図５】
0006332497.tif 000006
【図６】
0006332497.tif 000007
【図７】
0006332497.tif 000008
【図８】
0006332497.tif 000009