(57)【要約】【課題】パケット送信元コンピュータ側で動的にパケット転送経路選択制御を可能とする。【解決手段】本発明の一態様に係る経路選択システムは、同一通信先端末への複数の通信経路をルーティングテーブル１４０に登録する通信経路登録部１８０と、通信経路ごとに通信先端末までのパケット往復時間をルーティングテーブル１４０に登録するＲＴＴ登録部１９０と、パケット送信時に、パケット往復時間に基づいて通信経路を選択する通信経路選択部１７０とを備えるものである。【選択図】図１
2010239473.tif 000002
【特許請求の範囲】
【請求項１】
同一通信先端末への複数の通信経路をルーティングテーブルに登録する通信経路登録部と、
前記通信経路ごとに前記通信先端末までのパケット往復時間を前記ルーティングテーブルに登録するパケット往復時間登録部と、
パケット送信時に、前記パケット往復時間に基づいて前記通信経路を選択する通信経路選択部と、
を備える経路選択システム。
【請求項２】
前記通信経路選択部は、前記複数の通信経路のうち最も前記パケット往復時間が短い通信経路を選択することを特徴とする請求項１に記載の経路選択システム。
【請求項３】
前記パケット往復時間が登録されていない通信経路がある場合、前記通信経路選択部は当該パケット往復時間が登録されていない通信経路を選択し、
前記パケット往復時間登録部は、選択された通信経路のパケット往復時間を前記ルーティングテーブルに登録することを特徴とする請求項１又は２に記載の経路選択システム。
【請求項４】
前記パケット往復時間が登録されていない通信経路が複数ある場合、前記通信経路選択部は、前記ルーティングテーブルに登録されたMetricや、パケット送信時に使用するネットワークＩ／Ｆのパケット送受信量又はエラーパケット受信量に基づいて前記通信経路を選択することを特徴とする請求項４に記載の経路選択システム。
【請求項５】
前記通信経路ごとに定期的にパケット往復時間を測定し、登録するパケット往復時間測定デーモンをさらに備える請求項１又は２に記載の経路選択システム。
【請求項６】
同一通信先端末への複数の通信経路をルーティングテーブルに登録し、
前記通信経路ごとに前記通信先端末までのパケット往復時間を前記ルーティングテーブルに登録し、
パケット送信時に、前記パケット往復時間に基づいて前記通信経路を選択する経路選択方法。
【請求項７】
前記複数の通信経路のうち最も前記パケット往復時間が短い通信経路を選択することを特徴とする請求項６に記載の経路選択方法。
【請求項８】
前記パケット往復時間が登録されていない通信経路がある場合、当該パケット往復時間が登録されていない通信経路を選択し、
選択された通信経路のパケット往復時間を前記ルーティングテーブルに登録することを特徴とする請求項６又は７に記載の経路選択方法。
【請求項９】
前記パケット往復時間が登録されていない通信経路が複数ある場合、前記ルーティングテーブルに登録されたMetricや、パケット送信時に使用するネットワークＩ／Ｆのパケット送受信量又はエラーパケット受信量に基づいて前記通信経路を選択することを特徴とする請求項８に記載の経路選択方法。
【請求項１０】
前記通信経路ごとに定期的にパケット往復時間を測定し、登録することを特徴とする請求項６又は７に記載の経路選択方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、経路選択システム及び経路選択方法に関し、特に、ネットワーク状態を考慮した経路選択システム及び経路選択方法に関する。
【背景技術】
【０００２】
コンピュータネットワークにおいて、サーバ端末やクライアント端末となるコンピュータはネットワークにパケットを送信する場合、ルーティングテーブルに登録された通信経路にパケットを送信する。
【０００３】
ルーティングテーブルに通信経路を登録する方法は、（１）手動で静的に通信経路を登録する方法と、（２）ルーティングプロトコル（ＲＩＰ（Routing Information Protocol）、ＯＳＰＦ（Open Shortest Path First）等）で動的に通信経路を登録する方法がある。
【０００４】
（１）の場合、登録した通信経路は動的には変更することができない。このため、登録した通信経路上でネットワーク障害が発生し通信不能に陥ると、通信先との通信ができなくなる。
【０００５】
（２）の場合、ネットワーク障害が発生しても、代替経路がある場合はその代替経路をルーティングテーブルに通信経路として再登録する。このため、通信経路のネットワーク障害や動的変更に柔軟に対応することが可能である。
【０００６】
しかし、上記のいずれの方法でも、ルーティングテーブルには同一アドレス宛の通信経路は１つしか登録できない。このため、同一アドレスへの通信経路が複数ある場合でも、コンピュータは常に１つの通信経路しか利用できない。
【０００７】
このため、ルーティングテーブルに登録されている通信経路に転送パケットが集中してしまい、パケットネットワークに出力するネットワークＩ／Ｆの負荷が高くなってしまう。場合によっては、ネットワーク回線のトラフィック量が上昇し、輻輳等を招く要因となりえる。
【０００８】
ＴＣＰ（Transmission Control Protocol）通信では輻輳等が発生した場合、パケットの再送を行い、パケットの転送ロストを防いでいる。しかし、パケットの再送を行うことにより端末間でのデータ転送時間が増加する。また、ICMP（Internet Control Message Protocol）/UDP（User Datagram Protocol）通信の場合、再送機能はないのでパケットをロストしてしまう。
【０００９】
この様な問題に対して、特許文献１では、ネットワークを構成するスイッチ（パケット転送中継装置）に予め２つの通信経路を準備しておき、輻輳発生時には第二候補の通信経路を経由するようにパケット転送を制御するシステムが提案されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平８−１３０５４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１に記載のシステムでは、ネットワーク任せのパケット転送制御となっており、パケットの送信元となるコンピュータでの柔軟なパケット転送制御をすることができない。どのようなネットワークにおいても通信相手とのパケット転送制御が可能となるように、コンピュータでの動的パケット転送制御をいかに実現するかが課題となる。
【００１２】
本発明は、このような事情を背景としてなされたものであり、本発明の目的は、パケット送信元コンピュータがネットワークの状態を考慮してパケット転送制御を可能とする経路選択システム及び経路選択方法を提供することである。
【課題を解決するための手段】
【００１３】
本発明の一態様に係る経路選択システムは、同一通信先端末への複数の通信経路をルーティングテーブルに登録する通信経路登録部と、前記通信経路ごとに前記通信先端末までのパケット往復時間を前記ルーティングテーブルに登録するパケット往復時間登録部と、パケット送信時に、前記パケット往復時間に基づいて前記通信経路を選択する通信経路選択部とを備えるものである。
【００１４】
本発明の他の態様に係る経路選択方法は、同一通信先端末への複数の通信経路をルーティングテーブルに登録し、前記通信経路ごとに前記通信先端末までのパケット往復時間を前記ルーティングテーブルに登録し、パケット送信時に、前記パケット往復時間に基づいて前記通信経路を選択する。
【発明の効果】
【００１５】
本発明によれば、ネットワーク任せのパケット転送制御でない、パケット送信元コンピュータ側で動的にパケット転送制御を可能とする経路選択システム及び経路選択方法を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１に係る経路選択システムの構成を示す図である。
【図２】実施の形態１に係る経路選択システムのルーティングテーブルの構成を示す図である。
【図３】実施の形態１に係る経路選択システムにおける経路選択動作を説明するためのフロー図である。
【図４】実施の形態１に係る経路選択システムにおける経路登録動作を説明するためのフロー図である。
【図５】実施の形態１に係る経路選択システムにおけるパケット往復時間登録動作を説明するためのフロー図である。
【図６】経路情報パケット受信時のパケット処理動作を説明するための図である。
【図７】経路情報パケット受信時のルーティングテーブルの推移を示す図である。
【図８】データパケット送信し、ＲＴＴ情報が更新されるときのパケット処理動作を説明するための図である。
【図９】データパケット送信した後、ＡＣＫ応答を受信したときのルーティングテーブルの推移を示す図である。
【図１０】ＲＴＴ測定デーモン起動時のパケット処理動作を説明するための図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態について図面を参照して詳細に説明する。
実施の形態１．
本発明の実施の形態１に係る経路選択システムについて、図１を参照して説明する。図１は、ネットワークスタック１３０内の本実施の形態に係る経路選択システムの構造を示す図である。図１に示すように、本実施の形態に係る経路選択システムは、ルーティングテーブル１４０、通信経路選択部１７０、通信経路登録部１８０、パケット往復時間（ＲＴＴ：Round Trip Time）登録部１９０を備えている。
【００１８】
ルーティングテーブル１４０は、自コンピュータが接続されているネットワーク内のホストアドレス及びネットワークアドレス（通信先端末）に対する複数の通信経路が登録されているテーブルである。
【００１９】
図２に、ルーティングテーブル１４０の構成を示す。図２に示すように、ルーティングテーブル１４０は、Network Destination１４０−１、Netmask１４０−２、Gateway１４０−３、Interface１４０−４、ＲＴＴ１４０−５、Metric１４０−６、通信経路エントリ１４０ａ−１〜１４０ｃ−１、１４０ａ−２〜１４０ｃ−２、１４０ａ−３〜１４０ｃ−３、１４０ｄを含んでいる。
【００２０】
ＲＴＴ１４０−５は、複数の通信経路エントリのそれぞれで到達することが可能な端末とのパケット往復転送時間である。なお、Network Destination１４０−１、Netmask１４０−２、Gateway１４０−３、Interface１４０−４、Metric１４０−６は、ルーティングテーブルとして既知の情報であるため説明は省略する。
【００２１】
通信経路選択部１７０は、アプリケーションが送信するデータパケットの転送先を選択する機能を有している。図３に、通信経路選択部１７０の動作フローが示されている。通信経路選択部１７０における経路選択動作については、後に詳述する。
【００２２】
通信経路登録部１８０は、ネットワークから受信した経路情報パケットに含まれる通信経路情報を利用して、ルーティングテーブル１４０に通信経路情報を登録・削除する機能を有している。図４に、通信経路登録部１８０の動作フローが示されている。通信経路登録部１８０における経路登録動作については、後に詳述する。
【００２３】
ＲＴＴ登録部１９０は、送信パケットに対する目的端末への往復転送時間を計測し、ルーティングテーブル１４０にＲＴＴ情報として登録する機能を有している。図５にＲＴＴ登録部１９０の動作フローが示されている。ＲＴＴ登録部１９０におけるパケット往復時間登録動作については、後に詳述する。
【００２４】
次に、本実施の形態に係る経路選択方法について説明する。まず、図４、６、７を参照して、経路情報パケットによるルーティングテーブル１４０の更新処理について詳細に説明する。
【００２５】
図４は、通信経路登録部１８０における経路登録動作を示す図である。図６は、ネットワークからの経路情報パケット受信時のパケット処理動作の一例を説明するための図である。図７は、ネットワークからの経路情報パケット受信時のルーティングテーブル１４０の推移の一例を示す図である。
【００２６】
図６に示すように、コンピュータ１００は、アプリケーション１１０、ＯＳ１２０、ネットワークスタック１３０、ドライバ１５０ａ、１５０ｂ、ネットワークＩ／Ｆ１６０ａ、１６０ｂを有している。ネットワークスタック１３０は、図１で示した本実施の形態に係る経路選択システムを備える。コンピュータ１００に接続されるネットワークには、ルータ２００ａ〜２００ｄ、端末コンピュータ３００、４００、５００が含まれる。
【００２７】
ここでは、コンピュータ１００が、ルータ２００ａからの経路情報パケット→ルータ２００ｂからの経路情報パケット→ルータ２００ｃからの経路情報パケットの順番で経路情報パケットを受信した場合について説明する。
【００２８】
また、ここでは、各ルータ２００ａ〜２００ｃからの経路情報パケットが、それぞれ３つのネットワークアドレスへの通信経路情報で構成されている場合について説明する。図６に示すように、ルータ２００ａから経路情報パケットは、172.1.1.0（255.255.255.0）と192.168.1.0（255.255.255.0）と195.1.1.0（255.255.255.0）の３つのネットワークアドレスへの通信経路情報で構成されている。
【００２９】
ルータ２００ｂからの経路情報パケットは、172.1.1.0（255.255.255.0）と192.168.1.0（255.255.255.0）と195.1.1.0（255.255.255.0）の３つのネットワークアドレスへの通信経路情報で構成されている。ルータ２００ｃからの経路情報パケットは、172.1.1.0（255.255.255.0）と192.168.1.0（255.255.255.0）と195.1.1.0（255.255.255.0）の３つネットワークアドレスへの通信経路情報で構成されている。
【００３０】
最初に、ネットワークＩ／Ｆ１６０ａがルータ２００ａからの経路情報パケットを受信した場合（図６に示す（１））に関して説明する。ルータ２００ａからの経路情報パケットをネットワークＩ／Ｆ１６０ａが受信すると（図４、１８０−１Ｙｅｓ）、ネットワークＩ／Ｆ１６０ａはネットワークスタック１３０内の通信経路登録部１８０に経路情報パケットを引き渡す。
【００３１】
経路情報パケットを受け取った通信経路登録部１８０は、受信した経路情報パケットを構成している通信経路情報を確認し、未処理の通信経路情報があるか否かを判断する（１８０−２）。ルータ２００ａからの通信経路情報パケットは、上述した３つのネットワークアドレスに対応する通信経路情報で構成されている。これら３つのネットワークアドレスに対応する通信経路情報が未処理である。
【００３２】
未処理の通信経路情報がある場合（１８０−２、Ｙｅｓ）、通信経路情報毎にルーティングテーブル１４０への登録を確認する（１８０−３）。まず、ネットワークアドレス172.1.1.0（255.255.255.0）の通信経路情報に関して、ルーティングテーブル１４０に該当するネットワークアドレスへの通信経路情報があるか確認する（１８０−３）。
【００３３】
図７に示すように、ルーティングテーブル１４０は、初期状態でデフォルトの通信経路１４０ｄしか登録されていない。該当するネットワークアドレスに対応する通信経路情報がないため（１８０−３、Ｎｏ）、ルーティングテーブル１４０に新規通信経路エントリの追加を行い、通信経路（１４０ａ−１）を登録する（１８０−８）。そして、通信経路エントリに対応する経路有効時間を設定する（１８０−７）。
【００３４】
次に、図４の１８０−２に戻り、未処理の通信経路情報があるか否かを判断する。ここでは、３つの通信経路情報のうちの２つが未処理であるため、１８０−３に進む（１８０−２、Ｙｅｓ）。そして、ネットワークアドレス192.168.1.0（255.255.255.0）の通信経路情報に関して、ルーティングテーブル１４０に該当するネットワークアドレスへの通信経路情報があるか確認する（１８０−３）。
【００３５】
このとき、ルーティングテーブル１４０には、通信経路（１４０ａ−１）とデフォルトの通信経路（１４０ｄ）のみ登録されている。該当するネットワークアドレスに対応する通信経路情報はないため、ルーティングテーブル１４０に新規通信経路エントリの追加を行い、通信経路（１４０ａ−２）を登録する（１８０−８）。そして、通信経路エントリに対応する経路有効時間を更新する（１８０−７）。
【００３６】
次に、再度１８０−２に戻り、未処理の通信経路情報があるか否かを判断する。ここでは、３つの通信経路情報のうちの１つが未処理であるため、さらに１８０−３に進む（１８０−２、Ｙｅｓ）。そして、ネットワークアドレス195.1.1.0（255.255.255.0）の通信経路情報に関して、ルーティングテーブル１４０に該当するネットワークアドレスへの通信経路情報があるか確認する（１８０−３）。
【００３７】
このとき、ルーティングテーブル１４０には、通信経路（１４０ａ−１）、通信経路（１４０ａ−２）とデフォルトの通信経路（１４０ｄ）しか登録されていない。該当するネットワークアドレスに対応する通信経路情報はないため、ルーティングテーブル１４０に新規通信経路エントリの追加を行い、通信経路（１４０ａ−３）を登録する（１８０−８）。そして、当該通信経路エントリ（１４０ａ−３）に対応する経路有効時間を更新する（１８０−７）。
【００３８】
これで、ルータ２００ａからの通信経路情報パケットを構成していた通信経路情報に対する処理が完了し、未処理の通信経路情報がなくなる（１８０−２、Ｎｏ）。次に、現段階でルーティングテーブル１４０に登録されている通信経路エントリ（１４０ａ−１〜１４０ａ−３）に対する経路有効時間の確認を行う（１８０−９〜１８０−１２）。
【００３９】
ここでは、通信経路エントリ（１４０ａ−１〜１４０ａ−３）は登録したばかりなので経路有効時間はオーバーしない（１８０−１０、Ｎｏ）。このため、ルーティングテーブル１４０にこれらの通信経路エントリ（１４０ａ−１〜１４０ａ−３）を登録したまま、当該通信経路エントリが最後の通信経路エントリであるか否かが判断され（１８０−２）、最後の通信経路エントリである場合には、処理を終了する。これにより、ルーティングテーブル１４０は、図７の状態（１）のようになる。
【００４０】
なお、経路有効時間の確認（１８０−９〜１８０−１２）は、ルーティングテーブル１４０から無効となった通信経路エントリを削除する目的で行う。経路情報パケットにより登録された通信経路エントリは定期的更新を前提としており、更新がかからない通信経路エントリは、実際のネットワーク上に存在しない通信経路となっている可能性があるためである。
【００４１】
このような無効通信経路をルーティングテーブル１４０から削除するために経路有効時間を設定している。ネットワーク上に存在する通信経路であれば、常に経路情報パケットに含まれるため、経路情報パケット受信時にルーティングテーブル１４０の通信経路エントリが更新され、ルーティングテーブル１４０から削除されることはない。
【００４２】
次に、ルータ２００ａからの経路情報パケット処理後、ネットワークＩ／Ｆ１６０ｂがルータ２００ｂからの経路情報パケットを受信した場合（図６に示す（２））に関して説明する。
【００４３】
ルータ２００ｂから経路情報パケットを受信したネットワークＩ／Ｆ１６０ｂは、ネットワークスタック１３０内の通信経路登録部１８０に経路情報パケットを引き渡す。経路情報パケットを受け取った通信経路登録部１８０は、受信した経路情報パケットを構成している通信経路情報を確認し、未処理の通信経路情報があるか否かを判断する（１８０−２）。
【００４４】
ルータ２００ｂからの通信経路情報パケットも、上述のように３つのネットワークアドレスに対応する通信経路情報で構成されている。これら３つのネットワークアドレスに対応する通信経路情報は未処理である（１８０−２、Ｙｅｓ）ため、通信経路情報毎にルーティングテーブル１４０への登録を確認する（１８０−３）。
【００４５】
まず、ネットワークアドレス172.1.1.0（255.255.255.0）の通信経路情報に関して、ルーティングテーブル１４０に該当するネットワークアドレスへの通信経路情報があるか確認する（１８０−３）。
【００４６】
このとき、ルーティングテーブル１４０には、通信経路（１４０ａ−１〜１４０ａ−３）及びデフォルトの通信経路（１４０ｄ）が既に登録済みである。このため、該当するネットワークアドレスに対応する通信経路情報は存在しているので、Gateway情報の確認を行い、Gateway情報が一致するか否かを判断する（１８０−４）。
【００４７】
登録済みの経路情報エントリのGatewayは10.1.1.252に対して、処理中の通信経路情報のGatewayは133.1.1.253と異なる。このため、ルーティングテーブル１４０に新規通信経路エントリの追加を行い、通信経路（１４０ｂ−１）を登録し（１８０−８）、通信経路エントリに対応する経路有効時間を設定する（１８０−７）。
【００４８】
次に、ネットワークアドレス192.168.1.0（255.255.255.0）の通信経路情報に関して、ルーティングテーブル１４０に該当するネットワークアドレスへの通信経路情報があるか確認する（１８０−３）。
【００４９】
このとき、ルーティングテーブル１４０には、通信経路（１４０ａ−１〜１４０ａ−３、１４０ｂ−１）及びデフォルトの通信経路（１４０ｄ）が既に登録済みである。このため、該当するネットワークアドレスに対応する通信経路情報は存在しているので、Gateway情報の確認を行う（１８０−４）。
【００５０】
登録済みの経路情報エントリのGatewayは10.1.1.252に対して、処理中の通信経路情報のGatewayは133.1.1.253と異なる。このため、ルーティングテーブル１４０に新規通信経路エントリの追加を行い、通信経路（１４０ｂ−２）を登録し（１８０−８）、通信経路エントリに対応する経路有効時間を設定する（１８０−７）。
【００５１】
次に、ネットワークアドレス195.1.1.0（255.255.255.0）の通信経路情報に関して、ルーティングテーブル１４０に該当するネットワークアドレスへの通信経路情報があるか確認する（１８０−３）。
【００５２】
この時ルーティングテーブル１４０には、通信経路（１４０ａ−１〜１４０ａ−３、１４０ｂ−１〜１４０ｂ−２）及びデフォルトの通信経路（１４０ｄ）が既に登録済みである。このため、該当するネットワークアドレスに対応する通信経路情報は存在しているので、Gateway情報の確認を行う（１８０−４）。
【００５３】
登録済みの経路情報エントリのGatewayは10.1.1.252に対して、処理中の通信経路情報のGatewayは133.1.1.253と異なる。このため、ルーティングテーブル１４０に新規通信経路エントリの追加を行い、通信経路（１４０ｂ−３）を登録し（１８０−８）、通信経路エントリに対応する経路有効時間を設定する（１８０−７）。
【００５４】
これで、ルータ２００ｂからの通信経路情報パケットを構成していた通信経路情報に対する処理が完了し、未処理の通信経路情報がなくなる（１８０−２、Ｎｏ）次に、現段階でルーティングテーブル１４０に登録されている通信経路エントリ（１４０ａ−１〜１４０ａ−３、１４０ｂ−１〜１４０ｂ−３）に対する経路有効時間の確認を行う（１８０−９〜１８０−１２）。
【００５５】
確認を行った結果、経路有効時間をオーバーしている通信経路エントリが存在する場合、その通信経路エントリをルーティングテーブル１４０から削除する（１８０−１１）。ここでは、経路有効時間をオーバーしている通信経路エントリはないものとする。このため、ルーティングテーブル１４０は、図７の状態（２）のようになる。
【００５６】
最後に、ネットワークＩ／Ｆ１６０ａがルータ２００ｃからの経路情報パケットを受信した場合（図６に示す（３））に関して説明する。ルータ２００ｃから経路情報パケットを受信したネットワークＩ／Ｆ１６０ａは、ネットワークスタック１３０内の通信経路登録部１８０に経路情報パケットを引き渡す。経路情報パケットを受け取った通信経路登録部１８０は、受信した経路情報パケットを構成している通信経路情報を確認し、未処理の通信経路情報があるか否かを判断する（１８０−２）。
【００５７】
ルータ２００ｃからの通信経路情報パケットも、上述のように３つのネットワークアドレスに対応する通信経路情報で構成されている。これら３つのネットワークアドレスに対応する通信経路情報が未処理である（１８０−２、Ｙｅｓ）ため、通信経路情報毎にルーティングテーブル１４０への登録を確認する（１８０−３）。
【００５８】
まず、ネットワークアドレス172.1.1.0（255.255.255.0）の通信経路情報に関して、ルーティングテーブル１４０に該当するネットワークアドレスへの通信経路情報があるか確認する（１８０−３）。
【００５９】
このとき、ルーティングテーブル１４０には、通信経路（１４０ａ−１〜１４０ａ−３、１４０ｂ−１〜１４０ｂ−３）及びデフォルトの通信経路（１４０ｄ）が既に登録済みである。該当するネットワークアドレスに対応する通信経路情報は存在しているので、Gateway情報の確認を行う（１８０−４）。
【００６０】
登録済みの経路情報エントリのGatewayは10.1.1.252と133.1.1.253に対して、処理中の通信経路情報のGatewayは10.1.1.251と異なる。このため、ルーティングテーブル１４０に新規通信経路エントリの追加を行い、通信経路（１４０ｃ−１）を登録し（１８０−８）、通信経路エントリに対応する経路有効時間を設定する（１８０−７）。
【００６１】
次に、ネットワークアドレス192.168.1.0（255.255.255.0）の通信経路情報に関して、ルーティングテーブル１４０に該当するネットワークアドレスへの通信経路情報があるか確認する（１８０−３）。
【００６２】
このとき、ルーティングテーブル１４０には、通信経路（１４０ａ−１〜１４０ｂ−３、１４０ｃ−１）及びデフォルトの通信経路（１４０ｄ）が既に登録済みである。該当するネットワークアドレスに対応する通信経路情報は存在しているので、Gateway情報の確認を行う（１８０−４）。
【００６３】
登録済みの経路情報エントリのGatewayは10.1.1.252と133.1.1.253に対して、処理中の通信経路情報のGatewayは10.1.1.251と異なる。このため、ルーティングテーブル１４０に新規通信経路エントリの追加を行い、通信経路（１４０ｃ−２）を登録し（１８０−８）、通信経路エントリに対応する経路有効時間を設定する（１８０−７）。
【００６４】
次に、ネットワークアドレス195.1.1.0（255.255.255.0）の通信経路情報に関して、ルーティングテーブル１４０に該当するネットワークアドレスへの通信経路情報があるか確認する（１８０−３）。
【００６５】
このとき、ルーティングテーブル１４０には、通信経路（１４０ａ−１〜１４０ａ−３、１４０ｂ−１〜１４０ｂ−３、１４０ｃ−１〜１４０ｃ−２）及びデフォルトの通信経路（１４０ｄ）が既に登録済みである。該当するネットワークアドレスに対応する通信経路情報は存在しているので、Gateway情報の確認を行う（１８０−４）。
【００６６】
登録済みの経路情報エントリのGatewayは10.1.1.252と133.1.1.253に対して、処理中の通信経路情報のGatewayは10.1.1.251と異なる。このため、ルーティングテーブル１４０に新規通信経路エントリの追加を行い、通信経路（１４０ｃ−３）を登録し（１８０−８）、通信経路エントリに対応する経路有効時間を設定する（１８０−７）。
【００６７】
これで、ルータ２００ｃからの通信経路情報パケットを構成していた通信経路情報に対する処理が完了し、未処理の通信経路情報がなくなる（１８０−２、Ｎｏ）。次に、現段階でルーティングテーブル１４０に登録されている通信経路エントリ（１４０ａ−１〜１４０ａ−３、１４０ｂ−１〜１４０ｂ−３、１４０ｃ−１〜１４０ｃ−３）に対する経路有効時間の確認を行う（１８０−９〜１８０−１２）。
【００６８】
確認を行った結果、経路有効時間をオーバーしている、通信経路エントリが存在する場合、その通信経路エントリをルーティングテーブル１４０から削除する（１８０−１１）。ここでは、経路有効時間をオーバーしている通信経路エントリはないものとする。このため、ルーティングテーブル１４０は、図７の状態（３）のようになる。
【００６９】
また、通信経路登録部１８０は、経路情報パケットを受信した場合だけでなく、定期的に動作する。定期動作では、ルーティングテーブル１４０の各通信経路エントリに対する経路有効時間の確認を行う（１８０−９〜１８０−１２）。確認を行った結果、経路有効時間をオーバーしている、通信経路エントリが存在する場合、その通信経路エントリをルーティングテーブル１４０から削除する（１８０−１１）。
【００７０】
次に、上述した図及び図３、図５を参照して、ルーティングテーブル１４０へのＲＴＴ登録処理について詳細に説明する。図３は、通信経路選択部１７０における通信経路選択動作を説明するためのフロー図である。図５は、ＲＴＴ登録部１９０におけるＲＴＴ登録処理動作を説明するためのフロー図である。ここでは、図６に示すコンピュータ１００が、端末コンピュータ３００に対してデータパケットを送信した場合の動作について説明する。
【００７１】
まず、アプリケーション１１０が、端末コンピュータ３００（ＩＰアドレス：192.168.1.100）に対してデータを送信するために、転送データを準備してネットワークＡＰＩ（Application Program Interface）のsend命令を実行する。
【００７２】
send命令によりデータとパケット送信指示を受けたネットワークスタック１３０の通信経路選択部１７０はルーティングテーブル１４０を検索し（１７０−１）、ルーティングテーブル１４０にコンピュータ３００のネットワークアドレス（192.168.1.0）に該当する通信経路があるか否かを判断する（１７０−２）。
【００７３】
送信アドレスと一致する通信経路がない場合（１７０−２、Ｎｏ）、通信経路としてデフォルトＧＷを選択し（１７０−６）、選択したデフォルトＧＷアドレスをパケットの転送宛先として設定する（１７０−９）。
【００７４】
送信アドレスと一致する通信経路がある場合（１７０−２、Ｙｅｓ）、通信経路候補が複数あるか否かが判断される（１７０−３）。通信経路候補が１つしかない場合（１７０−３、Ｎｏ）、当該送信アドレスと一致する通信経路がパケットの転送宛先として設定される（１７０−８）。
【００７５】
ここで、図７を参照すると、ネットワークアドレス（192.168.1.0）への通信経路は１４０ａ−１と１４０ｂ−１と１４０ｃ−１の３つの候補がある。通信経路選択部１７０は、図３に示す動作フローに従い（１７０−３、Ｙｅｓ）、ネットワークＩ／Ｆの負荷分散を行うか否かを判断する（１７０−４）。ネットワークＩ／Ｆの負荷分散を行わない場合には（１７０−４、Ｎｏ）、候補通信経路のうちＲＴＴが小さい通信経路が選択される（１７０−７）。
【００７６】
ネットワークＩ／Ｆの負荷分散を行う場合（１７０−４、Ｙｅｓ）、分散可能な経路が存在するかが判断される（１７０−５）。分散可能な経路が存在しない場合には（１７０−５、Ｎｏ）、同様に候補通信経路のうちＲＴＴが小さい通信経路が選択される（１７０−７）。
【００７７】
しかし、現時点ではＲＴＴは計測されておらず、３候補ともＲＴＴ=０であり、差がない。このため、ここでは送信元から宛先までの距離であるMetricが小さい経路が選択されるようにする。これらの３つの通信経路の候補では、１４０ａ−２と１４０ｂ−２がMetric=１であり、１４０ｃ−２はMetric=２である。従って、この時点で１４０ｃ−２は候補から外れる。
【００７８】
さらに候補を絞り込むために、残った２候補（１４０ａ−２と１４０ｂ−２）に関してネットワークＩ／Ｆを比較する。１４０ａ−２は10.1.1.1を使用しており、１４０ｂ−２は133.1.1.2を使用している。各々使用しているネットワークＩ／Ｆが異なるので、各ネットワークＩ／Ｆのパケット情報（送受信パケット数とエラーパケット受信数）を比較する。
【００７９】
ここでは１４０ａ−２のネットワークＩ／Ｆが１４０ｂ−２のネットワークＩ／Ｆよりも優れていた（送受信パケット数が少ない。エラーパケット受信数が少ない）と仮定すると、送信経路として１４０ａ−２が選択され、パケットを送信する宛先（Gateway：10.1.1.252）とパケットを送信するネットワークＩ／Ｆ１６０ａ（10.1.1.1）が決定される。
【００８０】
なお、最終的に複数の通信経路候補が残って１つに特定できない場合は、例えば、若版の通信経路エントリを選択することができる。データパケットを送信する宛先と使用するネットワークＩ／Ｆ１６０ａが決定したので、ＲＴＴ登録部１９０は当該データパケットのＲＴＴの測定を試みる。
【００８１】
図５に示すように、送信するデータパケットがあるため（１９０−１）、ＲＴＴ登録部１９０は、まずＲＴＴが測定可能か確認する（１９０−２）。測定可能ならば（１９０−２、Ｙｅｓ）、ＲＴＴ測定中フラグをセットする（１９０−３）。以降、ＲＴＴの測定が完了するまで同じ通信経路のＲＴＴ測定を抑止し、データパケットの送信処理をドライバ１５０ａに引き渡す。
【００８２】
送信処理をドライバ１５０ａに引き渡した後は、ＲＴＴ登録部１９０はＲＴＴの測定を開始したパケットに対応するＡＣＫ（Acknowledgement）応答を待ち合わせる（１８０−４）。データパケットの送信処理を受け取ったドライバ１５０ａは、ネットワークＩ／Ｆ１６０ａを使用して、ルータ２００ａ（10.1.1.252）に向けてパケットを送信する。
【００８３】
ルータ２００ａはパケットを受信して、コンピュータ３００に向けてパケットを送信し、コンピュータ３００はパケットを受信して、ＡＣＫ応答を返信する。ＡＣＫ応答は、ルータ２００ａを経由して、コンピュータ１００に受信される。
【００８４】
ここで、ＡＣＫ応答を待合わせていたＲＴＴ登録部１９０はＡＣＫ受信を受けて（１８０−４、Ｙｅｓ）、ＲＴＴを確定する（１８０−５）。その後、ＲＴＴ測定中フラグをリセットし（１８０−６）、対応する通信経路エントリのＲＴＴを登録する（１９０−７）。
【００８５】
ここまでは通信経路エントリ１４０ａ−２に関するＲＴＴ登録に関して詳細に説明したが、ルーティングテーブル１４０に登録されている他の通信経路エントリのＲＴＴ登録に関しても同様に動作する。
【００８６】
本実施の形態では、図３に示す通信経路選択部１７０の動作フローからも分かるように、同一ネットワークアドレス宛の通信経路のうち、ＲＴＴが小さい通信経路が選択される（１７０−７）。このため、データパケット送信時にＲＴＴが測定されていない経路（ＲＴＴ＝０）が順次選択される。これにより、ルーティングテーブル１４０に登録されている全ての通信経路エントリ（１４０ａ−１〜１４０ｃ−３）のＲＴＴは順次登録される。
【００８７】
図９に、データパケット送信した後、ＡＣＫ応答を受信したときのルーティングテーブルの推移を示す。通信経路エントリのそれぞれのＲＴＴが順次登録されることにより、ルーティングテーブル１４０は図９の最下に示すようになる。
【００８８】
また、ＲＴＴが小さい通信経路が選択されてデータ転送がされている場合でも、突発的なトラフィックの増加やネットワーク障害等によりＲＴＴが急激に大きくなる場合が想定される。この場合、該当通信経路のＲＴＴが更新登録されるため、以降は他のＲＴＴが小さい通信経路が自動的に選択されるようになる。
【００８９】
なお、ルーティングテーブル１４０が、最終状態（図９の最下に示すように全てのＲＴＴが登録された状態）になった場合、ＲＴＴが小さいエントリが選択され、他の経路が選択されなくなる。このため、通信経路選択部１７０は、ＲＴＴの大小関係に関係なく、定期的に他の経路を選択するように動作してもよい。
【００９０】
図７に示すように、本実施の形態に係るルーティングテーブル１４０には、ネットワークＩ／Ｆ１６０ａ、ルータ２００ｃ、ルータ２００ｄの経路やネットワークＩ／Ｆ１６０ｂ、ルータ２００ｂの経路が登録されている。これにより、パケットを送信するコンピュータ１００側で、パケットの送信経路を柔軟に制御可能となっている。また、同一ネットワークアドレス宛の通信経路も複数存在するため、複数の経路を同時に使用すれば、ネットワークＩ／Ｆやルータの負荷分散を行うことができる。
【００９１】
さらに、図９に示すように、本実施の形態に係るルーティングテーブル１４０には、通信経路ごとのＲＴＴが登録されている。このため、実際のパケット往復時間を考慮した通信経路の選択が可能である。また、このＲＴＴは常に測定され、更新される。従って、ネットワークのトラフィック状態を考慮したパケット転送を行うことが可能となる。
【００９２】
実施の形態２．
本発明の実施の形態２に係る経路選択システムについて、図１０を参照して説明する。図１０は、本実施の形態に係る通信経路選択システムを備えるコンピュータのＲＴＴ測定デーモン起動時のパケット処理動作の一例を説明するための図である。
【００９３】
上述の実施の形態１の場合は、実際にパケットを送信するタイミングでＲＴＴの計測及び更新を行うため、ＲＴＴ情報の更新タイミングは、通信相手へのデータ転送タイミングに依存していた。本実施の形態では、常にネットワークの状態を反映できるように、専用のＲＴＴ測定デーモンを起動し、定期的にデータ転送を実施してＲＴＴを測定する。
【００９４】
まず、ＲＴＴ測定デーモンの機能に関して説明する。ＲＴＴ測定デーモン１１０ａは、ルーティングテーブル１４０に登録されているNetwork Destination１４０−１ごとに通信相手となるＲＴＴ測定デーモンの存在を確認する機能と、ＲＴＴ測定デーモンの存在を確認できたホストアドレス及びネットワークアドレスの通信経路ごとに定期的にＲＴＴ測定及びＲＴＴ更新を行う機能を有している。
【００９５】
また、ＲＴＴを測定するためには、コンピュータ間にコネクションを確立する必要がある。このため、通信相手の端末コンピュータにも同様の測定デーモンを起動させる必要がある。図１０では、コンピュータ１００、３００、４００、５００に、ＲＴＴ測定デーモン１１０ａ、３１０ａ、４１０ａ、５１０ａを起動した状態を示している。
【００９６】
ここで、図１０を用いてＲＴＴ測定デーモンによるＲＴＴ登録動作について説明する。コンピュータ１００のＲＴＴ測定デーモン１１０ａは、ルーティングテーブル１４０の通信経路エントリを検索する（図１０（１））。そして、該当ネットワークアドレスのＲＴＴ測定デーモン３１０ａ宛にデータパケットを送信し（図１０（２）→（３）→（４）→（５）→（６）→（７）、ＲＴＴ登録部１９０がＲＴＴの測定を開始する。
【００９７】
データパケットを受け取ったコンピュータ３００は、ＡＣＫ応答を返信する（図１０（８）→（９）→（１０）→（１１））。ＡＣＫ応答を受け取ったコンピュータ１００のネットワークスタック１３０のＲＴＴ登録部１９０はＲＴＴ測定を完了し、ルーティングテーブル１４０の該当通経路エントリに確定したＲＴＴを登録する（図１０（１２））。
【００９８】
以上説明したように、ＲＴＴ測定デーモンを用いることより、ルーティングテーブル１４０に登録されている該当通信経路を使用して、定期的にＲＴＴ測定を行うことが可能となる。これにより、自コンピュータのデータ送信タイミングでのＲＴＴへの更新でなく、リアルタイムのＲＴＴ更新が可能となる。
【００９９】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【０１００】
１００  コンピュータ
１１０  アプリケーション
１２０  ＯＳ
１３０  ネットワークスタック
１４０  ルーティングテーブル
１５０ａ、１５０ｂ  ドライバ
１６０ａ、１６０ｂ  ネットワークＩ／Ｆ
１７０  通信経路選択部
１８０  通信経路登録部
１９０  ＲＴＴ登録部
２００ａ、２００ｂ、２００ｃ  ルータ
３００、４００、５００  端末コンピュータ
１１０ａ、３１０ａ  ＲＴＴ測定デーモン
【図１】
2010239473.tif 000003
【図２】
2010239473.tif 000004
【図３】
2010239473.tif 000005
【図４】
2010239473.tif 000006
【図５】
2010239473.tif 000007
【図６】
2010239473.tif 000008
【図７】
2010239473.tif 000009
【図８】
2010239473.tif 000010
【図９】
2010239473.tif 000011
【図１０】
2010239473.tif 000012