特許第6132972号(P6132972)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヴィバー メディア エスアーエールエルの特許一覧

<>
  • 特許6132972-VOIPの帯域幅管理 図000002
  • 特許6132972-VOIPの帯域幅管理 図000003
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6132972
(24)【登録日】2017年4月28日
(45)【発行日】2017年5月24日
(54)【発明の名称】VOIPの帯域幅管理
(51)【国際特許分類】
   H04L 12/829 20130101AFI20170515BHJP
【FI】
   H04L12/829
【請求項の数】8
【全頁数】8
(21)【出願番号】特願2016-507076(P2016-507076)
(86)(22)【出願日】2014年3月16日
(65)【公表番号】特表2016-516377(P2016-516377A)
(43)【公表日】2016年6月2日
(86)【国際出願番号】IB2014059867
(87)【国際公開番号】WO2014167431
(87)【国際公開日】20141016
【審査請求日】2017年1月11日
(31)【優先権主張番号】13/859,765
(32)【優先日】2013年4月10日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】515150520
【氏名又は名称】ヴィバー メディア エスアーエールエル
(74)【代理人】
【識別番号】100116872
【弁理士】
【氏名又は名称】藤田 和子
(72)【発明者】
【氏名】マルエリ サニー
(72)【発明者】
【氏名】シャルギ ラン
【審査官】 宮島 郁美
(56)【参考文献】
【文献】 特開2011−61802(JP,A)
【文献】 特開2008−113226(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00−12/26,12/50−12/955,13/00−13/18
(57)【特許請求の範囲】
【請求項1】
送信側と受信側との間Voice−over−Internet−Protocol(VoIP)アプリケーションの音声ストリームで音質を最適化するコンピュータ化された方法であって、
前記音声ストリームに対して前記受信側によって複数の時間間隔を定義するステップと、
定義された前記複数の時間間隔の各々の最後に、
(i)前記音声ストリームの第1の複数の受信された音声パケットの各々に対して片道遅延を算出すること及び
(ii)二重指数平滑法を用いて、前記第1の複数の受信された音声パケットの片道遅延トレンドを算出すること
によって輻輳が存在するかどうかを前記受信側によって決定するステップと、
前記片道遅延トレンドの算出の結果に基づいて、前記送信側によって利用可能な帯域幅を前記受信側によって推定するステップと
記推定された帯域幅を前記受信側によって前記送信側に送信するステップと、
前記VoIPアプリケーションの前記音声ストリームでの第2の複数の音声パケットに対して、前記送信側によって、許可される最大送信レートとして、前記受信側によって受信された、前記推定された帯域幅を利用するステップと、
を含む方法。
【請求項2】
請求項1に記載の方法であって、前記輻輳が存在するかどうかを決定するステップは、前記算出された片道遅延が、第1のあらかじめ定義された正定数よりも大きい場合、又は前記算出された片道遅延トレンドが、第2のあらかじめ定義された正定数よりも大きい場合に輻輳が存在すると決定することを含む、方法。
【請求項3】
請求項2に記載の方法であって、前記算出された片道遅延トレンド値に基づいて輻輳のレベルを決定するステップを更に含む、方法。
【請求項4】
請求項1に記載の方法であって、帯域幅推定を行うべきかどうかを決定するステップを追加で含み、前記推定するステップ、前記送信するステップ及び前記利用するステップは、前記帯域幅推定を行うべきであると決定された場合のみ実行される、方法。
【請求項5】
請求項4に記載の方法であって、前記帯域幅推定を行うべきかどうかを決定するステップは、最後の帯域幅推定が行われてから所定の期間が経過したかどうかを決定することを含む、方法。
【請求項6】
請求項5に記載の方法であって、前記所定の期間はラウンドトリップタイムである、方法。
【請求項7】
請求項4に記載の方法であって、前記帯域幅推定を行うべきかどうかを決定するステップは、輻輳の状態が変化したかどうかを決定することを含む、方法。
【請求項8】
請求項1に記載の方法であって、帯域幅推定は、
a.前記音声ストリームの着信ビットレートを推定すること、
b.輻輳がないと決定された場合に前記帯域幅推定を前記推定された着信ビットレートよりも大きい値に設定すること、及び
c.輻輳があると決定された場合に前記帯域幅推定を前記推定された着信ビットレートよりも小さい値に設定すること、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、voice−over−Internet−Protocol(VoIP)システムに関し、より具体的には、帯域幅利用の調整を用いて音質を最適化することに関する。
【背景技術】
【0002】
「回路交換(circuit−switched)」の音声とは異なり、VoIPでは、競合トラフィック(例えばYouTube(登録商標)でクリップを視聴する)、無線の干渉等を原因とする、変化するネットワーク条件にうまく対応することが求められる。
【0003】
Opus等の一部の音声コーデックは、異なるビットレートでの送信をサポートしている。マルチレートコーデックを使用することに加え、フレームサイズを変更してコーデックを切り替えることでビットレートを変更することも可能である。
【発明の概要】
【発明が解決しようとする課題】
【0004】
複数のビットレート(上述のようにフレームサイズの変更を含み得る)をサポートしているコーデックであっても、ネットワーク条件を踏まえた「最良の」ビットレートを用いるうえで、ネットワーク条件の測定が必要になるという問題がある。
【課題を解決するための手段】
【0005】
本発明は、送信側と受信側のVoIPアプリケーション間の音声ストリームで音質を最適化するコンピュータ化された方法であって、前記受信側によって時間間隔を定義するステップと、各時間間隔の最後に、二重指数平滑法を用いて(i)片道遅延及び(ii)トレンドを算出することによって輻輳が存在するかどうかを前記受信側によって決定するステップと、前記算出に基づいて、前記送信側によって利用可能な帯域幅を前記受信側によって推定するステップと、前記受信側によって前記推定された帯域幅を前記送信側に送信するステップと、前記送信側によって、許可される最大送信レートとして前記帯域幅推定を利用するステップと、を含む方法を提供する。
【0006】
前記輻輳が存在するかどうかを決定するステップは、前記算出された片道遅延があらかじめ定義された正定数よりも大きい場合、又は前記算出されたトレンドがあらかじめ定義された正定数よりも大きい場合に輻輳が存在すると決定することを含み得る。
【0007】
該方法は、前記算出されたトレンド値に基づいて輻輳のレベルを決定するステップを更に含み得る。
【0008】
該方法は、帯域幅推定を行うべきかどうかを決定するステップを追加で含み、前記推定するステップ、前記送信するステップ及び前記利用するステップは、前記帯域幅推定を行うべきであると決定された場合のみ実行され得る。
【0009】
前記帯域幅推定を行うべきかどうかを決定するステップは、前回の帯域幅推定から所定の期間が経過したかどうかを決定することを含み得る。
【0010】
前記所定の期間はラウンドトリップタイムであり得る。
【0011】
前記帯域幅推定を行うべきかどうかを決定するステップは、輻輳の状態が変化したかどうかを決定することを含み得る。
【0012】
前記帯域幅を推定することは、a.着信ビットレートを推定すること、b.輻輳がない場合に前記帯域幅推定を前記推定された着信ビットレートよりも大きいものとして設定すること、及びc.輻輳がある場合に前記帯域幅推定を前記推定された着信ビットレートよりも小さいものとして設定すること、を含み得る。
【図面の簡単な説明】
【0013】
本発明のよりよい理解のために、また、本発明の実施方法を示すために、例示のみを目的として、ここで添付の図面を参照する。
【0014】
図面を詳細に参照する上で、図示されている事項は例示、及び本発明の公的な実施形態の説明のみを目的としたものであり、本発明の原理と概念的側面についての最も有用で容易に理解可能な説明を提供するために提示されることが強調される。ここで、図面による説明が、本発明のいくつかの形態がどのように実施され得るかを当業者に対して示し、本発明の基礎的理解のために必要とされる以上に本発明の構造的詳細を示す試みは成されない。添付の図面は以下のとおりである。
【0015】
図1】本発明の実施形態による輻輳検出アルゴリズムの概要を示すフロー図である。
図2】本発明の実施形態による帯域幅推定アルゴリズムの概要を示すフロー図である。
【発明を実施するための形態】
【0016】
VoIPシステムにおいて最良の音質を達成するためには、レイテンシをできるだけ低く維持しながら最大のビットレートを用いることが求められる(特定のコーデックにおいては、データのエンコードにより多くのビット/秒を用いることで入力のより正確な再現が可能である)。
【0017】
レイテンシは、遅延、すなわち、音声が第1側のマイクから第2側のスピーカに達するまでにかかる時間として定義される。これには、補正されると推定されるアルゴリズム遅延(ここでは、音声がVoIPアプリケーション内に留まる全ての時間)とネットワーク遅延という大まかに2つの要素が含まれる。ここでは第1側から第2側へのネットワーク遅延を「片道遅延(one−way delay)」と呼ぶ(逆方向の片道遅延も発生する場合には「往復遅延(round trip delay)」となる)。一般に、ストリーミングアプリケーション(例えばYouTube(登録商標)でクリップを視聴する)においては、数秒の遅延は問題にならない。しかしながら、インタラクティブなセッション(つまり会話)においては、遅延は、認識される品質に大きく影響する。
【0018】
片道遅延に影響する要素は複数ある。輻輳回避プロトコルによって対応されるのは、キューイング遅延である。ルータがパケットを次のホップへ転送できる速度よりも速い速度でパケットがルータに到達すると、パケットはキューイングされる。キューイングされたパケットの片道遅延が増大する。
【0019】
例えば、転送用量が1パケット/秒である別のリンクに接続されたルータに向けて、「ソース」が1秒につき2パケット送信するとしよう。当初はキューが存在しないと仮定すると、最初のパケットはルータによってほぼ即時に送出される。しかしながら、2番目のパケットは0.5秒に到着し、送信されるまでに1秒まで待機する必要がある。次のパケットは1秒に到着し、2秒まで待機する必要がある。キューイングを原因とする片道遅延は、最初のパケットでは0秒、2番目のパケットでは0.5秒、3番目のパケットでは1秒である。
【0020】
片道遅延のこのような増大を、輻輳のシグナルとして用いる。
【0021】
音声パケットの各々がタイムスタンプ(例えばRTPパケット)を含むものとする。この値は通常、先行するパケット内のサンプル数だけ増加する。すなわち、
タイムスタンプ=タイムスタンプi−1+サンプル数i−1
サンプル数/秒は固定(例えば8000又は16000)であるため、秒へと容易に換算可能である。例えば、16000サンプル/秒の場合、480サンプル=30ミリ秒となる。
【0022】
送信側は各パケットを「時間通り(on time)」に送信する、すなわち、上掲の例において送信側は30ミリ秒おきに1パケットを送信する、と仮定する。理想的な場合において、パケットは等間隔(つまり30ミリ秒おき)で受信側に届く。しかしながら、輻輳がある場合、パケットの受信時間はより長くなると考えられる(2パケット/秒である上掲の例では、パケットは0秒、0.5秒、1秒…に送信されるが、0秒、1秒、2秒…に受信され、2つのパケットの送信間隔は0.5秒であるが、受信間隔は1秒である)。
【0023】
インターネット等の実際のIP網においては、このように単純ではない。各パケットにランダムジッタが追加され、遅延が「予測される」時間よりも長く、もしくは短くなる。
【0024】
パケットiが送信された時間をs、受信された時間をrとする。パケット間の遅延を以下のように定義する:
=r−ri−1−(s−si−1
輻輳がない場合、dは平均して0であると考えられる:
E(d)=0
【0025】
輻輳検出
ここで図1を参照して、本発明の実施形態による輻輳検出アルゴリズムを説明する。受信側で輻輳を検出するためには、受信側のVoIPアプリケーションが、あらかじめ定義された(ステップ100)固定間隔(例えば120ミリ秒)で受信されたサンプル数を測定する。120ミリ秒の間隔で120ミリ秒分のパケットが(平均して)受信されれば、輻輳はない。しかしながら、120ミリ秒の間隔で120ミリ秒分以下のパケットしか(平均して)受信されなければ、輻輳がある。
【0026】
十分なサンプルがあれば、輻輳を検出するのは容易である。しかしながら、ジッタ(jitter)により引き起こされる誤検出(false−positive)を排除しつつ、輻輳を素早く検出する必要がある。
【0027】
アルゴリズムを単純化するために、固定長Cの間隔でサンプリングする。1番目の間隔(この例においては0〜120ミリ秒)をIとし、2番目の間隔をI等とする。i番目の間隔で受信されたサンプルをR(ステップ120)とし、単位は間隔と同じ(例えばミリ秒)とする。通常、サンプルレートは固定(例えば「ナローバンド」音声通話の場合8000サンプル/秒、動画の場合90,000サンプル/秒)であるため、例えばRTPを用いて、RTPタイムスタンプ(サンプル数を表す)を時間の単位(例えばミリ秒)に変換し得る。あらゆるiについて、I=Cである(上掲の例ではC=120ミリ秒)。
【0028】
輻輳を測定するために、二重指数平滑法を用いる(ステップ130):
=α*(R−I)+(1−α)*(s−1+bi−1
=β*(s−Si−1)+(1−β)*bi−1
式中、s及びbには何らかの初期値(例えば0)が設定され(ステップ110)、0<α、β<1は定数である。
は平滑化された片道遅延推定値(何らかの定数まで)であり、輻輳がなければ0である。bは「トレンド」であり、正のbは遅延が増大している、すなわち輻輳状態を示す。
【0029】
ここで、間隔Iの終わりにおける輻輳を以下のように定義する:
>閾値S、ここで閾値S>0、又は
>閾値T、ここで閾値T>0(ステップ140)。
また、輻輳の度合い(例えば、なし、軽度、中程度、重度)を示す複数のS及び/又はT閾値を定義してよい。
【0030】
ステップ150において、輻輳及びビットレートが算出された前回によって、今回は利用可能な帯域幅を再度推定する必要がないと示されている場合、プロセスはステップ120に戻って次の間隔で受信されるサンプル数を測定する。
【0031】
帯域幅推定
ここで図2を参照して帯域幅推定アルゴリズムを説明する。輻輳の推定に基づいて、受信側のVoIPアプリケーションは、送信側によって利用可能な帯域幅、ならびに、送信側のVoIPアプリケーションが送信レートを増加又は減少させるべきかどうかの推定を試みる。
【0032】
時間tにおいて、(例えば前の1秒間で受信されたビット数を測定することにより)着信ビットレートrが推定される。ネットワークが輻輳している場合、パケットは可能な限り速く転送されるはずであるため、利用可能な帯域幅の推定値としてrを用いることができる。一方、輻輳がない場合、着信レートは利用可能な帯域幅よりも小さい。
【0033】
受信側のVoIPアプリケーションは、最近の輻輳推定と着信ビットレートとに基づいて、送信側によって利用可能な帯域幅を定期的に推定する。時間tにおいて帯域幅が推定され、結果がAtであるとする。当初の帯域幅Atは、例えば最初のあらかじめ定義された時間内の着信ビットレートから推定可能である。別法として、当初の帯域幅は標準によって固定されるか、もしくは最初のハンドシェイクの一部として交渉される、もしくは当該技術分野で周知である他の任意の方法によって決定され得る。
【0034】
時間tにおける着信ビットレート推定値をrtとする(ステップ200)。
【0035】
輻輳がない場合、利用可能な帯域幅推定を増加させる必要がある(ステップ220)。例えば:rti>2*Ati−1である場合、Ati=2/3*rtiに設定してよい。別法としてAtiは、定数係数によって乗算すること:Ati=C*At−1(ステップ230)(式中、C>1)、もしくは、定数を加算すること:Ati=C+At−1(式中、C>1)によって増加され得る。
【0036】
利用可能な帯域幅を増加させるための別の例示的選択肢として、前回の利用可能な帯域幅推定Ati−1を記憶し、輻輳の期間後すぐにそれに戻るよう試みること(例えば、新規の推定値を、前回の利用可能な推定値の少なくとも半分に設定する)が挙げられる。
【0037】
なお、一部の場合において、ビットレートは増加されない。例えば:
−最大ビットレートが定義されている;
−ピアからの着信ビットレートが、現在の推定値よりも(きわめて)小さい。
【0038】
別法として、輻輳がある場合、現在の着信ビットレートが最良の帯域幅推定であると仮定すると、輻輳を解消するために、ビットレートを減少させる(ステップ230)必要がある。
【0039】
軽度の輻輳がある場合、次のようにAtを推定し得る:
ti=min(Ati−1,rti)(ステップ240)
【0040】
輻輳のレベルがより高い場合、着信ビットレートを定数(D<1)で乗算して、遅延を減少させる(ステップ250)。送信側がフルスピードで送信する場合、遅延は減少しない。一方、送信側が、例えば利用可能な帯域幅の80%を利用する場合、つまり「キャッチアップ」している場合、キューは解消されていく。推定帯域幅を減らすためのその他の方法が用いられ得る。
【0041】
受信側のVoIPアプリケーションは送信側のVoIPアプリケーションに推定値を送信し、送信側のVoIPアプリケーションはそれを許可される最大送信レートとして利用する。
【0042】
記述するべき最後の点は、推定値を更新するタイミングの決定方法である。いくつかの例示的選択肢として以下のようなものが挙げられる:
1.定期的更新。これはC(例えば120ミリ秒)おき、又はより長い間隔で行われてよい。例えば、帯域幅は1秒おきに再推定され得る。別法として、定期的更新を送るためにRTCPが用いられ得る。
2.輻輳状態が変化した時。例えば、輻輳なしから輻輳ありへの変化があった時。
3.ラウンドトリップがある(受信側が推定を送信側に送り、その後変更されたビットレートで最初のデータが到着するのを待機する必要がある)ので、受信側が推定を送る度に、次の推定を行うために例えばRTT+ε、又は(1+ε)*RTT、のタイマーをセットする。式中RTTはラウンドトリップタイムでありεは何らかの定数である。
【0043】
RTTは例えば以下のような数多くの方法によって測定され得る:
1.送信側のVoIPアプリケーションが、変化に対して「ack」パケットを送信し得る(そのパケットに続く全てのパケットが変化の影響を受けていると仮定する)。
2.各メディアパケットは現在の送信レートのエンコーディング(例えば、あるコーデックは256の異なる送信レートをサポートし得て、エンコードされたストリームの最初のバイトは採用されている「モード」であり得る)を含み得る。
3.明示的RTTパケットが送られ得る。
4.RTTはRTCPから算出され得る。
【0044】
機能強化として、輻輳が大きく変化した場合に、即時的なビットレート推定がトリガーされ得る。
【0045】
本発明は、ソフトウェア、ハードウェア、又はファームウェアの様々な組み合わせに実装され得る。
図1
図2