以下、添付する図面を参照して実施例を説明する。図3は、開示の通信システムの第1例の構成図である。通信システム1は、第1パケット送受信装置2と、第2パケット送受信装置3と、第3パケット送受信装置4を備える。第1及び2パケット送受信装置2及び3は、以下に示す他の実施例のように基地局及び無線網制御装置であってよい。また、第1及び2パケット送受信装置2及び3は、以下に示す他の実施例のように移動局及び基地局であってよい。すなわち第1及び2パケット送受信装置2及び3は下位装置及び上位装置という関係にあってよい。第1及び2パケット送受信装置2及び3は、基地局同士又は無線網制御装置同士であってもよい。すなわち、第1及び2パケット送受信装置2及び3は、下位装置及び上位装置という関係でなくともよい。
図4は、図3に示す第1パケット送受信装置2のハードウエア構成図の第1例である。第1パケット送受信装置2は、プロセッサ10と、制御プログラム11を記憶するプログラム記憶部12と、メモリ13と、パケット取得部14と、通信部15と、送信バッファ16と、受信バッファ17を備える。
プロセッサ10は、CPU等のデータプロセッサにより実現され、プログラム記憶部12に格納された制御プログラム11を実行することにより、第1パケット送受信装置2の動作を制御する。プログラム記憶部12は、プロセッサ10により実行されることによりユーザデータを生成するアプリケーションプログラムを格納していてもよい。メモリ13は、制御プログラム11やアプリケーションプログラムの実行に必要なデータを記憶し、またこれらプログラムの実行の際に生成される一時的なデータを記憶する。
パケット取得部14は、第1パケット送受信装置2から第2パケット送受信装置3へ送信されるパケットを取得する。パケット取得部14が取得する各パケットには、パケットの順序を示すシーケンス番号が定められている。シーケンス番号は、各パケット内に埋め込まれていてよい。パケット取得部14は、例えば、他の通信装置からパケットを受信することによりパケットを取得してよい。また、パケット取得部14は、例えば、プロセッサ10により実行されたアプリケーションプログラムにより生成されたユーザデータを、分割したパケットを取得するソフトウエアモジュールであってもよい。
通信部15は、第2パケット送受信装置3との間のデータの送受信を行う。例えば、通信部15は、パケット取得部14が取得したパケットを第2パケット送受信装置3へ送信する。送信バッファ16は、第2パケット送受信装置3へ送信されるデータを通信部15が受け付けるまでの間一時的に保持する。受信バッファ17は、通信部15が第2パケット送受信装置3から受信したデータを一時的に保持する。
図5は、図4に示す第1パケット送受信装置2のブロック図の第1例である。プロセッサ10が、プログラム記憶部12に格納された制御プログラム11を実行することによって、パケット送信部20、送信済みパケット指示情報生成部21及び送信済みパケット指示情報送信部23の機能が実現される。
パケット送信部20は、パケット取得部14が取得したパケットを、第2パケット送受信装置3へ送信する処理を行う。パケット送信部20は、第2パケット送受信装置3へ送信されるパケットを送信バッファ16へ入力し、通信部15は、送信バッファ16へ格納されたパケットを第2パケット送受信装置3へ送信する。
送信済みパケット指示情報生成部21は、パケット取得部14が取得したパケットを入力する。送信済みパケット指示情報生成部21は、パケット取得部14から受信したパケットがパケット送信部20により送信されたものであると見なし、パケット送信部20により送信されたパケットを指示する送信済みパケット指示情報を生成する。送信済みパケット指示情報は、パケット送信部20により送信されたパケットを、送信されたパケットをシーケンス番号によって特定してよい。
例えば、シーケンス番号が昇順により送信順序を定めており、連続するシーケンス番号n、(n+1)、(n+2)…(n+x)をそれぞれ有する一連のパケットを指定する場合を考える。この場合、一連のパケットのシーケンス番号を、各パケットの送信順に並べた一連のシーケンス番号n、(n+1)、(n+2)…(n+x)を送信済みパケット指示情報としてよい。また、一連のパケットのシーケンス番号の範囲を示す情報(n:(n+x))を送信済みパケット指示情報としてよい。
本明細書における説明で使用される送信済みパケット指示情報は、パケット送信部20により送信された各パケットのシーケンス番号を、各パケットの送信順に並べた一連のシーケンス番号を含む、一組のシーケンス番号である。送信済みパケット指示情報生成部21は、パケット取得部14から取得した各パケットから、それぞれのパケットに埋め込まれていたシーケンス番号を取り出す。送信済みパケット指示情報生成部21は、取り出したシーケンス番号をメモリ13に記憶する。
送信済みパケット指示情報生成部21は、各パケットのシーケンス番号を取り出す都度、それまでにメモリ13に記憶されているシーケンス番号の列に追加していくことにより、パケットの送信順に並べた一連のシーケンス番号の列を生成する。送信済みパケット指示情報生成部21は、後述する送信タイミングにおいて、メモリ13に記憶されているシーケンス番号の列を読み出して、シーケンス番号の列を含む送信済みパケット指示情報を送信済みパケット指示情報送信部23へ出力する。
送信済みパケット指示情報送信部23は、送信済みパケット指示情報生成部21から受信した送信済みパケット指示情報を第2パケット送受信装置3へ送信する処理を行う。送信済みパケット指示情報送信部23は、送信済みパケット指示情報を送信バッファ16へ入力し、通信部15は、送信バッファ16へ格納された送信済みパケット指示情報を第2パケット送受信装置3へ送信する。
図6は、図3に示す第2パケット送受信装置3のハードウエア構成図である。第2パケット送受信装置3は、プロセッサ30と、制御プログラム31を記憶するプログラム記憶部32と、メモリ33と、第1通信部34と、第1受信バッファ35と、第1送信バッファ36を備える。また、第2パケット送受信装置3は、第2通信部37と、第2送信バッファ38と、第2受信バッファ39と、並べ替えバッファ40を備える。
プロセッサ30は、CPU等のデータプロセッサにより実現され、プログラム記憶部32に格納された制御プログラム31を実行することにより、第2パケット送受信装置3の動作を制御する。メモリ33は、制御プログラム31等のプログラムの実行に必要なデータを記憶し、またこれらプログラムの実行の際に生成される一時的なデータを記憶する。
第1通信部34は、第1パケット送受信装置2との間のデータの送受信を行う。例えば第1通信部34は、第1パケット送受信装置2が送信したパケットを受信する。また、例えば第1通信部34は、第1パケット送受信装置2が送信した送信済みパケット指示情報を受信する。
第1受信バッファ35は、第1通信部34が第1パケット送受信装置2から受信したデータを一時的に保持する。第1送信バッファ36は、第2パケット送受信装置3から第1パケット送受信装置2へ送信されるデータを第1通信部34が受け付けるまでの間一時的に保持する。
第2通信部37は、第3パケット送受信装置4との間のデータの送受信を行う。例えば第2通信部37は、第1パケット送受信装置2から受信され、以下に述べるプロセッサ30による並べ替え処理によりシーケンス番号順に並び替えられたパケットを、第3パケット送受信装置4へ送信する。第2受信バッファ39は、第2通信部37が第3パケット送受信装置4から受信したデータを一時的に保持する。第2送信バッファ38は、第2パケット送受信装置3から第3パケット送受信装置4へ送信されるデータを第2通信部37が受け付けるまでの間一時的に保持する。
並べ替えバッファ40は、第1パケット送受信装置2から受信されたパケットの並び替え処理の際に、必要に応じて、第1受信バッファ35から受信パケットを退避するために使用されるバッファである。
図7は、図6に示す第2パケット送受信装置3のブロック図の第1例である。プロセッサ30が、プログラム記憶部32に格納された制御プログラム31を実行することによって、パケット受信部50、送信済みパケット指示情報受信部51、並べ替え処理部52、パケット送信部53の機能が実現される。
パケット受信部50は、第1通信部34により受信され第1受信バッファ35に格納された受信パケットの受信処理を行う。送信済みパケット指示情報受信部51は、第1通信部34により受信され第1受信バッファ35に格納された送信済みパケット指示情報の受信処理を行う。
並べ替え処理部52は、第1パケット送受信装置2から受信したパケットを、各パケットのシーケンス番号の順序に並べ替える並べ替え処理を行う。並べ替え処理の際に、並べ替え処理部52は、必要に応じて第1受信バッファ35から読み出されたパケットを、並べ替えバッファ40に退避する。パケット送信部53は、並べ替え処理部52によって並べ替えた順序で、パケットを第3パケット送受信装置4へ送信する処理を行う。パケット送信部53は、第3パケット送受信装置4へ送信されるパケットを第2送信バッファ38へ入力し、第2通信部37は、第2送信バッファ38へ格納されたパケットを第3パケット送受信装置4へ送信する。
図8は、図4に示す第1パケット送受信装置2の動作フローチャートの第1例である。ステップS1においてパケット取得部14は、第1パケット送受信装置2から第2パケット送受信装置3へ送信されるパケットを取得する。取得されるパケットは、他の通信装置から受信したユーザデータを格納するパケットや、プロセッサ10により実行されたアプリケーションプログラムにより生成されたユーザデータを格納するパケットであってよい。
ステップS2において送信済みパケット指示情報生成部21は、ステップS1で取得したパケットに埋め込まれているシーケンス番号を取得する。ステップS3においてパケット送信部20は、ステップS1で取得したパケットを第2パケット送受信装置3へ送信する。
ステップS4において送信済みパケット指示情報生成部21は、ステップS2で取得したシーケンス番号をメモリ13に記憶する。先行して受信したパケットのシーケンス番号が既にメモリ13に記憶されている場合には、送信済みパケット指示情報生成部21は、既にメモリ13に記憶されているシーケンス番号の後へ、新たに記憶するシーケンス番号を追加する。
ステップS5において送信済みパケット指示情報生成部21は、ステップS2で取得したシーケンス番号が、期待シーケンス番号であるか否かを判定する。ここで、パケットを送信する第1パケット送受信装置2の処理において「期待シーケンス番号」とは、未送信パケットのシーケンス番号のうち最も送信順序が早いシーケンス番号である。本実施例では、昇順で送信順序を定めているものとする。この場合「期待シーケンス番号」は、未送信パケットのうちシーケンス番号のうち最も小さいシーケンス番号である。何らかの理由によりシーケンス番号の順序通りにパケットが送信されずに後続のパケットに追い越されたパケットが生じた場合には、このような追い越されたパケットのシーケンス番号のうち最も小さいシーケンス番号となる。
ステップS5の判定においてステップS2で取得したシーケンス番号が期待シーケンス番号でない場合には(ステップS5:N)、プロセッサ10は処理をステップS1に戻す。ステップS1〜S5の処理を繰り返すことにより、送信済みパケット指示情報生成部21は、期待シーケンス番号以降のシーケンス番号を有する送信済みパケットのシーケンス番号の列をメモリ13に蓄積する。
ステップS5の判定においてステップS2で取得したシーケンス番号が期待シーケンス番号である場合には(ステップS5:Y)、ステップS6において送信済みパケット指示情報生成部21は、インデクス変数iの値を、(期待シーケンス番号+1)に設定する。ステップS7及びS8において送信済みパケット指示情報生成部21は、メモリ13に記憶されていない最小の期待シーケンス番号を検索する。すなわちステップS7において送信済みパケット指示情報生成部21は、インデクス変数iの値と等しいシーケンス番号がメモリ13に記憶されているか否かを判定する。インデクス変数iの値と等しいシーケンス番号がメモリ13に記憶されている限り(ステップS7:Y)、送信済みパケット指示情報生成部21は、ステップS8にてインデクス変数iの値を1つ増加してステップS7及びS8を繰り返す。
メモリ13に記憶されていない最小の期待シーケンス番号が見つかったとき(ステップS7:N)、ステップS9において送信済みパケット指示情報生成部21は、期待シーケンス番号から(i−1)までの連続するシーケンス番号を含む送信済みパケット指示情報を生成する。
図9は、送信済みパケット指示情報のフレームフォーマットを示す図である。送信済みパケット指示情報は、ヘッダ部(Header CRC)と、FTフィールドと、Control Frame Typeフィールドと、通知TSN数フィールドと、1つ以上のTSN#0〜TSN#(n-1)フィールドを含む。FTフィールドの値は、このフレームが制御フレームかデータフレームかを示す。Control Frame Typeフィールドの値は、このフレームがシーケンスデータを通知する送信済みパケット指示情報であることを示す。通知TSN数フィールドの値は、送信済みパケット指示情報により通知されるシーケンス番号の合計数を示す。TSN#0〜TSN#(n-1)フィールドには、それぞれシーケンス番号が格納される。送信済みパケット指示情報送信部23は、送信済みパケット指示情報を第2パケット送受信装置3へ送信する。
図8のステップS10において送信済みパケット指示情報生成部21は、メモリ13に記憶されている期待シーケンス番号から(i−1)までの連続するシーケンス番号を消去する。ステップS11において送信済みパケット指示情報生成部21は、期待シーケンス番号の値をインデクス変数iの値に更新する。その後、プロセッサ10は処理をステップS1に戻す。
図10は、図3に示す通信システム1の動作の説明図である。図において、ユーザデータを格納する各パケットは「1」〜「5」の値が囲むマス目として示されており、マス目に囲まれた各値は、それぞれのパケットのシーケンス番号を示す。また、送信済みパケット指示情報は、文字「S」を囲むマス目として示されている。
第1パケット送受信装置2は、参照符号60で指示されるように、シーケンス番号1〜5を有する各パケットを順次取得する(図8のステップS1)。このとき、何らかの理由によって第1パケット送受信装置2によるシーケンス番号2のパケットの取得が遅れ、シーケンス番号5のパケットを受信した後に、シーケンス番号2のパケットを取得した場合を考える。この場合には、シーケンス番号「1」、「3」、「4」、「5」及び「2」の順序で、第2パケット送受信装置3へ送信される(ステップS3)。
ステップS1〜S5のループにおいて、シーケンス番号2のパケットの取得の失敗により期待シーケンス番号の値は「2」となる。このため、第1パケット送受信装置2がシーケンス番号2のパケットを取得するまで、シーケンス番号「3」、「4」及び「5」がメモリ13に蓄積される。
第1パケット送受信装置2がシーケンス番号2のパケットを取得すると(ステップS5:Y)、送信済みパケット指示情報生成部21は、シーケンス番号2〜5を含む送信済みパケット指示情報Sを生成する(ステップS9)。送信済みパケット指示情報Sは、パケットの送信順序にしたがって並べたシーケンス番号2〜5を有していてよい。例えば本例では、送信済みパケット指示情報Sに格納されるシーケンス番号2〜5は、「3」、「4」、「5」、「2」の順序で配置されている。
参照符号61は、送信済みパケット指示情報Sがシーケンス番号「2」のパケットの後に、第2パケット送受信装置3へ送信される様子を示す。
図11は、図6に示す第2パケット送受信装置3による受信処理のフローチャートである。ステップS20において第2パケット送受信装置3の第1通信部34は、第1パケット送受信装置2から送信されたパケット及び/又は送信済みパケット指示情報を受信する。ステップS21において第1通信部34は、ステップS20で受信したデータを、受信した順序で第1受信バッファ35に格納する。第2パケット送受信装置3は、ステップS20及びS21を繰り返すことにより第1パケット送受信装置2から受信したデータを、第1受信バッファ35に格納する。
図7に示す並べ替え処理部52は、第1パケット送受信装置2から受信して第1受信バッファ35に格納されたパケットを、各パケットのシーケンス番号の順序で並べ替えてから、第3パケット送受信装置4へ転送する。図12及び図13は、図6に示す第2パケット送受信装置3による並べ替え処理のフローチャートである。
ステップS30において、並べ替え処理部52は、第1受信バッファ35に格納されている送信済みパケット指示情報があるか否かを判定する。第1受信バッファ35に格納されている送信済みパケット指示情報がない場合(ステップS30:N)、並べ替え処理部52は、処理をステップS37へ移行する(参照符号A)。第1受信バッファ35に格納されている送信済みパケット指示情報がある場合(ステップS30:Y)、並べ替え処理部52は、処理をステップS31へ移行する。
ステップS31において並べ替え処理部52は、第1受信バッファ35から送信済みパケット指示情報を取り出す。ステップS32において並べ替え処理部52は、取り出された送信済みパケット指示情報が示すシーケンス番号に、期待シーケンス番号が含まれるか否かを判定する。
第1パケット送受信装置2からパケットを受信する第2パケット送受信装置3の処理において「期待シーケンス番号」とは、未送信パケットのうち、シーケンス番号が最も小さく、かつ後続のパケットについても未だ並べ替え処理部52による並べ替え処理が行われていないパケットのシーケンス番号である。
送信済みパケット指示情報が示すシーケンス番号に期待シーケンス番号が含まれていない場合(ステップS32:N)、並べ替え処理部52は、処理をステップS37へ移行する(参照符号A)。送信済みパケット指示情報が示すシーケンス番号に期待シーケンス番号が含まれている場合(ステップS32:Y)、並べ替え処理部52は、処理をステップS33へ移行する。
ステップS33においてパケット受信部50は、期待シーケンス番号のパケットを第1受信バッファ35から取り出す。ステップS34においてパケット送信部53は、ステップS33にて取り出されたパケットを第3パケット送受信装置4へ送信する。ステップS35において並べ替え処理部52は、期待シーケンス番号を1つ増加することにより、期待シーケンス番号を更新する。
ステップS36において並べ替え処理部52は、送信済みパケット指示情報が示すシーケンス番号に、更新された期待シーケンス番号が含まれるか否かを判定する。送信済みパケット指示情報が示すシーケンス番号に期待シーケンス番号が含まれている場合(ステップS36:Y)、並べ替え処理部52は処理をステップS33へ戻す。
このため、ステップS35によって1つずつ増加する期待シーケンス番号が、送信済みパケット指示情報に含まれている限り、プロセッサ30はステップS33〜S36を繰り返し実行する。この結果、プロセッサ30は、シーケンス番号の順序に従って、第1受信バッファ35から連続するシーケンス番号のパケットを取り出して、第3パケット送受信装置4へ送信することができる。すなわち、シーケンス番号の順序に従って第1受信バッファ35からパケットを取り出すことにより、並べ替え処理部52は、並べ替えバッファを使用することなく並べ替え処理を行うことができる。
送信済みパケット指示情報が示すシーケンス番号に期待シーケンス番号が含まれていない場合(ステップS36:N)、プロセッサ30は処理をステップS30へ戻す。
ステップS37において並べ替え処理部52は、第1受信バッファ35に受信済みパケットが格納されているか否かを判定する。受信済みパケットがある場合(ステップS37:Y)には並べ替え処理部52は処理をステップS38へ移行する。受信済みパケットがない場合(ステップS37:N)には並べ替え処理部52は処理をステップS44へ移行する。
ステップS38において並べ替え処理部52は、パケット受信部50により第1受信バッファ35から取り出したパケットを、並べ替えバッファ40へコピーすることにより、第1受信バッファ35のパケットを並べ替えバッファ40へ退避する。既に並べ替えバッファ40にパケットが記憶されている場合には、並べ替え処理部52は、既に記憶されているパケットに加えて、新たに記憶するパケットを格納する。
ステップS39において並べ替え処理部52は、ステップS38で並べ替えバッファ40へ退避したパケットのシーケンス番号が、期待シーケンス番号と同じであるか否かを判定する。退避したパケットのシーケンス番号が期待シーケンス番号である場合(ステップS39:Y)には並べ替え処理部52は処理をステップS40へ移行する。
ステップS40において並べ替え処理部52は、並べ替えバッファ40へ格納されているパケットのうち、期待シーケンス番号のパケットを含んだ1つ以上の連続するパケットを第3パケット送受信装置4へ送信する。ステップS41において並べ替え処理部52は、期待シーケンス番号の値を、(S40で送信したパケットのシーケンス番号の最大値+1)へ更新する。
ステップS39の判定にて、退避したパケットのシーケンス番号が期待シーケンス番号でない場合(ステップS39:N)には並べ替え処理部52は処理をステップS42へ移行する。ステップS42において並べ替え処理部52は、並べ替えタイマが起動中か否かを判定する。並べ替えタイマは、例えばプロセッサ30の処理によって実現されるソフトウエアタイマであってよい。並べ替えタイマによる時間測定は、期待シーケンス番号でないシーケンス番号のパケットを空の並べ替えバッファ40に退避した時点で開始する。並べ替えタイマは、並べ替えバッファ40にパケットが退避して所定時間以上経過したときに、並べ替えバッファ40に留まっているパケットを第3パケット送受信装置4へ送信するために使用されるタイマである。
ステップS42の判定にて、並べ替えタイマが起動していない場合(ステップS42:N)には、並べ替え処理部52は処理をステップS43へ移行する。ステップS43にて並べ替え処理部52は、並べ替えタイマを起動し、並べ替えタイマによる時間計測を開始する。その後、並べ替え処理部52は処理をステップS44へ移行する。ステップS42の判定にて、並べ替えタイマが既に起動している場合(ステップS42:Y)には、並べ替え処理部52は処理をステップS44へ移行する。
ステップS44において並べ替え処理部52は、並べ替えタイマが起動中か否かを判定する。並べ替えタイマが起動中でない場合(ステップS44:N)、プロセッサ30は処理をステップS30へ戻す(参照符号B)。並べ替えタイマが起動中である場合(ステップS44:Y)、並べ替え処理部52は処理をステップS45へ移行する。
ステップS45において並べ替え処理部52は、並べ替えタイマにより計測された時間が所定時間を超えたか否か、すなわち並べ替えタイマによる計時がタイムアウトとなったか否かを判定する。並べ替えタイマによる計時がタイムアウトとなったとき(ステップS45:Y)、並べ替え処理部52は処理をステップS46へ移行する。
ステップS46において並べ替え処理部52は、並べ替えバッファ40へ格納されている全てのパケットを第3パケット送受信装置4へ送信する。ステップS47において並べ替え処理部52は、期待シーケンス番号の値を、(S46で送信したパケットのシーケンス番号の最大値+1)へ更新する。ステップS48において並べ替え処理部52は、並べ替えタイマを停止する。その後、プロセッサ30は処理をステップS30へ戻す(参照符号B)。
ステップS45における判定において並べ替えタイマによる計時がタイムアウトとなっていないとき(ステップS45:N)、並べ替え処理部52は処理をステップS49へ移行する。ステップS49において並べ替え処理部52は、並べ替えタイマの計測値を所定の時間ステップ分だけ増加して、計測値を更新する。その後、プロセッサ30は処理をステップS30へ戻す(参照符号B)。
再び図10を参照して、第2パケット送受信装置3による受信処理を説明する。上述の通り、第1パケット送受信装置2は、シーケンス番号「1」、「3」、「4」、「5」、「2」の順序でパケットを送信した後、シーケンス番号2〜5を含む送信済みパケット指示情報Sを送信する。第2パケット送受信装置3の第1受信バッファ35には、受信順、すなわち、シーケンス番号「1」、「3」、「4」、「5」、「2」の順序で並んだパケットが格納され、その後に送信済みパケット指示情報Sが格納される。なお、送信済みパケット指示情報Sに格納されるシーケンス番号2〜5は、「3」、「4」、「5」、「2」の順序で配置されている。
例えば第2パケット送受信装置3が輻輳している場合などのように、第1受信バッファ35にパケットが格納されても、すぐにプロセッサ30がこのパケットの処理を開始できない場合がある。このような場合、シーケンス番号の順序通りにパケットが送信されず、あるパケットの送信順序が後続のパケットの送信順序より遅くなったとしても、このパケットの処理の順番が到来する前に、このパケットの受信が完了することが考えられる。例えば図10において第2パケット送受信装置3の並べ替え処理部52は、シーケンス番号「2」〜「5」の後続するパケットと送信済みパケット指示情報Sを受信してから、シーケンス番号「1」の処理を開始する。
図10は、並べ替えバッファ40が空である状態を示している。このような状態は、図13に示すステップS37以降へ処理が移行せずに並べ替えバッファ40にパケットが退避しない場合に生じる。このとき、第1受信バッファ35から取り出されるパケットのシーケンス番号は期待シーケンス番号と一致しており、並べ替え処理部52は図12に示すステップS30〜S36を繰り返している。したがって、シーケンス番号「1」のパケットの後に、並べ替え処理部52が、送信済みパケット指示情報Sを第1受信バッファ35から取り出した時点では、期待シーケンス番号は「2」である。
並べ替え処理部52は、送信済みパケット指示情報Sにより(図12のステップS31)、期待シーケンス番号「2」、及びそれに続く連続するシーケンス番号「3」〜「5」のパケットが、第1受信バッファ35に格納されていることを知ることができる。このためステップS33〜S36において並べ替え処理部52は、連続するシーケンス番号「2」〜「5」のパケットを、シーケンス番号の順序に従って第1受信バッファ35から取り出すことができる。
並べ替え処理部52は、第1受信バッファ35から取り出した順序にしたがって、パケット送信部53にパケットを送信させる。第2送信バッファ38は、送信順序を待つパケットを格納する。参照符号63に示すように、第2送信バッファ38に格納されている各パケットの順序は、シーケンス番号の順序に従っている。ここで参照符号63に示すマス目は第2送信バッファ38内の格納位置を示している。図中において上位にあるマス目に格納されているデータほど送信順序が早い。
図中において各マス目内に記載されている数字は、格納されているパケットのシーケンス番号を示す。また文字「x」は、先行するパケットが格納されていることを示し、文字「e」は空の格納位置を示し、文字「a」はシーケンス番号「2」〜「5」のパケットの後の利用可能な格納位置を示す。
また参照符号64に示すマス目は、第2パケット送受信装置3から第3パケット送受信装置4へ送信されるパケットのタイムチャートを意味している。図中において右側にあるマス目に格納されているデータほど送信順序が早い。図中においてマス目内に記載されている数字は、パケットのシーケンス番号を示す。文字「x」は、先行するパケットを示し、文字「e」は空のタイムスロットを示し、文字「a」はシーケンス番号「2」〜「5」のパケットの後の利用可能なタイムスロットを示す。なお、図10において使用される表記法は、図29、図31及び図38においても同様に使用される。
ステップS33〜S36において並べ替え処理部52は、並べ替えバッファ40にパケットを退避させずにパケットの並べ替え処理を行う。このとき並べ替え処理部52は、シーケンス番号の順序に従って第1受信バッファ35からパケットを読み出すことができる。すなわち、より古いシーケンス番号のパケットがより若いシーケンス番号のパケットよりも後に受信されても、より古いシーケンス番号のパケットから先に第1受信バッファ35から読み出して送信することができる。
これに対して、並べ替えバッファ40を使用する並べ替え処理の場合には、受信された順序で第1受信バッファ35からパケットを取り出す。このため、シーケンス番号の順序と受信順序が一致しない場合には、より古いシーケンス番号のパケットよりも先に受信された後続パケットを全て並べ替えバッファ40へ退避し終えるまで、これらのパケットの送信処理を遅らせなければならない。
ステップS33〜S36の並べ替え処理は、上述のような並べ替えバッファ40を使用する並べ替え処理において生じるパケットの送信処理の遅れを防止することができる。図10の参照符号66は、シーケンス番号「2」〜「5」のパケットの送信処理の遅れを減らし、利用可能なタイムスロットを増やすことができることを示している。
また、並べ替えバッファ40を使用する並べ替え処理の場合には、期待シーケンス番号のパケットを第1受信バッファ35から取り出したときに、並べ替えバッファ40に退避しておいたパケットを一気に第3パケット送受信装置4へ送信する。このため送信バーストが発生して第3パケット送受信装置4への負担が発生する。第3パケット送受信装置4がシェーピングによるガード手段を有している場合には、送信バーストがデータ欠落の原因となる。このため、並べ替えバッファ40を使用する並べ替え処理は、通信システム1における通信スループットが低下する要因となる。
これに対して、ステップS33〜S36において並べ替え処理部52は、第1受信バッファ35からのパケットの読み出し処理とパケットの送信処理とを交互に行う。このような読み出しと送信とを交互に行う処理は、並べ替え処理が生じない場合の処理と同様であるため、並べ替え処理が生じない場合と比べて各パケットの送信間隔が大きく相違しない。したがって、ステップS33〜S36において行われる並べ替え処理は、送信バーストを防止することができる。図10の参照符号65は、シーケンス番号「1」〜「5」のパケットの送信間隔が保たれ、送信バーストが防止されている様子を示している。
なお、送信済みパケット指示情報内のシーケンス番号がパケットの送信順序で配列されていれば、並べ替え処理部52は、送信済みパケット指示情報により第1受信バッファ35における各パケットの格納順序を決定することができる。この場合、並べ替え処理部52は、各パケットに埋め込まれたシーケンス番号を参照せずに、所望のシーケンス番号のパケットを第1受信バッファ35から取り出すことができる。
並べ替えバッファを使用する並べ替え処理は、例えばユーザデータであるパケットが受信バッファに格納された後に、格納されたパケットを並べ替えバッファへコピーするために、受信装置のプロセッサの処理が増大する。このために、ユーザデータの処理遅延や、受信装置のプロセッサの過負荷によるデータ送信機能の障害の原因になる恐れがある。
本実施例の通信システム1によれば、第2パケット送受信装置3の処理が遅れ、第1受信バッファ35に大量のパケットが蓄積されている場合には、これらのパケットに併せて送信済みパケット指示情報も第1受信バッファ35に蓄積される。したがって、第2パケット送受信装置3は、送信済みパケット指示情報を参照して、第1受信バッファ35からパケットを取り出すときに並べ替え処理を行うことができる。並べ替えバッファの使用によるプロセッサ30の過負荷を防止することができるため、ユーザデータの処理遅延やデータ送信機能の障害といった上記問題を解決できる。
また本実施例の通信システム1によれば、第2パケット送受信装置3から送信されるデータのバーストを防止することができる。このため本実施例は、通信バーストに起因する通信システム1の機能障害の誘発や、シェーピングによるユーザデータの欠落といった問題を解消することができる。
また、HSUPAサービスにおいては、無線リソースの有効活用のために移動局と基地局間の無線通信において送信電力が抑制されることがある。この結果、HARQの再送率が増加し、シーケンス番号の順序と受信順序の不一致が増加して無線網制御装置におけるユーザデータの並べ替え処理の負荷が増加する。本実施例の並べ替え処理は、無線網制御装置におけるユーザデータの並べ替え処理の負荷低減に寄与することができる。
図14は、図4に示す第1パケット送受信装置2の動作フローチャートの第2例である。本実施例による第1パケット送受信装置2は、送信済みパケット指示情報を一定の周期で第2パケット送受信装置3へ送信する。第1パケット送受信装置2は、所定の送信周期の間に、取得したパケットのシーケンス番号を順次メモリ13に蓄積する。周期的な送信時期になる度に、第1パケット送受信装置2は、メモリ13内に蓄積したシーケンス番号を含む送信済みパケット指示情報を第2パケット送受信装置3へ送信する。具体的な処理を、図14を参照して説明する。
ステップS50においてパケット取得部14は、図8に示すステップS1と同様にパケットを取得する。ステップS51において送信済みパケット指示情報生成部21は、ステップS50で取得したパケットに埋め込まれているシーケンス番号を取得する。ステップS52においてパケット送信部20は、ステップS50で取得したパケットを第2パケット送受信装置3へ送信する。ステップS53において送信済みパケット指示情報生成部21は、図8に示すステップS4と同様に、ステップS51で取得したシーケンス番号をメモリ13に記憶する。
ステップS54において送信済みパケット指示情報生成部21は、現時刻が、送信済みパケット指示情報を送信する周期的な送信時期であるか否かを判定する。現時刻が周期的な送信時期でない場合には(ステップS54:N)、プロセッサ10は処理をステップS50へ戻す。所定の周期の間、ステップS50〜S54の処理を繰り返すことにより、送信済みパケット指示情報生成部21は、送信済みパケットのシーケンス番号の列をメモリ13に蓄積する。
現時刻が周期的な送信時期である場合には(ステップS54:Y)、ステップS55において送信済みパケット指示情報生成部21は、メモリ13に記憶されている全てのシーケンス番号を含む送信済みパケット指示情報を生成する。送信済みパケット指示情報送信部23は、送信済みパケット指示情報を第2パケット送受信装置3へ送信する。ステップS56において送信済みパケット指示情報生成部21は、メモリ13に記憶されているシーケンス番号を消去する。その後、プロセッサ10は処理をステップS50に戻す。
本実施例によれば、送信済みパケット指示情報生成部21は、周期的にシーケンス番号を集計するという比較的簡単な処理で送信済みパケット指示情報を作成できる。このため、第1パケット送受信装置2の処理プロセッサ10に大きな負荷をかけずに、本実施例を実現できる。
図15は、図4に示す第1パケット送受信装置2のブロック図の第2例であり、図16は、図6に示す第2パケット送受信装置3のブロック図の第2例である。本実施例では、第1パケット送受信装置2は、第2パケット送受信装置3からの要求に応じて、送信済みパケット指示情報を第2パケット送受信装置3へ送信する。
図15に示す構成要素のうち、図5に示す構成要素と同じ構成要素については同一の参照符号を付す。また、図4に示すプロセッサ10がプログラム記憶部12に格納された制御プログラム11を実行することによって、送信済みパケット指示情報要求信号受信部24の機能が実現される。
図16に示す構成要素のうち、図7に示す構成要素と同じ構成要素については同一の参照符号を付す。また、図6に示すプロセッサ30がプログラム記憶部32に格納された制御プログラム31を実行することによって、送信済みパケット指示情報要求信号送信部54の機能が実現される。
送信済みパケット指示情報要求信号送信部54は、第1パケット送受信装置2に対して送信済みパケット指示情報の送信を要求する送信済みパケット指示情報要求信号を生成し、第1パケット送受信装置2へ送信する処理を行う。例えば、送信済みパケット指示情報要求信号送信部54は、周期的に送信済みパケット指示情報要求信号を第1パケット送受信装置2に送信してよい。
また例えば送信済みパケット指示情報要求信号送信部54は、並べ替え処理部52の指示に従って、送信済みパケット指示情報要求信号を第1パケット送受信装置2に送信してよい。例えば、並べ替え処理部52は、既に受信した送信済みパケット指示情報によって指示されたパケットの処理をプロセッサ30が終了するときに、送信済みパケット指示情報要求信号の送信を送信済みパケット指示情報要求信号送信部54に指示してよい。
図15に示す送信済みパケット指示情報要求信号受信部24は、第2パケット送受信装置3から送信された送信済みパケット指示情報要求信号を受信する。パケット指示情報要求信号受信部24が送信済みパケット指示情報要求信号を受信したとき、送信済みパケット指示情報生成部21及び送信済みパケット指示情報送信部23は、送信済みパケット指示情報の生成及び送信を行う。
図17は、図4に示す第1パケット送受信装置2の動作フローチャートの第3例である。ステップS60においてパケット取得部14は、図8に示すステップS1と同様にパケットを取得する。ステップS61において送信済みパケット指示情報生成部21は、ステップS60で取得したパケットに埋め込まれているシーケンス番号を取得する。ステップS62においてパケット送信部20は、ステップS60で取得したパケットを第2パケット送受信装置3へ送信する。ステップS63において送信済みパケット指示情報生成部21は、図8に示すステップS4と同様に、ステップS61で取得したシーケンス番号をメモリ13に記憶する。
ステップS64において送信済みパケット指示情報生成部21は、送信済みパケット指示情報要求信号受信部24が、送信済みパケット指示情報要求信号を受信したか否かを判定する。送信済みパケット指示情報要求信号が受信されていない場合には(ステップS64:N)、プロセッサ10は処理をステップS60へ戻す。送信済みパケット指示情報要求信号が受信されるまでの間、ステップS60〜S64の処理を繰り返すことにより、送信済みパケット指示情報生成部21は、送信済みパケットのシーケンス番号の列をメモリ13に蓄積する。
送信済みパケット指示情報要求信号が受信された場合には(ステップS64:Y)、ステップS65において送信済みパケット指示情報生成部21は、メモリ13に記憶されている全てのシーケンス番号を含む送信済みパケット指示情報を生成する。送信済みパケット指示情報送信部23は、送信済みパケット指示情報を第2パケット送受信装置3へ送信する。ステップS66において送信済みパケット指示情報生成部21は、メモリ13に記憶されているシーケンス番号を消去する。その後、プロセッサ10は処理をステップS60に戻す。
本実施例によれば、パケットを受信する第2パケット送受信装置3の需要に応じて、送信済みパケット指示情報を送信することができるので、効率的に送信済みパケット指示情報を生成及び送信することが可能となる。
図18は、図4に示す第1パケット送受信装置2の機能ブロック図の第3例である。本実施例では、第1パケット送受信装置2は、欠落パケットの検出後に所定の条件が満たされたときに送信済みパケット指示情報を第2パケット送受信装置3へ送信する。ここで「欠落パケット」とは、シーケンス番号の順序通りに第1パケット送受信装置2から第2パケット送受信装置3へパケットが送信されなかった場合において、後続パケットよりも後に送信されたパケットのことをいう。
図18に示す構成要素のうち、図5に示す構成要素と同じ構成要素については同一の参照符号を付す。また、図4に示すプロセッサ10がプログラム記憶部12に格納された制御プログラム11を実行することによって、欠落パケット検出部25及び送信可否判定部26の機能が実現される。
欠落パケット検出部25は欠落パケットの発生を検出する。例えば欠落パケット検出部25は、メモリ13に格納されたシーケンス番号が不連続であるか否かを判定することにより欠落パケットの発生を検出してよい。送信可否判定部26は、欠落パケット検出部25が欠落パケットを検出した後に、所定の条件が満たされるか否かを判定する。送信可否判定部26が所定の条件が満たされると判定したとき、送信済みパケット指示情報生成部21及び送信済みパケット指示情報送信部23は、送信済みパケット指示情報の生成及び送信を行う。例えば、所定の条件は、欠落パケットの検出から所定時間が経過したことであってよく、又は欠落パケットの検出から所定数のパケットが送信されたことであってよい。
図19は、図4に示す第1パケット送受信装置2の動作フローチャートの第4例である。ステップS70においてパケット取得部14は、図8に示すステップS1と同様にパケットを取得する。ステップS71において送信済みパケット指示情報生成部21は、ステップS70で取得したパケットに埋め込まれているシーケンス番号を取得する。ステップS72においてパケット送信部20は、ステップS70で取得したパケットを第2パケット送受信装置3へ送信する。ステップS73において送信済みパケット指示情報生成部21は、図8に示すステップS4と同様に、ステップS81で取得したシーケンス番号をメモリ13に記憶する。
ステップS74において送信可否判定部26は、パケット欠落フラグの値を参照し、欠落パケットが検出されたことが記憶されている否かを判定する。パケット欠落フラグは、プロセッサ10により参照及び変更可能な変数であり、欠落パケットが発生したことを示す値「T」と欠落パケットが発生していないことを示す値「F」を取りうる。
パケット欠落フラグの値が「T」でない場合には(ステップS74:N)、プロセッサ10は処理をステップS75へ移す。ステップS75において欠落パケット検出部25は、欠落パケットが発生したか否かを検出する。欠落パケットが発生した場合には(ステップS75:Y)、ステップS76において欠落パケット検出部25は、パケット欠落フラグに値「T」を代入する。その後プロセッサ10は、処理をステップS70へ移す。
ステップS75の判定において欠落パケットが発生していない場合には(ステップS75:N)、プロセッサ10は処理をステップS70へ移す。
パケット欠落フラグの値が「T」である場合には(ステップS74:Y)、プロセッサ10は処理をステップS77へ移す。ステップS77において送信可否判定部26は、上述の所定の条件が満たされるか否かを判定する。所定の条件が満たされると送信可否判定部26が判定したとき(ステップS77:Y)、ステップS78において送信済みパケット指示情報生成部21は、メモリ13に記憶されている全てのシーケンス番号を含む送信済みパケット指示情報を生成する。送信済みパケット指示情報送信部23は、送信済みパケット指示情報を第2パケット送受信装置3へ送信する。
ステップS79において送信済みパケット指示情報生成部21は、メモリ13に記憶されているシーケンス番号を消去する。ステップS80において送信可否判定部26は、パケット欠落フラグに値「F」を代入する。その後、プロセッサ10は処理をステップS70に戻す。ステップS77の判定において所定の条件が満たされていないと送信可否判定部26が判定したとき(ステップS77:N)、プロセッサ10は処理をステップS70に戻す。
本実施例によれば、欠落パケットが発生したときに、欠落パケットを送信できたか否かの判定を行わずに送信済みパケット指示情報を送信することができる。このため、第1パケット送受信装置2の処理プロセッサ10の大きな負荷をかけずに、本実施例を実現できる。
図20は、図3に示す第1パケット送受信装置2のハードウエア構成図の第2例である。本実施例において、第1パケット送受信装置2は第2パケット送受信装置3へ送信するパケットの再送制御処理を行う。このため第1パケット送受信装置2は、再送制御部18を備える。第1パケット送受信装置2と第2パケット送受信装置3との間で実行される再送制御は、例えばHARQ制御であってよい。本実施例では、第1パケット送受信装置2は、各パケットが第2パケット送受信装置3へ送信されたか否かの判定を、第2パケット送受信装置3から受信したアクノリッジ信号に基づいて行う。
図21は、図20に示す第1パケット送受信装置2のブロック図である。図4に示すプロセッサ10がプログラム記憶部12に格納された制御プログラム11を実行することによって、ACK取得部27とシーケンス番号取得部28の機能が実現される。
ACK取得部27は、再送制御部18により実施された再送制御によって各パケットについて第2パケット送受信装置3から受信されたアクノリッジ信号を取得する。シーケンス番号取得部28は、各パケットについてACK取得部27が取得したアクノリッジ信号から、そのパケットのシーケンス番号を取得する。
また、図21に示す構成要素のうち、図5に示す構成要素と同じ構成要素については同一の参照符号を付す。但し、送信済みパケット指示情報生成部21は、パケット送信部20により送信されたパケットのシーケンス番号をシーケンス番号取得部28から入力し、入力されたシーケンス番号に従って、パケット送信部20により送信されたパケットを特定する。
図22は、図20に示す第1パケット送受信装置2の動作フローチャートの例である。ステップS90においてパケット取得部14は、図8に示すステップS1と同様にパケットを取得する。ステップS91においてパケット送信部20は、ステップS90で取得したパケットを第2パケット送受信装置3へ送信する。ステップS92において通信部15は、ステップS91で送信したパケットについて、第2パケット送受信装置3からアクノリッジ信号(ACK)又は否定応答信号(NACK)を受信する。
ステップS93においてプロセッサ10は、通信部15がアクノリッジ信号を受信したか否かを判定する。通信部15が否定応答信号を受信したとき(S93:N)、プロセッサ10は処理をステップS91に戻しパケットを再送する。ステップS93の判定において通信部15がアクノリッジ信号を受信したとき(S93:Y)、プロセッサ10は処理をステップS94へ移す。
ステップS94において、ACK取得部27は、受信バッファ17からアクノリッジ信号を取得する。そしてシーケンス番号取得部29は、取得されたアクノリッジ信号から、アクノリッジ信号が返されたパケットのシーケンス番号を取り出す。送信済みパケット指示情報生成部21は、取り出されたシーケンス番号をシーケンス番号取得部28から入力する。
ステップS95において送信済みパケット指示情報生成部21は、図8に示すステップS4と同様に、ステップS94で取得したシーケンス番号をメモリ13に記憶する。ステップS96において送信済みパケット指示情報生成部21は、ステップS94で取得したシーケンス番号が、期待シーケンス番号であるか否かを判定する。ステップS94で取得したシーケンス番号が期待シーケンス番号でない場合には(ステップS96:N)、プロセッサ10は処理をステップS90に戻す。
ステップS94で取得したシーケンス番号が期待シーケンス番号である場合には(ステップS96:Y)、ステップS97において送信済みパケット指示情報生成部21は、インデクス変数iの値を、(期待シーケンス番号+1)に設定する。ステップS98及びS99において送信済みパケット指示情報生成部21は、メモリ13に記憶されていない最小の期待シーケンス番号を検索する。すなわちステップS98において送信済みパケット指示情報生成部21は、インデクス変数iの値と等しいシーケンス番号がメモリ13に記憶されているか否かを判定する。インデクス変数iの値と等しいシーケンス番号がメモリ13に記憶されている限り(ステップS98:Y)、送信済みパケット指示情報生成部21は、ステップS99にてインデクス変数iの値を1つ増加してステップS99及びS98を繰り返す。
メモリ13に記憶されていない最小の期待シーケンス番号が見つかったとき(ステップS98:N)、ステップS100において送信済みパケット指示情報生成部21は、期待シーケンス番号から(i−1)までの連続するシーケンス番号を含む送信済みパケット指示情報を生成する。送信済みパケット指示情報送信部23は、送信済みパケット指示情報を第2パケット送受信装置3へ送信する。
ステップS101において送信済みパケット指示情報生成部21は、メモリ13に記憶されている期待シーケンス番号から(i−1)までの連続するシーケンス番号を消去する。ステップS102において送信済みパケット指示情報生成部21は、期待シーケンス番号の値をインデクス変数iの値に更新する。その後、プロセッサ10は処理をステップS90に戻す。
本実施例によれば、アクノリッジ信号に基づいて判定を行うことにより、第1パケット送受信装置2は、より正確に期待シーケンス番号のパケットを送信したか否かを判定できる。
図23は、開示の通信システムの第2例の構成図である。通信システム100は、移動局(UE)101と、基地局(NodeB)102と、無線網制御装置(RNC)103とxGSN104を含む。ある実施例によれば、通信システム100は、W−CDMA移動通信システムであり、また通信システム100は、移動局101から上位装置へ向かうアップリンクにおいてHSUPAサービスを提供する。以下、図3に示す第1パケット送受信装置2を基地局102に適用し、第2パケット送受信装置3を無線網制御装置103に適用し、第3パケット送受信装置4をxGSN104に適用する実施例を説明する。
図24は、図23に示す移動局101のハードウエア構成図である。基地局101は、プロセッサ110と、制御プログラム111を記憶するプログラム記憶部112と、メモリ113と、無線通信部115と、送信バッファ116と、受信バッファ117と、再送制御部118を備える。
プロセッサ110は、CPU等のデータプロセッサにより実現され、プログラム記憶部112に格納された制御プログラム111を実行することにより、移動局101の動作を制御する。プログラム記憶部112は、プロセッサ110により実行されることによりユーザデータを生成するアプリケーションプログラム119を格納していてもよい。メモリ113は、制御プログラム111やアプリケーションプログラム119の実行に必要なデータを記憶し、またこれらプログラムの実行の際に生成される一時的なデータを記憶する。
移動局101は、アプリケーションプログラム119が生成するユーザデータを、所定の形式を有するフレームに分割してから、基地局102に送信する。例えばフレームはMAC-es PDUであってよい。ユーザデータを伝送する各フレームには、各フレームの順序を示すシーケンス番号が定められている。シーケンス番号は、各フレーム内に埋め込まれていてよい。以下の説明において、ユーザデータを分割したフレームを単に「ユーザデータ」と示すことがある。
無線通信部115は、移動局101の上位装置である基地局102との間の無線通信機能を有する。例えば、無線通信部115は、ユーザデータを基地局102へ送信する。また、無線通信部115は、送信したユーザデータについてのアクノリッジ信号又は否定応答信号を基地局102から受信する。送信バッファ116は、基地局102へ送信されるデータを無線通信部115が受け付けるまでの間一時的に保持する。受信バッファ117は、無線通信部115が基地局102から受信したデータを一時的に保持する。再送制御部118は、無線通信部115による基地局102との間の無線通信の再送制御処理を行う。再送制御部118による再送制御は、例えばHARQ制御であってよい。
図25は、図23に示す基地局102のハードウエア構成図である。基地局102は、プロセッサ120と、制御プログラム121を記憶するプログラム記憶部122と、メモリ123と、無線通信部124と、第1受信バッファ125と、第1送信バッファ126を備える。また、基地局102は、通信部127と、第2送信バッファ128と、第2受信バッファ129と、並べ替えバッファ130と、再送制御部131を備える。
プロセッサ120は、CPU等のデータプロセッサにより実現され、プログラム記憶部122に格納された制御プログラム121を実行することにより、基地局102の動作を制御する。メモリ123は、制御プログラム121等のプログラムの実行に必要なデータを記憶し、またこれらプログラムの実行の際に生成される一時的なデータを記憶する。
無線通信部124は、移動局101との間の無線通信機能を有する。例えば無線通信部124は、移動局101が送信したユーザデータを受信する。また、無線通信部124は、移動局101から受信したユーザデータに関するアクノリッジ信号又は否定応答信号を移動局101へ送信する。第1受信バッファ125は、無線通信部124が移動局101から受信したデータを一時的に保持する。第1送信バッファ126は、基地局102から移動局101へ送信されるデータを無線通信部124が受け付けるまでの間一時的に保持する。
通信部127は、基地局101の上位装置である無線網制御装置103との間のデータ送受信を行う。例えば通信部127は、移動局101から受信したユーザデータを、無線網制御装置103へ送信する。第2受信バッファ129は、通信部127が無線網制御装置103から受信したデータを一時的に保持する。第2送信バッファ128は、基地局102から無線網制御装置103へ送信されるデータを通信部127が受け付けるまでの間一時的に保持する。再送制御部131は、無線通信部124による移動局101との間の無線通信の再送制御処理を行う。並べ替えバッファ130については後述する。
図26は、図25に示す基地局102のブロック図の第1例である。プロセッサ120が、プログラム記憶部122に格納された制御プログラム121を実行することによって、ユーザデータ送信部132、シーケンスデータ生成部133及びシーケンスデータ送信部135の機能が実現される。
ユーザデータ送信部132は、無線通信部124が移動局101から受信したユーザデータを、無線網制御装置103へ送信する処理を行う。ユーザデータ送信部132は、無線網制御装置103へ送信されるパケットを第2送信バッファ128へ入力し、通信部127は、第2送信バッファ128へ格納されたパケットを無線網制御装置103へ送信する。
シーケンスデータ生成部133は、移動局101から受信したユーザデータを入力し、これらユーザデータからシーケンス番号をそれぞれ取得し、これらシーケンス番号を含むシーケンスデータを生成する。シーケンスデータは、ユーザデータ送信部132により送信されるユーザデータを示し、上記の他の実施例における送信済みパケット指示情報の一例に相当する。
例えば、基地局102が、シーケンス番号n1、n2、n3、n4の順で、これらのシーケンス番号のユーザデータを受信したとき、シーケンスデータ生成部133は、受信順でこれらの番号を並べた列n1、n2、n3、n4をシーケンスデータとしてよい。
シーケンスデータ生成部133は、移動局101から受信した各ユーザデータから、埋め込まれていたシーケンス番号を取り出す。シーケンスデータ生成部133は、取り出したシーケンス番号をメモリ123に記憶する。シーケンスデータ生成部133は、各ユーザデータのシーケンス番号を取り出す都度、それまでにメモリ123に記憶されているシーケンス番号の列に追加していくことにより、ユーザデータの受信順に並べた一連のシーケンス番号の列を生成する。シーケンスデータ生成部133は、後述する送信タイミングにおいて、メモリ123に記憶されているシーケンス番号の列を読み出して、シーケンス番号の列を含むシーケンスデータをシーケンスデータ送信部135へ出力する。ここで、ユーザデータ送信部132は移動局101から受信した順序で無線網制御装置103へユーザデータを送信するため、シーケンスデータに含まれるシーケンス番号の順序は、基地局102から無線網制御装置103へのユーザデータの送信順序と同一である。
シーケンスデータ送信部135は、シーケンスデータ生成部133が生成したシーケンスデータを無線網制御装置103へ送信する処理を行う。シーケンスデータ送信部135は、シーケンスデータを第2送信バッファ128へ入力し、通信部127は、第2送信バッファ128へ格納されたシーケンスデータを無線網制御装置103へ送信する。
図27は、図23に示す無線網制御装置103のハードウエア構成図である。無線網制御装置103は、プロセッサ140と、制御プログラム141を記憶するプログラム記憶部142と、メモリ143と、第1通信部144と、第1受信バッファ145と、第1送信バッファ146を備える。また、無線網制御装置103は、第2通信部147と、第2送信バッファ148と、第2受信バッファ149と、並べ替えバッファ150を備える。
プロセッサ140は、CPU等のデータプロセッサにより実現され、プログラム記憶部142に格納された制御プログラム141を実行することにより、無線網制御装置103の動作を制御する。メモリ143は、制御プログラム141等のプログラムの実行に必要なデータを記憶し、またこれらプログラムの実行の際に生成される一時的なデータを記憶する。
第1通信部144は、基地局102との間のデータの送受信を行う。例えば第1通信部144は、基地局102が送信したユーザデータを受信する。また、例えば第1通信部144は、基地局102が送信したシーケンスデータを受信する。第1受信バッファ145は、第1通信部144が基地局102から受信したデータを一時的に保持する。第1送信バッファ146は、無線網制御装置103から基地局102へ送信されるデータを第1通信部144が受け付けるまでの間一時的に保持する。
第2通信部147は、無線網制御装置103の上位装置であるxGSN104との間のデータの送受信を行う。例えば第2通信部147は、移動局101から受信したユーザデータをxGSN104へ送信する。第2受信バッファ149は、第2通信部147がxGSN104から受信したデータを一時的に保持する。第2送信バッファ148は、無線網制御装置103からxGSN104へ送信されるデータを第2通信部147が受け付けるまでの間一時的に保持する。
本実施例において、並べ替えバッファ150は、基地局102から受信されたユーザデータの並び替え処理の際に、必要に応じて、受信したユーザデータを第1受信バッファ145から退避するために使用されるバッファである。
図28は、図27に示す無線網制御装置103のブロック図である。プロセッサ140が、プログラム記憶部142に格納された制御プログラム141を実行することによって、ユーザデータ受信部151、シーケンスデータ受信部152、並べ替え処理部153、ユーザデータ送信部154の機能が実現される。
ユーザデータ受信部151は、第1通信部144により受信され第1受信バッファ145に格納されたユーザデータの受信処理を行う。シーケンスデータ受信部152は、第1通信部144により受信され第1受信バッファ145に格納されたシーケンスデータの受信処理を行う。
並べ替え処理部153は、基地局102から受信したユーザデータを、各ユーザデータのシーケンス番号の順序に並べ替える並べ替え処理を行う。並べ替え処理の際に、並べ替え処理部153は、必要に応じて第1受信バッファ145から読み出されたパケットを、並べ替えバッファ150に退避する。ユーザデータ送信部154は、並べ替え処理部153によって並べ替えた順序で、パケットをxGSN104へ送信する処理を行う。ユーザデータ送信部154は、xGSN104へ送信されるパケットを第2送信バッファ148へ入力し、第2通信部147は、第2送信バッファ148へ格納されたパケットをxGSN104へ送信する。
図29は、並べ替えバッファ150を使用する並べ替え処理の説明図である。参照符号200は、移動局101で動作するアプリケーションプログラム119により生成されたユーザデータを示している。各マス目はデータフレームに分解された各ユーザデータを示し、マス目に囲まれた数字「1」〜「5」はそれぞれのユーザデータのシーケンス番号を示す。
参照符号201及び202は、それぞれ移動局101から基地局102へ、及び基地局102から無線網制御装置103へ送信されるユーザデータを示す。より上方にあるユーザデータほど送信時期が早い。参照符号211に示すとおり、移動局101から基地局102への送信において、シーケンス番号「2」のユーザデータの初回のデータ送信が失敗し、シーケンス番号「2」は再送制御によりシーケンス番号「5」のユーザデータの後に再送されたと仮定する。
このとき基地局102は、参照符号202に示すとおり、シーケンス番号「1」、「3」、「4」、「5」、「2」の順で、無線網制御装置103へユーザデータを送信する。このため、無線網制御装置103の第1受信バッファ145は、受信順に、すなわちシーケンス番号「1」、「3」、「4」、「5」、「2」の順で、ユーザデータを格納する。
無線網制御装置103のプロセッサ140の処理が輻輳すると、ユーザデータが受信バッファ145に格納されても、受信してすぐにユーザデータの処理をプロセッサ140が開始できなくなる。図29において無線網制御装置103の並べ替え処理部153は、シーケンス番号「2」〜「5」の後続のユーザデータの格納が完了してから、シーケンス番号「1」の処理を開始する。第1受信バッファ145、並べ替え処理部153及び並べ替えバッファ150に記載されたユーザデータの上下方向の位置関係は、それぞれの構成要素145、153及び150における処理タイミングを概略的に示す。
並べ替えバッファ150を使用する並べ替え処理の場合、並べ替え処理部153は、受信された順序で第1受信バッファ145からユーザデータを取り出す。このため、並べ替え処理部153は、シーケンス番号の順序と受信順序が一致しない場合には、より古いシーケンス番号のユーザデータよりも先に受信された後続のユーザデータを並べ替えバッファ150へ退避する。
すなわち、図29に示す例では、古いシーケンス番号「2」のユーザデータよりも先に、シーケンス番号「3」〜「5」を有する後続のユーザデータが受信されている。このため並べ替え処理部153は、シーケンス番号「3」〜「5」のユーザデータを並べ替えバッファ150へ退避する。参照符号204は、シーケンス番号「3」〜「5」のユーザデータを含む、シーケンス番号「2」〜「5」のユーザデータが、並べ替えバッファ150へ退避された様子を示している。
第1受信バッファ145からシーケンス番号「2」のユーザデータを取り出し、並べ替えバッファ150へ退避した後、並べ替え処理部52は、シーケンス番号の順序に従って、ユーザデータ送信部154に各ユーザデータを送信させる。第2送信バッファ148は、送信順序を待つユーザデータを格納する。参照符号205に示すように、第2送信バッファ148に格納されている各ユーザデータの順序は、シーケンス番号の順序に従っている。
シーケンス番号「2」のユーザデータを第1受信バッファ145に取り出すまで、並べ替え処理部52は、シーケンス番号「3」〜「5」のユーザデータを並べ替えバッファ150への退避処理を行う。このため、参照符号205に示すように、シーケンス番号「2」〜「5」のユーザデータを送信する処理が遅れる。参照符号206に示すマス目は、無線網制御装置103からxGSNへ送信されるパケットのタイムチャートを意味している。シーケンス番号「2」〜「5」のユーザデータの送信処理の遅れのために、シーケンス番号「1」と「2」のユーザデータの間に、空のタイムスロット「e」(参照符号207)が多く発生する。
シーケンス番号「2」のユーザデータを第1受信バッファ145に取り出した後、並べ替え処理部52は、並べ替えバッファ150に退避しておいたパケットを一気にxGSN104へ送信する。このため送信バーストが発生してxGSN104への負担が発生する。この様子を参照符号208で示す。xGSN104がシェーピングによるガード手段を有している場合には、送信バーストがデータ欠落の原因となる。
図30は、図25に示す基地局102の動作フローチャートである。ステップS110において無線通信部124は、移動局101から送信されたユーザデータを受信し、第1受信バッファ125に格納する。ステップS111においてシーケンスデータ生成部133は、ステップS110で取得したユーザデータに埋め込まれているシーケンス番号を取得する。ステップS132においてユーザデータ送信部132は、ステップS110で取得したユーザデータを無線網制御装置103へ送信する。
ステップS113においてシーケンスデータ生成部133は、ステップS111で取得したシーケンス番号をメモリ123に記憶する。先行して受信したユーザデータのシーケンス番号が既にメモリ123に記憶されている場合には、シーケンスデータ生成部133は、既にメモリ123に記憶されているユーザデータの後へ、新たに記憶するシーケンス番号を追加する。
ステップS114においてシーケンスデータ生成部133は、ステップS111で取得したシーケンス番号が、期待シーケンス番号であるか否かを判定する。ここで、基地局102が無線網制御装置103へユーザデータを送信する処理において「期待シーケンス番号」とは、未送信のユーザデータのシーケンス番号のうち最も送信順序が早いシーケンス番号である。本実施例では、昇順で送信順序を定めているものとする。この場合「期待シーケンス番号」は、未送信パケットのうちシーケンス番号のうち最も小さいシーケンス番号である。
ステップS114の判定においてステップS111で取得したシーケンス番号が期待シーケンス番号でない場合には(ステップS114:N)、プロセッサ120は処理をステップS110に戻す。ステップS110〜S114の処理を繰り返すことにより、シーケンスデータ生成部133は、期待シーケンス番号以降のシーケンス番号を有する送信済みユーザデータの列をメモリ13に蓄積する。
ステップS114の判定においてステップS111で取得したシーケンス番号が期待シーケンス番号である場合には(ステップS114:Y)、ステップS115においてシーケンスデータ生成部133は、インデクス変数iの値を、(期待シーケンス番号+1)に設定する。ステップS116及びS117においてシーケンスデータ生成部133は、メモリ123に記憶されていない最小の期待シーケンス番号を検索する。すなわちステップS116においてシーケンスデータ生成部133は、インデクス変数iの値と等しいシーケンス番号がメモリ123に記憶されているか否かを判定する。インデクス変数iの値と等しいシーケンス番号がメモリ123に記憶されている限り(ステップS116:Y)、シーケンスデータ生成部133は、ステップS117にてインデクス変数iの値を1つ増加してステップS116及びS117を繰り返す。
メモリ123に記憶されていない最小の期待シーケンス番号が見つかったとき(ステップS116:N)、ステップS118においてシーケンスデータ生成部133は、期待シーケンス番号から(i−1)までの連続するシーケンス番号を含むシーケンスデータを生成する。シーケンスデータのフォーマットは、図9を参照して説明したフォーマットと同様でよい。シーケンスデータ送信部135は、シーケンスデータを第2パケット送受信装置3へ送信する。
ステップS119においてシーケンスデータ生成部133は、メモリ123に記憶されている期待シーケンス番号から(i−1)までの連続するシーケンス番号を消去する。ステップS120においてシーケンスデータ生成部133は、期待シーケンス番号の値をインデクス変数iの値に更新する。その後、プロセッサ120は処理をステップS110に戻す。
図31は、図23に示す通信システム1の動作の第1例の説明図である。参照符号210は、移動局101で動作するアプリケーションプログラム119により生成されたユーザデータを示している。各マス目はデータフレームに分解された各ユーザデータを示し、マス目に囲まれた数字「1」〜「5」はそれぞれのユーザデータのシーケンス番号を示す。
参照符号211は、移動局101から基地局102へ送信されるユーザデータを示す。より上方にあるデータほど送信時期が早い。参照符号212は、基地局102から無線網制御装置103へ送信されるユーザデータとシーケンスデータを示す。シーケンスデータは文字「S」を囲むマス目として示されている。
参照符号211に示すとおり、移動局101から基地局102への送信において、シーケンス番号「2」のユーザデータの初回のデータ送信が失敗し、シーケンス番号「2」は再送制御によりシーケンス番号「5」のユーザデータの後に再送されたと仮定する。この場合には、シーケンス番号「1」、「3」、「4」、「5」及び「2」の順序で、無線網制御装置103へ送信される(ステップS112)。
ステップS110〜S114のループにおいて、シーケンス番号2のユーザデータの受信の失敗により期待シーケンス番号の値は「2」となる。このため、基地局102がシーケンス番号2のユーザデータを取得するまで、シーケンス番号「3」、「4」及び「5」がメモリ13に蓄積される。
基地局102がシーケンス番号2のユーザデータを受信すると(ステップS114:Y)、シーケンスデータ生成部133は、シーケンス番号2〜5を含む送信済みシーケンスデータSを生成する(ステップS118)。シーケンスデータSは、基地局102から無線網制御装置103へのユーザデータの送信順序にしたがって並べたシーケンス番号2〜5を有していてよい。例えば本例では、シーケンスデータSに格納されるシーケンス番号2〜5は、「3」、「4」、「5」、「2」の順序で配置されている。
シーケンスデータ送信部135は、シーケンス番号「2」のユーザデータの後に、シーケンスデータSを送信する。参照符号212は、シーケンスデータSがシーケンス番号「2」のユーザデータの後に、無線網制御装置103へ送信される様子を示す。
図32は、図27に示す無線網制御装置103による受信処理のフローチャートである。ステップS130において無線網制御装置103の第1通信部144は、基地局102から送信されたユーザデータ及び/又はシーケンスデータを受信する。ステップS131において第1通信部144は、ステップS130で受信したデータを、受信した順序で第1受信バッファ145に格納する。無線網制御装置103は、ステップS130及びS131を繰り返すことにより基地局102から受信したデータを、第1受信バッファ145に格納する。
図28に示す並べ替え処理部153は、基地局102から受信して第1受信バッファ145に格納されたユーザデータを、各ユーザデータのシーケンス番号の順序で並べ替えてから、xGSN104へ転送する。
図33及び図34は、図27に示す無線網制御装置103による並べ替え処理のフローチャートである。ステップS140において、並べ替え処理部153は、第1受信バッファ145に格納されているシーケンスデータがあるか否かを判定する。第1受信バッファ145に格納されているシーケンスデータがない場合(ステップS140:N)、並べ替え処理部153は、処理をステップS147へ移行する(参照符号A)。第1受信バッファ145に格納されているシーケンスデータがある場合(ステップS140:Y)、並べ替え処理部153は、処理をステップS141へ移行する。
ステップS141において並べ替え処理部153は、第1受信バッファ145からシーケンスデータを取り出す。ステップS142において並べ替え処理部153は、取り出されたシーケンスデータに、期待シーケンス番号が含まれるか否かを判定する。基地局102からユーザデータを受信する無線網制御装置103の処理において「期待シーケンス番号」とは、未送信のユーザデータのうち、シーケンス番号が最も小さく、かつ後続のユーザデータについても未だ並べ替え処理部153による並べ替え処理が行われていないユーザデータのシーケンス番号である。
シーケンスデータに期待シーケンス番号が含まれていない場合(ステップS142:N)、並べ替え処理部153は、処理をステップS147へ移行する(参照符号A)。シーケンスデータに期待シーケンス番号が含まれている場合(ステップS142:Y)、並べ替え処理部153は、処理をステップS143へ移行する。
ステップS143においてユーザデータ受信部151は、期待シーケンス番号のユーザデータを第1受信バッファ145から取り出す。ステップS144においてユーザデータ送信部154は、ステップS143にて取り出されたユーザデータをxGSN104へ送信する。ステップS145において並べ替え処理部153は、期待シーケンス番号を1つ増加することにより、期待シーケンス番号を更新する。
ステップS146において並べ替え処理部153は、シーケンスデータに、更新された期待シーケンス番号が含まれるか否かを判定する。シーケンスデータに期待シーケンス番号が含まれている場合(ステップS146:Y)、並べ替え処理部153は処理をステップS143へ戻す。
このため、ステップS145によって1つずつ増加する期待シーケンス番号が、ステップS141で取り出されたシーケンスデータに含まれている限り、プロセッサ140はステップS143〜S146を繰り返し実行する。この結果、プロセッサ140は、シーケンス番号の順序に従って、第1受信バッファ145から連続するシーケンス番号のユーザデータを取り出して、xGSN104へ送信することができる。すなわち、シーケンス番号の順序に従って第1受信バッファ145からシーケンスデータを取り出すことにより、並べ替え処理部153は、並べ替えバッファを使用することなく並べ替え処理を行うことができる。
シーケンスデータに期待シーケンス番号が含まれていない場合(ステップS146:N)、プロセッサ140は処理をステップS140へ戻す。
ステップS147において並べ替え処理部153は、第1受信バッファ145に受信済みユーザデータが格納されているか否かを判定する。受信済みユーザデータがある場合(ステップS147:Y)には並べ替え処理部153は処理をステップS148へ移行する。受信済みユーザデータがない場合(ステップS147:N)には並べ替え処理部153は処理をステップS154へ移行する。
ステップS148において並べ替え処理部153は、ユーザデータ受信部151により第1受信バッファ145から取り出したユーザデータを、並べ替えバッファ150へコピーすることにより、第1受信バッファ145のユーザデータを並べ替えバッファ150へ退避する。既に並べ替えバッファ150にユーザデータが記憶されている場合には、並べ替え処理部153は、既に記憶されているユーザデータに加えて、新たに記憶するユーザデータを格納する。
ステップS149において並べ替え処理部153は、ステップS148で並べ替えバッファ150へ退避したユーザデータのシーケンス番号が、期待シーケンス番号と同じであるか否かを判定する。退避したユーザデータのシーケンス番号が期待シーケンス番号である場合(ステップS149:Y)には並べ替え処理部153は処理をステップS150へ移行する。
ステップS150において並べ替え処理部153は、並べ替えバッファ150へ格納されているユーザデータのうち、期待シーケンス番号のユーザデータを含んだ1つ以上の連続するユーザデータをxGSN104へ送信する。ステップS151において並べ替え処理部153は、期待シーケンス番号の値を、(S150で送信したユーザデータのシーケンス番号の最大値+1)へ更新する。
ステップS149の判定にて、退避したユーザデータのシーケンス番号が期待シーケンス番号でない場合(ステップS149:N)には並べ替え処理部153は処理をステップS152へ移行する。ステップS152において並べ替え処理部153は、並べ替えタイマが起動中か否かを判定する。並べ替えタイマは、例えばプロセッサ140の処理によって実現されるソフトウエアタイマであってよい。並べ替えタイマによる時間測定は、期待シーケンス番号でないシーケンス番号のユーザデータを空の並べ替えバッファ150に退避した時点で開始する。並べ替えタイマは、並べ替えバッファ150にユーザデータが退避して所定時間以上経過したときに、並べ替えバッファ150に留まっているユーザデータをxGSN104へ送信するために使用されるタイマである。
ステップS152の判定にて、並べ替えタイマが起動していない場合(ステップS152:N)には、並べ替え処理部153は処理をステップS153へ移行する。ステップS153にて並べ替え処理部153は、並べ替えタイマを起動し、並べ替えタイマによる時間計測を開始する。その後、並べ替え処理部153は処理をステップS154へ移行する。ステップS152の判定にて、並べ替えタイマが既に起動している場合(ステップS152:Y)には、並べ替え処理部153は処理をステップS154へ移行する。
ステップS154において並べ替え処理部153は、並べ替えタイマが起動中か否かを判定する。並べ替えタイマが起動中でない場合(ステップS154:N)、プロセッサ140は処理をステップS140へ戻す(参照符号B)。並べ替えタイマが起動中である場合(ステップS154:Y)、並べ替え処理部153は処理をステップS155へ移行する。
ステップS155において並べ替え処理部153は、並べ替えタイマにより計測された時間が所定時間を超えたか否か、すなわち並べ替えタイマによる計時がタイムアウトとなったか否かを判定する。並べ替えタイマによる計時がタイムアウトとなったとき(ステップS155:Y)、並べ替え処理部153は処理をステップS156へ移行する。
ステップS156において並べ替え処理部153は、並べ替えバッファ150へ格納されている全てのユーザデータをxGSN104へ送信する。ステップS157において並べ替え処理部153は、期待シーケンス番号の値を、(S156で送信したユーザデータのシーケンス番号の最大値+1)へ更新する。ステップS158において並べ替え処理部153は、並べ替えタイマを停止する。その後、プロセッサ140は処理をステップS140へ戻す(参照符号B)。
ステップS155における判定において並べ替えタイマによる計時がタイムアウトとなっていないとき(ステップS155:N)、並べ替え処理部153は処理をステップS159へ移行する。ステップS159において並べ替え処理部153は、並べ替えタイマの計測値を所定の時間ステップ分だけ増加して、計測値を更新する。その後、プロセッサ140は処理をステップS30へ戻す(参照符号B)。
再び図31を参照して、無線網制御装置103による受信処理を説明する。上述の通り、基地局102は、シーケンス番号「1」、「3」、「4」、「5」、「2」の順序でユーザデータを送信した後、シーケンス番号2〜5を含むシーケンスデータSを送信する。無線網制御装置103の第1受信バッファ145には、受信順、すなわち、シーケンス番号「1」、「3」、「4」、「5」、「2」の順序で並んだユーザデータが格納され、その後にシーケンスデータSが格納される。なお、シーケンスデータSに格納されるシーケンス番号2〜5は、「3」、「4」、「5」、「2」の順序で配置されている。
図31は、例えば無線網制御装置103の処理が輻輳し、第1受信バッファ145にユーザデータが格納されても、すぐにプロセッサ140がこのユーザデータの処理を開始できない状態を示す。このような場合、あるユーザデータの送信順序が後続のユーザデータの送信順序より遅くなったとしても、このユーザデータの処理の順番が到来する前に、このユーザデータの受信が完了することが考えられる。例えば図31において無線網制御装置103の並べ替え処理部153は、シーケンス番号「2」〜「5」の後続するユーザデータとシーケンスデータSを受信してから、シーケンス番号「1」の処理を開始する。
また図31は、並べ替えバッファ150が空である状態を示している。このような状態は、図34に示すステップS147以降へ処理が移行せずに並べ替えバッファ150にユーザデータが退避しない場合に生じる。このとき、第1受信バッファ145から取り出されるユーザデータのシーケンス番号は期待シーケンス番号と一致しており、並べ替え処理部153は図33に示すステップS140〜S146を繰り返している。したがって、シーケンス番号「1」のユーザデータの後に、並べ替え処理部153が、シーケンスデータSを第1受信バッファ145から取り出した時点では、期待シーケンス番号は「2」である。
並べ替え処理部153は、シーケンスデータSにより(図33のステップS141)、期待シーケンス番号「2」、及びそれに続く連続するシーケンス番号「3」〜「5」のユーザデータが、第1受信バッファ145に格納されていることを知ることができる。このためステップS143〜S146において並べ替え処理部153は、連続するシーケンス番号「2」〜「5」のユーザデータを、シーケンス番号の順序に従って第1受信バッファ145から取り出すことができる。
並べ替え処理部153は、第1受信バッファ145から取り出した順序にしたがって、ユーザデータ送信部154にユーザデータを送信させる。第2送信バッファ148は、送信順序を待つユーザデータを格納する。参照符号214に示すように、第2送信バッファ48に格納されている各ユーザデータの順序は、シーケンス番号の順序に従っている。ここで参照符号214に示すマス目は第2送信バッファ148内の格納位置を示している。図中において上位にあるマス目に格納されているデータほど送信順序が早い。また参照符号215に示すマス目は、無線網制御装置103からxGSN104へ送信されるユーザデータのタイムチャートを意味している。図中において右側にあるマス目に格納されているデータほど送信順序が早い。
ステップS143〜S146において並べ替え処理部153は、並べ替えバッファ150にユーザデータを退避させずにユーザデータの並べ替え処理を行う。このとき並べ替え処理部153は、シーケンス番号の順序に従って第1受信バッファ145からユーザデータを読み出すことができる。すなわち、より古いシーケンス番号のユーザデータがより若いシーケンス番号のユーザデータよりも後に受信されても、より古いシーケンス番号のユーザデータから先に第1受信バッファ145から読み出して送信することができる。
ステップS143〜S146において行われる並べ替え処理は、並べ替えバッファ150へのユーザデータの退避処理をしないため、図29を参照して説明した並べ替えバッファ150を使用する並べ替え処理における送信処理の遅れを防止することができる。図31の参照符号217は、シーケンス番号「2」〜「5」のユーザデータの送信処理の遅れが低減した結果、図29で示したタイムチャート206と比べて、利用可能なタイムスロット「a」が増加したことを示している。
また、図29を参照して説明した並べ替えバッファ150を使用する並べ替え処理の場合には、ユーザデータをxGSN104へ送信する際にバーストが生じていた。一方で並べ替え処理部153は、ステップS143〜S146において第1受信バッファ145からのユーザデータの読み出し処理とユーザデータの送信処理とを交互に行う。このような読み出しと送信とを交互に行う処理は、並べ替え処理が生じない場合の処理と同様であるため、並べ替え処理が生じない場合と比べて各ユーザデータの送信間隔が大きく相違しない。したがって、ステップS143〜S146において行われる並べ替え処理は、並べ替えバッファ150を使用する並べ替え処理において発生していた送信バーストを防止することができる。図31の参照符号216は、シーケンス番号「1」〜「5」のユーザデータの送信間隔が保たれ、送信バーストが防止されている様子を示している。
なお、シーケンスデータ内のシーケンス番号がユーザデータの送信順序で配列されていれば、並べ替え処理部153は、シーケンスデータにより第1受信バッファ145における各ユーザデータの格納順序を決定することができる。この場合、並べ替え処理部153は、各ユーザデータに埋め込まれたシーケンス番号を参照せずに、所望のシーケンス番号のユーザデータを第1受信バッファ145から取り出すことができる。
並べ替えバッファを使用する並べ替え処理は、ユーザデータが受信バッファに格納された後に、格納されたユーザデータを並べ替えバッファへコピーするために、無線網制御装置103のプロセッサの処理が増大する。このために、ユーザデータの処理遅延や、無線網制御装置103のプロセッサの過負荷によるデータ送信機能の障害の原因になる恐れがある。
本実施例の通信システム100によれば、無線網制御装置103の処理が遅れ、第1受信バッファ145に大量のユーザデータが蓄積されている場合には、これらのユーザデータに併せてシーケンスデータも第1受信バッファ145に蓄積される。したがって、無線網制御装置103は、シーケンスデータを参照して、第1受信バッファ145からユーザデータを取り出すときに並べ替え処理を行うことができる。並べ替えバッファの使用によるプロセッサ140の過負荷を防止することができるため、ユーザデータの処理遅延やデータ送信機能の障害といった上記問題を解決できる。
また本実施例の通信システム100によれば、無線網制御装置103から送信されるデータのバーストを防止することができる。このため本実施例は、通信バーストに起因する通信システム100の機能障害の誘発や、シェーピングによるユーザデータの欠落といった問題を解消することができる。
なお、図3に示す第1パケット送受信装置2が、周期的に送信済みパケット指示情報を送信するのと同様に、基地局102は周期的にシーケンスデータを送信してもよい。本実施例によれば、基地局102は、周期的にシーケンス番号を集計するという比較的簡単な処理でシーケンスデータを作成できるため、基地局102に大きな負荷をかけずに本実施例を実現できる。
また、図3に示す第2パケット送受信装置3が、図16に示す送信済みパケット指示情報要求信号送信部54を備えるのと同様に、無線網制御装置103は、シーケンスデータ要求信号送信部を備えていてもよい。そして、送信済みパケット指示情報要求信号送信部54が第1パケット送受信装置2に送信済みパケット指示情報の送信を要求するのと同様に、シーケンスデータ要求信号送信部は、基地局102にシーケンスデータの送信を要求してもよい。
図3に示す第1パケット送受信装置2が、図15に示す送信済みパケット指示情報要求信号受信24を備えるのと同様に、基地局102は、シーケンスデータ要求信号受信部を備えていてもよい。そして、送信済みパケット指示情報要求信号受信部24が送信済みパケット指示情報要求信号を受信するのと同様に、シーケンスデータ要求信号受信部は、シーケンスデータ要求信号を受信してよい。第1パケット送受信装置2の送信済みパケット指示情報生成部21及び送信済みパケット指示情報送信部23は、送信済みパケット指示情報要求信号が受信されたときに、送信済みパケット指示情報を作成及び送信する。これと同様に、基地局102のシーケンスデータ作成部133とシーケンスデータ送信部135は、シーケンスデータ要求信号を受信したときにシーケンスデータの作成及び送信をしてもよい。本実施例によれば、無線網制御装置103の需要に応じてシーケンスデータを送信することができるので、効率的にシーケンスデータを生成及び送信することが可能となる。
図3に示す第1パケット送受信装置2が、図18に示す欠落パケット検出部25を備えるのと同様に、基地局102は、欠落ユーザを検出する欠落データ検出部を備えてもよい。ここで「欠落データ」とは、シーケンス番号の順序通りに基地局102から無線網制御装置103へユーザデータが送信されなかった場合において、後続ユーザデータよりも後に送信されたユーザデータのことをいう。また、図3に示す第1パケット送受信装置2が、図18に示す送信可否判定部26を備えるのと同様に、基地局102は、欠落データが検出された後に、上記所定の条件が満たされるか否かを判定する送信可否判定部を備えてよい。送信可否判定部が所定の条件が満たされると判定したとき、基地局102のシーケンスデータ作成部133とシーケンスデータ送信部135は、シーケンスデータの生成及び送信を行ってよい。本実施例によれば、欠落データが発生したときに、欠落データを送信できたか否かの判定を行わずに送信済みパケット指示情報を送信することができる。このため、基地局102に大きな負荷をかけずに本実施例を実現できる。
以下、図3に示す第1パケット送受信装置2を移動局101に適用し、第2パケット送受信装置3を基地局102に適用し、第3パケット送受信装置4を無線網制御装置103に適用する実施例を説明する。図35は、図24に示す移動局101のブロック図である。
図24に示すプロセッサ110が、プログラム記憶部112に格納された制御プログラム111を実行することによって、ユーザデータ送信部160、ACK取得部161、シーケンス番号取得部162、シーケンスデータ作成部163、シーケンスデータ送信部165の機能が実現される。
ユーザデータ送信部160は、アプリケーションプログラム119の実行により発生したユーザデータを、基地局102へ送信する処理を行う。ユーザデータ送信部160は、基地局102へ送信されるユーザデータを送信バッファ116へ入力し、無線通信部115は、送信バッファ116へ格納されたパケットを基地局102へ送信する。
ACK取得部161は、再送制御部118により実施された再送制御によって各ユーザデータについて基地局102から受信されたアクノリッジ信号を取得する。シーケンス番号取得部162は、各ユーザデータについてACK取得部162が取得したアクノリッジ信号から、そのユーザデータのシーケンス番号を取得する。
シーケンスデータ生成部163は、ユーザデータ送信部160による送信が成功したユーザデータのシーケンス番号をシーケンス番号取得部162から入力し、これらシーケンス番号を含むシーケンスデータを生成する。シーケンスデータは、ユーザデータ送信部160により送信されたユーザデータを示し、上記の他の実施例における送信済みパケット指示情報の一例に相当する。例えば、移動局101が、シーケンス番号n1、n2、n3、n4の順で、これらのシーケンス番号のユーザデータを送信したとき、シーケンスデータ生成部163は、送信順でこれらの番号を並べた列n1、n2、n3、n4をシーケンスデータとしてよい。
シーケンスデータ生成部163は、シーケンス番号取得部162からシーケンス番号を入力する。シーケンスデータ生成部163は、入力したシーケンス番号をメモリ113に記憶する。シーケンスデータ生成部163は、各シーケンス番号を入力する都度、それまでにメモリ113に記憶されているシーケンス番号の列に追加していくことにより、ユーザデータの送信順に並べた一連のシーケンス番号の列を生成する。シーケンスデータ生成部163は、後述する送信タイミングにおいて、メモリ113に記憶されているシーケンス番号の列を読み出して、シーケンス番号の列を含むシーケンスデータをシーケンスデータ送信部165へ出力する。
シーケンスデータ送信部165は、シーケンスデータ生成部163が生成したシーケンスデータを基地局102へ送信する処理を行う。シーケンスデータ送信部165は、シーケンスデータを送信バッファ116へ入力し、無線通信部115は、送信バッファ116へ格納されたシーケンスデータを基地局102へ送信する。
図36は、図25に示す基地局102のブロック図の第2例である。図25に示すプロセッサ120が、プログラム記憶部122に格納された制御プログラム121を実行することによって、ユーザデータ受信部171、シーケンスデータ受信部172、並べ替え処理部173、ユーザデータ送信部174の機能が実現される。なお、本実施例において、図25に示す並べ替えバッファ130は、移動局101から受信されたユーザデータの並び替え処理の際に、必要に応じて、受信したユーザデータを第1受信バッファ125から退避するために使用されるバッファである。
図37は、図24に示す移動局101の動作フローチャートである。ステップS160においてユーザデータ送信部160は、アプリケーションプログラム119の実行により発生したユーザデータを取得する。ステップS161においてユーザデータ送信部160は、ステップS160で取得したユーザデータを基地局102へ送信する。ステップS162において無線通信部115は、ステップS161で送信したユーザデータについて、基地局102からアクノリッジ信号(ACK)又は否定応答信号(NACK)を受信する。
ステップS163においてプロセッサ110は、無線通信部115がアクノリッジ信号を受信したか否かを判定する。無線通信部115が否定応答信号を受信したとき(S163:N)、プロセッサ110は処理をステップS161に戻しユーザデータを再送する。ステップS163の判定において無線通信部115がアクノリッジ信号を受信したとき(S163:Y)、プロセッサ110は処理をステップS164へ移す。
ステップS164において、ACK取得部161は、受信バッファ117からアクノリッジ信号を取得する。そしてシーケンス番号取得部162は、取得されたアクノリッジ信号から、アクノリッジ信号が返されたユーザデータのシーケンス番号を取り出す。シーケンスデータ生成部163は、取り出されたシーケンス番号をシーケンス番号取得部162から入力する。
ステップS165においてシーケンスデータ生成部163は、ステップS164で取得したシーケンス番号をメモリ113に記憶する。先行して受信したユーザデータのシーケンス番号が既にメモリ113に記憶されている場合には、ユーザデータ生成部163は、既にメモリ113に記憶されているユーザデータの後へ、新たに記憶するシーケンス番号を追加する。
ステップS166においてシーケンスデータ生成部163は、ステップS164で取得したシーケンス番号が、期待シーケンス番号であるか否かを判定する。ここで、移動局101が基地局102へユーザデータを送信する処理において「期待シーケンス番号」とは、未送信のユーザデータのシーケンス番号のうち最も送信順序が早いシーケンス番号である。本実施例では、昇順で送信順序を定めているものとする。この場合「期待シーケンス番号」は、未送信パケットのうちシーケンス番号のうち最も小さいシーケンス番号である。
ステップS164で取得したシーケンス番号が期待シーケンス番号でない場合には(ステップS166:N)、プロセッサ110は処理をステップS160に戻す。
ステップS164で取得したシーケンス番号が期待シーケンス番号である場合には(ステップS166:Y)、ステップS167においてシーケンスデータ生成部163は、インデクス変数iの値を、(期待シーケンス番号+1)に設定する。
ステップS168及びS169においてシーケンスデータ生成部163は、メモリ113に記憶されていない最小の期待シーケンス番号を検索する。すなわちステップS168においてシーケンスデータ生成部163は、インデクス変数iの値と等しいシーケンス番号がメモリ113に記憶されているか否かを判定する。インデクス変数iの値と等しいシーケンス番号がメモリ113に記憶されている限り(ステップS168:Y)、シーケンスデータ生成部163は、ステップS169にてインデクス変数iの値を1つ増加してステップS168及びS169を繰り返す。
メモリ113に記憶されていない最小の期待シーケンス番号が見つかったとき(ステップS168:N)、ステップS170においてシーケンスデータ生成部163は、期待シーケンス番号から(i−1)までの連続するシーケンス番号を含むシーケンスデータを生成する。シーケンスデータ送信部165は、シーケンスデータを基地局102へ送信する。
ステップS171においてシーケンスデータ生成部163は、メモリ113に記憶されている期待シーケンス番号から(i−1)までの連続するシーケンス番号を消去する。ステップS172においてシーケンスデータ生成部163は、期待シーケンス番号の値をインデクス変数iの値に更新する。その後、プロセッサ110は処理をステップS160に戻す。
図38は、図23に示す通信システム1の動作の第2例の説明図である。参照符号220は、アプリケーションプログラム119により生成されたユーザデータを示している。各マス目はデータフレームに分解された各ユーザデータを示し、マス目に囲まれた数字「1」〜「5」はそれぞれのユーザデータのシーケンス番号を示す。
参照符号221は、移動局101から基地局102へ送信されるユーザデータを示し、
マス目に囲まれた数字「1」〜「5」はそれぞれのユーザデータのシーケンス番号を示す。より右側にあるデータほど送信時期が早い。
参照符号222は、参照符号221に示す送信ユーザデータに対して基地局102から移動局101へ送信されるACK信号を示している。マス目に囲まれた数字「1」〜「5」は、基地局102へ無事受信されたユーザデータのシーケンス番号を示す。より左側にあるデータほど送信時期が早い。
移動局101から基地局102への送信において、シーケンス番号「2」のユーザデータの初回のデータ送信が失敗し、シーケンス番号「2」は再送制御によりシーケンス番号「5」のユーザデータの後に再送された場合を想定する。この場合には、シーケンス番号「1」、「3」、「4」、「5」及び「2」の順序で、無線網制御装置103へ送信される(ステップS161)。
ステップS160〜S166のループにおいて、シーケンス番号2のユーザデータの送信の失敗により期待シーケンス番号の値は「2」となる。このため、移動局101が、シーケンス番号2のユーザデータについてACK信号を受信するまで、シーケンス番号「3」、「4」及び「5」がメモリ113に蓄積される。参照符号223は、シーケンス番号がメモリ113に蓄積される様子を示している。
移動局102がシーケンス番号2のユーザデータについてACK信号を受信すると(ステップS166:Y)、シーケンスデータ生成部163は、シーケンス番号2〜5を含む送信済みシーケンスデータSを生成する(ステップS170)。シーケンスデータSは、移動局101から基地局102へのユーザデータの送信順序にしたがって並べたシーケンス番号2〜5を有していてよい。例えば本例では、シーケンスデータSに格納されるシーケンス番号2〜5は、「3」、「4」、「5」、「2」の順序で配置されている。
シーケンスデータ送信部165は、シーケンス番号「2」のユーザデータの後に、シーケンスデータSを送信する。参照符号223は、シーケンスデータSがシーケンス番号「2」のユーザデータの後に、無線網制御装置103へ送信される様子を示す。
図39は、図25に示す基地局102による受信処理のフローチャートである。ステップS180において基地局102の無線通信部124は、移動局101から送信されたユーザデータ及び/又はシーケンスデータを受信する。ステップS181において無線通信部124は、ステップS180で受信したデータを、受信した順序で第1受信バッファ125に格納する。基地局102は、ステップS180及びS181を繰り返すことにより移動局101から受信したデータを、第1受信バッファ125に格納する。
図36に示す並べ替え処理部173は、移動局101から受信して第1受信バッファ125に格納されたユーザデータを、各ユーザデータのシーケンス番号の順序で並べ替えてから、無線網制御装置103へ転送する。
図40及び図41は、図25に示す基地局102による並べ替え処理のフローチャートである。ステップS190において、並べ替え処理部173は、第1受信バッファ125に格納されているシーケンスデータがあるか否かを判定する。第1受信バッファ125に格納されているシーケンスデータがない場合(ステップS190:N)、並べ替え処理部173は、処理をステップS197へ移行する(参照符号A)。第1受信バッファ125に格納されているシーケンスデータがある場合(ステップS190:Y)、並べ替え処理部173は、処理をステップS191へ移行する。
ステップS191において並べ替え処理部173は、第1受信バッファ125からシーケンスデータを取り出す。ステップS192において並べ替え処理部173は、取り出されたシーケンスデータに、期待シーケンス番号が含まれるか否かを判定する。移動局101からユーザデータを受信する基地局102の処理において「期待シーケンス番号」とは、未送信のユーザデータのうち、シーケンス番号が最も小さく、かつ後続のユーザデータについても未だ並べ替え処理部173による並べ替え処理が行われていないユーザデータのシーケンス番号である。
シーケンスデータに期待シーケンス番号が含まれていない場合(ステップS192:N)、並べ替え処理部173は、処理をステップS197へ移行する(参照符号A)。シーケンスデータに期待シーケンス番号が含まれている場合(ステップS192:Y)、並べ替え処理部173は、処理をステップS193へ移行する。
ステップS193においてユーザデータ受信部171は、期待シーケンス番号のユーザデータを第1受信バッファ125から取り出す。ステップS194においてユーザデータ送信部174は、ステップS193にて取り出されたユーザデータを無線網制御装置103へ送信する。ステップS195において並べ替え処理部173は、期待シーケンス番号を1つ増加することにより、期待シーケンス番号を更新する。
ステップS196において並べ替え処理部173は、シーケンスデータに、更新された期待シーケンス番号が含まれるか否かを判定する。シーケンスデータに期待シーケンス番号が含まれている場合(ステップS196:Y)、並べ替え処理部173は処理をステップS193へ戻す。
このため、ステップS145によって1つずつ増加する期待シーケンス番号が、ステップS191で取り出されたシーケンスデータに含まれている限り、プロセッサ120はステップS193〜S196を繰り返し実行する。この結果、プロセッサ120は、シーケンス番号の順序に従って、第1受信バッファ125から連続するシーケンス番号のユーザデータを取り出して、無線網制御装置103へ送信することができる。すなわち、シーケンス番号の順序に従って第1受信バッファ125からシーケンスデータを取り出すことにより、並べ替え処理部173は、並べ替えバッファを使用することなく並べ替え処理を行うことができる。
シーケンスデータに期待シーケンス番号が含まれていない場合(ステップS196:N)、プロセッサ120は処理をステップS190へ戻す。
ステップS197において並べ替え処理部173は、第1受信バッファ125に受信済みユーザデータが格納されているか否かを判定する。受信済みユーザデータがある場合(ステップS197:Y)には並べ替え処理部173は処理をステップS198へ移行する。受信済みユーザデータがない場合(ステップS197:N)には並べ替え処理部173は処理をステップS204へ移行する。
ステップS198において並べ替え処理部173は、ユーザデータ受信部171により第1受信バッファ125から取り出したユーザデータを、並べ替えバッファ130へコピーすることにより、第1受信バッファ125のユーザデータを並べ替えバッファ130へ退避する。既に並べ替えバッファ130にユーザデータが記憶されている場合には、並べ替え処理部173は、既に記憶されているユーザデータに加えて、新たに記憶するユーザデータを格納する。
ステップS199において並べ替え処理部173は、ステップS198で並べ替えバッファ130へ退避したユーザデータのシーケンス番号が、期待シーケンス番号と同じであるか否かを判定する。退避したユーザデータのシーケンス番号が期待シーケンス番号である場合(ステップS199:Y)には並べ替え処理部173は処理をステップS200へ移行する。
ステップS200において並べ替え処理部173は、並べ替えバッファ130へ格納されているユーザデータのうち、期待シーケンス番号のユーザデータを含んだ1つ以上の連続するユーザデータを無線網制御装置103へ送信する。ステップS201において並べ替え処理部173は、期待シーケンス番号の値を、(S200で送信したユーザデータのシーケンス番号の最大値+1)へ更新する。
ステップS199の判定にて、退避したユーザデータのシーケンス番号が期待シーケンス番号でない場合(ステップS199:N)には並べ替え処理部173は処理をステップS202へ移行する。ステップS202において並べ替え処理部173は、並べ替えタイマが起動中か否かを判定する。並べ替えタイマは、例えばプロセッサ120の処理によって実現されるソフトウエアタイマであってよい。並べ替えタイマによる時間測定は、期待シーケンス番号でないシーケンス番号のユーザデータを空の並べ替えバッファ130に退避した時点で開始する。並べ替えタイマは、並べ替えバッファ130にユーザデータが退避して所定時間以上経過したときに、並べ替えバッファ130に留まっているユーザデータを無線網制御装置103へ送信するために使用されるタイマである。
ステップS202の判定にて、並べ替えタイマが起動していない場合(ステップS202:N)には、並べ替え処理部173は処理をステップS203へ移行する。ステップS203にて並べ替え処理部173は、並べ替えタイマを起動し、並べ替えタイマによる時間計測を開始する。その後、並べ替え処理部173は処理をステップS204へ移行する。ステップS202の判定にて、並べ替えタイマが既に起動している場合(ステップS202:Y)には、並べ替え処理部173は処理をステップS204へ移行する。
ステップS204において並べ替え処理部173は、並べ替えタイマが起動中か否かを判定する。並べ替えタイマが起動中でない場合(ステップS204:N)、プロセッサ120は処理をステップS190へ戻す(参照符号B)。並べ替えタイマが起動中である場合(ステップS204:Y)、並べ替え処理部173は処理をステップS205へ移行する。
ステップS205において並べ替え処理部173は、並べ替えタイマにより計測された時間が所定時間を超えたか否か、すなわち並べ替えタイマによる計時がタイムアウトとなったか否かを判定する。並べ替えタイマによる計時がタイムアウトとなったとき(ステップS205:Y)、並べ替え処理部173は処理をステップS206へ移行する。
ステップS206において並べ替え処理部173は、並べ替えバッファ130へ格納されている全てのユーザデータを無線網制御装置103へ送信する。ステップS207において並べ替え処理部173は、期待シーケンス番号の値を、(S206で送信したユーザデータのシーケンス番号の最大値+1)へ更新する。ステップS208において並べ替え処理部173は、並べ替えタイマを停止する。その後、プロセッサ120は処理をステップS190へ戻す(参照符号B)。
ステップS205における判定において並べ替えタイマによる計時がタイムアウトとなっていないとき(ステップS205:N)、並べ替え処理部173は処理をステップS209へ移行する。ステップS209において並べ替え処理部173は、並べ替えタイマの計測値を所定の時間ステップ分だけ増加して、計測値を更新する。その後、プロセッサ120は処理をステップS190へ戻す(参照符号B)。
再び図38を参照して、基地局102による受信処理を説明する。上述の通り、移動局101は、シーケンス番号「1」、「3」、「4」、「5」、「2」の順序でユーザデータを送信した後、シーケンス番号2〜5を含むシーケンスデータSを送信する。基地局102の第1受信バッファ135には、受信順、すなわち、シーケンス番号「1」、「3」、「4」、「5」、「2」の順序で並んだユーザデータが格納され、その後にシーケンスデータSが格納される。なお、シーケンスデータSに格納されるシーケンス番号2〜5は、「3」、「4」、「5」、「2」の順序で配置されている。
図38は、例えば基地局102の処理が輻輳し、第1受信バッファ125にユーザデータが格納されても、すぐにプロセッサ120がこのユーザデータの処理を開始できない状態を示す。このような場合、あるユーザデータの送信順序が後続のユーザデータの送信順序より遅くなったとしても、このユーザデータの処理の順番が到来する前に、このユーザデータの受信が完了することが考えられる。例えば図38において基地局102の並べ替え処理部173は、シーケンス番号「2」〜「5」の後続するユーザデータとシーケンスデータSを受信してから、シーケンス番号「1」の処理を開始する。
また図38は、並べ替えバッファ130が空である状態を示している。このような状態は、図41に示すステップS197以降へ処理が移行せずに並べ替えバッファ130にユーザデータが退避しない場合に生じる。このとき、第1受信バッファ125から取り出されるユーザデータのシーケンス番号は期待シーケンス番号と一致しており、並べ替え処理部173は図33に示すステップS190〜S196を繰り返している。したがって、並べ替え処理部173がシーケンス番号「1」のユーザデータを受信バッファ125から取り出した後に、期待シーケンス番号は「2」となる。
並べ替え処理部173は、シーケンスデータSにより(図40のステップS191)、期待シーケンス番号「2」、及びそれに続く連続するシーケンス番号「3」〜「5」のユーザデータが、第1受信バッファ125に格納されていることを知ることができる。このためステップS193〜S196において並べ替え処理部173は、連続するシーケンス番号「2」〜「5」のユーザデータを、シーケンス番号の順序に従って第1受信バッファ125から取り出すことができる。
並べ替え処理部173は、第1受信バッファ125から取り出した順序にしたがって、ユーザデータ送信部174にユーザデータを送信させる。第2送信バッファ128は、送信順序を待つユーザデータを格納する。参照符号225に示すように、第2送信バッファ48に格納されている各ユーザデータの順序は、シーケンス番号の順序に従っている。ここで参照符号225に示すマス目は第2送信バッファ128内の格納位置を示している。図中において上位にあるマス目に格納されているデータほど送信順序が早い。また参照符号226に示すマス目は、基地局102から無線網制御装置103へ送信されるユーザデータのタイムチャートを意味している。図中において右側にあるマス目に格納されているデータほど送信順序が早い。
ステップS193〜S196において並べ替え処理部173は、並べ替えバッファ130にユーザデータを退避させずにユーザデータの並べ替え処理を行う。このとき並べ替え処理部173は、シーケンス番号の順序に従って第1受信バッファ125からユーザデータを読み出すことができる。すなわち、より古いシーケンス番号のユーザデータがより若いシーケンス番号のユーザデータよりも後に受信されても、より古いシーケンス番号のユーザデータから先に第1受信バッファ125から読み出して送信することができる。
ステップS193〜S196において行われる並べ替え処理は、並べ替えバッファ130へのユーザデータの退避処理をしないため、並べ替えバッファを使用する並べ替え処理におけるユーザデータの送信処理の遅れを防止することができる。図38の参照符号228は、シーケンス番号「2」〜「5」のユーザデータの送信処理の遅れが低減した結果、利用可能なタイムスロット「a」が増加したことを示している。
また、並べ替えバッファを使用する並べ替え処理の場合には、ユーザデータの送信バーストが生じていた。一方で並べ替え処理部173は、ステップS193〜S196において第1受信バッファ125からのユーザデータの読み出し処理とユーザデータの送信処理とを交互に行う。このような読み出しと送信とを交互に行う処理は、並べ替え処理を生じない場合の処理と同様であるため、並べ替え処理を生じない場合と比べて各ユーザデータの送信間隔が大きく相違しない。したがって、ステップS193〜S196において行われる並べ替え処理は、並べ替えバッファを使用する並べ替え処理において発生していた送信バーストを防止することができる。図38の参照符号227は、シーケンス番号「1」〜「5」のユーザデータの送信間隔が保たれ、送信バーストが防止されている様子を示している。
なお、シーケンスデータ内のシーケンス番号がユーザデータの送信順序で配列されていれば、並べ替え処理部173は、シーケンスデータにより第1受信バッファ125における各ユーザデータの格納順序を決定することができる。この場合、並べ替え処理部173は、各ユーザデータに埋め込まれたシーケンス番号を参照せずに、所望のシーケンス番号のユーザデータを第1受信バッファ125から取り出すことができる。
並べ替えバッファを使用する並べ替え処理は、ユーザデータが受信バッファに格納された後に、格納されたユーザデータを並べ替えバッファへコピーするために、基地局102のプロセッサの処理が増大する。このために、ユーザデータの処理遅延や、基地局102のプロセッサの過負荷によるデータ送信機能の障害の原因になる恐れがある。
本実施例の通信システム100によれば、基地局102の処理が遅れ、第1受信バッファ125に大量のユーザデータが蓄積されている場合には、これらのユーザデータに併せてシーケンスデータも第1受信バッファ125に蓄積される。したがって、基地局102は、シーケンスデータを参照して、第1受信バッファ125からユーザデータを取り出すときに並べ替え処理を行うことができる。並べ替えバッファの使用によるプロセッサ120の過負荷を防止することができるため、ユーザデータの処理遅延やデータ送信機能の障害といった上記問題を解決できる。
また本実施例の通信システム100によれば、基地局125から送信されるデータのバーストを防止することができる。このため本実施例は、通信バーストに起因する通信システム100の機能障害の誘発や、シェーピングによるユーザデータの欠落といった問題を解消することができる。
なお、図3に示す第1パケット送受信装置2が、周期的に送信済みパケット指示情報を送信するのと同様に、移動局101は周期的にシーケンスデータを送信してもよい。本実施例によれば、移動局101は、周期的にシーケンス番号を集計するという比較的簡単な処理でシーケンスデータを作成できるため、移動局101に大きな負荷をかけずに本実施例を実現できる。
また、図3に示す第2パケット送受信装置3が、図16に示す送信済みパケット指示情報要求信号送信部54を備えるのと同様に、基地局102は、シーケンスデータ要求信号送信部を備えていてもよい。そして、送信済みパケット指示情報要求信号送信部54が第1パケット送受信装置2に送信済みパケット指示情報の送信を要求するのと同様に、シーケンスデータ要求信号送信部は、移動局101にシーケンスデータの送信を要求してもよい。
図3に示す第1パケット送受信装置2が、図15に示す送信済みパケット指示情報要求信号受信24を備えるのと同様に、移動局101は、シーケンスデータ要求信号受信部を備えていてもよい。そして、送信済みパケット指示情報要求信号受信部24が送信済みパケット指示情報要求信号を受信するのと同様に、シーケンスデータ要求信号受信部は、シーケンスデータ要求信号を受信してよい。第1パケット送受信装置2の送信済みパケット指示情報生成部21及び送信済みパケット指示情報送信部23は、送信済みパケット指示情報要求信号が受信されたときに、送信済みパケット指示情報を作成及び送信する。これと同様に、移動局101のシーケンスデータ作成部163とシーケンスデータ送信部165は、シーケンスデータ要求信号を受信したときにシーケンスデータの作成及び送信をしてもよい。本実施例によれば、基地局102の需要に応じてシーケンスデータを送信することができるので、効率的にシーケンスデータを生成及び送信することが可能となる。
図3に示す第1パケット送受信装置2が、図18に示す欠落パケット検出部25を備えるのと同様に、移動局101は、欠落ユーザを検出する欠落データ検出部を備えてもよい。ここで「欠落データ」とは、シーケンス番号の順序通りに移動局101から基地局102へユーザデータが送信されなかった場合において、後続ユーザデータよりも後に送信されたユーザデータのことをいう。また、図3に示す第1パケット送受信装置2が、図18に示す送信可否判定部26を備えるのと同様に、移動局101は、欠落データが検出された後に、上記所定の条件が満たされるか否かを判定する送信可否判定部を備えてよい。送信可否判定部が所定の条件が満たされると判定したとき、移動局101のシーケンスデータ作成部163とシーケンスデータ送信部165は、シーケンスデータの生成及び送信を行ってよい。本実施例によれば、欠落データが発生したときに、欠落データを送信できたか否かの判定を行わずに送信済みパケット指示情報を送信することができる。このため、移動局101に大きな負荷をかけずに本実施例を実現できる。
以上、本発明の好適な実施態様について詳述したが、当業者が種々の修正及び変更をなし得ること、並びに、特許請求の範囲は本発明の真の精神および趣旨の範囲内にあるこの様な全ての修正及び変更を包含することは、本発明の範囲に含まれることは当業者に理解される。