JP2005347969A - パケット転送装置およびパケット転送方法 - Google Patents

パケット転送装置およびパケット転送方法 Download PDF

Info

Publication number
JP2005347969A
JP2005347969A JP2004163727A JP2004163727A JP2005347969A JP 2005347969 A JP2005347969 A JP 2005347969A JP 2004163727 A JP2004163727 A JP 2004163727A JP 2004163727 A JP2004163727 A JP 2004163727A JP 2005347969 A JP2005347969 A JP 2005347969A
Authority
JP
Japan
Prior art keywords
bit string
packet
cache
extracted
address
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
Application number
JP2004163727A
Other languages
English (en)
Inventor
Fumiaki Suzuki
史章 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2004163727A priority Critical patent/JP2005347969A/ja
Publication of JP2005347969A publication Critical patent/JP2005347969A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】 パケット転送におけるテーブル検索処理の負荷を低減して、パケット転送を高速化を図ること。
【解決手段】 入力インタフェース101から取り込んだパケットを更新して出力インタフェース102から出力する転送処理を行うパケット転送装置100において、過去に転送処理したパケット中の任意部分から抽出したビット列をビット列キャッシュ107に保持し、過去の転送処理で実行した各種テーブル検索によって得られたパラメータを処理パラメータ保持部108に保持する。そして、新たに受信したパケット中から抽出したビット列が前記ビット列キャッシュ107に保持している過去のビット列と一致した場合、パケット更新部104が当該ビット列と関連付けて前記処理パラメータ保持部108に格納したパラメータを用いてパケットを更新する。
【選択図】 図1

Description

本発明は、パケット通信システムにおいて、ネットワーク間でパケットを転送する、ルータ、スイッチなどのパケット転送装置およびパケット転送方法に関する。
パケット通信を行うIPネットワーク上で、複数の端末が接続する複数のネットワークを結び、ネットワーク間でパケットを中継・転送する装置として、ルータが用いられる。ルータの基本的機能は、受信したパケット中のあて先IPアドレスを見て、そのパケットを、どのネットワーク(すなわち、ルータのどの出力インタフェース)の、どのホストに送信するかを決定し、転送することである。
しかし、近年は、ルータにおいて、その基本機能であるパケット転送に加え、特定の条件を満たすパケットのみを通過させる(もしくは破棄する)フィルタリング機能、外部ネットワークと内部ネットワークで用いられるIPアドレスを変換するNAT(Network Address Translation)機能、特定のパケットのみ優先的に転送するQoS機能、遠隔地にあるネットワーク同士を安全に接続するVPN機能など、さまざまな機能が追加されるようになっている。このような背景から、ルータ上における処理負荷は、増大する方向にあるといえる。
一方、ネットワークの物理的な伝送速度はますます高速化しつつある。このような背景から、ルータにおいてはさまざまな機能を実現し、かつ機能が増加した場合においても高速にパケットを転送することが求められている。
このような課題を解決するための方式として、高速に検索を行うことができるCAM(Content Addressable)上に、ルーティングテーブルの一部をキャッシュすることにより、パケット転送における経路検索処理を高速化する方式がある(例えば、特許文献1参照)。
また、ルータ上で行うフィルタリング処理について、1つ目のパケットについては逐次アクセスリストを検索してフィルタ条件(通過または破棄)を決定し、その結果をフィルタキャッシュテーブルに保持し、一方2つ目以降のパケットについては、フィルタキャッシュテーブルを参照してフィルタ条件を導くことにより、フィルタリング処理を高速化する方式がある(例えば、特許文献2参照)。
従来技術を適用したパケット転送装置では、通常のパケット転送機能に加え、装置に入力する特定のパケットの受信を制限する受信フィルタリング機能、内部ネットワークのIPアドレスと外部ネットワークのIPアドレスを変換するNAT機能、装置が出力するパケットの送信を制限する送信フィルタリング機能を有している。このように従来技術においては、局所的なキャッシュを配置することでパケットの転送における処理を高速化している。
上記方式を適用したパケット伝送装置について具体的に説明する。特定のMACアドレス宛のパケットの送信を禁止する場合を例として説明する。従来は、受信フィルタリングテーブル(またはキャッシュ)を検索して受信時のフィルタ条件を求め、NATテーブルを検索して外部IPアドレスと内部IPアドレスを変換し、ルーティングキャッシュテーブル(またはキャッシュ)を検索してあて先IPアドレスから次ホップIPアドレスを求め、L3−L2アドレス変換テーブルを検索して次ホップIPアドレスをあて先MACアドレスに変換した後、出力フィルタリングテーブルを検索することにより、破棄を決定する。
特開平6−261078号公報(第9頁、第1図) 特開2000−261487号公報
しかしながら、前記の従来技術によるパケット転送では、その処理において機能ごとに多数のテーブルを引くテーブル検索を逐次実施する必要がある。局所的にキャッシュを保持して高速化しても、機能が増えるにつれてキャッシュそのものの個数が増加するため、処理負荷が高まり、パケット転送速度が低下する、または回路規模が増大する、という問題があった。
本発明は、以上のような実情に鑑みてなされたものであり、パケット転送におけるテーブル検索処理の負荷を低減して、パケット転送を高速化できるパケット転送装置およびパケット転送方法を提供することを目的とする。
本発明は、過去に転送処理したパケット中から抽出した任意のビット列と、転送中に行った複数の処理およびそこで使用されたパラメータをまとめて保持し、新たに受信したパケット中から抽出したビット列が、保持している過去のビット列と一致した場合、ビット列と関連付けされた処理パラメータから処理を行うように構成したものである。
これにより、過去に処理したことのあるパケットについては、機能ごとに多数のテーブルまたはキャッシュを検索することなく、行うべき処理を確定することができる。課題で示したあて先MACアドレスでパケットをフィルタリングする場合を例に挙げ説明する。パケットを受信した時点で、そのパケット中からビット列を抽出し、さらに過去に処理したパケットのビット列と一致するかどうかを、テーブルを一回検索し、その結果処理パラメータとして「フィルタ条件=破棄」を得ることで、パケットの破棄を決定することができる。このように、テーブル検索回数を抑えることにより装置内の処理負荷を抑えることができ、結果としてパケット転送処理を高速化することができる。
また、受信パケットの任意部分からビット列を抽出し、過去に受信したパケットのビット列と比較できるように構成する。
これにより、処理の追加により受信パケット中の新たなフィールドを比較する必要が生じた場合に、ビット列抽出部分および比較部分に変更を加える必要がなくなる。結果として、本パケット転送装置に新たな機能を容易に追加できる。
本発明によれば、パケット転送におけるテーブル検索処理の負荷低減し、パケット転送を高速化できるパケット転送装置及びパケット転送方法を提供することができる。
本発明の第1の態様は、入力インタフェースから取り込んだパケットを更新して出力インタフェースから出力する転送処理を行うパケット転送装置において、過去に転送処理したパケット中の任意部分から抽出したビット列を保持するビット列キャッシュと、過去の転送処理において各種テーブルを検索して取得したパケット更新のためのパラメータを保持する処理パラメータ保持部と、新たに受信したパケット中から抽出したビット列が前記ビット列キャッシュに保持している過去のビット列と一致した場合、当該ビット列と関連付けて前記処理パラメータ保持部に格納したパラメータを用いてパケットを更新するパケット更新手段と、を具備するパケット転送装置である。
以上のように構成されたパケット転送装置によれば、過去に処理したことのあるパケットについては、以降受信した場合にその転送を高速に行うことができるという作用を有する。
本発明の第2の態様は、第1の態様のパケット転送装置において、ビット列キャッシュ中に一致するビット列が存在しなかった場合は各種テーブル検索を逐次実行してパラメータを取得し、そのパラメータを前記処理パラメータ保持部に格納し、当該ビット列を前記ビット列キャッシュに格納する。
これにより、過去に処理したことのない新たなパケットを受信した場合は、今回の転送処理で得られたビット列でビット列キャッシュを更新できるとともに、そのビット列に対応したパラメータが反映されるように処理パラメータ保持部を更新できる。
本発明の第3の態様は、第2の態様のパケット転送装置において、各種テーブル検索時の検索キーのうち入力パケットに含まれるビット列を連結したものを、前記ビット列キャッシュのエントリとするものとした。
これにより、パケット転送において実施する処理が追加または削除され、それに伴いビット列として抽出すべき部分が変更になった場合において、ビット列抽に関する構成を変更する必要がなく、装置の構成変更を最小に抑えるという作用を有する。
本発明の第4の態様は、第1から第3の態様のいずれかのパケット転送装置において、入力パケットから抽出した可変長のビット列を、ハッシュ関数を使用して固定長のビット列に変換し、このビット列を用いてビット列キャッシュを検索するものとした。
これにより、パケット転送において実施する処理が追加または削除され、それに伴い比較すべきビット列の長さが変化した場合においても、キャッシュ検索、ビット列キャッシュに関する構成を変更する必要がなく、装置の構成変更を最小に抑えるという作用を有する。
本発明の第5の態様は、入力インタフェースから取り込んだパケットを更新して出力インタフェースから出力する転送処理を行うパケット転送方法において、受信したパケットの任意部分をビット列として抽出し、抽出したビット列と一致するビット列が、過去に転送処理したパケット中の任意部分から抽出したビット列を保持するビット列キャッシュに存在するか否か判断し、一致するビット列が存在する場合、過去の転送処理において各種テーブルを検索して取得したパケット更新のためのパラメータを保持する処理パラメータ保持部から、当該ビット列と関連付けて格納しているパラメータを取り出してパケットを更新することを特徴とするパケット転送方法である。
以下、本発明の一実施の形態であるパケット転送装置及びパケット転送方法について、図面を参照して具体的に説明する。
(実施の形態1)
図1は、本実施の形態に係るパケット転送装置のブロック図である。本実施の形態は、通常のパケット転送機能に加え、装置に入力する特定のパケットの受信を制限する受信フィルタリング機能、内部ネットワークのIPアドレスと外部ネットワークのIPアドレスを変換するNAT機能、装置が出力するパケットの送信を制限する送信フィルタリング機能を有する場合を例として説明する。
パケット転送装置100は、パケットを受信する一つまたは複数の入力インタフェース101と、更新パケットを別のネットワークに出力する一つまたは複数の出力インタフェース102とを有する。図1では、2つの入力インタフェース101及び2つの出力インタフェース102を備える場合を例示している。
入力インタフェース101から取り込んだパケットをパケット解析部103へ入力する。パケット解析部103は、入力したパケットのフォーマットを解析する。パケット解析情報はビット列抽出部105へ与える。ビット列抽出部105は、パケット解析情報をもとに、入力パケット中から任意部分のビット列を抽出する。ビット列キャッシュ107は、過去に処理したパケットのビット列を保持する。前記ビット列キャッシュに対応する処理や処理パラメータは処理パラメータ保持部108に保持する。
キャッシュ検索部106は、抽出したビット列と前記ビット列キャッシュのエントリを比較する。ビット列キャッシュに一致するエントリがない場合に、パケットを受信すべきかを判定するのが受信フィルタリングテーブル検索部115および受信フィルタリングテーブル110である。
NATテーブル111が内部ネットワークと外部ネットワークのIPアドレスの対応関係を保持し、NATテーブル検索部116が変換すべきアドレスを決定する。また、ルーティングテーブル112があて先IPアドレスと次に転送する装置のIPアドレス・出力インタフェースの対応情報を保持し、ルーティングテーブル検索部117がルーティングテーブル112を参照して次に転送する装置のIPアドレス・出力インタフェースを決定する。L3−L2アドレス変換テーブル113がIPアドレスとリンクレイヤアドレス(Ethernet(登録商標)であればMACアドレス)の対応を保持し、レイヤ3−レイヤ2(以降L3−L2と表記する)アドレス変換テーブル検索部118がL3−L2アドレス変換テーブル113を用いてリンクレイヤアドレスを決定する。また、送信フィルタリングテーブル検索部119および送信フィルタリングテーブル114がパケットを送信すべきかを判定する。
キャッシュ更新部109は、前記ビット列抽出部105が抽出したビット列を前記ビット列キャッシュに、また各種テーブルの検索結果を前記処理パラメータ保持部108に格納する。パケット更新部104は、前記処理パラメータ保持部108または各種テーブルの検索結果からパケットを更新する。一つまたは複数の出力インタフェース102が更新パケットを最終的に別のネットワークに出力する。
なお、入力インタフェースおよび出力インタフェースは、Ethenet(登録商標)インタフェースのような物理インタフェースのほかに、トンネルインタフェースやPPPoEインタフェースといった、仮想的に設定されるインタフェース(論理インタフェース)であってもよい。
図2は、受信フィルタリングテーブル110におけるフォーマットの例を示す。テーブルは、送信元MACアドレス、送信元IPアドレス、あて先IPアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号、フィルタ条件からなるエントリ120を複数個持つことができる。
図3は、NATテーブル111におけるフォーマットの例を示す。テーブルは、内部ネットワークIPアドレス、外部ネットワークIPアドレスからなるエントリ121を複数個持つことができる。
図4は、ルーティングテーブル112におけるフォーマットの例を示す。テーブルは、あて先IPアドレス、ネットマスク、次ホップIPアドレス、出力インタフェースからなるエントリ122を複数持つことができる。
図5は、L3−L2アドレス変換テーブル113におけるフォーマットの例を示す。テーブルは、IPアドレス、MACアドレスからなるエントリ123を複数持つことができる。
図6は、送信フィルタリングテーブル114におけるフォーマットの例を示す。テーブルは、送信元IPアドレス、あて先MACアドレス、あて先IPアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号、フィルタ条件からなるエントリ124を複数個持つことができる。
図7は、ビット列キャッシュ107および処理パラメータ保持部108におけるフォーマット、およびビット列キャッシュ107と処理パラメータ保持部108のそれぞれのエントリの関係を示す。ビット列キャッシュ107におけるテーブルは、ビット列とパラメータ保持部108へのポインタとからなるエントリ125を複数持つことができる。処理パラメータ保持部108は、ビット列キャッシュ107のエントリに対応する1乃至複数個の処理および処理パラメータを保持する。ここで、ビット列キャッシュ107のエントリ(1)に対応する処理パラメータは126−1、エントリ(2)に対応する処理パラメータは126−2、エントリ(n6)に対応する処理パラメータは126−n6である。
次に、本パケット転送装置100における転送処理動作を、図8〜図12を用いて説明する。
ネットワークからパケット転送装置100に送られるパケットは、入力インタフェース101が受信し、パケット解析部103において、ヘッダの有無や位置の検出、ヘッダやパケットフォーマットのエラーの検出を行う。
続いてビット列抽出部105において、パケット中からキャッシュ検索用のビット列を抽出する。ビット列抽出部105は、図8に示したような抽出場所を指示するテーブルを設定することにより、パケット解析部103が解析したヘッダまたはペイロード中の先頭より任意の位置から、任意の長さのビット列を任意の個数抽出できるよう構成する。
実際にパケット中からビット列を抽出する方法を図9に示す。抽出すべきビット列は、図8に示すテーブルによって指示されている。なお、パケット中からどのビット列を抽出するかは、パケット転送装置100が行う処理において検索するテーブルに依存する。パケット中のどの部分からビット列を抽出すべきであるかを決定する方法は後述する。図9の例ではビット列として、プロトコル番号、送信元IPアドレス、あて先IPアドレス、送信元ポート番号、あて先ポート番号、を抽出している。
なお、図9に示したように抽出したビットを結合してビット列を生成するのではなく、図10に示すように抽出部分に1をセットしたマスクビット列を各ヘッダに対して用意し、マスクビット列と入力パケットとの論理積を取ることにより、比較用のビット列を生成することもできる。この場合、生成されるビット列の長さは各ヘッダ部分の長さの和と同一になってしまうが、後述のハッシュ関数を用いた検索を行うことで、ビット列キャッシュ107に格納し、またキャッシュ検索部106が比較するビット列の長さを短くすることができる。
続いてキャッシュ検索部106において、ビット列抽出部105が抽出したビット列をキーとして、ビット列キャッシュ107中の各エントリ125中のビット列と比較し、一致するエントリを検索する。なお、この検索方式は特に限定しない。ビット列そのままの長さ(この例では104ビット)の比較器で比較・検索してもよいし、処理部が持つ任意の長さの比較器(たとえば32ビット比較器など)を用い、ビット列を比較器のビット長の整数倍(この例では128ビット)になるようパディングした後、分割(この例では4分割)して比較・検索してもよい。またCAMのような高速検索に適したハードウェアを使用することもできる。さらに、ビット列をそのまま検索するのではなく、ハッシュ関数を使ってビット列の長さを圧縮し、縮退した空間の中で検索を行ってもよい。
CRC32を使い、ビット列の長さを32ビットに圧縮する例を図11に示す。この場合、ビット列キャッシュ107のエントリにおけるビット列の長さは32ビットとなる。ハッシュ関数やCRCを用いると、任意の長さをもつビット列を、一定の長さのビット列に変換することができる。なお、ハッシュ関数の特性から、縮退した空間において、異なる入力のビット列に対して、同一のハッシュ値を生成してしまうことがある(ハッシュの衝突)。ハッシュ関数による圧縮後のビット列の長さが32ビットであるので、ビット列キャッシュ107のエントリ数が100〜1000程度とすると、任意の複数のエントリが同一のハッシュ値を持つ可能性は非常に小さい。しかし、もし衝突した場合には、元のビット列の末尾にビット列(定数)を連結した後ハッシュ値を再計算させることができる。本来ハッシュの衝突の可能性は非常に小さいので、ハッシュ値の再計算により、ほとんどの場合で衝突を回避できる。もし再度衝突が起こった場合には、末尾に連結するビット列のパターンを変更し、衝突が起こらなくなるまでハッシュ値の再計算を繰り返せばよい。ビット列抽出部105が抽出したビット列の末尾にビット列を付加し、ハッシュ値を計算する例を図12に示す。
このようにハッシュ関数を用い縮退した空間で検索を行うキャッシュ検索部106と、パケット中から任意のビット列を抽出できる前記ビット列抽出部105とを組合せ、本パケット転送装置100はパケット中の任意のビット列を比較する機能を有する。
キャッシュ検索部106での検索の結果、ビット列キャッシュ107の中に一致するエントリがあった場合、エントリ中のポインタを参照して処理パラメータ保持部108から対応する処理パラメータを取り出す。この例では、フィルタ条件、NAT変換後のIPアドレス、L3−L2変換後のMACアドレス、出力インタフェース、である。
続いて、その処理パラメータを用いてパケット更新部104でパケットを更新する。この例では、処理パラメータに基づきIPv4ヘッダ中の送信元IPアドレスとEthernet(登録商標)ヘッダ中のあて先MACアドレスを書換え、またTTLを減算し、IPv4ヘッダ中のチェックサムフィールドとEthernet(登録商標)パケット末尾のFCSを再計算して更新する。
最後に、更新したパケットを、選択された出力インタフェース102から送信する。
一方、キャッシュ検索部106での検索の結果、ビット列キャッシュ107の中に一致するエントリがなかった場合、通常のルータが行うパケット転送処理を実施する。すなわち、まず受信フィルタリングテーブル検索部115で、送信元MACアドレス、送信元IPアドレス、あて先IPアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号をキーとして受信フィルタリングテーブル110を検索し、フィルタ条件を求める。
続いてNATテーブル検索部116でNATテーブル111を検索し、内部ネットワークから受信したパケットであれば送信元IPアドレスをキーとして外部ネットワークで使用するIPアドレスを、外部ネットワークから受信したパケットであればあて先IPアドレスをキーとして内部ネットワークで使用するIPアドレスを求める。この検索結果により、内部ネットワークから外部ネットワークへのパケットであればあて先IPアドレスが、内部ネットワークから外部ネットワークパケットであれば、送信元IPアドレスが変換される。
続いて、ルーティングテーブル検索部117で、あて先IPアドレスルーティングテーブル112を検索し、対応する次ホップIPアドレスと出力インタフェースを求める。そして、L3−L2アドレス変換テーブル検索部118で、次ホップIPアドレスをキーとしてL3−L2アドレス変換テーブル113を検索し、対応するMACアドレスを求める。
次に、送信フィルタリングテーブル検索部119で、送信元IPアドレス、あて先MACアドレス、あて先IPアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号をキーとして送信フィルタリングテーブル114を検索し、フィルタ条件を求める。
また、キャッシュ更新部109で、ビット列キャッシュ107と処理パラメータ保持部108の内容を更新する。まず処理パラメータ保持部108の空き領域に、処理パラメータを格納する。この例では、前記テーブルを検索した結果として、フィルタ条件、NAT変換後のIPアドレス、次ホップIPアドレス、出力インタフェース、L3−L2変換後のMACアドレス、が求められるが、このうち次ホップIPアドレスは最終的な処理で使用されない中間値である。したがって、最終的に処理パラメータ保持部108に格納される処理パラメータは、フィルタ条件、NAT変換後のIPアドレス、L3−L2変換後のMACアドレス、出力インタフェース、となる。さらに、ビット列キャッシュ107のエントリ125に、ビット列抽出部105が抽出したビット列を格納する。ビット列キャッシュ107のエントリ125に空きがあれば空きエントリに、なければ後述するビット列キャッシュ107のエージング方式に従って空きエントリを作成し、その後空きエントリのビット列フィールドにビット列を設定する。また、エントリのポインタフィールドに、処理パラメータ保持部108上のパラメータを保持する領域へのポインタを設定する。
そして、これら検索結果を用いパケット更新部104でパケットを更新する。処理内容は、前記ビット列キャッシュ中に一致するエントリがあった場合と同一である。最後に、更新したパケットを、選択された出力インタフェース102から送信する。
次に、ビット列抽出部105において、パケットからビット列として抽出する部分を決定する方法について説明する。パケットからビット列として抽出する部分は、本パケット転送装置100が、ビット列キャッシュに一致するビット列がなかった場合に実施するパケット転送処理において検索する単一または複数のテーブルのキーのうち、入力パケット中に含まれるものである。
図1の例では、受信フィルタリングテーブル110、NATテーブル111、ルーティングテーブル112、L3−L2アドレス変換テーブル113、送信フィルタリングテーブル114の5つのテーブルが検索されており、検索で用いられるキーは、送信元MACアドレス、送信元IPアドレス、あて先IPアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号、次ホップIPアドレス、あて先MACアドレス、である。このうち、次ホップIPアドレスは入力パケットには含まれない。またあて先MACアドレスも、L3−L2アドレス変換後のものであるので入力パケットのものとは異なる。したがってこの例では、送信元MACアドレス、送信元IPアドレス、あて先IPアドレス、上位プロトコル、送信元ポート番号、あて先ポート番号がビット列として抽出する部分となる。
次に、ビット列キャッシュ107のエージング処理について説明する。ビット列キャッシュに対して新たにエントリを追加する必要が生じ、かつビット列キャッシュのエントリに空きがない場合、現在あるエントリのいずれかを削除する必要が生じる。一般的に用いられるのは、キャッシュを参照した時刻の情報を用いる方法である。キャッシュのエントリにタイムスタンプフィールドを追加し、キャッシュのエントリが一致した場合、そのエントリのタイムスタンプを現在時刻で更新する。エージングの必要が生じた場合、タイムスタンプが最も古いエントリを削除すればよい。
以上のように本実施の形態によれば、過去に転送処理したパケット中の任意部分から抽出したビット列と、転送中に行った複数の処理およびそこで使用されたパラメータをまとめて保持し、新たに受信したパケット中から抽出したビット列が、保持している過去のビット列と一致した場合、ビット列と関連付けされた処理パラメータから処理を行うことにより、パケット転送におけるテーブル検索処理の負荷低減し、パケット転送を高速化できるという効果が得られる。
また、パケット中から任意のビット列を抽出し、ハッシュ関数で一定長のビット列に変換してから保持・比較することにより、パケット転送において行う処理の追加・削除において、装置に加える変更を加える必要がなく、本パケット転送装置に新たな機能を容易に追加できるという効果が得られる。
(実施の形態2)
図13は、本発明を適用したパケット転送装置149における、実施の形態2を示すブロック図である。実施の形態2のパケット転送装置149は、実施の形態1の機能に加え、QoS機能(特定の条件を満たすパケットを優先的に転送する機能)を有している。図13では、上位プロトコルとあて先ポート番号から、パケットの優先度を決定する場合を例として挙げている。QoS機能を実現するため、実施の形態2のパケット転送装置149は、実施の形態1の構成に加え、パケット優先度テーブル検索部150と、パケット優先度テーブル151を有している。また、パケット更新部104と出力インタフェース102の間に、優先度を考慮してパケットを送信する送信キュー152を有する。
図14は、パケット優先度テーブル151におけるフォーマットの例を示す。テーブルは、上位プロトコル、あて先ポート番号、パケット優先度からなるエントリ153を複数個持つことができる。
図15は、ビット列キャッシュ107および処理パラメータ保持部108におけるフォーマット、および前記ビット列キャッシュ107と前記パラメータ保持部108それぞれのエントリの関係を示す。ビット列キャッシュ107は実施の形態1と同様である。実施の形態2ではQoS機能が追加されており、これに対応して処理パラメータ保持部108のエントリ125には、処理パラメータとしてQoS優先度が保持される。ただし、前記処理パラメータ保持部108の各エントリはもともとリスト構造になっているため、保持方法に修正を加えることなく新たな処理パラメータを格納することができる。
次に、パケット転送装置149における転送処理動作を説明する。パケット優先度テーブルのキー、すなわち上位プロトコル、あて先ポート番号は、実施の形態1にも同様に存在する、他の検索テーブルのキーとして既に使用されており、このため入力パケットに対するビット列抽出部105の処理は、実施の形態1と同一である。
キャッシュ検索部106での検索の結果、ビット列キャッシュ107の中に一致するエントリがあった場合、エントリ中のポインタを参照して処理パラメータ保持部108から対応する処理パラメータを取り出す。この例では、フィルタ条件、NAT変換後のIPアドレス、L3−L2変換後のMACアドレス、出力インタフェース、およびパケット優先度、である。
一方、キャッシュ検索部106での検索の結果、ビット列キャッシュ107の中に一致するエントリがなかった場合、実施の形態1と同様に、受信フィルタリングテーブル110、NATテーブル111、ルーティングテーブル112、L3−L2アドレス変換テーブル113、送信フィルタリングテーブル114を検索した後、さらにパケット優先度テーブル151を検索し、パケット優先度を求める。さらにキャッシュ更新部109は、ビット列および処理パラメータを、ビット列キャッシュ107および処理パラメータ保持部108に格納する。
続いて、処理パラメータを用いてパケット更新部104でパケットを更新する。本処理も実施の形態1と同様である。更新されたパケットは送信キュー152へ転送する。送信キュー152は、キューの中に優先度の異なる複数のパケットが存在した場合、優先度の高いパケットから順次出力インタフェース102に転送する。
このように、パケット転送装置149では、機能の追加に伴い対応する処理ブロック(送信キュー152)や、ビット列キャッシュに一致するエントリが存在しなかった場合のテーブル検索ブロックの追加(パケット優先度テーブル検索部150と、パケット優先度テーブル151)は必要であるものの、ビット列キャッシュ107、処理パラメータ保持部108、キャッシュ検索部106の修正は不要である。このように、本発明によるパケット転送装置は、容易に機能を追加できる構造を有している。
(実施の形態3)
本発明の実施の形態3に係るパケット転送装置は、図13に示す実施の形態2の機能ブロックと同一である。実施の形態3のパケット転送装置は、実施の形態2と同様に、QoS機能(特定の条件を満たすパケットを優先的に転送する機能)を有している。しかし実施の形態3では、上位プロトコルとあて先ポート番号からではなく、IPv4ヘッダのTOSフィールドからパケットの優先度を決定している。
図16は、パケット優先度テーブル151におけるフォーマットの例を示す。テーブルは、TOSフィールド、パケット優先度からなるエントリ155を複数個持つことができる。
次に、実施の形態3のパケット転送装置における転送処理動作を説明する。パケット優先度テーブルのキーは、実施の形態2に対して、TOSフィールドが追加される。すなわち、ビット列抽出部105は、ビット列として、プロトコル番号、送信元IPアドレス、あて先IPアドレス、送信元ポート番号、あて先ポート番号、およびTOSフィールドを抽出する。
キャッシュ検索部106での検索の結果、ビット列キャッシュ107の中に一致するエントリがあった場合、エントリ中のポインタを参照して処理パラメータ保持部108から対応する処理パラメータを取り出す。この例では、フィルタ条件、NAT変換後のIPアドレス、L3−L2変換後のMACアドレス、出力インタフェース、およびパケット優先度、である。
一方、キャッシュ検索部106での検索の結果、ビット列キャッシュ107の中に一致するエントリがなかった場合、実施の形態1と同様に受信フィルタリングテーブル110、NATテーブル111、ルーティングテーブル112、L3−L2アドレス変換テーブル113、送信フィルタリングテーブル114を検索した後、さらにパケット優先度テーブル151を検索し、パケット優先度を求める。ただし実施の形態2と異なり、この検索で用いられるキーは、TOSフィールドである。さらにキャッシュ更新部109は、ビット列および処理パラメータを、ビット列キャッシュ107および処理パラメータ保持部108に格納する。その後、パケット更新部104以降パケット出力までの処理は、実施の形態2と同様である。
以上のように、ビット列抽出部105が入力パケット中から任意のビット列を抽出する機能をパケット転送装置に備えている。このため、実施の形態3のように新たなビット列が比較対象となる場合でも、ビット列抽出部105に対する修正は不要である。なお、抽出するビット列の個数や長さにより、最終的に抽出されるビット列の長さが異なる。このため、ビット列をそのまま使用すると、ビット列キャッシュ107のエントリ125におけるビット列の長さは可変長となってしまう。しかし前述した、ハッシュ関数を用いた検索を行った場合、元のビット列の長さにかかわらず、ハッシュ関数が出力するビット列の長さが一定であるため、ビット列キャッシュ107のエントリ125におけるビット列の長さを固定長とすることができる。したがって、検索時にハッシュ関数を用いた場合には、機能拡張時においてビット列キャッシュ107、処理パラメータ保持部108、キャッシュ検索部106の修正は不要である。このように、本発明によるパケット転送装置は、容易に機能を追加できる構造を有している。
本発明は、パケット転送におけるテーブル検索処理の負荷を低減できてパケット転送を高速化でき、ネットワーク間でパケットを中継・転送するルータ装置等に適用することができる。
本発明の実施の形態1におけるパケット転送装置のブロック図 受信フィルタリングテーブルを表す図 NATテーブルを表す図 ルーティングテーブルを表す図 L3−L2アドレス変換テーブルを表す図 送信フィルタリングテーブルを表す図 ビット列キャッシュおよび処理パラメータ保持部を表す図 ビット列抽出部において抽出する部分を指定するテーブルを表す図 ビット列抽出部におけるビット列抽出処理を表す図 ビットマスクを使用した場合のビット列抽出部におけるビット列抽出処理を表す図 ビット列をCRC32により32ビットに圧縮する処理を表す図 末尾に定数を追加したビット列をCRC32により32ビットに圧縮する処理を表す図 実施の形態2、3におけるパケット転送装置のブロック図 パケット優先度テーブルを表す図 QoS機能を追加した場合のビット列キャッシュおよび処理パラメータ保持部を表す図 優先度決定にTOSフィールドを用いた場合のパケット優先度テーブルを表す図
符号の説明
100、149 パケット転送装置
101 入力インタフェース
102 出力インタフェース
103 パケット解析部
104 パケット更新部
105 ビット列抽出部
106 キャッシュ検索部
107 ビット列キャッシュ
108 処理パラメータ保持部
109 キャッシュ更新部
110 受信フィルタリングテーブル
111 NATテーブル
112 ルーティングテーブル
113 L3−L2アドレス変換テーブル
114 送信フィルタリングテーブル
120 受信フィルタリングテーブルのエントリ
121 NATテーブルのエントリ
122 ルーティングテーブルのエントリ
123 L3−L2アドレス変換テーブルのエントリ
124 送信フィルタリングテーブルのエントリ
125 ビット列キャッシュのエントリ
126−1 処理パラメータリスト(1)
126−2 処理パラメータリスト(2)
126−n6 処理パラメータリスト(n6)
150 パケット優先度テーブル検索部
151 パケット優先度テーブル
152 送信キュー
153 パケット優先度テーブルのエントリ

