通信装置、通信方法、及びプログラム
【課題】 受信装置による受信状況情報の送信タイミングによっては、適切な通信制御ができない恐れがあった。
【解決手段】 送信装置101の通信状況解析部212は、受信装置によるデータの受信状況を示す受信状況情報を受信装置から受信し(S601)、受信された受信状況情報に応じて、受信装置へのデータの送信レートを制御し(S603)、受信された受信状況情報に応じて、データを受信中の受信装置によるデータの受信状況を示す受信状況情報の送信を制御する(S614)。
【解決手段】 送信装置101の通信状況解析部212は、受信装置によるデータの受信状況を示す受信状況情報を受信装置から受信し(S601)、受信された受信状況情報に応じて、受信装置へのデータの送信レートを制御し(S603)、受信された受信状況情報に応じて、データを受信中の受信装置によるデータの受信状況を示す受信状況情報の送信を制御する(S614)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの通信方法に関する。
【背景技術】
【0002】
近年、ネットワークを介した動画データの送受信が急増している。インターネットやLAN(Local Area Network)ネットワークでリアルタイムに動画データをストリーム送信する技術として、RTP(Real−time Transport Protocol)が一般的に用いられる。また、RTPを用いて動画ストリームを送受信する送信装置と受信装置との間では、RTPによるストリーム転送と並行して、動画ストリーム転送に関する情報の送受信が行われる。動画ストリーム転送に関する情報の送受信には、RTCP(Real−time Transport Control Protocol)が、よく用いられる。
【0003】
受信装置が送信装置に送信するRTCPデータには、受信状況情報(受信者レポート、Receiver Report)や、受信装置が受信に失敗したパケットの再送信要求などがある。また、送信装置が受信装置に送信するRTCPデータには、送信者レポート(Sender Report)などがある。
【0004】
受信状況情報には、例えば、受信装置による受信パケットの欠落率やパケット間隔ジッタが含まれる。送信装置は、受信装置から受け取る受信状況情報に基づいて動画データの送信レートや、前方誤り訂正(FEC、Forward Error Correction)データのレートを調整できる。
【0005】
特許文献1には、データの送信先からのデータ損失率情報に基づいて、その後の送信装置によるデータの送信レートを制御することが記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2001−320440号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、受信装置による受信状況情報の送信タイミングによっては、適切な通信制御ができない恐れがあった。
【0008】
例えば、受信装置による受信状況情報の送信間隔が長いと、ネットワークの通信状況の変化への対応が遅くなる。すなわち、ネットワーク上で輻輳が発生しても、その検知が遅れることにより、送信レートを下げる処理の開始が遅くなる恐れがあった。
【0009】
一方、受信装置による受信状況情報の送信間隔が短いと、受信状況情報の送受信にかかる負荷やネットワークのトラフィックが必要以上に大きくなってしまう恐れがあった。
【0010】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、受信装置にデータを送信する場合に、適切な通信制御ができるようにすることである。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明の通信装置は、例えば、以下の構成を有する。すなわち、ネットワークを介して受信装置にデータを送信する送信手段を有する通信装置であって、前記受信装置によるデータの受信状況を示す受信状況情報を前記受信装置から受信する受信手段と、前記受信手段により受信された受信状況情報に応じて、前記受信装置へのデータの送信レートを制御するレート制御手段と、前記受信手段により受信された受信状況情報に応じて、前記送信手段からのデータを受信中の前記受信装置による前記送信手段からのデータの受信状況を示す受信状況情報の送信を制御する送信制御手段とを有する。
【発明の効果】
【0012】
本発明によれば、受信装置にデータを送信する場合に、より適切な通信制御ができるようになる。
【図面の簡単な説明】
【0013】
【図1】送信装置と受信装置からなるネットワーク構成図
【図2】送信装置の機能構成図
【図3】受信状況情報の送信タイミング指示の例を示した図
【図4】受信装置の機能構成図
【図5】受信装置における受信状況情報の送信タイミングに関する情報の格納例を示した図
【図6】送信装置が受信状況情報の送信を制御する処理を説明するためのフローチャート
【図7】受信装置が受信状況情報の送信タイミングを決定する処理を説明するためのフローチャート
【図8】送信装置における再送要求の送信タイミングを制御する処理を説明するためのフローチャート
【図9】受信装置における再送要求の送信タイミングを決定する処理を説明するためのフローチャート
【図10】受信装置における再送要求タイミング指示情報の格納例を示した図
【図11】受信装置による再送要求の送信処理を説明するためのフローチャート
【発明を実施するための形態】
【0014】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【0015】
<実施形態1>
本実施形態では、動画データの送信装置が、受信装置からの受信状況情報(受信者レポート:RR)に応じて、受信装置による受信状況情報の送信を制御する例について説明する。受信状況情報は、受信装置によるデータの受信状況を示す情報である。本形態では、送信装置がネットワークを介して受信装置に動画データを送信する例について説明するが、送信されるデータは動画データに限らない。
【0016】
図1は本実施形態の送信装置と受信装置を含むシステムの全体の構成図である。動画データのストリーミング機能を有する送信装置101がネットワークを介して受信装置102〜104に接続している。送信装置101は、動画データを各受信装置に送信する動画ストリーミングサーバである。送信装置101は、動画データとその動画データに対するFECデータをRTPパケットで送信する。各受信装置は、正常に受信した動画パケット、及び、正常に受信したFECパケットを用いて、正常に受信できなかった動画パケットを復元できる。
【0017】
なお、本形態では、送信装置101が、各受信装置に異なるセッションで、動画データを送信する例について説明する。送信装置101は、各受信装置から、データの受信状況を示す受信状況情報を受信する。また、送信装置101は、各受信装置からの受信状況情報に応じて、動画データの送信レートを制御すると共に、各受信装置に対して、受信状況情報の送信を制御するためのパケット(送信制御パケット)をRTCPパケットで送信する。また、送信装置101は、受信装置から再送要求を受信すると、要求された動画パケットを再送信する。
【0018】
受信装置102〜104は共に送信装置101から動画データを受信するクライアントである。また、各受信装置は、動画データの受信状況を示す受信状況情報や、受信できなかった動画パケットの再送信要求を、RTCPパケットで送信装置101に送信する。
【0019】
通信経路105〜109は、実際には、様々な通信路と中継器で構成される。例えば、通信経路108は、無線の通信経路と有線の通信経路の組み合わせで構成される。送信装置101から各受信装置までのネットワーク帯域やパケットロス率はそれぞれ異なる。また、送信装置101から各受信装置までのパケットロス率や利用可能なネットワーク帯域は、それぞれ時間的に変動する。
【0020】
図2は本実施形態の送信装置101の機能構成を示すブロック図である。送信装置101は、動画格納部201、動画符号化部202、パケット生成部203、バッファ204、送信部205、通信インターフェース206を備える。また、送信装置101は、セッション情報格納部207、制御部208、FEC生成部209、パケット再送部210、RTCP生成部211、通信状況解析部212、RTCP解析部213、受信部214を備える。送信装置101は、通信インターフェース206を介して、通信経路105に接続される。動画符号化部202は、制御部208による符号化レートの指示に従い、動画格納部201の動画データを符号化する。パケット生成部203は、動画符号化部202による符号化済みの動画データを、ネットワーク送信する為のパケットデータに変換し、バッファ204に格納する。
【0021】
FEC生成部209は、制御部208によるFECレートの指示に従い、バッファ204に格納された動画パケットからFECパケットを生成し、送信部205に出力する。なお、FECレートは、動画データのパケット数に対するFECパケットのパケット数である。
【0022】
送信部205は、制御部208からの指示に応じて、セッション情報格納部207に記録されている各受信装置に対して、動画パケット、及び、FECパケットを送信する。
【0023】
受信部214は、動画データの送信先である各受信装置からのRTCPパケットを受信し、RTCP解析部213に出力する。受信部214が受信装置から受信するRTCPパケットには、受信状況情報や、再送要求パケットがある。RTCP解析部213は再送要求パケットを制御部208に出力し、受信状況情報を通信状況解析部212に出力する。
【0024】
RTCP解析部213から再送要求パケットを受信した制御部208は、再送信を要求されている動画パケットを送信部205を介して再送信させる。また、RTCP解析部213から受信状況情報を受信した通信状況解析部212は、受信状況情報から通信状況のパラメータを算出し、制御部208に通知する。
【0025】
本形態の受信状況情報には、セッションが開始されてから送信された動画パケットとFECパケット数の合計を示す総パケット数と、受信装置が正常に受信できなかったエラーパケットの総パケット数とが含まれている。通信状況解析部212は、受信状況情報に基づいて、所定期間ごとのエラー率を算出し、制御部208に通知する。
【0026】
制御部208は、通信状況解析部212から通知されたエラー率に基づいて、受信装置に対する送信レートを決定する。そして、制御部208は、決定した送信レートに基づいて、動画符号化部202に対して動画データの符号化レートを指示すると共に、FEC生成部209に対してFECレートを指示する。また、制御部208は、受信装置による受信状況情報の送信タイミングを決定する。そして、制御部208は、決定された受信状況情報の送信タイミングを受信装置に通知するためのRTCPパケット(送信制御パケット)の生成をRTCP生成部211に依頼し、生成された送信制御パケットを送信部205を介して受信装置に送信させる。
【0027】
すなわち、制御部208は、受信部214により受信された受信状況情報に応じて、送信部205からのデータを受信中の受信装置による送信部205からのデータの受信状況を示す受信状況情報の送信を制御する。
【0028】
図3は、送信装置101が受信装置に送信する送信制御パケットの指示内容の例である。図3(a)は、次回の送信時刻と、その後の送信インターバルを指示するタイプである。すなわち、制御部208は、送信部205を介して、受信状況情報の次回の送信時刻と、その後の送信間隔を指示するRTCPパケットを受信装置へ送信する。この例では、次回の送信時刻(12301500ミリ秒)、及び、それ以後の送信間隔(1500ミリ秒)が指示される。なお、本形態の制御部208は、受信状況情報の送信タイミングを、NTP(Network Time Protocol)のタイムスタンプで指示する。
【0029】
図3(b)は、次回の送信時刻を指示せず、送信インターバルのみを指示するタイプである。すなわち、制御部208は、送信部205を介して、受信状況情報の送信間隔を指示するRTCPパケットを受信装置へ送信する。この例では、送信間隔(4000ミリ秒)のみが指示される。
【0030】
図3(c)は、次回以降の送信時刻を列挙して指示するタイプである。すなわち、制御部208は、送信部205を介して、複数の受信状況情報の送信時刻を指示するRTCPパケットを受信装置へ送信する。この例では、5つの送信時刻が列挙されている。
【0031】
図3(d)は、受信状況情報の送信時刻を受信装置に決定させるタイプである。すなわち、制御部208は、送信部205を介して、受信状況情報の送信タイミングを受信装置に決定させることを指示するRTCPパケットを受信装置へ送信する。
【0032】
図4は本実施形態の受信装置102〜104の機能構成を示すブロック図である。受信装置は、受信部401、バッファ402、パケット結合部403、動画復号部404、表示部405、エラー測定部406、RTCP解析部407、FEC復号部408を備える。また、受信装置は、制御部409、セッション情報格納部410、再送要求部411、通信品質報告部412、送信部413、通信インターフェイス414を備える。受信装置は、通信インターフェイス414を介して、通信経路に接続される。
【0033】
受信部401は、通信インターフェイス414を介して受信した動画パケット及びFECパケットをバッファ402に保存する。また、受信部401は、受信したRTCPパケットをRTCP解析部407に出力する。本形態で受信されるRTCPパケットには、送信制御パケット(受信状況情報の送信を制御するためのパケット)や、ほかの受信装置によって送信された再送要求パケットがある。また、受信部401は受信した動画パケットのシーケンスナンバーをエラー測定部406に通知する。
【0034】
パケット結合部403は、バッファ402に保存された1つ以上の動画パケットの動画データを結合し、動画復号部404に出力する。動画復号部404は、結合された動画データを復号して表示部405に出力する。表示部405は、復号された動画データを表示する。
【0035】
エラー測定部406は、受信部401から通知されたシーケンスナンバーからエラーパケットのシーケンスナンバーを特定し、制御部409に通知する。
【0036】
制御部409は、エラー測定部406からの通知に応じて、エラーパケットが発生したことを通信品質報告部412に通知する。また、制御部409は、エラーパケットを、正常に受信された動画パケットとFECパケットを用いて復元可能であるか否かを判定し、復元可能であると判定されたエラーパケットの復元を、FEC復号部に依頼する。また、制御部409は、復元可能でないと判定されたエラーパケットのシーケンスナンバーを再送要求部411に通知する。
【0037】
ただし、制御部409は、復元可能でないと判定されたエラーパケットと同じパケットの再送要求パケットを、他の受信装置から受信した場合、当該エラーパケットのシーケンスナンバーを再送要求部411に通知しない。これにより、同じエラーパケットの再送要求パケットが重複して送られないようにすることができる。なお、本形態では、各受信装置はそれぞれ異なる動画データを受信しているので、復元可能でないと判定されたエラーパケットは、すべて再送要求される。
【0038】
FEC復号部408は、制御部409に復元を依頼されたエラーパケットの復元に必要となる動画パケット及びFECパケットをバッファ402から検索し、復元する。
【0039】
再送要求部411は、制御部409から通知されたシーケンスナンバーに基づいて、エラーパケットの再送信を依頼するRTCPパケットを作成し、送信部413を介して送信装置101に送信する。
【0040】
RTCP解析部407は、受信したRTCPパケットを解析し、解析結果を制御部409に通知する。本形態のRTCP解析部407は、送信制御パケットを解析し、図3のいずれのタイプであるかを判定する。そして、RTCP解析部407は、送信制御パケットのタイプに応じた受信状況情報の送信タイミングを、制御部409に通知する。
【0041】
RTCP解析部407からの通知を受けた制御部409は、受信状況情報の送信タイミングを、セッション情報格納部410に記録する。
【0042】
図5は、セッション情報格納部410に格納される、受信状況情報の送信タイミングを管理するための管理テーブルの例である。図5に示すように、管理テーブルは、受信セッション番号501と前回送信時刻502と送信タイミング指定形式503と送信タイミング指定値504で構成される。本形態の受信装置は、受信状況情報の送信タイミングを、セッションごとに管理している。例えば、受信装置102は、送信装置101から、セッション番号1のセッションに基づいて第1の動画データを受信すると共に、送信装置101とは別の送信装置から、セッション番号2のセッションに基づいて第2の動画データを受信している。
【0043】
つまり、図5に示す管理テーブルを格納している受信装置102は、12302800ミリ秒に達したことに応じて、送信装置101に対して受信状況情報を送信し、その後、2500ミリ秒間隔で受信状況情報を送信する。また、受信装置102は、別の送信装置に対して、12301300ミリ秒に達したことに応じて受信状況情報を送信し、その後、12302100に達したことに応じて、次の受信状況情報を送信する。
【0044】
制御部409は、RTCP解析部407からの通知に応じて、セッション情報格納部410に格納される設定値を変更する。
【0045】
次に、図6を用いて、受信装置102〜104へ動画データを送信する送信装置101の処理について説明する。なお、図6のフローチャートの処理は、CPUがROMに格納されているプログラムを実行することにより、実現される。
【0046】
ステップS601(受信手順)において、受信部214が受信状況情報を受信装置から受信したことに応じて、通信状況解析部212は、受信状況情報の解析結果を制御部208に通知する。
【0047】
ステップS602において、制御部208は、複数の受信装置からの受信状況情報の解析結果に基づいて、複数の受信装置の受信状況が対応しているか否かを判定する。例えば、制御部208は、受信装置102から第1の受信状況情報を受信してから所定時間内に、受信装置103から第2の受信状況情報を受信した場合、第1、第2の受信状況情報が示す受信状況(例えばエラー率)が対応しているか判定する。さらに制御部208は、第2の受信状況情報の受信後に受信装置102から受信した第3の受信状況情報が示す受信状況と、第3の受信状況情報を受信してから所定時間内に受信装置103から受信した第4の受信状況情報が示す受信状況が対応しているか判定する。そして、制御部208は、第1、第2の受信状況情報が示す受信状況が対応し、且つ、第3、第4の受信状況情報が示す受信状況が対応すると判定される場合、受信装置102、103の受信状況が対応すると判定する。
【0048】
ステップS602において、複数の受信装置の受信状況が対応していると判定された場合はステップS604に進み、対応していないと判定された場合はステップS603に進む。
【0049】
なお、送信装置101が1つの受信装置にのみデータを送信している場合は、ステップS603に進む。
【0050】
ステップS603(レート制御手順)において、制御部208は、ステップS601で受信した受信状況情報の解析結果に応じて、受信装置に対する送信レートを決定する。例えば、制御部208は、エラー率が所定のエラー率よりも高い場合は送信レートを下げ、エラーが発生していない場合で、かつ、送信レートが目標レートに達していない場合は送信レートを上げる。
【0051】
ステップS614(送信制御手順)において、制御部208は、ステップS601で受信した受信状況情報の解析結果に応じて、受信状況情報の送信を制御するためのパケット(送信制御パケット)をRTCP生成部211に生成させる。そして、制御部208は、生成された送信制御パケットを送信部205を介して受信装置へ送信させる。
【0052】
本形態の制御部208は、エラー率が所定のエラー率よりも高い場合、送信レートを下げると共に、受信装置が、所定のエラー率よりも低かった場合よりも早いタイミング、かつ、短い間隔で受信状況情報を送信するように制御する。すなわち、制御部208は、受信状況情報が第1の受信状況(第1のエラー率)を示している場合、受信状況情報が第2の受信状況(第2のエラー率)を示している場合よりも早いタイミングで次の受信状況情報を送信させる。また、制御部208は、受信状況情報が第1の受信状況を示している場合は第1の期間の受信状況を示す受信状況情報を送信させ、受信状況情報が第2の受信状況を示している場合は第1の期間よりも短い第2の期間の受信状況を示す受信状況情報を送信させる。なお、第2の受信状況のエラー率(第2のエラー率)は、第1の受信状況のエラー率(第1のエラー率)よりも、エラーしたデータが少ない。
【0053】
また、制御部208は、エラー率が所定のエラー率よりも低く、かつ、送信レートが目標レートに達していない場合、送信レートを上げると共に、受信装置が、制御をしない場合よりも早いタイミングで次の受信状況情報を送信するように制御する。すなわち、制御部208は、受信状況情報が示すエラー情報に基づいて送信レートを上げた場合、送信レートを上げない場合よりも受信装置が早いタイミングで次の受信状況情報を送信するように制御する。受信状況情報が早いタイミングで送信されることにより、送信装置101は、通信状況をより早く知ることができる。
【0054】
また、制御部208は、エラー率が所定のエラー率よりも低く、かつ、送信レートが目標レートに達している場合、送信レートを変更しないと共に、受信装置が、制御をしない場合よりも遅いタイミングで次の受信状況情報が送信されるように制御する。また、この場合、制御部208は、次回以降の受信状況情報の送信間隔が長くなるように制御する。受信状況情報の送信回数を少なくすることにより、受信状況情報の送受信にかかる負荷やネットワークの負荷を低減できる。
【0055】
ステップS602で、受信装置102、103の受信状況が対応していると判定された場合、ステップS604において、制御部208は、受信装置102、103に対して、一致する期間の受信状況を示す受信状況情報を送信させる。例えば、制御部208は、次回送信時刻12303500ミリ秒、インターバル1000ミリ秒を指定した送信制御パケットをRTCP生成部211に生成させ、それを受信装置102、103のそれぞれへ送信させる。これにより、受信装置102、103は、それぞれ同じタイミングで受信状況情報を送信するようになる。
【0056】
すなわち、制御部208は、第1の受信状況情報を送信した受信装置102と、第1の受信状況情報に受信状況が対応する第2の受信状況情報を送信した受信装置103とに、一致するタイミングで受信状況情報を送信させる。第2の受信状況情報は、第1の受信状況情報を受信してから、所定時間内に送信装置101によって受信された受信状況情報である。
【0057】
また、ステップS604において、制御部208は、受信装置102、103に一致する期間の受信状況情報を送信させる前よりも、受信状況情報の送信間隔を短くさせる。このようにすることで、受信装置102、103の受信状況の比較を、より精度良く行うことができる。
【0058】
なお、本形態では、ステップS602で受信状況が対応していると判定された場合に、一致する期間の受信状況情報を送信させる例について説明したが、ステップS602の判定をすることなく、一致する期間の受信状況情報を送信させることも可能である。
【0059】
ステップS605において、制御部208は、複数の受信装置102、103から、一致する期間の受信状況情報を受信する。
【0060】
ステップS606において、制御部208は、ステップS605で受信された受信状況情報に基づいて、複数の受信装置102、103がボトルネックを共有しているか否かを判定する。すなわち、制御部208は、複数の受信装置102、103のそれぞれから、一致する期間の受信状況情報を、複数個、受信し、それらのエラー率の変動が対応しているか否かを判定する。例えば、受信装置102、103からの受信状況情報により、受信装置102、103の第1の期間のエラー率が5%、第2の期間のエラー率が7%、第3の期間のエラー率が10%で一致する場合、ボトルネックを共有していると判定される。また、例えば、第1、第2の期間のエラー率が一致し、第3の期間のエラー率は1%の差異があった場合も、受信装置102、103がボトルネックを共有していると判定される。
【0061】
ステップS606で、複数の受信装置102、103がボトルネックを共有していると判定された場合はステップS609に進み、ボトルネックを共有していないと判定された場合はステップS607に進む。
【0062】
ステップS607において、制御部208は、ステップS603と同様に、各受信装置から受信した受信状況情報の解析結果に基づいて、データの送信レートを制御する。すなわち、制御部208は、受信装置102からの受信状況情報に基づいて受信装置102へのデータの送信レートを制御し、受信装置103からの受信状況情報に基づいて受信装置103へのデータの送信レートを制御する。そして、ステップS608において、制御部208は、受信装置102、103にそれぞれ異なるタイミングで受信状況情報を送信させると共に、受信状況情報の送信間隔を長くさせる。このように、ボトルネックを共有しないと判定された受信装置からの受信状況情報を、異なるタイミングで送信させることにより、複数の受信装置から同時に受信状況情報を受信するよりも、送信レートの制御やネットワークの負荷を時間的に平準化できる。
【0063】
ステップS609において、制御部208は、受信装置102、103に受信状況情報を交互に送信させる。すなわち、制御部208は、受信装置102、103に一致するタイミングで送信させた受信状況情報が対応する場合、受信装置102、103に、受信状況情報を交互に送信させる。
【0064】
例えば、制御部208は、次回送信時刻12308500ミリ秒、インターバル2000ミリ秒を指定した第1の送信制御パケットをRTCP生成部211に生成させ、それを受信装置102に送信させる。また、制御部208は、例えば、次回送信時刻12309500ミリ秒、インターバル2000ミリ秒を指定した第2の送信制御パケットをRTCP生成部に生成させ、それを受信装置103に送信させる。なお、制御部208は、ステップS604で、受信装置102、103に、それぞれ1000ミリ秒間隔で受信状況情報を送信させている。
【0065】
送信装置101から第1の送信制御パケットを受信した受信装置102は、時刻12308500、12310500、12312500・・・に、送信装置101に対して受信状況情報を送信する。また、送信装置101から第2の送信制御パケットを受信した受信装置103は、時刻12309500、12311500、12313500・・・に、送信装置101に対して受信状況情報を送信する。
【0066】
すなわち、制御部208は、受信装置102、103に受信状況情報を交互に送信させる前よりも、受信装置102による受信状況情報の送信間隔と、受信装置103による受信状況情報の送信間隔とを、それぞれ長くさせる。
【0067】
このように、送信装置101は、受信装置102、103に受信状況情報を交互に送信させると共に、送信間隔を長くする。このようにすることで、受信状況情報の送受信の負荷やネットワークの負荷を低減しつつ、送信装置101は、ボトルネックの通信状況を短い間隔で(1000ミリ秒ごとに)確認できる。
【0068】
ステップS610において、制御部208は、受信装置102、103から交互に送信されてくる受信状況情報に基づいて、受信装置102、103へのデータの送信レートをまとめて制御する。例えば、制御部208は、ボトルネックを共有していると判定された受信装置102、103のそれぞれに設定された優先度を取得する。そして、制御部208は、受信装置102、103の受信状況に応じて、送信レートの合計値を決定し、さらに、受信装置102、103の優先度に応じて、受信装置102への第1の送信レートと、受信装置103への第2の送信レートをそれぞれ決定する。これにより、ボトルネックを共有している受信装置102、103のうち、受信装置103よりも優先度が高い受信装置102への送信レートが、受信装置103よりも高く決定される。
【0069】
ステップS612において、制御部208は、受信装置102、103から交互に送信されてくる受信状況情報に基づいて、受信装置102、103がボトルネックを共有しているか否かを判定する。すなわち、通信状況解析部212が各受信装置からの受信状況情報に基づいて、エラー率の変動を算出し、制御部208に通知する。そして、制御部208は、通信状況解析部212による算出結果に基づいて、受信装置102、103がボトルネックを共有しているか否かを判定する。この判定は、ステップS606と同様に行う。
【0070】
ステップS612において、受信装置102、103がボトルネックを共有していると判定された場合はステップS610に戻り、制御部208は、受信装置102、103の送信レートをまとめて制御する。一方、受信装置102、103がボトルネックを共有していないと判定された場合はステップS613に進み、制御部208は、受信装置102、103に異なるタイミングで受信状況情報を送信させる。
【0071】
このように、ボトルネックを共有していない受信装置に異なるタイミングで受信状況情報を送信させることにより、受信状況情報によるネットワークの負荷や、受信状況情報に応じた送信レート制御などの負荷を時間的に平準化することができる。
【0072】
次に、図7のフローチャートを用いて受信装置102〜104の制御部409が受信状況情報の送信タイミングを決定する処理について説明する。
【0073】
ステップS701(受信手順)において、RTCP解析部407は、送信装置101からRTCPパケットを受信する。そして、RTCP解析部407は、RTCPパケットが送信制御パケットであった場合、受信状況情報の送信タイミングを制御するための制御信号を取得して制御部409に通知する。なお、ステップS701でRTCP解析部407が送信制御パケットを受信するということは、それ以前に、少なくとも1つ以上の受信状況情報が送信装置101に送信されている(送信手順)。
【0074】
ステップ702において、制御部409は、ステップS701でRTCP解析部407から通知された情報が、受信状況情報の送信タイミングを制御するための制御信号であるか否かを判定する。ステップS701で通知された情報が受信状況情報の送信タイミングを制御するための制御信号であると判定された場合、ステップS703に進み、受信状況情報の送信タイミングを制御するための制御信号でないと判定された場合、ステップS704に進む。
【0075】
ステップS703(制御手順)において、制御部409は、ステップS701で通知された制御信号に基づいて、受信状況情報の送信タイミングの設定を変更する。制御部409は、図3(a)に示すような内容を含む制御信号を受けると、次回送信時刻を指定された値に設定すると共に、受信状況情報の送信インターバルを設定する。つまり、制御部409は、通知された制御信号に基づいて、図5に示したような、セッション情報格納部410に格納されている情報を書き換える。
【0076】
すなわち、制御部409は、受信状況情報が送信された後に受信された制御信号に応じて、制御信号の受信後に受信したデータの受信状況を示す受信状況情報の送信を制御する。
【0077】
ステップS407において、制御部409は、受信したRTCPパケットに基づく処理のうち、受信状況情報の送信タイミング以外の処理を行う。例えば、RTCPパケットとして再送要求パケットを受信した場合、制御部409は、ステップS407でパケットの再送処理を行う。
【0078】
<実施形態2>
次に第2の実施形態について、実施形態1との差異を中心に説明する。本実施形態では、受信装置102〜104に対して、同じ動画データをマルチキャスト送信する送信装置101が、受信装置に対して再送信要求の送信タイミングを指示する例について説明する。
【0079】
本実施形態の送信装置101と受信装置102〜104の構成は、実施形態1と同様である。更に、本実施形態の制御部208は、RTCP生成部211に対して、再送要求制御パケットの作成を依頼する。また、制御部208は、RTCP生成部211により生成された再送要求制御パケットを、送信部205を介して受信装置に送信させる。
【0080】
再送要求制御パケットは、受信装置に対して再送要求を送信可能なタイミングを指定するためのパケットである。受信装置は、動画データのパケットロスがあった場合、再送要求制御パケットで指定されたタイミングまで再送要求の送信を待つ。
【0081】
本形態の制御部208が再送要求の送信タイミングの指定方法として、例えば、インターバル型、時間列挙型、待ち時間指定型がある。インターバル型では、次回送信時刻(例えば12300010ミリ秒)とインターバル(例えば33ミリ秒)が指定される。また、時間列挙型では、列挙数(例えば5)、送信時刻(12301010ミリ秒、12301043ミリ秒、12301076ミリ秒、12301109ミリ秒、12301132ミリ秒)が指定される。また、待ち時間指定型では、待ち時間(例えば10ミリ秒)が指定される。待ち時間指定型の再送制御パケットを受信した受信装置は、動画データのパケットロスを検知してから10ミリ秒待って、再送要求パケットを送信装置101に送信する。なお、受信装置は、10ミリ秒の待ち時間中に、ロスしたパケットの再送要求パケットを他の受信装置から受信した場合、再送要求パケットを送信しない。また、本形態では、再送要求の送信タイミングをNTPのタイムスタンプで指示する例について説明しているが、ほかの指示方法を用いても良い。
【0082】
次に、図8を用いて、本実施形態の制御部208が、受信装置による再送要求の送信タイミングを制御する処理を説明する。
【0083】
ステップS801において、制御部208は、各受信装置102〜104からの受信状況情報に基づいて通信状況解析部212によって算出された解析結果(例えば所定期間ごとのエラー率)を受信する。
【0084】
ステップS802において、制御部208は、ステップS801で受信した解析結果に基づいて、各受信装置がボトルネックを共有しているか否かを判定する。ステップS801、S802の処理は、図6のステップS601〜S606の処理に対応する。ステップS802で受信装置がボトルネックを共有していると判定された場合はステップS803に進み、ボトルネックを共有していないと判定された場合は本形態の処理を終了する。この説明では、送信装置101によるマルチキャストでの動画データの送信先である受信装置102〜104のうち、受信装置102、103がボトルネックを共有していると判定されたとする。
【0085】
ステップS803において、制御部208は、ボトルネックを共有していると判定された受信装置102、103による再送要求の送信タイミング決定する。例えば、制御部208は、インターバル型で制御する場合、ボトルネックを共有している複数の受信装置のうち、より処理能力の高い受信装置のインターバルの値を小さく、処理能力の低い受信装置のインターバルの値を大きく設定する。これにより、処理能力の高い受信装置にできるだけ多くの再送要求を送信させることができる。
【0086】
ただし、このようなインターバルの決定方法に限らず、例えば、マルチキャストグループに加入した順序に基づいて、インターバルを決定するようにしても良い。また、例えば、各受信装置の優先度や、ユーザによる指定に基づいて、インターバルを決定するようにしても良い。
【0087】
ステップS804において、制御部208は、ボトルネックを共有する受信装置に、ステップS803で決定された送信タイミングで再送要求を送信させるための再送要求制御パケットの生成を、RTCP生成部211に依頼する。そして、制御部208は、RTCP生成部211で生成された再送要求制御パケットを、ボトルネックを共有する受信装置へ送信させる。すなわち、制御部208は、同じデータの送信先であって、受信状況情報が対応する受信装置102、103に対し、エラーしたデータの再送要求を送信可能なタイミングを指定する。
【0088】
制御部208は、例えば、インターバル型で制御する場合、次回送信時刻12301000ミリ秒、インターバル33ミリ秒を指定する第1の再送要求制御パケットの生成をRTCP生成部211に依頼する。また、制御部208は、次回送信時刻12301015ミリ秒、インターバル33ミリ秒を指定した第2の再送要求制御パケットの生成をRTCP生成部211に依頼する。そして、制御部208は、第1の再送要求制御パケットを受信装置102へ送信させ、第2の再送要求制御パケットを受信装置103へ送信させる。
【0089】
また、制御部208は、例えば、待ち時間指定型で制御する場合、待ち時間を5ミリ秒とする第1の再送要求制御パケットと、待ち時間を20ミリ秒とする第2の再送要求制御パケットの生成をRTCP生成部211に依頼する。そして、制御部208は、第1の再送要求制御パケットを受信装置102へ送信させ、第2の再送要求制御パケットを受信装置103へ送信させる。また、制御部208は、受信装置による再送要求の送信タイミングを、時間列挙型で制御することも可能である。
【0090】
本形態の受信装置が送信する再送要求パケットの宛先には、マルチキャストアドレスが付加される。従って、例えば受信装置102が第1の動画パケットの再送要求パケットを送信すると、当該再送要求パケットは送信装置101だけでなく、受信装置103、104でも受信される。そして、受信装置103、104は、第1の動画パケットの再送要求パケットを受信すると、たとえ第1の動画パケットを正常に受信していなかったとしても、再送要求を送信しない。このようにすることで、同じ動画パケットの再送要求が、複数の受信装置から重複して送信されないようになる。
【0091】
次に、図9を用いて、受信装置による再送要求の送信タイミングを制御する処理について説明する。
【0092】
ステップS901において、RTCP解析部407は、送信装置101からRTCPパケットを受信する。そして、RTCP解析部407は、RTCPパケットが再送要求制御パケットであった場合、再送要求の送信タイミングを制御するための制御信号を取得して制御部409に通知する。
【0093】
ステップS902において、制御部409は、ステップS901でRTCP解析部407から通知された情報が、再送要求の送信タイミングを制御するための制御信号であるか否かを判定する。そして、制御部409は、再送要求の送信タイミングを制御するための制御信号であると判定された場合はステップS903に進み、再送要求の送信タイミングを制御するための制御信号でないと判定された場合はステップS904に進む。
【0094】
ステップS903において、制御部409は、ステップS901で通知された制御信号に基づいて、再送要求の送信タイミングの設定を変更する。制御部409は、例えば、インターバル型の制御信号を受けると、次回送信時刻を指定された値に設定すると共に、再送要求の送信インターバルを設定する。つまり、制御部409は、通知された制御信号に基づいて、セッション情報格納部410に格納されている再送要求の送信タイミングに関する情報を書き換える。
【0095】
図10に、本形態のセッション情報格納部410に格納される、再送要求の送信タイミングを管理するための管理テーブルの例である。図10に示すように、管理テーブルは、セッション番号1001、タイミング指定方式1002、タイミング指定値1003で構成される。本形態の受信装置は、再送要求の送信タイミングを、セッションごとに管理している。例えば、受信装置102は、送信装置101から、セッション番号1のセッションに基づいて、マルチキャストによる動画データを受信している。また、受信装置102は、送信装置101とは異なる送信装置から、セッション番号2のセッションに基づいて、動画データを受信している。
【0096】
次に、図11を用いて、本形態の受信装置の処理について説明する。図11の処理は、制御部409が、動画データのパケットロスを検知したことによって開始される。
【0097】
ステップS1101において、制御部409は、再送要求の送信可否を判定するための再送要求時間情報を、セッション情報格納部410から取得する。タイミング指定方式がインターバル型の場合、制御部409は、図10に示したタイミング指定値のうち、次回送信時刻を、再送要求時間情報として、セッション情報格納部410から取得する。なお、次回送信時刻は、ある時刻であっても、幅を持った期間であっても良い。また、タイミング指定方式が待ち時間指定型の場合、制御部409は、待ち時間のカウント値を、再送要求時間情報として、セッション情報格納部410から取得する。
【0098】
ステップS1102において、制御部409は、ステップS1101で取得された再送要求時間情報に基づいて、現在、再送要求を送信可能であるか否かを判定する。例えば、インターバル型の場合、制御部409は、現在時刻が、次回送信時刻に達したと判定された場合、再送要求を送信可能であると判定する。また、待ち時間指定型の場合、制御部409は、待ち時間のカウント値が、設定された待ち時間に達したと判定された場合、再送要求を送信可能であると判定する。再送要求を送信可能であると判定された場合はステップS1103に進み、制御部409は、再送要求を送信装置101へ送信させる。一方、ステップS1102において再送要求を送信可能でないと判定された場合はステップS1104に進み、制御部409は、再送要求の送信待ちをすると共に、他の受信装置から再送要求を受信したか否かを判定する。
【0099】
ステップS1104で、他の受信装置から再送要求を受信したと判定された場合はステップS1105に進み、制御部409は、受信した再送要求に対応する動画データの再送要求の送信を取り消す。
【0100】
例えば、受信装置102の制御部409は、同じ動画データをマルチキャストで受信中の受信装置103から、第1のパケットの再送要求を受信したことに応じて、ステップS1105で、第1のパケットの再送要求の送信を取り消す。
【0101】
このように、本実施形態の送信装置101は、マルチキャストによる同じ動画データの送信先である受信装置102、103、104のうち、ボトルネックを共有している受信装置102、103による再送要求の送信タイミングが一致しないように制御する。このようにすることで、複数の受信装置から、同じ動画パケットの再送要求が重複して送信される可能性を低減できる。また、マルチキャストの送信先であるすべての受信装置102、103、104による再送要求の送信タイミングが一致しないように制御されるよりも、各受信装置は、早いタイミングで再送要求を送信できる。
【0102】
つまり、他の受信装置とボトルネックを共有していない受信装置104は、動画データのパケットロスを検知すると、本形態で示すような待ち時間を設けることなく再送要求を送信するので、再送されたデータを早く受信できる。ただし、すべてのマルチキャストの送信先である受信装置102、103、104のそれぞれに対して、再送要求の送信タイミングが一致しないように制御することも可能である。
【0103】
ステップS1103で再送要求を送信するか、ステップS1105で再送要求の送信を取り消すと、ステップS1106に進み、制御部409は、再送要求時間情報を更新する。タイミング指定方式がインターバル型であった場合、制御部409は、ステップS1105で、前回送信時刻と次回送信時刻にインターバル値を加算する。また、タイミング指定方式が待ち時間指定型の場合、制御部409は、待ち時間のカウント値をリセットする。
【0104】
なお、第1、第2の実施形態の受信装置102は、受信状況情報のRTCPパケットに、送信装置101への指示を含めることができる。例えば、受信装置102の通信品質報告部412は、送信装置101に送信させる動画データを切り替える指示や送信装置101による動画データの送信を終了させるための指示を、受信状況情報のパケットの拡張領域に含めることができる。
【0105】
本形態の受信装置102は、送信装置101から指定された受信状況情報の送信タイミングに関わらず、送信装置101に対する指示を含む受信状況情報を送信できる。また、受信装置102は、受信状況情報の送信タイミングを指定された後に、送信装置101に対する指示を含む受信状況情報を送信する場合、受信状況に関する情報にはダミーデータを埋め込む。このようにすることにより、送信装置101は、複数の受信装置の受信状況が対応しているか否かなどの判断を精度良く行えると共に、受信装置は、送信装置101に対する指示を早いタイミングで通知することができる。
【0106】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、データの通信方法に関する。
【背景技術】
【0002】
近年、ネットワークを介した動画データの送受信が急増している。インターネットやLAN(Local Area Network)ネットワークでリアルタイムに動画データをストリーム送信する技術として、RTP(Real−time Transport Protocol)が一般的に用いられる。また、RTPを用いて動画ストリームを送受信する送信装置と受信装置との間では、RTPによるストリーム転送と並行して、動画ストリーム転送に関する情報の送受信が行われる。動画ストリーム転送に関する情報の送受信には、RTCP(Real−time Transport Control Protocol)が、よく用いられる。
【0003】
受信装置が送信装置に送信するRTCPデータには、受信状況情報(受信者レポート、Receiver Report)や、受信装置が受信に失敗したパケットの再送信要求などがある。また、送信装置が受信装置に送信するRTCPデータには、送信者レポート(Sender Report)などがある。
【0004】
受信状況情報には、例えば、受信装置による受信パケットの欠落率やパケット間隔ジッタが含まれる。送信装置は、受信装置から受け取る受信状況情報に基づいて動画データの送信レートや、前方誤り訂正(FEC、Forward Error Correction)データのレートを調整できる。
【0005】
特許文献1には、データの送信先からのデータ損失率情報に基づいて、その後の送信装置によるデータの送信レートを制御することが記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2001−320440号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、受信装置による受信状況情報の送信タイミングによっては、適切な通信制御ができない恐れがあった。
【0008】
例えば、受信装置による受信状況情報の送信間隔が長いと、ネットワークの通信状況の変化への対応が遅くなる。すなわち、ネットワーク上で輻輳が発生しても、その検知が遅れることにより、送信レートを下げる処理の開始が遅くなる恐れがあった。
【0009】
一方、受信装置による受信状況情報の送信間隔が短いと、受信状況情報の送受信にかかる負荷やネットワークのトラフィックが必要以上に大きくなってしまう恐れがあった。
【0010】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、受信装置にデータを送信する場合に、適切な通信制御ができるようにすることである。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明の通信装置は、例えば、以下の構成を有する。すなわち、ネットワークを介して受信装置にデータを送信する送信手段を有する通信装置であって、前記受信装置によるデータの受信状況を示す受信状況情報を前記受信装置から受信する受信手段と、前記受信手段により受信された受信状況情報に応じて、前記受信装置へのデータの送信レートを制御するレート制御手段と、前記受信手段により受信された受信状況情報に応じて、前記送信手段からのデータを受信中の前記受信装置による前記送信手段からのデータの受信状況を示す受信状況情報の送信を制御する送信制御手段とを有する。
【発明の効果】
【0012】
本発明によれば、受信装置にデータを送信する場合に、より適切な通信制御ができるようになる。
【図面の簡単な説明】
【0013】
【図1】送信装置と受信装置からなるネットワーク構成図
【図2】送信装置の機能構成図
【図3】受信状況情報の送信タイミング指示の例を示した図
【図4】受信装置の機能構成図
【図5】受信装置における受信状況情報の送信タイミングに関する情報の格納例を示した図
【図6】送信装置が受信状況情報の送信を制御する処理を説明するためのフローチャート
【図7】受信装置が受信状況情報の送信タイミングを決定する処理を説明するためのフローチャート
【図8】送信装置における再送要求の送信タイミングを制御する処理を説明するためのフローチャート
【図9】受信装置における再送要求の送信タイミングを決定する処理を説明するためのフローチャート
【図10】受信装置における再送要求タイミング指示情報の格納例を示した図
【図11】受信装置による再送要求の送信処理を説明するためのフローチャート
【発明を実施するための形態】
【0014】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【0015】
<実施形態1>
本実施形態では、動画データの送信装置が、受信装置からの受信状況情報(受信者レポート:RR)に応じて、受信装置による受信状況情報の送信を制御する例について説明する。受信状況情報は、受信装置によるデータの受信状況を示す情報である。本形態では、送信装置がネットワークを介して受信装置に動画データを送信する例について説明するが、送信されるデータは動画データに限らない。
【0016】
図1は本実施形態の送信装置と受信装置を含むシステムの全体の構成図である。動画データのストリーミング機能を有する送信装置101がネットワークを介して受信装置102〜104に接続している。送信装置101は、動画データを各受信装置に送信する動画ストリーミングサーバである。送信装置101は、動画データとその動画データに対するFECデータをRTPパケットで送信する。各受信装置は、正常に受信した動画パケット、及び、正常に受信したFECパケットを用いて、正常に受信できなかった動画パケットを復元できる。
【0017】
なお、本形態では、送信装置101が、各受信装置に異なるセッションで、動画データを送信する例について説明する。送信装置101は、各受信装置から、データの受信状況を示す受信状況情報を受信する。また、送信装置101は、各受信装置からの受信状況情報に応じて、動画データの送信レートを制御すると共に、各受信装置に対して、受信状況情報の送信を制御するためのパケット(送信制御パケット)をRTCPパケットで送信する。また、送信装置101は、受信装置から再送要求を受信すると、要求された動画パケットを再送信する。
【0018】
受信装置102〜104は共に送信装置101から動画データを受信するクライアントである。また、各受信装置は、動画データの受信状況を示す受信状況情報や、受信できなかった動画パケットの再送信要求を、RTCPパケットで送信装置101に送信する。
【0019】
通信経路105〜109は、実際には、様々な通信路と中継器で構成される。例えば、通信経路108は、無線の通信経路と有線の通信経路の組み合わせで構成される。送信装置101から各受信装置までのネットワーク帯域やパケットロス率はそれぞれ異なる。また、送信装置101から各受信装置までのパケットロス率や利用可能なネットワーク帯域は、それぞれ時間的に変動する。
【0020】
図2は本実施形態の送信装置101の機能構成を示すブロック図である。送信装置101は、動画格納部201、動画符号化部202、パケット生成部203、バッファ204、送信部205、通信インターフェース206を備える。また、送信装置101は、セッション情報格納部207、制御部208、FEC生成部209、パケット再送部210、RTCP生成部211、通信状況解析部212、RTCP解析部213、受信部214を備える。送信装置101は、通信インターフェース206を介して、通信経路105に接続される。動画符号化部202は、制御部208による符号化レートの指示に従い、動画格納部201の動画データを符号化する。パケット生成部203は、動画符号化部202による符号化済みの動画データを、ネットワーク送信する為のパケットデータに変換し、バッファ204に格納する。
【0021】
FEC生成部209は、制御部208によるFECレートの指示に従い、バッファ204に格納された動画パケットからFECパケットを生成し、送信部205に出力する。なお、FECレートは、動画データのパケット数に対するFECパケットのパケット数である。
【0022】
送信部205は、制御部208からの指示に応じて、セッション情報格納部207に記録されている各受信装置に対して、動画パケット、及び、FECパケットを送信する。
【0023】
受信部214は、動画データの送信先である各受信装置からのRTCPパケットを受信し、RTCP解析部213に出力する。受信部214が受信装置から受信するRTCPパケットには、受信状況情報や、再送要求パケットがある。RTCP解析部213は再送要求パケットを制御部208に出力し、受信状況情報を通信状況解析部212に出力する。
【0024】
RTCP解析部213から再送要求パケットを受信した制御部208は、再送信を要求されている動画パケットを送信部205を介して再送信させる。また、RTCP解析部213から受信状況情報を受信した通信状況解析部212は、受信状況情報から通信状況のパラメータを算出し、制御部208に通知する。
【0025】
本形態の受信状況情報には、セッションが開始されてから送信された動画パケットとFECパケット数の合計を示す総パケット数と、受信装置が正常に受信できなかったエラーパケットの総パケット数とが含まれている。通信状況解析部212は、受信状況情報に基づいて、所定期間ごとのエラー率を算出し、制御部208に通知する。
【0026】
制御部208は、通信状況解析部212から通知されたエラー率に基づいて、受信装置に対する送信レートを決定する。そして、制御部208は、決定した送信レートに基づいて、動画符号化部202に対して動画データの符号化レートを指示すると共に、FEC生成部209に対してFECレートを指示する。また、制御部208は、受信装置による受信状況情報の送信タイミングを決定する。そして、制御部208は、決定された受信状況情報の送信タイミングを受信装置に通知するためのRTCPパケット(送信制御パケット)の生成をRTCP生成部211に依頼し、生成された送信制御パケットを送信部205を介して受信装置に送信させる。
【0027】
すなわち、制御部208は、受信部214により受信された受信状況情報に応じて、送信部205からのデータを受信中の受信装置による送信部205からのデータの受信状況を示す受信状況情報の送信を制御する。
【0028】
図3は、送信装置101が受信装置に送信する送信制御パケットの指示内容の例である。図3(a)は、次回の送信時刻と、その後の送信インターバルを指示するタイプである。すなわち、制御部208は、送信部205を介して、受信状況情報の次回の送信時刻と、その後の送信間隔を指示するRTCPパケットを受信装置へ送信する。この例では、次回の送信時刻(12301500ミリ秒)、及び、それ以後の送信間隔(1500ミリ秒)が指示される。なお、本形態の制御部208は、受信状況情報の送信タイミングを、NTP(Network Time Protocol)のタイムスタンプで指示する。
【0029】
図3(b)は、次回の送信時刻を指示せず、送信インターバルのみを指示するタイプである。すなわち、制御部208は、送信部205を介して、受信状況情報の送信間隔を指示するRTCPパケットを受信装置へ送信する。この例では、送信間隔(4000ミリ秒)のみが指示される。
【0030】
図3(c)は、次回以降の送信時刻を列挙して指示するタイプである。すなわち、制御部208は、送信部205を介して、複数の受信状況情報の送信時刻を指示するRTCPパケットを受信装置へ送信する。この例では、5つの送信時刻が列挙されている。
【0031】
図3(d)は、受信状況情報の送信時刻を受信装置に決定させるタイプである。すなわち、制御部208は、送信部205を介して、受信状況情報の送信タイミングを受信装置に決定させることを指示するRTCPパケットを受信装置へ送信する。
【0032】
図4は本実施形態の受信装置102〜104の機能構成を示すブロック図である。受信装置は、受信部401、バッファ402、パケット結合部403、動画復号部404、表示部405、エラー測定部406、RTCP解析部407、FEC復号部408を備える。また、受信装置は、制御部409、セッション情報格納部410、再送要求部411、通信品質報告部412、送信部413、通信インターフェイス414を備える。受信装置は、通信インターフェイス414を介して、通信経路に接続される。
【0033】
受信部401は、通信インターフェイス414を介して受信した動画パケット及びFECパケットをバッファ402に保存する。また、受信部401は、受信したRTCPパケットをRTCP解析部407に出力する。本形態で受信されるRTCPパケットには、送信制御パケット(受信状況情報の送信を制御するためのパケット)や、ほかの受信装置によって送信された再送要求パケットがある。また、受信部401は受信した動画パケットのシーケンスナンバーをエラー測定部406に通知する。
【0034】
パケット結合部403は、バッファ402に保存された1つ以上の動画パケットの動画データを結合し、動画復号部404に出力する。動画復号部404は、結合された動画データを復号して表示部405に出力する。表示部405は、復号された動画データを表示する。
【0035】
エラー測定部406は、受信部401から通知されたシーケンスナンバーからエラーパケットのシーケンスナンバーを特定し、制御部409に通知する。
【0036】
制御部409は、エラー測定部406からの通知に応じて、エラーパケットが発生したことを通信品質報告部412に通知する。また、制御部409は、エラーパケットを、正常に受信された動画パケットとFECパケットを用いて復元可能であるか否かを判定し、復元可能であると判定されたエラーパケットの復元を、FEC復号部に依頼する。また、制御部409は、復元可能でないと判定されたエラーパケットのシーケンスナンバーを再送要求部411に通知する。
【0037】
ただし、制御部409は、復元可能でないと判定されたエラーパケットと同じパケットの再送要求パケットを、他の受信装置から受信した場合、当該エラーパケットのシーケンスナンバーを再送要求部411に通知しない。これにより、同じエラーパケットの再送要求パケットが重複して送られないようにすることができる。なお、本形態では、各受信装置はそれぞれ異なる動画データを受信しているので、復元可能でないと判定されたエラーパケットは、すべて再送要求される。
【0038】
FEC復号部408は、制御部409に復元を依頼されたエラーパケットの復元に必要となる動画パケット及びFECパケットをバッファ402から検索し、復元する。
【0039】
再送要求部411は、制御部409から通知されたシーケンスナンバーに基づいて、エラーパケットの再送信を依頼するRTCPパケットを作成し、送信部413を介して送信装置101に送信する。
【0040】
RTCP解析部407は、受信したRTCPパケットを解析し、解析結果を制御部409に通知する。本形態のRTCP解析部407は、送信制御パケットを解析し、図3のいずれのタイプであるかを判定する。そして、RTCP解析部407は、送信制御パケットのタイプに応じた受信状況情報の送信タイミングを、制御部409に通知する。
【0041】
RTCP解析部407からの通知を受けた制御部409は、受信状況情報の送信タイミングを、セッション情報格納部410に記録する。
【0042】
図5は、セッション情報格納部410に格納される、受信状況情報の送信タイミングを管理するための管理テーブルの例である。図5に示すように、管理テーブルは、受信セッション番号501と前回送信時刻502と送信タイミング指定形式503と送信タイミング指定値504で構成される。本形態の受信装置は、受信状況情報の送信タイミングを、セッションごとに管理している。例えば、受信装置102は、送信装置101から、セッション番号1のセッションに基づいて第1の動画データを受信すると共に、送信装置101とは別の送信装置から、セッション番号2のセッションに基づいて第2の動画データを受信している。
【0043】
つまり、図5に示す管理テーブルを格納している受信装置102は、12302800ミリ秒に達したことに応じて、送信装置101に対して受信状況情報を送信し、その後、2500ミリ秒間隔で受信状況情報を送信する。また、受信装置102は、別の送信装置に対して、12301300ミリ秒に達したことに応じて受信状況情報を送信し、その後、12302100に達したことに応じて、次の受信状況情報を送信する。
【0044】
制御部409は、RTCP解析部407からの通知に応じて、セッション情報格納部410に格納される設定値を変更する。
【0045】
次に、図6を用いて、受信装置102〜104へ動画データを送信する送信装置101の処理について説明する。なお、図6のフローチャートの処理は、CPUがROMに格納されているプログラムを実行することにより、実現される。
【0046】
ステップS601(受信手順)において、受信部214が受信状況情報を受信装置から受信したことに応じて、通信状況解析部212は、受信状況情報の解析結果を制御部208に通知する。
【0047】
ステップS602において、制御部208は、複数の受信装置からの受信状況情報の解析結果に基づいて、複数の受信装置の受信状況が対応しているか否かを判定する。例えば、制御部208は、受信装置102から第1の受信状況情報を受信してから所定時間内に、受信装置103から第2の受信状況情報を受信した場合、第1、第2の受信状況情報が示す受信状況(例えばエラー率)が対応しているか判定する。さらに制御部208は、第2の受信状況情報の受信後に受信装置102から受信した第3の受信状況情報が示す受信状況と、第3の受信状況情報を受信してから所定時間内に受信装置103から受信した第4の受信状況情報が示す受信状況が対応しているか判定する。そして、制御部208は、第1、第2の受信状況情報が示す受信状況が対応し、且つ、第3、第4の受信状況情報が示す受信状況が対応すると判定される場合、受信装置102、103の受信状況が対応すると判定する。
【0048】
ステップS602において、複数の受信装置の受信状況が対応していると判定された場合はステップS604に進み、対応していないと判定された場合はステップS603に進む。
【0049】
なお、送信装置101が1つの受信装置にのみデータを送信している場合は、ステップS603に進む。
【0050】
ステップS603(レート制御手順)において、制御部208は、ステップS601で受信した受信状況情報の解析結果に応じて、受信装置に対する送信レートを決定する。例えば、制御部208は、エラー率が所定のエラー率よりも高い場合は送信レートを下げ、エラーが発生していない場合で、かつ、送信レートが目標レートに達していない場合は送信レートを上げる。
【0051】
ステップS614(送信制御手順)において、制御部208は、ステップS601で受信した受信状況情報の解析結果に応じて、受信状況情報の送信を制御するためのパケット(送信制御パケット)をRTCP生成部211に生成させる。そして、制御部208は、生成された送信制御パケットを送信部205を介して受信装置へ送信させる。
【0052】
本形態の制御部208は、エラー率が所定のエラー率よりも高い場合、送信レートを下げると共に、受信装置が、所定のエラー率よりも低かった場合よりも早いタイミング、かつ、短い間隔で受信状況情報を送信するように制御する。すなわち、制御部208は、受信状況情報が第1の受信状況(第1のエラー率)を示している場合、受信状況情報が第2の受信状況(第2のエラー率)を示している場合よりも早いタイミングで次の受信状況情報を送信させる。また、制御部208は、受信状況情報が第1の受信状況を示している場合は第1の期間の受信状況を示す受信状況情報を送信させ、受信状況情報が第2の受信状況を示している場合は第1の期間よりも短い第2の期間の受信状況を示す受信状況情報を送信させる。なお、第2の受信状況のエラー率(第2のエラー率)は、第1の受信状況のエラー率(第1のエラー率)よりも、エラーしたデータが少ない。
【0053】
また、制御部208は、エラー率が所定のエラー率よりも低く、かつ、送信レートが目標レートに達していない場合、送信レートを上げると共に、受信装置が、制御をしない場合よりも早いタイミングで次の受信状況情報を送信するように制御する。すなわち、制御部208は、受信状況情報が示すエラー情報に基づいて送信レートを上げた場合、送信レートを上げない場合よりも受信装置が早いタイミングで次の受信状況情報を送信するように制御する。受信状況情報が早いタイミングで送信されることにより、送信装置101は、通信状況をより早く知ることができる。
【0054】
また、制御部208は、エラー率が所定のエラー率よりも低く、かつ、送信レートが目標レートに達している場合、送信レートを変更しないと共に、受信装置が、制御をしない場合よりも遅いタイミングで次の受信状況情報が送信されるように制御する。また、この場合、制御部208は、次回以降の受信状況情報の送信間隔が長くなるように制御する。受信状況情報の送信回数を少なくすることにより、受信状況情報の送受信にかかる負荷やネットワークの負荷を低減できる。
【0055】
ステップS602で、受信装置102、103の受信状況が対応していると判定された場合、ステップS604において、制御部208は、受信装置102、103に対して、一致する期間の受信状況を示す受信状況情報を送信させる。例えば、制御部208は、次回送信時刻12303500ミリ秒、インターバル1000ミリ秒を指定した送信制御パケットをRTCP生成部211に生成させ、それを受信装置102、103のそれぞれへ送信させる。これにより、受信装置102、103は、それぞれ同じタイミングで受信状況情報を送信するようになる。
【0056】
すなわち、制御部208は、第1の受信状況情報を送信した受信装置102と、第1の受信状況情報に受信状況が対応する第2の受信状況情報を送信した受信装置103とに、一致するタイミングで受信状況情報を送信させる。第2の受信状況情報は、第1の受信状況情報を受信してから、所定時間内に送信装置101によって受信された受信状況情報である。
【0057】
また、ステップS604において、制御部208は、受信装置102、103に一致する期間の受信状況情報を送信させる前よりも、受信状況情報の送信間隔を短くさせる。このようにすることで、受信装置102、103の受信状況の比較を、より精度良く行うことができる。
【0058】
なお、本形態では、ステップS602で受信状況が対応していると判定された場合に、一致する期間の受信状況情報を送信させる例について説明したが、ステップS602の判定をすることなく、一致する期間の受信状況情報を送信させることも可能である。
【0059】
ステップS605において、制御部208は、複数の受信装置102、103から、一致する期間の受信状況情報を受信する。
【0060】
ステップS606において、制御部208は、ステップS605で受信された受信状況情報に基づいて、複数の受信装置102、103がボトルネックを共有しているか否かを判定する。すなわち、制御部208は、複数の受信装置102、103のそれぞれから、一致する期間の受信状況情報を、複数個、受信し、それらのエラー率の変動が対応しているか否かを判定する。例えば、受信装置102、103からの受信状況情報により、受信装置102、103の第1の期間のエラー率が5%、第2の期間のエラー率が7%、第3の期間のエラー率が10%で一致する場合、ボトルネックを共有していると判定される。また、例えば、第1、第2の期間のエラー率が一致し、第3の期間のエラー率は1%の差異があった場合も、受信装置102、103がボトルネックを共有していると判定される。
【0061】
ステップS606で、複数の受信装置102、103がボトルネックを共有していると判定された場合はステップS609に進み、ボトルネックを共有していないと判定された場合はステップS607に進む。
【0062】
ステップS607において、制御部208は、ステップS603と同様に、各受信装置から受信した受信状況情報の解析結果に基づいて、データの送信レートを制御する。すなわち、制御部208は、受信装置102からの受信状況情報に基づいて受信装置102へのデータの送信レートを制御し、受信装置103からの受信状況情報に基づいて受信装置103へのデータの送信レートを制御する。そして、ステップS608において、制御部208は、受信装置102、103にそれぞれ異なるタイミングで受信状況情報を送信させると共に、受信状況情報の送信間隔を長くさせる。このように、ボトルネックを共有しないと判定された受信装置からの受信状況情報を、異なるタイミングで送信させることにより、複数の受信装置から同時に受信状況情報を受信するよりも、送信レートの制御やネットワークの負荷を時間的に平準化できる。
【0063】
ステップS609において、制御部208は、受信装置102、103に受信状況情報を交互に送信させる。すなわち、制御部208は、受信装置102、103に一致するタイミングで送信させた受信状況情報が対応する場合、受信装置102、103に、受信状況情報を交互に送信させる。
【0064】
例えば、制御部208は、次回送信時刻12308500ミリ秒、インターバル2000ミリ秒を指定した第1の送信制御パケットをRTCP生成部211に生成させ、それを受信装置102に送信させる。また、制御部208は、例えば、次回送信時刻12309500ミリ秒、インターバル2000ミリ秒を指定した第2の送信制御パケットをRTCP生成部に生成させ、それを受信装置103に送信させる。なお、制御部208は、ステップS604で、受信装置102、103に、それぞれ1000ミリ秒間隔で受信状況情報を送信させている。
【0065】
送信装置101から第1の送信制御パケットを受信した受信装置102は、時刻12308500、12310500、12312500・・・に、送信装置101に対して受信状況情報を送信する。また、送信装置101から第2の送信制御パケットを受信した受信装置103は、時刻12309500、12311500、12313500・・・に、送信装置101に対して受信状況情報を送信する。
【0066】
すなわち、制御部208は、受信装置102、103に受信状況情報を交互に送信させる前よりも、受信装置102による受信状況情報の送信間隔と、受信装置103による受信状況情報の送信間隔とを、それぞれ長くさせる。
【0067】
このように、送信装置101は、受信装置102、103に受信状況情報を交互に送信させると共に、送信間隔を長くする。このようにすることで、受信状況情報の送受信の負荷やネットワークの負荷を低減しつつ、送信装置101は、ボトルネックの通信状況を短い間隔で(1000ミリ秒ごとに)確認できる。
【0068】
ステップS610において、制御部208は、受信装置102、103から交互に送信されてくる受信状況情報に基づいて、受信装置102、103へのデータの送信レートをまとめて制御する。例えば、制御部208は、ボトルネックを共有していると判定された受信装置102、103のそれぞれに設定された優先度を取得する。そして、制御部208は、受信装置102、103の受信状況に応じて、送信レートの合計値を決定し、さらに、受信装置102、103の優先度に応じて、受信装置102への第1の送信レートと、受信装置103への第2の送信レートをそれぞれ決定する。これにより、ボトルネックを共有している受信装置102、103のうち、受信装置103よりも優先度が高い受信装置102への送信レートが、受信装置103よりも高く決定される。
【0069】
ステップS612において、制御部208は、受信装置102、103から交互に送信されてくる受信状況情報に基づいて、受信装置102、103がボトルネックを共有しているか否かを判定する。すなわち、通信状況解析部212が各受信装置からの受信状況情報に基づいて、エラー率の変動を算出し、制御部208に通知する。そして、制御部208は、通信状況解析部212による算出結果に基づいて、受信装置102、103がボトルネックを共有しているか否かを判定する。この判定は、ステップS606と同様に行う。
【0070】
ステップS612において、受信装置102、103がボトルネックを共有していると判定された場合はステップS610に戻り、制御部208は、受信装置102、103の送信レートをまとめて制御する。一方、受信装置102、103がボトルネックを共有していないと判定された場合はステップS613に進み、制御部208は、受信装置102、103に異なるタイミングで受信状況情報を送信させる。
【0071】
このように、ボトルネックを共有していない受信装置に異なるタイミングで受信状況情報を送信させることにより、受信状況情報によるネットワークの負荷や、受信状況情報に応じた送信レート制御などの負荷を時間的に平準化することができる。
【0072】
次に、図7のフローチャートを用いて受信装置102〜104の制御部409が受信状況情報の送信タイミングを決定する処理について説明する。
【0073】
ステップS701(受信手順)において、RTCP解析部407は、送信装置101からRTCPパケットを受信する。そして、RTCP解析部407は、RTCPパケットが送信制御パケットであった場合、受信状況情報の送信タイミングを制御するための制御信号を取得して制御部409に通知する。なお、ステップS701でRTCP解析部407が送信制御パケットを受信するということは、それ以前に、少なくとも1つ以上の受信状況情報が送信装置101に送信されている(送信手順)。
【0074】
ステップ702において、制御部409は、ステップS701でRTCP解析部407から通知された情報が、受信状況情報の送信タイミングを制御するための制御信号であるか否かを判定する。ステップS701で通知された情報が受信状況情報の送信タイミングを制御するための制御信号であると判定された場合、ステップS703に進み、受信状況情報の送信タイミングを制御するための制御信号でないと判定された場合、ステップS704に進む。
【0075】
ステップS703(制御手順)において、制御部409は、ステップS701で通知された制御信号に基づいて、受信状況情報の送信タイミングの設定を変更する。制御部409は、図3(a)に示すような内容を含む制御信号を受けると、次回送信時刻を指定された値に設定すると共に、受信状況情報の送信インターバルを設定する。つまり、制御部409は、通知された制御信号に基づいて、図5に示したような、セッション情報格納部410に格納されている情報を書き換える。
【0076】
すなわち、制御部409は、受信状況情報が送信された後に受信された制御信号に応じて、制御信号の受信後に受信したデータの受信状況を示す受信状況情報の送信を制御する。
【0077】
ステップS407において、制御部409は、受信したRTCPパケットに基づく処理のうち、受信状況情報の送信タイミング以外の処理を行う。例えば、RTCPパケットとして再送要求パケットを受信した場合、制御部409は、ステップS407でパケットの再送処理を行う。
【0078】
<実施形態2>
次に第2の実施形態について、実施形態1との差異を中心に説明する。本実施形態では、受信装置102〜104に対して、同じ動画データをマルチキャスト送信する送信装置101が、受信装置に対して再送信要求の送信タイミングを指示する例について説明する。
【0079】
本実施形態の送信装置101と受信装置102〜104の構成は、実施形態1と同様である。更に、本実施形態の制御部208は、RTCP生成部211に対して、再送要求制御パケットの作成を依頼する。また、制御部208は、RTCP生成部211により生成された再送要求制御パケットを、送信部205を介して受信装置に送信させる。
【0080】
再送要求制御パケットは、受信装置に対して再送要求を送信可能なタイミングを指定するためのパケットである。受信装置は、動画データのパケットロスがあった場合、再送要求制御パケットで指定されたタイミングまで再送要求の送信を待つ。
【0081】
本形態の制御部208が再送要求の送信タイミングの指定方法として、例えば、インターバル型、時間列挙型、待ち時間指定型がある。インターバル型では、次回送信時刻(例えば12300010ミリ秒)とインターバル(例えば33ミリ秒)が指定される。また、時間列挙型では、列挙数(例えば5)、送信時刻(12301010ミリ秒、12301043ミリ秒、12301076ミリ秒、12301109ミリ秒、12301132ミリ秒)が指定される。また、待ち時間指定型では、待ち時間(例えば10ミリ秒)が指定される。待ち時間指定型の再送制御パケットを受信した受信装置は、動画データのパケットロスを検知してから10ミリ秒待って、再送要求パケットを送信装置101に送信する。なお、受信装置は、10ミリ秒の待ち時間中に、ロスしたパケットの再送要求パケットを他の受信装置から受信した場合、再送要求パケットを送信しない。また、本形態では、再送要求の送信タイミングをNTPのタイムスタンプで指示する例について説明しているが、ほかの指示方法を用いても良い。
【0082】
次に、図8を用いて、本実施形態の制御部208が、受信装置による再送要求の送信タイミングを制御する処理を説明する。
【0083】
ステップS801において、制御部208は、各受信装置102〜104からの受信状況情報に基づいて通信状況解析部212によって算出された解析結果(例えば所定期間ごとのエラー率)を受信する。
【0084】
ステップS802において、制御部208は、ステップS801で受信した解析結果に基づいて、各受信装置がボトルネックを共有しているか否かを判定する。ステップS801、S802の処理は、図6のステップS601〜S606の処理に対応する。ステップS802で受信装置がボトルネックを共有していると判定された場合はステップS803に進み、ボトルネックを共有していないと判定された場合は本形態の処理を終了する。この説明では、送信装置101によるマルチキャストでの動画データの送信先である受信装置102〜104のうち、受信装置102、103がボトルネックを共有していると判定されたとする。
【0085】
ステップS803において、制御部208は、ボトルネックを共有していると判定された受信装置102、103による再送要求の送信タイミング決定する。例えば、制御部208は、インターバル型で制御する場合、ボトルネックを共有している複数の受信装置のうち、より処理能力の高い受信装置のインターバルの値を小さく、処理能力の低い受信装置のインターバルの値を大きく設定する。これにより、処理能力の高い受信装置にできるだけ多くの再送要求を送信させることができる。
【0086】
ただし、このようなインターバルの決定方法に限らず、例えば、マルチキャストグループに加入した順序に基づいて、インターバルを決定するようにしても良い。また、例えば、各受信装置の優先度や、ユーザによる指定に基づいて、インターバルを決定するようにしても良い。
【0087】
ステップS804において、制御部208は、ボトルネックを共有する受信装置に、ステップS803で決定された送信タイミングで再送要求を送信させるための再送要求制御パケットの生成を、RTCP生成部211に依頼する。そして、制御部208は、RTCP生成部211で生成された再送要求制御パケットを、ボトルネックを共有する受信装置へ送信させる。すなわち、制御部208は、同じデータの送信先であって、受信状況情報が対応する受信装置102、103に対し、エラーしたデータの再送要求を送信可能なタイミングを指定する。
【0088】
制御部208は、例えば、インターバル型で制御する場合、次回送信時刻12301000ミリ秒、インターバル33ミリ秒を指定する第1の再送要求制御パケットの生成をRTCP生成部211に依頼する。また、制御部208は、次回送信時刻12301015ミリ秒、インターバル33ミリ秒を指定した第2の再送要求制御パケットの生成をRTCP生成部211に依頼する。そして、制御部208は、第1の再送要求制御パケットを受信装置102へ送信させ、第2の再送要求制御パケットを受信装置103へ送信させる。
【0089】
また、制御部208は、例えば、待ち時間指定型で制御する場合、待ち時間を5ミリ秒とする第1の再送要求制御パケットと、待ち時間を20ミリ秒とする第2の再送要求制御パケットの生成をRTCP生成部211に依頼する。そして、制御部208は、第1の再送要求制御パケットを受信装置102へ送信させ、第2の再送要求制御パケットを受信装置103へ送信させる。また、制御部208は、受信装置による再送要求の送信タイミングを、時間列挙型で制御することも可能である。
【0090】
本形態の受信装置が送信する再送要求パケットの宛先には、マルチキャストアドレスが付加される。従って、例えば受信装置102が第1の動画パケットの再送要求パケットを送信すると、当該再送要求パケットは送信装置101だけでなく、受信装置103、104でも受信される。そして、受信装置103、104は、第1の動画パケットの再送要求パケットを受信すると、たとえ第1の動画パケットを正常に受信していなかったとしても、再送要求を送信しない。このようにすることで、同じ動画パケットの再送要求が、複数の受信装置から重複して送信されないようになる。
【0091】
次に、図9を用いて、受信装置による再送要求の送信タイミングを制御する処理について説明する。
【0092】
ステップS901において、RTCP解析部407は、送信装置101からRTCPパケットを受信する。そして、RTCP解析部407は、RTCPパケットが再送要求制御パケットであった場合、再送要求の送信タイミングを制御するための制御信号を取得して制御部409に通知する。
【0093】
ステップS902において、制御部409は、ステップS901でRTCP解析部407から通知された情報が、再送要求の送信タイミングを制御するための制御信号であるか否かを判定する。そして、制御部409は、再送要求の送信タイミングを制御するための制御信号であると判定された場合はステップS903に進み、再送要求の送信タイミングを制御するための制御信号でないと判定された場合はステップS904に進む。
【0094】
ステップS903において、制御部409は、ステップS901で通知された制御信号に基づいて、再送要求の送信タイミングの設定を変更する。制御部409は、例えば、インターバル型の制御信号を受けると、次回送信時刻を指定された値に設定すると共に、再送要求の送信インターバルを設定する。つまり、制御部409は、通知された制御信号に基づいて、セッション情報格納部410に格納されている再送要求の送信タイミングに関する情報を書き換える。
【0095】
図10に、本形態のセッション情報格納部410に格納される、再送要求の送信タイミングを管理するための管理テーブルの例である。図10に示すように、管理テーブルは、セッション番号1001、タイミング指定方式1002、タイミング指定値1003で構成される。本形態の受信装置は、再送要求の送信タイミングを、セッションごとに管理している。例えば、受信装置102は、送信装置101から、セッション番号1のセッションに基づいて、マルチキャストによる動画データを受信している。また、受信装置102は、送信装置101とは異なる送信装置から、セッション番号2のセッションに基づいて、動画データを受信している。
【0096】
次に、図11を用いて、本形態の受信装置の処理について説明する。図11の処理は、制御部409が、動画データのパケットロスを検知したことによって開始される。
【0097】
ステップS1101において、制御部409は、再送要求の送信可否を判定するための再送要求時間情報を、セッション情報格納部410から取得する。タイミング指定方式がインターバル型の場合、制御部409は、図10に示したタイミング指定値のうち、次回送信時刻を、再送要求時間情報として、セッション情報格納部410から取得する。なお、次回送信時刻は、ある時刻であっても、幅を持った期間であっても良い。また、タイミング指定方式が待ち時間指定型の場合、制御部409は、待ち時間のカウント値を、再送要求時間情報として、セッション情報格納部410から取得する。
【0098】
ステップS1102において、制御部409は、ステップS1101で取得された再送要求時間情報に基づいて、現在、再送要求を送信可能であるか否かを判定する。例えば、インターバル型の場合、制御部409は、現在時刻が、次回送信時刻に達したと判定された場合、再送要求を送信可能であると判定する。また、待ち時間指定型の場合、制御部409は、待ち時間のカウント値が、設定された待ち時間に達したと判定された場合、再送要求を送信可能であると判定する。再送要求を送信可能であると判定された場合はステップS1103に進み、制御部409は、再送要求を送信装置101へ送信させる。一方、ステップS1102において再送要求を送信可能でないと判定された場合はステップS1104に進み、制御部409は、再送要求の送信待ちをすると共に、他の受信装置から再送要求を受信したか否かを判定する。
【0099】
ステップS1104で、他の受信装置から再送要求を受信したと判定された場合はステップS1105に進み、制御部409は、受信した再送要求に対応する動画データの再送要求の送信を取り消す。
【0100】
例えば、受信装置102の制御部409は、同じ動画データをマルチキャストで受信中の受信装置103から、第1のパケットの再送要求を受信したことに応じて、ステップS1105で、第1のパケットの再送要求の送信を取り消す。
【0101】
このように、本実施形態の送信装置101は、マルチキャストによる同じ動画データの送信先である受信装置102、103、104のうち、ボトルネックを共有している受信装置102、103による再送要求の送信タイミングが一致しないように制御する。このようにすることで、複数の受信装置から、同じ動画パケットの再送要求が重複して送信される可能性を低減できる。また、マルチキャストの送信先であるすべての受信装置102、103、104による再送要求の送信タイミングが一致しないように制御されるよりも、各受信装置は、早いタイミングで再送要求を送信できる。
【0102】
つまり、他の受信装置とボトルネックを共有していない受信装置104は、動画データのパケットロスを検知すると、本形態で示すような待ち時間を設けることなく再送要求を送信するので、再送されたデータを早く受信できる。ただし、すべてのマルチキャストの送信先である受信装置102、103、104のそれぞれに対して、再送要求の送信タイミングが一致しないように制御することも可能である。
【0103】
ステップS1103で再送要求を送信するか、ステップS1105で再送要求の送信を取り消すと、ステップS1106に進み、制御部409は、再送要求時間情報を更新する。タイミング指定方式がインターバル型であった場合、制御部409は、ステップS1105で、前回送信時刻と次回送信時刻にインターバル値を加算する。また、タイミング指定方式が待ち時間指定型の場合、制御部409は、待ち時間のカウント値をリセットする。
【0104】
なお、第1、第2の実施形態の受信装置102は、受信状況情報のRTCPパケットに、送信装置101への指示を含めることができる。例えば、受信装置102の通信品質報告部412は、送信装置101に送信させる動画データを切り替える指示や送信装置101による動画データの送信を終了させるための指示を、受信状況情報のパケットの拡張領域に含めることができる。
【0105】
本形態の受信装置102は、送信装置101から指定された受信状況情報の送信タイミングに関わらず、送信装置101に対する指示を含む受信状況情報を送信できる。また、受信装置102は、受信状況情報の送信タイミングを指定された後に、送信装置101に対する指示を含む受信状況情報を送信する場合、受信状況に関する情報にはダミーデータを埋め込む。このようにすることにより、送信装置101は、複数の受信装置の受信状況が対応しているか否かなどの判断を精度良く行えると共に、受信装置は、送信装置101に対する指示を早いタイミングで通知することができる。
【0106】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
送信手段によりネットワークを介して受信装置にデータを送信する通信装置であって、
前記受信装置によるデータの受信状況を示す受信状況情報を前記受信装置から受信する受信手段と、
前記受信手段により受信された受信状況情報に応じて、前記受信装置へのデータの送信レートを制御するレート制御手段と、
前記受信手段により受信された受信状況情報に応じて、前記送信手段からのデータを受信中の前記受信装置による前記送信手段からのデータの受信状況を示す受信状況情報の送信を制御する送信制御手段と
を有することを特徴とする通信装置。
【請求項2】
前記送信制御手段は、前記受信手段により受信された受信状況情報が第1の受信状況を示している場合、前記受信手段により受信された受信状況情報が前記第1の受信状況よりもエラーしたデータが少ない第2の受信状況を示している場合よりも早いタイミングで前記受信装置に次の受信状況情報を送信させることを特徴とする請求項1記載の通信装置。
【請求項3】
前記送信制御手段は、前記受信手段により受信された受信状況情報が第1の受信状況を示している場合、前記受信装置に第1の期間の受信状況を示す受信状況情報を送信させ、
前記受信手段により受信された受信状況情報が前記第1の受信状況よりもエラーしたデータが多い第2の受信状況を示している場合、前記受信装置に前記第1の期間よりも短い第2の期間の受信状況を示す受信状況情報を送信させることを特徴とする請求項1記載の通信装置。
【請求項4】
前記送信制御手段は、複数の受信装置に一致する期間の受信状況を示す受信状況情報を送信させることを特徴とする請求項1乃至3のうち、いずれか1項記載の通信装置。
【請求項5】
前記送信制御手段は、第1の受信状況情報を送信した第1の受信装置と、第1の受信状況情報の後に受信した第2の受信状況情報であって、前記第1の受信状況情報に受信状況が対応する第2の受信状況情報を送信した第2の受信装置とに、一致するタイミングで受信状況情報を送信させることを特徴とする請求項4記載の通信装置。
【請求項6】
前記送信制御手段は、前記第1、第2の受信装置に一致するタイミングで受信状況情報を送信させる前よりも、前記第1、第2の受信装置による受信状況情報の送信間隔を短くさせる
ことを特徴とする請求項5記載の通信装置。
【請求項7】
前記送信制御手段が前記第1、第2の受信装置に一致するタイミングで送信させた受信状況情報が対応する場合、前記送信制御手段は、前記第1、第2の受信装置に、受信状況情報を交互に送信させることを特徴とする請求項5又は6記載の通信装置。
【請求項8】
前記送信制御手段は、前記第1、第2の受信装置に受信状況情報を交互に送信させる前よりも、前記第1の受信装置による受信状況情報の送信間隔と、前記第2の受信装置による受信状況情報の送信間隔とを、それぞれ長くさせることを特徴とする請求項7記載の通信装置。
【請求項9】
前記ネットワークを介して接続される受信装置の優先度を取得する取得手段と、
受信状況情報が対応する前記第1、第2の受信装置のそれぞれの優先度と、前記受信状況情報が示す受信状況とに基づいて、前記第1の受信装置に対する第1の送信レートと、前記第2の受信装置に対する第2の送信レートとを決定する決定手段と
を有することを特徴とする請求項7又は8記載の通信装置。
【請求項10】
同じデータの送信先であって、前記受信状況情報が対応する前記第1、第2の受信装置に対し、エラーしたデータの再送要求を送信可能なタイミングを指定する指定手段を有することを特徴とする請求項7乃至9のうち、いずれか1項記載の通信装置。
【請求項11】
送信手段によりネットワークを介して受信装置にデータを送信する通信装置が行う通信方法であって、
前記受信装置によるデータの受信状況を示す受信状況情報を前記受信装置から受信する受信工程と、
前記受信工程により受信された受信状況情報に応じて、前記受信装置へのデータの送信レートを制御するレート制御工程と、
前記受信工程により受信された受信状況情報に応じて、前記送信手段からのデータを受信中の前記受信装置による前記送信手段からのデータの受信状況を示す受信状況情報の送信を制御する送信制御工程と
を有することを特徴とする通信方法。
【請求項12】
送信手段によりネットワークを介して受信装置にデータを送信するコンピュータであって、
前記受信装置によるデータの受信状況を示す受信状況情報を前記受信装置から受信する受信手順と、
前記受信手順により受信された受信状況情報に応じて、前記受信装置へのデータの送信レートを制御するレート制御手順とを実行するコンピュータに、
前記受信手順により受信された受信状況情報に応じて、前記送信手段からのデータを受信中の前記受信装置による前記送信手段からのデータの受信状況を示す受信状況情報の送信を制御する送信制御手順を実行させることを特徴とするプログラム。
【請求項13】
送信装置が送信したデータをネットワークを介して受信する通信装置であって、
前記送信装置に、データの受信状況を示す受信状況情報を送信する送信手段と、
前記送信装置から、データの受信状況を示す受信状況情報の送信を制御する制御信号を受信する受信手段と、
前記送信手段により受信状況情報が送信されたあとに前記受信手段により受信された制御信号に応じて、当該制御信号の受信後に受信したデータの受信状況を示す受信状況情報の送信を制御する制御手段と
を有することを特徴とする通信装置。
【請求項14】
送信装置が送信したデータをネットワークを介して受信する通信装置が行う通信方法であって、
前記送信装置に、データの受信状況を示す受信状況情報を送信する送信工程と、
前記送信装置から、データの受信状況を示す受信状況情報の送信を制御する制御信号を受信する受信工程と、
前記送信工程により受信状況情報が送信されたあとに前記受信工程により受信された制御信号に応じて、当該制御信号の受信後に受信したデータの受信状況を示す受信状況情報の送信を制御する制御工程と
を有することを特徴とする通信方法。
【請求項15】
送信装置が送信したデータをネットワークを介して受信するコンピュータであって、
前記送信装置に、データの受信状況を示す受信状況情報を送信する送信手順と、
前記送信装置から、データの受信状況を示す受信状況情報の送信を制御する制御信号を受信する受信手順とを実行するコンピュータに、
前記送信手順により受信状況情報が送信されたあとに前記受信手順により受信された制御信号に応じて、当該制御信号の受信後に受信したデータの受信状況を示す受信状況情報の送信を制御する制御手順を実行させることを特徴とするプログラム。
【請求項1】
送信手段によりネットワークを介して受信装置にデータを送信する通信装置であって、
前記受信装置によるデータの受信状況を示す受信状況情報を前記受信装置から受信する受信手段と、
前記受信手段により受信された受信状況情報に応じて、前記受信装置へのデータの送信レートを制御するレート制御手段と、
前記受信手段により受信された受信状況情報に応じて、前記送信手段からのデータを受信中の前記受信装置による前記送信手段からのデータの受信状況を示す受信状況情報の送信を制御する送信制御手段と
を有することを特徴とする通信装置。
【請求項2】
前記送信制御手段は、前記受信手段により受信された受信状況情報が第1の受信状況を示している場合、前記受信手段により受信された受信状況情報が前記第1の受信状況よりもエラーしたデータが少ない第2の受信状況を示している場合よりも早いタイミングで前記受信装置に次の受信状況情報を送信させることを特徴とする請求項1記載の通信装置。
【請求項3】
前記送信制御手段は、前記受信手段により受信された受信状況情報が第1の受信状況を示している場合、前記受信装置に第1の期間の受信状況を示す受信状況情報を送信させ、
前記受信手段により受信された受信状況情報が前記第1の受信状況よりもエラーしたデータが多い第2の受信状況を示している場合、前記受信装置に前記第1の期間よりも短い第2の期間の受信状況を示す受信状況情報を送信させることを特徴とする請求項1記載の通信装置。
【請求項4】
前記送信制御手段は、複数の受信装置に一致する期間の受信状況を示す受信状況情報を送信させることを特徴とする請求項1乃至3のうち、いずれか1項記載の通信装置。
【請求項5】
前記送信制御手段は、第1の受信状況情報を送信した第1の受信装置と、第1の受信状況情報の後に受信した第2の受信状況情報であって、前記第1の受信状況情報に受信状況が対応する第2の受信状況情報を送信した第2の受信装置とに、一致するタイミングで受信状況情報を送信させることを特徴とする請求項4記載の通信装置。
【請求項6】
前記送信制御手段は、前記第1、第2の受信装置に一致するタイミングで受信状況情報を送信させる前よりも、前記第1、第2の受信装置による受信状況情報の送信間隔を短くさせる
ことを特徴とする請求項5記載の通信装置。
【請求項7】
前記送信制御手段が前記第1、第2の受信装置に一致するタイミングで送信させた受信状況情報が対応する場合、前記送信制御手段は、前記第1、第2の受信装置に、受信状況情報を交互に送信させることを特徴とする請求項5又は6記載の通信装置。
【請求項8】
前記送信制御手段は、前記第1、第2の受信装置に受信状況情報を交互に送信させる前よりも、前記第1の受信装置による受信状況情報の送信間隔と、前記第2の受信装置による受信状況情報の送信間隔とを、それぞれ長くさせることを特徴とする請求項7記載の通信装置。
【請求項9】
前記ネットワークを介して接続される受信装置の優先度を取得する取得手段と、
受信状況情報が対応する前記第1、第2の受信装置のそれぞれの優先度と、前記受信状況情報が示す受信状況とに基づいて、前記第1の受信装置に対する第1の送信レートと、前記第2の受信装置に対する第2の送信レートとを決定する決定手段と
を有することを特徴とする請求項7又は8記載の通信装置。
【請求項10】
同じデータの送信先であって、前記受信状況情報が対応する前記第1、第2の受信装置に対し、エラーしたデータの再送要求を送信可能なタイミングを指定する指定手段を有することを特徴とする請求項7乃至9のうち、いずれか1項記載の通信装置。
【請求項11】
送信手段によりネットワークを介して受信装置にデータを送信する通信装置が行う通信方法であって、
前記受信装置によるデータの受信状況を示す受信状況情報を前記受信装置から受信する受信工程と、
前記受信工程により受信された受信状況情報に応じて、前記受信装置へのデータの送信レートを制御するレート制御工程と、
前記受信工程により受信された受信状況情報に応じて、前記送信手段からのデータを受信中の前記受信装置による前記送信手段からのデータの受信状況を示す受信状況情報の送信を制御する送信制御工程と
を有することを特徴とする通信方法。
【請求項12】
送信手段によりネットワークを介して受信装置にデータを送信するコンピュータであって、
前記受信装置によるデータの受信状況を示す受信状況情報を前記受信装置から受信する受信手順と、
前記受信手順により受信された受信状況情報に応じて、前記受信装置へのデータの送信レートを制御するレート制御手順とを実行するコンピュータに、
前記受信手順により受信された受信状況情報に応じて、前記送信手段からのデータを受信中の前記受信装置による前記送信手段からのデータの受信状況を示す受信状況情報の送信を制御する送信制御手順を実行させることを特徴とするプログラム。
【請求項13】
送信装置が送信したデータをネットワークを介して受信する通信装置であって、
前記送信装置に、データの受信状況を示す受信状況情報を送信する送信手段と、
前記送信装置から、データの受信状況を示す受信状況情報の送信を制御する制御信号を受信する受信手段と、
前記送信手段により受信状況情報が送信されたあとに前記受信手段により受信された制御信号に応じて、当該制御信号の受信後に受信したデータの受信状況を示す受信状況情報の送信を制御する制御手段と
を有することを特徴とする通信装置。
【請求項14】
送信装置が送信したデータをネットワークを介して受信する通信装置が行う通信方法であって、
前記送信装置に、データの受信状況を示す受信状況情報を送信する送信工程と、
前記送信装置から、データの受信状況を示す受信状況情報の送信を制御する制御信号を受信する受信工程と、
前記送信工程により受信状況情報が送信されたあとに前記受信工程により受信された制御信号に応じて、当該制御信号の受信後に受信したデータの受信状況を示す受信状況情報の送信を制御する制御工程と
を有することを特徴とする通信方法。
【請求項15】
送信装置が送信したデータをネットワークを介して受信するコンピュータであって、
前記送信装置に、データの受信状況を示す受信状況情報を送信する送信手順と、
前記送信装置から、データの受信状況を示す受信状況情報の送信を制御する制御信号を受信する受信手順とを実行するコンピュータに、
前記送信手順により受信状況情報が送信されたあとに前記受信手順により受信された制御信号に応じて、当該制御信号の受信後に受信したデータの受信状況を示す受信状況情報の送信を制御する制御手順を実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−166380(P2011−166380A)
【公開日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願番号】特願2010−25865(P2010−25865)
【出願日】平成22年2月8日(2010.2.8)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願日】平成22年2月8日(2010.2.8)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]