JP3865748B2 - ネットワークスイッチ装置およびネットワークスイッチ方法 - Google Patents

ネットワークスイッチ装置およびネットワークスイッチ方法 Download PDF

Info

Publication number
JP3865748B2
JP3865748B2 JP2004567119A JP2004567119A JP3865748B2 JP 3865748 B2 JP3865748 B2 JP 3865748B2 JP 2004567119 A JP2004567119 A JP 2004567119A JP 2004567119 A JP2004567119 A JP 2004567119A JP 3865748 B2 JP3865748 B2 JP 3865748B2
Authority
JP
Japan
Prior art keywords
packet
pointer
buffer
transmission queue
transmission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004567119A
Other languages
English (en)
Other versions
JPWO2004066571A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2004066571A1 publication Critical patent/JPWO2004066571A1/ja
Application granted granted Critical
Publication of JP3865748B2 publication Critical patent/JP3865748B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/505Corrective measures
    • H04L49/508Head of Line Blocking Avoidance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/552Prevention, detection or correction of errors by ensuring the integrity of packets received through redundant connections

Description

本発明は、可変長のパケットを複数のネットワーク間で転送するネットワークスイッチ装置およびネットワークスイッチ方法に関し、特に、パケットの格納領域として共有バッファを使用したネットワークスイッチ装置およびネットワークスイッチ方法に関する。
インターネット等のように多数のネットワークが互いに接続されている場合、それらの接続にはネットワークスイッチ装置が用いられることが多い。中でも、受信したパケットを内部のバッファに一旦蓄積した後、目的の送信ポートに転送するスイッチ方式はストア&フォワード方式と言われ、このようなスイッチ方式を採用したネットワークスイッチ装置が広く使用されている。
また、近年のネットワーク上での通信では、転送単位とするパケットのデータ量が可変とされていることが多い。例えば、インターネットプロトコル(IP:Internet Protocol)では、IPデータグラムと呼ばれる可変長パケットを転送単位として、メッセージ転送が行われる。
図15は、従来のネットワークスイッチ装置の構成例を示す図である。
図15に示すネットワーク装置は、複数のネットワーク201〜204の間でパケットの転送を行う。このネットワーク装置は、各ネットワーク201〜204に対応する受信インタフェース211〜214および受信バッファ221〜224と、各ネットワーク201〜204に対応する送信インタフェース231〜234および送信バッファ241〜244と、データ転送回路250によって構成される。なお、図15では、理解を容易にするために、受信インタフェース211〜214と送信インタフェース231〜234とを別々の要素として示している。
受信インタフェース211〜214は、ネットワーク201〜204に対してそれぞれ接続されている。また、同様に、送信インタフェース231〜234も、ネットワーク201〜204に対してそれぞれ接続されている。各受信インタフェース211〜214がネットワーク201〜204から受信したパケットは、対応する受信バッファ221〜224において一旦蓄積される。データ転送回路250は、受信バッファ221〜224に蓄積されたパケットの宛先に基づいて、その宛先ポートに対応する送信バッファに対してパケットを転送する。各送信バッファ241〜244に蓄積されたパケットは、対応する送信インタフェース231〜234からの送信要求に従って読み出され、ネットワーク201〜204に送信される。
この図15に示したようなネットワークスイッチ装置では、受信ポートおよび送信ポートごとにバッファを備えていることから、バッファを多数確保する必要があり、メモリ容量が大きくなるという欠点を有している。これに対して、受信したパケットと送信するパケットをすべて一つの共有バッファに格納する方法を採ることで、メモリ容量を削減したネットワークスイッチ装置が知られている。
図16は、共有バッファを具備する従来のネットワークスイッチ装置の構成例を示す図である。
図16では、図15と同様に、複数のネットワーク301〜304の間でパケットの転送を行うネットワーク装置を示している。このネットワーク装置は、各ネットワーク301〜304に対応する受信インタフェース311〜314と、各ネットワーク301〜304に対応する送信インタフェース321〜324と、受信パケットおよび送信パケットにそれぞれ対応するデータ転送回路330および340と、共有バッファ350とによって構成される。なお、図16では、理解を容易にするために、受信側に対応する受信インタフェース311〜314およびデータ転送回路330と、送信側に対応する送信インタフェース321〜324およびデータ転送回路340とを別々の要素として示している。
各受信インタフェース311〜314がネットワーク301〜304から受信したパケットは、データ転送回路330によって、共有バッファ350に順次蓄積される。データ転送回路340は、各送信インタフェース321〜324からの送信要求を受けると、共有バッファ350に蓄積されたパケットの宛先に基づいて、その宛先ポートに対応する送信インタフェースに対してパケットを転送する。各送信インタフェース321〜324は、共有バッファ350から転送されたパケットを、接続されたネットワーク301〜304に送信する。
また、上記の図15および図16のようなネットワークスイッチ装置では、送信予定のパケットは、宛先ポートごとにポインタで連結した連結リスト構造のキューとして制御されることが一般的である。ここで、可変長のパケットが扱われる場合、各パケットが格納されるバッファは最大パケット長を単位として構成されることが多く、このようなバッファに格納されたパケットが、ポインタを用いて管理される。このようなアーキテクチャの利点は、例えばエラーの発生等により受信したパケットを廃棄する場合に、該当するパケットへのポインタを削除するだけで済む等、制御が容易であることが挙げられる。しかし、その反面、格納したいパケット数に最大パケット長を乗じただけのメモリ容量がバッファに対して必要となる。この場合、例えば最大パケット長より小さい容量のパケットばかりを受信すると、バッファ内においてパケットに占有されない領域が増えてしまい、メモリ使用効率が低くなることが欠点であった。
従来、共通バッファメモリを具備して可変長パケットを取り扱い、かつ、この共通バッファメモリの使用効率を高めたパケットスイッチとして、例えば以下のようなものがあった。このパケットスイッチは、各入力回線から受信した可変長パケットを、固定長のデータブロック単位で共通バッファメモリに書き込む。この書き込み時に、バッファ制御部が入力回線別の入力キューを形成し、可変長パケットの最終データブロックが入力キューに登録された時、この入力キューのリンクド・アドレスリストを転送先出力回線と対応した出力キューにリンクする。
各入力キューは、共通バッファメモリへの書き込みの際に、次の固定長データブロックの書き込みアドレスを次アドレスメモリに記憶することにより形成される。また、各出力キューは、次に読み出すべきデータブロックを示す次読出しアドレスと、最後のデータブロックを示す最終読出しアドレスとを記憶するアドレステーブルからなり、バッファ制御部の入力キュー制御部が、各可変長パケットの先頭データブロックの書き込みアドレスと、最終データブロックの書き込みアドレスとを、それぞれ転送先出力回線と対応するアドレステーブルの次読出しアドレスおよび最終読出しアドレスに移すことによって、出力キューへの入力キューリンクを完了する。さらに、先行する可変長パケットの最終読出しアドレスがすでに登録された状態である場合には、次アドレスメモリから後続可変長パケットの先頭データブロックの書き込みアドレスを抽出して、このアドレスを最終読出しアドレスにリンクさせる。このような制御により、バッファメモリの使用効率を高めるとともに、スイッチング動作を高速化している。例えば、特開2002−152247号公報(段落番号〔0025〕〜〔0040〕、第3図)参照。
また、上記と同様に、各入力回線から受信した可変長パケットを、固定長のデータブロック単位で共通バッファメモリに書き込むパケットスイッチとして、データ書き込み時に、バッファ制御部が入力回線別の入力キューを形成し、可変長パケットの最終データブロックが入力キューに登録された時点で、この入力キューのリンクド・アドレスリストをパケット転送先出力回線と対応する待機バッファを備えた出力キューに登録する構成とされたパケットスイッチがあった。このパケットスイッチにおいては、各出力キューは、可変長パケットの先頭データブロックの書き込みアドレスと、最終データブロックの書き込みアドレスとを一時的に記憶するための待機バッファと、次に読み出すべきデータブロックを示す次読出しアドレスと、最後のデータブロックを示す最終読出しアドレスとを記憶するアドレスメモリとからなり、バッファ制御部の入力キュー制御部が、各可変長パケットの先頭データブロックの書き込みアドレスと、最終データブロックの書き込みアドレスとを、それぞれ転送先出力回線と対応する待機バッファに登録し、これに付随するアドレスメモリが空き状態となった時、出力キュー制御部が、待機バッファから取り出した1対のアドレスを、新たなデータブロック群の次読出しアドレスおよび最終読出しアドレスとしてアドレスメモリに設定する。これにより、バッファメモリの使用効率を高めるとともに、スイッチング動作を高速化している。例えば、特開2002−185495号公報(段落番号〔0025〕〜〔0037〕、第3図)参照。
ところで、上記の図16で示したような共有バッファを用いたネットワークスイッチ装置では、特定のポート宛の受信パケットが集中する等により輻輳が発生した場合、これらの受信パケットや同じポート宛の送信パケットによって共有バッファ内が占有され、輻輳が発生したポートと無関係なポートにおいてスループットが低下してしまうことがあった。このような現象は一般にブロッキング(blocking)等と呼ばれる。特に、上述したように、可変長パケットを扱う場合は、共有バッファ内の使用効率が低いにもかかわらず、ブロッキングが発生する場合がある。
これに対して、上記の図15のように、受信パケット用の受信バッファと送信パケット用の送信バッファとを、それぞれ受信ポート数および送信ポート数ごとに設けた場合には、ブロッキングによるスループットの低下は発生しない。しかし、上述したように、このような構成の場合は、各バッファの容量を大きくする必要が生じ、部品コストが高くなってしまう。
また、上記の特開2002−152247号公報および特開2002−185495号公報に示したパケットスイッチでは、可変長パケットを受信した場合に、共通バッファメモリ内の使用効率を向上させることが可能となっているが、ブロッキングを防止する手段が講じられてはいなかった。
本発明はこのような課題に鑑みてなされたものであり、可変長パケットが蓄積されるバッファの使用効率を高めながら、ブロッキングの発生が防止されたネットワークスイッチ装置を提供することを目的とする。
本発明では上記課題を解決するために、図1に示すようなネットワークスイッチ装置が提供される。このネットワークスイッチ装置は、可変長のパケットを複数のネットワーク間で転送するものであり、受信したパケットのデータおよび送信するパケットのデータの各格納領域として共用されるバッファ1と、受信した前記パケットを1つ以上の固定長のデータブロックに分割して前記バッファ1に供給するパケット分割回路2と、前記パケットの転送先の前記ネットワークごとに一定数の前記データブロックを登録可能な送信キュー4−1〜n(ただし、nはn>0の整数)を形成して、分割された前記データブロックを前記バッファ1に書き込んだ後、その宛先に対応する前記送信キューに前記パケット単位で順次登録し、かつ、前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを、前記各データブロックの前記バッファ1における書き込み位置に基づく連結リスト構造として管理して、前記各送信キュー4−1〜nに登録された前記データブロックを前記連結リスト構造に従って順次読み出すバッファ制御回路3とを有し、前記バッファ制御回路3は、1つの前記パケット当たりで許容される最大数の前記データブロックが登録可能な受信キューを、受信元の前記ネットワークごとに形成し、前記各受信キューに対する1つの前記パケット分の前記データブロックの登録が完了すると、対応する前記受信キューを宛先に対応する前記送信キューに連結し、その連結の際に、宛先に対応する前記送信キューへの前記データブロックの登録数が登録可能数を超えた場合は、この時点で登録処理中の前記データブロックを含む前記パケットを廃棄することを特徴とする。
このようなネットワークスイッチ装置では、1つのバッファ1が、受信したパケットのデータおよび送信するパケットのデータの各格納領域として共用される。また、受信したパケットは、パケット分割回路2によって1つ以上の固定長のデータブロックに分割されて、バッファ1に供給される。また、バッファ制御回路3の制御により、パケットの転送先のネットワークごとに一定数のデータブロックを登録可能な送信キュー4−1〜nが形成され、バッファ1に書き込まれたデータブロックは、宛先に対応する送信キューにパケット単位で順次登録される。このとき、各パケット内のデータブロック間の連結と、各送信キュー内のパケット間の連結とが、各データブロックのバッファにおける書き込み位置に基づく連結リスト構造として管理される。そして、各送信キュー4−1〜nに登録されたデータブロックが連結リスト構造に従って順次読み出される。さらに、バッファ制御回路3によるバッファ1の制御においては、1つのパケット当たりで許容される最大数のデータブロックが登録可能な受信キューが、受信元のネットワークごとに形成され、各受信キューに対する1つのパケット分のデータブロックの登録が完了すると、対応する受信キューが宛先に対応する送信キューに連結される。そして、その連結の際には、宛先に対応する送信キューへのデータブロックの登録数が登録可能数を超えた場合は、この時点で登録処理中のデータブロックを含むパケットが廃棄される。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本発明の原理を説明するための原理図である。
本発明のネットワークスイッチ装置は、可変長のパケットを用いて通信が行われる複数のネットワークに接続して、これらのネットワーク間でパケットを転送する装置である。このネットワークスイッチ装置は、図1に示すように、バッファ1と、パケット分割回路2と、バッファ制御回路3とを有している。
バッファ1は、受信したパケットを格納するための記憶装置であり、例えば半導体メモリ等によって構成される。
パケット分割回路2は、受信したパケットを1つ以上の固定長のデータブロックに分割してバッファ1に供給する。従って、1つのデータブロックの容量は、1パケット内に許容される最大のデータ量よりも小さく設定される。
バッファ制御回路3は、バッファ1におけるデータブロックの書き込みおよび読み出しの動作を制御する。バッファ制御回路3は、パケット分割回路2によって分割されたデータブロックを用いて、宛先となるネットワークごとに送信キュー4−1〜n(ただしnはn>1の整数)を形成し、分割されたデータブロックをバッファ1に書き込んだ後、その宛先に対応する送信キューにパケット単位で順次登録する。ここで、各送信キュー4−1〜nには、一定数のデータブロックを登録することが可能とされる。従って、バッファ1内には通常、転送先のネットワークごとに同一容量の送信キュー4−1〜nの格納領域が用意される。
また、バッファ制御回路3は、バッファ1内に格納した各データブロックを、各データブロックのバッファ1における書き込み位置に基づく連結リスト構造として管理する。以下の説明では、例として、バッファ制御回路3は、バッファ1内の書き込み位置を指し示すポインタを一元的に保持するポインタスタック5を具備して、データブロックの書き込み時にこのポインタスタック5からポインタをPOPして取得し、取得したポインタを用いて連結リスト構造を構築するものとする。
このような構成のネットワーク装置は、以下のように動作する。
所定のネットワークからパケットを受信すると、このパケットはパケット分割回路2により固定長のデータブロックに分割され、バッファ制御回路3の制御によってバッファ1に格納される。このとき、バッファ制御回路3は、例えば、データブロックの書き込み動作ごとに、ポインタスタック5からポインタをPOPして、このポインタの示すアドレスに対してデータブロックを書き込む。また、1パケットの中で分割されたデータブロック間の連結を、ポインタを用いた連結リスト構造として管理する。
1パケット分のデータブロックがバッファ1に格納されると、バッファ制御回路3は、このパケットの宛先に対応する送信キュー4−1〜nのいずれかに対して登録する。ここで、バッファ制御回路3は、各送信キュー4−1〜nにおいて、登録されたパケット間の連結を、それらに対応するポインタを用いた連結リスト構造として管理する。
各送信キュー4−1〜nからは、登録されたデータブロックが順次出力され、対応するネットワークに送信される。ここで、各送信キュー4−1〜nにおいて、登録されたデータブロック間およびパケット間が上記のようなポインタを用いた連結リスト構造として管理されていることから、ポインタの指し示す書き込み位置からデータブロックを読み出すことで、容易に元のパケットを再編集することができる。
以上のネットワークスイッチ装置では、パケットの転送先のネットワークごとに一定数のデータブロックを登録可能な送信キュー4−1〜nが形成され、バッファ1に書き込まれた各データブロックが、パケットの宛先に対応する送信キューにパケット単位で順次登録される。このような手順を用いることにより、受信元および転送先のネットワークにかかわらず、パケットの格納領域として1つのバッファ1のみ具備すればよいことになる。また、各送信キュー4−1〜nの容量が宛先のネットワークごとに限定されるため、1つの宛先に対するパケットが集中して受信された場合にも、それらのパケットがバッファ1内の他の宛先に対するパケットの転送動作に影響を与えることがない。従って、パケットの格納領域として1つのバッファ1を具備する構成でありながら、ブロッキングの発生が防止される。
また、受信したパケットは1つ以上の固定長のデータブロックに分割されてバッファ1に書き込まれる。これとともに、各パケット内のデータブロック間の連結と、各送信キュー4−1〜n内のパケット間の連結とが、各データブロックのバッファにおける書き込み位置に基づく連結リスト構造として管理される。このため、バッファ1内における未使用領域が小さくなり、バッファ1の使用効率が高められる。従って、バッファ1の容量を抑制することができ、部品コストが低減される。
なお、例えば、送信キュー4−1〜nへのデータブロックの登録時に、その登録数が登録可能な数を超えた場合は、この時点で登録処理中のデータブロックを含むパケットを廃棄してもよい。このとき、各送信キュー4−1〜nへのデータブロックの登録数は、例えば、使用されているポインタ数としてカウントすればよい。
また、パケットの廃棄時や、送信キュー4−1〜nからのパケットの出力時には、廃棄あるいは出力したパケットで使用されていたポインタを、ポインタスタック5に対して返却すればよい。これにより、バッファ1内におけるデータブロックの書き込みを効率よく制御することができる。
次に、本発明の第1の実施の形態について、具体的に説明する。
図2は、本発明の第1の実施の形態に係るネットワークスイッチ装置の接続例を示す図である。
図2に示すように、ネットワークスイッチ装置100には、複数の通信ポートが設けられており、各通信ポートにネットワーク21〜24が接続されている。各ネットワーク21〜24には、例えば端末装置21a、22a、23aおよび24aが接続されている。
ネットワークスイッチ装置100は、接続されたネットワーク21〜24の間におけるパケットの転送を行う。例えば、端末装置21aから端末装置22a宛てに送信されたパケットは、ネットワーク21を通じてネットワークスイッチ装置100に入力され、このネットワークスイッチ装置100の処理によってネットワーク22に転送される。これにより、転送されたパケットが、ネットワーク22を通じて端末装置22aにおいて受信される。また、ネットワークスイッチ装置100は、可変長のパケットを転送することが可能となっている。
図3は、ネットワークスイッチ装置100の内部構成を示すブロック図である。
図3に示すように、ネットワークスイッチ装置100は、送受信インタフェース111〜114、データ転送回路120、共有バッファ130、書き込み/読み出し制御回路140、ポインタスタック150、ポインタ制御回路160、およびポインタカウンタ群170を具備する。また、書き込み/読み出し制御回路140、ポインタスタック150およびポインタカウンタ群170は、ポインタが伝送されるポインタ用バス180に接続されている。
送受信インタフェース111〜114は、外部のネットワークとのデータ送受信を行う通信インタフェースであり、それぞれネットワーク21〜24に接続されている。
各送受信インタフェース111〜114は、ネットワーク21〜24から可変長のパケットを受信し、このパケットを順次固定長のデータブロックに分割するとともに、データ転送回路120に対して受信要求を通知する。そして、この要求に対する応答を受信すると、分割したデータブロックをデータ転送回路120に出力する。このとき、出力したデータブロックが、パケット中の先頭のものであるか、あるいは最終のものであるかを示すブロック位置情報を通知する。また、パケットの宛先を示す情報を抽出して、この情報もデータ転送回路120に通知する。さらに、受信エラー等が発生したときは、該当するパケットのデータを廃棄するとともに、廃棄信号をポインタ制御回路160に対して出力する。
一方、送受信インタフェース111〜114は、データ転送回路120から送信用のデータブロックを順次受け取り、これらのデータブロックをネットワーク21〜24に対して送信する。
データ転送回路120は、各送受信インタフェース111〜114からの受信要求に応じて、該当する送受信インタフェース111〜114からデータブロックを受け取り、共有バッファ130に格納する。このとき、受け取ったデータブロックの受信ポートと、このデータブロックの宛先に対応する送信ポートと、データブロックがパケット中の先頭のものか、あるいは最終のものかを示すブロック位置情報とを含むインタフェース情報を、書き込み/読み出し制御回路140およびポインタ制御回路160に対して出力する。
また、データ転送回路120は、各送受信インタフェース111〜114からの送信要求に応じて、共有バッファ130からパケットのデータブロックを順次取り出し、そのパケットの宛先の端末装置が接続された送受信インタフェースに順次出力する。このとき、出力したデータブロックの宛先を参照して、送信すべき宛先が残り1つとなったときに、このことをポインタ制御回路160に通知する。
共有バッファ130は、転送されるパケットのデータを、データブロックとして一時的に格納するためのバッファメモリである。この共有バッファ130には、受信ポートごとに1パケット分のデータブロックを格納する領域と、送信ポートごとに形成された送信キューが格納される領域とが確保される。また、共有バッファ130におけるデータブロックの書き込みアドレスおよび読み出しアドレスは、書き込み/読み出し制御回路140によって指定される。
書き込み/読み出し制御回路140は、共有バッファ130におけるデータブロックの書き込み動作および読み出し動作を管理する。具体的には、分割されたデータブロックごとにポインタスタック150から順次ポインタを受け取り、このポインタに基づいて共有バッファ130におけるデータブロックの書き込みアドレスを指定する。このとき、受け取ったポインタを、ポインタ用バス180を通じてポインタカウンタ群170に出力する。また、共有バッファ130内に格納されたデータブロックを、上記のポインタを用いた連結リスト構造として管理し、このポインタの連結に基づいて、共有バッファ130からの読み出しアドレスを指定する。このとき、読み出しに用いたポインタを、ポインタ用バス180を通じてポインタカウンタ群170に出力する。
この書き込み/読み出し制御回路140は、共有バッファ130内に、送信ポートごとの送信キューを形成する。各送信キューは、一定数のデータブロックを格納可能とされている。書き込み/読み出し制御回路140は、データブロックを共有バッファ130に格納させた後、その宛先に対応する送信キューに、データブロックを登録する。この際に、以前に登録されていたパケットと、新たに登録するパケットとの連結を、これらを構成するデータブロックに対応するポインタを用いた連結リスト構造として管理し、各送信キューからデータブロックを順次、データ転送回路120に出力させる。
ポインタスタック150には、共有バッファ130におけるデータブロックの書き込みアドレスを指し示すポインタが格納されている。ポインタスタック150は、共有バッファ130内のすべてのパケット格納領域における書き込みアドレスに対応するポインタを一元的に保持しており、これによって共有バッファ130内の領域を効率的に使用することが可能となっている。
ポインタスタック150は、送受信インタフェース111〜114のいずれかでパケットが受信され、このパケットが分割されて生成されたデータブロックが共有バッファ130に格納される際に、ポインタ制御回路160からの制御信号に基づいてPOP動作を行い、POPされたポインタを書き込み/読み出し制御回路140に対して、ポインタ用バス180を通じて出力する。また、データブロックが共有バッファ130から取り出される際に、ポインタ制御回路160からの制御信号に基づいて、ポインタカウンタ群170が保持しているポインタをポインタ用バス180を通じて受け取り、スタックにPUSHして格納する。
ポインタ制御回路160は、データ転送回路120におけるデータブロックの転送動作や、パケットを廃棄するように通知する廃棄信号の受信に応じて、ポインタスタック150におけるポインタのPOP動作およびPUSH動作を制御する。また、ポインタカウンタ群170に対して制御信号を出力して、ポインタ用バス180を通じたポインタのポインタカウンタ群170内における書き込み動作および読み出し動作を制御する。
ポインタカウンタ群170は、共有バッファ130に書き込まれたデータブロックのポインタやその使用数、送信キューに登録されたポインタ数等を、受信ポートごと、および送信ポートごとに管理する複数のカウンタを具備する。また、ポインタカウンタ群170は、後述するように、使用されているポインタを、データブロックの共有バッファ130への書き込み時と、共有バッファ130からの読み出し時とに分割して管理する。そして、ポインタ制御回路160からの制御信号に基づき、転送が完了したデータブロックに対応するポインタをポインタ用バス180に出力し、ポインタスタック150に返却する。また、送信キューに登録するポインタ数をカウントし、ポインタ数が許容値を超えた場合には、登録処理中のパケットを廃棄するように通知する廃棄信号をポインタ制御回路160に出力する。
このような構成を有するネットワークスイッチ装置100により、1つの共有バッファ130を使用したパケットのスイッチング処理が行われる。例えば、ネットワーク21からネットワーク22に転送すべきパケットを受信した場合には、送受信インタフェース111において受信されたパケットは、固定長のデータブロックに分割され、データ転送回路120を介して共有バッファ130に格納される。共有バッファ130における書き込みアドレスは、ポインタスタック150からPOPされたポインタに基づいて、書き込み/読み出し制御回路140により指定される。
書き込み/読み出し制御回路140は、共有バッファ130内に各送信ポートに対応する送信キューを形成し、データブロックを共有バッファ130に格納した後、その宛先に対応する送信キューにデータブロックを登録する。このとき、パケット内でのデータブロック間の連結と、送信キュー内でのパケット間の連結とを、ポインタを用いた連結リスト構造として管理する。例えば、送信キュー内では、以前に登録されていたパケットの最終データブロックと、新たに登録された先頭データブロックとが、ポインタにより連結される。
そして、この連結リスト構造に従ってポインタを順次指定することにより、送信キューからデータブロックが順次読み出される。読み出されたデータブロックは、データ転送回路120を介して、宛先に対応する送受信インタフェース112に転送され、ネットワーク22に順次送出される。
ここで、共有バッファ130におけるデータブロックの書き込みアドレスは、そのアドレスを指し示すポインタとしてポインタスタック150から一元的に与えられる。書き込み/読み出し制御回路140は、ポインタスタック150からPOPされたポインタを用いて、共有バッファ130内に格納したデータブロック間の連結状態を連結リスト構造として管理する。このような管理方法により、受信ポートおよび送信ポートにかかわらず、パケットの受信から宛先のネットワークに対する送信までの間、そのパケットに含まれるデータを1つの共有バッファ130内に格納しておくことが可能となる。また、受信したパケットは固定長のデータブロックに分割されて共有バッファ130に格納されるので、共有バッファ130内の使用効率を高め、共有バッファ130の容量を小さくすることが可能となる。
さらに、ポインタカウンタ群170において、使用中のポインタやその使用数が管理されるとともに、送信キューに登録されるデータブロックに対して使用されたポインタ数が、送信ポートごとに管理される。このような管理方法により、使用されているポインタの管理が容易になるとともに、送信キューに登録されるデータブロック数が一定数以内に留められ、ブロッキングの発生が防止される。
次に、図4は、共有バッファ130内におけるデータ格納の様子を模式的に示す図である。
図4に示すように、共有バッファ130内には、各受信ポートに対応する受信パケット専用バッファ領域131a〜131dと、各送信ポートに対応する送信キュー専用バッファ領域132a〜132dとが形成される。なお、この図に示す領域はあくまでも論理的なバッファ領域を示しており、実際の物理的なバッファ領域は必ずしもこの通りにはならない。
受信パケット専用バッファ領域131a〜131dは、それぞれ送受信インタフェース111〜114に対応しており、各送受信インタフェース111〜114によって受信されたパケットがデータブロックに分割され、データ転送回路120により共有バッファ130に転送されたときに、これらのデータブロックが格納される領域である。
送信キュー専用バッファ領域132a〜132dは、パケットの宛先に対応する送信キューに登録されたデータブロックが格納される領域である。各送信キュー専用バッファ領域132a〜132dは有限の容量を有し、一定数のデータブロックを格納することが可能とされている。各送信キュー専用バッファ領域132a〜132dの容量は、送信キューに格納されたデータブロックに対して使用されているポインタの数が、ポインタカウンタ群170においてカウントされることにより管理される。
上記のように、ネットワーク21からネットワーク22に転送すべきパケットを受信した場合には、まず、受信パケット専用バッファ領域131aに対して1パケット分に相当するデータブロックが格納される。そして、格納が完了すると、書き込み/読み出し制御回路140の制御により、宛先の送信ポートに対応する送信キューに、これらのデータブロックが連結される。
このとき、書き込み/読み出し制御回路140により、パケット内でのデータブロック間の連結と、送信キュー内でのパケット間の連結とが、ポインタを用いた連結リスト構造として管理される。従って、共有バッファ130内においては、格納されたパケットのデータの物理的な格納位置が変化することなく、受信パケット専用バッファ領域131aが、送信キュー専用バッファ領域132bの一部に移行する。
また、送信キューへの登録動作が終了した後、送信キュー専用バッファ領域132bから、データブロックが順次読み出される。この読み出しは、書き込み/読み出し制御回路140の制御により、連結リスト構造に従ってポインタを順次指定することにより行われる。また、読み出されたデータブロックが格納されていた送信キュー専用バッファ領域132bは、この領域を指し示していたポインタが返却されることにより論理上フラッシュされ、新たなデータブロックを格納することが可能となる。
次に、ポインタ制御回路160およびポインタカウンタ群170の構成について詳しく説明する。
図5は、ポインタ制御回路160およびポインタカウンタ群170の内部構成例を示すブロック図である。なお、図5では、各部の接続関係の理解を容易にするために、ポインタ制御回路160およびポインタカウンタ群170の周囲の機能ブロックについても、必要に応じて示している。
図5に示すように、ポインタ制御回路160は、POP制御部161、PUSH制御部162および廃棄制御部163を具備している。また、ポインタカウンタ群170は、受信ポートごとに設けられた受信中ポインタカウンタ171a〜171dと、それぞれ送信ポートごとに設けられた送信中ポインタカウンタ172a〜172dおよび送信キューポインタカウンタ173a〜173dを具備している。
ポインタ制御回路160において、POP制御部161は、データブロックが共有バッファ130に格納される際に、データ転送回路120からのインタフェース情報に基づいてデータブロックの転送開始を判断すると、ポインタスタック150に対してポインタをPOPするように指示するとともに、受信ポートに対応する受信中ポインタカウンタに対して、ポインタの書き込みを指示するための制御信号を出力する。
PUSH制御部162は、共有バッファ130に格納されたデータブロックが読み出される際に、データ転送回路120からのインタフェース情報に基づいて、送信ポートに対応する送信中ポインタカウンタに対して、ポインタの書き込みを指示するための制御信号を出力する。
また、1パケット分のデータブロックの読み出し処理が終了し、かつすべての宛先への出力が完了すると、ポインタスタック150に対して、ポインタ用バス180に出力されたポインタをPUSHするように指示する。そして、書き込みを指示していた送信中ポインタカウンタのポインタをフラッシュする。
廃棄制御部163は、送受信インタフェース111〜114、および送信キューポインタカウンタ173a〜173dから廃棄信号を受信すると、PUSH制御部162に制御信号を出力して、ポインタスタック150においてPUSH動作を行わせるように依頼する。また、受信中ポインタカウンタ171a〜171dおよび送信中ポインタカウンタ172a〜172dに対して、保持しているポインタを読み出すように指示する制御信号を出力する。
なお、受信中ポインタカウンタ171a〜171dおよび送信中ポインタカウンタ172a〜172dでは、ポインタの書き込み、あるいはカウント制御信号の出力を行うように指定されているカウンタが、廃棄制御部163からの制御信号を受け取る。
一方、ポインタカウンタ群170において、受信中ポインタカウンタ171a〜171dおよび送信中ポインタカウンタ172a〜172dは、それぞれポインタ用バス180に接続されて、ポインタの送受信を行うことが可能となっている。また、受信中ポインタカウンタ171a〜171dおよび送信中ポインタカウンタ172a〜172dはそれぞれ、カウント値の増減を指示するためのカウント制御信号を、送信キューポインタカウンタ173a〜173dに出力する。
受信中ポインタカウンタ171a〜171dは、ポインタ制御回路160のPOP制御部161からの制御信号に基づいて、ポインタスタック150からPOPされてポインタ用バス180を通じて伝送されるポインタを取得して保持するとともに、取得したポインタの数をカウントする。
また、1パケット分のポインタの格納およびポインタ数のカウントが終了すると、このときのカウント数を、指定された送信ポートに対応する送信キューポインタカウンタのカウント数に加算するように、カウント制御信号を出力する。カウント制御信号の出力後、保持していたポインタおよびカウント数をクリアする。
さらに、廃棄制御部163からの制御信号を受信すると、保持しているポインタを読み出してポインタ用バス180に対して送出し、ポインタスタック150に返却する。このとき、カウント数をクリアする。
送信中ポインタカウンタ172a〜172dは、書き込み/読み出し制御回路140からポインタ用バス180を通じて伝送されるポインタを取得して保持するとともに、取得したポインタの数をカウントする。このとき、取得したポインタ数を、同じ送信ポートに対応する送信キューポインタカウンタ173a〜173dのカウント数から順次減算するように、カウント制御信号を出力する。
また、読み出されるパケットについて他の宛先が指定されていない場合は、共有バッファ130からのデータブロックの読み出し時に、対応するポインタが、書き込み/読み出し制御回路140からポインタ用バス180に順次出力され、ポインタスタック150に返却される。このとき、対応する送信中ポインタカウンタは、カウント数をクリアする。また、他の宛先が指定されている場合は、このときのカウント数を、指定された送信ポートに対応する送信キューポインタカウンタのカウント数に加算するように、カウント制御信号を出力する。カウント制御信号の出力後、保持していたポインタおよびカウント数をクリアする。
また、廃棄制御部163からの制御信号を受信した場合は、保持しているポインタを読み出してポインタ用バス180に対して送出し、ポインタスタック150に返却する。このとき、カウント数をクリアする。
送信キューポインタカウンタ173a〜173dは、受信中ポインタカウンタ171a〜171dおよび送信中ポインタカウンタ172a〜172dからのカウント制御信号に基づいて、カウント動作を行うことにより、各送信キューに登録されているデータブロックに対して使用されているポインタの数をカウントする。そして、各送信キューでのカウント数が所定の値を超えた場合に、廃棄制御部163に対して廃棄信号を出力する。
ここで、ポインタ制御回路160内の動作と、ポインタカウンタ群170内の動作とを併せて説明する。まず、POP制御部161の処理を示すフローチャートを示し、パケット受信時の動作について説明する。
図6は、POP制御部161の処理の流れを示すフローチャートである。以下、図6に示す処理をステップ番号に沿って説明する。
[ステップS601]データ転送回路120からは、送受信インタフェース111〜114からのデータブロックを共有バッファ130に格納する際に、各データブロックに関するインタフェース情報がPOP制御部161に対して出力される。POP制御部161は、データ転送回路120からのインタフェース情報に基づいて、データブロックの共有バッファ130への格納処理が開始したか否かを判断する。そして、開始したと判断した場合にステップS602に進む。
[ステップS602]ポインタスタック150に対して、ポインタをPOPするように指示する。POPされたポインタは、ポインタ用バス180を通じて書き込み/読み出し制御回路140に出力され、さらに、ポインタカウンタ群170に出力される。
[ステップS603]指定された受信ポートに対応する受信中ポインタカウンタに対して、ポインタの書き込みを指示するための制御信号を出力する。これにより、ポインタスタック150からPOPされたポインタが、受信ポートに対応する受信中ポインタカウンタに格納され、この受信中ポインタカウンタのカウント値がカウントアップされる。
[ステップS604]ブロック位置情報に基づいて、格納処理中のデータブロックがパケットの最終のものであるか否かを判断する。最終でない場合はステップS601に戻り、最終である場合はステップS605に進む。
以上のステップS601〜S604が繰り返されることにより、1パケット分のデータブロックが共有バッファ130に格納されるとともに、これらのデータブロックに対して使用されたポインタが、対応する受信中ポインタカウンタに格納される。この受信中ポインタカウンタは、格納されたポインタ数をカウント数として保持する。
[ステップS605]上記のステップS601〜S604の処理で制御していた受信中ポインタカウンタに対して、ポインタの書き込みの終了を指示する。このとき、インタフェース情報に含まれる送信ポートが1つ選択され、この送信ポートが制御中の受信中ポインタカウンタに対して通知される。なお、送信ポートが複数指定されている場合、この処理で選択される送信ポートは、書き込み/読み出し制御回路140において選択されるものと同一となるように、あらかじめ規則を定めておく必要がある。
通知を受けた受信中ポインタカウンタは、保持しているカウント数を、通知された送信ポートに対応する送信キューポインタカウンタに加算するように、カウント制御信号を出力する。これにより、対応する送信キューにおいて使用されているポインタ数、すなわち、登録されたデータブロック数が、送信キューポインタカウンタのカウント数として保持される。
ここで、カウント制御信号を受信した送信キューポインタカウンタにおいて、カウント値が許容値を超え、廃棄信号が廃棄制御部163に出力された場合には、廃棄制御部163からPUSH制御部162に対して制御信号が出力される。これとともに、上記の制御対象となっていた受信中ポインタカウンタに対して、ポインタを読み出すように指示する制御信号が出力される。また、廃棄制御部163から書き込み/読み出し制御回路140に対して制御信号が出力されるので、書き込み/読み出し制御回路140は、送信キューへのデータブロックの登録処理を行わない。ただし、他の宛先が存在し、この宛先に対応する送信キューに格納可能である場合は、この送信キューに登録する処理が行われる。
次に、パケット送信時の動作について説明する。
図7は、パケット送信時におけるネットワークスイッチ装置100における処理の流れを示すフローチャートである。このフローチャートでは、1つの送信ポートに対するパケットの転送が行われる場合の処理を示している。以下、図7に示す処理をステップ番号に沿って説明する。
[ステップS701]データ転送回路120が、送受信インタフェースから送信要求を受信する。
[ステップS702]データ転送回路120から、読み出しを行う送信ポートが書き込み/読み出し制御回路140に通知され、書き込み/読み出し制御回路140が、読み出しアドレスを指定する。これにより、対応する送信キューからデータブロックが読み出され、データ転送回路120によって宛先に対応する送受信インタフェースに対して転送される。
[ステップS703]書き込み/読み出し制御回路140からは、読み出しに使用したポインタが、ポインタ用バス180に出力される。このとき、対応する送信中ポインタカウンタに対しては、ポインタの書き込みを指示するための制御信号が出力され、この送信中ポインタカウンタには、書き込み/読み出し制御回路140からのポインタが格納されるとともに、カウント値がカウントアップされる。さらに、この送信中ポインタカウンタから、対応する送信キューポインタカウンタに対してカウント制御信号が出力され、カウント制御信号を受信した送信キューポインタカウンタがカウントダウンされる。
[ステップS704]データ転送回路120は、読み出したデータブロックの内容から、転送すべき宛先が他に存在するか否かを判断している。ここで、宛先が他に存在しない場合のみ、このことがPUSH制御部162に対して通知される。PUSH制御部162は、この通知に応じて、ポインタスタック150に対して、PUSH動作を開始させるように制御する。これにより、書き込み/読み出し制御回路140からポインタ用バス180に出力されたポインタが、ポインタスタック150に返却される。
[ステップS705]読み出したデータブロックがパケット内の最終のものであるか否かが判断される。最終でない場合はステップS702に戻り、次のデータブロックの読み出しおよび転送が行われる。また、最終のものである場合は、ステップS706に進む。
以上のステップS701〜S705が繰り返されることにより、1パケット分のデータブロックが1つの送信ポートを通じて送信されるとともに、これらのデータブロックに対して使用されたポインタが、対応する送信中ポインタカウンタに格納される。この送信中ポインタカウンタは、格納されたポインタ数をカウント数として保持する。また、この送信中ポインタカウンタの保持するカウント数分だけ、同じ送信ポートに対応する送信キューポインタカウンタのカウント値が減算される。
[ステップS706]すべての宛先に対する転送が終了したか否かが判断される。終了した場合はステップS707に進み、終了していない場合はステップS708に進む。
[ステップS707]ポインタの格納先の送信中ポインタカウンタをクリアする。これにより、1パケット分のデータブロックの転送処理が終了される。
[ステップS708]宛先が他に存在する場合には、データ転送回路120により次の宛先に対応する送信ポートが指定される。ポインタカウンタ群170では、新たに指定された宛先に対応する送信キューポインタカウンタにカウント制御信号が出力され、送信が終了した送信ポートに対応する送信中ポインタカウンタのカウント値が加算される。
[ステップS709]ここで、カウント値が加算された送信キューポインタカウンタにおいて、カウント値が許容値を超える場合には、廃棄信号が廃棄制御部163に出力される。このとき、送信キューポインタカウンタでは、カウント値の加算を行わない。廃棄信号が出力された場合にはステップS710に進む。
また、廃棄信号が出力されなかった場合にはステップS707に進み、送信が終了した送信ポートに対応する送信中ポインタカウンタがクリアされ、処理が終了される。これにより、同じパケットの次の送信先に対応する送信キューポインタカウンタに、送信中ポインタカウンタのカウント数が加算された状態となる。また、書き込み/読み出し制御回路140の制御により、新たな宛先に対応する送信キューに対して、パケットが連結される。
[ステップS710]他の宛先があるか否かが判断される。宛先がある場合はステップS708に戻り、データ転送回路120によって他の送信ポートが指定される。また、宛先がない場合は、ステップS711に進む。
このステップでは、送信キューポインタカウンタからの廃棄信号を受信した廃棄制御部163は、PUSH制御部162に対してPUSH動作の開始を要求する。このとき、PUSH制御部162には、データ転送回路120から、他に宛先があるか否かについての情報が通知されている。他に宛先がある場合には、その宛先に対してパケットの転送を行う必要があるため、PUSH制御部162はポインタスタック150に対してPUSH動作を行うように指示しない。
[ステップS711]このステップでは、PUSH制御部162には、データ転送回路120から、他に宛先がないことが通知されている。従って、PUSH制御部162は、廃棄制御部163からの要求に応じて、ポインタスタック150に対してPUSH動作を行うように指示する。このとき、廃棄制御部163からは、送信が終了した送信ポートに対応する送信中ポインタカウンタに対して、保持しているポインタをポインタ用バス180に出力するように指示する制御信号が出力されている。この制御信号を受けた送信中ポインタカウンタは、保持しているポインタをポインタ用バス180に出力する。これにより、このポインタがポインタスタック150に返却される。さらにこの後にステップS707に進み、送信中ポインタカウンタをクリアして、処理が終了する。
以上の図6および図7において説明した処理が実行されることにより、共有バッファ130におけるデータブロックの書き込みアドレス管理を、効率よく行うことが可能となる。例えば、パケットを廃棄する場合には、ポインタ制御回路160からの指示に基づいて、受信中ポインタカウンタ171a〜171d、または送信中ポインタカウンタ172a〜172dのうちの必要なものからポインタが読み出され、ポインタスタック150に返却される。これにより、返却されたポインタに対応して、共有バッファ130内に空き領域が形成され、それらのポインタが再び利用されることにより、後続のデータブロックを共有バッファ130に確実に格納することが可能となる。
また、送信キューポインタカウンタ173a〜173dにおいて、送信キューに登録されているデータブロック数が管理されるので、送信キューが格納される送信キュー専用バッファ領域132a〜132dは常に一定容量以下に制限される。従って、例えば特定の送信ポート宛のパケットが集中して受信された場合に、格納しきれないパケットが廃棄されるため、この送信ポートにおける送信処理が他の送信ポートにおける送信処理に影響を与えず、ブロッキングが容易に防止される。
次に、共有バッファ130内に格納されたデータブロックに対する連結リスト構造を用いた管理について説明する。ここでは、以下のような2通りの管理方法を例示する。
〔第1の連結リスト管理例〕
連結リスト構造を用いた第1の管理例では、共有バッファ130内にデータブロックごとに対応する付属セル領域が設けられる。そして、書き込み/読み出し制御回路140は、1パケット内のデータブロック間の連結、および各送信キュー内におけるパケット間の連結を管理するための付属情報を生成して、付属セル領域に格納する。また、書き込み/読み出し制御回路140は、データブロック間の連結を受信ポートごとおよび送信ポートごとに管理するための各種レジスタ群を具備して、このレジスタ群を順次書き換えることにより、共有バッファ130内におけるデータブロックの書き込みおよび読み出しを制御する。
図8は、共有バッファ130内に格納されたデータブロックの構造を模式的に示す図である。なお、図8では、連結された各データブロックおよび各パケットが連続して配置されているが、共有バッファ130上の実際の物理的な書き込み位置は、この通りにはならない。
各送受信インタフェース111〜114においてパケットが受信され、データブロックに分割されると、これらのデータブロックは、ポインタによって指し示される共有バッファ130上のアドレスに格納される。このとき、各データブロックについて、付属セル領域133aとデータブロック領域133bとが形成され、分割されたデータブロックはデータブロック領域133bに格納される。
ここで、例えば、ネットワーク21からネットワーク22に転送すべきパケットを受信した場合を考えると、送受信インタフェース111から、データ転送回路120によって共有バッファ130に供給された1パケット分のデータブロックは、共有バッファ130内の対応する受信パケット専用バッファ領域131aに格納される。また、このとき、各データブロックの付属セル領域133aには、先頭のデータブロックから順に、それに続くデータブロックの位置を指し示すポインタが格納される。図8では、このようなポインタを“ポインタP1”として示している。1パケット分のデータブロックの格納が完了した時点では、最終データブロックを除くすべてのデータブロックの付属セル領域133aに、後続のデータブロックに使用されたポインタP1が格納される。これにより、パケット内においてデータブロック間が連結される。
続いて、これらのデータブロックは、ネットワーク22に対応する送信キューに登録される。このとき、後述するレジスタ群を用いて、送信キュー内に登録されたうちの最終パケットを常に認識しておき、送信キューにすでに登録されているパケットがあった場合には、この最終パケットの先頭データブロックの付属セル領域133aに、新たに登録するパケットの先頭データブロックの位置を指し示すポインタを格納する。図8では、このようなポインタを“ポインタP2”として示している。これにより、送信キュー内においてパケット間が連結される。
また、書き込み/読み出し制御回路140では、送信キュー内のデータブロックを読み出すためのポインタを、レジスタ群において常に保持しており、データブロックの読み出し動作ごとに、読み出したデータブロックの付属セル領域133aを参照して、次に読み出すべきデータブロックのポインタを抽出し、レジスタ群の格納データを更新していく。
次に、図9は、書き込み/読み出し制御回路140が具備するレジスタ群の構成を示す図である。
図9に示すように、書き込み/読み出し制御回路140は、各受信ポートに対応した受信先頭アドレスレジスタ141a〜141d、および受信最終アドレスレジスタ142a〜142dと、各送信ポートに対応した送信済パケットアドレスレジスタ143a〜143d、送信ブロックアドレスレジスタ144a〜144d、送信最終アドレスレジスタ145a〜145d、および次送信パケットアドレスレジスタ146a〜146dを具備する。
受信先頭アドレスレジスタ141a〜141dは、受信したパケットを共有バッファ130に格納している際に、このパケット中の先頭データブロックを指し示すポインタを保持する。受信最終アドレスレジスタ142a〜142dは、このパケット中の最終データブロックを指し示すポインタを保持する。
送信済パケットアドレスレジスタ143a〜143dは、共有バッファ130内に登録されている各送信キューにおいて、現在送信中または送信が終了したパケットの先頭データブロックを指し示すポインタを保持する。送信ブロックアドレスレジスタ144a〜144dは、各送信キューにおいて、次に送信が予定されているデータブロックを指し示すポインタを保持する。送信最終アドレスレジスタ145a〜145dは、各送信キューにおいて最後に登録されたパケットの先頭データブロックを指し示すポインタを保持する。次送信パケットアドレスレジスタ146a〜146dは、次に送信が予定されているパケットの先頭データブロックを指し示すポインタを保持する。
次に、これらのレジスタ群と、各データブロックの付属セル領域133aに格納された情報に基づく書き込み/読み出し制御回路140の処理について説明する。なお、以下の図10および図11に示すフローチャートの説明では、必要に応じて、ネットワークスイッチ装置100内の他の要素における処理についての説明も加える。
図10は、パケットの受信時における書き込み/読み出し制御回路140の処理の流れを示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS1001]例えば、送受信インタフェース111においてパケットが受信され、データ転送回路120に対して受信要求が通知されると、データ転送回路120は、分割されたデータブロックのインタフェース情報を、書き込み/読み出し制御回路140に出力する。書き込み/読み出し制御回路140は、インタフェース情報の受信を監視し、これを受信すると、共有バッファ130に対するデータブロックの格納処理が開始されたと判断して、ステップS1002に進む。
[ステップS1002]ポインタスタック150からポインタがPOPされ、書き込み/読み出し制御回路140は、ポインタ用バス180を通じてこのポインタを取得する。そして、このポインタの指し示す共有バッファ130内のアドレスを基に、データブロックの書き込みアドレスを指定する。これにより、データブロックが共有バッファ130に格納される。
[ステップS1003]ステップS1002で取得したポインタを、以下の条件に従って付属セル領域133aや、受信先頭アドレスレジスタ141a、受信最終アドレスレジスタ142aに対して書き込む。これらの条件は、インタフェース情報に含まれるブロック位置情報に基づいて判断される。
(S1003−1)共有バッファ130に格納したデータブロックが、パケットの先頭データブロックである場合は、取得したポインタを対応する受信先頭アドレスレジスタ141aおよび受信最終アドレスレジスタ142aに書き込む。
(S1003−2)格納したデータブロックが、パケット内の先頭および最終以外のデータブロックである場合、受信最終アドレスレジスタ142aに格納されたポインタを参照する。このポインタは、直前のデータブロックの書き込みアドレスを指し示すものであり、書き込み/読み出し制御回路140は、このデータブロックの付属セル領域133aに、ステップS1002で取得したポインタを格納する。これにより、同一パケットにおける直前のデータブロックとが連結される。
また、ステップS1002で取得したポインタを用いて、受信最終アドレスレジスタ142aを更新する。
(S1003−3)格納したデータブロックが、パケット内の最終データブロックである場合、受信最終アドレスレジスタ142aに格納されたポインタを参照する。そして、このポインタが指し示すアドレスに書き込まれたデータブロックの付属セル領域133aに、ステップS1002で取得したポインタを格納し、直前のデータブロックとを連結させる。また、格納したデータブロックの付属セル領域133aに、後続のデータブロックが存在しないことを示す情報を書き込む。
[ステップS1004]ブロック位置情報に基づいて、転送処理中のデータブロックがパケット内の最終データブロックであるか否かを判断する。最終データブロックでない場合は、ステップS1001に戻り、後続データブロックの格納処理の開始を待機する。また、最終データブロックである場合は、ステップS1005に進む。
以上のステップS1001〜S1004の処理が繰り返されることにより、1パケット分のデータブロックが、共有バッファ130内に格納される。このとき、このパケット内の先頭データブロックの書き込みアドレスが、受信先頭アドレスレジスタ141aに保持され、最終データブロック、またはこの直前のデータブロックの書き込みアドレスが、受信最終アドレスレジスタ142aに保持される。
なお、以上のステップS1001〜S1004の処理は、図6で示したステップS601〜S605の処理に対応する。すなわち、この時点において、パケットの格納に使用されたポインタとその数が受信中ポインタカウンタ171aに保持される。
次に、送信キューへの登録処理が行われる。
[ステップS1005]インタフェース情報に基づいて、宛先の送信ポートを選択する。なお、ここでは、宛先としてネットワーク22が選択されたものとして説明する。また、このとき、受信中ポインタカウンタ171aのカウント数が、送信キューポインタカウンタ173bのカウント値に加算される。
[ステップS1006]送信キューポインタカウンタ173bにおいて、カウント値が許容値を超え、かつ他の宛先が存在しない場合、廃棄制御部163から書き込み/読み出し制御回路140に対して制御信号が出力される。書き込み/読み出し制御回路140は、この制御信号を受信した場合はステップS1008に進み、受信しなかった場合はステップS1007に進む。
[ステップS1007]受信したパケットを、宛先に対応する送信キューに登録する処理を行う。ここでは、選択した送信ポートに対応する次送信パケットアドレスレジスタ146bを参照して、このレジスタにデータが格納されているか否かによって、宛先の送信キューに先行するパケットが登録されているか否かを判断する。そして、受信先頭アドレスレジスタ141aに格納されたポインタを、送信用の各種レジスタや付属セルに書き込むことにより、パケットを送信キューに連結する。
(S1007−1)宛先に対応する送信キューに、先行するパケットが登録されている場合、受信先頭アドレスレジスタ141aに格納されているポインタを抽出する。そして、宛先に対応する送信最終アドレスレジスタ145bに格納されたポインタを参照して、送信キュー内にすでに登録されていたうちの最終パケットの先頭データブロックの書き込み位置を抽出し、このデータブロックの付属セル領域133aに、受信先頭アドレスレジスタ141aから抽出したポインタを格納する。これにより、送信キュー内の先行するパケットにおいて、その先頭データブロックの付属セル領域133aに、後続のデータブロックを指し示すポインタと、後続のパケットの先頭データブロックを指し示すポインタとが格納され、先行するパケットと新たに登録するパケットとの間が連結される。
また、送信最終アドレスレジスタ145bには、受信先頭アドレスレジスタ141aに格納されていたポインタを書き込む。これにより、送信キュー内の最終パケットの先頭位置を指し示すポインタが更新される。
(S1007−2)宛先に対応する送信キューに、先行するパケットが登録されていない場合、受信先頭アドレスレジスタ141aに格納されているポインタを、宛先に対応する送信済パケットアドレスレジスタ143b、送信ブロックアドレスレジスタ144b、送信最終アドレスレジスタ145b、および次送信パケットアドレスレジスタ146bにそれぞれ格納する。これにより、書き込み/読み出し制御回路140は、対応する送信キューから先行して読み出すパケットの読み出し位置を認識する。
[ステップS1008]ステップS1006において廃棄制御部163からの制御信号を受信した場合は、インタフェース情報を参照して、宛先として他の送信ポートが指定されているか否かを判断する。他の宛先が存在する場合は、ステップS1005に戻り、新たな宛先の送信ポートを選択する。
以上の処理により、共有バッファ130上の送信キューにパケットが正しく登録された場合には、この送信キュー上のデータブロックが、ポインタを用いた連結リスト構造として管理されることになる。次に、この連結リスト構造に従ってポインタを順次抽出することにより、送信キューからデータブロックを順次読み出し、宛先のネットワークに対して送信する。
図11は、パケットの送信時における書き込み/読み出し制御回路140の処理の流れを示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS1101]例えば、ネットワーク22に対するパケットの送信が行われる場合、送受信インタフェース112からデータ転送回路120に対して送信要求が通知されると、データ転送回路120は、これに対応する送信ポート情報を含むインタフェース情報を、書き込み/読み出し制御回路140に出力する。書き込み/読み出し制御回路140は、インタフェース情報の受信を監視し、これを受信すると、共有バッファ130からのデータブロックの転送が開始されたと判断して、ステップS1102に進む。
[ステップS1102]送信ポートに対応する送信ブロックアドレスレジスタ144bに格納されているポインタを参照し、このポインタに基づいて共有バッファ130の読み出しアドレスを指定する。これにより、対応する送信キューの先頭データブロックと、その付属セル領域133aに格納されたポインタとが読み出され、データブロックはデータ転送回路120を通じて送受信インタフェース112に転送される。
[ステップS1103]読み出された付属セル領域133aに格納されたポインタと、送信ブロックアドレスレジスタ144bのポインタとを用いて、以下の条件に従って、送信済パケットアドレスレジスタ143b、送信ブロックアドレスレジスタ144b、送信最終アドレスレジスタ145b、および次送信パケットアドレスレジスタ146bのポインタを更新する。
(S1103−1)まず、送信ブロックアドレスレジスタ144bに格納されているポインタを、送信済パケットアドレスレジスタ143bに書き込む。これにより、読み出し中のパケットの先頭データブロックを指し示すポインタが保持される。
そして、読み出したデータブロックがパケット中の先頭であり、付属セル領域133a内に、後続パケットへのポインタ(図10のステップS1007−1で格納されたポインタ)が格納されていた場合は、このポインタを次送信パケットアドレスレジスタ146bに格納する。これにより、送信キュー内に次のパケットが登録されていた場合に、このパケットの先頭アドレスを認識することが可能となる。
また、付属セル領域133aに格納された後続パケットへのポインタ(図10のステップS1102−2またはS1102−3で格納されたポインタ)を、送信ブロックアドレスレジスタ144bに格納する。これにより、次に読み出すべきデータブロックのアドレスを認識することが可能となる。
(S1103−2)読み出したデータブロックがパケット中の先頭および最終でない場合、付属セル領域133aに格納されていた後続データブロックへのポインタを、送信ブロックアドレスレジスタ144bに格納する。
(S1103−3)読み出したデータブロックがパケット中の最終である場合、次送信パケットアドレスレジスタ146bに格納されていたポインタを、送信ブロックアドレスレジスタ144bに格納する。
[ステップS1104]ステップS1102で参照したポインタを、ポインタ用バス180に対して出力する。この処理は、図7のステップS702に対応し、出力されたポインタは、対応する送信中ポインタカウンタ172bに格納されてカウントアップが行われるとともに、対応する送信キューポインタカウンタ173aがカウントダウンされる。
[ステップS1105]読み出したデータブロックがパケット中の最終のものであるか否かを判定する。最終でない場合は、ステップS1101に戻り、次のデータブロックの転送が開始されるのを待機する。以後、1パケット分のデータブロックが読み出されるまで、ステップS1101〜S1105の処理が繰り返され、処理が終了する。
なお、以上の処理が終了した時点では、読み出された1パケット分のデータブロックに使用されていたポインタが、すべて送信中ポインタカウンタ172bに格納され、このポインタ数が保持される。また、このポインタ数分だけ送信キューポインタカウンタ173bのカウント数が減算されている。
また、この後、インタフェース情報に他の宛先の送信ポートが含まれている場合には、他の送信ポートを選択して、この送信ポートに対応する送信キューに、パケットを連結する。このとき、新たな送信キューに対応する送信キューポインタカウンタに、送信中ポインタカウンタ172bのカウント値が加算され、このカウント値が許容値以内である場合に、パケットの登録が許可される。
パケットの登録のためには、送信済パケットアドレスレジスタ143bに格納されているポインタを取り出す。これとともに、新たな送信キュー内に格納されていた最終パケットの先頭データブロックを抽出して、その付属セル領域133aに、送信済パケットアドレスレジスタ143bからのポインタを格納して、パケット間の連結を行う。
以上説明した連結データ構造を用いた第1の管理方法では、データブロックとともに付属セル領域133aが共有バッファ130内に形成され、この付属セル領域133aに後続のデータブロックやパケットの先頭部のポインタが格納される。これにより、パケット内のデータブロック、および送信キュー内のパケットが、容易に連結される。また、受信ポートおよび送信ポートごとに設けられた合計5種類のレジスタを用いて、送信キューの登録処理、および送信キューからの読み出し処理が制御される。このため、安価な装置構成で、共有バッファ130に対する書き込みおよび読み出しの処理が効率よく管理される。
〔第2の連結リスト管理例〕
連結リスト構造を用いた第2の管理例では、書き込み/読み出し制御回路140に、受信ポートごと、および送信ポートごとにメモリ領域を設け、これらのメモリ領域に、データブロックの書き込みアドレスを指し示すポインタを順次格納することにより、データブロック間の連結を管理する。
図12は、書き込み/読み出し制御回路140が具備するメモリの構成を示す図である。
図12に示すように、書き込み/読み出し制御回路140は、各受信ポートに対応した受信用アドレスメモリ147a〜147dと、各送信ポートに対応した送信用アドレスメモリ148a〜148dを具備する。
受信用アドレスメモリ147a〜147dは、受信したパケットを分割したデータブロックを、共有バッファ130に格納する際に、後続のデータブロックを指し示すポインタが順次格納されるメモリである。また、送信用アドレスメモリ148a〜148dは、パケットが送信キューに登録される際に、後続のデータブロックを指し示すポインタが順次格納されるメモリである。
これらのメモリはFIFO(First In First Out)制御により、ポインタの格納および取り出しができるようになっている。また、FIFO制御に加えてLIFO(Last In First Out)制御が可能となっていてもよい。
次に、これらのメモリを使用した書き込み/読み出し制御回路140の処理について説明する。なお、以下の図13および図14に示すフローチャートの説明では、必要に応じて、ネットワークスイッチ装置100内の他の要素における処理についての説明も加える。
図13は、パケットの受信時における書き込み/読み出し制御回路140の処理の流れを示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS1301およびS1302]これらのステップの処理は、それぞれ図10に示したステップS1001およびS1002と同じである。すなわち、例えば、送受信インタフェース111からデータ転送回路120に対して受信要求が通知されると、データ転送回路120は、分割されたデータブロックのインタフェース情報を、書き込み/読み出し制御回路140に出力する。書き込み/読み出し制御回路140は、インタフェース情報を受信した後、ポインタスタック150からPOPされたポインタを取得して、このポインタの指し示す共有バッファ130内のアドレスを、データブロックの書き込みアドレスとして指定する。これにより、データブロックが共有バッファ130に格納される。
[ステップS1303]取得したポインタを、受信ポートに対応する受信用アドレスメモリ147aにFIFO方式で格納する。
[ステップS1304]転送処理中のデータブロックがパケット内の最終データブロックであるか否かを判断し、最終データブロックでない場合は、ステップS1301に戻る。そして、以上のステップS1301〜S1304の処理が繰り返されることにより、1パケット分のデータブロックが、共有バッファ130内に格納される。これとともに、格納したデータブロックを指し示すポインタが、受信用アドレスメモリ147aに順次格納され、パケット内のデータブロック間が連結される。
なお、このとき、受信用アドレスメモリ147aに格納されたものと同じポインタが、受信中ポインタカウンタ171aに格納されている。この後、格納したパケットを、例えばネットワーク22に対応する送信キューに登録する処理が行われる。
[ステップS1305]宛先の送信ポートを選択する。このとき、受信中ポインタカウンタ171aのカウント数が、宛先に対応する送信キューポインタカウンタ173bに加算される。
[ステップS1306]送信キューポインタカウンタ173bにおいてカウント値が許容値を超えた場合、廃棄制御部163から制御信号が出力される。この制御信号が出力された場合はステップS1309に進み、出力されなかった場合はステップS1307に進む。
[ステップS1307]受信用アドレスメモリ147aに格納されていたポインタを、宛先に対応する送信用アドレスメモリ148bに対して、FIFO方式で格納する。これにより、宛先に対応する送信キュー内でのパケット間の連結が行われる。
[ステップS1308]受信用アドレスメモリ147aをクリアし、処理を終了する。
[ステップS1309]他の宛先が指定されているか否かを判定し、指定されている場合はステップS1305に戻って、新たな送信ポートを選択する。
また、指定されていない場合は、ステップS1308に進む。このとき、受信中ポインタカウンタ171aに保持されていたポインタが、ポインタスタック150に返却される。なお、受信用アドレスメモリ147a〜147dにおいてLIFO制御が可能である場合は、受信中ポインタカウンタ171aの代わりに、受信用アドレスメモリ147aに格納されていたポインタを、ポインタスタック150に返却するようにしてもよい。
次に、図14は、パケットの送信時における書き込み/読み出し制御回路140の処理の流れを示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS1401]例えば、ネットワーク22に対するパケットの送信が行われる場合、図11のステップS1101と同様に、送受信インタフェース112からデータ転送回路120に対して送信要求が通知され、データ転送回路120から、これに対応する送信ポート情報を含むインタフェース情報が、書き込み/読み出し制御回路140に出力される。書き込み/読み出し制御回路140は、インタフェース情報を受信すると、データブロックの転送開始と判断して、ステップS1402に進む。
[ステップS1402]送信ポートに対応する送信用アドレスメモリ148bに格納されているポインタをFIFO方式で取り出し、このポインタに基づいて共有バッファ130の読み出しアドレスを指定する。これにより、対応する送信キューの先頭データブロックが読み出され、データ転送回路120を通じて送受信インタフェース112に転送される。
[ステップS1403]送信用アドレスメモリ148bから取り出したポインタを、ポインタ用バス180に出力する。出力されたポインタは、対応する送信中ポインタカウンタ172bに格納されてカウントアップが行われるとともに、対応する送信キューポインタカウンタ173aがカウントダウンされる。
[ステップS1404]読み出したデータブロックがパケット中の最終のものであるか否かを判定し、最終でない場合はステップS1401に戻る。以後、1パケット分のデータブロックが読み出されるまで、ステップS1401〜S1404の処理が繰り返され、処理が終了される。
なお、以上の処理が終了した時点では、図11の場合と同様に、読み出された1パケット分のデータブロックに使用されていたポインタが、すべて送信中ポインタカウンタ172bに格納され、このポインタ数が保持される。また、このポインタ数分だけ送信キューポインタカウンタ173bのカウント数が減算されている。
また、この後、インタフェース情報に他の宛先の送信ポートが含まれている場合には、他の送信ポートを選択して、この送信ポートに対応する送信キューに、パケットを連結する。送信キューへの連結の可不可については、対応する送信キューポインタカウンタのカウント数、および対応する宛先ポートに対する廃棄信号のアサートの有無に基づいて判定される。
パケットの登録のためには、例えば、送信中ポインタカウンタ172bに格納されていたポインタを、ポインタ用バス180を通じて受け取り、新たな送信キューに対応する送信用アドレスレジスタに対して格納する。また、送信用アドレスメモリ148a〜148bにおいてLIFO制御が可能である場合は、送信中ポインタカウンタ172bの代わりに、送信用アドレスメモリ148bからLIFO方式でポインタを取り出して、宛先の送信用アドレスレジスタに格納してもよい。このような処理により、新たな送信キューに対してパケットが容易に連結される。
以上説明した連結データ構造を用いた第2の管理例では、データブロックの書き込み時に、使用されているポインタがメモリに順次格納される。そして、メモリに格納されたポインタを順に取り出すことにより、読み出しアドレスを指定する。このような処理により、パケット内のデータブロック間の連結、および送信キュー内のパケット間の連結が効率よく管理される。
ここで、以上の第2の連結リスト管理例では、第1の管理例と比較して、使用されているポインタを格納する処理が非常に単純になる。その反面、第2の管理例では、共有バッファ130に格納するデータブロック数分のポインタを格納可能なメモリが必要となり、第1の管理例で使用されたレジスタ群と比較して、大容量のメモリを用意する必要がある。このため、部品コストが上昇し、メモリの設置面積が大きくなる。また、FIFO制御だけでなく、LIFO制御を可能とした場合、メモリのコストはさらに上昇する。
以上説明したように、本発明のネットワーク装置では、1つのパケット当たりで許容される最大数のデータブロックが登録可能な受信キューが受信元のネットワークごとに形成されるとともに、パケットの転送先のネットワークごとに一定数のデータブロックを登録可能な送信キューが形成され、各受信キューに対する1つのパケット分のデータブロックの登録が完了すると、対応する受信キューが宛先に対応する送信キューに連結されることで、バッファに書き込まれたデータブロックが、宛先に対応する送信キューにパケット単位で順次登録されるため、データブロックの書き込みに1つのバッファが用いられながらも、ブロッキングの発生が防止される。また、受信したパケットは1つ以上の固定長のデータブロックに分割されてバッファに書き込まれるとともに、各パケット内のデータブロック間の連結と、各送信キュー内のパケット間の連結とが、各データブロックのバッファにおける書き込み位置に基づく連結リスト構造として管理されて、各送信キューに登録されたデータブロックが連結リスト構造に従って順次読み出されるため、バッファの使用効率を高めることができる。さらに、受信キューが宛先に対応する送信キューに連結される際には、その宛先に対応する送信キューへのデータブロックの登録数が登録可能数を超えた場合は、この時点で登録処理中のデータブロックを含むパケットが廃棄されるので、ブロッキングの発生をより確実に防止できる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
本発明の原理を説明するための原理図である。 本発明の第1の実施の形態に係るネットワークスイッチ装置の接続例を示す図である。 本発明の第1の実施の形態に係るネットワークスイッチ装置の内部構成を示すブロック図である。 共有バッファ内におけるデータ格納の様子を模式的に示す図である。 ポインタ制御回路およびポインタカウンタ群の内部構成例を示すブロック図である。 POP制御部の処理の流れを示すフローチャートである。 パケット送信時におけるPUSH制御部の処理の流れを示すフローチャートである。 第1の管理方法において、共有バッファ内に格納されたデータブロックの構造を模式的に示す図である。 第1の連結リスト管理例において、書き込み/読み出し制御回路が具備するレジスタ群の構成を示す図である。 第1の連結リスト管理例において、パケットの受信時における書き込み/読み出し制御回路の処理の流れを示すフローチャートである。 第1の連結リスト管理例において、パケットの送信時における書き込み/読み出し制御回路の処理の流れを示すフローチャートである。 第2の連結リスト管理例において、書き込み/読み出し制御回路が具備するメモリの構成を示す図である。 第2の連結リスト管理例において、パケットの受信時における書き込み/読み出し制御回路の処理の流れを示すフローチャートである。 第2の連結リスト管理例において、パケットの送信時における書き込み/読み出し制御回路の処理の流れを示すフローチャートである。 従来のネットワークスイッチ装置の構成例を示す図である。 共有バッファを具備する従来のネットワークスイッチ装置の構成例を示す図である。
符号の説明
1 バッファ
2 パケット分割回路
3 バッファ制御回路
4−1〜n 送信キュー
5 ポインタスタック
21〜24 ネットワーク
21a、22a、23a、24a 端末装置
100 ネットワークスイッチ装置
111〜114 送受信インタフェース
120 データ転送回路
130 共有バッファ
140 書き込み/読み出し制御回路
150 ポインタスタック
160 ポインタ制御回路
170 ポインタカウンタ群
180 ポインタ用バス

Claims (13)

  1. 可変長のパケットを複数のネットワーク間で転送するネットワークスイッチ装置において、
    受信したパケットのデータおよび送信するパケットのデータの各格納領域として共用されるバッファと、
    受信した前記パケットを1つ以上の固定長のデータブロックに分割して前記バッファに供給するパケット分割回路と、
    前記パケットの転送先の前記ネットワークごとに一定数の前記データブロックを登録可能な送信キューを形成して、分割された前記データブロックを前記バッファに書き込んだ後、その宛先に対応する前記送信キューに前記パケット単位で順次登録し、かつ、前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを、前記各データブロックの前記バッファにおける書き込み位置に基づく連結リスト構造として管理して、前記各送信キューに登録された前記データブロックを前記連結リスト構造に従って順次読み出すバッファ制御回路と、
    を有し、
    前記バッファ制御回路は、1つの前記パケット当たりで許容される最大数の前記データブロックが登録可能な受信キューを、受信元の前記ネットワークごとに形成し、前記各受信キューに対する1つの前記パケット分の前記データブロックの登録が完了すると、対応する前記受信キューを宛先に対応する前記送信キューに連結し、その連結の際に、宛先に対応する前記送信キューへの前記データブロックの登録数が登録可能数を超えた場合は、この時点で登録処理中の前記データブロックを含む前記パケットを廃棄することを特徴とするネットワークスイッチ装置。
  2. 可変長のパケットを複数のネットワーク間で転送するネットワークスイッチ装置において、
    受信したパケットのデータおよび送信するパケットのデータの各格納領域として共用されるバッファと、
    受信した前記パケットを1つ以上の固定長のデータブロックに分割して前記バッファに供給するパケット分割回路と、
    前記パケットの転送先の前記ネットワークごとに一定数の前記データブロックを登録可能な送信キューを形成して、分割された前記データブロックを前記バッファに書き込んだ後、その宛先に対応する前記送信キューに前記パケット単位で順次登録し、かつ、前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを、前記各データブロックの前記バッファにおける書き込み位置に基づく連結リスト構造として管理するバッファ制御回路と、
    を有し、
    前記バッファ制御回路は、
    前記バッファにおける前記データブロックの書き込み位置を指し示すポインタを一元的に保持するポインタスタックを具備して、前記バッファへの前記データブロックの書き込み時に前記ポインタスタックから前記ポインタを取得し、取得した前記ポインタを用いて前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを管理し、
    前記各パケット内の後続の前記データブロックの書き込み位置を示す前記ポインタを、前記データブロックとともに付属データとして前記バッファに書き込み、
    同一の前記送信キューに複数の前記パケットが登録された場合に、後続パケットの先頭に位置する前記データブロックを指し示す前記ポインタを、先行パケットの先頭に位置する前記データブロックの前記付属データとしてさらに前記バッファに書き込むことを特徴とするネットワークスイッチ装置。
  3. 前記バッファ制御回路は、前記各送信キュー内に登録されたうち、次に送信が予定されている前記パケットの先頭に位置する前記データブロックを指し示す前記ポインタと、次に送信が予定されている前記データブロックを指し示す前記ポインタとを、それぞれ次送信パケットアドレスレジスタおよび送信ブロックアドレスレジスタに保持し、前記各レジスタを参照して前記バッファからの前記データブロックの読み出しアドレスを指定することを特徴とする請求項記載のネットワークスイッチ装置。
  4. 前記バッファ制御回路は、前記各送信キューから前記データブロックを読み出すたびに、読み出した前記データブロックの前記付属データに基づいて前記送信ブロックアドレスレジスタを更新し、前記パケットを読み出すたびに、読み出した前記パケットの先頭に位置する前記データブロックの前記付属データに基づいて前記次送信パケットアドレスレジスタを更新することを特徴とする請求項記載のネットワークスイッチ装置。
  5. 可変長のパケットを複数のネットワーク間で転送するネットワークスイッチ装置において、
    受信したパケットのデータおよび送信するパケットのデータの各格納領域として共用されるバッファと、
    受信した前記パケットを1つ以上の固定長のデータブロックに分割して前記バッファに供給するパケット分割回路と、
    前記パケットの転送先の前記ネットワークごとに一定数の前記データブロックを登録可能な送信キューを形成して、分割された前記データブロックを前記バッファに書き込んだ後、その宛先に対応する前記送信キューに前記パケット単位で順次登録し、かつ、前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを、前記各データブロックの前記バッファにおける書き込み位置に基づく連結リスト構造として管理するバッファ制御回路と、
    を有し、
    前記バッファ制御回路は、前記バッファにおける前記データブロックの書き込み位置を指し示すポインタを一元的に保持するポインタスタックを具備して、前記バッファへの前記データブロックの書き込み時に前記ポインタスタックから前記ポインタを取得し、取得した前記ポインタを用いて前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを管理し、
    前記バッファ制御回路は、さらに、
    受信元の前記ネットワークごとに設けられて、前記パケットの受信時に前記ポインタスタックから取得した前記ポインタが順次格納されるとともに、格納されているポインタ数をカウントする受信中ポインタカウンタと、
    転送先の前記ネットワークごとに設けられて、前記各送信キューに登録された前記データブロックに対応するポインタ数をカウントする送信キューポインタカウンタと、
    転送先の前記ネットワークごとに設けられて、前記送信キューから送信される前記パケットに対応する前記ポインタが順次格納されるとともに、格納されているポインタ数をカウントする送信中ポインタカウンタと、
    を具備して、受信した前記パケットを宛先に対応する前記送信キューに登録する際に、対応する前記受信中ポインタカウンタのカウント値を宛先に対応する前記送信キューポインタカウンタのカウント値に合算し、前記パケットを前記送信キューから送信する際に、対応する前記送信キューポインタカウンタを順次カウントダウンするとともに、対応する前記送信中ポインタカウンタを順次カウントアップすることを特徴とするネットワークスイッチ装置。
  6. 前記バッファ制御回路は、前記送信キューからの前記パケットの送信時に前記ポインタを前記ポインタスタックにPUSHして返却することを特徴とする請求項5記載のネットワークスイッチ装置。
  7. 前記バッファ制御回路は、前記送信キューからの前記パケットの送信後に、さらに他の前記ネットワークへの転送を行う場合には、送信済みの前記送信キューに対応する前記送信中ポインタカウンタのカウント値を、転送先の前記ネットワークに対応する前記送信キューポインタカウンタのカウント値に合算することを特徴とする請求項記載のネットワークスイッチ装置。
  8. 前記バッファ制御回路は、受信した前記パケットを宛先に対応する前記送信キューに登録する際に、宛先に対応する前記送信キューポインタカウンタのカウント値が一定値を超えた場合には、登録処理中の前記パケットを廃棄するとともに、対応する前記受信中ポインタカウンタに格納されていた前記ポインタを前記ポインタスタックにPUSHして返却することを特徴とする請求項記載のネットワークスイッチ装置。
  9. 前記バッファ制御回路は、前記各送信キューに登録した前記データブロックの書き込み位置を指し示す前記ポインタを格納するための送信用ブロック位置メモリを送信先の前記ネットワークごとに具備し、
    前記送信用ブロック位置メモリを参照して前記バッファからの前記データブロックの読み出しアドレスを指定することを特徴とする請求項記載のネットワークスイッチ装置。
  10. 前記バッファ制御回路は、分割した前記データブロックが前記バッファに書き込まれた後、同一パケット内の後続の前記データブロックの書き込み位置を指し示す前記ポインタが順次格納される受信用ブロック位置メモリをさらに具備し、
    前記送信キューに対する前記パケットの登録時に、前記受信用ブロック位置メモリに格納されていた該当する前記ポインタを登録先の前記送信キューに対応する前記送信用ブロック位置メモリに格納することを特徴とする請求項記載のネットワークスイッチ装置。
  11. 可変長のパケットを1つのバッファに一旦蓄積しながら複数のネットワーク間で転送するネットワークスイッチ方法において、
    受信した前記パケットを1つ以上の固定長のデータブロックに分割して前記バッファに供給するパケット分割ステップと、
    前記パケットの転送先の前記ネットワークごとに一定数の前記データブロックを登録可能な送信キューを形成して、分割された前記データブロックを前記バッファに書き込んだ後、その宛先に対応する前記送信キューに前記パケット単位で順次登録し、かつ、前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを、前記各データブロックの前記バッファにおける書き込み位置に基づく連結リスト構造として管理して、前記各送信キューに登録された前記データブロックを前記連結リスト構造に従って順次読み出すバッファ制御ステップと、
    を含み、
    前記バッファ制御ステップでは、1つの前記パケット当たりで許容される最大数の前記データブロックが登録可能な受信キューを、受信元の前記ネットワークごとに形成し、前記各受信キューに対する1つの前記パケット分の前記データブロックの登録が完了すると、対応する前記受信キューを宛先に対応する前記送信キューに連結し、その連結の際に、宛先に対応する前記送信キューへの前記データブロックの登録数が登録可能数を超えた場合は、この時点で登録処理中の前記データブロックを含む前記パケットを廃棄することを特徴とするネットワークスイッチ方法。
  12. 可変長のパケットを1つのバッファに一旦蓄積しながら複数のネットワーク間で転送するネットワークスイッチ方法において、
    受信した前記パケットを1つ以上の固定長のデータブロックに分割して前記バッファに供給するパケット分割ステップと、
    前記パケットの転送先の前記ネットワークごとに一定数の前記データブロックを登録可能な送信キューを形成して、分割された前記データブロックを前記バッファに書き込んだ後、その宛先に対応する前記送信キューに前記パケット単位で順次登録し、かつ、前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを、前記各データブロックの前記バッファにおける書き込み位置に基づく連結リスト構造として管理するバッファ制御ステップと、
    を含み、
    前記バッファ制御ステップでは、
    前記バッファにおける前記データブロックの書き込み位置を指し示すポインタを一元的に保持するポインタスタックを用いて、前記バッファへの前記データブロックの書き込み時に前記ポインタスタックから前記ポインタを取得し、取得した前記ポインタを用いて前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを管理し、
    前記各パケット内の後続の前記データブロックの書き込み位置を示す前記ポインタを、前記データブロックとともに付属データとして前記バッファに書き込むとともに、同一の前記送信キューに複数の前記パケットが登録された場合に、後続パケットの先頭に位置する前記データブロックを指し示す前記ポインタを、先行パケットの先頭に位置する前記データブロックの前記付属データとしてさらに前記バッファに書き込むことで、前記データブロック間の連結および前記パケット間の連結を管理する、
    ことを特徴とするネットワークスイッチ方法。
  13. 可変長のパケットを1つのバッファに一旦蓄積しながら複数のネットワーク間で転送するネットワークスイッチ方法において、
    受信した前記パケットを1つ以上の固定長のデータブロックに分割して前記バッファに供給するパケット分割ステップと、
    前記パケットの転送先の前記ネットワークごとに一定数の前記データブロックを登録可能な送信キューを形成して、分割された前記データブロックを前記バッファに書き込んだ後、その宛先に対応する前記送信キューに前記パケット単位で順次登録し、かつ、前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを、前記各データブロックの前記バッファにおける書き込み位置に基づく連結リスト構造として管理するバッファ制御ステップと、
    を含み、
    前記バッファ制御ステップでは、
    前記バッファにおける前記データブロックの書き込み位置を指し示す前記ポインタを一元的に保持するポインタスタックを用いて、前記バッファへの前記データブロックの書き込み時に前記ポインタスタックから前記ポインタを取得し、取得した前記ポインタを用いて前記各パケット内の前記データブロック間の連結と、前記各送信キュー内の前記パケット間の連結とを管理し、
    受信元の前記ネットワークごとに設けられて、前記パケットの受信時に前記ポインタスタックから取得した前記ポインタが順次格納されるとともに、格納されているポインタ数をカウントする受信中ポインタカウンタと、
    転送先の前記ネットワークごとに設けられて、前記各送信キューに登録された前記データブロックに対応するポインタ数をカウントする送信キューポインタカウンタと、
    転送先の前記ネットワークごとに設けられて、前記送信キューから送信される前記パケットに対応する前記ポインタが順次格納されるとともに、格納されているポインタ数をカウントする送信中ポインタカウンタと、
    を用いて、受信した前記パケットを宛先に対応する前記送信キューに登録する際に、対応する前記受信中ポインタカウンタのカウント値を宛先に対応する前記送信キューポインタカウンタのカウント値に合算し、前記パケットを前記送信キューから送信する際に、対応する前記送信キューポインタカウンタを順次カウントダウンするとともに、対応する前記送信中ポインタカウンタを順次カウントアップする、
    ことを特徴とするネットワークスイッチ方法。
JP2004567119A 2003-01-20 2003-01-20 ネットワークスイッチ装置およびネットワークスイッチ方法 Expired - Fee Related JP3865748B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2003/000436 WO2004066571A1 (ja) 2003-01-20 2003-01-20 ネットワークスイッチ装置およびネットワークスイッチ方法

Publications (2)

Publication Number Publication Date
JPWO2004066571A1 JPWO2004066571A1 (ja) 2006-05-18
JP3865748B2 true JP3865748B2 (ja) 2007-01-10

Family

ID=32750568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004567119A Expired - Fee Related JP3865748B2 (ja) 2003-01-20 2003-01-20 ネットワークスイッチ装置およびネットワークスイッチ方法

Country Status (6)

Country Link
US (1) US7733889B2 (ja)
JP (1) JP3865748B2 (ja)
CN (1) CN1689284B (ja)
AU (1) AU2003203352A1 (ja)
TW (1) TWI221370B (ja)
WO (1) WO2004066571A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7623452B2 (en) * 2003-08-01 2009-11-24 Hewlett-Packard Development Company, L.P. User configurable functions for adjusting service differentiation meters
JP4100340B2 (ja) * 2003-12-22 2008-06-11 ソニー株式会社 磁気記録再生装置
US20060036802A1 (en) * 2004-08-11 2006-02-16 Ixi Mobile (R&D) Ltd. Flash file system management
US7518996B2 (en) * 2004-09-16 2009-04-14 Jinsalas Solutions, Llc Fast credit system
DE102004052692B4 (de) * 2004-10-29 2008-04-24 Siemens Ag Verfahren zur Übermittlung von in Form von Datenpaketen zur Verfügung stehenden Daten
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
CN100393070C (zh) * 2005-06-14 2008-06-04 杭州华三通信技术有限公司 堆叠设备中报文重定向的方法
US7487271B2 (en) * 2005-09-22 2009-02-03 Motorola, Inc. Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system
CN102347901A (zh) 2006-03-31 2012-02-08 高通股份有限公司 用于高速媒体接入控制的存储器管理
US8736627B2 (en) * 2006-12-19 2014-05-27 Via Technologies, Inc. Systems and methods for providing a shared buffer in a multiple FIFO environment
CN101094183B (zh) * 2007-07-25 2011-12-07 杭州华三通信技术有限公司 一种缓存管理方法及装置
US8059670B2 (en) * 2007-08-01 2011-11-15 Texas Instruments Incorporated Hardware queue management with distributed linking information
US8223779B2 (en) * 2008-02-07 2012-07-17 Ciena Corporation Systems and methods for parallel multi-core control plane processing
US8271683B2 (en) * 2008-03-21 2012-09-18 International Business Machines Corporation Content push service
KR20110021184A (ko) * 2009-08-25 2011-03-04 삼성전자주식회사 컴퓨터시스템, 디스크저장장치 및 그 제어방법
TWI416336B (zh) * 2009-11-10 2013-11-21 Realtek Semiconductor Corp 可共享緩衝器的網路介面卡與緩衝器共享方法
JP5342428B2 (ja) * 2009-12-18 2013-11-13 富士通テレコムネットワークス株式会社 通信制御装置
JP2011254149A (ja) * 2010-05-31 2011-12-15 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置、情報処理方法およびプログラム
JP5732806B2 (ja) * 2010-10-15 2015-06-10 富士通株式会社 データ転送装置及びデータ転送方法
JP5585725B2 (ja) * 2011-04-20 2014-09-10 富士通株式会社 中継装置、及び復旧方法
JP2012257041A (ja) * 2011-06-08 2012-12-27 Sony Corp 通信装置、通信システム、通信方法及びプログラム
CN104040977B (zh) * 2012-12-28 2016-10-05 华为技术有限公司 缓存报文的方法和装置
JP5908416B2 (ja) * 2013-01-23 2016-04-26 株式会社東芝 インターフェース制御装置、データ記憶装置及びインターフェース制御方法
CN103581054A (zh) * 2013-10-30 2014-02-12 清华大学 用于变长包交换的交换系统
CN103746945B (zh) * 2013-12-30 2017-06-27 上海华为技术有限公司 一种数据传输装置及方法
CN104486263B (zh) * 2014-12-09 2017-10-24 中国航空工业集团公司第六三一研究所 一种共享存储交换机发送控制方法及系统
CN104486264B (zh) * 2014-12-09 2018-01-12 中国航空工业集团公司第六三一研究所 一种基于交换控制字的交换机内部总线结构
JP2016158024A (ja) * 2015-02-23 2016-09-01 日本電信電話株式会社 通信用入出力装置
US10114741B1 (en) 2016-11-23 2018-10-30 Levyx, Inc. Data traffic reservation systems and methods
CN108462652B (zh) * 2017-07-31 2019-11-12 新华三技术有限公司 一种报文处理方法、装置和网络设备
US10481980B2 (en) * 2018-03-29 2019-11-19 International Business Machines Corporation Enabling segmented source data introspection within dispersed storage network (DSN) memory
CN110098977B (zh) * 2019-04-12 2020-11-06 中国科学院声学研究所 网络数据包按序存储方法、计算机设备和存储介质
CN111491038B (zh) * 2020-06-29 2020-10-09 北京一流科技有限公司 静态网络中的数据传输系统及其方法
CN114185513B (zh) * 2022-02-17 2022-05-20 沐曦集成电路(上海)有限公司 数据缓存装置和芯片

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3064650B2 (ja) * 1992-03-27 2000-07-12 株式会社日立製作所 同報通信装置
JPH06164641A (ja) * 1992-11-17 1994-06-10 Matsushita Electric Ind Co Ltd Fifoメモリ・パケットスイッチ
US5530806A (en) * 1994-12-15 1996-06-25 At&T Corp. Method and apparatus for storing and retrieving routing information in a network node
JPH1098475A (ja) * 1996-09-24 1998-04-14 Fujitsu Ltd 共通バッファメモリ管理方式
US5950231A (en) * 1996-11-25 1999-09-07 Northern Telecom Limited Memory manager system
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
JPH10247924A (ja) * 1997-03-06 1998-09-14 Fujitsu Ltd 共通セルバッファ装置
US6018763A (en) * 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
JPH11122257A (ja) * 1997-10-15 1999-04-30 Hitachi Ltd 共通バッファ型スイッチ
US7145868B2 (en) * 1997-11-28 2006-12-05 Alcatel Canada Inc. Congestion management in a multi-port shared memory switch
JP3854745B2 (ja) * 1999-04-12 2006-12-06 富士通株式会社 パケット処理装置およびパケット処理方法
US6977941B2 (en) * 2000-11-08 2005-12-20 Hitachi, Ltd. Shared buffer type variable length packet switch
JP3652245B2 (ja) * 2000-12-13 2005-05-25 株式会社日立コミュニケーションテクノロジー パケットスイッチ
US6779084B2 (en) * 2002-01-23 2004-08-17 Intel Corporation Enqueue operations for multi-buffer packets
US7337275B2 (en) * 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
GB2393273A (en) * 2002-09-20 2004-03-24 Sharp Kk Method and apparatus for detecting an error in writing to persistent memory

