以下、図面を用いてネットワーク中継装置の一実施例について説明する。
図1は、ネットワーク中継装置の構成の一例を示す。
図1において、ネットワーク中継装置は、例えばクロスバスイッチで構成されるスイッチ10と、スイッチ10に接続される複数のルーティングプロセッサ210、220、230とを備える。各ルーティングプロセッサは、転送エンジン30、検索エンジン40、スイッチエンジン50を有する。また、転送エンジン30は、それぞれ1つ乃至複数の回線と直接または間接的に接続されている。図1では、ネットワーク中継装置は、ルーティングプロセッサとして、例えば、転送エンジン30と検索エンジン40が1対1で接続されたタイプAのルーティングプロセッサ210、2以上の転送エンジン30と1つの検索エンジン40が多対1で接続されたタイプBのルーティングプロセッサ220、1つの転送エンジン30と2以上の検索エンジン40が1対多で接続されたタイプCのルーティングプロセッサ230を備えている。
また、図2にネットワーク中継装置の他の構成例を示す。
図2に示したネットワーク中継装置も、図1に示したネットワーク中継装置と同じ構成を備える。但し、図2におけるネットワーク中継装置は、ルーティングプロセッサとして、2以上の転送エンジン30と2以上の検索エンジン40が多対多で接続されたタイプDのルーティングプロセッサ240を備えている。
各ルーティングプロセッサでは、転送エンジン30と検索エンジン40が、1対多又は多対1又は多対多で相互に接続されるためのアーキテクチャを持つ。各転送エンジン30は、アーキテクチャに応じた所定の設定に従い、複数の検索エンジン40を接続するための接続部を備えている。同様に、各検索エンジン40は、アーキテクチャに応じた所定の設定に従い、複数の転送エンジン30を接続するための接続部を備えている。
なお、図1にはタイプA、B、Cのルーティングプロセッサがひとつずつ示されている。また、図2にはタイプDのルーティングプロセッサ240が2つ示されている。しかし、ネットワーク中継装置は、タイプA〜タイプDのうちの何れか1つのタイプのルーティングプロセッサのみを備えることもでき、また、タイプA〜タイプDのルーティングプロセッサをそれぞれ1つまたは複数個備えることもできる。
スイッチ10は、スイッチエンジンを有し、各ルーティングプロセッサとの間でパケットを転送する。スイッチ10は、各ルーティングプロセッサのスイッチエンジン50からパケット及び出力方路情報を受け取ると、出力方路情報に含まれる出力スイッチエンジン番号に応じたスイッチエンジン50に当該パケットを転送する。なお、スイッチ10は、例えば、現用系と予備系を有する多重化構成であってもよい。また、スイッチ10のスイッチエンジンと、各ルーティングプロセッサのスイッチエンジン50は、同じ構造を持つことができる。
転送エンジン30は、パケットを記憶するパケットバッファを有し、回線から受信したパケットをパケットバッファに格納する。また、転送エンジン30は、受信したパケットからパケットヘッダを抽出し、検索エンジン40へ送る。転送エンジン30は、検索エンジン40から出力方路情報を受け取り、受け取った出力方路情報とパケットバッファに格納されているパケットをスイッチエンジン50に転送する。また、転送エンジン30は、入力回線番号及び入力転送エンジン番号をさらに検索エンジン40に送ってもよい。入力回線番号及び入力転送エンジン番号は、例えば、検索エンジン40でのフィルタリングやQoSに関する処理に使用される。
検索エンジン40は内部メモリを備え、または、外部メモリと接続されている。内部メモリまたは外部メモリはルーティングテーブルを格納している。ルーティングテーブルには、1つ以上のアドレス(IPアドレス)と、各アドレスに対応する出力スイッチエンジン番号、出力転送エンジン番号及び出力回線番号を含む出力方路情報が登録されている。検索エンジン40は、転送エンジン30から受け取ったパケットヘッダに含まれている宛先アドレスを検索キーとして、ルーティングテーブルを検索する。検索エンジン40は、宛先アドレスと一致するアドレスに対応する出力方路情報を抽出すると、転送エンジン30に送る。また、検索エンジン40は、転送エンジン30から受け取った入力回線番号及び入力転送エンジン番号、及び/又は、出力方路情報に基づき、フィルタリング又はQoSに関する処理を行う。
スイッチエンジン50は、転送エンジン30からパケット及び出力方路情報を受け取り、その出力方路情報に従い、パケットをスイッチ10のスイッチエンジンまたは転送エンジン30へ転送する。また、スイッチエンジン50は、スイッチ10から出力方路情報及びパケットを受信し、転送エンジン30へ送信する。スイッチエンジン50からパケット及び出力方路情報を受け取った転送エンジン30は、その出力方路情報に従い、パケットを何れかの回線に向けて出力する。
上述した通り、タイプAのルーティングプロセッサ210は、検索エンジン40と転送エンジン30が1対1で接続されている。タイプAのルーティングプロセッサ210は、タイプB、タイプCまたはタイプDの構成に比べて性能のバランスを重視した構成である。
タイプBのルーティングプロセッサ220は、1つの検索エンジン40に対して、2以上の転送エンジン30が接続された構成である。なお、図1に示すタイプBのルーティングプロセッサ230においては、スイッチエンジン50と転送エンジン30も1対多で接続されているが、複数のスイッチエンジン50を配置し、スイッチエンジン50と転送エンジン30を1対1で接続するようにしてもよい。上述のタイプAの構成では、1つの検索エンジン40に対する回線数(ポート数)を増やすためには、転送エンジン30、検索エンジン40、スイッチエンジン50のそれぞれを増やす必要がある。一方、タイプBの構成では、1つの検索エンジン40に対する回線数(各回線と接続されるポート数)を多くできるため、ポート単価を安くすることができる。すなわち、タイプBのルーティングプロセッサ220は、タイプAまたはタイプCの構成に比べて回線収容数(ポート密度)を重視した構成である。特に、パケット長の長いパケットを扱う場合、ペイロード(データ)を含むパケット全体を処理する転送エンジン30(性能はbps:bit per secondで表される)の負荷に対して、パケットヘッダのみを処理する検索エンジン40(性能はpps:packet per secondで表される)の負荷は小さい。そのため、タイプBの構成とすることにより検索エンジン40を効率的に利用することができる。
また、タイプCのルーティングプロセッサ230は、1つの転送エンジン30に対して、2以上の検索エンジン40が接続された構成である。タイプCは、回線を多重化せずに、スイッチエンジン50や検索エンジン40を多重化した、信頼性を重視した構成である。タイプCの構成によれは、例えば、一組の検索エンジン40及びスイッチエンジン50を予備系とし、残りを現用系とすることができる。特に、検索エンジン40は、ネットワークに関する重要な情報を保持しているため、検索エンジン40を二重化することでルーティングプロセッサ20の信頼性を向上させることができる。なお、予備系は一組でなくてもよく、複数組を予備系としてもよい。また、図1においては、スイッチエンジン50も多重化された構成となっているが、検索エンジン40のみを多重化し、スイッチエンジン50と転送エンジン30は1対1で接続された構成としてもよい。
更に、タイプDのルーティングプロセッサ240は、2以上の転送エンジン30に対して2以上の検索エンジン40が接続された構成である。タイプDのルーティングプロセッサ240では、複数の転送エンジン30が各検索エンジン40に接続されている。このため、1つの検索エンジン40に対する回線数(ポート数)が多くなっている。更に、複数の検索エンジン40が各転送エンジン30に接続されていて、検索エンジン40が多重化されている。即ち、タイプCは、タイプBとタイプCを組み合わせた構成となっている。従って、タイプCと同様に、タイプDにおいても一組または複数組の検索エンジン40とスイッチエンジン50を予備系として待機させておくことができる。なお、タイプDのルーティングプロセッサ240においても、スイッチエンジン50については転送エンジン30と1対1で接続してもよい。
ところで、転送エンジン30、検索エンジン40及びスイッチエンジン50はそれぞれ1つまたは複数のLSIによって構成される。転送エンジン30、検索エンジン40及びスイッチエンジン50を構成する各LSIは、プリント基板或いはセラミック基板等の配線基板上に搭載される。各LSIは、配線基板に予め形成された複数の信号配線によって接続される。これらの信号配線は銅等の金属によって配線基板上または内部に形成される。転送エンジン30、検索エンジン40及びスイッチエンジン50を構成する各LSIは、各信号配線と接続される複数の入出力端子を備え、これらの信号配線を介して上述したようにパケット、パケットヘッダまたは出力方路情報等を互いに転送し合う。このように、各ルーティングプロセッサは、転送エンジン30、検索エンジン40及びスイッチエンジン50を構成する各LSIと、各々のLSIが搭載される配線基板によって実現される。配線基板には、各LSIの他にメモリ等も搭載される。メモリは、例えば上述したルーティングテーブルを格納するために使用される。
なお、転送エンジン30、検索エンジン40及びスイッチエンジン50は、同一の配線基板ではなく、それぞれ異なる配線基板上に搭載されても良い。また、転送エンジン30、検索エンジン40及びスイッチエンジン50は、それぞれモジュール、ユニットまたはカードとして構成されて、ネットワーク中継装置に組み込まれても良い。各エンジンがモジュール、ユニットまたはカードとして構成される場合、各エンジンは互いを接続するためのインタフェース(上述した複数の入出力端子に対応する)を備える。各エンジンはそのようなインタフェースに接続されたケーブル等(上述した複数の信号配線に対応する)を介して互いに接続される。
各ルーティングプロセッサにおいて、各転送エンジン30と各検索エンジン40とを接続する複数の信号配線は、例えば128ビットの幅のデータバスを含む。データバスは、その幅に対応した、例えば128本の信号配線から構成される。また、各転送エンジン30と各検索エンジン40は、それぞれ、データバスの各信号配線と接続される128個のデータ入出力端子(例えばピンまたはソケット)を備える。各データ入出力端子は1ビットのデータを入出力し、各信号配線はそれぞれ1ビットの信号(データ)を伝送する。従って、各転送エンジン30と各検索エンジン40とは、データバスを用いて最大128ビットの信号(データ)を互いに送受信し合うことができる。
図3及び図4は、各転送エンジン30と各検索エンジン40がデータバス80を介して接続された状態を示す。
例えば、タイプAのルーティングプロセッサ210では、図3(a)に示されるように1つの転送エンジン30と1つの検索エンジン40とがデータバス80を介して接続される。この場合、転送エンジン30と検索エンジン40は、それぞれの128個のデータ入出力端子(以下、データ入出力端子0−127と記す)を全て使用し、データバス80の128本の信号配線(以下、信号配線0−127)を介して最大128ビットのデータを送受信できる。
一方、タイプBのルーティングプロセッサ220において、例えば1つの検索エンジン40に対して2つの転送エンジン30が接続されるとする。この場合、検索エンジン40のデータ入出力端子0−127が、データバスを介して2つの転送エンジン30に接続される必要がある。そのため、検索エンジン40のデータ入出力端子0−127は、論理的に2つのデータ入出力端子群(データ入出力端子群0−63とデータ入出力端子群64−127)に分けられる。同様に、各転送エンジン30のデータ入出力端子0−127も論理的に2つのデータ入出力端子群に分けられる。そして、図3(b)に示されるように、各転送エンジン30の一方のデータ入出力端子群(例えばデータ入出力端子群0−63)が、検索エンジン40のそれぞれのデータ入出力端子群にデータバスを介して接続されることになる。従って、この場合、検索エンジン40と各転送エンジン30は、それぞれデータ入出力端子0−127のうち半分のデータ入出力端子群(0−63または64−127)を使用し、データバスを介して最大64ビットのデータを送受信する。
また、タイプBのルーティングプロセッサ220において、1つの検索エンジン40に対して4つの転送エンジン30が接続された状態を図3(c)に示す。この場合、検索エンジン40のデータ入出力端子0−127は、論理的に4つのデータ入出力端子群(0−31、32−63、64−95、96−127)に分けられる。同様に、各転送エンジン30のデータ入出力端子0−127も論理的に4つのデータ入出力端子群に分けられる。そして、図3(c)に示されるように、各転送エンジン30の1つのデータ入出力端子群(例えばデータ入出力端子群0−31)が、検索エンジン40のそれぞれのデータ入出力端子群にデータバスを介して接続されることになる。従って、この場合、検索エンジン40と各転送エンジン30は、それぞれデータ入出力端子0−127のうち1/4のデータ入出力端子群(0−31、32−63、64−95、96−127の何れか)を使用し、データバスを介して最大32ビットのデータを送受信する。
次に、タイプCのルーティングプロセッサ230において、1つの転送エンジン30に対して2つの検索エンジン40が接続された状態を図4(a)に示す。この場合は、転送エンジン30と各検索エンジン40のデータ入出力端子がそれぞれ論理的に2つのデータ入出力端子群に分けられる。そして、図3(b)に示された状態と同様に、各検索エンジン40の1つのデータ入出力端子群(例えばデータ入出力端子群0−63)が、転送エンジン30のそれぞれのデータ入出力端子群にデータバスを介して接続される。
また、タイプCのルーティングプロセッサ230において、1つの転送エンジン30に対して4つの検索エンジン40が接続された状態を図4(b)に示す。この場合は、転送エンジン30と各検索エンジン40のデータ入出力端子がそれぞれ論理的に4つのデータ入出力端子群に分けられる。そして、図3(c)に示された状態と同様に、各検索エンジン40の1つのデータ入出力端子群(例えばデータ入出力端子群0−31)が、転送エンジン30のそれぞれのデータ入出力端子群にデータバスを介して接続される。
更に、タイプDのルーティングプロセッサ240において、2つまたは4つの転送エンジン30と2つまたは4つの検索エンジン40が接続される場合も同様である。この場合は、各転送エンジン30と各検索エンジン40のデータ入出力端子がそれぞれ論理的に2つまたは4つのデータ入出力端子群に分けられる。そして、各検索エンジン40の1つのデータ入出力端子群(例えばデータ入出力端子群0−63またはデータ入出力端子群0−31)が、1つの転送エンジン30のそれぞれのデータ入出力端子群にデータバスを介して接続される。また、各検索エンジン40の他のデータ入出力端子群が、他の転送エンジン30のそれぞれのデータ入出力端子群にデータバスを介して接続されることになる。
このように、タイプAとタイプB〜Dとでは、各検索エンジン40に接続される各転送エンジン30の入出力端子数は異なっている。更に、タイプB〜Dであっても、転送エンジン30または検索エンジン40の個数によって、各検索エンジン40に接続される各転送エンジン30の入出力端子数は異なる。そのため、各検索エンジン40と各転送エンジン30とが送受信できるデータの最大幅は異なり、データ伝送に使用するデータバスの幅も異なる。更に、タイプCやタイプDのルーティングプロセッサ230、240においては、転送エンジン30は、多重化された各々の検索エンジン40に同じデータを出力する必要がある。
そこで、図1及び図2に示した転送エンジン30及び検索エンジン40は、データの最大幅(データ入出力端子数)を変えてデータを送受信できる接続部を備える。更に、転送エンジン30の接続部は、同一のデータを論理的に分けた複数の入出力端子群から出力させる。転送エンジン30と検索エンジン40がそのような接続部を備えることにより、検索エンジン40は複数の転送エンジン30と接続されることができる。また、転送エンジン30も複数の検索エンジン40と接続され、各検索エンジン40に同じデータを送信できる。このように、全てのタイプのルーティングプロセッサに同一の転送エンジン30及び検索エンジン40を用いることができる。
接続部の詳細な構成について図5及び図6を用いて説明する。
図5は、転送エンジン30の接続部60の構成図を示す。
接続部60は上述したデータ入出力端子0−127と接続され、パケットヘッダ等のデータを転送エンジン内部の回路から受け取ってデータ入出力端子へ送り、データバスへ出力させる。また、データ入出力端子を介してデータバスから受信した出力方路情報等を転送エンジン内部の回路に送る。
図5において、転送エンジン30の接続部60は、モードレジスタ610と、セレクタ620、630、640と、2進カウンタ650及び4進カウンタ660とを有する。また、接続部60は128ビットの幅のバス670を備える。バス670は128本のデータ線(以下、データ線0−127)を含む。バス670は転送エンジン内部の回路または信号線と接続され、また、セレクタ620を介してデータ入出力端子0−127と接続される。データ線0−127のそれぞれはデータ入出力端子0−127のそれぞれと接続される。各データ線は、バス670によって伝送される128ビットのデータ(以下、ビット0−127のデータ)のうち、それぞれの位置に対応したビットのデータを伝送する。即ち、1ビット目(ビット0)のデータは1番目のデータ線(データ線0)により伝送される。また、データ線0−127のそれぞれによって伝送される1ビット目(ビット0)から128ビット目(ビット127)の各々のデータは、各ビットの位置に対応するデータ入出力端子によって出力(または入力)される。更に、各ビットのデータは、各ビットの位置に対応する信号配線によって伝送される。よって、データ線0により伝送されるビット0のデータは、1番目のデータ入出力端子(データ入出力端子0)によって入出力され、また、1番目の信号配線(信号配線0)によって伝送される。
なお、バス670やデータバスの幅は128ビット以外の任意のビット数であって構わない。バスの幅に合わせてデータ入出力端子の数も128個以外の数となってよい。
接続部60において、セレクタ630にはバス670に含まれるデータ線0−127のうち1〜64番目のデータ線0−63が一方の入力として接続され、他方の入力としてデータ線64−127が接続されている。セレクタ630は、2進カウンタ650が取り得る値、即ち“0”または“1”に従ってデータ線0−63またはデータ線64−127を選択して64本のデータ出力線と接続する。従って、データ線0−63から出力される64ビット(ビット0−63)のデータまたはデータ線64−127から出力される64ビット(ビット64−127)のデータが選択されてセレクタ630から出力される。図5に示されるように、セレクタ630に接続された各データ出力線はそれぞれ2つに分かれ、合計128本のデータ出力線として合成され、セレクタ620に接続される。よって、セレクタ630から出力された64ビットのデータは各データ出力線により二重化され、合計128ビットのデータとしてセレクタ620に入力される。例えば、2進カウンタ650の値“0”によってセレクタ630がデータ線0−63から出力されるビット0−63のデータを選択したとする。セレクタ630から出力されたビット0−63のデータは、各データ出力線によって2つのビット0−63のデータを含む128ビットのデータとされる。
なお、2進カウンタは、セレクタ630からデータが出力される毎にカウントアップ(又はカウントダウン)を繰り返す。そのため、セレクタ630は、データ線0−63とデータ線64−127を順番に選択する。よって、バス670により伝送されるビット0−127のデータは、ビット0−63のデータとビット64−127のデータに分けられて、セレクタ630から順番に出力される。
セレクタ640にはバス670に含まれるデータ線0−127のうち0〜32番目のデータ線0−31が1つの入力として接続され、更に、データ線32−63、データ線64−95、データ線96−127がそれぞれ他の入力として接続されている。セレクタ640は、4進カウンタ660が取り得る値、“0”、“1”、“2”、“3”に従って4つのデータ線群の1つを選択して32本のデータ出力線と接続する。従って、各データ線群からそれぞれ出力される32ビットのデータの1つが選択されてセレクタ640から出力される。図5に示されるように、セレクタ640に接続された32本のデータ出力線はそれぞれ4つに分かれ、合計128本のデータ出力線として合成され、セレクタ620に接続される。よって、セレクタ640から出力された32ビットのデータは各データ出力線により四重化され、合計128ビットのデータとしてセレクタ620に入力される。例えば、4進カウンタ660の値“0”によってセレクタ640がデータ線0−31から出力されるビット0−31のデータを選択したとする。セレクタ640から出力されたビット0−31のデータは、各データ出力線によって4つのビット0−31のデータを含む128ビットのデータとされる。
なお、4進カウンタは、セレクタ640からデータが出力される毎にカウントアップ(又はカウントダウン)を繰り返す。そのため、セレクタ640は、各データ線群を順番に選択する。よって、バス670により伝送されるビット0−127のデータは、ビット0−31のデータ、ビット32−63のデータ、ビット64−95のデータ、ビット96−127のデータに分けられて、セレクタ640から順番に出力される。
セレクタ620には、上述した通り、バス670のデータ線0−127が1つの入力(入力A)として接続されている。また、セレクタ630のデータ出力線が二重化されて入力Bとして接続されている。更に、セレクタ640のデータ出力線が四重化されて入力Cとして接続されている。セレクタ620はモードレジスタ610に設定されたモード情報に従って、入力A、B、Cの1つを選択してデータ入出力端子0−127と接続する。
モードレジスタ610は、転送エンジン30と検索エンジン40との接続タイプを示すモード情報を記憶する。モード情報は、例えば、ネットワーク中継装置の初期設定時や、その他の適宜のタイミングで、装置管理者によって、または装置内のソフトウェアによってモードレジスタ610に設定される。
図3(a)に示すように、転送エンジン30と検索エンジン40が1対1で接続されている場合、モードレジスタ610には“モードA”が設定される。この場合、セレクタ620は入力A、即ち、バス670のデータ線0−127を選択してデータ入出力端子0−127と接続する。これにより、データ線0−127により伝送されるビット0−127のデータがデータ入出力端子0−127からそのまま出力される。データ入出力端子0−127から出力されたビット0−127のデータは、データバスの信号配線0−127を介して検索エンジン40のデータ入出力端子0−127に受信される。
次に、図3(b)に示すように、1つの検索エンジン40に2つの転送エンジン30が接続されている場合、モードレジスタ610には“モードB”が設定される。この場合、セレクタ620は入力Bを選択してデータ入出力端子0−127と接続する。即ち、セレクタ620は、セレクタ630から出力され、データ出力線により二重化された128ビットの信号を選択し、データ入出力端子0−127に出力する。上述した通り、セレクタ630は、バス670のうちのデータ線0−63から出力されるビット0−63のデータ、またはデータ線64−127から出力されるビット64−127のデータを選択して出力する。従って、データ入出力端子0−127のうちデータ入出力端子群0−63とデータ入出力端子群64−127は共に、セレクタ630により選択された64ビットのデータを出力する。但し、この場合、図3(b)に示されるように、例えばデータ入出力端子群0−63のみが、データバスの信号配線0−63または信号配線64−127を介して、検索エンジン40のデータ入出力端子群0−63またはデータ入出力端子群64−127に接続される。そのため、データ入出力端子群0−63から出力されるビット0−63のデータまたはビット64−127のデータだけが検索エンジン40に送られる。なお、セレクタ630は、ビット0−63のデータとビット64−127のデータを順番に出力するため、データ入出力端子群0−63(またはデータ入出力端子群64−127)もビット0−63のデータとビット64−127のデータを順番に出力する。
また、図4(a)に示すように、1つの転送エンジン30に2つの検索エンジン40が接続されている場合も、モードレジスタ610には“モードB”が設定される。但しこの場合、図4(a)に示されるように、例えばデータ入出力端子群0−63は、データバスの信号配線0−63を介して、1つの検索エンジン40のデータ入出力端子群0−63に接続される。また、データ入出力端子群64−127は、データバスの信号配線64−127を介して、他の検索エンジン40のデータ入出力端子群0−63に接続される。そのため、データ入出力端子群0−63とデータ入出力端子群64−127から出力される同一のデータ(ビット0−63のデータまたはビット64−127のデータ)が両方の検索エンジン40に送られる。なお、セレクタ630は、ビット0−63のデータとビット64−127のデータを順番に出力するため、データ入出力端子群0−63とデータ入出力端子群64−127も、ビット0−63のデータとビット64−127のデータを順番に出力する。
次に、図3(c)に示すように、1つの検索エンジン40に4つの転送エンジン30が接続されている場合、モードレジスタ610には“モードC”が設定される。この場合、セレクタ620は入力Cを選択してデータ入出力端子0−127と接続する。即ち、セレクタ620は、セレクタ640から出力され、データ出力線により四重化された128ビットの信号を選択し、データ入出力端子0−127に出力する。上述した通り、セレクタ640は、バス670のうちのデータ線0−31から出力されるビット0−31のデータ、データ線32−63から出力されるビット32−63のデータ、データ線64−95から出力されるビット64−95のデータまたはデータ線96−127から出力されるビット96−127のデータを選択して出力する。従って、データ入出力端子0−127のうちデータ入出力端子群0−31、データ入出力端子群32−63、データ入出力端子群64−95及びデータ入出力端子群96−127は共に、セレクタ630により選択された32ビットのデータを出力する。但し、この場合、図3(c)に示されるように、例えばデータ入出力端子群0−31のみが、データバス(信号配線0−31、32−63、64−95、96−127のうちの1つ)を介して、検索エンジン40(データ入出力端子群0−31、32−63、64−95、96−127の1つ)に接続される。そのため、データ入出力端子群0−31から出力されるデータ(ビット0−31、32−63、64−95、96−127の1つのデータ)だけが検索エンジン40に送られる。なお、セレクタ640は、ビット0−31、ビット32−63、ビット64−95、ビット96−127のデータを順番に出力するため、データ入出力端子群0−31も各データを順番に出力する。
また、図4(b)に示すように、1つの転送エンジン30に4つの検索エンジン40が接続されている場合も、モードレジスタ610には“モードC”が設定される。但しこの場合、図4(b)に示されるように、例えばデータ入出力端子群0−31は、データバスの信号配線0−31を介して、1つの検索エンジン40のデータ入出力端子群0−31に接続される。他のデータ入出力端子群0−31、32−63、64−95、96−127もそれぞれ、信号配線32−63、64−95、96−127を介して、各検索エンジン40のデータ入出力端子群0−31に接続される。そのため、各々のデータ入出力端子群から出力される同一のデータが各検索エンジン40に送られる。なお、セレクタ640は、ビット0−31、ビット32−63、ビット64−95、ビット96−127のデータを順番に出力するため、各データ入出力端子群も各データを順番に出力する。
なお、2以上の転送エンジン30と2以上の検索エンジン40とが接続されている場合には、各転送エンジン30にいくつの検索エンジン40が接続されるかに応じて、モードレジスタには“モードB”または“モードC”が設定される。
上述した通り、接続部60は、転送エンジン30と検索エンジン40との接続状態に従って、検索エンジン40に接続されたデータ入出力端子群からデータを出力することができる。また、接続部60は、データ入出力端子群の端子数に対応した幅のデータを出力することができる。更に、接続部60は同一のデータを複数の検索エンジン40に対して出力することができる。
図6は、検索エンジン40の接続部70の構成図を示す。
接続部70は、検索エンジン40の上述したデータ入出力端子0−127と接続され、出力方路情報等のデータを検索エンジン内部の回路から受け取ってデータ入出力端子へ送り、データバスへ出力させる。また、データ入出力端子を介してデータバスから受信したパケットヘッダ等を検索エンジン内部の回路に送る。
図6において、検索エンジン40の接続部70は、モードレジスタ710と、セレクタ720、730、740と、2進カウンタ750及び4進カウンタ760とを有する。また、接続部70は128ビットの幅のバス770を備える。バス770は128本のデータ線(データ線0−127)を含む。バス770は検索エンジン内部の回路または信号線と接続され、また、セレクタ720を介してデータ入出力端子0−127と接続される。データ線0−127のそれぞれはデータ入出力端子0−127のそれぞれと接続される。
図6における接続部70のモードレジスタ710、セレクタ720、セレクタ730、セレクタ740、2進カウンタ750及び4進カウンタ760は、それぞれ、図5における接続部60のモードレジスタ610、セレクタ620、セレクタ630、セレクタ640、2進カウンタ650及び4進カウンタ660と対応する。従って、接続部70は、上述した接続部60と同様に動作する。
但し、検索エンジン40は、転送エンジン30と異なり、複数の転送エンジン30に対して同じデータを出力する必要はない。即ち、検索エンジン40は、パケットヘッダを出力した転送エンジン30に対してのみ、そのパケットヘッダに基づいて抽出した出力方路情報等のデータを出力する。そのため、接続部70は、パケットヘッダ等のデータを受信したデータ入出力端子群を記憶する出力レジスタ780を備える。データを受信すると、そのデータを受信したデータ入出力端子群の識別情報が出力レジスタ780に設定される。データ入出力端子群の識別情報ではなく、データを出力した転送エンジンの識別情報が出力レジスタ780に設定されても良い。データ入出力端子群の識別情報としては、それぞれのデータ入出力端子群に割り当てられた番号等がある。転送エンジンの識別情報としては、転送エンジンからパケットヘッダと共に送られる転送エンジン番号等がある。また、接続部70においては、セレクタ730のデータ出力線がそのままセレクタ720に接続される。セレクタ730は、2進カウンタ750の値、“0”または“1”に従って、バス770のデータ線0−63から出力されるビット0−63のデータまたはデータ線64−127から出力されるビット64−127のデータを選択して出力する。また、セレクタ740のデータ出力線もそのままセレクタ720に接続される。セレクタ740は、4進カウンタ760の値が“0”、“1”、“2”、“3”の何れであるかに従って、バス770のデータ線0−31から出力されるビット0−31のデータ、データ線32−63から出力されるビット32−63のデータ、データ線64−95から出力されるビット64−95のデータまたはデータ線96−127から出力されるビット96−127のデータを選択して出力する。
セレクタ720には、上述した通り、バス770のデータ線0−127が入力Xとして接続されている。また、セレクタ730のデータ出力線が入力Yとして接続されている。更に、セレクタ740のデータ出力線が入力Zとして接続されている。セレクタ720は、モードレジスタ710に設定されたモード情報と出力レジスタ780に設定された識別情報に従って、入力X、Y、Zの1つを選択し、データ入出力端子0−127またはその一部と接続する。なお、モード情報は、例えば、ネットワーク中継装置の初期設定時や、その他の適宜のタイミングで、装置管理者によって、または装置内のソフトウェアによってモードレジスタ710に設定される。
例えば、図3(a)に示すように、検索エンジン40と転送エンジン30が1対1で接続されている場合、モードレジスタ710には“モードX”が設定される。この場合、セレクタ720は入力X、即ち、バス770のデータ線0−127を選択してデータ入出力端子0−127と接続する。これにより、データ線0−127により伝送されるビット0−127のデータがデータ入出力端子0−127からそのまま出力される。データ入出力端子0−127から出力されたビット0−127のデータは、データバスの信号配線0−127を介して転送エンジン30のデータ入出力端子0−127に受信される。
次に、図3(b)に示すように、1つの検索エンジン40に2つの転送エンジン30が接続されている場合、モードレジスタ710には“モードY”が設定される。なお、2つの転送エンジン30には、番号として#0と#1が割り当てられているとする。この場合、セレクタ720は“モードY”に従って入力Yを選択する。更に、この場合、セレクタ720は、出力レジスタに設定された転送エンジン番号に従って、セレクタ730のデータ出力線をデータ入出力端子0−127のうちのデータ入出力端子群0−63またはデータ入出力端子群64−127に接続する。即ち、セレクタ720は、セレクタ730から出力される64ビットの信号を選択し、データ入出力端子群0−63またはデータ入出力端子64−127に出力する。これによって、接続部70は、転送エンジン番号等の識別情報により識別される転送エンジンと接続されたデータ入出力端子群からのみ、データを出力させることができる。
図4(a)に示すように、1つの転送エンジン30に2つの検索エンジン40が接続されている場合も、モードレジスタ710には“モードY”が設定される。但しこの場合、各検索エンジン40のデータ入出力端子群0−63のみが、データバスを介して転送エンジン30のデータ入出力端子群0−63またはデータ入出力端子群64−127に接続される。従って、出力レジスタ780に設定される転送エンジン番号等の識別情報は同じであり、セレクタ720は、セレクタ730のデータ出力線をデータ入出力端子群0−63だけに接続する。
次に、図3(c)に示すように、1つの検索エンジン40に4つの転送エンジン30が接続されている場合、モードレジスタ710には“モードZ”が設定される。なお、各転送エンジン30には、番号として#0、#1、#2、#3が割り当てられているとする。この場合、セレクタ720は“モードZ”に従って入力Zを選択する。更に、この場合、セレクタ720は、出力レジスタに設定された転送エンジン番号に従って、セレクタ740のデータ出力線をデータ入出力端子0−127のうちのデータ入出力端子群0−31、32−63、64−95、96−127の1つに接続する。即ち、セレクタ720は、セレクタ740から出力される32ビットの信号を選択し、データ入出力端子群0−31、32−63、64−95、96−127の1つに出力する。これによって、接続部70は、識別情報により識別される転送エンジンと接続されたデータ入出力端子群からのみ、データを出力させることができる。
図4(b)に示すように、1つの転送エンジン30に4つの検索エンジン40が接続されている場合も、モードレジスタ710には“モードZ”が設定される。但しこの場合、各検索エンジン40のデータ入出力端子群0−31のみが、データバスを介して転送エンジン30のデータ入出力端子群0−31、32−63、64−95、96−127の1つに接続される。従って、出力レジスタ780に設定される識別情報は同じであり、セレクタ720は、セレクタ730のデータ出力線をデータ入出力端子群0−31だけに接続する。
なお、2以上の転送エンジン30と2以上の検索エンジン40とが接続されている場合には、各検索エンジン40にいくつの転送エンジン30が接続されるかに応じて、モードレジスタには“モードY”または“モードZ”が設定される。
上述した通り、接続部70は、転送エンジン30と検索エンジン40との接続状態に従って、転送エンジン30に接続されたデータ入出力端子群からデータを出力することができる。また、接続部70は、データ入出力端子群の端子数に対応した幅のデータを出力することができる。
図7は、検索エンジン40が使用するルーティングテーブルのフォーマットである。
ルーティングテーブルには、例えば、1つ以上のIPアドレスと、各IPアドレスに対応付けられた出力スイッチエンジン番号、出力転送エンジン番号、出力回線番号等の出力方路情報が格納されている。
ここで、各ルーティングプロセッサ内の各々の転送エンジン30、検索エンジン40、スイッチエンジン50には、ネットワーク中継装置内または各ルーティングプロセッサ内で一意に定められた識別番号が割り当てられている。また、それぞれ回線と接続される各転送エンジン30のそれぞれのポートにも、ネットワーク中継装置内またはルーティングプロセッサ内または転送エンジン毎に一意に定められた識別番号が割り当てられている。従って、ルーティングテーブルに格納される出力スイッチエンジン番号、出力転送エンジン番号及び出力回線番号は、パケットの送信先となるスイッチエンジン、転送エンジン及び回線に割り当てられた識別番号を示す。なお、それぞれのエンジンや回線を識別するために、識別番号以外の任意の情報が用いられてもよい。
上述した通り、ルーティングプロセッサにおいては、スイッチエンジン50に対して複数の転送エンジン30が接続可能である。そのため、スイッチエンジン50がどの転送エンジンにパケットを転送すべきか識別できるように、出力方路情報に出力転送エンジン番号が含まれている。また、ルーティングテーブルにIPアドレス以外のアドレス、例えば、MACアドレス等が格納されていてもよい。
図8は、出力方路情報が付加されたパケットのフォーマットを示す。図8において、パケットは、パケットヘッダとペイロード(データ)を含む受信パケットと、検索エンジン40により抽出された出力方路情報を含む。
例えば、スイッチエンジン50は、転送エンジン30から受信パケットと出力方路情報を受け取り、図8に示されたフォーマットのパケットを作成し、スイッチ10に出力する。また、転送エンジン30が、検索エンジン40から受け取った出力方路情報と、バケットバッファから読み出した受信パケットとから図8に示されたフォーマットのパケットを作成し、スイッチエンジン50に転送してもよい。
図9は、ネットワーク中継装置内でのパケットの転送例を示す。図9においては、ネットワーク中継装置は、検索エンジン40と転送エンジン30が1対1又は1対多で接続された複数のルーティングプロセッサ250、260、270を有する。各ルーティングプロセッサのそれぞれのスイッチエンジン50、検索エンジン40、転送エンジン30には、予め識別番号が割り当てられている。なお、図9に示した例では、各検索エンジン40と各スイッチエンジン50には#0から始まる通し番号が割り当てられている。また、各転送エンジン30には、ルーティングプロセッサ毎に#0から始まる通し番号が割り当てられている。なお、1つの検索エンジン40に接続される転送エンジン群毎に各転送エンジンに通し番号が割り当てられていてもよい。さらに、それぞれ回線と接続される各転送エンジン30の各ポートにも、識別番号が割り当てられている。図9では、各エンジンの接続状態は省略されているが、図1と同様に、各転送エンジン30は、検索エンジン40及びスイッチエンジン50と接続され、スイッチ10は、各ルーティングプロセッサの各スイッチエンジン50と接続されている。
図10は、ネットワーク中継装置のシーケンス図を示す。このシーケンス図は、図9に示したルーティングプロセッサ250の転送エンジン#0がパケットを受信し、ルーティングプロセッサ270の転送エンジン#3からパケットを送信する場合の動作を示している。図9及び図10を用いて以下に動作の概要を説明する。なお、検索エンジン#0が使用するルーティングテーブルには、図7に示した出力方路情報が格納されているとする。
まず、ルーティングプロセッサ250の転送エンジン#0は、回線からパケットを受信する。この受信パケットのパケットヘッダは宛先IPアドレスとして“192.168.0.1”を含む。転送エンジン#0は受信パケットからパケットヘッダを抽出し、検索エンジン#0へ送信する。転送エンジン#0は、パケットを受信した入力回線番号及び入力転送エンジン番号を検索エンジン#0に送信してもよい。また、転送エンジン#0は、受信したパケットをパケットバッファに格納する。
パケットヘッダを受信した検索エンジン#0は、パケットヘッダの宛先IPアドレス“192.168.0.1”を検索キーとしてルーティングテーブルを検索する。図7に示すルーティングテーブルには宛先IPアドレスと同じIPアドレスが登録されているため、検索エンジン#0は、このIPアドレスに対応付けられた出力スイッチエンジン番号“2”、出力転送エンジン番号“3”、出力回線番号“4”、等の出力方路情報を抽出する。検索エンジン#0は、取得した出力方路情報を転送エンジン#0に送信する。また、検索エンジン#0は、転送エンジン#0から入力回線番号及び入力転送エンジン番号を受信し、これらの情報に基づいてフィルタリング又はQoSに関する処理を行ってもよい。
転送エンジン#0は、検索エンジン#0から出力方路情報を受け取ると、パケットバッファに格納した受信パケットにその出力方路情報を付加して、図8に示したフォーマットのパケットを生成し、スイッチエンジン#0へ送信する。スイッチエンジン#0は、パケットを受信すると出力方路情報を参照し、出力方路情報に含まれる出力スイッチエンジン番号“2”に従ってスイッチ10にパケットを転送する。
同様に、スイッチ10のスイッチエンジンは、パケットを受け取ると出力方路情報を参照し、出力方路情報に含まれた出力スイッチエンジン番号“2”に従って、ルーティングプロセッサ270のスイッチエンジン#2にパケットを送信する。
スイッチエンジン#2はパケットを受け取ると、出力方路情報を参照し、出力方路情報に含まれた出力転送エンジン番号“3”に従い、パケットを転送エンジン#3に転送する。
転送エンジン#3は、パケットを受信するとパケットバッファに格納し、また、パケットから出力方路情報とパケットヘッダを抽出し、検索エンジン#2に送信する。
検索エンジン#2は、受信した出力方路情報とパケットヘッダを用いて、例えば、フィルタリング、遅延優先制御、QoSに関する処理を行う。なお、検索エンジン#2によるフィルタリング、遅延優先制御、QoS等に関する処理は省略されてもよい。また、検索エンジン#2は、例えば、受信した出力方路情報に含まれた出力回線番号“4”を転送エンジン#3に送信する。検索エンジン#2は、出力回線番号以外の適宜のデータを転送エンジン#3に送信してもよい。
転送エンジン#3は、パケットから出力方路情報を取り除き、検索エンジン#2又はスイッチエンジン#2から受信した出力回線番号“4”に対応するポートからそのパケットを回線に出力する。
なお、上述の例では、ルーティングプロセッサ250の転送エンジン#0がパケットを受信した場合について説明したが、他の転送エンジンがパケットを受信した場合も、同様の動作によりパケットが中継される。また、図1に示したタイプCのルーティングプロセッサ230を有するネットワーク中継装置では、ルーティングプロセッサ内の複数の検索エンジン40及びスイッチエンジン50のうち、現用系として動作する検索エンジン40及びスイッチエンジン50が予め設定される。そして、現用系として設定された検索エンジン40及びスイッチエンジン50が上述と同様に動作することにより、パケットが中継される。
ところで、転送エンジン30と検索エンジン40との間、及び、転送エンジン30とスイッチエンジン50との間は、同時双方向伝送インタフェース(以下、SBTL(Simultaneous Bi-directional Transfer Logic)を用いて接続することもできる。SBTLは、物理的に1本の信号線で双方向の通信を可能にする技術である。
図11は、SBTLの概念図を示す。図11において、転送エンジンと検索エンジンがSBTLを用いて接続されている。
双方から“0”又は“1”の値の信号が信号線に送信されると、信号線を流れる信号は、図11に示すように、それらの信号の値に応じてHigh、Middle、Lowのいずれかのレベルとなる。例えば、両者の信号が共に“1”ならば、信号線の信号はHighレベルの信号となる。片方の信号のみ“1”ならば、信号線の信号はMiddleレベルの信号、両者の信号がともに“0”ならば、Lowレベルの信号となる。SBTLを用いて転送エンジンまたは検索エンジンが信号を受信する場合、各エンジンは、自分の出力している信号の値と信号線から受信した信号のレベルから相手が送信した信号の値を判断する。例えば、転送エンジンが“1”の信号を出力している場合、転送エンジンが受信した信号がHighレベルの信号であれば検索エンジンが送信した信号は“1”と判断される。また、転送エンジンが“1”の信号を出力した場合であって、転送エンジンが受信した信号がMiddleレベルの信号の場合、検索エンジン40が送信した信号は“0”であると判断できる。転送エンジンが“0”の信号を出力している場合も同様である。相手の信号の値を判断するために、転送エンジン及び検索エンジンは予め設定した閾値(Threshold Level)用いる。各エンジンは、自分の出力している信号の値に応じて、その閾値を変えて信号を受信する。例えば、転送エンジンが“1”の信号を出力している場合、閾値をMiddleレベルとHighレベルの中間に設定することで、Middleレベルの信号は“0”、Highレベルの信号は“1”の値の信号として受信できる。
転送エンジン30と検索エンジン40との間では、パケットヘッダ及び出力方路情報の送受信を行うため、頻繁(パケットバイパケット)に双方向の通信が発生する。転送エンジン30と検索エンジン40との間をSBTLを用いて接続することにより、パケットヘッダ及び出力方路情報を効率的に送受信することができる。また、転送エンジン30と検索エンジン40とを1対多、多対1、または多対多で接続する場合、上述した通り、送受信できるデータの幅は減少するが、SBTLを用いて双方向で信号を送受信することにより、この影響を軽減できる。
以上説明した通り、同じ構成の転送エンジン30及び検索エンジン40とを、1対1、多対1、1対多、または多対多で接続することが可能である。なお、以上の説明では転送エンジン30と検索エンジン40が1対1、1対2、2対1、1対4または4対1で接続される場合について説明したが、これ以外の組み合わせにより両者が接続されても構わない。また、スイッチエンジン50は、検索エンジン40の接続部70と同じの接続部を備えることができる。