JP4769316B2 - パケットキューイング装置およびパケットキューイング方法 - Google Patents

パケットキューイング装置およびパケットキューイング方法 Download PDF

Info

Publication number
JP4769316B2
JP4769316B2 JP2009173257A JP2009173257A JP4769316B2 JP 4769316 B2 JP4769316 B2 JP 4769316B2 JP 2009173257 A JP2009173257 A JP 2009173257A JP 2009173257 A JP2009173257 A JP 2009173257A JP 4769316 B2 JP4769316 B2 JP 4769316B2
Authority
JP
Japan
Prior art keywords
queue
packet
buffer
unit
external
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009173257A
Other languages
English (en)
Other versions
JP2011029904A (ja
Inventor
享邦 西田
健治 川合
恵一 小池
勝一 大山
裕之 野内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Electronics Corp
Nippon Telegraph and Telephone Corp
Original Assignee
NTT Electronics Corp
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Electronics Corp, Nippon Telegraph and Telephone Corp filed Critical NTT Electronics Corp
Priority to JP2009173257A priority Critical patent/JP4769316B2/ja
Publication of JP2011029904A publication Critical patent/JP2011029904A/ja
Application granted granted Critical
Publication of JP4769316B2 publication Critical patent/JP4769316B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

本発明は、データ通信に関し、特にパケットキューイング装置およびパケットキューイング方法に関する。
ルータやスイッチにおいて品質制御を行う場合、パケットを一時的に蓄えておくためのパケットバッファが必要となる。ルータやスイッチ用のLSIにおけるパケットバッファは、外部メモリあるいは内部メモリ上に構成される。外部メモリ上にパケットバッファが構成される場合は、大容量のメモリを利用できることから多くのパケットを蓄積できる。しかしながら、メモリバスなどの制約により高速な読み書きができず、それによりルータのパケット転送性能が大きく低下する。一方、内部メモリ上にパケットバッファが構成される場合は、読み書きの速度は、外部メモリと比べて非常に高速である。しかし、バッファ用メモリ容量の増加はそのLSIの回路規模増大を招きコストが増大する。以上のことから、従来のルータやスイッチでは、内部メモリを用いた転送性能が高いルータやスイッチはバッファリングできる容量が小さく、外部メモリを用いたバッファリング容量が大きいルータやスイッチは転送性能が低いという問題があった。
たとえば、特許文献1の通信処理回路では、外部バスにDDR(Double Data Rate)メモリを搭載することで大きなバッファリング容量が得られるが、パケット転送速度はDDRメモリの転送速度に制約される。
特開2007−135048号公報
家庭内LAN(Local Area Network)は一般には比較的低負荷で、かつ通信速度が比較的一定に安定している。従って、家庭内LAN上を送信されるパケットに関しては、QoS(Quality of Service;サービス品質)制御でバッファに蓄積されるパケットの量は比較的少ない。一方、インターネット等の広域ネットワーク(WAN;Wide Area Network)は負荷の変化や通信速度の変化が大きい。従って、家庭内LANからインターネット等の広域ネットワーク(WAN;Wide Area Network)へ、或いはインターネット等の広域ネットワークから家庭内LANへ送信されるパケットに対しては、パケットを等間隔に送信する平滑化処理が必要である。このため、平滑化処理を含むQoS制御のために大容量のパケットバッファを必要とする。
また、家庭内LANに複数の端末装置が接続され、複数の端末装置間でデータが転送される場合、ルータやスイッチは複数の通信経路のデータを同時に転送する必要が生じうる。この場合、ルータやスイッチはLANからインターネットへ、あるいはインターネットからLANへのパケット転送よりも高速にパケット転送を行う必要がある。そのためには、より高速に読み書きを行えるバッファを必要とする。
このように、家庭内LANの各端末を結び、さらにインターネットとも接続するルータ等においては、家庭内LAN間内でのパケット送信には、より高速に読み書きを行えるバッファが必要であり、家庭内LANとWANとの間のパケット送信には、より大容量のバッファが必要である。しかし、上述のように、従来のルータやスイッチでは、外部メモリを用いたバッファリング容量が大きいルータやスイッチは転送性能が低く、内部メモリを用いた転送性能が高いルータやスイッチはバッファリングできる容量が小さいか或いは容量を増やすために回路規模を大きくする必要があり、コストが増大していた。
また、家庭内LANに用いられるルータは、ルータ機能をつかさどるCPU(Central Processing Unit、中央処理装置)とL2−SW(レイヤ2スイッチ)のLSI(Large Scale Integration;大規模集積回路)とで構成されるのが一般的である。例えば、パケットがWAN側からLAN側へ連続(バースト)して送信される場合、CPUでは多くのパケットをバッファリングできるが、L2−SWの内部メモリは小さいので、バッファあふれを起こしパケットが廃棄される場合がある。この場合、バックプレッシャをCPUにかけてL2−SWへのパケット送出を停止させることで、バッファあふれによるパケット廃棄を防ぐことができる。しかし、L2−SWにおいてバッファからあふれるパケットがLAN側の特定のインタフェースへのパケットであるのに対し、そのインタフェースとは関係のないインタフェースへのパケットの送出も、バックプレッシャにより停止させられる。このため、通信速度が大きく低下する。
また、バッファに記憶されたパケットを管理するために送信先の端末毎にキュー(待ち行列)を備え、キューを蓄えるメモリの総量が固定されているルータやスイッチにおいて、新たに送信先の端末が接続された場合など、最大キュー長の設定変更が必要な場合がある。ここで、キュー長とはキューが保持する要素数をいう。また、最大キュー長とはキューが保持できる要素数の最大値をいう。最大キュー長の設定変更において、従来の方法では単に最大キュー長のみを変更していた。この方法では、変更時のキュー長よりも短い最大キュー長に設定した場合に、設定変更後の最大キュー長を超えてキューイングされていたパケット情報が消滅してしまう。そこで、パケットの受信を一時的に停止しキュー長が0になった後に最大キュー長を変更する方法が一般的に用いられている。しかし、この方法では、パケットの受信を停止するため、通信速度が低下する。
本発明は、このような事情を考慮してなされたものであり、その目的の1つは、転送速度が高く、バッファ容量が大きく、しかも回路規模が大きくならないパケットキューイング装置およびパケットキューイング方法を提供することにある。また、本発明の目的のもう1つは、バックプレッシャを用いずにWAN側からLAN側に送信されるパケットのバッファあふれを防止するパケットキューイング装置およびパケットキューイング方法を提供することにある。
[1]この発明は上述した課題を解決するためになされたもので、本発明の一態様によるパケットキューイング装置は、パケットを受信する内部側受信部と、パケットを受信する外部側受信部と、前記パケットを記憶する内部バッファ記憶部と、前記パケットを記憶する外部バッファ記憶部と、前記内部側受信部が受信した前記パケットを前記内部バッファ記憶部に書き込む内部バッファ書き込み部と、前記外部側受信部が受信した前記パケットを前記外部バッファ記憶部に書き込む外部バッファ書き込み部と、前記パケットの送信先に対応して、前記送信先に送信される一連の前記パケットの前記内部バッファ記憶部又は前記外部バッファ記憶部における記憶位置を表す記憶位置情報を記憶するキューと、前記内部バッファ記憶部又は前記外部バッファ記憶部に書き込まれた前記パケットに関し、前記記憶位置情報を前記パケットの送信先に対応する前記キューに書き込むとともに、前記キューから前記記憶位置情報を順次読み出すキュー管理部と、前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記内部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信するとともに、かつ、前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する内部側送信部と、前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する外部側送信部と、を具備することを特徴とする。
このパケットキューイング装置は、外部側送信部から送信するパケットを外部側受信部にて受信した場合は、受信したパケットを外部バッファ記憶部に一旦書き込んだ後、このパケットを外部バッファ記憶部から読み出して外部側送信部から送信する。また、このパケットキューイング装置は、内部側送信部から送信するパケットを外部側受信部にて受信した場合は、受信したパケットを外部バッファ記憶部に一旦書き込んだ後、このパケットを外部バッファ記憶部から読み出して内部側送信部から送信する。また、このパケットキューイング装置は、内部側送信部から送信するパケットを内部側受信部にて受信した場合は、受信したパケットを内部バッファ記憶部に一旦書き込んだ後、このパケットを内部バッファ記憶部から読み出して内部側送信部から送信する。また、このパケットキューイング装置は、外部側送信部から送信するパケットを内部側受信部にて受信した場合は、受信したパケットを内部バッファ記憶部に一旦書き込む。その後、外部側送信部から送信するパケットを外部側受信部にて受信した場合と同様、外部バッファ記憶部に一旦再度書き込まれた後、このパケットが外部側送信部から送信される。
このように、このパケットキューイング装置では、外部側受信部から受信されたパケットが一旦外部バッファ記憶部に蓄えられた後、内部バッファ記憶部に蓄えられずに直接内部側送信部から送信されるので、外部バッファ記憶部よりも内部バッファ記憶部の容量が小さいことによるパケットあふれが生じない。さらに、外部側受信部から受信されたパケットを内部側送信部から送信する際に、内部側バッファ記憶部におけるパケットあふれが生じないので、パケットあふれを防止するために外部バッファ記憶部の読み出し速度を低減させる必要がない。したがって、外部バッファ記憶部の読み出し速度を活かした処理ができる。
[2]また、本発明の一態様によるパケットキューイング装置は上述のパケットキューイング装置であって、複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、前記キューの各々の最大キュー長を記憶する最大キュー長レジスタとをさらに具備し、前記キュー管理部は、前記パケットの送信先に対応付けられた前記キューのキュー長が前記最小キュー長以上かつ前記最大キュー長よりも小さい場合は前記共有キューバッファの容量から前記キューの各々の前記最小キュー長として使用される容量を除いた容量に空き容量が残っていないときには前記記憶位置情報の前記キューへの書き込みを抑止し、前記キューのキュー長が前記最大キュー長以上の場合は前記記憶位置情報の前記キューへの書き込みを抑止することを特徴とする。
このパケットキューイング装置は複数のキューがキューバッファを共有するので、キューバッファの利用効率が高い。
[3]また、本発明の一態様によるパケットキューイング装置は上述のパケットキューイング装置であって、複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、をさらに具備し、前記キュー管理部は、前記キューのキュー長が前記最小キュー長以上である場合には前記共有キューバッファから前記キュー用に獲得した記憶領域に前記記憶位置情報を書き込むとともに、外部からの指示情報に基づいて前記最小キュー長レジスタに記憶されている前記最小キュー長を更新する、ことを特徴とする。
このパケットキューイング装置は、キュー管理部がキューの設定値を変更する。その際、キューの設定値変更を行うのはキュー管理部のみとすることにより、パケットキューイング装置を稼動させながらの動的な変更を行うことができる。
[4]また、本発明の一態様によるパケットキューイング方法は、パケットを記憶する内部バッファ記憶部と、パケットを記憶する外部バッファ記憶部と、前記パケットの送信先に対応して、前記送信先に送信される一連の前記パケットの前記内部バッファ記憶部又は前記外部バッファ記憶部における記憶位置を表す記憶位置情報を記憶するキューと、を具備するパケットキューイング装置が、パケットを受信する内部側受信ステップと、パケットを受信する外部側受信ステップと、前記内部側受信ステップにおいて受信した前記パケットを前記内部バッファ記憶部に書き込む内部バッファ書き込みステップと、前記外部側受信ステップにおいて受信した前記パケットを前記外部バッファ記憶部に書き込む外部バッファ書き込みステップと、前記内部バッファ記憶部又は前記外部バッファ記憶部に書き込まれた前記パケットに関し、前記記憶位置情報を前記パケットの送信先に対応する前記キューに書き込むとともに、前記キューから前記記憶位置情報を順次読み出すキュー管理ステップと、前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記内部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信するとともに、かつ、前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する内部側送信ステップと、前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する外部側送信ステップと、を具備することを特徴とする。
このパケットキューイング方法では、外部側受信ステップにて受信されたパケットが一旦外部バッファ記憶部に蓄えられた後、内部バッファ記憶部に蓄えられずに直接内部側送信ステップにて送信されるので、外部バッファ記憶部よりも内部バッファ記憶部の容量が小さいことによるパケットあふれが生じない。また、パケットあふれが生じないので、外部側受信ステップにて受信されたパケットを内部側送信ステップにて送信する際に、パケットあふれを防止するために外部バッファ記憶部の読み出し速度を低減させる必要がない。したがって、外部バッファ記憶部の読み出し速度を活かした処理ができる。
[5]また、本発明の一態様によるパケットキューイング方法は、上述のパケットキューイング方法であって、複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、前記キューの各々の最大キュー長を記憶する最大キュー長レジスタとをさらに具備するパケットキューイング装置のパケットキューイング方法であって、前記キュー管理ステップは、前記パケットの送信先に対応付けられた前記キューのキュー長が前記最小キュー長以上かつ前記最大キュー長よりも小さい場合は前記共有キューバッファの容量から前記キューの各々の前記最小キュー長として使用される容量を除いた容量に空き容量が残っていないときには前記記憶位置情報の前記キューへの書き込みを抑止し、前記キューのキュー長が前記最大キュー長以上の場合は前記記憶位置情報の前記キューへの書き込みを抑止することを特徴とする。
このパケットキューイング方法では、パケットキューイング装置は複数のキューがキューバッファを共有するので、キューバッファの利用効率が高い。
[6]また、本発明の一態様によるパケットキューイング方法は、上述のパケットキューイング方法であって、複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、をさらに具備するパケットキューイング装置のパケットキューイング方法であって、前記キュー管理ステップは、前記キューのキュー長が前記最小キュー長以上である場合には前記共有キューバッファから前記キュー用に獲得した記憶領域に前記記憶位置情報を書き込むとともに、外部からの指示情報に基づいて前記最小キュー長レジスタに記憶されている前記最小キュー長を更新することを特徴とする。
このパケットキューイング方法では、キュー管理部がキューの設定値を変更する。その際、キューの設定値変更を行うのはキュー管理部のみとすることにより、パケットキューイング装置を稼動させながらの動的な変更を行うことができる。
この発明によれば、転送速度が高く、バッファ容量が大きく、しかも回路規模が大きくならないパケットキューイング装置およびパケットキューイング方法を提供することができる。また、バックプレッシャを用いずにWAN側からLAN側に送信されるパケットのバッファあふれを防止するパケットキューイング装置およびパケットキューイング方法を提供することができる。
本発明の一実施形態におけるパケットキューイング装置1の概略構成を示す構成図である。 同実施形態におけるキュー登録部312がジョブ情報をキューに登録する処理とキュー長との関係を示す図である。 同実施形態におけるQoS制御部31の概略構成を示す構成図である。 同実施形態における共有レジスタ群315の概略構成を示す構成図である。 同実施形態における共通レジスタ群315が記憶するパケット管理テーブル325のデータ構成を示すデータ構成図である。 同実施形態における共通レジスタ群315が記憶するパケット管理テーブル325bのもう1つのデータ構成例を示すデータ構成図である。 同実施形態において廃棄判定部311がジョブ情報の登録または廃棄要求を行う処理手順を示すフローチャートである。 同実施形態においてキュー登録部312がキューにジョブ情報を登録する処理を行う手順を示すフローチャートである。 同実施形態においてキュー登録部312が登録を行うもう1つの処理手順の例を示すフローチャートである。 同実施形態においてキュー登録部312が行う、パケット送出後処理の手順を示すフローチャートである。 同実施形態においてキュー登録部312がパケット送出後処理を行うもう1つの処理手順を示すフローチャートである。 同実施形態においてキュー登録部312が、あるキューの最小キュー長を減少させる処理手順を示すフローチャートである。 同実施形態においてキュー登録部312が、あるキューの最小キュー長を増加させる処理手順を示すフローチャートである。
以下、図面を参照して、本発明の実施の形態について説明する。
図1は本発明の一実施形態におけるパケットキューイング装置1の概略構成を示す構成図である。同図において、パケットキューイング装置1は、WAN側受信部(外部側受信部)11と調停部12とWAN側パーサ部13及とFIFO(First-In, First-Out;ファイホ)部14と検索部15とWAN側フレーム生成部16とWAN側FIFO部17とWAN側L2検索部18と外部バッファ書き込み部19と外部バッファ記憶部61とメモリコントローラ62と外部バッファ管理部21と外部バッファ読み出し部22とWAN側送信部(外部側送信部)26とLAN側受信部(内部側受信部)41−1〜4とLAN側パーサ部43−1〜4とLAN側FIFO部47−1〜4とLAN側L2検索部48−1〜4と内部バッファ書き込み部49と内部バッファ記憶部50と内部バッファ管理部51と内部バッファ読み出し部52と、LAN−WAN間フレーム生成部53とLAN側フレーム生成部54−1〜4とLAN−WAN間FIFO部55とLAN側送信部(内部側送信部)56−1〜4とQoS制御部(キュー管理部)31とを含んで構成される。QoS制御部31は、キューバッファ(共有キューバッファ)321とパケットスケジューラ33とを含んで構成される。内部バッファ管理部51は、内部バッファ記憶部ベースアドレスレジスタ(不図示)と内部バッファ記憶部メモリブロックサイズレジスタ(不図示)とを含んで構成される。外部バッファ管理部21は、外部バッファ記憶部ベースアドレスレジスタ(不図示)と外部バッファ記憶部メモリブロックサイズレジスタ(不図示)とを含んで構成される。
外部バッファ記憶部61と内部バッファ記憶部50とLAN−WAN間FIFO部55とキューバッファ321とは、半導体メモリを含んで構成される記憶部である。
外部バッファ記憶部61は、メモリコントローラ62のインタフェース規格に基づくバスを通じて外部バッファ書き込み部19及び外部バッファ読み出し部22に接続される。外部バッファ記憶部61は内部バッファ記憶部50よりも記憶容量が大きいが、外部バッファ記憶部61は内部バッファ記憶部50よりも読み書き速度が遅い。外部バッファ記憶部61に用いられる外部バッファメモリの記憶容量が、一般的には16あるいは32メガバイト以上であるのに対し、内部バッファ記憶部50に用いられる内部バッファメモリの記憶容量はたかだか128キロバイト程度である。一方、外部バッファ記憶部61の読み書き速度は、133メガヘルツで動作する4バイト幅のSDR−SDRAM(Single Data Rate Synchronous Dynamic Random Access Memory)を使用した場合、533メガバイト/秒であるのに対して、内部バッファメモリ50の読み書き速度は動作周波数を133メガヘルツとしバス幅を64バイトとした場合、8.5ギガバイト/秒である。
外部バッファ記憶部61は外部メモリを含んで構成され、内部バッファ記憶部50は内部メモリを含んで構成される。外部側受信部が受信したパケットは、廃棄されるパケットを除いて全て外部バッファ記憶部61に記憶され、内部側受信部が受信したパケットは、廃棄されるパケットを除いて全て内部バッファ記憶部50に記憶される。また、外部側送信部から送信されるパケットは全て外部バッファ記憶部61から読み出されたパケットである。ただし、内部側送信部は、内部バッファ記憶部50から読み出されたパケットに加えて外部バッファ記憶部61から読み出されたパケットも送信する。外部バッファ記憶部61から読み出されたパケットを一旦内部バッファ記憶部50に書き込むことによるパケット溢れを防止するために、内部側送信部は、外部バッファ記憶部61から読み出されたパケットを、内部バッファ記憶部50を介さずに送信する。以下で用いる「外部側」とは、記憶容量がより大きく読み書き速度がより遅い外部バッファ記憶部61にパケットを書き込み、この外部バッファ記憶部61から読み出したパケットを送信する側をいう。また、「内部側」とは、記憶容量がより小さく読み書き速度がより速い内部バッファ記憶部50にパケットを書き込み、この内部バッファ記憶部50から読み出したパケットを送信する側をいう。
LAN側受信部41−1〜4は、それぞれLAN上の端末装置等の機器LAN1〜4からパケットを受信する。LAN側受信部41−1〜4は、受信したパケットをそれぞれLAN側パーサ部43−1〜4に入力する。
LAN側パーサ部43−1〜4は入力されたパケットに対して構文解析を行い、LAN側L2検索部48−1〜4が使用する要素を抽出する。具体的には、LAN側パーサ部43−1〜4は、パケットの所定の位置に書かれている値を読み出す。そして、LAN側パーサ部43−1〜4は、読み出した値に基づいて、予め定められた要素の中からLAN側L2検索部48−1〜4に出力する要素を選択する。さらに、LAN側パーサ部43−1〜4はパケットをLAN側FIFO部47−1〜4に入力し、抽出した要素をLAN側L2検索部48−1〜4に入力する。LAN側FIFO部47−1〜4は、入力されたパケットを時間調整のために一時的に記憶する。
LAN側L2検索部48−1〜4は、LAN側パーサ部43−1〜4から入力された要素と予め内部に記憶するL2検索用のキーとを照合することにより、出力先判定と品質クラス判定と廃棄判定とを行う。LAN側L2検索部48−1〜4は、内部バッファ書き込み部49に判定結果を入力する。
内部バッファ書き込み部49は、LAN側L2検索部48−1〜4から判定結果が入力されると、そのLAN側L2検索部48−1〜4に対応したLAN側FIFO部47−1〜4からパケットを読み出す。また、内部バッファ書き込み部49には、内部バッファ管理部51から内部バッファ記憶部50の空き領域の位置情報が入力される。ここで、内部バッファ記憶部50の位置情報はハンドル番号にて示される。ハンドル番号については後述する。
内部バッファ書き込み部49は、入力された位置情報に従って、内部バッファ記憶部50の空き領域にLAN側FIFO部47−1〜4から読み出したパケットのパケットデータを書き込む。内部バッファ書き込み部49は、パケットデータの書き込みが終了すると、書き込まれた領域の位置情報を示すハンドル番号と受信ポート番号と品質クラス指定と出力ポート番号とフレーム長とVLAN有無の情報など、出力のフレーム生成に必要な情報を含むジョブ情報をQoS制御部31に入力する。
なお、内部バッファ書き込み部49が、内部バッファ記憶部50にパケットデータの書き込みを開始した後にこのパケットデータを廃棄する必要が生じる場合がある。たとえば、ジャンボフレーム等のパケット長が長いデータを内部バッファ記憶部50に書き込む場合など、書き込みの途中で内部バッファ記憶部50の記憶容量を超えてしまう場合がある。また、後述するように、QoS制御部31でキューが既に最大キュー長に達しているためにジョブ情報をキューに登録できない場合がある。この場合、内部バッファ書き込み部49にはQoS制御部31から廃棄要求が入力される。また、ジャンボフレーム等のパケット長が長いデータでは、内部バッファ書き込み部49がパケットデータの先頭を内部バッファ記憶部50に書き込んだ後で、L2検索部がこのフレームの廃棄を決定する場合がある。このような場合、QoS制御部31は内部バッファ記憶部50に書き込んだパケットの記憶位置情報を示すハンドル番号を内部バッファ管理部51に入力する。内部バッファ管理部51は、ハンドル番号によって示される内部バッファ記憶部50の領域を空き領域として記憶する。これにより、このパケットは廃棄される。一方、内部バッファ記憶部50の空き領域がないためにパケットが廃棄される場合は、内部バッファ書き込み部49は内部バッファ記憶部50にパケットの書き込みを行わず、QoS制御部へのジョブ情報の入力も行わない。
なお、内部バッファ記憶部50は、想定される最長フレーム長に合わせたメモリブロックに区画されていてもよいし、最長フレーム長よりも小さいメモリブロックに区画されていてもよい。最長フレーム長よりも小さいメモリブロックに区画すると管理方法が複雑となるがメモリ利用効率は向上する。
内部バッファ記憶部50は、パケットを記憶する。内部バッファ管理部51は、内部バッファ記憶部50上の空き領域を示すハンドル番号を記憶する。
WAN側受信部11は、WANからのパケットを受信して調停部12へ出力する。
調停部12は、WAN側受信部11から入力されるパケットとLAN−WAN間FIFO部55から入力されるパケットとのどちらを先に処理するかを決定する。調停部12は、決定した順序に従ってWAN側受信部11から入力されるパケットとLAN−WAN間FIFO部55から入力されるパケットとをWAN側パーサ部13に入力する。WAN側パーサ部13は、入力されたパケットに対して構文解析を行い、検索部15が使用する要素を抽出する。WAN側パーサ部13はパケットをFIFO部14に入力し、抽出した要素を検索部15に入力する。
FIFO部14は、入力されたパケットを時間調整のために一時的に記憶する。
検索部15は、入力された要素と予め内部に記憶する検索用のキーとを照合することにより、出力先判定と品質クラス判定と廃棄判定とパケット書き換え判定とを行う。検索部15は、WAN側フレーム生成部16に判定結果を入力する。
WAN側フレーム生成部16は、判定結果が入力されると、FIFO部14からパケットを読み出す。また、WAN側フレーム生成部16は、上述のパケット書き換え判定においてパケットの書き換えが必要と判定された場合は、読み出したパケットを書き換える。WAN側フレーム生成部16は、パケットをWAN側FIFO部17に入力し、判定結果をWAN側L2検索部18に入力する。
WAN側FIFO部17は、入力されたパケットを時間調整のために一時的に記憶する。
WAN側L2検索部18は、LAN側送信部から送信されるパケットに対して、LAN側L2検索部48−1〜4と同様のL2検索を行う。WAN側L2検索部18は、検索結果を外部バッファ書き込み部19に入力する。
外部バッファ書き込み部19は、検索結果が入力されると、WAN側FIFO部17からパケットを読み出す。また、外部バッファ書き込み部19は、外部バッファ管理部21から外部バッファ記憶部61の空き領域の位置情報を示すハンドル番号を読み出す。外部バッファ書き込み部19は、入力されたハンドル番号に従って、外部バッファ記憶部61の空き領域にWAN側FIFO部17から読み出したパケットのパケットデータを書き込む。外部バッファ書き込み部19は、パケットデータの書き込みが終了すると、ジョブ情報をQoS制御部31に入力する。
LAN側と同様、外部バッファ記憶部61に空き領域がない場合や、キュー長が最大キュー長に達しているなどの理由でキューにジョブ情報を登録できなかった場合や、検索部15の廃棄判定において廃棄すると判定された場合は、外部バッファ書き込み部19は、外部バッファ記憶部61にパケットを書き込まない。一方、外部バッファ記憶部61へのパケットを書き込みを開始した後にパケットを廃棄する場合は、LAN側と同様、外部バッファ管理部にパケットを書き込んだ外部バッファ記憶部61上のハンドル番号を外部バッファ管理部21に入力する。外部バッファ管理部21は、入力されたハンドル番号を空き領域を示すハンドル番号として記憶する。これにより、パケットが廃棄される。
メモリコントローラ62は、外部バッファ記憶部61に対するパケットの書き込み及び読み出しを行う。外部バッファ管理部21は、外部バッファ記憶部61上の空き領域を示すハンドル番号を記憶する。
QoS制御部31とキューバッファ321とパケットスケジューラ33とについては、後述する。
外部バッファ読み出し部22は、送信するパケットのジョブ情報がパケットスケジューラ33から入力されると、入力されたジョブ情報から管理番号と送信ポート番号とを読み出す。外部バッファ読み出し部22は、読み出した管理番号から得られるハンドル番号に従って、メモリコントローラ62を介して外部バッファ記憶部61からパケットデータを読み出す。外部バッファ読み出し部22は、読み出したパケットデータを、ジョブ情報から読み出した送信ポート番号に従って、WAN側送信部26またはLAN側フレーム生成部54−1〜4の何れかに入力する。また、外部バッファ読み出し部22は、読み出したハンドル番号を外部バッファ管理部21に入力する。外部バッファ管理部21は、入力されたハンドル番号を空き領域のハンドル番号として記憶する。これにより、読み出したパケットデータが記憶されていた外部バッファ記憶部61上の記憶領域が空き領域として解放される。
WAN側送信部26は、入力されたフレームをWANに送信する。
ここで、WANに送信されるパケットは、WAN側フレーム生成部16ですでにフレーム生成されているので改めてフレームを生成する必要は無く、WAN側送信部26は外部バッファ読み出し部22から入力されたパケットをそのまま送出する。
内部バッファ読み出し部52は、送信するパケットのジョブ情報がパケットスケジューラ33から入力されると、入力されたジョブ情報から管理番号と送信ポート番号とを読み出す。内部バッファ読み出し部52は、読み出した管理番号をQoS制御部31に入力し、QoS制御部31から管理番号から得られるハンドル番号に対応する内部バッファ記憶部50上のアドレスが入力される。内部バッファ読み出し部52は入力されたアドレスに従って内部バッファ記憶部50からパケットデータを読み出す。内部バッファ読み出し部52は、読み出したパケットデータを、ジョブ情報から読み出した送信ポート番号に従って、LAN−WAN間フレーム生成部53またはLAN側フレーム生成部54−1〜4の何れかに入力する。また、内部バッファ読み出し部52は、読み出したハンドル番号を内部バッファ管理部51に入力する。内部バッファ管理部51は、入力されたハンドル番号を空き領域のハンドル番号として記憶する。これにより、読み出したパケットデータが記憶されていた内部バッファ記憶部50上の記憶領域が空き領域として解放される。
LAN−WAN間フレーム生成部53は、内部バッファ読み出し部52からパケットデータを入力されると、VLANタグの挿入削除などのフレーム書き換えを行ってフレームを生成する。LAN−WAN間フレーム生成部53は、生成したフレームをLAN−WAN間FIFO部55に入力する。同様に、LAN側フレーム生成部54−1〜4は、内部バッファ読み出し部52からパケットデータを入力されると、VLANタグの挿入削除などのフレーム書き換えを行ってフレームを生成する。LAN側フレーム生成部54−1〜4は、生成したフレームを、それぞれLAN側送信部56−1〜4に入力する。
LAN−WAN間FIFO部55は、入力されたフレームを時間調整のために一時的に記憶する。LAN−WAN間FIFO部55は、上述のように調停部12へパケットを入力する。ここで、複数のLAN側受信部41―1〜4が受信したパケットが調停部12に入力される場合がある。この場合も、QoS制御部31によってQoS制御された後のパケットがLAN−WAN間FIFO部55を経由して調停部12へ入力されており、QoS制御部31によって調停部12への入力順序が調整されている。また、内部バッファ記憶部50に記憶されていたパケットを調停部12へ入力することで、このパケットが記憶されていた内部バッファ記憶部50上の記憶領域を空き領域とすることができ、内部バッファを有効に利用可能となる。
LAN側送信部56−1〜4は、入力されたフレームをそれぞれLAN上の端末装置等の機器LAN1〜4に送信する。
パケットスケジューラ33はLAN側送信部56−1〜4とWAN側送信部26とから各送信部の状態の情報が入力される。具体的には、パケットスケジューラ33には各送信部がパケットを送信中か送信を完了しているかの情報が入力される。パケットスケジューラ33は、キューコントローラ部314−1〜Nから送信要求信号としてジョブ情報が入力されると、優先制御または重み付け公平制御等のパケット送出スケジューリングを行い、スケジューリング完了後のパケット送出タイミング時に、入力されたジョブ情報を外部バッファ読み出し部22または内部バッファ読み出し部52に入力する。その後、パケットスケジューラ33は、当該パケットの送信を受け付けたことを示す承認信号(アクノリッジ信号ともいう)をキューコントローラ部314−1〜Nに入力する。
キューバッファ321は、WAN側送信部26とLAN−WAN間FIFO部55とLAN側送信部56−1〜4の各々に対して品質クラス数分のキューを具備する。WAN側送信部26とLAN−WAN間FIFO部55とLAN側送信部56−1〜4の各々は送信先としてWANと調停部と機器LAN1〜4に予め対応付けられているので、各キューは送信先に予め対応付けられている。
ここで、LAN側送信部の数が多くなると、また、品質クラスが多くなると、キューバッファ321は大きなバッファ容量を備える必要がある。また、各キューに対して設定可能なキュー長を大きくするとキューに関連付けられるジョブ情報を蓄積しておくためのキューバッファ量が増大する。しかしすべてのキューが常に最大キュー長分のジョブ情報を蓄積することはなく、一時的に最大キュー長に達することがほとんどである。そこで、キューバッファ量を削減するために、キューバッファ321は各キューが共有して用いる共有キューバッファを備える。
ここで、キューバッファ321を全て共有キューバッファとすると、他のキューに関連するジョブ情報が書き込まれてキューバッファ321の空き領域がなくなった場合に、ジョブ情報を1個も書き込めないキューが生じ得る。これを避けるために各キューに最小キュー長を予め設定する。最小キュー長はキューが必ず保持することができる要素数である。また、前述したようにキュー長とはキューが保持する要素数をいう。キューバッファ321の容量のうち、各キューの最小キュー長に必要な容量を除いた残りを共有キューバッファの容量として用いる。これにより、少ない量のキューバッファ321で、特定のキューが一時的に使用する大量のキューバッファにも対応すると共に各キューに対して最低限蓄積可能なキュー長を保証する。
図2はキュー登録部312がジョブ情報をキューに登録する処理とキュー長との関係を示す図である。以下、後述する図3や他図も適宜参照しながら説明する。
キュー長が最小キュー長よりも小さい場合は、キュー登録部312はジョブ情報を廃棄せず必ずキューに登録する。キュー長が最小キュー長以上かつ最大キュー長よりも小さい場合は、キュー登録部312は廃棄確率レジスタが示す廃棄確率に従って、ジョブ情報を廃棄するか否かを決定する。廃棄する場合はジョブ情報をキューには登録せず、廃棄しない場合はジョブ情報をキューに登録する。キュー長が最大キュー長以上の場合は、キュー登録部312はジョブ情報をキューには登録せずに廃棄する。
最小キュー長が0に設定されると、QoS制御部31は、キューバッファ321の全容量を共有キューバッファ領域の容量として用いる。この場合は、QoS制御部31はどのキューに対しても、ジョブ情報が入力された順でキューバッファ321の記憶領域を割り当てる。一方、いくつかのキューに1以上の最小キュー長が設定された場合、QoS制御部31は最小キュー長の合計分を全キューバッファから減じた分のキューバッファ容量を共有キューバッファとして使用する。この場合は、QoS制御部31は最小キュー長を超えてキューイングする場合に、ジョブ情報が入力された順でキューバッファ321の記憶領域を割り当てる。1以上の最小キュー長を設定したキューは、その最小キュー長分のキューバッファが確保されているので、確実にその最小キュー長分はキューイングすることが可能である。
また、各キューにさらに最大キュー長を予め設定してもよい。前述したように、最大キュー長とはキューが保持できる要素数の最大値をいう。キューバッファ321へのジョブ情報の書き込みは対象となるキューのキュー長に応じて制御される。キュー長が最小キュー長より小さい場合は、ジョブ情報を入力されたQoS制御部31は必ずキューバッファ321にこのジョブ情報を書き込む。キュー長が最小キュー長以上かつ最大キュー長より小さい場合は、QoS制御部31は予め設定された廃棄確率を用いて廃棄判定を行い、廃棄されないと判定した場合のみジョブ情報をキューバッファ321に書き込む。最大キュー長を超える場合は、QoS制御部31はジョブ情報をキューバッファ321に書き込まずに廃棄する。廃棄判定は、例えば、廃棄確率レジスタに0〜31の範囲の数値を設定して行う。キュー長が最小キュー長以上かつ最大キュー長より小さい場合、ジョブ情報のキューバッファ321への書き込みに際してQoS制御部31が0〜31の乱数を生成する。QoS制御部31は、生成した乱数が廃棄確率レジスタの値よりも大きい場合はジョブ情報を廃棄する。生成した乱数が廃棄確率レジスタの値以下の場合はジョブ情報をキューバッファ321に書き込む。
図3は、QoS制御部31の概略構成を示す構成図である。同図において、QoS制御部31は、廃棄判定部311とキュー登録部312とキュー情報管理部313−1〜Nとキューコントローラ314−1〜Nと共通レジスタ群315とパケットスケジューラ33とを含んで構成される。共通レジスタ群315は、キューバッファ321と最大共有キューバッファ量レジスタ322と共有キューバッファ量レジスタ323と空きキューバッファ番号FIFO・324とを含んで構成される。
廃棄判定部311は、内部バッファ書き込み部49または外部バッファ書き込み部19からジョブ情報が入力されると、そのジョブ情報の廃棄判定を行う。廃棄判定部311は、廃棄判定において廃棄が必要と判定した場合は、ジョブ情報を入力した内部バッファ書き込み部49または外部バッファ書き込み部19に対して廃棄要求を入力する。廃棄判定部311は、廃棄判定において廃棄が不要と判定した場合は、入力されたジョブ情報をキュー登録部312を介してキューバッファ321に書き込む。
キュー登録部312は、共通レジスタ群315の情報及びキュー情報管理部313−1〜Nの情報を更新する。また、キュー登録部312は、共通レジスタ群315及びキュー情報管理部313−1〜Nから情報を読み出す。
キューコントローラ314−1〜Nは、対応するキュー情報管理部313−1〜Nのキュー長が1以上の場合に、対応するキュー情報管理部313−1〜Nからフレーム長と管理番号とを読み出してジョブ情報を生成する。キューコントローラ314−1〜Nは、生成したジョブ情報をパケットスケジューラ33に入力する。このジョブ情報はパケットスケジューラ33に対する送信要求信号(リクエスト信号ともいう)である。
図4は、共有レジスタ群315の概略構成を示す構成図である。同図において、共通レジスタ群315は、キューバッファ321と最大共有キューバッファ量レジスタ322と共有キューバッファ量レジスタ323と空きキューバッファ番号FIFO・324と空きパケット管理番号FIFO・330と、パケット管理テーブル325とを含んで構成される。
キューバッファ321は、複数のキューに記憶されるジョブ情報を表形式のデータとして記憶する。キューバッファ321の各行のデータが1個のジョブ情報に対応し、各行はキューバッファ番号にて識別される。キューバッファ321が記憶するデータは、管理番号とフレーム長と次キューバッファ番号とを含んで構成される。
管理番号は、ハンドル番号を記憶するパケット管理テーブルの各行に対応する。パケット管理テーブルは、パケットが内部バッファ記憶部50上に記憶される記憶位置情報またはパケットが外部バッファ記憶部61上に記憶される記憶位置情報を示すハンドル番号を記憶する。
フレーム長は、管理番号によって特定されるパケットのフレーム長を示す。1行分の管理番号とフレーム長とが1個のジョブ情報に相当する。
次キューバッファ番号は、キュー上の次のデータへのリンクを示す。具体的には、キュー上の次のデータであるジョブ情報が記憶されている行のキューバッファ番号が記憶されている。
キューバッファ321はジョブ情報をキュー構造にて記憶する記憶部であり、キュー構造は、次キューバッファ番号によって示される。キュー登録部312がジョブ情報を登録するキューは、全てキューバッファ321の記憶領域上に構成されている。
最大共有キューバッファ量レジスタ322は、キューバッファ321のバッファ量のうち、共有キューバッファに割り当てられているバッファ量を示す。共有キューバッファ量レジスタ323は、キューバッファ321のバッファ量のうち、共有キューバッファとして用いられているバッファ量を示す。空きキューバッファ番号FIFO・324は、キューバッファ321中の空き領域の位置をキューバッファ番号にて記憶する。
図3に戻って、キュー情報管理部313−1〜Nは、それぞれ先頭キューバッファ番号レジスタと最終キューバッファ番号レジスタとフレーム長レジスタと管理番号レジスタと最小キュー長レジスタと最大キュー長レジスタと廃棄確率レジスタとキュー長レジスタとを含んで構成される。1個のキュー情報管理部313−i(1≦i≦N)が1個のキューに対応する。
先頭キューバッファ番号レジスタは、キューバッファ321上におけるキューの先頭の位置をキューバッファ番号で示す。最終キューバッファ番号レジスタは、キューバッファ321上におけるキューの末尾の位置をキューバッファ番号で示す。フレーム長レジスタは、キューの先頭に記憶されるジョブ情報のうち、フレーム長を示す。管理番号レジスタは、キューの先頭に記憶されるジョブ情報のうち、管理番号を示す。フレーム長レジスタと管理番号レジスタによって、キューの先頭に記憶されるジョブ情報が示される。
最小キュー長レジスタは、キューに設定された最小キュー長を示す。キュー長が最小キュー長以上となっている場合は、新たに記憶されるジョブ情報は、共有キューバッファに記憶されるものとして扱われる。この場合、予め定められた廃棄確率に従ってジョブ情報が廃棄され、廃棄されない場合のみキューバッファ321に書き込まれる。
最大キュー長レジスタは、キューに設定された最大キュー長を示す。キュー長が最大キュー長に達しているときは、このキューにジョブ情報を書き込むことはできない。この場合、入力されたジョブ情報は廃棄される。
廃棄確率レジスタは、上述の廃棄確率を示す。キュー長レジスタは、そのキューのキュー長を示す。
キュー情報管理部313−1〜Nは共通レジスタ群315と共にキューを構成する。まず、先頭キューバッファ番号レジスタがキューバッファ321上でキューの先頭ジョブ情報が記憶されている行を示す。また、この行の次キューバッファ番号が次のジョブ情報が記憶されている行を示す。以下同様に、次キューバッファに従ってキューを辿ることができる。
図5は共通レジスタ群315が記憶するパケット管理テーブル325のデータ構成を示すデータ構成図である。パケット管理テーブル325は、管理番号から内部バッファ記憶部50上のアドレスまたは外部バッファ記憶部61上のアドレスを生成するためのハンドル番号を記憶しておくテーブルである。共通レジスタ群315はパケット管理テーブル325を表形式のデータとして記憶する。パケット管理テーブルの各行は管理番号に対応付けられている。パケット管理テーブルの各行がそれぞれの管理番号と内部バッファ記憶部50上のアドレスまたは外部バッファ記憶部61上のアドレスとの関係を示す。パケット管理テーブル325は外部/内部識別符号とハンドル番号とを含んで構成される。使用する管理番号は、空きパケット管理番号FIFO・330を用いて取得する。
外部/内部識別符号は、ハンドル番号から得られるアドレスが内部バッファ記憶部50上のアドレスか外部バッファ記憶部61上のアドレスかの区別を示す。外部/内部識別符号が0の場合は、ハンドル番号から得られるアドレスが内部バッファ記憶部50上のアドレスであることを示し、外部/内部識別符号が1の場合は、ハンドル番号から得られるアドレスが外部バッファ記憶部61上のアドレスであることを示す。
ハンドル番号は、パケットが記憶された記憶位置を示すインデックスである。予め定められたベースアドレスとメモリブロックサイズとを用いて、アドレス=ベースアドレス+メモリブロックサイズ×ハンドル番号によりアドレスが算出される。内部バッファ管理部51は、内部バッファ記憶部ベースアドレスレジスタ(不図示)に内部バッファ記憶部50のベースアドレスを記憶し、内部バッファ記憶部メモリブロックサイズレジスタ(不図示)に内部バッファ記憶部50のメモリブロックサイズを記憶する。また、外部バッファ管理部21は外部バッファ記憶部ベースアドレスレジスタ(不図示)に外部バッファ記憶部61のベースアドレスを記憶し、外部バッファ記憶部メモリブロックサイズレジスタ(不図示)に外部バッファ記憶部61のメモリブロックサイズを記憶する。
なお、パケット管理テーブルの構成は図5のものに限らない。
図6は、共通レジスタ群315が記憶するパケット管理テーブル325bのもう1つのデータ構成例を示すデータ構成図である。
共通レジスタ群315はパケット管理テーブル325bを表形式のデータとして記憶する。パケット管理テーブルの各行は管理番号に対応付けられている。パケット管理テーブルの各行がそれぞれの管理番号と内部バッファ記憶部50上のアドレスまたは外部バッファ記憶部61上のアドレスとの関係を示し、ハンドル番号を含んで構成される。
パケット管理テーブル325bにおいては、ハンドル番号の全ビットを1とすることにより外部バッファ記憶部61上のアドレスであることを示す。同図において、ハンドル番号は16ビットで構成され、全ビットが1のハンドル番号は16進数表記で0xFFFFと示されている。外部バッファ記憶部61上のアドレスは管理番号を用いて、アドレス=外部バッファ記憶部のベースアドレス+外部バッファ記憶部のメモリブロックサイズ×管理番号により算出される。一方内部バッファ記憶部50上のアドレスは、ハンドル番号を用いて、アドレス=内部バッファ記憶部のベースアドレス+内部バッファ記憶部のメモリブロックサイズ×ハンドル番号により算出される。
ここで、外部バッファ記憶部61のアドレスを記憶するためにハンドル番号をパケット管理テーブル325bに書き込む場合、特定の管理番号に対応付けられた特定の行に書き込む必要があり、その行が空いている必要がある。そこで、例えば、この使い方をする場合、先の説明とは異なり、外部バッファ記憶部50に書き込むアドレスをQoS制御部31で生成してそこに書き込むように外部バッファ書き込み部19に通知する。内部バッファに関しては、先の説明と違いはない。具体的には、空きパケット管理番号FIFO・330から得られた値を外部バッファ記憶部50のハンドル番号として通知する。そして、当該管理番号のハンドル番号には、16進数表記で0xFFFFを書き込む。空きパケット管理テーブルに蓄積されている管理番号はユニークであるので書き込む行が空いていることが保証される。
図7は、廃棄判定部311がジョブ情報の登録または廃棄要求を行う処理手順を示すフローチャートである。廃棄判定部311はキューバッファの空きの有無及び廃棄確率を用いてジョブ情報の登録または廃棄を行うことにより、輻輳制御を行う。
廃棄判定部311は、内部バッファ書き込み部49または外部バッファ書き込み部19からジョブ情報が入力されると、ジョブ情報の登録または廃棄要求を行う処理を開始する。
ステップS1において、廃棄判定部311は、入力されたジョブ情報に対応するパケットを送信する送信部と品質クラスとを、入力されたジョブ情報から読み出す。ステップS2において、廃棄判定部311は、読み出した送信部と品質クラスとに対応するキューのキュー長と最小キュー長と最大キュー長と廃棄確率とを、キュー情報管理部313−1〜Nから読み出す。ステップS3において、廃棄判定部311は、読み出した最小キュー長がキュー長よりも大きいか否かを判断する。大きい場合(ステップS3:Yes)はステップS10へ移り、大きくない場合(ステップS3:No)はステップS4へ移る。
ステップS4において、廃棄判定部311は、読み出した最大キュー長が現在のキュー長以下であるか否かを判断する。現在のキュー長以下である場合(ステップS4:Yes)はステップS9へ移り、そうでない場合(ステップS4:No)はステップS5へ移る。
ステップS5において、廃棄判定部311は、確率的廃棄に用いるための乱数を生成する。
ステップS6において、廃棄判定部311は、生成した乱数が読み出した廃棄確率よりも大きいか否かを判断する。大きい場合(ステップS6:Yes)はステップS9へ移り、大きくない場合(ステップS6:No)はステップS7へ移る。
ステップS7において、廃棄判定部311は、最大共有キューバッファ量レジスタ322から最大共有キューバッファ量を読み出し、共有キューバッファ量レジスタ323から共有キューバッファ量を読み出す。
ステップS8において、廃棄判定部311は、最大共有キューバッファ量が共有キューバッファ量より大きいか否かを判断する。大きい場合(ステップS8:Yes)はステップS11へ移り、大きくない場合(ステップS8:No)はステップS9へ移る。
ステップS9において、廃棄判定部311は、ジョブ情報を入力した外部バッファ書き込み部19または内部バッファ書き込み部49に廃棄要求を入力する。その後、廃棄判定部311はジョブ情報の登録または廃棄要求を行う処理を終了する。
ステップS10において、廃棄判定部311は、キュー長レジスタが記憶するキュー長を1増加させる。
ステップS11において、廃棄判定部311は、共有キューバッファ量レジスタ323が記憶する共有キューバッファ量とキュー長レジスタが記憶するキュー長とをそれぞれ1増加させる。
ステップS12において、廃棄判定部311は、入力されたジョブ情報をキュー登録部312に入力する。その後、廃棄判定部311はジョブ情報の登録または廃棄要求を行う処理を終了する。
図8は、キュー登録部312がキューにジョブ情報を登録する処理を行う手順を示すフローチャートである。キュー登録部312は、廃棄判定部311からジョブ情報が入力されると登録処理を開始する。
ステップS21において、キュー登録部312は、空きキューバッファ番号FIFO・324から空きキューバッファ番号を読み出し、空きパケット管理番号FIFO・330から管理番号を読み出す。そしてその管理番号の行にジョブ情報から取得されるハンドル番号を書き込む。
ステップS22において、キュー登録部312は、入力されたジョブ情報に対応するパケットを送信する送信部と品質クラスとを、入力されたジョブ情報から読み出す。そして、キュー登録部312は、読み出した送信部と品質クラスとに対応するキューのキュー長が0か否かを判断する。キュー長が0の場合(ステップS22:Yes)は、ステップS23に移る。キュー長が0で無い場合(ステップS22:No)は、ステップS28に移る。
ステップS23からステップS25において、キュー登録部312はキュー情報管理部313−1〜Nの情報を更新する。ステップS23において、キュー登録部312は、登録対象のキューに対応するキュー情報管理部313−1〜N(以下、対応するキュー情報管理部ともいう)の先頭キューバッファ番号レジスタと最終キューバッファ番号レジスタとに、読み出した空きキューバッファ番号を書き込む。ステップS24において、キュー登録部312は、ジョブ情報からフレーム長を読み出す。そして、キュー登録部312は、対応するキュー情報管理部313−1〜Nのフレーム長レジスタに読み出したフレーム長を書き込む。ステップS25において、キュー登録部312は、先に取得した管理番号を、対応するキュー情報管理部313−1〜Nの管理番号レジスタに書き込む。
ステップS26及びステップS27において、キュー登録部312はキューバッファ312の情報を更新する。ステップS26において、キュー登録部312は、空きキューバッファ番号FIFO・324から読み出した空きキューバッファ番号が示すキューバッファ321の行(以下、登録対象の行ともいう)の、フレーム長の欄にジョブ情報から読み出したフレーム長を書き込み、管理番号の欄に先に取得した管理番号を書き込む。ステップS27において、キュー登録部312は、キューバッファ321の次キューバッファ番号の欄に、キューバッファ番号として使われない値を書き込む。その後、キュー登録部312は登録処理を終了する。
ステップS28からステップS30において、キュー登録部312はキューバッファ321の情報を更新する。
ステップS28において、キュー登録部312は、対応するキュー情報管理部313−1〜Nから最終キューバッファ番号を読み出す。キュー登録部312は、読み出した最終キューバッファ番号が示すキューバッファ321の行の次キューバッファ番号の欄に空きキューバッファ番号FIFO・324から読み出した空きキューバッファ番号を書き込む。
ステップS29において、キュー登録部312は、ジョブ情報から管理番号を読み出す。そして、キュー登録部312は、登録対象の行の管理番号の欄にジョブ情報から読み出した管理番号を書き込む。
ステップS30において、キュー登録部312は、ジョブ情報からフレーム長を読み出す。そして、キュー登録部312は、登録対象の行のフレーム長の欄にジョブ情報から読み出したフレーム長を書き込む。
ステップS31において、キュー登録部312は、キュー情報管理部313−1〜Nの情報を更新する。同ステップにおいて、キュー登録部312は、対応するキュー情報管理部313−1〜Nの最終キューバッファ番号レジスタに空きキューバッファ番号FIFO324から読み出した空きキューバッファ番号を書き込む。その後、キュー登録部312は登録処理を終了する。
なお、キュー登録部312が登録を行う処理手順は図8で示したものに限らない。
図9は、キュー登録部312が登録を行うもう1つの処理手順の例を示すフローチャートである。
ステップS41において、キュー登録部312は、空きキューバッファ番号FIFO・324から空きキューバッファ番号を読み出し、空きパケット管理番号FIFOから管理番号を読み出す。そしてその管理番号の行にジョブ情報から取得されるハンドル番号を書き込む。
ステップS42において、キュー登録部312は、入力されたジョブ情報に対応するパケットを送信する送信部と品質クラスとを、入力されたジョブ情報から読み出す。そして、キュー登録部312は、読み出した送信部と品質クラスとに対応するキューのキュー長が0か否かを判断する。キュー長が0の場合(ステップS42:Yes)は、ステップS43に移る。キュー長が0で無い場合(ステップS42:No)は、ステップS47に移る。
ステップS43において、キュー登録部312は、キューバッファ321の情報を更新する。キュー登録部312は、登録対象の行の次キューバッファ番号の欄にキューバッファ番号として使われない値を書き込む。
ステップS44からステップS46において、キュー登録部312はキュー情報管理部313−1〜Nの情報を更新する。ステップS44において、キュー登録部312は、対応するキュー情報管理部313−1〜Nの先頭キューバッファ番号レジスタと最終キューバッファ番号レジスタとに空きキューバッファ番号FIFO・324から読み出したキューバッファ番号を書き込む。ステップS45において、キュー登録部312は、ジョブ情報からフレーム長を読み出す。そして、キュー登録部312は、対応するキュー情報管理部313−1〜Nのフレーム長レジスタに読み出したフレーム長を書き込む。ステップS46において、キュー登録部312は、先に取得した管理番号を、対応するキュー情報管理部313−1〜Nの管理番号レジスタに書き込む。
ステップS47において、キュー登録部312は、キューバッファ321の情報を更新する。キュー登録部312は、対応するキュー情報管理部313−1〜Nの最終キューバッファ番号レジスタから最終キューバッファ番号を読み出す。また、キュー登録部312は、入力されたジョブ情報からフレーム長を読み出す。そして、キュー登録部312は、登録対象の行の管理番号の欄に先に取得した管理番号を書き込み、フレーム長の欄に読み出したフレーム長を書き込み、次キューバッファ番号の欄に空きキューバッファ番号FIFO・324から読み出したキューバッファ番号を書き込む。
ステップS48において、キュー登録部312は、キュー情報管理部313−1〜Nの情報を更新する。キュー登録部312は、対応するキュー情報管理部313−1〜Nの最終キューバッファ番号レジスタに空きキューバッファ番号FIFO・324から読み出したキューバッファ番号を書き込む。その後、キュー登録部312は登録処理を終了する。
図8に示す処理手順では、キュー情報管理部313−1〜Nが記憶するジョブ情報が、キューバッファにも記憶されている。一方、図9に示す処理手順では、キュー情報管理部313−1〜Nが記憶するジョブ情報は、キューバッファには記憶されていない。図9に示す手順のほうが、処理手順が少なくて済む。
図10は、キュー登録部312が行う、パケット送出後処理の手順を示すフローチャートである。同図の処理は、図8の登録処理に対応する。
キュー登録部312は、キューコントローラ314−1〜Nから送信を承認されたパケットのジョブ情報の入力を受けてパケット送出後処理を開始する。
ステップS61において、キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nから、先頭キューバッファ番号を読み出す。キュー登録部312は、読み出した先頭キューバッファ番号を空きキューバッファFIFO・324に入力(返却)する。また当該キュー番号に関連する管理番号を空きパケット管理番号FIFO・330に入力(返却)する。
ステップS62において、キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nから、キュー長を読み出す。キュー登録部312は、読み出したキュー長が1より大きいか否かを判断する。1より大きい場合(ステップS62:Yes)は、キュー登録部312は、ステップS63に移る。1より大きくない場合(ステップS62:No)は、ステップS65に移る。
ステップS63からステップS64において、キュー登録部312は、キュー情報管理部313−1〜Nの情報を更新する。ステップS63において、キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nから、先頭キューバッファ番号を読み出す。キュー登録部312は、読み出した先頭キューバッファ番号が示すキューバッファ321の行の、次キューバッファ番号の欄からキューバッファ番号を読み出す。キュー登録部312は、読み出したキューバッファ番号を、送出したパケットに対応するキュー情報管理部313−1〜Nの、先頭キューバッファ番号レジスタに書き込む。ステップS64において、キュー登録部312は、先頭キューバッファ番号レジスタに書き込んだキューバッファ番号が示すキューバッファ321の行から管理番号とフレーム長とを読み出す。この行は、新たにキューの先頭となった行である。キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nの管理番号レジスタに読み出した管理番号を書き込み、フレーム長レジスタに読み出したフレーム長を書き込む。
ステップS65において、キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nから、キュー長と最小キュー長とを読み出す。キュー登録部312は、読み出したキュー長が読み出した最小キュー長よりも大きいか否かを判断する。大きい場合(ステップS65:Yes)は、ステップS66に移る。大きくない場合(ステップS65:No)は、ステップS67に移る。
ステップS66において、キュー登録部312は、共有バッファ量レジスタ323の共有バッファ量を1減少させる。
ステップS67において、キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nのキュー長レジスタが記憶するキュー長を1減少させる。その後、キュー登録部312は、パケット送出後処理を終了する。
以上のように、パケット送出後処理においてキュー登録部312はキューの先頭のバッファ番号を空きキューバッファ番号FIFOに戻す。また、バッファ番号の返却によってキューが空になる場合は、キュー長レジスタのキュー長を0にする。バッファ番号の返却によりキューが空にならない場合は、次キューバッファ番号をキューバッファ321から取得し先頭キューバッファ番号レジスタを更新する。
なお、キュー登録部312がパケット送出後処理を行う処理手順は図10で示したものに限らない。
図11は、キュー登録部312がパケット送出後処理を行うもう1つの処理手順を示すフローチャートである。同図の処理は、図9の登録処理に対応する。
ステップS81において、キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nから、先頭キューバッファ番号を読み出す。キュー登録部312は、読み出した先頭キューバッファ番号を空きキューバッファFIFO・324に入力(返却)する。そして、当該キューバッファ番号に対応する管理番号を空きパケット管理番号FIFOに入力(返却)する。
ステップS82において、キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nから、キュー長を読み出す。キュー登録部312は、読み出したキュー長が1より大きいか否かを判断する。1より大きい場合(ステップS82:Yes)は、キュー登録部312は、ステップS83に移る。1より大きくない場合(ステップS82:No)は、ステップS84に移る。
ステップS83において、キュー登録部312は、キュー情報管理部313−1〜Nの情報を更新する。キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nから、先頭キューバッファ番号を読み出す。キュー登録部312は、読み出した先頭キューバッファ番号に対応するキューバッファ321の行から次キューバッファ番号と管理番号とフレーム長とを読み出す。キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nの先頭キューバッファレジスタに読み出した次キューバッファ番号を書き込み、管理番号レジスタに読み出した管理番号を書き込み、フレーム長レジスタに読み出したフレーム長を書き込む。
ステップS84において、キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nから、キュー長と最小キュー長とを読み出す。キュー登録部312は、読み出したキュー長が読み出した最小キュー長よりも大きいか否かを判断する。大きい場合(ステップS84:Yes)は、ステップS85に移る。大きくない場合(ステップS84:No)は、ステップS86に移る。
ステップS85において、キュー登録部312は、共有バッファ量レジスタ323の共有バッファ量を1減少させる。
ステップS86において、キュー登録部312は、送出したパケットに対応するキュー情報管理部313−1〜Nのキュー長レジスタが記憶するキュー長を1減少させる。その後、キュー登録部312は、パケット送出後処理を終了する。
以上のように、ネットワーク(トラヒック)の特性とバッファに用いるメモリの帯域及び容量の特性とが一致するように内部バッファと外部バッファとを別々に備えることでバッファ容量の増加と処理速度の向上を行うと共に、両バッファに共通のキューを用いて制御することで、WANからLANに転送されるバーストパケットのLAN内でのバッファあふれによる廃棄を防ぐことができる。
なお、オンデマンドで品質保証制御を行うネットワーク(オンデマンド品質制御ネットワーク)では、パケット転送装置を動作させた状態でキュー長を変更する必要がある。しかし、個別キューと共有キューを使用するパケット転送装置において、あるキューの最小キュー長を変更した場合に、共有キューバッファに記憶されるデータ数が変化して正常に動作しなくなるおそれがある。たとえば、最小キュー長が10で、現在のキュー長が12である場合、2キュー長分のジョブ情報は共有キューバッファ容量に割り当てられて記憶されている。この最小キュー長を15に増加させると、現在のキュー長が15より小さくなるので、上述の2キュー長分のジョブ情報は、このキューの最小キュー長分のキューバッファ容量に割り当てられることになる。2キュー分の共有バッファ量のデクリメント処理が行われなくなり、実際には共有バッファ領域を使っていなくても2キュー分の共有バッファが使用しているように見える。その結果、共有キューバッファ容量に割り当てられたジョブ情報数が2減少する。この際に、共有キューバッファ容量に割り当てられたジョブ情報数を記憶するレジスタ(共有キューバッファ量レジスタ323)から2を減算する処理を行わないと、実際に記憶するジョブ情報数よりも2少ない状態で共有キューバッファ量レジスタの値が最大容量を示す。すると、実際にはまだジョブ情報を記憶できるにもかかわらず、キュー登録部312はジョブ情報を廃棄することになる。
そこで、キュー登録部312が共有バッファ補正量設定機能と、キュー長バックアップ表示機能を追加する。共有バッファ補正量設定機能は、動作中の共有キューバッファ量に対して指定された値を加減算するための機能である。具体的には、キュー登録部312が共有キューバッファ量レジスタ323からキューバッファ量を読み出し、指定された加減算を行ったキューバッファ量を共有キューバッファ量レジスタ323に書き込む。共有キューバッファ量の変更は必ずキュー登録部312が行うので、この読出しから書き込みまでの間、共有キューバッファ量レジスタ323の値は一定に保たれている。
これによりたとえば、パケットキューイング装置1を制御するCPUが共有キューバッファ量を変更する際に、現在のキューバッファ量をパケットキューイング装置1からCPUに入力し、CPUが加減算を行ってパケットキューイング装置1に入力し戻す必要がない。また、加減算中のキューバッファ量の変化を止める必要もなくなり動的な設定が可能となる。また、キュー長バックアップ表示機能は、各キューの設定値(最小キュー長など)を変更したときのキュー長を記憶しておく機能およびレジスタである。具体的には、キュー登録部は変更を行う際にキュー長レジスタからキュー長を読み出し、内部の変更時キュー長レジスタ(不図示)に記憶する。この場合も、キュー長レジスタの値は必ずキュー登録部312が変更するので、変更から読み出しまでの間、キュー長レジスタの値は一定に保たれている。これにより、先の共有キューバッファの説明と同様にシステムを停止させることなく、値を設定したときのキュー長を知ることが出来る。
図12は、キュー登録部312が、あるキューの最小キュー長を減少させる処理手順を示すフローチャートである。
キュー登録部312は、例えば外部のCPUからの指示に従って処理を開始する。
ステップS101において、キュー登録部312は、変更対象のキューのキュー情報管理部313−1〜Nから、最小キュー長を読み出す。以下、読み出した最小キュー長をold_sizeで示す。また、キュー登録部312は、変更対象のキューの最小キュー長レジスタに、変更後の最小キュー長new_sizeを書き込む。
ステップS102において、キュー登録部312は、変更対象のキューのキュー情報管理部313−1〜Nから、キュー長変更処理時点におけるキュー長を読み出す。以下、読み出したキュー長をLで示す。
ステップS103において、キュー登録部312は、Lがnew_size以下か否かを判断する。Lがnew_size以下の場合(ステップS103:Yes)は、ステップS107に移る。そうでない場合(ステップS103:No)は、ステップS104に移る。
ステップS104において、キュー登録部312は、new_sizeがL未満かつLがold_size以下か否かを判断する。new_sizeがL未満かつLがold_size以下の場合(ステップS104:Yes)は、ステップS106に移る。そうでない場合(ステップS104:No)は、ステップS105に移る。
ステップS105において、キュー登録部312は、最小キュー長の減少分(old_size−new_size)を共有バッファ量レジスタ323の共有バッファ量から減算する。
ステップS106において、キュー登録部312は、L−new_sizeを共有バッファ量レジスタ323の共有バッファ量から減算する。
ステップS107において、キュー登録部312は、最小キュー長の減少分(old_size−new_size)を最大共有バッファ量レジスタ322の最大共有バッファ量に加算する。その後キュー登録部312は最小キュー長を減少させる処理を終了する。
図13は、キュー登録部312が、あるキューの最小キュー長を増加させる処理手順を示すフローチャートである。
キュー登録部312は、例えば外部のCPUからの指示に従って処理を開始する。
ステップS121において、キュー登録部312は、変更対象のキューのキュー情報管理部313−1〜Nから、最小キュー長old_sizeを読み出す。また、キュー登録部312は、最大共有バッファ量レジスタ322の最大共有バッファ量から最小キュー長の増加分(new_size−old_size)を減算する。ここで、new_sizeは変更後の最小キュー長である。
ステップ122において、キュー登録部312は、変更対象のキューの最小キュー長レジスタに、変更後の最小キュー長new_sizeを書き込む。
ステップS123において、キュー登録部312は、キュー情報管理部313−1〜Nから、キュー長変更処理時点におけるキュー長を読み出す。以下、読み出したキュー長をLで示す。
ステップS124において、キュー登録部312は、Lがold_size以下か否かを判断する。Lがold_size以下の場合(ステップS124:Yes)は、最小キュー長を増加させる処理を終了する。そうでない場合(ステップS124:No)は、ステップS125に移る。
ステップS125において、キュー登録部312は、old_sizeがL未満かつLがnew_size以下か否かを判断する。old_sizeがL未満かつLがnew_size以下の場合(ステップS125:Yes)は、ステップS127に移る。そうでない場合(ステップS125:No)は、ステップS126に移る。
ステップS126において、キュー登録部312は、最小キュー長の増加分(new_size−old_size)を共有バッファ量レジスタ323の共有バッファ量に加算する。その後、キュー登録部312は、最小キュー長を増加させる処理を終了する。
ステップS127において、キュー登録部312は、L−old_sizeを共有バッファ量レジスタ323の共有バッファ量に加算する。その後、キュー登録部312は、最小キュー長を増加させる処理を終了する。
以上のように、変更前の最小キュー長よりもキュー長が短くかつ変更後の最小キュー長よりもキュー長が短い場合は、共有キューバッファ量の更新不要である。最小キュー長を増加させる場合は、空き共有キューバッファ量が減少する場合があるので、その減少分を共有キューバッファ量レジスタ323が記憶する共有キューバッファ量から減算することで空き共有キューバッファ量を増加させる。一方、最小キュー長を減少させる場合は、空き共有キューバッファ量が増加する場合があるので、その増加分を共有キューバッファ量レジスタ323が記憶する共有キューバッファ量に加算することで空き共有バッファ量を減少させる。
このように、個別キューバッファと共有キューバッファを用いたキューイングシステムにおいて運用中の動的なキュー長設定を行うことができる。
なお、パケットキューイング装置1の各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
本発明は、データ通信に用いて好適である。
1 パケットキューイング装置
11 WAN側受信部
19 外部バッファ書き込み部
61 外部バッファ記憶部
22 外部バッファ読み出し部
26 WAN側送信部
41−1〜4 LAN側受信部
49 内部バッファ書き込み部
50 内部バッファ記憶部
52 内部バッファ読み出し部
55 LAN−WAN間FIFO部
56−1〜4 LAN側送信部
31 QoS制御部
311廃棄判定部
312キュー登録部
313−1〜N キュー情報管理部
314−1〜N キューコントローラ
315−1〜N 共通レジスタ群
33 パケットスケジューラ

Claims (6)

  1. パケットを受信する内部側受信部と、
    パケットを受信する外部側受信部と、
    前記パケットを記憶する内部バッファ記憶部と、
    前記パケットを記憶する外部バッファ記憶部と、
    前記内部側受信部が受信した前記パケットを前記内部バッファ記憶部に書き込む内部バッファ書き込み部と、
    前記外部側受信部が受信した前記パケットを前記外部バッファ記憶部に書き込む外部バッファ書き込み部と、
    前記パケットの送信先に対応して、前記送信先に送信される一連の前記パケットの前記内部バッファ記憶部又は前記外部バッファ記憶部における記憶位置を表す記憶位置情報を記憶するキューと、
    前記内部バッファ記憶部又は前記外部バッファ記憶部に書き込まれた前記パケットに関し、前記記憶位置情報を前記パケットの送信先に対応する前記キューに書き込むとともに、前記キューから前記記憶位置情報を順次読み出すキュー管理部と、
    前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記内部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信するとともに、かつ、前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する内部側送信部と、
    前記キュー管理部によって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する外部側送信部と、
    を具備することを特徴とするパケットキューイング装置。
  2. 複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、
    前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、
    前記キューの各々の最大キュー長を記憶する最大キュー長レジスタと
    をさらに具備し、
    前記キュー管理部は、前記パケットの送信先に対応付けられた前記キューのキュー長が前記最小キュー長以上かつ前記最大キュー長よりも小さい場合は前記共有キューバッファの容量から前記キューの各々の前記最小キュー長として使用される容量を除いた容量に空き容量が残っていないときには前記記憶位置情報の前記キューへの書き込みを抑止し、前記キューのキュー長が前記最大キュー長以上の場合は前記記憶位置情報の前記キューへの書き込みを抑止する
    ことを特徴とする請求項1記載のパケットキューイング装置。
  3. 複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、
    前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、
    をさらに具備し、
    前記キュー管理部は、前記キューのキュー長が前記最小キュー長以上である場合には前記共有キューバッファから前記キュー用に獲得した記憶領域に前記記憶位置情報を書き込むとともに、外部からの指示情報に基づいて前記最小キュー長レジスタに記憶されている前記最小キュー長を更新する、
    ことを特徴とする請求項1記載のパケットキューイング装置。
  4. パケットを記憶する内部バッファ記憶部と、
    パケットを記憶する外部バッファ記憶部と、
    前記パケットの送信先に対応して、前記送信先に送信される一連の前記パケットの前記内部バッファ記憶部又は前記外部バッファ記憶部における記憶位置を表す記憶位置情報を記憶するキューと、
    を用い、
    パケットを受信する内部側受信ステップと、
    パケットを受信する外部側受信ステップと、
    前記内部側受信ステップにおいて受信した前記パケットを前記内部バッファ記憶部に書き込む内部バッファ書き込みステップと、
    前記外部側受信ステップにおいて受信した前記パケットを前記外部バッファ記憶部に書き込む外部バッファ書き込みステップと、
    前記内部バッファ記憶部又は前記外部バッファ記憶部に書き込まれた前記パケットに関し、前記記憶位置情報を前記パケットの送信先に対応する前記キューに書き込むとともに、前記キューから前記記憶位置情報を順次読み出すキュー管理ステップと、
    前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記内部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信するとともに、かつ、前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する内部側送信ステップと、
    前記キュー管理ステップによって前記キューから読み出された前記記憶位置情報に対応して前記外部バッファ記憶部から読み出された前記パケットを前記送信先に向け送信する外部側送信ステップと、
    を具備することを特徴とするパケットキューイング方法。
  5. 複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、
    前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、
    前記キューの各々の最大キュー長を記憶する最大キュー長レジスタと、
    を用い、
    前記キュー管理ステップは、前記パケットの送信先に対応付けられた前記キューのキュー長が前記最小キュー長以上かつ前記最大キュー長よりも小さい場合は前記共有キューバッファの容量から前記キューの各々の前記最小キュー長として使用される容量を除いた容量に空き容量が残っていないときには前記記憶位置情報の前記キューへの書き込みを抑止し、前記キューのキュー長が前記最大キュー長以上の場合は前記記憶位置情報の前記キューへの書き込みを抑止する
    ことを特徴とする請求項4記載のパケットキューイング方法。
  6. 複数の前記キュー用に所定の容量を有する記憶領域である共有キューバッファと、
    前記キューの各々の最小キュー長を記憶する最小キュー長レジスタと、
    を用い、
    前記キュー管理ステップは、前記キューのキュー長が前記最小キュー長以上である場合には前記共有キューバッファから前記キュー用に獲得した記憶領域に前記記憶位置情報を書き込むとともに、外部からの指示情報に基づいて前記最小キュー長レジスタに記憶されている前記最小キュー長を更新する
    ことを特徴とする請求項4記載のパケットキューイング方法。
JP2009173257A 2009-07-24 2009-07-24 パケットキューイング装置およびパケットキューイング方法 Active JP4769316B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009173257A JP4769316B2 (ja) 2009-07-24 2009-07-24 パケットキューイング装置およびパケットキューイング方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009173257A JP4769316B2 (ja) 2009-07-24 2009-07-24 パケットキューイング装置およびパケットキューイング方法

Publications (2)

Publication Number Publication Date
JP2011029904A JP2011029904A (ja) 2011-02-10
JP4769316B2 true JP4769316B2 (ja) 2011-09-07

Family

ID=43638132

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009173257A Active JP4769316B2 (ja) 2009-07-24 2009-07-24 パケットキューイング装置およびパケットキューイング方法

Country Status (1)

Country Link
JP (1) JP4769316B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5631850B2 (ja) * 2011-11-15 2014-11-26 富士通テレコムネットワークス株式会社 スイッチ装置

Also Published As

Publication number Publication date
JP2011029904A (ja) 2011-02-10

Similar Documents

Publication Publication Date Title
US11899596B2 (en) System and method for facilitating dynamic command management in a network interface controller (NIC)
US7953817B2 (en) System and method for supporting TCP out-of-order receive data using generic buffer
JP4394988B2 (ja) パケット読出し制御方法及び装置
US7751404B2 (en) Method, system, and computer program product for high performance bonding resequencing
US20150326509A1 (en) Header replication in accelerated tcp (transport control protocol) stack processing
US8248945B1 (en) System and method for Ethernet per priority pause packet flow control buffering
JP2006135572A (ja) ネットワーク装置におけるトラフィック制御及びその方法
WO2003067799A2 (en) System and method for packet storage and retrieval
JP5967222B2 (ja) パケット処理装置、フローエントリの配置方法及びプログラム
JP2005117206A (ja) ネットワークプロセッサアクセラレータ
CN112084136A (zh) 队列缓存管理方法、系统、存储介质、计算机设备及应用
US20090257441A1 (en) Packet forwarding apparatus and method for discarding packets
JP5473406B2 (ja) ネットワーク処理装置及びその処理方法
US20080263171A1 (en) Peripheral device that DMAS the same data to different locations in a computer
US6850999B1 (en) Coherency coverage of data across multiple packets varying in sizes
JP4769316B2 (ja) パケットキューイング装置およびパケットキューイング方法
EP3896881B1 (en) Harq data storage management method and device and harq data buffer
JP5300355B2 (ja) ネットワークプロトコル処理装置及びその処理方法
US20160085683A1 (en) Data receiving device and data receiving method
CN114401072A (zh) 一种基于hinoc协议的拆帧重排序队列的动态缓存控制方法及系统
US11063883B2 (en) End point multiplexing for efficient layer 4 switching
JP5342428B2 (ja) 通信制御装置
WO2019095942A1 (zh) 一种数据传输方法及通信设备
JP2000299686A (ja) スケジューリング装置
US9922000B2 (en) Packet buffer with dynamic bypass

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110526

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110607

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110617

R150 Certificate of patent or registration of utility model

Ref document number: 4769316

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140624

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350