特許第6875979号(P6875979)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アラクサラネットワークス株式会社の特許一覧

<>
  • 特許6875979-転送装置 図000002
  • 特許6875979-転送装置 図000003
  • 特許6875979-転送装置 図000004
  • 特許6875979-転送装置 図000005
  • 特許6875979-転送装置 図000006
  • 特許6875979-転送装置 図000007
  • 特許6875979-転送装置 図000008
  • 特許6875979-転送装置 図000009
  • 特許6875979-転送装置 図000010
  • 特許6875979-転送装置 図000011
  • 特許6875979-転送装置 図000012
  • 特許6875979-転送装置 図000013
  • 特許6875979-転送装置 図000014
  • 特許6875979-転送装置 図000015
  • 特許6875979-転送装置 図000016
  • 特許6875979-転送装置 図000017
  • 特許6875979-転送装置 図000018
  • 特許6875979-転送装置 図000019
  • 特許6875979-転送装置 図000020
  • 特許6875979-転送装置 図000021
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6875979
(24)【登録日】2021年4月27日
(45)【発行日】2021年5月26日
(54)【発明の名称】転送装置
(51)【国際特許分類】
   G06F 16/90 20190101AFI20210517BHJP
   H04L 12/741 20130101ALI20210517BHJP
【FI】
   G06F16/90
   H04L12/741
