JP2006067410A - 送信装置および方法、プログラム、並びに送受信システム - Google Patents
送信装置および方法、プログラム、並びに送受信システム Download PDFInfo
- Publication number
- JP2006067410A JP2006067410A JP2004249560A JP2004249560A JP2006067410A JP 2006067410 A JP2006067410 A JP 2006067410A JP 2004249560 A JP2004249560 A JP 2004249560A JP 2004249560 A JP2004249560 A JP 2004249560A JP 2006067410 A JP2006067410 A JP 2006067410A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- sequence number
- reorder
- packets
- transmission
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】ネットワークへの負荷を少なくして、送信装置がRTTを計算することができるようにする。
【解決手段】 サーバ12のRTP生成部72は、ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された複数のRTPパケットを生成し、複数のRTPパケットのうちの1つのRTPパケットを、再生される順番と異なる順番にリオーダし、送信部81に供給してクライアントに送信させる。RTT計算部76は、クライアントから送信されてきたRTPパケットの再送要求を表すNACKパケットに格納されているシーケンス番号が、リオーダ履歴保持部74に記憶されているリオーダされたRTPパケットのシーケンス番号と一致する場合に、現在時刻と、リオーダされたRTPパケットの送信時刻とから、RTT(Round Trip Time)を計算する。本発明は、例えば、送信レートを制御してデータを送受信するシステムに適用できる。
【選択図】図3
【解決手段】 サーバ12のRTP生成部72は、ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された複数のRTPパケットを生成し、複数のRTPパケットのうちの1つのRTPパケットを、再生される順番と異なる順番にリオーダし、送信部81に供給してクライアントに送信させる。RTT計算部76は、クライアントから送信されてきたRTPパケットの再送要求を表すNACKパケットに格納されているシーケンス番号が、リオーダ履歴保持部74に記憶されているリオーダされたRTPパケットのシーケンス番号と一致する場合に、現在時刻と、リオーダされたRTPパケットの送信時刻とから、RTT(Round Trip Time)を計算する。本発明は、例えば、送信レートを制御してデータを送受信するシステムに適用できる。
【選択図】図3
Description
本発明は、送信装置および方法、プログラム、並びに送受信システムに関し、特に、ネットワークへの負荷を少なくして、送信装置がRTTを計算することができる送信装置および方法、プログラム、並びに送受信システムに関する。
昨今、インターネットなど、種々の通信媒体を介して、画像データまたは音声データを伝送して提供するサービスが一般に行われている。特に、近年、ダウンロード型の伝送方式のサービスに加えて、ストリーム型の伝送方式のサービスがより多く提供されるようになってきた。
ダウンロード型の伝送方式のサービスにおいては、受信装置が、送信装置から送信された画像または音声のデータを格納するファイルを受信し、受信したファイルを自分の記録媒体に記録する。受信装置は、ファイルの記録が完了した後、記録したファイルを基に、画像または音声を再生する。ダウンロード型の伝送方式のサービスにおいては、ファイルの記録が完了するまでは、再生することができないので、ダウンロード型の伝送方式のサービスは、長時間の再生またはリアルタイムの再生には適さない。
一方、ストリーム型の伝送方式のサービスにおいては、受信装置が、送信装置から送信されてくるデータを受信するとともに、これに並行して、受信されたデータを基に画像または音声を再生する。ストリーム型の伝送方式は、インターネット電話、遠隔テレビ会議、またはビデオオンデマンドなどのインターネットサービスに利用されている。
ストリーム型の伝送方式において、送信装置から送信されてくるデータを、一般にストリーミングデータと称する。
より具体的な例として、ストリーム型の伝送方式は、画像データにMPEG(Moving Picture Experts Group)符号化処理を適用することにより生成されるMPEGストリームを格納する、IP(Internet Protocol)パケットをインターネットを介して伝送するシステムで使用される。このシステムにおいて、受信装置である、PC(Personal Computer)、PDA(Personal Digital Assistance)、または携帯電話機は、IPパケットを受信し、画像を再生する。
ストリーム型の伝送方式は、ビデオオンデマンド若しくはライブ映像のストリーミング配信、ビデオ会議、またはテレビ電話などのリアルタイム通信に適している。
このようなストリーム型の伝送方式の技術の1つとして、IETF RFC(Internet Engineering Task Force Request For Comments)3550で規定されているプロトコルであるRTP(Real-time Transport Protocol)がある。
RTPに基づくデータ伝送においては、生成された時刻を示すタイムスタンプがパケットに付加され、タイムスタンプの参照により送信側と受信側の時間的関係が把握されるので、受信側において、パケット伝送の遅延ゆらぎ(ジッタ−)などの影響が排除され、同期した再生が可能になる。
しかし、RTPにおいて、実時間のデータの伝送は保証されない。すなわち、パケット配信の優先度や設定、管理などは、RTPによって提供されるトランスポートサービスの範疇ではないため、他の方式のパケットと同様、ネットワーク上での遅延やパケットロスが生じる可能性がある。
遅延やパケットロスが生じても、受信側は、再生時刻までに受信されたパケットだけを利用してデータを再生することができる。すなわち、受信装置は、データに多少の損失や誤りが発生しても、品質を落として再生するか、またはデータの損失や誤りを訂正して再生する。
この場合、再生に間に合わず遅延して配送されたパケットやエラーの発生したパケットは、受信側でそのまま破棄される。つまり、高品質なデータ配信処理を行おうとしても、パケットロスやエラーが発生したときは、受信側の再生の品質は保証されない。
このようなRTPに従ったデータ伝送における品質の問題を解決する案として、データ伝送の信頼性のより高い転送プロトコルであるTCP(Transmission Control Protocol)に従ってパケットの再送要求およびパケットの再送を行う方法が考えられる。
しかしながら、TCPにおいて、パケットロスが生じた場合、パケットが再送されるので、エラーには強いが、受信側において、再送されたパケットの受信が再生時刻に間に合わない可能性があり、リアルタイム通信には不向きである。
そこで、RTPに基づくデータ伝送に、ARQ(Automatic Repeat Request)などのエラー訂正の方式を採用することにより、リアルタイム性を満足しつつ、受信側の再生の品質を出来るだけ良くするようにした伝送方式が実現されている。ARQ方式は、受信したRTPパケットに含まれるシーケンス番号をチェックし、順番にインクリメントされるはずのシーケンス番号に抜けた番号があった場合、受信装置が、送信装置に対して、その抜けた番号のRTPパケットの再送要求を送信し、送信側に再度送信させることにより、パケットエラーを回復する方式である。
一方、パケットロスを発生させないようにするため(受信側の再生の品質を維持するため)に、送信側である送信装置では、ネットワークの輻輳(状態)を検知し、その輻輳に応じて、送信レートを制御することが考えられる。即ち、送信装置は、ネットワークが輻輳であるとみなされる場合には、送信レートを低くし、ネットワークが非輻輳であるとみなされる場合には、送信レートを上げてRTPパケットを受信装置に送信する。
ここで、ネットワークの輻輳を検知する方法としては、RTT(Round Trip Time;往復伝播遅延時間)を計測する方法がある(例えば、特許文献1および2参照)。
従って、例えば、送信装置が、RTTを定期的に計測し、計測されたRTTが増える傾向にあるのであれば、ネットワークが輻輳であるとみなし、計測されたRTTが減少する傾向にあるのであれば、ネットワークが非輻輳であるとみなすことにより、送信レートを制御するようにすればよい。
しかしながら、送信装置がRTTを計算するためには、従来の方法では、送信装置が、RTTを計算するためのRTPパケットであるRTT計測パケットを生成して、受信装置に送信し、その送信されたRTT計測パケットが受信装置から返信されてくるまでの往復時間を計算するなどしていた。
この方法によれば、ネットワーク上に、RTTを計算するためだけの無駄なパケットが流れることになり、ネットワークに負荷を与えることになっていた。また、送信装置および受信装置の両方にRTT計測パケットを処理する手段を設けなければならず、送信装置および受信装置ともに、その構成が複雑になるという問題があった。
本発明は、このような状況に鑑みてなされたものであり、ネットワークへの負荷を少なくして、送信装置がRTTを計算することができるようにするものである。
本発明の送信装置は、ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された複数のパケットを生成し、複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成手段と、パケット生成手段においてリオーダされたパケットであるリオーダパケットを含む複数のパケットを他の装置に送信する送信手段と、リオーダパケットがリオーダされずに本来の再生される順番で他の装置に送信されたとした場合のリオーダパケットの送信時刻と、リオーダパケットのシーケンス番号とを記憶する記憶手段と、他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信手段と、再送要求パケットに格納されているシーケンス番号が、記憶手段に記憶されているリオーダパケットのシーケンス番号と一致するか否かを判定する判定手段と、再送要求パケットに格納されているシーケンス番号と、記憶手段に記憶されているリオーダパケットのシーケンス番号とが一致する場合に、現在時刻と送信時刻とから、RTT(Round Trip Time)を計算するRTT計算手段とを備えることを特徴とする。
パケット生成手段には、所定の時間ごとに、複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダさせるようにすることができる。
本発明の送信方法は、ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された複数のパケットを生成し、複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成ステップと、パケット生成ステップにおいてリオーダされたパケットであるリオーダパケットを含む複数のパケットを他の装置に送信する送信ステップと、リオーダパケットがリオーダされずに本来の再生される順番で他の装置に送信されたとした場合のリオーダパケットの送信時刻と、リオーダパケットのシーケンス番号とを記憶手段に記憶させる記憶ステップと、他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信ステップと、再送要求パケットに格納されているシーケンス番号が、記憶手段に記憶されているリオーダパケットのシーケンス番号と一致するか否かを判定する判定ステップと、再送要求パケットに格納されているシーケンス番号と、記憶手段に記憶されているリオーダパケットのシーケンス番号とが一致する場合に、現在時刻と送信時刻とから、RTT(Round Trip Time)を計算するRTT計算ステップとを含むことを特徴とする。
本発明のプログラムは、ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された複数のパケットを生成し、複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成ステップと、パケット生成ステップにおいてリオーダされたパケットであるリオーダパケットを含む複数のパケットを他の装置に送信する送信ステップと、リオーダパケットがリオーダされずに本来の再生される順番で他の装置に送信されたとした場合のリオーダパケットの送信時刻と、リオーダパケットのシーケンス番号とを記憶手段に記憶させる記憶ステップと、他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信ステップと、再送要求パケットに格納されているシーケンス番号が、記憶手段に記憶されているリオーダパケットのシーケンス番号と一致するか否かを判定する判定ステップと、再送要求パケットに格納されているシーケンス番号と、記憶手段に記憶されているリオーダパケットのシーケンス番号とが一致する場合に、現在時刻と送信時刻とから、RTT(Round Trip Time)を計算するRTT計算ステップとを含む処理をコンピュータに実行させることを特徴とする。
本発明の送受信システムは、第1の装置は、ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された複数のパケットを生成し、複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成手段と、パケット生成手段においてリオーダされたパケットであるリオーダパケットを含む複数のパケットを第2の装置に送信する第1の送信手段と、リオーダパケットがリオーダされずに本来の再生される順番で第2の装置に送信されたとした場合のリオーダパケットの送信時刻と、リオーダパケットのシーケンス番号とを記憶する記憶手段と、第2の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する第1の受信手段と、再送要求パケットに格納されているシーケンス番号が、記憶手段に記憶されているリオーダパケットのシーケンス番号と一致するか否かを判定する判定手段と、再送要求パケットに格納されているシーケンス番号と、記憶手段に記憶されているリオーダパケットのシーケンス番号とが一致する場合に、現在時刻と送信時刻とから、RTT(Round Trip Time)を計算するRTT計算手段とを備え、第2の装置は、第1の装置から送信されてくる複数のパケットを受信する第2の受信手段と、第2の受信手段により受信された複数のパケットのシーケンス番号が再生される順番と異なる順番である場合に、本来の再生される順番となるために必要なパケットの再送要求パケットを送信する第2の送信手段とを備えることを特徴とする。
本発明においては、ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された複数のパケットが生成され、複数のパケットのうちの1つのパケットが、再生される順番と異なる順番にリオーダされる。また、リオーダされたパケットであるリオーダパケットを含む複数のパケットが他の装置に送信され、リオーダパケットがリオーダされずに本来の再生される順番で他の装置に送信されたとした場合のリオーダパケットの送信時刻と、リオーダパケットのシーケンス番号とが記憶手段に記憶される。そして、他の装置から送信されてくる、パケットの再送を要求する再送要求パケットが受信され、その再送要求パケットに格納されているシーケンス番号と、記憶手段に記憶されているリオーダパケットのシーケンス番号とが一致する場合に、現在時刻と送信時刻とから、RTT(Round Trip Time)が計算される。
本発明によれば、ネットワークへの負荷を少なくして、送信装置がRTTを計算することができる。
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
請求項1に記載の送信装置は、
ストリーミングデータを格納した複数のパケットの送信処理を行う送信装置(例えば、図3のサーバ12)において、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成手段(例えば、図3のRTP生成部72)と、
前記パケット生成手段においてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを他の装置に送信する送信手段(例えば、図3の送信部81)と、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記他の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶する記憶手段(例えば、図3のリオーダ履歴保持部74)と、
前記他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信手段(例えば、図3の受信部82)と、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定手段(例えば、図3のNACK処理部75)と、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算手段(例えば、図3のRTT計算部76)と
を備えることを特徴とする。
ストリーミングデータを格納した複数のパケットの送信処理を行う送信装置(例えば、図3のサーバ12)において、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成手段(例えば、図3のRTP生成部72)と、
前記パケット生成手段においてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを他の装置に送信する送信手段(例えば、図3の送信部81)と、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記他の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶する記憶手段(例えば、図3のリオーダ履歴保持部74)と、
前記他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信手段(例えば、図3の受信部82)と、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定手段(例えば、図3のNACK処理部75)と、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算手段(例えば、図3のRTT計算部76)と
を備えることを特徴とする。
請求項3に記載の情報処理方法は、
ストリーミングデータを格納した複数のパケットの送信方法において、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成ステップ(例えば、図8のステップS9の処理)と、
前記パケット生成ステップにおいてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを他の装置に送信する送信ステップ(例えば、図8のステップS11の処理)と、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記他の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶手段に記憶させる記憶ステップ(例えば、図8のステップS12の処理)と、
前記他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信ステップ(例えば、図9のステップS31の処理)と、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定ステップ(例えば、図9のステップS32の処理)と、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算ステップ(例えば、図9のステップS53の処理)と
を含むことを特徴とする。
ストリーミングデータを格納した複数のパケットの送信方法において、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成ステップ(例えば、図8のステップS9の処理)と、
前記パケット生成ステップにおいてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを他の装置に送信する送信ステップ(例えば、図8のステップS11の処理)と、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記他の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶手段に記憶させる記憶ステップ(例えば、図8のステップS12の処理)と、
前記他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信ステップ(例えば、図9のステップS31の処理)と、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定ステップ(例えば、図9のステップS32の処理)と、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算ステップ(例えば、図9のステップS53の処理)と
を含むことを特徴とする。
請求項5に記載の送受信システムは、
ストリーミングデータを格納した複数のパケットを送受信する第1および第2の装置からなる送受信システムにおいて、
前記第1の装置(例えば、図3のサーバ12)は、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成手段(例えば、図3のRTP生成部72)と、
前記パケット生成手段においてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを前記第2の装置に送信する第1の送信手段(例えば、図3の送信部81)と、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記第2の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶する記憶手段(例えば、図3のリオーダ履歴保持部74)と、
前記第2の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する第1の受信手段(例えば、図3の受信部82)と、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定手段(例えば、図3のNACK処理部75)と、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算手段(例えば、図3のRTT計算部76)と
を備え、
前記第2の装置(例えば、図4のクライアント14)は、
前記第1の装置から送信されてくる前記複数のパケットを受信する第2の受信手段(例えば、図4の受信部111)と、
前記第2の受信手段により受信された前記複数のパケットの前記シーケンス番号が再生される順番と異なる順番である場合に、本来の前記再生される順番となるために必要なパケットの前記再送要求パケットを送信する第2の送信手段(例えば、図4の送信部112)と
を備える
ことを特徴とする。
ストリーミングデータを格納した複数のパケットを送受信する第1および第2の装置からなる送受信システムにおいて、
前記第1の装置(例えば、図3のサーバ12)は、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成手段(例えば、図3のRTP生成部72)と、
前記パケット生成手段においてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを前記第2の装置に送信する第1の送信手段(例えば、図3の送信部81)と、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記第2の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶する記憶手段(例えば、図3のリオーダ履歴保持部74)と、
前記第2の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する第1の受信手段(例えば、図3の受信部82)と、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定手段(例えば、図3のNACK処理部75)と、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算手段(例えば、図3のRTT計算部76)と
を備え、
前記第2の装置(例えば、図4のクライアント14)は、
前記第1の装置から送信されてくる前記複数のパケットを受信する第2の受信手段(例えば、図4の受信部111)と、
前記第2の受信手段により受信された前記複数のパケットの前記シーケンス番号が再生される順番と異なる順番である場合に、本来の前記再生される順番となるために必要なパケットの前記再送要求パケットを送信する第2の送信手段(例えば、図4の送信部112)と
を備える
ことを特徴とする。
以下、図を参照して、本発明の実施の形態について説明する。
図1は、本発明を適用したストリーミング配信システムの一実施の形態の構成例を示している。
図1のストリーミング配信システムにおいては、インターネットなどの通信網13に、サーバ12およびクライアント14が接続されている。
ビデオカメラ11は、画像を撮像して、撮像した画像に対応する画像データをサーバ12に供給する。例えば、ビデオカメラ11は、動画像を撮像して、動画像に対応する画像データをサーバ12に供給する。
画像データは、ストリーミングデータの一例である。ストリーミングデータは、音声のデータ、またはリアルタイム制御データなど、時間の経過に対応して順次送信または受信が要求されるデータであればよい。
サーバ12は、コンピュータなどにより構成され、クライアント14からストリーミングデータの配信が要求された場合、ビデオカメラ11から供給される画像データをパケットに格納して、その画像データが格納されたパケットを、通信網13を介してクライアント14に送信する。
通信網13は、有線または無線の、通信回線、ネットワーク、またはインターネットなどからなる伝送路であり、サーバ12から送信されたパケットをクライアント14まで伝送する。また、通信網13は、クライアント14から送信された、所定のパケットの再送要求を表すパケットであるNACKパケット(再送要求パケット)をサーバ12まで伝送する。
クライアント14は、コンピュータなどにより構成され、サーバ12から送信されてくるパケットを受信する。また、クライアント14は、受信したパケットから画像データを抽出し、抽出した画像データに基づいて、画像を表示装置等(図示せず)に表示させる。
図2は、サーバ12のハードウエアの構成例を示すブロック図である。
CPU(Central Processing Unit)31は、ROM(Read Only Memory)32、または記録部38に記録されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)33には、CPU31が実行するプログラムやデータなどが適宜記憶される。これらのCPU31,ROM32、およびRAM33は、バス34により相互に接続されている。
CPU31にはまた、バス34を介して入出力インタフェース35が接続されている。入出力インタフェース35には、キーボード、マウス、スイッチなどよりなる入力部36、ディスプレイ、スピーカ、ランプなどよりなる出力部37が接続されている。CPU31は、入力部36から入力される指令に対応して各種の処理を実行する。
入出力インタフェース35に接続されている記録部38は、例えばハードディスクなどで構成され、CPU31が実行するプログラムや各種のデータを記録する。通信部39は、例えば、モデムやターミナルアダプタなどにより構成され、インターネット、その他のネットワークなどの通信網13を介して、クライアント14などの外部の装置と通信する。また、通信部39は、通信網13を介してプログラムを取得する。これにより取得されたプログラムは、CPU31の制御に従い、記録部38に記録される。
入出力インタフェース35に接続されているドライブ40は、磁気ディスク51、光ディスク52、光磁気ディスク53、或いは半導体メモリ54などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部38に転送され、記録される。
なお、図1のクライアント14のハードウエアも、上述した図2のサーバ12と同様に構成されるので、同図を適用する。
図3は、サーバ12の機能的な構成例を示すブロック図である。
サーバ12は、エンコーダ71、RTP生成部72、再送用バッファ73、リオーダ履歴保持部74、NACK処理部75、RTT計算部76、および通信部77により構成される。また、通信部77は、送信部81および受信部82により構成される。
図3において、エンコーダ71、RTP生成部72、NACK処理部75、およびRTT計算部76の機能は、例えば、図2のCPU31に所定のプログラムを実行させることにより実現することができる。また、再送用バッファ73、およびリオーダ履歴保持部74の機能は、RAM33または記録部38により実現することができる。さらに、通信部77の機能は、図2の通信部39により実現することができる。
エンコーダ71は、フレームレートを決定するタイマ(以下、FRタイマという)を内蔵している。そして、エンコーダ71は、所定の時間に設定されたFRタイマのカウントが終了するまでの間にビデオカメラ11から供給される画像データを、1フレームとしてキャプチャする。例えば、FRタイマの設定時間が、33msecに設定されている場合、フレームレートは、30fps(frame per second)となる。
また、エンコーダ71は、ビデオカメラ11から供給される画像データを所定の方式(例えば、MPEG1,2,4,7、もしくは21,JPEG(Joint Photographic Experts Group)、JPEG2000、またはモーションJPEGなど)によりエンコード(符号化)し、そのエンコードされた(1フレームごとの)画像データをRTP生成部72に供給する。
RTP生成部72は、1フレーム分の画像データを複数の画像データに分割し、その分割された画像データそれぞれを格納した複数のRTPパケットを生成する。なお、同一の1フレームを構成する複数の画像データそれぞれが格納されている複数のRTPパケットには、共通のタイムスタンプが設定される。また、RTPパケットそれぞれには、画像データが再生される順番にシーケンス番号が付与される(図6で後述)。
また、RTP生成部72は、生成した1フレームあたり複数のRTPパケットを、通常は、シーケンス番号通りに(シーケンス番号に従って)通信部77の送信部81および再送用バッファ73に供給する。
さらに、RTP生成部72は、所定の設定時間経過ごとに、1フレームあたり複数のRTPパケットのうちの1つのRTPパケットを、シーケンス番号と異なる順番に故意にリオーダし(入れ替え)、通信部77の送信部81および再送用バッファ73に供給する。RTP生成部72は、シーケンス番号をリオーダさせる所定の設定時間をカウントするリオーダタイマを有している。ここで、リオーダタイマは、例えば、1secなどに設定される。以下では、シーケンス番号と異なる順番に故意にリオーダさせたRTPパケットをリオーダRTPパケットという。
また、RTP生成部72は、リオーダRTPパケットが本来送信されるべき時刻と、リオーダRTPパケットのシーケンス番号とをリオーダ履歴保持部74に供給する。ここで、リオーダRTPパケットが本来送信されるべき時刻とは、リオーダRTPパケットがリオーダされずに本来の再生される順番でクライアント14に送信されたとした場合のリオーダRTPパケットの送信時刻を意味する。
なお、後述する送信部81では、RTP生成部72から供給されたRTPパケットを即座にクライアント14に送信する。従って、RTP生成部72がRTPパケットを送信部81に供給したときの時刻は、サーバ12がクライアント14にRTPパケットを送信した送信時刻とみなすことができる。
リオーダ履歴保持部74は、RTP生成部72から供給される、リオーダRTPパケットが本来送信されるべき時刻(送信時刻)と、リオーダRTPパケットのシーケンス番号と(以下、リオーダRTPパケットの、送信時刻とシーケンス番号とのセットという)を記憶(保持)する。
再送用バッファ73は、RTP生成部72から供給されるRTPパケットを一時的に記憶する。そして、再送用バッファ73は、NACK処理部75からの要求に応じて、記憶しているRTPパケットをNACK処理部75に供給する。
NACK処理部75には、通信部77の受信部82から、所定のRTPパケットの再送要求を表すNACKパケット(再送要求パケット)が供給される。NACK処理部75は、リオーダ履歴保持部74を参照し、NACKパケットに格納されているシーケンス番号が、リオーダ履歴保持部74に記憶されている、リオーダRTPパケットのシーケンス番号と一致するか否かを判定する。
NACKパケットに格納されているシーケンス番号がリオーダRTPパケットのシーケンス番号と一致しないと判定された場合、即ち、通信網13上において、RTPパケットのパケットロスが実際に発生し、クライアント14よりNACKパケットが送信されてきた場合、NACK処理部75は、NACKパケットに格納されているシーケンス番号のRTPパケットを再送用バッファ73から抽出(取得)し、送信部81に供給する。
一方、NACKパケットに格納されているシーケンス番号がリオーダRTPパケットのシーケンス番号と一致すると判定された場合、即ち、NACKパケットにより再送が要求されているRTPパケットは、パケットロスが発生したのではなく、RTP生成部72がリオーダしたことにより再送が要求されているRTPパケットである場合、NACK処理部75は、NACKパケットに格納されているシーケンス番号をRTT計算部76に供給する。従って、この場合、NACK処理部75から送信部81には、NACKパケットにより要求されているRTPパケットは供給されない。
RTT計算部76には、NACK処理部75から、シーケンス番号が供給される。RTT計算部76は、計時機能を有し、NACK処理部75からシーケンス番号が供給されたときの現在時刻を取得する。NACKパケットに格納されているシーケンス番号がリオーダRTPパケットのシーケンス番号と一致すると判定された場合、NACK処理部75により、シーケンス番号が即座にRTT計算部76に供給されるので、RTT計算部76が取得した現在時刻は、受信部82がNACKパケットを受信したときの受信時刻とみなすことができる。
また、RTT計算部76は、NACK処理部75から供給されるシーケンス番号と同一のシーケンス番号を有するリオーダRTPパケットの、シーケンス番号と送信時刻とのセットをリオーダ履歴保持部74から取得する。
そして、RTT計算部76は、NACK処理部75からシーケンス番号が供給されたときの現在時刻(NACKパケットの受信時刻)と、リオーダ履歴保持部74から取得した送信時刻とから、RTTを計算する。即ち、RTT計算部76は、NACK処理部75からシーケンス番号が供給されたときの現在時刻(NACKパケットの受信時刻)と、リオーダ履歴保持部74から取得した送信時刻との差(RTT=現在時刻−送信時刻)としてRTTを求める。
送信部81は、RTP生成部72またはNACK処理部75から供給されるRTPパケットを、通信網13を介して(即座に)クライアント14に送信する。受信部82は、クライアント14から送信されてくるNACKパケット(再送要求パケット)を受信し、受信したNACKパケットを(即座に)NACK処理部75に供給する。
図4は、クライアント14の機能的な構成例を示すブロック図である。
クライアント14は、通信部101、RTP処理部102、デコーダ103、およびNACK処理部104により構成される。また、通信部101は、受信部111および送信部112により構成される。
図4において、通信部101の機能は、図2の通信部39により実現することができる。また、RTP処理部102、デコーダ103、およびNACK処理部104の機能は、図2のCPU31に所定のプログラムを実行させることにより実現することができる。
受信部111は、通信網13を介して、サーバ12から送信されてくるRTPパケットを受信し、受信したRTPパケットをRTP処理部102に供給する。送信部112は、NACK処理部104から供給されるNACKパケットを、通信網13を介して、サーバ12に送信する。
RTP処理部102には、RTPパケットが受信部111から供給される。RTP処理部102は、供給されたRTPパケットから画像データを抽出し、デコーダ103に供給する。また、RTP処理部102は、受信部111から供給されるRTPパケットからシーケンス番号を抽出し、抽出したシーケンス番号をNACK処理部104に供給する。
デコーダ103は、RTP処理部102から供給される画像データを、エンコーダ71(図3)に対応する方式によりデコードし、デコードされた画像データを表示装置等(図示せず)に出力して表示させる。
NACK処理部104は、RTP処理部102から順に供給される(受信部111が受信した順番で供給される)、RTPパケットのシーケンス番号に基づいて、パケットロスが発生したか否かを判定する。そして、パケットロスが発生した場合、NACK処理部104は、そのRTPパケットのシーケンス番号を格納したNACKパケットを送信部112に供給する。これにより、送信部112より、NACKパケットがサーバ12(の受信部82)に送信される。
なお、NACK処理部104において、パケットロスが発生したと判定される場合は、通信網13上において、RTPパケットのパケットロスが実際に発生した場合の他に、RTPパケットがリオーダされている場合も含まれる。
例えば、1,2,3,4,6,5・・・のように、RTPパケットのシーケンス番号が、RTP処理部102からNACK処理部104に供給された場合、NACK処理部104は、シーケンス番号6が供給された時点で、シーケンス番号5のRTPパケットを損失した(パケットロスが発生した)と判定し、NACKパケットの要求シーケンス番号の領域(後述)にシーケンス番号5を格納したNACKパケットを送信部112に供給する。
また、例えば、1,2,3,4,7・・・のように、RTPパケットのシーケンス番号が、RTP処理部102からNACK処理部104に供給された場合、NACK処理部104は、シーケンス番号7が供給された時点で、シーケンス番号5と6のRTPパケットを損失した(パケットロスが発生した)と判定し、NACKパケットの要求シーケンス番号の領域にシーケンス番号5または6を格納したNACKパケットそれぞれを、送信部112に供給する。
次に、図5を参照して、サーバ12がRTTを計算する処理の概念を説明する。図5において、サーバ12およびクライアント14の横軸は、時間を表し、図中縦方向の同一直線上の時刻は、同一時刻を表す。
サーバ12は、1フレーム分の画像データから複数のRTPパケットを生成する。図5では、1フレーム分の画像データが7個のRTPパケットP1乃至P7となっている。そして、時刻t11において、サーバ12は、7個のRTPパケットP1乃至P7のクライアント14への送信を開始する。ここで、サーバ12のRTP生成部72は、RTPパケットP5をリオーダRTPパケットとし、RTPパケットP5とP6の順番をリオーダさせ(入れ替え)て、送信部81に供給する。これにより、図5に示すように、サーバ12からは、RTPパケットが、P1,P2,P3,P4,P6,P5,P7の順番でクライアント14に送信される。なお、RTPパケットP1,P2,P3,P4,P6,P5,P7に格納されているシーケンス番号は、それぞれ、1,2,3,4,6,5,7であるとする。
また、RTP生成部72は、リオーダRTPパケットP5が本来送信されるべき時刻t12と、RTPパケットP5のシーケンス番号5とをリオーダ履歴保持部74に供給し、そこに記憶させる。
時刻t11から所定の時間経過後の時刻t21において、クライアント14は、サーバ12から送信されてきたRTPパケットP1,P2,P3,P4,P6,P5,P7を順に受信する。そして、クライアント14の受信部111は、RTPパケットをP1,P2,P3,P4,P6,P5,P7の順にRTP処理部102に供給し、RTP処理部102は、シーケンス番号1,2,3,4,6,5,7を、順にNACK処理部104に供給する。
ここで、NACK処理部104は、シーケンス番号6が供給された時点(時刻t22)において、シーケンス番号5のRTPパケットを損失した(パケットロスが発生した)と判定し、要求シーケンス番号5を格納したNACKパケットを送信部112に供給する。これによりクライアント14(の送信部112)から、シーケンス番号5の再送を要求するNACKパケットがサーバ12に送信される。
時刻t22から所定の時間経過後の時刻t13において、クライアント14から送信されてきたNACKパケットがサーバ12(の受信部82)で受信される。そして、サーバ12のNACK処理部75は、NACKパケットに格納されているシーケンス番号5がリオーダ履歴保持部74に記憶されている、リオーダRTPパケットのシーケンス番号と一致するか否かを判定する。この例では、上述したように、リオーダ履歴保持部74には、リオーダRTPパケットP5の時刻t12とシーケンス番号5とのセットが記憶されているので、NACK処理部75は、NACKパケットに格納されているシーケンス番号5をRTT計算部76に供給する。
RTT計算部76は、リオーダ履歴保持部74に記憶されている、時刻t12とシーケンス番号5とのセットから取得される時刻t12(送信時刻)と、NACK処理部75からシーケンス番号5が供給されたときの時刻t13(受信時刻)とから、図中、T1で示されているRTTを計算する。
以上のようにして、サーバ12は、RTT計測用のRTT計測パケットをネットワーク(通信網13)上に送信することなく、RTTを計算することができる。即ち、ネットワークへの負担を少なくして、サーバ12がRTTを計算することができる。
なお、複数のRTPパケットのうちの、リオーダさせるRTPパケットは、どの位置(シーケンス番号の)RTPパケットであってもよい。
図6は、画像データが格納されるRTPパケットのフォーマットを示している。
図6に示すように、RTPパケットの先頭には、2ビットのバージョン情報(V)が配置される。バージョン情報(V)は、RTPパケットのバージョンを示す。バージョン情報(V)の次には、1ビットのパディング(P)が配置され、パディング(P)に続いて、1ビットの拡張情報(X)が配置される。拡張情報(X)は、RTPパケットに拡張ヘッダを配置する場合に、所定の値に設定される。
拡張情報(X)に続いて、CSRC(Contributing Source)カウント(CC)がRTPパケットに配置される。CSRCカウント(CC)は、CSRC識別子の数を表す。
CSRCカウント(CC)に続いて配置されている1ビットのマーカ情報(m)は、プロファイルによって定義される。マーカ情報(m)に続いて配置される、7ビットのペイロードタイプ(PT)は、RTPパケットのフォーマットを定義するための情報である。画像データが格納されるRTPパケットのペイロードタイプ(PT)は、33(PT=33)とされる。
ペイロードタイプ(PT)の次に、16ビットのシーケンス番号が配置される。シーケンス番号は、上述したように、RTPパケットの再生の順番を表す番号である。
シーケンス番号の次に配置される、32ビットのタイムスタンプは、そのRTPパケットに格納されているストリーミングデータの最初のオクテットがサンプルされた時刻を示す情報である。また、タイムスタンプにより、受信側においてRTPパケットの展開時に処理時間の制御が実行され、リアルタイム画像、または音声の再生制御を行うことが可能となる。タイムスタンプは、1つの画像フレームに属する複数のRTPパケットに共通のタイムスタンプが設定される。
SSRC(Synchronization Source)識別子は、タイムスタンプの次に配置される32ビットの情報であって、RTPパケットに格納されるストリーミングデータのソースを示す。
そして、SSRC識別子の次のオリジナルデータ(Original Data)には、画像データが格納される。
図7は、クライアント14がサーバ12に送信するNACKパケットのフォーマットを示している。
バージョン情報(V)、パディング(P)、およびSSRC識別子については、図6で説明したRTPパケットと同様であるので、その説明を省略する。
図7のNACKパケットでは、パディング(P)に続いて6ビットのサブタイプが配置される。また、NACKパケットのペイロードタイプ(PT)は204(PT=204)とされる。ペイロードタイプ(PT)の次に配置される、16ビットのメッセージ長(Message Length)には、NACKパケットの長さ(サイズ)を示す情報が入力される。
32ビットのSSRC識別子に続いて、32ビットの名前(NAME)が配置される。名前(NAME)は、例えば、NACKパケットを取り扱うアプリケーションプログラムの名前が入力される。
名前(NAME)に続いて配置される32ビットの要求シーケンス番号には、パケットロスが発生したとみなされるRTPパケットの、換言すれば、再送を要求するRTPパケットのシーケンス番号が入力される。従って、上述した図5のRTTを計算する処理では、時刻t22において、クライアント14がサーバ12に送信するNACKパケットには、ここの要求シーケンス番号に5が入力されることになる。
次に、図8のフローチャートを参照して、サーバ12のRTPパケットを送信する送信処理について説明する。
初めに、ステップS1において、サーバ12は、RTPパケットの送信処理に必要なデータを初期化して、ステップS2に進む。例えば、ステップS1において、エンコーダ71のFRタイマやRTP生成部72のリオーダタイマの値が0にセットされた後、それぞれのタイマのカウントが開始される。
ステップS2において、エンコーダ71は、FRタイマのカウントが終了したか否か、即ち、例えば、フレームレートを30fpsとした場合、FRタイマの設定時間である33msecが経過したか否かを判定する。ステップS2では、FRタイマのカウントが終了したと判定されるまで、同様の処理が繰り返される。
ステップS2において、FRタイマのカウントが終了したと判定された場合、即ち、FRタイマが0にセット(リセット)されてから、33msecの時間が経過した場合、ステップS3に進み、エンコーダ71は、ビデオカメラ11から供給された画像データを1フレーム分としてキャプチャする。
ステップS3の後、ステップS4に進み、エンコーダ71は、キャプチャした画像データをエンコードし、RTP生成部72に供給する。例えば、ステップS4において、エンコーダ71は、キャプチャした画像データをMPEG1、2、4、7、もしくは21、JPEG(Joint Photographic Experts Group)、JPEG2000、またはモーションJPEGなどの所定の方式によりエンコードし、RTP生成部72に供給して、ステップS5に進む。
ステップS5において、RTP生成部72は、リオーダタイマのカウントが終了したか否か、即ち、例えば、リオーダタイマが1secに設定されている場合、リオーダタイマが0にセット(リセット)されてから、1secの時間が経過したか否かを判定する。
ステップS5で、リオーダタイマのカウントが終了していないと判定された場合、即ち、リオーダタイマが0にセット(リセット)されてから、1secの時間が経過していない場合、ステップS6に進み、RTP生成部72は、エンコーダ71から供給された1フレーム分の画像データから、複数のRTPパケットを生成し、ステップS7に進む。従って、ステップS6で、RTP生成部72において生成された複数のRTPパケットは、リオーダされない。即ち、シーケンス番号通りに整列している。
ステップS7において、RTP生成部72は、ステップS6で生成した、シーケンス番号通りに整列されている複数のRTPパケットを、送信部81および再送用バッファ73に供給する。また、ステップS7において、再送用バッファ73は、RTP生成部72から供給された複数のRTPパケットを記憶して、ステップS8に進む。
ステップS8において、送信部81は、RTP生成部72から供給された複数のRTPパケットを、通信網13を介して、クライアント14に送信し、ステップS14に進む。
一方、ステップS5において、リオーダタイマのカウントが終了したと判定された場合、即ち、リオーダタイマが0にセット(リセット)されてから、1secの時間が経過した場合、ステップS9に進み、RTP生成部72は、エンコーダ71から供給された1フレーム分の画像データから、複数のRTPパケットを生成し、その複数のRTPパケットのうちの1つのRTPパケットを、リオーダRTPパケットとしてシーケンス番号と異なる順番にリオーダさせる。
ステップS9の後、ステップS10に進み、RTP生成部72は、ステップS9で生成した、1つのRTPパケットがリオーダされている複数のRTPパケットを、送信部81および再送用バッファ73に供給する。また、ステップS10において、再送用バッファ73は、RTP生成部72から供給された複数のRTPパケットを記憶して、ステップS11に進む。
ステップS11において、送信部81は、RTP生成部72から供給された、1つのRTPパケットがリオーダされている複数のRTPパケットを、通信網13を介して、クライアント14に送信して、ステップS12に進む。
ステップS12において、RTP生成部72は、ステップS9でリオーダさせた1つのRTPパケットの(リオーダRTPパケットの)、送信時刻とシーケンス番号とのセットをリオーダ履歴保持部74に供給し、記憶させる。また、ステップS12において、リオーダ履歴保持部74は、RTP生成部72から供給された送信時刻とシーケンス番号とのセットを記憶して、ステップS13に進む。なお、ステップS11とS12の処理は、並行に実行することができる。
ステップS13において、RTP生成部72は、リオーダタイマをリセット(0にセット)して、ステップS14に進む。
ステップS14において、RTP生成部72は、RTPパケットに格納するタイムスタンプを更新して、ステップS15に進む。
ステップS15において、エンコーダ71は、FRタイマをリセット(0にセット)して、ステップS2に戻り、以下、同様の処理が繰り返される。
以上のように、図8の送信処理によれば、ビデオカメラ11から供給される画像データが30fpsのフレームレートでキャプチャされ、1フレームの画像データが、同一のタイムスタンプが格納された複数のRTPパケットとして、サーバ12からクライアント14に送信される。
また、図8の送信処理によれば、リオーダタイマのカウントが終了するごとに(1secごとに)、1つのRTPパケットがシーケンス番号と異なる順番にリオーダされた複数のRTPパケットが、サーバ12からクライアント14に送信される。なお、リオーダタイマの設定時間を所望の値に変更することにより、サーバ12が所望のタイミングでRTTを計算することもできる。
図8の送信処理において、FRタイマのリセット(ステップS15の処理)は、ステップS3乃至S14の処理が終了した後に実行するようにしたが、ステップS2のFRタイマのカウント終了後、直ちに実行するようにしてもよい。同様に、リオーダタイマのリセット(ステップS13の処理)は、ステップS9乃至S12の処理が終了した後に実行するようにしたが、ステップS5のリオーダタイマのカウント終了後、直ちに実行するようにしてもよい。
次に、図9のフローチャートを参照して、サーバ12のNACK処理部75のNACK処理について説明する。
初めに、ステップS31において、NACK処理部75は、受信部82で受信されたNACKパケットが供給されたか否かを判定し、NACKパケットが供給されたと判定されるまで、同様の処理が繰り返される。
一方、ステップS31で、NACKパケットが供給されたと判定された場合、ステップS32に進み、NACK処理部75は、NACKパケットに格納されているシーケンス番号が、リオーダ履歴保持部74に記憶されているシーケンス番号と一致するか否かを判定する。
ステップS32において、NACKパケットに格納されているシーケンス番号が、リオーダ履歴保持部74に記憶されているシーケンス番号と一致すると判定された場合、即ち、NACKパケットにより、クライアント14から再送要求が出されたRTPパケットは、サーバ12が故意にリオーダさせたRTPパケットである場合、ステップS33に進み、NACK処理部75は、NACKパケットに格納されているシーケンス番号をRTT計算部76に供給して、ステップS31に戻り、以下、同様の処理が繰り返される。
一方、ステップS32において、NACKパケットに格納されているシーケンス番号が、リオーダ履歴保持部74に記憶されているシーケンス番号と一致しないと判定された場合、即ち、クライアント14から再送要求が出されたRTPパケットが、実際に発生したパケットロスによるものである場合、ステップS34に進み、NACK処理部75は、NACKパケットに格納されているシーケンス番号と同一のシーケンス番号を有するRTPパケット(再送RTPパケット)を、再送用バッファ73から抽出(取得)して、ステップS35に進む。
ステップS35において、NACK処理部75は、ステップS34で再送用バッファ73から抽出した再送RTPパケットを送信部81に供給して、ステップS31に戻り、以下、同様の処理が繰り返される。なお、ステップS35において送信部81に供給された再送RTPパケットは、送信部81により、通信網13を介して、クライアント14に送信される。
次に、図10のフローチャートを参照して、RTT計算処理部76のRTT計算処理について説明する。
初めに、ステップS51において、RTT計算処理部76は、NACK処理部75からシーケンス番号が供給されたか否かを判定する。ステップS51でNACK処理部75から供給されるシーケンス番号は、上述した図9のステップS33においてNACK処理部75がRTT計算処理部76に供給するシーケンス番号であり、サーバ12が故意にリオーダさせたRTPパケットのシーケンス番号である。
ステップS51では、NACK処理部75からシーケンス番号が供給されるまで、同様の処理が繰り返され、NACK処理部75からシーケンス番号が供給されたと判定された場合、ステップS52に進み、RTT計算部76は、NACK処理部75からシーケンス番号が供給されたときの現在時刻(NACKパケットの受信時刻)を取得する。また、ステップS52において、RTT計算部76は、NACK処理部75から供給されるシーケンス番号と同一のシーケンス番号を有するリオーダRTPパケットの、シーケンス番号と送信時刻とのセットをリオーダ履歴保持部74から取得して、ステップS53に進む。
ステップS53において、RTT計算部76は、NACK処理部75からシーケンス番号が供給されたときの現在時刻(NACKパケットの受信時刻)と、リオーダ履歴保持部74から取得した送信時刻とから、RTT(=現在時刻−送信時刻)を計算して、ステップS51に戻り、以下、同様の処理が繰り返される。
次に、図11のフローチャートを参照して、クライアント14のNACK処理部104のNACK処理について説明する。
初めに、ステップS71において、NACK処理部104は、RTP処理部102から供給されるRTPパケットのシーケンス番号に基づいて、パケットロスが発生したか否かを判定し、パケットロスが発生したと判定されるまで、同様の処理が繰り返される。
一方、ステップS71において、パケットロスが発生したと判定された場合、ステップS72に進み、NACK処理部104は、パケットロスが発生したRTPパケットのシーケンス番号を格納したNACKパケットを送信部112に供給して、ステップS71に戻り、以下、同様の処理が繰り返される。ステップS72において、NACK処理部104から送信部112に供給されたNACKパケットは、送信部112からサーバ12(の受信部82)に送信される。
以上のように、図1のストリーミング配信システムによれば、サーバ12のRTP生成部72は、ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された複数のRTPパケットを生成する。また、RTP生成部72は、所定の時間(上述のリオーダタイマの設定時間)ごとに、生成した複数のRTPパケットのうちの1つのRTPパケットを、再生される順番と異なる順番にリオーダする。送信部81は、RTP生成部72から供給された、リオーダされたRTPパケット(リオーダRTPパケット)を含む複数のRTPパケットをクライアント14に送信する。
また、サーバ12のリオーダ履歴保持部74は、リオーダRTPパケットがリオーダされずに本来の再生される順番でクライアント14に送信されたとした場合のリオーダRTPパケットの送信時刻と、そのリオーダRTPパケットのシーケンス番号とを記憶する。
そして、サーバ12の受信部82が、クライアント14から送信されてくる、RTPパケットの再送を要求するNACKパケット(再送要求パケット)を受信し、NACK処理部75に供給する。NACK処理部75は、受信部82から供給されたNACKパケットに格納されているシーケンス番号が、リオーダ履歴保持部74に記憶されているリオーダRTPパケットのシーケンス番号と一致するか否かを判定し、NACKパケットが表すシーケンス番号と、リオーダ履歴保持部74に記憶されているリオーダRTPパケットのシーケンス番号とが一致する場合に、RTT計算部76にシーケンス番号を供給する。RTT計算部76は、現在時刻と、リオーダRTPパケットの送信時刻とから、RTT(Round Trip Time)を計算する。
また、図1のストリーミング配信システムによれば、クライアント14の受信部111は、サーバ12の送信部81から送信されてくる複数のRTPパケットを受信し、RTP処理部102に供給する。RTP処理部102は、受信部111から供給された複数のRTPパケットのシーケンス番号をNACK処理部104に供給する。NACK処理部104は、シーケンス番号がリオーダされている(再生される順番と異なる順番である)場合に、そのリオーダされているRTPパケット(本来の再生される順番となるために必要なRTPパケット)のNACKパケットを送信部112に供給する。送信部112は、NACK処理部104から供給されたNACKパケットをサーバ12に送信する。
これにより、サーバ12は、RTTを計算するための特別のRTT計算用RTPパケットをクライアント14に送信せずに、RTTを計算することが可能となる。即ち、通信網13(ネットワーク)への負担を少なくして、RTTを計算することができる。また、サーバ14がRTT計算用RTPパケットを送信してこないので、クライアント14にRTT計算用の特別の処理部を設ける必要がなく、クライアント14を単純な構成とすることができるとともに、プログラム等の変更も必要としない。
さらに、サーバ12は、リオーダタイマの設定時間を任意の値に変更することにより、所望のタイミングでRTTを計算することができる。
なお、本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
12 サーバ, 14 クライアント, 72 RTP生成部, 74 リオーダ履歴保持部, 75 NACK処理部, 76 RTT計算部, 77 通信部, 81 送信部, 82 受信部, 101 通信部, 111 受信部, 112 送信部
Claims (5)
- ストリーミングデータを格納した複数のパケットの送信処理を行う送信装置において、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成手段と、
前記パケット生成手段においてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを他の装置に送信する送信手段と、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記他の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶する記憶手段と、
前記他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信手段と、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定手段と、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算手段と
を備えることを特徴とする送信装置。 - 前記パケット生成手段は、所定の時間ごとに、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダする
ことを特徴とする請求項1に記載の送信装置。 - ストリーミングデータを格納した複数のパケットの送信方法において、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成ステップと、
前記パケット生成ステップにおいてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを他の装置に送信する送信ステップと、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記他の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶手段に記憶させる記憶ステップと、
前記他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信ステップと、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定ステップと、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算ステップと
を含むことを特徴とする送信方法。 - ストリーミングデータを格納した複数のパケットの送信処理を、コンピュータに実行させるプログラムにおいて、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成ステップと、
前記パケット生成ステップにおいてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを他の装置に送信する送信ステップと、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記他の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶手段に記憶させる記憶ステップと、
前記他の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する受信ステップと、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定ステップと、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算ステップと
を含むことを特徴とするプログラム。 - ストリーミングデータを格納した複数のパケットを送受信する第1および第2の装置からなる送受信システムにおいて、
前記第1の装置は、
前記ストリーミングデータとして再生される順番を表すシーケンス番号がそれぞれに格納された前記複数のパケットを生成し、前記複数のパケットのうちの1つのパケットを、再生される順番と異なる順番にリオーダするパケット生成手段と、
前記パケット生成手段においてリオーダされたパケットであるリオーダパケットを含む前記複数のパケットを前記第2の装置に送信する第1の送信手段と、
前記リオーダパケットがリオーダされずに本来の前記再生される順番で前記第2の装置に送信されたとした場合の前記リオーダパケットの送信時刻と、前記リオーダパケットの前記シーケンス番号とを記憶する記憶手段と、
前記第2の装置から送信されてくる、パケットの再送を要求する再送要求パケットを受信する第1の受信手段と、
前記再送要求パケットに格納されているシーケンス番号が、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号と一致するか否かを判定する判定手段と、
前記再送要求パケットに格納されているシーケンス番号と、前記記憶手段に記憶されている前記リオーダパケットの前記シーケンス番号とが一致する場合に、現在時刻と前記送信時刻とから、RTT(Round Trip Time)を計算するRTT計算手段と
を備え、
前記第2の装置は、
前記第1の装置から送信されてくる前記複数のパケットを受信する第2の受信手段と、
前記第2の受信手段により受信された前記複数のパケットの前記シーケンス番号が再生される順番と異なる順番である場合に、本来の前記再生される順番となるために必要なパケットの前記再送要求パケットを送信する第2の送信手段と
を備える
ことを特徴とする送受信システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004249560A JP2006067410A (ja) | 2004-08-30 | 2004-08-30 | 送信装置および方法、プログラム、並びに送受信システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004249560A JP2006067410A (ja) | 2004-08-30 | 2004-08-30 | 送信装置および方法、プログラム、並びに送受信システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006067410A true JP2006067410A (ja) | 2006-03-09 |
Family
ID=36113456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004249560A Withdrawn JP2006067410A (ja) | 2004-08-30 | 2004-08-30 | 送信装置および方法、プログラム、並びに送受信システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006067410A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113890870A (zh) * | 2021-09-30 | 2022-01-04 | 兰州乐智教育科技有限责任公司 | Rtp数据包排序方法、装置、电子设备及存储介质 |
-
2004
- 2004-08-30 JP JP2004249560A patent/JP2006067410A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113890870A (zh) * | 2021-09-30 | 2022-01-04 | 兰州乐智教育科技有限责任公司 | Rtp数据包排序方法、装置、电子设备及存储介质 |
CN113890870B (zh) * | 2021-09-30 | 2023-09-19 | 兰州乐智教育科技有限责任公司 | Rtp数据包排序方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100967377B1 (ko) | 데이터 통신 시스템, 데이터 송신 장치, 데이터 수신 장치, 데이터 통신 방법, 및 컴퓨터 프로그램을 기록한 매체 | |
US7443797B2 (en) | Medium streaming distribution system | |
JP3757857B2 (ja) | データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム | |
US9565482B1 (en) | Adaptive profile switching system and method for media streaming over IP networks | |
CN106686438B (zh) | 一种跨设备的音频图像同步播放的方法、装置及系统 | |
JP2006166489A (ja) | 走査フォーマット変換装置及び方法 | |
US9781488B2 (en) | Controlled adaptive rate switching system and method for media streaming over IP networks | |
JP4850932B2 (ja) | 画像伝送装置 | |
JP2002141945A (ja) | データ送信装置、およびデータ送信方法、並びにプログラム記憶媒体 | |
WO2011137837A1 (zh) | 一种快速频道切换时获取关键信息的方法、装置和系统 | |
JP3871661B2 (ja) | マルチメディアコンテンツ受信装置及びマルチメディアコンテンツ受信方法 | |
JP2005051299A (ja) | パケット送信装置、パケット受信装置、パケット送信方法及びパケット受信方法 | |
EP2308215B1 (en) | Thinning of packet-switched video data | |
JP4362761B2 (ja) | 送信装置および方法、記録媒体、並びにプログラム | |
JP2003179662A (ja) | データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム | |
JP3906678B2 (ja) | データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム | |
JP2006067410A (ja) | 送信装置および方法、プログラム、並びに送受信システム | |
JP4433281B2 (ja) | 受信装置および方法、記録媒体、並びにプログラム | |
JP5523163B2 (ja) | 送信装置、送信方法、プログラム | |
JP4876427B2 (ja) | 通信システム、送信装置、送信方法、受信装置、受信方法、およびプログラム | |
JP2005136547A (ja) | 通信システム、受信装置および方法、送信装置および方法、記録媒体、並びにプログラム | |
JP4506222B2 (ja) | 通信システム、送信装置および方法、並びにプログラム | |
JP2005136545A (ja) | 送信装置および方法、プログラム格納媒体、並びにプログラム | |
WO2016203870A1 (ja) | 送信装置、送信方法、及び通信システム | |
JP4541758B2 (ja) | 画像伝送装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20071106 |