(57)【要約】【課題】ロス率の変動に応じて、簡単かつ迅速にパケットロスの回復を行う。【解決手段】  パケット解析部２２は、パケットのロスを検知し、再送処理部２６は、ロスが生じたパケットを識別するシーケンス番号を含むパケット情報を、NACKリスト２７に登録する。NACK作成部２８は、パケット解析部２２においてパケットのロスが検知されたとき、NACKリスト２７にパケット情報が登録されているパケットである未着パケットの再送を要求するNACKパケットを生成し、ネットワーク入出力部２１は、NACKパケットを、送信装置に送信する。本発明は、例えば、ストリーミングデータのパケットを受信する受信装置に適用できる。【選択図】図４
2005198055.tif 000002
【特許請求の範囲】
【請求項１】
送信装置から送信されてくるパケットを受信する受信装置において、
前記パケットのロスを検知する検知手段と、
前記ロスが生じた前記パケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録手段と、
前記検知手段においてパケットのロスが検知されたとき、前記再送要求リストに前記パケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成手段と、
前記再送要求パケットを、前記送信装置に送信する再送要求パケット送信手段と
を備えることを特徴とする受信装置。
【請求項２】
前記再送要求パケットを、前記送信装置に送信してから、前記再送要求パケットによって再送が要求されたパケットに対する再送パケットが前記送信装置から送信されてくるまでの時間である往復遅延時間を計測する往復遅延時間計測手段と、
前記未着パケットの再生が行われるまでの猶予時間である再生猶予時間と、前記往復遅延時間とを比較することにより、前記未着パケットに対する前記再送パケットの到着が、その再生時刻に間に合うかどうかを判定する再生判定手段と、
再生時刻に間に合わない前記未着パケットの前記パケット情報を、前記再送要求リストから削除する削除手段と
をさらに備えることを特徴とする請求項１に記載の受信装置。
【請求項３】
前記送信装置から送信されてくる、前記再送要求パケットによって再送が要求されたパケットに対する再送パケットを受信する再送パケット受信手段と、
前記再送パケット受信手段において受信された前記再送パケットに対する前記未着パケットの前記パケット情報を、前記再送要求リストから削除する削除手段と
をさらに備えることを特徴とする請求項１に記載の受信装置。
【請求項４】
前記再送要求パケット生成手段は、前記再送要求リストに前記パケット情報が登録されている前記未着パケットすべてについて、前記再送要求パケットを生成する
ことを特徴とする請求項１に記載の受信装置。
【請求項５】
前記パケット情報は、前記検知手段においてロスが検知された回数をカウントするカウント値をさらに含み、
前記再送要求パケット生成手段は、前記再送要求リストに前記パケット情報が登録されている前記未着パケットのうちの、前記カウント値が閾値以上のものについて、前記再送要求パケットを生成する
ことを特徴とする請求項１に記載の受信装置。
【請求項６】
前記パケットのロスが生じた時間間隔であるロス間隔を算出するロス間隔算出手段と、
前記ロス間隔に基づいて、前記閾値を設定する設定手段と
をさらに備えることを特徴とする請求項５に記載の受信装置。
【請求項７】
前記再送要求パケットを、前記送信装置に送信してから、前記再送要求パケットによって再送が要求されたパケットに対する再送パケットが前記送信装置から送信されてくるまでの時間である往復遅延時間を計測する往復遅延時間計測手段と、
前記往復遅延時間に基づいて、前記閾値を設定する設定手段と
をさらに備えることを特徴とする請求項５に記載の受信装置。
【請求項８】
前記再送要求パケットによって再送が要求された前記未着パケットについての前記カウント値をリセットするリセット手段をさらに備える
ことを特徴とする請求項５に記載の受信装置。
【請求項９】
送信装置から送信されてくるパケットを受信する受信方法において、
前記パケットのロスを検知する検知ステップと、
前記ロスが生じた前記パケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録ステップと、
前記検知ステップにおいてパケットのロスが検知されたとき、前記再送要求リストに前記パケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成ステップと、
前記再送要求パケットを、前記送信装置に送信する再送要求パケット送信ステップと
を含むことを特徴とする受信方法。
【請求項１０】
送信装置から送信されてくるパケットを受信する受信処理を、コンピュータに実行させるプログラムにおいて、
前記パケットのロスを検知する検知ステップと、
前記ロスが生じた前記パケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録ステップと、
前記検知ステップにおいてパケットのロスが検知されたとき、前記再送要求リストに前記パケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成ステップと、
前記再送要求パケットを、前記送信装置に送信する再送要求パケット送信ステップと
を含むことを特徴とするプログラム。
【請求項１１】
送信装置から送信されてくるパケットを受信する受信処理を、コンピュータに実行させるプログラムが記録されている記録媒体において、
前記パケットのロスを検知する検知ステップと、
前記ロスが生じた前記パケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録ステップと、
前記検知ステップにおいてパケットのロスが検知されたとき、前記再送要求リストに前記パケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成ステップと、
前記再送要求パケットを、前記送信装置に送信する再送要求パケット送信ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信装置および方法、プログラム、並びに記録媒体に関し、特に、ロス率の変動に応じて、簡単かつ迅速にパケットロスの回復を行うことができるようにする受信装置および方法、プログラム、並びに記録媒体に関する。
【背景技術】
【０００２】
インターネットを介して行われるリアルタイム通信においては、例えば、UDP（User datagram protocol）が用いられる。
【０００３】
しかしながら、UDPは、インターネット上でデータが紛失、または破損してもそれを復旧することができず、信頼性が保証されないプロトコルである。例えば、インターネット上においては、送信されたパケットが宛先に届かないというパケットロスが発生することがあり、送信された全パケットのうち、平均で１乃至３％、最大で１０％の割合でパケットロスが発生し得る。
【０００４】
したがって、インターネットを介して行われるUDPを用いたリアルタイム通信においては、パケットロスを回復するしくみが必要である。
【０００５】
しかしながら、インターネット上でロスしたロスパケットに対して、再送要求が行われた場合、再送要求に応じて再送された再送パケットが必ず届くという保証がなく、再び、再送パケットがロスしてしまう可能性がある。
【０００６】
再送パケットがロスした場合であっても、リアルタイム性が確保できる時間内であれば、ロスパケットに対して再送を繰り返し行うことによって、ストリーミングの品質を向上させることができる。即ち、ストリーミングの品質を向上させるためには、再送パケットを含むパケットのロスを検知し、届いていない未着パケットに対して、再送要求を繰り返し行う必要がある。
【０００７】
従来のリアルタイム性を考慮した再送制御を行う方式として、例えば、特許文献１、特許文献２、または特許文献３には、パケットロス率が１０％でも、再送要求が１度行われば、見かけ上のロス率が１％まで下がるため、再送パケットのロスを考慮しなくても、十分にロス率を低く抑えることができるという考えに基づいた技術が記載されている。
【０００８】
しかしながら、実際のロス率を回復することができる量が変化することに対応して、見かけ上のロス率が一定範囲内に収まることを保証するには、ネットワークの制約として、実際のロス率があらかじめ定められた範囲内になければならないという条件が必要になる。さらに、特許文献１、特許文献２、または特許文献３に記載の技術においては、再送パケットがロスすることに対する対処方法に関する言及は行われていない。
【０００９】
また、特許文献４には、送信側で、後続のパケットに、再送を行った回数に関する情報を埋め込むことにより、受信側で、再送パケットのパケットロスを検知し、繰り返し再送要求を行う技術が記載されている。しかしながら、特許文献４に記載の技術においては、送信側で再送回数に関する情報を保持する必要があり、パケットフォーマットやパケットの解析処理が非常に複雑になる。
【００１０】
また、特許文献４に記載の技術においては、ロス率に関わらず、常に、再送回数に関する情報がパケットに付加されているため、送信側、または受信側の処理のオーバヘッドが大きくなるという問題も生じ得る。
【００１１】
さらに、特許文献５には、パケットがロスした瞬間に１回目の再送要求を出すほかに、定期的な時間間隔に基づいて未着パケットをチェックすることにより、再送パケットがロスした場合でも、繰り返し再送要求を行う技術が記載されている。特許文献５に記載の技術においては、特許文献４に記載の技術と比較してその構成が簡単である。しかしながら、特許文献５に記載の技術における２回目以降の再送要求は、再送時刻になるまで行われないため、パケットロスが頻繁に発生する場合には、再送時刻までの時間を計時するタイマ値を適切な値に設定しないと、パケットロスに対する再送要求が適切に行われない。一方、タイマ値を短くしすぎると、ロス率が低いにも関わらず、再送要求が頻繁に行われてしまうことになる。
【００１２】
また、特許文献５には、タイマ値が短すぎる点に対しては、再送を要求する再送要求パケットであるNACK（Negative ACKnowledge）パケットを送信した時刻から往復遅延時間（RTT（Round Trip Times））以内には再び同じNACKパケットを送信しないという解決策が提示されている。この解決策を実現するためには、全てのNACKパケットに対して送信時刻を保持しておく必要がある。また、未着パケットのチェック時に、その未着パケットの到着が再生時刻に間に合うかどうかという判定を行い、さらに、その未着パケットについて、過去、RTT時間内にNACKパケットを送信したかどうかという判定も行わなければならず、受信端末の処理が複雑になってしまう。
【００１３】
繰り返し再送要求を行う方法として考えられる他の技術としては、受信側で再送要求を行ってから再送パケットが到着するまでの時間を見積もり、到着予定時刻までに再送パケットが到着しなかったことが検知された場合に、再び再送要求を行うという技術がある。しかしながら、この技術においては、到着予定時刻ごとに再送パケットが到着したかどうかを検査するというタイマをベースとした制御を行う必要がある。一般に、ソフトウェアプログラムとして受信処理を行う装置を実装する場合においては、上述したようなタイマをベースとした制御は、非常に大きな負荷がかかる。したがって、再送要求が頻繁に発生した場合には、その全ての再送要求について、時刻に関する処理であるタイマ処理にCPU（Central Processing Unit）の大部分が使われることとなり、パケットの受信、またはパケットにより送信されてくるデータの表示処理が滞ってしまい、その結果、データの再生品質を劣化させてしまう。
【００１４】
【特許文献１】特開平７−２２１７８９号公報
【特許文献２】特開平９−１９１３１４号公報
【特許文献３】特開２００２−８４３３８号公報
【特許文献４】特開２００１−１１９４３７号公報
【特許文献５】特開２００３−１６９０４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
特許文献１乃至５に記載の技術を含む既存技術では、ロス率の変動に応じて、適応的に、受信装置の負荷を軽減し、また、再送性能を向上させることが困難であった。
【００１６】
本発明はこのような状況に鑑みてなされたものであり、パケットのロス率に応じて、適応的にパケットロスの回復を行うことができるようにするものである。
【課題を解決するための手段】
【００１７】
本発明の受信装置は、パケットのロスを検知する検知手段と、ロスが生じたパケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録手段と、検知手段においてパケットのロスが検知されたとき、再送要求リストにパケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成手段と、再送要求パケットを、送信装置に送信する再送要求パケット送信手段とを備えることを特徴とする。
【００１８】
この受信装置には、再送要求パケットを、送信装置に送信してから、再送要求パケットによって再送が要求されたパケットに対する再送パケットが送信装置から送信されてくるまでの時間である往復遅延時間を計測する往復遅延時間計測手段と、未着パケットの再生が行われるまでの猶予時間である再生猶予時間と、往復遅延時間とを比較することにより、未着パケットに対する再送パケットの到着が、その再生時刻に間に合うかどうかを判定する再生判定手段と、再生時刻に間に合わない未着パケットのパケット情報を、再送要求リストから削除する削除手段とをさらに設けることができる。
【００１９】
受信装置には、送信装置から送信されてくる、再送要求パケットによって再送が要求されたパケットに対する再送パケットを受信する再送パケット受信手段と、再送パケット受信手段において受信された再送パケットに対する未着パケットのパケット情報を、再送要求リストから削除する削除手段とをさらに設けることができる。
【００２０】
再送要求パケット生成手段には、再送要求リストにパケット情報が登録されている未着パケットすべてについて、再送要求パケットを生成させることができる。
【００２１】
パケット情報は、検知手段においてロスが検知された回数をカウントするカウント値をさらに含む構成とすることができ、再送要求パケット生成手段には、再送要求リストにパケット情報が登録されている未着パケットのうちの、カウント値が閾値以上のものについて、再送要求パケットを生成させることができる。
【００２２】
受信装置には、パケットのロスが生じた時間間隔であるロス間隔を算出するロス間隔算出手段と、ロス間隔に基づいて、閾値を設定する設定手段とをさらに設けることができる。
【００２３】
受信装置には、再送要求パケットを、送信装置に送信してから、再送要求パケットによって再送が要求されたパケットに対する再送パケットが送信装置から送信されてくるまでの時間である往復遅延時間を計測する往復遅延時間計測手段と、往復遅延時間に基づいて、閾値を設定する設定手段とをさらに設けることができる。
【００２４】
受信装置には、再送要求パケットによって再送が要求された未着パケットについてのカウント値をリセットするリセット手段をさらに設けることができる。
【００２５】
本発明の受信方法は、パケットのロスを検知する検知ステップと、ロスが生じたパケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録ステップと、検知ステップにおいてパケットのロスが検知されたとき、再送要求リストにパケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成ステップと、再送要求パケットを、送信装置に送信する再送要求パケット送信ステップとを含むことを特徴とする。
【００２６】
本発明のプログラムは、パケットのロスを検知する検知ステップと、ロスが生じたパケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録ステップと、検知ステップにおいてパケットのロスが検知されたとき、再送要求リストにパケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成ステップと、再送要求パケットを、送信装置に送信する再送要求パケット送信ステップとを含むことを特徴とする。
【００２７】
本発明の記録媒体に記録されているプログラムは、パケットのロスを検知する検知ステップと、ロスが生じたパケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録ステップと、検知ステップにおいてパケットのロスが検知されたとき、再送要求リストにパケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成ステップと、再送要求パケットを、送信装置に送信する再送要求パケット送信ステップとを含むことを特徴とする。
【００２８】
本発明においては、パケットのロスが検知され、ロスが生じたパケットを識別する識別情報を含むパケット情報が、再送要求リストに登録される。そして、パケットのロスが検知されたとき、再送要求リストにパケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットが生成され、送信装置に送信される。
【発明の効果】
【００２９】
本発明によれば、ロス率に応じて、適応的にパケットロスの回復を行うことができる。
【発明を実施するための最良の形態】
【００３０】
以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。本明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００３１】
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
【００３２】
本発明によれば受信装置が提供される。この受信装置（例えば、図４の受信装置４）は、送信装置から送信されてくるパケットを受信する受信装置において、パケットのロスを検知する検知手段（例えば、図４のパケット解析部２２）と、ロスが生じたパケットを識別する識別情報を含むパケット情報を、再送要求リスト（例えば、図４のNACKリスト２７）に登録する登録手段（例えば、図４の再送処理部２６）と、検知手段においてパケットのロスが検知されたとき、再送要求リストにパケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成手段（例えば、図４のNACK作成部２８）と、再送要求パケットを、送信装置に送信する再送要求パケット送信手段（例えば、図４のネットワーク入出力部２１）とを備える。
【００３３】
この受信装置には、再送要求パケットを、送信装置（例えば、図２の送信装置２）に送信してから、再送要求パケットによって再送が要求されたパケットに対する再送パケットが送信装置から送信されてくるまでの時間である往復遅延時間を計測する往復遅延時間計測手段（例えば、図４のRTT計測部２５）と、未着パケットの再生が行われるまでの猶予時間である再生猶予時間と、往復遅延時間とを比較することにより、未着パケットに対する再送パケットの到着が、その再生時刻に間に合うかどうかを判定する再生判定手段（例えば、図１３のプログラムの処理ステップＳ６１）と、再生時刻に間に合わない未着パケットのパケット情報を、再送要求リストから削除する削除手段（例えば、図１３のプログラムの処理ステップＳ６２）とをさらに設けることができる。
【００３４】
この受信装置には、送信装置から送信されてくる、再送要求パケットによって再送が要求されたパケットに対する再送パケットを受信する再送パケット受信手段（例えば、図４のネットワーク入出力部２１）と、再送パケット受信手段において受信された再送パケットに対する未着パケットのパケット情報を、再送要求リスト（例えば、図４のNACKリスト２７）から削除する削除手段（例えば、図９のプログラムの処理ステップＳ２３）とをさらに設けることができる。
【００３５】
再送要求パケット生成手段（例えば、図４のNACK作成部２８）には、再送要求リスト（例えば、図４のNACKリスト２７）にパケット情報が登録されている未着パケットすべてについて、再送要求パケットを生成させることができる。
【００３６】
この受信装置には、パケットのロスが生じた時間間隔であるロス間隔を算出するロス間隔算出手段（例えば、図１４のロス間隔計測部２９）と、ロス間隔に基づいて、閾値を設定する設定手段（例えば、図１６のプログラムの処理ステップＳ７３）とをさらに設けることができる。
【００３７】
この受信装置には、再送要求パケットを、送信装置に送信してから、再送要求パケットによって再送が要求されたパケットに対する再送パケットが送信装置から送信されてくるまでの時間である往復遅延時間を計測する往復遅延時間計測手段（例えば、図１４のRTT計測部２５）と、往復遅延時間に基づいて、閾値を設定する設定手段（例えば、図１４の再送処理部２６）とをさらに設けることができる。
【００３８】
この受信装置には、再送要求パケットによって再送が要求された未着パケットについてのカウント値をリセットするリセット手段（例えば、図２０のプログラムの処理ステップＳ１１３）をさらに設けることができる。
【００３９】
本発明によれば受信方法が提供される。この受信方法（例えば、図９のパケット受信処理）は、送信装置から送信されてくるパケットを受信する受信方法において、パケットのロスを検知する検知ステップ（例えば、図９のプログラムの処理ステップＳ２４）と、ロスが生じたパケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録ステップ（例えば、図１１のプログラムの処理ステップＳ４３）と、検知ステップにおいてパケットのロスが検知されたとき、再送要求リストにパケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成ステップ（例えば、図１３のプログラムの処理ステップＳ６３）と、再送要求パケットを、送信装置に送信する再送要求パケット送信ステップ（例えば、図１０のプログラムの処理ステップＳ３３）とを含む。
【００４０】
本発明によればプログラムが提供される。このプログラム（例えば、図９のパケット受信処理）は、送信装置から送信されてくるパケットを受信する受信処理を、コンピュータに実行させるプログラムにおいて、パケットのロスを検知する検知ステップ（例えば、図９のプログラムの処理ステップＳ２４）と、ロスが生じたパケットを識別する識別情報を含むパケット情報を、再送要求リストに登録する登録ステップ（例えば、図１１のプログラムの処理ステップＳ４３）と、検知ステップにおいてパケットのロスが検知されたとき、再送要求リストにパケット情報が登録されているパケットである未着パケットの再送を要求する再送要求パケットを生成する再送要求パケット生成ステップ（例えば、図１３のプログラムの処理ステップＳ６３）と、再送要求パケットを、送信装置に送信する再送要求パケット送信ステップ（例えば、図１０のプログラムの処理ステップＳ３３）とを含む。
【００４１】
このプログラムは、記録媒体に記録することができる。
【００４２】
以下に、本発明の実施の形態を説明する。
【００４３】
図１は、本発明を適用した通信システムの一実施の形態の構成例を示すブロック図である。
【００４４】
図１の通信システムは、出力装置１、送信装置２、パケット交換網３、受信装置４、および表示装置５から構成されている。
【００４５】
出力装置１は、例えば、画像を撮像し、その撮像により得られる画像データを送信装置２に供給する。
【００４６】
送信装置２は、出力装置１から供給された画像データを所定の方式のパケットに格納することによりパケットを生成し、パケット交換網３を介して受信装置４にストリーミング方式で送信する。また、送信装置２は、パケット交換網３を介して受信装置４から送信くるNACKパケットを受信し、そのNACKパケットによって再送が要求されているパケットを、再送パケットとして、パケット交換網３を介して受信装置４に送信する。
【００４７】
パケット交換網３は、例えば、インターネットなどからなる伝送路である。なお、パケット交換網３は、インターネットである必要はなく、後述するフォーマットのパケットが伝送可能なものであれば、どのようなものであってもよい。
【００４８】
受信装置４は、パケット交換網３を介して送信装置２から送信されてきたパケットを受信し、そのパケットに格納されている画像データを、表示装置５に供給し表示させる。また、受信装置４は、パケットのロスを検知し、そのロスしたパケットに対する再送要求を行うNACKパケットを、パケット交換網３を介して送信装置２に送信する。
【００４９】
表示装置５は、受信装置４から供給された画像データを表示する。
【００５０】
なお、出力装置１としては、例えば、NTSC（National Television Standards Committee）の規格に規定された出力が可能な、連続メディアデータ（時間的に連続なデータ）を出力するビデオカメラ、デジタルスチルカメラ、VHS（Video Home System）デッキ、DVD（Digital Versatile Disc）プレーヤ、衛星チューナ、またはCATV（CAble TeleVision）セットトップボックスなどを採用することができる。
【００５１】
図２は、図１の送信装置２の構成例を示すブロック図である。
【００５２】
図２の送信装置２は、入力部１１、パケット作成部１２、ネットワーク入出力部１３、再送制御部１４、再送バッファ１５、およびNACK解析部１６から構成されている。
【００５３】
入力部１１は、出力装置１から供給された画像データを取り込み、その画像データに対して、例えば、圧縮などの所定の処理を施して、パケット作成部１２に供給する。なお、出力装置１がDV（Digital Video）カメラ等の圧縮された画像データを出力する装置である場合には、入力部１１は、画像データに対して、圧縮以外のその他の所定の処理を行い、パケット作成部１２に供給する。
【００５４】
パケット作成部１２は、入力部１１から供給された画像データを格納した、ネットワーク伝送に適したパケットを生成し、ネットワーク入出力部１３および再送バッファ１５に供給する。
【００５５】
ここで、図３を参照して、パケット作成部１２が生成するパケットのフォーマットを説明する。
【００５６】
図３に示すパケットフォーマットは、IETF（The Internet Engineering Task Force）が発行するRFC（Request For Comments）３５５０（“RTP（Real-time Transport Protocol）:A Transport Protocol for Real-time Applications”, July ２００３）で規定されたRTPパケットのフォーマットで、リアルタイムデータを配信するのに適している。
【００５７】
パケットの先頭には、図３において“V”で表される、２ビットのバージョン情報が配置される。バージョン情報は、パケットのバージョンを示す。
【００５８】
バージョン情報の次に図３中の“P”で表される１ビットのパディングが配置され、パディングに続いて、１ビットの拡張情報がパケットに配置される。拡張情報は図３において、“X”で表される。拡張情報は、パケットに拡張ヘッダを配置する場合に、所定の値に設定される。
【００５９】
拡張情報に続いて、CSRC（Contributing Source）カウントがパケットに配置される。CSRCカウントは、図３中において、“CC”で表される。CSRCカウントは、CSRC識別子の数を表す。
【００６０】
CSRCカウントに続いて配置される、１ビットのメーカー情報は、プロファイルによって
定義される。メーカー情報は、図３中において“Ｍ”で表される。
【００６１】
メーカー情報に続いて配置される、７ビットのペイロードタイプは、パケットのフ
ォーマットを定義するための情報である。ペイロードタイプは、図３中において、“PT”
で表される。
【００６２】
シーケンス番号（Sequence number）は、ペイロードタイプの次に配置される、１６ビットの情報である。シーケンス番号は、パケットの再生の順番を示す番号であり、送信の度に、１ずつ増える。シーケンス番号は、パケットロスを検知し、また、パケットの順序を修復するために使用される。
【００６３】
シーケンス番号の次に配置される、３２ビットのタイムスタンプ（Timestamp）は、そのパケットに格納されているストリーミングデータの最初のオクテットがサンプルされた時刻を示す情報である。
【００６４】
SSRC（Synchronization Source）識別子（Identifier）は、タイムスタンプの次に配置される、３２ビットの情報であって、パケットに格納されるストリーミングデータのソースを示す。
【００６５】
パケットにおいて、SSRC識別子の次には、ストリーミングデータが格納される。図３において、“データ”は、ストリーミングデータを示す。
【００６６】
図２に戻り、ネットワーク入出力部１３には、パケット作成部１２からパケットが供給される他、再送制御部１４から再送パケットが供給される。ネットワーク入出力部１３は、パケット作成部１２からのパケットおよび再送制御部１４からの再送パケットを、パケット交換網３を介して受信装置４に送信する。また、ネットワーク入出力部１３は、パケット交換網３を介して受信装置４から送信されてきたNACKパケット、または後述するRTT計測パケットを受信する。ネットワーク入出力部１３は、受信したNACKパケットをNACK解析部１６に供給する。また、ネットワーク入出力部１３は、受信したRTT計測パケットをパケット交換網３を介して受信装置４に送信する。
【００６７】
再送制御部１４には、NACK解析部１６からNACKパケットによって再送が要求されているパケットの識別情報としてのシーケンス番号が供給される。再送制御部１４は、NACK解析部１６から供給されたシーケンス番号のパケットを再送バッファ１５から読み出す。さらに、再送制御部１４は、再送バッファ１５から読み出したパケットをネットワーク入出力部１３に供給し、再送パケットとして、パケット交換網３を介して受信装置４に送信させる。
【００６８】
再送バッファ１５は、パケット作成部１２から供給されたパケットを、その再送を行う場合に備えて記憶する。
【００６９】
NACK解析部１６は、ネットワーク入出力部１３から供給されたNACKパケットを解析することにより、そのNACKパケットによって再送が要求されているパケットのシーケンス番号を認識し、再送制御部１４に供給する。
【００７０】
図４は、図１の受信装置４の構成例を示すブロック図である。
【００７１】
図４の受信装置４は、ネットワーク入出力部２１、パケット解析部２２、出力バッファ２３、出力部２４、RTT計測部２５、再送処理部２６、NACKリスト２７、およびNACK作成部２８から構成されている。
【００７２】
ネットワーク入出力部２１は、パケット交換網３を介して送信装置２から送信されてくる再送パケットを含むパケットを受信し、パケット解析部２２に供給する。また、ネットワーク入出力部２１は、RTT計測部２５から供給されたRTT計測パケットを、パケット交換網３を介して送信装置２へ送信し、その送信に対応して、パケット交換網３を介して送信装置２から送信されてくるRTT計測パケットを受信して、RTT計測部２５に供給する。さらに、ネットワーク入出力部２１は、NACK作成部２８から供給されたNACKパケットを、パケット交換網３を介して送信装置２へ送信する。
【００７３】
パケット解析部２２は、ネットワーク入出力部２１から供給されたパケットを出力バッファ２３に供給して記憶させる。また、パケット解析部２２は、ネットワーク入出力部２１から供給された今回のパケットを解析し、その今回のパケットが、再送パケットであるかどうかを判定するとともに、パケットロスの検知を行う。パケット解析部２２は、今回のパケットが再送パケットであると判定した場合、その再送パケットのシーケンス番号を再送処理部２６に供給する。
【００７４】
さらに、パケット解析部２２は、パケットロスを検知した場合、そのパケットロスが生じたパケットのシーケンス番号およびタイムスタンプを算出し、再送処理部２６に供給する。
【００７５】
出力バッファ２３は、パケット解析部２２から供給されたパケットを一時的に記憶する。
【００７６】
出力部２４は、出力バッファ２３に記憶されたパケットから画像データを抽出し、表示装置５に供給して表示させる。出力部２４は、パケットから抽出した画像データが圧縮されている場合には、その圧縮の圧縮方式に対応する復号方式で画像データを伸張（デコード）し、表示装置５に供給して表示させる。
【００７７】
なお、通常、１枚（フレーム）の画像データは、複数のパケットに分割されて格納される。この場合、出力部２４は、出力バッファ２３から同一時刻を示すタイムスタンプのパケットを読み出して、一枚の画像データを再構成する処理を行う。
【００７８】
また、再送パケットの到着が、その再送パケットに格納されているデータを含んで構成される一枚の画像データの再生時刻に間に合わない場合がある。この場合、その一枚の画像データにおいては、データの欠落が生じるが、出力部２４は、その欠落を補う隠蔽処理も行う。
【００７９】
RTT計測部２５は、RTT計測パケットを、定期的または不定期に生成し、ネットワーク入出力部２１に供給して送信させる。なお、RTT計測パケットには、その送信時刻が格納される。
【００８０】
また、RTT計測部２５は、ネットワーク入出力部２１が送信装置２から受信して供給するRTT計測パケットを受信し、その受信時刻と、RTT計測パケットに格納されている送信時刻とから、往復遅延時間（RTT）を算出して再送処理部２６に供給する。ここで、往復遅延時間RTTは、受信装置４がNACKパケットを送信してから、そのNACKパケットによって再送が要求されたパケットに対する再送パケットが、送信装置２から送信されてくるまでの時間とみなすことができる。
【００８１】
再送処理部２６は、NACKリスト２７に登録されている、未着のパケットである未着パケットのシーケンス番号を、NACK作成部２８に供給することにより、NACK作成部２８にそのシーケンス番号によって識別されるパケットの再送を要求するNACKパケットを生成させる。
【００８２】
また、再送処理部２６は、パケット解析部２２から供給された、パケットロスが生じたパケットのシーケンス番号およびタイムスタンプを、そのパケットに関するパケット情報として、NACKリスト２７の新たなエントリに追加登録する。
【００８３】
さらに、再送処理部２６は、パケット解析部２２から再送パケットのシーケンス番号が供給されると、そのシーケンス番号を含むパケット情報が登録されているエントリを、NACKリスト２７から削除する。従って、NACKリスト２７には、受信装置４に到着していない未着パケットのパケット情報が登録されている、ということができる。
【００８４】
また、再送処理部２６は、図示せぬ計時部から取得した現在時刻から、NACKリスト２７にパケット情報が登録されている未着パケットの再生が行われるまでの猶予時間である再生猶予時間を算出し、その再生猶予時間と、RTT計測部２５から供給された往復遅延時間（RTT）とを比較することで、未着パケットに対する再送パケットの到着が、その再生時刻に間に合うかどうかを判定する。そして、再送処理部２６は、未着パケットに対する再送パケットの到着が、その再生時刻に間に合わない場合、その未着パケットのパケット情報が登録されているエントリを、NACKリスト２７から削除する。
【００８５】
NACKリスト２７は、再送処理部２６の制御にしたがい、未着パケットのパケット情報のエントリを記憶する。
【００８６】
ここで、図５を参照して、NACKリスト２７のエントリを説明する。
【００８７】
図５においては、NACKリスト２７に、２つのエントリが存在している。エントリは、未着パケットごとに作成され、各エントリには、未着パケットのシーケンス番号および再生時刻（タイムスタンプ）が、その未着パケットのパケット情報として登録される。図５に示されているNACKリスト２７には、左側に未着パケットのシーケンス番号、右側に再生時刻が登録されている。図５には、シーケンス番号が２で、再生時刻が３００３の未着パケット、およびシーケンス番号が５で、再生時刻が９００９の未着パケットが登録されている。
【００８８】
図４に戻り、NACK作成部２８は、再送処理部２６から供給されたシーケンス番号のパケットの再送を要求するNACKパケットを作成し、ネットワーク入出力部２１に供給してパケット交換網３を介して送信装置２に送信させる。
【００８９】
次に、図６を参照して、図４のNACK作成部２８において作成されるNACKパケットのフォーマットを説明する。
【００９０】
図６のNACKパケットは、RTPのセッションを制御するためのプロトコルであるRTCP（RTP Control Protocol）のRTCPパケットであり、３２ビットのRTCPヘッダを有している。
【００９１】
RTCPヘッダの次には、再送処理部２６から供給されたシーケンス番号が、１６ビットで、順次、記述される。ここで、図６のNACKパケットのフォーマットにおいては、複数のシーケンス番号が記述されている。このように１つのNACKパケットに複数のシーケンス番号を記述することにより、受信装置４の処理のオーバヘッドを軽減させ、効率的な処理が可能となる。なお、１つのNACKパケットに、１つのシーケンス番号を記述することも可能である。
【００９２】
図７は、図２の送信装置２のパケット送信処理を説明するフローチャートである。なお、図７のパケット送信処理は、出力装置１から画像データが供給されると開始される。
【００９３】
ステップＳ１において、入力部１１は、出力装置１から供給された画像データを取り込み、取り込んだ画像データに圧縮などの所定の処理を施して、パケット作成部１２に供給し、ステップＳ２に進む。
【００９４】
ステップＳ２において、パケット作成部１２は、入力部１１から供給された画像データをペイロードに配置した、図３のフォーマットのパケット（RTPパケット）を生成し、ネットワーク入出力部１３に供給して、ステップＳ３に進む。
【００９５】
ステップＳ３において、ネットワーク入出力部１３は、パケット作成部１２から供給されたパケットをパケット交換網３を介して受信装置４に送信し、ステップＳ４に進む。
【００９６】
ステップＳ４において、パケット作成部１２は、ステップＳ２で生成したパケットを再送バッファ１５に供給して記憶させ、処理を終了する。
【００９７】
図８は、図２の送信装置２の再送パケット送信処理を説明するフローチャートである。なお、図８の再送パケット送信処理は、パケット交換網３を介して受信装置４から送信されてきたNACKパケットがネットワーク入出力部１３により受信され、NACK解析部１６に供給されると開始される。
【００９８】
ステップＳ１１において、NACK解析部１６は、ネットワーク入出力部１３からのNACKパケットを解析することにより再送が要求されているパケットのシーケンス番号を取得し、再送制御部１４に供給して、ステップＳ１２に進む。
【００９９】
ステップＳ１２において、再送制御部１４は、NACK解析部１６から供給されたシーケンス番号と同一のシーケンス番号のパケットを再送バッファ１５から読み出し、ネットワーク入出力部１３に供給し、ステップＳ１３に進む。
【０１００】
ステップＳ１３において、ネットワーク入出力部１３は、再送制御部１４から供給されたパケットを、再送パケットとして、パケット交換網３を介して受信装置４に送信し、処理を終了する。
【０１０１】
図９は、受信装置４のパケット受信処理を説明するフローチャートである。なお、図９のパケット受信処理は、パケット交換網３を介して送信装置２から送信されてきたパケットがネットワーク入出力部１３により受信され、パケット解析部２２に供給されると開始される。
【０１０２】
ステップＳ２１において、パケット解析部２２は、ネットワーク入出力部１３から供給された今回のパケットを解析することにより、そのシーケンス番号を抽出し、ステップＳ２２に進む。
【０１０３】
パケット解析部２２は、ステップＳ２２において、今回のパケットが再送パケットであるかどうかを、その今回のパケットから抽出したシーケンス番号に基づいて判定する。
【０１０４】
ステップＳ２２において、今回のパケットが再送パケットでないと判定された場合、ステップＳ２４に進み、パケット解析部２２は、パケットロスが発生したかどうかを、今回のパケットから抽出したシーケンス番号に基づいて判定する。
【０１０５】
なお、パケット解析部２２は、今までに受信したパケットのシーケンス番号のうちの最大値である最大シーケンス番号を記憶しており、ステップＳ２２における、今回のパケットが再送パケットであるかどうかの判定と、ステップＳ２４における、パケットロスが発生したかどうかの判定とを、今回のパケットのシーケンス番号と、今までに受信したパケットの最大シーケンス番号とを比較することにより行う。即ち、ステップＳ２２とステップＳ２４の判定は、RFC３５５０ Apendix A.1 update_seq()として示されているアルゴリズムに沿って行われる。
【０１０６】
具体的には、パケット解析部２２は、今回のパケットのシーケンス番号が最大シーケンス番号より１だけ大きい場合、今回のパケットが、送信装置２において図７のパケット送信処理が行われることにより送信されてきたパケット（通常のパケット）であると判定する。
【０１０７】
また、パケット解析部２２は、今回のパケットのシーケンス番号が、最大シーケンス番号と比較して、１より大きい場合（２以上大きい場合）、今回のパケットの前に送信されてくるべきパケットのロス（パケットロス）が生じたと判定する。
【０１０８】
さらに、パケット解析部２２は、今回のパケットのシーケンス番号が、最大シーケンス番号よりも小さい場合、今回のパケットが、再送パケットであると判定する。
【０１０９】
ステップＳ２４において、パケットロスが発生したと判定された場合、即ち、今回のパケットが、通常のパケットであるが、そのシーケンス番号が、最大シーケンス番号よりも２以上大きい場合、パケット解析部２２は、通常のパケットである今回のパケットを、出力バッファ２３に供給する。さらに、パケット解析部２２は、パケットロスが生じたパケットのシーケンス番号およびタイムスタンプを算出して、再送処理部２６に供給し、ステップＳ２４からステップＳ２５に進む。
【０１１０】
ステップＳ２５において、再送処理部２６は、パケット解析部２２からの、パケットロスが生じたパケットのシーケンス番号とタイムスタンプを用いて、後述するNACK処理を行い、ステップＳ２６に進む。
【０１１１】
また、ステップＳ２４において、パケットロスが発生していないと判定された場合、即ち、今回のパケットが、シーケンス番号が最大シーケンス番号よりも１だけ大きい通常のパケットである場合、パケット解析部２２は、今回のパケットを出力バッファ２３に供給し、ステップＳ２６に進む。
【０１１２】
一方、ステップＳ２２において、今回のパケットが再送パケットであると判定された場合、パケット解析部２２は、その再送パケットのシーケンス番号を再送処理部２６に供給する。さらに、パケット解析部２２は、今回のパケットである再送パケットを出力バッファ２３に供給し、ステップＳ２２からステップＳ２３に進む。
【０１１３】
ステップＳ２３において、再送処理部２６は、パケット解析部２２から供給された再送パケットのシーケンス番号と同一のシーケンス番号を有するパケット情報が登録されているエントリを、NACKリスト２７から検索し、そのエントリをNACKリスト２７から消去する。但し、NACKリスト２７に再送パケットのシーケンス番号と同一のシーケンス番号が記述されているエントリが存在しない場合には、再送処理部２６は、何の処理も行わない。そして、ステップＳ２３からステップＳ２６に進む。
【０１１４】
ステップＳ２６において、出力バッファ２３は、パケット解析部２２から供給されたパケット（通常のパケットまたは再送パケット）を記憶し、処理を終了する。
【０１１５】
図１０は、図９のステップＳ２５のNACK処理を説明するフローチャートである。
【０１１６】
ステップＳ３１において、再送処理部２６は、パケット解析部２２からシーケンス番号とタイムスタンプが供給された、ロスが生じたパケット（ロスパケット）に関する、後述するロスパケット処理を行い、ステップＳ３２に進む。
【０１１７】
ステップＳ３２において、再送処理部２６は、後述するNACKリスト更新処理を行い、ステップＳ３３に進む。ステップＳ３３では、ネットワーク入出力部２１が、ステップＳ３１とステップＳ３２で、後述するようにして作成されるNACKパケットを、送信装置２に送信して、リターンする。
【０１１８】
図１１は、図１０のステップＳ３１のロスパケット処理を説明するフローチャートである。
【０１１９】
ステップＳ４１において、再送処理部２６は、RTT計測部２５から最新の往復遅延時間（RTT）を受信する。また、ステップＳ４１において、再送処理部２６は、パケット解析部２２からシーケンス番号とタイムスタンプが供給された今回のロスパケットの再生時刻（再生予定時刻）から現在時刻を減算することにより、今回のロスパケットの再生時刻までの再生猶予時間を算出する。そして、再送処理部２６は、ステップＳ４１において、今回のロスパケットの再生猶予時間が往復遅延時間（RTT）以上かどうかを判定する。なお、ロスパケットの再生時刻は、パケット解析部２２からのロスパケットのタイムスタンプから認識することができる。
【０１２０】
ステップＳ４１において、今回のロスパケットの再生猶予時間が往復遅延時間（RTT）以上でないと判定された場合、再送処理部２６は、今回のロスパケットに対して何の処理も行わず、リターンする。即ち、この場合、受信装置４から今回のロスパケットに対して再送要求としてのNACKパケットの送信を行っても、受信装置４において、往復遅延時間（RTT）が経過した後にロスパケットに対する再送パケットを受信することとなり、再送パケットの再生時刻に間に合わないため、再送処理部２６は、そのロスパケットについては、何の処理も行わない。
【０１２１】
一方、ステップＳ４１において、今回のロスパケットの再生猶予時間が往復遅延時間（RTT）以上であると判定された場合、再送処理部２６は、パケット解析部２２から供給されたそのロスパケットのシーケンス番号をNACK作成部２８に供給し、ステップＳ４２に進む。
【０１２２】
ステップＳ４２において、NACK作成部２８は、再送処理部２６から供給された今回のロスパケットのシーケンス番号を記述したNACKパケットを生成し、ネットワーク入出力部２１に供給して、ステップＳ４３に進む。
【０１２３】
ステップＳ４３において、再送処理部２６は、パケット解析部２２から供給された今回のロスパケットのシーケンス番号およびタイムスタンプを、そのロスパケットのパケット情報として、NACKリスト２７の新たなエントリに追加登録し、リターンする。
【０１２４】
図１２は、図１０のステップＳ３２のNACKリスト更新処理を説明するフローチャートである。
【０１２５】
ステップＳ５１において、再送処理部２６は、NACKリスト２７のエントリすべてを対象に、後述するステップＳ５２のエントリ処理を行ったかどうかを判定する。ステップＳ５１において、NACKリスト２７のエントリすべてを対象に、まだ、エントリ処理が行われていないと判定された場合、再送処理部２６は、NACKリスト２７のエントリのうちの、まだエントリ処理の対象とされていない１つのエントリを注目エントリとして、ステップＳ５２に進み、NACKリスト２７の注目エントリを対象にエントリ処理を行い、ステップＳ５１に戻り、以下、同様の処理を繰り返す。
【０１２６】
一方、ステップＳ５１において、NACKリスト２７のエントリすべてを対象にエントリ処理が行われたと判定された場合、リターンする。
【０１２７】
図１３は、図１２のステップＳ５２のエントリ処理を説明するフローチャートである。  
【０１２８】
ステップＳ６１において、再送処理部２６は、図１１のステップＳ４１と同様に、RTT計測部２５から最新の往復遅延時間（RTT）を受信する。また、再送処理部２６は、注目エントリのパケット情報のタイムスタンプから、その注目エントリに対応する未着パケット（注目エントリにパケット情報が登録されている未着パケット）の再生時刻を認識し、その再生時刻から、注目エントリに対応する未着パケットの再生猶予時間を、図１１のステップＳ４１における場合と同様にして算出する。
【０１２９】
そして、再送処理部２６は、ステップＳ６１において、注目エントリに対応する未着パケットの再生猶予時間が、RTT計測部２５から供給された往復遅延時間（RTT）以上であるかどうかを判定する。ステップＳ６１において、注目エントリに対応する未着パケットの再生猶予時間が往復遅延時間（RTT）以上でないと判定された場合、即ち、注目エントリに対応する未着パケットの再送を要求しても、その再送パケットの到着が、その再生時刻に間に合わない場合、ステップＳ６２に進み、再送処理部２６は、その注目エントリをNACKリスト２７から消去し、リターンする。
【０１３０】
一方、ステップＳ６１において、注目エントリに対応する未着パケットの再生猶予時間が往復遅延時間（RTT）以上であると判定された場合、再送処理部２６は、その未着パケットのシーケンス番号を、NACKリスト２７から読み出して、NACK作成部２８に供給し、ステップＳ６３に進む。
【０１３１】
ステップＳ６３において、NACK作成部２８は、再送処理部２６から供給された未着パケットのシーケンス番号を記述したNACKパケットを生成し、ネットワーク入出力部２１に供給して、リターンする。
【０１３２】
なお、図１１のステップＳ４２と、図１３のステップＳ６３とでは、個別のNACKパケットを生成してもよいし、その個別のNACKパケットに配置されるべきシーケンス番号すべてを配置した１つのNACKパケットを生成してもよい。
【０１３３】
以上のように、ロスパケットのパケット情報を、NACKリスト２７に登録し、パケットロスが検知されたときに、NACKリスト２７にパケット情報が登録されている未着パケットの再送を要求するNACKパケットを生成して送信するようにしたので、NACKパケットごとにタイマを必要としない簡単な処理でNACKパケットを送信するとともに、パケットロスの頻度（の変化）に応じて、適応的に、NACKパケットを送信する回数を変化させ、簡単かつ迅速にパケットロスを回復することができる。即ち、パケットロスの頻度が低い場合には無駄なNACKパケットの送信を抑制することができ、パケットロスの頻度が高い場合には、そのパケットロスの頻度に応じた回数のNACKパケットを送信することができる。
【０１３４】
図１４は、図１の受信装置４の他の構成例を示すブロック図である。
【０１３５】
図１４の受信装置４は、ロス間隔計測部２９が新たに設けられている他は、図３の受信装置４と同様に構成されている。
【０１３６】
但し、再送処理部２６は、パケット解析部２２からロスパケットのシーケンス番号およびタイムスタンプを受信すると、パケットロスが生じた旨のパケットロス情報を、ロス間隔計測部２９に供給する。
【０１３７】
ロス間隔計測部２９は、再送処理部２６からのパケットロス情報に基づいて、前回と今回のパケットロスが生じた間隔であるロス間隔を求め、再送処理部２６に供給する。
【０１３８】
再送処理部２６は、ロス間隔計測部２９からのロス間隔とRTT計測部２５からの往復遅延時間とから、パケットロスの検知回数をカウントするカウント値の上限値を決定する。また、再送処理部２６は、パケット解析部２２からロスパケットのシーケンス番号およびタイムスタンプが供給されると、そのロスパケットのパケット情報として、そのロスパケットのシーケンス番号およびタイムスタンプに、カウント値を付加したものを生成し、NACKリスト２７の新たなエントリに追加登録する。さらに、再送処理部２６は、パケットロスが検知された場合、NACKリスト２７のエントリすべてに登録されているパケット情報のカウント値を１だけインクリメントする。
【０１３９】
また、再送処理部２６は、NACKリスト２７の各エントリに登録されている未着パケットのパケット情報のカウント値と、上限値とを比較し、カウント値が上限値以上になっているパケット情報に対応する未着パケットのシーケンス番号を、NACK作成部２８に供給するとともに、そのカウント値を０にリセットする。
【０１４０】
次に、図１５は、図１４のNACKリスト２７のエントリを示している。
【０１４１】
上述したように、図１４においては、再送処理部２６は、ロスパケットのシーケンス番号およびタイムスタンプに対して、カウント値を付加したパケット情報を、NACKリスト２７のエントリに登録する。このため、図１５に示されているNACKリスト２７のエントリには、図５に示されているNACKリスト２７と同様に未着パケットのシーケンス番号と再生時刻が登録されている他、カウント値が登録されている。
【０１４２】
図１６は、図１４の再送処理部２６のNACK処理（図９のステップＳ２５）を説明するフローチャートである。
【０１４３】
ステップＳ７１において、再送処理部２６は、パケット解析部２２からシーケンス番号とタイムスタンプが供給されたロスパケットに関する、後述するロスパケット処理を行い、ステップＳ７２に進む。
【０１４４】
ステップＳ７２において、再送処理部２６は、その内蔵するメモリ（図示せぬ）に記憶されているロス間隔を更新する。即ち、再送処理部２６は、ロス間隔計測部２９から最新のロス間隔を取得し、その最新のロス間隔に基づいて、メモリに記憶されているロス間隔を更新する。
【０１４５】
ここで、ステップＳ７２において、再送処理部２６がロス間隔を更新する方法としては、例えば、メモリに記憶されているロス間隔を、ロス間隔計測部２９から取得した最新のロス間隔によって更新する方法や、指数移動加重計算（EWMA（Exponential Weighted Moving Average））を用いる方法などがある。指数移動加重計算を用いる方法においては、更新後のロス間隔をIntervalnew、現在メモリに記憶されているロス間隔をIntervalprev、ロス間隔計測部２９からの最新のロス間隔をIntervalcurrentとすると、更新後のロス間隔Intervalnewは、数１で示される式により算出される。
【０１４６】
【数１】
2005198055.tif 000003
【０１４７】
なお、数１におけるパラメータαは、その値が０より大きく１より小さい値（０＜α＜１）に設定される調整パラメータである。調整パラメータαが大きい程、ロス間隔計測部２９からの最新のロス間隔が、更新後のロス間隔に反映される割合が高くなる。指数移動加重計算を用いてロス間隔を更新すると、今までのロス間隔を平均化することが可能となる。
【０１４８】
再送処理部２６は、ロス間隔の更新後、ステップＳ７２からステップＳ７３に進む。
【０１４９】
ステップＳ７３において、再送処理部２６は、ステップＳ７２において算出した更新後のロス間隔およびRTT計測部２５から供給された往復遅延時間から、カウント値の上限値を決定する。カウント値の上限値をＮとすると、ステップＳ７３において、再送処理部２６は、数２で表される式によりカウント値の上限値Ｎを決定する。
【０１５０】
【数２】
2005198055.tif 000004
【０１５１】
数２において、記号[Ｘ]は、値Ｘを超えない最大の整数（Ｘの小数点以下が切り捨てられた値）を表している。例えば、[０．９]は０、[１]は１、[１．１]は１である。なお、数２により決定されたカウント値の上限値Ｎは、往復遅延時間RTT内に発生するパケットロスの回数の平均を表している。このように、ステップＳ７３において、再送処理部２６は、カウント値の上限値Ｎを決定し、ステップＳ７４に進む。
【０１５２】
ステップＳ７４において、再送処理部２６は、後述するNACKリスト更新処理を行い、ステップＳ７５に進む。ステップＳ７５では、ネットワーク入出力部２１が、ステップＳ７１とステップＳ７５で、後述するようにして作成されるNACKパケットを、送信装置２に送信して、リターンする。
【０１５３】
図１７は、図１６のステップＳ７１のロスパケット処理を説明するフローチャートである。なお、図１７のステップＳ８１乃至ステップＳ８３の処理は、図１１のステップＳ４１乃至ステップＳ４３それぞれの処理と同様である。
【０１５４】
但し、ステップＳ８３では、ロスパケットのパケット情報として、そのロスパケットのシーケンス番号およびタイムスタンプの他に、カウント値が、NACKリスト２７の新たなエントリに追加登録され、ステップＳ８４に進む。
【０１５５】
ステップＳ８４において、再送処理部２６は、ステップＳ８３でNACKリスト２７に登録したロスパケットのパケット情報におけるカウント値を０に初期化（リセット）し、リターンする。
【０１５６】
図１８は、図１６のステップＳ７４のNACKリスト更新処理を説明するフローチャートである。なお、図１８のステップＳ９１とステップＳ９２の処理は、図１２のステップＳ５１とステップＳ５２の処理それぞれと同様である。
【０１５７】
但し、ステップＳ９２のエントリ処理の内容は、図１２のステップＳ５２のエントリ処理の内容と一部異なる。
【０１５８】
そこで、図１９のフローチャートを参照して、図１８のステップＳ９２のエントリ処理を説明する。なお、図１９において、図１９のステップＳ１０１とステップＳ１０２それぞれの処理は、図１３のステップＳ６１とステップＳ６２それぞれの処理と同様であるので、その説明は省略する。
【０１５９】
ステップＳ１０３において、再送処理部２６は、NACKリスト２７の注目エントリに登録されているカウント値を１だけインクリメントし、ステップＳ１０４に進む。
【０１６０】
ここで、図１９のエントリ処理が行われる場合というのは、パケットロスが検知された場合であり、従って、NACKリスト２７のエントリに登録されているカウント値は、パケットロスが検知されるたびに、ステップＳ１０３において１だけインクリメントされる。
【０１６１】
ステップＳ１０４において、再送処理部２６は、NACK生成判定処理を行い、リターンする。
【０１６２】
図２０は、図１９のNACK生成判定処理（ステップＳ１０４）を説明するフローチャートである。
【０１６３】
ステップＳ１１１において、再送処理部２６は、注目エントリに登録されているパケット情報におけるカウント値が、図１６のステップＳ７３で決定されたカウント値の上限値Ｎ以上（またはより大きい）かどうかを判定する。ステップＳ１１１において、注目エントリのカウント値が、カウント値の上限値Ｎ以上でないと判定された場合、リターンする。即ち、注目エントリのカウント値がカウント値の上限値Ｎ以上になっていない場合には、その注目エントリに対応する未着パケットの再送要求は行われない。
【０１６４】
一方、ステップＳ１１１において、注目エントリのカウント値が、カウント値の上限値Ｎ以上であると判定された場合、再送処理部２６は、その注目エントリに対応する未着パケットのシーケンス番号をNACK作成部２８に供給し、ステップＳ１１２に進む。
【０１６５】
ステップＳ１１２において、NACK作成部２８は、再送処理部２６から供給された未着パケットのシーケンス番号を記述したNACKパケットを生成し、ネットワーク入出力部２１に供給して、ステップＳ１１３に進む。
【０１６６】
ステップＳ１１３において、再送処理部２６は、その注目エントリのカウント値を０に初期化（リセット）し、リターンする。
【０１６７】
なお、図１７のステップＳ８２と、図２０のステップＳ１１２とでは、個別のNACKパケットを生成してもよいし、その個別のNACKパケットに配置されるべきシーケンス番号すべてを配置した１つのNACKパケットを生成してもよい。
【０１６８】
図２１を参照して、カウント値の上限値Ｎが２に決定される場合のカウント値の変化と再送要求について説明する。
【０１６９】
図２１では、受信装置４において、往復遅延時間RTT内に、３回のパケットロスＬ0、パケットロスＬ1、パケットロスＬ2が検知されている。いま、説明を簡単にするため、パケットロスＬ0とパケットロスＬ1との間のロス間隔、およびパケットロスＬ1とパケットロスＬ2との間のロス間隔が等しいものとすると、上述の数２によれば、カウント値の上限値Ｎは２に決定される。
【０１７０】
パケットロスＬ0が発生した場合、受信装置４は、パケットロスＬ0に対する未着パケットＰ0（のパケット情報）のカウント値を０に初期化（図１７のステップＳ８４）し、また、未着パケットＰ0に対する再送要求としてのNACKパケットを生成して（図１７のステップＳ８２）、送信装置２に送信する。
【０１７１】
次に、パケットロスＬ1が発生した場合、受信装置４は、パケットロスＬ1に対する未着パケットＰ1のカウント値を０に初期化（図１７のステップＳ８４）し、さらに、NACKリスト２７に登録されている未着パケットＰ0のカウント値０を１だけインクリメントすることにより１とする（図１９のステップＳ１０３）。また、受信装置４は、未着パケットＰ1に対する再送要求としてのNACKパケットを生成し（図１７のステップＳ８２）、送信装置２に送信する。なお、いまの場合、未着パケットＰ0のカウント値１＜カウント値の上限値２なので、未着パケットＰ0に対する再送要求は行われない。
【０１７２】
その後、パケットロスＬ2が発生した場合、受信装置４は、パケットロスＬ2に対する未着パケットＰ2のカウント値を０に初期化し（図１７のステップＳ８４）、未着パケットＰ0および未着パケットＰ1のカウント値をそれぞれ１だけインクリメントする（図１９のステップＳ１０３）。その結果、未着パケットＰ0のカウント値が、カウント値の上限値２と等しくなり、未着パケットＰ1のカウント値が１となる。したがって、パケットロスＬ2が発生した場合、受信装置４は、未着パケットＰ2に対する再送要求としてのNACKパケットを生成するとともに（図１７のステップＳ８２）、未着パケットＰ0に対する再送要求としてのNACKパケットを生成し（図２０のステップＳ１１２）、送信装置２に送信する。なお、いまの場合、未着パケットＰ1のカウント値１＜カウント値の上限値２なので、未着パケットＰ1に対する再送要求は行われていない。
【０１７３】
さらに、未着パケットＰ0に対する再送要求が行われたことに応じて、受信装置４は、未着パケットＰ0のカウント値を０に初期化する（図２０のステップＳ１１３）。
【０１７４】
図２２を参照して、図１４のロス間隔計測部２９の他のロス間隔計測方法を説明する。
【０１７５】
図１４のロス間隔計測部２９では、ロス間隔(loss interval time)を、実際に計測することにより求める他、送信装置２から送信されたパケットのうち、パケット交換網３上等でパケットロスが発生して受信装置４において未着パケットとなる割合を表すロス率（loss probability）と、ストリーム帯域（パケット交換網３上で、パケットの伝送に用いられる伝送帯域）から求めることができる。
【０１７６】
ロス率をｒ[％]、ロス間隔をＴ[ｓ]、１秒あたりに送信されるパケット数をＮ[packets/s]とすると、ロス率ｒとロス間隔Ｔの関係は、数３で表される。
【０１７７】
【数３】
2005198055.tif 000005
【０１７８】
また、図２のパケット作成部１２で作成されるパケットの平均のサイズをＰ[ｋＢ]とすると、１秒あたりに送信されるパケット数Ｎと、ストリームの使用帯域Ｂ[Ｍｂｐｓ]との関係は、数４で表される。
【０１７９】
【数４】
2005198055.tif 000006
【０１８０】
数４を変形すると、数５が得られる。
【０１８１】
【数５】
2005198055.tif 000007
【０１８２】
数３と数５の２つの関係式より、数６が導かれる。
【０１８３】
【数６】
2005198055.tif 000008
【０１８４】
一般的に、インターネットで送信されるパケットの平均のパケットサイズは、約１[ｋＢ]であるため、ここでは、パケット作成部１２で作成されるパケットの平均のサイズＰを１として、ロス率ｒとロス間隔Ｔの関係を数６により算出すると、図２２に示すようなグラフが得られる。
【０１８５】
図２２においては、横軸がロス率ｒを、縦軸がロス間隔Ｔを表している。
【０１８６】
ロス間隔Ｔは、同じロス率ｒに対してストリーム帯域Ｂの大きさが大きい程、小さくなる。ロス間隔計測部２９では、ロス率ｒを求め、そのロス率ｒから、図２２のグラフを用いて、ロス間隔Ｔを求めることができる。
【０１８７】
以上のように、パケットロスが発生した場合に、NACKリスト２７に登録されている未着パケットのカウント値が１だけインクリメントされ、そのカウント値が、ロス間隔と往復遅延時間RTTとから求められた上限値Ｎ以上の場合に、そのカウント値に対応する未着パケットの再送要求が行われる。
【０１８８】
したがって、ロス間隔が、往復遅延時間RTTに対して十分短い場合には、あるロスパケットに対する１回目のNACKパケットが送信された後、すぐに２回目のNACKパケットが送信されるといった、同一のロスパケットに対する複数のNACKパケットが次々に送信されることを回避することができる。即ち、ロス間隔が短く、従って、ロス率ｒが高い場合に、無駄なNACKパケットが送信されることを防止することができる。その結果、パケット交換網３上のトラフィックの増加を抑えることができる。
【０１８９】
一方、ロス間隔が、往復遅延時間RTTに対して十分長い場合、即ち、ロス率ｒが低い場合には、NACKパケットの送信頻度が多くなり、その結果、迅速に、再送パケットを得ることが可能となる。
【０１９０】
上述した一連の処理は、ハードウエアにより実行させることもできるが、ソフトウエアにより実行させることもできる。
【０１９１】
上述した一連の処理をソフトウエアで実行させる場合、送信装置２や受信装置４は、例えば、図２３に示されるようなコンピュータなどによって構成することが可能である。
【０１９２】
図２３において、CPU４１は、ROM（Read Only Memory）４２に記憶されているプログラム、または記憶部４８からRAM（Random Access Memory）４３にロードされたプログラムに従って各種の処理を実行する。
【０１９３】
RAM４３にはまた、CPU４１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０１９４】
CPU４１、ROM４２、およびRAM４３は、バス４４を介して相互に接続されている。このバス４４にはまた、入出力インタフェース４５も接続されている。
【０１９５】
入出力インタフェース４５には、キーボード、マウスなどよりなる入力部４６、ディスプレイなどよりなる出力部４７、ハードディスクなどより構成される記憶部４８、および通信部４９が接続されている。
【０１９６】
入出力インタフェース４５にはまた、必要に応じてドライブ５０が接続され、磁気ディスク５１、光ディスク５２、光磁気ディスク５３、或いは半導体メモリ５４が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部４８にインストールされる。
【０１９７】
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
【０１９８】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図２３に示すように、磁気ディスク５１（フロッピディスクを含む）、光ディスク５２（CD-ROM(Compact Disk-Read Only Memory)、DVD(Digital Versatile Disk)を含む）、光磁気ディスク５３（ＭＤ（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリ５４などよりなるパッケージメディア、または、プログラムが一時的もしくは永続的に格納されるROM４２や、記憶部４８を構成するハードディスクなどにより構成される。プログラム格納媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【０１９９】
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２００】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０２０１】
なお、本実施の形態においては、パケット交換網３としては、インターネットを採用しているが、これに限らず、その他の任意の有線または無線の通信回線を採用することができる。
【０２０２】
また、出力装置１は、上述したビデオカメラ等の他、マイク（マイクロフォン）、ラジカセ（ラジオ放送受信機付きのカセットレコーダ）、CD（Compact Disc）プレーヤ、MDプレーヤなどであってもよい。さらに、送信装置２から受信装置４に送信するデータは、音声データであってもよい。
【０２０３】
また、本実施の形態においては、パケット作成部１２が生成するパケットとしては、他の機器との相互接続性を確保するため、標準のプロトコルであるRTPで使用される図４に示したRTPパケットを採用したが、これに限らず、その他、パケットのシーケンス番号およびタイムスタンプ（または、これらに相当する情報）を含むパケットであれば、どのようなものであってもよい。
【０２０４】
さらに、本実施の形態においては、図１４の受信装置４においてロス間隔と往復遅延時間RTTに応じて、NACKパケットの送信を制御するようにしたが、その他、例えば、受信装置４では、パケットロスが生じたときに、全ての未着パケットについてのNACKパケットを送信装置２に送信するとともに、送信装置２では、受信装置４から送信されてくるNACKパケットを受信する間隔をロス間隔として計測し、そのロス間隔と往復遅延時間RTTに応じて、再送パケットの送信を制御するようにすることも可能である。
【図面の簡単な説明】
【０２０５】
【図１】本発明を適用した通信システムの一実施の形態の構成例を示すブロック図である。
【図２】図１の送信装置２の構成例を示すブロック図である。
【図３】パケット作成部１２が生成するパケットのフォーマットを示す図である。
【図４】図１の受信装置４の構成例を示すブロック図である。
【図５】NACKリスト２７のエントリを示す図である。
【図６】図４のNACK作成部２８において作成されるNACKパケットのフォーマットを示す図である。
【図７】送信装置２のパケット送信処理を説明するフローチャートである。
【図８】送信装置２の再送パケット送信処理を説明するフローチャートである。
【図９】受信装置４のパケット受信処理を説明するフローチャートである。
【図１０】図９のステップＳ２５のNACK処理を説明するフローチャートである。
【図１１】図１０のステップＳ３１のロスパケット処理を説明するフローチャートである。
【図１２】図１０のステップＳ３２のNACKリスト更新処理を説明するフローチャートである。
【図１３】図１２のステップＳ５２のエントリ処理を説明するフローチャートである。
【図１４】図１の受信装置４の他の構成例を示すブロック図である。
【図１５】図１４のNACKリスト２７のエントリを示す図である。
【図１６】図１４の再送処理部２６のNACK処理（図９のステップＳ２５）を説明するフローチャートである。
【図１７】図１６のステップＳ７１のロスパケット処理を説明するフローチャートである。
【図１８】図１６のステップＳ７４のNACKリスト更新処理を説明するフローチャートである。
【図１９】図１８のステップＳ９２のエントリ処理を説明するフローチャートである。
【図２０】図１９のステップＳ１０４のNACK生成判定処理を説明するフローチャートである。
【図２１】カウント値の上限値Ｎが２の場合のカウント値の変化と再送要求について説明する図である。
【図２２】ロス率とロス間隔との関係を示す図である。
【図２３】本発明を適用したプログラムを実行するコンピュータのハードウエア構成例を示すブロック図である。
【符号の説明】
【０２０６】
１  出力装置，  ２  送信装置，  ３  パケット交換網，  ４  受信装置，  ５  表示装置，  １１  入力部，  １２  パケット作成部，  １３  ネットワーク入出力部，  １４  再送制御部，  １５  再送バッファ，  １６  NACK解析部，  ２１  ネットワーク入出力部，  ２２  パケット解析部，  ２３  出力バッファ，  ２４  出力部，  ２５  RTT計測部，  ２６  再送処理部，  ２７  NACKリスト，  ２８  NACK作成部，  ２９  ロス間隔計測部，  ４１  ＣＰＵ，  ４２  ＲＯＭ，  ４３  ＲＡＭ，  ４４  バス，  ４５  入出力インタフェース，  ４６  入力部，  ４７  出力部，  ４８  記憶部，  ４９  通信部，  ５０  ドライブ，  ５１  磁器ディスク，  ５２  光ディスク，  ５３  光磁器ディスク，  ５４  半導体メモリ
【図１】
2005198055.tif 000009
【図２】
2005198055.tif 000010
【図３】
2005198055.tif 000011
【図４】
2005198055.tif 000012
【図５】
2005198055.tif 000013
【図６】
2005198055.tif 000014
【図７】
2005198055.tif 000015
【図８】
2005198055.tif 000016
【図９】
2005198055.tif 000017
【図１０】
2005198055.tif 000018
【図１１】
2005198055.tif 000019
【図１２】
2005198055.tif 000020
【図１３】
2005198055.tif 000021
【図１４】
2005198055.tif 000022
【図１５】
2005198055.tif 000023
【図１６】
2005198055.tif 000024
【図１７】
2005198055.tif 000025
【図１８】
2005198055.tif 000026
【図１９】
2005198055.tif 000027
【図２０】
2005198055.tif 000028
【図２１】
2005198055.tif 000029
【図２２】
2005198055.tif 000030
【図２３】
2005198055.tif 000031