JP2016006942A - テーブル管理装置,及びテーブル管理方法 - Google Patents
テーブル管理装置,及びテーブル管理方法 Download PDFInfo
- Publication number
- JP2016006942A JP2016006942A JP2014127350A JP2014127350A JP2016006942A JP 2016006942 A JP2016006942 A JP 2016006942A JP 2014127350 A JP2014127350 A JP 2014127350A JP 2014127350 A JP2014127350 A JP 2014127350A JP 2016006942 A JP2016006942 A JP 2016006942A
- Authority
- JP
- Japan
- Prior art keywords
- entry
- registered
- area
- address
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】テーブルの更新時間の短縮化を図ることを可能とする。【解決手段】複数の検索キーの夫々から求まるハッシュ値と関連づけて前記複数の検索キーの夫々と対応する複数のエントリが登録されるテーブルを記憶する記憶部と、前記テーブルに登録された各エントリについてエントリの直前及び次に参照されるエントリを示すリンク情報を記憶する処理と、前記テーブルに登録されたエントリを削除するときに削除対象のエントリとリンクするエントリのリンク情報を更新する制御部と、を含むテーブル管理装置である。【選択図】図11
Description
本開示は、テーブル管理装置,及びテーブル管理方法に関する。
ネットワークを形成する通信ノードとして、例えば、ルータ,スイッチ,ゲートウェイなどを含む様々な通信機器がある。通信ノードは、エンド間を転送されるデータブロックに付与された識別情報を元に、当該識別情報に対応する転送先情報、或いはデータブロックの処理に係る情報のような目的の情報(エントリ)を取得するためのテーブルを有している。データブロックは、例えば、パケット,フレーム,セグメントなどを含む。識別情報は、例えば、Media Access Control(MAC)アドレス,Internet Protocol(IP)
アドレス,ポート番号などを含む。
アドレス,ポート番号などを含む。
典型例としては、通信ノードで受信されたパケット中の宛先アドレスを用いて、当該パケットの出力ポートの識別情報(ID)をテーブルから検索することが行われている。このような検索を行う方法の一つに、Content Addressable Memory(CAM)のような専用デバイスを用いる方法がある。
CAMは、登録されたレコードを記憶したアドレスを高速に出力するように形成されたハードウェアである。CAMのエントリには、IPアドレス又はIPアドレスのプレフィクス(検索キー)が登録される。CAMとは別に、宛先IPアドレスに対応する出力ポートのID(検索対象の情報)を記憶したメモリが用意される。CAMは、検索キー(エントリ)に対応する検索対象の情報が記憶された上記メモリのアドレスを出力するように設定される。
CAMに受信パケットの宛先IPアドレス(又はプレフィクス)が入力されると、CAMは、入力された宛先IPアドレスに対応するメモリのアドレスを出力する。出力されたアドレスにアクセスすることで、宛先IPアドレスに対応する出力ポートのID(検索対象の情報)を取得することができる。
但し、CAMに登録可能なエントリ数には上限がある。上限を超えるエントリを扱う場合には、記憶容量削減のため、ハッシュ関数が適用される場合がある。この場合、テーブルは、検索キー(上記例ではIPアドレス)を所定のハッシュ関数(ハッシュアルゴリズム)で縮退したハッシュ値で検索される。
ハッシュ値を用いてテーブルが管理される場合、例えば、1つのハッシュ値の元となる複数の検索キー(上記例ではIPアドレス)の夫々に対応する検索用の情報を含んだ複数のエントリをテーブルに登録することが考えられる。このようなテーブル中のエントリが削除されたとき、空き領域管理のために残りのエントリの並べ換えを実施することが考えられる。しかしながら、そのようなエントリ削除に伴う並べ換えが実施されると、テーブルの更新作業に時間がかかる問題があった。
一側面は、テーブルの更新時間の短縮化を図ることができる技術を提供することを目的とする。
一側面は、複数の検索キーの夫々から求まるハッシュ値と関連づけて前記複数の検索キーの夫々と対応する複数のエントリが登録されるテーブルを記憶する記憶部と、
前記テーブルに登録された各エントリについてエントリの直前及び次に参照されるエントリを示すリンク情報を記憶する処理と、前記テーブルに登録されたエントリを削除するときに削除対象のエントリとリンクするエントリのリンク情報を更新する制御部と、
を含むテーブル管理装置である。
前記テーブルに登録された各エントリについてエントリの直前及び次に参照されるエントリを示すリンク情報を記憶する処理と、前記テーブルに登録されたエントリを削除するときに削除対象のエントリとリンクするエントリのリンク情報を更新する制御部と、
を含むテーブル管理装置である。
一つの側面によれば、テーブルの更新時間の短縮化を図ることができる。
以下、図面を参照して実施形態について説明する。実施形態の構成は例示であり、本発明は、実施形態の構成に限定されない。
図1は、実施形態に係るテーブル管理方法の参考例を示す図である。図1では、検索キーの一例であるIPアドレスを元に目的の情報を取得するためのテーブル管理方法の一例が示されている。
図1に示すように、検索キーとなり得る全てのIPアドレスに対応するエントリがテーブルに設けられると、対象のIPアドレスの数に応じてメモリ空間(メモリ容量)が膨大となる場合がある。このため、対象のIPアドレスの縮退が行われる。縮退は、一般的に、所定のハッシュ関数を用いてIPアドレスをハッシュ値に変換することで行われる。これにより、各ハッシュ値について複数のIPアドレスがグループ化された状態となる。ハッシュ値は、「グループ識別子」の一例である。
そこで、メモリ上に、ハッシュ値に対応する複数のIPアドレスに対応するエントリ(レコード)が登録される複数のブロックを用意する。各ブロックは、各IPアドレスに対応するエントリを登録可能な所定数の小ブロック(エントリを登録するための領域)で形成される。図1に示す例では、1つのブロックに10個のエントリを登録可能な場合が示されている。各ブロックには、アドレス(例えば、メモリ上のアドレス)が割り当てられる。
一般的なテーブル作成方法では、ブロックを形成する複数の領域は、アドレス値が若い順で使用される。すなわち、複数の領域のうちアドレス値が最も若い領域が先頭に設定され、先頭の領域から順にエントリが登録される。図1では、1つのブロックにおける10個の領域のうち、上から8番目の領域までにエントリA〜Hが登録され、残りの二つの領域が空き状態である様子がされている。
このような状態で、途中のエントリDが削除された場合を仮定する。エントリDの削除により、エントリDが登録されていた領域は空き状態となる。そして、エントリDが登録されていた領域以降は空き状態として扱われる。従って、このままの状態では、エントリE〜Hが登録されている領域が空き状態として扱われ、他のエントリで上書きされる虞がある。
このため、途中のエントリが削除された場合には、次のようなテーブルの更新処理が行われる。すなわち、エントリDが削除されると、エントリDより後にあるエントリE〜Fの夫々が1つ先頭方向に繰り上げられる(並べ換えが実施される)。
しかしながら、登録されたエントリ数が少なくない場合には、上記した繰り上げ処理に時間がかかる。すなわち、エントリの削除に伴うテーブルの更新時間が長くなることがあり得る。テーブルの更新中では、当該テーブルを用いたエントリ(目的の情報)の検索を行うことができない。このため、検索結果を用いる処理が遅延する虞があった。
例えば、テーブルがパケットの宛先IPアドレスに対応する出力ポートを検索するためのルーティングテーブルであれば、出力ポートの検索ができない故にパケットの転送処理が遅延する虞があった。
以下に説明する実施形態では、上記した参考例における問題を解決し、エントリの削除に伴うテーブルの更新時間を短縮化し得るテーブル管理方法及びその方法を実行する装置
(テーブル管理装置)について説明する。
(テーブル管理装置)について説明する。
実施形態は、一例として、所定のハッシュ関数(ハッシュアルゴリズム)を用いて複数の検索キーを複数のハッシュ値に変換(縮退)し、各ハッシュ値をグループ識別子として使用する一例について説明する。縮退に使用するハッシュ関数及びハッシュアルゴリズムは既存のあらゆるものを使用可能である。
図2は、実施形態で使用されるエントリ登録テーブルの一例を示す図である。図2において、エントリ登録テーブル10は、所定の記憶装置上に形成される(記憶装置に記憶される)。エントリ登録テーブル10は、検索キーから得られるハッシュ値毎に用意された複数の(n個:nは自然数)のブロック11で形成される。各ブロック11はハッシュ値で検索(インデックス)される。検索に用いるハッシュ値は、ハッシュ値全体であっても良く、ハッシュ値の一部(例えば、予め定めたハッシュ値の有効ビット数の部分)であっても良い。エントリ登録テーブル10は、「テーブル」の一例である。
各ブロック11は、エントリ管理表として使用される。各ブロック11は、複数のエントリを登録可能な所定数(m個:mは0を含む自然数)の領域(小ブロック)12(領域#1,#2,#3,・・・,#m-1,#m)で形成される。1つの領域12には、“ア
ドレス”と、“登録状態”と、“情報”と、リンク情報を形成する“Next”及び“Pre(Previous)"とが格納される。“アドレス”は、各領域12のアドレスを示す。“ア
ドレス”の代わりに、エントリの識別子(ID:エントリ番号)を適用することもあり得る。
ドレス”と、“登録状態”と、“情報”と、リンク情報を形成する“Next”及び“Pre(Previous)"とが格納される。“アドレス”は、各領域12のアドレスを示す。“ア
ドレス”の代わりに、エントリの識別子(ID:エントリ番号)を適用することもあり得る。
“アドレス”は、「領域を示す情報」の一例である。“登録状態”は、領域12にエントリが登録されているか否か(領域12が空き状態か否か)を示す情報である。“登録状態”は、例えば、“0(空き)”及び“1(塞)”の2値フラグで表現できる。但し、登録状態の表現形式は2値フラグに限られない。
“情報”は、検索キーを用いて検索を所望する情報(目的の情報)を含む。リンク情報は、検索における領域12(エントリ)の繋がり(リンク)を示す情報であり、エントリ(領域12)の参照順序を規定する情報でもある。
“Next”は、当該領域12の次にアクセスする領域12のアドレスである。“Next”は、「当該領域の次に参照される領域を示す情報」の一例である。“Pre”は、当該領域12の直前にアクセスされる領域12のアドレスである。“Pre”は、「当該領域の直前に参照される領域を示す情報」の一例である。以下の説明において“Next”を「次アドレス」と称し、“Pre”を「直前アドレス」と称することもある。
各領域12は、検索において、アドレスが若い順にアクセスされる。従って、検索時では、先頭の領域12から始まって、各領域12について設定されたリンク情報に従って次の領域12が参照(アクセス)される。
図2の右側の表の例では、“ブロック0”のブロック11で最も若いアドレス“N”を有する領域12が先頭領域に設定されている。また、アドレス“N”〜“N+4”の各領域12に連続してエントリが登録されており、アドレス“N+5”以降の領域12は空き状態となっている。先頭の領域12の直前アドレスの値には“0(なし)”が設定される。
アドレス“N+1”,“N+2”,“N+3”,“N+4”の各領域12に登録された各エントリには、エントリがアドレスの若い順で参照されるように、次アドレス及び直前
アドレスが設定されている。但し、アドレス“N+4”の領域12の次の領域12は空き状態であるので、アドレス“N+4”の領域12の次アドレスの値には、“0(なし)”が設定される。このようにすれば、エントリの登録順に対してランダムにエントリの参照が行われる場合に比べて短時間で全エントリの参照を終えることができる。
アドレスが設定されている。但し、アドレス“N+4”の領域12の次の領域12は空き状態であるので、アドレス“N+4”の領域12の次アドレスの値には、“0(なし)”が設定される。このようにすれば、エントリの登録順に対してランダムにエントリの参照が行われる場合に比べて短時間で全エントリの参照を終えることができる。
図3は、エントリ削除時におけるブロック11(エントリ管理表)の更新方法の説明図である。図3の左側に示すエントリ管理表の登録例は、図2に示した内容と同じである。エントリの参照順の順方向及び逆方向を矢印で示す。但し、図3では、領域12の数は5であり、アドレス“N”〜“N+4”までの各領域12にエントリが登録されていると仮定する。
図3の右側に示すエントリ管理表は、左側のエントリ管理表の登録状態から一例としてアドレス“N+1”のエントリが削除される場合を示す。このとき、アドレス“N+1”のエントリにおける次アドレス及び直前アドレスの値が参照される。次アドレスは“N+2”であり、直前アドレスは“N”である。このため、アドレス“N”のエントリにおける次アドレスが“N+2”に変更(更新)される。一方、アドレス“N+2”のエントリにおける直前アドレスが“N”に変更(更新)される。
これによって、アドレス“N”のエントリの参照が終わると、アドレス“N+1”を飛ばして次にアドレス“N+2”のエントリが参照されるようになる。アドレス“N+1”のエントリはそのまま存在しているが、検索において参照されないので削除されたのと同じ状態になる。もっとも、アドレス“N+1”のエントリは削除されても良い。
上記のような更新処理では、少なくともリンク情報の更新でエントリ管理表の更新処理を終えることができ、削除対象のエントリの削除や当該エントリの削除に伴う次以降のエントリの繰り上げ処理(図1参照)は実行されない。このため、エントリ管理表の更新時間は、参考例に比べて短くすることができる。すなわち、テーブル更新処理の短縮化を図ることができる。
また、上記したリンク情報は、領域12のアドレスやエントリの識別情報と紐づけて別のテーブルで管理することが可能である。但し、リンク情報をエントリに含めることで、そのような管理の手間を省くことができる一方、エントリの削除に伴い更新する対象の領域12をエントリの参照で把握することができる。また、本実施形態では、領域12のアドレスを管理することで、エントリを管理している。これにより、エントリに識別子を設け、エントリの識別子(エントリ番号など)と領域12のアドレスとの対応関係を管理することを省略している。もっとも、上記したリンク情報の別管理やエントリ識別子を用いた管理を行う場合もあり得る。
図4は、上記したテーブル管理方法の適用例を示す図であり、テーブル管理方法が適用されるネットワークシステムの一例を示す。図4において、ネットワークシステムは、コアネットワーク1と、複数のアクセスネットワーク20(#1〜#N(Nは自然数)と、統計情報ネットワーク30とを備えている。本ネットワークシステムでは、データブロックの一例として、パケットが転送される。
コアネットワーク1は、通信回線を介して接続された複数の装置を含んでいる。装置は、ルート情報の検索装置2,分岐装置3,統計情報の収集装置4,パケットの転送制御装置5を含んでいる。コアネットワーク1は、通信回線を介して各アクセスネットワーク20と接続されている。各アクセスネットワーク20も、検索装置2,分岐装置3及び統計情報の収集装置4を含むことができる。
検索装置2は、パケットを受信し、パケットの転送ルートを検索し、転送ルートに合致する出力ポートからパケットを送出する。検索装置2は、例えば、ルータ,L3(レイヤ3)スイッチ,L2(レイヤ2)スイッチ,スイッチングHUBのようなパケットやフレーム等のデータブロックの中継装置である。各アクセスネットワーク20の検索装置2(中継装置)は、端末(ホスト)と直接に、或いは無線基地局を介して接続される。
分岐装置3は、コアネットワーク1と各アクセスネットワーク20とを接続する通信回線上に挿入される。分岐装置3の先には、統計情報の収集装置4が設けられる。分岐装置3は、通信回線を流れる信号を分岐させて収集装置4に送る。分岐装置3は、例えば、通信回線が光ファイバであるときの光カプラである。但し、通信回線が金属線であるときにパケット(電気信号)を電気的に分岐させる装置であっても良い。収集装置4は、分岐装置3から分岐したパケットの受信数等のパケットに関する統計情報を収集し、統計情報ネットワーク30へ送る。
パケットの転送制御装置5は、例えば、コアネットワーク1と各アクセスネットワーク20との境界において、通信回線上に挿入される。転送制御装置5は、パケットの内容を解析し、所定のパケットに対するフィルタリング(廃棄)処理を行う。また、転送制御装置5は、パケットをその宛先と異なる所定の送信先へ送信することもあり得る。
収集装置4,及び転送制御装置5のそれぞれは、通信機能を有する情報処理装置(コンピュータ)であり、例えば、パーソナルコンピュータ(PC),ワークステーション(WS),サーバマシンのような専用又は汎用の情報処理装置を適用可能である。或いは、通信機器に統計情報の収集装置4や転送制御装置5の機能を実装する場合もあり得る。
実施形態におけるテーブル管理装置は、上記した検索装置2,収集装置4,転送制御装置5の少なくとも1つに実装可能である。但し、テーブル管理装置が適用される装置の範囲は上記に制限されない。
図5は、検索装置2,収集装置4,転送制御装置5の構成例を示す図である。図5には、検索装置2,収集装置4,転送制御装置5として動作可能なパケット処理装置50についての構成例が示されている。図5において、パケット処理装置50は、複数の入力ポート51(#1〜#N)と、回線終端装置52と、入力パケットのコアへの振分装置53と、マルチコア0〜M(Mは自然数:以下単に「コア」と表記)と、パケット出力装置54と、回線終端装置55と、複数の出力ポート56(#1〜#N)とを備えている。
各入力ポート51で入力される信号は、回線終端装置52で終端され、信号中のパケットは、振分装置53でコア0〜Mのいずれかに振り分けられる。コア0〜Mへ振り分けられたパケットのうち、パケット処理装置50から送信するパケットは、パケット出力装置54へ送られ、回線終端装置55で所定の信号形式に変換され、パケットの宛先に対応する出力ポート56から出力される。
コア0〜Mは、マルチプロセッサ構成を有するCentral Processing Unit(CPU)又はNetwork Processing Unit(NPU)61(以下CPU61と表記)が備えるコアの集合である。図5の左下に示すように、CPU61は、揮発性メモリ62と、不揮発性メモリ63と接続されている。揮発性メモリ62は、例えばRandom Access Memory(RAM)を含む。揮発性メモリ62は、CPU61(各コア0〜M)の作業領域(共有メモリ)として使用される。
不揮発性メモリ63は、Read Only Memory(ROM)や、ハードディスクドライブ(HDD),Solid State Drive(SSD),フラッシュメモリなどの補助記憶装置の少なく
とも1つを含む。但し、不揮発性メモリ63の種類は上記例示に限定されない。不揮発性メモリ63は、CPU61によって実行されるプログラムや、プログラムの実行に際して使用されるデータを記憶する。
とも1つを含む。但し、不揮発性メモリ63の種類は上記例示に限定されない。不揮発性メモリ63は、CPU61によって実行されるプログラムや、プログラムの実行に際して使用されるデータを記憶する。
各コア0〜Mは、パケット受信71と、L1(レイヤ1)検索処理72と、L2検索処理73と、L3検索処理74と、L4(レイヤ4)検索処理75とを実行する。揮発性メモリ62には、L1登録情報76,L2登録情報77,L3登録情報78,及びL4レイヤ情報79が記憶されている。
パケット受信71で受信されたパケットは、L1検索処理72へ渡される。L1検索処理72では、レイヤ1(物理層)に係る情報がL1登録情報76から検索される。L2検索処理73では、レイヤ2(データリンク層)に係る情報がL2登録情報77から検索される。L3検索処理74では、レイヤ3(インターネット層)に係る情報をL3登録情報から検索する。L4検索処理75では、レイヤ4(トランスポート層)に係る情報がL4登録情報から検索される。但し、レイヤ1〜4の夫々の検索を行うことは必須要件ではなく、検索の目的に応じたレイヤの検索が行われるように、L1〜L4の検索処理の少なくとも一つを省略することができる。
L1〜L4検索処理72〜75で検索された情報(検索結果)は、制御振分処理80に与えられる。制御振分処理80では、検索結果に基づいて、パケットがパケット転送処理81,統計収集処理82,及びフィルタリング処理83のいずれかに振り分けられる。
パケット転送処理81では、パケットの宛先に対応する出力ポートの検索が行われ、パケットはパケット送信84へ送られる。パケット送信84は、パケットをパケット出力装置54へ送る。また、パケット転送処理81では、パケットの統計値を統計情報86に記録(記憶)することもある。
統計収集処理82では、パケットに関する情報の統計値が統計情報86の一部として記録される。統計収集処理82は、統計値を記録したパケットをパケット廃棄85に送って廃棄する。フィルタリング処理83では、パケットを所定のフィルタリング条件に従って廃棄するか転送するかが決定される。転送が決定されたパケットは、パケット送信84へ送られる。廃棄が決定されたパケットはパケット廃棄85へ送られ廃棄される。統計情報86は、揮発性メモリ62及び不揮発性メモリ63の少なくとも一方にて記憶・保存される。統計情報86は、適宜のタイミングで統計情報ネットワーク30へ送信される。
なお、入力ポート51の数,出力ポート56の数,CPU61が備えるコアの数は適宜設定可能である。パケット処理装置50が検索装置2,収集装置4,転送制御装置5として適宜の位置へ配置されることで、パケットの転送ルート検索,統計情報収集,パケット転送制御を実行することができる。
但し、検索装置2は、コアが行う処理のうち、少なくともパケット受信71と、パケット転送処理81と、パケット送信84とを実行するようにされていれば良い。また、統計情報収集装置4は、コアが行う処理のうち、少なくともパケット受信71と、統計情報聞統計収集処理82と、パケット廃棄85とを行うようにされていれば良い。また、転送制御装置5は、コアが行う処理のうち、パケット受信71と、フィルタリング処理83とを実行するようにされていれば良い。
コアが行う各処理は、複数のCPUやNPUの並列処理によってなされても良い。また、各コアで実行される処理は、集積回路(IC,LSI,Application Specific Integrated Circuit(ASIC))や、プログラマブルロジックデバイス(PLD)で実行され
るようにしても良い。PLDは、Field Programmable Gate Array(FPGA)やComplex
Programmable Logic Device(CPLD) を含む。
るようにしても良い。PLDは、Field Programmable Gate Array(FPGA)やComplex
Programmable Logic Device(CPLD) を含む。
CPU又はNPUは、「プロセッサ」,「制御装置」,「制御部」の一例である。プロセッサは、Digital Signal Processor(DSP)を含む。揮発性メモリ62,不揮発性メモリ63は、「記憶装置」,「記憶部」,「コンピュータ読み取り可能な記録媒体」の一例である。
図5に示したCPU61及び揮発性メモリ62は、CPU61がプログラムを実行することによってテーブル管理装置として動作することができる。図6は、CPU61を形成する各コア0〜Mが検索に用いるエントリ登録テーブルのデータ構造例を示す図である。
エントリ登録テーブル90は、図2に示したエントリ登録テーブル10に相当する。エントリ登録テーブル90は、一例として、フロー情報(例えば、パケットの宛先IPアドレス)を検索キーとして利用し、検索キーに対応する情報の検索に使用される。但し、検索キーは、IPアドレスに限定されない。検索キーは、例えば、宛先IPアドレスと宛先ポート番号(TCP/UDP)の組み合わせであっても良く、或いは、送信元IPアドレスと宛先アドレスとの組み合わせであっても良い。このように検索キーは適宜決定可能である。
エントリ登録テーブル90は、例えば、揮発性メモリ62上に作成されている。但し、不揮発性メモリ63上に作成されても良い。エントリ登録テーブル90は、CPU61が有するコアの数に応じて設けられた複数のエリア91を備えている。各エリア91は、コア0〜Mに対して割り当てられた各コア専用の領域となっている。例えば、コア0〜Mに対して、各コア0〜Mが処理するIPアドレスが予め決定されている。各コア0〜Mは、パケット転送処理81,統計収集処理82,フィルタリング処理83の実行に当たり、自身と対応するエリア91にアクセスする。
各エリア91は、1つのコアに対して割り当てられた複数のブロック92で形成される。ブロック92は、図2に示したブロック11に相当する。ブロック92は、所定のハッシュ関数を用いて検索キーである宛先IPアドレスから求めたハッシュ値でインデックス(検索)される。1つのハッシュ値に対して少なくとも1つのブロック92が割り当てられる。但し、1つのハッシュ値に対して割り当てられたブロック92が情報で一杯になった場合には、2以上のブロックが1つのハッシュ値に対して割り当てられることもある。
各ブロック92は、検索キーに対応する検索対象の情報を含むエントリがそれぞれ登録される複数の領域93で形成される。領域93は、図2に示した領域12に相当する。1ブロックを形成する領域93の数は、適宜設定可能である。各領域93には、アドレスが割り当てられている。アドレスとして揮発性メモリ62のアドレスが割り当てられても良い。アドレスは、エントリ番号(エントリの識別子)として使用し得る。
各領域93には、1エントリ分の情報が登録される。本実施形態では、エントリには、管理情報と、検索情報(検索対象の情報)と、制御情報と、出力情報と、統計情報とが含まれる。
管理情報は、登録状態と、ブロック識別子と、順方向“Next”と、逆方向“Pre”とを含む。登録状態は、領域93が塞状態(エントリ登録済み)か空き状態かを示す。ブロック識別子は、ブロック92の識別子である。ブロック識別子として、例えば、ハッシュ値の全部又は一部(ハッシュ値から所定の有効ビット数分を切り出した一部)が利用される。但し、ブロック識別子はハッシュ値と対応する(合致する)情報であれば良い。
また、ブロック識別子はオプション(省略可能)であり、後述する変形例において説明する。順方向“Next”は、上述した次アドレスであり、逆方向“Pre”は、上述した直前アドレスである。
また、ブロック識別子はオプション(省略可能)であり、後述する変形例において説明する。順方向“Next”は、上述した次アドレスであり、逆方向“Pre”は、上述した直前アドレスである。
検索情報は、図6に示す例では、パケットのフロー情報が一例として示されている。フロー情報は、送信元IPアドレスと、宛先IPアドレスと、送信元ポート番号と、宛先ポート番号と、プロトコルIDと、入力ポート番号とを含んでいる。但し、フロー情報の内容は適宜設定可能であり、MACアドレスやVLAN(仮想構内交換網)-IDのような
情報が含まれることもある。
情報が含まれることもある。
制御情報は、フロー情報に合致するパケットに対する制御(処理)内容を示す。制御内容は、例えば、パケット転送,統計収集,フィルタリングを含む。例えば、制御情報がパケット転送であれば、フロー情報に合致するパケットを出力情報で示される出力ポートから送出することが決定される。制御情報が統計収集であれば、フロー情報に合致するパケットの統計情報を保存する。制御情報がフィルタリングであれば、例えば、フロー情報に合致するパケットを廃棄する。もっとも、さらなるフィルタ条件や転送条件が制御情報に含まれていても良い。なお、制御内容はパケット転送,統計収集,フィルタリングに限定されず、これら以外の処理内容であっても良い。
出力情報は、パケット転送処理81で使用される情報であり、例えば、パケットの出力ポートを示す。統計情報は、パケットに係る統計値を示し、図5に示した統計情報86に相当する。図6には、統計情報の一例として、パケットの受信数と、受信バイト数と、転送したパケットの数と、転送したバイト数とが示されている。但し、統計情報の種類は当該例示に限定されない。エントリ中の統計情報の格納領域は、パケットに関する統計情報の保存領域として使用される。但し、統計情報がテーブル90以外の記憶領域に記憶されるようにしても良い。
なお、検索装置2は、図6に示したエントリ中の少なくとも管理情報,検索情報,出力情報を含むエントリが登録されるようになっていれば良い。収集装置4は、図6に示したエントリ中の少なくとも管理情報,検索情報,統計情報を含むエントリが登録されるようになっていれば良い。転送制御装置5は、図6に示したエントリ中の少なくとも管理情報,検索情報,制御情報(廃棄・転送)を含むエントリが登録されるようになっていれば良い。なお、エントリ登録テーブルの検索キー及びエントリに含まれる情報(検索対象の情報)は、テーブル管理装置が実装される装置の目的に合わせて適宜設定可能である。
以上のように、パケット処理装置50は、CPU61,揮発性メモリ62,不揮発性メモリ63を備え、揮発性メモリ62又は不揮発性メモリ63は、エントリ登録テーブル(「テーブル」の一例)を記憶する。CPU61は、プログラムの実行を通じてエントリ登録テーブルの90(10)のエントリの管理を行う。このように、パケット処理装置50(検索装置2,収集装置4,転送制御装置5)は、テーブル管理装置が実装された装置として動作する。
図7は、CPU61(各コア)によって実行されるエントリ検索処理の一例を示すフローチャートである。図7以降のフローチャートの説明では、説明を簡単にするため、図2に示したエントリ登録テーブル10中の或るブロック11(エントリ登録表)を用いた処理について説明する。図12に示したエントリ中の「各種情報」は、図6に示したエントリ中の「検索情報」,「制御情報」,「統計情報」を含み得る。
図7の処理は、検索キーが入力されることによって開始される。入力(検索キー)は一例として、パケットに関するフロー情報であると仮定する。最初の01において、コアは
、所定のハッシュ関数を用い、入力されたフロー情報からハッシュ値を算出する。
、所定のハッシュ関数を用い、入力されたフロー情報からハッシュ値を算出する。
続いて、コアは、ハッシュ値に対応するブロック11(エントリ登録表)の先頭位置(アドレス:N)を算出する(02)。次に、コアは、先頭位置(N)の領域12にアクセスし、当該領域12におけるエントリの登録状態を判定する。このとき、領域12が空き状態であれば、処理が05に進む。これに対し、領域12が塞状態であれば、コアは、領域12に登録されたエントリ中の各種情報とフロー情報(入力情報)とを比較する。
05の処理では、コアは、フロー情報と各種情報とが一致するか否かを判定する。フロー情報が各種情報と一致する場合には、処理が08に進む。これに対し、フロー情報と各種情報とが一致しない場合には、処理が06に進む。03で領域12が空き状態と判定され、05の処理が行われる場合には、フロー情報が各種情報と不一致として扱われ、処理が06に進む。
06では、コアは、現在参照中の領域12における次アドレスの値が“0(なし)”か否か(次の領域12の有無)を判定する。このとき、次アドレスの値が“0(なし)”(次の領域12無し)であれば、コアは、“未登録”の結果を出力する(10)。その後、エントリ検索処理を終了する。この場合、例えば、フロー情報をエントリ登録表に登録するためのエントリ登録処理(図9)が実行される。これに対し、次アドレスの値が“0(なし)”でなければ(次の領域12あり)、コアは、次の領域12の情報、すなわち、当該領域12の次アドレス“Next”で指定されたアドレスの領域12にアクセス(参照)し(07)、処理を03に戻す。07において、次アドレス“Next”が登録されていなければ、コアは現在の領域12のアドレスの次のアドレスにアクセスする。
処理が08に進んだ場合(検索成功)の場合には、コアは、登録済みエントリ番号として、当該領域12のアドレスを設定し(08)、フロー情報が既に登録済みであることをアドレスとともに出力し(09)、エントリ検索処理を終了する。エントリのアドレスは、例えば、パケット転送処理81,統計収集処理82,フィルタリング処理83の少なくとも1つに引き渡され、各処理で使用される。
図8は、CPU61(各コア)によって実行される空き領域検索処理の一例を示すフローチャートである。図8に示す処理は、例えば、フロー情報の入力によって開始される。最初の101〜103までの処理は、図7に示した01〜03の処理と同じであるので説明を省略する。103において、領域12の登録状態が塞状態であれば、処理が106に進み、登録状態が空き状態であれば、処理が104へ進む。
104では、空き領域の検索が成功したものとして、コアは、空き状態の領域12のアドレスを空き領域番号に設定する。そして、コアは、空き領域ありの情報と空き領域番号(領域12のアドレス)を出力し、空き領域検索処理を終了する。
106では、コアは、現在参照(アクセス)している領域12に登録されている[N].Next列(“Next”(次アドレス))を取り出す。続いて、コアは、次アドレスの値が“0(なし)”か否かを判定する(107)。このとき、次アドレスの値が“0(なし)”であれば、コアは、空き領域なしの結果を出力し(109)、空き領域検索処理を終了する。これに対し、次アドレスの値が“0(なし)”でなければ、コアは、参照アドレスの値を次の領域12のアドレス(現在アドレスがNであればN+1)に設定し、処理を103に戻す。これによって、次アドレス(N+1)の領域12に関して103以降の処理が繰り返される。
図9及び図10は、CPU61(各コア)によって実行されるエントリ登録処理の一例
を示すフローチャートである。図9の処理は、例えば、エントリ登録対象のパケットの入力によって開始される。最初の201において、コアは、送信元IPアドレス,宛先IPアドレス,プロトコル識別子,送信元ポート番号,宛先ポート番号などをパケットからフロー情報として抽出する。但し、フロー情報は、マニュアル入力或いは他の機器との通信で入手されたものであっても良い。
を示すフローチャートである。図9の処理は、例えば、エントリ登録対象のパケットの入力によって開始される。最初の201において、コアは、送信元IPアドレス,宛先IPアドレス,プロトコル識別子,送信元ポート番号,宛先ポート番号などをパケットからフロー情報として抽出する。但し、フロー情報は、マニュアル入力或いは他の機器との通信で入手されたものであっても良い。
次の202では、コアは、エントリ検索処理(図7)を実行する。203では、コアは、エントリ検索処理の結果に基づき、201で得たフロー情報が既にエントリ登録表に登録済みか否かを判定する。このとき、エントリ登録済みであれば、エントリ登録処理が終了する。これに対し、エントリが未登録であれば、コアは、空き領域検索処理(図8)を実行する(204)。
空き領域検索処理の結果、空き領域が発見された場合には、処理が207(図10)に進む。これに対し、空き領域が発見されない場合には、コアは、空き領域がないことを出力し、登録失敗としてエントリ登録処理を終了する。
207以降の処理は、一例として、空き状態の領域12としてアドレス“N+1”の領域が発見された場合について説明する。207では、コアは、アドレス“N+1”の領域12に201の処理で得たフロー情報を設定(登録)する。
次に、コアは、アドレス“N+1”の領域12が先頭(先頭の領域12)か否かを判定する。当該判定は、アドレス“N+1”の領域12に格納された直前アドレス“Pre”の値が“0”であるか否かを以てなされる。このとき、直前アドレスの値が0であれば処理が217に進み、そうでなければ処理が210に進む。
210では、コアはn、アドレス“N+1”の領域12が最終(最後尾の領域12)か否かを判定する。当該判定は、アドレス“N+1”の領域12に格納された次アドレス“Next”の値が“0”であるか否かを以てなされる。このとき、次アドレスの値が0であれば処理が219に進み、そうでなければ処理が211に進む。
211では、コアは、アドレス“N+1”の領域12の直前の領域12([N+1-1]
すなわちアドレス“N”の領域12)のアドレス“N”を、アドレス“N+1”の領域12の次アドレス“Next”の値に設定する。
すなわちアドレス“N”の領域12)のアドレス“N”を、アドレス“N+1”の領域12の次アドレス“Next”の値に設定する。
次の212では、コアは、アドレス“N”の領域12で次アドレス“Next”として設定されている“N+2”([N+1-1].Next)の値を、アドレス“N+1”の次
アドレス([N+1].Next)に設定する。
アドレス([N+1].Next)に設定する。
次の213では、コアは、アドレス“N”の領域12([N+1−1])の次アドレス“Next”に、次の領域12のアドレス“N+1”を設定する。次の214では、コアは、アドレス“N”([N+1−1])の次アドレスとして設定されていたアドレス“N+2”の領域における直前アドレス“Pre”に対し、アドレス“N+1”を設定する。
次の215では、コアは、アドレス“N+1”の領域12における登録状態を“1(塞)”に設定する。その後、コアは、登録成功を示す情報を出力し(216)、エントリ登録処理を終了する。
ところで、処理が217に進んだ場合には、コアは、アドレス“N+1”の領域12の直前の領域12(アドレス“N”の領域12)における次アドレス“Next”の値として、次の領域12のアドレス“N+1”を設定する。
次の218では、コアは、アドレス“N+1”の領域12における直前アドレス“Pre”の値として、直前の領域12のアドレス“N”を設定する。その後処理が215に進む。
また、処理が219に進んだ場合には、コアは、アドレス“N+1”の領域12における直前アドレス“Pre”の値として、アドレス“N+1”の領域12の直前の領域12のアドレス“N”を設定する。
次の220では、コアは、アドレス“N”の領域12([N+1−1])における次アドレス“Next”の値に、次の領域12のアドレス“N+1”を設定する。その後、処理が215に進む。
図11は、CPU61(各コア)によって実行されるエントリ削除処理の一例を示すフローチャートである。最初の301において、コアは、送信元IPアドレス,宛先IPアドレス,プロトコル識別子,送信元ポート番号,宛先ポート番号などをパケットからフロー情報として抽出する。或いは、コアはマニュアル入力や他機器との通信によって入手(取得)されたフロー情報を受け取るようにしても良い。
次の302では、コアは、フロー情報を入力としてエントリ検索処理(図7)を実行する。次の303では、コアは、エントリ検索処理の結果に基づき、削除対象のフロー情報に対応するエントリが登録済か否かを判定する。このとき、エントリが未登録であれば、コアは、削除成功を示す情報を出力し、エントリ削除処理を終了する。もっとも、削除成功の代わりにエントリが未登録である旨が出力されるようにしても良い。
エントリが登録済である場合には、処理が305に進む。305以降の処理は、一例として、アドレス“N+1”の領域12に削除対象のエントリが登録されている場合を仮定する。305において、コアは、アドレス“N+1”の領域12の登録状態に“0(空き)”を設定する。
次の306において、コアは、アドレス“N+1”の領域12に登録されている各種情報を0クリアする(削除する)。但し、306の処理は省略可能である。続いて、コアは、アドレス“N+1”の領域12がブロック11の最後尾の領域12(アドレス“N+4”)か否かを判定する(307)。このとき、領域12が最後尾の領域12であれば、処理が309に進み、そうでなければ処理が308に進む。
308では、コアは、アドレス“N+1”の領域12における次アドレス“Next”に設定されているアドレス“N+1+1=N+2”を参照し、アドレス“N+2”の領域12の直前アドレス“Pre”の値を、アドレス“N+1”の領域12の直前の領域12のアドレス“N”に設定(更新)する。
次の309では、コアは、アドレス“N+1”の領域12が先頭の領域(アドレス“N”)であるか否かを判定する。このとき、アドレス“N+1”の領域12が先頭の領域であれば処理が311に進み、そうでなければ処理が310に進む。
310では、コアは、アドレス“N+1”の領域12の直前の領域12(アドレス“N”)を参照し、当該領域12における次アドレス“Next”の値を、アドレス“N+1”の領域12の次の領域12のアドレス“N+2”に設定(更新)する。
311では、コアは、削除成功を示す情報を出力し、エントリ削除処理を終了する。も
っとも、削除成功の代わりにエントリが未登録である旨が出力されるようにしても良い。このようにして、エントリ削除の際には、当該エントリが登録された領域12の前後の領域12が連続して参照されるようにリンク情報の更新が行われる。これによって、エントリ削除に伴うエントリの並べ換え(繰り上げ)が発生しないので、テーブル(エントリ登録表)の更新を少なくとも参考例に比べて短時間で終えることができる。
っとも、削除成功の代わりにエントリが未登録である旨が出力されるようにしても良い。このようにして、エントリ削除の際には、当該エントリが登録された領域12の前後の領域12が連続して参照されるようにリンク情報の更新が行われる。これによって、エントリ削除に伴うエントリの並べ換え(繰り上げ)が発生しないので、テーブル(エントリ登録表)の更新を少なくとも参考例に比べて短時間で終えることができる。
図12は、CPU61(各コア)によって実行されるパケット転送処理81の一例を示すフローチャートである。図12に示す処理は、パケットの受信によって開始される。最初の401では、コアは、パケットに含まれたフロー情報を取り出す。
次の402で、コアは、フロー情報を入力としてエントリ検索処理(図7)を実行する。次の403で、コアは、エントリ検索処理の結果に基づき、フロー情報に対応するエントリが登録済か否かを判定する。このとき、エントリが登録済であれば、処理が404に進み、未登録であれば、処理が407に進む。
404では、コアは、エントリ中の制御情報に従いパケットに対する処理を決定する。ここでは、パケット転送処理81を行うことを決定する。そして、コアは、受信されたパケットに基づきエントリ中の統計情報(受信数,受信バイト,転送数,転送バイト:図6参照)を更新する(405)。さらに、コアは、エントリ中の出力ポートへパケットを転送する処理を行う(406)。406の処理が終了すると、コアは、次のパケット受信を待ち受ける状態に戻る。パケット転送処理81により、パケットを宛先へ向けて転送することができる。
407に処理が進んだ場合には、コアは、統計情報の更新処理、例えば、パケット廃棄数の更新を行い、その後、受信パケットを廃棄する(408)。その後、コアは次のパケットを待ち受ける状態となる。なお、405及び407の処理はオプションであり、実行しなくても良い。
図13は、CPU61(各コア)によって実行される統計収集処理82の一例を示すフローチャートである。図13における401〜404,407及び408の処理は、図12で示した処理と同じであるので説明を省略する。但し、404において、コアは、統計収集処理82を実行することを決定する。この場合、コアは、405において、パケットに基づきエントリ中の統計情報の更新処理を行う。その後、コアは、受信パケットが用済みであることから、パケットを廃棄する(409)。409の処理が終了すると、コアは、次のパケット受信を待ち受ける状態に戻る。エントリに格納された統計情報は、統計情報ネットワーク30へ送られ、トラフィック量の監視など、適宜の目的下で使用される。
図14は、CPU61(各コア)によって実行されるパケット転送処理81の一例を示すフローチャートである。図13における401〜404,407及び408の処理は、図12で示した処理と同じであるので説明を省略する。但し、404において、コアはフィルタリング処理83を実行することを決定する。
この場合、コアは、エントリ中の制御情報に基づき、受信パケットに対して転送が指定されているかフィルタ指定(すなわち廃棄)が指定されているかを判定する。転送が指定されている場合、コアは、統計情報の更新処理(410)及び出力ポートへのパケット転送処理(411)を行う。これらの処理は、図12に示した405及び406の処理と同じであるので説明は省略する。なお、410の処理はオプションである。
一方、コアは、受信パケットに対するフィルタ指定がなされている場合には、当該パケットに関する統計情報の更新処理を行い(412)、パケットを廃棄する(413)。こ
れにより、有害な、或いは権限のないパケットがコアネットワーク1とアクセスネットワーク20との間を流れることを阻止できる。412の処理はオプションである。
れにより、有害な、或いは権限のないパケットがコアネットワーク1とアクセスネットワーク20との間を流れることを阻止できる。412の処理はオプションである。
以上説明した実施形態によれば、エントリ登録テーブル10(90)のブロック11(エントリ登録表)からエントリが削除される場合に、削除対象のエントリの直前及び直後(次)で参照されるエントリを登録した領域12のリンク情報(次アドレス“Next”及び直前アドレス“Pre”)が更新される。このような更新処理によって、ブロック11(テーブルの一例)の更新にかかる時間を短縮することができる。これによって、更新処理の遅延が検索処理に影響を与えるのを回避することもできる。
<変形例>
次に、実施形態の変形例として、第2のエントリ検索処理,第2の空き領域検索処理,及び第2のエントリ登録処理について説明する。第2のエントリ検索処理は、エントリ検索処理(図7)の変形例である。第2の空き領域検索処理は空き領域検索処理(図8)の変形例である。第2のエントリ登録処理は、エントリ登録処理(図9及び図10)の変形例である。
次に、実施形態の変形例として、第2のエントリ検索処理,第2の空き領域検索処理,及び第2のエントリ登録処理について説明する。第2のエントリ検索処理は、エントリ検索処理(図7)の変形例である。第2の空き領域検索処理は空き領域検索処理(図8)の変形例である。第2のエントリ登録処理は、エントリ登録処理(図9及び図10)の変形例である。
これらの処理は、以下のような状況を想定している。上記したエントリ削除処理(図11)によれば、連続した複数の領域12のそれぞれにエントリが登録されている場合に、途中のエントリが削除されると、削除対象のエントリに関連する(リンクする)リンク情報が更新される。このとき、リンク情報は、削除エントリを飛び越して削除エントリの前後で参照されるエントリが連続して参照されるように更新される。これにより、エントリ検索が短時間で行われるようにしている。
その後、エントリが追加される場合には、エントリ登録処理(図9及び図10)において、エントリの削除によって空き状態となった領域12に追加の(新たな)エントリが登録される。このように、ブロック11(複数の領域12)は、エントリが登録された領域12間に無駄な空き状態の領域12ができないように管理される。換言すれば、削除によって生じた隙間の領域12に追加のエントリを登録するようにして、ブロック11を形成する領域12の数が少なくなるようにしている。
もっとも、1つのブロック11を形成する領域12の数は上限があるので、全ての領域12にエントリが登録されると、当該ブロックには新たなエントリを登録できない状態となる。しかしながら、新たなエントリを登録する領域をエントリ登録テーブル10(90)外に作成すると、エントリの検索効率が低下する虞がある。或いは、新たな領域の要求を図示しないメモリ管理部に行うと、テーブル構成の更新が発生し、当該更新に時間がかかる虞がある。
上記理由から、或るブロック11がエントリで一杯になった(全ての領域12にエントリが登録されている)場合には、他のブロック11にハッシュ値に対応するエントリを登録するようにする。後述する第2のエントリ検索処理,第2の空き領域検索処理,及び第2のエントリ登録処理は、上記したようなエントリをブロック11を越えて(ブロック11間に跨がって)登録する場合の処理である。
図15は、CPU61(各コア)によって実行される第2のエントリ検索処理の一例を示すフローチャートである。図15に示す第2のエントリ検索処理は、以下の点でエントリ登録処理(図7)と異なっている。
すなわち、03Aの処理が03と04との間に追加(挿入)されている。また、06のYes判定と10との間に06A及び06Bの処理が挿入されている。第2のエントリ検
索処理で用いられるエントリ登録表では、登録されたエントリがブロック識別子を含む。ブロック識別子は、エントリに対応するハッシュ値の全部又は一部である。
索処理で用いられるエントリ登録表では、登録されたエントリがブロック識別子を含む。ブロック識別子は、エントリに対応するハッシュ値の全部又は一部である。
03Aの処理において、コアは、01で得られたハッシュ値がブロック識別子と一致するか否かを判定する。ブロック識別子がハッシュ値と一致する場合には、当該エントリが検索において有効な(フロー情報(入力)と関係する)エントリとして処理が04に進む。これに対し、ブロック識別子がハッシュ値と一致しない場合には、当該エントリが検索において無効な(フロー情報(入力)と無関係の)エントリとして処理が05に進む。
06Aは、06において、ブロック11において次の領域12がない場合に実行される。06Aでは、コアは、現在の検索対象のブロック11がエントリ登録テーブル10(90)における最終ブロックであるか否かを判定する。このとき、現在のブロック11が最終ブロックであれば、処理が10へ進む。次の検索対象のブロックがないからである。
これに対し、現在のブロック11が最終ブロックでない場合には、コアは、次の検索対象に現在のブロック11の次にあるブロック11を指定(設定)する(06B)。当該指定は、例えば、次のブロック11のアドレス(ブロックアドレス)を設定することでなされる。その後、処理が02へ戻る。但し、次の(2巡目以降の)02の処理では、単に次ブロックの先頭が算出されるだけで、当該次ブロックがハッシュ値と対応するか否かは判定されない。
このようにして、第2のエントリ検索処理では、ハッシュ値に対応するエントリの検索がブロック11を跨いで実行される。これによって、1つのブロック11内に収まりきらないエントリがあっても、他のブロック11に登録し、検索を行うことが可能となる。
以上の点を除き、第2のエントリ検索処理は、図7に示したエントリ検索処理と同じであるので説明は省略する。
図16は、CPU61(各コア)によって実行される第2の空き領域検索処理の一例を示すフローチャートである。第2の空き領域検索処理は、107のYes判定と109の処理との間に107A及び107Bの処理が挿入されている点で、空き領域検索処理(図8)と異なっている。
107にて、空き領域を検索しているブロック11において次の領域12がないと判定されると、107Aが実行される。107Aでは、コアは、現在の検索対象のブロック11がエントリ登録テーブル10(90)における最終ブロックであるか否かを判定する。このとき、現在のブロック11が最終ブロックであれば、処理が109へ進む。次の検索対象のブロックがないからである。
これに対し、現在のブロック11が最終ブロックでない場合には、コアは、次の検索対象に現在のブロック11の次にあるブロック11を指定(設定)する(107B)。当該指定は、例えば、次のブロック11のアドレス(ブロックアドレス)を設定することでなされる。その後、処理が102へ戻る。但し、次の(2巡目以降の)102の処理では、単に次ブロックの先頭が算出されるだけで、当該次ブロックがハッシュ値と対応するか否かは判定されない。従って、次以降のブロック11に登録されるエントリに対応するハッシュ値と、次以降のブロック11に関連づけられたハッシュ値とは異なる。以上を除き、第2の空き領域検索処理は空き領域検索処理(図7)と同じであるので説明を省略する。
第2の空き領域検索処理によれば、空き領域がブロック11間に跨がって検索される。これによって、次に説明する第2のエントリ登録処理において、異なる(2以上の)ブロ
ック11に或るハッシュ値に対応するエントリを夫々登録することが可能となる。なお、1つのハッシュ値に関連する複数のブロック11が用意されることもあり得る。
ック11に或るハッシュ値に対応するエントリを夫々登録することが可能となる。なお、1つのハッシュ値に関連する複数のブロック11が用意されることもあり得る。
図17及び図18は、CPU61(各コア)によって実行される第2のエントリ登録処理の一例を示すフローチャートである。第2のエントリ登録処理では、図17に示す202A,204Aのそれぞれにおいて、第2のエントリ検索処理,第2の空き領域検索処理が実行される点で、エントリ登録処理(図9)と異なっている。
また、第2のエントリ登録処理では、図18に示すように、207と208との間に207Aの処理が挿入されている点で、エントリ登録処理(図10)と異なっている。207Aでは、[N+1]、すなわち、第2の空き領域検索処理で発見された空き状態の領域12に対し、ブロック識別子を登録(記憶)する。このとき、ブロック識別子として、第2のエントリ検索処理にて得られたハッシュ値を登録する。
ハッシュ値として、ハッシュ値全体が登録されても良く、ハッシュ値から所定の有効ビット数分を切り出したハッシュ値の一部が登録されても良い。また、ブロック11間で、ブロック識別子として登録されるハッシュ値が異なっていても良い。但し、第2のエントリ検索処理における03Aの判定処理で、ハッシュ値とブロック識別子とが一致するとの判定結果が得られることが条件となる。
このように、変形例によれば、テーブル更新処理に時間がかからない形式で、ブロック11に収まらないエントリを他のブロック11に登録することができ、検索においても、エントリ検索処理(図7)とほぼ同様のロジックでエントリを検索することができる。すなわち、検索処理に際して複雑な処理を回避して、検索に時間がかかるのを回避することができる。
なお、変形例において、或るハッシュ値に対応するエントリが最初に登録されるブロック11(第1のブロックの一例)に登録される各エントリについては、ブロック識別子の登録を省略しても良い。この場合、第1のブロック11に収まらないエントリを登録する他のブロック11(第2のブロック)に登録される各エントリにはブロック識別子を登録する。そして、検索処理において、第1のブロック11については、ブロック識別子とハッシュ値との一致判定(03A)を行わず、第2以降のブロック11についてはブロック識別子とハッシュ値との一致判定を行うようにしても良い。
10,90・・・エントリ登録テーブル
11・・・ブロック
12・・・領域(小ブロック)
61・・・CPU又はNPU
62・・・揮発性メモリ
63・・・不揮発性メモリ
11・・・ブロック
12・・・領域(小ブロック)
61・・・CPU又はNPU
62・・・揮発性メモリ
63・・・不揮発性メモリ
Claims (7)
- 複数の検索キーの夫々から求まるハッシュ値と関連づけて前記複数の検索キーの夫々と対応する複数のエントリが登録されるテーブルを記憶する記憶部と、
前記テーブルに登録された各エントリについてエントリの直前及び次に参照されるエントリを示すリンク情報を記憶する処理と、前記テーブルに登録されたエントリを削除するときに削除対象のエントリとリンクするエントリのリンク情報を更新する制御部と、
を含むテーブル管理装置。 - 前記制御部は、前記削除対象のエントリの直前に参照されるエントリと当該削除対象のエントリの次に参照されるエントリとが続けて参照されるように前記リンク情報を更新する
請求項1に記載のテーブル管理装置。 - 前記制御部は、前記リンク情報を対応するエントリに含めて前記テーブルに登録する
請求項1又は2に記載のテーブル管理装置。 - 前記テーブルは、複数のエントリを登録可能な複数の領域を含み、
前記リンク情報に含まれる各エントリを示す情報は、当該各エントリが登録された領域のアドレスである
請求項1から3のいずれか1項に記載のテーブル管理装置。 - 前記テーブルは、複数のエントリを登録可能な複数の領域を含み、
前記複数の領域の夫々は、当該領域が空き状態か否かを示す空き情報を含み、
前記制御部は、前記空き情報を用いて追加のエントリを登録する空き状態の領域として直前及び直後の領域にエントリが登録済みである空き領域が発見されたときに、前記追加のエントリを当該空き領域に登録するとともに、当該空き領域の直前の領域に登録されているエントリが前記追加のエントリの直前に参照され、且つ当該空き領域の直後の領域に登録されているエントリが前記追加のエントリの次に参照されるようにリンク情報の更新を行う
請求項1から4のいずれか1項に記載のテーブル管理装置。 - 前記テーブルは、それぞれ前記複数の領域で形成された複数のブロックを含み、
前記制御部は、或るハッシュ値に関して前記複数のブロック中の第1のブロックの全領域にエントリが登録された状態において、前記第1のブロックと異なる第2のブロックに前記或るハッシュ値と関連するエントリを登録するときに、登録対象のエントリに前記ハッシュ値と対応するブロック識別子を登録する
請求項4又は5に記載のテーブル管理装置。 - 複数の検索キーの夫々から求まるハッシュ値と関連づけて前記複数の検索キーの夫々と対応する複数のエントリが登録されるテーブルをテーブル管理装置が管理する方法であって、
テーブル管理装置が、
前記テーブルに登録された各エントリについてエントリの直前及び次に参照されるエントリを示すリンク情報を記憶し、
前記テーブルに登録されたエントリを削除するときに削除対象のエントリとリンクするエントリのリンク情報を更新する
ことを含むテーブル管理装置のテーブル管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014127350A JP2016006942A (ja) | 2014-06-20 | 2014-06-20 | テーブル管理装置,及びテーブル管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014127350A JP2016006942A (ja) | 2014-06-20 | 2014-06-20 | テーブル管理装置,及びテーブル管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016006942A true JP2016006942A (ja) | 2016-01-14 |
Family
ID=55225167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014127350A Pending JP2016006942A (ja) | 2014-06-20 | 2014-06-20 | テーブル管理装置,及びテーブル管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016006942A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110045690A (zh) * | 2018-01-12 | 2019-07-23 | 阿自倍尔株式会社 | 控制器、动作状态获取系统及方法 |
JP7414149B2 (ja) | 2020-09-07 | 2024-01-16 | 日本電信電話株式会社 | コネクション数計測装置、方法、およびプログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0581102A (ja) * | 1991-09-19 | 1993-04-02 | Fuji Xerox Co Ltd | テーブル管理方式 |
JPH064228A (ja) * | 1992-06-24 | 1994-01-14 | Fujitsu Ltd | 半導体ディスク装置 |
JP2009147587A (ja) * | 2007-12-13 | 2009-07-02 | Nec Corp | データ検索装置、データ検索方法、及びデータ検索用プログラム |
JP2012093882A (ja) * | 2010-10-26 | 2012-05-17 | Toshiba Corp | メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法 |
-
2014
- 2014-06-20 JP JP2014127350A patent/JP2016006942A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0581102A (ja) * | 1991-09-19 | 1993-04-02 | Fuji Xerox Co Ltd | テーブル管理方式 |
JPH064228A (ja) * | 1992-06-24 | 1994-01-14 | Fujitsu Ltd | 半導体ディスク装置 |
JP2009147587A (ja) * | 2007-12-13 | 2009-07-02 | Nec Corp | データ検索装置、データ検索方法、及びデータ検索用プログラム |
JP2012093882A (ja) * | 2010-10-26 | 2012-05-17 | Toshiba Corp | メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110045690A (zh) * | 2018-01-12 | 2019-07-23 | 阿自倍尔株式会社 | 控制器、动作状态获取系统及方法 |
JP2019124998A (ja) * | 2018-01-12 | 2019-07-25 | アズビル株式会社 | コントローラ、動作状態取得システムおよび方法 |
JP7414149B2 (ja) | 2020-09-07 | 2024-01-16 | 日本電信電話株式会社 | コネクション数計測装置、方法、およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10284478B2 (en) | Packet processing device, packet processing method and program | |
US10148573B2 (en) | Packet processing method, node, and system | |
US7099324B2 (en) | System and method for processing packets | |
US9203743B2 (en) | Packet forwarding system, control device, forwarding device and method and program for preparing processing rules | |
US8169910B1 (en) | Network traffic analysis using a flow table | |
EP3057270A1 (en) | Technologies for modular forwarding table scalability | |
US7313138B2 (en) | Router device and routing method | |
US10791051B2 (en) | System and method to bypass the forwarding information base (FIB) for interest packet forwarding in an information-centric networking (ICN) environment | |
JP6437693B2 (ja) | マルチキャストデータパケット転送 | |
US8923298B2 (en) | Optimized trie-based address lookup | |
WO2018184487A1 (zh) | Bier报文的转发方法及装置 | |
US9270593B2 (en) | Prediction based methods for fast routing of IP flows using communication/network processors | |
TWI241089B (en) | Method and apparatus to perform network routing using multiple length trie blocks | |
JP2016006942A (ja) | テーブル管理装置,及びテーブル管理方法 | |
JP6678401B2 (ja) | 変更のためにパケットを個々のレイヤに分割し、変更後のレイヤを情報処理で継合する方法およびその装置 | |
WO2017095801A1 (en) | Forwarding table compression | |
JP5961745B2 (ja) | 通信装置またはパケット転送方法 | |
WO2015124015A1 (zh) | 一种数据包转发方法及设备 | |
EP2652920A1 (en) | Managing stale route removal in a routing information base of a network element | |
US7843927B1 (en) | Methods, systems, and computer program products for routing packets at a multi-mode layer 3 packet forwarding device | |
US8755386B2 (en) | Traceback packet transport protocol | |
JP2007221514A (ja) | ルータ装置、ルータ装置におけるルート決定方法 | |
JP5814830B2 (ja) | フロー単位パケット転送のための宛先検索装置および検索方法 | |
CN107094114A (zh) | 用于模块化转发表可缩放性的技术 | |
CN110445721B (zh) | 一种报文转发方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170309 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180206 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20180731 |