Claims (5)

  1. 入力インタフェースから取り込んだパケットを更新して出力インタフェースから出力する転送処理を行うパケット転送装置において、過去に転送処理したパケット中の任意部分から抽出したビット列を保持するビット列キャッシュと、過去の転送処理において各種テーブルを検索して取得したパケット更新のためのパラメータを保持する処理パラメータ保持部と、新たに受信したパケット中から抽出したビット列が前記ビット列キャッシュに保持している過去のビット列と一致した場合、当該ビット列と関連付けて前記処理パラメータ保持部に格納したパラメータを用いてパケットを更新するパケット更新手段と、を具備するパケット転送装置。
  2. ビット列キャッシュ中に一致するビット列が存在しなかった場合、各種テーブルに対する検索を逐次実行してパラメータを取得し、そのパラメータを前記処理パラメータ保持部に格納し、当該ビット列を前記ビット列キャッシュに格納することを特徴とする請求項1記載のパケット転送装置。
  3. 各種テーブル検索時の検索キーのうち入力パケットに含まれるビット列を連結したものを、前記ビット列キャッシュのエントリとすることを特徴とする請求項2記載のパケット転送装置。
  4. 入力パケットから抽出した可変長のビット列を、ハッシュ関数を使用して固定長のビット列に変換し、このビット列を用いてビット列キャッシュを検索することを特徴とする請求項1から請求項3のいずれかに記載のパケット転送装置。
  5. 入力インタフェースから取り込んだパケットを更新して出力インタフェースから出力する転送処理を行うパケット転送方法において、受信したパケットの任意部分をビット列として抽出し、抽出したビット列と一致するビット列が、過去に転送処理したパケット中の任意部分から抽出したビット列を保持するビット列キャッシュに存在するか否か判断し、一致するビット列が存在する場合、過去の転送処理において各種テーブルを検索して取得したパケット更新のためのパラメータを保持する処理パラメータ保持部から、当該ビット列と関連付けて格納しているパラメータを取り出してパケットを更新することを特徴とするパケット転送方法。
