説明

送信端末および送信方法

【課題】CPU負荷が高くなるのを抑制しつつ、一箇所のスループットの低下が他の送信先に影響しない状態を実現する。
【解決手段】映像ストリームをTCP等の輻輳制御機構を持つトランスポートプロトコルを利用して、複数の送信先に送信する多地点配信システム等に適用できる。送信端末は、スループットが十分な受信端末A,Cに対しては同一スレッド(第1のスレッド)で送信し、スループットが低下している受信端末Bに対しては別スレッド(第2のスレッド)で送信する。このような送信方法をとることで、受信端末B宛てのスループットの低下が受信端末A,Cへの送信に影響を与えることがなくなる。また、受信端末A,B,Cに対してそれぞれ別のスレッドで送信するものではなく、スレッド数の増加、従ってCPU負荷が増加することを抑制できる。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、送信端末および送信方法に関し、特に、映像ストリーム等の同一データをTCP(TransmissionControl Protocol)等の輻輳制御機構を持つトランスポートプロトコルを利用して複数の送信先に送信する送信端末および送信方法に関する。
【背景技術】
【0002】
送信端末が、映像ストリーム等の同一データをTCP等のトランスポートプロトコルを利用して複数の送信先に送信するシステムが考えられる。全ての送信先に対して、同一スレッドでデータを送信する場合、送信処理がブロッキングされる送信先が一箇所でもあると、他の全ての送信先に対する送信処理もブロッキング解除まで待機させられる、その結果、スループットが十分なものも含めて、全ての送信先に対する通信が遅延し、データが欠損する場合もある。
【0003】
また、全ての送信先に対して、それぞれにスレッドを生成してデータを送信する場合、送信処理は全て並行に行われるので、ある送信先の送信処理がブロッキングされても、他の送信先には影響しない。しかし、生成されるスレッド数が増大するので、CPU負荷が高くなる。
【0004】
また、送信処理を非ブロッキングに設定する場合、送信処理が遅延する場合、ブロッキングされずに即座にエラーとなる.この場合、処理は遅延しないが、スループットが十分な送信先もエラーを起こし、実用に耐えない。
【0005】
例えば、特許文献1には、受信端末の演算能力やネットワークの帯域に応じて映像の質を変化させる等、送るデータを適正化する技術が記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2010−212942号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述したように、送信端末が、映像ストリーム等の同一データをTCP等のトランスポートプロトコルを利用して複数の送信先に送信する場合、一箇所のスループットの低下が他の送信先にも影響する、あるいは、CPU負荷が高くなる、などの不都合ある。
【0008】
本技術の目的は、CPU負荷が高くなるのを抑制しつつ、一箇所のスループットの低下が他の送信先に影響しない状態を実現することにある。
【課題を解決するための手段】
【0009】
本技術の概念は、
同一データを、輻輳制御機構を持つトランスポートプロトコルを利用して複数の送信先に送信するデータ送信部を備え、
上記データ送信部は、
スループットが十分な送信先に対しては第1のスレッドでまとめて送信し、上記スループットが低下して送信処理が一定時間以上ブロッキングされる送信先に対しては、上記第1のスレッドとは異なる第2のスレッドで送信する状態に移す
送信端末にある。
【0010】
本技術において、データ送信部により、同一データが、複数の送信先に送信される。この場合、トランスポートプロトコルとして、輻輳制御機構を持つトランスポートプロトコル、例えば、TCP(Transmission Control Protocol)、STCP(StreamControl Transmission Protocol)、DCCP(Datagram CongestionControl Protocol)等である。また、この場合、データは、映像ストリームの他、ファイル等のその他のデータ等も考えられる。ここで、輻輳制御機構とは、ネットワークの状況に応じて転送速度を制御する機構である。TCP等のトランスポートプロトコルを利用することで、他の通信を阻害しないように、利用帯域が調整されるが、その代わり必要なスループットを確保できなくなる場合がある。
【0011】
データ送信部では、スループットが十分な送信先に対しては、第1のスレッドでまとめて送信されるが、スループットが低下して送信処理が一定時間以上ブロッキングされる送信先に対しては、第1のスレッドとは異なる第2のスレッドで送信される。ここで、スループットが低下して送信処理が一定時間以上ブロッキングされる送信先が複数ある場合、各送信先の送信が別個のスレッドで行われるか、あるいは、全ての送信先の送信が共通の1つのスレッドで行われる。
【0012】
このように、本技術においては、スループットが十分な送信先に対しては、第1のスレッドでまとめて送信し、スループットが低下して送信処理が一定時間以上ブロッキングされる送信先に対しては第2のスレッドで送信するものである。そのため、一箇所のスループットの低下が他の送信先に影響しない状態を実現可能となる。また、本技術は、スループットが低下して送信処理が一定時間以上ブロッキングされる送信先のみを第2のスレッドで送信する状態に移すものである。そのため、CPU負荷が高くなるのを抑制可能となる。
【0013】
本技術において、例えば、データ送信部は、第2のスレッドで送信される送信先のスループットが十分な状態に回復するとき、この送信先に対しては、第1のスレッドで送信する状態に戻す、ようにされてもよい。このようにスループットが十分な状態に回復した送信先に対して第1のスレッドで送信する状態に戻すことで、増加したスレッド数を元に戻すことが可能となり、CPU負荷の軽減が可能となる。
【0014】
この場合、例えば、データ送信部は、第2のスレッドで送信される送信先の送信処理が一定時間以上ブロッキングされないことが所定回数連続するとき、この送信先に対しては、第1のスレッドで送信する状態に戻す、ようにされる。そして、この場合、例えば、データ送信部は、第2のスレッドで送信される送信先の送信処理が一定時間以上ブロッキングされないときカウントアップするカウンタを有し、この送信処理が一定時間以上ブロッキングされるときこのカウンタをリセットし、このカウンタのカウント値に基づいて第2のスレッドで送信される送信先の送信処理が一定時間以上ブロックされないことが所定回数連続するか否かを判断する、ようにされる。
【0015】
また、本技術において、例えば、データ送信部は、第2のスレッドで送信される送信先のスループットが所定時間回復しないとき、この送信先を切断する、ようにされてもよい。このようにスループットが所定時間回復しない送信先を切断することで、CPU負荷の軽減が可能となる。この場合、例えば、データ送信部は、第2のスレッドで送信される送信先の送信処理が一定時間以上ブロッキングされないときカウントアップするカウンタを有し、この送信処理が一定時間以上ブロッキングされるときカウンタをリセットし、所定時間におけるリセット回数に基づいてスループットが所定時間回復しないか否かを判断する、ようにされる。
【発明の効果】
【0016】
本技術によれば、CPU負荷が高くなるのを抑制しつつ、一箇所のスループットの低下が他の送信先に影響しない状態を実現できる。
【図面の簡単な説明】
【0017】
【図1】本技術の実施の形態としての多地点配信システムの構成例を示すブロック図である。
【図2】多地点配信システムを構成する送信端末の構成例を示すブロック図である。
【図3】同一スレッドで受信端末A,B,Cに送信する送信方法の一例を説明するための図である。
【図4】同一スレッドで複数の受信端末A,B,Cに送信する送信方法の一例であって、受信端末B宛てのスループットのみ低下している場合の例を説明するための図である。
【図5】別々のスレッドで受信端末A,B,Cに送信する送信方法の一例であって、受信端末B宛てのスループットのみ低下している場合の例を説明するための図である。
【図6】本技術における送信方法を説明するための図である。
【図7】元スレッド(第1のスレッド)の送信処理フローを示すフローチャートである。
【図8】別スレッド(第2のスレッド)の送信処理フローを示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、発明を実施するための形態(以下、「実施の形態」とする)について説明する。なお、説明を以下の順序で行う。
1.実施の形態
2.変形例
【0019】
<1.実施の形態>
[多地点配信システム]
図1は、実施の形態としての多地点配信システム10の構成例を示している。この多地点配信システム10は、送信端末100と複数の受信端末200がIPネットワーク300を介して接続された構成とされている。ここで、受信端末200は送信先を構成している。送信端末100には、ビデオカメラ装置等の映像/音声入力装置400から映像音声入力(映像データ、音声データ)が供給される。送信端末100では、映像音声入力に対して符号化処理等が行われて、映像データおよび音声データを含む映像ストリームが生成される。そして、送信端末100では、この映像ストリームが、TCP(Transmission Control Protocol)を利用して、データブロック毎に、送信先としての複数の受信端末200に順次送信される。
【0020】
ここで、送信端末100は、スループットが十分な受信端末200に対しては、第1のスレッドでまとめて送信する。また、送信端末100は、スループットが低下して送信処理が一定時間以上ブロッキングされる受信端末200に対しては、第1のスレッドとは異なる第2のスレッドで送信する状態に移す。また、送信端末100は、第2のスレッドで送信される受信端末200のスループットが十分な状態に回復するとき、この受信機200に対しては、第1のスレッドで送信する状態に戻す。さらに、送信端末100は、第2のスレッドで送信される受信端末200のスループットが所定時間回復しないとき、この受信端末200を切断する。
【0021】
[送信端末の構成]
図2は、送信端末100の構成例を示している。この送信端末100は、デバイスとして、エンコーダ101を有する。このエンコーダ101は、映像/音声入力装置400(図1参照)からの映像音声入力((映像データ、音声データ)に対して符号化処理等を行って映像ストリームを生成する。
【0022】
また、送信端末100は、アプリケーションとして、アプリケーションバッファ102と、送信処理部103を有する。アプリケーションバッファ102は、エンコーダ101で生成される送信ストリームを一時的に蓄積する。送信処理部103は、アプリケーションバッファ102に蓄積された送信ストリームを、データブロック毎に、複数の受信端末200に送信する。ここで、アプリケーションは、データ送信部を構成している。
【0023】
また、送信端末100は、カーネルとして、ソケットバッファ104を有する。このソケットバッファ104は、送信処理部103が各受信端末200に送信するデータブロックを一時的に蓄積する。このソケットバッファ104は、アプリケーション層とTCP層との間でデータの受け渡しをするために用いられるバッファである。このソケットバッファ104は、ソケット毎に確保されている。
【0024】
[送信端末における送信方法]
ここで、送信端末100における送信方法を説明する。TCPを利用したデータ送信においては、ソケットバッファ104に空きができるまで送信処理がブロッキングされる。ライブ配信している場合は、送信処理がブロッキングされている間も、エンコーダ101で新たなデータが生成され続ける。そのため、エンコーダ101で生成されたデータは、一旦アプリケーションバッファ102に蓄積され、その後に送信処理部103により順次送信される。
【0025】
最初に、種々の送信方法を説明する。図3は、同一スレッドで、複数の受信端末200、ここでは受信端末A,B,Cに送信する例を示している。映像音声入力はエンコーダ101に供給され、このエンコーダ101ではエンコード処理(符号化処理)を行って、映像ストリームを構成するエンコードされたデータをアプリケーションバッファ102に入れる。送信処理部103は、アプリケーションバッファ102からデータを取り出し、受信端末A,B,Cに順次データを送信する。
【0026】
この場合、送信処理部103は、データブロック毎に、受信端末A,B,Cに順次データを送信することを繰り返す。この場合、受信端末A,B,C宛てのスループットはそれぞれ十分なので、問題は発生していない。例えば、受信端末A,B,Cの全てに10Mbpsの映像ストリームを送っていて、受信端末A,B,C宛てのスループットが全て10Mbpsでネットワーク性能が出ているのであれば、図3に示すような送信方法であっても、問題なく送信することができる。
【0027】
図4は、図3の例と同様に同一スレッドで受信端末A,B,Cに送信するが、受信端末B宛てのスループットのみ低下している場合の例である。例えば、受信端末A,C宛てのスループットが10Mbpsでネットワーク性能が出ているが、受信端末B宛てのスループットが、ネットワーク状態の不良などによって、10Mbpsより小さくなっている場合である。送信処理部103は、データブロック毎に、受信端末A,B,Cに順次データを送信することを繰り返すため、アプリケーションバッファ102に未送信データが滞留し、受信端末B宛てのスループットの低下により、受信端末A,Cへの送信にも送信遅延が波及する。
【0028】
図5は、受信端末A,B,Cに対して別々のスレッドで送信し、受信端末B宛てのスループットのみ低下している場合の例である。この場合、スレッド毎に送信処理部103とアプリケーションバッファ102が用意され、並行して処理される。そのため、受信端末B宛てのスループットの低下が、受信端末A,Cへの送信に影響していない。ただし、この例では、スレッド数が増加するので、CPU負荷が高くなる。
【0029】
図6は、この実施の形態における送信方法の一例を示している。この場合、スループットが十分な受信端末A,Cに対しては同一スレッド(第1のスレッド)で送信され、スループットが低下している受信端末Bに対しては別スレッド(第2のスレッド)で送信される。このような送信方法とすることで、受信端末B宛てのスループットの低下が受信端末A,Cへの送信に影響を与えることがなくなる。しかも、この場合、受信端末A,B,Cに対してそれぞれ別のスレッドで送信するものではなく、図5の送信方法に比べて、スレッド数の増加、従ってCPU負荷が増加することを抑制できる。
【0030】
[スレッドの移動処理]
次に、スレッドの移動処理について説明する。この実施の形態における送信方法では、どの受信端末(送信先)を別スレッドで処理するかは、動的に制御される。具体的には、元スレッド(第1のスレッド)は、送信処理にかかった時間を監視し、一定時間以上かかっていれば、スループットが低下していると判断して、別スレッド(第2のスレッド)に移す。また、別スレッドに移した場合、スループットが回復すれば元のスレッドに処理を戻すが、一定時間以上スループットが回復しなければ回復不能と見做して切断する。
【0031】
図7のフローチャートは、元スレッド(第1のスレッド)の送信処理フローを示している。元スレッドは、この送信処理フローによる処理を、データブロック毎に繰り返す。元スレッドは、複数の受信機200への送信処理を行うが、送信処理にタイムアウト時間を設け、それを超えた受信機200への送信は別スレッド(第2のスレッド)に移す。
【0032】
すなわち、元スレッドは、ステップST1において、処理を開始し、その後にステップST2の処理に移る。元スレッドは、このステップST2において、未送信先を検索する。そして、元スレッドは、ステップST3において、未送信先があるか否かを判定する。未送信先がないとき、元スレッドは、ステップST7において、処理を終了する。一方、未送信先があるとき、元スレッドは、ステップST4において、その送信先に対する送信処理を行う。そして、元スレッドは、ステップST5において、送信処理時間がタイムアウト時間(例えば、0.2〜0.3秒)を超えたか否かを判定する。
【0033】
送信処理時間がタイムアウト時間を超えていないとき、元スレッドは、直ちにステップST2の処理に戻る。一方、送信処理時間がタイムアウト時間を超えたとき、元スレッドは、ステップST6において、その送信先に対する送信処理を別スレッドに移し、その後に、ステップST2の処理に戻る。すなわち、スループットが低下して送信処理が一定時間以上ブロッキングされる送信先に対しては、別スレッドで送信する状態に移す。
【0034】
図8のフローチャートは、別スレッド(第2のスレッド)の送信処理フローを示している。別スレッドは、この送信処理フローによる処理を、データブロック毎に繰り返す。別スレッドは、送信処理を行い、タイムアウトせずに処理が成功した場合は、送信成功数を1だけ増やす。別スレッドは、送信成功数が一定回数を超えたら、元のスレッドに処理を戻して終了する。別スレッドは、タイムアウトした場合、送信成功数をリセットし、過去所定時間のリセット回数が一定回数(閾値)を超えた場合、回復不能と見做して切断する。
【0035】
すなわち、別スレッドは、ステップST21において、処理を開始し、その後に、ステップST22の処理に移る。別スレッドは、このステップST22において、送信処理を行う。そして、別スレッドは、ステップST23おいて、送信処理時間がタイムアウト時間(例えば、0.2〜0.3秒)を超えたか否かを判定する。送信処理時間がタイムアウト時間を超えていないとき、別スレッドは、ステップST24において、送信成功数を1だけ増加する。この場合、送信成功数をカウントするCPU内のカウンタをインクリメントする。
【0036】
次に、別スレッドは、ステップST25において、送信成功数が閾値以上であるか否かを、カウンタのカウント値により判定する。この閾値は、例えば、数秒分程度に相当する値とされる。送信成功数が閾値以上でないとき、別スレッドは、直ちに、ステップST27において、処理を終了する。一方、送信成功数が閾値以上であるとき、別スレッドは、ステップST26において、当該送信先に対しては元スレッド(第1のスレッド)に処理を戻し、その後に、ステップST27において、処理を終了する。すなわち、別スレッドは、この別スレッドで送信される送信先のスループットが十分な状態に回復するとき、この送信先に対しては元スレッドで送信する状態に戻す。
【0037】
また、ステップST23で送信処理時間がタイムアウト時間を超えているとき、別スレッドは、ステップST28において、送信成功数をリセットする。この場合、送信成功数をカウントするカウンタをリセットする。そして、別スレッドは、ステップST29において、例えば、過去所定時間、例えば過去30秒間のリセット回数が閾値以上であるか否かを判定する。リセット回数が閾値以上でないとき、別スレッドは、直ちに、ステップST27において、処理を終了する。
【0038】
一方、リセット回数が閾値以上であるとき、別スレッドは、ステップST30において、当該送信先を切断し、その後に、ステップST27において、処理を終了する。すなわち、別スレッドは、この別スレッドで送信される送信先のスループットが所定時間以上回復しないとき、この送信先を切断する。
【0039】
図1に示す多地点配信システム10において、送信端末100では、スループットが十分な受信機200に対しては、第1のスレッドでまとめて送信される。また、この送信端末100では、スループットが低下して送信処理が一定時間以上ブロッキングされる受信機200に対しては、第2のスレッドで送信される。そのため、一箇所のスループットの低下が他の受信機200に影響しない状態を実現できる。また、送信端末100では、スループットが低下して送信処理が一定時間以上ブロッキングされる受信機200のみを第2のスレッドで送信する状態に移すものである。そのため、CPU負荷が高くなるのを抑制できる。これにより、データ配信以外の処理が影響を受けなくなる。
【0040】
また、図1に示す多地点配信システム10において、送信端末100では、第2のスレッドで送信される受信機200のスループットが十分な状態に回復するとき、この受信機200に対しては第1のスレッドで送信する状態に戻される。これにより、スレッド数を例えば2から1に減じることができ、CPU負荷の軽減が可能となる。
【0041】
また、図1に示す多地点配信システム10において、送信端末100では、第2のスレッドで送信される受信機200のスループットが所定時間回復しないとき、この受信機200が切断される。これにより、CPU負荷の軽減が可能となる。
【0042】
<2.変形例>
なお、上述実施の形態において、この送信端末100では、スループットが低下して送信処理が一定時間以上ブロッキングされる受信機200に対しては第2のスレッド(別スレッド)で送信される。ここで、このような受信機200が複数存在する場合も考えられる。その場合、各受信機200の送信が別個のスレッドで行われるようにしてもよいし、あるいは、全ての受信機200の送信が共通の1つのスレッドで行われるようにしてもよい。なお、各受信機200の送信が別個のスレッドで行われる場合には、第2のスレッドが複数となり、CPU負荷が増加する。
【0043】
また、上述実施の形態において、送信端末100は、TCPを利用して、送信を行っている。しかし、利用可能なトランスポートプロトコルは、TCPに限定されない。例えば、TCPと同様に輻輳制御機構を持つ、STCP(Stream Control Transmission Protocol)、あるいはDCCP(Datagram Congestion Control Protocol)等であってもよい。また、上述実施の形態において、送信端末100は、複数の受信端末200に、映像データおよび音声データが含まれる映像ストリームを送信するものであるが、ファイルなどのその他のデータを送信する場合にも、本技術を同様に適用できる。
【産業上の利用可能性】
【0044】
本技術は、例えば、映像ストリームをTCP等の輻輳制御機構を持つトランスポートプロトコルを利用して複数の送信先に送信する多地点配信システム等に適用できる。
【符号の説明】
【0045】
10・・・多地点配信システム
100・・・送信端末
101・・・エンコーダ
102・・・アプリケーションバッファ
103・・・送信処理部
104・・・ソケットバッファ
200・・・受信端末
300・・・IPネットワーク
400・・・映像/音声入力装置

【特許請求の範囲】
【請求項1】
同一データを、輻輳制御機構を持つトランスポートプロトコルを利用して複数の送信先に送信するデータ送信部を備え、
上記データ送信部は、
スループットが十分な送信先に対しては第1のスレッドでまとめて送信し、上記スループットが低下して送信処理が一定時間以上ブロッキングされる送信先に対しては、上記第1のスレッドとは異なる第2のスレッドで送信する状態に移す
送信端末。
【請求項2】
上記データ送信部は、
上記第2のスレッドで送信される送信先の上記スループットが十分な状態に回復するとき、該送信先に対しては、上記第1のスレッドで送信する状態に戻す
請求項1に記載の送信端末。
【請求項3】
上記データ送信部は、
上記第2のスレッドで送信される送信先の送信処理が上記一定時間以上ブロッキングされないことが所定回数連続するとき、該送信先に対しては、上記第1のスレッドで送信する状態に戻す
請求項2に記載の送信端末。
【請求項4】
上記データ送信部は、
上記第2のスレッドで送信される送信先の送信処理が上記一定時間以上ブロッキングされないときカウントアップするカウンタを有し、該送信処理が上記一定時間以上ブロッキングされるとき該カウンタをリセットし、該カウンタのカウント値に基づいて上記第2のスレッドで送信される送信先の送信処理が上記一定時間以上ブロッキングされないことが所定回数連続するか否かを判断する
請求項3に記載の送信端末。
【請求項5】
上記データ送信部は、
上記第2のスレッドで送信される送信先の上記スループットが所定時間回復しないとき、該送信先を切断する
請求項2に記載の送信端末。
【請求項6】
上記データ送信部は、
上記第2のスレッドで送信される送信先の送信処理が上記一定時間以上ブロッキングされないときカウントアップするカウンタを有し、該送信処理が上記一定時間以上ブロッキングされるとき該カウンタをリセットし、上記所定時間におけるリセット回数に基づいて上記スループットが所定時間回復しないか否かを判断する
請求項5に記載の送信端末。
【請求項7】
上記データは、映像ストリームである
請求項1に記載の送信端末。
【請求項8】
上記輻輳制御機構を持つトランスポートプロトコルは、TCPである
請求項1に記載の送信端末。
【請求項9】
同一データを、輻輳制御機構を持つトランスポートプロトコルを利用して複数の送信先に送信する際に、
スループットが十分な送信先に対しては第1のスレッドでまとめて送信し、
上記スループットが低下して送信処理が一定時間以上ブロッキングされる送信先に対しては、上記第1のスレッドとは異なる第2のスレッドで送信する状態に移す
送信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−169959(P2012−169959A)
【公開日】平成24年9月6日(2012.9.6)
【国際特許分類】
【出願番号】特願2011−30510(P2011−30510)
【出願日】平成23年2月16日(2011.2.16)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】