以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
図1は、本発明の一実施の形態である映像配信システムの構成の一例を示す図である。図1において、当該映像配信システムは、映像配信サーバ102、帯域制御サーバ103、通信制御装置105、映像受信表示装置107、108を有する構成となっている。
映像配信サーバ102と帯域制御サーバ103と通信制御装置105とは、NGN(Next Generation Network)等のQoS(Quality of Service)制御可能なネットワーク101と接続しており、所定の手順に従って情報の送受信を行うことができる。また、通信制御装置105と映像受信表示装置107、108は、ユーザ宅104内に設置され、有線または無線で構成されるホームネットワーク106と接続しており、所定の手順に従って情報の送受信を行うことができる。
通信制御装置105は、ネットワーク101とホームネットワーク106の両方と接続しており、ユーザ宅104内に設置された機器にとって、ネットワーク101に接続された機器と情報の送受信を行うためのゲートウェイとしての機能を有する。
図2は、通信制御装置105のハードウェア構成の一例を示す図である。図2において、通信制御装置105は、CPU201、メインメモリ202、EPROM203、第1ネットワークI/F204、第2ネットワークI/F205、不揮発性記憶装置206を有する構成となっており、これらはそれぞれバス207と接続され、所定の手順に従って情報の送受信を行うことができる。
EPROM203にはブートプログラムが記憶されており、また、不揮発性記憶装置206には各種プログラムが記憶されている。通信制御装置105が起動すると、EPROM203に記憶されたブートプログラムによって不揮発性記憶装置206から各種プログラムがメインメモリ202へと読み出される。CPU201はメインメモリ202に読み出された各種プログラムを実行することにより、第1ネットワークI/F204や第2ネットワークI/F205等による信号の送受信等を行う。
第1ネットワークI/F204は、ホームネットワーク106と接続しており、ホームネットワーク106に接続する機器との間で情報の送受信を行うことができる。第1ネットワークI/F204は、ネットワークカード等により実現することができる。同様に、第2ネットワークI/F205は、ネットワーク101と接続しており、ネットワーク101と接続する機器との間で情報の送受信を行うことができる。第2ネットワークI/F205も、ネットワークカード等により実現することができる。
不揮発性記憶装置206には、上述のように、CPU201がメインメモリ202に読み出して実行するための各種プログラムが記憶されている。不揮発性記憶装置206は、フラッシュメモリやHDD(ハードディスクドライブ)、光ディスク等により実現することができる。
図3は、映像受信表示装置107のハードウェア構成の一例を示す図である。映像受信表示装置108のハードウェア構成も映像受信表示装置107と同様である。図3において、映像受信表示装置107は、CPU301、メインメモリ302、EPROM303、出力装置304、ネットワークI/F305、不揮発性記憶装置306、入力装置307、映像再生装置308を有する構成となっており、これらはそれぞれバス309と接続され、所定の手順にしたがって情報の送受信を行うことができる。
EPROM303にはブートプログラムが記憶されており、また、不揮発性記憶装置306には各種プログラムが記憶されている。映像受信表示装置107が起動すると、EPROM303に記憶されたブートプログラムによって不揮発性記憶装置306から各種プログラムがメインメモリ302へと読み出される。CPU301はメインメモリ302に読み出された各種プログラムを実行することにより、出力装置304、ネットワークI/F305、入力装置307、映像再生装置308等による信号の送受信等を行う。
出力装置304は、映像再生装置308で伸張(デコード)されたコンテンツや、ユーザの操作に応答するための情報を表示等により出力するための手段であり、CRT、液晶ディスプレイ、プラズマディスプレイ、プロジェクタ、スピーカ、ヘッドフォン等によって実現される。また、出力装置304は、TV等のコンテンツ再生端末とは異なる装置で実現してもよい。この場合、映像受信表示装置107には別途D/Aコンバータ等のTV信号生成装置を具備し、当該装置と出力装置304とはAVケーブルや同軸ケーブル等で接続される。
ネットワークI/F305は、通信網を介して他の装置と情報を送受信するための手段であり、例えばネットワークアダプタ、無線送受信装置等によって実現される。不揮発性記憶装置306には、上述のように、CPU301がメインメモリ302に読み出して実行するための各種プログラムが記憶されており、例えばHDD、フラッシュメモリ、光ディスク等によって実現することができる。
入力装置307は、ユーザが必要な命令や情報を入力するための手段であり、例えばTV受信機で使用されるリモコンや、PCで使用されるキーボード、マウス等によって実現される。映像再生装置308は、音声や映像等のコンテンツをデコードし、デコードされたコンテンツを出力装置304に送信する装置である。
なお、上述した通信制御装置105および映像受信表示装置107の構成は、図2および図3に示す構成に限られないことは当然である。例えば、映像受信表示装置107において、コンテンツのデコードが全てソフトウェアプログラムによって実現され、CPU301で実行されるような場合は、映像再生装置308を有さない構成となる。この場合、当該ソフトウェアプログラムは不揮発性記憶装置306に記憶され、CPU301によってメインメモリ302上に読み出されて実行される。
映像配信サーバ102のハードウェア構成は、図示しないが、少なくとも1台以上のコンピュータ(CPU、メインメモリ、不揮発性記憶装置、入力装置、出力装置、ネットワークI/F等を含む)から構成されており、不揮発性記憶装置からメインメモリに読み出され、CPUによって実行される各種プログラムには、RTSP(Real Time Streaming Protocol)、RTP(Real-time Transport Protocol)等のコンテンツ配信用のプロトコル、およびSIP(Session Initiation Protocol)等のQoSセッション制御用のプロトコルが実装されている。
帯域制御サーバ103のハードウェア構成は、図示しないが、少なくとも1台以上のコンピュータ(CPU、メインメモリ、不揮発性記憶装置、入力装置、出力装置、ネットワークI/F等を含む)から構成されており、不揮発性記憶装置からメインメモリに読み出され、CPUによって実行される各種プログラムには、SIP等のQoSセッション制御用のプロトコルが実装されている。
次に、本実施の形態における通信制御装置105の機能の概要について説明する。図4は、通信制御装置105の機能構成の概要を示す図である。ルーティング部401は、図1におけるネットワーク101とホームネットワーク106との間のメッセージのルーティングを行う。このルーティング機能により、通信制御装置105は、ネットワーク101とホームネットワーク106との間のゲートウェイとして機能する。後述するNAT越えのためのポートフォワードの機能も、ルーティング部401で実現される。
メッセージ取得部402は、詳細は後述するが、ルーティング部401を介して映像受信表示装置107と映像配信サーバ103との間で送受信されるRTSPメッセージを取得するRTSPメッセージ取得機能を有する。QoS制御情報生成部403は、メッセージ取得部402で取得されたRTSPメッセージから、後述するQoSセッション制御のための情報およびポートフォワード設定のための情報を取得・生成し、テーブル群405に記憶する。
QoS制御部404は、QoS制御情報生成部403で取得・生成されたQoSセッション制御のための情報を元に、SIP等のQoSセッション制御用のプロトコルにより、映像配信サーバ103との間でQoSセッションを確立する。タイムアウト監視部406は、通信制御装置105と映像受信表示装置107および映像配信サーバ102との間で確立される複数の通信セッションのタイムアウトを一元的に監視する機能を有する。
ルーティング部401、メッセージ取得部402、QoS制御情報生成部403、QoS制御部404、タイムアウト監視部406の各部は、例えば不揮発性記憶装置206に記憶されるプログラムによって実現され、当該プログラムがメインメモリ202に読み出された後、CPU201によって実行されることで、通信制御装置105は各機能を実現する。なお、上記各部をプログラムではなく回路によって構成することも当然可能である。また、テーブル群405は、上記プログラムの実行時にメインメモリ202上に作成される。
次に、本実施の形態の映像配信システムにおいて、通信制御装置105が扱うテーブル群405の内容について説明する。テーブル群405に含まれるテーブルは、通信制御装置105内で唯一のテーブルである「システム共通テーブル」と、映像受信表示装置107、108からのRTSPコネクション毎に記憶するテーブルである「コネクション内テーブル」とに分類することができる。
図5は、接続情報管理テーブル500の構成とデータの例を示す図である。接続情報管理テーブル500はコネクション内テーブルに該当し、対象のRTSPコネクションに係る映像受信表示装置107と映像配信サーバ102の情報や、コネクションのステータス等を管理する。接続情報管理テーブル500は、クライアントアドレス501、サーバアドレス502、タイムアウト503、タイマー504、状態505の各項目から構成される。
図6は、利用可能ポート番号テーブル600の構成とデータの例を示す図である。利用可能ポート番号テーブル600はシステム共通テーブルに該当し、通信制御装置105においてRTSPコネクションに係る通信に利用可能なポート番号の範囲を記憶する。利用可能ポート番号テーブル600は、利用可能ポート番号範囲601の項目から構成される。
図7は、利用ポート番号テーブル700の構成とデータの例を示す図である。利用ポート番号テーブル700はシステム共通テーブルに該当し、通信制御装置105においてRTSPコネクションに係る通信に既に利用されているポート番号を記憶する。利用ポート番号テーブル700は、利用ポート番号701の項目から構成される。
図8は、RTSP通信利用ポート番号テーブル800の構成とデータの例を示す図である。RTSP通信利用ポート番号テーブル800はコネクション内テーブルに該当し、対象のRTSPコネクションについて、通信制御装置105が映像配信サーバ102との間でRTSPメッセージの送受信に利用しているポート番号を記憶する。RTSP通信利用ポート番号テーブル800は、RTSP通信利用ポート番号801の項目から構成される。
図9は、映像データ受信情報テーブル900の構成とデータの例を示す図である。映像データ受信情報テーブル900はコネクション内テーブルに該当し、対象のRTSPコネクションについて、通信制御装置105が映像配信サーバ102から映像データを受信し、映像受信表示装置107へ送信するためのポートの情報等を管理する。映像データ受信情報テーブル900は、通信制御装置ポート901、サーバポート902、クライアントポート903、帯域904の各項目から構成される。
次に、本実施の形態の映像配信システムにおける動作の概要について説明する。図1に示す構成において、映像受信表示装置107、108は、映像配信サーバ102等のRTSPサーバとの間でRTSPメッセージを送受信するRTSPクライアントであり、RTSPメッセージの送受信によって、音声や映像等のコンテンツの再生制御を行う。
ネットワーク101は、NGN等のQoS制御可能なネットワークであり、ネットワーク101に接続する機器は、帯域制御サーバ103に対して、例えば、「どのIPアドレスの機器の何番ポートとどのIPアドレスの機器の何番ポートとの間で何Kbpsの帯域を確保する」、といったQoSセッション制御要求を行うことによって、ネットワーク101に接続した機器間で品質の高い通信を行うことができる。なお、本実施の形態においては、以下、QoSセッション制御のプロトコルにはSIPを用いるものとして説明を行う。
映像配信サーバ102は、映像受信表示装置107等のRTSPクライアントとの間でRTSPメッセージの送受信を行うRTSPサーバである。また、帯域制御サーバ103等のSIPサーバとの間でQoSセッション制御情報を送受信するSIPクライアントでもある。
帯域制御サーバ103は、通信制御装置105、映像配信サーバ102等のSIPクライアントとの間でQoSセッション制御情報の送受信を行い、実際のQoS制御を実行するSIPサーバである。また、図1には図示しないが、帯域制御サーバ103は、IMS(IP Multimedia System)の一部であり、SIPクライアントからのQoSセッション制御要求に応じてIMS内の各サーバ、例えば、HSS(Home Subscriber Server)、共通イネーブラ、AS(Application Server)等と必要な情報の送受信を行い、QoSセッション制御を行う。
通信制御装置105は、帯域制御サーバ103等のSIPサーバとの間でQoSセッション制御情報の送受信を行うSIPクライアントである。また、通信制御装置105は、ネットワーク101、ホームネットワーク106の両方と接続しており、メッセージ取得部402において、ホームネットワーク106側に接続された映像受信表示装置107等のRTSPクライアントが送信するRTSPメッセージ、およびネットワーク101側に接続された映像配信サーバ102等のRTSPサーバが送信するRTSPメッセージを取得するRTSPメッセージ取得機能を有する。
ここで、上記RTSPメッセージ取得機能について説明する。RTSPメッセージ取得機能において、映像受信表示装置107等のRTSPクライアント機器が送信するRTSPメッセージを取得するにはいくつかの方法があるが、その内の2つの方法について以下に説明する。
第1のRTSPメッセージ取得方法は、通信制御装置105にて、RTSPメッセージを取得するためのポートを監視し、映像受信表示装置107等のRTSPクライアント機器にRTSPプロキシ設定として通信制御装置105の当該ポートを設定した上で、映像受信表示装置107等のRTSPクライアント機器から映像配信サーバ102等のRTSPサーバ機器へRTSPメッセージを送信する方法である。
RTSPクライアント機器は、RTSPサーバ機器とRTSPメッセージの送受信を行うための通信路を確立する。第1のRTSPメッセージ取得方法では、RTSPクライアント機器は、接続先の情報(RTSPサーバ機器のIPアドレスおよびポート)を含む通信路確立要求を、RTSPプロキシ設定に指定された通信制御装置105のRTSPメッセージ監視ポートに対して送信することになる。
通信制御装置105では、RTSPメッセージ監視ポートに到達する接続元の情報(RTSPクライアント機器のIPアドレスおよびポート)、接続先の情報(RTSPサーバ機器のIPアドレスおよびポート)を含む通信路確立要求を取得して通信路を確立する。これ以降、RTSPクライアント機器は、当該通信路を介してRTSPメッセージを送信するため、通信制御装置105は、RTSPクライアント機器からのRTSPメッセージを取得することができる。
上述した第1のRTSPメッセージ取得方法では、映像受信表示装置107等のRTSPクライアント機器においてRTSPプロキシ設定が可能であることが必須となる。映像受信表示装置107においてRTSPプロキシ設定が可能でない場合は、通信制御装置105は、以下に説明する第2のRTSPメッセージ取得方法にてRTSPメッセージを取得する必要がある。
第2のRTSPメッセージ取得方法は、通信制御装置105に対して、ホームネットワーク106側からの通信により入力される特定の情報を、通信制御装置105のRTSPメッセージ監視ポートに対してリダイレクトするような設定を行う方法である。例えば、通信制御装置105のオペレーティングシステムがLinux(登録商標)の場合は、以下のような設定により実現できる。
まず、Linuxのカーネルをリダイレクト設定が可能なように構成しておく。そして、例えば、“iptables -t nat -A PREROUTING -p tcp --dport 554 -j REDIRECT --to-ports 10554”のコマンドによって、Linuxに対してポートのリダイレクトの設定を行う。この設定によれば、通信制御装置105を通る554番ポート(RTSPで用いられるWell Known Port)宛の通信を、例えば10554番ポート宛にリダイレクトすることができる。
通信制御装置105にてあらかじめ上記のようなポートのリダイレクト設定を行い、リダイレクト先のポートを監視することによって、通信制御装置105は、RTSPクライアント機器がRTSPサーバ機器とRTSPメッセージの送受信を行うための通信路確立要求を取得することができる。
第2のRTSPメッセージ取得方法では、RTSPクライアント機器は、RTSPサーバ機器のRTSP待ち受けポート(通常は554番ポート)に対して通信路確立要求を送信する。ホームネットワーク106に接続するRTSPクライアント機器から、ネットワーク101に接続するRTSPサーバ機器に対しての通信は、必ず通信制御装置105を経由する。
通信制御装置105は、RTSPクライアント機器が送信したRTSPサーバ機器宛の通信をリダイレクトし、リダイレクト先の監視ポートにて接続元の情報(RTSPクライアント機器のIPアドレスおよびポート)および接続先の情報(RTSPサーバ機器のIPアドレスおよびポート)を含む通信路確立要求を取得し、RTSPクライアント機器との間に通信路を確立する。これ以降、RTSPクライアント機器は、当該通信路を介してRTSPメッセージを送信するため、通信制御装置105は、RTSPクライアント機器からのRTSPメッセージを取得することができる。
上述した第2のRTSPメッセージ取得方法では、映像受信表示装置107等のRTSPクライアント機器にはRTSPプロキシ設定等の特別な設定は必要なく、RTSPクライアント機器は、通常の方法で単に映像配信サーバ102等のRTSPサーバ機器に対しての通信を行っているだけである。
上述した第1のRTSPメッセージ取得方法あるいは第2のRTSPメッセージ取得方法を用いたRTSPメッセージ取得機能により、通信制御装置105は、映像受信表示装置107等のRTSPクライアント機器が映像配信サーバ102等のRTSPサーバ機器に対して送信する通信路確立要求を取得することができる。言い換えると、通信制御装置105は、映像受信表示装置107等のRTSPクライアント機器が送信する通信路確立要求を取得することにより、RTSPクライアント機器との間に通信路を確立することができる。以下、このRTSPクライアント機器と通信制御装置105との間の通信路を第1の通信路と記述する。
上述した第1あるいは第2のRTSPメッセージ取得方法により、RTSPクライアント機器と第1の通信路を確立した通信制御装置105は、取得した通信路確立要求に含まれる接続元の情報(RTSPクライアント機器のIPアドレスおよびポート)および接続先の情報(RTSPサーバ機器のIPアドレスおよびポート)を取得することができる。ここで取得したRTSPサーバ機器の情報を用いて、通信制御装置105はさらに、RTSPサーバ機器と接続するための通信路を確立することができる。以下、このRTSPサーバ機器と通信制御装置105との間の通信路を第2の通信路と記述する。
通信制御装置105は、第1の通信路を経由して受信したRTSPメッセージの内容を解析し、必要な情報を取得したり、適切に書き換えたりした後、第2の通信路を経由してRTSPサーバ機器に送信する。その後、通信制御装置105は、RTSPサーバ機器からの応答であるRTSPメッセージを第2の通信路を経由して受信する。通信制御装置105は、取得したRTSPメッセージの内容を解析し、必要な情報を取得したり、適切に書き換えたりした後、第1の通信路を経由してRTSPクライアント機器に対して送信する。
送受信されるRTSPメッセージには、QoSセッション制御に必要な情報(QoS制御を行う各機器のIPアドレスとポートおよび必要な帯域の情報)も含まれている。本実施の形態の映像配信システムは、上述のように、通信制御装置105によって、RTSPクライアント機器とRTSPサーバ機器との間で送受信されるRTSPメッセージからQoSセッション制御に必要な情報を取得し、RTSPクライアント機器による再生制御が行われるまでの間に、RTSPサーバ機器と通信制御装置105との間でQoS制御を行うことによって、QoSセッション制御機能を有しないRTSPクライアント機器が、QoS保証された映像等のコンテンツ配信サービスを受けることを可能とするシステムである。
以下、本実施の形態の映像配信システムにおける動作の流れについて説明する。以下の説明において、通信制御装置105は上述した第1あるいは第2のRTSPメッセージ取得方法を用いて、RTSPクライアント機器が送信するRTSPメッセージを取得することができるように設定されているものとする。なお、第1のRTSPメッセージ取得方法を用いる場合は、映像受信表示装置107等のRTSPクライアント機器に対してあらかじめRTSPプロキシ設定がされているものとする。
まず、図10〜図13を用いて、本実施の形態の映像配信システムにおける動作の流れの概要を説明する。
図10は、通信路(第1の通信路および第2の通信路)の確立の際の動作の流れを示すシーケンス図である。まず、映像受信表示装置107が、通信制御装置105を経由して、映像配信サーバ102宛に通信路確立要求を送信する。通信制御装置105は、上述のRTSPメッセージ取得機能によって当該通信路確立要求を取得し、映像受信表示装置107との間に第1の通信路を確立する(1001)。
次に、通信制御装置105は、メインメモリ202上にRTSPコネクション毎に作成されるワークメモリに、接続情報管理テーブル500を新規に作成する(1002)。次に、通信制御装置105は、通信路確立要求に含まれる接続元(クライアント)IPアドレスおよび接続先(サーバ)IPアドレスを取得して、接続情報管理テーブル500のクライアントアドレス501およびサーバアドレス502に記憶する(1003)。
次に、通信制御装置105は、システムであらかじめ決めておくタイムアウトの初期値(例えば120秒)を、接続情報管理テーブル500のタイムアウト503およびタイマー504に設定する(1004)。なお、ここで設定するタイムアウト値は、後にRTSP SETUPレスポンスを受信した際に取得するRTSPセッションのタイムアウト値に書き換えられることになる。
次に、通信制御装置105は、通信制御装置105と映像配信サーバ102との間でRTSPメッセージの送受信を行うためのポートを決定する(1005)。ここではまず、システム共通テーブルである利用可能ポート番号テーブル600から利用可能ポート番号範囲601を取得し、次に、システム共通テーブルである利用ポート番号テーブル700に記憶している利用ポート番号701を全て読み出す。
通信制御装置105は、利用可能ポート番号範囲601のうち、利用ポート番号701に含まれない、すなわち現在利用されていないポートを一つ選び、それをRTSPメッセージの送受信に用いるポートとし、当該ポートを新たに利用ポート番号テーブル700に追記する。また、RTSP通信利用ポート番号テーブル800をワークメモリ上に作成し、当該ポートをRTSP通信利用ポート番号801として記憶する。
次に、通信制御装置105は、帯域制御サーバ103に対し、映像配信サーバ102との間にRTSP用QoSセッションを確立することを要求する(1006)。このとき、RTSPメッセージ自体はリアルタイム性が必要とされず、情報量もあまり多くない為、確保する帯域の指定は必要ない。すなわち、通信制御装置105のIPアドレスと上記で決定したRTSP通信利用ポート番号801、および映像配信サーバ102のIPアドレスおよびポートの情報を用いてRTSP用QoSセッションを確立する。
次に、通信制御装置105は、確立したRTSP用QoSセッションを通して第2の通信路を確立する(1007)。最後に、接続情報管理テーブル500の状態505を“Init”に設定する(1008)。
また、図示しないが、上記のように通信路(第1の通信路、RTSP用QoSセッション、第2の通信路)が確立すると、タイムアウト監視部406が起動する。タイムアウト監視部406は、接続情報管理テーブル500のタイマー504に設定した値を1秒毎にデクリメントし、タイマー504の値が0になった時点でタイムアウトと判定する。タイムアウトが発生すると、通信制御装置105は、上記で確立した各通信路を切断する。
なお、詳細は後述するが、タイマー504の値は、タイムアウトと判定される前に新たなRTSPメッセージを受信することで、タイムアウト503に設定した値にリセットされる。すなわち、タイムアウトとは、次のRTSPメッセージが到達するまでの待ち時間である。
図11は、再生準備の際の動作の流れを示すシーケンス図である。これ以降、RTSPクライアント機器とRTSPサーバ機器との間ではRTSPメッセージの送受信が行われる。RTSPには、メッセージの送受信を行うための各種のメソッドが定義されている。例えば、OPTIONS、DESCRIBE、SETUP、PLAY、PAUSE、ANNOUNCE、TEARDOWN等であり、それぞれについてリクエストとレスポンスのメソッドが定義されている。RTSPクライアント機器やRTSPサーバ機器は、これらのメソッドを介して情報を送受信し、音声や映像等のコンテンツ再生に必要な情報の交換を行う。
図11に示す再生準備の動作では、映像用QoSセッションの確立に必要な情報を収集する。すなわち、QoSセッション制御に必要なコンテンツの帯域情報、およびQoSセッションの両端の機器のIPアドレスおよびポートの情報を収集する。このうち、コンテンツの帯域情報はRTSP DESCRIBEレスポンス、IPアドレスおよびポートの情報はRTSP SETUPレスポンスからそれぞれ取得することができる。
まず、映像受信表示装置107は、第1の通信路を介して通信制御装置105へとRTSP DESCRIBEリクエストを送信する(1101)。RTSP DESCRIBEリクエストを受信した通信制御装置105は、接続情報管理テーブル500のタイマー504の値をタイムアウト503の値にリセットする(1102)。なお、これ以降全てのメソッドについて、第1の通信路から情報を受信した際には必ずタイマーをリセットする。
次に、通信制御装置105は、取得したRTSPメッセージの内容を第2の通信路を介して映像配信サーバ102へと送信する(1103)。次に、映像配信サーバ102は、RTSP DESCRIBEリクエストの内容を元に処理を行い、応答をRTSP DESCRIBEレスポンスとして第2の通信路を介して通信制御装置105へと送信する(1104)。
通信制御装置105は、RTSP DESCRIBEレスポンスを取得し、そこに含まれるコンテンツの情報のうちコンテンツのビットレートの情報を取得する。そして、映像データ受信情報テーブル900をワークメモリ上に作成し、帯域904の項目にその値を記憶する(1105)。その後、通信制御装置105は、取得したRTSP DESCRIBEレスポンスを、第1の通信路を介して映像受信表示装置107へと送信する(1106)。
次に、映像受信表示装置107は、RTSP SETUPリクエストを第1の通信路を介して通信制御装置105へと送信する(1107)。通信制御装置105は、第1の通信路を介してRTSP SETUPリクエストを取得し、タイマーをリセットし(1108)、RTSP SETUPリクエスト処理を行う(1109)。
すなわち、RTSP SETUPリクエストを受信した通信制御装置105は、RTSP SETUPリクエストから映像データ受信ポートであるclient_portの値を読み出し、映像データ受信情報テーブル900のクライアントポート903に記憶する。次に、利用可能ポート番号テーブル600および利用ポート番号テーブル700を参照して利用可能なポートを決定し、これを通信制御装置105での映像データ受信ポートとして、RTSP SETUPリクエストのclient_portの値をその値に書き換える。さらに、その値を映像データ受信情報テーブル900の通信制御装置ポート901に記憶する。
次に、通信制御装置105は、RTSP SETUPリクエストを第2の通信路を介して映像配信サーバ102へと送信し(1110)、その応答であるRTSP SETUPレスポンスを受信する(1111)。その後、通信制御装置105は、受信したRTSP SETUPレスポンスの内部処理を行う(1112)。
すなわち、RTSP SETUPレスポンスに含まれるRTSPセッション情報のタイムアウト値を取得し、接続情報管理テーブル500のタイムアウト503の値を、取得したタイムアウト値で上書きする。また、RTSP SETUPレスポンスに含まれる映像データ送信ポートであるserver_portの値を読み出し、映像データ受信情報テーブル900のサーバポート902に記憶する。
また、RTSP SETUPレスポンスのclient_portの値を読み出し、この値が映像データ受信情報テーブル900の通信制御装置ポート901の値と等しいかを確認する。等しくなければ、通信制御装置ポート901の値を取得したclient_portの値で上書きする。また、RTSP SETUPレスポンスのclient_portの値を、映像データ受信情報テーブル900のクライアントポート903の値に書き換える。
その後、映像データを映像受信表示装置107に伝送する為のポートフォワード設定を行う(1112)。すなわち、通信制御装置105の、映像データ受信情報テーブル900の通信制御装置ポート901に記憶したポートに到達した映像データを、映像受信表示装置107の、映像データ受信情報テーブル900のクライアントポート903に記憶したポートへとフォワードする為の設定を行う。
これは、例えば、通信制御装置105のオペレーティングシステムがLinuxの場合は、例えば、“iptables -t nat -A PREROUTING -p udp --dport [映像データ受信情報テーブル900の通信制御装置ポート901の値] -j DNAT --to-destination [接続情報管理テーブル500のクライアントアドレス501の値]:[映像データ受信情報テーブル900のクライアントポート903の値]”のコマンドで設定することができる。
次に、通信制御装置105は、映像データ受信情報テーブル900に記憶した内容を元に、帯域制御サーバ103に対して、映像配信サーバ102との間の映像用QoSセッションの確立要求を行う(1113)。すなわち、通信制御装置105のIPアドレスおよび映像データ受信情報テーブル900の通信制御装置ポート901に記憶したポートと、映像配信サーバ102のIPアドレスおよび映像データ受信情報テーブル900のサーバポート902に記憶したポートとの間に、映像データ受信情報テーブル900の帯域904に設定された分の帯域を確保するように要求する。
映像用QoSセッションが確立したら、通信制御装置105は、接続情報管理テーブル500の状態505を“Ready”に変更し(1114)、RTSP SETUPレスポンスを第1の通信路を介して映像受信表示装置107へと送信する(1115)。
図12は、映像再生の際の動作の流れを示すシーケンス図である。まず、映像受信表示装置107は、RTSP PLAYリクエストを、第1の通信路を介して通信制御装置105へと送信する(1201)。通信制御装置105は、RTSP PLAYリクエストを受信し、タイマーをリセットし(1202)、第2の通信路を介してRTSP PLAYリクエストを映像配信サーバ102へと送信する(1203)。
その後、RTSP PLAYレスポンスを受信し(1204)、接続情報管理テーブル500の状態505を“Playing”に変更して(1205)、RTSP PLAYレスポンスを、第1の通信路を介して映像受信表示装置107へと送信する(1206)。
映像配信サーバ102は、RTSP PLAYリクエストを受信すると、映像データの伝送を開始する(1207)。映像データは、映像配信サーバ102と通信制御装置105との間では、通信制御装置105がRTSP SETUPレスポンス受信時に確立した映像用QoSセッション内を伝送される。通信制御装置105が受信した映像データは、RTSP SETUPレスポンス受信時に設定したポートフォワード設定に従って、映像受信表示装置107へと送信される(1207)。
映像データの伝送中、映像受信表示装置107は、RTSPセッションがタイムアウトしない程度の間隔で、接続維持用のメッセージを通信制御装置105に送信する(1208)。これには通常、RTSPの状態に変更を与えないRTSP OPTIONSメソッドか単純なハートビートを用いる。通信制御装置105は、これらの情報を受信した際はタイマーをリセットし(1209)、受信した情報を映像配信サーバ102へと送信する(1210)。
図13は、再生停止の際の動作の流れを示すシーケンス図である。まず、映像受信表示装置107は、RTSP PAUSEリクエストを、第1の通信路を介して通信制御装置105へと送信する(1301)。通信制御装置105は、タイマーリセットを行い(1302)、RTSP PAUSEリクエストを第2の通信路を介して映像配信サーバ102へと送信する(1303)。
その後、RTSP PAUSEレスポンスを受信し(1304)、接続情報管理テーブル500の状態505を“Ready”に変更して(1305)、RTSP PAUSEレスポンスを、第1の通信路を介して映像受信表示装置107へと送信する(1306)。
次に、映像受信表示装置107は、RTSP TEARDOWNリクエストを第1の通信路を介して通信制御装置105へと送信する(1307)。通信制御装置105は、タイマーリセットを行い(1308)、RTSP TEARDOWNリクエストを第2の通信路を介して映像配信サーバ102へと送信する(1309)。RTSP TEARDOWNリクエストを受信した映像配信サーバ102は、映像データの伝送を終了し、RTSP TEARDOWNレスポンスを通信制御装置105に送信する(1310)。
次に、通信制御装置105は、帯域制御サーバ103に対し、映像配信サーバ102との間の映像用QoSセッションの終了要求を行い、映像用QoSセッションを終了する(1311)。その後、通信制御装置105は、ポートフォワード設定を解除し(1312)、映像データ受信情報テーブル900の通信制御装置ポート901に記憶されている値を利用ポート番号テーブル700から削除し、第2の通信路を切断する(1313)。
次に、通信制御装置105は、帯域制御サーバ103に対し、映像配信サーバ102との間のRTSP用QoSセッションの終了要求を行い、RTSP用QoSセッションを終了する(1314)。その際、RTSP通信利用ポート番号テーブル800のRTSP通信利用ポート番号801に記憶されている値を利用ポート番号テーブル700から削除する。
その後、接続情報管理テーブル500の状態505を“接続なし”に設定し(1315)、第1の通信路を介してRTSP TEARDOWNレスポンスを映像受信表示装置107へと送信する(1316)。その後、第1の通信路を切断し(1317)、コネクション内テーブルである接続情報管理テーブル500、RTSP通信利用ポート番号テーブル800、映像データ受信情報テーブル900を削除する(1318)。
ここで、本実施の形態での通信制御方法における、通信制御装置105が記憶するRTSPコネクションの状態遷移について説明する。図14は、本実施の形態におけるRTSPコネクションの状態遷移図である。また、図15は、本実施の形態におけるRTSPコネクションの状態遷移テーブルを示す図である。図14における遷移1〜7は、図15におけるNo.1〜7のイベントにそれぞれ対応している。
図14において、まず最初は“コネクション無し”の状態である。“コネクション無し”状態にて、通信制御装置105がRTSPクライアント機器からの接続要求を受けて、第1の通信路の確立、RTSP用QoSセッションの確立、第2の通信路の確立を行うと、RTSPコネクションは“Init”状態に遷移する。
“Init”状態にて、通信制御装置105がRTSP SETUPレスポンスを受信し、映像用QoSセッションが確立すると“Ready”状態に遷移する。“Ready”状態にて、通信制御装置105がRTSP PLAYレスポンスを受信すると“Playing”状態に遷移する。“Playing”状態にて、通信制御装置105がRTSP PAUSEレスポンスを受信すると“Ready”状態に遷移する。
また、“Playing”状態にて、接続がタイムアウトする、もしくは通信制御装置105がRTSP TEARDOWNレスポンスを受信すると、映像用QoSセッションおよびRTSP用QoSセッションを終了し、“コネクション無し”状態に遷移する。“Ready”状態にて、接続がタイムアウトする、もしくは通信制御装置105がRTSP TEARDOWNレスポンスを受信すると、映像用QoSセッションおよびRTSP用QoSセッションを終了し、“コネクション無し”状態に遷移する。“Init”状態にて、接続がタイムアウトすると、RTSP用QoSセッションを終了し、“コネクション無し”状態に遷移する。
上述のように、通信制御装置105は、RTSPコネクションについて、RTSPセッションの状況とRTSP用および映像用QoSセッションの状況とを統一的に表す“状態”を用いて管理する。この“状態”は、RTSPコネクション毎に接続情報管理テーブル500の状態505に記憶している。
次に、図16〜図24を用いて、本実施の形態の映像配信システムにおける通信制御装置105での個別の処理の流れを説明する。
図16は、通信路確立の処理の流れを示すフローチャートである。まず、ステップS1601で、映像受信表示装置107から第1の通信路確立要求を受信する。次に、ステップS1602で、当該接続に関する接続情報管理テーブル500を作成する。次に、ステップS1603で、第1の通信路の情報における接続元および接続先のIPアドレスを取得し、接続情報管理テーブル500のクライアントアドレス501、サーバアドレス502に記憶する。
次に、ステップS1604で、システムで決めるタイムアウト時間を接続情報管理テーブル500のタイムアウト503に記憶する。次に、ステップS1605で、後述する通信制御装置105の利用ポート決定の手順によりRTSP通信利用ポートを決定し、ステップS1606で、決定したRTSP通信利用ポートをRTSP通信利用ポート番号テーブル800に記憶する。その後、ステップS1607で、RTSP用QoSセッションを確立し、ステップS1608で、第2の通信路を確立する。
図17は、RTSPリクエストの処理の流れを示すフローチャートである。まず、ステップS1701で、第1の通信路を介して映像受信表示装置107からRTSPリクエストデータを受信する。次に、ステップS1702で、接続情報管理テーブル500のタイマー504をリセットする。次に、ステップS1703で、受信したRTSPリクエストがSETUPリクエストかどうかを調べる。
受信したRTSPリクエストがSETUPリクエストである場合は、ステップS1704へ進み、SETUPリクエストでない場合は、ステップS1705へ進む。ステップS1704では、後述するSETUPリクエスト処理を行い、ステップS1705へ進む。ステップS1705では、第2の通信路を介して映像配信サーバ102にRTSPリクエストデータを送信する。
図18は、SETUPリクエストのサブルーチンの処理の流れを示すフローチャートである。まず、ステップS1801で、受信したRTSPリクエストデータから映像データ受信ポートを取得し、映像データ受信情報テーブル900のクライアントポート903に記憶する。
次に、ステップS1802で、後述する通信制御装置105の利用ポート決定の手順により、通信制御装置105の映像データ受信ポートを決定し、映像データ受信情報テーブル900の通信制御装置ポート901に記憶する。次に、ステップS1803で、RTSPリクエストデータの映像データ受信ポートを、ステップS1802で決定した通信制御装置105の映像データ受信ポートの値に書き換える。
図19は、通信制御装置105の利用ポート決定のサブルーチンの処理の流れを示すフローチャートである。まず、ステップS1901で、通信制御装置105の利用可能ポート番号テーブル600から、利用可能ポート番号範囲601を取得する。次に、ステップS1902で、通信制御装置105の利用ポート番号テーブル700に記載の利用ポート番号701を全て取得する。次に、ステップS1903で、利用可能ポート番号範囲601のうち、利用ポート番号701に含まれない番号を1つ選択し、その番号を利用ポート番号テーブル700に追記する。
図20は、映像配信サーバ102からのRTSPレスポンスの処理の流れを示すフローチャートである。まず、ステップS2001で、第2の通信路を介して映像配信サーバ102からRTSPレスポンスデータを受信する。次に、ステップS2002で、受信したRTSPレスポンスがDESCRIBEレスポンスかどうかを調べる。
受信したRTSPレスポンスがDESCRIBEレスポンスである場合は、ステップS2003へ進む。DESCRIBEレスポンスでない場合は、ステップS2004へ進む。ステップS2003では、後述するDESCRIBEレスポンス処理を行い、ステップS2008へ進む。ステップS2004では、受信したRTSPレスポンスがSETUPレスポンスかどうかを調べる。
ステップS2004で、受信したRTSPレスポンスがSETUPレスポンスである場合は、ステップS2005へ進む。SETUPレスポンスでない場合は、ステップS2006へ進む。ステップS2005では、後述するSETUPレスポンス処理を行い、ステップS2008へ進む。ステップS2006では、受信したRTSPレスポンスがTEARDOWNレスポンスかどうかを調べる。
ステップS2006で、受信したRTSPレスポンスがTEARDOWNレスポンスである場合は、ステップS2007へ進む。TEARDOWNレスポンスでない場合は、ステップS2008へ進む。ステップS2007では、後述するTEARDOWNレスポンス処理を行い、ステップS2008へ進む。ステップS2008では、状態変更処理を行う。
次に、ステップS2009で、第1の通信路を介して映像受信表示装置107へとRTSPレスポンスデータを送信する。次に、ステップS2010で、送信したRTSPレスポンスがTEARDOWNレスポンスかどうかを調べる。送信したRTSPレスポンスがTEARDOWNレスポンスである場合は、ステップS2011へ進む。TEARDOWNレスポンスでない場合は、処理を終了する。ステップS2011では、第1の通信路を切断し、次に、ステップS2012で、コネクション内テーブルである接続情報管理テーブル500、RTSP通信利用ポート番号テーブル800、映像データ受信情報テーブル900を削除する。
図21は、DESCRIBEレスポンスのサブルーチンの処理の流れを示すフローチャートである。まず、ステップS2101で、受信したRTSPレスポンスデータから映像のビットレート情報を取得する。次に、ステップS2102で、映像データ受信情報テーブル900の帯域904に、取得したビットレート情報を記憶する。
図22は、SETUPレスポンスのサブルーチンの処理の流れを示すフローチャートである。まず、ステップS2201で、受信したRTSPレスポンスデータから映像データ受信ポートを取得する。次に、ステップS2202で、ステップS2201で取得した映像データ受信ポートが、映像データ受信情報テーブル900の通信制御装置ポート901に記憶している値と同一であるかを確認する。同一である場合はステップS2204に進む。同一でない場合は、ステップS2203で、映像データ受信情報テーブル900の通信制御装置ポート901を、ステップS2201で取得した映像データ受信ポートの値で上書きし、ステップS2204に進む。
ステップS2204では、受信したRTSPレスポンスデータから映像データ送信ポートを取得し、映像データ受信情報テーブル900のサーバポート902に記憶する。次に、ステップS2205で、受信したRTSPレスポンスデータからRTSPセッションのタイムアウト時間を取得し、接続情報管理テーブル500のタイムアウト503に上書きする。次に、ステップS2206で、受信したRTSPレスポンスデータの映像データ受信ポートを、映像データ受信情報テーブル900のクライアントポート903の値で書き換える。
次に、ステップS2207で、接続情報管理テーブル500のクライアントアドレス501と映像データ受信情報テーブル900の情報を用いて、ポートフォワード設定を行う。次に、ステップS2206で、映像データ受信情報テーブル900の情報を用いて、映像用QoSセッションを確立する。
図23は、TEARDOWNレスポンスのサブルーチンの処理の流れを示すフローチャートである。まず、ステップS2301で、映像用QoSセッションを終了し、ステップS2302で、ポートフォワード設定を解除する。次に、ステップS2303で、第2の通信路を切断し、ステップS2304で、RTSP用QoSセッションを終了する。
図24は、タイムアウト処理の流れを示すフローチャートである。まず、ステップS2401で、接続情報管理テーブル500のタイマー504の値が0となったことを検知する。次に、ステップS2402で、接続情報管理テーブル500の状態505が“Ready”または“Playing”かどうかを確認する。
接続情報管理テーブル500の状態505が“Ready”または“Playing”でない場合は、ステップS2405へ進む。接続情報管理テーブル500の状態505が“Ready”または“Playing”である場合は、ステップS2403へ進む。ステップS2403では、映像用QoSセッションを終了し、ステップS2404で、ポートフォワード設定を解除し、ステップS2405へ進む。
ステップS2405では、第2の通信路を切断し、ステップS2406で、RTSP用QoSセッションを終了する。次に、ステップS2407で、第1の通信路を切断し、ステップS2408で、コネクション内テーブルである接続情報管理テーブル500、RTSP通信利用ポート番号テーブル800、映像データ受信情報テーブル900を削除する。
以上に説明したような本実施の形態における通信制御装置105は、ホームネットワーク106に接続する複数のRTSPクライアント機器からの接続を別個に管理することができる。例えば、映像受信表示装置107が映像再生中に、新たに映像受信表示装置108が接続した場合、映像受信表示装置108と通信制御装置105との間には新たな第1の通信路が確立され、通信制御装置105と映像配信サーバ102の間にも新たな第2の通信路が確立される。
接続情報管理テーブル500、RTSP通信利用ポート番号テーブル800、映像データ受信情報テーブル900といったコネクション内テーブルは、接続毎にワークメモリ上に確保される為、それぞれの接続による状態遷移や接続情報は別個に管理することができる。
また同様に、本実施の形態における通信制御装置105は、ホームネットワーク106に接続する1台のRTSPクライアント機器から複数の接続が行われた場合、それぞれの接続を別個に管理することができる。例えば、映像受信表示装置107上のアプリケーションAが映像再生中に、新たに映像受信表示装置107上のアプリケーションBが接続した場合、映像受信表示装置107上のアプリケーションBと通信制御装置105との間には新たな第1の通信路が確立され、通信制御装置105と映像配信サーバ102の間にも新たな第2の通信路が確立される。
すなわち、通信制御装置105は、ホームネットワーク106に接続する複数のRTSPクライアント機器(同一機器内で動作する別アプリケーションも含む)のQoSセッション制御を一元的に管理することができ、ホームネットワーク106に接続するQoSセッション制御機能を有しない全てのRTSPクライアント機器に対して、QoS保証型のコンテンツ配信サービスを提供することができる。
なお、本実施の形態の映像配信システムにおいて、通信制御装置105は、RTSP用QoSセッションおよび映像用QoSセッションの2種類のQoSセッションを管理するが、RTSPメッセージの送受信そのものは映像データの伝送に比べるとリアルタイム性が必要とされず、また伝送データ量も小さい。そのため、RTSP用QoSセッションを確立しない構成としても良い。この場合、RTSPメッセージの送受信はBE(Best Effort)通信で行われることになる。方法としては、上述した手順のうち、RTSP用QoSセッションに関する手順を省略することによって実現できる。
また、本実施の形態における映像配信システムでは、上述した通信制御方法を、通信制御装置105、すなわちネットワーク101とホームネットワーク106とのゲートウェイとなる機器上に実装して動作させる構成としたが、このようなゲートウェイ機器以外、例えば、デジタルテレビやSTB、HDDレコーダ等に実装しても良い。
ただし、この場合は、RTSPメッセージ取得方法として、上述の第1のRTSPメッセージ取得方法を用いる必要がある。すなわち、RTSPクライアント機器にRTSPプロキシ設定が可能であり、RTSPプロキシとして、上述した通信制御方法が実装されているデジタルテレビやSTB、HDDレコーダを指定することになる。
また、この場合でも、映像データの伝送の為のポートフォワード設定はゲートウェイ機器に行う必要があり、デジタルテレビやSTB、HDDレコーダ等から、ホームネットワーク106を介して、ゲートウェイ機器に対してポートフォワード設定を行う必要がある。このようなネットワークを介したポートフォワード設定は、例えばUPnP(Universal Plug and Play)等の技術を用いて実現することが可能である。
以上に説明したように、本実施の形態における通信制御装置105によれば、通信制御装置105でQoSセッション制御を一元的に管理・実行することにより、QoS制御手段を有しない映像受信表示装置107、108を用いて、通信制御装置105と映像配信サーバ102との間のQoS制御セッションの確立が可能であり、ユーザにとって映像受信表示装置107、108をQoS制御可能なものに置き換えるコストが不要となり、管理コストも小さい帯域保証型コンテンツ配信システムを実現することができる。
また、通信制御装置105を介して送受信されるRTSPメッセージから帯域制御のための情報を取得して生成することができるため、コンテンツ配信サービス提供者にとっては、コンテンツ毎の帯域情報を別途管理する等の仕組みが不要となり、帯域制御を用いたコンテンツ配信サービスを、帯域制御およびコンテンツ配信に必要な制御のみ行う映像配信サーバ102で行うことが可能となる。
また、通信制御装置105を介して送受信されるRTSPメッセージのみから、情報を取得してポートフォワードの設定を行うことにより、NAT越えを実現することが可能となる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
101…ネットワーク、102…映像配信サーバ、103…帯域制御サーバ、104…ユーザ宅、105…通信制御装置、106…ホームネットワーク、107…映像受信表示装置、108…映像受信表示装置、
201…CPU、202…メインメモリ、203…EPROM、204…第1ネットワークI/F、205…第2ネットワークI/F、206…不揮発性記憶装置、207…バス、
301…CPU、302…メインメモリ、303…EPROM、304…出力装置、305…ネットワークI/F、306…不揮発性記憶装置、307…入力装置、308…映像再生装置、309…バス、
401…ルーティング部、402…メッセージ取得部、403…QoS制御情報生成部、404…QoS制御部、405…テーブル群、406…タイムアウト監視部、
500…接続情報管理テーブル、501…クライアントアドレス、502…サーバアドレス、503…タイムアウト、504…タイマー、505…状態、
600…利用可能ポート番号テーブル、601…利用可能ポート番号範囲、
700…利用ポート番号テーブル、701…利用ポート番号、
800…RTSP通信利用ポート番号テーブル、801…RTSP通信利用ポート番号、
900…映像データ受信情報テーブル、901…通信制御装置ポート、902…サーバポート、903…クライアントポート、904…帯域。