(57)【特許請求の範囲】
【請求項１】
複数の入力回線から受信した可変長パケットを少なくとも１つの出力回線に固定長のデータブロック単位で転送するパケットスイッチにおいて、
上記複数の入力回線に共用される共通バッファメモリと、
上記各入力回線からの受信パケットを固定長のデータブロック単位で多重化して上記共通バッファメモリに供給する多重化手段と、
上記共通バッファメモリへの上記各固定長データブロックの書込みと読出しを制御するバッファ制御手段とからなり、
上記バッファ制御手段が、上記共通バッファメモリにおける各固定長データブロックの書込みアドレスを可変長パケット別にリンクして複数の入力キューを形成しておき、可変長パケットの最後の固定長データブロックが上記共通バッファメモリに書込み済みとなった入力キューを転送先出力回線と対応する待機バッファを備えた出力キューに登録する第１制御手段と、出力回線対応に形成された複数の出力キューを所定の順序でアクセスし、各出力キューが示すリンクド・アドレスに基づいて上記共通バッファメモリから固定長データブロックを読み出す第２制御手段とを備えたことを特徴とするパケットスイッチ。
【請求項２】
前記バッファ制御手段が、前記共通バッファメモリにおける空きアドレスを保持するための空きアドレスメモリと、前記共通バッファメモリにおける固定長データブロックの書込みアドレスを記憶するための次アドレスメモリとを有し、
前記第１制御手段が、上記空きアドレスメモリから取り出した書込みアドレスに基づいて前記共通バッファメモリに各固定長データブロックを書き込み、上記次アドレスメモリに上記各書込みアドレスと対応して同一可変長パケットにおける次の固定長データブロックの書込みアドレスを記憶することにより、前記入力キューを形成することを特徴とする請求項１に記載のパケットスイッチ。
【請求項３】
前記各出力キューが、可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスを一時的に記憶するための待機バッファと、次に読み出すべきデータブロックを示す次読出しアドレスと最後のデータブロックを示す最終読出しアドレスとを記憶するアドレスメモリとからなり、
前記第１制御手段が、各入力キューにおける可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスを転送先出力回線と対応する待機バッファに登録し、これに付随するアドレスメモリが空き状態となった時、前記第２制御手段が、上記待機バッファから取り出した１対のアドレスを上記アドレスメモリに設定することを特徴とする請求項２に記載のパケットスイッチ。
【請求項４】
前記第２制御手段が、前記各出力キューに登録された次読出しアドレスに基づいて、前記共通バッファメモリと次アドレスメモリからそれぞれ固定長データブロックと次の固定長データブロックのアドレスとを読み出し、上記次読出しアドレスを解放すると共に、上記次アドレスメモリから読み出されたアドレスを当該出力キューにおける新たな次読出しアドレスとすることを特徴とする請求項２または請求項３に記載のパケットスイッチ。
【請求項５】
前記共通バッファメモリから読み出された固定長データブロックを複数の出力回線に振り分けるための分離手段を備えたことを特徴とする請求項１〜請求項４の何れかに記載のパケットスイッチ。
【請求項６】
複数の入力回線から受信した可変長パケットを少なくとも１つの出力回線に固定長のデータブロック単位で転送するパケットスイッチにおいて、
上記複数の入力回線に共用される共通バッファメモリと、
上記各入力回線からの受信パケットを固定長のデータブロック単位で多重化して上記共通バッファメモリに供給する多重化手段と、
上記共通バッファメモリへの上記各固定長データブロックの書込みと読出しを制御するバッファ制御手段とからなり、
上記バッファ制御手段が、上記共通バッファメモリにおける各固定長データブロックの書込みアドレスを可変長パケット別にリンクして複数の入力キューを形成しておき、可変長パケットの最後の固定長データブロックが上記共通バッファメモリに書き込み済みとなった入力キューを転送先出力回線と対応する出力キューに登録する第１制御手段と、出力回線対応に形成された複数の出力キューを所定の順序でアクセスし、各出力キューが示すリンクド・アドレスに基づいて上記共通バッファメモリから固定長データブロックを読み出す第２制御手段とを備え、上記第１制御手段が、最後の固定長データブロックが書き込み済みとなった１つの入力キューを複数の出力キューに登録する機能を有することを特徴とするパケットスイッチ。
【請求項７】
前記バッファ制御手段が、前記共通バッファメモリにおける空きアドレスを保持するための空きアドレスメモリと、前記共通バッファメモリにおける固定長データブロックの書込みアドレスを記憶するための次アドレスメモリとを有し、
前記第１制御手段が、上記空きアドレスメモリから取り出した書込みアドレスに基づいて前記共通バッファメモリに各固定長データブロックを書き込み、上記次アドレスメモリに上記各書込みアドレスと対応して同一可変長パケットにおける次の固定長データブロックの書込みアドレスを記憶することにより、前記入力キューを形成することを特徴とする請求項６に記載のパケットスイッチ。
【請求項８】
前記各出力キューが、可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスを一時的に記憶するための待機バッファと、次に読み出すべきデータブロックを示す次読出しアドレスと最後のデータブロックを示す最終読出しアドレスとを記憶するアドレスメモリとからなり、
前記第１制御手段が、各入力キューにおける可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスを転送先出力回線と対応する待機バッファに登録し、これに付随するアドレスメモリが空き状態となった時、前記第２制御手段が、上記待機バッファから取り出した１対のアドレスを上記アドレスメモリに設定することを特徴とする請求項７に記載のパケットスイッチ。
【請求項９】
前記第２制御手段が、前記各出力キューに登録された次読出しアドレスに基づいて、前記共通バッファメモリと次アドレスメモリからそれぞれ固定長データブロックと次の固定長データブロックのアドレスとを読出し、上記次アドレスメモリから読み出されたアドレスを当該出力キューにおける新たな次読出しアドレスとすることを特徴とする請求項７または請求項８に記載のパケットスイッチ。
【請求項１０】
前記共通バッファメモリにおける各固定長データブロックの読出し回数をカウントし、読出し回数が指定値に達した時、上記読出しアドレスを解放するアドレス解放制御手段をすることを特徴とする請求項６〜請求項９の何れかに記載のパケットスイッチ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、可変長パケット通信ネットワークにおけるノード装置として適用されるパケットスイッチに関し、更に詳しくは、受信パケットを一時的に蓄積するためのメモリとして共通バッファメモリを使用した共通バッファ型の可変長パケットスイッチに関する。
【０００２】
【従来の技術】
近年、注目されているインターネットプロトコル（Internet Protocol：以下、ＩＰと言う）では、ＩＰデータグラムと呼ばれる可変長のパケット（ＩＰパケット）を転送単位として、メッセージ転送が行われる。ＩＰパケット網を構成する従来のノード装置では、ソフトウェア処理によって受信パケットの宛先方路へのスイッチングが行われているが、スイッチングの高速化要求に伴って、ノード装置内では固定長のパケット（データブロック）を転送単位としてスイッチングを行う装置構成が提案されている。
【０００３】
ＩＰパケットを高速度で転送するノード装置として、例えば、"A 50-Gb/s IP Router"（Craig Partridge他著、IEEE/ACM TRANSACTIONS ON NETWORKING,  Vol.6,No.3,June 1998）の論文には、それぞれ複数のネットワーク・インタフェースをサポートする複数の回線カード（ボード）と、ルーティングテーブルを備えた転送エンジン（Forwarding Engine）カードとを、例えば、クロスバスイッチに代表されるポイント・ツー・ポイント型のスイッチで結合し、各回線カードが受信パケットのヘッダ部を含むデータブロックを上記転送エンジンに送信し、転送エンジンで更新処理された新たなヘッダ情報を含むデータブロックをパケット入力側の回線カードに返送し、入力側の各回線カードが、上記新たなヘッダ情報を含むデータブロックとパケット残部とを出力側回線カードに転送するようにした構成のルータ装置が提案されている。
【０００４】
上記論文によると、入力側の各回線カードが、パケットを６４バイト単位の連鎖されたページ（データブロック）に解体して送出すること、出力側の各回線カードが、これらのページをパケットを表すリンクド・リストに組立て、組立てたパケットをＱｏＳプロセッサに渡し、ＱｏＳプロセッサが、パケット長、宛先および転送エンジンが指定したフロー識別子に基づいて、上記パケットを送信キュー内の適当な位置に置くことが開示されている。
【０００５】
パケットの転送単位を固定長にしたスイッチング装置として、ＡＴＭ(Asynchronous Transfer Mode)スイッチがあげられる。ＡＴＭスイッチでは、各入力回線から受信された５３バイトの固定長パケット（ＡＴＭセル）をバッファメモリに一時的に蓄積した後、蓄積セルをセルヘッダに含まれるコネクション識別情報（ＶＰＩ／ＶＣＩ）によって決まる特定の出力回線にルーティングしている。
【０００６】
ＡＴＭスイッチにおいて、複数の入力回線でバッファメモリを共用する共通バッファ型の構造を採用すると、バッファメモリ内に各出力回線毎に可変長のキューを形成できるため、例えば、同一出力回線に向かうセル列が複数の入力回線から同時に受信された場合でも、共通バッファ全体として空き領域がある限り、各入力回線からの受信セルを廃棄することなくバッファリングすることが可能となり、メモリ資源を有効に利用したスイッチを実現できる。
【０００７】
特開平１１−２６１５８４号公報には、上記共通バッファメモリの利点を活かした可変長メッセージ用のスイッチング装置が提案されている。上記従来技術では、共通バッファメモリをメッセージ対応の複数のメモリブロックに分割し、各受信メッセージに対して空き状態の１つのメモリブロックを割り当て、各入力回線から受信されたメッセージを固定長の複数のセルに分割し、同一メッセージに属するセルを同一のメモリブロックに順次に格納する構成となっている。
【０００８】
【発明が解決しようとする課題】
上述したＩＥＥＥ文献に記載されたルータ装置では、入力側の回線カードが、各パケットの送信に先立って、スイッチ・アロケータを介して出力側回線カードと折衝し、出力側カードがパケットの受信を了承した場合に送信を開始しているため、パケットのスイッチング処理速度に問題がある。また、入力側の各回線カードにはパケットを待機させるためのバッファが必要となり、出力側の各回線カードにもパケット組立てのためのバッファが必要となるため、バッファメモリの使用効率に問題がある。
【０００９】
一方、上記特開平１１−２６１５８４号公報に記載されたスイッチング装置では、各メッセージの末尾部分が入力された時、受信メッセージと対応するメモリブロックに蓄積されている全てのセルを別のメモリ領域（メッセージキュー）に移す構成となっているため、メモリ領域間でのメッセージの転送所要時間とバッファメモリの利用効率に問題があった。
【００１０】
本発明の目的は、共通バッファメモリを効率的に利用し、可変長パケットを高速スイッチング可能なパケットスイッチを提供することにある。
本発明の他の目的は、共通バッファメモリを効率的に利用し、可変長パケットのマルチキャストを可能にしたパケットスイッチを提供することにある。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、本発明のパケットスイッチは、複数の入力回線に共用される共通バッファメモリと、各入力回線からの受信パケットを固定長のデータブロック単位で多重化して上記共通バッファメモリに供給する多重化手段と、上記共通バッファメモリへの上記各固定長データブロックの書込みと読出しを制御するバッファ制御手段とからなり、上記バッファ制御手段が、上記多重化手段から出力された各固定長データブロックを上記共通バッファに書き込む時に可変長パケット別の入力キューを形成しておき、可変長パケットの最終データブロックが入力キューに登録された時点で、該入力キューを可変長パケットの転送先出力回線と対応した出力キューに登録することを特徴とする。
【００１２】
更に詳述すると、上記バッファ制御手段は、上記共通バッファメモリにおける各固定長データブロックの書込みアドレスを可変長パケット別にリンクすることによって複数の入力キューを形成し、可変長パケットの最後の固定長データブロックが上記共通バッファメモリに書き込み済みとなった入力キューを転送先出力回線と対応する待機バッファを備えた出力キューに登録する第１制御手段と、出力回線対応に形成された複数の出力キューを所定の順序でアクセスし、各出力キューが示すリンクド・アドレスに基づいて上記共通バッファメモリから固定長データブロックを読み出す第２制御手段とを備える。
上記可変長パケット別の入力キューは、例えば、空きアドレスメモリから取り出した書込みアドレスに基づいて上記共通バッファメモリに各固定長データブロックを書き込み、上記各書込みアドレスと対応して同一可変長パケットにおける次の固定長データブロックの書込みアドレスを次アドレスメモリに記憶することにより形成される。
【００１３】
本発明において、各出力キューは、例えば、可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスとを一時的に記憶するための待機バッファと、次に読み出すべきデータブロックを示す次読出しアドレスと最後のデータブロックを示す最終読出しアドレスとを記憶するアドレスメモリとからなり、上記第１制御手段が、各可変長パケットの先頭データブロックの書込みアドレスと最終データブロックの書込みアドレスをそれぞれ転送先出力回線と対応する待機バッファに登録し、これに付随するアドレスメモリが空き状態となった時、上記第２制御手段が、上記待機バッファから取り出した１対のアドレスを新たなデータブロック群の次読出しアドレスおよび最終読出しアドレスとしてアドレスメモリに設定する。この場合、第２制御手段は、各出力キューに登録された次読出しアドレスに基づいて、共通バッファメモリと次アドレスメモリからそれぞれ固定長データブロックと次の固定長データブロックのアドレスとを読み出し、上記次アドレスメモリから読み出されたアドレスを当該出力キューにおける新たな次読出しアドレスとすることによって、各可変長パケットを構成するデータブロックを次々と読み出すことが可能となる。
【００１４】
尚、受信パケットがマルチキャストパケットの場合、最後のデータブロックが共通バッファメモリに書き込まれた時点で、上記第１制御手段によって、同一入力キューをマルチキャスト出力回線と対応する複数の出力キューに登録することにより、マルチキャスト転送が可能となる。この場合、パケットスイッチに、共通バッファメモリにおける各固定長データブロックの読出し回数をカウントし、読出し回数が指定値に達した時、読出しアドレスを解放するアドレス解放制御手段を設けることによって、共通バッファメモリの空きアドレスを管理できる。
【００１５】
【発明の実施の形態】
以下、本発明の実施例について図面を参照して詳細に説明する。
図１は、本発明によるパケットスイッチの１実施例を示す。
パケットスイッチ１は、それぞれ入力回線ＬＩ−１〜ＬＩ−ｎから入力された可変長パケット１００を固定長の複数のデータブロック１１０に分割し、各データブロックに内部ヘッダ１１０Ａを付加して出力する複数の入力回線インタフェース１０−１〜１０−ｎと、上記入力回線インタフェース１０−１〜１０−ｎから入力されたデータブロックを時分割多重して信号線Ｌ２１に出力する多重化部２１と、上記信号線Ｌ２１に接続された共通バッファメモリ２２と、上記共通バッファメモリ２２から信号線Ｌ２２に読み出されたデータブロックを複数の出力回線インタフェース２０−１〜２０−ｎに順次に振り分ける分離部２３と、上記共通バッファメモリ２２へのデータブロックの書込みと読出しを制御するバッファ制御部３０と、書込みサイクルを示すクロックＣＬＫ０をカウントして入力回線選択信号を発生する入力カウンタ２４と、読出しサイクルを示すクロックＣＬＫ１をカウントして出力回線選択信号を発生する出力カウンタ２５とからなっている。
【００１６】
各入力回線ＬＩ−ｉ（ｉ＝１〜ｎ）から入力される可変長パケットは、宛先アドレスを含むパケットヘッダ１００Ａとデータ部１００Ｂとからなる。各入力回線インタフェース１０−ｉ（ｉ＝１〜ｎ）は、入力回線ＬＩ−ｉから受信した可変長パケット１００を固定長の複数のデータブロック１１０に分割し、例えば、入力回線番号と、パケットヘッダ１００Ａから抽出された宛先アドレスによって決まる出力回線番号と、各データブロック１１０が可変長パケットにおける先頭ブロック、中間ブロック、最終ブロックの何れに該当するかを示すブロック位置表示情報とを含む内部ヘッダ１１０Ａを生成し、これを各データブロックに付加して出力する。
【００１７】
共通バッファメモリ２２へのデータブロックの書込みと読出しは、クロックＣＬＫ０とＣＬＫ１に従って交互に行われる。多重化部２１は、入力カウンタ２４が信号線Ｌ２４に発生する入力回線選択信号に応じて、入力回線インタフェース１０−１〜１０−ｎを循環的に選択し、各入力回線インタフェースから出力されたデータブロック１１０を順次に信号線Ｌ２１に多重化する。一方、分離部２３は、共通バッファメモリ２２から信号線Ｌ２２に読み出されたデータブロックを、出力カウンタ２５が信号線Ｌ２５に発生する出力回線選択信号によって特定される出力回線インタフェース２０−ｊ（ｊ＝１〜ｎ）に振り分ける。
出力回線インタフェース２０−１〜２０−ｎは、分離部２３から受け取ったデータブロック１１０から内部ヘッダ１１０Ａを取り除き、それぞれと対応する出力回線ＬＯ−１〜ＬＯ−ｎに送出する。
【００１８】
バッファ制御部３０は、クロックＣＬＫ０が示す各書込みサイクルにおいて、信号線Ｌ２１に現れる内部ヘッダ１１０Ａが示す入力回線番号ｉと対応するリンクド・アドレスリストを形成しながら、データブロックを共通バッファメモリ２２に書き込む。
上記バッファ制御部３０は、後述するように、信号線Ｌ２１に受信パケットの先頭ブロックが現れる都度、入力回線対応の新たな入力キューを形成し、後続する中間ブロックと最終ブロックのデータを入力回線対応の入力キューに次々と登録し、受信パケットの最終ブロックが共通バッファメモリ２２に書き込まれた時点で、入力キューを上記受信パケットの転送先出力回線と対応した出力キューにリンクするように、リンクド・アドレスリストをダイナミックに制御する。
【００１９】
共通バッファメモリ２２からのデータブロックの読出しは、各出力回線と対応して形成された出力キュー・アドレスリストに基づいて行なわれる。バッファ制御部３０は、信号線Ｌ２５で与えられる出力回線選択信号と対応した出力キューについて、読み出すべきデータブロックの有無をチェックし、もし、出力キューにデータブロックアドレスがリンクされていた場合は、出力キュー・アドレスリストに登録された次読出しアドレスを読出しアドレスＲＡとして、共通バッファメモリ２２から１つのデータブロックを信号線Ｌ２２に読み出し、アドレスリストの次読出しアドレスをリンクド・アドレスリストにおける次のデータブロックアドレスに書き換える。
【００２０】
図２は、バッファ制御部３０の詳細を示すブロック図である。
バッファ制御部３０は、ヘッダ解析部３１と、入力キュー制御部３２と、出力キュー制御部３３と、次アドレス管理部３４と、共通バッファメモリ２０の空きアドレスを格納するための空アドレスメモリ（ＦＩＦＯ）３５とからなる。
【００２１】
ヘッダ解析部３１は、信号線Ｌ２１に現れる各データブロックの内部ヘッダを解析して、入力回線番号ＩＮ−ｉと、出力回線番号ＯＵＴ−ｊと、入力データブロックが受信パケットの先頭ブロックか否かを示す先頭表示フラグ信号ＦＰと、入力データブロックが受信パケットの最終ブロックか否かを示す最終表示フラグ信号ＥＰとを発生する。
入力キュー制御部３２は、入力回線毎に、入力キューに登録された先頭データブロックのアドレス（パケット先頭アドレス：ＢＡｉ（ｉ＝１〜ｎ））３０１と、上記入力キューに登録された最新データブロックのアドレス（最新アドレス：ＷＡｉ（ｉ＝１〜 ｎ））３０２とを示す入力キュー・アドレステーブル３００を備えている。
出力キュー制御部３３は、出力キュー・アドレステーブル３１０と出力待機バッファ３３０とを備えている。
【００２２】
出力キュー・アドレステーブル３１０は、出力回線毎に、出力キューの先頭に位置したデータブロックの読出しアドレス（次読出しアドレスＲＡｊ（ｊ＝１〜ｎ））３１１と、出力キューの最後に位置したデータブロックの読出しアドレス（最終読出しアドレスＥＡｊ（ｊ＝１〜ｎ））３１２とを記憶するためのものである。以下の説明では、出力キュー・アドレステーブル３１０における第ｊ出力回線ＬＯ−ｊと対応したテーブル領域を符号３１０−ｊで表す。
【００２３】
出力待機バッファ３３０は、出力キュー・アドレステーブル３１０−ｊに先行パケットを読み出すためのアドレスＲＡｊ、ＥＡｊが残っている時、同一出力回線に送出すべき後続パケットの読み出しアドレスをＦＩＦＯ形式で待機させるためのものであり、各出力回線と対応して、パケットの先頭データブロックの読み出しアドレスＢＡｊを蓄積するためのバッファ領域３３０Ｂ−ｊと、パケットの最後のデータブロックの読み出しアドレスＷＡｊを蓄積するためのバッファ領域３３０Ｗ−ｊとが用意されている。バッファ領域３３０Ｂ−ｊ、３３０Ｗ−ｊに蓄積された読出しアドレスは、先行パケットの全てのデータブロックが共通バッファメモリから読み出され、実質的に出力キュー・アドレステーブルが空き状態となった時点で、出力キュー・アドレステーブルのテーブル領域３１０−ｊに移される。
【００２４】
次アドレス管理部３４は、共通バッファメモリ２２に蓄積可能なデータブロック数ｍに等しい複数のアドレス記憶領域ＮＡ１〜ＮＡｍからなる次アドレスメモリ３４０を備える。次アドレスメモリ３４０の各記憶領域は、入力キューに登録されたデータブロック列を登録順に読み出すためのリンクド・アドレスリストを形成するために利用される。
【００２５】
以下、入力回線ＬＩ−１とＬＩ−２から同一の出力回線ＬＯ−３に向かう可変長パケットが入力された場合を仮定して、入力回線ＬＩ−１と対応する入力キューのパケット先頭アドレスＢＡ１および最新アドレスＷＡ１と、入力回線ＬＩ−２と対応する入力キューのパケット先頭アドレスＢＡ２および最新アドレスＷＡ２と、出力回線ＬＯ−２と対応する出力キューの次読出しアドレスＲＡ３および最終読出しアドレスＥＡ３に着目して、図２と図３〜図５を参照しながら上記バッファ制御部３０の機能について詳述する。
【００２６】
ヘッダ解析部３１は、信号線Ｌ２１に出力された各データブロックの内部ヘッダ１１０Ａを解析し、入力回線番ＩＮ−ｉと出力回線番号ＯＵＴ−ｉを発生する。上記データブロックが可変長パケットの先頭ブロックであれば先頭表示フラグ信号ＦＰがオン状態となり、最終ブロックであれば最終表示フラグ信号ＥＰがオン状態となる。
信号線Ｌ２１に出力されたデータブロックは、空アドレスＦＩＦＯ３５から取り出された空きアドレスを書込みアドレスＷＡとして、共通バッファメモリ２０に書き込まれる。この時、入力キュー制御部３２は、ヘッダ解析部３１から出力された入力回線番号ＩＮ−ｉと先頭表示フラグ信号ＦＰの状態に応じて、入力キュー・アドレステーブル３００を更新する。
先頭表示フラグ信号ＦＰがオン状態であれば、空きアドレスＦＩＦＯ３５から取り出された書込みアドレスＷＡを上記入力回線番号ＩＮ−ｉと対応するテーブル領域３００−ｉにパケット先頭アドレスＢＡｉと最新アドレスＷＡｉとして書き込む。先頭表示フラグ信号ＦＰがオフ状態であれば、上記書込みアドレスＷＡを最新アドレスＷＡｉに書き込む。
【００２７】
入力キュー・アドレステーブル３００に新たなアドレスＷＡが書き込まれた時、最新アドレスＷＡｉとしてそれまで記憶されていたアドレスが次アドレス管理部３４に出力される。次アドレス管理部３４は、上記アドレスＷＡｉと対応する記憶領域ＮＡｉに、空きアドレスＦＩＦＯ３５から取り出された新たな書込みアドレスＷＡを記憶する。
これによって、１つの可変長パケットから分割された固定長のデータブロックが共通バッファメモリ２２に書込まれる度に、データブロックの書込みアドレスが次アドレスメモリ３４０に記憶され、最新アドレスＷＡｉが更新され、最終的には、パケット先頭アドレスＢＡｉが可変長パケットの先頭データブロックのアドレスを指し、最新アドレスＷＡｉが可変長パケットの最終データブロックのアドレスを指すことになる。
【００２８】
図３は、共通バッファメモリ２２に、入力回線インタフェース１０−１から出力されたデータブロックＤ１−１〜Ｄ１−４と、入力回線インタフェース１０−２から出力されたデータブロックＤ２−１〜Ｄ２−２が書き込まれた時点での、入力キュー・アドレステーブル３００の状態を示す。
ここで、ＷＡ１−１〜ＷＡ１−４は、空きアドレスＦＩＦＯ３５から得られたデータブロックＤ１−１〜Ｄ１−４の書込みアドレスＷＡの値、 ＷＡ２−１〜ＷＡ２−２はデータブロックＤ２−１〜Ｄ２−２の書込みアドレスＷＡの値を示す。また、ＲＡ３とＥＡ３は、上記データブロックＤ１−１〜Ｄ１−４、Ｄ２−１〜Ｄ２−２の転送先出力回線ＬＯ−３と対応した出力キュー・アドレステーブルエントリ３１０−３の内容を示している。
【００２９】
入力回線ＬＩ−１と対応する入力キュー・アドレステーブルでは、先頭データブロックＤ１−１の書込みアドレスＷＡ１−１がパケット先頭アドレスＢＡ１として記憶され、最新アドレスＷＡ１の内容はデータブロックの書込みの都度更新されて、ＷＡ１−１、ＷＡ１−２、ＷＡ１−３、ＷＡ１−４と変化する。
次アドレスメモリ３４０では、図３に示すように、最新アドレスＷＡ１と対応する記憶領域に、次データブロックの書込みアドレスが次々と記憶される。従って、入力キュー・アドレステーブル３００のパケット先頭アドレスＢＡ１と次アドレスメモリ３４０とによって、入力回線毎のリンクド・アドレスリストが形成される。
【００３０】
例えば、パケット先頭アドレスＢＡ１が示すアドレスＷＡ１−１に基づいて共通バッファメモリ２２と次アドレスメモリ３４０をアクセスすることによって、先頭データブロックＤ１−１と、次のデータブロックＤ１−２のアドレスＷＡ１−２とを読み出すことができ、このアドレスＷＡ１−２を次回の読出しサイクルにおける読出しアドレスＲＡとして利用することにより、次のデータブロックＤ１−２と、更に次のデータブロックＤ１−３のアドレスＷＡ１−３とを読み出すことができ、同様の動作を繰り返すことによって、入力キューに登録された全てのデータブロックを読み出すことが可能となる。
【００３１】
入力回線ＬＩ−１と同様、入力回線ＬＩ−２と対応する入力キュー・アドレステーブルでは、先頭データブロックＤ２−１の書込みアドレスＷＡ２−１がパケット先頭アドレスＢＡ２として記憶され、最新アドレスＷＡ１の内容は、データブロックの書込みの都度更新され、ＷＡ２−１、ＷＡ２−２、…と変化する。
【００３２】
図３は、入力回線インタフェース１０−１と１０−２が可変長パケットの最終データブロックを出力する前の状態を示しており、出力回線ＬＯ−３と対応した出力キューには有効データがなく、出力待機バッファ３３０−３と出力キュー・アドレステーブル３１０−３が空き状態となっている。
本発明は、共通バッファメモリ２２にパケットの最終データブロックが書き込まれた時、バッファ制御部３０が、上記最終データブロックの入力キューにおけるパケット先頭アドレスＢＡｉと最新アドレスＷＡｉ（＝ＷＡ）を出力待機バッファ３３０を介して出力キュー・アドレステーブル３１０に移すことを特徴としている。
【００３３】
図４は、入力回線インタフェース１０−１から出力された可変長パケットの最終データブロックＤ１−５が共通バッファメモリ２２に書き込まれた時点でのバッファ制御部３０の動作を示す。
この場合、バッファ制御部３０は、最終データブロックＤ１−５の書込みアドレスＷＡ１−５を次アドレスメモリ３４０に記憶した後、入力キューのパケット先頭アドレスＢＡ１の内容（ＷＡ１−１）と最新アドレスＷＡ１の内容（ＷＡ１−５）を出力待機バッファ３３０−３に移す。出力待機バッファ３３０−３に蓄積されたアドレスは、もし、出力キュー・アドレステーブル３１０−３が空き状タであれば、図４に示すように、出力キュー・アドレステーブルのＲＡ３、ＥＡ３に移される。尚、最新アドレスＷＡ１の内容は、今回、空きアドレスＦＩＦＯ３５から取り出された新たな書込みアドレスＷＡとなっているため、出力キュー・アドレステーブルのＥＡ３には、上記最新アドレスＷＡ１に代えて、空きアドレスＦＩＦＯ３５から取り出された書込みアドレスＷＡを記憶してもよい。
【００３４】
図５は、出力回線ＬＯ−３の出力キューが既に使用状態にある時、入力回線インタフェース１０−２から出力された可変長パケットの最終データブロックＤ２−３を共通バッファメモリ２２に書き込む場合のバッファ制御部３０の動作を示す。この場合、バッファ制御部３０は、最終データブロックＤ２−３の書込みアドレスＷＡ２−３を次アドレスメモリ３４０に記憶した後、入力キューのパケット先頭アドレスＢＡ２の内容（ＷＡ２−１）と最新アドレスＷＡ２の内容（ＷＡ２−３）を出力待機バッファ３３０−３に移す。
上記出力待機バッファ３３０−３に蓄積されたアドレスＷＡ２−１、ＷＡ２−３は、出力キュー・アドレステーブル３１０−３が空き状態となった時、すなわち、次読み出しアドレスＲＡ３と最終読み出しアドレスＥＡ３の値が一致した読み出しサイクルで、出力キュー・アドレステーブル３１０−３に移される。
【００３５】
回線インタフェースが受信した可変長パケットが短く、受信パケット全体が固定長の１つのデータブロックに収まる場合は、このデータブロックの書込みサイクルで、ヘッダ解析部３１から出力される先頭表示フラグ信号ＦＰと最終表示フラグ信号ＥＰが同時にオン状態となる。この場合、先頭表示フラグ信号ＦＰに応答して入力キュー・アドレステーブル３００に登録されたパケット先頭アドレスＢＡｉと最新アドレスＷＡｉの内容が、最終表示フラグ信号ＥＰに応答して出力待機バッファ３３０−ｊに直ちに移される。
【００３６】
もし、待機バッファ３３０−ｊに蓄積されたパケット先頭アドレスＢＡｉと最新アドレスＷＡｉの内容は、データブロックの転送先となる出力回線ＬＯ−ｊの出力キューが空状態であれば、図４と同様、出力キュー・アドレステーブル３１０−ｊに書き込まれ、上記出力キューが既に使用状態にあれば、図５と同様、出力待機バッファ３３０−ｊに留まる。
【００３７】
共通バッファメモリ２２からのデータブロックの読出しは、出力キュー制御部３３によって行われる。出力キュー制御部３３は、読出しサイクルに信号線Ｌ２５に出力される出力回線選択信号で特定される出力キュー・アドレステーブル領域３１０―ｊを参照し、次読出しアドレスＲＡｊに従って、共通バッファメモリ２２からデータブロックを読み出し、次アドレスメモリ３４０から次アドレスＮＡｊを読み出す。
使用済みとなった次読出しアドレスＲＡｊは、空きアドレスＦＩＦＯ３５に解放され、次アドレスメモリ３４０から読み出された次アドレスＮＡｊは、新たな次読出しアドレスＲＡｊとして出力キュー・アドレステーブル３１０−ｊに記憶される。但し、各パケットの最後のデータブロックの読出しサイクルでは、次アドレスメモリ３４０から読み出された次アドレスＮＡｊは無効となり、待機バッファから取り出された次パケットの先頭アドレスが、次読出しアドレスＲＡｊとして出力キュー・アドレステーブル３１０−ｊに設定される。
【００３８】
図６は、入力キュー制御部３２の１実施例を示す。
入力キュー制御部３２は、パケット先頭アドレスＢＡ１〜ＢＡｎを記憶するためのレジスタ３０１−１〜３０１−ｎと、最新アドレスＷＡ１〜ＷＡｎを記憶するためのレジスタ３０２−１〜３０２−ｎと、ヘッダ解析部３１から受信した入力回線番号ＩＮ−ｉをデコードし、イネーブル信号ＷＥＮ−１〜ＷＥＮ−ｎのうちの１つをオン状態とするデコーダ３２１と、レジスタ３０２−１〜３０２−ｎからの出力アドレスのうちの１つを選択するためのセレクタ３２２と、レジスタ３０１−１〜３０１−ｎからの出力アドレスのうちの１つを選択するためのセレクタ３２３と、パケット先頭アドレスの書込みイネーブル信号を制御するためのＡＮＤ回路３２４−１〜３２４−ｎとからなっている。
【００３９】
最新アドレスを記憶するレジスタ３０２−１〜３０２−ｎには、空きアドレスＦＩＦＯ３５から取り出されたアドレスＷＡが入力されており、それぞれデコーダ３２１から出力されるイネーブル信号ＷＥＮ−１〜ＷＥＮ−ｎによって、最新アドレスの更新が制御されている。入力回線番号ＩＮ−ｉが第ｉ番目の入力回線を示した場合、イネーブル信号ＷＥＮ―ｉがオン状態となり、空きアドレスＦＩＦＯ３５から取り出されたアドレスＷＡがレジスタ３０２−ｉに設定される。この時、それまでレジスタ３０２−ｉに記憶されていた前データブロックの書込みアドレス｛ＷＡｉ｝がセレクタ３２２によって選択され、次アドレス（ポインタアドレス）書込み用アドレスＷＡｉとして次アドレス管理部３４に供給される。
【００４０】
空きアドレスＦＩＦＯ３５から取り出されたアドレスＷＡは、パケット先頭アドレスＢＡ１〜ＢＡｎを記憶するためのレジスタ３０１−１〜３０１−ｎにも入力されている。これらのレジスタへの書込みは、ＡＮＤ回路３２４−１〜３２４−ｎによって制御されており、ヘッダ解析部３１から出力される先頭表示フラグＦＰがオン状態となった書込みサイクルに限り、入力回線番号ＩＮ−ｉと対応するレジスタ３０１−ｉへのアドレスＷＡの書込みが行われる。セレクタ３２３は、入力回線番号ＩＮ−ｉと対応するレジスタ３０１−ｉからの出力アドレスを選択し、パケット先頭アドレスＢＡｉとして出力する。
【００４１】
図７は、出力キュー制御部３３の１実施例を示す。
出力キュー制御部３３は、次読出しアドレスＲＡ１〜ＲＡｎを記憶するためのレジスタ３１１−１〜３１１−ｎと、最終読出しアドレスＥＡ１〜ＥＡｎを記憶するためのレジスタ３１２−１〜３１２−ｎと、パケット先頭アドレス用の出力待機バッファ（ＦＩＦＯ）３３０Ｂ−１〜３３０Ｂ−ｎと、パケット最終アドレス用の出力待機バッファ（ＦＩＦＯ）３３０Ｗ−１〜３３０Ｗ−ｎとからなっている。
【００４２】
また、上記出力キュー制御部３３は、レジスタ３１１−１〜３１１−ｎからの出力アドレスのうちの１つを選択するためのセレクタ３３１と、レジスタ３１２−１〜３１２−ｎからの出力アドレスのうちの１つを選択するためのセレクタ３３２と、レジスタ３１３−１〜３１３−ｎからの出力フラグのうちの１つを選択するためのセレクタ３３３と、出力カウンタ２５から信号線２５に出力された出力回線選択信号をデコードするためのデコーダ３３４と、ヘッダ解析部３１から出力される出力回線番号ＯＵＴ−ｊをデコードして、イネーブル信号ＥＮ−１〜ＥＮ−ｎのうちの１つをオン状態とするデコーダ３３５と、ヘッダ解析部３１から出力される最終表示フラグ信号ＥＰがオン状態となった時、上記イネーブル信号ＥＮ−１〜ＥＮ−ｎを有効にするためのＡＮＤ回路３３６−１〜３３６−ｎと、セレクタ３３１から出力される読出しアドレスＲＡｊとセレクタ３３２から出力されるパケット最終アドレスＥＡｊとを比較し、ＲＡｊとＥＡｊが一致した時、イネーブル信号ＥＮ−０をオン状態とする比較器３１５と、上記イネーブル信号ＥＮ−０がオフ状態の時、次アドレス管理部３４から出力された次アドレスＮＡｊをレジスタ３１１−１〜３１１−ｎに供給するＡＮＤ回路３１６と、上記イネーブル信号ＥＮ−０がオン状態の時、デコーダ３３４の出力信号を通すＡＮＤ回路３３９−１〜３３９−ｎとを備えている。
【００４３】
出力待機バッファ３３０−ｊ（３３０Ｂ−ｊと３３０Ｗ−ｊ、ｊ＝１〜ｎ）は、それぞれＡＮＤ回路３３６−１〜３３６−ｎの出力信号が書込みイネーブル信号ＷＥＮとして与えられている。書込みサイクルにおいて、最終表示フラグ信号ＥＰがオン状態となった時、出力回線番号ＯＵＴ−ｊと対応するＡＮＤ回路３３６−ｊからの書込みイネーブル信号ＷＥＮが有効となり、バッファ領域３３０Ｂ−ｊに入力キュー制御部３２から出力されたパケット先頭アドレスＢＡｉが設定され、バッファ領域３３０Ｗ−ｊに空きアドレスＦＩＦＯ３５から出力された書込みアドレスＷＡが設定される。
【００４４】
出力待機バッファ３３０−ｊ（３３０Ｂ−ｊと３３０Ｗ−ｊ）には、それぞれＡＮＤ回路３３９−１〜３３９−ｎの出力信号が読出しイネーブル信号ＲＥＮとして与えられている。読出しサイクルにおいて、比較器３１５の出力信号ＥＮ−０がオン状態となった時、出力回線番号ＯＵＴ−ｊと対応するＡＮＤ回路３３９−ｊの出力信号がオン状態となる。これによって、バッファ領域３３０Ｂ−ｊ、３３０Ｗ−ｊから１組のアドレスＢＡｊとＷＡｊが読み出され、それぞれ次読出しアドレスＲＡｊ、最終読み出しアドレスＥＡｊとしてレジスタ３１１−ｊ、３１２−ｊに設定される。
【００４５】
レジスタ３１１−１〜３１１−ｎには、デコーダ３３４の出力がリード・イネーブル信号として与えてあり、これらのレジスタ出力は、信号線Ｌ２５から供給される出力回線選択信号を制御信号とするセレクタ３３１に接続されている。従って、各読出しサイクルにおいて、上記出力回線選択信号で指定されたレジスタ３１１−ｊの内容が次読出しアドレスＲＡｊとして出力される。上記アドレスＲＡｊによって、共通バッファメモリ２２から、出力回線ＬＯｊに出力すべきデータブロックが読み出され、分離部２３を介して出力回線インタフェース２０−ｊに供給される。また、上記アドレスＲＡｊによって、次アドレス管理部３４から、上記出力回線ＬＯｊに出力すべき次のデータブロックを指すアドレスＮＡｊが読み出される。上記アドレスＮＡｊは、ＡＮＤ回路３１６を介してレジスタ３１１−１〜３１１−ｎに供給されている。
【００４６】
レジスタ３１１−１〜３１１−ｎと同様に、レジスタ３１２−１〜３１２−ｎにも、デコーダ３３４の出力がリード・イネーブル信号として与えてあり、これらのレジスタ出力は、出力回線選択信号を選択信号とするセレクタ３３２に接続されている。これによって、各読出しサイクルで、上記出力回線選択信号で指定されたレジスタ３１２−ｊの内容がセレクタ３３２から最終読出しアドレスＥＡｊとして出力される。
【００４７】
比較器３１５の出力信号ＥＮ−０は、セレクタ３３１から出力される次読出しアドレスＲＡｊと、セレクタ３３２から出力される最終読出しアドレスＥＡｊとが一致した時、すなわち、各パケットの最終データブロックの読出しサイクルにおいてオン状態となり、前述したように、出力待機バッファ３３０Ｂ−ｊにあるパケット先頭アドレスＢＡｉがレジスタ３１１−ｊに移される。上記比較器３１５の出力信号ＥＮ−０がオフ状態となる読出しサイクル、すなわち、パケットの先頭データブロックまたは中間データブロックの読出しサイクルでは、ＡＮＤ回路３１６が開かれ、次アドレス管理部３４から読み出された次アドレスＮＡｊが上記レジスタ３１１−ｊに設定される。これによって、出力回線ＬＯ−ｊと対応した出力キューのデータブロックを次々と読み出すことが可能となる。
【００４８】
図８は、次アドレス管理部３４の１実施例を示す。
次アドレス管理部３４は、次アドレスＮＡ１〜ＮＡｍを記憶するためのレジスタ３４０−１〜３４０−ｍと、これらのレジスタからの出力アドレスを選択するセレクタ３４１と、入力キュー制御部３２から供給される最新アドレスＷＡｉをデコードし、上記最新アドレスＷＡｉと対応するレジスタ３４０−ｉに書込みイネーブル信号を与えるデコーダ３４４とからなる。
【００４９】
次アドレス管理部３４は、各書込みサイクルにおいて、入力キューにおける前データブロックの書込みアドレスＷＡｉと対応した記憶領域（レジスタ３４０−ｋ）に最新データブロックの書込みアドレスＷＡを記憶し、これによって、図３に示した入力キュー毎のリンクド・アドレスリストを形成する。読出しサイクルでは、セレクタ３４１が、出力キュー制御部３３から供給された読出しアドレスＲＡｊと対応したレジスタ３４０−ｐを選択し、上記レジスタに３４０−ｐに記憶されたアドレスを次アドレスＮＡｊとして出力キュー制御部３３に戻す。上記次アドレスＮＡｊは、出力キュー制御部３３において、次回の読出しサイクルで使う新たな次読出しアドレスＲＡｊとして、レジスタ３１１−ｊに記憶される。
【００５０】
図９は、本発明の第２の実施例として、同一受信パケットを複数の出力回線に転送する同報機能（またはマルチキャスト機能）を備えたパケットスイッチのバッファ制御部３０Ｂの構成を示す。
ここに示したバッファ制御部３０Ｂは、図２に示した第１実施例のバッファ制御部３０と同様、ヘッダ解析部３１、入力キュー制御部３２、出力キュー制御部３３、次アドレス管理部３４、空きアドレスＦＩＦＯ３５を有し、新たな要素として、読出しアドレス解放制御部３６を備えている。
【００５１】
各入力回線インタフェース１０−ｉ（ｉ＝１〜ｎ）では、入力回線ＬＩ−ｉからの受信パケットが複数の出力回線に転送すべき同報（マルチキャスト）パケットの場合、受信パケットを分割して得られた各データブロックに複数の出力回線を指定した内部ヘッダを付加する。複数の出力回線を同時に指定するためには、例えば、内部ヘッダの出力回線番号フィールドを出力回線ＬＯ−１〜ＬＯ−ｎと対応するｎビットで構成し、パケット転送先となる出力回線をビット“１”で表すビットパターン形式を採用すればよい。
【００５２】
ヘッダ解析部３１は、多重化部２１から信号線Ｌ２１に出力された各データブロックの内部ヘッダを解析し、入力回線番号ＩＮ−ｉ、出力回線番号ＯＵＴ−ｊ、先頭表示フラグ信号ＦＰ、最終表示フラグ信号ＥＰと、受信パケットの転送先出力回線数ＮＴＲを発生する。上記出力回線番号ＯＵＴ−ｊとしては、上述した内部ヘッダの出力回線番号フィールドが示すビットパターンを出力する。この場合、転送先出力回線数ＮＴＲは、上記出力回線番号フィールドに含まれるビット“１”の個数を示す。
【００５３】
多重化部２１から信号線Ｌ２１に出力された各データブロックは、第１実施例と同様、空きアドレスＦＩＦＯ３５から取り出されたアドレスＷＡを書込みアドレスとして共通バッファメモリ２２に蓄積され、入力キュー制御部３２と次アドレス管理部３４によって、入力回線番号ＩＮ−ｉと対応した入力キューが形成される。
共通バッファメモリ２２に蓄積されたデータブロックが可変長パケットの最終データブロックの場合、最終表示フラグ信号ＥＰがオン状態となるため、入力キュー制御部３２から出力されたパケット先頭アドレスＢＡｉと、空きアドレスＦＩＦＯ３５から取り出された最新アドレスＷＡ（＝ＷＡｉ）が出力キュー制御部３３の出力待機バッファ３３０に設定される。
【００５４】
図７に示した出力キュー制御部３３において、デコーダ３３５に入力する出力回線番号ＯＵＴ−ｊが転送先出力回線をビット“１”で表すビットパターンとなっていた場合、上記デコーダ３３５から出力されるイネーブル信号群を上記ビットパターンに従ってオン状態にすることができる。上記デコーダ３３５から出力されるイネーブル信号ＥＮ−１〜ＥＮ−ｎは、最終表示フラグ信号ＥＰがオン状態となった時、ＡＮＤ回路３３６−１〜３３６−ｎを通って出力待機バッファ３３０−１（３３０Ｂ−１、３３０Ｗ−１）〜３３０−ｎ（３３０Ｂ−ｎ、３３０Ｗ−ｎ）に書込みイネーブル信号ＷＥＮとして与えられる。
【００５５】
最終データブロックがユニキャストパケットに属していた場合、該ユニキャストパケットの出力回線と対応した１つのイネーブル信号ＥＮ−ｊだけがオン状態となるため、アドレスＢＡｉ、ＷＡは、第１実施例と同様、上記イネーブル信号ＥＮ−ｊが与えられている特定の出力待機バッファ３３０Ｂ−ｊ、３３０Ｗ−ｊに設定される。もし、最終データブロックが同報パケットに属していた場合は、出力回線番号ＯＵＴ−ｊのビットパターンと対応した複数のイネーブル信号ＥＮ−ｊ（ｊ＝ｊ１、ｊ２、ｊ３、…）が同時にオン状態となるため、アドレスＢＡｉとＷＡは、オン状態のイネーブル信号が与えられている複数の出力待機バッファ３３０Ｂ−ｊ、３３０Ｗ−ｊ（ｊ＝ｊ１、ｊ２、ｊ３、…）に同時に設定されることになる。
【００５６】
出力待機バッファ３３０−１〜３３０−ｎに設定されたアドレスＢＡｉとＷＡは、第１実施例と同様に、次読出しアドレスレジスタ３１１−１〜３１１−ｎと最終読出しアドレスレジスタ３１２−１〜３１２−ｎに移され、次読出しアドレスレジスタ３１１−１〜３１１−ｎが示す読出しアドレスＲＡｊに従って、共通バッファメモリ２２からのデータブロックの読出しが行なわれる。同報パケットに属したデータブロックは、上述したように、リンクド・アドレスリストが複数の出力キューに登録されているため、同一のデータブロックが複数回繰り返して読み出されることになる。
【００５７】
ユニキャストパケットだけを対象とした第１の実施例では、図２に示したように、共通バッファメモリ２２からのデータブロックを読出した時点で、読出しアドレスＲＡｊを空きアドレスＦＩＦＯ３５に解放すればよかった。これに対して、本実施例のように同報パケットを扱う場合は、指定された複数の出力回線へのマルチキャストが完了したことを確認して、上記読出しアドレスＲＡｊを空きアドレスＦＩＦＯ３５に解放する必要がある。
【００５８】
読出しアドレス解放制御部３６は、データブロック毎にマルチキャストの完了を確認して読出しアドレスＲＡｊを解放するためのものである。
図１０は、読出しアドレス解放制御部３６の１実施例を示す。
ここに示した読出しアドレス解放制御部３６は、書込みアドレスＷＡと対応してデータブロックの読出し回数ＲＣを記憶するためのレジスタ（メモリ領域）３６０−１〜３６０−ｍと、上記レジスタ３６０−１〜３６０−ｍへの入力を選択するためのセレクタ３６１−１〜３６１−ｍと、上記レジスタ３６０−１〜３６０−ｍの値をデクリメント（−１）するための減算器３６２−１〜３６２−ｍと、書込みアドレスＷＡおよび読出しアドレスＲＡｊをデコードし、これらのアドレスと対応したイネーブル信号を発生するデコーダ３６３と、上記レジスタ３６０−１〜３６０−ｍのうち、読出しアドレスＲＡｊと対応したレジスタ３６０−ｑの設定値（読出し回数ＲＣ）を選択するセレクタ３６４と、比較器３６５およびゲート３６６からなっている。
【００５９】
各セレクタ３６１−ｋ（ｋ＝１〜ｍ）には、書込みサイクルを示すクロックＣＬＫ０が選択制御信号として与えてあり、書込みサイクルでは、ヘッダ解析部３１から出力された転送先出力回線数ＮＴＲが選択され、読出しサイクルでは、減算器３６２−ｋ（ｋ＝１〜ｍ）の出力が選択され、それぞれ読出し回数レジスタ３６０−ｋ（ｋ＝１〜ｍ）に入力される。読出し回数レジスタ３６０−１〜３６０−ｍには、デコーダ３６３の出力が書込みイネーブル信号として与えてあり、書込みサイクルでは、書込みアドレスＷＡと対応したレジスタ３６０−ｐに出力回線数ＮＣＰが設定される。読出しサイクルでは、読出しアドレスＲＡｊと対応したレジスタ３６０−ｑの値がセレクタ３６４で選択され、比較器３６５に入力される。この時、レジスタ３６０−ｑの値が減算器３６２−ｑに入力され、読出し回数ＲＣｑをデクリメント（−１演算）した値がレジスタ３６０−ｑに再設定される。
【００６０】
例えば、ユニキャストパケットに属したデータブロックの書込みサイクルでは、書込みアドレスＷＡと対応した読出し回数レジスタ３６０−ｐに、転送先出力回線数ＮＴＲの値（＝１）が読出し回数ＲＣｐとして設定され、上記データブロックが読出しサイクルでアドレスＲＡｊに従って読み出された時、ＲＣｐ＝１が比較器３６５に入力される。比較器３６５は、共通バッファメモリ２２から読み出されたデータブロックの読出し回数ＲＣｐの値が「１」になった時、ゲート３６６を開き、読出しアドレスＲＡｊを空きアドレスＦＩＦＯ３５に解放する。従って、ユニキャストパケットに属したデータブロックの書込みアドレス（読出しアドレスＲＡｊ）は、データブロックの読出しの都度、直ちに解放される。
【００６１】
同報（マルチキャスト）パケットに属したデータブロックの書込みサイクルでは、書込みアドレスＷＡと対応した読出し回数レジスタ３６０−ｐに、読出し回数ＲＣｐとして、「１」より大きい値をもったＮＴＲが設定される。従って、共通バッファ２２から上記データブロックが読み出されても、デクリメントされたＲＣｐ値が「１」に達しない限り、ゲート３６６は閉じたままとなり、読出し回数がＮＴＲで指定された回数（ＲＣｐ＝１）となった時点で、読出しアドレスＲＡｊの空きアドレスＦＩＦＯ３５へ解放される。
【００６２】
以上の実施例では、バッファ制御部３０が、入力回線番号毎に入力キューを形成し、可変長パケットの最後のデータブロックが到着した時点で、入力キューのリンクド・アドレスリストを出力キューに移すようにしたが、本発明において、各入力キューは可変長パケット毎に形成できればよいため、上記入力回線番号に代えて、各可変長パケットに固有の他の識別情報を使用してもよい。
実施例では、各データブロックの内部ヘッダに入力回線番号を設定し、ヘッダ解析部３１が上記内部ヘッダに基づいて入力回線番号ＩＮ−ｊを出力したが、入力回線番号ＩＮ−ｊは、入力カウンタ２４から出力される入力回線選択信号に基づいて生成するようにしてもよい。
【００６３】
また、上述した実施例では、各入力回線インタフェース１０−ｉ（ｉ＝１〜ｎ）で、受信パケット１００を固定長の複数のデータブロック１１０に分割し、各データブロックに内部ヘッダ１１０Ａを付して多重化部２１に出力し、内部ヘッダ付きのデータブロックを共通バッファメモリ２２にリード、ライトする構成となっているが、本発明の他の実施形態として、例えば、図１１に示すように、多重化部２１でデータブロック１１０と内部ヘッダ１１０Ａを分離し、内部ヘッダ１１０Ａはバッファ制御部３０のヘッダ解析部３１に供給し、共通バッファメモリ２２にはデータブロック１１０部分のみを入力するようにしてもよい。
上記構成によれば、共通バッファメモリ２２のメモリ容量を有効に利用でき、各出力回線インタフェース２０―ｉでデータブロックから内部ヘッダを除去する必要がなくなる。
【００６４】
本発明の更に他の実施形態として、各入力回線インタフェース１０−ｉが、固定長データブロック１１０を内部ヘッダを付すことなく多重化部２１に出力し、バッファ制御部３０のヘッダ解析部３１が、各可変長パケットの先頭データブロックに含まれるパケットヘッダを解析し、入力回線毎に出力回線番号と後続データブロック数を管理テーブル上で管理しておき、入力カウンタ２４から与えられる入力回線選択信号に応じて上記管理テーブルを参照し、前述したＩＮ−ｉ、ＦＰ、ＥＰ、ＯＵＴ−ｊ等の制御信号を生成するようにしてもよい。また、可変長パケット１００から固定長のデータブロック１１０への変換は、各入力回線インタフェース１０−ｉで行う代わりに、多重化部２１で行うようにしてもよい。
実施例では、複数の入出力回線に接続されるパケットスイッチについて説明したが、本発明のバッファ制御は、複数の入力回線から受信した可変長パケットを１つの出力回線に出力するスイッチ構造（多重化装置）にも適用可能である。
【００６５】
以上のように、本発明の実施例では、可変長パケット毎の入力キューを形成し、１つの可変長パケットの最後のデータブロックがバッファメモリに書き込まれた時点で、入力キューに登録されたリンクド・アドレスを出力キューに移すようにしている。従って、同一の出力回線に向かう複数の可変長パケットが並列的に入力された場合でも、出力キュー内で１つの可変長パケットに属したデータブロック列に他のパケットのデータブロックが混入するのを防止でき、出力キューから取り出したデータブロックを順次に出力回線に送出することによって、受信パケットを正しく宛先装置に転送することが可能となる。
【００６６】
また、実施例のように、出力キューを待機バッファとアドレステーブル（またはレジスタ）で構成し、出力待機中の可変長パケットの先頭データブロックと最終データブロックのアドレスを待機バッファに一時的に蓄積し、出力中の可変長パケットの次読出しアドレスと最終読出しアドレスを上記アドレステーブルで管理する方式とした場合、同一の出力回線に向かう多数の可変長パケットが受信された場合でも、各パケットを確実に転送処理できる。
【００６７】
また、第２実施例で示したように、同一可変長パケットのリンクド・アドレスを複数の出力キューに登録し、同一データブロックの読出し回数が指定値に達した時点で読出しアドレスを開放することによって、共通バッファメモリを有効に利用したマルチキャスト転送が可能となる。
【００６８】
【発明の効果】
以上の説明から明らかなように、本発明によれば、入力回線から受信した可変長パケットを固定長のデータブロックに分割し、固定長のブロック単位で共通バッファメモリに蓄積しておき、可変長パケットの最後のデータブロックが蓄積された時点で、共通バッファメモリ内に蓄積済みのデータブロック列を移動することなく、上記データブロック列を読み出すためのリンクド・アドレスリストのみを出力キューに移す構成となっているため、可変長パケットの高速スイッチングが可能となる。また、同一リンクド・アドレスリストを複数の出力キューに登録することによって、容易にマルチキャスト機能を実現できる。
【図面の簡単な説明】
【図１】本発明を適用したパケットスイッチの１実施例を示す図。
【図２】図１に示したパケットスイッチのバッファ制御部３０の詳細を示す図。
【図３】共通バッファメモリ２２に蓄積されるデータブロックと、次アドレスメモリ３４０および入力キュー・アドレステーブル３００の状態を説明するための図。
【図４】可変長パケットの最後のデータブロックが到着した場合の入力キュー・アドレステーブル３００と出力キュー・アドレステーブル３１０との関係を説明するための図。
【図５】出力キューが使用状態にある時に他の可変長パケットの最後のデータブロックが到着した場合の入力キュー・アドレステーブル３００と出力キュー・アドレステーブル３１０との関係を説明するための図。
【図６】図２に示した入力キュー制御部３２の１実施例を示す図。
【図７】図２に示した出力キュー制御部３３の１実施例を示す図。
【図８】図２に示した次アドレス管理部３４の１実施例を示す図。
【図９】マルチキャスト用バッファ制御部３０Ｂの１実施例を示す図。
【図１０】図９における読出しアドレス解放制御部３５の１実施例を示す図。
【図１１】本発明を適用したパケットスイッチの他の実施例を示す図。
【符号の説明】
１：パケットスイッチ、１０：入力回線インタフェース、
２０：出力回線インタフェース、２１：多重化部、２２：共通バッファメモリ、
２３：分離部、２４：入力カウンタ、２５：出力カウンタ、
３０、３０Ｂ：バッファ制御部、ＬＩ：入力回線、ＬＯ：出力回線、
３１： ヘッダ解析部、３２：入力キュー制御部、３３：出力キュー制御部、
３４：次アドレス管理部、３５：空きアドレスＦＩＦＯ、３６：読出しアドレス解放制御部、３００：入力キュー・アドレステーブル、
３０１（ＢＡ１〜ＢＡｎ）：パケット先頭アドレス、
３０２（ＷＡ１〜ＷＡｎ）：最新アドレス、
３１０：出力キュー・アドレステーブル、
３１１（ＲＡ１〜ＲＡｎ）：次読出しアドレス、
３１２（ＥＡ１〜ＥＡｎ）：最終読出しアドレス、
３１３（Ｆ１〜Ｆｎ）：キューフラグ。
【図１】
0003652245.tif 000002
【図２】
0003652245.tif 000003
【図３】
0003652245.tif 000004
【図４】
0003652245.tif 000005
【図５】
0003652245.tif 000006
【図６】
0003652245.tif 000007
【図７】
0003652245.tif 000008
【図８】
0003652245.tif 000009
【図９】
0003652245.tif 000010
【図１０】
0003652245.tif 000011
【図１１】
0003652245.tif 000012