JP2004163727A 2004-06-01 2004-06-01 パケット転送装置およびパケット転送方法 Pending JP2005347969A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004163727A JP2005347969A (ja) 2004-06-01 2004-06-01 パケット転送装置およびパケット転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004163727A JP2005347969A (ja) 2004-06-01 2004-06-01 パケット転送装置およびパケット転送方法

Publications (1)

Publication Number Publication Date
JP2005347969A true JP2005347969A (ja) 2005-12-15

Family

ID=35499952

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004163727A Pending JP2005347969A (ja) 2004-06-01 2004-06-01 パケット転送装置およびパケット転送方法

Country Status (1)

Country Link
JP (1) JP2005347969A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008233984A (ja) * 2007-03-16 2008-10-02 Brother Ind Ltd 電子文書システム及び文書電子化方法
JP2009017069A (ja) * 2007-07-03 2009-01-22 Brother Ind Ltd オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム
JP2009239374A (ja) * 2008-03-26 2009-10-15 Nec Corp 仮想計算機システム及びパケット送信制御方法並びにそれに用いるネットワークインターフェースカード
JP2012209666A (ja) * 2011-03-29 2012-10-25 Nippon Telegraph & Telephone East Corp 監視サーバ、監視プログラムおよび監視方法
JP2013507022A (ja) * 2009-09-30 2013-02-28 アルカテル−ルーセント フローアウェアネットワークノード内でデータパケットを処理するための方法
JP2016178368A (ja) * 2015-03-18 2016-10-06 富士通株式会社 通信装置及び通信制御方法
JP2022121114A (ja) * 2021-02-08 2022-08-19 Necプラットフォームズ株式会社 ネットワーク装置、パケット処理方法、及びプログラム
WO2023209877A1 (ja) * 2022-04-27 2023-11-02 三菱電機株式会社 宅内通信装置及びフィルタリング方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008233984A (ja) * 2007-03-16 2008-10-02 Brother Ind Ltd 電子文書システム及び文書電子化方法
JP2009017069A (ja) * 2007-07-03 2009-01-22 Brother Ind Ltd オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム
JP2009239374A (ja) * 2008-03-26 2009-10-15 Nec Corp 仮想計算機システム及びパケット送信制御方法並びにそれに用いるネットワークインターフェースカード
JP2013507022A (ja) * 2009-09-30 2013-02-28 アルカテル−ルーセント フローアウェアネットワークノード内でデータパケットを処理するための方法
JP2012209666A (ja) * 2011-03-29 2012-10-25 Nippon Telegraph & Telephone East Corp 監視サーバ、監視プログラムおよび監視方法
JP2016178368A (ja) * 2015-03-18 2016-10-06 富士通株式会社 通信装置及び通信制御方法
JP2022121114A (ja) * 2021-02-08 2022-08-19 Necプラットフォームズ株式会社 ネットワーク装置、パケット処理方法、及びプログラム
WO2023209877A1 (ja) * 2022-04-27 2023-11-02 三菱電機株式会社 宅内通信装置及びフィルタリング方法

