【文献】
Open Networking Foundation,OpenFlow Switch Specification, version 1.4.0,2013年10月
(58)【調査した分野】(Int.Cl.,DB名)
前記制御装置は、前記経路情報が得られたタイミング、或いは、前記経路情報が得られた後に前記送信元から前記送信先に最初にデータが送信されるタイミングで、前記仮テーブルの更新を行うことを特徴とする請求項1記載のプロセス制御システム。
前記転送装置で用いられる前記テーブル又は前記仮テーブルは、有限の寿命又は無限の寿命を設定可能であることを特徴とする請求項1から請求項3の何れか一項に記載のプロセス制御システム。
前記制御装置は、予め規定されたスケジュールに従って、前記転送装置に対する前記仮テーブルの設定及び削除の少なくとも一方を行うことを特徴とする請求項1から請求項3の何れか一項に記載のプロセス制御システム。
前記転送装置は、ポート毎に帯域の異なる複数のキューを有しており、前記仮テーブルが更新された場合に、前記ポート毎に前記キューを選択可能であることを特徴とする請求項1から請求項5の何れか一項に記載のプロセス制御システム。
前記第2ステップは、前記経路情報が得られたタイミング、或いは、前記経路情報が得られてから最初に前記送信元から前記送信先にデータが送信されるタイミングで行われることを特徴とする請求項7記載のデータ転送方法。
【発明を実施するための最良の形態】
【0016】
以下、図面を参照して本発明の実施形態によるデータ転送システム及び方法について詳
細に説明する。
【0017】
〔第1実施形態〕
図1は、本発明の第1実施形態によるデータ転送システムの要部構成を示すブロック図である。
図1に示す通り、本実施形態のデータ転送システム1は、OFS(OpenFlow Switch:転送装置)11,12、及びOFC(OpenFlow Controller:制御装置)20を備えており、OFC20の制御の下で、OFS11,12が送信元から送信されてくるデータを送信先に向けて転送する。尚、
図1では、理解を容易にするために、2つのOFS11,12を備えるデータ転送システム1を図示しているが、データ転送システム1に設けられるOFSの数は任意である。
【0018】
以下では、理解を容易にするために、ホストH1がデータの送信元であり、ホストH2がデータの送信先であるとする。また、ホストH1は、「10.0.0.9」なるIP(Internet Protocol)アドレスが割り当てられたDNS(Domain Name System)クライアントであり、ホストH2は、「10.0.0.1」なるIPアドレスが割り当てられたDNSサーバであるとする。これらホストH1,H2は、例えばノート型のコンピュータ、デスクトップ型のコンピュータ、タブレット型のコンピュータ、その他のコンピュータで実現される。
【0019】
OFS11,12は、複数の物理ポートP1〜P12を備えており、OFC20の制御の下で、受信したデータの転送処理を行う。具体的に、OFS11,12は、OFC20によって一括管理されるフローテーブル(FlowTable)TB1,TB2(テーブル:
図2,3参照)をメモリ(図示せず)に記憶しており、フローテーブルTB1,TB2を参照してデータの転送を転送部(図示せず)により行う。尚、フローテーブルTB1,TB2の詳細については後述する。
【0020】
図1に示す通り、OFS11の物理ポートP1にはホストH1が接続されており、OFS12の物理ポートP6にはホストH2が接続されており、OFS11の物理ポートP12とOFS12の物理ポートP7とが接続されている。これにより、ホストH1とホストH2との間において、データ転送用のネットワークN1が構築されている。また、OFS11,12は、物理ポートP1〜P12とは異なる制御ポート(図示省略)を介してOFC20に接続されており、これによりオープンフロー制御用のネットワークN2が構築されている。尚、OFS11,12に設けられる物理ポートの数は任意である。
【0021】
OFC20は、OFS11,12で用いられるフローテーブルTB1,TB2を一括管理することによってネットワークN1を介して転送されるデータの転送制御を行う。具体的に、OFC20は、ホストH1,H2間の経路が不明な場合には、メモリ(図示せず)に記憶されている仮のフローテーブルTB0(仮テーブル:
図2参照)をフローテーブルTB1,TB2としてOFS11,12にそれぞれ設定してデータの転送制御を制御部(図示せず)により行う。また、OFC20は、ホストH1,H2間の経路を示す経路情報が得られた場合には、仮のフローテーブルTB0を、その経路情報に基づいて内容が更新されたフローテーブルTB1,TB2(
図3参照)に更新してデータの転送制御を行う。このような仮のフローテーブルTB0の設定及び更新を行うのは、ネットワークN1の具体的構成を事前に把握していなくとも、ホワイトリスト的な厳密な転送制御を適時に行うためである。
【0022】
次に、OFC20によって管理されるフローテーブルについて説明する。
図2は、本発明の第1実施形態で用いられる仮のフローテーブルの一例を示す図である。また、
図3は、本発明の第1実施形態で用いられるフローテーブルの一例を示す図である。
図2,
図3に示す通り、仮のフローテーブルTB0及びフローテーブルTB1,TB2は、エントリ番号(ID)で特定されるエントリ毎に、優先度(Priority)が格納されるフィールド、転送制御を行う条件(match:第1情報)が格納されるフィールド、及び条件に適合した場合に実施すべき処理(Action:第2情報)が格納されるフィールドが設けられたテーブルである。尚、上記の優先度は、エントリの優先度を規定するものであり、値が大きな優先度が格納されているエントリほど優先される。
【0023】
図2に例示する仮のフローテーブルTB0には、優先度が「1000」に設定された2つのエントリが設けられている。IDが「1」であるエントリには、条件及び処理としてそれぞれ以下の情報が格納されている。
[条件]
・送信元アドレス(SADDR)=「any(任意)」
・送信先アドレス(DADDR)=「10.0.0.1」
・プロトコル(PROTOCOL)=「UDP(User Datagram Protocol)」
・送信元のポート番号(SPORT)=「any」
・送信先のポート番号(DPORT)=「53(DNSで用いられるポート番号)」
[処理]
・output
・物理ポート(Port)=「Ctrl」
【0024】
また、IDが「2」であるエントリには、条件及び処理としてそれぞれ以下の情報が格
納されている。
[条件]
・送信元アドレス(SADDR)=「10.0.0.1」
・送信先アドレス(DADDR)=「any」
・プロトコル(PROTOCOL)=「UDP」
・送信元のポート番号(SPORT)=「53」
・送信先のポート番号(DPORT)=「any」
[処理]
・output
・物理ポート(Port)=「Ctrl」
【0025】
つまり、IDが「1」であるエントリには、条件として「送信先がホストH2の53番ポートであるUDPデータ(データグラム)」なる情報が格納されており、処理として「不図示の制御ポート(Ctrl)に出力」なる情報が格納されている。また、IDが「2」であるエントリには、条件として「送信元がホストH2の53番ポートであるUDPデータ(データグラム)」なる情報が格納されており、処理として「不図示の制御ポートに出力」なる情報が格納されている。即ち、仮のフローテーブルTB0には、条件に適合したデータを、OFS11,12に設けられた不図示の制御ポートに接続されたOFC20に出力すべき旨を示す情報が格納されている。
【0026】
また、
図3に例示するフローテーブルTB1,TB2には、優先度が「1000」に設定された2つのエントリと、優先度が「2000」に設定された2つのエントリとがそれぞれ設けられている。フローテーブルTB1,TB2の優先度が「1000」に設定された2つのエントリ(IDが「1」,「2」であるエントリ)には、仮のフローテーブルTB0の2つのエントリ(IDが「1」,「2」であるエントリ)と同じ内容がそれぞれ格納されている。
【0027】
フローテーブルTB1の優先度が「2000」に設定されたエントリの1つ(IDが「3」であるエントリ)には、条件及び処理としてそれぞれ以下の情報が格納されている。
[条件]
・送信元アドレス(SADDR)=「10.0.0.9」
・送信先アドレス(DADDR)=「10.0.0.1」
・プロトコル(PROTOCOL)=「UDP」
・送信元のポート番号(SPORT)=「any」
・送信先のポート番号(DPORT)=「53」
[処理]
・output
・物理ポート(Port)=「12」
【0028】
また、フローテーブルTB1の優先度が「2000」に設定されたエントリのもう1つ(IDが「4」であるエントリ)には、条件及び処理としてそれぞれ以下の情報が格納されている。
[条件]
・送信元アドレス(SADDR)=「10.0.0.1」
・送信先アドレス(DADDR)=「10.0.0.9」
・プロトコル(PROTOCOL)=「UDP」
・送信元のポート番号(SPORT)=「53」
・送信先のポート番号(DPORT)=「any」
[処理]
・output
・物理ポート(Port)=「1」
【0029】
つまり、フローテーブルTB1のIDが「3」であるエントリには、条件として「送信元がホストH1であって、送信先がホストH2の53番ポートであるUDPデータ(データグラム)」なる情報が格納されており、処理として「物理ポートP12に出力」なる情報が格納されている。また、フローテーブルTB1のIDが「4」であるエントリには、条件として「送信元がホストH2の53番ポートであって、送信先がホストH1であるUDPデータ(データグラム)」なる情報が格納されており、処理として「物理ポートP1に出力」なる情報が格納されている。即ち、フローテーブルTB1には、OFS11に設けられた複数の物理ポートP1〜P12のうち、ホストH1,H2間の実際の経路に即してデータを出力すべき物理ポートを示す情報が格納されている。
【0030】
同様に、フローテーブルTB2のIDが「3」であるエントリには、条件として「送信元がホストH1であって、送信先がホストH2の53番ポートであるUDPデータ(データグラム)」なる情報が格納されており、処理として「物理ポートP6に出力」なる情報が格納されている。また、フローテーブルTB2のIDが「4」であるエントリには、条件として「送信元がホストH2の53番ポートであって、送信先がホストH1であるUDPデータ(データグラム)」なる情報が格納されており、処理として「物理ポートP7に出力」なる情報が格納されている。即ち、フローテーブルTB2には、OFS12に設けられた複数の物理ポートP1〜P12のうち、ホストH1,H2間の実際の経路に即してデータを出力すべき物理ポートを示す情報が格納されている。
【0031】
ここで、
図3に例示するフローテーブルTB1,TB2では、優先度が「1000」に設定された2つのエントリ(IDが「1」,「2」であるエントリ)よりも、優先度が「2000」に設定された2つのエントリ(IDが「3」,「4」であるエントリ)が優先される。このため、
図3に例示するフローテーブルTB1,TB2が用いられる場合には、ホストH1,H2間の実際の経路に即したデータの転送処理が行われることになる。
【0032】
次に、上記構成におけるデータ転送システム1の動作について説明する。
図4は、本発明の第1実施形態によるデータ転送システムの動作の一例を示すタイミングチャートである。尚、
図4に示す処理は、例えばネットワークN1が新たに構築された場合、ネットワークN1の変更が行われた場合、或いはネットワークN1の管理者からの指示があった場合等に開始される。
【0033】
処理が開始されると、まずOFC20からネットワークN2を介してOFS11,12にメッセージ(Flow_Modメッセージ)が送信され、ネットワークN1を介した通信を許可する条件であるホワイトリストを登録する処理が行われる(ステップS10:第1ステップ)。具体的には、
図2に示す仮のフローテーブルTB0(条件に適合したデータをOFC20に出力すべき旨を示す情報が格納されたテーブル)を、フローテーブルTB1,TB2としてOFS11,12にそれぞれ設定する処理が行われる。
【0034】
以上の処理が完了すると、DNSサーバとしてのホストH2のMAC(Media Access Control)アドレスを得るために、DNSクライアントとしてのホストH1からArp(Address Resolution Protocol)リクエストがブロードキャストされる(ステップS11)。ホストH1によってブロードキャストされたArpリクエストは、OFS11で受信された後に予め規定されたルールに従って不図示の制御ポート(Ctrl)に出力され、ネットワークN2を介してメッセージ(Packet_Inメッセージ)としてOFC20に送信される(ステップS12)。
【0035】
ここで、OFS11から送信されてきたメッセージ(Packet_Inメッセージ)には、ArpリクエストをブロードキャストしたホストH1が接続されているOFS及びポートを特定する情報が含まれている。このため、OFC20では、ホストH1の接続位置を示す情報(ホストH1がOFS11の物理ポートP1に接続されている旨を示す情報)を記録する処理が行われる(ステップS13)。
【0036】
また、OFS11からのメッセージ(Packet_Inメッセージ)を受信すると、OFC20では、メッセージ(Arpリクエストをブロードキャストすべき旨を示すFloodメッセージ)を、ネットワークN2を介してOFS11,12に送信する処理が行われる(ステップS14)。この処理は、Arpリクエストを送信すべきホストH2が、OFS11,12の何れに接続されているかが不明であるために行われる。これにより、OFS11,12において、接続関係が不明な全ての物理ポート(OFS11の物理ポートP2〜P11及びOFS12の物理ポートP1〜P6,P8〜P12)から、Arpリクエストをブロードキャストする処理が行われる(ステップS15)。
【0037】
以上の処理が行われると、ホストH1からのArpリクエストが、OFS12の物理ポートP6に接続されたホストH2で受信される。これにより、ホストH2からは、Arpリクエストに対する返信としてのArpリプライが送信される(ステップS16)。ホストH2から送信されたArpリプライは、OFS12で受信された後に、ネットワークN2を介してメッセージ(Packet_Inメッセージ)としてOFC20に送信される(ステップS17)。
【0038】
ここで、OFS12から送信されてきたメッセージ(Packet_Inメッセージ)には、Arpリプライを送信したホストH2が接続されているOFS及びポートを特定する情報が含まれている。このため、OFC20では、ホストH2の接続位置を示す情報(ホストH2がOFS12の物理ポートP6に接続されている旨を示す情報)を記録する処理が行われる(ステップS18)。
【0039】
また、OFS12からのメッセージ(Packet_Inメッセージ)を受信すると、OFC20では、メッセージ(Packet_Outメッセージ)を、ネットワークN2を介してOFS11に送信する処理が行われる(ステップS19)。この処理は、ステップS13の処理にて、Arpリプライを送信すべきホストH1がOFS11の物理ポートP1に接続されていることが既知であるために行われる。
【0040】
OFC20から送信されたメッセージ(Packet_Outメッセージ)がOFS11で受信されると、OFS11の物理ポートP1からArpリプライが出力される(ステップS20)。これにより、ホストH2からのArpリプライが、OFS11の物理ポートP1に接続されたホストH1で受信され、ホストH1では、DNSサーバとしてのホストH2のMACアドレスが得られる。
【0041】
以上の処理が完了すると、DNSクライアントとしてのホストH1からDNSサーバとしてのホストH2に対し、データパケット(DNSクエリ)が送信される(ステップS21)。これは、ホストH1が、例えばネットワークN1に接続された他のホスト(図示省略)のIPアドレスを問い合わせるために行われる。
【0042】
ホストH1からのDNSクエリを受信すると、OFS11では、フローテーブルTB1(
図2に示す仮のフローテーブルTB0)を参照した転送処理が行われる。ここで、ホストH1から送信されたDNSクエリは、「送信先がホストH2の53番ポートであるUDPデータ(データグラム)」であり、
図2に示す仮のフローテーブルTB0のIDが「1」であるエントリに格納された条件に適合する。このため、OFS11では、
図2に示す仮のフローテーブルTB0のIDが「1」であるエントリに格納された処理に従い、ホストH1からのDNSクエリを、メッセージ(Packet_Inメッセージ)として不図示の制御ポート(Ctrl)に出力する処理が行われる。
【0043】
OFS11の不図示の制御ポートから出力されたメッセージ(Packet_Inメッセージ)は、ネットワークN2を介してOFC20に送信される(ステップS22)。OFS11からのメッセージ(Packet_Inメッセージ)を受信すると、OFC20は、ホストH1からホストH2への経路を求める処理を行う。この処理は、OFC20が、ステップS13,S18の処理によってホストH1,H2の接続位置は把握しているものの、その接続位置の間の経路を把握していないために行われる。
【0044】
ホストH1からホストH2への経路が求められると、OFC20からネットワークN2を介してOFS11,12にメッセージ(Flow_Modメッセージ)が送信され、ホストH1からホストH2への経路が反映されたフローテーブルを登録する処理が行われる(ステップS23:第2ステップ)。具体的には、フローテーブルTB1,TB2としてOFS11,12に設定された仮のフローテーブルTB0(
図2参照)を、
図3に示すIDが「3」であるエントリが追加されたフローテーブルTB1,TB2にそれぞれ更新する処理が行われる。
【0045】
ここで、
図3に示すフローテーブルTB1,TB2の新たに追加されたエントリ(IDが「3」であるエントリ)は、元のエントリ(IDが「1」,「2」であるエントリ)よりも高い優先度が設定されている。このため、仮のフローテーブルTB0の更新処理が行われた後は、OFS11,12では、フローテーブルTB1,TB2の新たに追加されたエントリ(IDが「3」であるエントリ)を優先してデータの転送処理が行われることになる。
【0046】
また、OFS11からのメッセージ(Packet_Inメッセージ)を受信すると、OFC20では、メッセージ(Packet_Outメッセージ)を、ネットワークN2を介してOFS11に送信する処理が行われる(ステップS24)。この処理は、ステップS23の処理にて、仮のフローテーブルTB0が、ホストH1からホストH2への経路が反映されたフローテーブルTB1,TB2に更新されことから、OFS11に対し、ホストH1からのDNSクエリをホストH2に向けて転送させるために行われる。
【0047】
OFC20からのメッセージ(Packet_Outメッセージ)を受信すると、OFS11では、フローテーブルTB1を参照した転送処理が行われる。ここで、OFC20からのメッセージに含まれるDNSクエリは、「送信元がホストH1であって、送信先がホストH2の53番ポートであるUDPデータ(データグラム)」であり、
図3に示すフローテーブルTB1のIDが「3」であるエントリに格納された条件に適合する。このため、OFS11では、
図3に示すフローテーブルTB1のIDが「3」であるエントリに格納された処理に従い、DNSクエリを物理ポートP12に出力する処理が行われる(ステップS25)。
【0048】
OFS11から出力されたDNSクエリは、OFS12の物理ポートP7に入力されてOFS12で受信される。OFS11からのDNSクエリを受信すると、OFS12では、フローテーブルTB2を参照した転送処理が行われる。ここで、OFS12からのメッセージに含まれるDNSクエリは、
図3に示すフローテーブルTB2のIDが「3」であるエントリに格納された条件に適合する。このため、OFS12では、
図3に示すフローテーブルTB2のIDが「3」であるエントリに格納された処理に従い、DNSクエリを物理ポートP6に出力する処理が行われる(ステップS26)。これにより、ホストH1からのDNSクエリが、OFS12の物理ポートP6に接続されたホストH2で受信される。
【0049】
上述のステップS23の処理によって、OFS11,12には、ホストH1からホストH2への経路が反映されたフローテーブルTB1,TB2がそれぞれ設定されている。このため、以後ホストH1からDNSクエリが送信されると、OFC20に対するメッセージの送信は行われずに、フローテーブルTB1,TB2を参照した転送処理がOFS11,12の各々で行われる。これにより、ホストH1からのDNSクエリは、ネットワークN1を介してホストH2に転送される(ステップS27〜S29)。
【0050】
ここで、
図4においては図示を省略しているが、ホストH2がホストH1からのDNSクエリを受信した場合には、ホストH2からホストH1に向けてDNSレスポンスが送信される。このDNSレスポンスが送信される際には、
図4示すステップS11〜S26と同様の処理が行われる。但し、
図4中のホストH1,H2を入れ替え、OFS11,12を入れ替え、
図4中の「DNS Query」を「DNS Response」と読み替える必要がある。尚、ホストH2がホストH1からのArpリクエストを受信した場合に、ホストH1のMACアドレスを得るようにすれば、ステップS11〜S20に相当する処理は省略することができる。
【0051】
ホストH2からDNSレスポンスが送信される際に、
図4に示すステップS23に相当する処理が行われることによって、OFS11,12に設定されたフローテーブルTB1,TB2には、
図3に示すIDが「4」であるエントリが追加される。これにより、OFS12では、フローテーブルTB2に基づいてホストH2からのDNSレスポンスを物理ポートP7に出力する処理が行われ、OFS11では、フローテーブルTB1に基づいてOFS12からのDNSレスポンスを物理ポートP1に出力する処理が行われる。このようにして、ホストH2からのDNSレスポンスがネットワークN1を介してホストH1に転送される。
【0052】
尚、ネットワークN1からホストH1,H2が外されると、その旨を示す情報がOFS11,12からネットワークN2を介してOFC20に通知される。このような情報が通知された場合には、ネットワークN1から外されたホストH1,H2に紐付いている情報を削除させる旨の制御信号が、OFC20からネットワークN2を介してOFS11,12に送信される。
【0053】
以上の通り、本実施形態では、ホストH1,H2間の経路が不明な場合に、仮のフローテーブルTB0をOFS11,12に設定し、ホストH1,H2間の経路を示す経路情報が得られた場合に、仮のフローテーブルTB0を、その経路情報に基づいて内容が更新されたフローテーブルTB1,TB2に更新してデータの転送制御を行うようにしている。ここで、上記の仮のフローテーブルTB0は、受信したデータに対する条件と、この条件に適合したデータをOFC20に出力させる処理とが規定されたフローテーブルである。このため、本実施形態では、ネットワークN1の具体的構成を事前に把握していなくとも、ホワイトリスト的な厳密な転送制御を適時に行うことが可能である。
【0054】
ここで、上記の仮のフローテーブルTB0を用いずに、条件に適合しないデータの処理ルールをOFS11,12がOFC20に問い合わせる方法も考えられる。しかしながら、このような方法では、悪意のある者が、条件に適合しないデータを大量に送信した場合には、データ転送システム1の障害が生ずる可能性が考えられる。本実施形態は、受信したデータに対する条件と、この条件に適合したデータをOFC20に出力させる処理とが規定された仮のフローテーブルTB0を用いているため、上記の障害の発生を防止することができ、セキュリティを高めることができる。
【0055】
尚、上記実施形態では、ホストH1からホストH2に対してDNSクエリが送信されるタイミングで、仮のフローテーブルTB0を更新する処理(ステップS23の処理)が行われる例について説明した。しかしながら、仮のフローテーブルTB0を更新する処理が行われるタイミングは、ホストH1とホストH2との間の経路(一部の経路でも良い)を示す経路情報が得られたタイミング、或いは上記の経路情報が得られてから最初にホストH1からホストH2に対して何らかのデータが送信されるタイミングであっても良い。
【0056】
例えば、
図4に示す例において、ステップS11〜S18の処理が行われれば、ホストH1,H2間の経路を示す経路情報を求めることができる。このため、ステップS18の処理を終えたタイミングで、OFC20がホストH1,H2間の経路を示す経路情報を求めて、仮のフローテーブルTB0を更新する処理(ステップS23の処理に相当する処理)を行っても良い。また、
図4では、ホストH1,H2間のデータ送受信がユニキャストで行われる例を図示しているが、ホストH1,H2間のデータ送受信はマルチキャストにて行われても良い。但し、Arpは送られないため、IGRP(Interior Gateway Routing Protocol)等のメッセージを用いてホストH1,H2の接続ポートを知る必要がある。
【0057】
また、上記実施形態では、仮のフローテーブルTB0を更新する処理(ステップS23の処理)が行われた後に、OFC20からOFS11にメッセージ(Packet_Outメッセージ)が送信され(ステップS24)、OFS11,12の転送処理によってホストH1からのDNSクエリがホストH2に転送される例について説明した。しかしながら、OFS11に代えてOFS12にメッセージ(Packet_Outメッセージ)を送信し、OFS12のみの転送処理によってホストH1からのDNSクエリがホストH2に転送されるようにしても良い。このようにすることで、OFS11での転送処理を省略することができ、転送に要する時間を短縮することができる。
【0058】
或いは、OFS11がホストH1からのデータを一時的に記憶するメモリを有する場合には、ホストH1からのDNSクエリを受信したときに、受信したDNSクエリをメモリに一時的に記憶し、その旨を示す情報をステップS22の処理にてOFC20に送信するようにしても良い。このような場合には、仮のフローテーブルTB0を更新する処理(ステップS23)が行われた後に、OFC20からの指示に基づいて、OFS11がフローテーブルTB1を参照して一時的に記憶したDNSクエリの転送処理をするようにすれば良い。
【0059】
次に、以上説明したデータ転送システム1を、プラントに構築されるプロセス制御システムに適用した例について説明する。尚、上記のプラントとしては、化学等の工業プラントの他、ガス田や油田等の井戸元やその周辺を管理制御するプラント、水力・火力・原子力等の発電を管理制御するプラント、太陽光や風力等の環境発電を管理制御するプラント、上下水やダム等を管理制御するプラント等がある。
【0060】
図5は、本発明の第1実施形態によるデータ転送システムが適用されるプロセス制御システムを説明する図であって、(a)はプロセス制御システムの階層構造を説明する図であり、(b)はデータ転送システムが適用されたプロセス制御システムを例示する図である。
図5(a)に示す通り、プラントに構築されるプロセス制御システムは、複数の階層(レベル0〜4の階層)からなる階層構造とされている。このような階層構造は、例えば国際標準規格IEC/ISO 62264で規定されている。
【0061】
レベル4の階層は、企業の経営、営業等の業務が行われる階層であり、基幹業務システム(ERP:Enterprise Resource Planning)や、PAM(Plant Asset Management)と呼ばれる統合機器管理システム等が構築される。これに対し、レベル3以下の階層は、産業制御システム(ICS:Industrial Control System)と呼ばれる階層であり、製品の製造等が行われる階層である。このレベル3以下の階層は、製品に関わる制御が行われ、危険物が取り扱われることもあるため、高いセキュリティが求められる。
【0062】
具体的に、レベル3の階層には、製造実行システム(MES:Manufacturing Execution System)や、プラント情報管理システム(PIMS:Plant Information Management System)等が構築される。また、レベル1,2の階層には、プラントに設置されたフィールド機器と、これらフィールド機器を制御するFCS(Field Control Station)とを備える分散制御システム(DCS:Distributed Control System)等が構築される。
【0063】
上述の通り、プラントの制御を行うレベル3以下の階層は高いセキュリティが求められることから、レベル3以下に構築されるネットワークは、基本的にはレベル4に構築されるネットワークから切り離される。また、レベル1,2の階層に構築されるネットワークは、制御用通信のトラフィックを保護する観点から、基本的にはレベル3の階層に構築されるネットワークから分離されて運用される。
【0064】
図5(b)に示す通り、データ転送システム1は、例えばレベル3の階層に適用され、OFS11はレベル2,3間に設けられるスイッチSW1として用いられ、OFS12は、レベル3,4間に設けられるスイッチSW2として用いられる。また、データ転送システム1をなすOFS11,12は、レベル3の階層に構築されるネットワークをなすスイッチSW3として用いることもできる。尚、
図5(b)に示す例では、レベル3の階層に構築されるネットワークが、2つの通信グループG1,G2に論理的に分けられている。
【0065】
図5(b)に示す通り、データ転送システム1をプロセス制御システムに適用することで、レベル3の階層に構築されたネットワークにおいて、ホワイトリスト的な厳密な転送制御を適時に行うことが可能である。これにより、他のレベル(レベル2,4)の階層との間でやりとりされるデータを厳密に管理できるばかりではなく、同じレベル3の階層内でやりとりされるデータを厳密に管理することができる。このような管理は、スイッチSW1〜SW3が異なるベンダが提供されたものである場合(或いは、異なる種類のものである場合)であっても、レベル3に構築されたネットワークの具体的構成を事前に把握していない場合であっても可能である。
【0066】
〔第2実施形態〕
図6は、本発明の第2実施形態によるデータ転送システムの要部構成を示すブロック図である。
図6に示す通り、本実施形態のデータ転送システム2は、オープンフロー仕様に準拠したOFS31、オープンフロー仕様に準拠していないスイッチ32,33、及びOFC40を備えており、OFC40の制御の下で、OFS31及びスイッチ32,33が送信元から送信されてくるデータを送信先に向けて転送する。
【0067】
つまり、本実施形態のデータ転送システム2は、オープンフロー仕様に準拠したOFS31とオープンフロー仕様に準拠していないスイッチ32,33とがネットワークに混在しており、これらOFS31及びスイッチ32,33をOFC40が一括して制御するものである。尚、
図6では、理解を容易にするために、オープンフロー仕様に準拠した1つのOFS31と、オープンフロー仕様に準拠していない2つのスイッチ32,33とを備えるデータ転送システム2を図示しているが、データ転送システム2に設けられるOFS及びスイッチの数は任意である。
【0068】
OFS31は、
図1に示すOFS11,12と同様のものであり、OFC40によって管理されるフローテーブル(
図2,3に示すフローテーブルTB1,TB2と同様のフローテーブル)を参照してデータの転送処理を行う。スイッチ32,33は、不図示のアクセス制御リスト(ACL)を備えており、このアクセス制御リストの内容を参照してデータの転送処理を行う。スイッチ32は、Netconf(Network Configuration Protocol)に対応しており、Netconfに準拠した通信を行ってアクセス制御リストの設定を行う。また、スイッチ33は、SNMP(Simple Network Management Protocol)に対応しており、SNMPに準拠した通信を行ってアクセス制御リストの設定を行う。
【0069】
OFC40は、
図1に示すOFC20と同様に、OFS31で用いられるフローテーブルを管理することによってネットワーク(OFS31及びスイッチ32,33等によって構成される不図示のネットワーク)を介して転送されるデータの転送制御を行う。但し、OFC40は、OFS31で用いられるフローテーブルに加えて、スイッチ32,33で用いられるアクセス制御リストも管理する点が、
図1に示すOFC20とは異なる。
【0070】
図6に示す通り、OFC40は、コンバータ41(生成部)及び通信部42〜44を備えており、不図示のメモリに記憶されたホワイトリストWL(条件リスト)及び機器リストDLに基づいてOFS31で用いられるフローテーブル(
図2に示す仮のフローテーブルTB0と同様のテーブル)及びスイッチ32,33で用いられるアクセス制御リストを生成する。そして、生成したフローテーブル及びアクセス制御リストを、OFS31及びスイッチ32,33にそれぞれ設定する。
【0071】
上記のホワイトリストWLは、ネットワークを介したデータの転送制御の条件を規定するリストである。このホワイトリストWLには、例えば
図2,3に示すフローテーブルTB1,TB2における条件のように、ネットワークの具体的構成によらず、抽象的な内容(例えば、送信元及び送信先のアドレス、送信元及び送信先のポート番号等)が規定されている。上記の機器リストDLは、ネットワークに接続された機器毎に、機器を特定する識別情報、機器がオープンフロー仕様に準拠しているか否かを示す情報、及び機器が対応しているプロトコルを示す情報等が対応づけられたリストである。尚、上記のホワイトリストWL及び機器リストDLは、例えばネットワークの管理者によって作成される。
【0072】
コンバータ41は、ホワイトリストWL及び機器リストDLを読み込み、その内容に従ってOFS31に適したフローテーブル及びスイッチ32,33に適したアクセス制御リストをそれぞれ生成する。具体的に、コンバータ41は、ホワイトリストWLの内容が条件として規定され、この条件に適合した場合にデータをOFC40に出力すべき旨を示す情報が規定された仮のフローテーブルTB0(
図2参照)をOFS31用に生成する。また、コンバータ41は、Netconfに準拠した通信に適したアクセス制御リスト及びSNMPに準拠した通信に適したアクセス制御リストをスイッチ32,33用にそれぞれ生成する。
【0073】
通信部42は、オープンフロー用のプロトコルに対応しており、OFS31との間で通信を行ってコンバータ41で生成された仮のフローテーブルをOFS31に設定する。通信部43は、Netconfに対応しており、スイッチ32との間でNetconfに準拠した通信を行ってコンバータ41で生成されたアクセス制御リストをスイッチ32に設定する。通信部44は、SNMPに対応しており、スイッチ33との間でSNMPに準拠した通信を行ってコンバータ41で生成されたアクセス制御リストをスイッチ33に設定する。尚、
図6では、理解を容易にするために、上記の各プロトコルに対応する通信部42〜44を個別に図示しているが、これら通信部42〜44は1つにまとめられていても良い。
【0074】
上記構成におけるデータ転送システム2では、まずネットワークの管理者によってホワイトリストWL及び機器リストDLが作成される。次に、ネットワークの管理者からの指示があると、ホワイトリストWL及び機器リストDLがコンバータ41によって読み込まれ、OFS31に適したフローテーブル及びスイッチ32,33に適したアクセス制御リストがそれぞれ生成される。続いて、通信部42によってOFS31との間で通信が行われ、コンバータ41によって生成されたフローテーブルがOFS31に設定されるとともに、通信部43,44によってスイッチ32,33との間で通信が行われ、コンバータ41によって生成されたアクセス制御リストがスイッチ32,33にそれぞれ設定される。
【0075】
以上の通り、本実施形態では、ホワイトリストWL及び機器リストDLに基づいて、OFS31に適したフローテーブルとスイッチ32,33に適したアクセス制御リストとが自動的に作成される。これにより、ネットワークの管理者は、オープンフロー仕様に準拠したOFS31と、オープンフロー仕様に準拠していないスイッチ32,33とがネットワークに混在していても、ホワイトリストWL及び機器リストDLを管理するだけで良くなり、管理が煩雑になることはない。
【0076】
また、ネットワークの管理者が管理すべきホワイトリストWLは、送信元及び送信先のアドレス等のネットワークの具体的構成によらない抽象的な内容を規定したものである。このため、第1実施形態と同様に、ネットワークの管理者が、ネットワークの具体的構成を事前に把握していなくとも、ホワイトリスト的な厳密な転送制御を適時に行うことが可能である。
【0077】
〔第3実施形態〕
図7は、本発明の第3実施形態によるデータ転送システムで用いられるOFSの要部構成を示すブロック図である。本実施形態のデータ転送システムで用いられるOFS50は、フローテーブルに基づいたデータの転送処理と、アクセス制御リストに基づいたデータのフィルタリング処理とが可能なもの(所謂、ハイブリッド型のもの)である。尚、本実施形態のデータ転送システムでは、
図6に示されているOFC40と同様に、ホワイトリストWL等に基づいて、フローテーブル及びアクセス制御リストを作成可能なOFCが用いられる。
【0078】
図7に示す通り、OFS50は、フィルタ部51、転送部52、フィルタ部53、メモリ54、通信部55、及び通信部56を備える。フィルタ部51は、転送部52の前段に設けられており、メモリ54に記憶されたアクセス制御リストを参照して入力されるデータのフィルタリング処理を行う。転送部52は、メモリ54に記憶されたフローテーブルを参照して、フィルタ部51を介したデータの転送処理を行う。フィルタ部53は、転送部52の後段に設けられており、メモリ54に記憶されたアクセス制御リストを参照して転送部52から出力されるデータのフィルタリング処理を行う。尚、フィルタ部51,53の何れか一方は、省略されていても良い。
【0079】
メモリ54は、フィルタ部51,53に参照されるアクセス制御リスト及び転送部52に参照されるフローテーブルを記憶する。尚、メモリ54に記憶されるアクセス制御リストは、第2実施形態のスイッチ32に適したものと同様のものであり、メモリ54に記憶されるフローテーブルは、第2実施形態のOFS31に適したものと同様のものである(
図6参照)。
【0080】
通信部55は、オープンフロー用のプロトコルに対応しており、不図示のOFCとの間で通信を行って、OFCで生成されたフローテーブル(
図2に示す仮のフローテーブルTB0)をメモリ54に記憶させる。通信部56は、NetconfやSNMPに対応しており、不図示のOFCとの間で通信を行って、OFCで生成されたアクセス制御リストをメモリ54に記憶させる。尚、第2実施形態と同様に、これら通信部55,56は1つにまとめられていても良い。
【0081】
本実施形態においても、第2実施形態と同様に、まずネットワークの管理者によってホワイトリストWL等が作成され、ネットワークの管理者から不図示のOFCに対する指示があると、ホワイトリストWL等に基づいて上述したフローテーブル及びアクセス制御リストがそれぞれ生成される。次いで、OFS50の通信部55,56と不図示のOFCとの間で通信が行われ、不図示のOFCで生成されたフローテーブル及びアクセス制御リストがOFS50のメモリ54に記憶される。そして、OFS50のフィルタ部51,53では、メモリ54に記憶されたアクセス制御リストを参照してデータのフィルタリング処理が行われ、OFS50の転送部52では、メモリ54に記憶されたフローテーブルを参照してデータの転送処理が行われる。
【0082】
以上の通り、本実施形態では、ホワイトリストWL等に基づいて作成されたフローテーブルに基づいた転送処理がOFS50の転送部52で行われ、ホワイトリストWL等に基づいて作成されたアクセス制御リストに基づいたフィルタリング処理がOFS50のフィルタ部51,53で行われる。これにより、ネットワークの管理者は、ハイブリッド型のOFS50がネットワークに接続されていても、ホワイトリストWL及び機器リストDLを管理するだけで良くなり、管理が煩雑になることはない。尚、OFS50は、フィルタ部51、転送部52、及びフィルタ部53の何れか1つを用いることでアクセスコントロールを行うことが可能である。
【0083】
また、本実施形態においても、ネットワークの管理者が管理すべきホワイトリストWLは、送信元及び送信先のアドレス等のネットワークの具体的構成によらない抽象的な内容を規定したものである。このため、第2実施形態と同様に、ネットワークの管理者が、ネットワークの具体的構成を事前に把握していなくとも、ホワイトリスト的な厳密な転送制御を適時に行うことが可能である。
【0084】
〔変形例〕
〈第1変形例〉
一般的に、オープンフロー仕様に準拠したフローテーブルは、使用可能な期間であるライフタイム(寿命)を有する。前述した第1〜第3実施形態で用いられる仮のフローテーブルTB0及びフローテーブルTB1,TB2に対しては、有限のライフタイムを設定しても良く、無限のライフタイムを設定しても良い。
【0085】
有限のライフタイムを設定した場合には、ライフタイムが到来するとフローテーブルが自動的に削除される。このため、例えばネットワークの管理者がライフタイムを超過したフローテーブルを削除し忘れるといった事態を防止できるため、セキュリティを高めることができる。これに対し、無限のライフタイムを設定した場合には、ネットワークの管理者の削除指示がなければフローテーブルは削除されない。このため、ネットワークの管理者の知らないうちにフローテーブルが削除されるといった事態を防止できるため、フローテーブルの管理をネットワークの管理者の意図に即して明示的に行うことができる。
【0086】
〈第2変形例〉
前述した第1〜第3実施形態において、OFC20,40等にタイマを設け、OFS11,12,31,50等に対して仮のフローテーブルTB0を設定する処理(
図4中のステップS10の処理)、或いは設定した仮のフローテーブルTB0を削除する処理を、予め規定されたスケジュールに従って自動的に行うようにしても良い。これにより、ネットワークを介した通信を特定の期間のみ可能にし、或いはネットワークを介した通信を一時的に可能にするといった運用か可能であり、安全性を高めることができる。
【0087】
〈第3変形例〉
図8は、本発明の実施形態によるデータ転送システムで用いられるOFSの変形例を示す図である。
図8に示す通り、OFS60は、転送部61及び複数の物理ポートP1,P2を備えており、不図示のメモリに記憶されたフローテーブルを参照してデータの転送処理を行う。転送部61は、
図7に示す転送部52と同様のものである。尚、
図8では、2つの物理ポートP1,P2を備えるOFS60を図示しているが、OFS60に設けられる物理ポートの数は任意である。
【0088】
ここで、OFS60の物理ポートP1,P2には複数のキューQ1〜Q3が設けられており、キューQ1〜Q3の各々には互いに異なる帯域幅を割り当てることが可能である。特定のフローにキューを割り当てるには、フローが出力される物理ポートを特定し、特定した物理ポートに設けられている複数のキューのうちの割り当てるべきキューを指定する必要がある。
【0089】
前述した実施形態では、
図4を用いて説明した通り、物理ポートが指定されていない仮のフローテーブルTB0(
図2参照)は、ネットワークの経路を示す経路情報が得られた場合に、物理ポートが特定されたフローテーブルTB1,TB2(
図3参照)に更新される。このため、本変形例において、帯域の割り当てを行いたいフロー毎の帯域をOFCのホワイトリストWL等に指定しておけば、ネットワークの経路を示す経路情報が得られて仮のフローテーブルTB0が更新される際に、物理ポートが特定されるとともにキューが選択される。
【0090】
ここで、フローや帯域の利用を可能にする設定を行う場合には、その設定がネットワーク運用上のポリシーに適合しているか否かを検証することが望ましい。例えば、
図4に示すステップS10の処理(OFC20が、仮のフローテーブルTB0をOFS11,12に設定する処理)が行われる場合には、ネットワークの管理者は、仮のフローテーブルTB0を利用するユーザが利用権限を有するか否かを検証することが望ましい。従って、
図4に示すステップS10の処理が行われる場合には、AAA機能(Authentication(認証)、Authorization(認可)、Accounting(アカウンティング))を有するサーバへ問い合わせることが望ましい。これにより、設定者や機器の認証、権限の管理、課金情報の記録等が可能となる。
【0091】
以上、本発明の実施形態によるデータ転送システム及び方法について説明したが、本発明は上記実施形態に制限される訳ではなく、本発明の範囲内で自由に変更が可能である。例えば、前述した第1実施形態では、
図1に示すネットワークN1が、IPv4プロトコルが用いられるネットワークであることを前提としてARPを用いてホストH1,H2間の経路を示す経路情報を得る例について説明した。しかしながら、本発明は、ネットワークN2が、IPv6プロトコルが用いられるネットワークとである場合にも適用可能である。このようなネットワークでは、近隣者発見(Neighbor Discovery)プロトコルを用いてホストH1,H2間の経路を示す経路情報を得ることができる。また、上記実施形態では、オープンフロー仕様に準拠したものを例に挙げて説明したが、本発明は、SDN(Software-Defined Network)を実現する他の機器において、オープンフローと同様の制約がある場合も利用可能である。