JPWO2004066570A1 - ネットワークスイッチ装置およびネットワークスイッチ方法 - Google Patents
ネットワークスイッチ装置およびネットワークスイッチ方法 Download PDFInfo
- Publication number
- JPWO2004066570A1 JPWO2004066570A1 JP2004567109A JP2004567109A JPWO2004066570A1 JP WO2004066570 A1 JPWO2004066570 A1 JP WO2004066570A1 JP 2004567109 A JP2004567109 A JP 2004567109A JP 2004567109 A JP2004567109 A JP 2004567109A JP WO2004066570 A1 JPWO2004066570 A1 JP WO2004066570A1
- Authority
- JP
- Japan
- Prior art keywords
- packet
- pointer
- buffer
- packets
- registered
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 36
- 239000000872 buffer Substances 0.000 claims abstract description 291
- 230000005540 biological transmission Effects 0.000 claims abstract description 285
- 238000012546 transfer Methods 0.000 claims description 61
- 238000001514 detection method Methods 0.000 claims 2
- 230000015654 memory Effects 0.000 description 44
- 238000012544 monitoring process Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 239000002957 persistent organic pollutant Substances 0.000 description 3
- 239000012141 concentrate Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
パケットの優先制御が可能であり、かつ、受信パケットを格納するバッファの使用効率が高められ、部品コストが低減されたネットワークスイッチ装置を提供する。受信パケット(10)は、バッファ制御回路(3)の制御の下で、その宛先のネットワークに対応するバッファに格納される。また、優先度判定回路(2)は、受信パケット(10)の優先度クラスを判定する。バッファ制御回路(3)は、各バッファ(1−1)〜(n)において、複数の優先度クラスのパケットを登録可能な送信キュー(4−1)〜(n)を形成する。そして、受信パケット(10)をバッファに書き込む際に、優先度判定回路(2)の判定に基づいて、対応する送信キュー内に登録された同じ優先度クラスのパケットのうち、最後に登録されたパケットの次に受信パケット(10)が送信予約されるように制御する。
Description
本発明は、複数のネットワーク間でパケットの転送を行うネットワークスイッチ装置およびネットワークスイッチ方法に関し、特に、パケットの優先度に応じた転送制御を行うことが可能な、ストア&フォワード方式のネットワークスイッチ装置およびネットワークスイッチ方法に関する。
インターネット等のように多数のネットワークが互いに接続されている場合、それらの接続にはネットワークスイッチ装置が用いられることが多い。中でも、受信したパケットを内部のバッファに一旦蓄積した後、目的の送信ポートに転送するスイッチ方式はストア&フォワード方式と言われ、このようなスイッチ方式を採用したネットワークスイッチ装置が広く使用されている。
ストア&フォワード型のネットワークスイッチ装置では、送信予定のパケットは、宛先ポートごとにポインタで連結した連結リスト構造のキューとして制御されることが一般的である。連結リスト構造を用いてバッファメモリ内に形成されたキューを制御する従来のパケットスイッチとしては、例えば以下のようなものがあった。
このパケットスイッチは、各入力回線から受信した可変長パケットを、固定長のデータブロック単位で共通バッファメモリに書き込む。この書き込み時に、バッファ制御部が入力回線別の入力キューを形成し、可変長パケットの最終データブロックが入力キューに登録された時、この入力キューのリンクド・アドレスリストを転送先出力回線と対応した出力キューにリンクする。
各入力キューは、共通バッファメモリへの書き込みの際に、次の固定長データブロックの書込みアドレスを次アドレスメモリに記憶することにより形成される。また、各出力キューは、次に読み出すべきデータブロックを示す次読出しアドレスと、最後のデータブロックを示す最終読出しアドレスとを記憶するアドレステーブルからなり、バッファ制御部の入力キュー制御部が、各可変長パケットの先頭データブロックの書き込みアドレスと、最終データブロックの書き込みアドレスとを、それぞれ転送先出力回線と対応するアドレステーブルの次読出しアドレスおよび最終読出しアドレスに移すことによって、出力キューへの入力キューリンクを完了する。さらに、先行する可変長パケットの最終読出しアドレスがすでに登録された状態である場合には、次アドレスメモリから後続可変長パケットの先頭データブロックの書込みアドレスを抽出して、このアドレスを最終読出しアドレスにリンクさせる。このような制御により、バッファメモリの使用効率を高めるとともに、スイッチング動作を高速化している。例えば、特開2002−152247号公報(段落番号〔0025〕〜〔0040〕、第3図)参照。
ところで、ネットワークを介して通信される情報には、データ品質を一定以上に確保すべき情報と、データ品質の劣化を許容できる情報とがある。そこで、例えば、これらの情報の優先度を多段階にクラス分けした優先度クラスを定義し、通信される各パケットの属性(送信元アドレス等)に応じて優先度クラスを与えることが考えられる。この場合、ネットワークスイッチ装置において、優先度クラスの高いパケットを優先的に転送することにより、優先度の高いパケットのデータ転送の確実性を向上させることができる。
ストア&フォワード方式のネットワークスイッチ装置では、通常、受信パケットの宛先を判定した後、宛先別(出力ポートごと)に形成されたパケットのキューに受信パケットを連結し、これらのキューからパケットを読み出して送出する。ここで、受信パケットにそれぞれ異なる優先度が付与されており、それらの受信パケットに対して優先制御を行う場合は、出力ポートごとに優先度クラス数分のキューを作成し、優先度クラス別に振り分けられた受信パケットを、該当する優先度クラスのキューに連結する。そして、優先度クラスの高いキューから先にパケットを送出することにより、優先制御を実現する。
優先度の高い情報としては、例えば音声データや動画像データが代表的である。このようなリアルタイム性が重要視される情報の通信をサポートするためには、これらの情報のネットワークスイッチ装置における中継遅延時間をできるだけ短縮する必要がある。しかし、優先制御が行われるネットワークスイッチ装置でも、例えば同じ出力ポートの同じ優先度クラス宛のトラフィックが集中する等の事態が発生すると、優先度の高いパケットであっても廃棄されてしまうことがあり得る。
優先度の高いパケットの中継遅延時間を短縮可能にした従来のパケットスイッチとして、以下のようなものがあった。このパケットスイッチは、入力回線から受信した可変長パケットを各入力回線インタフェースで固定長のセルに変換し、スイッチ部においてセル単位でスイッチングし、このスイッチ部からの出力セルを各出力回線インタフェースで元の可変長パケットに変換して出力回線に送出するように構成されている。そして、各入力回線インタフェースが、受信した可変長パケットから変換された固定長のセルを出力回線ごとに優先度別にキューイングし、各キューの蓄積セルを優先度に応じて選択的に出力するための制御手段を備えたことを特徴としている。
このパケットスイッチにおいて、特定の出力ポートに向かう複数のパケットが複数の入力回線から時間的に重なって入力され、スイッチ部内で上記の特定出力ポートに向かうセルの蓄積量が所定のしきい値を超えた場合には、各入力回線インタフェースに対して輻輳状態通知が与えられる。そして、上記の特定出力ポートに向かうセルを送出中の入力回線インタフェースが、この輻輳状態通知に応答して、セル優先度の低いものから選択的にセル送出を抑制する。これによって、輻輳状態が深刻化することが回避され、優先度の高いパケットが大幅に遅延することなく出力回線側に転送される。例えば、特開2000−151633号公報(段落番号〔0012〕〜〔0018〕、第1図)参照。
ところで、ストア&フォワード方式のネットワークスイッチ装置において、宛先別に形成されたパケットのキューは、通常、それぞれ物理的または論理的に分離された有限な大きさのバッファに格納されている。また、優先制御が行われるネットワークスイッチでは、さらに、優先度クラスごとにキューが形成されることが多い。このようなネットワークスイッチ装置において、ある出力ポートに対して特定の優先度クラス宛のトラフィックが集中した場合、同じ出力ポートの別の優先度クラスのキューでは空き容量があるにもかかわらず、トラフィックが集中したキューでは輻輳が発生してしまうことがある。このような事態を避けるためには、例えば、各優先度クラスのキューに対して十分なバッファ容量を確保する必要がある。しかし、この場合にはメモリの使用効率が低下するとともに、メモリ容量が増大して部品コストが高くなることが問題であった。
上記の特開2000−151633号公報で開示されたパケットスイッチでは、スイッチ部内のバッファメモリと、出力回線インタフェース内の出力バッファメモリにおいて、それぞれ優先度クラスごとにキューを形成することができる。このとき、各バッファメモリにおいて、優先度クラス別の各キューが他のキューと空きエリアを共用する共通バッファ構造を採用することにより、メモリ容量を有効に利用できる。しかし、このためには、スイッチ部および出力回線インタフェースの双方において、出力回線別および優先度クラス別の連結リストを管理してバッファ制御を行う必要があり、処理が複雑になって高コストとなることが問題となる。また、このパケットスイッチは、受信パケットを固定長のセルに変換して取り扱うことが前提とされており、受信パケットをそのままの状態で取り扱う装置に対しては適用できない。
ストア&フォワード型のネットワークスイッチ装置では、送信予定のパケットは、宛先ポートごとにポインタで連結した連結リスト構造のキューとして制御されることが一般的である。連結リスト構造を用いてバッファメモリ内に形成されたキューを制御する従来のパケットスイッチとしては、例えば以下のようなものがあった。
このパケットスイッチは、各入力回線から受信した可変長パケットを、固定長のデータブロック単位で共通バッファメモリに書き込む。この書き込み時に、バッファ制御部が入力回線別の入力キューを形成し、可変長パケットの最終データブロックが入力キューに登録された時、この入力キューのリンクド・アドレスリストを転送先出力回線と対応した出力キューにリンクする。
各入力キューは、共通バッファメモリへの書き込みの際に、次の固定長データブロックの書込みアドレスを次アドレスメモリに記憶することにより形成される。また、各出力キューは、次に読み出すべきデータブロックを示す次読出しアドレスと、最後のデータブロックを示す最終読出しアドレスとを記憶するアドレステーブルからなり、バッファ制御部の入力キュー制御部が、各可変長パケットの先頭データブロックの書き込みアドレスと、最終データブロックの書き込みアドレスとを、それぞれ転送先出力回線と対応するアドレステーブルの次読出しアドレスおよび最終読出しアドレスに移すことによって、出力キューへの入力キューリンクを完了する。さらに、先行する可変長パケットの最終読出しアドレスがすでに登録された状態である場合には、次アドレスメモリから後続可変長パケットの先頭データブロックの書込みアドレスを抽出して、このアドレスを最終読出しアドレスにリンクさせる。このような制御により、バッファメモリの使用効率を高めるとともに、スイッチング動作を高速化している。例えば、特開2002−152247号公報(段落番号〔0025〕〜〔0040〕、第3図)参照。
ところで、ネットワークを介して通信される情報には、データ品質を一定以上に確保すべき情報と、データ品質の劣化を許容できる情報とがある。そこで、例えば、これらの情報の優先度を多段階にクラス分けした優先度クラスを定義し、通信される各パケットの属性(送信元アドレス等)に応じて優先度クラスを与えることが考えられる。この場合、ネットワークスイッチ装置において、優先度クラスの高いパケットを優先的に転送することにより、優先度の高いパケットのデータ転送の確実性を向上させることができる。
ストア&フォワード方式のネットワークスイッチ装置では、通常、受信パケットの宛先を判定した後、宛先別(出力ポートごと)に形成されたパケットのキューに受信パケットを連結し、これらのキューからパケットを読み出して送出する。ここで、受信パケットにそれぞれ異なる優先度が付与されており、それらの受信パケットに対して優先制御を行う場合は、出力ポートごとに優先度クラス数分のキューを作成し、優先度クラス別に振り分けられた受信パケットを、該当する優先度クラスのキューに連結する。そして、優先度クラスの高いキューから先にパケットを送出することにより、優先制御を実現する。
優先度の高い情報としては、例えば音声データや動画像データが代表的である。このようなリアルタイム性が重要視される情報の通信をサポートするためには、これらの情報のネットワークスイッチ装置における中継遅延時間をできるだけ短縮する必要がある。しかし、優先制御が行われるネットワークスイッチ装置でも、例えば同じ出力ポートの同じ優先度クラス宛のトラフィックが集中する等の事態が発生すると、優先度の高いパケットであっても廃棄されてしまうことがあり得る。
優先度の高いパケットの中継遅延時間を短縮可能にした従来のパケットスイッチとして、以下のようなものがあった。このパケットスイッチは、入力回線から受信した可変長パケットを各入力回線インタフェースで固定長のセルに変換し、スイッチ部においてセル単位でスイッチングし、このスイッチ部からの出力セルを各出力回線インタフェースで元の可変長パケットに変換して出力回線に送出するように構成されている。そして、各入力回線インタフェースが、受信した可変長パケットから変換された固定長のセルを出力回線ごとに優先度別にキューイングし、各キューの蓄積セルを優先度に応じて選択的に出力するための制御手段を備えたことを特徴としている。
このパケットスイッチにおいて、特定の出力ポートに向かう複数のパケットが複数の入力回線から時間的に重なって入力され、スイッチ部内で上記の特定出力ポートに向かうセルの蓄積量が所定のしきい値を超えた場合には、各入力回線インタフェースに対して輻輳状態通知が与えられる。そして、上記の特定出力ポートに向かうセルを送出中の入力回線インタフェースが、この輻輳状態通知に応答して、セル優先度の低いものから選択的にセル送出を抑制する。これによって、輻輳状態が深刻化することが回避され、優先度の高いパケットが大幅に遅延することなく出力回線側に転送される。例えば、特開2000−151633号公報(段落番号〔0012〕〜〔0018〕、第1図)参照。
ところで、ストア&フォワード方式のネットワークスイッチ装置において、宛先別に形成されたパケットのキューは、通常、それぞれ物理的または論理的に分離された有限な大きさのバッファに格納されている。また、優先制御が行われるネットワークスイッチでは、さらに、優先度クラスごとにキューが形成されることが多い。このようなネットワークスイッチ装置において、ある出力ポートに対して特定の優先度クラス宛のトラフィックが集中した場合、同じ出力ポートの別の優先度クラスのキューでは空き容量があるにもかかわらず、トラフィックが集中したキューでは輻輳が発生してしまうことがある。このような事態を避けるためには、例えば、各優先度クラスのキューに対して十分なバッファ容量を確保する必要がある。しかし、この場合にはメモリの使用効率が低下するとともに、メモリ容量が増大して部品コストが高くなることが問題であった。
上記の特開2000−151633号公報で開示されたパケットスイッチでは、スイッチ部内のバッファメモリと、出力回線インタフェース内の出力バッファメモリにおいて、それぞれ優先度クラスごとにキューを形成することができる。このとき、各バッファメモリにおいて、優先度クラス別の各キューが他のキューと空きエリアを共用する共通バッファ構造を採用することにより、メモリ容量を有効に利用できる。しかし、このためには、スイッチ部および出力回線インタフェースの双方において、出力回線別および優先度クラス別の連結リストを管理してバッファ制御を行う必要があり、処理が複雑になって高コストとなることが問題となる。また、このパケットスイッチは、受信パケットを固定長のセルに変換して取り扱うことが前提とされており、受信パケットをそのままの状態で取り扱う装置に対しては適用できない。
本発明は、このような課題に鑑みてなされたものであり、パケットの優先制御が可能であり、かつ、受信パケットを格納するバッファの使用効率が高められ、部品コストが低減されたネットワークスイッチ装置を提供することを目的とする。
本発明では上記課題を解決するために、図1に示すようなネットワークスイッチ装置が提供される。このネットワークスイッチ装置は、複数のネットワーク間でパケットの転送を行うものであり、転送先の前記ネットワークごとに設けられた複数のバッファ1−1〜n(ただし、nは1以上の整数)と、受信パケット10が入力されると、前記受信パケット10の優先度クラスを判定する優先度判定回路2と、前記各バッファ1−1〜nにおいて、複数の前記優先度クラスの前記パケットを登録可能な送信キュー4〜1〜nを形成し、宛先に対応する前記バッファに対して前記受信パケット10を書き込むとともに、前記優先度判定回路2の判定結果に基づいて、対応する前記送信キュー内に登録された同じ前記優先度クラスの前記パケットのうち、最後に登録された前記パケットの次に送信予約されるように前記受信パケット10を登録するバッファ制御回路3とを有することを特徴とする。
このようなネットワークスイッチ装置では、バッファ制御回路3の制御の下で、受信パケット10がその宛先のネットワークに対応するバッファに格納される。また、優先度判定回路2は、受信パケット10の優先度クラスを判定する。バッファ制御回路3は、各バッファ1−1〜nにおいて、複数の優先度クラスのパケットを登録可能な送信キュー4−1〜nを形成する。そして、受信パケット10をバッファに書き込む際に、優先度判定回路2の判定に基づいて、対応する送信キュー内に登録された同じ優先度クラスのパケットのうち、最後に登録されたパケットの次に受信パケット10が送信予約されるように制御する。
これにより、宛先のネットワークに対応するバッファ1−1〜nには、それぞれ1つの送信キュー4−1〜nが形成され、各送信キュー4−1〜nでは、優先度クラスが高く、かつ先に受信されたパケットほど先に送信されるようにパケットが登録される。このとき、優先度クラスごとに割り当てられるバッファ容量が特定されないため、受信パケット10はその優先度クラスに関係なくバッファ1−1〜nの空き領域に格納される。また、例えば、バッファ制御回路3によって、各送信キュー4−1〜nに登録したパケット間の連結を、各パケットの各バッファ1−1〜nにおける書き込み位置に基づく連結リスト構造として管理することも可能である。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
本発明では上記課題を解決するために、図1に示すようなネットワークスイッチ装置が提供される。このネットワークスイッチ装置は、複数のネットワーク間でパケットの転送を行うものであり、転送先の前記ネットワークごとに設けられた複数のバッファ1−1〜n(ただし、nは1以上の整数)と、受信パケット10が入力されると、前記受信パケット10の優先度クラスを判定する優先度判定回路2と、前記各バッファ1−1〜nにおいて、複数の前記優先度クラスの前記パケットを登録可能な送信キュー4〜1〜nを形成し、宛先に対応する前記バッファに対して前記受信パケット10を書き込むとともに、前記優先度判定回路2の判定結果に基づいて、対応する前記送信キュー内に登録された同じ前記優先度クラスの前記パケットのうち、最後に登録された前記パケットの次に送信予約されるように前記受信パケット10を登録するバッファ制御回路3とを有することを特徴とする。
このようなネットワークスイッチ装置では、バッファ制御回路3の制御の下で、受信パケット10がその宛先のネットワークに対応するバッファに格納される。また、優先度判定回路2は、受信パケット10の優先度クラスを判定する。バッファ制御回路3は、各バッファ1−1〜nにおいて、複数の優先度クラスのパケットを登録可能な送信キュー4−1〜nを形成する。そして、受信パケット10をバッファに書き込む際に、優先度判定回路2の判定に基づいて、対応する送信キュー内に登録された同じ優先度クラスのパケットのうち、最後に登録されたパケットの次に受信パケット10が送信予約されるように制御する。
これにより、宛先のネットワークに対応するバッファ1−1〜nには、それぞれ1つの送信キュー4−1〜nが形成され、各送信キュー4−1〜nでは、優先度クラスが高く、かつ先に受信されたパケットほど先に送信されるようにパケットが登録される。このとき、優先度クラスごとに割り当てられるバッファ容量が特定されないため、受信パケット10はその優先度クラスに関係なくバッファ1−1〜nの空き領域に格納される。また、例えば、バッファ制御回路3によって、各送信キュー4−1〜nに登録したパケット間の連結を、各パケットの各バッファ1−1〜nにおける書き込み位置に基づく連結リスト構造として管理することも可能である。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
図1は、本発明の原理を説明するための原理図である。
図2は、本発明の第1の実施の形態に係るネットワークスイッチ装置の接続例を示す図である。
図3は、本発明の第1の実施の形態に係るネットワークスイッチ装置の内部構成を示すブロック図である。
図4は、本発明の第1の実施の形態に係るネットワークスイッチ装置において、送信バッファ内に格納されたデータの構造を模式的に示す図である。
図5は、本発明の第1の実施の形態に係るネットワークスイッチ装置において、バッファ制御回路に設けられるレジスタ群と、送信キューとの関係を示す図である。
図6は、本発明の第1の実施の形態に係るネットワークスイッチ装置において、パケットを送信バッファに書き込む場合のバッファ制御回路における処理の流れを示すフローチャートである。
図7は、本発明の第1の実施の形態に係るネットワークスイッチ装置において、パケットを送信バッファから読み出す場合のバッファ制御回路における処理の流れを示すフローチャートである。
図8は、本発明の第2の実施の形態に係るネットワークスイッチ装置において、バッファ制御回路に設けられるポインタメモリと、送信キューとの関係を示す図である。
図9は、本発明の第2の実施の形態に係るネットワークスイッチ装置において、パケットを送信バッファに書き込む場合のバッファ制御回路における処理の流れを示すフローチャートである。
図10は、本発明の第2の実施の形態に係るネットワークスイッチ装置において、パケットを送信バッファから読み出す場合のバッファ制御回路における処理の流れを示すフローチャートである。
図11は、本発明の第3の実施の形態に係るネットワーク装置において、各送信バッファに形成される送信キューの例を示す図である。
図2は、本発明の第1の実施の形態に係るネットワークスイッチ装置の接続例を示す図である。
図3は、本発明の第1の実施の形態に係るネットワークスイッチ装置の内部構成を示すブロック図である。
図4は、本発明の第1の実施の形態に係るネットワークスイッチ装置において、送信バッファ内に格納されたデータの構造を模式的に示す図である。
図5は、本発明の第1の実施の形態に係るネットワークスイッチ装置において、バッファ制御回路に設けられるレジスタ群と、送信キューとの関係を示す図である。
図6は、本発明の第1の実施の形態に係るネットワークスイッチ装置において、パケットを送信バッファに書き込む場合のバッファ制御回路における処理の流れを示すフローチャートである。
図7は、本発明の第1の実施の形態に係るネットワークスイッチ装置において、パケットを送信バッファから読み出す場合のバッファ制御回路における処理の流れを示すフローチャートである。
図8は、本発明の第2の実施の形態に係るネットワークスイッチ装置において、バッファ制御回路に設けられるポインタメモリと、送信キューとの関係を示す図である。
図9は、本発明の第2の実施の形態に係るネットワークスイッチ装置において、パケットを送信バッファに書き込む場合のバッファ制御回路における処理の流れを示すフローチャートである。
図10は、本発明の第2の実施の形態に係るネットワークスイッチ装置において、パケットを送信バッファから読み出す場合のバッファ制御回路における処理の流れを示すフローチャートである。
図11は、本発明の第3の実施の形態に係るネットワーク装置において、各送信バッファに形成される送信キューの例を示す図である。
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本発明の原理を説明するための原理図である。
本発明のネットワークスイッチ装置は、複数のネットワークに接続して、これらのネットワーク間でパケットを転送する装置である。このネットワークスイッチ装置は、図1に示すように、転送先のネットワークごとにそれぞれ設けられたバッファ1−1〜n(ただし、nは1以上の整数)と、優先度判定回路2と、バッファ制御回路3とを有している。
各バッファ1−1〜nは、ネットワークを通じて受信したパケット(以下、受信パケットと呼称する)10を、その宛先に応じて格納するための記憶装置であり、例えば半導体メモリ等によって構成される。なお、各バッファ1−1〜nの領域は、必ずしも物理的に分離された領域である必要はなく、1つの共有バッファ上に各領域が論理的に分離されて形成されてもよい。
優先度判定回路2は、受信パケット10に付与された優先度クラスを判定して、判定結果をバッファ制御回路3に通知する。
バッファ制御回路3は、バッファ1−1〜nにおける受信パケット10の書き込みおよび読み出しの動作を制御する。バッファ制御回路3は、宛先のネットワークごとに設けられたバッファ1−1〜nにおいて、それぞれ1つの送信キュー4−1〜nを形成して、受信パケット10をその宛先に対応するバッファに格納させるとともに、対応する送信キューに登録する。
ここで、各送信キュー4−1〜nには、複数の優先度クラスのパケットを登録することが可能とされる。バッファ制御回路3は、優先度判定回路2による判定結果に基づいて、送信キューに対する登録位置を決定する。具体的には、宛先に対応する送信キュー内にすでに登録されている、受信パケット10と同じ優先度クラスのパケットのうち、最後に登録されたパケットの次に送信予約されるように、受信パケット10を送信キューに登録する。
以下、このネットワークスイッチ装置におけるスイッチング動作を、順を追って説明する。この説明では、バッファ1−1に対応するネットワークに転送すべきパケットが受信された場合を想定する。
接続されたネットワークからパケットが受信されると(ステップS1)、優先度判定回路2により、この受信パケット10に付与された優先度クラスが判定される(ステップS2)。この判定は、例えば受信パケット10のヘッダ情報を参照して行われ、判定結果がバッファ制御回路3に通知される。
バッファ制御回路3は、例えば図示しないヘッダ解析部等から受信パケット10の宛先の通知を受けて、その宛先に対応するバッファ1−1に対して受信パケット10を書き込むように、動作を制御する(ステップS3)。バッファ1−1内には、バッファ制御回路3の制御の下で送信キュー4−1が形成され、送信キュー4−1内には、パケットが送信予定順に登録される。
ここで、バッファ制御回路3は、受信パケット10と同じ優先度クラスのパケットが送信キュー4−1にすでに登録されている場合には、これらのパケットのうち、その送信キュー4−1内で最後に登録されたパケットの次に送信予約されるように、受信パケット10を登録する。
図1では、例として、高優先度と低優先度の2段階の優先度クラスが設定されているものとしている。そして、バッファ1−1内の送信キュー4−1には、双方の優先度クラスのパケットがすでに登録された状態となっている。ここで、受信パケット10が高優先度クラスと判定された場合には、受信パケット10は、送信キュー4−1内において、高優先度クラスのパケットの末尾に挿入される(ステップS3−1)。また、受信パケット10が低優先度クラスと判定された場合には、受信パケット10は、低優先度クラスのパケットの末尾に登録される(ステップS3−2)。
なお、ステップS3−1において、受信パケット10の登録時にバッファ1−1の空き領域がない場合には、送信キュー4−1に登録されていたパケットのうち、優先度が最も低い低優先度クラスで、かつ最後に登録されたパケットが廃棄され、受信パケット10の挿入が行われる。また、ステップS3−2において、同様にバッファ1−1の空き領域がない場合には、受信パケット10自身が廃棄される。
このようなバッファ1−1に対する書き込み制御により、1つの送信キュー4−1でありながら、高優先度クラスのパケットは、それより下位の優先度クラスのパケットよりも常に先に送信予約される。そして、送信キュー4−1からは、バッファ制御回路3による制御の下で、先頭のパケットから順に読み出され、対応するネットワークに送信される(ステップS4)。
以上の動作において、バッファ制御回路3によるバッファ1−1への書き込み制御により、送信キュー4−1内では、優先度クラスが高く、かつ先に受信されたパケットほど先に送信されるようにパケットが登録される。このとき、優先度クラスごとに割り当てられるバッファ容量が特定されず、バッファ1−1に空き領域がある場合は優先度クラスに関係なく受信パケット10が格納される。従って、この送信キュー4−1に対してパケットが集中する等により輻輳が発生した場合に、優先度クラスが高いパケットほどより確実に送信が行われるとともに、バッファ1−1内の使用効率が高められる。この結果、バッファ1−1の容量を抑制することができ、部品コストが低減される。
なお、上記のようなバッファ制御回路3によるバッファ1−1〜nの書き込み・読み出し制御を効率的に行うためには、バッファ1−1〜n内に格納した各パケットを、各バッファ1−1〜nにおける書き込み位置に基づく連結リスト構造として管理すればよい。例えば、各バッファ1−1〜n内の書き込み位置を指し示すポインタを保持するポインタスタックを設け、バッファ制御回路3は、受信パケット10の書き込み時にこのポインタスタックからポインタをPOPして取得する。そして、送信キュー4−1〜n内に登録された各パケット間の連結を、各パケットを指し示すポインタを用いた連結リストを用いて管理する。
次に、本発明の実施の形態について、具体的に説明する。
〔第1の実施の形態〕
図2は、本発明の第1の実施の形態に係るネットワークスイッチ装置の接続例を示す図である。
図2に示すように、ネットワークスイッチ装置100には、複数の通信ポートが設けられており、各通信ポートにネットワーク21〜24が接続されている。各ネットワーク21〜24には、例えば端末装置21a、22a、23aおよび24aが接続されている。
ネットワークスイッチ装置100は、接続されたネットワーク21〜24の間におけるパケットの転送を行う。例えば、端末装置21aから端末装置22a宛てに送信されたパケットは、ネットワーク21を通じてネットワークスイッチ装置100に入力され、このネットワークスイッチ装置100の処理によってネットワーク22に転送される。これにより、転送されたパケットが、ネットワーク22を通じて端末装置22aにおいて受信される。
図3は、ネットワークスイッチ装置100の内部構成を示すブロック図である。
図3に示すように、ネットワークスイッチ装置100は、受信インタフェース111〜114、受信バッファ121〜124、送信インタフェース131〜134、送信バッファ141〜144、データ転送回路150、ヘッダ解析回路160、ポインタスタック170、使用量監視回路180、およびバッファ制御回路190を具備する。
受信インタフェース111〜114は、外部のネットワークからのデータを受信する通信インタフェースであり、それぞれネットワーク21〜24に接続されている。受信インタフェース111〜114は、各ネットワーク21〜24を通じて受信したパケットを、受信バッファ121〜124に対して供給する。
受信バッファ121〜124は、それぞれ受信インタフェース111〜114から供給されたパケットを一時的に格納するためのバッファメモリである。受信バッファ121〜124は、格納したパケットのヘッダ情報をヘッダ解析回路160に出力するとともに、データ転送回路150に対してパケットの出力要求を行い、データ転送回路150からの応答に応じて、格納したパケットをデータ転送回路150に出力する。
一方、送信インタフェース131〜134は、外部のネットワークに対してデータを送信する通信インタフェースであり、それぞれネットワーク21〜24に接続されている。送信インタフェース131〜134は、それぞれ送信バッファ141〜144から供給されたパケットを、ネットワーク21〜24に対して送信する。
送信バッファ141〜144は、データ転送回路150から供給されたパケットを一時的に格納するためのバッファメモリである。送信バッファ141〜144は、供給されたパケットを、データ転送回路150によって指定されたアドレスに書き込む。そして、対応する送信インタフェース131〜134からの送信要求に応じて、書き込まれたパケットを、バッファ制御回路190によるアドレス指定に基づいて読み出し、それぞれ送信インタフェース131〜134に対して出力する。
各送信バッファ141〜144は、パケットの書き込みおよび読み出しの各動作が行われるたびに、これらの動作が行われたことを使用量監視回路180に対して通知する。これにより、使用量監視回路180において、各送信バッファ141〜144の使用量を監視することが可能となる。
また、送信バッファ141〜144内には、バッファ制御回路190による制御の下で、それぞれ1つずつの送信キューが形成される。そして、書き込まれたパケットのそれぞれに対して付属セル領域が設けられ、付属セル領域には、そのパケットが登録された送信キューにおける先行パケットおよび後続パケットの書き込み位置を指し示すポインタが、バッファ制御回路190によって書き込まれる。これにより、各送信キュー内に登録されたパケット間の連結が管理される。
データ転送回路150は、各受信バッファ121〜124からパケットを受け取り、宛先に対応する送信バッファに対して転送する。データ転送回路150は、各受信バッファ121〜124から出力要求を受けると、そのパケットの宛先を示す情報をヘッダ解析回路160から取得する。また、使用量監視回路180からの情報に基づき、宛先に対応する送信バッファに対する書き込みが可能か否かを判断し、可能な場合には、ポインタスタック170からポインタを取得して、そのポインタに基づく書き込みアドレスを指定し、パケットを転送する。
ヘッダ解析回路160は、受信バッファ121〜124に格納されたパケットのヘッダ情報を取得し、そのパケットの宛先として指定された送信ポートを、データ転送回路150およびバッファ制御回路190に対して通知する。また、取得したヘッダ情報からそのパケットの優先度クラスを判定して、バッファ制御回路190に対して通知する。ヘッダ解析回路160は、例えば、宛先の送信ポートと優先度クラスとの対応テーブルを具備して、この対応テーブルを参照して、ヘッダ情報に示された宛先から優先度クラスを判断する。
ポインタスタック170は、送信バッファ141〜144におけるパケットの書き込みアドレスを指し示すポインタが格納されている。ポインタスタック170は、データ転送回路150からの要求に応じて、ポインタをPOPし、データ転送回路150およびバッファ制御回路190に出力する。また、出力したポインタに指し示される送信バッファ141〜144内の領域が、パケットの読み出しや廃棄により開放された場合は、そのポインタがバッファ制御回路190から供給され、ポインタスタック170にPUSHされて返却される。従って、ポインタスタック170内に存在するポインタは、必ず送信バッファ141〜144内の空き領域を指し示していることになる。
使用量監視回路180は、各送信バッファ141〜144において空き領域があるか否かを示す情報を、データ転送回路150およびバッファ制御回路190に対して通知する。使用量監視回路180は、各送信バッファ141〜144から、パケットの書き込みおよび読み出しの各動作が行われたことの通知を受ける。また、バッファ制御回路190から、送信バッファ141〜144内に格納されたパケットが廃棄され、バッファ内の領域が開放されたことの通知を受ける。そして、これらの通知に基づいて各送信バッファ141〜144内のバッファ使用量をカウントし、カウント値があらかじめ設定された値に達すると、その送信バッファに空き領域がなくなったと判断する。
この使用量監視回路180は、データ転送回路150およびバッファ制御回路190に対して、各送信バッファ141〜144に空き領域があるか否かを示す情報を、例えば定期的に、あるいは各通知先からの要求に応じて更新する。
バッファ制御回路190は、送信バッファ141〜144におけるパケットの書き込みおよび読み出しの動作を制御する。また、バッファ制御回路190は、送信バッファ141〜144内においてそれぞれ1つずつの送信キューを形成し、書き込まれたパケットを、送信キューに対して優先度クラスに応じて登録する。各送信キューに割り当てられるバッファ容量は有限とされる。また、各送信キューは、登録されたパケットとその前後のパケットとを連結させた双方向連結リスト構造を用いて管理される。
このために、バッファ制御回路190は、各送信バッファ141〜144内にパケットが書き込まれる際に、このパケットの書き込みアドレスを指し示すポインタを、ポインタスタック170から取得する。そして、送信バッファ141〜144内に、各パケットのそれぞれに対応する付属セル領域を設け、送信キュー内においてこのパケットに先行するパケットと後続のパケットとをそれぞれ指し示すポインタを、付属セル領域に書き込む。
また、各送信キューに対しては、高い優先度クラスに属するパケットが常に上位に送信予約される。また、同じ優先度クラスに属するパケットについては、受信した順に送信予約される。このような優先度クラスに応じた登録管理を行うために、バッファ制御回路190は、後述するように、登録されたパケットのうち、各優先度クラスごとにその先頭パケットと末尾パケットとをそれぞれ指し示すポインタを保持するためのレジスタ群を具備する。そして、パケットの書き込みや読み出しを行うたびに、このレジスタ群の保持するポインタを更新する。
なお、本実施の形態では、送信バッファ141〜144は1つの共有メモリ内に設けられ、各バッファの領域が論理的に分離されて使用されるものとする。従って、ポインタスタック170は、共有メモリ内の全領域における書き込みアドレスに対応するポインタを一元的に保持しており、これによって共有メモリを効率的に使用することが可能となっている。ただし、各送信ポート用のバッファ領域の容量(すなわち送信バッファ141〜144としてそれぞれ使用される容量)は一定となるように決められており、これらの各容量が使用量監視回路180によって監視されるようになっている。
このようなネットワークスイッチ装置100により、優先度クラスに応じてパケットの転送順や廃棄の可否を判断することが可能なスイッチング処理が行われる。例えば、ネットワーク21からネットワーク22に転送すべきパケットを受信した場合には、受信インタフェース111において受信されたパケットは、受信バッファ121に一旦格納される。このパケットのヘッダ情報はヘッダ解析回路160に通知され、ヘッダ解析回路160は、パケットの宛先から優先度クラスを判断し、バッファ制御回路190に宛先とともに通知する。
データ転送回路150は、受信バッファ121からパケットを受け取ると、ヘッダ解析回路160から通知された宛先に対応する送信バッファ142に対する転送処理を開始する。データ転送回路150は、使用量監視回路180からの情報に基づいて、送信バッファ142に対する書き込みが可能と判断すると、ポインタスタック170からポインタをPOPして取得し、取得したポインタの指し示すアドレスにパケットを転送する。
また、バッファ制御回路190は、通知された宛先に対応する送信バッファ142内の送信キューにおいて、通知された優先度クラスのパケットの登録が可能か否かを判断する。使用量監視回路180からの使用量通知に基づき、送信キューにおいて格納可能な領域に余裕がある場合は、すべてのパケットが登録可能であるが、空き領域がない場合には、ヘッダ解析回路160から通知された優先度クラスに応じて、登録の可否を判断する。
登録しようとしているパケットより下位の優先度クラスのパケットが、送信バッファ142内の送信キューにすでに登録されている場合、バッファ制御回路190は、新たなパケットを登録可能と判断する。この場合、送信キューの最後尾に登録されたパケットを廃棄する処理を行うとともに、パケットを廃棄したことを使用量監視回路180に通知する。これにより、使用量監視回路180は、データ転送回路150に対して、送信バッファ142に空き領域が発生したことを通知するので、データ転送回路150は、送信バッファ142に対してパケットを転送する。
一方、登録しようとしているパケットと同等以下の優先度クラスのパケットが、送信バッファ142内の送信キューに登録されていない場合、バッファ制御回路190は、新たなパケットの登録が不可能と判断する。この場合、送信バッファ142内の領域が開放されないので、使用量監視回路180は、データ転送回路150に対して、パケットの書き込みが不可能である旨を通知し続ける。これにより、データ転送回路150は、パケットの転送が不可能であると判断して、受信バッファ121から受け取ったパケットを廃棄する。
送信バッファ142に書き込まれたパケットは、バッファ制御回路190の制御の下で、送信キューへの登録が連結リスト構造として管理される。そして、送信キューの登録順に従って読み出され、送信インタフェース132からネットワーク22に送出される。
ここで、図4は、送信バッファ内に格納されたデータの構造を模式的に示す図である。
図4では、送信バッファ141〜144におけるパケットを、各バッファ内に形成される送信キューに登録された順に示している。なお、図4では、送信キュー内で連結された各パケットが連続して配置されているが、送信バッファ141〜144上の実際の物理的な書き込み位置は、この通りにはなるとは限らない。
上述したように、送信バッファ141〜144内では、各パケットが格納されるパケット格納領域140aとともに、付属セル領域140bがパケットごとに設けられる。図4に示すように、付属セル領域140bには、送信キュー内の直前のパケットを指し示すポインタ(以下、直前ポインタと呼称する)と、後続のパケットを指し示すポインタ(以下、後続ポインタと呼称する)とが格納される。
付属セル領域140bの各ポインタは、バッファ制御回路190によって書き込まれる。直前ポインタは、受信パケットが送信バッファ141〜144に転送された際に書き込まれ、後続ポインタは、送信キュー内で後続のパケットが登録された際に書き込まれる。このような各ポインタを利用することにより、送信キュー内のパケットを前後の双方向に連結された双方向連結リスト構造として管理することが可能となる。
例えば、パケットを読み出したときには、そのパケットの付属セル領域140bの後続ポインタを参照することにより、次に送信すべきパケットの書き込み位置を知ることができる。また、送信バッファの空き領域がなくなり、優先度クラスの判定により送信キュー内のパケットを廃棄することになった場合は、送信キュー内の最後尾のパケットが廃棄される。このとき、廃棄するパケットの付属セル領域140bの直前ポインタを参照することにより、廃棄後に最後尾となるパケットの書き込み位置を知ることができる。
次に、付属セル領域140bに格納された各ポインタを利用したバッファ制御回路190の制御について詳しく説明する。なお、以下の説明では、例として、優先度が高い順に“高優先度”“中優先度”“低優先度”の3段階の優先度クラスを取り扱うことが可能であるとする。
図5は、バッファ制御回路190に設けられるレジスタ群と、送信キューとの関係を示す図である。
上述したように、各送信バッファ141〜144では、バッファ制御回路190の制御の下で、1つずつの送信キューが形成される。そして、各送信キューでは、優先度クラスが高いパケットほど先に送信予約されるように、登録が行われる。また、同じ優先度クラスのパケットでは、受信した順に登録される。従って、送信キューには、図5に示すように、高優先度クラスのパケットPh(1)〜Ph(s)が連結された後に、中優先度クラスのパケットPm(1)〜Pm(t)が連結され、さらに低優先度クラスのパケットPl(1)〜Pl(u)が連結される(ただし、s,t,uはそれぞれ1以上の整数である)。
このような構造の送信キューが形成されることにより、各送信バッファ141〜144では、優先度クラスごとに割り当てられるバッファ容量が特定されないため、受信したパケットはその優先度クラスに関係なくバッファの空き領域に格納される。従って、特定の送信ポートに輻輳が発生した場合に、対応する送信バッファに空き領域が発生することがなくなり、メモリの使用効率が高められる。
ところで、上記の構造の送信キューを管理するために、バッファ制御回路190は、各優先度クラスのパケットのうち先頭のものと末尾のものの書き込み位置を認識するためのレジスタ群を具備する。図5のように3段階の優先度クラスの取り扱いが可能な場合は、高優先度クラスに対しては、この優先度クラスのパケットのうち、先頭のパケットを指し示すポインタ、および末尾のパケットを指し示すポインタをそれぞれ保持する高優先先頭ポインタレジスタ191aおよび高優先末尾ポインタレジスタ192aが設けられる。同様に、中優先度クラスに対しては、中優先先頭ポインタレジスタ191bおよび中優先末尾ポインタレジスタ192b、低優先度クラスに対しては、低優先先頭ポインタレジスタ191cおよび低優先末尾ポインタレジスタ192cが、それぞれ設けられる。
各優先度クラスの末尾ポインタレジスタは、該当する優先度を持つ新たなパケットが登録される際に更新され、先頭ポインタレジスタは、先頭のパケットが送信バッファから読み出される際に更新される。
なお、送信キュー内では、同じ優先度クラスのパケット間は、付属セル領域140bに書き込まれたポインタにより双方向が連結される。しかし、異なる優先度クラスのパケット間はこのような連結が行われない。従って、同じ優先度クラスのうち先頭のパケットの付属セル領域140bには、直前ポインタは書き込まれず、直前のパケットがないことを示す情報が書き込まれる。また、最後尾のパケットの付属セル領域140bには、後続ポインタは書き込まれず、後続のパケットがないことを示す情報が書き込まれる。また、異なる優先度クラス間のパケットの連結は、上記のレジスタ群に格納されたポインタにより管理される。
次に、これらのレジスタ群およびパケットの付属セル領域140bに格納されたポインタを用いたバッファ制御回路190の処理を、フローチャートを用いて説明する。なお、以下の図6および図7に示すフローチャートの説明では、例として、ネットワーク21からネットワーク22に対して転送すべきパケットを受信した場合を想定する。また、図6および図7の説明では、必要に応じて、ネットワークスイッチ装置100内の他の要素における処理についての説明も加える。
図6は、パケットを送信バッファに書き込む場合のバッファ制御回路190における処理の流れを示すフローチャートである。以下、図6に示す処理をステップ番号に沿って説明する。
まず、受信インタフェース111において受信されたパケットが、受信バッファ121に一旦格納される。そして、格納されたパケットがデータ転送回路150に引き渡されるとともに、このパケットのヘッダ情報が、ヘッダ解析回路160に通知される。ヘッダ解析回路160は、パケットの宛先から優先度クラスを判断し、バッファ制御回路190に宛先とともに通知する。また、宛先はデータ転送回路150に対しても通知される。
[ステップS601]バッファ制御回路190は、ヘッダ解析回路160より、新たに受信されたパケットの宛先と優先度クラスの通知を受ける。
[ステップS602]使用量監視回路180からの情報を参照して、宛先に対応する送信バッファ142に空き領域があるか否かを判断する。空き領域がある場合は、ステップS603に進み、ない場合はステップS609に進む。
ここで、受信バッファ121からパケットを受け取ったデータ転送回路150は、ヘッダ解析回路160からの通知に基づいて、このパケットの宛先を判断する。そして、同様に、使用量監視回路180からの情報を参照して、宛先に対応する送信バッファ142に空き領域があるか否かを判断し、この判断に応じてパケットを転送するか否かを決定する。
[ステップS603]送信バッファ142に空き領域がある場合は、ポインタスタック170からPOPされたポインタが、データ転送回路150およびバッファ制御回路190に供給される。データ転送回路150は、送信バッファ142にパケットを転送し、取得したポインタの指し示すアドレスに書き込む。
[ステップS604]バッファ制御回路190は、送信バッファ142に対応する各優先度クラスの先頭ポインタレジスタのうち、受信パケットの優先度クラスの先頭ポインタレジスタを参照し、このレジスタにポインタが格納されているか否かを判断する。格納されていない場合は、送信キューに同じ優先度クラスのパケットが登録されていないと判断して、ステップS605に進む。また、格納されている場合は、送信キューに同じ優先度クラスのパケットがすでに登録されていると判断して、ステップS606に進む。
[ステップS605]受信パケットの優先度クラスに対応する先頭ポインタレジスタおよび末尾ポインタレジスタに、ポインタスタック170から取得したポインタ、すなわち受信パケットの格納位置を指し示すポインタを格納する。例えば、受信パケットが中優先度クラスである場合は、取得したポインタを中優先先頭ポインタレジスタ191bおよび中優先末尾ポインタレジスタ192bに格納する。また、このとき、受信パケットの付属セル領域140bには、直前および後続のパケットがないことを示す情報を書き込む。これにより、受信パケットが送信キューに登録され、パケットの書き込み処理が終了する。
[ステップS606]受信パケットと同じ優先度クラスのパケットが送信キューにすでに登録されている場合は、まず、該当する優先度クラスの末尾ポインタレジスタを参照する。例えば、受信パケットが中優先度クラスの場合は、中優先末尾ポインタレジスタ192bを参照する。そして、このレジスタに格納されているポインタが指し示すパケットの付属セル領域140bに対し、後続ポインタを、受信パケットを指し示すポインタで更新する。
[ステップS607]次に、受信パケットの付属セル領域140bに対して、直前ポインタとして末尾ポインタレジスタに格納されているポインタを格納する。このとき、付属セル領域140bには、後続のパケットがないことを示す情報も書き込む。
[ステップS608]さらに、末尾ポインタレジスタを、受信パケットを指し示すポインタで更新する。これにより、受信パケットが、送信キュー上の同じ優先度クラスのパケットのうち、最後に登録されていたパケットの次の位置に登録され、パケットの書き込み処理が終了する。
[ステップS609]一方、宛先に対応する送信バッファ142の空き容量がない場合には、まず、受信パケットの優先度クラスより下位クラスに対応する先頭ポインタレジスタを参照して、いずれかのレジスタにポインタが格納されているか否かを判断する。格納されている場合は、より下位クラスのパケットが送信キューにすでに登録されていると判断され、ステップS610に進む。
また、格納されていない場合は、何も処理が行われないままパケットの書き込み処理が終了される。この場合、受信パケットは、送信キュー中に登録されているパケットの中で最下位あるいはそれよりさらに下位の優先度クラスに属していることになり、廃棄すべきパケットと判断される。使用量監視回路180は、送信バッファ142の空き領域がないことをデータ転送回路150に通知し続ける。これにより、データ転送回路150は、このパケットの転送を行わないまま、受信バッファ121〜124のいずれかから次のパケットを受け取って、転送処理を開始するので、前のパケットは廃棄される。
[ステップS610]受信パケットより下位クラスのパケットが送信キューにすでに登録されている場合には、まず、ポインタが格納されている末尾ポインタレジスタのうち、最下位クラスのレジスタに格納されているポインタを、ポインタスタック170にPUSHして返却する。例えば、図5のような送信キューが形成されていた場合には、低優先末尾ポインタレジスタ192cに格納されているポインタを返却する。これにより、送信バッファ142の領域が、1パケット分だけ開放される。
[ステップS611]ステップS610で返却したポインタで指し示されるパケットの付属セル領域140bから直前ポインタを抽出し、この直前ポインタで、末尾ポインタレジスタを更新する。また、このとき、抽出した直前ポインタに指し示されるパケットの付属セル領域140bに対して、後続ポインタを消去して、後続のパケットがないことを示す情報を書き込む。これにより、送信キューの最後尾のパケットの登録が抹消される。
なお、付属セル領域に直前のパケットがないことを示す情報が書き込まれていた場合には、対応する優先度クラスの末尾ポインタレジスタおよび先頭ポインタレジスタの双方のポインタを消去する。
[ステップS612]送信バッファ142の領域が開放されたことを、使用量監視回路180に通知し、ステップS603に進む。これにより、使用量監視回路180は、送信バッファ142に空き領域が発生したと判断して、このことをデータ転送回路150に通知する。データ転送回路150は、この通知を受けるとともに、ステップS603に対応する処理によりポインタスタック170からポインタを取得し、パケットを送信バッファ142に転送して、取得したポインタに指し示されるアドレスに書き込む。
以上の処理により、受信パケットは、送信キューにすでに登録されていた同じ優先度クラスのパケットのうち、最後に登録されたパケットの次に送信予約される(ステップS606〜S608に対応)。
また、受信パケットと同じ優先度クラスのパケットが送信キュー内に登録されていない場合には、送信キュー内でこの優先度クラスに該当する位置に受信パケットが登録される(ステップS605に対応)。具体的には、受信パケットより上位クラスのパケットが送信キューにすでに登録されていた場合には、登録されている中で最も近い上位クラスのパケットのうち、最後に登録されたパケットの次に受信パケットが登録される。例えば、送信キューには高優先度クラスと低優先度クラスのパケットのみが登録されている送信キューに、中優先度クラスの受信パケットを登録する場合には、それより上位である高優先度クラスの最終パケットの次に、受信パケットが挿入される。また、受信パケットより上位クラスのパケットが送信キューに登録されていない場合には、受信パケットが送信キューの先頭に登録される。
さらに、各送信バッファ141〜144の容量は有限であるため、例えばネットワーク22宛てにパケットが集中して送信バッファ142が埋め尽くされた場合には、パケットを廃棄する必要が生じる。このとき、送信キューに登録されているもののうち、最も優先度クラスが低く、かつ最後に登録されたパケットを廃棄する(ステップS610〜S612に対応)。また、受信パケットが属する優先度クラスより下位クラスのパケットが送信キューに登録されていない場合は、受信パケット自身が廃棄される。
従って、送信キューでは、優先度クラスの高いパケットほど先に送信されるように、パケットが登録される。また、優先度クラスごとに割り当てられるバッファ容量が特定されないため、送信バッファに空き領域がある場合には、優先度クラスに関係なく受信パケットが空き領域に格納される。逆に、空き領域がない場合には、優先度クラスが最も低いパケットが常に廃棄され、高い優先度クラスのパケットが確実に送信予約される。
このため、特定の送信キューにおいて輻輳が発生した場合でも、優先度クラスが高いパケットほどより確実に送信が行われるとともに、送信バッファに空き領域が発生することがなくなる。従って、送信バッファ141〜144の使用効率が高められ、結果的に各バッファの容量を小さくすることができるので、部品コストが低減される。
また、送信キューに登録したパケット間の連結を、パケットの書き込み位置を指し示すポインタを用いた双方向連結リスト構造として管理することにより、送信キューへのパケットの登録処理だけでなく、一旦登録された低優先度クラスのパケットを廃棄する際の処理も効率的に実行することが可能となる。
次に、図7は、パケットを送信バッファから読み出す場合のバッファ制御回路190における処理の流れを示すフローチャートである。以下、図7に示す処理をステップ番号に沿って説明する。
[ステップS701]バッファ制御回路190は、ポインタが格納されている先頭ポインタレジスタのうち、最上位クラスのレジスタを参照する。そして、このレジスタに格納されているポインタが指し示すパケットを読み出し、対応する送信インタフェース132に転送する。これにより、読み出されたパケットがネットワーク22に送出される。
[ステップS702]ステップS701で参照した先頭ポインタレジスタのポインタを、ポインタスタック170にPUSHして返却する。
[ステップS703]送信バッファ142の領域が開放されたことを、使用量監視回路180に通知する。
[ステップS704]返却したポインタが指し示すパケットの付属セル領域140bの後続ポインタで、対応する優先度クラスの先頭ポインタレジスタを更新する。ここで、参照した付属セル領域140bに、後続のパケットがないことを示す情報が書き込まれていた場合は、この情報を、対応する優先度クラスの先頭ポインタレジスタに書き込む。これにより、次回の読み出しでは、下位クラスのパケットが読み出される。
以上の処理により、パケットは送信キューから順次読み出され、宛先の端末が接続されたネットワークに送出される。バッファ制御回路190に設けられたレジスタ群に保持されたポインタと、付属セル領域140bに格納されたポインタとを用いることにより、送信キューに送信予約された順に、パケットを効率よく読み出すことができる。また、読み出したパケットを指し示していたポインタをポインタスタック170に返却することにより、次の受信パケットを格納可能な空き領域が開放され、送信バッファを効率的に利用することができる。
〔第2の実施の形態〕
次に、本発明の第2の実施の形態例について説明する。第2の実施の形態では、ネットワークスイッチ装置全体の構成は、図3と同様である。ただし、第1の実施の形態と異なる点は、送信バッファ141〜144内に格納するデータがパケットの内容のみで、付属データ領域が形成されないこと、および、バッファ制御回路190に、各送信キューに登録されたすべてのパケットのポインタを管理するポインタメモリが優先度クラスごとに設けられ、これらのポインタメモリを用いて送信キューに対するパケットの登録、廃棄、読み出しの処理が行われることである。
図8は、バッファ制御回路190に設けられるポインタメモリと、送信キューとの関係を示す図である。
本実施の形態でも、上記の第1の実施の形態の場合と同様に、各送信バッファ141〜144には1つずつの送信キューが形成される。そして、各送信キューでは、優先度クラスが高いパケットほど先に送信予約されるように、登録が行われる。また、同じ優先度クラスのパケットでは、受信した順に登録される。従って、送信キューには、図8に示すように、高優先度クラスのパケットPh(1)〜Ph(s)が連結された後に、中優先度クラスのパケットPm(1)〜Pm(t)が連結され、さらに低優先度クラスのパケットPl(1)〜Pl(u)が連結される(ただし、s,t,uはそれぞれ1以上の整数である)。
また、本実施の形態では、上記の構造の送信キューを管理するために、バッファ制御回路190は、送信キュー内に登録されたすべてのパケットを指し示すポインタを保持するポインタメモリを、優先度クラスごとに具備する。図5のように3段階の優先度クラスの取り扱いが可能な場合は、高優先度、中優先度、低優先度の各クラスに対して、高優先ポインタメモリ193a、中優先ポインタメモリ193b、低優先ポインタメモリ193cがそれぞれ設けられる。
各ポインタメモリには、バッファ制御回路190がポインタスタック170から取得したポインタが格納される。このとき、各ポインタメモリは、ポインタを取得した順にFIFO(First In First Out)方式で保持することができるとともに、最後尾のポインタを順次削除することが可能となっている。
以下、これらのポインタメモリに格納されたポインタを用いたバッファ制御回路190の処理を、フローチャートを用いて説明する。なお、以下の図9および図10に示すフローチャートの説明では、例として、ネットワーク21からネットワーク22に対して転送すべきパケットを受信した場合を想定する。また、図9および図10の説明では、必要に応じて、ネットワークスイッチ装置100内の他の要素における処理についての説明も加える。
図9は、パケットを送信バッファに書き込む場合のバッファ制御回路190における処理の流れを示すフローチャートである。
第1の実施の形態の場合と同様に、受信インタフェース111において受信されたパケットは、受信バッファ121に一旦格納される。そして、格納されたパケットがデータ転送回路150に引き渡されるとともに、このパケットのヘッダ情報が、ヘッダ解析回路160に通知される。ヘッダ解析回路160は、パケットの宛先から優先度クラスを判断し、バッファ制御回路190に宛先とともに通知する。また、宛先はデータ転送回路150に対しても通知される。
[ステップS901]バッファ制御回路190は、ヘッダ解析回路160より、新たに受信されたパケットの宛先と優先度クラスの通知を受ける。
[ステップS902]使用量監視回路180からの情報を参照して、宛先に対応する送信バッファ142に空き領域があるか否かを判断する。空き領域がある場合は、ステップS903に進み、ない場合はステップS905に進む。
ここで、受信バッファ121からパケットを受け取ったデータ転送回路150は、ヘッダ解析回路160からの通知に基づいて、このパケットの宛先を判断する。そして、同様に、使用量監視回路180からの情報を参照して、宛先に対応する送信バッファ142に空き領域があるか否かを判断し、この判断に応じてパケットを転送するか否かを決定する。
[ステップS903]送信バッファ142に空き領域がある場合は、ポインタスタック170からPOPされたポインタが、データ転送回路150およびバッファ制御回路190に供給される。データ転送回路150は、送信バッファ142にパケットを転送し、取得したポインタの指し示すアドレスに書き込む。
[ステップS904]バッファ制御回路190は、送信バッファ142に対応する各優先度クラスのポインタメモリのうち、受信パケットの優先度クラスに対応するポインタメモリの最後尾に、ステップS903で取得したポインタを格納する。これにより、受信パケットが送信キューに登録される。
[ステップS905] また、宛先に対応する送信バッファ142の空き容量がない場合には、まず、受信パケットの優先度クラスより下位クラスに対応するポインタメモリを参照して、いずれかのポインタメモリにポインタが格納されているか否かを判断する。格納されている場合は、より下位クラスのパケットが送信キューにすでに登録されていると判断され、ステップS906に進む。
また、格納されていない場合は、何も処理が行われないままパケットの書き込み処理が終了される。この場合、受信パケットは、送信キュー中に登録されているパケットの中で最下位あるいはそれよりさらに下位の優先度クラスに属していることになり、廃棄すべきパケットと判断される。使用量監視回路180は、送信バッファ142の空き領域がないことをデータ転送回路150に通知し続け、この通知に基づいて、データ転送回路150は、受信バッファ122から受け取ったパケットを廃棄する。
[ステップS906]受信パケットより下位クラスのパケットが送信キューにすでに登録されている場合には、ポインタが登録されているポインタメモリのうち、最下位クラスに対応するポインタメモリを参照し、このポインタメモリの最後尾のポインタをポインタスタック170に返却するとともに、ポインタメモリから消去する。これにより、送信バッファ142の領域が、1パケット分だけ開放される。
[ステップS907]送信バッファ142の領域が開放されたことを、使用量監視回路180に通知し、ステップS903に進む。これにより、使用量監視回路180は、送信バッファ142に空き領域が発生したと判断して、このことをデータ転送回路150に通知する。データ転送回路150は、この通知を受けるとともに、ステップS903に対応する処理によりポインタスタック170からポインタを取得し、パケットを送信バッファ142に転送して、取得したポインタに指し示されるアドレスに書き込む。
以上の処理により、上記の第1の実施の形態と同様な送信キューが形成される。すなわち、受信パケットは、ステップS903およびS904の処理により、送信キューにすでに登録されていた同じ優先度クラスのパケットのうち、最後に登録されたパケットの次に送信予約される。また、受信パケットと同じ優先度クラスのパケットが送信キュー内に登録されていない場合には、送信キュー内でこの優先度クラスに該当する位置に受信パケットが登録される。
また、例えばネットワーク22宛てにパケットが集中して送信バッファ142が埋め尽くされた場合には、ステップS906〜S907の処理により、送信キューに登録されているもののうち、最も優先度クラスが低く、かつ最後に登録されたパケットが廃棄される。また、受信パケットが属する優先度クラスより下位クラスのパケットが送信キューに登録されていない場合は、受信パケット自身が廃棄される。
図10は、パケットを送信バッファから読み出す場合のバッファ制御回路190における処理の流れを示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS1001]バッファ制御回路190は、ポインタが格納されているポインタメモリのうち、最上位クラスのポインタメモリを参照して、格納されているポインタを取り出す。このとき、取り出したポインタはポインタメモリから消去される。
[ステップS1002]取り出したポインタが指し示すパケットを読み出し、対応する送信インタフェース132に転送する。これにより、読み出されたパケットがネットワーク22に送出される。
[ステップS1003]取り出したポインタを、ポインタスタック170にPUSHして返却する。
[ステップS1004]送信バッファ142の領域が開放されたことを、使用量監視回路180に通知する。
以上の処理により、パケットは送信キューから順次読み出され、宛先の端末が接続されたネットワークに送出される。バッファ制御回路190に設けられたポインタメモリに保持されたポインタを用いることにより、送信キューに送信予約された順に、パケットを効率よく読み出すことができる。また、読み出したパケットを指し示していたポインタをポインタスタック170に返却することにより、次の受信パケットを格納可能な空き領域が開放され、送信バッファを効率的に利用することができる。
このように、第2の実施の形態では、第1の実施の形態と比較して、ポインタを管理する処理が大幅に単純化される。しかし、第2の実施の形態の場合、各ポインタメモリは、FIFO方式によるデータの格納とともに、最後尾のデータを順次消去する機能を持つ必要があるため、書き込み・読み出しの制御が複雑となり、高価な制御回路が必要となる。従って、第2の実施の形態では、部品コストが高くなるとともに、設置面積も大きくなる。
なお、以上の第1および第2の実施の形態例では、送信ポートごとの送信バッファ141〜144の領域を共有メモリ内に設け、この共有メモリへの書き込み位置を1つのポインタスタック170で一元的に管理する構成とした。しかし、各送信バッファ141〜144の領域が物理的に分離された構成としてもよい。この場合は、送信バッファ141〜144ごとにポインタスタック170を設けて、書き込みおよび読み出しのアドレス管理を行えばよい。また、この場合には、使用量監視回路180は、各ポインタスタックに未使用のポインタが残っているか否かにより、各送信バッファ141〜144に空き領域があるか否かを判断することも可能である。
〔第3の実施の形態〕
次に、本発明の第3の実施の形態例について説明する。第3の実施の形態では、ネットワークスイッチ装置全体の構成は、図3と同様である。ただし、第1および第2の実施の形態と異なる点は、各送信バッファ141〜144内に複数の送信キューが形成されることである。
図11は、各送信バッファに形成される送信キューの例を示す図である。なお、以下の説明では、優先度の高い方からA〜Hの8段階の優先度クラスを取り扱うことが可能であるとする。
図11に示すように、各送信バッファ141〜144内では、それぞれ3つずつの送信キューが形成される。また、各送信キュー内には、1つ以上の隣接する優先度クラスのパケットが登録される。図11の例では、第1の送信キューには優先度クラス“A”“B”“C”のパケットを、第2の送信キューには優先度クラス“D”“E”のパケットを、第3の送信キューには優先度クラス“F”“G”“H”のパケットをそれぞれ登録可能となっている。そして、各送信キューは最大容量があらかじめ決められている。
なお、図11の例では、送信バッファ141においては、第1の送信キューQ11には優先度“A”“B”“C”のパケットが、第2の送信キューQ12には優先度“D”“E”パケットが、第3の送信キューQ13には優先度“F”“G”“H”のパケットがそれぞれすでに登録された状態を示している。また、送信バッファ144においては、第1の送信キューQ41には優先度“A”“C”のパケットのみが、第2の送信キューQ42には優先度“D”“E”パケットが、第3の送信キューQ43には優先度“F”のパケットのみがそれぞれすでに登録された状態を示している。
このような送信キューへの登録を管理するために、使用量監視回路180は、各送信バッファ141〜144におけるバッファ使用量を、送信キューごとにカウントする。また、送信キュー内のパケット間の連結の管理は、上記の第1および第2の実施の形態のいずれも利用可能である。そして、バッファ制御回路190は、パケットの読み出し時に、割り当てられた優先度クラスの高い送信キューから順に、パケットが登録されているか否かを判断して、登録されている送信キューからパケットを順次読み出す。
なお、このようなネットワークスイッチ装置では、1つの送信キューに登録可能な1つ以上の優先度クラスの単位で、登録可能なパケット数が制限されることから、輻輳の発生時に、下位クラスの送信キューには空き領域があるにもかかわらず、上位クラスのパケットが廃棄されてしまう可能性があり得る。このような事態を回避するためには、上位クラスのパケットが登録される送信キューほど、割り当てるバッファ容量を大きくすることが望ましい。
以上説明したように、本発明のネットワークスイッチ装置では、宛先のネットワークに対応するバッファにそれぞれ1つの送信キューが形成され、各送信キューでは、優先度クラスが高く、かつ先に受信されたパケットほど先に送信されるようにパケットが登録される。このとき、優先度クラスごとに割り当てられるバッファ容量が特定されないため、受信パケットはその優先度クラスに関係なくバッファの空き領域に格納される。従って、特定の送信キューにおいて輻輳が発生した場合に、優先度クラスが高いパケットほどより確実に送信が行われるとともに、バッファ内の使用効率が高められ、バッファの容量を抑制して部品コストを低減することができる。
また、例えば、バッファ制御回路によって、各送信キューに登録したパケット間の連結を、各パケットの各バッファにおける書き込み位置に基づく連結リスト構造として管理することにより、各送信キューへの登録時や送信キューからの出力時のアドレス管理が効率化される。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
図1は、本発明の原理を説明するための原理図である。
本発明のネットワークスイッチ装置は、複数のネットワークに接続して、これらのネットワーク間でパケットを転送する装置である。このネットワークスイッチ装置は、図1に示すように、転送先のネットワークごとにそれぞれ設けられたバッファ1−1〜n(ただし、nは1以上の整数)と、優先度判定回路2と、バッファ制御回路3とを有している。
各バッファ1−1〜nは、ネットワークを通じて受信したパケット(以下、受信パケットと呼称する)10を、その宛先に応じて格納するための記憶装置であり、例えば半導体メモリ等によって構成される。なお、各バッファ1−1〜nの領域は、必ずしも物理的に分離された領域である必要はなく、1つの共有バッファ上に各領域が論理的に分離されて形成されてもよい。
優先度判定回路2は、受信パケット10に付与された優先度クラスを判定して、判定結果をバッファ制御回路3に通知する。
バッファ制御回路3は、バッファ1−1〜nにおける受信パケット10の書き込みおよび読み出しの動作を制御する。バッファ制御回路3は、宛先のネットワークごとに設けられたバッファ1−1〜nにおいて、それぞれ1つの送信キュー4−1〜nを形成して、受信パケット10をその宛先に対応するバッファに格納させるとともに、対応する送信キューに登録する。
ここで、各送信キュー4−1〜nには、複数の優先度クラスのパケットを登録することが可能とされる。バッファ制御回路3は、優先度判定回路2による判定結果に基づいて、送信キューに対する登録位置を決定する。具体的には、宛先に対応する送信キュー内にすでに登録されている、受信パケット10と同じ優先度クラスのパケットのうち、最後に登録されたパケットの次に送信予約されるように、受信パケット10を送信キューに登録する。
以下、このネットワークスイッチ装置におけるスイッチング動作を、順を追って説明する。この説明では、バッファ1−1に対応するネットワークに転送すべきパケットが受信された場合を想定する。
接続されたネットワークからパケットが受信されると(ステップS1)、優先度判定回路2により、この受信パケット10に付与された優先度クラスが判定される(ステップS2)。この判定は、例えば受信パケット10のヘッダ情報を参照して行われ、判定結果がバッファ制御回路3に通知される。
バッファ制御回路3は、例えば図示しないヘッダ解析部等から受信パケット10の宛先の通知を受けて、その宛先に対応するバッファ1−1に対して受信パケット10を書き込むように、動作を制御する(ステップS3)。バッファ1−1内には、バッファ制御回路3の制御の下で送信キュー4−1が形成され、送信キュー4−1内には、パケットが送信予定順に登録される。
ここで、バッファ制御回路3は、受信パケット10と同じ優先度クラスのパケットが送信キュー4−1にすでに登録されている場合には、これらのパケットのうち、その送信キュー4−1内で最後に登録されたパケットの次に送信予約されるように、受信パケット10を登録する。
図1では、例として、高優先度と低優先度の2段階の優先度クラスが設定されているものとしている。そして、バッファ1−1内の送信キュー4−1には、双方の優先度クラスのパケットがすでに登録された状態となっている。ここで、受信パケット10が高優先度クラスと判定された場合には、受信パケット10は、送信キュー4−1内において、高優先度クラスのパケットの末尾に挿入される(ステップS3−1)。また、受信パケット10が低優先度クラスと判定された場合には、受信パケット10は、低優先度クラスのパケットの末尾に登録される(ステップS3−2)。
なお、ステップS3−1において、受信パケット10の登録時にバッファ1−1の空き領域がない場合には、送信キュー4−1に登録されていたパケットのうち、優先度が最も低い低優先度クラスで、かつ最後に登録されたパケットが廃棄され、受信パケット10の挿入が行われる。また、ステップS3−2において、同様にバッファ1−1の空き領域がない場合には、受信パケット10自身が廃棄される。
このようなバッファ1−1に対する書き込み制御により、1つの送信キュー4−1でありながら、高優先度クラスのパケットは、それより下位の優先度クラスのパケットよりも常に先に送信予約される。そして、送信キュー4−1からは、バッファ制御回路3による制御の下で、先頭のパケットから順に読み出され、対応するネットワークに送信される(ステップS4)。
以上の動作において、バッファ制御回路3によるバッファ1−1への書き込み制御により、送信キュー4−1内では、優先度クラスが高く、かつ先に受信されたパケットほど先に送信されるようにパケットが登録される。このとき、優先度クラスごとに割り当てられるバッファ容量が特定されず、バッファ1−1に空き領域がある場合は優先度クラスに関係なく受信パケット10が格納される。従って、この送信キュー4−1に対してパケットが集中する等により輻輳が発生した場合に、優先度クラスが高いパケットほどより確実に送信が行われるとともに、バッファ1−1内の使用効率が高められる。この結果、バッファ1−1の容量を抑制することができ、部品コストが低減される。
なお、上記のようなバッファ制御回路3によるバッファ1−1〜nの書き込み・読み出し制御を効率的に行うためには、バッファ1−1〜n内に格納した各パケットを、各バッファ1−1〜nにおける書き込み位置に基づく連結リスト構造として管理すればよい。例えば、各バッファ1−1〜n内の書き込み位置を指し示すポインタを保持するポインタスタックを設け、バッファ制御回路3は、受信パケット10の書き込み時にこのポインタスタックからポインタをPOPして取得する。そして、送信キュー4−1〜n内に登録された各パケット間の連結を、各パケットを指し示すポインタを用いた連結リストを用いて管理する。
次に、本発明の実施の形態について、具体的に説明する。
〔第1の実施の形態〕
図2は、本発明の第1の実施の形態に係るネットワークスイッチ装置の接続例を示す図である。
図2に示すように、ネットワークスイッチ装置100には、複数の通信ポートが設けられており、各通信ポートにネットワーク21〜24が接続されている。各ネットワーク21〜24には、例えば端末装置21a、22a、23aおよび24aが接続されている。
ネットワークスイッチ装置100は、接続されたネットワーク21〜24の間におけるパケットの転送を行う。例えば、端末装置21aから端末装置22a宛てに送信されたパケットは、ネットワーク21を通じてネットワークスイッチ装置100に入力され、このネットワークスイッチ装置100の処理によってネットワーク22に転送される。これにより、転送されたパケットが、ネットワーク22を通じて端末装置22aにおいて受信される。
図3は、ネットワークスイッチ装置100の内部構成を示すブロック図である。
図3に示すように、ネットワークスイッチ装置100は、受信インタフェース111〜114、受信バッファ121〜124、送信インタフェース131〜134、送信バッファ141〜144、データ転送回路150、ヘッダ解析回路160、ポインタスタック170、使用量監視回路180、およびバッファ制御回路190を具備する。
受信インタフェース111〜114は、外部のネットワークからのデータを受信する通信インタフェースであり、それぞれネットワーク21〜24に接続されている。受信インタフェース111〜114は、各ネットワーク21〜24を通じて受信したパケットを、受信バッファ121〜124に対して供給する。
受信バッファ121〜124は、それぞれ受信インタフェース111〜114から供給されたパケットを一時的に格納するためのバッファメモリである。受信バッファ121〜124は、格納したパケットのヘッダ情報をヘッダ解析回路160に出力するとともに、データ転送回路150に対してパケットの出力要求を行い、データ転送回路150からの応答に応じて、格納したパケットをデータ転送回路150に出力する。
一方、送信インタフェース131〜134は、外部のネットワークに対してデータを送信する通信インタフェースであり、それぞれネットワーク21〜24に接続されている。送信インタフェース131〜134は、それぞれ送信バッファ141〜144から供給されたパケットを、ネットワーク21〜24に対して送信する。
送信バッファ141〜144は、データ転送回路150から供給されたパケットを一時的に格納するためのバッファメモリである。送信バッファ141〜144は、供給されたパケットを、データ転送回路150によって指定されたアドレスに書き込む。そして、対応する送信インタフェース131〜134からの送信要求に応じて、書き込まれたパケットを、バッファ制御回路190によるアドレス指定に基づいて読み出し、それぞれ送信インタフェース131〜134に対して出力する。
各送信バッファ141〜144は、パケットの書き込みおよび読み出しの各動作が行われるたびに、これらの動作が行われたことを使用量監視回路180に対して通知する。これにより、使用量監視回路180において、各送信バッファ141〜144の使用量を監視することが可能となる。
また、送信バッファ141〜144内には、バッファ制御回路190による制御の下で、それぞれ1つずつの送信キューが形成される。そして、書き込まれたパケットのそれぞれに対して付属セル領域が設けられ、付属セル領域には、そのパケットが登録された送信キューにおける先行パケットおよび後続パケットの書き込み位置を指し示すポインタが、バッファ制御回路190によって書き込まれる。これにより、各送信キュー内に登録されたパケット間の連結が管理される。
データ転送回路150は、各受信バッファ121〜124からパケットを受け取り、宛先に対応する送信バッファに対して転送する。データ転送回路150は、各受信バッファ121〜124から出力要求を受けると、そのパケットの宛先を示す情報をヘッダ解析回路160から取得する。また、使用量監視回路180からの情報に基づき、宛先に対応する送信バッファに対する書き込みが可能か否かを判断し、可能な場合には、ポインタスタック170からポインタを取得して、そのポインタに基づく書き込みアドレスを指定し、パケットを転送する。
ヘッダ解析回路160は、受信バッファ121〜124に格納されたパケットのヘッダ情報を取得し、そのパケットの宛先として指定された送信ポートを、データ転送回路150およびバッファ制御回路190に対して通知する。また、取得したヘッダ情報からそのパケットの優先度クラスを判定して、バッファ制御回路190に対して通知する。ヘッダ解析回路160は、例えば、宛先の送信ポートと優先度クラスとの対応テーブルを具備して、この対応テーブルを参照して、ヘッダ情報に示された宛先から優先度クラスを判断する。
ポインタスタック170は、送信バッファ141〜144におけるパケットの書き込みアドレスを指し示すポインタが格納されている。ポインタスタック170は、データ転送回路150からの要求に応じて、ポインタをPOPし、データ転送回路150およびバッファ制御回路190に出力する。また、出力したポインタに指し示される送信バッファ141〜144内の領域が、パケットの読み出しや廃棄により開放された場合は、そのポインタがバッファ制御回路190から供給され、ポインタスタック170にPUSHされて返却される。従って、ポインタスタック170内に存在するポインタは、必ず送信バッファ141〜144内の空き領域を指し示していることになる。
使用量監視回路180は、各送信バッファ141〜144において空き領域があるか否かを示す情報を、データ転送回路150およびバッファ制御回路190に対して通知する。使用量監視回路180は、各送信バッファ141〜144から、パケットの書き込みおよび読み出しの各動作が行われたことの通知を受ける。また、バッファ制御回路190から、送信バッファ141〜144内に格納されたパケットが廃棄され、バッファ内の領域が開放されたことの通知を受ける。そして、これらの通知に基づいて各送信バッファ141〜144内のバッファ使用量をカウントし、カウント値があらかじめ設定された値に達すると、その送信バッファに空き領域がなくなったと判断する。
この使用量監視回路180は、データ転送回路150およびバッファ制御回路190に対して、各送信バッファ141〜144に空き領域があるか否かを示す情報を、例えば定期的に、あるいは各通知先からの要求に応じて更新する。
バッファ制御回路190は、送信バッファ141〜144におけるパケットの書き込みおよび読み出しの動作を制御する。また、バッファ制御回路190は、送信バッファ141〜144内においてそれぞれ1つずつの送信キューを形成し、書き込まれたパケットを、送信キューに対して優先度クラスに応じて登録する。各送信キューに割り当てられるバッファ容量は有限とされる。また、各送信キューは、登録されたパケットとその前後のパケットとを連結させた双方向連結リスト構造を用いて管理される。
このために、バッファ制御回路190は、各送信バッファ141〜144内にパケットが書き込まれる際に、このパケットの書き込みアドレスを指し示すポインタを、ポインタスタック170から取得する。そして、送信バッファ141〜144内に、各パケットのそれぞれに対応する付属セル領域を設け、送信キュー内においてこのパケットに先行するパケットと後続のパケットとをそれぞれ指し示すポインタを、付属セル領域に書き込む。
また、各送信キューに対しては、高い優先度クラスに属するパケットが常に上位に送信予約される。また、同じ優先度クラスに属するパケットについては、受信した順に送信予約される。このような優先度クラスに応じた登録管理を行うために、バッファ制御回路190は、後述するように、登録されたパケットのうち、各優先度クラスごとにその先頭パケットと末尾パケットとをそれぞれ指し示すポインタを保持するためのレジスタ群を具備する。そして、パケットの書き込みや読み出しを行うたびに、このレジスタ群の保持するポインタを更新する。
なお、本実施の形態では、送信バッファ141〜144は1つの共有メモリ内に設けられ、各バッファの領域が論理的に分離されて使用されるものとする。従って、ポインタスタック170は、共有メモリ内の全領域における書き込みアドレスに対応するポインタを一元的に保持しており、これによって共有メモリを効率的に使用することが可能となっている。ただし、各送信ポート用のバッファ領域の容量(すなわち送信バッファ141〜144としてそれぞれ使用される容量)は一定となるように決められており、これらの各容量が使用量監視回路180によって監視されるようになっている。
このようなネットワークスイッチ装置100により、優先度クラスに応じてパケットの転送順や廃棄の可否を判断することが可能なスイッチング処理が行われる。例えば、ネットワーク21からネットワーク22に転送すべきパケットを受信した場合には、受信インタフェース111において受信されたパケットは、受信バッファ121に一旦格納される。このパケットのヘッダ情報はヘッダ解析回路160に通知され、ヘッダ解析回路160は、パケットの宛先から優先度クラスを判断し、バッファ制御回路190に宛先とともに通知する。
データ転送回路150は、受信バッファ121からパケットを受け取ると、ヘッダ解析回路160から通知された宛先に対応する送信バッファ142に対する転送処理を開始する。データ転送回路150は、使用量監視回路180からの情報に基づいて、送信バッファ142に対する書き込みが可能と判断すると、ポインタスタック170からポインタをPOPして取得し、取得したポインタの指し示すアドレスにパケットを転送する。
また、バッファ制御回路190は、通知された宛先に対応する送信バッファ142内の送信キューにおいて、通知された優先度クラスのパケットの登録が可能か否かを判断する。使用量監視回路180からの使用量通知に基づき、送信キューにおいて格納可能な領域に余裕がある場合は、すべてのパケットが登録可能であるが、空き領域がない場合には、ヘッダ解析回路160から通知された優先度クラスに応じて、登録の可否を判断する。
登録しようとしているパケットより下位の優先度クラスのパケットが、送信バッファ142内の送信キューにすでに登録されている場合、バッファ制御回路190は、新たなパケットを登録可能と判断する。この場合、送信キューの最後尾に登録されたパケットを廃棄する処理を行うとともに、パケットを廃棄したことを使用量監視回路180に通知する。これにより、使用量監視回路180は、データ転送回路150に対して、送信バッファ142に空き領域が発生したことを通知するので、データ転送回路150は、送信バッファ142に対してパケットを転送する。
一方、登録しようとしているパケットと同等以下の優先度クラスのパケットが、送信バッファ142内の送信キューに登録されていない場合、バッファ制御回路190は、新たなパケットの登録が不可能と判断する。この場合、送信バッファ142内の領域が開放されないので、使用量監視回路180は、データ転送回路150に対して、パケットの書き込みが不可能である旨を通知し続ける。これにより、データ転送回路150は、パケットの転送が不可能であると判断して、受信バッファ121から受け取ったパケットを廃棄する。
送信バッファ142に書き込まれたパケットは、バッファ制御回路190の制御の下で、送信キューへの登録が連結リスト構造として管理される。そして、送信キューの登録順に従って読み出され、送信インタフェース132からネットワーク22に送出される。
ここで、図4は、送信バッファ内に格納されたデータの構造を模式的に示す図である。
図4では、送信バッファ141〜144におけるパケットを、各バッファ内に形成される送信キューに登録された順に示している。なお、図4では、送信キュー内で連結された各パケットが連続して配置されているが、送信バッファ141〜144上の実際の物理的な書き込み位置は、この通りにはなるとは限らない。
上述したように、送信バッファ141〜144内では、各パケットが格納されるパケット格納領域140aとともに、付属セル領域140bがパケットごとに設けられる。図4に示すように、付属セル領域140bには、送信キュー内の直前のパケットを指し示すポインタ(以下、直前ポインタと呼称する)と、後続のパケットを指し示すポインタ(以下、後続ポインタと呼称する)とが格納される。
付属セル領域140bの各ポインタは、バッファ制御回路190によって書き込まれる。直前ポインタは、受信パケットが送信バッファ141〜144に転送された際に書き込まれ、後続ポインタは、送信キュー内で後続のパケットが登録された際に書き込まれる。このような各ポインタを利用することにより、送信キュー内のパケットを前後の双方向に連結された双方向連結リスト構造として管理することが可能となる。
例えば、パケットを読み出したときには、そのパケットの付属セル領域140bの後続ポインタを参照することにより、次に送信すべきパケットの書き込み位置を知ることができる。また、送信バッファの空き領域がなくなり、優先度クラスの判定により送信キュー内のパケットを廃棄することになった場合は、送信キュー内の最後尾のパケットが廃棄される。このとき、廃棄するパケットの付属セル領域140bの直前ポインタを参照することにより、廃棄後に最後尾となるパケットの書き込み位置を知ることができる。
次に、付属セル領域140bに格納された各ポインタを利用したバッファ制御回路190の制御について詳しく説明する。なお、以下の説明では、例として、優先度が高い順に“高優先度”“中優先度”“低優先度”の3段階の優先度クラスを取り扱うことが可能であるとする。
図5は、バッファ制御回路190に設けられるレジスタ群と、送信キューとの関係を示す図である。
上述したように、各送信バッファ141〜144では、バッファ制御回路190の制御の下で、1つずつの送信キューが形成される。そして、各送信キューでは、優先度クラスが高いパケットほど先に送信予約されるように、登録が行われる。また、同じ優先度クラスのパケットでは、受信した順に登録される。従って、送信キューには、図5に示すように、高優先度クラスのパケットPh(1)〜Ph(s)が連結された後に、中優先度クラスのパケットPm(1)〜Pm(t)が連結され、さらに低優先度クラスのパケットPl(1)〜Pl(u)が連結される(ただし、s,t,uはそれぞれ1以上の整数である)。
このような構造の送信キューが形成されることにより、各送信バッファ141〜144では、優先度クラスごとに割り当てられるバッファ容量が特定されないため、受信したパケットはその優先度クラスに関係なくバッファの空き領域に格納される。従って、特定の送信ポートに輻輳が発生した場合に、対応する送信バッファに空き領域が発生することがなくなり、メモリの使用効率が高められる。
ところで、上記の構造の送信キューを管理するために、バッファ制御回路190は、各優先度クラスのパケットのうち先頭のものと末尾のものの書き込み位置を認識するためのレジスタ群を具備する。図5のように3段階の優先度クラスの取り扱いが可能な場合は、高優先度クラスに対しては、この優先度クラスのパケットのうち、先頭のパケットを指し示すポインタ、および末尾のパケットを指し示すポインタをそれぞれ保持する高優先先頭ポインタレジスタ191aおよび高優先末尾ポインタレジスタ192aが設けられる。同様に、中優先度クラスに対しては、中優先先頭ポインタレジスタ191bおよび中優先末尾ポインタレジスタ192b、低優先度クラスに対しては、低優先先頭ポインタレジスタ191cおよび低優先末尾ポインタレジスタ192cが、それぞれ設けられる。
各優先度クラスの末尾ポインタレジスタは、該当する優先度を持つ新たなパケットが登録される際に更新され、先頭ポインタレジスタは、先頭のパケットが送信バッファから読み出される際に更新される。
なお、送信キュー内では、同じ優先度クラスのパケット間は、付属セル領域140bに書き込まれたポインタにより双方向が連結される。しかし、異なる優先度クラスのパケット間はこのような連結が行われない。従って、同じ優先度クラスのうち先頭のパケットの付属セル領域140bには、直前ポインタは書き込まれず、直前のパケットがないことを示す情報が書き込まれる。また、最後尾のパケットの付属セル領域140bには、後続ポインタは書き込まれず、後続のパケットがないことを示す情報が書き込まれる。また、異なる優先度クラス間のパケットの連結は、上記のレジスタ群に格納されたポインタにより管理される。
次に、これらのレジスタ群およびパケットの付属セル領域140bに格納されたポインタを用いたバッファ制御回路190の処理を、フローチャートを用いて説明する。なお、以下の図6および図7に示すフローチャートの説明では、例として、ネットワーク21からネットワーク22に対して転送すべきパケットを受信した場合を想定する。また、図6および図7の説明では、必要に応じて、ネットワークスイッチ装置100内の他の要素における処理についての説明も加える。
図6は、パケットを送信バッファに書き込む場合のバッファ制御回路190における処理の流れを示すフローチャートである。以下、図6に示す処理をステップ番号に沿って説明する。
まず、受信インタフェース111において受信されたパケットが、受信バッファ121に一旦格納される。そして、格納されたパケットがデータ転送回路150に引き渡されるとともに、このパケットのヘッダ情報が、ヘッダ解析回路160に通知される。ヘッダ解析回路160は、パケットの宛先から優先度クラスを判断し、バッファ制御回路190に宛先とともに通知する。また、宛先はデータ転送回路150に対しても通知される。
[ステップS601]バッファ制御回路190は、ヘッダ解析回路160より、新たに受信されたパケットの宛先と優先度クラスの通知を受ける。
[ステップS602]使用量監視回路180からの情報を参照して、宛先に対応する送信バッファ142に空き領域があるか否かを判断する。空き領域がある場合は、ステップS603に進み、ない場合はステップS609に進む。
ここで、受信バッファ121からパケットを受け取ったデータ転送回路150は、ヘッダ解析回路160からの通知に基づいて、このパケットの宛先を判断する。そして、同様に、使用量監視回路180からの情報を参照して、宛先に対応する送信バッファ142に空き領域があるか否かを判断し、この判断に応じてパケットを転送するか否かを決定する。
[ステップS603]送信バッファ142に空き領域がある場合は、ポインタスタック170からPOPされたポインタが、データ転送回路150およびバッファ制御回路190に供給される。データ転送回路150は、送信バッファ142にパケットを転送し、取得したポインタの指し示すアドレスに書き込む。
[ステップS604]バッファ制御回路190は、送信バッファ142に対応する各優先度クラスの先頭ポインタレジスタのうち、受信パケットの優先度クラスの先頭ポインタレジスタを参照し、このレジスタにポインタが格納されているか否かを判断する。格納されていない場合は、送信キューに同じ優先度クラスのパケットが登録されていないと判断して、ステップS605に進む。また、格納されている場合は、送信キューに同じ優先度クラスのパケットがすでに登録されていると判断して、ステップS606に進む。
[ステップS605]受信パケットの優先度クラスに対応する先頭ポインタレジスタおよび末尾ポインタレジスタに、ポインタスタック170から取得したポインタ、すなわち受信パケットの格納位置を指し示すポインタを格納する。例えば、受信パケットが中優先度クラスである場合は、取得したポインタを中優先先頭ポインタレジスタ191bおよび中優先末尾ポインタレジスタ192bに格納する。また、このとき、受信パケットの付属セル領域140bには、直前および後続のパケットがないことを示す情報を書き込む。これにより、受信パケットが送信キューに登録され、パケットの書き込み処理が終了する。
[ステップS606]受信パケットと同じ優先度クラスのパケットが送信キューにすでに登録されている場合は、まず、該当する優先度クラスの末尾ポインタレジスタを参照する。例えば、受信パケットが中優先度クラスの場合は、中優先末尾ポインタレジスタ192bを参照する。そして、このレジスタに格納されているポインタが指し示すパケットの付属セル領域140bに対し、後続ポインタを、受信パケットを指し示すポインタで更新する。
[ステップS607]次に、受信パケットの付属セル領域140bに対して、直前ポインタとして末尾ポインタレジスタに格納されているポインタを格納する。このとき、付属セル領域140bには、後続のパケットがないことを示す情報も書き込む。
[ステップS608]さらに、末尾ポインタレジスタを、受信パケットを指し示すポインタで更新する。これにより、受信パケットが、送信キュー上の同じ優先度クラスのパケットのうち、最後に登録されていたパケットの次の位置に登録され、パケットの書き込み処理が終了する。
[ステップS609]一方、宛先に対応する送信バッファ142の空き容量がない場合には、まず、受信パケットの優先度クラスより下位クラスに対応する先頭ポインタレジスタを参照して、いずれかのレジスタにポインタが格納されているか否かを判断する。格納されている場合は、より下位クラスのパケットが送信キューにすでに登録されていると判断され、ステップS610に進む。
また、格納されていない場合は、何も処理が行われないままパケットの書き込み処理が終了される。この場合、受信パケットは、送信キュー中に登録されているパケットの中で最下位あるいはそれよりさらに下位の優先度クラスに属していることになり、廃棄すべきパケットと判断される。使用量監視回路180は、送信バッファ142の空き領域がないことをデータ転送回路150に通知し続ける。これにより、データ転送回路150は、このパケットの転送を行わないまま、受信バッファ121〜124のいずれかから次のパケットを受け取って、転送処理を開始するので、前のパケットは廃棄される。
[ステップS610]受信パケットより下位クラスのパケットが送信キューにすでに登録されている場合には、まず、ポインタが格納されている末尾ポインタレジスタのうち、最下位クラスのレジスタに格納されているポインタを、ポインタスタック170にPUSHして返却する。例えば、図5のような送信キューが形成されていた場合には、低優先末尾ポインタレジスタ192cに格納されているポインタを返却する。これにより、送信バッファ142の領域が、1パケット分だけ開放される。
[ステップS611]ステップS610で返却したポインタで指し示されるパケットの付属セル領域140bから直前ポインタを抽出し、この直前ポインタで、末尾ポインタレジスタを更新する。また、このとき、抽出した直前ポインタに指し示されるパケットの付属セル領域140bに対して、後続ポインタを消去して、後続のパケットがないことを示す情報を書き込む。これにより、送信キューの最後尾のパケットの登録が抹消される。
なお、付属セル領域に直前のパケットがないことを示す情報が書き込まれていた場合には、対応する優先度クラスの末尾ポインタレジスタおよび先頭ポインタレジスタの双方のポインタを消去する。
[ステップS612]送信バッファ142の領域が開放されたことを、使用量監視回路180に通知し、ステップS603に進む。これにより、使用量監視回路180は、送信バッファ142に空き領域が発生したと判断して、このことをデータ転送回路150に通知する。データ転送回路150は、この通知を受けるとともに、ステップS603に対応する処理によりポインタスタック170からポインタを取得し、パケットを送信バッファ142に転送して、取得したポインタに指し示されるアドレスに書き込む。
以上の処理により、受信パケットは、送信キューにすでに登録されていた同じ優先度クラスのパケットのうち、最後に登録されたパケットの次に送信予約される(ステップS606〜S608に対応)。
また、受信パケットと同じ優先度クラスのパケットが送信キュー内に登録されていない場合には、送信キュー内でこの優先度クラスに該当する位置に受信パケットが登録される(ステップS605に対応)。具体的には、受信パケットより上位クラスのパケットが送信キューにすでに登録されていた場合には、登録されている中で最も近い上位クラスのパケットのうち、最後に登録されたパケットの次に受信パケットが登録される。例えば、送信キューには高優先度クラスと低優先度クラスのパケットのみが登録されている送信キューに、中優先度クラスの受信パケットを登録する場合には、それより上位である高優先度クラスの最終パケットの次に、受信パケットが挿入される。また、受信パケットより上位クラスのパケットが送信キューに登録されていない場合には、受信パケットが送信キューの先頭に登録される。
さらに、各送信バッファ141〜144の容量は有限であるため、例えばネットワーク22宛てにパケットが集中して送信バッファ142が埋め尽くされた場合には、パケットを廃棄する必要が生じる。このとき、送信キューに登録されているもののうち、最も優先度クラスが低く、かつ最後に登録されたパケットを廃棄する(ステップS610〜S612に対応)。また、受信パケットが属する優先度クラスより下位クラスのパケットが送信キューに登録されていない場合は、受信パケット自身が廃棄される。
従って、送信キューでは、優先度クラスの高いパケットほど先に送信されるように、パケットが登録される。また、優先度クラスごとに割り当てられるバッファ容量が特定されないため、送信バッファに空き領域がある場合には、優先度クラスに関係なく受信パケットが空き領域に格納される。逆に、空き領域がない場合には、優先度クラスが最も低いパケットが常に廃棄され、高い優先度クラスのパケットが確実に送信予約される。
このため、特定の送信キューにおいて輻輳が発生した場合でも、優先度クラスが高いパケットほどより確実に送信が行われるとともに、送信バッファに空き領域が発生することがなくなる。従って、送信バッファ141〜144の使用効率が高められ、結果的に各バッファの容量を小さくすることができるので、部品コストが低減される。
また、送信キューに登録したパケット間の連結を、パケットの書き込み位置を指し示すポインタを用いた双方向連結リスト構造として管理することにより、送信キューへのパケットの登録処理だけでなく、一旦登録された低優先度クラスのパケットを廃棄する際の処理も効率的に実行することが可能となる。
次に、図7は、パケットを送信バッファから読み出す場合のバッファ制御回路190における処理の流れを示すフローチャートである。以下、図7に示す処理をステップ番号に沿って説明する。
[ステップS701]バッファ制御回路190は、ポインタが格納されている先頭ポインタレジスタのうち、最上位クラスのレジスタを参照する。そして、このレジスタに格納されているポインタが指し示すパケットを読み出し、対応する送信インタフェース132に転送する。これにより、読み出されたパケットがネットワーク22に送出される。
[ステップS702]ステップS701で参照した先頭ポインタレジスタのポインタを、ポインタスタック170にPUSHして返却する。
[ステップS703]送信バッファ142の領域が開放されたことを、使用量監視回路180に通知する。
[ステップS704]返却したポインタが指し示すパケットの付属セル領域140bの後続ポインタで、対応する優先度クラスの先頭ポインタレジスタを更新する。ここで、参照した付属セル領域140bに、後続のパケットがないことを示す情報が書き込まれていた場合は、この情報を、対応する優先度クラスの先頭ポインタレジスタに書き込む。これにより、次回の読み出しでは、下位クラスのパケットが読み出される。
以上の処理により、パケットは送信キューから順次読み出され、宛先の端末が接続されたネットワークに送出される。バッファ制御回路190に設けられたレジスタ群に保持されたポインタと、付属セル領域140bに格納されたポインタとを用いることにより、送信キューに送信予約された順に、パケットを効率よく読み出すことができる。また、読み出したパケットを指し示していたポインタをポインタスタック170に返却することにより、次の受信パケットを格納可能な空き領域が開放され、送信バッファを効率的に利用することができる。
〔第2の実施の形態〕
次に、本発明の第2の実施の形態例について説明する。第2の実施の形態では、ネットワークスイッチ装置全体の構成は、図3と同様である。ただし、第1の実施の形態と異なる点は、送信バッファ141〜144内に格納するデータがパケットの内容のみで、付属データ領域が形成されないこと、および、バッファ制御回路190に、各送信キューに登録されたすべてのパケットのポインタを管理するポインタメモリが優先度クラスごとに設けられ、これらのポインタメモリを用いて送信キューに対するパケットの登録、廃棄、読み出しの処理が行われることである。
図8は、バッファ制御回路190に設けられるポインタメモリと、送信キューとの関係を示す図である。
本実施の形態でも、上記の第1の実施の形態の場合と同様に、各送信バッファ141〜144には1つずつの送信キューが形成される。そして、各送信キューでは、優先度クラスが高いパケットほど先に送信予約されるように、登録が行われる。また、同じ優先度クラスのパケットでは、受信した順に登録される。従って、送信キューには、図8に示すように、高優先度クラスのパケットPh(1)〜Ph(s)が連結された後に、中優先度クラスのパケットPm(1)〜Pm(t)が連結され、さらに低優先度クラスのパケットPl(1)〜Pl(u)が連結される(ただし、s,t,uはそれぞれ1以上の整数である)。
また、本実施の形態では、上記の構造の送信キューを管理するために、バッファ制御回路190は、送信キュー内に登録されたすべてのパケットを指し示すポインタを保持するポインタメモリを、優先度クラスごとに具備する。図5のように3段階の優先度クラスの取り扱いが可能な場合は、高優先度、中優先度、低優先度の各クラスに対して、高優先ポインタメモリ193a、中優先ポインタメモリ193b、低優先ポインタメモリ193cがそれぞれ設けられる。
各ポインタメモリには、バッファ制御回路190がポインタスタック170から取得したポインタが格納される。このとき、各ポインタメモリは、ポインタを取得した順にFIFO(First In First Out)方式で保持することができるとともに、最後尾のポインタを順次削除することが可能となっている。
以下、これらのポインタメモリに格納されたポインタを用いたバッファ制御回路190の処理を、フローチャートを用いて説明する。なお、以下の図9および図10に示すフローチャートの説明では、例として、ネットワーク21からネットワーク22に対して転送すべきパケットを受信した場合を想定する。また、図9および図10の説明では、必要に応じて、ネットワークスイッチ装置100内の他の要素における処理についての説明も加える。
図9は、パケットを送信バッファに書き込む場合のバッファ制御回路190における処理の流れを示すフローチャートである。
第1の実施の形態の場合と同様に、受信インタフェース111において受信されたパケットは、受信バッファ121に一旦格納される。そして、格納されたパケットがデータ転送回路150に引き渡されるとともに、このパケットのヘッダ情報が、ヘッダ解析回路160に通知される。ヘッダ解析回路160は、パケットの宛先から優先度クラスを判断し、バッファ制御回路190に宛先とともに通知する。また、宛先はデータ転送回路150に対しても通知される。
[ステップS901]バッファ制御回路190は、ヘッダ解析回路160より、新たに受信されたパケットの宛先と優先度クラスの通知を受ける。
[ステップS902]使用量監視回路180からの情報を参照して、宛先に対応する送信バッファ142に空き領域があるか否かを判断する。空き領域がある場合は、ステップS903に進み、ない場合はステップS905に進む。
ここで、受信バッファ121からパケットを受け取ったデータ転送回路150は、ヘッダ解析回路160からの通知に基づいて、このパケットの宛先を判断する。そして、同様に、使用量監視回路180からの情報を参照して、宛先に対応する送信バッファ142に空き領域があるか否かを判断し、この判断に応じてパケットを転送するか否かを決定する。
[ステップS903]送信バッファ142に空き領域がある場合は、ポインタスタック170からPOPされたポインタが、データ転送回路150およびバッファ制御回路190に供給される。データ転送回路150は、送信バッファ142にパケットを転送し、取得したポインタの指し示すアドレスに書き込む。
[ステップS904]バッファ制御回路190は、送信バッファ142に対応する各優先度クラスのポインタメモリのうち、受信パケットの優先度クラスに対応するポインタメモリの最後尾に、ステップS903で取得したポインタを格納する。これにより、受信パケットが送信キューに登録される。
[ステップS905] また、宛先に対応する送信バッファ142の空き容量がない場合には、まず、受信パケットの優先度クラスより下位クラスに対応するポインタメモリを参照して、いずれかのポインタメモリにポインタが格納されているか否かを判断する。格納されている場合は、より下位クラスのパケットが送信キューにすでに登録されていると判断され、ステップS906に進む。
また、格納されていない場合は、何も処理が行われないままパケットの書き込み処理が終了される。この場合、受信パケットは、送信キュー中に登録されているパケットの中で最下位あるいはそれよりさらに下位の優先度クラスに属していることになり、廃棄すべきパケットと判断される。使用量監視回路180は、送信バッファ142の空き領域がないことをデータ転送回路150に通知し続け、この通知に基づいて、データ転送回路150は、受信バッファ122から受け取ったパケットを廃棄する。
[ステップS906]受信パケットより下位クラスのパケットが送信キューにすでに登録されている場合には、ポインタが登録されているポインタメモリのうち、最下位クラスに対応するポインタメモリを参照し、このポインタメモリの最後尾のポインタをポインタスタック170に返却するとともに、ポインタメモリから消去する。これにより、送信バッファ142の領域が、1パケット分だけ開放される。
[ステップS907]送信バッファ142の領域が開放されたことを、使用量監視回路180に通知し、ステップS903に進む。これにより、使用量監視回路180は、送信バッファ142に空き領域が発生したと判断して、このことをデータ転送回路150に通知する。データ転送回路150は、この通知を受けるとともに、ステップS903に対応する処理によりポインタスタック170からポインタを取得し、パケットを送信バッファ142に転送して、取得したポインタに指し示されるアドレスに書き込む。
以上の処理により、上記の第1の実施の形態と同様な送信キューが形成される。すなわち、受信パケットは、ステップS903およびS904の処理により、送信キューにすでに登録されていた同じ優先度クラスのパケットのうち、最後に登録されたパケットの次に送信予約される。また、受信パケットと同じ優先度クラスのパケットが送信キュー内に登録されていない場合には、送信キュー内でこの優先度クラスに該当する位置に受信パケットが登録される。
また、例えばネットワーク22宛てにパケットが集中して送信バッファ142が埋め尽くされた場合には、ステップS906〜S907の処理により、送信キューに登録されているもののうち、最も優先度クラスが低く、かつ最後に登録されたパケットが廃棄される。また、受信パケットが属する優先度クラスより下位クラスのパケットが送信キューに登録されていない場合は、受信パケット自身が廃棄される。
図10は、パケットを送信バッファから読み出す場合のバッファ制御回路190における処理の流れを示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS1001]バッファ制御回路190は、ポインタが格納されているポインタメモリのうち、最上位クラスのポインタメモリを参照して、格納されているポインタを取り出す。このとき、取り出したポインタはポインタメモリから消去される。
[ステップS1002]取り出したポインタが指し示すパケットを読み出し、対応する送信インタフェース132に転送する。これにより、読み出されたパケットがネットワーク22に送出される。
[ステップS1003]取り出したポインタを、ポインタスタック170にPUSHして返却する。
[ステップS1004]送信バッファ142の領域が開放されたことを、使用量監視回路180に通知する。
以上の処理により、パケットは送信キューから順次読み出され、宛先の端末が接続されたネットワークに送出される。バッファ制御回路190に設けられたポインタメモリに保持されたポインタを用いることにより、送信キューに送信予約された順に、パケットを効率よく読み出すことができる。また、読み出したパケットを指し示していたポインタをポインタスタック170に返却することにより、次の受信パケットを格納可能な空き領域が開放され、送信バッファを効率的に利用することができる。
このように、第2の実施の形態では、第1の実施の形態と比較して、ポインタを管理する処理が大幅に単純化される。しかし、第2の実施の形態の場合、各ポインタメモリは、FIFO方式によるデータの格納とともに、最後尾のデータを順次消去する機能を持つ必要があるため、書き込み・読み出しの制御が複雑となり、高価な制御回路が必要となる。従って、第2の実施の形態では、部品コストが高くなるとともに、設置面積も大きくなる。
なお、以上の第1および第2の実施の形態例では、送信ポートごとの送信バッファ141〜144の領域を共有メモリ内に設け、この共有メモリへの書き込み位置を1つのポインタスタック170で一元的に管理する構成とした。しかし、各送信バッファ141〜144の領域が物理的に分離された構成としてもよい。この場合は、送信バッファ141〜144ごとにポインタスタック170を設けて、書き込みおよび読み出しのアドレス管理を行えばよい。また、この場合には、使用量監視回路180は、各ポインタスタックに未使用のポインタが残っているか否かにより、各送信バッファ141〜144に空き領域があるか否かを判断することも可能である。
〔第3の実施の形態〕
次に、本発明の第3の実施の形態例について説明する。第3の実施の形態では、ネットワークスイッチ装置全体の構成は、図3と同様である。ただし、第1および第2の実施の形態と異なる点は、各送信バッファ141〜144内に複数の送信キューが形成されることである。
図11は、各送信バッファに形成される送信キューの例を示す図である。なお、以下の説明では、優先度の高い方からA〜Hの8段階の優先度クラスを取り扱うことが可能であるとする。
図11に示すように、各送信バッファ141〜144内では、それぞれ3つずつの送信キューが形成される。また、各送信キュー内には、1つ以上の隣接する優先度クラスのパケットが登録される。図11の例では、第1の送信キューには優先度クラス“A”“B”“C”のパケットを、第2の送信キューには優先度クラス“D”“E”のパケットを、第3の送信キューには優先度クラス“F”“G”“H”のパケットをそれぞれ登録可能となっている。そして、各送信キューは最大容量があらかじめ決められている。
なお、図11の例では、送信バッファ141においては、第1の送信キューQ11には優先度“A”“B”“C”のパケットが、第2の送信キューQ12には優先度“D”“E”パケットが、第3の送信キューQ13には優先度“F”“G”“H”のパケットがそれぞれすでに登録された状態を示している。また、送信バッファ144においては、第1の送信キューQ41には優先度“A”“C”のパケットのみが、第2の送信キューQ42には優先度“D”“E”パケットが、第3の送信キューQ43には優先度“F”のパケットのみがそれぞれすでに登録された状態を示している。
このような送信キューへの登録を管理するために、使用量監視回路180は、各送信バッファ141〜144におけるバッファ使用量を、送信キューごとにカウントする。また、送信キュー内のパケット間の連結の管理は、上記の第1および第2の実施の形態のいずれも利用可能である。そして、バッファ制御回路190は、パケットの読み出し時に、割り当てられた優先度クラスの高い送信キューから順に、パケットが登録されているか否かを判断して、登録されている送信キューからパケットを順次読み出す。
なお、このようなネットワークスイッチ装置では、1つの送信キューに登録可能な1つ以上の優先度クラスの単位で、登録可能なパケット数が制限されることから、輻輳の発生時に、下位クラスの送信キューには空き領域があるにもかかわらず、上位クラスのパケットが廃棄されてしまう可能性があり得る。このような事態を回避するためには、上位クラスのパケットが登録される送信キューほど、割り当てるバッファ容量を大きくすることが望ましい。
以上説明したように、本発明のネットワークスイッチ装置では、宛先のネットワークに対応するバッファにそれぞれ1つの送信キューが形成され、各送信キューでは、優先度クラスが高く、かつ先に受信されたパケットほど先に送信されるようにパケットが登録される。このとき、優先度クラスごとに割り当てられるバッファ容量が特定されないため、受信パケットはその優先度クラスに関係なくバッファの空き領域に格納される。従って、特定の送信キューにおいて輻輳が発生した場合に、優先度クラスが高いパケットほどより確実に送信が行われるとともに、バッファ内の使用効率が高められ、バッファの容量を抑制して部品コストを低減することができる。
また、例えば、バッファ制御回路によって、各送信キューに登録したパケット間の連結を、各パケットの各バッファにおける書き込み位置に基づく連結リスト構造として管理することにより、各送信キューへの登録時や送信キューからの出力時のアドレス管理が効率化される。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
Claims (13)
- 複数のネットワーク間でパケットの転送を行うネットワークスイッチ装置において、
転送先の前記ネットワークごとに設けられた複数のバッファと、
受信パケットが入力されると、前記受信パケットの優先度クラスを判定する優先度判定回路と、
前記各バッファにおいて、複数の前記優先度クラスの前記パケットを登録可能な送信キューを形成し、宛先に対応する前記バッファに対して前記受信パケットを書き込むとともに、前記優先度判定回路の判定結果に基づいて、対応する前記送信キュー内に登録された同じ前記優先度クラスの前記パケットのうち、最後に登録された前記パケットの次に送信予約されるように前記受信パケットを登録するバッファ制御回路と、
を有することを特徴とするネットワークスイッチ装置。 - 前記各バッファの使用量があらかじめ決められたしきい値に達しているか否かを判定する使用量検知回路をさらに有し、
前記バッファ制御回路は、前記受信パケットを前記送信キューに登録する際に、前記使用量検知回路によって、対応する前記バッファの使用量が前記しきい値に達していると判定された場合に、前記送信キュー内に登録されている前記パケットのうち、前記優先度クラスが最も低く、かつ最後に登録された前記パケットを廃棄することを特徴とする請求の範囲第1項記載のネットワークスイッチ装置。 - 前記バッファ制御回路は、前記受信パケットを前記送信キューに登録する際に、対応する前記バッファの使用量が前記しきい値を超えると判定された場合に、前記受信パケットが、登録先の前記送信キュー内に登録された前記パケットの前記優先度クラスのうち、最も低い前記優先度クラスまたはそれより下位クラスに属しているときは、前記受信パケット自身を廃棄することを特徴とする請求の範囲第2項記載のネットワークスイッチ装置。
- 前記バッファ制御回路は、前記受信パケットを前記送信キューに登録する際に、前記受信パケットと同じ前記優先度クラスの前記パケットが前記送信キュー内に登録されていない場合、前記受信パケットより上位の前記パケットが前記送信キューにすでに登録されているときは、最も近い上位の前記優先度クラスの前記パケットのうち、最後に登録された前記パケットの次に前記受信パケットを登録し、前記受信パケットより上位の前記パケットが前記送信キューに登録されていないときは、前記送信キューの先頭に前記受信パケットを登録することを特徴とする請求の範囲第1項記載のネットワークスイッチ装置。
- 前記バッファ制御回路は、前記各送信キューに登録した前記パケット間の連結を、前記各パケットの前記各バッファにおける書き込み位置に基づく連結リスト構造として管理することを特徴とする請求の範囲第1項記載のネットワークスイッチ装置。
- 前記各バッファにおける前記パケットの書き込み位置を指し示すポインタをそれぞれ保持するポインタスタックをさらに具備し、
前記バッファ制御回路は、前記バッファへの前記パケットの書き込み時に、対応する前記ポインタスタックから前記ポインタをPOPして取得し、取得した前記ポインタを用いて前記各バッファに形成された前記送信キュー内の前記パケット間の連結を管理することを特徴とする請求の範囲第5項記載のネットワークスイッチ装置。 - 前記バッファ制御回路は、前記各送信キュー内における直前の書き込み位置、および後続の前記パケットの書き込み位置をそれぞれ示す前記ポインタを、前記パケットとともに付属データとして前記バッファに書き込むことを特徴とする請求の範囲第6項記載のネットワークスイッチ装置。
- 前記バッファ制御回路は、前記各送信キュー内において同じ前記優先度クラスに属する前記パケットのうち、最後に登録された前記パケットを指し示す前記ポインタを保持する末尾ポインタ保持部を前記優先度クラスごとに具備し、
新たな前記受信パケットを登録する際に、前記受信パケットの前記優先度クラスに対応する前記末尾ポインタ保持部に保持された前記ポインタに指し示される前記パケットの前記付属データのうち、後続の前記パケットを指し示す前記ポインタを、前記受信パケットを指し示す前記ポインタに書き換え、さらに、前記受信パケットの前記付属データに、直前の前記パケットを指し示す前記ポインタとして、前記受信パケットの前記優先度クラスに対応する前記末尾ポインタ保持部に保持された前記ポインタを書き込んだ後、前記受信パケットの前記優先度クラスに対応する前記末尾ポインタ保持部が保持する前記ポインタを、前記受信パケットを指し示す前記ポインタに書き換えることを特徴とする請求の範囲第7項記載のネットワークスイッチ装置。 - 前記バッファ制御回路は、前記各送信キュー内において同じ前記優先度クラスに属する前記パケットのうち、最初に登録された前記パケットを指し示す前記ポインタを保持する先頭ポインタ保持部を前記優先度クラスごとに具備し、
前記各バッファから前記パケットを読み出す際に、前記ポインタが保持されているもののうち最も上位の前記優先度クラスに対応する前記先頭ポインタ保持部を参照して、保持されている前記ポインタの指し示す前記パケットを読み出すとともに、読み出した前記パケットの前記付属データに書き込まれた前記ポインタのうち、後続の前記パケットを指し示す前記ポインタによって、参照した前記先頭ポインタ保持部を更新することを特徴とする請求の範囲第9項記載のネットワークスイッチ装置。 - 前記バッファ制御回路は、前記各送信キュー内に登録された前記各パケットを指し示す前記ポインタを送信予定順に保持するポインタ保持部を、前記優先度クラスごとに具備し、
新たな前記受信パケットを登録する際に、前記受信パケットの前記優先度クラスに対応する前記ポインタ保持部の最後尾に、前記受信パケットを指し示す前記ポインタを書き込むことを特徴とする請求の範囲第6項記載のネットワークスイッチ装置。 - 前記バッファ制御回路は、前記送信キューからの前記パケットの送信完了後には、送信された前記パケットに割り当てられていた前記ポインタを前記ポインタスタックにPUSHして返却することを特徴とする請求の範囲第6項記載のネットワークスイッチ装置。
- 複数のネットワーク間でパケットの転送を行うネットワークスイッチ装置において、
転送先の前記ネットワークごとに設けられた複数のバッファと、
受信パケットが入力されると、前記受信パケットの優先度クラスを判定する優先度判定回路と、
前記各バッファにおいて、1つ以上の隣接する前記優先度クラスの前記パケットを登録可能な複数の送信キューを形成し、宛先に対応する前記バッファに対して前記受信パケットを書き込むとともに、前記優先度判定回路の判定結果に基づいて、対応する前記送信キュー内に登録された同じ前記優先度クラスの前記パケットのうち、最後に登録された前記パケットの次に送信予約されるように前記受信パケットを登録するバッファ制御回路と、
を有することを特徴とするネットワークスイッチ装置。 - 受信パケットを転送先のネットワークに対応するバッファに一旦蓄積しながら複数のネットワーク間で転送するネットワークスイッチ方法において、
受信パケットが入力されると、前記受信パケットの優先度クラスを判定し、
前記各バッファにおいて、複数の前記優先度クラスの前記パケットを登録可能な送信キューを形成し、宛先に対応する前記バッファに対して前記受信パケットを書き込むとともに、前記優先度クラスの判定結果に基づいて、対応する前記送信キュー内に登録された同じ前記優先度クラスの前記パケットのうち、最後に登録された前記パケットの次に送信予約されるように前記受信パケットを登録する、
ことを特徴とするネットワークスイッチ方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2003/000388 WO2004066570A1 (ja) | 2003-01-17 | 2003-01-17 | ネットワークスイッチ装置およびネットワークスイッチ方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2004066570A1 true JPWO2004066570A1 (ja) | 2006-05-18 |
Family
ID=32750558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004567109A Pending JPWO2004066570A1 (ja) | 2003-01-17 | 2003-01-17 | ネットワークスイッチ装置およびネットワークスイッチ方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7620054B2 (ja) |
JP (1) | JPWO2004066570A1 (ja) |
CN (1) | CN1729655A (ja) |
AU (1) | AU2003303790A1 (ja) |
TW (1) | TW595170B (ja) |
WO (1) | WO2004066570A1 (ja) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7400581B2 (en) * | 2003-03-03 | 2008-07-15 | Sun Microsystems, Inc. | Load-balancing utilizing one or more threads of execution for implementing a protocol stack |
SE0302685D0 (sv) * | 2003-10-07 | 2003-10-07 | Ericsson Telefon Ab L M | Method and arrangement in a telecommunication system |
US7693166B2 (en) * | 2005-02-17 | 2010-04-06 | Nec Corporation | Method and apparatus for transmitting data to network and method and apparatus for receiving data from network |
JP4649242B2 (ja) * | 2005-03-16 | 2011-03-09 | 株式会社日立製作所 | 端末アダプタ装置 |
GB0606367D0 (en) * | 2006-03-30 | 2006-05-10 | Vodafone Plc | Telecommunications networks |
CN101542985B (zh) * | 2006-12-21 | 2011-03-02 | 中兴通讯股份有限公司 | 分组交换装置及方法 |
JP4519159B2 (ja) * | 2007-07-12 | 2010-08-04 | 株式会社日立製作所 | パケット転送装置及びパケット転送方法 |
US8688129B2 (en) | 2007-09-17 | 2014-04-01 | Qualcomm Incorporated | Grade of service (GoS) differentiation in a wireless communication network |
US8503465B2 (en) * | 2007-09-17 | 2013-08-06 | Qualcomm Incorporated | Priority scheduling and admission control in a communication network |
US8320358B2 (en) * | 2007-12-12 | 2012-11-27 | Qualcomm Incorporated | Method and apparatus for resolving blinded-node problems in wireless networks |
US8406230B2 (en) * | 2008-06-30 | 2013-03-26 | Oracle America, Inc. Formerly Known As Sun Microsystems, Inc. | Method and system for classifying packets in a network interface card and interface for performing the same |
CN101621478A (zh) | 2009-08-07 | 2010-01-06 | 中兴通讯股份有限公司 | 队列调度的方法及装置 |
JP2011254149A (ja) * | 2010-05-31 | 2011-12-15 | Nippon Telegr & Teleph Corp <Ntt> | 情報処理装置、情報処理方法およびプログラム |
US8744367B2 (en) * | 2010-08-31 | 2014-06-03 | At&T Intellectual Property I, L.P. | Tail optimization protocol for cellular radio resource allocation |
US8601169B1 (en) | 2010-11-03 | 2013-12-03 | Pmc-Sierra Us, Inc. | Method and apparatus for a multi-engine descriptor controller for distributing data processing tasks across the engines |
US8527627B2 (en) | 2010-12-14 | 2013-09-03 | At&T Intellectual Property I, L.P. | Intelligent mobility application profiling with respect to identified communication bursts |
US9264872B2 (en) | 2011-06-20 | 2016-02-16 | At&T Intellectual Property I, L.P. | Controlling traffic transmissions to manage cellular radio resource utilization |
US9220066B2 (en) | 2011-06-20 | 2015-12-22 | At&T Intellectual Property I, L.P. | Bundling data transfers and employing tail optimization protocol to manage cellular radio resource utilization |
CN103036794A (zh) * | 2011-10-10 | 2013-04-10 | 华为技术有限公司 | 一种报文的学习方法、装置和*** |
US8695047B2 (en) * | 2011-11-08 | 2014-04-08 | Qualcomm Incorporated | Video stream protection |
FR2984657B1 (fr) * | 2011-12-19 | 2014-01-10 | Kalray | Systeme d'emission de flots de donnees concurrents sur un reseau |
JP6868802B2 (ja) * | 2015-08-03 | 2021-05-12 | パナソニックIpマネジメント株式会社 | 送信方法、受信方法、送信装置及び受信装置 |
KR102469811B1 (ko) * | 2017-12-20 | 2022-11-24 | 에스케이하이닉스 주식회사 | 서비스품질 제어를 위한 선입선출 버퍼 시스템 |
CN109586780A (zh) * | 2018-11-30 | 2019-04-05 | 四川安迪科技实业有限公司 | 卫星网络中防止报文阻塞的方法 |
JP7207177B2 (ja) * | 2019-06-03 | 2023-01-18 | 富士通株式会社 | パケット処理装置およびネットワークシステム |
US11677666B2 (en) * | 2019-10-11 | 2023-06-13 | Nokia Solutions And Networks Oy | Application-based queue management |
JP7494494B2 (ja) * | 2020-03-09 | 2024-06-04 | オムロン株式会社 | 通信制御機器および通信制御機器の制御方法 |
JP2022160229A (ja) * | 2021-04-06 | 2022-10-19 | ウーブン・プラネット・ホールディングス株式会社 | 通信装置、通信ミドルウェア、及び通信システム |
CN113364704B (zh) * | 2021-06-07 | 2023-09-01 | 河南工业职业技术学院 | 云计算数据中心网络的差分流传输控制方法、***及终端 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3064315B2 (ja) | 1990-01-25 | 2000-07-12 | 株式会社東芝 | パケット交換網の伝送路帯域管理方式 |
JPH0591142A (ja) * | 1991-09-30 | 1993-04-09 | Nec Corp | パケツトスイツチ |
JPH06164641A (ja) * | 1992-11-17 | 1994-06-10 | Matsushita Electric Ind Co Ltd | Fifoメモリ・パケットスイッチ |
JPH0936912A (ja) * | 1995-07-14 | 1997-02-07 | Fujitsu Ltd | バッファ制御方式 |
US6219728B1 (en) * | 1996-04-22 | 2001-04-17 | Nortel Networks Limited | Method and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor |
US6870854B1 (en) * | 1996-06-21 | 2005-03-22 | Hitachi, Ltd. | Packet switching device and cell transfer method |
JPH1098475A (ja) * | 1996-09-24 | 1998-04-14 | Fujitsu Ltd | 共通バッファメモリ管理方式 |
JPH11122257A (ja) * | 1997-10-15 | 1999-04-30 | Hitachi Ltd | 共通バッファ型スイッチ |
US6389031B1 (en) * | 1997-11-05 | 2002-05-14 | Polytechnic University | Methods and apparatus for fairly scheduling queued packets using a ram-based search engine |
JP4216399B2 (ja) | 1998-04-01 | 2009-01-28 | 株式会社日立製作所 | パケット交換機 |
JP3866425B2 (ja) * | 1998-11-12 | 2007-01-10 | 株式会社日立コミュニケーションテクノロジー | パケットスイッチ |
JP3854745B2 (ja) * | 1999-04-12 | 2006-12-06 | 富士通株式会社 | パケット処理装置およびパケット処理方法 |
JP2000341295A (ja) * | 1999-05-31 | 2000-12-08 | Fujitsu Ltd | Atm装置 |
JP3731385B2 (ja) * | 1999-06-09 | 2006-01-05 | 株式会社日立製作所 | パケット交換装置 |
US6934250B1 (en) * | 1999-10-14 | 2005-08-23 | Nokia, Inc. | Method and apparatus for an output packet organizer |
US6687247B1 (en) * | 1999-10-27 | 2004-02-03 | Cisco Technology, Inc. | Architecture for high speed class of service enabled linecard |
JP3386117B2 (ja) * | 2000-01-11 | 2003-03-17 | 日本電気株式会社 | マルチレイヤクラス識別通信装置と通信装置 |
JP4879382B2 (ja) * | 2000-03-22 | 2012-02-22 | 富士通株式会社 | パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置 |
JP2001292164A (ja) * | 2000-04-06 | 2001-10-19 | Nec Corp | パケット・スイッチおよびその切替方法 |
JP4484317B2 (ja) * | 2000-05-17 | 2010-06-16 | 株式会社日立製作所 | シェーピング装置 |
JP3584859B2 (ja) * | 2000-06-29 | 2004-11-04 | 日本電気株式会社 | パケットスケジューリング装置 |
US7120159B2 (en) * | 2000-10-30 | 2006-10-10 | Matsushita Electric Industrial Co., Ltd. | Apparatus and method for packet transmission |
US6977941B2 (en) * | 2000-11-08 | 2005-12-20 | Hitachi, Ltd. | Shared buffer type variable length packet switch |
US6973032B1 (en) * | 2000-12-04 | 2005-12-06 | Cisco Technology, Inc. | Selective backpressure control for multistage switches |
JP4489308B2 (ja) * | 2001-01-05 | 2010-06-23 | 富士通株式会社 | パケットスイッチ |
JP2002300193A (ja) * | 2001-03-30 | 2002-10-11 | Hitachi Ltd | ルータ |
JP4256599B2 (ja) | 2001-05-28 | 2009-04-22 | 日本放送協会 | パケット転送制御装置 |
JP3698079B2 (ja) * | 2001-08-22 | 2005-09-21 | 日本電気株式会社 | データ転送方法、データ転送装置及びプログラム |
JP2003318964A (ja) * | 2002-04-25 | 2003-11-07 | Fujitsu Ltd | パケット転送装置、スケジューラ、データ伝送装置、およびパケット転送方法 |
JP3872716B2 (ja) * | 2002-04-30 | 2007-01-24 | 富士通株式会社 | パケット出力制御装置 |
US7110415B1 (en) * | 2002-05-17 | 2006-09-19 | Marvell International Ltd. | Apparatus and method for dynamically limiting output queue size in a quality of service network |
US20040151197A1 (en) * | 2002-10-21 | 2004-08-05 | Hui Ronald Chi-Chun | Priority queue architecture for supporting per flow queuing and multiple ports |
-
2003
- 2003-01-17 JP JP2004567109A patent/JPWO2004066570A1/ja active Pending
- 2003-01-17 AU AU2003303790A patent/AU2003303790A1/en not_active Abandoned
- 2003-01-17 WO PCT/JP2003/000388 patent/WO2004066570A1/ja active Application Filing
- 2003-01-17 CN CNA038258056A patent/CN1729655A/zh active Pending
- 2003-01-29 TW TW092102032A patent/TW595170B/zh not_active IP Right Cessation
-
2005
- 2005-02-02 US US11/047,774 patent/US7620054B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
TW200414720A (en) | 2004-08-01 |
CN1729655A (zh) | 2006-02-01 |
WO2004066570A1 (ja) | 2004-08-05 |
TW595170B (en) | 2004-06-21 |
US7620054B2 (en) | 2009-11-17 |
AU2003303790A1 (en) | 2004-08-13 |
US20050129044A1 (en) | 2005-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2004066570A1 (ja) | ネットワークスイッチ装置およびネットワークスイッチ方法 | |
US7733889B2 (en) | Network switching device and method dividing packets and storing divided packets in shared buffer | |
US7843816B1 (en) | Systems and methods for limiting low priority traffic from blocking high priority traffic | |
US11929931B2 (en) | Packet buffer spill-over in network devices | |
US7782849B2 (en) | Data switch and switch fabric | |
US7400638B2 (en) | Apparatus and methods for managing packets in a broadband data stream | |
US20030112818A1 (en) | Deferred queuing in a buffered switch | |
US7633861B2 (en) | Fabric access integrated circuit configured to bound cell reorder depth | |
US6601116B1 (en) | Network switch having descriptor cache and method thereof | |
US20040131055A1 (en) | Memory management free pointer pool | |
US6747954B1 (en) | Asynchronous transfer mode switch providing pollstate status information | |
US6195361B1 (en) | Network communication device | |
US7756131B2 (en) | Packet forwarding system capable of transferring packets fast through interfaces by reading out information beforehand for packet forwarding and method thereof | |
US6993018B1 (en) | Priority signaling for cell switching | |
TW200404206A (en) | Increasing memory access efficiency for packet applications | |
US7293132B2 (en) | Apparatus and method for efficient data storage using a FIFO memory | |
JP3255113B2 (ja) | パケットスイッチシステム、これを含む集積回路、パケットスイッチ制御方法、パケットスイッチ制御プログラム記録媒体 | |
KR20050050110A (ko) | 네트워크 스위치 장치 및 네트워크 스위치 방법 | |
US20230013473A1 (en) | Network device that utilizes packet grouping | |
KR100732135B1 (ko) | 네트워크 스위치 장치 및 네트워크 스위치 방법 | |
JPH05336153A (ja) | セル転送キュー構成方式およびセル転送キュー回路 | |
KR20050087203A (ko) | 이동통신 시스템에서 트래픽 스위칭 장치 및 방법 | |
JPH08228193A (ja) | セル交換装置 | |
JPH09200222A (ja) | 共通バッファ型atmスイッチ | |
JP2007336304A (ja) | パケットデータ送信方法およびパケットデータ送信装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060829 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070109 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070522 |