(57)【要約】【課題】サーバ装置でのバッファ制御により、異なる送信周期で送信されたパケットがネットワークを経由することにより生じる「ゆらぎ」を改善できるようにする。【解決手段】第１のパケット通信装置から第１送信周期で送信された第１種のパケットと前記第１送信周期よりも長い第２送信周期で送信された第２種のパケットとをネットワーク１経由で受信しうる受信手段３１と、この受信手段３１で受信したパケットを蓄積するバッファメモリ３２１と、前記第２種のパケットの受信を検出する検出手段３２２ｂと、バッファメモリ３２１に蓄積されたパケットを周期的に出力する一方、検出手段３２２ｂで前記第２種のパケットの受信が検出されると、前回のパケット受信から当該第２種のパケットの受信までの期間に応じて、当該第２種のパケットについてのバッファメモリ３２１からの出力を遅延させる制御手段３２２とをそなえるように構成する。【選択図】図２
2007241030.tif 000002
【特許請求の範囲】
【請求項１】
第１のパケット通信装置から第１送信周期で送信された第１種のパケットと前記第１送信周期よりも長い第２送信周期で送信された第２種のパケットとをネットワーク経由で受信しうる受信手段と、
該受信手段で受信したパケットを蓄積するバッファメモリと、
前記第２種のパケットの受信を検出する検出手段と、
該バッファメモリに蓄積されたパケットを周期的に出力する一方、該検出手段で前記第２種のパケットの受信が検出されると、前回のパケット受信から当該第２種のパケットの受信までの期間に応じて、当該第２種のパケットについての該バッファメモリからの出力を遅延させる制御手段とをそなえたことを特徴とする、サーバ装置。
【請求項２】
該制御手段が、
該バッファメモリに対して、前記期間に応じた数の空パケットを蓄積してから前記第２種のパケットを蓄積させる空パケット蓄積処理部と、
該バッファメモリから前記空パケットを出力する周期で当該空パケットを破棄して前記遅延を行なう空パケット破棄処理部とをそなえて構成されたことを特徴とする、請求項１記載のサーバ装置。
【請求項３】
該空パケット蓄積処理部が、
前記期間においてパケットを受信しなかった前記第１送信周期の回数だけ前記空パケットを生成して該バッファメモリに蓄積すべく構成されたことを特徴とする、請求項２記載のサーバ装置。
【請求項４】
該検出手段が、
受信パケットに付与されたタイムスタンプ値を監視することにより、前記第２種のパケットを検出するタイムスタンプ監視部をそなえて構成されたことを特徴とする、請求項１〜３のいずれか１項に記載のサーバ装置。
【請求項５】
前記第１種のパケットが音声データを格納した有音パケットであり、前記第２種のパケットが無音状態を示すパケットであることを特徴とする、請求項１〜４のいずれか１項に記載のサーバ装置。
【請求項６】
前記無音状態を示すパケットがＳＩＤ（Silence Insertion Descriptor）パケットであることを特徴とする、請求項５記載のサーバ装置。
【請求項７】
第１のパケット通信装置から第１送信周期で送信された第１種のパケットと前記第１送信周期よりも長い第２送信周期で送信された第２種のパケットとをネットワーク経由で受信しうるサーバ装置において、
受信したパケットをバッファメモリに蓄積する蓄積ステップと、
前記第２種のパケットの受信を検出する検出ステップと、
該バッファメモリに蓄積されたパケットを周期的に出力する一方、該検出ステップで前記第２種のパケットの受信が検出されると、前回のパケット受信から当該第２種のパケットの受信までの期間に応じて、当該第２種のパケットについての該バッファメモリからの出力を遅延させる制御ステップとを有することを特徴とする、サーバ装置におけるバッファ制御方法。
【請求項８】
該制御ステップが、
該バッファメモリに対して、前記期間に応じた数の空パケットを蓄積してから前記第２種のパケットを蓄積させる空パケット蓄積ステップと、
該バッファメモリから前記空パケットを出力する周期で当該空パケットを破棄して前記遅延を行なう空パケット破棄ステップとを含むことを特徴とする、請求項７記載のサーバ装置におけるバッファ制御方法。
【請求項９】
該空パケット蓄積ステップにおいて、
前記期間においてパケットを受信しなかった前記第１送信周期の回数だけ前記空パケットを生成して該バッファメモリに蓄積することを特徴とする、請求項８記載のサーバ装置におけるバッファ制御方法。
【請求項１０】
該検出ステップが、
受信パケットに付与されたタイムスタンプ値を監視することにより、前記第２種のパケットを検出するタイムスタンプ監視ステップを含むことを特徴とする、請求項７〜９のいずれか１項に記載のサーバ装置におけるバッファ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ装置及び同装置におけるバッファ制御方法に関し、例えば、パケットデータを利用した音声通信等のリアルタイム性が重視される通信サービスに用いて好適な技術に関する。
【背景技術】
【０００２】
パケット通信ネットワークでは、後記特許文献１においても記述されているように、送信遅延時間がパケットデータの送信ごとに変化し、データ全体の通信に「ゆらぎ」を生じる。そのため、音声会話などのリアルタイム性が重視される通信においては、受信したパケットデータ（以下、単に「パケット」と称する）をリアルタイムに再生しようとすると、送信遅延が大きいパケットを受信した場合に音声再生が途切れてしまうことになる。
【０００３】
そこで、パケットを利用した音声通信では、受信側の端末において、受信パケットをバッファに蓄積し、蓄積したパケットを順に取り出して再生することで、パケットの送信遅延ゆらぎを吸収し、出力音声の途切れを抑制することが行なわれる。なお、「バッファ」とは、一般的には、複数の機器やソフトウェアの間でデータをやり取りするときに、処理速度や転送速度の差を補う（速度吸収）ためにデータを一時的に保存しておく記憶装置や記憶領域のことを意味し、プリンタバッファ、ＣＤプレイヤ内バッファなどが知られている。
【０００４】
ここで、バッファ制御方式には、静的バッファ制御方式と動的バッファ制御方式とが知られている。前者は、受信データ量によらずバッファの蓄積量が一定の方式であり、後者は、受信データ量に応じてバッファの蓄積量が動的に変化する方式である。
一般に、パケット通信におけるパケットゆらぎに対しては、後者の動的バッファ制御を行なう方が適しており、パケット廃棄の確率を少なくすることができる。例えば、パケットの流れを「川」、バッファを「ダム」と考えて説明すると、図１０の（１）に示すように、上流から常に一定量が定期的にダムに流入してくる場合は、静的ダムで下流に一定量を流す（一定の送信周期でパケットを出力する）ことが可能であるが、図１０の（２）に示すように、平均流量に対し、ゆらぎが大きい場合は、動的ダムでないとダムで洪水（パケットあふれ＝パケット破棄）が発生することになる。
【０００５】
そのため、パケットによる音声通信等のリアルタイム通信に対しては、受信側の携帯電話等の通信機器において、動的バッファ制御を行なっている。ただし、現行の動的バッファ制御は、平均流量が一定、即ち、図１１に模式的に示すように、音声パケットが発信側の通信機器から周期的（２０ｍｓ、４０ｍｓ、６０ｍｓ等）に送信される前提で、誰かが会話を行なっている場合には、「有音パケット」が流れ、誰も会話をしていない場合でも「無音パケット」が流れることを前提として、パケットゆらぎに対応する仕様となっている。
【０００６】
以下、現行の動的バッファ制御方式の概要について説明する。
現行の動的バッファ制御方式では、例えば図１２（Ａ）及び図１２（Ｂ）に示すように、
(1)物理的な蓄積バッファの最大値、
(2)論理的なバッファ量の上限値（この値を超えるとオーバーフローの発生）、
(3)初期蓄積量（この量を超えるとパケットを送信する）、
(4)定常遅延の閾値（この値を超えると現在の蓄積状態を改善する必要があることを示す閾値）、
(5)定常遅延の監視周期
の５種類の設定パラメータが用意され、(1)物理的な蓄積バッファの最大値は１０〜２００パケットの範囲（デフォルト値は５０パケット）、(2)論理的なバッファ量の上限値は１０〜２００パケットの範囲（デフォルト値は２０パケット）、(3)初期蓄積量は５〜５０パケットの範囲（デフォルト値は５パケット）、(4)定常遅延の閾値は５〜１００パケットの範囲（デフォルト値は１２パケット）、(5)定常遅延の監視周期は３０〜６００秒の範囲（デフォルト値は３００秒）でそれぞれ設定可能となっている。
【０００７】
そして、現行の動的バッファ制御方式（後記特許文献１の技術）では、基本的に、パケットがバースト的に受信されオーバーフローが発生しやすい傾向にある場合には、バッファ長（「論理的なバッファ量の上限値」、「初期蓄積量」）を増やし、長時間データが蓄積した状態（蓄積可能なパケット量が多いためになかなかパケットが出力されず遅延が大きくなっている状態）になっていれば、当該遅延を解消してリアルタイム性を担保すべく、バッファ長（「論理的なバッファ量の上限値」、「初期蓄積量」）を減らす制御を新たなパケット蓄積よりも優先して行なうようになっている。
【０００８】
例えば図１４（Ａ）に示すように、過去にオーバーフローが発生したことがあり、かつ、アンダーフローが発生した場合には、アンダーフローの発生後に、一度に大量のパケットが受信されて、オーバーフローが発生してしまうことを回避するために、「論理的なバッファ量の上限値」を増加（＋１）する制御を行なう（その後に、「オーバーフロー経験あり」→「経験なし」にフラグをリセットする）一方、図１４（Ｂ）に示すように、過去にオーバーフローが未発生であり、かつ、アンダーフローが発生した場合には、パケットゆらぎが大きいケースと判断されるため、「初期蓄積量」を増加（＋１）して、ゆらぎ耐性を高める制御を行なう。
【０００９】
これに対して、例えば図１５に模式的に示すように、バッファ量の推移を監視している時に、「定常遅延の閾値」を超えるデータが蓄積していた場合、遅延の原因となる無駄なデータが存在していることを意味するため、このデータを破棄することで、遅延の削減を実現する。また、同時に無駄なデータが蓄積した原因となった「論理的なバッファ量の上限値」、「初期蓄積量」の両方を減少（−１）することによって、今後無駄なパケットが蓄積されにくくする。即ち、前記の「定常遅延の監視周期」で「定常遅延の閾値」を超えるケースが発生した場合、「論理的なバッファ量の上限値」、「初期蓄積量」の両方を−１する。
【００１０】
なお、現行の動的バッファ制御方式において、オーバーフローが発生した場合の処理方式には、例えば図１３（Ａ）に示す処理方式１と、図１３（Ｂ）に示す処理方式２とが知られている。即ち、処理方式１では、オーバーフローが発生すると、「初期蓄積量」に戻るまで、新たに受信したパケットは破棄する制御が行なわれ、処理方式２では、「論理的なバッファ量の上限値」を少しでも下回った時点で、新たに受信したパケットを蓄積する制御が行なわれる。一方、アンダーフローが発生した場合には、例えば、「初期蓄積量」に戻るまで、新たに受信したパケットを蓄積する制御が行なわれる。
【特許文献１】特開２００５−１３６７４２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した動的バッファ制御方式は、パケットが会話の有無（実際の音声データの有無）によらず等間隔で端末から発信されるケースを前提としており、例えば、音声データについてＡＭＲ（Advanced Multi Rate）コーデックを採用した端末において、図１６に模式的に示すように、会話があるときの音声（有音）パケットは周期的（２０ｍｓ、４０ｍｓ、６０ｍｓ等）に送信されるのに対し、会話がない場合はＳＩＤ（Silence Insertion Descriptor）パケットと呼ばれる、無音状態を示すパケットが有音パケットよりも長い周期（例えば、１２０ｍｓもしくは１８０ｍｓ周期）で送信されるような、受信パケット量が一定でないケースを考慮していない。なお、ＳＩＤとは、入力音声が無音の場合、擬似背景雑音を生成するために符号器から復号器に対して伝送される情報であり、無音の始まりや、背景雑音が大きく変化した場合にスペクトル形状とエネルギ（雑音の電力）に関する情報を伝送するために用いられる。
【００１２】
そのため、このようなケース（端末から不等間隔でパケットが送信されるようなケース）で、上述した現行の動的バッファ制御方式をそのまま適用すると、ＳＩＤパケットが連続して繰り返し送信されるような状況（無音期間が長い状況）があると、かなりの確率でアンダーフローが発生するため、「初期蓄積量」が増える方向となる。その結果、「初期蓄積量」分のパケットが蓄積されるまで、パケットが出力されない（つまり、音声遅延発生）現象が生じてしまい、パケットゆらぎが更にひどくなる現象が発生する。
【００１３】
かかる現象を図１７に示すタイムチャートを参照しながら説明する。なお、ここでは、「初期蓄積量」＝５と仮定する。
図１７の（１）及び（４）の段に示すように、発信側の端末から１８０ｍｓ周期でパケット（パケット番号＝０〜１２）が送信され、それぞれが時刻Ｔ０〜Ｔ１２において受信側機器に到着したとすると、当該受信側機器では、図１７の（２）の段に示すように、時刻Ｔ０，Ｔ１，Ｔ２，Ｔ３において、それぞれ、受信パケット（パケット番号＝０，１，２，３）が順にバッファメモリに蓄積されてゆき、時刻Ｔ４において、受信パケット（パケット番号＝４）が蓄積された時点で、「初期蓄積量」である５パケットが蓄積され、パケット蓄積とパケット出力との双方を実施するモードに遷移する。
【００１４】
これにより、図１７の（３）の段に示すように、受信側機器は、規定の送信周期（６０ｍｓ周期）（時刻Ｔ４１，Ｔ４２，Ｔ５）で、１パケットずつをバッファメモリから読み出して出力する。また、時刻Ｔ５では、新たにパケット（パケット番号＝５）を受信しているので、当該パケットのバッファメモリへの蓄積も行なう。その後も、受信側機器は、送信周期Ｔ５１，Ｔ５２，Ｔ６で、１パケットずつを読み出して出力するとともに、時刻Ｔ６で受信したパケット（パケット番号＝６）のパケットをバッファメモリに蓄積する。
【００１５】
ここで、次の送信周期Ｔ６１で、当該パケット番号＝６のパケットがバッファメモリから読み出されて出力されるが、この時点で蓄積パケット数が０となるので、次の送信周期Ｔ６２では、アンダーフローが発生することになる。すると、受信側通信機器は、「初期蓄積量」を増加（＋１）し、受信パケットの蓄積のみを行なうモードに遷移する。
その結果、時刻Ｔ７，Ｔ８，Ｔ９，Ｔ１０，Ｔ１１，Ｔ１２において、それぞれ、受信パケット（パケット番号＝７，８，９，１０，１１，１２）がバッファメモリに順に蓄積されてゆくが、＋１された「初期蓄積量」＝６のパケットが蓄積されるまで、即ち、時刻Ｔ１２になるまで、受信側機器は、パケット出力可能なモードに遷移せず、最大で１１４０ｍｓもの期間、パケットが出力されないことになる。
【００１６】
このため、発信側の端末から１８０ｍｓ周期で定期的にパケットを送信している状態でも、現行の動的バッファ制御では、受信側機器ではパケット有り区間、パケット無し区間がはっきり分かれてしまい、大きなパケットゆらぎが発生してしまう。
本発明は、このような課題に鑑み創案されたもので、サーバ装置でのバッファ制御により、異なる送信周期で送信されたパケットがネットワークを経由することにより生じる「ゆらぎ」を改善できるようにすることを目的とする。
【課題を解決するための手段】
【００１７】
上記の目的を達成するために、本発明では、下記のサーバ装置及び同装置におけるバッファ制御方法を用いることを特徴としている。即ち、
（１）本発明のサーバ装置は、第１のパケット通信装置から第１送信周期で送信された第１種のパケットと前記第１送信周期よりも長い第２送信周期で送信された第２種のパケットとをネットワーク経由で受信しうる受信手段と、該受信手段で受信したパケットを蓄積するバッファメモリと、前記第２種のパケットの受信を検出する検出手段と、該バッファメモリに蓄積されたパケットを周期的に出力する一方、該検出手段で前記第２種のパケットの受信が検出されると、前回のパケット受信から当該第２種のパケットの受信までの期間に応じて、当該第２種のパケットについての該バッファメモリからの出力を遅延させる制御手段とをそなえたことを特徴としている。
【００１８】
（２）ここで、該制御手段は、該バッファメモリに対して、前記期間に応じた数の空パケットを蓄積してから前記第２種のパケットを蓄積させる空パケット蓄積処理部と、該バッファメモリから前記空パケットを出力する周期で当該空パケットを破棄して前記遅延を行なう空パケット破棄処理部とをそなえて構成されていてもよい。
（３）また、該空パケット蓄積処理部は、前記期間においてパケットを受信しなかった前記第１送信周期の回数だけ前記空パケットを生成して該バッファメモリに蓄積すべく構成されてもよい。
【００１９】
（４）さらに、該検出手段は、受信パケットに付与されたタイムスタンプ値を監視することにより、前記第２種のパケットを検出するタイムスタンプ監視部をそなえて構成されていてもよい。
（５）また、前記第１種のパケットは音声データを格納した有音パケットであり、前記第２種のパケットは無音状態を示すパケットであってもよい。
【００２０】
（６）さらに、前記無音状態を示すパケットはＳＩＤ（Silence Insertion Descriptor）パケットであってもよい。
（７）また、本発明のサーバ装置におけるバッファ制御方法は、第１のパケット通信装置から第１送信周期で送信された第１種のパケットと前記第１送信周期よりも長い第２送信周期で送信された第２種のパケットとをネットワーク経由で受信しうるサーバ装置において、受信したパケットをバッファメモリに蓄積する蓄積ステップと、前記第２種のパケットの受信を検出する検出ステップと、該バッファメモリに蓄積されたパケットを周期的に出力する一方、該検出ステップで前記第２種のパケットの受信が検出されると、前回のパケット受信から当該第２種のパケットの受信までの期間に応じて、当該第２種のパケットについての該バッファメモリからの出力を遅延させる制御ステップとを有することを特徴としている。
【００２１】
（８）ここで、該制御ステップは、該バッファメモリに対して、前記期間に応じた数の空パケットを蓄積してから前記第２種のパケットを蓄積させる空パケット蓄積ステップと、該バッファメモリから前記空パケットを出力する周期で当該空パケットを破棄して前記遅延を行なう空パケット破棄ステップとを含んでいてもよい。
（９）また、該空パケット蓄積ステップでは、前記期間においてパケットを受信しなかった前記第１送信周期の回数だけ前記空パケットを生成して該バッファメモリに蓄積してもよい。
【００２２】
(１０)さらに、該検出ステップは、受信パケットに付与されたタイムスタンプ値を監視することにより、前記第２種のパケットを検出するタイムスタンプ監視ステップを含んでいてもよい。
【発明の効果】
【００２３】
上記本発明によれば、第２種のパケットの受信を検出すると、前回のパケット受信から当該第２種のパケットの受信までの期間に応じて、当該第２種のパケットについてのバッファメモリからの出力を遅延させるので、バッファメモリにおける蓄積量が所定の蓄積量に達してパケットの出力を行なえる状態に遷移するまでの時間を短縮することが可能となる。
【００２４】
したがって、第２種のパケットが繰り返し送信されている状態であっても、サーバ装置側の無送信期間を低減することができる。また、バッファメモリのアンダーフローが発生して上記所定の蓄積量が増大制御されても、更新後の蓄積量に達するまでの時間が短縮されるので、サーバ装置の無送信期間を大幅に低減することができ、パケットゆらぎ（例えば、音声遅延）を大幅に改善することが可能となる。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照して、本発明の実施の形態について説明する。
〔Ａ〕一実施形態の説明
図１は本発明の一実施形態に係るパケット通信システムの構成を示すブロック図で、この図１に示すパケット通信システムは、例えば、ＩＰネットワーク１ａと、無線網１ｂと、パケット通信装置としての携帯電話等の携帯端末（端末装置）２とをそなえるとともに、ＩＰネットワーク１ａにサーバ装置（以下、「メディアサーバ」あるいは単に「サーバ」という）３がそなえられており、第１の端末装置（以下、単に「端末」という）２と、第２の端末２とがＩＰネットワーク１ａ（サーバ３）及び無線網１ｂ（以下、ネットワーク１と総称することがある）経由で少なくとも音声によるパケット通信を行なうことができるようになっている。
【００２６】
そして、本例のメディアサーバ３は、ネットワーク１、特に、無線網１ｂを経由することにより生じるパケットの「ゆらぎ」（送信側の端末２からは一定の送信周期でパケットを送信しているがネットワーク１を経由することによりパケット間隔が不等間隔になる現象）を吸収し、パケットを受信する装置（受信側の端末２や他のネットワークとの接続を行なうゲートウェイ装置）での「ゆらぎ」を軽減するためのバッファ制御機能を具備している。
【００２７】
なお、「バッファ」とは、一般に、複数の機器やソフトウェア間でデータをやり取りするときに、処理速度や転送速度の差を補う（速度吸収の）ためにデータを一時的に保存しておく記憶装置や記憶領域を意味し、例えば、プリンタバッファ、ＣＤプレイヤ内バッファ等がある。かかるバッファ制御機能は、通常、端末２等の通信のエンド−エンド側装置にも装備されているが、本例のように、ネットワーク１側でもバッファ制御を行なうことにより、エンド側装置のバッファ制御に必要なメモリサイズの軽減等を図れるようにしている。
【００２８】
そのため、本例のサーバ３は、その要部に着目すると、例えば図２に示すように、データ通信部３１と、バッファ制御部３２と、ミキシング制御部３３とをそなえて構成され、バッファ制御部３２は、さらに、バッファメモリ３２１と、メモリ制御部（書き込み／読み出し制御部）３２２とをそなえて構成される。
ここで、データ通信部（受信手段）３１は、ネットワーク１経由で端末装置２との間でパケット通信を行なうための基本機能（プロトコル変換機能等）を具備するもので、当該ネットワーク１から受信されたパケットはバッファ制御部１２へ渡され、バッファ制御部３２によりゆらぎの吸収されたパケットはミキシング制御部３３経由でネットワーク１へ送信されるようになっている。
【００２９】
なお、本実施形態においては、少なくとも、実際の音声データが格納され端末２から第１の送信周期（２０ｍｓ、４０ｍｓ、６０ｍｓ等）で送信された有音パケット（第１種のパケット）と、当該有音パケットよりも長い第２の送信周期（１２０ｍｓ、１８０ｍｓ等）で端末２から送信された既述のＳＩＤパケット（第２種のパケット）とがサーバ３で受信されることを前提としいている。
【００３０】
また、音声通信等のリアルタイム性が要求される通信には、例えば図８に示すようなパケットフォーマットを有するＲＴＰ（Real-time Transport Protocol）パケットを用いることを前提とする。この図８に示すパケットフォーマットは、ＵＤＰ（User Datagram Protocol）と組み合わせてＲＴＰを使用する場合のフォーマットであり、ＩＰ（Internet Protocol）ヘッダ４ａ，ＵＤＰヘッダ４ｂ及びＲＴＰヘッダ４ｃから成るヘッダ部４と、音声データ等の実際のデータが格納されるＲＴＰペイロード部５とを有しており、リアルタイム情報を運ぶための汎用ヘッダであるＲＴＰヘッダ４ｃには、図９に示すように、ペイロードタイプ（payload type）やシーケンス番号（sequence number）、タイムスタンプ（ＴＳ：timestamp）値等が格納されるようになっている。ＲＴＰペイロード部５は、運ぶフォーマット（例えば、ＭＰＥＧ１，ＭＰＥＧ２，ＭＪＰＥＧ等）毎に別々のＲＦＣ（Request For Comments）として定義されている。
【００３１】
バッファ制御部３２は、データ通信部３１から受信されたパケットを一時的に記憶して周期的に（例えば、端末２側の有音パケットと同じ送信周期で）読み出して出力することにより、受信パケットのゆらぎを吸収する制御を行なうものであり、その構成要素であるバッファメモリ３２１は、データ通信部１３により受信されたパケットを例えば端末２別に一時的に記憶（蓄積）するものであり、メモリ制御部（制御手段）３２２は、当該バッファメモリ（以下、単に「バッファ」ともいう）３２１に対する受信パケットの書き込み及び読み出しを制御するもので、本例では、受信パケットタイムスタンプチェック処理機能部３２２ｂを有するパケット受信／蓄積処理機能部３２２ａと、パケット送信処理機能部３２２ｃとをそなえている。
【００３２】
ここで、パケット受信／蓄積処理機能部（空パケット蓄積処理部）３２２ａは、データ通信部３１からパケットを受信する毎に処理を開始して、バッファメモリ３２１の現蓄積量を監視しながら、当該受信パケットをバッファメモリ３２１に蓄積する一方、バッファメモリ３２１のオーバーフロー発生時には当該受信パケットを破棄するものであるが、本実施形態では、パケットのタイムスタンプを監視して、タイムスタンプの間隔が他よりも大きくなっている（端末２からの送信周期が長い）パケット（ここでは、ＳＩＤパケット）を受信したと認識した場合、その間隔（タイムスタンプ値の差分）に応じた量の空バッファ（空パケット）をバッファメモリ３２１に蓄積してからＳＩＤパケットを蓄積する制御を行なうようになっている。
【００３３】
例えば、発信側の端末２での有音パケット（以下、実パケットともいう）の規定の送信周期（２０ｍｓ、４０ｍｓ、６０ｍｓ等）に対して、無音時にはそれよりも長い送信周期（１２０ｍｓや１８０ｍｓ等）でＳＩＤパケットが送信される場合、当該ＳＩＤパケットには有音パケットよりも間隔（増加幅）の大きいタイムスタンプ値が前記ＲＴＰヘッダ４ｃ（図８及び図９参照）に設定されることになり、パケット受信／蓄積処理機能部３２２ａは、これを認識することにより、当該間隔に応じた数の空パケットを生成して、バッファメモリ３２１に蓄積することになる。
【００３４】
より詳細には、例えば図７に模式的に示すように、端末２が、音声データ（有音）を周期的に（仮に６０ｍｓ周期で）サンプリングし、送信しているものとすると、各パケット（Ｖｘ：ｘ＝１，２，３，…）のタイムスタンプ（ＴＳ）は、６０（ｍｓ）×８，０００（Ｈｚ）÷１，０００（ｍｓ）＝４８０ずつ値が増加することになる。また、無音の場合は、ＳＩＤパケット（Ｓｘ：ｘ＝１，２，３，…）が１２０ｍｓ又は１８０ｍｓ周期で端末２から送信されるため、そのタイムスタンプ値は、９６０又は１４４０ずつ増加することになる。したがって、当該タイムスタンプ値の差を監視することで、有音パケットＶｘかＳＩＤパケットＳｘかを判別（識別）することが可能となり、例えば、ＳＩＤパケットＳｘを受信するまでにパケットを受信しなかったサーバ３側の送信周期の回数（図７では点線６１で示す送信周期２回）分の空パケットをバッファメモリ３２１に蓄積することになるのである。
【００３５】
そのため、受信パケットタイムスタンプチェック処理機能部（検出手段；タイムスタンプ監視部）３２２ｂは、受信パケットのタイムスタンプ値を監視して、前回受信したパケットと今回受信したパケットのタイムスタンプ値の差分を計算し、その差分がデフォルトタイムスタンプ値（前記２０ｍｓ、４０ｍｓ、６０ｍｓ等の規定の送信周期に応じて定まるタイムスタンプ値の間隔）と一致しない場合に、上記ＳＩＤパケットの受信を認識して、前記差分に応じた数の空パケットを生成する機能を具備している。
【００３６】
なお、ＳＩＤパケットのＲＴＰペイロード部５には、自パケットがＳＩＤパケットであることを識別するための識別情報が格納されるので、当該識別情報を検出することにより、ＳＩＤパケットの受信を検出することも可能である。ただし、この場合、ＲＴＰペイロード部５を終端（データ抽出）する必要があるので、ヘッダ部４（ＲＴＰヘッダ４ｃ）に格納されている上記タイムスタンプ値を監視する方が、処理が簡易で高速である。
【００３７】
パケット送信処理機能部（空パケット破棄処理部）３２２ｃは、バッファメモリ３２１に蓄積されたパケット量が所定量（初期蓄積量）に達している状態において、規定の送信周期（２０ｍｓ、４０ｍｓ、６０ｍｓ等）でバッファメモリ３２１に蓄積されたパケットを順次読み出して出力（送信）するものであるが、本例では、ある送信周期で出力すべきパケットが前記空パケットの場合は破棄してその周期では送信を停止する制御を行なうようになっている。これにより、ＳＩＤパケットについては、空パケットの数に応じた期間だけバッファ３２１からの出力が遅延されることになる。なお、本パケット送信処理機能部３２２ｃは、揺らぎによりパケット遅延が発生した後、アンダーフローが発生した場合には、遅延分が短期間に受信されることを考慮して、初期蓄積量を増加（＋１）制御する機能も具備している。
【００３８】
図２に示すミキシング制御部３３は、３者以上の同時通話モードにおいて各端末２宛のパケットをミキシング処理してデータ通信部３１経由で送信するための制御を行なうものである。ただし、通常の２者間の通話モードにおいては当該ミキシング処理は不要となる。
以下、上述のごとく構成された本実施形態のパケット通信システム（サーバ３）の動作について、まず、メモリ制御部３２２の各機能部３２２ａ〜３２２ｃに着目して、図３〜図５に示すフローチャートを参照しながら詳述する。なお、メモリ制御部３２２は、現在の処理状態（モード）として、「蓄積中」、「排出中」、「稼動中」の３状態を管理しており、「蓄積中」はパケットのバッファ３２１への蓄積のみを実施する状態、「排出中」はパケットのバッファ３２１からの排出（読み出し）又は破棄のみを実施する状態、「稼働中」は上記の蓄積と排出（廃棄）の双方を行なっている状態をそれぞれ意味する。
（パケット受信／蓄積処理）
サーバ３は、図３に示すように、パケットを受信する毎に、メモリ制御部３２２（パケット受信／蓄積処理機能部３２２ａ）によるパケット受信／蓄積処理を起動（開始）する（ステップＡ１）。
【００３９】
即ち、パケット受信／蓄積処理機能部３２２ａは、初期状態（設定）を、現状態＝「蓄積中」、デフォルトタイムスタンプ値＝ｘ（ｍｓ）、空バッファ数＝０として（ステップＡ２）、受信パケットタイムスタンプチェック処理機能部３２２ｂにより、受信パケットのタイムスタンプのチェック処理を実行する（ステップＡ３）。
ここで、受信パケットタイムスタンプチェック処理機能部３２２ｂは、図４に示すように、１つ前に受信したパケットのタイムスタンプから今回受信したパケットのタイムスタンプを減算して、タイムスタンプの差分値を計算し（ステップＡ３１）、当該差分値がデフォルトタイムスタンプ値と一致するか否かをチェックする（ステップＡ３２）。
【００４０】
その結果、一致しなければ、ＳＩＤパケットの受信を認識（検出）し〔検出ステップ（タイムスタンプ監視ステップ）〕、計算した上記差分値をデフォルトタイムスタンプ値で除算した値から−１して、空バッファ（パケット）数を求める（ステップＡ３２のＮＯルートからステップＡ３３）。
一方、前記差分値とデフォルトタイムスタンプ値とが一致すれば、受信パケットタイムスタンプチェック処理機能部３２２ｂは、空バッファ数は計算せずに、次の処理（図３のステップＡ４）へ進む（ステップＡ３２のＹＥＳルート）。なお、端末２からのＳＩＤパケットの送信周期が変化しない場合は、前記差分値も一定となるので、必要な空パケット数の計算は行なわずに固定値としてもよい。
【００４１】
かかるタイムスタンプのチェック処理後、パケット受信／蓄積処理機能部３２２ａは、図３に示すように、現状態が「蓄積中」、「排出中」、「稼働中」のいずれであるかをチェックし（ステップＡ４）、「排出中」であれば、上記ステップＡ３でのタイムスタンプチェック処理を再度行ない（ステップＡ４の「排出中」ルート）、「蓄積中」であれば、空バッファ（パケット）が存在するか（計算されているか）をチェックする（ステップＡ４の「蓄積中」ルートからステップＡ５）。
【００４２】
その結果、空パケットが存在すれば、パケット受信／蓄積処理機能部３２２ａは、計算された数の空パケットをバッファメモリ３２１に蓄積した上で（ステップＡ５のＹＥＳルートからステップＡ６）、実パケットをバッファメモリ３２１に蓄積する（ステップＡ７）。一方、空パケットが存在しなければ、パケット受信／蓄積処理機能部３２２ａは、バッファメモリ３２１に空パケットは蓄積せずに実パケットをそのまま蓄積する（ステップＡ５のＮＯルートからステップＡ７）。
【００４３】
次いで、パケット受信／蓄積処理機能部３２２ａは、バッファメモリ３２１の現蓄積量が「初期蓄積量」（＝５）以上か否かをチェックし（ステップＡ８）、「初期蓄積量」以上であれば、現状態を「稼働中」に設定し（ステップＡ８のＹＥＳルートからステップＡ９）、「初期蓄積量」未満であれば、現状態の設定（変更）は行なわずに、再度、受信パケットタイムスタンプチェック処理機能部３２２ｂによる受信パケットのタイムスタンプチェック処理（前記ステップＡ３以降の処理）を実行する（ステップＡ８のＮＯルート）。
【００４４】
ところで、前記のステップＡ４において、現状態が「稼働中」であった場合は、パケット受信／蓄積処理機能部３２２ａは、バッファメモリ３２１の現蓄積量が論理的なバッファ量の上限値以上であるか否かをチェックし（ステップＡ４の「稼動中」ルートからステップＡ１０）、当該上限値未満であれば、さらに、バッファメモリ３２１の現蓄積量が「初期蓄積量」の上限値以下か否かをチェックする（ステップＡ１０のＮＯルートからステップＡ１１）。
【００４５】
その結果、当該上限値以下であれば、パケット受信／蓄積処理機能部３２２ａは、さらに、空パケットが存在するか（前記タイムスタンプチェック処理において計算されているか）否かをチェックし（ステップＡ１１のＹＥＳルートからステップＡ１２）、存在すれば、計算された数の空パケットをバッファメモリ３２１に蓄積した上で〔ステップＡ１２のＹＥＳルートからステップＡ１３；制御ステップ（空パケット蓄積ステップ）〕、実パケットをバッファメモリ３２１に蓄積する（ステップＡ１４）。
【００４６】
一方、空パケットが存在しなければ、パケット受信／蓄積処理機能部３２２ａは、バッファメモリ３２１に空パケットは蓄積せずに実パケットをそのまま蓄積して（ステップＡ１２のＮＯルートからステップＡ１４）、再度、前記タイムスタンプチェック処理（前記ステップＡ３以降の処理）を実行する。
なお、前記ステップＡ１０において、バッファメモリ３２１の現蓄積量が論理的なバッファ量の上限値以上であった場合（ステップＡ１０でＹＥＳの場合）、あるいは、前記ステップＡ１１において、現蓄積量が「初期蓄積量」の上限値を超えている場合（ステップＡ１１でＮＯの場合）は、オーバーフローの発生を意味するので、パケット受信／蓄積処理機能部３２２ａは、現状態を「破棄中」に設定して（ステップＡ１５）、受信パケットを破棄した上で（ステップＡ１６）、再度、前記タイムスタンプチェック処理（前記ステップＡ３以降の処理）を実行する。
（パケット送信処理）
一方、サーバ３は、メモリ制御部３２２のパケット送信処理機能部３２２ｃにより、パケットの送信周期を監視しており、送信周期毎に、図５に示すパケット送信処理を開始する（ステップＡ２１）。
【００４７】
即ち、パケット送信処理機能部３２２ｃは、現状態が「蓄積中」であるか否かをチェックし（ステップＡ２２）、「蓄積中」であれば、次の送信周期まで待機し（ステップＡ２２の「蓄積中」ルート）、それ以外の状態（「破棄中」又は「稼働中」）であれば、バッファメモリ３２１にパケットが蓄積されているか否かをチェックする（ステップＡ２３）。
【００４８】
その結果、バッファメモリ３２１にパケットが蓄積されていれば、パケット送信処理機能部３２２ｃは、次に送信すべきパケット（送信バッファ）が空パケット（空バッファ）か否かをチェックし（ステップＡ２３のＹＥＳルートからステップＡ２４）、空パケットであれば、当該空パケットは破棄（削除）して送信は行なわず〔ステップＡ２４のＹＥＳルートからステップＡ２５；制御ステップ（空パケット破棄ステップ）〕、空パケットでなければ（つまり、実パケット）、当該パケットを送信する（ステップＡ２４のＮＯルートからステップＡ２６）。
【００４９】
次いで、パケット送信処理機能部３２２ｃは、現状態が「排出中」か否かをチェックし（ステップＡ２７）、「排出中」であれば、さらに、バッファメモリ３２１の現蓄積量が「初期蓄積量」の上限値以下か否かをチェックする（ステップＡ２７のＹＥＳルートからステップＡ２８）。その結果、当該上限値以下であれば、現状態を「稼働中」に設定した上で（ステップＡ２９）、次の送信周期まで待機する。
【００５０】
なお、前記ステップＡ２７において現状態が「排出中」でなかった場合（ステップＡ２７でＮＯの場合）、又は、前記ステップＡ２８において、バッファメモリ３２１の現蓄積量が「初期蓄積量」の上限値を超えている場合（ステップＡ２８でＮＯの場合）も、パケット送信処理機能部３２２ｃは次の送信周期まで待機する。
一方、前記のステップＡ２３において、バッファメモリ３２１にパケットが蓄積されていない場合は、アンダーフローの発生を意味するので、パケット送信処理機能部３２２ｃは、現状態を「蓄積中」に設定して（ステップＡ２３のＮＯルートからステップＡ３０）、次の送信周期まで待機する。
【００５１】
以上のようにして、サーバ３は、受信パケットの受信、蓄積、送信の各処理（バッファ制御）を実行する。
（全体動作）
次に、以上のサーバ動作（バッファ制御）を前提として、端末２の送信パケット、サーバ３のバッファ３２１の蓄積状態、サーバ３から送信されるパケットのそれぞれに着目した全体動作について、図６に示すタイムチャートを用いて詳述する。ただし、本例における設定パラメータ（範囲、デフォルト値）は図１２（Ａ）及び図１２（Ｂ）により前述したものに準じるものとし、端末２からの有音パケットの規定の送信周期は６０ｍｓ、端末２からのＳＩＤパケットの送信周期は１８０ｍｓ、サーバ３のパケット送信周期は６０ｍｓとし、バッファ３２１における「初期蓄積量」＝５パケットとする。
【００５２】
ここで、この図６の（１）及び（４）の段において、Ｖｘ（ｘ＝１，２，３，・・・）で示すパケットが端末２からサーバ３へ送信された（サーバ３に到着した）有音パケット、Ｓｘで示すパケットが端末２からサーバ３へ送信された（サーバ３に到着した）ＳＩＤパケットをそれぞれ表し、図６の（３）及び（６）の段において、Ｖｘで示すパケットがサーバ３から端末２あるいはゲートウェイ装置へ送信されるパケットを表している。
【００５３】
即ち、図６の（１）の段に示すように、端末２から６０ｍｓ周期で送信されたパケット（有音パケット）Ｖ１，Ｖ２，Ｖ３が順次サーバ３に到着した後、端末２側が無音状態（会話無しの状態）となり、１８０ｍｓ周期でＳＩＤパケットＳ１，Ｓ２，Ｓ３，Ｓ４が端末２から送信されてこれらが順次サーバ３に到着したとする。また、その後、端末２側が有音状態（会話再開）となり、図６の（１）及び（４）の段に示すように、端末２から６０ｍｓ周期で送信された有音パケットＶ４，Ｖ５，Ｖ６，Ｖ７が順次サーバ３に到着し、その後、再び、端末２側が無音状態となり、端末２からＳＩＤパケットＳ５，Ｓ６が１８０ｍｓ周期で送信され、これらが１８０ｍｓ周期でサーバ３に順次到着した後、端末２側が有音状態となり、端末２から有音パケットＶ８，Ｖ９，Ｖ１０が６０ｍｓ周期で送信され、これらが順次サーバ３に到着したとする。なお、図６の（１）及び（４）の段において、パケットＶ３やＶ６、Ｖ７、Ｖ１０については、遅延発生により本来のタイミングよりも遅れてサーバ３に到着している様子が示されている。
【００５４】
さて、かかるサーバ３でのパケット到着（受信）状況において、サーバ３のバッファ３２１の蓄積状態は、図３〜図５により上述した動作により、図６の（２）及び（５）の段に示すように遷移してゆき、サーバ３から送信されるパケットは、図６の（４）及び（６）の段に示すようになる。
即ち、時刻Ｔ１の時点で、バッファ３２１には４パケット（有音パケット）が既に蓄積されている状態で、有音パケットＶ１がサーバ３で受信されると、当該有音パケットＶ１がメモリ制御部３２２（パケット受信／蓄積処理機能部３２２ａ）によってバッファ３２１に蓄積される（図３のステップＡ７の処理に相当）。その結果、次の送信周期（時刻Ｔ２）では、バッファ３２１には「初期蓄積量」である５パケットが蓄積されていることになるので、サーバ３は「稼働中」状態となり、パケット送信処理機能部３２２ｃにより、その次の送信周期（時刻Ｔ３）でバッファ３２１から最も古く蓄積したパケットが１つ読み出されて送信される（矢印ｔ１参照：図５のステップＡ２６の処理に相当）。また、このとき、時刻Ｔ２において次の有音パケットＶ２が受信されているので、パケット受信／蓄積処理機能部３２２ａは、タイムスタンプ監視部３２２ｂにより、１つ前に受信したパケットＶ１と今回受信したパケットＶ２のタイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するか否かをチェックするが、本例では、５２８０−４８００＝４８０（＝デフォルトタイムスタンプ値）なので、上記パケット送信（排出）とともに受信パケットＶ２をバッファ３２１に蓄積する（図５のステップＡ３２のＹＥＳルートから図３のステップＡ１４に至るルートの処理に相当）。
【００５５】
そして、時刻Ｔ４では、次の送信周期となるので、サーバ３は、パケット送信処理機能部３２２ｃにより、次に古いパケットをバッファ３２１から読み出して送信し（矢印ｔ２参照）、さらに次の送信周期（時刻Ｔ５）で１パケットをバッファ３２１から読み出して送信する（矢印ｔ３参照：いずれも図５のステップＡ２６の処理に相当）。このとき、時刻Ｔ４において次の有音パケットＶ３が受信されているので、パケットＶ２を受信した場合と同様に、１つ前に受信したパケットＶ２と今回受信したパケットＶ３のタイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するか否かをチェックする。本例では、５７６０−５２８０＝４８０（＝デフォルトタイムスタンプ値）なので、上記パケット送信（排出）とともに受信パケットＶ３をバッファ３２１に蓄積する。
【００５６】
その後、次の送信周期（時刻Ｔ６）では、パケット送信処理機能部３２２ｃが、バッファ３２１から前記パケットＶ１を読み出して送信し（矢印ｔ４参照）、さらにその次の送信周期（時刻Ｔ７）において、前記パケットＶ２を読み出して送信する（矢印ｔ５参照：いずれも図５のステップＡ２６の処理に相当）。ここで、当該送信周期（時刻Ｔ７）では、パケットＳ１が受信されているため、タイムスタンプ監視部３２２ｂが、１つ前に受信したパケットＶ３と今回受信したパケットＳ１のタイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するか否かをチェックする。
【００５７】
本例では、７２００−５７６０＝１４４０（≠デフォルトタイムスタンプ値）なので、タイムスタンプ監視部３２２ｂは、当該差分値をデフォルトタイムスタンプ値（４８０）で除算した値（１４４０÷４８０＝３）から−１した数（２）の空パケットを生成し（図４のステップＡ３２のＮＯルートからステップＡ３３に相当する処理）、バッファ３２１に対して、当該２つの空パケットを蓄積してから（矢印４１，４２参照）、受信パケットＳ１を蓄積する（図３のステップＡ１２のＹＥＳルートからステップＡ１３及びＡ１４の処理に相当）。
【００５８】
そして、次の送信周期（時刻Ｔ８）では、パケット送信処理機能部３２２ｃが、バッファ３２１から前記パケットＶ３を読み出して送信し（矢印ｔ６参照）、さらにその次の送信周期（時刻Ｔ９）でバッファ３２１から１パケットを読み出すが、この場合、当該パケットは前記空パケットであるので、当該空パケットを破棄して送信は行なわない（点線矢印ｔ７参照：図５のステップＡ２４のＮＯルートからステップＡ２５の処理に相当）。なお、このとき、バッファ３２１の蓄積量は２（「初期蓄積量」＝５以下）なので、状態は「稼動中」のままである（図５のステップＡ２７及びＡ２８のＹＥＳルートからステップＡ２９の処理に相当）。
【００５９】
さらに、その次の送信周期（時刻Ｔ１０）においても、パケット送信処理機能部３２２ｃが、バッファ３２１から１パケットを読み出すが、当該パケットも空パケットであるので、当該空パケットを破棄して送信は行なわない（点線矢印ｔ８参照：図５のステップＡ２４のＮＯルートからステップＡ２５の処理に相当）。ただし、当該送信周期（時刻Ｔ１０）では、次のパケットＳ２が受信されているので、タイムスタンプ監視部３２２ｂが、１つ前に受信したパケットＳ１と今回受信したパケットＳ２のタイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するか否かをチェックする。本例では、パケットＳ２はパケットＳ１と同じくＳＩＤパケットなので、デフォルトタイムスタンプ値とは一致せず、パケットＳ１の場合と同様に、２つの空パケットがバッファ３２１に蓄積されてから（矢印４３，４４参照）、受信パケットＳ２が蓄積されることになる。
【００６０】
そして、次の送信周期（時刻Ｔ１１）では、パケット送信処理機能部３２２ｃが、バッファ３２１から前記ＳＩＤパケットＳ１を読み出して送信し（矢印ｔ９参照：図５のステップＡ２６の処理に相当）、その後の２回の送信周期（時刻Ｔ１２及びＴ１３）では、受信パケットＳ２の前に蓄積された前記２つの空パケットをバッファ３２１から読み出すことになり、いずれも破棄されて送信は行なわれない（点線矢印ｔ１０及びｔ１１参照）。
【００６１】
ただし、時刻Ｔ１３の送信周期では、次のパケットＳ３が受信されているので、タイムスタンプ監視部３２２ｂが、１つ前に受信したパケットＳ２と今回受信したパケットＳ３のタイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するか否かをチェックするが、この場合も、パケットＳ３はＳＩＤパケットなので、デフォルトタイムスタンプ値とは一致せず、パケットＳ１，Ｓ２の場合と同様に、２つの空パケットがバッファ３２１に蓄積されてから（矢印４５，４６参照）、受信パケットＳ３が蓄積されることになる。
【００６２】
その後、時刻Ｔ１４の送信周期では、パケット送信処理機能部３２２ｃが、バッファ３２１から前記ＳＩＤパケットＳ２を読み出して送信し（矢印ｔ１２参照：図５のステップＡ２６の処理に相当）、その後の２回の送信周期（時刻Ｔ１５及びＴ１６）では、時刻Ｔ１２及び時刻Ｔ１３と同様に、受信パケットＳ３の前に蓄積された前記２つの空パケットをバッファ３２１から読み出すことになり、いずれも破棄されて送信は行なわれない（点線矢印ｔ１３及びｔ１４参照）。
【００６３】
ただし、時刻Ｔ１６の送信周期では、次のパケットＳ４が受信されているので、タイムスタンプ監視部３２２ｂが、１つ前に受信したパケットＳ３と今回受信したパケットＳ４のタイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するか否かをチェックするが、この場合も、パケットＳ４はＳＩＤパケットなので、デフォルトタイムスタンプ値とは一致せず、パケットＳ１〜Ｓ３の場合と同様に、２つの空パケットがバッファ３２１に蓄積されてから（矢印４７，４８参照）、受信パケットＳ４が蓄積されることになる。
【００６４】
そして、次の送信周期（時刻Ｔ１７）において、パケット送信処理機能部３２２ｃにより、バッファ３２１から前記ＳＩＤパケットＳ３が読み出されて送信される（矢印Ｋ参照：図５のステップＡ２６の処理に相当）。この時、新たにパケットＶ４が受信されているので、タイムスタンプ監視部３２２ｂが、１つ前に受信したパケットＳ４と今回受信したパケットＶ４のタイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するか否かをチェックするが、この場合は、パケットＶ４は有音パケットなので、デフォルトタイムスタンプ値（＝４８０）と一致し、当該受信パケットＶ４がバッファ３２１に蓄積されることになる。
【００６５】
その後の時刻Ｔ１８及びＴ１９の送信周期では、それぞれ、パケット送信処理機能部３２２ｃにより、バッファ３２１から１パケットずつ読み出されるが、いずれも、前記ＳＩＤパケットＳ４の蓄積前に蓄積された空パケットであるため、破棄されて送信は行なわれない（点線矢印ｔ１６及びｔ１７）。ただし、時刻Ｔ１８では、新たな有音パケットＶ５が受信されているので、パケットＶ４の場合と同様に、タイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するため、当該受信パケットＶ５がバッファ３２１に蓄積されることになる。
【００６６】
その後は、有音パケットＶ５が時刻Ｔ１９で受信されてから時刻Ｔ２４まで次の有音パケットＶ６が遅延により受信されない（矢印４９参照）ため、サーバ３では、パケット送信処理機能部３２２ｃにより、時刻Ｔ２０，Ｔ２１，Ｔ２２の各送信周期でそれぞれバッファ３２１からＳＩＤパケットＳ４，有音パケットＶ５，Ｖ６が順次読み出されて送信されることになる（矢印ｔ１８，ｔ１９，ｔ２０参照）。
【００６７】
その結果、バッファ３２１の蓄積量が時刻Ｔ２２の時点で０となり、次の送信周期（時刻Ｔ２３）では、アンダーフローが発生することになる。このため、メモリ制御部３２２（パケット送信処理機能部３２２ｃ）は、「初期蓄積量」を＋１（つまり、「初期蓄積量」＝６に更新）して、状態を「蓄積中」に設定することになる（図５のステップＡ２３のＮＯルートからステップＡ３０に相当する処理）。これにより、サーバ３は、バッファ３２１に６パケットが蓄積されるまで（時刻Ｔ２４〜Ｔ３１まで）、バッファ３２１に対して受信パケットＶ６，Ｖ７，Ｓ５，Ｓ６の蓄積のみを行なうことになる。
【００６８】
ただし、受信パケットＳ５及びＳ６については、それぞれ、ＳＩＤパケットであるため、タイムスタンプ値の差分がデフォルトタイムスタンプ値と一致せず、時刻Ｔ２８及び時刻Ｔ３１のそれぞれにおいて、空パケットが２つずつバッファ３２１に蓄積されてから（矢印５０，５１，５２，５３）、ＳＩＤパケットＳ５，Ｓ６が蓄積されることになる。この時点で、バッファ３２１には、「初期蓄積量」＝５を超える８パケットが蓄積されることになるため、サーバ３は、「稼動中」状態となる（図３のステップＡ８のＹＥＳルートからステップＡ９の処理に相当）。
【００６９】
したがって、次の送信周期（時刻Ｔ３２）では、パケット送信処理機能部３２２ｃが、時刻Ｔ６で蓄積された有音パケットＶ６をバッファ３２１から読み出して送信を行ない（矢印ｔ２１参照）、さらに次の送信周期（時刻Ｔ３３）において、時刻Ｔ２５で蓄積された有音パケットＶ７をバッファ３２１から読み出して送信を行なう（矢印ｔ２２参照）（いずれも、図５のステップＡ２４のＮＯルートからステップＡ２６の処理に相当）。つまり、アンダーフローの発生（時刻Ｔ２３）から有音パケットＶ６の送信（時刻Ｔ３２）までの５４０ｍｓ間がサーバ３の無送信期間となる。
【００７０】
また、時刻Ｔ３３及びＴ３４では、パケットＶ８及びＶ９がそれぞれ受信されているので、サーバ３は、パケット受信／蓄積処理機能部３２２ａ（タイムスタンプ監視部３２２ｂ）によって、それぞれ１つ前に受信したパケットＳ６，Ｖ８と今回受信したパケットＶ８，Ｖ９のタイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するか否かをチェックするが、この場合は、パケットＶ８，Ｖ９はいずれも有音パケットなので、デフォルトタイムスタンプ値（＝４８０）と一致し、当該受信パケットＶ８，Ｖ９がバッファ３２１にそれぞれ蓄積されることになる（図４のステップＡ３２のＹＥＳルート及び図３のステップＡ５のＮＯルートからステップＡ７に至る処理に相当）。
【００７１】
さらに、送信周期Ｔ３４及びＴ３５では、パケット送信処理機能部３２２ｃにより、バッファ３２１から１パケットずつが読み出されるが、いずれも時刻Ｔ２８において蓄積された空パケットなので、破棄されて送信は行なわれない（点線矢印ｔ２３，ｔ２４参照：図５のステップＡ２４のＹＥＳルートからステップＡ２５の処理に相当）。
そして、その後の送信周期Ｔ３６では、パケット送信処理機能部３２２ｃにより、バッファ３２１からさらに１パケット（ＳＩＤパケットＳ５）が読み出されて送信される（矢印ｔ２５参照：図５のステップＡ２６の処理に相当）。同様に、その後の送信周期Ｔ３７及びＴ３８でも、パケット送信処理機能部３２２ｃにより、バッファ３２１から１パケットずつが読み出されるが、いずれも時刻Ｔ３１において蓄積された空パケットなので、破棄されて送信は行なわれない（点線矢印ｔ２６，ｔ２７参照：図５のステップＡ２４のＹＥＳルートからステップＡ２５の処理に相当）。
【００７２】
また、時刻Ｔ３８では、次のパケットＶ１０が受信されているので、サーバ３は、パケット受信／蓄積処理機能部３２２ａ（タイムスタンプ監視部３２２ｂ）によって、それぞれ１つ前に受信したパケットＶ９とのタイムスタンプ値の差分がデフォルトタイムスタンプ値と一致するか否かをチェックするが、この場合は、パケットＶ１０は有音パケットなので、デフォルトタイムスタンプ値（＝４８０）と一致し、当該受信パケットＶ１０がバッファ３２１に蓄積される（図４のステップＡ３２のＹＥＳルート及び図３のステップＡ５のＮＯルートからステップＡ７に至る処理に相当）。
【００７３】
そして、次の送信周期Ｔ３９では、パケット送信処理機能部３２２ｃにより、バッファ３２１からさらに１パケット（ＳＩＤパケットＳ６）が読み出されて送信される（矢印ｔ２５参照：図５のステップＡ２６の処理に相当）。
以上のように、本実施形態のサーバ３（バッファ制御方法）によれば、端末２側での有音パケットＶｘの送信周期よりも長い送信周期のＳＩＤパケットＳｘの受信を検出すると、前回のパケット受信から当該ＳＩＤパケットの受信までの期間に応じた数（量）の空パケット、より詳細には、当該期間においてパケットを受信しなかった送信周期（６０ｍｓ）の回数分の空パケットをバッファ３２１に蓄積し、当該空パケットの送信周期では当該空パケットを破棄することにより当該ＳＩＤパケットのバッファ３２１からの読み出しを遅延させるので、バッファ３２１におけるパケット蓄積量がパケットの読み出し、送信を行なえる状態（モード）に遷移する「初期蓄積量」に達するまでの時間を短縮することが可能となる。
【００７４】
したがって、図６の時刻Ｔ７〜Ｔ１６のように端末２からＳＩＤパケットが繰り返し送信されている状態であっても、サーバ３の無送信期間を１２０ｍｓに低減することができ、また、時刻Ｔ２３のようにアンダーフローが発生して「初期蓄積量」が増加制御（＋１）されても、更新後の「初期蓄積量」に達するまでの時間が短縮されるので、サーバ３の無送信期間を５４０ｍｓに大幅に低減することができ（従来方式では、図１７により前述したように１１４０ｍｓ）、パケットゆらぎ（つまり、音声遅延）を大幅に改善することが可能となる。
【００７５】
なお、本発明は、上述した実施形態に限定されず、本発明の趣旨を逸脱しない範囲で種々変形して実施できることはいうまでもない。
例えば、上述した例では、バッファ３２１に空パケットを蓄積することで、読み出し遅延制御を実現しているが、例えば、空パケットを蓄積する代わりに、前回のパケット受信からＳＩＤパケットの受信までの期間に応じた時間だけ当該ＳＩＤパケットのバッファ３２１からの読み出しタイミングを遅延させることでも、上述した例と同等の作用効果を実現することが可能である。
【００７６】
また、上述した実施形態では、第１種のパケットが有音パケット、第２種のパケットがＳＩＤパケットであることを前提としているが、端末２から異なる送信周期で送信されるパケットであれば、本発明を適用することができ、上記実施形態と同様の作用効果を得ることが可能である。
さらに、上述した実施形態では、オーバーフロー発生時の処理方式として、図１３（Ａ）により前述した処理方式１を前提としているが、勿論、図１３（Ｂ）により前述した処理方式２を採用してもよい。
【００７７】
〔Ｂ〕付記
（付記１）
第１のパケット通信装置から第１送信周期で送信された第１種のパケットと前記第１送信周期よりも長い第２送信周期で送信された第２種のパケットとをネットワーク経由で受信しうる受信手段と、
該受信手段で受信したパケットを蓄積するバッファメモリと、
前記第２種のパケットの受信を検出する検出手段と、
該バッファメモリに蓄積されたパケットを周期的に出力する一方、該検出手段で前記第２種のパケットの受信が検出されると、前回のパケット受信から当該第２種のパケットの受信までの期間に応じて、当該第２種のパケットについての該バッファメモリからの出力を遅延させる制御手段とをそなえたことを特徴とする、サーバ装置。
【００７８】
（付記２）
該制御手段が、
該バッファメモリに対して、前記期間に応じた数の空パケットを蓄積してから前記第２種のパケットを蓄積させる空パケット蓄積処理部と、
該バッファメモリから前記空パケットを出力する周期で当該空パケットを破棄して前記遅延を行なう空パケット破棄処理部とをそなえて構成されたことを特徴とする、付記１記載のサーバ装置。
【００７９】
（付記３）
該空パケット蓄積処理部が、
前記期間においてパケットを受信しなかった前記第１送信周期の回数だけ前記空パケットを生成して該バッファメモリに蓄積すべく構成されたことを特徴とする、付記２記載のサーバ装置。
【００８０】
（付記４）
該検出手段が、
受信パケットに付与されたタイムスタンプ値を監視することにより、前記第２種のパケットを検出するタイムスタンプ監視部をそなえて構成されたことを特徴とする、付記１〜３のいずれか１項に記載のサーバ装置。
【００８１】
（付記５）
前記第１種のパケットが音声データを格納した有音パケットであり、前記第２種のパケットが無音状態を示すパケットであることを特徴とする、付記１〜４のいずれか１項に記載のサーバ装置。
（付記６）
前記無音状態を示すパケットがＳＩＤ（Silence Insertion Descriptor）パケットであることを特徴とする、付記５記載のサーバ装置。
【００８２】
（付記７）
前記第１及び第２のパケット通信装置がそれぞれ携帯端末であることを特徴とする、付記１〜６のいずれか１項に記載のサーバ装置。
（付記８）
前記第１のパケット通信装置が携帯端末であり、前記第２のパケット通信装置が他のネットワークとの接続を行なうゲートウェイ装置であることを特徴とする、付記１〜６のいずれか１項に記載のサーバ装置。
【００８３】
（付記９）
第１のパケット通信装置から第１送信周期で送信された第１種のパケットと前記第１送信周期よりも長い第２送信周期で送信された第２種のパケットとをネットワーク経由で受信しうるサーバ装置において、
受信したパケットをバッファメモリに蓄積する蓄積ステップと、
前記第２種のパケットの受信を検出する検出ステップと、
該バッファメモリに蓄積されたパケットを周期的に出力する一方、該検出ステップで前記第２種のパケットの受信が検出されると、前回のパケット受信から当該第２種のパケットの受信までの期間に応じて、当該第２種のパケットについての該バッファメモリからの読み出しを遅延させる制御ステップとを有することを特徴とする、サーバ装置におけるバッファ制御方法。
【００８４】
（付記１０）
該制御ステップが、
該バッファメモリに対して、前記期間に応じた数の空パケットを蓄積してから前記第２種のパケットを蓄積させる空パケット蓄積ステップと、
該バッファメモリから前記空パケットを出力する周期で当該空パケットを破棄して前記遅延を行なう空パケット破棄ステップとを含むことを特徴とする、付記９記載のサーバ装置におけるバッファ制御方法。
【００８５】
（付記１１）
該空パケット蓄積ステップにおいて、
前記期間においてパケットを受信しなかった前記第１送信周期の回数だけ前記空パケットを生成して該バッファメモリに蓄積することを特徴とする、付記１０記載のサーバ装置におけるバッファ制御方法。
【００８６】
（付記１２）
該検出ステップが、
受信パケットに付与されたタイムスタンプ値を監視することにより、前記第２種のパケットを検出するタイムスタンプ監視ステップを含むことを特徴とする、付記９〜１１のいずれか１項に記載のサーバ装置におけるバッファ制御方法。
【００８７】
（付記１３）
前記第１種のパケットが音声データを格納した有音パケットであり、前記第２種のパケットが無音状態を示すパケットであることを特徴とする、付記９〜１２のいずれか１項に記載のサーバ装置におけるバッファ制御方法。
（付記１４）
前記無音状態を示すパケットがＳＩＤ（Silence Insertion Descriptor）パケットであることを特徴とする、付記１３記載のサーバ装置におけるバッファ制御方法。
【００８８】
（付記１５）
前記第１及び第２のパケット通信装置がそれぞれ携帯端末であることを特徴とする、付記９〜１４のいずれか１項に記載のサーバ装置におけるバッファ制御方法。
（付記１６）
前記第１のパケット通信装置が携帯端末であり、前記第２のパケット通信装置が他のネットワークとの接続を行なうゲートウェイ装置であることを特徴とする、付記９〜１４のいずれか１項に記載のサーバ装置におけるバッファ制御方法。
【産業上の利用可能性】
【００８９】
以上詳述したように、本発明によれば、異なる送信周期でパケットが送信されている場合に、長い送信周期のパケットの受信検出により、当該パケットのバッファメモリからの出力を遅延させて、バッファメモリにおける蓄積量が所定の蓄積量に達してパケットの出力を行なえる状態に遷移するまでの時間を短縮することが可能となるので、サーバ装置の無送信期間を低減して、パケットゆらぎを改善することが可能となる。したがって、本発明は、パケット通信技術分野において極めて有用と考えられる。
【図面の簡単な説明】
【００９０】
【図１】本発明の一実施形態に係るパケット通信システムの構成を示すブロック図である。
【図２】図１に示すサーバの要部構成に着目した機能ブロック図である。
【図３】図１及び図２に示すサーバ（バッファ制御部）の動作（パケット受信／蓄積処理）を説明するためのフローチャートである。
【図４】図１及び図２に示すサーバ（バッファ制御部）の動作（受信パケットタイムスタンプチェック処理）を説明するためのフローチャートである。
【図５】図１及び図２に示すサーバ（バッファ制御部）の動作（パケット送信処理）を説明するためのフローチャートである。
【図６】図１及び図２に示すパケット通信システムの全体動作（バッファ制御方法）を説明するためのタイムチャートである。
【図７】図１及び図２に示すサーバ（バッファ制御部）でのＳＩＤパケット検出（タイムスタンプチェック）処理を説明するための模式図である。
【図８】本実施形態で用いるパケットのフォーマットを示す図である。
【図９】図８に示すＲＴＰヘッダのフォーマットを示す図である。
【図１０】静的バッファ制御方式と動的バッファ制御方式とを説明するための模式図である。
【図１１】音声通信におけるパケットの流れ（送信周期）を説明するための模式図である。
【図１２】（Ａ）及び（Ｂ）はいずれも現行の動的バッファ制御方式で用いられる設定パラメータ（範囲、デフォルト値）を説明するための図である。
【図１３】（Ａ）及び（Ｂ）はそれぞれ現行の動的バッファ制御方式におけるオーバーフロー発生時の処理方式を説明するための模式図である。
【図１４】（Ａ）及び（Ｂ）はそれぞれ現行の動的バッファ制御方式におけるバッファ長拡大処理を説明するための図である。
【図１５】現行の動的バッファ制御方式におけるアンダーフロー発生時の処理方式を説明するための模式図である。
【図１６】現行の動的バッファ制御方式の課題を説明するための模式図である。
【図１７】現行の動的バッファ制御方式の課題を説明するためのタイムチャートである。
【符号の説明】
【００９１】
１  ネットワーク
１ａ  ＩＰネットワーク
１ｂ  無線網
２  端末装置（パケット通信装置）
３  メディアサーバ（サーバ装置）
３１  データ通信部（受信手段）
３２  バッファ制御部
３２１  バッファメモリ
３２２  メモリ制御部（制御手段）
３２２ａ  パケット受信／蓄積処理機能部
３２２ｂ  受信パケットタイムスタンプチェック処理機能部
３２２ｃ  パケット送信処理機能部
３３  ミキシング制御部
【図１】
2007241030.tif 000003
【図２】
2007241030.tif 000004
【図３】
2007241030.tif 000005
【図４】
2007241030.tif 000006
【図５】
2007241030.tif 000007
【図６】
2007241030.tif 000008
【図７】
2007241030.tif 000009
【図８】
2007241030.tif 000010
【図９】
2007241030.tif 000011
【図１０】
2007241030.tif 000012
【図１１】
2007241030.tif 000013
【図１２】
2007241030.tif 000014
【図１３】
2007241030.tif 000015
【図１４】
2007241030.tif 000016
【図１５】
2007241030.tif 000017
【図１６】
2007241030.tif 000018
【図１７】
2007241030.tif 000019