(57)【要約】  【課題】  ユーザ又は任意のプログラムがフロー毎に通信に利用するネットワークを選択可能な通信装置を提供する。  【解決手段】  １つ以上の通信インタフェースと、受信したパケットを転送するパケット転送部と、パケット転送部の動作を制御する転送制御部とを備えるフロー単位のネットワーク制御方式を利用する通信装置において、ユーザ又は任意のプログラムが設定したフロー毎にどの通信インタフェースを使用して通信を行うのかを定める使用インタフェース情報に基づき、パケット転送ルールを生成し、そのパケット転送ルールに従って、通信に使用する通信インタフェースを介してパケットを送受信するようにパケット転送を行う。【選択図】  図１
2014053719.tif 000002
【特許請求の範囲】
【請求項１】
フロー毎に通信に利用するネットワークを選択することが可能な、フロー単位のネットワーク制御方式を利用する通信装置であって、
前記通信装置は、
１つ以上の通信インタフェースと、
受信したパケットを転送するパケット転送部と、
前記パケット転送部の動作を制御する転送制御部と、
を備えることを特徴とする通信装置。
【請求項２】
前記パケット転送部は、前記１つ以上の通信インタフェース及び仮想インタフェースに接続し、パケットの転送を行う請求項１記載の通信装置。
【請求項３】
前記転送制御部は、
フローを識別可能な情報であるフロー情報と、前記１つ以上の通信インタフェースのうちのいずれかを一意に特定可能な情報とを含む情報であって、フロー毎にどの通信インタフェースを使用して通信を行うのかを定める使用インタフェース情報を記憶する使用インタフェース情報記憶部と、
前記使用インタフェース情報記憶部に記憶させる前記使用ネットワーク情報を、ユーザ又は任意のプログラムから設定することを可能にする使用インタフェース情報管理部と、
を備える請求項１記載の通信装置。
【請求項４】
前記転送制御部は、
通信インタフェース及び前記仮想インタフェースがパケットの送受信を行うために必要な情報であって、通信インタフェース及び前記仮想インタフェースに設定されるアドレス情報を記憶するアドレス記憶部と、
前記アドレス情報を通信インタフェース及び前記仮想インタフェースから取得して前記アドレス記憶部に記憶させるアドレス情報管理部と、
を備える請求項１記載の通信装置。
【請求項５】
前記転送制御部は、
前記アドレス情報管理部が取得した前記１つ以上の通信インタフェース毎に設定されるデフォルトゲートウェイ及び前記仮想インタフェースに設定される仮想デフォルトゲートウェイのうち前記仮想デフォルトゲートウェイのみを前記通信装置の経路表に設定する経路表管理部を備える請求項１記載の通信装置。
【請求項６】
前記転送制御部は、
パケットを受信したときの前記パケット転送部の動作を定める情報であるパケット転送ルールを生成するパケット転送ルール生成部と、
前記パケット転送部を管理し、前記パケット転送ルール生成部が生成した前記パケット転送ルールを前記パケット転送部に設定するパケット転送部管理部と、
を備える請求項１記載の通信装置。
【請求項７】
前記パケット転送ルール生成部は、
前記パケット転送部から前記パケット転送ルールの生成を要求されたとき、前記使用インタフェース情報に基づき、通信に使用する通信インタフェースを特定し、前記フロー情報、及び前記通信に使用する通信インタフェースのアドレス情報に基づき、パケットに含まれる任意のアドレス及び識別子の値の書き換え、及び前記通信に使用する通信インタフェースにパケットを送信する処理等に関する情報を含む前記パケット転送ルールを生成することを特徴とする請求項６記載の通信装置。
【請求項８】
前記パケット転送ルール生成部は、
前記パケット転送ルールの生成を要求されたフローの送信先が仮想デフォルトゲートウェイである場合、前記フローに適合するフロー情報を含む使用インタフェース情報に基づき、通信に使用する通信インタフェースを特定し、前記パケット転送部が前記フローのパケットを前記通信に使用する通信インタフェースに設定されるデフォルトゲートウェイに転送するように、前記パケット転送ルールを生成することを特徴とする請求項７記載の通信装置。
【請求項９】
１つ以上の通信インタフェースと、受信したパケットを転送するパケット転送部とを備えるフロー単位のネットワーク制御方式を利用する通信装置において、ユーザ又は任意のプログラムがフロー毎に通信に使用する通信インタフェースを選択可能にする転送制御方法であって、
前記転送制御方法は、
パケットを受信したときの前記パケット転送部の動作を定める情報であるパケット転送ルールを生成するパケット転送ルール生成ステップと、
前記パケット転送部を管理し、前記パケット転送ルール生成ステップが生成した前記パケット転送ルールを前記パケット転送部に設定するパケット転送部管理ステップと、
を含むことを特徴とする転送制御方法。
【請求項１０】
前記パケット転送ルール生成ステップでは、
前記パケット転送部から前記パケット転送ルールの生成を要求されたとき、フローを識別可能な情報であるフロー情報と、前記１つ以上の通信インタフェースのうちのいずれかを一意に特定可能な情報であって、フロー毎にどの通信インタフェースを使用して通信を行うのかを定める使用インタフェース情報と、通信インタフェースがパケットの送受信を行うために必要な情報であって、通信インタフェースに設定されるアドレス情報とに基づき、パケットに含まれる任意のアドレス及び識別子の値の書き換え、及び前記通信に使用する通信インタフェースにパケットを送信する処理に関する前記パケット転送ルールを生成することを特徴とする請求項９記載の転送制御方法。
【請求項１１】
１つ以上の通信インタフェースと、受信したパケットを転送するパケット転送部とを備えるフロー単位のネットワーク制御方式を利用するコンピュータにおいて、ユーザ又は任意のプログラムがフロー毎に使用する通信インタフェースを選択可能にする処理を実行させるプログラムであって、
前記プログラムは、前記コンピュータに、
パケットを受信したときの前記パケット転送部の動作を定める情報であるパケット転送ルールを生成するパケット転送ルール生成処理と、
前記パケット転送部を管理し、前記パケット転送ルール生成処理が生成した前記パケット転送ルールを前記パケット転送部に設定するパケット転送部管理処理と、
を実行させる転送制御プログラム。
【請求項１２】
前記パケット転送ルール生成処理では、
前記パケット転送部から前記パケット転送ルールの生成を要求されたとき、フローを識別する情報であるフロー情報と、前記１つ以上の通信インタフェースのうちのいずれかを一意に特定可能な情報であって、フロー毎にどの通信インタフェースを使用して通信を行うのかを定める使用インタフェース情報と、通信インタフェースがパケットの送受信を行うために必要な情報であって、通信インタフェースに設定されるアドレス情報とに基づき、パケットに含まれる任意のアドレス及び識別子の値の書き換え、及び前記通信に使用する通信インタフェースにパケットを送信する処理に関する前記パケット転送ルールを生成させることを特徴とする請求項１１記載の転送制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上で通信を行う通信装置、転送制御方法及び転送制御プログラムに関し、特に、１つ以上の通信インタフェースと、パケットを転送するパケット転送部と、パケット転送部の動作を制御する転送制御部とを備えるフロー単位のネットワーク制御方法を利用する通信装置、及びその通信装置に適用される転送制御方法、転送制御プログラムに関する。
【背景技術】
【０００２】
近年、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、３Ｇ（第３世代移動通信システム）、ＷｉＭＡＸ（Ｗｏｒｌｄｗｉｄｅ  Ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  Ｍｉｃｒｏｗａｖｅ  Ａｃｃｅｓｓ）、ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）等の高速無線通信技術の発展によって、通信装置が複数の通信インタフェースを備えることが一般化しつつある。また、スマートフォンやタブレット等をはじめとする高機能な通信装置上では多種多様なアプリケーションが動作し、従来の通信装置と比較して送受信するトラフィックが大幅に増加している。
【０００３】
上記のような通信装置の普及に伴う公衆無線ネットワークの負荷増大の深刻化を背景として、ネットワークの効率利用が通信装置における問題の１つとなっている。通信が発生する頻度や通信量等、異なる特性を持つトラフィックを送受信する通信プログラムであるアプリケーションに応じて適切なネットワークを利用して通信を行うことにより、上記問題を緩和することが期待できる。
【０００４】
しかしながら、複数の通信インタフェースを備えることで、複数のネットワークに接続することはできても、それらを同時に利用して通信を行うための機構が無いため、現在の通信装置は、通信インタフェースを排他的に利用しており、上記のようなアプリケーションに応じて適切に利用するネットワークを選択することを実現することはできない。
【０００５】
複数のネットワークを同時に利用して通信を行うことができないという課題は、通信に使用する通信インタフェースを選択するための機構が十分でないことに起因する。
【０００６】
ＩＰ通信においては、通信装置が直接接続するネットワーク以外のネットワーク上にある通信装置と通信を行う場合、通信装置が直接接続するネットワークのデフォルトゲートウェイを介して通信を行う。デフォルトゲートウェイは、通信インタフェース毎に設定することが可能であり、複数の通信インタフェースを備える通信装置においては、経路表上に複数のデフォルトゲートウェイが存在することになる。そのような場合、通信装置上の通信スタックが行う経路制御において、どのデフォルトゲートウェイを使用して通信を行えば良いか分からず、通信不能に陥ってしまう。
【０００７】
ネットワーク上の通信装置間の疎通確認を行うｐｉｎｇコマンド等の通信プログラムは、通信に使用する通信インタフェースを指定することが可能である。そのような機能を持つ通信プログラムの通信においては、指定した通信インタフェースに設定されるデフォルトゲートウェイが使用されるため、経路表上に複数のデフォルトゲートウェイが存在する場合でも、通信を行うことが可能である。しかしながら、通信装置上で動作する全ての通信プログラムにそのような機能を実装し、個別に通信に使用する通信インタフェースを指定することは容易ではない。
【０００８】
通信装置によっては、最後に設定されたデフォルトゲートウェイを選択する等の、何らかの規則に従って、経路表上の複数のデフォルトゲートウェイのうちのいずれかを選択して通信を行うことによって、通信不能に陥ることを回避する。しかしながら、通信に使用する通信インタフェース若しくはデフォルトゲートウェイを、明示的に指定するものではないため、通信インタフェースの状態が変化し、通信インタフェースに設定されるアドレス情報に変更が発生するような環境においては、意図と異なるネットワークで通信が行われてしまう可能性がある。
【０００９】
従来からも、上記課題を考慮した複数の通信インタフェースを備える通信装置に関する様々な提案が成されている。例えば、特許文献１に記載の方法では、ネットワークの品質、バッテリの充電量、課金額等に基づき、複数の通信インタフェースのうちいずれか１つの通信インタフェースを優位に設定し、優位に設定した通信インタフェースに設定されるデフォルトゲートウェイのみを経路表に設定することで、優位に設定した通信インタフェースに設定されるデフォルトゲートウェイを使用して通信が行われるようになる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】国際公開第２００９／０５７４７７号
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１に記載の方法によって、複数の通信インタフェースを備える通信装置における複数のインタフェースを同時に使用した通信は可能になるものの、複数のデフォルトゲートウェイのうち優位に設定した通信インタフェースに設定されるデフォルトゲートウェイのみを使用して通信を行うため、優位に設定した通信インタフェース以外の通信インタフェースでは、通信装置が直接接続するネットワーク以外のネットワーク上にある通信装置と通信することはできないという課題があり、複数のネットワークを同時に利用した通信を実現する方法としては不十分である。
【００１２】
また、特許文献１に記載の方法は、複数のデフォルトゲートウェイのうちいずれか１つを選択可能にする方法であることから、通信装置が直接接続するネットワーク以外のネットワーク上にある通信装置と通信するアプリケーションが行う通信は、全て優位に設定した通信インタフェースを介し、優位に設定した通信インタフェースに設定されるデフォルトゲートウェイを使用した通信になるという課題もあった。そのため、アプリケーション毎といったより細かい粒度で通信に使用する通信インタフェース若しくはデフォルトゲートウェイを選択可能な方法が望まれる。
【００１３】
本発明は、複数の通信インタフェースを備える通信装置に関する上記課題に鑑みて成されたものであり、複数のネットワークを同時に利用して通信を行うこと、及びユーザ又は任意のプログラムからフロー毎に通信に使用する通信インタフェースを選択することを実現することで、フロー毎に適切なネットワークを利用して通信を行うことが可能な通信装置、転送制御方法及び転送制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明による通信装置は、フロー毎に通信に使用する通信インタフェースを選択することが可能な、フロー単位のネットワーク制御方式を利用する通信装置であって、１つ以上の通信インタフェースと、受信したパケットを転送するパケット転送部と、前記パケット転送部の動作を制御する転送制御部とを備えるという構成を有している。
この構成により、フロー毎に適切なネットワークを利用して通信を行うことができる。
【００１５】
また、本発明による転送制御方法は、１つ以上の通信インタフェースと、受信したパケットを転送するパケット転送部とを備えるフロー単位のネットワーク制御方式を利用する通信装置において、フロー毎に通信に使用する通信インタフェースを選択可能にする転送制御方法であって、パケットを受信したときのパケット転送部の動作を定める情報であるパケット転送ルールを生成するパケット転送ルール生成ステップと、パケット転送ルール生成ステップが生成したパケット転送ルールを、パケット転送部に設定するパケット転送部管理ステップとを含む構成を有している。
この構成により、フロー毎に適切なネットワークを利用して通信を行うためのパケット転送を行うことができる。
【００１６】
また、本発明による転送制御プログラムは、１つ以上の通信インタフェースと、受信したパケットを転送するパケット転送部とを備えるフロー単位のネットワーク制御方式を利用するコンピュータに、フロー毎に通信に使用する通信インタフェースを選択可能にする処理を実行させるプログラムであって、パケットを受信したときのパケット転送部の動作を定める情報であるパケット転送ルールを生成するパケット転送ルール生成処理と、パケット転送ルール生成処理が生成したパケット転送ルールを、パケット転送部に設定するパケット転送部管理処理とを実行させる構成を有している。
この構成により、フロー毎に適切なネットワークを利用して通信を行うためのパケット転送を行うことができる。
【発明の効果】
【００１７】
本発明によれば、複数のネットワークを同時に利用して通信を行うこと、及びユーザ又は任意のプログラムからフロー毎に通信に使用する通信インタフェースを選択可能にすることで、フロー毎に適切なネットワークを利用して通信を行うことができるという効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態における通信装置の構成例を示すブロック図。
【図２】本発明の実施形態におけるパケット転送部の構成例を示すブロック図。
【図３】パケット転送部がパケットを受信したときの処理の例を示すフローチャート。
【図４】第１の実施形態における通信に係る要素に着目したより詳細な通信装置の構成例を示すブロック図。
【図５】本発明の実施形態における転送制御部の構成例を示すブロック図。
【図６】第１の実施形態における経路表の構成例。
【図７】第１の実施形態における転送制御部がパケット転送ルールを生成する処理の例を示すフローチャート。
【図８】第２の実施形態における通信に係る要素に着目したより詳細な通信装置の構成例を示すブロック図。
【図９】第２の実施形態における経路表の構成例。
【図１０】第２の実施形態における転送制御部がパケット転送ルールを生成する処理の例を示すフローチャート。
【図１１】第２の実施形態における転送制御部のアドレス解決処理の例を示すフローチャート。
【図１２】第３の実施形態における使用インタフェース情報記憶部に記憶される使用インタフェース情報の構成例。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について図面を参照して説明する。
【００２０】
（実施形態１）
図１は、本発明の実施形態における通信装置の構成例を示すブロック図である。本発明の実施形態における通信装置１００は、フロー単位のネットワーク制御方式を利用する通信装置であって、複数の通信インタフェース１０１と、受信したパケットの転送を行うパケット転送部２００と、パケット転送部の動作を制御する転送制御部３００とを備える。
【００２１】
「フロー」とは、任意のアドレスや識別子の組み合せによって識別できるトラフィックの一連のパケットの流れを指し、フロー単位のネットワーク制御方式を利用することで、より粒度の細かい柔軟なネットワーク制御を実現できる。フロー単位のネットワーク制御方式は、例えば、ＯｐｅｎＦｌｏｗである。受信したパケットを転送するフロースイッチと、フロースイッチの動作を制御するフローコントローラとを備えるＯｐｅｎＦｌｏｗによる通信装置の例は、「Ｎｉｃｋ  ＭｃＫｅｏｗｎ、他７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、２００８年３月１４日、インターネット＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｗｐ−ｌａｔｅｓｔ．ｐｄｆ＞」、または、「“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０．０”、２００９年１２月３１日、インターネット＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．０．０．ｐｄｆ＞」等に記載されている。
【００２２】
パケット転送部２００は、例えば、ＯｐｅｎＦｌｏｗにおけるフロースイッチである。また、転送制御部３００は、例えば、ＯｐｅｎＦｌｏｗにおけるフローコントローラである。
【００２３】
パケット転送部２００は、受信したパケットの転送を行うが、具体的には、転送制御部３００が設定するパケットを受信したときのパケット転送部の動作を定める情報であるパケット転送ルールに従って、受信したパケットに対して任意の処理を行う。
【００２４】
パケット転送ルールは、フローを識別可能な情報であるフロー情報と、フロー情報に適合するフローのパケットに対して実行する処理の内容を定める情報であるアクション情報とを含む。パケット転送ルールは、少なくとも、フロー情報と、アクション情報とを含むが、更に他の情報を含んでいても良い。
【００２５】
フロー情報は、例えば、送信元ＭＡＣアドレス、送信先ＭＡＣアドレス、Ｅｔｈｅｒｎｅｔ（登録商標）フレームタイプ、送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号、どの通信インタフェースからパケットを受信したのかを定める情報である受信ポート番号等を含むが、フロー情報は、これらに限定されない。更に他の情報を含んでいても良い。アクション情報の内容として、例えば、パケットを特定の通信インタフェースに送信する、パケットを通信スタックに送信する、パケットに含まれる任意のアドレスや識別子を任意の値に書き換える、パケットを廃棄する等が挙げられるが、アクション情報の内容は、これらに限定されない。
【００２６】
通信インタフェースは、任意のネットワークに接続して通信を可能にする機能を提供するインタフェースを指す。本発明の実施形態において、通信インタフェースの種類は、特に限定されない。Ｅｔｈｅｒｎｅｔ（登録商標）等の有線インタフェース、無線ＬＡＮ等の無線インタフェース、又は任意の方法により生成される仮想インタフェースであって良い。仮想インタフェースの例として、例えば、トンネルインタフェースや、複数の通信インタフェースを仮想的に束ねるリンクアグリゲーションにより生成される論理インタフェース等が挙げられる。また、通信インタフェースの数も、特に限定されず、１つ以上であれば良い。更に、複数の通信インタフェース１０１について、全て同じ種類の通信インタフェースでも、異なる種類の通信インタフェースが混在していても良い。
【００２７】
図２は、本発明の実施形態におけるパケット転送部の構成例を示すブロック図である。パケット転送部２００は、パケット転送ルール記憶部２０１と、パケット転送ルール管理部２０２と、フロー識別部２０３と、アクション実行部２０４とを備える。
【００２８】
パケット転送ルール記憶部２０１は、パケット転送ルールを記憶する。フロー毎に異なるパケット転送ルールが設定されるため、パケット転送ルール記憶部２０１には１つ以上のパケット転送ルールが記憶される。パケット転送ルール記憶部２０１に記憶されるパケット転送ルールの集合を「パケット転送ルールテーブル」と記す。
【００２９】
パケット転送ルール管理部２０２は、パケット転送ルールを管理する。転送制御部３００は、パケット転送部２００にパケット転送ルールを設定するとき、パケット転送ルールと共に設定指示を送信する。設定指示は、具体的には、パケット転送ルールの追加、変更又は削除を行うのかを定める情報である。パケット転送ルール管理部２０２は、転送制御部３００から受信したパケット転送ルールを、設定指示に応じてパケット転送ルール記憶部２０１に記憶させる。
【００３０】
パケット転送ルールは、フロー情報及びアクション情報の他に、パケット転送ルールの有効期間を定める情報であるタイマ値を含む。パケット転送ルール管理部２０２は、各パケット転送ルールで指定されているタイマ値を時間経過と共に減少させる。そして、タイマ値が０になったならば、そのタイマ値を含むパケット転送ルールを、パケット転送ルール記憶部２０１から削除する。パケット転送ルールに含まれるフロー情報に適合するフローのパケットを受信したときには、パケット転送ルール管理部２０２は、タイマ値を初期値にリセットする。
【００３１】
フロー識別部２０３は、パケットを受信したとき、受信したパケットに含まれる任意のアドレスや識別子からフロー情報を生成する。生成したフロー情報に基づき、受信したパケットのフローに適合するフロー情報を含むパケット転送ルールが、パケット転送ルール記憶部２０１に記憶されているパケット転送ルールテーブル上に存在するか検索する。
【００３２】
アクション実行部２０４は、パケット転送ルールに含まれるアクション情報の内容に基づき、受信したパケットに対して任意の処理を実行する。
【００３３】
パケット転送部２００の動作について説明する。図３は、パケット転送部がパケットを受信したときの処理の例を示すフローチャートである。パケット転送部２００がパケットを受信すると（ステップＳ１０１）、フロー識別部２０３は、受信したパケットからフロー情報を生成し（ステップＳ１０２）、生成したフロー情報に基づき、受信したパケットのフローに適合するフロー情報を含むパケット転送ルールが、パケット転送ルール記憶部２０１に記憶されているパケット転送ルールテーブル上に存在するか否か判定する（ステップＳ１０３）。
【００３４】
受信したパケットのフローに適合するフロー情報を含むパケット転送ルールが存在しない場合（ステップＳ１０３におけるＮｏ）、フロー識別部２０３は、フロー識別部２０３が生成したフロー情報を含む新規フロー検出通知を転送制御部３００に送信し（ステップＳ１０４）、受信したパケットのフローに対するパケット転送ルールの生成を要求する。なお、フロー識別部２０３は、受信したパケットそのものを新規フロー検出通知に含めても良い。転送制御部３００は、新規フロー検出通知を受信したとき、パケット転送ルールを生成し、設定指示と共にパケット転送部２００に送信する。
【００３５】
パケット転送ルール管理部２０２は、転送制御部３００から送信されたパケット転送ルール及び設定指示を受信すると、その指示に応じて、受信したパケット転送ルールを、パケット転送ルール記憶部２０１に記憶させる（ステップＳ１０５）。
【００３６】
受信したパケットのフローに適合するフロー情報を含むパケット転送ルールが存在する場合（ステップＳ１０３におけるＹｅｓ）、パケット転送ルール管理部２０２は、受信したパケットのフローに適合するフロー情報を含むパケット転送ルールのタイマ値を、初期値にリセットする（ステップＳ１０６）。
【００３７】
上記のような処理を行うことで、受信したパケットのフローに適合するパケット転送ルールが得られる。アクション実行部２０４は、受信したパケットのフローに適合するパケット転送ルールに含まれるアクション情報に従って、受信したパケットに対して任意の処理を実行する（ステップＳ１０７）。
【００３８】
図４は、第１の実施形態における通信に係る要素に着目したより詳細な通信装置の構成例を示すブロック図である。パケット転送部２００は、複数の通信インタフェース１０１及び仮想インタフェース１０２に接続し、パケットの転送を行う。通信装置１００は、複数の通信インタフェース１０１を介して任意のネットワークと接続される。一方、仮想インタフェース１０２は、複数の通信インタフェース１０１を介して接続されるネットワークのうちのいずれにも接続しない通信インタフェースである。換言すれば、通信装置１００内部に存在する仮想ネットワークに接続するための通信インタフェースであると言える。
【００３９】
図４に示すような構成により、パケット転送部２００は、他の通信装置、又は通信装置１００上で動作する任意の通信プログラム１０５から送信されるパケットを、複数の通信インタフェース１０１及び仮想インタフェース１０２のうちのいずれかの通信インタフェースで受信する。
【００４０】
パケット転送部２００と転送制御部３００は、任意の方法により接続される。例えば、ＵＮＩＸ（登録商標）ドメインソケット通信、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）通信又はＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）通信により接続される。
【００４１】
転送制御部３００は、図５に示すように、使用インタフェース情報記憶部３０１と、使用インタフェース情報管理部３０２と、アドレス情報記憶部３０３と、アドレス情報管理部３０４と、経路表管理部３０５と、パケット転送ルール生成部３０６と、パケット転送部管理部３０７とを備える。
【００４２】
使用インタフェース情報は、フロー毎にどの通信インタフェースを使用して通信を行うのかを定める情報であって、フローを識別可能な情報であるフロー情報と、複数の通信インタフェース１０１のうちのいずれかを一意に特定可能な情報とを含む。使用インタフェース情報は、少なくとも、フロー情報と、複数の通信インタフェース１０１のうちのいずれかを一意に特定可能な情報とを含むが、更に他の情報を含んでいても良い。
【００４３】
使用インタフェース情報に含まれるフロー情報は、それに含まれる情報の値に、ワイルドカードを含んでいても良い。複数の通信インタフェース１０１のうちのいずれかを一意に特定可能な情報は、例えば、インタフェース名、ポート番号等である。
【００４４】
使用インタフェース情報記憶部３０１は、使用インタフェース情報を記憶する。フロー毎に異なる使用インタフェース情報が設定されるため、使用インタフェース情報記憶部３０１には１つ以上の使用インタフェース情報が記憶される。
【００４５】
使用インタフェース情報管理部３０２は、使用インタフェース情報を管理すると共に、任意のタイミングで使用インタフェース情報を設定可能にする機能を、ユーザ又は任意のプログラムに対して提供する。ユーザ又は任意のプログラムは、使用インタフェース情報管理部３０２に使用インタフェース情報を設定するとき、使用インタフェース情報と共に設定指示を与える。設定指示は、具体的には、使用インタフェース情報の追加、変更又は削除を行うのかを定める情報である。使用インタフェース情報管理部３０２は、ユーザ又は任意のプログラムから与えられた使用インタフェース情報を、設定指示に応じて使用インタフェース情報３０１に記憶させる。
【００４６】
使用インタフェース情報管理部３０２がユーザ又は任意のプログラムに対して提供する使用インタフェース情報を設定可能にする機能は、例えば、設定を行うためのグラフィカルユーザインタフェース、任意のプログラムから利用可能な任意のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）等である。
【００４７】
アドレス情報記憶部３０３は、複数の通信インタフェース１０１及び仮想インタフェース１０２が、パケットの送受信を行うために必要な情報であるアドレス情報を記憶する。通信インタフェース毎に異なるアドレス情報が設定されるため、アドレス情報記憶部３０３には１つ以上のアドレス情報が記憶される。
【００４８】
アドレス情報は、例えば、ＭＡＣアドレス、ＩＰアドレス、サブネットマスク、通信装置が通信インタフェースを介して接続するネットワーク上のデフォルトゲートウェイのＭＡＣアドレス及びＩＰアドレス、ポート番号等を含むが、アドレス情報は、これらに限定されない。更に他の情報を含んでいても良い。なお、アドレス情報は、任意の方法により各通信インタフェースに設定される。アドレス情報を設定する任意の方法は、例えば、ユーザ又は任意のプログラムによる固定設定、ＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）、ＩＰＣＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）等である。
【００４９】
仮想インタフェース１０２には、複数の通信インタフェース１０１の各通信インタフェースと同様に、アドレス情報が設定されるが、そのアドレス情報は、任意の値から成る仮想のアドレス情報である。具体的には、仮想インタフェース１０２のアドレス情報は、少なくとも、仮想ＭＡＣアドレスと、仮想ＩＰアドレスと、仮想インタフェース１０２を介して接続する通信装置１００内部の仮想ネットワーク上のデフォルトゲートウェイである仮想デフォルトゲートウェイのＩＰアドレスとを含む。
【００５０】
アドレス情報管理部３０４は、複数の通信インタフェース１０１の各通信インタフェース、及び仮想インタフェース１０２に設定されるアドレス情報を取得し、アドレス情報記憶部３０３に記憶させる。また、アドレス情報管理部３０４は、リース期間切れや通信装置の移動に伴うハンドオーバーの発生等の理由によるアドレス情報の変更が発生したとき、アドレス情報の変更が発生した通信インタフェースのアドレス情報を改めて取得し、アドレス情報記憶部３０３に記憶させる。
【００５１】
経路表管理部３０５は、アドレス情報記憶部３０５に記憶されるアドレス情報に含まれる、複数の通信インタフェース１０１の各通信インタフェースに設定されるデフォルトゲートウェイ、及び仮想インタフェース１０２に設定される仮想デフォルトゲートウェイのうち、仮想デフォルトゲートウェイのみを、通信装置１００の通信スタック１０３が持つ経路表１０４に設定する。
【００５２】
図６は、第１の実施形態における経路表の構成例である。経路表管理部３０５により、経路表１０４は、図６のように設定される。複数の通信インタフェース１０１を介して接続する各ネットワークには、各通信インタフェースを介して通信を行う経路情報が設定される。また、デフォルトゲートウェイに関する経路情報は、仮想デフォルトゲートウェイの経路情報のみが設定される。
【００５３】
各通信インタフェースに設定されるデフォルトゲートウェイ及び仮想デフォルトゲートウェイのうち、仮想デフォルトゲートウェイのみを経路表１０４に設定することで、通信プログラム１０５が、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置と通信を行う場合、通信プログラム１０５から送信されるパケットに対しては、仮想デフォルトゲートウェイを使用して送信するように、通信スタック１０３上で経路制御が行われるようになる。具体的には、通信スタック１０３上で経路制御が行われた後、パケット転送部２００が通信プログラム１０５から送信されたパケットを仮想インタフェース１０２から受信する時点では、パケットの送信元ＭＡＣアドレスは、仮想インタフェース１０２に設定される仮想ＭＡＣアドレスに、パケットの送信先ＭＡＣアドレスは、仮想デフォルトゲートウェイのＭＡＣアドレスに、パケットの送信元ＩＰアドレスは、仮想インタフェース１０２に設定される仮想ＩＰアドレスに、パケットの送信先ＩＰアドレスは、送信先の通信装置のＩＰアドレスになる。
【００５４】
一方、通信プログラム１０５が、複数の通信インタフェース１０１を介して接続するネットワーク上にある通信装置と通信を行う場合、通信プログラム１０５から送信されるパケットに対して、送信先の通信装置が存在するネットワークに接続する通信インタフェースから送信するように、通信スタック１０３上で経路制御が行われる。具体的には、通信スタック１０３上で経路制御が行われた後、パケット転送部２００が通信プログラム１０５から送信されたパケットを送信先の通信装置が存在するネットワークに接続する通信インタフェースから受信する時点では、パケットの送信元ＭＡＣアドレスは、その通信インタフェースに設定されるＭＡＣアドレスに、パケットの送信先ＭＡＣアドレスは、送信先の通信装置のＭＡＣアドレスに、パケットの送信元ＩＰアドレスは、その通信インタフェースに設定されるＩＰアドレスに、パケットの送信先ＩＰアドレスは、送信先の通信装置のＩＰアドレスになる。
【００５５】
パケット転送ルール生成部３０６は、パケット転送部２００のフロー識別部２０３から送信された新規フロー検出通知を受信したとき、すなわち、パケット転送部２００からパケット転送ルールの生成を要求されたとき、新規フロー検出通知に含まれるフロー情報、パケット転送ルール記憶部３０１に記憶される使用インタフェース情報、及びアドレス情報記憶部３０３に記憶されるアドレス情報に基づき、パケット転送ルールを生成する。
【００５６】
パケット転送ルール生成部３０６におけるパケット転送ルールの生成方法について説明する。図７は、第１の実施形態における転送制御部がパケット転送ルールを生成する処理の例を示すフローチャートである。
【００５７】
パケット転送ルール生成部３０６は、新規フロー検出通知を受信したとき、新規フロー検出通知に含まれるフロー情報を参照し、フロー情報に含まれる受信ポート番号に基づき、パケットを受信した通信インタフェースを特定する。そして、パケットを受信した通信インタフェースのアドレス情報、及び仮想インタフェース１０２のアドレス情報を、アドレス情報管理部３０４を通じて取得する（ステップＳ２０１）。なお、パケットを受信した通信インタフェースは、複数の通信インタフェース１０１及び仮想インタフェース１０２のうちのいずれかの通信インタフェースである。
【００５８】
次に、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報を参照し、受信したパケットの送信元ＩＰアドレスを特定する。そして、パケットを受信した通信インタフェースのアドレス情報に含まれるサブネットマスクに基づき、特定した送信元ＩＰアドレスから求めたネットワークアドレスと、パケットを受信した通信インタフェースに設定されるＩＰアドレスから求めたネットワークアドレスとが等しいか否か判定する（ステップＳ２０２）。すなわち、受信したパケットの送信元ＩＰアドレスに基づき、そのパケットが、パケットを受信した通信インタフェースを介して接続するネットワーク上にある通信装置から送信されたパケットか否かを判定する。
【００５９】
特定した送信元ＩＰアドレスから求めたネットワークアドレスと、パケットを受信した通信インタフェースに設定されるＩＰアドレスから求めたネットワークアドレスとが等しくない場合（ステップＳ２０２におけるＮｏ）、パケットを受信した通信インタフェースを介して接続するネットワーク上にある通信装置ではなく、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置から送信されたパケットであると判断できる。
【００６０】
通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置と通信を行う場合、仮想インタフェース１０２に設定される仮想デフォルトゲートウェイのみが経路表１０４に設定されるため、通信スタック１０３の経路制御により、仮想インタフェース１０２からパケットが送信される。ゆえに、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置からパケットを受信する場合は、仮想インタフェース１０２でパケットが受信されるようにする対応が必要である。
【００６１】
そこで、特定した送信元ＩＰアドレスから求めたネットワークアドレスと、パケットを受信した通信インタフェースに設定されるＩＰアドレスから求めたネットワークアドレスとが等しくない場合、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報と、送信先ＭＡＣアドレスを仮想インタフェース１０２に設定される仮想ＭＡＣアドレスに、送信先ＩＰアドレスを仮想インタフェース１０２に設定される仮想ＩＰアドレスに書き換えるアクション（ステップＳ２０３）、及び受信したパケットを仮想インタフェース１０２に送信するアクション（ステップＳ２０４）から成るアクション情報とを含むパケット転送ルールを生成する。
【００６２】
そのようなパケット転送ルールに基づくパケット転送により、パケット転送部２００が受信したパケットは、仮想インタフェース１０２で受信されるようになる。
【００６３】
特定した送信元ＩＰアドレスから求めたネットワークアドレスと、パケットを受信した通信インタフェースに設定されるＩＰアドレスから求めたネットワークアドレスとが等しい場合（ステップＳ２０２におけるＹｅｓ）、特定した送信元ＩＰアドレスが、パケットを受信した通信インタフェースに設定されるＩＰアドレスと等しいか否か判定する（ステップＳ２０５）。
【００６４】
特定した送信元ＩＰアドレスが、パケットを受信した通信インタフェースに設定されるＩＰアドレスと等しくない場合（ステップＳ２０５におけるＮｏ）、パケットを受信した通信インタフェースを介して接続するネットワーク上にある通信装置から送信されたパケットであると判断できる。一方、特定した送信元ＩＰアドレスが、パケットを受信した通信インタフェースに設定されるＩＰアドレスと等しい場合（ステップＳ２０５におけるＹｅｓ）、通信プログラム１０５が送信したパケットであると判断できる。
【００６５】
特定した送信元ＩＰアドレスが、パケットを受信した通信インタフェースに設定されるＩＰアドレスと等しくない場合（ステップＳ２０５におけるＮｏ）、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報と、受信したパケットを通信スタック１０３に送信するアクション（ステップＳ２０６）から成るアクション情報とを含むパケット転送ルールを生成する。
【００６６】
そのようなパケット転送ルールに基づくパケット転送により、パケット転送部２００が受信したパケットは、そのままパケットを受信した通信インタフェースで受信されるようになる。
【００６７】
特定した送信元ＩＰアドレスが、パケットを受信した通信インタフェースに設定されるＩＰアドレスと等しい場合（ステップＳ２０５におけるＹｅｓ）、新規フロー検出通知に含まれるフロー情報に基づき、受信したパケットの送信先ＭＡＣアドレスを特定する。そして、特定した送信元ＭＡＣアドレスと、仮想インタフェース１０２に設定される仮想デフォルトゲートウェイのＭＡＣアドレスとが等しいか否か判定する（ステップＳ２０７）。
【００６８】
特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しい場合（ステップＳ２０７におけるＹｅｓ）、通信プログラム１０５が、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置に仮想デフォルトゲートウェイを使用して送信するパケットであると判断できる。一方、特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しくない場合（ステップＳ２０７におけるＮｏ）、通信プログラム１０５が、パケットを受信した通信インタフェースを介して接続するネットワーク上にある通信装置に送信するパケットであると判断できる。
【００６９】
特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しい場合（ステップＳ２０７におけるＹｅｓ）、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報に基づき、受信したパケットのフローに適合するフロー情報を含む使用インタフェース情報を、使用インタフェース情報管理部３０２を通じて取得する。そして、取得した使用インタフェース情報に含まれる複数の通信インタフェース１０１のうちのいずれかを一意に特定可能な情報に基づき、通信に使用する通信インタフェースを特定する（ステップＳ２０８）。なお、通信に使用する通信インタフェースは、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースである。
【００７０】
加えて、特定した通信に使用する通信インタフェースのアドレス情報を、アドレス情報管理部３０４を通じて取得する（ステップＳ２０９）。
【００７１】
仮想デフォルトゲートウェイは、仮想インタフェース１０２を介して接続される通信装置１００内部の仮想ネットワーク上のデフォルトゲートウェイである。しかしながら、経路表管理部３０５により設定される経路表１０４上にのみ存在する仮想的な存在であるため、パケット転送部２００が受信したパケットを、通信に使用する通信インタフェースに送信するだけでは、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置にパケットは送信されない。
【００７２】
通信に使用する通信インタフェースから通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置にパケットが送信されるようにするためには、通信に使用する通信インタフェースを介して接続するネットワーク上のデフォルトゲートウェイにパケットを送信する必要がある。
【００７３】
従って、仮想デフォルトゲートウェイが送信先であるパケットを、通信に使用する通信インタフェースを介して接続するネットワーク上のデフォルトゲートウェイに転送することで、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置にパケットを送信することが可能になると言える。
【００７４】
そこで、特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しい場合、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報と、送信元ＭＡＣアドレスを通信に使用する通信インタフェースに設定されたＭＡＣアドレスに、送信元ＩＰアドレスを通信に使用する通信インタフェースに設定されたＩＰアドレスに書き換えるアクション（ステップＳ２１０）、送信先ＭＡＣアドレスを通信に使用する通信インタフェースに設定されるデフォルトゲートウェイのＭＡＣアドレスに書き換えるアクション（ステップＳ２１１）、及び受信したパケットを通信に使用する通信インタフェースに送信するアクション（ステップＳ２１２）から成るアクション情報とを含むパケット転送ルールを生成する。
【００７５】
そのようなパケット転送ルールに基づくパケット転送により、パケット転送部２００が受信したパケットは、通信に使用する通信インタフェースを介して接続するネットワーク上のデフォルトゲートウェイに送信されるようになる。
【００７６】
特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しくない場合（ステップＳ２０７におけるＮｏ）、受信したパケットの送信元ＭＡＣアドレスは、パケットを受信した通信インタフェースに設定されるＭＡＣアドレスに、パケットの送信元ＩＰアドレスは、パケットを受信した通信インタフェースに設定されるＩＰアドレスに、受信したパケットの送信先ＭＡＣアドレスは、パケットを受信した通信インタフェースを介して接続するネットワーク上にある送信先の通信装置のＭＡＣアドレスに、パケットの送信先ＩＰアドレスは、パケットを受信した通信インタフェースを介して接続するネットワーク上にある送信先の通信装置のＩＰアドレスになるため、そのままパケットを受信した通信インタフェースから送信してやれば良い。
【００７７】
従って、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報と、受信したパケットを、パケットを受信した通信インタフェースに送信するアクション（ステップＳ２１３）から成るアクション情報とを含むパケット転送ルールを生成する。
【００７８】
そのようなパケット転送ルールに基づくパケット転送により、パケット転送部２００が受信したパケットは、そのままパケットを受信した通信インタフェースから送信先の通信装置に送信されるようになる。
【００７９】
パケットの送信に先んじて、通信スタック１０３は、送信先の通信装置のＩＰアドレスに基づき、送信先のＭＡＣアドレスを得るためのアドレス解決を行う。通信装置１００が複数の通信インタフェース１０１を介して接続するネットワーク上にある通信装置と通信を行う場合、各通信インタフェース上で通常のアドレス解決方法に従って、送信先のＭＡＣアドレスを得れば良い。一方、通信装置１００が直接接続するネットワーク以外のネットワークにある通信装置と通信を行う場合、通信スタック１０３がパケットを送信するためには、仮想デフォルトゲートウェイのＭＡＣアドレスが、パケット転送ルール生成部３０６がパケット転送ルールを生成するためには、通信に使用する通信インタフェースに設定されるデフォルトゲートウェイのＭＡＣアドレスが必要である。
【００８０】
アドレス解決処理においては、２種類のアドレス解決パケットを送受信する。２種類のアドレス解決パケットは、ＭＡＣアドレスを得ようとする通信装置に対して、ＭＡＣアドレスを送信するよう要求するためのアドレス解決要求パケット、及び要求を行った通信装置に対して、要求に応じてＭＡＣアドレスを含む応答を送信するためのアドレス解決応答パケットである。アドレス解決要求パケットは、例えば、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）リクエストパケットである。アドレス解決応答パケットは、例えば、ＡＲＰリプライパケットである。
【００８１】
アドレス解決要求パケットは、少なくとも、送信元ＭＡＣアドレス、送信先ＭＡＣアドレス、要求元の通信装置、具体的には、アドレス解決要求パケットを送信する通信装置のＭＡＣアドレス及びＩＰアドレスである要求元ＭＡＣアドレス及び要求元ＩＰアドレス、要求先の通信装置、具体的には、ＭＡＣアドレスを得ようとする通信装置のＭＡＣアドレス及びＩＰアドレスである要求先ＭＡＣアドレス及び要求先ＩＰアドレスを含む。なお、アドレス解決要求を行う時点では、送信先ＭＡＣアドレス及び要求先ＭＡＣアドレスは、不明であるため、それらのＭＡＣアドレスの値は、任意のＭＡＣアドレスの値になる。例えば、送信先ＭＡＣアドレスはブロードキャストアドレスに、要求先ＭＡＣアドレスは空の値になる。
【００８２】
アドレス解決応答パケットは、少なくとも、送信元ＭＡＣアドレス、送信先ＭＡＣアドレス、応答元の通信装置、具体的には、アドレス解決応答パケットを送信する通信装置のＭＡＣアドレス及びＩＰアドレスである応答元ＭＡＣアドレス及び応答元ＩＰアドレス、応答先の通信装置、具体的には、アドレス解決応答パケットを送信すべきアドレス解決要求パケットを送信した通信装置のＭＡＣアドレス及びＩＰアドレスである応答先ＭＡＣアドレス及び応答先ＩＰアドレスを含む。なお、アドレス解決要求により得ようとする通信装置のＭＡＣアドレスは、アドレス解決応答パケットに含まれる応答元のＭＡＣアドレスである。
【００８３】
仮想デフォルトゲートウェイは、経路表１０４上にのみ存在する仮想的な存在であるため、仮想デフォルトゲートウェイに対するアドレス解決要求パケットを送信しても、仮想デフォルトゲートウェイのＭＡＣアドレスを含むアドレス解決応答パケットは得られない。また、通信に使用する通信インタフェースに設定されるデフォルトゲートウェイは、経路表１０４上に存在しないため、通信スタック１０３が通信に使用する通信インタフェースに設定されるデフォルトゲートウェイに対してアドレス解決要求パケットを送信することはない。そのため、転送制御部３００は、仮想デフォルトゲートウェイのＭＡＣアドレス、及び通信に使用する通信インタフェースに設定されるデフォルトゲートウェイのＭＡＣアドレスを得るための処理を行う。
【００８４】
仮想デフォルトゲートウェイのＭＡＣアドレス、及び通信に使用する通信インタフェースに設定されるデフォルトゲートウェイのＭＡＣアドレスを得るための処理について説明する。通信スタック１０３が送信する仮想デフォルトゲートウェイに対するアドレス解決要求パケットを、パケット転送部２００が受信したとき、具体的には、仮想デフォルトゲートウェイに対するアドレス解決要求パケットを受信したことによるパケット転送部２００からの新規フロー検出通知を、転送制御部３００が受信したとき、転送制御部３００は、アドレス情報管理部３０４を通じて複数の通信インタフェース１０１の各通信インタフェースのアドレス情報を取得し、各通信インタフェースに設定されるデフォルトゲートウェイのＩＰアドレスを得る。そして、各デフォルトゲートウェイに対するアドレス解決要求パケットを生成し、生成したパケットを各通信インタフェースから送信する指示と共に、パケット転送部２００に送信する。パケット転送部２００は、その指示に従い、各デフォルトゲートウェイに対するアドレス解決要求パケットを送信する。
【００８５】
なお、仮想デフォルトゲートウェイに対するアドレス解決要求パケットを受信したときに、パケット転送部２００から新規フロー検出通知が送信されるようにするため、仮想デフォルトゲートウェイに対するアドレス解決要求パケットのフローに対するパケット転送ルールは、パケット転送部２００に設定しない。
【００８６】
パケット転送部２００から各デフォルトゲートウェイに対するアドレス解決要求パケットを送信することで、各デフォルトゲートウェイから、各デフォルトゲートウェイのＭＡＣアドレスを含むアドレス解決応答パケットが、通信装置１００に対して送信される。パケット転送部２００が、各デフォルトゲートウェイのＭＡＣアドレスを含むアドレス解決応答パケットを受信したとき、具体的には、各デフォルトゲートウェイのＭＡＣアドレスを含むアドレス解決応答パケットを受信したことによるパケット転送部２００からの新規フロー検出通知を、転送制御部３００が受信したとき、その新規フロー検出通知に含まれるフロー情報に基づき、各デフォルトゲートウェイのＭＡＣアドレスを取得し、取得した各デフォルトゲートウェイのＭＡＣアドレスを、アドレス情報管理部３０４を通じてアドレス情報記憶部３０３に記憶する。
【００８７】
各デフォルトゲートウェイのＭＡＣアドレスを含むアドレス解決応答パケットを受信したときにパケット転送部２００から新規フロー検出通知が送信されるようにするため、各デフォルトゲートウェイのＭＡＣアドレスを含むアドレス解決応答パケットのフローに対するパケット転送ルールは、パケット転送部２００に設定しない。
【００８８】
そして、全てのデフォルトゲートウェイからアドレス解決応答パケットを受信し、全てのデフォルトゲートウェイのＭＡＣアドレスが取得できた時点で、予め転送制御部３００に設定する任意の値から成る仮想ＭＡＣアドレスである仮想デフォルトゲートウェイのＭＡＣアドレスを含むアドレス解決応答パケットを生成し、生成したパケットを仮想インタフェース１０２から送信する。
【００８９】
上記のような処理を行うことで、通信スタック１０３がパケットを送信するために必要な仮想デフォルトゲートウェイのＭＡＣアドレス、及びパケット転送ルール生成部３０６がパケット転送ルールを生成するために必要な通信に使用する通信インタフェースに設定されるデフォルトゲートウェイのＭＡＣアドレスを得ることができる。
【００９０】
パケット転送部管理部３０７は、パケット転送部２００の動作を制御するための任意のプロトコルによりパケット転送部２００を管理する。パケット転送ルール生成部３０６がパケット転送ルールを生成したとき、パケット転送部管理部３０７は、生成したパケット転送ルールを設定指示と共に、パケット転送部２００に送信する。
【００９１】
パケット転送ルール生成部３０６のパケット転送ルール生成処理において、受信したパケットのフローに適合するフロー情報を含む使用インタフェース情報が、使用インタフェース情報記憶部３０１に存在しない場合もあり得る。その場合、予め複数の通信インタフェース１０１のうちのいずれかを、デフォルトの通信インタフェースに設定し、通信に使用する通信インタフェースとしてそのデフォルトの通信インタフェースを用いて、パケット転送ルールを生成しても良い。また、パケットを廃棄する等の、任意の内容のアクションを含むデフォルトのアクション情報を予め設定しておき、新規フロー検出通知に含まれるフロー情報、及びそのデフォルトのアクション情報に基づき、パケット転送ルールを生成しても良い。
【００９２】
また、受信したパケットのフローに適合するフロー情報を含む使用インタフェース情報に含まれる複数の通信インタフェース１０１のうちのいずれかを一意に特定可能な情報に、存在しない通信インタフェースの情報が設定されていた場合、パケットを廃棄する等の、そのような使用インタフェース情報に対するデフォルトのアクション情報を予め設定しておき、新規フロー検出通知に含まれるフロー情報、及びそのデフォルトのアクション情報に基づき、パケット転送ルールを生成しても良い。
【００９３】
更に、複数の通信インタフェース１０１の各通信インタフェースのアドレス情報に、デフォルトゲートウェイの情報が含まれない場合もあり得る。アドレス情報にデフォルトゲートウェイの情報が含まれない通信インタフェースを使用する場合、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置と通信を行うことはできない。そのような場合、使用インタフェース情報管理部３０２において、アドレス情報にデフォルトゲートウェイの情報が含まれない通信インタフェースを使用することを定める使用インタフェース情報を、設定できないようにする対応を行っても良い。また、そのような使用インタフェース情報に対するパケットを廃棄する等の、任意の内容のアクションを含むデフォルトのアクション情報を予め設定しておき、そのアクション情報に基づき、パケット転送ルールを生成しても良い。
【００９４】
ユーザ又は任意のプログラムにより、使用インタフェース情報管理部３０２を通じて使用インタフェース情報記憶部３０１に記憶される使用インタフェース情報が変更されたとき、変更された使用インタフェース情報に基づき生成されたパケット転送ルールも変更する必要がある。
【００９５】
使用インタフェース情報が変更されたとき、転送制御部３００は、変更された使用インタフェース情報に含まれるフロー情報に適合する全てのパケット転送ルールを、パケット転送部２００のパケット転送ルール記憶部２０１に記憶されているパケット転送ルールテーブルからパケット転送部管理部３０７を通じて取得し、取得した各パケット転送ルールの内容を、変更された使用インタフェース情報に基づく内容に変更し、変更した各パケット転送ルールを、変更を行う設定指示と共に、パケット転送部管理部３０７を通じてパケット転送部２００に送信することで、パケット転送ルールを変更する。若しくは、変更された使用インタフェース情報に含まれるフロー情報に適合する全てのパケット転送ルールを、パケット転送部管理部３０７を通じて削除し、改めてパケット転送ルールを生成するように促す対応を行っても良い。
【００９６】
本実施の形態では、仮想デフォルトゲートウェイのみを、通信装置１００の通信スタック１０３が持つ経路表１０４に設定することで、通信スタック１０３が行う経路制御において、経路表上に複数のデフォルトゲートウェイが存在することにより、どのデフォルトゲートウェイを使用して通信を行えば良いか分からず、通信不能に陥ってしまうことを回避できる。
【００９７】
通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置と通信を行う場合、通信スタック１０３が行う経路制御により、通信装置１００上で動作する任意の通信プログラム１０５から仮想デフォルトゲートウェイに送信されるパケットを、使用インタフェース情報管理部３０２を通じて設定される使用インタフェース情報により特定される通信に使用する通信インタフェースを介して接続されるネットワーク上のデフォルトゲートウェイに転送する。優位に設定した通信インタフェース以外の通信インタフェースを使用する場合、通信装置が直接接続するネットワーク以外のネットワーク上にある通信装置と通信することができない特許文献１記載の方法とは異なり、複数の通信インタフェース１０１のうちどの通信インタフェースを使用する場合でも、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置と通信することが可能である。ゆえに、複数の通信インタフェース１０１を介して接続するネットワークを同時に利用して通信を行うことを実現できる。
【００９８】
また、通信プログラム１０５に対して、ｐｉｎｇコマンドのような通信に使用する通信インタフェースを指定可能にする機能を実装する等の、特別な対応を必要としない。ネットワーク側からは、通信装置１００は、通常のＩＰ通信の仕組みに従って通信を行っているように見えるため、特定の機構や対向の通信装置を用意する等の、ネットワーク側の特別な対応を必要としない。かつ、特定の通信装置の任意のアドレスの情報を、予め登録しておく等の対応も必要なく、通信装置１００は、自律的に通信を行うことができる。
【００９９】
更に、通信プログラム１０５からは、通信に使用する通信インタフェースによらず、仮想インタフェース１０２を介し、仮想デフォルトゲートウェイを使用して通信が行われるように見えるため、通信に使用する通信インタフェースが変更された場合や、リース期間切れや通信装置の移動に伴うハンドオーバーの発生等の理由により通信インタフェースのアドレス情報に変化が発生した場合に、通信プログラム１０５側にそれを意識させることなしに通信を行うことができる。
【０１００】
フロー単位のネットワーク制御方式を利用したこと、及びフロー毎にどの通信インタフェースを使用して通信を行うのかを定める使用インタフェース情報を、ユーザ又は任意のプログラムから任意に設定可能にしたことにより、ユーザ又は任意のプログラムは、任意の要求や条件に基づき、フロー毎に通信に利用するネットワークを選択することができる。すなわち、異なる特性を持つトラフィックを送受信する通信プログラムであるアプリケーションは、いくつかのフローの集合と捉えられるので、フロー単位というより細かい粒度で、通信装置上で動作するアプリケーションがどのネットワークを利用して通信を行うのかについて任意に選択することを実現でき、通信装置の利便性の向上が期待できる。
【０１０１】
例えば、ユーザが、通信量の小さい電子メールを送受信するアプリケーションのトラフィック、具体的には、送信先ポート番号が２５番（ＳＭＴＰ、Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）又は１１０番（ＰＯＰ３、Ｐｏｓｔ  Ｏｆｆｉｃｅ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ３）のフローに対しては、３Ｇを使用することを定める使用インタフェース情報を設定し、Ｗｅｂ上で映像のストリーミング通信のような通信量の大きい通信を行うアプリケーションのトラフィック、具体的には、送信先ポート番号が８０番（ＨＴＴＰ、ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）のフローに対しては、無線ＬＡＮ３Ｇを使用することを定める使用インタフェース情報を設定することで、本発明の実施形態により、それぞれのトラフィックは、３Ｇ並びに無線ＬＡＮを利用して通信が行われるようになる。
【０１０２】
例えば、ユーザが、任意のネットワーク上にある通信装置との通信を許可しない場合、具体的には、送信元ＩＰアドレス又は送信先ＩＰアドレスが通信を許可しない通信装置のＩＰアドレスのフローに対しては、存在しない通信インタフェースを使用することを定める使用インタフェース情報を設定することで、本発明の実施形態により、通信を許可しない通信装置との間で送受信されるパケットを廃棄することができる。
【０１０３】
例えば、複数の通信インタフェース１０１の各通信インタフェースが通信可能か否か監視する通信装置１００上で動作するアプリケーションが、各通信インタフェースの状態に基づき、動的に使用インタフェース情報を設定することで、任意のフローの通信に利用するネットワークを動的に変更できる。無線ＬＡＮネットワークが切断され、通信不可になった場合は、無線ＬＡＮを使用することを定める使用インタフェース情報から、３Ｇを使用することを定める使用インタフェース情報に変更することで、本発明の実施形態により、任意のフローの通信は、３Ｇを利用して通信を行うようになる。
【０１０４】
例えば、複数の通信インタフェース１０１に含まれる無線インタフェースの受信電界強度を監視する通信装置１００上で動作するアプリケーションが、各無線インタフェースの受信電界強度に基づき、任意に設定した閾値より受信電界強度が大きい無線インタフェースを、通信に使用する通信インタフェースとして選択し、その無線インタフェースを使用することを定める使用インタフェース情報を設定することで、本発明の実施形態により、任意のフローの通信は、最も状態の良い無線インタフェースを利用して通信を行うようになる。
【０１０５】
例えば、複数の通信インタフェース１０１の各通信インタフェースのパケット送受信数を監視する通信装置１００上で動作するアプリケーションが、各通信インタフェースのパケット送受信数、及びユーザが予め設定したパケット送受信数の上限に基づき、任意のフローの通信に使用している通信インタフェースのパケット送受信数が上限に達したとき、他の通信インタフェース、若しくは存在しない通信インタフェースを使用することを定める使用インタフェース情報を設定することで、本発明の実施形態により、パケット送受信数が上限に達した通信インタフェースを使用する任意のフローに対して、他の通信インタフェースを使用して通信を行うようにする、若しくはパケットを廃棄するようにする等の対応を行うことができる。
【０１０６】
（実施形態２）
図８は、第２の実施形態における通信に係る要素に着目したより詳細な通信装置の構成例を示すブロック図である。第１の実施形態における通信装置の構成要素と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。第２の実施形態における通信装置１００のパケット転送部２００は、通信装置１００内部にブリッジ等の構造を構成する。ここでは、パケット転送部２００がブリッジを構成する場合を例として説明する。パケット転送部２００がブリッジを構成する場合、通信スタック１０３は、パケット転送部２００が構成するブリッジに接続する仮想インタフェース１０２、具体的には、ブリッジのローカルポートを端点としてパケットの送受信を行う必要がある。つまり、第１の実施形態のように、通信スタック１０３は、パケット転送部２００に接続する複数の通信インタフェース１０１を直接使用してパケットの送受信を行うことができない。そのため、第１の実施形態の方法を、第２の実施形態における通信装置にそのまま適用しても、複数の通信インタフェース１０１を介して接続するネットワークを同時に利用して通信を行うことは実現できない。
【０１０７】
そこで、第２の実施形態では、仮想インタフェース１０２を端点としてパケットの送受信が行われるように、仮想インタフェース１０２のＩＰアドレスの設定、及び通信スタック１０３が持つ経路表１０４の設定を行い、それらに基づくパケット転送ルールの生成処理を行うことで、フロー毎に通信に利用するネットワークを選択可能な、複数のネットワークを同時に利用した通信を行うことを実現する。
【０１０８】
第２の実施形態における仮想インタフェース１０２には、第１の実施形態と同様に、任意の値から成る仮想のアドレス情報が設定される。仮想インタフェース１０２のアドレス情報は、少なくとも、仮想ＭＡＣアドレスと、仮想ＩＰアドレスと、仮想デフォルトゲートウェイのＩＰアドレスとを含む。
【０１０９】
第２の実施形態におけるアドレス情報管理部３０４は、パケット転送部２００に接続する複数の通信インタフェース１０１の各インタフェースのアドレス情報、及び仮想インタフェース１０２のアドレス情報を取得し、アドレス情報記憶部３０３に記憶させる。更に、取得したアドレス情報に含まれる各通信インタフェースのＩＰアドレスを、仮想インタフェース１０２に設定する。それにより、第２の実施形態における仮想インタフェース１０２は、１つ以上のＩＰアドレス、具体的には、仮想ＩＰアドレス、及び各通信インタフェースのＩＰアドレスを持つ。
【０１１０】
第２の実施形態における経路表管理部３０５は、仮想インタフェース１０２に設定される仮想デフォルトゲートウェイのみを、通信スタック１０３が持つ経路表１０４に設定する。更に、複数の通信インタフェース１０１を介して接続する各ネットワークに各通信インタフェースを介して通信を行う経路情報を、経路表１０４から削除する。そして、それらの代わりに、複数の通信インタフェース１０１を介して接続する各ネットワークに仮想インタフェース１０２を介して通信を行う経路情報を、経路表１０４に設定する。
【０１１１】
図９は、第２の実施形態における経路表の構成例である。第２の実施形態における経路表管理部３０５により、経路表１０４は、図９のように設定される。複数の通信インタフェース１０１を介して接続する各ネットワークには、第１の実施形態とは異なり、仮想インタフェース１０２を介して通信を行う経路情報が設定される。デフォルトゲートウェイに関する経路情報は、第１の実施形態と同様に、仮想デフォルトゲートウェイの経路情報のみが設定される。
【０１１２】
上記のような仮想インタフェース１０２のＩＰアドレスの設定、及び経路表１０４の設定を行うことで、通信スタック１０３において、全てのパケットの送受信を、仮想インタフェース１０２を介して行うことが可能になる。具体的には、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置と通信を行う場合だけでなく、複数の通信インタフェース１０１を介して接続するネットワーク上にある通信装置と通信を行う場合にも、仮想インタフェース１０２を端点としてパケットの送受信が行われるようになる。
【０１１３】
通信装置１００上で動作する任意の通信プログラム１０５が、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置と通信を行う場合、通信スタック１０３上で経路制御が行われた後、パケット転送部２００が通信プログラム１０５から送信されたパケットを仮想インタフェース１０２から受信する時点では、パケットの送信元ＭＡＣアドレスは、仮想インタフェース１０２に設定される仮想ＭＡＣアドレスに、パケットの送信先ＭＡＣアドレスは、仮想デフォルトゲートウェイのＭＡＣアドレスに、パケットの送信元ＩＰアドレスは、仮想インタフェース１０２に設定される仮想ＩＰアドレスに、パケットの送信先ＩＰアドレスは、送信先の通信装置のＩＰアドレスになる。
【０１１４】
一方、通信装置１００上で動作する任意の通信プログラム１０５が、複数の通信インタフェース１０１を介して接続するネットワーク上にある通信装置と通信を行う場合、通信スタック１０３上で経路制御が行われた後、パケット転送部２００が通信プログラム１０５から送信されたパケットを仮想インタフェース１０２から受信する時点では、パケットの送信元ＭＡＣアドレスは、仮想インタフェース１０２に設定される仮想ＭＡＣアドレスに、パケットの送信先ＭＡＣアドレスは、送信先である通信装置のＭＡＣアドレスに、パケットの送信元ＩＰアドレスは、アドレス情報管理部３０４により仮想インタフェース１０２に設定される、送信先の通信装置が存在するネットワークに接続する通信インタフェースのＩＰアドレスに、パケットの送信先ＩＰアドレスは、送信先の通信装置のＩＰアドレスになる。
【０１１５】
第２の実施形態におけるパケット転送ルール生成部３０６におけるパケット転送ルールの生成方法について説明する。図１０は、第２の実施形態における転送制御部がパケット転送ルールを生成する処理の例を示すフローチャートである。
【０１１６】
パケット転送ルール生成部３０６は、新規フロー検出通知を受信したとき、新規フロー検出通知に含まれるフロー情報を参照し、フロー情報に含まれる受信ポート番号に基づき、パケットを受信した通信インタフェースを特定する。そして、パケットを受信した通信インタフェースのアドレス情報、及び仮想インタフェース１０２のアドレス情報を、アドレス情報管理部３０４を通じて取得する（ステップＳ３０１）。なお、パケットを受信した通信インタフェースは、複数の通信インタフェース１０１及び仮想インタフェース１０２のうちのいずれかの通信インタフェースである。
【０１１７】
次に、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報を参照し、受信したパケットの送信元ＩＰアドレスを特定する。パケットを受信した通信インタフェースのアドレス情報に含まれるサブネットマスクに基づき、特定した送信元ＩＰアドレスから求めたネットワークアドレスと、仮想インタフェース１０２に設定される複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスから求めたネットワークアドレスのうちのいずれかとが等しいか否か判定する（ステップＳ３０２）。すなわち、受信したパケットの送信元ＩＰアドレスに基づき、そのパケットが、パケットを受信した通信インタフェースを介して接続するネットワーク上にある通信装置から送信されたパケットか否かを判定する。
【０１１８】
特定した送信元ＩＰアドレスから求めたネットワークアドレスと、仮想インタフェース１０２に設定される、複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスから求めたネットワークアドレスのうちのいずれかとが等しくない場合（ステップＳ３０２におけるＮｏ）、パケットを受信した通信インタフェースを介して接続するネットワーク上にある通信装置ではなく、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置から送信されたパケットであると判断できる。
【０１１９】
通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置と通信を行う場合、第１の実施形態と同様に、仮想インタフェース１０２に設定される仮想デフォルトゲートウェイのみが経路表１０４に設定されるため、通信スタック１０３の経路制御により、仮想インタフェース１０２からパケットが送信される。ゆえに、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置からパケットを受信する場合は、仮想インタフェース１０２でパケットが受信されるようにする対応が必要である。
【０１２０】
そこで、特定した送信元ＩＰアドレスから求めたネットワークアドレスと、仮想インタフェース１０２に設定される複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスから求めたネットワークアドレスのうちのいずれかとが等しくない場合、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報と、送信先ＩＰアドレスを仮想インタフェース１０２に設定される仮想ＩＰアドレスに書き換えるアクション（ステップＳ３０３）、送信先ＭＡＣアドレスを仮想インタフェース１０２に設定される仮想ＭＡＣアドレスに書き換えるアクション（ステップＳ３０４）、及び受信したパケットを仮想インタフェース１０２に送信するアクション（ステップＳ３０５）から成るアクション情報とを含むパケット転送ルールを生成する。
【０１２１】
そのようなパケット転送ルールに基づくパケット転送により、パケット転送部２００が受信したパケットは、仮想インタフェース１０２で受信されるようになる。
【０１２２】
特定した送信元ＩＰアドレスから求めたネットワークアドレスと、仮想インタフェース１０２に設定される複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスから求めたネットワークアドレスのうちのいずれかとが等しい場合（ステップＳ３０２におけるＹｅｓ）、特定した送信元ＩＰアドレスが、仮想インタフェース１０２に設定される複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスのうちのいずれかと等しいか否か判定する（ステップＳ３０６）。
【０１２３】
特定した送信元ＩＰアドレスが、仮想インタフェース１０２に設定される複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスのうちのいずれかと等しくない場合（ステップＳ３０６におけるＮｏ）、パケットを受信した通信インタフェースを介して接続するネットワーク上にある通信装置から送信されたパケットであると判断できる。一方、特定した送信元ＩＰアドレスが、仮想インタフェース１０２に設定される複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスのうちのいずれかと等しい場合（ステップＳ３０６におけるＹｅｓ）、通信プログラム１０５が送信したパケットであると判断できる。
【０１２４】
特定した送信元ＩＰアドレスが、仮想インタフェース１０２に設定される複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスのうちのいずれかと等しくない場合（ステップＳ３０６におけるＮｏ）、第２の実施形態における通信装置１００においては、仮想インタフェース１０２を端点としてパケットの送受信を行う必要があることから、仮想インタフェース１０２でパケットが受信されるようにする対応が必要である。
【０１２５】
そこで、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報と、送信先ＭＡＣアドレスを仮想インタフェース１０２に設定される仮想ＭＡＣアドレスに書き換えるアクション（ステップＳ３０４）、及び受信したパケットを仮想インタフェース１０２に送信するアクション（ステップＳ３０５）から成るアクション情報とを含むパケット転送ルールを生成する。
【０１２６】
そのようなパケット転送ルールに基づくパケット転送により、パケット転送部２００が受信したパケットは、仮想インタフェース１０２で受信されるようになる。
【０１２７】
特定した送信元ＩＰアドレスが、仮想インタフェース１０２に設定される複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスのうちのいずれかと等しい場合（ステップＳ３０６におけるＹｅｓ）、新規フロー検出通知に含まれるフロー情報に基づき、受信したパケットの送信先ＭＡＣアドレスを特定する。そして、特定した送信元ＭＡＣアドレスと、仮想インタフェース１０２に設定される仮想デフォルトゲートウェイのＭＡＣアドレスとが等しいか否か判定する（ステップＳ３０７）。
【０１２８】
特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しい場合（ステップＳ３０７におけるＹｅｓ）、通信プログラム１０５が、通信装置１００が直接接続するネットワーク以外のネットワーク上にある通信装置に、仮想デフォルトゲートウェイを使用して送信するパケットであると判断できる。一方、特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しくない場合（ステップＳ３０７におけるＮｏ）、通信プログラム１０５が、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースを介して接続するネットワーク上にある通信装置に送信するパケットであると判断できる。
【０１２９】
特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しい場合（ステップＳ３０７におけるＹｅｓ）、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報に基づき、受信したパケットのフローに適合するフロー情報を含む使用インタフェース情報を、使用インタフェース情報管理部３０２を通じて取得する。そして、取得した使用インタフェース情報に含まれる複数の通信インタフェース１０１のうちのいずれかを一意に特定可能な情報に基づき、通信に使用する通信インタフェースを特定する（ステップＳ３０８）。なお、通信に使用する通信インタフェースは、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースである。
【０１３０】
加えて、特定した通信に使用する通信インタフェースのアドレス情報を、アドレス情報管理部３０４を通じて取得する（ステップＳ３０９）。
【０１３１】
そして、仮想デフォルトゲートウェイが送信先であるパケットを、通信に使用する通信インタフェースを介して接続するネットワーク上のデフォルトゲートウェイに転送されるようにするために、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報と、送信元ＭＡＣアドレスを通信に使用する通信インタフェースに設定されたＭＡＣアドレスに、送信元ＩＰアドレスを通信に使用する通信インタフェースに設定されたＩＰアドレスに書き換えるアクション（ステップＳ３１０）、送信先ＭＡＣアドレスを通信に使用する通信インタフェースに設定されるデフォルトゲートウェイのＭＡＣアドレスに書き換えるアクション（ステップＳ３１１）、及び受信したパケットを通信に使用する通信インタフェースに送信するアクション（ステップＳ３１２）から成るアクション情報とを含むパケット転送ルールを生成する。
【０１３２】
そのようなパケット転送ルールに基づくパケット転送により、パケット転送部２００が受信したパケットは、通信に使用する通信インタフェースを介して接続するネットワーク上のデフォルトゲートウェイに送信されるようになる。
【０１３３】
特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しくない場合（ステップＳ３０７におけるＮｏ）、通信プログラム１０５が、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースを介して接続するネットワーク上にある通信装置に送信するパケットであると判断できる。第１の実施形態においては、通信スタック１０３は、複数の通信インタフェース１０１を直接使用してパケットの送受信を行うことが可能なため、複数の通信インタフェース１０１を介して接続するネットワーク上にある通信装置と通信を行う場合、パケットを受信した通信インタフェースから送信先の通信装置にパケットを送信すれば良い。しかし、第２の実施形態のように、仮想インタフェース１０２を端点としてパケットの送受信を行う場合、通信プログラム１０５から送信されたパケットは、送信先の通信装置が、通信端末１００が直接接続するネットワーク以外のネットワーク上にある通信装置か、複数の通信インタフェース１０１を介して接続するネットワーク上にある通信装置かによらず、パケット転送部２００は、仮想インタフェース１０２から送信されたパケットを受信する。すなわち、複数の通信インタフェース１０１を介して接続するネットワーク上にある通信装置と通信を行う場合にも、通信に使用する通信インタフェースを特定する必要がある。
【０１３４】
第２の実施形態においては、複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスを、仮想インタフェース１０２に設定したこと、及び複数の通信インタフェース１０１を介して接続する各ネットワークには、仮想インタフェース１０２を介して通信を行う経路情報を経路表１０４に設定したことにより、通信スタック１０３上で経路制御が行われた後、パケット転送部２００がパケットを受信する時点では、パケットの送信元ＩＰアドレスは、送信先の通信装置が存在するネットワークに接続する通信インタフェースのＩＰアドレスになる。ゆえに、パケットの送信元ＩＰアドレスに基づき、通信に使用する通信インタフェースを特定することができる。
【０１３５】
特定した送信元ＭＡＣアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しくない場合、パケット転送ルール生成部３０６は、複数の通信インタフェース１０１の各通信インタフェースのアドレス情報を、アドレス情報管理部３０４を通じて取得する（ステップＳ３１３）。
【０１３６】
そして、特定した送信元ＩＰアドレスに基づき、特定した送信元ＩＰアドレスと、設定されるＩＰアドレスとが等しい、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースを、通信に使用する通信インタフェースとして特定する（ステップＳ３１４）。
【０１３７】
特定した通信に使用する通信インタフェースに基づき、パケット転送ルール生成部３０６は、新規フロー検出通知に含まれるフロー情報と、送信元ＭＡＣアドレスを通信に使用する通信インタフェースに設定されるＭＡＣアドレスに書き換えるアクション（ステップＳ３１５）、及び受信したパケットを通信に使用する通信インタフェースに送信するアクション（ステップＳ３１６）から成るアクション情報とを含むパケット転送ルールを生成する。
【０１３８】
そのようなパケット転送ルールに基づくパケット転送により、パケット転送部２００が受信したパケットは、送信先の通信装置が存在するネットワークに接続する通信インタフェースから送信先の通信装置に送信されるようになる。
【０１３９】
第２の実施形態における通信スタック１０３は、第１の実施形態と同様に、パケットの送信に先んじて、送信先の通信装置のＩＰアドレスに基づき、送信先のＭＡＣアドレスを得るためのアドレス解決を行う。しかし、第２の実施形態における通信装置１００は、第１の実施形態とは異なり、仮想インタフェース１０２を端点としてパケットの送受信を行うため、複数の通信インタフェース１０１の各通信インタフェース上で直接アドレス解決を行うことができない。そのため、通常のアドレス解決方法では、送信先のＭＡＣアドレスを得ることだけでなく、他の通信装置からの複数の通信インタフェース１０１の各通信インタフェースに対するアドレス解決要求に対応することもできない。
【０１４０】
そこで、第２の実施形態における転送制御部３００は、第２の実施形態における通信装置１００においてアドレス解決を可能にするための処理を行う。図１１は、第２の実施形態における転送制御部のアドレス解決処理の例を示すフローチャートである。
【０１４１】
パケット転送部２００がアドレス解決パケットを受信したとき、パケット転送部２００は、アドレス解決パケットのフローに対する新規フロー検出通知を転送制御部３００に送信する（ステップＳ４０１）。第２の実施形態における転送制御部のアドレス解決処理においては、アドレス解決パケットを受信したときに、パケット転送部２００から新規フロー検出通知が送信されるようにするため、アドレス解決パケットのフローに対するパケット転送ルールは、パケット転送部２００に設定しない。なお、アドレス解決パケットのフローに対する新規フロー検出通知には、アドレス解決パケットそのものが含まれているものとする。
【０１４２】
転送制御部３００は、アドレス解決パケットのフローに対する新規フロー検出通知を受信したとき、複数の通信インタフェース１０１の各通信インタフェースのアドレス情報、及び仮想インタフェース１０２のアドレス情報を、アドレス情報管理部３０４を通じて取得する（ステップＳ４０２）。そして、アドレス解決パケットの内容を参照し、受信したアドレス解決パケットが、アドレス解決要求パケットなのか、アドレス解決応答パケットなのか判定する（ステップＳ４０３）。
【０１４３】
受信したアドレス解決パケットが、アドレス解決要求パケットであった場合（ステップＳ４０３における要求）、アドレス解決要求パケットに含まれる要求先ＩＰアドレスを参照し、要求先ＩＰアドレスと、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースのＩＰアドレスとが等しいか否かに基づき、受信したアドレス解決要求パケットが、複数の通信インタフェース１０１の各通信インタフェースに対して要求を行うアドレス解決要求パケットなのか否か判定する（ステップＳ４０４）。
【０１４４】
複数の通信インタフェース１０１の各通信インタフェースに対して要求を行うアドレス解決要求パケットであった場合（ステップＳ４０４におけるＹｅｓ）、アドレス解決要求パケットを受信した通信インタフェースのＭＡＣアドレスを含むアドレス解決応答パケットを生成する。その理由は、受信したアドレス解決要求パケットを仮想インタフェース１０２に転送し、通信スタック１０３のアドレス解決処理によりアドレス解決応答パケットを生成する場合、アドレス解決要求パケットを受信した通信インタフェースのＭＡＣアドレスではなく、仮想インタフェース１０２に設定される仮想ＭＡＣアドレスがアドレス解決応答パケットに含まれてしまうためである。
【０１４５】
転送制御部３００は、アドレス解決要求パケットを受信した通信インタフェースのＭＡＣアドレスを含むアドレス解決応答パケットを生成し（ステップＳ４０５）、パケットを受信した通信インタフェースから生成したパケットを要求元の通信装置に送信する（ステップＳ４０６）。
【０１４６】
アドレス解決要求パケットを受信した通信インタフェースのＭＡＣアドレスを含むアドレス解決応答パケットを生成し、パケットを受信した通信インタフェースから要求元の通信装置に送信することで、他の通信装置からのアドレス解決要求に対応することができる。
【０１４７】
また、上記のような処理を行うことで、他の通信装置から送信されたアドレス解決要求パケットが仮想インタフェース１０２に転送されることはないため、仮想インタフェース１０２から他の通信装置に対するアドレス解決応答パケットが送信されることはないと言える。
【０１４８】
受信したアドレス解決要求パケットが、複数の通信インタフェース１０１の各通信インタフェースに対して要求を行うアドレス解決要求パケットでない場合（ステップＳ４０４におけるＮｏ）、仮想インタフェース１０２を介して通信スタック１０３が他の通信装置に送信したアドレス解決要求パケットであると判断できる。なお、アドレス解決要求パケットを受信した通信インタフェースが、仮想インタフェース１０２以外である場合、通信装置１００に関係しないアドレス解決要求パケットであると判断できるので、受信したパケットを廃棄する（図示せず）。
【０１４９】
受信したアドレス解決要求パケットが、複数の通信インタフェース１０１の各通信インタフェースに対して要求を行うアドレス解決要求パケットでない場合、転送制御部３００は、アドレス解決要求パケットに含まれる要求先ＩＰアドレスと、仮想デフォルトゲートウェイのＭＡＣアドレスとが等しいか否かに基づき、受信したアドレス解決要求パケットが、仮想デフォルトゲートウェイに対して要求を行うアドレス解決要求パケットなのか否か判定する（ステップＳ４０７）。
【０１５０】
受信したアドレス解決要求パケットが、仮想デフォルトゲートウェイに対して要求を行うアドレス解決要求パケットであった場合（ステップＳ４０７におけるＹｅｓ）、第１の実施形態と同様に、各通信インタフェースに設定されるデフォルトゲートウェイに対するアドレス解決要求を行う。一方、受信したアドレス解決要求パケットが、仮想デフォルトゲートウェイに対して要求を行うアドレス解決要求パケットでない場合（ステップＳ４０７におけるＮｏ）、仮想インタフェース１０２を介して通信スタック１０３が、複数の通信インタフェース１０１を介して接続するネットワーク上にある通信装置に送信したアドレス解決要求パケットであると判断できる。
【０１５１】
受信したアドレス解決要求パケットが、仮想デフォルトゲートウェイに対して要求を行うアドレス解決要求パケットであった場合（ステップＳ４０７におけるＹｅｓ）、転送制御部３００は、各通信インタフェースに設定されるデフォルトゲートウェイに対するアドレス解決要求パケットを生成し（ステップＳ４０８）、生成したパケットを各通信インタフェースから送信する指示と共に、パケット転送部２００に送信する（ステップＳ４０９）。パケット転送部２００は、その指示に従い、各デフォルトゲートウェイに対するアドレス解決要求のパケットを送信する。
【０１５２】
パケット転送部２００から各デフォルトゲートウェイに対するアドレス解決要求を送信することで、各デフォルトゲートウェイから、各デフォルトゲートウェイのＭＡＣアドレスを含むアドレス解決応答パケットが送信される。
【０１５３】
受信したアドレス解決要求パケットが、仮想デフォルトゲートウェイに対して要求を行うアドレス解決要求パケットでない場合（ステップＳ４０７におけるＮｏ）、受信したアドレス解決要求パケットは、仮想インタフェース１０２を介して通信スタック１０３が、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースを介して接続するネットワーク上にある通信装置に送信したアドレス解決要求パケットであるため、アドレス解決要求パケットがその通信装置に送信されるようにする対応が必要である。
【０１５４】
第２の実施形態においては、複数の通信インタフェース１０１の各通信インタフェースのＩＰアドレスを、仮想インタフェース１０２に設定したこと、及び複数の通信インタフェース１０１を介して接続する各ネットワークには、仮想インタフェース１０２を介して通信を行う経路情報を経路表１０４に設定したことにより、仮想インタフェース１０２を介して通信スタック１０３が送信するアドレス解決要求パケットに含まれる要求元ＩＰアドレスは、ＭＡＣアドレスを得ようとする通信装置が存在するネットワークに接続する複数の通信インタフェース１０１のうちのいずれかの通信インタフェースのＩＰアドレスになる。ゆえに、要求元ＩＰアドレスに基づき、通信に使用する通信インタフェースを特定することができる。
【０１５５】
受信したアドレス解決要求パケットが、仮想デフォルトゲートウェイに対して要求を行うアドレス解決要求パケットでない場合、転送制御部３００は、アドレス解決要求パケットに含まれる要求元ＩＰアドレスと、設定されるＩＰアドレスとが等しい、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースを、通信に使用する通信インタフェースとして特定する（ステップＳ４１０）。
【０１５６】
特定した通信に使用する通信インタフェースに基づき、受信したアドレス解決要求パケットに含まれる送信元ＭＡＣアドレス及び要求元ＭＡＣアドレスを、通信に使用する通信インタフェースのＭＡＣアドレスに書き換え（ステップＳ４１１）、送信元ＭＡＣアドレス及び要求元ＭＡＣアドレスを書き換えたアドレス解決要求パケットを、通信に使用する通信インタフェースから送信する（ステップＳ４１２）。
【０１５７】
要求元ＩＰアドレスに基づき、通信に使用する通信インタフェースを特定し、送信元ＭＡＣアドレス及び要求元ＭＡＣアドレスを通信に使用する通信インタフェースのＭＡＣアドレスに書き換え、通信に使用する通信インタフェースから送信することで、アドレス解決要求パケットは、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースを介して接続するネットワーク上にある通信装置に送信されるようになる。
【０１５８】
受信したアドレス解決パケットが、アドレス解決応答パケットであった場合（ステップＳ４０３における応答）、アドレス解決応答パケットに含まれる応答先ＩＰアドレスを参照し、応答先ＩＰアドレスと、複数の通信インタフェース１０１のうちのいずれかの通信インタフェースのＩＰアドレスとが等しいか否かに基づき、受信したアドレス解決応答パケットが、複数の通信インタフェース１０１の各通信インタフェースに対する応答であるアドレス解決応答パケットなのか否か判定する（ステップＳ４１３）。
【０１５９】
受信したアドレス解決応答パケットが、複数の通信インタフェース１０１の各通信インタフェースに対する応答であるアドレス解決応答パケットでない場合（ステップＳ４１３におけるＮｏ）、アドレス解決応答パケットを受信した通信インタフェースが、仮想インタフェース１０２以外である場合、通信装置１００に関係しないアドレス解決要求パケットであると判断できるので、受信したパケットを廃棄する（Ｓ４１４）。
【０１６０】
他の通信装置からアドレス解決要求パケットを受信したとき、パケットを受信した通信インタフェースのＭＡＣアドレスを含むアドレス解決応答パケットを生成し、要求元の通信装置に送信することにより、他の通信装置から送信されたアドレス解決要求パケットが仮想インタフェース１０２に転送されることはないため、仮想インタフェース１０２から他の通信装置に対するアドレス解決応答パケットが送信されることはない。そのため、仮想インタフェース１０２から送信されるアドレス解決応答パケットについては、考慮しなくても良い。
【０１６１】
受信したアドレス解決応答パケットが、複数の通信インタフェース１０１の各通信インタフェースに対する応答であるアドレス解決応答パケットであった場合（ステップＳ４１３におけるＹｅｓ）、アドレス解決応答パケットに含まれる応答元ＩＰアドレスと、各通信インタフェースに設定されるデフォルトゲートウェイのＭＡＣアドレスとが等しいか否かに基づき、受信したアドレス解決応答パケットが、各通信インタフェースに設定されるデフォルトゲートウェイからの応答であるアドレス解決応答パケットなのか否か判定する（ステップＳ４１５）。
【０１６２】
受信したアドレス解決応答パケットが、各デフォルトゲートウェイからの応答であるアドレス解決応答パケットであった場合（ステップＳ４１５におけるＹｅｓ）、第１の実施形態と同様に、各デフォルトゲートウェイのＭＡＣアドレスの記憶、及び仮想デフォルトゲートウェイに関するアドレス解決応答を行う。
【０１６３】
各デフォルトゲートウェイからの応答であるアドレス解決応答パケットに含まれる応答元ＭＡＣアドレスにより、各デフォルトゲートウェイのＭＡＣアドレスが取得できる。取得した各デフォルトゲートウェイのＭＡＣアドレスは、アドレス情報管理部３０４を通じて記憶する（ステップＳ４１６）。そして、全てのデフォルトゲートウェイのＭＡＣアドレスを取得できたか否か判定し（ステップＳ４１７）、全て取得できた時点で（ステップＳ４１７におけるＹｅｓ）、転送制御部３００は、仮想デフォルトゲートウェイの仮想ＭＡＣアドレスを含むアドレス解決応答パケットを生成し（ステップＳ４１８）、生成したパケットを仮想インタフェース１０２から送信する指示と共に、パケット転送部２００に送信する（ステップＳ４１９）。パケット転送部２００は、その指示に従い、仮想デフォルトゲートウェイの仮想ＭＡＣアドレスを含むアドレス解決応答パケットを送信する。
【０１６４】
全てのデフォルトゲートウェイのＭＡＣアドレスを取得できた時点で、仮想デフォルトゲートウェイの仮想ＭＡＣアドレスを含むアドレス解決応答パケットを生成し、仮想インタフェース１０２に送信することで、通信スタック１０３がパケットを送信するために必要な仮想デフォルトゲートウェイのＭＡＣアドレス、及び、パケット転送ルール生成部３０６がパケット転送ルールを生成するために必要な通信に使用する通信インタフェースに設定されるデフォルトゲートウェイのＭＡＣアドレスを得ることができる。
【０１６５】
受信したアドレス解決応答パケットが、各デフォルトゲートウェイからの応答であるアドレス解決応答パケットでない場合（ステップＳ４１５におけるＮｏ）、仮想インタフェース１０２を介して通信スタック１０３が送信し、要求先の送信装置に転送されるアドレス解決要求パケットに対する応答として、要求先の送信装置から送信されたアドレス解決応答パケットであると言える。そのアドレス解決応答パケットに含まれる応答先ＩＰアドレスは、要求先の送信装置にアドレス解決要求パケットを送信する際に使用した複数の通信インタフェース１０１のうちのいずれかの通信インタフェースのＩＰアドレスになる。通信スタック１０３は、仮想インタフェース１０２を介してアドレス解決要求パケットを送信するため、仮想インタフェース１０２でアドレス解決応答パケットが受信されるようにする対応が必要である。
【０１６６】
その場合、受信したアドレス解決応答パケットに含まれる送信先ＭＡＣアドレス及び応答先ＭＡＣアドレスを、仮想インタフェース１０２のＭＡＣアドレスに書き換え（ステップＳ４２０）、送信先ＭＡＣアドレス及び応答先ＭＡＣアドレスを書き換えたアドレス解決応答パケットを、仮想インタフェース１０２から送信する（ステップＳ４２１）。
【０１６７】
受信したアドレス解決応答パケットに含まれる送信先ＭＡＣアドレス及び応答先ＭＡＣアドレスを仮想インタフェース１０２のＭＡＣアドレスに書き換え、仮想インタフェース１０２から送信することで、仮想インタフェース１０２上で、複数の通信インタフェース１０１を介して接続するネットワーク上にある送信装置のＭＡＣアドレスを得るためのアドレス解決を行うことができる。
【０１６８】
（実施形態３）
第１、第２の実施形態においては、ユーザ又は任意のプログラムが、使用インタフェース情報管理部３０２を通じて使用インタフェース情報記憶部３０１に、フロー毎の使用インタフェース情報を設定するが、同一のフローに対して、異なる複数の通信インタフェースを使用して通信を行うように、フロー毎に複数の使用インタフェース情報を設定しても良い。
【０１６９】
図１２は、第３の実施形態における使用インタフェース情報記憶部に記憶される使用インタフェース情報の構成例である。使用インタフェース情報記憶部３０２上に、同一のフロー情報と、それぞれが異なる通信インタフェースを指す複数の通信インタフェース１０１のうちのいずれかを一意に特定可能な情報とを含む使用インタフェース情報が複数存在する場合、フロー情報だけでは通信に使用する通信インタフェースを特定することはできない。そこで、通信に使用する通信インタフェースを特定するためのパラメータとして、いくつかの情報を使用インタフェース情報に含める。図１２の構成例では、使用インタフェース情報は、通信に使用する通信インタフェースを特定するためのパラメータとして、各使用インタフェース情報の優先度と、通信インタフェースが通信可能な状態にあるか否かを示す通信可否と、受信電界強度の閾値と、送受信するパケット数の上限とを含む。
【０１７０】
第３の実施形態における転送制御部３００のパケット転送ルール生成部３０６が行うパケット転送ルール生成処理において、パケット転送ルール生成部３０６は、フロー情報、及び通信に使用する通信インタフェースを特定するためのパラメータにより、複数の使用インタフェース情報のうち、どの使用インタフェース情報に基づきパケット転送ルールを生成するか選択する。例えば、通信可能な通信インタフェースのうち優先度の値が最も小さい通信インタフェースを使用する、受信電界強度の値が閾値より大きい無線インタフェースを使用する、送受信したパケット数を記憶しておき、パケット数が上限に達した通信インタフェースは使用しない等、いくつかのパラメータの組み合せに従って、使用インタフェース情報を選択することで、任意の要求又は条件に合う通信インタフェースを、動的に選択して通信を行うことができる。
【０１７１】
以上、本発明の実施の形態を例示により説明したが、本発明はこれに限定されるものではなく、請求項に記載された範囲において、目的に応じて変更、変形することが可能である。
【産業上の利用可能性】
【０１７２】
以上説明したように、本発明によれば、フロー毎に適切なネットワークを利用して通信等を行うことができるという優れた効果を有し、１つ以上の通信インタフェースを備える通信装置、例えば、パーソナルコンピュータやスマートフォン等に好適に適用される。
【符号の説明】
【０１７３】
１００  通信装置
１０１  複数の通信インタフェース
１０２  仮想インタフェース
１０３  通信スタック
１０４  経路表
１０５  通信プログラム
２００  パケット転送部
２０１  パケット転送ルール記憶部
２０２  パケット転送ルール管理部
２０３  フロー識別部
２０４  アクション実行部
３００  転送制御部
３０１  使用インタフェース情報記憶部
３０２  使用インタフェース情報管理部
３０３  アドレス情報記憶部
３０４  アドレス情報管理部
３０５  経路表管理部
３０６  パケット転送ルール生成部
３０７  パケット転送部管理部
【図１】
2014053719.tif 000003
【図２】
2014053719.tif 000004
【図３】
2014053719.tif 000005
【図４】
2014053719.tif 000006
【図５】
2014053719.tif 000007
【図６】
2014053719.tif 000008
【図７】
2014053719.tif 000009
【図８】
2014053719.tif 000010
【図９】
2014053719.tif 000011
【図１０】
2014053719.tif 000012
【図１１】
2014053719.tif 000013
【図１２】
2014053719.tif 000014