JP3643827B2 - ルータ装置とその出力ポート回路及びその制御方法 - Google Patents
ルータ装置とその出力ポート回路及びその制御方法 Download PDFInfo
- Publication number
- JP3643827B2 JP3643827B2 JP2002365494A JP2002365494A JP3643827B2 JP 3643827 B2 JP3643827 B2 JP 3643827B2 JP 2002365494 A JP2002365494 A JP 2002365494A JP 2002365494 A JP2002365494 A JP 2002365494A JP 3643827 B2 JP3643827 B2 JP 3643827B2
- Authority
- JP
- Japan
- Prior art keywords
- flow
- packet
- class
- output port
- port circuit
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/205—Quality of Service based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Description
【発明の属する技術分野】
本発明は、例えばインターネットなどのパケット交換網から入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置とその出力ポート回路及びその制御方法に関し、特に、当該出力ポート回路内のバッファメモリに対する格納及び読み出しを制御するルータ装置の出力ポート回路及びその制御方法に関する。
【0002】
【従来の技術】
近年、高性能コンピュータが、研究機関や企業のみならず、一般家庭まで普及しはじめ、新たな情報機器としての機能を発揮しはじめたことにより、WWWなどのネットワークアプリケーションの利用が飛躍的に増大し、インターネット及び/又はイントラネットでのトラヒックが指数関数的に急増している。音声のトラヒックをインターネットに統合する動き、すなわちVoIP(Voice over IP)が本格的に始動しつつあり、今後ビデオのような一定の転送レートをもつストリーム型トラヒックや高速なデータ転送など異なる通信品質を要求する様々な形態のトラヒックの混在が予想される。
【0003】
それに伴いDiff−Serv(差別化されたサービス)やMPLS(マルチプロトコル・ラベル・スイッチング)といった技術が提唱され、普及しつつある。Diff−Servは、異なる属性を持つトラヒックに異なるサービスクラスを定義し、それに見合ったサービスの提供をインターネットルータに要求している。またMPLSはパケット転送を高速化する技術であるが、差別化サービスを実現するため、そのMPLSパケットのヘッダにはCoS(サービスクラス)フィールドが設けられている。このような状況下で多種多様な品質を保証するQoS(サービス品質)制御機構を実現するには、現在の通信事情ではルータ装置などの中継装置に制御機能を具備することが現実的である。さらに、近年のネットワークの高速化に伴い、ルータ装置において上記QoS制御機構を高速に動作させることが必要不可欠となってきた。
【0004】
上記のようなQoSを保証するための機構やクラス別優先制御機構を備えるために考えられる技術の1つとして、バッファメモリ読み出しスケジューリングの研究が盛んに行われている。例えば、バッファメモリを入出力ポートそれぞれに配置する入出力バッファ型スイッチは、重み付け均等キューイング(WFQ)や重み付けられたラウンドロビン(WRR)等のバッファメモリ読み出しスケジューリング規律によって、特定コネクションによる出力回線の恒常的な占有という問題点を改善する。しかしながら、これらのスケジューリング規律だけでは、バッファメモリ高負荷時に到着する高優先トラヒックのパケットを確実に収容することができず、十分なQoS保証を提供するのは困難である。また、ルータ装置のインターフェースカードには複数本のポートが接続されることが十分に考えられ、この場合、バッファメモリ空間も複数ポートで共有されることとなる。しかし、複数ポートを考慮したバッファメモリ管理に関しては十分な検討が行われていない。例えば、非特許文献1は、この問題を取り扱うための1つの方法を提示しており、以下この方法を従来技術という。
【0005】
【非特許文献1】
南勝也ほか,「インターネットルータにおけるクラス優先制御を考慮したフロー別バッファ管理方法」,電子情報通信学会技術研究報告,SSE99−175,IN99−138,電子情報通信学会発行,p.85−90,2000年3月。
【0006】
従来技術のバッファメモリ管理法について以下に述べる。ルータ装置は、まず、フロー毎に最低限使用可能なバッファメモリサイズ(以下、基本量という。)を論理的に確保する。バッファメモリの使用率が低い環境下では、この基本量に関わらず、実際に必要なだけのバッファメモリの記憶領域を使用することが許可される。高負荷環境に遷移しバッファメモリがフルの状態になった場合、ルータ装置は、プッシュアウト機構を適用することによってバッファメモリ中の特定のパケットを破棄する(プッシュアウトする)。さらに、従来技術の方法では、1つのバッファメモリを複数のポートで共有する環境を想定した。それに伴い、従来技術の方法では、基本量の管理を、ポート、クラス、フローの順に階層的に行い、また、スケジューリング規律として階層的にWRRを行った。さらに、従来技術の方法では、クラス別優先制御を実現するためにその帯域配分を行った。
【0007】
従来技術における基本量配分法について説明する。ルータ装置がフローを検知すると、そのフローに対して、当該ルータ装置におけるバッファメモリの基本量を割り当てる。その割り当て方法を以下に述べる。
【0008】
まず、ルータ装置は、当該ルータ装置の全バッファメモリサイズを複数ポート間で回線速度比に応じて配分する。次に、帯域保証型(BG)クラスに属するフローに対して、そのフローが属するポートに配分された基本量に関わらず、保証された帯域から演算される必要なバッファメモリ量が固定的に配分される。その他のベストエフォート型のクラスに属するフローに対しては、ポートに対する基本量から帯域保証型クラスの配分量を減算した分が、予め決定された重み係数に従って配分される。配分される基本量はフロー検知とフロー消滅に伴い変化する。つまり、実際にバッファメモリを使用しているフローの間だけで基本量が配分されることになる。
【0009】
具体的に、図47を参照して説明する。図47は、従来技術に係るバッファメモリの記憶領域を分配する方法を説明するための概略説明図である。ルータ装置は、まず、各ポートP1乃至PNに対して、全体のバッファメモリ量を出力回線速度の比に従って、それぞれバッファメモリ量p1,p2,…,pNを配分する。図47の場合、まず、ポートP1に対して基本量p1が配分される。次に、基本量p1が、そのポートP1に属するクラス間で配分される。このクラス間の配分の割合は、動的に変化する。ルータ装置が、帯域保証型クラスC2に対して、その予約量に見合った基本量を配分するためである。それ以外のクラスC1及びC0に対しては、基本量p1のうちの残りの量が、予め決められたクラスの重み係数に従って配分される。図47の場合、まず帯域保証型であるクラスC2に対して、予約される帯域から演算される必要バッファメモリ量α1が配分される。この必要バッファメモリ量は、単位時間間隔に契約分のトラヒックがバースト的に到着した場合に、それらのパケットを全て収容できる量である。その後、残りのバッファメモリ量(p1−α1)を他のクラスに対して配分する。その手順は、まず各クラスの優先度w11及びw10と、検知されているフロー数f11及びf10とを用い、クラスの重み係数としてそれらの積をバッファメモリ量(p1−α1)に適用する。図47におけるポートP1の場合、クラスC1の重み係数WC1とクラスC0の重み係数WC0とは、次式で定義される。
【0010】
【数1】
WC1=f11×w11
【数2】
WC0=f10×w10
【0011】
その重み係数の比をバッファメモリ量(p1−α1)に適用して、クラスC0及びC1の基本量が取得される。つまり、クラスC1及びC0それぞれの基本量β1及びγ1は次式で表される。
【0012】
【数3】
【数4】
【0013】
一方、バッファメモリがフルの状態時にパケットが到着すると、余分なパケットを廃棄するためのプッシュアウト機構として、ルータ装置は、以下のような操作を行う。
【0014】
基本量を超えてバッファメモリを使用しているフローに属するパケットが新たに到着した場合は、そのままそのパケットは破棄される。バッファメモリの使用量が基本量に満たないフローに属するパケットが到着した場合、プッシュアウト機構を採用することにより、バッファメモリに到着パケットを格納することが許可される。プッシュアウト対象パケットのサーチが終了すると、当該プッシュアウト対象パケットが存在するバッファメモリ位置上に到着パケットが上書きされ、上書きされたパケット(すなわちプッシュアウト対象パケット)は廃棄される。プッシュアウト対象パケットをサーチした結果、バッファメモリを基本量以上使用しているフローが存在しない場合は、到着パケットは廃棄される。
【0015】
従来技術では、基本量を階層的に配分しているので、プッシュアウト対象フローは以下の手順で検索される。ルータ装置は、まず、到着パケットの属するクラスが基本量を超えているか否かを調べる。超えている場合は、そのクラス内で最も超過使用量の大きいフローがプッシュアウトの対象となる。超えていない場合、ルータ装置は、到着パケットの属するポート単位での超過使用量を調べる。使用量が基本量を超過しているクラスが存在すれば、ルータ装置は、そのポート内で最も超過使用量の大きいクラスを決定し、次いで、そのクラス内で最も超過使用量の大きいフローを決定するという順に検索を行う。どのクラスの使用量も基本量を超過していなければ、ルータ装置は、最も超過使用量の大きいポート内で同様の検索を行う。
【0016】
以上の方法によってプッシュアウト対象フローが検索され、到着パケットはそのフローの先頭パケットに対して上書きが許可される。この方法について、図48を参照して具体的に説明する。図48は、図47で分配されたバッファメモリの記憶領域を超過して使用しているクラスのパケットを廃棄する方法を説明するための概略説明図であり、図48(a)は同一ポートの異なるクラスのパケットを廃棄する場合を示す図であり、図48(b)は異なるポートのクラスのパケットを廃棄する場合を示す図である。
【0017】
図48において、ポートP1乃至P3と各ポート内のクラスC1乃至C3とを囲む実線の円は、各ポート及び各クラスの基本量を示し、点線の円は各ポート及び各クラスの実際の使用量を示している。図48(a)の場合において、到着パケットの属するフローが基本量を超えて使用していないと仮定する。その時到着フローの属するクラスC3の超過使用量が調べられることになる。図48(a)の場合、ポートP1内のクラスC3の使用量(点線の円で表す。)はその基本量(実線の円で表す。)を超過していないので、自分の属するポート単位の超過使用量を調べることとなる。ポートP1はその基本量を超過して使用しているので、プッシュアウトの対象となるクラスはポートP1に属するクラスで最も超過使用量の大きいクラスC2が対象となる。この方法ではフロー単位の制御を行うので、プッシュアウト対象パケットはクラスC2に属するクラスのフローの中で最も超過使用量の大きいフローの先頭パケットとなる。
【0018】
また、図48(b)の場合に図48(a)と同様の検索を行うと、到着したフローの属するポートP1はその基本量(実線の円で表す。)を超えてバッファメモリを使用していない。そのときは、最も超過使用量の大きいポートP3がプッシュアウトの対象となり、ルータ装置は、そのポートに属するフローに対して上記と同様の検索を行うことになる。その結果、ポートP3中で最も超過使用量が大きいクラスC1がプッシュアウトの対象になる。
【0019】
次いで、従来技術に係るスケジューリング規律及び帯域配分法について説明する。図49は、従来技術において、送信に利用可能な全帯域幅をポート、クラス及びフローで階層的に分配する方法を説明するための概略説明図である。従来技術の方法では、バッファメモリに格納されたパケットの読み出しスケジューリング規律として、ポート、クラス、フローの順に階層的に重み付けラウンドロビン(WRR)が実行される。
【0020】
WRRにおいて、各クラスに対する重み係数を決める必要がある。その重み係数の決定法を以下に述べる。まず、第1階層である、ポートに対するWRRでは、そのポートの出力回線速度の比が重み係数とされる。第2階層である、クラスに対するWRRでは、ルータ装置は、始めに、帯域保証型フローに対して保証された帯域を全リンク容量から割り当てる。帯域保証型フローに割り当てた後の残りのリンク容量が、帯域保証型クラス以外のクラスの間で配分される。その配分比として、基本量配分時に使用したクラス比が使用される。それによって演算された帯域配分量を簡単な整数比に換算することで重み係数が得られる。第3階層である、フローに対するWRRでは、帯域保証型クラス内フローに関しては契約帯域の比がそのまま重み係数として使用される。他のクラスに関してはフロー毎の公平性を考慮に入れ、全てのフローに対して重み係数「1」が与えられる。つまり、帯域保証型クラス以外の低優先度クラス内のフローに対するスケジューリング規律にはラウンドロビン(RR)が使用される。
【0021】
【発明が解決しようとする課題】
以上説明したように、従来技術においては、到着パケットのためのバッファメモリの記憶領域を、パケットが属するクラス単位で管理する場合、ルータ装置が不確定な性能を示すので、バッファメモリの記憶領域を管理するためのより適切な処理単位を確立する必要がある。
【0022】
上記の技術課題に対して、フロー毎の適切なバッファ管理機構を含めたQoS制御機構が実装された高性能ルータ装置を実現する必要がある。特に、ルータ装置のバッファメモリが高負荷時においても、各クラス及び各フローに見合ったサービスを提供し、高度なQoS保証を実現する必要がある。
【0023】
さらに、ルータ装置のバッファメモリ管理を実際に実行するためには、到着パケットがどのバッファメモリ位置に格納されたかを管理する必要がある。ここで、インターネットを伝送されるパケットは可変長であるということが問題となる。バッファメモリ内ではパケット格納開始位置とパケット長の管理を行う必要があるが、可変長パケットの格納及び送信を繰り返すと、バッファメモリ内で空き領域が離散してしまい、バッファメモリ並びにパケットの管理が複雑になる。
【0024】
本発明の目的は以上の問題点を解決し、クラスに見合ったサービスを提供できるとともに、特定のフローによるバッファメモリの占有を解消でき、しかも出力ポート回路内のバッファメモリに対するパケットの入出力の処理を高速化することができるルータ装置とその出力ポート回路及びその制御方法を提供することにある。
【0025】
【課題を解決するための手段】
第1の発明に係るルータ装置の出力ポート回路は、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
上記出力ポート回路は、
送信すべきパケットを一時的に格納する記憶手段と、
上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、
上記制御手段は、送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当てるときに、帯域保証型クラスに属するパケットの各フローに対する基本量を、当該各フローが要求するメモリサイズだけ個別に割り当てて管理する一方、ベストエフォート型クラスに属するパケットの各フローに対する基本量を、上記記憶手段全体のメモリサイズから、上記帯域保証型クラスに割り当てられた各基本量の総和を減算したメモリサイズを一括して割り当てて管理することを特徴とする。
【0026】
上記ルータ装置の出力ポート回路において、上記制御手段は、ベストエフォート型クラス毎に、優先度とそのクラスに属するフローの本数との積を計算し、それらの積を、ベストエフォート型クラスの個数について総和を計算することにより、ベストエフォート型クラスにおける総優先度を計算し、受信されたパケットのフローが属するクラスの優先度を、上記計算した総優先度で除算することにより、当該受信されたパケットに対する基本量配分割合を計算し、上記計算した基本量配分割合とベストエフォート型クラス用基本量との積を計算することにより当該受信されたパケットのフローの基本量を計算することを特徴とする。
【0027】
第2の発明に係るルータ装置の出力ポート回路は、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
上記出力ポート回路は、
送信すべきパケットを一時的に格納する記憶手段と、
上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、
上記制御手段は、送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当て、各フローの記憶手段における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、上記記憶手段を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理し、
上記制御手段は、所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新することを特徴とする。
【0028】
上記ルータ装置の出力ポート回路において、上記制御手段は、上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新することを特徴とする。
【0029】
また、上記ルータ装置の出力ポート回路において、上記制御手段は、各フローの記憶手段における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、上記記憶手段を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理し、
上記制御手段は、所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新することを特徴とする。
【0030】
さらに、上記ルータ装置の出力ポート回路において、上記制御手段は、上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新することを特徴とする。
【0031】
第3の発明に係るルータ装置の出力ポート回路は、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
上記出力ポート回路は、
送信すべきパケットを一時的に格納する記憶手段と、
上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、
上記制御手段は、複数のフローが上記記憶手段に格納されているときの各フローを送信する順序を管理するために、各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する第1の管理テーブルをさらに備え、送信すべき新たなフローが上記記憶手段に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように上記第1の管理テーブルを更新することを特徴とする。
【0032】
上記ルータ装置の出力ポート回路において、上記制御手段は、複数のフローが上記記憶手段に格納されているときの各フローを送信する順序を管理するために、各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する第1の管理テーブルをさらに備え、送信すべき新たなフローが上記記憶手段に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように上記第1の管理テーブルを更新することを特徴とする。
【0033】
第4の発明に係るルータ装置の出力ポート回路は、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
上記出力ポート回路は、
送信すべきパケットを一時的に格納する記憶手段と、
上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、
上記記憶手段は所定のブロック長の複数のブロックに分割され、上記制御手段は、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する第2の管理テーブルをさらに備え、各フローのパケットの連結状態を管理することを特徴とする。
【0034】
上記ルータ装置の出力ポート回路において、上記記憶手段は所定のブロック長の複数のブロックに分割され、上記制御手段は、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する第2の管理テーブルをさらに備え、各フローのパケットの連結状態を管理することを特徴とする。
【0035】
第5の発明に係るルータ装置は、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置において、上記ルータ装置の出力ポート回路を備えたことを特徴とする。
【0036】
第6の発明に係るルータ装置用出力ポート回路の制御方法は、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路の制御方法において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
送信すべきパケットを一時的に格納する記憶手段への上記パケットの格納及び読み出しを制御するステップと、
送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当てるときに、帯域保証型クラスに属するパケットの各フローに対する基本量を、当該各フローが要求するメモリサイズだけ個別に割り当てて管理する一方、ベストエフォート型クラスに属するパケットの各フローに対する基本量を、上記記憶手段全体のメモリサイズから、上記帯域保証型クラスに割り当てられた各基本量の総和を減算したメモリサイズを一括して割り当てて管理するステップを含むことを特徴とする。
【0037】
上記ルータ装置用出力ポート回路の制御方法において、ベストエフォート型クラス毎に、優先度とそのクラスに属するフローの本数との積を計算し、それらの積を、ベストエフォート型クラスの個数について総和を計算することにより、ベストエフォート型クラスにおける総優先度を計算し、受信されたパケットのフローが属するクラスの優先度を、上記計算した総優先度で除算することにより、当該受信されたパケットに対する基本量配分割合を計算し、上記計算した基本量配分割合とベストエフォート型クラス用基本量との積を計算することにより当該受信されたパケットのフローの基本量を計算するステップをさらに含むことを特徴とする。
【0038】
第7の発明に係るルータ装置用出力ポート回路の制御方法は、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路の制御方法において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
送信すべきパケットを一時的に格納する記憶手段への上記パケットの格納及び読み出しを制御するステップと、
送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当て、各フローの記憶手段における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、上記記憶手段を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理するステップと、
所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新するステップとを含むことを特徴とする。
【0039】
上記ルータ装置用出力ポート回路の制御方法において、上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新するステップをさらに含むことを特徴とする。
【0040】
また、上記ルータ装置用出力ポート回路の制御方法において、各フローの記憶手段における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、上記記憶手段を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理するステップと、
所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新するステップとをさらに含むことを特徴とする。
【0041】
さらに、上記ルータ装置用出力ポート回路の制御方法において、上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新するステップをさらに含むことを特徴とする。
【0042】
第8の発明に係るルータ装置用出力ポート回路の制御方法は、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路の制御方法において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
送信すべきパケットを一時的に格納する記憶手段への上記パケットの格納及び読み出しを制御するステップと、
各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する第1の管理テーブルを用いて、複数のフローが上記記憶手段に格納されているときの各フローを送信する順序を管理し、送信すべき新たなフローが上記記憶手段に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように上記第1の管理テーブルを更新するステップを含むことを特徴とする。
【0043】
上記ルータ装置用出力ポート回路の制御方法において、各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する第1の管理テーブルを用いて、複数のフローが上記記憶手段に格納されているときの各フローを送信する順序を管理し、送信すべき新たなフローが上記記憶手段に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように上記第1の管理テーブルを更新するステップをさらに含むことを特徴とする。
【0044】
第9の発明に係るルータ装置用出力ポート回路の制御方法は、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路の制御方法において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
送信すべきパケットを一時的に格納する記憶手段への上記パケットの格納及び読み出しを制御するステップと、
上記記憶手段は所定のブロック長の複数のブロックに分割され、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する第2の管理テーブルを用いて、各フローのパケットの連結状態を管理するステップを含むことを特徴とする。
【0045】
上記ルータ装置用出力ポート回路の制御方法において、上記記憶手段は所定のブロック長の複数のブロックに分割され、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する第2の管理テーブルを用いて、各フローのパケットの連結状態を管理するステップをさらに含むことを特徴とする。
【0046】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態について説明する。
【0047】
図1は、本発明の実施形態に係るルータ装置の構成を示すブロック図である。図1のルータ装置は、パケット交換網であるインターネットのためのルータ装置であり、当該ルータ装置は、複数N個の入力ポート回路1−1乃至1−N(総称して、入力ポート回路1という。)と、各入力ポート回路1に接続されたスイッチファブリック回路2と、スイッチファブリック回路2にそれぞれ接続された複数N個の出力ポート3−1乃至3−N(総称して、出力ポート3という。)と、スイッチファブリック回路2を制御するルーティングプロセッサ4とを備えて構成される。当該ルータ装置は、入力ポート回路1を介して受信されたパケットをスイッチファブリック回路2により各出力ポート回路3を介して各隣接するノードにルーティングして送信し、ここで、連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、出力ポート回路3は、特に、送信すべきパケットを一時的に格納するバッファメモリ13と、バッファメモリ13へのパケットの格納及び読み出しを制御する出力ポートコントローラ20とを備えたことを特徴としている。
【0048】
図1において、入力ポート回路1は、入力パケットがまず到着する回路であり、以下の3つの機能を有する。まず第1に、各到着パケットに対し最長プリフィックス一致(LPM)検索を行うことである。LPM検索とはIPヘッダに含まれる目的地アドレスから次ホップを決定するために行われるテーブル検索処理である。第2に、QoSを保証するために、パケットをあらかじめ定義されたサービスクラスに分類することである。第3に、データリンクレイヤのプロトコル処理を実行する。そのプロトコルとして、SLIP(シリアル回線インターネットプロトコル)、PPP(ポイント・ツー・ポイント・プロトコル)、PPTP(ポイント・ツー・ポイント・転送プロトコル)などが利用可能である。
【0049】
図1の各入力ポート回路1においては、到着パケットは高速パスコントローラ1aに入力され、到着パケットのうち高速で処理する必要があるクラスのパケットは高速パスコントローラ1aによってすぐに、パケットを時間分割多重化するマルチプレクサ1dを介してスイッチファブリック回路2に出力される。一方、到着パケットのうち高速で処理する必要がないクラスのパケットは低速パス用のキューメモリ1bに分岐して出力され、キューメモリ1bはパケットを一時的に待ち行列として格納する。次いで、低速コントローラ1cは、キューメモリ1bに格納されたパケットを順次読み出してマルチプレクサ1dを介してスイッチファブリック回路2に出力する。
【0050】
次いで、スイッチファブリック回路2は、各入力ポート回路1から入力されるパケットを、ルーチングプロセッサ4の制御により所定のルーチィング規準を用いて、各隣接するノードにリンクを介して接続された各出力ポート回路3に出力する。すなわち、スイッチファブリック回路2は入力ポート回路1と出力ポート回路3を接続する機能を有する。スイッチファブリック回路2の技術として現在使用されているものに、バス型、クロスバ型、共有メモリ型があって、これらのうちから適宜に選択することができる。ルーティングプロセッサ4は、フォワーディングテーブルの検索、ルーティングプロトコルの実装、そしてルータ装置の設定や管理のためのソフトウェア実行を行っている。また、ルーティングプロセッサ4は、フォワーディングテーブルにエントリされていないあて先アドレスをもったパケットの処理などを実行する。
【0051】
各出力ポート回路3は、ルート検索により入力ポート回路1からスイッチファブリック回路2を介して転送されてきたパケットをリンクに出力するまでの間一時的に格納し、リンク出力に関するスケジューリングを行う機能を有する。出力ポート回路3には、優先権やQoS保証をサポートするための洗練されたスケジューリングアルゴリズムが実装されている。そのスケジューリングアルゴリズムとして、例えば当業者に公知のWRR(重み付けラウンドロビン)や、WFQ(重み付け均等キューイング)が利用可能である。
【0052】
図1に示すように、各出力ポート回路3は、ヘッダ情報取得部11と、一時的パケット格納メモリ12と、バッファメモリ13と、パケット送信部14と、出力ポートコントローラ20とを備えて構成される。出力ポート回路3は、特に、複数のフローキューメモリ13a,13bを備えたバッファメモリ13における到着パケットの入出力を制御するための出力ポートコントローラ20を備えたことを特徴としている。
【0053】
図1の出力ポート回路3において、ヘッダ情報取得部11は、まず、スイッチファブリック回路2から到着したパケットのヘッダ情報を読み取り、読み取ったヘッダ情報の信号を出力ポートコントローラ20に出力するとともに、到着パケットを、一時的パケット格納メモリ12に一時的に記憶させる。出力ポートコントローラ20は、パケットが到着した場合、到着パケットのヘッダ情報の信号のみを入力データとしてバッファメモリ13における到着パケットの格納場所を演算し、上記格納場所を示す信号を一時的パケット格納メモリ12に出力する。また、パケットを送信する場合は、出力ポートコントローラ20は、パケット送信部14からサービス要求信号(すなわち、送信要求信号)を入力されることによって、バッファメモリ13のどの位置のパケットを送信すべきかを演算し、この演算結果をパケット送信部14に出力する。一時的パケット格納メモリ12は、出力ポートコントローラ20から格納場所を示す信号が入力されると、当該一時的パケット格納メモリ12からパケットを読み出して、バッファメモリ13内の演算された格納場所に当該パケットを格納する。バッファメモリ13はパケットを格納しておくためのメモリである。ここで、到着パケットは、バッファメモリ13に格納されるとき、当該パケットが属する異なるフロー毎に区別して格納されることが可能であり、図1では、バッファメモリ13内のフローキューメモリ13a,13b,…に格納されるものとして仮想的に図示している。一時的パケット格納メモリ12は、出力ポートコントローラ20からの格納場所の信号に基づいてフロー毎に、到着パケットをフローに対応したフローキューメモリ13a,13b,…に格納する。
【0054】
本実施形態において、バッファメモリ13は、図3を参照して詳細後述するように、予め複数のブロックに細分化され、任意のフローを格納するために任意のブロックが割り当てが可能である。パケット送信部14は、出力ポートコントローラ20に対してサービス要求信号を出力し、これに応答して出力ポートコントローラ20によって演算された、送信すべきパケットの格納場所情報に基づいて、バッファメモリ13よりパケットを読み出し、そのパケットをリンクを介して隣接ノードに送信する。
【0055】
以上のように構成されたルータ装置において、QoS保証を実現するためには、トラヒックが集中する出力ポート回路3内のバッファメモリ(図2を参照)においてQoS制御機構を実装することが現実的である。そこで、本実施形態は、基本量配分、プッシュアウト機構及び階層的WRRの3つの機能の連携により動作することを特徴とするルータ装置の出力ポート回路を提供する。本実施形態は、特に、フロー管理によるクラス別品質制御方法に係る処理を実行可能なルータ装置の出力ポート回路を提供することを特徴している。本実施形態では、管理方法の実装容易性を考慮して、フローを「出力ポート回路3のバッファメモリ内に存在する同種のパケット群」と定義する。つまり、出力ポート回路3は、バッファメモリ13内でそのフローに属する種類のパケットが一時的にでもゼロになると、当該フローが消滅したと認識する。以上より、管理可能なフロー数は多くともバッファメモリ領域の大きさに等しくなり、実装が容易となる。また、タイマを用いる必要もなくなる点から有利であると言える。以下、上記3つの機能の詳細を具体例を用いて説明する。
【0056】
図2は、図1の出力ポート回路3の詳細な構成を示すブロック図である。以下、バッファメモリ13を管理するための、出力ポートコントローラ20内の各機能ブロックについて説明する。出力ポートコントローラ20内で計算処理部として機能する部分は、主要な部分として、プッシュアウト対象ブロック決定部15と、格納ブロック決定部16と、格納場所決定部17と、スケジューラ18とを備えている。また、出力ポートコントローラ20は、それぞれ異なるデータを格納管理して処理するための、空き領域管理部21と、格納場所管理部22と、フロー管理部23と、クラス管理部24と、ポート管理部25と、前サービスフロー管理部26と、前サービスクラス管理部27と、WRRフロー順管理部28と、WRRクラス順管理部29と、WRRポート順管理部30とをさらに備えている。
【0057】
パケットが到着すると、到着パケットは、ヘッダ情報取得部11を介して一時的パケット格納メモリ12に一時的に格納されるとともに、到着パケットのヘッダ情報がヘッダ情報取得部11で取得されて、この取得されたヘッダ情報の信号のみが、プッシュアウト対象ブロック決定部15、格納ブロック決定部16及び格納場所決定部17に出力される。プッシュアウト対象ブロック決定部15は、このヘッダ情報と、フロー管理部23及びクラス管理部24に記憶されたデータとに基づいて、廃棄されてもよいフロー(以下、プッシュアウト対象フローという。)に属するパケットを格納したバッファメモリ13内のブロック(以下、プッシュアウト対象ブロックという。)のブロック番号を、格納場所決定部17に出力する。また、格納ブロック決定部16は、ヘッダ情報と空き領域管理部21に記憶されたデータとに基づいて、到着パケットを格納するブロックを決定する。さらに、格納場所決定部17は、プッシュアウト対象ブロック決定部15と格納ブロック決定部16から入力される信号に基づいて、到着パケットの格納又は廃棄を命令する信号を一時的パケット格納メモリ12に出力するとともに、各管理部21乃至30内のデータを更新する。
【0058】
一時的パケット格納メモリ12は、格納場所決定部17からの信号に基づいて到着パケットをバッファメモリ13に書き込むか、又は廃棄する。一時的パケット格納メモリ12は、到着パケットをバッファメモリ13に書き込む場合、プッシュアウト対象フローの先頭パケットを格納したブロックに到着パケットを書き込むが、ここでフローの先頭パケットを格納したブロックを選択する理由は、TCP等の廃棄を検知するプロトコルを使用している場合に、パケット廃棄の早期検出につながる利点があるからである。
【0059】
パケットサービスフェーズになると、パケット送信部14は、スケジューラ18にサービス要求信号を送信することによってスケジューラ18を起動し、次いで、スケジューラ18は各管理部21乃至30を参照して、到着パケットの格納場所及び送信パケットを決定し、この格納場所及び送信パケットについてのデータをパケット送信部14に戻す。パケット送信部14は、スケジューラ18が指定したアドレスに格納されているデータをバッファメモリ13から読み出し、ブロックに分割されていたパケットを復元した後、復元されたパケットをリンクに転送する。
【0060】
実施形態において、出力ポートコントローラ20は、好ましくは、1個の集積回路チップで構成され、パケット到着における入力信号(すなわちヘッダ情報の信号)と、パケット送信における入力信号(すなわちサービス要求信号)とを受信し、それに応答してブロック番号を決定して出力する。このとき、すべての管理部21乃至30は出力ポートコントローラ20内に実装可能である。
【0061】
図3は、実施形態に係るバッファメモリ13のブロック化を説明するための概略説明図である。図3において、図3(a)は図1の出力ポート回路3への到着パケットを示す図であり、図3(b)は図2のバッファメモリ13のメモリ空間を示す図であり、図3(c)は出力ポート回路3からの送信パケットを示す図である。
【0062】
本実施形態のルータ装置において、出力ポートコントローラ20は、パケットが出力ポート回路3内のどのバッファメモリ位置に格納されたかを管理するときに、バッファメモリ13を、図3(b)に示すように予め複数の固定サイズLのブロックに細分化して格納管理する。バッファメモリ13内のアドレスは、細分化されたブロックのブロック番号として管理される。到着パケットはこのブロックのサイズ(すなわち、固定サイズL)に分割して格納される。ブロックのサイズに満たない部分には図3(a)に示すように空データを付与し、他のデータを格納することを行わない。付与された空データは、図3(c)に示すように送信時に除去される。以上のように格納管理することにより、格納場所管理部22は、バッファメモリ13内のブロック数に等しい行数を有する管理テーブルを用意するだけでよい。また、バッファメモリ13の空き領域管理もブロック毎の管理となるため、パケット到着時の空きブロック検索処理も高速化することができる。
【0063】
このようにバッファメモリ13をブロック化することによって、本実施形態に係るルータ装置は、インターネットを流れる可変長パケットを処理するときに性能低下するような状況が防止される。出力ポートコントローラ20は、バッファメモリ13のパケットの格納状況を管理するために、各パケットを格納するブロック番号(ブロックの位置を表す。)と、複数個のパケットにてなるフローを記憶する複数のブロック間の連結状態とを示すための管理テーブルを備えたことを特徴としている。
【0064】
以下、図2の出力ポートコントローラ20がバッファメモリ13を管理するために必要な管理テーブルの概要について説明する。
【0065】
図4は、図2の空き領域管理部21によって管理される空き領域管理テーブルT1の概略構成の一例を示す図であり、図5は、図4の空き領域管理テーブルT1を用いた空き領域管理を説明するための概略説明図である。
【0066】
図4に示すように、空き領域管理テーブルT1は、バッファメモリ13内のあるブロックのブロック番号に対する次のブロック番号を格納し、ここで、次のブロック番号とは、空きブロックの連結状態を示す。図4の例では、ブロック番号2、3及び5をそれぞれ有するブロック2、3及び5は空きブロックである。図4の空き領域管理テーブルT1において、ブロック番号1に対応する次のブロック番号は「−1」を示している。これは、ブロック1は使用中であることを意味している。また、空き領域管理部21はまた、空き領域管理テーブルT1とは別に、先頭の空きブロック番号と最後尾の空きブロック番号とを格納して管理する。これにより、パケット到着時における空きブロック検索時には、先頭の空きブロック番号を出力することにより、また、パケット送信時には最後尾の空きブロック番号の値を変更することにより、空きブロックをリストとして格納して管理することが可能となる。
【0067】
以上に述べた空き領域のブロック管理の概略説明図を図5に示す。これは、ブロック2を先頭ブロックとし、ブロック35を最後尾ブロックとする、一連の空きブロックがバッファメモリ13内に存在する場合の例である。ただし、空き領域管理部21は、先頭ブロックのブロック番号と最後尾ブロックのブロック番号とを、空き領域管理テーブルT1とは別に格納して管理する。
【0068】
図6は、図2の格納場所管理部22によって管理される格納場所管理テーブルT2の概略構成の一例を示す図であり、図7は、図6の格納場所管理テーブルT2を用いた格納場所管理を説明するための概略説明図である。
【0069】
図6に示すように、格納場所管理テーブルT2は、各ブロック番号に対する次のブロック番号を格納し、ここで、次のブロック番号とは、各フローにおけるブロックの連結状態を示す。図6の例では、ブロック番号1、3及び8をそれぞれ有するブロック1、3及び8は、あるフローにおけるデータの到着順を示している。また、次のブロック番号の値が「−1」であるブロック(例えば、ブロック4及び8)は、当該ブロックが含まれるフロー内において当該ブロック自体が最後尾ブロックであり、その次のブロックとしてのデータが格納されていないことを示す。パケット到着時には、格納場所管理部22は、パケットの属するフローにおける最後尾ブロック番号の値を取得し、そのブロック番号に対する次のブロック番号を変更することにより、データの連結状態を管理することが可能となる。また、パケット送信時にはフローの先頭ブロック番号を取得し、そのブロック番号に対する次のブロック番号を新たなフロー先頭ブロック番号とすることによりフローの管理を行う。
【0070】
以上に述べた格納場所のブロック管理の概略説明図を図7に示す。図7の例では、ブロック1を先頭とするフローAと、ブロック2を先頭とするフローBとが図示されているが、格納場所管理部22は、ブロックを含むフローについての情報は管理せず、そのような情報(例えば、図7に示された各フローA及びBの先頭ブロック及び最後尾ブロックについての情報)は、フロー管理部23によって格納されて管理される。
【0071】
図8は、図2のフロー管理部23によって管理される帯域保証型クラスに属するフローのためのフロー管理テーブルT3の概略構成の一例を示す図であり、図9は、図8のフロー管理テーブルT3を用いた先頭ブロック及び最後尾ブロックの管理を説明するための概略説明図である。
【0072】
図8に示すように、フロー管理テーブルT3は、あるクラスに含まれる各フローの基本量、使用量、先頭ブロック番号、最後尾ブロック番号、及び優先度の5つの値を格納して管理する。まず第1に、基本量は、フローに割り当てられたバッファメモリ量を、バッファメモリ13のブロック長Lを単位として示し、そのバッファメモリ量を超えて使用しない限り、当該フローは他のフローに悪影響を及ぼしていないと判断される。各フローが帯域保証型クラスに含まれるフローであるときは、図8に示すようにフロー毎に異なる値の基本量が割り当てられる一方、各フローがベストエフォート型クラスに含まれるフローであるときは、クラスに割り当てられた基本量が、そのクラスに含まれるフローの間で等分される。次に、使用量とは、当該フローが実際に使用しているバッファメモリ量(ただし、ブロック長Lを単位とする。)を示す。先頭ブロック番号とは、当該フローにおいて最も先に到着したデータ(すなわち、このデータを含むパケットを記憶したバッファメモリ13内のブロック)を示し、当該フローのパケットがサービスされるとき、この先頭ブロック番号を有するブロックに格納されているデータが最初にバッファメモリ13より読み出される。最後尾ブロック番号とは、当該フローにおいて最も新しく到着したデータ(すなわち、このデータを含むパケットを記憶したバッファメモリ13内のブロック)を含むブロックを示し、当該フローにおいて次にデータ到着があった場合、そのデータのパケットを記憶するためのブロックは、この最後尾ブロック番号を有するブロックに対して、格納場所管理テーブルT2の次のブロック番号を用いて連結される。つまり、格納場所管理テーブルT2の更新を行うとき、最後尾ブロック番号が読み出され、格納場所管理テーブルT2の更新に使用される。最後に、優先度は、基本量を配分するときと、WRRにおいてサービス順を決定するときに用いられる値である。各フローが帯域保証型クラスに含まれるフローであるときは、図8に示すようにフロー毎に異なる値の優先度が割り当てられる一方、各フローがベストエフォート型クラスに含まれるフローであるときは、当該フローを含むクラスの優先度が当該フローの優先度として用いられる。
【0073】
以上説明した先頭ブロック管理と最後尾ブロック管理の概略説明図を図9に示す。前述したように、フロー管理テーブルT3は、各フローの先頭ブロックと最後尾ブロックとを格納して管理するために用いられ、フロー内の各ブロックの順序は格納場所管理テーブルT2を用いて管理される。
【0074】
図10は、図2のクラス管理部24によって管理されるクラス管理テーブルT4の概略構成の一例を示す図である。図10に示すように、クラス管理テーブルT4は、あるポートに含まれる各クラスの基本量、使用量、フロー数、及び優先度の4つの値を格納して管理する。基本量、使用量、優先度はフロー管理テーブルT3における値と同様である。フロー数とは、当該クラスに存在するフロー数を示し、ベストエフォート型クラスにおいてフローに対する基本量を演算する場合に使用される。
【0075】
図11は、図2のポート管理部25によって管理されるポート管理テーブルT5の概略構成の一例を示す図である。図11に示すように、ポート管理テーブルT5は、各ポートの基本量、使用量、クラス数、及び優先度を格納して管理する。ここで、クラス数とはフローが存在するクラスの数を示す。また、優先度としては、ルータ装置の出力回線速度に比例した値が格納される。
【0076】
図12は、図2のWRRフロー順管理部28によって管理されるWRRフロー順管理テーブルT6の概略構成の一例を示す図であり、図13は、図12のWRRフロー順管理テーブルT6を用いたサービスフロー順の管理を説明するための概略説明図である。
【0077】
図12に示すように、WRRフロー順管理テーブルT6は、あるフローIDに対し次にサービスすべきフローのフローIDを格納して管理する。図12の例では、フローID1、3及び4をそれぞれ有するフロー1、フロー3及びフロー4は、「フロー1→フロー3→フロー4→フロー1…」の順番で繰り返しサービスされることになる。また、フロー2の次にサービスされるフローのIDは5であり、フロー2及び5は、フロー1、3及び4とは違うクラスに属するフローであるといえる。同様のテーブルをクラス、ポートに対して用意することにより、階層的WRRを実現することが可能となる。すなわち、複数のクラスをサービスする順序を決定するためのWRRクラス順管理テーブルがWRRクラス順管理部29に提供され、複数のポートをサービスする順序を決定するためのWRRポート順管理テーブルがWRRポート順管理部30に提供される。
【0078】
WRRフロー順管理テーブルT6を用いたサービス順管理の概略説明図を図13に示す。上述のように、WRRフロー順管理テーブルT6は、フロー1、フロー3及びフロー4が構成するループについての情報を保持する。図13に示すように、現在サービスしているフローがフロー3であるとき、「前のサービスフロー」(すなわち、フロー1のフローID)と「残りのサービス回数」とは、詳細後述するように、前サービスフロー管理部26によって管理されているが、現在フロー3をサービスしているということについての情報は出力ポートコントローラ20によって管理されない。
【0079】
図14は、図2の前サービスフロー管理部26によって管理される前サービスフロー管理テーブルT7の概略構成の一例を示す図である。図14に示すように、前サービスフロー管理テーブルT7は、各クラスのクラスID毎に前サービスフローIDと残りサービス回数を格納して管理する。サービスを開始する場合は、前サービスフロー管理部26は、当該クラスでの前サービスフローIDを出力し、そのフローIDに基づいてWRRフロー順管理テーブルT6を用いて次にサービスすべきフローのフローIDを出力する。残りサービス回数は、現在サービスしているフローを連続してサービスする回数を示し、残りサービス回数が0になると前サービスフロー管理部26は前サービスフローIDを更新する。管理する値として、現在サービスしているフローのフローIDではなく前サービスフローIDを使用する理由は、当該クラスにおいて新しくフローが到着した場合、WRRフロー順管理テーブルT6において前サービスフローの次にフローを登録することにより、現在サービスされているフローは連続してサービスすることが可能となるためである。
【0080】
この前サービスフロー管理の概略説明図、並びに新規フロー発生時におけるデータ更新処理を図15に示す。すなわち、図15は、図14の前サービスフロー管理テーブルT7を用いたサービスフロー順の管理を説明するための概略説明図であり、図15(a)は新規のフローが発生したときの前サービスフロー管理を示す図であり、図15(b)は図15(a)の後のデータ更新処理を示す図である。
【0081】
図15(a)の例において、現在のサービスフローがフロー3であり、かつ前のサービスフローがフロー1であるとき、フローID「7」を有する新規の到着フローが発生したならば、図15(b)に示すように、前サービスフローであるフロー1の次にフロー7を挿入して、前サービスフローIDを到着フローのフローID「7」に更新するともに、WRRフロー順管理テーブルT6のデータを「フロー1→フロー7→フロー3→フロー4→フロー1→…」となるように更新する。ここで、前述のように、前サービスフロー管理部26は「前のサービスフロー」と「残りのサービス回数」とを格納して管理しているが、現在フローのフローIDは管理されない。
【0082】
従って、出力ポートコントローラ20は、送信される新たなフローが上記バッファメモリに格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するようにWRRフロー順管理テーブルT6のデータを更新する。
【0083】
以上説明した前サービスフロー管理テーブルT7と同様に、前サービスクラス管理部27は、各ポートのポートID毎に前サービスクラスIDと残りサービス回数とを格納して管理するための、前サービスクラス管理テーブルを備えている。
【0084】
次いで、基本量の管理方法について以下に説明する。
【0085】
図16は、図2のバッファメモリ13の記憶領域を、帯域保証型(BG)クラスのフローと、ベストエフォート型(BE)クラスのフローとの間で分配する方法を説明するための概略説明図である。本実施形態ではフロー毎に基本量の管理を行う。帯域保証型クラスのフローに配分される基本量は、そのフローの優先度に従い固定値を取る。ベストエフォート型クラスのフローに配分される基本量(以下、ベストエフォート型クラス用基本量という。)は、バッファメモリの全メモリ容量である全バッファ量から帯域保証型クラスのフローに配分された基本量の総和を減算した残りバッファ量を、各フローの優先度に従って配分する。つまり、ベストエフォート型クラスのフローに対する基本量は新しいフローの発生、並びにフローの消滅によって変動することとなる。
【0086】
フロー数が変化する毎に全フローの基本量を再計算していては、ルータ装置の処理速度が極度に小さくなるので、本実施形態においては、基本量の管理を図16に示すように行う。まず、帯域保証型クラスのフローに対しては、基本量は優先度に応じて固定であるためフロー毎の管理を行う。ベストエフォート型クラスのフローに対しては、フローの本数により基本量が変動するため、ベストエフォート型クラス用基本量として、全バッファ量から帯域保証型クラスに配分された基本量の総和を減算した量のみを格納して管理する。上記のように格納管理することにより、帯域保証型クラスのフローが発生するか又は消滅した場合は、そのフローの基本量とベストエフォート型クラス用基本量を変更するのみでよい。一方、ベストエフォート型クラスのフローが発生するか又は消滅した場合は、基本量の変更を行う必要はない。ただし、超過使用量を演算する際には基本量が必要となるため、その度に基本量の演算を行う必要があり、その演算式を次式に示す。
【0087】
【数5】
【0088】
【数6】
【0089】
ここで、ベストエフォート型フローに対しては、前述のように、フローの優先度と当該フローを含むクラスの優先度とを同一の値として格納して管理している。
【0090】
あるベストエフォート(BE)型の到着フローに対する基本量を演算するためには、まず、ベストエフォート型クラス毎に優先度とそのクラスに属するフローの本数との積を計算し、それらの積を、ベストエフォート型クラスの個数について総和することにより、ベストエフォート型クラスにおける総優先度が演算される。到着フローが属するクラスの優先度(これは、到着フローの優先度に等価である。)を、演算された総優先度で除算することにより、到着フローに対する基本量配分割合が決定される。基本量配分割合とベストエフォート型クラス用基本量との積を計算することにより、到着フローの基本量を演算することができる。
【0091】
従って、出力ポートコントローラ20は、帯域保証型クラスに含まれる各フローに対する基本量を、当該各フローが要求するメモリサイズだけ個別に割り当てかつ個別に管理し、ベストエフォート型クラスに含まれる各フローに対する基本量を、バッファメモリ全体のメモリサイズから上記帯域保証型クラスに割り当てられた各基本量を減算したメモリサイズを一括して割り当てかつ一括して格納して管理することができる。
【0092】
次いで、最超過クラス及び最超過フローの管理方法について以下に説明する。
【0093】
バッファメモリ13がフルの状態においてパケットが到着した場合、その到着パケットが属するフローが基本量を超過使用していなければ、他のフローのパケットをプッシュアウトすることができる。そのプッシュアウトの対象となるフローは、最も基本量を超過使用しているフロー(以下、最超過フローという。)である。パケット到着時に高速にプッシュアウト対象フローを決定するためには、クラスの基本量を最も超過使用している最超過クラスを予め管理し、かつクラス毎に最超過フローを格納して管理しておく必要がある。
【0094】
全フローの超過使用量をチェックして、最も超過しているフローを決定するという手法では、定期的に動作させるとしても処理時間が膨大になってしまうので、本実施形態では、最超過クラスと最超過フローの管理を図17及び図18に示すように行う。なお、ここで用いる最超過フロー管理テーブルT8は、図19に示すように、フローID毎に超過使用量を格納している。
【0095】
図17は、図2の格納場所決定部17によって実行される、パケット到着時における最超過フローの管理処理を示すフローチャートである。まず、パケットが到着した時に、ステップS1において、到着パケットのヘッダ情報を取得し、ステップS2において、到着したパケットが属するフローの超過使用量と、最超過フロー管理テーブルT8に格納して管理している最超過フローの超過使用量とを比較する。ここで、到着フローの方が大きい場合(ステップS2がYESのとき)は、ステップS3において、最超過フロー管理テーブルT8に記憶されたフローIDを更新し、次いで、ステップS4において、最超過フロー管理テーブルT8に記憶された超過使用量を更新して当該管理処理を終了する。逆に、最超過管理テーブルT8のフローの方が大きい場合(ステップS2がNOのとき)は、管理データを変更せずに当該管理処理を終了する。
【0096】
図18は、図2のスケジューラ18によって実行される、パケット送信時における最超過フローの管理処理を示すフローチャートである。まず、ステップS11において、所定数のパケットにてなるフローを送信し、次いで、ステップS12において、送信したパケットが属するフローのフローIDと、最超過フロー管理テーブルT8に格納して管理している最超過フローのIDとが一致するか否かを判断し、一致しているとき(ステップS12がYESのとき)、ステップS13で最超過フロー管理テーブルT8に格納して管理している最超過フローの超過使用量を更新して当該管理処理を終了する。一方、フローIDが一致しない場合(ステップS12がNOのとき)は、管理データを変更せずに当該管理処理を終了する。上記の方法により、全フローの超過使用量のチェックを行う必要がなくなる。
【0097】
図19は、図2のクラス管理部24によって管理される最超過フロー管理テーブルT8を用いた最超過フロー管理を説明するための概略説明図であり、最超過フローの管理の動作を、図19に示す例を用いて具体的に説明する。
【0098】
クラス管理部24は、最超過フロー管理テーブルT8を用いて、最も大きい超過使用量を有するフローのフローIDとその超過使用量(ただし、バッファメモリ13内のブロック長Lを単位とする。)とを格納して管理する。図19(a)は初期状態の(a1)最超過フロー管理テーブルT8と(a2)フロー毎の超過使用量の現在の状態とを示す図であり、ここで、最超過フロー管理テーブルT8は、フロー1が最超過フローであり、その超過使用量が12であることを示している。次いで、図19(b)は、図19(a)の状態からパケットサイズが2であるフロー3が到着したときの(b1)最超過フロー管理テーブルT8と(b2)フロー毎の超過使用量の現在の状態とを示す図である。到着パケットサイズは2であるため、フロー3の超過使用量は13となる。クラス管理部24は、この値と、格納管理している最超過フロー1の超過使用量の値を比較し、この場合到着フロー3の超過使用量の方が大きいので、最超過フロー管理テーブルT8の管理データを、フローIDが3でありかつ超過使用量が13であるように変更する。そして、図19(c)はパケットサイズが2であるフロー3を送信したときの(c1)最超過フロー管理テーブルT8と(c2)フロー毎の超過使用量の現在の状態とを示している。送信したフローのフローIDと、最超過フロー管理テーブルT8に管理されているフローIDとが一致するので、クラス管理部24は、格納して管理している超過使用量の値を変更する。このとき、最超過フローのフローIDが正しく管理されていない状態が発生する。しかし、パケットを送信した時点における管理テーブルの状態であるため必ずバッファメモリ13に空きが存在すること、さらに管理されているフローは超過使用をしていることから、本ルータ装置のパケット送受信性能には影響を及ぼさないと考えられる。さらに、図19(d)はパケットサイズが2であるフロー1が到着したときの(d1)最超過フロー管理テーブルT8と(d2)フロー毎の超過使用量の現在の状態とを示す図である。到着フローの超過使用量は管理されている超過使用量を超えているので管理データは変更され、最も超過しているフローの管理が正常に行われている状態になる。
【0099】
従って、出力ポートコントローラ20は、所定のフローに属するパケットが到着することによって、格納して管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フローID及び超過使用量を新たに到着したパケットが属するフローのフローID及び超過使用量に更新し、基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるとき、格納して管理している超過使用量のみを当該フローの送信後の超過使用量に更新することができる。
【0100】
本実施形態において、以上のように最超過フローを管理してプッシュアウト対象パケットを検索するとき、帯域保証型クラスに対してはその帯域分の基本量を保証してさえおけば他のフローの影響を受けることはなくなる。また、他のポートに属するフローが予想外の動作を行ったとしても、基本量配分の効果によりその影響を最小限に抑えることが可能となる。さらにバッファメモリ13を複数のポートで共有することで、不均質なトラヒックに対するスループット向上の効果が期待できる。特に、本実施形態のプッシュアウト機構は、パケットの優先権を予め決めておく方法とは異なり、基本量を超えて使用している量に従って動的に優先権が変化するものである。
【0101】
次に、本発明の実施形態に係るより具体的な実施例について説明する。以下では、簡単化のために、複数個のポートは管理せず、複数個のクラスと複数個のフローのみを格納して管理するものとするが、本実施形態は、複数個のポートが存在する場合でも同様に実施可能であることは理解されると考えられる。なお、この簡単化のために、ポート管理部25とWRRポート順管理部30の動作を以下の説明では取り上げない。
【0102】
図20は、格納場所決定部17の詳細構成と格納場所決定処理のフローとを示すブロック図である。図20に示すように、格納場所決定部17は、セレクタ35と、後処理用前置処理部36と、パケット格納用後処理部37とを備えて構成される。
【0103】
図20を参照して、到着パケットに対する格納場所決定処理の流れを説明する。出力ポートコントローラ20に到着パケットのフローID等のヘッダ情報がヘッダ情報取得部11から入力されると、プッシュアウト対象ブロック決定部15によってプッシュアウト検索が開始され、それと同時に格納ブロック決定部16によって格納場所検索が開始される。プッシュアウト検索において、プッシュアウト対象ブロック決定部15は、ヘッダ情報と、フロー管理部23及びクラス管理部24内のデータとを参照して、到着フローがバッファメモリ13中の余分なデータを廃棄する(プッシュアウトする)場合における、プッシュアウト対象ブロックのブロック番号を出力する。プッシュアウト対象ブロック決定部15は、さらに、到着パケットの属するフローの使用量が基本量を超えているか否かを決定し、その超過使用量のデータを出力する。また、格納場所検索において、格納ブロック決定部16は、ヘッダ情報と空き領域管理部21内のデータとを参照し、バッファメモリ13に空き領域が存在する場合、到着フローがプッシュアウトをせずに格納されるブロックのブロック番号を出力する。一方、バッファメモリ13がフルの場合は、格納ブロック決定部16は、プッシュアウト要求を表す特別な値を、プッシュアウト要求信号として出力する。
【0104】
セレクタ35は、プッシュアウト検索と格納場所検索による結果を参照し、バッファメモリ13に空き領域が存在する場合には格納ブロック決定部16の出力するブロック番号を選択し、バッファメモリ13に空き領域が存在せず、格納ブロック決定部16がプッシュアウト要求信号を出力した場合には、プッシュアウト対象ブロック決定部15が出力するブロック番号を選択する。セレクタ35は、さらに、バッファメモリ13に空き領域が存在せず、到着パケットの属するフローの超過使用量が正数である場合、到着パケットの廃棄を選択する。後処理用前置処理部36は、ヘッダ情報と、フロー管理部23内のデータとに基づいて、最超過フロー超過使用量を決定する。セレクタ35において格納ブロック番号が決定されると、パケット格納用後処理部37は、ヘッダ情報と、セレクタ35及び後処理用前置処理部36からの出力信号とに基づいて、後処理として各管理部21乃至24と26乃至29内のデータを更新するとともに、バッファメモリ13中で到着パケットを記憶するブロックのブロック番号を示す信号、又は到着パケットの廃棄を命令する信号を一時的パケット格納メモリ12に出力して、一時的パケット格納メモリ12内のパケットをバッファメモリ13内の当該ブロックに記憶させるか、又は当該パケットを廃棄する。
【0105】
図21は、図20のパケット格納用後処理部37の詳細構成を示すブロック図である。図21において、コントローラ42には、超過使用クラス演算回路43と、超過使用フロー演算回路44と、サービスクラスチェック回路45と、サービスフローチェック回路46と、BEクラス基本量演算回路47と、優先度演算回路48と、最超過クラス超過使用量レジスタR1と、新管理クラスレジスタR2と、新管理クラス超過使用量レジスタR3と、新管理フローレジスタR4と、新管理フロー超過使用量レジスタR5とが接続されている。コントローラ42は、上記接続された内部回路43乃至48及びレジスタR1乃至R5と、外部回路との間で入出力インターフェース41を介してデータを入出力するように制御する。
【0106】
図21において、最超過クラス超過使用量レジスタR1は最超過クラスの超過使用量を格納し、新管理クラスレジスタR2は最超過クラスのクラスIDを格納し、新管理クラス超過使用量レジスタR3は最超過クラスのクラス使用量を格納する。また、新管理フローレジスタR4は到着クラス内の最超過フローのフローIDを格納し、新管理フロー超過使用量レジスタR5は最超過フローの超過使用量を格納する。
【0107】
超過使用クラス演算回路43は、到着パケットのクラスIDと、到着パケットの属するクラスの超過使用量と、最超過クラスレジスタ24dに記憶された値と、最超過クラス超過使用量レジスタR1に記憶された値とに基づいて、最超過クラスと、その最超過クラスのクラス使用量とを演算する。超過使用フロー演算回路44は、到着パケットのフローIDと、到着パケットの属するフローの超過使用量と、到着クラスの最超過フローと、最超過フローの超過使用量とに基づいて、到着クラス内の最超過フローと、その最超過フローの超過使用量とを演算する。サービスクラスチェック回路45は、パケット到着時における前サービスクラスの決定を行う。到着クラスが新規クラスの場合、つまり当該クラスに属するパケットがそれまで存在しなかった場合、その新規到着クラスを前サービスクラスとして扱いWRRの最後の順番とするため、サービスクラスチェック回路45は当該到着クラスのクラスIDを出力する。逆に到着クラスが新規クラスでない場合は、前サービスクラスは、管理されていた前サービスクラスをそのまま採用するため、サービスクラスチェック回路45は既に管理されていた前サービスクラスIDを出力する。
【0108】
サービスフローチェック回路46は、パケット到着時における前サービスフローの決定を行う。到着フローが新規フローである場合、到着フローを前サービスフローとして扱うため、サービスフローチェック回路46は当該到着フローのフローIDを出力する。逆に到着フローが新規フローでない場合は、前サービスフローは、管理されていた前サービスフローをそのまま採用するため、サービスフローチェック回路46は既に管理されていた前サービスフローIDを出力する。BEクラス基本量演算回路47は、到着フローが新規フローであり、かつ属するクラスが帯域保証型クラスである場合、図16を参照して説明されたベストエフォート型クラス用基本量(以下、BEクラス基本量という。)の再計算を行う。BEクラス基本量演算回路47は、到着クラスIDによって到着フロー基本量を演算し、到着フローが帯域保証型クラスに属する場合にはBEクラス基本量から到着フローの基本量を減算し、その値を出力する。到着フローがベストエフォート型クラスに属する場合は、BEクラス基本量演算回路47は既に管理されていたBEクラス基本量をそのまま出力する。優先度演算回路48は、到着フローが新規フローである場合、属するクラスのクラス優先度を、各クラスに予め決定された1フローに属する優先度分だけ増加させる。
【0109】
図22は、スケジューラ18の詳細構成と送信パケット決定処理のフローとを示すブロック図である。図22に示すように、スケジューラ18は、サービスパケット出力決定部51と、パケット送信用後処理部52と、次サービスパケット選択部53とを備えて構成される。
【0110】
図22を参照して、サービス要求に対する送信パケット決定処理の流れを以下に説明する。パケット送信部14がサービス要求信号をスケジューラ18に入力すると、スケジューラ18のサービスパケット出力決定部51は、各管理部26乃至29を参照して、次サービスパケット選択部53において予め決定された次サービスブロック番号をパケット送信用後処理部52に出力する。そして、パケット送信用後処理部52は、次サービスブロック番号を出力信号としてパケット送信部14に出力するとともに、後処理として各管理部21乃至24と26乃至29内のデータを更新する。その後、パケットサービス中に、次サービスパケット選択部53は、パケット送信用後処理部52からの信号と、各管理部23、24、26乃至29に記憶されたデータとに基づいて、次サービスパケットの決定を行う。
【0111】
ここで、パケットは一般に可変長であるため、本実施形態ではブロック単位の処理が行われている。そのため、出力ポートコントローラ20は、パケット送信部14に対して、パケットの終了を告げる必要がある。そこで、出力ポートコントローラ20の出力としてフラグを用意し、そのフラグが「1」である間はパケットが連続していることを示す。
【0112】
図23は、図22のパケット送信用後処理部52の詳細構成を示すブロック図である。図23に示すように、コントローラ62には、クラスサービス回数演算回路63と、フローサービス回数演算回路64と、優先度演算回路65と、最超過クラス超過使用量演算回路66と、最超過フロー超過使用量演算回路67と、サービスクラス保持レジスタR11と、サービスフロー保持レジスタR12と、最超過クラス超過使用量レジスタR13と、最超過フロー超過使用量レジスタR14とが接続されている。コントローラ62は、これら内部回路63乃至67及びレジスタR11乃至R14と、外部回路との間で入出力インターフェース51を介してデータを入出力するように制御する。
【0113】
図23において、サービスクラス保持レジスタR11はサービスクラスのクラスIDを格納し、サービスフロー保持レジスタR12は図34を参照して後述するWRRフロー順管理テーブルメモリ28cからのサービスフローのフローIDを格納する。また、最超過クラス超過使用量レジスタR13は最超過クラスの超過使用量を格納し、最超過フロー超過使用量レジスタR14は最超過フローの超過使用量を格納する。
【0114】
クラスサービス回数演算回路63は、前サービスクラスIDの決定と残りサービス回数の演算を行う。通常は、残りサービス回数を1だけ減少させるのみである。減少させる前の値が1である場合はサービス順が移動するため、前サービスクラスIDを現在のサービスクラスIDの値に変更し、同時に、次のサービスを受けるクラスのサービス回数を演算する。フローサービス回数演算回路64は、前サービスフローIDの決定と残りサービス回数の演算を行う。通常は、残りサービス回数を1だけ減少させるのみである。減少させる前の値が1である場合はサービス順が移動するため、前サービスフローIDを現在のサービスフローIDの値に変更し、同時に、次のサービスを受けるフローのサービス回数を演算する。
【0115】
優先度演算回路65は、サービスされるフローが消滅する(バッファメモリ13にパケットが無い状態になる)場合、属するクラスのクラス優先度を、各クラスに予め決定された1つのフローに属する優先度分だけ減少させる。最超過クラス超過使用量演算回路66は、管理されている最超過クラスIDとサービスされたクラスIDが等しい場合、最超過クラス超過使用量を1だけ減少させ、それ以外の場合は、管理されている最超過クラス超過使用量の値をそのまま出力する。最超過フロー超過使用量演算回路67は、管理されている最超過フローIDとサービスされたフローIDが等しい場合、最超過フロー超過使用量を1だけ減少させ、それ以外の場合は、管理されている最超過フロー超過使用量の値をそのまま出力する。
【0116】
以下、本実施形態の説明において、説明の簡単化のためにさらにいくつかの仮定をする。仮定の第1点目は、1個のパケットがバッファメモリ13中の1個のブロックに格納可能であるとする点である。これにより、ブロック分割されたパケットの連結フラグ機能の実装を省略する。仮定の第2点目は、複数のポートでバッファメモリ13を共有しない環境を想定する点である。これにより、ポート単位での管理機構の実装を省略する。このような仮定及び省略を含まずに本実施形態のルータ装置を実施する方法も、当業者には容易に理解されるだろう。
【0117】
また、以下の説明では、フローIDのビット幅をFビットとし、クラスIDのビット幅をCビットとし、優先度ビット幅をWビットとしてパラメータ化して設定することにより、ハードウェア設計の拡張性をもたせる。ここで、フローIDのビット幅をFビットと設定することにより、管理可能フロー数は2F−1個(すべてのビットが「1」を示す値には特殊な意味をもたせる。)となる。
【0118】
本実施形態の出力ポートコントローラ20を実装するにあたり、信号処理の高速化を図るために、図4乃至図19を参照して概念的に説明された管理テーブルを細分化する。管理テーブルを細分化することにより、各管理テーブルへの同時アクセスによる信号の衝突を防ぐことが可能となるためである。具体的には、フロー管理テーブルT3は、図28乃至図33を参照して後述するものであり、図28を参照して後述する基本量管理テーブルメモリ23cと、フロー使用量管理テーブルメモリ23dと、先頭ブロック管理テーブルメモリ23eと、最後尾ブロック管理テーブルメモリ23fと、フロー優先度レジスタ23gとに分割される。また、クラス管理テーブルT4(図30参照。)は、最超過フローレジスタ24cと、最超過クラスレジスタ24dと、クラス優先度レジスタ24eと、BEクラス基本量レジスタ24fと、クラス使用量管理テーブルメモリ24gと、クラスフロー数管理テーブルメモリ24hと、最超過フロー超過使用量管理テーブルメモリ24iとに分割される。さらに、前サービスフロー管理テーブルT7(図32参照。)は、前サービスフロー管理レジスタ26cと、フロー残りサービス回数レジスタ26dに分割される。前サービスクラス管理テーブル27(図33参照。)は、前サービスクラス管理レジスタ27cと、クラス残りサービス回数レジスタ27dに分割される。以下の説明で、細分化された各管理テーブルへのアクセスを補助する管理部を定義する。
【0119】
図24は、図2の空き領域管理部21の詳細構成を示すブロック図である。図24に示すように、コントローラ21bは、空き領域管理テーブルメモリ21cと、リスト先頭ブロック番号レジスタ21dと、リスト最後尾ブロック番号レジスタ21eと、及び空きブロック数レジスタ21fと接続されている。コントローラ21bは、これらメモリ又はレジスタ21c乃至21fなどの内部回路と、外部回路との間で入出力インターフェース21aを介してデータを入出力するように制御する。また、図25は、図24の空き領域管理部21によって管理されるデータの一例を示す図であり、図25(a)は空き領域管理テーブルメモリ21c内の空き領域管理テーブルの一例を示す図であり、図25(b)はリスト先頭ブロック番号レジスタ21d内のリスト先頭ブロック番号の一例を示す図であり、図25(c)はリスト最後尾ブロック番号レジスタ21e内のリスト最後尾ブロック番号の一例を示す図であり、図25(d)は空きブロック数レジスタ21f内の空きブロック数の一例を示す図である。
【0120】
図24の空き領域管理部21は、バッファメモリ13中の空き領域をリスト形式で格納して管理し、基本的な動作として、クロック毎に空き領域であるブロックのブロック番号を出力する。これは、パケットが到着した時に空きブロック番号を検索するために使用される。空きブロック追加処理と空きブロック削除処理は1クロックで終了する。表1に、空き領域管理部21によって管理されるデータのサイズを示す。
【0121】
【表1】
空き領域管理部21によって管理されるデータのサイズ
―――――――――――――――――――――――――――
空き領域管理テーブル:Fビット×2F−1行
リスト先頭ブロック番号(Front):Fビット
リスト最後尾ブロック番号(Last):Fビット
空きブロック数(Num):Fビット
―――――――――――――――――――――――――――
【0122】
次いで、空き領域管理部21によって管理されるデータの概要について説明する。空き領域管理テーブルメモリ21c内の空き領域管理テーブルは、図25(a)に示すように、各ブロック番号毎に、次の空きブロックのブロック番号を「次のブロック番号」として格納して管理する。図25(a)の例では、例えば、ブロック番号「1」を有するブロックの次の空きブロックのブロック番号は「2」であることを示している。また、図25(b)に示すように、「次のブロック番号」とは別の値として「リスト先頭ブロック番号」を格納して管理しておくことにより、空きブロック番号は空き領域管理テーブルを検索することなく発見可能である。さらに、新たに空きブロックを追加する時のために、図25(c)に示すように、「リスト最後尾ブロック番号」を格納して管理しておき、このブロック番号に対する空き領域管理テーブル上の値を変更することにより追加処理を高速に行うことが可能となる。また、空きでないブロック(例えば、ブロック0)のブロック番号毎に、図25(a)に示すように、空き領域管理テーブル上の値として「−1」を格納する。
【0123】
図26は、図2の格納場所管理部22の詳細構成を示すブロック図である。図26に示すように、コントローラ22bには格納場所管理テーブルメモリ22cと接続され、コントローラ22bは、格納場所管理テーブルメモリ22cと、外部回路との間で入出力インターフェース22aを介してデータを入出力するように制御する。また、図27は、図26の格納場所管理テーブルメモリ22cによって管理される格納場所管理テーブルの一例を示す図である。
【0124】
図26の格納場所管理部22は、各フローにおけるデータの連結状態を格納して管理し、基本的な動作としては、入力信号としてのブロック番号に応答して、同一フローにおける次のブロック番号を出力する。これはあるブロックがサービスされたとき、次にサービスすべきブロックのブロック番号を検索するために使用される。格納場所管理部22は、動作周期として、入力信号に応答してその1クロック後に結果の出力信号を出力する。格納場所管理部22によって格納されて管理される格納場所管理テーブルのサイズは、Fビット×2F−1行である。図26の格納場所管理テーブルメモリ22c内の格納場所管理テーブルは、各ブロック番号毎に「次のブロック番号」を格納して管理する。図27の例では、例えば、ブロック番号「1」を有するブロックに格納されたデータの続きのデータとして、ブロック番号「6」を有するブロックのデータが存在することとなる。次のデータが存在しない場合は、格納場所管理テーブルメモリ22cに「−1」が格納される。
【0125】
図28は、図2のフロー管理部23の詳細構成を示すブロック図である。図28に示すように、コントローラ23bには、基本量管理テーブルメモリ23cと、フロー使用量管理テーブルメモリ23dと、先頭ブロック管理テーブルメモリ23eと、最後尾ブロック管理テーブルメモリ23fと、及びフロー優先度レジスタ23gとが接続されている。コントローラ23bは、これらメモリ又はレジスタ23c乃至23gと、外部回路との間で入出力インターフェース23aを介してデータを入出力するように制御する。また、図29は、図28のフロー管理部23内のデータの一例を示す図であり、図29(a)は基本量管理テーブルメモリ23c内の基本量管理テーブルの一例を示す図であり、図29(b)はフロー使用量管理テーブルメモリ23d内のフロー使用量管理テーブルの一例を示す図であり、図29(c)は先頭ブロック管理テーブルメモリ23e内の先頭ブロック管理テーブルの一例を示す図であり、図29(d)は最後尾ブロック管理テーブルメモリ23f内の最後尾ブロック管理テーブルの一例を示す図である。
【0126】
図28において、基本量管理テーブルメモリ23cは各フローの基本量を格納して管理する。ただし、基本量管理テーブルメモリ23cによって管理される基本量は帯域保証型クラスに属するフローの基本量のみで、ベストエフォート型クラスに属するフローの基本量は変動が激しいため別途管理を行う。基本量管理テーブルメモリ23cは、基本的な動作として、入力信号としてのフローIDに応答してそのフローの基本量を出力する。フローの基本量は、パケット到着時と送信時において超過使用量を演算する場合等に用いられる。動作周期として、基本量管理テーブルメモリ23cは、入力信号に応答してその1クロック後に結果の出力信号を出力する。基本量管理テーブルメモリ23cによって管理される基本量管理テーブルのサイズは、Fビット×2F−1行である。基本量管理テーブルメモリ23c内の基本量管理テーブルは、図29(a)にその一例を示すように、各フローID毎に「基本量」を格納して管理する。フローが存在しない場合と、基本量が割り当てられない場合には、その基本量管理テーブル上の値が「0」となる。
【0127】
図28のフロー使用量管理テーブルメモリ23dは各フローの使用量を格納して管理し、基本的な動作として、入力信号としてのフローIDに応答してそのフローの使用量を出力し、ここで、フローの使用量はパケット到着時及び送信時において超過使用量を演算する場合等に用いられる。動作周期として、フロー使用量管理テーブルメモリ23dは入力信号に応答してその1クロック後に結果の出力信号を出力する。フロー使用量管理テーブルメモリ23d内のフロー使用量管理テーブルのサイズは、Fビット×2F−1行である。フロー使用量管理テーブルメモリ23d内のフロー使用量管理テーブルは、図29(b)にその一例を示すように、各フローID毎にそのフローの「使用量」を格納して管理する。使用量の値が「0」を示した瞬間に、当該フローは途切れたものと判断される。
【0128】
図28の先頭ブロック管理テーブルメモリ23eは各フローにおける最も先に到着したデータブロック、つまりバッファにおける各フローの先頭ブロックのブロック番号を格納して管理し、基本的な動作として、入力信号としてのフローIDに応答してそのフローの先頭ブロック番号を出力する。先頭ブロック番号は主として、パケット送信時やプッシュアウト時に使用される。先頭ブロック管理テーブルメモリ23eは、動作周期として、入力信号に応答してその1クロック後に結果の出力信号を出力する。先頭ブロック管理テーブルメモリ23e内の先頭ブロック管理テーブルのサイズは、Fビット×2F−1行であり、先頭ブロック管理テーブルは、図29(c)にその一例を示すように、各フローID毎に「フローの先頭ブロック番号」を格納して管理する。この値が「−1」である場合は、そのフローが存在しないことを示す。
【0129】
図28の最後尾ブロック管理テーブルメモリ23fは、各フローにおける最も新しく到着したデータブロック、つまりバッファにおける各フローの最後尾ブロックのブロック番号を格納して管理し、基本的な動作として、入力信号としてのフローIDに応答してそのフローの最後尾ブロック番号を出力する。最後尾ブロック番号は主として、パケット到着時に格納場所管理部22と連携して使用される。最後尾ブロック管理テーブルメモリ23fは、動作周期として、入力信号に応答してその1クロック後に結果の出力信号を出力する。最後尾ブロック管理テーブルメモリ23f内の最後尾ブロック管理テーブルのサイズはFビット×2F−1行であり、当該最後尾ブロック管理テーブルメモリ23fは、図29(d)にその一例を示すように、各フローID毎に「フローの最後尾ブロック番号」を格納して管理する。この値が「−1」である場合は、そのフローが存在しないことを示す。
【0130】
図30は、図2のクラス管理部24の詳細構成を示すブロック図である。コントローラ24bには、最超過フローレジスタ24cと、最超過クラスレジスタ24dと、クラス優先度レジスタ24eと、BEクラス基本量レジスタ24fと、クラス使用量管理テーブルメモリ24gと、クラスフロー数管理テーブルメモリ24hと、最超過フロー超過使用量管理テーブルメモリ24iとが接続されている。コントローラ24bは、これら内部回路のレジスタ又はメモリ24c乃至24iと、外部回路との間で入出力インターフェース24aを介してデータを入出力するように制御する。図31は、図30のクラス管理部24内のデータの一例を示す図であり、図31(a)はクラス使用量管理テーブルメモリ24g内のクラス使用量管理テーブルの一例を示す図であり、図31(b)はクラスフロー数管理テーブルメモリ24h内のクラスフロー数管理テーブルの一例を示す図であり、図31(c)は最超過フロー超過使用量管理テーブルメモリ24i内の最超過フロー超過使用量管理テーブルの一例を示す図である。
【0131】
図30において、最超過フローレジスタ24cはクラス毎に最も超過使用しているフローのフローIDを格納して管理し、最超過クラスレジスタ24dはも超過使用しているクラスのクラスIDを格納して管理する。また、クラス優先度レジスタ24eは各クラスのクラス優先度を格納して管理し、BEクラス基本量レジスタ24fはBEクラス基本量を格納して管理する。
【0132】
図30のクラス使用量管理テーブルメモリ24gは各クラスの使用量を格納して管理し、基本的な動作として、入力信号としてのクラスIDに応答してそのクラスの使用量を出力する。クラスの使用量は、パケット到着時及び送信時において超過使用量を演算する場合等に用いられる。クラス使用量管理テーブルメモリ24gは、動作周期として、入力信号に応答してその1クロック後に結果の出力信号を出力する。クラス使用量管理テーブルメモリ24g内のクラス使用量管理テーブルのサイズは、Fビット×2C−1行であり、当該クラス使用量管理テーブルは、図31(a)にその一例を示すように、各クラスID毎にそのクラスの「使用量」を格納して管理する。使用量の値が「0」を示す場合は、そのクラス内にフローが存在しないことを示す。
【0133】
図30のクラスフロー数管理テーブルメモリ24hは各クラスにおけるフロー数を格納して管理し、基本的な動作として、クロック毎にすべてのベストエフォート型クラスのフロー数を出力する。クラスのフロー数は、ベストエフォート型クラスの基本量を演算する時に使用される。すべてのベストエフォート型クラスのフロー数を同時に出力することにより、基本量の演算を高速に行うことが可能となる。クラスフロー数管理テーブルメモリ24hは、フロー数の増減処理を1クロックで実行して終了する。クラスフロー数管理テーブルメモリ24h内のクラスフロー数管理テーブルのサイズはFビット×2C−1行であり、そのクラスフロー数管理テーブルは、図30(b)にその一例を示すように、各クラス毎に「クラスに属するフロー数」を格納して管理している。
【0134】
図30の最超過フロー超過使用量管理テーブルメモリ24iは各クラスにおける最超過フローの超過使用量を格納して管理し、基本的な動作として、入力としてのクラスIDに応答してそのクラス内で最も超過使用しているフローの超過使用量を出力する。当該最超過フロー超過使用量管理テーブルメモリ24iを備えることにより、プッシュアウト対象フローを高速に決定することが可能となる。最超過フロー超過使用量管理テーブルメモリ24iは、動作周期として、入力信号に応答してその1クロック後に結果の出力信号を出力する。最超過フロー超過使用量管理テーブルメモリ24i内の最超過フロー超過使用量管理テーブルのサイズは、Fビット×2C−1行であり、その最超過フロー超過使用量管理テーブルは、図31(c)にその一例を示すように、各クラス毎に「最超過フローの超過使用量」を格納して管理する。この値が「0」である場合は、そのクラス内に超過使用しているフローが存在しないことを示す。
【0135】
図32は、図2の前サービスフロー管理部26の詳細構成を示すブロック図である。図32において、コントローラ26bには、前サービスフロー管理レジスタ26c及びフロー残りサービス回数レジスタ26dが接続されており、コントローラ26bは、これら内部のレジスタ26c,26dと、外部回路との間で入出力インターフェース26aを介してデータを入出力するように制御する。前サービスフロー管理部26内の前サービスフロー管理レジスタ26cのサイズはFビット×2F−1行であり、同時に管理されるフロー残りサービス回数レジスタ26dのサイズはWビット×2C−1行である。前サービスフロー管理部26内の前サービスフロー管理レジスタ26cは、クラス毎に直前にサービスしたフローを格納して管理する。サービスすべきブロックの決定を行う時には、サービスすべきクラスを決定した後、当該レジスタ26cを参照することによって、前にサービスしたフローのIDが決定される。この値をWRRフロー順管理部28に入力することにより、サービスすべきフローIDが決定される。また、フロー残りサービス回数レジスタ26dは、クラス毎に現在サービス中であるフローがサービス可能なブロック数を格納して管理し、この値が「0」になると、次のフローのサービスを行う。
【0136】
また、図33は、図2の前サービスクラス管理部27の詳細構成を示すブロック図である。コントローラ27bには、前サービスクラス管理レジスタ27c及びクラス残りサービス回数レジスタ27dが接続されており、コントローラ27bは、これら内部回路のレジスタ27c,27dと、外部回路との間で入出力インターフェース27aを介してデータを入出力するように制御する。サービスクラス管理部27によって管理される前サービスクラス管理レジスタ27cのサイズはCビットであり、管理されるクラス残りサービス回数レジスタ27dのデータはFビットである。前サービスクラス管理部27内の前サービスクラス管理レジスタ27cは、直前にサービスしたクラスを格納して管理し、この値をWRRクラス順管理部29に入力することにより、サービスすべきクラスIDが決定される。また、クラス残りサービス回数レジスタ27dは、現在サービス中のクラスがサービス可能なブロック数を格納して管理する。この値が「0」になると、次のクラスのサービスを行う。
【0137】
図34は、図2のWRRフロー順管理部28の詳細構成を示すブロック図である。コントローラ28bには、WRRフロー順管理テーブルメモリ28cが接続されており、コントローラ28bは、その内部回路であるWRRフロー順管理テーブルメモリ28cと、外部回路との間で入出力インターフェース28aを介してデータを入出力するように制御する。
【0138】
図34のWRRフロー順管理テーブルメモリ28cは、図35にその一例を示すように、各フローID毎にそのフローIDの次にサービスすべきフローIDを格納して管理し、基本的な動作として、入力されるフローIDに応答してサービスすべきフローのフローIDを出力する。この出力されたフローIDは、パケット送信時に、まず、どのフローをサービスすべきであるかを決定するために使用される。WRRフロー順管理部28は、動作周期として、入力信号に応答してその1クロック後に結果の出力信号を出力する。WRRフロー順管理テーブルメモリ28c内のWRRフロー順管理テーブルのサイズは、Fビット×2F−1行であり、そのWRRフロー順管理テーブルは、各フローID毎に「次にサービスすべきフローID」を格納して管理する。例えば、図35の例では、フローID「0」の次にサービスするフローのIDは「1」であり、さらに次にサービスするフローは「5」であることが示されている。また、フローID「5」の次にサービスするフローのIDは「0」であることから、あるクラス下ではフローID「0」、「1」、「5」が存在し、それらのサービス順は「0→1→5→0→…」であることを示している。また、WRRフロー順管理テーブル上の値が「−1」である場合、そのフローは存在していないことを示す。
【0139】
図36は、図2のWRRクラス順管理部29の詳細構成を示すブロック図である。コントローラ29bには、WRRクラス順管理テーブルメモリ29cが接続され、その内部回路であるWRRクラス順管理テーブルメモリ29cと、外部回路との間で入出力インターフェース29aを介してデータを入出力するように制御する。
【0140】
WRRクラス順管理テーブルメモリ28cは、図36にその一例を示すように、各クラスID毎にそのクラスの次にサービスすべきクラスのクラスIDを格納して管理し、基本的な動作として、入力されるクラスIDに応答して、次にサービスすべきクラスIDを出力する。この出力されたクラスIDはパケット送信時にどのクラスをサービスすべきであるかを決定するために使用される。WRRクラス順管理テーブルメモリ28cは、動作周期として、入力信号に応答してその1クロック後に結果の出力信号を出力する。WRRクラス順管理部29内のWRRクラス順管理テーブルのサイズは、Cビット×2C−1行であり、そのWRRクラス順管理テーブルは、図36に示すように、各クラス毎に「次にサービスすべきクラスID」を格納して管理する。ここで、WRRクラス順管理テーブ上の値の意味は、「WRRフロー順管理テーブル」と同様である。
【0141】
出力ポートコントローラ20は、以上説明したすべての管理テーブルへのアクセス処理と、またそれら管理テーブルの出力処理とを用いて以下の演算処理を行う。パケット到着時には、到着パケットが属するフローID等を入力することにより、格納ブロック番号の決定が行われる。また、パケット送信時には、サービス要求信号を入力することにより送信すべきブロック番号の出力が行われる。これらの処理を行うためには、本ブロックでは4クロックが必要である。表2に、出力ポートコントローラ20に対する入出力信号を示し、表3に、以上説明した各管理テーブルを記憶した各メモリと各レジスタとをまとめて列挙して示す。
【0142】
【表2】
出力ポートコントローラ20に対する入出力信号
――――――――――――――――――――――
信号名 入出力 ビット幅
――――――――――――――――――――――
フローID 入力 F
クラスID 入力 C
優先度 入力 W
到着フラグ 入力 1
送信フラグ 入力 1
クロックCLK 入力 1
リセットRST 入力 1
出力データDOUT 出力 F
――――――――――――――――――――――
【0143】
表2において、出力ポートコントローラ20は、出力データDOUTとして、到着パケットの格納の場合には格納ブロック信号を出力し、パケットを送信する場合には送信ブロック番号を出力する。
【0144】
【表3】
出力ポートコントローラ20によって管理されるメモリ及びレジスタ
―――――――――――――――――――――――――――――――
空き領域管理テーブルメモリ21c
格納場所管理テーブルメモリ22c
基本量管理テーブルメモリ23c
フロー使用量管理テーブルメモリ23d
先頭ブロック管理テーブルメモリ23e
最後尾ブロック管理テーブルメモリ23f
クラス使用量管理テーブルメモリ24g
クラスフロー数管理テーブルメモリ24h
最超過フロー超過使用量管理テーブルメモリ24i
WRRフロー順管理テーブルメモリ28c
WRRクラス順管理テーブルメモリ29c
前サービスフロー管理レジスタ26c:Fビット×2C−1行
前サービスクラス管理レジスタ27c:Cビット
最超過フローレジスタ24c:Fビット×2C−1行
最超過クラスレジスタ24d:Cビット
クラス優先度レジスタ24e:Wビット×2C−1行
フロー残りサービス回数レジスタ26d:Wビット×2C−1行
クラス残りサービス回数レジスタ27d:Fビット
BEクラス基本量レジスタ24f:Fビット
――――――――――――――――――――――――――――――
【0145】
本実施形態の出力ポート回路3をハードウェア実装すると、結果の出力信号を出力して各管理テーブルの変更を終了するまでに4クロックの処理が必要である。このことを説明するために、図2の出力ポートコントローラ20によって実行される、パケット到着時の処理のタイミングチャートを図38乃至図41に示す。なお、図38乃至図41に図示されたパケット到着時の処理と、後述する図45及び図46に示されたパケット送信時の処理において、各管理部21乃至24及び26乃至29内の入出力インターフェース21a乃至24a及び26a乃至29aと、コントローラ21b乃至24b及び26b乃至29bとを介して、プッシュアウト対象ブロック決定部15、格納ブロック決定部16、格納場所決定部17及びスケジューラ18と、各管理テーブル及びレジスタとの間でデータが送受信されるが、以下では、説明の簡単化のために、これら入出力インターフェース及びコントローラについての説明を省略する。
【0146】
図38の第1クロックの期間(時刻t1乃至t2)においては、出力ポートコントローラ20において、各管理テーブルを保持する空き領域管理部21、フロー管理部23及びクラス管理部24へのデータ入力が実行される。格納ブロック決定部16は、空き領域管理テーブルメモリ21cに読み出しフラグを入力し、これに応答して時刻t2において空き領域管理テーブルメモリ21cは空きブロック番号を格納場所決定部17に出力する。また、プッシュアウト対象ブロック決定部15はフロー使用量管理テーブルメモリ23dと基本量管理テーブルメモリ23cに到着パケットの属するフローのフローIDを入力し、これに応答して、フロー使用量管理テーブルメモリ23dは時刻t2においてバッファメモリ13における当該フローの現在のフロー使用量をプッシュアウト対象ブロック決定部15に出力する。さらに、基本量管理テーブルメモリ23cは時刻t2においてバッファメモリ13における帯域保証型クラスのフローの現在のフロー基本量をプッシュアウト対象ブロック決定部15に出力する。
【0147】
プッシュアウト対象ブロック決定部15はまた、クラスフロー数管理テーブルメモリ24hに到着パケットの読み出しフラグを入力し、クラス使用量管理テーブルメモリ24gに到着パケットの属するクラスのクラスIDを入力する。これに応答して、クラスフロー数管理テーブルメモリ24hは時刻t2において各ベストエフォート型クラスに含まれるフロー数をプッシュアウト対象ブロック決定部15に出力し、クラス使用量管理テーブルメモリ24gは時刻t2においてバッファメモリ13における当該クラスの現在のクラス使用量をプッシュアウト対象ブロック決定部15に出力する。また、プッシュアウト対象ブロック決定部15は、到着時における最超過フローのフローIDを読み出しフラグとして先頭ブロック管理テーブルメモリ23eに入力し、これに応答して、先頭ブロック管理テーブルメモリ23eは時刻t2においてバッファメモリ13における最超過クラス中の最超過フローの先頭ブロックと、到着パケットが属するクラス中の最超過フローの先頭ブロック番号とをプッシュアウト対象ブロック決定部15に出力する。これは、バッファメモリ13中に格納されたフローにプッシュアウトが適用される場合に、到着パケットの格納場所としてその出力(すなわち、最超過フローの先頭ブロック番号)を採用するためである。さらに、後処理用前置処理部36は、最超過フロー超過使用量管理テーブルメモリ24iに到着パケットのクラスIDを入力して、最超過フロー超過使用量管理テーブルメモリ24iは時刻t2において最超過フロー超過使用量をパケット格納用後処理部37に出力する。
【0148】
次いで、第2クロックの期間(時刻t2乃至t4)では、第1クロックの期間に出力された管理テーブル上の値を使用し、到着パケットの格納場所を決定する処理を行う。図38において、プッシュアウト対象ブロック決定部15は、まず、フロー使用量管理テーブルメモリ23d、基本量管理テーブルメモリ23c及びクラスフロー数管理テーブルメモリ24hから出力されたデータと、BEクラス基本量レジスタ24fとクラス優先度レジスタ24e内のデータとを使用し、到着パケットの属するフローの超過使用量を演算する。その演算回路構成の具体例を図42及び図43に示す。
【0149】
図42は、プッシュアウト対象ブロック決定部15に含まれる、ベストエフォート型クラスに属するフローに対する超過使用量演算処理を実行する回路のブロック図である。プッシュアウト対象ブロック決定部15は、乗算器OP1,OP2,OP4及びOP6と、加算器OP3と、除算器OP5と、減算器OP7及びOP8と、セレクタSE1乃至SE6とを備えた回路を備え、また、到着パケットが属するフローの基本量は数5及び数6によって演算することが可能であるので、図42に概略的に示すような回路構成を用いて当該基本量を計算することができる。
【0150】
例えば2つのベストエフォート型クラスC1及びC2が存在する場合において、プッシュアウト対象ブロック決定部15は、クラスフロー数管理テーブルメモリ24hが出力したクラス1とクラス2の各フロー数と、クラス優先度レジスタ24eから取得されたクラス1とクラス2の各優先度とを、乗算器OP1及びOP2を用いてそれぞれ乗算し、次いで、各乗算結果を加算器OP3を用いて加算する。図38のセレクタSE2は、クラス優先度レジスタ24eから出力される各クラスの優先度から到着クラスの優先度を選択して出力し、プッシュアウト対象ブロック決定部15は、乗算器OP4を用いて、到着クラスの優先度を、BEクラス基本量レジスタ24fから取得されたBEクラス基本量と乗算し、その乗算結果を除算器OP5を用いて加算器OP3の加算結果で除算する。除算器OP5の除算結果はベストエフォート型クラスに属する到着フローの基本量である。減算器OP7により、以上のように計算されたフロー基本量の値を、フロー使用量管理テーブルメモリ23dから出力された現在のフロー使用量の値から減算することにより、到着フローの超過使用量が演算される。
【0151】
図43は、プッシュアウト対象ブロック決定部15に含まれる、帯域保証型クラスに属するフローに対する超過使用量演算処理を実行する回路のブロック図である。到着パケットが帯域保証型(BG)クラスのフローに属する場合、BGフロー基本量は、基本量管理テーブルメモリ23cの基本量管理テーブルメモリ23cにより格納されて管理されているので、その出力を使用して超過使用量を演算する。
【0152】
図38の処理では、到着フローが帯域保証型であるか又はベストエフォート型であるかに応じて、セレクタSE3が到着パケットのフロー使用量から減算されるべきフロー基本量を選択している。また、セレクタSE1は、クラスフロー数管理テーブルメモリ24hから出力される各クラスのフロー数から到着クラスのフロー数を選択して出力し、プッシュアウト対象ブロック決定部15は、到着クラスのフロー数と、除算器OP5の除算結果とを乗算器OP6で乗算して、その乗算結果をベストエフォート型到着パケットが属するクラスのクラス基本量として出力する。以上によって演算された超過使用量と、先頭ブロック管理テーブルメモリ23eからの出力と、空き領域管理テーブルメモリ21からの出力を使用して格納場所を決定する。
【0153】
図39に図示された第2クロックの後半期間(時刻t3乃至t4)において、プッシュアウト対象ブロック決定部15は、減算器OP8を用いてクラス基本量からクラス使用量を減算し、その減算結果である到着クラスの超過使用量を、セレクタSE4及びSE5と処理フラグセレクタSE7とに出力する。セレクタSE4は、到着パケットのクラスIDと最超過クラスレジスタ24dから取得されたデータと減算器OP8から出力された到着クラスの超過使用量とに基づいてプッシュアウト対象クラスIDを決定し、決定結果を示す信号をセレクタSE6に出力する。また、セレクタSE6は、最超過フローレジスタ24cから取得されたクラス毎の最超過フローのフローIDと、セレクタSE4から入力されたプッシュアウト対象クラスのクラスIDとに基づいて、プッシュアウト対象フローを決定して、当該決定したプッシュアウト対象フローのフローIDを出力する。セレクタSE5は、先頭ブロック管理テーブルメモリ23eから出力された最超過クラス及び到着クラス中の最超過フローの先頭ブロック番号と、減算器OP8から出力された到着クラスの超過使用量とに基づいて、プッシュアウト対象ブロックの先頭ブロック番号を決定し、決定結果を示す信号をセレクタ35に出力する。
【0154】
図44は、図20のセレクタ35によって実行される、到着パケットのための格納場所決定を説明するための概略説明図である。演算された到着フローの超過使用量(図44の信号A)が0以下である場合(すなわち、バッファメモリ13の使用量が基本量を超過していない場合)、バッファメモリ13内に空き領域が存在しないならば、到着パケットは、すでにバッファメモリ13内に格納されているパケットをプッシュアウトする可能性がある。その場合、セレクタ35内のセレクタSE11は、先頭ブロック管理テーブルメモリ23eから出力され、次いで、セレクタSE5によって選択して出力されたデータ(図44の信号B)を、プッシュアウト対象ブロックのブロック番号として選択して出力する(図44の信号D)。到着パケットの属するフローの超過使用量(図44の信号A)が1以上である場合、他のフローに対してプッシュアウトを適用できないため、セレクタSE11は、プッシュアウト対象ブロック番号(図44の信号D)として「−1」を出力する。
【0155】
図44のセレクタ35内のセレクタSE12は、上述のように演算されたプッシュアウト対象ブロック番号と、空き領域管理テーブルメモリ21cからの出力結果である空きブロック番号とを比較して格納ブロック番号を決定する。具体的に、空き領域管理テーブルメモリ21cからの出力信号(図44の信号C)が「−1」である場合、バッファメモリ13内に空きがないことを示しているため、セレクタSE12は、プッシュアウト対象ブロック番号(図44の信号D)を格納ブロック番号として採用する。空き領域管理テーブルメモリ21cからの出力信号(図44の信号C)が「−1」以外である場合は、バッファメモリ13内に空きがあるということを意味しているため、その出力信号(図44の信号C)を格納ブロック番号として採用する。以上より、バッファメモリ13に空きがある場合はその空きブロック番号が格納ブロック番号として出力され、空きがなくかつ到着パケットの属するフローが超過使用していなければプッシュアウト対象ブロックが格納ブロック番号として出力され、また、空きがなくかつ到着パケットの属するフローが超過使用していれば廃棄信号(111…)が格納ブロック番号として出力されることとなる。
【0156】
図39において、処理フラグセレクタSE7は、空きブロック番号と、到着フローの超過使用量と、到着クラスの超過使用量とに基づいて、処理フラグを生成して出力する。処理フラグは2ビットのサイズを有し、当該処理フラグは、後処理時(時刻t5乃至t6)に全ての管理テーブルに入力するものであって、その意義を次の表に示す。
【0157】
【表4】
―――――――――――――――――――――――――――――――――
処理フラグ 意義
―――――――――――――――――――――――――――――――――
00 通常格納する(バッファに空きが存在していた)。
01 廃棄する(到着パケットを格納しない)。
10 到着フローの属するクラス内でプッシュアウトする。
11 到着フローの属するクラス外でプッシュアウトする。
―――――――――――――――――――――――――――――――――
【0158】
表4に示すように、処理フラグのビットを判断することにより、後処理時での各管理テーブルの更新内容が変化する。実施例では、更新すべき値と処理フラグとを同時にそれぞれの管理テーブルに入力し、各管理部は、更新すべきかどうかを処理フラグに基づいて判断する。処理フラグセレクタSE7は、空きブロック番号、到着フローの超過使用量、到着クラスの超過使用量の値に基づいて、上記処理フラグを決定する。処理フラグセレクタSE7は、具体的には以下の表に示すように動作する。
【0159】
【表5】
―――――――――――――――――――――――――――――――――――
(1)空きブロック番号が「−1」以外である場合、処理フラグ「00」を出力する。
(2)空きブロック番号が「−1」であり、かつ到着フローの超過使用量が1以上である場合、処理フラグ「01」を出力する。
(3)空きブロック番号が「−1」であり、かつ到着フローの超過使用量が1未満であり、かつ到着クラスの超過使用量が1以上である場合、処理フラグ「10」を出力する。
(4)空きブロック番号が「−1」であり、到着フローの超過使用量が1未満であり、かつ到着クラスの超過使用量が1未満である場合、処理フラグ「11」を出力する。
―――――――――――――――――――――――――――――――――――
【0160】
また、図39のパケット格納用後処理部37は、最超過クラスと最超過フローの管理を行う。セレクタSE8は、最超過フローレジスタ24cから取得されたクラス毎の最超過フローのフローIDと、到着パケットのクラスIDとに基づいて、到着クラス内の最超過フローを決定して、それのフローIDをパケット格納用後処理部37内の超過使用フロー演算回路44に出力する。超過使用フロー演算回路44は、到着パケットのフローID、到着フローと最超過フローの各超過使用量、及び到着クラスの最超過フローIDに基づいて、到着フローの超過使用量と管理されている超過使用量の比較を行い、新たに管理すべきフローIDと超過使用量を決定する。当該決定された到着クラス内の最超過フローのフローIDを新管理フローレジスタR4に一時的に格納し、最超過フローの超過使用量を新管理フロー超過使用量レジスタR5に一時的に格納しておき、後の更新フェーズにおいてそれらを利用して値の更新を行う。同様に、超過使用クラス演算回路43は、到着パケットのクラスID及び到着クラスの超過使用量と、最超過クラスレジスタ24d及び最超過クラス超過使用量レジスタR1から取得されたデータとに基づいて、新たに管理すべきクラスIDと超過使用量の決定を行い、その決定結果である最超過クラスのクラスIDを新管理クラスレジスタR2に格納し、最超過クラスのクラス使用量を新管理クラス超過使用量レジスタR3に格納する。
【0161】
次いで、図40に図示された第3クロックの期間(時刻t4乃至t5)と、図41に図示された第4クロックの期間(時刻t5乃至t6)においては、パケット格納用後処理部37は各管理テーブル上の値を更新する。
【0162】
まず、図40の時刻t4において、パケット格納用後処理部37は到着パケットのフローIDをフロー使用量管理テーブルメモリ23dに入力し、これに応答して、フロー使用量管理テーブルメモリ23dは、フロー使用量のデータを、先頭ブロック管理テーブルメモリ23e、クラスフロー数管理テーブルメモリ24h、WRRフロー順管理テーブルメモリ28c、基本量管理テーブルメモリ23c、及びサービスフローチェック回路46に出力する。また、パケット格納用後処理部37は到着パケットのクラスIDをクラス使用量管理テーブルメモリ24gに入力し、これに応答して、クラス使用量管理テーブルメモリ24gは、クラス使用量のデータを、WRRクラス順管理テーブルメモリ29cとサービスクラスチェック回路45に出力する。サービスクラスチェック回路45は、到着パケットのクラスが新規クラスであった場合、到着パケットのクラスIDと、クラス使用量管理テーブルメモリ24gから入力されたクラス使用量のデータと、前サービスクラス管理レジスタ27cから取得された前サービスクラスのクラスIDとに基づいて、時刻t5で前サービスクラス管理レジスタ27cを更新する。また、サービスフローチェック回路46は、到着パケットのフローIDと、フロー使用量管理テーブルメモリ23dから入力されたフロー使用量のデータと、前サービスフロー管理レジスタ26cから取得された前サービスフローのフローIDとに基づいて、時刻t5で前サービスフロー管理レジスタ26cを更新する。さらに、BEクラス基本量演算回路47は、到着フローが新規フローであった場合、到着パケットのクラスIDと、BEクラス基本量レジスタ24fから取得されたBEクラス基本量を示すデータとに基づいて、BEクラス基本量レジスタ24fを更新する。
【0163】
図40において、パケット格納用後処理部37は時刻t5において格納ブロック番号を用いて空き領域管理テーブルメモリ21cを更新し、また、到着パケットのフローIDを用いてフロー使用量管理テーブルメモリ23dを更新する。到着フローが新規フローであった場合はさらに、パケット格納用後処理部37は時刻t5において到着パケットのフローIDを用いて、先頭ブロック管理テーブルメモリ23e、最後尾ブロック管理テーブルメモリ23f、WRRフロー順管理テーブルメモリ28c及び基本量管理テーブルメモリ23cを更新し、さらにクラスフロー数管理テーブルメモリ24hを更新する。また、パケット格納用後処理部37は時刻t5において到着パケットのクラスIDを用いてクラス使用量管理テーブルメモリ24gを更新し、到着パケットのクラスIDと新管理フロー超過使用量レジスタR5内のデータとを用いて最超過フロー超過使用量管理テーブルメモリ24iを更新する。パケット格納用後処理部37は、到着クラスが新規クラスであった場合、WRRクラス順管理テーブルメモリ29cと前サービスクラス管理レジスタ27cを更新する。
【0164】
図41の時刻t5において、次の第4クロックの期間(時刻t5乃至時刻t6)における各管理テーブル更新のため、パケット格納用後処理部37は格納場所管理テーブルメモリ22cにプッシュアウト対象フローのフローIDを入力し、これに応答して、格納場所管理テーブルメモリ22cはプッシュアウト対象フローの新しい先頭ブロック番号を出力し、また、パケット格納用後処理部37は最後尾ブロック管理テーブルメモリ23fに到着パケットのフローIDを入力し、これに応答して、最後尾ブロック管理テーブルメモリ23fは到着フローの最後尾ブロック番号を出力する。以上説明したように、処理フラグセレクタSE7が出力した処理フラグは、時刻t5においてすべての管理テーブルに入力される。
【0165】
図41の第4クロックの期間(時刻t5乃至時刻t6)において、パケット格納用後処理部37は、時刻t6で到着フローの最後尾ブロック番号に基づいて格納場所管理テーブルメモリ22cを更新し、到着パケットのフローIDを用いて最後尾ブロック管理テーブルメモリ23fを更新し、また、プッシュアウト対象フローIDを用いてフロー使用量管理テーブルメモリ23dを更新し、プッシュアウト対象フローの新しい先頭ブロック番号を用いて先頭ブロック管理テーブルメモリ23eを更新する。また、パケット格納用後処理部37は、プッシュアウト対象クラスIDを用いてクラス使用量管理テーブルメモリ24gを更新する。同時に、パケット格納用後処理部37は、新管理クラスレジスタR2から取得されたデータを用いて最超過クラスレジスタ24dを更新し、新管理クラス超過使用量レジスタR3から取得されたデータを用いて最超過クラス超過使用量レジスタR1を更新し、新管理フローレジスタR4から取得されたデータを用いて最超過フローレジスタ24cを更新する。さらに、優先度演算回路48は、到着パケットのクラスIDに基づいてクラス優先度レジスタ24eを更新する。また、処理フラグセレクタSE7が出力した処理フラグは、時刻t6においてすべての管理テーブルに入力される。
【0166】
図45及び図46は、図2の出力ポートコントローラ20によって実行される、パケット送信時の処理のタイミングチャートである。パケット送信時の各管理テーブルを格納して管理する処理は3クロックで終了する。ただし、パケット到着時の処理が4クロック必要であるため、本実施形態においては、パケット送信時の処理もまた4クロック動作とする。パケット送信時における前半部の2クロックの期間(時刻t11乃至t13)のタイミングチャートを図45に示す。
【0167】
図45において、スケジューラ18は、WRRクラス順管理テーブルメモリ29cに前サービスクラスのクラスIDを予め入力しておき、まず、パケット送信時の第1クロックの期間(時刻t11乃至t12)において、WRRクラス順管理テーブルメモリ29cは、WRRフロー順管理テーブルメモリ28cとサービスクラス保持レジスタR11にサービスクラスのクラスIDを入力する。同時に、スケジューラ18は、予め管理されている前サービスフローIDをWRRフロー順管理テーブルメモリ28cに入力する。これにより、WRRフロー順管理テーブルメモリ28cは、サービスすべきフローのフローIDを出力することとなる。第2クロックの期間(時刻t12乃至t13)において、WRRフロー順管理テーブルメモリ28cがそのサービスフローのフローIDを先頭ブロック管理テーブルメモリ23eとサービスフロー保持レジスタR12に入力することにより、先頭ブロック管理テーブルメモリ23eは、サービスすべきブロック番号を、時刻t13において、空き領域管理テーブルメモリ21cと格納場所管理テーブルメモリ22cに出力することとなる。
【0168】
次いで、パケット送信時の後半部の1クロック(時刻t13乃至t14)のタイミングチャートを図46に示す。図46に図示された第3クロックの期間(時刻t13乃至t14)において、スケジューラ18はパケット送信による管理テーブルの変更を同時に行い、パケット送信時の処理は終了する。
【0169】
具体的には、フロー使用量管理テーブルメモリ23dは、サービスフローのフローIDに基づいて、フロー使用量を表すデータをクラスフロー数管理テーブルメモリ24dとフローサービス回数演算回路64に出力する。クラス使用量管理テーブルメモリ24gは、サービスクラスのクラスIDに基づいて、クラス使用量を表すデータをクラスサービス回数演算回路63と優先度演算回路65に出力する。これに応答して、クラスサービス回数演算回路63は、サービスクラスのクラスIDと、クラス使用量と、前サービスクラス管理レジスタ27c及びクラス残りサービス回数レジスタ27dから取得されたデータとに基づいて、残りサービス回数が0になるとき、又はクラス使用量が0になるとき、サービスが終了した前サービスクラスのクラスIDと、次にサービスするクラスに対する残りのサービス回数とを出力し、それぞれ前サービスクラス管理レジスタ27cとクラス残りサービス回数レジスタ27dに格納する。また、フローサービス回数演算回路64も同様に、サービスフローのフローIDと、フロー使用量と、前サービスフロー管理レジスタ26c及びフロー残りサービス回数レジスタ26dから取得されたデータとに基づいて、前サービスフロー管理レジスタ26cとフロー残りサービス回数レジスタ26dを更新する。さらに、優先度演算回路65は、サービスクラスのクラスIDとクラス使用量とに基づいて、フローが消滅した場合に新たなクラス優先度を演算して、演算結果はクラス優先度レジスタ24eに出力して格納する。
【0170】
最超過クラス超過使用量演算回路66は、サービスクラスのクラスIDと、最超過クラス超過使用量レジスタR13及び最超過クラスレジスタ24dから取得されたデータとを参照し、サービスクラスIDと、格納して管理している最超過クラスIDが等しい場合は超過使用量の更新を行い、その値を最超過クラス超過使用量レジスタR13に格納する。最超過フロー超過使用量演算回路67も同様に、サービスフローのフローIDと、最超過フロー超過使用量レジスタR14及び最超過フローレジスタ24cから取得されたデータとを参照し、最超過フロー超過使用量レジスタR14を更新する。また、スケジューラ18は、サービスクラスのクラスIDを用いて、クラス使用量管理テーブルメモリ24g、クラスフロー数管理テーブルメモリ24h、及びWRRクラス順管理テーブルメモリ29cを更新し、サービスフローのフローIDを用いて、フロー使用量管理テーブルメモリ23d、先頭ブロック管理テーブルメモリ23e、最後尾ブロック管理テーブルメモリ23f、WRRフロー順管理テーブルメモリ28c、及び基本量管理テーブルメモリ23cを更新し、クラスIDとフローIDを用いて最超過フロー超過使用量管理テーブルメモリ24iを更新する。
【0171】
以上説明したように、本発明に係る実施形態の出力ポートコントローラ20によるバッファメモリ管理では、まずフロー毎に最低限使用可能なバッファメモリ量(すなわち、基本量)を論理的に確保する。バッファメモリの使用率が低い状態では、各フローは基本量に関わらずバッファメモリの使用を許可される。使用率が高い状態に遷移しバッファメモリがフルになった場合、基本量を超えてバッファメモリを使用しているフローについてはそのまま廃棄されるが、逆に基本量に達していないフローが到着したときには、プッシュアウト機構を採用することにより、到着パケットのバッファメモリ使用が許可される。プッシュアウト対象パケットのサーチが終了すると、そのバッファメモリ位置上に到着パケットが上書きされ、上書きされたパケットは廃棄される。プッシュアウト対象パケットをサーチした結果、基本量以上使用しているフローが存在しない場合は、到着パケットは廃棄される。このような機構によって、特定コネクションに対するバッファメモリ空間の過度の独占使用を防止し、各フローの最低レートを保証する方法が実現される。本実施形態の重要な特徴は基本量の決定法にある。本実施形態の方法では、この基本量をポート、クラス、フローの順に階層的に格納して管理することにより、1つのバッファメモリを複数のポートで共有する環境において、それぞれに対するトラヒックのQoSをより効率的に保証することが可能となる。
【0172】
また、本実施形態では、パケットサービス規律としてWRRを採用した。WRRを使用するに当たり、各フローに対する重み係数を決定する必要がある。重み係数決定法では、まず帯域保証型クラスに優先的に全リンク容量のうち保証分の配分を行う。残りの帯域を他クラスで予め決定された重み係数に従って配分する。配分された帯域を簡単な整数比に換算することにより重み係数とする。以上の手順を用いることにより、帯域保証型クラスにはその契約帯域を確実に保証し、他のクラスに対しても優先制御が実現できる。また本実施形態において、基本量配分、プッシュアウト機構による廃棄制御と帯域配分法の連携をとることにより、バッファメモリ高負荷時においてもクラスに見合ったサービスを提供し、高度なQoS保証が可能となる。
【0173】
さらに、本実施形態によれば、ルータ装置を高速に動作させるように論理設計するための以下の2つの課題を以下のように解決したことを特徴としている。
【0174】
1つ目の課題は、基本量の管理であった。本実施形態ではフロー毎に基本量の管理を行う。帯域保証型フローに配分される基本量は、そのフローの優先度に従い固定値を取るが、ベストエフォート型フローに配分される基本量は、全バッファメモリ量から帯域保証型フローに配分された基本量の総和を減算した残りバッファメモリ量を優先度に従って配分される。つまり、ベストエフォート型フローに対する基本量は新しいフローの発生、並びにフローの消滅によって変動することとなり、フロー数の変化毎に全フローの基本量を再計算していては処理速度が極度に減少するという問題点が発生する。この問題を解決するために本実施形態では、帯域保証型クラスのフローに対しては、基本量をフロー毎に管理し、ベストエフォート型クラスのフローに対しては、ベストエフォート型クラス用基本量として、全バッファメモリ量から帯域保証型クラスに配分された基本量の総和を減算した量のみを格納して管理する。そのため、超過使用量を演算する際には、その度に基本量の演算を行う必要があるが、全フローに対する基本量の変更を行う必要がなくなるため管理機構の高速化が可能となる。
【0175】
また、2つ目の課題は、最超過使用フローの管理であった。プッシュアウトの対象となるフローは、最も基本量を超過使用しているフローである。パケット到着時に高速にプッシュアウト対象フローを決定するためには、予め最超過使用クラス、クラス毎に最超過使用フローを格納して管理しておく必要があるが、全フローの超過使用量をチェックして、最も超過しているフローを決定するという手法では、定期的に動作させるとしても処理時間が膨大になるという問題が発生していた。そこで、本実施形態では、最超過使用クラス、最超過使用フローの管理を以下のように行うことを提案している。まず、パケットが到着した時に、到着したフローの超過使用量と、格納して管理している最超過使用フローの超過使用量を比較する。到着フローの方が大きい場合は、最超過フローIDとその超過使用量の変更を行う。逆に管理フローの方が大きい場合は、管理データの変更を行わないとする。また、パケットを送信する時は、送信したフローIDと、格納して管理している最超過使用フローのIDが一致する場合、管理している最超過使用フローの超過使用量の更新を行う。逆にフローIDが一致しない場合は、管理データの変更を行わない。上記の方法により、全フローの超過使用量のチェックを行う必要がなくなり、管理機構の高速化が達成される。
【0176】
以上説明したように、本実施形態に係る基本量の管理方法によれば、送信すべきパケットが属する各フローに対してバッファメモリ13に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当てるときに、帯域保証型クラスに属するパケットの各フローに対する基本量を、当該各フローが要求するメモリサイズだけ個別に割り当てて管理する一方、ベストエフォート型クラスに属するパケットの各フローに対する基本量を、バッファメモリ13全体のメモリサイズから、上記帯域保証型クラスに割り当てられた各基本量の総和を減算したメモリサイズを一括して割り当てて管理する。ここで、好ましくは、ベストエフォート型クラス毎に、優先度とそのクラスに属するフローの本数との積を計算し、それらの積を、ベストエフォート型クラスの個数について総和を計算することにより、ベストエフォート型クラスにおける総優先度を計算し、受信されたパケットのフローが属するクラスの優先度を、上記計算した総優先度で除算することにより、当該受信されたパケットに対する基本量配分割合を計算し、上記計算した基本量配分割合とベストエフォート型クラス用基本量との積を計算することにより当該受信されたパケットのフローの基本量を計算する。従って、超過使用量を演算する際には、その度に基本量の演算を行う必要があるが、全フローに対する基本量の変更を行う必要がなくなるため、出力ポートコントローラ20の処理を従来技術に比較して高速化できる。
【0177】
また、本実施形態に係る超過使用量の管理方法によれば、送信すべきパケットが属する各フローに対してバッファメモリ13に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当て、各フローのバッファメモリ13における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、バッファメモリ13を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理し、所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新する。ここで、好ましくは、上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新する。従って、全フローの超過使用量のチェックを行う必要がなくなり、出力ポートコントローラ20の処理を従来技術に比較して高速化できる。
【0178】
さらに、本実施形態に係るサービス順序の管理方法によれば、複数のフローがバッファメモリ13に格納されているときの各フローを送信する順序を管理するために、各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する管理テーブル28cを備え、送信すべき新たなフローがバッファメモリ13に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように管理テーブル28cを更新する。従って、上記管理テーブル28cを備えたので、次の送信すべきフローを検索する必要がなくなり、出力ポートコントローラ20の処理を従来技術に比較して高速化できる。
【0179】
またさらに、本実施形態に係るバッファメモリ20のブロック化と連結管理方法によれば、バッファメモリ20は所定のブロック長の複数のブロックに分割され、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する管理テーブル22cを備え、各フローのパケットの連結状態を管理する。従って、バッファメモリ20を効率的に使用できるとともに、管理テーブル22cを備えたので、次に連結するブロックを容易に検索することができ、出力ポートコントローラ20の処理を従来技術に比較して高速化できる。
【0180】
さらに、本実施形態に係るルータ装置によれば、図1の出力ポートコントローラ20を有する出力ポート回路3を備えたので、クラスに見合ったサービスを提供できるとともに、特定のフローによるバッファメモリ20の占有を解消でき、しかも出力ポート回路3内のバッファメモリ20に対するパケットの入出力の処理を高速化することができる。
【0181】
【発明の効果】
以上詳述したように、第1の発明に係るルータ装置の出力ポート回路によれば、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、上記出力ポート回路は、送信すべきパケットを一時的に格納する記憶手段と、上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、上記制御手段は、送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当てるときに、帯域保証型クラスに属するパケットの各フローに対する基本量を、当該各フローが要求するメモリサイズだけ個別に割り当てて管理する一方、ベストエフォート型クラスに属するパケットの各フローに対する基本量を、上記記憶手段全体のメモリサイズから、上記帯域保証型クラスに割り当てられた各基本量の総和を減算したメモリサイズを一括して割り当てて管理する。ここで、好ましくは、上記制御手段は、ベストエフォート型クラス毎に、優先度とそのクラスに属するフローの本数との積を計算し、それらの積を、ベストエフォート型クラスの個数について総和を計算することにより、ベストエフォート型クラスにおける総優先度を計算し、受信されたパケットのフローが属するクラスの優先度を、上記計算した総優先度で除算することにより、当該受信されたパケットに対する基本量配分割合を計算し、上記計算した基本量配分割合とベストエフォート型クラス用基本量との積を計算することにより当該受信されたパケットのフローの基本量を計算する。従って、超過使用量を演算する際には、その度に基本量の演算を行う必要があるが、全フローに対する基本量の変更を行う必要がなくなるため、上記制御手段の処理を従来技術に比較して高速化できる。
【0182】
また、第2の発明に係るルータ装置の出力ポート回路によれば、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、上記出力ポート回路は、送信すべきパケットを一時的に格納する記憶手段と、上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、上記制御手段は、送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当て、各フローの記憶手段における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、上記記憶手段を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理し、上記制御手段は、所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新する。ここで、好ましくは、上記制御手段は、上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新する。従って、全フローの超過使用量のチェックを行う必要がなくなり、上記制御手段の処理を従来技術に比較して高速化できる。
【0183】
さらに、第3の発明に係るルータ装置の出力ポート回路によれば、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、上記出力ポート回路は、送信すべきパケットを一時的に格納する記憶手段と、上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、上記制御手段は、複数のフローが上記記憶手段に格納されているときの各フローを送信する順序を管理するために、各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する第1の管理テーブルをさらに備え、送信すべき新たなフローが上記記憶手段に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように上記第1の管理テーブルを更新する。従って、上記第1の管理テーブルを備えたので、次の送信すべきフローを検索する必要がなくなり、上記制御手段の処理を従来技術に比較して高速化できる。
【0184】
またさらに、第4の発明に係るルータ装置の出力ポート回路によれば、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、上記出力ポート回路は、送信すべきパケットを一時的に格納する記憶手段と、上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、上記記憶手段は所定のブロック長の複数のブロックに分割され、上記制御手段は、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する第2の管理テーブルをさらに備え、各フローのパケットの連結状態を管理する。従って、上記記憶手段を効率的に使用できるとともに、上記第2の管理テーブルを備えたので、次に連結するブロックを容易に検索することができ、上記制御手段の処理を従来技術に比較して高速化できる。
【0185】
さらに、第5の発明に係るルータ装置によれば、入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置において、上記ルータ装置の出力ポート回路を備える。従って、クラスに見合ったサービスを提供できるとともに、特定のフローによる記憶手段の占有を解消でき、しかも出力ポート回路内の記憶手段に対するパケットの入出力の処理を高速化することができる。
【図面の簡単な説明】
【図1】 本発明の実施形態に係るルータ装置の構成を示すブロック図である。
【図2】 図1の出力ポート回路3の詳細な構成を示すブロック図である。
【図3】 (a)は図1の出力ポート回路3への到着パケットを示す図であり、(b)は図2のバッファメモリ13のメモリ空間を示す図であり、(c)は出力ポート回路3からの送信パケットを示す図である。
【図4】 図2の空き領域管理部21によって管理される空き領域管理テーブルT1の概略構成の一例を示す図である。
【図5】 図4の空き領域管理テーブルT1を用いた空き領域管理を説明するための概略説明図である。
【図6】 図2の格納場所管理部22によって管理される格納場所管理テーブルT2の概略構成の一例を示す図である。
【図7】 図6の格納場所管理テーブルT2を用いた格納場所管理を説明するための概略説明図である。
【図8】 図2のフロー管理部23によって管理される帯域保証型クラスに属するフローのためのフロー管理テーブルT3の概略構成の一例を示す図である。
【図9】 図8のフロー管理テーブルT3を用いた先頭ブロック及び最後尾ブロックの管理を説明するための概略説明図である。
【図10】 図2のクラス管理部24によって管理されるクラス管理テーブルT4の概略構成の一例を示す図である。
【図11】 図2のポート管理部25によって管理されるポート管理テーブルT5の概略構成の一例を示す図である。
【図12】 図2のWRRフロー順管理部28によって管理されるWRRフロー順管理テーブルT6の概略構成の一例を示す図である。
【図13】 図12のWRRフロー順管理テーブルT6を用いたサービスフロー順の管理を説明するための概略説明図である。
【図14】 図2の前サービスフロー管理部26によって管理される前サービスフロー管理テーブルT7の概略構成の一例を示す図である。
【図15】 図14の前サービスフロー管理テーブルT7を用いたサービスフロー順の管理を説明するための概略説明図であり、(a)は新規のフローが発生したときの前サービスフロー管理を示す図であり、(b)は(a)の後のデータ更新処理を示す図である。
【図16】 図2のバッファメモリ13の記憶領域を、帯域保証型クラスのフローと、ベストエフォート型クラスのフローとの間で分配する方法を説明するための概略説明図である。
【図17】 図2の格納場所決定部17によって実行される、パケット到着時における最超過フローの管理処理を示すフローチャートである。
【図18】 図2のスケジューラ18によって実行される、パケット送信時における最超過フローの管理処理を示すフローチャートである。
【図19】 図2のクラス管理部24によって管理される最超過フロー管理テーブルT8を用いた最超過フロー管理を説明するための概略説明図であり、(a)は初期状態の(a1)最超過フロー管理テーブルT8と(a2)フロー毎の超過使用量の現在の状態とを示す図であり、(b)はパケットサイズが2であるフロー3が到着したときの(b1)最超過フロー管理テーブルT8と(b2)フロー毎の超過使用量の現在の状態とを示す図であり、(c)はパケットサイズが2であるフロー3を送信したときの(c1)最超過フロー管理テーブルT8と(c2)フロー毎の超過使用量の現在の状態とを示す図であり、(d)はパケットサイズが2であるフロー1が到着したときの(d1)最超過フロー管理テーブルT8と(d2)フロー毎の超過使用量の現在の状態とを示す図である。
【図20】 図2の格納場所決定部17の詳細構成と格納場所決定処理のフローとを示すブロック図である。
【図21】 図20のパケット格納用後処理部37の詳細構成を示すブロック図である。
【図22】 図2のスケジューラ18の詳細構成と送信パケット決定処理のフローとを示すブロック図である。
【図23】 図22のパケット送信用後処理部52の詳細構成を示すブロック図である。
【図24】 図2の空き領域管理部21の詳細構成を示すブロック図である。
【図25】 図24の空き領域管理部21によって管理されるデータの一例を示す図であり、(a)は空き領域管理テーブルメモリ21c内の空き領域管理テーブルの一例を示す図であり、(b)はリスト先頭ブロック番号レジスタ21d内のリスト先頭ブロック番号の一例を示す図であり、(c)はリスト最後尾ブロック番号レジスタ21e内のリスト最後尾ブロック番号の一例を示す図であり、(d)は空きブロック数レジスタ21f内の空きブロック数の一例を示す図である。
【図26】 図2の格納場所管理部22の詳細構成を示すブロック図である。
【図27】 図26の格納場所管理テーブルメモリ22cによって管理される格納場所管理テーブルの一例を示す図である。
【図28】 図2のフロー管理部23の詳細構成を示すブロック図である。
【図29】 図28のフロー管理部23内のデータの一例を示す図であり、(a)は基本量管理テーブルメモリ23c内の基本量管理テーブルの一例を示す図であり、(b)はフロー使用量管理テーブルメモリ23d内のフロー使用量管理テーブルの一例を示す図であり、(c)は先頭ブロック管理テーブルメモリ23e内の先頭ブロック管理テーブルの一例を示す図であり、(d)は最後尾ブロック管理テーブルメモリ23f内の最後尾ブロック管理テーブルの一例を示す図である。
【図30】 図2のクラス管理部24の詳細構成を示すブロック図である。
【図31】 図30のクラス管理部24内のデータの一例を示す図であり、(a)はクラス使用量管理テーブルメモリ24g内のクラス使用量管理テーブルの一例を示す図であり、(b)はクラスフロー数管理テーブルメモリ24h内のクラスフロー数管理テーブルの一例を示す図であり、(c)は最超過フロー超過使用量管理テーブルメモリ24i内の最超過フロー超過使用量管理テーブルの一例を示す図である。
【図32】 図2の前サービスフロー管理部26の詳細構成を示すブロック図である。
【図33】 図2の前サービスクラス管理部27の詳細構成を示すブロック図である。
【図34】 図2のWRRフロー順管理部28の詳細構成を示すブロック図である。
【図35】 図34のWRRフロー順管理テーブルメモリ28c内のWRRフロー順管理テーブルの一例を示す図である。
【図36】 図2のWRRクラス順管理部29の詳細構成を示すブロック図である。
【図37】 図36のWRRクラス順管理テーブルメモリ29c内のWRRクラス順管理テーブルの一例を示す図である。
【図38】 図2の出力ポートコントローラ20によって実行される、パケット到着時の処理の第1の部分を示すタイミングチャートである。
【図39】 図2の出力ポートコントローラ20によって実行される、パケット到着時の処理の第2の部分を示すタイミングチャートである。
【図40】 図2の出力ポートコントローラ20によって実行される、パケット到着時の処理の第3の部分を示すタイミングチャートである。
【図41】 図2の出力ポートコントローラ20によって実行される、パケット到着時の処理の第4の部分を示すタイミングチャートである。
【図42】 図2のプッシュアウト対象ブロック決定部15に含まれる、ベストエフォート型クラスに属するフローに対する超過使用量演算処理を実行する回路のブロック図である。
【図43】 図2のプッシュアウト対象ブロック決定部15に含まれる、帯域保証型クラスに属するフローに対する超過使用量演算処理を実行する回路のブロック図である。
【図44】 図20のセレクタ35によって実行される、到着パケットのための格納場所決定を説明するための概略説明図である。
【図45】 図2の出力ポートコントローラ20によって実行される、パケット送信時の処理の第1の部分を示すタイミングチャートである。
【図46】 図2の出力ポートコントローラ20によって実行される、パケット送信時の処理の第2の部分を示すタイミングチャートである。
【図47】 従来技術に係るバッファメモリの記憶領域を分配する方法を説明するための概略説明図である。
【図48】 図47で分配されたバッファメモリの記憶領域を超過して使用しているクラスのパケットを廃棄する方法を説明するための概略説明図であり、(a)は同一ポートの異なるクラスのパケットを廃棄する場合を示す図であり、(b)は異なるポートのクラスのパケットを廃棄する場合を示す図である。
【図49】 従来技術において、送信に利用可能な全帯域幅をポート、クラス及びフローで階層的に分配する方法を説明するための概略説明図である。
【符号の説明】
1−1乃至1−N…入力ポート回路、
1a…高速パスコントローラ、
1b…キューメモリ、
1c…低速パスコントローラ、
1d…マルチプレクサ、
2…スイッチファブリック回路、
3−1乃至3−N…出力ポート回路、
4…ルーティングプロセッサ、
11…ヘッダ情報取得部、
12…一時的パケット格納メモリ、
13…バッファメモリ、
13a,13b…フローキューメモリ、
14…パケット送信部、
15…プッシュアウト対象ブロック決定部、
16…格納ブロック決定部、
17…格納場所決定部、
18…スケジューラ、
20…出力ポートコントローラ、
21…空き領域管理部、
21a,22a,23a,24a,26a,27a,28a,29a,41,61…入出力インターフェース、
21b,22b,23b,24b,26b,27b,28b,29b,42,62…コントローラ、
21c…空き領域管理テーブルメモリ、
21d…リスト先頭ブロック番号レジスタ、
21e…リスト最後尾ブロック番号レジスタ、
21f…空きブロック数レジスタ、
22…格納場所管理部、
22c…格納場所管理テーブルメモリ、
23…フロー管理部、
23c…基本量管理テーブルメモリ、
23d…フロー使用量管理テーブルメモリ、
23e…先頭ブロック管理テーブルメモリ、
23f…最後尾ブロック管理テーブルメモリ、
23g…フロー優先度レジスタ、
24…クラス管理部、
24c…最超過フローレジスタ、
24d…最超過クラスレジスタ、
24e…クラス優先度レジスタ、
24f…BEクラス基本量レジスタ、
24g…クラス使用量管理テーブルメモリ、
24h…クラスフロー数管理テーブルメモリ、
24i…最超過フロー超過使用量管理テーブルメモリ、
25…ポート管理部、
26…前サービスフロー管理部、
26c…前サービスフロー管理レジスタ、
26d…フロー残りサービス回数レジスタ、
27…前サービスクラス管理部、
27c…前サービスクラス管理レジスタ、
27d…クラス残りサービス回数レジスタ、
28…WRRフロー順管理部、
28c…WRRフロー順管理テーブルメモリ、
29…WRRクラス順管理部、
29c…WRRクラス順管理テーブルメモリ、
30…WRRポート順管理部、
35,SE1乃至SE8,SE11,SE12…セレクタ、
36…後処理用前置処理部、
37…パケット格納用後処理部、
43…超過使用クラス演算回路、
44…超過使用フロー演算回路、
45…サービスクラスチェック回路、
46…サービスフローチェック回路、
47…BEクラス基本量演算回路、
48…優先度演算回路、
51…サービスパケット出力決定部、
52…パケット送信用後処理部、
53…次サービスパケット選択部、
63…クラスサービス回数演算回路、
64…フローサービス回数演算回路、
65…優先度演算回路、
66…最超過クラス超過使用量演算回路、
67…最超過フロー超過使用量演算回路、
OP1,OP2,OP4,OP6…乗算器、
OP3…加算器、
OP5…除算器、
OP7,OP8…減算器、
R1…最超過クラス超過使用量レジスタ、
R2…新管理クラスレジスタ、
R3…新管理クラス超過使用量レジスタ、
R4…新管理フローレジスタ、
R5…新管理フロー超過使用量レジスタ、
R11…サービスクラス保持レジスタ、
R12…サービスフロー保持レジスタ、
R13…最超過クラス超過使用量レジスタ、
R14…最超過フロー超過使用量レジスタ、
T1…空き領域管理テーブル、
T2…格納場所管理テーブル、
T3…フロー管理テーブル、
T4…クラス管理テーブル、
T5…ポート管理テーブル、
T6…WRRフロー順管理テーブル、
T7…前サービスフロー管理テーブル、
T8…最超過フロー管理テーブル。
Claims (21)
- 入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
上記出力ポート回路は、
送信すべきパケットを一時的に格納する記憶手段と、
上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、
上記制御手段は、送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当てるときに、帯域保証型クラスに属するパケットの各フローに対する基本量を、当該各フローが要求するメモリサイズだけ個別に割り当てて管理する一方、ベストエフォート型クラスに属するパケットの各フローに対する基本量を、上記記憶手段全体のメモリサイズから、上記帯域保証型クラスに割り当てられた各基本量の総和を減算したメモリサイズを一括して割り当てて管理することを特徴とするルータ装置の出力ポート回路。 - 上記制御手段は、ベストエフォート型クラス毎に、優先度とそのクラスに属するフローの本数との積を計算し、それらの積を、ベストエフォート型クラスの個数について総和を計算することにより、ベストエフォート型クラスにおける総優先度を計算し、受信されたパケットのフローが属するクラスの優先度を、上記計算した総優先度で除算することにより、当該受信されたパケットに対する基本量配分割合を計算し、上記計算した基本量配分割合とベストエフォート型クラス用基本量との積を計算することにより当該受信されたパケットのフローの基本量を計算することを特徴とする請求項1記載のルータ装置の出力ポート回路。
- 入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
上記出力ポート回路は、
送信すべきパケットを一時的に格納する記憶手段と、
上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、
上記制御手段は、送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当て、各フローの記憶手段における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、上記記憶手段を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理し、
上記制御手段は、所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新することを特徴とするルータ装置の出力ポート回路。 - 上記制御手段は、上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新することを特徴とする請求項3記載のルータ装置の出力ポート回路。
- 上記制御手段は、各フローの記憶手段における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、上記記憶手段を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理し、
上記制御手段は、所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新することを特徴とする請求項1又は2記載のルータ装置の出力ポート回路。 - 上記制御手段は、上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新することを特徴とする請求項5記載のルータ装置の出力ポート回路。
- 入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
上記出力ポート回路は、
送信すべきパケットを一時的に格納する記憶手段と、
上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、
上記制御手段は、複数のフローが上記記憶手段に格納されているときの各フローを送信する順序を管理するために、各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する第1の管理テーブルをさらに備え、送信すべき新たなフローが上記記憶手段に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように上記第1の管理テーブルを更新することを特徴とするルータ装置の出力ポート回路。 - 上記制御手段は、複数のフローが上記記憶手段に格納されているときの各フローを送信する順序を管理するために、各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する第1の管理テーブルをさらに備え、送信すべき新たなフローが上記記憶手段に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように上記第1の管理テーブルを更新することを特徴とする請求項1乃至6のうちのいずれか1つに記載のルータ装置の出力ポート回路。
- 入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
上記出力ポート回路は、
送信すべきパケットを一時的に格納する記憶手段と、
上記記憶手段への上記パケットの格納及び読み出しを制御する制御手段とを備え、
上記記憶手段は所定のブロック長の複数のブロックに分割され、上記制御手段は、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する第2の管理テーブルをさらに備え、各フローのパケットの連結状態を管理することを特徴とするルータ装置の出力ポート回路。 - 上記記憶手段は所定のブロック長の複数のブロックに分割され、上記制御手段は、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する第2の管理テーブルをさらに備え、各フローのパケットの連結状態を管理することを特徴とする請求項1乃至8のうちのいずれか1つに記載のルータ装置の出力ポート回路。
- 入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置において、請求項1乃至10のうちのいずれか1つに記載のルータ装置の出力ポート回路を備えたことを特徴とするルータ装置。
- 入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路の制御方法において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
送信すべきパケットを一時的に格納する記憶手段への上記パケットの格納及び読み出しを制御するステップと、
送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当てるときに、帯域保証型クラスに属するパケットの各フローに対する基本量を、当該各フローが要求するメモリサイズだけ個別に割り当てて管理する一方、ベストエフォート型クラスに属するパケットの各フローに対する基本量を、上記記憶手段全体のメモリサイズから、上記帯域保証型クラスに割り当てられた各基本量の総和を減算したメモリサイズを一括して割り当てて管理するステップを含むことを特徴とするルータ装置用出力ポート回路の制御方法。 - ベストエフォート型クラス毎に、優先度とそのクラスに属するフローの本数との積を計算し、それらの積を、ベストエフォート型クラスの個数について総和を計算することにより、ベストエフォート型クラスにおける総優先度を計算し、受信されたパケットのフローが属するクラスの優先度を、上記計算した総優先度で除算することにより、当該受信されたパケットに対する基本量配分割合を計算し、上記計算した基本量配分割合とベストエフォート型クラス用基本量との積を計算することにより当該受信されたパケットのフローの基本量を計算するステップをさらに含むことを特徴とする請求項12記載のルータ装置用出力ポート回路の制御方法。
- 入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路の制御方法において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
送信すべきパケットを一時的に格納する記憶手段への上記パケットの格納及び読み出しを制御するステップと、
送信すべきパケットが属する各フローに対して上記記憶手段に格納可能なメモリサイズの基準となる基本量をそれぞれ割り当て、各フローの記憶手段における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、上記記憶手段を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理するステップと、
所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新するステップとを含むことを特徴とするルータ装置用出力ポート回路の制御方法。 - 上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新するステップをさらに含むことを特徴とする請求項14記載のルータ装置用出力ポート回路の制御方法。
- 各フローの記憶手段における実際の使用量に基づいて、送信すべきパケットの当該フローの基本量に対する超過使用量を計算し、上記記憶手段を上記基本量に対して最も超過して使用しているフローのみのフロー情報とその超過使用量を管理するステップと、
所定のフローに属するパケットを受信したときに、管理している超過使用量よりも超過使用量が大きいフローが発生するとき、フロー情報及び超過使用量を新たに受信したパケットが属するフローのフロー情報及び超過使用量に更新するステップとをさらに含むことを特徴とする請求項12又は13記載のルータ装置用出力ポート回路の制御方法。 - 上記割り当てられた基本量を最も超過して使用しているフローに属するパケットが当該ルータ装置から送信されるときに、上記管理している超過使用量のみを当該フローの送信後の超過使用量に更新するステップをさらに含むことを特徴とする請求項16記載のルータ装置用出力ポート回路の制御方法。
- 入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路の制御方法において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
送信すべきパケットを一時的に格納する記憶手段への上記パケットの格納及び読み出しを制御するステップと、
各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する第1の管理テーブルを用いて、複数のフローが上記記憶手段に格納されているときの各フローを送信する順序を管理し、送信すべき新たなフローが上記記憶手段に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように上記第1の管理テーブルを更新するステップを含むことを特徴とするルータ装置用出力ポート回路の制御方法。 - 各フロー毎に、当該フローの次に送信すべきフローのフロー情報を格納する第1の管理テーブルを用いて、複数のフローが上記記憶手段に格納されているときの各フローを送信する順序を管理し、送信すべき新たなフローが上記記憶手段に格納されたとき、上記新たなフローを、上記現在送信しているフローの前のフローの次の順序に指定するように上記第1の管理テーブルを更新するステップをさらに含むことを特徴とする請求項12乃至17のうちのいずれか1つに記載のルータ装置用出力ポート回路の制御方法。
- 入力ポート回路を介して受信されたパケットをスイッチファブリック回路により各出力ポート回路を介して各隣接するノードにルーティングして送信するルータ装置のための出力ポート回路の制御方法において、
連続した複数のパケットによりフローを構成し、上記フローは帯域保証型クラス又はベストエフォート型クラスに属し、
送信すべきパケットを一時的に格納する記憶手段への上記パケットの格納及び読み出しを制御するステップと、
上記記憶手段は所定のブロック長の複数のブロックに分割され、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する第2の管理テーブルを用いて、各フローのパケットの連結状態を管理するステップを含むことを特徴とするルータ装置用出力ポート回路の制御方法。 - 上記記憶手段は所定のブロック長の複数のブロックに分割され、パケットを記憶したブロックの情報と、上記パケットを記憶したブロックの次に連結されるべきブロックの情報と対応づけて格納する第2の管理テーブルを用いて、各フローのパケットの連結状態を管理するステップをさらに含むことを特徴とする請求項12乃至17のうちのいずれか1つに記載のルータ装置用出力ポート回路の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002365494A JP3643827B2 (ja) | 2002-12-17 | 2002-12-17 | ルータ装置とその出力ポート回路及びその制御方法 |
US10/736,984 US7321594B2 (en) | 2002-12-17 | 2003-12-17 | Router apparatus provided with output port circuit including storage unit, and method of controlling output port circuit of router apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002365494A JP3643827B2 (ja) | 2002-12-17 | 2002-12-17 | ルータ装置とその出力ポート回路及びその制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004200905A JP2004200905A (ja) | 2004-07-15 |
JP3643827B2 true JP3643827B2 (ja) | 2005-04-27 |
Family
ID=32763033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002365494A Expired - Fee Related JP3643827B2 (ja) | 2002-12-17 | 2002-12-17 | ルータ装置とその出力ポート回路及びその制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7321594B2 (ja) |
JP (1) | JP3643827B2 (ja) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050185582A1 (en) * | 2004-02-20 | 2005-08-25 | Samsung Electronics Co., Ltd. | Apparatus and method for managing traffic and quality of service in a high-speed router |
US7509465B1 (en) * | 2004-06-25 | 2009-03-24 | Emc Corporation | System and method for managing memory or session resources used for movement of data being copied in a data storage environment |
JP4117889B2 (ja) * | 2004-11-08 | 2008-07-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ウェブアプリケーションを実行するための通信を制御するコンピュータおよびその方法 |
CN101061681B (zh) | 2004-11-22 | 2011-06-08 | 皇家飞利浦电子股份有限公司 | 无线网络中无明确业务说明的通信时间公平传输管理 |
JP4407568B2 (ja) * | 2005-01-19 | 2010-02-03 | 日本電気株式会社 | 情報処理システム、情報処理装置及びそれらに用いる情報処理方法並びにそのプログラム |
US20060187917A1 (en) * | 2005-02-18 | 2006-08-24 | Broadcom Corporation | Pre-learning of values with later activation in a network device |
US8331380B2 (en) * | 2005-02-18 | 2012-12-11 | Broadcom Corporation | Bookkeeping memory use in a search engine of a network device |
US7856026B1 (en) * | 2005-06-28 | 2010-12-21 | Altera Corporation | Configurable central memory buffered packet switch module for use in a PLD |
US8392684B2 (en) | 2005-08-12 | 2013-03-05 | Silver Peak Systems, Inc. | Data encryption in a network memory architecture for providing data based on local accessibility |
US8171238B1 (en) | 2007-07-05 | 2012-05-01 | Silver Peak Systems, Inc. | Identification of data stored in memory |
US8095774B1 (en) | 2007-07-05 | 2012-01-10 | Silver Peak Systems, Inc. | Pre-fetching data into a memory |
US8489562B1 (en) | 2007-11-30 | 2013-07-16 | Silver Peak Systems, Inc. | Deferred data storage |
US8929402B1 (en) | 2005-09-29 | 2015-01-06 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data by predicting subsequent data |
US8811431B2 (en) | 2008-11-20 | 2014-08-19 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data |
KR101266556B1 (ko) * | 2006-01-05 | 2013-05-24 | 삼성전자주식회사 | 데피싯 라운드 로빈 방식 데이터 패킷 스케줄링의 인스턴트서비스 방법 |
JP4509945B2 (ja) * | 2006-02-08 | 2010-07-21 | 富士通株式会社 | データ転送装置におけるデバイスの発熱制御装置 |
JP4682900B2 (ja) * | 2006-03-31 | 2011-05-11 | 日本電気株式会社 | データ転送装置、優先制御方法及び優先制御プログラム |
FR2899413B1 (fr) * | 2006-03-31 | 2008-08-08 | Arteris Sa | Systeme de commutation de message |
US8885632B2 (en) | 2006-08-02 | 2014-11-11 | Silver Peak Systems, Inc. | Communications scheduler |
US8755381B2 (en) | 2006-08-02 | 2014-06-17 | Silver Peak Systems, Inc. | Data matching using flow based packet data storage |
TW200833026A (en) * | 2007-01-29 | 2008-08-01 | Via Tech Inc | Packet processing method and a network device using the method |
TWI330964B (en) * | 2007-01-29 | 2010-09-21 | Via Tech Inc | Packet processing method and a network device using the method |
US7843929B2 (en) * | 2007-04-20 | 2010-11-30 | Cray Inc. | Flexible routing tables for a high-radix router |
US8307115B1 (en) | 2007-11-30 | 2012-11-06 | Silver Peak Systems, Inc. | Network memory mirroring |
US10164861B2 (en) | 2015-12-28 | 2018-12-25 | Silver Peak Systems, Inc. | Dynamic monitoring and visualization for network health characteristics |
US9717021B2 (en) | 2008-07-03 | 2017-07-25 | Silver Peak Systems, Inc. | Virtual network overlay |
US8743683B1 (en) | 2008-07-03 | 2014-06-03 | Silver Peak Systems, Inc. | Quality of service using multiple flows |
US10805840B2 (en) | 2008-07-03 | 2020-10-13 | Silver Peak Systems, Inc. | Data transmission via a virtual wide area network overlay |
CN102137005B (zh) * | 2010-12-31 | 2014-04-02 | 华为技术有限公司 | 一种通信系统中的数据转发方法、装置和系统 |
US9130991B2 (en) | 2011-10-14 | 2015-09-08 | Silver Peak Systems, Inc. | Processing data packets in performance enhancing proxy (PEP) environment |
US9626224B2 (en) | 2011-11-03 | 2017-04-18 | Silver Peak Systems, Inc. | Optimizing available computing resources within a virtual environment |
JP5838365B2 (ja) * | 2012-07-24 | 2016-01-06 | パナソニックIpマネジメント株式会社 | バスシステムおよび中継器 |
CN103152289B (zh) * | 2013-01-28 | 2016-08-17 | 山东智慧生活数据系统有限公司 | 一种层次化服务质量调度方法和装置 |
US8887217B2 (en) | 2013-03-13 | 2014-11-11 | Futurewei Technologies, Inc. | Systems and methods for quality of experience aware joint scheduling of buffered video on demand and best effort flows |
US20150089058A1 (en) * | 2013-09-26 | 2015-03-26 | Alcatel Lucent Usa, Inc. | System and method for software defined adaptation of broadband network gateway services |
US9948496B1 (en) | 2014-07-30 | 2018-04-17 | Silver Peak Systems, Inc. | Determining a transit appliance for data traffic to a software service |
US9875344B1 (en) | 2014-09-05 | 2018-01-23 | Silver Peak Systems, Inc. | Dynamic monitoring and authorization of an optimization device |
US10432484B2 (en) | 2016-06-13 | 2019-10-01 | Silver Peak Systems, Inc. | Aggregating select network traffic statistics |
US9967056B1 (en) | 2016-08-19 | 2018-05-08 | Silver Peak Systems, Inc. | Forward packet recovery with constrained overhead |
US10257082B2 (en) | 2017-02-06 | 2019-04-09 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows |
US10892978B2 (en) | 2017-02-06 | 2021-01-12 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows from first packet data |
US11044202B2 (en) | 2017-02-06 | 2021-06-22 | Silver Peak Systems, Inc. | Multi-level learning for predicting and classifying traffic flows from first packet data |
US10771394B2 (en) | 2017-02-06 | 2020-09-08 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows on a first packet from DNS data |
US11212210B2 (en) | 2017-09-21 | 2021-12-28 | Silver Peak Systems, Inc. | Selective route exporting using source type |
US10608943B2 (en) * | 2017-10-27 | 2020-03-31 | Advanced Micro Devices, Inc. | Dynamic buffer management in multi-client token flow control routers |
US11159440B2 (en) * | 2017-11-22 | 2021-10-26 | Marvell Israel (M.I.S.L) Ltd. | Hybrid packet memory for buffering packets in network devices |
US10637721B2 (en) | 2018-03-12 | 2020-04-28 | Silver Peak Systems, Inc. | Detecting path break conditions while minimizing network overhead |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4879382B2 (ja) * | 2000-03-22 | 2012-02-22 | 富士通株式会社 | パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置 |
US6907261B2 (en) * | 2001-09-28 | 2005-06-14 | Nokia Corporation | Apparatus, and associated method, for allocating power levels of best-effort communication signals in a CDMA communication system |
US20030210665A1 (en) * | 2002-05-08 | 2003-11-13 | Matti Salmenkaita | System and method for dynamic frequency allocation for packet switched services |
-
2002
- 2002-12-17 JP JP2002365494A patent/JP3643827B2/ja not_active Expired - Fee Related
-
2003
- 2003-12-17 US US10/736,984 patent/US7321594B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004200905A (ja) | 2004-07-15 |
US20040179542A1 (en) | 2004-09-16 |
US7321594B2 (en) | 2008-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3643827B2 (ja) | ルータ装置とその出力ポート回路及びその制御方法 | |
US7558278B2 (en) | Apparatus and method for rate-based polling of input interface queues in networking devices | |
US7499454B2 (en) | Pipeline scheduler with fairness and minimum bandwidth guarantee | |
US6654343B1 (en) | Method and system for switch fabric flow control | |
US6469983B2 (en) | Data packet transmission scheduling using a partitioned heap | |
JP3435293B2 (ja) | パケットスケジューリング装置及びパケット転送方法 | |
JP4879382B2 (ja) | パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置 | |
US6721796B1 (en) | Hierarchical dynamic buffer management system and method | |
JP4163044B2 (ja) | 帯域制御方法およびその帯域制御装置 | |
US7206858B2 (en) | DSL transmit traffic shaper structure and procedure | |
JP2002164916A (ja) | 中継装置 | |
JP2002512459A (ja) | デジタルデータネットワークにおいてメッセージ伝送をスケジューリングし、処理を行うシステムおよび方法 | |
JP2014187421A (ja) | 通信装置及びパケットスケジューリング方法 | |
JP2002232469A (ja) | スケジューリング装置およびスケジューリング方法 | |
JP2003531517A (ja) | 切断/再接続フロー・キューを使用して出力をスケジューリングするネットワーク・プロセッサのための方法およびシステム | |
US7310346B2 (en) | Node apparatus and packet transmission control method | |
CN113821516A (zh) | 一种基于虚拟队列的时间敏感网络交换架构 | |
WO2001020876A1 (en) | Allocating network bandwidth | |
CN113014465A (zh) | 一种基于服务质量特性的总线传输接口系统及设计方法 | |
KR20120055947A (ko) | 가입자 인지 플로우별 QoS 제공 방법 및 장치 | |
CN117155874A (zh) | 数据包发送方法、转发节点、发送端及存储介质 | |
US6643702B1 (en) | Traffic scheduler for a first tier switch of a two tier switch | |
KR100745679B1 (ko) | 적응 라운드 로빈을 이용한 패킷 스케쥴링 방법 및 장치 | |
JP2004140538A (ja) | 大容量化と低遅延化に対応したアービタおよびそれを用いたルータ | |
Zhu et al. | A new scheduling scheme for resilient packet ring networks with single transit buffer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050114 |
|
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: 20050125 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050131 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090204 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090204 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100204 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110204 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120204 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |