JP3874112B2 - 揺らぎ吸収バッファの制御方法および制御装置 - Google Patents
揺らぎ吸収バッファの制御方法および制御装置 Download PDFInfo
- Publication number
- JP3874112B2 JP3874112B2 JP2003111166A JP2003111166A JP3874112B2 JP 3874112 B2 JP3874112 B2 JP 3874112B2 JP 2003111166 A JP2003111166 A JP 2003111166A JP 2003111166 A JP2003111166 A JP 2003111166A JP 3874112 B2 JP3874112 B2 JP 3874112B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- fluctuation
- packets
- amount
- accumulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/22—Arrangements for detecting or preventing errors in the information received using redundant apparatus to increase reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2416—Real-time traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M2207/00—Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place
- H04M2207/20—Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place hybrid systems
- H04M2207/203—Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place hybrid systems composed of PSTN and data network, e.g. the Internet
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
- Telephone Function (AREA)
Description
【発明の属する技術分野】
この発明は、例えば、VoIP(Voice over Internet Protocol)電話システムにおける音声パケットの授受の際に適用して好適な揺らぎ吸収バッファの制御方法および制御装置に関する。
【0002】
【従来の技術】
インターネットやイントラネットのようなIP(Internet Protocol)ネットワークを利用して音声信号を送る技術であるVoIPを用いて電話通信を行うようにするVoIP電話システムが提供されている。このVoIP電話システムは、例えば、一般のLAN(Local Area Network)用の規格であるITU‐T勧告H.323が用いられて構成される。
【0003】
この場合、通話音声信号は所定時間長分毎にパケット化されてLAN上を順次に伝送されるもので、そのためのトランスポート層のプロトコルとしてはRTP(Real−time Transport Protocol)が用いられる。このRTPにおいては、送信側では、RTPヘッダの中にパケットの順序番号(シーケンス番号)やタイムスタンプ(時刻情報)を付けてパケットを送信し、受信側では、前記順序番号やタイムスタンプを基に、再生の同期をとることにより、実時間動作をすることができる。
【0004】
ところで、VoIP端末間での通話品質劣化の要因として、LANからの受信RTPパケット到着時間間隔の遅延、すなわち、揺らぎが挙げられる。この揺らぎの問題については、従来から対策が施されており、通常、受信開始時に、一定数のパケットを揺らぎ吸収バッファに蓄積して、音声の再生を遅れさせることにより、揺らぎの吸収を行っている。
【0005】
揺らぎ吸収バッファのバッファサイズは、開始蓄積パケット数と、最大蓄積パケット数とにより決定される。開始蓄積パケット数は、RTPパケット受信開始時に、揺らぎ吸収バッファからのパケットの読み出しを遅らせて、音声再生開始を待たせる受信パケット数である。
【0006】
すなわち、RTPパケット受信開始時には、揺らぎ吸収バッファに、開始蓄積パケット数の受信パケットが蓄積されるまで、揺らぎ吸収バッファからパケットデータは読み出さず、揺らぎ吸収バッファに開始蓄積パケット数の受信パケットが蓄積されたときには、次の受信パケットの到来のときに、蓄積している受信パケットの先頭のパケットを読み出すようにする。
【0007】
最大蓄積パケット数は、揺らぎ吸収バッファに蓄積可能な最大パケット数であり、音声再生の遅延の最大値に対応する。揺らぎ吸収バッファの蓄積パケット数が、この最大蓄積パケット数を越えた場合には、開始蓄積パケット数分のパケットをバッファ内に残して、それ以外の蓄積パケットを破棄するようにする。これにより、音声再生の遅延を最大蓄積パケット数の範囲内に押さえるようにしている。
【0008】
従来、開始蓄積パケット数と最大蓄積パケット数の値、したがって、揺らぎ吸収バッファのバッファサイズは、使用環境に応じて設定された固定値とされていた。
【0009】
【発明が解決しようとする課題】
ところで、揺らぎ吸収バッファのバッファサイズを決定するに当たって、開始蓄積パケット数は、揺らぎ収束状態における揺らぎ量より大きい値に設定されることが望ましく、また、最大蓄積パケット数は、最大の揺らぎ量より大きい値であるように設定されることが望ましい。これらの値が適切に設定されると、揺らぎ吸収バッファにより、揺らぎが確実に吸収されて、良好な通話品質が得られる。
【0010】
しかしながら、端末の実装環境毎に発生する前記揺らぎの量は、パケット伝達経路のトラフィック状況により随時変化するため、事前にそれを的確に把握して、開始蓄積パケット数や最大蓄積パケット数を適切に設定することは、一般に、非常に難しく、実際の揺らぎよりも揺らぎ吸収バッファのバッファサイズが小さすぎたり、大きすぎたりすることが多々ある。
【0011】
発生する揺らぎに対して、揺らぎ吸収バッファのサイズが小さい場合には、揺らぎによりパケット受信間隔が遅延している間に、揺らぎ吸収バッファに蓄積されていたパケット分の音声データを再生しきってしまうため、再生音声の音切れの問題が発生する。
【0012】
一方、発生する揺らぎに対して、揺らぎ吸収バッファのサイズが大きすぎる場合には、必要以上に音声再生が遅延してしまう問題がある。
【0013】
以上は、音声データの場合であるが、音声データに限らず、リアルタイム再生が必要なデータを伝送する場合には、同様の問題が生じる。
【0014】
この発明は、パケット伝達経路のトラフィック状況により随時変化する揺らぎの量に対応することができる揺らぎ吸収バッファの制御方法および装置を提供することを目的とする。
【0015】
【課題を解決するための手段】
上記課題を解決するために、この発明による揺らぎ吸収バッファの制御方法は、
リアルタイムで再生されるべき情報が所定時間長分毎にパケット化されて順次に伝送されてくるパケットデータを、揺らぎ吸収バッファを通じて受信し、伝送系において発生する前記パケットデータの到着タイミングの揺らぎを、前記揺らぎ吸収バッファにより制御する方法であって、
受信開始時に、前記揺らぎ吸収バッファに、開始蓄積パケット数の受信パケットが蓄積されてから、前記揺らぎ吸収バッファからの前記受信パケットの読み出しを開始し、前記揺らぎ吸収バッファに蓄積される受信パケット数が最大蓄積パケット数を越えた時には、所定数の受信パケットを破棄するようにする揺らぎ吸収バッファの制御方法において、
前記受信したパケットについて、前記開始蓄積パケット数よりも大きな前記揺らぎが発生した場合に、前記開始蓄積パケット数および前記最大蓄積パケット数を増加変更する開始蓄積量増加工程と、
前記揺らぎ量が、そのときの前記開始蓄積パケット数より低い値で安定している場合に、前記開始蓄積パケット数および前記最大蓄積パケット数を、そのときの値よりも少ない値に変更する開始蓄積量減少工程と、
を備えることを特徴とする。
【0016】
【作用】
上述の構成のこの発明によれば、開始蓄積量増加工程において、開始蓄積パケット数よりも大きな揺らぎが発生した場合には、開始蓄積パケット数および最大蓄積パケット数が増加変更される。
【0017】
そして、開始蓄積パケット数および最大蓄積パケット数が増加変更された後、揺らぎ量が、前記変更された開始蓄積パケット数より低い値で安定するようになった場合には、開始蓄積量減少工程において、そのときの開始蓄積パケット数および最大蓄積パケット数が、より少ない値に変更される。
【0018】
したがって、この発明によれば、パケット伝達経路のトラフィック状況により随時変化する揺らぎの量に、揺らぎ吸収バッファのバッファサイズを動的に対応することができ、例えばパケットデータが音声データである場合に、音切れの問題を軽減することができる。また、必要以上に音声再生が遅延してしまう問題をも、回避することができる。
【0019】
【発明の実施の形態】
以下、この発明による揺らぎ吸収バッファの制御方法の実施形態を、VoIP電話システムにおける音声パケットの伝送に適用した場合を例にとって、図を参照しながら説明する。
【0020】
図1は、この実施形態におけるVoIP電話システムの全体の概要を示すブロック図である。この例のVoIP電話システムは、ゲートキーパー1と、電話端末(H.323端末)2の複数個と、LAN3と、VoIPゲートウエイ4とによって構成される。
【0021】
電話端末2は、コンピュータの機能を備えると共に、ハンドセット2Hを備えている。そして、複数個の電話端末2のそれぞれは、IPネットワークを構成するLAN3に接続され、このLAN3を通じてゲートキーパー1に接続されている。
【0022】
VoIPゲートウエイ4は、複数回線分の電話回線6を介して、電話網5と接続されると共に、LAN3に接続される。電話回線6は、例えばISDN(Integrated Services Digital Network)回線、専用回線などを含む。このゲートウエイ4は、電話網5とIPネットワークとを接続するための機能を備える中継管理装置の役割を果たすもので、連続音声信号とIP音声パケットの相互変換や、IP音声パケットのゲートキーパー1とのやり取り、さらに、電話番号とIPアドレスとの相互変換を行う。
【0023】
この場合、LAN3は、ITU−T勧告H.323の規格によるIPネットワークの構成とされている。
【0024】
ゲートキーパー1は、ITU−T勧告H.323のシステム構成の中で中心的な管理機能を担当するもので、例えばパーソナルコンピュータで構成される。複数の電話端末2のそれぞれは、LAN3に接続されたときに、ゲートキーパー1に登録される。
【0025】
ゲートキーパー1は、システム内のゲートウエイ4や複数の電話端末2の交換管理、帯域幅の割り当て、電話番号とIPアドレスの対応付けなどを行い、これに登録された複数個の電話端末による複数の電話回線6を利用した電話通信を管理する機能を有する交換管理装置の役割を果たす。
【0026】
[ゲートキーパー1のハードウエア構成例]
この実施の形態のシステムにおけるゲートキーパー1のハードウエア構成例を図2に示す。この実施の形態のゲートキーパー1は、例えばパーソナルコンピュータにより構成されるもので、CPU110に対して、システムバス111を介してROM112と、RAM113と、LANインターフェイス114と、パケット処理部115と、ネットワーク管理メモリ116とが接続されている。
【0027】
ROM112には、電話番号情報とIPアドレスとの変換の処理プログラムなど、ゲートキーパー1が実行する処理プログラムが記憶されている。
【0028】
RAM113は、主としてROM112のプログラムがCPU110によって実行される際にワークエリアとして使用される。
【0029】
また、LANインターフェイス114は、LAN3を通じて送られてくるパケット化データを取り込み、また、LAN3にパケット化データを送出するための機能を備える。
【0030】
パケット処理部115は、LANインターフェイス114により取り込んだパケットが、制御データのパケットであった場合には、その制御データを解読するために、受信したパケットを分解し、また、送信する制御データのパケット化データを生成する機能を有する。
【0031】
なお、音声データのパケットの場合には、一般的には、ゲートキーパー1を介さずに、ゲートウエイ4と電話端末2との間でやり取りする。ただし、ゲートキーパー1を介して音声データのパケットの転送を行う場合もあり、その場合には、ゲートキーパー1は、ゲートウエイ4からのパケットは電話端末2に宛てて、電話端末2からのパケットはゲートウエイ4または他の電話端末2に宛てて、その音声パケットを転送するようにする。
【0032】
そして、パケット処理部115は、パケット化データを分解/生成したり、転送処理のために一時保存したりするためのバッファメモリを備える。
【0033】
ネットワーク管理メモリ116は、ネットワーク内に存在するゲートウエイ4や複数の電話端末2の登録情報やそれらのIPアドレスおよび、電話端末2のIPアドレスと電話番号との対応などの情報を記憶している。CPU110は、それらの情報を用いて、パケットの行き先のIPアドレスを決定したり、受信先のIPアドレスを判別したりする。
【0034】
[電話端末2のハードウエア構成例]
この実施形態のシステムにおける電話端末2は、図3に示すようなハードウエア構成例を示すものである。この実施形態の電話端末2は、端末本体200と、ハンドセット2Hとからなる。ハンドセット2Hは、図示を省略したが、送話器を構成するマイクロホンと、送話アンプと、受話器を構成するスピーカと、受話アンプとを備えている。
【0035】
端末本体200は、コンピュータにより構成されており、CPU210に対して、システムバス211を介してROM212と、RAM213と、ディスプレイコントローラ214と、操作入力インターフェイス(図ではインターフェイスはI/Fと記載する。以下同じ)216と、LANインターフェイス218と、パケット分解/生成部219と、音声データ入出力インターフェイス220と、揺らぎ吸収バッファを構成するRTP受信バッファ221と、RTP送信バッファ222とが接続されている。
【0036】
ディスプレイコントローラ214には、ディスプレイ215が接続されており、このディスプレイ215の表示画面には、CPU210の制御にしたがった表示が行われる。
【0037】
また、操作入力インターフェイス216には、テンキー、カーソルキー、その他の操作キーを含む操作入力部217が接続されている。CPU210は、操作入力インターフェイス216を介して操作入力部217を通じて使用者がいずれの入力キーを操作したかを認識し、その認識結果に基づいて、キー入力操作に応じた処理をROM212のプログラムに従って実行する。
【0038】
ROM212には、電話端末2をゲートキーパー1に登録する際の処理シーケンスを実行するためのプログラムや揺らぎ吸収バッファを構成するRTP受信バッファ221のバッファサイズを、LAN3上で実際に発生する揺らぎに動的に対応して制御するためのプログラムなどが記憶されている。
【0039】
RAM213は、主としてROM212のプログラムがCPU210によって実行される際にワークエリアとして使用される。
【0040】
LANインターフェイス218は、LAN3を通じて送られてくるパケット化データを取り込んでRTP受信バッファ221に順次に蓄積し、また、RTP送信バッファ222に蓄積されている音声データの送信パケットを、LAN3の空きを確認しながら、LAN3に順次に送出する機能を備える。
【0041】
パケット分解/生成部219は、LANインターフェイス218により取り込まれ、RTP受信バッファ221から読み出されたパケット化データを分解して、制御データや音声データを得る機能と、送信する制御データや所定時間分毎の音声データをパケット化したパケット化データを生成し、RTP送信バッファ222に転送する機能を有する。このパケット分解/生成部219は、パケット化データを分解したり、生成したりするためのバッファメモリを備える。
【0042】
なお、このパケット分解/生成部219のパケット分解処理機能や生成処理機能は、DSP(Digital Signal Processor)により構成されるが、CPU210と、ROM212とにより、ソフトウエアとして実現することもできる。
【0043】
音声データ入出力インターフェイス220は、パケット分解されて得られた音声データをアナログ音声信号に変換してハンドセット2Hに供給し、また、ハンドセット2Hから入力されるアナログ音声信号をデジタル信号に変換して取り込む機能を備える。
【0044】
[ゲートウエイ4のハードウエア構成例]
この実施の形態のシステムにおけるゲートウエイ4のハードウエア構成例を図4に示す。この実施の形態のゲートウエイ4は、例えばパーソナルコンピュータにより構成されるもので、CPU410に対して、システムバス411を介してROM412と、RAM413と、LANインターフェイス414と、パケット処理部415と、揺らぎ吸収バッファを構成するRTP受信バッファ417と、RTP送信バッファ418とが接続されている。
【0045】
RTP受信バッファ417とRTP送信バッファ418とは、図4では、一つずつ示したが、実際には、複数本の電話回線6のそれぞれの電話回線に対して、一つずつ設けられるものである。
【0046】
ROM412には、電話端末2からの音声パケットのデータを、RTP受信バッファ417を介して受け取り、電話回線6を通じて電話網5に送出するデータに変換するためのプログラム、また、逆に電話網5から取得したデータをLAN3を通じて電話端末2に送出するパケット化データに変換するためのプログラムや、揺らぎ吸収バッファを構成するRTP受信バッファ417のバッファサイズを、LAN3上で実際に発生する揺らぎに動的に対応して制御するためのプログラムなどが記憶されている。
【0047】
RAM413は、主としてROM412のプログラムがCPU410によって実行される際にワークエリアとして使用される。
【0048】
また、LANインターフェイス414は、LAN3を通じて送られてくるパケット化データを取り込み、また、LAN3にパケット化データを送出するための機能を備える。
【0049】
パケット処理部415は、LANインターフェイス414により取り込んだパケットを分解して、電話網5を伝送する形式のデータに変換し、また、電話網5から受信したデータをパケット化して、LANインターフェイス414を通じてLAN3に送出するパケット化データを生成する機能を有する。
【0050】
[揺らぎ吸収バッファの制御方法の実施形態の説明]
この実施形態の揺らぎ吸収バッファの制御方法は、電話端末のRTP受信バッファ221、また、ゲートウエイ4のRTP受信バッファ417の、いずれの制御にも適用される。この実施の形態においては、揺らぎ吸収バッファとしてのRTP受信バッファ221または417のバッファサイズを、LAN3において実際に発生する揺らぎに応じて動的(ダイナミック)に変更制御するものである。
【0051】
この実施形態のバッファサイズの制御方法を説明する前に、揺らぎ吸収バッファのバッファサイズを決定するためのパラメータの定義を、図5を参照して説明する。この図5は、揺らぎ吸収バッファとしてのRTP受信バッファ221または417のバッファサイズを決定するためのイメージを説明するためのものである。
【0052】
初期再生パケット数は、RTP受信バッファから読み出すパケット数であり、固定値であって、この例では、初期再生パケット数=1とされている。
【0053】
開始蓄積パケット数は、前述したように、パケット受信開始時に、RTP受信バッファからのパケットの読み出しを遅らせて、音声再生開始を待たせる受信パケット数である。前述したように、この開始蓄積パケット数は従来は固定値であったが、この実施形態では、後述するようにLAN3に発生する揺らぎ量に応じて動的に変化する。以下に説明する例では、開始蓄積パケット数の初期値は、開始蓄積パケット数の初期値=4とされている。
【0054】
次に、最大蓄積パケット数は、前述したように、揺らぎ吸収バッファであるRTP受信バッファに蓄積可能な最大パケット数であり、RTP受信バッファに最大蓄積パケット数以上のパケットが蓄積されたときには、前述したように、開始蓄積パケット数分のパケットをRTP受信バッファ内に残して、それ以外の蓄積パケットを破棄する。このときに破棄するパケット数を、溢れバッファ破棄数と呼び、この例では、溢れバッファ破棄数=2とされる。
【0055】
この最大蓄積パケット数は、
最大蓄積パケット数=開始蓄積パケット数+溢れバッファ破棄数
と定義できるもので、音声再生の遅延の最大値に対応する。この実施形態では、上記の定義から、開始蓄積パケット数が動的変化値であるので、これも動的変化値である。
【0056】
次に、最大開始蓄積パケット数は、動的変化値である開始蓄積パケット数の最大値(上限)であり、固定値である。
【0057】
RTP受信バッファは、図5に示すように、最大開始蓄積パケット数以上のメモリセル(1つのパケットの蓄積メモリ部をこの明細書ではセルと呼ぶ)を備え、メモリアクセス上、最後のメモリセルの次には最初のメモリセルに戻るようにされたリング状のバッファ構成とされている。
【0058】
そして、RTP受信バッファから読み出すパケット位置(メモリセル)は参照インデックスにより指定される。参照インデックスのメモリセルにパケットが蓄積されていないとき、または、RTP受信バッファに開始蓄積パケット数が蓄積されていないときには、パケットは読み出さずに、無音再生を行う。このときは、参照インデックスはインクリメントしない。
【0059】
そして、開始蓄積パケット数分のパケットがRTP受信バッファに蓄積されていて、参照インデックスのセルのパケットの読み出しをしたときには、参照インデックスをインクリメントする。
【0060】
また、CPU210またはCPU410は、RTP受信バッファ221または417の各メモリセルに蓄積されているパケットのシーケンス番号を保持して管理している。シーケンス番号は、パケットのRTPヘッダに含まれており、パケットの受信時にRTPヘッダを解析して取得する。
【0061】
そして、検索開始インデックスが、
検索開始インデックス=参照インデックス+初期再生パケット数
として定義されている。CPU210またはCPU410は、パケットを受信したとき、受信したパケットのRTPヘッダからシーケンス番号を抽出して検知し、検索開始インデックスのメモリセルから、各メモリセルに格納されているパケットのシーケンス番号を検索し、受信パケットを格納するメモリセルを決定する。
【0062】
図6は、揺らぎ吸収バッファの制御装置500の機能ブロック図である。この図6の揺らぎ吸収バッファの制御装置500は、電話端末2およびゲートウエイ4のいずれにも適用されるものであり、図3に示した電話端末2の端末本体200のハードウエアおよび図4に示したゲートウエイ4のハードウエアから、揺らぎ吸収バッファとしてのRTP受信バッファ221,417の制御に関する部分を抽出したものに相当する。
【0063】
LAN3を通じて自分宛に送られてくるRTPパケットは、データ受信部501(LANインターフェイス218,414に対応)で受信され、揺らぎ吸収バッファ502(RTP受信バッファ221または417に対応)に蓄積される。データ受信部501で受信されたRTPパケットは、揺らぎ検出部503に供給されて、LAN3において発生しているRTPパケットについての揺らぎ量(単位は時間)が検出される。
【0064】
ここで、揺らぎ量は、順次に受信される2つの受信RTPパケットの到着時間差と、パケットのRTPヘッダに含まれるタイムスタンプの差よりパケット受信毎に算出される。
【0065】
すなわち、シーケンス番号がiのパケットSiのタイムスタンプをTi、パケットSiの到着時間をAi、パケットSiの受信時の揺らぎ量をDiとしたとき、
Di=(Ai−Ai−1)−(Ti−Ti−1) ・・・(式1)
により、揺らぎ量Diが算出される。
【0066】
揺らぎ検出部503で検出された揺らぎ量Diは、バッファ制御部504に供給される。バッファ制御部504は、揺らぎ検出部503で検出された揺らぎ量Diに基づいて、後述するようにRTP受信バッファのバッファサイズの制御を行い、揺らぎ吸収処理を行いながら、揺らぎ吸収バッファ502から受信パケットを読み出し、データデコード処理部505に供給する。
【0067】
データデコード処理部505は、受け取ったパケットを分解して音声データをデコードする。そして、データ送信部506に供給する。データ送信部506は、電話端末2の場合であれば、音声データをアナログ音声信号に変換してハンドセット2Hに送る。また、データ送信部506は、ゲートウエイ4の場合であれば、音声データを空き回線を通じて電話網5に送出する。
【0068】
なお、揺らぎ検出部503およびバッファ制御部504の動作は、CPU210または410により実行される。また、データデコード処理部505は、DSP(Digital Signal Processor)により構成される。データ送信部506は、音声データ入出力インターフェイス220または回線インターフェイス416により構成される。
【0069】
[バッファ制御部504における開始蓄積量の制御動作]
この実施形態では、RTP受信バッファの開始蓄積量(開始蓄積パケット数に対応)は、LAN3上で発生する揺らぎ量に応じて動的に制御するが、この開始蓄積量の動的制御には、開始蓄積量の増加制御と、開始蓄積量の減少制御とがある。なお、この明細書において、蓄積量等における「量」は、時間の単位の値を示しており、蓄積パケット数等における「パケット数」は、前記「量」としての時間を、1パケット当たりの時間で割った値となるものである。
【0070】
〔開始蓄積量の増加手順〕
まず、開始蓄積量の増加制御手順について説明する。
この実施の形態においては、開始蓄積量より大きな揺らぎが、連続して、または周期的に、LAN3上に発生した場合、開始蓄積量を増やして、受信パケットを再蓄積するようにする。以下、その増加手順を説明する。
【0071】
(1)増加目標蓄積量の算出
パケットを受信する毎に、揺らぎ量を検出し、検出した揺らぎ量の増減から、増加目標蓄積量を算出する。増加目標蓄積量は、開始蓄積量を増加させるときの目標値である。すなわち、増加目標蓄積量をIBiとし、その初期値をIBo、揺らぎ量をDiとしたとき、以下のようにして、増加目標蓄積量IBiを求める。なお、サフィックスiは、パケットのシーケンス番号に相当する。
【0072】
IBo=開始蓄積量
IBi=IBi−1+fa(Di,IBi−1)/CI ・・・(式2)
ただし、
Di>IBi−1の場合
fa(Di,IBi−1)=Di−IBi−1
Di≦IBi−1の場合
fa(Di,IBi−1)=0
・・・(式3)
ここで、CIは収束速度定数であり、CI≧1である。この収束速度定数CIにより、局所的に発生した揺らぎの影響を抑え、連続的に発生する揺らぎ量を得ることができる。
【0073】
(2)開始蓄積量の更新
揺らぎ遅延によりRTP受信バッファが空になったときに、開始蓄積量=増加目標蓄積量として、開始蓄積量を増加目標蓄積量に置き換えて増加させる。そして、更新された開始蓄積量になるまで、RTP受信バッファからのパケットの読み出しを停止して、RTP受信バッファに受信パケットを再蓄積する。なお、増加目標蓄積量>最大開始蓄積量のときには、増加目標蓄積量=最大開始蓄積量とされて制限される。
【0074】
以上のようにして、この実施の形態においては、揺らぎが連続的または周期的に発生する期間が十分に長ければ、揺らぎに対する蓄積量の不足分が増加目標蓄積量に累積されてゆき、増加目標蓄積量は適切な揺らぎ量(IBi>Di)で収束してゆくので、その収束した増加目標蓄積量に開始蓄積量を置き換えることにより、発生する揺らぎ量に対応した揺らぎ吸収を行うことができる。
【0075】
〔開始蓄積量の減少手順〕
次に、開始蓄積量の減少制御手順について説明する。
上述のようにして開始蓄積量を増加させた後、揺らぎがより小さい値に収束することがあるが、そのように揺らぎ量が小さくなった場合にも、開始蓄積量を、増加したままの値に保持していた場合には、RTP受信バッファでの遅延(通話遅延)が大きくなる問題がある。
【0076】
この実施形態では、揺らぎ量が、そのときの開始蓄積量よりも低い値で安定している場合には、通話遅延を減少させるために、適切な開始蓄積量にまで減少させるようにする。この実施の形態では、以下の手順で揺らぎが安定しているかどうかを判定し、適切な開始蓄積量の算出を行う。
【0077】
(1)減少目標蓄積量の算出
パケットを受信する毎に、揺らぎ量を検出し、検出した揺らぎ量の増減から、開始蓄積量を減少させるときの目標値を求めるための減少目標蓄積量を算出する。すなわち、減少目標蓄積量をDBiとし、その初期値をDBo、揺らぎ量をDiとし、増加目標蓄積量をIBiとし、収束速度定数をCDとしたとき、以下のようにして、減少目標蓄積量DBiを求める。
【0078】
DBo=0
Di>IBi−1の場合
DBi=0
Di≦IBi−1の場合
DBi=DBi−1+fb(Di,DBi−1)/CD
・・・(式4)
ただし、
Di>DBi−1の場合
fb(Di,DBi−1)=Di−DBi−1
Di≦DBi−1の場合
fb(Di,DBi−1)=0
・・・(式5)
ここで、収束速度定数CDは、CD≧1である。
【0079】
なお、式4において、減少目標蓄積量DBiの更新判定に、増加目標蓄積量IBiを用いるのは、前述の(式2),(式3)との同期のためである。
【0080】
(2)揺らぎ安定の判定
揺らぎが安定したかどうかは、減少目標蓄積量が変化しない期間の長さ(パケット受信回数)で判定する。この実施形態では、収束期間カウント値CNTを、以下の手順で更新し、揺らぎ安定判定を行う。
【0081】
すなわち、
Di>DBi−1の場合
CNT=0
Di≦DBi−1の場合
CNTi=CNTi−1+1
・・・(式6)
とする。
【0082】
そして、収束期間カウント値CNTが、予め定めた揺らぎ安定と認められるような収束期間カウント値である収束期間定数CNT−thよりも大きくなったかどうかを検査し、収束期間カウント値CNTが、収束期間定数CNT−thよりも大きくなったときには、揺らぎが安定したと判定する。
【0083】
なお、収束期間定数CNT−thは、固定値でもよいし、また、受信パケットサイズにより変更するようにしてもよい。
【0084】
(3)バッファ更新判定およびバッファ更新処理
収束期間カウント値CNTが、収束期間定数CNT−thよりも大きくなって、揺らぎが安定したと判定したときには、RTP受信バッファのバッファサイズを変更するかどうかのバッファ更新判定を行う。バッファ更新判定は、開始蓄積量と減少目標蓄積量との差が、予め定めた最小減少量よりも大きいかどうかにより行う。最小減少量は、例えば1パケット分の時間とされる。
【0085】
バッファ更新判定の結果、開始蓄積量と減少目標蓄積量との差が、予め定めた最小減少量よりも小さい場合には、RTP受信バッファサイズは、減少処理する必要がないとして、収束期間カウント値CNTや減少目標蓄積量はゼロリセットされる。
【0086】
バッファ更新判定の結果、開始蓄積量と減少目標蓄積量との差が、予め定めた最小減少量よりも大きい場合には、バッファ更新処理を実行して、開始蓄積量=減少目標蓄積量とし、開始蓄積量を減少目標蓄積量まで減少させる。ただし、1度のバッファ更新手順で減少させる開始蓄積量は、予めパラメータとして設定された最大減少量により制限する。そして、収束期間カウント値CNTや減少目標蓄積量はゼロリセットすると共に、減少した分のバッファ内パケットを破棄するようにする。
【0087】
図7のフローチャートを参照して、以上のバッファ更新判定およびバッファ更新処理のルーチンを、さらに説明する。この図7の処理は、パケットを受信する毎に、電話端末2では、CPU210により、ゲートウエイ4では、CPU410により実行されるものである。
【0088】
まず、収束期間カウント値CNTが、収束期間定数CNT−thよりも大きくなって、揺らぎが安定したかどうかを判定する(ステップS1)。揺らぎが安定していないと判定したときには、このルーチンを抜けて他の処理ステップに進む。
【0089】
また、揺らぎが安定したと判定したときには、その時点における開始蓄積量から減少目標蓄積量を減算して、その減算結果ΔSを求める(ステップS2)。そして、その減算結果ΔSが、予め設定された最小減少量よりも大きいかどうか判定する(ステップS3)。
【0090】
ステップS3で、減算結果ΔSが、予め設定された最小減少量よりも小さいと判定された場合には、収束期間カウント値CNTを「0」にし(ステップS4)、また、減少目標蓄積量を「0」にする(ステップS5)。
【0091】
ステップS3で、減算結果ΔSが、予め設定された最小減少量よりも大きいと判定されたときには、当該減算結果ΔSは、予め設定された最大減少量以下であるか否か判別する(ステップS6)。
【0092】
このステップS6において、減算結果ΔSは、予め設定された最大減少量以下であると判別したときには、開始蓄積量=減少目標蓄積量として、開始蓄積量を減少させる(ステップS7)。また、ステップS6において、減算結果ΔSは、予め設定された最大減少量よりも大きいと判別したときには、開始蓄積量=そのときの開始蓄積量−最大減少量として、開始蓄積量を、最大減少量分だけ減少させる(ステップS8)。
【0093】
ステップS7およびステップS8の後は、ステップS9に進んで、増加目標蓄積量を、更新された開始蓄積量に置き換える。つまり、この時点から、増加目標蓄積量の初期値は、更新された開始蓄積量になる。
【0094】
次に、収束期間カウント値CNTを「0」にし(ステップS10)、また、減少目標蓄積量を「0」にする(ステップS11)。さらに、開始蓄積量を減少させたことにより溢れる分のパケットデータを、RTP受信バッファから破棄する(ステップ12)。この場合の開始蓄積量の減少により破棄するパケット数は、最大蓄積パケット数を越えて溢れたときに破棄する溢れバッファ破棄数のような固定値ではなく、動的なものとなる。以上で、バッファ更新処理は終了となる。
【0095】
[揺らぎ吸収バッファ制御の処理ルーチン]
次に、揺らぎ吸収バッファのバッファサイズの制御および読み出し処理動作の全体を、図8および図9のフローチャートを参照しながら説明する。
【0096】
RTPパケットを受信すると、電話端末2では、CPU210に、ゲートウエイ4ではCPU410に割り込みが発生して、図8および図9のフローチャートの処理ルーチンを開始し、まず、RTPヘッダを解析する(ステップS21)。次に、既にパケットの受信を開始しているかどうか判別する(ステップS22)。
【0097】
ステップS22で、未だ、パケット受信開始状態になっておらず、受信したパケットが受信開始のパケットであると判別したときには、パケットサイズ、つまり、音声データサイズを、予め決定されているパラメータに基づいて取得する(ステップS23)。
【0098】
すなわち、この例においては、送信側は、音声信号を所定時間長分毎にパケット化して、LAN3に送出するが、この場合のパケット化の際の所定時間長(音声データのサイズ)は、例えば10msec、20msec、30msecなどのいくつかのサイズの中から、選択することができる。そして、どのサイズでパケット化されているかの情報(パラメータ)は、音声データの送受信の前に制御信号をやり取りすることにより決定されており、その情報(パラメータ)により、音声データサイズを取得する。
【0099】
音声データサイズを取得したら、初期再生パケット数、開始蓄積パケット数の初期値、バッファ破棄数、最大開始蓄積パケット数等のバッファサイズ制御パラメータを算出する(ステップS24)。この例では、開始蓄積量の初期値、バッファ破棄量、最大開始蓄積量は、時間単位で定められており、1パケット当たりの時間長である音声データサイズから、前記パラメータをパケット数単位に変換する。
【0100】
例えば、開始蓄積量の初期値が30msec、バッファ破棄量が20msec、最大開始蓄積量が1000msecに設定されており、音声データサイズが、10msec/パケットであったときには、開始蓄積パケット数の初期値は「3」、バッファ破棄数は「2」、最大開始蓄積パケット数は「100」となる。
【0101】
以上のパラメータの算出が終了したら、RTP受信バッファを受信開始状態にし、ステップS23で取得した音声データサイズに合わせて、図6のデータデコード処理部505の制御側からの受信割り込み周期を設定する(ステップS25)。そして、前記受信割り込み周期は、データデコード処理部505が制御側から受信する割り込みに関するものであり、この割り込みは、LAN3側の音声データの受信で発生するものではない。
【0102】
電話端末2あるいはゲートウエイ4は、この受信割り込み周期で、RTP受信バッファからパケットの取り出しを行って、後述する音声送出処理を行う。
【0103】
次に、受信開始状態にしたら、到着したパケットについての揺らぎ量の算出を行う。また、ステップS22で既に受信開始状態であると判別したときには、即座に、到着したパケットについての揺らぎ量の算出を行う(ステップS26)。
このステップS26における揺らぎ量の算出は、前述した(式1)によって行われる。
【0104】
次に、算出した揺らぎ量に基づき、前述の(式2)、(式3)に基づき増加目標蓄積量IBiの算出を行うと共に、前述の(式4)、(式5)に基づき減少目標蓄積量DBiの算出を行う(ステップS27)。
【0105】
次に、RTP受信バッファ内の蓄積パケット数が、初期再生パケット数より小さいかどうか判定する(ステップS28)。
【0106】
RTP受信バッファ内の蓄積パケット数が、初期再生パケット数より小さいときには、再生するパケットがバッファ内にないため、RTP受信バッファからのパケットの読み出し時に用いるバッファ参照フラグを「FALSE」にして、バッファ参照を禁止させ、無音生成を指示する(ステップS29)。
【0107】
次に、開始蓄積量を、そのときの増加目標蓄積量とする(ステップS30)。
ただし、増加目標蓄積量が最大開始蓄積量よりも大きいとき(増加目標蓄積量>最大開始蓄積量)には、開始蓄積量=最大開始蓄積量に制限される。前述したように、増加目標蓄積量の初期値は、開始蓄積量の初期値である。
【0108】
このステップS30においては、パケットの受信を開始したときには、前回のパケット受信時における揺らぎ量に応じたRTP受信バッファサイズとなるように、開始蓄積量が設定される。また、パケットの受信を開始している状態においては、RTP受信バッファ内の蓄積パケット数が、初期再生パケット数より小さいということは、揺らぎによる遅延のために、RTP受信バッファ内のパケットが空になったことを意味するため、開始蓄積量がそのときの増加目標蓄積量に増加変更される。
【0109】
次に、RTP受信バッファサイズを、
RTP受信バッファサイズ=開始蓄積パケット数
として算出する(ステップS31)。また、最大蓄積パケット数を、
最大蓄積パケット数=RTP受信バッファサイズ+溢れ時のバッファ破棄数
として算出する(ステップS32)。次に、次回受信したときに、受信パケットをRTP受信バッファのいずれのメモリセルに蓄積するかを検索する際の開始インデックス(インデックスは、RTP受信バッファのメモリセルを指し示す指標である)である検索開始インデックスを、RTP受信バッファの先頭にセットする(ステップS33)。その後、RTP受信バッファへの受信パケット蓄積処理に進む(ステップS35)。
【0110】
また、ステップ28で、蓄積パケット数が初期再生パケット数以上であると判別したときには、検索開始インデックスを、
検索開始インデックス=参照インデックス+初期再生パケット数
とする(ステップ34)。その後、ステップS35の受信パケット蓄積処理に進む。
【0111】
ステップ35の受信パケット蓄積処理においては、前述したように、検索開始インデックスで指し示されるメモリセルから順に、RTP受信バッファの各メモリセルに蓄積されているパケットのシーケンス番号を検索して、今回受信したパケットを格納すべきセルを検出し、検出されたセルに、受信パケットを格納する。
【0112】
以上のようにして、RTP受信バッファ内に受信パケットを蓄積したら、蓄積パケット数を1だけインクリメントする(図9のステップS41)。
【0113】
次に、揺らぎが、収束したか否か判別する(ステップS42)。そして、揺らぎが収束したと判別したときには、前述した開始蓄積量の減少手順を実行する(ステップS43)。ステップS42の処理は、図7のステップS1の処理に対応し、また、ステップS43の処理は、図7のステップS2〜ステップS12に処理に対応する。
【0114】
ステップS43での開始蓄積量の減少手順が終了した後と、ステップS42で、減少目標蓄積量が収束していないと判別したときには、RTP受信バッファの蓄積パケット数が、最大蓄積パケット数以上であるか否か判別する(ステップ44)。そして、蓄積パケット数が最大蓄積パケット数以上であると判別したときには、RTP受信バッファの先頭から、ステップS24で定められた溢れ時のバッファ破棄数分のパケットを、RTP受信バッファから破棄する(ステップS45)。
【0115】
ステップS44で、蓄積パケット数が最大蓄積パケット数よりも少ないと判別されたとき、また、ステップ45でのパケットの破棄処理が終了した後には、蓄積パケット数が、RTP受信バッファサイズ以上であるか否か判別する(ステップS46)。
【0116】
ステップS46で、蓄積パケット数が、RTP受信バッファサイズ以上であると判別したときには、参照インデックスを、RTP受信バッファの先頭のセル番号とし(ステップS47)、検索開始インデックスは、
検索開始インデックス=参照インデックス+初期再生パケット数
とした後(ステップS48)、バッファ参照フラグを「TRUE」として、音声データ送出処理手順において、バッファ参照を許可し、音声データ再生開始を指示する(ステップS49)。
【0117】
その後、このパケット受信時の処理ルーチンを終了する。また、ステップS46で、蓄積パケット数が、RTP受信バッファサイズ以上ではないと判別したときにも、このパケット受信時の処理ルーチンを終了する。
【0118】
[音声データ送出処理]
次に、図8および図9の受信処理に併せて行われる音声データ送出処理を、図10のフローチャートを参照しながら説明する。これは、ゲートウエイ4の場合であり、前述の図6の機能ブロック図におけるDSPで構成されたデータデコード処理部505における処理である。この図6のデータデコード処理部505における処理は、前述したようにして設定された割り込み周期で起動される。前述したように、この例では、この割り込み周期は、音声パケットサイズに合わせたものとされている。なお、割り込み周期は、音声パケットサイズと一致させなくても勿論よい。
【0119】
まず、出力する音声チャンネルを選択する(ステップS51)。例えば、音声チャンネル1は、ISDN回線、音声チャンネル2は、アナログ回線とされる。電話端末2の場合であれば、このステップS51の処理は不要である。
【0120】
次に、RTP受信バッファを検索する(ステップS52)。そして、バッファ参照フラグが「TRUE」であるか「FALSE」であるか判別する(ステップS53)。バッファ参照フラグが「FALSE」であった場合には、再生すべき音声データがないとして、無音再生処理を行う(ステップS54)。
【0121】
バッファ参照フラグが「TRUE」であった場合には、参照インデックスで示されるRTP受信バッファのセルから音声パケットを読み出すようにし(ステップS55)、音声データが存在するか否か判別する(ステップS56)。
【0122】
ステップS56で、音声データがあると判別したときには、音声データを再生し(ステップS57)、RTP受信バッファの蓄積パケット数をデクリメントする(ステップS58)。そして、参照インデックスをインクリメントして(ステップS59)、この音声データ送出処理ルーチンを終了する。
【0123】
ステップS56で、音声データがないと判別したときには、蓄積パケットがRTP受信バッファ内にあるか否か判別し(ステップS60)、蓄積パケットがあると判別されたときには、参照インデックスをインクリメントし(ステップS61)、その後、再生音声データなしとして無音再生する(ステップ62)。また、ステップS60で、蓄積パケットがないと判別したときには、即座にステップS62に進み、無音再生する。
【0124】
[RTP受信バッファ内のパケット数の変化の具体例]
次に、図11〜図13を参照して、パケット到着時のRTP受信バッファ内のパケット数の変化の具体例について説明する。図11〜図13の各図において、BFはRTP受信バッファを模式的に示し、網掛けを付して示したメモリセルは、パケットが蓄積されていることを示しており、当該蓄積パケットの中に示した数字はシーケンス番号を示している。また、白抜き部分のセルは、空きを示している。
【0125】
以下に説明する例では、初期再生パケット数=1、開始蓄積量の初期パケット数=3、最大蓄積パケット数の初期値=5、最大開始蓄積パケット数=10とした場合である。開始蓄積パケット数と、最大蓄積パケット数は動的に変化する。
【0126】
なお、図11〜図13の各図において、A〜Dは、A=開始蓄積量の初期パケット数、B=開始蓄積パケット数(動的変化)、C=最大蓄積パケット数(動的変化)、D=最大開始蓄積パケット数であり、各図において、上方に示したこれらA〜Dのうち、BおよびCの値は、その初期値を示している。また、図11〜図13において、網掛けを付して示したものは、蓄積パケットを示しており、当該蓄積パケットの中に示した数字はシーケンス番号を示している。
【0127】
図11は、パケットの受信開始からの処理と、揺らぎ発生による開始蓄積量および最大蓄積パケット数の変更および揺らぎ吸収処理を示すものである。この図11では、発生した揺らぎは、パケットを破棄しなければならないほど大きいものではなかった場合である。
【0128】
最初のパケットを受信すると、前述したように、音声データサイズ(パケットサイズ)が認識され、バッファサイズ制御パラメータの算出がなされて、受信開始状態とされ、以後、音声データサイズ(パケットサイズ)に基づいて設定された受信割り込み周期で、後述するような音声データ送出処理がなされる。そして、到着したパケットがRTP受信バッファBFに蓄積される。
【0129】
そして、パケット受信開始から、RTP受信バッファBFに3個のパケットが蓄積されるまでは、RTP受信バッファBFからパケットは読み出されず、無音再生が行われる。
【0130】
4個目のパケットが到着すると、それが蓄積されると共に、前述した受信割り込み周期のタイミングで、RTP受信バッファBFの先頭のパケットが読み出されて、音声データの送出がなされる。以後は、受信割り込み周期のタイミングで、RTP受信バッファBFに蓄積されているパケットは、先頭から順次読み出されて音声データ送出される。したがって、揺らぎが発生しなければ、図11の例においては、RTP受信バッファBFには、常に3個のパケットが蓄積される状態になる。
【0131】
ここで、遅延揺らぎが発生すると、受信パケットが到着しないにも関わらず、受信割り込み周期のタイミングで、RTP受信バッファに蓄積されているパケットは、先頭から順次、読み出されるので、新パケットが到着しない限り、RTP受信バッファBF内の蓄積パケット数は、徐々に減ってゆく。
【0132】
そして、RTP受信バッファBF内の蓄積パケット数がゼロになると、前述したように、開始蓄積パケット数Bは、増加目標蓄積パケット数に増加変更される。これに伴い、最大蓄積パケット数Cも増加変更される。図10の例では、開始蓄積パケット数は「5」に、最大蓄積パケット数は「7」にそれぞれ変更される。
【0133】
その後、揺らぎの発生により遅れた3周期分と合わせて4個のパケットが到着すると、それがRTP受信バッファBFに蓄積される。この時点では、変更された開始蓄積パケット数「5」には満たないので、RTP受信バッファBFからパケットは読み出されず、無音再生が行われる。そして、次にパケットが到着してRTP受信バッファBFの蓄積パケット数が5になるまで、RTP受信バッファBFからパケットは読み出されず、無音再生が行われる。
【0134】
そして、RTP受信バッファBFの蓄積パケット数が5になると、受信割り込み周期のタイミングで、RTP受信バッファBFに蓄積されているパケットは、先頭から順次読み出されて音声データの送出がなされる。こうして、発生した揺らぎの量に合わせて、開始蓄積パケット数が変更されるので、パケットが破棄されることによる音切れが防止される。
【0135】
次に、大きな揺らぎが発生した場合におけるRTP受信バッファのバッファサイズの変更制御(増加制御)について、図12を参照して説明する。図12の例は、開始蓄積パケット数が3、最大蓄積パケット数が5である場合において、大きな揺らぎが発生した場合である。
【0136】
図12において、揺らぎが発生するまでは、受信割り込み周期のタイミングで、順次、RTP受信バッファBFの蓄積パケットの先頭のパケットが読み出されると共に、受信パケットが蓄積される。
【0137】
この状態で揺らぎが発生すると、前述と同様にして、受信パケットが到着しないにも関わらず、受信割り込み周期のタイミングで、RTP受信バッファに蓄積されているパケットは、先頭から順次、読み出されるので、RTP受信バッファBF内の蓄積パケット数は、徐々に減ってゆく。
【0138】
そして、RTP受信バッファBF内の蓄積パケット数がゼロになると、前述と同様に、開始蓄積パケット数Bは、増加目標蓄積パケット数に増加変更される。これに伴い、最大蓄積パケット数Cも増加変更される。図12の例では、開始蓄積パケット数は「4」に、最大蓄積パケット数は「6」にそれぞれ変更される。
【0139】
この図12の例では、このように開始蓄積パケット数の増加変更を行った後においても、揺らぎ量が大きいため、さらにパケットの到着が遅れる。そして、到着が遅れていた複数個のパケットと共に、図12に示すように、最大蓄積パケット数を越える新たなパケットがまとめて到着する。
【0140】
すると、前述したように、予め定められている溢れバッファ破棄数のパケット、この例では、2パケットが、RTP受信バッファBFの先頭から順次破棄される。すると、蓄積パケット数は5になるので、最大蓄積パケット数「6」以内に収まる。そして、受信割り込み周期のタイミングで、RTP受信バッファBFに蓄積されているパケットは、先頭から読み出されて再生される。
【0141】
図12の例では、以上の処理により、RTP受信バッファBF内の蓄積パケット数は、開始蓄積パケット数になるので、その後は、揺らぎがなければ、先頭からのパケットの読み出しと、到着パケットの蓄積が行われる。
【0142】
次に、揺らぎが停止してゆくときのRTP受信バッファのバッファサイズの変更制御(増加制御)について、図13を参照して説明する。図13の例は、開始蓄積パケット数Bが5に増加していて、このため、最大蓄積パケット数Cが7である場合において、揺らぎが収束して停止してゆく場合である。
【0143】
すなわち、図13に示すように、揺らぎが発生している間は、開始蓄積パケット数Bは「5」とされて、揺らぎ吸収処理が行われるが、揺らぎが停止して収束してゆくと、前述した収束期間カウント値CNTが、収束期間定数CNT−thよりも大きくなって、揺らぎが安定したと判定する。このときには、前述したように、開始蓄積パケット数Bを減少目的蓄積量に減少変更し、減少させたパケット数分をRTP受信バッファBFの先頭から破棄する。
【0144】
さらに、揺らぎが収束してゆくと、収束期間カウント値CNTが、再び、収束期間定数CNT−thよりも大きくなって、揺らぎが安定したと判定する。そして、開始蓄積パケット数Bを減少目的蓄積量に減少変更し、減少させたパケット数分をRTP受信バッファBFの先頭から破棄する。
【0145】
以上の処理を繰り返すことにより、揺らぎがなくなる方向に収束するにつれて、開始蓄積パケット数Bは、初期値にまで減少させられる。
【0146】
以上のようにして、この実施形態によれば、揺らぎの発生に合わせて、RTP受信バッファの開始蓄積パケット数を増加し、揺らぎが停止して減少収束するにつれて、開始蓄積パケット数を減少させるようにするので、RTP受信バッファサイズは揺らぎ量に合わせて動的に制御され、音切れが軽減されると共に、音の遅延も最小限に抑えられるものである。
【0147】
なお、上述の実施形態においては、RTP受信バッファが空になったら、開始蓄積パケット数を増加目標蓄積量に変更するようにしたが、空ではなく、RTP受信バッファの蓄積パケット数が所定数以下、例えば1個以下になったときに、開始蓄積パケット数を増加目標蓄積量に変更するようにしてもよい。
【0148】
なお、この発明は、LANを通じてリアルタイム再生が必要なデータを伝送する際において、LAN上で発生する揺らぎについて適用可能であるので、上述の実施形態で説明したVoIP電話システムにのみ適用される場合のみに、この発明が限られるものではないことは言うまでもない。
【0149】
また、この発明が適用されるリアルタイム伝送が必要なデータは、音声データに限られるものではなく、映像データ、その他のデータであってもよい。
【0150】
【発明の効果】
以上説明したように、この発明によれば、LAN上で発生する揺らぎ量に動的にバッファサイズを変更制御することができるので、良品質のリアルタイムデータ伝送が可能になる。伝送データが、例えば音声の場合であれば、音切れや、音声遅延を軽減することができる。
【図面の簡単な説明】
【図1】この発明の適用例としてのVoIP電話システムの構成例を示す図である。
【図2】図1の例のVoIP電話システムを構成するゲートキーパーの構成例を示すブロック図である。
【図3】図1の例のVOIP電話システムを構成する電話端末の構成例を示すブロック図である。
【図4】図1の例のVOIP電話システムを構成するゲートウエイの構成例を示すブロック図である。
【図5】この発明の実施の形態における揺らぎ吸収バッファの構成を説明するための図である。
【図6】この発明の実施の形態における揺らぎ吸収バッファの制御装置の構成を説明するためのブロック図である。
【図7】この発明の実施の形態における揺らぎ吸収バッファの制御方法の一部を説明するためのフローチャートである。
【図8】この発明の実施の形態における揺らぎ吸収バッファの制御方法を説明するためのフローチャートの一部である。
【図9】この発明の実施の形態における揺らぎ吸収バッファの制御方法を説明するためのフローチャートの一部である。
【図10】この発明の実施の形態における揺らぎ吸収バッファからのデータ送出処理を説明するためのフローチャートである。
【図11】この発明の実施の形態が適用された揺らぎ吸収バッファにおける蓄積パケットの変化およびバッファサイズの変更制御を説明するための図である。
【図12】この発明の実施の形態が適用された揺らぎ吸収バッファにおける蓄積パケットの変化およびバッファサイズの変更制御を説明するための図である。
【図13】この発明の実施の形態が適用された揺らぎ吸収バッファにおける蓄積パケットの変化およびバッファサイズの変更制御を説明するための図である。
【符号の説明】
1 ゲートキーパー
2 電話端末
3 IPネットワークを構成するLAN
4 ゲートウエイ
210,410 CPU
221、417 揺らぎ吸収バッファを構成するRTP受信バッファ
Claims (9)
- リアルタイムで再生されるべき情報が所定時間長分毎にパケット化されて順次に伝送されてくるパケットデータを、揺らぎ吸収バッファを通じて受信し、伝送系において発生する前記パケットデータの到着タイミングの揺らぎを、前記揺らぎ吸収バッファにより制御する方法であって、
受信開始時に、前記揺らぎ吸収バッファに、開始蓄積パケット数の受信パケットが蓄積されてから、前記揺らぎ吸収バッファからの前記受信パケットの読み出しを開始し、前記揺らぎ吸収バッファに蓄積される受信パケット数が最大蓄積パケット数を越えた時には、所定数の受信パケットを破棄するようにする揺らぎ吸収バッファの制御方法において、
前記受信したパケットについて、前記開始蓄積パケット数よりも大きな前記揺らぎが発生した場合に、前記開始蓄積パケット数および前記最大蓄積パケット数を増加変更する開始蓄積量増加工程と、
前記揺らぎ量が、そのときの前記開始蓄積パケット数より低い値で安定している場合に、前記開始蓄積パケット数および前記最大蓄積パケット数を、そのときの値よりも少ない値に変更する開始蓄積量減少工程と、
を備えることを特徴とする揺らぎ吸収バッファの制御方法。 - 請求項1に記載の吸収バッファの制御方法において、
前記パケットを受信する毎に、揺らぎ量を算出する揺らぎ算出工程を備えると共に、
前記開始蓄積量増加工程は、
前記揺らぎ吸収バッファに蓄積されているパケット数が、そのときの前記開始蓄積パケット数よりも少ない予め定められたパケット数以下になるまで、前記揺らぎ算出工程で算出したパケット受信毎の揺らぎ量の増減に基づき、そのときの前記開始蓄積パケット数を初期値とした増加目標蓄積量を累積演算する工程と、
前記揺らぎ吸収バッファに蓄積されているパケット数が、前記開始蓄積パケット数よりも少ない予め定められたパケット数以下になったとき、前記開始蓄積パケット数を前記累積演算した前記増加目標蓄積量に変更すると共に、前記揺らぎ吸収バッファからの読み出しを停止して、前記揺らぎ吸収バッファに受信パケットを再蓄積するようにする工程と
を備えることを特徴とする揺らぎ吸収バッファの制御方法。 - 請求項2に記載の揺らぎ吸収バッファの制御方法において、
前記増加目標蓄積量が、予め定められている最大開始蓄積パケット数よりも大きいときには、前記開始蓄積パケット数は、前記増加目標蓄積量に代えて前記最大開始パケット数に変更する
ことを特徴とする揺らぎ吸収バッファの制御方法。 - 請求項1に記載の吸収バッファの制御方法において、
前記パケットを受信する毎に、揺らぎ量を算出する揺らぎ算出工程を備えると共に、
前記開始蓄積量減少工程は、
前記算出工程で算出したパケット受信毎の揺らぎ量の増減に基づき、ゼロを初期値とした減少目標蓄積量を累積演算する工程と、
前記揺らぎ量が安定していると判定され、かつ、そのときの前記開始蓄積パケット数から前記減少目標蓄積量を減算した値が、予め設定された最小減少量よりも大きいときに、前記開始蓄積パケット数を、前記減少目標蓄積量に変更すると共に、前記揺らぎ吸収バッファに蓄積されている変更後の前記開始蓄積パケット数よりも余分のパケットを破棄するようにする工程と
を備えることを特徴とする揺らぎ吸収バッファの制御方法。 - 請求項4に記載の吸収バッファの制御方法において、
前記そのときの前記開始蓄積パケット数から前記減少目標蓄積量を減算した値が、前記最小減少量よりも大きく、かつ、予め定められた最大減少量よりも大きいときには、前記開始蓄積パケット数を、前記減少目標蓄積量に代えて前記最大減少量に変更する
ことを特徴する揺らぎ吸収バッファの制御方法。 - リアルタイムで再生されるべき情報が所定時間長分毎にパケット化されて順次に伝送されてくるパケットデータを、揺らぎ吸収バッファを通じて受信し、伝送系において発生する前記パケットデータの到着タイミングの揺らぎを、前記揺らぎ吸収バッファにより制御する装置であって、
受信開始時に、前記揺らぎ吸収バッファに、開始蓄積パケット数の受信パケットが蓄積されてから、前記揺らぎ吸収バッファからの前記受信パケットの読み出しを開始し、前記揺らぎ吸収バッファに蓄積される受信パケット数が最大蓄積パケット数を越えた時には、所定数の受信パケットを破棄するようにする揺らぎ吸収バッファの制御装置において、
前記パケットを受信する毎に、揺らぎ量を算出する揺らぎ算出手段と、
前記揺らぎ吸収バッファに蓄積されているパケット数が、前記開始蓄積パケット数よりも少ない予め定められたパケット数以下になるまで、前記揺らぎ算出手段で算出したパケット受信毎の揺らぎ量の増減に基づき、前記開始蓄積パケット数を初期値とした増加目標蓄積量を累積演算する手段と、
前記揺らぎ吸収バッファに蓄積されているパケット数が、前記開始蓄積パケット数よりも少ない予め定められたパケット数以下になったとき、前記開始蓄積パケット数を前記累積演算した前記増加目標蓄積量に変更すると共に、前記揺らぎ吸収バッファからの読み出しを停止して、前記揺らぎ吸収バッファに受信パケットを再蓄積するようにする手段と、
を備えることを特徴とする揺らぎ吸収バッファの制御装置。 - 請求項6に記載の揺らぎ吸収バッファの制御装置において、
前記増加目標蓄積量が、予め定められている最大開始蓄積パケット数よりも大きいときには、前記開始蓄積パケット数は、前記増加目標蓄積量に代えて前記最大開始パケット数に変更する
ことを特徴とする揺らぎ吸収バッファの制御装置。 - 請求項6に記載の吸収バッファの制御装置において、
前記揺らぎ算出手段で算出したパケット受信毎の揺らぎ量の増減に基づき、ゼロを初期値とした減少目標蓄積量を累積演算する手段と、
前記揺らぎ量が、そのときの開始蓄積パケット数よりも低い値で安定していると判定され、かつ、そのときの前記開始蓄積パケット数から前記減少目標蓄積量を減算した値が、予め設定された最小減少量よりも大きいときに、前記開始蓄積パケット数を、前記減少目標蓄積量に変更すると共に、前記揺らぎ吸収バッファに蓄積されている変更後の前記開始蓄積パケット数よりも余分のパケットを破棄するようにする手段と
を備えることを特徴とする揺らぎ吸収バッファの制御装置。 - 請求項8に記載の吸収バッファの制御装置において、
前記そのときの前記開始蓄積パケット数から前記減少目標蓄積量を減算した値が、前記最小減少量よりも大きく、かつ、予め定められた最大減少量よりも大きいときには、前記開始蓄積パケット数を、前記減少目標蓄積量に代えて前記最大減少量に変更する
ことを特徴する揺らぎ吸収バッファの制御装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003111166A JP3874112B2 (ja) | 2002-05-13 | 2003-04-16 | 揺らぎ吸収バッファの制御方法および制御装置 |
US10/428,986 US20030210681A1 (en) | 2002-05-13 | 2003-05-05 | Method and apparatus for controlling delay fluctuation absorption buffer |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002136835 | 2002-05-13 | ||
JP2003111166A JP3874112B2 (ja) | 2002-05-13 | 2003-04-16 | 揺らぎ吸収バッファの制御方法および制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004048680A JP2004048680A (ja) | 2004-02-12 |
JP3874112B2 true JP3874112B2 (ja) | 2007-01-31 |
Family
ID=29405333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003111166A Expired - Fee Related JP3874112B2 (ja) | 2002-05-13 | 2003-04-16 | 揺らぎ吸収バッファの制御方法および制御装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20030210681A1 (ja) |
JP (1) | JP3874112B2 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1320805C (zh) * | 2003-09-17 | 2007-06-06 | 上海贝尔阿尔卡特股份有限公司 | 一种分组交换网络自适应抖动缓冲区调整方法 |
JP4667811B2 (ja) * | 2004-09-28 | 2011-04-13 | 京セラ株式会社 | 音声通信装置、音声通信方法 |
DE102005012664A1 (de) * | 2005-03-18 | 2006-09-21 | Siemens Ag | Verfahren und Anordnung zur Übertragung von Datenpaketen |
US7489702B2 (en) * | 2005-03-31 | 2009-02-10 | Alcatel-Lucent Usa Inc. | Method and apparatus for increasing radio frequency efficiency for mixed voice over internet protocol and data traffic |
US7593393B2 (en) * | 2006-01-20 | 2009-09-22 | Sbc Knowledge Ventures, L.P. | Voice over internet protocol multi-routing with packet interleaving |
JP2007323345A (ja) * | 2006-05-31 | 2007-12-13 | Toshiba Corp | 入出力処理装置及び同入出力処理装置を有するコンピュータシステム |
KR100864824B1 (ko) * | 2006-09-22 | 2008-10-23 | 한국전자통신연구원 | NPSS(Number PortabilitySupporting System)를 갖춘 동종 또는이종 전화망 간 번호 이동성 호 처리 장치 및 그 구현 방법 |
JP4758334B2 (ja) * | 2006-12-26 | 2011-08-24 | 株式会社富士通エフサス | 通信端末装置及び通信制御方法 |
JP4684247B2 (ja) * | 2007-01-29 | 2011-05-18 | 京セラ株式会社 | 音声通信方法、音声通信装置 |
US8339944B2 (en) * | 2007-11-05 | 2012-12-25 | Qualcomm Incorporated | SDU discard mechanisms for wireless communication systems |
JP4629126B2 (ja) * | 2008-05-08 | 2011-02-09 | 三菱電機株式会社 | メッセージ中継装置 |
DE102011082741A1 (de) * | 2011-09-15 | 2013-03-21 | Rohde & Schwarz Gmbh & Co Kg | Verschlüsselung basierend auf Netzwerkinformationen |
US8689233B2 (en) * | 2012-01-25 | 2014-04-01 | International Business Machines Corporation | Distributed function execution for hybrid systems |
US8902777B1 (en) * | 2012-06-29 | 2014-12-02 | Juniper Networks, Inc. | Methods and apparatus for self-tuning aggregation of data units |
JP2014192710A (ja) * | 2013-03-27 | 2014-10-06 | Oki Electric Ind Co Ltd | 音声通信品質測定システム、音声通信品質測定方法、音声通信品質測定装置、音声通信品質測定プログラム、音声通信品質要求装置及び音声通信品質要求プログラム |
JP5517381B1 (ja) * | 2013-09-30 | 2014-06-11 | レゾネッツ合同会社 | 揺らぎ吸収装置、通信装置、及び制御プログラム |
US9961022B1 (en) * | 2015-12-28 | 2018-05-01 | Amazon Technologies, Inc. | Burst absorption for processing network packets |
JP7000988B2 (ja) * | 2018-05-21 | 2022-01-19 | 富士通株式会社 | パケット転送装置及びパケット転送方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT1230235B (it) * | 1989-06-07 | 1991-10-18 | Telettra Spa | Strutturazione e trasmissione a pacchetti dell'informazione generata da codificatore per segnali video. |
JP3362695B2 (ja) * | 1999-03-31 | 2003-01-07 | 日本電気株式会社 | 遅延揺らぎ吸収装置及び吸収方法 |
JP4510251B2 (ja) * | 2000-08-10 | 2010-07-21 | 富士通株式会社 | パケットゆらぎ吸収方法及びその装置 |
-
2003
- 2003-04-16 JP JP2003111166A patent/JP3874112B2/ja not_active Expired - Fee Related
- 2003-05-05 US US10/428,986 patent/US20030210681A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20030210681A1 (en) | 2003-11-13 |
JP2004048680A (ja) | 2004-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3874112B2 (ja) | 揺らぎ吸収バッファの制御方法および制御装置 | |
KR100501324B1 (ko) | 음성 품질 예측값을 이용한 보이스 오버 인터넷프로토콜에서의 콜 라우팅 방법 | |
US6977942B2 (en) | Method and a device for timing the processing of data packets | |
US8842534B2 (en) | Method and system for managing time-sensitive packetized data streams at a receiver | |
JP5174182B2 (ja) | 再生遅延推定 | |
US8160030B2 (en) | Data rate controller | |
JP2005269632A (ja) | 通信端末装置、電話データ受信方法、通信システムおよびゲートウェイ | |
US20050180405A1 (en) | Sub-packet insertion for packet loss compensation in voice over IP networks | |
JP4744444B2 (ja) | ストリームデータ受信再生装置、通信システムおよびストリームデータ受信再生方法 | |
US6456967B1 (en) | Method for assembling a voice data frame | |
US7346005B1 (en) | Adaptive playout of digital packet audio with packet format independent jitter removal | |
US7058568B1 (en) | Voice quality improvement for voip connections on low loss network | |
JP2002077245A (ja) | Ipゲートウェイ装置 | |
US7295547B2 (en) | Audio gateway device | |
US7542465B2 (en) | Optimization of decoder instance memory consumed by the jitter control module | |
JP4232030B2 (ja) | 音声パケットの揺らぎ吸収制御方法 | |
US20050169245A1 (en) | Arrangement and a method for handling an audio signal | |
JP2005080036A (ja) | ストリーミング情報の送信装置および送信方法 | |
JP2005252429A (ja) | Ipパケット化装置 | |
JP2005269134A (ja) | 構内交換機 | |
JP2005266411A (ja) | 音声圧縮方法および電話器 | |
US7839893B2 (en) | Voice data transmitting and receiving system | |
US6526108B1 (en) | Method for buffering the jitter processing of vocoder | |
GB2356537A (en) | Silence suppression/insertion buffer management | |
JP2008167223A (ja) | 通信品質制御方法及びパケット通信システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20040621 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20040621 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041001 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060407 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060707 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060901 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061004 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061017 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3874112 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101102 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111102 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121102 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131102 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |