[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP3652245B2 - Packet switch - Google Patents

Packet switch Download PDF

Info

Publication number
JP3652245B2
JP3652245B2 JP2000378448A JP2000378448A JP3652245B2 JP 3652245 B2 JP3652245 B2 JP 3652245B2 JP 2000378448 A JP2000378448 A JP 2000378448A JP 2000378448 A JP2000378448 A JP 2000378448A JP 3652245 B2 JP3652245 B2 JP 3652245B2
Authority
JP
Japan
Prior art keywords
address
data block
output
memory
packet
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
JP2000378448A
Other languages
Japanese (ja)
Other versions
JP2002185495A (en
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.)
Hitachi Communication Technologies Ltd
Original Assignee
Hitachi Communication Technologies 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 Hitachi Communication Technologies Ltd filed Critical Hitachi Communication Technologies Ltd
Priority to JP2000378448A priority Critical patent/JP3652245B2/en
Priority to US09/791,791 priority patent/US6977941B2/en
Publication of JP2002185495A publication Critical patent/JP2002185495A/en
Application granted granted Critical
Publication of JP3652245B2 publication Critical patent/JP3652245B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、可変長パケット通信ネットワークにおけるノード装置として適用されるパケットスイッチに関し、更に詳しくは、受信パケットを一時的に蓄積するためのメモリとして共通バッファメモリを使用した共通バッファ型の可変長パケットスイッチに関する。
【0002】
【従来の技術】
近年、注目されているインターネットプロトコル(Internet Protocol:以下、IPと言う)では、IPデータグラムと呼ばれる可変長のパケット(IPパケット)を転送単位として、メッセージ転送が行われる。IPパケット網を構成する従来のノード装置では、ソフトウェア処理によって受信パケットの宛先方路へのスイッチングが行われているが、スイッチングの高速化要求に伴って、ノード装置内では固定長のパケット(データブロック)を転送単位としてスイッチングを行う装置構成が提案されている。
【0003】
IPパケットを高速度で転送するノード装置として、例えば、"A 50-Gb/s IP Router"(Craig Partridge他著、IEEE/ACM TRANSACTIONS ON NETWORKING, Vol.6,No.3,June 1998)の論文には、それぞれ複数のネットワーク・インタフェースをサポートする複数の回線カード(ボード)と、ルーティングテーブルを備えた転送エンジン(Forwarding Engine)カードとを、例えば、クロスバスイッチに代表されるポイント・ツー・ポイント型のスイッチで結合し、各回線カードが受信パケットのヘッダ部を含むデータブロックを上記転送エンジンに送信し、転送エンジンで更新処理された新たなヘッダ情報を含むデータブロックをパケット入力側の回線カードに返送し、入力側の各回線カードが、上記新たなヘッダ情報を含むデータブロックとパケット残部とを出力側回線カードに転送するようにした構成のルータ装置が提案されている。
【0004】
上記論文によると、入力側の各回線カードが、パケットを64バイト単位の連鎖されたページ(データブロック)に解体して送出すること、出力側の各回線カードが、これらのページをパケットを表すリンクド・リストに組立て、組立てたパケットをQoSプロセッサに渡し、QoSプロセッサが、パケット長、宛先および転送エンジンが指定したフロー識別子に基づいて、上記パケットを送信キュー内の適当な位置に置くことが開示されている。
【0005】
パケットの転送単位を固定長にしたスイッチング装置として、ATM(Asynchronous Transfer Mode)スイッチがあげられる。ATMスイッチでは、各入力回線から受信された53バイトの固定長パケット(ATMセル)をバッファメモリに一時的に蓄積した後、蓄積セルをセルヘッダに含まれるコネクション識別情報(VPI/VCI)によって決まる特定の出力回線にルーティングしている。
【0006】
ATMスイッチにおいて、複数の入力回線でバッファメモリを共用する共通バッファ型の構造を採用すると、バッファメモリ内に各出力回線毎に可変長のキューを形成できるため、例えば、同一出力回線に向かうセル列が複数の入力回線から同時に受信された場合でも、共通バッファ全体として空き領域がある限り、各入力回線からの受信セルを廃棄することなくバッファリングすることが可能となり、メモリ資源を有効に利用したスイッチを実現できる。
【0007】
特開平11−261584号公報には、上記共通バッファメモリの利点を活かした可変長メッセージ用のスイッチング装置が提案されている。上記従来技術では、共通バッファメモリをメッセージ対応の複数のメモリブロックに分割し、各受信メッセージに対して空き状態の1つのメモリブロックを割り当て、各入力回線から受信されたメッセージを固定長の複数のセルに分割し、同一メッセージに属するセルを同一のメモリブロックに順次に格納する構成となっている。
【0008】
【発明が解決しようとする課題】
上述したIEEE文献に記載されたルータ装置では、入力側の回線カードが、各パケットの送信に先立って、スイッチ・アロケータを介して出力側回線カードと折衝し、出力側カードがパケットの受信を了承した場合に送信を開始しているため、パケットのスイッチング処理速度に問題がある。また、入力側の各回線カードにはパケットを待機させるためのバッファが必要となり、出力側の各回線カードにもパケット組立てのためのバッファが必要となるため、バッファメモリの使用効率に問題がある。
【0009】
一方、上記特開平11−261584号公報に記載されたスイッチング装置では、各メッセージの末尾部分が入力された時、受信メッセージと対応するメモリブロックに蓄積されている全てのセルを別のメモリ領域(メッセージキュー)に移す構成となっているため、メモリ領域間でのメッセージの転送所要時間とバッファメモリの利用効率に問題があった。
【0010】
本発明の目的は、共通バッファメモリを効率的に利用し、可変長パケットを高速スイッチング可能なパケットスイッチを提供することにある。
本発明の他の目的は、共通バッファメモリを効率的に利用し、可変長パケットのマルチキャストを可能にしたパケットスイッチを提供することにある。
【0011】
【課題を解決するための手段】
上記目的を達成するために、本発明のパケットスイッチは、複数の入力回線に共用される共通バッファメモリと、各入力回線からの受信パケットを固定長のデータブロック単位で多重化して上記共通バッファメモリに供給する多重化手段と、上記共通バッファメモリへの上記各固定長データブロックの書込みと読出しを制御するバッファ制御手段とからなり、上記バッファ制御手段が、上記多重化手段から出力された各固定長データブロックを上記共通バッファに書き込む時に可変長パケット別の入力キューを形成しておき、可変長パケットの最終データブロックが入力キューに登録された時点で、該入力キューを可変長パケットの転送先出力回線と対応した出力キューに登録することを特徴とする。
【0012】
更に詳述すると、上記バッファ制御手段は、上記共通バッファメモリにおける各固定長データブロックの書込みアドレスを可変長パケット別にリンクすることによって複数の入力キューを形成し、可変長パケットの最後の固定長データブロックが上記共通バッファメモリに書き込み済みとなった入力キューを転送先出力回線と対応する待機バッファを備えた出力キューに登録する第1制御手段と、出力回線対応に形成された複数の出力キューを所定の順序でアクセスし、各出力キューが示すリンクド・アドレスに基づいて上記共通バッファメモリから固定長データブロックを読み出す第2制御手段とを備える。
上記可変長パケット別の入力キューは、例えば、空きアドレスメモリから取り出した書込みアドレスに基づいて上記共通バッファメモリに各固定長データブロックを書き込み、上記各書込みアドレスと対応して同一可変長パケットにおける次の固定長データブロックの書込みアドレスを次アドレスメモリに記憶することにより形成される。
【0013】
本発明において、各出力キューは、例えば、可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスとを一時的に記憶するための待機バッファと、次に読み出すべきデータブロックを示す次読出しアドレスと最後のデータブロックを示す最終読出しアドレスとを記憶するアドレスメモリとからなり、上記第1制御手段が、各可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスをそれぞれ転送先出力回線と対応する待機バッファに登録し、これに付随するアドレスメモリが空き状態となった時、上記第2制御手段が、上記待機バッファから取り出した1対のアドレスを新たなデータブロック群の次読出しアドレスおよび最終読出しアドレスとしてアドレスメモリに設定する。この場合、第2制御手段は、各出力キューに登録された次読出しアドレスに基づいて、共通バッファメモリと次アドレスメモリからそれぞれ固定長データブロックと次の固定長データブロックのアドレスとを読み出し、上記次アドレスメモリから読み出されたアドレスを当該出力キューにおける新たな次読出しアドレスとすることによって、各可変長パケットを構成するデータブロックを次々と読み出すことが可能となる。
【0014】
尚、受信パケットがマルチキャストパケットの場合、最後のデータブロックが共通バッファメモリに書き込まれた時点で、上記第1制御手段によって、同一入力キューをマルチキャスト出力回線と対応する複数の出力キューに登録することにより、マルチキャスト転送が可能となる。この場合、パケットスイッチに、共通バッファメモリにおける各固定長データブロックの読出し回数をカウントし、読出し回数が指定値に達した時、読出しアドレスを解放するアドレス解放制御手段を設けることによって、共通バッファメモリの空きアドレスを管理できる。
【0015】
【発明の実施の形態】
以下、本発明の実施例について図面を参照して詳細に説明する。
図1は、本発明によるパケットスイッチの1実施例を示す。
パケットスイッチ1は、それぞれ入力回線LI−1〜LI−nから入力された可変長パケット100を固定長の複数のデータブロック110に分割し、各データブロックに内部ヘッダ110Aを付加して出力する複数の入力回線インタフェース10−1〜10−nと、上記入力回線インタフェース10−1〜10−nから入力されたデータブロックを時分割多重して信号線L21に出力する多重化部21と、上記信号線L21に接続された共通バッファメモリ22と、上記共通バッファメモリ22から信号線L22に読み出されたデータブロックを複数の出力回線インタフェース20−1〜20−nに順次に振り分ける分離部23と、上記共通バッファメモリ22へのデータブロックの書込みと読出しを制御するバッファ制御部30と、書込みサイクルを示すクロックCLK0をカウントして入力回線選択信号を発生する入力カウンタ24と、読出しサイクルを示すクロックCLK1をカウントして出力回線選択信号を発生する出力カウンタ25とからなっている。
【0016】
各入力回線LI−i(i=1〜n)から入力される可変長パケットは、宛先アドレスを含むパケットヘッダ100Aとデータ部100Bとからなる。各入力回線インタフェース10−i(i=1〜n)は、入力回線LI−iから受信した可変長パケット100を固定長の複数のデータブロック110に分割し、例えば、入力回線番号と、パケットヘッダ100Aから抽出された宛先アドレスによって決まる出力回線番号と、各データブロック110が可変長パケットにおける先頭ブロック、中間ブロック、最終ブロックの何れに該当するかを示すブロック位置表示情報とを含む内部ヘッダ110Aを生成し、これを各データブロックに付加して出力する。
【0017】
共通バッファメモリ22へのデータブロックの書込みと読出しは、クロックCLK0とCLK1に従って交互に行われる。多重化部21は、入力カウンタ24が信号線L24に発生する入力回線選択信号に応じて、入力回線インタフェース10−1〜10−nを循環的に選択し、各入力回線インタフェースから出力されたデータブロック110を順次に信号線L21に多重化する。一方、分離部23は、共通バッファメモリ22から信号線L22に読み出されたデータブロックを、出力カウンタ25が信号線L25に発生する出力回線選択信号によって特定される出力回線インタフェース20−j(j=1〜n)に振り分ける。
出力回線インタフェース20−1〜20−nは、分離部23から受け取ったデータブロック110から内部ヘッダ110Aを取り除き、それぞれと対応する出力回線LO−1〜LO−nに送出する。
【0018】
バッファ制御部30は、クロックCLK0が示す各書込みサイクルにおいて、信号線L21に現れる内部ヘッダ110Aが示す入力回線番号iと対応するリンクド・アドレスリストを形成しながら、データブロックを共通バッファメモリ22に書き込む。
上記バッファ制御部30は、後述するように、信号線L21に受信パケットの先頭ブロックが現れる都度、入力回線対応の新たな入力キューを形成し、後続する中間ブロックと最終ブロックのデータを入力回線対応の入力キューに次々と登録し、受信パケットの最終ブロックが共通バッファメモリ22に書き込まれた時点で、入力キューを上記受信パケットの転送先出力回線と対応した出力キューにリンクするように、リンクド・アドレスリストをダイナミックに制御する。
【0019】
共通バッファメモリ22からのデータブロックの読出しは、各出力回線と対応して形成された出力キュー・アドレスリストに基づいて行なわれる。バッファ制御部30は、信号線L25で与えられる出力回線選択信号と対応した出力キューについて、読み出すべきデータブロックの有無をチェックし、もし、出力キューにデータブロックアドレスがリンクされていた場合は、出力キュー・アドレスリストに登録された次読出しアドレスを読出しアドレスRAとして、共通バッファメモリ22から1つのデータブロックを信号線L22に読み出し、アドレスリストの次読出しアドレスをリンクド・アドレスリストにおける次のデータブロックアドレスに書き換える。
【0020】
図2は、バッファ制御部30の詳細を示すブロック図である。
バッファ制御部30は、ヘッダ解析部31と、入力キュー制御部32と、出力キュー制御部33と、次アドレス管理部34と、共通バッファメモリ20の空きアドレスを格納するための空アドレスメモリ(FIFO)35とからなる。
【0021】
ヘッダ解析部31は、信号線L21に現れる各データブロックの内部ヘッダを解析して、入力回線番号IN−iと、出力回線番号OUT−jと、入力データブロックが受信パケットの先頭ブロックか否かを示す先頭表示フラグ信号FPと、入力データブロックが受信パケットの最終ブロックか否かを示す最終表示フラグ信号EPとを発生する。
入力キュー制御部32は、入力回線毎に、入力キューに登録された先頭データブロックのアドレス(パケット先頭アドレス:BAi(i=1〜n))301と、上記入力キューに登録された最新データブロックのアドレス(最新アドレス:WAi(i=1〜 n))302とを示す入力キュー・アドレステーブル300を備えている。
出力キュー制御部33は、出力キュー・アドレステーブル310と出力待機バッファ330とを備えている。
【0022】
出力キュー・アドレステーブル310は、出力回線毎に、出力キューの先頭に位置したデータブロックの読出しアドレス(次読出しアドレスRAj(j=1〜n))311と、出力キューの最後に位置したデータブロックの読出しアドレス(最終読出しアドレスEAj(j=1〜n))312とを記憶するためのものである。以下の説明では、出力キュー・アドレステーブル310における第j出力回線LO−jと対応したテーブル領域を符号310−jで表す。
【0023】
出力待機バッファ330は、出力キュー・アドレステーブル310−jに先行パケットを読み出すためのアドレスRAj、EAjが残っている時、同一出力回線に送出すべき後続パケットの読み出しアドレスをFIFO形式で待機させるためのものであり、各出力回線と対応して、パケットの先頭データブロックの読み出しアドレスBAjを蓄積するためのバッファ領域330B−jと、パケットの最後のデータブロックの読み出しアドレスWAjを蓄積するためのバッファ領域330W−jとが用意されている。バッファ領域330B−j、330W−jに蓄積された読出しアドレスは、先行パケットの全てのデータブロックが共通バッファメモリから読み出され、実質的に出力キュー・アドレステーブルが空き状態となった時点で、出力キュー・アドレステーブルのテーブル領域310−jに移される。
【0024】
次アドレス管理部34は、共通バッファメモリ22に蓄積可能なデータブロック数mに等しい複数のアドレス記憶領域NA1〜NAmからなる次アドレスメモリ340を備える。次アドレスメモリ340の各記憶領域は、入力キューに登録されたデータブロック列を登録順に読み出すためのリンクド・アドレスリストを形成するために利用される。
【0025】
以下、入力回線LI−1とLI−2から同一の出力回線LO−3に向かう可変長パケットが入力された場合を仮定して、入力回線LI−1と対応する入力キューのパケット先頭アドレスBA1および最新アドレスWA1と、入力回線LI−2と対応する入力キューのパケット先頭アドレスBA2および最新アドレスWA2と、出力回線LO−2と対応する出力キューの次読出しアドレスRA3および最終読出しアドレスEA3に着目して、図2と図3〜図5を参照しながら上記バッファ制御部30の機能について詳述する。
【0026】
ヘッダ解析部31は、信号線L21に出力された各データブロックの内部ヘッダ110Aを解析し、入力回線番IN−iと出力回線番号OUT−iを発生する。上記データブロックが可変長パケットの先頭ブロックであれば先頭表示フラグ信号FPがオン状態となり、最終ブロックであれば最終表示フラグ信号EPがオン状態となる。
信号線L21に出力されたデータブロックは、空アドレスFIFO35から取り出された空きアドレスを書込みアドレスWAとして、共通バッファメモリ20に書き込まれる。この時、入力キュー制御部32は、ヘッダ解析部31から出力された入力回線番号IN−iと先頭表示フラグ信号FPの状態に応じて、入力キュー・アドレステーブル300を更新する。
先頭表示フラグ信号FPがオン状態であれば、空きアドレスFIFO35から取り出された書込みアドレスWAを上記入力回線番号IN−iと対応するテーブル領域300−iにパケット先頭アドレスBAiと最新アドレスWAiとして書き込む。先頭表示フラグ信号FPがオフ状態であれば、上記書込みアドレスWAを最新アドレスWAiに書き込む。
【0027】
入力キュー・アドレステーブル300に新たなアドレスWAが書き込まれた時、最新アドレスWAiとしてそれまで記憶されていたアドレスが次アドレス管理部34に出力される。次アドレス管理部34は、上記アドレスWAiと対応する記憶領域NAiに、空きアドレスFIFO35から取り出された新たな書込みアドレスWAを記憶する。
これによって、1つの可変長パケットから分割された固定長のデータブロックが共通バッファメモリ22に書込まれる度に、データブロックの書込みアドレスが次アドレスメモリ340に記憶され、最新アドレスWAiが更新され、最終的には、パケット先頭アドレスBAiが可変長パケットの先頭データブロックのアドレスを指し、最新アドレスWAiが可変長パケットの最終データブロックのアドレスを指すことになる。
【0028】
図3は、共通バッファメモリ22に、入力回線インタフェース10−1から出力されたデータブロックD1−1〜D1−4と、入力回線インタフェース10−2から出力されたデータブロックD2−1〜D2−2が書き込まれた時点での、入力キュー・アドレステーブル300の状態を示す。
ここで、WA1−1〜WA1−4は、空きアドレスFIFO35から得られたデータブロックD1−1〜D1−4の書込みアドレスWAの値、 WA2−1〜WA2−2はデータブロックD2−1〜D2−2の書込みアドレスWAの値を示す。また、RA3とEA3は、上記データブロックD1−1〜D1−4、D2−1〜D2−2の転送先出力回線LO−3と対応した出力キュー・アドレステーブルエントリ310−3の内容を示している。
【0029】
入力回線LI−1と対応する入力キュー・アドレステーブルでは、先頭データブロックD1−1の書込みアドレスWA1−1がパケット先頭アドレスBA1として記憶され、最新アドレスWA1の内容はデータブロックの書込みの都度更新されて、WA1−1、WA1−2、WA1−3、WA1−4と変化する。
次アドレスメモリ340では、図3に示すように、最新アドレスWA1と対応する記憶領域に、次データブロックの書込みアドレスが次々と記憶される。従って、入力キュー・アドレステーブル300のパケット先頭アドレスBA1と次アドレスメモリ340とによって、入力回線毎のリンクド・アドレスリストが形成される。
【0030】
例えば、パケット先頭アドレスBA1が示すアドレスWA1−1に基づいて共通バッファメモリ22と次アドレスメモリ340をアクセスすることによって、先頭データブロックD1−1と、次のデータブロックD1−2のアドレスWA1−2とを読み出すことができ、このアドレスWA1−2を次回の読出しサイクルにおける読出しアドレスRAとして利用することにより、次のデータブロックD1−2と、更に次のデータブロックD1−3のアドレスWA1−3とを読み出すことができ、同様の動作を繰り返すことによって、入力キューに登録された全てのデータブロックを読み出すことが可能となる。
【0031】
入力回線LI−1と同様、入力回線LI−2と対応する入力キュー・アドレステーブルでは、先頭データブロックD2−1の書込みアドレスWA2−1がパケット先頭アドレスBA2として記憶され、最新アドレスWA1の内容は、データブロックの書込みの都度更新され、WA2−1、WA2−2、…と変化する。
【0032】
図3は、入力回線インタフェース10−1と10−2が可変長パケットの最終データブロックを出力する前の状態を示しており、出力回線LO−3と対応した出力キューには有効データがなく、出力待機バッファ330−3と出力キュー・アドレステーブル310−3が空き状態となっている。
本発明は、共通バッファメモリ22にパケットの最終データブロックが書き込まれた時、バッファ制御部30が、上記最終データブロックの入力キューにおけるパケット先頭アドレスBAiと最新アドレスWAi(=WA)を出力待機バッファ330を介して出力キュー・アドレステーブル310に移すことを特徴としている。
【0033】
図4は、入力回線インタフェース10−1から出力された可変長パケットの最終データブロックD1−5が共通バッファメモリ22に書き込まれた時点でのバッファ制御部30の動作を示す。
この場合、バッファ制御部30は、最終データブロックD1−5の書込みアドレスWA1−5を次アドレスメモリ340に記憶した後、入力キューのパケット先頭アドレスBA1の内容(WA1−1)と最新アドレスWA1の内容(WA1−5)を出力待機バッファ330−3に移す。出力待機バッファ330−3に蓄積されたアドレスは、もし、出力キュー・アドレステーブル310−3が空き状タであれば、図4に示すように、出力キュー・アドレステーブルのRA3、EA3に移される。尚、最新アドレスWA1の内容は、今回、空きアドレスFIFO35から取り出された新たな書込みアドレスWAとなっているため、出力キュー・アドレステーブルのEA3には、上記最新アドレスWA1に代えて、空きアドレスFIFO35から取り出された書込みアドレスWAを記憶してもよい。
【0034】
図5は、出力回線LO−3の出力キューが既に使用状態にある時、入力回線インタフェース10−2から出力された可変長パケットの最終データブロックD2−3を共通バッファメモリ22に書き込む場合のバッファ制御部30の動作を示す。この場合、バッファ制御部30は、最終データブロックD2−3の書込みアドレスWA2−3を次アドレスメモリ340に記憶した後、入力キューのパケット先頭アドレスBA2の内容(WA2−1)と最新アドレスWA2の内容(WA2−3)を出力待機バッファ330−3に移す。
上記出力待機バッファ330−3に蓄積されたアドレスWA2−1、WA2−3は、出力キュー・アドレステーブル310−3が空き状態となった時、すなわち、次読み出しアドレスRA3と最終読み出しアドレスEA3の値が一致した読み出しサイクルで、出力キュー・アドレステーブル310−3に移される。
【0035】
回線インタフェースが受信した可変長パケットが短く、受信パケット全体が固定長の1つのデータブロックに収まる場合は、このデータブロックの書込みサイクルで、ヘッダ解析部31から出力される先頭表示フラグ信号FPと最終表示フラグ信号EPが同時にオン状態となる。この場合、先頭表示フラグ信号FPに応答して入力キュー・アドレステーブル300に登録されたパケット先頭アドレスBAiと最新アドレスWAiの内容が、最終表示フラグ信号EPに応答して出力待機バッファ330−jに直ちに移される。
【0036】
もし、待機バッファ330−jに蓄積されたパケット先頭アドレスBAiと最新アドレスWAiの内容は、データブロックの転送先となる出力回線LO−jの出力キューが空状態であれば、図4と同様、出力キュー・アドレステーブル310−jに書き込まれ、上記出力キューが既に使用状態にあれば、図5と同様、出力待機バッファ330−jに留まる。
【0037】
共通バッファメモリ22からのデータブロックの読出しは、出力キュー制御部33によって行われる。出力キュー制御部33は、読出しサイクルに信号線L25に出力される出力回線選択信号で特定される出力キュー・アドレステーブル領域310―jを参照し、次読出しアドレスRAjに従って、共通バッファメモリ22からデータブロックを読み出し、次アドレスメモリ340から次アドレスNAjを読み出す。
使用済みとなった次読出しアドレスRAjは、空きアドレスFIFO35に解放され、次アドレスメモリ340から読み出された次アドレスNAjは、新たな次読出しアドレスRAjとして出力キュー・アドレステーブル310−jに記憶される。但し、各パケットの最後のデータブロックの読出しサイクルでは、次アドレスメモリ340から読み出された次アドレスNAjは無効となり、待機バッファから取り出された次パケットの先頭アドレスが、次読出しアドレスRAjとして出力キュー・アドレステーブル310−jに設定される。
【0038】
図6は、入力キュー制御部32の1実施例を示す。
入力キュー制御部32は、パケット先頭アドレスBA1〜BAnを記憶するためのレジスタ301−1〜301−nと、最新アドレスWA1〜WAnを記憶するためのレジスタ302−1〜302−nと、ヘッダ解析部31から受信した入力回線番号IN−iをデコードし、イネーブル信号WEN−1〜WEN−nのうちの1つをオン状態とするデコーダ321と、レジスタ302−1〜302−nからの出力アドレスのうちの1つを選択するためのセレクタ322と、レジスタ301−1〜301−nからの出力アドレスのうちの1つを選択するためのセレクタ323と、パケット先頭アドレスの書込みイネーブル信号を制御するためのAND回路324−1〜324−nとからなっている。
【0039】
最新アドレスを記憶するレジスタ302−1〜302−nには、空きアドレスFIFO35から取り出されたアドレスWAが入力されており、それぞれデコーダ321から出力されるイネーブル信号WEN−1〜WEN−nによって、最新アドレスの更新が制御されている。入力回線番号IN−iが第i番目の入力回線を示した場合、イネーブル信号WEN―iがオン状態となり、空きアドレスFIFO35から取り出されたアドレスWAがレジスタ302−iに設定される。この時、それまでレジスタ302−iに記憶されていた前データブロックの書込みアドレス{WAi}がセレクタ322によって選択され、次アドレス(ポインタアドレス)書込み用アドレスWAiとして次アドレス管理部34に供給される。
【0040】
空きアドレスFIFO35から取り出されたアドレスWAは、パケット先頭アドレスBA1〜BAnを記憶するためのレジスタ301−1〜301−nにも入力されている。これらのレジスタへの書込みは、AND回路324−1〜324−nによって制御されており、ヘッダ解析部31から出力される先頭表示フラグFPがオン状態となった書込みサイクルに限り、入力回線番号IN−iと対応するレジスタ301−iへのアドレスWAの書込みが行われる。セレクタ323は、入力回線番号IN−iと対応するレジスタ301−iからの出力アドレスを選択し、パケット先頭アドレスBAiとして出力する。
【0041】
図7は、出力キュー制御部33の1実施例を示す。
出力キュー制御部33は、次読出しアドレスRA1〜RAnを記憶するためのレジスタ311−1〜311−nと、最終読出しアドレスEA1〜EAnを記憶するためのレジスタ312−1〜312−nと、パケット先頭アドレス用の出力待機バッファ(FIFO)330B−1〜330B−nと、パケット最終アドレス用の出力待機バッファ(FIFO)330W−1〜330W−nとからなっている。
【0042】
また、上記出力キュー制御部33は、レジスタ311−1〜311−nからの出力アドレスのうちの1つを選択するためのセレクタ331と、レジスタ312−1〜312−nからの出力アドレスのうちの1つを選択するためのセレクタ332と、レジスタ313−1〜313−nからの出力フラグのうちの1つを選択するためのセレクタ333と、出力カウンタ25から信号線25に出力された出力回線選択信号をデコードするためのデコーダ334と、ヘッダ解析部31から出力される出力回線番号OUT−jをデコードして、イネーブル信号EN−1〜EN−nのうちの1つをオン状態とするデコーダ335と、ヘッダ解析部31から出力される最終表示フラグ信号EPがオン状態となった時、上記イネーブル信号EN−1〜EN−nを有効にするためのAND回路336−1〜336−nと、セレクタ331から出力される読出しアドレスRAjとセレクタ332から出力されるパケット最終アドレスEAjとを比較し、RAjとEAjが一致した時、イネーブル信号EN−0をオン状態とする比較器315と、上記イネーブル信号EN−0がオフ状態の時、次アドレス管理部34から出力された次アドレスNAjをレジスタ311−1〜311−nに供給するAND回路316と、上記イネーブル信号EN−0がオン状態の時、デコーダ334の出力信号を通すAND回路339−1〜339−nとを備えている。
【0043】
出力待機バッファ330−j(330B−jと330W−j、j=1〜n)は、それぞれAND回路336−1〜336−nの出力信号が書込みイネーブル信号WENとして与えられている。書込みサイクルにおいて、最終表示フラグ信号EPがオン状態となった時、出力回線番号OUT−jと対応するAND回路336−jからの書込みイネーブル信号WENが有効となり、バッファ領域330B−jに入力キュー制御部32から出力されたパケット先頭アドレスBAiが設定され、バッファ領域330W−jに空きアドレスFIFO35から出力された書込みアドレスWAが設定される。
【0044】
出力待機バッファ330−j(330B−jと330W−j)には、それぞれAND回路339−1〜339−nの出力信号が読出しイネーブル信号RENとして与えられている。読出しサイクルにおいて、比較器315の出力信号EN−0がオン状態となった時、出力回線番号OUT−jと対応するAND回路339−jの出力信号がオン状態となる。これによって、バッファ領域330B−j、330W−jから1組のアドレスBAjとWAjが読み出され、それぞれ次読出しアドレスRAj、最終読み出しアドレスEAjとしてレジスタ311−j、312−jに設定される。
【0045】
レジスタ311−1〜311−nには、デコーダ334の出力がリード・イネーブル信号として与えてあり、これらのレジスタ出力は、信号線L25から供給される出力回線選択信号を制御信号とするセレクタ331に接続されている。従って、各読出しサイクルにおいて、上記出力回線選択信号で指定されたレジスタ311−jの内容が次読出しアドレスRAjとして出力される。上記アドレスRAjによって、共通バッファメモリ22から、出力回線LOjに出力すべきデータブロックが読み出され、分離部23を介して出力回線インタフェース20−jに供給される。また、上記アドレスRAjによって、次アドレス管理部34から、上記出力回線LOjに出力すべき次のデータブロックを指すアドレスNAjが読み出される。上記アドレスNAjは、AND回路316を介してレジスタ311−1〜311−nに供給されている。
【0046】
レジスタ311−1〜311−nと同様に、レジスタ312−1〜312−nにも、デコーダ334の出力がリード・イネーブル信号として与えてあり、これらのレジスタ出力は、出力回線選択信号を選択信号とするセレクタ332に接続されている。これによって、各読出しサイクルで、上記出力回線選択信号で指定されたレジスタ312−jの内容がセレクタ332から最終読出しアドレスEAjとして出力される。
【0047】
比較器315の出力信号EN−0は、セレクタ331から出力される次読出しアドレスRAjと、セレクタ332から出力される最終読出しアドレスEAjとが一致した時、すなわち、各パケットの最終データブロックの読出しサイクルにおいてオン状態となり、前述したように、出力待機バッファ330B−jにあるパケット先頭アドレスBAiがレジスタ311−jに移される。上記比較器315の出力信号EN−0がオフ状態となる読出しサイクル、すなわち、パケットの先頭データブロックまたは中間データブロックの読出しサイクルでは、AND回路316が開かれ、次アドレス管理部34から読み出された次アドレスNAjが上記レジスタ311−jに設定される。これによって、出力回線LO−jと対応した出力キューのデータブロックを次々と読み出すことが可能となる。
【0048】
図8は、次アドレス管理部34の1実施例を示す。
次アドレス管理部34は、次アドレスNA1〜NAmを記憶するためのレジスタ340−1〜340−mと、これらのレジスタからの出力アドレスを選択するセレクタ341と、入力キュー制御部32から供給される最新アドレスWAiをデコードし、上記最新アドレスWAiと対応するレジスタ340−iに書込みイネーブル信号を与えるデコーダ344とからなる。
【0049】
次アドレス管理部34は、各書込みサイクルにおいて、入力キューにおける前データブロックの書込みアドレスWAiと対応した記憶領域(レジスタ340−k)に最新データブロックの書込みアドレスWAを記憶し、これによって、図3に示した入力キュー毎のリンクド・アドレスリストを形成する。読出しサイクルでは、セレクタ341が、出力キュー制御部33から供給された読出しアドレスRAjと対応したレジスタ340−pを選択し、上記レジスタに340−pに記憶されたアドレスを次アドレスNAjとして出力キュー制御部33に戻す。上記次アドレスNAjは、出力キュー制御部33において、次回の読出しサイクルで使う新たな次読出しアドレスRAjとして、レジスタ311−jに記憶される。
【0050】
図9は、本発明の第2の実施例として、同一受信パケットを複数の出力回線に転送する同報機能(またはマルチキャスト機能)を備えたパケットスイッチのバッファ制御部30Bの構成を示す。
ここに示したバッファ制御部30Bは、図2に示した第1実施例のバッファ制御部30と同様、ヘッダ解析部31、入力キュー制御部32、出力キュー制御部33、次アドレス管理部34、空きアドレスFIFO35を有し、新たな要素として、読出しアドレス解放制御部36を備えている。
【0051】
各入力回線インタフェース10−i(i=1〜n)では、入力回線LI−iからの受信パケットが複数の出力回線に転送すべき同報(マルチキャスト)パケットの場合、受信パケットを分割して得られた各データブロックに複数の出力回線を指定した内部ヘッダを付加する。複数の出力回線を同時に指定するためには、例えば、内部ヘッダの出力回線番号フィールドを出力回線LO−1〜LO−nと対応するnビットで構成し、パケット転送先となる出力回線をビット“1”で表すビットパターン形式を採用すればよい。
【0052】
ヘッダ解析部31は、多重化部21から信号線L21に出力された各データブロックの内部ヘッダを解析し、入力回線番号IN−i、出力回線番号OUT−j、先頭表示フラグ信号FP、最終表示フラグ信号EPと、受信パケットの転送先出力回線数NTRを発生する。上記出力回線番号OUT−jとしては、上述した内部ヘッダの出力回線番号フィールドが示すビットパターンを出力する。この場合、転送先出力回線数NTRは、上記出力回線番号フィールドに含まれるビット“1”の個数を示す。
【0053】
多重化部21から信号線L21に出力された各データブロックは、第1実施例と同様、空きアドレスFIFO35から取り出されたアドレスWAを書込みアドレスとして共通バッファメモリ22に蓄積され、入力キュー制御部32と次アドレス管理部34によって、入力回線番号IN−iと対応した入力キューが形成される。
共通バッファメモリ22に蓄積されたデータブロックが可変長パケットの最終データブロックの場合、最終表示フラグ信号EPがオン状態となるため、入力キュー制御部32から出力されたパケット先頭アドレスBAiと、空きアドレスFIFO35から取り出された最新アドレスWA(=WAi)が出力キュー制御部33の出力待機バッファ330に設定される。
【0054】
図7に示した出力キュー制御部33において、デコーダ335に入力する出力回線番号OUT−jが転送先出力回線をビット“1”で表すビットパターンとなっていた場合、上記デコーダ335から出力されるイネーブル信号群を上記ビットパターンに従ってオン状態にすることができる。上記デコーダ335から出力されるイネーブル信号EN−1〜EN−nは、最終表示フラグ信号EPがオン状態となった時、AND回路336−1〜336−nを通って出力待機バッファ330−1(330B−1、330W−1)〜330−n(330B−n、330W−n)に書込みイネーブル信号WENとして与えられる。
【0055】
最終データブロックがユニキャストパケットに属していた場合、該ユニキャストパケットの出力回線と対応した1つのイネーブル信号EN−jだけがオン状態となるため、アドレスBAi、WAは、第1実施例と同様、上記イネーブル信号EN−jが与えられている特定の出力待機バッファ330B−j、330W−jに設定される。もし、最終データブロックが同報パケットに属していた場合は、出力回線番号OUT−jのビットパターンと対応した複数のイネーブル信号EN−j(j=j1、j2、j3、…)が同時にオン状態となるため、アドレスBAiとWAは、オン状態のイネーブル信号が与えられている複数の出力待機バッファ330B−j、330W−j(j=j1、j2、j3、…)に同時に設定されることになる。
【0056】
出力待機バッファ330−1〜330−nに設定されたアドレスBAiとWAは、第1実施例と同様に、次読出しアドレスレジスタ311−1〜311−nと最終読出しアドレスレジスタ312−1〜312−nに移され、次読出しアドレスレジスタ311−1〜311−nが示す読出しアドレスRAjに従って、共通バッファメモリ22からのデータブロックの読出しが行なわれる。同報パケットに属したデータブロックは、上述したように、リンクド・アドレスリストが複数の出力キューに登録されているため、同一のデータブロックが複数回繰り返して読み出されることになる。
【0057】
ユニキャストパケットだけを対象とした第1の実施例では、図2に示したように、共通バッファメモリ22からのデータブロックを読出した時点で、読出しアドレスRAjを空きアドレスFIFO35に解放すればよかった。これに対して、本実施例のように同報パケットを扱う場合は、指定された複数の出力回線へのマルチキャストが完了したことを確認して、上記読出しアドレスRAjを空きアドレスFIFO35に解放する必要がある。
【0058】
読出しアドレス解放制御部36は、データブロック毎にマルチキャストの完了を確認して読出しアドレスRAjを解放するためのものである。
図10は、読出しアドレス解放制御部36の1実施例を示す。
ここに示した読出しアドレス解放制御部36は、書込みアドレスWAと対応してデータブロックの読出し回数RCを記憶するためのレジスタ(メモリ領域)360−1〜360−mと、上記レジスタ360−1〜360−mへの入力を選択するためのセレクタ361−1〜361−mと、上記レジスタ360−1〜360−mの値をデクリメント(−1)するための減算器362−1〜362−mと、書込みアドレスWAおよび読出しアドレスRAjをデコードし、これらのアドレスと対応したイネーブル信号を発生するデコーダ363と、上記レジスタ360−1〜360−mのうち、読出しアドレスRAjと対応したレジスタ360−qの設定値(読出し回数RC)を選択するセレクタ364と、比較器365およびゲート366からなっている。
【0059】
各セレクタ361−k(k=1〜m)には、書込みサイクルを示すクロックCLK0が選択制御信号として与えてあり、書込みサイクルでは、ヘッダ解析部31から出力された転送先出力回線数NTRが選択され、読出しサイクルでは、減算器362−k(k=1〜m)の出力が選択され、それぞれ読出し回数レジスタ360−k(k=1〜m)に入力される。読出し回数レジスタ360−1〜360−mには、デコーダ363の出力が書込みイネーブル信号として与えてあり、書込みサイクルでは、書込みアドレスWAと対応したレジスタ360−pに出力回線数NCPが設定される。読出しサイクルでは、読出しアドレスRAjと対応したレジスタ360−qの値がセレクタ364で選択され、比較器365に入力される。この時、レジスタ360−qの値が減算器362−qに入力され、読出し回数RCqをデクリメント(−1演算)した値がレジスタ360−qに再設定される。
【0060】
例えば、ユニキャストパケットに属したデータブロックの書込みサイクルでは、書込みアドレスWAと対応した読出し回数レジスタ360−pに、転送先出力回線数NTRの値(=1)が読出し回数RCpとして設定され、上記データブロックが読出しサイクルでアドレスRAjに従って読み出された時、RCp=1が比較器365に入力される。比較器365は、共通バッファメモリ22から読み出されたデータブロックの読出し回数RCpの値が「1」になった時、ゲート366を開き、読出しアドレスRAjを空きアドレスFIFO35に解放する。従って、ユニキャストパケットに属したデータブロックの書込みアドレス(読出しアドレスRAj)は、データブロックの読出しの都度、直ちに解放される。
【0061】
同報(マルチキャスト)パケットに属したデータブロックの書込みサイクルでは、書込みアドレスWAと対応した読出し回数レジスタ360−pに、読出し回数RCpとして、「1」より大きい値をもったNTRが設定される。従って、共通バッファ22から上記データブロックが読み出されても、デクリメントされたRCp値が「1」に達しない限り、ゲート366は閉じたままとなり、読出し回数がNTRで指定された回数(RCp=1)となった時点で、読出しアドレスRAjの空きアドレスFIFO35へ解放される。
【0062】
以上の実施例では、バッファ制御部30が、入力回線番号毎に入力キューを形成し、可変長パケットの最後のデータブロックが到着した時点で、入力キューのリンクド・アドレスリストを出力キューに移すようにしたが、本発明において、各入力キューは可変長パケット毎に形成できればよいため、上記入力回線番号に代えて、各可変長パケットに固有の他の識別情報を使用してもよい。
実施例では、各データブロックの内部ヘッダに入力回線番号を設定し、ヘッダ解析部31が上記内部ヘッダに基づいて入力回線番号IN−jを出力したが、入力回線番号IN−jは、入力カウンタ24から出力される入力回線選択信号に基づいて生成するようにしてもよい。
【0063】
また、上述した実施例では、各入力回線インタフェース10−i(i=1〜n)で、受信パケット100を固定長の複数のデータブロック110に分割し、各データブロックに内部ヘッダ110Aを付して多重化部21に出力し、内部ヘッダ付きのデータブロックを共通バッファメモリ22にリード、ライトする構成となっているが、本発明の他の実施形態として、例えば、図11に示すように、多重化部21でデータブロック110と内部ヘッダ110Aを分離し、内部ヘッダ110Aはバッファ制御部30のヘッダ解析部31に供給し、共通バッファメモリ22にはデータブロック110部分のみを入力するようにしてもよい。
上記構成によれば、共通バッファメモリ22のメモリ容量を有効に利用でき、各出力回線インタフェース20―iでデータブロックから内部ヘッダを除去する必要がなくなる。
【0064】
本発明の更に他の実施形態として、各入力回線インタフェース10−iが、固定長データブロック110を内部ヘッダを付すことなく多重化部21に出力し、バッファ制御部30のヘッダ解析部31が、各可変長パケットの先頭データブロックに含まれるパケットヘッダを解析し、入力回線毎に出力回線番号と後続データブロック数を管理テーブル上で管理しておき、入力カウンタ24から与えられる入力回線選択信号に応じて上記管理テーブルを参照し、前述したIN−i、FP、EP、OUT−j等の制御信号を生成するようにしてもよい。また、可変長パケット100から固定長のデータブロック110への変換は、各入力回線インタフェース10−iで行う代わりに、多重化部21で行うようにしてもよい。
実施例では、複数の入出力回線に接続されるパケットスイッチについて説明したが、本発明のバッファ制御は、複数の入力回線から受信した可変長パケットを1つの出力回線に出力するスイッチ構造(多重化装置)にも適用可能である。
【0065】
以上のように、本発明の実施例では、可変長パケット毎の入力キューを形成し、1つの可変長パケットの最後のデータブロックがバッファメモリに書き込まれた時点で、入力キューに登録されたリンクド・アドレスを出力キューに移すようにしている。従って、同一の出力回線に向かう複数の可変長パケットが並列的に入力された場合でも、出力キュー内で1つの可変長パケットに属したデータブロック列に他のパケットのデータブロックが混入するのを防止でき、出力キューから取り出したデータブロックを順次に出力回線に送出することによって、受信パケットを正しく宛先装置に転送することが可能となる。
【0066】
また、実施例のように、出力キューを待機バッファとアドレステーブル(またはレジスタ)で構成し、出力待機中の可変長パケットの先頭データブロックと最終データブロックのアドレスを待機バッファに一時的に蓄積し、出力中の可変長パケットの次読出しアドレスと最終読出しアドレスを上記アドレステーブルで管理する方式とした場合、同一の出力回線に向かう多数の可変長パケットが受信された場合でも、各パケットを確実に転送処理できる。
【0067】
また、第2実施例で示したように、同一可変長パケットのリンクド・アドレスを複数の出力キューに登録し、同一データブロックの読出し回数が指定値に達した時点で読出しアドレスを開放することによって、共通バッファメモリを有効に利用したマルチキャスト転送が可能となる。
【0068】
【発明の効果】
以上の説明から明らかなように、本発明によれば、入力回線から受信した可変長パケットを固定長のデータブロックに分割し、固定長のブロック単位で共通バッファメモリに蓄積しておき、可変長パケットの最後のデータブロックが蓄積された時点で、共通バッファメモリ内に蓄積済みのデータブロック列を移動することなく、上記データブロック列を読み出すためのリンクド・アドレスリストのみを出力キューに移す構成となっているため、可変長パケットの高速スイッチングが可能となる。また、同一リンクド・アドレスリストを複数の出力キューに登録することによって、容易にマルチキャスト機能を実現できる。
【図面の簡単な説明】
【図1】本発明を適用したパケットスイッチの1実施例を示す図。
【図2】図1に示したパケットスイッチのバッファ制御部30の詳細を示す図。
【図3】共通バッファメモリ22に蓄積されるデータブロックと、次アドレスメモリ340および入力キュー・アドレステーブル300の状態を説明するための図。
【図4】可変長パケットの最後のデータブロックが到着した場合の入力キュー・アドレステーブル300と出力キュー・アドレステーブル310との関係を説明するための図。
【図5】出力キューが使用状態にある時に他の可変長パケットの最後のデータブロックが到着した場合の入力キュー・アドレステーブル300と出力キュー・アドレステーブル310との関係を説明するための図。
【図6】図2に示した入力キュー制御部32の1実施例を示す図。
【図7】図2に示した出力キュー制御部33の1実施例を示す図。
【図8】図2に示した次アドレス管理部34の1実施例を示す図。
【図9】マルチキャスト用バッファ制御部30Bの1実施例を示す図。
【図10】図9における読出しアドレス解放制御部35の1実施例を示す図。
【図11】本発明を適用したパケットスイッチの他の実施例を示す図。
【符号の説明】
1:パケットスイッチ、10:入力回線インタフェース、
20:出力回線インタフェース、21:多重化部、22:共通バッファメモリ、
23:分離部、24:入力カウンタ、25:出力カウンタ、
30、30B:バッファ制御部、LI:入力回線、LO:出力回線、
31: ヘッダ解析部、32:入力キュー制御部、33:出力キュー制御部、
34:次アドレス管理部、35:空きアドレスFIFO、36:読出しアドレス解放制御部、300:入力キュー・アドレステーブル、
301(BA1〜BAn):パケット先頭アドレス、
302(WA1〜WAn):最新アドレス、
310:出力キュー・アドレステーブル、
311(RA1〜RAn):次読出しアドレス、
312(EA1〜EAn):最終読出しアドレス、
313(F1〜Fn):キューフラグ。
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a packet switch applied as a node device in a variable-length packet communication network, and more particularly, to a common buffer type variable-length packet switch using a common buffer memory as a memory for temporarily storing received packets. About.
[0002]
[Prior art]
2. Description of the Related Art In recent years, an Internet protocol (Internet Protocol: hereinafter referred to as IP), which has attracted attention, performs message transfer using a variable length packet (IP packet) called an IP datagram as a transfer unit. In a conventional node device constituting an IP packet network, switching of a received packet to a destination route is performed by software processing. However, in response to a request for high-speed switching, a fixed-length packet (data There has been proposed an apparatus configuration that performs switching using a block as a transfer unit.
[0003]
For example, "A 50-Gb / s IP Router" (Craig Partridge et al., IEEE / ACM TRANSACTIONS ON NETWORKING, Vol.6, No.3, June 1998) is a node device that transfers IP packets at high speed. Includes a plurality of line cards (boards) each supporting a plurality of network interfaces and a forwarding engine card with a routing table, for example, a point-to-point type represented by a crossbar switch Each line card transmits a data block including the header portion of the received packet to the transfer engine, and the data block including new header information updated by the transfer engine is transmitted to the line card on the packet input side. Each line card on the input side returns and transfers the data block including the new header information and the remainder of the packet to the output line card. The configuration of the router device was so that has been proposed.
[0004]
According to the above paper, each line card on the input side disassembles and sends out packets into 64 byte unit chained pages (data blocks), and each line card on the output side represents these pages as packets. Assembling into a linked list, passing the assembled packet to a QoS processor, which places the packet in the appropriate position in the transmit queue based on the packet length, destination and flow identifier specified by the forwarding engine Has been.
[0005]
As a switching device having a fixed packet transfer unit, an ATM (Asynchronous Transfer Mode) switch can be mentioned. In the ATM switch, a 53-byte fixed-length packet (ATM cell) received from each input line is temporarily stored in the buffer memory, and then the storage cell is specified by connection identification information (VPI / VCI) included in the cell header. Routed to the output line.
[0006]
In the ATM switch, if a common buffer type structure in which a buffer memory is shared by a plurality of input lines is adopted, a variable length queue can be formed for each output line in the buffer memory. Even if received from multiple input lines at the same time, as long as there is free space in the entire common buffer, it is possible to buffer the received cells from each input line without discarding them, effectively using memory resources. A switch can be realized.
[0007]
Japanese Patent Laid-Open No. 11-261484 proposes a switching device for variable length messages that takes advantage of the common buffer memory. In the above prior art, the common buffer memory is divided into a plurality of memory blocks corresponding to messages, one empty memory block is allocated to each received message, and a message received from each input line is divided into a plurality of fixed lengths. The cell is divided into cells, and cells belonging to the same message are sequentially stored in the same memory block.
[0008]
[Problems to be solved by the invention]
In the router device described in the IEEE document described above, the input side line card negotiates with the output side line card via the switch allocator prior to transmission of each packet, and the output side card acknowledges reception of the packet. In this case, since transmission is started, there is a problem in the packet switching processing speed. Further, each line card on the input side needs a buffer for waiting for a packet, and each line card on the output side also needs a buffer for assembling the packet. .
[0009]
On the other hand, in the switching device described in Japanese Patent Application Laid-Open No. 11-261484, when the tail part of each message is input, all cells stored in the memory block corresponding to the received message are stored in another memory area ( Therefore, there is a problem in the time required to transfer messages between the memory areas and the efficiency of using the buffer memory.
[0010]
An object of the present invention is to provide a packet switch that can efficiently switch a variable-length packet by efficiently using a common buffer memory.
Another object of the present invention is to provide a packet switch that efficiently uses a common buffer memory and enables multicast of variable-length packets.
[0011]
[Means for Solving the Problems]
In order to achieve the above object, a packet switch of the present invention includes a common buffer memory shared by a plurality of input lines, and the common buffer memory by multiplexing received packets from each input line in units of fixed-length data blocks. And a buffer control means for controlling writing and reading of each fixed-length data block to and from the common buffer memory, and the buffer control means outputs each fixed data output from the multiplexing means. When the long data block is written to the common buffer, an input queue for each variable length packet is formed, and when the last data block of the variable length packet is registered in the input queue, the input queue is transferred to the variable length packet destination. It is registered in an output queue corresponding to the output line.
[0012]
More specifically, the buffer control means forms a plurality of input queues by linking the write address of each fixed-length data block in the common buffer memory for each variable-length packet, and the last fixed-length data of the variable-length packet. First control means for registering an input queue whose block has been written to the common buffer memory in an output queue having a standby buffer corresponding to the transfer destination output line, and a plurality of output queues formed corresponding to the output line Second control means for accessing in a predetermined order and reading out the fixed-length data block from the common buffer memory based on the linked address indicated by each output queue.
The input queue for each variable length packet, for example, writes each fixed length data block to the common buffer memory based on the write address fetched from the free address memory, and the next variable in the same variable length packet corresponding to each write address. Is formed by storing the write address of the fixed length data block in the next address memory.
[0013]
In the present invention, each output queue includes, for example, a standby buffer for temporarily storing the write address of the first data block and the write address of the last data block of the variable-length packet, and the next data block to be read next An address memory for storing a read address and a final read address indicating the last data block. The first control means transfers the write address of the first data block and the write address of the last data block of each variable length packet. When the address memory associated with the destination output line is registered in the standby buffer and the associated address memory becomes empty, the second control means sets the pair of addresses fetched from the standby buffer to a new data block group. Address memo as next read address and last read address It is set to. In this case, the second control means reads the fixed length data block and the address of the next fixed length data block from the common buffer memory and the next address memory, respectively, based on the next read address registered in each output queue, By using the address read from the next address memory as a new next read address in the output queue, it is possible to read data blocks constituting each variable-length packet one after another.
[0014]
If the received packet is a multicast packet, the first control means registers the same input queue in a plurality of output queues corresponding to the multicast output line when the last data block is written to the common buffer memory. Thus, multicast transfer is possible. In this case, the common buffer memory is provided with an address release control means for counting the number of reads of each fixed-length data block in the common buffer memory and releasing the read address when the number of reads reaches a specified value in the packet switch. Can manage free addresses.
[0015]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
FIG. 1 shows an embodiment of a packet switch according to the present invention.
The packet switch 1 divides the variable-length packet 100 input from the input lines LI-1 to LI-n into a plurality of fixed-length data blocks 110, and outputs a plurality of data blocks with an internal header 110A added thereto. Input line interfaces 10-1 to 10-n, a multiplexing unit 21 that time-division-multiplexes the data blocks input from the input line interfaces 10-1 to 10-n and outputs them to the signal line L21, and the signal A common buffer memory 22 connected to the line L21; a separation unit 23 that sequentially distributes the data blocks read from the common buffer memory 22 to the signal line L22 to a plurality of output line interfaces 20-1 to 20-n; A buffer control unit 30 for controlling writing and reading of data blocks to and from the common buffer memory 22; An input counter 24 which generates the input line selection signal by counting the clock CLK0 indicating a cycle, and an output counter 25 for generating an output line selection signal by counting the clock CLK1 indicating a read cycle.
[0016]
A variable length packet input from each input line LI-i (i = 1 to n) includes a packet header 100A including a destination address and a data portion 100B. Each input line interface 10-i (i = 1 to n) divides the variable-length packet 100 received from the input line LI-i into a plurality of fixed-length data blocks 110, for example, an input line number and a packet header. An internal header 110A including an output line number determined by a destination address extracted from 100A and block position display information indicating whether each data block 110 corresponds to a head block, an intermediate block, or a last block in a variable-length packet. It is generated and added to each data block for output.
[0017]
Writing and reading data blocks to and from the common buffer memory 22 are performed alternately according to clocks CLK0 and CLK1. The multiplexing unit 21 cyclically selects the input line interfaces 10-1 to 10-n according to the input line selection signal generated on the signal line L24 by the input counter 24, and the data output from each input line interface The blocks 110 are sequentially multiplexed on the signal line L21. On the other hand, the separation unit 23 outputs the data block read from the common buffer memory 22 to the signal line L22, and the output line interface 20-j (j specified by the output line selection signal generated by the output counter 25 on the signal line L25. = 1 to n).
The output line interfaces 20-1 to 20-n remove the internal header 110A from the data block 110 received from the separation unit 23, and send it to the corresponding output lines LO-1 to LO-n.
[0018]
The buffer control unit 30 writes the data block to the common buffer memory 22 while forming a linked address list corresponding to the input line number i indicated by the internal header 110A appearing on the signal line L21 in each write cycle indicated by the clock CLK0. .
As will be described later, the buffer control unit 30 forms a new input queue corresponding to the input line each time the first block of the received packet appears on the signal line L21, and the data of the subsequent intermediate block and the final block are input line compatible. In order to link the input queue to the output queue corresponding to the transfer destination output line of the received packet when the last block of the received packet is written in the common buffer memory 22 one after another. Dynamically control the address list.
[0019]
Reading of the data block from the common buffer memory 22 is performed based on an output queue address list formed corresponding to each output line. The buffer control unit 30 checks whether or not there is a data block to be read for the output queue corresponding to the output line selection signal given by the signal line L25. If the data block address is linked to the output queue, the buffer control unit 30 outputs The next read address registered in the queue address list is used as the read address RA, one data block is read from the common buffer memory 22 to the signal line L22, and the next read address in the address list is the next data block address in the linked address list. Rewrite to
[0020]
FIG. 2 is a block diagram showing details of the buffer control unit 30.
The buffer control unit 30 includes a header analysis unit 31, an input queue control unit 32, an output queue control unit 33, a next address management unit 34, and an empty address memory (FIFO) for storing free addresses of the common buffer memory 20. 35).
[0021]
The header analysis unit 31 analyzes the internal header of each data block appearing on the signal line L21, and determines whether the input line number IN-i, the output line number OUT-j, and the input data block are the first block of the received packet. And a final display flag signal EP indicating whether or not the input data block is the final block of the received packet.
For each input line, the input queue control unit 32 addresses the head data block registered in the input queue (packet head address: BAi (i = 1 to n)) 301 and the latest data block registered in the input queue. Input queue address table 300 indicating the latest address (latest address: WAi (i = 1 to n)) 302.
The output queue control unit 33 includes an output queue / address table 310 and an output standby buffer 330.
[0022]
The output queue address table 310 includes, for each output line, a data block read address (next read address RAj (j = 1 to n)) 311 positioned at the head of the output queue and a data block positioned at the end of the output queue. Read address (final read address EAj (j = 1 to n)) 312 is stored. In the following description, a table area corresponding to the j-th output line LO-j in the output queue / address table 310 is denoted by reference numeral 310-j.
[0023]
When the addresses RAj and EAj for reading the preceding packet remain in the output queue address table 310-j, the output standby buffer 330 waits in the FIFO format for the read address of the subsequent packet to be sent to the same output line. Corresponding to each output line, a buffer area 330B-j for accumulating the read address BAj of the first data block of the packet and a buffer for accumulating the read address WAj of the last data block of the packet An area 330W-j is prepared. The read addresses stored in the buffer areas 330B-j and 330W-j are read when all the data blocks of the preceding packet are read from the common buffer memory, and the output queue address table becomes substantially empty. It is moved to the table area 310-j of the output queue address table.
[0024]
The next address management unit 34 includes a next address memory 340 including a plurality of address storage areas NA1 to NAm equal to the number m of data blocks that can be stored in the common buffer memory 22. Each storage area of the next address memory 340 is used to form a linked address list for reading out the data block sequence registered in the input queue in the order of registration.
[0025]
Hereinafter, assuming that variable length packets directed to the same output line LO-3 are input from the input lines LI-1 and LI-2, the packet head address BA1 of the input queue corresponding to the input line LI-1 and Focusing on the latest address WA1, the packet start address BA2 and latest address WA2 of the input queue corresponding to the input line LI-2, the next read address RA3 and the final read address EA3 of the output queue corresponding to the output line LO-2 The function of the buffer control unit 30 will be described in detail with reference to FIGS. 2 and 3 to 5.
[0026]
The header analysis unit 31 analyzes the internal header 110A of each data block output to the signal line L21, and generates an input line number IN-i and an output line number OUT-i. If the data block is the first block of the variable-length packet, the first display flag signal FP is turned on. If the data block is the last block, the last display flag signal EP is turned on.
The data block output to the signal line L21 is written into the common buffer memory 20 using the empty address taken out from the empty address FIFO 35 as the write address WA. At this time, the input queue control unit 32 updates the input queue / address table 300 according to the state of the input line number IN-i output from the header analysis unit 31 and the head display flag signal FP.
If the head display flag signal FP is in the ON state, the write address WA extracted from the empty address FIFO 35 is written as the packet head address BAi and the latest address WAi in the table area 300-i corresponding to the input line number IN-i. If the head display flag signal FP is in the OFF state, the write address WA is written to the latest address WAi.
[0027]
When a new address WA is written in the input queue / address table 300, the address stored so far as the latest address WAi is output to the next address management unit 34. The next address management unit 34 stores the new write address WA extracted from the empty address FIFO 35 in the storage area NAi corresponding to the address WAi.
As a result, each time a fixed-length data block divided from one variable-length packet is written into the common buffer memory 22, the write address of the data block is stored in the next address memory 340, and the latest address WAi is updated. Eventually, the packet head address BAi points to the address of the head data block of the variable length packet, and the latest address WAi points to the address of the last data block of the variable length packet.
[0028]
FIG. 3 shows data blocks D1-1 to D1-4 output from the input line interface 10-1 and data blocks D2-1 to D2-2 output from the input line interface 10-2 in the common buffer memory 22. The state of the input queue / address table 300 at the time when is written is shown.
Here, WA1-1 to WA1-4 are values of the write address WA of the data blocks D1-1 to D1-4 obtained from the empty address FIFO 35, and WA2-1 to WA2-2 are data blocks D2-1 to D2. -2 indicates the value of the write address WA. RA3 and EA3 indicate the contents of the output queue / address table entry 310-3 corresponding to the transfer destination output line LO-3 of the data blocks D1-1 to D1-4 and D2-1 to D2-2. Yes.
[0029]
In the input queue address table corresponding to the input line LI-1, the write address WA1-1 of the head data block D1-1 is stored as the packet head address BA1, and the contents of the latest address WA1 are updated each time the data block is written. And WA1-1, WA1-2, WA1-3, and WA1-4.
In the next address memory 340, as shown in FIG. 3, the write address of the next data block is successively stored in the storage area corresponding to the latest address WA1. Therefore, a linked address list for each input line is formed by the packet head address BA1 of the input queue address table 300 and the next address memory 340.
[0030]
For example, by accessing the common buffer memory 22 and the next address memory 340 based on the address WA1-1 indicated by the packet head address BA1, the addresses WA1-2 of the head data block D1-1 and the next data block D1-2 are accessed. By using this address WA1-2 as the read address RA in the next read cycle, the next data block D1-2 and further the address WA1-3 of the next data block D1-3 By repeating the same operation, all data blocks registered in the input queue can be read.
[0031]
As with the input line LI-1, in the input queue address table corresponding to the input line LI-2, the write address WA2-1 of the head data block D2-1 is stored as the packet head address BA2, and the contents of the latest address WA1 are The data block is updated each time the data block is written, and changes to WA2-1, WA2-2,.
[0032]
FIG. 3 shows a state before the input line interfaces 10-1 and 10-2 output the final data block of the variable length packet, and there is no valid data in the output queue corresponding to the output line LO-3. The output standby buffer 330-3 and the output queue / address table 310-3 are empty.
In the present invention, when the last data block of a packet is written in the common buffer memory 22, the buffer control unit 30 outputs the packet head address BAi and the latest address WAi (= WA) in the input queue of the last data block as an output standby buffer. It is characterized in that it is transferred to the output queue address table 310 via 330.
[0033]
FIG. 4 shows the operation of the buffer control unit 30 when the final data block D1-5 of the variable-length packet output from the input line interface 10-1 is written into the common buffer memory 22.
In this case, after storing the write address WA1-5 of the final data block D1-5 in the next address memory 340, the buffer control unit 30 then stores the contents (WA1-1) of the packet head address BA1 of the input queue and the latest address WA1. The contents (WA1-5) are moved to the output standby buffer 330-3. The address stored in the output standby buffer 330-3 is moved to RA3 and EA3 in the output queue address table as shown in FIG. 4 if the output queue address table 310-3 is empty. . Since the contents of the latest address WA1 are the new write address WA extracted from the empty address FIFO 35 this time, the empty address FIFO 35 is substituted for the latest address WA1 in the EA3 of the output queue address table. The write address WA taken out from may be stored.
[0034]
FIG. 5 shows a buffer when the final data block D2-3 of the variable length packet output from the input line interface 10-2 is written in the common buffer memory 22 when the output queue of the output line LO-3 is already in use. The operation of the control unit 30 is shown. In this case, after storing the write address WA2-3 of the final data block D2-3 in the next address memory 340, the buffer control unit 30 then stores the contents (WA2-1) of the packet start address BA2 of the input queue and the latest address WA2. The contents (WA2-3) are moved to the output standby buffer 330-3.
The addresses WA2-1 and WA2-3 stored in the output standby buffer 330-3 are the values of the next read address RA3 and the last read address EA3 when the output queue / address table 310-3 becomes empty. Are read cycles in which they match, the data is moved to the output queue address table 310-3.
[0035]
When the variable-length packet received by the line interface is short and the entire received packet fits in one fixed-length data block, the head display flag signal FP and the final display flag signal FP output from the header analysis unit 31 are written in this data block write cycle. The display flag signal EP is simultaneously turned on. In this case, the contents of the packet head address BAi and the latest address WAi registered in the input queue address table 300 in response to the head display flag signal FP are stored in the output standby buffer 330-j in response to the last display flag signal EP. Immediately moved.
[0036]
If the contents of the packet head address BAi and the latest address WAi stored in the standby buffer 330-j are empty when the output queue of the output line LO-j to which the data block is transferred is empty, as in FIG. If it is written in the output queue address table 310-j and the output queue is already in use, it remains in the output standby buffer 330-j, as in FIG.
[0037]
Reading of the data block from the common buffer memory 22 is performed by the output queue control unit 33. The output queue control unit 33 refers to the output queue / address table area 310-j specified by the output line selection signal output to the signal line L25 in the read cycle, and reads data from the common buffer memory 22 according to the next read address RAj. The block is read and the next address NAj is read from the next address memory 340.
The used next read address RAj is released to the free address FIFO 35, and the next address NAj read from the next address memory 340 is stored in the output queue / address table 310-j as a new next read address RAj. The However, in the read cycle of the last data block of each packet, the next address NAj read from the next address memory 340 becomes invalid, and the start address of the next packet fetched from the standby buffer becomes the output queue as the next read address RAj. Set in the address table 310-j.
[0038]
FIG. 6 shows an embodiment of the input queue control unit 32.
The input queue control unit 32 includes registers 301-1 to 301-n for storing the packet head addresses BA1 to BAn, registers 302-1 to 302-n for storing the latest addresses WA1 to WAn, and header analysis. Decoder 311, which decodes input line number IN-i received from unit 31 and turns on one of enable signals WEN-1 to WEN-n, and output addresses from registers 302-1 to 302-n A selector 322 for selecting one of the registers, a selector 323 for selecting one of the output addresses from the registers 301-1 to 301-n, and a write enable signal for the packet head address. AND circuits 324-1 to 324-n for the purpose.
[0039]
The registers 302-1 to 302-n for storing the latest addresses are supplied with the address WA taken out from the empty address FIFO 35, and the latest signals are sent by the enable signals WEN-1 to WEN-n output from the decoder 321, respectively. Address update is controlled. When the input line number IN-i indicates the i-th input line, the enable signal WEN-i is turned on, and the address WA extracted from the empty address FIFO 35 is set in the register 302-i. At this time, the write address {WAi} of the previous data block previously stored in the register 302-i is selected by the selector 322 and supplied to the next address management unit 34 as the next address (pointer address) write address WAi. .
[0040]
The address WA extracted from the empty address FIFO 35 is also input to registers 301-1 to 301-n for storing the packet head addresses BA1 to BAn. Writing to these registers is controlled by AND circuits 324-1 to 324 -n, and the input line number IN is limited only to the writing cycle in which the head display flag FP output from the header analysis unit 31 is turned on. The address WA is written to the register 301-i corresponding to -i. The selector 323 selects the output address from the register 301-i corresponding to the input line number IN-i, and outputs it as the packet head address BAi.
[0041]
FIG. 7 shows an embodiment of the output queue control unit 33.
The output queue control unit 33 includes registers 311-1 to 311-n for storing next read addresses RA1 to RAn, registers 312-1 to 312-n for storing final read addresses EA1 to EAn, a packet It consists of output standby buffers (FIFOs) 330B-1 to 330B-n for head addresses and output standby buffers (FIFOs) 330W-1 to 330W-n for final packet addresses.
[0042]
The output queue control unit 33 includes a selector 331 for selecting one of the output addresses from the registers 311-1 to 311-n and the output address from the registers 312-1 to 312-n. , A selector 332 for selecting one of the registers, a selector 333 for selecting one of the output flags from the registers 313-1 to 313-n, and an output output from the output counter 25 to the signal line 25. The decoder 334 for decoding the line selection signal and the output line number OUT-j output from the header analysis unit 31 are decoded, and one of the enable signals EN-1 to EN-n is turned on. When the final display flag signal EP output from the decoder 335 and the header analysis unit 31 is turned on, the enable signals EN-1 to EN-n The AND circuits 336-1 to 336-n for enabling are compared with the read address RAj output from the selector 331 and the packet final address EAj output from the selector 332. When the RAj and EAj match, the enable circuit The comparator 315 that turns on the signal EN-0 and the next address NAj output from the next address manager 34 when the enable signal EN-0 is off are supplied to the registers 311-1 to 311-n. An AND circuit 316 and AND circuits 339-1 to 339-n for passing an output signal of the decoder 334 when the enable signal EN-0 is in an ON state are provided.
[0043]
The output standby buffers 330-j (330B-j and 330W-j, j = 1 to n) are supplied with the output signals of the AND circuits 36-1 to 336-n as the write enable signal WEN, respectively. In the write cycle, when the final display flag signal EP is turned on, the write enable signal WEN from the AND circuit 336-j corresponding to the output line number OUT-j becomes valid, and the input queue control is performed in the buffer area 330B-j. The packet head address BAi output from the unit 32 is set, and the write address WA output from the empty address FIFO 35 is set in the buffer area 330W-j.
[0044]
The output standby buffers 330-j (330B-j and 330W-j) are supplied with the output signals of the AND circuits 339-1 to 339-n as read enable signals REN, respectively. In the read cycle, when the output signal EN-0 of the comparator 315 is turned on, the output signal of the AND circuit 339-j corresponding to the output line number OUT-j is turned on. As a result, one set of addresses BAj and WAj is read from the buffer areas 330B-j and 330W-j, and set in the registers 311-j and 312-j as the next read address RAj and the final read address EAj, respectively.
[0045]
The outputs of the decoder 334 are given to the registers 311-1 to 311-n as read enable signals, and these register outputs are sent to the selector 331 which uses the output line selection signal supplied from the signal line L25 as a control signal. It is connected. Accordingly, in each read cycle, the contents of the register 311-j designated by the output line selection signal are output as the next read address RAj. The data block to be output to the output line LOj is read from the common buffer memory 22 by the address RAj and supplied to the output line interface 20-j via the separation unit 23. Further, the address NAj indicating the next data block to be output to the output line LOj is read from the next address management unit 34 by the address RAj. The address NAj is supplied to the registers 311-1 to 311-n via the AND circuit 316.
[0046]
Similar to the registers 311-1 to 311-n, the outputs of the decoder 334 are also supplied to the registers 312-1 to 312-n as read enable signals, and these register outputs receive the output line selection signal as a selection signal. Is connected to the selector 332. As a result, in each read cycle, the contents of the register 312-j specified by the output line selection signal are output from the selector 332 as the final read address EAj.
[0047]
The output signal EN-0 of the comparator 315 is output when the next read address RAj output from the selector 331 matches the final read address EAj output from the selector 332, that is, the read cycle of the last data block of each packet. The packet head address BAi in the output standby buffer 330B-j is moved to the register 311-j as described above. In a read cycle in which the output signal EN-0 of the comparator 315 is turned off, that is, in a read cycle of the first data block or intermediate data block of the packet, the AND circuit 316 is opened and read from the next address management unit 34. The next address NAj is set in the register 311-j. As a result, the data blocks in the output queue corresponding to the output line LO-j can be read one after another.
[0048]
FIG. 8 shows an embodiment of the next address management unit 34.
The next address management unit 34 is supplied from the registers 340-1 to 340 -m for storing the next addresses NA 1 to NAm, the selector 341 for selecting output addresses from these registers, and the input queue control unit 32. The decoder 344 decodes the latest address WAi and gives a write enable signal to the register 340-i corresponding to the latest address WAi.
[0049]
In each write cycle, the next address management unit 34 stores the write address WA of the latest data block in the storage area (register 340-k) corresponding to the write address WAi of the previous data block in the input queue. The linked address list for each input queue shown in FIG. In the read cycle, the selector 341 selects the register 340-p corresponding to the read address RAj supplied from the output queue control unit 33, and performs output queue control using the address stored in the register 340-p as the next address NAj. Return to section 33. The next address NAj is stored in the register 311-j as a new next read address RAj to be used in the next read cycle in the output queue control unit 33.
[0050]
FIG. 9 shows a configuration of a buffer control unit 30B of a packet switch having a broadcast function (or multicast function) for transferring the same received packet to a plurality of output lines as a second embodiment of the present invention.
The buffer control unit 30B shown here is similar to the buffer control unit 30 of the first embodiment shown in FIG. 2, and includes a header analysis unit 31, an input queue control unit 32, an output queue control unit 33, a next address management unit 34, A free address FIFO 35 is provided, and a read address release control unit 36 is provided as a new element.
[0051]
In each input line interface 10-i (i = 1 to n), when the received packet from the input line LI-i is a broadcast (multicast) packet to be transferred to a plurality of output lines, it is obtained by dividing the received packet. An internal header designating a plurality of output lines is added to each data block. In order to specify a plurality of output lines simultaneously, for example, the output line number field of the internal header is composed of n bits corresponding to the output lines LO-1 to LO-n, and the output line serving as the packet transfer destination is set to bit A bit pattern format represented by 1 ″ may be employed.
[0052]
The header analysis unit 31 analyzes the internal header of each data block output from the multiplexing unit 21 to the signal line L21, and inputs line number IN-i, output line number OUT-j, head display flag signal FP, and final display. The flag signal EP and the number NTR of transfer destination output lines of the received packet are generated. As the output line number OUT-j, the bit pattern indicated by the output line number field of the internal header described above is output. In this case, the transfer destination output line number NTR indicates the number of bits “1” included in the output line number field.
[0053]
Each data block output from the multiplexing unit 21 to the signal line L21 is accumulated in the common buffer memory 22 with the address WA taken out from the empty address FIFO 35 as a write address, as in the first embodiment, and the input queue control unit 32 Then, the next address management unit 34 forms an input queue corresponding to the input line number IN-i.
When the data block stored in the common buffer memory 22 is the last data block of the variable-length packet, the final display flag signal EP is turned on, so the packet head address BAi output from the input queue control unit 32 and the free address The latest address WA (= WAi) extracted from the FIFO 35 is set in the output standby buffer 330 of the output queue control unit 33.
[0054]
In the output queue control unit 33 shown in FIG. 7, when the output line number OUT-j input to the decoder 335 has a bit pattern representing the transfer destination output line by the bit “1”, it is output from the decoder 335. The enable signal group can be turned on according to the bit pattern. The enable signals EN-1 to EN-n output from the decoder 335 pass through the AND circuits 336-1 to 336-n and output standby buffers 330-1 (when the final display flag signal EP is turned on. 330B-1, 330W-1) to 330-n (330B-n, 330W-n) are provided as the write enable signal WEN.
[0055]
When the last data block belongs to a unicast packet, only one enable signal EN-j corresponding to the output line of the unicast packet is turned on, so that the addresses BAi and WA are the same as in the first embodiment. The specific output standby buffers 330B-j and 330W-j to which the enable signal EN-j is applied are set. If the last data block belongs to the broadcast packet, a plurality of enable signals EN-j (j = j1, j2, j3,...) Corresponding to the bit pattern of the output line number OUT-j are simultaneously turned on. Therefore, the addresses BAi and WA are simultaneously set in the plurality of output standby buffers 330B-j and 330W-j (j = j1, j2, j3,...) To which the ON state enable signal is given. Become.
[0056]
The addresses BAi and WA set in the output standby buffers 330-1 to 330-n are the next read address registers 311-1 to 311-n and the final read address registers 312-1 to 312- The data block is read from the common buffer memory 22 in accordance with the read address RAj indicated by the next read address registers 311-1 to 311-n. As described above, since the linked address list is registered in a plurality of output queues for the data block belonging to the broadcast packet, the same data block is repeatedly read out a plurality of times.
[0057]
In the first embodiment targeting only unicast packets, the read address RAj may be released to the free address FIFO 35 when the data block is read from the common buffer memory 22 as shown in FIG. On the other hand, when handling a broadcast packet as in the present embodiment, it is necessary to confirm that multicasting to a plurality of designated output lines has been completed and to release the read address RAj to the free address FIFO 35. There is.
[0058]
The read address release control unit 36 confirms the completion of multicast for each data block and releases the read address RAj.
FIG. 10 shows an embodiment of the read address release control unit 36.
The read address release control unit 36 shown here includes registers (memory areas) 360-1 to 360-m for storing the read count RC of the data block corresponding to the write address WA, and the registers 360-1 to 360-1 described above. Selectors 361-1 to 361-m for selecting an input to 360-m and subtractors 362-1 to 362-m for decrementing (-1) the values of the registers 360-1 to 360-m. The decoder 363 which decodes the write address WA and the read address RAj and generates an enable signal corresponding to these addresses, and the register 360-q corresponding to the read address RAj among the registers 360-1 to 360-m. , A selector 364 for selecting a set value (number of read times RC), a comparator 365 and a gate 366. To have.
[0059]
Each selector 361-k (k = 1 to m) is supplied with a clock CLK0 indicating a write cycle as a selection control signal, and the transfer destination output line number NTR output from the header analysis unit 31 is selected in the write cycle. In the read cycle, the outputs of the subtracters 362-k (k = 1 to m) are selected and input to the read count registers 360-k (k = 1 to m), respectively. The output of the decoder 363 is given as a write enable signal to the read count registers 360-1 to 360-m, and in the write cycle, the output line number NCP is set in the register 360-p corresponding to the write address WA. In the read cycle, the value of the register 360-q corresponding to the read address RAj is selected by the selector 364 and input to the comparator 365. At this time, the value of the register 360-q is input to the subtractor 362-q, and the value obtained by decrementing the read count RCq (-1 operation) is reset in the register 360-q.
[0060]
For example, in the write cycle of the data block belonging to the unicast packet, the value (= 1) of the transfer destination output line number NTR is set as the read count RCp in the read count register 360-p corresponding to the write address WA. When the data block is read according to the address RAj in the read cycle, RCp = 1 is input to the comparator 365. The comparator 365 opens the gate 366 and releases the read address RAj to the free address FIFO 35 when the value of the read count RCp of the data block read from the common buffer memory 22 becomes “1”. Therefore, the write address (read address RAj) of the data block belonging to the unicast packet is immediately released every time the data block is read.
[0061]
In the write cycle of the data block belonging to the broadcast (multicast) packet, NTR having a value larger than “1” is set as the read count RCp in the read count register 360-p corresponding to the write address WA. Therefore, even if the data block is read from the common buffer 22, the gate 366 remains closed as long as the decremented RCp value does not reach “1”, and the number of readings specified by the NTR (RCp = At 1), the free address FIFO 35 of the read address RAj is released.
[0062]
In the above embodiment, the buffer control unit 30 forms an input queue for each input line number, and moves the linked address list of the input queue to the output queue when the last data block of the variable length packet arrives. However, in the present invention, each input queue only needs to be formed for each variable length packet, and therefore, other identification information unique to each variable length packet may be used instead of the input line number.
In the embodiment, the input line number is set in the internal header of each data block, and the header analysis unit 31 outputs the input line number IN-j based on the internal header. The input line number IN-j is an input counter. It may be generated based on an input line selection signal output from the output 24.
[0063]
In the above-described embodiment, each input line interface 10-i (i = 1 to n) divides the received packet 100 into a plurality of fixed-length data blocks 110 and attaches an internal header 110A to each data block. Is output to the multiplexer 21 and the data block with the internal header is read and written to the common buffer memory 22, but as another embodiment of the present invention, for example, as shown in FIG. The multiplexing unit 21 separates the data block 110 and the internal header 110A, the internal header 110A is supplied to the header analysis unit 31 of the buffer control unit 30, and only the data block 110 part is input to the common buffer memory 22. Also good.
According to the above configuration, the memory capacity of the common buffer memory 22 can be used effectively, and it is not necessary to remove the internal header from the data block at each output line interface 20-i.
[0064]
As still another embodiment of the present invention, each input line interface 10-i outputs the fixed-length data block 110 to the multiplexing unit 21 without adding an internal header, and the header analysis unit 31 of the buffer control unit 30 The packet header included in the head data block of each variable-length packet is analyzed, the output line number and the number of subsequent data blocks are managed on the management table for each input line, and the input line selection signal given from the input counter 24 is Accordingly, the control table such as IN-i, FP, EP, OUT-j described above may be generated by referring to the management table. Further, the conversion from the variable-length packet 100 to the fixed-length data block 110 may be performed by the multiplexing unit 21 instead of by each input line interface 10-i.
In the embodiment, the packet switch connected to a plurality of input / output lines has been described. However, the buffer control of the present invention has a switch structure (multiplexing) that outputs variable-length packets received from a plurality of input lines to one output line. (Apparatus).
[0065]
As described above, in the embodiment of the present invention, an input queue for each variable length packet is formed, and when the last data block of one variable length packet is written to the buffer memory, the linked queue registered in the input queue is registered. -The address is moved to the output queue. Therefore, even when a plurality of variable length packets directed to the same output line are input in parallel, data blocks of other packets are mixed in the data block sequence belonging to one variable length packet in the output queue. This can be prevented, and by sequentially sending the data blocks taken out from the output queue to the output line, the received packet can be correctly transferred to the destination device.
[0066]
Also, as in the embodiment, the output queue is composed of a standby buffer and an address table (or register), and the addresses of the first data block and the last data block of the variable length packet waiting for output are temporarily stored in the standby buffer. When the method of managing the next read address and the last read address of the variable length packet being output by the above address table is used, even if a large number of variable length packets directed to the same output line are received, Can be transferred.
[0067]
Also, as shown in the second embodiment, by registering linked addresses of the same variable length packet in a plurality of output queues and releasing the read address when the read count of the same data block reaches a specified value. Multicast transfer using the common buffer memory effectively becomes possible.
[0068]
【The invention's effect】
As is apparent from the above description, according to the present invention, the variable-length packet received from the input line is divided into fixed-length data blocks and stored in the common buffer memory in fixed-length block units. A configuration in which only the linked address list for reading the data block sequence is moved to the output queue without moving the data block sequence already stored in the common buffer memory when the last data block of the packet is accumulated. Thus, high-speed switching of variable-length packets is possible. Also, a multicast function can be easily realized by registering the same linked address list in a plurality of output queues.
[Brief description of the drawings]
FIG. 1 is a diagram showing an embodiment of a packet switch to which the present invention is applied.
FIG. 2 is a diagram showing details of a buffer control unit 30 of the packet switch shown in FIG. 1;
FIG. 3 is a diagram for explaining data blocks stored in a common buffer memory 22, and states of a next address memory 340 and an input queue / address table 300;
FIG. 4 is a diagram for explaining the relationship between an input queue / address table 300 and an output queue / address table 310 when the last data block of a variable-length packet arrives;
FIG. 5 is a diagram for explaining the relationship between the input queue address table 300 and the output queue address table 310 when the last data block of another variable-length packet arrives when the output queue is in use.
6 is a diagram showing an embodiment of the input queue control unit 32 shown in FIG. 2. FIG.
FIG. 7 is a diagram showing an embodiment of the output queue control unit 33 shown in FIG.
FIG. 8 is a diagram showing an example of the next address management unit shown in FIG. 2;
FIG. 9 is a diagram illustrating an example of a multicast buffer control unit 30B.
10 is a diagram showing an example of a read address release control unit 35 in FIG. 9;
FIG. 11 is a diagram showing another embodiment of a packet switch to which the present invention is applied.
[Explanation of symbols]
1: packet switch, 10: input line interface,
20: output line interface, 21: multiplexing unit, 22: common buffer memory,
23: separation unit, 24: input counter, 25: output counter,
30, 30B: buffer control unit, LI: input line, LO: output line,
31: Header analysis unit, 32: Input queue control unit, 33: Output queue control unit,
34: Next address management unit, 35: Empty address FIFO, 36: Read address release control unit, 300: Input queue address table,
301 (BA1 to BAn): packet head address,
302 (WA1 to WAn): Latest address,
310: Output queue address table,
311 (RA1 to RAn): next read address,
312 (EA1 to EAn): last read address,
313 (F1 to Fn): a queue flag.

Claims (10)

複数の入力回線から受信した可変長パケットを少なくとも1つの出力回線に固定長のデータブロック単位で転送するパケットスイッチにおいて、
上記複数の入力回線に共用される共通バッファメモリと、
上記各入力回線からの受信パケットを固定長のデータブロック単位で多重化して上記共通バッファメモリに供給する多重化手段と、
上記共通バッファメモリへの上記各固定長データブロックの書込みと読出しを制御するバッファ制御手段とからなり、
上記バッファ制御手段が、上記共通バッファメモリにおける各固定長データブロックの書込みアドレスを可変長パケット別にリンクして複数の入力キューを形成しておき、可変長パケットの最後の固定長データブロックが上記共通バッファメモリに書込み済みとなった入力キューを転送先出力回線と対応する待機バッファを備えた出力キューに登録する第1制御手段と、出力回線対応に形成された複数の出力キューを所定の順序でアクセスし、各出力キューが示すリンクド・アドレスに基づいて上記共通バッファメモリから固定長データブロックを読み出す第2制御手段とを備えたことを特徴とするパケットスイッチ。
In a packet switch that transfers variable-length packets received from a plurality of input lines to at least one output line in units of fixed-length data blocks,
A common buffer memory shared by the plurality of input lines;
Multiplexing means for multiplexing received packets from each input line in units of fixed-length data blocks and supplying the multiplexed packets to the common buffer memory;
Buffer control means for controlling the writing and reading of each fixed-length data block to the common buffer memory,
The buffer control means links the write address of each fixed length data block in the common buffer memory for each variable length packet to form a plurality of input queues, and the last fixed length data block of the variable length packet is the common First control means for registering an input queue that has been written to the buffer memory in an output queue having a standby buffer corresponding to the transfer destination output line, and a plurality of output queues formed for the output line in a predetermined order A packet switch comprising: second control means for accessing and reading a fixed-length data block from the common buffer memory based on a linked address indicated by each output queue.
前記バッファ制御手段が、前記共通バッファメモリにおける空きアドレスを保持するための空きアドレスメモリと、前記共通バッファメモリにおける固定長データブロックの書込みアドレスを記憶するための次アドレスメモリとを有し、
前記第1制御手段が、上記空きアドレスメモリから取り出した書込みアドレスに基づいて前記共通バッファメモリに各固定長データブロックを書き込み、上記次アドレスメモリに上記各書込みアドレスと対応して同一可変長パケットにおける次の固定長データブロックの書込みアドレスを記憶することにより、前記入力キューを形成することを特徴とする請求項1に記載のパケットスイッチ。
The buffer control means has an empty address memory for holding an empty address in the common buffer memory, and a next address memory for storing a write address of a fixed-length data block in the common buffer memory;
The first control means writes each fixed length data block to the common buffer memory based on the write address taken out from the empty address memory, and in the same variable length packet corresponding to each write address to the next address memory. The packet switch according to claim 1, wherein the input queue is formed by storing a write address of a next fixed-length data block.
前記各出力キューが、可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスを一時的に記憶するための待機バッファと、次に読み出すべきデータブロックを示す次読出しアドレスと最後のデータブロックを示す最終読出しアドレスとを記憶するアドレスメモリとからなり、
前記第1制御手段が、各入力キューにおける可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスを転送先出力回線と対応する待機バッファに登録し、これに付随するアドレスメモリが空き状態となった時、前記第2制御手段が、上記待機バッファから取り出した1対のアドレスを上記アドレスメモリに設定することを特徴とする請求項2に記載のパケットスイッチ。
Each output queue includes a standby buffer for temporarily storing the write address of the first data block and the write address of the last data block of the variable length packet, the next read address indicating the data block to be read next, and the last data. An address memory for storing a final read address indicating a block;
The first control means registers the write address of the first data block and the write address of the last data block of the variable length packet in each input queue in the standby buffer corresponding to the transfer destination output line, and the associated address memory is empty. 3. The packet switch according to claim 2, wherein the second control unit sets a pair of addresses fetched from the standby buffer in the address memory when a state is reached.
前記第2制御手段が、前記各出力キューに登録された次読出しアドレスに基づいて、前記共通バッファメモリと次アドレスメモリからそれぞれ固定長データブロックと次の固定長データブロックのアドレスとを読み出し、上記次読出しアドレスを解放すると共に、上記次アドレスメモリから読み出されたアドレスを当該出力キューにおける新たな次読出しアドレスとすることを特徴とする請求項2または請求項3に記載のパケットスイッチ。The second control means reads out the fixed-length data block and the address of the next fixed-length data block from the common buffer memory and the next address memory, respectively, based on the next read address registered in each output queue, 4. The packet switch according to claim 2, wherein a next read address is released, and an address read from the next address memory is set as a new next read address in the output queue. 前記共通バッファメモリから読み出された固定長データブロックを複数の出力回線に振り分けるための分離手段を備えたことを特徴とする請求項1〜請求項4の何れかに記載のパケットスイッチ。5. The packet switch according to claim 1, further comprising separation means for distributing the fixed-length data block read from the common buffer memory to a plurality of output lines. 複数の入力回線から受信した可変長パケットを少なくとも1つの出力回線に固定長のデータブロック単位で転送するパケットスイッチにおいて、
上記複数の入力回線に共用される共通バッファメモリと、
上記各入力回線からの受信パケットを固定長のデータブロック単位で多重化して上記共通バッファメモリに供給する多重化手段と、
上記共通バッファメモリへの上記各固定長データブロックの書込みと読出しを制御するバッファ制御手段とからなり、
上記バッファ制御手段が、上記共通バッファメモリにおける各固定長データブロックの書込みアドレスを可変長パケット別にリンクして複数の入力キューを形成しておき、可変長パケットの最後の固定長データブロックが上記共通バッファメモリに書き込み済みとなった入力キューを転送先出力回線と対応する出力キューに登録する第1制御手段と、出力回線対応に形成された複数の出力キューを所定の順序でアクセスし、各出力キューが示すリンクド・アドレスに基づいて上記共通バッファメモリから固定長データブロックを読み出す第2制御手段とを備え、上記第1制御手段が、最後の固定長データブロックが書き込み済みとなった1つの入力キューを複数の出力キューに登録する機能を有することを特徴とするパケットスイッチ。
In a packet switch that transfers variable-length packets received from a plurality of input lines to at least one output line in units of fixed-length data blocks,
A common buffer memory shared by the plurality of input lines;
Multiplexing means for multiplexing received packets from each input line in units of fixed-length data blocks and supplying the multiplexed packets to the common buffer memory;
Buffer control means for controlling the writing and reading of each fixed-length data block to the common buffer memory,
The buffer control means links the write address of each fixed length data block in the common buffer memory for each variable length packet to form a plurality of input queues, and the last fixed length data block of the variable length packet is the common The first control means for registering the input queue that has been written in the buffer memory in the output queue corresponding to the transfer destination output line, and the plurality of output queues formed for the output line are accessed in a predetermined order, and each output Second control means for reading a fixed-length data block from the common buffer memory based on a linked address indicated by a queue, wherein the first control means has one input for which the last fixed-length data block has been written. A packet switch having a function of registering a queue in a plurality of output queues.
前記バッファ制御手段が、前記共通バッファメモリにおける空きアドレスを保持するための空きアドレスメモリと、前記共通バッファメモリにおける固定長データブロックの書込みアドレスを記憶するための次アドレスメモリとを有し、
前記第1制御手段が、上記空きアドレスメモリから取り出した書込みアドレスに基づいて前記共通バッファメモリに各固定長データブロックを書き込み、上記次アドレスメモリに上記各書込みアドレスと対応して同一可変長パケットにおける次の固定長データブロックの書込みアドレスを記憶することにより、前記入力キューを形成することを特徴とする請求項6に記載のパケットスイッチ。
The buffer control means has an empty address memory for holding an empty address in the common buffer memory, and a next address memory for storing a write address of a fixed-length data block in the common buffer memory;
The first control means writes each fixed length data block to the common buffer memory based on the write address taken out from the empty address memory, and in the same variable length packet corresponding to each write address to the next address memory. The packet switch according to claim 6, wherein the input queue is formed by storing a write address of a next fixed-length data block.
前記各出力キューが、可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスを一時的に記憶するための待機バッファと、次に読み出すべきデータブロックを示す次読出しアドレスと最後のデータブロックを示す最終読出しアドレスとを記憶するアドレスメモリとからなり、
前記第1制御手段が、各入力キューにおける可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスを転送先出力回線と対応する待機バッファに登録し、これに付随するアドレスメモリが空き状態となった時、前記第2制御手段が、上記待機バッファから取り出した1対のアドレスを上記アドレスメモリに設定することを特徴とする請求項7に記載のパケットスイッチ。
Each output queue includes a standby buffer for temporarily storing the write address of the first data block and the write address of the last data block of the variable length packet, the next read address indicating the data block to be read next, and the last data. An address memory for storing a final read address indicating a block;
The first control means registers the write address of the first data block and the write address of the last data block of the variable length packet in each input queue in the standby buffer corresponding to the transfer destination output line, and the associated address memory is empty. 8. The packet switch according to claim 7, wherein the second control unit sets a pair of addresses taken out from the standby buffer in the address memory when a state is reached.
前記第2制御手段が、前記各出力キューに登録された次読出しアドレスに基づいて、前記共通バッファメモリと次アドレスメモリからそれぞれ固定長データブロックと次の固定長データブロックのアドレスとを読出し、上記次アドレスメモリから読み出されたアドレスを当該出力キューにおける新たな次読出しアドレスとすることを特徴とする請求項7または請求項8に記載のパケットスイッチ。The second control means reads the fixed-length data block and the address of the next fixed-length data block from the common buffer memory and the next address memory, respectively, based on the next read address registered in each output queue; 9. The packet switch according to claim 7, wherein an address read from the next address memory is set as a new next read address in the output queue. 前記共通バッファメモリにおける各固定長データブロックの読出し回数をカウントし、読出し回数が指定値に達した時、上記読出しアドレスを解放するアドレス解放制御手段をすることを特徴とする請求項6〜請求項9の何れかに記載のパケットスイッチ。6. The address release control means for counting the number of reads of each fixed-length data block in the common buffer memory and releasing the read address when the number of reads reaches a specified value. The packet switch according to any one of 9.
JP2000378448A 2000-11-08 2000-12-13 Packet switch Expired - Fee Related JP3652245B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000378448A JP3652245B2 (en) 2000-12-13 2000-12-13 Packet switch
US09/791,791 US6977941B2 (en) 2000-11-08 2001-02-26 Shared buffer type variable length packet switch

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000378448A JP3652245B2 (en) 2000-12-13 2000-12-13 Packet switch

Publications (2)

Publication Number Publication Date
JP2002185495A JP2002185495A (en) 2002-06-28
JP3652245B2 true JP3652245B2 (en) 2005-05-25

Family

ID=18847017

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000378448A Expired - Fee Related JP3652245B2 (en) 2000-11-08 2000-12-13 Packet switch

Country Status (1)

Country Link
JP (1) JP3652245B2 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004066571A1 (en) * 2003-01-20 2004-08-05 Fujitsu Limited Network switch apparatus and network switch method
US7440470B2 (en) * 2003-02-07 2008-10-21 Fujitsu Limited Multicasting in a high-speed switching environment
US7447201B2 (en) * 2003-02-07 2008-11-04 Fujitsu Limited Multicasting in a high-speed switching environment
JP4530806B2 (en) 2004-11-05 2010-08-25 富士通株式会社 Packet transmission equipment
KR100732135B1 (en) * 2005-04-08 2007-06-27 후지쯔 가부시끼가이샤 Network switch apparatus and network switch method
JP2007208437A (en) * 2006-01-31 2007-08-16 Fujitsu Ltd Cellulation method and device thereof
JP4786522B2 (en) 2006-12-25 2011-10-05 富士通株式会社 Packet relay method and apparatus
JP5342428B2 (en) * 2009-12-18 2013-11-13 富士通テレコムネットワークス株式会社 Communication control device

Also Published As

Publication number Publication date
JP2002185495A (en) 2002-06-28

Similar Documents

Publication Publication Date Title
US6977941B2 (en) Shared buffer type variable length packet switch
TW453080B (en) Method and apparatus for selectively discarding packet for blocked output queues in the network switch
JP3789395B2 (en) Packet processing device
EP0960536B1 (en) Queuing structure and method for prioritization of frames in a network switch
EP0960502B1 (en) Method and apparatus for transmitting multiple copies by replicating data identifiers
US6504846B1 (en) Method and apparatus for reclaiming buffers using a single buffer bit
EP0849917B1 (en) Switching system
US6424659B2 (en) Multi-layer switching apparatus and method
US6052751A (en) Method and apparatus for changing the number of access slots into a memory
JP3645734B2 (en) Network relay device and network relay method
JP3109591B2 (en) ATM switch
JP2001045061A (en) Communication node device
JP2000503828A (en) Method and apparatus for switching data packets over a data network
US20060050693A1 (en) Building data packets for an advanced switching fabric
JP2001512942A (en) Switching field structure
JP4182180B2 (en) Network relay device and network relay method
JP3652245B2 (en) Packet switch
US6735207B1 (en) Apparatus and method for reducing queuing memory access cycles using a distributed queue structure
JP2003521156A (en) Apparatus and method for sharing memory using a single ring data bus connection configuration
JP3645735B2 (en) Network relay device and network relay method
Chiueh et al. Suez: A cluster-based scalable real-time packet router
Tantawy et al. On the design of a multigigabit IP router
JP2000244570A (en) Device and method for network relay
JP3255113B2 (en) Packet switch system, integrated circuit including the same, packet switch control method, packet switch control program recording medium
JP2002152247A (en) Packet switch

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20040209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050201

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050222

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090304

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100304

Year of fee payment: 5

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

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees