(57)【特許請求の範囲】
【請求項１】
通信装置であって、
前記通信装置外部とのメッセージの送受信を行う無線インターフェイス部と、
前記通信装置がパブリッシャとして動作するモードか、サブスクライバとして動作するモードかを記憶する動作モード記憶部と、
前記通信装置が第１のグループに属することを示す第１識別子を記憶する識別情報記憶部と、
前記無線インターフェイス部が送信するメッセージの生成、および前記無線インターフェイス部が受信するメッセージの解析を行うメッセージ処理部と、
不揮発性メモリとを備え、
前記動作モード記憶部に記憶されているモードに基づき、前記通信装置がパブリッシャである場合には、前記第１識別子を含む送信メッセージを前記無線インターフェイス部より前記通信装置外部に出力し、
前記動作モード記憶部に記憶されているモードに基づき、前記通信装置がサブスクライバである場合には、前記無線インターフェイス部が受信した受信メッセージに前記第１識別子が含まれるか否か判断し、前記第１識別子が含まれる場合には前記メッセージに含まれるデータを前記不揮発性メモリに格納し、前記第１識別子が含まれない場合には前記メッセージを前記不揮発性メモリに格納せず、
前記受信メッセージは、複数のデータチャンクを備え、
前記通信装置がサブスクライバである場合には、前記受信メッセージに含まれる複数のデータチャンクのうち受信に失敗したデータチャンクの識別子を含むリペアメッセージを前記無線インターフェイス部より前記通信装置外部に出力し、
前記通信装置がサブスクライバである場合、受信メッセージに含まれるデータチャンクを前記不揮発性メモリへ格納し、リペアメッセージを受信すると、当該リペアメッセージに含まれる識別子に対応するデータチャンクが前記不揮発性メモリに格納されている場合に当該データチャンクを含む送信データメッセージを生成して無線インターフェイスへ出力する通信装置。
【請求項２】
通信装置であって、
前記通信装置外部とのメッセージの送受信を行う無線インターフェイス部と、
前記通信装置がパブリッシャとして動作するモードか、サブスクライバとして動作するモードかを記憶する動作モード記憶部と、
前記通信装置が第１のグループに属することを示す第１識別子を記憶する識別情報記憶部と、
前記無線インターフェイス部が送信するメッセージの生成、および前記無線インターフェイス部が受信するメッセージの解析を行うメッセージ処理部と、
不揮発性メモリとを備え、
前記動作モード記憶部に記憶されているモードに基づき、前記通信装置がパブリッシャである場合には、前記第１識別子を含む送信メッセージを前記無線インターフェイス部より前記通信装置外部に出力し、
前記動作モード記憶部に記憶されているモードに基づき、前記通信装置がサブスクライバである場合には、前記無線インターフェイス部が受信した受信メッセージに前記第１識別子が含まれるか否か判断し、前記第１識別子が含まれる場合には前記メッセージに含まれるデータを前記不揮発性メモリに格納し、前記第１識別子が含まれない場合には前記メッセージを前記不揮発性メモリに格納せず、
前記受信メッセージは、複数のデータチャンクを備え、
前記通信装置がサブスクライバである場合には、前記受信メッセージに含まれる複数のデータチャンクのうち受信に失敗したデータチャンクの識別子を含むリペアメッセージを前記無線インターフェイス部より前記通信装置外部に出力し、
前記通信装置がサブスクライバである場合、前記メッセージ処理部は、他のサブスクライバから受信したリペアメッセージにより再送を要求された前記データチャンクを示す再送データ識別情報を保持し、自装置から送信するリペアメッセージを生成する場合には、自装置が再送を要求する前記データチャンクのうち前記再送データ識別情報に含まれるデータ識別子に対応する前記データチャンクを除いた前記データチャンクの再送を要求するリペアメッセージを生成する通信装置。
【請求項３】
通信装置であって、
前記通信装置外部とのメッセージの送受信を行う無線インターフェイス部と、
前記通信装置がパブリッシャとして動作するモードか、サブスクライバとして動作するモードかを記憶する動作モード記憶部と、
前記通信装置が第１のグループに属することを示す第１識別子を記憶する識別情報記憶部と、
前記無線インターフェイス部が送信するメッセージの生成、および前記無線インターフェイス部が受信するメッセージの解析を行うメッセージ処理部と、
不揮発性メモリとを備え、
前記動作モード記憶部に記憶されているモードに基づき、前記通信装置がパブリッシャである場合には、前記第１識別子を含む送信メッセージを前記無線インターフェイス部より前記通信装置外部に出力し、
前記動作モード記憶部に記憶されているモードに基づき、前記通信装置がサブスクライバである場合には、前記無線インターフェイス部が受信した受信メッセージに前記第１識別子が含まれるか否か判断し、前記第１識別子が含まれる場合には前記メッセージに含まれるデータを前記不揮発性メモリに格納し、前記第１識別子が含まれない場合には前記メッセージを前記不揮発性メモリに格納せず、
前記受信メッセージは、複数のデータチャンクを備え、
前記通信装置がサブスクライバである場合には、前記受信メッセージに含まれる複数のデータチャンクのうち受信に失敗したデータチャンクの識別子を含むリペアメッセージを前記無線インターフェイス部より前記通信装置外部に出力し、
前記通信装置がパブリッシャである場合、一連のデータから生成された前記データチャンクを所定の順序でメッセージに格納して送信する周回送信状態と、前記一連のデータから生成された全ての前記データチャンクの送信を終了すると、リペアメッセージを受信した場合に当該リペアメッセージで再送を要求された前記データチャンクを送信するリペア受付状態へ遷移し、
前記通信装置がサブスクライバである場合、一定時間ごとに、受信済みの前記データチャンクの数を格納したステータスメッセージを送信する通信装置。
【請求項４】
通信装置であって、
前記通信装置外部とのメッセージの送受信を行う無線インターフェイス部と、
前記通信装置がパブリッシャとして動作するモードか、サブスクライバとして動作するモードかを記憶する動作モード記憶部と、
前記通信装置が第１のグループに属することを示す第１識別子を記憶する識別情報記憶部と、
前記無線インターフェイス部が送信するメッセージの生成、および前記無線インターフェイス部が受信するメッセージの解析を行うメッセージ処理部と、
不揮発性メモリとを備え、
前記動作モード記憶部に記憶されているモードに基づき、前記通信装置がパブリッシャである場合には、前記第１識別子を含む送信メッセージを前記無線インターフェイス部より前記通信装置外部に出力し、
前記動作モード記憶部に記憶されているモードに基づき、前記通信装置がサブスクライバである場合には、前記無線インターフェイス部が受信した受信メッセージに前記第１識別子が含まれるか否か判断し、前記第１識別子が含まれる場合には前記メッセージに含まれるデータを前記不揮発性メモリに格納し、前記第１識別子が含まれない場合には前記メッセージを前記不揮発性メモリに格納せず、
前記受信メッセージは、複数のデータチャンクを備え、
前記通信装置がサブスクライバである場合には、前記受信メッセージに含まれる複数のデータチャンクのうち受信に失敗したデータチャンクの識別子を含むリペアメッセージを前記無線インターフェイス部より前記通信装置外部に出力し、
前記通信装置がパブリッシャである場合、一連のデータから生成された前記データチャンクを所定の順序でメッセージに格納して送信する周回送信状態と、前記一連のデータから生成された全ての前記データチャンクの送信を終了すると、リペアメッセージを受信した場合に当該リペアメッセージで再送を要求された前記データチャンクを送信するリペア受付状態へ遷移し、
前記通信装置がパブリッシャである場合、前記周回送信状態では、リペアメッセージを受信すると、一定の条件を満たすと判断した場合には、前記所定の順序での送信を継続して当該リペアメッセージで再送を要求された前記データチャンクの再送を実施しない通信装置。
【請求項５】
前記リペアメッセージを前記パブリッシャの識別子を宛先として送信することを特徴とする請求項１に記載の通信装置。
【請求項６】
前記通信装置がパブリッシャである場合、前記メッセージ処理部は、リペアメッセージを受信すると、当該リペアメッセージに含まれる識別子に対応するデータチャンクを含む送信メッセージを生成して前記無線インターフェイスから前記通信装置外部に出力することを特徴とする請求項１に記載の通信装置。
【請求項７】
前記メッセージ処理部は、過去の一定時間内に受信したメッセージに格納された前記データチャンクを示すデータ識別子を受信済データ情報として保持し、自装置からリペアメッセージへの応答として送信するメッセージを生成する場合には、当該リペアメッセージにより再送を要求された前記データチャンクのうち前記受信済データ情報に含まれるデータ識別子に対応する前記データチャンクを除いた前記データチャンクを格納したメッセージを生成することを特徴とする請求項１に記載の通信装置。
【請求項８】
使用する無線リソースの空きを確認するとランダムな時間待機した後に、リペアメッセージへの応答として送信するメッセージを送信することを特徴とする請求項７に記載の通信装置。
【請求項９】
前記ランダムな時間を生成するための確率分布の標準偏差を前記第１のグループに属するサブスクライバの数に比例させることを特徴とする請求項８に記載の通信装置。
【請求項１０】
使用する無線リソースの空きを確認するとランダムな時間待機した後に、リペアメッセージを送信することを特徴とする請求項２に記載の通信装置。
【請求項１１】
前記ランダムな時間を生成するための確率分布の標準偏差を前記第１のグループに属するサブスクライバの数に比例させることを特徴とする請求項１０に記載の通信装置。
【請求項１２】
前記通信装置がサブスクライバである場合、リペアメッセージに、送信元の前記通信装置の識別子を格納し、
前記通信装置がパブリッシャである場合、過去の一定時間の間に前記第１のグループに属するサブスクライバから受け取ったリペアメッセージに含まれる送信元のサブスクライバの識別子をリストとして保持し、このリストから重複した識別子を除いた後のリストに含まれる識別子の個数を、前記サブスクライバの数として用いることを特徴とする請求項９に記載の通信装置。
【請求項１３】
前記通信装置がパブリッシャである場合、前記一連のデータの送信を終了すると、リペア受付状態へ移行する前に、受信したステータスメッセージに格納された受信済みの前記データチャンクの数を抽出し、抽出した受信済みの前記データチャンクの数の最小値を求め、前記最小値が閾値以下であれば周回送信状態を継続することを特徴とする請求項３に記載の通信装置。
【請求項１４】
前記通信装置がパブリッシャである場合、リペア受付状態のときにステータスメッセージを受信すると、受信したステータスメッセージに格納された受信済みの前記データチャンクの数を抽出し、抽出した受信済みの前記データチャンクの数が閾値以下であれば周回送信状態に遷移することを特徴とする請求項３に記載の通信装置。
【請求項１５】
前記通信装置がパブリッシャである場合、前記周回送信状態では、リペアメッセージを受信すると、前記所定の順序での送信を一時的に停止し、当該リペアメッセージで再送を要求された前記データチャンクを送信することを特徴とする請求項３に記載の通信装置。
【請求項１６】
受信したリペアメッセージで再送を要求された前記データチャンクの全てを過去の一定時間の間に自装置が送信した場合に前記一定の条件を満たすと判断することを特徴とする請求項４に記載の通信装置。
【請求項１７】
受信したリペアメッセージで再送を要求された前記データチャンクの数が閾値を超えた場合に前記一定の条件を満たすと判断することを特徴とする請求項４に記載の通信装置。
【請求項１８】
前記通信装置がサブスクライバである場合、リペアメッセージを送信後に一定時間内に当該リペアメッセージで再送を要求した前記データチャンクを含むメッセージを受信しなかった場合、当該リペアメッセージへの応答無しと判断し、当該リペアメッセージの再送時にについて応答無しと判断した回数を当該リペアメッセージに格納して送信し、
前記通信装置がパブリッシャである場合、受信したリペアメッセージに格納された前記応答無しと判断した回数が閾値を超えた場合には、前記一定の条件を満たすと判断しても受信したリペアメッセージで再送を要求された前記データチャンクをメッセージに格納して送信することを特徴とする請求項４に記載の通信装置。
【請求項１９】
前記通信装置がパブリッシャである場合、受信したリペアメッセージに基づいて、リペアメッセージで再送を要求された前記データチャンクごとに当該データチャンクの再送を要求しているサブスクライバの数を計数し、計数したサブスクライバ数が閾値を超えた場合には、前記一定の条件を満たすと判断した場合でも、当該データチャンクをメッセージに格納して送信することを特徴とする請求項４に記載の通信装置。
【請求項２０】
前記通信装置がパブリッシャである場合、前記一連のデータを送信する前に、前記一連のデータに対応する前記データチャンクの識別子を格納したコンテンツ情報メッセージを送信することを特徴とする請求項３に記載の通信装置。
【請求項２１】
前記通信装置がサブスクライバである場合、前記コンテンツ情報メッセージの送信を要求するコンテンツ情報要求メッセージを送信することを特徴とする請求項２０に記載の通信装置。
【請求項２２】
前記通信装置がパブリッシャである場合、リペア受付状態であるときにコンテンツ情報要求メッセージを受信すると、周回送信状態へ遷移することを特徴とする請求項２１に記載の通信装置。
【請求項２３】
前記通信装置がパブリッシャである場合、起動時にはメッセージの送信を行わないスリープ状態にあり、スリープ状態においてコンテンツ情報要求メッセージを受信すると周回送信状態に遷移し、リペア受付状態で一定時間以上リペアメッセージを受信しない場合、スリープ状態へ遷移することを特徴とする請求項２１に記載の通信装置。
【請求項２４】
前記通信装置がパブリッシャである場合、前記データチャンクを用いて誤り検出のための冗長情報を生成し、前記冗長情報を、前記データチャンクを送信するメッセージに格納して送信することを特徴とする請求項１に記載の通信装置。
【請求項２５】
前記通信装置がパブリッシャである場合、自身がパブリッシャとなる前記第１のグループの前記第１識別子を定め、前記第１識別子を他の通信装置へ送信し、前記通信装置がサブスクライバである場合、自装置が参加する前記第１のグループへ参加する場合、受け取った前記第１識別子を前記識別情報記憶部に記憶することを特徴とする請求項１に記載の通信装置。
【請求項２６】
不揮発性メモリを備える通信装置における通信方法であって、
前記通信装置がパブリッシャとして動作するモードか、サブスクライバとして動作するモードかを記憶する第１のステップと、
前記通信装置が第１のグループに属することを示す第１識別子を記憶する第２のステップと、
前記第１のステップで記憶されたモードに基づき、前記通信装置がパブリッシャである場合には、前記第１識別子を含む送信メッセージを無線信号として前記通信装置外部に出力する第３のステップと、
前記第１のステップで記憶されたモードに基づき、前記通信装置がサブスクライバである場合には、無線信号として受信した受信メッセージに前記第１識別子が含まれるか否か判断し、前記第１識別子が含まれる場合には前記メッセージに含まれるデータを前記不揮発性メモリに格納し、前記第１識別子が含まれない場合には前記メッセージを前記不揮発性メモリに格納しない第４のステップと、
前記受信メッセージは、複数のデータチャンクを備え、前記通信装置がサブスクライバである場合には、前記受信メッセージに含まれる複数のデータチャンクのうち受信に失敗したデータチャンクの識別子を含むリペアメッセージを前記通信装置外部に出力する第５のステップと、
前記通信装置がサブスクライバである場合、受信メッセージに含まれるデータチャンクを前記不揮発性メモリへ格納し、リペアメッセージを受信すると、当該リペアメッセージに含まれる識別子に対応するデータチャンクが前記不揮発性メモリに格納されている場合に当該データチャンクを含む送信データメッセージを生成する第６のステップと、
を含む通信方法。
【請求項２７】
不揮発性メモリを備える通信装置における通信方法であって、
前記通信装置がパブリッシャとして動作するモードか、サブスクライバとして動作するモードかを記憶する第１のステップと、
前記通信装置が第１のグループに属することを示す第１識別子を記憶する第２のステップと、
前記第１のステップで記憶されたモードに基づき、前記通信装置がパブリッシャである場合には、前記第１識別子を含む送信メッセージを無線信号として前記通信装置外部に出力する第３のステップと、
前記第１のステップで記憶されたモードに基づき、前記通信装置がサブスクライバである場合には、無線信号として受信した受信メッセージに前記第１識別子が含まれるか否か判断し、前記第１識別子が含まれる場合には前記メッセージに含まれるデータを前記不揮発性メモリに格納し、前記第１識別子が含まれない場合には前記メッセージを前記不揮発性メモリに格納しない第４のステップと、
前記受信メッセージは、複数のデータチャンクを備え、前記通信装置がサブスクライバである場合には、前記受信メッセージに含まれる複数のデータチャンクのうち受信に失敗したデータチャンクの識別子を含むリペアメッセージを前記通信装置外部に出力する第５のステップと、
前記通信装置がサブスクライバである場合、受信メッセージに含まれるデータチャンクを前記不揮発性メモリへ格納し、リペアメッセージを受信すると、当該リペアメッセージに含まれる識別子に対応するデータチャンクが前記不揮発性メモリに格納されている場合に当該データチャンクを含む送信データメッセージを生成して前記通信装置外部に出力する第６のステップと、
前記通信装置がサブスクライバである場合、他のサブスクライバから受信したリペアメッセージにより再送を要求された前記データチャンクを示す再送データ識別情報を保持し、自装置から送信するリペアメッセージを生成する場合に、自装置が再送を要求する前記データチャンクのうち前記再送データ識別情報に含まれるデータ識別子に対応する前記データチャンクを除いた前記データチャンクの再送を要求するリペアメッセージを生成する第７のステップと、
を含む通信方法。
【請求項２８】
不揮発性メモリを備える通信装置における通信方法であって、
前記通信装置がパブリッシャとして動作するモードか、サブスクライバとして動作するモードかを記憶する第１のステップと、
前記通信装置が第１のグループに属することを示す第１識別子を記憶する第２のステップと、
前記第１のステップで記憶されたモードに基づき、前記通信装置がパブリッシャである場合には、前記第１識別子を含む送信メッセージを無線信号として前記通信装置外部に出力する第３のステップと、
前記第１のステップで記憶されたモードに基づき、前記通信装置がサブスクライバである場合には、無線信号として受信した受信メッセージに前記第１識別子が含まれるか否か判断し、前記第１識別子が含まれる場合には前記メッセージに含まれるデータを前記不揮発性メモリに格納し、前記第１識別子が含まれない場合には前記メッセージを前記不揮発性メモリに格納しない第４のステップと、
前記受信メッセージは、複数のデータチャンクを備え、前記通信装置がサブスクライバである場合には、前記受信メッセージに含まれる複数のデータチャンクのうち受信に失敗したデータチャンクの識別子を含むリペアメッセージを前記通信装置外部に出力する第５のステップと、
前記通信装置がサブスクライバである場合、受信メッセージに含まれるデータチャンクを前記不揮発性メモリへ格納し、リペアメッセージを受信すると、当該リペアメッセージに含まれる識別子に対応するデータチャンクが前記不揮発性メモリに格納されている場合に当該データチャンクを含む送信データメッセージを生成して前記通信装置外部に出力する第６のステップと、
前記通信装置がパブリッシャである場合、一連のデータから生成された前記データチャンクを所定の順序でメッセージに格納して送信する周回送信状態と、前記一連のデータから生成された全ての前記データチャンクの送信を終了すると、リペアメッセージを受信した場合に当該リペアメッセージで再送を要求された前記データチャンクを送信するリペア受付状態へ遷移する第７のステップと、
前記通信装置がサブスクライバである場合、一定時間ごとに、受信済みの前記データチャンクの数を格納したステータスメッセージを送信する第８のステップと、
を含む通信方法。
【請求項２９】
不揮発性メモリを備える通信装置における通信方法であって、
前記通信装置がパブリッシャとして動作するモードか、サブスクライバとして動作するモードかを記憶する第１のステップと、
前記通信装置が第１のグループに属することを示す第１識別子を記憶する第２のステップと、
前記第１のステップで記憶されたモードに基づき、前記通信装置がパブリッシャである場合には、前記第１識別子を含む送信メッセージを無線信号として前記通信装置外部に出力する第３のステップと、
前記第１のステップで記憶されたモードに基づき、前記通信装置がサブスクライバである場合には、無線信号として受信した受信メッセージに前記第１識別子が含まれるか否か判断し、前記第１識別子が含まれる場合には前記メッセージに含まれるデータを前記不揮発性メモリに格納し、前記第１識別子が含まれない場合には前記メッセージを前記不揮発性メモリに格納しない第４のステップと、
前記受信メッセージは、複数のデータチャンクを備え、前記通信装置がサブスクライバである場合には、前記受信メッセージに含まれる複数のデータチャンクのうち受信に失敗したデータチャンクの識別子を含むリペアメッセージを前記通信装置外部に出力する第５のステップと、
前記通信装置がサブスクライバである場合、受信メッセージに含まれるデータチャンクを前記不揮発性メモリへ格納し、リペアメッセージを受信すると、当該リペアメッセージに含まれる識別子に対応するデータチャンクが前記不揮発性メモリに格納されている場合に当該データチャンクを含む送信データメッセージを生成して前記通信装置外部に出力する第６のステップと、
前記通信装置がパブリッシャである場合、一連のデータから生成された前記データチャンクを所定の順序でメッセージに格納して送信する周回送信状態と、前記一連のデータから生成された全ての前記データチャンクの送信を終了すると、リペアメッセージを受信した場合に当該リペアメッセージで再送を要求された前記データチャンクを送信するリペア受付状態へ遷移する第７のステップと、
前記通信装置がパブリッシャである場合、前記周回送信状態では、リペアメッセージを受信すると、一定の条件を満たすと判断した場合には、前記所定の順序での送信を継続して当該リペアメッセージで再送を要求された前記データチャンクの再送を実施しない第8のステップと、
を含む通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、通信装置および通信方法に関する。
【背景技術】
【０００２】
無線通信における通信方法として、アクセスポイントなどを介さず、端末間で直接データを送受するPeer-to-Peer（Ｐ２Ｐ）型の通信方法がある。Ｐ２Ｐ通信では通信インフラが不要であるため利用場所を選ばず、通信経路を最短化できるためレイテンシの低下にもつながる。また、端末同士が近接している場合には、ごく小出力の無線信号を用いて小消費電力で通信が可能である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平２−１０１８４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
無線通信において、送信端末が複数の受信端末に対して同一のデータを送信する場合もある。送信端末が複数の受信端末にそれぞれデータを送信すると、データ送信に時間がかかり、電力も消費する。一方で、マルチキャストにより一斉送信すると、マルチキャストでは送達確認が実施されないため、受信端末ではデータ欠損が生じる可能性がある。
【課題を解決するための手段】
【０００５】
本願発明の一態様によれば、通信装置は、無線インターフェイス部と、パブリッシャとして動作するモードか、サブスクライバとして動作するモードかを記憶する動作モード記憶部と、第１のグループに属することを示す第１識別子を記憶する識別情報記憶部と、送信するメッセージの生成、受信するメッセージの解析を行うメッセージ処理部と、不揮発性メモリとを備え、パブリッシャである場合には、第１識別子を含む送信メッセージを無線インターフェイス部より通信装置外部に出力し、サブスクライバである場合には、無線インターフェイス部が受信した受信メッセージに第１識別子が含まれるか否か判断し、第１識別子が含まれる場合にはメッセージに含まれるデータを不揮発性メモリに格納し、第１識別子が含まれない場合にはメッセージを不揮発性メモリに格納しない。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施の形態にかかる通信装置の構成例を示すブロック図である。
【図２】図２は、第１の実施の形態のデータメッセージの構成例を示す図である。
【図３】図３は、第１の実施の形態のリペアメッセージの構成例を示す図である。
【図４】図４は、本実施の形態のメッセージ送信の一例を示す図である。
【図５】図５は、マルチキャストグループへの参加処理手順の一例を示す図である。
【図６】図６は、データメッセージを受信したサブスクライバの動作の一例を示すフローチャートである。
【図７】図７は、第１の実施の形態の周回送信状態におけるデータメッセージ送信シーケンスの一例を示す図である。
【図８】図８は、第１の実施の形態のリペア受付状態におけるデータメッセージ送信シーケンスの一例を示す図である。
【図９】図９は、第２の実施の形態のチャンクのデータ構造の一例を示す図である。
【図１０】図１０は、第３の実施の形態のパブリッシャの状態遷移の一例を示す図である。
【図１１】図１１は、第４の実施の形態のリペアメッセージの送信処理手順の一例を示す図である。
【図１２】図１２は、リペアメッセージを無視するか否かの判断処理の一例を示す図である。
【図１３】図１３は、本実施の形態のメッセージ送信の一例を示す図である。
【図１４】図１４は、第７の実施の形態のデータメッセージの送信処理手順の一例を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかる通信装置および通信方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施の形態）
図１は、第１の実施の形態にかかる通信装置１の構成例を示すブロック図である。通信装置１は、ネットワーク制御部２、マルチキャストグループ記憶部３（識別情報記憶部）、無線インターフェイス４および不揮発性メモリ５を備える。
【０００９】
本実施の形態の通信装置１は、同様の構成の他の通信装置１とＰ２Ｐ型の通信によりデータの送受をすることが可能である。通信装置１は、他の通信装置１とのユニキャスト通信が実施可能であるとともに、同一のデータを複数の他の通信装置１へマルチキャストで送信することも可能である。
【００１０】
無線インターフェイス４は、無線信号の受信処理を実施し、受信した信号が自装置宛のメッセージであった場合、当該メッセージをネットワーク制御部２へ出力する。また、無線インターフェイス４は、ネットワーク制御部２により生成されたメッセージを無線信号として送信する。さらに、無線インターフェイス４は、複数の通信装置１によるＰ２Ｐ型の通信を実現するための転送処理を実施する。Ｐ２Ｐ通信を実現するためのプロトコル等には制約はないが、例えばＩＰ（Internet  Protocol）を用いることができる。
【００１１】
マルチキャストグループ記憶部３は、自装置が属しているマルチキャストグループの識別子のリストを保持する。マルチキャストグループ記憶部３は、自装置が属しているマルチキャストグループの識別子を無線インターフェイス４へ通知する。無線インターフェイス４は、自装置が属しているマルチキャストグループの識別子に対応するマルチキャストアドレスが宛先に格納されたメッセージについても自装置宛である判断する。不揮発性メモリ５は、送信するデータや受信したデータ等を保持する。ネットワーク制御部２は、動作モード設定部２１、ファイル管理部２２およびメッセージ処理部２３を備える。
【００１２】
従来スマートフォンやタブレットなどのモバイル機器間でのデータの送受は、写真や動画などのメディアファイルの交換などにおいて日常的に発生する。モバイル機器間でのデータの送受には、ＷｉＦｉ（登録商標）のインフラストラクチャモードやセルラーネットワークといったアクセスポイント（または基地局）が必要な通信手段を利用する方法がある。この場合、空間的に近接した機器同士で通信したい場合であっても、送信元デバイスから一度アクセスポイントを経由した上で送信先デバイスに到達する。これは余剰な通信経路の存在により通信のレイテンシを増加につながり、またそもそもアクセスポイントが存在しなければ端末間でデータ通信が不可能である。また、端末からアクセスポイントまでの距離が長い場合、高出力の無線信号を送信する必要があるため、電力消費も大きくなる。
【００１３】
モバイル機器間でのデータのやり取りでは、複数の端末に対して同一のデータを送信する必要がある場合もある。この場合、１対多でのデータの移動が発生する。通信効率を考えないならば、１対１の通信を受信端末の数だけ繰り返すことが考えられる。しかし、同一のデータを繰り返し送信することは冗長であり、転送に要する時間が増大し、周波数帯域を長時間にわたって不要に占有することになる。
【００１４】
これを避けるには、１対１のユニキャスト通信ではなく、１対多のマルチキャスト通信を利用すればよい。ただし、マルチキャスト通信の場合、ある受信端末が特定のデータ断片を取りこぼした場合に、その端末のためだけに送信端末のデータ転送を中断して、再送処理を行うことはできない。デジタルテレビ放送やＩＰブロードキャスト等はデータ再送の仕組みを備えていないが、これは送信するメディアデータが、特定のデータ領域が欠落しても処理が破綻しないようなデータ構造になっているためである。任意フォーマットのデータの取り扱いを考える場合、受信ファイルは１ビットでも欠落してはならない。このため、本実施の形態では、マルチキャスト通信によりデータを送信しつつ、受信側でデータが欠損することを防ぐために再送処理を実施する。
【００１５】
本実施の形態では、同一のデータを複数の他の通信装置１へ送信する場合、マルチキャストグループを用いてデータの送受信を管理する。マルチキャストグループは、同一の論理ネットワークに属し、互いにデータを送信または受信する関係にある通信装置１の集合である。本実施例では、論理ネットワークは同一のマルチキャストの識別子を有する複数の通信装置により構成される。即ち、同一のマルチキャストの識別子を有する通信装置間ではマルチキャストグループ内で配信されるデータの送受信が行われ、同一のマルチキャストの識別子を有さない通信装置間では、物理的に近距離にあったとしても、マルチキャストグループ内で配信されるデータの送受信は行われない。本実施の形態では、同一のデータを複数の他の通信装置１へ送信する際に、データの送信元となる通信装置１すなわち送信元装置をパブリッシャ（送信元）と呼び、パブリッシャ以外の通信装置１をサブスクライバ（受信側）と呼ぶ。サブスクライバは、パブリッシャから直接または他の通信装置１を経由してデータを受信する。１つのマルチキャストグループにつき、パブリッシャとなる通信装置１が１つ設定される。
【００１６】
ネットワーク制御部２の動作モード設定部２１（動作モード記憶部）は、自装置（通信装置１）をパブリッシャとサブスクライバのどちらのモードで動作させるかを設定する。また、動作モード設定部２１は、自装置が属するマルチキャストグループも設定する。マルチキャストグループの設定については後述する。動作モードは、マルチキャストグループごとに個別に設定することができる。例えば、１つの通信装置１が、あるマルチキャストグループではパブリッシャであり他のマルチキャストグループではサブスクライバとなるような設定も可能である。動作モード設定部２１は、マルチキャストグループごとに動作モードに応じた動作を実施するようファイル管理部２２およびメッセージ処理部２３を制御する。
【００１７】
パブリッシャとして動作している場合、ファイル管理部２２は、サブスクライバへの送信対象とするファイル群のToC（Table  of  Contents）（コンテンツ情報）を生成する。本実施の形態では、パブリッシャからサブスクライバへ送信するひとまとまりのデータをファイルとよぶ。ファイルは、どのような種類のデータファイルであってもよい。例えば、テキストファイルであってもよいし、画像や映像データファイルであってもよい。パブリッシャは、１つ以上のファイルを一連のメッセージにより送信する。ファイル管理部２２は、この一連のメッセージの送信前に、当該一連のメッセージに対応するファイルに関する情報を格納したToCを生成する。また、ファイル管理部２２は、ファイルをチャンク（データチャンク）と呼ぶ再送を行う際の単位データに分解し、各チャンクに一意な識別子を割り当てる。ToCには、ファイルの識別子とそのファイルを構成するチャンクのリストとが、ファイルごとに含まれる。ファイルを構成するチャンクのリストは、例えばチャンクの識別子の一覧である。これに限らず、ファイルを構成するチャンクのリスト（以下、チャンクリストという）は、１つのファイルに連続したチャンクの識別子を割り当てる場合には、送信されるチャンクの識別子の範囲がわかる情報等であってもよい。メッセージ処理部２３は、ToCを格納したメッセージ（ToCメッセージ）を生成する。無線インターフェイス４はToCメッセージを無線信号として送信する。
【００１８】
サブスクライバとして動作している場合、ファイル管理部２２は、ToCにより通知されたチャンクリストを保持する。
【００１９】
メッセージ処理部２３は、他の通信装置１に送信するデータを一定のフォーマットに整形したメッセージを生成し、無線インターフェイス４へ渡す。また、他の通信装置１から受信したメッセージを無線インターフェイス４が受け取り、メッセージの内容に応じた処理を実施する。
【００２０】
パブリッシャとして動作している場合、メッセージ処理部２３は、不揮発性メモリ５に保持しているデータ（ファイルを構成するデータ）を格納したデータメッセージを生成する。また、パブリッシャとして動作している場合、メッセージ処理部２３は、サブスクライバから受信した後述のリペアメッセージに基づいて後述の再送処理を実施する。なお、ここでは、パブリッシャが不揮発性メモリ５に保持しているデータをサブスクライバに送信する例を説明するが、有線または無線回線により受信したデータや他の外部記憶媒体に格納されたデータを送信する場合にも本実施の形態は適用可能である。
【００２１】
サブスクライバとして動作している場合、メッセージ処理部２３は、他の通信装置１から受信したデータメッセージからデータを抽出し、不揮発性メモリ５へ格納する。ToCを受信した場合には、メッセージ処理部２３は、ToCに格納されたチャンクリストを保持する。また、サブスクライバとして動作している場合、メッセージ処理部２３は、受信に失敗したデータメッセージがある場合、リペアメッセージを生成して無線インターフェイス４へ渡す。
【００２２】
データメッセージは、パブリッシャからサブスクライバに送るファイルデータの断片であるチャンクを含むメッセージである。１つのデータメッセージには、１つ以上のチャンクが含まれる。１つのチャンクは、チャンクの実体であるバイトストリームと、そのチャンクの識別子とで構成される。これらに加えて他の情報がチャンクに含まれていてもよい。
【００２３】
チャンクのサイズが１つのデータメッセージとして送るには大きすぎる場合、チャンクをさらに小さなセクタと呼ぶ単位データに分割してもよい。この場合、データメッセージはセクタ単位で送信されるが、再送の要求はチャンク単位で実施されることになる。この場合、データメッセージは１つ以上のセクタを含む。セクタは、その実体であるバイトストリームとそのセクタの識別子とで構成される。セクタの識別子は、そのセクタが包含されるチャンクの識別子と、そのセクタのチャンク上における先頭からのインデックスとのペアからなる。なお、パブリッシャはToCもチャンクあるいはセクタに分解し、ファイルデータと同様にデータメッセージとして送信する。
【００２４】
図２は、本実施の形態のデータメッセージの構成例を示す図である。図２は、チャンク単位でデータメッセージを送信する例を示している。図２に示すように、データメッセージには、送信元を示す情報として送信元のパブリッシャ識別子が格納され、宛先を示す情報として送信先のマルチキャストグループ識別子が格納される。続いて、このデータメッセージで送信するチャンクの数を示すチャンク数が格納され、その後に各チャンク（チャンク１、チャンク２等）が格納される。セクタ単位でデータメッセージを送信する場合には、図２のチャンク数をセクタ数に代え、各チャンクの代わりに各セクタを格納する。
【００２５】
リペアメッセージは、サブスクライバからパブリッシャに送られるメッセージである。リペアメッセージは、あるサブスクライバがパブリッシャに対して、送信（再送）を要求するチャンクを指示するために用いられる。リペアメッセージには、サブスクライバが再送を要求するチャンクのチャンク識別子が含まれる。パブリッシャはリペアメッセージを受け取ると、再送処理として、このリペアメッセージ内に含まれるチャンク識別子に対応するチャンクを特定のタイミングで送信する。
【００２６】
図３は、本実施の形態のリペアメッセージの構成例を示す図である。リペアメッセージは、送信を希望するチャンクの識別子のリストで構成される。図３に示すように、リペアメッセージには、送信元を示す情報として送信元のサブスクライバ識別子が格納され、宛先を示す情報として送信先のパブリッシャ識別子が格納される。続いて、このリペアメッセージで送信を要求するチャンクの識別子の数を示すチャンク識別子数が格納され、その後に、送信を要求する各チャンクの識別子が格納される。リペアメッセージ内で指定するチャンク識別子のデータ量を減らすために、同一ファイルに含まれる連続したチャンクの識別子を先頭チャンクの識別子と連続するチャンク数のペアで表すなどの方法で圧縮しても良い。
【００２７】
次に、本実施の形態のマルチキャストグループについて説明する。本実施の形態では、パブリッシャはデータメッセージをマルチキャストにより送信し、到達範囲内にいるすべての装置が受信する。パブリッシャとサブスクライバは常に互いの存在について感知しているわけではなく、両者の間で明示的にコネクションを確立する必要は無い。通常のメッセージをマルチキャストにより送信する際には、送信元の装置は受信側の装置に正しくメッセージが届くことを保証せず、また届いたか否かについての確認もしない。一方で、本実施の形態では、データメッセージの受信に失敗した場合には、リペアメッセージを用いて再送処理を行う。再送処理を行うことによりマルチキャストによりデータを送信した場合にも、受信側でのデータ欠損を防ぐことができる。
【００２８】
図４は、本実施の形態のメッセージ送信の一例を示す図である。左側の通常送信は、パブリッシャ１０１がデータメッセージをマルチキャストにより送信する様子を示す。パブリッシャ１０１からの電波の到達範囲１０３内に位置するサブスクライバ１０２が、データメッセージを受信することができる。右側の再送要求は、サブスクライバ１０２がリペアメッセージ１０４により再送を要求する様子を示している。なお、パブリッシャ１０１／サブスクライバ１０２から出力される電波は指向性をもっていても、持っていなくてもよい。指向性をもっていない場合には、図４において、パブリッシャ１０１／サブスクライバ１０２から出力される電波は同心円状に伝搬する。
【００２９】
マルチキャストによる送信の１つの例としては、ＩＰマルチキャストを用いる方法がある。同一のマルチキャストグループに参加しているパブリッシャとすべてのサブスクライバに共通のマルチキャストアドレスを割り当てる。この場合、図２のマルチキャストグループの識別子としてマルチキャストアドレスを用いることができる。このマルチキャストアドレス宛てにメッセージを送ると、同一マルチキャストグループ内の全装置にメッセージが届く。一方、異なるマルチキャストグループに参加している装置が近くに存在しても、マルチキャストアドレスは異なるため、互いのメッセージが誤って届くことは無い。
【００３０】
図５は、マルチキャストグループへの参加処理手順の一例を示す図である。新たなマルチキャストグループを作成するにあたって、まずパブリッシャはマルチキャストアドレスを選択する（ステップＳ１）。マルチキャストアドレスの選択は、マルチキャストグループ記憶部３が実施する。このマルチキャストアドレスを自装置が送信するファイルを受け取るためのマルチキャストグループの識別子として利用する。次に、パブリッシャはそのマルチキャストアドレスを、何らかの方法で周囲の装置に通知する（ステップＳ２)。例えば、事前にマルチキャストグループに参加可能なすべての通信装置１を共通のネットワークアドレスを持つネットワーク空間に接続しておき、そのネットワークアドレスに対してブロードキャストで通知する方法などが考えられる。または、マルチキャストアドレスをパブリッシャの管理者がサブスクライバのユーザへ口頭で伝えるなどネットワークに依存しない物理的な手段で伝えても良い。または、パブリッシャはマルチキャストアドレスを決定するのではなく、運用者がマルチキャストアドレスを決定してパブリッシャに設定してもよく、運用者がユーザにマルチキャストアドレスを紙や電子メール等になどにより通知してもよい。
【００３１】
サブスクライバは、ユーザからの入力等またはパブリッシャからの受信によりマルチキャストアドレスを取得する（ステップＳ３）と、そのマルチキャストグループのパブリッシャからファイルを受信する場合には、当該マルチキャストアドレスを設定することでlisten（マルチキャストグループ内で送信されるデータの受信）を開始する（ステップＳ４）。具体的には、サブスクライバのマルチキャストグループ記憶部３が、当該マルチキャストアドレスを保持する。また、パブリッシャのマルチキャストグループ記憶部３も、決定したまたは設定されたマルチキャストアドレスを保持する。
【００３２】
通信装置１が、複数の無線インターフェイス４を備えている場合、１つの通信装置１が複数のマルチキャストグループに同時に参加していてもよい。この場合、各無線インターフェイス４に異なるマルチキャストアドレスを設定することになる。
【００３３】
パブリッシャからデータメッセージを受信した際のサブスクライバの動作を説明する。図６は、データメッセージを受信したサブスクライバの動作の一例を示すフローチャートである。サブスクライバは、データメッセージを受信する（ステップＳ５）と、データメッセージの宛先が自装置の属するマルチキャストグループの識別子であるか否かを判断する（ステップＳ６）。データメッセージの宛先が自装置の属するマルチキャストグループの識別子である場合（ステップＳ６  Ｙｅｓ）、データメッセージ（具体的にはデータメッセージに格納されたチャンク）を不揮発性メモリ５へ格納して（ステップＳ７）、処理を終了する。なお、ステップＳ７では、不揮発性メモリ５へ格納せずに、ＲＡＭ（図示せず）上でデータメッセージに含まれるチャンクを抽出し、抽出したチャンクに所定の処理を実施することもある。データメッセージの宛先が自装置の属するマルチキャストグループの識別子でない場合（ステップＳ６  Ｎｏ）、データメッセージを不揮発性メモリ５へ格納せずに、処理を終了する。
【００３４】
次に、パブリッシャのデータメッセージ送信シーケンスについて説明する。図７は、本実施の形態の周回送信状態におけるデータメッセージ送信シーケンスの一例を示す図である。ここでは、簡単化のために、新しいサブスクライバが途中でマルチキャストグループに参加することは無いと仮定する。まずパブリッシャは、ToCと一連のデータメッセージを順次送信する（ステップＳ１１）。一連のデータメッセージとは、上述したように、ToCでファイルの情報が通知されるデータメッセージであり、１つ以上のファイルのデータ（チャンク）を格納した複数のデータメッセージである。具体的には、ファイル管理部２２が、送信するチャンクの送信順序を決定し、先頭から最後のチャンクまで送信順序をメッセージ処理部２３へ指示し、メッセージ処理部２３が、送信順序に基づいて１つ以上のチャンクを格納したデータメッセージを順次生成する。無線インターフェイス４は、生成されたデータメッセージを送信する。このように、パブリッシャが、１つのToCに対応するチャンクを、先頭から最後のチャンクまで順番にデータメッセージで送信する状態を周回送信状態と呼ぶ。
【００３５】
一方、サブスクライバは、パブリッシャから送信されたデータメッセージを受信し、受信に失敗したチャンクがあった場合、リペアメッセージを送信する（ステップＳ１２）。具体的には、サブクライバのファイル管理部２２は、ToCにより通知されたチャンクリストと正常に受信したチャンクのチャンク識別子とを比較し、正常に受信していないチャンクがあるか否かを判断する。正常に受信していないチャンクがある場合、当該チャンクの識別子をメッセージ処理部２３へ通知し、メッセージ処理部２３は、通知されたチャンクの識別子を格納したリペアメッセージを生成する。無線インターフェイス４は、生成されたリペアメッセージを送信する。
【００３６】
パブリッシャは、周回送信状態のときにリペアメッセージを受信するとチャンクを順番に送る動作を一時停止し、そのリペアメッセージに応答する（ステップＳ１３）。具体的には、パブリッシャは、リペアメッセージに含まれているチャンクの識別子に対応するチャンクをデータメッセージにより送信する。このリペアメッセージへの応答の後、一時停止していた一連のデータメッセージの送信を再開する（ステップＳ１４）。このように、リペアメッセージの送信（ステップＳ１２）に応じて、一連のデータメッセージの送信の一時停止およびリペアメッセージへの応答（ステップＳ１３）と、送信の再開（ステップＳ１４）を繰り返す。
【００３７】
一連のデータメッセージの最後のチャンクを送った後に、パブリッシャは周回送信状態からリペア受付状態へ遷移する。図８は、本実施の形態のリペア受付状態におけるデータメッセージ送信シーケンスの一例を示す図である。リペア受付状態では、パブリッシャは、リペアメッセージを受信した場合に応答する動作を行う。サブスクライバは、受信に失敗したチャンクがあった場合、リペアメッセージを送信する（ステップＳ２１）。パブリッシャは、リペアメッセージを受信するとそのリペアメッセージに応答する（ステップＳ２２）。具体的には、パブリッシャは、リペアメッセージに含まれているチャンクの識別子に対応するチャンクをデータメッセージにより送信する。このとき送信するデータメッセージは、マルチキャストにより送信してもよいしユニキャストにより送信してもよい。パブリッシャは、リペアメッセージが一定時間届かなくなった時点で送信が完了したと判断し、リペア受付状態を終了する。
【００３８】
なお、以上ではチャンク単位でデータメッセージを送信する例を説明したが、セクタ単位でデータメッセージを送信する場合も、リペアメッセージではチャンクの識別子を格納する。
【００３９】
次に、サブスクライバが、リペアメッセージを送信するタイミングと、各リペアメッセージに含めるチャンク識別子の判断方法について、一例を示す。サブスクライバは、ToCにより通知された情報に基づいて、パブリッシャが送信する全チャンクを送信された順序となるようソートする。次に、サブスクライバは、パブリッシャからまだ受信していないチャンクを含んだデータメッセージが、ToCを受け取った時間を起点として一定時間届かない場合、当該チャンクの受信に失敗したと判断しリペアメッセージを生成して送信することにより、当該チャンクの再送を要求する。このとき要求するチャンクは、ソートされた全チャンクリストの中で、未受信のチャンクを先頭から順番に一定個数選んだものとする。
【００４０】
以上のように、本実施の形態では、パブリッシャがマルチキャストによりチャンクまたはセクタ単位でデータを送信し、サブスクライバは正常に受信できなかったと判断したチャンクまたはセクタを示す識別子を格納したリペアメッセージをパブリッシャへ送信する。そして、パブリッシャはリペアメッセージで指定されたチャンクまたはセクタを再送するようにした。このため、同一のデータを複数のサブスクライバに送信する場合、再送を要求されたもの以外は１回の送信でデータを送信することができるため、通信の高速化・省電力化を実現できる。同時に、正常に受信できなかったデータの再送を行うことができ、データの欠損を防ぐことができる。
【００４１】
（第２の実施の形態）
次に、第２の実施の形態にかかる通信装置１について説明する。本実施の形態の通信装置１の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる部分を説明する。
【００４２】
図９は、本実施の形態のチャンクのデータ構造の一例を示す図である。第１の実施の形態では、チャンクは、チャンクの実体であるバイトストリームとチャンクの識別子とで構成される例を示したが、本実施の形態では、チャンクはこれらに加え冗長部を有する。冗長部は、チャンクの内容を元に算出される冗長情報（冗長ビット）である。パブリッシャのファイル管理部２２またはメッセージ処理部２３は、チャンクの内容（チャンクの識別子とバイトストリーム）を用いて所定の処理を実施して冗長部を生成する。この冗長部は、例えば、チェックサムのような簡単な方式で求めた値であってもよい。または、改竄防止のために、同一の符号値になる異なる内容を検出するのが困難なハッシュ関数を用いて冗長部を生成してもよい。サブスクライバのファイル管理部２２またはメッセージ処理部２３は、冗長部を用いてチャンクの受信成否を判断する。
【００４３】
なお、図９の例では、チャンクの識別子、バイトストリーム、冗長部の順に格納される例を示したが、格納の順序はこれに限定されない。また、図９の例とは別の例として、チャンク本体であるバイトストリームを用いて冗長情報を生成し、この冗長情報そのものをチャンクの識別子として用いてもよい。以上述べた以外の本実施の形態の動作は、第１の実施の形態と同様である。
【００４４】
以上のように、本実施の形態では、パブリッシャは、チャンクに誤り検出に用いる冗長部を含めて送信するようにした。このため、サブスクライバは冗長部を用いて各チャンクを正常に受信できたか否かを判断することができる。
【００４５】
（第３の実施の形態）
次に、第３の実施の形態にかかる通信装置１について説明する。本実施の形態の通信装置１の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる部分を説明する。
【００４６】
本実施の形態では、新しいサブスクライバが動的にマルチキャストグループに参加することが可能であると想定する。パブリッシャは、リペアメッセージを受信すれば、マルチキャストグループに参加しているサブスクライバが存在することを把握できるが、リペアメッセージを受信していないとマルチキャストグループに参加しているサブスクライバが存在しているか否かが判断できない。パブリッシャは、新しくマルチキャストグループに参加したサブスクライバが存在することを把握できれば、当該サブスクライバのために一連のデータメッセージを最初から再度送信するような動作を行うことができ、周回送信状態でマルチキャストグループに参加したサブスクライバも一連のデータメッセージを全て受信することができる。しかしながら、新しくマルチキャストグループに参加したサブスクライバは、ToCを受信するまでチャンクを受信しないため、リペアメッセージも送信しない。
【００４７】
そこで、本実施の形態では、新しいサブスクライバがマルチキャストグループに参加した場合、パブリッシャに通知する。この通知方法としては、どのような方法を用いてもよいが、ここでは、ToCリクエストメッセージにより通知する方法を説明する。
【００４８】
ToCリクエストメッセージは、新規にマルチキャストグループに参加したサブスクライバが、パブリッシャにToCの送信を要求するメッセージである。パブリッシャは、このメッセージを受信することによりサブスクライバの参加を検知することができる。ToCリクエストメッセージのフォーマットに制約はなく、事前に定められたToCリクエストであることを示す値が格納されたメッセージであり、宛先がパブリッシャ（またはマルチキャストアドレス）であればよい。
【００４９】
図１０は、本実施の形態のパブリッシャの状態遷移の一例を示す図である。パブリッシャは、動作開始当初はスリープ状態にあり、データメッセージの送信を行わない状態にある。スリープ状態では、不要な回路への電力供給を遮断して、省電力状態になっていてもよい。スリープ状態にあるパブリッシャは、ToCリクエストメッセージを受け取ると周回送信状態になり、ToCをデータメッセージで送信する。次いで、各チャンクを第１の実施の形態で述べた方法または第２の実施の形態で述べた方法で、サブスクライバに送信する。全チャンクが全てのサブスクライバに届いた（最後のリペアメッセージを受信後一定時間経過）と判断したら、パブリッシャはスリープ状態に戻る。ToCリクエストメッセージを受け取ったら、再び周回送信状態に遷移する。
【００５０】
一方、周回送信状態の時にToCリクエストメッセージを受信すると、データメッセージを用いたチャンク送信を一旦停止し、ToCをデータメッセージで送信する。なお、ここでは、サブスクライバは新たにマルチキャストグループに参加する場合にToCリクエストメッセージするようにしたが、これ以外に、既にマルチキャストグループに参加済みのサブスクライバが移動等により、データメッセージの受信を一旦停止し、データメッセージの受信を再開する場合等にもToCリクエストメッセージを送信するようにしてもよい。
【００５１】
以上のように、本実施の形態では、サブスクライバは新たにマルチキャストグループに参加する場合、ToCリクエストメッセージを送信するようにした。これにより、パブリッシャは、マルチキャストグループに参加しているサブスクライバの有無を把握することができ、効率的な伝送を実現することができる。また、マルチキャストグループに参加しているサブスクライバが無い場合に送信を停止することで消費電力を低減することができる。
【００５２】
（第４の実施の形態）
次に、第４の実施の形態にかかる通信装置１について説明する。本実施の形態の通信装置１の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる部分を説明する。
【００５３】
第１の実施の形態では、パブリッシャはリペアメッセージを受信すると、当該メッセージで指定されたチャンクを再送する。一方、複数のサブスクライバが同一のチャンクの送信要求を個別にリペアメッセージとして送信することもある。この場合、パブリッシャが、受信したリペアメッセージごとにチャンクを再送すると、同一のチャンクを何度も再送することになり、冗長なデータ送信が発生する。サブスクライバの数が多い時は、リペアメッセージが通信帯域を圧迫することもあり、パフォーマンスの低下に繋がる可能性がある。
【００５４】
そこで、本実施の形態では、サブスクライバが協調して、同一のチャンクの送信要求は代表的なサブスクライバが送信し、重複したリペアメッセージの送信を防ぐ。例えば、２つのサブスクライバが存在し、サブスクライバ＃１はチャンクＡ、Ｂ、Ｃの送信を、サブスクライバ＃２はチャンクＡ、Ｃの送信をそれぞれ要求しているとする。このとき、サブスクライバ＃２が要求するチャンクはサブスクライバ＃１の要求にすべて含まれているため、サブスクライバ＃１のみがリペアメッセージを送信すればよい。
【００５５】
このような協調的な動作を実現するために、まずサブスクライバは、リペアメッセージを送信する前に使用する無線リソースの空き（通信に使用する周波数帯域の信号が空間上に流れていない）を確認するとランダムな時間だけ待ち、サブスクライバ同士のリペアメッセージ送信タイミングが衝突するのを防ぐ。サブスクライバの数が多くなると、衝突を避けるにはランダム待ち時間のばらつきをより大きくする必要があるため、このランダム待ち時間を生成する確率分布の標準偏差を、同一のマルチキャストグループに属するサブスクライバの数（サブスクライバの数の推定値）に比例させるようにしてもよい。たとえば、パブリッシャが、過去の一定時間の間に同一のマルチキャストグループに属するサブスクライバから受け取ったリペアメッセージに含まれる送信元の通信装置１の識別子をリストとして保持し、このリストから重複したものを除いた後のリストに含まれる通信装置１の識別子の個数を、サブスクライバの数の推定値とすることができる。次いで、サブスクライバは、他の装置から受信したリペアメッセージを解析する。具体的には、本実施の形態では、無線インターフェイス４は、自装置宛のメッセージだけでなく自装置が属するマルチキャストグループのパブリッシャ宛のメッセージについてもメッセージ処理部２３へ渡す。そして、メッセージ処理部２３は、他のサブスクライバから送信されたリペアメッセージに格納されたチャンク識別子を抽出し、抽出したチャンク識別子を要求済みチャンクリストとして保持する。そして、自装置がリペアメッセージを送信する時刻になると、以下の図１１に示したリペアメッセージの送信処理を行う。なお、サブスクライバのメッセージ処理部２３は、自装置が再送を要求するチャンクのチャンク識別子を要求チャンクリストとして保持している。
【００５６】
図１１は、第４の実施の形態のリペアメッセージの送信処理手順の一例を示す図である。サブスクライバのメッセージ処理部２３は、要求済みチャンクリストに含まれているチャンク識別子を、要求チャンクリストから削除する（ステップＳ３１）。次に、要求チャンクリストに含まれるチャンク識別子が１つ以上であるか否かを判断し（ステップＳ３２）、１つ以上である場合（ステップＳ３２  Ｙｅｓ）、要求チャンクリストに含まれるチャンク識別子を格納したリペアメッセージを生成する（ステップＳ３３）。そして、無線インターフェイス４は、リペアメッセージを送信する（ステップＳ３４）。要求チャンクリストに含まれるチャンク識別子が０である場合（ステップＳ３２  Ｎｏ）、リペアメッセージを送信せずに処理を終了する。
【００５７】
以上のように、本実施の形態では、サブスクライバは、自装置が再送を要求するチャンクが既に他のサブスクライバからリペアメッセージにより再送を要求されている場合には、当該チャンクをリペアメッセージで再送を要求する対象から除くことにした。これにより、重複したチャンクの再送を要求するリペアメッセージを削減することが抑制でき、不要なトラフィック増加を軽減できる。
【００５８】
（第５の実施の形態）
次に、第５の実施の形態にかかる通信装置１について説明する。本実施の形態の通信装置１の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる部分を説明する。
【００５９】
第１の実施の形態では、周回送信状態でリペアメッセージを受け取ると、パブリッシャは順番にチャンクを送る動作を一時停止し、要求されたチャンクをデータメッセージで送信する。大量のチャンクの送信をリペアメッセージで要求されると、パブリッシャはチャンクの順序送信作業が滞り、リペアメッセージの対応に追われることになる。特定のサブスクライバからのリペアメッセージに対応するために、その他の多くのサブスクライバへのデータ送信が遅れることは好ましくない。
【００６０】
本実施の形態では、このような状況を避けるため、周回送信状態のときには、一定の条件を満たすリペアメッセージについては、リペアメッセージに対する無視する（応答を行わない、すなわち、リペアメッセージで要求されたチャンクを送信しない）。サブスクライバは、リペアメッセージを送信してから一定時間経過しても要求したチャンクが届かない場合は、再度同様のリペアメッセージを送信する。したがって、リペアメッセージを無視してもデータの到達保障性は破綻しない。
【００６１】
一例としては、パブリッシャが、自装置が過去一定時間以内にデータメッセージで送ったチャンクを要求するリペアメッセージを無視する方法が挙がる。これは、あるチャンクが直近の過去にデータメッセージで送られていたとすると、そのチャンクに対するリペアメッセージを出したサブスクライバにも、タイミングの前後によってそのチャンクがすでに届いている可能性があるためである。言い換えると、同じチャンクに対するリペアメッセージが一定時間内に複数連続で届いた場合、最初の１つのリペアメッセージに対してのみ応答すればよく、以降のリペアメッセージにも応答することは冗長なデータメッセージを発生させることになる。
【００６２】
また、リペアメッセージを無視する別の条件として、含まれる要求チャンクの数が考えられる。例えば、含まれている要求チャンク数が閾値より大きい場合、パブリッシャはそのリペアメッセージに対する応答を行わない。
【００６３】
第１の実施の形態で述べたように、最後のチャンクまで送信し終えると、パブリッシャは周回送信状態から待機状態に遷移する。待機状態ではリペアメッセージを無視することはなく、要求チャンク数の多いリペアメッセージも処理される。そのため、最終的には、無視されたリペアメッセージを送信したサブスクライバにも全チャンクが到達することが保証される。
【００６４】
要求チャンク数以外に利用できる例としては、そのチャンクを要求しているサブスクライバの数が挙げられる。例えば、パブリッシャが、一定期間内に受信した同一のチャンクに関するリペアメッセージの送信元のサブスクライバの個数を計数し、この計数結果を、各チャンクの再送を要求するサブスクライバの数とする。そして、チャンクの再送を要求するサブスクライバの数が一定数より多い場合、リペアメッセージに応答し、チャンクの再送を要求するサブスクライバの数が一定数以下の場合応答しない。
【００６５】
また、無視された回数を用いてもよい。例えば、サブスクライバが、リペアメッセージを送信後に当該リペアメッセージで要求したチャンクが受信できなかった場合には、応答がなされなかった（無視された）と判断する。そして、リペアメッセージを再送する際に、当該リペアメッセージに無視された回数を付加して送信する。パブリッシャは、無視された回数が一定回数より多いリペアメッセージには、他の条件（無視する条件）を満たしていても強制的に応答する方法も考えられる。
【００６６】
パブリッシャが、２つ以上の条件を組み合わせて無視するかしないかを判断するようにしてもよい。図１２は、要求チャンク数と無視された回数との両方を用いる場合における、リペアメッセージを無視するか否かの判断処理の一例を示す図である。図１２に示すように、サブスクライバは、要求無視カウンタにより同一のリペアメッセージが無視された回数を計数し、計数結果を要求無視回数として格納したリペアメッセージを生成して送信する（ステップＳ４１）。パブリッシャは、リペアメッセージを受信する（ステップＳ４２）と、リペアメッセージに格納された要求無視回数が第１閾値より多いか否かを判断する（ステップＳ４３）。要求無視回数が第１閾値以下の場合（ステップＳ４３  Ｎｏ）、要求チャンク数が第２閾値より多いか否かを判断する（ステップＳ４４）。要求チャンク数が第２閾値以下の場合（ステップＳ４４  Ｎｏ）、リペアメッセージで要求されたチャンクを含むデータメッセージを生成して送信する（ステップＳ４５）。
【００６７】
要求無視回数が第１閾値より大きい場合（ステップＳ４３  Ｙｅｓ）、ステップＳ４５へ進む。要求チャンク数が第２閾値より大きい場合（ステップＳ４４  Ｙｅｓ）、リペアメッセージを送信しない。これにより、サブスクライバは、リペアメッセージに対応したデータメッセージを受信できないため、リペアメッセージが無視されたと判断し、要求無視カウンタをインクリメントする（ステップＳ４６）。
【００６８】
以上のように、本実施の形態では、パブリッシャは、周回送信状態では、一定条件を満たす場合にはリペアメッセージを受信してもリペアメッセージで要求されたチャンクを送信しないようにした。このため、サブスクライバへのデータ送信の遅延を防ぐことができる。
【００６９】
（第６の実施の形態）
次に、第６の実施の形態にかかる通信装置１について説明する。本実施の形態の通信装置１の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる部分を説明する。
【００７０】
第１の実施の形態では、上記までの実施例では、全チャンクの送信を終了すると、パブリッシャは周回送信状態からリペア受付状態に遷移した。リペア受付状態では、パブリッシャは能動的にデータメッセージを送ることは無く、サブスクライバから届くリペアメッセージに応答する形でのみチャンクを送信する。
【００７１】
しかしながら、周回送信を終了した後に大多数のチャンクを未受信であるサブスクライバがあると、パフォーマンスの低下を招く恐れがある。ここでは、このようなサブスクライバは大量のチャンク識別子を含んだ大きなサイズのリペアメッセージを送信するためである。大きなサイズのリペアメッセージは無線帯域を招き、トラフィック量の増大をもたらす。なお、リペアメッセージのサイズに上限があるのであれば、一定サイズになるよう分割した大量のリペアメッセージが多数送信されるため、同様にトラフィック量の増大をもたらす。特に、受信状態が悪いサブスクライバがいるときにこのような状況が起きる。
【００７２】
このため、本実施の形態ではサブスクライバが送信できるメッセージとして、新たにステータスメッセージを追加する。ステータスメッセージには、そのサブスクライバにおける受信の進行状況が格納されている。ステータスメッセージの最も単純な形式としては、ステータスメッセージにサブスクライバが受信済みのチャンク数が格納される。サブスクライバは、一定時間おきにステータスメッセージを送信する。また、ステータスメッセージにおいてビットマップ形式によりチャンクごとの受信状態を通知することとし、全チャンクが受信済みであればビットをセットし（例えば１とし）、そうでなければビットをクリアするようにしてもよい。
【００７３】
パブリッシャは、全チャンクの送信を終了すると、リペア受付状態へ遷移する前に、受信したステータスメッセージを解析し、受信済みチャンク比率が最小値を求める。受信済みチャンク比率とは、サブスクライバで受信済みのチャンク数をパスリッシャが送信したチャンク数で割ったものである。受信済みチャンク比率の代わりに受信済みのチャンク数を用いてもよい。そして、この受信済みチャンク比率の最小値が閾値より低い場合、パブリッシャはリペア受付状態に遷移することなく、周回送信状態を継続する。周回送信状態を継続したパブリッシャは、再び先頭のチャンクから順番にデータメッセージで送信する。周回送信状態を継続すると、チャンクを再送をリペアメッセージを用いることなく実施することになるため、受信済みチャンク比率の小さいサブスクライバが巨大なリペアメッセージを生成することを抑制できる。ただし、この場合はサブスクライバ側でも自装置の受信進行状況に基づいて、大きなリペアメッセージを生成しないように抑制する必要がある。具体的には、未受信のチャンクである場合でも、パブリッシャから次の先頭のチャンクからの送信により、その未受信のチャンクの受信が可能となる可能性がある。このため、例えば、ToCに基づいて未受信のチャンクが一定時間待機すれば受信可能となることが予想されるチャンクであるか否かを判断し、一定時間待機すれば受信可能となることが予想されるチャンクについてはリペアメッセージを送信しないようにする。
【００７４】
また、パブリッシャは、リペア受付状態において、サブスクライバから届くステータスメッセージも解析し、受信済みチャンク比率が閾値より小さいものを検出した場合は周回送信状態に遷移する。例えば、新しく参加したサブスクライバは受信済み比率が０なので、パブリッシャはそのようなサブスクライバに対して全チャンクの順序配信を開始することができる。
【００７５】
以上のように、本実施の形態では、サブスクライバがチャンクの受信状態をステータスメッセージにより通知し、パブリッシャは、ステータスメッセージに基づいて大量のチャンクを未受信のサブスクライバがあると判断した場合、リペア受付状態へ遷移せず周回送信状態を継続するようにした。このため、大量のリペアメッセージによるトラフィック量の増大を防ぐことができる。
【００７６】
（第７の実施の形態）
次に、第７の実施の形態にかかる通信装置１について説明する。本実施の形態の通信装置１の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる部分を説明する。
【００７７】
第１の実施の形態では、リペアメッセージの宛先をパブリッシャとし、パブリッシャのみがチャンクの再送を行った。一方、マルチキャストグループに参加するサブスクライバが複数存在する場合、あるサブスクライバが再送を要求するチャンクを、近隣の他のサブスクライバが正常に受信して保持している場合がある。本実施の形態では、このような場合には他のサブスクライバからチャンクの再送を行うことで、無線リソースの有効活用を図る。
【００７８】
具体的には、本実施の形態では、図３のリペアメッセージのフォーマットにおいて、２番目の項目の宛先をマルチキャストアドレスに変更したリペアメッセージを用いる。または、リペアメッセージのフォーマットは、図３のままで、各サブスクライバが、パブリッシャ宛のリペアメッセージについても受信して、以下の処理を行うようにしてもよい。
【００７９】
サブスクライバは、他のサブスクライバからリペアメッセージを受信すると、リペアメッセージで要求されているチャンクを自装置が保持しているか否かを判断する。この判断は、例えば、メッセージ処理部２３が実施する。メッセージ処理部２３は、リペアメッセージで要求されているチャンクを少なくとも１部保持している場合、保持しているチャンクを格納したデータメッセージを生成し無線インターフェイス４経由でリペアメッセージの送信元のサブスクライバへ送信する。このデータメッセージの宛先は、リペアメッセージの送信元のサブスクライバとする。リペアメッセージで要求されているチャンクを１つも保持していない場合は、当該リペアメッセージに応答しない。
【００８０】
図１３は、本実施の形態のメッセージ送信の一例を示す図である。図１３の左側の通常送信は、パブリッシャ１０１がデータメッセージをマルチキャストにより送信する様子を示す。パブリッシャ１０１からの電波の到達範囲１０３内に位置するサブスクライバ１０２，１０２ａ，１０２ｂが、データメッセージが到達する。サブスクライバ１０２ａでは、データメッセージにより送信されたチャンクを正常に受信でき、サブスクライバ１０２ｂが一部のチャンクを正常に受信でなかったとする。サブスクライバ１０２ｂは、リペアメッセージを送信する。図１３の右側の電波の到達範囲１０５は、サブスクライバ１０２ｂが送信したリペアメッセージの到達範囲を示している。なお、図１３では、図の簡略化のため、サブスクライバ１０２ｂの電波の到達範囲１０５をパブリッシャ１０１からの電波の到達範囲１０３より小さく記載しているが、実際の電波の到達範囲１０５を示すものではない。電波の到達範囲１０５は、例えば、パブリッシャ１０１からの電波の到達範囲１０３と同等であってもよく、電波の到達範囲１０５に制約はない。サブスクライバ１０２ａは、サブスクライバ１０２ｂからリペアメッセージを受信すると、リペアメッセージで再送を要求しているチャンクを正常に受信している場合、サブスクライバ１０２ｂへ当該チャンクを格納したデータメッセージ１０６を送信する。なお、パブリッシャ１０１／サブスクライバ１０２，１０２ａ，１０２ｂから出力される電波は指向性をもっていても、持っていなくてもよい。指向性をもっていない場合には、図１３において、パブリッシャ１０１／サブスクライバ１０２，１０２ａ，１０２ｂから出力される電波は同心円状に伝搬する。
【００８１】
受信したリペアメッセージに基づいてデータメッセージを生成して送信する処理は、パブリッシャの場合と同様である。例えば、第５の実施の形態ではパブリッシャがリペアメッセージを無視する場合の条件を示したが、サブスクライバも同様の条件によってリペアメッセージを無視してもよい。
【００８２】
本実施の形態では、１つのリペアメッセージを複数の通信装置１（パブリッシャまたはサブスクライバ）が同時に受信すると、複数の通信装置１が同一のチャンクを格納したデータメッセージをそれぞれ送信する可能性がある。これは冗長なデータ送信を発生させ、トラフィックの増大を招く。このため、冗長なデータメッセージの発生を防ぐには、第４の実施の形態の重複するリペアメッセージの送信を抑制する同様の手法、すなわちデータメッセージを送信する前にランダムな時間待つ方法を用いることができる。そして他の通信装置１が送信したデータメッセージも解析し、他の通信装置１が過去の一定時間内に送信したチャンクは送信しない。これを実現するために、例えば、各通信装置１は他の通信装置１が過去の一定時間内にデータメッセージで送信したチャンクのチャンク識別子を送信済みチャンクリストとして保持する。自装置がデータメッセージを送る時刻になると、図１４に示すように、データメッセージの送信処理を実施する。
【００８３】
図１４は、本実施の形態のデータメッセージの送信処理手順の一例を示す図である。ここでは、サブスクライバのデータメッセージの送信処理手順について説明するが、パブリッシャも再送のデータメッセージの送信時には、サブスクライバと同様の送信処理を実施する。サブスクライバのメッセージ処理部２３は、送信済みチャンクリストに含まれているチャンク（実際にはチャンク識別子）を送信チャンクリストから削除する（ステップＳ５１）。
【００８４】
サブスクライバのメッセージ処理部２３は、自装置が保持していないチャンクを送信チャンクリストから削除する（ステップＳ５２）。次に、サブスクライバのメッセージ処理部２３は、送信チャンクリストにチャンクが含まれるか否かを判断し（ステップＳ５３）、送信チャンクリストに含まれるチャンク識別子の数が１以上である場合（ステップＳ５３  Ｙｅｓ）、送信チャンクリストに含まれるチャンク識別子に対応するチャンクを格納したデータメッセージを生成する（ステップＳ５４）。サブスクライバの無線インターフェイス４は、データメッセージを送信する（ステップＳ５５）。送信チャンクリストに含まれるチャンク識別子が０の場合（ステップＳ５３  Ｎｏ）、当該リペアメッセージに対応するデータメッセージの送信はせずに処理を終了する。
【００８５】
本実施の形態では、サブスクライバはリペアメッセージに対する応答をする場合のみデータメッセージを送信する。サブスクライバは、パブリッシャのように周回送信状態となることはなく、すなわち能動的にチャンクを送信することは無く、データメッセージの送信に関しては受動的な動作を行う。
【００８６】
以上のように、本実施の形態では、リペアメッセージを受信したサブスクライバも、リペアメッセージで要求されたチャンクを保持している場合には、当該チャンクを格納したデータメッセージを送信するようにした。このため、データの再送を要求したサブスクライバの近くに要求されたチャンクを保持するサブスクライバがあった場合には、近くのサブスクライバからデータメッセージを受信することができる。また、データの再送処理をサブスクライバが分担することができるため、パブリッシャばかりに負担がかかり、パブリッシャの消費電力が増大するのを防ぐことができる。
【００８７】
以上複数の実施の形態を説明したが、上記の２つ以上の実施の形態を組み合わせて実施するようにしてもよい。
【００８８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８９】
１  通信装置、２  ネットワーク制御部、３  マルチキャストグループ記憶部、４  無線インターフェイス、５  不揮発性メモリ、２１  動作モード設定部、２２  ファイル管理部、２３  メッセージ処理部。
【図１】
0005921506.tif 000002
【図２】
0005921506.tif 000003
【図３】
0005921506.tif 000004
【図４】
0005921506.tif 000005
【図５】
0005921506.tif 000006
【図６】
0005921506.tif 000007
【図７】
0005921506.tif 000008
【図８】
0005921506.tif 000009
【図９】
0005921506.tif 000010
【図１０】
0005921506.tif 000011
【図１１】
0005921506.tif 000012
【図１２】
0005921506.tif 000013
【図１３】
0005921506.tif 000014
【図１４】
0005921506.tif 000015