(57)【特許請求の範囲】
【請求項１】
複数の論理チャネルにより多重されて入力されるＡＴＭセルを格納し、論理チャネル毎のＡＴＭセルをパケットに組み立て、該パケットを出力するパケットバッファ装置において、
共通バッファから個別バッファを分離して生成させ、又は個別バッファを共通バッファに開放して共通バッファに結合させる個別バッファ生成制御部と、
入力されたＡＴＭセル毎に、該ＡＴＭセルを格納するバッファ種別を判定する個別バッファ判定部と、
前記個別バッファ判定部により判定されたバッファ種別に応じて、入力されたＡＴＭセルを、共通バッファ又は個別バッファへ振り分けて格納させるパケットバッファ制御部とを備え、
個別バッファの使用数に応じて、個別バッファを動的に構築し、パケットの種別に応じて、異なる種別のバッファリソースを使用させる構成を有することを特徴とするパケットバッファ装置。
【請求項２】
前記個別バッファ判定部は、個別バッファの種別と該個別バッファを使用するＡＴＭセルの論理チャネルとの対応を設定する対象論理チャネル設定部と、
入力されたＡＴＭセルの論理チャネルと、前記対象論理チャネル設定部に設定された論理チャネルとを比較し、合致した場合に、対応する種別の個別バッファを指定するバッファ種別情報を出力し、合致しなかった場合に、共通バッファを指定するバッファ種別情報を出力する比較部とを備え、
前記対象論理チャネル設定部に設定された論理チャネルのＡＴＭセルを、種別の異なる個別バッファへ振り分ける構成を有することを特徴とするた請求項１記載のパケットバッファ装置。
【請求項３】
前記対象論理チャネル設定部に、各個別バッファの種別毎に設定された論理チャネルの判定対象ビットを指定するビット指定部を備え、
前記比較部は、入力されたＡＴＭセルの論理チャネルの判定対象ビットのみを比較し、合致した場合に、対応する種別の個別バッファを指定するバッファ種別情報を出力し、合致しなかった場合に、共通バッファを指定するバッファ種別情報を出力する構成を有することを特徴とする請求項２記載のパケットバッファ装置。
【請求項４】
前記対象論理チャネル設定部に、各個別バッファの種別毎にＡＴＭセル又はパケットの優先度を示す情報を設定する優先度情報設定部を備え、前記比較部は、入力されたＡＴＭセル又はパケットの優先度を示す情報と、前記優先度情報設定部に設定された優先度情報とを比較し、比較結果に応じて異なるバッファ種別情報を出力する構成を有することを特徴とする請求項２または３のパケットバッファ装置。
【請求項５】
前記パケットバッファ装置は、バッファ種別毎に、チェーンにより連結する空きバッファの先頭ポインタ、最終ポインタ及び空きバッファ数を保持する空きバッファポインタと、
バッファ毎に、チェーンにより連結する空きバッファの次バッファアドレス及びバッファ種別を保持するバッファ管理部とを備え、
前記パケットバッファ制御部は、前記個別バッファ判定部からのバッファ種別情報に従い、そのバッファ種別の空きバッファからバッファを順次獲得し、パケット組み立ての制御を行う構成を有することを特徴とする請求項１のパケットバッファ装置。
【請求項６】
前記パケットバッファ制御部は、個別バッファを獲得する際に、該個別バッファの空きバッファポインタに保持された空きバッファ数を読み出し、獲得する空きバッファが無いと判定した場合、共通バッファの空きバッファからバッファを獲得し、パケット組み立ての制御を行う構成を有することを特徴とする請求項５記載のパケットバッファ装置。
【請求項７】
前記パケットバッファ制御部は、前記個別バッファ生成制御部からの個別バッファの増加指示を判定する手段を備え、増加指示が有る場合、共通バッファの空きバッファから獲得したバッファに対応するバッファ管理部内に保持されるバッファ種別を、当該個別バッファを指定するバッファ種別に書き換え、共通バッファから獲得したバッファ数分を、個別バッファに変更させる制御を行う構成を有することを特徴とする請求項６記載のパケットバッファ装置。
【請求項８】
前記個別バッファ生成制御部は、個別バッファのバッファ数を指定する個別バッファ総数指定部と、個別バッファのバッファ数をカウントするバッファ数カウンタと、バッファの構築を指示するバッファ構築指示部と、個別バッファの生成、開放、増加又は減少を管理する管理部とを備え、
ＡＴＭセル出力後のバッファ開放処理時に、該バッファが共通バッファでかつバッファ構築指示があった場合、該バッファのバッファ管理部内のバッファ種別をバッファ構築指示があったバッファ種別に書き換え、該バッファ種別のバッファ数カウンタに１を加算し、該バッファ数カウンタがその個別バッファ総数指定値まで達した場合に、バッファ構築指示をオフにし、バッファ開放時に、指定されたバッファ総数の個別バッファの生成又は指定されたバッファ数までの個別バッファの増加を行う構成を有することを特徴とする請求項１記載のパケットバッファ装置。
【請求項９】
前記個別バッファ生成制御部は、バッファ開放を指示するバッファ開放指示部を備え、ＡＴＭセル出力後のバッファ開放処理時に、該バッファが個別バッファでかつバッファ開放指示があった場合、該バッファのバッファ管理部内のバッファ種別を、共通バッファのバッファ種別に書き換え、該バッファ種別のバッファ数カウンタから１を減算し、該バッファ数カウンタがその個別バッファ総数指定値まで達した場合に、バッファ開放指示をオフにし、バッファ開放時に、個別バッファの開放又は指定されたバッファ総数までの減少を行う構成を更に有することを特徴とする請求項８記載のパケットバッファ装置。
【請求項１０】
前記個別バッファ生成制御部は、個別バッファ数の最適化処理の周期を設定する調整間隔タイマを備え、更に、各個別空きバッファポインタは、空きバッファ数の最低値を保持する空きバッファ数最低値保持部を備え、前記個別バッファ生成制御部の管理部は、調整間隔タイマに設定した周期で、空バッファ数最低値を読み出し、個別バッファ総数指定部から読み出した値から前記空バッファ数最低値を減算し、その値を個別バッファ総数指定部に設定し、バッファ開放指示をオンにする構成を有し、
前記最適化処理の周期の期間に使用されなかった数の個別バッファを共通バッファへ開放する構成を有することを特徴とする請求項９記載のパケットバッファ装置。
【請求項１１】
前記個別バッファ生成制御部は、個別バッファ数の最適化処理の周期を設定する調整間隔タイマと、個別バッファ数の最適化処理を行うか否かを決定するための空きバッファ数最低値のしきい値を設定するしきい値指定部と、開放するバッファ数を設定する開放数指定部とを備え、更に、各個別空きバッファポインタは、空きバッファ数の最低値を保持する空きバッファ数最低値保持部を備え、
前記個別バッファ生成制御部の管理部は、読み出した空きバッファ数最低値が、前記しきい値より大きい場合に、個別バッファ総数指定部から読み出した値から前記開放数指定部の設定値を減算し、その値を個別バッファ総数指定部に設定し、バッファ開放指示をオンにする構成を有し、
前記最適化処理の周期の期間に使用されなかった数がしきい値より大きい場合に、前記開放数指定部に設定した指定数のバッファを共通バッファへ開放する構成を有することを特徴とする請求項９のパケットバッファ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理チャネル多重されたＡＴＭセルを、パケットに組立て、パケット単位に蓄積して出力するパケット転送モジュールにおけるパケットバッファ装置に関し、特に、共通バッファを使用するべストエフォート（最善努力）型パケット転送サービス等と、個別バッファを使用するギャランティー（帯域保証）型パケット転送サービス等とが混在するネットワークのパケット転送モジュールにおけるパケットバッファ装置に関する。
【０００２】
図２４は、本発明のパケットバッファ装置が適用されるパケット転送モジュールのネットワーク上の配置位置を示す。パケット転送モジュール２４−１は、ＡＴＭネットワーク内に配置され、相互に接続されるとともに、多重装置２４−２を介してユーザネットワークのルータ２４−３と接続される。
【０００３】
各パケット転送モジュール２４−１と多重装置２４−２とルータ２４−３とは、非同期転送モード（ＡＴＭ：Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）のインタフェースにより接続され、各ユーザネットワークから送信されたパケットは、ルータ２４−３においてＡＴＭアダプテーションレイヤタイプ５（以下、ＡＡＬタイプ５と記す。）等のプロトコルによりＡＴＭセル化され、更に、多重装置２４−２において複数ユーザのＡＴＭセルの多重化が行われ、パケット転送モジュール２４−１へ入力される。
【０００４】
パケット転送モジュール２４−１は、入力されたＡＴＭセルからパケットを組み立て、パケットヘッダ内の相手先アドレス情報に従い、該相手先ユーザネットワークを収容する他のパケット転送モジュール、又は自パケット転送モジュールに収容されている相手先ユーザネットワークへ向けて、パケットを転送する。
【０００５】
図２５は、本発明のパケットバッファ装置が適用されるパケット転送モジュールの構成図である。パケット転送モジュール２５−１０には、他のパケット転送モジュール又は多重装置から、論理チャネル単位に多重化されたＡＴＭセルが、回線を介して入力される。ここで、論理チャネルは、仮想チャネル識別子（ＶＰＩ／ＶＣＩ）等により識別されるチャネルである。
【０００６】
物理終端装置２５−１１は、入出力するＡＴＭセルの物理レイヤの終端を行い、ＡＴＭ終端装置２５−１２は、入出力するＡＴＭセルのＡＴＭレイヤの終端を行い、ＡＡＬタイプ５終端装置２５−１３は、入出力するＡＴＭセルのＡＡＬタイプ５の終端を行う。なお、ＡＡＬタイプ５終端装置２５−１３は、他のＡＴＭアダプテーションレイヤタイプ、例えばタイプ３又はタイプ４の終端装置であってもよい。
【０００７】
パケットバッファ装置２５−１４は、例えばＡＡＬタイプ５のプロトコルに従い、ＡＴＭセルヘッダのペイロードタイプ表示情報を基に、論理チャネル毎にパケット最終データのＡＴＭセルを識別し、これまで受信したＡＴＭセルからパケットを組み立てる。そして、相手先情報等を含むパケットヘッダ情報を上位レイヤ装置２５−１５へ出力する。
【０００８】
上位レイヤ装置２５−１５は、入力したパケットから転送先を検索し、その処理結果をパケットバッファ装置２５−１４へ返送する。パケットバッファ装置２５−１４は、上位レイヤ装置２４−１５から指示された転送先への論理チャネルに変換し、組み立てたパケットのＡＴＭセルをパケット単位に出力する。
【０００９】
パケット転送モジュールの制御部２５−１６は、前述のパケット転送モジュール内の各装置の初期設定や状態管理等を行なう。パケット転送モジュール２５−１０から出力されるＡＴＭセルは、パケット単位に多重されて出力される。
【００１０】
【従来の技術】
従来のパケットバッファ装置は、論理チャネルが割り当てられた全ての加入者からのＡＴＭセルを、一つの共通バッファリソースに格納する共通バッファを用いるものか、又は各加入者からのＡＴＭセルを、各論理チャネル毎に予め割り当てた一定容量の個別バッファリソースに固定的に格納する個別バッファを用いるものであった。
【００１１】
図２６は共通バッファを用いたパケットバッファ装置の動作説明図である。図に示すように、チャネルＡ，Ｂ，Ｃ，Ｄの複数の論理チャネルの多重化されたＡＴＭセルが入力されると、パケットバッファ装置は、各論理チャネルに共通のバッファメモリ２６−１にそれらのＡＴＭセルをパケット単位に格納する。
【００１２】
今、共通バッファのバッファメモリ２６−１に、チャネルＡのＡＴＭセルが多数入力され、チャネルＡのバッファメモリ使用数が増大し、バッファメモリ２６−１の空容量が不足すると、他のチャネル、例えば、チャネルＤのパケットが廃棄される。
【００１３】
図２７は個別バッファを用いたパケットバッファ装置の動作説明図である。図に示すように、チャネルＡ，Ｂ，Ｃの複数の論理チャネルの多重化されたＡＴＭセルが入力されると、パケットバッファ装置は、バッファメモリ２７−１内の各チャネルＡ，Ｂ，Ｃ，Ｄ，Ｅ専用の個別バッファにそれらのＡＴＭセルを格納する。
【００１４】
個別バッファを用いたものは、チャネル間の輻輳の影響を及ぼし合うことはないが、例えば、図に示すように、チャネルＤ及びチャネルＥの個別バッファが空いているにもかかわらず、チャネルＡ又はチャネルＢの個別バッファが輻輳した場合、それらのチャネルのパケットは廃棄されることとなる。
【００１５】
【発明が解決しようとする課題】
共通バッファを用いたパケットバッファ装置は、バッファ輻輳時のパケット廃棄処理において、優先度の高いギャランティー型パケット転送サービスのパケットと、優先度の低いべストエフォート型パケット転送サービスのパケットとを区別していないため、転送サービスのサービスグレードに応じた廃棄処理の差別化をすることができない。
【００１６】
一方、個別バッファを用いたパケットバッファ装置は、或る個別バッファリソースに容量不足した場合、他の個別バッファリソースに空が有るにもかかわらず、容量不足となった個別バッファのパケットは廃棄されてしまい、バッファリソースが有効に利用されず、べストエフォート型パケット転送サービスを効率良く提供することができないといった問題点があった。
【００１７】
近年、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ）パケット等を転送するＡＴＭネットワークにおいて、パケット転送の高速化・高多重化とともに、転送サービスグレードの多品種化が進み、そのようなパケット転送サービスに対応するには、バッファリソースを最適に利用し、かつ、バッファリソースを転送サービスグレードに応じて選り分けて使用するパケットバッファ装置が必要となる。
【００１８】
本発明は、共通バッファと個別バッファとを動的に構築し、それぞれのバッファ量を最適に配分し、収容加入者にサービス形態の異なる加入者が混在する場合でも、サービス形態の異なる加入者のパケットを、それぞれ種別の異なるバッファへ選別して振り分け、サービス形態に対応したパケット転送サービスを可能にするとともに、バッファリソースの最適利用を図ることを目的とする。
【００１９】
【課題を解決するための手段】
本発明のパケットバッファ装置は、（１）複数の論理チャネルにより多重されて入力されるＡＴＭセルを格納し、論理チャネル毎のＡＴＭセルをパケットに組み立て、該パケットを出力するパケットバッファ装置において、共通バッファから個別バッファを分離して生成させ、又は個別バッファを共通バッファに開放して共通バッファに結合させる個別バッファ生成制御部と、入力されたＡＴＭセル毎に、該ＡＴＭセルを格納するバッファ種別を判定する個別バッファ判定部と、前記個別バッファ判定部により判定されたバッファ種別に応じて、入力されたＡＴＭセルを、共通バッファ又は個別バッファへ振り分けて格納させるパケットバッファ制御部とを備え、個別バッファの使用数に応じて、個別バッファを動的に構築し、パケットの種別に応じて、異なる種別のバッファリソースを使用させる構成を有するものである。
【００２０】
また、（２）前記個別バッファ判定部は、個別バッファの種別と該個別バッファを使用するＡＴＭセルの論理チャネルとの対応を設定する対象論理チャネル設定部と、入力されたＡＴＭセルの論理チャネルと、前記対象論理チャネル設定部に設定された論理チャネルとを比較し、合致した場合に、対応する種別の個別バッファを指定するバッファ種別情報を出力し、合致しなかった場合に、共通バッファを指定するバッファ種別情報を出力する比較部とを備え、前記対象論理チャネル設定部に設定された論理チャネルのＡＴＭセルを、種別の異なる個別バッファへ振り分ける構成を有するものである。
【００２１】
また、（３）前記対象論理チャネル設定部に、各個別バッファの種別毎に設定された論理チャネルの判定対象ビットを指定するビット指定部を備え、前記比較部は、入力されたＡＴＭセルの論理チャネルの判定対象ビットのみを比較し、合致した場合に、対応する種別の個別バッファを指定するバッファ種別情報を出力し、合致しなかった場合に、共通バッファを指定するバッファ種別情報を出力する構成を有するものである。
【００２２】
また、（４）前記対象論理チャネル設定部に、各個別バッファの種別毎にＡＴＭセル又はパケットの優先度を示す情報を設定する優先度情報設定部を備え、前記比較部は、入力されたＡＴＭセル又はパケットの優先度を示す情報と、前記優先度情報設定部に設定された優先度情とを比較し、比較結果に応じて異なるバッファ種別情報を出力する構成を有するものである。
なお、上記優先度を示す情報として、ＡＴＭセルのセル損失優先表示（ＣＬＰ：Ｃｅ１１  Ｌｏｓｓ    Ｐｒｉｏｒｉｔｙ  ）又はＩＰｖ６パケットのＰｒｉｏｒｉｔｙ情報を用いることができる。
【００２３】
また、（５）前記パケットバッファ装置は、バッファ種別毎に、チェーンにより連結する空きバッファの先頭ポインタ、最終ポインタ及び空きバッファ数を保持する空きバッファポインタと、バッファ毎に、チェーンにより連結する空きバッファの次バッファアドレス及びバッファ種別を保持するバッファ管理部とを備え、前記パケットバッファ制御部は、前記個別バッファ判定部からのバッファ種別情報に従い、そのバッファ種別の空きバッファからバッファを順次獲得し、パケット組み立ての制御を行う構成を有するものである。
【００２４】
また、（６）前記パケットバッファ制御部は、個別バッファを獲得する際に、該個別バッファの空きバッファポインタに保持された空きバッファ数を読み出し、獲得する空きバッファが無いと判定した場合、共通バッファの空きバッファからバッファを獲得し、パケット組み立ての制御を行う構成を有するものである。
【００２５】
また、（７）前記パケットバッファ制御部は、前記個別バッファ生成制御部からの個別バッファの増加指示を判定する手段を備え、増加指示が有る場合、共通バッファの空きバッファから獲得したバッファに対応するバッファ管理部内に保持されるバッファ種別を、当該個別バッファを指定するバッファ種別に書き換え、共通バッファから獲得したバッファ数分を、個別バッファに変更させる制御を行う構成を有するものである。
【００２６】
また、（８）前記個別バッファ生成制御部は、個別バッファのバッファ数を指定する個別バッファ総数指定部と、個別バッファのバッファ数をカウントするバッファ数カウンタと、バッファの構築を指示するバッファ構築指示部と、個別バッファの生成、開放、増加又は減少を管理する管理部とを備え、ＡＴＭセル出力後のバッファ開放処理時に、該バッファが共通バッファでかつバッファ構築指示があった場合、該バッファのバッファ管理部内のバッファ種別をバッファ構築指示があったバッファ種別に書き換え、該バッファ種別のバッファ数カウンタに１を加算し、該バッファ数カウンタがその個別バッファ総数指定値まで達した場合に、バッファ構築指示をオフにし、バッファ開放時に、指定されたバッファ総数の個別バッファの生成又は指定されたバッファ数までの個別バッファの増加を行う構成を有するものである。
【００２７】
また、（９）前記個別バッファ生成制御部は、バッファ開放を指示するバッファ開放指示部を備え、ＡＴＭセル出力後のバッファ開放処理時に、該バッファが個別バッファでかつバッファ開放指示があった場合、該バッファのバッファ管理部内のバッファ種別を、共通バッファのバッファ種別に書き換え、該バッファ種別のバッファ数カウンタから１を減算し、該バッファ数カウンタがその個別バッファ総数指定値まで達した場合に、バッファ開放指示をオフにし、バッファ開放時に、個別バッファの開放又は指定されたバッファ総数までの減少を行う構成を更に有するものである。
【００２８】
また、（１０）前記個別バッファ生成制御部は、個別バッファ数の最適化処理の周期を設定する調整間隔タイマを備え、更に、各個別空きバッファポインタは、空きバッファ数の最低値を保持する空きバッファ数最低値保持部を備え、前記個別バッファ生成制御部の管理部は、調整間隔タイマに設定した周期で、空バッファ数最低値を読み出し、個別バッファ総数指定部から読み出した値から前記空バッファ数最低値を減算し、その値を個別バッファ総数指定部に設定し、バッファ開放指示をオンにする構成を有し、前記最適化処理の周期の期間に使用されなかった数の個別バッファを共通バッファへ開放する構成を有するものである。
【００２９】
また、（１１）前記個別バッファ生成制御部は、個別バッファ数の最適化処理の周期を設定する調整間隔タイマと、個別バッファ数の最適化処理を行うか否かを決定するための空きバッファ数最低値のしきい値を設定するしきい値指定部と、開放するバッファ数を設定する開放数指定部とを備え、更に、各個別空きバッファポインタは、空きバッファ数の最低値を保持する空きバッファ数最低値保持部を備え、前記個別バッファ生成制御部の管理部は、読み出した空きバッファ数最低値が、前記しきい値より大きい場合に、個別バッファ総数指定部から読み出した値から前記開放数指定部の設定値を減算し、その値を個別バッファ総数指定部に設定し、バッファ開放指示をオンにする構成を有し、前記最適化処理の周期の期間に使用されなかった数がしきい値より大きい場合に、前記開放数指定部に設定した指定数のバッファを共通バッファへ開放する構成を有するものである。
【００３０】
【発明の実施の形態】
図１は、本発明のパケットバッファ装置の構成図である。同図において、１−１０はパケットバッファ装置、１−１１は個別バッファ判定部、１−１２はパケットバッファ制御部、１−１３はバッファ管理部、１−１４はバッファメモリ、１−１５は共通空きバッファポインタ、１−１６は個別バッファ生成制御部、１−１７は個別空きバッファポインタ、１−１８はパケット組み立てポインタ、１−１９はパケット出力待ちポインタ、１−２０は出力制御部、１−２１はチャネル変換部、１−３０はＡＡＬタイプ５終端装置である。
【００３１】
ＡＡＬタイプ５終端装置１−３０から複数の論理チャネル多重のＡＴＭセルがパケットバッファ装置１−１０に入力されると、個別バッファ判定部１−１１は、ＡＴＭセルヘッダ等の情報を基に、該ＡＴＭセルが使用するバッファ種別（共通バッファか又はどの個別バッファか）を判定し、該バッファ種別情報をＡＴＭセルに付加して、パケットバッファ制御部１−１２へ出力する。
【００３２】
パケットバッファ制御部１−１２は、バッファ種別情報に従い、バッファ種別情報が共通バッファであれば、共通空きバッファポインタ１−１５示すバッファメモリ１−１４内の空きバッファの領域を獲得し、またバッファ種別情報が個別バッファであれば、個別空きバッファポインタ１−１７が示すバッファメモリ１−１４内の空きバッファの領域を獲得し、セルデータを該空きバッファに書き込む。
【００３３】
そして、書き込んだバッファ領域のアドレスを、パケット組み立てポインタ１−１８が示すパケット組み立て中のバッファアドレスにリンクさせ、バッファメモリ１−１４内に論理チャネル単位にバッファアドレスのリンクを編成してパケットを組み立てながらセルデータを格納する。
【００３４】
パケットバッファ制御部１−１２は、パケット組み立てが完了し、かつ上位レイヤへ該パケットのヘッダ情報を渡して上位レイヤからの処理完了通知を受けたことを契機に、該パケットをパケット出力待ちポインタ１−１９へリンクさせる。
【００３５】
出力制御部１−２０は、パケット出力待ちポインタ１−１９の出力待ち状態を監視し、出力待ち状態のパケットが有れば、パケット出力待ちポインタ１−１９が示すバッファメモリ１−１４のアドレスからセルデータを読み出し、パケット単位にセルを出力する。
【００３６】
個別バッファ生成制御部１−１６は、出力完了のセルを格納していたバッファを元の種別の空きバッファへ開放するか、又は、設定情報に従い、個別バッファを生成し、増加し若しくは減少させる制御を行なう。
【００３７】
チャネル変換部１−２１は、バッファメモリ１−４から読み出して出力するセルの論理チャネルを、上位レイヤから指示された論理チャネルへ変換し、該セルデータをＡＡＬタイプ５終端装置１−３０へ出力する。
【００３８】
バッファ管理部１−１３は、１セルデータ分のバッファのセグメント毎に管理部を備え、各管理部はそれぞれ、バッファのリンク情報部、バッファ種別情報部及び転送制御情報部の記憶部を有し、バッファのリンク情報部には次バッファアドレスが書き込まれ、バッファ種別情報部には該バッファが共通バッファに属するかどの個別バッファに属するかが書き込まれ、転送制御情報部にはパケット長（バッファ数）、上位レイヤ処理完了フラグ、出力チャネル番号、ヘッダ付加・削除情報が書き込まれる。
【００３９】
バッファ管理部１−１３は、メモリ素子により構成され、図１に示すように、バッファメモリ１−１４とは別の独立したメモリ素子として構成してもよいし、また、バッファメモリ１−１４と同一のメモリ素子内に設けてもよい。
【００４０】
このように、本発明のパケットバッファ装置１−１０は、個別バッファ判定部１−１１が、入力セルの使用するバッファ種別を判定し、パケットバッファ制御部１−１２は、その判定されたバッファ種別の空きバッファポインタの情報により、そのバッファ種別の空バッファを獲得する。
【００４１】
そのため、入力セルデータをそれぞれ、論理チャネル等のサービスグレードに応じて、種別の異なるバッファに振り分けてバッファメモリ１−１４に格納することができし、そして、パケット組立ポインタ１−１８とバッファ管理部１−１３とにより、１セル分のデータを格納するバッファを順次チェーンで連結し、パケット単位に組み立てる。
【００４２】
パケットバッファ制御部１−１２は、パケット組み立てが完了し、出力可能な状態になったパケットを、パケット出力待ちポインタ１−１９へリンクし、出力制御部１−２０は、パケット出力待ちポインタ１−１９の情報に基づいてパケット単位に１セルずつバッファメモリ１−１４から読み出して出力する。
【００４３】
更に、個別バッファ生成制御部１−１６は、パケット（セル）出力後のバッファ開放時に、設定情報に従い、共通バッファへの返却、個別バッファの生成、増加又は減少の制御を行い、また設定周期によりバッファ配分量の最適化処理を行う。
【００４４】
本発明のパケットバッファ装置によれば、共通バッファと個別バッファとを動的に構築し、サービス形態の異なるパケットに、それぞれ種別の異なるバッファを使用し、サービスグレードに応じて廃棄処理等を差別化することができる。また、個別バッファの配分量をバッファ使用状況に応じて最適化し、バッファリソースを効率良く使用することができる。
【００４５】
図２及び図３は、本発明のパケットバッファ装置の動作説明図である。図２及び図３において、チャネルＡ，Ｂ，Ｃ，Ｄの多重された複数の論理チャネルのＡＴＭセルが入力されるものとする。
【００４６】
図２はバッファメモリを共通バッファとして使用する場合のセルデータの格納状況を示し、図３はバッファメモリを共通バッファと個別バッファとに分割して使用する場合のセルデータの格納状況を示している。
【００４７】
図２に示すように、バッファメモリ１−１４を共通バッファのみとして使用する場合、各チャネルＡ，Ｂ，Ｃ，Ｄのセルデータは、同一のメモリリソースに格納される。この動作は前述した図２６の動作と同様である。
【００４８】
図３に示すように、バッファメモリ１−１４を共通バッファと個別バッファとに分割して使用する場合、例えばチャネルＡのパケット等のように特定のパケットのみが個別バッファを使用し、その他のチャネルのパケットは共通バッファを使用するようにすることができる。
【００４９】
なお、共通バッファと個別バッファとを併用する場合、先ず、個別バッファの生成を行う。個別バッファの生成は、マイクロプログラム等により設定される所定数のバッファセグメントを、共通バッファより切り離し、該所定数のバッファセグメントを、或る特定の論理チャネル等の特定のパケットのセルのみが格納される個別バッファとして構成する。個別バッファは、種別の異なるパケット対応に、同時に複数生成することができる。
【００５０】
図４は、本発明のパケットバッファ装置における入力データ及び出力データの説明図である。同図は、論理チャネルＡ，Ｂ，Ｃのパケット４−１，  ４−２，  ４−３が、ＡＴＭセルとして論理チャネルにより多重されて、パケットバッファ装置１−１０に入力され、パケットバッファ装置１−１０は、入力されたＡＴＭセルをパケットに組み立て、上位レイヤの指示により、論理チャネルＸ，Ｙ，Ｚのセル４−５，  ４−６，  ４−７として、パケット単位に多重して出力する例を示している。
【００５１】
図の（ａ）は各送信元のパケットを示し、各送信元から論理チャネルＡ，Ｂ，Ｃにより、それぞれのパケットが転送されて来る。図の（ｂ）は、各パケットがＡＴＭセル化される様子を示し、論理チャネルＡのパケットは、先頭セルＡ１から最終セルＡＥのセルにセル化され、論理チャネルＢのパケットは、先頭セルＢ１から最終セルＢＥのセルにセル化され、論理チャネルＣのパケットは、先頭セルＣ１から最終セルＣＥのセルにセル化される。
【００５２】
各セルＡ１〜ＡＥ，Ｂ１〜ＢＥ，Ｃ１〜ＣＥは、図の（ｃ）に示すように、論理チャネルにより多重されて転送され、パケットバッファ装置１−１０には到着順にそれらのセルが入力される。
【００５３】
パケットバッファ装置１−１０は、各論理チャネル毎に、入力されたセルのうち、パケットの最終データを含む最終セルを、ＡＡＬタイプ５のプロトコルのペイロードタイプ表示情報により認識し、パケット最終表示信号ＥＯＭを抽出する。
【００５４】
また、パケットバッファ装置１−１０は、各論理チャネルについて、最終セルの認識を行うとともに、最終セルの次に入力されたセルをパケットの先頭データを含む先頭セルとして認識し、パケット先頭表示信号ＢＯＭを抽出する。
【００５５】
パケットバッファ装置は、パケット先頭表示信号ＢＯＭとパケット最終表示信号ＥＯＭとを基にパケットを組み立て、各パケット単位にセルをまとめて多重（パケット多重）し、上位レイヤからの指示によりそれぞれ論理チャネルＸ，Ｙ，Ｚとしてセルを出力する。
【００５６】
図の（ｄ）はパケット多重により出力されるセルの様子を示している。セルＸ０，Ｘ１，Ｘ２・・・ＸＥは、論理チャネルＡのパケットを論理チャネルＸに変換して出力する例を示し、その際、ユーザから送信されたパケットを網内に転送する場合等のように、網内転送用のヘッダセルＸ０を付加して出力する例を示している。
【００５７】
セルＹ１，Ｙ２・・・ＹＥは、論理チャネルＢのパケットを論理チャネルＹに変換して出力する例を示し、その際、ユーザから送信されたパケットをユーザに転送する場合等のように、ヘッダセルを保存したまま出力する例を示している。
【００５８】
セルＺ１・・・ＺＥは、論理チャネルＣのパケットを論理チャネルＺに変換して出力する例を示し、その際、網からユーザにパケットを転送する場合等のように、網内で付加されたヘッダセルＺ０（図示省略）を削除して出力する例を示している。
【００５９】
図５、図６及び図７は、本発明の個別バッファ判定部によるバッファ種別の判定の説明図である。図５は、ＡＴＭセルの論理チャネルに従ってバッファ種別を判定する構成を示している。
【００６０】
図５に示す個別バッファ判定部１−１１は、対象論理チャネル設定部５−１１と比較部５−１２とにより構成される。対象論理チャネル設定部５−１１は、判定対象となる論理チャネルを設定し、各個別バッファのバッファ種別（＃０，＃１，＃２・・・）毎に、そのバッファ種別を使用する論理チャネルの番号を設定する。
【００６１】
比較部５−１２は、入力されたＡＴＭセルの論理チャネルの番号と対象論理チャネル設定部５−１１に設定された論理チャネルの番号とを比較し、合致した場合にそのバッファ種別情報をＡＴＭセルとともに出力する。
【００６２】
図５に示す動作例では、対象論理チャネル設定部５−１１のバッファ種別＃０に論理チャネルＡの番号、バッファ種別＃１に論理チャネルＢの番号を設定している。この場合、入力されたセルの論理チャネルＡとＢのセルについては、比較部５−１２において合致が検出され、論理チャネルＡのセルにはバッファ種別情報＃０が、論理チャネルＢのセルにはバッファ種別情報＃１が付加されて出力される。
【００６３】
論理チャネルＣ，Ｄの入力セルは、その論理チャネルの番号が対象論理チャネル設定部５−１１に設定されたものと合致しないため、比較部５−１２はバッファ種別情報として共通バッファの種別情報を付加して出力する。
【００６４】
図６は、論理チャネル群に応じてバッファ種別を判定する個別バッファ判定部の構成例を示している。対象論理チャネル設定部６−１１は、論理チャネルの番号のビット指定機能と、各個別バッファのバッファ種別（＃０，＃１，＃２・・・）毎にそのバッファ種別を使用する論理チャネルの番号を設定機能とを備える。
【００６５】
そして、比較部６−１２は、入力されたＡＴＭセルの論理チャネルの番号と対象論理チャネル設定部６−１１に設定された論理チャネルの番号とを、指定されたビット（例えば上位４ビット）について比較し、合致した場合にそのバッファ種別情報をＡＴＭセルとともに出力する。
【００６６】
このようなビット指定機能により、一つのバッファ種別の個別バッファを、複数の論理チャネルの群で共有して使用することができる。図６に示す動作例では、ビット指定部に‘１１１１００００’（ｂ：バイナリ表示）を設定し、対象論理チャネル番号の上位４ビットについて判定するように指定する。
【００６７】
この場合、論理チャネル番号の上位４ビットが‘０００１’である論理チャネルＡと論理チャネルＢとがバッファ種別＃０を使用し、上位４ビットが‘１０００’である論理チャネルＣがバッファ種別＃１を使用し、論理チャネルＤは、その上位４ビットが対象論理チャネル設定部６−１１に設定されたいずれの番号とも合致せず、共通バッファを使用することとなる。
【００６８】
図７は、論理チャネル群とセル損失優先表示情報に応じてバッファ種別を判定する個別バッファ判定部の構成例を示している。図７に示す個別バッファ判定部１−１１の対象論理チャネル設定部７−１１は、前述したビット指定による論理チャネル群の指定とともに、セル損失優先表示（ＣＬＰ）ビットによるバッファ種別の指定を行う。セル損失優先表示（ＣＬＰ）ビットは、ＡＴＭセルへッダに設定され、輻輳時に優先的に廃棄するセルには１が表示される。
【００６９】
比較部７−１２では、論理チャネル番号の指定ビットと併せてセル損失優先表示（ＣＬＰ）ビットも比較する。この構成により、同一の論理チャネル群内でも、優先セル（パケット）と非優先セル（パケット）とを選別し、それぞれに異なるバッファ種別を割り当てることができる。
【００７０】
なお、セル損失優先表示（ＣＬＰ）ビットの比較によるバッファ種別の選り分けは、図４に示した論理チャネル番号の全ビットの比較に応じてバッファ種別を判定する個別バッファ判定部に適用することもできる。
【００７１】
図７に示す動作例において、論理チャネルＡと論理チャネルＢとでは、指定ビット（上位４ビット）がバッファ種別＃０の設定値と同一で、同一の論理チャネル群となるが、論理チャネルＢはセル損失優先表示（ＣＬＰ）ビットが‘１’であるため、バッファ種別＃０に設定された値と合致せず、論理チャネルＢは共通バッファを使用し、論理チャネルＡは、バッファ種別＃０に設定されたセル損失優先表示（ＣＬＰ）ビットと合致し、バッファ種別＃０を使用することとなる。
【００７２】
また、論理チャネルＣは、バッファ種別＃１に設定された論理チャネル番号の指定ビットと合致するが、セル損失優先表示（ＣＬＰ）ビットが合致せず、共通バッファを使用することとなる。論理チャネルＤは、バッファ種別＃０，＃１に設定された論理チャネル番号のいずれにも合致せず、共通バッファを使用することとなる。
【００７３】
又、セルの優先度を示すセル損失優先表示（ＣＬＰ）に代えて、セルのペイロード内のＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ６）のプロトコルによるパケットへッダ内のＰｒｉｏｒｉｔｙビットを用いてもよい。更に、その他の情報要素、例えばＩＰパケットのＩＰアドレス等と組み合わせてバッファ種別の判定を行うようにすることもできる。
【００７４】
図８及び図９は本発明のパケットバッファ装置の初期状態の説明図である。図８はバッファメモリを共通バッファとしてのみ使用する場合の初期状態を示し、図９はバッファメモリを共通バッファと個別バッファとに分割して使用する場合の初期状態を示している。
【００７５】
いずれの場合でも、バッファメモリ１−１４は、ｎ個のバッファセグメント＃１〜＃ｎを備え、各バッファセグメント＃１〜＃ｎは、１セル分のデータの格納が可能な容量を有する。以下、バッファセグメントを単にバッファと称す。
【００７６】
図８に示すようにバッファメモリ１−１４を共通バッファとして使用する場合、共通空きバッファポインタ１−１５内の先頭ポインタは、先頭の空バッファ＃１を示し、最終ポインタは最後尾の空バッファ＃ｎを示す。空きバッファ数はｎである。
【００７７】
バッファ種別（＃０，＃１・・・）毎の各個別空バッファポインタ１−１７は、それぞれの個別バッファの先頭ポインタ、最終ポインタ、空きバッファ数を格納する領域を有するが、図８の構成例は個別バッファを使用しない例であるため、それらの領域には未使用情報が格納される。
【００７８】
バッファメモリ１−１４内の各バッファ＃１〜＃ｎは、各バッファ対応のバッファ管理部１−１３により管理され、バッファ管理部１−１３は各バッファ対応に、次バッファアドレス、バッファ種別、転送制御情報を保持する記憶部を備える。
【００７９】
次バッファアドレスは、それぞれ、複数のバッファを連結するための連結先のバッファアドレスを示し、これにより、複数のバッファが順次リンクされ、相互に連結される。
【００８０】
バッファ種別は、該バッファが共通バッファに属するか、どの個別バッファ（＃１，＃２・・・＃３）に属するかを示す情報である。転送制御情報は、パケット長（バッファ数）、上位レイヤ処理完了フラグ、出力チャネル番号、ヘッダセル付加・削除の情報である。
【００８１】
次、バッファメモリ１−１４を共通バッファ及び個別バッファとして使用する場合について、図９を参照して説明する。図９はバッファ種別＃０の個別バッファを用いた構成例を示し、ｎ個のバッファの内、ｍ個が個別バッファで、残りの（ｎ−ｍ）個が共通バッファであるとする。
【００８２】
共通空きバッファポインタ１−１５内の先頭ポインタは、バッファ＃１を示し、最終ポインタはバッファ＃（ｎ−ｍ）を示し、空バッファ数は（ｎ−ｍ）となる。バッファ種別＃０の個別空きバッファポインタ１−１７内の先頭ポインタはバッファ＃（ｎ−ｍ＋１）を示し、最終ポインタはバッファ＃ｎを示し、空バッファ数はｍとなる。
【００８３】
バッファ管理部１−１３の次バッファアドレスには、バッファ＃１からバッファ＃（ｎ−ｍ）までが、共通空バッファとして連結されるようにバッファアドレスが格納され、また、バッファ＃（ｎ−ｍ＋１）からバッファ＃ｎまでが個別空きバッファとして連結されるようにバッファアドレスが格納される。
【００８４】
このような設定により、バッファ＃１からバッファ＃（ｎ−ｍ）までが共通空バッファとして使用され、バッファ＃（ｎ−ｍ＋１）からバッファ＃ｎまでが個別バッファとして使用される。図９に示した構成例は個別バッファの種別が一つであったが、同様な手法により個別バッファの種別を任意に複数設定することができる。
【００８５】
図１０、図１１及び図１２は本発明のパケット組み立て時のバッファ構成の説明図である。図１０は、論理チャネルＡと論理チャネルＢとが共通バッファを使用してパケットを組み立てる例を示している。
【００８６】
図１０において、パケットバッファ装置に、論理チャネルＡのセルＡ１，Ａ２，Ａ３，ＡＥと論理チャネルＢのセルＢ１，Ｂ２，ＢＥとが、Ａ１，Ｂ１，Ａ２，Ａ３，Ｂ２，ＢＥ，ＡＥの順序で到着するものとする。
【００８７】
上記の到来セルは、個別バッファ判定部１−１１により、共通バッファを使用するものと判定され、それぞれの論理チャネルに対して共通バッファを割り当てる。また、論理チャネルＡ及び論理チャネルＢのそれぞれに対応しパケット組み立てポインタ１−１８Ａ及び１−１８Ｂを用いて、論理チャネル単位にパケットを組み立てる。
【００８８】
チャネルＡのパケット組み立てポインタ１−１８Ａは、先頭セルＡ１の格納のために、当初空バッファであったバッファ＃１を割り当て、そのアドレスを先頭ポインタに格納する。
【００８９】
また、チャネルＢのパケット組み立てポインタ１−１８Ｂは、先頭セルＢ１の格納のために、当初空バッファであったバッファ＃２を割り当て、そのアドレスを先頭ポインタに格納する。
【００９０】
論理チャネルＡの引続き到着するセルＡ２，Ａ３，ＡＥに対して、到着順に格納されるバッファ＃１，＃３，＃４，＃７が論理チャネルＡに関して連結されるように、各バッファ対応部のバッファ管理部１−１３の次バッファアドレスにそれぞれのバッファアドレスを格納する。そして、最終セルが到着したとき、チャネルＡのパケット組み立てポインタ１−１８Ａの最終ポインタにバッファ＃７のアドレスが、バッファ数に４が格納される。
【００９１】
論理チャネルＢの引続き到着するセルＢ２，ＢＥに対して、到着順に格納されるバッファ＃２，＃５，＃６が論理チャネルＢに関して連結されるように、各バッファ対応部のバッファ管理部１−１３の次バッファアドレスにそれぞれのバッファアドレスを格納する。そして、最終セルが到着したとき、チャネルＢのパケット組み立てポインタ１−１７Ｂの最終ポインタにバッファ＃６のアドレスが、バッファ数に３が格納される。
【００９２】
このようにして、論理チャネルＡのパケットは、バッファ＃１、＃３、＃４、＃７を使用し、論理チャネルＢのパケットは、バッファ＃２、＃５、＃６を使用する。共通空きバッファポインタ１−１４内の先頭ポインタは、空バッファの先頭バッファ＃８を示し、最終ポインタはバッファ＃ｎを示し、空きバッファ数は（ｎ−７）となる。
【００９３】
図１１は、論理チャネルＡが共通バッファを使用し、論理チャネルＢがバッファ種別＃０の個別バッファを使用する例を示している。ここで、共通バッファはバッファ＃１から＃（ｎ−ｍ）まで、バッファ種別＃０の個別バッファはバッファ＃（ｎ−ｍ＋１）から＃ｎまでとする。
【００９４】
論理チャネルＡのパケットは、バッファ＃１、＃２、＃３、＃４に格納され、論理チャネルＢのパケットは、バッファ＃（ｎ−ｍ＋１）、＃（ｎ−ｍ＋２）、＃（ｎ−ｍ＋３）に格納される。
【００９５】
共通空きバッファポインタ１−１５内の先頭ポインタは、バッファ＃５を示し、最終ポインタは、バッファ＃（ｎ−ｍ）を示し、バッファ数は（ｎ−ｍ−４）となる。バッファ＃５〜＃（ｎ−ｍ）は、バッファ管理部１−１２内次バッファアドレスによりリンクされる。
【００９６】
論理チャネルＡのパケット組立ポインタ１−１８Ａ内の先頭ポインタは、バッファ＃１を示し、最終ポインタは、バッファ＃４を示し、バッファ数は４となり、バッファ＃１〜＃４は、バッファ管理部１−１３内の次バッファアドレスによりリンクされる。
【００９７】
論理チャネルＢのパケット組立ポインタ１−１８Ｂ内の先頭ポインタは、バッファ＃（ｎ−ｍ＋１）を示し、最終ポインタは、バッファ＃（ｎ−ｍ＋３）を示し、バッファ数は３となり、バッファ＃（ｎ−ｍ＋１）〜＃（ｎ−ｍ＋３）は、バッファ管理部１−１３内次バッファアドレスによりリンクされる。
【００９８】
バッファ種別＃０の個別空きバッファポインタ１−１７内の先頭ポインタは、バッファ＃（ｎ−ｍ＋４）を示し、最終ポインタは、バッファ＃ｎを示し、バッファ数は（ｍ−３）となる。バッファ＃（ｎ−ｍ＋４）〜＃ｎは、バッファ管理部１−１３内次バッファアドレスによりリンクされる。
【００９９】
図１２は、論理チャネルＡが共通バッファを使用し、論理チャネルＢがバッファ種別＃０の個別バッファを使用し、個別バッファの容量が不足した場合に、共通バッファの空きバッファを使用する構成例を示している。
【０１００】
図１２に示すように、ｍ個のバッファを有するバッファ種別＃０の個別バッファののうち、バッファ＃（ｎ−ｍ−１）からバッファ＃（ｎ−１）までの（ｍ−１）個のバッファが使用中であるとする。
【０１０１】
論理チャネルＢのパケットの第一セルＢ１は、バッファ種別＃０の個別バッファのバッファ＃ｎに格納されるが、ここで個別バッファが無くなり、第二セルＢ２、第三セルＢＥ（最終セル）は、個別バッファに格納することができないので、共通バッファを借用して格納する。
【０１０２】
個別バッファのバッファ＃ｎの次に共通バッファのバッファ＃４がリンクされ、第二セルＢ２を該バッファ＃４に格納し、その次に共通バッファのバッファ＃５がリンクされ、バッファ＃５に第三セルＢＥ（最終セル）を格納する。
【０１０３】
論理チャネルＢのパケット組立ポインタ１−１８Ｂ内の先頭ポインタは、バッファ＃ｎを示し、最終ポインタは、バッファ＃５を示し、バッファ数は３となる。バッファ＃ｎ，＃４，＃５はバッファ管理部１−１３内の次バッファアドレスによりリンクされる。
【０１０４】
論理チャネルＡのセルは、共通バッファのバッファ＃１，＃２，＃３，＃６に格納され、それらのバッファは、バッファ管理部１−１２内の次バッファアドレスによりリンクされる。
【０１０５】
共通空きバッファポインタ１−１５内の先頭ポインタは、バッファ＃７を示し、最終ポインタは＃（ｎ−ｍ）を示し、空きバッファ数は、（ｎ−ｍ−６）となる。個別空きバッファポインタ１−１７内の先頭ポインタ及び最終ポインタは、無効表示となり、空きバッファ数は０となる。
【０１０６】
図１３は本発明のパケット出力時のバッファ構成の説明図である。同図は、最初に論理チャネルＢのパケットを出力し、次に、論理チャネルＡのパケットを出力する場合を示している。
【０１０７】
パケット出力待ちポインタ１−１９内の先頭ポインタは、論理チャネルＢのパケットの先頭セルデータＢ−１を格納するバッファ＃（ｎ−ｍ＋１）を示す。バッファ＃（ｎ−ｍ＋１）の次に、順に、バッファ＃（ｎ−ｍ＋１），＃（ｎ−ｍ＋２），＃（ｎ−ｍ＋３）がリンクされ、その次に論理チャネルＡのバッファ＃１，＃２，＃３，＃４がリンクされる。
【０１０８】
パケット出力待ちポインタ１−１９内の最終ポインタは、論理チャネルＡのパケットの最後尾セルデータＡ−Ｅを格納するバッファ＃４を示し、バッファ数は７となる。各バッファは、バッファ管理部１−１３内の次バッファアドレスにてリンクされる。
【０１０９】
そして、上位レイヤからの指示をバッファ管理部１−１３内の転送制御情報部に保持し、その情報に従い、チャネル変換部１−２１において、論理チャネルＡを論理チャネルＸへ変換し、論理チャネルＢを論理チャネルＹへ変換して、セルＹ１，Ｙ２，ＹＥ，Ｘ１，Ｘ２，Ｘ３，ＸＥの順でパケット単位にセルを出力する。
【０１１０】
図１４及び図１５は本発明のパケット組み立て時のバッファ制御のフローチャートである。以下、このフローチャートに従って、パケット組み立てにおけるバッファ制御動作を説明する。
【０１１１】
まず、個別バッファ判定部からの情報によりバッファ種別を判定し（１４−１）、そのバッファ種別に対応した空きバッファポインタ内の空きバッファ数を読み出し（１４−２）、空きバッファ数が０でなければ、バッファの獲得処理として、空きバッファポインタ内の先頭ポインタを読み出し、該先頭ポインタが示すバッファへセルデータを書き込み（１４−３）、先頭ポインタが示すバッファ管理部内の次バッファアドレスを空きバッファポインタ内の先頭ポインタへ書き込み（１４−４）、空きバッファ数を一つ減少（−１）させる（１４−５）。
【０１１２】
空きバッファ数が０であった場合、そのバッファ種別が共通バッファであったときは、バッファオーバフロー通知処理を行い（１４−６）、バッファ種別が個別バッファであったときは、共通空きバッファポインタの空きバッファ数を読み出し（１４−７）、共通バッファの空きバッファ数が０の場合は、バッファオーバフロー通知処理を行う（１４−６）。
【０１１３】
共通バッファの空きバッファ数が０でない場合は、共通バッファを借用することとし、借用する場合のバッファ獲得処理として、共通空バッファポインタの先頭ポインタが示すバッファへセルデータを書き込み（１４−８）、先頭ポインタが示すバッファ管理部内の次バッファアドレスを、共通空バッファポインタの先頭ポインタへ書き込み（１４−９）、空きバッファ数を一つ減少（−１）させる（１４−１０）。
【０１１４】
そして、この借用した共通バッファを、個別バッファとして個別バッファのバッファ数を増加させるか、又は共通バッファのままとしておくかを、後に説明する個別バッファ生成制御部内の自動増加指示によって判定し（１５−１）、増加指示有りの場合は、個別バッファ自動増加処理として、獲得した該バッファのバッファ管理部内バッファ種別を、個別バッファ判定部から指定された個別バッファ種別に書換え（１５−２）、後に説明する個別バッファ生成制御部内の個別バッファ総数とバッファ数カウンタとを一つ増加（＋１）させる（１５−３）。
【０１１５】
以上のバッファ獲得処理、更には個別バッファ自動増加処理の終了後、パケット組み立て処理として、獲得したバッファのアドレスを、該当論理チャネルのパケット組立ポインタ内の最終ポインタが示すバッファのバッファ管理部の次バッファアドレスへ書き込み、更に該獲得したバッファのアドレスを、パケット組立ポインタ内の最終ポインタにも書き込み（１５−４）、該当論理チャネルのパケット組み立てポイント内のバッファ数を一つ増加（＋１）させ（１５−５）、パケット組み立て処理を終了する。
【０１１６】
図１６及び図１７は本発明のパケット出力時のバッファ制御のフローチャートである。以下、このフローチャートに従って、パケット出力におけるバッファ制御動作を説明する。
【０１１７】
まず、パケット出力待ちポインタ内のバッファ数を読み出し、出力待ちのパケットがあるかどうかを判定し（１６−１）、有り（出力待ちのバッファ数≠０）の場合、パケット出力待ちポインタ内の先頭ポインタが示すバッファ管理部内の転送制御情報部のパケット長を読み出し、その数値を一つ減算（−１）する（１６−２）。
【０１１８】
減算（−１）した結果によりパケット長を判定し（１６−３）、その結果が０の場合、該パケットは１セルにて構成されるパケットであるので該セルを出力するとパケット出力完了であり、単体セル出力処理として、パケット出力待ちポインタ内の先頭ポインタを読み出し、該先頭ポインタが示すバッファから該セルを読み出し、出力するとともにパケット先頭表示（ＢＯＭ）信号及びパケット最終表示（ＥＯＭ）信号を出力する（１６−４）。
【０１１９】
そして、パケット出力待ちポインタのポインタ更新処理として、パケット出力待ちポインタ内のバッファ数を一つ減算（−１）し（１６−５）、該パケットの最終バッファ（即ち該セルのバッファ）のバッファ管理部内の次バッファアドレスを、パケット出力待ちポインタ内の先頭ポインタへ書き込み（１７−７）、出力処理を終了する。
【０１２０】
前述のフロー（１６−３）の判定において、減算の結果が０でなかった場合、即ちパケットが複数セルにより構成されている場合、先頭セル出力処理として、パケット出力待ちポインタ内の先頭ポインタが示すバッファよりセルを読み出し、出力するとともにパケット先頭表示（ＢＯＭ）信号を出力し（１６−６）、ポインタ更新処理として、パケット出力待ちポインタ内のバッファ数を一つ減算（−１）する（１６−７）。
【０１２１】
第二セル目以降の出力は、パケット出力待ちポインタ内の先頭ポインタが示すバッファ管理部内の制御部のパケット長を更に一つ減算（−１）し（１７−１）、パケット長情報を判定し（１７−２）、パケット送出未完了の場合は、前回出力したバッファ管理部内の次バッファアドレスが示すバッファよりセルを読み出して出力し（１７−３）、パケット出力待ちポインタ内のバッファ数を一つ減算（−１）する（１７−４）。この場合は中間セルであるのでパケット先頭表示（ＢＯＭ）又はパケット最終表示（ＥＯＭ）信号は出力しない。
【０１２２】
パケット出力待ちポインタ内の先頭ポインタが示すバッファ管理部内の制御部のパケット長が０となった場合、即ちパケット出力完了の場合は、前回出力したバッファ管理部内の次バッファアドレスが示すバッファよりセルを読み出して出力するとともにパケット最終表示（ＥＯＭ）信号を出力し（１７−５）、パケット出力待ちポインタ内のバッファ数を一つ減算（−１）し（１７−６）、該パケットの最終バッファのバッファ管理部内の次バッファアドレスを、パケット出力待ちポインタ内の先頭ポインタへ書き込み（１７−７）、出力処理を終了する。
【０１２３】
図１８は本発明の個別バッファ生成制御部の構成の説明図である。個別バッファ生成制御部１−１５は、全体を管理する管理部１８−１と、各バッファ種別毎の個別バッファの総数を指定する個別バッファ総数指定部１８−２と、バッファ構築時に管理部１８−１が使用するバッファ数カウンタ１８−３と、バッファ構築を指示するバッファ構築指示部１８−４と、バッファ開放を指示するバッファ開放指示部１８−５と、図１４で説明した共通バッファからバッファを借用して獲得した場合に獲得したバッファを、共通バッファへ戻さずに個別バッファとして増加させるかを指示する自動増加指示部１８−６とにより構成される。
【０１２４】
図１９は本発明の個別バッファ生成制御部の設定手順の説明図である。個別バッファの初期生成時は、マイクロプログラム等から、個別バッファ総数を設定し、バッファ構築指示をオンにし、自動増加指示をオン又はオフとする。
【０１２５】
個別バッファを全て開放し、共通バッファとするときは、個別バッファ総数に０を設定し、バッファ開放指示をオンとする。
既に存在する個別バッファのバッファ量を増加させるときは、個別バッファ総数に、増加させた後の総数を設定し、バッファ構築指示をオンにし、自動増加指示をオン又はオフとする。
【０１２６】
既に存在する個別バッファのバッファ量を減少させるときは、個別バッファ総数に、減少させた後の総数を設定し、バッファ開放指示をオンにし、自動増加指示をオン又はオフとする。
【０１２７】
図２０及び図２１は本発明の個別バッファ生成制御部内の管理部における動作のフローチャートである。図２０はセル出力後のバッファ開放処理のフローを示す。図２１は空きバッファへのリンク処理のフローを示す。
【０１２８】
図２０のフローにおいて、パケット出力処理により出力したバッファに対応したバッファ管理部内のバッファ種別を判定する（２０−１）。バッファ種別が共通バッファであった場合、現在、個別バッファ構築指示が有る（オン）かを判定し（２０−２）、無し（オフ）の場合はそのまま共通空きバッファへリンクし（２０−３）、個別バッファの生成、開放、増減の処理を行うことなく、バッファ開放処理を終了する。
【０１２９】
有りの場合は、個別バッファの生成又は増加であるので、構築指示がされている個別空きバッファへリンクし（２０−４）、リンクしたバッファのバッファ管理部内のバッファ種別を個別バッファへ書換え（２０−５）、バッファ数カウンタを一つ加算し（＋１）し（２０−６）、個別バッファ総数に設定された数になったかを判定し（２０−７）、総数と同数となった場合はバッファ構築指示をオフとし（２０−８）、個別バッファ生成又は増加を完了し、バッファ開放処理を終了する。総数と同数でない場合は、個別バッファの生成又は増加を継続する。
【０１３０】
出力されたバッファ種別が個別バッファであった場合、現在、個別バッファ開放指示が有るかを判定し（２０−９）、無しの場合は、そのまま該個別空きバッファへリンクし（２０−１０）、個別バッファの生成、開放、増減の処理を行うことなく、バッファ開放処理を終了する。
【０１３１】
有りの場合は、個別バッファの開放又は減少であるので、共通バッファの空バッファへリンクし（２０−１１）、リンクしたバッファのバッファ管理部内バッファ種別を共通バッファへ書き換え（２０−１２）、バッファ数カウンタを一つ減算（−１）し（２０−１３）、個別バッファ総数に設定された数になったかを判定し（２０−１４）、総数と同数となつた場合はバッファ開放指示をオフにし（２０−１５）、個別バッファの開放又は減少処理をを完了し、バッファ開放処理を終了する。総数と同数でない場合は、個別バッファの開放又は減少処理を継続する。
【０１３２】
ここで、図２１を参照して空きバッファへのリンク処理を説明する。リンクさせる空きバッファの空きバッファポインタに保持されている空きバッファ数を判定し（２１−１）、０の場合はリンクするバッファのアドレスを先頭ポインタ及び最終ポインタへ書き込み（２１−２）、空きバッファ数を一つ加算（＋１）し（２１−３）、終了する。
【０１３３】
０でない場合は、空きバッファポインタの最終ポインタを読み出し（２１−４）、リンクするバッファのアドレスを最終ポインタが示すバッファのバッファ管理部内の次バッファアドレス及び最終ポインタへ書き込み（２１−５）、空きバッファ数を一つ加算（＋１）し（２１−６）、終了する。
【０１３４】
図２２及び図２３は本発明の個別バッファ数を最適にするための個別空きバッファポインタ及び個別バッファ生成制御部の説明図である。図２２は個別空きバッファポインタ及び個別バッファ生成制御部の構成を示し、図２３はその管理部の動作フローを示す。
【０１３５】
図２２に示すように、個別空きバッファポインタ１−１７内に空きバッファ最低値保持部２２−１を設け、空きバッファ数が最低値を示す度にその最低値を保持する。
【０１３６】
更に個別バッファ生成制御部１−１５内に、バッファ種別毎の個別バッファ対応に、バッファ数の最適化を図る周期を設定する調整間隔タイマと、空きバッファ数の最低値を判定し、最適化を図るか否かを決定するために使用するしきい値指定部２２−３と、最適化を図る際に開放するバッファ数を指定する開放数指定部２２−４を有するバッファ調整調整部２２−１０を備える。
【０１３７】
図２３のフローチャートに従って、個別バッファ数を最適にするための個別バッファ生成制御部内管理部の動作を説明する。調整間隔タイマ２２−２に設定した周期で、個別空きバッファポインタ１−１６内の空きバッファ数最低値保持部２２−１に保持された最低値を読み出し、周期毎に判定するため、空きバッファ数最低部２２−１の保持値はクリアする（２３−１）。
【０１３８】
個別バッファ数を最適にする第１の方法として、読み出した空きバッファ数最低値を、使用されなかった余分なバッファ数と見做し、この値を個別バッファ総数指定値から減算し（２３−２）、バッファ開放指示をオンにして（２３−３）終了する。
【０１３９】
その第２の方法として、読み出した空きバッファ数最低値を、そのまま余分な数とは見做さず、しきい値指定部２２−３に設定された値と比較し（２３−４）、しきい値より小さい場合はそのまま終了し、しきい値より大きい場合は、開放数指定部２２−４に設定された値を、個別バッファ総数指定値から減算し（２３−５）、バッファ開放指示をオンにし（２３−６）終了する。
【０１４０】
【発明の効果】
以上説明したように、本発明によれば、共通バッファと個別バッファとを動的に構築し、サービス形態の異なるパケットに、それぞれ種別の異なるバッファを使用することにより、複数加入者でバッファを共有するサービスと特定加入者のみがバッファを専有するサービスのように、サービス形態の異なる加入者を混在させて収容した場合でも、他の加入者のパケットによるバッファ使用状況に影響されずに、各サービス形態に即応した転送サービスを提供することができる。
【０１４１】
また、或る個別バッファが輻輳し、空容量が不足した場合、共通バッファの一部のバッファを個別バッファに組み込み、更にそのままその個別バッファとして使用するか又は共通バッファに戻すかを、設定により変更可能とし、個別バッファと共通バッファとによるバッファリソースの使用効率を向上させることができる。
【０１４２】
また、所定の周期毎に各個別バッファの使用数を監視し、その使用実績に応じて各個別バッファの配分数を変更し、各個別バッファのバッファ数を最適化することにより、バッファリソースの最適利用を図ることができる。
【図面の簡単な説明】
【図１】本発明のパケットバッファ装置の構成図である。
【図２】本発明のパケットバッファ装置の動作説明図である。
【図３】本発明のパケットバッファ装置の動作説明図である。
【図４】本発明のパケットバッファ装置における入力データ及び出力データの説明図である。
【図５】本発明の個別バッファ判定部によるバッファ種別の判定の説明図である。
【図６】本発明の個別バッファ判定部によるバッファ種別の判定の説明図である。
【図７】本発明の個別バッファ判定部によるバッファ種別の判定の説明図である。
【図８】本発明のパケットバッファ装置の初期状態の説明図である。
【図９】本発明のパケットバッファ装置の初期状態の説明図である。
【図１０】本発明のパケット組み立て時のバッファ構成の説明図である。
【図１１】本発明のパケット組み立て時のバッファ構成の説明図である。
【図１２】本発明のパケット組み立て時のバッファ構成の説明図である。
【図１３】本発明のパケット出力時のバッファ構成の説明図である。
【図１４】本発明のパケット組み立て時のバッファ制御のフローチャートである。
【図１５】本発明のパケット組み立て時のバッファ制御のフローチャートである。
【図１６】本発明のパケット出力時のバッファ制御のフローチャートである。
【図１７】本発明のパケット出力時のバッファ制御のフローチャートである。
【図１８】本発明の個別バッファ生成制御部の構成の説明図である。
【図１９】本発明の個別バッファ生成制御部の設定手順の説明図である。
【図２０】本発明の個別バッファ生成制御部内の管理部における動作のフローチャートである。
【図２１】本発明の個別バッファ生成制御部内の管理部における動作のフローチャートである。
【図２２】本発明の個別バッファ数を最適にするための個別空きバッファポインタ及び個別バッファ生成制御部の説明図である。
【図２３】本発明の個別バッファ数を最適にするための個別空きバッファポインタ及び個別バッファ生成制御部の説明図である。
【図２４】本発明のパケットバッファ装置が適用されるパケット転送モジュールのネットワーク上の配置位置を示す図である。
【図２５】本発明のパケットバッファ装置が適用されるパケット転送モジュールの構成図である。
【図２６】共通バッファを用いたパケットバッファ装置の動作説明図である。
【図２７】個別バッファを用いたパケットバッファ装置の動作説明図である。
【符号の説明】
１−１０  パケットバッファ装置
１−１１  個別バッファ判定部
１−１２  パケットバッファ制御部
１−１３  バッファ管理部
１−１４  バッファメモリ
１−１５  共通空きバッファポインタ
１−１６  個別バッファ生成制御部
１−１７  個別空きバッファポインタ
１−１８  パケット組み立てポインタ
１−１９  パケット出力待ちポインタ
１−２０  出力制御部
１−２１  チャネル変換部
１−３０  ＡＡＬタイプ５終端装置
【図１】
0003561870.tif 000002
【図２】
0003561870.tif 000003
【図３】
0003561870.tif 000004
【図４】
0003561870.tif 000005
【図５】
0003561870.tif 000006
【図６】
0003561870.tif 000007
【図７】
0003561870.tif 000008
【図８】
0003561870.tif 000009
【図９】
0003561870.tif 000010
【図１０】
0003561870.tif 000011
【図１１】
0003561870.tif 000012
【図１２】
0003561870.tif 000013
【図１３】
0003561870.tif 000014
【図１４】
0003561870.tif 000015
【図１５】
0003561870.tif 000016
【図１６】
0003561870.tif 000017
【図１７】
0003561870.tif 000018
【図１８】
0003561870.tif 000019
【図１９】
0003561870.tif 000020
【図２０】
0003561870.tif 000021
【図２１】
0003561870.tif 000022
【図２２】
0003561870.tif 000023
【図２３】
0003561870.tif 000024
【図２４】
0003561870.tif 000025
【図２５】
0003561870.tif 000026
【図２６】
0003561870.tif 000027
【図２７】
0003561870.tif 000028