Similar Documents

Publication Publication Date Title
US7315547B2 (en) Packet forwarding device
EP1344152B1 (en) Apparatus and method for performing high-speed ip route lookup and managing routing/forwarding tables
US6674769B1 (en) Simultaneous searching of layer 3 policy filter and policy cache in a network switch port
US20050171937A1 (en) Memory efficient hashing algorithm
US7325071B2 (en) Forwarding traffic in a network using a single forwarding table that includes forwarding information related to a plurality of logical networks
US6798788B1 (en) Arrangement determining policies for layer 3 frame fragments in a network switch
US7894441B2 (en) Packet forwarding device with packet filter
US7313138B2 (en) Router device and routing method
JP4591893B2 (ja) Tcpトラフィックのフロー特性に基づくキャッシング・ルックアップのための装置及び方法
JP3627697B2 (ja) パケットの宛先検索システム
CN113765804A (zh) 报文转发方法、装置、设备及计算机可读存储介质
JP2002044126A (ja) パケット転送方法および装置
US20040165604A1 (en) Distributed router with ping-pong preventing function and ping-pong preventing method using the same
JP2005347969A (ja) パケット転送装置およびパケット転送方法
US7742471B2 (en) Methods and systems for routing packets with a hardware forwarding engine and a software forwarding engine
JP5050978B2 (ja) 伝送情報転送装置及び方法
JP3521904B2 (ja) イーサネット(r)におけるフレーム転送方法及びノード
US8488489B2 (en) Scalable packet-switch
EP1128611A2 (en) Method for table lookup
WO2014125636A1 (ja) 通信装置またはパケット転送方法
JP4646823B2 (ja) ルータ装置、ルータ装置におけるルート決定方法
KR100493099B1 (ko) 고속 인터넷프로토콜 라우터의 라우팅/포워딩 룩업 및라우팅 테이블 관리
JP4726310B2 (ja) 情報検索装置、情報検索用マルチプロセッサおよびルータ
KR100572693B1 (ko) 인터넷 프로토콜 패킷 룩업 방법
US10972383B2 (en) Method and system for processing network traffic using expanded labels