(57)【要約】    【課題】      パケット転送におけるテーブル検索処理の負荷を低減して、パケット転送を高速化を図ること。    【解決手段】  入力インタフェース１０１から取り込んだパケットを更新して出力インタフェース１０２から出力する転送処理を行うパケット転送装置１００において、過去に転送処理したパケット中の任意部分から抽出したビット列をビット列キャッシュ１０７に保持し、過去の転送処理で実行した各種テーブル検索によって得られたパラメータを処理パラメータ保持部１０８に保持する。そして、新たに受信したパケット中から抽出したビット列が前記ビット列キャッシュ１０７に保持している過去のビット列と一致した場合、パケット更新部１０４が当該ビット列と関連付けて前記処理パラメータ保持部１０８に格納したパラメータを用いてパケットを更新する。  【選択図】      図１
2005347969.tif 000002
【特許請求の範囲】
【請求項１】
入力インタフェースから取り込んだパケットを更新して出力インタフェースから出力する転送処理を行うパケット転送装置において、過去に転送処理したパケット中の任意部分から抽出したビット列を保持するビット列キャッシュと、過去の転送処理において各種テーブルを検索して取得したパケット更新のためのパラメータを保持する処理パラメータ保持部と、新たに受信したパケット中から抽出したビット列が前記ビット列キャッシュに保持している過去のビット列と一致した場合、当該ビット列と関連付けて前記処理パラメータ保持部に格納したパラメータを用いてパケットを更新するパケット更新手段と、を具備するパケット転送装置。
【請求項２】
ビット列キャッシュ中に一致するビット列が存在しなかった場合、各種テーブルに対する検索を逐次実行してパラメータを取得し、そのパラメータを前記処理パラメータ保持部に格納し、当該ビット列を前記ビット列キャッシュに格納することを特徴とする請求項１記載のパケット転送装置。
【請求項３】
各種テーブル検索時の検索キーのうち入力パケットに含まれるビット列を連結したものを、前記ビット列キャッシュのエントリとすることを特徴とする請求項２記載のパケット転送装置。
【請求項４】
入力パケットから抽出した可変長のビット列を、ハッシュ関数を使用して固定長のビット列に変換し、このビット列を用いてビット列キャッシュを検索することを特徴とする請求項１から請求項３のいずれかに記載のパケット転送装置。
【請求項５】
入力インタフェースから取り込んだパケットを更新して出力インタフェースから出力する転送処理を行うパケット転送方法において、受信したパケットの任意部分をビット列として抽出し、抽出したビット列と一致するビット列が、過去に転送処理したパケット中の任意部分から抽出したビット列を保持するビット列キャッシュに存在するか否か判断し、一致するビット列が存在する場合、過去の転送処理において各種テーブルを検索して取得したパケット更新のためのパラメータを保持する処理パラメータ保持部から、当該ビット列と関連付けて格納しているパラメータを取り出してパケットを更新することを特徴とするパケット転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信システムにおいて、ネットワーク間でパケットを転送する、ルータ、スイッチなどのパケット転送装置およびパケット転送方法に関する。
【背景技術】
【０００２】
パケット通信を行うＩＰネットワーク上で、複数の端末が接続する複数のネットワークを結び、ネットワーク間でパケットを中継・転送する装置として、ルータが用いられる。ルータの基本的機能は、受信したパケット中のあて先ＩＰアドレスを見て、そのパケットを、どのネットワーク（すなわち、ルータのどの出力インタフェース）の、どのホストに送信するかを決定し、転送することである。
【０００３】
しかし、近年は、ルータにおいて、その基本機能であるパケット転送に加え、特定の条件を満たすパケットのみを通過させる（もしくは破棄する）フィルタリング機能、外部ネットワークと内部ネットワークで用いられるＩＰアドレスを変換するＮＡＴ(Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ Ｔｒａｎｓｌａｔｉｏｎ)機能、特定のパケットのみ優先的に転送するＱｏＳ機能、遠隔地にあるネットワーク同士を安全に接続するＶＰＮ機能など、さまざまな機能が追加されるようになっている。このような背景から、ルータ上における処理負荷は、増大する方向にあるといえる。
【０００４】
一方、ネットワークの物理的な伝送速度はますます高速化しつつある。このような背景から、ルータにおいてはさまざまな機能を実現し、かつ機能が増加した場合においても高速にパケットを転送することが求められている。
【０００５】
このような課題を解決するための方式として、高速に検索を行うことができるＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ）上に、ルーティングテーブルの一部をキャッシュすることにより、パケット転送における経路検索処理を高速化する方式がある（例えば、特許文献１参照）。
【０００６】
また、ルータ上で行うフィルタリング処理について、１つ目のパケットについては逐次アクセスリストを検索してフィルタ条件（通過または破棄）を決定し、その結果をフィルタキャッシュテーブルに保持し、一方２つ目以降のパケットについては、フィルタキャッシュテーブルを参照してフィルタ条件を導くことにより、フィルタリング処理を高速化する方式がある（例えば、特許文献２参照）。
【０００７】
従来技術を適用したパケット転送装置では、通常のパケット転送機能に加え、装置に入力する特定のパケットの受信を制限する受信フィルタリング機能、内部ネットワークのＩＰアドレスと外部ネットワークのＩＰアドレスを変換するＮＡＴ機能、装置が出力するパケットの送信を制限する送信フィルタリング機能を有している。このように従来技術においては、局所的なキャッシュを配置することでパケットの転送における処理を高速化している。
【０００８】
上記方式を適用したパケット伝送装置について具体的に説明する。特定のＭＡＣアドレス宛のパケットの送信を禁止する場合を例として説明する。従来は、受信フィルタリングテーブル（またはキャッシュ）を検索して受信時のフィルタ条件を求め、ＮＡＴテーブルを検索して外部ＩＰアドレスと内部ＩＰアドレスを変換し、ルーティングキャッシュテーブル（またはキャッシュ）を検索してあて先ＩＰアドレスから次ホップＩＰアドレスを求め、Ｌ３−Ｌ２アドレス変換テーブルを検索して次ホップＩＰアドレスをあて先ＭＡＣアドレスに変換した後、出力フィルタリングテーブルを検索することにより、破棄を決定する。
【特許文献１】特開平６−２６１０７８号公報（第９頁、第１図）
【特許文献２】特開２０００−２６１４８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、前記の従来技術によるパケット転送では、その処理において機能ごとに多数のテーブルを引くテーブル検索を逐次実施する必要がある。局所的にキャッシュを保持して高速化しても、機能が増えるにつれてキャッシュそのものの個数が増加するため、処理負荷が高まり、パケット転送速度が低下する、または回路規模が増大する、という問題があった。
【００１０】
本発明は、以上のような実情に鑑みてなされたものであり、パケット転送におけるテーブル検索処理の負荷を低減して、パケット転送を高速化できるパケット転送装置およびパケット転送方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、過去に転送処理したパケット中から抽出した任意のビット列と、転送中に行った複数の処理およびそこで使用されたパラメータをまとめて保持し、新たに受信したパケット中から抽出したビット列が、保持している過去のビット列と一致した場合、ビット列と関連付けされた処理パラメータから処理を行うように構成したものである。
【００１２】
これにより、過去に処理したことのあるパケットについては、機能ごとに多数のテーブルまたはキャッシュを検索することなく、行うべき処理を確定することができる。課題で示したあて先ＭＡＣアドレスでパケットをフィルタリングする場合を例に挙げ説明する。パケットを受信した時点で、そのパケット中からビット列を抽出し、さらに過去に処理したパケットのビット列と一致するかどうかを、テーブルを一回検索し、その結果処理パラメータとして「フィルタ条件＝破棄」を得ることで、パケットの破棄を決定することができる。このように、テーブル検索回数を抑えることにより装置内の処理負荷を抑えることができ、結果としてパケット転送処理を高速化することができる。
【００１３】
また、受信パケットの任意部分からビット列を抽出し、過去に受信したパケットのビット列と比較できるように構成する。
【００１４】
これにより、処理の追加により受信パケット中の新たなフィールドを比較する必要が生じた場合に、ビット列抽出部分および比較部分に変更を加える必要がなくなる。結果として、本パケット転送装置に新たな機能を容易に追加できる。
【発明の効果】
【００１５】
本発明によれば、パケット転送におけるテーブル検索処理の負荷低減し、パケット転送を高速化できるパケット転送装置及びパケット転送方法を提供することができる。
【発明を実施するための最良の形態】
【００１６】
本発明の第１の態様は、入力インタフェースから取り込んだパケットを更新して出力インタフェースから出力する転送処理を行うパケット転送装置において、過去に転送処理したパケット中の任意部分から抽出したビット列を保持するビット列キャッシュと、過去の転送処理において各種テーブルを検索して取得したパケット更新のためのパラメータを保持する処理パラメータ保持部と、新たに受信したパケット中から抽出したビット列が前記ビット列キャッシュに保持している過去のビット列と一致した場合、当該ビット列と関連付けて前記処理パラメータ保持部に格納したパラメータを用いてパケットを更新するパケット更新手段と、を具備するパケット転送装置である。
【００１７】
以上のように構成されたパケット転送装置によれば、過去に処理したことのあるパケットについては、以降受信した場合にその転送を高速に行うことができるという作用を有する。
【００１８】
本発明の第２の態様は、第１の態様のパケット転送装置において、ビット列キャッシュ中に一致するビット列が存在しなかった場合は各種テーブル検索を逐次実行してパラメータを取得し、そのパラメータを前記処理パラメータ保持部に格納し、当該ビット列を前記ビット列キャッシュに格納する。
【００１９】
これにより、過去に処理したことのない新たなパケットを受信した場合は、今回の転送処理で得られたビット列でビット列キャッシュを更新できるとともに、そのビット列に対応したパラメータが反映されるように処理パラメータ保持部を更新できる。
【００２０】
本発明の第３の態様は、第２の態様のパケット転送装置において、各種テーブル検索時の検索キーのうち入力パケットに含まれるビット列を連結したものを、前記ビット列キャッシュのエントリとするものとした。
【００２１】
これにより、パケット転送において実施する処理が追加または削除され、それに伴いビット列として抽出すべき部分が変更になった場合において、ビット列抽に関する構成を変更する必要がなく、装置の構成変更を最小に抑えるという作用を有する。
【００２２】
本発明の第４の態様は、第１から第３の態様のいずれかのパケット転送装置において、入力パケットから抽出した可変長のビット列を、ハッシュ関数を使用して固定長のビット列に変換し、このビット列を用いてビット列キャッシュを検索するものとした。
【００２３】
これにより、パケット転送において実施する処理が追加または削除され、それに伴い比較すべきビット列の長さが変化した場合においても、キャッシュ検索、ビット列キャッシュに関する構成を変更する必要がなく、装置の構成変更を最小に抑えるという作用を有する。
【００２４】
本発明の第５の態様は、入力インタフェースから取り込んだパケットを更新して出力インタフェースから出力する転送処理を行うパケット転送方法において、受信したパケットの任意部分をビット列として抽出し、抽出したビット列と一致するビット列が、過去に転送処理したパケット中の任意部分から抽出したビット列を保持するビット列キャッシュに存在するか否か判断し、一致するビット列が存在する場合、過去の転送処理において各種テーブルを検索して取得したパケット更新のためのパラメータを保持する処理パラメータ保持部から、当該ビット列と関連付けて格納しているパラメータを取り出してパケットを更新することを特徴とするパケット転送方法である。
【００２５】
以下、本発明の一実施の形態であるパケット転送装置及びパケット転送方法について、図面を参照して具体的に説明する。
【００２６】
（実施の形態１）
図１は、本実施の形態に係るパケット転送装置のブロック図である。本実施の形態は、通常のパケット転送機能に加え、装置に入力する特定のパケットの受信を制限する受信フィルタリング機能、内部ネットワークのＩＰアドレスと外部ネットワークのＩＰアドレスを変換するＮＡＴ機能、装置が出力するパケットの送信を制限する送信フィルタリング機能を有する場合を例として説明する。
【００２７】
パケット転送装置１００は、パケットを受信する一つまたは複数の入力インタフェース１０１と、更新パケットを別のネットワークに出力する一つまたは複数の出力インタフェース１０２とを有する。図１では、２つの入力インタフェース１０１及び２つの出力インタフェース１０２を備える場合を例示している。
【００２８】
入力インタフェース１０１から取り込んだパケットをパケット解析部１０３へ入力する。パケット解析部１０３は、入力したパケットのフォーマットを解析する。パケット解析情報はビット列抽出部１０５へ与える。ビット列抽出部１０５は、パケット解析情報をもとに、入力パケット中から任意部分のビット列を抽出する。ビット列キャッシュ１０７は、過去に処理したパケットのビット列を保持する。前記ビット列キャッシュに対応する処理や処理パラメータは処理パラメータ保持部１０８に保持する。
【００２９】
キャッシュ検索部１０６は、抽出したビット列と前記ビット列キャッシュのエントリを比較する。ビット列キャッシュに一致するエントリがない場合に、パケットを受信すべきかを判定するのが受信フィルタリングテーブル検索部１１５および受信フィルタリングテーブル１１０である。
【００３０】
ＮＡＴテーブル１１１が内部ネットワークと外部ネットワークのＩＰアドレスの対応関係を保持し、ＮＡＴテーブル検索部１１６が変換すべきアドレスを決定する。また、ルーティングテーブル１１２があて先ＩＰアドレスと次に転送する装置のＩＰアドレス・出力インタフェースの対応情報を保持し、ルーティングテーブル検索部１１７がルーティングテーブル１１２を参照して次に転送する装置のＩＰアドレス・出力インタフェースを決定する。Ｌ３−Ｌ２アドレス変換テーブル１１３がＩＰアドレスとリンクレイヤアドレス(Ｅｔｈｅｒｎｅｔ（登録商標）であればＭＡＣアドレス)の対応を保持し、レイヤ３−レイヤ２(以降Ｌ３−Ｌ２と表記する)アドレス変換テーブル検索部１１８がＬ３−Ｌ２アドレス変換テーブル１１３を用いてリンクレイヤアドレスを決定する。また、送信フィルタリングテーブル検索部１１９および送信フィルタリングテーブル１１４がパケットを送信すべきかを判定する。
【００３１】
キャッシュ更新部１０９は、前記ビット列抽出部１０５が抽出したビット列を前記ビット列キャッシュに、また各種テーブルの検索結果を前記処理パラメータ保持部１０８に格納する。パケット更新部１０４は、前記処理パラメータ保持部１０８または各種テーブルの検索結果からパケットを更新する。一つまたは複数の出力インタフェース１０２が更新パケットを最終的に別のネットワークに出力する。
【００３２】
なお、入力インタフェースおよび出力インタフェースは、Ｅｔｈｅｎｅｔ（登録商標）インタフェースのような物理インタフェースのほかに、トンネルインタフェースやＰＰＰｏＥインタフェースといった、仮想的に設定されるインタフェース（論理インタフェース）であってもよい。
【００３３】
図２は、受信フィルタリングテーブル１１０におけるフォーマットの例を示す。テーブルは、送信元ＭＡＣアドレス、送信元ＩＰアドレス、あて先ＩＰアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号、フィルタ条件からなるエントリ１２０を複数個持つことができる。
【００３４】
図３は、ＮＡＴテーブル１１１におけるフォーマットの例を示す。テーブルは、内部ネットワークＩＰアドレス、外部ネットワークＩＰアドレスからなるエントリ１２１を複数個持つことができる。
【００３５】
図４は、ルーティングテーブル１１２におけるフォーマットの例を示す。テーブルは、あて先ＩＰアドレス、ネットマスク、次ホップＩＰアドレス、出力インタフェースからなるエントリ１２２を複数持つことができる。
【００３６】
図５は、Ｌ３−Ｌ２アドレス変換テーブル１１３におけるフォーマットの例を示す。テーブルは、ＩＰアドレス、ＭＡＣアドレスからなるエントリ１２３を複数持つことができる。
【００３７】
図６は、送信フィルタリングテーブル１１４におけるフォーマットの例を示す。テーブルは、送信元ＩＰアドレス、あて先ＭＡＣアドレス、あて先ＩＰアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号、フィルタ条件からなるエントリ１２４を複数個持つことができる。
【００３８】
図７は、ビット列キャッシュ１０７および処理パラメータ保持部１０８におけるフォーマット、およびビット列キャッシュ１０７と処理パラメータ保持部１０８のそれぞれのエントリの関係を示す。ビット列キャッシュ１０７におけるテーブルは、ビット列とパラメータ保持部１０８へのポインタとからなるエントリ１２５を複数持つことができる。処理パラメータ保持部１０８は、ビット列キャッシュ１０７のエントリに対応する１乃至複数個の処理および処理パラメータを保持する。ここで、ビット列キャッシュ１０７のエントリ（１）に対応する処理パラメータは１２６−１、エントリ（２）に対応する処理パラメータは１２６−２、エントリ（ｎ６）に対応する処理パラメータは１２６−ｎ６である。
【００３９】
次に、本パケット転送装置１００における転送処理動作を、図８〜図１２を用いて説明する。
【００４０】
ネットワークからパケット転送装置１００に送られるパケットは、入力インタフェース１０１が受信し、パケット解析部１０３において、ヘッダの有無や位置の検出、ヘッダやパケットフォーマットのエラーの検出を行う。
【００４１】
続いてビット列抽出部１０５において、パケット中からキャッシュ検索用のビット列を抽出する。ビット列抽出部１０５は、図８に示したような抽出場所を指示するテーブルを設定することにより、パケット解析部１０３が解析したヘッダまたはペイロード中の先頭より任意の位置から、任意の長さのビット列を任意の個数抽出できるよう構成する。
【００４２】
実際にパケット中からビット列を抽出する方法を図９に示す。抽出すべきビット列は、図８に示すテーブルによって指示されている。なお、パケット中からどのビット列を抽出するかは、パケット転送装置１００が行う処理において検索するテーブルに依存する。パケット中のどの部分からビット列を抽出すべきであるかを決定する方法は後述する。図９の例ではビット列として、プロトコル番号、送信元ＩＰアドレス、あて先ＩＰアドレス、送信元ポート番号、あて先ポート番号、を抽出している。
【００４３】
なお、図９に示したように抽出したビットを結合してビット列を生成するのではなく、図１０に示すように抽出部分に１をセットしたマスクビット列を各ヘッダに対して用意し、マスクビット列と入力パケットとの論理積を取ることにより、比較用のビット列を生成することもできる。この場合、生成されるビット列の長さは各ヘッダ部分の長さの和と同一になってしまうが、後述のハッシュ関数を用いた検索を行うことで、ビット列キャッシュ１０７に格納し、またキャッシュ検索部１０６が比較するビット列の長さを短くすることができる。
【００４４】
続いてキャッシュ検索部１０６において、ビット列抽出部１０５が抽出したビット列をキーとして、ビット列キャッシュ１０７中の各エントリ１２５中のビット列と比較し、一致するエントリを検索する。なお、この検索方式は特に限定しない。ビット列そのままの長さ（この例では１０４ビット）の比較器で比較・検索してもよいし、処理部が持つ任意の長さの比較器（たとえば３２ビット比較器など）を用い、ビット列を比較器のビット長の整数倍（この例では１２８ビット）になるようパディングした後、分割（この例では４分割）して比較・検索してもよい。またＣＡＭのような高速検索に適したハードウェアを使用することもできる。さらに、ビット列をそのまま検索するのではなく、ハッシュ関数を使ってビット列の長さを圧縮し、縮退した空間の中で検索を行ってもよい。
【００４５】
ＣＲＣ３２を使い、ビット列の長さを３２ビットに圧縮する例を図１１に示す。この場合、ビット列キャッシュ１０７のエントリにおけるビット列の長さは３２ビットとなる。ハッシュ関数やＣＲＣを用いると、任意の長さをもつビット列を、一定の長さのビット列に変換することができる。なお、ハッシュ関数の特性から、縮退した空間において、異なる入力のビット列に対して、同一のハッシュ値を生成してしまうことがある（ハッシュの衝突）。ハッシュ関数による圧縮後のビット列の長さが３２ビットであるので、ビット列キャッシュ１０７のエントリ数が１００〜１０００程度とすると、任意の複数のエントリが同一のハッシュ値を持つ可能性は非常に小さい。しかし、もし衝突した場合には、元のビット列の末尾にビット列（定数）を連結した後ハッシュ値を再計算させることができる。本来ハッシュの衝突の可能性は非常に小さいので、ハッシュ値の再計算により、ほとんどの場合で衝突を回避できる。もし再度衝突が起こった場合には、末尾に連結するビット列のパターンを変更し、衝突が起こらなくなるまでハッシュ値の再計算を繰り返せばよい。ビット列抽出部１０５が抽出したビット列の末尾にビット列を付加し、ハッシュ値を計算する例を図１２に示す。
【００４６】
このようにハッシュ関数を用い縮退した空間で検索を行うキャッシュ検索部１０６と、パケット中から任意のビット列を抽出できる前記ビット列抽出部１０５とを組合せ、本パケット転送装置１００はパケット中の任意のビット列を比較する機能を有する。
【００４７】
キャッシュ検索部１０６での検索の結果、ビット列キャッシュ１０７の中に一致するエントリがあった場合、エントリ中のポインタを参照して処理パラメータ保持部１０８から対応する処理パラメータを取り出す。この例では、フィルタ条件、ＮＡＴ変換後のＩＰアドレス、Ｌ３−Ｌ２変換後のＭＡＣアドレス、出力インタフェース、である。
【００４８】
続いて、その処理パラメータを用いてパケット更新部１０４でパケットを更新する。この例では、処理パラメータに基づきＩＰｖ４ヘッダ中の送信元ＩＰアドレスとＥｔｈｅｒｎｅｔ（登録商標）ヘッダ中のあて先ＭＡＣアドレスを書換え、またＴＴＬを減算し、ＩＰｖ４ヘッダ中のチェックサムフィールドとＥｔｈｅｒｎｅｔ（登録商標）パケット末尾のＦＣＳを再計算して更新する。
【００４９】
最後に、更新したパケットを、選択された出力インタフェース１０２から送信する。
【００５０】
一方、キャッシュ検索部１０６での検索の結果、ビット列キャッシュ１０７の中に一致するエントリがなかった場合、通常のルータが行うパケット転送処理を実施する。すなわち、まず受信フィルタリングテーブル検索部１１５で、送信元ＭＡＣアドレス、送信元ＩＰアドレス、あて先ＩＰアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号をキーとして受信フィルタリングテーブル１１０を検索し、フィルタ条件を求める。
【００５１】
続いてＮＡＴテーブル検索部１１６でＮＡＴテーブル１１１を検索し、内部ネットワークから受信したパケットであれば送信元ＩＰアドレスをキーとして外部ネットワークで使用するＩＰアドレスを、外部ネットワークから受信したパケットであればあて先ＩＰアドレスをキーとして内部ネットワークで使用するＩＰアドレスを求める。この検索結果により、内部ネットワークから外部ネットワークへのパケットであればあて先ＩＰアドレスが、内部ネットワークから外部ネットワークパケットであれば、送信元ＩＰアドレスが変換される。
【００５２】
続いて、ルーティングテーブル検索部１１７で、あて先ＩＰアドレスルーティングテーブル１１２を検索し、対応する次ホップＩＰアドレスと出力インタフェースを求める。そして、Ｌ３−Ｌ２アドレス変換テーブル検索部１１８で、次ホップＩＰアドレスをキーとしてＬ３−Ｌ２アドレス変換テーブル１１３を検索し、対応するＭＡＣアドレスを求める。
【００５３】
次に、送信フィルタリングテーブル検索部１１９で、送信元ＩＰアドレス、あて先ＭＡＣアドレス、あて先ＩＰアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号をキーとして送信フィルタリングテーブル１１４を検索し、フィルタ条件を求める。
【００５４】
また、キャッシュ更新部１０９で、ビット列キャッシュ１０７と処理パラメータ保持部１０８の内容を更新する。まず処理パラメータ保持部１０８の空き領域に、処理パラメータを格納する。この例では、前記テーブルを検索した結果として、フィルタ条件、ＮＡＴ変換後のＩＰアドレス、次ホップＩＰアドレス、出力インタフェース、Ｌ３−Ｌ２変換後のＭＡＣアドレス、が求められるが、このうち次ホップＩＰアドレスは最終的な処理で使用されない中間値である。したがって、最終的に処理パラメータ保持部１０８に格納される処理パラメータは、フィルタ条件、ＮＡＴ変換後のＩＰアドレス、Ｌ３−Ｌ２変換後のＭＡＣアドレス、出力インタフェース、となる。さらに、ビット列キャッシュ１０７のエントリ１２５に、ビット列抽出部１０５が抽出したビット列を格納する。ビット列キャッシュ１０７のエントリ１２５に空きがあれば空きエントリに、なければ後述するビット列キャッシュ１０７のエージング方式に従って空きエントリを作成し、その後空きエントリのビット列フィールドにビット列を設定する。また、エントリのポインタフィールドに、処理パラメータ保持部１０８上のパラメータを保持する領域へのポインタを設定する。
【００５５】
そして、これら検索結果を用いパケット更新部１０４でパケットを更新する。処理内容は、前記ビット列キャッシュ中に一致するエントリがあった場合と同一である。最後に、更新したパケットを、選択された出力インタフェース１０２から送信する。
【００５６】
次に、ビット列抽出部１０５において、パケットからビット列として抽出する部分を決定する方法について説明する。パケットからビット列として抽出する部分は、本パケット転送装置１００が、ビット列キャッシュに一致するビット列がなかった場合に実施するパケット転送処理において検索する単一または複数のテーブルのキーのうち、入力パケット中に含まれるものである。
【００５７】
図１の例では、受信フィルタリングテーブル１１０、ＮＡＴテーブル１１１、ルーティングテーブル１１２、Ｌ３−Ｌ２アドレス変換テーブル１１３、送信フィルタリングテーブル１１４の５つのテーブルが検索されており、検索で用いられるキーは、送信元ＭＡＣアドレス、送信元ＩＰアドレス、あて先ＩＰアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号、次ホップＩＰアドレス、あて先ＭＡＣアドレス、である。このうち、次ホップＩＰアドレスは入力パケットには含まれない。またあて先ＭＡＣアドレスも、Ｌ３−Ｌ２アドレス変換後のものであるので入力パケットのものとは異なる。したがってこの例では、送信元ＭＡＣアドレス、送信元ＩＰアドレス、あて先ＩＰアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号がビット列として抽出する部分となる。
【００５８】
次に、ビット列キャッシュ１０７のエージング処理について説明する。ビット列キャッシュに対して新たにエントリを追加する必要が生じ、かつビット列キャッシュのエントリに空きがない場合、現在あるエントリのいずれかを削除する必要が生じる。一般的に用いられるのは、キャッシュを参照した時刻の情報を用いる方法である。キャッシュのエントリにタイムスタンプフィールドを追加し、キャッシュのエントリが一致した場合、そのエントリのタイムスタンプを現在時刻で更新する。エージングの必要が生じた場合、タイムスタンプが最も古いエントリを削除すればよい。
【００５９】
以上のように本実施の形態によれば、過去に転送処理したパケット中の任意部分から抽出したビット列と、転送中に行った複数の処理およびそこで使用されたパラメータをまとめて保持し、新たに受信したパケット中から抽出したビット列が、保持している過去のビット列と一致した場合、ビット列と関連付けされた処理パラメータから処理を行うことにより、パケット転送におけるテーブル検索処理の負荷低減し、パケット転送を高速化できるという効果が得られる。
【００６０】
また、パケット中から任意のビット列を抽出し、ハッシュ関数で一定長のビット列に変換してから保持・比較することにより、パケット転送において行う処理の追加・削除において、装置に加える変更を加える必要がなく、本パケット転送装置に新たな機能を容易に追加できるという効果が得られる。
【００６１】
（実施の形態２）
図１３は、本発明を適用したパケット転送装置１４９における、実施の形態２を示すブロック図である。実施の形態２のパケット転送装置１４９は、実施の形態１の機能に加え、ＱｏＳ機能（特定の条件を満たすパケットを優先的に転送する機能）を有している。図１３では、上位プロトコルとあて先ポート番号から、パケットの優先度を決定する場合を例として挙げている。ＱｏＳ機能を実現するため、実施の形態２のパケット転送装置１４９は、実施の形態１の構成に加え、パケット優先度テーブル検索部１５０と、パケット優先度テーブル１５１を有している。また、パケット更新部１０４と出力インタフェース１０２の間に、優先度を考慮してパケットを送信する送信キュー１５２を有する。
【００６２】
図１４は、パケット優先度テーブル１５１におけるフォーマットの例を示す。テーブルは、上位プロトコル、あて先ポート番号、パケット優先度からなるエントリ１５３を複数個持つことができる。
【００６３】
図１５は、ビット列キャッシュ１０７および処理パラメータ保持部１０８におけるフォーマット、および前記ビット列キャッシュ１０７と前記パラメータ保持部１０８それぞれのエントリの関係を示す。ビット列キャッシュ１０７は実施の形態１と同様である。実施の形態２ではＱｏＳ機能が追加されており、これに対応して処理パラメータ保持部１０８のエントリ１２５には、処理パラメータとしてＱｏＳ優先度が保持される。ただし、前記処理パラメータ保持部１０８の各エントリはもともとリスト構造になっているため、保持方法に修正を加えることなく新たな処理パラメータを格納することができる。
【００６４】
次に、パケット転送装置１４９における転送処理動作を説明する。パケット優先度テーブルのキー、すなわち上位プロトコル、あて先ポート番号は、実施の形態１にも同様に存在する、他の検索テーブルのキーとして既に使用されており、このため入力パケットに対するビット列抽出部１０５の処理は、実施の形態１と同一である。
【００６５】
キャッシュ検索部１０６での検索の結果、ビット列キャッシュ１０７の中に一致するエントリがあった場合、エントリ中のポインタを参照して処理パラメータ保持部１０８から対応する処理パラメータを取り出す。この例では、フィルタ条件、ＮＡＴ変換後のＩＰアドレス、Ｌ３−Ｌ２変換後のＭＡＣアドレス、出力インタフェース、およびパケット優先度、である。
【００６６】
一方、キャッシュ検索部１０６での検索の結果、ビット列キャッシュ１０７の中に一致するエントリがなかった場合、実施の形態１と同様に、受信フィルタリングテーブル１１０、ＮＡＴテーブル１１１、ルーティングテーブル１１２、Ｌ３−Ｌ２アドレス変換テーブル１１３、送信フィルタリングテーブル１１４を検索した後、さらにパケット優先度テーブル１５１を検索し、パケット優先度を求める。さらにキャッシュ更新部１０９は、ビット列および処理パラメータを、ビット列キャッシュ１０７および処理パラメータ保持部１０８に格納する。
【００６７】
続いて、処理パラメータを用いてパケット更新部１０４でパケットを更新する。本処理も実施の形態１と同様である。更新されたパケットは送信キュー１５２へ転送する。送信キュー１５２は、キューの中に優先度の異なる複数のパケットが存在した場合、優先度の高いパケットから順次出力インタフェース１０２に転送する。
【００６８】
このように、パケット転送装置１４９では、機能の追加に伴い対応する処理ブロック（送信キュー１５２）や、ビット列キャッシュに一致するエントリが存在しなかった場合のテーブル検索ブロックの追加（パケット優先度テーブル検索部１５０と、パケット優先度テーブル１５１）は必要であるものの、ビット列キャッシュ１０７、処理パラメータ保持部１０８、キャッシュ検索部１０６の修正は不要である。このように、本発明によるパケット転送装置は、容易に機能を追加できる構造を有している。
【００６９】
（実施の形態３）
本発明の実施の形態３に係るパケット転送装置は、図１３に示す実施の形態２の機能ブロックと同一である。実施の形態３のパケット転送装置は、実施の形態２と同様に、ＱｏＳ機能（特定の条件を満たすパケットを優先的に転送する機能）を有している。しかし実施の形態３では、上位プロトコルとあて先ポート番号からではなく、ＩＰｖ４ヘッダのＴＯＳフィールドからパケットの優先度を決定している。
【００７０】
図１６は、パケット優先度テーブル１５１におけるフォーマットの例を示す。テーブルは、ＴＯＳフィールド、パケット優先度からなるエントリ１５５を複数個持つことができる。
【００７１】
次に、実施の形態３のパケット転送装置における転送処理動作を説明する。パケット優先度テーブルのキーは、実施の形態２に対して、ＴＯＳフィールドが追加される。すなわち、ビット列抽出部１０５は、ビット列として、プロトコル番号、送信元ＩＰアドレス、あて先ＩＰアドレス、送信元ポート番号、あて先ポート番号、およびＴＯＳフィールドを抽出する。
【００７２】
キャッシュ検索部１０６での検索の結果、ビット列キャッシュ１０７の中に一致するエントリがあった場合、エントリ中のポインタを参照して処理パラメータ保持部１０８から対応する処理パラメータを取り出す。この例では、フィルタ条件、ＮＡＴ変換後のＩＰアドレス、Ｌ３−Ｌ２変換後のＭＡＣアドレス、出力インタフェース、およびパケット優先度、である。
【００７３】
一方、キャッシュ検索部１０６での検索の結果、ビット列キャッシュ１０７の中に一致するエントリがなかった場合、実施の形態１と同様に受信フィルタリングテーブル１１０、ＮＡＴテーブル１１１、ルーティングテーブル１１２、Ｌ３−Ｌ２アドレス変換テーブル１１３、送信フィルタリングテーブル１１４を検索した後、さらにパケット優先度テーブル１５１を検索し、パケット優先度を求める。ただし実施の形態２と異なり、この検索で用いられるキーは、ＴＯＳフィールドである。さらにキャッシュ更新部１０９は、ビット列および処理パラメータを、ビット列キャッシュ１０７および処理パラメータ保持部１０８に格納する。その後、パケット更新部１０４以降パケット出力までの処理は、実施の形態２と同様である。
【００７４】
以上のように、ビット列抽出部１０５が入力パケット中から任意のビット列を抽出する機能をパケット転送装置に備えている。このため、実施の形態３のように新たなビット列が比較対象となる場合でも、ビット列抽出部１０５に対する修正は不要である。なお、抽出するビット列の個数や長さにより、最終的に抽出されるビット列の長さが異なる。このため、ビット列をそのまま使用すると、ビット列キャッシュ１０７のエントリ１２５におけるビット列の長さは可変長となってしまう。しかし前述した、ハッシュ関数を用いた検索を行った場合、元のビット列の長さにかかわらず、ハッシュ関数が出力するビット列の長さが一定であるため、ビット列キャッシュ１０７のエントリ１２５におけるビット列の長さを固定長とすることができる。したがって、検索時にハッシュ関数を用いた場合には、機能拡張時においてビット列キャッシュ１０７、処理パラメータ保持部１０８、キャッシュ検索部１０６の修正は不要である。このように、本発明によるパケット転送装置は、容易に機能を追加できる構造を有している。
【産業上の利用可能性】
【００７５】
本発明は、パケット転送におけるテーブル検索処理の負荷を低減できてパケット転送を高速化でき、ネットワーク間でパケットを中継・転送するルータ装置等に適用することができる。
【図面の簡単な説明】
【００７６】
【図１】本発明の実施の形態１におけるパケット転送装置のブロック図
【図２】受信フィルタリングテーブルを表す図
【図３】ＮＡＴテーブルを表す図
【図４】ルーティングテーブルを表す図
【図５】Ｌ３−Ｌ２アドレス変換テーブルを表す図
【図６】送信フィルタリングテーブルを表す図
【図７】ビット列キャッシュおよび処理パラメータ保持部を表す図
【図８】ビット列抽出部において抽出する部分を指定するテーブルを表す図
【図９】ビット列抽出部におけるビット列抽出処理を表す図
【図１０】ビットマスクを使用した場合のビット列抽出部におけるビット列抽出処理を表す図
【図１１】ビット列をＣＲＣ３２により３２ビットに圧縮する処理を表す図
【図１２】末尾に定数を追加したビット列をＣＲＣ３２により３２ビットに圧縮する処理を表す図
【図１３】実施の形態２、３におけるパケット転送装置のブロック図
【図１４】パケット優先度テーブルを表す図
【図１５】ＱｏＳ機能を追加した場合のビット列キャッシュおよび処理パラメータ保持部を表す図
【図１６】優先度決定にＴＯＳフィールドを用いた場合のパケット優先度テーブルを表す図
【符号の説明】
【００７７】
１００、１４９  パケット転送装置
１０１  入力インタフェース
１０２  出力インタフェース
１０３  パケット解析部
１０４  パケット更新部
１０５  ビット列抽出部
１０６  キャッシュ検索部
１０７  ビット列キャッシュ
１０８  処理パラメータ保持部
１０９  キャッシュ更新部
１１０  受信フィルタリングテーブル
１１１  ＮＡＴテーブル
１１２  ルーティングテーブル
１１３  Ｌ３−Ｌ２アドレス変換テーブル
１１４  送信フィルタリングテーブル
１２０  受信フィルタリングテーブルのエントリ
１２１  ＮＡＴテーブルのエントリ
１２２  ルーティングテーブルのエントリ
１２３  Ｌ３−Ｌ２アドレス変換テーブルのエントリ
１２４  送信フィルタリングテーブルのエントリ
１２５  ビット列キャッシュのエントリ
１２６−１  処理パラメータリスト（１）
１２６−２  処理パラメータリスト（２）
１２６−ｎ６  処理パラメータリスト（ｎ６）
１５０  パケット優先度テーブル検索部
１５１  パケット優先度テーブル
１５２  送信キュー
１５３  パケット優先度テーブルのエントリ
【図１】
2005347969.tif 000003
【図２】
2005347969.tif 000004
【図３】
2005347969.tif 000005
【図４】
2005347969.tif 000006
【図５】
2005347969.tif 000007
【図６】
2005347969.tif 000008
【図７】
2005347969.tif 000009
【図８】
2005347969.tif 000010
【図９】
2005347969.tif 000011
【図１０】
2005347969.tif 000012
【図１１】
2005347969.tif 000013
【図１２】
2005347969.tif 000014
【図１３】
2005347969.tif 000015
【図１４】
2005347969.tif 000016
【図１５】
2005347969.tif 000017
【図１６】
2005347969.tif 000018