(57)【特許請求の範囲】
【請求項１】
複数のユーザのメータＩＤ毎に予め設定されたトークン値によるパケット転送装置のレート監視方式において，
各メータＩＤに対して予め設定されたトークン値を一定周期毎に加算された現在のトークン値を保持する外部ＲＡＭのトークンカウンタを設け，  
入力パケットデータを格納するパケットバッファと，各パケットデータのヘッダからメータＩＤ及びレングス情報を抽出する手段から抽出された所定数のパケットデータのユーザＩＤ及びレングスを含むパケット情報と前記所定数のパケットデータのメータＩＤの相互の同一性を表す一致フラグとからなる情報を格納する第１の情報キャッシュと第２の情報キャッシュを設け，
前記第１の情報キャッシュと第２の情報キャッシュの一方を前記パケット情報の入力動作を行うよう駆動し，他方を入力された前記パケット情報を用いて各メータＩＤについてトークン演算部によるトークン演算を行うよう決められた周期で切替える信号を発生するタイミング生成部を備え，
前記トークン演算部による前記第１の情報キャッシュと第２の情報キャッシュのそれぞれの複数のパケットデータの各メータＩＤに対応するトークン演算の結果としてパケットデータの通過・廃棄を表すフラグか設定される第１の情報バッファと第２の情報バッファを備え，
前記パケットバッファからのパケットデータの出力時に前記第１の情報バッファまたは第２の情報バッファの出力を後段に出力することを特徴とするパケット転送装置のレート監視方式。
【請求項２】
請求項１において，
前記第１の情報キャッシュと第２の情報キャッシュに格納された一致フラグは，前記各情報キャッシュ内の複数のメータＩＤについて２つのメータＩＤの全ての組合せについて比較結果を表すフラグにより構成され，
前記トークン演算部は，各情報キャッシュについてのトークン値の演算において，前記一致フラグを判別して，同一メータＩＤについてのトークン演算を，前記トークンカウンタにアクセスすることなく実行することを特徴とするパケット転送装置のレート監視方式。
【請求項３】
請求項１において，
前記第１の情報キャッシュまたは第２の情報キャッシュに格納されたメータＩＤに対応したトークン値を前記外部ＲＡＭのトークンカウンタから読み出して保持するキャッシュレジスタを備え，
前記トークン算出部は前記キャッシュレジスタからトークン値を取り出して演算を行い，キャッシュレジスタ内の全てのメータＩＤについて求められたトークン値を前記外部ＲＡＭのトークンカウンタに書き込むことを特徴とするパケット転送装置のレート監視方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，レート監視方式に関し，インターネット通信に用いられるようなレイヤ２スイッチ（ＳＷ）等に設けられたパケット転送装置のレート監視方式に関する。
【背景技術】
【０００２】
従来からパケット転送装置において，入力レート／出力レートの監視を行っているが，レート監視において必要となるＩＤ（ユーザ識別のための識別番号）の数が増加する傾向にあり，今後，レート監視に求められるＩＤ数が飛躍的に増加することが予想されるため，ＩＤ数を増加可能なアーキテクチャが求められている。
【０００３】
パケット転送を行う装置等のインタフェース・ユニットで集線されるデータ容量は年々増大している。数年前まではＦＥ（Fast Ether :100 メガビット秒) やＧｂＥ（Giga Bit Ether: １ギガビット秒）が主流を占めていたが，近年ではネットワークの大容量化が進みバックボーンを中心に１０ＧｂＥ（10ギガビットイーサー）のインタフェースも増えている。
【０００４】
インタフェース・ユニットではＱｏｓ（Quality of Service) 機能を具備し，各ユーザ毎に通過・廃棄のようなレート監視を行っている。
【０００５】
図１４は対象となるネットワーク構成の例を示す。５０はそれぞれ企業または端末等である。５１はＡＳＷ（Aggregate Switch :集線装置) ，５２はパケット転送装置であるＬ２ＳＷ（Layer ２スイッチ），５３はメトロ・アクセスネットワーク（ＩＰネットワーク），５４はバックボーンを構成するＬ２ＳＷ，５５はバックボーン（フォトニックネットワーク）である。
【０００６】
図１５はＬ２ＳＷの構成例である。図中，５２はＬ２ＳＷ，５２０−１（♯０）〜５２０−４（♯３）はカード（入出力インタフェース），５２１は多数（この例はP0〜P3の４個）設けられたポート，５２２はインタフェース（ＩＦ），５２３は入力部（Ingress 機能），５２３ａは入力するパケットについて監視して予め設定された帯域を越えたパケットを廃棄するポリサー（policer)，５２４は出力部（Egress機能），５２４ａは出力するパケットをバッファに格納した後，出力されるパケットの発生分布が予め決められた帯域を越えないよう監視して規定の帯域になるよう平準化して出力する機能を持つシェーパ(shaper)である。
【０００７】
Ｌ２ＳＷ５２は端末またはネットワークに接続されたカード５２０−１（♯０）〜５２０−４（♯３）の複数のポート５２１からインタフェース５２２を通って入力部（Ingress 機能) ５２３から入力したパケットをスイッチ５２５により相互に切替接続して，各カード５２０−１（♯０）〜５２０−４（♯３）の出力部（Egress機能）５２４からインタフェース５２２を介して各ポート５２１から外部の端末やネットワークに出力される。各カードの入力部５２３のポリサー５２３ａには各ユーザから送信されて入力するパケットについて，予め各ユーザに対して送信が許容された帯域を越えないかの監視をし，越えた場合にはそのパケットを廃棄する機能を備える。また，各カードの出力部５２４のシェーパ５２４ａは各ユーザが受信することを許容された平均帯域を越えないかの監視をしてパケットを出力する。
【０００８】
図１６はトークンバケットによる帯域管理の説明図である。図中，ａは一定期間（周期）中に転送可能な（転送が許容された）データ量であるトークン供給動作を表し，例えば，１Ｍバイト／Ｓなら，周期１Sec でトークンが１Ｍbyte（メガバイト) になる。この例ではａ１〜ａ３の３回の供給動作が行われる。ｂは一定周期の時間を表し，ｂ１〜ｂ３で示す３つの周期を示す。ｃは伝送可能な容量を表すバケットであり，ｃ１〜ｃ９は時間の推移に対応して伝送可能な容量を表すバケット内のトークン量（カウンタ量という）の変化を表す。ｄは送信または受信されるパケットを表し，ｄ１，ｄ２，ｄ６，ｄ７はパケットの長さが短く（１Ｍとする），ｄ３〜ｄ５はパケットの長さが長い（２Ｍとする）ものとする。
【０００９】
以下の説明では，パケットを受信（入力）する場合の動作について記述するが，送信（出力）する場合にも同様である。周期ｂ１の開始時点で，あるユーザのバケットｃに対して，ａ１で示すトークン供給動作が実行され，当該ユーザに対して予め設定された量（この例では，１周期で３Ｍの量とする）のトークンが供給される。ｃ１の中の網かけで示す部分が新たに供給されたトークンの部分であり，３Ｍの量である。この状態でこのユーザ用のパケットｄ１を受信すると，トークン量は伝送した量（１Ｍ）だけ使用したので，この周期ｂ１で利用可能なトークンは，ｃ２に示すように３Ｍ−１Ｍ＝２Ｍとなる。この後，このユーザ用のパケットｄ２を受信すると，残りのトークンはｃ３に示すように，２Ｍ−１Ｍ＝１Ｍとなる。
【００１０】
この後，次の周期ｂ２の開始時点で，ａ２で示すトークン供給動作が実行されると，新たなトークン（３Ｍ）の供給により，ｃ４で示すように３Ｍ＋１Ｍ＝４Ｍの量にトークンが更新される。この後，パケットｄ３（長さ２Ｍ）を受信すると，バケットのトークン量はｃ５に示すように４Ｍ−２Ｍ＝２Ｍに更新される。以下，このような動作が図に示すように続けられ，周期ｂ３の開始時点で，このユーザのバケットのトークン量がｃ７に示すように３Ｍに更新され，この後パケットｄ５（長さ２Ｍ）を受信すると，バケットのトークン量はｃ８に示すように３Ｍ−２Ｍ＝１Ｍとなり，その後パケットｄ６（長さ１Ｍ）を受信すると，バケットのトークン量は１Ｍ−１Ｍ＝０の演算が行われてｃ９のように０となる。この後，更にパケットｄ７（長さ１Ｍ）を受信すると，このユーザに割り当てられたトークンは既に０になっているため，このパケットｄ７を受信することは許容されず廃棄される。このように，ユーザに付与された帯域に対応したトークン量により受信（または送信）パケットの量に応じた演算を行って，帯域の監視が行われる。
【００１１】
図１７は従来のレート監視装置の構成であり，このレート監視装置は上記図１５に示す構成におけるポリサー５２３ａやシェーパ５２４ａに相当する機構であり，上記図１６を用いて説明したトークンを用いた原理による監視を行う。
【００１２】
図１７において，６はレート監視装置，６０はトークン供給設定部，６１はトークンカウンタ，６２は一定周期毎に出力を発生するトークンタイマ，６３はリソース供給部，６４はパケット情報抽出部，６５は演算部，６６はパケットバッファである。
【００１３】
図１８はテーブルの構成例であり，図１８のＡ．はレート監視装置６の内部ＲＡＭに設けたトークン供給設定テーブル（図１７のトークン供給設定部６０に対応）の構成例，Ｂ．はレート監視装置６の内部ＲＡＭに設けたトークンカウンタテーブル（図１７のトークンカウンタ６１に対応）の構成例である。Ａ．のトークン供給設定テーブルには，各ユーザ毎の帯域監視のための識別番号であるメータＩＤ毎に，そのメータＩＤの使用・未使用（オン／オフで表す）の状態と，各ユーザに対して利用可能な（または許容された）最大帯域であるバースト値，及び利用できる平均帯域に対応するトークン量が設定されている。図１８のＢ．のトークンカウンタテーブルには，メータＩＤ毎に使用・未使用の状態と，現在の各ユーザのトークン量を表すトークンカウンタとが設定されている。
【００１４】
図１７のトークン供給設定部６０には予め，ＣＰＵ（図示省略）からユーザのメータＩＤに対応して許容されたバースト値と平均帯域に対応するトークン量が図１８のＡ．に示すテーブルに設定されている。
【００１５】
図１７のレート監視装置６のトークンタイマ６２から一定周期で出力が発生するとトークン供給設定部６０を駆動する。これにより，使用中の状態に設定されたメータＩＤに対応するトークン設定値が，順番にリソース供給部６３に出力され，リソース供給部６３は該当するメータＩＤに対応するトークンカウンタ６１の現在のトークン量を読み出してリソース供給部６３に出力し，トークン供給設定部６０からのトークン設定値を加算して，再びトークンカウンタ６１の当該メータＩＤに対応するトークンカウンに書き込む。この動作は，トークンタイマ６２からの一定周期毎に発生するタイマの出力毎に実行される。
【００１６】
レート監視装置６にパケットデータが入力されると，パケット情報抽出部６４において，パケットデータ（パケット全体）をパケットバッファ６６に格納すると共にパケット情報（送信元，送信先を含むヘッダやパケット長等の情報）を抽出して，トークンカウンタ６１に供給すると共に演算部６５に供給する。トークンカウンタ６１はパケット情報を受け取ると，当該パケットの送信先（出力側のレート監視装置の場合）のユーザ（メータＩＤ）に対応するトークンカウンタ値を読み出して演算部６５に出力する。演算部６５は入力されたトークンカウンタ値から，情報抽出部６４から入力されたパケット情報の中のパケット長の情報に相当するトークン量を減算して，その結果をトークンカウンタ６１の元の位置に書き戻す。この演算結果が正（０を含む）ならパケットバッファ６６に格納したパケットデータは所定の間隔で読み出されて出力され，演算結果が負なら演算部６５からはパケットデータを廃棄することを指示する廃棄フラグが出力される。このようにして，レート監視装置６により出力する送信先に対応して予め設定された帯域に制限するよう監視（シェーパ機能）が行われる。なお，入力パケットの送信元アドレスに対応したトークンを監視（ポリサー機能）することも行われている。
【００１７】
以前の集線ではＦＥ（Fast Ether）やＧｂＥ（Giga Bit Ether）を束ねるようなインタフェース・ユニットが主流であり，ユニットで集線後のデータレートも１０ＧｂＥ程度であったが，近年の大容量化で１０ＧｂＥを束ねるユニットが求められると共に，集線したデータの細やかなレート監視が求められている。
【００１８】
上記図１７に示すレート監視の技術では，ユーザ数が増大して且つ集線による高速化したパケットに対応するため，デバイス内部のメモリ（図１７のトークンカウンタ６１の内部ＲＡＭ）を利用して，レート監視を実現している。しかし，装置内部のメモリのサイズには限界があるため，ユーザ数の増大に対応するにはメモリの増加が必要であり，限界を越えるにはデバイスの進化を待つ必要があるという問題がる。また，デバイス内部のメールを外部メモリに置き換えて実現する方法では，レイテンシ（遅延時間）が大きくなるため，実現することができなかった。
【００１９】
パケット交換の技術において，パケットを記憶して交換するための記憶装置として内部メモリ（ＳＲＡＭ）とそれより大容量の外部記憶装置（ＤＤＲＳＤＲＡＭ）を使用してジュアルモードで動作させるために，外部記憶装置インタフェースと外部記憶装置マネージャ及び内部記憶装置と外部記憶装置の間でパケットデータの転送を実行する転送エンジンを設け，ランダムアクセスの待ち時間を隠すために予測的にバンクの切替えを採用する等の提案がなされている（特許文献１参照）。
【特許文献１】特開２００５−２８７０３８号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
上記したようにインターネット通信に用いられるようなレイヤ２スイッチ（ＳＷ）等で使用するパケット転送装置のレート監視をユーザ数の増大や１０ＧｂＥを束ねる大容量化に対応して実現するために，内部メモリでは容量の点及び動作速度（レート監視にはメモリから現在のバケットを読み出して，加算または減算の演算を行って，書き込むという一連の動作）の限界があり，内部のメモリを外部メモリに置き換えることはレイテンシが長すぎるという問題があり，パケットバイパケットでレート監視の処理をすることができないという問題があった。上記した特許文献１の技術はパケット交換において内部記憶装置と外部記憶装置を使用した場合の転送のための制御技術であり，レート監視装置における問題を解決するものではない。
【００２１】
本発明はレート監視装置の外部にレート監視のためのメモリを設けて多数のユーザに対して高速，大容量のパケットについてパケットバイパケットの処理によるレート監視ができるパケット転送装置におけるレート監視方式を提供することを目的とする。
【課題を解決するための手段】
【００２２】
このレート監視方式では，複数のユーザのメータＩＤ毎に予め設定されたトークン値によるパケット転送装置のレート監視を行うために，各パケットのユーザに割り当てられたメータＩＤに対して予め設定されたトークン値が一定周期毎に加算された現在のトークン値を保持する外部ＲＡＭのトークンカウンタを備える。また，入力パケットデータを格納するパケットバッファと，各パケットデータのヘッダからメータＩＤ及びレングス情報をパケット情報抽出部で抽出して，所定数のパケットデータのメータＩＤ及びレングス情報をパケット情報として格納すると共にその所定数のパケットデータのメータＩＤが同一であるか否かを表す一致フラグとを格納する第１の情報キャッシュと第２の情報キャッシュを設ける。この第１の情報キャッシュと第２の情報キャッシュは，その中の一方をパケットデータが入力するよう駆動され，他方を格納された各メータＩＤについて対応するパケットのレングスの分だけトークン値を減算するトークン演算をトークン演算部により行うよう決められた周期で切替える信号を発生するタイミング生成部を備える。トークン演算部による第１の情報キャッシュと第２の情報キャッシュのそれぞれ複数のパケットデータの各メータＩＤに対応するトークン演算の結果としてパケットデータの通過・廃棄を表すフラグが第１の情報バッファと第２の情報バッファに設定され，パケットバッファからのパケットデータの出力時に第１の情報バッファまたは第２の情報バッファの出力を後段に出力するよう構成する。
【００２３】
また，第１の情報キャッシュと第２の情報キャッシュに格納された一致フラグは，各情報キャッシュ内の複数のメータＩＤについて２つのメータＩＤの全ての組合せについて比較結果を表す複数のフラグにより構成され，トークン演算部は，各情報キャッシュについてのトークン値の演算において，一致フラグを判別して，同一メータＩＤについてのトークン演算を，トークンカウンタにアクセスすることなく実行する。
【００２４】
第１の情報キャッシュまたは第２の情報キャッシュに格納されたメータＩＤに対応したトークン値を外部ＲＡＭのトークンカウンタから読み出して保持するキャッシュレジスタを備え，トークン算出部はキャッシュレジスタからトークン値を取り出して演算を行い，キャッシュレジスタ内の全てのメータＩＤについて求められたトークン値を外部ＲＡＭのトークンカウンタに書き込むようにする。
【発明の効果】
【００２５】
本発明によれば，外部メモリにトークンカウンタ値を格納したレート監視において，所定個数のパケットの情報を格納する複数の情報キャッシュを設け，メモリへのバーストアクセスを行うことでＩＤが増加しても高速にトークン監視の処理することが可能とする。
【００２６】
また，パケット情報を格納する情報キャッシュを２面設け，トークン演算を一方の面に対して実行している間に他方の面にパケット情報を格納するよう切替えて交互に処理することで高速に処理することが可能となる。また，情報キャッシュ内の複数のパケット情報の中で同一メータＩＤであるかの判別をして同一メータＩＤに対するトークン演算を高速に実現することで，ＩＤの増加に対処することが可能となる。
【発明を実施するための最良の形態】
【００２７】
図１はこの方式の概要構成を示す図である。図中，１はパケット転送装置内のレート監視装置であり，入力側（Ingress)に設けた場合はポリサー，出力側（Egress) に設けた場合はシェーパとして構成される。１０はトークンを付与（加算）する一定周期毎に出力を発生するトークンタイマ，１１はタイミング生成部，１２は各ユーザ（メータＩＤ）に対して設定（外部ＲＡＭのトークン供給設定部２０に設定）されたトークンを供給（加算）して外部ＲＡＭのトークンカウンタ２１に格納する処理を行うリソース供給部，１３はパケット情報抽出部，１４は所定数の入力パケットのそれぞれのトークンカウンタの値を格納したキャッシュレジスタ，１５ａは予め決められた所定個数の入力パケットに関するパケット情報（メータＩＤ，パケット長及び所定個数のメータＩＤの同一性を表す一致フラグ）を格納する容量を備えた第１の情報キャッシュ，１５ｂは１５ａと同様のパケット情報を格納する第２の情報キャッシュ，１６はトークン演算部，１７ａは第１の情報キャッシュ１５ａに対するトークン演算部１６により演算結果を格納する第１の情報バッファ，１７ｂは第２の情報キャッシュ１５ｂに対するトークン演算部１６により演算結果を格納する第２の情報バッファ，１８は入力するパケットを格納するパケットバッファ，１９は第１の情報バッファ１７ａと第２の情報バッファ１７ｂの一方を交互に選択する選択部，２０は外部ＲＡＭのトークン供給設定部，２１は外部ＲＡＭのトークンカウンタ，３ａは入力されるパケットデータ，３ｂは監視装置１から出力されるパケットデータである。
【００２８】
外部ＲＡＭのトークン供給設定部２０には上記図１８のＡ．に示すようなトークン供給テーブルと同様にメータＩＤ（ユーザ別に割り当てられたＩＤ），オン・オフ（使用・未使用），バースト設定（最大容量），ユーザが申請した平均使用帯域に対応したトークン値とが外部（図示省略された端末やメモリ）から設定され，外部ＲＡＭのトークンカウンタには上記図１８のＢ．に示すようなトークンカウンタテーブルと同様にメータＩＤ，オン・オフ，トークンカウンタの現在値とをＣＰＵから設定する。
【００２９】
トークン供給設定部２０はトークンタイマ１０から発生するタイミング信号に応じて読み出したメータＩＤに対応したトークン値を受け取ると，同じタイミング信号によりトークンカウンタ２１から読み出された同じメータＩＤに対応したトークンカウンタ値と加算してトークンカウンタ２１の同じメータＩＤのトークンカウンタ値として書き戻す処理を順番に実行する。
【００３０】
入力するパケット３ａは，レート監視装置１のパケット情報抽出部１３へ入力されるとパケットのヘッダに基づいた連続した所定個数のパケットの各パケット情報（入力の場合は送信元，出力の場合は送信先アドレスに対応したメータＩＤ及びレングス（パケット長）等の情報）とそれらの所定個数の各パケットのユーザ（ユーザＩＤ）の同一性を表すフラグ情報とを発生して第１の情報キャッシュ１５ａと第２の情報キャッシュ１５ｂの一方に格納する。第１の情報キャッシュ１５ａへ情報格納されると，その後の所定個数のパケットは第２の情報キャッシュ１５ｂに格納され，交互に格納される。
【００３１】
一方，キャッシュレジスタ１４には第１の情報キャッシュ１５ａ，第２の情報キャッシュ１５ｂに格納された所定個数のパケット情報（そのユーザＩＤ）の中の現在トークン演算を行う一方の情報キャッシュに格納された各メータＩＤに対応するトークンカウンタ値を外部ＲＡＭのトークンカウンタ２１から一括して取り出して格納する。なお，外部ＲＡＭのトークンカウンタ２１のトークン値の読み出しは，第１の情報キャッシュ１５ａまたは第２の情報キャッシュ１５ｂに格納されたメータＩＤを取り出して，トークンカウンタ２１に対するアドレスとしてアクセスし，トークン値をキャッシュレジスタ１４に読み出す。
【００３２】
トークン演算部１６はパケット情報の格納が終了した第１の情報キャッシュ１５ａ（第２の情報キャッシュ１５ｂへのパケット情報の格納中）についてトークン演算を実行する。この時，第１の情報キャッシュ１５ａ内のフラグ情報を参照して，同じユーザＩＤのパケット情報についてのトークン演算は，それらの複数パケットの各レングスの情報に相当するトークン量を現在の当該ユーザＩＤのトークン値（キャッシュレジスタ１４から取り出した値）から減算し，結果が正であれば，そのパケットの通過（転送許可）を指示する表示を，負であればそのパケットの廃棄を指示する表示を，第１の情報キャッシュ１５ａに対応したトークン演算部１６の出力側に設けられた，情報バッファ１７ａの中の演算を行ったパケットに対応する位置に設定する。この時，フラグ情報により同一ユーザＩＤのパケットが入っていることを判定した場合には，そのパケット情報のレングスに対応するトークン量の減算と，減算結果の正負の判定に対応する通過，廃棄を指示する指示情報を第１の情報キャッシュ１５ａの対応する位置に設定する。
【００３３】
また，トークン演算部１６は，トークン演算の結果である残りのトークン値を外部ＲＡＭのトークンカウンタ２１に書き込むが，第１の情報キャッシュ１５ａ内の複数の同一ユーザＩＤのパケットについては，途中の演算結果を保持して最後に求めた演算結果を書き込むようにする。なお，負の結果が得られた場合にも書き込むことにより，その後のリソース供給部の制御によりトークン供給を行うことで正の値に戻ることがある。
【００３４】
第１の情報キャッシュ１５ａについてトークン演算が終了して情報バッファ１７ａに結果（通過指示か廃棄指示の指示情報）が設定されると，タイミング生成部１１からのタイミング信号に応じて第２の情報キャッシュ１５ｂの情報に対するトークン演算を開始するよう切替えられ，結果を情報バッファ１７ｂの元のユーザＩＤに対応した位置に格納する。また，第１の情報バッファ１７ａ，第２の情報バッファ１７ｂはタイミング生成部１１のタイミング信号により選択部１９により選択され，選択された情報バッファ例えば，第１の情報バッファ１７ａが選択されると，その先頭の情報（ユーザＩＤ）に対応するパケットデータがパケットバッファ１８から読み出される。レート監視装置１から読み出されたパケットデータ３ｂは後段に供給され，同時に第１の情報バッファ１７ａに設定された指示情報が「廃棄」を表す場合は，「廃棄」を表す指示情報（廃棄フラグと呼ぶ場合もある）も後段の装置に供給され，後段において指示情報が「通過」を表す場合には対応するパケットデータを転送し，指示情報が「廃棄」を表す場合には対応するパケットデータを廃棄する。
【００３５】
図２は実施例の構成を示す。図３は情報キャッシュ，キャッシュレジスタ及び情報バッファのデータ構成を示す図である。図中，１，１０〜１９の各部は上記図１の同一符号と同じである。但し，第１の情報キャッシュ１５ａ，第２の情報キャッシュ１５ｂは４つのパケットデータのそれぞれのパケット情報を格納するキャッシュ１５０ａ，１５０ｂと，同一性を表すフラグ情報（Ｆ１〜Ｆ６）を格納するバッファ１５１ａ，１５１ｂとを備えている。また，第１の情報バッファ１７ａと第２の情報バッファ１７ｂにはトークン演算部１６による演算結果に応じた指示情報として通過を指示するＶ(Valid) か, 廃棄を指示するＤ(Discard) が設定される。但し，指示情報として，ＶとＤをそれぞれ表す２ビットの情報を設けることができるが，指示情報を１ビットだけで表し，“１”なら通過，“０”なら放棄を表すものとして処理するようにしてもよい。
【００３６】
外部ＲＡＭのトークン供給設定部２０には，各メータＩＤ（ユーザＩＤと同じ）に対してそれぞれ従来（図１８のＡ．）と同様の構成で図２に具体例で示すように，オン／オフ（使用，未使用），許容バースト量であるバースト設定，トークン設定の各値が設定され，外部ＲＡＭのトークンカウンタ２１にも図２に示すように各メータＩＤに対しオン・オフ，トークンカウンタの値が設定され，設定は外部（図示省略された端末またはメモリ）から入力される。
【００３７】
入力パケットがレート監視装置１に入力すると，パケット情報抽出部１３でパケットデータをパケットバッファ１８に格納すると共に，パケット情報が抽出されて第１の情報キャッシュ１５ａには図３のＡ．に示すようにキャッシュＩＤ０〜ＩＤ３で示す４つの位置にメータＩＤ（ユーザＩＤ）として０〜３，イネーブル（Ｅｎａ：使用中か否か）を表すＥ０〜Ｅ３，及びパケット長（Lenglth:byteで表す) としてＬ０〜Ｌ３の各値が設定され，同時に一致フラグ（Flag) の情報が図３のＢ．に示す内容が設定される。この一致フラグは，第１（第２）の情報キャッシュ１５ａ（１５ｂ）のそれぞれに設定された４つのパケット情報について，入力パケットから抽出されて設定されたメータＩＤ０〜ＩＤ３が相互に一致するか否かを表すもので，Ｆ１〜Ｆ６の６つのフラグで構成される。すなわち，Ｆ１はメータＩＤ０とＩＤ１の比較結果を表すフラグであり，一致なら“１”，不一致なら“０”である。同様にＦ２はメータＩＤ０とＩＤ２の比較結果，Ｆ３はメータＩＤ０とＩＤ３の比較結果，Ｆ４はメータＩＤ１とＩＤ２の比較結果，Ｆ５はメータＩＤ１とＩＤ３の比較結果，Ｆ６はメータＩＤ２とＩＤ３の比較結果を表す。
【００３８】
図２に示す例では，第１の情報キャッシュ１５ａに４つのパケット情報１５０ａが格納されたものとする。この例ではキャッシュＩＤ０〜ＩＤ３にメータＩＤ０のパケットが連続して格納されて，各パケットのパケット長が６４ (Kbyte)である。これに対する一致フラグ１５１ａはＦ１〜１Ｆ６の全てが“１”である。また，その後の４つのパケットデータは第２の情報キャッシュ１５ｂに４つのパケット情報１５０ｂが格納されたものとする。この例では，キャッシュＩＤ０〜ＩＤ３にメータＩＤ１，ＩＤ２，ＩＤ３，ＩＤ４と全て異なるメータＩＤのパケットであることを示し，パケット長が６４（Kbyte)であり, その一致フラグ１５１ｂは全て“０”である。一方，キャッシュレジスタ１４には図３のＣ．に示すように各キャッシュＩＤ（第１の情報キャッシュ１５ａ）に対応したトークンカウンタ値が設定される。但し，トークンカウンタ値はパケットのユーザ情報（送信元または送信先）に対応するメータＩＤを用いてトークンカウンタ２１から読み出される。
【００３９】
トークン演算部１６における第１の処理フローを図４に示す。最初に第１の情報キャッシュ１５ａの中の先頭のキャッシュＩＤ０に対応するイネーブル情報のＥ０が“１”か判別し（図４のＳ１），“０”であれば終了し，“１”であれば，キャッシュＩＤ０に有効なパケット情報が設定されているとし，トークンカウンタ（TokenCTR) ≧０が成立するか判別する（図４のＳ２）。ノーの場合（負の場合）は，トークン演算部１６内の一時的にカウント値を保持する一時トークンカウンタ（TMPCTRで表す）０にキャッシュレジスタ１４が保持するトークンカウント値を設定し，出力側の第１の情報バッファ１７ａ内のＤ０＝“１”（放棄情報）を設定する（同Ｓ３）。第１の情報バッファ１７ａ，１７ｂには図３のＤ．に示すように各キャッシュＩＤ０〜ＩＤ３に対応してＶ（Valid)とＤ（Discard)  の値（それぞれ１ビット）を設定する構成を備えている。
【００４０】
ステップＳ２でイエスと判定された場合，トークンカウンタ０−Ｌ０（キャッシュＩＤ０のレングス）の演算をして一時トークンカウンタ（TMPCTR０）に設定する。続いて，第１の情報キャッシュ１５ａのキャッシュＩＤ１に対応するイネーブル情報のＥ１が“１”であるかを判別し（図４のＳ５），“０”であれば（キャッシュＩＤ１にパケット情報が格納されていないので），一時トークンカウンタ０（TMPCTR０）をトークンカウンタ２１に書き戻し（同Ｓ６），“１”であれば続いてＥ２が“１”であるか判別する（同Ｓ７）。“０”であれば，後述する第２のフローチャート（図５）に移行し，“１”であれば次にＥ３が“１”であるか判定する（図４のＳ８）。ここで，“０”であることが分かると後述する第２のフローチャート（図５）に移行し，“１”であれば後述する第３のフローチャート（図６）に移行する。
【００４１】
図５はトークン演算部の第２のフローチャートであり，上記図４の第１のフローチャートにおいてＥ０＝Ｅ１＝“１”でキャッシュＩＤ０，ＩＤ１に有効なパケット情報が格納され，ＩＤ２が未使用である場合（図４のステップＳ７でノーの場合）に実行され，メータＩＤ０，ＩＤ１に対応するトークンカウンタ値の処理が実行される。
【００４２】
最初にＦ１（一致フラグ１）が“１”（キャッシュＩＤ０のメータＩＤとキャッシュＩＤ１のメータＩＤが一致）であるか判別し（図５のＳ１），“０”の場合はトークンカウンタ１（TokenCTR１）≧０か判別し（同Ｓ２），ノーの場合は一時トークンカウンタ（TMPCTR１）の値をトークンカウンタ（TokenCTR１）の値として書き戻し，出力側の第１の情報バッファ１７ａ内のＤ１＝“１”（放棄指示）を設定する（同Ｓ３）。ステップＳ２において，イエスと判断された場合はトークンカウンタ１（TokenCTR１）−Ｌ１（パケット１）の演算をして，演算結果を一時トークンカウンタ（TMPCTR１）に設定する（同Ｓ４）。ステップＳ３及びＳ４の後，一時トークンカウンタ（TMPCTR０）／一時トークンカウンタ（TMPCTR１）をトークンカウンタ２１に書き戻す（図５のＳ５）。
【００４３】
また，ステップＳ１においてＦ１が“１”であると判別されると，一時トークンカウンタ（TMPCTR０）≧０であるか判別し（図５のＳ６），ノーと判別されると一時トークンカウンタ０（TMPCTR０）の場合はトークンカウンタ０（TokenCTR０）の値を一時トークンカウンタ（TMPCTR０）に設定し，情報バッファ１７ａ内にＤ１＝“１”（放棄情報）を設定する（同Ｓ７）。ステップＳ６においてイエスと判別されると，トークンカウンタ０−レングス（Ｌ１）の演算をして，結果を一時トークンカウンタ０（TMPCTR０）に設定する（図５のＳ８）。ステップＳ７，Ｓ８に続いて一時トークンカウンタ（TMPCTR０）をトークンカウンタ２１に書き戻す（図５のＳ９）。
【００４４】
図６，図７はトークン演算部の第３のフローチャート（その１），（その２）であり，図４に示す第１のフローチャートにおいて，Ｅ０＝Ｅ１＝Ｅ２＝“１”であってＥ３＝“０”（キャッシュＩＤ３は不使用）の場合に上記図４のステップＳ８に続いて実行され，メータＩＤ０，ＩＤ１，ＩＤ２のトークンカウンタ値の処理が実行される。
【００４５】
最初にフラグＦ１が“１”（メータＩＤ０とＩＤ１が一致）であるか判別し（図６のＳ１），“０”の場合はトークンカウンタ１（TokenCTR１）≧０か判別し（同Ｓ２），ノー（負の場合）は一時トークンカウンタ（TMPCTR１）にトークンカウンタ１（TokenCTR１）の値を設定し，Ｄ１に“１”（放棄指示）を設定する（同Ｓ３）。ステップＳ２でイエスと判別されると，トークンカウンタ１（TokenCTR１）−レングス（Ｌ１）の演算をして一時トークンカウンタ１（TMPCTR１）に設定する（同Ｓ４）。ステップＳ３，Ｓ４に続いて一致フラグＦ２＝“１”（メータＩＤ０＝ＩＤ２）であるかを判別する（同Ｓ５）。ここで，ノー（メータＩＤ０≠ＩＤ２）と判別されると，図７に移行し，フラグＦ４＝“１”（メータＩＤ１＝ＩＤ２）か判別し（図７のＳ５０），ノ−（不一致）の場合はトークンカウンタ２（TokenCTR２）≧０か判別し（同Ｓ５１），ここでノー（トークンカウンタ２の値が負）と判別されると一時トークンカウンタ２（TMPCTR２）にトークンカウンタ２（TokenCTR２）の値を設定し，Ｄ２＝“１”（情報バッファ１７ａ内の第２の放棄指示Ｄ２）を設定し（同Ｓ５２），イエスと判別されると，トークンカウンタ２（TokenCTR２）−レングス（Ｌ２）の演算をして一時トークンカウンタ２（TMPCTR２）に設定する（同Ｓ５３）。ステップＳ５２，Ｓ５３に続いて一時トークンカウンタ０，１，２（TMPCTR０，TMPCTR１，TMPCTR２）をトークンカウンタ２１のそれぞれの対応するメータＩＤ０，ＩＤ１，ＩＤ２に書き戻す（同Ｓ５４）。
【００４６】
図７のＳ５０において，イエスと判別されると，一時トークンカウンタ１（TMPCTR１）≧０であるか判別し（同Ｓ５５），ノーと判別されると一時トークンカウンタ１（TMPCTR１）の値をそのまま保持し，情報バッファ１７ａのＤ１（放棄指示）＝“１”を設定し（同Ｓ５６），ステップＳ５５でイエスと判別されると，メータＩＤ１とＩＤ２が一致しているため，一時トークンカウンタ１（TMPCTR１）−レングス（Ｌ２）の演算をして結果を一時トークンカウンタ１（TMPCTR１）に設定する（同Ｓ５７）。ステップＳ５６，Ｓ５７に続いて演算結果を保持する一時トークンカウンタ０，１（TMPCTR０／TMPCTR１）の値をトークンカウンタ２１のメータＩＤ０，ＩＤ１の位置に書き戻す（図７のＳ５８）。
【００４７】
上記図６のステップＳ１において，イエスと判別されると（メータＩＤ０＝ＩＤ１の場合），一時トークンカウンタ０（TMPCTR０）≧０か判別し（図６のＳ６），ノーの場合（負の場合）は，一時トークンカウンタ０（TMPCTR０）の値はそのまま変化せず（図６のＳ７），イエスの場合は一時トークンカウンタ０（TMPCTR０）−Ｌ１の演算をして一時トークンカウンタ０（TMPCTR０）に設定する（同Ｓ８）。ステップＳ７，Ｓ８に続いてＦ２＝“１”（メータＩＤ０＝ＩＤ２）か判別し（図６のＳ９），ノーの場合は図７のＳ５０に移行し，イエスの場合（メータＩＤ＝ＩＤ２）は一時トークンカウンタ０（TMPCTR０）≧０か判別して（同Ｓ１０），ノーの場合は一時トークンカウンタ０（TMPCTR０）の値は変化せず（同Ｓ１１），イエスの場合はＩＤ２のパケット長であるレングスＬ２を一時トークンカウンタ０（TMPCTR０）から減算する演算をして，結果を一時トークンカウンタ０（TMPCTR０）に保持する（同Ｓ１２）。ステップＳ１１，Ｓ１２に続いて，一時トークンカウンタ０（TMPCTR０）をトークンカウンタ２１に書き戻し，Ｆ１＝“０”（メータＩＤ０≠ＩＤ１）の場合は一時トークンカウンタ１（TMPCTR１）をトークンカウンタ２１に書き戻す（図６のＳ１３）。
【００４８】
図８はトークン演算部の第４のフローチャート（その１）であり，上記図４に示す第１のフローチャートのステップＳ８でイエスと判定された，Ｅ０＝Ｅ１＝Ｅ２＝Ｅ３＝“１”の場合であり，各メータＩＤ０〜ＩＤ３の全てにパケット情報が設定されている場合であり，全てのメータＩＤ０〜ＩＤ３についてトークンカウンタ値の処理が実行される。なお，この時，図４のステップＳ４で一時トークンカウンタ０（TMPCTR０）にはTokenCTR０−Ｌ０の演算結果を保持している。
【００４９】
最初にフラグＦ１が“１”（メータＩＤ０とＩＤ１が一致）であるか判別し（図６のＳ１），ノー（不一致）の場合はトークンカウンタ１（TokenCTR１）≧０か判別し（同Ｓ２），ノー（不一致）の場合は一時トークンカウンタ１（TMPCTR１）にトークンカウンタ１（TokenCTR１）の値を設定し，Ｄ１（第１のパケットの放棄指示）を“１”に設定し（同Ｓ３），イエスの場合はトークンカウンタ１（Token CTR1) −Ｌ１の演算をして結果を一時トークンカウンタ１（TMPCTR１）に設定する（同Ｓ４）。ステップＳ３，Ｓ４の後は，Ｆ２＝“１”（メータＩＤ０＝ＩＤ２）であるか判別し（図８のＳ５），ノー（不一致）の場合はＡのルートで示す後述する図９のステップＳ６０に移行し，イエス（一致）の場合はステップＳ１０の処理が実行される。ステップＳ１でイエス（メータＩＤ０とＩＤ１が一致）である場合は一時トークンカウンタ０（TMPCTR０）≧０か判別し（同Ｓ６），ノーの場合は一時トークンカウンタ０（TMPCTR０）の値は変化せず，Ｄ１＝“１”（第１のパケットの放棄指示）を設定し（図８のＳ７），イエスの場合は一時トークンカウンタ０（TMPCTR０）−Ｌ１の演算をして結果を一時トークンカウンタ０（TMPCTR０）に保持し（同Ｓ８），ステップＳ７，Ｓ８に続いてＦ２＝“１”（メータＩＤ０＝ＩＤ２）か判定し（同Ｓ９），ノーの場合は図９に示すステップＳ６０に移行し，イエスの場合は一時トークンカウンタ０（TMPCTR０）≧０であるか判別する（同Ｓ１０）。
【００５０】
ここで，ノーの場合は一時トークンカウンタ０（TMPCTR０）は変えず，Ｄ１＝“１”（第１のパケットの放棄指示）を設定し（図８のＳ１１），イエスである場合は一時トークンカウンタ０（TMPCTR０）−Ｌ２の演算をして，結果を一時トークンカウンタ０（TMPCTR０）に設定する（同Ｓ１２）。ステップＳ１１，Ｓ１２に続いてＦ３＝“１”（メータＩＤ０＝ＩＤ３）か判定し（同Ｓ１３），ノーの場合はＦ５＝“１”（メータＩＤ１＝ＩＤ３）か判定し（同Ｓ１４），ノーの場合はＣの経路で後述する図１０のステップＳ６６に移行し，イエスの場合はＤの経路で後述する図９に示すステップＳ５６に移行する。図８のステップＳ１３でイエス（メータＩＤ０＝ＩＤ３）と判別されると，一時トークンカウンタ０（TMPCTR０）≧０であるか判別し，ノーと判別されると，一時トークンカウンタ０（TMPCTR０）は変化せず，Ｄ１＝“１”（第１のパケットの放棄指示）を設定し（図８のＳ１６），イエスの場合は一時トークンカウンタ０（TMPCTR０）−Ｌ３の演算をして，結果を一時トークンカウンタ０（TMPCTR０）に保持する（同Ｓ１７）。ステップＳ１６，Ｓ１７に続いて，一時トークンカウンタ０（TMPCTR０）をトークンカウンタ２１に書き戻し，Ｆ１＝“０”（ＩＤ０≠ＩＤ１）の場合は一時トークンカウンタ１（TMPCTR１）をトークンカウンタ２１に書き戻し，Ｆ２＝“０”（ＩＤ０≠ＩＤ２）の場合は一時トークンカウンタ２（TMPCTR２）を書き戻し，Ｆ３＝“０”（ＩＤ０≠ＩＤ３）の場合は一時トークンカウンタ３（TMPCTR３）を書き戻す（図８のＳ１８）。
【００５１】
図９はトークン演算部の第４のフローチャート（その２）であり，最初に図８に示すステップＳ５においてノーと判別された場合に，Ｆ４＝“１”（メータＩＤ１＝ＩＤ２）であるか判別し（図９のＳ５０），ノー（不一致）の場合は図１０に移行し，イエス（一致）の場合は一時トークンカウンタ１（TMPCTR１）≧０か判別する（同Ｓ５１）。ここで，ノーと判別された場合は一時トークンカウンタ１（TMPCTR１）は変化せず，Ｄ１＝“１”（第１のパケットの放棄指示）を設定し（図９のＳ５２），イエスと判別されると一時トークンカウンタ１（TMPCTR１）−Ｌ２の演算をして結果を一時トークンカウンタ１（TMPCTR１）に格納する（同Ｓ５３）。ステップＳ５２，Ｓ５３に続いてＦ３＝“１”（メータＩＤ０＝ＩＤ３）であるか判別し（図９のＳ５４），ノー（不一致）の場合はＦ５＝“１”（メータＩＤ１＝ＩＤ３）であるか判別し（同Ｓ５５），ノー（不一致）の場合は後述する図１０のステップＳ６６に移行し，イエスの場合（一致）は，一時トークンカウンタ１（TMPCTR１）≧０かの判別をする（同Ｓ５６）。ここで，ノーと判別されると一時トークンカウンタ１（TMPCTR１）の値は変化せず，Ｄ１＝“１”を設定し（図９のＳ５７），イエスと判別されると一時トークンカウンタ１（TMPCTR１）−Ｌ３の演算をして結果を一時トークンカウンタ１（TMPCTR１）に格納する（同Ｓ５８）。ステップＳ５７，Ｓ５８に続いて，一時トークンカウンタ０（TMPCTR０）及び一時トークンカウンタ１（TMPCTR１）をトークンカウンタ２１に書き戻し，Ｆ４＝“０”（メータＩＤ１≠ＩＤ２）の場合は一時トークンカウンタ２（TMPCTR２）を書き戻し，Ｆ５＝“０”（メータＩＤ１≠ＩＤ３）の場合は一時トークンカウンタ３（TMPCTR３）を書き戻す。
【００５２】
図１０はトークン演算部の第４のフローチャート（その３）であり，図９に示すステップＳ１においてノー（メータＩＤ１≠ＩＤ２）と判別された場合であり，最初にトークンカウンタ２(TokenCTR2) ≧０であるか判別し（図１０のＳ６０），ノーと判別されると一時トークンカウンタ２（TMPCTR２）は変化せず，Ｄ２（第２のパケットの放棄指示）＝“１”を設定し（同Ｓ６１），イエスの場合は一時トークンカウンタ２（TMPCTR２）−Ｌ２の演算をして，結果を一時トークンカウンタ２（TokenCTR２）に格納する（同Ｓ６２）。ステップＳ６１，Ｓ６２に続いて，Ｆ３＝“１”（メータＩＤ０＝ＩＤ３）であるか判別し（図１０のＳ６３），イエス（ＩＤ０＝ＩＤ３）である場合は図８のステップＳ１５に移行し，ノー（ＩＤ０≠ＩＤ３）の場合はＦ５＝“１”（メータＩＤ１＝ＩＤ３）であるかの判別をする（同Ｓ６４）。ここで，イエス（ＩＤ１＝ＩＤ３）と判別された場合は図９のステップＳ５６に移行し，ノー（ＩＤ１≠ＩＤ３）と判別された場合はＦ６＝“１”か判別し（図１０のＳ６５），イエス（メータＩＤ２＝ＩＤ３）と判別されると，一時トークンカウンタ２（TMPCTR２）≧０か判別する（同Ｓ７０）。ここでノーと判別されると，一時トークンカウンタ２（TMPCTR２）は変化せず，Ｄ２＝“１”に設定し（図１０のＳ７１），イエスと判別されると一時トークンカウンタ２（TMPCTR２）−Ｌ３の演算をして，結果を一時トークンカウンタ２（TMPCTR２）に設定する。上記ステップＳ７１，７２に続いて一時トークンカウンタ０（TMPCTR０），一時トークンカウンタ１（TMPCTR１），一時トークンカウンタ２（TMPCTR２）をトークンカウンタ２１に書き戻す。
【００５３】
ステップＳ６５において，ノー（メータＩＤ２≧ＩＤ３）と判別されると，トークンカウンタ３（TokenCTR３）≧０か判別し，ノー（負の値）の場合は一時トークンカウンタ３（TMPCTR３）にトークンカウンタ（TokenCTR３）の値を設定し，Ｄ３＝“１”を設定し，イエスの場合はトークンカウンタ（TokenCTR３）−Ｌ３の演算をして一時トークンカウンタ３（TMPCTR３）に設定する。このステップＳ６７，Ｓ６８に続いて一時トークンカウンタ０（TMPCTR０），一時トークンカウンタ１（TMPCTR１），一時トークンカウンタ２（TMPCTR２），一時トークンカウンタ３（TMPCTR３）をトークンカウンタ２１に書き戻す。
【００５４】
図１１，図１２は実施例の各部のタイミングチャート（その１），（その２）である。図中，(1) はレート監視装置の内部CLK(クロック），(2) はＦＰ（フレームパルス），(3) ,(4)はパケット情報抽出を表し，(3) は各パケットのメータＩＤ，(4) は各パケットのレングス(Length)，(5) はタイミング生成部（図２の１１）からの情報キャッシュ（図２の１５ａ，１５ｂ）の切替え及び選択部（図２の１９）による情報バッファ（１７ａ，１７ｂ）の切替えを行う切替信号，(6) 〜(14)は第１の情報キャッシュの情報であり，(6) 〜(9) は４つのパケットのレングス（Length) の情報（１〜４）の設定タイミング，(10)〜(13)は同じく第１の情報キャッシュへのメータＩＤ０〜ＩＤ３の設定タイミング，(14)は第１の情報キャッシュ内の有効レジスタ数（キャッシュ内に格納されたパケット情報の数）の変化を示し，(15)〜(23)は第２の情報キャッシュの情報であり，(15)〜(18)は第２の情報キャッシュ（図２の１５ｂ）へのレングス（Length) の情報（１〜４）の設定タイミング，(19)〜(22)は第２の情報キャッシュへのメータＩＤ０〜ＩＤ３の設定タイミング，(23)は第２の情報キャッシュ内の有効レジスタ数の変化を示す。
【００５５】
(24)はトークンカウンタ（図２の２１）への加算(Add) データの発生タイミングを示し，(25)は外部ＲＡＭのトークンカウンタ（図２の２１）値の出力タイミング信号，(26)は外部ＲＡＭ（トークンカウンタ）のチップセレクト信号，(27)は外部ＲＡＭの書き込みイネーブル信号，(28)はトークンカウンタ値リタイミング信号，(29)〜(32)はキャッシュレジスタ（図２の１４）の信号である。
【００５６】
図１１，図１２では，内部クロック(1) に同期したフレームパルスＦＰが(2) が発生し, これらの信号(1),(2) に同期して入力するパケットからパケット情報が抽出され, 各パケットのメータＩＤ（入力側の監視の場合は送信元アドレスに対応するメータＩＤ，出力の監視の場合は送信先アドレスに対応するメータＩＤ）がａ，ｂ，ｃ，…が抽出され（図１１の(3))，同時に各パケットのレングスの情報Ｌ１，Ｌ２，…が抽出される（同(4))。４つのパケットに対応するパケット情報が抽出される毎に(5) に示すように，第１の情報キャッシュと第２の情報キャッシュの切替えを行う信号がタイミング生成部から発生する。この例では，サイド(Side)１，サイド(Side)２の状態に交互に切替えられる。
【００５７】
第１の情報キャッシュにはそれぞれ上記(4) で抽出された各レングスの情報Ｌ１〜Ｌ４が(6) 〜(9) のように順番に設定され，上記(3) で抽出された各メータＩＤの情報ａ〜ｄが(10)〜(13)のように情報キャッシュの中の各レジスタに設定され，有効レジスタ数が(14)に示すように順次更新される。
【００５８】
第１の情報キャッシュ１５ａにパケット情報の設定が行われると，第２の情報キャッシュ１５ｂに切替えられ，後続の４つのパケットについてレングスの情報Ｌ５〜Ｌ８が(15)〜(18)に示すように設定され, メータＩＤの情報ｅ〜ｈが(19)〜(22)に示すように順番に設定され，キャッシュ内の有効レジスタ数が(23)に示すように変化する。
【００５９】
トークンカウンタ値の加算データが(24)に示すように「ａ，ｂ，ｃ，ｄ」として上記第１の情報キャッシュのメータＩＤの情報(10)〜(13)から取り出す。また，(25)に示すように外部ＲＡＭのトークンカウンタ（図２の２１）のカウンタ値（i,ii,iii,iv)が最初に出力され，その後にカウンタ値（v,vi,vii,viii)が発生し，チップセレクト信号(26)より少し後のタイミングに出力される。また，キャッシュレジスタ（図２の１４）は(29)〜(32)に示すように最初のタイミングで第１の情報キャッシュのメータＩＤに対応したカウンタ値（i,ii,iii,iv)が発生し，後のタイミングで第２の情報キャッシュのメータＩＤに対応したカウンタ値（v,vi,vii,viii)を発生している。
【００６０】
図１３は情報キャッシュのデータとキャッシュレジスタのデータの具体例を示す。Ａ．は第１の例であり，連続して入力する４つのパケットデータは同じメータＩＤ０（同じユーザ）に関し，４つパケットのレングスは同じ６４Ｋ（byte）であるため，パケット情報としては（ａ１）に示すようにキャッシュＩＤ０〜３に対して，メータＩＤは全て同じ「ＩＤ０」であり，レングスは「６４」となり，一致フラグは（ａ２）に示すようにＦ１〜Ｆ６が全て“１”になる。この場合，パケット情報の各キャッシュＩＤに対応したメータＩＤ「ＩＤ０」についてトークンカウンタから取り出したトークン値は全て（ａ３）に示すように「１５０」となり，キャッシュレジスタに設定される。
【００６１】
図１３のＢ．は第２の例であり，連続して入力する４つのパケットデータは異なるメータＩＤで，各パケットのレングスは同じ６４Ｋであり，パケット情報は（ｂ１）のように設定され，一致フラグは（ｂ２）に示すようにＦ１〜Ｆ６は全て“０”になる。この場合，パケット情報の各キャッシュＩＤに対応した各メータＩＤについてトークンカウンタから取り出したトークン値は（ｂ３）に示すようにそれぞれ異なる値が設定されている。
【００６２】
図１３のＣ．は第３の例であり，入力するパケットデータは１つのメータＩＤである「ＩＤ５」であり，レングスが２５６Ｋである。この場合，（ｃ１）のようにキャッシュＩＤ０に対してだけ，メータＩＤ５，Ｅｎａ＝“１”，レングス＝２５６が設定され，キャッシュＩＤ１〜３に対してメータＩＤは設定されず，Ｅｎａは“０”，レングス＝０が設定され，一致フラグは（ｃ２）に示すように全て“０”となる。また，メータＩＤ５によりトークンカウンタからトークン値を取得すると，キャッシュレジスタには（ｃ３）に示すようにキャッシュＩＤ０（メータＩＤ５）のみにトークン値「２００」が設定される。
【００６３】
（付記１）  複数のユーザのメータＩＤ毎に予め設定されたトークン値によるパケット転送装置のレート監視方式において，各メータＩＤに対して予め設定されたトークン値を一定周期毎に加算された現在のトークン値を保持する外部ＲＡＭのトークンカウンタを設け，入力パケットデータを格納するパケットバッファと，各パケットデータのヘッダからメータＩＤ及びレングス情報を抽出する手段から抽出された所定数のパケットデータのユーザＩＤ及びレングスを含むパケット情報と前記所定数のパケットデータのメータＩＤの相互の同一性を表す一致フラグとからなる情報を格納する第１の情報キャッシュと第２の情報キャッシュを設け，前記第１の情報キャッシュと第２の情報キャッシュの一方を前記パケット情報の入力動作を行うよう駆動し，他方を入力された前記パケット情報を用いて各メータＩＤについてトークン演算部によるトークン演算を行うよう決められた周期で切替える信号を発生するタイミング生成部を備え，前記トークン演算部による前記第１の情報キャッシュと第２の情報キャッシュのそれぞれの複数のパケットデータの各メータＩＤに対応するトークン演算の結果としてパケットデータの通過・廃棄を表すフラグが設定される第１の情報バッファと第２の情報バッファを備え，前記パケットバッファからのパケットデータの出力時に前記第１の情報バッファまたは第２の情報バッファの出力を後段に出力することを特徴とするパケット転送装置のレート監視方式。
【００６４】
（付記２）  付記１において，前記第１の情報キャッシュと第２の情報キャッシュに格納された一致フラグは，前記各情報キャッシュ内の複数のメータＩＤについて２つのメータＩＤの全ての組合せについて比較結果を表すフラグにより構成され，前記トークン演算部は，各情報キャッシュについてのトークン値の演算において，前記一致フラグを判別して，同一メータＩＤについてのトークン演算を，前記トークンカウンタにアクセスすることなく実行することを特徴とするパケット転送装置のレート監視方式。
【００６５】
（付記３）  付記１において，前記第１の情報キャッシュまたは第２の情報キャッシュに格納されたメータＩＤに対応したトークン値を前記外部ＲＡＭのトークンカウンタから読み出して保持するキャッシュレジスタを備え，前記トークン算出部は前記キャッシュレジスタからトークン値を取り出して演算を行い，キャッシュレジスタ内の全てのメータＩＤについて求められたトークン値を前記外部ＲＡＭのトークンカウンタに書き込むことを特徴とするパケット転送装置のレート監視方式。
【００６６】
（付記４）  付記１乃至３のいずれかにおいて，前記トークンカウンタのメータＩＤはパケット転送装置への入力パケットの送信元アドレスに対応して付与され，前記トークン演算部は転送装置へ入力するパケットのレートを監視することを特徴とするパケット転送装置のレート監視方式。
【００６７】
（付記５）  付記１乃至３いずれかにおいて，前記トークンカウンタのメータＩＤはパケット転送装置の出力パケットの送信先アドレスに対応して付与され，前記トークン演算部は転送装置から出力されるパケットのレートを監視することを特徴とするパケット転送装置のレート監視方式。
【図面の簡単な説明】
【００６８】
【図１】この方式の概要構成を示す図である。
【図２】実施例の構成を示す図である。
【図３】情報キャッシュ，キャッシュレジスタ及び情報バッファのデータ構成を示す図である。
【図４】トークン演算部の第１のフローチャートを示す図である。
【図５】トークン演算部の第２のフローチャートを示す図である。
【図６】トークン演算部の第３のフローチャート（その１）を示す図である。
【図７】トークン演算部の第３のフローチャート（その２）を示す図である。
【図８】トークン演算部の第４のフローチャート（その１）を示す図である。
【図９】トークン演算部の第４のフローチャート（その２）を示す図である。
【図１０】トークン演算部の第４のフローチャート（その３）を示す図である。
【図１１】実施例の各部のタイミングチャート（その１）を示す図である。
【図１２】実施例の各部のタイミングチャート（その２）を示す図である。
【図１３】情報キャッシュのデータとキャッシュレジスタのデータの具体例を示す図である。
【図１４】対象となるネットワーク構成例を示す図である。
【図１５】Ｌ２ＳＷの構成例を示す図である。
【図１６】トークンバケットによる帯域管理の説明図である。
【図１７】従来のレート監視装置の構成を示す図である。
【図１８】テーブルの構成例を示す図である。
【符号の説明】
【００６９】
１          レート監視装置
１０        トークンタイマ
１１        タイミング生成部
１２        リソース供給部
１３        パケット情報抽出部
１４        キャッシュレジスタ
１５ａ      第１の情報キャッシュ
１５ｂ      第２の情報キャッシュ
１６        トークン演算部
１７ａ      第１の情報バッファ
１７ｂ      第２の情報バッファ
１８        パケットバッファ
１９        選択部
２０        外部ＲＡＭのトークン供給設定部
２１        外部ＲＡＭのトークンカウンタ
３ａ        入力パケットデータ
３ｂ        出力パケットデータ
【図１】
0004897722.tif 000002
【図２】
0004897722.tif 000003
【図３】
0004897722.tif 000004
【図４】
0004897722.tif 000005
【図５】
0004897722.tif 000006
【図６】
0004897722.tif 000007
【図７】
0004897722.tif 000008
【図８】
0004897722.tif 000009
【図９】
0004897722.tif 000010
【図１０】
0004897722.tif 000011
【図１１】
0004897722.tif 000012
【図１２】
0004897722.tif 000013
【図１３】
0004897722.tif 000014
【図１４】
0004897722.tif 000015
【図１５】
0004897722.tif 000016
【図１６】
0004897722.tif 000017
【図１７】
0004897722.tif 000018
【図１８】
0004897722.tif 000019