(A)第1の実施形態
以下、本発明によるパケット処理装置及び方法、並びに通信装置の第1の実施形態を、図面を参照しながら詳述する。なお、この実施形態のパケット処理装置及び通信装置は、それぞれ、受信パケット処理部及びネットワーク中継装置である。
(A−1)第1の実施形態の構成
図2は、第1の実施形態のネットワーク中継装置10の機能的構成を示すブロック図である。なお、図2における括弧内の符号は、後述する第2の実施形態でのみ用いられるものであるものとする。
ネットワーク中継装置10は、N個の物理媒体11(11−1〜11−N)、物理終端部12、受信パケット処理部13、CAM14、NPU15、及び送信パケット処理部16を有している。ネットワーク中継装置10としては、例えば、L3スイッチやルータ等のパケットを中継するネットワーク装置が該当する。
物理媒体11は、ネットワーク中継装置10を外部のネットワークに接続させるための物理インタフェースである。物理媒体11としては、既存のネットワーク装置のインタフェースを適用することができ、例えば、ネットワーク中継装置10が1000Base−T等のEthernet(登録商標)に対応したインタフェースであれば、物理媒体11は、RJ−45コネクタ(ポート)等により構成される。また、物理媒体11は、無線通信用のインタフェース(例えば、無線LAN用のインタフェース)であっても良く、採用される通信法式は限定されないものである。
物理終端部12は、物理媒体11から伝達された信号の物理レイヤー(PHY)に係る処理、及び、メディアアクセスコントロール(MAC)に係る処理を行うものである。物理終端部12としては、既存のネットワーク装置と同様のものを適用することができる。
受信パケット処理部13は、物理終端部12の処理により受信したパケット(フレーム)の識別及び廃棄処理等を行うものである。
CAM14は、受信パケット処理部13が、パケット識別の処理を行う際の識別子の格納及び検索を実施するデータ検索専用メモリである。CAM14のハードウェアとしては、既存のネットワーク機器に用いられている連想メモリを適用することができる。CAM14では、受信パケット処理部13から送信された検索オーダの受信、及び、受信パケット処理部13への検索結果の送信をパイプライ化して、処理を高速化しているものとする。
NPU15は、受信パケット処理部13にて識別されたパケットデータをもとに、さらに高度(高レイヤ)のパケット処理を実施するものである。NPU15及びNPU15の処理内容については、既存のネットワーク装置と同様のものを適用することができる。
送信パケット処理部16は、NPU15から送信されるパケットの物理終端部12への転送処理等を行うものである。送信パケット処理部16としては、既存のネットワーク装置と同様のものを適用することができる。
次に、受信パケット処理部13とCAM14との間の処理の概要について説明する。
受信パケット処理部13では、受信したパケットデータの所定の部分のデータ(例えば、ヘッダのうち1又は複数の項目のデータ)をパケット識別データとして抽出し、抽出したパケット識別データについてCAM14へ検索オーダを送信し、CAM14からの検索結果に基づいて、受信したパケット(フレーム)の識別及び廃棄処理等を行う。
CAM14には、予めパケット識別データごとに、対応する処理内容のデータが記憶されている。そして、CAM14は、受信パケット処理部13から与えられた検索オーダのパケット識別データが登録されていれば、そのパケット識別データに対応するデータを返答し、与えられたパケット識別データが登録されていない場合(検索オーダのパケット識別データが検出できなかった場合)にはその旨を返答する。ここでは、CAM14は、与えられたパケット識別データと一致するデータが格納されているメモリアドレスを返答するものとして説明する。なお、受信パケット処理部13から送信されるパケット識別データの内容や、CAM14に登録される内容については限定されないものである。例えば、CAM14内で、パケット識別データに検索結果として返すデータを対応付けて登録するようにしても良い。
受信パケット処理部13が、それぞれのパケットデータについて、CAM14へ検索オーダを送信する回数(段数)は、パケットデータの内容によって異なるものとする。ここでは、説明を簡易にするために、受信パケット処理部13が、各パケットデータに対して実施する検索オーダの回数(段数)の上限は2回であるものとして説明するが、この上限は限定されないものであり、パケットデータに対する検索処理の内容によって適切な段数を適用するようにしても良い。
例えば、受信パケット処理部13では、あるパケットデータについて1段目の検索オーダの検索結果(返答されたメモリアドレス)によって、2段目の検索オーダが必要か否かを判定する。なお、受信パケット処理部13において、2段目の検索オーダの要否を判定する方法としては、例えば、予想される1段目の検索オーダの検索結果ごとに、対応する処理の内容を記述したテーブル情報等を受信パケット処理部13内に保持しておき、そのテーブル情報を用いて判定するようにしても良い。
そして、受信パケット処理部13では、2段目の検索オーダが必要と判定した場合には、2段目の検索オーダのためのパケット識別データを当該パケットデータから抽出して、新たに抽出したパケット識別データの検索オーダを、CAM14に送信して、検索結果を受取る。なお、2段目の検索オーダに用いるパケット識別データの内容(検査項目)については、例えば、予め2段目の検索オーダとして定められている内容(検査項目)を適用するようにしても良いし、1段目の検索オーダの検索結果ごとに、対応する2段目の検索オーダの内容(検査項目)を記述したテーブルを用意しておき、そのテーブルに従った内容(検査項目)を適用するようにしても良い。
そして、受信パケット処理部13は、それぞれのパケットデータと共に、当該パケットデータに関するCAM14の検索結果があれば、必要に応じてその検索結果をNPU15に与える。なお、受信パケット処理部13は、当該パケットデータに関するCAM14の検索結果を、NPU15に与える際に、全ての検索結果を与えるようにしても良いし、最終段(2段目)の検索結果だけを与えるようにしても良い。また、CAM14への検索オーダで、一度もヒット(検出)しなかったパケットデータについては、受信パケット処理部13からNPU15へその旨を通知するようにしても良いし、特に検索結果を通知しないようにしてもよい。
図3は、受信パケット処理部13とCAM14との間の処理概要の例について説明したフローチャートである。
図3では、受信パケット処理部13が、パケットデータPについて、2段目までの検索オーダをCAM14に送信した場合の例について説明している。
ここでは、受信パケット処理部13にパケットデータPが到来すると、受信パケット処理部13は、まず、パケットデータPのIPヘッダから抽出した宛先IPアドレスと、パケットデータPのTCPヘッダ又はUDPヘッダから抽出した送信ポート番号とを有するパケット識別データを作成して、CAM14に検索オーダとして送信するものとする(S101)。
次に、CAM14では、受信した1段目の検索オーダのパケット識別データについて検索を行い、その検索結果を返答する(S102、S103)。
ここでは、受信パケット処理部13が送信した検索オーダのパケット識別データにおいて、IPアドレスはX、ポート番号はY(RTPプロトコルのパケットデータであることを示すものとする)であり、CAM14にも、そのパケット識別データに対応するデータが格納されていたものとする。ここでは、ステップS103において、CAM14は、与えられたパケット識別データに対応するデータが格納されているメモリのメモリアドレスA1を返答したものとする。
次に、受信パケット処理部13は、CAM14から、検索オーダに対する検索結果としてメモリアドレスA1のデータを受取ると、自身に登録されているテーブル情報等を参照して、パケットデータPについて次の段(2段目)の検索オーダが必要か否かを判定する(S104)。
ここでは、受信パケット処理部13において、パケットデータPに対して、2段目の検索オーダが必要であり、2段目の検索オーダのパケット識別データとして、パケットデータPのRTPヘッダからペイロードタイプを抽出することがプログラミングされているものとして以降の説明を行う。
上述の通り、受信パケット処理部13において、パケットデータPに対して、2段目の検索オーダが必要であるため、パケットデータPから、2段目の検索オーダに用いるパケット識別データ(RTPヘッダのペイロードタイプ)を抽出して、CAM14に検索オーダを送信する(S105、S106)。
次に、CAM14では、受信した2段目の検索オーダのパケット識別データについて検索を行い、その検索結果を返答する(S107、S108)。
ここでは、受信パケット処理部13が送信した2段目の検索オーダのパケット識別データにおいて、RTPのペイロードタイプはTであり、CAM14にも、そのパケット識別データに対応するデータが格納されていたものとする。ここでは、ステップS108において、CAM14は、与えられたパケット識別データに対応するデータが格納されているメモリのメモリアドレスA2を返答したものとする。
そして、2段目の検索オーダの検索結果(メモリアドレスA2)を受取った受信パケット処理部13は、所定のタイミングでパケットデータPと、CAM14から与えられた検索結果とを、NPU15に与える(S109)。受信パケット処理部13からNPU15へデータを与えるタイミングの詳細について後述する。
そして、NPU15は、パケットデータPに対して、受取った検索結果に応じた処理(例えば、優先制御や廃棄等)を行う。ここでは、NPU15には、予め、検索結果(メモリアドレス)に対応する処理内容がプログラミングされているものとするが、検索結果(メモリアドレス)の解釈(対応する処理の把握)は、受信パケット処理部13側で行うようにしても良い。なお、NPU15が、受取った検索結果に応じてパケットデータPに対して行う処理内容については限定されないものであり、既存の連想メモリを用いてパケット識別を行うネットワーク装置と同様のものを適用することができる。
なお、図3では、受信パケット処理部13が、パケットデータPについて、2段目までの検索オーダをCAM14に送信した場合について説明したが、上述のS104において、パケットデータPに対して、次の段(2段目)の検索オーダが必要でないと判断された場合には、2段目の検索オーダを行わずに、ステップS109の処理を行うことになる。
上述のように、受信パケット処理部13では、受信したパケットデータの内容によって、検索オーダを送信する回数が異なる。なお、受信パケット処理部13から送信される検索オーダ(パケット識別データ)の内容や、CAM14に記憶されるデータについては、限定されないものであり、例えば、既存の連想メモリを用いてパケット識別を行うネットワーク装置と同様のものを適用することができる。
次に、受信パケット処理部13の詳細構成について説明する。
図1は、受信パケット処理部13の機能的構成を示すブロック図である。
受信パケット処理部13は、パケットバッファ部131、識別子抽出部132、検索管理部133、パケット処理実行部134を有している。
受信パケット処理部13は、プロセッサ及びメモリ等のプログラムの実施構成を有する情報処理装置に、パケット処理プログラム等をインストールすることにより構築するようにしても良いが、その場合でも機能的には図1のように表すことができる。なお、受信パケット処理部13は、CAM14と別のハードウェアを用いて構築するようにしても良いし、同じハードウェア(情報処理装置)上に構築するようにしても良い。
パケットバッファ部131は、物理終端部12より受信したパケットを一時格納するものである。
識別子抽出部132は、パケットバッファ部131に格納されたパケットから、パケット識別に使用する識別子データを抽出するものである。
検索管理部133は、識別子抽出部132により抽出された、それぞれのパケットデータのパケット識別データに基づいて、CAM14への検索要求、及び、CAM14からの検索結果受信処理等を実施するものである。また、検索管理部133は、それぞれのパケット識別データの検索結果を、パケット処理実行部134に通知する。
パケット処理実行部134は、検索管理部133から通知される検索結果に基づいて、パケットバッファ部131に格納されたパケットデータに対して所定の処理(例えば、NPU15への送信、一部加工や情報付加、廃棄処理等)を実行するものである。この実施形態においては、説明を簡易にするために、パケット処理実行部134は、パケットバッファ部131に格納された全てのパケットデータを、そのままNPU15に送信(出力)するものとして説明するが、パケットデータごとに、検索管理部133から通知される検索結果に応じて、廃棄処理をしたり、一部加工や情報付加をしてからNPU15へ送信(出力)するようにしても良い。
パケットバッファ部131は、パケットデータと検索完了状態を管理するパケット管理テーブル131aを有している。
図4は、パケット管理テーブル131aの内容例について示した説明図である。
図4に示すように、パケット管理テーブル131aでは、「パケット番号」、「パケットデータ」、「検索完了状態」の項目の情報を記憶している。
「パケット番号」の項目は、図4では、パケットバッファ部131に格納された各パケットの識別子を示すものとする。パケットバッファ部131では、パケットが格納された順番で1、2、3、…、と識別子が付けられているものとする。なお、パケットバッファ部131では、パケットが格納された順序が把握されていれば、その管理方法や、識別子の形式等は限定されないものである。
「パケットデータ」の項目は、パケット番号に対応するパケットのデータを示している。なお、図4では、説明を簡易にするため、パケット番号1、2、3、…、のパケットデータを、それぞれ、P1、P2、P3、…、と図示している。なお、パケットバッファ部131内で、パケット番号に対応するパケットデータが把握されていれば、パケット管理テーブル131aに、パケットデータの項目を省略するようにしても良い。
「検索完了状態」の項目は、該当するパケットデータに対するCAM14による検索処理の完了状態を示している。図4では、「検索完了状態」は、「0」又は「1」で表わされるものとする。「検索完了状態」が0の場合には、検索処理が未完了であり、1の場合には検索処理が完了しているものとする。
検索管理部133は、CAM14へ送信した検索オーダ内容を管理する検索オーダテーブル133aと、2回目の検索オーダを管理する2段目オーダ待ちテーブル133bと、まだCAM14へ送信していない未送信の検索オーダの内容を管理する未送信オーダテーブル133cとを有している。
図5は、未送信オーダテーブル133cの内容例について示した説明図である。
図5に示すように、未送信オーダテーブル133cでは、「ポインタ値」ごとに1段目及び2段目オーダの内容が管理されている。
「ポインタ値」は、検索管理部133からCAM14へ検索オーダを送信する優先順位を示している。図5では、説明を簡易にするためにポインタ値は1〜3までしか図示していないが、管理する検索オーダの数は限定されないものである。
以下においては、説明を簡易にするため、パケット番号が1、2、3、4、…のパケットデータの1段目の検索オーダの内容(パケット識別データ)を、それぞれH1−1、H2−1、H3−1、H4−1、…、と表わすものとする。そして、パケット番号が1、2、3、4、…のパケットデータの2段目の検索オーダの内容(パケット識別データ)を、それぞれH1−2、H2−2、H3−2、H4−2、…、と表わすものとする。
図6は、検索オーダテーブル133aの内容例について示した説明図である。
検索オーダテーブル133aは、「管理番号」、「パケット番号」、「オーダ段数」の項目の情報を有している。検索オーダテーブル133aでは、検索管理部133からCAM14へ送信した検索オーダごとに、データ(行)が作成される。
「管理番号」は、検索オーダテーブル133aのデータの管理番号である。
「パケット番号」は、パケット管理テーブル131a上で管理されるパケット番号のいずれかで示される。例えば、図6では、管理番号が1のパケット番号が1となっており、パケット管理テーブル131a上でパケット番号が1のパケットデータ(図4ではパケットデータP1)が対応することを示している。
「オーダ段数」は、当該データに対応する検索オーダの段数を示している。「オーダ段数」の項目は、例えば、当該データに対応する検索オーダに係るオーダ段数が1段目であれば、「1」、2段目であれば「2」が入力されるものとする。
図7は、2段目オーダ待ちテーブル133bの内容例について示した説明図である。
2段目オーダ待ちテーブル133bは、「管理番号」、「パケット番号」の項目の情報を有している。2段目オーダ待ちテーブル133bでは、検索管理部133で設定した2段目の検索オーダごとに、データ(行)が作成される。
「管理番号」は、2段目オーダ待ちテーブル133bのデータの管理番号である。
「パケット番号」は、パケット管理テーブル131a上で管理されるパケット番号のいずれかで示される。例えば、図7において、「管理番号」が1のデータでは、パケット番号が「1」のパケットデータが、2段目の検索オーダ待ちであることを示している。
CAM14は、まだ検索管理部133に検索結果を返答していない検索オーダ(未完了の検索オーダ)を管理する未完了検索オーダテーブル14aと、まだ検索管理部133に送信していない検索結果を管理する未送信検索結果テーブル14bとを有している。
図8は、未完了検索オーダテーブル14aの内容例について示した説明図である。
図8に示すように、未完了検索オーダテーブル14aでは、「ポインタ値」ごとに、まだ処理が完了していない検索オーダの内容が管理されている。
「ポインタ値」は、CAM14が検索オーダを実行する優先順位を示している。なお、未完了検索オーダテーブル14aにおいて、ポインタ値は、検索管理部133から検索オーダが与えられた順番で付されており、先に与えられた検索オーダほど優先順位が高く設定されているものとする。
図8では、説明を簡易にするためにポインタ値は1〜4までしか図示していないが、管理する検索オーダの数は限定されないものである。
図9は、未送信検索結果テーブル14bの内容例について示した説明図である。
図9に示すように、未送信検索結果テーブル14bでは、「ポインタ値」ごとに、まだ検索管理部133へ送信されていない検索オーダの検索結果の内容が管理されている。
「ポインタ値」は、CAM14が検索結果を送信する優先順位を示している。なお、未送信検索結果テーブル14bにおいて、ポインタ値は、CAM14が検索オーダを実行した順番で付されており、先に検出された検索結果ほど優先順位が高く設定されているものとする。
図9では、説明を簡易にするためにポインタ値は1〜4までしか図示していないが、管理する検索結果の数は限定されないものである。
なお、以下においては、説明を簡易にするために、H1−1、H2−1、H3−1、H4−1、…、の検索結果を、それぞれ、R1−1、R2−1、R3−1、R4−1、…、と表わし、H1−2、H2−2、H3−2、H4−2、…、の検索結果を、それぞれ、R1−2、R2−2、R3−2、R4−2、…、と表わすものとする。
(A−2)第1の実施形態の動作
次に、以上のような構成を有する第1の実施形態のネットワーク中継装置10における受信パケット処理部13の動作(実施形態のパケット処理方法)について説明する。
図10、図11は、検索管理部133が行う処理について示したフローチャートである。図10では、検索管理部133が、CAM14に検索オーダを送信する処理について示しており、図11では、検索管理部133がCAM14から検索オーダを受信した場合の処理について示している。
まず、図10を用いて、検索管理部133が、CAM14に検索オーダを送信する処理について説明する。
受信パケット処理部13では、パケットバッファ部131に新たなパケットが格納されると、識別子抽出部132により、1段目の検索オーダのパケット識別データが抽出されて、検索管理部133に与えられる。
そして、検索管理部133は、識別子抽出部132から1段目の検索オーダのパケット識別データが与えられると、検索オーダの送信準備を行い、未送信オーダテーブル133cに、与えられたパケット識別データを設定する(S201)。なお、検索管理部133に、複数のパケット識別データが同時に到来した場合には、検索管理部133は、パケット番号順に、未送信オーダテーブル133cへそれらのパケット識別データを設定するようにしても良い。
次に、検索管理部133は、未送信オーダテーブル133cに、未送信の検索オーダ(1段目及び2段目)があるかを確認し(S202)、さらに、未送信の2段目の検索オーダの有無を判定する(S203)。なお、ステップS202において、未送信の検索オーダが一つも存在しない場合には、検索管理部133は、新たな検索オーダが発生するまで待機するようにしても良い。
そして、検索管理部133は、上述のステップS203の判定において、未送信の2段目の検索オーダがあると判定した場合には、後述するステップS206の処理から動作し、未送信の2段目の検索オーダがないと判定した場合には後述するステップS204の処理から動作する。
そして、検索管理部133は、上述のステップS203の判定において、未送信の2段目の検索オーダがないと判定された場合(すなわち、少なくとも1段目の未送信検索オーダは存在する場合)には、検索管理部133は、送信の1段目の検索オーダのうち、ポインタ値が1の検索オーダ(最も優先順位の高い検索オーダ)を、CAM14に送信する(S204)。
次に、検索管理部133は、検索オーダテーブル133aに、ステップS204で送信した検索オーダに係るパケット番号のデータを、新たに追加(オーダ段数には1を入力)し(S205)、上述のステップS202の処理から動作する。
一方、上述のステップS203において、未送信の2段目の検索オーダがあると判定された場合には、検索管理部133は、未送信の2段目の検索オーダのうち、ポインタ値が1の検索オーダ(最も優先順位の高い検索オーダ)を、CAM14に送信する(S206)。
次に、検索管理部133は、2段目オーダ待ちテーブル133bを参照(2段目オーダ待ちテーブル133bの内容は、後述する図11のフローチャートの処理にて更新される)して、新たに追加したデータのパケット番号を取得し、検索オーダテーブル133aに対して、ステップS206で送信した検索オーダに係るパケット番号のデータを、新たに追加し(オーダ段数には2を入力)(S207、S208)、上述のステップS202の処理から動作する。
次に、図11を用いて、検索管理部133が、CAM14から検索オーダの検索結果を受信した場合の処理について説明する。
検索管理部133は、CAM14へ送信した検索オーダについて検索結果を受取ると(S301)、検索オーダテーブル133aを参照し、当該検索結果のパケット番号及び、そのパケット番号のオーダ段数のデータを取得する(S302)
次に、検索管理部133は、当該検索結果が1段目の検索オーダに対する検索結果であり、さらに、当該検索結果に係るパケットデータについて2段目の検索オーダが必要か否かを判定する(S303)。そして、検索管理部133により、2段目の検索オーダが必要と判定された場合には、後述するステップS304の処理から動作し、そうでない場合には、後述するステップS306の処理から動作する。
なお、検索管理部133において、当該検索結果に係るパケットデータについて2段目の検索オーダが必要か否かを判定する方法としては、例えば、上述のようにCAM14から与えられる検索結果(メモリアドレス)に応じて行う処理を記述したテーブル情報を参照すること等により行うようにしても良い。
上述のステップS303において、検索管理部133により、2段目の検索オーダが必要と判定された場合には、検索管理部133は、識別子抽出部132へ、当該パケットデータについて、2段目の検索オーダに用いるパケット識別データを抽出させて保持し、未送信オーダテーブル133cに設定する(S304)。
そして、検索管理部133は、2段目オーダ待ちテーブル133bに、上述のステップS304で設定した検索オーダに係るパケットデータのパケット番号を設定した新たなデータを追加(ライトポイントを+1する)し(S305)、上述の図10のステップS202の処理から動作する。
一方、検索管理部133により、受信した検索結果に係るパケットデータについて次の段階の検索オーダが不要と判断された場合(すなわち、受信した検索結果が1段目の検索オーダで、かつ、2段目の検索オーダが不要である場合、又は、受信した検索結果が2段目の検索オーダだった場合)には、検索管理部133は、パケット管理テーブル131a内で、受信した検索結果に係るパケットデータの検索完了状態に検索完了を示す「1」を入力し(S306)、上述の図10のステップS202の処理から動作する。ステップS306で、検索管理部133は、パケット管理テーブル131aの内容を更新すると共に、当該パケットデータの検索完了及び検索結果をパケット処理実行部134に通知するようにしても良い。
パケット処理実行部134は、パケット管理テーブル131aの内容に応じて、各パケットデータの処理内容を決定して処理を行う。パケット処理実行部134は、パケット番号の順番、すなわち、受信パケット処理部13がパケット受信を行った順番で、各パケットデータをNPU15に出力する。例えば、パケット処理実行部134は、パケット番号が、2、3のパケットデータの検索完了状態が「1」(完了を示す値)となった場合でも、パケット番号が1のパケットデータの検索完了状態が「0」(未完了を示す値)であった場合には、パケット番号が1のパケットデータの検索完了状態が「1」となるのを待ち、その後、パケット番号1〜3のパケットデータを、NPU15に出力する。
また、受信パケット処理部13では、上述のステップS203、S204、S206等に示すように、1段目の検索オーダよりも、2段目の検索オーダを優先してCAM14に送信している。すなわち、受信パケット処理部13では、後の段の検索オーダを優先してCAM14に送信している。なお、受信パケット処理部13において、検索オーダの段数に応じてCAM14への送信の優先度を調整することは必須ではないが、後の段の検索オーダを優先して送信した方が、パケット番号が先のパケットデータの処理が促進される。
次に、上述の図10、図11のフローチャートに従って検索管理部133が動作した場合の具体的な動作例について説明する。
図12は、検索管理部133の動作の具体例について示したフローチャートである。
そして、図13〜図16は、図12のフローチャートに従って検索管理部133が動作した場合の、受信パケット処理部13及びCAM14内の各テーブルの遷移について示した説明図である。
まず、ここでは、パケットデータP1〜P6が、新たにパケットバッファ部131に格納され、識別子抽出部132により、1段目の検索オーダのパケット識別データが抽出されて、検索管理部133に与えられたものとする(S401)。なお、ここでは、パケットデータP1〜P6のパケット番号は、それぞれ1〜6であるものとする。また、パケットデータP1〜P6の1段目の検索オーダに係るパケット識別データは、H1−1〜H6−1であるものとする。
そして、検索管理部133によりパケットデータP1〜P6のパケット識別データH1−1〜H6−1が、未送信オーダテーブル133cに設定され、そのうちパケットデータP1〜P3(パケット識別データH1−1〜H3−1)の検索オーダが、CAM14へ送信されたものとする(S402)。
図13は、ステップS402処理終了時点の、受信パケット処理部13及びCAM14内の各テーブルの状態について示している。
図13では、パケット管理テーブル131aには、パケット番号1〜6のパケットデータとしてP1〜P6が登録されているが、この時点ではどのパケットデータにも検索オーダの結果は出ていないので、全て検索未完了を示す0となっている。
また、図13では、未送信オーダテーブル133cには、まだ未送信の検索オーダであるパケットデータP4〜P6(H4−1〜H6−1)の検索オーダが登録されている。
さらに、図13では、まだCAM14による検索処理は実行されていないので、未完了検索オーダテーブル14aには、パケットデータP1〜P3(H1−1〜H3−1)の検索オーダが登録されている。
さらにまた、図13では、パケット番号1〜3(パケットデータP1〜P3)の1段目の検索オーダがCAM14へ送信済であるため、検索オーダテーブル133aには、パケット番号1〜3(パケットデータP1〜P3)のデータが登録されており、それぞれのオーダ段数は1となっている。
また、ステップS402の時点では、CAM14による検索オーダの結果はまだなく、2段目の検索オーダも発生していないので、未送信検索結果テーブル14b及び2段目オーダ待ちテーブル133bは空の状態である。
次に、CAM14により、パケットデータP1の1段目の検索オーダ(H1−1)の検索結果(R1−1)が、未送信検索結果テーブル14bを介して検索管理部133に返答されたものとする(S403)。
そして、検索管理部133により、受取った検索結果(R1−1)の内容から、パケットデータP1について2段目の検索オーダの要否が判定され、ここでは、必要と判定されたものとする。そして、検索管理部133は、識別子抽出部132に、パケットデータP1について2段目のパケット識別データの抽出を指示して、パケットデータP1の2段目のパケット識別データ(H1−2)を保持し、そのパケット識別データ(H1−2)を、未送信オーダテーブル133cの2段目オーダに設定したものとする(S404)
図14は、ステップS404処理終了時点の、受信パケット処理部13及びCAM14内の各テーブルの状態について示している。
図14では、ステップS404処理終了時点で、パケットデータP2、P3の1段目の検索オーダ(H2−1、H3−1)に対する検索結果(R2−1、R3−1)は、未送信検索結果テーブル14bに登録されているものとする。
また、図14では、パケットデータP1(パケット番号1)の2段目の検索オーダが発生しているため、2段目オーダ待ちテーブル133bに、パケット番号が1のデータが追加されている。
次に、CAM14により、パケットデータP2、P3の1段目の検索オーダ(H2−1、H3−1)に対する検索結果(R2−1、R3−1)が、検索管理部133に返答されたものとする(S405)。
そして、検索管理部133からCAM14へ、パケットデータP1の2段目の検索オーダ(H1−2)が送信され、未完了検索オーダテーブル14aに登録され、さらに、CAM14によりその検索オーダが実行されたものとする(S406)。
図15は、ステップS406処理終了時点の、受信パケット処理部13及びCAM14内の各テーブルの状態について示している。
ここでは、検索管理部133により、受取った検索結果(R2−1、R3−1)の内容から、パケットデータP2、P3について2段目の検索オーダの要否が判定されるが、不要と判定されたものとする。そのため、パケットデータP2、P3については、検索管理部133による検索処理は終了となり、検索管理部133の指示により、パケット管理テーブル131aで、パケットデータP2、P3に係る検索完了状態の項目に、検索完了を示す「1」が入力される(図15参照)。ただし、ここでは、パケットデータP2、P3よりもパケット番号が先のパケットデータP1(パケット番号:1)について検索処理が完了していないため、この時点では、パケットデータP2、P3については、検索管理部133からNPU15へ送信されない。
また、図15では、パケットデータP1(パケット番号:1)の2段目の検索オーダが、CAM14へ送信されているため、検索オーダテーブル133aに、パケット番号が1でオーダ段数が2のデータが追加されている。
さらに、図15では、パケットデータP1の2段目の検索オーダ(H1−2)が実行されているので、検索結果(R1−2)が、未送信検索結果テーブル14bに登録されている。
次に、CAM14により、パケットデータP1の2段目の検索オーダ(H1−2)の検索結果(R1−2)が、検索管理部133に返答されたものとする(S407)。
図16は、ステップS407処理終了時点の、受信パケット処理部13及びCAM14内の各テーブルの状態について示している。
ここでは、上述の通り、パケットデータに対する検索オーダの段数の上限は2段であるため、検索管理部133は、パケットデータP1の2段目の検索オーダ(H1−2)の検索結果(R1−2)を受取った時点で、パケットデータP1に関する検索処理を終了と判断できる。そのため、ステップS407の時点で、検索管理部133は、パケット管理テーブル131aで、パケットデータP1に係る検索完了状態の項目に、検索完了を示す「1」が入力される(図16参照)。この時点で、検索管理部133では、NPU15へ未送信のパケットデータのうち、最もパケット番号が小さいパケットデータP1の検索処理が完了するため、パケットデータP1(及び検索結果R1−2)を、NPU15へ送信することができる。そして、検索管理部133は、続いて、既に検索処理が完了しているパケットデータP2、P3(及び検索結果R2−1、R1−1)を、NPU15へ送信する。
(A−3)実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
受信パケット処理部13では、CAM14のパイプライン処理機能を生かしながら、各パケットデータに対して必要な検索数のみの検索オーダ送信で済むため、CAM14検索性能を最大限に利用でき、装置のスループットの低下を抑えられる。
例えば、従来の通信装置におけるパケット識別処理では、複数回検索が必要となったパケットデータの全検索が完了する前に、後続する1回のみの検索で済むパケットの検索の方が先に完了する場合が発生する場合があった。そして、従来のパケット識別処理で、検索処理が完了したパケットデータから順次パケット処理及び転送をする場合、受信順序と転送順序が入れ替わることになるという問題が発生していた。しかし、この実施形態の受信パケット処理部13では、パケット管理テーブル131aにより、パケットデータの受信順序を管理する。さらに、パケット処理実行部134は、パケット管理テーブル131aに従ってパケットデータ等を出力するため、パケットデータの検索処理状況に関らず、受信した順番でパケットデータを出力することができる。
また、例えば、従来の通信装置におけるパケット識別処理では、パケットデータを受信した順序で出力するために、先に受信したパケットデータの複数回検索を待ってから、後続パケットの検索オーダの転送を行なう場合にはCAMの検索性能を十分に発揮できず、検索処理の効率に影響を与えるという問題があった。しかし、この実施形態の受信パケット処理部13では、パケット管理テーブル131aにより、パケットデータの受信順序が管理されている。このため、検索管理部133が、各パケットデータについて送信する検索オーダは、必要な回数だけで済むため、CAM14のパイプライン処理機能を最大限に利用することができる。
(B)第2の実施形態
以下、本発明によるパケット処理装置及び方法、並びに通信装置の第2の実施形態を、図面を参照しながら詳述する。なお、この実施形態のパケット処理装置及び通信装置は、それぞれ、受信パケット処理部及びネットワーク中継装置である。
(B−1)第2の実施形態の構成
第2の実施形態のネットワーク中継装置10Aでは、1段目の検索オーダの検索結果を用いて2段目の検索オーダの要否、及その検索オーダの内容を決定する処理等が、第1の実施形態のネットワーク中継装置10と異なっている。
第2の実施形態のネットワーク中継装置10Aの機能的構成も図2を用いて表すことができる。なお、上述の通り、図2における括弧内の符号は、第2の実施形態でのみ用いられる符号である。
ネットワーク中継装置10Aでは、受信パケット処理部13が受信パケット処理部13Aに置き換わっている点で、第2の実施形態のネットワーク中継装置10と異なっている。
図17は、第2の実施形態の受信パケット処理部13Aの機能的構成について示したブロック図である。
受信パケット処理部13Aでは、検索管理部133が、検索管理部133Aに置き換わっている点で第1の実施形態の受信パケット処理部13と異なっている。
検索管理部133Aでは、1段目の検索オーダの検索結果を用いて2段目の検索オーダの要否、及その検索オーダの内容を決定する処理等が、第1の実施形態の検索管理部133と異なっている。また、検索管理部133Aでは、2段目判定テーブル133d及び2段目制御テーブル133eが追加されている点で、第1の実施形態の検索管理部133と異なっている。
次に、2段目判定テーブル133d及び2段目制御テーブル133eの内容と、検索管理部133Aの処理について説明する。
図18は、2段目判定テーブル133dの内容例について示した説明図である。
2段目判定テーブル133dでは、図18に示すように、「検出アドレス」の情報に対応付けて「処理コード」の情報が格納されている。
「検出アドレス」には、CAM14のメモリアドレスのいずれか(すなわち、予定する1段目の検索オーダの検索結果のいずれかの情報)が格納されている。
「処理コード」には、「検出アドレス」から、2段目の検索オーダを行うか否かを判定する処理等を行うための処理コードが格納されている。
図18では、説明を簡易にするため、「検出アドレス」には、0、1、2、…、m、…、nのいずれかのアドレス情報が格納されているものとして説明している。すなわち、「検出アドレス」(0、1、2、…、m、…、n)は、CAM14のメモリアドレスと対応するインデックスとなっている。また、図18では、検出アドレス「0」に対応する処理コードを「C1」、検出アドレス「1」に対応する処理コードを「C2」、検出アドレス「2」に対応する処理コードを「C1」と示している。
検索管理部133Aでは、1段目の検索オーダの検索結果として、CAM14のメモリアドレス(検出アドレス)を取得すると、2段目判定テーブル133dから、そのメモリアドレス(検出アドレス)に対応する処理コードを取得する。そして、検索管理部133Aは、取得した処理コードを、2段目制御テーブル133eに適用して、当該1段目の検索オーダに対する2段目の検索オーダの要否及びその検索オーダの内容の決定を行う。
図19は、2段目制御テーブル133eの内容例について示した説明図である。
2段目制御テーブル133eには、「処理コード」の情報に対応付けて、「2段目有無」、「識別子タイプ」、「検索範囲」(「検索開始アドレス」、「検索終了アドレス」)の情報が格納されている。
「処理コード」には、2段目判定テーブル133dに対応する処理コードが格納されている。
「2段目有無」は、2段目の検索オーダの要否を示す情報であり、ここでは、「有」又は「無」のいずれかの情報が格納されるものとする。「2段目有無」が「有」の場合は、2段目の検索オーダが必要であることを示しており、「無」の場合は、2段目の検索オーダの必要がないことを示しているものとする。
そして、2段目制御テーブル133eにおいて、「2段目有無」が「有」となっているデータ(行)については、対応する2段目検索オーダの内容を示す情報(パラメータ)として、「識別子タイプ」、検索範囲(「検索開始アドレス」、「検索終了アドレス」)が記述されている。一方、2段目制御テーブル133eにおいて、「2段目有無」が「無」となっているデータ(行)については、「識別子タイプ」、「検索範囲」(「検索開始アドレス」、「検索終了アドレス」)の情報は空欄となる。
「識別子タイプ」は、2段目の検索オーダに用いるパケット識別データ(識別子)のタイプ(抽出項目)を示している。図19では、「識別子タイプ」には、パケット識別データの抽出項目を示すコードとして、「A」、「B」等の情報が格納されているものとする。図19においては図示を省略しているが、検索管理部133Aには、この「識別子タイプ」のコードに対応する具体的な内容(パケット識別データの抽出項目)が別のテーブル等に格納されているものとする。ここでは、「識別子タイプ」における「B」というコードは、検索対象となるパケットデータのRTPヘッダの所定の項目(例えば、ペイロードヘッダのモード番号等)の情報を示すものとする。
「検索範囲」は、検索管理部133Aが2段目の検索オーダをCAM14に与える際に指定する検索アドレスの範囲を示すものである。「検索範囲」の情報は、「検索開始アドレス」及び「検索終了アドレス」の情報で構成されている。「検索開始アドレス」及び「検索終了アドレス」は、CAM14に、2段目の検索オーダを実施させる際に、「検索開始アドレス」から「検索終了アドレス」までの範囲を検索させることを示している。なお、2段目の検索オーダの実行にあたって、特に検索範囲を指定する必要が無い場合は、2段目制御テーブル133eからこの項目の情報は削除するようにしても良い。
検索管理部133Aは、2段目判定テーブル133dから取得した処理コードを、2段目制御テーブル133eに適用して、対応する「2段目有無」、「識別子タイプ」、「検索範囲」の情報を取得する。
そして、取得した「2段目有無」が「有」だった場合には、検索管理部133Aは、当該パケットデータについて、2段目の検索オーダに用いるパケット識別データ(「識別子タイプ」が示す抽出項目のデータ)の抽出を、識別子抽出部132に指示して実施させる。そして、検索管理部133Aは、識別子抽出部132から取得したパケット識別データについて、「検索範囲」の範囲内で検索させる2段目の検索オーダをCAM14に送信する。
(B−2)第2の実施形態の動作
次に、以上のような構成を有する第2の実施形態のネットワーク中継装置10Aにおける受信パケット処理部13Aの動作(実施形態のパケット処理方法)について説明する。
第2の実施形態の受信パケット処理部13Aでは、検索管理部133Aにおける2段目の検索オーダの要否、及びその検索オーダの内容の決定処理が、第1の実施形態と異なっているだけである。したがって、以下では、第2の実施形態の受信パケット処理部13Aについて、第1の実施形態の動作と異なる部分についてだけ説明する。
第2の実施形態の受信パケット処理部13Aでは、第1の実施形態における上述の図11の処理(検索管理部133が、CAM14から検索オーダの検索結果を受信した場合の処理)が異なっている。
図20は、第2の実施形態の検索管理部133Aが、CAM14から検索オーダの検索結果を受信した場合の処理について説明したフローチャートである。すなわち、第2の実施形態では、第1の実施形態における上述の図11に示すフローチャートの処理が、図20に示すフローチャートの処理に置き換わっている。
以下、図20を用いて、第2の実施形態の検索管理部133Aの動作について説明する。
検索管理部133Aは、CAM14から、検索オーダの検索結果を受取ると(S501)、検索オーダテーブル133aを参照し、当該検索結果のパケット番号及び、そのパケット番号のオーダ段数のデータを取得する(S502)。
次に、検索管理部133Aは、当該検索結果のオーダ段数を確認し(S503)、2段目だった場合には、後述するステップS510の処理から動作し、1段目だった場合には後述するステップS504の処理から動作する。
上述のステップS503において、当該検索結果のオーダ段数が1段目と確認された場合には、検索管理部133Aは、当該検索結果(CAM14のメモリアドレス)に対応する処理コード(2段目制御テーブル133eのインデックス)を、2段目判定テーブル133dから取得する(S504)。
次に、検索管理部133Aは、取得した処理コードに対応する「2段目有無」のフラグ情報を、2段目制御テーブル133eから取得する(S505)。
次に、検索管理部133Aは、取得した「2段目有無」のフラグ情報の内容を確認し、当該1段目の検索オーダの検索結果に対する、2段目の検索オーダの要否を判定する(S506)。そして、検索管理部133Aは、2段目の検索オーダが必要と判定した場合は、後述するステップS507の処理から動作し、不要と判定した場合には、後述するステップS510の処理から動作する。
上述のステップS506の処理において、2段目の検索オーダが必要と判定された場合には、検索管理部133Aは、上述のステップS504で取得した処理コードに対応する「識別子タイプ」、「検索範囲」の情報を、2段目制御テーブル133eから取得する(S507)。
次に、検索管理部133Aは、当該パケットデータについて、2段目の検索オーダに用いるパケット識別データ(「識別子タイプ」が示す抽出項目のデータ)の抽出を、識別子抽出部132に指示して実施させる。そして、検索管理部133Aは、識別子抽出部132から取得したパケット識別データを、「検索範囲」の範囲内で検索させる2段目の検索オーダについて、未送信オーダテーブル133cに設定する(S508)。
そして、検索管理部133Aは、2段目オーダ待ちテーブル133bに、上述のステップS508で設定した検索オーダに係るパケットデータのパケット番号を設定した新たなデータを追加(ライトポイントを+1する)し(S509)、上述の図10のステップS202の処理から動作する。
一方、上述のステップS503で、受信した検索結果に係る検索オーダの段数が2段目と判定された場合、又は、上述のステップS506で、2段目の検索オーダが不要と判定された場合には、検索管理部133Aは、パケット管理テーブル131a内で、受信した検索結果に係るパケットデータの検索完了状態に検索完了を示す「1」を入力し(S510)、上述の図10のステップS202の処理から動作する。
次に、検索管理部133Aが、上述の図20のフローチャートに従って動作した場合の具体的な動作例について図21を用いて説明する。
図21では、CAM14には、n+1個のエントリ(メモリM0〜Mn)が設定されており、メモリM0〜Mnのメモリアドレスは、それぞれ0〜nであるものとする。そして、CAM14は、検索管理部133Aから検索オーダを受信すると、その検索オーダに係る検索キー(パケット識別データ)が格納されたメモリアドレス(0〜nのいずれかの値)を応答するものとする。
そして、図21では、最初に検索管理部133AからCAM14に、1段目の検索オーダが送信され、CAM14では、当該検索オーダの検索キー(パケット識別データ)がメモリM1に格納されたものと一致(ヒット)したものとする。そして、CAM14は、メモリM1のメモリアドレス(1)を、検索管理部133Aへ返答したものとする。
そして、検索管理部133Aでは、上述の図20のフローチャートに従った処理が行われる。
検索管理部133Aでは、CAM14から1段目の検索オーダの検索結果(1)を取得すると、ステップS504により、2段目判定テーブル133dから、検索結果(検出アドレス:1)に対応する処理コード(C2)が取得される。
そして、検索管理部133Aでは、上述のステップS505により、取得した処理コード(C2)に対応する「2段目有無」のフラグ情報(有)が取得され、2段目の検索オーダが必要と判断される。
そして、検索管理部133Aでは、上述のステップS507により、処理コード(C2)に対応する識別子タイプ(B)及び検索範囲(m、n)の情報が取得される。
そして、検索管理部133Aでは、上述のステップS508、S509により、2段目の検索オーダに用いるパケット識別データが保持され、保持したパケット識別データを用いた2段目の検索オーダが設定される。具体的には、まず、検索管理部133Aは、当該パケットデータから識別子タイプ(B)に対応する抽出項目(RTPヘッダの所定の項目)の情報抽出を、識別子抽出部132に指示する。そして、検索管理部133Aは、識別子抽出部132から取得したパケット識別データを、「検索範囲」の範囲内で検索させる2段目の検索オーダについて、未送信オーダテーブル133cに設定する。
なお、この場合、検索管理部133Aにより設定された2段目の検索オーダの検索範囲は、m〜nに設定されている。したがって、CAM14では、当該検索オーダの検索キー(パケット識別データ)について、メモリMm〜メモリMnの範囲内でのみ検索されることになる。
(B−3)第2の実施形態の効果
第2の実施形態では、検索管理部133Aに2段目判定テーブル133d及び2段目制御テーブル133eを備えることにより、2段目の検索オーダの要否及びその内容の決定処理を容易にしている。
(C)他の実施形態
本発明は、上記の実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
(C−1)第1の実施形態における上述の図2に示すネットワーク中継装置10は、本発明の通信装置を実現するための構成の一例であって、例えば、本発明のパケット処理装置(受信パケット処理部13)により、受信したパケットを識別し、その識別結果に応じて受信したパケットを処理する通信装置であれば、その他の構成については限定されないものである。
(C−2)上記の各実施形態では、一つのパケットデータに対する検索オーダの最大回数(段数)は2回としたが、3回以上の検索オーダが発生する場合には、「2回目オーダ待ちテーブル」に相当するテーブルを増やすことにより、上記の実施形態と同様に処理することができる。例えば、一つのパケットデータに対する検索オーダの最大回数が3回である場合には、上記の実施形態の受信パケット処理部13における検索管理部133に、3回目の検索オーダを管理する「3回目オーダ待ちテーブル」(2回目オーダ待ちテーブルと同様の構成を備えるテール)を追加することにより実現することができる。
(C−3)上記の各実施形態では、本発明の通信装置を、IPネットワーク上に備えられたネットワーク中継装置(ネットワーク中継装置10)に適用した例について説明したが、例えば、MPLS(Multi−Protocol Label Switching)等のその他のプロトコルを用いたネットワークにおける、パケット識別機構を必要とするネットワーク装置に適用するようにしても良い。
(C−4)第2の実施形態で、パケットデータに対する検索オーダの最大回数(段数)が3回以上となる場合には、2段目の検索オーダの検索結果を用いて、3段目の検索オーダの要否及び内容を決定するための判定テーブル(2段目判定テーブル133dと同様の形式のテーブル)及び制御テーブル(2段目制御テーブル133eと同様の形式のテーブル)を配置する必要がある。
(C−5)第2の実施形態では、2段目判定テーブル133dと、2段目制御テーブル133eの2つのテーブルを用いて、2段目の検索オーダの要否及び、その検索オーダの内容について決定しているが、これらの2つのテーブルを1つにまとめても良い。すなわち、1段目の検索結果に応じて、2段目の検索オーダの要否及び、その検索オーダの内容について決定することができれば、その決定に用いるテーブルの数や形式は限定されないものである。
例えば、第2の実施形態では、図21に示すように、1段目の検索オーダの検索結果から、2段目判定テーブル133dを用いて処理コードを取得し、さらに、取得した処理コードに応じた情報を2段目制御テーブル133eから取得しているが、2段目制御テーブル133eだけて同様の処理を行うようにしても良い。例えば、2段目制御テーブル133eの処理コードの部分を、検出アドレスに置き換えることにより、1つのテーブルで、第2の実施形態と同様の決定処理を行うことができる。