(57)【要約】【課題】サーバの負荷を軽減する。【解決手段】通信システムは、データを配信する情報処理装置と、情報処理装置から配信されたデータの配信ツリーに含まれる複数の通信装置を備える。複数の通信装置の各々は、通信装置のデータの転送先から、通信装置を介してデータを受信する装置での受信状況を通知するパケットを受信する。複数の通信装置の各々は、通信装置の前記データの受信状況と、通信装置からのホップ数毎のデータの受信状況が相対的に安定している通信装置の情報を、データの転送元に送信する。情報処理装置は、データの配信先から取得した情報を用いて、情報処理装置からのホップ数毎に、データの受信状況が相対的に安定している安定ノードを選択する。【選択図】図３
2017073734.tif 000002
【特許請求の範囲】
【請求項１】
データを配信する情報処理装置と、
前記情報処理装置から配信されたデータの配信ツリーに含まれる複数の通信装置
を備える通信システムであって、
前記複数の通信装置の各々は、
当該通信装置の前記データの転送先から、当該通信装置を介して前記データを受信する装置での受信状況を通知するパケットを受信し、
当該通信装置の前記データの受信状況と、当該通信装置からのホップ数毎の前記データの受信状況が相対的に安定している通信装置の情報を、前記データの転送元に送信し、
前記情報処理装置は、前記データの配信先から取得した情報を用いて、前記情報処理装置からのホップ数毎に、前記データの受信状況が相対的に安定している安定ノードを選択する
ことを特徴とする通信システム。
【請求項２】
前記情報処理装置は、前記安定ノードを前記情報処理装置からのホップ数に対応付けて、前記複数の通信装置に通知し、
第１の通信装置から前記データを受信する第２の通信装置は、
前記情報処理装置で選択された安定ノードの各々を、前記情報処理装置から当該安定ノードまでのホップ数に対応付けて記憶し、
前記情報処理装置から前記第２の通信装置までのホップ数を示す数値を取得し、
前記第１の通信装置からの前記データの受信に失敗すると、前記数値と同じホップ数に対応付けられた安定ノードである第３の通信装置に、前記データの再送を要求する
ことを特徴とする請求項１に記載の通信システム。
【請求項３】
前記第２の通信装置は、
前記第２の通信装置が前記安定ノードとして選択されている場合、前記第１の通信装置からの前記データの受信に失敗すると、前記数値よりも小さいホップ数に対応付けられた安定ノードである第４の通信装置に、前記データの再送を要求する
ことを特徴とする請求項２に記載の通信システム。
【請求項４】
前記情報処理装置は、前記情報処理装置からのホップ数毎に前記安定ノードを選択する処理と選択した安定ノードの通知を定期的に行い、
前記第２の通信装置は、
第１の時刻に通知された安定ノードを、当該安定ノードに対応付けられたホップ数および前記第１の時刻に対応付けて記憶し、
前記第１の時刻より後の第２の時刻に通知された安定ノードを、当該安定ノードに対応付けられたホップ数および前記第２の時刻に対応付けて記憶し、
前記第１の通信装置からの前記データの受信に失敗すると、前記第２の時刻と前記数値とに対応付けられた第１の安定ノードに前記データの再送を要求し、
前記第１の安定ノードからの前記データの受信に失敗すると、前記第１の時刻と前記数値とに対応付けられた第２の安定ノードに前記データの再送を要求する
ことを特徴とする請求項２または３に記載の通信システム。
【請求項５】
前記複数の通信装置の各々は、当該通信装置からのホップ数毎に、前記データの受信状況が相対的に安定した所定数の通信装置の情報を、前記データの転送元に送信し、
前記情報処理装置は、前記情報処理装置からのホップ数毎に、前記所定数の安定ノードを選択するとともに、選択した安定ノードの各々を、前記情報処理装置から送信されたパケットが当該安定ノードに届くまでの転送時間とともに、前記複数の通信装置に通知し、
前記第２の通信装置は、
前記情報処理装置からのホップ数毎に、前記所定数の安定ノードを記憶し、
前記第１の通信装置からの前記データの受信に失敗すると、前記数値に対応付けられ、かつ、前記転送時間が相対的に短い第１の安定ノードに前記データの再送を要求し、
前記第１の安定ノードからの前記データの受信に失敗すると、前記数値に対応付けられ、かつ、前記第１の安定ノードよりも前記転送時間が長い第２の安定ノードに前記データの再送を要求する
ことを特徴とする請求項２または３に記載の通信システム。
【請求項６】
データを配信する情報処理装置から配信されたデータが配信ツリーに含まれる複数の通信装置で受信されるネットワークにおいて、
前記複数の通信装置の各々は、
当該通信装置の前記データの転送先から、当該通信装置を介して前記データを受信する装置での受信状況を通知するパケットを受信し、
当該通信装置の前記データの受信状況と、当該通信装置からのホップ数毎の前記データの受信状況が相対的に安定している通信装置の情報を、前記データの転送元に送信し、
前記情報処理装置は、前記データの配信先から取得した情報を用いて、前記情報処理装置からのホップ数毎に、前記データの受信状況が相対的に安定している安定ノードを選択する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の通信装置を含む通信システムでの通信に関する。
【背景技術】
【０００２】
近年、ネットワークの高速化やコンピュータの性能の向上により、ネットワークを介した映像視聴が一般化している。しかし、映像の視聴の際に配信されるデータ量は、文書などが配信される場合のデータ量に比べて膨大である。このため、ネットワーク配信される映像の視聴者が増加するに従って、サーバへの負荷やネットワークへの負荷が大きくなり、その結果、ユーザが安定的に映像を視聴できなくなる場合がある。そこで、サーバやネットワークへの負荷を軽減するために、クライアント間でデータをリレー転送するＡＬＭ（Application Layer Multicast）技術が活用されてきている。リレー転送の際には、転送経路の決定や、エラー訂正に使用するための情報の取得先の決定などを行うために、サーバがネットワーク中の各装置の情報を収集する場合がある。
【０００３】
図１は、クライアント情報の収集方法の例を説明する図である。図１に示すネットワークには、サーバ１０と、ノードＮ１〜Ｎ６が含まれている。サーバ１０は、ノードＮ１とノードＮ２にＡＬＭデータを配信している。ノードＮ１は、ノードＮ３とノードＮ４にデータを配信し、ノードＮ２はノードＮ５にデータを配信する。ノードＮ３はノードＮ６にデータを配信する。
【０００４】
サーバ１０は、各ノードが受信に失敗したときの再送要求先を決定するために、ネットワーク中の各ノードに対して、制御情報の通知を要求する。ここで、制御情報には、各ノードでのデータの受信状況や装置の性能などが含まれるものとする。すると、ノードＮ１〜Ｎ６の各々は、制御情報を、図１の点線に示すように、サーバ１０に直接通知する。サーバ１０は、ノードＮ１〜Ｎ６の各々から得られた制御情報を用いて、ノードＮ１〜Ｎ６の中で相対的に安定してデータを受信しているノードを特定し、特定したノードをエラー訂正の際の再送要求先として、ネットワーク中の装置に通知する。図１に示す処理は、例えば、ピアツーピア（peer to peer、Ｐ２Ｐ）のインデックスサーバなどによって行われる。
【０００５】
図２は、クライアント情報の収集方法の例を説明する図である。図２に示すネットワークは、図１のネットワークと同様である。図２の例では、サーバ１０は、ＡＬＭデータの配信ツリーに沿って、各ノードから制御情報を取得する。例えば、ノードＮ５は、ノードＮ５の制御情報を含む制御パケットをノードＮ２に送信する。ノードＮ２は、ノードＮ５から受信した制御パケットをサーバ１０に転送する。さらに、ノードＮ２は、ノードＮ２地震の制御情報を含む制御パケットをサーバ１０に送信する。
【０００６】
同様に、ノードＮ６は、制御パケットをノードＮ６の上位ノードであるノードＮ３に送信する。ノードＮ３は、ノードＮ６から受信した制御パケットと、ノードＮ３自身の制御情報を通知するための制御パケットを、ノードＮ１に送信する。ノードＮ１には、ノードＮ４からもノードＮ４の制御情報を通知する制御パケットが送信される。このため、ノードＮ１は、ノードＮ４、ノードＮ３、ノードＮ６の各々で生成された制御パケットをサーバ１０に転送する。さらに、ノードＮ１は、ノードＮ１自身の制御情報を通知する制御パケットを、サーバ１０に送信する。
【０００７】
関連する技術として、データの範囲ごとに転送先装置を定義した転送先情報を参照して、受信した圧縮済みデータを分類するデータ中継装置が提案されている。データ中継装置は、圧縮済みのデータを再圧縮し、再圧縮された圧縮済みデータを他の装置に転送する際の通信速度や再圧縮時の処理速度等を転送先情報更新装置に送る。転送先情報更新装置は、通信速度や処理速度等の各情報に基づいて転送先情報を生成する（特許文献１など）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開第２００８／１０５４０６号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
配信ツリーに含まれる全ての装置での制御情報がサーバに通知される場合、サーバはネットワーク中の各装置の情報を取得し、取得した情報を用いて、再送データの要求先などの決定を処理する。このため、サーバでの処理負荷が高くなってしまう。
【００１０】
本発明は、１つの側面では、サーバの負荷を軽減することを目的とする。
【課題を解決するための手段】
【００１１】
ある１つの態様にかかる通信システムは、データを配信する情報処理装置と、前記情報処理装置から配信されたデータの配信ツリーに含まれる複数の通信装置を備える。前記複数の通信装置の各々は、当該通信装置の前記データの転送先から、当該通信装置を介して前記データを受信する装置での受信状況を通知するパケットを受信する。前記複数の通信装置の各々は、当該通信装置の前記データの受信状況と、当該通信装置からのホップ数毎の前記データの受信状況が相対的に安定している通信装置の情報を、前記データの転送元に送信する。前記情報処理装置は、前記データの配信先から取得した情報を用いて、前記情報処理装置からのホップ数毎に、前記データの受信状況が相対的に安定している安定ノードを選択する。
【発明の効果】
【００１２】
サーバの負荷を軽減できる。
【図面の簡単な説明】
【００１３】
【図１】クライアント情報の収集方法の例を説明する図である。
【図２】クライアント情報の収集方法の例を説明する図である。
【図３】実施形態にかかる通信方法の例を説明する図である。
【図４】通信装置の構成の例を説明する図である。
【図５】通信装置のハードウェア構成の例を説明する図である。
【図６】ネットワークの例を説明する図である。
【図７】送受信される情報の例を説明する図である。
【図８】送受信される情報の例を説明する図である。
【図９】通信装置が上流側の装置に通知する情報の例を説明する図である。
【図１０】安定ノードの決定例を説明する図である。
【図１１】下位ノードから受信状況を取得する方法の例を説明するフローチャートである。
【図１２】上位ノードへの通知処理の例を説明するフローチャートである。
【図１３】安定ノードの情報の通知処理の例を説明する図である。
【図１４】安定ノードの通知の際に配信される情報の例を説明する図である。
【図１５】安定ノードの通知処理の例を説明するフローチャートである。
【図１６】再送要求の要求先を決定する方法の例を説明するフローチャートである。
【図１７】安定ノードの決定例を説明する図である。
【図１８】再送要求先の選択方法の例を示すフローチャートである。
【図１９】安定ノードの情報の格納例を示す図である。
【発明を実施するための形態】
【００１４】
図３は、実施形態にかかる通信方法の例を説明する図である。図３に示すネットワークでも、ネットワークには、サーバ１０とノードＮ１〜Ｎ６の通信装置が含まれている。サーバ１０はノードＮ１とノードＮ２にデータ（ＡＬＭデータ）を配信し、ノードＮ１はノードＮ３とノードＮ４にデータを配信する。また、ノードＮ２はノードＮ５にデータを配信し、ノードＮ３はノードＮ６にデータを配信する。
【００１５】
一方、各通信装置（ノード）は、上位のノードに制御情報を通知する際に、自装置の下位の通信装置のうちで、通信状況が相対的に良好な装置の情報を合わせて通知する。また、下位の通信装置の情報は、自装置からのホップ数と対応付けて、上位の通信装置に通知する。なお、通信状況が良好であるかの判断基準は、通信状況に応じて変動しうる任意の値を用いて行われ得る。
【００１６】
例えば、ノードＮ６は、ノードＮ６での通信状況を通知するための通知パケットＰ１を、ノードＮ３に送信する。図３の例では、ノードＮ３から１ホップ下流側のノードはノードＮ６だけであるので、ノードＮ３は、ノードＮ６の情報をノードＮ３から１ホップ下流側のノードの情報として、上流側の装置に通知することを決定する。ノードＮ３は、ノードＮ３での通信状況と、ノードＮ６の通信状況と、ノードＮ６がノードＮ３から１ホップに位置することを表す情報を通知パケットＰ２に含める。ノードＮ３は、通知パケットＰ２をノードＮ１に送信する。
【００１７】
一方、ノードＮ４は、ノードＮ４での通信状況を通知するための通知パケットＰ３を、ノードＮ１に送信する。ここで、ノードＮ４は、いずれの通信装置にもデータを配信していないので、通知パケットＰ３には、ノードＮ４の下流側の装置の情報は含まれない。
【００１８】
ノードＮ１は、通知パケットＰ２とパケットＰ３を用いて、ノードＮ１からのホップ数毎に、通信状況が比較的良いノードを選択する。図３では、ノードＮ３とノードＮ４では、ノードＮ４での通信状況の方が良いとする。ノードＮ３とノードＮ４はいずれもノードＮ１から１ホップに位置しているので、ノードＮ１は、ノードＮ４の情報をノードＮ１から１ホップ下流側のノードの情報として、上流側の装置に通知することを決定する。一方、ノードＮ１は、ノードＮ１から２ホップの通信装置の情報としてノードＮ６の情報だけを取得している。このため、ノードＮ１は、ノードＮ６の情報をノードＮ１から２ホップ下流側のノードの情報として、上流側の装置に通知することを決定する。ノードＮ１は、ノードＮ１の通信状況、ノードＮ４の通信状況、ノードＮ６の通信状況、ノードＮ４およびノードＮ６の各々までのノードＮ１からのホップ数を含む通知パケットＰ４を生成する。ノードＮ１は、通知パケットＰ４をサーバ１０に送信する。
【００１９】
ノードＮ５は、ノードＮ５での通信状況を通知するための通知パケットＰ５を、ノードＮ２に送信する。図３の例では、ノードＮ２から１ホップ下流側のノードはノードＮ５だけである。このため、ノードＮ２は、ノードＮ５の情報をノードＮ２から１ホップ下流側のノードの情報として、上流側の装置に通知することを決定する。ノードＮ２は、ノードＮ２での通信状況、ノードＮ５の通信状況、ノードＮ５がノードＮ２から１ホップに位置することを表す情報を通知パケットＰ６に含める。ノードＮ２は、通知パケットＰ６をサーバ１０に送信する。
【００２０】
サーバ１０は、通知パケットＰ４と通知パケットＰ６を受信すると、サーバ１０からのホップ数毎に、通信状況が比較的良いノードを選択する。サーバ１０は、サーバ１０から１ホップ目の通信装置のうちで通信状況が相対的に良い装置を決定する。図３の例では、ノードＮ１とノードＮ２では、ノードＮ２での通信状況の方が良いとする。すると、サーバ１０は、ノードＮ２を、サーバ１０から１ホップの通信装置がパケットの受信に失敗した場合の再送要求先の装置に決定する。
【００２１】
同様に、サーバ１０は、サーバ１０から２ホップ目の通信装置と、サーバ１０から３ホップ目の通信装置についても、相対的に通信状況の良い通信装置を決定する。図３の例では、サーバ１０には、サーバ１０から２ホップ目の通信装置として、ノードＮ４とノードＮ５があることが通知されている。そこで、サーバ１０は、ノードＮ４とノードＮ５のうちで通信状況の良い通信装置を決定する。ここでは、ノードＮ４の通信状況の方が、ノードＮ５の通信状況よりも良好であるとする。すると、サーバ１０は、ノードＮ４を、サーバ１０から２ホップの通信装置がパケットの受信に失敗した場合の再送要求先の装置に決定する。
【００２２】
サーバ１０は、３ホップ目以降についても同様の処理を行う。図３の例では、サーバ１０には、サーバ１０から３ホップ目の通信装置として、ノードＮ６の情報のみが通知されているので、サーバ１０は、ノードＮ６を、サーバ１０から３ホップの通信装置のうちの通信状況が良好な装置とする。
【００２３】
サーバ１０は、サーバ１０からのホップ数毎に選択した通信装置を、各ホップ数に対応付けてネットワーク中の通信装置に通知する。ネットワーク中の各通信装置２０は、サーバ１０から通知された装置のうち、サーバ１０から自装置までのホップ数と同じホップ数に対応付けられた装置を、再送処理の要求先として記憶する。図３の例では、ノードＮ１は、ノードＮ２を、再送パケットの要求先として記憶する。また、ノードＮ３とノードＮ５は、ノードＮ４を再送パケットの要求先として記憶する。
【００２４】
このように、実施形態にかかる方法では、各通信装置は、自装置の下位の通信装置のうちで、通信状況が相対的に良好な装置の情報を合わせて通知する。このため、サーバ１０や配信ツリーの上流側の通信装置に対して膨大な量のパケットや情報が送信されることが防止される。従って、ネットワーク中の各装置の通信状況を収集する際に、サーバ１０や配信ツリーの上流側の通信装置に負担がかかることを防止できる。さらに、サーバ１０からのホップごとに通信状況が良好な装置が、再送要求先に設定されるので、再送処理が発生した場合においても、サーバ１０や配信ツリーの上流側の通信装置での処理負担が大きくなることを防止できる。
【００２５】
＜装置構成＞
図４は、通信装置２０の構成の例を説明する図である。通信装置２０は、通信部２１、制御部３０、記憶部４０を備える。通信部２１は、送信部２２と受信部２３を有する。制御部３０は、選択部３１、計測部３２、生成部３３、データ処理部３４、転送処理部３５、再送要求部３６を有する。記憶部４０は、再送要求先テーブル４１と受信状況データ４２と格納し、バッファ４３としても動作する。
【００２６】
送信部２２は、サーバ１０や他の通信装置２０などの他の装置へパケットを送信する。受信部２３は、サーバ１０や他の通信装置２０などの他の装置からパケットを受信する。選択部３１は、配信ツリーにおいて自装置よりも下流側の通信装置２０から受信した通知パケット中の情報を用いて、自装置の下流側の通信装置２０のうちで受信状況が良好な通信装置２０を、自装置からのホップ数ごとに選択する。計測部３２は、サーバ１０から配信されるデータを自装置に転送している通信装置２０との間の通信にかかる時間の計測処理を行う。生成部３３は、選択部３１で選択した通信装置２０の情報と、自装置の情報とを、配信ツリーの上流側の装置に通知するための通知パケットを生成する。データ処理部３４は、サーバ１０から配信された配信データを処理し、適宜、出力装置１０４（図５）などに出力する。転送処理部３５は、配信データを、配信ツリーの下流側の通信装置２０に対して送信するための処理を行う。さらに、転送処理部３５は、ネットワーク中の他の通信装置２０からデータの再送が要求されると、要求された再送データを、再送の要求元に転送する。再送要求部３６は、自装置が配信データを含むパケットの受信に失敗した場合、再送の要求先に再送処理を要求する。再送の要求先は、再送要求先テーブル４１に格納されており、再送要求部３６は、再送処理の際に適宜、再送要求先テーブル４１を参照する。
【００２７】
受信状況データ４２は、受信状況の良好な通信装置２０を選択する際に使用する通知パケットから抽出されたデータである。選択部３１は、受信状況データ４２を用いて、自装置からのホップ数ごとに、受信状況の相対的に良い装置を選択する。バッファ４３は、適宜、選択部３１やデータ処理部３４の処理待ちのパケットなどの格納に使用される。
【００２８】
図５は、通信装置２０のハードウェア構成の例を説明する図である。通信装置２０は、プロセッサ１０１、メモリ１０２、入力装置１０３、出力装置１０４、バス１０５、ネットワークインタフェース１０９を備える。プロセッサ１０１は、Central Processing Unit（ＣＰＵ）を含む任意の処理回路であり、メモリ１０２に記憶されたプログラムを実行することができる。プロセッサ１０１は、制御部３０を実現する。メモリ１０２は、Read Only Memory（ＲＯＭ）とRandom Access Memory（ＲＡＭ）を備え、記憶部４０として動作する。また、通信部２１は、ネットワークインタフェース１０９とプロセッサ１０１により実現される。バス１０５は、プロセッサ１０１、メモリ１０２、入力装置１０３、出力装置１０４、ネットワークインタフェース１０９を、相互にデータの送受信が可能になるように接続する。入力装置１０３は、キーボードやマウスなど、情報の入力に使用される任意の装置であり、出力装置１０４は、ディスプレイを含む表示デバイスなど、データの出力に使用される任意の装置である。
【００２９】
＜第１の実施形態＞
以下、配信データを転送するときにかかる時間が短いほど、転送データを含むパケットの転送に使用されるリンクの下流側の装置での通信状況が良いと判定される場合を例として説明する。ここで、転送時間が短いということは、通信装置２０の性能と、通信装置２０が通信に使用可能な転送速度の両方の面から、その通信装置２０が安定してデータを受信できるかを判定するための指標であるといえる。例えば、輻輳によりデータ転送に遅延が発生した場合や、パケットロスによって再送処理によるエラー訂正が行われた場合には、データの転送時間が長くなる。従って、転送時間が短い場合、データを安定して受信していると判断できる。
【００３０】
（ｉ）通信状況が相対的に良い通信装置２０の決定
図６は、ネットワークの例を説明する図である。図６に示すネットワークには、ノードＡ〜Ｒが含まれている。ノードＡはサーバ１０として動作する。ノードＢ〜Ｒはいずれも通信装置２０として動作する。
【００３１】
ノードＡは、ノードＢとノードＣにデータを配信する。ノードＢはノードＤ〜Ｆにデータを配信し、ノードＣはノードＧとノードＨにデータを配信する。ノードＤはノードＩとノードＪにデータを配信し、ノードＦはノードＫとノードＬにデータを配信する。ノードＧはノードＭとノードＮにデータを配信し、ノードＨはノードＯとノードＰにデータを配信する。ノードＩはノードＱとノードＲにデータを配信する。
【００３２】
以下の説明では、処理を行っているノードをわかりやすくするために、符号の末尾に、その動作を行っているノードＩＤと同じアルファベットの小文字を付加する。例えば、選択部３１ｃは、ノードＣで動作している選択部３１を指す。
【００３３】
次に、各通信装置２０においてデータの１ホップの転送にかかる時間の測定方法の例を説明する。上流側の通信装置２０の計測部３２は、転送するパケットに、自装置からそのパケットが送信される時刻を表すタイムスタンプを挿入する。なお、タイムスタンプの挿入は、転送処理の対象となる全てのパケットに対して行われてもよく、また、定期的に行われても良い。あるいは、所定のパケット数毎に、タイムスタンプが含められてもよい。
【００３４】
下流側の通信装置２０では、計測部３２は、タイムスタンプの含まれているパケットを受信すると、そのパケットの受信時刻とタイムスタンプの値の差分を、１ホップの転送処理にかかった時間として求める。さらに、計測部３２は、配信データを含むパケットが転送される場合、タイムスタンプの値を、そのパケットが自装置から転送される時刻に変更する。なお、通知パケットを生成する際には、生成部３３は、計測部３２で求めた差分を通知パケットに含める。
【００３５】
例えば、図６のノードＣの計測部３２ｃは、配信データを含むパケットに、ノードＣからそのパケットを出力する時刻ｔ１を表すタイムスタンプを含めたとする。ノードＧにおいて、時刻ｔ１のタイムスタンプを含むパケットが時刻ｔ２に受信されたとする。すると、ノードＧの計測部３２ｇは、パケットがノードＣからノードＧに転送される際にかかる時間をｔ２−ｔ１とする。その後、転送処理部３５ｇによって、パケットが転送されるため、計測部３２ｇは、パケット中のタイムスタンプをｔ３に変更する。ここで、ｔ３は、パケットがノードＧから送信される時刻である。ノードＭにおいて、時刻ｔ３のタイムスタンプを含むパケットが時刻ｔ４に受信されたとする。すると、ノードＭの計測部３２ｍは、パケットがノードＧからノードＭに転送される際にかかる時間をｔ４−ｔ３とする。
【００３６】
図６において、各矢印の横に記載されている値は、その矢印が表わす１ホップの転送処理にかかる時間の例である。以下、大文字のＴの後にパケットの転送区間の始点となるノードを表すアルファベットと、パケットの転送区間の終点となるノードを表すアルファベットを下付きで続けた文字列を用いて、所定の区間での転送にかかる時間を記載する。例えば、ノードＡからノードＢへのパケットの転送にかかる時間は、ＴＡＢと表記する。
【００３７】
すなわち、ノードＡからノードＢへのパケットの転送にかかる時間（ＴＡＢ）は５、ノードＡからノードＣへのパケットの転送にかかる時間（ＴＡＣ）は１である。ノードＢからノードＤまたはノードＥへのパケットの転送にかかる時間（ＴＢＤまたはＴＢＥ）は２であり、ノードＢからノードＦへのパケットの転送にかかる時間（ＴＢＦ）は１である。ノードＣからノードＧへのパケットの転送にかかる時間（ＴＣＧ）は１、ノードＣからノードＨへのパケットの転送にかかる時間（ＴＣＨ）は２である。ノードＤからノードＩへのパケットの転送にかかる時間（ＴＤＩ）は２、ノードＤからノードＪへのパケットの転送にかかる時間（ＴＤＪ）は１である。ノードＦからノードＫへのパケットの転送にかかる時間（ＴＦＫ）は１、ノードＦからノードＬへのパケットの転送にかかる時間（ＴＦＬ）は２である。ノードＧからノードＭへのパケットの転送にかかる時間（ＴＧＭ）は３、ノードＧからノードＮへのパケットの転送にかかる時間（ＴＧＮ）は４である。ノードＨからノードＯへのパケットの転送にかかる時間（ＴＨＯ）は１、ノードＨからノードＰへのパケットの転送にかかる時間（ＴＨＰ）は２である。ノードＩからノードＱへのパケットの転送にかかる時間（ＴＩＱ）は３、ノードＩからノードＲへのパケットの転送にかかる時間（ＴＩＲ）は１である。
【００３８】
図７は、送受信される情報の例を説明する図である。配信ツリーの下流側の各ノードの生成部３３は、ノードＩＤ、アドレス、１ホップ上流のノードから配信データを受信するまでの時間を含む通知パケットを生成する。生成部３３は、生成した通知パケットを、送信部２２を介して、配信ツリーの上流側の通信装置２０に送信する。
【００３９】
例えば、ノードＭの生成部３３ｍは、図７のＰ１１に示すように、ノードＩＤ＝Ｍ、アドレス＝ＩＰＭ、時間（ＴＧＭ）＝３という情報が含まれているパケットＰ１１を生成し、送信部２２ｍを介して、ノードＧに送信する。同様に、ノードＮの生成部３３ｎは、図７のＰ１２に示すように、ノードＩＤ＝Ｎ、アドレス＝ＩＰＮ、時間（ＴＧＮ）＝４という情報が含まれているパケットＰ１２を生成し、送信部２２ｎを介して、ノードＧに送信する。
【００４０】
ノードＧの受信部２３ｇは、パケットＰ１１とパケットＰ１２を受信すると、これらのパケットが通知パケットであると判定する。受信部２３ｇは、通知パケットを、選択部３１ｇに出力する。選択部３１ｇは、受信した通知パケットのうち、自装置からのデータの転送にかかる時間が最短のノードを特定するための処理を行う。すなわち、選択部３１ｇは、パケットＰ１１から時間（ＴＧＭ）＝３という情報を抽出し、パケットＰ１２から時間（ＴＧＮ）＝４という情報を抽出する。選択部３１ｇは、両者を比較することにより、ＴＧＭよりもＴＧＮの方が長いと判定する。すると、選択部３１ｇは、パケットＰ１１で通知されたノードＭの情報を上流側に送信することを決定する。さらに、受信状況データ４２ｇには、ノードＧが取得した下位ノードの情報が、ノードＧを起点としたツリーの情報として記憶される。
【００４１】
図７のＬ１は、受信状況データ４２ｇとして含まれるリストの例を示す。リストには、ルートノードＩＤ、ノードＩＤ、アドレス、時間、ホップ数が含まれる。ルートノードＩＤは、上流側の装置に通知する情報の起点となる装置の情報を示す。パケットＰ１１を受信した場合、選択部３１ｇは、ノードＧを起点としたツリーとしてノードＭを記録するので、Ｌ１の例では、ルートはノードＧとなる。ノードＩＤ、アドレス、時間は、通知対象となる装置から受信した通知パケット中の情報である。ノードＭの情報が上流側に通知される場合、受信状況データ４２ｇには、Ｌ１に示すように、ノードＩＤ＝Ｍ、アドレス＝ＩＰＭ、時間（ＴＧＭ）＝３が記録される。ホップ数は、ルートとなっている通信装置２０から、通知対象の装置までのホップ数である。Ｌ１の場合は、ルートはノードＧであり、通知対象の装置はノードＭであるので、ホップ数は１に設定される。なお、受信状況データ４２ｇには上流側に通知する対象以外のノードの情報が含まれても良い。
【００４２】
次に、生成部３３ｇは、上流側に通知するための通知パケットを生成する。通知パケットには、ノードＧ自身についてのノードＩＤ、アドレス、１ホップ上流の装置からの送信データを含むパケットの受信にかかる時間、受信状況データ４２ｇ中の情報が含まれる。ノードＧが生成する通知パケットＰ２１に含まれる情報の例を、図７のＰ２１に示す。Ｐ２１の上の四角には、ノードＧについての情報が含まれており、下の四角には、受信状況データ４２ｇ中の情報が含まれている。通知パケットＰ２１には、ノードＧの通信状況を表す情報として、ノードＩＤ＝Ｇ、アドレス＝ＩＰＧ、時間（ＴＣＧ）＝１という情報が含められる。さらに、Ｌ１に示す情報が、ノードＧから１ホップ目に位置する装置のうちで、相対的に通信状況の良い装置の情報として、パケットＰ２１に含められる。以下の説明では、ある通信装置２０から同じホップ数だけ下流の通信装置２０のうちで相対的に通信状況の良い装置のことを、「安定ノード」と記載することがある。
【００４３】
ノードＨにおいても、ノードＯとノードＰから通知パケットをそれぞれ受信することにより、ノードＨから１ホップ下流側の装置のうちで通信状況の良好な装置を特定する。図６の例では、ノードＨからノードＯへのパケットの転送にかかる時間（ＴＨＯ）＝１に対し、ノードＨからノードＰへのパケットの転送にかかる時間（ＴＨＰ）＝２である。このため、選択部３１ｈは、ノードＯを安定ノードとして選択する。そこで、生成部３３ｈは、ノードＨがノードＣからデータを受信する際にかかる時間などの情報を含めた通知パケットＰ２２を生成する。パケットＰ２２には、ノードＨの情報として、ノードＩＤ＝Ｈ、アドレス＝ＩＰＨ、時間（ＴＣＨ）＝２という情報が含められる。さらに、ノードＨをツリーのルートとした場合のノードＯの情報として、ルートノードＩＤ＝Ｈ、ノードＩＤ＝Ｏ、アドレス＝ＩＰＯ、時間（ＴＨＯ）＝１、ホップ数＝１という情報が含められる。
【００４４】
次に、パケットＰ２１とパケットＰ２２を受信したノードＣにおいて行われる処理の例を説明する。ノードＣの受信部２３ｃは、パケットＰ２１とパケットＰ２２を受信し、これらのパケットを選択部３１ｃに出力する。
【００４５】
選択部３１ｃは、パケットＰ２１で通知された情報を用いて、ノードＣをツリーのルートとした場合のノードＧおよびノードＭの情報を求める。ノードＣをルートとした場合、ルートＧの情報は、以下のように表せる。
ルートノードＩＤ＝Ｃ
ノードＩＤ      ＝Ｇ
アドレス        ＝ＩＰＧ
時間（ＴＣＧ）    ＝１
ホップ数        ＝１
同様に、ノードＣをルートとした場合、ルートＭの情報は、以下のように表せる。
ルートノードＩＤ＝Ｃ
ノードＩＤ      ＝Ｍ
アドレス        ＝ＩＰＭ
時間（ＴＣＭ）    ＝ＴＣＧ＋ＴＧＭ＝１＋３＝４
ホップ数        ＝２
選択部３１ｃは、得られた情報を、受信状況データ４２ｃとして格納する。
【００４６】
選択部３１ｃは、パケットＰ２２を用いて取得した情報についても同様の処理を行う。ノードＣをルートとした場合、ルートＨの情報は、以下のように表せる。
ルートノードＩＤ＝Ｃ
ノードＩＤ      ＝Ｈ
アドレス        ＝ＩＰＨ
時間（ＴＣＨ）    ＝２
ホップ数        ＝１
同様に、ノードＣをルートとした場合、ルートＯの情報は、以下のように表せる。
ルートノードＩＤ＝Ｃ
ノードＩＤ      ＝Ｏ
アドレス        ＝ＩＰＯ
時間（ＴＣＯ）    ＝ＴＣＨ＋ＴＨＯ＝２＋１＝３
ホップ数        ＝２
【００４７】
次に、選択部３１ｃは、ノードＣからのホップ数毎に、ノードＣからのパケットの転送時間が最短の通信装置２０を、そのホップ数での安定ノードとして選択する。すなわち、選択部３１ｃは、（１）式で表される演算処理により、安定ノードを選択する。
Ｚｔ：ｈｏｐ  ｎ＝ｍｉｎ｛ＴＺＹ＋Ｙｔ：ｈｏｐ（ｎ−１）｝  ・・・（１）
（１）式において、Ｚｔ：ｈｏｐ  ｎは、ノードＺをルートとした場合に、ノードＺからｎホップ下流のノードまでにパケットを転送する際にかかる時間の最小値を表す。Ｙは、ノードＺより１ホップ下流側のノードを表す。Ｙｔ：ｈｏｐ（ｎ−１）は、ノードＹをルートとした場合に、ノードＹからｎ−１ホップ下流のノードにパケットを転送する際にかかる時間の最小値である。
【００４８】
図７を参照しながら説明している例では、選択部３１ｃは、以下の演算処理により、選択部３１ｃから２ホップ目にあるノードまでの転送にかかる最短時間を求める。
Ｃｔ：ｈｏｐ２＝ｍｉｎ｛ＴＣＧ＋Ｇｔ：ｈｏｐ１，ＴＣＨ＋Ｈｔ：ｈｏｐ１，｝
＝ｍｉｎ｛ＴＣＧ＋ＴＧＭ，ＴＣＨ＋ＴＨＯ｝
＝ｍｉｎ｛１＋３，２＋１｝＝３
さらに、Ｃｔ：ｈｏｐ２は、ノードＣからノードＯへの転送処理にかかる時間（ＴＣＯ）であることから、選択部３１ｃは、ノードＣから２ホップ目の安定ノードはノードＯであると判定する。
【００４９】
選択部３１ｃは、ノードＣから１ホップ下流のノードについても、転送時間を用いて、通信状況が相対的に良好な通信装置２０を求める。図６、図７の例では、ＴＣＨの値よりもＴＣＧの値が小さいので、選択部３１ｃは、ノードＣから１ホップ目の安定ノードはノードＧであると判定する。選択部３１ｃは、得られた判定結果も受信状況データ４２ｃとして記憶する。
【００５０】
図８は、ノードＣから上流側の装置に送信される情報の例である。生成部３３ｃは、図８のＰ３１に示すように、自ノード情報と転送先リストの情報を含む通知パケットＰ３１を生成する。自ノード情報には、ノードＩＤ、アドレス、１ホップ上流の装置からパケットを受信する際にかかる時間が含まれる。なお、ノードＣが１ホップ上流の装置からパケットを受信する際にかかる時間（ＴＡＣ）は、前述した処理と同様の処理により、計測部３２ｃによって計測されている。選択部３１ｃは、計測部３２ｃから計測結果を取得することにより、ノードＩＤ＝Ｃ、アドレス＝ＩＰＣ、時間（ＴＡＣ）＝１という情報を、自ノード情報として記録する。
【００５１】
転送先リストは、ノードＣの下流側の装置のうちで、ノードＣからのホップ数毎に選択した安定ノードについての、ノードＣをルートとしたときの情報である。ノードＣから１ホップ下流の安定ノードとしてノードＧが選択されているので、生成部３３ｃは、ノードＧについて受信状況データ４２ｃに記憶されている情報を、転送先リストに含める。このため、図８のＬ１１に示す情報が、ノードＧについての情報として通知パケット３１に含められる。同様に、ノードＣから２ホップ下流の安定ノードとしてノードＯが選択されているので、生成部３３ｃは、ノードＯについて受信状況データ４２ｃに記憶されている情報を、転送先リストに含める。このため、図８のＬ１２に示す情報が、ノードＯについての情報として通知パケット３１に含められる。
【００５２】
図９は、ネットワーク中の各通信装置２０が上流側の装置に通知する情報の例を説明する図である。なお、各通信装置２０は、自装置の情報も合わせて上流側の装置に通知する。ネットワーク中の各通信装置２０が図６〜図８を参照しながら説明したような処理により、自装置からのホップ数毎に安定ノードの情報を上流側に通知するので、各リンクで上流側に通知される情報は図９に示すようになる。すなわち、ノードＧは、ノードＧから１ホップ下流までの最短転送時間（Ｇｔ：ｈｏｐ１）がＴＧＭであることと、１ホップ下流での安定ノードがノードＭであることを通知する。図９では紙面の関係から、最短転送時間をＴＧＭのように、パケットの転送区間を明示することにより、安定ノードとして選択された装置のＩＤも示している。なお、実際に通信装置２０間で送受信される情報には、図７や図８を示して説明したように、各ホップ数についての最短転送時間と、安定ノードのＩＤが含まれている。
【００５３】
同様に、ノードＨは、ノードＨから１ホップ下流までの最短転送時間（Ｈｔ：ｈｏｐ１）がＴＨＯであることと、１ホップ下流での安定ノードがノードＯであることを通知する。ノードＣは、ノードＣから１ホップ下流ではノードＧの通信状況が良好で、最短転送時間（Ｃｔ：ｈｏｐ１）がＴＣＧであることと、２ホップ下流ではノードＯの通信状況が良好で、最短転送時間（Ｃｔ：ｈｏｐ２）がＴＣＯであることを通知する。
【００５４】
ノードＢよりも下流側でも同様の処理が行われる。従って、ノードＩは、ノードＩから１ホップ下流ではノードＲの通信状況が良好で、最短転送時間（Ｉｔ：ｈｏｐ１）がＴＩＲであることを通知する。ノードＤは、ノードＤから１ホップ下流ではノードＪの通信状況が良好で、最短転送時間（Ｄｔ：ｈｏｐ１）がＴＤＪであることと、２ホップ下流ではノードＲの通信状況が良好で、最短転送時間（Ｄｔ：ｈｏｐ２）がＴＤＲであることを通知する。ノードＦは、ノードＦから１ホップ下流ではノードＫの通信状況が良好で、最短転送時間（Ｆｔ：ｈｏｐ１）がＴＦＫであることを通知する。
【００５５】
ノードＢは、ノードＢから１ホップ下流ではノードＦの通信状況が良好で、最短転送時間（Ｂｔ：ｈｏｐ１）がＴＢＦであることと、２ホップ下流ではノードＫの通信状況が良好で、最短転送時間（Ｂｔ：ｈｏｐ２）がＴＢＫであることを通知する。さらに、ノードＢは、ノードＢから３ホップ下流ではノードＲの通信状況が良好で、最短転送時間（Ｂｔ：ｈｏｐ３）がＴＢＲであることも通知する。
【００５６】
このように、ネットワーク中の各通信装置２０は、上流側に対して、自装置をルートとしたときの通信状況が比較的良好な通信装置２０の情報をホップ数毎に通知するので、上流側の装置では、その装置の１ホップ下流の装置から通知された情報を処理すればよい。このため、配信ツリーの上流側の通信装置２０であっても、その通信装置２０にとっての配信データの転送先の各々から通知された転送時間を、自装置からのホップ数毎に比較するだけで、各ホップ数での通信状況が比較的良好な通信装置２０を特定できる。
【００５７】
サーバ１０として動作しているノードＡには、ノードＣから１ホップ目ではノードＧ、２ホップ目ではノードＯの通信状況が良好であり、Ｃｔ：ｈｏｐ１＝ＴＣＧと、Ｃｔ：ｈｏｐ２＝ＴＣＯであることが通知されている。また、ノードＢから１ホップ目ではノードＦ、２ホップ目ではノードＫ、３ホップ目ではノードＲの通信状況が良好であり、Ｂｔ：ｈｏｐ１＝ＴＢＦ、Ｂｔ：ｈｏｐ２＝ＴＢＩ、Ｂｔ：ｈｏｐ３＝ＴＢＲであることも、ノードＡに通知されている。
【００５８】
サーバ１０は、通信装置２０と同様の処理により、サーバ１０からのホップ数毎に、通信状況が比較的良好な通信装置２０を特定する。例えば、ノードＡから４ホップ目のノードについては、ノードＲの情報しかノードＡに通知されていない。このため、ノードＡは、ノードＡから４ホップ目の安定ノードをノードＲとする。ノードＡから３ホップ目のノードについては、ノードＫとノードＯの情報がノードＡに通知されている。そこで、ノードＡは、以下の処理により、ノードＡから３ホップ目の安定ノードをノードＯに決定する。
Ａｔ：ｈｏｐ３＝ｍｉｎ｛ＴＡＫ，ＴＡＯ｝
＝ｍｉｎ｛ＴＡＢ＋ＴＢＫ，ＴＡＣ＋ＴＣＯ｝
＝ｍｉｎ｛５＋２，１＋３｝＝ＴＡＯ＝４
【００５９】
同様に、ノードＡから２ホップ目のノードについては、ノードＦとノードＧの情報がノードＡに通知されている。そこで、ノードＡは、以下の処理により、ノードＡから２ホップ目の安定ノードをノードＧに決定する。
Ａｔ：ｈｏｐ２＝ｍｉｎ｛ＴＡＦ，ＴＡＧ｝
＝ｍｉｎ｛ＴＡＢ＋ＴＢＦ，ＴＡＣ＋ＴＣＧ｝
＝ｍｉｎ｛５＋１，１＋１｝＝ＴＡＧ＝２
【００６０】
さらに、ノードＡから１ホップ目のノードについては、ノードＢとノードＣの情報がノードＡに通知されている。そこで、ノードＡは、以下の処理により、ノードＡから１ホップ目の安定ノードをノードＧに決定する。
Ａｔ：ｈｏｐ１＝ｍｉｎ｛ＴＡＢ，ＴＡＣ｝
＝ｍｉｎ｛５，１｝＝ＴＡＣ＝１
【００６１】
図１０は、安定ノードの決定例を説明する図である。図１０には、図６〜図９の処理によりノードＡによって決定された安定ノードを、ノードＡからのホップ数毎に角の丸い四角で囲んで示している。また、ノードＡからのホップ数の同じ装置を点線で囲んでいる。ノードＡから１ホップの通信装置２０はノードＢとノードＣであり、ノードＣがノードＡから１ホップの安定ノードに選択されている。ノードＡから２ホップの通信装置２０はノードＤ〜Ｈであり、ノードＧがノードＡから２ホップの安定ノードに選択されている。ノードＡから３ホップの通信装置２０はノードＩ〜Ｐであり、ノードＯがノードＡから３ホップの安定ノードに選択されている。ノードＡから４ホップの通信装置２０はノードＱ〜Ｒであり、ノードＲがノードＡから４ホップの安定ノードに選択されている。
【００６２】
図１１は、下位ノードから受信状況を取得する方法の例を説明するフローチャートである。図１１の処理は、継続的に行われていてもよく、また、サーバ１０や上位側の通信装置２０などからの要求に応じて所定の時間行われても良い。
【００６３】
通信装置２０中の選択部３１は、下位ノードから、下位ノードをルートとしたときの情報を含む通知パケットを受信するまで待機する（ステップＳ１）。受信部２３において、下位データから通知パケットを受信する（ステップＳ２）。選択部３１は、受信部２３から通知パケットを取得し、通知パケット中に含まれているデータを、バッファ４３に格納する（ステップＳ３）。選択部３１は、適宜、下位ノードから受信した通知パケットに含まれていたデータを、バッファ４３から読み出し、自装置をルートノードとした配信ツリーでの通信状況を表わすデータに変換する（ステップＳ４）。選択部３１は、変換処理によって得られたデータを、受信状況データ４２として格納する。その後、選択部３１は、下位ノードからの通知パケットの受信処理を停止するかを判定する（ステップＳ５）。下位ノードからの通知パケットの受信処理を停止しない場合、ステップＳ１以降の処理が繰り返される（ステップＳ５でＮｏ）。一方、下位ノードからの通知パケットの受信処理を停止する場合、選択部３１は処理を終了する（ステップＳ５でＹｅｓ）。
【００６４】
図１２は、上位ノードへの通知処理の例を説明するフローチャートである。図１２の処理は、図１１の処理によって少なくとも１つの通知パケットを受信した後に行われる。図１２では、変数ｎと定数Ｐｎを使用する。変数ｎは、安定ノードを選択する対象のホップ数の特定に使用される。定数Ｐｎは、処理対象のホップ数の最大値である。なお、図１２は一例であり、実装に応じて通信装置２０での処理は変更され得る。例えば、選択部３１は、自装置からのホップ数が大きい順に安定ノードを求めても良い。
【００６５】
選択部３１は、自装置をルートノードとしたときの下位ノードのデータを参照する（ステップＳ１１）。ここで、自装置をルートノードとしたときの下位ノードのデータは、図１１の処理により、受信状況データ４２として記憶部４０に格納されているものとする。
【００６６】
次に、選択部３１は、自装置をルートノードとしたときの最下流の通信装置２０までのホップ数Ｐｎを求める（ステップＳ１２）。選択部３１は、変数ｎを０に設定する（ステップＳ１３）。選択部３１は、変数ｎを１つインクリメントして、定数Ｐｎと比較する（ステップＳ１４、Ｓ１５）。選択部３１は、変数ｎが定数Ｐｎ以下の場合、選択部３１は、自装置をルートノードとした場合のホップ数ｎの安定ノードを選択し、ステップＳ１４に戻る（ステップＳ１５でＹｅｓ、ステップＳ１６）。変数ｎが定数Ｐｎを超えた場合、選択部３１は、自装置をルートノードとした配信ツリーにおいて、各ホップ数についての安定ノードの選択処理が終了したと判定する（ステップＳ１５でＮｏ）。選択部３１は、自装置をルートノードとした配信ツリーの各ホップ数についての安定ノードの情報を含む通知パケットを生成し、送信部２２を介して、上位ノードに送信する（ステップＳ１６）。
【００６７】
（ｉｉ）安定ノードの通知処理
次に、サーバ１０として動作している装置が、ネットワーク中の各通信装置２０に対して、サーバ１０が選択した安定ノードを通知するときの処理について説明する。
【００６８】
図１３は、安定ノードの情報の通知処理の例を説明する図である。図１３においても、ノードＡがサーバ１０として動作し、ノードＢ〜Ｒが通信装置２０として、データを受信しているものとする。また、ノードＡでの安定ノードの選択は、図９と図１０を参照しながら説明したとおりであるとする。
【００６９】
サーバ１０として動作するノードＡは、配信データの転送経路を用いて、ノードＡが選択した安定ノードを、各安定ノードのホップ数に対応付けて、ネットワーク中の通信装置２０に通知する。ノードＡが選択した安定ノードと各安定ノードのホップ数を対応付けた情報は、各通信装置２０において再送を要求する要求先（再送元）の選択用のデータとして使用される。このため、以下の説明では、ノードＡが選択した安定ノードと各安定ノードのホップ数を対応付けた情報を「再送元選択用データ」と記載することがある。再送元選択用データを通知する際に使用される制御パケットには、再送元選択用データと共に、再送元選択用データを選択した装置から制御パケットを受信する装置までのホップ数の情報が含まれる。再送元選択用データの具体例については後述する（図１４）。
【００７０】
例えば、ノードＡからは、再送元選択用データを通知するために、以下の情報を含む制御パケットＰ４１が送信される。
ルートノードからのホップ数＝１
Ａ：ｈｏｐ１＝Ｃ
Ａ：ｈｏｐ２＝Ｇ
Ａ：ｈｏｐ３＝Ｏ
Ａ：ｈｏｐ４＝Ｒ
ここで、「ルートノードからのホップ数」は、再送元選択用データとして通知される安定ノードを選択した装置から、再送元選択用データを含む制御パケットを受信した通信装置２０までのホップ数である。また、Ａ：ｈｏｐ  ｎは、ノードＡからｎホップ目の安定ノードを表わすデータの例である。例えば、Ａ：ｈｏｐ１＝Ｃは、ノードＡから１ホップ目の安定ノードがノードＣであることを表わす。なお、図１３では見やすくするために、各ノードに関連付けて通知される情報の詳細は省略している。また、図１３では、「ルートノードからのホップ数」を単に「ホップ数」と記載している。さらに、図１３の例では、各安定ノードの情報の後に、カッコ書きで、ノードＡから各安定ノードにパケットを転送する際にかかる時間が含められている。
【００７１】
ノードＡは、ノードＡが選択した安定ノードの情報を含むパケットＰ４１を、図１３に示すように、ノードＢとノードＣに送信する。
【００７２】
ノードＢにおいて、受信部２３ｂは、受信したパケットをデータ処理部３４ｂに出力する。データ処理部３４ｂは、パケットＰ４１から再送元選択用データを抽出し、再送要求先テーブル４１ｂとして格納する。さらに、データ処理部３４ｂは、ルートノードからのホップ数＝１であることも合わせて記憶部４０に記憶する。データ処理部３４ｂは、制御パケットＰ４１を転送処理部３５ｂに出力する。
【００７３】
転送処理部３５ｂは、入力された制御パケットにおいて、ルートノードからのホップ数を１つインクリメントすることにより、以下の情報を含む制御パケットＰ４２を生成する。
ルートノードからのホップ数＝２
Ａ：ｈｏｐ１＝Ｃ（１）
Ａ：ｈｏｐ２＝Ｇ（２）
Ａ：ｈｏｐ３＝Ｏ（４）
Ａ：ｈｏｐ４＝Ｒ（１０）
転送処理部３５ｂは、送信部２２ｂを介して、制御パケットＰ４２をノードＤ〜Ｆに送信する。
【００７４】
ノードＣにおいても、制御パケットＰ４１が受信されると、ノードＢと同様の処理が行われる。すなわち、ノードＣにおいても、再送要求先テーブル４１ｃの更新と、転送用の制御パケットの生成が行われる。図１３の例では、ノードＣにおいて、制御パケットＰ４３が生成されたとする。なお、制御パケットＰ４３には、ルートノードからのホップ数＝２という情報と、再送元選択用データが含まれている。ノードＣは、ノードＧとノードＨに、制御パケットＰ４３を送信する。
【００７５】
ノードＤ〜Ｆは、制御パケットＰ４２を受信すると、ノードＢが制御パケットＰ４１を受信したときと同様にパケットＰ４２を処理する。このため、ノードＤは、以下の情報を含む制御パケットＰ４４をノードＩとノードＪに送信する。
ルートノードからのホップ数＝３
Ａ：ｈｏｐ１＝Ｃ（１）
Ａ：ｈｏｐ２＝Ｇ（２）
Ａ：ｈｏｐ３＝Ｏ（４）
Ａ：ｈｏｐ４＝Ｒ（１０）
同様の処理により、ノードＦもルートノードからのホップ数＝３という情報と、再送元選択用データを含む制御パケットを、ノードＫとノードＬに送信する。
【００７６】
ノードＧとノードＨは、制御パケットＰ４３を受信すると、ノードＤが制御パケットＰ４２を受信したときと同様にパケットＰ４３を処理する。このため、ノードＨは、以下の情報を含む制御パケットＰ４５をノードＯとノードＰに送信する。
ルートノードからのホップ数＝３
Ａ：ｈｏｐ１＝Ｃ（１）
Ａ：ｈｏｐ２＝Ｇ（２）
Ａ：ｈｏｐ３＝Ｏ（４）
Ａ：ｈｏｐ４＝Ｒ（１０）
同様の処理により、ノードＧも、ルートノードからのホップ数＝３という情報と、再送元選択用データを含む制御パケットを、ノードＭとノードＮに送信する。
【００７７】
ノードＩは、制御パケットＰ４４を受信すると、同様に制御パケットＰ４４を処理する。このため、ノードＩは、以下の情報を含む制御パケットＰ４６をノードＱとノードＲに送信する。
ルートノードからのホップ数＝４
Ａ：ｈｏｐ１＝Ｃ（１）
Ａ：ｈｏｐ２＝Ｇ（２）
Ａ：ｈｏｐ３＝Ｏ（４）
Ａ：ｈｏｐ４＝Ｒ（１０）
【００７８】
なお、上流側の通信装置２０から制御パケットを受信したときのノードＪ〜Ｒにおいても、再送要求先テーブル４１の更新と、ルートノードから自装置までのホップ数の記憶が、同様の手順で行われる。
【００７９】
図１４は、安定ノードの通知の際に、再送元選択用データとして配信される情報の例を説明する図である。図１４は、再送元選択用データとして、ノードＡをルートとしたときの安定ノードの各々の情報を通知するリストが使用される場合の例である。リストＬ２１はノードＣの情報を表わしており、リストＬ２２はノードＧ、リストＬ２３はノードＯ、リストＬ２４はノードＲの情報を表わしている。各ノードの情報の通知に使用されるリストには、ルートノードＩＤ、ノードＩＤ、ノードアドレス、ルートノードからの転送にかかる時間、ルートノードからのホップ数が含まれている。図１３の例では、ノードＣには１９２．１６６．０．１というアドレスが割り当てられているとする。また、ノードＧに割り当てられたアドレスは１９２．１６６．１．２２であり、ノードＯに割り当てられたアドレスは１９２．１６６．０．２であるとする。さらに、ノードＲに割り当てられたアドレスは１９２．１６６．１．２５であるとする。
【００８０】
各通信装置２０は、再送要求先テーブル４１として、図１４に表わす情報を記憶することができる。このため、ネットワーク中のいずれの装置も、ノードＡによって、１ホップ目の安定ノードがノードＣ、２ホップ目の安定ノードがノードＧ、３ホップ目の安定ノードがノードＯ、４ホップ目の安定ノードがノードＲに決定されたことを認識できる。
【００８１】
サーバ１０から配信データが配信されると、各通信装置２０では、受信部２３を介してデータ処理部３４が配信データを含むパケットを取得し、配信されたデータを処理する。ここで、パケットの受信処理に失敗すると、再送要求部３６は、再送要求先テーブル４１を参照して、再送の要求先を決定する。このとき、再送要求部３６は、再送要求先テーブル４１中に記録されている安定ノードのうち、ルートノードから自装置までのホップ数とホップ数が同じ安定ノードを、再送処理の要求先として優先的に選択する。
【００８２】
例えば、図１３のネットワークにおいて、ノードＢでパケットの受信に失敗したとする、すると、再送要求部３６ｂは、ルートノードであるノードＡからノードＢまでのホップ数が１ホップであることから、図１４のリストＬ２１に示す情報に基づき、ノードＣを再送要求先に決定する。同様に、ノードＤ〜Ｆ、ノードＨがパケットの受信に失敗した場合、リストＬ２２に示す情報に基づき、ノードＧを再送の要求先とする。また、ノードＩ〜Ｎ、ノードＰがパケットの受信に失敗した場合、リストＬ２３に示す情報に基づき、ノードＯを再送の要求先とする。さらに、ノードＱがパケットの受信に失敗した場合、リストＬ２４に示す情報に基づき、ノードＲを再送の要求先とする。
【００８３】
一方、各ホップ数での安定ノードとして選択されたノードは、パケットの受信に失敗した場合、同じホップ数のノードには自装置が受信に失敗したパケットが届いていない可能性が高いと判定する。そこで、自装置よりも１ホップだけサーバ１０に近い通信装置２０に対して、再送を要求する。
【００８４】
例えば、ノードＲがパケットの受信に失敗したとする。再送要求部３６ｒは、再送要求先テーブル４１ｒを用いて、ノードＲがノードＡによって安定ノードに指定されていることを確認する。すると再送要求部３６ｒは、ノードＡからノードＲまでのホップ数が４であることから、ホップ数＝３の安定ノードに再送を要求することを決定する。再送要求先テーブル４１ｒ中には、図１４のリストＬ２３に示す情報が含まれている。このため、再送要求部３６ｒは、ノードＯを再送パケットの要求先に決定する。
【００８５】
同様に、ノードＯがパケットの受信に失敗すると、再送要求部３６ｏは、再送要求先テーブル４１ｏ中のリストＬ２３に示す情報を用いて、ノードＯがノードＡによって安定ノードに指定されていることを確認する。すると、再送要求部３６ｏは、ノードＡからノードＯまでのホップ数が３であることから、ホップ数＝２の安定ノードに再送を要求することを決定する。そこで、再送要求部３６ｏは、図１４のリストＬ２２に示す情報を再送要求先テーブル４１ｏから取得することにより、ノードＧを再送パケットの要求先に決定する。
【００８６】
さらに、ノードＧがパケットの受信に失敗すると、再送要求部３６ｇは、再送要求先テーブル４１ｇ中のリストＬ２２に示す情報を用いて、ノードＧがノードＡによって安定ノードに指定されていることを確認する。すると、再送要求部３６ｇは、ノードＡからノードＧまでのホップ数が２であることから、ホップ数＝１の安定ノードに再送を要求することを決定する。そこで、再送要求部３６ｇは、図１４のリストＬ２１に示す情報を再送要求先テーブル４１ｏから取得することにより、ノードＣを再送パケットの要求先に決定する。
【００８７】
いずれの通信装置２０においても、再送要求部３６は、再送の要求先を決定すると、再送の要求先に対して、再送を要求するパケットを特定するための情報を含む再送要求を生成し、送信部２２を介して、再送の要求先の装置に送信する。再送が要求された通信装置２０中の転送処理部３５は、再送要求に応じて、再送処理を行う。
【００８８】
図１５は、安定ノードの通知処理の例を説明するフローチャートである。各通信装置２０は、上位ノードから再送元選択用データを含む制御パケットを受信するまで待機する（ステップＳ２１）。通信装置２０中の受信部２３は、制御パケットを受信すると、制御パケットをデータ処理部３４に出力する。データ処理部３４は、制御パケット中の再送元選択用データを、受信状況データ４２として記憶する（ステップＳ２２）。さらに、データ処理部３４は、ルートノードから自装置までのホップ数も制御パケットから取得する。
【００８９】
次に、転送処理部３５は、自装置から配信データを取得している下位ノード（配信データの転送先）があるかを判定する（ステップＳ２３）。自装置から配信データを取得している下位ノードがある場合、転送処理部３５は、再送元選択用データを含む制御パケットを、下位ノードに送信する（ステップＳ２３でＹｅｓ、ステップＳ２４）。このとき、転送処理部３５は、再送元選択用データと共に、ルートノードから制御パケットの受信先の通信装置２０までのホップ数を、制御パケットに含めておく。その後、データ処理部３４は、サーバ１０からの制御パケットの受信処理を停止するかを判定する（ステップＳ２５）。サーバ１０からの制御パケットの受信処理を停止しない場合、ステップＳ２１以降の処理が繰り返される（ステップＳ２５でＮｏ）。一方、サーバ１０からの制御パケットの受信処理を停止する場合、データ処理部３４は、再送元選択用データの通知に関する処理を終了する（ステップＳ２５でＹｅｓ）。一方、ステップＳ２３において、自装置から配信データを取得している下位ノードがないと判定された場合も、ステップＳ２５以降の処理が行われる（ステップＳ２３でＮｏ）。
【００９０】
図１６は、再送要求の要求先を決定する方法の例を説明するフローチャートである。再送を要求する際、再送要求部３６は、ルートノードから自装置までのホップ数を取得する（ステップＳ３１）。再送要求部３６は、再送要求先テーブル４１を参照して、自装置が再送要求先として指定されているかを判定する（ステップＳ３２）。ここで、再送要求先として指定されている装置は、ルートノードによって安定ノードして選択された通信装置２０である。自装置が再送要求先テーブル４１において再送要求先として指定されていない場合、再送要求部３６は、ルートノードから自装置までのホップ数と同じホップ数に対応付けられた装置を、再送要求先テーブル４１から、再送要求先として選択する（ステップＳ３２でＮｏ、ステップＳ３３）。自装置が再送要求先に指定されている場合、再送要求部３６は、ルートノードから自装置までのホップ数よりも１つ小さいホップ数に対応付けられた装置を、再送要求先テーブル４１から、再送要求先として選択する（ステップＳ３２でＹｅｓ、ステップＳ３４）。
【００９１】
第１の実施形態で説明した手順により、再送要求先が決定される場合、ネットワーク中の装置の情報を取得する際にサーバ１０や配信ツリーの上流側のノードに対してかかる負荷は、配信ツリーの下流側の通信装置２０と大きな差が無い。このため、ネットワーク中の各通信装置２０の情報を取得する際に、サーバ１０や配信ツリーの上流側のノードの負荷が増大することを防止できる。
【００９２】
さらに、サーバ１０から安定ノードとして決定される通信装置２０は、サーバ１０からのホップ数ごとに決定されるので、通信装置２０は、自装置の上流以外の装置に対して再送要求ができる。例えば、図１３を参照しながら説明した例において、ノードＬは、ノードＯに再送要求を行う。ここで、ノードＬとノードＯでは、サーバ１０として動作しているノードＡ以外には、配信ツリーの上流側に共通する通信装置２０が無い。このため、例えば、ノードＬの上流側のノードＢやノードＦでパケットが壊れた等の事情によりノードＬにパケットが届かない場合であっても、ノードＬの再送要求先となっているノードＯには、壊れていないパケットが届いている可能性がある。換言すると、第１の実施形態にかかる方法によって、再送の要求先を決定することにより、各通信装置２０は、自装置への配信データの転送元でエラーが発生していても、異なるブランチに属する通信装置２０からデータを取得できる可能性がある。このため、データの受信に成功しやすい。また、エラーが発生しているブランチの上流側の通信装置２０に対して、再送要求が集中することにより、上流側の通信装置２０での処理負荷が増大することも防止できる。
【００９３】
さらに、通信装置２０が再送を要求する際に、サーバ１０からのホップ数が自装置と同じ装置を選択するので、配信データの送信のタイミングが近い装置に対して再送を要求できる。このため、配信ツリーの上流側への再送要求の数を削減できる。なお、安定装置は同じホップ数の装置間では、サーバ１０からのデータ転送にかかる時間が相対的に短い装置である。従って、再送の要求元と要求先でサーバ１０からのホップ数が近くても、再送の要求先の通信装置２０には、再送が要求されたパケットが届いていることが期待できる。
【００９４】
＜第２の実施形態＞
第２の実施形態では、各通信装置２０は、上流側の装置に対して、自装置をルートとしたときの各ホップ数について、予め決められた所定数分の通信装置２０の情報を通知する。通知パケットの生成方法や、各通信装置２０での安定ノードの決定方法、サーバ１０での安定ノードの決定方法などは、通信装置２０やサーバ１０において安定ノードが各ホップ数につき所定の台数分ずつ通知されることを除いて、第１の実施形態と同様である。例えば、所定数が２である場合、各通信装置２０は、自装置をルートとしたときのツリー中の自装置からのホップ数ごとに、相対的に通信状況の良好な通信装置２０の情報を２台ずつ通知パケットに含める。なお、自装置から同じホップ数だけ下流側に、通信状況が同程度の通信装置２０が複数ある場合、各通信装置２０は、なるべく複数のブランチに含まれる通信装置２０を通知しようとする。
【００９５】
図１７は、安定ノードの決定例を説明する図である。以下、図１７を参照しながら、各通信装置２０での安定ノードの選択の例と、サーバ１０での安定ノードの選択方法の例を説明する。なお、図１７においても、ノードＡはサーバ１０として動作し、ノードＢ〜Ｒは通信装置２０として動作しているものとする。また、図１７中の矢印は配信データの転送経路であり、矢印の近傍の数字は、そのリンクでのパケットの転送にかかる時間であるとする。
【００９６】
ネットワーク中の装置の情報の収集の際、ノードＩは、ノードＩから１ホップ目の安定ノードの情報として、ノードＱとノードＲの情報と、ノードＩ自身の情報を含む通知パケットを、ノードＤに送信する。ノードＤは、ノードＤから１ホップ目の安定ノードの情報として、ノードＩとノードＪの情報を選択し、ノードＤから２ホップ目の安定ノードの情報として、ノードＱとノードＲの情報を選択する。ノードＤは、選択した安定ノードの情報とノードＤ自身の情報を含む通知パケットをノードＢに送信する。このため、ノードＤからノードＢへは、ノードＤの情報の他に、以下の情報を含む通知パケットが送信される。
安定ノード１−１
ルートノードＩＤ＝Ｄ
ノードＩＤ      ＝Ｉ
アドレス        ＝ＩＰＩ
時間（ＴＤＩ）    ＝２
ホップ数        ＝１
安定ノード１−２
ルートノードＩＤ＝Ｄ
ノードＩＤ      ＝Ｊ
アドレス        ＝ＩＰＪ
時間（ＴＤＪ）    ＝１
ホップ数        ＝１
安定ノード２−１
ルートノードＩＤ＝Ｄ
ノードＩＤ      ＝Ｑ
アドレス        ＝ＩＰＱ
時間（ＴＤＱ）    ＝５
ホップ数        ＝２
安定ノード２−２
ルートノードＩＤ＝Ｄ
ノードＩＤ      ＝Ｒ
アドレス        ＝ＩＰＲ
時間（ＴＤＲ）    ＝３
ホップ数        ＝２
【００９７】
一方、ノードＦからノードＢに送信される通知パケットには、ノードＦが選択した安定ノードとして、以下の情報が含まれている。
安定ノード１−１
ルートノードＩＤ＝Ｆ
ノードＩＤ      ＝Ｋ
アドレス        ＝ＩＰＫ
時間（ＴＦＫ）    ＝１
ホップ数        ＝１
安定ノード１−２
ルートノードＩＤ＝Ｆ
ノードＩＤ      ＝Ｌ
アドレス        ＝ＩＰＬ
時間（ＴＦＬ）    ＝２
ホップ数        ＝１
【００９８】
このため、ノードＢには、ノードＢから２ホップ目のノードの情報として、ノードＩ〜Ｌの情報が通知される。選択部３１ｂは、ノードＢから２ホップ目の安定ノードを決定する際に、各ノードまでのパケットの転送にかかる時間を以下のように計算する。
ノードＢからノードＫへの転送にかかる時間（ＴＢＫ）＝２
ノードＢからノードＬへの転送にかかる時間（ＴＢＬ）＝３
ノードＢからノードＪへの転送にかかる時間（ＴＢＪ）＝３
ノードＢからノードＩへの転送にかかる時間（ＴＢＩ）＝４
【００９９】
まず、選択部３１ｂは、安定ノードとして、ノードＫを選択する。さらに、選択部３１ｂは、ノードＬとノードＪのいずれかを安定ノードに選択することを決定する。ここで、既に安定ノードとして選択されたノードＫの情報はノードＦからノードＢに通知されている。ノードＬの情報もノードＦからノードＢに通知されている。一方、ノードＪの情報はノードＤからノードＢに通知されている。このため、選択部３１ｂは、ノードＪはノードＫと異なるブランチに属し、ノードＬはノードＫと同じブランチに属すると判定する。そこで、選択部３１ｂは、なるべく異なる種類のブランチ中の通信装置２０を安定ノードとして選択するために、ノードＪを、ノードＢから１ホップ目に位置する２つ目の安定ノードに選択する。
【０１００】
同様の処理により、ノードＢは、１ホップ目の安定ノードとしてノードＤとノードＦ、２ホップ目の安定ノードとしてノードＪとノードＫ、３ホップ目の安定ノードとしてノードＱとノードＲの情報を、ノードＡに通知したとする。
【０１０１】
ノードＣもノードＢと同様の処理により、１ホップ目の安定ノードとしてノードＧとノードＨ、２ホップ目の安定ノードとしてノードＭとノードＯの情報を、ノードＡに通知したとする。
【０１０２】
ノードＡでも、ノードＢやノードＣと同様の基準により、各ホップにつき２台の安定ノードが決定される。図１７の例では、ノードＡから１ホップ目の安定ノードとして、ノードＢとノードＣが選択される。ノードＡから２ホップ目の安定ノードとして、ノードＧとノードＦが選択される。ここで、ノードＡからノードＨへのパケットの転送時間ＴＡＨとノードＡからノードＦへのパケットの転送時間ＴＡＦは同じ値であるので、ノードＡは、ノードＧとは異なるブランチに含まれているノードＦを安定ノードに選択している。さらに、ノードＡから３ホップ目の安定ノードとしてノードＯとノードＫ、４ホップ目の安定ノードとしてノードＱとノードＲが選択される。
【０１０３】
ノードＡは、決定した安定ノードの情報を、第１の実施形態と同様に、制御パケットを用いて、ネットワーク中の全ての通信装置２０に通知する。各通信装置２０は、通知された再送元選択用データを再送要求先テーブル４１に記録する。
【０１０４】
パケットの受信に失敗すると、再送要求部３６は、再送要求先テーブル４１から、ルートノードからのホップ数が、ルートノードから自装置までのホップ数と同じ安定ノードのうち、転送時間が短いほうの安定ノードを優先的に再送要求の送信先に選択する。選択した転送先から再送パケットの受信に失敗すると、再送要求部３６は、再送要求の送信先を、ルートノードから自装置までのホップ数と同じ安定ノードのうち、未選択の安定ノードに変更する。
【０１０５】
図１８は、再送要求先の選択方法の例を示すフローチャートである。図１８のフローチャートでは、変数ｎと定数Ｎを使用する。変数ｎは、送信対象とした安定ノードの数であり、定数Ｎは、通信装置２０に記憶されている安定ノードの総数である。まず、再送要求部３６は、変数ｎを１に設定する（ステップＳ４１）。再送要求部３６は、送信部２２を介して、ｎ番目に転送時間が短い安定ノードに再送要求を行う（ステップＳ４２）。再送データの受信に失敗すると、再送要求部３６は、変数ｎを定数Ｎと比較する（ステップＳ４３でＮｏ、ステップＳ４４）。変数ｎが定数Ｎ未満の場合、再送要求部３６は、変数ｎを１つインクリメントして、ステップＳ４２以降の処理を繰り返す（ステップＳ４４でＮｏ）。一方、データの受信に成功した場合（ステップＳ４３でＹｅｓ）や、変数ｎが定数Ｎ以上の場合、再送要求部３６は再送要求を終了する。
【０１０６】
なお、安定ノードに選択されている通信装置２０中の再送要求部３６は、ルートノードから自装置までのホップ数と同じ安定ノードのうち、自装置ではない装置を、再送要求先テーブル４１から、再送要求の送信先として選択する。
【０１０７】
このように、第２の実施形態では、複数の通信装置２０が安定ノードとして選択されるため、再送要求先でも配信データの受信に失敗していたとしても、他の再送要求先から配信データを取得できる可能性がある。このため、安定的にデータを配信できる。
【０１０８】
＜変形例＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【０１０９】
受信状況が良好であるかを判定する際の指標は、実装に応じて変更され得る。例えば、各通信装置２０に備えられているプロセッサ１０１のクロック数と、その通信装置２０が上流側の装置との通信に使用可能な転送速度を掛け合わせた数を、受信状況の指標として使用することができる。この場合、指標値が大きいほど、通信状況が良好な通信装置２０であると判定される。
【０１１０】
図１９は、安定ノードの情報の格納例を示す図である。図１９を参照しながら、各通信装置２０が、最新の再送元選択用データの他に、過去に通知された再送元選択用データも保持している場合について説明する。
【０１１１】
例えば、ノードＡから配信ツリーに沿って、図１４に示す安定ノードの情報を含む制御パケットが送信されたとする。すると、制御パケットを受信したノードは、ルートノードから自装置までのホップ数と共に、受信時刻も合わせて再送要求先テーブル４１に記録する。例えば、ノードＤが時刻Ｔ１に図１３に示す制御パケットＰ４２を受信したとする。すると、再送要求先テーブル４１ｄには、図１９のＬ３１に示すように、ルートノードからのホップ数が２であることと、再送元選択用データの他に、時刻＝Ｔ１という情報が対応付けて格納される。
【０１１２】
その後、時間の変動と共に、ノードＧの通信にかかる時間が長くなったため、ノードＡから配信ツリーに沿って、以下の再送元選択用データを含む制御パケットが送信されたとする。
Ａ：ｈｏｐ１＝Ｃ（１）
Ａ：ｈｏｐ２＝Ｈ（３）
Ａ：ｈｏｐ３＝Ｏ（４）
Ａ：ｈｏｐ４＝Ｒ（１０）
【０１１３】
また、ノードＤは、新たな再送元選択用データを時刻Ｔ２に受信したとする。すると、再送要求先テーブル４１ｄには、図１９のＬ３２に示すように、ルートノードからのホップ数が２であることと、再送元選択用データの他に、時刻＝Ｔ２という情報も追加される。このように、各通信装置２０は、最新の再送元選択用データの他に、複数の再送元選択用データを予め決められた数だけ記憶する。
【０１１４】
この場合、各通信装置２０の再送要求部３６は、最新の再送元選択用データで通知された再送要求先を優先的に選択する。再送要求先からのパケットの受信に失敗すると、過去に再送要求先として通知された装置を、新たな再送要求先とする。例えば、ノードＤがデータの受信に失敗すると、最新の再送元選択用データが図１９のＬ３２の情報であると判定する。すると、ノードＤは、Ｌ３２の情報に基づいて、ノードＨに再送を要求する。ここで、ノードＤは、ノードＨからの再送データの受信にも失敗したとする。すると、ノードＤは、時刻Ｔ２より前の時刻Ｔ１に、図１９のＬ３１中の再送元選択用データを受信していることを判定する。そこで、ノードＤは、Ｌ３１の情報に基づいて、ノードＧに再送を要求する。
【０１１５】
このように、複数の制御パケット中の情報を記憶することにより、各通信装置２０は、実質的に複数の再送要求先を指定可能になる。このため、再送要求の対象となっているデータの受信に成功する確率が向上する。なお、安定ノードに選択された通信装置２０は、ルートノードからのホップ数が同じ自装置以外の装置が再送先として通知されている場合、過去に通知された再送元選択用データに従って、再送要求先を決定してもよい。
【０１１６】
上述の第１および第２の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
データを配信する情報処理装置と、
前記情報処理装置から配信されたデータの配信ツリーに含まれる複数の通信装置
を備える通信システムであって、
前記複数の通信装置の各々は、
当該通信装置の前記データの転送先から、当該通信装置を介して前記データを受信する装置での受信状況を通知するパケットを受信し、
当該通信装置の前記データの受信状況と、当該通信装置からのホップ数毎の前記データの受信状況が相対的に安定している通信装置の情報を、前記データの転送元に送信し、
前記情報処理装置は、前記データの配信先から取得した情報を用いて、前記情報処理装置からのホップ数毎に、前記データの受信状況が相対的に安定している安定ノードを選択する
ことを特徴とする通信システム。
（付記２）
前記情報処理装置は、前記安定ノードを前記情報処理装置からのホップ数に対応付けて、前記複数の通信装置に通知し、
第１の通信装置から前記データを受信する第２の通信装置は、
前記情報処理装置で選択された安定ノードの各々を、前記情報処理装置から当該安定ノードまでのホップ数に対応付けて記憶し、
前記情報処理装置から前記第２の通信装置までのホップ数を示す数値を取得し、
前記第１の通信装置からの前記データの受信に失敗すると、前記数値と同じホップ数に対応付けられた安定ノードである第３の通信装置に、前記データの再送を要求する
ことを特徴とする付記１に記載の通信システム。
（付記３）
前記第２の通信装置は、
前記第２の通信装置が前記安定ノードとして選択されている場合、前記第１の通信装置からの前記データの受信に失敗すると、前記数値よりも小さいホップ数に対応付けられた安定ノードである第４の通信装置に、前記データの再送を要求する
ことを特徴とする付記２に記載の通信システム。
（付記４）
前記情報処理装置は、前記情報処理装置からのホップ数毎に前記安定ノードを選択する処理と選択した安定ノードの通知を定期的に行い、
前記第２の通信装置は、
第１の時刻に通知された安定ノードを、当該安定ノードに対応付けられたホップ数および前記第１の時刻に対応付けて記憶し、
前記第１の時刻より後の第２の時刻に通知された安定ノードを、当該安定ノードに対応付けられたホップ数および前記第２の時刻に対応付けて記憶し、
前記第１の通信装置からの前記データの受信に失敗すると、前記第２の時刻と前記数値とに対応付けられた第１の安定ノードに前記データの再送を要求し、
前記第１の安定ノードからの前記データの受信に失敗すると、前記第１の時刻と前記数値とに対応付けられた第２の安定ノードに前記データの再送を要求する
ことを特徴とする付記２または３に記載の通信システム。
（付記５）
前記複数の通信装置の各々は、当該通信装置からのホップ数ごとに、前記データの受信状況が相対的に安定した所定数の通信装置の情報を、前記データの転送元に送信し、
前記情報処理装置は、前記情報処理装置からのホップ数毎に、前記所定数の安定ノードを選択するとともに、選択した安定ノードの各々を、前記情報処理装置から送信されたパケットが当該安定ノードに届くまでの転送時間とともに、前記複数の通信装置に通知し、
前記第２の通信装置は、
前記情報処理装置からのホップ数毎に、前記所定数の安定ノードを記憶し、
前記第１の通信装置からの前記データの受信に失敗すると、前記数値に対応付けられ、かつ、前記転送時間が相対的に短い第１の安定ノードに前記データの再送を要求し、
前記第１の安定ノードからの前記データの受信に失敗すると、前記数値に対応付けられ、かつ、前記第１の安定ノードよりも前記転送時間が長い第２の安定ノードに前記データの再送を要求する
ことを特徴とする付記２または３に記載の通信システム。
（付記６）
データを配信する情報処理装置から配信されたデータが配信ツリーに含まれる複数の通信装置で受信されるネットワークにおいて、
前記複数の通信装置の各々は、
当該通信装置の前記データの転送先から、当該通信装置を介して前記データを受信する装置での受信状況を通知するパケットを受信し、
当該通信装置の前記データの受信状況と、当該通信装置からのホップ数毎の前記データの受信状況が相対的に安定している通信装置の情報を、前記データの転送元に送信し、
前記情報処理装置は、前記データの配信先から取得した情報を用いて、前記情報処理装置からのホップ数毎に、前記データの受信状況が相対的に安定している安定ノードを選択する
ことを特徴とする通信方法。
（付記７）
前記情報処理装置は、前記安定ノードを前記情報処理装置からのホップ数に対応付けて、前記複数の通信装置に通知し、
第１の通信装置から前記データを受信する第２の通信装置は、
前記情報処理装置で選択された安定ノードの各々を、前記情報処理装置から当該安定ノードまでのホップ数に対応付けて記憶し、
前記情報処理装置から前記第２の通信装置までのホップ数を示す数値を取得し、
前記第１の通信装置からの前記データの受信に失敗すると、前記数値と同じホップ数に対応付けられた安定ノードである第３の通信装置に、前記データの再送を要求する
ことを特徴とする付記６に記載の通信方法。
（付記８）
前記第２の通信装置は、
前記第２の通信装置が前記安定ノードとして選択されている場合、前記第１の通信装置からの前記データの受信に失敗すると、前記数値よりも小さいホップ数に対応付けられた安定ノードである第４の通信装置に、前記データの再送を要求する
ことを特徴とする付記７に記載の通信方法。
（付記９）
前記情報処理装置は、前記情報処理装置からのホップ数毎に前記安定ノードを選択する処理と選択した安定ノードの通知を定期的に行い、
前記第２の通信装置は、
第１の時刻に通知された安定ノードを、当該安定ノードに対応付けられたホップ数および前記第１の時刻に対応付けて記憶し、
前記第１の時刻より後の第２の時刻に通知された安定ノードを、当該安定ノードに対応付けられたホップ数および前記第２の時刻に対応付けて記憶し、
前記第１の通信装置からの前記データの受信に失敗すると、前記第２の時刻と前記数値とに対応付けられた第１の安定ノードに前記データの再送を要求し、
前記第１の安定ノードからの前記データの受信に失敗すると、前記第１の時刻と前記数値とに対応付けられた第２の安定ノードに前記データの再送を要求する
ことを特徴とする付記７または８に記載の通信方法。
（付記１０）
前記複数の通信装置の各々は、当該通信装置からのホップ数ごとに、前記データの受信状況が相対的に安定した所定数の通信装置の情報を、前記データの転送元に送信し、
前記情報処理装置は、前記情報処理装置からのホップ数毎に、前記所定数の安定ノードを選択するとともに、選択した安定ノードの各々を、前記情報処理装置から送信されたパケットが当該安定ノードに届くまでの転送時間とともに、前記複数の通信装置に通知し、
前記第２の通信装置は、
前記情報処理装置からのホップ数毎に、前記所定数の安定ノードを記憶し、
前記第１の通信装置からの前記データの受信に失敗すると、前記数値に対応付けられ、かつ、前記転送時間が相対的に短い第１の安定ノードに前記データの再送を要求し、
前記第１の安定ノードからの前記データの受信に失敗すると、前記数値に対応付けられ、かつ、前記第１の安定ノードよりも前記転送時間が長い第２の安定ノードに前記データの再送を要求する
ことを特徴とする付記７または８に記載の通信方法。
【符号の説明】
【０１１７】
１０  サーバ
２０  通信装置
２１  通信部
２２  送信部
２３  受信部
３０  制御部
３１  選択部
３２  計測部
３３  生成部
３４  データ処理部
３５  転送処理部
３６  再送要求部
４０  記憶部
４１  再送要求先テーブル
４２  受信状況データ
４３  バッファ
１０１  プロセッサ
１０２  メモリ
１０３  入力装置
１０４  出力装置
１０５  バス
１０９  ネットワークインタフェース
【図１】
2017073734.tif 000003
【図２】
2017073734.tif 000004
【図３】
2017073734.tif 000005
【図４】
2017073734.tif 000006
【図５】
2017073734.tif 000007
【図６】
2017073734.tif 000008
【図７】
2017073734.tif 000009
【図８】
2017073734.tif 000010
【図９】
2017073734.tif 000011
【図１０】
2017073734.tif 000012
【図１１】
2017073734.tif 000013
【図１２】
2017073734.tif 000014
【図１３】
2017073734.tif 000015
【図１４】
2017073734.tif 000016
【図１５】
2017073734.tif 000017
【図１６】
2017073734.tif 000018
【図１７】
2017073734.tif 000019
【図１８】
2017073734.tif 000020
【図１９】
2017073734.tif 000021