【請求項の数】10
【全頁数】33
(21)【出願番号】特願2017-217419(P2017-217419)
(22)【出願日】2017年11月10日
(65)【公開番号】特開2018-165976(P2018-165976A)
(43)【公開日】2018年10月25日
【審査請求日】2020年2月17日
(31)【優先権主張番号】特願2017-62610(P2017-62610)
(32)【優先日】2017年3月28日
(33)【優先権主張国】JP
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成28年度 国立研究開発法人情報通信研究機構、光トランスポートNWにおける用途・性能に適応した通信処理合成技術の研究開発 委託研究、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504411166
【氏名又は名称】アラクサラネットワークス株式会社
(74)【代理人】
【識別番号】110001678
【氏名又は名称】特許業務法人藤央特許事務所
(72)【発明者】
【氏名】熊谷 健
(72)【発明者】
【氏名】須貝 和雄
(72)【発明者】
【氏名】赤羽 真一
(72)【発明者】
【氏名】村中 孝行
【審査官】 吉田 誠
(56)【参考文献】
【文献】 特開2010−110023(JP,A)
【文献】 特開平11−220475(JP,A)
【文献】 特開2004−135106(JP,A)
【文献】 特開平11−261647(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00 − 16/958
H04L 12/00
(57)【特許請求の範囲】
【請求項1】
通信データを転送する転送装置であって、
キー項目および他の項目を関連付けるテーブルと前記テーブルを参照して前記通信データのヘッダ内のフィールドである前記キー項目の値から前記他の項目の値を検索する検索回路とにより構成される検索リソースの集合である検索リソース群を有し、前記検索リソース群において、少なくとも、前記通信データの第1ヘッダフォーマットにしたがって前記キー項目の値である前記通信データの第1宛先情報および前記他の項目の値である第1転送先情報を関連付ける第1テーブルと前記第1テーブルを参照して前記第1宛先情報から前記第1転送先情報を検索する第1検索回路とで構成される第1検索リソースからなる第1検索手段を有し、前記第1検索手段および前記第1宛先情報が指定されると、前記第1検索回路により前記第1テーブルを参照して前記第1宛先情報から前記第1転送先情報を検索する検索部と、
前記ヘッダのフォーマットにしたがって宛先情報が格納されているフィールドの位置およびサイズと、1以上の検索リソースで構成される検索手段と、を指定する検索指定情報を作成して前記検索部に出力する再構成可能な機構であり、前記ヘッダのフォーマットが第1ヘッダフォーマットである場合に、前記第1ヘッダフォーマットにしたがって特定される前記第1宛先情報および前記第1検索手段を指定する第1検索指定情報を作成し、前記検索部に出力するという第1検索指定情報作成処理を実行する検索制御部と、
前記検索部を制御して、前記検索リソース群のうち前記第1検索リソースを除いた残余の検索リソースにおいて、前記通信データの第2ヘッダフォーマットにしたがって前記キー項目の値である第2宛先情報および前記他の項目の値である第2転送先情報を関連付ける第2テーブルを設定することにより、前記第2テーブルと前記第2テーブルを参照して前記第2宛先情報から前記第2転送先情報を検索する第2検索回路とで構成される第2検索リソースからなる第2検索手段を前記検索部に構築し、前記検索制御部を制御して、前記ヘッダのフォーマットが前記第2ヘッダフォーマットである場合に前記第2検索手段および前記第2宛先情報を指定する第2検索指定情報を作成して前記検索部に出力するという第2検索指定情報作成処理を前記検索制御部に追加するとともに、前記検索部を制御して、前記残余の検索リソースにおいて、前記第2ヘッダフォーマットにしたがって、前記第2テーブルと、前記キー項目の値である前記第2転送先情報および前記他の項目の値である第3転送先情報を関連付ける第3テーブルと、を設定することにより、前記第2検索リソースと、前記第3テーブルと前記第3テーブルを参照して前記第2転送先情報から前記第3転送先情報を検索する第3検索回路とで構成される第3検索リソースと、からなる第3検索手段を前記検索部に構築し、前記検索制御部を制御して、前記ヘッダのフォーマットが前記第2ヘッダフォーマットである場合に前記第3検索手段および前記第2宛先情報を指定する第3検索指定情報を作成して前記検索部に出力するという第3検索指定情報作成処理を前記検索制御部に追加する制御部と、
前記通信データを受信し、前記検索部によって前記ヘッダのフォーマットにしたがって検索された転送先情報に基づいて、前記通信データを転送先に送信する転送部と、
を有することを特徴とする転送装置。
【請求項2】
請求項1に記載の転送装置であって、
前記検索リソース群は、前記検索回路による検索方法が同一であるが、前記テーブルの前記キー項目のサイズが異なる複数種類の検索リソースを含むことを特徴とする転送装置。
【請求項3】
請求項1に記載の転送装置であって、
前記検索リソース群は、前記検索回路による検索方法が異なる複数種類の検索リソースを含むことを特徴とする転送装置。
【請求項4】
請求項1に記載の転送装置であって、
前記検索回路は、前記通信データ内の検索対象フィールドで前記テーブルの前記キー項目の値を最長一致検索し、最長一致した前記キー項目の値に関連付けられている前記他の項目の値を抽出する回路であることを特徴とする転送装置。
【請求項5】
請求項1に記載の転送装置であって、
前記検索回路は、前記通信データ内の検索対象フィールドで前記テーブルの前記キー項目の値を検索し、検索された前記キー項目の値に関連付けられている前記他の項目の値を抽出する回路であることを特徴とする転送装置。
【請求項6】
請求項1に記載の転送装置であって、
前記検索回路は、前記通信データ内の検索対象フィールドをハッシュ値に変換し、前記ハッシュ値で前記テーブルの前記キー項目の値を検索し、検索された前記キー項目の値に関連付けられている前記他の項目の値を抽出する回路であることを特徴とする転送装置。
【請求項7】
請求項1に記載の転送装置であって、
前記転送部は、
前記通信データの到着順を示すシーケンス番号を発行する発行部と、
前記ヘッダおよび前記発行部によって発行されたシーケンス番号を前記検索制御部に出力する出力部と、を有し、
前記検索制御部は、
前記シーケンス番号を含む前記検索指定情報を前記検索部に出力し、
前記検索部は、
前記転送先情報を前記シーケンス番号に関連付けて前記検索制御部に出力し、
前記検索制御部は、
前記検索部からの前記シーケンス番号順に前記転送先情報を前記転送部に出力することを特徴とする転送装置。
【請求項8】
請求項7に記載の転送装置であって、
前記転送部は、
前記通信データおよび前記シーケンス番号を保持する保持部を有し、
保持部に保持された前記シーケンス番号と、前記検索制御部から前記転送先情報とともに入力されてきた前記シーケンス番号と、が一致する場合、前記保持部に保持された前記通信データのヘッダを前記転送先情報で更新する更新部と、を有し、
前記更新部による更新後の通信データを、前記転送先情報で特定される転送先に送信することを特徴とする転送装置。
【請求項9】
請求項7に記載の転送装置であって、
前記転送部を複数有し、
前記検索制御部は、
前記ヘッダおよび前記シーケンス番号が前記複数の転送部の各々から入力された場合、前記複数の転送部の各々からの前記シーケンス番号を連続性または相関性のあるシーケンス番号に変換して、変換後のシーケンス番号を含む前記検索指定情報を前記検索部に出力し、
前記検索部は、
前記転送先情報を前記変換後のシーケンス番号に関連付けて前記検索制御部に出力し、
前記検索制御部は、
前記検索部からの前記変換後のシーケンス番号順に変換前のシーケンス番号に変換して、前記転送先情報を前記変換前のシーケンス番号の発行元の転送部に出力することを特徴とする転送装置。
【請求項10】
請求項7に記載の転送装置であって、
前記検索部を複数有し、
前記検索制御部は、
前記複数の検索部の各々が前記ヘッダのいずれのフォーマットに対応するかを特定可能であり、
前記検索指定情報の宛先となる検索部を、前記検索指定情報の作成元となる前記ヘッダのフォーマットに基づいて特定し、前記検索指定情報に含まれる前記シーケンス番号を、前記検索部ごとに連続性または相関性のあるシーケンス番号に変換して、変換後のシーケンス番号を含む前記検索指定情報を、前記検索指定情報の宛先となる前記検索部に出力し、
前記複数の検索部の各々からの前記転送先情報に含まれる前記変換後のシーケンス番号を、前記変換前のシーケンス番号に逆変換し、前記変換前のシーケンス番号順に、前記転送先情報を前記転送部に出力する、
ことを特徴とする転送装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、フレームやパケットのような通信データのヘッダを検索して転送先を決定する転送装置に関する。
【背景技術】
【0002】
従来、ルータやスイッチのような転送装置は、転送性能の向上が常に求められる。このため、転送装置は、ソフトウェア処理やFPGAなどの再構成可能なハードウェアよりも、処理性能が高いLSIなどの処理内容を変更できないハードウェアを用いて、通信データのヘッダを検索し、転送先を決定する必要がある。
【0003】
LSIなどのハードウェアによる検索処理では、取り扱えるヘッダのフォーマットが予め決まっており、当該ハードウェアは、予め決まったフィールドを検索キーとして、予め決まった検索方式で検索を実行する。
【0004】
たとえば、宛先IPアドレスから次の転送先を決定する場合、転送装置は、経路テーブルを最長プレフィックス長検索と呼ばれる予め決まった検索方式で検索することにより、次の転送先を決定する。LSIなどのハードウェアによる検索処理では、製品化後に現れた新たなヘッダフォーマットのフレームの検索に、後から対応することができない、という課題があった。
【0005】
この課題を解決するために、下記特許文献1の通信装置は、パケット検索および転送処理を行うパケット処理専用ハードウェアと、プログラマブルにパケットフォーマット解析、パケット転送処理が可能なパケット解析プロセッサとを有する。パケット解析プロセッサは、パケット処理専用ハードウェアが処理可能なパケットフォーマットか判定し、パケット処理専用ハードウェアが処理不可能な場合、処理出来るパケットフォーマットにパケットを変換し、パケット処理専用ハードウェアへ転送する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】国際公開WO2014/125636号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1の通信装置は、パケットヘッダの処理をパケット処理専用ハードウェアが処理不可能な場合、処理できるパケットフォーマットにパケットを変換する。しかしながら、パケットの変換だけでは、その後段のパケット処理専用ハードウェアにおいて、新たに現れたフレームヘッダフォーマットで要求される検索仕様の検索を柔軟に行うことができない。
【0008】
32bit程度の長いフィールドを検索キーとして転送先を決定する場合を例に挙げる。この場合、パケットヘッダを単純に変換するだけでは検索キーとするフィールドの長さは変わらない。したがって、パケット処理専用ハードウェアは、32bitの検索キーから宛先を検索する必要がある。32bitのフィールドを検索するに当たり、単純に32bitの値をインデックスとしてテーブルを引く場合、2の32乗である4ギガエントリのテーブルを引く必要があり、広大なメモリが必要となる。同様に、検索フィールドの幅が、たとえば48bitである場合には、2の48乗である256テラエントリのテーブルを引く必要があり、ほぼ実現不可能な大きさのメモリが必要となる。
【0009】
本発明は、製品化後に新たに現れたヘッダフォーマットから転送先を検索するにあたり、要求される検索仕様にも柔軟に対応可能で、かつハードウェア処理による高速性も実現することを目的とする。
【課題を解決するための手段】
【0010】
本願において開示される発明の一側面となる転送装置は、通信データを転送する転送装置であって、キー項目および他の項目を関連付けるテーブルと前記テーブルを参照して前記通信データのヘッダ内のフィールドである前記キー項目の値から前記他の項目の値を検索する検索回路とにより構成される検索リソースの集合である検索リソース群を有し、前記検索リソース群において、少なくとも、前記通信データの第1ヘッダフォーマットにしたがって前記キー項目の値である前記通信データの第1宛先情報および前記他の項目の値である第1転送先情報を関連付ける第1テーブルと前記第1テーブルを参照して前記第1宛先情報から前記第1転送先情報を検索する第1検索回路とで構成される第1検索リソースからなる第1検索手段を有し、前記第1検索手段および前記第1宛先情報が指定されると、前記第1検索回路により前記第1テーブルを参照して前記第1宛先情報から前記第1転送先情報を検索する検索部と、前記ヘッダのフォーマットにしたがって宛先情報が格納されているフィールドの位置およびサイズと、1以上の検索リソースで構成される検索手段と、を指定する検索指定情報を作成して前記検索部に出力する再構成可能な機構であり、前記ヘッダのフォーマットが第1ヘッダフォーマットである場合に、前記第1ヘッダフォーマットにしたがって特定される前記第1宛先情報および前記第1検索手段を指定する第1検索指定情報を作成し、前記検索部に出力するという第1検索指定情報作成処理を実行する検索制御部と、前記検索部を制御して、前記検索リソース群のうち前記第1検索リソースを除いた残余の検索リソースにおいて、前記通信データの第2ヘッダフォーマットにしたがって前記キー項目の値である第2宛先情報および前記他の項目の値である第2転送先情報を関連付ける第2テーブルを設定することにより、前記第2テーブルと前記第2テーブルを参照して前記第2宛先情報から前記第2転送先情報を検索する第2検索回路とで構成される第2検索リソースからなる第2検索手段を前記検索部に構築し、前記検索制御部を制御して、前記ヘッダのフォーマットが前記第2ヘッダフォーマットである場合に前記第2検索手段および前記第2宛先情報を指定する第2検索指定情報を作成して前記検索部に出力するという第2検索指定情報作成処理を前記検索制御部に追加するとともに、前記検索部を制御して、前記残余の検索リソースにおいて、前記第2ヘッダフォーマットにしたがって、前記第2テーブルと、前記キー項目の値である前記第2転送先情報および前記他の項目の値である第3転送先情報を関連付ける第3テーブルと、を設定することにより、前記第2検索リソースと、前記第3テーブルと前記第3テーブルを参照して前記第2転送先情報から前記第3転送先情報を検索する第3検索回路とで構成される第3検索リソースと、からなる第3検索手段を前記検索部に構築し、前記検索制御部を制御して、前記ヘッダのフォーマットが前記第2ヘッダフォーマットである場合に前記第3検索手段および前記第2宛先情報を指定する第3検索指定情報を作成して前記検索部に出力するという第3検索指定情報作成処理を前記検索制御部に追加する制御部と、前記通信データを受信し、前記検索部によって前記ヘッダのフォーマットにしたがって検索された転送先情報に基づいて、前記通信データを転送先に送信する転送部と、を有することを特徴とする。
【発明の効果】
【0011】
本発明の代表的な実施の形態によれば、新規なヘッダフォーマットに要求される検索仕様に柔軟に対応可能で、かつハードウェア処理による高速性も実現することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0012】
図1図1は、実施例1にかかるネットワーク構成例を示す説明図である。
図2図2は、実施例1にかかる転送装置のハードウェア構成例を示すブロック図である。
図3図3は、実施例1にかかる再構成可能通信モジュールの構成例1を示すブロック図である。
図4図4は、実施例1にかかる再構成可能通信モジュールの構成例2を示すブロック図である。
図5図5は、実施例1にかかる検索LSIの構成例1を示す説明図である。
図6図6は、実施例1にかかるテーブルのデータ構造例を示す説明図である。
図7図7は、実施例1にかかる検索LSIの構成例2を示す説明図である。
図8図8は、実施例1にかかる検索LSIの構成例3を示す説明図である。
図9図9は、実施例1にかかる検索指定情報の例1を示す説明図である。
図10図10は、実施例1にかかる検索指定情報の例2を示す説明図である。
図11図11は、実施例1にかかる検索指定情報の例3を示す説明図である。
図12図12は、実施例1にかかる基本制御機構の構成例を示すブロック図である。
図13図13は、実施例1にかかる検索制御FPGAによる検索制御処理手順例を示すフローチャートである。
図14図14は、実施例1にかかる転送LSIによる転送処理手順例を示すフローチャートである。
図15図15は、実施例2にかかる再構成可能通信モジュールの構成例1を示すブロック図である。
図16図16は、実施例2にかかる複数の転送LSIから判定部までのデータの流れを示す説明図である。
図17図17は、実施例2にかかる整列部から複数の転送LSIまでのデータの流れを示す説明図である。
図18図18は、実施例2にかかる再構成可能通信モジュールの構成例2を示すブロック図である。
図19図19は、実施例2にかかる作成部から複数の検索LSIまでのデータの流れを示す説明図である。
図20図20は、実施例2にかかる複数の検索LSIから作成部までのデータの流れを示す説明図である。
【発明を実施するための形態】
【実施例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】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【0167】
100 転送装置
103 管理サーバ
201 基本制御機構
202 再構成可能通信モジュール
203 クロスバースイッチ
301 転送LSI
302 検索制御FPGA
303 検索LSI
500 検索リソースプール
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20