JP4262284B2 - Packet filtering system and method - Google Patents

Packet filtering system and method Download PDF

Info

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
Application number
JP2007151035A
Other languages
Japanese (ja)
Other versions
JP2007325281A (en
Inventor
コミスキー デニス
Original Assignee
ブルーファイア セキュリティ テクノロジーズ,インコーポレイテッド
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 ブルーファイア セキュリティ テクノロジーズ,インコーポレイテッド filed Critical ブルーファイア セキュリティ テクノロジーズ,インコーポレイテッド
Publication of JP2007325281A publication Critical patent/JP2007325281A/en
Application granted granted Critical
Publication of JP4262284B2 publication Critical patent/JP4262284B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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.

許可、否定およびログフィルタ規則は、上から下へ連続して処理された、規則の秩序化されたリストとして、最も一般的に、入力される。秩序は、規則作成者、しばしばシステムまたはネットワークアドミニストレータによって特定される。それぞれの規則は、ネットワークトラフィックのある種類を許可するか、または否定する。さらにセキュアなパケットフィルタにおいて、パケット処理は、パケットが明示的に許可され、明示的に否定され、またはパケットが否定される場合の規則がなくなるまで、全ての規則を通じて続行する。一般に、かなり大きく、複雑なフィルタ規則セットは、ネットワークデバイスが支援されるべきそれぞれのプロトコルのために書き出されなければならない。
米国特許第6,182,228号B1明細書
Allow, deny and log filter rules are most commonly entered as an ordered list of rules, processed sequentially from top to bottom. Order is specified by the rule creator, often a system or network administrator. Each rule allows or denies certain types of network traffic. In a more secure packet filter, packet processing continues through all the rules until the packet is explicitly allowed, explicitly denied, or there are no rules when the packet is denied. In general, a fairly large and complex set of filter rules must be written for each protocol that a network device is to support.
US Pat. No. 6,182,228 B1 specification

(発明の要旨)
したがって、本発明は、関連技術の制限および不利益による問題の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-tuple playback 122 and procedure display 124 and interpretation of 5-tuple 122 as network packets via network software 132 and 136. 100 related.

フィルタ、手順、および他の規則文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 other rule statements 100 are processed by the filter compiler 102. The filter compiler 102 may be implemented using code similar to the pseudo code presented in Table 1 and Table 2 below. Table 1 provides sample pseudo code for processing filter statements, and Table 2 provides sample pseudo code for processing procedural statements. The filter compiler 102 outputs a rules file 106 and a procedure file 108 that contains a binary representation of the rules to be applied by the filter. The rules file 106 may take the form of Java (R) byte code, machine language, or other machine readable code. Procedure file 108 contains a binary representation of the policy applied by the filter. The procedure file 108 is preferably a combination of a table of procedure indications and a set of procedure functions compiled into Java (R) bytecode, machine language or other machine-read code. The rules file 106 and procedure file 108 can be copied over a range of network devices, for each network adapter to which the rules should be applied.

ネットワークアダプタデバイスドライバ130または低レベルのネットワークプロトコル132のいずれか、または両方が初期化され、フィルタローダ120が実行する。サンプルフィルタローダ120の実行擬似コードが、以下に、テーブル3およびテーブル4で提供される。テーブル3は、手順テーブルをロードするための擬似コードを提供し、テーブル4は、5タプルをロードするための擬似コードを提供する。   Either the network adapter device driver 130 or the low level network protocol 132 or both are initialized and executed by the filter loader 120. Execution pseudo code for the sample filter loader 120 is provided in Table 3 and Table 4 below. Table 3 provides pseudo code for loading the procedure table, and Table 4 provides pseudo code for loading the 5-tuple.

フィルタ文の処理
/*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 adapter device driver 130 or the low level network protocol 132 or both are initialized and executed by the filter loader 120. Execution pseudo code for the sample filter loader 120 is provided below in Tables 3 and 4. Table 3 provides pseudo code for loading the procedure table, and Table 4 provides pseudo code for loading the 5-tuple.

ロード手順テーブル
/*手順インデックスをロードおよび分解する*/
ロード手順関数ライブラリ;
手順ファイルを読み込む;
手順テーブルをフィルタインタープリタにロードする;
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 filter loader 120 also allows the filter interpreter 134 to load the 5-tuple rule 122 and the procedure table 124. The 5-tuple 122, once loaded, allows a network packet to enter the system via a device driver 130 to one or more network adapters (not shown) and away from it to one or more network adapters. Can be used by the filter interpreter 134. Pseudo code that implements the process by which 5 tuples can be interpreted by the filter interpreter 134 is provided in Table 5 below.
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 device driver code 130 so that it can typically operate with a certain set of commands, and a device with a given data structure uses a different set of commands and a different data structure. The network adapter can be effectively and efficiently communicated. The device driver code 130 always translates device commands and data structures into commands and data structures used by the network adapter (and vice versa). In most embodiments, the device driver code serves as an interface between a network adapter or other peripheral device attached to or incorporated in the device and the operating system that runs on the device. Data or commands received from or destined for the peripheral device (collectively “data”) are routed through the device driver so that the data can be converted to the required format. Although the above description details the use of explicit device driver code, it is important that the device interface with the network adapter even in such an environment where the device does not explicitly support the use of the device driver. It will be apparent to those skilled in the art that the enabling software or hardware is functionally equivalent to a device driver and can be replaced with a device driver without departing from the spirit or scope of the present invention.

現在では、フィルタインタープリタ134は、可能な限り、プロトコルスタック上で低く、ネットワークアダプタに近くで、実施されることが好適である。図1は、デバイスドライバコード130および低レベルネットワークプロトコルソフトウェア132に関して、本発明の一つの可能な実施形態を例示する。この実施形態において、フィルタインタープリタ134は、デバイスドライバコード130を介して1以上のネットワークアダプタと通信できる。図2に示された別の実施形態において、フィルタインタープリタ134は、低レベルネットワークプロトコルソフトウェア132を介して、1以上のネットワークアダプタと通信する。   Currently, the filter interpreter 134 is preferably implemented as low as possible on the protocol stack and as close to the network adapter as possible. FIG. 1 illustrates one possible embodiment of the present invention with respect to device driver code 130 and low level network protocol software 132. In this embodiment, the filter interpreter 134 can communicate with one or more network adapters via the device driver code 130. In another embodiment shown in FIG. 2, filter interpreter 134 communicates with one or more network adapters via low-level network protocol software 132.

図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 filter interpreter 134 routes any incoming packet to a low level network protocol 132 or higher level network such as TCP, UDP, NetBios, SPX, Bluetooth and others. Prior to passing to protocol 136, the filter rules shown as 5-tuple 122 and the procedure illustrated as procedure table and procedure function 124 are performed. Further, the embodiment illustrated in FIGS. 2 and 3 implements filter rules and procedures before the filter interpreter 134 passes any outgoing packets to the device driver code 130 or the low-level network protocol 132. Make it possible. In yet another embodiment, the filter interpreter 134 may block incoming network packets at one protocol stack level, preferably at a higher level, preferably near the network adapter, while outgoing packets. Is blocked to another protocol stack level. While the above description has focused primarily on implementing the filter interpreter 134 as close to the network adapter as possible, the filter interpreter 134 may be implemented in different ways without departing from the spirit or scope of the present invention. Can be implemented at the level.

図3は、ネットワークまたはシステムアドミニストレータによって入力され、フィルタコンパイラ102によって受信されるサンプルフィルタ規則文100を例示する。三つの実施例規則140、142および144が示される。最初の二つの、規則140および142は、明示的にシステムアドミニストレータによって入力された規則である。好適な実施形態において、最後の、「デフォルト否定」規則とも呼ばれる規則144は、フィルタコンパイラ102により、自動的に、生成される。あるいは、システムアドミニストレータ、ネットワークアドミニストレータまたは他のユーザが規則を入力することを可能にするユーザインターフェースは、ユーザが、「デフォルト否定」規則の包含がイネーブルまたはディセーブルすることを可能にする。このような包含がディセーブルにされると、「デフォルト許可」規則が置き換えられ得る。「デフォルト否定」規則が用いられる場合、フィルタ規則146を秩序化する好適なアプローチは、所望の、または、望ましいネットワークトラフィックが続行することを可能にする規則を書き込むことである。パケットが続行することを明示的に可能にするいくつかの規則(規則140および142等)にマッチングしない任意のパケットは、デフォルト否定規則144によって捨てられる。   FIG. 3 illustrates a sample filter rule statement 100 entered by a network or system administrator and received by the filter compiler 102. Three example rules 140, 142 and 144 are shown. The first two rules 140 and 142 are rules that have been explicitly entered by the system administrator. In the preferred embodiment, the last rule 144, also called the “default negation” rule, is automatically generated by the filter compiler 102. Alternatively, a user interface that allows a system administrator, network administrator or other user to enter rules allows the user to enable or disable the inclusion of “default deny” rules. When such inclusion is disabled, the “Default Allow” rule can be replaced. When the “default negation” rule is used, the preferred approach to ordering the filter rule 146 is to write a rule that allows the desired or desired network traffic to continue. Any packet that does not match some rules that explicitly allow the packet to continue (such as rules 140 and 142) is discarded by the default negation rule 144.

フィルタセット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 rule 140 of the filter set fs1 (Filter Set fs1) is: Procedure = Allow 150, Direction of the selector = * 152 ( * means “arbitrary”), Source address Source Addr = * 154, Destination address Dest Addr = * 156 and protocol Protocol = TCP158. The rule 142 of the filter set fs1 (Filter Set fs1) includes Procedure = Allow and Log 160, and Direction of the selector = * 162, source address SourceAddr = * 164, Dest Addr = * 166 and protocol Protocol = UCP168, port Port = (161, 162) 170 and destination port Dest Port = (161, 162) 172 are included. The n-rule 144 includes Procedure = Deny 180, selector Direction = * 182, Source Addr = * 184, Dest Addr = * 186 and protocol Protocol = TCP188. Although the example illustrated in FIG. 3 refers to specific field names, such field names are arbitrary and any or all fields or other transmitted with the packet orientation protocol supported by the device Those skilled in the art will appreciate that similar information may be included.

規則140、142および144は、それぞれのパケットについて上から下へと論理的に処理される。したがって、パケットが所与の規則に記載された局面全てを満足させる場
合、適切な手順関数は、規則(図2のブロック150、160または180)に特定化されたように、呼び出される。例として、本発明を限定することを意図することなく、規則140については、Procedure=Allow 150が、パケットが続行可能にする「Allow手順関数を呼び出す」として解釈され得る。所与のパケットが第1の規則140にマッチングしない場合、パケットが次の規則142に対して調べられる。このプロセスは、最後の規則144まで繰り返す。用いられると、デフォルト否定規則144は、任意のパケットにマッチングし、パケットが否定手順関数によって処理され、捨てられる(すなわち続行することが可能とされない)ことを意味するProcedure=Deny 180を呼び出すように構成される。
Rules 140, 142 and 144 are logically processed from top to bottom for each packet. Thus, if the packet satisfies all aspects described in a given rule, the appropriate procedural function is invoked as specified in the rule (block 150, 160 or 180 in FIG. 2). By way of example, without intending to limit the present invention, for rule 140, Procedure = Allow 150 may be interpreted as “call an Allow procedure function” that allows the packet to continue. If a given packet does not match the first rule 140, the packet is examined against the next rule 142. This process repeats until the last rule 144. When used, the default negation rule 144 matches any packet and calls Procedure = Deny 180 which means that the packet is processed by the negation procedure function and discarded (ie not allowed to continue). Composed.

図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 first filter rule 140 allows all TCP / IP datagrams from any source to any destination. The second filter rule 142 allows UDP traffic if the source or destination port is 161 or 162. These are well-known ports for SNMP (Simple Network Management Protocol). The filter set name (“fs1”) is used at the beginning of the rule set via the NETWORK__INTERFACE statement to associate the filter rule set with a particular network adapter. For this sentence, one or more filter sets are associated with one or more network adapters. In the preferred embodiment, only the filter set associated with a network adapter is loaded into that network adapter by a filter loader. This means that each network adapter must have its own filter loader with its own separate copy of the file rules. While this increases the overall storage requirements, the implementation of a suitable binary rule produces a rule set that is small enough so as not to generally impose significant storage requirements on the device. Although the use of separate filter loaders and filter rules for each network adapter are currently preferred, the number of filter rules and filter loaders in memory at any time can be used without departing from the spirit or scope of the present invention. It will be apparent to those skilled in the art that this can be reduced through various techniques.

図4を参照すると、それぞれの5タプルの論理構造が長さ(length)200、手順インデックス202、規則オフセット204、データオフセット206および値208を含む。長さ200は、実行されるべき比較する長さ(例えば一つのオクテット(octet)、二つのオクテット等)を表示する。長さ200はまた、値208と比較されるべきオクテットのビット、例えばフラグビットを示し得る。   Referring to FIG. 4, each 5-tuple logical structure includes a length 200, a procedure index 202, a rule offset 204, a data offset 206 and a value 208. Length 200 displays the length to be compared (eg, one octet, two octets, etc.) to be performed. The length 200 may also indicate an octet bit to be compared with the value 208, eg, a flag bit.

手順インデックス202は、比較が真である場合に実行されることになる手順テーブル関数を指す手順テーブルエントリについてのインデックス、またはポインタである。以下のテーブル6は、手順関数を実施するサンプル擬似コードを提供する。   Procedure index 202 is an index or pointer to a procedure table entry that points to a procedure table function that will be executed if the comparison is true. Table 6 below provides sample pseudo code that implements a procedural function.

Figure 0004262284
テーブル6
テーブル6が示すように、全ての手順は、本発明の好適な実施形態において、パケットを許可し(Allow)、否定し(Deny)、または拒絶する(Reject)ためにアクションコードを戻す。さらなるアクションコードおよび特定のパケット処理手順は、容易に、このスキームで実施される。好適な実施形態において、このようなさらなるパケット処理手順は、限定されるわけではないが、記録、サニタイジング(sanitizing)およびこれらの組み合わせを含み得る。好適な実施形態にて実施されるこのような手順の特定リストが、図5のパケット処理手順340〜348により、例示される。組み合わせ手順の例として、手順が規則の手順要素のDENY_AND_LOGである場合、フィルタリング処理の直接のユーザ可視性を提供するログエントリが作成され、パケットが否定される。
Figure 0004262284
Table 6
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 ?, operand 2". Operand 1 is obtained from the packet data at data offset 206, and operand 2 is a 5-tuple element value 208. "Equal?" Says a test for equality. The 5-tuple can display expressions such as “number of source ports, equal ?, number of test ports”. Although an equality test is used as part of the preferred embodiment of the present invention, it will be apparent to those skilled in the art that other mathematical tests can be substituted without departing from the spirit or scope of the present invention.

図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 tuples 220, 224, 226, 230, 232, 234 and 240 corresponding to the three filter rules 140, 142 and 144 of FIG. Table 7 presents another display of these five tuples. “NEXT +” refers to a set NEXT flag that is ANDed with a rule offset. Referring to FIG. 5, it corresponds to the NEXT flag in which “N” in blocks 274, 284, 294 and 304 is set.

Figure 0004262284
テーブル7
全ての5タプルは、いくつかがヌル(バイナリ0)であり得るか、いくつかの他の未使用の値であり得る5つの要素を有する。
Figure 0004262284
Table 7
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 procedure table entry 340 in FIG. 5, procedure index 2 corresponds to procedure index 312 and procedure table entry 342 in FIG. This corresponds to the procedure index 322 and the procedure table entry 342 in FIG.

もちろん、5タプルの直接メモリ内形式は、’’)’’または’’を含まず、’’は、個別の線上にあり、バイナリデータのTS8ビットオクテットである。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-tuple 220 for packet data matching the value 258, the independent variables for function Allow 340 are 220 (ie, a pointer to 5 tuple 220) and a pointer to the packet (not shown). including. It will be appreciated that additional independent variables or other independent variables may be provided without departing from the spirit or scope of the present invention. This architecture extends procedural function processing options, simplifies the use of the above functions 340-348 by the filter interpreter 134 of FIG. 1, and keeps the filter interpreter small.

