(実施形態の共通部分の概要)
まず、図面を参照して、各実施形態に共通する構成および動作の概要について説明する。
図1は、実施形態に係る通信システムの構成の一例を示す説明図である。図1に例示する通信システムは、通信端末1と、サーバ2と、通信ネットワーク3−1〜3−3と、を備えている。なお、図1に示すこれらの構成要素の数や接続関係は一例であり、本発明はこれに限定されるものではない。
通信端末(第1の通信装置)1は、通信ネットワーク3−1および3−2と同時に接続し通信することができ、それらや通信ネットワーク3−3を介してサーバ2と通信を行う。通信端末1は、例えば、サーバ2のサービスを利用するクライアント端末であるが、その他、サーバ2と通信する任意の通信装置であってもよい。
サーバ(第2の通信装置)2は、通信端末1の通信相手であり、その一例としてWebサーバ、メールサーバ、ビデオサーバ、等が挙げられる。ただし、本発明のおけるサーバ2はこれらに限定されない。また、各実施形態の説明では通信端末1の通信相手がサーバである例を示したが、本発明はこれに限定されない。通信端末1の通信相手は通信端末1と通信する装置であればよく、その形態はサーバの他、端末、携帯電話、パーソナルコンピュータ、家電、等であってもよい。
通信ネットワーク3−1〜3−2は、通信端末1と接続し、通信端末1と、自ネットワーク内に接続された装置もしくは他のネットワークとの間の通信を中継する。また、通信ネットワーク3−3は、サーバ2と接続し、通信端末1とサーバ2との間の通信を中継する。通信ネットワーク3−1〜3−3は有線ネットワークであっても、無線ネットワークであってもよい。有線ネットワークの一例としてEthernet(登録商標)、専用線、が挙げられる。無線ネットワークの一例として、3G、LTE、無線LAN、WiMAX、PHS(Personal Handy−phone System)、が挙げられる。通信ネットワーク3−1〜3−3は、それぞれ別の種類のネットワークでもよいし、同じ種類のネットワークでもよい。例えば、通信ネットワーク3−1及び3−2の一方を3Gとし、他方を無線LANとしてもよい。
図2は、実施形態に係る通信端末1の構成の一例を示す構成図である。図2に示すように、実施形態に係る通信端末1は、通信制御部10と、通信処理部20と、通信IF(Interface)部30−1〜30−2と、通信IF制御部40−1〜40−nと、内部通信IF部50と、通信利用部60−1〜60−mと、プロトコルスタック部70と、を備える。なお、図2は、通信端末1の機能ブロック(処理部もしくはモジュール)の一例であり、各実施形態の動作が実現できれば、その他の構成であってもよい(図3及び図4も同様)。
通信制御部10は、通信処理部20による通信処理を制御する。後述のように、通信制御部10は、制御ポリシに基づいてフローエントリ(処理規則)を作成することで、通信処理部20の処理を制御する。特に、通信制御部10は、通信処理部20に対し透過制御を行う。透過制御(透過処理)とは、通信処理部20にて通信IF部30から受信されたパケットが、プロトコルスタック部70にて通信IF部30から直接受信されたものとして処理されるように制御(処理)することである。実施形態では、通信処理部20がパケットを受信した通信IF部30の識別子をパケットとともにプロトコルスタック部70へ通知することで、透過制御(透過処理)を実現する。なお、通信制御部10は、通信端末1の内部で通信処理部20を制御する制御部として説明するが、通信端末1の外部でネットワーク等を介して通信処理部20を制御する制御装置としてもよい。
通信処理部20は、通信制御部10による制御の下、通信IF部30−1〜30−2や内部通信IF部50から送受信される通信(パケット)の処理を行う。後述のように、通信処理部20は、通信制御部10から設定されたフローエントリ(処理規則)に基づいて、受信したパケットを処理する。
プロトコルスタック部70は、通信プロトコル群を処理するモジュールである。プロトコルスタック部70は、例えば、OSI(Open Systems Interconnection)参照モデルやTCP/IP(Transmission Control Protocol/Internet Protocol)参照モデルのネットワーク層およびトランスポート層に相当するプロトコル群を処理する。
プロトコルスタック部70は、階層化された通信プロトコルの一部もしくは全部を処理するプロトコルスタックである。プロトコルスタック部70は、少なくとも、通信IF部30−1〜30−2よりも上位レイヤの通信プロトコルを処理する。プロトコルスタック部70は、上位レイヤの通信を行うアプリケーション(上位レイヤアプリケーション)である通信IF制御部40−1〜40−nや通信利用部60−1〜60−mに対し、例えば、ソケット(Socket)インタフェースによる通信機能を提供する。プロトコルスタック部70は、前記ネットワーク層およびトランスポート層の処理をスキップして通信を行う機能(例えばRawソケット)を提供してよい。プロトコルスタック部70は、例えば、ソケットインタフェースを通じ、上位レイヤアプリケーションに対し、送受信する通信を特定のアドレス、ポート、通信インタフェースに固定する(限定する、バインドする)機能(バインド機能)を提供してよい。当該バインド機能は、ソケットごとに動作してもよい。プロトコルスタック部70は、例えば、ソケットインタフェースを通じ、上位レイヤアプリケーションが、通信に使用されたアドレス、ポート、通信インタフェースを取得する機能を提供してよい。
プロトコルスタック部70は、下位レイヤ(通信IF部30−1〜30−2、内部通信IF部50、通信処理部20)に対し、受信パケットの入力を受け付けるインタフェース(下位レイヤ受信通知インタフェース71)を提供する。当該下位レイヤ受信通知インタフェース71は、受信パケットのデータとともに、通信インタフェース(通信IF部30−1〜30−2、および内部通信IF部50のいずれか)の識別子(受信通信インタフェース識別子)を受け付ける。プロトコルスタック部70は、下位レイヤ受信通知インタフェース71で通知された受信パケットは当該受信パケットとともに通知された識別子を持つ通信インタフェースで受信されたものとみなして当該受信パケットを処理する。当該識別子情報は、前記バインド機能の実現に使用されてもよい。
通信IF部30−1〜30−2は、それぞれ通信ネットワーク3−1および3−2に接続し、パケットの送受信を行う。通信IF部30−1〜30−2は、それぞれ接続する通信ネットワーク3−1および3−2の通信プロトコル(例えば、レイヤ1)に準拠した物理インタフェースである。通信IF部30−1〜30−2は、通信ネットワーク3−1および3−2からパケットを受信した際、パケットデータとともに自身の通信インタフェース識別子を通信処理部20に通知する。
通信IF制御部40−1〜40−nは、通信IF部30−1〜30−2上でのデータ通信を可能とするための、制御用通信およびその処理を行う。通信IF制御部40−1〜40−nは、プロトコルスタック部70を介し、制御用通信を制御対象の通信インタフェース上で行う。例えば、通信IF制御部40−1〜40−nは、通信IF部30−1に関する制御用通信のパケット送信には通信IF部30−1を用いる。また、例えば、通信IF制御部40−1〜40−nは、通信IF部30−1に関する制御用通信のパケットの受信を、通信IF部30−1からの受信の場合のみ受け付ける。
通信IF制御部40−1〜40−nによる制御用通信およびその処理の例として、WPAやWPA2(WiFi−Protected Access2)等の無線LAN認証処理(通信インタフェースが無線LANインタフェースの場合)、通信インタフェースで使用するIP(Internet Protocol)アドレス等の構成を行うDHCP処理、が挙げられる。
内部通信IF部50は、通信端末1の内部の機能(処理部)間を接続するための内部インタフェースであり、通信端末1外の装置との物理的な接続を伴わない、仮想的な通信インタフェースである。内部通信IF部50は、それを利用し通信を行う、通信利用部60−1〜60−mやプロトコルスタック部70に対し、一般的な物理通信IFと同様に振る舞う。ただし、内部通信IF部50に送受信されたパケットは物理ネットワークに送受信されることなく、通信処理部20への入出力として扱われる。内部通信IF部50は、通信処理部20から出力されたパケットを、下位レイヤ受信通知インタフェース71を通じプロトコルスタック部70に受信パケットとして通知する。その通知の際、内部通信IF部50は、受信通信インタフェース識別子として自身の通信インタフェース識別子を、パケットのデータとともにプロトコルスタック部70に通知する。
通信利用部60−1〜60−mは、通信端末1内において通信を行うモジュールである。例えば、通信利用部60−1〜60−mは、通信処理部20を介して、外部のサーバ2にアクセスし、サーバ2のサービスを利用するクライアント処理部である。通信利用部60−1〜60−mの一例として、Webブラウザ、メールクライアント、ビデオストリーミングアプリケーション、SNS(Social Network Service)アプリケーション等が挙げられる。ただし、本発明のおける通信利用部60−1〜60−mはこれらに限定されない。本実施形態では、通信利用部60−1〜60−mが行う通信には内部通信IF部50が使われるものとする。これは、通信利用部60−1〜60−mによるソケットインタフェースを通じたプロトコルスタック部70への指示、もしくはプロトコルスタック部70への事前設定(例えば経路)によって実現できる。
例えば、実施形態に係る通信システムは、少なくとも図14に示すように構成されていてもよい。すなわち、通信システムは、通信処理部20と、通信IF部30と、プロトコルスタック部70と、通信制御部10とを備えている。例えば、通信装置が通信処理部20と、通信IF部30と、プロトコルスタック部70と、通信制御部10とを含んでいてもよいし、通信装置が通信処理部20と、通信IF部30と、プロトコルスタック部70とを含み、通信装置の外部の通信制御装置が通信制御部10を含んでいてもよい。通信IF部30は、パケットを受信するインタフェースである。通信処理部(フロー処理部)20は、パケットが属するフローとフローに属するパケットに対する処理とを規定するフロー処理規則に基づいて、通信IF部30が受信したパケットを処理する。プロトコルスタック部(通信プロトコル処理部)70は、通信処理部20が処理したパケットを、通信IF部30よりも上位レイヤの通信プロトコルに従って処理する。通信制御部10は、通信処理部20にて通信IF部30から受信されたパケットが、プロトコルスタック部70にて通信IF部30から直接受信されたものとして処理されるように、通信処理部20に対し透過制御を行う。これにより、プロトコルスタック部70が、通信処理部20によるフロー制御の影響を受けることなく、プロトコル処理を行うことができるため、フローベースで通信処理を行うとともに、プロトコルスタック部70などの内部モジュールの変更を抑えることが可能となる。
図3は、実施形態に係る通信端末1の通信制御部10の構成の一例を示す構成図である。図3に示すように、通信制御部10は、制御処理部101と、制御ポリシ記憶部102と、を備えている。
制御処理部101は、制御ポリシ記憶部102に記憶された情報を利用し、通信処理部20による通信処理を制御する。
制御処理部101は、通信処理部20の制御チャネル処理部201との間で制御用通信(制御チャネル)を行う。制御処理部101は、制御チャネルを通じて通信処理部20から処理が必要なパケットの通知(パケット通知)を受け取ると、制御ポリシ記憶部102に記憶された制御ポリシと当該パケットの照合を行う。制御処理部101は、当該パケットの照合に成功し、適用する制御ポリシの決定に成功した場合、当該パケットが属する通信(フロー)に適用する処理を当該制御ポリシから決定する。制御処理部101は、当該通信に適用する処理を決定した後、当該処理を表す0もしくは1以上のフローエントリ(処理規則)を生成し、制御チャネルを通じて通信処理部20に当該フローエントリを設定する。
また、制御処理部101は、対象となる通信(フロー、例えば通信IF制御部40−1〜40−nによる制御用通信)に関し、通信処理部20が受信したパケットが、通信処理部20が当該パケットを受信した通信インタフェースの識別子とともに下位レイヤ受信通知インタフェース71を通じてプロトコルスタック部70に通知されるよう制御(透過制御)する。
制御ポリシ記憶部102は、発生した通信に適用する処理を制御処理部101が決定するための情報である制御ポリシのリストを記憶する。制御ポリシは、少なくとも、当該制御ポリシの適用対象である通信(トラフィック、フロー)を指定するトラフィック条件と、当該制御ポリシが適用される際に実行すべき処理と、から構成される。制御ポリシは、優先度を含んでもよい。なお、制御ポリシ記憶部102は、通信制御部10内部の記憶部として説明するが、通信端末1内部のその他の部分の記憶部であってもよいし、通信端末1の外部の記憶装置であってもよい。
制御ポリシのトラフィック条件は、例えば、以下の項目を含む。一つの制御ポリシに含まれるトラフィック条件は一つでも複数でもよく、それらはANDで結合(AND条件)されたりOR(OR条件)で結合されたりしてよい。また、トラフィック条件は完全一致でも部分一致でもよい。
・送信元IPアドレス
・送信先IPアドレス
・プロトコルタイプ
・送信元ポート番号
・送信先ポート番号
・入力インタフェース
・入力インタフェース種別
・QoS(Quolity of Service)
・VLAN ID(Virtual Local Area Network Identification)
・ドメイン名
・アプリケーション
制御ポリシの処理は、例えば、以下の項目を含む。一つの制御ポリシに含まれる処理は一つでも複数でもよい。
・指定されたIFを使用して通信する。
・指定されたIF群の中のいずれかを使用して通信する(IF間に優先度を設けてもよい)。
・指定されたIF群のすべてを使用して通信する。
・パケット中の指定されたフィールドを指定された値に変更する。
・指定されたサーバもしくはモジュールに転送する。
・指定されたフローエントリを通信処理部20に設定する。
・破棄する。
なお、前述した制御ポリシのトラフィック条件および処理は一例であり、本発明はこれらに限定されない。また、制御ポリシ記憶部102が記憶する制御ポリシは予め与えられておいてもよいし、制御ポリシサーバ(図示されない)等の通信端末1以外の装置から受信されてもよい。
図4は、実施形態に係る通信端末1の通信処理部20の構成の一例を示す構成図である。図4に示すように、通信処理部20は、制御チャネル処理部201と、パケット処理部202と、フローテーブル記憶部203と、を備えている。
制御チャネル処理部201は、通信制御部10との間で制御用通信(制御チャネル)を行う。また、制御チャネル処理部201は、対応するフローエントリが存在しないパケットの通知をパケット処理部202から受けると、制御チャネルを用いてそのパケットを通信制御部10に通知する(パケット通知)。パケット通知には、当該パケットの全部もしくは一部、および当該パケットが受信されたIFの情報が含まれる。
さらに、制御チャネル処理部201は、制御チャネルを介して通信制御10からフローエントリを追加、変更、または、削除するよう指示されると、指示された内容に基づきフローテーブル記憶部203に記憶されているフローテーブルを更新する。また、制御チャネル処理部201は、制御チャネルを介して通信制御10からパケットを出力するよう指示されると、指示された内容に基づきパケットを出力するようパケット処理部202に指示する。
フローテーブル記憶部203は、処理規則(フローエントリ)を含むフローテーブルを記憶する。処理規則(フローエントリ)は、制御チャネル処理部201によってフローテーブル記憶部203に記録される。フローテーブル記憶部203は、通信処理部20内部の記憶部として説明するが、通信端末1内部のその他の部分の記憶部であってもよいし、通信端末1の外部の記憶装置であってもよい。
パケット処理部202は、通信IF部30−1〜30−2や内部通信IF部50を介して他の装置やモジュール(以降まとめてエンティティと記載)と接続され、接続されたエンティティとの間でパケットの送受信を行う。パケット処理部202は、他の装置からパケットを受信すると、受信したパケットに対応するフローエントリをフローテーブル記憶部203に記憶されているフローテーブル内から検索する。受信したパケットに対応するフローエントリがフローテーブル内に見つかった場合、パケット処理部202は、そのフローエントリのアクションに従って処理を行う。一方、受信したパケットに対応するフローエントリがフローテーブルに見つからなかった場合、パケット処理部202は、受信したパケットのフローエントリが存在しない旨を制御チャネル処理部201に通知する。
さらに、パケット処理部202は、他のエンティティと通信を行うためのポートを複数備え、各ポートは、それぞれ異なる通信IF部30−1〜30−2および内部通信IF部50と接続される。なお、各ポートは、ポート識別子により識別される。
フローエントリのアクションに基づき、パケット処理部202が行う処理には、以下に例示する処理が挙げられる。また、パケット処理部202が行う処理は、1つに限定されず、0であっても、2つ以上であってもよい。ただし、フローエントリのアクションに指定される処理は、以下の処理に限定されない。
・指定されたポートからパケットを出力する。
・パケットの送信先MAC(Media Access Control)アドレスを指定された値に変更する。
・パケットの送信元MACアドレスを指定された値に変更する。
・パケットの送信先IPアドレスを指定された値に変更する。
・パケットの送信元IPアドレスを指定された値に変更する。
・パケットの送信先ポート番号を指定された値に変更する。
・パケットの送信元ポート番号を指定された値に変更する。
・パケットにVLAN(Virtual Local Area Network)タグを追加する。
・パケットのVLANタグを削除する。
・パケットのVLANタグを変更する。
・パケットを破棄する。
制御チャネル処理部201およびパケット処理部202は、一例として、プログラムに従って動作するコンピュータのCPU(Central Processing Unit)によって実現することができる。また、制御チャネル処理部201およびパケット処理部202は、それぞれ、専用のハードウェアで実現されていてもよい。
(実施形態1)
次に、図面を参照して第1の実施形態に係る通信システムについて説明する。ここでは以下を仮定して第1の実施形態の説明を行う。ただし、本発明はこれらに限定されるものではない。
− 通信ネットワーク3−1は無線LANネットワークであり、通信IF部30−1は無線LANインタフェースであり、通信IF部30−1は通信ネットワーク3−1に接続する。
− 通信ネットワーク3−2は3Gネットワークであり、通信IF部30−2は3Gインタフェースであり、通信IF部30−2は通信ネットワーク3−2に接続する。
第1の実施形態における通信処理部20のパケット処理部202は、前述した処理に加え、フローエントリのアクションとして透過アクション(透過処理)を処理する。透過アクションの処理では、パケット処理部202は、下位レイヤ受信通知インタフェース71を通じ処理対象のパケットをプロトコルスタック部70に受信パケットとして通知する。その通知の際、パケット処理部202は、受信通信インタフェース識別子として、パケット処理部202が当該パケットを受信する際に使用された通信インタフェースの識別子を、パケットのデータとともにプロトコルスタック部70に通知する。
図5は、第1の実施形態における通信ネットワーク3−1の構成の一例を示す構成図である。図5に示すように、本実施形態における通信ネットワーク3−1は、LAN(Local Area Network)3−1−1と、無線LAN基地局3−1−2と、ルータ3−1−3と、DHCPサーバ3−1−4と、を備えている。
無線LAN基地局3−1−2は、無線LANの基地局(アクセスポイント)であり、通信端末1の通信IF部30−1と無線LAN方式により接続し、通信IF部30−1とLAN3−1−1との間の通信を中継する。
ルータ3−1−3は、LAN3−1−1と通信ネットワーク3−3との間で、TCP/IPプロトコルの通信を中継するルータである。
DHCPサーバ3−1−4は、DHCPプロトコルにおけるサーバ機能を有し、DHCPクライアントからの要求に対し当該クライアントが使用してよいIPアドレス、経路、ゲートウェイのアドレス、DNS(Domain Name System)サーバのアドレス、等を応答として返す。例えば、これらの一部または全部のアドレスをクライアント(通信端末)に設定することを、アドレスを構成するという。
第1の実施形態におけるプロトコルスタック部70は、TCP/IPスタックである。第1の実施形態におけるプロトコルスタック部70は、特に、IPおよびTCP(Transmission Control Protocol)およびUDP(User Datagram Protocol)およびICMP(Internet Control Message Protocol)およびARPを処理する。ただし、本発明はこれらに限定されない。
プロトコルスタック部70は、通信インタフェース(通信IF部30−1〜30−2および内部通信IF部50)毎に、当該通信インタフェースで使用するIPアドレスを保持する。当該IPアドレスは、プロトコルスタック部70に予め与えられてもよいし、動的に取得されたり更新されたりしてもよい。
プロトコルスタック部70は、送信するIPパケットの転送先を決定するための情報である経路表を保持する。プロトコルスタック部70が保持する経路表は、例えば、送信先IPアドレスと、当該送信先IPアドレスを持つIPパケットの転送先装置のIPアドレスおよび転送に使用する通信インタフェースの識別子またはそれらのいずれか、とを含む。送信先IPアドレスは、ネットワークアドレスおよびサブネットアドレスであってもよい。当該経路表は、プロトコルスタック部70に予め与えられてもよいし、動的に取得されたり更新されたりしてもよい。
第1の実施形態におけるプロトコルスタック部70には、予め経路表に以下の経路(デフォルト経路)が設定されているものとする。
− 送信先 0.0.0.0/0、転送先 内部通信IF部50
第1の実施形態における各装置のMACアドレスおよびIPアドレスの一例を図6に示す。この例では、図6に示すように、通信IF部30−1はDHCPによりアドレスが割り当てられ、通信IF部30−2はPPP(Point to Point Protocol)によりアドレスが割り当てられる。また、その他の通信インタフェース及び装置には、図6のアドレスが予め設定されている。なお、本実施形態では、DHCPにより通信IF部30−1にアドレスを割り当てる例について説明するが、本発明を、PPPにより通信IF部30−2にアドレスを割り当てる例に適用してもよい。すなわち、PPPパケットのフローに対し透過制御を行ってもよい。
第1の実施形態における通信IF制御部40−1は、通信IF部30−1を対象としてDHCPクライアントの処理を行う。通信IF制御部40−1は、プロトコルスタック部70に対しソケット(例えばRawソケットもしくはUDPソケット)を作成する要求を行い、かつ当該ソケットを通信IF部30−1にバインドする要求を出す。通信IF制御部40−1は、DHCPに係る通信を当該ソケットを使用して行う。
第1の実施形態における制御ポリシ記憶部102が記憶する制御ポリシのリストの一例を図7に示す。図7に示すように、第1の実施形態における制御ポリシは、優先度と、トラフィック条件と、実行すべき処理とを関連付けた規則である。トラフィック条件は、ポリシを適用するトラフィックを識別するための条件である。また、第1の実施形態における制御ポリシは優先度を含み、数値が小さいものが高優先であるとする。ここでは、説明の都合上、制御ポリシの優先度をその識別子として使用する。例えば、図7の上から一つ目の制御ポリシを参照する際、制御ポリシ1と記述する。本実施形態の説明において、トラフィック条件は特記がない場合AND結合(AND条件)とする。特に、本実施形態では、図7に示すように、制御ポリシの処理として、使用する通信インタフェースを指定でき、さらに、トラフィックに対し透過制御するために「透過させる」を指定できる。トラフィック条件には、通信インタフェースやポート番号を指定することができ、これにより、特定の通信インタフェースを介す必要のある通信、すなわち、通信インタフェースに特有の(特化した)通信に対して、透過制御を行うことができる。
[動作の説明]
次に、本実施形態に係る通信システムの動作について、図面を参照しつつ説明する。
なお、本実施形態において、ドメイン名からのIPアドレスの解決はDNS等の一般的な技術によって行われるものとし、その説明を省略する。また、TCPによる通信では、Ack(Acknowledgement)送信や、データ欠落に伴うデータパケットの再送が通常発生するが、特記する場合を除きそれらの図示および説明は省略する。
<通信IF制御部40−1がIPアドレス情報を取得する場合の動作>
通信IF制御部40−1が、DHCPに基づき、通信端末1が通信IF部30−1で使用すべきIPアドレス等の情報を取得する際の動作について説明する。通信IF制御部40−1が行う通信の受信パケットは、図7に示す制御ポリシ2によって処理されることが期待される。
なお、以下の説明は、次の条件が成り立っていることを前提とする。
− フローテーブル記憶部203にはフローエントリが記憶されていない。
図8A及び図8Bは、本実施形態における通信システムの動作の例を示すシーケンス図である。
図8A及び図8Bに示すように、まず、通信IF制御部40−1は、DHCPに係る通信のためのソケット(DHCP用ソケット)の作成要求および当該ソケットの通信IF部30−1へのバインド要求をプロトコルスタック部70に対し行い、プロトコルスタック部70はその要求に応じる(ステップS100)。以後、通信IF制御部40−1は作成されたDHCP用ソケットを通じてパケットの送受信を行う。
続いて、通信IF制御部40−1は、DHCPサーバを探索するため、DHCP Discoverパケットを送信する(ステップS101)。当該パケットは、UDP/IPパケットであり、その送信元IPアドレスは0.0.0.0に、送信先IPアドレスは255.255.255.255(ブロードキャストIPアドレス)に、送信元ポート番号は68に、送信先ポート番号は67に設定される。
続いて、プロトコルスタック部70は、ステップS101でDHCP用ソケットから送信されたパケット(DHCP Discoverパケット)の送信処理を行う(ステップS102)。ここでは、DHCP用ソケットは通信IF部30−1にバインドされていること、パケットの送信先IPアドレスがブロードキャストIPアドレスであることから、プロトコルスタック部70はパケットの送信先MACアドレスをブロードキャストMACアドレスとして、当該パケットの送信要求を通信IF部30−1に出力する。なお、DHCP用ソケットは通信IF部30−1にバインドされているため、DHCP用ソケットに送信されたパケットは、通信処理部20を介さずに、直接、通信IF部30−1に出力される。
続いて、通信IF部30−1は、送信元MACアドレスを通信IF部30−1のMACアドレスとして、送信要求されたパケット(DHCP Discoverパケット)を無線LAN基地局3−1−2に送信する(ステップS103)。以降、当該パケットは、無線LAN基地局3−1−2、LAN3−1−1の順に転送され、DHCPサーバ3−1−4で受信される。
続いて、DHCPサーバ3−1−4は、受信したDHCP Discoverパケットに対する応答としてDHCP Offerパケットを送信する(ステップS104)。本例では、DHCPサーバ3−1−4は、通信IF制御部40−1の要求に対し、IPアドレスとして192.168.1.1を割り当てるものとする。当該DHCP Offerパケットは、UDP/IPパケットであり、以下のように構成される。
‐送信元MACアドレス:02:00:03:01:04:01
‐送信先MACアドレス:02:00:00:00:00:01
‐送信元IPアドレス:192.168.1.253
‐送信先IPアドレス:192.158.1.1(割り当て予定のIPアドレス)
‐送信元ポート番号:67
‐送信先ポート番号:68
‐DHCP Your IP Addressフィールド:192.168.1.1
‐DHCP Subnet Maskフィールド:255.255.255.0
‐DHCP Server Identifierフィールド:192.168.1.253
当該DHCP Offerパケットは、LAN3−1−1、無線LAN基地局3−1−2の順で転送され、通信IF部30−1で受信される。
続いて、通信IF部30−1は、受信したパケット(DHCP Offerパケット)を通信処理部20に送信する(ステップS105)。なお、通信IF部30−1で受信したパケットに対し、通信処理部20でフローに応じた処理を適用するため、全てのパケットが通信処理部20に出力される。
続いて、通信処理部20のパケット処理部202は当該パケットを受信し、フローテーブル記憶部203を参照し、当該パケットに対応するフローエントリの有無を確認する(ステップS106)。ステップS106の時点において、フローテーブル記憶部203は空であるため、受信したパケット(DHCP Offerパケット)に対応するフローエントリは見つからない。
続いて、通信処理部20のパケット処理部202は、受信したパケットと一致するフローエントリが無いため、当該パケットを制御チャネル処理部201に通知し、制御チャネル処理部201は対応するパケット通知を通信制御部10に送信する(ステップS107)。
続いて、通信制御部10の制御処理部101はパケット通知を受信し、通知されたパケット(DHCP Offerパケット)に対する処理を決定する(ステップS108)。その動作の詳細は後述する。本処理において、受信したDHCP Offerパケットに対応する図7の制御ポリシ2に関し、後述するステップS135が実行され、図11Aの項番1に示すフローエントリが生成される。
続いて、通信制御部10の制御処理部101は、ステップS108において生成されたフローエントリを通信処理部20に設定すると同時に、対応するパケット(DHCP Offerパケット)に対し当該フローエントリに基づく処理を適用するよう指示する(ステップS109)。
続いて、通信処理部20の制御チャネル処理部201は、通知(設定)されたフローエントリ(図11Aの項番1)をフローテーブル記憶部203に記憶させる(ステップS110)。
続いて、通信処理部20のパケット処理部202は、ステップS109で設定されたフローエントリに基づきパケット(DHCP Offerパケット)を処理する(ステップS111)。当該パケットが図11Aの項番1のフローエントリにマッチするため、当該フローエントリのアクションを実行する。具体的には、パケット処理部202は、当該パケットに対し透過アクションの処理を実行する。すなわち、パケット処理部202は、当該パケットと、受信通信インタフェース識別子として通信IF部30−1の通信インタフェース識別子とを、下位レイヤ受信通知インタフェース71を通じプロトコルスタック部70に通知する。
続いて、プロトコルスタック部70は、受信したパケットの受信処理を行い、その結果DHCP用ソケットを通じ通信IF制御部40−1に当該パケット(DHCP Offerパケット)の受信を通知する(ステップS112)。プロトコルスタック部70は、当該パケットの受信処理の一部として、通知された受信通信インタフェース識別子の確認を行う。当該DHCP用ソケットは通信IF部30−1にバインドされているため、プロトコルスタック部70は、通知された受信通信インタフェース識別子がバインド先である通信IF部30−1の識別子である場合にのみ、当該パケットを当該DHCP用ソケットでの受信パケットとしてみなす。本例の場合、通信処理部20から通知された受信通信インタフェース識別子は通信IF部30−1の識別子であるため、プロトコルスタック部70は、当該パケットを当該DHCP用ソケットの受信パケットとしてみなす。
続いて、DHCP Offerパケットを受信した通信IF制御部40−1は、アドレスの割り当てを要求するため、DHCP Requestパケットを送信する(ステップS113)。当該パケットは、UDP/IPパケットであり、以下のように構成される。
‐送信元IPアドレス:0.0.0.0
‐送信先IPアドレス:255.255.255.255
‐送信元ポート番号:68
‐送信先ポート番号:67
‐DHCP Requested IP Addressフィールド:192.168.1.1
‐DHCP Server Identifierフィールド:192.168.1.253
続いて、プロトコルスタック部70は、ステップS114でDHCP用ソケットから送信されたパケット(DHCP Requestパケット)の送信処理を行う(ステップS114)。ステップS102と同様、プロトコルスタック部70はパケットの送信先MACアドレスをブロードキャストMACアドレスとして、当該パケットの送信要求を通信IF部30−1に出す。
続いて、通信IF部30−1は、送信要求されたパケット(DHCP Requestパケット)を無線LAN基地局3−1−2に送信する(ステップS115)。以降、当該パケットは、無線LAN基地局3−1−2、LAN3−1−1の順に転送され、DHCPサーバ3−1−4で受信される。
続いて、DHCPサーバ3−1−4は、受信したDHCP Requestパケットに対する応答としてDHCP Ackパケットを送信する(ステップS116)。当該パケットは、UDP/IPパケットであり、以下のように構成される。
‐送信元MACアドレス:02:00:03:01:04:01
‐送信先MACアドレス:02:00:00:00:00:01
‐送信元IPアドレス:192.168.1.253
‐送信先IPアドレス:192.158.1.1
‐送信元ポート番号:67
‐送信先ポート番号:68
‐DHCP Your IP Addressフィールド:192.168.1.1
‐DHCP Subnet Maskフィールド:255.255.255.0
‐DHCP Server Identifierフィールド:192.168.1.253
‐DHCP Routerフィールド:192.168.1.254
当該DHCP Ackパケットは、LAN3−1−1、無線LAN基地局3−1−2の順で転送され、通信IF部30−1で受信される。
続いて、通信IF部30−1は、受信したパケット(DHCP Ackパケット)を通信処理部20に送信する(ステップS117)。
続いて、通信処理部20のパケット処理部202は、当該パケットを受信し、フローテーブル記憶部203を参照し、当該パケットに対応するフローエントリの有無を確認する(ステップS118)。受信したパケット(DHCP Offerパケット)とフローエントリの条件を比較し、ここでは、ステップS110において記憶されたフローエントリが発見される(図11Aの項番1)。
続いて、通信処理部20のパケット処理部202は、ステップS118で発見したフローエントリに基づきパケット(DHCP Ackパケット)を処理する(ステップS119)。当該パケットが図11Aの項番1のフローエントリにマッチするため、当該フローエントリのアクションを実行する。具体的には、パケット処理部202は、当該パケットに対し透過アクションの処理を実行する。すなわち、パケット処理部202は、当該パケットと、受信通信インタフェース識別子として通信IF部30−1の通信インタフェース識別子とを、下位レイヤ受信通知インタフェース71を通じプロトコルスタック部70に通知する。
続いて、プロトコルスタック部70は、受信したパケットの受信処理を行い、その結果DHCP用ソケットを通じ通信IF制御部40−1に当該パケット(DHCP Ackパケット)の受信を通知する(ステップS120)。ステップS112と同様に、通知された通信インタフェース識別子に対応するDHCP用ソケットの受信パケットとして処理する。
続いて、通信IF制御部40−1は、DHCP Ackパケットで通知された情報を記憶するとともに、通信IF部30−1で使用するIPアドレスとしてDHCPサーバ3−1−4から割り当てられたIPアドレス(本例では192.168.1.1)をプロトコルスタック部70に設定する(ステップS121)。
ステップS121の後、通信IF制御部40−1はプロトコルスタック部70に以下の経路を設定してよい。
‐送信先 192.168.1.0/24、転送先 通信IF部30−1
‐送信先 0.0.0.0/0、転送先 通信IF部30−1、192.168.1.254
なお、ここで設定されるデフォルト経路は、プロトコルスタック部70に予め設定してあるデフォルト経路(転送先 内部通信IF部50)より優先度を低く設定されてもよい。
また、プロトコルスタック部70は、通信IF制御部40−1から通信IF部30−1を用いたデフォルト経路設定を受けた後、デフォルトゲートウェイ(ルータ3−1−3)のIPアドレス(192.168.1.254)に対するレイヤ間アドレス解決(ARP)を行ってよい。このとき、プロトコルスタック部70は、192.168.1.254(ルータ3−1−3)をターゲットとしてARP要求パケットを通信IF部30−1から送信する。ルータ3−1−3はARP応答パケットを送信し、当該ARP応答パケットは通信IF部30−1で受信される。以降、当該ARP応答パケットはステップS105〜ステップS111と同様の手順によって処理される。なお、この時パケットに適合し使用される制御ポリシは図7の制御ポリシ3となり、図11Aの項番2のフローエントリが生成される。DHCP Offerパケット、DHCP Ackパケットと同様に、当該ARP応答パケットは透過アクションによりプロトコルスタック部70で受信され、レイヤ間アドレス解決処理が完了する。
次に、図9を用いて、図8AのステップS108における通信制御部10の制御処理部101の動作を説明する。
図9に示すように、まず、制御処理部101は、制御ポリシ記憶部102に記憶されている制御ポリシのうち最高優先度のものを選択する(ステップS131)。図7の例では、制御ポリシ1が選択される。
続いて、制御処理部101は、選択した制御ポリシとパケット通知で通知されたパケットが属する通信(処理対象通信)との照合を行う(ステップS132)。当該照合は、選択した制御ポリシのトラフィック条件を、処理対象通信が満たすか否かを判定することで行われる。図7に示すように、各トラフィック条件に応じて、入力インタフェースや、ポート番号、IPアドレス、フレームタイプ、プロトコルタイプ等を判定する。
ステップS132において、選択した制御ポリシに処理対象通信が適合しない(条件を満たさない)と判定された場合、制御処理部101は、制御ポリシ記憶部102に記憶されている制御ポリシに、本処理において処理対象通信との照合を確認していないものがあるかどうか確認する(ステップS133)。この時、未確認の制御ポリシが存在しない場合、制御処理部101は、処理対象通信に適用すべき制御ポリシは存在しない、と判定し、その処理を終了する。
また、ステップS133において、未確認の制御ポリシが存在する場合、制御処理部101は、未確認の制御ポリシの内、優先度が最も高いものを選択する(ステップS134)。その後、ステップS132以降の処理を繰り返す。
また、ステップS132において、選択した制御ポリシに処理対象通信が適合する(条件を満たす)と判定された場合、制御処理部101は、選択した制御ポリシで指定された処理を実行するためのフローエントリを作成する(ステップS135)。
制御処理部101は、指定された処理が“透過させる”であった場合、通信端末1が受信するパケットについて、“透過アクションを実行”というアクションを持つフローエントリを作成する。例えば、図8AのステップS108では、図7の制御ポリシ2が選択されたとき、制御ポリシ2のトラフィック条件である入力インタフェース、送信元ポート番号及び送信先ポート番号が、受信パケット(DHCP Offerパケット)と一致し、制御ポリシ2の処理は“透過させる”である。したがって、該当するDHCPサーバから受信するDHCPパケットのフローに対し、透過アクションを実行するフローエントリを作成する。具体的には、図11Aの項番1のような、マッチ条件に、当該フローを特定するように、入力ポート(通信インタフェース)、プロトコルタイプ(UDP)、送信先及び送信元IPアドレス、送信先及び送信元ポート番号を指定し、アクションに、“透過アクションを実行”を指定したフローエントリを作成する。また、受信パケットがARPパケットの場合、制御ポリシ3のトラフィック条件である入力インタフェース及びフレームタイプが一致し、該当する処理は“透過させる”であるため、受信するARPパケットフローに対し、透過アクションを実行するフローエントリを作成する。具体的には、図11Aの項番2のような、マッチ条件に、当該フローを特定するように、入力ポート、フレームタイプ(ARP)を指定し、アクションに、“透過アクションを実行”を指定したフローエントリを作成する。
制御処理部101は、指定された処理が“指定されたIFを使用して通信”であった場合、例えば、通信端末1が送信するパケットについて、“送信元IPアドレスを指定されたIFのIPアドレスに変更した後、指定されたIFから出力する”というアクションを持つフローエントリを作成し、通信端末1が受信するパケットについて、“送信先IPアドレスを通信端末1が送信するパケットの当初の送信元IPアドレスに変更した後、内部通信IF部50から出力する”というアクションを持つフローエントリを作成する。また、制御処理部101は、前記通信端末1が送信するパケットに対するフローエントリのアクションに、“送信元MACアドレスを指定されたIFのMACアドレスに変更”および“送信先MACアドレスを指定されたIFが接続するLAN上のデフォルトゲートウェイのMACアドレスに変更”を、“指定されたIFから出力する”の前に含めてもよい。また、制御処理部101は、前記通信端末1が受信するパケットに対するフローエントリのアクションに、“送信先MACアドレスを内部通信IF部50のMACアドレスに変更”を、“内部通信IF部50から出力する”の前に含めてもよい。制御処理部101は、これらのアクションの生成に係る情報を、プロトコルスタック部70、通信IF部30−1〜30−2、内部通信IF部50、通信IF制御部40−1〜40−n、および通信端末1のOS(Operating System、図示されない)から取得してもよい。
制御処理部101は、通信に使用するIFが複数指定されていた場合、優先度の高いものから順に指定されたIFが利用可能かを調べ、最初に利用可能であったIFに関し、前述のようなフローエントリを作成してよい。制御処理部101は、IFか利用可能か否かを、例えば、当該IFが存在するか否か、リンクアップしているか否か、IPアドレスが構成されているか否か、等によって判断してよい。
制御処理部101は、指定された処理が“破棄する”であった場合、例えば、アクションが空のフローエントリを作成する。
<通信利用部60−1がHTTP通信を行った場合の動作>
通信利用部60−1が、サーバ2とHTTP(Hypertext Transfer Protocol)通信を行った場合の動作について説明する。本通信は、図7に示す制御ポリシ11によって処理されることが期待される。
なお、以下の説明は、次の条件が成り立っていることを前提とする。
− フローテーブル記憶部203にはフローエントリが記憶されていない。
図10A及び図10Bは、本実施形態における通信システムの動作の例を示すシーケンス図である。なお、図10A及び図10Bにおいて、通信ネットワーク3−3の図示は省略する。
図10A及び図10Bに示すように、まず、通信利用部60−1は、HTTPに係る通信のためのソケット(HTTP用ソケット)の作成要求をプロトコルスタック部70に対し行い、プロトコルスタック部70はその要求に応じる(ステップS140)。以後、通信利用部60−1は作成されたHTTP用ソケットを通じてパケットの送受信を行う。
続いて、通信利用部60−1は、HTTPデータ取得前にHTTP用のTCP接続を行うため、サーバ2のIPアドレスである10.0.0.2のTCP80番ポートに対しTCP接続要求(CONNECT要求)を発行する(ステップS141)。
続いて、プロトコルスタック部70は、TCP接続要求を受けTCP接続確立用のパケット(TCP SYNパケット(TCP接続要求パケット))を作成し、送信する(ステップS142)。この時、プロトコルスタック部70は、経路表を参照し、デフォルト経路を使用することを決定し、当該パケットの転送先として内部通信IF部50を選択する。当該パケットの送信元IPアドレスは192.168.254.1(内部通信IF部50に設定されたIPアドレス)に、送信先IPアドレスは10.0.0.2に、送信先ポート番号は80に設定される。また、当該パケットの送信元ポート番号は10000であるとする。
続いて、内部通信IF部50は、当該パケット(TCP接続要求パケット)を受信し、通信処理部20に通知する(ステップS143)。
続いて、通信処理部20のパケット処理部202は、当該パケットを受信し、フローテーブル記憶部203を参照し、当該パケットに対応するフローエントリの有無を確認する(ステップS144)。ステップS144の時点において、フローテーブル記憶部203は空であるため、受信したパケット(TCP接続要求パケット)に対応するフローエントリは見つからない。
続いて、通信処理部20のパケット処理部202は、受信したパケットと一致するフローエントリが無いため、当該パケットを制御チャネル処理部201に通知し、制御チャネル処理部201は対応するパケット通知を通信制御部10に送信する(ステップS145)。
続いて、通信制御部10の制御処理部101はパケット通知を受信し、通知されたパケット(TCP接続要求パケット)に対する処理を決定する(ステップS146)。その動作は図9に示したフローチャートに基づき行われる。本例の場合、TCP接続要求パケットは図7の制御ポリシ11に適合し、図9のステップS135により図11Aの項番3および4に示すフローエントリが生成される。すなわち、制御処理部101は、制御ポリシ11の処理である無線LANを使用して通信を行うため、内部通信IF部50から受信したパケットを通信IF部30−1(無線LAN)を介してサーバ2へ転送するフローエントリ(図11Aの項番3)と、通信IF部30−1(無線LAN)を介してサーバ2から受信したパケットを内部通信IF部50へ転送するフローエントリ(図11Aの項番4)とを作成する。
続いて、通信制御部10の制御処理部101は、ステップS146において生成されたフローエントリを通信処理部20に設定すると同時に、対応するTCP接続要求パケットに対し当該フローエントリに基づく処理を適用するよう指示する(ステップS147)。
続いて、通信処理部20の制御チャネル処理部201は、通知(設定)されたフローエントリ(図11Aの項番3および4)をフローテーブル記憶部203に記憶させる(ステップS148)。
続いて、通信処理部20のパケット処理部202は、ステップS148で設定されたフローエントリに基づきパケット(TCP接続要求パケット)を処理する(ステップS149)。当該パケットが図11Aの項番3のフローエントリにマッチするため、当該フローエントリのアクションを実行する。具体的には、パケット処理部202は、パケットの送信先MACアドレスを02:00:03:01:03:01に変更し、送信元MACアドレスを02:00:00:00:00:01に変更し、送信元IPアドレスを192.168.1.1に変更した後、通信IF部30−1に出力する。
続いて、通信IF部30−1は、送信要求されたパケット(TCP接続要求パケット)を送信する(ステップS150)。以降、当該パケットは、通信ネットワーク3−1、通信ネットワーク3−3の順に転送され、サーバ2で受信される。
続いて、サーバ2は、受信したTCP接続要求パケットに対するTCP接続応答パケットを送信する(ステップS151)。この時、当該TCP接続応答パケットの送信元IPアドレスは10.0.0.2、送信元ポート番号は80、送信先IPアドレスは192.168.1.1、送信先ポート番号は10000となる。当該パケットは、通信ネットワーク3−3、通信ネットワーク3−1の順で転送され、通信IF部30−1で受信される。
続いて、通信IF部30−1は、受信したパケット(TCP接続応答パケット)を通信処理部20に送信する(ステップS152)。
続いて、通信処理部20のパケット処理部202は、当該TCP接続応答パケットを受信し、フローテーブル記憶部203を参照し、当該パケットに対応するフローエントリの有無を確認する(ステップS153)。受信したTCP接続応答パケットとフローエントリの条件を比較し、ここでは、ステップS148において記憶されたフローエントリが発見される(図11Aの項番4)。
続いて、通信処理部20のパケット処理部202は、ステップS153で発見したフローエントリに基づきパケット(TCP接続応答パケット)を処理する(ステップS154)。当該パケットが図11Aの項番4のフローエントリにマッチするため、当該フローエントリのアクションを実行する。具体的には、パケット処理部202は、パケットの送信先MACアドレスを02:00:00:00:00:50に変更し、送信先IPアドレスを192.168.254.1に変更した後、内部通信IF部50に出力する。
続いて、内部通信IF部50は、当該パケット(TCP接続応答パケット)を受信し、プロトコルスタック部70に通知する(ステップS155)。続いて、プロトコルスタック部70は、受信したパケットの受信処理を行い、その結果HTTP用ソケットを通じ通信利用部60−1にTCP接続の接続完了を通知する(ステップS156)。
続いて、通信利用部60−1は、接続完了したTCP接続(コネクション)を介してHTTPデータを取得するため、HTTP用ソケットを用いてHTTPリクエストデータを送信する(ステップS157)。
続いて、プロトコルスタック部70は、データ送信要求(HTTPリクエスト)を受け、HTTPリクエストを含むTCPパケットを作成し送信する(ステップS158)。プロトコルスタック部70は、ステップS142と同様に、経路表を参照し、TCPパケットを内部通信IF部50へ送信する。
続いて、内部通信IF部50は、当該TCPパケット(HTTPリクエスト)を受信し、通信処理部20に通知する(ステップS159)。
続いて、通信処理部20のパケット処理部202は、当該TCPパケットを受信し、フローテーブル記憶部203を参照し、当該パケットに対応するフローエントリの有無を確認する(ステップS160)。受信したTCPパケット(HTTPリクエスト)とフローエントリの条件を比較し、ここでは、ステップS148で記憶された、図11Aの項番3のフローエントリが発見される。
続いて、通信処理部20のパケット処理部202は、ステップS160で発見したフローエントリに基づきTCPパケット(HTTPリクエスト)を処理する(ステップS161)。当該パケットが図11Aの項番3のフローエントリにマッチするため、当該フローエントリのアクションを実行する。具体的には、パケット処理部202は、パケットの送信先MACアドレスを02:00:03:01:03:01に変更し、送信元MACアドレスを02:00:00:00:00:01に変更し、送信元IPアドレスを192.168.1.1に変更した後、通信IF部30−1に出力する。
続いて、通信IF部30−1は、送信要求されたTCPパケット(HTTPリクエスト)を送信する(ステップS162)。以降、当該パケットは、通信ネットワーク3−1、通信ネットワーク3−3の順に転送され、サーバ2で受信される。
以降、サーバ2は受信したパケットに対する応答パケット(HTTPレスポンス)を送信するが、その処理は、ステップS151〜ステップS156で説明した、TCP接続応答パケットの処理と同様であるため、その説明を省略する。
なお、ルータ3−1−3が通信IF部30−1のIPアドレス192.168.1.1に対しレイヤ間アドレス解決(ARP)を行った場合、ルータ3−1−3が送信するARP要求パケットは図7の制御ポリシ3に適合する。そのため、当該パケットに対し透過アクション(図11Aの項番2)が実行され、当該パケットはプロトコルスタック部70に通知される。プロトコルスタック部70は当該ARP要求パケットに対し、通信IF部30−1のMACアドレスを含むARP応答パケットを作成し、通信IF部30−1から送信する。
また、ここでは通信利用部60−1がサーバ2に対しHTTP通信を行った場合に、その通信が図7の制御ポリシ11に従い通信IF部30−1を使用して行われる例を示した。通信利用部60−1が10.0.1.2のIPアドレスを持つサーバ2’(図示されない)に対しHTTP通信を行った場合も、ステップS140〜ステップS162と同様に処理される。ただし、この場合、適合する制御ポリシは図7の制御ポリシ12となり、その結果当該通信は通信IF部30−2を使用して行われる。その時生成されるフローエントリの例を、図11Bの項番5および6に示す(通信利用部60−1は自側ポート番号として10001を使用したとする)。すなわち、この場合、制御ポリシ12の処理である3Gを使用して通信を行うため、内部通信IF部50から受信したパケットを通信IF部30−2(3G)を介してサーバ2’へ転送するフローエントリ(図11Bの項番5)と、通信IF部30−2(3G)を介してサーバ2’から受信したパケットを内部通信IF部50へ転送するフローエントリ(図11Bの項番6)とが作成される。
以上説明したように、第1の実施形態によれば、通信制御部10は、制御ポリシに従って通信処理部20が受信したパケットおよび当該パケットが属するフローの処理内容を決定し、通信処理部20に対応するフローエントリ(処理規則)を設定する。通信処理部20は、パケットと、受信通信インタフェース識別子として自身が当該パケットを受信した通信インタフェースの識別子とを下位レイヤ受信通知インタフェース71を通じプロトコルスタック部70に通知する、透過アクション機能を備える。さらに、通信制御部10は、通信処理部20が備える透過アクション機能を利用し、対象となる通信(フロー、例えば通信IF制御部40−1〜40−nによる制御用通信)に関し、通信処理部20が受信したパケットが、通信処理部20が当該パケットを受信した通信インタフェースの識別子とともに下位レイヤ受信通知インタフェース71を通じてプロトコルスタック部70に通知されるよう制御(透過制御)する。
よって、本実施形態によれば、通信インタフェースに特化した処理を行う制御モジュールもしくは通信モジュール(例えば通信IF制御部40−1〜40−n、プロトコルスタック部70)を含む内部モジュールに変更を加えることなく、通信制御部10および通信処理部20によるフローベース通信処理機能を通信端末に具備させることができる。
すなわち、本実施形態によれば、通信端末においてフローベースの通信処理を行うことができ、通信網利用を効率化できる。さらに、フローベース通信処理機能の追加に際し、通信端末に含まれる通信インタフェースに特化した処理を行う制御モジュールもしくは通信モジュールへの変更を不要とし、もしくは、変更の程度を軽減することができる。これにより、フローベースの通信処理を備える通信端末の普及を容易にしたり、その導入コストを軽減したりすることができる。さらに、その結果、通信網内でのフローベースの通信処理を備える通信端末の普及率を向上でき、通信網利用をさらに効率化できる。
なお、本実施形態に係る通信システムの説明では、通信制御部10の制御処理部101が制御ポリシ記憶部102に記憶された制御ポリシに基づいて透過アクションを含むフローエントリを通信処理部20に設定する例を示したが、本発明はこれに限定されるものではない。他の例として、通信制御部10の制御処理部101は一定のタイミング(例えば通信端末1起動時)において、予め透過アクションを含むフローエントリを通信処理部20に設定することとしてもよい。さらに他の例として、通信処理部20は一定のタイミング(例えば通信端末1起動時)において、予め透過アクションを含むフローエントリをフローテーブル記憶部203に記憶させることとしてもよい。そのような事前処理の対象となるフローの情報は、制御処理部101もしくは通信処理部20に予め与えられてよい。
また、本実施形態に係る通信システムの説明では、通信IF制御部40−1〜40−nによる通信IF部30−1〜30−2の制御(アドレス構成)に係る通信に対し透過制御を適用する例を示したが、本発明はこれに限定されるものではない。他の例として、通信利用部60−1〜60−mによる通信であっても、当該通信が通信制御部10および通信処理部20による通信制御の対象とすべきでない場合、もしく通信制御の対象とするために通信利用部60−1〜60−mに変更が必要となる場合、当該通信に透過制御を適用してもよい。そのような通信の例として、VPN通信やトンネリング通信、ブロードキャスト通信、マルチキャスト通信、が挙げられる。
また、本実施形態に係る通信システムの説明では、通信制御部10は制御ポリシのトラフィック条件としてポート番号や入力インタフェース、プロトコルタイプ等を用いる例を示したが、本発明はこれらに限定されるものではない。他の例として、通信制御部10は通信を行っているアプリケーションやモジュール(これらには通信IF制御部40−1〜40−nおよび通信利用部60−1〜60−mが含まれる)の識別子や名前を制御ポリシのトラフィック条件に含んでもよい。これは、例えば、制御処理部101が通信処理部20からパケット通知を受けた際、当該パケット通知に含まれる対象パケットに係る情報(アドレス、ポート番号等)と、プロトコルスタック部70もしくは通信端末1のOS(図示されない)が保持している情報とから、当該パケットの通信を行っているアプリケーションやモジュールを特定・識別し、トラフィック条件と比較することで実現できる。
(実施形態2)
次に、図面を参照して第2の実施形態について説明する。第1の実施形態に係る通信システムでは、予め制御ポリシ記憶部102に記憶された制御ポリシを用いて通信制御部10が透過制御を行う例を示したが、本発明はこれに限定されるものではない。
本実施形態に係る通信システムでは、通信制御部10は透過制御対象監視部103を備え、動的に透過制御の対象の通信を検知し、透過制御する。これにより、制御ポリシを事前に用意する必要性が軽減され、より柔軟な通信制御を実現することができる。
以下、本実施形態に係る通信システムの構成および動作について、第1の実施形態に係る通信システムの構成および動作と異なる部分を説明する。
図12は、本実施形態による通信制御部10の構成の一例を示す構成図である。本実施形態による通信制御部10は、図3を用いて説明した通信制御部10の構成要素に加え、透過制御対象監視部103を備える。なお、透過制御対象監視部103は、通信制御部10内部に設けてもよいし、通信端末1内部のその他の部分に設けてもよい。
透過制御対象監視部103は、通信端末1内の透過制御対象となる通信の発生もしくは当該通信の予兆となる事象を監視し、当該通信を透過制御するための制御ポリシを動的に生成する。透過制御対象監視部103が生成する当該制御ポリシの処理には“透過させる”が設定される。なお、透過制御対象監視部103は、生成した制御ポリシを制御ポリシ記憶部102に記憶させてもよいし、制御処理部101に制御ポリシの設定を指示してもよい。
以下に、透過制御対象監視部103による監視方法の例を示す。ただし、本発明はこれらに限定されるものではない。
<制御モジュールおよび通信モジュールの死活監視>
透過制御対象監視部103は、通信端末1内での制御モジュールおよび通信モジュール(例えば通信IF制御部40−1〜40−n、通信利用部60−1〜60−m、プロトコルスタック部70)の動作状態を監視し、動作が開始された場合に対応する透過制御のための制御ポリシを設定してよい。透過制御対象監視部103は、例えば、動作状態の監視に通信端末1のOS(図示されない)が管理しているプロセス情報を利用してよい。動作が開始された場合に透過制御を開始する対象の制御モジュールおよび通信モジュールの情報(例えば、識別子、名称、種別、保持する権限)は、透過制御対象監視部103に予め与えられてよい。また、各制御モジュールおよび通信モジュールのための制御ポリシのトラフィック条件は、透過制御対象監視部103に予め与えられてよい。透過制御対象監視部103は、動的に設定した透過制御のための制御ポリシの対象となる制御モジュールおよび通信モジュールが動作を終了した場合、当該制御ポリシを削除してもよい。透過制御対象監視部103は、制御モジュールおよび通信モジュールの動作開始、終了のみでなく、その他の状態変化(例えばインストール、アンインストール、サスペンド、サスペンドからの復帰)を契機として制御ポリシの設定・削除を行ってよい。
<ソケットの監視>
透過制御対象監視部103は、通信IF制御部40−1〜40−nおよび通信利用部60−1〜60−mからの要求に基づきプロトコルスタック部70により生成されるソケットを監視し、その生成・消滅を契機として対応する透過制御のための制御ポリシを設定・削除してよい。透過制御対象監視部103は、当該監視のため、定期的にプロトコルスタック部70からソケットの情報を取得してもよい。また、プロトコルスタック部70にソケットの情報が更新された際に通知する機構を設け、透過制御対象監視部103は当該機構を利用してソケットの情報を取得してもよい。生成された場合に透過制御を開始する対象のソケットの条件(例えば、アドレス、ポート番号、利用する通信インタフェース、通信種別、ソケット種別)は、透過制御対象監視部103に予め与えられてよい。透過制御対象監視部103は、前記ソケットについてバインド機能が利用されている場合にのみ、制御ポリシの生成・削除を行ってもよい。透過制御対象監視部103は、生成する制御ポリシのトラフィック条件を、当該制御ポリシ作成の契機となったソケットの情報(例えば、アドレス、ポート番号、利用する通信インタフェース)から構成してもよい。
<経路表の監視>
透過制御対象監視部103は、プロトコルスタック部70が保持する経路表を監視し、経路の生成・消滅を契機として対応する透過制御のための制御ポリシを設定・削除してよい。透過制御対象監視部103は、生成する制御ポリシのトラフィック条件を、当該制御ポリシ作成の契機となった経路の情報(例えば、送信先、転送先)から構成してもよい。例えば、プロトコルスタック部70に、送信先が192.168.1.0/24、転送先が通信IF部30−1、である経路表が設定された場合、透過制御対象監視部103は、トラフィック条件が、“入力インタフェースが通信IF部30−1かつ送信元IPアドレスが192.168.1.0/24”であり、処理が“透過させる”である制御ポリシを生成してよい。
本実施形態におけるプロトコルスタック部70は、自身が保持および管理する経路表およびソケットのリストに変化は発生した場合、当該変化を他の構成要素に通知する機構を備える。
次に、本実施形態による通信システムの動作について、図面を参照しつつ説明する。ここでは、本実施形態の動作の一例として、透過制御対象監視部103が、プロトコルスタック部70の経路表の変化に基づき、透過制御のための制御ポリシを設定する例を説明する。
図13A及び図13Bは、本実施形態における通信システムの動作の例を示すシーケンス図である。
図13A及び図13Bに示すように、透過制御対象監視部103は、プロトコルスタック部70に対し経路表が変化した場合その通知を行うよう要求(経路変更通知要求)する(ステップS201)。なお、経路変更通知要求の出力は省略してもよい。例えば、プロトコルスタック部70が常に経路変更通知を出力するようにしてもよいし、透過制御対象監視部103が定期的に経路表を参照し経路の変更を検出してもよい。
続いて、通信IF制御部40−1は、IPアドレス情報を取得する(ステップS100〜S121)。この時の動作は、図8A及び図8Bを用いて説明した、第1の実施形態における動作と同一である。なお、ステップS121において、通信IF制御部40−1はプロトコルスタック部70に以下の経路を設定するものとする。
‐送信先 192.168.1.0/24、転送先 通信IF部30−1
続いて、プロトコルスタック部70は、ステップS121による経路表変更を透過制御対象監視部103に通知(経路変更通知)する(ステップS202)。
続いて、透過制御対象監視部103は、ステップS121において追加された経路について、以下の透過制御のための制御ポリシを生成し、制御ポリシ記憶部102に記憶させる(ステップS203)。透過制御対象監視部103は、上記の追加された経路をトラフィック条件とし、処理を“透過させる”とする制御ポリシを生成する。また、ここでは、一例として制御ポリシの優先度を20とする。生成する制御ポリシの優先度は、予め固定の値でもよいし、検出した経路表(モジュールの死活状態、ソケットの状態)の変化に応じた値でもよい。以降、下記制御ポリシを制御ポリシ20として参照する。
−優先度:20
−トラフィック条件
・入力インタフェース:通信IF部30−1(無線LAN IF)
・送信元IPアドレス:102.168.1.0/24
−処理:透過させる
続いて、通信IF制御部40−1は、例えばDHCPサーバ3−1−4の死活監視を目的として、DHCPサーバ3−1−4に対しICMP Echo Requestを送信し、DHCPサーバ3−1−4はそれに応答する(ステップS204)。
この時の本実施形態における通信システムの動作(ステップS101a〜ステップS112a)は、図8A及び図8Bを用いて説明した、第1の実施形態のおける記号aを除いたステップの動作と、以下の違いを除いて、同様である。
・通信IF制御部40−1は、DHCP用ソケットではなく、ICMPに係る通信のためのソケット(ICMP用ソケット)を作成する。
・通信IF制御部40−1は、DHCP Discoverパケットではなく、ICMP Echo Requestパケットを送信する。
・DHCPサーバ3−1−4は、ICMP Echo Requestパケットを受信した後、DHCP Offerパケットではなく、ICMP Echo Replyパケットを送信する。
・ステップS108aにおいてパケットに適合する制御ポリシは上記の制御ポリシ20である。
・ステップS108aにおいて生成されるフローエントリは図11Bの項番7に示すものとなる(制御ポリシ20にしたがい、DHCPサーバから受信するICMPパケットのフローに対し、透過アクションを実行するフローエントリを作成する)。
以上説明したように、第2の実施形態によれば、通信制御部10は透過制御対象監視部103を備え、透過制御対象監視部103は動的に透過制御の対象の通信を検知し、透過制御のための制御ポリシを生成する。よって、本実施形態によれば、第1の実施形態による効果に加え、制御ポリシの管理を簡易化できる。
なお、本実施形態に係る通信システムの説明では、透過制御対象監視部103は動的に透過制御の対象の通信を検知し、透過制御のための制御ポリシを生成する例を示したが、本発明はこれに限定されるものではない。他の例として、透過制御対象監視部103は、動的に透過制御の対象の通信を検知した後、透過制御のためのフローエントリを生成し、制御処理部101を介して生成したフローエントリを通信処理部20に設定してもよい。例えば、透過制御対象監視部103は、ステップS203において、制御ポリシを生成する代わりに、追加された経路のフローに対し透過アクションを実行するように、以下のフローエントリを生成し、通信処理部20に設定してもよい。
−マッチ条件
・入力ポート:通信IF部30−1
・プロトコルタイプ:ICMP
・送信先IPアドレス:192.168.1.1
・送信元IPアドレス:192.168.1.254/24
−アクション
・透過アクションを実行
その他、経路表の経路の一部が変更された場合、経路の変更に応じて、該当する制御ポリシやフローエントリを変更してもよいし、経路表の経路の一部が削除された場合、経路の削除に応じて、該当する制御ポリシやフローエントリを削除してもよい。
(実施形態3)
次に、図面を参照して第3の実施形態について説明する。第1の実施形態に係る通信システムでは、通信処理部20が透過アクション機能を備え、通信制御部10は、通信処理部20が備える透過アクション機能を利用し透過制御する例を示したが、本発明はこれに限定されるものではない。
本実施形態に係る通信システムでは、通信端末1は透過通信IF部80を備え、通信制御部10は透過制御の対象となるパケットを透過通信IF部80に出力するフローエントリを通信処理部20に設定することで、透過制御を行う。これにより、通信処理部20に透過アクション機能を備えることなく、第1の実施形態と同様の効果を得ることができる。
以下、本実施形態に係る通信システムの構成および動作について、第1の実施形態に係る通信システムの構成および動作と異なる部分を説明する。
図15は、本実施形態による通信端末1の構成の一例を示す構成図である。本実施形態による通信端末1は、図2を用いて説明した通信端末1の構成要素に加え、透過通信IF部80を備える。
透過通信IF部80は、通信端末1外の装置との物理的な接続を伴わない、仮想的な通信インタフェースであり、透過通信IF部80に送信されたパケットを下位レイヤ受信通知インタフェース71を通じプロトコルスタック部70に受信パケットとして通知する。その通知の際、透過通信IF部80は、受信通信インタフェース識別子として、事前に設定された、通信IF部30−1および30−2のいずれかの識別子(透過元通信インタフェース識別子)を、パケットのデータとともにプロトコルスタック部70に通知する。なお、以降の本実施形態の説明では、透過通信IF部80には通信IF部30−1の識別子が透過元通信インタフェース識別子として設定されているものとする。
本実施形態における通信処理部20のパケット処理部202は、透過アクションの機能を備えなくてもよい。
本実施形態における通信制御部10の制御処理部101は、透過制御の手段として、通信処理部20の透過アクション機能の代わりに透過通信IF部80を使用する。制御処理部101は、透過制御の対象となるフローに関し、透過元通信インタフェース識別子が当該フローを受信した通信インタフェースの識別子である透過通信IF部80に出力することをアクションに含むフローエントリを作成する。制御処理部101は、透過通信IF部80のポート識別子および透過通信IF部80に設定された透過元通信インタフェース識別子の組を記憶する。制御処理部101は、例えば、これらの情報を通信処理部20および透過通信IF部80から取得してよい。
次に、本実施形態による通信システムの動作について、図面を参照しつつ説明する。ここでは、本実施形態の動作の一例として、通信IF制御部40−1がIPアドレス情報を取得する場合の動作を説明する。
図16A及び図16Bは、本実施形態における通信システムの動作の例を示すシーケンス図である。第1の実施形態と同じ番号を付与したステップの動作は、第1の実施形態の場合と同様であるためその説明を省略する。
ステップS100〜S107に続いて、通信制御部10の制御処理部101はパケット通知を受信し、通知されたパケット(DHCP Offerパケット)に対する処理を決定する(ステップS108b)。その動作は、図9を用いて説明した第1の実施形態における動作と、以下の違いを除いて、同様である。
・制御処理部101は、指定された処理が“透過させる”であった場合、通信端末1が受信するパケットについて、処理対象通信を受信した通信IFの識別子が透過元通信インタフェース識別子である透過通信IF部80を特定し、“当該透過通信IF部から出力する”というアクションを持つフローエントリを作成する。
例えば、図16AのステップS108bでは、図7の制御ポリシ2が選択されたとき、制御ポリシ2のトラフィック条件である入力インタフェース、送信元ポート番号及び送信先ポート番号が、受信パケット(DHCP Offerパケット)と一致し、制御ポリシ2の処理は“透過させる”である。したがって、該当するDHCPサーバから受信するDHCPパケットのフローに対し、透過通信IF部80に出力するフローエントリを作成する。具体的には、図17の項番1のような、マッチ条件に、当該フローを特定するように、入力ポート(通信インタフェース)、プロトコルタイプ(UDP)、送信先及び送信元IPアドレス、送信先及び送信元ポート番号を指定し、アクションに、“透過通信IF部80に出力”を指定したフローエントリを作成する。
続いて、通信制御部10の制御処理部101は、ステップS108bにおいて生成されたフローエントリを通信処理部20に設定すると同時に、対応するパケット(DHCP Offerパケット)に対し当該フローエントリに基づく処理を適用するよう指示する(ステップS109b)。
続いて、通信処理部20の制御チャネル処理部201は、通知(設定)されたフローエントリ(図17の項番1)をフローテーブル記憶部203に記憶させる(ステップS110b)。
続いて、通信処理部20のパケット処理部202は、ステップS109bで設定されたフローエントリに基づきパケット(DHCP Offerパケット)を処理する(ステップS111b)。当該パケットが図17の項番1のフローエントリにマッチするため、当該フローエントリのアクションを実行する。具体的には、パケット処理部202は、当該パケットを透過通信IF部80に出力する。
続いて、透過通信IF部80は、ステップS111bで受信したパケットと、受信通信インタフェース識別子として、設定されている透過元通信インタフェース識別子(本例では通信IF部30−1の識別子)とを、下位レイヤ受信通知インタフェース71を通じプロトコルスタック部70に通知する(ステップS301)。
その後、ステップS112〜S117に続いて、通信処理部20のパケット処理部202は、当該パケットを受信し、フローテーブル記憶部203を参照し、当該パケットに対応するフローエントリの有無を確認する(ステップS118b)。受信したパケット(DHCP Ackパケット)とフローエントリの条件を比較し、ここでは、ステップS110bにおいて記憶されたフローエントリが発見される(図17の項番1)。
続いて、通信処理部20のパケット処理部202は、ステップS118bで発見したフローエントリに基づきパケット(DHCP Ackパケット)を処理する(ステップS119b)。当該パケットが図17の項番1のフローエントリにマッチするため、当該フローエントリのアクションを実行する。具体的には、パケット処理部202は、当該パケットを透過通信IF部80に出力する。
続いて、透過通信IF部80は、ステップS119bで受信したパケットと、受信通信インタフェース識別子として、設定されている透過元通信インタフェース識別子(本例では通信IF部30−1の識別子)とを、下位レイヤ受信通知インタフェース71を通じプロトコルスタック部70に通知する(ステップS302)。その後、ステップS120〜S121により、通信IF制御部40−1がIPアドレス情報を取得し設定する。
以上説明したように、第3の実施形態によれば、通信端末1は透過アクション機能に相当する機能を具備する透過通信IF部80を備え、通信制御部10は透過制御の対象となるパケットを透過通信IF部80に出力するフローエントリを通信処理部20に設定することで、透過制御を行う。よって、本実施形態によれば、通信処理部20に透過アクション機能を備えることなく、第1の実施形態と同様の効果を得ることができる。
なお、本実施形態に係る通信システムの説明では、透過通信IF部80が1つである例を示したが、本発明はこれに限定されるものではない。他の例として、透過通信IF部80は物理的に存在する通信IFの数だけ存在してもよい。その場合、各透過通信IF部にはそれぞれ異なる通信IFの識別子が透過元通信インタフェース識別子として設定されてよい。制御処理部101は、各透過通信IF部80について、ポート識別子および当該透過通信IF部80に設定された透過元通信インタフェース識別子の組を記憶し、透過制御に使用してよい。
また、本実施形態に係る通信システムの説明では、透過通信IF部80が予め存在し、透過通信IF部80に対し透過元通信インタフェース識別子が設定されている例を示したが、本発明はこれに限定されるものではない。他の例として、透過通信IF部80は動的に作成されてよく、透過通信IF部80に対し透過元通信インタフェース識別子が動的に設定されてもよい。例えば、制御処理部101は、ステップS135において、指定された処理が“透過させる”であり、かつその透過制御に必要な透過通信IF部80が存在しない場合、必要な透過通信IF部80を作成してもよい。このとき、制御処理部101は、作成した透過通信IF部80の透過元通信インタフェース識別子として、処理対象通信を受信した通信インタフェース(通信IF部30−1〜30−2のいずれか)の識別子を設定してよい。
なお、本発明は上記実施形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
上述の実施形態における各構成は、ハードウェア又はソフトウェア、もしくはその両方によって構成され、1つのハードウェア又はソフトウェアから構成してもよいし、複数のハードウェア又はソフトウェアから構成してもよい。通信端末やサーバの各機能(各処理)を、CPUやメモリ等を有するコンピュータにより実現してもよい。例えば、記憶装置に実施形態における通信方法(通信処理)を行うための通信プログラムを格納し、各機能を、記憶装置に格納された通信プログラムをCPUで実行することにより実現してもよい。
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記1)
パケットが属するフローと前記フローに属するパケットに対する処理であるアクションとを規定する処理規則を保持し、前記処理規則に基づいて受信したパケットを処理する通信処理部と、
他の装置との通信を行う通信IF部と、
階層化された通信プロトコルの一部もしくは全部を処理するプロトコルスタック部と、を備える通信端末と、
前記通信処理部が保持する前記処理規則を制御する通信制御部と、
を含み、
前記プロトコルスタック部は、受信パケットを通信IF部の識別子とともに通知するインタフェース(下位レイヤ受信通知インタフェース)を下位レイヤに対し提供し、
前記プロトコルスタック部は、前記下位レイヤ受信通知インタフェースで通知された受信パケットは当該受信パケットとともに通知された通信IF部の識別子を持つ通信IF部で受信されたものとみなして受信パケット処理を行い、
前記通信制御部は、前記通信処理部が前記通信IF部から受信したパケットが、当該通信IF部の識別子とともに前記下位レイヤ受信通知インタフェースを通じて前記プロトコルスタック部に通知されるよう制御(透過制御)する、
ことを特徴とする通信システム。
(付記2)
前記通信処理部は、前記アクションの一つとして、前記通信IF部から受信したパケットを当該通信IF部の識別子とともに前記下位レイヤ受信通知インタフェースを通じて前記プロトコルスタック部に通知する透過アクションを備え、
前記通信制御部は、前記透過アクションを利用して前記透過制御を行う、
ことを特徴とする付記1に記載の通信システム。
(付記3)
前記通信制御部は、前記通信IF部に特化した通信を検出し、当該通信に対し前記透過制御を行う、
ことを特徴とする付記1から付記2のいずれかに記載の通信システム。
(付記4)
前記通信端末は前記通信IF部における通信に使用するアドレスの構成を行うアドレス構成制御部をさらに備え、
前記通信制御部は、前記アドレス構成制御部の通信に前記透過制御を行い、
前記通信制御部は、前記通信IF部で通信されるパケットに対する処理規則のアクションにアドレス構成制御部が構成したアドレスを用いたアドレス変換処理を含める、
ことを特徴とする付記1から付記3のいずれかに記載の通信システム。