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