図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-tuple 234 are followed by any additional number of 5-tuples, indicating that these ellipsis correspond to the ellipsis under rule 142 of FIG. Thus, in FIG. 5, a 5-tuple display is provided for all rules shown in FIG. The correspondence between the filter statements 140, 142 and 144 and the 5-tuple of FIG. 5 is as follows. 142 corresponds to 224, 226, 230, 232, 234. 144 is 2
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 values 9, 20, and 22 of the 5-tuple offset elements 256, 286, and 306, respectively, are octet data offsets into the IP datagram where the appropriate field is found. 9 corresponds (offset) to the protocol field of the IP diagram. Similarly, 20 corresponds to the IP source port, and 22 corresponds to the IP destination port. The 5-tuple value elements (blocks 258, 278, 288, 298, 308 and 318) are 6 (TCP), 20 (UDP), etc.

図5では、ボックス348はまた、さらなる、任意の手順関数が続くことを示す。手順テーブル260のサイズまたは手順関数の数は限定されない。   In FIG. 5, box 348 also indicates that an additional optional procedural function follows. The size of the procedure table 260 or the number of procedure functions is not limited.

本発明が、詳細に、本発明の特定の実施形態を参考にして説明されてきた一方、様々な変化および変更は、本発明の精神および範囲から逸脱することなく、なされ得ることが当業者には明らかである。したがって、本発明が特許請求の範囲およびそれらの均等物の範囲内にある場合、本発明がこの発明の変更および改変を含むことが意図される。   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.