Also Published As

Publication number Publication date
US20050163141A1 (en) 2005-07-28
WO2004066571A1 (ja) 2004-08-05
TW200414719A (en) 2004-08-01
US7733889B2 (en) 2010-06-08
CN1689284B (zh) 2010-04-28
CN1689284A (zh) 2005-10-26
TWI221370B (en) 2004-09-21
JPWO2004066571A1 (ja) 2006-05-18
AU2003203352A1 (en) 2004-08-13

Similar Documents

Publication Publication Date Title
JP3865748B2 (ja) ネットワークスイッチ装置およびネットワークスイッチ方法
JP3397144B2 (ja) パケット処理装置とパケット処理方法とパケット交換機
US7782849B2 (en) Data switch and switch fabric
US20030112818A1 (en) Deferred queuing in a buffered switch
JPWO2004066570A1 (ja) ネットワークスイッチ装置およびネットワークスイッチ方法
JPH07288546A (ja) 回線アダプタおよび経路指定方法
JPH05219098A (ja) フレーム変換方法及び装置
JPH0824320B2 (ja) 通信制御装置における緩衝域連鎖の方法およびその装置
US20050138238A1 (en) Flow control interface
US20080263171A1 (en) Peripheral device that DMAS the same data to different locations in a computer
US20060050722A1 (en) Interface circuitry for a receive ring buffer of an as fabric end node device
EP1554644A2 (en) Method and system for tcp/ip using generic buffers for non-posting tcp applications
US7174394B1 (en) Multi processor enqueue packet circuit
TW200844738A (en) Data packet processing device
US7756131B2 (en) Packet forwarding system capable of transferring packets fast through interfaces by reading out information beforehand for packet forwarding and method thereof
US8315269B1 (en) Device, method, and protocol for data transfer between host device and device having storage interface
EP1032885B1 (en) Apparatus and method for protocol application data frame operation requests interfacing with an input/output device
US6799227B2 (en) Dynamic configuration of a time division multiplexing port and associated direct memory access controller
JP4209186B2 (ja) パケットの高速ルーティング及びスイッチングに対するメモリ要件を低減するように構成されたプロセッサ
RU175049U9 (ru) УСТРОЙСТВО КОММУНИКАЦИОННЫХ ИНТЕРФЕЙСОВ SpaceWire
KR100732135B1 (ko) 네트워크 스위치 장치 및 네트워크 스위치 방법
CN100484136C (zh) 网络协议引擎
US6847637B1 (en) Unit and method for switching data packets, a data processing apparatus comprising such a unit and a network comprising them
JP2001024661A (ja) マルチキャスト方式とその交換方法
EP1347597B1 (en) Embedded system having multiple data receiving channels

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060530

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060731

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061003

R150 Certificate of patent or registration of utility model

Ref document number: 3865748

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20091013

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20091013

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101013

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101013

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111013

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111013

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20111013

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20111013

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121013

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121013

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131013

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees