(57)【要約】【課題】転送速度が高く、バッファ容量が大きく、しかも回路規模が大きくならないパケットキューイング装置およびパケットキューイング方法を提供する。【解決手段】パケットキューイング装置１がＷＡＮ側受信部１１にて受信するパケットは外部バッファメモリ６１に記憶し、ＬＡＮ側受信部４１−１〜４にて受信するパケットは内部バッファメモリ５０に記憶する。また、両パケットは同一のＱｏＳ制御部３１にて制御され、外部バッファ記憶部６１に記憶されたパケットが内部バッファ記憶部５０に記憶されずにＬＡＮ側送信部５６−１〜４から送信される。これにより、受信部に応じた転送速度及びバッファ容量を持つバッファを使用しつつ、外部バッファ記憶部に記憶６１されたパケットが内部バッファ記憶部５０に転送されてパケットあふれが生じることを防止できる。【選択図】図１
2011029904.tif 000002
【特許請求の範囲】
【請求項１】
パケットを受信する内部側受信部と、
パケットを受信する外部側受信部と、
前記パケットを記憶する内部バッファ記憶部と、
前記パケットを記憶する外部バッファ記憶部と、
前記内部側受信部が受信した前記パケットを前記内部バッファ記憶部に書き込む内部バッファ書き込み部と、
前記外部側受信部が受信した前記パケットを前記外部バッファ記憶部に書き込む外部バッファ書き込み部と、
前記パケットの送信先に対応して、前記送信先に送信される一連の前記パケットの前記内部バッファ記憶部又は前記外部バッファ記憶部における記憶位置を表す記憶位置情報を記憶するキューと、
前記内部バッファ記憶部又は前記外部バッファ記憶部に書き込まれた前記パケットに関し、前記記憶位置情報を前記パケットの送信先に対応する前記キューに書き込むとともに、前記キューから前記記憶位置情報を順次読み出すキュー管理部と、
前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記内部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信するとともに、かつ、前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する内部側送信部と、
前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する外部側送信部と、
を具備することを特徴とするパケットキューイング装置。
【請求項２】
複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、
前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、
前記キューの各々の最大キュー長を記憶する最大キュー長レジスタと
をさらに具備し、
前記キュー管理部は、前記パケットの送信先に対応付けられた前記キューのキュー長が前記最小キュー長以上かつ前記最大キュー長よりも小さい場合は前記共有キューバッファの容量から前記キューの各々の前記最小キュー長として使用される容量を除いた容量に空き容量が残っていないときには前記記憶位置情報の前記キューへの書き込みを抑止し、前記キューのキュー長が前記最大キュー長以上の場合は前記記憶位置情報の前記キューへの書き込みを抑止する
ことを特徴とする請求項１記載のパケットキューイング装置。
【請求項３】
複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、
前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、
をさらに具備し、
前記キュー管理部は、前記キューのキュー長が前記最小キュー長以上である場合には前記共有キューバッファから前記キュー用に獲得した記憶領域に前記記憶位置情報を書き込むとともに、外部からの指示情報に基づいて前記最小キュー長レジスタに記憶されている前記最小キュー長を更新する、
ことを特徴とする請求項１記載のパケットキューイング装置。
【請求項４】
パケットを記憶する内部バッファ記憶部と、
パケットを記憶する外部バッファ記憶部と、
前記パケットの送信先に対応して、前記送信先に送信される一連の前記パケットの前記内部バッファ記憶部又は前記外部バッファ記憶部における記憶位置を表す記憶位置情報を記憶するキューと、
を用い、
パケットを受信する内部側受信ステップと、
パケットを受信する外部側受信ステップと、
前記内部側受信ステップにおいて受信した前記パケットを前記内部バッファ記憶部に書き込む内部バッファ書き込みステップと、
前記外部側受信ステップにおいて受信した前記パケットを前記外部バッファ記憶部に書き込む外部バッファ書き込みステップと、
前記内部バッファ記憶部又は前記外部バッファ記憶部に書き込まれた前記パケットに関し、前記記憶位置情報を前記パケットの送信先に対応する前記キューに書き込むとともに、前記キューから前記記憶位置情報を順次読み出すキュー管理ステップと、
前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記内部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信するとともに、かつ、前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する内部側送信ステップと、
前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する外部側送信ステップと、
を具備することを特徴とするパケットキューイング方法。
【請求項５】
複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、
前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、
前記キューの各々の最大キュー長を記憶する最大キュー長レジスタと、
を用い、
前記キュー管理ステップは、前記パケットの送信先に対応付けられた前記キューのキュー長が前記最小キュー長以上かつ前記最大キュー長よりも小さい場合は前記共有キューバッファの容量から前記キューの各々の前記最小キュー長として使用される容量を除いた容量に空き容量が残っていないときには前記記憶位置情報の前記キューへの書き込みを抑止し、前記キューのキュー長が前記最大キュー長以上の場合は前記記憶位置情報の前記キューへの書き込みを抑止する
ことを特徴とする請求項４記載のパケットキューイング方法。
【請求項６】
複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、
前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、
を用い、
前記キュー管理ステップは、前記キューのキュー長が前記最小キュー長以上である場合には前記共有キューバッファから前記キュー用に獲得した記憶領域に前記記憶位置情報を書き込むとともに、外部からの指示情報に基づいて前記最小キュー長レジスタに記憶されている前記最小キュー長を更新する
ことを特徴とする請求項４記載のパケットキューイング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信に関し、特にパケットキューイング装置およびパケットキューイング方法に関する。
【背景技術】
【０００２】
ルータやスイッチにおいて品質制御を行う場合、パケットを一時的に蓄えておくためのパケットバッファが必要となる。ルータやスイッチ用のＬＳＩにおけるパケットバッファは、外部メモリあるいは内部メモリ上に構成される。外部メモリ上にパケットバッファが構成される場合は、大容量のメモリを利用できることから多くのパケットを蓄積できる。しかしながら、メモリバスなどの制約により高速な読み書きができず、それによりルータのパケット転送性能が大きく低下する。一方、内部メモリ上にパケットバッファが構成される場合は、読み書きの速度は、外部メモリと比べて非常に高速である。しかし、バッファ用メモリ容量の増加はそのＬＳＩの回路規模増大を招きコストが増大する。以上のことから、従来のルータやスイッチでは、内部メモリを用いた転送性能が高いルータやスイッチはバッファリングできる容量が小さく、外部メモリを用いたバッファリング容量が大きいルータやスイッチは転送性能が低いという問題があった。
たとえば、特許文献１の通信処理回路では、外部バスにＤＤＲ(Double Data Rate)メモリを搭載することで大きなバッファリング容量が得られるが、パケット転送速度はＤＤＲメモリの転送速度に制約される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１３５０４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
家庭内ＬＡＮ(Local Area Network)は一般には比較的低負荷で、かつ通信速度が比較的一定に安定している。従って、家庭内ＬＡＮ上を送信されるパケットに関しては、ＱｏＳ（Quality of Service；サービス品質）制御でバッファに蓄積されるパケットの量は比較的少ない。一方、インターネット等の広域ネットワーク（ＷＡＮ；Wide Area Network）は負荷の変化や通信速度の変化が大きい。従って、家庭内ＬＡＮからインターネット等の広域ネットワーク（ＷＡＮ；Wide Area Network）へ、或いはインターネット等の広域ネットワークから家庭内ＬＡＮへ送信されるパケットに対しては、パケットを等間隔に送信する平滑化処理が必要である。このため、平滑化処理を含むＱｏＳ制御のために大容量のパケットバッファを必要とする。
また、家庭内ＬＡＮに複数の端末装置が接続され、複数の端末装置間でデータが転送される場合、ルータやスイッチは複数の通信経路のデータを同時に転送する必要が生じうる。この場合、ルータやスイッチはＬＡＮからインターネットへ、あるいはインターネットからＬＡＮへのパケット転送よりも高速にパケット転送を行う必要がある。そのためには、より高速に読み書きを行えるバッファを必要とする。
【０００５】
このように、家庭内ＬＡＮの各端末を結び、さらにインターネットとも接続するルータ等においては、家庭内ＬＡＮ間内でのパケット送信には、より高速に読み書きを行えるバッファが必要であり、家庭内ＬＡＮとＷＡＮとの間のパケット送信には、より大容量のバッファが必要である。しかし、上述のように、従来のルータやスイッチでは、外部メモリを用いたバッファリング容量が大きいルータやスイッチは転送性能が低く、内部メモリを用いた転送性能が高いルータやスイッチはバッファリングできる容量が小さいか或いは容量を増やすために回路規模を大きくする必要があり、コストが増大していた。
【０００６】
また、家庭内ＬＡＮに用いられるルータは、ルータ機能をつかさどるＣＰＵ（Central Processing Unit、中央処理装置）とＬ２−ＳＷ（レイヤ２スイッチ）のＬＳＩ（Large Scale Integration；大規模集積回路）とで構成されるのが一般的である。例えば、パケットがＷＡＮ側からＬＡＮ側へ連続（バースト）して送信される場合、ＣＰＵでは多くのパケットをバッファリングできるが、Ｌ２−ＳＷの内部メモリは小さいので、バッファあふれを起こしパケットが廃棄される場合がある。この場合、バックプレッシャをＣＰＵにかけてＬ２−ＳＷへのパケット送出を停止させることで、バッファあふれによるパケット廃棄を防ぐことができる。しかし、Ｌ２−ＳＷにおいてバッファからあふれるパケットがＬＡＮ側の特定のインタフェースへのパケットであるのに対し、そのインタフェースとは関係のないインタフェースへのパケットの送出も、バックプレッシャにより停止させられる。このため、通信速度が大きく低下する。
【０００７】
また、バッファに記憶されたパケットを管理するために送信先の端末毎にキュー（待ち行列）を備え、キューを蓄えるメモリの総量が固定されているルータやスイッチにおいて、新たに送信先の端末が接続された場合など、最大キュー長の設定変更が必要な場合がある。ここで、キュー長とはキューが保持する要素数をいう。また、最大キュー長とはキューが保持できる要素数の最大値をいう。最大キュー長の設定変更において、従来の方法では単に最大キュー長のみを変更していた。この方法では、変更時のキュー長よりも短い最大キュー長に設定した場合に、設定変更後の最大キュー長を超えてキューイングされていたパケット情報が消滅してしまう。そこで、パケットの受信を一時的に停止しキュー長が０になった後に最大キュー長を変更する方法が一般的に用いられている。しかし、この方法では、パケットの受信を停止するため、通信速度が低下する。
【０００８】
本発明は、このような事情を考慮してなされたものであり、その目的の１つは、転送速度が高く、バッファ容量が大きく、しかも回路規模が大きくならないパケットキューイング装置およびパケットキューイング方法を提供することにある。また、本発明の目的のもう１つは、バックプレッシャを用いずにＷＡＮ側からＬＡＮ側に送信されるパケットのバッファあふれを防止するパケットキューイング装置およびパケットキューイング方法を提供することにある。
【課題を解決するための手段】
【０００９】
［１］この発明は上述した課題を解決するためになされたもので、本発明の一態様によるパケットキューイング装置は、パケットを受信する内部側受信部と、パケットを受信する外部側受信部と、前記パケットを記憶する内部バッファ記憶部と、前記パケットを記憶する外部バッファ記憶部と、前記内部側受信部が受信した前記パケットを前記内部バッファ記憶部に書き込む内部バッファ書き込み部と、前記外部側受信部が受信した前記パケットを前記外部バッファ記憶部に書き込む外部バッファ書き込み部と、前記パケットの送信先に対応して、前記送信先に送信される一連の前記パケットの前記内部バッファ記憶部又は前記外部バッファ記憶部における記憶位置を表す記憶位置情報を記憶するキューと、前記内部バッファ記憶部又は前記外部バッファ記憶部に書き込まれた前記パケットに関し、前記記憶位置情報を前記パケットの送信先に対応する前記キューに書き込むとともに、前記キューから前記記憶位置情報を順次読み出すキュー管理部と、前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記内部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信するとともに、かつ、前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する内部側送信部と、前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する外部側送信部と、を具備することを特徴とする。
このパケットキューイング装置は、外部側送信部から送信するパケットを外部側受信部にて受信した場合は、受信したパケットを外部バッファ記憶部に一旦書き込んだ後、このパケットを外部バッファ記憶部から読み出して外部側送信部から送信する。また、このパケットキューイング装置は、内部側送信部から送信するパケットを外部側受信部にて受信した場合は、受信したパケットを外部バッファ記憶部に一旦書き込んだ後、このパケットを外部バッファ記憶部から読み出して内部側送信部から送信する。また、このパケットキューイング装置は、内部側送信部から送信するパケットを内部側受信部にて受信した場合は、受信したパケットを内部バッファ記憶部に一旦書き込んだ後、このパケットを内部バッファ記憶部から読み出して内部側送信部から送信する。また、このパケットキューイング装置は、外部側送信部から送信するパケットを内部側受信部にて受信した場合は、受信したパケットを内部バッファ記憶部に一旦書き込む。その後、外部側送信部から送信するパケットを外部側受信部にて受信した場合と同様、外部バッファ記憶部に一旦再度書き込まれた後、このパケットが外部側送信部から送信される。
このように、このパケットキューイング装置では、外部側受信部から受信されたパケットが一旦外部バッファ記憶部に蓄えられた後、内部バッファ記憶部に蓄えられずに直接内部側送信部から送信されるので、外部バッファ記憶部よりも内部バッファ記憶部の容量が小さいことによるパケットあふれが生じない。さらに、外部側受信部から受信されたパケットを内部側送信部から送信する際に、内部側バッファ記憶部におけるパケットあふれが生じないので、パケットあふれを防止するために外部バッファ記憶部の読み出し速度を低減させる必要がない。したがって、外部バッファ記憶部の読み出し速度を活かした処理ができる。
【００１０】
［２］また、本発明の一態様によるパケットキューイング装置は上述のパケットキューイング装置であって、複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、前記キューの各々の最大キュー長を記憶する最大キュー長レジスタとをさらに具備し、前記キュー管理部は、前記パケットの送信先に対応付けられた前記キューのキュー長が前記最小キュー長以上かつ前記最大キュー長よりも小さい場合は前記共有キューバッファの容量から前記キューの各々の前記最小キュー長として使用される容量を除いた容量に空き容量が残っていないときには前記記憶位置情報の前記キューへの書き込みを抑止し、前記キューのキュー長が前記最大キュー長以上の場合は前記記憶位置情報の前記キューへの書き込みを抑止することを特徴とする。
このパケットキューイング装置は複数のキューがキューバッファを共有するので、キューバッファの利用効率が高い。
【００１１】
［３］また、本発明の一態様によるパケットキューイング装置は上述のパケットキューイング装置であって、複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、をさらに具備し、前記キュー管理部は、前記キューのキュー長が前記最小キュー長以上である場合には前記共有キューバッファから前記キュー用に獲得した記憶領域に前記記憶位置情報を書き込むとともに、外部からの指示情報に基づいて前記最小キュー長レジスタに記憶されている前記最小キュー長を更新する、ことを特徴とする。
このパケットキューイング装置は、キュー管理部がキューの設定値を変更する。その際、キューの設定値変更を行うのはキュー管理部のみとすることにより、パケットキューイング装置を稼動させながらの動的な変更を行うことができる。
【００１２】
［４］また、本発明の一態様によるパケットキューイング方法は、パケットを記憶する内部バッファ記憶部と、パケットを記憶する外部バッファ記憶部と、前記パケットの送信先に対応して、前記送信先に送信される一連の前記パケットの前記内部バッファ記憶部又は前記外部バッファ記憶部における記憶位置を表す記憶位置情報を記憶するキューと、を具備するパケットキューイング装置が、パケットを受信する内部側受信ステップと、パケットを受信する外部側受信ステップと、前記内部側受信ステップにおいて受信した前記パケットを前記内部バッファ記憶部に書き込む内部バッファ書き込みステップと、前記外部側受信ステップにおいて受信した前記パケットを前記外部バッファ記憶部に書き込む外部バッファ書き込みステップと、前記内部バッファ記憶部又は前記外部バッファ記憶部に書き込まれた前記パケットに関し、前記記憶位置情報を前記パケットの送信先に対応する前記キューに書き込むとともに、前記キューから前記記憶位置情報を順次読み出すキュー管理ステップと、前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記内部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信するとともに、かつ、前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する内部側送信ステップと、前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する外部側送信ステップと、を具備することを特徴とする。
このパケットキューイング方法では、外部側受信ステップにて受信されたパケットが一旦外部バッファ記憶部に蓄えられた後、内部バッファ記憶部に蓄えられずに直接内部側送信ステップにて送信されるので、外部バッファ記憶部よりも内部バッファ記憶部の容量が小さいことによるパケットあふれが生じない。また、パケットあふれが生じないので、外部側受信ステップにて受信されたパケットを内部側送信ステップにて送信する際に、パケットあふれを防止するために外部バッファ記憶部の読み出し速度を低減させる必要がない。したがって、外部バッファ記憶部の読み出し速度を活かした処理ができる。
【００１３】
［５］また、本発明の一態様によるパケットキューイング方法は、上述のパケットキューイング方法であって、複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、前記キューの各々の最大キュー長を記憶する最大キュー長レジスタとをさらに具備するパケットキューイング装置のパケットキューイング方法であって、前記キュー管理ステップは、前記パケットの送信先に対応付けられた前記キューのキュー長が前記最小キュー長以上かつ前記最大キュー長よりも小さい場合は前記共有キューバッファの容量から前記キューの各々の前記最小キュー長として使用される容量を除いた容量に空き容量が残っていないときには前記記憶位置情報の前記キューへの書き込みを抑止し、前記キューのキュー長が前記最大キュー長以上の場合は前記記憶位置情報の前記キューへの書き込みを抑止することを特徴とする。
このパケットキューイング方法では、パケットキューイング装置は複数のキューがキューバッファを共有するので、キューバッファの利用効率が高い。
【００１４】
［６］また、本発明の一態様によるパケットキューイング方法は、上述のパケットキューイング方法であって、複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、をさらに具備するパケットキューイング装置のパケットキューイング方法であって、前記キュー管理ステップは、前記キューのキュー長が前記最小キュー長以上である場合には前記共有キューバッファから前記キュー用に獲得した記憶領域に前記記憶位置情報を書き込むとともに、外部からの指示情報に基づいて前記最小キュー長レジスタに記憶されている前記最小キュー長を更新することを特徴とする。
このパケットキューイング方法では、キュー管理部がキューの設定値を変更する。その際、キューの設定値変更を行うのはキュー管理部のみとすることにより、パケットキューイング装置を稼動させながらの動的な変更を行うことができる。
【発明の効果】
【００１５】
この発明によれば、転送速度が高く、バッファ容量が大きく、しかも回路規模が大きくならないパケットキューイング装置およびパケットキューイング方法を提供することができる。また、バックプレッシャを用いずにＷＡＮ側からＬＡＮ側に送信されるパケットのバッファあふれを防止するパケットキューイング装置およびパケットキューイング方法を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態におけるパケットキューイング装置１の概略構成を示す構成図である。
【図２】同実施形態におけるキュー登録部３１２がジョブ情報をキューに登録する処理とキュー長との関係を示す図である。
【図３】同実施形態におけるＱｏＳ制御部３１の概略構成を示す構成図である。
【図４】同実施形態における共有レジスタ群３１５の概略構成を示す構成図である。
【図５】同実施形態における共通レジスタ群３１５が記憶するパケット管理テーブル３２５のデータ構成を示すデータ構成図である。
【図６】同実施形態における共通レジスタ群３１５が記憶するパケット管理テーブル３２５ｂのもう１つのデータ構成例を示すデータ構成図である。
【図７】同実施形態において廃棄判定部３１１がジョブ情報の登録または廃棄要求を行う処理手順を示すフローチャートである。
【図８】同実施形態においてキュー登録部３１２がキューにジョブ情報を登録する処理を行う手順を示すフローチャートである。
【図９】同実施形態においてキュー登録部３１２が登録を行うもう１つの処理手順の例を示すフローチャートである。
【図１０】同実施形態においてキュー登録部３１２が行う、パケット送出後処理の手順を示すフローチャートである。
【図１１】同実施形態においてキュー登録部３１２がパケット送出後処理を行うもう１つの処理手順を示すフローチャートである。
【図１２】同実施形態においてキュー登録部３１２が、あるキューの最小キュー長を減少させる処理手順を示すフローチャートである。
【図１３】同実施形態においてキュー登録部３１２が、あるキューの最小キュー長を増加させる処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、本発明の実施の形態について説明する。
図１は本発明の一実施形態におけるパケットキューイング装置１の概略構成を示す構成図である。同図において、パケットキューイング装置１は、ＷＡＮ側受信部（外部側受信部）１１と調停部１２とＷＡＮ側パーサ部１３及とＦＩＦＯ（First-In, First-Out；ファイホ）部１４と検索部１５とＷＡＮ側フレーム生成部１６とＷＡＮ側ＦＩＦＯ部１７とＷＡＮ側Ｌ２検索部１８と外部バッファ書き込み部１９と外部バッファ記憶部６１とメモリコントローラ６２と外部バッファ管理部２１と外部バッファ読み出し部２２とＷＡＮ側送信部（外部側送信部）２６とＬＡＮ側受信部（内部側受信部）４１−１〜４とＬＡＮ側パーサ部４３−１〜４とＬＡＮ側ＦＩＦＯ部４７−１〜４とＬＡＮ側Ｌ２検索部４８−１〜４と内部バッファ書き込み部４９と内部バッファ記憶部５０と内部バッファ管理部５１と内部バッファ読み出し部５２と、ＬＡＮ−ＷＡＮ間フレーム生成部５３とＬＡＮ側フレーム生成部５４−１〜４とＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５とＬＡＮ側送信部（内部側送信部）５６−１〜４とＱｏＳ制御部（キュー管理部）３１とを含んで構成される。ＱｏＳ制御部３１は、キューバッファ（共有キューバッファ）３２１とパケットスケジューラ３３とを含んで構成される。内部バッファ管理部５１は、内部バッファ記憶部ベースアドレスレジスタ（不図示）と内部バッファ記憶部メモリブロックサイズレジスタ（不図示）とを含んで構成される。外部バッファ管理部２１は、外部バッファ記憶部ベースアドレスレジスタ（不図示）と外部バッファ記憶部メモリブロックサイズレジスタ（不図示）とを含んで構成される。
外部バッファ記憶部６１と内部バッファ記憶部５０とＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５とキューバッファ３２１とは、半導体メモリを含んで構成される記憶部である。
【００１８】
外部バッファ記憶部６１は、メモリコントローラ６２のインタフェース規格に基づくバスを通じて外部バッファ書き込み部１９及び外部バッファ読み出し部２２に接続される。外部バッファ記憶部６１は内部バッファ記憶部５０よりも記憶容量が大きいが、外部バッファ記憶部６１は内部バッファ記憶部５０よりも読み書き速度が遅い。外部バッファ記憶部６１に用いられる外部バッファメモリの記憶容量が、一般的には１６あるいは３２メガバイト以上であるのに対し、内部バッファ記憶部５０に用いられる内部バッファメモリの記憶容量はたかだか１２８キロバイト程度である。一方、外部バッファ記憶部６１の読み書き速度は、１３３メガヘルツで動作する４バイト幅のＳＤＲ−ＳＤＲＡＭ（Single Data Rate Synchronous Dynamic Random Access Memory）を使用した場合、５３３メガバイト／秒であるのに対して、内部バッファメモリ５０の読み書き速度は動作周波数を１３３メガヘルツとしバス幅を６４バイトとした場合、８．５ギガバイト／秒である。
外部バッファ記憶部６１は外部メモリを含んで構成され、内部バッファ記憶部５０は内部メモリを含んで構成される。外部側受信部が受信したパケットは、廃棄されるパケットを除いて全て外部バッファ記憶部６１に記憶され、内部側受信部が受信したパケットは、廃棄されるパケットを除いて全て内部バッファ記憶部５０に記憶される。また、外部側送信部から送信されるパケットは全て外部バッファ記憶部６１から読み出されたパケットである。ただし、内部側送信部は、内部バッファ記憶部５０から読み出されたパケットに加えて外部バッファ記憶部６１から読み出されたパケットも送信する。外部バッファ記憶部６１から読み出されたパケットを一旦内部バッファ記憶部５０に書き込むことによるパケット溢れを防止するために、内部側送信部は、外部バッファ記憶部６１から読み出されたパケットを、内部バッファ記憶部５０を介さずに送信する。以下で用いる「外部側」とは、記憶容量がより大きく読み書き速度がより遅い外部バッファ記憶部６１にパケットを書き込み、この外部バッファ記憶部６１から読み出したパケットを送信する側をいう。また、「内部側」とは、記憶容量がより小さく読み書き速度がより速い内部バッファ記憶部５０にパケットを書き込み、この内部バッファ記憶部５０から読み出したパケットを送信する側をいう。
【００１９】
ＬＡＮ側受信部４１−１〜４は、それぞれＬＡＮ上の端末装置等の機器ＬＡＮ１〜４からパケットを受信する。ＬＡＮ側受信部４１−１〜４は、受信したパケットをそれぞれＬＡＮ側パーサ部４３−１〜４に入力する。
ＬＡＮ側パーサ部４３−１〜４は入力されたパケットに対して構文解析を行い、ＬＡＮ側Ｌ２検索部４８−１〜４が使用する要素を抽出する。具体的には、ＬＡＮ側パーサ部４３−１〜４は、パケットの所定の位置に書かれている値を読み出す。そして、ＬＡＮ側パーサ部４３−１〜４は、読み出した値に基づいて、予め定められた要素の中からＬＡＮ側Ｌ２検索部４８−１〜４に出力する要素を選択する。さらに、ＬＡＮ側パーサ部４３−１〜４はパケットをＬＡＮ側ＦＩＦＯ部４７−１〜４に入力し、抽出した要素をＬＡＮ側Ｌ２検索部４８−１〜４に入力する。ＬＡＮ側ＦＩＦＯ部４７−１〜４は、入力されたパケットを時間調整のために一時的に記憶する。
ＬＡＮ側Ｌ２検索部４８−１〜４は、ＬＡＮ側パーサ部４３−１〜４から入力された要素と予め内部に記憶するＬ２検索用のキーとを照合することにより、出力先判定と品質クラス判定と廃棄判定とを行う。ＬＡＮ側Ｌ２検索部４８−１〜４は、内部バッファ書き込み部４９に判定結果を入力する。
【００２０】
内部バッファ書き込み部４９は、ＬＡＮ側Ｌ２検索部４８−１〜４から判定結果が入力されると、そのＬＡＮ側Ｌ２検索部４８−１〜４に対応したＬＡＮ側ＦＩＦＯ部４７−１〜４からパケットを読み出す。また、内部バッファ書き込み部４９には、内部バッファ管理部５１から内部バッファ記憶部５０の空き領域の位置情報が入力される。ここで、内部バッファ記憶部５０の位置情報はハンドル番号にて示される。ハンドル番号については後述する。
内部バッファ書き込み部４９は、入力された位置情報に従って、内部バッファ記憶部５０の空き領域にＬＡＮ側ＦＩＦＯ部４７−１〜４から読み出したパケットのパケットデータを書き込む。内部バッファ書き込み部４９は、パケットデータの書き込みが終了すると、書き込まれた領域の位置情報を示すハンドル番号と受信ポート番号と品質クラス指定と出力ポート番号とフレーム長とＶＬＡＮ有無の情報など、出力のフレーム生成に必要な情報を含むジョブ情報をＱｏＳ制御部３１に入力する。
【００２１】
なお、内部バッファ書き込み部４９が、内部バッファ記憶部５０にパケットデータの書き込みを開始した後にこのパケットデータを廃棄する必要が生じる場合がある。たとえば、ジャンボフレーム等のパケット長が長いデータを内部バッファ記憶部５０に書き込む場合など、書き込みの途中で内部バッファ記憶部５０の記憶容量を超えてしまう場合がある。また、後述するように、ＱｏＳ制御部３１でキューが既に最大キュー長に達しているためにジョブ情報をキューに登録できない場合がある。この場合、内部バッファ書き込み部４９にはＱｏＳ制御部３１から廃棄要求が入力される。また、ジャンボフレーム等のパケット長が長いデータでは、内部バッファ書き込み部４９がパケットデータの先頭を内部バッファ記憶部５０に書き込んだ後で、Ｌ２検索部がこのフレームの廃棄を決定する場合がある。このような場合、ＱｏＳ制御部３１は内部バッファ記憶部５０に書き込んだパケットの記憶位置情報を示すハンドル番号を内部バッファ管理部５１に入力する。内部バッファ管理部５１は、ハンドル番号によって示される内部バッファ記憶部５０の領域を空き領域として記憶する。これにより、このパケットは廃棄される。一方、内部バッファ記憶部５０の空き領域がないためにパケットが廃棄される場合は、内部バッファ書き込み部４９は内部バッファ記憶部５０にパケットの書き込みを行わず、ＱｏＳ制御部へのジョブ情報の入力も行わない。
なお、内部バッファ記憶部５０は、想定される最長フレーム長に合わせたメモリブロックに区画されていてもよいし、最長フレーム長よりも小さいメモリブロックに区画されていてもよい。最長フレーム長よりも小さいメモリブロックに区画すると管理方法が複雑となるがメモリ利用効率は向上する。
内部バッファ記憶部５０は、パケットを記憶する。内部バッファ管理部５１は、内部バッファ記憶部５０上の空き領域を示すハンドル番号を記憶する。
【００２２】
ＷＡＮ側受信部１１は、ＷＡＮからのパケットを受信して調停部１２へ出力する。
調停部１２は、ＷＡＮ側受信部１１から入力されるパケットとＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５から入力されるパケットとのどちらを先に処理するかを決定する。調停部１２は、決定した順序に従ってＷＡＮ側受信部１１から入力されるパケットとＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５から入力されるパケットとをＷＡＮ側パーサ部１３に入力する。ＷＡＮ側パーサ部１３は、入力されたパケットに対して構文解析を行い、検索部１５が使用する要素を抽出する。ＷＡＮ側パーサ部１３はパケットをＦＩＦＯ部１４に入力し、抽出した要素を検索部１５に入力する。
ＦＩＦＯ部１４は、入力されたパケットを時間調整のために一時的に記憶する。
検索部１５は、入力された要素と予め内部に記憶する検索用のキーとを照合することにより、出力先判定と品質クラス判定と廃棄判定とパケット書き換え判定とを行う。検索部１５は、ＷＡＮ側フレーム生成部１６に判定結果を入力する。
ＷＡＮ側フレーム生成部１６は、判定結果が入力されると、ＦＩＦＯ部１４からパケットを読み出す。また、ＷＡＮ側フレーム生成部１６は、上述のパケット書き換え判定においてパケットの書き換えが必要と判定された場合は、読み出したパケットを書き換える。ＷＡＮ側フレーム生成部１６は、パケットをＷＡＮ側ＦＩＦＯ部１７に入力し、判定結果をＷＡＮ側Ｌ２検索部１８に入力する。
ＷＡＮ側ＦＩＦＯ部１７は、入力されたパケットを時間調整のために一時的に記憶する。
【００２３】
ＷＡＮ側Ｌ２検索部１８は、ＬＡＮ側送信部から送信されるパケットに対して、ＬＡＮ側Ｌ２検索部４８−１〜４と同様のＬ２検索を行う。ＷＡＮ側Ｌ２検索部１８は、検索結果を外部バッファ書き込み部１９に入力する。
外部バッファ書き込み部１９は、検索結果が入力されると、ＷＡＮ側ＦＩＦＯ部１７からパケットを読み出す。また、外部バッファ書き込み部１９は、外部バッファ管理部２１から外部バッファ記憶部６１の空き領域の位置情報を示すハンドル番号を読み出す。外部バッファ書き込み部１９は、入力されたハンドル番号に従って、外部バッファ記憶部６１の空き領域にＷＡＮ側ＦＩＦＯ部１７から読み出したパケットのパケットデータを書き込む。外部バッファ書き込み部１９は、パケットデータの書き込みが終了すると、ジョブ情報をＱｏＳ制御部３１に入力する。
ＬＡＮ側と同様、外部バッファ記憶部６１に空き領域がない場合や、キュー長が最大キュー長に達しているなどの理由でキューにジョブ情報を登録できなかった場合や、検索部１５の廃棄判定において廃棄すると判定された場合は、外部バッファ書き込み部１９は、外部バッファ記憶部６１にパケットを書き込まない。一方、外部バッファ記憶部６１へのパケットを書き込みを開始した後にパケットを廃棄する場合は、ＬＡＮ側と同様、外部バッファ管理部にパケットを書き込んだ外部バッファ記憶部６１上のハンドル番号を外部バッファ管理部２１に入力する。外部バッファ管理部２１は、入力されたハンドル番号を空き領域を示すハンドル番号として記憶する。これにより、パケットが廃棄される。
メモリコントローラ６２は、外部バッファ記憶部６１に対するパケットの書き込み及び読み出しを行う。外部バッファ管理部２１は、外部バッファ記憶部６１上の空き領域を示すハンドル番号を記憶する。
ＱｏＳ制御部３１とキューバッファ３２１とパケットスケジューラ３３とについては、後述する。
【００２４】
外部バッファ読み出し部２２は、送信するパケットのジョブ情報がパケットスケジューラ３３から入力されると、入力されたジョブ情報から管理番号と送信ポート番号とを読み出す。外部バッファ読み出し部２２は、読み出した管理番号から得られるハンドル番号に従って、メモリコントローラ６２を介して外部バッファ記憶部６１からパケットデータを読み出す。外部バッファ読み出し部２２は、読み出したパケットデータを、ジョブ情報から読み出した送信ポート番号に従って、ＷＡＮ側送信部２６またはＬＡＮ側フレーム生成部５４−１〜４の何れかに入力する。また、外部バッファ読み出し部２２は、読み出したハンドル番号を外部バッファ管理部２１に入力する。外部バッファ管理部２１は、入力されたハンドル番号を空き領域のハンドル番号として記憶する。これにより、読み出したパケットデータが記憶されていた外部バッファ記憶部６１上の記憶領域が空き領域として解放される。
ＷＡＮ側送信部２６は、入力されたフレームをＷＡＮに送信する。
ここで、ＷＡＮに送信されるパケットは、ＷＡＮ側フレーム生成部１６ですでにフレーム生成されているので改めてフレームを生成する必要は無く、ＷＡＮ側送信部２６は外部バッファ読み出し部２２から入力されたパケットをそのまま送出する。
【００２５】
内部バッファ読み出し部５２は、送信するパケットのジョブ情報がパケットスケジューラ３３から入力されると、入力されたジョブ情報から管理番号と送信ポート番号とを読み出す。内部バッファ読み出し部５２は、読み出した管理番号をＱｏＳ制御部３１に入力し、ＱｏＳ制御部３１から管理番号から得られるハンドル番号に対応する内部バッファ記憶部５０上のアドレスが入力される。内部バッファ読み出し部５２は入力されたアドレスに従って内部バッファ記憶部５０からパケットデータを読み出す。内部バッファ読み出し部５２は、読み出したパケットデータを、ジョブ情報から読み出した送信ポート番号に従って、ＬＡＮ−ＷＡＮ間フレーム生成部５３またはＬＡＮ側フレーム生成部５４−１〜４の何れかに入力する。また、内部バッファ読み出し部５２は、読み出したハンドル番号を内部バッファ管理部５１に入力する。内部バッファ管理部５１は、入力されたハンドル番号を空き領域のハンドル番号として記憶する。これにより、読み出したパケットデータが記憶されていた内部バッファ記憶部５０上の記憶領域が空き領域として解放される。
ＬＡＮ−ＷＡＮ間フレーム生成部５３は、内部バッファ読み出し部５２からパケットデータを入力されると、ＶＬＡＮタグの挿入削除などのフレーム書き換えを行ってフレームを生成する。ＬＡＮ−ＷＡＮ間フレーム生成部５３は、生成したフレームをＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５に入力する。同様に、ＬＡＮ側フレーム生成部５４−１〜４は、内部バッファ読み出し部５２からパケットデータを入力されると、ＶＬＡＮタグの挿入削除などのフレーム書き換えを行ってフレームを生成する。ＬＡＮ側フレーム生成部５４−１〜４は、生成したフレームを、それぞれＬＡＮ側送信部５６−１〜４に入力する。
ＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５は、入力されたフレームを時間調整のために一時的に記憶する。ＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５は、上述のように調停部１２へパケットを入力する。ここで、複数のＬＡＮ側受信部４１―１〜４が受信したパケットが調停部１２に入力される場合がある。この場合も、ＱｏＳ制御部３１によってＱｏＳ制御された後のパケットがＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５を経由して調停部１２へ入力されており、ＱｏＳ制御部３１によって調停部１２への入力順序が調整されている。また、内部バッファ記憶部５０に記憶されていたパケットを調停部１２へ入力することで、このパケットが記憶されていた内部バッファ記憶部５０上の記憶領域を空き領域とすることができ、内部バッファを有効に利用可能となる。
ＬＡＮ側送信部５６−１〜４は、入力されたフレームをそれぞれＬＡＮ上の端末装置等の機器ＬＡＮ１〜４に送信する。
【００２６】
パケットスケジューラ３３はＬＡＮ側送信部５６−１〜４とＷＡＮ側送信部２６とから各送信部の状態の情報が入力される。具体的には、パケットスケジューラ３３には各送信部がパケットを送信中か送信を完了しているかの情報が入力される。パケットスケジューラ３３は、キューコントローラ部３１４−１〜Ｎから送信要求信号としてジョブ情報が入力されると、優先制御または重み付け公平制御等のパケット送出スケジューリングを行い、スケジューリング完了後のパケット送出タイミング時に、入力されたジョブ情報を外部バッファ読み出し部２２または内部バッファ読み出し部５２に入力する。その後、パケットスケジューラ３３は、当該パケットの送信を受け付けたことを示す承認信号（アクノリッジ信号ともいう）をキューコントローラ部３１４−１〜Ｎに入力する。
キューバッファ３２１は、ＷＡＮ側送信部２６とＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５とＬＡＮ側送信部５６−１〜４の各々に対して品質クラス数分のキューを具備する。ＷＡＮ側送信部２６とＬＡＮ−ＷＡＮ間ＦＩＦＯ部５５とＬＡＮ側送信部５６−１〜４の各々は送信先としてＷＡＮと調停部と機器ＬＡＮ１〜４に予め対応付けられているので、各キューは送信先に予め対応付けられている。
ここで、ＬＡＮ側送信部の数が多くなると、また、品質クラスが多くなると、キューバッファ３２１は大きなバッファ容量を備える必要がある。また、各キューに対して設定可能なキュー長を大きくするとキューに関連付けられるジョブ情報を蓄積しておくためのキューバッファ量が増大する。しかしすべてのキューが常に最大キュー長分のジョブ情報を蓄積することはなく、一時的に最大キュー長に達することがほとんどである。そこで、キューバッファ量を削減するために、キューバッファ３２１は各キューが共有して用いる共有キューバッファを備える。
ここで、キューバッファ３２１を全て共有キューバッファとすると、他のキューに関連するジョブ情報が書き込まれてキューバッファ３２１の空き領域がなくなった場合に、ジョブ情報を１個も書き込めないキューが生じ得る。これを避けるために各キューに最小キュー長を予め設定する。最小キュー長はキューが必ず保持することができる要素数である。また、前述したようにキュー長とはキューが保持する要素数をいう。キューバッファ３２１の容量のうち、各キューの最小キュー長に必要な容量を除いた残りを共有キューバッファの容量として用いる。これにより、少ない量のキューバッファ３２１で、特定のキューが一時的に使用する大量のキューバッファにも対応すると共に各キューに対して最低限蓄積可能なキュー長を保証する。
【００２７】
図２はキュー登録部３１２がジョブ情報をキューに登録する処理とキュー長との関係を示す図である。以下、後述する図３や他図も適宜参照しながら説明する。
キュー長が最小キュー長よりも小さい場合は、キュー登録部３１２はジョブ情報を廃棄せず必ずキューに登録する。キュー長が最小キュー長以上かつ最大キュー長よりも小さい場合は、キュー登録部３１２は廃棄確率レジスタが示す廃棄確率に従って、ジョブ情報を廃棄するか否かを決定する。廃棄する場合はジョブ情報をキューには登録せず、廃棄しない場合はジョブ情報をキューに登録する。キュー長が最大キュー長以上の場合は、キュー登録部３１２はジョブ情報をキューには登録せずに廃棄する。
【００２８】
最小キュー長が０に設定されると、ＱｏＳ制御部３１は、キューバッファ３２１の全容量を共有キューバッファ領域の容量として用いる。この場合は、ＱｏＳ制御部３１はどのキューに対しても、ジョブ情報が入力された順でキューバッファ３２１の記憶領域を割り当てる。一方、いくつかのキューに１以上の最小キュー長が設定された場合、ＱｏＳ制御部３１は最小キュー長の合計分を全キューバッファから減じた分のキューバッファ容量を共有キューバッファとして使用する。この場合は、ＱｏＳ制御部３１は最小キュー長を超えてキューイングする場合に、ジョブ情報が入力された順でキューバッファ３２１の記憶領域を割り当てる。１以上の最小キュー長を設定したキューは、その最小キュー長分のキューバッファが確保されているので、確実にその最小キュー長分はキューイングすることが可能である。
また、各キューにさらに最大キュー長を予め設定してもよい。前述したように、最大キュー長とはキューが保持できる要素数の最大値をいう。キューバッファ３２１へのジョブ情報の書き込みは対象となるキューのキュー長に応じて制御される。キュー長が最小キュー長より小さい場合は、ジョブ情報を入力されたＱｏＳ制御部３１は必ずキューバッファ３２１にこのジョブ情報を書き込む。キュー長が最小キュー長以上かつ最大キュー長より小さい場合は、ＱｏＳ制御部３１は予め設定された廃棄確率を用いて廃棄判定を行い、廃棄されないと判定した場合のみジョブ情報をキューバッファ３２１に書き込む。最大キュー長を超える場合は、ＱｏＳ制御部３１はジョブ情報をキューバッファ３２１に書き込まずに廃棄する。廃棄判定は、例えば、廃棄確率レジスタに０〜３１の範囲の数値を設定して行う。キュー長が最小キュー長以上かつ最大キュー長より小さい場合、ジョブ情報のキューバッファ３２１への書き込みに際してＱｏＳ制御部３１が０〜３１の乱数を生成する。ＱｏＳ制御部３１は、生成した乱数が廃棄確率レジスタの値よりも大きい場合はジョブ情報を廃棄する。生成した乱数が廃棄確率レジスタの値以下の場合はジョブ情報をキューバッファ３２１に書き込む。
【００２９】
図３は、ＱｏＳ制御部３１の概略構成を示す構成図である。同図において、ＱｏＳ制御部３１は、廃棄判定部３１１とキュー登録部３１２とキュー情報管理部３１３−１〜Ｎとキューコントローラ３１４−１〜Ｎと共通レジスタ群３１５とパケットスケジューラ３３とを含んで構成される。共通レジスタ群３１５は、キューバッファ３２１と最大共有キューバッファ量レジスタ３２２と共有キューバッファ量レジスタ３２３と空きキューバッファ番号ＦＩＦＯ・３２４とを含んで構成される。
廃棄判定部３１１は、内部バッファ書き込み部４９または外部バッファ書き込み部１９からジョブ情報が入力されると、そのジョブ情報の廃棄判定を行う。廃棄判定部３１１は、廃棄判定において廃棄が必要と判定した場合は、ジョブ情報を入力した内部バッファ書き込み部４９または外部バッファ書き込み部１９に対して廃棄要求を入力する。廃棄判定部３１１は、廃棄判定において廃棄が不要と判定した場合は、入力されたジョブ情報をキュー登録部３１２を介してキューバッファ３２１に書き込む。
キュー登録部３１２は、共通レジスタ群３１５の情報及びキュー情報管理部３１３−１〜Ｎの情報を更新する。また、キュー登録部３１２は、共通レジスタ群３１５及びキュー情報管理部３１３−１〜Ｎから情報を読み出す。
キューコントローラ３１４−１〜Ｎは、対応するキュー情報管理部３１３−１〜Ｎのキュー長が１以上の場合に、対応するキュー情報管理部３１３−１〜Ｎからフレーム長と管理番号とを読み出してジョブ情報を生成する。キューコントローラ３１４−１〜Ｎは、生成したジョブ情報をパケットスケジューラ３３に入力する。このジョブ情報はパケットスケジューラ３３に対する送信要求信号（リクエスト信号ともいう）である。
【００３０】
図４は、共有レジスタ群３１５の概略構成を示す構成図である。同図において、共通レジスタ群３１５は、キューバッファ３２１と最大共有キューバッファ量レジスタ３２２と共有キューバッファ量レジスタ３２３と空きキューバッファ番号ＦＩＦＯ・３２４と空きパケット管理番号ＦＩＦＯ・３３０と、パケット管理テーブル３２５とを含んで構成される。
キューバッファ３２１は、複数のキューに記憶されるジョブ情報を表形式のデータとして記憶する。キューバッファ３２１の各行のデータが１個のジョブ情報に対応し、各行はキューバッファ番号にて識別される。キューバッファ３２１が記憶するデータは、管理番号とフレーム長と次キューバッファ番号とを含んで構成される。
管理番号は、ハンドル番号を記憶するパケット管理テーブルの各行に対応する。パケット管理テーブルは、パケットが内部バッファ記憶部５０上に記憶される記憶位置情報またはパケットが外部バッファ記憶部６１上に記憶される記憶位置情報を示すハンドル番号を記憶する。
フレーム長は、管理番号によって特定されるパケットのフレーム長を示す。１行分の管理番号とフレーム長とが１個のジョブ情報に相当する。
次キューバッファ番号は、キュー上の次のデータへのリンクを示す。具体的には、キュー上の次のデータであるジョブ情報が記憶されている行のキューバッファ番号が記憶されている。
キューバッファ３２１はジョブ情報をキュー構造にて記憶する記憶部であり、キュー構造は、次キューバッファ番号によって示される。キュー登録部３１２がジョブ情報を登録するキューは、全てキューバッファ３２１の記憶領域上に構成されている。
最大共有キューバッファ量レジスタ３２２は、キューバッファ３２１のバッファ量のうち、共有キューバッファに割り当てられているバッファ量を示す。共有キューバッファ量レジスタ３２３は、キューバッファ３２１のバッファ量のうち、共有キューバッファとして用いられているバッファ量を示す。空きキューバッファ番号ＦＩＦＯ・３２４は、キューバッファ３２１中の空き領域の位置をキューバッファ番号にて記憶する。
【００３１】
図３に戻って、キュー情報管理部３１３−１〜Ｎは、それぞれ先頭キューバッファ番号レジスタと最終キューバッファ番号レジスタとフレーム長レジスタと管理番号レジスタと最小キュー長レジスタと最大キュー長レジスタと廃棄確率レジスタとキュー長レジスタとを含んで構成される。１個のキュー情報管理部３１３−ｉ（１≦ｉ≦Ｎ）が１個のキューに対応する。
先頭キューバッファ番号レジスタは、キューバッファ３２１上におけるキューの先頭の位置をキューバッファ番号で示す。最終キューバッファ番号レジスタは、キューバッファ３２１上におけるキューの末尾の位置をキューバッファ番号で示す。フレーム長レジスタは、キューの先頭に記憶されるジョブ情報のうち、フレーム長を示す。管理番号レジスタは、キューの先頭に記憶されるジョブ情報のうち、管理番号を示す。フレーム長レジスタと管理番号レジスタによって、キューの先頭に記憶されるジョブ情報が示される。
【００３２】
最小キュー長レジスタは、キューに設定された最小キュー長を示す。キュー長が最小キュー長以上となっている場合は、新たに記憶されるジョブ情報は、共有キューバッファに記憶されるものとして扱われる。この場合、予め定められた廃棄確率に従ってジョブ情報が廃棄され、廃棄されない場合のみキューバッファ３２１に書き込まれる。
最大キュー長レジスタは、キューに設定された最大キュー長を示す。キュー長が最大キュー長に達しているときは、このキューにジョブ情報を書き込むことはできない。この場合、入力されたジョブ情報は廃棄される。
廃棄確率レジスタは、上述の廃棄確率を示す。キュー長レジスタは、そのキューのキュー長を示す。
キュー情報管理部３１３−１〜Ｎは共通レジスタ群３１５と共にキューを構成する。まず、先頭キューバッファ番号レジスタがキューバッファ３２１上でキューの先頭ジョブ情報が記憶されている行を示す。また、この行の次キューバッファ番号が次のジョブ情報が記憶されている行を示す。以下同様に、次キューバッファに従ってキューを辿ることができる。
【００３３】
図５は共通レジスタ群３１５が記憶するパケット管理テーブル３２５のデータ構成を示すデータ構成図である。パケット管理テーブル３２５は、管理番号から内部バッファ記憶部５０上のアドレスまたは外部バッファ記憶部６１上のアドレスを生成するためのハンドル番号を記憶しておくテーブルである。共通レジスタ群３１５はパケット管理テーブル３２５を表形式のデータとして記憶する。パケット管理テーブルの各行は管理番号に対応付けられている。パケット管理テーブルの各行がそれぞれの管理番号と内部バッファ記憶部５０上のアドレスまたは外部バッファ記憶部６１上のアドレスとの関係を示す。パケット管理テーブル３２５は外部／内部識別符号とハンドル番号とを含んで構成される。使用する管理番号は、空きパケット管理番号ＦＩＦＯ・３３０を用いて取得する。
【００３４】
外部／内部識別符号は、ハンドル番号から得られるアドレスが内部バッファ記憶部５０上のアドレスか外部バッファ記憶部６１上のアドレスかの区別を示す。外部／内部識別符号が０の場合は、ハンドル番号から得られるアドレスが内部バッファ記憶部５０上のアドレスであることを示し、外部／内部識別符号が１の場合は、ハンドル番号から得られるアドレスが外部バッファ記憶部６１上のアドレスであることを示す。
ハンドル番号は、パケットが記憶された記憶位置を示すインデックスである。予め定められたベースアドレスとメモリブロックサイズとを用いて、アドレス＝ベースアドレス＋メモリブロックサイズ×ハンドル番号によりアドレスが算出される。内部バッファ管理部５１は、内部バッファ記憶部ベースアドレスレジスタ（不図示）に内部バッファ記憶部５０のベースアドレスを記憶し、内部バッファ記憶部メモリブロックサイズレジスタ（不図示）に内部バッファ記憶部５０のメモリブロックサイズを記憶する。また、外部バッファ管理部２１は外部バッファ記憶部ベースアドレスレジスタ（不図示）に外部バッファ記憶部６１のベースアドレスを記憶し、外部バッファ記憶部メモリブロックサイズレジスタ（不図示）に外部バッファ記憶部６１のメモリブロックサイズを記憶する。
【００３５】
なお、パケット管理テーブルの構成は図５のものに限らない。
図６は、共通レジスタ群３１５が記憶するパケット管理テーブル３２５ｂのもう１つのデータ構成例を示すデータ構成図である。
共通レジスタ群３１５はパケット管理テーブル３２５ｂを表形式のデータとして記憶する。パケット管理テーブルの各行は管理番号に対応付けられている。パケット管理テーブルの各行がそれぞれの管理番号と内部バッファ記憶部５０上のアドレスまたは外部バッファ記憶部６１上のアドレスとの関係を示し、ハンドル番号を含んで構成される。
パケット管理テーブル３２５ｂにおいては、ハンドル番号の全ビットを１とすることにより外部バッファ記憶部６１上のアドレスであることを示す。同図において、ハンドル番号は１６ビットで構成され、全ビットが１のハンドル番号は１６進数表記で０ｘＦＦＦＦと示されている。外部バッファ記憶部６１上のアドレスは管理番号を用いて、アドレス＝外部バッファ記憶部のベースアドレス＋外部バッファ記憶部のメモリブロックサイズ×管理番号により算出される。一方内部バッファ記憶部５０上のアドレスは、ハンドル番号を用いて、アドレス＝内部バッファ記憶部のベースアドレス＋内部バッファ記憶部のメモリブロックサイズ×ハンドル番号により算出される。
ここで、外部バッファ記憶部６１のアドレスを記憶するためにハンドル番号をパケット管理テーブル３２５ｂに書き込む場合、特定の管理番号に対応付けられた特定の行に書き込む必要があり、その行が空いている必要がある。そこで、例えば、この使い方をする場合、先の説明とは異なり、外部バッファ記憶部５０に書き込むアドレスをＱｏＳ制御部３１で生成してそこに書き込むように外部バッファ書き込み部１９に通知する。内部バッファに関しては、先の説明と違いはない。具体的には、空きパケット管理番号ＦＩＦＯ・３３０から得られた値を外部バッファ記憶部５０のハンドル番号として通知する。そして、当該管理番号のハンドル番号には、１６進数表記で０ｘＦＦＦＦを書き込む。空きパケット管理テーブルに蓄積されている管理番号はユニークであるので書き込む行が空いていることが保証される。
【００３６】
図７は、廃棄判定部３１１がジョブ情報の登録または廃棄要求を行う処理手順を示すフローチャートである。廃棄判定部３１１はキューバッファの空きの有無及び廃棄確率を用いてジョブ情報の登録または廃棄を行うことにより、輻輳制御を行う。
廃棄判定部３１１は、内部バッファ書き込み部４９または外部バッファ書き込み部１９からジョブ情報が入力されると、ジョブ情報の登録または廃棄要求を行う処理を開始する。
ステップＳ１において、廃棄判定部３１１は、入力されたジョブ情報に対応するパケットを送信する送信部と品質クラスとを、入力されたジョブ情報から読み出す。ステップＳ２において、廃棄判定部３１１は、読み出した送信部と品質クラスとに対応するキューのキュー長と最小キュー長と最大キュー長と廃棄確率とを、キュー情報管理部３１３−１〜Ｎから読み出す。ステップＳ３において、廃棄判定部３１１は、読み出した最小キュー長がキュー長よりも大きいか否かを判断する。大きい場合（ステップＳ３：Ｙｅｓ）はステップＳ１０へ移り、大きくない場合（ステップＳ３：Ｎｏ）はステップＳ４へ移る。
ステップＳ４において、廃棄判定部３１１は、読み出した最大キュー長が現在のキュー長以下であるか否かを判断する。現在のキュー長以下である場合（ステップＳ４：Ｙｅｓ）はステップＳ９へ移り、そうでない場合（ステップＳ４：Ｎｏ）はステップＳ５へ移る。
ステップＳ５において、廃棄判定部３１１は、確率的廃棄に用いるための乱数を生成する。
【００３７】
ステップＳ６において、廃棄判定部３１１は、生成した乱数が読み出した廃棄確率よりも大きいか否かを判断する。大きい場合（ステップＳ６：Ｙｅｓ）はステップＳ９へ移り、大きくない場合（ステップＳ６：Ｎｏ）はステップＳ７へ移る。
ステップＳ７において、廃棄判定部３１１は、最大共有キューバッファ量レジスタ３２２から最大共有キューバッファ量を読み出し、共有キューバッファ量レジスタ３２３から共有キューバッファ量を読み出す。
ステップＳ８において、廃棄判定部３１１は、最大共有キューバッファ量が共有キューバッファ量より大きいか否かを判断する。大きい場合（ステップＳ８：Ｙｅｓ）はステップＳ１１へ移り、大きくない場合（ステップＳ８：Ｎｏ）はステップＳ９へ移る。
ステップＳ９において、廃棄判定部３１１は、ジョブ情報を入力した外部バッファ書き込み部１９または内部バッファ書き込み部４９に廃棄要求を入力する。その後、廃棄判定部３１１はジョブ情報の登録または廃棄要求を行う処理を終了する。
ステップＳ１０において、廃棄判定部３１１は、キュー長レジスタが記憶するキュー長を１増加させる。
ステップＳ１１において、廃棄判定部３１１は、共有キューバッファ量レジスタ３２３が記憶する共有キューバッファ量とキュー長レジスタが記憶するキュー長とをそれぞれ１増加させる。
ステップＳ１２において、廃棄判定部３１１は、入力されたジョブ情報をキュー登録部３１２に入力する。その後、廃棄判定部３１１はジョブ情報の登録または廃棄要求を行う処理を終了する。
【００３８】
図８は、キュー登録部３１２がキューにジョブ情報を登録する処理を行う手順を示すフローチャートである。キュー登録部３１２は、廃棄判定部３１１からジョブ情報が入力されると登録処理を開始する。
ステップＳ２１において、キュー登録部３１２は、空きキューバッファ番号ＦＩＦＯ・３２４から空きキューバッファ番号を読み出し、空きパケット管理番号ＦＩＦＯ・３３０から管理番号を読み出す。そしてその管理番号の行にジョブ情報から取得されるハンドル番号を書き込む。
ステップＳ２２において、キュー登録部３１２は、入力されたジョブ情報に対応するパケットを送信する送信部と品質クラスとを、入力されたジョブ情報から読み出す。そして、キュー登録部３１２は、読み出した送信部と品質クラスとに対応するキューのキュー長が０か否かを判断する。キュー長が０の場合（ステップＳ２２：Ｙｅｓ）は、ステップＳ２３に移る。キュー長が０で無い場合（ステップＳ２２：Ｎｏ）は、ステップＳ２８に移る。
ステップＳ２３からステップＳ２５において、キュー登録部３１２はキュー情報管理部３１３−１〜Ｎの情報を更新する。ステップＳ２３において、キュー登録部３１２は、登録対象のキューに対応するキュー情報管理部３１３−１〜Ｎ（以下、対応するキュー情報管理部ともいう）の先頭キューバッファ番号レジスタと最終キューバッファ番号レジスタとに、読み出した空きキューバッファ番号を書き込む。ステップＳ２４において、キュー登録部３１２は、ジョブ情報からフレーム長を読み出す。そして、キュー登録部３１２は、対応するキュー情報管理部３１３−１〜Ｎのフレーム長レジスタに読み出したフレーム長を書き込む。ステップＳ２５において、キュー登録部３１２は、先に取得した管理番号を、対応するキュー情報管理部３１３−１〜Ｎの管理番号レジスタに書き込む。
【００３９】
ステップＳ２６及びステップＳ２７において、キュー登録部３１２はキューバッファ３１２の情報を更新する。ステップＳ２６において、キュー登録部３１２は、空きキューバッファ番号ＦＩＦＯ・３２４から読み出した空きキューバッファ番号が示すキューバッファ３２１の行(以下、登録対象の行ともいう)の、フレーム長の欄にジョブ情報から読み出したフレーム長を書き込み、管理番号の欄に先に取得した管理番号を書き込む。ステップＳ２７において、キュー登録部３１２は、キューバッファ３２１の次キューバッファ番号の欄に、キューバッファ番号として使われない値を書き込む。その後、キュー登録部３１２は登録処理を終了する。
ステップＳ２８からステップＳ３０において、キュー登録部３１２はキューバッファ３２１の情報を更新する。
ステップＳ２８において、キュー登録部３１２は、対応するキュー情報管理部３１３−１〜Ｎから最終キューバッファ番号を読み出す。キュー登録部３１２は、読み出した最終キューバッファ番号が示すキューバッファ３２１の行の次キューバッファ番号の欄に空きキューバッファ番号ＦＩＦＯ・３２４から読み出した空きキューバッファ番号を書き込む。
ステップＳ２９において、キュー登録部３１２は、ジョブ情報から管理番号を読み出す。そして、キュー登録部３１２は、登録対象の行の管理番号の欄にジョブ情報から読み出した管理番号を書き込む。
ステップＳ３０において、キュー登録部３１２は、ジョブ情報からフレーム長を読み出す。そして、キュー登録部３１２は、登録対象の行のフレーム長の欄にジョブ情報から読み出したフレーム長を書き込む。
ステップＳ３１において、キュー登録部３１２は、キュー情報管理部３１３−１〜Ｎの情報を更新する。同ステップにおいて、キュー登録部３１２は、対応するキュー情報管理部３１３−１〜Ｎの最終キューバッファ番号レジスタに空きキューバッファ番号ＦＩＦＯ３２４から読み出した空きキューバッファ番号を書き込む。その後、キュー登録部３１２は登録処理を終了する。
【００４０】
なお、キュー登録部３１２が登録を行う処理手順は図８で示したものに限らない。
図９は、キュー登録部３１２が登録を行うもう１つの処理手順の例を示すフローチャートである。
ステップＳ４１において、キュー登録部３１２は、空きキューバッファ番号ＦＩＦＯ・３２４から空きキューバッファ番号を読み出し、空きパケット管理番号ＦＩＦＯから管理番号を読み出す。そしてその管理番号の行にジョブ情報から取得されるハンドル番号を書き込む。
ステップＳ４２において、キュー登録部３１２は、入力されたジョブ情報に対応するパケットを送信する送信部と品質クラスとを、入力されたジョブ情報から読み出す。そして、キュー登録部３１２は、読み出した送信部と品質クラスとに対応するキューのキュー長が０か否かを判断する。キュー長が０の場合（ステップＳ４２：Ｙｅｓ）は、ステップＳ４３に移る。キュー長が０で無い場合（ステップＳ４２：Ｎｏ）は、ステップＳ４７に移る。
ステップＳ４３において、キュー登録部３１２は、キューバッファ３２１の情報を更新する。キュー登録部３１２は、登録対象の行の次キューバッファ番号の欄にキューバッファ番号として使われない値を書き込む。
ステップＳ４４からステップＳ４６において、キュー登録部３１２はキュー情報管理部３１３−１〜Ｎの情報を更新する。ステップＳ４４において、キュー登録部３１２は、対応するキュー情報管理部３１３−１〜Ｎの先頭キューバッファ番号レジスタと最終キューバッファ番号レジスタとに空きキューバッファ番号ＦＩＦＯ・３２４から読み出したキューバッファ番号を書き込む。ステップＳ４５において、キュー登録部３１２は、ジョブ情報からフレーム長を読み出す。そして、キュー登録部３１２は、対応するキュー情報管理部３１３−１〜Ｎのフレーム長レジスタに読み出したフレーム長を書き込む。ステップＳ４６において、キュー登録部３１２は、先に取得した管理番号を、対応するキュー情報管理部３１３−１〜Ｎの管理番号レジスタに書き込む。
【００４１】
ステップＳ４７において、キュー登録部３１２は、キューバッファ３２１の情報を更新する。キュー登録部３１２は、対応するキュー情報管理部３１３−１〜Ｎの最終キューバッファ番号レジスタから最終キューバッファ番号を読み出す。また、キュー登録部３１２は、入力されたジョブ情報からフレーム長を読み出す。そして、キュー登録部３１２は、登録対象の行の管理番号の欄に先に取得した管理番号を書き込み、フレーム長の欄に読み出したフレーム長を書き込み、次キューバッファ番号の欄に空きキューバッファ番号ＦＩＦＯ・３２４から読み出したキューバッファ番号を書き込む。
ステップＳ４８において、キュー登録部３１２は、キュー情報管理部３１３−１〜Ｎの情報を更新する。キュー登録部３１２は、対応するキュー情報管理部３１３−１〜Ｎの最終キューバッファ番号レジスタに空きキューバッファ番号ＦＩＦＯ・３２４から読み出したキューバッファ番号を書き込む。その後、キュー登録部３１２は登録処理を終了する。
図８に示す処理手順では、キュー情報管理部３１３−１〜Ｎが記憶するジョブ情報が、キューバッファにも記憶されている。一方、図９に示す処理手順では、キュー情報管理部３１３−１〜Ｎが記憶するジョブ情報は、キューバッファには記憶されていない。図９に示す手順のほうが、処理手順が少なくて済む。
【００４２】
図１０は、キュー登録部３１２が行う、パケット送出後処理の手順を示すフローチャートである。同図の処理は、図８の登録処理に対応する。
キュー登録部３１２は、キューコントローラ３１４−１〜Ｎから送信を承認されたパケットのジョブ情報の入力を受けてパケット送出後処理を開始する。
ステップＳ６１において、キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎから、先頭キューバッファ番号を読み出す。キュー登録部３１２は、読み出した先頭キューバッファ番号を空きキューバッファＦＩＦＯ・３２４に入力（返却）する。また当該キュー番号に関連する管理番号を空きパケット管理番号ＦＩＦＯ・３３０に入力（返却）する。
ステップＳ６２において、キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎから、キュー長を読み出す。キュー登録部３１２は、読み出したキュー長が１より大きいか否かを判断する。１より大きい場合（ステップＳ６２：Ｙｅｓ）は、キュー登録部３１２は、ステップＳ６３に移る。１より大きくない場合（ステップＳ６２：Ｎｏ）は、ステップＳ６５に移る。
【００４３】
ステップＳ６３からステップＳ６４において、キュー登録部３１２は、キュー情報管理部３１３−１〜Ｎの情報を更新する。ステップＳ６３において、キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎから、先頭キューバッファ番号を読み出す。キュー登録部３１２は、読み出した先頭キューバッファ番号が示すキューバッファ３２１の行の、次キューバッファ番号の欄からキューバッファ番号を読み出す。キュー登録部３１２は、読み出したキューバッファ番号を、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎの、先頭キューバッファ番号レジスタに書き込む。ステップＳ６４において、キュー登録部３１２は、先頭キューバッファ番号レジスタに書き込んだキューバッファ番号が示すキューバッファ３２１の行から管理番号とフレーム長とを読み出す。この行は、新たにキューの先頭となった行である。キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎの管理番号レジスタに読み出した管理番号を書き込み、フレーム長レジスタに読み出したフレーム長を書き込む。
ステップＳ６５において、キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎから、キュー長と最小キュー長とを読み出す。キュー登録部３１２は、読み出したキュー長が読み出した最小キュー長よりも大きいか否かを判断する。大きい場合（ステップＳ６５：Ｙｅｓ）は、ステップＳ６６に移る。大きくない場合（ステップＳ６５：Ｎｏ）は、ステップＳ６７に移る。
ステップＳ６６において、キュー登録部３１２は、共有バッファ量レジスタ３２３の共有バッファ量を１減少させる。
ステップＳ６７において、キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎのキュー長レジスタが記憶するキュー長を１減少させる。その後、キュー登録部３１２は、パケット送出後処理を終了する。
以上のように、パケット送出後処理においてキュー登録部３１２はキューの先頭のバッファ番号を空きキューバッファ番号ＦＩＦＯに戻す。また、バッファ番号の返却によってキューが空になる場合は、キュー長レジスタのキュー長を０にする。バッファ番号の返却によりキューが空にならない場合は、次キューバッファ番号をキューバッファ３２１から取得し先頭キューバッファ番号レジスタを更新する。
【００４４】
なお、キュー登録部３１２がパケット送出後処理を行う処理手順は図１０で示したものに限らない。
図１１は、キュー登録部３１２がパケット送出後処理を行うもう１つの処理手順を示すフローチャートである。同図の処理は、図９の登録処理に対応する。
ステップＳ８１において、キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎから、先頭キューバッファ番号を読み出す。キュー登録部３１２は、読み出した先頭キューバッファ番号を空きキューバッファＦＩＦＯ・３２４に入力（返却）する。そして、当該キューバッファ番号に対応する管理番号を空きパケット管理番号ＦＩＦＯに入力（返却）する。
ステップＳ８２において、キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎから、キュー長を読み出す。キュー登録部３１２は、読み出したキュー長が１より大きいか否かを判断する。１より大きい場合（ステップＳ８２：Ｙｅｓ）は、キュー登録部３１２は、ステップＳ８３に移る。１より大きくない場合（ステップＳ８２：Ｎｏ）は、ステップＳ８４に移る。
【００４５】
ステップＳ８３において、キュー登録部３１２は、キュー情報管理部３１３−１〜Ｎの情報を更新する。キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎから、先頭キューバッファ番号を読み出す。キュー登録部３１２は、読み出した先頭キューバッファ番号に対応するキューバッファ３２１の行から次キューバッファ番号と管理番号とフレーム長とを読み出す。キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎの先頭キューバッファレジスタに読み出した次キューバッファ番号を書き込み、管理番号レジスタに読み出した管理番号を書き込み、フレーム長レジスタに読み出したフレーム長を書き込む。
ステップＳ８４において、キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎから、キュー長と最小キュー長とを読み出す。キュー登録部３１２は、読み出したキュー長が読み出した最小キュー長よりも大きいか否かを判断する。大きい場合（ステップＳ８４：Ｙｅｓ）は、ステップＳ８５に移る。大きくない場合（ステップＳ８４：Ｎｏ）は、ステップＳ８６に移る。
ステップＳ８５において、キュー登録部３１２は、共有バッファ量レジスタ３２３の共有バッファ量を１減少させる。
ステップＳ８６において、キュー登録部３１２は、送出したパケットに対応するキュー情報管理部３１３−１〜Ｎのキュー長レジスタが記憶するキュー長を１減少させる。その後、キュー登録部３１２は、パケット送出後処理を終了する。
【００４６】
以上のように、ネットワーク（トラヒック）の特性とバッファに用いるメモリの帯域及び容量の特性とが一致するように内部バッファと外部バッファとを別々に備えることでバッファ容量の増加と処理速度の向上を行うと共に、両バッファに共通のキューを用いて制御することで、ＷＡＮからＬＡＮに転送されるバーストパケットのＬＡＮ内でのバッファあふれによる廃棄を防ぐことができる。
【００４７】
なお、オンデマンドで品質保証制御を行うネットワーク（オンデマンド品質制御ネットワーク）では、パケット転送装置を動作させた状態でキュー長を変更する必要がある。しかし、個別キューと共有キューを使用するパケット転送装置において、あるキューの最小キュー長を変更した場合に、共有キューバッファに記憶されるデータ数が変化して正常に動作しなくなるおそれがある。たとえば、最小キュー長が１０で、現在のキュー長が１２である場合、２キュー長分のジョブ情報は共有キューバッファ容量に割り当てられて記憶されている。この最小キュー長を１５に増加させると、現在のキュー長が１５より小さくなるので、上述の２キュー長分のジョブ情報は、このキューの最小キュー長分のキューバッファ容量に割り当てられることになる。２キュー分の共有バッファ量のデクリメント処理が行われなくなり、実際には共有バッファ領域を使っていなくても２キュー分の共有バッファが使用しているように見える。その結果、共有キューバッファ容量に割り当てられたジョブ情報数が２減少する。この際に、共有キューバッファ容量に割り当てられたジョブ情報数を記憶するレジスタ（共有キューバッファ量レジスタ３２３）から２を減算する処理を行わないと、実際に記憶するジョブ情報数よりも２少ない状態で共有キューバッファ量レジスタの値が最大容量を示す。すると、実際にはまだジョブ情報を記憶できるにもかかわらず、キュー登録部３１２はジョブ情報を廃棄することになる。
そこで、キュー登録部３１２が共有バッファ補正量設定機能と、キュー長バックアップ表示機能を追加する。共有バッファ補正量設定機能は、動作中の共有キューバッファ量に対して指定された値を加減算するための機能である。具体的には、キュー登録部３１２が共有キューバッファ量レジスタ３２３からキューバッファ量を読み出し、指定された加減算を行ったキューバッファ量を共有キューバッファ量レジスタ３２３に書き込む。共有キューバッファ量の変更は必ずキュー登録部３１２が行うので、この読出しから書き込みまでの間、共有キューバッファ量レジスタ３２３の値は一定に保たれている。
これによりたとえば、パケットキューイング装置１を制御するＣＰＵが共有キューバッファ量を変更する際に、現在のキューバッファ量をパケットキューイング装置１からＣＰＵに入力し、ＣＰＵが加減算を行ってパケットキューイング装置１に入力し戻す必要がない。また、加減算中のキューバッファ量の変化を止める必要もなくなり動的な設定が可能となる。また、キュー長バックアップ表示機能は、各キューの設定値（最小キュー長など）を変更したときのキュー長を記憶しておく機能およびレジスタである。具体的には、キュー登録部は変更を行う際にキュー長レジスタからキュー長を読み出し、内部の変更時キュー長レジスタ（不図示）に記憶する。この場合も、キュー長レジスタの値は必ずキュー登録部３１２が変更するので、変更から読み出しまでの間、キュー長レジスタの値は一定に保たれている。これにより、先の共有キューバッファの説明と同様にシステムを停止させることなく、値を設定したときのキュー長を知ることが出来る。
【００４８】
図１２は、キュー登録部３１２が、あるキューの最小キュー長を減少させる処理手順を示すフローチャートである。
キュー登録部３１２は、例えば外部のＣＰＵからの指示に従って処理を開始する。
ステップＳ１０１において、キュー登録部３１２は、変更対象のキューのキュー情報管理部３１３−１〜Ｎから、最小キュー長を読み出す。以下、読み出した最小キュー長をｏｌｄ＿ｓｉｚｅで示す。また、キュー登録部３１２は、変更対象のキューの最小キュー長レジスタに、変更後の最小キュー長ｎｅｗ＿ｓｉｚｅを書き込む。
ステップＳ１０２において、キュー登録部３１２は、変更対象のキューのキュー情報管理部３１３−１〜Ｎから、キュー長変更処理時点におけるキュー長を読み出す。以下、読み出したキュー長をＬで示す。
ステップＳ１０３において、キュー登録部３１２は、Ｌがｎｅｗ＿ｓｉｚｅ以下か否かを判断する。Ｌがｎｅｗ＿ｓｉｚｅ以下の場合（ステップＳ１０３：Ｙｅｓ）は、ステップＳ１０７に移る。そうでない場合（ステップＳ１０３：Ｎｏ）は、ステップＳ１０４に移る。
ステップＳ１０４において、キュー登録部３１２は、ｎｅｗ＿ｓｉｚｅがＬ未満かつＬがｏｌｄ＿ｓｉｚｅ以下か否かを判断する。ｎｅｗ＿ｓｉｚｅがＬ未満かつＬがｏｌｄ＿ｓｉｚｅ以下の場合（ステップＳ１０４：Ｙｅｓ）は、ステップＳ１０６に移る。そうでない場合（ステップＳ１０４：Ｎｏ）は、ステップＳ１０５に移る。
ステップＳ１０５において、キュー登録部３１２は、最小キュー長の減少分（ｏｌｄ＿ｓｉｚｅ−ｎｅｗ＿ｓｉｚｅ）を共有バッファ量レジスタ３２３の共有バッファ量から減算する。
ステップＳ１０６において、キュー登録部３１２は、Ｌ−ｎｅｗ＿ｓｉｚｅを共有バッファ量レジスタ３２３の共有バッファ量から減算する。
ステップＳ１０７において、キュー登録部３１２は、最小キュー長の減少分（ｏｌｄ＿ｓｉｚｅ−ｎｅｗ＿ｓｉｚｅ）を最大共有バッファ量レジスタ３２２の最大共有バッファ量に加算する。その後キュー登録部３１２は最小キュー長を減少させる処理を終了する。
【００４９】
図１３は、キュー登録部３１２が、あるキューの最小キュー長を増加させる処理手順を示すフローチャートである。
キュー登録部３１２は、例えば外部のＣＰＵからの指示に従って処理を開始する。
ステップＳ１２１において、キュー登録部３１２は、変更対象のキューのキュー情報管理部３１３−１〜Ｎから、最小キュー長ｏｌｄ＿ｓｉｚｅを読み出す。また、キュー登録部３１２は、最大共有バッファ量レジスタ３２２の最大共有バッファ量から最小キュー長の増加分（ｎｅｗ＿ｓｉｚｅ−ｏｌｄ＿ｓｉｚｅ）を減算する。ここで、ｎｅｗ＿ｓｉｚｅは変更後の最小キュー長である。
ステップ１２２において、キュー登録部３１２は、変更対象のキューの最小キュー長レジスタに、変更後の最小キュー長ｎｅｗ＿ｓｉｚｅを書き込む。
ステップＳ１２３において、キュー登録部３１２は、キュー情報管理部３１３−１〜Ｎから、キュー長変更処理時点におけるキュー長を読み出す。以下、読み出したキュー長をＬで示す。
ステップＳ１２４において、キュー登録部３１２は、Ｌがｏｌｄ＿ｓｉｚｅ以下か否かを判断する。Ｌがｏｌｄ＿ｓｉｚｅ以下の場合（ステップＳ１２４：Ｙｅｓ）は、最小キュー長を増加させる処理を終了する。そうでない場合（ステップＳ１２４：Ｎｏ）は、ステップＳ１２５に移る。
ステップＳ１２５において、キュー登録部３１２は、ｏｌｄ＿ｓｉｚｅがＬ未満かつＬがｎｅｗ＿ｓｉｚｅ以下か否かを判断する。ｏｌｄ＿ｓｉｚｅがＬ未満かつＬがｎｅｗ＿ｓｉｚｅ以下の場合（ステップＳ１２５：Ｙｅｓ）は、ステップＳ１２７に移る。そうでない場合（ステップＳ１２５：Ｎｏ）は、ステップＳ１２６に移る。
ステップＳ１２６において、キュー登録部３１２は、最小キュー長の増加分（ｎｅｗ＿ｓｉｚｅ−ｏｌｄ＿ｓｉｚｅ）を共有バッファ量レジスタ３２３の共有バッファ量に加算する。その後、キュー登録部３１２は、最小キュー長を増加させる処理を終了する。
ステップＳ１２７において、キュー登録部３１２は、Ｌ−ｏｌｄ＿ｓｉｚｅを共有バッファ量レジスタ３２３の共有バッファ量に加算する。その後、キュー登録部３１２は、最小キュー長を増加させる処理を終了する。
以上のように、変更前の最小キュー長よりもキュー長が短くかつ変更後の最小キュー長よりもキュー長が短い場合は、共有キューバッファ量の更新不要である。最小キュー長を増加させる場合は、空き共有キューバッファ量が減少する場合があるので、その減少分を共有キューバッファ量レジスタ３２３が記憶する共有キューバッファ量から減算することで空き共有キューバッファ量を増加させる。一方、最小キュー長を減少させる場合は、空き共有キューバッファ量が増加する場合があるので、その増加分を共有キューバッファ量レジスタ３２３が記憶する共有キューバッファ量に加算することで空き共有バッファ量を減少させる。
【００５０】
このように、個別キューバッファと共有キューバッファを用いたキューイングシステムにおいて運用中の動的なキュー長設定を行うことができる。
【００５１】
なお、パケットキューイング装置１の各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００５２】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【産業上の利用可能性】
【００５３】
本発明は、データ通信に用いて好適である。
【符号の説明】
【００５４】
１  パケットキューイング装置
１１  ＷＡＮ側受信部
１９  外部バッファ書き込み部
６１  外部バッファ記憶部
２２  外部バッファ読み出し部
２６  ＷＡＮ側送信部
４１−１〜４  ＬＡＮ側受信部
４９  内部バッファ書き込み部
５０  内部バッファ記憶部
５２  内部バッファ読み出し部
５５  ＬＡＮ−ＷＡＮ間ＦＩＦＯ部
５６−１〜４  ＬＡＮ側送信部
３１  ＱｏＳ制御部
３１１廃棄判定部
３１２キュー登録部
３１３−１〜Ｎ  キュー情報管理部
３１４−１〜Ｎ  キューコントローラ
３１５−１〜Ｎ  共通レジスタ群
３３  パケットスケジューラ
【図１】
2011029904.tif 000003
【図２】
2011029904.tif 000004
【図３】
2011029904.tif 000005
【図４】
2011029904.tif 000006
【図５】
2011029904.tif 000007
【図６】
2011029904.tif 000008
【図７】
2011029904.tif 000009
【図８】
2011029904.tif 000010
【図９】
2011029904.tif 000011
【図１０】
2011029904.tif 000012
【図１１】
2011029904.tif 000013
【図１２】
2011029904.tif 000014
【図１３】
2011029904.tif 000015