JP5191059B2 - バッファ回路及びバッファ回路制御方法 - Google Patents

バッファ回路及びバッファ回路制御方法 Download PDF

Info

Publication number
JP5191059B2
JP5191059B2 JP2009149094A JP2009149094A JP5191059B2 JP 5191059 B2 JP5191059 B2 JP 5191059B2 JP 2009149094 A JP2009149094 A JP 2009149094A JP 2009149094 A JP2009149094 A JP 2009149094A JP 5191059 B2 JP5191059 B2 JP 5191059B2
Authority
JP
Japan
Prior art keywords
buffer
frame data
circuit
input
attribute value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009149094A
Other languages
English (en)
Other versions
JP2011009876A (ja
Inventor
健治 川合
享邦 西田
恵一 小池
勝一 大山
正隆 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Electronics Corp
Nippon Telegraph and Telephone Corp
Original Assignee
NTT Electronics Corp
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Electronics Corp, Nippon Telegraph and Telephone Corp filed Critical NTT Electronics Corp
Priority to JP2009149094A priority Critical patent/JP5191059B2/ja
Publication of JP2011009876A publication Critical patent/JP2011009876A/ja
Application granted granted Critical
Publication of JP5191059B2 publication Critical patent/JP5191059B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、バッファ回路及びバッファ回路制御方法に関する。
従来のバッファ回路では、フレームをバッファ用メモリに収容するか廃棄するかの判定を、キュー長に基づいて行う。
例えば、特許文献1に示されたフレームを蓄積するためのバッファ回路では、DDR−SDRAM(Double-Data-Rate Synchronous Dynamic Random Access Memory)等の汎用の外部メモリをバッファ用メモリとして用いる。この外部メモリは、最長フレームを収容可能な固定容量に区分けされ、バッファ回路は区分けされた領域1個につき1個のフレームを収容する。最長フレームを収容可能な固定容量は、例えば2キロバイトである。前記の区分けされた各領域に各々異なるハンドル番号が割り当てられ、ハンドル管理部が各領域の空塞を前記ハンドル番号を用いて管理する。QoS(Quality of Service、サービス品質)部は、複数のキューを具備し、フレームを収容した領域のハンドル番号と前記フレームの各種情報とを合わせたジョブ情報とを、ジョブ情報に基づいて選択したキューに入力する。このとき前記キューが最大キュー長に達している場合は、このジョブ情報のハンドル番号をハンドル管理部に返却し、ハンドル管理部は前記フレームを収容した領域を空領域にする。
このように、特許文献1に示されたバッファ回路のバッファ制御は、クラス別かつ送信ポート別に用意された各キューのキュー長に基づいてフレームをバッファへ収容するか廃棄するかを判定する、キューイング制御により行われていた。
特開2007−135048号公報
しかしながら、特許文献1に示されたバッファ回路は、キュー毎に設定されるキュー長上限に達するまではフレームデータのバッファへの収容を保証するが、キュー長上限を超えた場合はフレームを廃棄する。このため、各キューのキュー長上限を、動作に問題が生じない最大キュー長以上に設定する必要がある。そして、各キューに配分されたバッファ用メモリの容量は固定である。このため、複数のキューが同時に最大キュー長に達することがない場合などは、バッファ用メモリの利用効率が低い。
また、特許文献1に示されたバッファ回路は、バッファ輻輳(オーバーフロー)時はクラスや送信ポートとは無関係にフレームを廃棄するため、QoSを確実に実現することができない。そこで、バッファ輻輳によるフレームの廃棄を抑止するために、バッファ用メモリの最大収容フレーム数を全キューに蓄積可能なジョブ情報数以上とする必要がある。そして、特許文献1に示されたバッファ回路は区分けされた領域1個につき1個のフレームを収容するので、短いフレームを収容する場合はバッファ用メモリの利用効率が低い。例えば、区分けされた領域の全てに最長フレームの20分の1程度のデータ量である短フレームを収容している場合、バッファ用メモリに蓄積されたデータ量は前記メモリ容量の20分の1にすぎない。しかし、20分の1であるとはいえ、バッファ用メモリの最大収容フレーム数を既に収容しているため、以後の受信フレームはバッファ用メモリに収容されず廃棄される。受信フレームの大部分が最長フレームと同程度の長さをもつ長フレームであればバッファ用メモリの利用効率は高いが、一般的には短フレームの割合が大きいため、バッファ用メモリの利用効率が低い。
このように、特許文献1に示されたバッファ回路等、従来のバッファ回路は、バッファ用メモリの利用効率が低い分、バッファ用メモリの容量を大きくする必要があり、回路規模が増大するという課題があった。
本発明は、このような事情を考慮してなされたものであり、その目的は、バッファメモリの利用効率がより高く、回路規模の増大を抑えたバッファ回路及びバッファ回路制御方法を提供することにある。
[1]この発明は上述した課題を解決するためになされたもので、本発明の一態様によるバッファ回路は、フレームデータを記憶するバッファ用メモリ手段と
レームデータのクラス及びフレームデータを受信した受信ポート及びフレームデータを送信する送信ポートの3つの属性であるフレームデータの属性毎に前記バッファ用メモリ手段に記憶されたフレームデータ数を示す属性値別蓄積量を出力する属性値別蓄積量監視手段と、前記属性毎に前記属性値別蓄積量の上限量を、前記バッファ用メモリ手段の空き容量に基づいて算出し、フレームデータの属性を示す属性値が入力されると、前記属性値別蓄積量と前記上限量とを前記属性毎に比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に収容可能か否かを示す収容可否判定結果を判定し、前記3つの属性毎の収容可否判定結果のすべてが可であるか否かに応じて、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを判定し、蓄積する場合は収容有を示す情報を出力する収容判定手段と、外部からフレームデータが入力された場合に、前記収容判定手段から収容有の情報が入力されたときは、前記フレームデータを前記バッファ用メモリ手段に書き込むバッファ用メモリ制御手段と、を具備することを特徴とする。
このバッファ回路は、各属性値のフレームデータが同一のバッファ用メモリに記憶され、各属性値に割り当てられる容量は上限値によって管理される。したがって、属性値毎にバッファ用メモリの固定の容量を割り当てる必要が無く、バッファ用メモリの利用効率が高い。
[2]また、本発明の一態様によるバッファ回路は上述のバッファ回路であって、前記バッファ用メモリ制御手段は、外部からフレームデータと当該フレームデータの属性値とが入力され、前記入力されたフレームデータを前記バッファ用メモリ手段に書き込む場合は、空き容量減信号または蓄積量増信号と、前記入力された属性値と、を出力し、外部からフレームデータ読み出し指示と読み出すフレームデータの属性値とが入力され、前記フレームデータを読み出した場合は、空き容量増信号または蓄積量減信号と、前記入力された属性値とを出力し、前記属性値別蓄積量監視手段は、前記属性値別蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、前記収容判定手段は、前記空き容量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号が入力されると、前記空き容量を減少させ、前記空き容量増信号または前記蓄積量減信号が入力されると前記空き容量を増加させ、前記空き容量に基づいて前記上限量を算出することを特徴とする。
ここで、フレームデータの属性は、例えば、そのフレームデータのクラスや、そのフレームデータを受信した受信ポートや、そのフレームデータを送信する送信ポートである。また、フレームデータのクラスや、そのフレームデータを受信した受信ポートや、そのフレームデータを送信する送信ポートの属性値としてはそれぞれクラス値や、受信ポート番号や、送信ポート番号などを用いることができる。収容判定手段は、例えば、クラス毎のフレームデータの蓄積量又は受信ポート毎のフレームデータの蓄積量又は送信ポート毎のフレームデータの蓄積量のいずれか又はこれらの組み合わせと、対応する各々の蓄積量の上限値と、を比較して、この属性値のフレームデータをバッファ用メモリ手段に蓄積するか否かを決定する。なお、1つのフレームデータがマルチキャスト送信される場合もある。このフレームデータには複数個の送信ポート番号が割り当てられる。マルチキャスト送信されるフレームデータは、割り当てられた送信ポート番号の個数と同じ回数バッファ用メモリ手段から読み出されて送信される。一方、ユニキャスト送信されるフレームデータは、バッファ用メモリ手段から1回のみ読み出されて送信される。このフレームデータには1個の送信ポート番号が割り当てられる。
上記のバッファ回路は、属性値別蓄積量(クラス別・受信ポート別・送信ポート別のバッファ蓄積量)とバッファ用メモリの空き容量を監視し、バッファ用メモリの空き容量の変化に応じて、クラス別・受信ポート別・送信ポート別蓄積量の上限を所定の変更方法に基づいて変更し、前記蓄積量と前記蓄積量上限を比較し、フレームをバッファ用メモリに収容するか否かを判定する。クラス・受信ポート・送信ポートに応じて、蓄積量上限の変更方法に関するパラメタ値を変えることにより、バッファ用メモリの空き容量(蓄積量)に応じて、各フレームデータがバッファ用メモリに占める比率を調整できるため、キューイング制御に拠らずにクラスやポートに関連付けたバッファ輻輳時の廃棄等のバッファ制御が可能となる。また、上記のバッファ回路において、バッファ用メモリの空き容量(蓄積量)に基づいてクラス別・受信ポート別・送信ポート別蓄積量上限を算出する。バッファ用メモリの空きが大きい場合は、クラス別・受信ポート別・送信ポート別蓄積量上限が大きくなるよう算出することにより、バッファ用メモリの空きを蓄積量が増加中のクラス・ポートに振り当てることができる。これにより、バッファ用メモリの利用効率が向上するため、バッファ用メモリに要する回路の規模を削減することができる。
[3]また、本発明の一態様によるバッファ回路は上述のバッファ回路であって、前記バッファ用メモリ制御手段は、外部から入力されるフレームデータを所定の蓄積単位容量ずつに分割した分割フレームデータを前記バッファ用メモリ手段に書き込むとともに、各分割フレームデータを書き込んだ前記バッファ用メモリ手段の内部の記憶領域を示す連結区画番号を内部のフレームデータ連結用メモリに書き込み、外部から前記フレームデータ出力指示が入力されると前記連結区画番号に基づいて前記分割フレームデータを結合して前記フレームデータを生成し、該フレームデータを出力することを特徴とする。
このバッファ回路は、予め定められた蓄積単位容量Sをもつバッファ区画でバッファ用メモリを区画し、各フレームを蓄積単位容量Sの長さの分割フレームに分割し、空きバッファ区画を探して分割フレームを蓄積する。1フレーム当たりの未使用量がS未満となりバッファ用メモリの利用効率が向上するため、バッファ用メモリに要する回路の規模を削減することができる。
[4]また、本発明の一態様によるバッファ回路は上述のバッファ回路であって、前記属性値別蓄積量監視手段は、前記属性値別蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、前記収容判定手段は、前記空き容量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号又は前記蓄積量増信号が入力されると前記空き容量を減少させ、前記空き容量増信号又は前記蓄積量減信号が入力されると前記空き容量を増加させ、前記空き容量に基づいて前記上限値を算出することを特徴とする。
このバッファ回路は、バッファ用メモリ手段の空き容量または蓄積量に基づいて属性値別蓄積量の上限値を算出する。これにより各属性値の分割フレームデータを同一のバッファ回路に蓄積でき、バッファ用メモリに要する回路の規模を削減することができる。
[6]また、本発明の一態様によるバッファ回路制御方法は、バッファ回路が、フレームデータのクラス及びフレームデータを受信した受信ポート及びフレームデータを送信する送信ポートのうちの3つの属性であるフレームデータの属性毎に前記バッファ回路が具備するバッファ用メモリ手段に記憶されたフレームデータ数を示す属性値別蓄積量を出力する属性値別蓄積量監視ステップと、バッファ回路が、前記属性値別蓄積量の上限量を、前記バッファ用メモリ手段の空き容量に基づいて算出し、前記属性毎にフレームデータの属性を示す属性値が入力されると、前記属性値別蓄積量と前記上限量とを前記属性毎に比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に収容可能か否かを示す収容可否判定結果を判定し、前記3つの属性毎の前記収容可否判定結果のすべてが可であるか否かに応じて、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定し、蓄積する場合は収容有を示す情報を出力する収容判定ステップと、外部からフレームデータが入力された場合に、前記収容判定ステップの出力情報のうち、収容有の出力情報が入力されたときは、前記フレームデータを前記バッファ用メモリ手段に書き込むバッファ用メモリ制御ステップと、を具備することを特徴とする。
このバッファ回路制御方法では、バッファ回路は、各属性値のフレームデータが同一のバッファ用メモリに記憶され、各属性値に割り当てられる容量は上限値によって管理される。したがって、属性値毎にバッファ用メモリの固定の容量を割り当てる必要が無く、バッファ用メモリの利用効率が高い。
[7]また、本発明の一態様によるバッファ回路制御方法は上述のバッファ回路制御方法であって、前記バッファ用メモリ制御ステップは、外部からフレームデータと当該フレームデータの属性値とが入力され、前記入力されたフレームデータを前記バッファ用メモリ手段に書き込む場合は、空き容量減信号または蓄積量増信号と、前記入力された属性値と、を出力し、外部からフレームデータ読み出し指示と読み出すフレームデータの属性値とが入力され、前記フレームデータを読み出した場合は、空き容量増信号または蓄積量減信号と、前記入力された属性値とを出力し、前記属性値別蓄積量監視ステップは、前記属性値別蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、前記収容判定ステップは、前記空き容量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号が入力されると、前記空き容量を減少させ、前記空き容量増信号または前記蓄積量減信号が入力されると前記空き容量を増加させ、前記空き容量に基づいて前記上限量を算出することを特徴とする。
このバッファ回路処理方法では、このバッファ回路は、属性値別蓄積量(クラス別・受信ポート別・送信ポート別のバッファ蓄積量)とバッファ用メモリの空き容量を監視し、バッファ用メモリの空き容量の変化に応じて、クラス別・受信ポート別・送信ポート別蓄積量の上限を所定の変更方法に基づいて変更し、前記蓄積量と前記蓄積量上限を比較し、フレームをバッファ用メモリに収容するか否かを判定する。クラス・受信ポート・送信ポートに応じて、蓄積量上限の変更方法に関するパラメタ値を変えることにより、バッファ用メモリの空き容量(蓄積量)に応じて、各フレームデータがバッファ用メモリに占める比率を調整できるため、キューイング制御に拠らずにクラスやポートに関連付けたバッファ輻輳時の廃棄等のバッファ制御が可能となる。また、上記のバッファ回路において、バッファ用メモリの空き容量(蓄積量)に基づいてクラス別・受信ポート別・送信ポート別蓄積量上限を算出する。バッファ用メモリの空きが大きい場合は、クラス別・受信ポート別・送信ポート別蓄積量上限が大きくなるよう算出することにより、バッファ用メモリの空きを蓄積量が増加中のクラス・ポートに振り当てることができる。これにより、バッファ用メモリの利用効率が向上するため、バッファ用メモリに要する回路の規模を削減することができる。
[8]また、本発明の一態様によるバッファ回路制御方法は上述のバッファ回路制御方法であって、前記バッファ用メモリ制御ステップは、外部から入力されるフレームデータを所定の蓄積単位容量ずつに分割した分割フレームデータを前記バッファ用メモリ手段に書き込むとともに、各分割フレームデータを書き込んだ前記バッファ用メモリ手段の内部の記憶領域を示す連結区画番号を内部のフレームデータ連結用メモリに書き込み、外部から前記フレームデータ出力指示が入力されると前記連結区画番号に基づいて前記分割フレームデータを結合して前記フレームデータを生成し、該フレームデータを出力することを特徴とする。
このバッファ回路制御方法では、バッファ回路は、予め定められた蓄積単位容量Sをもつバッファ区画でバッファ用メモリを区画し、各フレームを蓄積単位容量Sの長さの分割フレームに分割し、空きバッファ区画を探して分割フレームを蓄積する。1フレーム当たりの未使用量がS未満となりバッファ用メモリの利用効率が向上するため、バッファ用メモリに要する回路の規模を削減することができる。
[9]また、本発明の一態様によるバッファ回路制御方法は上述のバッファ回路制御方法であって、前記属性値別蓄積量監視ステップは、前記属性値別蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、前記収容判定ステップは、前記空き容量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号又は前記蓄積量増信号が入力されると前記空き容量を減少させ、前記空き容量増信号又は前記蓄積量減信号が入力されると前記空き容量を増加させ、前記空き容量に基づいて前記上限値を算出することを特徴とする。
このバッファ回路制御方法では、バッファ回路は、バッファ用メモリ手段の空き容量または蓄積量に基づいて属性値別蓄積量の上限値を算出する。これにより各属性値の分割フレームデータを同一のバッファ回路に蓄積でき、バッファ用メモリに要する回路の規模を削減することができる。
この発明によれば、バッファメモリの利用効率がより高く、回路規模の増大を抑えることができる。
本発明を適用したバッファ回路を内蔵するスイッチ回路1の構成を示す。 図1のスイッチ回路1内の、本発明を適用したバッファ回路13の構成を示す。 図2に示したバッファ回路内の収容判定回路の構成を示す。 図3に示した収容判定回路内の各蓄積量判定回路のフローチャートの例と、空き容量と前記空き容量から前記フローチャートによって生成される蓄積量上限との関係を示す図である。 図3に示した収容判定回路内の各蓄積量判定回路のフローチャートの第2の例と、空き容量と前記空き容量から前記フローチャートによって生成される蓄積量上限との関係を示す図である。 本発明を適用したバッファ回路を内蔵するスイッチ回路2の構成を示す。 図6のスイッチ回路2内の、本発明を適用したバッファ回路の構成を示す。 図7のバッファ回路内の、本発明を適用したバッファ用メモリ制御回路の構成を示す。 フレームデータをバッファ用メモリに書き込んだときの状態を示す。 バッファ区画確保・書込制御回路のフローチャートである。 バッファ区画読出・解放制御回路のフローチャート 図7に示したバッファ回路内の収容判定回路の構成を示す。 図8のバッファ制御回路の動作を説明する図であり、フレームデータ連結用メモリ・バッファ用メモリの状態の変化を示す。 本発明を適用したバッファ回路を内蔵するスイッチ回路3の構成を示す。 図14のスイッチ回路3に含まれるバッファ回路(図7)内の、本発明を適用したバッファ用メモリ制御回路の構成を示す。 バッファ区画確保・書込制御回路のフローチャートである。 バッファ区画読出・解放制御回路のフローチャートである。 図15のバッファ制御回路の動作を説明する図であり、フレームデータ連結用メモリ・バッファ用メモリの状態の変化を示す。 図14のスイッチ回路に含まれるバッファ回路(図7)内の、本発明を適用したバッファ用メモリ制御回路の構成を示す。 図7に示したバッファ回路内の収容判定回路の構成を示す。 各蓄積量上限生成回路の動作を説明するフローチャートの例と、前記フローチャートによって生成される蓄積量上限との関係を示す図である。 本発明を適用したバッファ回路を内蔵するスイッチ回路7の構成を示す。
<第1の実施形態>
以下、図面を参照して、本発明の第1の実施の形態について説明する。
図1は本発明の第1の実施形態におけるスイッチ回路の概略構成を示す構成図である。
同図のスイッチ回路1は、イーサネット(登録商標)等で用いられるスイッチ回路である。スイッチ回路1は、受信ポートでフレームを受信すると、受信したフレームの受信ポートや宛先MAC(Media Access Control)アドレスまたはVLAN ID(Virtual Local Area Network Identifier)等に基づいて送信ポートを決定する。そして、決定された送信ポートにフレームを転送し、VLAN(Virtual Local Area Network)タグの挿入または削除等を行った後に送信する。また、スイッチ回路1は受信したフレームの受信ポートやVLANタグ内の優先度等に基づいてクラスを決定し、決定したクラスに基づいて送信時のQoS処理を行う。具体的には、スイッチ回路1は送信ポート別かつクラス別にキューを備え、より高いクラスのフレームを先に送信する優先制御やクラス毎の送信レート制限を行う。前記キューに格納されるフレームのフレームデータは、前記スイッチ回路1内のバッファ回路に蓄積される。
同図において、スイッチ回路1は、受信ポート毎の受信MAC回路11−1〜Npと受信処理回路12とバッファ回路13とQoS回路14と送信処理回路15と送信ポート毎の送信MAC回路16−1〜Npとを含んで構成される。
受信MAC回路11−1〜Npは、各受信ポートから受信したフレーム(以下、受信フレームともいう)のフレームデータに対して所定の受信側MAC処理を行い、前記受信フレームのフレームデータを受信処理回路12に経路W1−1を通じて出力する。
受信処理回路12は、入力されたフレームデータから宛先MACアドレスを読み出す。また、入力されたフレームデータがVLANタグを含む場合は、VLANタグからVLAN IDや優先度を読み出す。受信処理回路12は、受信ポートや宛先MACアドレスやVLAN IDに基づいて送信ポートを決定する。なお、受信処理回路12が、1個の受信フレームに対して複数個の送信ポートを決定する場合もある。すなわち、受信処理回路12は、マルチキャスト送信されるフレームデータに対しては、複数個の送信ポートを決定する。このフレームデータは決定された送信ポートの個数と同じ回数だけ読み出されて送信される。一方、受信処理回路12は、ユニキャスト送信されるフレームデータに対しては、1個の送信ポートを決定する。なお、入力されたフレームデータに該当する送信ポートが無く、受信処理回路12がフレームデータを廃棄する場合もある。
また、受信処理回路12は受信ポート番号やVLANタグから読み出した優先度情報に基づいてクラスを決定する。その後、受信処理回路12は、受信フレームのフレームデータと、クラスの情報や受信ポートの情報や送信ポートの情報を含む受信処理出力ジョブ情報とを、バッファ回路13に経路W1−2を通じて出力する。なお、上述したように送信ポートの情報が複数含まれる場合がある。
バッファ回路13は、入力したフレームデータを自バッファ回路13内のバッファ用メモリ100に蓄積し、バッファ用メモリにおける蓄積位置を示すハンドル番号とクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とを含むQoS入力ジョブ情報をQoS回路14に経路W1−3を通じて出力する。その際、バッファ回路13は、入力したフレームデータに含まれる送信ポートの情報のうち、QoS回路14のキューに蓄積可能(以下、QoS入力可能ともいう)な送信ポートの情報をQoS入力ジョブ情報に含めて出力する。そのために、バッファ回路13は、QoS回路14から経路W1−4を通じて入力されるQoS入力可否情報からクラス別かつ送信ポート別の入力可否の情報を読み出し、受信フレームのクラスの情報および送信ポートの情報を受信処理出力ジョブ情報から読み出す。バッファ回路13は、クラス別かつ送信ポート別の入力可否の情報とクラスの情報および送信ポートの情報とを比較してQoS入力可能な送信ポートの情報を選択する。なお、QoS入力可能な送信ポートがない場合は、バッファ回路13は受信フレームのフレームデータを前記バッファ用メモリに蓄積せず、また、QoS入力ジョブ情報を出力しない。
また、バッファ用メモリの蓄積状態に応じて、バッファ用メモリへの収容有無を判定し、収容無と判定した場合は、受信フレームのフレームデータを前記バッファ用メモリに蓄積せず、また、QoS入力ジョブ情報を出力しない。詳細については後述する。
QoS回路14は、バッファ回路13が入力したQoS入力ジョブ情報からクラスの情報および送信ポートの情報を読み出す。QoS回路14は、送信ポート別かつクラス別に対応付けられたキューを内部に備え、読み出した情報に基づいてキュー(複数の場合有り)を選択する。QoS回路14は、選択したキューにハンドル番号と受信ポートの情報とを含むキュー蓄積ジョブ情報を入力する。
また、QoS回路14は、各送信ポートについて、当該送信ポートかつ何れかのクラスに対応付けられた1個のキューを選択し、選択したキューから1個のキュー蓄積ジョブ情報を取り出す。QoS回路14は取り出したQoS出力ジョブ情報をバッファ回路13に出力する。その際、QoS回路14は、取り出したキュー蓄積ジョブ情報からハンドル番号と受信ポートの情報とを読み出す。また、キュー蓄積ジョブ情報をどのキューから取り出したかによって、送信ポートの情報とクラスの情報とを取得する。QoS回路14は、これらのハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報とをQoS出力ジョブ情報に含めて出力する。前記キューの選択やキュー蓄積ジョブ情報を取り出すタイミングは、QoS回路内のスケジューラ・シェーパが制御する。スケジューラ・シェーパは高いクラスのフレームを先に送信する優先制御やクラス毎の送信レート制限を行う。
また、QoS回路14は、ハンドル番号別蓄積ジョブ数を記憶する。ここで、ハンドル番号はバッファ用メモリ100上の領域を示し、ハンドル番号別蓄積ジョブ数は、この領域に保持されたフレームデータのキュー蓄積ジョブ情報が、キューに蓄積されている個数を示す。このキュー蓄積ジョブ情報がキューに蓄積されている個数は、キュー蓄積ジョブ情報に対応するフレームデータの残り送信回数である。特にマルチキャスト送信されるフレームデータは、全ての送信が終了するまでバッファ用メモリ100上に保持される。そのために、QoS回路14は、ハンドル番号別蓄積ジョブ数にてフレームデータの残り送信回数を計数する。バッファ用メモリ制御回路200は、ハンドル番号別蓄積ジョブ情報が0となった場合に当該フレームデータを記憶していたバッファ用メモリ100上の領域を解放する。また、ユニキャスト送信されるフレームデータの場合は、1個のキューにキュー蓄積ジョブ情報が蓄積され、QoS回路14はハンドル番号別蓄積ジョブ数として1を記憶する。このフレームデータが1回送信されると、ハンドル番号別蓄積ジョブ数が0となり、バッファ用メモリ制御回路200は当該フレームデータを記憶していたバッファ用メモリ100上の領域を解放する。
QoS回路14は、バッファ回路13からQoS入力ジョブ情報が入力されると、入力されたキュー蓄積ジョブ情報をキューに入力するとともに、キュー蓄積ジョブ情報を入力したキューの個数をハンドル番号別蓄積ジョブ数として記憶する。また、QoS回路14は、キューからキュー蓄積ジョブ情報を取り出す度に、キュー蓄積ジョブ情報からハンドル番号を読み出し、対応するハンドル番号別蓄積ジョブ数から1を減じる。QoS回路14は、ハンドル番号別蓄積ジョブ数が0となった場合に解放有、前記以外は解放無と判定する。QoS回路14は、この判定結果を解放有無の情報としてQoS出力ジョブ情報に含めてバッファ回路13に出力する。
また、QoS回路14は、送信ポート別かつクラス別に設けられたキューの各々について、キュー長が最大キュー長に達していない場合には当該キューへの入力可と判定し、それ以外の場合には入力不可と判定する。QoS回路14はこの判定結果をQoS入力可否情報としてバッファ回路13に経路W1−5を通じて出力する。
バッファ回路13は、入力されたQoS出力ジョブ情報からハンドル番号を読み出す。バッファ回路13は読み出したハンドル番号が示す、バッファ用メモリ100上の領域からフレームデータを読み出す。バッファ回路13は、読み出したフレームデータと、送信ポートを含むバッファ出力ジョブ情報とを、送信処理回路15に経路W1−6を通じて出力する。
送信処理回路15は、入力したフレームデータに対してVLANタグの挿入または削除等の処理を行う。送信処理回路15は、処理を行ったフレームデータを、バッファ出力ジョブ情報に含まれる送信ポートの送信MAC回路16−1〜Npに経路W1−7を通じて出力する。
送信MAC回路16−1〜Npは、前記入力されたフレームデータに対して所定の送信側MAC処理を行い、送信ポートから送信する。また、送信MAC回路16−1〜Npは、バッファ用メモリの蓄積状態に基づいて、送信ポートからポーズフレームを送信する。
図2は、バッファ回路13の概略構成を示す構成図である。同図において、バッファ回路13はバッファ用メモリ100(バッファ用メモリ手段)とバッファ用メモリ制御回路200(バッファ用メモリ制御手段)と収容判定回路300(収容判定手段)とクラス別蓄積量監視回路400と受信ポート別蓄積量監視回路500と送信ポート別蓄積量監視回路600とを含んで構成される。クラス別蓄積量監視回路400と受信ポート別蓄積量監視回路500と送信ポート別蓄積量監視回路600とが属性別蓄積量監視手段に対応する。
バッファ用メモリ100はフレームデータを記憶する。
バッファ用メモリ制御回路200は、受信処理回路12から入力されたフレームのフレームデータを、バッファ用メモリ100の空き領域に書き込む。この書き込みのため、バッファ用メモリ制御回路200は、バッファ用メモリ100回路に書込指示・書込アドレス・書込データを出力する。
バッファ用メモリ制御回路200は、受信処理回路12から入力されたフレームデータをバッファ用メモリ100に書き込む。バッファ用メモリ制御回路200は、バッファ用メモリ100回路に書込指示と書込アドレスを経路W13−4を通じて出力し、書込データを経路W13−5を通じて出力することにより書き込みを行う。また、バッファ用メモリ制御回路200は、QoS回路14から経路W13−9を通じて入力されるQoS出力ジョブ情報に従ってバッファ用メモリ100からフレームデータを経路W13−6を通じて読み出し、送信処理回路15に出力する。そのために、バッファ用メモリ制御回路200は読出指示と読出アドレスとをバッファ用メモリ100に経路W13−6を通じて出力する。
クラス別蓄積量監視回路400は、クラス別蓄積量を出力する。ここで、クラス別蓄積量は、バッファ用メモリ100に記憶されたフレームデータ数をクラス毎に示す。受信ポート別蓄積量監視回路500は、受信ポート別蓄積量を出力する。ここで、受信ポート別蓄積量は、バッファ用メモリ100に記憶されたフレームデータ数を受信ポート毎に示す。送信ポート別蓄積量監視回路600は、送信ポート別蓄積量を出力する。ここで、送信ポート別蓄積量は、バッファ用メモリ100に記憶されたフレームデータ数を受信ポート毎に示す。
収容判定回路300はバッファ用メモリ100の空き容量を内部に記憶する。また、収容判定回路300は、記憶する空き容量からクラス別蓄積量上限と受信ポート別蓄積量上限と送信ポート別蓄積量上限とを決定する。また、収容判定回路300は、収容有無情報を出力する。ここで、空き容量とは、後述するバッファ用メモリ100が所定の単位で区画化された場合にて、各区画のうちの空き区画の個数をいう。
なお、収容判定回路300がバッファ用メモリ100におけるフレームデータの蓄積量を内部に記憶するようにしてもよい。ここで、蓄積量とは、バッファ用メモリ100が所定の単位で区画された各区画のうち、フレームデータが記憶されている区画の個数をいう。空き容量と蓄積量とは和が一定の関係にあるので、空き容量を記憶する場合と同様に、収容判定回路300は記憶する蓄積量からクラス別蓄積量上限と受信ポート別蓄積量上限と送信ポート別蓄積量上限とを決定することができる。なお、以下では、収容判定回路300が記憶する空き容量または蓄積量を空き容量情報または蓄積量情報ともいう。
図3は収容判定回路300の概略構成を示す構成図である。同図において、収容判定回路300は、空き容量監視回路301とクラス_i蓄積量上限生成回路(i=1〜Nc;Ncはクラス数)302−1〜Ncと受信ポート_i(i=1〜Np;Npはポート数)305−1〜Npと送信ポート_i蓄積量上限生成回路(i=1〜Mp;Npはポート数;送信ポート数と受信ポート数が同数であるスイッチ回路の場合)308−1〜Ncとクラス_i蓄積量判定回路(i=1〜Nc)303−1〜Ncと受信ポート_i蓄積量判定回路(i=1〜Np)306−1〜Ncと送信ポート_i蓄積量判定回路(i=1〜Np)309−1〜Npと選択回路304、307と複数選択回路310と論理積回路311とを含んで構成される。
空き容量監視回路301は、バッファ用メモリ100の空き容量情報を、フレーム数にて内部に記憶する。なお、上述のように、空き容量監視回路301が、バッファ用メモリ100におけるフレームデータの蓄積量を、フレーム数に内部に記憶するようにしてもよい。
空き容量監視回路301は、バッファ用メモリ制御回路200から空き容量増減信号が経路W300−1を通じて入力されると、内部に保持する空き容量情報を増加または減少させる。空き容量増減信号がバッファ用メモリの1区画を確保したことを示す場合は、バッファ用メモリ100に1個のフレームを蓄積することに相当するため、空き容量情報を1減少させる。また、空き容量増減信号がバッファ用メモリの1区画を解放したことを示す場合は、バッファ用メモリの1個のフレームを廃棄することに相当するため、空き容量情報を1増加させる。
クラス_i蓄積量上限生成回路(i=1〜Nc)302−1〜Ncは、空き容量監視回路301から空き容量を入力し、クラス_iに関するクラス別蓄積量上限を生成し出力する。クラス_i蓄積量判定回路(i=1〜Nc)303−1〜Ncは、クラス_iに関するクラス別蓄積量上限とクラス別蓄積量とを入力し、クラス別蓄積量上限とクラス別蓄積量とを比較し、クラス_i蓄積量判定結果として出力する。クラス別蓄積量がクラス別蓄積量上限よりも小さい場合は、収容可能であることを示す1を出力し、それ以外の場合は収容不可であることを示す0を出力する。クラス別蓄積量は経路W300−2を通じてクラス別蓄積量監視回路400から入力される。
選択回路304は、クラス_i蓄積量判定回路(i=1〜Nc)303−1〜Ncから入力するクラス_i蓄積量判定結果(i=1〜Nc)のうち、入力フレームのクラスに関する判定結果を選択し、クラス別収容可否判定結果とする。入力フレームのクラスは、バッファ用メモリ制御回路200から経路W300−3を通じて入力される。
受信ポート_i蓄積量上限生成回路(i=1〜Np)305〜1−Npは、空き容量監視回路301から空き容量を入力し、受信ポート_iに関する受信ポート別蓄積量上限を生成し出力する。受信ポート_i蓄積量判定回路(i=1〜Np)306〜1−Npは、受信ポート_iに関する受信ポート別蓄積量上限と受信ポート別蓄積量を入力し、受信ポート別蓄積量上限と受信ポート別蓄積量とを比較し、受信ポート_i蓄積量判定結果として出力する。受信ポート別蓄積量が受信ポート別蓄積量上限よりも小さい場合は、収容可能であることを示す1を出力し、それ以外の場合は収容不可であることを示す0を出力する。受信ポート別蓄積量は経路W300−4を通じて受信ポート別蓄積量監視回路500から入力される。
選択回路307は、受信ポート_i蓄積量判定回路(i=1〜Np)306〜1−Npから入力する受信ポート_i蓄積量判定結果(i=1〜Np)のうち、入力フレームの受信ポートに関する判定結果を選択し、受信ポート別収容可否判定結果とする。入力フレームの受信ポートは、バッファ用メモリ制御回路200から経路W300−5を通じて入力される。
送信ポート_i蓄積量上限生成回路(i=1〜Np)308−1〜Npは、空き容量監視回路301から空き容量を入力し、送信ポート_iに関する送信ポート別蓄積量上限を生成し出力する。送信ポート_i蓄積量判定回路(i=1〜Np)309−1〜Npは、送信ポート_iに関する送信ポート別蓄積量上限と送信ポート別蓄積量を入力し、前記蓄積量上限と前記蓄積量をと比較し、送信ポート_i蓄積量判定結果として出力する。送信ポート別蓄積量が送信ポート別蓄積量上限よりも小さい場合は、収容可能であることを示す1を出力し、それ以外の場合は収容不可であることを示す0を出力する。送信ポート別蓄積量は経路W300−6を通じて送信ポート別蓄積量監視回路600から入力される。
複数選択回路310は、送信ポート_i蓄積量判定回路(i=1〜Np)309−1〜Npから入力する送信ポート_i蓄積量判定結果(i=1〜Np)のうち、入力フレームの送信ポートに関する判定結果を選択し、送信ポート別収容可否判定結果として出力する。ここで、入力フレームの送信ポートが複数ある場合もある。そこで、複数選択回路310は、入力フレームの送信ポートのうちいずれか1個以上の送信ポートに関して1となる判定結果がある場合は送信ポート別収容可否判定結果を1とし、それ以外の場合は0とする。入力フレームの送信ポートは、バッファ用メモリ制御回路200から経路W300−7を通じて入力される。
なお、ある受信ポートについて、受信ポート別蓄積量が受信ポート別蓄積量上限を超えた場合、バッファ用メモリ制御回路200からの信号に従って送信MAC回路16−1〜Npが、前記受信ポートに対応した送信ポートから、所定のポーズフレームを送出するようにしてもよい。また、あらかじめ指定したクラスについて、クラス別蓄積量がクラス別蓄積量上限を超えた場合、バッファ用メモリ制御回路200からの信号に従って送信MAC回路16−1〜Npが、リンクが確立した全送信ポートから、所定のポーズフレームを送出するようにしてもよい。また、送信ポート別蓄積量についても同様にポーズフレームを送出するようにしてもよい。
または、上記のように、ポーズフレーム送出を、属性値別蓄積量が対応する属性値別蓄積量上限を超えたことを契機として行うのではなく、ポーズ後蓄積可能量を予め定めておき、受信ポート別蓄積量が属性値別蓄積量上限からポーズ後蓄積可能量を減じた量を超えた場合に行ってもよい。この場合は、ポーズフレーム送出後に受信されたフレームであってもポーズ後蓄積可能量の範囲であれば廃棄されない。
または、属性値別蓄積量上限とは別に、属性値別蓄積量上限の生成方法と同様の方法により、属性値別蓄積量制限を生成し、属性値別蓄積量が対応する前記属性値別蓄積量制限を超えたことを契機として、ポーズフレームを送出するようにしてもよい。
論理積回路311は、クラス別収容可否判定結果と受信ポート別収容可否判定結果と送信ポート別収容可否判定結果のすべてが収容可を示す1となった場合に、入力フレームに対する収容有無を収容有と判定し、それ以外の場合は収容無と判定し、前記入力フレームの収容有無をバッファ用メモリ制御回路200に経路W300−8を通じて出力する。
次に、スイッチ回路1の動作について説明する。
受信ポートi_1〜Npの何れかが外部からフレームを受信すると、その受信ポートに対応する受信側MAC回路11−1〜11−Npが受信フレームのフレームデータに対して所定の受信MAC側処理を行う。受信側MAC回路は、処理を行った受信フレームデータを受信処理回路12に入力する。
受信処理回路12は、入力されたフレームデータから宛先MACアドレスを読み出す。また、入力されたフレームデータがVLANタグを含む場合は、VLANタグからVLAN IDや優先度を読み出す。受信処理回路12は、受信ポートや宛先MACアドレスやVLAN IDに基づいて送信ポートを決定する。
また、受信処理回路12は受信ポート番号やVLANタグから読み出した優先度情報に基づいてクラスを決定する。その後、受信処理回路12は、受信フレームのフレームデータと、クラスの情報や受信ポートの情報や送信ポートの情報(複数の場合有り)を含む受信処理出力ジョブ情報とを、バッファ回路13に出力する。
バッファ回路13において、バッファ用メモリ制御回路200は、QoS回路14から入力したQoS入力可否を内部に記憶している。受信処理回路12からフレームデータと受信処理出力ジョブ情報とが経路W13−1を通じて入力されると、バッファ用メモリ制御回路200は、受信処理出力ジョブ情報とQoS回路14から経路W13−3を通じて入力されたQoS入力可否情報とに基づいてバッファ用メモリへの蓄積可否を判定する。具体的には、バッファ用メモリ制御回路200は、受信処理出力ジョブ情報から入力したフレームデータのクラスと送信ポート番号とを読み出す。バッファ用メモリ制御回路200は、読み出した入力フレームのクラスと送信ポート番号とに基づいて、QoS入力可否情報から前記クラスかつ前記送信ポートのキューへの入力可否を読み出し、前記キューへの入力が可能な場合はバッファ用メモリ100への蓄積が可能と判定し、それ以外の場合は蓄積不可と判定する。前記受信処理出力ジョブ情報に含まれる送信ポート番号が複数個である場合には、送信ポート番号毎に上記の読み出しを行い、何れかのキューで入力が可能な場合に蓄積可と判定し、それ以外の場合は蓄積不可と判定する。
上記の蓄積可否の判定において蓄積不可と判定した場合、バッファ用メモリ制御回路200は入力したフレームデータを破棄する。
一方、蓄積可否の判定において蓄積可と判定した場合、バッファ用メモリ制御回路200は、前記入力したフレームデータのクラス情報と受信ポートの情報と送信ポートの情報とを収容判定回路300に経路W13−15を通じて出力する。ここで、バッファ用メモリ制御回路200は、受信処理出力ジョブ情報に含まれる送信ポートのうち、上記の蓄積可否判定においてキューへの入力が可能と判定した送信ポートの情報を出力する。バッファ用メモリ制御回路200が複数の送信ポートの情報を出力する場合もある。なお、送信ポート番号を出力する代わりに、バッファ用メモリ制御回路200が送信ポート毎のフラグを含む信号を出力するようにしてもよい。例えば、1ビットのフラグを用いて、フラグが1の送信ポートから入力フレームデータを送信することを示し、フラグが0の送信ポートからは入力フレームデータを送信しないことを示すようにする。
収容判定回路300は、バッファ用メモリ制御回路200から入力した情報に基づいて、入力フレームデータをバッファ用メモリ100に収容するか否かを決定する。収容判定回路の動作の詳細については後述する。収容判定回路300は、判定結果を示す収容有無をバッファ用メモリ制御回路200に経路W13−16を通じて出力する。入力フレームデータをバッファ用メモリ100に収容する場合は収容有無として収容有を出力し、収容しない場合は収容無を出力する。
また、クラス別蓄積量監視回路400は、バッファ用メモリ100に蓄積中のフレームデータのうち、同一クラスのフレームデータ数を計数し、計数の結果をクラス別蓄積量として収容判定回路300に経路W13−12を通じて出力する。
クラス別蓄積量監視回路400は、次の方法で計数を行う。まず、クラス別蓄積量監視回路400は、バッファ用メモリ100に蓄積中のフレームのうち同一クラスのフレーム数を、クラス別蓄積量として保持する。また、クラス別蓄積量監視回路400は、バッファ用メモリ制御回路200から、バッファ用メモリ100のバッファ区画を確保または解放したことを示す空き容量増減信号が経路13−11を通じて入力される。さらに、前記信号とあわせて、確保または解放されるバッファ区画に蓄積されるフレームデータのクラスの情報が経路13−10を通じて入力される。
空き容量増減信号を入力したとき、クラス別蓄積量監視回路400は、入力したクラスにの情報に対応するクラス別蓄積量を空き容量増減信号に基づいて増加または減少させる。空き容量増減信号がバッファ用メモリの1区画を確保したことを示す場合は、1個のフレームを蓄積することに相当するため、クラス別蓄積量を1増加させる。一方、空き容量増減信号がバッファ用メモリの1区画を解放したことを示す場合は、1個のフレームを廃棄することに相当するため、クラス別蓄積量を1減少させる。
受信ポート別蓄積量監視回路500は、バッファ用メモリ100に蓄積中のフレームデータのうち、同一受信ポートのフレームデータ数を計数し、計数の結果を受信ポート別蓄積量として収容判定回路300に経路W13−13を通じて出力する。
受信ポート別蓄積量監視回路500は、クラス別蓄積量監視回路400と同様に、次の方法で計数を行う。まず、受信ポート別蓄積量監視回路500は、バッファ用メモリ100に蓄積中のフレームのうち同一受信ポートのフレーム数を、受信ポート別蓄積量として保持する。また、受信ポート別蓄積量監視回路500は、バッファ用メモリ制御回路200から、バッファ用メモリ100のバッファ区画を確保または解放したことを示す空き容量増減信号が経路W13−11を通じて入力される。さらに、前記信号とあわせて、確保または解放されるバッファ区画に蓄積されるフレームデータの受信ポートの情報が経路W13−10を通じて入力される。
空き容量増減信号を入力したとき、受信ポート別蓄積量監視回路500は、入力した受信ポートの情報に対応する受信ポート別蓄積量を空き容量増減信号に基づいて増加または減少させる。空き容量増減信号がバッファ用メモリの1区画を確保したことを示す場合は、受信ポート別蓄積量を1増加させる。一方、空き容量増減信号がバッファ用メモリの1区画を解放したことを示す場合は、受信ポート別蓄積量を1減少させる。
送信ポート別蓄積量監視回路600は、バッファ用メモリ100に蓄積中のフレームデータのうち、同一送信ポートのフレームデータ数を計数し、計数の結果を送信ポート別蓄積量として経路W13−14を通じて収容判定回路300に出力する。
送信ポート別蓄積量監視回路600は、クラス別蓄積量監視回路400と同様に、次の方法で計数を行う。まず、送信ポート別蓄積量監視回路600は、バッファ用メモリ100に蓄積中のフレームのうち同一送信ポートのフレーム数を、送信ポート別蓄積量として保持する。また、送信ポート別蓄積量監視回路600は、バッファ用メモリ制御回路200から、バッファ用メモリ100のバッファ区画を確保または解放したことを示す空き容量増減信号が経路W13−11を通じて入力される。さらに、前記信号とあわせて、確保または解放されるバッファ区画に蓄積されるフレームデータの送信ポートの情報が経路W13−10を通じて入力される。
空き容量増減信号を入力したとき、送信ポート別蓄積量監視回路600は、入力した送信ポートの情報対応する送信ポート別蓄積量を、空き容量増減信号に基づいて増加または減少させる。空き容量増減信号がバッファ用メモリの1区画を確保したことを示す場合は、送信ポート別蓄積量を1増加させる。一方、空き容量増減信号がバッファ用メモリの1区画を解放したことを示す場合は、送信ポート別蓄積量を1減少させる。
複数の送信ポートの情報を入力した場合は、各送信ポートについて、対応する送信ポート別蓄積量を増加または減少させる。
収容判定回路300は、バッファ用メモリ制御回路200から空き容量減信号または空き容量増信号が経路W13−11を通じて入力を受け、バッファ用メモリ100の空き容量を監視する。ここで、空き容量減信号は、バッファ用メモリ100の空きバッファ区画を確保したことを示す信号である。空き容量増信号は、バッファ用メモリ100の空きバッファ区画を解放したことを示す信号である。以下では、空き容量減信号と空き容量増信号を総称して空き容量増減信号ともいう。
また、収容判定回路300は、空き容量情報を内部に保持し、空き容量情報に基づいて、クラス別蓄積量上限と受信ポート別蓄積量上限と送信ポート別蓄積量上限とを定める。
図4は、収容判定回路300内の各蓄積量上限生成回路が生成する蓄積量上限と、その生成手順を示す図である。ここで、蓄積量上限生成回路は、クラス_i蓄積量上限生成回路(1≦i≦Nc;Ncはクラス数)または受信ポート_i蓄積量上限生成回路(1≦i≦Np;Npは受信ポート数)または送信ポート_i蓄積量上限生成回路(1≦i≦Np;Npは送信ポート数)をいう。また、蓄積量判定回路は、クラス_i蓄積量判定回路(1≦i≦Nc;Ncはクラス数)または受信ポート_i蓄積量判定回路(1≦i≦Np;Npは受信ポート数)または送信ポート_i蓄積量判定回路(1≦i≦Np;Npは送信ポート数)をいう。
図4(a)は収容判定回路300内の各蓄積量上限生成回路が蓄積量上限を生成する手順を示すフローチャートである。
なお、以下のV_1とV_2とV_NvとL_1とL_2とL_NvとL_maxとLminとKとは外部から設定するパラメタを示すが、斜字による表示を省略する。
空き容量監視回路301から空き容量が入力されると蓄積量上限生成回路は蓄積量上限を生成する処理を開始する。
ステップS1において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値V_1より小さいかを判断する。V_1より小さい場合(ステップS1:Y)は、ステップS2へ進み、V_1以上の場合(ステップS1:N)は、ステップS3へ進む。ステップS2において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値L_1とする。その後、蓄積量上限生成回路はステップS8へ進む。
ステップS3において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値V_2より小さいかを判断する。V_2より小さい場合(ステップS3:Y)は、ステップS4へ進み、V_2以上の場合(ステップS3:N)は、ステップS5へ進む。ステップS4において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値L_2とする。その後、蓄積量上限生成回路はステップS8へ進む。
ステップS5において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値V_Nvより小さいかを判断する。V_Nvより小さい場合(ステップS5:Y)は、ステップS6へ進み、V_Nv以上の場合(ステップS5:N)は、ステップS7へ進む。ステップS6において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値L_Nvとする。その後、蓄積量上限生成回路は、ステップS8へ進む。
ステップS7において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値L_maxとする。
ステップS8において、蓄積量上限生成回路は蓄積量判定回路に蓄積量上限を出力する。その後、蓄積量上限生成回路は蓄積量上限を生成する処理を終了する。
なお、ステップS1等の空き容量の大きさを判断するステップとステップS2等の蓄積量上限を設定するステップからなる一連の処理は1個以上であればよく、図4(a)に示される3個に限らない。
図4(b)は、収容判定回路300内の各蓄積量上限生成回路が生成する蓄積量上限と空き容量との関係を示すグラフである。図4で示した手順に従い、蓄積量上限生成回路は同図に示される蓄積量上限を生成する。
なお、各蓄積量上限生成回路が生成する蓄積量上限およびその手順は図4に示したものに限らない。
図5は、収容判定回路300内の各蓄積量上限生成回路が生成するもう1つの蓄積量上限と、その生成手順を示す図である。
図5(a)は、収容判定回路300内の各蓄積量上限生成回路が蓄積量上限を生成する手順を示すフローチャートである。
空き容量監視回路301から空き容量が入力されると蓄積量上限生成回路は蓄積量上限を生成する処理を開始する。
ステップS21において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値V_1より小さいかを判断する。V_1より小さい場合(ステップS21:Y)は、ステップS22へ進み、V_1以上の場合(ステップS21:N)は、ステップS23へ進む。ステップS22において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値Lminとする。その後、蓄積量上限生成回路はステップS26へ進む。
ステップS23において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値V_2以上かを判断する。V_2以上の場合(ステップS23:Y)は、ステップS24へ進み、V_2より小さい場合(ステップS23:N)は、ステップS25へ進む。ステップS24において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値L_2とする。その後、蓄積量上限生成回路はステップS26へ進む。その後、蓄積量上限生成回路は蓄積量上限を生成する処理を終了する。
ステップS25において、蓄積量上限生成回路は蓄積量上限を式(1)に従って設定すする。
Figure 0005191059
ステップS26において、蓄積量上限生成回路は蓄積量判定回路蓄積量を出力する。
図5(b)は、収容判定回路300内の各蓄積量上限生成回路が生成する蓄積量上限と空き容量との関係を示すグラフである。図5(a)で示した手順に従い、蓄積量上限生成回路は同図に示される蓄積量上限を生成する。
同図に示されるように、図5(b)の手順では、空き容量がV_1以上V_2未満の範囲にある場合に、蓄積量上限を空き容量の一次関数として算出する。
また、収容判定回路300は、生成した蓄積量上限を用いて、バッファ用メモリ制御回路200が受信処理回路12から入力したフレームのバッファ用メモリ100への収容可否を、以下の方法で判定する。
まず、収容判定回路300は、このフレームのクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とをバッファ用メモリ制御回路200から入力する。また、クラス別蓄積量監視回路400からクラス別蓄積量を入力し、受信ポート別蓄積量監視回路500から受信ポート別蓄積量を入力し、送信ポート別蓄積量監視回路600から送信ポート別蓄積量を入力する。
収容判定回路300は、クラス別蓄積量から、入力したクラスの情報が示すクラス(以下、単に入力したクラスともいう。入力した受信ポート、入力した送信ポートについても同様。)に関するクラス別蓄積量を読み出す。次に、収容判定回路300は、入力したクラスに関するクラス別蓄積量とクラス別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、クラス別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。
また、収容判定回路300は、受信ポート別蓄積量から、入力した受信ポートに関する受信ポート別蓄積量を読み出す。次に、収容判定回路300は、入力した受信ポートに関する受信ポート別蓄積量と受信ポート別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、受信ポート別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。
また、収容判定回路300は、送信ポート別蓄積量から、入力した送信ポートに関する送信ポート別蓄積量を読み出す。次に、収容判定回路300は、入力した送信ポートに関する送信ポート別蓄積量と送信ポート別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、送信ポート別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。入力した送信ポートが複数ある場合は、複数の送信ポートの何れか1個以上の送信ポートについて、蓄積量が蓄積量上限より少ない場合に、送信ポート別収容可否判定結果として収容可とし、前記以外の場合に収容不可とする。
収容判定回路300は、クラス別収容可否判定結果と受信ポート別収容可否判定結果と送信ポート別収容可否判定結果とのすべてが収容可となった場合に、前記入力フレームに対する収容有無を収容有と判定し、前記以外の場合は収容無と判定する。収容判定回路300は、前記入力フレームの収容有無をバッファ用メモリ制御回路200に出力する。
なお、収容判定回路300は、クラス別収容可否判定結果受信ポート別収容可否判定結果、送信ポート別収容可否判定結果の全てについて判定結果を取得する回路でなくとも、これらの判定結果のうち1個以上について判定結果を取得する回路であってもよい。その場合は、得た判定結果の全てにおいて収容可である場合にのみ収容有と判定する。
また、収容判定回路300が、クラス別収容可否判定結果、受信ポート別収容可否判定結果、送信ポート別収容可否判定結果の各々に判定結果イネーブルの設定を設け、前記イネーブルが設定されている判定結果の全てが収容可となった場合のみ収容有と判定するようにしてもよい。
また、収容判定回路300が、クラス別収容可否判定結果、受信ポート別収容可否判定結果、送信ポート別収容可否判定結果の何れか1個が収容可であった場合に収容有と判定するようにしてもよい。
また、収容判定回路300が、2種類のクラス別蓄積量上限(高上限、低上限)を用いて収容可否判定を行うようにしてもよい。例えば、収容判定回路300は、2種類のクラス別蓄積量上限(高上限、低上限)を定めておき、各クラス別蓄積量上限から2種類のクラス別収容可否判定結果(高上限、低上限)を得る。クラス別収容可否判定結果(高上限)において収容可となった場合は、受信ポート別収容可否判定結果または送信ポート別収容可否判定結果において収容不可となった場合であっても、収容有と判定する。前記以外の場合は、クラス別収容可否判定結果(低上限)と受信ポート別収容可否判定結果と送信ポート別収容可否判定結果との全てにおいて収容可となった場合のみ、収容有と判定する。
また、クラス別蓄積量上限のみならず、受信ポート別蓄積量上限や送信ポート別蓄積量上限についても2種類を定め、前記と同様の判定を行うようにしてもよい。
また、入力フレームの送信ポートが複数個ある場合に、送信ポート別に収容有無をバッファ用メモリ制御回路200に出力するようにしてもよい。例えば、収容判定回路300は、前記送信ポートの各々について、送信ポート別収容可否判定結果を生成する。クラス別収容可否判定結果および受信ポート別収容可否判定結果の両方が収容可である場合に、前記送信ポート別収容可否判定結果に基づいて収容有無を判定し、前記送信ポート別に収容有無をバッファ用メモリ制御回路200に出力する。この場合、バッファ用メモリ制御回路200は、クラス別蓄積量監視回路400や受信ポート別蓄積量監視回路500や送信ポート別蓄積量監視回路600やQoS回路14に出力する送信ポートの情報を、収容有と判定された送信ポートに限定する。
収容判定回路300から収容有を入力した場合、バッファ用メモリ制御回路200は、受信処理回路から入力したフレームデータを、バッファ用メモリ100の空き領域に書き込む。バッファ用メモリ制御回路200は、バッファ用メモリ100に書込指示と書込アドレスと書込データとを出力することにより書き込みを行う。一方、収容判定回路300から収容無を入力した場合は、バッファ用メモリ制御回路200は、入力フレームを破棄する。バッファ用メモリ制御回路200は、バッファ用メモリ100を、最大フレーム長のフレームデータを蓄積可能な単位で区画化し、1個の区画に1個のフレームのフレームデータを収容するよう制御する。スイッチ回路1が送受信する最大フレーム長は2キロバイトであり、上記の区画化の単位も2キロバイトである。なお、最大フレーム長は2キロバイト以外であってもよい。また、区画化の単位は最大フレーム長以上であればよく、最大フレーム長と同一でなくてもよい。
バッファ用メモリ制御回路200は、各区画にバッファ区画番号を割り振り、バッファ区画番号別に空き有無を管理する。入力フレームのフレームデータをバッファ用メモリに書き込むときは、空き有のバッファ区画番号を前記フレームに対するハンドル番号として取得するとともに前記バッファ区画番号の空き有を空き無に変更する。また、取得したハンドル番号が示すバッファ用メモリの空き領域に前記フレームデータを書き込む。
また、バッファ用メモリ制御回路200は、バッファ用メモリの確保により収容されるフレームデータの属性値、具体的にはクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とをクラス別蓄積量監視回路400と受信ポート別蓄積量監視回路500と送信ポート別蓄積量監視回路600とに出力する。併せて、バッファ用メモリ100の1区画を確保したことを示す空き容量減信号を、クラス別蓄積量監視回路400と受信ポート別蓄積量監視回路500と送信ポート別蓄積量監視回路600と収容判定回路300とに出力する。バッファ用メモリ制御回路200は、フレームデータをバッファ用メモリ100に書き込み終えると、フレームデータのクラスと受信ポートと送信ポート(複数の場合有り)の情報と前記書き込み時に取得したハンドル番号とを含むQoS入力ジョブ情報を生成し、経路W13−2を通じてQoS回路14に出力する。
なお、バッファ用メモリ制御回路200が空き容量減信号に代えて、バッファ用メモリ100の蓄積量が増加したことを示す蓄積量増信号を出力するようにしてもよい。バッファ用メモリ制御回路200の空き容量が1区画分減少すると、蓄積量が一区画分増加する関係にあり、蓄積量増信号の入力を受けたクラス別蓄積量監視回路400と受信ポート別蓄積量監視回路500と送信ポート別蓄積量監視回路600と収容判定回路300とは、空き容量減信号の入力を受けた場合と同様の処理を行う。
バッファ用メモリ制御回路200は、QoS回路14からQoS出力ジョブ情報を入力すると、QoS出力ジョブ情報からハンドル番号を読み出す。QoS出力ジョブ情報は、フレームデータの読み出し指示であり、読み出すフレームデータの属性値を含む。
バッファ用メモリ制御回路200は、読み出したハンドル番号が示すバッファ用メモリ100の区画(以下、バッファ区画ともいう)からフレームデータを読み出し、送信処理回路15に出力する。バッファ用メモリ制御回路200は、バッファ用メモリ100に読出指示と読出アドレスを出力し、バッファ用メモリ100から読出データを入力する。
フレームデータを読み出した場合は、バッファ用メモリ制御回路200はQoS出力ジョブ情報から送信ポートの情報を読み出す。バッファ用メモリ制御回路200は送信ポートの情報を含む送信処理入力ジョブ情報を生成し、送信処理回路15に経路W13−8を通じて出力する。
送信処理回路15は、バッファ回路13から入力されたフレームデータに対してVLANタグの挿入または削除等の処理を行う。送信処理回路15は、処理を行ったフレームデータを、バッファ出力ジョブ情報に含まれる送信ポートの送信MAC回路16−1〜Npに出力する。
送信MAC回路16−1〜Npは、送信処理回路15から入力されたフレームデータに対して所定の送信側MAC処理を行い、送信ポートから送信する。また、送信MAC回路16−1〜Npは、バッファ用メモリの蓄積状態に基づいて、送信ポートからポーズフレームを送信する。
さらに、QoS出力ジョブ情報に含まれる解放有無の情報が解放有を示す場合、バッファ用メモリ制御回路200は、バッファ用メモリからフレームデータを読み出し終えると、読み出したバッファ用メモリの領域を示すバッファ区画番号の空き有無を有に変更する。これにより、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ制御回路200は、解放されたバッファ用メモリから読み出したフレームデータの属性値、具体的にはクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とを各々クラス別蓄積量監視回路400と受信ポート別蓄積量監視回路500と送信ポート別蓄積量監視回路600とに出力する。また、バッファ用メモリ制御回路200は、バッファ用メモリ100の1区画を解放したことを示す空き容量増信号を、クラス別蓄積量監視回路400と受信ポート別蓄積量監視回路500と送信ポート別蓄積量監視回路600と収容判定回路300とに出力する。
前述したように、クラス別蓄積量監視回路400と受信ポート別蓄積量監視回路500と送信ポート別蓄積量監視回路600と収容判定回路300とは、バッファ用メモリ制御回路200からこれらの信号が入力されると、それぞれクラス別蓄積量と受信ポート別蓄積量と送信ポート別蓄積量と空き容量情報とを増減させる。
なお、バッファ用メモリ制御回路200が空き容量増信号に代えて、バッファ用メモリ100の蓄積量が減少したことを示す蓄積量減信号を出力するようにしてもよい。バッファ用メモリ制御回路200の空き容量が1区画分増加すると、蓄積量が一区画分減少する関係にあり、蓄積量減信号の入力を受けたクラス別蓄積量監視回路400と受信ポート別蓄積量監視回路500と送信ポート別蓄積量監視回路600と収容判定回路300とは、空き容量増信号の入力を受けた場合と同様の処理を行う。
以上のように、本実施形態のバッファ回路13は、クラス別・受信ポート別・送信ポート別のバッファ蓄積量とバッファ用メモリ100の空き容量を監視し、バッファ用メモリ100の空き容量の変化に応じて、クラス別・受信ポート別・送信ポート別蓄積量の上限を所定の変更方法に基づいて変更し、前記蓄積量と前記蓄積量上限を比較し、フレームをバッファ用メモリ100に収容するか否かを判定する。クラス・受信ポート・送信ポートに応じて、蓄積量上限の変更方法に関するパラメタ値を変えることにより、バッファ用メモリ100の空き容量(蓄積量)に応じて、各フレームデータがバッファ用メモリ100に占める比率を調整できるため、キューイング制御に拠らずにクラスやポートに関連付けたバッファ輻輳時の廃棄等のバッファ制御が可能となる。
また、上記のバッファ回路13において、算出したクラス別・受信ポート別・送信ポート別蓄積量上限は、バッファ用メモリ100の空き容量(蓄積量)が所定の範囲にある場合に、バッファ用メモリ100の空き容量(蓄積量)の所定量の増加によって、クラス別・受信ポート別・送信ポート別蓄積量上限の所定量の増加(減少)となる。このため、バッファ用メモリ100の空きが大きい場合は、クラス別・受信ポート別・送信ポート別蓄積量上限が大きくなるため、バッファ用メモリ100の空きを蓄積量が増加中のクラス・ポートに振り当てることができる。これにより、バッファ用メモリ100の利用効率が向上するため、バッファ用メモリ100に要する回路の規模を削減することができる。
<第2の実施形態>
図6は、本発明の第2の実施形態におけるスイッチ回路2の概略構成を示す構成図である。
同図において、スイッチ回路2は、受信ポート毎の受信MAC回路21−1〜Npと受信処理回路22とバッファ回路23とQoS回路24と送信処理回路25と送信ポート毎の送信MAC回路26−1〜Npとを含んで構成される。
同図の受信MAC回路21−1〜Npと送信処理回路25と送信側MAC回路26−1〜Npとは、図1の受信MAC回路11−1〜Npと送信処理回路15と送信側MAC回路16−1〜Npとに対応し、その説明を省略する。
受信処理回路22は、図1の受信処理回路12に対応するが、経路W2−1を通じて入力された受信フレームのフレームデータを受信ポート別に蓄積する受信バッファ回路22−1〜22−Npを備える点で、受信処理回路12と異なる。受信バッファ回路は、受信ポート毎に少なくとも最大フレーム長のフレームデータを1フレーム分蓄積可能な容量を有する。受信処理回路22は、受信ポート毎に設けられた受信バッファ回路から、少なくとも1フレームのデータが蓄積された受信バッファ回路を選択し、前記選択した受信バッファ回路に蓄積された1フレーム分のフレームデータを、バッファ回路23に出力する受信フレームデータ選択回路22−bを備える。また、受信処理回路22は、受信バッファ回路に蓄積された各フレームについて、そのフレーム長を取得し、前記フレーム長の情報を含む受信処理出力ジョブ情報をバッファ回路23に経路W2−2を通じて出力する。
バッファ回路23は、前記入力したフレームデータを前記バッファ回路内のバッファ用メモリに蓄積するとともに、前記蓄積位置を示すハンドル番号と、フレーム長とクラスと受信ポートと送信ポート(複数の場合有り)の情報とを含むQoS入力ジョブ情報とを、QoS回路24に経路W2−3を通じて出力する。
QoS回路24は、入力したQoS入力ジョブ情報からクラスと送信ポートの情報とを読み出す。QoS回路24は読み出した情報に基づいて、QoS回路24内に送信ポート別かつクラス別に備えるキューの中から入力するキュー(複数の場合有り)を選択し、前記選択したキューに、フレーム長とハンドル番号と受信ポートの情報とを含むキュー蓄積ジョブ情報を入力する。また、QoS回路24は、各送信ポートについて、その送信ポートかつ何れかのクラスに対応するキューのうち1個のキューを選択する。QoS回路24は、選択したキューから1個のキュー蓄積ジョブ情報を取り出して、QoS出力ジョブ情報をバッファ回路に出力する。QoS出力ジョブ情報は、前記キューと前記ジョブ情報とに基づいて、フレーム長とハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報とを含む。
図7は、バッファ回路23の概略構成を示す構成図である。
同図において、バッファ回路23はバッファ用メモリ120とバッファ用メモリ制御回路220と収容判定回路320とクラス別蓄積量監視回路420と受信ポート別蓄積量監視回路520と送信ポート別蓄積量監視回路620とを含んで構成される。
バッファ回路23は、は、図2のスイッチ回路1のバッファ回路23と同様の処理を行う。以下では、図2のバッファ回路23との差異について説明する。
バッファ用メモリ制御回路220は、受信処理回路22からフレームを経路W23−1を通じて入力するとともに、前記入力フレームのフレームデータと、前記入力フレームのフレーム長・クラス・受信ポート・送信ポート(複数の場合有り)の情報を含む受信処理出力ジョブ情報とを、経路W23−1を通じて入力する。
バッファ用メモリ制御回路220は、前記入力フレームの受信処理出力ジョブ情報とQoS回路24から経路W23−3を通じて入力したQoS入力可否情報に基づいてバッファ用メモリ120への蓄積可否を判定する。蓄積可と判定した場合は、入力したフレームのフレームデータ量(フレーム長から算出した値でありフレームデータを蓄積単位容量Sで分割した場合の個数を示す)・クラス・受信ポート・送信ポート(複数の場合有り)を、収容判定回路320に経路W23−15を通じて出力する。収容判定回路320は、入力した情報に基づいて前記入力フレームのバッファ用メモリ120への収容有無を判定し、判定結果をバッファ用メモリ制御回路220に経路W23−16を通じて入力する。
収容判定回路320から入力する収容有無が収容有を示す場合は、バッファ用メモリ制御回路220は、入力フレームのフレームデータをバッファ用メモリ120に書き込む。ここで、バッファ用メモリ制御回路220は、バッファ用メモリ120を蓄積単位容量Sのバッファ区画で区画化し、各区画にバッファ区画番号を割り振り、バッファ区画番号別に空き有無を管理する。バッファ用メモリ制御回路220は、予め定められた蓄積単位容量Sを内部に記憶し、この蓄積単位容量Sを用いて上記の処理を行う。この蓄積単位量Sは、最大フレームデータ長よりも短い容量である。
入力フレームのフレームデータをバッファ用メモリ120に経路W23−4及び経路W23−5を通じて書き込む場合、バッファ用メモリ制御回路220は、フレームデータを蓄積単位容量Sずつに分割して1個以上の分割フレームデータとする。バッファ用メモリ制御回路220は、各分割フレームデータについてフレーム先頭側の分割フレームデータから順に、空き有のバッファ区画番号を取得するとともに前記バッファ区画番号の空き有を空き無に変更し、取得したバッファ区画番号が示す空きバッファ区画に分割フレームデータを書き込む。以上により、バッファ用メモリ制御回路220は、入力フレームのフレームデータをバッファ用メモリ120に蓄積するために必要なバッファ用メモリ120の空き領域を確保し、確保した空き領域にフレームデータを書き込む。
また、バッファ用メモリ制御回路220は、バッファ区画1個を確保する度に、バッファ用メモリ120の1区画を確保したことを示す空き容量増減信号を、クラス別蓄積量監視回路420と受信ポート別蓄積量監視回路520と送信ポート別蓄積量監視回路620と収容判定回路320とに出力する。ここで、バッファ用メモリ120の各区画のうち、空きバッファ区画の個数を空き容量といい、分割フレームデータが記憶されたバッファ区画の個数を蓄積量という。
なお、第1の実施形態のバッファ用メモリ制御200と同様、バッファ用メモリ制御回路220が空き容量増信号に代えて蓄積量減信号を出力し、空き容量減信号に変えて蓄積量増信号を出力するようにしてもよい。以下の実施形態および変形例でも同様である。
バッファ用メモリ制御回路220は、フレーム先頭を含む分割フレームデータを収容したバッファ区画番号をハンドル番号とし、前記ハンドル番号と前記入力フレームのフレーム長・クラス・受信ポート・送信ポート(複数の場合有り)とを含むQoS入力ジョブ情報を生成する。バッファ用メモリ制御回路220は、前記入力フレームの分割フレームデータ全てをバッファ用メモリ120に書き込み終えると、QoS入力ジョブ情報をQoS回路24に経路W23−2を通じて出力する。
後述するように、バッファ用メモリ制御回路220は、フレームデータ連結用メモリを備える。フレームデータ連結用メモリは、各バッファ区画番号に対する連結バッファ区画番号を保持する。バッファ用メモリ制御回路220は、フレーム先頭以外の分割フレームデータに対してバッファ区画番号を取得した場合、フレームデータ連結用メモリ中の直前に書き込んだ分割フレームデータが収容されているバッファ区画のバッファ区画番号に対する連結バッファ区画番号に、取得したバッファ区画番号を書き込む。これにより、連結バッファ区画番号とそこに保持される区画番号により、連続する分割フレームデータが保持されるバッファ用メモリ120上のアドレスが示される。
バッファ用メモリ制御回路220は、QoS回路24からQoS出力ジョブ情報が経路W23−9を通じて入力されると、バッファ用メモリ120から分割フレームデータを経路W23−6及び経路W23−7を通じて読み出す。QoS出力ジョブ情報には、フレーム長・ハンドル番号・クラス・受信ポート・送信ポート・解放有無の情報が含まれる。QoS出力ジョブ情報に含まれるハンドル番号は、読み出すべきフレームデータのうち、フレーム先頭が含まれる分割フレームデータが蓄積されたバッファ用メモリ120の領域を示す。バッファ用メモリ制御回路220は、このハンドル番号に基づいて、フレーム先頭が含まれる分割フレームデータをバッファ用メモリ120から読み出す。
さらに、読み出した分割フレームデータに後続する分割フレームデータが存在する場合(読み出すべきフレームデータが2個以上の分割フレームデータに分割されて収容されている場合)、バッファ用メモリ制御回路220は、次に読み出すべき分割フレームデータの連結バッファ区画番号をフレームデータ連結用メモリから取得し、この分割フレームデータをバッファ用メモリ120から読み出す。バッファ用メモリ制御回路220は、後続する分割フレームデータの読出しを、全ての分割フレームデータをバッファ用メモリ120から読み出し終えるまで(フレーム長に基づいて算出された回数で)繰り返す。バッファ用メモリ制御回路220は、読み出した分割フレームデータを連結して分割前のフレームデータに戻し、送信処理回路25に経路W23−8を通じて出力する。
また、前記QoS出力ジョブ情報に含まれる解放有無の情報が解放有を示す場合、バッファ用メモリ制御回路220は、バッファ用メモリ120から分割フレームデータを読み出す度に、前記の読み出したバッファ用メモリ120の領域を示すバッファ区画番号の空き有とすることで、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ120の1区画を解放したことを示す空き容量増減信号を、クラス別蓄積量監視回路420と受信ポート別蓄積量監視回路520と送信ポート別蓄積量監視回路620と収容判定回路320とに出力する。
クラス別蓄積量監視回路420は、バッファ用メモリ120に蓄積中のフレームのうち、同一クラスのフレームを収容中のバッファ区画数を計数し、クラス別蓄積量として収容判定回路320に経路W23−12を通じて出力する。クラス別蓄積量監視回路420はバッファ用メモリ制御回路220から、バッファ用メモリ120の空き容量のバッファ区画の確保または解放を示す空き容量増減信号を経路W23−11を通じて入力する。それとともに、クラス別蓄積量監視回路420はバッファ用メモリ制御回路220から、確保または解放されるバッファ区画に蓄積されるフレームのクラスを経路W23−10を通じて入力する。クラス別蓄積量監視回路420は、各クラスにおけるバッファ用メモリ120に蓄積中のフレームのうち同一クラスのフレームを収容中のバッファ区画数を、クラス別蓄積量として保持する。クラス別蓄積量監視回路420は、空き容量増減信号を入力すると、入力したクラスに関するクラス別蓄積量を前記空き容量増減信号に基づいて増加または減少させる。空き容量増減信号がバッファ用メモリ120の1区画を確保したことを示す場合は、入力したクラスに関するクラス別蓄積量を1増やす。また、空き容量増減信号がバッファ用メモリ120の1区画を解放したことを示す場合は、入力したクラスに関するクラス別蓄積量を1減らす。
受信ポート別蓄積量監視回路520は、バッファ用メモリ120に蓄積中のフレームのうち、同一受信ポートのフレームを収容中のバッファ区画数を計数し、受信ポート別蓄積量として収容判定回路320に経路W23−13を通じて出力する。受信ポート別蓄積量監視回路520はバッファ用メモリ制御回路220から、バッファ用メモリ120の空き容量のバッファ区画の確保または解放を示す空き容量増減信号を経路W23−11を通じて入力する。それとともに、クラス別蓄積量監視回路420はバッファ用メモリ制御回路220から、確保または解放されるバッファ区画に蓄積されるフレームの受信ポートを経路W23−10を通じて入力する。受信ポート別蓄積量監視回路520は、各受信ポートにおけるバッファ用メモリ120に蓄積中のフレームのうち同一受信ポートのフレームを収容中のバッファ区画数を、受信ポート別蓄積量として保持する。受信ポート別蓄積量監視回路520は、空き容量増減信号を入力すると、前記入力した受信ポートに関する受信ポート別蓄積量を空き容量増減信号に基づいて、クラス別蓄積量監視回路420の場合と同様に増加または減少させる。
送信ポート別蓄積量監視回路620は、バッファ用メモリ120に蓄積中のフレームのうち、同一送信ポートのフレームを収容中のバッファ区画数を計数し、送信ポート別蓄積量として収容判定回路320に経路W23−14を通じて出力する。送信ポート別蓄積量監視回路620はバッファ用メモリ制御回路220から、バッファ用メモリ120の空き容量のバッファ区画の確保または解放を示す空き容量増減信号を経路W23−11を通じて入力する。また、送信ポート別蓄積量監視回路620はバッファ用メモリ制御回路220から、確保または解放されるバッファ区画に蓄積されるフレームの送信ポート(複数の場合有り)を経路W23−10を通じて入力する。送信ポート別蓄積量監視回路620は、各送信ポートにおけるバッファ用メモリ120に蓄積中のフレームのうち同一送信ポートのフレームを収容中のバッファ区画数を、送信ポート別蓄積量として保持する。送信ポート別蓄積量監視回路620は、前記空き容量増減信号を入力すると、前記入力した送信ポートに関する送信ポート別蓄積量を空き容量増減信号に基づいて、クラス別蓄積量監視回路420の場合と同様に増加または減少させる。
収容判定回路320は、バッファ用メモリ制御回路220が受信処理回路22から入力したフレームのバッファ用メモリ120への収容可否を、以下の方法で判定する。
まず、収容判定回路320は、このフレームのフレームデータ量とクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とをバッファ用メモリ制御回路200から入力する。また、クラス別蓄積量監視回路420からクラス別蓄積量を入力し、受信ポート別蓄積量監視回路520から受信ポート別蓄積量を入力し、送信ポート別蓄積量監視回路620から送信ポート別蓄積量を入力する。
収容判定回路320は、クラス別蓄積量から、入力したクラスに関するクラス別蓄積量を読み出す。次に、収容判定回路320は、入力したクラスに関するクラス別蓄積量とクラス別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、クラス別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。
また、収容判定回路320は、受信ポート別蓄積量から、入力した受信ポートに関する受信ポート別蓄積量を読み出す。次に、収容判定回路320は、入力した受信ポートに関する受信ポート別蓄積量と受信ポート別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、受信ポート別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。
また、収容判定回路320は、送信ポート別蓄積量から、入力した送信ポートに関する送信ポート別蓄積量を読み出す。次に、収容判定回路320は、入力した送信ポートに関する送信ポート別蓄積量と送信ポート別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、送信ポート別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。入力した送信ポートが複数ある場合は、複数の送信ポートの何れか1個以上の送信ポートについて、蓄積量が蓄積量上限より少ない場合に、送信ポート別収容可否判定結果として収容可とし、前記以外の場合に収容不可とする。
図8は、バッファ用メモリ制御回路220の概略構成を示す構成図である。同図において、バッファ用メモリ制御回路220は、バッファ区画確保・書込制御回路221と先頭バッファ区画番号レジスタ222と旧バッファ区画番号レジスタ223と空きバッファ区画番号FIFO(First In, First Out)回路224とフレームデータ連結用メモリ225とバッファ区画読出・解放制御回路226と現バッファ区画番号レジスタ227とバッファ区画残数レジスタ228とを含んで構成される。
バッファ区画確保・書込制御回路221は、受信処理回路22から、入力フレームのフレームデータと、前記フレームのフレーム長とクラスと受信ポートと送信ポート(複数の場合有り)との情報を含む受信処理出力ジョブ情報とを経路W220−1を通じて入力する。バッファ区画保護・書込制御回路221は、受信処理回路22から入力した受信処理出力ジョブ情報とQoS回路24から経路W220−3を通じて入力したQoS入力可否情報とに基づいてバッファ用メモリへの蓄積可否を判定する。蓄積可と判定した場合は、収容判定回路320に、前記入力したフレームのフレームデータ量とクラスと受信ポートの情報と送信ポート(複数の場合有り)の情報とを経路W220−4を通じて出力する。収容判定回路320は、入力したこれらの情報に基づいて前記入力フレームのバッファ用メモリへの収容有無を判定し、判定結果をバッファ区画確保・書込制御回路221に経路W220−5を通じて出力する。
バッファ区画確保・書込制御回路221は、蓄積不可と判定した場合、または、入力したバッファ用メモリへの収容有無が収容無を示す場合は、前記フレームデータをバッファ用メモリに収容せず廃棄する。
バッファ区画確保・書込制御回路221は、入力フレームのバッファ用メモリ120への収容有無が収容有を示す場合は、入力フレームを分割してバッファ用メモリ120に書き込む。まず、バッファ区画確保・書込制御回路221は、入力フレームのフレームデータを蓄積単位容量Sずつに分割することによって1個以上の分割フレームデータを生成する。次に、バッファ区画確保・書込制御回路221は、各分割フレームデータについてフレーム先頭側の分割フレームデータから順に、空きバッファ区画番号FIFO回路224から空き有のバッファ区画番号を確保バッファ区画番号として経路W220−10を通じて取得する。バッファ区画確保・書込制御回路221は、確保バッファ区画番号が示す空きバッファ区画に分割フレームデータを経路W220−6及び経路W220−7を通じて書き込む。バッファ区画確保・書込制御回路221は、フレーム先頭以外の分割フレームデータに対して空き有のバッファ区画番号を取得した場合、旧バッファ区画番号レジスタ223から直前に書き込んだ分割フレームデータが収容されているバッファ区画のバッファ区画番号を読み出す。バッファ区画確保・書込制御回路221は、読み出したバッファ区画番号が示す、フレームデータ連結用メモリ225のアドレスに、取得したバッファ区画番号を経路W220−11及びW220−12を通じて書き込む。
図9は、フレームデータをバッファ用メモリ120に書き込んだときの状態を示す。
同図において、入力フレームのフレームデータが、先頭(第1)分割フレームデータAと第2分割フレームデータBと第3分割フレームデータCと最終(第4)分割フレームデータDとに分割されている。先頭分割フレームデータAはバッファ用メモリ120のアドレス4に書き込まれ、第2分割フレームデータBはアドレス2に書き込まれ、第3分割フレームデータCはアドレス7に書き込まれ、第4分割フレームデータDはアドレス5に書き込まれている。
フレームデータ連結用メモリ225は、先頭分割フレームデータAのアドレス4の欄に第2分割フレームデータBのアドレス2を記憶し、第2分割フレームデータBのアドレス2の欄に第3分割フレームデータCのアドレス7を記憶し、第3分割フレームデータCのアドレス7の欄に最終分割フレームデータDのアドレス5を記憶する。また、最終分割フレームデータDのアドレス5の欄には何も記憶しない。
バッファ用メモリ制御回路220は、先頭分割フレームデータAのアドレス4を取得しておき、このアドレスを元に、第2分割フレームデータ、第3分割フレームデータ、第4分割フレームデータのアドレスを順次取得する。
バッファ区画確保・書込制御回路221は、先頭バッファ区画番号レジスタ222から、フレーム先頭を含む分割フレームデータを収容したバッファ区画番号を読み出す。バッファ区画確保・書込制御回路221は、読み出したバッファ区画番号をハンドル番号とし、前記ハンドル番号と前記入力フレームのフレーム長とクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とを含むQoS入力ジョブ情報を生成する。バッファ区画確保・書込制御回路221は、入力フレームの分割フレームデータ全てをバッファ用メモリ120に書き込み終えると、QoS入力ジョブ情報をQoS回路24に経路W220−2を通じて出力する。
また、バッファ区画確保・書込制御回路221は、バッファ区画1個を確保する度に、バッファ用メモリ120の1区画を確保したことを示す空き容量増減信号を、クラス別蓄積量監視回路420と受信ポート別蓄積量監視回路520と送信ポート別蓄積量監視回路620と収容判定回路320とに経路W220−9を通じて出力する。さらに、バッファ区画確保・書込制御回路221は、クラス別蓄積量監視回路420と受信ポート別蓄積量監視回路520と送信ポート別蓄積量監視回路620に対しては、前記出力と同時に、バッファ用メモリ120に記憶された入力フレームの、クラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とを経路W220−8を通じて出力する。
図10は、バッファ区画確保・書込制御回路221が行う処理手順を示すフローチャートである。
ステップS41においてバッファ区画確保・書込制御回路221は、受信処理回路2232から入力フレーム等を入力したか否かを判断する。入力した場合(ステップS41:Y)は、ステップS42へ進み、入力していない場合(ステップS41:N)は、ステップS41へ戻る。
ステップS42において、バッファ区画確保・書込制御回路221は判定収容回路320から判定有無を入力する。
ステップS43において、バッファ区画確保・書込制御回路221は収容判定の結果が収容有かを判定する。収容有の場合(ステップS43:Y)は、ステップS45に進む。収容無の場合(ステップS43:N)は、ステップS44へ進む。
ステップS44において、バッファ区画確保・書込制御回路221は入力フレームを破棄する。その後、バッファ区画確保・書込制御回路221はステップS41へ戻る。
ステップS45において、バッファ区画確保・書込制御回路221は、空きバッファ区画番号FIFO回路224が保持する最初の確保バッファ区画番号を先頭バッファ区画番号レジスタ222に書き込む。
ステップS46において、バッファ区画確保・書込制御回路221は、空きバッファ区画番号FIFO回路224から確保バッファ区分番号を取得する。
ステップS47において、バッファ区画確保・書込制御回路221は、分割フレームデータを確保バッファ区分番号が示す確保バッファ区分に書き込む。
ステップS48において、バッファ区画確保・書込制御回路221は、書き込んだ分割データが先頭分割フレームデータか否かを判断する。先頭分割フレームデータである場合(ステップS48:Y)は、ステップS50へ進み、先頭分割フレームデータでない場合(ステップS48:N)は、ステップS49へ進む。
ステップS49において、バッファ区画確保・書込制御回路221は、旧バッファ区画番号レジスタ223から旧バッファ区画番号を読み出し、フレームデータ連結用メモリ225中の確保バッファ区画番号の区画に、旧バッファ区画番号を書き込む。
ステップS50において、バッファ区画確保・書込制御回路221は、書き込んだ分割データが最終分割フレームデータか否かを判断する。最終分割フレームデータである場合(ステップS50:Y)は、ステップS51へ進み、最終分割フレームデータでない場合(ステップS50:N)は、ステップS52へ進む。
ステップS51において、バッファ区画確保・書込制御回路221は、先頭バッファ区画番号レジスタ222から区画番号を読み出し、読み出した区画番号をハンドル番号として含むQoS入力ジョブ情報をQoS回路2424に出力する。その後、バッファ区画確保・書込制御回路221241は、ステップS41に戻る。
ステップS52において、バッファ区画確保・書込制御回路221は、旧バッファ区画番号レジスタ223に確保バッファ区画番号を書き込む。その後、バッファ区画確保・書込制御回路221241は、ステップS46へ戻り、次の分割フレームの処理を行う。
バッファ区画読出・解放制御回路226は、QoS回路24からQoS出力ジョブ情報を経路W220−18を通じて入力すると、QoS出力ジョブ情報からハンドル番号を読み出す。QoS出力ジョブ情報は、フレーム長とハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報と解放有無の情報とを含む。QoS出力ジョブ情報に含まれるハンドル番号は、読み出すべき送信フレームのフレームデータのうち、フレーム先頭が含まれる分割フレームデータが蓄積されたバッファ用メモリ120の領域を示す。
バッファ区画読出・解放制御回路226は、読み出したハンドル番号が示すバッファ用メモリ120のバッファ区画から分割フレームデータを経路W220−16及びW220−17を通じて読み出す。
さらに、前記分割フレームデータに後続する分割フレームデータが存在する場合(読み出すべきフレームデータが2個以上の分割フレームデータに分割されて収容されている場合)、バッファ区画読出・解放制御回路226は、現バッファ区画番号レジスタ227からバッファ区画番号を読み出し、読み出したバッファ区画番号を読出アドレスとして、フレームデータ連結用メモリ225から連結バッファ区画番号を経路S220−14及びW220−15を通じて読み出す。バッファ区画読出・解放制御回路226は、連結バッファ区画番号が示すバッファ区画に蓄積された分割フレームデータをバッファ用メモリ120から読み出す。バッファ区画読出・解放制御回路226は、この読み出しを、全ての分割フレームデータをバッファ用メモリ120から読み出し終えるまで(フレーム長に基づいて算出された回数で)繰り返す。
また、バッファ区画読出・解放制御回路226は、QoS出力ジョブ情報から解放有無を読み出す。解放有無の情報が解放有を示す場合、バッファ用メモリ120から分割フレームデータを読み出す度に、前記の読み出したバッファ用メモリ120の領域を示すバッファ区画番号を空きバッファ区画番号FIFO回路224に経路W220―13を通じて返却し、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ120の1区画を解放したことを示す空き容量増減信号を、クラス別蓄積量監視回路420と受信ポート別蓄積量監視回路520と送信ポート別蓄積量監視回路620と収容判定回路320とに経路W220−20を通じて出力する。クラス別蓄積量監視回路420と受信ポート別蓄積量監視回路520と送信ポート別蓄積量監視回路620に対しては、上記の出力とともに、バッファ用メモリ120の解放により廃棄されるフレームのクラス・受信ポート・送信ポート(複数の場合有り)を経路W220−21を通じて出力する。
図11は、バッファ区画読出・解放制御回路226が行う処理手順を示すフローチャートである。
ステップS61において、バッファ区画読出・解放制御回路226は、QoS回路24からQoS出力ジョブ情報を入力したか否かを判断する。入力した場合(ステップS61:Y)は、ステップS62へ進み、入力していない場合(ステップS61:N)は、ステップS61へ戻る。
ステップS62において、バッファ区画読出・解放制御回路226は、QoS出力ジョブ情報からハンドル番号を読出し、現バッファ区画番号レジスタ227に書き込む。
ステップS63において、バッファ区画読出・解放制御回路226は、現バッファ区画番号レジスタ227から現バッファ区画番号を読み出し、バッファ用メモリ120中の現バッファ区画番号が示す区画から分割フレームデータを読出し、送信処理回路25へ出力する。
ステップS64において、バッファ区画読出・解放制御回路226は、QoS出力ジョブ情報から解放有無の情報を読み出し、解放有か解放無かを判断する。解放有の場合(ステップS64:Y)は、ステップS65に進み、解放無の場合(ステップS64:N)は、ステップS66に進む。
ステップS65において、バッファ区画読出・解放制御回路226は、バッファ用メモリ120中の分割フレームデータを読み出した領域を示すバッファ区画番号を、空きバッファ区画番号FIFO回路224に返却し、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ120の1区画を解放したことを示す空き容量増減信号を、クラス別蓄積量監視回路420・受信ポート別蓄積量監視回路520・送信ポート別蓄積量監視回路620・収容判定回路320に出力する。クラス別蓄積量監視回路420・受信ポート別蓄積量監視回路520・送信ポート別蓄積量監視回路620に対しては、前記出力と同時に、バッファ用メモリ120の解放により廃棄されるフレームのクラス・受信ポート・送信ポート(複数の場合有り)を出力する。
ステップS66において、バッファ区画読出・解放制御回路226は、バッファ区画残数が1か否かを判断する。残数が1の場合(ステップS66:Y)は、ステップS67へ進み、1でない場合(ステップS66:N)は、ステップS68へ進む。
ステップS67において、バッファ区画読出・解放制御回路226は、QoS出力ジョブ情報から送信ポートの情報を読み出す。出力ジョブ情報から送信ポートの情報を読み出す。バッファ区画読出・解放制御回路226は、送信ポートの情報を含む送信処理入力ジョブ情報を生成し、送信処理回路25に出力する。その後、バッファ区画読出・解放制御回路226はステップS61に戻る。
ステップS68において、バッファ区画読出・解放制御回路226は、現バッファ区画番号レジスタ227から現バッファ区画番号を読み出す。バッファ区画読出・解放制御回路226は、読み出した現バッファ区画番号に基づいてフレームデータ連結用メモリ225から区画番号を読み出す。
ステップS69において、バッファ区画読出・解放制御回路226は、フレームデータ連結用メモリ225から読み出した区画番号を現バッファ区画番号レジスタ227に書き込む。また、バッファ区画読出・解放制御回路226は、バッファ区画残数レジスタ228が保持するバッファ区画残数を1減少させる。その後、バッファ区画読出・解放制御回路226は、ステップS63に戻る。
図12は、収容判定回路320の概略構成を示す構成図である。同図において、収容判定回路320は、空き容量監視回路321とクラス_i蓄積量上限生成回路(i=1〜Nc;Ncはクラス数)322−1〜Ncと受信ポート_i(i=1〜Np;Npはポート数)325−1〜Npと送信ポート_i蓄積量上限生成回路(i=1〜Np;Npはポート数;送信ポート数と受信ポート数が同数であるスイッチ回路の場合)328−1〜Ncとクラス_i蓄積量判定回路(i=1〜Nc)323−1〜Ncと受信ポート_i蓄積量判定回路(i=1〜Np)326−1〜Ncと送信ポート_i蓄積量判定回路(i=1〜Np)329−1〜Npと選択回路324、327と複数選択回路330と論理積回路311とを含んで構成される。
前記収容判定回路320は、図3の収容判定回路300と同様の処理を行う。以下では、図3の収容判定回路320との差異について説明する。
空き容量監視回路321は、現時点でのバッファ用メモリ120の空き容量情報(現時点での空きバッファ区画数)を保持し、入力フレームの収容可否(収容可能な場合に1)と前記入力フレーム収容時の空き容量情報(入力フレーム収容後の空きバッファ区画数)を出力する。空き容量監視回路321は、空き容量増減信号を経路W320−1を通じて入力すると、空き容量情報を増加または減少させる。空き容量増減信号がバッファ用メモリ120の1区画を確保したことを示す場合は、空き容量情報を1減らす。また、前記空き容量増減信号がバッファ用メモリ120の1区画を解放したことを示す場合は、前記現空き容量を1増やす。空き容量監視回路321は、入力フレームのフレームデータ量を経路W320−2を通じて入力すると、前記空き容量と前記フレームデータ量との比較を行う。比較の結果、現空き容量の方が大きい場合に収容可(1)を示す入力フレームの収容可否を経路320−3を通じて出力し、前記以外の場合に収容不可(0)を示す入力フレームの収容可否を経路320−3を通じて出力する。さらに、空き容量監視回路321は、入力フレームのフレームデータ量を入力すると、入力したフレームデータ量を空き容量から減じた値を、入力フレーム収容時の空き容量情報として経路W320−4を通じて出力する。
クラス_i蓄積量判定回路(i=1〜Nc)323−1〜Ncは、入力フレームのフレームデータ量と、クラス_iに関するクラス別蓄積量上限とクラス別蓄積量を入力し、前記蓄積量上限と、前記蓄積量に前記フレームデータ量を加えた値とを比較する。クラス_i蓄積量判定結果として、前記蓄積量上限の方が小さい場合は1を出力し、前記以外の場合は0を出力する。クラス_i蓄積量判定回路(i=1〜Nc)323−1〜Ncは、クラス別蓄積量を経路320−5を通じて入力を受ける。
受信ポート_i蓄積量判定回路(i=1〜Np)326−1〜Npは、入力フレームのフレームデータ量と、受信ポート_iに関する受信ポート別蓄積量上限と受信ポート別蓄積量を入力し、前記蓄積量上限と、前記蓄積量に前記フレームデータ量を加えた値とを比較する。受信ポート_i蓄積量判定結果として、前記蓄積量上限の方が小さい場合は1を出力し、前記以外の場合は0を出力する。受信ポート_i蓄積量判定回路(i=1〜Np)326−1〜Npは、受信ポート別蓄積量を経路320−7を通じて入力を受ける。
送信ポート_i蓄積量判定回路(i=1〜Np)329−1〜Npは、入力フレームのフレームデータ量と、送信ポート_iに関する送信ポート別蓄積量上限と送信ポート別蓄積量を入力し、前記蓄積量上限と、前記蓄積量に前記フレームデータ量を加えた値とを比較する。送信ポート_i蓄積量判定結果として、前記蓄積量上限の方が小さい場合は1を経路W320−11を通じて出力し、前記以外の場合は0を経路W320−11を通じて出力する。送信ポート_i蓄積量判定回路(i=1〜Np)329−1〜Npは、受信ポート別蓄積量を経路320−9を通じて入力を受ける。
なお、上記各判定回路において、全てのクラス・受信ポート・送信ポートに関して、フレームデータ量と蓄積量の加算を行っているが、入力フレームのクラス・受信ポート・送信ポートに関してのみ加算を行う構成であってもよい。
図13は、図8のバッファ用メモリ制御回路220の動作を説明する図であり、フレームデータ連結用メモリ225とバッファ用メモリ120との状態の変化を示す。
同図において、まず、分割フレームデータ1−A、1−B、1−C、1−Dを入力すると、バッファ区画確保・書込制御回路221は空きバッファ区画番号FIFO回路224から空きバッファ区画番号2と7と5と4とを取得して、バッファ用メモリ120に分割フレームデータを書込み、フレームデータ連結用メモリ225を更新する。また、バッファ区画確保・書込制御回路221は、先頭分割フレームデータ1−Aのアドレス2をハンドル番号として含むQoS入力ジョブ情報をQoS回路24に出力する。
次に、分割フレームデータ2−Aを入力すると、バッファ区画確保・書込制御回路221は空きバッファ区画番号FIFO回路224から空きバッファ区画番号6を取得して、バッファ用メモリ120に分割フレームデータを書込み、フレームデータ連結用メモリ225を更新する。また、バッファ区画確保・書込制御回路221は、先頭分割フレームデータ2−Aのアドレス6をハンドル番号として含むQoS入力ジョブ情報をQoS回路24に出力する。
次に、分割フレームデータ3−A、3−B、3−Cを入力すると、バッファ区画確保・書込制御回路221は空きバッファ区画番号FIFO回路224から空きバッファ区画番号3と1と0と4とを取得して、上記と同様の処理を行う。
以上のように、本実施形態のバッファ回路23は、予め定められた蓄積単位容量Sをもつバッファ区画でバッファ用メモリ120を区画し、各フレームを蓄積単位容量Sの長さの分割フレームに分割し、空きバッファ区画を探して分割フレームを蓄積する。1フレーム当たりの未使用量がS未満となりバッファ用メモリ120の利用効率が向上するため、バッファ用メモリ120に要する回路の規模を削減することができる。
<第3の実施形態>
図14は、本発明の第3の実施形態によるスイッチ回路3の概略構成を示す構成図である。同図において、スイッチ回路3は、受信ポート毎の受信MAC回路31−1〜Npと受信処理回路32とバッファ回路33とQoS回路34と送信処理回路35と送信ポート毎の送信MAC回路36−1〜Npとを含んで構成される。
スイッチ回路3は、図6のスイッチ回路2と同様の処理を行う。以下では、図6のスイッチ回路2との差異について説明する。
受信処理回路32は、経路W3−1を通じて入力した受信フレームのフレームデータを、受信ポート別に蓄積する受信バッファ回路を備える。受信バッファ回路は、受信ポート毎に少なくともフレームデータを蓄積単位容量S分蓄積可能な容量を有する。なお、前記容量は、蓄積単位容量S分のフレームデータを蓄積した後に、前記蓄積データをバッファ回路に渡すまでの間に蓄積される可能性のあるフレームデータを蓄積する。受信処理回路32は、受信ポート毎に設けられた受信バッファ回路から、少なくとも蓄積単位容量Sのデータが蓄積された受信バッファ回路を選択し、前記選択した受信バッファ回路に蓄積された蓄積単位容量S分のフレームデータを分割フレームデータとしてバッファ回路33に経路W3−2を通じて出力する、受信フレームデータ選択回路を備える。
したがって、受信処理回路32は、1個のフレームの分割フレームデータを先頭側から順に続けて出力するとは限らず、同時に複数の受信ポートでフレームを受信しているような場合は、ある受信ポートで受信したフレームの分割フレームデータを出力した直後に、別の受信ポートで受信した別のフレームの分割フレームデータを出力する可能性がある。
バッファ回路33は、前記入力フレームの分割フレームデータを入力し、前記バッファ回路33内のバッファ用メモリに蓄積する。また、バッファ回路33は、前記分割フレームデータに基づいて前記入力フレームのフレーム長を取得し、前記フレーム長を含むQoS入力ジョブ情報をQoS回路34に経路W3−3を通じて出力する。
上記構成により、図6のスイッチ回路2で必要であった、少なくとも最大フレーム長のフレームデータを1フレーム分蓄積可能な受信処理回路内の受信バッファ回路は不要となり、回路規模の削減が可能となる。
図15は、バッファ回路33内の、バッファ用メモリ制御回路240の概略構成を示す構成図である。
同図において、バッファ用メモリ制御回路240は、バッファ区画確保・書込制御回路241と先頭バッファ区画番号レジスタ242−1〜Npと旧バッファ区画番号レジスタ243−1〜Npと入力途中破棄ジョブ情報FIFO回路244と空きバッファ区画番号FIFO回路245とフレームデータ連結用メモリ246とバッファ区画読出・解放制御回路247と現バッファ区画番号レジスタ248とバッファ区画残数レジスタ249とを含んで構成される。
バッファ用メモリ制御回路240は、図8のバッファ用メモリ制御回路200と同様の処理を行う。以下では、図8のバッファ用メモリ制御回路240との差異について説明する。
バッファ回路33は、受信ポート別の先頭バッファ区画番号レジスタ242−1〜Np、受信ポート別の旧バッファ区画番号レジスタ243−1〜Np、入力途中廃棄ジョブ情報FIFO回路244を備える。
バッファ区画確保・書込制御回路241は、受信処理回路32から、入力フレームのフレームデータが分割された1個以上の分割フレームデータと、前記フレームのクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とを含む受信処理出力ジョブ情報とを経路W240−1を通じて入力し、前記入力フレームの受信処理出力ジョブ情報とQoS回路34から経路W240−3を通じて入力したQoS入力可否情報に基づいてバッファ用メモリ140への蓄積可否を判定する。
蓄積可と判定した場合は、バッファ区画確保・書込制御回路241は、入力された分割フレームデータ毎に、入力したフレームのクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とを収容判定回路340に経路W240−4を通じて出力する。収容判定回路340は入力した情報に基づいて、分割フレームデータのバッファ用メモリ140への収容有無を判定し、判定結果をバッファ区画確保・書込制御回路241に経路W240−5を通じて出力する。
収容判定回路340が蓄積不可と判定した場合は、前記入力フレームの分割フレームデータ全てをバッファ用メモリ140に収容せず廃棄する。
バッファ区画確保・書込制御回路241は、前記分割フレームデータに対するバッファ用メモリ140への収容有無が収容有を示す場合、空きバッファ区画番号FIFO回路245から空き有のバッファ区画番号を確保バッファ区画番号として経路W240−11を通じて取得し、前記確保バッファ区画番号が示す空きバッファ区画に前記分割フレームデータを経路W240−6及び経路W240−7を通じて書き込む。
バッファ区画確保・書込制御回路241は、入力フレームの先頭を含まない分割フレームデータを入力すると、前記分割フレームデータを収容するために空き有のバッファ区画番号を取得する。バッファ区画確保・書込制御回路241は、前記入力フレームの受信ポートに対応する旧バッファ区画番号レジスタ243−1〜Npから、直前に書き込んだ分割フレームデータが収容されているバッファ区画のバッファ区画番号を読み出す。バッファ区画確保・書込制御回路241は、読み出したバッファ区画番号をフレームデータ連結用メモリ246に出力する書込アドレスとし、前記取得したバッファ区画番号をフレームデータ連結用メモリ246に経路W240−12及びW240−13を通じて書き込む。
バッファ区画確保・書込制御回路241は、前記入力フレームの受信ポートに対応する先頭バッファ区画番号レジスタ242−1〜Npから、フレーム先頭を含む分割フレームデータを収容したバッファ区画番号を読み出す。バッファ区画確保・書込制御回路241は、読み出したバッファ区画番号をハンドル番号とし、前記ハンドル番号と前記入力フレームのフレーム長とクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とを含むQoS入力ジョブ情報を生成する。バッファ区画確保・書込制御回路241は、入力フレームの分割フレームデータ全てをバッファ用メモリ140に書き込み終えると(前記入力フレームの最後を含む分割フレームデータを書き込み終えると)、前記QoS入力ジョブ情報をQoS回路34に経路W240−2を通じて出力する。
バッファ区画確保・書込制御回路241は、前記入力フレームの分割フレームデータに対するバッファ用メモリ140への収容有無が収容無を示す場合、前記入力フレームについて以後に入力される分割フレームデータをバッファ用メモリ140に収容せず廃棄する。また、前記入力フレームの分割フレームデータのうち既にバッファ用メモリ140に収容済みの分割フレームデータが蓄積されたバッファ区画を解放するため、前記入力フレームの分割フレームデータが先頭を含まない場合に、前記入力フレームに対応する旧バッファ区画番号レジスタ243−1〜Npの値を最終バッファ区画番号とし、前記最終バッファ区画番号と前記入力フレームのハンドル番号とクラスの情報と受信ポートの情報と送信ポート(複数の場合有り)の情報とを含む入力途中廃棄ジョブ情報を生成し、入力途中廃棄ジョブ情報FIFO回路244に経路W240−10を通じて出力する。
図16は、バッファ区画確保・書込制御回路241が行う処理手順を示すフローチャートである。
ステップS81において、バッファ区画確保・書込制御回路241は、受信処理回路32から入力フレームの分割フレームデータ等を入力したか否かを判断する。入力した場合(ステップS81:Y)は、ステップS82へ進む、入力していない場合(ステップS81:N)は、ステップS81へ戻る。
ステップS82において、バッファ区画確保・書込制御回路241は、収容判定回路340から収容有無を入力する。
ステップS83において、バッファ区画確保・書込制御回路241は収容判定の結果が収容有かを判定する。収容有の場合(ステップS83:Y)は、ステップS84へ進む。収容無の場合(ステップS83:N)は、ステップS90へ進む。
ステップS84において、バッファ区画確保・書込制御回路241は、空きバッファ区画番号FIFO回路245から確保バッファ区分番号を取得する。
ステップS85において、バッファ区画確保・書込制御回路241は、バッファ用メモリ140中の確保バッファ区分番号が示す区画に分割フレームデータを書き込む。
ステップS86において、バッファ区画確保・書込制御回路241は、書き込んだ分割フレームデータが先頭分割フレームデータか否かを判断する。先頭分割フレームデータの場合(ステップS86:Y)は、ステップS87へ進み、先頭分割フレームデータでない場合(ステップS86:N)は、ステップS93へ進む。
ステップS87において、バッファ区画確保・書込制御回路241は、入力フレームの受信ポートに対応する先頭バッファ区画番号レジスタ242−1〜Npに確保バッファ区画番号を書き込む。
ステップS88において、バッファ区画確保・書込制御回路241は、書き込んだ分割フレームデータが最終分割フレームデータか否かを判断する。最終フレームデータである場合(ステップS88:Y)は、ステップS94へ進み、最終フレームデータでない場合(ステップS88:N)は、ステップS89へ進む。
ステップS89において、バッファ区画確保・書込制御回路241は、入力フレームの受信ポートに対応する旧バッファ区画番号レジスタ243−1〜Npに確保バッファ区画番号を書き込む。その後、バッファ区画確保・書込制御回路241は、ステップS81に戻る。
ステップS90において、バッファ区画確保・書込制御回路241は入力フレームを廃棄する。
ステップS91において、バッファ区画確保・書込制御回路241は、廃棄した分割フレームデータが先頭フレームデータか否かを判断する。先頭フレームデータの場合(ステップS91:Y)ステップS81に戻る。先頭フレームデータで無い場合(ステップS91:N)ステップS92へ進む。
ステップS92において、バッファ区画確保・書込制御回路241は、入力フレームに対応する旧バッファ区画番号レジスタ243−1〜Npの値を最終バッファ区画番号とし、前記最終バッファ区画番号と前記入力フレームのハンドル番号・クラス・受信ポート・送信ポート(複数の場合有り)を含む入力途中廃棄ジョブ情報を生成し、入力途中廃棄ジョブ情報FIFO回路244に出力する。
ステップS93において、バッファ区画確保・書込制御回路241は、入力フレームに対応する旧バッファ区画番号レジスタ243−1〜Npから旧バッファ区画番号を読み出し、フレームデータ連結用メモリ246の確保バッファ区画番号のアドレスに旧バッファ区画番号を書き込む。その後、バッファ区画確保・書込制御回路241は、ステップS88へ進む。
ステップS94において、バッファ区画確保・書込制御回路241は、入力フレームの受信ポートに対応する先頭バッファ区画番号レジスタ242−1〜Npから、フレーム先頭を含む分割フレームデータを収容したバッファ区画番号を読み出す。バッファ区画確保・書込制御回路241は、読み出したバッファ区画番号をハンドル番号とし、ハンドル番号と入力フレームのフレーム長・クラス・受信ポート・送信ポート(複数の場合有り)とを含むQoS入力ジョブ情報を生成する。バッファ区画確保・書込制御回路241は、生成したQoS入力ジョブ情報をQoS回路34に出力する。その後、バッファ区画確保・書込制御回路241は、ステップS81に戻る。
バッファ区画読出・解放制御回路247は、QoS回路34からフレーム長とハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報と解放有無の情報とを含むQoS出力ジョブ情報を経路W240−20を通じて入力すると、出力ジョブ情報からハンドル番号を読み出す。ハンドル番号が示すバッファ区画には、フレーム先頭が含まれる分割フレームデータが蓄積されている。バッファ区画読出・解放制御回路247は、このフレームの全ての分割フレームデータをバッファ用メモリ140から経路W240−18及びW240−19を通じて読み出す。
バッファ区画読出・解放制御回路247は、前記処理を行っていない場合で、かつ、入力途中廃棄ジョブ情報FIFO回路244が1個以上の入力途中廃棄ジョブ情報を蓄積している場合に、入力途中廃棄ジョブ情報FIFO回路244から1個の入力途中廃棄ジョブ情報を経路W240−14を通じて入力すると、この入力途中廃棄ジョブ情報からハンドル番号と最終バッファ区画番号とを読み出す。バッファ区画読出・解放制御回路247は、読み出したハンドル番号と最終バッファ区画番号とに基づいて、入力途中に廃棄となったフレームについて、バッファ用メモリ140に収容済みの分割フレームデータが蓄積されているバッファ区画を解放する。
また、バッファ区画読出・解放制御回路247は、バッファ区画解放に合わせて、空き容量増減信号を、クラス別蓄積量監視回路440と受信ポート別蓄積量監視回路540と送信ポート別蓄積量監視回路640と収容判定回路340に経路w240−22を通じて出力する。クラス別蓄積量監視回路440と受信ポート別蓄積量監視回路540と送信ポート別蓄積量監視回路640に対しては、前記出力と同時に、バッファ用メモリ140の解放により廃棄されるフレームのクラス・受信ポート・送信ポート(複数の場合有り)を経路W240−23を通じて出力する。
図17は、バッファ区画読出・解放制御回路247が行う処理手順を示すフローチャートである。
ステップS101において、バッファ区画読出・解放制御回路247は、QoS回路34からQoS出力ジョブ情報を入力したか否かを判断する。入力した場合(ステップS101:Y)は、ステップS108へ進み、入力していない場合(ステップS101:N)は、ステップS102へ戻る。
ステップS102において、バッファ区画読出・解放制御回路247は、入力途中廃棄ジョブ情報FIFO回路244245が入力途中廃棄ジョブ情報を蓄積しているか否かを判断する。蓄積している場合(ステップS102:Y)は、ステップS103へ進み、蓄積していない場合(ステップS102:N)は、ステップS101へ戻る。
ステップS103において、バッファ区画読出・解放制御回路247は、入力途中廃棄ジョブ情報FIFO回路244245から1個の入力途中廃棄ジョブ情報を入力し、入力途中廃棄ジョブ情報からハンドル番号を読み出す。バッファ区画読出・解放制御回路247は、読み出したハンドル番号を現バッファ区画番号レジスタ248に書き込む。
ステップS104において、バッファ区画読出・解放制御回路247は、現バッファ区画番号を空きバッファ区画番号FIFO回路245に経路W240−15を通じて返却することにより解放する。前記のバッファ区画解放に合わせて、空き容量増減信号を、クラス別蓄積量監視回路440・受信ポート別蓄積量監視回路540・送信ポート別蓄積量監視回路640・収容判定回路340に出力する。クラス別蓄積量監視回路440・受信ポート別蓄積量監視回路540・送信ポート別蓄積量監視回路640に対しては、前記出力と同時に、バッファ用メモリ140の解放により廃棄されるフレームのクラス・受信ポート・送信ポート(複数の場合有り)を出力する。
ステップS105において、バッファ区画読出・解放制御回路247は、入力途中廃棄ジョブ情報から最終バッファ区画番号を読み出し、返却した現バッファ区画番号が最終バッファ区画番号か否かを判断する。最終バッファ区画番号である場合(ステップS105:Y)は、ステップS101に戻り、最終バッファ区画番号でない場合(ステップS105:N)は、ステップS106に進む。
ステップS106において、バッファ区画読出・解放制御回路247は、フレームデータ連結用メモリ246の現バッファ区画番号のアドレスから区画番号を読み出す。
ステップS107において、バッファ区画読出・解放制御回路247は、フレームデータ連結用メモリ246から経路W240−16及びW240−17を通じて読み出した区画番号を、現バッファ区画番号レジスタ248に書き込む。その後、バッファ区画読出・解放制御回路247は、ステップS101に戻る。
ステップS108において、バッファ区画読出・解放制御回路247は、QoS出力ジョブ情報からハンドル番号とフレーム長とを読み出す。バッファ区画読出・解放制御回路247は、読み出したハンドル番号を現バッファ区画番号レジスタ248に書き込む。また、バッファ区画読出・解放制御回路247は、読み出したフレーム長からバッファ区画残数を算出し、バッファ区画残数レジスタ249に出力する。
ステップS109において、バッファ区画読出・解放制御回路247は、現バッファ区画番号レジスタ247から現バッファ区画番号を読み出し、バッファ用メモリ140中の現バッファ区画番号が示す区画から分割フレームデータを読出し、送信処理回路35へ経路W240−21を通じて出力する。
ステップS110において、バッファ区画読出・解放制御回路247は、QoS出力ジョブ情報から解放有無の情報を読み出し、解放有か解放無かを判断する。解放有の場合(ステップS110:Y)は、ステップS111に進み、解放無の場合(ステップS110:N)は、ステップS112に進む。
ステップS111において、バッファ区画読出・解放制御回路247は、バッファ用メモリ140120中の分割フレームデータを読み出した領域を示すバッファ区画番号を、空きバッファ区画番号FIFO回路245224に返却し、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ140の1区画を解放したことを示す空き容量増減信号を、クラス別蓄積量監視回路440・受信ポート別蓄積量監視回路540・送信ポート別蓄積量監視回路640・収容判定回路340に出力する。クラス別蓄積量監視回路440・受信ポート別蓄積量監視回路540・送信ポート別蓄積量監視回路640に対しては、前記出力と同時に、バッファ用メモリ140の解放により廃棄されるフレームのクラス・受信ポート・送信ポート(複数の場合有り)を出力する。
ステップS112において、バッファ区画読出・解放制御回路247は、バッファ区画残数が1か否かを判断する。残数が1の場合(ステップS112:Y)は、ステップS113へ進み、1でない場合(ステップS112:N)は、ステップS114へ進む。
ステップS113において、バッファ区画読出・解放制御回路247は、QoS出力ジョブ情報から送信ポートの情報を読み出す。出力ジョブ情報から送信ポートの情報を読み出す。バッファ区画読出・解放制御回路247は、送信ポートの情報を含む送信処理入力ジョブ情報を生成し、送信処理回路35に出力する。その後、バッファ区画読出・解放制御回路247は、ステップ101に戻る。
ステップS114において、バッファ区画読出・解放制御回路247は、現バッファ区画番号レジスタ248から現バッファ区画番号を読み出す。バッファ区画読出・解放制御回路247は、読み出した現バッファ区画番号に基づいてフレームデータ連絡用メモリ246から区画番号を読み出す。
ステップS115において、バッファ区画読出・解放制御回路247は、フレームデータ連結用メモリ246から読み出した区画番号を現バッファ区画番号レジスタ248に書き込む。また、バッファ区画読出・解放制御回路247は、バッファ区画残数レジスタ249が保持するバッファ区画残数を1減少させる。その後、バッファ区画読出・解放制御回路247は、ステップ109に戻る。
図18は、図15のバッファ制御回路の動作を説明する図であり、フレームデータ連結用メモリ246とバッファ用メモリ140との状態の変化を示す。
同図において、受信処理回路32は受信ポート_1にて受信したフレームを分割し、分割フレームデータ1−A、1−B、1−C、1−Dをバッファ回路33に出力する。また、受信処理回路32は受信ポート_2にて受信したフレームを分割フレームデータ2−Aとしてバッファ回路33に出力する。また、受信処理回路32は受信ポート_3にて受信したフレームを分割し、分割フレームデータ3−A、3−B、3−Cをバッファ回路33に出力する。受信処理回路32は、図に示す順番で上記の分割フレームデータを送信する。
バッファ区画確保・書込制御回路241は、分割フレームデータ1−Aを入力すると、収容判定にて収容有を判定した後、空きバッファ区画番号FIFO回路245からアドレス2を取得する。バッファ区画確保・書込制御回路241は、バッファ用メモリ140中の取得したアドレス2の区画に分割フレームデータ1−Aを書き込む。バッファ区画確保・書込制御回路241は、分割フレームデータ1−Aが先頭分割フレームデータであると判断して、受信ポート1に対応する先頭バッファ区画番号レジスタ242−1〜Npと旧バッファ区画番号レジスタ243−1〜Npとに読み出したアドレス2を書き込む。
つぎに、バッファ区画確保・書込制御回路241は、分割フレームデータ1−Bを入力すると、収容判定にて収容有を判定した後、空きバッファ区画番号FIFO回路245からアドレス7を取得する。バッファ区画確保・書込制御回路241は、分割フレームデータ1−Bをバッファ用メモリ140のアドレス7の区画に書き込む。また、フレームデータ連結用メモリ246の旧バッファ区画番号2のアドレスに、取得したアドレス7を書き込む。さらに、バッファ区画確保・書込制御回路241は、受信ポート1に対応する旧バッファ区画番号レジスタ243−1〜Npに取得したアドレス7を書き込む。
つぎに、バッファ区画確保・書込制御回路241は、分割フレームデータ2−Aを入力すると、収容判定にて収容有を判定した後、空きバッファ区画番号FIFO回路245からアドレス5を取得する。バッファ区画確保・書込制御回路241は、バッファ用メモリ140中の取得したアドレス5の区画に分割フレームデータ2−Aを書き込む。バッファ区画確保・書込制御回路241は、分割フレームデータ2−Aが先頭分割フレームデータであると判断して、受信ポート2に対応する先頭バッファ区画番号レジスタ242−1〜Npと旧バッファ区画番号レジスタ243−1〜Npとに読み出したアドレス5を書き込む。
つぎに、バッファ区画確保・書込制御回路241は、分割フレームデータ1−Cを入力すると、収容判定にて収容有を判定した後、空きバッファ区画番号FIFO回路245からアドレス4を取得する。バッファ区画確保・書込制御回路241は、分割フレームデータ1−Cをバッファ用メモリ140のアドレス4の区画に書き込む。また、フレームデータ連結用メモリ246の旧バッファ区画番号7のアドレスに、取得したアドレス4を書き込む。さらに、バッファ区画確保・書込制御回路241は、受信ポート1に対応する旧バッファ区画番号レジスタ243−1〜Npに取得したアドレス4を書き込む。
以下同様に、バッファ区画確保・書込制御回路241は入力する分割フレームデータを処理する。
このように、入力ポート毎に先頭バッファ区画番号と旧バッファ区画番号とを保持して、バッファ回路33は、複数のポートで受信したフレームの分割フレームデータが交互に入力された場合にも、適切な接続関係をフレームデータ連結用メモリ246に書き込む。
以上のように、本実施形態のスイッチ回路は、異なる入力ポートからの分割フレームデータが交互に入力される場合にも、適切な接続関係をフレームデータ連結用メモに保持する。これにより、実施形態2のスイッチ回路で必要であった、少なくとも最大フレーム長のフレームデータを1フレーム分蓄積可能な受信処理回路32内の受信バッファ回路33は不要となり、回路規模の削減が可能となる。
<第1の変形例>
図19は、バッファ用メモリ制御回路240の一変形例であるバッファ用メモリ制御回路260の概略構成を示す構成図である。
同図において、バッファ用メモリ制御回路260は、バッファ区画確保・書込制御回路261と先頭バッファ区画番号レジスタ262−1〜Npと旧バッファ区画番号レジスタ263−1〜Npと入力途中破棄ジョブ情報FIFO回路264と空きバッファ区画番号FIFO回路265とフレームデータ連結用メモリ266とバッファ区画読出・解放制御回路267と現バッファ区画番号レジスタ268−1〜Npとバッファ区画残数レジスタ269−1〜Npとを含んで構成される。
バッファ用メモリ制御回路260は、バッファ用メモリ制御回路240と同様の処理を行う。以下では、バッファ用メモリ制御回路240との差異について説明する。
バッファ区画読出・解放制御回路267は、QoS回路34からフレーム長とハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報と解放有無の情報とを含むQoS出力ジョブ情報を経路W260−19を通じて入力すると、入力した出力ジョブ情報からハンドル番号読み出す。このハンドル番号は、読み出すべき送信フレームのフレームデータのうちフレーム先頭が含まれる分割フレームデータが蓄積されたバッファ用メモリ140の領域を示す。バッファ区画読出・解放制御回路267は、読み出したハンドル番号が示すバッファ区画番号に基づいて、バッファ用メモリ140から前記分割フレームデータを経路W260−17及びW260−18を通じて読み出す。
さらに、前記分割フレームデータに後続する分割フレームデータが存在する場合(読み出すべきフレームデータが2個以上の分割フレームデータに分割されて収容されている場合)、バッファ区画読出・解放制御回路267は、前記送信フレームの送信ポートに対応する現バッファ区画番号レジスタ268−1〜Npから、直前に読み出した分割フレームデータを収容していたバッファ区画のバッファ区画番号を読み出す。バッファ区画読出・解放制御回路267は、読み出したバッファ区画番号を読出アドレスとして、フレームデータ連結用メモリ266から連結バッファ区画番号を取得し、前記連結バッファ区画番号が示すバッファ区画に蓄積された分割フレームデータを読み出す。バッファ区画読出・解放制御回路267は、この読み出しを、全ての分割フレームデータをバッファ用メモリ140から読み出し終えるまで(フレーム長に基づいて算出された回数で)繰り返す。その際、バッファ区画残数レジスタ269−1〜Npを用いて、残り分割フレーム数を計数する。
ただし、バッファ区画読出・解放制御回路267が、上記処理中にQoS回路34から別の送信ポートから出力される送信フレームのQoS出力ジョブ情報を入力したときは、前記処理と並行して、前記処理と同じ処理を、その送信フレームについても実施する。すなわち、同一送信フレームの分割フレームデータを連続して読み出さないで、ある送信ポートへ送信する送信フレームの分割フレームデータを読み出した後は異なる送信ポートへ送信する送信フレームの分割フレームデータを読み出す、というように、分割フレームデータ1個を読み出す度に送信ポートを切り替える。
図15のバッファ用メモリ制御回路240では、1個の送信フレームのフレームデータをバッファ用メモリ140から読み出し終えるまで、他の送信ポートから出力される送信フレームをバッファ用メモリ140から読み出すことができなかったため、QoS回路34が生成した送信タイミングから実際のフレーム送信までに不確定な遅延が生じ、QoSの精度が劣化していた。図19のバッファ区画読出・解放制御回路267では、前記遅延が小さくなるため、QoSの精度が向上する。
<第2の変形例>
図20は、収容判定回路320の一変形例である収容判定回路380の概略構成を示す構成図である。
収容判定回路380は、収容判定回路320と同様の処理を行う。以下では、収容判定回路320との差異について説明する。
空き容量監視回路381は、現時点でのバッファ用メモリ120の空き容量情報(空きバッファ区画数)を保持し、入力フレームの収容可否(収容可能な場合に1)と空き容量情報(入力フレーム収容後の空きバッファ区画数)とを経路W380−2及びW380−3を通じて出力する。空き容量監視回路381は、空き容量増減信号を経路W380−1を通じて入力したとき、空き容量情報を増加または減少させた後の空き容量情報と併せて前記空き容量増減信号を出力する。空き容量監視回路381は、空き容量情報の値が所定の値以上である場合は、収容可(1)を示す入力フレームの収容可否を出力し、前記以外の場合は収容不可(0)を示す入力フレームの収容可否を出力する。
クラス_i蓄積量上限生成回路(i=1〜Nc)382−1〜Ncは、空き容量監視回路381から空き容量情報と空き容量増減信号を入力し、クラス_iに関するクラス別蓄積量上限を生成・出力する。また、クラス_i蓄積量上限生成回路(i=1〜Nc)382−1〜Ncは、現時点でのクラス_i蓄積量上限を保持し、空き容量監視回路381から空き容量情報と空き容量増減信号を入力したとき、前記クラス_i蓄積量上限の保持値と入力した空き容量情報と空き容量増減信号とに基づいて、前記クラス_i蓄積量上限の保持値を更新する。
受信ポート_i蓄積量上限生成回路(i=1〜Np)385−1〜Npは、空き容量監視回路381から空き容量情報と空き容量増減信号を入力し、受信ポート_iに関する受信ポート別蓄積量上限を生成・出力する。また、受信ポート_i蓄積量上限生成回路(i=1〜Nc)385−1〜Npは、現時点での受信ポート_i蓄積量上限を保持し、空き容量監視回路381から空き容量情報と空き容量増減信号を入力すると、前記受信ポート_i蓄積量上限の保持値と入力した空き容量情報と空き容量増減信号とに基づいて、前記受信ポート_i蓄積量上限の保持値を更新する。
送信ポート_i蓄積量上限生成回路(i=1〜Np)388−1〜Npは、空き容量監視回路381から空き容量情報と空き容量増減信号を入力し、送信ポート_iに関する送信ポート別蓄積量上限を生成・出力する。また、送信ポート_i蓄積量上限生成回路(i=1〜Np) 388−1〜Npは、現時点での送信ポート_i蓄積量上限を保持し、空き容量監視回路381から空き容量情報と空き容量増減信号を入力したとき、前記送信ポート_i蓄積量上限の保持値と入力した空き容量情報と空き容量増減信号とに基づいて、前記送信ポート_i蓄積量上限の保持値を更新する。
図21は、各蓄積量上限生成回路の動作を説明するフローチャートの例と、前記フローチャートによって生成される蓄積量上限との関係を示す図である。このフローチャートでは、空き容量が所定の範囲にある場合に、空き容量の所定量の増加によって蓄積量上限の所定量の増加を行う。
ステップS121において、蓄積量上限生成回路は、空き容量増減信号を入力したか否かを判断する。入力した場合(ステップS121:Y)は、ステップS122に進み、入力していない場合(ステップS121:N)は、ステップS121に戻る。
ステップS122において、蓄積量上限生成回路は、式(2)に従って空き容量分割数Ndと空き容量分割単位量Nsとを算出する。
Figure 0005191059
ステップS123において、蓄積量上限生成回路は、空き容量分割数Ndが外部から設定するパラメタNd_2以上か否かを判断する。NdがNd_2以上の場合(ステップS123:Y)は、ステップS124に進み、NdがNd_2未満の場合(ステップS123:N)は、ステップS125に進む。ステップS124において、蓄積量上限生成回路は、蓄積量上限Lを外部から設定するパラメタLmaxに設定する。
ステップS125において、蓄積量上限生成回路は、空き容量分割数Ndが外部から設定するパラメタNd_1未満か否かを判断する。NdがNd_1未満の場合(ステップS125:Y)は、Lの値を保持してステップS132に進む。NdがNd_1以上の場合(ステップS125:N)は、ステップS127に進む。ステップS127において、蓄積量上限生成回路は、蓄積量上限Lを外部から設定するパラメタLmaxに設定する。
ステップS126において、蓄積量上限生成回路は、空き容量分割残数Nr=0かつ空き容量が増加したか否かを判断する。Nr=0かつ空き容量が増加した場合(ステップS126:Y)は、ステップS127に進み、Nr=0でないまたは空き容量が増加していない場合(ステップS126:N)は、ステップS128に進む。ステップS127において、蓄積量上限生成回路は、蓄積量上限Lに外部から設定するパラメタLsを加算する。その後、蓄積量上限生成回路はステップS130に進む。
ステップS128において、蓄積量上限生成回路は、空き容量分割残数Nr=0かつ空き容量が減少したか否かを判断する。Nr=0かつ空き容量が減少した場合(ステップS128:Y)は、ステップS129に進み、Nr=0でないまたは空き容量が減少していない場合(ステップS128:N)は、ステップS130に進む。ステップS129において、蓄積量上限生成回路は、蓄積量上限Lから外部から設定するパラメタLsを減算する。
ステップS130において、蓄積量上限生成回路は蓄積量上限Lを収容判定回路に出力する。その後、蓄積量上限生成回路はステップS121に戻る。
なお、前記フローチャートでは、空き容量分割数Ndおよび空き容量分割残数Nrの算出を行っているが、前記蓄積量上限生成回路で使用される各値を2進数として扱い、かつ、空き容量分割単位量Vsを2, 4, 8, 16, ...等の2のべき乗のみに限定するようにしてもよい。これにより、前記算出を簡易化することができる。
クラス_i蓄積量判定回路(i=1〜Nc)383−1〜Ncは、クラス_iに関するクラス別蓄積量上限とクラス別蓄積量を入力し、前記蓄積量上限と前記蓄積量とを比較する。比較の結果、蓄積量上限>蓄積量である場合は、クラス_i蓄積量判定結果として1を出力し、それ以外の場合は0を出力する。クラス_i蓄積量判定回路(i=1〜Nc)383−1〜Ncは、クラス別蓄積量を経路W380−4を通じて入力を受ける。
受信ポート_i蓄積量判定回路(i=1〜Np)3861〜Npは、受信ポート_iに関する受信ポート別蓄積量上限と受信ポート別蓄積量を入力し、前記蓄積量上限と前記蓄積量とを比較する。比較の結果、蓄積量上限>蓄積量である場合は、受信ポート_i蓄積量判定結果として1を出力し、それ以外の場合は0を出力する。受信ポート_i蓄積量判定回路(i=1〜Np)3861〜Npは、受信ポート別蓄積量を経路W380−6を通じて入力を受ける。
送信ポート_i蓄積量判定回路(i=1〜Np)389−1〜Npは、送信ポート_iに関する送信ポート別蓄積量上限と送信ポート別蓄積量を入力し、前記蓄積量上限と前記蓄積量とを比較する。比較の結果、蓄積量上限>蓄積量である場合は、送信ポート_i蓄積量判定結果として1を出力し、それ以外の場合は0を出力する。送信ポート_i蓄積量判定回路(i=1〜Np)389−1〜Npは、送信ポート別蓄積量を経路W380−8を通じて入力を受ける。
以上のように、本実施形態の蓄積量上限生成回路は、空き容量増信号が入力されると蓄積量上限を増加させ、空き容量減信号が入力されると蓄積量上限を減少させる。これにより、空き容量の増減を反映した蓄積量上限を生成することができる。
<第4の実施形態>
図22は、本発明を適用したバッファ回路43を内蔵するスイッチ回路4の構成を示す。前記スイッチ回路4は、本発明を適用したバッファ回路43を用いて実現したレイヤ2転送の機能と、レイヤ3(L3)転送の機能を併せ持つ。
本スイッチ回路4の、受信MAC回路41−1〜Np・送信MAC回路45−1〜Np・受信処理回路42・バッファ回路43は、図6のスイッチ回路2と同一であるが、L3転送用受信処理回路52・L3転送用送信処理回路55・L3転送用バッファ回路53が追加されている点が異なる。また、送信処理回路45は、図6のスイッチ回路2における送信処理回路25と同じく、バッファ回路43からの入力と送信MAC回路46−1〜Npへの出力をもつが、前記のほかに、L3転送用送信処理回路55からの入力とL3転送用受信処理回路52への出力が追加されている点が異なる。
これにより、家庭用のルータに本スイッチ回路を適用することで、家庭内ネットワーク(図のLAN受信/送信ポートが接続するネットワーク)のためのイーサネット(登録商標)フレームの転送と、インターネットサービスプロバイダとアクセス回線を介してIPパケットを転送する機能を、1個の回路で実現することが可能となる。
本発明のバッファ回路43はQoS回路44と分離しているため、本発明のバッファ回路43を適用することで、レイヤ2転送用スイッチ回路とレイヤ3転送用スイッチ回路に分離した構成と比較して、QoS回路44を共通化できるため、回路規模の削減が可能となる。
また、家庭内ネットワーク向けに複数のポートが必要となり、これらのポート間のレイヤ2転送において、ポート数に比例して扱うデータ帯域が大きくなるため、バッファ用メモリの帯域を大きくする必要があるが、レイヤ2転送用に本発明のバッファ回路43を用いることでバッファ用メモリの利用効率を向上させることができるため、メモリの帯域は大きくすることが可能だが容量に制約のあるSRAMをバッファ用メモリとして採用することが可能となる。
また、L3転送用バッファ回路53は、主に、WAN受信/送信ポートとLAN送信/受信ポート間でL3転送されるIPパケットが蓄積されるため、前記L3転送用バッファ回路53のバッファ用メモリの帯域は比較的小さい一方で、ネットワーク帯域の変動が大きいWAN側との通信のためバッファ用メモリの容量は大きくする必要があり、前記L3転送用バッファ回路53のバッファ用メモリとしてDDR−SRAM等を採用することが望ましい。本発明のバッファ回路43はQoS回路42と独立してバッファ管理が可能であるため、前記DDR−SRAMをバッファ用メモリとするL3転送用バッファ回路53と併用することが可能である。
なお、図1〜図3と図6〜図8と図12と図14と図15と図19と図20と図22とに示す各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
本発明は、バッファ回路及びバッファ回路制御方法に用いて好適である。
1、2、3、4 スイッチ回路
13、23、33、43 バッファ回路
100、120、140、160 バッファ用メモリ
200、220、240、260 バッファ用メモリ制御回路
300、320、340、360 収容判定回路
400、420、440、460 クラス別蓄積量監視回路
500、520、540、560 受信ポート別蓄積量監視回路
600、620、640、660 送信ポート別蓄積量監視回路

Claims (8)

  1. フレームデータを記憶するバッファ用メモリ手段と
    レームデータのクラス及びフレームデータを受信した受信ポート及びフレームデータを送信する送信ポートの3つの属性であるフレームデータの属性毎に前記バッファ用メモリ手段に記憶されたフレームデータ数を示す属性値別蓄積量を出力する属性値別蓄積量監視手段と、
    前記属性毎に前記属性値別蓄積量の上限量を、前記バッファ用メモリ手段の空き容量に基づいて算出し、フレームデータの属性を示す属性値が入力されると、前記属性値別蓄積量と前記上限量とを前記属性毎に比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に収容可能か否かを示す収容可否判定結果を判定し、前記3つの属性毎の収容可否判定結果のすべてが可であるか否かに応じて、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを判定し、蓄積する場合は収容有を示す情報を出力する収容判定手段と、
    外部からフレームデータが入力された場合に、前記収容判定手段から収容有の情報が入力されたときは、前記フレームデータを前記バッファ用メモリ手段に書き込むバッファ用メモリ制御手段と、
    を具備することを特徴とするバッファ回路。
  2. 前記バッファ用メモリ制御手段は、外部からフレームデータと当該フレームデータの属性値とが入力され、前記入力されたフレームデータを前記バッファ用メモリ手段に書き込む場合は、空き容量減信号または蓄積量増信号と、前記入力された属性値と、を出力し、外部からフレームデータ読み出し指示と読み出すフレームデータの属性値とが入力され、前記フレームデータを読み出した場合は、空き容量増信号または蓄積量減信号と、前記入力された属性値とを出力し、
    前記属性値別蓄積量監視手段は、前記属性値別蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、
    前記収容判定手段は、前記空き容量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号が入力されると、前記空き容量を減少させ、前記空き容量増信号または前記蓄積量減信号が入力されると前記空き容量を増加させ、前記空き容量に基づいて前記上限量を算出する
    ことを特徴とする請求項1記載のバッファ回路。
  3. 前記バッファ用メモリ制御手段は、外部から入力されるフレームデータを所定の蓄積単位容量ずつに分割した分割フレームデータを前記バッファ用メモリ手段に書き込むとともに、各分割フレームデータを書き込んだ前記バッファ用メモリ手段の内部の記憶領域を示す連結区画番号を内部のフレームデータ連結用メモリに書き込み、外部から前記フレームデータ出力指示が入力されると前記連結区画番号に基づいて前記分割フレームデータを結合して前記フレームデータを生成し、該フレームデータを出力する
    ことを特徴とする請求項1または請求項2記載のバッファ回路。
  4. 前記属性値別蓄積量監視手段は、前記属性値別蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、
    前記収容判定手段は、前記空き容量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号又は前記蓄積量増信号が入力されると前記空き容量を減少させ、前記空き容量増信号又は前記蓄積量減信号が入力されると前記空き容量を増加させ、前記空き容量に基づいて前記上限値を算出する
    ことを特徴とする請求項3記載のバッファ回路。
  5. バッファ回路が、フレームデータのクラス及びフレームデータを受信した受信ポート及びフレームデータを送信する送信ポートのうちの3つの属性であるフレームデータの属性毎に前記バッファ回路が具備するバッファ用メモリ手段に記憶されたフレームデータ数を示す属性値別蓄積量を出力する属性値別蓄積量監視ステップと、
    バッファ回路が、前記属性値別蓄積量の上限量を、前記バッファ用メモリ手段の空き容量に基づいて算出し、前記属性毎にフレームデータの属性を示す属性値が入力されると、前記属性値別蓄積量と前記上限量とを前記属性毎に比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に収容可能か否かを示す収容可否判定結果を判定し、前記3つの属性毎の前記収容可否判定結果のすべてが可であるか否かに応じて、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定し、蓄積する場合は収容有を示す情報を出力する収容判定ステップと、
    外部からフレームデータが入力された場合に、前記収容判定ステップの出力情報のうち、収容有の出力情報が入力されたときは、前記フレームデータを前記バッファ用メモリ手段に書き込むバッファ用メモリ制御ステップと、
    を具備することを特徴とするバッファ回路制御方法。
  6. 前記バッファ用メモリ制御ステップは、外部からフレームデータと当該フレームデータの属性値とが入力され、前記入力されたフレームデータを前記バッファ用メモリ手段に書き込む場合は、空き容量減信号または蓄積量増信号と、前記入力された属性値と、を出力し、外部からフレームデータ読み出し指示と読み出すフレームデータの属性値とが入力され、前記フレームデータを読み出した場合は、空き容量増信号または蓄積量減信号と、前記入力された属性値とを出力し、
    前記属性値別蓄積量監視ステップは、前記属性値別蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、
    前記収容判定ステップは、前記空き容量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号が入力されると、前記空き容量を減少させ、前記空き容量増信号または前記蓄積量減信号が入力されると前記空き容量を増加させ、前記空き容量に基づいて前記上限量を算出する
    ことを特徴とする請求項5記載のバッファ回路制御方法。
  7. 前記バッファ用メモリ制御ステップは、外部から入力されるフレームデータを所定の蓄積単位容量ずつに分割した分割フレームデータを前記バッファ用メモリ手段に書き込むとともに、各分割フレームデータを書き込んだ前記バッファ用メモリ手段の内部の記憶領域を示す連結区画番号を内部のフレームデータ連結用メモリに書き込み、外部から前記フレームデータ出力指示が入力されると前記連結区画番号に基づいて前記分割フレームデータを結合して前記フレームデータを生成し、該フレームデータを出力する
    ことを特徴とする請求項5または請求項6記載のバッファ回路制御方法。
  8. 前記属性値別蓄積量監視ステップは、前記属性値別蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、
    前記収容判定ステップは、前記空き容量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号又は前記蓄積量増信号が入力されると前記空き容量を減少させ、前記空き容量増信号又は前記蓄積量減信号が入力されると前記空き容量を増加させ、前記空き容量に基づいて前記上限値を算出する
    ことを特徴とする請求項7記載のバッファ回路制御方法。
JP2009149094A 2009-06-23 2009-06-23 バッファ回路及びバッファ回路制御方法 Active JP5191059B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009149094A JP5191059B2 (ja) 2009-06-23 2009-06-23 バッファ回路及びバッファ回路制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009149094A JP5191059B2 (ja) 2009-06-23 2009-06-23 バッファ回路及びバッファ回路制御方法

Publications (2)

Publication Number Publication Date
JP2011009876A JP2011009876A (ja) 2011-01-13
JP5191059B2 true JP5191059B2 (ja) 2013-04-24

Family

ID=43566055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009149094A Active JP5191059B2 (ja) 2009-06-23 2009-06-23 バッファ回路及びバッファ回路制御方法

Country Status (1)

Country Link
JP (1) JP5191059B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5706811B2 (ja) * 2011-12-13 2015-04-22 日本電信電話株式会社 親ノード及び通信システム
JP5748287B2 (ja) * 2011-12-27 2015-07-15 日本電信電話株式会社 パケットバッファ装置およびパケットバッファ制御方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63209347A (ja) * 1987-02-26 1988-08-30 Oki Electric Ind Co Ltd デ−タ交換網のバツフア割当方式
US5541912A (en) * 1994-10-04 1996-07-30 At&T Corp. Dynamic queue length thresholds in a shared memory ATM switch
JPH1168784A (ja) * 1997-08-27 1999-03-09 Mitsubishi Electric Corp セルスイッチ
US6700869B1 (en) * 1999-10-01 2004-03-02 Lucent Technologies Inc. Method for controlling data flow associated with a communications node
JP2002044115A (ja) * 2000-07-31 2002-02-08 Nec Eng Ltd スイッチングハブのメモリ制御方式
JP4256599B2 (ja) * 2001-05-28 2009-04-22 日本放送協会 パケット転送制御装置
JP2005323231A (ja) * 2004-05-11 2005-11-17 Nippon Telegr & Teleph Corp <Ntt> パケット通信品質制御装置
JP2006135762A (ja) * 2004-11-08 2006-05-25 Fujitsu Ltd パケット伝送制御装置及びパケット伝送制御方法
JP4360439B2 (ja) * 2007-03-27 2009-11-11 株式会社デンソー メモリ管理装置及びメモリ管理方法
JP2008278241A (ja) * 2007-04-27 2008-11-13 Fujitsu Ltd 伝送装置、伝送装置制御方法、および伝送装置制御プログラム

Also Published As

Publication number Publication date
JP2011009876A (ja) 2011-01-13

Similar Documents

Publication Publication Date Title
US10341260B2 (en) Early queueing network device
US7558197B1 (en) Dequeuing and congestion control systems and methods
CN1689278B (zh) 网络拥塞控制方法和装置
US10218642B2 (en) Switch arbitration based on distinct-flow counts
EP2613479B1 (en) Relay device
US8520522B1 (en) Transmit-buffer management for priority-based flow control
US9596182B2 (en) Controlling non-congestion controlled flows
EP1741229B1 (en) Weighted random scheduling
US7826468B2 (en) System and method for bypassing an output queue structure of a switch
US20110044175A1 (en) Low cost implementation for a device utilizing look ahead congestion management
US20120063313A1 (en) Hybrid weighted round robin (wrr) traffic scheduling
US8392672B1 (en) Identifying unallocated memory segments
JP4771988B2 (ja) 負荷分散装置及びネットワーク装置
KR100645537B1 (ko) 안정적인 패킷 포워딩을 위한 동적인 큐 관리방법 및 이를위한 네트워크 프로세서의 구성요소
US20160036689A1 (en) Method and apparatus for reducing response time in information-centric networks
JP7241194B2 (ja) メモリ管理方法及び装置
US10594631B1 (en) Methods and apparatus for memory resource management in a network device
US11171884B2 (en) Efficient memory utilization and egress queue fairness
JP5191059B2 (ja) バッファ回路及びバッファ回路制御方法
US20140022895A1 (en) Reducing Store And Forward Delay In Distributed Systems
JP2008017387A (ja) ロードバランス型スイッチ装置、及びロードバランス型スイッチ方法
US8660001B2 (en) Method and apparatus for providing per-subscriber-aware-flow QoS
US9922000B2 (en) Packet buffer with dynamic bypass
US9998403B2 (en) Most connection method for egress port selection in a high port count switch
JP2007535192A (ja) サービス品質及びサービスタイプに基づいて電気通信システムにおけるリソースを動的に管理するための方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110525

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110920

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111013

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20111222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130128

R150 Certificate of patent or registration of utility model

Ref document number: 5191059

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160208

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250