(57)【要約】【課題】可変長パケット蓄積装置及び方法に関し、バッファリング共有メモリの使用効率向上を図る。【解決手段】バッファリング共有メモリを大小２種類のサイズのバッファ領域により構成し、受信パケット長監視部１−１において、受信パケットの長さを観測して閾値を境とした大小２種類の受信パケットの受信数の比率を算出する。バッファサイズ振り分け部１−２は、その大小受信パケットの受信数の比率と、バッファリング共有メモリの大小各サイズのバッファ領域の構成比とが一致するように、バッファ領域の使用済み（空き）ポインタの次回の使用時のサイズを決定し、そのサイズを空きポインタ管理部１−４へ通知する。空きポインタ管理部１−４は大小各サイズのバッファ領域の空きポインタキューを有し、指示されたサイズの空きポインタキューに空きポインタを登録する。受信パケット長の大小により格納するバッファ領域の大小を振り分ける。【選択図】      図１
2005184179.tif 000002
【特許請求の範囲】
【請求項１】
入力される可変長受信パケットの長さについての受信頻度の統計データを算定する受信パケット長監視手段と、
可変長受信パケットを格納するサイズの異なる複数種類のバッファ領域から構成されるバッファリング共有メモリと、
該バッファリング共有メモリにおけるサイズの異なる複数種類のバッファ領域の構成比率を、前記受信パケット長監視手段から得た可変長受信パケットの長さについての受信頻度の統計データを基に変更する手段と
を備えたことを特徴とする可変長パケット蓄積装置。
【請求項２】
前記受信パケット長監視手段は、入力される可変長受信パケットの長さが所定の閾値以上か否かを判定して可変長受信パケットを大小２種類の何れかに振り分ける手段を備え、
前記振り分け手段により振り分けた大サイズの可変長受信パケットを大サイズのバッファ領域に格納し、小サイズの可変長受信パケットを小サイズのバッファ領域に格納する構成を有することを特徴とする請求項１に記載の可変長パケット蓄積装置。
【請求項３】
前記バッファ領域を、大サイズのバッファ領域と該大サイズのバッファ領域を複数個に分割した小サイズとのバッファ領域とから構成し、大サイズのバッファ領域の単位でその先頭アドレスのみを空きポインタとして管理する空きポインタメモリと、
大サイズのバッファ領域の単位毎に各小サイズのバッファ領域の空き状態を示すサブアドレスフラグを記憶するバッファサイズ管理メモリと
を備えたことを特徴とする請求項１又は２に記載の可変長パケット蓄積装置。
【請求項４】
入力される可変長受信パケットの長さについての受信頻度の統計データを算定する受信パケット長監視ステップと、
サイズの異なる複数種類のバッファ領域で構成された受信パケット格納用のバッファリング共有メモリに対して、該サイズの異なる複数種類のバッファ領域の構成比率を、前記受信パケット長監視手段から得られる可変長受信パケットの長さについての受信頻度の統計データを基に変更するステップと、
入力される可変長受信パケットの長さに応じて最も少ない不使用領域となるバッファ領域を選択して該可変長受信パケットを格納するステップと
を含むことを特徴とする可変長パケット蓄積方法。
【請求項５】
前記受信パケット長監視ステップは、入力される可変長受信パケットの長さが所定の閾値以上か否かを判定して可変長受信パケットを大小２種類の何れかに振り分けるステップを含み、
前記振り分けステップにより振り分けた大サイズの可変長受信パケットを大サイズのバッファ領域に格納し、小サイズの可変長受信パケットを小サイズのバッファ領域に格納するステップを有することを特徴とする請求項４に記載の可変長パケット蓄積方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は可変長パケット蓄積装置及び方法に関し、特に、インターネットやＬＡＮ（Local Area Network）のネットワークの中継装置やパケットスイッチ等において、可変長データのパケットを一時的に蓄積するバッファリング共有メモリの使用効率向上を図った可変長パケット蓄積装置及び方法に関する。
【背景技術】
【０００２】
近年、インターネットの利用の普及に伴い、ネットワークにおけるパケット中継の高速処理及び中継品質の向上が求められている。パケットスイッチやパケット中継装置等は、受信したパケットをバッファリング共有メモリ（ＲＡＭ等）に一旦蓄積し、該パケットのヘッダ部の宛て先アドレスを基に送信先を決定し、蓄積された各パケットを順次バッファリング共有メモリから読み出して送信する。
【０００３】
このようなパケット蓄積装置において、受信パケットをバッファリング共有メモリへ蓄積する際、受信パケットを固定長に分割して格納する。また、バッファリング共有メモリも固定長のバッファ領域に区切っておき、受信パケットを該固定長のバッファ領域に格納していく。このとき、１つの受信パケットを連続する固定長のバッファ領域に格納する必要はなく、不連続の未使用（空き状態）のバッファ領域を順次使用して格納する。
【０００４】
受信パケットの到来順にバッファリング共有メモリに連続的に格納しても、バッファリング共有メモリから読み出すパケットの順序は、必ずしも受信パケットの到来順ではないため、バッファリング共有メモリには未使用（空き状態）のバッファ領域が不連続的にまばらに散在することになる。従って、不連続の未使用（空き状態）のバッファ領域をリンクさせて使用することにより、バッファリング共有メモリを効率良く使用することができる。このバッファリング共有メモリの蓄積方式は、リンクリストによるメモリ管理方式として一般に知られている。
【０００５】
従来のバッファリング共有メモリへの蓄積の管理方式について図９を参照して説明する。図９はサイズＳバイトのバッファリング共有メモリを、ｍバイトの固定長のバッファ領域に分割して受信パケットを格納した例を示している。同図において、パケットＡのパケット長がバッファサイズｍバイトより１バイト大きいために、パケットＡの格納領域はバッファ領域９−１及び９−２の２つのバッファ領域を使用する。この場合、バッファ領域９−２は１バイトのデータの格納だけで残りの分は不使用領域となってしまう。このような状態では使用効率が約５０％になってしまう。
【０００６】
なお、同図において、共有メモリの斜線を施したバッファ領域はパケットデータが格納され使用中の状態であることを示し、空白のバッファ領域は未使用（空き状態）であることを示している。因みに、図９のパケットＢのようにパケット長がバッファサイズｍより僅かに小さい場合、或いはパケット長が｛バッファサイズｍ×ｊ（ｊは２以上の任意の整数）−１バイト｝の場合であれば、バッファリング共有メモリの使用効率は１００％近くになる。
【０００７】
しかし、固定長のバッファサイズｍを小さくすれば、使用効率は限りなく１００％に近づくが、バッファサイズｍを小さくするに伴い、パケットを格納するバッファ領域の連結を管理するポインタ（連結するバッファ領域の共有メモリ中の先頭アドレスを示すもの）の数が増加するため、該ポインタを記憶するメモリに大容量のものを必要とし、ハードウェア規模の増大につながる。
【０００８】
バッファリング共有メモリの使用効率を向上させるための方式として、幾つかのサイズの異なる固定長のバッファ領域を準備しておき、パケットを受信した際に、そのパケット長を計測し（計測期間中はバッファリング共有メモリ以外の一時格納メモリに１パケットを保持）、該パケット長に応じ、無駄な不使用領域が最も少なくなる固定長バッファ領域を選択して格納することにより、前述の問題解決を図る技術が下記の特許文献１及び２等に記載されている。
【０００９】
下記の特許文献１は、可変長のパケットを格納する際のメモリ空間の連続性を保証し、同時にメモリ空間の無駄遣いを防止するパケットメモリ監視装置に関するもので、また、下記の特許文献２は、異なるサイズの領域から成る複数の一時記憶領域と端末識別番号による参照フラグを使用して記憶領域の有効利用を図るパケット蓄積型データ交換処理装置に関するものである。
【特許文献１】特開２００２−１８５５０５号公報
【特許文献２】特開２００１−７７８５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、前述の従来の技術のものは、事前に受信パケット長を想定してバッファサイズを予め決定し、該サイズにバッファリング共有メモリを区切っておく必要がある。しかし、ネットワークを流れる多数のパケットのサイズの想定を正確に行うことは不可能であり、パケットのサイズの想定が正確に為されない場合、想定したサイズより大きいパケットを受信できない、或いは想定したサイズよりもかなり小さいパケットしか受信されない場合には、バッファ領域内に不使用領域が多く発生し、共有メモリの使用効率が低下するという問題が発生する。
【００１１】
また、最近のネットワークを流れるパケットには、ジャンボパケット（９Ｋバイト前後）も多く発生するようになり、このジャンボパケットをサイズ計測用の一時格納メモリに保持するには、ハードウェア規模の増大が不可欠となる。また、複数のポートが混在する伝送インタフェース（例えばＳＰＩ４Ｐ２：System Packet Interface Level4,Phase2等）を使用する場合は、混在するポートの数分の一時格納メモリが必要となり、さらにハードウェア規模が増大化してしまう。以上のように、事前に想定したパケット長と異なる受信パケットに対しては、バッファリング共有メモリが効率的に使用されないという問題があった。
【００１２】
本発明は、ネットワークを流れるパケットのサイズに左右されることなく、バッファリング共有メモリを効率よく使用することができ、また、パケットを格納するバッファ領域の空き塞がり及びその連結を管理するポインタの数の増大を抑制することができる可変長パケット蓄積装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の可変長パケット蓄積装置は、（１）入力される可変長受信パケットの長さについての受信頻度の統計データを算定する受信パケット長監視手段と、可変長受信パケットを格納するサイズの異なる複数種類のバッファ領域から構成されるバッファリング共有メモリと、該バッファリング共有メモリにおけるサイズの異なる複数種類のバッファ領域の構成比率を、前記受信パケット長監視手段から得た可変長受信パケットの長さについての受信頻度の統計データを基に変更する手段と、を備えたものである。
【００１４】
また、（２）前記受信パケット長監視手段は、入力される可変長受信パケットの長さが所定の閾値以上か否かを判定して可変長受信パケットを大小２種類の何れかに振り分ける手段を備え、前記振り分け手段により振り分けた大サイズの可変長受信パケットを大サイズのバッファ領域に格納し、小サイズの可変長受信パケットを小サイズのバッファ領域に格納する構成を有するものである。
【００１５】
また、（３）前記バッファ領域を、大サイズのバッファ領域と該大サイズのバッファ領域を複数個に分割した小サイズとのバッファ領域とから構成し、大サイズのバッファ領域の単位でその先頭アドレスのみを空きポインタとして管理する空きポインタメモリと、大サイズのバッファ領域の単位毎に各小サイズのバッファ領域の空き状態を示すサブアドレスフラグを記憶するバッファサイズ管理メモリとを備えたものである。
【００１６】
また、本発明の可変長パケット蓄積方法は、（４）入力される可変長受信パケットの長さについての受信頻度の統計データを算定する受信パケット長監視ステップと、サイズの異なる複数種類のバッファ領域で構成された受信パケット格納用のバッファリング共有メモリに対して、該サイズの異なる複数種類のバッファ領域の構成比率を、前記受信パケット長監視手段から得られる可変長受信パケットの長さについての受信頻度の統計データを基に変更するステップと、入力される可変長受信パケットの長さに応じて最も少ない不使用領域となるバッファ領域を選択して該可変長受信パケットを格納するステップとを含むものである。
【００１７】
また、（５）前記受信パケット長監視ステップは、入力される可変長受信パケットの長さが所定の閾値以上か否かを判定して可変長受信パケットを大小２種類の何れかに振り分けるステップを含み、前記振り分けステップにより振り分けた大サイズの可変長受信パケットを大サイズのバッファ領域に格納し、小サイズの可変長受信パケットを小サイズのバッファ領域に格納するステップを有するものである。
【発明の効果】
【００１８】
本発明によれば、サイズの異なる複数種類の固定長バッファ領域から成るバッファリング共有メモリに、可変長パケットを分割して蓄積する際に、パケット受信時にそのパケット長の大小に関する受信頻度を算定し、該パケット長の大小に関する受信頻度の統計データを基に、バッファリング共有メモリにおけるサイズの異なる複数種類のバッファ領域の構成比率を変化させることにより、ネットワークを流れるパケットの長さに左右されることなく、バッファリング共有メモリを効率よく使用し、可変長パケット蓄積装置の性能を向上させることができる。
【００１９】
また、受信パケット長の大小を判定し、その判定結果に応じて受信パケットを大小２種類のサイズの何れかに振り分けることにより、該振り分けによる大サイズの受信パケットの格納に大サイズのバッファ領域を使用し、小サイズの受信パケットの格納に小サイズのバッファ領域を使用する制御が容易となり、効率的にバッファリング共有メモリを使用することが可能となる。
【００２０】
また、バッファ領域を、大サイズのバッファ領域と該大サイズのバッファ領域を複数個に分割した小サイズとのバッファ領域とから構成し、大サイズのバッファ領域の単位でその先頭アドレスのみを空きポインタとして管理し、大サイズのバッファ領域の単位毎に各小サイズのバッファ領域の空き状態を示すサブアドレスフラグを用いて小サイズのバッファ領域の空き塞がりを管理することにより、バッファ領域の空き塞がり及びその連結を管理するポインタの数の増大を抑制し、ハードウェア規模の増大化を防ぐことができる。
【発明を実施するための最良の形態】
【００２１】
図１は本発明によるパケット蓄積装置におけるバッファ管理部の構成を示す。該バッファ管理部は、受信パケット長監視部１−１を設け、該受信パケット長監視部１−１により、受信パケットの長さを観測し、この観測結果を使用して、ダイナミックに（動作を継続しながら）バッファリング共有メモリのバッファ領域の構成を変更するものである。
【００２２】
バッファ領域の構成の変更とは、バッファリング共有メモリを、ｍバイト及びｎバイト（ｍ＞ｎ）の２種類のサイズのバッファ領域により構成し、ｍバイトのバッファ領域の個数とｎバイトのバッファ領域の個数との比を変更することである。パケット長監視部１−１において、受信パケットの長さの統計データを採取する。この統計データの採取は、或る１つの閾値を設け、その閾値以上のパケット長の受信パケット数及びその閾値以下のパケット長の受信パケット数を、２つのカウンタを用いてカウントすることにより行う。
【００２３】
上記２つのカウンタのカウント値を基に、閾値以上のパケット長の受信パケット数と閾値以下のパケット長の受信パケット数との比率を算出し、該比率を受信状態通知情報としてバッファサイズ振り分け部１−２に通知し、バッファサイズ振り分け部１−２は一定時間毎の受信パケットの長さの状態を認識する。
【００２４】
バッファサイズ振り分け部１−２では、使用済み（空き状態）となったバッファ領域のポインタ（使用済みポインタ）をポインタ管理部１−６から受け取ると、この使用済みポインタのバッファ領域を次に使用する際のサイズを、前述の受信パケット長についての受信パケット数の比率を基に決定して、空ポインタ管理部１−４へ、該使用済みポインタのバッファ領域について次に使用する際のサイズを指示する。
【００２５】
即ち、使用済みバッファ領域を再使用する際に、ｍバイト又はｎバイトの２種類のバッファサイズの何れで使用するかをバッファサイズ振り分け部１−２で決定し、空ポインタ管理部１−４は、サイズが決定した使用済みバッファ領域のポインタを、２種類のバッファサイズ毎の空ポインタキューに登録して空ポインタのリンクリストを作成する。空ポインタメモリ１−５は、空き状態のバッファ領域のポインタを格納するメモリであり、空ポインタ管理部１−４内の２種類のバッファサイズ毎の空ポインタキューによって管理される。
【００２６】
入力される受信パケットをバッファリング共有メモリに書き込む際は、使用するバッファ領域のサイズを受信パケット長に合わせ、そのサイズのバッファ領域の空きポインタを空ポインタ管理部１−４により空ポインタメモリ１−５から読み出し、ポインタ管理部１−６を介して該空きポインタをバッファリング共有メモリへ転送し、バッファリング共有メモリは、該空きポインタを書き込みアドレスとして用いて受信パケットを書き込む。
【００２７】
図２に本発明の空きポインタ管理部の構成例を示す。空きポインタ管理部１−４は、大サイズバッファ領域用の空きポインタキュー（＃０）１−４１と、小サイズバッファ領域用の空きポインタキュー（＃１）１−４２とを備え、空きポインタキュー（＃０）１−４１は、大サイズバッファ領域の空き先頭ポインタＴＯＰ及び末尾ポインタＥＮＤを格納し、空きポインタキュー（＃１）１−４２は、小サイズバッファ領域の空き先頭ポインタＴＯＰ及び末尾ポインタＥＮＤを格納する。
【００２８】
大サイズバッファ領域用の空きポインタキュー（＃０）１−４１及び小サイズバッファ領域用の空きポインタキュー（＃１）１−４２の先頭ポインタＴＯＰには、それぞれ、大サイズバッファ領域用の各空きポインタ及び小サイズバッファ領域用の各空きポインタを、空きポインタメモリ１−５で順次連結（空きポインタメモリの各アドレスに次の空きポインタを格納）し、大サイズバッファ領域用及び小サイズバッファ領域用それぞれの空きポインタキューを編成する。
【００２９】
空きポインタ管理部１−４は、バッファサイズ振り分け部１−２から空きポインタ及びそのサイズ指示が通知されると、該空きポインタを該サイズ指示に従って、大サイズバッファ領域用又は小サイズバッファ領域用の何れか一方のバッファ領域用の空きポインタキューの末尾ポインタＥＮＤに登録する。なお、後述するが、小サイズバッファ領域用の空きポインタには、小サイズバッファ領域単位のポインタを用いず、大サイズバッファ領域単位のポインタを用いて空きポインタキューを編成する。
【００３０】
図３及び図４に本発明によるバッファリング共有メモリの構成変更例を示す。図３は初期値として、小サイズ（ｎサイズ）のバッファ領域と大サイズ（ｍサイズ）のバッファ領域とを同量の割合でバッファリング共有メモリを構成した例を示している。この後、受信状態通知により、大サイズ及び小サイズの受信パケットの受信比率が知らされると、図４に示す例のように、該受信比率に応じてバッファリング共有メモリの構成を変更する。
【００３１】
バッファリング共有メモリの構成変更は、小サイズのバッファ領域のメモリ数を｛（ｍ／ｎ）×受信比率×Ｓ｝とし、残りを小サイズのバッファ領域とする。ここで、ｍは大サイズのバッファ領域のサイズ、ｎは小サイズのバッファ領域のサイズ、受信比率は全受信パケット数に対するｍサイズ以下の受信パケットの受信数の割合、Ｓはバッファリング共有メモリ全体のサイズである。
図５に本発明のバッファサイズ管理メモリの構成を示す。バッファ領域の管理に用いるポインタには大きいバッファサイズ（ｍバイト）のポインタのみを用い、２種類のバッファサイズの各空きポインタの管理も大きいバッファサイズ（ｍバイト）の単位のポインタを用いて行い、小さいバッファサイズ（ｎバイト）のバッファ領域の管理は、大きいバッファサイズ（ｍバイト）のバッファ領域にサブアドレスを定義することによって行う。つまり、バッファ領域をｍバイト単位でポインタをつけて管理する。従って、管理するポインタ数は、全バッファリング共有メモリ容量Ｓバイト÷ｍバイトである。
【００３２】
サブアドレスの数（ｋ＋１）は、大きいバッファサイズ（ｍバイト）と小さいバッファサイズ（ｎバイト）との比により決定される。即ち、ｎ×（ｋ＋１）＝ｍとなるように決定する。各サブアドレスは、ポインタの値に０からｋまでのカウンタ値を加えることによって一意に決定する。
【００３３】
このサブアドレスの各領域を、閾値以下の短い受信パケットの格納バッファ領域として使用し、１ポインタで示される１つの大サイズバッファ領域を、連続する（ｋ＋１）個の小サイズバッファ領域として使用する。バッファ管理メモリ１−３には、サブアドレス単位に該サブアドレスの空き塞がりを示すフラグの格納領域を備える。このサブアドレスフラグはｍバイトの分割数（ｍ÷ｎ＝ｋ＋１）分のビットとなる。
【００３４】
該サブアドレスフラグは、ｍバイトサイズに定義して使用するバッファ領域については“ａｌｌ  １”、ｎバイトサイズに定義して使用するバッファ領域については“ａｌｌ  ０”に設定する。バッファリング共有メモリに蓄積された受信パケットが、送信のためにバッファリング共有メモリから読み出されて出力された後は、該パケットが蓄積されていたバッファ領域のポインタを空ポインタ（使用済みポインタ）として空きポインタメモリ１−５に登録するが、その際、サブアドレス単位に使用済みとなったサブアドレスフラグを１ビットずつ空き状態“１”にセットし、１つの大サイズバッファ領域内の全てのサブアドレスのフラグが空き状態“ａｌｌ  １”にセットされた時点で、該バッファ領域のポインタを空ポインタとして設定する。こうすることにより、該使用済みのポインタを次に使用する際に、大サイズバッファ又は小サイズバッファの何れの空きポインタとしてでも使用可能になる。
【００３５】
なお、小サイズバッファの空きポインタキューの登録されたポインタは、該ポインタのバッファ領域の一部のサブアドレスにパケットが格納され、一部のサブアドレスが未使用（空き状態）であるときは、該ポインタを空きポインタキューに繋いだままにしておき、該ポインタのバッファ領域の全てのサブアドレスにパケットが格納されたときに、使用中（塞がり）状態として空きポインタキューから外す。そして、小サイズのバッファ領域に受信パケットを格納する際に、空きポインタのバッファ領域のサブアドレスフラグを参照し、該フラグが空き状態(“１”）を示す先頭のサブアドレスから順に受信パケットを格納し、格納し終えたサブアドレスのフラグを使用中状態（“０”）に設定する。
【００３６】
図６にバッファリング共有メモリにおける小サイズ（ｎバイト）バッファ領域の割当て例を示す。同図において、斜線部の領域が小サイズ（ｎバイト）バッファ領域であることを示し、小サイズ（ｎバイト）バッファ領域は、ｍバイト単位毎にバッファリング共有メモリ内の任意の領域に割当てることができる。
【００３７】
このように、サブアドレス単位にサブアドレスフラグを実装し、該サブアドレスフラグを用いて小サイズのバッファ領域の空き状態を識別することにより、サブアドレス単位でポインタ管理する必要がなく、大きいバッファサイズ単位でポインタ管理すればよいので、空ポインタ管理のメモリは少容量のものでよくハードウェア規模の増大を防ぐことができ、ｎバイト以下のパケットであれば（ｍ／ｎ）個分のパケットをｍサイズのバッファ領域に格納でき、ｍサイズ以下のパケットをバッファリング共有メモリに効率よく格納することができる。
【実施例】
【００３８】
図７は本発明によるパケットスイッチの構成例を示す。パケットスイッチは、パケットの受信ポートを実装する受信部（＃０，＃１）７−１と、複数の受信ポートからのパケットを一つの出力ポートに多重化し、且つ、一時格納メモリを実装する多重化（ＭＵＸ）受信バッファ７−２と、受信パケットを格納するバッファリング共有メモリ７−５と、バッファリング共有メモリ７−５の管理を行うバッファ管理部７−３と、受信パケットのヘッダ情報を基に宛先の決定及びトラフィック制御を行うルーティング処理部７−４と、バッファリング共有メモリ７−５から読み出したパケットを各出力ポートに分離する分離部７−６と、分離（ＤＭＵＸ）部７−６から出力されるパケットを送信ポートのフォーマットへ変換する処理を行う送信部７−７とから構成される。
【００３９】
受信パケットをバッファリング共有メモリ７−５に蓄積する際、使用するバッファ領域のサイズを受信パケット長に合わせて使用する。図７において、パケットを受信部７−１で受信した後、多重化（ＭＵＸ）受信バッファ部７−２に実装した一時格納メモリに一定量の受信パケットを格納する。その後、バッファ管理部７−３に蓄積完了情報（データ書込み完了フラグ）及び受信パケット長情報を通知する。
【００４０】
バッファ管理部７−３は、それらの通知情報を基に受信パケットを書き込む際に使用するバッファサイズを決定する。ここで一時格納メモリをバッファリング共有メモリ７−５のバッファ領域の大きいサイズと同じサイズとし、一時格納メモリのサイズ以上のパケットを受信した際には、蓄積完了情報（データ書込み完了フラグ）を有効化することによって、受信パケットを大サイズのバッファ領域に書き込むように制御する。
【００４１】
受信パケットは受信部７−１でパケット長が計測され、該受信パケット長はバッファ管理部７−３へ転送される。多重化（ＭＵＸ）受信部７−２に実装する一時格納メモリには受信ポート毎に受信パケットを格納する。該一時格納メモリが受信パケットで満杯になった時点又１つの受信パケットの格納が完了した時点で、データ書き込み完フラグを有効化する。
【００４２】
なお、データ書き込み完了フラグは、受信パケット長が閾値より大きいか否かの情報を含む２ビットのフラグとすることができる。この情報はバッファ管理部７−３内で管理する２種類のサイズの何れのバッファ領域を使用するかの判断に使用される。バッファ管理部７−３の構成は図１に示したものと同様のものである。
【００４３】
バッファ管理部７−３は、受信部７−１及び多重化（ＭＵＸ）受信バッファ７−２からの受信パケット長及びデータ書き込み完了フラグの情報を得て、以下の処理手順によりバッファリング共有メモリ７−５の管理を行う。図８にその処理手順の流れを示す。パケットを受信すると、バッファ管理部７−３は受信パケット長と設定閾値との大小比較を行う（８−１）。この大小比較結果が出力される毎に、パケット長監視部１−１内の受信数カウンタＭ／Ｎをカウントアップする（８−２）。即ち、大の比較結果であれば受信数カウンタＭを、小の比較結果であれば受信数カウンタＮをカウントアップする。
【００４４】
パケット長監視部１−１内のタイマーにより、一定時間内の受信数カウンタＭ／Ｎのカウント数の比較計算を行い（８−３）、受信比率を算出する。該受信比率の算出結果を受信状態通知情報としてバッファサイズ振り分け部１−２に転送する。受信状態通知情報は、ステップ８−１の大小比較における設定閾値を境にした大サイズパケットと小サイズパケットの受信数の比率を示している。
【００４５】
バッファサイズ振り分け部１−２は、受信状態通知情報を入力すると次に更新されるまで該受信数の比率を保持し（８−４）、該受信数の比率を用いて使用済みポインタ（空ポインタ）を次回に使用する際に大小何れのサイズで使用するかを決定する（８−７）。使用済みポインタ（空ポインタ）がポインタ管理部１−６から受信されると（８−５）、バッファサイズ管理メモリ１−３におけるサブアドレスフラグが全て“１”かどうかを調べ（８−６）、サブアドレスフラグが全て“１”である場合に、該使用済みポインタ（空ポインタ）について次回に使用する際のサイズを決定する（８−７）。
【００４６】
上記ステップ８−７におけるサイズの決定手法として、ステップ８−４で得られた受信数の比率と、使用済みポインタ（空ポインタ）の各サイズ毎の振り分け回数の比率とが一致するように振り分ける構成とすることができる。また、過去の大サイズ小サイズのバッファ領域の構成比を記憶しておき、該バッファ領域の構成比と大小パケット長受信数の比率との差分を算出し、該差分が小さくなる方向へ使用済みポインタ（空ポインタ）のサイズを決定する構成とすることもできる。
【００４７】
バッファサイズ振り分け部１−２で空きポインタの次回のサイズを決定した後、空ポインタサイズ指示と共に空ポインタを空ポインタ管理部１−４へ転送する。空ポインタ管理部１−４は空きポインタサイズ指示及び空きポインタの情報を基に、異なるバッファサイズ毎の空ポインタキュー＃０又は＃１に空きポインタをキューイングして（８−８）、空ポインタのリンクリストを作成する。
【００４８】
ステップ８−７の決定処理により、異なるバッファサイズ毎の空ポインタキュー＃０及び＃１にキューイングしているそれぞれの空バッファ領域の数が決定し、図４に示すようにバッファリング共有メモリにおけるサイズの異なるバッファ領域の構成比が変更される。受信パケットのパケット長の状況に応じて、バッファリング共有メモリのバッファサイズの構成比を随時適応的に変化させることができ、バッファリング共有メモリの使用効率を向上させることができる。
【００４９】
以下、本発明によるバッファリング共有メモリの使用効率の向上について具体的な数値例を挙げて説明する。ここで一例としてバッファリング共有メモリのサイズを１Ｍバイトとし、２種類の固定長バッファ領域のサイズをそれぞれ５１２バイト、６４バイトとし、初期状態のバッファリング共有メモリには、５１２バイトのバッファ領域が１０００個、６４バイトのバッファ領域が８０００個存在して始動するものとする。
【００５０】
受信パケット長監視部１−１内に、５１２バイト以上のパケット長の受信パケット数を計数する受信数カウンタＡと、５１２バイト未満のパケット長の受信パケット数を計数する受信数カウンタＢとを設け、或る所定時間内に受信した受信パケットの量の比率を監視し、バッファサイズ振り分け部１−２は該比率を基に、使用済みポインタを５１２バイトサイズのバッファ領域として使用するか、６４バイトサイズのバッファ領域として使用するかを判断する。このように受信パケットの長さの統計データを基に、バッファサイズを使い分けることにより以下の効果が得られる。
【００５１】
従来型において、バッファリング共有メモリの構成を全て５１２バイトのバッファ領域にすると固定長バッファ領域は２０００個、全て６４バイトのバッファ領域にすると固定長バッファ領域は１６０００個となるが、全て５１２バイトのバッファ領域でバッファリング共有メモリを構成した場合、
・６４バイトのパケットを受信すると、使用効率は６４／５１２＝１２．５％
・６５バイトのパケットを受信すると、使用効率は６５／５１２＝１２．７％
・５１２バイトのパケットを受信すると、使用効率は５１２／５１２＝１００％
・５１３バイトのパケットを受信すると、使用効率は（５１３／５１２）×２＝５０％
となる。
【００５２】
一方、全て６４バイトのバッファ領域でバッファリング共有メモリを構成した場合、
・６４バイトのパケットを受信すると、使用効率は６４／６４＝１００％
・６５バイトのパケットを受信すると、使用効率は（６５／６４）×２＝５０％
・５１２バイトのパケットを受信すると、使用効率は（５１２／６４）×８＝１００％
・５１３バイトのパケットを受信すると、使用効率は（５１３／６４）×９＝８９％
となる。
【００５３】
上記の数値例から明らかなように、５１２バイトよりも６４バイトのバッファサイズでバッファリング共有メモリを構成したときの方が使用効率は良い。しかし、管理すべきバッファ領域（ポインタ）数が５１２バイトのサイズに対して６４バイトのサイズの方が８倍となり、６４バイトのサイズのみにするとポインタ管理部のハードウェア規模が増大してしまう。
【００５４】
そこで、本発明のようにバッファリング共有メモリを、大小２種類のサイズのバッファ領域に分割して使用することにより、前述の大小２種類のサイズのバッファ領域の長所・短所を補うことができる。そして、その２種類のサイズのバッファ領域の割合を、受信パケット長の統計データに応じて随時変更することにより、様々なパケット長の受信パケットが混在して入力される状態でも、バッファ領域を効率よく使用し、また、ハードウェア規模の増大を最小限に抑えたバッファリング共有メモリを構成することができる。
【図面の簡単な説明】
【００５５】
【図１】本発明によるパケット蓄積装置におけるバッファ管理部の構成を示す図である。
【図２】本発明の空きポインタ管理部の構成例を示す図である。
【図３】本発明によるバッファリング共有メモリの構成変更例を示す図である。
【図４】本発明によるバッファリング共有メモリの構成変更例を示す図である。
【図５】本発明のバッファサイズ管理メモリの構成を示す図である。
【図６】バッファリング共有メモリにおける小サイズ（ｎバイト）バッファ領域の割当て例を示す図である。
【図７】本発明によるパケットスイッチの構成例を示す図である。
【図８】本発明によるバッファリング共有メモリの管理の処理手順を示す図である。
【図９】従来のバッファリング共有メモリへの蓄積の管理方式の説明図である。
【符号の説明】
【００５６】
１−１  受信パケット長監視部
１−２  バッファサイズ振り分け部
１−３  バッファ管理メモリ
１−４  空ポインタ管理部
１−５  空ポインタメモリ
１−６  ポインタ管理部
【図１】
2005184179.tif 000003
【図２】
2005184179.tif 000004
【図３】
2005184179.tif 000005
【図４】
2005184179.tif 000006
【図５】
2005184179.tif 000007
【図６】
2005184179.tif 000008
【図７】
2005184179.tif 000009
【図８】
2005184179.tif 000010
【図９】
2005184179.tif 000011