図1は、好適なデータフローを例示するフローチャートである。FIG. 1 is a flowchart illustrating a preferred data flow. 図2は、好適なデータフローを例示するフローチャートである。FIG. 2 is a flowchart illustrating a preferred data flow. 図3は、サンプルフィルタ規則のセットである。FIG. 3 is a set of sample filter rules. 図4は、本発明の好適な実施形態にしたがって、5タプルのフォーマットを例示するブロック図である。FIG. 4 is a block diagram illustrating a 5-tuple format according to a preferred embodiment of the present invention. 図5は、本発明の好適な実施形態にしたがって、図1のロードするステップに続く点にて、図1の実施例セットについて、5タプルの論理構造を例示するブロック図である。FIG. 5 is a block diagram illustrating a five-tuple logical structure for the example set of FIG. 1 at the point following the loading step of FIG. 1, in accordance with a preferred embodiment of the present invention.

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:
ネットワークアダプタデバイスドライバ(130)と低レベルのネットワークプロトコル(132)との間で前記パケットが転送されている場合に、前記実行するステップが起こる、請求項1に記載の方法。   The method of claim 1, wherein the performing step occurs when the packet is being transferred between a network adapter device driver (130) and a low level network protocol (132). 低レベルのネットワークプロトコル(132)と高レベルのネットワークプロトコル(136)との間で前記パケットが転送されている場合に、前記実行するステップが起こる、請求項1に記載の方法。   The method of claim 1, wherein the performing step occurs when the packet is being transferred between a low level network protocol (132) and a high level network protocol (136). 前記比較は、双方が等しいか否かの比較を含む、請求項1に記載の方法。   The method of claim 1, wherein the comparison includes a comparison of whether both are equal. 前記フィルタ文書(100、220〜240)は、シーケンス(146)に配置された複数のフィルタ文書(100、220〜240)のうちの1つであり、前記方法は、
(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.
(5)前記シーケンス(146)における最後のフィルタ文書(100、220〜240)を前記第1の論理回路によって自動的に生成するステップをさらに包含する、請求項5に記載の方法。   6. The method of claim 5, further comprising the step of automatically generating the last filter document (100, 220-240) in the sequence (146) by the first logic circuit. 前記後続するフィルタ文書(198、220、224、226、230、232、234、240)は、前記フィルタ文書(198、220、224、226、230、232、234、240)の規則オフセットフィールド(204、254、274、284、294、304、314)の規則オフセット変数によって識別される、請求項5に記載の方法。   The subsequent filter document (198, 220, 224, 226, 230, 232, 234, 240) is stored in the rule offset field (204) of the filter document (198, 220, 224, 226, 230, 232, 234, 240). 254, 274, 284, 294, 304, 314). 前記規則オフセット変数(204、254、274、284、294、304、314)は、所定の数である、請求項7に記載の方法。   The method of claim 7, wherein the rule offset variable (204, 254, 274, 284, 294, 304, 314) is a predetermined number. 前記規則オフセット変数(204、254、274、284、294、304、314)は、前記フィルタ文書(100、220〜240)におけるバイトの総数である、請求項7に記載の方法。   The method of claim 7, wherein the rule offset variable (204, 254, 274, 284, 294, 304, 314) is the total number of bytes in the filter document (100, 220-240). 前記所定の手順機能(124、340〜348)は、前記フィルタ文書(198、220、224、226、230、232、234、240)の対応する手順インデックスフィールド(202、252、272、282、292、302、312、322)の手順インデックスによって識別される、請求項1に記載の方法。   The predetermined procedural function (124, 340-348) is associated with a corresponding procedural index field (202, 252, 272, 282, 292) of the filter document (198, 220, 224, 226, 230, 232, 234, 240). , 302, 312, 322). ネットワークインターフェースにおいてパケットをフィルタリングするシステムであって、該システムは、
フィルタ文書(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
ネットワークアダプタデバイスドライバ(130)と低レベルのネットワークプロトコル(132)との間で前記パケットが転送されている場合に、前記第2の論理回路は、前記比較を実行するようにさらに構成されている、請求項11に記載のシステム。   The second logic circuit is further configured to perform the comparison when the packet is being transferred between a network adapter device driver (130) and a low level network protocol (132). The system according to claim 11. 低レベルのネットワークプロトコル(132)と高レベルのネットワークプロトコル(136)との間で前記パケットが転送されている場合に、前記第2の論理回路は、前記比較を実行するようにさらに構成されている、請求項11に記載のシステム。   The second logic circuit is further configured to perform the comparison when the packet is being transferred between a low level network protocol (132) and a high level network protocol (136). The system according to claim 11. 前記比較は、双方が等しいか否かの比較を含む、請求項11に記載のシステム。   The system of claim 11, wherein the comparison includes a comparison of whether both are equal. 前記フィルタ文書(100、220〜240)は、シーケンス(146)に配置された複数のフィルタ文書(100、220〜240)のうちの1つであり、
前記比較が偽である場合には、前記第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の論理回路は、前記シーケンス(146)における最後のフィルタ文書(100、220〜240)を生成するようにさらに構成されている、請求項15に記載のシステム。 16. The system of claim 15 , wherein the first logic circuit is further configured to generate a last filter document (100, 220-240) in the sequence (146). 前記後続するフィルタ文書(100、220〜240)は、フィルタ文書の規則オフセットフィールド(204、254、274、284、294、304、314)の規則オフセット変数によって識別される、請求項15に記載のシステム。 The subsequent filter document (100,220~240) is identified by the rule offset variable rules offset field of the filter document (204,254,274,284,294,304,314) of claim 15 system. 前記規則オフセット変数(204、254、274、284、294、304、314)は、所定の数である、請求項17に記載のシステム。   18. The system of claim 17, wherein the rule offset variable (204, 254, 274, 284, 294, 304, 314) is a predetermined number. 前記規則オフセット変数(204、254、274、284、294、304、314)は、前記フィルタ文書(100、220〜240)におけるバイトの総数である、請求項17に記載のシステム。   18. The system of claim 17, wherein the rule offset variable (204, 254, 274, 284, 294, 304, 314) is the total number of bytes in the filter document (100, 220-240). 前記所定の手順機能(124、340〜348)は、前記フィルタ文書(198、220、224、226、230、232、234、240)の対応する手順インデックスフィールド(202、252、272、282、292、302、312、322)の手順インデックスによって識別される、請求項11に記載のシステム。   The predetermined procedural function (124, 340-348) is associated with a corresponding procedural index field (202, 252, 272, 282, 292) of the filter document (198, 220, 224, 226, 230, 232, 234, 240). , 302, 312, 322). (4)第4の論理回路が起動されたときの単一期間中に、所定の手順文書(100、108)と前記フィルタ文書(100、140〜144)とを処理することにより、該手順文書(100、108)が、手順インデックスを有するテーブルフォーマット(124、260)と前記手順機能(124、340〜348)とを有し、該フィルタ文書(100、140〜144)が、対応する手順インデックス(202、252、272、282、292、302、312、322)を有する5タプルのフォーマット(122、198、220〜240)を有するステップをさらに包含する、請求項7に記載の方法。   (4) By processing a predetermined procedure document (100, 108) and the filter document (100, 140-144) during a single period when the fourth logic circuit is activated, the procedure document (100, 108) has a table format (124, 260) having a procedure index and the procedure function (124, 340-348), and the filter document (100, 140-144) has a corresponding procedure index. 8. The method of claim 7, further comprising the step of having a 5-tuple format (122, 198, 220-240) having (202, 252, 272, 282, 292, 302, 312, 322). 前記所定の手順機能は、前記パケットのコンテンツを変更するように構成されている機能を含む、請求項1に記載の方法。   The method of claim 1, wherein the predetermined procedural function comprises a function configured to change a content of the packet. 前記規則オフセット変数(204、254、274、284、294、304、314)は、条件が偽である場合には、所定の数であり、該条件が真である場合には、該フィルタ文書(100、220〜240)におけるバイトの総数に等しい、請求項7に記載の方法。   The rule offset variable (204, 254, 274, 284, 294, 304, 314) is a predetermined number if the condition is false, and if the condition is true, the filter document ( 100. 220. The method of claim 7 equal to the total number of bytes in 220-240). 第4の論理回路をさらに備えており、該第4の論理回路は、該第4の論理回路が起動されたときの単一期間中に、手順文書(100、108)と前記フィルタ文書(100、140〜144)とを処理することにより、該手順文書(100、108)が、手順インデックスを有するテーブルフォーマット(124、260)と前記手順機能(124、340〜348)とを有し、該フィルタ文書(100、140〜144)が、対応する手順インデックス(202、252、272、282、292、302、312、322)を有する5タプルのフォーマット(122、198、220〜240)を有する、請求項15に記載のシステム。   A fourth logic circuit, wherein the fourth logic circuit is a procedural document (100, 108) and the filter document (100) during a single period when the fourth logic circuit is activated. 140-144), the procedure document (100, 108) has a table format (124, 260) having a procedure index and the procedure function (124, 340-348), The filter document (100, 140-144) has a 5-tuple format (122, 198, 220-240) with a corresponding procedure index (202, 252, 272, 282, 292, 302, 312, 322), The system according to claim 15. 前記所定の手順機能は、前記パケットのコンテンツを変更するように構成されている機能を含む、請求項11に記載のシステム。   The system of claim 11, wherein the predetermined procedural function includes a function configured to change a content of the packet. 前記規則オフセット変数(204、254、274、284、294、304、314)は、条件が偽である場合には、所定の数であり、該条件が真である場合には、該フィルタ文書(100、220〜240)におけるバイトの総数に等しい、請求項17に記載のシステム。   The rule offset variable (204, 254, 274, 284, 294, 304, 314) is a predetermined number if the condition is false, and if the condition is true, the filter document ( The system of claim 17, equal to the total number of bytes in 100, 220-240). 前記フィルタ文書は、規則オフセットフィールドをさらに含み、該規則オフセットフィールドは、次のフラグを含み、
前記実行するステップは、
前記パケットへのポインタを取得することと、
該フィルタ文書へのタプルポインタを取得することと、
ループ終了フラグを偽に設定することと、
該タプルポインタによって指された該フィルタ文書の長さフィールドがゼロの場合には、第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.
前記第1の手順は、
前記タプルポインタによって指定された前記フィルタ文書の手順インデックスに対する前記手順機能を呼び出すことと、
該タプルポインタおよびパケットポインタを該手順機能にパラメータとしてわたすことと、
前記ループ終了フラグを真に設定することと
を含む、請求項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.
前記第2の手順は、
前記パケットポインタの値に、前記タプルポインタによって指定された前記フィルタ文書のデータオフセットフィールドのデータオフセット値を加算することによって、前記開始位置を計算することと、
該パケットポインタの値に、該タプルポインタによって指定された該フィルタ文書のデータオフセットフィールドのデータオフセット値および該タプルポインタによって指定された該フィルタ文書によって指された前記長さフィールドの長さ値と加算することによって、前記終了位置を計算することと、
該開始位置において始まり、該終了位置において終了するように、パケットデータの部分と該タプルポインタによって指定された該フィルタ文書の値フィールドとを比較することと、
該パケットデータの比較が真を戻す場合には、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、次のフィルタ文書と論理積の関係を示す場合には、該タプルポインタが該次のフィルタ文書を指すようにすること、または、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と論理和の関係を示す場合には、該タプルポインタによって指定された該フィルタ文書の手順インデックスに対応する該手順機能を呼び出し、該タプルポインタおよび該パケットポインタを該手順機能にパラメータとしてわたすこと、または、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書との関係の欠如を示す場合には、該タプルポインタによって指定された該フィルタ文書の手順インデックスに対応する該手順機能を呼び出し、該タプルポインタおよび前記パケットポインタを該手順機能にパラメータとしてわたすこと
を実行することと、
該パケットデータの比較が偽を戻す場合には、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と論理積の関係を示す場合には、該タプルポインタが次の規則におけるフィルタ文書を指すようにすること、または
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書との関係の欠如を示す場合には、該タプルポインタが該次の規則における該フィルタ文書を指すようにすること、または
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と該論理和の関係を示す場合には、該タプルポインタが該次のフィルタ文書を指すようにすること
を実行することと
を含む、請求項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.
前記第1の手順は、
前記タプルポインタによって指定された前記フィルタ文書の手順インデックスに対する前記手順機能を呼び出すことと、
該タプルポインタおよびパケットポインタを該手順機能にパラメータとしてわたすことと、
前記ループ終了フラグを真に設定することと
を含む、請求項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.
前記第2の手順は、
前記パケットポインタの値に、前記タプルポインタによって指定された前記フィルタ文書のデータオフセットフィールドのデータオフセット値を加算することによって、前記開始位置を計算することと、
該パケットポインタの値に、該タプルポインタによって指定された該フィルタ文書のデータオフセットフィールドのデータオフセット値および該タプルポインタによって指定された該フィルタ文書によって指された前記長さフィールドの長さ値を加算することによって、前記終了位置を計算することと、
該開始位置において始まり、該終了位置において終了するように、パケットデータの部分と該タプルポインタによって指定された該フィルタ文書の値フィールドとを比較することと、
該パケットデータの比較が真を戻す場合には、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、次のフィルタ文書と論理積の関係を示す場合には、該タプルポインタが該次のフィルタ文書を指すようにすること、または、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と論理和の関係を示す場合には、該タプルポインタによって指定された該フィルタ文書の手順インデックスに対応する該手順機能を呼び出し、該タプルポインタおよび該パケットポインタを該手順機能にパラメータとしてわたすこと、または、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書との関係の欠如を示す場合には、該タプルポインタによって指定された該フィルタ文書の手順インデックスに対応する該手順機能を呼び出し、該タプルポインタおよび該パケットポインタを該手順機能にパラメータとしてわたすこと
を実行することと、
該パケットデータの比較が偽を戻す場合、
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と論理積の関係を示す場合には、該タプルポインタが次の規則におけるフィルタ文書を指すようにすること、または
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書との関係の欠如を示す場合には、該タプルポインタが該次の規則における該フィルタ文書を指すようにすること、または
該タプルポインタによって指定された該フィルタ文書の次のフラグおよび手順インデックスが、該次のフィルタ文書と該論理和の関係を示す場合には、該タプルポインタが該次のフィルタ文書を指すようにすること
を実行すること
を含む、請求項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:
JP2007151035A 2001-06-11 2007-06-06 Packet filtering system and method Expired - Fee Related JP4262284B2 (en)

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)

Also Published As

Publication number Publication date
JP2004535714A (en) 2004-11-25
JP2007325281A (en) 2007-12-13

Similar Documents

Publication Publication Date Title
US6963913B2 (en) Packet filtering system and methods
US6301669B2 (en) System and method for very fast IP packet filtering
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
US20030231632A1 (en) Method and system for packet-level routing
US8543528B2 (en) Exploitation of transition rule sharing based on short state tags to improve the storage efficiency
WO2006074018A2 (en) Template access control lists
US20080101222A1 (en) Lightweight, Time/Space Efficient Packet Filtering
US8873527B2 (en) System and method for managing routers and communication interfaces on a computing device
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
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
CN112291212A (en) Static rule management method and device, electronic equipment and storage medium
JP2006067279A (en) Intrusion detection system and communication equipment
US10965647B2 (en) Efficient matching of feature-rich security policy with dynamic content
CN109672665A (en) A kind of access control method, device, system and computer readable storage medium
CN115499358A (en) SRv6-TE message forwarding method and forwarding equipment
Moungla et al. Conflict detection and resolution in QoS policy based management
CN117579386A (en) Network traffic safety control method, device and storage medium
CN117896182A (en) Linux network communication security management and control method, device and storage medium

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