【実施例1】
【0013】
<ネットワーク構成例>
図1は、実施例1にかかるネットワーク構成例を示す説明図である。複数の転送装置100の各々は、1以上の他の転送装置100と接続され、レイヤ2、レイヤ3、MPLS(Multi−Protocol Label Switching)といった第1ネットワーク101を構成する。また、各転送装置100は、管理用の第2ネットワーク102を介して、管理サーバ103にも接続される。
【0014】
<転送装置100のハードウェア構成例>
図2は、実施例1にかかる転送装置100のハードウェア構成例を示すブロック図である。転送装置100は、基本制御機構201と、再構成可能通信モジュール202と、クロスバースイッチ203と、を有する。再構成可能通信モジュール202が1個であれば、クロスバースイッチ203は不要である。
【0015】
基本制御機構201は、再構成可能通信モジュール202の設定や各種テーブルの学習をおこない、再構成可能通信モジュール202を再構成する制御部である。たとえば、新たにヘッダフォーマットが出現した場合、当該ヘッダフォーマットで転送可能となるように、再構成可能通信モジュール202を再構成する。再構成可能通信モジュール202は、通信データの宛先を検索して、転送先の転送装置100を決定して転送する。
【0016】
再構成可能通信モジュール202は、新たにヘッダフォーマットが出現した場合、基本制御機構201からの制御により、当該ヘッダフォーマットで転送可能となるように再構成する。
【0017】
クロスバースイッチ203は、再構成可能通信モジュール202が複数搭載される場合、ある再構成可能通信モジュール202から他の再構成可能通信モジュール202へ通信データを転送するための通信経路である。再構成可能通信モジュール202が複数個存在する場合、一つの再構成可能通信モジュール202内で通信データを折り返して転送する場合と、複数の再構成可能通信モジュール202間で通信データを転送する場合が有り得る。
【0018】
<再構成可能通信モジュール202の構成例>
図3および
図4は、実施例1にかかる再構成可能通信モジュール202の構成例を示すブロック図である。特に、
図3は、転送LSI(Large−Scale Integration)301の構成例を示し、
図4は、検索制御FPGA(Field−Programmable Gate Array)の構成例を示す。
【0019】
図3および
図4において、再構成可能通信モジュール202は、転送LSI301と、検索制御FPGA302と、検索LSI303と、スイッチインタフェース(スイッチIF)304と、を有する。転送LSI301は、他の転送装置100、または、自転送装置100内の他の再構成可能通信モジュール202から入力された通信データを、転送先の転送装置100に転送する。転送LSI301の詳細は後述する。
【0020】
検索制御FPGA302は、ソフトウェアまたはFPGAのように再構成可能なモジュールである。検索制御FPGA302は、通信データのヘッダフォーマットに応じた検索手段を決定し、検索LSI303にヘッダを出力して通信データの転送先を検索させる。検索制御FPGA302の詳細は、
図4で説明する。
【0021】
検索LSI303は、複数のヘッダフォーマットに対応した検索を実行する。検索LSI303は、検索の高速化実現のため再構成不能なハードウェアである。ただし、新規なヘッダフォーマットが出現した場合に、当該新規なヘッダフォーマットによる検索に対応するため、検索LSI303内の回路を1または複数段組み合わせることにより、当該新規なヘッダフォーマットによる検索が実行可能となる。検索LSI303の詳細は、
図5〜
図7で説明する。
【0022】
スイッチIF304は、クロスバースイッチ203から入力されてきた通信データを転送LSI301に出力するインタフェースである。
【0023】
ここで、転送LSI301について具体的に説明する。転送LSI301は、入力ポート310と、発行部311と、抽出部312と、保持部313と、出力部314と、入力部315と、更新部316と、ポート番号テーブル317と、ポート検索部318と、出力ポート319と、を有する。
【0024】
入力ポート310は、他の転送装置100から通信データの入力を受け付けるポートである。
【0025】
発行部311は、入力ポート310に入力された通信データごとに、通信データの到着順を示すシーケンス番号を発行する。シーケンス番号は、検索制御FPGA302が検索LSI303に検索指定を行った順に検索結果を整列し直すために用いられる。
【0026】
抽出部312は、通信データからヘッダを抽出する。抽出するヘッダの長さは、ヘッダのフォーマットに依存せずに通信データの先頭から固定の長さとする。或いは、特定の既知のフォーマットの場合、転送先の検索に必要な長さとし、その他のフォーマットの場合、ある特定の固定の長さとしても良い。抽出部312は、抽出したヘッダおよび発行部311で発行されたシーケンス番号を、ヘッダ情報として出力部314に出力する。また、抽出部312は、通信データおよび発行部311で発行されたシーケンス番号を、保持部313に出力する。
【0027】
保持部313は、通信データとシーケンス番号との組み合わせを保持する記憶デバイスである。
【0028】
出力部314は、ヘッダとシーケンス番号との組み合わせであるヘッダ情報を検索制御FPGA302に出力する。
【0029】
入力部315は、検索制御FPGA302を介して検索LSI303からの検索結果を受け付ける。検索結果は、ヘッダのフォーマットに応じた宛先情報と、出力部314から出力されたシーケンス番号とを含む。たとえば、IP(Internet Protocol)の場合、検索結果は、宛先IPアドレスと、送信ポート番号と、宛先MAC(Media Access Control)アドレスと、を含む。また、MPLSの場合、検索結果は、Out Shim Labelと、送信ポート番号と、宛先MAC(Media Access Control)アドレスと、を含む。また、イーサネット(イーサネットは登録商標、以下同じ)の場合、検索結果は、宛先MACアドレスに送信するための送信ポート番号を含む。
【0030】
更新部316は、検索結果に含まれるシーケンス番号に一致するシーケンス番号に対応する通信データを保持部313から特定する。更新部316は、特定した通信データのヘッダを、検索結果を用いて更新する。たとえば、IPの場合、更新部316は、送信ポート番号と、宛先MACアドレスと、を更新する。また、MPLSの場合、更新部316は、Out Shim Labelと、送信ポート番号と、宛先MACアドレスと、を更新する。また、イーサネットの場合、更新部316は、宛先MACアドレスに送信するための送信ポート番号を更新する。上記、更新するヘッダフィールドの位置及び長さは、検索制御FPGA302から入力部315を経由して指示される。
【0031】
ポート番号テーブル317は、ポート番号が属する再構成可能通信モジュール202を特定するテーブルである。具体的には、たとえば、ポート番号テーブル317は、ポート番号371とモジュールID372とを関連付けたテーブルである。ポート番号371は、モジュールID372で特定される再構成可能通信モジュール202内のポートを一意に特定する識別情報である。モジュールID372は、再構成可能通信モジュール202を一意に特定する識別情報である。
【0032】
ポート検索部318は、ポート番号テーブル317を参照して、更新部316で更新されたポート番号371に対応するモジュールID372を特定する。また、ポート検索部318は、搭載されている再構成可能通信モジュール202のモジュールID372を保持する。当該保持するモジュールID372と、ポート番号テーブル317から特定されたモジュールID372とが一致する場合、ポート検索部318は、更新部316による更新後の通信データを、ポート番号371で特定される出力ポート319に出力する。
【0033】
当該保持するモジュールID372と、ポート番号テーブル317から特定されたモジュールID372とが一致しない場合、ポート検索部318は、ポート番号テーブル317から特定されたモジュールID372の再構成可能通信モジュール202に出力するようスイッチIF304に通信データを出力する。これにより、スイッチIF304は、ポート番号テーブル317から特定されたモジュールID372の再構成可能通信モジュール202に出力する経路をクロスバースイッチ203の経路群から選択して、選択した経路に通信データを出力する。
【0034】
出力ポート319は、ポート検索部318またはスイッチIF304から入力されてきた通信データを、転送先の転送装置100に送信する。
【0035】
つぎに、
図4を用いて、検索制御FPGA302の詳細な構成について説明する。検索制御FPGA302は、判定部401と、作成部402と、整列部403と、を有する。判定部401は、転送LSI301からのヘッダ情報に含まれるヘッダのフォーマットに基づいて、検索対象ヘッダフォーマットを判定する。具体的には、たとえば、判定部401は、イーサネットヘッダのタイプフィールドを参照して、検索対象ヘッダフォーマットがIPであるか、MPLSであるか、イーサネットであるかを判定する。たとえば、検索対象ヘッダフォーマットは、タイプフィールドの値により判定される。
【0036】
作成部402は、判定部401によって判定された検索対象ヘッダフォーマットに応じた検索手段指定情報を作成し、検索キー情報と検索手段指定情報とを含む検索指定情報を検索LSI303に出力する。
【0037】
検索キー情報とは、転送LSI301からのヘッダのヘッダフォーマットで特定される検索キーと転送LSI301からのシーケンス番号との組み合わせである。検索キーとは、ヘッダ内の宛先に関するフィールドである。したがって、検索キーは、検索対象フォーマットによりヘッダ内の位置およびビット幅が異なる。
【0038】
たとえば、検索対象ヘッダフォーマットがIPである場合、検索キーは、IPヘッダに含まれる宛先IPアドレスである。検索対象ヘッダフォーマットがMPLSである場合、検索キーは、MPLSヘッダに含まれるIn Shim Labelである。検索対象ヘッダフォーマットがイーサネットである場合、検索キーは、イーサネットヘッダに含まれる宛先MACアドレスである。
【0039】
検索手段は、検索LSI303で製造時または出荷後の再構成により構成されている検索処理に必要な1段以上の検索リソースである。検索リソースは、テーブルと検索回路との組み合わせである。たとえば、検索対象ヘッダフォーマットがIPである場合、検索手段を構成する検索回路群は、TCAM(Ternary CAM)検索回路(1段目)とハッシュ検索回路(2段目)である。検索対象ヘッダフォーマットがMPLSである場合、検索手段を構成する検索回路群は、テーブル引き検索回路(1段目)とハッシュ検索回路(2段目)である。検索対象ヘッダフォーマットがイーサネットである場合、検索手段を構成する検索回路群は、ハッシュ検索回路(1段目のみ)である。
【0040】
整列部403は、検索LSI303からの検索結果を受け付け、検索結果に含まれるシーケンス番号順に検索結果を整列させる。整列部403は、検索結果からシーケンス番号を除いた転送先情報を整列順に転送LSI301へ出力する。
【0041】
なお、発行部311が発行するシーケンス番号のbit幅を、たとえば、10bitとする。このbit数は検索LSI303内で検索仕掛かり中の通信データ数の最大値より多くの数を特定できるbit数とする。たとえば、検索LSI303内での検索仕掛かり中の通信データ数が1024(2の10乗)個より少ない場合、シーケンス番号のbit幅を10bit以上とする。これにより、検索LSI303内での検索仕掛かり中の全通信データの順番を特定することができる。
【0042】
<検索LSI303の構成例>
図5〜
図8は、実施例1にかかる検索LSI303の構成例を示す説明図である。
図5では、検索LSI303が有する検索リソースプール500に着目して説明する。検索LSI303は、検索リソースプール500を有する。検索リソースプール500とは、検索リソースの集合である。検索リソースとは、検索回路と当該検索回路がアクセス可能なテーブルを格納する記憶デバイス(たとえば、RAM)との組み合わせである。
【0043】
TCAM検索リソース501(501−1,501−2、…を総称)は、検索対象ヘッダフォーマットがIPである場合に採用される検索手段の構成要素である。TCAM検索リソース501は、TCAM検索回路511(511−1,511−2、…を総称)と当該TCAM検索回路511がアクセス可能なTCAMに格納されたルーティングテーブル521(521−1,521−2、…を総称)との組み合わせである。TCAM検索回路511は、ルーティングテーブル521を最長一致検索する。ルーティングテーブル521は、事前に基本制御機構201で学習されたテーブルである。ルーティングテーブル521は、検索キーである宛先IPアドレスに、当該宛先IPアドレスに通信データを送信するための送信ポート番号とNext Hop IPとを関連付けたテーブルである。Next Hop IPは、転送先の転送装置100のIPアドレスである。
【0044】
TCAM検索リソース501は、1または複数個構築される。TCAM検索リソース501は、具体的には、たとえば、検索キーである宛先IPアドレスのビット幅ごとに構築される。たとえば、検索対象ヘッダフォーマットがIPv4である場合、宛先IPアドレスのビット幅は32bitである。したがって、第1TCAM検索リソース501−1のTCAM検索回路511−1は、32bitのビット幅での最長一致検索回路であり、第1ルーティングテーブル521−1の検索キーのビット幅は、32bitとなる。同様に、検索対象ヘッダフォーマットがIPv6である場合、宛先IPアドレスのビット幅は128bitである。したがって、第2TCAM検索リソース501−2のTCAM検索回路511−2は、128bitのビット幅での最長一致検索回路であり、第2ルーティングテーブル521−2の検索キーのビット幅は、128bitとなる。なお、将来、新規に出現するIPvx(xは、バージョン番号)に備えて、たとえば、256bitや512bitの未使用のTCAM検索リソース501を搭載しておく。
【0045】
TCAM検索回路511による最長一致検索では、検索キーのホストアドレスはドントケアとなるため、ルーティングテーブル521のエントリ数は、テーブル引きのような2の32乗ではなく、経路数に減少される。したがって、テーブル引きに比べて省メモリ化を図ることができる。また、これにより、未使用のTCAM検索リソース501を搭載するためのメモリ空間を確保することもできる。
【0046】
テーブル引き検索リソース502(502−1,502−2、…を総称)は、検索対象ヘッダフォーマットがMPLSである場合に採用される検索手段の構成要素である。テーブル引き検索リソース502は、テーブル引き検索回路512(512−1,512−2、…を総称)と当該テーブル引き検索回路512がアクセス可能なRAMに格納されたラベルテーブル522(522−1,522−2、…を総称)との組み合わせである。テーブル引き検索回路512は、ラベルテーブル522を検索する。ラベルテーブル522は、事前に基本制御機構201で学習されたテーブルである。ラベルテーブル522は、検索キーであるIn Shim Labelに、Out Shim Labelと送信ポート番号とNext Hop IPとを関連付けたテーブルである。
【0047】
テーブル引き検索リソース502は、1または複数個構築される。テーブル引き検索リソース502は、具体的には、たとえば、TCAM検索リソース501と同様、検索キーのビット幅ごとに構築される。なお、将来、新規に出現するフォーマットに備えて、たとえば、検索キーのビット幅が21bit以上31bit以下の未使用のテーブル引き検索リソース502を搭載しておく。これにより、32bitのビット幅の検索キーを用いるテーブル引きによる検索よりも、省メモリ化を図ることができる。また、これにより、未使用のテーブル引き検索リソース502(MPLSに限られない)を搭載するためのメモリ空間を確保することもできる。
【0048】
ハッシュ検索リソース503(503−1,503−2、…を総称)は、検索対象ヘッダフォーマットがIP、MPLS、およびイーサネットである場合に採用される検索手段の構成要素である。ハッシュ検索リソース503は、ハッシュ検索回路513(513−1,513−2、…を総称)と当該ハッシュ検索回路513がアクセス可能なRAMに格納されたハッシュテーブル523(523−1,523−2、…を総称)との組み合わせである。ハッシュ検索回路513は、ハッシュ関数により検索キーである宛先MACアドレスをハッシュ値に変換し、ハッシュ値でハッシュテーブル523を検索する。ハッシュテーブル523は、事前に基本制御機構201で設定されたテーブルである。ハッシュテーブル523は、ハッシュ値に、送信ポート番号を関連付けたテーブルである。
【0049】
ハッシュ検索リソース503は、1または複数個構築される。ハッシュ検索リソース503は、具体的には、たとえば、TCAM検索リソース501と同様、ハッシュ値のビット幅ごとに構築される。なお、将来、新規に出現するフォーマットに備えて、たとえば、ビット幅が9bit以上47bit以下の未使用のハッシュ検索リソース503を搭載しておく。これにより、ハッシュ値を用いずに48bitの宛先MACアドレスをそのまま用いるテーブル引きによる検索よりも、省メモリ化を図ることができる。また、これにより、未使用のハッシュ検索リソース503を搭載するためのメモリ空間を確保することもできる。
【0050】
図6は、実施例1にかかるテーブルのデータ構造例を示す説明図である。(A)は、ルーティングテーブル521である。ルーティングテーブル521は、TCAM検索回路511がアクセスするTCAMに格納されるテーブルである。ルーティングテーブル521は、基本制御機構201により、宛先IPアドレス611に対応する送信ポート番号612およびNext Hop IP613が学習されたテーブルである。宛先IPアドレス611がキー項目の値、すなわち、検索キーとなる。
【0051】
(B)は、ラベルテーブル522である。ラベルテーブル522は、テーブル引き検索回路512がアクセスするRAMに格納されるテーブルである。ラベルテーブル522は、基本制御機構201により、In Shim Label621に対応するOut Shim Label622、送信ポート番号623およびNext Hop IP624が学習されたテーブルである。In Shim Label621がキー項目の値、すなわち、検索キーとなる。
【0052】
(C)は、ハッシュテーブル523である。ハッシュテーブル523は、ハッシュ検索回路513がアクセスするRAMに格納されるテーブルである。ハッシュテーブル523は、基本制御機構201により、ハッシュ値631に対応する宛先MACアドレス632が設定されたテーブルである。ハッシュ値631がキー項目の値、すなわち、検索キーとなる。
【0053】
図7は、実施例1にかかる検索LSI303のハードウェア構成例を示す。検索LSI303は、選択回路700(700−1,700−2、…を総称)と、TCAM検索回路511と、テーブル引き検索回路512と、ハッシュ検索回路513と、を有するユニットを宛先IPアドレスのビット幅および宛先MACアドレスのビット幅の組み合わせごとに有する。なお、
図7では、各検索回路がアクセス可能な記憶デバイスは省略されている。各ユニットにおいて、縦に配列するTCAM検索回路511、テーブル引き検索回路512、およびハッシュ検索回路513を第i(1≦i≦n)段の検索回路群と称す。第i段の検索回路群の前段の選択回路700を第i段(1≦i≦n+1)の選択回路700と称す。検索LSI303は、基本制御機構201からの設定にしたがって、選択回路700により、検索回路群の段数や、第i段の検索回路群において使用される検索回路を選択する。なお、第i+1段の選択回路700は、第i段の検索回路群の出力を選択する回路でもある。
【0054】
図8は、実施例1にかかる検索対象ヘッダフォーマットごとに検索LSI303に構築された検索手段を示す。IP検索手段801は、検索対象ヘッダフォーマットがIPv4である場合の検索手段である。なお、IPv4とIPv6では、宛先IPアドレスのビット幅が異なるため、異なるIP検索手段801となる。ここでは、例として、IP over Ethernetを想定する。IP検索手段801は、1段目が第1TCAM検索リソース501−1、2段目が第1ハッシュ検索リソース503−1である検索手段である。IP検索手段801は、検索制御FPGA302から宛先IPアドレスを取得して、第1TCAM検索リソース501−1を用いて送信ポート番号とNext Hop IPとを取得する。IP検索手段801は、送信ポート番号を検索結果として検索制御FPGA302に返し、Next Hop IPを第1ハッシュ検索リソース503−1に出力する。IP検索手段801は、第1ハッシュ検索リソース503−1を用いて、Next Hop IPをハッシュ値に変換して、ハッシュテーブル523から宛先MACアドレスを取得し、検索結果として検索制御FPGA302に返す。
【0055】
MPLS検索手段802は、検索対象ヘッダフォーマットがMPLSである場合の検索手段である。ここでは、例として、MPLS over Ethernetを想定する。MPLS検索手段802は、1段目が第1テーブル引き検索リソース502−1、2段目が第1ハッシュ検索リソース503−1である検索手段である。MPLS検索手段802は、検索制御FPGA302からIn Shim Labelを取得して、第1テーブル引き検索リソース502−1を用いてOut Shim Labelと送信ポート番号とNext Hop IPとを取得する。MPLS検索手段802は、Out Shim Labelと送信ポート番号を検索結果として検索制御FPGA302に返し、Next Hop IPを第1ハッシュ検索リソース503−1に出力する。MPLS検索手段802は、第1ハッシュ検索リソース503−1を用いて、Next Hop IPをハッシュ値に変換して、ハッシュテーブル523から宛先MACアドレスを取得し、検索結果として検索制御FPGA302に返す。
【0056】
イーサネット検索手段803は、検索対象ヘッダフォーマットがイーサネットである場合の検索手段である。ここでは、例として、レイヤ2中継を想定しており、レイヤ3以上のヘッダフォーマットは検索結果に影響しない。イーサネット検索手段803は、1段目が第2ハッシュ検索リソース503−2である検索手段である。イーサネット検索手段803は、検索制御FPGA302から宛先MACアドレスを取得して、第2ハッシュ検索リソース503−2を用いて送信ポート番号を取得する。イーサネット検索手段803は、送信ポート番号を検索結果として検索制御FPGA302に返す。
【0057】
<検索指定情報>
図9〜
図11は、実施例1にかかる検索指定情報の一例を示す説明図である。
図9は、IPv4におけるIP検索指定情報900を示し、
図10は、MPLS検索指定情報1000を示し、
図11は、イーサネット検索指定情報1100を示す。以下の説明では、bit位置の数え方として最下位ビットを0bit目とし、上位側に向かって増加するように数えるものとして説明する。また、検索LSI303は、上述したように、汎用的な検索リソースプール500から構成されており、検索キーとして使用するフィールド、および、検索結果として得られるフィールドに具体的に何が入っているかは感知しない。
【0058】
図9において、IP検索指定情報900は、IP検索キー情報901と、IP検索手段指定情報902と、を含む。IP検索キー情報901は、検索キーとなる宛先IPアドレスのヘッダフィールド(32bit)と、シーケンス番号(10bit)とを含む。IP検索手段指定情報902は、IP検索手段801を指定する情報である。IP検索手段801は、
図8に示したように、1段目が第1TCAM検索リソース501−1であり、2段目が第1ハッシュ検索リソース503−1である。1段目の第1TCAM検索リソース501−1における検索キーは、32bitの宛先IPアドレスのヘッダフィールド(31〜0bit目)である。当該検索キーを用いた第1TCAM検索リソース501−1の検索結果は、40bitのビット列である。当該ビット列の31〜0bit目がNext Hop IPであり、39〜32bit目が送信ポート番号である。
【0059】
2段目の第1ハッシュ検索リソース503−1における検索キーは、1段目の検索結果の31〜0bit目のビット列、すなわち、Next Hop IPである。当該検索キーを用いた第1ハッシュ検索リソース503−1の検索結果は、48bitの宛先MACアドレスである。
【0060】
図10において、MPLS検索指定情報1000は、MPLS検索キー情報1001と、MPLS検索手段指定情報1002と、を含む。MPLS検索キー情報1001は、検索キーとなるIn Shim Labelのヘッダフィールド(20bit)と、シーケンス番号(10bit)とを含む。MPLS検索手段指定情報1002は、
図8に示したように、1段目が第1テーブル引き検索リソース502−1であり、2段目が第1ハッシュ検索リソース503−1である。1段目の第1テーブル引き検索リソース502−1における検索キーは、20bitのIn Shim Labelのヘッダフィールド(19〜0bit目)である。当該検索キーを用いた第1テーブル引き検索リソース502−1の検索結果は、60bitのビット列である。当該ビット列の31〜0bit目がNext Hop IPであり、39〜32bit目が送信ポート番号であり、59〜40bit目がOut Shim Labelである。
【0061】
2段目の第1ハッシュ検索リソース503−1における検索キーは、1段目の検索結果の31〜0bit目のビット列、すなわち、Next Hop IPである。当該検索キーを用いた第1ハッシュ検索リソース503−1の検索結果は、48bitの宛先MACアドレスである。
【0062】
図11において、イーサネット検索指定情報1100は、イーサネット検索キー情報1101と、イーサネット検索手段指定情報1102と、を含む。イーサネット検索キー情報1101は、検索キーとなる宛先MACアドレスのヘッダフィールド(48bit)と、シーケンス番号(10bit)とを含む。イーサネット検索手段指定情報1102は、
図8に示したように、1段目のみの第2ハッシュ検索リソース503−2である。第2ハッシュ検索リソース503−2における検索キーは、48bitの宛先MACアドレスのヘッダフィールド(47〜0bit目)である。当該検索キーを用いた第2ハッシュ検索リソース503−2の検索結果は、8bitのビット列である。当該ビット列の7〜0bit目が送信ポート番号である。
【0063】
<基本制御機構201の構成例>
図12は、実施例1にかかる基本制御機構201の構成例を示すブロック図である。基本制御機構201は、LSIで構成されてもよく、再構成可能なFPGAやソフトウェアにより構成されてもよい。基本制御機構201は、管理用IF1201と、設定部1202と、学習部1203と、を有する。管理用IF1201は、管理サーバ103からアップデート情報を取得する。設定部1202は、未使用のテーブル1204を用いてハッシュテーブル523を設定したり、検索LSI303に検索手段を構築する。学習部1203は、未使用のテーブル1205を用いて経路を学習し、学習結果を保持するルーティングテーブル521を生成する。また、基本制御機構201は、アップデート情報を検索制御FPGA302にも出力し、検索制御FPGA302内の判定部401および作成部402を更新する。
【0064】
アップデート情報とは、製品出荷後に新たに出現したヘッダフォーマットでの転送を実現するために転送装置100の再構成に必要な情報である。具体的には、たとえば、既存のヘッダフォーマットの新バージョン、たとえば、新バージョンのIPヘッダフォーマットの場合、アップデート情報は、宛先IPアドレスのヘッダフィールドのビット幅と、新バージョンのビット幅に対応するIP検索手段801の構成要素と、を含む。
【0065】
基本制御機構201は、このアップデート情報を管理用IF1201で取得すると、学習部1203により、新バージョンのIPヘッダフォーマットでの宛先IPアドレスのヘッダフィールドのビット幅に応じた未使用のテーブルを選択して、宛先IPアドレス、送信ポート番号、およびNext Hop IPを学習し、ルーティングテーブル521を作成する。
【0066】
また、基本制御機構201は、設定部1202により、アップデート情報に含まれるIP検索手段801の構成要素を設定する。具体的には、設定部1202は、選択回路700を制御して、検索キーのビット幅で制御可能なTCAM検索回路511、テーブル引き検索回路512、およびハッシュ検索回路513の少なくともいずれか1つを選択して、検索LSI303内に、新バージョンのIP検索手段801を構築する。
【0067】
また、検索制御FPGA302は、判定部401を更新する。具体的には、たとえば、検索制御FPGA302は、新バージョンのIPヘッダフォーマットを有する通信データが受信された場合に、ヘッダ種の特徴により新バージョンのIPヘッダフォーマットを判定する処理を判定部401に追加する。また、検索制御FPGA302は、作成部402を更新する。具体的には、たとえば、検索制御FPGA302は、通信データのヘッダが新バージョンのIPヘッダフォーマットであると判定された場合に、新バージョンのIPヘッダフォーマットから検索キーとなるフィールドの位置およびビット幅を特定して、当該検索キーを抽出する処理と、新バージョンのIP検索手段801を選択する検索手段指定情報を作成する処理とを、作成部402に追加する。
【0068】
また、新規なヘッダフォーマットの場合、アップデート情報は、検索キーのビット幅と、検索手段の構成要素と、を含む。
【0069】
基本制御機構201は、このアップデート情報を管理用IF1201で取得すると、学習部1203により、新規なヘッダフォーマットでの検索キーのビット幅に応じた未使用のテーブル1205を選択して、検索キー、および検索キーに対応する検索結果を学習する。
【0070】
また、基本制御機構201は、設定部1202により、アップデート情報に含まれる検索手段の構成要素を設定する。具体的には、設定部1202は、選択回路700を制御して、検索キーのビット幅で制御可能なTCAM検索回路511、テーブル引き検索回路512、およびハッシュ検索回路513の少なくともいずれか1つを選択して、検索LSI303内に、新規なヘッダフォーマットの検索手段を構築する。
【0071】
また、検索制御FPGA302は、判定部401を更新する。具体的には、たとえば、検索制御FPGA302は、新規なヘッダフォーマットを有する通信データが受信された場合に、ヘッダ種の特徴により新規なヘッダフォーマットを判定する処理を判定部401に追加する。また、検索制御FPGA302は、作成部402を更新する。具体的には、たとえば、検索制御FPGA302は、通信データのヘッダが新規なヘッダフォーマットであると判定された場合に、新規なヘッダフォーマットから検索キーとなるフィールドの位置およびビット幅を特定して、当該検索キーを抽出する処理と、新規なヘッダフォーマットの検索手段を選択する検索指定情報を作成する処理と、を作成部402に追加する。
【0072】
たとえば、転送装置100がMPLSの出現前に出荷されたと仮定する。転送装置100にMPLSのヘッダフォーマットの検索処理および転送処理を実装したい場合、アップデート情報は、検索キーとなるIn Shim Labelのヘッダ内位置およびビット幅と、検索結果となるOut Shim Labelのヘッダ内位置およびビット幅、送信ポート番号のヘッダ内位置およびビット幅、および、Next Hop IPのヘッダ内位置およびビット幅と、検索手段の構成要素としてIn Shim Labelのビット幅に対応するテーブル引き検索回路512(1段目)および、Next Hop IPのビット幅のビット列をハッシュ値に変換するハッシュ検索回路513(2段目)を選択する情報と、を含む。
【0073】
基本制御機構201は、アップデート情報を管理用IF1201で受信し、テーブルを用いて、In Shim Labelに、転送先の転送装置100のラベルであるOut Shim Label、転送先の転送装置100に送信する送信ポート番号、転送先の転送装置100のIPアドレスであるNext Hop IPを関連付けて、ラベルテーブル522を作成する。
【0074】
また、基本制御機構201は、設定部1202により、アップデート情報に含まれる検索手段の構成要素を設定する。具体的には、設定部1202は、選択回路700を制御して、In Shim Labelのビット幅で制御可能なテーブル引き検索回路512(1段目)、および、Next Hop IPのビット幅のビット列をハッシュ値に変換するハッシュ検索回路513(2段目)を選択して、検索LSI303内に、MPLS検索手段802を構築する。
【0075】
また、検索制御FPGA302は、判定部401を更新する。具体的には、たとえば、検索制御FPGA302は、MPLSヘッダフォーマットを有する通信データが受信された場合に、ヘッダ種の特徴によりMPLSヘッダフォーマットを判定する処理を判定部401に追加する。また、検索制御FPGA302は、検索指定情報作成部402を更新する。具体的には、たとえば、検索制御FPGA302は、通信データのヘッダがMPLSヘッダフォーマットであると判定された場合に、MPLSヘッダフォーマットから検索キーとなるフィールドの位置およびビット幅を特定して、当該検索キーを抽出する処理と、MPLS検索手段802を選択する検索指定情報を作成する処理と、を検索指定情報作成部402に追加する。
【0076】
<検索制御処理手順例>
図13は、実施例1にかかる検索制御FPGA302による検索制御処理手順例を示すフローチャートである。検索制御FPGA302は、転送LSI301からヘッダ情報が受信された場合(ステップS1301:Yes)、ステップS1302に移行し、受信されていない場合(ステップS1301:No)、ステップS1305に移行する。
【0077】
検索制御FPGA302は、判定部401により、ヘッダ情報に含まれるヘッダのヘッダ種(第1ヘッダ種、第2ヘッダ種、第3ヘッダ種、…。以下、任意のヘッダ種を第iヘッダ種とする(i=1,2,3,…))を判定し、判定結果を作成部402に出力する(ステップS1302)。本例の場合、第1ヘッダ種がIPv4ヘッダフォーマット、第2ヘッダ種がMPLSヘッダフォーマット、第3ヘッダ種がイーサネットヘッダフォーマットである。検索制御FPGA302は、作成部402により、判定結果に応じた検索指定情報作成処理を実行する(ステップS1303)。具体的には、たとえば、第iヘッダ種に関する検索指定情報作成処理(ステップS1303−i)では、第iヘッダ種に応じた検索手段を指定する検索手段指定情報を生成するとともに、第iヘッダ種に応じた検索キーのヘッダ内位置およびビット幅と、を特定してシーケンス番号に関連付けて検索キー情報とする。これにより、検索指定情報が作成される。
【0078】
このあと、検索制御FPGA302は、検索指定情報作成処理(ステップS1303)で作成された検索指定情報を検索LSI303に出力し(ステップS1304)、ステップS1301に戻る。
【0079】
また、検索制御FPGA302は、検索LSI303からの検索結果の受信を待ち受け(ステップS1305)、検索結果が受信されていない場合(ステップS1305:No)、ステップS1301に戻る。一方、検索結果が受信された場合(ステップS1305:Yes)、検索制御FPGA302は、整列部403により、検索結果を蓄積してシーケンス番号順に並べ替え(ステップS1306)、検索結果をシーケンス番号順に転送LSI301に出力し(ステップS1307)、ステップS1301に戻る。
【0080】
なお、製品出荷後に新たなヘッダフォーマットが出現した場合、ステップS1302がアップデート情報により更新され、ステップS1303に新たなヘッダフォーマットについての検索指定情報作成処理が追加される。
【0081】
<転送LSI301による転送処理手順例>
図14は、実施例1にかかる転送LSI301による転送処理手順例を示すフローチャートである。転送LSI301は、入力ポート310から通信データが受信された場合(ステップS1401:Yes)、発行部311により、シーケンス番号を発行する(ステップS1402)。転送LSI301は、通信データおよびシーケンス番号の組を保持部313に保持する(ステップS1403)。転送LSI301は、抽出部312により、通信データからヘッダを抽出する(ステップS1404)。転送LSI301は、抽出したヘッダおよびシーケンス番号の組であるヘッダ情報を検索制御FPGA302に出力する(ステップS1405)。そして、ステップS1401に戻る。
【0082】
入力ポート310から通信データが受信されていない場合(ステップS1401:No)、転送LSI301は、スイッチIF304から通信データが受信されていれば(ステップS1406:Yes)、スイッチIF304で受信された通信データを、ヘッダ内の送信ポート番号で指定されたポートに出力する(ステップS1407)。そして、ステップS1401に戻る。
【0083】
スイッチIF304から通信データが受信されていない場合(ステップS1406:No)、検索制御FPGA302から検索結果を受信していなければ(ステップS1408:No)、ステップS1401に戻る。
【0084】
一方、検索制御FPGA302から検索結果を受信していれば(ステップS1408:Yes)、転送LSI301は、保持部313を参照して、検索結果に含まれるシーケンス番号と同一シーケンス番号に関連付けられている通信データを特定する(ステップS1409)。転送LSI301は、特定した通信データのヘッダを検索結果により更新する(ステップS1410)。更新後のヘッダの送信ポート番号が自モジュールにある場合(ステップS1411:Yes)、ステップS1407に移行して、転送LSI301は、当該通信データを、ヘッダ内の送信ポート番号で指定されたポートに出力する(ステップS1407)。そして、ステップS1401に戻る。
【0085】
一方、更新後のヘッダの送信ポート番号が自モジュールにない場合(ステップS1411:No)、転送LSI301は、当該通信データをスイッチIF304に出力する(ステップS1412)。これにより、通信データは、他の再構成可能通信モジュール202に送られる。
【0086】
このように、通信データを転送する転送装置100は、検索部の一例である検索LSI303と、検索制御部の一例である検索制御FPGA302と、制御部の一例である基本制御機構201と、転送部の一例である転送LSI301と、を有する。
【0087】
検索LSI303は、キー項目および他の項目を関連付けるテーブル(たとえば、テーブル1204,1205)とテーブルを参照して通信データのヘッダ内のフィールドであるキー項目の値から他の項目の値を検索する検索回路とにより構成される検索リソースの集合である検索リソースプール500を有する。
【0088】
検索LSI303は、検索リソースプール500において、少なくとも、通信データの第1ヘッダフォーマット(たとえば、イーサネット)にしたがってキー項目の値である通信データの第1宛先情報(たとえば、宛先MACアドレスのハッシュ値)および他の項目の値である第1転送先情報(たとえば、送信ポート番号)を関連付ける第1テーブル(たとえば、ハッシュテーブル523)と第1テーブルを参照して第1宛先情報から第1転送先情報を検索する第1検索回路(たとえば、ハッシュ検索回路513)とで構成される第1検索リソース(たとえば、ハッシュ検索リソース503)からなる第1検索手段(たとえば、イーサネット検索手段803)を有し、第1検索手段および第1宛先情報が指定されると、第1検索回路により第1テーブルを参照して第1宛先情報から第1転送先情報を検索する。
【0089】
検索制御FPGA302は、ヘッダのフォーマットにしたがって宛先情報が格納されているフィールドの位置およびサイズと、1以上の検索リソースで構成される検索手段と、を指定する検索指定情報を作成して検索LSI303に出力する再構成可能な機構である。
【0090】
検索制御FPGA302は、ヘッダのフォーマットが第1ヘッダフォーマット(たとえば、イーサネット)である場合に、第1ヘッダフォーマットにしたがって特定される第1宛先情報(たとえば、宛先MACアドレス)および第1検索手段(たとえば、イーサネット検索手段803)を指定する第1検索指定情報を作成し、検索LSI303に出力するという第1検索指定情報作成処理を実行する。
【0091】
基本制御機構201は、検索LSI303を制御して、検索リソースプール500のうち第1検索リソースを除いた残余の検索リソースにおいて、通信データの第2ヘッダフォーマット(たとえば、新規なヘッダフォーマット)にしたがってキー項目の値である第2宛先情報および他の項目の値である第2転送先情報を関連付ける第2テーブルを設定することにより、少なくとも、第2テーブルと第2テーブルを参照して第2宛先情報から第2転送先情報を検索する第2検索回路とで構成される第2検索リソースからなる第2検索手段を検索LSI303に構築する。
【0092】
また、基本制御機構201は、検索制御FPGA302を制御して、ヘッダのフォーマットが第2ヘッダフォーマットである場合に第2検索手段および第2宛先情報を指定する第2検索指定情報を作成して検索LSI303に出力するという第2検索指定情報作成処理を検索制御FPGA302に追加する。
【0093】
転送LSI301は、通信データを受信し、検索LSI303によってヘッダのフォーマットにしたがって検索された転送先情報にしたがって、通信データを転送先に送信する。
【0094】
これにより、追加したいヘッダフォーマットが出現した場合に柔軟に対応可能となる。また、検索制御FPGA302から汎用的な検索LSI303に検索手段を指示して検索を実行させることにより、高速に検索処理が実行可能となる。
【0095】
検索リソースプール500は、検索回路による検索方法が同一であるが、テーブルのキー項目のサイズが異なる複数種類の検索リソースを含む。したがって、新規バージョンのヘッダフォーマットにも柔軟に対応することができる。
【0096】
検索リソースプール500は、検索回路による検索方法が異なる複数種類の検索リソースを含む。これにより、新たなヘッダフォーマットや当該ヘッダフォーマットの検索で要求される新たな検索仕様にも柔軟に対応可能となる。
【0097】
また、検索回路は、TCAM検索回路、テーブル引き検索回路、およびハッシュ検索回路の少なくとも1つを含む。TCAM検索回路により最長一致検索を実行できるため、ルーティングテーブルの省メモリ化を図ることができる。また、テーブル引き回路により、MPLSのようなラベルテーブルのテーブル引きにも対応することができる。また、ハッシュ検索回路により、検索キーをハッシュ値に圧縮することができるため、テーブルの省メモリ化を図ることができる。なお、ハッシュ検索回路に代え、BCAM検索回路を用いてもよい。
【0098】
また、検索手段を複数段の検索リソースで構成することにより、前段の検索リソースでの検索結果を後段の検索キーに適用することができ、新規なフォーマットの検索仕様に柔軟に対応することができる。
【0099】
また、到着順に転送LSI301でシーケンス番号を発行し、転送LSI301から、検索制御FPGA302、検索LSI303、検索制御FPGA302、転送LSI301へと持ち回り、かつ、検索制御FPGA302で検索LSI303からの検索結果をシーケンス番号順に整列させて転送LSI301に出力することにより、検索結果を転送LSI301が受信した通信データに反映することができる。
【0100】
特に、発行したシーケンス番号と上記持ち回りで戻ってきたシーケンス番号とを照合することにより、検索結果を転送LSI301が受信した通信データに正確に反映することができる。
【実施例2】
【0101】
つぎに、実施例2について説明するが、実施例1との相違点を中心に説明し、実施例1との共通部分については説明を省略する。実施例2にかかる再構成可能通信モジュール202は、検索制御FPGA302と接続する転送LSI301および検索LSI303のうち少なくとも一方の個数を複数個として接続することで、転送性能および検索リソース容量を柔軟にスケールすることを可能とする。
【0102】
図15は、実施例2にかかる再構成可能通信モジュール202の構成例1を示すブロック図である。
図15では、転送LSI301の接続数を2個とした場合の例を示す。なお、転送LSI301の接続数は必ずしも2個ではなく、3個以上の接続とすることも可能である。また、1つの検索制御FPGA302に対して、同時に複数個の転送LSI301と複数個の検索LSI303を接続することも可能である。
【0103】
図15において、再構成可能通信モジュール202は、複数(
図15では例として2個)の転送LSI301a、301bと、検索制御FPGA302と、検索LSI303と、スイッチインタフェース304と、を有する。転送LSI301a、301bの識別情報をそれぞれ(A),(B)とする。検索制御FPGA302は、
図4に示した判定部401、作成部402、整列部403に加えて、選択部1501、シーケンス番号変換部1502、番号管理テーブル1503、シーケンス番号逆変換部1504、分散部1505を有する。
【0104】
選択部1501は、転送LSI301a、301bの各々から検索指定として送信されてくるヘッダ情報を選択基準にしたがって選択し、送信元転送LSIの識別情報をヘッダ情報に付与して、シーケンス番号変換部1502に出力する。ヘッダ情報とは、実施例1で説明したように、発行部311によって発行された通信データのシーケンス番号と、抽出部312によって抽出された通信データのヘッダと、の組み合わせであり、かつ、その転送LSIの識別情報も含む。
【0105】
選択部1501は、選択基準として、ヘッダ情報の到着順でヘッダ情報を選択してもよく、転送LSI301aからのヘッダ情報と転送LSI301bからのヘッダ情報を交互に選択してもよく、これまでの累積バイト数が少ない方の転送LSI301からのヘッダ情報を選択してもよい。
【0106】
シーケンス番号変換部1502は、選択部1501によって選択されたヘッダ情報に含まれているシーケンス番号を、転送LSI301a,301bの両方において連続性または相関性のある共通のシーケンス番号に変換する。
【0107】
番号管理テーブル1503は、シーケンス番号変換部1502による変換後のシーケンス番号と、シーケンス番号変換部1502による変換前のシーケンス番号と、当該変換前のシーケンス番号の送信元となる転送LSI(送信元転送LSI)の識別情報と、を対応付けて管理するテーブルである。番号管理テーブル1503は、たとえば、RAM(Random Access Memory)により実装することで、変換後のシーケンス番号をメモリアドレスとして、変換前のシーケンス番号および送信元転送LSI301の識別情報をメモリデータとして格納する。
【0108】
シーケンス番号逆変換部1504は、変換後のシーケンス番号順の検索結果を整列部403から入力する。各検索結果は、自身の変換後のシーケンス番号を含む。シーケンス番号逆変換部1504は、入力した検索結果ごとに、番号管理テーブルを参照し、変換前のシーケンス番号および送信元転送LSIの識別情報を特定する。シーケンス番号逆変換部1504は、検索結果、変換前シーケンス番号および送信元転送LSIの識別情報を分散部1505に出力する。
【0109】
分散部1505は、検索結果を送信元転送LSIの識別情報に従って分散する。具体的には、たとえば、分散部1505は、送信元LSIの識別情報で特定される転送LSIにその検索結果を変換前のシーケンス番号順に出力する。
【0110】
図16は、実施例2にかかる複数の転送LSI301から判定部401までのデータの流れを示す説明図である。ここでは、転送LSI301aからのヘッダ情報1601に含まれているシーケンス番号を、X、X+1、X+2、…とし、転送LSI301bからのヘッダ情報1602に含まれているシーケンス番号をY、Y+1、…とする。ここで、転送LSI301aおよび転送LSI301bは各々独立動作しており、各転送LSI301a,301bの発行部311が発行するシーケンス番号XおよびYの間には連続性または相関性などはない。
【0111】
選択部1501は、各転送LSI301a,301bからのヘッダ情報1601,1602のいずれかを上述した選択基準にしたがって選択して、送信元転送LSI301a,301bの識別情報を付与して、シーケンス番号変換部1502に出力する。選択部1501とシーケンス番号変換部1502との間におけるヘッダ情報1603は、各転送LSI301a,301bからのヘッダ情報1601,1602が混在した形(X、Y、X+1、…)となる。
【0112】
シーケンス番号変換部1502は、ヘッダ情報1603が入力されてくる都度、新規かつ連続的なシーケンス番号Z、Z+1、Z+2、…を発行する。具体的には、たとえば、、シーケンス番号変換部1502は、シーケンス番号Xを含むヘッダ情報1603−1が入力されると、シーケンス番号Zを発行し、その次にシーケンス番号Yを含むヘッダ情報1603−2が入力されると、シーケンス番号Z+1を発行し、その次にシーケンス番号X+1を含むヘッダ情報1603−3が入力されると、シーケンス番号Z+2を発行する。
【0113】
そして、シーケンス番号変換部1502は、順次、変換前のシーケンス番号X、Y、X+1、…を新規発行した変換後のシーケンス番号Z、Z+1、Z+2、…に付け替えて、変換後のシーケンス番号を含むヘッダ情報1604を判定部401に出力する。また、シーケンス番号変換部1502は、ヘッダ情報1603に含まれる変換前のシーケンス番号および送信元転送LSIの識別情報と、新規発行した変換後のシーケンス番号と、を関連付けて、番号管理テーブル1503に新規エントリとして登録する。
【0114】
具体的には、たとえば、シーケンス番号変換部1502は、シーケンス番号Xを含むヘッダ情報1603−1を検索指定として取得すると、シーケンス番号Zを発行して、シーケンス番号Zを含むヘッダ情報1604−1を判定部401に出力する。また、シーケンス番号変換部1502は、ヘッダ情報1603−1に含まれる変換前のシーケンス番号Xおよび送信元転送LSIの識別情報(A)と、新規発行した変換後のシーケンス番号Zと、を関連付けて、番号管理テーブル1503に新規のエントリ151として登録する。
【0115】
また、シーケンス番号変換部1502は、シーケンス番号Yを含むヘッダ情報1603−2を検索指定として取得すると、シーケンス番号Z+1を発行して、シーケンス番号Z+1を含むヘッダ情報1604−2を判定部401に出力する。また、シーケンス番号変換部1502は、ヘッダ情報1603−2に含まれる変換前のシーケンス番号Yおよび送信元転送LSIの識別情報(B)と、新規発行した変換後のシーケンス番号Z+1と、を関連付けて、番号管理テーブル1503に新規のエントリ152として登録する。
【0116】
また、シーケンス番号変換部1502は、シーケンス番号X+1を含むヘッダ情報1603−3を検索指定として取得すると、シーケンス番号Z+2を発行して、シーケンス番号Z+2を含むヘッダ情報1604−3を判定部401に出力する。また、シーケンス番号変換部1502は、ヘッダ情報1603−3に含まれる変換前のシーケンス番号X+1および送信元転送LSIの識別情報(A)と、新規発行した変換後のシーケンス番号Z+2と、を関連付けて、番号管理テーブル1503に新規のエントリ153として登録する。
【0117】
図17は、実施例2にかかる整列部403から複数の転送LSI301までのデータの流れを示す説明図である。ここでは、整列部403からの検索結果には、検索指定となるヘッダ情報に付与された変換後のシーケンス番号が含まれる。たとえば、シーケンス番号Zを含むヘッダ情報1604−1が検索指定として検索LSI303に与えられた場合、検索制御FPGA302は、変換後のシーケンス番号Zを含む検索結果1701−1、変換後のシーケンス番号Z+1を含む検索結果1701−2、変換後のシーケンス番号Z+2を含む検索結果1701−3を検索LSI303から取得して、整列部403に与える。整列部403は、変換後のシーケンス番号Z、Z+1、Z+2、…順に検索結果1701をシーケンス番号逆変換部1504に出力する。
【0118】
シーケンス番号逆変換部1504は、検索結果1701−1が入力されると、番号管理テーブル1503を参照して、検索結果1701−1に含まれる変換後のシーケンス番号Zのエントリ151を特定し、変換前のシーケンス番号Xおよび送信元の転送LSI301の識別情報(A)を取得する。
【0119】
シーケンス番号逆変換部1504は、検索結果1701−1に含まれる変換後のシーケンス番号Zを、番号管理テーブル1503から取得した変換前のシーケンス番号Xに付け替え、かつ、番号管理テーブル1503から取得した送信元転送LSIの識別情報(A)を含めて、検索結果1702−1として、分散部1505に出力する。
【0120】
シーケンス番号逆変換部1504は、検索結果1701−2が入力されると、番号管理テーブル1503を参照して、検索結果1701−2に含まれる変換後のシーケンス番号Z+1のエントリ152を特定し、変換前のシーケンス番号Yおよび送信元の転送LSI301の識別情報(B)を取得する。
【0121】
シーケンス番号逆変換部1504は、検索結果1701−2に含まれる変換後のシーケンス番号Z+1を、番号管理テーブル1503から取得した変換前のシーケンス番号Yに付け替え、かつ、番号管理テーブル1503から取得した送信元転送LSIの識別情報(B)を含めて、検索結果1702−2として、分散部1505に出力する。
【0122】
シーケンス番号逆変換部1504は、検索結果1701−3が入力されると、番号管理テーブル1503を参照して、検索結果1701−3に含まれる変換後のシーケンス番号Z+2のエントリ153を特定し、変換前のシーケンス番号X+1および送信元の転送LSI301の識別情報(A)を取得する。
【0123】
シーケンス番号逆変換部1504は、検索結果1701−3に含まれる変換後のシーケンス番号Z+2を、番号管理テーブル1503から取得した変換前のシーケンス番号X+1に付け替え、かつ、番号管理テーブル1503から取得した送信元転送LSIの識別情報(A)を含めて、検索結果1702−3として、分散部1505に出力する。
【0124】
分散部1505は、検索結果1702−1が入力されると、検索結果1702−1に含まれている送信元転送LSIの識別情報(A)により、検索結果1702−1の送信先となる転送LSI301aを特定する。そして、分散部1505は、変換前のシーケンス番号Xを含む検索結果1702−1を、検索結果1703−1として特定した送信先となる転送LSI301aに送信する。
【0125】
分散部1505は、検索結果1702−2が入力されると、検索結果1702−2に含まれている送信元転送LSIの識別情報(B)により、検索結果1702−2の送信先となる転送LSI301bを特定する。そして、分散部1505は、変換前のシーケンス番号Yを含む検索結果1702−2を、検索結果1703−2として特定した送信先となる転送LSI301bに送信する。
【0126】
分散部1505は、検索結果1702−3が入力されると、検索結果1702−3に含まれている送信元転送LSIの識別情報(A)により、検索結果1702−3の送信先となる転送LSI301aを特定する。そして、分散部1505は、変換前のシーケンス番号X+1を含む検索結果1702−3を、検索結果1703−3として特定した送信先となる転送LSI301aに送信する。
【0127】
このように、1つの検索制御FPGA302および検索LSI303に対して複数個の転送LSI301を接続することが可能となり、転送性能を柔軟にスケールすることが可能となる。すなわち、転送LSIを複数個実装することで、転送処理を複数の転送LSIで並列に実行することが可能となり、転送ビットレートの向上を図ることができる。
【0128】
図18は、実施例2にかかる再構成可能通信モジュール202の構成例2を示すブロック図である。
図18では、検索LSI303の接続数を2個とした場合の例を示す。なお、検索LSI303の接続数は必ずしも2個ではなく、3個以上の接続とすることも可能である。また、1つの検索制御FPGA302に対して、同時に複数個の転送LSI301と複数個の検索LSI303を接続することも可能である。
【0129】
図18において、再構成可能通信モジュール202は、転送LSI301と、検索制御FPGA302と、複数(
図18では例として2個)の検索LSI303a,303bと、スイッチインタフェース304と、を有する。検索LSI303a,303bの識別情報をそれぞれ(A),(B)とする。検索制御FPGA302は、
図4に示した判定部401、作成部402、整列部403に加えて、振分部1801、シーケンス番号変換部1802、番号管理テーブル1803、シーケンス番号逆変換部1805、選択部1804を有する。
【0130】
検索LSI303a,303bは、サービス(フォーマット)ごとに使い分けされてもよい。たとえば、検索LSI303aは、IP検索手段801のみを有し、検索LSI303bは、MPLS検索手段802およびイーサネット検索手段803を有してもよい。また、検索LSI303a,303bは、同一のサービス(フォーマット)を共有してもよい。たとえば、検索LSI303a,303bはそれぞれ、IP検索手段801を有してもよい。
【0131】
振分部1801は、作成部402からの検索指定情報を受け付ける。検索指定情報とは、実施例1で説明したように、検索キー情報と検索手段指定情報とを含む情報である。検索キー情報には、発行部311によって発行されたシーケンス番号が含まれる。
【0132】
振分部1801には、あらかじめ、どの検索LSI303がどのサービスに適用可能かを特定可能である。具体的には、たとえば、検索LSI303a,303bがIP検索手段801を有し、かつ、検索LSI303bがMPLS検索手段802およびイーサネット検索手段803を有している場合、振分部1801は、検索指定情報を参照して、検索指定情報を検索LSI303a,303bのいずれかに振り分ける。具体的には、振分部1801は、検索LSI303a,303bのいずれかの識別情報を検索指定情報に付与して、検索指定情報をシーケンス番号順にシーケンス番号変換部1802に出力する。
【0133】
たとえば、検索指定情報のヘッダフォーマットがIPである場合、振分部1801は、振分基準にしたがって、検索指定情報を検索LSI303a,303bのいずれかに振り分ける。振分部1801は、振分基準として、ヘッダフォーマットがIPである検索指定情報の到着順で検索指定情報を振り分けてもよく、交互に振り分けてもよく、これまでの累積バイト数が少ない方の検索LSI303に振り分けてもよい。また、上記の例では、検索指定情報のヘッダフォーマットがMPLSまたはイーサネットである場合、振分部1801は、振分基準にしたがって、検索指定情報を検索LSI303bに振り分ける。
【0134】
シーケンス番号変換部1802は、振分部1801によって振り分けられた検索指定情報に含まれているシーケンス番号を変換する。具体的には、たとえば、シーケンス番号変換部1802は、宛先となる検索LSI(宛先検索LSI)303の識別情報ごとに、検索指定情報に含まれているシーケンス番号を、連続性または相関性のあるシーケンス番号に変換する。シーケンス番号変換部1802は、変換後のシーケンス番号を含む検索指定情報を、宛先検索LSI303に出力する。
【0135】
番号管理テーブル1803は、シーケンス番号変換部1802による変換後のシーケンス番号と、検索指定情報に含まれている変換前のシーケンス番号および宛先検索LSI303の識別情報と、を対応付けて管理するテーブルである。番号管理テーブル1803は、たとえば、RAM(Random Access Memory)により実装することで、変換後のシーケンス番号をメモリアドレスとして、変換前のシーケンス番号および宛先検索LSI303の識別情報をメモリデータとして格納する。
【0136】
選択部1804は、検索LSI303a,303bの各々からの検索結果を選択基準にしたがって選択し、シーケンス番号変換部1502に出力する。具体的には、たとえば、選択部1804は、検索結果の入力に先立って、番号管理テーブル1803の先頭のエントリから宛先検索LSI303の識別情報を読み出す。たとえば、番号管理テーブル1803の未選択エントリの宛先検索LSI303の識別情報(A)を先頭エントリから読み出す。FIFOメモリに保持された検索結果がある場合、選択部1804は、先に読み出したエントリと検索結果の付加情報(変換後のシーケンス番号および当該検索結果の送信元検索LSI303の識別情報)が一致するか否かを判断する。
【0137】
具体的には、たとえば、選択部1804は、先に読み出したエントリの変換後のシーケンス番号が検索結果に含まれ、かつ、当該エントリの宛先検索LSIの識別情報で特定される検索LSI303が当該検索結果の送信元であるかを判断する。一致する場合、選択部1804は、その検索結果を選択して(読み出したエントリをFIFOメモリから削除)、シーケンス番号逆変換部1805に出力する。不一致の場合、選択部1804は、次の検索結果を待機する。
【0138】
FIFOメモリに保持された検索結果がない場合または上記不一致の場合において、いずれかの検索LSI303からの検索結果が入力された場合、選択部1804は、先に読み出したエントリと、入力された検索結果の付加情報とが一致するか否かを判断する。一致する場合は、選択部1804は、その検索結果を選択して、シーケンス番号逆変換部1805に出力する。不一致の場合は、選択部1804は、その検索結果を、たとえば、FIFOメモリに保持し、次の検索結果を待機する。
【0139】
なお、番号管理テーブル1803がRAMで実装されている場合には、シーケンス番号X,X+1、…をメモリのリードアドレスとすることで、宛先検索LSI303の識別情報を取得することが可能となる。
【0140】
シーケンス番号逆変換部1805は、選択部1804による選択順の検索結果を選択部1804から入力する。シーケンス番号逆変換部1805は、入力した検索結果ごとに、番号管理テーブルを参照し、変換前のシーケンス番号および宛先検索LSI303の識別情報を特定する。シーケンス番号逆変換部1805は、変換前のシーケンス番号に対応する変換後のシーケンス番号を検索結果に付与して、作成部402に出力する。
【0141】
図19は、実施例2にかかる作成部402から複数の検索LSI303までのデータの流れを示す説明図である。ここでは、作成部402からの検索指定情報1901に含まれているシーケンス番号を、X、X+1、X+2、…とし、シーケンス番号変換部1802から検索LSI303aへの検索指定情報1903に含まれているシーケンス番号をY、Y+1、…とし、シーケンス番号変換部1802から検索LSI303bへの検索指定情報1903に含まれているシーケンス番号をZ、Z+1、…とする。ここで、検索LSI303a,303bは各々独立動作しており、シーケンス番号X、Y、Zの間には連続性または相関性などはない。
【0142】
また、ここでは、検索LSI303aはIP検索手段801を有しており、検索LSI303bがIP検索手段801、MPLS検索手段802およびイーサネット検索手段803を有しているものとする。
【0143】
振分部1801は、作成部402からの検索指定情報1901を順次受け付けて、検索指定情報1901ごとに、受け付けた検索指定情報1901のヘッダフォーマット(サービス)はどの検索LSI303に適用可能であるかを判断する。たとえば、先頭のシーケンス番号Xを含む検索指定情報1901−1のヘッダフォーマットがIPであれば、まず、検索指定情報1901−1を検索LSI303aに振り分けるため、検索指定情報1901−1に宛先検索LSI303の識別情報(A)を付与し、シーケンス番号Xおよび宛先検索LSI303の識別情報(A)を含む検索指定情報1902−1として、シーケンス番号変換部1802に出力する。
【0144】
つぎのシーケンス番号X+1を含む検索指定情報1901−2のヘッダフォーマットがMPLSであれば、まず、検索指定情報1901−2を検索LSI303bに振り分けるため、検索指定情報1901−2に宛先検索LSI303の識別情報(B)を付与し、シーケンス番号X+1および宛先検索LSI303の識別情報(B)を含む検索指定情報1902−2として、シーケンス番号変換部1802に出力する。
【0145】
つぎのシーケンス番号X+2を含む検索指定情報1901−3のヘッダフォーマットがIPであれば、検索指定情報1901−3を検索LSI303b(検索指定情報1901−1は検索LSI303aに振り分けられたため)に振り分けるため、検索指定情報1901−3に宛先検索LSI303の識別情報(B)を付与し、シーケンス番号X+2および宛先検索LSI303の識別情報(B)を含む検索指定情報1902−3として、シーケンス番号変換部1802に出力する。
【0146】
シーケンス番号変換部1802は、振分部1801からの検索指定情報1902に含まれているシーケンス番号を変換する。具体的には、たとえば、シーケンス番号変換部1802は、検索指定情報1902−1を受け付けると、検索指定情報1902−1に含まれている宛先検索LSI303の識別情報(A)を特定する。宛先検索LSI303の識別情報(A)で特定される検索LSI303aに対しては、変換後のシーケンス番号をまだ発行していないため、シーケンス番号変換部1802は、変換前のシーケンス番号Xと連続性または相関性がない変換後のシーケンス番号Yを発行し、変換前のシーケンス番号Xと付け替える。シーケンス番号変換部1802は、変換後のシーケンス番号Yを含む検索指定情報1903−1を、宛先検索LSI303の識別情報(A)で特定される検索LSI303aに出力する。また、シーケンス番号変換部1802は、変換前のシーケンス番号Xと変換後のシーケンス番号Yと宛先検索LSI303の識別情報(A)とを関連付けたエントリ181を、番号管理テーブル1803に登録する。
【0147】
これにより、
図20に示すように、検索LSI303aは、検索指定情報1903−1を受け付けて、IP検索手段801により、検索結果(送信ポート番号および宛先MACアドレス)2001−1を検索制御FPGA302に返す。
【0148】
シーケンス番号変換部1802は、検索指定情報1902−2を受け付けると、検索指定情報1902−2に含まれている宛先検索LSI303の識別情報(B)を特定する。宛先検索LSI303の識別情報(B)で特定される検索LSI303bに対しては、変換後のシーケンス番号をまだ発行していないため、シーケンス番号変換部1802は、変換前のシーケンス番号Xおよび変換後のシーケンス番号Yと連続性または相関性がない変換後のシーケンス番号Zを発行し、変換前のシーケンス番号X+1と付け替える。シーケンス番号変換部1802は、変換後のシーケンス番号Zを含む検索指定情報1903−2を、宛先検索LSI303の識別情報(B)で特定される検索LSI303bに出力する。また、シーケンス番号変換部1802は、変換前のシーケンス番号X+1と変換後のシーケンス番号Zと宛先検索LSI303の識別情報(B)とを関連付けたエントリ182を、番号管理テーブル1803に登録する。
【0149】
これにより、
図20に示すように、検索LSI303bは、検索指定情報1903−2を受け付けて、MPLS検索手段802により、検索結果(Out Shim Label、送信ポート番号および宛先MACアドレス)2001−2を検索制御FPGA302に返す。
【0150】
シーケンス番号変換部1802は、検索指定情報1902−3を受け付けると、検索指定情報1902−3に含まれている宛先検索LSI303の識別情報(B)を特定する。宛先検索LSI303の識別情報(B)で特定される検索LSI303bに対しては、すでに変換後のシーケンス番号Zが発行されているため、シーケンス番号変換部1802は、変換前のシーケンス番号X+1および変換後のシーケンス番号Yと連続性または相関性がなく、かつ、変換後のシーケンス番号Zと連続性または相関性がある変換後のシーケンス番号Z+1を発行し、変換前のシーケンス番号X+2と付け替える。シーケンス番号変換部1802は、変換後のシーケンス番号Z+1を含む検索指定情報1903−3を、宛先検索LSI303の識別情報(B)で特定される検索LSI303bに出力する。また、シーケンス番号変換部1802は、変換前のシーケンス番号X+2と変換後のシーケンス番号Z+1と宛先検索LSI303の識別情報(B)とを関連付けたエントリ183を、番号管理テーブル1803に登録する。
【0151】
これにより、
図20に示すように、検索LSI303bは、検索指定情報1903−3を受け付けて、IP検索手段801により、検索結果(送信ポート番号および宛先MACアドレス)2001−3を検索制御FPGA302に返す。
【0152】
図20は、実施例2にかかる複数の検索LSI303から作成部402までのデータの流れを示す説明図である。選択部1804は、検索結果2001−1,2001−2,2001−3の順に受け付ける。検索結果2001−1,2001−2,2001−3はそれぞれ、変換後のシーケンス番号Y,Z,Z+1を含む。
【0153】
選択部1804は、検索結果2001−1,2001−2,2001−3の入力に先立って、番号管理テーブル1803のエントリを先頭から読み込む。この場合、選択部1804は、番号管理テーブル1803の先頭エントリであるエントリ181を読み込む。選択部1804は、検索結果2001−1を受け付けると、読み込んだエントリ181の変換後のシーケンス番号Yおよび宛先検索LSIの識別情報(A)が、検索結果2001−1の付加情報(変換後のシーケンス番号Yおよび検索結果2001−1の送信元検索LSIの識別情報(A))と一致するか否かを判断する。この場合、一致するため、選択部1804は、検索結果2002−1をシーケンス番号逆変換部1805に出力する。
【0154】
もし仮に、たとえば検索LSI303aでの検索遅延により、選択部1804が検索結果2001−1よりも先に検索LSI303bから検索結果2001−2を受け付けていた場合、エントリ181の変換後のシーケンス番号Yおよび宛先検索LSIの識別情報(A)は、検索結果2001−2の付加情報(変換後のシーケンス番号Zおよび検索結果2001−1の送信元検索LSIの識別情報(B))と一致しない。したがって、選択部1804は、FIFOメモリに検索結果2001−2を保持して、検索結果2001−1を待ち受ける。
【0155】
選択部1804は、検索結果2001−1をシーケンス番号逆変換部1805に出力したあと、番号管理テーブル1803の次のエントリを読み込む。この場合、選択部1804は、番号管理テーブル1803のエントリ21の次のエントリ182を読み込む。選択部1804は、検索結果2001−2を受け付けると、読み込んだエントリ182の変換後のシーケンス番号Zおよび宛先検索LSIの識別情報(B)が、検索結果2001−2の付加情報(変換後のシーケンス番号Zおよび検索結果2001−2の送信元検索LSIの識別情報(B))と一致するか否かを判断する。この場合、一致するため、選択部1804は、検索結果2002−2をシーケンス番号逆変換部1805に出力する。
【0156】
選択部1804は、検索結果2001−2をシーケンス番号逆変換部1805に出力したあと、番号管理テーブル1803の次のエントリを読み込む。この場合、選択部1804は、番号管理テーブル1803のエントリ22の次のエントリ183を読み込む。選択部1804は、検索結果2001−3を受け付けると、読み込んだエントリ183の変換後のシーケンス番号Z+1および宛先検索LSIの識別情報(B)が、検索結果2001−3の付加情報(変換後のシーケンス番号Z+1および検索結果2001−3の送信元検索LSIの識別情報(B))と一致するか否かを判断する。この場合、一致するため、選択部1804は、検索結果2002−3をシーケンス番号逆変換部1805に出力する。
【0157】
このようにして、選択部1804は、検索結果2001−1〜2001−3を検索結果2002−1〜2002−3として、シーケンス番号逆変換部1805に出力する。
【0158】
シーケンス番号逆変換部1805は、検索結果2001−1を受け付けると、その付加情報(変換後のシーケンス番号Yおよび検索結果2001−1の送信元検索LSIの識別情報(A))に該当するエントリ181を番号管理テーブル1803から特定し、当該エントリ181の変換前のシーケンス番号Xを取得する。そして、シーケンス番号逆変換部1805は、付加情報の変換後のシーケンス番号Yを、取得した変換前のシーケンス番号Xに付け替えて、検索結果2003−1として作成部402に出力する。また、シーケンス番号逆変換部1805は、当該エントリ21を番号管理テーブル1803から削除する。
【0159】
シーケンス番号逆変換部1805は、検索結果2001−2を受け付けると、その付加情報(変換後のシーケンス番号Zおよび検索結果2001−2の送信元検索LSIの識別情報(B))に該当するエントリ182を番号管理テーブル1803から特定し、当該エントリ182の変換前のシーケンス番号X+1を取得する。そして、シーケンス番号逆変換部1805は、付加情報の変換後のシーケンス番号Zを、取得した変換前のシーケンス番号X+1に付け替えて、検索結果2003−2として作成部402に出力する。また、シーケンス番号逆変換部1805は、当該エントリ22を番号管理テーブル1803から削除する。
【0160】
シーケンス番号逆変換部1805は、検索結果2001−3を受け付けると、その付加情報(変換後のシーケンス番号Z+1および検索結果2001−3の送信元検索LSIの識別情報(B))に該当するエントリ183を番号管理テーブル1803から特定し、当該エントリ183の変換前のシーケンス番号X+2を取得する。そして、シーケンス番号逆変換部1805は、付加情報の変換後のシーケンス番号Z+1を、取得した変換前のシーケンス番号X+2に付け替えて、検索結果2003−3として作成部402に出力する。また、シーケンス番号逆変換部1805は、当該エントリ23を番号管理テーブル1803から削除する。
【0161】
このようにして、1つの検索制御FPGA302および転送LSI301に対して複数個の検索LSI303を接続することが可能となり、検索性能および検索リソースプールを柔軟にスケールすることが可能となる。
【0162】
また、
図15に示す構成例と
図18に示す構成例を同時に実装することで、1つの検索制御FPGA302に対して、M(Mは2以上の整数)個の転送LSI301およびN(Nは2以上の整数)個の検索LSI303を接続して、転送性能、検索性能、検索リソースプールをより柔軟にスケールすることが可能となる。
【0163】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
【0164】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【0165】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)の記録媒体に格納することができる。
【0166】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。