以下に添付図面を参照して、通信制御装置、通信制御プログラムおよび通信システムの実施形態を詳細に説明する。
(実施形態に適用可能な技術)
実施形態の説明に先立って、理解を容易とするために、実施形態に適用可能な技術について概略的に説明する。表1は、OSI参照モデルと、OSI参照モデルの各層に適用される通信プロトコルおよび規格の例を対応させて示している。OSI(Open Systems Interconnection)参照モデルは、国際標準化機構(ISO)によって策定された、通信機能を階層構造に分割したモデルである。OSI参照モデルは、典型的なネットワークの階層構造の例としてよく用いられる。
OSI参照モデルにおいては、通信機能を、より上位の階層からアプリケーション層、プレゼンテーション層、セッション層、トランスポート層、ネットワーク層、データリンク層および物理層の7階層に分割している。表1では、これらの階層に、ネットワーク通信で用いられるプロトコルや規格を対応付けて示している。
表1によれば、OSI参照モデルの各層のうち上位の3層であるアプリケーション層、プレゼンテーション層およびセッション層に対して、例えばHTTP(Hypertext Transfer Protocol)、FTP(File Transfer Protocol)といったプロトコルが対応付けられる。次のトランスポート層は、例えばTCP(Transmission Control Protocol)やUDP(User Datagram Protocol)が、ネットワーク層は、例えばIP(Internet Protocol)といったプロトコルが、それぞれ対応付けられる。また、最下層の2層であるデータリンク層および物理層は、例えばIEEE(The Institute of Electrical and Electronics Engineers)802.3(イーサネット(登録商標))、IEEE802.11(無線LAN(Local Area Network))などが対応付けられる。
実際の通信においては、用途や環境に応じて各機能を担うプロトコルおよび規格をそれぞれ選択し、通信を行う。
現在のインターネットやLANの通信においては、透過性という概念が重要である。透過性とは、各階層が独立しており、基本的に他の階層のプロトコル選択に依存しないということを指す。例えばIPは、その下位層がイーサネットおよび無線LANの何れであっても同じように動作する。
そのため、例えば通信経路において、端末A(例えばタブレット型コンピュータ)から無線LAN、イーサネット、光ファイバおよびイーサネットを順次介して端末B(パーソナルコンピュータ)に通信を行う場合のように、通信の途中で異なる物理層およびデータリンク層を経由する場合でも、IPより上位層のプロトコルはその違いを意識せずに動作するため、通信をスムースに行うことができる。
次に、実施形態に適用可能な技術概念として、SDN(Software-Defined Network)について概略的に説明する。
従来、組織体内で閉じた構成の組織内LANなどのネットワーク環境は、各ベンダが提供するLANスイッチや無線LANアクセスポイントの設定・運用を熟知した専任の担当者が構築するのが一般的であった。このようなネットワーク環境は、ベンダのソリューションによる認証手段や運用方法しか提供されない、所謂「ベンダロックイン」の状態であり、組織体が自在に認証手段や運用方法を設定することが困難であった。
これに対して、近年では、ユーザである組織体が独自のネットワークを構築できるようにするため、ネットワーク上のデータの動きをソフトウェアだけで制御可能とするSDNと呼ばれる概念が注目されている。このSDNに関連して、注目を集めている代表的な構成技術要素として「ネットワークの仮想化」と、その仮想化されたネットワーク上での通信を制御する手法(プロトコル)の一つでありベンダに依存しないオープンな仕様である「オープンフロー(OpenFlow)」とがある。
ネットワークの仮想化は、例えば、一つの物理インタフェースを複数に(若しくは複数の物理インタフェースを一つに)見せるような仮想インタフェース技術や、仮想インタフェースを接続中継する仮想スイッチ技術などに至る、複数の構成要素を含む技術の集合体である。ネットワーク仮想化は、物理ネットワーク機器と仮想ネットワーク部品、プロトコル技術の組合せによって、物理的なネットワーク構成から論理的なネットワーク構成を仮想的に分離し、物理構成に縛られない柔軟なネットワーク構成を実現する。
OpenFlow(登録商標)は、通信をエンド・ツー・エンドのフローとして捉えて、そのフロー単位で経路制御、負荷分散、最適化などを行うことができる。具体的には、OpenFlowは、データ通信経路の中継機器などにおいて自律分散的に各データパケットを解析して転送するのではなく、集中制御型に変えることで実現する。
図1は、実施形態に適用可能な、OpenFlowに基づく構成の例を概略的に示す。OpenFlowでは、データの解析と転送先判断および決定制御とを行う「コントロール・プレーン」と、単なるパケットの物理的な伝送を担う部分である「データ・プレーン」とを分離する。OpenFlowでは、コントロール・プレーンを司るOpenFlow(登録商標)コントローラ100(図1ではOFC100と記載)が転送ルールを指示し、データ・プレーンを担うOpenFlow(登録商標)スイッチ200(図1ではOFS200と記載)は、OpenFlowコントローラ100の指示に従ってパケットの転送を行う。より具体的には、OpenFlowスイッチ200は、OpenFlowコントローラ100が追加および書き換えを行う、OpenFlowスイッチ200が持つフローテーブル201に従って、パケットの転送を行う。この仕組みを用いることで、上述したネットワークの仮想化を制御するためのツールなどとしてOpenFlowを活用できる。
以下では、OpenFlowコントローラをOFCと略称し、OpenFlowスイッチをOFSと略称して説明を行う。
図2は、実施形態に適用可能な、OFS200がデータパケットを受け取った場合の処理を示すフローチャートである。
OFS200は、ネットワークからパケットが入力されると(ステップS10)、パケットの先頭に記述されたヘッダの情報を読み込み、読み込んだヘッダ情報を解析する(ステップS11)。ヘッダは、表1で示したプロトコル毎に付与されていて、OFS200は、トランスポート層以下のヘッダから特定の情報を抽出することができる。OFS200が抽出するヘッダ情報の例としては、送信元および宛先のMAC(Media Access Control)アドレス、IPアドレス、TCPまたはUDPのポート番号などである。なお、MACアドレスは、データリンク層に対応付けられる。
OFS200は、ヘッダ情報から抽出したこれらの情報を、既に記憶している処理規則(フローエントリ)の条件と照合する。フローエントリは、「どんなパケット」であれば「どう処理する」、という形式で記述されている。例えば、フローエントリは、「宛先のIPアドレスが[192.168.1.2]のパケット」であれば「OFS200の3番ポートから送出する」、旨が記述される。フローエントリにおいて、「どんなパケット」に相当する条件の部分をマッチングルール(match)、「どう処理する」に相当する処理の部分をアクション(action)と呼ぶ。
OFS200が記憶しているフローエントリの集合を、フローテーブル201と呼ぶ。フローテーブル201において、各フローエントリには優先度が設定されている。OFS200は、フローテーブル201に含まれる各フローエントリの優先度を参照して、優先度が高いフローエントリから順番に条件の照合が行われる(ステップS120〜ステップS12n)。図2の例では、フローテーブル201がn個のフローエントリ#0〜#nを含み、フローエントリ#0が最も優先度が高く、フローエントリ#nが最も優先度が低いものとしている。
OFS200は、入力されたパケットと条件が一致するフローエントリが見つかった時点で照合を中断し(ステップS120〜ステップS12nの何れかが「Yes」)、処理をステップS13に移行させて、検出されたフローエントリに応じたアクションを実行する。
一方、OFS200は、入力されたパケットと条件が一致するフローエントリが見つからなかった場合(ステップS120〜ステップS12nの全てで「No」)、処理をステップS14に移行させて、OFC100にpacket_inメッセージを送信し、処理を問い合わせる。
OFS200は、パケットに対して、単に伝送または破棄するだけでなく、ヘッダ情報の書き換えを行うこともできる。宛先や送信元のアドレスを書き換えることで、NAT(Network Address Translation)やルータのような既存ネットワーク機器と同等の機能を実現することもできるし、既存のネットワーク機器では実現が難しい、複雑であったり動的な通信制御を、用途に応じて実現することもできる。
(第1の実施形態)
次に、第1の実施形態について説明する。図3は、第1の実施形態に適用可能な通信システム1の一例の構成を示す。図3の例では、通信システム1は、通信制御装置10と、通信制御装置10に対してネットワーク11を介して接続される有線スイッチ(SW)20aおよび無線アクセスポイント(AP)20bと、管理者パーソナルコンピュータ(PC)21とを含む。なお、有線SW20aおよび無線AP20bは、何れか一方のみを含んでもよいし、それぞれさらに多数を含んでもよい。
ネットワーク11に対して機密ネットワーク40が接続される。図3の例では、機密ネットワーク40は、プリンタ50と、機密情報サーバ51、…とを含んでいる。機密ネットワーク40は、例えば組織体内に構築される組織内LANであって、組織体外からのアクセスに対して制限を与える。
通信制御装置10は、OFC100と、Webサーバ101と、リスト記憶部102とを含む。リスト記憶部102は、IPアドレス制御リスト110およびプロトコル制御リスト111の、記憶媒体への記憶と読み出しとを行う。また、有線SW20aおよび無線AP20bは、それぞれOFS200aおよび200bを含む。OFC100は、リスト記憶部102に含まれるIPアドレス制御リスト110と、プロトコル制御リスト111とを用いてOFS200aおよび200bに設定するフローエントリを生成し、生成したフローエントリをOFS200aおよび200bに登録する。
ゲストPC30は、ゲストすなわち通信システム1の外部のユーザ、例えば通信システム1にログインするための認証情報を持っていないユーザが使用する外部の端末装置である。外部の端末装置は、一般的な構成のパーソナルコンピュータを用いることができ、有線でのネットワーク接続が可能な情報処理装置であって、デスクトップ型コンピュータや、ノート型コンピュータを含む。ゲストPC30は、有線SW20aに有線で接続され、有線SW20aに含まれるOFS200aの制御に従い、有線SW20aを介してネットワーク11と通信を行うことができる。
また、ゲストSD31も同様に、ゲストが使用する外部の端末装置である。ゲストSD31は、例えば、無線LANを用いてネットワーク接続が可能な情報処理装置であるスマートデバイス(SD)であって、タブレット型コンピュータや、多機能型携帯電話端末(スマートフォン)を含む。無線LAN接続が可能な例えばノート型コンピュータをスマートデバイスに含めてもよい。ゲストSD31は、無線AP20bと無線LANにより無線で接続され、無線AP20bに含まれるOFS200bの制御に従い、無線AP20bを介してネットワーク11と通信を行うことができる。
Webサーバ101は、通信制御装置10における外部に対するユーザインタフェースを提供する。例えば、管理者は、管理者PC21からネットワーク11を介して通信制御装置10内のWebサーバ101にアクセスすることで、IPアドレス制御リスト110およびプロトコル制御リスト111を閲覧および編集することができる。
ネットワーク11に対して、機密ネットワーク40が接続される。機密ネットワーク40は、ゲストに公開してはならない機密情報を含む機密情報サーバ51を複数含む。また、機密ネットワーク40内には、プリンタ50をさらに含む。図3の例では、機密ネットワーク40は、例えばネットワークアドレス「192.168.1.0/24」が与えられ、プリンタ50は、IPアドレス「192.168.1.2」が与えられている。ゲストPC30およびゲストSD31は、ネットワーク11に接続される各部のうち、機密ネットワーク40の内部に対するアクセスが制限され、機密ネットワーク40の外部には、自由なアクセスが許可されているものとする。
図4は、第1の実施形態に係る通信制御装置10の一例のハードウェア構成を示す。図4において、通信制御装置10は、CPU(Central Processing Unit)1000と、ROM(Read Only Memory)1001と、RAM(Random Access Memory)1002と、ストレージ1003と、データI/F1004と、通信I/F1005とを含み、これらがバス1010により互いに通信可能に接続される。このように、第1の実施形態に係る通信制御装置10は、一般的なコンピュータと同様の構成により実現できる。
ストレージ1003は、ハードディスクドライブや不揮発性半導体メモリ(フラッシュメモリ)により構成され、CPU1000が動作するための各種プログラムやデータが格納される。また、ROM1001は、例えば通信制御装置10が起動、動作するために用いるプログラムやデータが予め記憶される。CPU1000は、ストレージ1003やROM1001に格納されるプログラムに従い、RAM1002をワークエリアとして用いて動作し、通信制御装置10の全体の動作を制御する。通信I/F1005は、CPU1000の指示に従い、ネットワーク11を介した通信を制御する。データI/F1004は、外部の機器との間でデータの入出力を行うためのインタフェースであって、例えばUSB(Universal Serial Bus)を適用できる。
図5は、第1の実施形態に係る通信制御装置10の機能を説明するための一例の機能ブロック図である。図5において、通信制御装置10は、接続部120と、制御部121と、Webサーバ部122と、記憶部123とを含む。また、Webサーバ部122は、出力部1220および入力部1221を含む。
これらのうち、接続部120、制御部121、Webサーバ部122および記憶部123は、CPU1000上で動作するプログラムが動作することにより構成される。これに限らず、これら接続部120、制御部121、Webサーバ部122および記憶部123を、互いに協働して動作するハードウェア回路により構成してもよい。
接続部120は、通信I/F1005を制御してネットワーク11に接続し、ネットワーク11を介した通信を行う。制御部121(制御部)は、通信制御装置10の全体の動作を制御する。制御部121は、図3におけるOFC100の機能を含む。例えば、制御部121は、後述する記憶部123より記憶されるIPアドレス制御リスト110およびプロトコル制御リスト111に基づき、OFS200aおよび200bが含むフローテーブル201に適用するためのフローエントリを生成する。
制御部121は、生成したフローエントリを例えば有線SW20aに転送する。有線SW20aは、転送されたフローエントリを、有線SW20aが含むOFS200aが有するフローテーブル201に書き込む。
Webサーバ部122は、図3におけるWebサーバ101に対応し、通信制御装置10の外部に対するユーザインタフェースを提供する。Webサーバ部122は、ネットワーク11を介してHTTPやFTPに対応した通信を行うことができる。Webサーバ部122において、出力部1220は、HTML(HyperText Markup Language)を用いた記述に従い、外部の端末装置に対して所定の画面を表示させるための表示制御情報を生成する。また、所定の画面が表示されると(表示制御情報が出力されると)、Webサーバ部122において、入力部1221は、HTMLを用いた記述に従い、外部の端末装置から送信された入力情報を受け付ける。Webサーバ部122は、入力部1221により受け付けられた入力情報に応じた処理を実行する。
記憶部123は、図3におけるリスト記憶部102に対応するもので、IPアドレス制御リスト110およびプロトコル制御リスト111の、記憶媒体(記憶部)への記憶と、記憶媒体からの読み出しとを行う。IPアドレス制御リスト110およびプロトコル制御リスト111を記憶する記憶媒体は、例えばストレージ1003である。IPアドレス制御リスト110は、宛先のIPアドレスである宛先IPアドレスに基づいた制御ポリシーのリストである。IPアドレス制御リスト110およびプロトコル制御リスト111の例については、後述する。
通信制御装置10における各機能を実現するための通信制御プログラムは、インストール可能な形式または実行可能な形式のファイルでCD(Compact Disk)、フレキシブルディスク(FD)、DVD(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供される。これに限らず、当該通信制御プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、当該ネットワークを介してダウンロードさせることにより提供してもよい。また、当該通信制御プログラムをインターネットなどのネットワークを経由して提供または配布するように構成してもよい。
上述のようにして提供されコンピュータに格納された通信制御プログラムは、例えば、当該コンピュータから、データI/F1004を介して通信制御装置10に供給されてストレージ1003またはROM1001に記憶される。
当該通信制御プログラムは、上述した各部(接続部120、制御部121、Webサーバ部122および記憶部123)を含むモジュール構成となっている。実際のハードウェアとしては、CPU1000がROM1001やストレージ1003などの記憶媒体から当該通信制御プログラムを読み出して実行することにより、上述した各部がRAM1002などの主記憶装置上にロードされ、接続部120、制御部121、Webサーバ部122および記憶部123が主記憶装置上に生成されるようになっている。
これに限らず、例えば、Webサーバ部122の基本的な機能を構成するプログラムがROM1001またはストレージ1003に予め記憶され、通信制御装置10に対して、このWebサーバ部122が読み込むためのHTMLファイルを供給するようにしてもよい。接続部120、制御部121および記憶部123も同様に、例えば、これらの基本的な機能を提供するプログラムがROM1001またはストレージ1003に予め記憶され、通信制御装置10に対して、これら接続部120、制御部121および記憶部123の動作を定義するパラメータなどを供給するようにもできる。
図6は、第1の実施形態に適用可能な有線SW20aの一例のハードウェア構成を示す。図6において、有線SW20aは、CPU2000と、ROM2001と、RAM2002と、通信I/F2004および2005とを含み、これらがバス2010により互いに通信可能に接続される。なお、これに限らず、ROM2001、RAM2002、ならびに、通信I/F2004および2005は、CPU2000に対して直接的に接続し、バス2010を省略してもよい。
ROM2001は、CPU2000が動作するために用いるプログラムやデータが予め記憶される。CPU2000は、ROM2001に格納されるプログラムに従い、RAM2002をワークエリアとして用いて動作し、有線SW20aの全体の動作を制御する。通信I/F2004および2005は、それぞれCPU2000の指示に従い通信を制御する。図6の例では、通信I/F2004が端末装置(例えばゲストPC30)に接続され、通信I/F2005がネットワーク11に接続されることが想定されている。
なお、無線AP20bは、通信I/F2004および2005のうち一方(例えば通信I/F2004)が無線通信に対応する点以外は、図6の有線SW20aと同様の構成で実現可能であるので、ここでの説明を省略する。また、以下では、特に記載の無い限り、有線SW20aおよび無線AP20bを有線SW20aで代表させて説明を行う。
図7は、第1の実施形態に適用可能な有線SW20aの機能を説明するための一例の機能ブロック図である。図7において、有線SW20aは、OFS200aと、第1接続部210と、第2接続部211とを含む。OFS200aは、記憶部212および制御部213を含む。これらのうち、第1接続部210、第2接続部211および制御部213は、CPU2000上で動作するプログラムにより構成される。これに限らず、これら第1接続部210、第2接続部211および制御部213を、互いに協働して動作するハードウェア回路により構成してもよい。
OFS200aにおいて、記憶部212は、フローテーブル201の記憶媒体への記憶と、記憶媒体に記憶されたフローテーブル201の読み出しとを行う。フローテーブル201を記憶する記憶媒体は、RAM2002でもよいし、ROM2001を書き換え可能なROMとして、このROM2001を用いてもよい。制御部213は、通信制御部10内のOFC100からネットワーク11を介して有線SW20aに供給されるフローエントリを、記憶部212に記憶されるフローテーブル201に書き込む。また、制御部213は、記憶部212に記憶されるフローテーブル201に従い、第1接続部210と第2接続部211とを介した通信を制御する。
第1接続部210および第2接続部211は、それぞれ、通信I/F2004および2005による通信に係る処理を行う。この例では、第1接続部210が通信I/F2005に対応し、第2接続部211が通信I/F2004に対応するものとする。例えば第1接続部210は、通信I/F2004により受信されたパケットを解析してヘッダ部分から宛先IPアドレスを抽出し、抽出した宛先IPアドレスを制御部213に渡す。制御部213は、渡された宛先IPアドレスに従いフローテーブル201を参照して、例えば当該パケットをネットワーク11に向けて送出するか否かを判定する。
(第1の実施形態に係る各制御リスト)
次に、第1の実施形態に係るIPアドレス制御リスト110およびプロトコル制御リスト111について説明する。
表2は、第1の実施形態に係るIPアドレス制御リスト110(第1のリスト)の例を示す。表2において、IPアドレス制御リスト110は、「宛先IPアドレス」、「許可/禁止」および「優先度」の各項目を含む制御ポリシーを1以上含む。
IPアドレス制御リスト110において、項目「宛先IPアドレス」は、宛先のIPアドレスが記述される。表2の例では、宛先のIPアドレスとして単一のIPアドレス「192.168.1.2」が指定される制御ポリシーと、IPサブネット「192.168.1.0/24」が指定される制御ポリシーと、「デフォルト」が指定される制御ポリシーとが示されている。
これらのうち、IPサブネット「192.168.1.0/24」は、IPアドレスに対して24ビットのネットマスクが指定されていることを示し、具体的には、「192.168.1.0」〜「192.168.1.255」のIPアドレスを示す。また、宛先IPアドレスにおける「デフォルト」は、IPアドレス制御リスト110に含まれる他の制御ポリシーに指定されるIPアドレス以外のIPアドレスに対応する。
IPアドレス制御リスト110において、項目「許可/禁止」は、その制御ポリシーの項目「宛先IPアドレス」に記述されるIPアドレスに対するアクセスを許可するか禁止するかが記述される。
項目「優先度」は、IPアドレス制御リスト110における各制御ポリシーに対する優先度が記述される。IPアドレス制御リスト110において、各制御ポリシーは、パケットに含まれる宛先IPアドレスが複数の制御ポリシーの項目「宛先IPアドレス」の値と合致している場合に、項目「優先度」において最も高い優先度が指定されている制御ポリシーが採用される。表2の例では、数値が大きいほど高い優先度を示し、項目「宛先IPアドレス」の値が「192.168.1.2」の制御ポリシーが最も優先度が高く、「デフォルト」の制御ポリシーが最も優先度が低く設定されている。
なお、表2において、項目「備考」は、その制御ポリシーに関する説明であって、IPアドレス制御リスト110における各制御ポリシーのラベルとして用いることができる。表2の例では、IPアドレス制御リスト110の第1行目がプリンタ50に対する制御ポリシーであり、第2行目が機密ネットワーク40に対する制御ポリシーであることがそれぞれ示されている。
以上により、表2に例示されるIPアドレス制御リスト110は、各制御ポリシーに指定された優先度に従い、IPアドレスに基づく下記の制御を示している。
(1)宛先IPアドレスがプリンタ50(IPアドレス「192.168.1.2」)を示している場合、通信を許可する。
(2)宛先IPアドレスがプリンタ50を示しておらず、且つ、機密ネットワーク40(IPサブネット「192.168.1.0/24」)に含まれるIPアドレスを示している場合、通信を禁止する。
(3)宛先IPアドレスがプリンタ50を示しておらず、且つ、機密ネットワーク40に含まれるIPアドレスを示していない場合、通信を許可する。
有線SW20a(OFS200a)は、このIPアドレス制御リスト110に基づき第1接続部210および第2接続部211による通信を制御することで、IPアドレスを指定して1対1で通信を行うユニキャスト通信を適切に制御することができる。
一方、例えばユーザ端末とプリンタとが接続されたネットワークにおいて、ユーザ端末がプリンタにより印刷を行う場合、ユーザ端末は、最初にネットワーク内のプリンタをマルチキャストDNS(Domain Name System)などで発見することが一般的である。このとき、マルチキャストDNSは、ユニキャストでないため、IPアドレス制御リスト110のみでは、適切に制御することができない。さらに、ネットワーク内でイーサネットや無線LANを用いたIP通信を行うためには、ブロードキャストを用いたARP(Address Resolution Protocol)によるアドレス解決が必要である。ARPによるパケットは、MAC(Media Access Control)アドレスを宛先に指定して送信されるため、宛先IPアドレスの指定が不可能である。OFS200は、このようなブロードキャストによる通信も通過させる必要がある。
また、DHCP(Dynamic Host Configuration Protocol)パケット、NTP(Network Time Protocol)パケットも、その性質上、宛先IPアドレスでの指定が難しい。
そこで、第1の実施形態では、上述のマルチキャストDNSやARPといった宛先IPアドレスの指定では不十分な通信を制御するために、プロトコル制御リスト111を用いてプロトコルに基づいた制御ポリシーをさらに設定する。
表3は、第1の実施形態に係るプロトコル制御リスト111(第2のリスト)の例を示す。表3において、プロトコル制御リスト111は、「識別子の種類」、「値」、「許可/禁止」および「優先度」の各項目を含む制御ポリシーを1以上含む。
なお、表3において、項目「備考」は、その制御ポリシーに関する説明であって、プロトコル制御リスト111における各制御ポリシーのラベルとして用いることができる。表3の例では、プロトコル制御リスト111の第1行目がARPに対応する制御ポリシー、第2行目がIGMP(Internet Group Management Protocol)に対応する制御ポリシー、第3行目がマルチキャストDNSに対応する制御ポリシーであることがそれぞれ示されている。
プロトコル制御リスト111において、項目「識別子の種類」は、その制御ポリシーにおいて次の項目「値」に記述される値により識別されるプロトコルの種類が記述される。
表3の例では、第1行目の制御ポリシーは、項目「識別子の種類」の値がイーサネットタイプ(「イーサネットタイプ」のうち「イーサネット」は登録商標)を示す「タイプ」、項目「値」が値「0x0806」とされており、イーサネットタイプのうちタイプ番号「0x0806」で示されるプロトコルが指定される制御ポリシーであることが示される。タイプ番号「0x0806」において、文字列「0x」は、後続する文字列が16進数により記述された値であることを示している。また、その制御ポリシーの項目「備考」において、その制御ポリシーに指定されるプロトコルが「ARP」であることが記述されている。
なお、イーサネットタイプは、IANA(Internet Assigned Numbers Authority)と呼ばれる組織により管理される、イーサネット(登録商標)により伝送するプロトコルを識別する識別子の1つである。イーサネットは、IEEE802.3によって策定される通信仕様であり、OSI参照モデルにおいて物理層およびデータリンク層に対応する。イーサネットタイプは、データリンク層において伝送されるプロトコルを識別する、伝送プロトコル識別子である。
同様に、第2行目の制御ポリシーは、項目「識別子の種類」の値が「IPプロトコル番号」、項目「値」が値「2」とされており、IPプロトコル番号のうち値「2」で示されるプロトコルが指定される制御ポリシーであることが示される。また、その制御ポリシーの項目「備考」において、その制御ポリシーに指定されるプロトコルが「IGMP」であることが記述されている。
さらに同様に、第3行目の制御ポリシーは、項目「識別子の種類」の値が「UDPポート番号」、項目「値」が値「5353」とされており、UDPポート番号のうち値「5353」で示されるプロトコルが指定される制御ポリシーであることが示される。また、その制御ポリシーの項目「備考」において、その制御ポリシーに指定されるプロトコルが「マルチキャストDNS」であることが記述されている。
プロトコル制御リスト111において、項目「許可/禁止」は、その制御ポリシーの項目「識別子の種類」および項目「値」の記述により特定されるプロトコルによるアクセスを許可するか禁止するかが記述される。
また、項目「優先度」は、プロトコル制御リスト111における各制御ポリシーに対する優先度が記述される。表3の例では、項目「識別子の種類」に記述された「タイプ」(イーサネットタイプ)、「IPアドレス番号」および「UDPポート番号」に対応する各プロトコルのうち、表1を用いて説明したOSI参照モデルにおいて最も下位層のプロトコルに対応する「タイプ」(イーサネットタイプ)が記述された制御ポリシーに最も高い優先度「3」が指定され、OSI参照モデルにおいて最も上位層のプロトコルに対応する「UDPポート番号」が記述された制御ポリシーに最も低い優先度「1」が指定されている。
上述のIPアドレス制御リスト110およびプロトコル制御リスト111は、例えば管理者PC21から編集することができる。これらIPアドレス制御リスト110およびプロトコル制御リスト111の編集の具体例については、後述する。
通信のプロトコルは、多くの場合、パケットのヘッダに含まれる何れかの識別子の値で判別できる。各プロトコルを示す識別子は、IANAにより管理され、通信を行う端末装置は互いに共通の約束事の下に通信を行っている。例えば、送信者がIPパケットを送信したい場合、イーサネットタイプを値「0x0800」としたヘッダを含むパケットを送信する。受信者は、このパケットのヘッダに含まれるイーサネットタイプの値に基づき、このパケットがIPパケットであると判定し、対応する処理を行う。
なお、識別子の種類としては、イーサネットタイプ(伝送プロトコル識別子)、IPプロトコル番号、TCPポート番号およびUDPポート番号が用いられることが多い。表3の例では、ゲストPC30がマルチキャストDNSを用いてプリンタ50を発見するために必要なプロトコル(ARP、IGMPおよびマルチキャストDNS)が示されている。
(第1の実施形態に係るフローエントリ生成)
OFC100は、上述したIPアドレス制御リスト110とプロトコル制御リスト111とに基づき、OFS200aおよび200bが持つフローテーブル201に含まれるフローエントリを生成する。より具体的には、OFC100は、表2および表3を用いて説明したIPアドレス制御リスト110とプロトコル制御リスト111とを解釈して、これらIPアドレス制御リスト110とプロトコル制御リスト111の各制御ポリシーに基づくフローエントリを生成する。
表4は、第1の実施形態に係る、OFC100により生成される各フローエントリの例を示す。なお、表4においては、OFS200における端末装置(例えばゲストPC30)側の通信I/F2004のポート番号を「1」(「port=1」と表記)、ネットワーク11側の通信I/F2005のポート番号を「2」(「port=2」と表記)としている。また、表4は、OpenFlow1.0に準じた記法を用いて記述されている。
表4において、項目「#」は、フローエントリ毎の通し番号を示し、この例では、通し番号「1」〜「7」で識別される7のフローエントリが示されている。各フローエントリは、「match」、「actions」および「priority」の各項目を含む。なお、項目「備考」は、項目「match」の記述に対する説明となっており、各フローエントリでは省略できる。
表4において、項目「match」は、そのフローエントリにおけるマッチングルールが記述される。項目「match」は、1のフローエントリについて、論理積にて判定される複数の条件を記述して、そのフローエントリにおけるマッチングルールとすることができる。
項目「actions」は、入力されたパケットが、そのフローエントリの項目「match」に記述されるマッチングルールに合致したパケットであると判定された場合に、制御部213が当該パケットに対して行う処理が記述される。表4の例では、パケットに対する処理として、出力(Output)と、破棄(Drop)とが定義されている。また、項目「actions」は、パケットに対する処理が出力である場合には、当該パケットを出力するポート番号(port=1 or 2)が記述される。
表4において、項目「priority」は、各フローエントリの優先度が記述される。優先度は、値が大きいほど高く、値「1」が最も低い優先度とされる。
ここで、通し番号「1」のフローエントリは、ネットワーク11側から端末装置側に向けた通信に対する制御ポリシーであって、項目「match」にポート番号が「2」のポートがパケットが入力される入力ポート(in_port)として記述される(in_port=2)。また、項目「actions」は、ポート番号が「1」のポート(port=1)を出力(Output)とする記述がなされる。これにより、OFS200は、ネットワーク11側から入力されたパケットを、全て端末装置側に出力する制御を行うことができる。
一方、通し番号「2」〜「7」のフローエントリは、全て端末装置側からネットワーク11側に向けた通信に対する制御ポリシーである。したがって、通し番号「2」〜「7」のフローエントリにおいて、項目「match」は、ポート番号が「1」のポートがパケットが入力される入力ポートとして記述される(in_port=1)。この各フローエントリにおける入力ポートの指定は、初期値として予め指定することができる。
また、表4の例では、通し番号「2」〜「4」の3のフローエントリが、表3のプロトコル制御リスト111に基づく、指定されたプロトコルに従い判定を行うフローエントリである。また、通し番号「5」〜「7」が、表2のIPアドレス制御リスト110に基づく、宛先IPアドレスに従い判定を行うフローエントリである。項目「priority」によれば、通し番号「2」〜「4」のフローエントリは、他のフローエントリに対して高い優先度が設定されていることが分かる。
より具体的に説明すると、表4の例では、プロトコル制御リスト111に基づくフローエントリのうち、通し番号「2」のフローエントリにおいて、項目「match」は、パケットが入力される入力ポート(in_port)のポート番号が「1」、イーサネットタイプ(dl_type)が値「0x0806」とされてARPが指定されている。項目「actions」は、ポート番号「2」(port=2)からの出力(Output)が指定されている。また、優先度は、通し番号「2」〜「7」のフローエントリの中で最も高く設定されている。
通し番号「3」のフローエントリにおいて、項目「match」は、入力ポート(in_port)のポート番号が「1」、イーサネットタイプ(dl_type)が値「0x0800」とされてインターネットIPがプロトコルとして指定され、さらに、IPプロトコル番号(nw_proto)が値「2」とされてIGMPが指定されている。項目「actions」は、ポート番号「2」からの出力が指定されている。優先度は、通し番号「2」〜「7」のフローエントリの中で2番目に高く設定されている。
通し番号「4」のフローエントリにおいて、項目「match」は、入力ポート(in_port)のポート番号が「1」、イーサネットタイプ(dl_type)が値「0x0800」とされ、IPプロトコル番号(nw_proto)が値「17」とされてUDPが指定され、さらに、送信先ポート番号(tp_dst)が値「5353」とされて、マルチキャストDNSが指定されている。項目「actions」は、ポート番号「2」からの出力が指定されている。優先度は、通し番号「2」〜「7」のフローエントリの中で3番目(プロトコル制御リスト111に基づくフローエントリでは最低)に高く設定されている。
一方、IPアドレス制御リスト110に基づくフローエントリのうち、通し番号「5」のフローエントリにおいて、項目「match」は、入力ポート(in_port)のポート番号が「1」、イーサネットタイプ(dl_type)が値「0x0800」とされてインターネットIPがプロトコルとして指定され、宛先IPアドレス(nw_dst)が値「192.168.1.2」とされてプリンタ50が指定されている。項目「actions」は、ポート番号「2」からの出力が指定されている。また、優先度は、IPアドレス制御リスト110に基づくフローエントリでは最も高く設定されている。
通し番号「6」のフローエントリにおいて、項目「match」は、入力ポート(in_port)のポート番号が「1」、イーサネットタイプ(dl_type)が値「0x0800」とされてインターネットIPがプロトコルとして指定され、宛先IPアドレス(nw_dst)が値「192.168.1.0/24」とされて機密ネットワーク40が指定されている。項目「actions」は、破棄(Drop)が指定されている。また、優先度は、IPアドレス制御リスト110に基づくフローエントリでは2番目に設定されている。
通し番号「7」のフローエントリにおいて、項目「match」は、入力ポート(in_port)のみがポート番号を「1」として指定され、項目「actions」は、ポート番号「2」のポートからの出力が指定されている。また、優先度は、IPアドレス制御リスト110に基づくフローエントリでは最低に設定されている。
(各制御リストの編集およびフローエントリの登録処理)
次に、上述した各制御リストすなわちIPアドレス制御リスト110およびプロトコル制御リスト111の編集処理と、表4を用いて説明したフローエントリのOFS200に対する登録処理について、より詳細に説明する。
図8は、第1の実施形態に係る各制御リストの編集およびフローエントリの登録処理を示す一例のシーケンス図である。なお、図8において、上述した図3と共通する部分には同一の符号を付して、詳細な説明を省略する。
ユーザ(例えば管理者)は、管理者PC21から通信制御装置10内のWebサーバ101にアクセスして、Webサーバ101に対して、リスト記憶部102に記憶される各制御リスト(IPアドレス制御リスト110およびプロトコル制御リスト111)の表示を要求する(ステップS100)。Webサーバ101は、この要求に応じて、リスト記憶部102に対して各制御リストの読み込みを要求し(ステップS101)、リスト記憶部102から各制御リストを取得する(ステップS102)。Webサーバ101は、取得した各制御リストを編集可能に表示させる表示画面を、管理者PC21に提示する(ステップS103)。
管理者PC21は、ステップS103で提示された表示画面に応じたユーザ操作に従い、各制御リストの編集を行う(ステップS104)。管理者PC21は、編集完了を示すユーザ操作を受け付けると、リスト記憶部102に記憶される各制御リストを、編集結果に応じて変更するよう、Webサーバ101に要求する(ステップS105)。
上述のステップS100〜ステップS105の処理の、より具体的な例について説明する。先ず、ステップS100の処理に先んじて、Webサーバ101は、各制御リストを管理するためのリスト管理画面と、当該リスト管理画面を呼び出すためのメニュー画面とをそれぞれ表示させ、また、画面に応じたユーザ入力を受け付けるための各表示制御情報(例えばHTMLファイル)を予め用意する。Webサーバ101は、これら各HTMLファイルを例えばストレージ1003に記憶し、各HTMLファイルに所定のURL(Uniform Resource Locator)を与える。
ユーザは、管理者PC21に搭載される、HTMLに従い記述されたファイルを読み込み所定の動作を行うブラウザアプリケーションプログラム(以下、ブラウザ)に、メニュー画面を表示させるためのHTMLファイルのURLを入力して、管理者PC21からWebサーバ101にアクセスする。管理者PC21において、ブラウザは、URLに従いHTMLファイルを読み込み、読み込んだHTMLファイルに従い、管理者PC21のディスプレイにメニュー画面を表示させる。
図9は、第1の実施形態に適用可能なメニュー画面の例を示す。図9において、メニュー画面300は、ボタン301〜304を含む。ボタン301および302は、それぞれ、IPアドレス制御リスト110の編集、および、プロトコル制御リスト111の編集を要求するためのボタンである。ボタン303は、ボタン301やボタン302の操作に応じてIPアドレス制御リスト110やプロトコル制御リスト111を編集した後に、編集内容に応じたフローエントリの登録を指示するための「登録」ボタンである。また、ボタン304は、キャンセルボタンであって、IPアドレス制御リスト110やプロトコル制御リスト111になされた編集をキャンセルするための「キャンセル」ボタンである。
管理者PC21は、メニュー画面300において、ボタン301および302の何れかに対する操作に応じて、操作されたボタンに対応する制御リストの表示をWebサーバ101に要求する(ステップS100)。Webサーバ101は、この要求に応じてリスト記憶部102から制御リストを取得する(ステップS101、ステップS102)。Webサーバ101は、取得した制御リストを管理するためのリスト管理画面を、管理者PC21に提示する(ステップS103)。
図10および図11を用いて、第1の実施形態に係るリスト管理画面の例について説明する。図10は、IPアドレス制御リスト110を管理するためのIPアドレス制御リスト管理画面の例を示す。図10のIPアドレス制御リスト管理画面310は、メニュー画面300におけるボタン301の操作に応じて表示される。図10において、IPアドレス制御リスト管理画面310は、入力領域311、312および313と、ボタン314および315とを含み、表2に示した各制御ポリシーについて、各項目を編集可能とされている。
IPアドレス制御リスト管理画面310において、入力領域311は、Webサーバ101がリスト記憶部102から読み出したIPアドレス制御リスト110を編集するための領域である。入力領域311は、それぞれ表示される内容を編集可能な入力領域311a、311b、311cおよび311dを含む。
これらのうち、入力領域311b、311cおよび311dは、表2に示した「宛先IPアドレス」、「許可/禁止」および「優先度」の各項目に対応し、リスト記憶部102から読み出されたIPアドレス制御リスト110の各制御ポリシーについて、各項目の値が入力され表示されている。この例では、項目「許可/禁止」に対応する入力領域311cは、予め設定された値「許可」および「禁止」のうち何れかを選択するようになっている。入力領域311aは、例えばその制御ポリシーを管理者が理解容易とするためのラベルを入力するための領域であって、この例では、表2の項目「備考」の値が入力され表示されている。
入力領域311は、さらに、各制御ポリシーの削除を指示するための各削除ボタンを含むボタン群311eを含む。
IPアドレス制御リスト管理画面310において、入力領域312は、既存のIPアドレス制御リスト110に対して新規の制御ポリシーを追加するための領域である。入力領域312は、上述の入力領域311と同様に、表2に示した「宛先IPアドレス」、「許可/禁止」および「優先度」の各項目に対応する入力領域312b〜312dと、ラベルを入力する入力領域312aと、制御ポリシーの追加を指示するためのボタン312eとを含む。
入力領域313は、表2における「デフォルト」の制御ポリシーに対する入力を行う領域である。この例では、入力領域313は、項目「許可/禁止」の値を切り替えるためのボタン313aのみを含み、他の項目の値を入力する領域を含まない。
ボタン314は、各入力領域311〜313に入力された値を確定し、メニュー画面300に戻るための「OK」ボタンである。各入力領域311〜313に入力された値は、例えば管理者PC21が有するRAMに一時的に記憶される。ボタン315は、各入力領域311〜313に入力された値を破棄してメニュー画面300に戻るための「キャンセル」ボタンである。
図11は、プロトコル制御リスト111を管理するためのプロトコル制御リスト管理画面の例を示す。図11のプロトコル制御リスト管理画面320は、メニュー画面300におけるボタン302の操作に応じて表示される。図11において、プロトコル制御リスト管理画面320は、入力領域321および322と、ボタン323および324とを含み、表3に示した各制御ポリシーについて、各項目を編集可能とされている。
プロトコル制御リスト管理画面320において、入力領域321は、Webサーバ101がリスト記憶部102から読み出したプロトコル制御リスト111を編集するための領域である。入力領域321は、それぞれ表示される内容を編集可能な入力領域321a、321bおよび321cを含む。
これらのうち、入力領域321bおよび321cは、表3に示した「識別子の種類」および「値」の各項目に対応し、リスト記憶部102から読み出されたプロトコル制御リスト111の各制御ポリシーについて、各項目の値が入力され表示されている。
この例では、項目「識別子の種類」に対応する入力領域321bは、予め設定された複数の値(「イーサネットタイプ」、「IPプロトコル番号」、「UDPポート番号」など)から1つを選択するようになっている。なお、図11においては、「イーサネットタイプ」は、「タイプ」として示されている。また、項目「値」に対応する入力領域321cは、対応する入力領域321bで選択された値に応じてガイド(この例では「タイプ」に対して16進表記を表す「0x」)を表示することができる。
入力領域321aは、例えばその制御ポリシーを管理者が理解容易とするためのラベルを入力するための領域であって、この例では、表3の項目「備考」の値が入力され表示されている。
入力領域321は、さらに、各制御ポリシーの削除を指示するための各削除ボタンを含むボタン群321dを含む。
なお、プロトコル制御リスト111における各制御ポリシーの優先度は、入力領域321bにおいて設定可能な各値に対して予め設定しておいてもよいし、入力領域321における各制御ポリシーの表示順序に応じて決めてもよい。また、優先度を入力するための入力領域をさらに設けてもよい。
プロトコル制御リスト管理画面320において、入力領域322は、既存のプロトコル制御リスト111に対して新規の制御ポリシーを追加するための領域である。入力領域322は、上述の入力領域321と同様に、表3に示した「識別子の種類」および「値」の各項目に対応する入力領域322bおよび322cと、ラベルを入力する入力領域322aと、制御ポリシーの追加を指示するためのボタン322dとを含む。
ボタン323は、各入力領域321および322に入力された値を確定し、メニュー画面300に戻るための「OK」ボタンである。各入力領域321および322に入力された値は、例えば管理者PC21が有するRAMに一時的に記憶される。ボタン324は、各入力領域321および322に入力された値を破棄してメニュー画面300に戻るための「キャンセル」ボタンである。
説明は図8に戻り、管理者PC21は、ブラウザにより、図10のIPアドレス制御リスト管理画面310や、図11のプロトコル制御リスト管理画面320を管理者PC21のディスプレイに表示させる。管理者PC21は、これらIPアドレス制御リスト管理画面310や、プロトコル制御リスト管理画面320に応じたユーザ操作に従い、IPアドレス制御リスト110や、プロトコル制御リスト111の編集を行う(ステップS104)。
管理者PC21は、メニュー画面300において「登録」ボタンであるボタン303に対するユーザ操作に応じて、Webサーバ101に対して、編集された各制御リストの変更を要求する(ステップS105)。例えば、管理者PC21は、ボタン303に対するユーザ操作に応じて、IPアドレス制御リスト管理画面310およびプロトコル制御リスト管理画面320に入力された各入力値をWebサーバ101に送信する。それと共に、管理者PC21は、Webサーバ101に対して、IPアドレス制御リスト110およびプロトコル制御リスト111の変更を要求する。
Webサーバ101は、管理者PC21からの変更要求に応じて、管理者PC21から送信された各入力値をリスト記憶部102に渡し、リスト記憶部102に対してIPアドレス制御リスト110およびプロトコル制御リスト111の変更を要求する(ステップS106)。リスト記憶部102は、Webサーバ101から渡された各入力値を用いてIPアドレス制御リスト110およびプロトコル制御リスト111を変更し、変更が完了すると、その旨を示す変更完了通知をWebサーバ101に送信する(ステップS107)。
Webサーバ101は、変更完了通知に応じて、OFC100に対して、フローテーブル201の更新を要求する(ステップS108)。OFC100は、この要求に応じて、リスト記憶部102に対して、IPアドレス制御リスト110およびプロトコル制御リスト111の読み込みを要求し(ステップS109)、リスト記憶部102からIPアドレス制御リスト110およびプロトコル制御リスト111を取得する(ステップS110)。
OFC100は、ステップS110で取得したIPアドレス制御リスト110とプロトコル制御リスト111とを合成し、表4を用いて説明した、IPアドレス制御リスト110およびプロトコル制御リスト111それぞれの制御ポリシーに基づく各フローエントリを生成する(ステップS111)。OFC100は、生成した各フローエントリを例えば有線SW20aが含むOFS200aに送信し、OFS200aに対し、各フローエントリのフローテーブル201への登録を依頼する(ステップS112)。OFS200aは、この依頼に応じてフローテーブル201に各フローエントリを登録し、フローテーブル201を更新する。
OFC100は、OFS200aへのフローエントリの登録を依頼した後、Webサーバ101に対してフローテーブル201の更新が完了した旨を示す更新完了通知を渡す(ステップS113)。Webサーバ101は、この更新完了通知に応じて、管理者PC21に対して各制御リストの変更の完了を通知する(ステップS114)。
(第1の実施形態に係るフローテーブルによる実際の通信例)
次に、第1の実施形態に係るフローテーブル201による実際の通信の例について説明する。ここでは、上述した表4に示した各フローエントリを含むフローテーブル201を用い、ゲストPC30から機密ネットワーク40内のプリンタ50を利用する例について説明する。
図12は、第1の実施形態に係るフローテーブル201による実際の通信の例を示すシーケンス図である。なお、図12において、上述した図3と共通する部分には同一の符号を付して、詳細な説明を省略する。
ゲストPC30は、有線SW20aに接続されると、ネットワーク11に向けてディスカバリ要求を送信し、利用可能な機器を探索する。ゲストPC30は、このディスカバリ要求を、プロトコルとしてマルチキャストDNSを指定して送信する(ステップS200)。この要求を含むパケットは、有線SW20aにおいてポート番号「1」の通信I/F2004に受信され、OFS200aに渡される。
OFS200aは、渡されたパケットのヘッダ情報と、入力ポート(port=1)とに基づきフローテーブル201に含まれる各フローエントリに対する照合を行う(ステップS201)。OFS200aは、各フローエントリの項目「priority」の値に従い、表4の通し番号「2」、「3」、「4」、…の順にフローエントリとの照合を行う。OFS200aは、照合の結果、プロトコルとしてマルチキャストDNSが指定される通し番号「4」のフローエントリが合致したと判定し、項目「actions」の値「Output (port=2)」に従い、当該パケットを通過させる。これにより、ゲストPC30から送信されたディスカバリ要求がネットワーク11に転送される(ステップS202)。
この例では、ネットワーク11に転送されたディスカバリ要求に応じて、プリンタ50が発見され、ディスカバリ要求の応答として、プリンタ50のIPアドレス「192.168.1.2」を含むパケットがプリンタ50から有線SW20aに送信される(ステップS203)。このパケットは、有線SW20aにおいてポート番号「2」の通信I/F2005に受信され、OFS200aに渡される。OFS200aは、フローテーブル201に含まれる各フローエントリに対する照合を行う(ステップS204)。この場合、入力ポートが「port=2」であるので、通し番号「1」のフローエントリが合致したと判定し、項目「actions」の値「Output (port=1)」に従い、当該パケットを通過させる。
このディスカバリ要求に対する応答を含むパケットは、有線SW20aから出力され、ゲストPC30に受信される(ステップS205)。これにより、ゲストPC30は、IPアドレスが「192.168.1.2」であるプリンタ50が利用可能であることを知ることができる。
次に、ゲストPC30から、IPアドレス「192.168.1.2」であるプリンタ50に対して印刷データを送信し、プリンタ50に印刷を実行させる場合について説明する。ゲストPC30は、印刷データを所定サイズに分割し、分割したそれぞれの印刷データを順次パケットに詰め込む。そして、ゲストPC30は、宛先IPアドレスとしてIPアドレス「192.168.1.2」を、各パケットのヘッダ情報に含めて有線SW20aに向けて送信する(ステップS206)。
ゲストPC30から送信された各パケットは、有線SW20aにおいてポート番号「1」の通信I/F2004に受信され、OFS200aに渡される。OFS200aは、渡されたパケットのヘッダ情報と、入力ポート(port=1)とに基づきフローテーブル201に含まれる各フローエントリに対する照合を行う(ステップS207)。OFS200aは、各フローエントリの項目「priority」の値に従い、表4の通し番号「2」、「3」、「4」、…の順にフローエントリとの照合を行う。
OFS200aは、照合の結果、宛先IPアドレス指定であり指定される宛先IPアドレスが「192.168.1.2」である通し番号「5」のフローエントリが合致したと判定する。OFS200aは、判定の結果に従い、そのフローエントリの項目「actions」の値「Output (port=2)」に従い当該パケットを通過させる。これにより、ゲストPC30から送信された印刷データが有線SW20aからネットワーク11を介してプリンタ50に送信される(ステップS208)。プリンタ50は、ゲストPC30から送信された印刷データに従い印刷処理を実行する(ステップS209)。
以上説明したように、第1の実施形態では、宛先IPアドレスの指定に応じたマッチングルールによる制御リストと、プロトコルの指定に応じたマッチングルールによる制御リストとをそれぞれ作成し、この2つの制御リストを組み合わせて、外部の端末装置との間のパケット送受信を制御している。このとき、各制御リストは、管理者PC21から、Webサーバ101により提供されるユーザインタフェースを用いて、それぞれ編集できる。そのため、第1の実施形態に係る通信システム1を適用することで、外部(組織体外)の端末装置に、組織内LANにおける特定のネットワークリソースを利用可能とさせる制御を容易に設定可能となる。
(第2の実施形態)
次に、第2の実施形態について説明する。上述の第1の実施形態では、外部の端末装置からネットワーク11に向けた通信の制御を主に行っていた。第2の実施形態では、第1の実施形態の制御に加えて、ネットワーク11から外部の端末装置に向けた通信の制御も実行する。
なお、第2の実施形態では、図3を用いて説明した通信システム1の構成をそのまま適用できる。また、表2および表3を用いて説明したIPアドレス制御リスト110およびプロトコル制御リスト111も、第2の実施形態にそのまま適用できる。さらに、図8および図12を用いて説明した処理も、第2の実施形態にそのまま適用できる。
表5は、第2の実施形態に係る各フローエントリの例を示す。表5の各部の意味は、上述した表4と同一であるので、ここでの詳細な説明を省略する。
表5において、通し番号「7」〜「12」で識別される各フローエントリは、第1の実施形態と同様に外部の端末装置からネットワーク11に向けた通信を制御するためのフローエントリであって、表4において通し番号「2」〜「7」で識別される各フローエントリと同一である。一方、表5における通し番号「1」〜「6」で識別される各フローエントリは、ネットワーク11から外部の端末装置に向けた通信を制御するためのフローエントリであって、同表5の通し番号「7」〜「12」で識別される各フローエントリに対して入力ポートと出力ポートとを入れ替えた内容となっている。
また、入力ポートと出力ポートとの入れ替えに伴い、送信先(宛先)と送信元とが入れ替えられる。具体的には、表5において、通し番号「9」で識別されるフローエントリの項目「match」において指定される送信先ポート番号(tp_dst)が、値「5353」を変えずに送信元ポート番号(tp_src)に入れ替えられる。同様に、通し番号「11」で識別されるフローエントリの項目「match」において指定される宛先IPアドレス(nw_dst)が、値「192.168.1.2」を変えずに送信元IPアドレス(nw_src)に入れ替えられる。
なお、これらの説明でも分かるように、表5に示す各フローエントリは、表4の各フローエントリと同一のIPアドレス制御リスト110およびプロトコル制御リスト111に基づき生成することができる。
このように各フローエントリを生成することで、外部の端末装置と、組織内LAN内の通信を許可した宛先との間で、双方向に通信することが可能となる。また、許可した宛先以外の通信を双方向で遮断することで、意図しない情報を外部の端末装置が受信してしまう事態が防止され、セキュリティを向上することができる。
なお、上述の実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。