(57)【要約】【課題】ツリー構造を形成する複数の配信中継装置に効率的に配信する。【解決手段】１以上のツリー構造を形成する複数の配信中継装置２それぞれと通信可能に接続され、プログラムまたはコンテンツを配信する配信装置１であって、複数の配信中継装置間における親ノードと子ノードとの関係が記録されたツリー構造テーブル１３を備え、ツリー構造の頂点に位置する頂点親配信中継装置２それぞれにプログラムまたはコンテンツを第１マルチキャスト配信し（配信処理）、子ノードを有する親配信中継装置２それぞれに、プログラムまたはコンテンツの受信確認を行い、未受信親配信中継装置２それぞれにプログラムまたはコンテンツを第２マルチキャスト配信する（配信確認処理）。【選択図】図１
2014195181.tif 000002
【特許請求の範囲】
【請求項１】
１以上のツリー構造を形成する複数の配信中継装置それぞれと通信可能に接続され、プログラムまたはコンテンツを配信する配信装置であって、
前記複数の配信中継装置間における親ノードと子ノードとの関係が記録されたツリー構造テーブルを備え、
前記ツリー構造の頂点に位置する頂点親配信中継装置それぞれに前記プログラムまたはコンテンツを第１マルチキャスト配信し、
前記子ノードを有する親配信中継装置それぞれに、前記プログラムまたはコンテンツの受信確認を行い、未受信親配信中継装置それぞれに前記プログラムまたはコンテンツを第２マルチキャスト配信する
ことを特徴とする配信装置。
【請求項２】
前記第２マルチキャスト配信の後で、
前記配信中継装置の全てに、前記プログラムまたはコンテンツの受信確認を行い、未受信配信中継装置それぞれに前記プログラムまたはコンテンツをユニキャスト配信することを特徴とする請求項１に記載された配信装置。
【請求項３】
前記プログラムまたはコンテンツの受信確認は、
前記ツリー構造テーブルを用いて、前記頂点親配信中継装置からｍ段目の前記子ノードである前記配信中継装置が全て抽出され、抽出されたｍ段目配信中継装置のうち、ｍ＋１段目に前記子ノードを有するｍ段目親配信中継装置に対して行われる
ことを特徴とする請求項２に記載された配信装置。
【請求項４】
前記プログラムまたはコンテンツの受信確認は、
さらに、前記ｍ段目親配信中継装置のうちから所定数を選出した、選出ｍ段目親配信中継装置に対して行われる
ことを特徴とする請求項３に記載された配信装置。
【請求項５】
前記受信確認は、受信確認対象の前記配信中継装置それぞれに、前記プログラムまたはコンテンツを受信したか否かを応答させるメッセージを送信することを特徴とする請求項２ないし請求項４のいずれか一項に記載された配信装置。
【請求項６】
前記受信確認は、受信確認対象の前記配信中継装置それぞれに、前記プログラムまたはコンテンツを受信していれば返信されるメッセージを送信することを特徴とする請求項２ないし請求項４のいずれか一項に記載された配信装置。
【請求項７】
前記配信中継装置から通信経路が変化したことの通知を受けた場合、その変化した通信経路情報を用いて前記ツリー構造テーブルを更新することを特徴とする請求項１ないし請求項６のいずれか一項に記載された配信装置。
【請求項８】
前記複数の配信中継装置それぞれとは無線ＩＰネットワークを介して通信可能に接続され、
前記プログラムまたはコンテンツは、パケット化されてから配信される
ことを特徴とする請求項１ないし請求項７のいずれか一項に記載された配信装置。
【請求項９】
プログラムまたはコンテンツを配信する配信装置と、１以上のツリー構造を形成する複数の配信中継装置それぞれとが通信可能に接続された配信システムであって、
前記配信中継装置は、
受信確認に対して、前記プログラムまたはコンテンツの受信の有無を応答し、
前記配信装置は、
前記複数の配信中継装置間における親ノードと子ノードとの関係が記録されたツリー構造テーブルを備え、
前記ツリー構造の頂点に位置する頂点親配信中継装置それぞれに前記プログラムまたはコンテンツを第１マルチキャスト配信し、
前記子ノードを有する親配信中継装置それぞれに前記第１マルチキャスト配信されたプログラムまたはコンテンツについて前記受信確認を行い、未受信親配信中継装置それぞれに前記プログラムまたはコンテンツを第２マルチキャスト配信する
ことを特徴とする配信システム。
【請求項１０】
前記配信装置は、
前記第２マルチキャスト配信の後で、
前記配信中継装置の全てに、前記プログラムまたはコンテンツについて前記受信確認を再び行い、未受信配信中継装置それぞれに前記プログラムまたはコンテンツをユニキャスト配信することを特徴とする請求項９に記載された配信システム。
【請求項１１】
１以上のツリー構造を形成する複数の配信中継装置それぞれと通信可能に接続され、前記複数の配信中継装置間における親ノードと子ノードとの関係が記録されたツリー構造テーブルを備え、プログラムまたはコンテンツを配信する配信装置が実行する配信方法であって、
前記ツリー構造の頂点に位置する頂点親配信中継装置それぞれに前記プログラムまたはコンテンツを第１マルチキャスト配信し、
前記子ノードを有する親配信中継装置それぞれに、前記プログラムまたはコンテンツの受信確認を行い、未受信親配信中継装置それぞれに前記プログラムまたはコンテンツを第２マルチキャスト配信する
ことを特徴とする配信方法。
【請求項１２】
請求項１１に記載の配信方法を前記配信装置の制御部に実行させる配信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配信装置、配信システム、配信方法および配信プログラムに関し、特に、ツリー構造を形成する複数の配信中継装置それぞれにプログラムやコンテンツを配信する技術に関する。
【背景技術】
【０００２】
従来、特にアドホックネットワーク等の無線ネットワークを形成する装置（ノード）全てのファームウェア等のソフトウェアを更新する場合に、配信装置がソフトウェアを所定のサイズで分割してからマルチキャスト配信する方法があった。しかし、このようなマルチキャスト配信方法は、無線通信の環境変化等の影響により、ノードがソフトウェアを受信できないという取りこぼしが発生することがあった。
【０００３】
そこで、ファームウェアを分割して送信する際に、送信タイミングを調整することにより取りこぼしを少なくする方法があった（特許文献１）。
また、ネットワーク階層を考慮したマルチキャストによるデータ配信を行う方法があった（特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２８８０２６号公報
【特許文献２】特開２０１２−１６９９１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ツリー構造を形成するノード（配信中継装置）に対してマルチキャスト配信を行う場合、通信異常等により、１つの配信中継装置が受信できなかった（配信失敗が発生した）ときに、その未受信の配信中継装置を頂点とする部分木を形成するノード全てにソフトウェアが配信されなかった。
【０００６】
従来（特許文献１、特許文献２）の配信装置は、ソフトウェアの配信後、受信できていない部分の問合せを行い、取りこぼしが発生した場合に個別に再配信（ユニキャスト配信）を行う方法のため、ソフトウェアが配信されていない部分木を形成するノード全てに対して個別にユニキャスト配信する必要があった。
特に、ツリー構造が巨大化したシステムにおいて、配信失敗が発生した配信中継装置がツリー構造の上位に位置する場合、ユニキャスト配信を行うべき数が多くなり、非効率的であるという問題点があった。
【０００７】
本発明は、以上のような問題を解決するためになされたものであり、ツリー構造を形成する複数の配信中継装置に効率的に配信する配信装置、配信システム、配信方法および配信プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００８】
前記課題を解決するために、本発明の配信装置は、１以上のツリー構造を形成する複数の配信中継装置それぞれと通信可能に接続され、プログラムまたはコンテンツを配信する配信装置であって、前記複数の配信中継装置間における親ノードと子ノードとの関係が記録されたツリー構造テーブルを備え、前記ツリー構造の頂点に位置する頂点親配信中継装置それぞれに前記プログラムまたはコンテンツを第１マルチキャスト配信し、前記子ノードを有する親配信中継装置それぞれに、前記プログラムまたはコンテンツの受信確認を行い、未受信親配信中継装置それぞれに前記プログラムまたはコンテンツを第２マルチキャスト配信することを特徴とする。
【０００９】
配信失敗が発生した場合に、まず、部分木を形成する未受信親ノード中継装置それぞれに第２マルチキャスト配信するため、ユニキャスト配信する前に未受信の配信中継装置を減らすことができる。
【発明の効果】
【００１０】
本発明によれば、配信装置からのユニキャスト配信回数を減らすことができるため、配信装置からのデータ送信量を低減でき、効率的に配信できる。
また、配信装置からのデータ送信量が低減されることで、配信装置と頂点親ノード中継装置との間の全体的なデータ送信量の低減、トラフィック量の低減、データ送信にかかる時間の低減につながり、効率的に配信できる。
【００１１】
また、本発明によれば、マルチキャストによるプログラムまたはコンテンツの更新後に、到達していない分割されたプログラムまたはコンテンツの到達状況を把握し、部分木でのマルチキャストでのプログラムまたはコンテンツの更新を実行することにより、全体としての転送量の削減が可能となる。
【００１２】
また、本発明によれば、転送量の削減が可能となるため、特に転送速度が遅いネットワークあるいは、非常に通信品質の悪いネットワークでプログラムまたはコンテンツの更新にかかる時間を削減することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明に係るツリー構造配信システムの全体構成図である。
【図２】本発明に係る配信装置のブロック図である。
【図３】経路情報テーブルの一例である。
【図４】配信管理部が実行する処理の全体のフローチャートである。
【図５】（２）配信確認処理のフローチャートである。
【図６】（３）受信確認処理のフローチャートである。
【図７】１段目のルータに対する配信確認処理の一例である。
【図８】２段目のルータに対する配信確認処理の一例である。
【図９】３段目のルータに対する配信確認処理の一例である。
【図１０】全てのルータに対する受信確認処理の一例である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、本発明の実施の形態（以下、「本実施形態」と称する）につき詳細に説明する。なお、各図は、本発明について概略的に示してあるに過ぎない。よって、本発明は、図示例のみに限定されるものではない。また、各図において、共通する構成要素や同様な構成要素については、同一の符号を付し、それらの重複する説明を省略する。
【００１５】
［ツリー構造配信システム］
図１に示すように、ツリー構造配信システム１００は、配信サーバ１と、その配信サーバ１を頂点としたツリー構造を形成する複数のルータ２（２０１（０段目）、２１１〜２１３（１段目）、２２１〜２２８（２段目）、２３１〜２３８（３段目））とを備える。
【００１６】
複数のルータ２は、図１に示すように、
（親ノード）配信サーバ１、（子ノード）ルータ２０１
（親ノード）ルータ２０１、（子ノード）ルータ２１１、２１２、２１３
（親ノード）ルータ２１１、（子ノード）ルータ２２１、２２２、２２３
（親ノード）ルータ２１２、（子ノード）ルータ２２４、２２５、２２６
（親ノード）ルータ２１３、（子ノード）ルータ２２７、２２８
（親ノード）ルータ２２２、（子ノード）ルータ２３１、２３２、２３３
（親ノード）ルータ２２４、（子ノード）ルータ２３４、２３５
（親ノード）ルータ２２６、（子ノード）ルータ２３６
（親ノード）ルータ２２７、（子ノード）ルータ２３７、２３８
というツリー構造を形成する。
【００１７】
このツリー構造における親ノードと子ノードとは互いに無線ネットワーク４を介して、通信可能に接続されている。無線ネットワーク４は、インターネットプロトコル（Internet Protocol）技術を利用して相互接続されるコンピュータネットワークである。
本実施形態においてこの無線ネットワーク４は、無線ＬＡＮ（Local Area Network）やZigBee（登録商標）、Bluetooth（登録商標）等の無線による通信ネットワークとして説明するが、有線のネットワークであってもよい。
また、配信サーバ１には操作端末３が接続されており、ユーザからの指示が操作端末３を介して入力される。
【００１８】
（配信サーバ１）
配信サーバ１は、このツリー構造が記録された経路情報テーブル１３（図３）を用いて、アプリケーションソフトやファームウェア等のプログラムまたはコンテンツをマルチキャスト配信したり、ユニキャスト配信したりする。
配信サーバ１は、この経路情報テーブル１３を用いて、親ノードを指定してマルチキャスト配信を行うことで、その指定した親ノード（ルータ２）を頂点（起点）とする部分木を構成する全てのルータ２を対象とした配信を行うことができる。
また、配信サーバ１は、経路情報テーブル１３を用いて、１つのノードを指定してユニキャスト配信を行うことで、その指定したノード（ルータ２）を対象とした配信を行うことができる。
配信サーバ１の構成については詳細を後記する。
【００１９】
（ルータ２）
ルータ２（無線通信中継装置）は、ルーティングテーブルを備え、無線ネットワーク４間を相互接続する通信機器であり、一般的なルータである。
このルータ２には、不図示のソフトウェア更新対象装置が通信可能に接続されており、配信サーバ1から配信されたソフトウェア等をそのソフトウェア更新対象装置に転送する。これにより、ソフトウェア更新対象装置のソフトウェア等を更新することができる。
また、ルータ２は、配信サーバ１からソフトウェアの配信確認があったとき、そのソフトウェアを受信したか否かを配信サーバ１に応答する。
【００２０】
（操作端末３）
操作端末３は、不図示の操作入力部や画面表示部等を備え、配信サーバ１に接続され、操作入力部を介してユーザから入力された指示を配信サーバ１に入力したり、配信サーバ１からの情報を画面表示部を介してユーザに提供したりする装置である。この操作端末３は、図１に示すように配信サーバ１から独立した装置、例えば、ＰＣ（Personal Computer）等であってもよいが、配信サーバ１が操作端末３の機能や構成部を備えてもよい。
【００２１】
（配信サーバ１の構成）
図２に示すように、配信サーバ１は、通信制御部１１と、木構造管理部１２と、経路情報テーブル１３と、配信管理部１４とを備える。通信制御部１１と木構造管理部１２と配信管理部１４とは、制御部として機能し、経路情報テーブル１３は、記憶部として機能する。
【００２２】
制御部は、装置全体を制御する構成部であり、例えば、ＣＰＵ（Central Processing Unit）で構成され、ＣＰＵが記憶部（不図示）に格納されるプログラム（不図示）を展開し実行することによって配信サーバ１の各機能が実現される。
記憶部は、データやプログラムを記憶する構成部であり、例えば、ＨＤＤ（Hard Disc Drive）、ＲＡＭ（Random Access Memory）、光ディスク等の記憶手段である。
【００２３】
（通信制御部１１）
通信制御部１１は、無線ネットワーク４と接続する不図示のインタフェース（通信部）を介して、ルータ２と通信可能に接続し、データの送受信を制御する構成部である。
【００２４】
（木構造管理部１２）
木構造管理部１２は、経路情報テーブル１３を用いて、ツリー構造の経路を管理する構成部である。
例えば、ツリー構造が変化したとき、変化した経路情報の通知（イベント）をルータ２から通信制御部１１が受信する。木構造管理部１２は、この変化した経路情報を用いて経路情報テーブル１３を更新する。
また、操作端末３を用いてルータ２の追加登録を行って経路情報テーブル１３を更新することもできる。
【００２５】
（経路情報テーブル１３）
経路情報テーブル１３は、ツリー構造配信システム１００における配信サーバ１を頂点としたツリー構造が記録されており、例えば、図３に示す構造を有する。
ＩＤは、経路情報テーブル１３における識別番号である。Parentは親ノードにあたるルータ２０１のＭＡＣアドレス、Childには子ノードにあたるルータ２０１のＭＡＣアドレスが記録される。Rootにはツリー構造配信システム１００におけるツリー構造の頂点にある配信サーバ１に直接接続されたルータ２０１のＭＡＣアドレス「01: 01: 01: 01: 02: 01」が記録されている。
【００２６】
例えば、ＩＤ＝１は、配信サーバ１とルータ２０１との関係を示している。経路情報テーブル１３を備える配信サーバ１自身が親ノードとなるため、Parentには何も記録されていない（null）。配信サーバ１には子ノードとしてルータ２０１が接続されているため、Childにはルータ２０１のＭＡＣアドレス「01: 01: 01: 01: 02: 01」が記録されている。
ＩＤ＝２、３、４は、ルータ２０１と子ノード（ルータ２１１〜２１３）との関係を示している。
【００２７】
（１段目）
ＩＤ＝５〜１２は、ルータ２０１から１段目にあたる親ノード（ルータ２１１〜２１３）と子ノード（ルータ２２１〜２２８）との関係を示している。
ＩＤ＝５、６、７は、ルータ２１１とその子ノード（ルータ２２１、２２２、２２３）との関係を示している。ＩＤ＝８、９、１０は、ルータ２１２とその子ノード（ルータ２２４、２２５、２２６）との関係を示している。ＩＤ＝１１、１２は、ルータ２１３とその子ノード（ルータ２２７、２２８）との関係を示している。
【００２８】
（２段目）
ＩＤ＝１３〜２４は、ルータ２０１から２段目にあたる親ノード（ルータ２２１〜２２８）と子ノード（ルータ２３１〜２３８）との関係を示している。
ＩＤ＝１４、１５、１６は、ルータ２２２とその子ノード（ルータ２３１、２３２、２３３）との関係を示している。ＩＤ＝１８、１９は、ルータ２２４とその子ノード（ルータ２３４、２３５）との関係を示している。ＩＤ＝２１は、ルータ２２６とその子ノード（ルータ２３６）との関係を示している。ＩＤ＝２２、２３は、ルータ２２７とその子ノード（ルータ２３７、２３８）との関係を示している。
【００２９】
（３段目）
ＩＤ＝２５〜３２は、ルータ２０１から３段目にあたる親ノード（ルータ２３１〜２３８）と子ノードとの関係を示している。
【００３０】
ここで、ルータ２２１、２２３、２２５、２２８、２３１〜２３８は、子ノードが接続されていないルータである。以下、これら子ノードが接続されていない親ノードを「リーフ」と称する。経路情報テーブル１３では、これらリーフのルータ２がParentの場合、Childに何も記録されない（null）。
【００３１】
（経路情報テーブル１３の作り直し）
ここで、木構造管理部１２は、配信サーバ１を起動させたときや、操作端末３を用いてツリー構造の最新化を要求したときに、経路情報テーブル１３を作り直すこともできる。
例えば、木構造管理部１２は、図３の経路情報テーブル１３からParentが空欄（null）のＩＤを検索する。ＩＤ＝１のデータ列がヒットする。そのデータ列のChildのＭＡＣアドレス（ルータ２０１に該当）をParentにもつＩＤをさらに経路情報テーブル１３から検索する。ＩＤ＝２、３、４のデータ列がヒットする。これにより、ルータ２０１に接続された子ノード（ルータ２２１、２２２、２２３）のリストを取得する。
【００３２】
次に、木構造管理部１２は、経路情報テーブル１３からParentがnullではないデータ列を削除し、古い情報の削除を行う。
次に、木構造管理部１２は、ルータ２０１の子ノード（ルータ２１２、２２２、２２３）に対して、子ノードに接続されているルータ２（２段目）の接続情報の送信要求を行う。木構造管理部１２は、子ノードから送信された接続情報に基づき、経路情報テーブル１３を更新する。さらに、木構造管理部１２は接続情報に基づき、子ノードに接続されているルータ２（２段目）に対して、その下位に接続されているルータ２（３段目）の接続情報の要求を行う。このように、木構造管理部１２は、ツリー構造を形成する全てのルータ２に対して接続情報の要求を行って、経路情報テーブル１３を更新し、最新のツリー構造の情報を取得する。
【００３３】
（配信管理部１４）
配信管理部１４は、アプリケーションソフトやファームウェア等のプログラムの配信を制御し、各ルータ２に対して配信されたことを確認して、各ルータ２に確実に配信する。この配信管理部１４は、（１）配信処理、（２）配信確認処理、（３）受信確認処理を実行する。
【００３４】
（１）配信処理
配信管理部１４は、まず、不図示の記憶部に記憶されたソフトウェアをマルチキャスト配信する。配信管理部１４は、ソフトウェアを一定サイズに分割し、分割されたソフトウェア毎にマルチキャスト配信（第１マルチキャスト配信）する。
【００３５】
（２）配信確認処理
次に、配信管理部１４は、子ノードを有するルータ２に対して、（１）配信処理で配信されたソフトウェアを受信したか否かを確認することで、子ノードに配信したか否かを確認する。つまり、ソフトウェアを受信していなければ、子ノードにソフトウェアをマルチキャスト配信できないためである。ここで、配信していないルータ２があれば、そのルータ２を起点とし、ソフトウェアをマルチキャスト配信（第２マルチキャスト配信）（部分マルチキャスト配信）（再配信）する。
【００３６】
（３）受信確認処理
最後に、配信管理部１４は、ツリー構造を形成する全てのルータ２に対して、（１）配信処理または（２）配信確認処理で配信されたソフトウェアを受信したか否かを確認し、受信していないルータ２があれば、そのルータ２に対して、ソフトウェアをユニキャスト配信（再々配信）する。
配信管理部１４が実行する各処理についての詳細は後記する。
【００３７】
配信管理部１４は、図４に示すように、まず、（１）配信処理（ステップＳ１００）、次に、（２）配信確認処理（ステップＳ２００）、最後に、（３）受信確認処理（ステップＳ３００）を実行して終了する。
【００３８】
（１）配信処理
マルチキャスト配信によるソフトウェアの更新は一般的な処理であるため、配信処理（ステップＳ１００）については、記載を省略する。このマルチキャスト配信を行うことで、配信途中で通信異常等の問題が生じなければ、配信サーバ１は、ツリー構造を形成する全てのルータ２にソフトウェアを配信することができる。
【００３９】
（２）配信確認処理
ここで、配信管理部１４が実行する図４のステップＳ２００の配信確認処理について、図５に示すフローチャートを用いて説明する。
まず、配信管理部１４は、段数を示すｍに１を設定する（ｍ＝１）（ステップＳ２０１）。
次に、配信管理部１４は、経路情報テーブル１３を検索して（ステップＳ２０２）、ｍ段目のルータ２全てを抽出する（ステップＳ２０３）。これにより、ａ台のルータ２が抽出される（抽出ルータ数＝ａ）。そして、配信管理部１４は、抽出したルータ２のうち、リーフであるルータ２を除外する（ステップＳ２０４）。これにより、ｂ台のルータ２が除外される（除外ルータ数＝ｂ）。以上により、残ったルータ２は子ノードを有するルータ２となる。
【００４０】
そして、配信管理部１４は、ｍ段目に残ったルータ２の数が１以上であるか否か（ａ−ｂ≧１？）、すなわち、ｍ段目に子ノードを有するルータ２があるか否かを判定する（ステップＳ２０５）
ｍ段目に子ノードを有するルータ２がない場合（ステップＳ２０５，Ｎｏ）、配信確認処理（図４のステップＳ２００）を終了する。
【００４１】
一方、ｍ段目に子ノードを有するルータ２がある場合（ステップＳ２０５，Ｙｅｓ）、配信管理部１４は、それら子ノードを有するルータ２全てから所定数のルータ２をランダムに選出する（ステップＳ２０６）。
ここで、所定数（ｄ）は、（ａ−ｂ）×Ｎ(％)で得られる値ｃが、ｃ＞２であれば、ｄ＝ｃとし、一方、ｃ≦２であれば、ｄ＝２とする。Ｎはシステムで決定した任意の数字(百分率)である。つまり、所定数（ｄ）は２以上の数となる。また、子ノードが１つだけの場合は、所定数が２以上であっても１つのルータ２を選出する。
【００４２】
このＮの値は、ツリー構造を形成するルータ２間におけるネットワーク環境に応じて決定する。例えば、ネットワークが切断されやすい等のネットワーク環境が不安定な状況であればＮを大きくし、ネットワーク環境が安定している場合はＮを小さくする。このネットワーク環境は、ツリー構造全体におけるネットワーク環境であってもよいし、ｍ段目までの一部のツリー構造におけるネットワーク環境であってもよい。
ここで（ａ−ｂ）×Ｎ(％)で得られる値ｃのみを所定数とすると、Ｎの値が大きい場合に１つもルータ２が選択されない階層が生じてしまう。そこで、最下層まで配信確認処理が行われるように、どの階層でも最低２つのルータが選択されるように、所定数（ｄ）を２以上とした。しかし、最下層まで配信確認処理が行われればよいため、ツリー構造や各階層のルータ２の数に応じて、所定数（ｄ）は１以上としてもよい。
【００４３】
そして、配信管理部１４は、選出したルータ２それぞれに対して配信確認を行い（ステップＳ２０７）、選出したルータ２全てから応答データを受信する。
配信管理部１４は、これらの応答データを確認し、選出したルータ２全てが、ソフトウェアを子ノードに配信したか否かを判定する（ステップＳ２０８）。この処理における、ソフトウェアを子ノードに配信したか否かの判定は、配信処理（ステップＳ１００）で配信されたソフトウェアを受信したか否かで行われる。
選出したルータ２全てからの応答データが「配信した」という応答データがあれば（ステップＳ２０８，Ｙｅｓ）、次のステップＳ２１０の処理を行う。
【００４４】
一方、「配信していない」という応答データがあれば（ステップＳ２０８，Ｎｏ）、その応答データを送信したルータ２を起点としたマルチキャスト配信を行う（ステップＳ２０９）。
そして、配信管理部１４は段数を示すｍに１を加えて（ｍ＝ｍ＋１）（ステップＳ２１０）、ステップＳ２０２の処理を再び行う。
【００４５】
（３）受信確認処理
ここで、配信管理部１４が実行する図４のステップＳ３００の受信確認処理について、図６に示すフローチャートを用いて説明する。
まず、配信管理部１４は、経路情報テーブルを検索して（ステップＳ３０１）、全てのルータ２を抽出する（ステップＳ３０２）。
そして、配信管理部１４は、抽出した全てのルータ２に対して受信確認を行い（ステップＳ３０３）、全てのルータ２から応答データを受信する。
この受信確認を行って、（１）配信処理、または（２）配信確認処理で配信されたソフトウェアを受信したか否かを応答データから確認する。
【００４６】
配信管理部１４は、ステップＳ３０３で受信した応答データを確認して、配信されたソフトウェアを受信していないルータ２があるか否か、すなわち未受信のルータ２があるか否かを判定する（未受信のルータあり？：ステップＳ３０４）
未受信のルータ２がなければ（ステップＳ３０４，Ｎｏ）、配信管理部１４は受信確認処理を終了する。
一方、未受信のルータ２があれば（ステップＳ３０４，Ｙｅｓ）、配信管理部１４は、その未受信のルータ２にソフトウェアをユニキャスト配信して（ステップＳ３０５）、受信確認処理（図４のステップＳ３００）を終了する。
【００４７】
ここで、図７〜図１０を用いて、配信管理部１４が実行する処理の一例を説明する。図７〜図９を用いて配信確認処理の一例を説明し、図１０を用いて受信確認処理の一例を説明する。
【００４８】
図７は、まず、配信管理部１４が配信処理（図４のステップＳ１００）を実行して、ソフトウェアをマルチキャスト配信した後のツリー構造を形成する全てのルータ２のソフトウェア受信状況を示したものである。図７〜図１０における「○」はそのルータ２がソフトウェアを受信した状態を示し、「×」は受信していない（未受信）状態を示す。すなわち、「×」のルータ２に接続された不図示のソフトウェア更新対象装置は、ソフトウェアが転送されないため、ソフトウェアの更新が行われていないことを示している。
【００４９】
図７におけるツリー構造を形成する全てのルータ２のソフトウェア受信状況は、「○」が、ルータ２１１、２１２、２２１、２２２、２２６、２３１、２３２、２３６であり、「×」が、ルータ２１３、２２３、２２４、２２５、２２７、２２８、２３３、２３４、２３５、２３７、２３８である。
次に、配信管理部１４は、配信確認処理（図４のステップＳ２００）を開始する。
以下、図５の配信確認処理のフローチャートを用いて、図７〜図９の説明を行う。
【００５０】
（図７）配信確認処理（ｍ＝１）
図７を用いて、１段目のルータ２に対する配信確認処理の一例を説明する。
配信管理部１４は、まず図３の経路情報テーブル１３を検索して、ｍ＝１段目のルータ２全てを抽出する（ステップＳ２０１〜Ｓ２０３）。この処理において、ルータ２０１のＭＡＣアドレス「01: 01: 01: 01: 02: 01」がParentのデータ列からChildのＭＡＣアドレスに該当するルータ２１１〜２１３が抽出される（抽出ルータ数ａ＝３）。
【００５１】
次に、抽出したルータ２のうち、リーフであるルータ２を除外する（ステップＳ２０４）。この処理において、１段目のルータ２１１〜２１３のＭＡＣアドレスがParentのデータ列（ＩＤ＝５〜１２）のうち、Childがnullのデータはない。つまり、リーフであるルータ２はないため、除外されるルータ２はない（除外ルータ数ｂ＝０）。
以上により、ルータ２１１〜２１３は子ノードを有するルータ２となる（ステップＳ２０５，Ｙｅｓ）。
【００５２】
ここで、Ｎが１０％であったとすると、ｃ＝（ａ−ｂ）×Ｎ(％) ＝０．３であり、ｃ≦２であるため、所定数（ｄ）は２である。そこで、配信管理部１４は、子ノードを有するルータ２１１〜２１３から２台をランダムに選出する（ステップＳ２０６）。ここでは、図７に太線で示したルータ２１１とルータ２１３とが選出されたとする。
【００５３】
次に、配信管理部１４は、選出したルータ２１１とルータ２１３とに対して配信確認を行う（ステップＳ２０７）。このとき配信管理部１４は、ルータ２１１とルータ２１３とに所定の配信確認データを送信し、ルータ２１１からは「○」、ルータ２１３からは「×」の応答データを受信する。
【００５４】
配信管理部１４は、これらの応答データからソフトウェアを子ノードに配信したか否かを判定する（ステップＳ２０８）。これにより、ルータ２１１は「配信した」、ルータ２１３は「配信していない」と判定される（ステップＳ２０８，Ｎｏ）。
そこで、配信管理部１４はルータ２１３を起点とし、ソフトウェアを部分マルチキャスト配信する（ステップＳ２０９）。これにより、ルータ２１３を頂点としたツリー構造を形成するルータ２２７、２２８、２３７、２３８に、ソフトウェアが配信される。
そして、配信管理部１４はｍに１を加える（ｍ＝２）（ステップＳ２１０）。
【００５５】
この部分マルチキャスト配信を行うことで、図８に示すように、ルータ２１３、２２７、２３７、２３８はソフトウェアを受信して「○」となったものの、ルータ２２８はソフトウェアを受信していない「×」のままであったとする。
【００５６】
（図８）配信確認処理（ｍ＝２）
次に、図８を用いて、２段目のルータ２に対する配信確認処理の一例を説明する。
配信管理部１４は、まず図３の経路情報テーブル１３を検索して、ｍ＝２段目のルータ２であるルータ２２１〜２２８を抽出する（ステップＳ２０１〜Ｓ２０３）。（抽出ルータ数ａ＝８）。
【００５７】
次に、抽出したルータ２のうち、リーフであるルータ２を除外する（ステップＳ２０４）。この処理において、２段目のルータ２２１〜２２９のＭＡＣアドレスがParentのデータ列（ＩＤ＝１３〜２４）のうち、Childがnullのデータは、ＩＤ＝１３のルータ２２１、ＩＤ＝１７のルータ２２３、ＩＤ＝２０のルータ２２５、ＩＤ＝２４のルータ２２８である。これらのルータ２２１、２２３、２２５、２２８が除外される（除外ルータ数ｂ＝４）。
以上により、ルータ２２２、２２４、２２６、２２７は子ノードを有するルータ２となる（ステップＳ２０５，Ｙｅｓ）。
【００５８】
ここで、Ｎが１０％であったとすると、ｃ＝（ａ−ｂ）×Ｎ(％) ＝０．４であり、ｃ≦２であるため、所定数（ｄ）は２である。そこで、配信管理部１４は、子ノードを有するルータ２２２、２２４、２２６、２２７のうちから２台をランダムに選出する（ステップＳ２０６）。ここでは、図８に太線で示したルータ２２４とルータ２２７とが選出されたとする。
【００５９】
次に、配信管理部１４は、選出したルータ２２４とルータ２２７とに対して配信確認を行い（ステップＳ２０７）、ルータ２２４からは「×」、ルータ２２７からは「○」の応答データを受信して、判定する（ステップＳ２０８）。これにより、ルータ２２４は「配信していない」、ルータ２２７は「配信した」と判定される（ステップＳ２０８，Ｎｏ）。
【００６０】
そこで、配信管理部１４はルータ２２４を起点とし、ソフトウェアを部分マルチキャスト配信する（ステップＳ２０９）。これにより、ルータ２２４を頂点としたツリー構造を形成するルータ２３４、２３５に、ソフトウェアが配信される。
そして、配信管理部１４はｍに１を加える（ｍ＝３）（ステップＳ２１０）。
【００６１】
この部分マルチキャスト配信を行うことで、図１０に示すように、ルータ２２４、２３４はソフトウェアを受信して「○」となったものの、ルータ２３５はソフトウェアを受信していない「×」のままであったとする。
【００６２】
（図９）配信確認処理（ｍ＝３）
次に、図９を用いて、３段目のルータ２に対する配信確認処理の一例を説明する。
配信管理部１４は、まず図３の経路情報テーブル１３を検索して、ｍ＝３段目のルータ２であるルータ２３１〜２３８を抽出する（ステップＳ２０１〜Ｓ２０３）（抽出ルータ数ａ＝８）。
【００６３】
次に、抽出したルータ２のうち、リーフであるルータ２を除外する（ステップＳ２０４）。この処理において、３段目のルータ２３１〜２３９のＭＡＣアドレスがParentのデータ列（ＩＤ＝２５〜３２）のうち、Childがnullのデータは、ＩＤ＝２５〜３２の全てのルータ２３１〜２３８である。これら全てが除外される（除外ルータ数ｂ＝８）。
以上により、配信管理部１４は、３段目には子ノードを有するルータ２は無い（ステップＳ２０５，Ｎｏ）と判定し、配信確認処理（図４のステップＳ２００）を終了する。
【００６４】
この配信確認処理が終了した時点で、図１１に示すように、ルータ２２３、２２５、２２８、２３３、２３５はソフトウェアを受信していない「×」のままであったとする。
【００６５】
（図１０）受信確認処理
次に、図１０を用いて、受信確認処理の一例を説明する。
配信管理部１４は、まず図３の経路情報テーブル１３を検索して、全てのルータ２を抽出する（ステップＳ３０１〜Ｓ３０２）。この処理において、ParentにＭＡＣアドレスがあるルータ、すなわち、ツリー構造を形成する全てのルータ２（２０１、２１１〜２１３（１段目）、２２１〜２２８（２段目）、２３１〜２３８（３段目））が抽出される。
【００６６】
そして、配信管理部１４は、抽出した全てのルータ２に対して受信確認を行い（ステップＳ３０３）、全てのルータ２から応答データを受信する。このとき、ルータ２２３、２２５、２２８、２３３、２３５からは「×」の応答データを受信する。
【００６７】
配信管理部１４は、未受信のルータ２があるか否かを判定し（ステップＳ３０４）、未受信のルータ２があるため（ステップＳ３０４，Ｙｅｓ）、配信管理部１４は、その未受信のルータ２２３、２２５、２２８、２３３、２３５にソフトウェアをユニキャスト配信する（ステップＳ３０５）。このように、個別にソフトウェアを配信することで、ソフトウェアの配信漏れを避けることができる。
そして、配信管理部１４は、ソフトウェアをユニキャスト配信した後、受信確認処理（図４のステップＳ３００）を終了する。
【００６８】
この受信確認処理により、例えば、一時的にネットワーク環境が不安定な状況になり、マルチキャスト配信でソフトウェアを受信できなかったルータ２に対して、ソフトウェアをユニキャスト配信する。マルチキャスト配信時より遅い時刻で配信されることで、ルータ２がソフトウェアを受信できるように、ネットワーク環境が改善されることを期待できる。これにより、ユニキャスト配信されたソフトウェアを受信したルータ２のソフトウェア受信状況は「×」から「○」になる。
【００６９】
本発明は、前記した実施形態に限定されることなく、本発明の要旨を逸脱しない範囲で種々の変更や変形を行うことができる。
例えば、（２）配信確認処理、および（３）受信確認処理において、ルータ２に対して配信されたソフトウェアを受信したか否かを確認する際に、ルータ２に受信の有無を応答させているが、配信されたソフトウェアを受信している場合にのみ応答させてもよい。
また、前記実施形態は、アプリケーションソフトやファームウェア等のプログラムの配信に適用したが、音楽データや映像データなどのコンテンツの配信にも適用可能である。
また、ツリー構造配信システム１００は、配信サーバ１が複数のルータ２（２０１）と接続され、ルータ２（２０１）それぞれを頂点とした複数のツリー構造が形成されていてもよい。
【符号の説明】
【００７０】
１      配信サーバ（配信装置）
２      ルータ（配信中継装置）
３      操作端末
４      無線ネットワーク
１１    通信制御部
１２    木構造管理部
１３    経路情報テーブル
１４    配信管理部
１００  ツリー構造配信システム
２０１  ルータ（０段目）（頂点親配信中継装置）
２１１〜２１３  ルータ（１段目）
２２１〜２２８  ルータ（２段目）
２３１〜２３８  ルータ（３段目）
ａ      抽出ルータ数
ｂ      除外ルータ数
【図１】
2014195181.tif 000003
【図２】
2014195181.tif 000004
【図３】
2014195181.tif 000005
【図４】
2014195181.tif 000006
【図５】
2014195181.tif 000007
【図６】
2014195181.tif 000008
【図７】
2014195181.tif 000009
【図８】
2014195181.tif 000010
【図９】
2014195181.tif 000011
【図１０】
2014195181.tif 000012