JP3791529B2 - フレームバッファ管理回路および方法 - Google Patents

フレームバッファ管理回路および方法 Download PDF

Info

Publication number
JP3791529B2
JP3791529B2 JP2004111024A JP2004111024A JP3791529B2 JP 3791529 B2 JP3791529 B2 JP 3791529B2 JP 2004111024 A JP2004111024 A JP 2004111024A JP 2004111024 A JP2004111024 A JP 2004111024A JP 3791529 B2 JP3791529 B2 JP 3791529B2
Authority
JP
Japan
Prior art keywords
frame
buffer
management
connection
memory block
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 - Lifetime
Application number
JP2004111024A
Other languages
English (en)
Other versions
JP2005295443A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2004111024A priority Critical patent/JP3791529B2/ja
Publication of JP2005295443A publication Critical patent/JP2005295443A/ja
Application granted granted Critical
Publication of JP3791529B2 publication Critical patent/JP3791529B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、Ethernet(登録商標)フレームなどを扱うスイッチにおいて、複数のコネクションを集線または多重する場合に、コネクション単位で優先制御や重み付きラウンドロビン(Weighted Round Robin)制御などによりフレームを読出すために、コネクションごとのバッファを備えるフレームバッファ管理方法および回路に関する。
ネットワーク上のスイッチにおいて複数のコネクションを集線または多重する場合、フレーム読出部において複数のコネクション間で共用する単一のFIFO(First In First Out)型バッファを使用すると、バッファ内の占有率や廃棄率に対して無関係に到着順でフレームを蓄積するため、帯域使用量および遅延時間の点でパワーユーザを収容するコネクションの方が有利になる。
コネクション間の帯域使用量および遅延時間の公平性を確保する手段としては、例えばコネクションごとに個別にFIFO型バッファを用いる手法がある。しかし、個別FIFO型バッファをメモリ占有方式で実装すると、メモリの使用効率が低くなるため、多くのメモリ容量を用意する必要がある。
多くのメモリを装置内に実装することは、実装面積やコストの点で不利である。そこで、バッファのためのメモリを必要に応じて動的に割当および開放を行うことにより、コネクション間でメモリを共用し使用効率を向上させる(例えば非特許文献1参照)。
特開平11−32055号公報
前記の方法では、共用するバッファ用メモリの管理にポインタチェーン(リンク)を用いている。ポインタチェーンは、バッファ用メモリをリンクによって接続するため、バッファ用メモリの管理が煩雑になって処理時間が増大する。スイッチが大容量化すると、1フレームに与えることができる処理時間は短くなるので、処理が間に合わなくなる可能性がある。
また、バッファ用メモリのリンクのための情報を保持する必要があるので、リンク用のメモリ容量を別途確保することになる。リンク用のメモリをバッファ用メモリとは別のメモリチップとして配置すると、実装面積および実装ピン数が増大してしまう。
さらに、前記の方法は、ATMセルなどの固定長フレームの収容を想定している。Ethernet(登録商標)フレームなどの可変長フレームを扱う場合、最大フレーム長に合わせてメモリブロックを用意すると、短フレームを格納する場合にメモリの使用効率が低下するので、フレーム長による影響を低減する必要がある。これらは実装時に制限となり得る。
従って、本発明は、Ethernet(登録商標)フレームなどの可変長フレームに対して、帯域使用量および遅延時間の点で公平な読出しを実現し、メモリの使用効率を高くし、かつリンクによる管理よりも高速化することができるフレームバッファ管理回路を提供することを目的とする。
本発明によれば、1以上のコネクションを収容し、コネクションごとにFIFO型のデータ構造を有し、全コネクション間で共用するメモリを動的に個別のコネクション用バッファとして割当および開放を行うフレームバッファ管理回路において、
入力されたフレームに対して、フレームヘッダ部に記録されている属性情報又は事前に与えられる設定値に基づいて、振分先のバッファを決定するフレーム振分手段と、
メモリブロックの集合として構成され、入力されたフレームの実体を格納するフレーム蓄積手段と、
コネクション用バッファを構成し、フレーム蓄積手段の一部であるメモリブロックをポインタにより指示および管理し、FIFO型のデータ構造を有するバッファ用メモリブロックアドレス管理手段と、
コネクション用バッファの先頭位置および後尾位置をポインタにより指示および管理するキュー管理手段と、
フレーム蓄積手段において使用していないメモリブロックをポインタにより指示および管理する空きメモリブロック管理手段と、
コネクション用バッファに収容するフレームの長さを保持するフレーム長管理手段と、
バッファのフレーム蓄積状態に関する情報に基づいて、操作対象となるフレームと蓄積または読出または廃棄のいずれかの操作を実行するかを判別する蓄積/読出/廃棄判別手段と、
フレーム蓄積手段からフレームを読出すフレーム読出手段と、
バッファにフレームを格納しきれなくなったときにフレームを廃棄するフレーム廃棄手段とを有することを特徴とする。
本発明のフレームバッファ管理回路における他の実施形態によれば、バッファの管理単位を単一コネクションの代わりに、コネクション群または方路またはこれらの組合わせとして扱うコネクショングループ情報管理手段を備えることも好ましい。
また、本発明のフレームバッファ管理回路における他の実施形態によれば、各コネクションが1以上のQoSクラス又はポートごとにバッファを保持および管理するマルチバッファ管理手段を備え、マルチバッファ管理手段は、コネクション内に1以上のQoSクラスまたはポートを収容するバッファ用メモリブロック管理手段と、コネクション内に1以上のQoSクラスまたはポートを収容するキュー管理手段を備えることも好ましい。
更に、本発明のフレームバッファ管理回路における他の実施形態によれば、バッファ用メモリブロックアドレス管理手段を構成する1以上のブロックをグループ化し、グループごとにバッファ用メモリブロックアドレス管理手段の一部として割当および開放を行う、アドレスグループ管理手段を備えることも好ましい。
更に、本発明のフレームバッファ管理回路における他の実施形態によれば、各コネクションのバッファ使用状況を監視するバッファ使用状況監視手段と、バッファ使用状況監視手段から取得した情報に基づいて、バッファ用メモリブロックアドレス管理手段で使用する最大キュー長を動的に決定する最大キュー長決定手段を備えることも好ましい。
更に、本発明のフレームバッファ管理回路における他の実施形態によれば、フレームバッファに収容するフレームの長さを、フレーム長管理手段の代わりに、フレーム蓄積手段に含まれるメモリブロック内にフレームの実体と併せて記録する拡張型フレーム蓄積手段を備えることも好ましい。
更に、本発明のフレームバッファ管理回路における他の実施形態によれば、優先的に廃棄するフレームを選択する優先廃棄フレーム選択手段を備えることも好ましい。
また、本発明によれば、1以上のコネクションを収容し、コネクションごとにFIFO型のデータ構造を有し、全コネクション間で共用するメモリを動的に個別のコネクション用バッファとして割当および開放を行うフレームバッファ管理方法において、
入力されたフレームに対して、フレームヘッダ部に記録されている属性情報又は事前に与えられる設定値に基づいて、振分先のバッファを決定するフレーム振分ステップと、
メモリブロックの集合として構成され、入力されたフレームの実体を格納するフレーム蓄積ステップと、
コネクション用バッファを構成し、FIFO型のデータ構造であって、一部であるメモリブロックをポインタにより指示および管理するバッファ用メモリブロックアドレス管理ステップと、
コネクション用バッファの先頭位置および後尾位置をポインタにより指示および管理するキュー管理ステップと、
使用していないメモリブロックをポインタにより指示および管理する空きメモリブロック管理ステップと、
コネクション用バッファに収容するフレームの長さを保持するフレーム長管理ステップと、
バッファのフレーム蓄積状態に関する情報に基づいて、操作対象となるフレームと蓄積もしくは読出または廃棄のいずれかの操作を実行するかを判別する蓄積/読出/廃棄判別ステップと、
蓄積されたフレームを読出すフレーム読出ステップと、
バッファにフレームを格納しきれなくなったときにフレームを廃棄するフレーム廃棄ステップとを有することを特徴とする。
本発明のフレームバッファ管理方法における他の実施形態によれば、バッファの管理単位を単一コネクションの代わりに、コネクション群もしくは方路またはこれらの組合わせとして扱うコネクショングループ情報管理ステップを有することも好ましい。
また、本発明のフレームバッファ管理方法における他の実施形態によれば、各コネクションが1以上のQoSクラス又はポートごとにバッファを保持および管理するマルチバッファ管理ステップを有し、マルチバッファ管理ステップは、コネクション内に1以上のQoSクラスまたはポートを収容するバッファ用メモリブロック管理ステップと、コネクション内に1以上のQoSクラスまたはポートを収容するキュー管理ステップとを備えることも好ましい。
更に、本発明のフレームバッファ管理方法における他の実施形態によれば、バッファ用メモリブロックアドレス管理手段を構成する1以上のブロックをグループ化し、グループごとにバッファ用メモリブロックアドレス管理手段の一部として割当および開放を行う、アドレスグループ管理ステップを有することも好ましい。
更に、本発明のフレームバッファ管理方法における他の実施形態によれば、各コネクションのバッファ使用状況を監視するバッファ使用状況監視ステップと、バッファ使用状況監視ステップから取得した情報に基づいて、バッファ用メモリブロックアドレス管理ステップで使用する最大キュー長を動的に決定する最大キュー長決定ステップを有することも好ましい。
更に、本発明のフレームバッファ管理方法における他の実施形態によれば、フレームバッファに収容するフレームの長さを、フレーム長管理ステップの代わりに、蓄積されたメモリブロック内にフレームの実体と併せて記録する拡張型フレーム蓄積ステップを備えることも好ましい。
更に、本発明のフレームバッファ管理方法における他の実施形態によれば、優先的に廃棄するフレームを選択する優先廃棄フレーム選択ステップを備えることも好ましい。
本発明のフレームバッファ管理回路によれば、論理的な個別FIFO型バッファを構成することで、Ethernet(登録商標)フレームなどの可変長フレームに対して、帯域使用量および遅延時間の点で公平な読出しを実現可能としながら、コネクション間でメモリを共用することによりメモリの使用効率を高くする。共用するメモリの使用率を監視して最大キュー長を制限することで、特定コネクションがメモリを占有することを防止する。個別FIFO型バッファの構成要素をキューによって管理することで、リンクによる管理よりも簡易化、高速化する。優先度に基づく廃棄操作を行うことで、優先度の高いフレームの廃棄を防止することが可能となる。
以下、図面を用いて、本発明の実施例について詳細に説明する。
<請求項1に係る発明に基づく実施例1>
実施例1は、論理的な個別FIFO型バッファを構成することで、帯域使用量および遅延時間の点で公平な読出しを実現可能としながら、コネクション間でメモリを共用することにより使用効率を高くし、かつ個別FIFO型バッファ管理をキューによって行うことで簡易化し、リンクによる管理よりも高速化することを特徴とする。
図1は、フレームバッファ管理回路の構成図である。
フレームバッファ管理回路1は、フレーム振分部101、フレーム蓄積部102、蓄積/読出/廃棄判別部103、バッファ用メモリブロックアドレス管理部104、キュー管理部105、空きメモリブロック管理部106、フレーム長管理部107、フレーム読出部109及びフレーム廃棄部110から構成される。
フレームバッファ管理回路1に入力されたフレームは、フレーム振分部101でヘッダ部に記載されるフレーム情報を読出し、フレーム蓄積部102に蓄積される。フレーム蓄積部102に蓄積されたフレームは、蓄積/読出/廃棄判別部103からの命令により、フレーム読出部109でフレーム出力されるか、またはフレーム廃棄部110でフレーム廃棄される。
蓄積/読出/廃棄判別部103は、フレーム振分部101からフレーム入力またはフレームバッファ管理回路外のからの読出命令をトリガとして、フレーム蓄積部102に蓄積するフレームの処理方法を決定する。フレーム処理方法を決定するために、フレーム振分部101からはフレーム情報が取得され、空きメモリブロック管理部106からはバッファ使用状況情報が取得され、バッファ用メモリブロックアドレス管理部104からは個別FIFO型バッファのメモリ蓄積状況の情報が取得される。蓄積/読出/廃棄判別部103がフレームの処理方法を決定した場合には、バッファ用メモリブロックアドレス管理部104に個別FIFO型バッファの状態変更を反映させる。
バッファ用メモリブロックアドレス管理部104は、キュー管理部105と連携して個別FIFO型バッファの状態を管理する。
蓄積/読出/廃棄判別部103からの命令により、フレーム蓄積部102の状態が変化する場合には、空きメモリブロック管理部106およびフレーム長管理部107と連携してメモリブロックの状態を管理する。
図2は、論理的なフレームバッファ管理回路の構成図である。
フレームバッファ管理回路1は、フレーム振分部101、個別FIFO型バッファ及びフレーム読出部109により構成される。
フレームバッファ管理回路1に入力したフレームは、フレーム振分部101で収容する個別FIFO型バッファを選択する。各々の個別FIFO型バッファは、論理的に独立したバッファとして振舞う。フレーム読出部109は、個別FIFO型バッファから優先制御や重み付きラウンドロビン制御によりフレームの読出しを行う。
個別FIFO型バッファは、図1におけるフレーム蓄積部102のメモリブロックにより構成されるが、メモリブロックはコネクション間で共用するため、各々の個別FIFO型バッファの最大キュー長は、フレームの蓄積状況によって動的に変化する。
図3は、図1に基づく各機能のバッファ構成図である。
フレーム蓄積部102、バッファ用メモリブロックアドレス管理部104、キュー管理部105、空きメモリブロック管理部106及びフレーム長管理部107はそれぞれ、図3に示すように、メモリ上に構成する。フレーム蓄積部102は、固定長(例えば512byte)のメモリブロックにより構成する。
図4は、フレーム蓄積部と収容フレームとの関係を示す説明図である。
各々のメモリブロックには、フレームの実体(Payload)を格納する。格納するフレームの長さがメモリブロック長よりも長い場合には分割して、複数のメモリブロックを使用する。メモリブロックの境界と格納するフレームの境界が一致しない場合には、空きをパディングで埋める。なお、パディングとしている領域は、特定パターン値の他に不定値(Don't care)で埋めても良い。
図5は、フレーム蓄積部とバッファ用メモリアドレス管理部の関係を示す説明図である。
バッファ用メモリブロックアドレス管理部104は、フレーム蓄積部102のメモリブロックを指示するポインタにより構成する。バッファ用メモリブロックアドレス管理部104内のポインタは、連続した複数のブロックとしてまとめ、各々コネクションに関連付ける。例えば、図3(b)のアドレス#1〜#qまでのポインタは、コネクション#1(ID#1)に関連付けている。同一コネクションに関連付けられたポインタは、キュー(FIFO)型のデータ構造として扱う。
キュー管理部105は、バッファ用メモリブロックアドレス管理部104における各コネクションごとのキューの範囲を指示するもので、その先頭を示すポインタ(Head)と後尾を示すポインタ(Tail)の組により構成する。このキュー両端を示すポインタの組の数は、バッファ用メモリブロックアドレス管理部において関連付けたキュー数(コネクション数)と同数になる。
図6は、バッファ長メモリブロックアドレス管理部とキュー長管理部の関係を示す説明図である。
バッファ用メモリブロックアドレス管理部104の各キューにおいて使用中の領域が変化すると、それに合わせてキュー長管理部105のポインタの値が変化する。バッファ用メモリブロックアドレス管理部104のコネクションごとのキューを構成するバッファは、リング状に連続しているものとして扱う。このため、図6(d)のように、キュー長管理部105の2つのポインタに格納するアドレスの大小関係が逆転する(Tail<Head)こともある。この場合には、物理的なメモリ配置において後尾のポインタ(図6(d)ではアドレス#q)の後に先頭のポインタ(図6(d)ではアドレス#1)が続くものとして扱う。
図7A及び図7Bは、フレーム蓄積部と空きメモリブロック管理部の関係を示す説明図である。
空きメモリブロック管理部106は、フレーム蓄積部102のメモリブロックと同数のポインタにより構成する。空きメモリブロックは、スタック(FILO:First In Last Out)型のデータ構造として扱い、現在の使用位置を指示するためにスタックポインタを用意する。空きメモリブロックのポインタは、フレーム蓄積部102の使用していないメモリブロックを指示する。図7A(b)に示すように、フレーム入力によりメモリブロックを使用する場合には、空きメモリブロック管理部106が指示するメモリブロックを順に使用し、スタックポインタを移動させる。図7B(c)に示すように、フレーム出力によりメモリブロックを開放する場合には、開放したメモリブロックのアドレスを空きメモリブロック管理部106の空き領域に順に記録し、スタックポインタを移動させる。
なお、実施例1では、空きメモリブロック管理部をスタック型のデータ構造としたが、バッファ用メモリブロックアドレス管理部のようにHeadおよびTailの2つのポインタを用いて、キュー型のデータ構造とすることもできる。
図8は、フレーム蓄積部とフレーム長管理部の関係を示す説明図である。
フレーム長管理部107は、フレーム蓄積部102のメモリブロックと同数のデータ領域により構成する。メモリブロックにフレームを格納している場合には、フレーム蓄積部102とフレーム長管理部107は、同一アドレスの位置に関連する情報を格納する。例えば、フレーム蓄積部のアドレス#x+1に関するフレーム長情報は、フレーム長管理部のアドレス#x+1に格納する。フレーム長管理部107のデータ領域には、関連付けられたフレーム蓄積部102に格納されるフレームのフレーム長情報を格納する。フレーム長情報としては、例えば、該当するメモリブロック先頭からフレーム後尾までの長さなどを格納する。この方法では、フレームがメモリブロック長を超えているために分割された場合でも、フレーム終端を構成するメモリブロックを判別できる。さらに任意のメモリブロックの位置から残りのフレーム長を判別することができる。また、フレーム長情報を表す他の方法として、フラグ終端を示すフラグとメモリブロック内に占めるフレーム実体の長さという組合せとすることもできる。
図9は、フレームバッファ管理回路におけるフレーム入出力時のフローチャートである。
図9(a)フレーム入力時のフローを説明する。
(S1)フレームが入力される
(S2)フレーム振分部は、入カフレームを収容するバッファ用メモリブロック管理部を選択し、フレーム情報を蓄積/読出/廃棄判別部に送る。
(S3)蓄積/読出/廃棄判別部は、バッファ用メモリブロックアドレス管理部に空きがあるか確認し、空きがなければ、(S8)入力フレームを廃棄する。
(S4)蓄積/読出/廃棄判別部は、空きメモリブロック管理部に対して、フレーム蓄積部に空きがあるか確認する。
(S5)フレーム蓄積部に空きがない場合、蓄積/読出/廃棄判別部は、バッファ用メモリブロックアドレス管理部が保持するコネクションごとの個別キュー情報を参照して、廃棄すべきフレームを決定する。入カフレームが廃棄対象となっている場合は、(S8)入カフレームを廃棄する。
(S6)他コネクションのフレームを廃棄すべきである場合には、該当フレームを廃棄する。
(S7)空きメモリブロック管理部から、空いているメモリブロックのアドレスを読出す。
(S8)読出したアドレスをキーとして、フレーム長管理テーブルにフレーム長情報を書込む。
(S9)フレーム蓄積部内の空きメモリブロックサイズを上限としてフレームの内容を書込む。
(S10)バッファ用メモリブロックアドレス管理部のキュー情報を更新する。
(S11)該当メモリブロックが扱うのが入力フレームの後尾か判別し、後尾であれば終了、後尾でなければ(S7)から続きのフレームの蓄積処理を行う。
続いて、図9(b)フレーム出力時のフローを説明する。
フレーム読出命令が蓄積/読出/廃棄判別部に与えられると、
(S1)バッファ用メモリブロックアドレス管理部から、フレームが記録されているフレーム蓄積部内のアドレスを読出す。
(S2)フレーム長管理テーブルからフレーム長情報を読出す。
(S3)フレーム蓄積部内のメモリブロックから、メモリブロックサイズを上限として分割したフレームの内容を読出す。
(S4)読出したアドレスをキーとして、バッファ用メモリブロックアドレス管理部のキュー情報を更新する。
(S5)空きメモリブロック管理部に、不要なメモリブロックのアドレスを書込み、空きメモリブロックとする。
(S6)該当メモリブロックが扱うのが出力フレームの後尾か判別し、後尾でなければ(1)から続きのフレームの読出処理を行う。
(S7)分割したフレームから元のフレームを再構成する。
(S8)再構成したフレームを出力する。
実施例1における他の実施形態として、蓄積するフレームがメモリブロックよりも大きいため、フレームを複数のメモリブロックに分割して管理する場合に、メモリブロック内に設けたポインタを用いてフレームを構成するメモリブロックを指示することによって接続するものがある。
図10は、フレームを複数メモリブロックに分割するときの管理方法の説明図である。
図10(a)は、実施例1にて説明した方法で、分割したメモリブロック1つにつき、バッファ用メモリブロックアドレス管理部104のポインタを1つ使用する。言い換えれば、1フレームを構成するメモリブロック数が多ければ、バッファ用メモリブロックアドレス管理部104のポインタを多数使用する。
これに対して、図10(b)では、バッファ用メモリブロックアドレス管理部104のポインタは、フレームの先頭に相当するメモリブロックを指示するが、それ以降のメモリブロックは、先頭のメモリブロック内に設けたポインタによって指示する。これにより、1フレームを構成するメモリブロック数には関わらず、1フレームに対して使用するバッファ用メモリブロックアドレス管理部のポインタを1つとすることができる。
1フレームを構成するメモリブロックの最大数が小さい場合には、フレーム先頭のメモリブロック内のポインタ領域を固定的に確保しても良いが、1フレームを構成するメモリブロックの最大数が大きくなる場合には、フレーム長によって必要分だけ動的にポインタ領域を設ける方が、メモリの有効利用の観点から有利である。
同様に、図10(c)では、フレームを構成するメモリブロックをメモリブロック内に設けたポインタによって指示する。この構成では、フレームを構成するメモリブロックの数が増大しても、メモリブロックにおけるポインタの領域の比率は変わらないので、動的にポインタ領域を設ける必要がない。よって、図10(b)よりもメモリブロックの管理を簡易化できる。
この実施形態の構成を適用することにより、バッファ用メモリブロックアドレス管理部104がフレーム先頭のメモリブロックのみを指示することにより、バッファ用メモリブロックアドレス管理部104の規模縮小とメモリブロックの管理を簡易化する効果がある。
<請求項2に係る発明の実施例2>
実施例2は、図2に示す個別FIFO型バッファに収容および管理する単位を、単一コネクションに限定するのではなく、コネクション群もしくは方路またはこれらの組合せとして扱うことを特徴とする。
コネクションを識別する手段としては、例えばEthernet(登録商標)フレームならMAC(Media Access Control)アドレスやVLAN(Virtual LAN)タグ、ATM(Asynchronous Transfer Mode)セルならVPI(Virtual Path Identifier)/VCI(Virtual Channel Identifier)を用いることができる。また、装置に実装される物理ポートに関連付けることもできる。
前述の手段により識別したコネクションを個別にバッファヘ収容することもできるが、場合によっては複数のコネクションをグループ化して扱うこともある。コネクションをグループ化したときには、コネクション群として単一コネクションと同等に扱い、同一の個別FIFO型バッファに収容する。
図11は、コネクションのグループ化に対応したフレームバッファ管理回路の構成図である。
図11は、図1と比較して、コネクショングループ情報管理部111を備える部分が異なる。入力されたフレームが保持するコネクション情報と、コネクショングループ情報管理部が保持するコネクションとグループの対応情報を参照することにより、コネクションのグループ化を実現する。
本実施例の構成を適用することにより、扱うコネクション(群)数を削減し、回路規模を縮小する効果がある。
<請求項3に係る発明の実施例3>
実施例3は、図2に示す個別FIFO型バッファに収容および管理する単位を、コネクションごとに設定する1以上のQoSクラスまたはポートごととして扱うことを特徴とする。
図12は、コネクション内にマルチバッファを備えるフレームバッファ管理回路の構成図である。
図12は、図1と比較して、バッファ用メモリブロックアドレス管理部1120とキュー管理部1121とを、マルチクラスまたはマルチポートに対応させたマルチバッファ管理部を備える部分が異なる。
図13は、コネクション内にマルチクラスを収容するバッファ用メモリブロックアドレス管理部のメモリ構成図である。図14は、コネクション内にマルチクラスを収容するキュー管理部のメモリ構成図である。それぞれ図3(b)および(c)のものと比較すると、各コネクション内にクラス別の領域が設けられている部分が異なる。
図15は、論理的なフレームバッファ管理回路の構成図である。クラスごとに個別FIFO型バッファを割当てることで、図15(a)および(b)に示すように、クラスごとまたはコネクションごとに階層化して帯域の割当を行うことができる。
図15(a)の構成とした場合、割当可能な全帯域をコネクションごとに分配し、分配された帯域をコネクション内のクラス間で分配する。つまり、コネクションに対する帯域分配をクラスに対する帯域分配より優先させる。これにより、例えば後段のフレーム読出部にラウンドロビン読出しや重付きラウンドロビン読出しを適用すれば、コネクション間の帯域割当に関する公平性を保ちながら、クラス間の帯域割当を行うことができる。
図15(b)の構成とした場合、割当可能な全帯域をクラスごとに分配し、分配された帯域を該当するクラスを有するコネクション間で分配する。つまり、クラスに対する帯域分配をコネクションに対する帯域分配より優先させる。これにより、例えば後段のフレーム読出部に優先読出しを適用すれば、フレームバッファ管理回路内における各コネクションの同一クラスの総和(図15(b)の破線で囲んだ範囲)に対して、帯域割当に関する優先度を設定できるし、後段のフレーム読出部にラウンドロビン読出しや重み付きラウンドロビン読出しを適用すれば、最大帯域や保証帯域を設定できる。
本実施例の構成を適用することにより、扱うコネクションが、異なる帯域設定パラメータを有する複数のQoSクラスの収容を可能とする効果がある。
なお、図13および図14では、各コネクションに割当てるクラス数が同一になっているが、クラス数はコネクションごとに異なっていても良い。
<請求項4に係る発明の実施例4>
実施例4は、バッファ用メモリブロックアドレス管理部内の複数のポインタをグループ化したものをアドレスグループとすると、このアドレスグループの使用領域を動的に割当てることを特徴とする。
図16は、バッファ用メモリブロックアドレス管理部のアドレスグループ化に対応したフレームバッファ管理回路の構成図である。
図16は、図1と比較して、アドレスグループ管理部113を備える部分が異なる。アドレスグループ管理部113は、アドレスグループの割当および開放を管理する。
図17は、ポインタのグループ化による動的にバッファ長を変更するバッファ用メモリブロックアドレス管理部のメモリ構成図である。
実施例4では、バッファ用メモリブロックアドレス管理部を複数に分割し、メモリブロックを指示するための1つ以上のポインタ(Pointer)と、グループを接続するポインタ(Next)とをグループ化する。バッファ用メモリブロックアドレス管理部104は、必要に応じてグループ単位でバッファを動的に割当/開放する。各コネクションにフレーム入力があり、新たなバッファが必要になる場合には、グループ単位で割当を行い、バッファに追加する。フレーム出力があり、バッファを構成するグループの中にすべてのポインタが未使用の状態になっている場合には、未使用のグループをバッファから開放し、他のコネクション用のバッファとして使用できるようにする。
図18は、フレーム蓄積部とグループ化したバッファ用メモリアドレス管理部とキュー長管理部の関係を示す説明図である。
バッファ用メモリアドレス管理部104がグループ化されている以外は、図6と同様である。各グループを連結するためには、グループに含まれるグループ接続用ポインタ(Next)を使用する。グループ接続用ポインタは、次に接続するグループのIDを指示する。後方にグループが接続されていない場合には、グループ接続用ポインタに終端を表す値(例えばNULL)を格納する。
図19A及び図19Bは、フレーム入出力時のフローチャートである。
図19A(a)はフレーム入力時のフローである。図9(a)と比較して、(S4)および(S5)が追加されている部分が異なる。図19B(b)はフレーム出力時のフローである。図9(b)と比較して、(S6)および(S7)が追加されている部分が異なる。
実施例4の構成を適用することにより、バッファ用メモリブロックアドレス管理部104の各個別FIFO型バッファの最大長を伸ばすことができるので、フレーム蓄積部102に空きがあるにも関わらず、バッファ用メモリブロックアドレス管理部104に空きがないために発生するフレームの廃棄を抑制する。つまり、バッファ用メモリブロックアドレス管理部104の使用効率を向上させる効果がある。
なお、実施例4では、バッファ用メモリブロックアドレス管理部104にNextポインタを用意することにより、単方向のグループ間のリンクを行ったが、双方向のリンク、または別途グループ管理用のテーブルを用いても良い。
<請求項5に係る発明の実施例5>
実施例5は、図2に示す各コネクションの個別FIFO型バッファ使用状況を監視し、使用状況に基づいて個別FIFO型バッファの最大キュー長を可変とすることを特徴とする。
図20は、最大キュー長を変動可能なフレームバッファ管理回路の構成図である。
図20は、図1と比較して、バッファ使用状況監視部114および最大キュー長決定部115を備えることが異なる。蓄積/読出/廃棄判別部103からバッファ用メモリブロックアドレス管理部104に対してフレーム入出力を命令された場合、バッファ用メモリブロックアドレス管理部104は、バッファ使用状況監視部114に対してフレーム入出力情報を通知する。バッファ使用状況監視部114は、各コネクションの現在の個別FIFO型バッファにおけるキュー状態を保持する。バッファ使用状況監視部114には、あらかじめ最大キュー長を変化させる条件を設定しておく。この条件を満たした場合、最大キュー長決定部115に対して通知する。最大キュー長決定部115は、この通知を受けると、反映すべき最大キュー長を決定し、バッファ用メモリブロックアドレス管理部104に最大キュー長情報を通知する。バッファ用メモリブロックアドレス管理部104は、通知されたキュー長情報を反映し、この値を超えてコネクションの個別FIFO型バッファのキューが伸長しないように制御する。
最大キュー長決定部が最大キュー長を更新するための条件としては、例えば、ある時刻におけるバッファ(メモリブロック)使用量に関する閾値の超過/非超過、または一定時間におけるバッファ(メモリブロック)総使用量に関する閾値の超過/非超過がある。
実施例5の構成を適用することにより、特定のコネクションが偏在的にメモリブロックを使用して、他のコネクションがメモリブロックを使用することを妨げてしまい割当帯域が不公平になることを抑止する効果がある。
<請求項6に係る発明の実施例6>
実施例6は、図3(e)に示すフレーム長管理部を図3(a)に示すフレーム蓄積部に統合し、拡張型フレーム長管理部を備えることを特徴とする。
図21は、拡張型フレーム蓄積部の構成図である。
フレーム長管理部107は、対応するフレーム蓄積部102に格納しているフレームの長さを格納する。フレーム長を格納するのに必要なメモリ領域はたかだか数バイトである。フレーム蓄積部102のメモリブロックのメモリ領域はEthernet(登録商標)フレームを格納することを考えると1500Byte程度、最大フレーム長を2〜10程度の部分に分割しても100Byteのオーダとなる。よって、フレーム蓄積部102にフレーム長を格納するフィールドを追加しても、フレーム蓄積部102に対して容量や収容可能なメモリブロック数の点で与える影響は小さい。
一方、フレーム蓄積部102とフレーム長管理部107とを統合することにより、実装するメモリチップ数を削減することができる。実装するメモリチップ数を削減することにより、メモリチップに対してアクセスするためのピン数を減らすことができるため、実装の自由度が拡大する。
フレームの実体とフレーム長の2つの情報は常に対にして扱うため、これらを統合して管理することにより、個別に管理するのに比べて制御を簡易化できる。
実施例6の構成を適用することにより、メモリ管理を簡易化し、物理的な実装の自由度を拡大する効果がある。
<請求項7に係る発明の実施例7>
実施例7は、コネクションやフレームの属性により廃棄優先度を設け、優先的に廃棄するフレームを選択することを特徴とする。
図22は、優先廃棄を実現するフレームバッファ管理回路の構成図である。
図22は、図1と比較して、優先廃棄フレーム選択部116を備えることが異なる。また、優先廃棄フレーム選択のための情報を収集する目的で、バッファ使用状況監視部114を備えることもできる。フレームバッファ管理回路1にフレーム入力があると、蓄積/読出/廃棄判別部103が入カフレームの処理方法を判別するが、フレーム蓄積部102のメモリブロックに空きがない場合には、入力されたフレームまたは既に蓄積しているフレームのいずれかを廃棄する。
廃棄対象のフレームを決定するには、フレームまたはコネクションの属性のみにより廃棄対象のフレームを判別する場合と、フレームまたはコネクションの属性に加え、バッファ使用状況情報を加味して廃棄対象のフレームを判別する場合がある。各場合の動作について、以下に例を示す。
フレームの属性により廃棄対象のフレームを決定する場合には、判断のための情報としてフレーム内の優先度情報、例えば優先度付きのVLANタグに設定するプライオリティビット情報やIPパケットのTOS(Type of Service)情報などを用いることができる。入力されたフレームの優先度と蓄積されているフレームの優先度を管理しておき、新たに入力されたフレームの優先度が低ければそのまま廃棄するが、入力されたフレームの優先度が高ければ蓄積フレームの中の低優先フレームから廃棄する。
コネクションの属性により廃棄対象のフレームを決定する場合には、コネクションに設定した優先クラス情報などを用いることができる。帯域保証型のクラスとベストエフォート型のクラスがある場合、ベストエフォート型のクラスの方が優先度が低い。よって低優先のベストエフォート型クラスのフレームから先に廃棄される。
上記に述べた静的な情報に、バッファ使用状況情報を加味して廃棄フレームを判断する場合、廃棄対象フレームはトラフィック状況により動的に変化する。
例えば、コネクションごとのバッファにおけるメモリブロック使用量の多寡を基に判断を行って、メモリブロック使用量の多いコネクションから先に廃棄を行う。または、計測時間を基準として遡る一定時間内に使用したメモリブロック量を基に判断することもできる。
実施例7の構成を適用することにより、低優先フレームを優先的に廃棄することで、高優先フレームの廃棄を防止するなどの優先サービスを提供可能とする効果、動的に負荷の高いコネクションのフレームから廃棄することで、パワーユーザなどの一部ユーザが共用バッファのリソースを寡占的に使用し、他ユーザのスループット低下の原因となることを防止するなど、コネクション間の公平性を確保する効果がある。
フレームバッファ管理回路の構成図である。 論理的なフレームバッファ管理回路の構成図である。 図1に基づく各機能のバッファ構成図である。 フレーム蓄積部と収容フレームとの関係を示す説明図である。 フレーム蓄積部とバッファ用メモリアドレス管理部の関係を示す説明図である。 バッファ長メモリブロックアドレス管理部とキュー長管理部の関係を示す説明図である。 フレーム蓄積部と空きメモリブロック管理部の関係を示す説明図である。 フレーム蓄積部と空きメモリブロック管理部の関係を示す説明図である。 フレーム蓄積部とフレーム長管理部の関係を示す説明図である。 フレームバッファ管理回路におけるフレーム入出力時のフローチャートである。 フレームを複数メモリブロックに分割するときの管理方法の説明図である。 コネクションのグループ化に対応したフレームバッファ管理回路の構成図である。 コネクション内にマルチバッファを備えるフレームバッファ管理回路の構成図である。 コネクション内にマルチクラスを収容するバッファ用メモリブロックアドレス管理部のメモリ構成図である。 コネクション内にマルチクラスを収容するキュー管理部のメモリ構成図である。 論理的なフレームバッファ管理回路の構成図である。 バッファ用メモリブロックアドレス管理部のアドレスグループ化に対応したフレームバッファ管理回路の構成図である。 ポインタのグループ化による動的にバッファ長を変更するバッファ用メモリブロックアドレス管理部のメモリ構成図である。 フレーム蓄積部とグループ化したバッファ用メモリアドレス管理部とキュー長管理部の関係を示す説明図である。 フレーム入出力時のフローチャートである。 フレーム入出力時のフローチャートである。 最大キュー長を変動可能なフレームバッファ管理回路の構成図である。 拡張型フレーム蓄積部の構成図である。 優先廃棄を実現するフレームバッファ管理回路の構成図である。
符号の説明
1 フレームバッファ管理回路
101 フレーム振分部
102 フレーム蓄積部
103 蓄積/読出/廃棄判別部
104 バッファ用メモリブロックアドレス管理部
105 キュー管理部
106 空きメモリブロック管理部
107 フレーム長管理部
109 フレーム読出部
110 フレーム廃棄部
111 コネクショングループ情報管理部
112 マルチバッファ管理部
1120 マルチクラス/ポート化したバッファ用メモリブロックアドレス管理部
1121 マルチクラス/ポート化したキュー管理部
113 アドレスグループ管理部
114 バッファ使用状況監視部

Claims (14)

  1. 1以上のコネクションを収容し、コネクションごとにFIFO型のデータ構造を有し、全コネクション間で共用するメモリを動的に個別のコネクション用バッファとして割当および開放を行うフレームバッファ管理回路において、
    入力されたフレームに対して、フレームヘッダ部に記録されている属性情報又は事前に与えられる設定値に基づいて、振分先のバッファを決定するフレーム振分手段と、
    メモリブロックの集合として構成され、入力されたフレームの実体を格納するフレーム蓄積手段と、
    コネクション用バッファを構成し、前記フレーム蓄積手段の一部であるメモリブロックをポインタにより指示および管理し、FIFO型のデータ構造を有するバッファ用メモリブロックアドレス管理手段と、
    コネクション用バッファの先頭位置および後尾位置をポインタにより指示および管理するキュー管理手段と、
    前記フレーム蓄積手段において使用していないメモリブロックをポインタにより指示および管理する空きメモリブロック管理手段と、
    コネクション用バッファに収容するフレームの長さを保持するフレーム長管理手段と、
    バッファのフレーム蓄積状態に関する情報に基づいて、操作対象となるフレームと蓄積もしくは読出または廃棄のいずれかの操作を実行するかを判別する蓄積/読出/廃棄判別手段と、
    前記フレーム蓄積手段からフレームを読出すフレーム読出手段と、
    バッファにフレームを格納しきれなくなったときにフレームを廃棄するフレーム廃棄手段と
    を有することを特徴とするフレームバッファ管理回路。
  2. バッファの管理単位を単一コネクションの代わりに、コネクション群もしくは方路またはこれらの組合わせとして扱うコネクショングループ情報管理手段を備えることを特徴とする請求項1に記載のフレームバッファ管理回路。
  3. 各コネクションが1以上のQoSクラス又はポートごとにバッファを保持および管理するマルチバッファ管理手段を備え、
    前記マルチバッファ管理手段は、コネクション内に1以上のQoSクラスまたはポートを収容する前記バッファ用メモリブロック管理手段と、
    コネクション内に1以上のQoSクラスまたはポートを収容する前記キュー管理手段を備えることを特徴とする請求項1又は2に記載のフレームバッファ管理回路。
  4. 前記バッファ用メモリブロックアドレス管理手段を構成する1以上のブロックをグループ化し、グループごとに前記バッファ用メモリブロックアドレス管理手段の一部として割当および開放を行う、アドレスグループ管理手段を備えることを特徴とする請求項1から3のいずれか1項に記載のフレームバッファ管理回路。
  5. 各コネクションのバッファ使用状況を監視するバッファ使用状況監視手段と、
    バッファ使用状況監視手段から取得した情報に基づいて、前記バッファ用メモリブロックアドレス管理手段で使用する最大キュー長を動的に決定する最大キュー長決定手段を備えることを特徴とする請求項1から4のいずれか1項に記載のフレームバッファ管理回路。
  6. フレームバッファに収容するフレームの長さを、前記フレーム長管理手段の代わりに、前記フレーム蓄積手段に含まれるメモリブロック内にフレームの実体と併せて記録する拡張型フレーム蓄積手段を備えることを特徴とする請求項1から5のいずれか1項に記載のフレームバッファ管理回路。
  7. 優先的に廃棄するフレームを選択する優先廃棄フレーム選択手段を備えることを特徴とする請求項1から6のいずれか1項に記載のフレームバッファ管理回路。
  8. 1以上のコネクションを収容し、コネクションごとにFIFO型のデータ構造を有し、全コネクション間で共用するメモリを動的に個別のコネクション用バッファとして割当および開放を行うフレームバッファ管理方法において、
    入力されたフレームに対して、フレームヘッダ部に記録されている属性情報又は事前に与えられる設定値に基づいて、振分先のバッファを決定するフレーム振分ステップと、
    メモリブロックの集合として構成され、入力されたフレームの実体を格納するフレーム蓄積ステップと、
    コネクション用バッファを構成し、FIFO型のデータ構造であって、一部であるメモリブロックをポインタにより指示および管理するバッファ用メモリブロックアドレス管理ステップと、
    コネクション用バッファの先頭位置および後尾位置をポインタにより指示および管理するキュー管理ステップと、
    使用していない前記メモリブロックをポインタにより指示および管理する空きメモリブロック管理ステップと、
    コネクション用バッファに収容するフレームの長さを保持するフレーム長管理ステップと、
    バッファのフレーム蓄積状態に関する情報に基づいて、操作対象となるフレームと蓄積もしくは読出または廃棄のいずれかの操作を実行するかを判別する蓄積/読出/廃棄判別ステップと、
    蓄積されたフレームを読出すフレーム読出ステップと、
    バッファにフレームを格納しきれなくなったときにフレームを廃棄するフレーム廃棄ステップと
    を有することを特徴とするフレームバッファ管理方法。
  9. バッファの管理単位を単一コネクションの代わりに、コネクション群もしくは方路またはこれらの組合わせとして扱うコネクショングループ情報管理ステップを有することを特徴とする請求項8に記載のフレームバッファ管理方法。
  10. 各コネクションが1以上のQoSクラス又はポートごとにバッファを保持および管理するマルチバッファ管理ステップを有し、
    前記マルチバッファ管理ステップは、コネクション内に1以上のQoSクラスまたはポートを収容するバッファ用メモリブロック管理ステップと、コネクション内に1以上のQoSクラスまたはポートを収容するキュー管理ステップとを備えることを特徴とする請求項8又は9に記載のフレームバッファ管理方法。
  11. 前記バッファ用メモリブロックアドレス管理手段を構成する1以上のブロックをグループ化し、グループごとに前記バッファ用メモリブロックアドレス管理手段の一部として割当および開放を行う、アドレスグループ管理ステップを有することを特徴とする請求項8から10のいずれか1項に記載のフレームバッファ管理方法。
  12. 各コネクションのバッファ使用状況を監視するバッファ使用状況監視ステップと、
    バッファ使用状況監視ステップから取得した情報に基づいて、前記バッファ用メモリブロックアドレス管理ステップで使用する最大キュー長を動的に決定する最大キュー長決定ステップを有することを特徴とする請求項8から11のいずれか1項に記載のフレームバッファ管理方法。
  13. フレームバッファに収容するフレームの長さを、前記フレーム長管理ステップの代わりに、蓄積されたメモリブロック内にフレームの実体と併せて記録する拡張型フレーム蓄積ステップを備えることを特徴とする請求項8から12のいずれか1項に記載のフレームバッファ管理方法。
  14. 優先的に廃棄するフレームを選択する優先廃棄フレーム選択ステップを備えることを特徴とする請求項8から13のいずれか1項に記載のフレームバッファ管理方法。
JP2004111024A 2004-04-05 2004-04-05 フレームバッファ管理回路および方法 Expired - Lifetime JP3791529B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004111024A JP3791529B2 (ja) 2004-04-05 2004-04-05 フレームバッファ管理回路および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004111024A JP3791529B2 (ja) 2004-04-05 2004-04-05 フレームバッファ管理回路および方法

Publications (2)

Publication Number Publication Date
JP2005295443A JP2005295443A (ja) 2005-10-20
JP3791529B2 true JP3791529B2 (ja) 2006-06-28

Family

ID=35327845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004111024A Expired - Lifetime JP3791529B2 (ja) 2004-04-05 2004-04-05 フレームバッファ管理回路および方法

Country Status (1)

Country Link
JP (1) JP3791529B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5088145B2 (ja) * 2008-01-10 2012-12-05 富士通株式会社 パケット中継装置、制御方法およびパケット中継プログラム

Also Published As

Publication number Publication date
JP2005295443A (ja) 2005-10-20

Similar Documents

Publication Publication Date Title
US10341260B2 (en) Early queueing network device
CA2402242C (en) Non-consecutive data readout scheduler
US8520522B1 (en) Transmit-buffer management for priority-based flow control
US5991295A (en) Digital switch
US6535484B1 (en) Method and apparatus for per traffic flow buffer management
US7321594B2 (en) Router apparatus provided with output port circuit including storage unit, and method of controlling output port circuit of router apparatus
US7058057B2 (en) Network switch port traffic manager having configurable packet and cell servicing
US6259699B1 (en) System architecture for and method of processing packets and/or cells in a common switch
JP4070610B2 (ja) データ・ストリーム・プロセッサにおけるデータ・ストリームの操作
JP3866425B2 (ja) パケットスイッチ
US6687254B1 (en) Flexible threshold based buffering system for use in digital communication devices
US7023856B1 (en) Method and system for providing differentiated service on a per virtual circuit basis within a packet-based switch/router
US6501757B1 (en) ATM switch
US20040151197A1 (en) Priority queue architecture for supporting per flow queuing and multiple ports
JPH08251233A (ja) メモリ割り付けを改善したパケット通信システム及び方法
JPH07226770A (ja) パケット交換装置およびその制御方法
US8312243B2 (en) Memory management in network processors
JPWO2004066570A1 (ja) ネットワークスイッチ装置およびネットワークスイッチ方法
US6876659B2 (en) Enqueuing apparatus for asynchronous transfer mode (ATM) virtual circuit merging
US10491543B1 (en) Shared memory switch fabric system and method
JP3561870B2 (ja) パケットバッファ装置
JP3791529B2 (ja) フレームバッファ管理回路および方法
US20070140260A1 (en) System and method of single switch string hardware
JP2003124953A (ja) リング型ネットワークシステム
JP3416156B2 (ja) 種々の優先度のバーチャルコネクションを介して情報セルを伝送する方法および回路装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060224

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: 20060314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060327

R151 Written notification of patent or utility model registration

Ref document number: 3791529

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110414

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120414

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130414

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20140414

Year of fee payment: 8

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

EXPY Cancellation because of completion of term