JP4262284B2 - Packet filtering system and method - Google Patents
Packet filtering system and method Download PDFInfo
- Publication number
- JP4262284B2 JP4262284B2 JP2007151035A JP2007151035A JP4262284B2 JP 4262284 B2 JP4262284 B2 JP 4262284B2 JP 2007151035 A JP2007151035 A JP 2007151035A JP 2007151035 A JP2007151035 A JP 2007151035A JP 4262284 B2 JP4262284 B2 JP 4262284B2
- Authority
- JP
- Japan
- Prior art keywords
- filter
- packet
- filter document
- pointer
- document
- 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
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
(優先権主張)
本発明は、米国仮特許出願第06/296,763号に関連し、米国仮特許出願第06/296,763号の優先権を主張する。この教示は、全体として本明細書中で援用される。
(Priority claim)
The present invention relates to US Provisional Patent Application No. 06 / 296,763 and claims priority to US Provisional Patent Application No. 06 / 296,763. This teaching is incorporated herein in its entirety.
(著作権主張)
本出願は、著作権保護を受ける資料を含む。著作権者は、それが特許商標庁のファイルまたは記録に現われている場合、特許開示物を有するいかなる人によるファクシミリコピーについて異議を有さないが、他の場合、全ての著作権を保有する。
(Copyright claim)
This application contains material that is subject to copyright protection. The copyright owner has no objection to facsimile copying by anyone with a patent disclosure if it appears in the file or record of the Patent and Trademark Office, but otherwise retains all copyrights.
(発明の分野)
本発明は、パケットフィルタリングに関する。更に詳細には、それは、空間効率の良いパケットフィルタリングを達成するためのフィルタ規則を表示する、小さな、バイナリ5タプルの最適化されたシーケンスの使用と、トリガするイベントの発生時に動的および拡張可能な処理挙動を支援するおよび手順テーブルの使用とに関する。
(Field of Invention)
The present invention relates to packet filtering. More specifically, it uses a small, binary 5-tuple optimized sequence that displays filter rules to achieve space-efficient packet filtering, and can be dynamically and extensible when a triggering event occurs To support correct processing behavior and use of procedure tables.
(発明の背景)
パケットフィルタリングは、ネットワークアクセス制御、またはファイヤウォールタイプ、様々なネットワークシステムについての性能を提供する機能である。パケットフィルタリングは、通信ネットワークにおいて、ネットワークデバイス、またはノードから送信されるか、受信されたそれぞれのネットワークパケットを調べて、このように調べることに基づいて判断することにより、上記のファイヤウォールタイプを達成する。
(Background of the Invention)
Packet filtering is a function that provides performance for various network systems, network access control or firewall type. Packet filtering achieves the above firewall types by examining each network packet sent or received from a network device or node in a communication network and making decisions based on such examination. To do.
従来技術のたいていのパケットフィルタは、ネットワークアドミニストレータ、システムアドミニストレータ、ネットワークデバイス所有者等が特定のフィルタリング規則を動作上のグラフィカルユーザインターフェース(GUI)を介して規定することを可能にする。しかし、たいていのパケットフィルタリングは、単に、ユーザが、パケットが捨てられるか、このような判断に基づいて続行され得るかどうかを特定することを可能にする。これらは、「否定(deny)」および「許可(allow)」アクションまたは規則と呼ばれる。Edward Boden等の、特許文献1(2001年1月30日に発行した‘228特許)によって教示されたシステム等の、この技術への上記のアプローチは、パケットデータに基づいて特定の情報をログするアクションを含むように利用可能なアクションの数を増加させた。 Most packet filters of the prior art allow network administrators, system administrators, network device owners, etc. to define specific filtering rules via an operational graphical user interface (GUI). However, most packet filtering simply allows the user to specify whether the packet is discarded or can continue based on such a determination. These are called “deny” and “allow” actions or rules. The above approach to this technology, such as the system taught by Edward Boden et al., US Pat. No. 6,057,028 (the '228 patent issued on Jan. 30, 2001), logs specific information based on packet data. Increased the number of available actions to include actions.
許可、否定およびログフィルタ規則は、上から下へ連続して処理された、規則の秩序化されたリストとして、最も一般的に、入力される。秩序は、規則作成者、しばしばシステムまたはネットワークアドミニストレータによって特定される。それぞれの規則は、ネットワークトラフィックのある種類を許可するか、または否定する。さらにセキュアなパケットフィルタにおいて、パケット処理は、パケットが明示的に許可され、明示的に否定され、またはパケットが否定される場合の規則がなくなるまで、全ての規則を通じて続行する。一般に、かなり大きく、複雑なフィルタ規則セットは、ネットワークデバイスが支援されるべきそれぞれのプロトコルのために書き出されなければならない。
(発明の要旨)
したがって、本発明は、関連技術の制限および不利益による問題の1以上を実質的に除去するコンパクトで、拡張可能なパケットフィルタリングシステムおよび方法に関する。
(Summary of the Invention)
Accordingly, the present invention relates to a compact and extensible packet filtering system and method that substantially eliminates one or more of the problems due to limitations and disadvantages of the related art.
したがって、改良されたパケットフィルタリングシステムおよび方法を提供することが本発明の目的である。 Accordingly, it is an object of the present invention to provide an improved packet filtering system and method.
空間効率の良いパケットフィルタリングシステムおよび方法を提供することが本発明のさらなる目的である。 It is a further object of the present invention to provide a space efficient packet filtering system and method.
動的および拡張可能なフィルタリングシステムおよび方法を提供することもまた本発明の目的である。 It is also an object of the present invention to provide a dynamic and scalable filtering system and method.
本発明のさらなる特徴および利益は、以下に続く説明に記載されており、この説明から部分的に明らかであり、本発明の実用によって獲得され得る。本発明の目的および他の利益は、本明細書の記載された説明および添付された図面に特に示された構造によって実現され、達成される。 Additional features and benefits of the present invention are set forth in the description that follows and is in part apparent from the description, and can be obtained by practice of the invention. The objectives and other advantages of the invention will be realized and attained by the structure particularly pointed out in the written description and the appended drawings hereof.
本発明の実施形態にしたがって、ネットワークアダプタ(またはデータリンク)のネットワークプロトコルソフトウェアスタックのレベルで、またはそれより上で、パケットをフィルタリングするシステムおよび方法は提供される。ネットワークアダプタレベルのパケットまたはネットワークアダプタレベルより上のパケットのフィルタリングは、規則ファイルまたは規則データベース(まとめて「規則ファイル」)内にユーザによって入力されたフィルタ規則文および手順文を処理することにより、達成される。このような規則ファイルは、フィルタインタープリタにロードされ得る5タプルフィルタリング規則および手順テーブルに変換され得る。次いで、フィルタインタープリタは、このアダプタでまたは低いレベルネットワークソフトウェアによるかのどちらかを介して、ネットワークアダプタによって受け取られたそれぞれのパケットのユーザ生成フィルタリング規則を解釈し得、決定(resolve)し得る。 In accordance with embodiments of the present invention, systems and methods are provided for filtering packets at or above the network protocol software stack level of a network adapter (or data link). Filtering of network adapter level packets or packets above the network adapter level is accomplished by processing filter rule statements and procedural statements entered by the user in a rule file or rule database (collectively "rule files"). Is done. Such a rule file can be converted into a 5-tuple filtering rule and procedure table that can be loaded into a filter interpreter. The filter interpreter may then interpret and resolve user generated filtering rules for each packet received by the network adapter, either through this adapter or through low level network software.
小さく、ネットワーキングを備えたデバイス、限定されるわけではないが、パーソナルデジタルアシスタント(PDA)、携帯電話、ページャ、腕時計、カメラ等(まとめて「ネットワークデバイス」)について、フィルタリングアクションは、上記のデバイスにて利用可能な限定された処理力およびメモリ量のために、かつ、それぞれのパケットのために処理されなければならない潜在的に大きい数のフィルタ規則ために、可能な限り時間的に効率良く、空間的に効率良いことが好適である。不必要に大きなフィルタファイルまたは過度に時間を消費するフィルタリング規則は、デバイスの他の使用と干渉し得、スループットまたは他の好まれない性能問題を引き起こし得る。したがって、システムを介して流れるそれぞれのパケットが全てのフィルタ規則によって処理されなければならない従来技術のシステムと異なり、本発明は、一旦パケットが識別されると、知的に、必要な規則のみをパケットに適用する。 For small, networking devices, including but not limited to personal digital assistants (PDAs), cell phones, pagers, watches, cameras, etc. (collectively “network devices”), the filtering action is Space as efficiently as possible due to the limited processing power and amount of memory available, and because of the potentially large number of filter rules that must be processed for each packet It is preferable to be efficient. Unnecessarily large filter files or excessively time consuming filtering rules can interfere with other uses of the device and can cause throughput or other undesirable performance issues. Thus, unlike prior art systems where each packet flowing through the system must be processed by all filter rules, the present invention intelligently packets only the necessary rules once the packet is identified. Applies to
従来技術のいくつか(‘228特許等)は、約6以上のパラメータを有するフィルタリング規則に基くシステムを作成したが、本発明は、5タプル定義を実施する。この低減は、結果的に、柔軟性のより高いレベル、増大された性能、および従来技術よりも低減された記憶要件を生じさせる。このような改良は、本発明が限定された記憶および処理能力のみを備えたコンピューティングデバイス上で用いられる場合に、特に有益であり得る。 While some of the prior art (such as the '228 patent) has created a system based on filtering rules having about 6 or more parameters, the present invention implements a 5-tuple definition. This reduction results in a higher level of flexibility, increased performance, and reduced storage requirements over the prior art. Such improvements can be particularly beneficial when the present invention is used on computing devices with only limited storage and processing capabilities.
本発明の他の特徴および利益は、添付の図面と関連させて、本発明の以下の詳細な説明から明らかである。前述の一般的な説明および以下の詳細な説明は、模範であり、例示で
ある。
Other features and advantages of the present invention will be apparent from the following detailed description of the invention in conjunction with the accompanying drawings. The foregoing general description and the following detailed description are exemplary and exemplary.
添付の図面は、本発明のさらなる理解を提供するように含まれ、本明細書の一部に援用され、本明細書の一部を構成するように含まれており、本発明の原理を説明するのに有用である説明とともに、本発明の実施形態を例示する。 The accompanying drawings are included to provide a further understanding of the invention, are incorporated in and constitute a part of this specification, and illustrate the principles of the invention. Embodiments of the present invention are illustrated with explanations that are useful to do so.
(好適な実施形態の詳細な説明)
ここで、本発明の好適な実施形態、添付図面に例示される実施例に、詳細に、参照される。ネットワークソフトウェアスタック内で実行され得る非常にコンパクトなパケットフィルタの生成およびテストと、不必要なオーバーヘッドで全てのパケットフィルタを担うことなく、パケットを識別する後の処理オプションの分離および拡張と、パケットフィルタがフィルタ規則を変えることなく、追加することなく、特定のパケットを識別する場合の動的プロセス変化とは、従来技術を超える本発明の利益の内にある。
(Detailed description of preferred embodiments)
Reference will now be made in detail to the preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. Generation and testing of very compact packet filters that can be performed within the network software stack, separation and expansion of processing options after identifying packets without burdening all packet filters with unnecessary overhead, and packet filters Dynamic process changes when identifying specific packets without changing or adding filter rules is within the benefits of the present invention over the prior art.
図1は、本発明の好適な実施形態の重要な要素、およびこのような要素間の論理関係およびデータフローを例示する。図1に示された実施形態は、フィルタの変形、手順および、5タプル再生122および手順表示124、および、ネットワークソフトウェア132および136を介するネットワークパケットとしての5タプル122の解釈134に関する他の規則文100に関係する。
FIG. 1 illustrates the key elements of a preferred embodiment of the present invention, and the logical relationships and data flow between such elements. The embodiment shown in FIG. 1 includes filter variants, procedures and other rule statements for 5-
フィルタ、手順、および他の規則文100は、フィルタコンパイラ102によって処理される。フィルタコンパイラ102は、以下のテーブル1およびテーブル2に提示された擬似コードに類似したコードを用いて、実施され得る。テーブル1は、フィルタ文を処理するためのサンプル擬似コードを提供し、テーブル2は、手順文を処理するためのサンプル擬似コードを提供する。フィルタコンパイラ102は、規則ファイル106および手順ファイル108を出力する規則ファイル106は、フィルタによって適用されるための規則のバイナリ表示を含む。規則ファイル106は、Java(R)バイトコード、マシン語その他の、マシン読み出し可能コードの形式を取り得る。手順ファイル108は、フィルタによって適用されるポリシーのバイナリ表示を含む。手順ファイル108は、好適には、手順表示のテーブルと、Java(R)バイトコード、マシン語その他のマシン読み出しコードにコンパイルされた手順関数のセットとの組み合わせである規則ファイル106および手順ファイル108は、規則が適用されるべきであるそれぞれのネットワークアダプタのために、生成され得るか、規則ファイル106および手順ファイル108は、ネットワークデバイスの範囲にわたってコピーされ得る。
Filters, procedures, and
ネットワークアダプタデバイスドライバ130または低レベルのネットワークプロトコル132のいずれか、または両方が初期化され、フィルタローダ120が実行する。サンプルフィルタローダ120の実行擬似コードが、以下に、テーブル3およびテーブル4で提供される。テーブル3は、手順テーブルをロードするための擬似コードを提供し、テーブル4は、5タプルをロードするための擬似コードを提供する。
Either the network
フィルタ文の処理
/*5タプルを生成するためにフィルタ文を処理する*/
構成された5タプルを保持するために5タプルバッファを作成する;
5タプルバッファの先頭に’nexttuplepointer’を設定する;
5タプルバッファの先頭に’nextrulepointer’を設定する;
while(より多くの文がファイルに存在する){
if(規則文がフィルタ文である){
for(文における各論理条件){
条件に対して5タプルを構成する;
5タプルバッファの’nexttuplepointer’にコピーする;
}
nextrulepointerをインクリメントする;
for(このフィルタ規則に対して生成された各5タプル){
’規則オフセット’5タプル要素を設定する=
nextrulepointer−5タプルのアドレス;
}
デフォルトの最後の5タプルを構成する;
5タプルバッファの’nexttuplepointer’にコピーする;
5タプルバッファ’nexttuplepointer’をインクリメントする;
}
nextrulepointerをインクリメントする;
for(このフィルタ規則に対して生成された各5タプル){
「規則オフセット」5タプルエレメントを設定する=
nextrulepointer−5タプルのアドレス;
5タプルバッファnexttuplepointer’をインクリメントする;
}
else{/*通常のように他の文を処理する*/}
}
各ネットワークアダプタのための手順ファイルを書き込む
テーブル1
フィルタ文の処理
/*手順テーブルを生成するために手順文を処理する*/
構成された手順テーブルを保持するために手順バッファを作成する;
手順バッファの先頭部に’nextprocpointer’を設定する;
while(より多くの手順文がファイル内に存在する){
if(規則文が手順文である){
手順インデックスエントリを構成する;
手順バッファの’nextprocpointer’にコピーする;
手順バッファの’nextprocpointer’をインクリメントする;
else{/*通常のように他の文を処理する*/}
}
各ネットワークアダプタのための規則ファイルを書き込む
テーブル2
ネットワークアダプタデバイスドライバ130または低レベルのネットワークプロトコル132のいずれか、または両方が初期化され、フィルタローダ120が実行する。サンプルフィルタローダ120の実行擬似コードが、以下に、表3および表4で提供される。表3は、手順テーブルをロードするための擬似コードを提供し、表4は、5タプルをロードするための擬似コードを提供する。
Filter statement processing / * Process filter statement to generate 5-tuple * /
Create a 5-tuple buffer to hold the configured 5-tuple;
Set 'nexttuplepointer' at the beginning of the 5-tuple buffer;
Set 'nextpointer' at the beginning of the 5-tuple buffer;
while (more sentences exist in the file) {
if (the rule sentence is a filter sentence) {
for (each logical condition in a sentence) {
Construct a 5-tuple for the condition;
Copy to 'nexttuplepointer' in a 5-tuple buffer;
}
increment nextpointer;
for (each 5 tuple generated for this filter rule) {
Set 'rule offset' 5-tuple element =
the address of the nextpointer-5 tuple;
}
Construct the default last 5 tuples;
Copy to 'nexttuplepointer' in a 5-tuple buffer;
Increment the 5-tuple buffer 'nexttuplepointer';
}
increment nextpointer;
for (each 5 tuple generated for this filter rule) {
Set "Rule Offset" 5-tuple element =
the address of the nextpointer-5 tuple;
Increment the 5-tuple buffer nexttuplepointer ';
}
else {/ * process other sentences as usual * /}
}
Write a procedure file for each network adapter
Table 1
Filter statement processing / * Process procedure statement to generate procedure table * /
Create a procedure buffer to hold the configured procedure table;
Set 'nextprocpointer' at the beginning of the procedure buffer;
while (more procedural statements exist in the file) {
if (the rule sentence is a procedure sentence) {
Configure a procedure index entry;
Copy to the 'nextprocpointer' in the procedure buffer;
Increment the 'nextprocpointer' of the procedure buffer;
else {/ * process other sentences as usual * /}
}
Write a rules file for each network adapter
Table 2
Either the network
ロード手順テーブル
/*手順インデックスをロードおよび分解する*/
ロード手順関数ライブラリ;
手順ファイルを読み込む;
手順テーブルをフィルタインタープリタにロードする;
for(各手順インデックスエントリ){
手順関数へのポインタを有するインデックスエントリをロードする;
}
テーブル3
5タプルテーブルをロードする
/*5タプルテーブルをロードする*/
規則ファイルを読み出す;
規則をフィルタインタープリタにロードする;
テーブル4
好適な実施形態において、フィルタローダ120の実行または初期化はまた、フィルタインタープリタ134が5タプル規則122および手順テーブル124をロードすることを可能にする。5タプル122は、一旦ロードされると、ネットワークパケットが、1以上のネットワークアダプタ(図示せず)へのデバイスドライバ130を介して、システムに入り、そこから離れて1以上のネットワークアダプタに向かう場合に、フィルタインタープリタ134によって用いられ得る。5タプルがフィルタインタープリタ134によって解釈され得るプロセスを実施する擬似コードは、以下のテーブル5にて提供される。
5タプルを解釈する
/*5タプルを解釈する
コードが各パケットに対して呼び出される
コードを許可、否定または拒否アクションを示すために呼び出し側にコードを戻す*/
第1の5タプルへの5タプルポインタを得る;
while(TRUE){
IF(Length==0){ /*整合を想定する−最後の5タプル*/
ポリシーリターンコード=5タプルにおける手順インデックスエレメントに基づく手順関数の呼び出す;
Return(手順リターンコード)
/*呼び出し側が実際の許可、否定、または拒否アクションを
行う*/
}
データオフセットからビットオフセットを抽出する;/*0であり得る*/
データオフセットにおけるビットオフセットをクリアする;
データオフセットをパケットポインタに加える;
if(Extract(長さ(Length)、パケットポインタにおけるパケットデータ、ビットオフセット)==データ値){ /*パケットおよびテストからデータを
抽出する*/
/*長さは、バイトサイズまたはビットサイズ
/*整合*/
/*整合を取るようにアクションを決定する*/
if Next Flag==SET&&/*規則は5タプルよりも多く有するか?*/
手順インデックス==0{ /*次の5タプルを有するANDか?*/
次の5タプルへの5タプルポインタを設定する;/*規則を継続する*/
}else{ /*手順を呼び出す*/
手順リターンコード=5タプルで手順インデックス要素に基づいて手順関数を呼び出す;
Return(手順リターンコード)
/*呼び出し側が実際の許可、否定、または拒否アクションを
行う*/
}
}Else{ /*整合なし*/
/*不整合に対して取るアクションに関して決定する*/
if Next Flag==SET /*規則は5タプルよりも多く有するか?*
/
if手順インデックス==0 { /*論理AND*/
5タプルポインタに規則オフセットを加える;/*規則の残りをスキップする*/
else /*次の5タプルを有する論理OR*/
次の5タプルに5タプルポインタを設定する;/*規則を継続する*/
else /*規則の終了*/
規則オフセットを5タプルポインタに加える;
break;/*ループの間に出る*/
}
}
テーブル5
ネットワークアダプタは、通常、デバイスに組み込まれるか、脱着可能にデバイスに結合される。このようなネットワークアダプタは、限定されるわけではないが、電気電子技術協会(Institute of Electrical and Electronics Engineers)(IEEE)802.3または802.5規格を実施し、fiber distributed−data interface(FDDI)、10Base−2、100−Base−FX、100Base−TXその他を含むもの等の無線デバイスの形式と、限定されるわけではないが、無線周波数、光学、音響または磁気誘導トランスミッタを実施し、IEEE802.11規格、ブルートゥース(Blue Tooth)無線通信規格その他を含むもの等の有線デバイスの形式を取る。ネットワークアダプタは、通常、デバイスがアクセスを有するインターフェースデータ構造を提示することにより、ネットワークアダプタが組み込まれるか、取り付けられるデバイスと通信を取る。
Load procedure table / * Load and disassemble procedure index * /
Load procedure function library;
Read the procedure file;
Load the procedure table into the filter interpreter;
for (each procedure index entry) {
Load an index entry with a pointer to a procedure function;
}
Table 3
Load 5-tuple table / * Load 5-tuple table * /
Read the rules file;
Load the rules into the filter interpreter;
Table 4
In the preferred embodiment, execution or initialization of the
Interpret 5 tuples / * Return code to caller to indicate code that interprets 5 tuples allow, deny, or deny actions for each packet * /
Get a 5-tuple pointer to the first 5-tuple;
while (TRUE) {
IF (Length == 0) {/ * Assume matching-last 5 tuples * /
Call procedure function based on procedure index element in policy return code = 5 tuples;
Return (procedure return code)
/ * The caller does the actual allow, deny, or deny action
Do * /
}
Extract bit offset from data offset; / * can be 0 * /
Clear bit offset in data offset;
Add a data offset to the packet pointer;
if (Extract (length, packet data in packet pointer, bit offset) == data value) {/ * data from packet and test
Extract*/
/ * Length is byte size or bit size
/ * Alignment * /
/ * Determine actions to align * /
if Next Flag == Does the SET && / * rule have more than 5 tuples? * /
Procedure index == 0 {/ * AND with the next 5 tuples? * /
Set a 5-tuple pointer to the next 5-tuple; / * continue the rule * /
} Else {/ * Call procedure * /
Call procedure function based on procedure index element with procedure return code = 5 tuples;
Return (procedure return code)
/ * The caller does the actual allow, deny, or deny action
Do * /
}
} Else {/ * No match * /
/ * Determining actions taken for inconsistencies * /
if Next Flag == SET / * Does the rule have more than 5 tuples? *
/
if procedure index == 0 {/ * logical AND * /
Add rule offset to 5-tuple pointer; / * Skip the rest of the rule * /
else / * logical OR * / with next 5 tuples
Set the 5-tuple pointer to the next 5-tuple; / * continue the rule * /
else / * end of rule * /
Add a rule offset to the 5-tuple pointer;
break; / * comes out during the loop * /
}
}
Table 5
The network adapter is typically built into the device or removably coupled to the device. Such network adapters include, but are not limited to, the Institute of Electrical and Electronics Engineers (IEEE) 802.3 or 802.5 standards, and the fiber-distributed-data interface (FDDI). Implement wireless frequency, optical, acoustic or magnetic inductive transmitters, including, but not limited to, wireless device types such as, including, but not limited to, 10Base-2, 100-Base-FX, 100Base-TX and others. It takes the form of wired devices such as 11 standards, including Bluetooth (Bluetooth) wireless communication standards and others. A network adapter typically communicates with the device in which it is installed or attached by presenting an interface data structure that the device has access to.
デバイス開発者または製造者は、デバイスドライバコード130を書き込み、これにより、通常、コマンドのあるセットを用いて動作し得、所定のデータ構造を備えるデバイスが、コマンドの異なるセットおよび異なるデータ構造を用い得るネットワークアダプタと効果的かつ効率良く通信可能にする。デバイスドライバコード130は、常に、デバイスのコマンドおよびデータ構造を、ネットワークアダプタによって用いられるコマンドおよびデータ構造に変換する(逆もまた同様)。たいていの実施形態では、デバイスドライバコードは、ネットワークアダプタ、または、デバイスに取り付けられるか、または組み込まれる他の周辺機器とデバイス上で起動するオペレーティングシステムとの間のインターフェースとして、働く。周辺機器から受けるか、周辺機器があて先とされるデータまたはコマンド(まとめて「データ」)は、データが必要なフォーマットに変換され得るように、デバイスドライバを介してルーティングされる。上記の説明が明示的なデバイスドライバコードの使用を詳述するが、デバイスが明示的にデバイスドライバの使用を支援しないこのような環境にあってさえ、デバイスがネットワークアダプタとのインターフェースを取ることを可能にするソフトウェアまたはハードウェアがデバイスドライバと機能的な等価物であり、本発明の精神または範囲から逸脱することなく、デバイスドライバと取り替えられ得ることが当業者には明らかである。
A device developer or manufacturer can write the
現在では、フィルタインタープリタ134は、可能な限り、プロトコルスタック上で低く、ネットワークアダプタに近くで、実施されることが好適である。図1は、デバイスドライバコード130および低レベルネットワークプロトコルソフトウェア132に関して、本発明の一つの可能な実施形態を例示する。この実施形態において、フィルタインタープリタ134は、デバイスドライバコード130を介して1以上のネットワークアダプタと通信できる。図2に示された別の実施形態において、フィルタインタープリタ134は、低レベルネットワークプロトコルソフトウェア132を介して、1以上のネットワークアダプタと通信する。
Currently, the
図1および図2の両方が例示するように、フィルタインタープリタ134は、任意の入来するパケットを、TCP、UDP、NetBios、SPX、ブルートゥースおよびその他等の低レベルネットワークプロトコル132またはより高いレベルのネットワークプロトコル136に通過させる前に、5タプル122として示されるフィルタ規則と、手順テーブルおよび手順関数124として例示される手順とを実施する。さらに、図2および図3に例示される実施形態は、フィルタインタープリタ134が、任意の出て行くパケットをデバイスドライバコード130または低レベルネットワークプロトコル132に通過させる前に、フィルタ規則および手順を実施することを可能にする。さらに別の実施形態において、フィルタインタープリタ134は、好適にはネットワークアダプタの近くで、可能な限りより高いレベルで、一つのプロトコルスタックレベルで入来するネットワークパケットを遮断し得る一方、出て行くパケットが別のプロトコルスタックレベルに遮断される。上述の説明は、可能な限りネットワークアダプタの近くで、主にフィルタインタープリタ134を実施することに焦点を置いているが、フィルタインタープリタ134は、本発明の精神または範囲から逸脱することなく、別のレベルで実施され得る。
As both FIG. 1 and FIG. 2 illustrate, the
図3は、ネットワークまたはシステムアドミニストレータによって入力され、フィルタコンパイラ102によって受信されるサンプルフィルタ規則文100を例示する。三つの実施例規則140、142および144が示される。最初の二つの、規則140および142は、明示的にシステムアドミニストレータによって入力された規則である。好適な実施形態において、最後の、「デフォルト否定」規則とも呼ばれる規則144は、フィルタコンパイラ102により、自動的に、生成される。あるいは、システムアドミニストレータ、ネットワークアドミニストレータまたは他のユーザが規則を入力することを可能にするユーザインターフェースは、ユーザが、「デフォルト否定」規則の包含がイネーブルまたはディセーブルすることを可能にする。このような包含がディセーブルにされると、「デフォルト許可」規則が置き換えられ得る。「デフォルト否定」規則が用いられる場合、フィルタ規則146を秩序化する好適なアプローチは、所望の、または、望ましいネットワークトラフィックが続行することを可能にする規則を書き込むことである。パケットが続行することを明示的に可能にするいくつかの規則(規則140および142等)にマッチングしない任意のパケットは、デフォルト否定規則144によって捨てられる。
FIG. 3 illustrates a sample
フィルタセットfs1(Filter Set fs1)の規則(rule)140は、Procedure=Allow 150、およびセレクタのDirection=*152(*は「任意」を意味する)、ソースアドレスSource Addr=*154,あて先アドレスDest Addr=*156およびプロトコルProtocol=TCP158を含む。フィルタセットfs1(Filter Set fs1)の規則142は、Procedure=Allow and Log 160,およびセレクタのDirection=*162、ソースアドレスSource Addr=*164、Dest Addr=*166およびプロトコルProtocol=UCP168,ソースポートSource Port=(161,162)170,あて先ポートDest Port=(161,162)172を含む。n規則144は、Procedure=Deny 180,およびセレクタのDirection=*182、Source Addr=*184,Dest Addr=*186およびプロトコルProtocol=TCP188を含む。図3に例示された例は特定のフィールド名を参照するが、このようなフィールド名は任意であり、任意のまたは全てのフィールド、または、デバイスによって支援されたパケット配向プロトコルと共に送信される他の類似の情報を含み得ることが当業者には理解される。
The
規則140、142および144は、それぞれのパケットについて上から下へと論理的に処理される。したがって、パケットが所与の規則に記載された局面全てを満足させる場
合、適切な手順関数は、規則(図2のブロック150、160または180)に特定化されたように、呼び出される。例として、本発明を限定することを意図することなく、規則140については、Procedure=Allow 150が、パケットが続行可能にする「Allow手順関数を呼び出す」として解釈され得る。所与のパケットが第1の規則140にマッチングしない場合、パケットが次の規則142に対して調べられる。このプロセスは、最後の規則144まで繰り返す。用いられると、デフォルト否定規則144は、任意のパケットにマッチングし、パケットが否定手順関数によって処理され、捨てられる(すなわち続行することが可能とされない)ことを意味するProcedure=Deny 180を呼び出すように構成される。
図3に示された実施形態において、第1のフィルタ規則140は、任意のソースから任意のあて先への、全てのTCP/IPデータグラムを許可する。第2のフィルタ規則142は、ソースポートまたはあて先ポートが161または162である場合、UDPトラフィックを許可する。これらは、SNMP(Simple Network Management Protocol)についての周知のポートである。フィルタセット名(「fs1」)は、NETWORK__INTERFACE文を介して、規則セットの先頭に、フィルタ規則セットを特定のネットワークアダプタに関連させるように用いられる。この文について、1以上のフィルタセットは、1以上のネットワークアダプタと関連する。好適な実施形態において、ネットワークアダプタと関連するフィルタセットのみが、そのネットワークアダプタに、フィルタローダによってロードされる。これは、それぞれのネットワークアダプタが、ファイル規則のそれ自身の個別のコピーを備えたそれ自身のフィルタローダを有さなければならないことを意味する。これが全体の記憶要件を増加させる一方で、好適なバイナリ規則の実施は、デバイス上に重大な記憶要件を一般に課さないように十分に小さい規則セットを生成する。個別のフィルタローダの使用およびそれぞれのネットワークアダプタに対するフィルタ規則が、現在、好適であるが、任意の時間のメモリ内のフィルタ規則およびフィルタローダの数は、本発明の精神または範囲から逸脱することなく、様々な技術を介して低減され得ることが当業者には明らかである。
In the embodiment shown in FIG. 3, the
図4を参照すると、それぞれの5タプルの論理構造が長さ(length)200、手順インデックス202、規則オフセット204、データオフセット206および値208を含む。長さ200は、実行されるべき比較する長さ(例えば一つのオクテット(octet)、二つのオクテット等)を表示する。長さ200はまた、値208と比較されるべきオクテットのビット、例えばフラグビットを示し得る。
Referring to FIG. 4, each 5-tuple logical structure includes a
手順インデックス202は、比較が真である場合に実行されることになる手順テーブル関数を指す手順テーブルエントリについてのインデックス、またはポインタである。以下のテーブル6は、手順関数を実施するサンプル擬似コードを提供する。
テーブル6が示すように、全ての手順は、本発明の好適な実施形態において、パケットを許可し(Allow)、否定し(Deny)、または拒絶する(Reject)ためにアクションコードを戻す。さらなるアクションコードおよび特定のパケット処理手順は、容易に、このスキームで実施される。好適な実施形態において、このようなさらなるパケット処理手順は、限定されるわけではないが、記録、サニタイジング(sanitizing)およびこれらの組み合わせを含み得る。好適な実施形態にて実施されるこのような手順の特定リストが、図5のパケット処理手順340〜348により、例示される。組み合わせ手順の例として、手順が規則の手順要素のDENY_AND_LOGである場合、フィルタリング処理の直接のユーザ可視性を提供するログエントリが作成され、パケットが否定される。
As Table 6 shows, all procedures return an action code to allow (Deny) or reject (Reject) the packet in the preferred embodiment of the present invention. Further action codes and specific packet processing procedures are easily implemented in this scheme. In a preferred embodiment, such additional packet processing procedures may include, but are not limited to, recording, sanitizing, and combinations thereof. A specific list of such procedures implemented in the preferred embodiment is illustrated by the packet processing procedures 340-348 of FIG. As an example of a combination procedure, if the procedure is a rule procedure element DENY_AND_LOG, a log entry is created that provides direct user visibility of the filtering process and the packet is denied.
ログがフィルタ規則をデバッグし、検証し、アタックを検出するために用いられる場合、このような記録が有用であり得る。好適な実施形態において、IPパケットのそれぞれのログエントリに含まれる情報は、手順インデックス要素(ALLOW_AND_LOG、DENY_AND_LOG等)、パケットの方向(内向きまたは外向き)、ソースおよびあて先IPアドレス、オフセットでのパケット内のソースおよびあて先ポート数の値、フィルタ5タプルを識別するのに十分な情報(実際のフィルタ規則5タプルまたはフィルタ規則の始動位置のオフセット等)を含む。それぞれがログされ、フィルタリングされたプロトコルは、利用可能なフィールドおよび情報の任意の組み合わせまたはフォーマットを有する一意的なログエントリジェネレータを実施するための、本発明の、拡張可能な手順アーキテクチャを使用できる。 Such a record may be useful if the log is used to debug, validate filter rules and detect attacks. In a preferred embodiment, the information contained in each log entry of an IP packet includes the procedure index element (ALLOW_AND_LOG, DENY_AND_LOG, etc.), packet direction (inward or outward), source and destination IP address, packet at offset Value of the source and destination ports, and information sufficient to identify the filter 5 tuple (such as the actual filter rule 5 tuple or the offset of the filter rule start position). Each logged and filtered protocol can use the extensible procedural architecture of the present invention to implement a unique log entry generator with any combination or format of fields and information available.
規則オフセット204は、規則テーブルの次の規則に対して現在の5タプルからオフセットされるバイトである数である。5タプルがパケットにマッチングしない場合、フィルタインタープリタは、NEXT flagと呼ばれる特別のフラグが設定される場合を除いて、規則オフセットを現在の5タプルのアドレスに加えることにより、次の規則を選択する。5タプルがパケットにマッチングせず、NEXT flagが設定され、手順インデックスが有効になる場合、フィルタインタープリタは、現在の5タプルのアドレスに、現在の5タプルのサイズを加えることにより、次の5タプルを選択する。フィルタコンパイラは、規則オフセットがゼロでないことを確実にする。NEXT flagの使用につ
いてさらに詳しく言うと、規則オフセット204のNEXT flagが設定される場合、フィルタインタープリタは、比較のために、規則の次の5タプルに踏み入れる。NEXT flagが設定され、比較が真である後に手順インデックスが空かヌルである場合、次の比較の結果が現在の比較に論理積される。比較が偽である後にNEXT flagが設定され、Procedure Indexが有効である場合、次の比較が現在の比較に論理和される。
Rule offset 204 is a number that is a byte offset from the current 5-tuple for the next rule in the rule table. If the 5-tuple does not match the packet, the filter interpreter selects the next rule by adding the rule offset to the current 5-tuple address, except when a special flag called NEXT flag is set. If the 5-tuple does not match the packet, the NEXT flag is set, and the procedure index is valid, the filter interpreter adds the size of the current 5-tuple to the current 5-tuple address, thereby adding the next 5-tuple. Select. The filter compiler ensures that the rule offset is not zero. More specifically about the use of NEXT flag, when the NEXT flag for rule offset 204 is set, the filter interpreter steps into the next five tuples of the rule for comparison. If the NEXT flag is set and the procedure index is empty or null after the comparison is true, the result of the next comparison is ANDed with the current comparison. If the NEXT flag is set after the comparison is false and the Procedure Index is valid, the next comparison is ORed with the current comparison.
データオフセット206は、この5タプルによって調べられるそのパケット内のフィールドに関するパケットへのオフセットである数である。データオフセットは、本発明が、ネットワークプロトコルパケットまたは他のネットワーク送信内の任意のフィールドまたはデータポジションにアクセスすることを可能にする。例により、本発明を限定する意図なく、データオフセット206は、オクテットオフセットまたはオクテットオフセットの組み合わせおよびオクテット内のビットオフセットであり得る。フィルタコンパイラは、規則セットの最新の5タプルが否定手順インデックスを含むことを確実にする。任意に、フィルタコンパイラは、許可手順インデックスを含む規則セットの最新の5タプルを発生し得る。データオフセットが、様々なネットワークスタックレベルで動作するための規則を採用するように、規則ローディング中に直接に変更され得るか、ベースパケットオフセットについての処理中に組み合わされ得ることが当業者に理解される。ベースパケットオフセットは、フィルタ規則が適用されるネットワークプロトコルレベルに依存して変更する。 Data offset 206 is a number that is an offset into the packet for the field in that packet that is examined by this 5-tuple. Data offsets allow the present invention to access any field or data position within a network protocol packet or other network transmission. By way of example, without intending to limit the present invention, the data offset 206 may be an octet offset or a combination of octet offsets and a bit offset within an octet. The filter compiler ensures that the most recent 5 tuple of the rule set contains a negative procedure index. Optionally, the filter compiler may generate the latest five tuples of the rule set that includes the allowed procedure index. Those skilled in the art will appreciate that data offsets can be modified directly during rule loading, or combined during processing for base packet offsets to employ rules for operating at various network stack levels. The The base packet offset changes depending on the network protocol level to which the filter rule is applied.
値208は、データオフセット206によってアクセスされるパケット内のフィールドと比較されることになる値である。この5タプル要素に関して、5タプルの論理動作は、「オペランド1,イコール?,オペランド2」として表現される。オペランド1は、データオフセット206のパケットデータから得られ、オペランド2は、5タプル要素値208である。「イコール?」は均等性についてのテストを言う。そして、5タプルは、「ソースポート数,イコール?,テストポート数」等の表現を表示し得る。均等テストが、本発明の好適な実施形態の一部として用いられるが、別の数学テストが本発明の精神または範囲から逸脱することなく置き換わられ得ることが、当業者には明らかである。
The value 208 is the value that will be compared to the field in the packet accessed by the data offset 206. With respect to this 5-tuple element, the 5-tuple logical operation is expressed as "operand 1, equal ?,
図5は、図3の三つのフィルタ規則140、142および144に対応する5タプル220、224、226、230、232、234および240のセットを例示する。テーブル7は、これらの5タプルの別の表示を提示する。「NEXT+」は、規則オフセットで論理積される設定されたNEXT flagを言う。図5を参照すると、ブロック274、284、294および304の「N」が設定されたNEXTflagに対応する。
FIG. 5 illustrates a set of five
全ての5タプルは、いくつかがヌル(バイナリ0)であり得るか、いくつかの他の未使用の値であり得る5つの要素を有する。
All 5 tuples have 5 elements, some of which can be null (binary 0) or some other unused value.
テーブル7には、手順インデックス1は、図5の手順インデックス252および手順テーブルエントリ340に対応し、手順インデックス2は、図5の手順インデックス312および手順テーブルエントリ342に対応し、手順インデックス7は、図5の手順インデックス322および手順テーブルエントリ342に対応する。
In table 7, procedure index 1 corresponds to procedure index 252 and
もちろん、5タプルの直接メモリ内形式は、’’)’’または’’を含まず、’’は、個別の線上にあり、バイナリデータのT*S8ビットオクテットである。Tは、5タプルの8ビットオクテット内に、この特定の例にて、5タプルであり、Sはサイズである。ユーザが定義し得るフィルタ規則の数または5タプルの結果として生じるサイズ(5タプル122のオクテット内の全長さ)についての効率的な限界はない。 Of course, the 5-tuple direct in-memory format does not include ")" or "", which is on a separate line and is a T * S8 bit octet of binary data. T is 5 tuples in this particular example, within 5 tuples of 8 bit octets, and S is the size. There is no efficient limit on the number of filter rules that can be defined by the user or the resulting size of 5 tuples (the total length in octets of 5 tuples 122).
テーブル72および図5は、手順分解を示さない。(252、272、282、292、302、322)で示された手順値のそれぞれは、実際に、関数エントリポイントへのアドレスポインタのテーブルへのインデックスまたはポインタである。手順関数は、二つの独立変数、それらの手順インデックスを含む現在の5タプルへのポインタおよびパケットについてのポインを取り、リターンコードを戻す。手順関数は、戻す前にパケットを変更させ得る。 Table 72 and FIG. 5 do not show procedural decomposition. Each of the procedure values indicated by (252, 272, 282, 292, 302, 322) is actually an index or pointer to a table of address pointers to function entry points. The procedure function takes two independent variables, a pointer to the current 5-tuple containing their procedure index and a point for the packet, and returns a return code. The procedural function may cause the packet to be modified before returning.
図5の例を参照すると、値258にマッチングするパケットデータに関する5タプル220の解釈後に、function Allow340に関する独立変数は、220(すなわち5タプル220へのポインタ)およびパケットへのポインタ(図示せず)を含む。さらなる独立変数または別の独立変数は、本発明の精神または範囲から逸脱せずに、供給され得ることが明らかである。このアーキテクチャは、手順関数の処理オプションを拡張し、図1のフィルタインタープリタ134によって上記の関数340〜348の使用を単純化し、フィルタインタープリタを小型に維持する。
Referring to the example of FIG. 5, after interpretation of 5-
図5には、5タプル234の下の省略記号(ellipse)は、5タプルのさらなる任意の数が続き、これらの省略記号は図3の規則142の下の省略記号に対応することを示す。したがって、図5において、5タプル表示は、図3に示された全ての規則に提供される。フィルタ文140、142および144と図5の5タプルとの間の対応は、以下のようである。142は224、226、230、232、234に対応する。144は2
40に対応する。
In FIG. 5, the ellipses under the 5-
40.
5タプルオフセット要素256、286および306の値9、20、22は、それぞれ、適切なフィールドが見出されるIPデータグラムへのオクテットデータオフセットである。9は、IPダイアグラムのプロトコルフィールドに対応する(オフセットされる)。同様に、20はIPソースポートに対応し、22はIPあて先ポートに対応する。5タプル値要素(ブロック258、278、288、298、308および318)が6(TCP)、20(UDP)等である。
The
図5では、ボックス348はまた、さらなる、任意の手順関数が続くことを示す。手順テーブル260のサイズまたは手順関数の数は限定されない。
In FIG. 5,
本発明が、詳細に、本発明の特定の実施形態を参考にして説明されてきた一方、様々な変化および変更は、本発明の精神および範囲から逸脱することなく、なされ得ることが当業者には明らかである。したがって、本発明が特許請求の範囲およびそれらの均等物の範囲内にある場合、本発明がこの発明の変更および改変を含むことが意図される。 While the invention has been described in detail with reference to specific embodiments thereof, those skilled in the art will recognize that various changes and modifications can be made without departing from the spirit and scope of the invention. Is clear. Thus, it is intended that the present invention include modifications and variations of this invention if they come within the scope of the following claims and their equivalents.
Claims (32)
該方法は、
(1)フィルタ文書(198、220、224、226、230、232、234、240)の長さフィールド(200、250、270、280、290、300、310)の長さ値によって定義された長さと、該フィルタ文書(198、220、224、226、230、232、234、240)のデータオフセットフィールド(206、256、276、286、296、306、316)のデータオフセット値の分だけ該パケットの最初のバイトからオフセットされている開始位置とを有する該パケットの部分を第1の論理回路を用いて識別するステップであって、
該開始位置は、フィルタリングされるべき該パケットを指しているパケットポインタの値に、該フィルタ文書の該データオフセットフィールドの該データオフセット値を加算することによって、該第1の論理回路によって計算され、
終了位置は、該パケットポインタの値に、該フィルタ文書の該データオフセットフィールドの該データオフセット値および該フィルタ文書の該長さフィールドの該長さ値を加算することによって、該第1の論理回路によって計算される、ステップと、
(2)該フィルタ文書(198、220、224、226、230、232、234、240)の値フィールド(208、258、278、288、298、308、318)と該パケットの該識別された部分とに対して、該ネットワークインターフェースによって特定された所定のタイプの比較を第2の論理回路を用いて実行するステップであって、該比較は、該開始位置において始まり、該終了位置において終了する、ステップと、
(3)該比較の結果が真である場合には、所定の組の規則に従って、該パケットを処理するための所定の手順機能(124、340〜348)を第3の論理回路を用いて起動するステップと
を包含する、方法。 A method of filtering packets at a network interface,
The method
(1) The length defined by the length value of the length field (200, 250, 270, 280, 290, 300, 310) of the filter document (198, 220, 224, 226, 230, 232, 234, 240) And the packet by the data offset value of the data offset field (206, 256, 276, 286, 296, 306, 316) of the filter document (198, 220, 224, 226, 230, 232, 234, 240). Using a first logic circuit to identify a portion of the packet having a starting position that is offset from the first byte of
The starting position is calculated by the first logic circuit by adding the data offset value of the data offset field of the filter document to the value of a packet pointer pointing to the packet to be filtered;
The end position is obtained by adding the data offset value of the data offset field of the filter document and the length value of the length field of the filter document to the value of the packet pointer. Calculated by the steps, and
(2) the value field (208, 258, 278, 288, 298, 308, 318) of the filter document (198, 220, 224, 226, 230, 232, 234, 240) and the identified portion of the packet And using a second logic circuit to perform a predetermined type of comparison specified by the network interface, the comparison starting at the start position and ending at the end position. Steps,
(3) If the result of the comparison is true, a predetermined procedural function (124, 340 to 348) for processing the packet is started using the third logic circuit according to a predetermined set of rules. A method comprising the steps of:
(4)前記比較が偽である場合には、該シーケンス(146)における後続するフィルタ文書(198、220、224、226、230、232、234、240)を前記第1の論理回路を用いて処理するステップをさらに包含する、請求項1に記載の方法。 The filter document (100, 220-240) is one of a plurality of filter documents (100, 220-240) arranged in a sequence (146), the method comprising:
(4) If the comparison is false, the subsequent filter documents (198, 220, 224, 226, 230, 232, 234, 240) in the sequence (146) are used using the first logic circuit. The method of claim 1 further comprising the step of processing.
フィルタ文書(198、220、224、226、230、232、234、240)の長さフィールド(200、250、270、280、290、300、310)における長さ値によって定義される長さと、該フィルタ文書(198、220、224、226、230、232、234、240)のデータオフセットフィールド(206、256、276、286、296、306、316)のデータオフセット値の分だけ該パケットの最初のバイトからオフセットされている開始位置とを有する該パケットの部分を識別するように構成されている第1の論理回路であって、
該開始位置は、フィルタリングされるべき該パケットを指しているパケットポインタの値に、該フィルタ文書の該データオフセットフィールドの該データオフセット値を加算することによって第1の論理回路によって計算され、
終了位置は、該パケットポインタの値に、該フィルタ文書の該データオフセットフィールドの該データオフセット値および該フィルタ文書の該長さフィールドの該長さ値を加算することによって該第1の論理回路によって計算される、第1の論理回路と、
該フィルタ文書(198、220、224、226、230、232、234、240)の値フィールド(208、258、278、288、298、308、318)と該パケットの識別された部分とに対して、該ネットワークインターフェースによって特定された所定のタイプの比較を実行するように構成されている第2の論理回路であって、該比較は、該開始位置において始まり、該終了位置において終了する、第2の論理回路と、
該比較の結果が真である場合には、所定の組の規則に従って、該パケットを処理するための所定の手順機能(124、340〜348)を起動するように構成されている第3の論理回路と
を備えている、システム。 A system for filtering packets at a network interface, the system comprising:
The length defined by the length value in the length field (200, 250, 270, 280, 290, 300, 310) of the filter document (198, 220, 224, 226, 230, 232, 234, 240); The first of the packet by the data offset value in the data offset field (206, 256, 276, 286, 296, 306, 316) of the filter document (198, 220, 224, 226, 230, 232, 234, 240) A first logic circuit configured to identify a portion of the packet having a starting position offset from a byte;
The starting position is calculated by a first logic circuit by adding the data offset value of the data offset field of the filter document to the value of a packet pointer pointing to the packet to be filtered;
The end position is determined by the first logic circuit by adding the value of the packet pointer to the data offset value of the data offset field of the filter document and the length value of the length field of the filter document. A first logic circuit to be calculated;
For the value field (208, 258, 278, 288, 298, 308, 318) of the filter document (198, 220, 224, 226, 230, 232, 234, 240) and the identified portion of the packet A second logic circuit configured to perform a predetermined type of comparison specified by the network interface, the comparison starting at the start position and ending at the end position, The logic circuit of
If the result of the comparison is true, a third logic configured to activate a predetermined procedural function (124, 340-348) for processing the packet according to a predetermined set of rules. A system comprising a circuit and
前記比較が偽である場合には、前記第1の論理回路は、該シーケンス(146)における後続するフィルタ文書(100、220〜240)を処理するようにさらに構成されている、請求項11に記載のシステム。 The filter document (100, 220-240) is one of a plurality of filter documents (100, 220-240) arranged in the sequence (146);
12. If the comparison is false, the first logic circuit is further configured to process subsequent filter documents (100, 220-240) in the sequence (146). The system described.
前記実行するステップは、
前記パケットへのポインタを取得することと、
該フィルタ文書へのタプルポインタを取得することと、
ループ終了フラグを偽に設定することと、
該タプルポインタによって指された該フィルタ文書の長さフィールドがゼロの場合には、第1の手順を実行するステップと、該タプルポインタによって指された該フィルタ文書の長さフィールドがゼロ以外の場合には、第2の手順を実行するステップとを該ループ終了フラグが真になるまでループで反復することと
をさらに包含する、請求項21に記載の方法。 The filter document further includes a rule offset field, the rule offset field including the following flags:
The performing step includes:
Obtaining a pointer to the packet;
Obtaining a tuple pointer to the filter document;
Setting the loop end flag to false;
If the length field of the filtered document pointed to by the tuple pointer is zero, executing the first procedure; and if the length field of the filtered document pointed to by the tuple pointer is non-zero The method of claim 21, further comprising: repeating the step of performing a second procedure in a loop until the loop end flag is true.
前記タプルポインタによって指定された前記フィルタ文書の手順インデックスに対する前記手順機能を呼び出すことと、
該タプルポインタおよびパケットポインタを該手順機能にパラメータとしてわたすことと、
前記ループ終了フラグを真に設定することと
を含む、請求項27に記載の方法。 The first procedure includes:
Invoking the procedure function for the procedure index of the filter document specified by the tuple pointer;
Passing the tuple pointer and packet pointer as parameters to the procedure function;
28. The method of claim 27, comprising setting the loop end flag to true.
前記パケットポインタの値に、前記タプルポインタによって指定された前記フィルタ文書のデータオフセットフィールドのデータオフセット値を加算することによって、前記開始位置を計算することと、
該パケットポインタの値に、該タプルポインタによって指定された該フィルタ文書のデータオフセットフィールドのデータオフセット値および該タプルポインタによって指定された該フィルタ文書によって指された前記長さフィールドの長さ値と加算することによって、前記終了位置を計算することと、
該開始位置において始まり、該終了位置において終了するように、パケットデータの部分と該タプルポインタによって指定された該フィルタ文書の値フィールドとを比較することと、
該パケットデータの比較が真を戻す場合には、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、次のフィルタ文書と論理積の関係を示す場合には、該タプルポインタが該次のフィルタ文書を指すようにすること、または、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と論理和の関係を示す場合には、該タプルポインタによって指定された該フィルタ文書の手順インデックスに対応する該手順機能を呼び出し、該タプルポインタおよび該パケットポインタを該手順機能にパラメータとしてわたすこと、または、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書との関係の欠如を示す場合には、該タプルポインタによって指定された該フィルタ文書の手順インデックスに対応する該手順機能を呼び出し、該タプルポインタおよび前記パケットポインタを該手順機能にパラメータとしてわたすこと
を実行することと、
該パケットデータの比較が偽を戻す場合には、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と論理積の関係を示す場合には、該タプルポインタが次の規則におけるフィルタ文書を指すようにすること、または
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書との関係の欠如を示す場合には、該タプルポインタが該次の規則における該フィルタ文書を指すようにすること、または
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と該論理和の関係を示す場合には、該タプルポインタが該次のフィルタ文書を指すようにすること
を実行することと
を含む、請求項27に記載の方法。 The second procedure is:
Calculating the start position by adding the data offset value of the data offset field of the filter document specified by the tuple pointer to the value of the packet pointer;
Add to the value of the packet pointer the data offset value of the data offset field of the filter document specified by the tuple pointer and the length value of the length field pointed to by the filter document specified by the tuple pointer Calculating the end position by:
Comparing the portion of the packet data with the value field of the filter document specified by the tuple pointer to start at the start position and end at the end position;
If the packet data comparison returns true,
If the next flag and procedure index of the filter document specified by the tuple pointer indicate a logical AND relationship with the next filter document, the tuple pointer points to the next filter document; Or
If the next flag and procedure index of the filter document specified by the tuple pointer indicate a logical OR relationship with the next filter document, it corresponds to the procedure index of the filter document specified by the tuple pointer. Calling the procedural function and passing the tuple pointer and the packet pointer as parameters to the procedural function, or
If the next flag and procedure index of the filter document specified by the tuple pointer indicates a lack of relationship with the next filter document, it corresponds to the procedure index of the filter document specified by the tuple pointer Executing the procedural function to perform and passing the tuple pointer and the packet pointer as parameters to the procedural function;
If the packet data comparison returns false,
If the next flag and procedure index of the filter document specified by the tuple pointer indicate a logical AND relationship with the next filter document, the tuple pointer points to the filter document in the next rule. Or if the next flag and procedure index of the filter document specified by the tuple pointer indicates a lack of relationship with the next filter document, the tuple pointer indicates the filter document in the next rule. Or if the next flag and procedure index of the filter document specified by the tuple pointer indicate a logical OR relationship with the next filter document, the tuple pointer 28. The method of claim 27, comprising: pointing to a filter document of:
前記第2の論理回路は、
前記パケットへのポインタを取得することと、
該フィルタ文書へのタプルポインタを取得することと、
ループ終了フラグを偽に設定することと、
該タプルポインタによって指された該フィルタ文書の長さフィールドがゼロの場合には、第1の手順を実行するステップと、該タプルポインタによって指された該フィルタ文書の長さフィールドがゼロ以外の場合には、第2の手順を実行するステップとを該ループ終了フラグが真になるまでループで反復することと
を行うようにさらに構成されている、請求項24に記載のシステム。 The filter document further includes a rule offset field, the rule offset field including the following flags:
The second logic circuit includes:
Obtaining a pointer to the packet;
Obtaining a tuple pointer to the filter document;
Setting the loop end flag to false;
If the length field of the filtered document pointed to by the tuple pointer is zero, executing the first procedure; and if the length field of the filtered document pointed to by the tuple pointer is non-zero 25. The system of claim 24, further comprising: performing the second procedure and repeating in a loop until the loop end flag is true.
前記タプルポインタによって指定された前記フィルタ文書の手順インデックスに対する前記手順機能を呼び出すことと、
該タプルポインタおよびパケットポインタを該手順機能にパラメータとしてわたすことと、
前記ループ終了フラグを真に設定することと
を含む、請求項30に記載のシステム。 The first procedure includes:
Invoking the procedure function for the procedure index of the filter document specified by the tuple pointer;
Passing the tuple pointer and packet pointer as parameters to the procedure function;
31. The system of claim 30, comprising setting the loop end flag to true.
前記パケットポインタの値に、前記タプルポインタによって指定された前記フィルタ文書のデータオフセットフィールドのデータオフセット値を加算することによって、前記開始位置を計算することと、
該パケットポインタの値に、該タプルポインタによって指定された該フィルタ文書のデータオフセットフィールドのデータオフセット値および該タプルポインタによって指定された該フィルタ文書によって指された前記長さフィールドの長さ値を加算することによって、前記終了位置を計算することと、
該開始位置において始まり、該終了位置において終了するように、パケットデータの部分と該タプルポインタによって指定された該フィルタ文書の値フィールドとを比較することと、
該パケットデータの比較が真を戻す場合には、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、次のフィルタ文書と論理積の関係を示す場合には、該タプルポインタが該次のフィルタ文書を指すようにすること、または、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と論理和の関係を示す場合には、該タプルポインタによって指定された該フィルタ文書の手順インデックスに対応する該手順機能を呼び出し、該タプルポインタおよび該パケットポインタを該手順機能にパラメータとしてわたすこと、または、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書との関係の欠如を示す場合には、該タプルポインタによって指定された該フィルタ文書の手順インデックスに対応する該手順機能を呼び出し、該タプルポインタおよび該パケットポインタを該手順機能にパラメータとしてわたすこと
を実行することと、
該パケットデータの比較が偽を戻す場合、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と論理積の関係を示す場合には、該タプルポインタが次の規則におけるフィルタ文書を指すようにすること、または
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書との関係の欠如を示す場合には、該タプルポインタが該次の規則における該フィルタ文書を指すようにすること、または
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と該論理和の関係を示す場合には、該タプルポインタが該次のフィルタ文書を指すようにすること
を実行すること
を含む、請求項30に記載のシステム。 The second procedure is:
Calculating the start position by adding the data offset value of the data offset field of the filter document specified by the tuple pointer to the value of the packet pointer;
The data offset value of the data offset field of the filter document specified by the tuple pointer and the length value of the length field pointed to by the filter document specified by the tuple pointer are added to the value of the packet pointer Calculating the end position by:
Comparing the portion of the packet data with the value field of the filter document specified by the tuple pointer to start at the start position and end at the end position;
If the packet data comparison returns true,
If the next flag and procedure index of the filter document specified by the tuple pointer indicate a logical AND relationship with the next filter document, the tuple pointer points to the next filter document; Or
If the next flag and procedure index of the filter document specified by the tuple pointer indicate a logical OR relationship with the next filter document, it corresponds to the procedure index of the filter document specified by the tuple pointer. Calling the procedural function and passing the tuple pointer and the packet pointer as parameters to the procedural function, or
If the next flag and procedure index of the filter document specified by the tuple pointer indicates a lack of relationship with the next filter document, it corresponds to the procedure index of the filter document specified by the tuple pointer Executing the procedural function to pass and passing the tuple pointer and the packet pointer as parameters to the procedural function;
If the packet data comparison returns false,
If the next flag and procedure index of the filter document specified by the tuple pointer indicate a logical AND relationship with the next filter document, the tuple pointer points to the filter document in the next rule. Or if the next flag and procedure index of the filter document specified by the tuple pointer indicates a lack of relationship with the next filter document, the tuple pointer indicates the filter document in the next rule. Or if the next flag and procedure index of the filter document specified by the tuple pointer indicate a logical OR relationship with the next filter document, the tuple pointer 31. The system of claim 30, comprising: pointing to a filter document of:
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29623901A | 2001-06-11 | 2001-06-11 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003504579A Division JP2004535714A (en) | 2001-06-11 | 2002-06-11 | Packet filtering system and method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007325281A JP2007325281A (en) | 2007-12-13 |
JP4262284B2 true JP4262284B2 (en) | 2009-05-13 |
Family
ID=33510217
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003504579A Withdrawn JP2004535714A (en) | 2001-06-11 | 2002-06-11 | Packet filtering system and method |
JP2007151035A Expired - Fee Related JP4262284B2 (en) | 2001-06-11 | 2007-06-06 | Packet filtering system and method |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003504579A Withdrawn JP2004535714A (en) | 2001-06-11 | 2002-06-11 | Packet filtering system and method |
Country Status (1)
Country | Link |
---|---|
JP (2) | JP2004535714A (en) |
-
2002
- 2002-06-11 JP JP2003504579A patent/JP2004535714A/en not_active Withdrawn
-
2007
- 2007-06-06 JP JP2007151035A patent/JP4262284B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2007325281A (en) | 2007-12-13 |
JP2004535714A (en) | 2004-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6963913B2 (en) | Packet filtering system and methods | |
US6301669B2 (en) | System and method for very fast IP packet filtering | |
EP1832037B1 (en) | Template access control lists | |
US6266707B1 (en) | System and method for IP network address translation and IP filtering with dynamic address resolution | |
US8285874B2 (en) | Routing systems and methods for implementing routing policy with reduced configuration and new configuration capabilities | |
CN105808399B (en) | Remote debugging method and device | |
US20070162968A1 (en) | Rule-based network address translation | |
US8543528B2 (en) | Exploitation of transition rule sharing based on short state tags to improve the storage efficiency | |
US20080101222A1 (en) | Lightweight, Time/Space Efficient Packet Filtering | |
EP2600588A2 (en) | Method and device for mandatory access control | |
CN114726633B (en) | Traffic data processing method and device, storage medium and electronic equipment | |
US11245712B2 (en) | Method and apparatus for generating virtual malicious traffic template for terminal group including device infected with malicious code | |
US11818099B2 (en) | Efficient matching of feature-rich security policy with dynamic content using user group matching | |
JP7139252B2 (en) | transfer device | |
JP4262284B2 (en) | Packet filtering system and method | |
US20070147382A1 (en) | Method of storing pattern matching policy and method of controlling alert message | |
US8806059B1 (en) | Rule tree for network device | |
US20200145379A1 (en) | Efficient matching of feature-rich security policy with dynamic content using incremental precondition changes | |
US7155606B1 (en) | Method and system for accepting preverified information | |
JP2006067279A (en) | Intrusion detection system and communication equipment | |
US10965647B2 (en) | Efficient matching of feature-rich security policy with dynamic content | |
CN117579386B (en) | Network traffic safety control method, device and storage medium | |
CN109672665A (en) | A kind of access control method, device, system and computer readable storage medium | |
CN117896182B (en) | Linux network communication security management and control method, device and storage medium | |
Moungla et al. | Conflict detection and resolution in QoS policy based management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071113 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080212 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080215 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080313 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080402 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080627 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080702 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080804 |
|
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: 20090109 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090206 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120220 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130220 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140220 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |