(57)【特許請求の範囲】
【請求項１】
それぞれが入力されたパケットに対して処理をして後段に出力するパイプライン構成された複数のパケットデータ処理部から構成されるパケットデータ処理群を有するパケットデータ処理装置において、
入力されたパケットにデータを付加する前記パケットデータ処理群中の第１パケットデータ処理部に設けられたデータ付加部と、
入力されたパケットにデータを付加するとき、当該付加対象パケットの前パケットとの間隔を少なくとも付加データ長分確保するために、前記第１パケットデータ処理部の前段のパケットデータ処理部にパケットの出力の停止を指示し、前パケットとの間隔が確保されると、前記第１パケットデータ処理部の前段のパケットデータ処理部にパケットの出力を再開するよう指示する制御部と、
を具備したことを特徴とするパケットデータ処理装置。
【請求項２】
前記第１パケットデータ処理部の前段の前記パケットデータ処理群中の第２パケットデータ処理部は、入力されたパケットに基づいてデータを付加する必要が有るか否かを判断する判断部と、前記判断部がデータを付加する必要が有ると判断したとき、入力されたパケットに基づいて、付加データ、付加データ長及び付加位置を算出して、後段に出力する付加情報生成部とを更に具備し、前記データ付加部は、前記付加データ、付加データ長及び付加位置に基づいて、データを付加することを特徴とする請求項１記載のパケットデータ処理装置。
【請求項３】
前記データ付加部は、プロセッサ、前記パケットを保持する第１ビット幅の第１段数の第１シフトレジスタ、前記付加データ、前記付加データ長及び前記付加位置を保持する第２ビット幅の第２段数の第２シフトレジスタを有し、前記付加データ長に基づき前記付加位置よりも後ろに位置するパケットデータを格納する第１シフトレジスタのシフト動作の停止及び前記第１シフトレジスタに前記付加データの書き込みを前記プロセッサが実施することによりデータ付加を行うことを特徴とする請求項２記載のパケットデータ処理装置。
【請求項４】
それぞれが入力されたパケットに対して処理をして後段に出力するパイプライン構成された複数のパケットデータ処理部から構成されるパケットデータ処理群を有するパケットデータ処理装置において、
前記パケットデータ処理群中の第１パケットデータ処理部に設けられた所定データバス幅の第１メモリと、
入力されたパケットを前記第１メモリに書き込み、パケットの先頭からデータを前記第１メモリより読み込み前記データバス幅単位に順次出力し、前記付加位置のデータが含まれる前記データバス幅単位のデータを前記データ付加長及び前記付加位置に基づいて繰り返して出力する前記第１パケットデータ処理部に設けられたメモリ制御部と、
前記データバス幅、前記付加位置及び前記付加データ長に基づき、前記第１メモリからデータバス幅単位に出力されるパケットの先頭データから付加位置までのデータについては、そのまま出力し、前記付加位置から付加データ長よりも後のデータについては、削除するべきデータ長だけ後のデータを選択して出力する前記第１パケットデータ処理部に設けられたリオーダ部と、
前記リオーダ部より出力されるパケットの付加位置にあるデータを付加データで上書きする前記第１パケットデータ処理部に設けられたライト部と、
前記第１メモリの空きが足りなくなったとき、前記第１パケットデータ処理部の前段側にパケットの出力の停止を指示し、前記第１メモリの空きが確保されたとき、前記第１パケットデータ処理部の前段側にパケットの出力を再開するよう指示する制御部と、
を具備したことを特徴とするパケットデータ処理装置。
【請求項５】
パケットデータを蓄積し、パケットの先頭から順次出力する第２メモリを前記パケットデータ処理群の初段のパケットデータ処理部の前段に更に設け、前記制御部は、前記第２メモリにパケットの出力の停止及び再開を指示することを特徴とする請求項４記載のパケットデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力されたパケットデータを処理するパイプライン構成されたパケットデータ処理装置に関する。
【０００２】
【従来の技術】
端末間でパケット通信を行うにあたって、現在最も一般的に使用されているのは、ＩＰ(Internet Protocol)ネットワークである。このＩＰネットワークにおいて、ネットワーク間の中継を行うネットワークノードでは、中継装置のために、パケット内のヘッダ書き換え処理や装置内に具備する宛て先テーブルを検索しルーティングを行うといったパケット処理を行っている。近年のインターネットの高速化に伴い、パケットの中継を行うネットワークノードでは、パケット処理を専用のハードウェアで行うことによってパケット処理の高速化を図っている。従来、パケットの中継を行うネットワークノードのパケット処理部がパケットを処理するにあたって、ストアアンドフォワードによって処理を行う方式がある。
【０００３】
図２２は、ストアアンドフォワード方式の従来構成を示す図である。この構成では、一般的なプロセッサ又は専用のハードウェアにより構成されたパケット処理部２とメモリ４がバス６によって接続されており、パケット処理部２がメモリ４に格納されたパケットの必要なデータに対して処理を行うことによってパケット中継に必要な処理を行う。従来のストアアンドフォワードによるパケット処理では、パケット処理部２は、予め用意されたソフトウェアの命令に従って、メモリ４に格納したパケットに対して処理を行う。そのため、このパケット処理は、予め用意するソフトウェアの命令を書き換えることで、パケットに対して施したい処理を、後から容易に変更することが可能である。そのため、プロトコルの改訂やネットワークとして提供するサービス機能向上のために処理内容を後から変更可能である。
【０００４】
しかし、この処理では、メモリ４にパケットデータを格納しているため、パケットデータを格納しているメモリ４への読み込み・書き込み動作が必要となる。パケット処理部２は、読み込むメモリのアドレスをメモリ４に与えてから、メモリ４からデータを読み込み、又はパケット処理部２は、パケット処理部２が書き込むメモリのアドレスをメモリ４に与えてから、メモリ４へデータを書き込むという処理を行う。このとき、プロセッサがアドレスをメモリ４に与えてから、パケット処理部２がデータをメモリ４から読み込み・書き込みを行う時間は、プロセッサのサイクルタイムと比較するとかなり大きい。そのため、メモリ４への読み込み・書き込み処理のオーバヘッドが問題となり、パケット処理を高速に行うことができない。
【０００５】
そこで、近年、パケット処理を専用のハードウェア回路で高速に実行する方法が考案されている。専用のハードウェア回路では、パケット処理を高速なハードウェアのクロックで行うことができるので、パケットを高速に処理することができる。しかし、機能向上のための機能の変更を容易に行うことはできず、その都度新たなハードウェアを開発する必要があるという問題点がある。ところで、ネットワークノードがＩＰ及び下位層のプロトコルを処理するにあたっては、各プロトコルヘッダ内にある情報を元に処理を行い、ＩＰのデータ部にある情報を必要とすることは殆どない。この処理対象が各プロトコルヘッダだけであるといった局所性に注目することによって、高速処理を行うハードウェアが考えられる。
【０００６】
図２３は処理の局所性に注目したパケットデータ処理プロセッサを示す図である。パケットデータ処理プロセッサ１０は、汎用レジスタ１２、演算器１４及びシフトレジスタ１６，１８を有する。パケットデータ処理プロセッサ１０では、パケットデータと、一時的に保存しておきたい演算の結果などパケットと同期した情報を、それぞれクロック毎に次段へシフトするシフトレジスタ１６，１８で構成されるパイプラインに格納する。パケットデータ処理プロセッサ１０には、パケットに対して行うべき処理を予めソフトウェアで記述しておく。パケットデータ処理プロセッサ１０は、パケットの先頭が入力されると起動され、予め用意されたソフトウェアの記述に従って処理を行う。クロックによって各パイプラインを構成しているレジスタ１６，１８内のデータはシフトを行っていき、パケットデータ処理プロセッサ１０は、決められたクロック数の間処理を行う。処理を終えた後、次のパケットが入力されると、同じようにそのパケットに対して処理を行う。
【０００７】
図２４は、パケット処理プロセッサを複数個並べたハードウェア構成を示す図である。図２４に示すように、このハードウェア構成では、パケット処理プロセッサ３０＃ｉ（ｉ＝１〜ｎ）が複数個並べられている。図２４のように並べた各パケットデータ処理プロセッサは各処理を行い、全体としてネットワークノードが必要とするパケット処理を完了する。この様な処理系でパケットを処理することは、処理がＩＰ層までしか及ばない等、パケット処理に局所性があるときには、パイプライン構成をしたレジスタにより高速に処理でき、且つ、ソフトウェアの変更によって柔軟に処理を変更することができる。
【０００８】
【発明が解決しようとする課題】
一方、ネットワークノードにおける処理の多機能化の必要性が高まっており、そのような処理の中にはパケットに対して新たなヘッダの付加や、必要のないヘッダの削除を行わなければならないものもある。このような処理が必要となるものに、トンネリング処理がある。トンネリング処理とは、例えば、２つのプライベートなネットワーク間の通信をインターネットなどの共有ネットワークを経由して使用する時に使用される。
【０００９】
図２５は、２つのプライベートなネットワーク間を共有ネットワークにより接続したネットワーク構成図である。図２５において、プライベートネットワーク４０＃Ａからプライベートネットワーク４０＃Ｂへ通信を行うときを考える。プライベートネットワーク４０＃Ａから送信されたパケットは、プライベートネットワーク４０＃Ａと共有ネットワーク４２をつなぐネットワークノード４４＃Ａによって共有ネットワーク４２用のヘッダを付加され（カプセル処理）、インターネットなどの共有ネットワーク４２に送信される。そして、そのパケットを受信するもう１つのプライベートネットワーク４０＃Ｂと共有ネットワーク４２を接続するネットワークノード４４＃Ｂは、プライベートネットワーク４０＃Ａから送られたパケットを受信すると、カプセル処理の時に付加されたヘッダを削除して（デカプセル処理）、カプセル処理される前のパケットに戻し、これをもう１つのプライベートネットワーク４０＃Ｂに送信するといった動作を行う。そのため、カプセル処理・デカプセル処理を行う必要のあるネットワークノード４４＃Ａ，４４＃Ｂでは、上述のようなヘッダの付加・削除操作を行う必要がある。
【００１０】
パケット処理の局所性に注目して処理を行うパケットデータ処理方式では、レジスタアクセスによる処理なので、パケット処理を高速に行うことができる。ヘッダの付加・削除もヘッダに注目して行われる処理なので、この処理方式を用いることで高速に処理を行うことができる。
【００１１】
図２６は、データ付加・削除前のパケットデータ処理プロセッサの状態を示す図である。例えば、パケットが図に示す状態でシフトレジスタ１８に格納されているときを考える。図２６中ハッチングされている部分がパケットを示し、パケットヘッダがＰ２に格納されている。このとき、Ｐ０にあるデータを削除したい場合には、Ｐ２，Ｐ１にあるデータをそれぞれＰ１，Ｐ０に上書すれば良い。また、Ｐ０とＰ１の間にデータを付加したいときは、Ｐ１，Ｐ２にあるデータをそれぞれＰ２，Ｐ３に上書し、Ｐ１に付加したいデータを書き込めばよい。しかし、データの付加処理では、処理後のパケットの全長は、処理前のパケットに比べて長くなるために問題がある。
【００１２】
図２７は、パケットが密接しているときのシフトレジスタの状態を示す図である。このパケットデータ処理方式では、連続してパケットが入力されるときは、図２７に示すようにパケットが、次々に入力されていて、シフトレジスタ１８に隙間無く存在している。この状態でパケットの付加を行うと、該パケットの前に処理されたパケットの上にデータを書き込んでしまい、前に処理されたパケットのデータを壊してしまう。例えば、Ｐ３に前に処理されたパケットのデータが格納されているとき、Ｐ２にあるデータを後にあるパケットのデータにより壊してしまう。これを避けるためには、パケットがパケットデータ処理群に入力されるときに、パケット間で一定の間隔を空けるように制御すれば、前に処理されたパケットにデータを上書することはなくなり、データの付加を行うことができる。しかし、全てのパケット間で一定の間隔を空けることは、データの付加をする必要のないパケットに対しても間隔を空けることになり、それだれ処理のスループットが小さくなることがある。
【００１３】
以上のように、パケットの削除を行うといったパケットの全長が短くなるような処理は、従来のパケットデータ処理プロセッサで問題なく扱うことができる。しかし、パケットの付加を行うといったパケットの全長が元の全長よりも長くなる処理を従来のパケットデータ処理プロセッサで行うと処理効率が落ちてしまうことが問題であった。
【００１４】
本発明は、上記を鑑みてなされたものであり、処理効率が落ちることなくパケットデータの付加をすることのできるパケットデータ処理装置を提供することを目的とする。
【００１５】
【課題を解決するための手段】
図１は本発明の原理図である。図１に示すように、バケットデータ処理装置は、それぞれが入力されたパケットに対して処理をして後段に出力するパイプライン構成された複数のパケットデータ処理部５０＃ｉ（ｉ＝１，２，…）から構成されるパケットデータ処理群５２を有する。パケットデータ処理群５２中の第１パケットデータ処理部５０＃Ａは、入力されたパケットにデータを付加するデータ付加部５４を有する。パケットデータ処理装置は、データ付加部５４がデータ付加処理をしている間は、第１パケットデータ処理部５０＃Ａの前段にパケットの出力の停止を指示し、データ付加部５４がデータ付加処理終了後、第１パケットデータ処理部５０＃Ａの前段にパケットの出力を再開するよう指示する制御部５６を更に具備する。
【００１６】
パケットがパケットデータ処理装置に入力されると、各パケットデータ処理部５０＃ｉ（ｉ＝１，２，…）は、パケットに対して所定の処理を行う。パケットデータ処理群５２又はパケットデータ処理群５２とは別に設けられた制御部５６は、パケットに対してデータ付加の必要があるとき、当該データ付加対象のパケットと前パケットの間隔を少なくともデータ付加長分確保するべく、第１パケットデータ処理部５０＃Ａの前段のパケットデータ処理部５０＃ｉ（ｉ＝１，２，…，Ｂ）にパケットデータの出力の停止を指示する。データ付加部５４は、データ付加長分確保されると、パケットにデータを付加する。このようにパケットデータ処理群５２がパイプライン処理によりパケットに対して処理を行い、パケットにデータを付加する必要があるときは、パケットデータの後段への出力を一時的に停止するのみなので、処理効率が落ちることなくパケットデータの付加をすることができる。
【００１７】
【発明の実施の形態】
第１実施形態
図２は、本発明の第１実施形態によるパケットデータ処理装置の構成図である。図２に示すパケットデータ処理装置は、例えば、図２５に示したネットワークのプライベートネットワーク４０＃Ａ，４０＃Ｂと、インターネット等の共有ネットワーク４２との間を接続するネットワークノード４４＃Ａ，４４＃Ｂに適用されたものである。図２に示すように、パケットデータ処理装置６０は、複数の受信インタフェースカード６２＃ｉ（ｉ＝１〜ｎ）、スイッチファブリック６４及び複数の送信インタフェースカード６６＃ｉ（ｉ＝１〜ｎ）を有する。受信インタフェースカード６２＃ｉ（ｉ＝１〜ｎ）は、次の機能を有する。▲１▼パケットを該当するプライベートネットワーク、例えば、ＬＡＮや共有ネットワークからパケットを受信する。▲２▼受信したパケットについて、パケットヘッダよりカプセル処理／デカプセル処理をする必要があるか否かを判断する。▲３▼カプセル処理／デカプセル処理をする必要があるとき、カプセル処理／デカプセル処理をする。尚、カプセル処理ではデータ付加処理、デカプセル処理ではデータ削除処理が行われる。▲４▼カプセル処理等をしたパケットをスイッチファブリック６４に出力する。
【００１８】
受信インタフェースカード６２＃ｉは、受信インタフェース部７０＃ｉ、前段処理部７２＃ｉ及びパケットデータ処理プロセッサ群７４＃ｉを有する。受信インタフェース部７０＃ｉは、物理インタフェースに従ってパケットを受信する。前段処理部７２＃ｉは、パケット処理プロセッサ群７４＃ｉがパケットにデータの付加／削除を行うための、パケットヘッダの検出等の前処理を行う。パケット処理プロセッサ群７４＃ｉは、複数のパケットデータ処理プロセッサがパイプライン構成されて、パケットに対する処理を行うものであり、例えば、次の機能を有する。▲１▼パケットヘッダより、パケットに対してデータの付加・削除をする必要が有るか否かを判断する。▲２▼パケットに対してデータを付加する必要が有ると判断した場合は、その付加すべきデータ、データ長、パケット上で付加すべき位置を求める。▲３▼パケットに対してデータを削除する必要が有ると判断した場合は、その削除すべきデータ長、パケット上で削除すべき位置を求める。▲４▼▲２▼，▲３▼で求められたデータ長等に基づいてデータの付加・削除をする。▲５▼データを付加する場合、付加対象パケットと前パケットとの間隔を少なくとも付加データ長分確保するために、データ付加処理を行うパケットデータ処理プロセッサの前段のパケット処理プロセッサがパケットデータの出力停止及び動作中のパケットデータ処理プロセッサの動作を停止する。▲６▼前パケットと付加データ長分の間隔が確保されたとき、前段のパケット処理プロセッサがパケットデータの出力再開及び動作を停止していたパケットデータプロセッサの動作再開をする。▲７▼データ付加・削除による変更後のパケット長をパケットヘッダに設定する。
【００１９】
図３は、図２中のパケットデータ処理プロセッサ群７４＃ｉの構成図である。図３に示すように、パケット処理プロセッサ群７４＃ｉは、パケット以外の中間データを転送するバス８８、パケットを転送するバス８９、バス８８，８９によりパイプライン接続された複数のパケットデータ処理プロセッサ９０＃ｉ（ｉ＝１〜ｎ）及びバックプレッシャ信号線９２により構成される。バス８８，８９は、中間データ及びパケットを転送するデータバスである。パケットデータ処理プロセッサ９０＃ｉ（ｉ＝１〜ｎ）は、バス８８，８９より入力された中間データ及びパケットデータを自身が有するシフトレジスタに保持して、パケットに対する所定の処理を行うものである。その段数は全体のパケット処理の内容に応じて任意に設定される。
【００２０】
パケットデータ処理プロセッサ９０＃Ａは、前段のパケットデータ処理プロセッサ群による指示に従ってデータの付加・削除を行う。具体的には、次の処理を行う。▲１▼前段のパケットデータ処理プロセッサ群の指示によって、パケットにデータの付加・削除が必要かどうかを判断する。▲２▼パケットにデータの付加が必要なときは、前段のパケット処理プロセッサ群の指示に基づいて、付加データ位置と付加データを特定し、データの付加処理を行う。▲３▼付加データ長に基づいて、付加データ長に相当するクロック数の時間、バックプレッシャ信号線９２をアサートして、当該パケットデータ処理プロセッサよりも前段のパケットデータ処理プロセッサ群の動作を停止させる。▲４▼データの削除が必要なときは、前段のパケット処理プロセッサ群の指示に基づいて、削除データ位置と削除データ長を特定して、データの削除処理を行う。尚、▲３▼，▲４▼のパケットデータ処理プロセッサ９０＃Ａの前段のパケットデータプロセッサ９０＃ｉ（ｉ＝１，２，Ｂ，…）に対する動作停止・再開の制御は、パケットデータ処理プロセッサ群とは独立した制御部により行うようにしてもよい。また、バックプレッシャ信号線９２をアサートし、パケットデータ処理プロセッサ群の動作を停止している期間、その前段（図２の構成では前段処理部７２＃ｉ）は、バックプレッシャに従い、データ転送を一時停止する。
【００２１】
図４は、図３中のパケットデータ処理プロセッサ９０＃Ａの構成図である。図４に示すように、パケットデータ処理プロセッサ９０＃Ａは、汎用レジスタ９３＃Ａ、演算器９４＃Ａ、中間データレジスタ９６＃Ａ及びパケットアクセスレジスタ９８＃Ａを有する。汎用レジスタ９３＃Ａは、例えば、８個の３２ビット長のレジスタｒ０〜ｒ７である。演算器９４＃Ａは、プログラムに記載された命令コードに従って演算を行うプロセッサであり、データ付加する場合は、付加データ長に応じた期間、バックプレッシャ信号線９２をアサートする。中間データレジスタ９６＃Ａは、パケットデータに同期して、該パケットデータに関する処理結果を保持し伝達するための、例えば、１６段の３２ビットのシフトレジスタレジスタｅ０〜ｅ１５である。中間データレジスタ９６＃Ａに保持されるデータとしては、例えば、パケットの先頭を示すデータ、データの付加・削除の必要の有無を示すフラグビット、付加データ、付加データ位置、付加データ長、削除データ位置、削除データ長である。パケットアクセスレジスタ９８＃Ａは、パケットデータを直接取り込むための、例えば、１６段の３２ビットのシフトレジスタレジスタｐ０〜ｐ１５である。
【００２２】
パケットデータ処理プロセッサ９０＃Ａよりも前段のパケットデータ処理プロセッサ９０＃Ｂは、次の処理を行う。▲１▼パケットヘッダよりパケットに対してデータを付加・削除する処理を行う必要が有るか否かを判断する。▲２▼パケットに対してデータを付加する必要が有ると判断した場合は、その付加すべきデータ、データ長、パケット上で付加すべき位置を求める。▲３▼パケットに対してデータを削除すると判断した場合は、その削除すべきデータ長、パケット上で削除すべき位置を求める。▲４▼▲１▼〜▲３▼により得られた中間データをデータバス上に出力する。▲５▼バックプレッシャ信号線９２がアサートされると、パケットデータ及び中間データのシフト動作の停止及びパケット処理中であれば処理を停止する。▲６▼バックプレッシャ信号線９２がネゲートされると、パケットデータ及び中間データのシフト動作の再開及び停止していた処理の再開をする。
【００２３】
図５は、図３中のパケットデータ処理プロセッサ９０＃Ｂの構成図である。パケットデータ処理プロセッサ９０＃Ｂは、バックプレッシャ信号線９２がアサートされると、例えば、バックプレッシャ信号に基づいて、システムクロックを停止することにより、演算器９４＃Ｂ、中間データレジスタ９６＃Ｂ及びパケットアクセスレジスタ９８＃Ｂの動作を停止する。汎用レジスタ９３＃Ｂ、演算器９４＃Ｂ、中間データレジスタ９６＃Ｂ及びパケットアクセスレジスタ９８＃Ｂは、図４中のものと実質的に同一である。パケットデータ処理プロセッサ９０＃Ａの前段のパケット処理プロセッサ９０＃ｉ（ｉ＝１，２，…）の構成は、パケットデータ処理プロセッサ９０＃Ｂと実質的に同一である。また、パケットデータ処理プロセッサ９０＃Ａの後段のパケット処理プロセッサ９０＃Ｃの構成は、バックプレッシャ信号線９２に従って動作を停止する必要がない点を除きパケットデータ処理プロセッサ９０＃Ｂと実質的に同一であり、例えば、中間データに従って、データ付加・削除が行われたときは、パケットヘッダ中のパケット長情報を更新する。
【００２４】
図２中のスイッチファブリック６４は、受信インタフェースカード６２＃ｉ（ｉ＝１〜ｎ）よりパケットを入力して、パケットのヘッダに設定されているＩＰアドレス又はＭＡＣアドレスに従って、ルーティングテーブルを参照して該当する送信インタフェースカード６６＃ｋ（ｋ＝１〜ｎ）にルーティングする。但し、ルーティングテーブル参照処理をパケット処理プロセッサ群７４＃ｉにて行い、スイッチファブック６４はこの処理結果に従い決められた送信インタフェースカード６６＃ｋ（ｋ＝１〜ｎ）にルーティングする実装でも良い。送信インタフェースカード６６＃ｉは、送信インタフェース部８０＃ｉを有する。送信インタフェース部８０＃ｉは、スイッチファブリック６４よりパケットを入力して、伝送路の物理インタフェースに従ってパケットを送信する。以下、図２のパケットデータ処理装置５０の動作説明をする。
【００２５】
（１）  受信インタフェースカード６２＃ｉの動作
各受信インタフェースカード６２＃ｉ中の受信インタフェース部７０＃ｉは、伝送路より所定の物理インタフェースに従ってパケットデータを受信して、前段処理部７２＃ｉにパケットデータを出力する。前段処理部７２＃ｉは、パケットデータの３２ビットパラレルデータにシリアル／パラレル変換して、パケットアクセスレジスタ９６＃１に接続されるデータバスに出力する。パケットヘッダを検出してヘッダを示すフラグを中間データレジスタ９６＃１に接続されるデータバスにパケットに同期して出力する。パケットデータ処理プロセッサ群７４＃ｉ中の各パケットデータ処理プロセッサ９０＃ｊ（ｊ＝１，２，…）は、パケットがパケットアクセスレジスタ９８＃ｊに格納されると、中間データレジスタ９６＃ｊに格納された中間データに従ってパケットに対してそれぞれの処理を行う。また、パケット処理プロセッサ群７４＃ｉからバックプレッシャ信号によりバックプレッシャを通知されている期間はデータ出力を停止する。
【００２６】
（ａ）  データ付加・削除の判断
パケットデータ処理プロセッサ９０＃Ｂは、パケットに対してデータを付加・削除する処理を行うか否かをパケットのヘッダより判断する。パケットに対してデータを付加すると判断した場合は、その付加すべきデータ、データ長、パケット上で付加すべき位置を求める。パケットに対してデータを削除すると判断した場合は、その削除すべきデータ長、パケット上で削除すべき位置を求める。付加／削除を行うか否かを示すフラグビット、データ付加する場合は、付加するデータ、付加するデータ長、付加するデータのパケット上での位置、削除する場合は、削除するデータ長、削除するデータのパケット上での位置をパケットに同期して中間データレジスタ９６＃Ｂに書き込む。パケットデータ及び中間データは、クロックに同期して、パケット処理プロセッサ群７４＃ｉ中のパケットアクセスレジスタ、中間データレジスタ及びデータバスにより転送される。
【００２７】
（ｂ）  パケットデータ処理プロセッサ９０＃Ａの動作
パケットデータ処理プロセッサ９０＃Ａは、パケットがパケットアクセスレジスタ９８＃Ａに入力されると起動される。パケットがパケットアクセスレジスタ９８＃Ａに入力されると、パケットに同期して中間データレジスタ９６＃Ａに入力された前段のパケットデータ処理プロセッサの指示によって、パケットにデータの付加・削除が必要かどうかをフラグビットにより判断する。フラグビットより付加が必要である場合には、付加するデータ、付加データ長、パケット上での付加位置を中間データレジスタ９６＃Ａより得る。また、削除が必要である場合には、削除データ長、パケット上での削除位置を中間データレジスタ９６＃Ａより得る。ここでは、パケットの先頭から３２ビット目に６４ビットのデータを付加するように指示されていたとする。
【００２８】
（ｂ−１）  データの付加
図６は、データ付加の判断後のパケットデータ処理プロセッサ９０＃Ａを示す図である。パケットアクセスレジスタ９８＃ＡのレジスタＰ３にデータ付加すべきパケットの先頭データが格納されているとする。また、このパケットの前パケットの最終データがレジスタＰ４に格納されているとする。パケットデータ処理プロセッサ９０＃Ａは、自分より前段のパケットデータ処理プロセッサに対して、パケットアクセスレジスタのシフトを行わないように、付加データ長に相当するクロック時間、バックプレッシャ信号線９２をアサートすると共にデータ付加対象パケットが格納されているパケットアクセスレジスタ９８＃Ａのレジスタのシフト動作を停止する。データ付加対象パケットの前パケットが格納されているパケットアクセスレジスタ９８＃Ａのレジスタについてはシフト動作を行う。ここでは、パケットアクセスレジスタ９８＃ＡのレジスタＰ３にデータ付加対象パケットの先頭が格納されているので、レジスタＰ３−Ｐ０のシフト動作が停止される。一方、レジスタＰ４〜Ｐ１５のシフト動作は継続する。
【００２９】
一方、パケットデータ処理プロセッサ９０＃Ａよりも前段のパケットデータ処理プロセッサ９０＃ｉ（ｉ＝１，２，Ｂ，…）は、バックプレッシャ信号線９２がアサートされると、演算部、パケットアクセスレジスタ及び中間データレジスタの動作を停止するべく、例えば、システムクロックをネゲートする。ここでは、付加データの大きさが６４ビットであること及びパケットアクセスレジスタ９８＃Ａが３２ビットであることから、データ付加対象パケット及び後続パケットデータを６４÷３２＝２クロックの間データ転送を停止し、それよりも前にあるパケットデータはデータ転送を継続しなければならない。そのため、レジスタＰ３よりも後にあるパケットデータの転送を２クロック停止し、レジスタＰ４のデータよりも前のパケットデータの転送を継続して行う。
【００３０】
図７は、２クロック後のパケットデータ処理プロセッサ９０＃Ａを示す図である。図７に示すように、２クロック後には、データを付加すべき位置であるパケット先頭から３２ビット目のレジスタＰ４，Ｐ３に空きが確保される。そして、２クロック停止させなければいけないと判断したパケットデータ処理プロセッサ９０＃Ａは、２クロック経過するとパケットのシフトを再開させて良いので、パケットアクセスレジスタ９８＃Ａのシフト動作を再開すると共に、バックプレッシャ信号線９２をネゲートしてパケットデータ処理プロセッサ９０＃Ａより前にあるパケットデータ処理プロセッサにシフトの再開するよう指示する。バックプレッシャ信号線９２がネゲートされると、パケットデータ処理プロセッサ９０＃Ａの前段のパケットデータ処理プロセッサがシフト動作を再開する。命令を中断していたパケットデータ処理プロセッサは、中断していた命令を再開する。パケットデータ処理プロセッサ９０＃Ａは、パケットアクセスレジスタ９８＃Ａに格納されている、パケット先頭データからデータを付加するべき位置の直前のデータまで付加データ長だけ移動する。その後、中間データレジスタ９６＃Ａに格納されている付加するデータをパケットアクセスレジスタ９８＃Ａの付加するべき位置のレジスタに格納する。そして、パケットに同期する中間データレジスタ９６＃Ａのデータも必要に応じて移動する。
【００３１】
図８は、データ移動後のパケットデータ処理プロセッサ９０＃Ａの状態を示す図である。ここでは、パケット先頭から３２ビット目に付加するので、３２ビット目よりも前にある３２ビットのデータが格納されているレジスタＰ３のデータを６４ビット移動する。即ち、レジスタＰ３のデータ手をレジスタＰ５に移動する。その後、６４ビットの空いた場所、レジスタＰ３，Ｐ４に中間データレジスタ９６＃Ａに格納されている付加データを付加する。付加されたパケットはパケットアクセスレジスタ９８＃Ａのシフト動作によって後段のパケットデータ処理プロセッサ群に転送される。
【００３２】
（ｂ−２）  データ削除
フラグビットより削除が必要である場合には、削除データ長、パケット上での削除位置を中間データレジスタ９６＃Ａより得る。削除対象のパケットについて、パケットアクセスレジスタ９８＃Ａに格納されている削除位置よりも前のデータを削除データ長後ろに移動する。例えば、パケット上での削除位置がパケット先頭から３２ビット目、削除データ長が６４ビット、パケット先頭がレジスタＰ３に格納されているとき、レジスタＰ３に格納されている３２ビットのデータを６４ビット移動、即ち、レジスタＰ１に移動する。このとき、パケットに同期する中間データレジスタ９６＃Ａのデータも必要に応じて移動する。削除されたパケットはパケットアクセスレジスタ９８＃Ａのシフト動作によって後段のパケットデータ処理プロセッサ群に転送される。
【００３３】
（ｃ）  パケットデータ処理プロセッサ９０＃Ａの後段のパケットデータ処理プロセッサ群の動作
後段のパケットデータ処理プロセッサ群は、バス８８，８９よりパケットデータ及び中間データを受け取って、パケット処理、例えば、パケットデータ処理プロセッサ９０＃Ａによりデータ付加・削除されたとき、パケットのヘッダ長の更新処理を行って、最終段のパケットデータ処理プロセッサ９０＃Ｃよりスイッチファブリック６４にパケットを出力する。
【００３４】
（２）  スイッチファブリック６４の動作
スイッチファブリック６４は、受信インタフェースカード６２＃ｉ（ｉ＝１〜ｎ）からパケットを入力して、パケットのヘッダに設定されているＩＰアドレス又はＭＡＣアドレスに従って、ルーティングテーブルを参照して該当する送信インタフェースカード６６＃ｋ（ｋ＝１〜ｎ）にルーティングする。但し、ルーティングテーブル参照処理をパケット処理プロセッサ群７４＃ｉにして行い、スイッチファブリック６４はこの処理結果に従い決定された送信インタフェースカード６６＃ｋ（ｋ＝１〜ｎ）にルーティングする実装でも良い。
【００３５】
（３）  送信インタフェースカード６６＃ｉの動作
送信インタフェースカード６６＃ｉは、スイッチファブリック６４よりパケットを入力して、伝送路の物理インタフェースに従ってパケットを送信する。
【００３６】
以上のようにして、パケットデータ処理プロセッサ群がパケットにデータの付加・削除が必要かを判断し、付加・削除に必要なデータを生成する。パケットデータ処理プロセッサＡはかかるデータを受け取り、データの付加処理によってパケット間隔を空ける必要があるかどうかを判断し、必要であれば前段にあるパケットデータ処理プロセッサ群にパケットの入力を制限してもらうことによって、付加するデータの大きさから判断されたパケット間隔を空け、パケット処理のスループットを下げずに、データの付加処理を行うことができる。
【００３７】
第２実施形態
図９は、本発明の第２実施形態によるパケットデータ処理装置の構成図であり、図２中の構成要素と実質的に同一の構成要素には同一の符号を附している。図９に示すパケットデータ処理装置１００は、受信インタフェースカード１０４＃ｉ中のパケットデータ処理プロセッサ群１０４＃ｉが図２中のパケットデータ処理プロセッサ群７４＃ｉと異なる。パケットデータ処理プロセッサ群１０４＃ｉは、付加・削除データ長がパケットデータ処理プロセッサのパケットアクセスレジスタのビット幅の倍数でない場合にもデータの付加・削除を行うことができること、データ付加をするパケットデータ処理プロセッサにパケットデータ及び中間データを保持するバッファメモリを設け、データ付加のときに常にシフト動作を停止するのではなく、バッファがデータ付加により足りなくなったときのみシフト動作を停止するようにしたことが図２中のパケットデータ処理プロセッサ群７４＃ｉと異なる。
【００３８】
図１０は、図９中のパケットデータ処理プロセッサ群１０４＃ｉの構成図であり、図３中の構成要素と実質的に同一の構成要素には同一の符号を附している。バス１０８，１０９及びパケットデータ処理プロセッサ１１０＃ｉは、データ付加・削除機構部１１２の動作の特徴を明確にするため、バス１０８，１０９並びにパケットアクセスレジスタ及び中間データレジスタのビット幅が図３中のバス８８，８９及びパケットデータ処理プロセッサ９０＃ｉと変えた例としている。
【００３９】
図１１は、図１０中のパケットデータ処理プロセッサ１１０＃ｉの構成図であり、図５中の構成要素と実質的に同一の構成要素には同一の符号を附している。中間データレジスタ１２０＃ｉは、パケットデータに同期して、該パケットデータに関する処理結果を保持し伝達するための、例えば、４段の６４ビットのシフトレジスタレジスタｅ０〜ｅ３である。パケットアクセスレジスタ１２２＃ｉは、パケットデータを直接取り込むための、例えば、４段の１２８ビットのシフトレジスタレジスタｐ０〜ｐ３である。データ付加・削除機構部１１２は、図３中のパケットデータ処理プロセッサ９０＃Ａと同様にデータの付加・削除を行う。データ付加・削除機構部１１２は、例えば、専用ハードウェアにより構成する。
【００４０】
図１２は、図１０中のデータ付加・削除機構部１１２の構成図である。図１２に示すようにデータ付加・削除機構部１１２は、データ長チェック部１２０、伸縮バッファ１２２、リオーダ部１２４、書込データ抽出部１２６及びデータライト部１２８を有する。データ長チェック部１２０は、パケットデータ及び中間データより、データ付加・削除後のデータの全長を求め、許容されるパケットの最大長を超えないかをチェックする。超えている場合は、エラーを出力する。
【００４１】
伸縮バッファ１２２は、パケットデータ及び中間データを格納するパケットデータメモリ及び中間データメモリ、並びにこれらのメモリを制御するコントローラから構成されている。各メモリはＦＩＦＯ(First In First Out)バッファである。パケットデータメモリは、パケットアクセスレジスタ１２２＃ｉと同じデータビット幅、例えば、１２８ビット幅のメモリ領域から成るＦＩＦＯである。中間データバッファは、中間データレジスタ１２０＃ｉと同じデータビット幅、例えば、６４ビット幅のＦＩＦＯである。
【００４２】
コントローラは、次の機能を有する。▲１▼中間データバッファからフラグビットを読み出して、データ付加・削除の必要があるか否かをチェックする。▲２▼データ削除の必要がある場合は、バス幅単位でデータ削除を行う。バス幅単位で削除可能なときは、バス幅単位で削除を行う。データ削除は、パケットデータメモリ上でデータの移動をすることによっても行うことができるが、パケット処理の高速化の観点からは、パケットデータのパケットデータメモリへの書き込み処理と並列して削除対象のデータの読み込みをスキップし、削除対象外のデータを読み込むことにより実現するのが望ましい。但し、バス幅単位にデータ削除が行われるので、データ削除長がバス１０９のバス幅の整数倍でないとき、データ削除長がバス幅の整数倍であってもデータ削除位置がバス１０９上で先頭でないとき、削除できないデータが残ることになるが、このデータはリオーダ部１２４により削除する。▲３▼データ付加の必要がある場合は、(i)中間データにある付加データの大きさと、パケットデータメモリの空き容量からパケットデータメモリが足りるかを判断し、足りなくなってしまう場合には、足りないメモリ容量に相当するクロック時間だけバックプレッシャ信号線９２をアサートする。データの付加処理では、データのバス幅単位に同一データのコピーを行っており、パケットデータメモリが足りなくなる恐れがあるからである。(ii)バス幅単位でバス幅単位でデータ伸張を行う。データ伸張とは、データを付加する領域を確保することをいう。データ伸張は、パケット処理の高速化の観点より、パケットデータのパケットデータメモリへの書き込み処理と並列的にパケット上での付加位置にあるデータをバス幅単位で複数回数（付加データの大きさ÷バス幅（余りがあれば切り上げ））読み出すことにより実現する。但し、データ伸張はバス幅単位に行われるので、データ付加長がバス幅の整数倍でないとき、データ付加位置がバス１０９の先頭でないとき、データ付加長を超えて余分なデータ領域が確保されるが、余分なデータ削除はリオーダ部１２４が行う。
【００４３】
リオーダ部１２４は、次の機能を有する。▲１▼データ付加・削除を行わないときは、付加・削除バッファ１２２から読み出されたデータをそのままデータライト部１２８に出力する。▲２▼データ付加・削除するとき、データ削除では削除されていないデータ及びデータ付加では余分なデータを削除する。
【００４４】
図１３は、図１２中のリオーダ部１２４の構成図である。リオーダ部１２４は、３段の１２８ビットのシフトレジスタ１３０＃０，１３０＃１，１３０＃２、リオーダ制御シーケンサ１３２及びセレクタ１３４＃ｉ（ｉ＝０〜７）を有する。シフトレジスタ１３０＃ｉはバッファ１２２より出力される１２８ビット幅のパケットデータをシフトするレジスタであり、例えば、８個の１６ビットのレジスタ１３１＃ｉｊ（ｊ＝０〜７）から構成される。レジスタ１３１＃ｉｊを１６ビットとしたのは、ここではデータ付加／削除のデータ単位を１６ビットとしているからである。シフトレジスタ１３０＃ｉ（ｉ＝０〜２）を３段としたのは、１２８ビットのパケットデータを１６ビットで区切ったとき、１２８ビット単位で伸縮しているので、（ｋ＝０〜７）番目の１６ビットデータに上書きされるデータは、最大で１４個後の１６ビットのデータであるからである。
【００４５】
リオーダ制御シーケンサ１３２は、次の機能を有する。▲１▼中間データのフラグビットよりデータ付加・削除の必要があるか否かを判断する。▲２▼データ付加・削除の必要がない場合は、セレクタ１３４＃ｉ（ｉ＝０〜７）にレジスタ１３１＃０ｉの１６ビット出力を選択するよう選択信号＝０を出力する。▲３▼データ付加・削除の必要がある場合、(i)不要なビットを削除することが必要なデータが最終段のシフトレジスタ１３０＃０に出力されるまでは、セレクタ１３４＃ｉ（ｉ＝０〜７）に選択信号＝０を出力する。(ii)不要なビットを削除することが必要なデータが最終段のシフトレジスタ１３０＃０に出力されたクロックでは、削除対象データよりも前のデータ位置のセレクタ１３４＃ｉに選択信号＝０を出力する。削除対象データとは、データ削除が指示された場合の削除対象となるデータ及びデータ伸張による余分なデータをいう。データの削除・付加されないとき、シフトレジスタ１３０＃０ｉの出力データとセレクタ１３４＃ｉとが対応する。(iii)削除位置から後ろのデータについては、削除量分、後方のデータを選択するよう指示する選択信号を出力する。例えば、１６×ｋビット削除する場合は、選択信号＝ｋである。
【００４６】
セレクタ１３４＃ｉは、シフトレジスタ１３１＃０ｉの出力信号及び１４個後までのシフトレジスタの出力信号の１６×１５ビットの出力信号が入力されて、選択信号＝０であるとき、シフトレジスタ１３１＃０ｉの出力信号を選択し、選択信号＝ｋ（ｋ≠０）であるとき、ｋ個後ろのレジスタから出力される信号を選択する。例えば、セレクタ１３４＃０は、レジスタ１３１＃０ｊ（ｊ＝０〜７）及びレジスタ１３１＃１ｊ（ｊ＝０〜６）の出力信号が入力されて、０≦ｋ≦７のとき、レジスタ１３１＃０ｋの出力信号を選択し、８≦ｋ≦１４のとき、シフトレジスタ１３１＃１（ｋ−８）の出力信号を選択する。
【００４７】
図１２中の書込データ抽出部１２６は、フラグビットよりデータ付加の必要があるか否かを判断して、データ付加の必要がある場合は、付加データを中間バッファメモリより抽出して、データライト部１２８に出力する。データライト部１２８は、データ付加の必要がある場合は、１２８ビット単位でリオーダ部１２４よりデータ付加の必要のあるデータが出力されると、該当する付加データで上書きする。以下、図９のパケットデータ処理装置１００の動作説明をする。
【００４８】
（１）  受信インタフェースカード１０２＃ｉの動作
各受信インタフェースカード１０２＃ｉ中の受信インタフェース部７０＃ｉ及び前段処理部７２＃ｉは、第１実施形態と同様に動作する。
【００４９】
（ａ）  データ付加・削除の判断
データ付加・削除機構部１１２よりも前段のパケットデータ処理プロセッサ１１０＃１，…，１１０＃Ｂは、図３中のパケットデータ処理プロセッサ９０＃Ａよりも前段のパケット処理プロセッサ９０＃１，…，９０＃Ｂと同様の処理を行う。パケットデータ処理プロセッサ１１０＃Ｂは、パケットデータ処理プロセッサ９０＃Ｂと同様に、パケットに対してデータを付加・削除する処理を行うか否かをパケットのヘッダより判断して、データ付加・削除に関わる中間データを中間データレジスタ１２０＃Ｂに書き込む。
【００５０】
（ｂ）  データ付加・削除機構部１１２の動作
データ長チェック部１２０は、パケットヘッダ及び中間データよりデータ付加・削除後のデータの全長を求め、パケットの最大長を超えないかをチェックする。パケットの最大長を超えたとき、エラーを出力する。伸張・削除バッファ１２２は、パケットデータをパケットデータメモリに、中間データを中間データメモリに書き込む。中間データのフラグビットよりデータ付加・削除の必要があるか否かを判断する。
【００５１】
（ｂ−１）  データ付加・削除の必要がない場合
伸縮バッファ１２２は、パケットデータメモリよりパケットデータを読み出してリオーダ部１２４に出力する。リオーダ部１２４中のシフトレジスタ１３０＃ｉ（ｉ＝２，１，０）は、パケットデータをシフトする。リオーダ制御シーケンサ１３２は、選択信号＝０をセレクタ１３４＃ｉ（ｉ＝０〜７）に出力する。セレクタ１３４＃ｉはシフトレジスタ１３１＃０ｉより出力されるデータを選択してデータライト部１２８に出力する。データライト部１２８は、リオーダ部１２４より出力されるデータを出力する。
【００５２】
（ｂ−２）  データ付加の必要がある場合
伸縮バッファ１２２は、中間データにある付加データの大きさとパケットメモリの空き容量からパケットデータメモリが足りるかを判断し、足りなくなってしまった場合には、足りないクロック時間だけバックプレッシャ信号線９２をアサートする。バックプレッシャ信号線９２がアサートされると、データ付加・削除機構部１１２よりも前段のパケットデータ処理プロセッサ群はシフト動作を停止すると共に実行中の命令位置で命令を中断する。伸縮バッファ１２２は、付加データの指定開始位置を含むバス幅単位でのデータまでデータメモリより読み出す。付加データ指定開始位置を含むバス幅単位でのデータを付加データの大きさ÷バス幅（余りがあれば切り上げ）回コピーする。
【００５３】
図１４は、バス幅が１２８ビット、付加データの大きさが６４ビット、指定開始位置が３２ビットの時の伸張動作を示す図であり、特に、同図（ａ）はデータ伸張前の状態を示す図、同図（ｂ）はデータ伸張後の状態を示す図である。図１４（ａ）に示すように、データ付加位置が３２ビット目であるとき、伸縮バッファ１２２は、データ付加位置の含む１２８ビットのデータを６４÷１２８＝１（余りを切り上げ）回コピーする。このとき、データが６４＝（１２８−６４）ビット余分にコピーされているので、後述するようにリオーダ部１２４よりこの余分なデータを削除する。
【００５４】
伸縮バッファ１２２で伸縮が行われたパケットはリオーダ部１２４に入力される。リオーダ部１２４中のシフトレジスタ１３０＃ｉ（ｉ＝２，１，０）は、入力されたパケットデータをクロックに同期してシフトする。リオーダ制御シーケンサ１３２は、中間データより示される指定開始位置に従って、不要なビットを削除することが必要なデータが最終段のシフトレジスタ１３０＃０に出力されるまでは、セレクタ１３４＃ｉ（ｉ＝０〜７）に選択信号＝０を出力する。不要なビットを削除することが必要なデータが最終段のシフトレジスタ１３０＃０に出力されたクロックでは、削除対象データよりも前のデータ位置のセレクタ１３４＃ｉに選択信号＝０を出力する。指定開始位置のデータを含む後ろのデータについては、削除量分、後方のデータを選択するよう指示する選択信号を出力する。削除ビット数＝（伸長されたビット数−データ付加ビット数）である。
【００５５】
図１５は、データ付加時のリオーダ部１２４の動作を示す図であり、特に同図（ａ）はリオーダ部１２４の入力、同図（ｂ）はリオーダ部１２４の出力を示している。図１５では、バス幅が１２８ビットで付加データの大きさが６４ビット、指定開始位置が３２ビットの時の動作を示している。削除されるデータ長＝１２８−（６４÷１２８での余り）＝６４ビットである。よって、削除量＝６４÷１６＝４ワードである。リオーダ部１２４は、データ付加位置のデータまでは、入力されたデータをスルーする。データ付加位置のデータを含む以降のデータは、４ワード後方のデータを選択して通す。
【００５６】
書込データ抽出部１２６は、中間データより付加データを読み出し、データライト部１２８に出力する。データライト部１２８は、書込データ抽出部１２６で中間データから抽出した付加データによってデータ付加位置からのデータに上書きする。
【００５７】
（ｂ−３）  データ削除の必要がある場合
伸縮バッファ１２２は、バス幅単位でのデータの収縮を行う。即ち、まず、パケットの先頭データから削除データ開始位置のデータを含むバス幅単位のデータまでバケットデータメモリより読み出す。次に削除データ最終位置のデータを含むバス幅単位のデータをパケットデータメモリより読み出し、削除データ開始位置のデータの次のバス幅単位のデータから削除データ最終位置のデータの前のバス幅単位のデータまでを読み飛ばすことにより、バス幅単位にデータの収縮を行う。
【００５８】
図１６は、バス幅単位のデータの収縮を示す図であり、特に、同図（ａ）はデータ収縮前の状態を示す図、同図（ｂ）はデータ収縮後の状態を示す図である。る。図１６では、バス幅が１２８ビット、削除データの大きさが１６０ビット、指定開始位置が１１２ビットである。このパケットデータをバス幅単位に収縮すると、図１６（ｂ）に示すように、１２８ビット目から１２８ビットのデータが削除される。
【００５９】
図１７は、バス幅単位のデータの収縮の他の場合を示す図であり、特に、同図（ａ）はデータ収縮前の状態を示す図、同図（ｂ）はデータ収縮後の状態を示す図である。図１７では、バス幅が１２８ビット、削除データの大きさが１６０ビット、指定開始位置が６４ビットである。図１７（ａ）に示すように、削除データの大きさが１２８ビットを超える場合でも、バス幅単位にデータを収縮できないときがある。
【００６０】
伸縮バッファ１２２でバス幅単位に縮小されたパケットはリオーダ部１２４に入力される。リオーダ部１２４中のシフトレジスタ１３０＃ｉ（ｉ＝２，１，０）は、入力されたパケットデータをクロックに同期してシフトする。リオーダ制御シーケンサ１３２は、指定開始位置に従って、不要なビットを削除することが必要なデータが最終段のシフトレジスタ１３０＃０に出力されるまでは、セレクタ１３４＃ｉ（ｉ＝０〜７）に選択信号＝０を出力する。不要なビットを削除することが必要なデータが最終段のシフトレジスタ１３０＃０に出力されたクロックでは、削除対象データよりも前のデータ位置のセレクタ１３４＃ｉに選択信号＝０を出力する。指定開始位置のデータを含む後ろのデータについては、削除量分、後方のデータを選択するよう指示する選択信号を出力する。削除ビット量＝削除データビット長−収縮ビット長である。
【００６１】
図１８は、データ削除時のリオーダ部１２４の動作を示す図であり、特に同図（ａ）はリオーダ部１２４の入力、同図（ｂ）はリオーダ部１２４の出力を示している。図１７では、バス幅が１２８ビットで削除データの大きさが１６０ビット、指定開始位置が１１２ビットの時の動作を示している。削除されるデータ長は、指定開始位置から１６０÷１２８の余り＝３２ビットのデータである。図１７（ｂ）に示すように、データ削除位置の前のデータについては、伸縮バッファ１２２データから出力されるデータをスルーして通す。データ削除位置のデータを含む後ろのデータについては、３２ビット＝２ワード（３２÷１６＝２）後ろのデータを選択して通す。
【００６２】
図１９は、データ削除時のリオーダ部１２４の他の場合の動作を示す他の図であり、特に同図（ａ）はリオーダ部１２４の入力、同図（ｂ）はリオーダ部１２４の出力を示している。図１９では、バス幅が１２８ビットで削除データの大きさが１６０ビット、指定開始位置が６４ビットの時の動作を示している。削除されるデータは、指定開始位置から、１６０÷１２８の余り＋１２８＝１６０ビットのデータである。図１９（ｂ）に示すように、データ削除位置の前のデータについては、伸縮バッファ１２２データから出力されるデータをスルーして通す。データ削除位置のデータを含む後ろのデータについては、１６０ビット＝１０ワード（１６０÷１６＝１０）後ろのデータを選択して通す。データライト部１２８は、削除されたパケットデータをスルーして通す。
【００６３】
（ｃ）  後段のパケットデータ処理プロセッサ群の動作
データ付加・削除機構部１１２の後段のパケットデータ処理プロセッサ群１１０＃Ｃ…は、第１実施形態のパケットデータ処理プロセッサ９０＃Ｃと同様の処理を行って、最終段のパケットデータ処理プロセッサ１１０＃ｎよりスイッチファブリック６４にパケットを出力する。
【００６４】
（２）  スイッチファブリック６４の動作
スイッチファブリック６４は、受信インタフェースカード６２＃ｉ（ｉ＝１〜ｎ）からパケットを入力して、パケットのヘッダに設定されているＩＰアドレス又はＭＡＣアドレスに従って、ルーティングテーブルを参照して該当する送信インタフェースカード６６＃ｋ（ｋ＝１〜ｎ）にルーティングする。但し、ルーティングテーブル参照処理をパケット処理プロセッサ群１０４＃ｉにて行い、スイッチファブリック６４はこの処理結果に従い決定された送信インタフェースカード６６＃ｋ（ｋ＝１〜ｎ）にルーティングする実装でも良い。
【００６５】
（３）  送信インタフェースカード６６＃ｉの動作
送信インタフェースカード６６＃ｉは、スイッチファブリック６４よりパケットを入力して、伝送路の物理インタフェースに従ってパケットを送信する。
【００６６】
以上のように、パケットデータ処理プロセッサに、特殊なパケットデータ処理プロセッサとして、バッファ機能を持ったデータの付加・削除機構にデータの付加・削除を行わせることにより、バス幅を気にしないデータの付加・削除を行うことができる。また、データの付加が起こるたびにパケットデータ処理プロセッサ群のデータのシフトを停止させるのではなく、バッファの空き容量がなくなったときに初めてデータのシフトを停止させることによって、パイプラインの停止回数を減らすことができる。
【００６７】
第３実施形態
図２０は、本発明の第３実施形態によるパケットデータ処理装置の構成図であり、図９中の構成要素と実質的に同一の構成要素には同一の符号を附している。図２０に示すパケットデータ処理装置１４０は、受信インタフェースカード１４２＃ｉ中のパケットデータ処理プロセッサ群１４４＃ｉが図９中のパケットデータ処理プロセッサ群１０４＃ｉと異なる。パケットデータ処理プロセッサ群１４４＃ｉは、初段にパケットデータ及び中間データを蓄積するバッファを設けていること、バックプレッシャ信号は初段のパケットデータ処理プロセッサのみに入力するようにしたこと、データ付加・削除機構部の前段のパケットデータ処理プロセッサ群はデータ付加・削除機構部がデータ付加処理を行っている際にもパケットデータ処理を停止せずに継続することが図９中のパケットデータ処理プロセッサ群１０４＃ｉと異なる。
【００６８】
図２１は、図２０中のパケットデータ処理プロセッサ群１４４＃ｉの構成図であり、図１０中の構成要素と実質的に同一の構成要素には同一の符号を附している。バッファ１５０は、次の機能を有する。(i)クロックに同期してパケットデータ及び中間データを入力して、ＦＩＦＯメモリに書き込む。(ii)ＦＩＦＯメモリに保持されたパケットデータ及び中間データを読み込み、バス１０８，１０９に出力する。(iii)バックプレッシャ信号線９２がアサートされると、ＦＩＦＯメモリからパケットデータ及び中間データの読み込みを停止する。ＦＩＦＯメモリからの読み込みが停止されている間にも、パケットデータ及び中間データの書き込みが行われるので、ＦＩＦＯメモリが不足しないように、読み込み停止されている間に書き込まれるパケットデータに応じて、ＦＩＦＯメモリ容量が決定される。(iv)バックプレッシャ信号線９２がネゲートされると、ＦＩＦＯメモリからパケットデータ及び中間データの読み込みを再開する。
【００６９】
データ付加・削除機構部１５４よりも前段のパケットデータ処理プロセッサ１５２＃ｉ（ｉ＝１〜Ｂ）は、バックプレッシャ信号線９２が入力されることがないので、データ付加・削除機構部１５４がデータ付加処理を実行している間もパケット処理を停止することがない。データ付加・削除機構部１５４は、図１２に示したデータ付加・削除機構部１１２の構成と異なることはなく、図１２中のバッファ１２２が不足しそうになると、バックプレッシャ信号線９２をアサートする。しかし、バックプレッシャ信号線９２がパケットデータ処理プロセッサ１５２＃ｉには入力されずに、バッファ１５０に入力されるので、パケットデータ処理プロセッサ１５２＃ｉの動作は停止しないため、パケットデータ処理プロセッサ１５２＃ｉにあるパケットデータは、バックプレッシャ信号線９２をアサートしている間にも入力される。
【００７０】
よって、バックプレッシャ信号線９２をアサートしたとき、パケットデータ処理プロセッサ１５２＃ｉにあるパケットがすべて入力されても図１２中と同様に構成される伸縮バッファがあふれないだけのバッファの空き容量がなければならない。バックプレッシャ信号線９２をアサートすることにより、伸縮バッファに十分な空きが生じたとき、データ付加・削除機構部１５４は、バッファ１５０にパケットの入力再開をするべくバックプレッシャ信号線９２をネゲートする。以下、図２０のパケットデータ処理装置１４０の動作説明をする。
【００７１】
（１）  受信インタフェースカード１４２＃ｉの動作
各受信インタフェースカード１４２＃ｉ中の受信インタフェース部７０＃ｉ、前段処理部７２＃ｉは、第１実施形態と同様に動作する。
【００７２】
（ａ）  パケットデータの書き込み・読み込み
バッファ１５０は、クロックに同期してパケットデータ及び中間データを入力して、ＦＩＦＯメモリに順次書き込む。バックプレッシャ信号線９２がネゲートされているとき、ＦＩＦＯメモリに保持されたパケットデータ及び中間データを読み込み、次段のパケットデータ処理プロセッサ群に出力する。
【００７３】
（ｂ）  データ付加・削除の判断
データ付加・削除機構部１５０よりも前段のパケットデータ処理プロセッサ１５２＃１，…，１５２＃Ｂは、図３中のパケットデータ処理プロセッサ９０＃Ａよりも前段のパケット処理プロセッサ９０＃１，…，９０＃Ｃと同様の処理を行う。パケットデータ処理プロセッサ１５２＃Ｂは、パケットデータ処理プロセッサ９０＃Ｂと同様に、パケットに対してデータを付加・削除する処理を行うか否かをパケットのヘッダより判断して、データ付加・削除に関わる中間データを中間データレジスタに書き込む。
【００７４】
（ｃ）  データ付加・削除機構部１５４の動作
データ付加・削除機構部１５４は、第２実施形態と同様のデータ付加・削除処理を行う。データ伸張をするとき、図１２中のバッファ１２２と同様に構成されたバッファが不足しそうになると、バックプレッシャ信号線９２をアサートする。このとき、バックプレッシャ信号線９２がパケットデータ処理プロセッサ１５２＃ｉには入力されずに、バッファ１５０に入力されるので、パケットデータ処理プロセッサ１５２＃ｉ（ｉ＝１，２，…，Ｂ）は停止しないため、データ付加・削除機構部１５４がバックプレッシャ信号線９２をアサートしている間にも、パケットデータ処理プロセッサ１５２＃ｉ（ｉ＝１，２，…，Ｂ）にあるパケットデータはバックプレッシャ信号線９２をアサートしている間にもデータ付加・削除機構部１５０は停止することなく動作する。
【００７５】
パケットデータ処理プロセッサ１５２＃ｉが停止しないということは、例えば、ある命令実行後２クロック過ぎたときに外部からデータが渡され、そのデータを元にパケットデータ処理プロセッサ１５２＃ｉが処理を行うといったようなある処理から固定クロック後に必ずある処理を行わなければならないので、パケットデータ処理プロセッサ１５２＃ｉが停止できない。このような場合にもパケットデータの付加処理が可能になる。そして、バックプレッシャ信号線９２をアサートすることにより、バッファ１２２に十分な空きが生じたとき、データ付加・削除機構部１５４は、バッファ１５０にパケットの入力再開をするべくバックプレッシャ信号線９２をネゲートする。尚、この実施形態では構成としてバックプレッシャに対応するバッファ１５０をパケットデータ処理プロセッサ群１４４＃ｉ中に持つとしたが、前段処理部７２＃ｉがバッファを持つ構成である場合には前段処理部７２＃ｉがバッファ１５０の機能を兼ねても良い。
【００７６】
本発明は以下の付記を含むものである。
【００７７】
（付記１）  それぞれが入力されたパケットに対して処理をして後段に出力するパイプライン構成された複数のパケットデータ処理部から構成されるパケットデータ処理群を有するパケットデータ処理装置において、
入力されたパケットに前記付加すべきデータを付加する前記パケットデータ処理群中の第１パケットデータ処理部に設けられたデータ付加部と、
前記データ付加部がデータ付加処理をしている間は、前記第１パケットデータ処理部の前段にパケットの出力の停止を指示し、前記データ付加部がデータ付加処理終了後、前記第１パケットデータ処理部の前段にパケットの出力を再開するよう指示する制御部と、
を具備したことを特徴とするパケットデータ処理装置。
【００７８】
（付記２）  前記制御部は、前記第１パケットデータ処理部の前段の全てのパケットデータ処理部に対してパケットの出力の停止及び再開を指示し、前記第１パケットデータ処理部の前段のパケッデータ処理部は、前記制御部からの指示に基づいてパケットの出力の停止及び再開をすることを特徴とする付記１記載のパケットデータ処理装置。
【００７９】
（付記３）  前記第１パケットデータ処理部の前段の前記パケットデータ処理群中の第２パケットデータ処理部は、入力されたパケットに基づいてデータを付加する必要が有るか否かを判断する判断部と、前記判断部がデータを付加する必要が有ると判断したとき、入力されたパケットに基づいて、付加データ、付加データ長及び付加位置を算出して、後段に出力する付加情報生成部とを更に具備し、前記データ付加部は、前記付加データ、付加データ長及び付加位置に基づいて、データを付加することを特徴とする付記１記載のパケットデータ処理装置。
【００８０】
（付記４）  前記データ付加部は、プロセッサ、前記パケットを保持する第１ビット幅の第１段数の第１シフトレジスタ、前記付加データ、前記付加データ長及び前記付加位置を保持する第２ビット幅の第２段数の第２シフトレジスタを有し、前記付加位置よりも後ろに位置するパケットデータを前記付加データ長に基づき前記第１シフトレジスタのシフト動作の停止及び前記第１シフトレジスタの所定レジスタに前記付加データを書き込むことによりデータ付加を行うことを特徴とする付記３記載のパケットデータ処理装置。
【００８１】
（付記５）  それぞれが入力されたパケットに対して処理をして後段に出力するパイプライン構成された複数のパケットデータ処理部から構成されるパケットデータ処理群を有するパケットデータ処理装置において、
前記パケットデータ処理群中の第１パケットデータ処理部に設けられた所定データバス幅の第１メモリと、
入力されたパケットを前記第１メモリに書き込み、パケットの先頭からデータを前記第１メモリより読み込み前記データバス幅単位に順次出力し、前記付加位置のデータが含まれる前記データバス幅単位のデータを前記データ付加長及び前記付加位置に基づいて繰り返して出力する前記第１パケットデータ処理部に設けられたメモリ制御部と、
前記データバス幅、前記付加位置及び前記付加データ長に基づき、前記第１メモリからデータバス幅単位に出力されるパケットの先頭データから付加位置までのデータについては、そのまま出力し、前記付加位置から付加データ長よりも後のデータについては、削除するべきデータ長だけ後のデータを選択して出力する前記第１パケットデータ処理部に設けられたリオーダ部と、
前記リオーダ部より出力されるパケットの付加位置にあるデータを付加データで上書きする前記第１パケットデータ処理部に設けられたライト部と、
前記メモリの空きが足りなくなったとき、前記第１パケットデータ処理部の前段側にパケットの出力の停止を指示し、前記メモリの空きが確保されたとき、前記第１パケットデータ処理部の前段側にパケットの出力を再開するよう指示する制御部と、
を具備したことを特徴とするパケットデータ処理装置。
【００８２】
（付記６）  前記パケットデータ処理群の初段のパケットデータ処理部の前段にパケットデータを蓄積し、パケットの先頭から順次出力する第２メモリを更に設け、前記制御部は、前記第２メモリにパケットの出力の停止及び再開を指示することを特徴とする付記５記載のパケットデータ処理装置。
【００８３】
【発明の効果】
以上説明した本発明によれば、必要なときにパケットデータにデータを付加する処理を行うパケットデータ処理部よりも前段のパケットデータ処理部に対してパケットの入力を制限する手法を取ることによっても、パケットの高速処理を損なうことなく、ヘッダの付加のようにパケットの全長が長くなる処理が可能である。
【図面の簡単な説明】
【図１】本発明の原理図である。
【図２】本発明の第１実施形態によるパケットデータ処理装置の構成図である。
【図３】図２中のパケットデータ処理プロセッサ群の構成図である。
【図４】図３中のパケットデータ処理プロセッサＡの構成図である。
【図５】図３中のパケットデータ処理プロセッサＢの構成図である。
【図６】データ付加の判断後のパケットデータ処理プロセッサＡの状態を示す図である。
【図７】２クロック後のパケットデータ処理プロセッサＡの状態を示す図である。
【図８】データ移動後のパケットデータ処理プロセッサＡの状態を示す図である。
【図９】本発明の第２実施形態によるパケットデータ処理装置の構成図である。
【図１０】図９中のパケットデータ処理プロセッサ群の構成図である。
【図１１】図１０中のパケットデータ処理プロセッサの構成図である。
【図１２】図１０中のデータ付加・削除機構部の構成図である。
【図１３】図１２中のリオーダ部の構成図である。
【図１４】バス幅単位のデータ伸長動作を示す図である。
【図１５】データ付加時のリオーダ部の動作を示す図である。
【図１６】バス幅単位のデータ収縮動作を示す図である。
【図１７】バス幅単位のデータ収縮動作を示す図である。
【図１８】データ削除時のリオーダ部の動作を示す図である。
【図１９】データ削除時のリオーダ部の動作を示す図である。
【図２０】本発明の第３実施形態によるパケットデータ処理装置の構成図である。
【図２１】図２０中のパケットデータ処理プロセッサ群の構成図である。
【図２２】従来のストアアンドフォワードによるパケット処理方式を示す図である。
【図２３】パケットデータ処理プロセッサの構成図である。
【図２４】パケットデータ処理プロセッサを複数個並べたハードウェア構成を示す図である。
【図２５】２つのプライベートネットワーク間を共有ネットワークにより接続したネットワーク構成を示す図である。
【図２６】データ付加削除前のパケットデータ処理プロセッサの状態を示す図である。
【図２７】パケットが密接しているときのシフトレジスタの状態を示す図である。
【符号の説明】
５０＃ｉ（ｉ＝１，２，…）  パケットデータ処理部
５０＃Ａ  第１パケットデータ処理部
５２  パケットデータ処理群
５４  データ付加部
５６  制御部
【図１】
0004183920.tif 000002
【図２】
0004183920.tif 000003
【図３】
0004183920.tif 000004
【図４】
0004183920.tif 000005
【図５】
0004183920.tif 000006
【図６】
0004183920.tif 000007
【図７】
0004183920.tif 000008
【図８】
0004183920.tif 000009
【図９】
0004183920.tif 000010
【図１０】
0004183920.tif 000011
【図１１】
0004183920.tif 000012
【図１２】
0004183920.tif 000013
【図１３】
0004183920.tif 000014
【図１４】
0004183920.tif 000015
【図１５】
0004183920.tif 000016
【図１６】
0004183920.tif 000017
【図１７】
0004183920.tif 000018
【図１８】
0004183920.tif 000019
【図１９】
0004183920.tif 000020
【図２０】
0004183920.tif 000021
【図２１】
0004183920.tif 000022
【図２２】
0004183920.tif 000023
【図２３】
0004183920.tif 000024
【図２４】
0004183920.tif 000025
【図２５】
0004183920.tif 000026
【図２６】
0004183920.tif 000027
【図２７】
0004183920.tif 000028