(57)【要約】【課題】リアルタイムデータ伝送における、転送効率とデータのリアルタイム性を維持向上させる。【解決手段】ＴＣＰサーバー１は、入力されたリアルタイムデータを受信する受信部２１と、コネクション３−１、３−２、・・・３−ｎをオペレーティングシステムが識別可能に複数生成する複数コネクション生成部を有し、リアルタイムデータを送信するために複数のコネクションの状態を管理するコネクション管理部２２と、複数のコネクションのうちのいずれかでリアルタイムデータを送信する送信部２３を有する。【選択図】      図４
2005012711.tif 000002
【特許請求の範囲】
【請求項１】
クライアントからの要求に応じてサーバーからリアルタイムデータを、オペレーティングシステムが管理するプロトコルで通信のためのコネクションを介して伝送するリアルタイムデータ通信システムにおいて、
入力されたリアルタイムデータを受信する受信部と、上記コネクションをオペレーティングシステムが識別可能に複数生成する複数コネクション生成部を有し、リアルタイムデータを送信するために上記複数のコネクションの状態を管理するコネクション管理部と、上記複数のコネクションのうちのいずれかでリアルタイムデータを送信する送信部を有するサーバーと、
上記複数のコネクションのうちのいずれかで送信されたリアルタイムデータを受信する受信部と、上記コネクションをオペレーティングシステムが識別可能に複数生成する複数コネクション生成手段を有し、リアルタイムデータを受信するために上記コネクションの状態を管理するコネクション管理部と、受信されたリアルタイムデータを出力する送信部を有するクライアントと、
を備え、１セッションのリアルタイムデータを伝送するのに複数のコネクションを使用することを特徴とするリアルタイムデータ通信システム。
【請求項２】
請求項１記載のリアルタイムデータ通信システムにおいて、
上記サーバーの上記コネクション管理部は上記複数のコネクションを切り替えるコネクション切替部を有し、
生成された上記複数のコネクションを順次あるいは選択的に切り替えながら上記サーバーから上記クライアントへリアルタイムデータを伝送することを特徴とするリアルタイムデータ通信システム。
【請求項３】
請求項２記載のリアルタイムデータ通信システムにおいて、
上記サーバーの上記コネクション管理部はリアルタイムデータを伝送するパケットのうち遅延パケットを検出する遅延パケット検出部を有し、
上記遅延パケット検出部により遅延パケットが検出されたとき、上記コネクション切替部により他のコネクションに切り替えることを特徴とするリアルタイムデータ通信システム。
【請求項４】
請求項２記載のリアルタイムデータ通信システムにおいて、
上記サーバーの上記コネクション管理部は上記複数のコネクションの帯域の状態を監視する帯域監視部を有し、
上記帯域監視部により必要な帯域を満たさないコネクションが検出されたとき、上記コネクション切替部により他のコネクションに切り替えることを特徴とするリアルタイムデータ通信システム。
【請求項５】
請求項１記載のリアルタイムデータ通信システムにおいて、
上記クライアントの上記コネクション管理部は、１セッションのリアルタイムデータを複数のコネクションから受信する際に、リアルタイムデータの順序を整えて出力するデータ並べ替え部を有することを特徴とするリアルタイムデータ通信システム。
【請求項６】
クライアントからの要求に応じてリアルタイムデータを、オペレーティングシステムが管理するプロトコルで通信のためのコネクションを介して伝送するサーバーとしてのリアルタイムデータ通信装置において、
入力されたリアルタイムデータを受信する受信部と、
上記コネクションをオペレーティングシステムが識別可能に複数生成する複数コネクション生成部と、上記複数のコネクションを切り替えるコネクション切替部を有し、リアルタイムデータを送信するために上記複数のコネクションの状態を管理するコネクション管理部と、
上記複数のコネクションのうちのいずれかでリアルタイムデータを送信する送信部を備え、
生成された上記複数のコネクションを順次あるいは選択的に切り替えながら上記クライアントへリアルタイムデータを伝送することを特徴とするリアルタイムデータ通信装置。
【請求項７】
請求項６記載のリアルタイムデータ通信装置において、
上記コネクション管理部はリアルタイムデータを伝送するパケットのうち遅延パケットを検出する遅延パケット検出部を有し、
上記遅延パケット検出部により遅延パケットが検出されたとき、上記コネクション切替部により他のコネクションに切り替えることを特徴とするリアルタイムデータ通信装置。
【請求項８】
請求項６記載のリアルタイムデータ通信装置において、
上記コネクション管理部は上記複数のコネクションの帯域の状態を監視する帯域監視部を有し、
上記帯域監視部により必要な帯域を満たさないコネクションが検出されたとき、上記コネクション切替部により他のコネクションに切り替えることを特徴とするリアルタイムデータ通信装置。
【請求項９】
要求に応じてサーバーからオペレーティングシステムが管理するプロトコルで通信のためのコネクションを介して伝送されるリアルタイムデータを受信するクライアントとしてのリアルタイムデータ通信装置において、
上記複数のコネクションのうちのいずれかで送信されたリアルタイムデータを受信する受信部と、
上記コネクションをオペレーティングシステムが識別可能に複数生成する複数コネクション生成部と、１セッションのリアルタイムデータを複数のコネクションから受信する際に、リアルタイムデータの順序を整えて出力するデータ並べ替え部を有し、リアルタイムデータを受信するために上記コネクションの状態を管理するコネクション管理部と、受信されたリアルタイムデータを出力する送信部と、
を備え、複数のコネクションを使用して伝送された１セッションのリアルタイムデータを出力することを特徴とするリアルタイムデータ通信装置。
【請求項１０】
クライアントからの要求に応じてサーバーからリアルタイムデータを、オペレーティングシステムが管理するプロトコルで通信のためのコネクションを介して伝送するリアルタイムデータ通信方法において、
サーバーでは、入力されたリアルタイムデータを受信部により受信する受信ステップと、リアルタイムデータを送信するために上記複数のコネクションの状態を管理するコネクション管理部により上記コネクションをオペレーティングシステムが識別可能に複数生成する複数コネクション生成ステップと、上記複数のコネクションのうちのいずれかでリアルタイムデータを送信部により送信する送信ステップを有し、
クライアントでは、上記複数のコネクションのうちのいずれかで送信されたリアルタイムデータを受信部により受信する受信ステップと、リアルタイムデータを受信するために上記コネクションの状態を管理するコネクション管理部により上記コネクションをオペレーティングシステムが識別可能に複数生成する複数コネクション生成ステップと、受信されたリアルタイムデータを送信部より出力する送信ステップを有し、
１セッションのリアルタイムデータを複数のコネクションを使用して伝送することを特徴とするリアルタイムデータ通信方法。
【請求項１１】
請求項１０記載のリアルタイムデータ通信方法において、
上記サーバーの上記コネクション管理部は生成された上記複数のコネクションを切り替えるコネクション切替ステップを有し、
生成された上記複数のコネクションを順次あるいは選択的に切り替えながら上記サーバーから上記クライアントへリアルタイムデータを伝送することを特徴とするリアルタイムデータ通信方法。
【請求項１２】
請求項１１記載のリアルタイムデータ通信方法において、
上記サーバーの上記コネクション管理部はリアルタイムデータを伝送するパケットのうち遅延パケットを検出する遅延パケット検出ステップを有し、
上記遅延パケット検出ステップにより遅延パケットが検出されたとき、上記コネクション切替ステップにより他のコネクションに切り替えることを特徴とするリアルタイムデータ通信方法。
【請求項１３】
請求項１１記載のリアルタイムデータ通信方法において、
上記サーバーの上記コネクション管理部は上記複数のコネクションの帯域の状態を監視する帯域監視ステップを有し、
上記帯域監視ステップにより必要な帯域を満たさないコネクションが検出されたとき、上記コネクション切替ステップにより他のコネクションに切り替えることを特徴とするリアルタイムデータ通信方法。
【請求項１４】
請求項１０記載のリアルタイムデータ方法において、
上記クライアントの上記コネクション管理部は、１セッションのリアルタイムデータを複数のコネクションから受信する際に、リアルタイムデータの順序を整えて出力するデータ並べ替えステップを有することを特徴とするリアルタイムデータ通信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば、リアルタイムデータの通信を行うリアルタイムデータ通信システムに関するものである。
【０００２】
【従来の技術】
一般に、リアルタイムデータを伝送する場合はＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）の上でＲＴＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）を使うストリーミング技術が使用されてきた。ＵＤＰはコネクションレス型プロトコルでフロー制御や再送制御などの機構をもたないので、ある一定時間が経過したデータの必要性がなくなるリアルタイム伝送には非常に適していた。
【０００３】
それに対し、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）はコネクション型プロトコルでフロー制御や再送制御の機構を備え、蓄積型コンテンツのダウンロードやストリーミング配信に使用されてきた。ＴＣＰは、ＵＤＰでは難しい、ファイアーウォールやＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｏｒ）を通過することができるデータ伝送手段が確立されており、現在それは非常に有効である。
【０００４】
特許文献１には、利用者に応じたリソース制限を実行したコネクション制御を可能とするために、コネクション要求の利用を識別し、識別された利用者に応じて設定されたリソースの使用条件に従って使用するリソース領域を決定し、優先度の高い利用者に使用可能なリソースを多く設定する処理により、不特定多数の利用者からのコネクション要求がある通信処理装置において、特定のユーザーに対して優先的にコネクションを確立することが可能になる通信処理装置が開示されている。
【０００５】
【特許文献１】
特開２００３−１２５０２２号公報
【０００６】
【発明が解決しようとする課題】
しかし、上述した従来のリアルタイムデータ通信システムにより、ＴＣＰでリアルタイムデータの伝送を行おうとすると、パケットロスにより再送が繰り返されたり、フロー制御によりスループットが抑えられたりする。その結果、データの到着遅延が増大し、リアルタイム性が失われた無効なデータとなってしまう。また、あるパケットの再送が生じると、同じＴＣＰコネクション上に流れる後続パケットのリアルタイム性にも影響が及ぶ可能性があるという不都合があった。
【０００７】
また、ＴＣＰのフロー制御により狭められた帯域は、ＴＣＰのスロースタートのために元の帯域に戻るまでに時間がかかる。フロー制御により狭められた帯域以上のデータが流入している場合、一定期間にわたり元の帯域の品質を維持することは不可能であるという不都合があった。
このようなことから、ＴＣＰによるリアルタイムデータ伝送は困難であった。
【０００８】
そこで、本発明は、かかる点に鑑みてなされたものであり、ファイアーウォールやＮＡＴを越える通信に有効なＴＣＰを用いたリアルタイムデータ伝送における、転送効率とデータのリアルタイム性を維持向上させるリアルタイムデータ通信システム、リアルタイムデータ通信装置およびリアルタイムデータ通信方法を提供することを課題とする。
【０００９】
【課題を解決するための手段】
本発明のリアルタイムデータ通信システムのサーバーは、入力されたリアルタイムデータを受信する受信部と、コネクションをオペレーティングシステムが識別可能に複数生成する複数コネクション生成部を有し、リアルタイムデータを送信するために複数のコネクションの状態を管理するコネクション管理部と、複数のコネクションのうちのいずれかでリアルタイムデータを送信する送信部を有する。
【００１０】
また、クライアントは、複数のコネクションのうちのいずれかで送信されたリアルタイムデータを受信する受信部と、コネクションをオペレーティングシステムが識別可能に複数生成する複数コネクション生成手段を有し、リアルタイムデータを受信するためにコネクションの状態を管理するコネクション管理部と、受信されたリアルタイムデータを出力する送信部を有する。
【００１１】
これにより、本発明のリアルタイムデータ通信システムは、１セッションのリアルタイムデータを伝送するのに複数のコネクションを使用するものである。
【００１２】
従って本発明によれば、以下の作用をする。
オペレーティングシステムが識別可能に生成された複数コネクションを順次あるいは選択的に扱うことによりリアルタイムデータ通信を行う。
【００１３】
オペレーティングシステムが管理するプロトコルで複数のコネクション上でリアルタイムデータを通信する際に、オペレーティングシステムが識別可能に生成された複数のコネクションを順次あるいは選択的に利用して、転送効率とデータのリアルタイム性を向上させることができる。
【００１４】
あるコネクションが輻輳した場合に他のコネクションに瞬時に切り替えることにより、後続パケットの遅延を小さく抑制することを可能にする。
【００１５】
あらかじめ伝送のためのコネクションをオペレーティングシステムが識別可能に複数用意しておき、データ単位（例えばパケット単位）でコネクションを順次あるいは選択的に替えながらデータを送出することで、データの再送に伴う到着遅延を回避し、データのリアルタイム性を維持する。
【００１６】
また、コネクションの選択には帯域の状態が通信の条件を満たすスループットの高いものから行う。スループットが低くなったコネクションは新たに作り直す（リセット）ことでスループットの高いコネクションを常時準備しておくことができ、データの効率的な転送を可能とする。
【００１７】
【発明の実施の形態】
以下に、本発明の実施の形態について、適宜、図面を参照しながら説明する。
【００１８】
図１は、本発明の実施の形態に適用されるリアルタイムデータ通信システムの構成を示す図である。
本発明では、図１のようなリアルタイムデータを伝送する機器構成を想定する。説明をわかりやすくするために、ＴＣＰサーバー１を送信側、ＴＣＰクライアント２を受信側にしているが、どちらも同時に送受信できるものでも構わない。
【００１９】
図１において、ＴＣＰサーバー１とＴＣＰクライアント２は複数のＴＣＰコネクション１（３−１）、ＴＣＰコネクション２（３−２）、・・・ＴＣＰコネクションｎ（３−ｎ）で接続されており、このＴＣＰコネクション１（３−１）、ＴＣＰコネクション２（３−２）、・・・ＴＣＰコネクションｎ（３−ｎ）上を、ＴＣＰサーバー１に入力されたリアルタイムデータＤＩが流れ、ＴＣＰクライアント２からリアルタイムデータＤＯが出力されるものとする。
【００２０】
ＴＣＰサーバー１とＴＣＰクライアント２がＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバーもしくはクライアントとして実装されておりＴＣＰ上のＨＴＴＰによってデータの送受信を行う場合も、形態は図１と同様になる。
【００２１】
図２は、ＨＴＴＰプロクシ接続されたリアルタイムデータ通信システムの構成を示す図である。
ＴＣＰサーバー１とＴＣＰクライアント２間にＨＴＴＰプロクシ４が入る場合は図２のような形態をとる。この場合、ＴＣＰサーバー１とＴＣＰクライアント２間でＨＴＴＰプロクシ４がＴＣＰで運ばれてくるデータを転送しているだけならば、図１と同じと見なすことができる。
【００２２】
具体的には、図２において、ＨＴＴＰプロクシ４はＴＣＰサーバー１に対しては複数のＨＴＴＰコネクション１（５−１）、ＨＴＴＰコネクション２（５−２）、・・・ＨＴＴＰコネクションｎ（５−ｎ）で接続されるクライアント４−１として振る舞い、ＨＴＴＰプロクシ４はＴＣＰクライアント２に対しては複数のＨＴＴＰコネクション１（６−１）、ＨＴＴＰコネクション２（６−２）、・・・ＨＴＴＰコネクションｎ（６−ｎ）で接続されるサーバー４−２として振る舞うことになる。
【００２３】
ここで、リアルタイムデータＤＩ、ＤＯとは、ある一定期間に配送が完了することが望まれるデータである。例えば、ライブ配信やテレビ電話で扱われる映像や音声のデータである。このリアルタイムデータＤＩ、ＤＯはＴＣＰサーバー１に付けられたビデオカメラやマイクから得られる映像や音声のデータでも良いし、ネットワークで接続された他の機器（あるいはエンコーダ（圧縮装置））からＲＴＰパケットとして転送されるストリーミングデータでも良い。
【００２４】
リアルタイムもしくはストリーミングデータはパケットもしくは更に小さい単位にわけることができる。もし小分けされた一部のデータが通信途中で失われたとしても、受信側がそれ以降の後続データを受信することができれば、時刻に従って到着したデータを処理することが可能である。
【００２５】
総帯域幅が一定であれば、複数のＴＣＰのコネクションを用いても得られる総帯域自体は変わらないが、ＴＣＰコネクションは各コネクションにフロー制御をしており、その時々のスループットが各コネクションで異なる。そこで、最も条件の良いコネクションを選択し送信することで、効率的な転送を行うことができる。
【００２６】
例えば、何らかの理由でＴＣＰのスロースタートが働いてしまい、スループットが低いままのコネクションがあるとする。このコネクションはしばらくすると元の高いスループットへ戻るかもしれないが、その回復を待つよりは、より高いスループットが出るコネクションを選択して使用したほうがデータの伝送に一刻を争うリアルタイム伝送に適している。
【００２７】
図３は、伝送パケットおよびストリーミングデータパケット構成例を示す図である。
図３において、伝送パケット１１は、ＲＴＰヘッダ１２を有し、ＲＴＰヘッダ１２は、時間情報を示すシーケンスナンバーＳＮ１３およびタイムスタンプＴＳ１４を有する。
【００２８】
また、ストリーミングデータパケット１５は、ＲＴＰペイロードとしてのストリーミングデータを有する。
【００２９】
ここで、送信側のＴＣＰサーバー１は、時間情報を示すシーケンスナンバーＳＮ１３およびタイムスタンプＴＳ１４に基づいて遅延パケットの発生しているコネクションを検出して、他のコネクションに切り替えることができる。
【００３０】
また、受信側のＴＣＰクライアント２では、ストリーミングデータを再現するために、伝送パケット１１としてＲＴＰを使用する場合は、伝送パケット１１にあるＲＴＰのシーケンスナンバーＳＮ１３やタイムスタンプＴＳ１４などを用いてデータの順序を並べ替えることができる。なお、再現方法に関してはストリーミングデータパケット１５に示すＲＴＰペイロードとしてのストリーミングデータに依存する。
【００３１】
図４は、ＴＣＰサーバーの構成を示す図である。
図４において、ＴＣＰサーバー１は、入力されたリアルタイムデータＤＩを受信する受信部２１と、受信部２１で受信されたリアルタイムデータＤＩを複数のＴＣＰコネクション１（３−１）、ＴＣＰコネクション２（３−２）、・・・ＴＣＰコネクションｎ（３−ｎ）のいずれかでＴＣＰコネクション出力ＣＯとして出力する送信部と、複数のＴＣＰコネクション１（３−１）、ＴＣＰコネクション２（３−２）、・・・ＴＣＰコネクションｎ（３−ｎ）をオペレーティングシステムが識別可能に複数生成する複数コネクション生成部を有し、リアルタイムデータを送信するために複数のコネクションの状態を管理するコネクション管理部２２を有して構成される。
【００３２】
図５は、ＴＣＰクライアントの構成を示す図である。
図５において、ＴＣＰサーバー１は、複数のＴＣＰコネクション１（３−１）、ＴＣＰコネクション２（３−２）、・・・ＴＣＰコネクションｎ（３−ｎ）のいずれかで入力されたＴＣＰコネクション入力ＣＩを受信する受信部２５と、受信部２５で受信されたＴＣＰコネクション入力ＣＩをリアルタイムデータＤＯとして出力する送信部２６と、複数のＴＣＰコネクション１（３−１）、ＴＣＰコネクション２（３−２）、・・・ＴＣＰコネクションｎ（３−ｎ）をオペレーティングシステムが識別可能に複数生成する複数コネクション生成部を有し、リアルタイムデータを受信するために複数のコネクションの状態を管理するコネクション管理部２４を有して構成される。
【００３３】
図６は、コネクション管理部の構成を示す図である。
ＴＣＰサーバー１のコネクション管理部２２は、複数のＴＣＰコネクション１（３−１）、ＴＣＰコネクション２（３−２）、・・・ＴＣＰコネクションｎ（３−ｎ）をオペレーティングシステムが識別可能に複数生成する複数コネクション生成部３１と、複数のＴＣＰコネクション１（３−１）、ＴＣＰコネクション２（３−２）、・・・ＴＣＰコネクションｎ（３−ｎ）を切り替えるコネクション切替部３４を有し、生成された複数のＴＣＰコネクション１（３−１）、ＴＣＰコネクション２（３−２）、・・・ＴＣＰコネクションｎ（３−ｎ）を順次あるいは選択的に切り替えながらＴＣＰサーバー１からＴＣＰクライアント２へリアルタイムデータを伝送するように構成される。また、ＴＣＰクライアント２のコネクション管理部２４も同様の構成を有する。
【００３４】
また、ＴＣＰサーバー１のコネクション管理部２２はリアルタイムデータを伝送するパケットのうち遅延パケットを検出する遅延パケット検出部３２を有し、遅延パケット検出部３２により遅延パケットが検出されたとき、コネクション切替部３４により他のコネクションに切り替えるように構成される。また、ＴＣＰクライアント２のコネクション管理部２４も同様の構成を有する。
【００３５】
また、ＴＣＰサーバー１のコネクション管理部２２は複数のコネクションの帯域の状態を監視する帯域監視部３３を有し、帯域監視部３３により必要な帯域を満たさないコネクションが検出されたとき、コネクション切替部３４により他のコネクションに切り替えるように構成される。また、ＴＣＰクライアント２のコネクション管理部２４も同様の構成を有する。
【００３６】
また、ＴＣＰクライアント２のコネクション管理部２２は、１セッションのリアルタイムデータを複数のコネクションから受信する際に、リアルタイムデータの順序を整えて出力するデータ並べ替え部を有するように構成される。また、ＴＣＰサーバー１のコネクション管理部２４も同様の構成を有する。
【００３７】
図７は、複数コネクションの識別を示す図である。
ＴＣＰサーバー１では、オペレーティングシステムＯＳ４４が管理するプロトコルＴＣＰ４２で複数のコネクション上でインターネットプロトコルＩＰ４１を介してリアルタイムデータを送信する際に、オペレーティングシステムＯＳ４４が識別可能に生成された複数のコネクションを順次あるいは選択的に利用して、リアルタイムデータの分離をすることができる。
【００３８】
このとき、オペレーティングシステムＯＳ４４は、アプリケーションソフトウエア４５−１、アプリケーションソフトウエア４５−２、アプリケーションソフトウエア４５−３、・・・に対応するポート８０、ポート８１、ポート８２、・・・の切り替えにより複数のコネクションを識別する。また、切り替えによるデータの分離は、ストリーミングデータのパケット単位でする。
【００３９】
また、ＴＣＰクライアント２では、オペレーティングシステムＯＳ４４が管理するプロトコルＴＣＰ４２で複数のコネクション上でインターネットプロトコルＩＰ４１を介してリアルタイムデータを受信する際に、オペレーティングシステムＯＳ４４が識別可能に生成された複数のコネクションを順次あるいは選択的に利用して、リアルタイムデータの順序の並べ替えをすることができる。
【００４０】
このとき、オペレーティングシステムＯＳ４４は、アプリケーションソフトウエア４５−１、アプリケーションソフトウエア４５−２、アプリケーションソフトウエア４５−３、・・・に対応するポート８０、ポート８１、ポート８２、・・・の切り替えにより複数のコネクションを識別する。また、切り替えにより分離されたデータの順序の並べ替えは、ストリーミングデータのパケット単位でする。
【００４１】
次に、このように構成された本発明の実施の形態に適用されるリアルタイムデータ通信システムの動作の詳細を以下に説明する。
【００４２】
図８は、ＴＣＰサーバーの動作を示すフローチャートである。
図８は、リアルタイムデータを送信するＴＣＰサーバー１がＴＣＰコネクション３を作成し、リアルタイムデータを送信するまでのステップである。以下にその詳細を述べる。
【００４３】
ステップＳ１で、複数のＴＣＰコネクションを作成する。具体的には、ＴＣＰサーバー１が送信側処理開始すると、受信側のＴＣＰクライアント２へリアルタイムデータを送信するためのＴＣＰコネクション３を作成する。ＴＣＰサーバー１はＴＣＰクライアント２へ接続を能動的に確立しても良いし、ＴＣＰクライアント２からの接続を待機しても良い。ＴＣＰコネクション３は複数コネクション生成部３１により複数作成される。
【００４４】
ステップＳ２で、リアルタイムデータの入力を待つ。具体的には、ＴＣＰサーバー１は、前述のようにリアルタイムデータを送信側に直接付けられたカメラのような機器から得る場合と、ネットワーク上の他の機器からＲＴＰのようなパケットで得る場合がある。本発明の実施の形態ではいずれの場合も入力として同様に扱う。リアルタイムデータの入力があった場合、すぐに次の処理ステップＳ３へ行っても良いし、バッファやキューに複数データを蓄積してからステップＳ３に遷移しても良い。
【００４５】
ステップＳ３で、ステップＳ２においてリアルタイムデータの入力がタイムアウトであったか、そうでないかの判定、または、帯域に不備があったか、そうでないかの判定を行う。具体的には、リアルタイムデータの入力タイムアウトの判定は遅延パケット検出部３２により行われ、帯域不備の判定は帯域監視部３３により行われる。
【００４６】
もしタイムアウトまたは帯域不備がなかった場合はステップＳ６へ移る。タイムアウトまたは帯域不備があった場合はステップＳ４へ移る。
【００４７】
ステップＳ４で、ステップＳ２において入力されたデータを送信するためのＴＣＰコネクションを、ステップＳ１において作成したＴＣＰコネクションから選択する。具体的には、ＴＣＰコネクションの選択はコネクション切替部３４により行われ、選択方法は、作成されたＴＣＰコネクションを順番に指定する方法と、条件の良いＴＣＰコネクションを指定する方法がある。前者の選択方法は、ＴＣＰコネクション（ＴＣＰソケット）の状態を知ることが不可能な場合に役に立つ方法である。
【００４８】
この方法では、全てのＴＣＰコネクションを順番に使用し、ある特定のＴＣＰコネクションが輻輳した場合に後続するパケットへ影響が及び難くすることで、結果としてひとつのＴＣＰコネクションを利用した伝送よりも輻輳が発生した時の遅延を小さくできる。一方、後者の選択方法は、ＴＣＰコネクション（ＴＣＰソケット）から得られる情報（送信バッファ量、実効転送レート、ウィンドウサイズなど）を利用して行う選択方法である。リアルタイムデータのパケットは可能な限り迅速に伝送したいので、もっとも効率の良い条件のＴＣＰコネクションを選択してデータを送信するようにする。結果として、遅延を低く抑えた伝送が可能となる。
【００４９】
また、ＴＣＰコネクションの選択時において極端にスループットの低くなった、あるいは低い状態のままの、ＴＣＰコネクションを検知した場合は、そのＴＣＰコネクションをクローズして再度接続しなおすようにする。ＴＣＰは輻輳などが生じると、スロースタートの機構の為、一度小さくなったスループットが元のスループットへ回復するまでに時間がかかる。そこで、ＴＣＰの再接続オーバーヘッドがかかるとしても、ＴＣＰコネクションの作り直しを図ることで強制的なスループットのリセットを試みることにする。
【００５０】
ステップＳ５で、入力されたリアルタイムデータを選択されたＴＣＰコネクションで送信する。もし送信に失敗した場合は、リアルタイムデータをデータの欠落として破棄し、ステップＳ２で次のデータを送信する準備をしても良い。また、送信に成功した場合も、冗長なデータ送信を必要するならば、再度ステップＳ４に移り同じデータを別のＴＣＰコネクションで送信するように繰り返しても良い。
ステップＳ６で、ある一定期間の間に入力がなくなり終了する。
【００５１】
図９は、ＴＣＰクライアントの動作を示すフローチャートである。
図９は、リアルタイムデータ受信側のＴＣＰクライアント２がＴＣＰコネクション３を作成し、リアルタイムデータを受信し、出力するまでのステップである。以下にその詳細を述べる。
【００５２】
ステップＳ１１で、複数のＴＣＰコネクションを作成する。具体的には、ＴＣＰクライアント２は、受信側処理開始すると、送信側のＴＣＰサーバー１からリアルタイムデータを受信するためのＴＣＰコネクション３を作成する。ＴＣＰクライアント２は、ＴＣＰサーバー１へ接続を能動的に確立しても良いし、ＴＣＰサーバー１からの接続を待機しても良い。ＴＣＰコネクション３は複数コネクション生成部３１により複数作成される。
【００５３】
ステップＳ１２で、ＴＣＰコネクションからデータが受信できるまで待機し、可能になったらデータを受信する。データを受信した場合はステップＳ１３へ移る。全てのＴＣＰコネクションで受信タイムアウトが発生したことを遅延パケット検出部３２により検出したり帯域不備があったことを帯域監視部３３により検出した場合に送信側から全てのＴＣＰコネクションが切り替えられたりした場合はステップＳ１４へ移る。
【００５４】
ステップＳ１３で、受信されたデータを出力する。出力先は、ＴＣＰクライアント２に直接接続されたモニタやスピーカなどの再生装置でも良いし、ネットワーク上の他の機器（あるいはデコーダ（伸長装置））へ転送しても良い。出力が終わればステップＳ１２へ戻る。
【００５５】
ところで、複数のＴＣＰコネクションを通って受信されているのでリアルタイムデータ間で順序の入れ替えが発生しているかもしれない。再生装置で順序を補正するものがあるが、出力する際にデータ並べ替え部により順序を整えて出力しても良い。この場合は出力直前にバッファあるいはキューを設け、ある一定の量か期間のリアルタイムデータを蓄積し、古いデータから順に出力していく。
【００５６】
ステップＳ１４で、受信するデータがなくなった、あるいはＴＣＰコネクションが切断されたため、終了する。
【００５７】
図１０は、コネクション切替動作を説明する図である。
図１０において、ＴＣＰコネクション１（３−１）においてパケットＰ１にパケットロスが生じると、失ったパケットＰ１の再生を繰り返すので、遅延パケット検出部３２は後続のパケットＰ２、Ｐ３に遅延が生じたことをタイムスタンプＴＳ１４−２、タイムスタンプＴＳ１４−３により検出する。このとき、遅延パケット検出部３２はＴＣＰコネクション１（３−１）における遅延パケットの検出をコネクション切替部３４に通知する。
【００５８】
また、ＴＣＰコネクション２（３−２）においてフロー制御が働き、帯域が狭まったためパケットＰ４の転送レートが遅れてしまうことを、帯域監視部３３はバッファ５０−２にたまったパケットのデータ量を監視することにより検出する。このとき、帯域監視部３３はＴＣＰコネクション２（３−２）における帯域不備の検出をコネクション切替部３４に通知する。
【００５９】
そこで、コネクション切替部３４は、ＴＣＰコネクション１（３−１）またはＴＣＰコネクション２（３−２）から、より良い状態のＴＣＰコネクションｎ（３−ｎ）を選択して切り替えることにより、パケットＰ５、パケットＰ６、パケットＰ７、パケットＰ８、パケットＰ９、・・・をより効率的に転送することができる。
【００６０】
これにより、信頼性の高いＴＣＰコネクションの再送やフロー制御が副作用として働くことによる影響を受けないようにすることができ、効率の良いリアルタイムデータの伝送を可能にすることができる。
【００６１】
従来は、ＴＣＰの再送により昔のパケットを長い間に渡り再送を繰り返してしまい、それが後続するパケットにも影響するために、リアルタイムデータ伝送には向かないと考えられていた。この発明を用いれば、ＴＣＰコネクションを利用した映像や音声のリアルタイムコミュニケーションに役立てることができる。
【００６２】
つまり、複数のＴＣＰコネクションへ次々に最新のパケットを流すことが可能になるため、リアルタイム性の維持ができ、効率的な伝送を可能とする。この方式はＴＣＰ上のＨＴＴＰを用いた伝送にも有効であり、ＨＴＴＰプロクシによりファイアーウォールを越える伝送も可能となる。リアルタイム伝送には主にＵＤＰが使用されてきたが、一般にＵＤＰによる伝送はファイアーウォールを越えることが困難である。ＨＴＴＰと本発明を組み合わせることで、ファイアーウォールを越えるリアルタイムデータ伝送も可能となる。
【００６３】
上記のように複数のＴＣＰコネクション上に分散してリアルタイムデータを伝送するため、ある特定のＴＣＰコネクションで再送が生じても、後続するパケットはその影響を受けずに他のＴＣＰコネクションの送信キューに入れることができ、結果として遅延の影響がデータ全体に及ばない機構を実現できる。
【００６４】
本発明の実施の形態は、上述したものに限らず、ＨＴＴＰ、ＨＴＴＰＳ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ，Ｓｅｃｕｒｅ）、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  ｌａｙｅｒ）、ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）などのＴＣＰ上で用いられる各種プロトコルに適用可能である。
【００６５】
【発明の効果】
この発明により、リアルタイム伝送をする際に、適切なＴＣＰコネクションを選択することでデータのリアルタイム性を確保し、効率の良い伝送を実現することができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の実施の形態に適用されるリアルタイムデータ通信システムの構成を示す図である。
【図２】ＨＴＴＰプロクシ接続されたリアルタイムデータ通信システムの構成を示す図である。
【図３】伝送パケットおよびストリーミングデータパケット構成例を示す図である。
【図４】ＴＣＰサーバーの構成を示す図である。
【図５】ＴＣＰクライアントの構成を示す図である。
【図６】コネクション管理部の構成を示す図である。
【図７】複数コネクションの識別を示す図である。
【図８】ＴＣＰサーバーの動作を示すフローチャートである。
【図９】ＴＣＰクライアントの動作を示すフローチャートである。
【図１０】コネクション切替動作を説明する図である。
【符号の説明】
１……ＴＣＰサーバー、２……ＴＣＰクライアント、３……ＴＣＰコネクション、４……ＨＴＴＰプロクシ、１１……伝送パケット、１２……ＲＴＰヘッダ、１３……シーケンスナンバーＳＮ，１４……タイムスタンプＴＳ、１５……ストリーミングデータパケット、２１……受信部、２２……コネクション管理部、２３……受信部、２４……コネクション管理部、２６……送信部、３１……複数コネクション生成部、３２……遅延パケット検出部、３３……帯域監視部、３４……コネクション切替部、４１……ＩＰ、４２……ＴＣＰ、４３……ＵＤＰ、４４……ＯＳ、４５……アプリケーション、５０……バッファ
【図１】
2005012711.tif 000003
【図２】
2005012711.tif 000004
【図３】
2005012711.tif 000005
【図４】
2005012711.tif 000006
【図５】
2005012711.tif 000007
【図６】
2005012711.tif 000008
【図７】
2005012711.tif 000009
【図８】
2005012711.tif 000010
【図９】
2005012711.tif 000011
【図１０】
2005012711.tif 000012