(57)【特許請求の範囲】
【請求項１】
アドホックネットワークを構成し、他の通信装置宛のコンテンツデータに基づいて生成されたデータを受信した場合、当該受信データを符号化して転送する通信装置であって、
前記アドホックネットワークのトポロジー情報を収集するトポロジー管理手段と、
他の通信装置からコンテンツデータの伝送が開始される前に、当該コンテンツデータに基づいて生成されたデータを受信した場合の当該受信データに対する符号化処理で使用する符号化関数の決定指示を当該他の通信装置から受信し、前記トポロジー情報に基づいて、当該他の通信装置である第１の通信装置から当該コンテンツデータの配信を希望する通信装置である第２の通信装置へのデータ伝送経路を算出する伝送経路算出手段と、
前記伝送経路算出手段が算出したデータ伝送経路に基づいて、前記コンテンツデータに基づいて生成された符号化データの自装置への入力パスの数および自装置からの出力パスの数を特定し、各入力パスから受信した各データを対象としてネットワークコーディングを行って出力パスの数と同数の符号化データを生成するための符号化関数を決定する符号化関数決定手段と、
を備え、
前記符号化関数決定手段が決定した符号化関数と伝送が開始される予定のコンテンツデータとを関連付けて保持しておき、当該コンテンツデータに基づいて生成されたデータを受信した場合には保持している符号化関数を使用して当該受信データを符号化することを特徴とする通信装置。
【請求項２】
自身が保持しているコンテンツデータを他の通信装置へ伝送する場合、
前記伝送経路算出手段は、コンテンツデータの伝送を開始する前に、前記トポロジー情報に基づいて、当該コンテンツデータの配信を希望する他の通信装置までの伝送経路を算出し、
前記符号化関数決定手段は、前記算出された伝送経路上の各通信装置に対して、自身および前記コンテンツデータの配信を希望する他の通信装置の識別情報を通知するとともに、当該識別情報に基づいて自身から当該他の通信装置へのデータ伝送処理で使用する符号化関数を決定するように指示を行うことを特徴とする請求項１に記載の通信装置。
【請求項３】
さらに、
前記トポロジー情報に基づいて、隣接する通信装置である隣接ノードの接続状態を監視する隣接ノード管理手段と、
前記隣接ノード管理手段が前記伝送経路算出手段により算出された伝送経路上の隣接ノードであって、それまで受信データの転送先としていたノードと通信が不可能になったことを検出した場合に、以降の受信データの転送先とする隣接ノードを再選択する代替隣接ノード選択手段と、
を備えることを特徴とする請求項１または２に記載の通信装置。
【請求項４】
さらに、
前記トポロジー情報に基づいて、前記アドホックネットワークを構成する各通信装置を、所定範囲内に存在する通信装置同士が同一グループとなるようにグループ化するグループ管理手段、
を備え、
前記伝送経路算出手段は、前記トポロジー情報、および前記アドホックネットワークを構成する各通信装置のそれぞれのグループ情報に基づいて、同一グループ内の通信装置が一定範囲の伝送経路を構成するように、前記第１の通信装置から前記第２の通信装置までのデータ伝送経路を算出し、
前記符号化関数決定手段は、前記伝送経路算出手段により算出された伝送経路のうち、自身と同じグループに属する通信装置が存在する範囲内の伝送経路に基づいて、符号化関数を決定することを特徴とする請求項１、２または３に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークコーディングを利用して情報伝送を行う通信装置に関する。
【背景技術】
【０００２】
ネットワークコーディング（Network  Coding）とは、End-to-End間（送信ノードから受信ノードの間）の各通信装置（ノード）が独立パスを用いて、情報を符号化しながら通信する情報伝送方式であり、各通信装置は受信したメッセージ情報をまとめて符号化して１または複数の通信装置へ転送する。各通信装置は、符号化して送信した情報が受信ノードで復元できるように、自身が実行する符号化関数を定義する。なお、独立パスとは、送信ノードから受信ノードまでの伝送経路上に位置する隣り合った通信装置同士を接続する１つの通信路（リンク）である。ネットワークコーディングを利用した通信では、１つの通信路で１種類のデータパケットしか伝送しない。
【０００３】
下記特許文献１には、ネットワークコーディングを利用して効率的な通信を実現する通信システムが記載されている。この特許文献１に記載の通信システムは、無線ネットワークが下記非特許文献１に記載された数学的なモデルを実装することにより実現されている。以下、特許文献１に記載された通信システムについて説明する。
【０００４】
特許文献１に記載の通信システムでは、あるコンテンツデータの送信元の通信装置（送信ノード）が、コンテンツデータの配信を希望する他の通信装置（受信ノード）へコンテンツデータを送信する場合、自身に割り当てられた符号化関数を使用してコンテンツデータの符号化を行い、受信ノードまでの伝送経路を構成する隣接ノードの数と同数の符号化データを生成し、さらに、各符号化データに対してその復号化で使用する情報や伝送経路情報を含んだヘッダを付加し、符号化データごとに、異なるリンク（異なる隣接ノード）へ送信する。
【０００５】
また、隣接する通信装置から符号化データを受信した、受信ノードではない通信装置（伝送経路の途中の通信装置）は、そのヘッダ内の情報に基づいて、同じコンテンツデータに基づいて生成された符号化データを複数受信するかどうかを判断する。そして、受信する符号化データが１つだけの場合、受信した符号化データを、そのヘッダ内の情報が示す隣接ノードへ転送する。また、受信する符号化データが複数存在する場合、受信すべきすべての符号化データを受信後、それらの再符号化を行い、得られた符号化データに対してヘッダを付加した上で、対応する隣接ノードへ送信する。
【０００６】
受信ノードに相当する通信装置では、コンテンツデータを復元するために必要なすべての符号化データを受信後、受信した符号化データおよびそのヘッダ内の情報を利用してコンテンツデータを復元する。
【０００７】
【特許文献１】特開２００６−３１６９３号公報
【非特許文献１】R.  el.  Al  “Network  Information  Flow”，pp.1204-1216，IEEE  Trans.  on  Information  Theory，Vol.46，No.4，July  2000
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の技術では、ヘッダサイズが大きいため、帯域を圧迫して安定した情報伝送を妨げる、という問題があった。上記従来の技術を適用する場合、たとえば図２１に示した構成のメッセージにて符号化データを伝送する必要がある。このメッセージを構成するヘッダには、符号化データに対応するコンテンツデータを識別するためのシーケンス番号、符号化データの送信元のノードを示すリンク送信ノードＩＤ、符号化データの受信ノードを示すリンク受信ノードＩＤ、送信ノードから受信ノードまでの各伝送経路を構成する独立パスの情報である独立パスリストおよび伝送経路上の各ノードが再符号化処理を行う際に使用する符号化関数の情報である符号化関数リストが含まれる。特に、独立パスリストと符号化関数リストは、ネットワークを構成する通信装置の数が増加した場合、それに伴って増加するため、これらの情報の影響により、十分な効率化が実現できていなかった。なお、独立パスリストおよび符号化関数リストは、送信ノードにより生成され、伝送経路上のノードは、受信した符号化データのヘッダに含まれる独立パスリストおよび符号化関数リストを、再符号化したデータのヘッダに含めて送信する。
【０００９】
また、ノードが移動し、ネットワークのトポロジー（Topology）が変化した場合、送信ノードは、独立パスリストおよび符号化関数リストを更新しなければならず、処理負荷が大きくなる、という問題があった。
【００１０】
本発明は、上記に鑑みてなされたものであって、ネットワークコーディングを利用した通信を従来よりも効率的に行う通信装置を得ることを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明は、アドホックネットワークを構成し、他の通信装置宛のコンテンツデータに基づいて生成されたデータを受信した場合、当該受信データを符号化して転送する通信装置であって、前記アドホックネットワークのトポロジー情報を収集するトポロジー管理手段と、コンテンツデータの伝送開始を検出した場合に、前記トポロジー情報に基づいて、当該コンテンツデータの送信元通信装置である第１の通信装置から当該コンテンツデータの配信を希望する通信装置である第２の通信装置へのデータ伝送経路を算出する伝送経路算出手段と、前記伝送経路に基づいて、前記コンテンツデータに基づいて生成されたデータを受信した場合に実行する当該受信データの符号化処理、で使用する符号化関数を決定する符号化関数決定手段と、を備えることを特徴とする。
【発明の効果】
【００１２】
この発明によれば、符号化データに付与するヘッダ情報を従来よりも少なくすることができ、帯域の使用効率を上げることができる、という効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に、本発明にかかる通信装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１４】
実施の形態１．
図１は、本発明にかかる通信装置の実施の形態１の構成例を示す図である。この通信装置は、他の通信装置との間でコンテンツデータを送受信する機能をユーザに提供するアプリケーション１と、コンテンツデータの送信元の通信装置（以下、送信ノードと呼ぶ）から送信先の通信装置（以下、受信ノードと呼ぶ）までのデータ伝送経路を算出（検索）するルート管理部２と、自身が保持しているコンテンツデータまたは他の通信装置から受信したデータを符号化して転送するネットワークコーディング部３と、自身が属しているネットワークのトポロジー情報を収集し、管理しておくトポロジー管理部４と、ネットワークコーディング部３が符号化を行う際に使用する符号化関数を決定する符号化関数決定部５と、を備える。なお、ネットワークコーディング部３は、符号化処理を実行して得た符号化データを送信するにあたって通信プロトコル（Communication  Protocol）を使用する。トポロジー管理部４は、トポロジー情報を収集するにあたって、制御プロトコル（Control  Protocol）を構成するトポロジー制御プロトコル（Topology  Control  Protocol）を使用する。符号化関数決定部５は、符号化関数を決定するにあたって、制御プロトコルを構成するコーディング機能制御プロトコル（Coding  Function  Control  Protocol）を使用する。
【００１５】
また、ネットワークコーディング部３は、入力データを符号化する符号化部３１と、ルート管理部２により算出された伝送経路を構成する各独立パスの情報を取得し保持しておく独立パス管理部３２と、符号化関数決定部５により決定された符号化関数の情報を取得し保持しておく符号化関数管理部３３と、を備える。
【００１６】
図２は、トポロジー管理部４および符号化関数決定部５の構成例を示す図である。トポロジー管理部４は、ネットワーク内の通信装置の配置状態（トポロジー）の情報を収集するトポロジー管理実行部４１と、トポロジー管理を行うために必要な制御信号（制御メッセージ）を他の通信装置との間で送受信する通信部４２と、を備える。トポロジー管理実行部４１は、ネットワーク内のノード検索を行ってトポロジー情報を収集するルーティング管理部４１１およびルーティング管理部４１１により収集されたトポロジー情報が登録されたトポロジー管理テーブル４１２を有する。通信部４２は、他の通信装置へ制御メッセージを送信するメッセージ送信部４２１および他の通信装置からの制御メッセージを受信するメッセージ受信部４２２を備え、トポロジー制御プロトコルを実行する。なお、使用するトポロジー制御プロトコルは、たとえば、ＩＥＴＦ（Internet  Engineering  Task  Force）のＭＡＮＥＴ（Mobile  Ad-hoc  Network）ワーキンググループで規定されたプロトコルとする。
【００１７】
符号化関数決定部５は、自装置が使用する符号化関数の決定および他の通信装置に対して符号化関数の決定を指示する符号化関数制御部５１と、他の通信装置に対して符号化関数の決定指示を行うために必要な制御信号（制御メッセージ）を他の通信装置との間で送受信する通信部５２と、を備える。通信部５２は、他の通信装置へ制御メッセージを送信するメッセージ送信部５２１および他の通信装置からの制御メッセージを受信するメッセージ受信部５２２を備え、コーディング機能制御プロトコルを実行する。
【００１８】
つづいて、上述した構成の通信装置がネットワークコーディングを利用して行うデータ伝送手順について、図面を参照しながら説明する。
【００１９】
図３は、ネットワークコーディングを利用したデータ伝送の概要を示す図であり、たとえば通信装置Ｔ１〜Ｔ７により構成されたアドホックネットワークにおいて、通信装置Ｔ１を送信ノード、通信装置Ｔ６およびＴ７を受信ノードとした場合の動作概要を示している。なお、送信ノードに‘ｓ’を付し、また、受信ノードには‘ｄ’を付して説明を行う。この図３に示した例において、送信ノードである通信装置Ｔ１ｓは、自身に割り当てられた符号化関数を用いて、送信データ（コンテンツデータ）を伝送経路上の隣接ノード（隣接する通信装置）の数に応じて分割し（この例では２つ、以下、分割して得られたデータをそれぞれデータａ，データｂと呼ぶ）、それぞれを伝送経路上の隣接ノード（通信装置Ｔ２およびＴ３）に送信する。データａまたはデータｂを受信した通信装置では、受信データを伝送経路上の隣接ノードへ転送する。また、データａおよびデータｂの両方を受信した通信装置Ｔ４では、符号化関数として排他的論理和を使用して受信データを合成する。そして、得られた合成後のデータ(ａXORｂ)を隣接する通信装置Ｔ５へ送る。通信装置Ｔ５は、通信装置Ｔ４から受信したデータを隣接する通信装置Ｔ６ｄおよびＴ７ｄへ転送する。受信ノードである通信装置Ｔ６ｄおよびＴ７ｄは、それぞれの符号化関数を用いて以下の計算を行う事により、データａおよびデータｂの両方の情報を復元して受信データを得る（コンテンツデータを得る）。
【００２０】
通信装置Ｔ６ｄ：受信データ＝（ａ，ｂ）＝（ａ，ａXOR（ａXORｂ））
通信装置Ｔ７ｄ：受信データ＝（ａ，ｂ）＝（ｂXOR（ａXORｂ），ｂ）
【００２１】
図４は、ネットワークコーディングを利用したデータ伝送を説明するための図である。図４において、通信装置Ｔ１０ｓは送信ノードであり、通信装置Ｔ０９ｄ、Ｔ１９ｄおよびＴ２９ｄは受信ノードである。また、通信装置Ｔ０１〜Ｔ０８、Ｔ１１〜Ｔ１８およびＴ２１〜Ｔ２８は送信ノードから各受信ノードまでの伝送経路を構成する他のノード（以下、説明の便宜上「中継ノード」と呼ぶ）である。この図４を用いて、送信ノード（通信装置Ｔ１０ｓ）から受信ノード（通信装置Ｔ０９ｄ，Ｔ１９ｄ，Ｔ２９ｄ）へコンテンツデータを送信する場合の動作を説明する。なお、各通信装置が符号化処理を行う場合に使用する符号化関数を“Ｅｎ”とする。ここで、「ｎ」は通信装置と同じ識別番号とする。すなわち、通信装置Ｔ１０ｓの符号化関数はＥ１０ｓ、通信装置Ｔ０１の符号化関数はＥ０１となる。
【００２２】
たとえば通信装置Ｔ２４では、受信するデータは、通信装置Ｔ０３、Ｔ１３およびＴ２３との間に設定された３本の独立パスからの入力となる（入力パス数Ｌ＝３）。また、送信するデータは、通信装置Ｔ１５およびＴ２５への２本の独立パスへの出力となる（出力パス数Ｍ＝２）。そのため、通信装置Ｔ２４は、通信装置Ｔ０３、Ｔ１３およびＴ２４からの３データに対して符号化関数Ｅ２４を用いた符号化を行い、２データに分割して、通信装置Ｔ１５およびＴ２５へ送信する。この処理を、送信ノード（通信装置Ｔ１０ｓ）から各受信ノード（通信装置Ｔ０９ｄ、Ｔ１９ｄおよびＴ２９ｄ）への伝送経路を構成する各通信装置が繰り返す事により、End-to-End間でネットワークコーディングによるデータ伝送が行われる。符号化関数Ｅｎ（ｎ＝０１,０２,０３,０４,…）は、伝送経路の構成に対応して、符号化規則により受信ノードにて送信ノードの送信データ（コンテンツデータ）を復元できるように決定される。なお、本発明は、符号化規則には依存しない。
【００２３】
次に、本実施の形態の通信装置による符号化動作（ネットワークコーディング動作）について図５を用いて説明する。ここでは、一例として、図４に示した通信装置Ｔ２４の動作について説明する。なお、通信装置Ｔ２４への入力パスに接続された通信装置Ｔ０３、Ｔ１３およびＴ２３のそれぞれから受信する受信データをデータＤ１、Ｄ２およびＤ３とし、また、出力パスに接続された通信装置Ｔ１５およびＴ２５のそれぞれに対して送信する送信データをデータＤ４およびＤ５とする。ただし、各受信データおよび送信データは、符号化ヘッダ（以下、単に「ヘッダ」と記載する）が付加された状態で伝送される。ヘッダの詳細については後述する。
【００２４】
通信装置Ｔ２４では、各入力パス経由で受信したデータＤ１、Ｄ２およびＤ３を自身の符号化関数Ｅ２４を使用して符号化することにより、データＤ４およびＤ５を生成し、それぞれを対応する出力パス経由で送信する。ここで符号化関数Ｅ２４は、図５に示したように、例えばｅ１，ｅ２，ｅ３，ｅ４，ｅ５，ｅ６を要素とする行列である。通信装置Ｔ２４は、入力が３系統（入力パス数Ｌ＝３）であり出力が２系統（出力パス数Ｍ＝２）であるため、符号化関数Ｅ２４は、２行３列の行列となる。
【００２５】
通信装置Ｔ２４は、上記符号化処理を実行して得られた送信データのそれぞれに対して、ヘッダを付加し、符号化データメッセージとして出力パスへ出力（送信）する。詳細については後述するが、ヘッダ（符号化ヘッダ）には、符号化データメッセージを受信した通信装置がそれに含まれるデータを同期して符号化するために必要な情報を含んでいる。たとえば、ヘッダには同じコンテンツデータに基づいて生成された符号化データかどうかを判別するためのシーケンス番号が含まれる。
【００２６】
図６−１および図６−２は、それぞれ、本実施の形態の通信装置が送信する符号化データメッセージの構成例および本実施の形態の通信装置が符号化データメッセージを受信した場合に返送する符号化データ応答メッセージの構成例を示す図である。図示したように、符号化データメッセージは、ヘッダおよび符号化データを含む。ヘッダは、シーケンス番号、リンク送信ノードＩＤ、リンク受信ノードＩＤおよび経路ＩＤにより構成される。また、符号化データ応答メッセージは、符号化データメッセージに含まれるものと同じ構成のヘッダと、符号化データの受信結果（結果）を含む。なお、通信装置は、符号化データメッセージを受信し、符号化データ応答メッセージを返信する場合には、受信した符号化データメッセージに含まれていたヘッダを符号化データの受信結果にそのまま付加することにより、符号化データ応答メッセージを生成する。
【００２７】
シーケンス番号は、送信ノードである通信装置が符号化した単位である事を識別する番号。すなわち、同じコンテンツデータに基づいて生成された符号化データかどうかを判別するための情報である。たとえば図５に示した例では、入力データであるデータＤ１、Ｄ２およびＤ３の各シーケンス番号は同一となる。そのため、通信装置Ｔ２４による符号化動作では、これらのデータを同期して符号化する。
【００２８】
リンク送信／受信ノードＩＤは、メッセージを送信／受信する通信装置の識別情報である。たとえば図６−３に示したように、リンクL0324にて通信装置Ｔ０３がＴ２４へ送信する符号化データメッセージにおいては、通信装置Ｔ０３のＩＤ（識別情報）がリンク送信ノードＩＤ、通信装置Ｔ２４のＩＤがリンク受信ノードＩＤとなる。また、通信装置Ｔ２４が通信装置Ｔ０３へ送信する符号化データ応答メッセージにおいても、通信装置Ｔ０３のＩＤがリンク送信ノードＩＤ、通信装置Ｔ２４のＩＤがリンク受信ノードＩＤとなる。
【００２９】
経路ＩＤは、符号化データを受信した通信装置が、受信した符号化データをさらに符号化する際に使用する符号化関数を決定するための情報であり、送信ノードにより生成された情報である。すなわち、あるコンテンツデータの送信ノードから受信ノードまでの伝送経路上で送信される符号化データメッセージのヘッダには、同じ経路ＩＤが含まれる。
【００３０】
図７は、本実施の形態の通信装置による符号化（ネットワークコーディング）動作の詳細を説明するための図であり、具体的には、図４に示した通信装置２４の動作例を示している。この図７を用いて、符号化動作の詳細を説明する。
【００３１】
通信装置２４は、各入力パスから同じシーケンス番号の符号化データメッセージを受信すると、図７に示したように、各符号化データメッセージに含まれる符号化データ（符号化データＤ１，Ｄ２，Ｄ３）を、所定サイズの符号化単位に分けて符号化する。この時、利用する符号化関数Ｅ２４は、符号化データメッセージに含まれる経路ＩＤに対応する符号化関数とする。なお、符号化関数は、符号化データメッセージの受信に先立ち、符号化関数決定部５（図１参照）にて予め決定しておく。符号化関数の決定動作については後述する。この例では、符号化単位であるデータＤ１１，Ｄ２１，Ｄ３１を入力として、通信装置符号化関数Ｅ２４を用いて符号化する事により、データＤ４１およびＤ５１を得る。他の各符号化単位に対しても同様の処理を実行し、データＤ４２，Ｄ４３，…，Ｄ５２，Ｄ５３，…を得る。そして、これらの情報を、通信装置Ｔ１５およびＴ２５宛ての符号化データメッセージにて送信する。具体的には、リンク送信ノードＩＤに自身（通信装置Ｔ２４）のＩＤを設定し、リンク受信ノードＩＤに通信装置Ｔ１５のＩＤを設定し、さらに、データＤ４１，Ｄ４２，…を含んだ符号化データＤ４を含んだ符号化データメッセージと、リンク送信ノードＩＤに自身（通信装置Ｔ２４）のＩＤを設定し、リンク受信ノードＩＤに通信装置Ｔ２５のＩＤを設定し、さらに、データＤ５１，Ｄ５２，…を含んだ符号化データＤ５を含んだ符号化データメッセージと、を送信する。
【００３２】
ここで、符号化データメッセージの受信に先立って符号化関数決定部５が符号化関数を決定する動作について説明する。図８は、符号化関数決定部５が符号化関数を決定する際に使用するコーディング機能制御プロトコルのシーケンス例を示す図である。図８では、送信ノードから各受信ノードまでの伝送経路を構成する通信装置の数が７の場合に、送信ノードである通信装置Ｔ１ｓが他の通信装置（中継ノードである通信装置Ｔ２〜Ｔ５，受信ノードである通信装置Ｔ６ｄおよびＴ７ｄ）に対して符号化関数を決定するように指示を行うシーケンスを示している。
【００３３】
送信ノードである通信装置Ｔ１は、既存の方法（いかなる方法でもよい）により各受信ノードまでの伝送経路を算出し、算出した伝送経路を構成する全ての他の通信装置に対して、符号化関数決定指示メッセージを送信する。このメッセージを受信した各通信装置（通信装置Ｔ２〜Ｔ７）は、受信したメッセージに含まれる情報に基づいて自身が使用する符号化関数を決定し、決定処理が完了した事を示す情報を符号化関数決定応答メッセージにて通信装置Ｔ１に返送する。通信装置Ｔ１は、全ての通信装置において符号化関数決定処理が完了した事を確認すると、情報伝送の準備が完了したと判断する。以下に、これらの符号化関数決定指示メッセージおよび符号化関数決定応答メッセージの詳細について、図９−１および図９−２を参照しながら説明する。
【００３４】
図９−１に示したように、符号化関数決定指示メッセージは、指示先ノードＩＤ、送信ノードＩＤ、受信ノードＩＤリスト、独立パス数および経路ＩＤを含む。指示先ノードＩＤは、符号化関数の決定処理実行を指示する相手先の識別情報であり、符号化関数決定指示メッセージの宛先である。送信ノードＩＤは、データ伝送を行う送信ノードの識別情報であり、符号化関数決定指示メッセージの送信元の識別情報を兼ねている。受信ノードＩＤリストは、受信ノードの数（ノード数）とその識別情報（１つ以上のノードＩＤを含んだノードＩＤリスト）の組み合わせから構成される情報である。独立パス数は、送信ノードから各受信ノードまでの伝送経路を構成する独立パスの数であり、符号化関数決定指示メッセージを受信した通信装置が伝送経路を算出する際に使用する情報である。経路ＩＤは、送信ノードが生成する情報であり、上述したように、符号化データメッセージを受信した通信装置が、その中に含まれるデータを符号化する際に使用する符号化関数を特定するための情報である。この情報は、たとえば、送信ノードが自身のＩＤ（送信ノードＩＤ）にシリアル番号を付加することにより生成される。
【００３５】
また、図９−２に示したように、符号化関数決定応答メッセージは、指示先ノードＩＤ、送信ノードＩＤ、経路ＩＤおよび結果を含む。指示先ノードＩＤは、符号化関数決定応答メッセージの送信元の識別情報である。送信ノードは、この情報から処理を完了したノードを特定する。送信ノードＩＤは、データ伝送を行う送信ノードの識別情報であり、符号化関数決定応答メッセージの宛先の識別情報を兼ねている。経路ＩＤには、符号化関数決定指示メッセージで送られた経路ＩＤと同じ値を設定する。送信ノードは、この値から該当するデータ伝送を特定する。結果は、符号化関数決定処理の実行結果を示す情報であり、たとえば、符号化関数決定が正常に終了（成功）した場合は「０」を、それ以外（失敗）の場合には、失敗理由に応じた値を設定する。
【００３６】
図９−２の例では、結果フィールドが「−１」の場合、失敗理由が「送信ノードがトポロジーテーブルに存在しない」を、「−２」の場合、失敗理由が「受信ノードがトポロジーテーブルに存在しない」を、「−３」の場合、失敗理由が「指定独立パス数が確保できない」を、「−４」の場合、失敗理由が「要求タイムアウト」を、「−９」の場合、失敗理由が「その他」を示す。また、「−３」の場合は、符号化関数の計算が不能とし、独立パスを開放する。このとき、確保できないことが判明した時点で符号化関数決定応答メッセージを返信する。「−４」の場合も独立パスを開放する。
【００３７】
なお、本実施の形態で使用する符号化関数削除指示メッセージおよび符号化関数削除応答メッセージの構成例を図１０−１および図１０−２に示す。
【００３８】
符号化関数削除指示メッセージは、指示先ノードＩＤ、送信ノードＩＤおよび経路ＩＤを含む。指示先ノードＩＤは、決定済みの符号化関数の削除を指示する相手先の識別情報であり、符号化関数削除指示メッセージの宛先である。送信ノードＩＤは、伝送データ（コンテンツデータ）の送信元（送信ノード）の識別情報であり、符号化関数削除指示メッセージの送信元の識別情報を兼ねている。経路ＩＤは、送信ノードが生成する情報であり、このメッセージを受信した通信装置が、削除する符号化関数を特定するための情報である。
【００３９】
本実施の形態の通信装置は、符号化関数削除指示メッセージを受信した場合、それに含まれる経路ＩＤに基づいて、受信メッセージが指示する符号化関数を特定し、特定した符号化関数を削除する。
【００４０】
符号化関数削除応答メッセージは、指示先ノードＩＤ、送信ノードＩＤ、経路ＩＤおよび結果を含む。指示先ノードＩＤは、符号化関数削除応答メッセージの送信元の識別情報である。送信ノードは、この情報から処理を完了したノードを特定する。送信ノードＩＤは、伝送データ（コンテンツデータ）の送信元（送信ノード）の識別情報であり、符号化関数削除応答メッセージの宛先の識別情報を兼ねている。経路ＩＤには、符号化関数削除指示メッセージで送られた経路ＩＤと同じ値を設定する。送信ノードは、この値から該当するデータ伝送を特定する。結果は、符号化関数の削除が正常に終了したかどうか（削除が成功したかどうか）を示す情報であり、たとえば、成功の場合「０」、失敗の場合は「−１」を設定する。
【００４１】
つづいて、本実施の形態の通信装置により構成された通信システムにおけるデータ伝送動作について説明する。図１１は、本実施の形態の通信システムにおけるデータ伝送動作の一例を示す図であり、各ノード（通信装置）が実行する処理の構成を示す図である。
【００４２】
送信ノードに相当する通信装置においては、ルーティング処理、独立パス管理処理、符号化関数決定処理、データ伝送設定処理およびネットワークコーディング通信処理を実行する。
【００４３】
ルーティング処理は、定期的にトポロジー（ネットワーク内の各通信装置の配置状態の情報）を更新する処理である。この処理では、トポロジー管理部４のトポロジー管理実行部４１を構成するルーティング管理部４１１（図１および図２参照）が、トポロジー制御プロトコルに従って制御メッセージの送受信をネットワーク内の他の通信装置と行い、トポロジー情報を定期的に収集する。また、収集したトポロジー情報をトポロジー管理テーブル４１２へ登録し、トポロジー管理テーブル４１２を更新する。
【００４４】
独立パス管理処理は、アプリケーション１がネットワークコーディング通信によるデータ伝送開始を指示する処理（nc＿open()）を実行した場合に実行する処理である。この処理では、伝送経路算出手段に相当するルート管理部２が、通信相手先となる受信ノードの情報をアプリケーション１から受け取ると、さらに、トポロジー管理部４からトポロジー情報を取得し、これらの受信ノード情報およびトポロジー情報に基づいて、各受信ノードまでの伝送経路を算出する。なお、算出した伝送経路の情報は、その管理情報である経路ＩＤと関連付けられ、ネットワークコーディング部３の独立パス管理部３２で管理される。
【００４５】
符号化関数決定処理は、上記独立パス管理処理につづいて実行される処理であり、この処理では、符号化関数決定部５の符号化関数制御部５１が、ルート管理部２により算出された伝送経路の情報に基づいて、当該伝送経路上でネットワークコーディング通信を行う際に使用する符号化関数を決定する。なお、決定した符号化関数の情報は、上記経路ＩＤと関連付けられ、ネットワークコーディング部３の符号化関数管理部３３で管理される。
【００４６】
データ伝送設定処理は、ネットワークコーディング通信を行う際に使用する符号化関数の決定処理などを実行するように、他の通信装置（中継ノードおよび受信ノード）に対して指示を行う処理である。この処理では、符号化関数決定部５の符号化関数制御部５１が他の通信装置に対して送信する制御メッセージを生成し、メッセージ送信部５２１経由で送信する。また、符号化関数制御部５１は、送信した制御メッセージに対する応答メッセージが他の通信装置から送信された場合、当該応答メッセージをメッセージ受信部５２経由で受信する。なお、符号化関数制御部５１が送受信する制御メッセージは、上述した符号化関数決定指示メッセージおよび符号化関数決定応答メッセージ（図９−１および図９−２参照）である。符号化関数制御部５１は、符号化関数決定指示メッセージを受信した通信装置が、自身（送信ノードに相当する通信装置）が算出した伝送経路と同じ伝送経路を算出するために必要な情報、すなわち、上記ルート管理部２が伝送経路を算出する際に使用した情報であって、符号化関数決定指示を受信した通信装置が保持していない情報を、符号化関数決定指示メッセージに含めて送信する。
【００４７】
ネットワークコーディング通信処理は、上述した独立パス管理処理、符号化関数決定処理およびデータ伝送設定処理を実行し、他の通信装置が所定の処理を実行してデータ伝送を行うための準備が終了後、アプリケーション１がデータ伝送の開始を指示する処理（nc＿send()）を実行したことを検出した場合に実行する処理である。この処理では、ネットワークコーディング部３の符号化部３１が、符号化関数決定部５が実行した符号化関数決定処理にて決定された符号化関数を使用して、受信ノードへ送信するコンテンツデータを符号化し、得られた符号化データにヘッダを付加して符号化データメッセージ（図６−１参照）として送信する。なお、符号化部３１では、上述したとおり、出力パス（ルート管理部２により算出された伝送経路上の隣接ノード）の数と同数の符号化データが生成されることとなる。各符号化データメッセージは、独立パス管理処理にて算出された伝送経路情報が示す各出力パスの中の対応するパスへ出力される。
【００４８】
中継ノードに相当する通信装置においては、ルーティング処理、データ伝送設定処理およびネットワークコーディング通信処理を実行する。なお、ルーティング処理は、上述した送信ノードにおけるルーティング処理と同じである。そのため、説明は省略する。
【００４９】
データ伝送設定処理は、送信ノードがデータ伝送設定処理を実行して送信した制御メッセージ（符号化関数決定指示メッセージ）を受信した場合に実行する処理である。
【００５０】
この処理では、まず、符号化関数決定部５が送信ノードから受信した符号化関数決定指示メッセージに含まれる情報（ヘッダ内の送信ノードＩＤ、受信ノードＩＤリストおよび独立パス数）およびトポロジー管理部４が保持しているトポロジー情報に基づいて、ルート管理部２が、送信ノードから各受信ノードまでの伝送経路を算出する。なお、この処理は、上述した送信ノードにおける独立パス管理処理と同様の処理である。また、送信ノードが伝送経路を算出する際に使用するデータと同じデータ（送信ノードＩＤ、受信ノードＩＤおよびトポロジー情報）を使用するため、送信ノードにおける算出結果と同じ結果が得られる。算出した伝送経路の情報は、受信した符号化関数決定指示メッセージに含まれる経路ＩＤ情報と関連付けられ、ネットワークコーディング部３の独立パス管理部３２で管理される。
【００５１】
次に、符号化関数決定部５の符号化関数制御部５１が、ルート管理部２により算出された伝送経路の情報に基づいて、当該伝送経路上でネットワークコーディング通信を行う際に使用する符号化関数を決定する。なお、この処理は、上述した送信ノードにおける符号化関数決定処理と同様の処理であり、決定した符号化関数の情報は、受信した符号化関数決定指示メッセージに含まれる経路ＩＤ情報と関連付けられ、ネットワークコーディング部３の符号化関数管理部３３で管理される。
【００５２】
中継ノードにおけるネットワークコーディング通信処理は、送信ノードまたは他の中継ノードから符号化データメッセージを受信した場合に実行する処理である。この処理では、ネットワークコーディング部３の符号化部３１が、まず、受信した符号化データメッセージに含まれるヘッダ内の経路ＩＤ情報に対応する符号化関数を、符号化関数決定部５により予め決定されていた符号化関数の中から特定する。次に、特定した符号化関数を用いて、符号化データメッセージに含まれていたデータを符号化する。なお、符号化部３１は、受信した符号化データメッセージに含まれるヘッダ内の経路ＩＤ情報に対応する伝送経路情報（独立パス管理部３２で管理されている伝送経路情報の中の当該経路ＩＤに対応する情報）に基づいて、自装置への入力パスを確認し、すべての入力パス経由で符号化データメッセージを受信した後に、各符号化データメッセージ内の符号化データを用いて符号化処理を実行する。生成した各符号化データメッセージは、上記ルート管理部２により算出された伝送経路情報が示す各出力パスの中の対応するパスへ出力される。
【００５３】
受信ノードに相当する通信装置においては、ルーティング処理、データ伝送設定処理およびネットワークコーディング通信処理を実行する。なお、ルーティング処理およびデータ伝送設定処理は、上述した中継ノードにおけるルーティング処理およびデータ伝送設定処理と同じである。そのため、これらの説明は省略する。
【００５４】
受信ノードにおけるネットワークコーディング通信処理は、中継ノードから符号化データメッセージを受信した場合に実行する処理である。この処理では、ネットワークコーディング部３の符号化部３１が、まず、受信した符号化データメッセージに含まれるヘッダ内の経路ＩＤ情報に対応する符号化関数を、符号化関数決定部５により予め決定されていた符号化関数の中から特定する。次に、特定した符号化関数を用いて、符号化データメッセージに含まれている符号化データから元のコンテンツデータ（送信ノードが送信したコンテンツデータ）を復元する。なお、符号化部３１がコンテンツデータを復元するのではなく、図示していない他の構成要素が復元処理を行うようにしてもよい。また、コンテンツデータの復元を行うと、その旨をアプリケーション１へ通知し、アプリケーション１は、復元されたデータを取得するための処理（nc＿recv()）を実行してコンテンツデータを取得する。
【００５５】
図１２は、本実施の形態の通信装置によるデータ伝送動作が終了後、各通信装置が保持している符号化関数を削除する場合の動作を示す図であり、各ノード（通信装置）が実行する機能の構成を示す図である。
【００５６】
送信ノードに相当する通信装置においては、ルーティング処理、独立パス削除処理、符号化関数削除処理およびデータ伝送設定解除処理を実行する。なお、ルーティング処理は、上述した図１１の送信ノード等が実行するルーティング処理と同じである。そのため、説明は省略する。
【００５７】
独立パス削除処理は、アプリケーション１がネットワークコーディング通信によるデータ伝送終了を指示する処理（nc＿close()）を実行した場合に実行する処理である。この処理では、ルート管理部２が、アプリケーション１からの指示に対応する伝送経路を特定し、特定した伝送経路の情報を削除するように、ネットワークコーディング部３へ指示を行う。指示を受けたネットワークコーディング部３では、符号化部３１が、独立パス管理部３２が保持している情報の中から、指示内容が示す伝送経路情報を削除する。
【００５８】
符号化関数削除処理は、上記独立パス削除処理につづいて実行される処理である。この処理では、独立パス削除処理で削除された伝送経路情報に対応する（当該伝送経路情報に対応付けられていたものと同じ経路ＩＤに関連付けられた）符号化関数を削除する。具体的には、符号化部３１が、符号化関数管理部３３が保持している情報の中の対応する情報を削除する。
【００５９】
データ伝送設定解除処理は、上記アプリケーション１からの指示内容に対応するデータ伝送で使用していた符号化関数などを削除するように、他の通信装置（中継ノードおよび受信ノード）に対して指示を行う処理である。この処理では、符号化関数決定部５の符号化関数制御部５１が他の通信装置に対して送信する制御メッセージを生成し、メッセージ送信部５２１経由で送信する。また、符号化関数制御部５１は、送信した制御メッセージに対する応答メッセージが他の通信装置から送信された場合、当該応答メッセージをメッセージ受信部５２経由で受信する。なお、符号化関数制御部５１が送受信する制御メッセージは、上述した符号化関数削除指示メッセージおよび符号化関数削除応答メッセージ（図１０−１および図１０−２参照）である。
【００６０】
送信ノードに相当する通信装置以外の通信装置においては、ルーティング処理および符号化関数削除処理およびデータ伝送設定解除処理を実行する。なお、ルーティング処理は、上述した図１１の送信ノード等が実行するルーティング処理と同じである。そのため、説明は省略する。
【００６１】
データ伝送設定解除処理は、送信ノードがデータ伝送設定解除処理を実行して送信した制御メッセージ（符号化関数削除指示メッセージ）を受信した場合に実行する処理である。この処理では、まず、符号化関数決定部５が送信ノードから受信した符号化関数削除指示メッセージに含まれる情報（経路ＩＤ）に対応する伝送経路を特定し、特定した伝送経路の情報を削除するように、ネットワークコーディング部３へ指示を行う。指示を受けたネットワークコーディング部３では、符号化部３１が、独立パス管理部３２が保持している情報の中から、指示内容が示す伝送経路情報を削除する。なお、この処理は、上述した送信ノードにおける独立パス削除処理と同様の処理である。
【００６２】
符号化部３１は、次に、上記削除した伝送経路情報に対応する（当該伝送経路情報に対応付けられていたものと同じ経路ＩＤに関連付けられた）符号化関数を削除する。なお、この処理は、上述した送信ノードにおける符号化関数削除処理と同様の処理である。
【００６３】
このように、本実施の形態の通信システムでは、データ伝送を開始するにあたって、送信ノードは、各受信ノードまでの伝送経路を算出するために必要な情報を他のノード（中継ノードおよび受信ノード）へ予め通知し、情報の通知を受けた各ノードは、通知された情報に基づいて伝送経路を独自に算出し、さらに、ネットワークコーディングを利用したデータ伝送にて使用する符号化関数を決定しておくこととした。そして、データ伝送では、送信ノードは、各ノードが伝送経路および符号化関数を特定するために必要な識別情報を含んだヘッダとともにデータ伝送を行い、中継ノードは、受信したデータに対して、予め決定しておいた符号化関数を用いて符号化処理を行い、得られた符号化データに上記識別情報を含んだヘッダを付与した上で、算出しておいた伝送経路情報により特定される隣接ノードに対して送信し、受信ノードは、符号化された状態の受信データを、予め決定しておいた符号化関数を利用して復元することとした。これにより、符号化データに付与するヘッダ情報を従来よりも少なくすることができ、帯域の使用効率を上げることができる。この結果安定した通信が実現できる。
【００６４】
実施の形態２．
図１３は、実施の形態２の通信装置の構成例を示す図である。実施の形態２の通信装置は、実施の形態１の通信装置（図１参照）のネットワークコーディング部３をネットワークコーディング部３ａに置き換え、さらに、隣接ノード管理部６を追加した構成をとる。その他の部分については実施の形態１の通信装置と同様である。本実施の形態では、実施の形態１の通信装置と異なる構成要素であるネットワークコーディング部３ａおよび隣接ノード管理部６の動作を中心に説明を行い、実施の形態１で説明済みの構成要素については説明を省略する。
【００６５】
ネットワークコーディング部３ａは、実施の形態１の通信装置が備えるネットワークコーディング部３に対して、独立パス補完部３４を追加した構成をとる。その他の構成要素についてはネットワークコーディング部３の対応する各構成要素と同じ処理を実行する。
【００６６】
独立パス補完部３４は、隣接する通信装置（隣接ノード）が移動し、トポロジーが変化した場合に、後述する代替経路を検索する必要があるかどうかを判断する。
【００６７】
隣接ノード管理部６は、隣接ノードとの間の独立リンクの接続状態（隣接ノードの構成変化）を監視し、接続状態が変化したことを検出した場合、その旨を独立パス補完部３４へ通知する。なお、隣接ノード管理部６は、隣接ノードの構成変化を監視するにあたって、制御プロトコルを構成する近隣探索制御プロトコル（Neighbor  Discovery  Control  Protocol）を使用する。
【００６８】
図１４は、実施の形態２の通信装置が実装している制御プロトコルを使用して各種処理を実行するトポロジー管理部４、符号化関数決定部５および隣接ノード管理部６の構成例を示す図である。なお、トポロジー管理部４および符号化関数決定部５の構成は実施の形態１の通信装置が備えていたトポロジー管理部４および符号化関数決定部５と同様である。そのため、本実施の形態では、隣接ノード管理部６の構成および動作について説明を行う。
【００６９】
隣接ノード管理部６は、隣接ノードを監視する隣接ノード管理実行部６１と、隣接ノードを監視するために必要な制御信号（制御メッセージ）を他の通信装置（隣接ノード）との間で送受信する通信部６２と、を備える。隣接ノード管理実行部６１は、隣接ノードの情報を収集する接続状態監視部６１１および接続状態監視部６１１により収集された情報が登録された隣接ノード管理テーブル６１２を有する。通信部６２は、他の通信装置へ制御メッセージを送信するメッセージ送信部６２１および他の通信装置からの制御メッセージを受信するメッセージ受信部６２２を備え、近隣探索制御プロトコルを実行する。
【００７０】
図１５は、本実施の形態の通信装置により構成された通信システムにおけるデータ伝送動作の一例を示す図である。図１５では、通信装置Ｔ０９（送信ノード）から通信装置Ｔ０８（受信ノード）へデータを伝送する場合の例を示しており、詳細には、送信ノードから受信ノードまでの伝送経路上の通信装置Ｔ０５（中継ノード）が移動し、トポロジーが変化する場合の例を示している。また、太線の矢印が、当初の伝送経路を構成する独立パスを示し、破線の矢印が、トポロジー変化に伴い寸断された伝送経路（Ｔ０１→Ｔ０５→Ｔ０６）の代替経路を構成する独立パスを示している。なお、図示した電波伝搬影響範囲は、通信装置Ｔ０１から送信された電波の到達範囲を示し、この範囲内に位置する通信装置が通信装置Ｔ０１の隣接ノードとなる。
【００７１】
以下に、図１５を参照しながら、本実施の形態の通信装置が代替経路を設定する場合の動作を説明する。なお、図示した当初の独立パス（当初の伝送経路）を各通信装置が設定する動作は、実施の形態１で説明した動作と同じであるため、説明を省略し、当初の独立パスを設定した後の動作について説明する。
【００７２】
通信装置Ｔ０１では、隣接ノード管理部６の接続状態監視部６１１が近隣探索制御プロトコルを使用して隣接ノードの構成変化を監視し、構成が変化したことを検出した場合、監視結果を示す情報を隣接ノード管理テーブル６１２へ登録する。また、接続状態監視部６１１は、隣接ノードの構成が変化したこと（この例では通信装置Ｔ０５との通信が不可能になったこと）をトポロジー管理部４およびネットワークコーディング部３ａ内の独立パス補完部３４へ通知する。
【００７３】
通信装置Ｔ０５との通信が不可能になったことを接続状態監視部６１１から通知された独立パス補完部３４では、独立パス管理部３２が保持している情報（ルート管理部２により算出された伝送経路の情報）に基づいて、通信装置Ｔ０５が伝送経路上の通信装置（中継ノード）かどうかを確認する。そして、通信装置Ｔ０５が中継ノードであった場合、隣接ノード管理部６に対して、通信装置Ｔ０５を経由することなく通信装置Ｔ０５の次の通信装置（図１５の例では通信装置Ｔ０６）へデータを伝送するための代替経路を検索するように、指示を出す。
【００７４】
独立パス補完部３４からの代替経路検索指示を受けた隣接ノード管理部６は、代替隣接ノード選択手段としての動作を行う。すなわち、その時点で通信可能な通信装置（隣接ノード）を利用して代替経路を設定（構築）できるかどうかを判断し、設定可能と判断した場合、代替経路を設定する。図１５の例では、代替経路を構築できると判断し、通信装置Ｔ０１から通信装置Ｔ１０およびＴ１３を経由して通信装置Ｔ０６へ至る経路を代替経路として設定する。
【００７５】
なお、上記の代替経路を設定した場合、通信装置Ｔ０５が実施していた符号化関数Ｅ０５を用いた符号化処理を、新たに通信装置Ｔ１０およびＴ１３が実施する。たとえば通信装置Ｔ１０が符号化関数Ｅ０５を用いた符号化処理を実施し、通信装置Ｔ１３は符号化を行わずに受信データをそのまま転送する事により、通信装置Ｔ０５の移動の影響を通信装置Ｔ１０およびＴ１３で補う事ができる。この結果、送信ノード（通信装置Ｔ０９）から受信ノード（通信装置Ｔ０８）までのEnd-to-End間の伝送経路の再計算や各通信装置の符号化関数を再計算する負荷が生じない。
【００７６】
独立パス補完部３４は、符号化関数決定部５に対して指示を行い、代替経路を構成する通信装置（通信装置Ｔ１０およびＴ１３）に対して、代替経路を構成する通信装置であることを通知させる。
【００７７】
符号化関数決定部５は、上記指示を受けた場合、コーディング機能制御プロトコルを使用し、通信装置Ｔ１０およびＴ１３に対して、符号化関数決定処理を実行するように指示を行う。
【００７８】
上記指示を受けた通信装置Ｔ１０およびＴ１３では、独立パス管理部３２が送信ノードから受信ノードまでの伝送経路検索を実行し、また、伝送経路の検索結果に基づいて符号化関数決定部５が符号化関数決定処理を実行して、自身が使用する符号化関数を決定する。ただし、通信装置Ｔ１０とＴ１３は、連携して符号化関数を決定し、通信装置Ｔ１３から出力される符号化データが、それまで通信装置Ｔ０５が実行していた符号化処理で得られる結果（符号化データ）と同じになるようにする。通信装置Ｔ１０およびＴ１３は、符号化関数の決定処理が終了すると、その旨を通信装置Ｔ０１に通知する。
【００７９】
なお、代替経路を構成する各通信装置が符号化関数を決定するのではなく、代替経路を検索した通信装置Ｔ０１が、代替経路を構成する各通信装置に使用させる符号化関数を決定し、通知するようにしてもよい。これにより、代替経路を構成する各通信装置同士が連携して符号化関数を決定する必要がなくなる。
【００８０】
このように、本実施の形態の通信システムでは、送信ノードから受信ノードまでの伝送経路上の各通信装置（中継ノード）は、自身の次の中継ノード（符号化データメッセージの送信先の中継ノード）が移動し、当該中継ノードとの通信が不可能になった場合には、隣接ノードを利用して代替経路を設定可能かどうかの判断を行い、設定可能な場合には代替経路を設定してデータ伝送を継続することとした。これにより、実施の形態１で示した効果に加えて、トポロジーの変化に柔軟に対応し、システム全体の処理負荷を低減しつつ効率的にデータ伝送を継続できる。
【００８１】
実施の形態３．
図１６は、実施の形態３の通信装置の構成例を示す図である。実施の形態３の通信装置は、実施の形態２の通信装置（図１３参照）のルート管理部２をルート管理部２ｂに置き換え、さらに、グループ管理部７を追加した構成をとる。その他の部分については実施の形態２の通信装置と同様である。本実施の形態では、実施の形態２の通信装置と異なる構成要素であるルート管理部２ｂおよびグループ管理部７の動作を中心に説明を行い、実施の形態１または２で説明済みの構成要素については説明を省略する。
【００８２】
本実施の形態の通信装置により構成されるアドホックネットワークでは、ネットワーク内の各通信装置をグループ化して管理する。各グループは、たとえば、同一の目的を有する通信装置同士が集合して構築される。そのため、グループ管理部７は、自身およびネットワーク内の各通信装置がどのグループに属しているかを管理する。なお、グループ管理部７は、制御プロトコルを構成するグループ管理プロトコル（Group  Control  Protocol）を使用してグループ管理を行う。
【００８３】
また、ルート管理部２ｂは、送信ノードから受信ノードまでの伝送経路算出処理において、グループ管理部７が保持しているグループ管理情報（ネットワーク内の各通信装置のグループ情報）を参照する。すなわち、送信ノードの情報、受信ノードの情報、トポロジー情報およびグループ情報に基づいて、伝送経路を算出する。
【００８４】
図１７は、実施の形態３の通信装置が実装している制御プロトコルを使用して各種処理を実行するトポロジー管理部４、符号化関数決定部５、隣接ノード管理部６およびグループ管理部７の構成例を示す図である。なお、トポロジー管理部４、符号化関数決定部５および隣接ノード管理部６の構成は、実施の形態２の通信装置が備えていたトポロジー管理部４、符号化関数決定部５および隣接ノード管理部６と同様である。そのため、本実施の形態では、グループ管理部７の構成および動作について説明を行う。
【００８５】
グループ管理部７は、自身および他の通信装置がどのグループに属しているかを管理するグループ管理実行部７１と、グループ管理を行うために必要な信号（制御メッセージ）を他の通信装置との間で送受信する通信部７２と、を備える。なお、各通信装置をグループ化する方法については特に規定しないが、たとえば、グループ管理部７が、トポロジー情報を参照し、各グループに属する通信装置の数が予め規定された数となり、かつ同一グループの通信装置同士が物理的に近い関係を維持するように（ある範囲内には同一グループの通信装置のみが存在するように）、グループ化を行う。グループ化は、すべての通信装置において個別に行ってもよいし、システム内の特定の通信装置が代表して行い、その結果を他の通信装置へ通知するようにしてもよい。ただし、各通信装置が個別にグループ化を行なう場合、すべての通信装置で同じ結果が得られるようにする。
【００８６】
グループ管理実行部７１は、グループ制御部７１１およびグループ管理テーブル７１２を備え、グループ制御部７１１は、グループ管理テーブル７１２に登録された情報に基づいて、自身およびネットワーク内の他の通信装置が属しているグループを認識し、また、自身が他のグループとの境界に位置しているノード（境界ノード）かどうかを判定する。通信部７２は、他の通信装置へ制御信号（制御メッセージ）を送信するメッセージ送信部７２１および他の通信装置からの制御信号を受信するメッセージ受信部７２２を備え、グループ管理プロトコルを実行する。
【００８７】
ここで、境界ノードとは、自身が属しているグループとは異なるグループに属している隣接ノードへ符号化データメッセージ（図６−１参照）を送信するノード、または、自身が属しているグループとは異なるグループに属している隣接ノードから符号化データメッセージを受信するノード、である。ネットワーク内の各通信装置では、ルート管理部２ｂが伝送経路を算出後、その算出結果に基づいてグループ管理部７が、どの通信装置が境界ノードであるかを判定する。たとえば、図１８に示した伝送経路が算出された場合、通信装置Ｔ１５がグループＧ１における境界ノード、通信装置Ｔ１６がグループＧ２における境界ノードとなる。なお、判定結果は、たとえばグループ管理テーブル７１２で保持しておく。
【００８８】
本実施の形態では、ネットワークコーディングを行う際に使用する符号化関数を同一グループに属するノードにより構成された経路を対象として算出し、異なるグループ間の通信（境界ノード間の通信）では、符号化されていないデータ（送信側の境界ノードで復号化され、復元されたコンテンツデータ）を伝送するものとする。これにより、局所的に発生する通信装置の移動によるトポロジー変化に追従して再計算する符号化関数の範囲をグループ内に限定する。また、自身が境界ノードである場合、通信装置は、後述する境界ノードしての動作を実行する。
【００８９】
以下、本実施の形態の通信装置の動作を、送信ノードとして動作する場合、境界ノード以外の中継ノードとして動作する場合、境界ノードとして動作する場合、受信ノードとして動作する場合、に分けて説明する。なお、実施の形態１または２で説明した動作と同じ動作については説明を省略する。
【００９０】
送信ノードとして動作する場合、本実施の形態の通信装置では、まず、ルート管理部２ｂが、アプリケーション１から取得した受信ノード情報、トポロジー管理部４で保持されているトポロジー情報およびグループ管理部７で保持されているグループ管理情報、に基づいて、受信ノードまでの伝送経路を算出する。このとき、特定の範囲内では同じグループに属している通信装置のみを経由するように伝送経路を算出する。
【００９１】
次に、符号化関数決定部５が、ルート管理部２ｂにより算出された伝送経路情報に基づいて、自身が使用する符号化関数を決定する。ただし、自身が属するグループの境界ノードまでの伝送経路情報に基づいて符号化関数を決定する。そのため、まず、グループ管理部７が保持している情報から境界ノードを特定し、さらに、ルート管理部２ｂにより算出された伝送経路に基づいて符号化関数を決定する。
【００９２】
自身が使用する符号化関数の決定処理が終了すると、符号化関数決定部５は、自身と同じグループ内の各中継ノード（境界ノードを含む）に対して、符号化関数を決定するように指示を出す。このとき、図１９に示した制御メッセージを送信することにより、指示を行う。なお、図１９は、自身と同じグループ内の中継ノードに対して符号化関数決定指示を行う際に使用する制御メッセージ（グループ内符号化関数決定指示メッセージ）の構成例を示す図である。
【００９３】
図１９に示したように、グループ内符号化関数決定指示メッセージは、指示先ノードＩＤ、送信ノードＩＤ、受信ノードＩＤリスト、グループ内送信ノードＩＤ、グループ内受信ノードＩＤリスト、独立パス数および経路ＩＤを含む。このメッセージは、実施の形態１および２の通信システムで使用される符号化関数決定指示メッセージ（図９−１参照）に対して、グループ内送信ノードＩＤおよびグループ内受信ノードＩＤリストを追加した構成である。なお、このメッセージを受信した通信装置は、応答メッセージとして、実施の形態１で示した符号化関数決定応答メッセージ（図９−２参照）と同一構成のグループ内符号化関数決定応答メッセージを返送する。
【００９４】
グループ内送信ノードＩＤは、グループ内符号化関数決定指示メッセージの送信元のノードを示す情報である。なお、送信ノードとして動作する通信装置が生成したグループ内符号化関数決定指示メッセージの送信ノードＩＤおよびグループ内送信ノードＩＤには、同じ情報が設定される。
【００９５】
グループ内受信ノードＩＤリストは、同一グループ内の中継ノードの中で、受信した符号化データメッセージを他のグループに属している中継ノードへ転送する中継ノード（すなわち境界ノード）の識別情報（ＩＤ）のリストである。
【００９６】
符号化関数決定部５は、グループ内符号化関数決定指示メッセージに対する応答（グループ内符号化関数決定応答メッセージ）を同一グループ内のすべての中継ノードから受信すると、データ伝送（符号化データメッセージの送信）の準備が完了したと判断する。以降の動作は、実施の形態１または２で示した送信ノードと同様である。
【００９７】
また、境界ノード以外の中継ノード（以下、非境界中継ノードと呼ぶ）として動作する場合、本実施の形態の通信装置では、まず、ルート管理部２ｂが、受信したグループ内符号化関数決定指示メッセージに含まれる送信ノードＩＤ、受信ノードＩＤおよび独立パス数と、トポロジー情報管理部４が保持しているトポロジー情報と、グループ管理部７が保持しているグループ管理情報と、に基づいて、送信ノードから受信ノードまでの伝送経路を算出する。伝送経路を算出するにあたっては、上述した送信ノードによる伝送経路算出結果と同じ結果が得られるような条件を使用する。
【００９８】
次に、符号化関数決定部５が、ルート管理部２ｂにより算出された伝送経路の情報に基づいて、自身が使用する符号化関数を決定する。ただし、上述した送信ノードの場合と同様に、自身が属するグループの境界ノードまでの伝送経路情報に基づいて符号化関数を決定する。また、符号化関数の決定処理が終了した場合、その旨を示す制御メッセージであるグループ内符号化関数決定応答メッセージを返送する。以降の動作は、実施の形態１または２で示した中継ノードと同様である。
【００９９】
また、境界ノードとして動作しかつ他のグループに属する境界ノードに対して符号化データメッセージを送信する場合、すなわち、上記グループ内符号化関数決定指示メッセージのグループ内受信ノードＩＤリストに含まれるノードＩＤが示す境界ノード（以下、送信境界ノードと呼ぶ）の場合、本実施の形態の通信装置では、まず、上記非境界中継ノードと同様の処理を実行して伝送経路の算出および符号化関数を決定後、グループ内符号化関数決定応答メッセージを返送する前に、以下の処理を実行する。
【０１００】
すなわち、符号化関数を決定後、他のグループに属する境界ノードに対して、当該他のグループ内の各通信装置が使用する符号化関数を決定するように、指示を行う。具体的には、実施の形態１で示した符号化関数決定指示メッセージ（図９−１参照）と同一構成のグループ間符号化関数決定指示メッセージを他のグループに属する境界ノードに対して送信する。そして、この指示に対する応答であるグループ間符号化関数決定応答メッセージを受信した場合、グループ内符号化関数決定応答メッセージを返送する。以降の動作は、上記非境界中継ノードと同様である。
【０１０１】
また、境界ノードとして動作しかつ他のグループに属する境界ノードから符号化データメッセージを受信する場合、すなわち、上記グループ内符号化関数決定指示メッセージのグループ内送信ノードＩＤが示す境界ノード（以下、受信境界ノードと呼ぶ）の場合、本実施の形態の通信装置では、上記送信境界ノードからグループ間符号化関数決定指示メッセージを受信すると、伝送経路算出処理および符号化関数決定処理を実行する。
【０１０２】
具体的には、グループ間符号化関数決定指示メッセージに含まれる送信ノードＩＤ、受信ノードＩＤリストおよび独立パスと、トポロジー情報管理部４が保持しているトポロジー情報と、グループ管理部７が保持しているグループ管理情報と、に基づいて、送信ノードから受信ノードまでの伝送経路を算出する。次に、伝送経路算出結果に基づいて、符号化関数決定部５が、自身が使用する符号化関数を決定する。なお、上述した送信ノードとして動作する通信装置などと同様に、自身が属するグループの送信境界ノードまでの伝送経路情報に基づいて符号化関数を決定する。受信ノードが自身と同じグループに属している場合、送信境界ノードに代えて受信ノードまでの伝送経路情報に基づいて符号化関数を決定する。さらに、符号化関数を決定後、自身と同じグループ内の他の通信装置（非境界中継ノード，送信境界ノードまたは受信ノード）に対してグループ内符号化関数決定指示メッセージを送信し、符号化関数を決定するように指示する。その後、送信したすべてのグループ内符号化関数決定指示メッセージに対する応答メッセージを受信した場合、その旨を示すグループ間符号化関数決定応答メッセージを、上記グループ間符号化関数決定指示メッセージの送信元（送信境界ノード）へ返送する。なお、グループ間符号化関数決定応答メッセージは、実施の形態１で示した符号化関数決定応答メッセージ（図９−２参照）と同じ構成である。以降の動作は、上記非境界中継ノードと同様である。
【０１０３】
また、受信ノードとして動作する場合、本実施の形態の通信装置は、受信したグループ内符号化関数決定指示メッセージに含まれるグループ内送信ノードＩＤおよびグループ内受信ノードＩＤリスト内のノードＩＤを使用して伝送経路算出および符号化関数決定を行う点を除いて、実施の形態１または２で示した受信ノードと同様の動作を行う。
【０１０４】
図２０は、符号化関数の決定指示を行う場合の制御メッセージの送信シーケンス例を示す図である。図２０では、符号化関数を決定する際に参照する伝送経路の範囲（同一グループ内の送信ノードから送信境界ノードへの範囲，同一グループ内の受信境界ノードから送信境界ノードへの範囲，同一グループ内の受信境界ノードから受信ノードへの範囲）を符号化領域として定義している。
【０１０５】
このように、本実施の形態では、各通信装置が、自身の属するグループおよび他の通信装置が属するグループと、各グループの境界に位置する通信装置（境界ノード）と、を把握しておき、同一グループ内の範囲において符号化関数を決定することとした。これにより、トポロジーが変化した場合に符号化関数の再度計算処理が発生する範囲をグループ内に限定することができ、システム全体の処理負荷を低減し、効率的なデータ伝送を実現できる。
【０１０６】
なお、本実施の形態では、実施の形態２の通信装置に対してグループ管理部７を追加した場合について説明を行ったが、実施の形態１の通信装置に対してグループ管理部７を追加するようにしてもよい。
【産業上の利用可能性】
【０１０７】
以上のように、本発明にかかる通信装置は、ネットワークコーディングを利用したデータ伝送に有用であり、特に、アドホックネットワークにおいてトポロジー変化に追従して安定した通信を実現する場合に適している。
【図面の簡単な説明】
【０１０８】
【図１】本発明にかかる通信装置の実施の形態１の構成例を示す図である。
【図２】トポロジー管理部および符号化関数決定部の構成例を示す図である。
【図３】ネットワークコーディングを利用したデータ伝送の概要を示す図である。
【図４】ネットワークコーディングを利用したデータ伝送を説明するための図である。
【図５】実施の形態１の通信装置による符号化動作の一例を示す図である。
【図６−１】符号化データメッセージの構成例を示す図である。
【図６−２】符号化データ応答メッセージの構成例を示す図である。
【図６−３】符号化データメッセージおよび符号化データ応答メッセージのヘッダの構成を説明するための図である。
【図７】実施の形態１の通信装置による符号化動作の詳細を説明するための図である。
【図８】コーディング機能制御プロトコルのシーケンス例を示す図である。
【図９−１】符号化関数決定指示メッセージの構成例を示す図である。
【図９−２】符号化関数決定応答メッセージの構成例を示す図である。
【図１０−１】符号化関数削除指示メッセージの構成例を示す図である。
【図１０−２】符号化関数削除応答メッセージの構成例を示す図である。
【図１１】実施の形態１の通信システムにおけるデータ伝送動作例を示す図である。
【図１２】実施の形態１の通信システムにおいて、各通信装置が保持している符号化関数を削除する場合の動作例を示す図である。
【図１３】実施の形態２の通信装置の構成例を示す図である。
【図１４】実施の形態２のトポロジー管理部、符号化関数決定部および隣接ノード管理部の構成例を示す図である。
【図１５】実施の形態２のデータ伝送動作の一例を示す図である。
【図１６】実施の形態３の通信装置の構成例を示す図である。
【図１７】実施の形態３のトポロジー管理部、符号化関数決定部、隣接ノード管理部およびグループ管理部の構成例を示す図である。
【図１８】実施の形態３の通信装置により構成されるネットワークの構成例を示す図である。
【図１９】グループ内符号化関数決定指示メッセージの構成例を示す図である。
【図２０】符号化関数の決定指示を行う場合の制御メッセージの送信シーケンス例を示す図である。
【図２１】課題を説明するための図である。
【符号の説明】
【０１０９】
１  アプリケーション
２、２ｂ  ルート管理部
３、３ａ  ネットワークコーディング部
４  トポロジー管理部
５  符号化関数決定部
６  隣接ノード管理部
７  グループ管理部
３１  符号化部
３２  独立パス管理部
３３  符号化関数管理部
３４  独立パス補完部
４１  トポロジー管理実行部
４２、５２、６２、７２  通信部
５１  符号化関数制御部
６１  隣接ノード管理実行部
７１  グループ管理実行部
４１１  ルーティング管理部
４１２  トポロジー管理テーブル
４２１、５２１、６２１、７２１  メッセージ送信部
４２２、５２２、６２２、７２２  メッセージ受信部
６１１  接続状態監視部
６１２  隣接ノード管理テーブル
７１１  グループ制御部
７１２  グループ管理テーブル
【図１】
0005235508.tif 000002
【図２】
0005235508.tif 000003
【図３】
0005235508.tif 000004
【図４】
0005235508.tif 000005
【図５】
0005235508.tif 000006
【図６−１】
0005235508.tif 000007
【図６−２】
0005235508.tif 000008
【図６−３】
0005235508.tif 000009
【図７】
0005235508.tif 000010
【図８】
0005235508.tif 000011
【図９−１】
0005235508.tif 000012
【図９−２】
0005235508.tif 000013
【図１０−１】
0005235508.tif 000014
【図１０−２】
0005235508.tif 000015
【図１１】
0005235508.tif 000016
【図１２】
0005235508.tif 000017
【図１３】
0005235508.tif 000018
【図１４】
0005235508.tif 000019
【図１５】
0005235508.tif 000020
【図１６】
0005235508.tif 000021
【図１７】
0005235508.tif 000022
【図１８】
0005235508.tif 000023
【図１９】
0005235508.tif 000024
【図２０】
0005235508.tif 000025
【図２１】
0005235508.tif 000026