以下に、本願の開示する通信システム、デコーダ、エンコーダ及び通信方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本願の開示する通信システム、デコーダ、エンコーダ及び通信方法が限定されるものではない。なお、以下では、まず、実施例1に係る通信システムの構成について説明し、次に、実施例1におけるエンコーダの構成、実施例1におけるデコーダの構成について説明し、最後に、実施例1に係る通信システムによる処理手順について説明する。
[実施例1に係る通信システムの構成]
まず、図1を用いて、実施例1に係る通信システム1の構成について説明する。図1は、実施例1に係る通信システム1の構成例を示す図である。実施例1に係る通信システム1は、ARQ方式を用いてエラー訂正を行う。図1に示すように、通信システム1は、カメラ11と、制御端末12と、モニタ21と、制御端末22と、エンコーダ100と、デコーダ200とを含む。
カメラ11は、図12に示したカメラ92と同様である。制御端末12は、エンコーダ100を制御し、例えば、パーソナルコンピュータである。モニタ21は、図12に示したモニタ95と同様である。制御端末22は、デコーダ200を制御し、例えば、パーソナルコンピュータである。
実施例1におけるエンコーダ100とデコーダ200とは、第一の通信経路であるメインネットワーク10と、第二の通信経路であるサブネットワーク20とを介して通信を行う。
具体的には、エンコーダ100は、ストリーミング配信を行う場合、メインネットワーク10を介して、映像データ等のパケットをデコーダ200へ送信する。また、エンコーダ100及びデコーダ200は、ストリーミング配信におけるパケットにエラーが発生した場合、メインネットワーク10又はサブネットワーク20のいずれかを介して、再送パケットの送受を行う。なお、以下では、ストリーミング配信におけるパケットを「ストリームパケット」と表記するものとする。
以下に、ストリーミング配信を行う場合と、再送パケットの送受を行う場合とに分けて、エンコーダ100及びデコーダ200による処理について具体的に説明する。
まず、ストリーミング配信を行う場合におけるエンコーダ100及びデコーダ200による処理について説明する。エンコーダ100は、ストリーミング配信を行う場合、カメラ11によって撮像された映像を符号化し、符号化したストリームパケットを、メインネットワーク10を介してデコーダ200へ送信する。そして、デコーダ200は、エンコーダ100から受信したストリームパケットを復号化して、復号化した映像をモニタ95へ出力する。
このようにエンコーダ100及びデコーダ200は、1個のメインネットワーク10を用いてストリームパケットの送受を行うことが好ましい。これは、メインネットワーク10及びサブネットワーク20に分散してストリームパケットを送信すると、一方のネットワークが故障した場合、多くのストリームパケットがロストすることになり、映像の品質が著しく劣化するからである。また、他の理由として、メインネットワーク10及びサブネットワーク20に分散してストリームパケットを送信すると、デコーダ200によって行われるストリームパケットを時系列に整列する処理が煩雑になるからである。特に、リアルタイムに出力することが求められている映像データが配信されている場合、デコーダ200は、煩雑なパケット整列処理を行っていると、映像をリアルタイムに出力することが困難になる。
続いて、再送パケットの送受を行う場合におけるエンコーダ100及びデコーダ200による処理について説明する。デコーダ200は、ストリームパケットにエラーが発生したことを検出した場合に、再送パケットの送受に用いる通信経路を選択する。具体的には、メインネットワーク10及びサブネットワーク20には、それぞれ再送パケットの送受に用いられる割合(以下、「再送経路割合」と言う)が割り当てられており、デコーダ200は、かかる再送経路割合に基づいて、再送パケットを送受する通信経路を選択する。
そして、デコーダ200は、選択したメインネットワーク10又はサブネットワーク20のいずれかを介して、エンコーダ100に対して再送要求を送信する。かかる再送要求を受け付けたエンコーダ100は、再送要求が流通したメインネットワーク10又はサブネットワーク20のいずれいかを介して、再送パケットをデコーダ200へ送信する。
例えば、メインネットワーク10の再送経路割合が「100%」であり、サブネットワーク20の再送経路割合「0%」であるものとする。かかる場合、デコーダ200は、再送パケットを送受する通信経路として、常にメインネットワーク10を選択し、選択したメインネットワーク10を介して、エンコーダ100へ再送要求を送信する。そして、かかる再送要求を受信したエンコーダ100は、メインネットワーク10を介して、再送パケットをデコーダ200へ送信する。
また、例えば、メインネットワーク10の再送経路割合が「50%」であり、サブネットワーク20の再送経路割合が「50%」であるものとする。かかる場合、デコーダ200は、再送パケットを送受する通信経路として、例えば、メインネットワーク10を選択する。そして、デコーダ200は、メインネットワーク10を介して再送要求を送信し、エンコーダ100は、メインネットワーク10を介して再送パケットを送信する。その後、デコーダ200は、パケットエラーを再度検出した場合に、例えば、サブネットワーク20を選択する。すなわち、デコーダ200は、メインネットワーク10とサブネットワーク20とに対して交互に再送要求を送信する。このようにして、デコーダ200は、再送要求に用いる各通信経路の割合を「1:1」にする。
なお、上記例において、デコーダ200は、メインネットワーク10とサブネットワーク20とに対して、1回ずつ交互に再送要求を送信しなくてもよい。例えば、デコーダ200は、メインネットワーク10とサブネットワーク20とに対して、2回ずつ交互に再送要求を送信してもよいし、5回ずつ交互に再送要求を送信してもよい。
ここで、上述した「再送経路割合」について説明する。再送経路割合は、デコーダ200によって、再送パケットを効率良く送受できるように定期的に更新される。具体的には、デコーダ200は、定期的に、再送要求を送信した回数(以下、「再送要求送信回数」と言う)をパケットごとに蓄積する。そして、デコーダ200は、通信経路ごとに、同一の再送パケットに対して再送要求を送信した回数の平均値を算出する。以下では、かかる平均値を「再送要求平均回数」と呼ぶこととする。
そして、デコーダ200は、メインネットワーク10とサブネットワーク20との再送要求平均回数を比較する。デコーダ200は、かかる比較の結果に基づいて、再送要求平均回数が小さいネットワークの方が再送パケットを効率良く送受できると判定する。
例えば、再送要求平均回数「1」である場合、デコーダ200は、再送要求を1回送信すれば、再送パケットを受信できる。一方、再送要求平均回数「5」である場合、デコーダ200は、再送要求を約5回送信した場合に、再送パケットを受信できる。すなわち、再送要求平均回数「5」である場合、デコーダ200は、再送要求を送信しても5回中4回は再送パケットを受信できないことになる。このように再送パケットを受信できなくなるケースは、トラフィック量が増加してネットワークが圧迫されている場合などに発生し得る。したがって、デコーダ200は、再送要求平均回数が小さいネットワークの方が再送パケットを効率良く送受できると判定する。
そして、デコーダ200は、メインネットワーク10の再送要求平均回数がサブネットワーク20の再送要求平均回数以下である場合に、メインネットワーク10の再送経路割合を増やすとともに、サブネットワーク20の再送経路割合を減らす。一方、デコーダ200は、メインネットワーク10の再送要求平均回数がサブネットワーク20の再送要求平均回数よりも大きい場合に、メインネットワーク10の再送経路割合を減らすとともに、サブネットワーク20の再送経路割合を増やす。
このようにして、デコーダ200は、メインネットワーク10又はサブネットワーク20のうち、再送パケットを効率良く送受できる方の再送経路割合を増やす。これにより、エンコーダ100及びデコーダ200は、ストリームパケットにエラーが発生した場合に、再送パケットを効率良く送受することができる。
図2−1及び図2−2に示した例を用いて、上述した再送経路割合を更新する処理を説明する。図2−1及び図2−2は、再送経路割合を更新する処理の一例を説明するための図である。なお、ここでは、現状のメインネットワーク10の再送経路割合が「80%」であり、現状のサブネットワーク20の再送経路割合が「20%」であるものとする。
図2−1に示すように、メインネットワーク10のネットワーク帯域には空き領域がほとんど存在しない。このようにトラフィック量が増加した状態の場合、メインネットワーク10の再送要求平均回数は、一般に大きくなる。これは、上述したように、トラフィック量が増加した場合に、パケットロスト等のエラーが発生する可能性が高くなるので、再送要求を送信する回数が増えるからである。一方、サブネットワーク20のネットワーク帯域には空き領域が存在する。このため、サブネットワーク20の再送要求平均回数は、一般に小さくなる。
このとき、図2−1に示すように、メインネットワーク10の再送要求平均回数が「6」であり、サブネットワーク20の再送要求平均回数が「2」であるものとする。かかる場合、サブネットワーク20を用いた方が再送パケットを効率良く送受できるので、デコーダ200は、メインネットワーク10の再送経路割合を減らすとともに、サブネットワーク20の再送経路割合を増やす。例えば、デコーダ200は、メインネットワーク10の再送経路割合を「80%」から「60%」に更新するとともに、サブネットワーク20の再送経路割合を「20%」から「40%」に更新する。
そして、再送経路割合が更新された後、メインネットワーク10とサブネットワーク20とのトラフィック量が図2−2に示した状態になったものとする。具体的には、図2−2に示すように、メインネットワーク10のトラフィック量が図2−1に示した状態よりも減少したものとする。かかる場合、図2−2に示すように、メインネットワーク10のネットワーク帯域には空き領域が存在する。このようにトラフィック量が減少して空き領域ができた場合、メインネットワーク10の再送要求平均回数は、一般に小さくなる。
このとき、図2−2に示すように、メインネットワーク10の再送要求平均回数が「2」であり、サブネットワーク20の再送要求平均回数が「2」であるものとする。かかる場合、再送パケットを送受する効率は同一であるが、エンコーダ100及びデコーダ200は、メインネットワーク10を用いて再送パケットを送受することが好ましい。これは、ストリームパケットと再送パケットとを同一の通信経路へ送信した方が、デコーダ200によるパケット整列処理を簡易にすることができるとともに、サブネットワーク20が故障した場合であっても映像の品質劣化を防止することができるからである。
したがって、デコーダ200は、図2−2に示した状態である場合、メインネットワーク10の再送経路割合を増やすとともに、サブネットワーク20の再送経路割合を減らす。例えば、デコーダ200は、メインネットワーク10の再送経路割合を「60%」から「80%」に更新するとともに、サブネットワーク20の再送経路割合を「40%」から「20%」に更新する。
このように、実施例1に係る通信システム1は、複数の通信経路を用いて、エンコーダ100とデコーダ200との間でデータの送受を行う。そして、エンコーダ100及びデコーダ200は、再送パケットを効率良く送受できるように設定されている再送経路割合に基づいて、通信経路を選択して、選択した通信経路を用いて再送パケットを送受する。これにより、実施例1に係る通信システム1は、効率良く再送パケットを送受できるので、エラー訂正率を向上させることができる。
また、実施例1に係る通信システム1は、各通信経路における再送要求平均回数に基づいて再送経路割合を定期的に更新するので、ネットワークのトラフィック量が変動した場合であっても、かかる変動に応じた再送経路割合を設定することができる。これにより、実施例1に係る通信システム1は、ネットワークのトラフィック量が変動した場合であっても、効率良く再送パケットを送受でき、その結果、エラー訂正率を向上させることができる。
[実施例1におけるエンコーダの構成]
次に、図3を用いて、図1に示したエンコーダ100の構成について説明する。図3は、図1に示したエンコーダ100の構成を示す図である。図3に示すように、エンコーダ100は、インタフェース(以下、「I/F」と言う)110a及び110bと、送信バッファ121と、装置コンフィグ情報122と、符号化部130と、ARQ処理部140と、メイン送受信部150aと、サブ送受信部150bとを有する。
I/F110aは、メインネットワーク10を介してデコーダ200との間で各種パケットを送受する。I/F110bは、サブネットワーク20を介してデコーダ200との間で各種パケットを送受する。送信バッファ121は、エンコーダ100からデコーダ200へ配信されるストリームパケットを記憶する。
装置コンフィグ情報122は、エンコーダ100及びデコーダ200に関する情報などを記憶する。図4を用いて、装置コンフィグ情報122について具体的に説明する。図4は、装置コンフィグ情報122の一例を示す図である。
図4に示すように、装置コンフィグ情報122は、メイン側エンコーダIPアドレス、サブ側エンコーダIPアドレス、メイン側デコーダIPアドレス、サブ側デコーダIPアドレス、送信要求受信用ポート、送信要求送信用ポート、ストリーム送信用ポート、ストリーム受信用ポート、メイン側エンコーダエラー訂正用ポート、サブ側エンコーダエラー訂正用ポート、メイン側デコーダエラー訂正用ポート、サブ側デコーダエラー訂正用ポート、ネットワーク分散の有無、SR/RR送信周期、疎通状態監視周期、エラー訂正状況監視周期、再送経路割合更新周期、移行割合といった項目を有する。
「メイン側エンコーダIPアドレス」は、メインネットワーク10と接続されるエンコーダ100のIPアドレスを示す。図4に示した例において、メイン側エンコーダIPアドレスは「A.A.A.A」である。
「サブ側エンコーダIPアドレス」は、サブネットワーク20と接続されるエンコーダ100のIPアドレスを示す。図4に示した例において、サブ側エンコーダIPアドレスは「B.B.B.B」である。
「メイン側デコーダIPアドレス」は、メインネットワーク10と接続されるデコーダ200のIPアドレスを示す。図4に示した例において、メイン側デコーダIPアドレスは「C.C.C.C」である。
「サブ側デコーダIPアドレス」は、サブネットワーク20と接続されるデコーダ200のIPアドレスを示す。図4に示した例において、サブ側デコーダIPアドレスは「D.D.D.D」である。
「送信要求受信用ポート」は、エンコーダ100が有するポートのうち、映像データ等を送信する旨の要求である送信要求パケットを受信するポートのポート番号を示す。図4に示した例において、送信要求受信用ポートのポート番号は「1」である。
「送信要求送信用ポート」は、デコーダ200が有するポートのうち、送信要求パケットを送信する際に用いられるポートのポート番号を示す。図4に示した例において、送信要求送信用ポートのポート番号は「1」である。
すなわち、図4に示した例では、デコーダ200は、自装置内のポートのうち、ポート番号が「1」であるポートへ送信要求を送信する。このとき、デコーダ200は、エンコーダ100が有するポートのうちポート番号が「1」であるポートに対して送信要求を送信する。
「ストリーム送信用ポート」は、エンコーダ100が有するポートのうち、ストリームパケットを送信する際に用いられるポートのポート番号を示す。図4に示した例において、ストリーム送信用ポートのポート番号は「2」である。
「ストリーム受信用ポート」は、デコーダ200が有するポートのうち、ストリームパケットを受信するポートのポート番号を示す。図4に示した例において、ストリーム受信用ポートのポート番号は「2」である。
すなわち、図4に示した例では、エンコーダ100は、自装置内のポートのうち、ポート番号が「2」であるポートへストリームパケットを送信する。このとき、エンコーダ100は、デコーダ200が有するポートのうちポート番号が「2」であるポートに対してストリームパケットを送信する。
「メイン側エンコーダエラー訂正用ポート」は、エンコーダ100が有するポートのうち、メインネットワーク10を介して再送要求や再送パケットを送受する際に用いられるポートのポート番号を示す。図4に示した例において、メイン側エンコーダエラー訂正用ポートのポート番号は「3」である。
「サブ側エンコーダエラー訂正用ポート」は、エンコーダ100が有するポートのうち、サブネットワーク20を介して再送要求や再送パケットを送受する際に用いられるポートのポート番号を示す。図4に示した例において、サブ側エンコーダエラー訂正用ポートのポート番号は「4」である。
「メイン側デコーダエラー訂正用ポート」は、デコーダ200が有するポートのうち、メインネットワーク10を介して再送要求や再送パケットを送受する際に用いられるポートのポート番号を示す。図4に示した例において、メイン側デコーダエラー訂正用ポートのポート番号は「3」である。
「サブ側デコーダエラー訂正用ポート」は、デコーダ200が有するポートのうち、サブネットワーク20を介して再送要求や再送パケットを送受する際に用いられるポートのポート番号を示す。図4に示した例において、サブ側デコーダエラー訂正用ポートのポート番号は「4」である。
「ネットワーク分散の有無」は、再送パケットの送受に用いる通信経路をメインネットワーク10及びサブネットワーク20に分散するか否かを示す。かかる「ネットワーク分散の有無」に、分散しない旨の情報が設定されている場合、エンコーダ100及びデコーダ200は、例えば、メインネットワーク10だけを用いて、再送パケットの送受を行う。なお、図4に示した例において、「ネットワーク分散の有無」に「1」が設定されている場合、再送パケットの送受に用いる通信経路をメインネットワーク10及びサブネットワーク20に分散することを示すものとする。
「SR/RR送信周期」は、エンコーダ100及びデコーダ200によって、RTCPに規定されるSR(Sender Report)パケットやRR(Receiver Report)パケットが送受される周期を示す。図4に示した例の場合、エンコーダ100及びデコーダ200は、1000[ms]ごとにSRパケットやRRパケットを送受する。なお、SRパケット及びRRパケットについては後述する。
「疎通状態監視周期」は、デコーダ200によって、メインネットワーク10及びサブネットワーク20における疎通状態が監視される周期を示す。図4に示した例の場合、デコーダ200は、5000[ms]ごとに疎通状態を監視する。
「エラー訂正状況監視周期」は、デコーダ200によって、再送要求送信回数が監視される周期を示す。図4に示した例の場合、デコーダ200は、1000[ms]ごとに再送要求送信回数等を監視する。
「再送経路割合更新周期」は、デコーダ200によって、再送経路割合更新処理が行われる周期を示す。図4に示した例の場合、デコーダ200は、1000[ms]ごとに再送経路割合を更新する。
「移行割合」は、メインネットワーク10及びサブネットワーク20の再送経路割合を加減する値を示す。かかる「移行割合」は、デコーダ200によって再送経路割合更新処理が行われる場合に用いられる。図4に示した例の場合、デコーダ200は、再送経路割合を「5%」加減する。
図3の説明に戻って、符号化部130は、図1に示したカメラ11等から映像等を入力された場合に、かかる映像等を符号化し、符号化したデータを送信バッファ121に記憶させる。
ARQ処理部140は、ARQに関する各種処理を行う。具体的には、ARQ処理部140は、エンコーダ100がストリーミング配信を行っている間、装置コンフィグ情報122に記憶されているSR/RR送信周期が経過するたびに、時刻情報を含むSRパケットを生成する。そして、ARQ処理部140は、生成したSRパケットを、後述するメイン送信部152a及びサブ送信部152bへ出力する。
また、ARQ処理部140は、上述したSRパケットを受信したデコーダ200からRRパケットを受信した場合に、かかるRRパケットを解析してRTT(Round Trip Time:往復遅延時間)値を算出する。続いて、ARQ処理部140は、算出したRTT値を含むAPP(Application Defined)パケットを生成し、生成したAPPパケットを後述するメイン送信部152a及びサブ送信部152bへ出力する。なお、以下では、RTT値を含むAPPパケットを「APPパケット(RTT通知)」と表記するものとする。
また、ARQ処理部140は、デコーダ200から、パケットの再送要求を示すAPPパケットを受信した場合に、かかるAPPパケットを解析して、再送対象のパケットを特定する。なお、以下では、パケットの再送要求を示すAPPパケットを「APPパケット(再送要求)」を表記するものとする。
メイン送受信部150aは、デコーダ200との間で、メインネットワーク10を介して各種パケットを送受する処理を行う。具体的には、メイン送受信部150aは、メイン受信部151aと、メイン送信部152aとを有する。
メイン受信部151aは、デコーダ200から、メインネットワーク10を介して、送信要求パケット、RRパケット、APPパケット(再送要求)等を受信する。メイン送信部152aは、メインネットワーク10を介して、送信要求応答パケット、ストリームパケット、SRパケット、APPパケット(RTT通知)、再送パケット等を、デコーダ200へ送信する。
以下に、ストリームパケットを送受する場合、SR/RRパケットを送受する場合、再送パケットを送受する場合に分けて、メイン受信部151a及びメイン送信部152aによる処理について具体的に説明する。
最初に、ストリームパケットを送受する場合におけるメイン受信部151a及びメイン送信部152aによる処理について説明する。まず、メイン受信部151aは、デコーダ200によって映像データ等を送信する旨の要求である送信要求パケットが送信された場合に、かかる送信要求パケットを受信する。そして、メイン送受信部150aは、メイン受信部151aによって受信された送信要求パケットを解析する。続いて、メイン送信部152aは、解析結果に基づいて、送信要求パケットの応答である送信要求応答パケットをデコーダ200へ送信する。そして、メイン送信部152aは、送信バッファ121から配信対象の映像データ等を取得して、取得した映像データ等をストリームパケットとしてデコーダ200へ送信する。
ここで、装置コンフィグ情報122が図4に示した状態であるものとする。かかる場合、メイン受信部151aは、ポート番号が「1」であるポート(送信要求受信用ポート)によって、送信要求パケットを受信する。
また、メイン送信部152aは、自装置内のポートのうち、ポート番号が「1」であるポート(送信要求送信用ポート)へ送信要求応答パケットを送信する。このとき、メイン送信部152aは、宛先のIPアドレス(メイン側デコーダIPアドレス)を「C.C.C.C」とし、かつ、宛先のポート番号(送信要求受信用ポート)を「1」とする。
また、メイン送信部152aは、自装置内のポートのうち、ポート番号が「2」であるポート(ストリーム送信用ポート)へストリームパケットを送信する。このとき、メイン送信部152aは、宛先のIPアドレス(メイン側デコーダIPアドレス)を「C.C.C.C」とし、かつ、宛先のポート番号(ストリーム受信用ポート)を「2」とする。
続いて、SR/RRパケットを送受する場合におけるメイン受信部151a及びメイン送信部152aによる処理について説明する。まず、メイン送信部152aは、ARQ処理部140からSRパケットを入力された場合に、かかるSRパケットをデコーダ200へ送信する。続いて、メイン受信部151aは、SRパケットを受信したデコーダ200によってRRパケットが送信された場合に、かかるRRパケットを受信し、受信したRRパケットをARQ処理部140へ出力する。続いて、メイン送信部152aは、ARQ処理部140からAPPパケット(RTT通知)を入力された場合に、かかるAPPパケット(RTT通知)をデコーダ200へ送信する。
ここで、装置コンフィグ情報122が図4に示した状態であるものとする。かかる場合、メイン送信部152aは、自装置内のポートのうち、例えば、ポート番号が「3」であるポート(メイン側エンコーダエラー訂正用ポート)へSRパケットやAPPパケット(RTT通知)を送信する。このとき、メイン送信部152aは、例えば、宛先のIPアドレス(メイン側デコーダIPアドレス)を「C.C.C.C」とし、かつ、宛先のポート番号(メイン側デコーダエラー訂正用ポート)を「3」とする。
続いて、再送パケットを送受する場合におけるメイン受信部151a及びメイン送信部152aによる処理について説明する。まず、メイン受信部151aは、デコーダ200によってAPPパケット(再送要求)が送信された場合に、かかるAPPパケット(再送要求)を受信して、受信したAPPパケット(再送要求)をARQ処理部140へ出力する。そして、メイン送信部152aは、ARQ処理部140によって、かかるAPPパケット(再送要求)に基づいて再送パケットが特定された場合に、特定された再送パケットをデコーダ200へ送信する。すなわち、メイン送信部152aは、メイン受信部151aによってAPPパケット(再送要求)が受信された場合に、かかるAPPパケット(再送要求)が流通したメインネットワーク10を介して、再送パケットを送信する。
ここで、装置コンフィグ情報122が図4に示した状態であるものとする。かかる場合、メイン受信部151aは、ポート番号が「3」であるポート(メイン側エンコーダエラー訂正用ポート)によって、APPパケット(再送要求)を受信する。
また、メイン送信部152aは、自装置内のポートのうち、ポート番号が「3」であるポート(メイン側エンコーダエラー訂正用ポート)へ再送パケットを送信する。このとき、メイン送信部152aは、宛先のIPアドレス(メイン側デコーダIPアドレス)を「C.C.C.C」とし、かつ、宛先のポート番号(メイン側デコーダエラー訂正用ポート)を「3」とする。
サブ送受信部150bは、デコーダ200との間で、サブネットワーク20を介して各種パケットを送受する処理を行う。具体的には、サブ送受信部150bは、サブ受信部151bと、サブ送信部152bとを有する。
サブ受信部151bは、メイン受信部151aと同様に、デコーダ200からRRパケット、APPパケット(再送要求)を受信する。また、サブ送信部152bは、メイン送信部152aと同様に、SRパケット、APPパケット(RTT通知)、再送パケットを送信する。
具体的には、サブ送信部152bは、ARQ処理部140からSRパケットを入力された場合に、かかるSRパケットをデコーダ200へ送信する。続いて、サブ受信部151bは、デコーダ200からRRパケットを受信する。続いて、サブ送信部152bは、ARQ処理部140からAPPパケット(RTT通知)を入力された場合に、かかるAPPパケット(RTT通知)をデコーダ200へ送信する。
ここで、装置コンフィグ情報122が図4に示した状態であるものとする。かかる場合、サブ送信部152bは、自装置内のポートのうち、例えば、ポート番号が「4」であるポート(サブ側エンコーダエラー訂正用ポート)へSRパケットやAPPパケット(RTT通知)を送信する。このとき、サブ送信部152bは、例えば、宛先のIPアドレス(サブ側デコーダIPアドレス)を「D.D.D.D」とし、かつ、宛先のポート番号(サブ側デコーダエラー訂正用ポート)を「4」とする。
また、サブ受信部151b、デコーダ200からAPPパケット(再送要求)を受信し、受信したAPPパケット(再送要求)をARQ処理部140へ出力する。そして、サブ送信部152bは、ARQ処理部140によって再送パケットが特定された場合に、特定された再送パケットをデコーダ200へ送信する。すなわち、サブ送信部152bは、サブ受信部151bによってAPPパケット(再送要求)が受信された場合に、かかるAPPパケット(再送要求)が流通したサブネットワーク20を介して、再送パケットを送信する。
ここで、装置コンフィグ情報122が図4に示した状態であるものとする。かかる場合、サブ受信部151bは、ポート番号が「4」であるポート(サブ側エンコーダエラー訂正用ポート)によって、APPパケット(再送要求)を受信する。また、サブ送信部152bは、自装置内のポートのうち、ポート番号が「4」であるポート(サブ側エンコーダエラー訂正用ポート)へ再送パケットを送信する。このとき、サブ送信部152bは、宛先のIPアドレス(サブ側デコーダIPアドレス)を「D.D.D.D」とし、かつ、宛先のポート番号(サブ側デコーダエラー訂正用ポート)を「4」とする。
一方、サブ受信部151bは、メイン受信部151aと比較して、デコーダ200から送信要求パケットを受信しない。また、サブ送信部152bは、メイン送信部152aと比較して、送信要求応答パケットや、ストリームパケットをデコーダ200へ送信しない。これは、実施例1に係る通信システム1では、エンコーダ100及びデコーダ200は、メインネットワーク10を用いて、ストリーミング配信を行うからである。
[実施例1におけるデコーダの構成]
次に、図5を用いて、図1に示したデコーダ200の構成について説明する。図5は、図1に示したデコーダ200の構成を示す図である。図5に示すように、デコーダ200は、I/F210a及び210bと、受信バッファ221と、装置コンフィグ情報222と、復号化部230と、ARQ処理部240と、メイン送受信部250aと、サブ送受信部250bとを有する。
I/F210aは、メインネットワーク10を介してエンコーダ100との間で各種パケットを送受する。I/F210bは、サブネットワーク20を介してエンコーダ100との間で各種パケットを送受する。受信バッファ221は、エンコーダ100から受信したストリームパケットを記憶する。装置コンフィグ情報222は、図3に示した装置コンフィグ情報122と同様の情報を記憶する。
復号化部230は、エンコーダ100から配信されたストリームパケットを復号化する。そして、復号化部230は、復号化した映像データ等を、図1に示したモニタ95等へ出力する。
ARQ処理部240は、ARQに関する各種処理を行う。具体的には、ARQ処理部240は、エンコーダ100からSRパケットを受信した場合に、かかるSRパケットを解析し、解析結果及びSRパケットに含まれる時刻情報に基づいて、RRパケットを生成する。続いて、ARQ処理部240は、作成したRRパケットを、後述するメイン送信部252a及びサブ送信部252bへ出力する。
また、ARQ処理部240は、上述したRRパケットを受信したエンコーダ100からAPPパケット(RTT通知)を受信した場合に、かかるAPPパケット(RTT通知)を解析することにより、RTT値を取得する。ARQ処理部240は、かかるRTT値に基づいて、例えば、APPパケット(再送要求)を送信するタイミングを決定する。具体的には、ARQ処理部240は、RTT値に基づいて、所定の時間を経過しても受信していないパケットが存在するか否かを判定する。そして、ARQ処理部240は、未受信のパケットが存在する場合に、かかるパケットを再送する旨のAPPパケット(再送要求)を生成する。
また、実施例1におけるARQ処理部240は、通信経路選択部241と、再送経路割合更新部242とを有する。通信経路選択部241は、ストリームパケットにエラーが発生したことを検出した場合に、再送経路割合に基づいて、再送パケットを送受する通信経路を選択する。
具体的には、通信経路選択部241は、ストリームパケットにビットエラーやパケットロス等のエラーが発生しているか否かを判定する。そして、通信経路選択部241は、ストリームパケットにエラーが発生していることを検出した場合に、再送経路割合に基づいて、メインネットワーク10又はサブネットワーク20から、APPパケット(再送要求)を送信する通信経路を選択する。そして、通信経路選択部241は、選択した通信経路と接続されているメイン送信部252a又はサブ送信部252bのいずれかへ、APPパケット(再送要求)を出力する。
例えば、メインネットワーク10の再送経路割合が「90%」であり、サブネットワーク20の再送経路割合が「10%」であるものとする。かかる場合に、通信経路選択部241は、メインネットワーク10にAPPパケット(再送要求)を送信する回数と、サブネットワーク20にAPPパケット(再送要求)を送信する回数との比率が、「9:1」になるように通信経路を選択する。
再送経路割合更新部242は、再送パケットを効率良く送受できるように再送経路割合を定期的に更新する。具体的には、再送経路割合更新部242は、装置コンフィグ情報222に記憶されているエラー訂正状況監視周期が経過する間、パケットごとに再送要求送信回数を蓄積する。
例えば、図4に示した例のように、装置コンフィグ情報222に記憶されているエラー訂正状況監視周期が「1000[ms]」であるものとする。かかる場合、再送経路割合更新部242は、1000[ms]が経過するたびに、蓄積した再送要求送信回数をクリアして、再度1000[ms]が経過するまで、再送要求送信回数を蓄積する。
そして、再送経路割合更新部242は、装置コンフィグ情報222に記憶されている再送要求割合更新周期が経過するたびに、蓄積した再送要求送信回数を用いて、再送経路割合を更新する。
具体的には、再送経路割合更新部242は、まず、再送要求送信回数を、以下に示す式(1)及び(2)に代入することにより、メインネットワーク10における再送要求平均回数Amと、サブネットワーク20における再送要求平均回数Asとを算出する。
Am=(Xm1+Xm2+・・・+Xmn)/Nm ・・・ (1)
As=(Xs1+Xs2+・・・+Xsn)/Ns ・・・ (2)
上記式(1)において、Xm1、Xm2、・・・、Xmnは、メインネットワーク10における同一パケットに対するAPPパケット(再送要求)の送信回数を示す。例えば、Xm1は、パケットAに対するAPPパケット(再送要求)の送信回数を示し、Xm2は、パケットBに対するAPPパケット(再送要求)の送信回数を示す。また、Nmは、メインネットワーク10における再送パケットの総数を示す。
また、上記式(2)において、Xs1、Xs2、・・・、Xsnは、サブネットワーク20における同一パケットに対するAPPパケット(再送要求)の送信回数を示す。また、Nsは、サブネットワーク20における再送パケットの総数を示す。
すなわち、再送経路割合更新部242は、再送要求送信回数の総数を、再送対象のパケットの総数で除算することにより再送要求平均回数を算出する。
続いて、再送経路割合更新部242は、算出した再送要求平均回数Amと、再送要求平均回数Asとを比較する。そして、再送経路割合更新部242は、「Am≦As」である場合に、メインネットワーク10における再送経路割合を増やすとともに、サブネットワーク20における再送経路割合を減らす。一方、再送経路割合更新部242は、「Am>As」である場合に、メインネットワーク10における再送経路割合を減らすとともに、サブネットワーク20における再送経路割合を増やす。
具体的には、再送経路割合更新部242は、以下の式(3)及び(4)を用いて、メインネットワーク10の再送経路割合Bmと、サブネットワーク20の再送経路割合Bsとを算出する。
Bm=((Nm/(Nm+Ns))×100)+C ・・・ (3)
Bs=((Ns/(Nm+Ns))×100)+C ・・・ (4)
上記式(3)及び(4)において、Nm、Nsは、上記式(1)及び(2)に示したNm、Nsと同様である。また、Cは、装置コンフィグ情報222に記憶されている移行割合であり、正負のいずれかの値を取る。具体的には、再送経路割合更新部242は、「Am≦As」である場合に、メインネットワーク10における再送経路割合を増やすので、上記式(3)におけるCを正の値とする。また、かかる場合、再送経路割合更新部242は、サブネットワーク20における再送経路割合を減らすので、上記式(4)におけるCを負の値とする。
一方、再送経路割合更新部242は、「Am>As」である場合に、メインネットワーク10における再送経路割合を減らすので、上記式(3)におけるCを負の値とする。また、かかる場合、再送経路割合更新部242は、サブネットワーク20における再送経路割合を増やすので、上記式(4)におけるCを正の値とする。
そして、再送経路割合更新部242は、現状の再送経路割合を、上記において算出した再送経路割合に更新する。
ここで、図6−1及び図6−2を用いて、上述した再送経路割合更新部242による再送経路割合更新処理の一例を説明する。図6−1及び図6−2は、再送経路割合更新部242によって蓄積された再送要求送信回数の一例を示す図である。なお、ここでは、移行割合Cが「5」であるものとする。
図6−1に示した例において、デコーダ200は、パケットA〜JのAPPパケット(再送要求)をメインネットワーク10へ送信し、パケットK〜OのAPPパケット(再送要求)をサブネットワーク20へ送信している。そして、図6−1に示した例において、再送経路割合更新部242は、パケットA〜Oごとに、APPパケット(再送要求)の再送要求送信回数を蓄積している。
具体的には、再送経路割合更新部242は、パケットAのAPPパケット(再送要求)を送信した回数が「6回」であることを蓄積している。また、再送経路割合更新部242は、パケットB〜JのAPPパケット(再送要求)を送信した回数が、それぞれ「7回」、「5回」、「4回」、「8回」、「5回」、「7回」、「8回」、「4回」、「6回」であることを蓄積している。また、再送経路割合更新部242は、パケットK〜OのAPPパケット(再送要求)を送信した回数が、それぞれ「2回」、「3回」、「3回」、「4回」、「3回」であることを蓄積している。
図6−1に示した状態で、装置コンフィグ情報222に記憶されている再送要求割合更新周期が経過した場合、再送経路割合更新部242は、上記式(1)及び(2)を用いて、再送要求平均回数Amと、再送要求平均回数Asとを算出する。具体的には、再送経路割合更新部242は、以下に示すように、再送要求平均回数Am及びAsを算出する。
Am=(Xm1+Xm2+・・・+Xmn)/Nm
=(6+7+5+4+8+5+7+8+4+6)/10
=6
As=(Xs1+Xs2+・・・+Xsn)/Ns
=(2+3+3+4+3)/5
=3
すなわち、図6−1に示した例の場合、「Am>As」が成り立つので、再送経路割合更新部242は、メインネットワーク10における再送経路割合Bmを減らすとともに、サブネットワーク20における再送経路割合Bsを増やす。具体的には、再送経路割合更新部242は、以下に示すように、上記式(3)及び(4)に各値を代入することにより、再送経路割合Bm及びBsを算出する。
Bm=((Nm/(Nm+Ns))×100)+C
=((10/(10+5))×100)−5
=62
Bs=((Ns/(Nm+Ns))×100)+C
=((5/(10+5))×100)+5
=38
このように、再送経路割合更新部242は、図6−1に示した例のように再送要求回数を蓄積した場合、メインネットワーク10における再送経路割合Bmを「62%」に更新するとともに、サブネットワーク20における再送経路割合Bsを「38%」に更新する。
続いて、図6−2に示した例について説明する。図6−2に示した状態で、装置コンフィグ情報222に記憶されている再送要求割合更新周期が経過した場合、再送経路割合更新部242は、以下に示すように、再送要求平均回数Am及びAsを算出する。
Am=(Xm1+Xm2+・・・+Xmn)/Nm
=(1+3+1+3+1+3+2)/7
=2
As=(Xs1+Xs2+・・・+Xsn)/Ns
=(11+10+9)/3
=10
すなわち、図6−2に示した例の場合、「Am≦As」が成り立つので、再送経路割合更新部242は、メインネットワーク10における再送経路割合Bmを増やすとともに、サブネットワーク20における再送経路割合Bsを減らす。具体的には、再送経路割合更新部242は、以下に示すように、上記式(3)及び(4)に各値を代入することにより、再送経路割合Bm及びBsを算出する。
Bm=((Nm/(Nm+Ns))×100)+C
=((7/(7+3))×100)+5
=75
Bs=((Ns/(Nm+Ns))×100)+C
=((3/(7+3))×100)−5
=25
このように、再送経路割合更新部242は、図6−2に示した例のように再送要求回数を蓄積した場合、メインネットワーク10における再送経路割合Bmを「75%」に更新するとともに、サブネットワーク20における再送経路割合Bsを「25%」に更新する。
上記のように、再送経路割合更新部242は、再送要求割合更新周期が経過するたびに、移行割合Cだけ再送経路割合を更新する。すなわち、再送経路割合更新部242は、再送経路割合を徐々に更新する。このように再送経路割合を徐々に更新する理由は、一度に再送経路割合を大きく変動させると、ネットワーク内のトラフィック量が急激に変化してしまう可能性があり、再送経路割合を何度も大きく変動させるおそれがあるからである。
図5の説明に戻って、メイン送受信部250aは、エンコーダ100との間で、メインネットワーク10を介して各種パケットを送受する処理を行う。具体的には、メイン送受信部250aは、メイン受信部251aと、メイン送信部252aとを有する。
メイン受信部251aは、エンコーダ100から、メインネットワーク10を介して、送信要求応答パケット、ストリームパケット、SRパケット、APPパケット(RTT通知)、再送パケット等を受信する。また、メイン送信部252aは、メインネットワーク10を介して、送信要求パケット、RRパケット、APPパケット(再送要求)等を、エンコーダ100へ送信する。
以下に、ストリームパケットを送受する場合、SR/RRパケットを送受する場合、再送パケットを送受する場合に分けて、メイン受信部251a及びメイン送信部252aによる処理について具体的に説明する。
最初に、ストリームパケットを送受する場合におけるメイン受信部251a及びメイン送信部252aによる処理について説明する。まず、メイン送信部252aは、映像データ等をエンコーダ100から取得する場合に、送信要求パケットをエンコーダ100へ送信する。そして、メイン受信部251aは、エンコーダ100によって送信要求パケットの応答である送信要求応答パケットが送信された場合に、かかる送信要求応答パケットを受信する。その後、メイン受信部251aは、エンコーダ100からストリームパケットを受信する。このとき、メイン送受信部250aは、送信要求応答パケットを解析した後、受信したストリームパケットを受信バッファ221に記憶させる。
ここで、装置コンフィグ情報222が図4に示した状態であるものとする。かかる場合、メイン送信部252aは、自装置内のポートのうち、ポート番号が「1」であるポート(送信要求送信用ポート)へ送信要求パケットを送信する。このとき、メイン送信部252aは、宛先のIPアドレス(メイン側エンコーダIPアドレス)を「A.A.A.A」とし、かつ、宛先のポート番号(送信要求受信用ポート)を「1」とする。
また、メイン受信部251aは、ポート番号が「1」であるポート(送信要求受信用ポート)によって、送信要求応答パケットを受信する。また、メイン受信部251aは、ポート番号が「2」であるポート(ストリーム受信用ポート)によって、ストリームパケットを受信する。
続いて、SR/RRパケットを送受する場合におけるメイン受信部251a及びメイン送信部252aによる処理について説明する。まず、メイン受信部251aは、エンコーダ100によってSRパケットが送信された場合に、かかるSRパケットを受信し、受信したSRパケットをARQ処理部240へ出力する。続いて、メイン送信部252aは、ARQ処理部240からRRパケットを入力された場合に、かかるRRパケットをエンコーダ100へ送信する。
ここで、装置コンフィグ情報222が図4に示した状態であるものとする。かかる場合、メイン受信部251aは、例えば、ポート番号が「3」であるポート(メイン側デコーダエラー訂正用ポート)によって、SRパケットを受信する。
また、メイン送信部252aは、例えば、自装置内のポートのうち、ポート番号が「3」であるポート(メイン側デコーダエラー訂正用ポート)へRRパケットを送信する。このとき、メイン送信部252aは、例えば、宛先のIPアドレス(メイン側エンコーダIPアドレス)を「A.A.A.A」とし、かつ、宛先のポート番号(メイン側エンコーダエラー訂正用ポート)を「3」とする。
続いて、再送パケットを送受する場合におけるメイン受信部251a及びメイン送信部252aによる処理について説明する。まず、メイン送信部252aは、ARQ処理部240からAPPパケット(再送要求)を入力された場合に、かかるAPPパケット(再送要求)をエンコーダ100へ送信する。そして、メイン受信部251aは、エンコーダ100によって、APPパケット(再送要求)に応じて再送パケットが送信された場合に、かかる送信パケットを受信する。
ここで、装置コンフィグ情報222が図4に示した状態であるものとする。かかる場合、メイン送信部252aは、自装置内のポートのうち、ポート番号が「3」であるポート(メイン側デコーダエラー訂正用ポート)へAPPパケット(再送要求)を送信する。このとき、メイン送信部252aは、宛先のIPアドレス(メイン側エンコーダIPアドレス)を「A.A.A.A」とし、かつ、宛先のポート番号(メイン側エンコーダエラー訂正用ポート)を「3」とする。また、メイン受信部251aは、ポート番号が「3」であるポート(メイン側デコーダエラー訂正用ポート)によって、再送パケットを受信する。
サブ送受信部250bは、エンコーダ100との間で、サブネットワーク20を介して各種パケットを送受する処理を行う。具体的には、サブ送受信部250bは、サブ受信部251bと、サブ送信部252bとを有する。
サブ受信部251bは、エンコーダ100から、サブネットワーク20を介して、SRパケット、APPパケット(RTT通知)、再送パケットを受信する。また、サブ送信部252bは、サブネットワーク20を介して、RRパケット、APPパケット(再送要求)を、エンコーダ100へ送信する。
具体的には、サブ受信部251bは、エンコーダ100からSRパケットを受信し、受信したSRパケットをARQ処理部240へ出力する。続いて、サブ送信部252bは、ARQ処理部240から入力されたRRパケットをエンコーダ100へ送信する。
ここで、装置コンフィグ情報222が図4に示した状態であるものとする。かかる場合、メイン受信部251aは、ポート番号が「4」であるポート(サブ側デコーダエラー訂正用ポート)によって、SRパケットを受信する。また、サブ送信部252bは、自装置内のポートのうち、ポート番号が「4」であるポート(サブ側デコーダエラー訂正用ポート)へRRパケットを送信する。このとき、サブ送信部252bは、宛先のIPアドレス(サブ側エンコーダIPアドレス)を「B.B.B.B」とし、かつ、宛先のポート番号(サブ側エンコーダエラー訂正用ポート)を「4」とする。
また、サブ送信部252bは、ARQ処理部240から入力されたAPPパケット(再送要求)をエンコーダ100へ送信する。そして、サブ受信部251bは、エンコーダ100から送信パケットを受信する。
ここで、装置コンフィグ情報222が図4に示した状態であるものとする。かかる場合、サブ送信部252bは、自装置内のポートのうち、ポート番号が「4」であるポート(サブ側デコーダエラー訂正用ポート)へAPPパケット(再送要求)を送信する。このとき、サブ送信部252bは、宛先のIPアドレス(サブ側エンコーダIPアドレス)を「B.B.B.B」とし、かつ、宛先のポート番号(サブ側エンコーダエラー訂正用ポート)を「4」とする。また、サブ受信部251bは、ポート番号が「4」であるポート(サブ側デコーダエラー訂正用ポート)によって、再送パケットを受信する。
[実施例1に係る通信システムによるストリーミング配信処理]
次に、図7を用いて、実施例1に係る通信システム1によるストリーミング配信処理について説明する。図7は、実施例1に係る通信システム1によるストリーミング配信処理手順を示すフローチャートである。
図7に示すように、デコーダ200のメイン送信部252aは、映像データ等をエンコーダ100から取得する場合に、送信要求パケットを生成する(ステップS101)。そして、メイン送信部252aは、生成した送信要求パケットを、メインネットワーク10を介してエンコーダ100へ送信する(ステップS102)。
エンコーダ100のメイン受信部151aは、かかる送信要求パケットを受信する。そして、エンコーダ100のメイン送信部152aは、送信要求パケットの応答である送信要求応答パケットを生成する(ステップS103)。続いて、メイン送信部152aは、生成した送信要求応答パケットを、メインネットワーク10を介してエンコーダ100へ送信する(ステップS104)。かかる送信要求応答パケットを受信したデコーダ200のメイン受信部251aは、送信要求応答パケットを解析する(ステップS105)。
続いて、エンコーダ100の符号化部130は、図1に示したカメラ11等から入力された映像等に対する符号化処理を開始する(ステップS106)。そして、メイン送信部152aは、符号化部130によって符号化されたストリームパケットを、メインネットワーク10を介してエンコーダ100へ送信する(ステップS107)。
続いて、デコーダ200のメイン受信部251aは、エンコーダ100のメイン送信部152aから送信されたストリームパケットを受信する(ステップS108)。そして、デコーダ200の復号化部230は、メイン受信部251aによって受信されたストリームパケットに対する復号化処理を開始する(ステップS109)。復号化部230は、復号化した映像データ等を、図1に示したモニタ21等へ出力する。
続いて、エンコーダ100のARQ処理部140は、エンコーダ100がストリーミング配信を行っている間、装置コンフィグ情報122に記憶されているSR/RR送信周期が経過するたびに、時刻情報を含むSRパケットを生成する(ステップS110)。
続いて、メイン送信部152aは、ARQ処理部140によって生成されたSRパケットを、メインネットワーク10を介してデコーダ200へ送信する(ステップS111)。また、サブ送信部152bは、ARQ処理部140によって生成されたSRパケットを、サブネットワーク20を介してデコーダ200へ送信する(ステップS111)。
そして、デコーダ200のメイン受信部251aは、エンコーダ100のメイン送信部152aによって送信されたSRパケットを受信する。また、デコーダ200のサブ受信部251bは、エンコーダ100のサブ送信部152bによって送信されたSRパケットを受信する。
続いて、デコーダ200のARQ処理部240は、メイン受信部251a及びサブ受信部251bによって受信されたSRパケットを解析し(ステップS112)、解析結果及びSRパケットに含まれる時刻情報に基づいて、RRパケットを生成する(ステップS113)。
続いて、メイン送信部252aは、ARQ処理部240によって生成されたRRパケットを、メインネットワーク10を介してエンコーダ100へ送信する(ステップS114)。また、サブ送信部252bは、ARQ処理部240によって生成されたRRパケットを、サブネットワーク20を介してエンコーダ100へ送信する(ステップS114)。
そして、エンコーダ100のメイン受信部151aは、デコーダ200のメイン送信部252aによって送信されたRRパケットを受信する。また、エンコーダ100のサブ受信部151bは、デコーダ200のサブ送信部252bによって送信されたRRパケットを受信する。
続いて、エンコーダ100のARQ処理部140は、メイン受信部151a及びサブ受信部151bによって受信されたRRパケットを解析して(ステップS115)、RTT値を算出する(ステップS116)。続いて、ARQ処理部140は、算出したRTT値を含むAPPパケット(RTT通知)を生成する(ステップS117)。
続いて、メイン送信部152aは、ARQ処理部140によって生成されたAPPパケット(RTT通知)を、メインネットワーク10を介してデコーダ200へ送信する(ステップS118)。また、サブ送信部152bは、ARQ処理部140によって生成されたAPPパケット(RTT通知)を、サブネットワーク20を介してデコーダ200へ送信する(ステップS118)。
エンコーダ100のARQ処理部140は、装置コンフィグ情報122に記憶されているSS/RR送信周期が経過した場合に(ステップS119肯定)、上記ステップS110における処理に戻って、再度、SRパケット生成処理を行う。
[実施例1に係る通信システムによるパケット再送処理]
次に、図8を用いて、実施例1に係る通信システム1によるパケット再送処理について説明する。図8は、実施例1に係る通信システム1によるパケット再送処理手順を示すフローチャートである。なお、以下に示す処理手順は、デコーダ200がストリームパケットを受信している間に行われる。
図8に示すように、デコーダ200の通信経路選択部241は、エンコーダ100から受信したストリームパケットにビットエラーやパケットロス等のエラーが発生しているか否かを判定する。そして、通信経路選択部241は、ストリームパケットにエラーが発生していることを検出した場合に(ステップS201肯定)、再送経路割合に基づいて、APPパケット(再送要求)を送信する通信経路を選択する(ステップS202)。
続いて、ARQ処理部240は、APPパケット(再送要求)を生成する(ステップS203)。そして、ARQ処理部240は、生成したAPPパケット(再送要求)を、ステップS202において選択した通信経路と接続されているメイン送信部252a又はサブ送信部252bのいずれかへ出力する。
APPパケット(再送要求)を入力されたメイン送信部252a又はサブ送信部252bは、かかるAPPパケット(再送要求)をエンコーダ100へ送信する(ステップS204)。
例えば、ARQ処理部240がメイン送信部252aへAPPパケット(再送要求)を出力した場合、メイン送信部252aは、APPパケット(再送要求)を、メインネットワーク10を介してエンコーダ100へ送信する。一方、ARQ処理部240がサブ送信部252bへAPPパケット(再送要求)を出力した場合、サブ送信部252bは、APPパケット(再送要求)を、サブネットワーク20を介してエンコーダ100へ送信する。
続いて、エンコーダ100のメイン受信部151a又はサブ受信部151bは、APPパケット(再送要求)を受信し、受信したAPPパケット(再送要求)をARQ処理部140へ出力する。続いて、ARQ処理部140は、APPパケット(再送要求)を解析した後(ステップS205)、再送パケットを生成する(ステップS206)。
続いて、ARQ処理部140は、生成した再送パケットを、APPパケット(再送要求)が流通した通信経路と接続されているメイン送信部152a又はサブ送信部152bのいずれかへ出力する。再送パケットを入力されたメイン送信部152a又はサブ送信部152bは、かかる再送パケットをデコーダ200へ送信する(ステップS207)。
例えば、メイン受信部151aがメインネットワーク10を介してAPPパケット(再送要求)を受信した場合、ARQ処理部140は、メインネットワーク10と接続されているメイン送信部152aへ再送パケットを出力する。そして、メイン送信部152aは、再送パケットをメインネットワーク10を介してデコーダ200へ送信する。
一方、サブ受信部151bがサブネットワーク20を介してAPPパケット(再送要求)を受信した場合、ARQ処理部140は、サブネットワーク20と接続されているサブ送信部152bへ再送パケットを出力する。そして、サブ送信部152bは、再送パケットをサブネットワーク20を介してデコーダ200へ送信する。
続いて、デコーダ200のメイン受信部251a又はサブ受信部251bは、再送パケットを受信し、受信した再送パケットを受信バッファ221へ出力することにより、ストリームパケットをリカバリする(ステップS208)。このとき、再送経路割合更新部242は、再送要求送信回数を蓄積しておく(ステップS209)。
[実施例1に係る通信システムによる再送経路割合更新処理]
次に、図9を用いて、実施例1に係る通信システム1による再送経路割合更新処理にいて説明する。図9は、実施例1に係る通信システム1による再送経路割合更新処理手順を示すフローチャートである。
図9に示すように、デコーダ200の再送経路割合更新部242は、再送要求割合更新周期が経過した場合に(ステップS301肯定)、蓄積した再送要求送信回数を、上記式(1)に代入することにより、メインネットワーク10における再送要求平均回数Amを算出する(ステップS302)。また、再送経路割合更新部242は、蓄積した再送要求送信回数を、上記式(2)に代入することにより、サブネットワーク20における再送要求平均回数Asを算出する(ステップS303)。
続いて、再送経路割合更新部242は、算出した再送要求平均回数Amと、再送要求平均回数Asとを比較する。そして、再送経路割合更新部242は、「Am≦As」である場合に(ステップS304肯定)、メインネットワーク10における再送経路割合を増やすとともに、サブネットワーク20における再送経路割合を減らす(ステップS305)。
一方、再送経路割合更新部242は、「Am>As」である場合に(ステップS304否定)、メインネットワーク10における再送経路割合を減らすとともに、サブネットワーク20における再送経路割合を増やす(ステップS306)。
[実施例1の効果]
上述してきたように、実施例1に係る通信システム1は、複数の通信経路を用いて、エンコーダ100とデコーダ200との間でデータの送受を行う。そして、エンコーダ100及びデコーダ200は、再送経路割合に基づいてネットワークを選択して、選択したネットワークを介して再送パケットを送受する。これにより、実施例1に係る通信システム1は、効率良く再送パケットを送受できるので、エラー訂正率を向上させることができる。
また、実施例1に係る通信システム1は、再送経路割合更新部242が、再送パケットを効率良く送受できるように、再送経路割合を定期的に更新する。これにより、実施例1に係る通信システム1は、ネットワークのトラフィック量に変動があっても、効率良く再送パケットを送受できるネットワークを選択することができる。
ところで、本願の開示する通信システム等は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例2では、本願に開示する通信システム等の他の実施例について説明する。
[再送経路割合の更新処理]
上記実施例1では、メインネットワーク10とサブネットワーク20との再送要求平均回数を比較して、再送経路割合を加減する例を示した。しかし、メインネットワーク10又はサブネットワーク20のいずれかの再送経路割合が「0%」である場合、かかるネットワークの再送要求平均回数は「0」になる。すなわち、一方の再送経路割合が「0%」である場合、一方のネットワークだけを用いて、再送パケットの送受を行うことになる。このため、再送要求平均回数を比較しても、再送パケットを効率良く送受できるネットワークを判別することができない。そこで、デコーダ200は、一方の再送要求平均回数が「0」である場合、他方の再送要求平均回数が所定の閾値以上になった場合に、一方の再送経路割合を増やすとともに、他方の再送経路割合を減らすようにしてもよい。
例を挙げて説明する。例えば、メインネットワーク10の再送経路割合が「100%」であり、サブネットワーク20の再送経路割合が「0%」であるものとする。このようなケースでは、エンコーダ100及びデコーダ200は、常にメインネットワーク10を用いて再送パケットの送受を行う。このため、サブネットワーク20の再送要求平均回数は「0」になる。かかる場合、デコーダ200は、メインネットワーク10の再送要求平均回数が所定の閾値以上になった場合に、メインネットワーク10の再送経路割合を減らすとともに、サブネットワーク20の再送経路割合を増やすようにしてもよい。例えば、所定の閾値が「5」であり、メインネットワーク10の再送要求平均回数が「5」である場合、デコーダ200は、メインネットワーク10の再送経路割合に移行割合Cを減算するとともに、サブネットワーク20の再送経路割合に移行割合Cを加算する。また、例えば、所定の閾値が「5」であり、メインネットワーク10の再送要求平均回数が「4」である場合、デコーダ200は、メインネットワーク10及びサブネットワーク20の再送経路割合を更新せずに、「100%」と「0%」のままとする。
[再送経路割合の更新処理]
また、上記実施例1では、パケット毎に再送要求送信回数を蓄積する例を示した。しかし、デコーダ200は、再送要求送信回数の総数と、再送パケットの総数とを蓄積してもよい。かかる場合、デコーダ200は、再送要求送信回数の総数を、再送パケットの総数によって除算することにより、再送要求平均回数を算出する。
[再送経路選択]
また、上記実施例1では、再送パケットの送受に用いる通信経路をデコーダ200が選択する例を示した。しかし、デコーダ200の代わりにエンコーダ100が再送パケットの送受に用いる通信経路を選択してもよい。かかる場合、エンコーダ100は、上述したデコーダ200と同様に、再送要求送信回数を蓄積する。そして、エンコーダ100は、メインネットワーク10又はサブネットワーク20からAPPパケット(再送要求)を受信した場合に、再送パケットを送信する通信経路を選択する。
[装置コンフィグ情報]
また、上記実施例1では、装置コンフィグ情報122と装置コンフィグ情報222とが同情の情報を保持する例を示した。しかし、装置コンフィグ情報122と装置コンフィグ情報222とは、同様の情報を保持しなくてもよい。例えば、装置コンフィグ情報122は、再送要求割合更新周期や、移行割合などを保持しなくてもよい。
[プログラム]
上記実施例1で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図10を用いて、上記の実施例1におけるエンコーダ100と同様の機能を有するエンコードプログラムを実行するコンピュータの一例を説明する。また、図11を用いて、上記の実施例1におけるデコーダ200と同様の機能を有するデコードプログラムを実行するコンピュータの一例を説明する。
図10は、エンコードプログラムを実行するコンピュータを示す図である。図10に示すように、コンピュータ1000は、RAM(Random Access Memory)1010と、キャッシュ1020と、HDD1030と、ROM(Read Only Memory)1040と、CPU(Central Processing Unit)1050とを有する。RAM1010、キャッシュ1020、HDD1030、ROM1040、CPU1050は、バス1060によって接続されている。
ROM1040には、上記の実施例1におけるエンコーダ100と同様の機能を発揮するエンコードプログラムが予め記憶されている。具体的には、ROM1040には、符号化プログラム1041と、ARQプログラム1042と、メイン送受信プログラム1043と、サブ送受信プログラム1044とが記憶されている。
そして、CPU1050は、これらの符号化プログラム1041と、ARQプログラム1042と、メイン送受信プログラム1043と、サブ送受信プログラム1044を読み出して実行する。これにより、図10に示すように、符号化プログラム1041は、符号化プロセス1051になり、ARQプログラム1042は、ARQプロセス1052になり、メイン送受信プログラム1043は、メイン送受信プロセス1053になり、サブ送受信プログラム1044は、サブ送受信プロセス1054になる。
なお、符号化プロセス1051は、図3に示した符号化部130に対応し、ARQプロセス1052は、図3に示したARQ処理部140に対応し、メイン送受信プロセス1053は、図3に示したメイン送受信部150aに対応し、サブ送受信プロセス1054は、図3に示したサブ送受信部150bに対応する。
また、HDD1030には、図10に示すように、装置コンフィグデータ1031が設けられる。かかる装置コンフィグデータ1031は、図3に示した装置コンフィグ情報122に対応する。
続いて、デコードプログラムについて説明する。図11は、デコードプログラムを実行するコンピュータを示す図である。図11に示すように、コンピュータ2000は、RAM2010と、キャッシュ2020と、HDD2030と、ROM2040と、CPU2050とを有する。RAM2010、キャッシュ2020、HDD2030、ROM2040、CPU2050は、バス2060によって接続されている。
ROM2040には、上記の実施例1におけるデコーダ200と同様の機能を発揮するデコードプログラムが予め記憶されている。具体的には、ROM2040には、復号化プログラム2041と、ARQプログラム2042と、メイン送受信プログラム2043と、サブ送受信プログラム2044とが記憶されている。
そして、CPU2050は、これらの復号化プログラム2041と、ARQプログラム2042と、メイン送受信プログラム2043と、サブ送受信プログラム2044を読み出して実行する。これにより、図11に示すように、復号化プログラム2041は、復号化プロセス2051になり、ARQプログラム2042は、ARQプロセス2052になり、メイン送受信プログラム2043は、メイン送受信プロセス2053になり、サブ送受信プログラム2044は、サブ送受信プロセス2054になる。
なお、復号化プロセス2051は、図5に示した復号化部230に対応し、ARQプロセス2052は、図5に示したARQ処理部240に対応し、メイン送受信プロセス2053は、図5に示したメイン送受信部250aに対応し、サブ送受信プロセス2054は、図5に示したサブ送受信部250bに対応する。
また、HDD2030には、図11に示すように、装置コンフィグデータ2031が設けられる。かかる装置コンフィグデータ2031は、図5に示した装置コンフィグ情報222に対応する。
なお、上記した各プログラム1041〜1044及び2041〜2044については、必ずしもROM1040やROM2040に記憶させなくてもよい。例えば、コンピュータ1000又は2000に挿入されるフレキシブルディスク(FD)、CD−ROM、MOディスク、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラム1041〜1044及び2041〜2044を記憶させてもよい。または、コンピュータ1000又は2000の内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」にプログラム1041〜1044及び2041〜2044等を記憶させてもよい。または、公衆回線、インターネット、LAN、WANなどを介してコンピュータ1000又は2000に接続される「他のコンピュータ(またはサーバ)」にプログラム1041〜1044及び2041〜2044を記憶させてもよい。そして、コンピュータ1000又は2000は、上述したフレキシブルディスク等から各プログラムを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)エンコーダからデコーダに対してストリーミング配信を行う通信システムであって、
前記デコーダは、
前記ストリーミング配信におけるパケットにエラーが発生した場合に、前記エンコーダと前記デコーダとを接続する第一の通信経路又は第二の通信経路を介してパケットの再送要求が送信された回数に基づいて通信経路ごとに割り当てられた割合である再送経路割合にしたがって、再送パケットを送受する通信経路を選択する通信経路選択部と、
前記通信経路選択部によって選択された第一の通信経路又は第二の通信経路のいずれかを介して、エラーが発生したパケットの再送要求を前記エンコーダへ送信する再送要求送信部とを備え、
前記エンコーダは、
前記再送要求送信部によって第一の通信経路又は第二の通信経路を介して送信された再送要求を受信する再送要求受信部と、
前記再送要求受信部によって再送要求が受信された場合に、該再送要求が流通した第一の通信経路又は第二の通信経路のいずれかを介して、前記デコーダに再送パケットを送信する再送パケット送信部と
を備えたことを特徴とする通信システム。
(付記2)前記デコーダは、
前記再送要求送信部によって再送要求が送信された回数を用いて、同一のパケットに対する再送要求の送信回数の平均値である再送要求平均回数を通信経路ごとに算出し、算出した再送要求平均回数に基づいて、前記再送経路割合を定期的に更新する再送経路割合更新部をさらに備えたことを特徴とする付記1に記載の通信システム。
(付記3)前記再送経路割合更新部は、第一の通信経路における再送要求平均回数が、第二の通信経路における再送要求平均回数以下である場合に、前記第一の通信経路における再送経路割合を増やすとともに、前記第二の通信経路における再送経路割合を減らすことを特徴とする付記2に記載の通信システム。
(付記4)前記再送経路割合更新部は、第一の通信経路における再送要求平均回数が、第二の通信経路における再送要求平均回数よりも大きい場合に、前記第一の通信経路における再送経路割合を減らすとともに、前記第二の通信経路における再送経路割合を増やすことを特徴とする付記2又は3に記載の通信システム。
(付記5)前記通信経路選択部は、前記エンコーダによって算出される往復遅延時間に基づいて前記ストリーミング配信におけるパケットにエラーが発生したか否かを判定することを特徴とする付記1〜4のいずれか一つに記載の通信システム。
(付記6)エンコーダからストリーミング配信を行われるデコーダであって、
前記ストリーミング配信におけるパケットにエラーが発生した場合に、前記エンコーダと当該のデコーダとを接続する第一の通信経路又は第二の通信経路を介してパケットの再送要求が送信された回数に基づいて通信経路ごとに割り当てられた割合である再送経路割合にしたがって、再送パケットを送受する通信経路を選択する通信経路選択部と、
前記通信経路選択部によって選択された第一の通信経路又は第二の通信経路のいずれかを介して、エラーが発生したパケットの再送要求を前記エンコーダへ送信する再送要求送信部と
を備えたことを特徴とするデコーダ。
(付記7)前記再送要求送信部によって再送要求が送信された回数を用いて、同一のパケットに対する再送要求の送信回数の平均値である再送要求平均回数を通信経路ごとに算出し、第一の通信経路における再送要求平均回数が第二の通信経路における再送要求平均回数以下である場合に、前記第一の通信経路における再送経路割合を増やすとともに、前記第二の通信経路における再送経路割合を減らし、第一の通信経路における再送要求平均回数が第二の通信経路における再送要求平均回数よりも大きい場合に、前記第一の通信経路における再送経路割合を減らすとともに、前記第二の通信経路における再送経路割合を増やす再送経路割合更新部をさらに備えたことを特徴とする付記6に記載のデコーダ。
(付記8)デコーダに対してストリーミング配信を行うエンコーダであって、
前記デコーダから、当該のエンコーダと前記デコーダとを接続する第一の通信経路又は第二の通信経路のいずれかを介して再送要求を受信する再送要求受信部と、
前記再送要求受信部によって再送要求が受信された場合に、該再送要求が流通した第一の通信経路又は第二の通信経路のいずれかを介して、前記デコーダに再送パケットを送信する再送パケット送信部と
を備えたことを特徴とするエンコーダ。
(付記9)エンコーダからデコーダに対してストリーミング配信を行う通信方法であって、
前記デコーダが、
前記ストリーミング配信におけるパケットにエラーが発生した場合に、前記エンコーダと前記デコーダとを接続する第一の通信経路又は第二の通信経路を介してパケットの再送要求が送信された回数に基づいて通信経路ごとに割り当てられた割合である再送経路割合にしたがって、再送パケットを送受する通信経路を選択する通信経路選択ステップと、
前記通信経路選択ステップによって選択された第一の通信経路又は第二の通信経路のいずれかを介して、エラーが発生したパケットの再送要求を前記エンコーダへ送信する再送要求送信ステップとを含み、
前記エンコーダが、
前記再送要求送信ステップによって第一の通信経路又は第二の通信経路を介して送信された再送要求を受信する再送要求受信ステップと、
前記再送要求受信ステップによって再送要求が受信された場合に、該再送要求が流通した第一の通信経路又は第二の通信経路のいずれかを介して、前記デコーダに再送パケットを送信する再送パケット送信ステップと
を含んだことを特徴とする通信方法。
(付記10)前記再送要求送信ステップによって再送要求が送信された回数を用いて、同一のパケットに対する再送要求の送信回数の平均値である再送要求平均回数を通信経路ごとに算出し、第一の通信経路における再送要求平均回数が第二の通信経路における再送要求平均回数以下である場合に、前記第一の通信経路における再送経路割合を増やすとともに、前記第二の通信経路における再送経路割合を減らし、第一の通信経路における再送要求平均回数が第二の通信経路における再送要求平均回数よりも大きい場合に、前記第一の通信経路における再送経路割合を減らすとともに、前記第二の通信経路における再送経路割合を増やす再送経路割合更新ステップをさらに含んだことを特徴とする付記9に記載の通信方法。