(57)【特許請求の範囲】
【請求項１】
送信装置、第１の通信装置、および、第２の通信装置が含まれるネットワークにおいて、前記第１の通信装置に、
パケットを受信すると共に、前記パケットを格納し、
前記パケットを前記第２の通信装置に転送し、
所定の時間に複数受信して前記第２の通信装置に転送した前記パケットの各々について、パケットを格納した時刻から、格納されたパケットを読み出した時刻までの時間である、前記第１の通信装置での格納時間を求め、
前記パケットの再送を前記第２の通信装置が前記第１の通信装置へ要求してから、前記要求に応じて再送された前記パケットを前記第２の通信装置が受信するまでの時間である、前記第２の通信装置への再送時間と、前記第１の通信装置での格納時間とを比較し、該再送時間の方が該格納時間よりも長いパケットの数を求め、
前記第２の通信装置への再送時間の方が前記第１の通信装置での格納時間よりも長いパケットの数が所定の閾値を超えている場合、前記複数受信して前記第２の通信装置に転送した前記パケットの後に前記送信装置から送信される後続パケットを、前記第１の通信装置を介さずに受信するように前記第２の通信装置の接続先を変更することを指示する指示メッセージを、前記第２の通信装置に送信する
処理を実行させることを特徴とする通信プログラム。
【請求項２】
前記指示メッセージは、
前記第１および第２の通信装置を含む、前記ネットワークに属する配下通信装置の各々より、前記パケットが前記配下通信装置で受信されて格納されてから、格納された前記パケットが読み出されるまでの時間と、前記パケットの再送を前記配下通信装置へ他の配下通信装置が要求してから、前記要求に応じて再送された前記パケットを前記他の配下通信装置が受信するまでにかかる時間との比較結果を通知されると共に、通知された比較結果を管理する管理装置に、前記第２の通信装置が前記後続パケットの送信を要求する対象装置を問い合わせ、
前記管理装置で管理されている比較結果に基づいて選択された前記対象装置が通知されると、前記第２の通信装置が前記対象装置に接続し、
前記第２の通信装置が前記対象装置との接続に成功すると、前記第１の通信装置に前記第２の通信装置との間の接続の切断を通知する切断通知メッセージを送信する
ことを指示し、
前記切断通知メッセージを受信すると、前記第１の通信装置は、前記第２の通信装置との接続を切断する
ことを特徴とする請求項１に記載の通信プログラム。
【請求項３】
前記第２の通信装置は、前記対象装置を問い合わせる際に、前記第２の通信装置が接続している装置を識別する識別子を前記管理装置に送信し、
前記管理装置は、前記第２の通信装置が接続することができる装置であり、かつ、前記識別子で識別される装置ではない装置を前記対象装置とする
ことを特徴とする請求項２に記載の通信プログラム。
【請求項４】
送信装置、第１の通信装置、および、第２の通信装置が含まれるネットワークにおいて、前記第１の通信装置に、
パケットを受信すると共に、前記パケットを格納し、
前記パケットを前記第２の通信装置に転送し、
所定の時間に複数受信して前記第２の通信装置に転送した前記パケットの各々について、パケットを格納した時刻から、格納されたパケットを読み出した時刻までの時間である、前記第１の通信装置での格納時間を求め、
前記パケットの再送を前記第２の通信装置が前記第１の通信装置へ要求してから、前記要求に応じて再送された前記パケットを前記第２の通信装置が受信するまでの時間である、前記第２の通信装置への再送時間と、前記第１の通信装置での格納時間とを比較し、該再送時間の方が該格納時間よりも長いパケットの数を求め、
前記第２の通信装置への再送時間の方が前記第１の通信装置での格納時間よりも長いパケットの数が所定の閾値を超えている場合、前記複数受信して前記第２の通信装置に転送した前記パケットの後に前記送信装置から送信される後続パケットを、前記第１の通信装置を介さずに受信するように前記第２の通信装置の接続先を変更することを指示する指示メッセージを、前記第２の通信装置に送信する
処理を実行させることを特徴とする通信方法。
【請求項５】
送信装置、第１の通信装置、および、第２の通信装置が含まれるネットワークにおける前記第１の通信装置であって、
パケットを受信する受信部と、
前記パケットを格納するバッファと、
前記パケットを前記第２の通信装置に送信する送信部と、
所定の時間に複数受信して前記第２の通信装置に転送した前記パケットの各々について、パケットを格納した時刻から、格納されたパケットを読み出した時刻までの時間である、前記第１の通信装置での格納時間を算出する算出部と、
前記パケットの再送を前記第２の通信装置が前記第１の通信装置へ要求してから、前記要求に応じて再送された前記パケットを前記第２の通信装置が受信するまでの時間である、前記第２の通信装置への再送時間と、前記第１の通信装置での格納時間とを比較し、該再送時間の方が該格納時間よりも長いパケットの数を求める比較部と、
前記第２の通信装置への再送時間の方が前記第１の通信装置での格納時間よりも長いパケットの数が所定の閾値を超えている場合、前記複数受信して前記第２の通信装置に転送した前記パケットの後に前記送信装置から送信される後続パケットを、前記第１の通信装置を介さずに受信するように前記第２の通信装置の接続先を変更することを、前記第２の通信装置に指示する変更指示部
を備えることを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置の間で行われる通信の方法、および、通信に用いるプログラムに関する。
【背景技術】
【０００２】
複数の装置にデータを送信するための技術として、アプリケーション層マルチキャスト（application-level Multicast、ＡＬＭ）などが知られている。ＡＬＭを用いた通信では、パケットを受信する複数の装置間でパケットがリレー転送される。この場合、ある装置が受信したパケットにエラーが発生していることを発見すると、その装置は、誤りエラー訂正を行うか、上流側の装置から再送されたパケットを受信する。ここで、エラー訂正や再送に時間がかかってしまうので、データの訂正等が終わった後でパケットが処理される順序どおりに下流側の装置に転送が行われるシステムでは、下流側の間での遅延量が増大し、下流側の装置での通信の品質が低下してしまう。
【０００３】
そこで、下流側の装置での遅延量を抑えるために、上流側の装置がエラー訂正の処理の間や再送を待っている間に受信したパケットを下流側の装置に送信するシステムが用いられている。図１（ａ）は、Ｎ１〜Ｎ１１の１１個の装置の間で通信が行われる場合の例を示す。図１（ａ）の矢印はデータの流れを表しており、データが装置Ｎ１から装置Ｎ２〜Ｎ１１に送信されているものとする。装置Ｎ６は、パケットＰ１、Ｐ３〜Ｐ７の６個のパケットを受信したが、パケットＰ２は受信できなかったとすると、装置Ｎ６での受信パケットは図１（ｂ）に示すとおりである。この場合、装置Ｎ６は、受信できたパケットＰ１から順に下流の装置Ｎ１０、Ｎ１１に転送し、パケットＰ２の再送パケットを受信できたときに、パケットＰ２を装置Ｎ１０、Ｎ１１に転送する。そのため、装置Ｎ６が装置Ｎ１０、Ｎ１１に送信するパケットの順序は、図１（ｃ)に示すようになる。このように、下流側の装置が受信するパケットの順序は、アプリケーションなどでの処理の順序と異なる場合がある。そこで、データを受信した装置は、受信したデータをアプリケーションなどで処理する際に、リオーダリングバッファを用いて、処理順序どおりにパケットを読み出し、アプリケーションで処理する。
【０００４】
関連する技術として、再送手順を持たない方式のフレームリレー中継路の迂回システムが考案されている。このシステムでは、下流の装置が一定時間内に受信するフレームに対するエラーフレームの割合に基づいて回線品質をチェックし、上流の装置は下流の装置で得られた回線品質が一定以下になると迂回経路に切り換える。また、並列計算機中の複数のプロセッサ間でのメッセージ通信処理の際に、メッセージの識別情報にそのメッセージの発信時刻を表す時刻情報を加える方法も提案されている。この方法では、中継装置は、発振から一定時間以上過ぎて受信したメッセージを破棄すると共に、中継先の中継装置に障害があったときには伝送経路を変更して迂回路を設定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−２２１７９１号公報
【特許文献２】特開２００７−２５１７３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データがリレー転送される場合、下流側の装置ではエラーの訂正などに起因した転送順序の入れ替わりや遅延が大きくなることがある。下流側の装置での遅延量が大きくなると、遅延したパケットが受信されてリオーダリングバッファに書き込まれる前に、アプリケーションが遅延したパケットをリオーダリングバッファから読み出そうとすることがある。この場合は、読み出されるパケットがリオーダリングバッファに格納される前に読み出しが行われてしまったため、アプリケーションはパケットを読み出すことができず、そのデータをロスしたものとして処理する。このため、遅延量が大きくなると、下流側の装置でのデータのロスが増えてしまい、下流側の装置での受信品質が低下してしまう。関連する技術として知られているシステム等では、下流側での通信品質の劣化が起こった後でなければ経路の変更等は行われないため、下流側の装置での受信品質の低下を発生前に防ぐことはできない。背景技術では、ＡＬＭが用いられる通信を例として記載したが、データがリレー転送される任意のシステムにおいて同様の問題が発生する。
【０００７】
本発明は、パケットの遅延による通信品質の低下を防ぐことを目的とする。
【課題を解決するための手段】
【０００８】
ある実施形態では、送信装置、第１の通信装置、および、第２の通信装置が含まれるネットワークにおいて、前記第１の通信装置で用いられる通信方法を提供する。第１の通信装置は、パケットを受信すると共に、前記パケットを格納する。第１の通信装置は、前記パケットを前記第２の通信装置に転送する。第１の通信装置は、所定の時間に複数受信して前記第２の通信装置に転送した前記パケットの各々について、パケットを格納した時刻から、格納されたパケットを読み出した時刻までの時間である、前記第１の通信装置での格納時間を求める。第１の通信装置は、前記パケットの再送を前記第２の通信装置が前記第１の通信装置へ要求してから、前記要求に応じて再送された前記パケットを前記第２の通信装置が受信するまでの時間である、前記第２の通信装置への再送時間と、前記第１の通信装置での格納時間とを比較し、該再送時間の方が該格納時間よりも長いパケットの数を求める。第１の通信装置は、前記第２の通信装置への再送時間の方が前記第１の通信装置での格納時間よりも長いパケットの数が所定の閾値を超えている場合、指示メッセージを、前記第２の通信装置に送信する。ここで、指示メッセージは、前記複数受信して前記第２の通信装置に転送した前記パケットの後に前記送信装置から送信される後続パケットを、前記第１の通信装置を介さずに受信するように前記第２の通信装置の接続先を変更することを指示する。
【発明の効果】
【０００９】
パケットの遅延による通信品質の低下を防ぐことができる。
【図面の簡単な説明】
【００１０】
【図１】パケットの転送順序が逆転する場合の例を説明する図である。
【図２】実施形態に係るパケットの転送方法の例を示す図である。
【図３】実施形態に係るネットワークの例を示す図である。
【図４】通信装置の構成の例を示す図である。
【図５】時刻テーブルの例を示す図である。
【図６】装置テーブルの例を示す図である。
【図７】制御メッセージの構成例とメッセージタイプテーブルの例を示す図である。
【図８】管理装置の構成の例を示す図である。
【図９】通信状態データベースの例を示す図である。
【図１０】格納時間と再送時間の比較結果の例を示すテーブルである。
【図１１】管理装置への状況報告に用いられる制御メッセージのオプションに設定される情報の例を示す図である。
【図１２】通信状況の良好な通信装置のリストの例を示す図である。
【図１３】通信装置で行われる動作の例を説明するフローチャートである。
【図１４】パケットが送信される経路が変更される場合の動作の例を説明するフローチャートである。
【図１５】制御メッセージのオプションに含まれるデータの例を示す。
【図１６】第２の実施形態で行われる動作の例を説明するフローチャートである。
【図１７】通信装置や管理装置のハードウェア構成の例を示す。
【発明を実施するための形態】
【００１１】
図２は、実施形態に係るパケットの転送方法の例を示す図である。図２の例では、通信装置Ｎ８に記憶されている情報が、通信装置Ｎ１〜Ｎ５とＮ１１〜Ｎ１５にリレー転送されることにより、通信装置Ｎ１〜Ｎ５とＮ１１〜Ｎ１５にマルチキャスト送信されている。図２の実線は接続関係を示し、矢印の方向にパケットが送信されるものとする。また、通信装置Ｎ１〜Ｎ５、Ｎ８、Ｎ１１〜Ｎ１５は、通信状況を管理装置１０に送信し、管理装置１０は、受信した通信状況を管理しているものとする。以下、通信装置Ｎ１の動作を例として説明する。
【００１２】
通信装置Ｎ１は、受信したパケットを、受信した順番に通信装置Ｎ２、Ｎ３に転送する。また、通信装置Ｎ１は、受信したパケットを、そのパケットに含まれるデータの処理を開始するまでリオーダリングバッファに格納する。以下の記載では、パケットが通信装置のリオーダリングバッファに格納されている時間を「格納時間」と記載するものとする。
【００１３】
次に、通信装置Ｎ１は、パケットの送信先の通信装置Ｎ２とＮ３について通信状況を推定する。ここで、通信装置Ｎ２、Ｎ３へは、通信装置Ｎ１に受信された順序でパケットが転送されているので、通信装置Ｎ１は、通信装置Ｎ１での格納時間とパケットの送信先の通信装置での格納時間が同じ長さであると仮定する。また、通信装置Ｎ１は、通信装置Ｎ２、Ｎ３の各々から、パケットの再送にかかる時間（再送時間）を通知されているものとする。そこで、通信装置Ｎ１は、通信状況を推定する通信装置から通知された再送時間と格納時間の長さを比較する。再送時間のほうが格納時間よりも長いと、通信装置Ｎ１は送信先の通信状況が劣化すると判断する。図２（ａ）の例では、通信装置Ｎ１が、通信装置Ｎ３での通信状態は劣化するが通信装置Ｎ２での通信状態は良好であると推定した場合を示す。図２（ａ）は、劣化すると推定された通信経路を破線の矢印で示している。
【００１４】
次に、通信装置Ｎ１は、通信装置Ｎ３に対して、通信装置Ｎ１以外の通信装置からパケットを受信することを求める。通信装置Ｎ３は、管理装置１０に新たな接続先の候補を要求する。管理装置１０は、保持しているデータに基づいて、接続先となる通信装置の候補を通知する。ここでは、通信装置Ｎ４が接続先の候補として通知されたものとする。すると、通信装置Ｎ３は、図２（ｂ）に示すように通信装置Ｎ４との間で接続を確立し、通信装置Ｎ４からパケットを受信する。図２（ｂ）の白い矢印は、通信装置Ｎ３とＮ４の間で確立された接続により、通信品質の劣化が避けられた経路を表す。なお、通信装置Ｎ２〜Ｎ５は、パケットを転送している通信装置に対して、通信装置Ｎ１と同様の処理をすることができる。
【００１５】
このように、実施形態に係る通信方法では、転送元の通信装置は、転送先の通信装置での通信状況を推定し、転送先の通信装置での通信状況が劣化すると予測したときに、転送先の通信装置に接続先の変更を要求する。従って、通信状況の劣化が予測される通信装置の接続先を変更することにより、通信状況の劣化を回避することができる。
【００１６】
＜第１の実施形態＞
以下、第１の実施形態について説明する。以下の記載において、処理の対象を分かりやすくするために、リレー転送の対象となるデータを含むパケット（データパケット）を「パケット」と記載する。一方、制御に用いられる情報などのリレー転送の対象とならない情報は、「制御メッセージ」などと記載することがある。
【００１７】
図３は、実施形態に係るネットワークの例を示す図である。ネットワークは、管理装置１０、ハブ２５（２５ａ〜２５ｄ）、通信装置３０（３０ａ〜３０ｉ）を備える。なお、個々の通信装置３０には、Ｎと１以上の整数の組み合わせた識別子が割り当てられているものとする。例えば、通信装置３０ａの識別子はＮ１で、通信装置３０ｃの識別子はＮ３である。
【００１８】
以下の説明では、図３に示す管理装置１０や通信装置３０の間で、図２（ａ）に示したような経路でパケット（データパケット）の送受信が行われるものとする。例えば、通信装置Ｎ８は、ハブ２５ｄ、２５ｂ、２５ａを介して、通信装置Ｎ１にパケットを送信する。また、通信装置Ｎ８は、ハブ２５ｄ、２５ｂ、２５ｃを介して、通信装置Ｎ４にパケットを送信する。通信装置Ｎ１は、ハブ２５ａを介して通信装置Ｎ２にパケットを送信する。また、通信装置Ｎ１は、ハブ２５ａ〜２５ｃを介して通信装置Ｎ３にパケットを送信する。一方、通信装置Ｎ４は、ハブ２５ｃを介して通信装置Ｎ５にパケットを送信している。なお、図２、図３を参照しながら説明したネットワークは一例であり、ネットワークの形状や接続関係などは、任意に変更される場合がある。
【００１９】
図４は、通信装置３０の構成の例を示す図である。通信装置３０は、受信処理部３１、転送用バッファ３２、リオーダリングバッファ３３、送信処理部３４、アプリケーション処理部３５、タイマ３６、品質管理部４０、および、記憶部５０を備える。品質管理部４０は、算出部４１、再送時間取得部４２、比較部４３、変更指示部４４、報告指示部４５、応答部４６、および、接続先変更部４７を備える。記憶部５０は、時刻テーブル５１、装置テーブル５２、メッセージタイプテーブル５３、および、データ５４を格納する。
【００２０】
受信処理部３１は、パケットや制御メッセージを受信する。受信処理部３１は、受信したパケットを転送用バッファ３２とリオーダリングバッファ３３に格納する。一方、制御メッセージを受信すると、受信処理部３１は、受信した制御メッセージを品質管理部４０に出力する。なお、受信処理部３１は、制御メッセージの出力先を決定するために、メッセージタイプテーブル５３を参照することもできる。また、受信処理部３１は、受信したパケットをリオーダリングバッファ３３に書き込んだ時刻を、パケットの識別子に対応付けて、時刻テーブル５１に記録する。時刻テーブル５１の例については後述する。受信処理部３１は、タイマ３６から時刻情報を取得する。
【００２１】
転送用バッファ３２は、パケットが転送先の通信装置に送信されるまでの間、パケットを格納する。送信処理部３４は、パケットを転送先の通信装置に送信する際に、送信の対象のパケットを転送用バッファ３２から取得する。
【００２２】
アプリケーション処理部３５は、リオーダリングバッファ３３に格納されているパケットに含まれているデータを、アプリケーションで処理する。処理対象のパケットは、アプリケーション処理部３５での処理が開始されるときに、リオーダリングバッファ３３からアプリケーション処理部３５に読み出される。さらに、アプリケーション処理部３５は、リオーダリングバッファ３３からパケットを読み出した時刻を、時刻テーブル５１に記録する。このとき、アプリケーション処理部３５は、タイマ３６から時刻情報を取得することができる。
【００２３】
図５は、時刻テーブル５１の例を示す図である。時刻テーブル５１は、リオーダリングバッファ３３にパケットが書き込まれた時刻と、リオーダリングバッファ３３からパケットが読み出された時刻を、パケットの識別子に対応付けて記録している。ここで、リオーダリングバッファ３３からパケットが読み出される時刻は、アプリケーション処理部３５でのパケットの処理が開始する時刻である。時刻テーブル５１には、これらの情報に加えて、パケットがリオーダリングバッファ３３に記憶されている時間の長さも記録される場合がある。以下の説明では、パケットがリオーダリングバッファ３３に記憶されている時間の長さのことを「格納時間」と記載する。
【００２４】
算出部４１は、時刻テーブル５１にパケットの読み出し時刻が記録されると、パケットが書き込まれた時刻から、そのパケットの読み出し時刻までの時間を求める。算出部４１は求めた格納時間を、比較部４３に出力する。算出部４１は算出した格納時間を時刻テーブル５１に記録することができる。
【００２５】
再送時間取得部４２は、転送先の通信装置がパケットの受信に失敗した場合に、その通信装置に再送されたパケットが受信されるまでにかかる時間を取得する。以下の記載では、パケットの再送にかかる時間を「再送時間」と記載することがある。例えば、通信装置Ｎ３が受信に失敗したパケットＰ１の再送を通信装置Ｎ１に要求してから、再送されたパケットを通信装置Ｎ３が受信するまでの時間を再送時間とすることができる。再送時間は、通信装置に電源が投入されたときや、通信装置の接続先が変更されたときに求められる。また、再送時間取得部４２は、再送されるパケットを受信する通信装置３０と、再送パケットを送信する通信装置３０の間でパケットが往復するためのRound Trip Time（ＲＴＴ、往復時間）に基づいて再送時間を算出できる。例えば、通信装置Ｎ３の再送時間取得部４２は、通信装置Ｎ１に計測パケットを送信し、計測パケットの送信時刻と、通信装置Ｎ１から計測パケットに対する応答パケットの受信時刻の間の時間（ＲＴＴ）に所定のマージンを加えた値を再送時間とすることができる。再送時間取得部４２は、ＲＴＴを求めるために、例えば、ｐｉｎｇなどの計測パケットを用いることができる。再送時間取得部４２は、計算した再送時間を例えば、データ５４として記憶部５０に記憶させる。また、再送時間取得部４２は、制御メッセージを用いて、パケットの転送元の通信装置３０に再送時間を通知することができる。例えば、通信装置Ｎ３の再送時間取得部４２は、図２（ａ）に示す経路で通信が行われている場合に通信装置Ｎ１に再送時間を通知する。一方、図２（ｂ）に示す経路で通信が行われている場合には、通信装置Ｎ３の再送時間取得部４２は、通信装置Ｎ４に再送時間を通知する。
【００２６】
比較部４３は、受信処理部３１において、再送時間を通知する制御メッセージが受信されると、その制御メッセージを受信処理部３１から受け取る。なお、制御メッセージの種類の特定方法や制御メッセージに含まれる情報の特定方法については後述する。さらに、比較部４３は、通知された再送時間を転送先の通信装置３０の識別子に対応付けて装置テーブル５２に記憶する。
【００２７】
図６は、装置テーブル５２の例を示す図である。図６は、図２（ａ）の経路でマルチキャスト通信が行われているときに、通信装置Ｎ１が備える装置テーブル５２の例を表している。装置テーブル５２は、管理装置１０や通信装置３０を特定する識別子（装置ＩＤ）に対応付けて、管理装置１０や通信装置３０のInternet Protocol（ＩＰ）アドレス、装置種別等の情報を記録する。ここで、装置種別には、「管理端末」、「上流」、「下流」の３種類があるものとする。管理装置１０は「管理端末」に分類される。パケットの送信元の通信装置３０は「上流」に分類され、パケットの転送先の通信装置３０は「下流」に分類される。図２（ａ）に示すように、通信装置Ｎ１は通信装置Ｎ８からパケットを受信しているので、通信装置Ｎ１に記録されている装置テーブル５２では、通信装置Ｎ８は「上流」に分類される。一方、通信装置Ｎ１は通信装置Ｎ２、Ｎ３にパケットを転送しているので、通信装置Ｎ１中の装置テーブル５２では、通信装置Ｎ２、Ｎ３が「下流」に分類される。「下流」に分類されている通信装置３０からは、前述のとおり、再送時間が通知されてくる。そこで、比較部４３は、再送時間を装置テーブル５２中に、装置ＩＤに対応付けて記録する。図６の例では、通信装置Ｎ２と通信装置Ｎ１の間での再送時間は１００ｍｓ、通信装置Ｎ３と通信装置Ｎ１の間での再送時間は５００ｍｓである。
【００２８】
比較部４３は、算出部４１から入力された格納時間と再送時間を比較する。比較部４３は、比較結果を変更指示部４４に通知する。変更指示部４４は、比較部４３で得られた比較結果から、パケットの送信先の通信装置３０における通信状況が劣化するかを推定する。なお、パケットの送信先の通信装置３０は、装置テーブル５２で下流に分類された通信装置３０である。変更指示部４４は、通信状況が劣化すると推定された通信装置３０に、パケットの送信元の変更を求める。報告指示部４５は、比較部４３で得られた比較結果を管理装置１０に通知する。
【００２９】
応答部４６は、他の通信装置３０から接続の確立を求められたときに、その通信装置３０へのパケットの送信を行うかを決定し、決定した結果を、パケットの送信を求めた通信装置３０に通知する。例えば、通信装置Ｎ３が通信装置Ｎ４に接続の確立を求める制御メッセージを送信すると、通信装置Ｎ４の応答部４６は、通信装置Ｎ３に接続を許可するかを決定し、結果を通信装置Ｎ３に通知する。
【００３０】
接続先変更部４７は、パケットの送信元の変更を求められた場合に、管理装置１０にパケットの送信元の候補を問い合わせる。例えば、通信装置Ｎ３が通信装置Ｎ１から送信元の変更を要求されると、通信装置Ｎ３の接続先変更部４７は、管理装置１０に送信元となる通信装置３０の候補を要求する。接続先変更部４７は、管理装置１０から接続先の候補を取得すると、得られた候補から１つの通信装置３０を選択して、接続を要求する。接続に失敗した場合、接続先変更部４７は、管理装置１０から通知された候補から別の通信装置３０を選択して接続を要求する。比較部４３、変更指示部４４、報告指示部４５、応答部４６、接続先変更部４７などの動作については後で詳しく述べる。
【００３１】
図７（ａ）は、メッセージタイプテーブル５３の例を示す図である。複数の通信装置３０の間や、管理装置１０と通信装置３０の間では、接続の確立や接続先の変更のために、制御メッセージが送受信される。制御メッセージは、図７（ｂ）に示すように、ＩＰヘッダ６１、User Datagram Protocol（ＵＤＰ）ヘッダ６２、メッセージ部６３を備える。なお、図７（ｂ）は制御メッセージの構成の例であり、例えば、ＵＤＰヘッダ６２の代わりにTransmission Control Protocol（ＴＣＰ）ヘッダを備えるなど、制御メッセージの構成は、実装に応じて変更される場合がある。
【００３２】
メッセージ部６３には、メッセージタイプ（Ｍ−Ｔｙｐｅ）６４とオプション６５が含まれている。メッセージタイプテーブル５３は、メッセージタイプ６４に設定される値を、制御メッセージに含まれる情報の種類や制御メッセージによる指示の内容と対応付けて記憶する。オプション６５には、図７（ａ）のテーブルのオプションの欄に示すデータが含まれる。例えば、通信装置Ｎ１の変更指示部４４が通信装置Ｎ３に接続先の変更を求めるときは、メッセージタイプ６４の値が１の制御メッセージが、通信装置Ｎ１から通信装置Ｎ３に送信される。また、通信装置Ｎ３が管理装置１０に接続先の候補を問い合わせるときには、通信装置Ｎ３は、メッセージタイプ６４の値が２の制御メッセージを管理装置１０に送信する。制御メッセージの具体例や制御メッセージを用いた動作の例については後で述べる。
【００３３】
図８は、管理装置１０の構成の例を示す図である。管理装置１０は、受信部１１、送信部１２、制御部７１、および、記憶部７５を備える。制御部７１は接続先選択部７２とメッセージ処理部７３を備えており、記憶部７５は通信状態データベース７６とメッセージタイプテーブル５３を備えている。ここで、メッセージタイプテーブル５３は、通信装置３０に備えられているメッセージタイプテーブル５３と同様のテーブルである。
【００３４】
受信部１１は、通信装置３０から制御メッセージを受信する。受信部１１は受信した制御メッセージをメッセージ処理部７３に出力する。メッセージ処理部７３は、メッセージタイプテーブル５３を参照して、受信した制御メッセージに含まれているデータを処理する。ここで、管理装置１０が受信する制御メッセージは、接続先の候補に関する情報を要求する制御メッセージ（Ｍ−Ｔｙｐｅ＝２）か、通信装置３０の状態を報告する制御メッセージ（Ｍ−Ｔｙｐｅ＝７）である。通信装置３０の状態を報告する制御メッセージを受信した場合、受信部１１は、制御メッセージに含まれている情報を、通信状態データベース７６に記録する。通信状態データベース７６の例を図９に示す。なお、通信状態データベース７６へのデータの記録方法や通信状態データベース７６の使用方法などについては、後で詳しく述べる。
【００３５】
一方、接続先の候補に関する情報を要求する制御メッセージが入力された場合、メッセージ処理部７３は、接続先選択部７２に制御メッセージを出力する。接続先選択部７２は、通信状態データベース７６を用いて、転送先の通信状態が良好な通信装置３０のリストを生成する。接続先選択部７２は、メッセージタイプ６４の値を「３」に設定し、生成したリストをオプションに含めた制御メッセージを生成する。接続先選択部７２は、送信部１２を介して、接続先の候補を通知するメッセージを、接続先の候補を要求した通信装置３０に送信する。
【００３６】
次に、マルチキャスト通信の経路が図２（ａ）に示す経路から図２（ｂ）の経路に変更される場合について、通信装置Ｎ１〜Ｎ４、および、管理装置１０の動作の例を説明する。ここで、通信装置Ｎ１、Ｎ４は上流の通信装置３０の例であり、通信装置Ｎ２、Ｎ３は下流の通信装置３０の例である。なお、以下に述べる方法は一例であり、例えば、手順（９）を手順（１０）の後に行うなどの変更が加えられる場合がある。
【００３７】
（１）通信装置Ｎ３とＮ２が、電源を投入された後に通信装置Ｎ１と接続を確立したとする。接続が確立されると、通信装置Ｎ１の備える装置テーブル５２には、通信装置Ｎ２、Ｎ３が下流の装置として登録される。一方、通信装置Ｎ２、Ｎ３は、それぞれの装置テーブル５２に、通信装置Ｎ１を上流の装置として登録する。
【００３８】
次に、通信装置Ｎ３の再送時間取得部４２は、通信装置Ｎ１に向けてｐｉｎｇなどの測定パケットを送信し、測定パケットの送信時刻から測定パケットに対する応答パケットが通信装置Ｎ３で受信される時刻までの時間（往復時間）を測定する。再送時間取得部４２は、得られた往復時間に、予め記憶しているマージンを加えた値を再送時間とする。
【００３９】
（２）通信装置Ｎ３の再送時間取得部４２は、制御メッセージ（図７）を用いて再送時間を通信装置Ｎ１に通知する。メッセージタイプ６４が８に設定されている制御メッセージは、再送時間の通知に用いられる。そこで、通信装置Ｎ３の再送時間取得部４２は、メッセージタイプ６４の値を８に指定し、オプション６５に再送時間を含めた制御メッセージを、送信処理部３４に出力する。送信処理部３４は、入力された制御メッセージを通信装置Ｎ１に送信する。
【００４０】
（３）通信装置Ｎ１の受信処理部３１は、通信装置Ｎ３から受信した制御メッセージのメッセージタイプ６４の値が８に設定されていることを確認すると、再送時間が通知されたと判断して、比較部４３に出力する。比較部４３は、制御メッセージに含まれている再送時間を読み出して、装置テーブル５２に記録する。通信装置Ｎ２も、通信装置Ｎ３と同様に再送時間を算出して、得られた結果を通信装置Ｎ１に通知する。通信装置Ｎ１は、通信装置Ｎ２から通知された再送時間も装置テーブル５２に通知する。ここでは、図６に示すように、通信装置Ｎ２から通知された再送時間は１００ｍｓ、通信装置Ｎ３から通知された再送時間は５００ｍｓであるものとする。
【００４１】
（４）通信装置Ｎ１は、通信装置Ｎ８から受信したパケットを通信装置Ｎ３とＮ２に送信する。また、通信装置Ｎ１の受信処理部３１は、通信装置Ｎ８から受信したパケットを、リオーダリングバッファ３３に格納すると共に、パケットを格納した時刻を時刻テーブル５１に記録する。
【００４２】
（５）通信装置Ｎ１のアプリケーション処理部３５は、リオーダリングバッファ３３に格納されたパケットを処理の順番どおりにリオーダリングバッファ３３から読み出して、アプリケーションで処理する。アプリケーション処理部３５は、時刻テーブル５１に、パケットを読み出した時刻を記録する。
【００４３】
（６）通信装置Ｎ１の算出部４１は、パケットが読み出された時刻が時刻テーブル５１（図５）に記録されると、格納時間を算出する。例えば、格納時間は、パケットＰ１では１０００ｍｓ、パケットＰ２では２００ｍｓ、パケットＰ３では１０００ｍｓ、パケットＰ４では４００ｍｓであるものとする。
【００４４】
（７）通信装置Ｎ１の比較部４３は、格納時間が算出されたパケットの各々について、格納時間と再送時間の長さを比較する。図１０は、格納時間（Ａ）と再送時間（Ｂ）の比較結果の例を示すテーブルである。例えば、パケットＰ２の格納時間（２００ｍｓ）は、通信装置Ｎ３の再送時間５００ｍｓより短いので、図１０に示すように比較部４３は、通信装置Ｎ３に送信された格納時間よりも再送時間が長いパケットとしてパケットＰ２をチェックする。同様に、パケットＰ４の格納時間も通信装置Ｎ３の再送時間よりも短いので、図１０に示すテーブルのようにパケットＰ４もチェックされる。さらに比較部４３は、パケットＰ１やＰ３については、通信装置Ｎ３に送信された場合の再送時刻よりも格納時間が長いと判断する。単位時間あたりに通信装置Ｎ３に送信されたパケットについて同様の判断を行った結果、比較部４３はチェックされたパケットの数を確認する。ここでは、図１０に示すように、比較部４３は、格納時間が通信装置Ｎ３への再送時間よりも短いパケットの数は６つであると判断したとする。この場合、通信装置Ｎ１から通信装置Ｎ３に送信されたパケットのうちの６個は、通信装置Ｎ３に再送された場合に通信装置Ｎ３での処理に間に合わないと判断されている。例えば、通信装置Ｎ３が通信装置Ｎ１から送信されたパケットＰ２の受信に失敗してパケットＰ２が通信装置Ｎ１から再送されると、通信装置Ｎ３は、パケットＰ２の処理を開始しようとする時刻までにパケットＰ２を受信できない。すると、通信装置Ｎ３でパケットＰ２についてのパケットロスが発生したことになる。従って、格納時間よりも再送時間の方が長いパケットの数が大きくなるほど、パケットの転送先の装置での通信の状況が悪くなると判断できる。
【００４５】
比較部４３は、さらに、格納時間と通信装置Ｎ２への再送時間を比較する。ここでは、格納時間が通信装置Ｎ２への再送時間よりも短いパケットの数はないと判断されたものとする。この場合、通信装置Ｎ１から通信装置Ｎ２に単位時間に送信されたパケットは、いずれも、再送されたとしても通信装置Ｎ２での処理に間に合うことになる。
【００４６】
（８）比較部４３は、格納時間よりも再送時間が短いパケットの数を、送信先の通信装置３０の識別子と対応付けて変更指示部４４と報告指示部４５に通知する。報告指示部４５は、比較部４３から通知された結果を比較して、格納時間が再送時間よりも短いパケットの数の最大値を求める。例えば、通信装置Ｎ１の場合、格納時間が再送時間よりも短いパケットの数は、通信装置Ｎ３では６で、通信装置Ｎ２では０である。通信装置Ｎ１が通信装置Ｎ２、Ｎ３以外の通信装置３０にパケットを送信していない場合、格納時間が再送時間よりも短いパケットの数の最大値は、６である。さらに、報告指示部４５は、パケットの格納時間の平均値を算出する。例えば、報告指示部４５は、数十秒間などの一定の時間中に送受信されたパケットについて、格納時間の平均値を求めることができる。報告指示部４５は、格納時間が再送時間よりも短いパケットの数や、格納時間の平均値などの通信装置３０の状況を表す情報を、制御メッセージ（図７）を用いて管理装置１０に報告する。このとき、制御メッセージのメッセージタイプ６４の値は「７」に設定される。図１１は、管理装置１０への状況報告に用いられる制御メッセージのオプション６５に設定される情報の例を示す。
【００４７】
（９）管理装置１０の受信部１１は、制御メッセージを受信すると、受信した制御メッセージをメッセージ処理部７３に出力する。メッセージ処理部７３は、制御メッセージのメッセージタイプ６４とメッセージタイプテーブル５３を参照する。制御メッセージのメッセージタイプ６４が「７」に設定されている場合、メッセージ処理部７３は、状況報告の制御メッセージを受信したと判断して、制御メッセージのオプション６５に含まれている情報を、通信状態データベース７６に格納する。このとき、メッセージ処理部７３は、制御メッセージの送信元のＩＰアドレスやポートをＩＰヘッダ６１、ＵＤＰヘッダ６２などから取得し、オプション６５の情報と対応付けて記録する。図９の例では、通信状態データベース７６は、通信装置３０の識別子、ＩＰアドレス、ポートに対応付けてオプション６５に格納されている情報を記録している。
【００４８】
（１０）一方、手順（８）で比較部４３から比較の結果を入力された変更指示部４４は、比較部４３から通知されたパケット数を閾値（Ｃ）と比較する。ここで、変更指示部４４は、予め閾値を記憶することができ、また、適宜、データ５４から読み出すことができる。通信装置Ｎ２については、格納時間よりも再送時間が短いパケットの数は０で、閾値未満であるとする。すると、変更指示部４４は通信装置Ｎ２については、通信が劣化する可能性は無いと判断する。
【００４９】
一方、通信装置Ｎ３については、格納時間よりも再送時間が短いパケットの数が閾値Ｃを上回ったとする。すると、変更指示部４４は、通信装置Ｎ３の通信状況が劣化する可能性があると判定する。そこで、変更指示部４４は、パケットを受信する通信装置３０を変更することを通信装置Ｎ３に求める制御メッセージを通信装置Ｎ３に送信する。このとき、変更指示部４４は、メッセージタイプ６４の値を「１」に設定した制御メッセージを生成して送信処理部３４に出力する。送信処理部３４は、入力された制御メッセージを通信装置Ｎ３に送信する。
【００５０】
（１１）通信装置Ｎ３の受信処理部３１は、通信装置Ｎ１から受信した制御メッセージのメッセージタイプ６４が「１」に設定されていることを確認すると、その制御メッセージを接続先変更部４７に出力する。
【００５１】
（１２）通信装置Ｎ３の接続先変更部４７は、接続先の変更を要求する制御メッセージが入力されると、管理装置１０にむけて、新たな接続先の候補となる通信装置３０を問い合わせる制御メッセージを送信する。すなわち、接続先変更部４７は、メッセージタイプ６４の値が「２」に設定された制御メッセージを生成して送信処理部３４に出力する。送信処理部３４は、管理装置１０に向けて制御メッセージを送信する。
【００５２】
（１３）管理装置１０の受信部１１は、制御メッセージを受信すると、メッセージ処理部７３に出力する。メッセージ処理部７３は、制御メッセージのメッセージタイプ６４が「２」に設定されていることを確認すると、接続先の候補の問い合わせを受けていると判断し、接続先選択部７２に接続先の候補を示すリストの作成を要求する。接続先選択部７２は、通信状態データベース７６を参照して、通信状況の良好な通信装置３０のリストを作成する。
【００５３】
図１２は、通信状況の良好な通信装置３０のリスト（接続先候補リスト）の例を示す。通信装置３０のリストは、通信状態データベース７６に記録されているデータの一部を含む。接続先選択部７２は、格納時間が再送時間よりも短いパケットの数の最大値が閾値Ｃより小さい通信装置３０に関するデータを、格納時間が再送時間よりも短いパケットの数の最大値が小さい順に並べ、得られた結果を接続先候補リストとする。接続先選択部７２は、生成した接続先候補リストを、通信装置Ｎ３に送信する。このとき、接続先選択部７２は、メッセージタイプ６４に「３」を設定し、オプション６５に接続先候補リストを含めた制御メッセージを、通信装置Ｎ３に向けて送信する。
【００５４】
（１４）通信装置Ｎ３の受信処理部３１は、メッセージタイプ６４に「３」が設定された制御メッセージを受信すると、受信した制御メッセージを接続先変更部４７に出力する。接続先変更部４７は、制御メッセージに含まれている接続先候補リストを取得して、データ５４として格納する。さらに、通信装置Ｎ３の接続先変更部４７は、接続先候補リストに含まれている通信装置３０に接続を要求する。このとき、接続先変更部４７は、格納時間が再送時間よりも短いパケットの数の最大値が小さい通信装置３０ほど優先的に接続を要求するものとする。接続先変更部４７は、図７（ａ）に示すように、メッセージタイプ６４を「４」に設定し、さらに、オプション６５に通信装置Ｎ３のアドレスと通信に用いるポートの番号を含む制御メッセージを用いて接続を要求する。例えば、管理装置１０から図１２に示す接続先候補リストが送信されてきた場合、接続先変更部４７は、通信装置Ｎ４に制御メッセージを送信して接続を要求する。
【００５５】
（１５）通信装置Ｎ４の受信処理部３１は、メッセージタイプ６４の値が「４」に設定された制御メッセージを受信すると、制御メッセージを応答部４６に出力する。応答部４６は、通信装置Ｎ４がパケットを転送している通信装置３０の数を、通信装置Ｎ４からパケットを転送することができる通信装置３０の数の最大値と比較する。なお、各通信装置３０の応答部４６は、予め、パケットを転送することができる通信装置３０の数の最大値を記憶しているか、もしくは、データ５４から読み出すことができるものとする。また、応答部４６は、装置テーブル５２を参照することにより、現在、パケットを転送している通信装置３０の数を取得することができる。通信装置Ｎ４からパケットが転送されている通信装置３０の数が、パケットを転送することができる通信装置３０の最大値を超えていない場合、通信装置Ｎ４は、通信装置Ｎ３に通信を許可する。例えば、通信装置Ｎ４は、３つの通信装置３０にパケットを転送することができるとする。ここで、図２（ａ）に示すように、通信装置Ｎ５にしかパケットを送信していない場合、応答部４６は、通信装置Ｎ４が通信装置Ｎ３に接続を許可できると判断する。そこで、応答部４６は、メッセージタイプ６４の値を「５」に設定し、オプション６５に「接続許可」を示す情報を含めた制御メッセージを通信装置Ｎ３に送信する。
【００５６】
一方、通信装置Ｎ４が、すでに、パケットを転送することができる通信装置３０の数の最大値と同数の通信装置３０にパケットを転送している場合、通信装置Ｎ４は、通信装置Ｎ３に通信を許可しない。例えば、通信装置Ｎ４は３つの通信装置３０にパケットを転送することができる場合でも、接続の許可を求められたときに通信装置Ｎ４が３つの通信装置３０にパケットを送信している場合は、接続を拒否する。接続を拒否する場合、応答部４６は、メッセージタイプ６４の値を「５」に設定し、オプション６５に「接続拒否」を示す情報を含めた制御メッセージを生成する。接続拒否を表す制御メッセージを受信した場合、通信装置Ｎ３は、接続先候補リストに含まれている他の通信装置３０に接続を要求する。通信装置Ｎ３は、接続を許可されるまで、接続先候補リストに含まれている通信装置３０への接続要求を繰り替えす。
【００５７】
（１６）ここでは、通信装置Ｎ３が、通信装置Ｎ４から接続を許可する制御メッセージを受信したものとする。通信装置Ｎ３と通信装置Ｎ４の間で接続が確立される。すると、接続先変更部４７は、装置テーブル５２に通信装置Ｎ４を「上流」の装置として登録する。また、接続が確立されると、通信装置Ｎ３は、通信装置Ｎ１に、接続の切断を要求すると共に、接続先変更部４７は、通信装置Ｎ１の記録を装置テーブル５２から削除する。接続の切断を要求するとき、通信装置Ｎ３は、図７（ａ）に示すように、メッセージタイプ６４に「６」を設定した制御メッセージを通信装置Ｎ１に送信する。通信装置Ｎ１は、切断を要求されると、応答部４６は、通信装置Ｎ３との間の接続を切断する。また、通信装置Ｎ１の応答部４６は、図１０に示すテーブルや装置テーブル５２から通信装置Ｎ３に関するデータを削除する。これらの処理により、図２（ｂ)に示す経路でのマルチキャスト送信が開始される。
【００５８】
なお、本実施形態で説明した動作は、通信装置Ｎ１〜Ｎ４の間に限らず、パケットを送受信する複数の通信装置３０でも行われる動作である。この場合に、パケットを送信する装置の動作は通信装置Ｎ１、Ｎ４の動作と同様であり、パケットを受信する通信装置３０の動作は通信装置Ｎ２、Ｎ３と同様である。
【００５９】
また、閾値Ｃの値は１以上の任意の値にすることができる。オペレータ等は、閾値Ｃの値を、例えば、ネットワークの状態、アプリケーションや送受信されるデータの性質などに基づいて決定することができる。さらに、図７（ａ）に示すメッセージタイプテーブル５３に設定されているパラメータは実装に応じて変更されることがあり、メッセージタイプテーブル５３に設定されているパラメータの値に応じて、制御メッセージに設定される値は変更されることがある。
【００６０】
図１３は、通信装置３０で行われる動作の例を説明するフローチャートである。受信処理部３１は、リオーダリングバッファ３３へパケットを格納した時刻をタイマ３６から取得して、時刻テーブル５１に記録する（ステップＳ１）。一方、アプリケーション処理部３５は、リオーダリングバッファ３３からパケットを読み出すと、読み出した時刻を時刻テーブル５１に記録する（ステップＳ２）。算出部４１は、パケットが読み出された時刻から書き込まれた時刻を差し引いて、パケットがリオーダリングバッファ３３に格納されている時間（格納時間）を算出する（ステップＳ３）。変更指示部４４は、変数ｎを１に設定する（ステップＳ４）。比較部４３は、格納時間と、変数ｎで特定される、転送先の通信装置３０のうちの１つ（Ｎｎ）への再送時間とを比較し、再送時間の方が格納時間よりも長いパケットの数（Ｐｎ）を求める（ステップＳ５、Ｓ６）。次に、変更指示部４４は、比較部４３から比較結果（Ｐｎの値）を取得し、閾値（Ｃ）を超えているかを確認する（ステップＳ７）。再送時間の方が格納時間よりも長いパケットの数が閾値Ｃを超えている場合、変更指示部４４は、転送先の通信装置３０での通信品質が劣化すると判断し、転送先の通信装置３０にパケットの送信元を変更することを求める（ステップＳ８）。変更指示部４４は、ｎの値を１つインクリメントし、ｎの値を転送先の通信装置３０の数と比較する。ｎの値がパケットを転送している通信装置３０の数よりも大きくなるまでステップＳ５〜Ｓ１０の処理を繰り返す（ステップＳ１０)。パケットの転送先の通信装置３０から切断を要求する制御メッセージを受信すると、応答部４６は、装置テーブル５２に含まれているデータから、切断を要求してきた通信装置３０のデータを削除する（ステップＳ１１)。報告指示部４５は、パケットの送信先の通信装置３０が増減したかを確認する。さらに、報告指示部４５は、パケットの送信先の通信装置３０のいずれかで、再送時間の方が格納時間よりも長いパケットの数（Ｎ）が変動したかも確認する（ステップＳ１２）。報告指示部４５は、パケットの送信先の通信装置３０の数かＮの値のいずれかが変動した場合、管理装置１０に状態を通知する（ステップＳ１３)。このときは、図７に示した制御メッセージが用いられる。
【００６１】
図１４は、パケットが送信される経路が変更される場合の動作の例を説明するフローチャートである。以下の記載では、ある通信装置３０へパケットを転送している通信装置３０を上流の通信装置３０、もしくは、接続先の通信装置３０と記載する。通信装置３０が上流の通信装置３０から、接続先の変更を指示するメッセージ（張替指示）を受信する（ステップＳ２１)。すると、通信装置３０は、管理装置１０に接続先の候補を問い合わせる（ステップＳ２２）。管理装置１０は、通信状態データベース７６を用いて接続先候補リストを生成し、接続先を問い合わせた通信装置３０に、接続先候補リストを送信する（ステップＳ２３）。通信装置３０は、管理装置１０から接続先候補リストを受信する（ステップＳ２４）。通信装置３０は、接続先候補リストに通信装置３０に関するデータが記録されているかを確認する（ステップＳ２５）。接続先候補リストにデータが記録されている場合、接続先候補リストに記録されている通信装置３０のうちの１つを選択して、選択した通信装置３０に関する情報を接続先候補リストから削除する（ステップＳ２６）。通信装置３０は、接続先候補リストから選択した通信装置３０に接続を要求する（ステップＳ２７）。接続を要求した通信装置３０との間で接続が確立されるまで、ステップＳ２５〜Ｓ２８の処理が繰り返される（ステップＳ２８）。接続が確立されると、通信装置３０は、ステップＳ２１の指示があるまでパケットの転送元であった上流の通信装置３０に、接続の切断を要求する（ステップＳ２９）。
【００６２】
このように、上流の通信装置３０は、パケットの転送先の通信装置３０で、再送されたパケットがアプリケーションでの処理に間に合わない可能性があるパケットの数を用いて、下流の通信装置３０の通信品質を推測する。また、下流の通信装置３０での通信状況が劣化すると予測したときに、上流の通信装置３０は、下流の通信装置に接続先の変更を要求する。従って、通信状況の劣化が予測される通信装置の接続先を変更することにより、通信状況の劣化を回避することができる。
【００６３】
＜第２の実施形態＞
第２の実施形態では、管理装置１０が接続先候補を通知するときに、追加可能なパスがある通信装置３０を指定する場合について説明する。
【００６４】
図１５は、第２の実施形態で、報告指示部４５が管理装置１０に通信状況を報告する場合に、制御メッセージのオプション６５に含まれるデータの例を示す。図１５の例では、単位時間で観測された格納時間の平均値、格納時間よりも再送時間が長いパケット数の最大値、通信装置３０で追加可能なパスの数がオプション６５に含まれる。ここで、追加可能なパスの数は、応答部４６が求めるものとする。応答部４６は、予め、パケットを転送することができる通信装置３０の数の最大値を記憶しているか、データ５４から適宜、読み出す。さらに、応答部４６は、装置テーブル５２に「下流」の装置として登録されている通信装置３０の数を取得する。応答部４６は、パケットを転送することができる通信装置３０の数の最大値から、装置テーブル５２に登録されている下流の装置の数を差し引いた値を、追加可能なパスの数とする。
【００６５】
図１５に示す情報をオプション６５に含む制御メッセージを受信すると、管理装置１０は、通信状態データベース７６に、図９に示したデータに加えて、追加可能なパスの数を、通信装置３０ごとに記録する。
【００６６】
通信装置３０は、接続先候補リストを要求する際に、その通信装置３０が接続している上流の通信装置３０を特定する情報を管理装置１０に通知する。すると、管理装置１０は、接続先リストから、通信装置３０から通知された上流の通信装置３０と、追加可能なパスが無い通信装置３０を接続先候補リストから削除した上で、接続先候補リストを通知する。ここで、ある通信装置３０について追加可能なパスが無いことは、ある通信装置３０はパケットを転送することができる通信装置３０の数の最大値と同数の通信装置３０にパケットを転送していることを示す。すなわち、本実施形態では、接続を拒否する可能性の高い通信装置３０は接続先候補リストから除外される。従って、通信装置３０は、接続を拒否される通信装置３０に接続を要求する可能性が低くなる。
【００６７】
図１６は、第２の実施形態で行われる動作の例を説明するフローチャートである。上流の通信装置３０から接続先の変更を要求する制御メッセージを受信すると、通信装置３０は、接続先の変更を要求した通信装置３０を「接続先候補としない端末リスト」に記録する（ステップＳ３１、Ｓ３２）。通信装置３０は、管理装置１０に接続先候補を問い合わせる制御メッセージを送信する。このとき用いられる制御メッセージでは、メッセージタイプ６４が「２」に設定され、オプション６５に「接続先候補としない端末リスト」が含まれているものとする。
【００６８】
管理装置１０は、通信状態データベース７６から、再送時間の方が格納時間よりも長いパケットの数（Ｎ）が閾値（Ｃ）を超えていない通信装置３０のリストを作成する。さらに、生成したリストから「接続先候補としない端末リスト」に含まれる端末と、パスの追加ができない通信装置３０を削除する。管理装置１０は、得られたリスト（候補リスト)を、接続先端末の問い合わせをした通信装置３０に送信する（ステップＳ３４)。通信装置３０は、候補リストを受信すると、候補リストに記録されている通信装置３０に接続を要求する（ステップＳ３６）。なお、ステップＳ３６の動作は、図１４を参照しながら説明したステップＳ２５〜Ｓ２８と同様である。通信装置３０は、候補リストに含まれているいずれの通信装置３０とも接続を確立できない場合、接続を確立することができなかった通信装置３０と接続先の変更を要求した通信装置３０を「接続先候補としない端末リスト」に記録する。その後、ステップＳ３３以降の処理が繰り返される（ステップＳ３８）。一方、通信装置３０と候補リストに含まれている装置との間で接続が確立されると、通信装置３０は、接続先の変更を求めてきた上流装置に対して、接続の切断を求め、切断を切る（ステップＳ３９)。
【００６９】
図１５、図１６を参照しながら説明したように、第２の実施形態では、通信装置３０との間で接続を確立できる可能性のある装置が通信装置３０に通知される。従って、第１の実施形態に比べて、接続が確立されるまでに送受信される制御メッセージの数が減るので、帯域の有効活用につながる。また、通信装置３０は、接続できない装置に接続を求める可能性が低いので、通信装置３０の処理の負担も軽減される場合がある。
【００７０】
図１７は、通信装置３０や管理装置１０のハードウェア構成の例を示す。なお、通信装置３０や管理装置１０で用いられるハードウェアは、同一であっても良く、また、異なっていても良い。例えば、通信装置３０と管理装置１０では、用いられているCentral Processing Unit（ＣＰＵ）９１やメモリ９２が互いに異なっていても良く、同一であっても良い。
【００７１】
通信装置３０は、ＣＰＵ９１、メモリ９２、入力装置９３、出力装置９４、バス９５、外部記憶装置９６、媒体駆動装置９７、ネットワーク接続装置９９を備える。ＣＰＵ９１は、アプリケーション処理部３５、タイマ３６、品質管理部４０として動作する。メモリ９２は、転送用バッファ３２、リオーダリングバッファ３３、および、記憶部５０として動作する。ネットワーク接続装置９９は、受信処理部３１や送信処理部３４として動作する。入力装置９３は、例えばキーボードやマウスなどであり、ユーザは入力装置９３を用いて、通信装置３０にデータを入力できる。出力装置９４は、適宜、データ等を表示する。バス９５は、ＣＰＵ９１、メモリ９２、入力装置９３、出力装置９４、外部記憶装置９６、媒体駆動装置９７、ネットワーク接続装置９９などの間を相互にデータの受け渡しが行えるように接続する。外部記憶装置９６は、プログラムやデータなどを格納し、適宜、ＣＰＵ９１などに格納している情報を提供する。媒体駆動装置９７は、メモリ９２や外部記憶装置９６のデータを可搬記憶媒体９８に出力することができ、また、可搬記憶媒体９８からからプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体９８は、フロッピイディスク、Magneto-Optical（ＭＯ）ディスク、Compact Disc Recordable（ＣＤ−Ｒ）やDigital Versatile Disk Recordable（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。通信装置３０は、ネットワーク１００を介して、パケットや制御メッセージを送受信する。
【００７２】
管理装置１０もＣＰＵ９１、メモリ９２、入力装置９３、出力装置９４、バス９５、外部記憶装置９６、媒体駆動装置９７、ネットワーク接続装置９９を備える。管理装置１０では、ＣＰＵ９１は、制御部７１として動作する。また、メモリ９２は、記憶部７５として動作する。ネットワーク接続装置９９は、受信部１１、送信部１２として動作する。
【００７３】
なお、実施形態は上記に限られるものではなく、様々に変形可能である。例えば、時刻テーブル５１、装置テーブル５２、メッセージタイプテーブル５３、通信状態データベース７６などに格納される情報は、通信装置３０や管理装置１０の実装に応じて変更されることがある。
【００７４】
上述の第１および第２の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
送信装置、第１の通信装置、および、第２の通信装置が含まれるネットワークにおいて、前記第１の通信装置に、
第１のパケットを受信すると共に、前記第１のパケットを格納し、
前記第１のパケットを前記第２の通信装置に転送し、
前記第１のパケットを格納した時刻から前記第１のパケットに含まれるデータの処理を前記第１の通信装置で開始する時刻までの時間である格納時間を求め、
前記第２の通信装置への前記第１のパケットの再送に要する再送時間と前記格納時間を比較し、
前記格納時間が前記再送時間よりも短い場合、前記第１のパケットの後に前記送信装置から送信される第２のパケットを、前記第１の通信装置を介さずに受信するように前記第２の通信装置の接続先を変更することを指示する指示メッセージを、前記第２の通信装置に送信する
処理を実行させることを特徴とする通信プログラム。
（付記２）
前記指示メッセージは、
前記第１および第２の通信装置、ならびに、前記ネットワークに属する第３の通信装置の各々から、前記第１のパケットが受信されてから前記第１のパケットに含まれるデータの処理が開始されるまでの時間と、前記第１のパケットの再送にかかる時間の比較結果を通知されると共に、通知された比較結果を管理する管理装置に、前記第２の通信装置が前記第２のパケットの送信を要求する対象装置を問い合わせ、
前記管理装置で管理されている比較結果に基づいて選択された前記対象装置が通知されると、前記第２の通信装置が前記対象装置に接続し、
前記第２の通信装置が前記対象装置との接続に成功すると、前記第１の通信装置に前記第２の通信装置との間の接続の切断を通知する切断通知メッセージを送信する
ことを指示し、
前記切断通知メッセージを受信すると、前記第１の通信装置は、前記第２の通信装置との接続を切断する
ことを特徴とする付記１に記載の通信プログラム。
（付記３）
前記第１の通信装置は、所定の時間に前記第１の通信装置が受信して前記第２の通信装置に転送したパケットの各々について前記格納時間を求め、
前記格納時間が前記再送時間よりも短いパケット数を所定の閾値と比較し、前記パケット数が前記所定の閾値よりも大きくなると、前記第１の通信装置は、前記第２の通信装置に前記指示メッセージを送信する
処理をさらに行うことを特徴とする付記１もしくは２に記載の通信プログラム。
（付記４）
前記第２の通信装置は、前記対象装置を問い合わせる際に、前記第２の通信装置が接続している装置を識別する識別子を前記管理装置に送信し、
前記管理装置は、前記第２の通信装置が接続することができる装置であり、かつ、前記識別子で識別される装置ではない装置を前記対象装置とする
ことを特徴とする付記２に記載の通信プログラム。
（付記５）
前記再送時間は、前記第２の通信装置から前記第１の通信装置に通知され、
前記第２の通信装置は、前記第２の通信装置から前記第１の通信装置に計測パケットを送信した送信時刻から、前記計測パケットに対する応答パケットが前記第２の通信装置に到達した時刻までの時間に基づいて求められる
ことを特徴とする付記１〜４のいずれか１項に記載の通信プログラム。
（付記６）
送信装置、第１の通信装置、および、第２の通信装置が含まれるネットワークにおいて、前記第１の通信装置に、
第１のパケットを受信すると共に、前記第１のパケットを格納し、
前記第１のパケットを前記第２の通信装置に転送し、
前記第１のパケットを格納した時刻から前記第１のパケットに含まれるデータの処理を前記第１の通信装置で開始する時刻までの時間である格納時間を求め、
前記第２の通信装置への前記第１のパケットの再送に要する再送時間と前記格納時間を比較し、
前記格納時間が前記再送時間よりも短い場合、前記第１のパケットの後に前記送信装置から送信される第２のパケットを、前記第１の通信装置を介さずに受信するように前記第２の通信装置の接続先を変更することを指示する指示メッセージを、前記第２の通信装置に送信する
処理を実行させることを特徴とする通信方法。
（付記７）
第１のパケットを受信する受信部と、
前記第１のパケットを格納するバッファと、
前記第１のパケットを前記第２の通信装置に送信する送信部と、
前記第１のパケットを格納した時刻から前記第１のパケットに含まれるデータの処理を前記第１の通信装置で開始する時刻までの時間である格納時間を算出する算出部と、
前記第２の通信装置への前記第１のパケットの再送に要する再送時間と前記格納時間を比較する比較部と、
前記格納時間が前記再送時間よりも短い場合、前記第１のパケットの後に送信装置から送信される第２のパケットを、前記第１の通信装置を介さずに受信するように前記第２の通信装置の接続先を変更することを、前記第２の通信装置に指示する変更指示部
を備えることを特徴とする通信装置。
【符号の説明】
【００７５】
１０  管理装置
１１  受信部
１２  送信部
２５  ハブ
３０  通信装置
３１  受信処理部
３２  転送用バッファ
３３  リオーダリングバッファ
３４  送信処理部
３５  アプリケーション処理部
３６  タイマ
４０  品質管理部
４１  算出部
４２  再送時間取得部
４３  比較部
４４  変更指示部
４５  報告指示部
４６  応答部
４７  接続先変更部
５０  記憶部
５１  時刻テーブル
５２  装置テーブル
５３  メッセージタイプテーブル
５４  データ
６１  ＩＰヘッダ
６２  ＵＤＰヘッダ
６３  メッセージ部
６４  メッセージタイプ
６５  オプション
７１  制御部
７２  接続先選択部
７３  メッセージ処理部
７５  記憶部
７６  通信状態データベース
９１  ＣＰＵ
９２  メモリ
９３  入力装置
９４  出力装置
９５  バス
９６  外部記憶装置
９７  媒体駆動装置
９８  可搬記憶媒体
９９  ネットワーク接続装置
１００  ネットワーク
【図１】
0005728999.tif 000002
【図２】
0005728999.tif 000003
【図３】
0005728999.tif 000004
【図４】
0005728999.tif 000005
【図５】
0005728999.tif 000006
【図６】
0005728999.tif 000007
【図７】
0005728999.tif 000008
【図８】
0005728999.tif 000009
【図９】
0005728999.tif 000010
【図１０】
0005728999.tif 000011
【図１１】
0005728999.tif 000012
【図１２】
0005728999.tif 000013
【図１３】
0005728999.tif 000014
【図１４】
0005728999.tif 000015
【図１５】
0005728999.tif 000016
【図１６】
0005728999.tif 000017
【図１７】
0005728999.tif 000018