JP5798530B2 - パケット処理装置およびパケット処理方法 - Google Patents

パケット処理装置およびパケット処理方法 Download PDF

Info

Publication number
JP5798530B2
JP5798530B2 JP2012177322A JP2012177322A JP5798530B2 JP 5798530 B2 JP5798530 B2 JP 5798530B2 JP 2012177322 A JP2012177322 A JP 2012177322A JP 2012177322 A JP2012177322 A JP 2012177322A JP 5798530 B2 JP5798530 B2 JP 5798530B2
Authority
JP
Japan
Prior art keywords
record
value
packet
hash
hash table
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.)
Expired - Fee Related
Application number
JP2012177322A
Other languages
English (en)
Other versions
JP2014036369A (ja
Inventor
陽一 古田
陽一 古田
将一 小堀
将一 小堀
章子 久保庭
章子 久保庭
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012177322A priority Critical patent/JP5798530B2/ja
Publication of JP2014036369A publication Critical patent/JP2014036369A/ja
Application granted granted Critical
Publication of JP5798530B2 publication Critical patent/JP5798530B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、IP(Internet Protocol)ネットワーク上に配備されるDPI(Deep Packet Inspection)や従量課金向けのパケットカウント装置等、IPパケットの識別結果を基に、IPパケットの転送や廃棄、統計情報の収集等を行うパケット処理技術に関する。
DPI装置やパケットカウンタ装置は、大量かつ多様な入力パケットをリアルタイムに識別する機能が求められる。ここでDPI装置は、IPパケットのペイロード部を監視し、内容に応じたアクション(例えば、リダイレクトや廃棄、通常の転送)を選択する装置で、一例としてはURL(Uniform Resource Locator)フィルタリング装置が挙げられる。また、パケットカウンタ装置は、IPパケットのヘッダ部、特に送信元/宛先IPアドレスフィールドを監視し、特定のIPアドレスやプレフィックスを検出した場合に、そのIPアドレスまたはプレフィックスごとに通過バイト数やパケット数等を計量し、従量課金の元情報として供する装置である。
先に挙げた入力パケットのリアルタイムな識別機能を、特殊なハードウェアによらず汎用のCPU(Central Processing Unit)を用いて実装する場合、入力値のハッシュ値を検索インデックスとしたハッシュテーブルを用いることが一般的である。ハッシュテーブルは、入力パケットの評価箇所(例えば、DPI装置の場合はHTTP(HyperText Transfer Protocol)で取得するURI(Uniform Resource Identifier)が相当。従量課金向けのパケットカウント装置の場合は、課金ユーザを識別可能な送信元/宛先IPアドレス等が相当する)のハッシュ値を検索インデックスとしたものである。このようなハッシュテーブルを用いた検索は、比較対象データ全体を線形検索する場合と比較して、処理の大幅な高速化を実現できる。
ここで、検索にハッシュテーブルを用いる場合、異なる入力値であっても同じハッシュ値になることがある。これを衝突 (コリジョン、collision) と呼ぶ。このコリジョンが発生した場合、ハッシュテーブル上の同じハッシュ値をもつ複数の要素(ここではコリジョンレコードと呼ぶ)を線形検索することが考えられる(非特許文献1参照)。
例えば、図1に例示するように、入力パケットが「http://www.example.com/」であり、このハッシュ値が「0011」の場合、ハッシュテーブルのインデックス値(ハッシュ値)が「0011」であるレコードは複数ある。つまりコリジョンが発生している。この場合、各装置は、ハッシュ値「0011」のレコード(コリジョンレコード)を線形検索する。
ハッシュテーブルに対する攻撃手法のはなし、[online]、[平成24年7月9日検索]、インターネット、<URL: http://codezine.jp/article/detail/6396 >
しかしながら、コリジョン発生時にハッシュテーブルの線形検索を行うことは、装置の処理負荷が大きい。ここで、コリジョンを避けるために、ハッシュテーブルに用いるハッシュ関数の選択において、分散性のよい関数を用いるようにしたり、ハッシュ値のビット長を長くとるようにしたりすることも考えられる。しかし、パケット識別には高速処理が必須とされるため、ハッシュテーブルに用いるハッシュ関数の選択肢は限定される。また、ハッシュテーブルに用いるハッシュ値のビット長を長くとればコリジョンの発生確率を低減できるが、ハッシュテーブルの必要メモリ量が増えてしまう。したがって、ハッシュテーブルを用いて入力パケットの識別を行う場合において、ハッシュテーブルがハッシュレコードを含みコリジョン発生時にコリジョンレコードの線形検索を行うことは避けられない。
そこで本発明は、ハッシュテーブルを用いて入力パケットの識別を行う場合において、コリジョン発生時にハッシュテーブルの検索にかかる時間を低減することを目的とする。
前記した課題を解決するため、本発明のパケット処理装置を以下の構成とした。すなわち、パケット処理装置は、パケットの入力を受け付けるパケット入力部と、前記パケットの所定のエリアの値を入力値として、この入力値のハッシュ値を計算するハッシュ値計算部と、前記ハッシュ値ごとに、前記ハッシュ値に対応するレコードと、前記レコードを持つパケットに対し実行すべきアクションと、前記ハッシュ値に対応するレコードの検索頻度とを対応付けて示したハッシュテーブル、非該当レコードバッファ、および、非該当レコードハッシュテーブルを記憶する記憶部と、前記計算したハッシュ値をキーとして、前記ハッシュテーブルにおける前記ハッシュ値に対応する1以上のレコードの中から、前記入力値と同じ値を持つレコードに対応するアクションを検索するハッシュ値比較部と、前記パケットに対し、前記アクションが検索された場合、前記検索されたアクションを実行し、前記アクションが検索されなった場合、デフォルトのアクションの実行処理を行うアクション実行部と、前記入力値と同じ値を持つレコードを発見したとき、前記ハッシュテーブルにおける前記レコードの検索頻度を加算することで更新する統計情報更新部と、前記ハッシュテーブルにおいて、前記ハッシュ値に対応する2以上のレコードがあるコリジョンレコードのエントリリストそれぞれについて、前記エントリリスト内のレコードを検索頻度が多い順にソートし、前記ハッシュテーブルにおける検索頻度の値をクリアして、前記ハッシュテーブルの更新を行うソート部と、前記アクションの実行後のパケットを出力するパケット出力部と、前記ハッシュテーブルのコリジョンレコードに、前記計算したハッシュ値に対応するレコードがないパケットを所定の頻度で受信したとき、前記入力したパケットを所定のサンプリングレートでサンプリングし、前記サンプリングした入力パケットの入力値のハッシュ値ごとに、前記ハッシュ値に対応するレコードである非該当レコード群を前記非該当レコードバッファに蓄積する非該当レコード蓄積処理部と、前記非該当レコードバッファにおける非該当レコードごとに、当該レコードの出現頻度を集計し、前記集計した非該当レコードの出現頻度が所定の閾値以上のレコードの出現頻度に、前記サンプリングレートの逆数を乗算した補正統計値を計算し、前記非該当レコードのハッシュ値ごとに、前記非該当レコードと、前記非該当レコードに対応するアクションと、前記計算した補正統計値とを示したエントリを前記非該当レコードハッシュテーブルに格納する非該当レコードバッファ統計部と、前記非該当レコードバッファおよび前記非該当レコードハッシュテーブルをクリアする非該当レコードクリア部とを備え、前記パケット入力部経由で新たなパケットが入力されたとき、前記ハッシュ値比較部は、新たな入力パケットの所定のエリアの値を入力値として前記ハッシュ値計算部により計算されたハッシュ値をキーとして、前記更新されたハッシュテーブルにおける前記ハッシュ値に対応する1以上のレコードの中から、前記入力値と同じ値を持つレコードに対応するアクションを検索し、前記ソート部は、さらに、 前記非該当レコードハッシュテーブルに格納されたエントリのうち、前記補正統計値が所定の閾値以上のエントリを前記ハッシュテーブルのコリジョンレコードに追加し、前記非該当レコードクリア部は、前記ソート部により、前記補正統計値が所定の閾値以上のエントリが前記ハッシュテーブルのコリジョンレコードに追加されたとき、前記非該当レコードバッファおよび前記非該当レコードハッシュテーブルをクリアする。
このようにすることで、ハッシュテーブルを用いて入力パケットの識別を行う場合において、コリジョン発生時にハッシュテーブルの検索にかかる時間を低減できる。
また、パケット処理装置が、ハッシュテーブルのコリジョンレコードにレコードがヒットしない入力パケット(非該当パケット)を所定の頻度以上で受信するようになった場合でも、ハッシュテーブルの検索にかかる時間が長くなってしまうことを抑制できる。
また、本発明のパケット処理装置は、前記非該当レコード蓄積処理部における前記入力パケットのサンプリングレートを計算するサンプリングレート計算部をさらに備え、前記サンプリングレート計算部は、前記非該当レコードバッファに割り当てられた記憶容量が少ないほど、前記サンプリングレートを低くする。
このようにすることで、パケット処理装置は、非該当レコードバッファにデータがあふれてしまうことを抑制できる。
また、本発明のパケット処理装置は、前記非該当レコード蓄積処理部における前記入力パケットのサンプリングレートを計算するサンプリングレート計算部をさらに備え、前記サンプリングレート計算部は、前記ハッシュテーブルに前記計算したハッシュ値に対応するレコードがないパケットの受信頻度が高いほど、前記サンプリングレートを低くする。
このようにすることで、パケット処理装置は、非該当レコードバッファにデータがあふれてしまうことをさらに抑制できる。なお、ここでいう受信頻度とは、単位時間あたりのパケットの受信回数である。
また、本発明のパケット処理装置は、前記ハッシュテーブルから前記検索頻度が所定の閾値に満たないエントリを削除する非該当レコード削除部をさらに備える。
このようにすることで、パケット処理装置は、ハッシュテーブルの限られた記憶容量を有効活用できる。
本発明によれば、ハッシュテーブルを用いて入力パケットの識別を行う場合において、コリジョン発生時におけるハッシュテーブルの線形検索を高速に行うことができる。
入力パケットのハッシュ値を用いたハッシュテーブルの検索を概念的に示した図である。 本発明の第1の実施の形態のパケット処理装置の処理内容を概念的に説明した図である。 本発明の第1の実施の形態のパケット処理装置の構成例を示した図である。 本発明の第2の実施の形態のパケット処理装置の処理内容を概念的に説明した図である。 本発明の第2の実施の形態のパケット処理装置の構成例を示した図である。
以下、本発明を実施するための形態(以下、実施の形態という)について、第1の実施の形態および第2の実施の形態に分けて説明する。なお、以下の説明において、各実施の形態のパケット処理装置100(図3参照)の処理対象パケットは、例えば、IP(Internet Protocol)パケットであるものとする。パケット処理装置100は、例えば、DPI(Deep Packet Inspection)装置や従量課金向けのパケットカウント装置である。
<第1の実施の形態>
まず、図2を用いて、第1の実施の形態のパケット処理装置100の処理概要を説明する。パケット処理装置100は、パケットの入力を受け付けると、ハッシュ関数を用いて入力パケットの評価箇所に対応するハッシュ値を計算する。例えば、パケット処理装置100は、HTTP(HyperText Transfer Protocol)で取得するURI(Uniform Resource Identifier)の「www.example.com」のハッシュ値を計算する。そして、パケット処理装置100は、このハッシュ値をキーとしてハッシュテーブル160から入力パケットに対し実行すべき処理(アクション)を検索する。例えば、入力パケットの評価箇所に「www.example.com」が記載されている場合、「www.example.com」に対するハッシュ値として「0011」を計算する。そして、パケット処理装置100は、ハッシュ値「0011」をキーとして、ハッシュテーブル160を検索し、このハッシュ値「0011」に対応するレコードが1つであれば、そのレコードに対するアクションを実行する。一方、図2に例示するようにハッシュ値「0011」に対応するレコードが複数あるとき、このレコードの中から「www.example.com」のレコードを線形検索する。つまり、パケット処理装置100はコリジョンレコードの中から「www.example.com」のレコードを上から順に検索する。そして、パケット処理装置100は、ハッシュテーブル160にそのレコードに対し実行すべきアクションを見つけると、このアクションを実行する。
ここでパケット処理装置100は、ハッシュテーブル160の検索を行うたび、ハッシュテーブル160でヒットしたレコードの統計値の値を更新する。例えば、パケット処理装置100は、ハッシュテーブル160から「www.example.com」のレコードを検索したとき、この「www.example.com」の統計値(検索頻度)の値を1加算する。このようにすることで、ハッシュテーブル160には各レコードの検索頻度が記録されることになる。
その後、パケット処理装置100は、所定期間ごとに、このハッシュテーブル160のコリジョンレコード(符号201参照)検索頻度順にレコードをソートする。例えば、ハッシュ値「0011」に対応するレコードが「computer.example.net、web.example.org、cccc.example.jp、www.example.com」であり、それぞれの検索頻度が「8,21,1,89」であった場合、パケット処理装置100は、これらのレコードを検索頻度が高い順に「www.example.com、web.example.org、computer.example.net、cccc.example.jp」という順に並べ替える。これにより、パケット処理装置100がハッシュテーブル160の検索時に、コリジョンが発生し、線形検索を行った場合でも、すぐに該当レコードを発見できる可能性が高くなる。これにより、ハッシュテーブル160の検索時間を低減できる。
<構成>
次に、パケット処理装置100を詳細に説明する。図3に示すようにパケット処理装置100は、パケット入力部110と、ハッシュ値計算部120と、パケット処理部130と、周期制御部140と、ソート部150と、ハッシュテーブル160と、パケット出力部170とを備える。以下、各部の機能を説明する。
パケット入力部110は、入力パケットのチェックサム等を評価した後、この入力パケットをハッシュ値計算部120に転送する。
ハッシュ値計算部120は、入力パケットの評価箇所(例えば、DPI装置の場合はHTTPで取得するURIが相当する。従量課金向けのパケットカウント装置の場合は、課金ユーザを識別可能な送信元または宛先のIPアドレス等が相当する)のハッシュ値を計算する。
パケット処理部130は、ハッシュ値計算部120で計算された入力パケットのハッシュ値をキーとして、ハッシュテーブル160から、この入力パケットに対し実行すべきアクションを検索して実行し、パケット出力部170へ出力する。また、パケット処理部130は、ハッシュテーブル160の検索を行うごとにハッシュテーブル160における当該入力パケットのレコードの統計値を更新する。
このパケット処理部130は、ハッシュ値比較部131と、アクション実行部132と、統計情報更新部133とを備える。
ハッシュ値比較部131は、ハッシュ値計算部120で計算した入力パケットのハッシュ値をキーとして、ハッシュテーブル160からこの入力パケットの評価箇所の内容(入力値)と同じ内容のレコードを検索し、このレコードに対応付けられた(ハッシュテーブル160で指定された)アクションを検出する。ここで、ハッシュ値比較部131が、ハッシュ値をキーとした検索でコリジョンレコードを検出した場合(つまり、同じハッシュ値に対し、複数のレコードを発見した場合)、線形検索を行い、ハッシュテーブル160上にマッチするレコードを検索する。ここで、ハッシュ値比較部131が、ハッシュテーブル160上にマッチするレコードを見つけた場合、指定されたアクションを実行するようアクション実行部132へ指示する。一方、ハッシュ値比較部131において、マッチするレコードがないと判断した場合、アクション実行部132に対し、設定されたデフォルトのアクションを実行するよう指示する。例えば、パケット処理装置100がDPI装置の場合、ハッシュ値比較部131は、アクション実行部132に対し、パケットをそのまま転送するよう指示する。また、パケット処理装置100がパケットカウント装置の場合、ハッシュ値比較部131は、アクション実行部132に対し、パケットを廃棄するよう指示する。なお、ハッシュテーブル160が統計情報更新部133により更新されたとき、ハッシュ値比較部131は、この更新されたハッシュテーブル160を検索する。つまり、ハッシュ値比較部131は、更新後のハッシュテーブル160から、入力パケットの入力値のハッシュ値に対応する1以上のレコードから入力値と同じ値を持つレコードを検索し、このレコードに対応するアクションを検出する。
アクション実行部132は、ハッシュ値比較部131から指示されたアクションを入力パケットに対し実行する。例えば、アクション実行部132は、パケットを廃棄したり、そのまま転送したり、所定の装置へリダイレクトしたりする。
統計情報更新部133は、ハッシュテーブル160においてレコードの検索がされるたびに、ハッシュテーブル160における当該レコードの統計値を更新する。ここでの統計値は、検索頻度等であり、例えば、ハッシュ値比較部131において、入力値と同じ値を持つレコードを発見したとき、ハッシュテーブル160におけるレコードの統計値を加算することで更新する。
周期制御部140は、ソート部150(および後記する図5のソート部150A、非該当レコードバッファ統計部182)がハッシュテーブル160のコリジョンレコードをソートするときの契機を与える。
ソート部150は、ハッシュテーブル160において、同じハッシュ値に対応する2以上のレコードがある(つまりコリジョンレコードがある)エントリリストそれぞれについて、エントリリスト内のレコードを検索頻度が高い順にソートして、ハッシュテーブル160の更新を行う。また、ソート部150はソートを行った後、ハッシュテーブル160における検索頻度の値をクリアする。
ハッシュテーブル160は、ハッシュ値ごとに、このハッシュ値に対応するレコードと、レコードを持つパケットに対し実行すべきアクションと、ハッシュ値に対応するレコードの統計値(例えば、検索頻度)とを対応付けて示した情報である。例えば、図3に示すハッシュ値「0011」に対応するレコードは「computer.example.net、web.example.org、cccc.example.jp、www.example.com」であり、それぞれのレコードに対し実行すべきアクションは「Redirect to A、Discard、Redirect to B、Redirect to C」であり、統計値は「8、21、1、89」であることを示す。なお、図3に例示したハッシュテーブル160は、ソート部150によるソートがまだ行われていない状態であり、ソート後は、図2の符号201に示すように各レコードが統計値の高いものから上に並んだ状態になる。なお、ここではハッシュテーブル160における各レコードの統計値として、検索頻度を用いることとしたが、検索頻度以外の統計値、例えば、検索ヒット回数等を用いるようにしてもよい。なお、パケット処理装置100がパケットカウント装置である場合、パケットのカウンタ情報そのものをハッシュテーブル160の統計情報として用いるようにしてもよい。
パケット出力部170は、アクション実行部132でアクション実行後のパケットを整形し、IP網等経由で外部装置へ出力する。
このようなパケット処理装置100によれば、ハッシュテーブル160におけるコリジョンレコードは検索頻度が高い順にソートされているので、コリジョンレコードを線形検索する場合でも、線形検索による検索を高速に行える確率が高くなる。
なお、前記したパケット入力部110およびパケット出力部170は、IP網等のネットワーク経由で通信を行うための通信インタフェースや入出力インタフェースから構成される。また、ハッシュ値計算部120と、パケット処理部130と、周期制御部140と、ソート部150とは、このパケット処理装置100が備えるCPU(Central Processing Unit。図示省略)によるプログラム実行処理や、専用回路等により実現される。さらに、ハッシュテーブル160は、パケット処理装置100の記憶部(図示省略)に記憶される。この記憶部は、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等の記憶媒体から構成される。なお、パケット処理装置100をプログラム実行処理により実現する場合、記憶部には、このパケット処理装置100の機能を実現するためのプログラムが格納される。
<第2の実施の形態>
次に、図4を用いて、第2の実施の形態の概要を説明する。第2の実施の形態のパケット処理装置100A(図5参照)は、ハッシュテーブル160のコリジョンレコードを検索しても、レコードがヒットしないパケット(非該当パケット)を所定の頻度以上で受信するようになった場合、ハッシュテーブル160にこの非該当パケットのレコードを登録することを特徴とする。以下、図5を参照しながら、パケット処理装置100Aの処理を簡単に説明する。
まず、このパケット処理装置100Aは、ハッシュテーブル160におけるコリジョンレコードが無制限に多くなることを回避する必要がある。このため、パケット処理装置100Aはコリジョンレコードの線形検索の結果、マッチしないパケットを受信した場合、ハッシュテーブル160に即座に登録せず、所定のサンプリングレートでパケットをサンプリングし、データ量を減らした上でバッファ(非該当レコードバッファ161)に蓄積する。そして、パケット処理装置100Aは所定のタイミングで、バッファ内の非該当レコードを集計し、それぞれの出現頻度(統計値)をカウントし、非該当レコードハッシュテーブル162に登録する。その後、パケット処理装置100Aは、非該当レコードハッシュテーブル162のレコードのうち、出現頻度が所定の閾値を超えるレコードを、ハッシュテーブル160に追加登録し、第1の実施の形態で述べたようなソート処理を行う。
このようにすることで、パケット処理装置100Aにおいて受信するパケットの傾向が変わった場合でも、ハッシュテーブル160の線形検索により検索時間が長くなってしまうことを抑制できる。
<構成>
パケット処理装置100Aを、図5を用いて詳細に説明する。前記した第1の実施の形態と同様の構成要素は、同じ符号を付して説明を省略する。パケット処理装置100Aは、第1の実施の形態のパケット処理装置100(図3参照)の構成に非該当レコード蓄積処理部180と、サンプリングレート計算部181と、非該当レコードバッファ161と、非該当レコードバッファ統計部182と、非該当レコードハッシュテーブル162と、非該当レコード削除部183と、非該当レコードクリア部184とを付加した構成となっている。また、パケット処理装置100Aは、図3のソート部150に代えてソート部150Aを備える。
非該当レコード蓄積処理部180と、サンプリングレート計算部181と、非該当レコードバッファ統計部182と、非該当レコード削除部183と、非該当レコードクリア部184とは、このパケット処理装置100Aが備えるCPU(図示省略)によるプログラム実行処理や、専用回路等により実現される。さらに、非該当レコードバッファ161および非該当レコードハッシュテーブル162用の記憶領域は、パケット処理装置100Aの備える記憶部(図示省略)の所定領域に用意される。
非該当レコード蓄積処理部180は、パケット処理部130におけるハッシュテーブル160のコリジョンレコードの線形検索の結果、入力パケットのハッシュ値に対応するレコードがないパケット(つまり、非該当レコードのパケット)を所定の頻度(出現頻度の閾値)以上で受信するようになったとき、この非該当レコードのパケットを所定のサンプリングレートでサンプリングする。そして、非該当レコード蓄積処理部180は、このサンプリングした入力パケットの入力値(レコード)と、入力値のハッシュ値とを対応付けて非該当レコードバッファ161(詳細は後記)に蓄積する。なお、非該当レコード蓄積処理部180が用いる非該当レコードのパケットの出現頻度の閾値は、非該当レコードバッファ161にデータがあふれないよう、非該当レコードバッファ161の記憶容量等に応じて設定される。
サンプリングレート計算部181は、非該当レコード蓄積処理部180における入力パケットのサンプリングレートを計算する。このサンプリングレート計算部181は、例えば、非該当レコードバッファ161に割り当てられた記憶容量が少ないほど、サンプリングレートを低くする。また、サンプリングレート計算部181は、非該当レコードのパケットの受信頻度が高いほど、サンプリングレートを低くする。このようにすることで、非該当レコードバッファ161に非該当レコードがあふれてしまうことを抑制できる。
非該当レコードバッファ161は、非該当レコードを蓄積する。この非該当レコードバッファ161は、例えば、図5に示すように、パケットの入力値(レコード)と、そのハッシュ値とを対応付けた情報を、当該パケットの受信順に蓄積したものである。
非該当レコードバッファ統計部182は、周期制御部140から指示されたタイミングで非該当レコードバッファ161における非該当レコードごとに、当該非該当レコードの出現頻度を集計する。そして、非該当レコードバッファ統計部182は、集計した非該当レコードの出現頻度が所定の閾値以上のレコードがあるとき、このレコードの出現頻度に、非該当レコード蓄積処理部180が用いたサンプリングレートの逆数を乗算した補正統計値を計算する。これにより、レコードの実際の出現頻度が分かる。その後、非該当レコードバッファ統計部182は、非該当レコードのハッシュ値ごとに、非該当レコードと、非該当レコードに対応するアクションと、計算した補正統計値(統計値)とを対応付けたエントリを非該当レコードハッシュテーブル162(後記)に格納する。なお、非該当レコードバッファ統計部182において用いる出現頻度の閾値は、ハッシュテーブル160におけるコリジョンレコードが無制限に大きくならないように調整された値とする。
非該当レコードハッシュテーブル162は、非該当レコードのハッシュ値ごとに、この非該当レコードと、この非該当レコードに対応するアクションと、この非該当レコードの補正統計値(統計値)とを示したテーブルである。
非該当レコード削除部183は、ハッシュテーブル160から検索頻度が所定の閾値に満たないエントリを削除する。
なお、ソート部150Aは、周期制御部140から指示されたタイミングで非該当レコードハッシュテーブル162に格納されたエントリのうち、補正統計値が所定の閾値以上のエントリをハッシュテーブル160のコリジョンレコードに追加する。そして、ソート部150Aは、第1の実施の形態で述べたとおり、コリジョンレコードのレコード群を出現頻度が高い順にソートする。
非該当レコードクリア部184は、ソート部150Aにより非該当レコードのエントリがハッシュテーブル160のコリジョンレコードに追加されたとき、非該当レコードバッファ161および非該当レコードハッシュテーブル162をクリアする。
このようにすることで、パケット処理装置100Aにおいて、ハッシュテーブル160に登録されていないレコードを持つ入力パケットを頻繁に受信するようになった場合でも、ハッシュテーブル160に追加して登録し、出現頻度が高い順にソートするので、ハッシュテーブル160の検索時間が長くなってしまうことを抑制できる。
<処理手順>
次に、図5を参照しつつ、パケット処理装置100Aの処理手順を説明する。
まず、パケット処理装置100Aのパケット入力部110は、入力パケットのチェックサム等を評価した後、ハッシュ値計算部120に転送する(S1)。
ハッシュ値計算部120は、入力パケットの評価箇所のハッシュ値を計算する(S2)。
ハッシュ値比較部131は、ハッシュ値計算部120で計算された入力パケットのハッシュ値をキーとして、ハッシュテーブル160からこの入力パケットの評価箇所の内容(入力値)と同じ内容のレコードを検索し、このレコードに対応付けられた(指定された)アクションを検出する。ここで、ハッシュ値比較部131が、ハッシュ値をキーとした検索でコリジョンレコードを検出した場合(つまり、同じハッシュ値に対し、複数のレコードを発見した場合)、線形検索を行い、マッチするレコードを検索する。そして、ハッシュ値比較部131がマッチするレコードを見つけた場合、指定されたアクションの実行指示をアクション実行部132へ出力する。一方、マッチするレコードがない場合、このパケット処理部130に設定されたデフォルトのアクションの実行指示をアクション実行部132へ出力する(S3)。
アクション実行部132は、ハッシュ値比較部131から出力されたアクションを入力パケットに対し実行する。例えば、パケットを廃棄したり、パケット出力部170経由でそのまま転送したり、所定の装置へリダイレクトしたりする(S4)。
統計情報更新部133は、ハッシュテーブル160においてレコードの検索がされるたびに、ハッシュテーブル160における当該レコードの統計値を更新する。ここでの統計値は、例えば、検索頻度であり、例えば、ハッシュ値比較部131において、入力値と同じ値を持つレコードを発見したとき、ハッシュテーブル160におけるレコードの統計値を加算することで更新する(S5)。
非該当レコード蓄積処理部180は、ハッシュテーブル160にマッチするレコードがない入力パケット(非該当レコードの入力パケット)を所定の頻度以上で受信するようになったとき、この入力パケットを所定のサンプリングレートでサンプリングする。このサンプリングレートはサンプリングレート計算部181で計算された値である。そして、非該当レコード蓄積処理部180は、サンプリングした入力パケットのハッシュ値と入力パケットの評価箇所の内容(レコード)とを対応付けた情報を非該当レコードバッファ161に蓄積する(S6)。
例えば、サンプリングレート計算部181は、非該当レコードバッファ161の容量や、非該当レコードの入力パケットの受信頻度から、サンプリングレートをパケットの受信10000回に1回と計算した場合を考える。この場合、非該当レコード蓄積処理部180は、非該当レコードのパケットを、受信10000回に1回の頻度でサンプリングする。そして、非該当レコード蓄積処理部180は、このサンプリングしたパケットのハッシュ値とレコードとを非該当レコードバッファ161に蓄積する。
非該当レコードバッファ統計部182は、周期制御部140から指示されたタイミングで非該当レコードバッファ161における非該当レコードごとに、当該レコードの出現頻度を集計する。そして、非該当レコードバッファ統計部182は、集計した非該当レコードの出現頻度が所定の閾値以上のレコードがあるとき、このレコードの出現頻度に、非該当レコード蓄積処理部180が用いたサンプリングレートの逆数を乗算した補正統計値を計算する。その後、非該当レコードバッファ統計部182は、非該当レコードのハッシュ値ごとに、非該当レコードと、非該当レコードに対応するアクションと、計算した補正統計値(統計値)とを対応付けたエントリを非該当レコードハッシュテーブル162に格納する(S7)。
例えば、非該当レコードバッファ統計部182は、非該当レコードバッファ161に蓄積された非該当レコードの出現頻度を集計し、集計した非該当レコードの出現頻度が所定の閾値以上のレコードがあるとき、そのそれぞれのレコードの出現頻度に10000を乗じて補正統計値を計算する。非該当レコードバッファ統計部182は、非該当レコードのハッシュ値ごとに、非該当レコードと、非該当レコードに対応するアクションと、計算した補正統計値(統計値)とを対応付けたエントリを非該当レコードハッシュテーブル162に格納する。
その後、ソート部150Aは、周期制御部140から指示されたタイミングで非該当レコードハッシュテーブル162に格納されたエントリのうち、補正統計値(統計値)が所定の閾値以上のエントリをハッシュテーブル160のコリジョンレコードに追加する。そして、ソート部150Aは、周期制御部140から指示されたタイミングでハッシュテーブル160の統計値が高い順にソートすることで更新する(S8)。
例えば、非該当レコードハッシュテーブル162のハッシュ値「0011」のレコード「dddd.example.co.jp」の統計値が「20」であり、前記した所定の閾値が「15」である場合、このレコードの統計値は閾値以上なので、ソート部150Aは、ハッシュ値「0011」のレコード「dddd.example.co.jp」と統計値「20」とをハッシュテーブル160に追加する。そして、ソート部150Aは、周期制御部140から指示されたタイミングでハッシュテーブル160の統計値が高い順にレコードをソートする。このようにすることで、ハッシュテーブル160に非該当レコードが追加され、かつ、この非該当レコードを含むコリジョンレコードについて統計値が高いものほど上位に配置されることになる。これにより、パケット処理装置100Aが、ハッシュテーブル160のコリジョンレコードにレコードがヒットしない入力パケット(非該当パケット)を所定の頻度以上で受信するようになった場合でも、すぐに検索ヒットする可能性を高めることができる。つまり、パケット処理装置100Aは、入力パケット(非該当パケット)を所定の頻度以上で受信するようになった場合でも、ハッシュテーブル160の検索時間が増加してしまうことを抑制できる。また、非該当レコードクリア部184は、ソート部150Aにより、ハッシュテーブル160に非該当レコードのコリジョンレコードに追加されたとき、非該当レコードバッファ161および非該当レコードハッシュテーブル162をクリアする。
なお、非該当レコード削除部183は、周期制御部140から指示されたタイミングでハッシュテーブル160から検索頻度が所定の閾値に満たないエントリを削除する(S9)。これにより、ハッシュテーブル160の限られた記憶容量を有効活用できる。
100,100A パケット処理装置
110 パケット入力部
120 ハッシュ値計算部
130 パケット処理部
131 ハッシュ値比較部
132 アクション実行部
133 統計情報更新部
140 周期制御部
150,150A ソート部
160 ハッシュテーブル
161 非該当レコードバッファ
162 非該当レコードハッシュテーブル
170 パケット出力部
180 非該当レコード蓄積処理部
181 サンプリングレート計算部
182 非該当レコードバッファ統計部
183 非該当レコード削除部

Claims (5)

  1. パケットの入力を受け付けるパケット入力部と、
    前記パケットの所定のエリアの値を入力値として、この入力値のハッシュ値を計算するハッシュ値計算部と、
    前記ハッシュ値ごとに、前記ハッシュ値に対応するレコードと、前記レコードを持つパケットに対し実行すべきアクションと、前記ハッシュ値に対応するレコードの検索頻度とを対応付けて示したハッシュテーブル、非該当レコードバッファ、および、非該当レコードハッシュテーブルを記憶する記憶部と、
    前記計算したハッシュ値をキーとして、前記ハッシュテーブルにおける前記ハッシュ値に対応する1以上のレコードの中から、前記入力値と同じ値を持つレコードに対応するアクションを検索するハッシュ値比較部と、
    前記パケットに対し、前記アクションが検索された場合、前記検索されたアクションを実行し、前記アクションが検索されなった場合、デフォルトのアクションの実行処理を行うアクション実行部と、
    前記入力値と同じ値を持つレコードを発見したとき、前記ハッシュテーブルにおける前記レコードの検索頻度を加算することで更新する統計情報更新部と、
    前記ハッシュテーブルにおいて、前記ハッシュ値に対応する2以上のレコードがあるコリジョンレコードのエントリリストそれぞれについて、前記エントリリスト内のレコードを検索頻度が多い順にソートし、前記ハッシュテーブルにおける検索頻度の値をクリアして、前記ハッシュテーブルの更新を行うソート部と、
    前記アクションの実行後のパケットを出力するパケット出力部と
    前記ハッシュテーブルのコリジョンレコードに、前記計算したハッシュ値に対応するレコードがないパケットを所定の頻度で受信したとき、前記入力したパケットを所定のサンプリングレートでサンプリングし、前記サンプリングした入力パケットの入力値のハッシュ値ごとに、前記ハッシュ値に対応するレコードである非該当レコード群を前記非該当レコードバッファに蓄積する非該当レコード蓄積処理部と、
    前記非該当レコードバッファにおける非該当レコードごとに、当該レコードの出現頻度を集計し、前記集計した非該当レコードの出現頻度が所定の閾値以上のレコードの出現頻度に、前記サンプリングレートの逆数を乗算した補正統計値を計算し、前記非該当レコードのハッシュ値ごとに、前記非該当レコードと、前記非該当レコードに対応するアクションと、前記計算した補正統計値とを示したエントリを前記非該当レコードハッシュテーブルに格納する非該当レコードバッファ統計部と、
    前記非該当レコードバッファおよび前記非該当レコードハッシュテーブルをクリアする非該当レコードクリア部とを備え、
    前記パケット入力部経由で新たなパケットが入力されたとき、前記ハッシュ値比較部は、新たな入力パケットの所定のエリアの値を入力値として前記ハッシュ値計算部により計算されたハッシュ値をキーとして、前記更新されたハッシュテーブルにおける前記ハッシュ値に対応する1以上のレコードの中から、前記入力値と同じ値を持つレコードに対応するアクションを検索し、
    前記ソート部は、さらに、 前記非該当レコードハッシュテーブルに格納されたエントリのうち、前記補正統計値が所定の閾値以上のエントリを前記ハッシュテーブルのコリジョンレコードに追加し、
    前記非該当レコードクリア部は、前記ソート部により、前記補正統計値が所定の閾値以上のエントリが前記ハッシュテーブルのコリジョンレコードに追加されたとき、前記非該当レコードバッファおよび前記非該当レコードハッシュテーブルをクリアすること
    特徴とするパケット処理装置。
  2. 前記パケット処理装置は、
    前記非該当レコード蓄積処理部における前記入力パケットのサンプリングレートを計算するサンプリングレート計算部をさらに備え、
    前記サンプリングレート計算部は、
    前記非該当レコードバッファに割り当てられた記憶容量が少ないほど、前記サンプリングレートを低くすることを特徴とする請求項に記載のパケット処理装置。
  3. 前記パケット処理装置は、
    前記非該当レコード蓄積処理部における前記入力パケットのサンプリングレートを計算するサンプリングレート計算部をさらに備え、
    前記サンプリングレート計算部は、
    前記ハッシュテーブルに前記計算したハッシュ値に対応するレコードがないパケットの受信頻度が高いほど、前記サンプリングレートを低くすることを特徴とする請求項に記載のパケット処理装置。
  4. 前記ハッシュテーブルから前記検索頻度が所定の閾値に満たないエントリを削除する非該当レコード削除部をさらに備えることを特徴とする請求項1ないし請求項のいずれか1項に記載のパケット処理装置。
  5. ハッシュ値ごとに、前記ハッシュ値に対応するレコードと、前記レコードを持つパケットに対し実行すべきアクションと、前記ハッシュ値に対応するレコードの検索頻度とを対応付けて示したハッシュテーブル、非該当レコードバッファ、および、非該当レコードハッシュテーブルを記憶する記憶部を備えるパケット処理装置が、
    パケットの入力を受け付けるステップと、
    前記パケットの所定のエリアの値を入力値として、この入力値のハッシュ値を計算するステップと、
    前記計算したハッシュ値をキーとして、前記ハッシュテーブルにおける前記ハッシュ値に対応する1以上のレコードの中から、前記入力値と同じ値を持つレコードに対応するアクションを検索するステップと、
    前記パケットに対し、前記アクションが検索された場合、前記検索されたアクションを実行し、前記アクションが検索されなった場合、デフォルトのアクションの実行処理を行うステップと、
    前記入力値と同じ値を持つレコードを発見したとき、前記ハッシュテーブルにおける前記レコードの検索頻度を加算することで更新するステップと、
    前記ハッシュテーブルにおいて、前記ハッシュ値に対応する2以上のレコードがあるコリジョンレコードのエントリリストそれぞれについて、前記エントリリスト内のレコードを検索頻度が多い順にソートし、前記ハッシュテーブルにおける検索頻度の値をクリアして、前記ハッシュテーブルの更新を行うステップと、
    前記アクションの実行後のパケットを出力するステップと
    前記ハッシュテーブルの更新後、新たなパケットが入力されたとき、新たな入力パケットの所定のエリアの値を入力値として計算されたハッシュ値をキーとして、前記更新されたハッシュテーブルにおける前記ハッシュ値に対応する1以上のレコードの中から、前記入力値と同じ値を持つレコードに対応するアクションを検索するステップと、
    前記ハッシュテーブルのコリジョンレコードに、前記計算したハッシュ値に対応するレコードがないパケットを所定の頻度で受信したとき、前記入力パケットを所定のサンプリングレートでサンプリングし、前記サンプリングした入力パケットの入力値のハッシュ値ごとに、前記ハッシュ値に対応するレコードである非該当レコード群を前記非該当レコードバッファに蓄積するステップと、
    前記非該当レコードバッファにおける非該当レコードごとに、当該レコードの出現頻度を集計し、前記集計した非該当レコードの出現頻度が所定の閾値以上のレコードの出現頻度に、前記サンプリングレートの逆数を乗算した補正統計値を計算し、前記非該当レコードのハッシュ値ごとに、前記非該当レコードと、前記非該当レコードに対応するアクションと、前記計算した補正統計値とを示したエントリを前記非該当レコードハッシュテーブルに格納するステップと、
    前記非該当レコードハッシュテーブルに格納されたエントリのうち、前記補正統計値が所定の閾値以上のエントリを前記ハッシュテーブルのコリジョンレコードに追加するステップと、
    前記補正統計値が所定の閾値以上のエントリが前記ハッシュテーブルのコリジョンレコードに追加されたとき、前記非該当レコードバッファおよび前記非該当レコードハッシュテーブルをクリアするステップと、
    を実行することを特徴とするパケット処理方法。
JP2012177322A 2012-08-09 2012-08-09 パケット処理装置およびパケット処理方法 Expired - Fee Related JP5798530B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012177322A JP5798530B2 (ja) 2012-08-09 2012-08-09 パケット処理装置およびパケット処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012177322A JP5798530B2 (ja) 2012-08-09 2012-08-09 パケット処理装置およびパケット処理方法

Publications (2)

Publication Number Publication Date
JP2014036369A JP2014036369A (ja) 2014-02-24
JP5798530B2 true JP5798530B2 (ja) 2015-10-21

Family

ID=50285089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012177322A Expired - Fee Related JP5798530B2 (ja) 2012-08-09 2012-08-09 パケット処理装置およびパケット処理方法

Country Status (1)

Country Link
JP (1) JP5798530B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6236571B2 (ja) * 2015-02-27 2017-11-22 株式会社東芝 インダクタ及び無線電力伝送装置
JP6868582B2 (ja) * 2018-02-27 2021-05-12 Kddi株式会社 中継装置、通信システム及び通信履歴記憶方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10210066A (ja) * 1997-01-16 1998-08-07 Sumitomo Electric Ind Ltd ネットワーク間中継先判定用データベース及びデータベースの構築方法
US7515589B2 (en) * 2004-08-27 2009-04-07 International Business Machines Corporation Method and apparatus for providing network virtualization
JP4774307B2 (ja) * 2006-02-06 2011-09-14 アラクサラネットワークス株式会社 不正アクセス監視装置及びパケット中継装置
US7894358B2 (en) * 2007-03-15 2011-02-22 Cisco Technology, Inc. Detection of heavy users of network resources
JP5012674B2 (ja) * 2008-06-03 2012-08-29 日本電気株式会社 Ipパケット制御装置におけるソフトウェア検索方法
JP5437194B2 (ja) * 2010-08-05 2014-03-12 日本電信電話株式会社 フロー通信品質推定方法及び装置及びプログラム

Also Published As

Publication number Publication date
JP2014036369A (ja) 2014-02-24

Similar Documents

Publication Publication Date Title
US11601351B2 (en) Aggregation of select network traffic statistics
EP2530874B1 (en) Method and apparatus for detecting network attacks using a flow based technique
US8964548B1 (en) System and method for determining network application signatures using flow payloads
US8577817B1 (en) System and method for using network application signatures based on term transition state machine
Lee et al. Toward scalable internet traffic measurement and analysis with hadoop
US8494985B1 (en) System and method for using network application signatures based on modified term transition state machine
US20190230095A1 (en) Detection of malware and malicious applications
JP6217839B2 (ja) パケット処理装置、パケット処理方法およびプログラム
US8711014B2 (en) Methods and devices for creating, compressing and searching binary tree
KR100997182B1 (ko) 플로우 정보 제한장치 및 방법
US7957315B2 (en) System and method for sampling network traffic
CN108696543B (zh) 基于深度森林的分布式反射拒绝服务攻击检测、防御方法
EP2530873B1 (en) Method and apparatus for streaming netflow data analysis
JP5798530B2 (ja) パケット処理装置およびパケット処理方法
JP5719054B2 (ja) アクセス制御装置、アクセス制御方法、およびアクセス制御プログラム
Shomura et al. Analyzing the number of varieties in frequently found flows
CN114710444A (zh) 基于塔型摘要和可驱逐流表的数据中心流量统计方法和系统
KR101268621B1 (ko) 동적 플로우 샘플링 장치 및 방법
TWI618387B (zh) Method for improving packet processing of virtual switch
KR101308091B1 (ko) 요약 데이터를 이용하여 로그 데이터의 정렬 정보를 생성하기 위한 장치 및 방법
Yoshida et al. Stream mining for network management
CN111581489B (zh) 一种基于共享计数树的存储空间优化采样方法
JP2009171252A (ja) 計数方法、計数プログラム、計数装置
Lee et al. Detecting violations of service-level agreements in programmable switches
WO2021001879A1 (ja) トラフィック監視装置、およびトラフィック監視方法

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140502

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140528

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140729

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150608

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150818

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150821

R150 Certificate of patent or registration of utility model

Ref document number: 5798530

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees