(57)【要約】【課題】通信端末が、その通信端末が備える物理ＩＦが接続される通信網以外の通信網も利用する。【解決手段】通信システムは、通信端末（１０）とスイッチ（２０）とを備える。通信端末（１０）は、コントローラ部（１１）と、スイッチ（２０）に接続される第１物理ＩＦ（１２−１）と、通信アプリケーション（＃１〜＃Ｎ）と、を備える。スイッチ（２０）は、第１スイッチ部（２１）と、通信端末（１０）に接続される第２物理ＩＦ（２２−１）と、第３物理ＩＦ（２２−２〜２２−３）と、を備える。コントローラ部（１１）は、通信アプリケーション（＃１〜＃Ｎ）で発生したパケットを受信した場合の処理内容を第１スイッチ部（２１）に設定し、第１スイッチ部（２１）は、通信アプリケーション（＃１〜＃Ｎ）で発生したパケットを受信した場合、コントローラ部（１１）により設定された処理内容に従ってパケットを処理する。【選択図】図１
2016178530.tif 000002
【特許請求の範囲】
【請求項１】
通信端末と、
スイッチと、を備え、
前記通信端末は、
コントローラ部と、
前記スイッチに接続される第１物理インタフェースと、
通信アプリケーションと、を備え、
前記スイッチは、
第１スイッチ部と、
前記通信端末に接続される第２物理インタフェースと、
前記第２物理インタフェース以外の第３物理インタフェースと、を備え、
前記コントローラ部は、
前記通信アプリケーションで発生したパケットを前記第１スイッチ部で受信した場合の該パケットの処理内容を決定し、決定した該パケットの処理内容を前記第１スイッチ部に設定し、
前記第１スイッチ部は、
前記通信アプリケーションで発生したパケットを受信した場合、前記コントローラ部により設定された処理内容に従って該パケットを処理する、通信システム。
【請求項２】
前記通信端末は、
前記コントローラ部と前記第１物理インタフェースとの間に配置された第２スイッチ部をさらに備え、
前記コントローラ部は、
前記通信アプリケーションで発生したパケットを前記第２スイッチ部で受信した場合の該パケットの処理内容を決定し、決定した該パケットの処理内容を前記第２スイッチ部に設定し、
前記第２スイッチ部は、
前記通信アプリケーションで発生したパケットを受信した場合、前記コントローラ部により設定された処理内容に従って該パケットを処理する、請求項１に記載の通信システム。
【請求項３】
前記コントローラ部は、
前記第１スイッチ部から、前記第１スイッチ部で受信したパケットの送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号を表すフロー情報を受信した場合、前記通信端末内のソケットの識別番号と、該ソケットを使用するフローを構成するパケットに関する前記フロー情報と、を表すソケット情報を参照し、
前記ソケット情報の前記フロー情報の送信元ＩＰアドレス又は送信元ポート番号を、前記第１物理インタフェースが前記第１スイッチ部に送信するパケットに設定する送信元ＩＰアドレス又は送信元ポート番号に置き換えた上で、前記ソケット情報から、前記第１スイッチ部から受信したフロー情報を検索し、
前記ソケット情報から検索されたフロー情報に対応するフローに使用されているソケットの識別番号を特定し、
前記特定したソケットの識別番号をキーにして、該ソケットを使用しているプロセスのプロセス番号を特定し、
前記通信端末内で現在実行中のプロセス毎に、該プロセスのプロセス番号と、該プロセスを実行する通信アプリケーションのアプリケーション名と、を表すリストを参照して、前記特定したプロセスを実行している通信アプリケーションを特定し、
前記特定した通信アプリケーションに応じて前記パケットの処理内容を決定し、
前記決定した前記パケットの処理内容を前記第１スイッチ部に設定する、請求項２に記載の通信システム。
【請求項４】
前記コントローラ部は、
前記第１スイッチ部から受信したフロー情報の送信元ＩＰアドレスが、前記第１物理インタフェースが前記第１スイッチ部に送信するパケットに設定するＩＰアドレスである場合に、パケットが発生した通信アプリケーションを特定し、特定した通信アプリケーションに応じて該パケットの処理内容を決定し、決定した該パケットの処理内容を前記第１スイッチ部に設定する、請求項３に記載の通信システム。
【請求項５】
前記コントローラ部は、
前記第１スイッチ部から、前記第１スイッチ部で受信したパケットの送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号を表すフロー情報を受信した場合、前記通信端末内のソケットの識別番号と、該ソケットを使用するフローを構成するパケットに関する前記フロー情報と、を表すソケット情報を参照し、
前記ソケット情報から、前記第１スイッチ部から受信したフロー情報を検索し、
前記ソケット情報から検索されたフロー情報に対応するフローに使用されているソケットの識別番号を特定し、
前記特定したソケットの識別番号をキーにして、該ソケットを使用しているプロセスのプロセス番号を特定し、
前記通信端末内で現在実行中のプロセス毎に、該プロセスのプロセス番号と、該プロセスを実行する通信アプリケーションのアプリケーション名と、を表すリストを参照して、前記特定したプロセスを実行している通信アプリケーションを特定し、
前記特定した通信アプリケーションに応じて前記パケットの処理内容を決定し、
前記決定した前記パケットの処理内容を前記第１スイッチ部に設定する、請求項１に記載の通信システム。
【請求項６】
前記コントローラ部は、
前記ソケット情報から、前記第１スイッチ部から受信したフロー情報を検索するに際し、前記第１スイッチ部から受信したフロー情報と送信元ポート番号が合致するフロー情報を検索する、請求項３から５のいずれか１項に記載の通信システム。
【請求項７】
コントローラ部と、
外部のスイッチに接続される第１物理インタフェースと、
通信アプリケーションと、を備え、
前記コントローラ部は、
前記通信アプリケーションで発生したパケットを前記スイッチで受信した場合の該パケットの処理内容を決定し、決定した該パケットの処理内容を前記スイッチに設定する、通信端末。
【請求項８】
コントローラ部と、外部のスイッチに接続される第１物理インタフェースと、通信アプリケーションと、を備える通信端末による通信方法であって、
前記コントローラ部が、前記通信アプリケーションで発生したパケットを前記スイッチで受信した場合の該パケットの処理内容を決定し、
前記コントローラ部が、前記決定した前記パケットの処理内容を前記スイッチに設定する、通信方法。
【請求項９】
コントローラ部と、外部のスイッチに接続される第１物理インタフェースと、通信アプリケーションと、を備える通信端末に、
前記コントローラ部が、前記通信アプリケーションで発生したパケットを前記スイッチで受信した場合の該パケットの処理内容を決定する手順と、
前記コントローラ部が、前記決定した前記パケットの処理内容を前記スイッチに設定する手順と、を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、通信端末、通信方法、プログラムに関し、特に、通信アプリケーションで発生したパケットを処理する通信システム、通信端末、通信方法、プログラムに関する。
【背景技術】
【０００２】
近年、集中制御型のネットワークアーキテクチャが提案されている。集中制御型のネットワークアーキテクチャの例として、オープンフロー（OpenFlow）と呼ばれる技術がある。オープンフローは、オープンフローコントローラ（OpenFlow Controller）と、オープンフロースイッチ（OpenFlow Switch）と、で実現される。
【０００３】
オープンフローコントローラは、オープンフロースイッチで受信するパケットの処理内容（送信、送信せずに破棄等）をオープンフロースイッチに設定する。オープンフロースイッチは、パケットを受信した場合、そのパケットの処理内容がオープンフローコントローラにより設定されていれば、その処理内容に従って、そのパケットを処理する。
【０００４】
ここで、オープンフローの実装態様としては、通信端末にオープンフロースイッチを搭載し、ネットワーク上のオープンフローコントローラが通信端末上のオープンフロースイッチを制御（受信パケットの処理内容を設定）する態様がある。また、最近は、単一の通信端末にオープンフローコントローラ及びオープンフロースイッチの双方を搭載する事で、通信端末に搭載されている複数の無線通信を自律的に制御する方法が提案されている（非特許文献１）。非特許文献１によれば、例えば、通信端末の通信アプリケーションで発生したパケット（フロー）については、同じ通信端末のオープンフローコントローラが処理内容を設定している。これにより、オープンフローコントローラによる制御のスケーラビリティの向上を図ることができる。また、非特許文献１によれば、通信端末の通信アプリケーションでフローを識別することとし、通信アプリケーション毎のフロー制御を行っている。具体的には、通信アプリケーション毎に、その通信アプリケーションで発生したパケットの送信に利用する通信網を設定している。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】飯星貴裕、渡邊義和、森田弦、才田好則、狩野秀一、「OpenFlowによる移動端末通信制御のスケーラビリティ向上方式とその実装」、信学技報、社団法人  電子情報通信学会、Ｖｏｌ．１１２、Ｎｏ．４６３（ＮＳ２０１２  １６５−２８９）、ｐｐ．４７７−４８２、２０１３年２月２８日
【発明の概要】
【発明が解決しようとする課題】
【０００６】
非特許文献１によれば、通信端末の通信アプリケーションで発生したパケット（フロー）については、同じ通信端末のオープンフローコントローラが処理内容を設定することができる。また、このとき、通信アプリケーション毎に、その通信アプリケーションで発生したパケットの送信に利用する通信網を設定することができる。
ただし、通信端末が利用可能な通信網は、その通信端末が備える物理ＩＦ（Interface）が接続される通信網だけとなる。また、通信端末が備える物理ＩＦの数には限りがある。
そのため、通信端末は、その通信端末が備える物理ＩＦが接続される、限られた数の通信網しか利用することができないという問題がある。
【０００７】
そこで本発明の目的の１つは、上述した課題を解決し、通信端末が、その通信端末が備える物理ＩＦが接続される通信網以外の通信網も利用することができる通信システム、通信端末、通信方法、プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
一態様において、通信システムは、通信端末と、スイッチと、を備える。前記通信端末は、コントローラ部と、前記スイッチに接続される第１物理インタフェースと、通信アプリケーションと、を備える。前記スイッチは、第１スイッチ部と、前記通信端末に接続される第２物理インタフェースと、前記第２物理インタフェース以外の第３物理インタフェースと、を備える。前記コントローラ部は、前記通信アプリケーションで発生したパケットを前記第１スイッチ部で受信した場合の該パケットの処理内容を決定し、決定した該パケットの処理内容を前記第１スイッチ部に設定する。前記第１スイッチ部は、前記通信アプリケーションで発生したパケットを受信した場合、前記コントローラ部により設定された処理内容に従って該パケットを処理する。
【０００９】
一態様において、通信端末は、コントローラ部と、外部のスイッチに接続される第１物理インタフェースと、通信アプリケーションと、を備える。前記コントローラ部は、前記通信アプリケーションで発生したパケットを前記スイッチで受信した場合の該パケットの処理内容を決定し、決定した該パケットの処理内容を前記スイッチに設定する。
【００１０】
一態様において、通信方法は、コントローラ部と、外部のスイッチに接続される第１物理インタフェースと、通信アプリケーションと、を備える通信端末による通信方法である。前記通信方法では、前記コントローラ部が、前記通信アプリケーションで発生したパケットを前記スイッチで受信した場合の該パケットの処理内容を決定し、前記コントローラ部が、前記決定した前記パケットの処理内容を前記スイッチに設定する。
【００１１】
一態様において、プログラムは、コントローラ部と、外部のスイッチに接続される第１物理インタフェースと、通信アプリケーションと、を備える通信端末に実行させるためのプログラムである。前記プログラムは、前記通信端末に、前記コントローラ部が、前記通信アプリケーションで発生したパケットを前記スイッチで受信した場合の該パケットの処理内容を決定する手順と、前記コントローラ部が、前記決定した前記パケットの処理内容を前記スイッチに設定する手順と、を実行させる。
【発明の効果】
【００１２】
上述した態様によれば、通信端末は、通信端末が備える第１物理インタフェースが接続される通信網以外にも、スイッチが備える第３物理インタフェースが接続される通信網を利用することができるという効果が得られる。
【図面の簡単な説明】
【００１３】
【図１】実施形態１の通信システムの構成例を示す図である。
【図２】実施形態２の通信システムの構成例を示す図である。
【図３】実施形態２の通信システムの全体動作例を示すシーケンス図である。
【図４】実施形態２のコントローラ部の動作例を示すフロー図である。
【図５】実施形態２のコントローラ部の動作の具体例を示す図である。
【図６】実施形態３の通信システムの構成例を示す図である。
【図７】実施形態３のコントローラ部の動作例を示すフロー図である。
【図８】実施形態３のコントローラ部の動作の具体例を示す図である。
【図９】他の実施形態のコントローラ部の動作例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。なお、以下で説明する各図面においては、「アプリケーション」を「アプリ」と略して記載する。
（１）実施形態１
図１に、本実施形態の通信システムの構成例を示す。図１を参照すると本実施形態の通信システムは、通信端末１０と、スイッチ２０と、を備える。また、通信端末１０は、コントローラ部１１と、物理ＩＦ１２−１と、通信アプリケーション＃１〜＃Ｎ（Ｎは２以上の自然数）と、を備える。スイッチ２０は、スイッチ部２１と、物理ＩＦ２２−１〜２２−３と、を備える。
【００１５】
物理ＩＦ１２−１は、スイッチ２０の物理ＩＦ２２−１に接続される第１物理インタフェースである。物理ＩＦ２２−１は、通信端末１０の物理ＩＦ１２−１に接続される第２物理インタフェースである。物理ＩＦ２２−２〜２２−３は、不図示のデバイス、サーバ等と接続される第３物理インタフェースである。なお、第１物理ＩＦ、第２物理ＩＦ、第３物理ＩＦの数は、いずれも１以上であれば良い。
【００１６】
通信アプリケーション＃１〜＃Ｎは、通信端末１０の外部の不図示のデバイス、サーバ等との間でのパケット通信を要するアプリケーションであり、例えば、Ｗｅｂブラウザ、動画を閲覧するためのアプリケーション、ニュースや地図を閲覧するためのアプリケーション等である。なお、通信アプリケーションの数は、１以上であれば良い。また、通信アプリケーション＃１〜＃Ｎは、不図示のＣＰＵ（Central Processing Unit）が実行部として実行するものとする。
【００１７】
コントローラ部１１は、オープンフローコントローラの機能を備える。コントローラ部１１は、通信アプリケーション＃１〜＃Ｎで発生したパケットをスイッチ部２１で受信した場合のそのパケットの処理内容（例えば、特定の通信網に送信、送信せずに破棄等）を決定し、決定した処理内容をスイッチ部２１に設定する。
【００１８】
スイッチ部２１は、オープンフロースイッチの機能を備える第１スイッチ部である。スイッチ部２１は、通信アプリケーション＃１〜＃Ｎで発生したパケットを受信した場合、そのパケットの処理内容がコントローラ部１１により設定されていれば、その処理内容に従って、そのパケットを処理する。
【００１９】
上述したように本実施形態においては、通信端末１０は、コントローラ部１１及び通信アプリケーション＃１〜＃Ｎを備え、スイッチ２０が備えるスイッチ部２１を外部接続する構成である。そして、通信端末１０のコントローラ部１１は、外部のスイッチ部２１に対し、通信アプリケーション＃１〜＃Ｎで発生したパケットの処理内容を設定する。そのため、通信端末１０は、通信端末１０が備える物理ＩＦ１２−１が接続される通信網以外にも、スイッチ２０が備える物理ＩＦ２２−２〜２２−３が接続される通信網を利用することができる。
【００２０】
なお、本実施形態においては、通信端末１０の外部のスイッチ２０にオープンフロースイッチの機能を備えるスイッチ部２１を設けていたが、同様の機能を備えるスイッチ部を通信端末１０に追加で設けても良い。
【００２１】
（２）実施形態２
本実施形態は、実施形態１の構成及び動作をより具体化した例である。図２に、本実施形態の通信システムの構成例を示す。図２を参照すると、本実施形態の通信システムは、通信端末１０は、ＯＳ（Operating System）としてＬｉｎｕｘ（登録商標）のみを搭載した端末であるとし、ＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol）スタック１３を追加で備えている。ＴＣＰ／ＩＰスタック１３は、ＴＣＰ／ＩＰのプロトコル処理を行うプロトコルスタックである。これにより、通信アプリケーション＃１〜＃Ｎは物理ＩＦ１２−１を介して通信先となるサーバー間とＴＣＰ／ＩＰによるパケットの受け渡しが可能になる。なお、ＴＣＰ／ＩＰスタック１３は、非特許文献１にも記載された周知技術であるため、詳細な説明は省略する。
【００２２】
また、本実施形態は、物理ＩＦ１２−１及び物理ＩＦ２２−１〜２２−３をより具体化している。物理ＩＦ１２−１及び物理ＩＦ２２−１〜２２−２は、接続される通信網がイーサネット（登録商標）であり、物理ＩＦ２２−３は、接続される通信網がセルラーネットワークである。また、物理ＩＦ１２−１及び物理ＩＦ２２−１〜２２−３のＩＰアドレスはそれぞれ、“Ａ”、“Ｅ”、“Ｆ”、“Ｇ”である。
【００２３】
また、本実施形態は、通信アプリケーション＃１〜＃Ｎ毎にフロー制御を行うこととし、通信アプリケーション＃１〜＃Ｎ毎に、その通信アプリケーションで発生したパケットの送信に利用する通信網を設定しておく。パケット（フロー）が発生した場合は、そのパケットが発生した通信アプリケーションを特定し、特定した通信アプリケーションについて設定されている通信網を利用して、そのパケットを送信する。
【００２４】
以下、本実施形態の通信システムの動作について説明する。
最初に、通信システムの全体動作について図３を参照して説明する。
【００２５】
まず、コントローラ部１１に通信アプリケーション＃１〜＃Ｎ毎の制御ポリシーを設定する（ステップＡ１）。ここでは、例えば、通信アプリケーション＃１の制御ポリシーとして、“セルラーネットワークに送信”が設定されたとする。
【００２６】
ここで、通信アプリケーション＃１でパケット（フロー）が発生したとする（ステップＡ２）。すると、そのパケットは通信アプリケーション＃１からスイッチ部２１に送信される。
【００２７】
スイッチ部２１は、通信アプリケーション＃１からパケットを受信すると、そのパケットの処理内容がコントローラ部１１により設定されているか判断する。ここでは、設定されていないものとする。そのため、スイッチ部２１は、通信アプリケーション＃１から受信したパケットが構成するフローに関するフロー情報（そのパケットの送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号等を表す）を、Ｐａｃｋｅｔ＿ｉｎメッセージを用いてコントローラ部１１に送信する（ステップＡ３）。なお、フロー情報は、パケットのヘッダフィールドに記述されており、パケットそのものとすることができる。
【００２８】
コントローラ部１１は、スイッチ部２１からＰａｃｋｅｔ＿ｉｎメッセージでフロー情報を受信すると、そのフロー情報をＬｉｎｕｘ（登録商標）のＯＳが使用しているソケットに関するソケット情報の一時ファイル（/proc/net/tcp(6),/proc/net/udp(6)）の中から検索する。この一時ファイルは、ソケットのｉｎｏｄｅ番号（識別番号）、そのソケットを使用するフローに関するフロー情報（そのフローを構成するパケットの送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号等を表す）、ユーザＩＤ（uid）等を表している。コントローラ部１１は、この一時ファイルの中から、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報が検索されると、検索されたフロー情報に対応するフローに使用されているソケットのｉｎｏｄｅ番号を特定する。次に、コントローラ部１１は、Ｌｉｎｕｘ（登録商標）のｌｓｏｆコマンド等を用いて、上記で特定したｉｎｏｄｅ番号をキーとして検索する事で、ｉｎｏｄｅ番号のソケットを使用しているプロセスのプロセス番号を特定する。次に、コントローラ部１１は、Ｌｉｎｕｘ（登録商標）のｐｓコマンド等を用いて、ＯＳから、現在実行中のプロセスの一覧を表すリストを取得する。このリストは、現在実行中のプロセス毎に、そのプロセスのプロセス番号、そのプロセスを実行する通信アプリケーションのアプリケーション名等を表すリストである。そして、コントローラ部１１は、このリストを参照して、上記で特定したプロセス番号のプロセスを実行している通信アプリケーションを特定する（ステップＡ３）。ここでは、通信アプリケーション＃１と特定される。また、ステップＡ１においては、通信アプリケーション＃１の制御ポリシーとして、“セルラーネットワークに送信”が設定されている。そのため、コントローラ部１１は、通信アプリケーション＃１の制御ポリシーを基に、スイッチ部２１から受信したＰａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報に対応するフローを構成するパケットの処理内容を“セルラーネットワークに送信”に決定する。そして、コントローラ部１１は、パケットの処理内容“セルラーネットワークに送信”を、Ｆｌｏｗ＿ｍｏｄメッセージを用いてスイッチ部２１に送信する（ステップＡ５）。
【００２９】
スイッチ部２１は、コントローラ部１１から、処理内容“セルラーネットワークに送信”をＦｌｏｗ＿ｍｏｄメッセージで受信すると、その処理内容を、スイッチ部２１内の不図示のフローテーブルに設定する。そのため、スイッチ部２１には、通信アプリケーション＃１から受信したパケットの処理内容“セルラーネットワークに送信”に従って、通信アプリケーション＃１から受信したパケットを、物理ＩＦ２２−３からセルラーネットワークに送信する（ステップＡ６）。また、スイッチ部２１は、以降に、通信アプリケーション＃１からパケットを受信した場合は、Ｐａｃｋｅｔ＿ｉｎメッセージをコントローラ部１１に送信することなく、通信アプリケーション＃１から受信したパケットを物理ＩＦ２２−３からセルラーネットワークに送信する。
【００３０】
続いて、コントローラ部１１がスイッチ部２１からＰａｃｋｅｔ＿ｉｎメッセージを受信した時の動作について図４及び図５を参照して説明する。
図４を参照すると、コントローラ部１１は、スイッチ部２１からＰａｃｋｅｔ＿ｉｎメッセージでフロー情報を受信すると（ステップＢ１）、Ｌｉｎｕｘ（登録商標）のＯＳが使用しているソケットに関するソケット情報の一時ファイル（/proc/net/tcp(6),/proc/net/udp(6)）を参照する（ステップＢ２）。そして、コントローラ部１１は、ソケット情報の一時ファイルの中から、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報を検索する（ステップＢ３）。
【００３１】
ステップＢ３において、フロー情報が検索された場合は（ステップＢ３のＹｅｓ）、コントローラ部１１は、検索されたフロー情報に対応するフローに使用されているソケットのｉｎｏｄｅ番号を特定する（ステップＢ４）。
【００３２】
ここまでの処理について、図５を参照して具体的に説明する。図５を参照すると、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報は、フローを構成するパケットの送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号を表している。また、ソケット情報の一時ファイルは、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報と同様のフロー情報と、そのフロー情報に対応するフローに使用されているソケットのｉｎｏｄｅ番号と、を表している。ここで、図５において、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報は、ソケット情報の一時ファイルの上から３番目のエントリのフロー情報と合致する。そのため、コントローラ部１１は、ステップＢ３において、そのエントリを検索し、ステップＢ４において、そのエントリのｉｎｏｄｅ番号“３００”を特定する。なお、図５のフロー情報の送信先ＩＰアドレスは、スイッチ２０の物理ＩＦ２２−３，２２−３がイーサネット（登録商標）やセルラーネットワークを介してそれぞれ接続される不図示のサーバ、デバイス等のＩＰアドレスである。
【００３３】
再度図４を参照すると、次に、コントローラ部１１は、Ｌｉｎｕｘ（登録商標）のｌｓｏｆコマンド等を用いて、上記で特定したｉｎｏｄｅ番号をキーとして検索する事で、ステップＢ４で特定したｉｎｏｄｅ番号のソケットを使用しているプロセスのプロセス番号を特定する（ステップＢ５）。
【００３４】
次に、コントローラ部１１は、Ｌｉｎｕｘ（登録商標）のｐｓコマンド等を用いて、ＯＳから、現在実行中のプロセスの一覧を表すリストを取得し、このリストを参照して、ステップＢ５で特定したプロセス番号のプロセスを実行している通信アプリケーションのアプリケーション名を特定する（ステップＢ６）。
【００３５】
次に、コントローラ部１１は、ステップＢ６で特定したアプリケーション名の通信アプリケーションの制御ポリシーが設定されているか判断する（ステップＢ７）。
【００３６】
ステップＢ７において、制御ポリシーが設定されている場合は（ステップＢ７のＹｅｓ）、コントローラ部１１は、設定されている制御ポリシーに従った処理内容を、Ｆｌｏｗ＿ｍｏｄメッセージを用いてスイッチ部２１に送信する（ステップＢ８）。
【００３７】
なお、ステップＢ３において、フロー情報が検索されない場合や（ステップＢ３のＮｏ）、ステップＢ７において、制御ポリシーが設定されていない場合は（ステップＢ７のＮｏ）、コントローラ部１１は、処理内容をＤｒｏｐ（送信せずに破棄）に決定し、処理内容“Ｄｒｏｐ”を、Ｆｌｏｗ＿ｍｏｄメッセージを用いてスイッチ部２１に送信する（ステップＢ９）。
【００３８】
上述したように本実施形態においては、実施形態１と同様に、通信端末１０は、コントローラ部１１及び通信アプリケーション＃１〜＃Ｎを備え、スイッチ２０が備えるスイッチ部２１を外部接続する構成である。そして、通信端末１０のコントローラ部１１は、外部のスイッチ部２１に対し、通信アプリケーション＃１〜＃Ｎで発生したパケットの処理内容を設定する。そのため、通信端末１０は、通信端末１０が備える物理ＩＦ１２−１が接続されるイーサネット（登録商標）以外にも、例えば、スイッチ２０が備える物理ＩＦ２２−３が接続されるセルラーネットワークを利用することができる。
【００３９】
（３）実施形態３
本実施形態は、実施形態２と同様に、通信端末１０は、スイッチ２０が備えるスイッチ部を外部接続する。ただし、本実施形態は、実施形態２とは異なり、通信端末１０もスイッチ部を備え、通信端末１０のスイッチ部及びスイッチ２０のスイッチ部の両方を使用する構成である。
【００４０】
図６に、本実施形態の通信システムの構成例を示す。図６を参照すると、本実施形態の通信システムは、実施形態２と比較して、通信端末１０の構成が異なる。すなわち、通信端末１０は、実施形態２と比較して、スイッチ部１４及び物理ＩＦ１２−２を追加している。スイッチ部１４は、オープンフロースイッチの機能を備える第２スイッチ部であり、コントローラ部１１と物理ＩＦ１２−１〜１２−２との間に配置されている。コントローラ部１１は、スイッチ部１４に対しても、通信アプリケーション＃１〜＃Ｎで発生したパケットをスイッチ部１４で受信した場合のそのパケットの処理内容（例えば、イーサネット（登録商標）に送信、送信せずに破棄等）を設定する。スイッチ部１４は、通信アプリケーション＃１〜＃Ｎで発生したパケットを受信した場合、そのパケットの処理内容がコントローラ部１１により設定されていれば、その処理内容に従って、そのパケットを処理する。また、物理ＩＦ１２−１は、接続される通信網がイーサネット（登録商標）であり、物理ＩＦ１２−２は、接続される通信網がＷｉＦｉ（Wireless Fidelity）（登録商標）ネットワークである。また、スイッチ部１４、物理ＩＦ１２−１〜１２−２のＩＰアドレスはそれぞれ、“Ａ”、“Ｂ”、“Ｃ”である。なお、スイッチ２０の構成は、実施形態２と同様であるため、説明を省略する。
【００４１】
本実施形態は、通信端末１０のスイッチ部１４及びスイッチ２０のスイッチ部２１の両方を使用可能となる。しかし、スイッチ２０のスイッチ部２１に対しては、通信アプリケーション＃１〜＃Ｎ毎にフロー制御を行うことができないという問題があった。以下、その理由について説明する。
【００４２】
本実施形態の構成の場合、通信端末１０内のソケット情報の一時ファイルの送信元ＩＰアドレスには、スイッチ部１４のＩＰアドレスが設定される。その一方、通信端末１０からスイッチ２０にパケットが送信される場合、そのパケットの送信元ＩＰアドレスには物理ＩＦ１２−１のＩＰアドレスが設定される。そのため、コントローラ部１１がスイッチ部２１からＰａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報の送信元ＩＰアドレスには、物理ＩＦ１２−１のＩＰアドレスが設定されている。そのため、コントローラ部１１は、通信端末１０内のソケット情報の一時ファイルから、スイッチ部２１から受信したフロー情報を検索しても、該当するフロー情報を検索することはできない。
【００４３】
そこで本実施形態においては、コントローラ部１１は、通信端末１０内のソケット情報の一時ファイルから、スイッチ部２１から受信したフロー情報を検索する場合、内部的にソケット情報の一時ファイルの送信元ＩＰアドレスを、物理ＩＦ１２−１がスイッチ２０に送信するパケットに設定した、物理ＩＦ１２−１のＩＰアドレスに置き換えた形で検索を行う。
【００４４】
以下、本実施形態の通信システムの動作について説明する。
ただし、通信システムの全体動作については、コントローラ部１１とスイッチ部２１との通信がスイッチ部１４を経由すること以外は図３と同様になるため、説明を省略する。
そこで以下では、コントローラ部１１がスイッチ部２１からＰａｃｋｅｔ＿ｉｎメッセージを受信した時の動作について図７及び図８を参照して説明する。
【００４５】
図７を参照すると、コントローラ部１１は、スイッチ部２１からＰａｃｋｅｔ＿ｉｎメッセージでフロー情報を受信すると（ステップＣ１）、Ｌｉｎｕｘ（登録商標）のＯＳが使用しているソケットに関するソケット情報の一時ファイル（/proc/net/tcp(6),/proc/net/udp(6)）を参照する（ステップＣ２）。次に、コントローラ部１１は、ソケット情報の一時ファイルの送信元（src）ＩＰアドレスを内部的に検索用に置き換える。具体的には、コントローラ部１１は、ソケット情報の一時ファイルの送信元ＩＰアドレスを、物理ＩＦ１２−１がスイッチ２０に送信するパケットに設定した、物理ＩＦ１２−１のＩＰアドレスに置き換える（ステップＣ３）。その状態で、コントローラ部１１は、ソケット情報の一時ファイルの中から、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報を検索する（ステップＣ４）。
【００４６】
ステップＣ４において、フロー情報が検索された場合は（ステップＣ４のＹｅｓ）、コントローラ部１１は、検索されたフロー情報に対応するフローに使用されているソケットのｉｎｏｄｅ番号を特定する（ステップＣ５）。
【００４７】
ここまでの処理について、図８を参照して具体的に説明する。図８を参照すると、スイッチ部２１からＰａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報の送信元ＩＰアドレスは、物理ＩＦ１２−１のＩＰアドレスになっている。これに対して、ソケット情報の一時ファイルの送信元ＩＰアドレスは、通信端末１０のスイッチ部１４のＩＰアドレスになっている。そのため、このままでは、ソケット情報の一時ファイルからは、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報は検索されない。そこで、コントローラ部１１は、ステップＣ３において、ソケット情報の一時ファイルの送信元ＩＰアドレスを、物理ＩＦ１２−１がスイッチ２０に送信するパケットに設定した、物理ＩＦ１２−１のＩＰアドレスに置き換える。この状態では、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報は、ソケット情報の一時ファイルの上から３番目のエントリのフロー情報と合致することになる。そのため、コントローラ部１１は、ステップＣ４において、そのエントリを検索し、ステップＣ５において、そのエントリのｉｎｏｄｅ番号“３００”を特定する。
【００４８】
なお、図８の以降のステップＣ６〜Ｃ１０の動作は、図４のステップＢ５〜Ｂ９の動作と同様であるため、説明を省略する。
また、コントローラ部１１がスイッチ部１４からＰａｃｋｅｔ＿ｉｎメッセージを受信した時の動作は、図４と同様であるため、説明を省略する。
【００４９】
上述したように本実施形態においては、実施形態２と同様に、通信端末１０は、コントローラ部１１及び通信アプリケーション＃１〜＃Ｎを備え、スイッチ２０が備えるスイッチ部２１を外部接続する構成である。そして、通信端末１０のコントローラ部１１は、外部のスイッチ部２１に対し、通信アプリケーション＃１〜＃Ｎで発生したパケットの処理内容を設定する。そのため、通信端末１０は、通信端末１０が備える物理ＩＦ１２−１，１２−２がそれぞれ接続されるイーサネット（登録商標）及びＷｉＦｉネットワーク以外にも、例えば、スイッチ２０が備える物理ＩＦ２２−３が接続されるセルラーネットワークを利用することができる。
【００５０】
また、本実施形態においては、通信端末１０もスイッチ部１４を備えており、通信端末１０のスイッチ部１４及びスイッチ２０のスイッチ部２１の両方を使用可能である。また、通信端末１０のコントローラ部１１は、スイッチ２０のスイッチ部２１からＰａｃｋｅｔ＿ｉｎメッセージを受信した場合は、ソケット情報の一時ファイルの送信元ＩＰアドレスを、パケットが通信端末１０からスイッチ２０に送信される際にそのパケットに物理ＩＦ１２−１により設定される物理ＩＦ１２−１のＩＰアドレスに置き換えた形で、その一時ファイルから、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報を検索する。これにより、ソケット情報の一時ファイルからフロー情報を検索可能になることから、スイッチ２０のスイッチ部２１に対しても、通信アプリケーション＃１〜＃Ｎ毎のフロー制御を行うことができる。
【００５１】
なお、本発明は上記実施形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００５２】
例えば、図９に示されるように、通信端末１０が、スイッチ２０に外部接続されるだけでなく、他のデバイス（以下、外部接続デバイスと称す）３０にも外部接続される場合を考える。ここでは、スイッチ２０の通信端末１０側の物理ＩＦ２２−１のＩＰアドレスを“Ｅ”とする。また、通信端末１０のスイッチ２０側の物理ＩＦ１２−１のＩＰアドレスを“Ｂ”、外部接続デバイス３０側の物理ＩＦ１２−２のＩＰアドレスを“Ｃ”とする。また、外部接続デバイス３０の通信端末１０側の物理ＩＦのＩＰアドレスを“Ｈ”とする。また、スイッチ２０と通信端末１０間の通信網と、通信端末１０と外部接続デバイス３０間の通信網と、は同一の通信網（例えば、イーサネット（登録商標）等）であるとする。この場合、スイッチ２０が、通信端末１０から受信するパケットの送信元（scr）ＩＰアドレスには、通信端末１０のスイッチ２０側の物理ＩＦ１２−１のＩＰアドレス（＝Ｂ）が設定される。しかし、スイッチ２０が、外部接続デバイス３０から通信端末１０を介して受信するパケットの送信元ＩＰアドレスには、外部接続デバイス３０の通信端末１０側の物理ＩＦのＩＰアドレス（＝Ｈ）が設定される。
【００５３】
そのため、実施形態３において、通信端末１０のコントローラ部１１は、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報の送信元ＩＰアドレスが“Ｂ”（すなわち、通信端末１０の物理ＩＦ１２−１がパケットに設定したＩＰアドレス）である場合にのみ、実施形態３の以降の処理を行えば良い。具体的には、図７において、通信端末１０のコントローラ部１１は、ステップＣ１において、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報の送信元ＩＰアドレスが“Ｂ”であれば、ステップＣ２に進む。一方、“Ｂ”でなければ、コントローラ部１１は、ステップＣ２には進まず、フロー情報に対応するフローを構成するパケットの処理内容を決定し、Ｆｌｏｗ＿ｍｏｄメッセージを返す。
【００５４】
また、実施形態３においては、コントローラ部１１は、ソケット情報の一時ファイルの送信元ＩＰアドレスを、物理ＩＦ１２−１がスイッチ２０に送信するパケットに設定した、物理ＩＦ１２−１のＩＰアドレスに置き換え、その状態で、コントローラ部１１は、ソケット情報の一時ファイルの中から、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報を検索した。しかし、他の方法として、コントローラ部１１はスイッチ部２１からＰａｃｋｅｔ＿ｉｎメッセージでフロー情報を受信した際、Ｐａｃｋｅｔ＿ｉｎメッセージに含まれているフロー情報である送信元ＩＰアドレスを“Ａ”に書き換えた形でソケット情報の一時ファイルと比較する事で、同様の検索を実施することができる。
【００５５】
また、実施形態３においては、通信端末１０の物理ＩＦ１２−１が、パケットのＩＰアドレスのヘッダフィールドを更新して、そのパケットをスイッチ２０に送信することを想定し、送信元ＩＰアドレスの差分のみに言及して記載した。しかし、通信端末１０の物理ＩＦ１２−１が、パケットのポート番号などの他のヘッダフィールドを更新して、そのパケットをスイッチ２０に送信するケースも考えられる。その様なケースにおいても、通信端末１０のコントローラ部１１が、ヘッダフィールドの更新内容に合わせて、ソケット情報の一時ファイルの検索を行うことで、通信アプリケーションの特定が可能となる。例えば、通信端末１０の物理ＩＦ１２−１が、パケットのポート番号のヘッダフィールドを更新した場合には、ソケット情報の一時ファイルの送信元ポート番号を、物理ＩＦ１２−１がパケットに設定したポート番号に置き換えた上で検索を行えば良い。
【００５６】
また、実施形態３においては、フローが発生した通信アプリケーションを特定する目的で、ソケット情報の一時ファイルの内容を更新前の内容に置き換えた上で検索を行っているが、この検索方法は、他の目的のためにも適用可能である。他の目的としては、例えば、パケットを送信したユーザ（uid）を特定する目的等が挙げられる。
【００５７】
また、実施形態２，３においては、Ｐａｃｋｅｔ＿ｉｎメッセージで受信したフロー情報を、ソケット情報の一時ファイルから検索する場合、フロー情報の全ての内容が合致しているか判断したが、送信元（scr）ポート番号が合致しているかのみで判断しても良い。これは、複数の通信アプリケーションのフローが同時に発生した場合に、送信元（scr）ポート番号が重複することが無いためである。
【００５８】
また、通信端末１０における処理は、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現されても良い。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）、ＣＤ−Ｒ（CD-Recordable）、ＣＤ−Ｒ／Ｗ（CD-ReWritable）、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されても良い。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバなどの有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００５９】
１０  通信端末
１１  コントローラ部
１２−１〜１２−２  物理ＩＦ
１３  ＴＣＰ／ＩＰスタック
１４  スイッチ部
２０  スイッチ
２１  スイッチ部
２２−１〜２２−３  物理ＩＦ
＃１〜＃Ｎ  通信アプリケーション
【図１】
2016178530.tif 000003
【図２】
2016178530.tif 000004
【図３】
2016178530.tif 000005
【図４】
2016178530.tif 000006
【図５】
2016178530.tif 000007
【図６】
2016178530.tif 000008
【図７】
2016178530.tif 000009
【図８】
2016178530.tif 000010
【図９】
2016178530.tif 000011