JP6652070B2 - Data processing device, information entry management method, and information entry management program - Google Patents

Data processing device, information entry management method, and information entry management program Download PDF

Info

Publication number
JP6652070B2
JP6652070B2 JP2016573232A JP2016573232A JP6652070B2 JP 6652070 B2 JP6652070 B2 JP 6652070B2 JP 2016573232 A JP2016573232 A JP 2016573232A JP 2016573232 A JP2016573232 A JP 2016573232A JP 6652070 B2 JP6652070 B2 JP 6652070B2
Authority
JP
Japan
Prior art keywords
search
information
node
search tree
information entry
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.)
Active
Application number
JP2016573232A
Other languages
Japanese (ja)
Other versions
JPWO2016125501A1 (en
Inventor
義和 渡邊
義和 渡邊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2016125501A1 publication Critical patent/JPWO2016125501A1/en
Application granted granted Critical
Publication of JP6652070B2 publication Critical patent/JP6652070B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Description

本発明は、データ処理装置、情報エントリ管理方法および情報エントリ管理プログラムに関し、特に、データ処理の一例として、受信したパケットを処理するデータ処理装置、情報エントリ管理方法および情報エントリ管理プログラムに関する。   The present invention relates to a data processing device, an information entry management method, and an information entry management program, and more particularly, to a data processing device that processes a received packet, an information entry management method, and an information entry management program as an example of data processing.

イーサネット(Ethernet)(登録商標)スイッチやルータ、オープンフロー(OpenFlow)スイッチのように、一定のルールにしたがってパケットを転送したり破棄したりするパケット処理装置は、パケットを受信し処理する場合、一般的に以下のような処理を実行する。   A packet processing device, such as an Ethernet (registered trademark) switch, a router, or an OpenFlow (OpenFlow) switch, that transfers or discards a packet according to a certain rule generally receives and processes the packet. The following processing is executed.

(1)まず、パケットを通信インタフェースから受信する。   (1) First, a packet is received from a communication interface.

(2)次に、受信したパケットを処理するために必要な情報を検索する。   (2) Next, information necessary to process the received packet is searched.

(3)最後に、検索した当該情報に基づき、受信した当該パケットを処理する。   (3) Finally, the received packet is processed based on the retrieved information.

上記(2)の処理は、一般に、パケット分類分け(Packet Classification)とも呼ばれ、あらかじめ与えられたルールセットの中から受信パケットに適合する最高優先度のルールを探索する処理である。当該ルールは、マッチ条件(例えば適合するアドレスの範囲)と、当該マッチ条件に適合したパケットに対して実行される処理であるアクションとから構成される。また、当該ルールには優先度や統計情報が含まれる場合もある。   The process (2) is generally referred to as packet classification, and is a process of searching for a rule with the highest priority suitable for a received packet from a given rule set. The rule includes a match condition (for example, a range of addresses that match) and an action that is a process executed on a packet that matches the match condition. In addition, the rule may include priority and statistical information.

ここで、探索木を用いたパケット分類分け(Packet Classification)方式に関する技術が非特許文献1(Balajee Vamananらによる“EffiCuts: Optimizing Packet Classification for Memory and Throughput”(Proceedings of the ACM SIGCOMM 2010))に開示されている。該非特許文献1に記載の技術は、dフィールドのルール探索問題をd次元空間内の部分空間探索問題として扱う。該非特許文献1に記載の技術は、探索木を辿るたびに探索空間をカットして探索領域を狭めていくことによって、受信パケットに適合するルールを見つけ出すという技術である。   Here, a technique relating to a packet classification method using a search tree is described in Non-patent Document 1 (“EffiCuts: Optimizing Packet Classification for Memory and Throwing Comm. Have been. The technique described in Non-Patent Document 1 treats a rule search problem of d fields as a subspace search problem in a d-dimensional space. The technique described in Non-Patent Document 1 is a technique for finding a rule that matches a received packet by cutting a search space and narrowing a search area every time a search tree is traced.

ここで、探索木を構成するノードは、d次元空間の部分空間を表し、ルートノードは、d次元空間において採り得る全領域(初期探索領域)を表す。各ルールは、それぞれのルールが表すd次元部分空間と重複する部分空間を有する全てのノードに関連付けられる。或るノードに関連付けられる(含まれる)ルールの数が、あらかじめ定めた一定数(Binth)より多い場合、当該ノードは1つまたは複数の次元においてカット(Cut)され、子ノードが作成される(つまり、当該ノードは中間ノードである)。一方、或るノードに関連付けられる(含まれる)ルールの数が、一定数(Binth)以下の場合、当該ノードはリーフ(葉)ノードとなる。   Here, the nodes constituting the search tree represent a subspace of the d-dimensional space, and the root node represents the entire possible area (initial search area) in the d-dimensional space. Each rule is associated with every node that has a subspace that overlaps the d-dimensional subspace that each rule represents. If the number of rules associated with (included in) a node is greater than a predetermined fixed number (Binth), the node is cut in one or more dimensions to create a child node ( That is, the node is an intermediate node). On the other hand, when the number of rules associated with (included in) a certain node is equal to or smaller than a certain number (Binth), the node becomes a leaf node.

探索木を用いた探索処理の例を図23〜図25を用いて説明する。図23は、ルールセットの一例を示す模式図である。図23に示す例は、2フィールド(次元Xおよび次元Y)のルール探索を想定し、次元Xおよび次元Yの採り得る範囲が、それぞれ、0〜255および0〜127である場合を示している。図23において、各矩形は、それぞれ、ルールR1〜R7のマッチ条件に対応する2次元部分空間を示している。矩形が重複している場合、矩形の全てが表示されているルールが、より高い優先度を持つものとする。   An example of a search process using a search tree will be described with reference to FIGS. FIG. 23 is a schematic diagram illustrating an example of a rule set. The example shown in FIG. 23 assumes a rule search of two fields (dimension X and dimension Y), and shows a case where the possible ranges of dimension X and dimension Y are 0 to 255 and 0 to 127, respectively. . In FIG. 23, each rectangle indicates a two-dimensional subspace corresponding to the matching conditions of rules R1 to R7. If the rectangles overlap, it is assumed that the rule in which all the rectangles are displayed has higher priority.

図24は、探索木の一例を示す模式図であり、図23に示したルールセットのルールR1〜R7からルール探索を行うための探索木の一例を示している(Binth=2の場合)。つまり、図24は、図23に示したルールセット例に関して、ルートノードにおいて、探索空間をX軸で4つの部分空間にカット(Cut)し、また、ノード1において、探索空間をY軸で2つの部分空間にカット(Cut)した例を示している。なお、図24において、楕円は中間ノードを示し、矩形はリーフノードを示している。   FIG. 24 is a schematic diagram illustrating an example of a search tree, and illustrates an example of a search tree for performing a rule search from rules R1 to R7 of the rule set illustrated in FIG. 23 (in the case of Binth = 2). In other words, FIG. 24 shows that, with respect to the example of the rule set shown in FIG. An example is shown in which the cut is made into two partial spaces. In FIG. 24, an ellipse indicates an intermediate node, and a rectangle indicates a leaf node.

図25は、探索木のノードに係る情報の一例を示す表であり、図24の探索木の各ノードが表す部分空間および各ノードが含むルールを示している。図25に示すように、ルートノードが表す部分空間は、探索空間全体である。これより、当該ルートノードが表す部分空間は、次元Xおよび次元Yそれぞれが0≦X≦255および0≦Y≦127の範囲であり、当該ルートノードに含まれるルールはR1〜R7である。また、リーフノード4については、ルートノードからリーフノード4に到達する過程において、探索空間がX軸で4つにカット(Cut)され、Y軸で2つにカット(Cut)されている。また、X軸およびY軸の各カット(Cut)におけるリーフノード4の位置は、それぞれ、第4番目および第1番目である。これより、当該リーフノード4が表す部分空間は、次元Xおよび次元Yそれぞれが192≦X≦255および0≦Y≦63の範囲であり、当該リーフノード4に含まれるルールはR5、R7である。   FIG. 25 is a table showing an example of information related to the nodes of the search tree, and shows a subspace represented by each node of the search tree in FIG. 24 and rules included in each node. As shown in FIG. 25, the subspace represented by the root node is the entire search space. Thus, the subspace represented by the root node has dimensions X and Y in the ranges of 0 ≦ X ≦ 255 and 0 ≦ Y ≦ 127, respectively, and the rules included in the root node are R1 to R7. In the process of arriving at the leaf node 4 from the root node, the search space is cut (Cut) into four on the X axis and cut (Cut) into two on the Y axis. The positions of the leaf nodes 4 at the X-axis and Y-axis cuts (Cut) are the fourth and first positions, respectively. Thus, the subspace represented by the leaf node 4 has dimensions X and Y in the range of 192 ≦ X ≦ 255 and 0 ≦ Y ≦ 63, respectively, and the rules included in the leaf node 4 are R5 and R7. .

ここで、例えば、XおよびYの値が、それぞれ、230および30であるパケットを受信した場合のルール探索処理の例について説明する。まず、パケット処理装置は、ルートノードを確認し、受信パケットのXの値が230であることから、4番目の部分空間を示すノード1(192≦X≦255)を選択する。次に、パケット処理装置は、ノード1を確認し、受信パケットのYの値が30であることから、第1番目の部分空間を示すリーフノード4(0≦Y≦63)を選択する。リーフノード4は、前述のように、ルールR5およびR7を含んでいる。パケット処理装置は、、これらのルールの中から、線形探索を行い、受信パケットに対応する最高優先度を持つルールとして例えばルールR7を発見する。   Here, for example, an example of the rule search process when packets having X and Y values of 230 and 30, respectively, will be described. First, the packet processing apparatus confirms the root node, and selects the node 1 (192 ≦ X ≦ 255) indicating the fourth subspace since the value of X of the received packet is 230. Next, the packet processing device checks the node 1 and selects the leaf node 4 (0 ≦ Y ≦ 63) indicating the first subspace because the value of Y of the received packet is 30. Leaf node 4 includes rules R5 and R7, as described above. The packet processing device performs a linear search from among these rules, and finds, for example, a rule R7 as a rule having the highest priority corresponding to the received packet.

以上の探索処理の説明においては、探索木が一つの場合を例示した。上記非特許文献1には、ルールの特徴を用いて分類することによってルールセットを複数のサブルールセットに分割し、サブルールセット毎に探索木を構築して、探索処理に使用する例が開示されている。サブルールセット毎に探索木を構築した場合、受信パケットに対するルール探索処理は、各サブルールセットの各探索木それぞれに対して実行され、得られた複数のルール(得られるルール数はサブルールセットの数と同じ)の中から最高優先度のルールが選択される。   In the above description of the search processing, the case where there is one search tree is illustrated. Non-Patent Document 1 discloses an example in which a rule set is divided into a plurality of sub-rule sets by classifying using a rule feature, a search tree is constructed for each sub-rule set, and the search tree is used for search processing. Have been. When a search tree is constructed for each sub-rule set, the rule search process for the received packet is executed for each search tree of each sub-rule set, and a plurality of obtained rules (the number of obtained rules is ), The rule with the highest priority is selected.

また、探索木を用いたルール探索処理の探索結果を記憶しておいて(キャッシュしておいて)、再利用することによって、探索性能を向上させる技術が、特許文献1(特開2000−41065号公報「データ検索回路」)に開示されている。該特許文献1に記載の技術においては、探索木による探索結果が、例えば、ハッシュテーブルとして実装されている、完全一致のキャッシュエントリ検索用テーブルに登録される。パケット受信時に、当該パケットに完全一致するキャッシュエントリがキャッシュエントリ検索用テーブルに存在する場合には、当該キャッシュエントリに記憶された探索木による探索結果が使用され、探索木を用いた探索処理は省略される。   Also, a technique for improving the search performance by storing (cached) a search result of a rule search process using a search tree and reusing it is disclosed in Japanese Patent Application Laid-Open No. 2000-41065. Publication "Data Search Circuit"). In the technique described in Patent Literature 1, a search result by a search tree is registered in, for example, a completely matching cache entry search table implemented as a hash table. If a cache entry that exactly matches the packet exists in the cache entry search table when the packet is received, the search result based on the search tree stored in the cache entry is used, and the search processing using the search tree is omitted. Is done.

ここで、探索結果がキャッシュエントリ検索用テーブルにキャッシュされて使用される構成において、ルールセットの変更(すなわち、探索木へのルールの追加、変更、削除)が行われた場合、キャッシュされている探索結果も適切に更新されなければならない。適切に更新されない場合には、受信したパケットは古いルールセットにおける探索結果にしたがって処理されることとなり、ルールによる通信処理・制御が正しく行なわれなくなる。   Here, in a configuration in which the search result is cached in the cache entry search table and used, when a rule set is changed (that is, a rule is added, changed, or deleted to the search tree), the cache is cached. Search results must also be updated appropriately. If it is not updated properly, the received packet will be processed according to the search result in the old rule set, and communication processing and control based on rules will not be performed correctly.

探索木(ルーティングテーブル)の変更に伴って、探索木による探索結果をキャッシュしていたキャッシュエントリを、キャッシュエントリ検索用テーブルから削除する場合の負荷を低減する技術が、特許文献2(特許第4646823号公報「ルータ装置、ルータ装置におけるルート決定方法」)に開示されている。該特許文献2に記載の技術においては、ルーティングテーブルに格納される、パケットの宛先アドレスと、ルートとの対応関係を表すルーティングエントリにカウンタ値が設けられ、ルーティングエントリが更新された際には、当該カウンタ値がインクリメントされる。   Patent Document 2 (Japanese Patent No. 4646823) discloses a technique for reducing the load of deleting a cache entry that has cached a search result by a search tree from a cache entry search table in accordance with a change in the search tree (routing table). Publication No. “Router device, route determination method in router device”). In the technique described in Patent Document 2, a counter value is provided in a routing entry stored in a routing table and indicating a correspondence between a destination address of a packet and a route, and when the routing entry is updated, The counter value is incremented.

そして、特許文献2に開示された装置は、パケットを受信し、当該パケットに対応するキャッシュエントリ(ルーティングテーブルの検索結果(すなわちルーティングエントリの情報)を含む)を使用して、当該パケットを処理する。この処理の際、該装置は、当該ルーティングエントリのカウンタ値を参照して、当該ルーティングエントリの更新の有無を判断する。該装置は、更新が検出された場合には、キャッシュエントリを削除する。これにより、該装置は、削除するキャッシュエントリを特定するための負荷を低減することができ、キャッシュエントリを削除する負荷を低減することができる。   Then, the device disclosed in Patent Document 2 receives a packet, and processes the packet using a cache entry (including a search result of a routing table (that is, information of a routing entry)) corresponding to the packet. . In this process, the device refers to the counter value of the routing entry to determine whether the routing entry has been updated. The device deletes the cache entry when an update is detected. As a result, the device can reduce the load for specifying the cache entry to be deleted, and can reduce the load for deleting the cache entry.

特開2000−41065号公報JP 2000-41065 A 特許第4646823号公報Japanese Patent No. 4646823

Balajee Vamanan、Gwendolyn Voskuilen and T.N. Vijaykumar;“EffiCuts: Optimizing Packet Classification for Memory and Throughput”、Proceedings of the ACM SIGCOMM 2010 conference、2010年、p.p.207−218Balajee Vamanan, Gwendolyn Voskuilen and T.W. N. Vijaykumar; "EffiCuts: Optimizing Packet Classification for Memory and Throughput", Proceedings of the ACM SIGCOMM 2010 conference, 2010. p. 207-218

以上のように、ルールセットをサブルールセットに分割し、サブルールセット毎に探索木を構築して探索に使用するパケット分類分け(Packet Classification)方式においても、探索結果をキャッシュして再利用することによって、処理性能の向上を期待することができる。一方、最新のルールセットに基づく通信処理・制御を行うためには、探索木群への変更に応じて、キャッシュされた情報も適切に更新される必要がある。   As described above, a rule set is divided into sub-rule sets, a search tree is constructed for each sub-rule set, and a search result is also cached and reused in a packet classification method used for search. As a result, improvement in processing performance can be expected. On the other hand, in order to perform communication processing and control based on the latest rule set, it is necessary to appropriately update cached information according to a change to a search tree group.

しかしながら、上記特許文献2に開示された技術は、単一の探索木を前提としたものである。該技術を、探索木が複数存在する場合に適用すると、パケットを受信する都度、全ての探索木それぞれについてカウンタ値を参照して、更新の有無を確認する処理が実行される。したがって、複数の探索木が存在する場合、パケット受信処理におけるデータ参照回数が増え、処理性能が悪化するという問題が発生する。かかる問題は、特に、CPU(Central Processing Unit)と、キャッシュメモリを含む階層メモリ構成を備えたメモリとからなるコンピュータにおいて上記のような処理が実行される場合に、より顕著となる。   However, the technique disclosed in Patent Document 2 is based on a single search tree. When the technique is applied to a case where a plurality of search trees exist, a process is performed each time a packet is received to check whether or not there is an update by referring to the counter value for each of all the search trees. Therefore, when there are a plurality of search trees, the number of data references in the packet reception processing increases, which causes a problem that the processing performance deteriorates. Such a problem becomes more remarkable when a computer including a CPU (Central Processing Unit) and a memory having a hierarchical memory configuration including a cache memory performs the above-described processing.

つまり、カウンタ値は、探索木のノード毎に存在し、各パケットは、典型的には、異なるノードに含まれるルールに適合される。このため、カウンタ値へのメモリアクセスは、メモリアドレス空間において離散的な領域(アドレス)に対して実行される。メモリアクセスが離散的な領域に対して実行される場合、キャッシュメモリによるメモリアクセス遅延隠蔽効果が得難くなる。これにより、パケットの処理に要する時間が長くなるという問題が、より顕著に発生する。   That is, a counter value exists for each node in the search tree, and each packet is typically adapted to rules contained in different nodes. For this reason, memory access to the counter value is executed for a discrete area (address) in the memory address space. When memory access is performed on discrete areas, it is difficult to obtain a memory access delay concealment effect of the cache memory. As a result, the problem that the time required for packet processing becomes longer occurs more remarkably.

[本発明の目的]
本発明は、かかる問題に鑑みてなされたものである。即ち、本発明は、データ処理(例えばパケット処理)に用いる情報エントリを探索する際に用いる探索木を複数有する場合であっても、情報エントリの探索に要する負荷を低減することができるデータ処理装置等を提供することを、主たる目的の一つとする。
[Object of the present invention]
The present invention has been made in view of such a problem. That is, the present invention provides a data processing apparatus capable of reducing the load required for searching for an information entry even when a plurality of search trees are used for searching for an information entry used for data processing (for example, packet processing). And the like is one of the main purposes.

前述の課題を解決するため、本発明の一態様に係るデータ処理装置等は、主に、次のような構成を採用している。   In order to solve the above-described problem, a data processing device or the like according to one embodiment of the present invention mainly employs the following configuration.

(1)本発明の一態様に係るデータ処理装置は、
処理対象とするデータを処理する方法を決定するための第1の情報エントリを、それぞれの適用対象とするデータ識別情報を含む第1の情報エントリの集合の中から1ないし複数の探索木を用いて探索し、探索した上記第1の情報エントリを用いて上記データを処理する場合において、各上記探索木を構成するノードである中間ノードおよびリーフノードを上記データ識別情報の探索空間に対応付けて探索した際に得られた上記探索木による上記第1の情報エントリの探索結果を第2の情報エントリとして記憶しておき、上記データを処理する際に、当該データに関する上記第2の情報エントリが記憶されていた場合、当該第2の情報エントリを使用して当該データを処理するデータ処理装置であって、
1ないし複数の上記探索木をグループ化し、各探索木グループにおけるベース探索木を選択する探索木初期化手段と、
上記探索木を構成する中間ノードおよびリーフノードの各ノードに関し、上記ノードの更新の履歴を示す更新履歴情報および当該探索木を構成するいずれかの上記ノードの更新の履歴を示す共有更新履歴情報を記憶する探索木記憶手段と、
上記第1の情報エントリの内容を操作した際に、当該第1の情報エントリの上記データ識別情報である操作対象データ識別情報と重複する探索空間に対応付けられた上記ノードの更新履歴情報を更新するとともに、当該ノードを含む上記探索木が属する上記探索木グループのベース探索木について上記操作対象データ識別情報と重複する探索空間に対応付けられた上記ノードの共有更新履歴情報を更新する更新手段と、
上記第2の情報エントリとして、上記探索木による上記第1の情報エントリの探索結果として得られる、各上記探索木における探索によって到達したノードを示すノード識別子と当該ノードの上記更新履歴情報および上記共有更新履歴情報とのキャッシュを記憶する情報エントリ記憶手段と、
上記第2の情報エントリを使用したデータ処理を行う際に、上記情報エントリ記憶手段に記憶された当該第2の情報エントリに関する上記ノードの上記共有更新履歴情報のキャッシュと当該ノードの最新の上記共有更新履歴情報とを、各上記ベース探索木について比較し、両者に不整合があった場合には、当該ノードを含む上記ベース探索木が属する上記探索木グループの各上記探索木について、上記情報エントリ記憶手段に記憶された当該第2の情報エントリに関する各上記ノードの上記更新履歴情報のキャッシュと各当該ノードの最新の上記更新履歴情報とを比較し、両者に不整合があった場合は、上記情報エントリ記憶手段に記憶された当該第2の情報エントリは無効であるものと判定する再評価手段と
を備える。
(1) A data processing device according to one embodiment of the present invention includes:
A first information entry for determining a method of processing data to be processed is determined by using one or a plurality of search trees from a set of first information entries each including data identification information to be applied. In the case where the data is processed using the searched first information entry, an intermediate node and a leaf node which are nodes constituting each search tree are associated with a search space of the data identification information. A search result of the first information entry by the search tree obtained at the time of the search is stored as a second information entry, and when the data is processed, the second information entry relating to the data is A data processing device that processes the data using the second information entry if the data is stored;
Search tree initialization means for grouping one or more of the search trees and selecting a base search tree in each search tree group;
For each of the intermediate nodes and leaf nodes constituting the search tree, update history information indicating the update history of the node and shared update history information indicating the update history of any of the nodes constituting the search tree Search tree storage means for storing;
When the content of the first information entry is operated, the update history information of the node associated with the search space overlapping with the operation target data identification information as the data identification information of the first information entry is updated. Updating means for updating the shared update history information of the node associated with the search space overlapping the operation target data identification information for the base search tree of the search tree group to which the search tree including the node belongs. ,
As the second information entry, a node identifier, which is obtained as a search result of the first information entry by the search tree and indicates a node reached by a search in each search tree, the update history information of the node, and the sharing Information entry storage means for storing a cache with update history information;
When performing data processing using the second information entry, the cache of the shared update history information of the node related to the second information entry stored in the information entry storage unit and the latest shared information of the node The update history information is compared for each of the base search trees, and when there is a mismatch between the two, the information entry for each of the search trees of the search tree group to which the base search tree including the node belongs belongs. The cache of the update history information of each of the nodes related to the second information entry stored in the storage unit is compared with the latest update history information of each of the nodes. Re-evaluation means for determining that the second information entry stored in the information entry storage means is invalid.

(2)本発明の一態様に係る情報エントリ管理方法は、
処理対象とするデータを処理する方法を決定するための第1の情報エントリを、それぞれの適用対象とするデータ識別情報を含む第1の情報エントリの集合の中から1ないし複数の探索木を用いて探索し、探索した上記第1の情報エントリを用いて上記データを処理する場合において、各上記探索木を構成するノードである中間ノードおよびリーフノードを上記データ識別情報の探索空間に対応付けて探索した際に得られた上記探索木による上記第1の情報エントリの探索結果を第2の情報エントリとして記憶しておき、上記データを処理する際に、当該データに関する上記第2の情報エントリが記憶されていた場合、当該第2の情報エントリを使用して当該データを処理する情報エントリ管理方法であって、 1ないし複数の上記探索木をグループ化し、各探索木グループにおけるベース探索木を選択し、
上記探索木を構成する中間ノードおよびリーフノードの各ノードに関し、上記ノードの更新の履歴を示す更新履歴情報および当該探索木を構成するいずれかの上記ノードの更新の履歴を示す共有更新履歴情報を記憶し、
上記第1の情報エントリの内容を操作した際に、当該第1の情報エントリの上記データ識別情報である操作対象データ識別情報と重複する探索空間に対応付けられた上記ノードの更新履歴情報を更新するとともに、当該ノードを含む上記探索木が属する上記探索木グループのベース探索木について上記操作対象データ識別情報と重複する探索空間に対応付けられた上記ノードの共有更新履歴情報を更新し、
上記第2の情報エントリとして、上記探索木による上記第1の情報エントリの探索結果として得られる、各上記探索木における探索によって到達したノードを示すノード識別子と当該ノードの上記更新履歴情報および上記共有更新履歴情報とのキャッシュを記憶し、
上記第2の情報エントリを使用したデータ処理を行う際に、上記記憶された当該第2の情報エントリに関する上記ノードの上記共有更新履歴情報のキャッシュと当該ノードの最新の上記共有更新履歴情報とを、各上記ベース探索木について比較し、両者に不整合があった場合には、当該ノードを含む上記ベース探索木が属する上記探索木グループの各上記探索木について、上記記憶された当該第2の情報エントリに関する各上記ノードの上記更新履歴情報のキャッシュと各当該ノードの最新の上記更新履歴情報とを比較し、両者に不整合があった場合は、上記記憶された当該第2の情報エントリは無効であると判定することで、第2の情報エントリを再評価する。
(2) The information entry management method according to one aspect of the present invention is characterized in that:
A first information entry for determining a method of processing data to be processed is determined by using one or a plurality of search trees from a set of first information entries each including data identification information to be applied. In the case where the data is processed using the searched first information entry, an intermediate node and a leaf node which are nodes constituting each search tree are associated with a search space of the data identification information. A search result of the first information entry by the search tree obtained at the time of the search is stored as a second information entry, and when the data is processed, the second information entry relating to the data is An information entry management method for processing the data using the second information entry when the information is stored, wherein one or more of the search trees are grouped. Loop, select a base search tree in each search tree group,
For each of the intermediate nodes and leaf nodes constituting the search tree, update history information indicating the update history of the node and shared update history information indicating the update history of any of the nodes constituting the search tree Remember,
When the content of the first information entry is operated, the update history information of the node associated with the search space overlapping with the operation target data identification information as the data identification information of the first information entry is updated. And, for the base search tree of the search tree group to which the search tree including the node belongs, updating the shared update history information of the node associated with the search space overlapping the operation target data identification information,
As the second information entry, a node identifier, which is obtained as a search result of the first information entry by the search tree and indicates a node reached by a search in each search tree, the update history information of the node, and the sharing Store cache with update history information,
When performing data processing using the second information entry, the cache of the shared update history information of the node related to the stored second information entry and the latest shared update history information of the node are stored. Comparing each of the base search trees, and if there is a mismatch between the two, the search tree of the search tree group to which the base search tree including the node belongs belongs to the stored second search tree. The cache of the update history information of each of the nodes related to the information entry is compared with the latest update history information of each of the nodes. If there is a mismatch between the two, the stored second information entry is By determining that it is invalid, the second information entry is reevaluated.

(3)本発明の一態様に係る情報エントリ管理プログラムは、上記(2)に記載の情報エントリ管理方法を、コンピュータによって実行可能なプログラムとして実施する。   (3) An information entry management program according to an aspect of the present invention implements the information entry management method described in (2) above as a program executable by a computer.

また、上記本発明の目的は、上記構成を有するデータ処理装置、データ処理方法をコンピュータによって実現する上記情報エントリ管理プログラムが格納されているコンピュータ読み取り可能な記録媒体等によっても達成される。   The object of the present invention is also achieved by a data processing device having the above configuration, a computer readable recording medium storing the information entry management program for realizing a data processing method by a computer, and the like.

本発明によれば、以下のような効果を奏することができる。   According to the present invention, the following effects can be obtained.

すなわち、本発明によれば、データ処理(例えばパケット処理)に用いる情報エントリを探索する際に用いる探索木を複数有する場合であっても、情報エントリの探索に要する負荷を低減することができる。   That is, according to the present invention, even when a plurality of search trees are used for searching for information entries used for data processing (for example, packet processing), the load required for searching for information entries can be reduced.

図1は、本発明の実施の形態に係るデータ処理装置のブロック構成の一例を示すブロック構成図である。FIG. 1 is a block diagram showing an example of a block configuration of a data processing device according to an embodiment of the present invention. 図2は、図1に示したデータ処理装置の探索木制御部の詳細なブロック構成の一例を示すブロック構成図である。FIG. 2 is a block diagram showing an example of a detailed block configuration of a search tree control unit of the data processing device shown in FIG. 図3は、図1に示したデータ処理装置のキャッシュテーブル制御部の詳細なブロック構成の一例を示すブロック構成図である。FIG. 3 is a block diagram showing an example of a detailed block configuration of the cache table control unit of the data processing device shown in FIG. 図4は、図1に示したデータ処理装置において使用されるルールの一構成例を説明するための表である。FIG. 4 is a table for explaining a configuration example of a rule used in the data processing device shown in FIG. 図5は、図1に示したデータ処理装置において使用される探索木に係る情報およびノードに係る情報の一構成例を説明するための表である。FIG. 5 is a table for explaining a configuration example of information relating to a search tree and information relating to a node used in the data processing apparatus shown in FIG. 図6は、図1に示したデータ処理装置のキャッシュテーブル記憶部に記憶される、キャッシュテーブルおよびキャッシュエントリに関する情報の一例を示す表である。FIG. 6 is a table showing an example of information on a cache table and a cache entry stored in the cache table storage unit of the data processing device shown in FIG. 図7は、図1に示したデータ処理装置の探索木制御部における探索木初期化部が探索木記憶部およびルール記憶部それぞれに記憶される探索木およびルールセットを初期化する際の動作の一例を示すフローチャートである。FIG. 7 shows an operation of the search tree initialization unit in the search tree control unit of the data processing device shown in FIG. 1 when initializing the search tree and the rule set stored in the search tree storage unit and the rule storage unit, respectively. It is a flowchart which shows an example. 図8は、図1に示したデータ処理装置の探索木制御部における探索木初期化部が探索木構築処理を行う際の動作の一例を示すフローチャートである。FIG. 8 is a flowchart illustrating an example of an operation when the search tree initialization unit in the search tree control unit of the data processing device illustrated in FIG. 1 performs a search tree construction process. 図9は、図8のフローチャートのステップS112において実行される探索木構築サブ処理Aの詳細な動作の一例を示すフローチャートである。FIG. 9 is a flowchart illustrating an example of a detailed operation of the search tree construction sub-process A executed in step S112 of the flowchart of FIG. 図10は、図1に示したデータ処理装置の探索木制御部におけるルール更新部が、探索木記憶部およびルール記憶部それぞれに記憶される探索木およびルールセットを更新する際の動作の一例を示すフローチャートである。FIG. 10 illustrates an example of an operation when the rule updating unit in the search tree control unit of the data processing device illustrated in FIG. 1 updates the search tree and the rule set stored in the search tree storage unit and the rule storage unit, respectively. It is a flowchart shown. 図11は、図10のフローチャートのステップS136において実行されるルール更新サブ処理A1の詳細な動作の一例を示すフローチャートである。FIG. 11 is a flowchart illustrating an example of a detailed operation of the rule update sub-process A1 executed in step S136 of the flowchart of FIG. 図12は、図11のフローチャートのステップS143において実行されるルール更新サブ処理A2の詳細な動作の一例を示すフローチャートである。FIG. 12 is a flowchart illustrating an example of a detailed operation of the rule update sub-process A2 executed in step S143 of the flowchart of FIG. 図13は、図10のフローチャートのステップS137において実行されるルール更新サブ処理Bの詳細な動作の一例を示すフローチャートである。FIG. 13 is a flowchart illustrating an example of a detailed operation of the rule update sub-process B executed in step S137 of the flowchart of FIG. 図14は、図10のフローチャートのステップS139において実行されるルール更新サブ処理Cの詳細な動作の一例を示すフローチャートである。FIG. 14 is a flowchart illustrating an example of a detailed operation of the rule update sub-process C executed in step S139 of the flowchart of FIG. 図15は、図1に示したデータ処理装置の探索木制御部における探索木探索部が、探索木記憶部およびルール記憶部それぞれに記憶される探索木およびルールセットを参照して与えられたキーに適合するルールを探索する際の動作の一例を示すフローチャートである。FIG. 15 is a diagram illustrating an example in which the search tree search unit in the search tree control unit of the data processing apparatus illustrated in FIG. 1 refers to a search tree and a rule set stored in the search tree storage unit and the rule storage unit, respectively. 9 is a flowchart illustrating an example of an operation when searching for a rule that conforms to. 図16は、図15のフローチャートのステップS181において実行されるルール探索サブ処理Aの詳細な動作の一例を示すフローチャートである。FIG. 16 is a flowchart showing an example of the detailed operation of the rule search sub-process A executed in step S181 of the flowchart in FIG. 図17は、図1に示したデータ処理装置のパケット処理部がパケットを受信した際の動作の一例を示すフローチャートである。FIG. 17 is a flowchart illustrating an example of an operation when the packet processing unit of the data processing device illustrated in FIG. 1 receives a packet. 図18は、図1に示したデータ処理装置のキャッシュテーブル制御部におけるキャッシュエントリ作成部がキャッシュエントリを作成する際の動作の一例を示すフローチャートである。FIG. 18 is a flowchart illustrating an example of an operation when the cache entry creation unit in the cache table control unit of the data processing device illustrated in FIG. 1 creates a cache entry. 図19は、図1に示したデータ処理装置のキャッシュテーブル制御部におけるキャッシュエントリ探索部がキャッシュエントリを探索する際の動作の一例を示すフローチャートである。FIG. 19 is a flowchart illustrating an example of an operation when the cache entry search unit in the cache table control unit of the data processing device illustrated in FIG. 1 searches for a cache entry. 図20は、図1に示したデータ処理装置のキャッシュテーブル制御部におけるキャッシュエントリ再評価部がキャッシュエントリを再評価する際の動作の一例を示すフローチャートである。FIG. 20 is a flowchart illustrating an example of an operation when the cache entry reevaluation unit in the cache table control unit of the data processing device illustrated in FIG. 1 reevaluates the cache entry. 図21Aは、図1に示したデータ処理装置の探索木制御部における探索木初期化部がルールセットをルールの特徴に基づいて分割する際のサブルールセット例を示す説明図(1/2)である。FIG. 21A is an explanatory diagram (1/2) illustrating an example of a sub-rule set when a search tree initialization unit in a search tree control unit of the data processing device illustrated in FIG. 1 divides a rule set based on rule characteristics. It is. 図21Bは、図1に示したデータ処理装置の探索木制御部における探索木初期化部がルールセットをルールの特徴に基づいて分割する際のサブルールセット例を示す説明図(2/2)である。FIG. 21B is an explanatory diagram (2/2) illustrating an example of a sub-rule set when the search tree initialization unit in the search tree control unit of the data processing device illustrated in FIG. 1 divides the rule set based on the feature of the rule. It is. 図22は、図1に示したデータ処理装置の探索木制御部における探索木初期化部により作成される探索木グループの一例を示す表である。FIG. 22 is a table illustrating an example of a search tree group created by a search tree initialization unit in the search tree control unit of the data processing device illustrated in FIG. 図23は、ルールセットの一例を示す模式図である。FIG. 23 is a schematic diagram illustrating an example of a rule set. 図24は、探索木の一例を示す模式図である。FIG. 24 is a schematic diagram illustrating an example of a search tree. 図25は、探索木のノードに係る情報の一例を示す表である。FIG. 25 is a table illustrating an example of information related to the nodes of the search tree. 図26は、本発明の実施の形態に係るデータ処理装置を実現可能な情報処理装置のハードウェア構成を例示する図面である。FIG. 26 is a diagram illustrating a hardware configuration of an information processing device capable of realizing the data processing device according to the embodiment of the present invention.

以下、本発明によるデータ処理装置等の好適な実施形態について添付図を参照して説明する。なお、以下においては、本発明によるデータ処理装置および情報エントリ管理方法の実施形態について説明する。かかる情報エントリ管理方法は、コンピュータにより実行可能な情報エントリ管理プログラムとして実施されてもよい。係る情報エントリ管理プログラムは、コンピュータにより読み取り可能な記録媒体に記録されてもよい。また、以下の各図面に付した図面参照符号は、理解を助けるための一例として、各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。   Hereinafter, preferred embodiments of a data processing device and the like according to the present invention will be described with reference to the accompanying drawings. Hereinafter, an embodiment of a data processing device and an information entry management method according to the present invention will be described. Such an information entry management method may be implemented as an information entry management program executable by a computer. Such an information entry management program may be recorded on a computer-readable recording medium. In addition, the drawing reference numerals attached to the following drawings are provided for convenience of each element as an example to facilitate understanding, and are not intended to limit the present invention to the illustrated embodiments.

本発明の実施形態の詳細な説明に先立って、本発明に係るデータ処理装置等について、その概要をまず説明する。   Prior to a detailed description of an embodiment of the present invention, an outline of a data processing device and the like according to the present invention will be described first.

本発明の実施形態に係るデータ処理装置は、処理対象とするデータを処理する方法を決定する第1の情報エントリを、上記データを適用対象とするデータ識別情報を含む第1の情報エントリの集合の中から、1ないし複数の探索木を用いて探索する。   A data processing device according to an embodiment of the present invention includes a first information entry for determining a method of processing data to be processed, a set of first information entries including data identification information to which the data is applied. Is searched using one or more search trees.

データ処理装置は、探索した第1の情報エントリを用いて上記データを処理する場合、各探索木を構成するノードである中間ノードおよびリーフノードを、上記データ識別情報の探索空間に対応付けて探索する。そして、探索木による第1の情報エントリの探索結果を、第2の情報エントリとして記憶する。データ処理装置は、データを処理する際に、当該データに関する第2の情報エントリが記憶されていた場合、第2の情報エントリを使用して当該データを処理する。   When processing the data using the searched first information entry, the data processing apparatus searches for an intermediate node and a leaf node, which are nodes constituting each search tree, in association with the search space of the data identification information. I do. Then, a search result of the first information entry by the search tree is stored as a second information entry. When processing the data, if the data processing apparatus stores the second information entry relating to the data, the data processing apparatus processes the data using the second information entry.

該データ処理装置は、1ないし複数の上記探索木をグループ化し、各探索木グループにおけるベース探索木を選択する探索木初期化部(探索木初期化手段)を有する。   The data processing apparatus includes a search tree initialization unit (search tree initialization means) that groups one or more search trees and selects a base search tree in each search tree group.

また、該データ処理装置は、以下のような処理を実行する探索木記憶部(探索木記憶手段)を備える。即ち、当該探索木記憶部(探索木記憶手段)は、上記探索木を構成する中間ノードおよびリーフノードの各ノードに関し、当該ノードの更新の履歴を示す更新履歴情報、および、当該探索木を構成するいずれかの上記ノードの更新の履歴を示す共有更新履歴情報を記憶する。   Further, the data processing device includes a search tree storage unit (search tree storage unit) that executes the following processing. That is, the search tree storage unit (search tree storage unit) configures, for each of the intermediate nodes and leaf nodes constituting the search tree, update history information indicating an update history of the node, and configures the search tree. To store the shared update history information indicating the update history of any of the above nodes.

また、データ処理装置は、以下のような処理を実行する更新部(更新手段)を備える。即ち、係る更新部は、第1の情報エントリの内容を操作した際に、操作された第1の情報エントリにおけるデータ識別情報である操作対象データ識別情報と重複する探索空間に対応付けられたノードの更新履歴情報を更新する。また、更新部は、当該ノードを含む上記探索木が属する上記探索木グループのベース探索木について、上記操作対象データ識別情報と重複する探索空間に対応付けられた上記ノードの共有更新履歴情報を更新する。   In addition, the data processing device includes an update unit (update unit) that performs the following processing. In other words, when the content of the first information entry is operated, the updating unit associates the node associated with the search space overlapping the operation target data identification information that is the data identification information in the operated first information entry. Update the update history information of. The update unit updates the shared update history information of the node associated with the search space overlapping with the operation target data identification information for the base search tree of the search tree group to which the search tree including the node belongs. I do.

また、該データ処理装置は、以下のような処理を実行する情報エントリ記憶部(情報エントリ記憶手段)を備える。即ち、情報エントリ記憶部は、探索木による第1の情報エントリの探索結果として得られる、各探索木における探索によって到達したノードを示すノード識別子と、当該ノードの更新履歴情報および共有更新履歴情報と、を含むキャッシュを、第2の情報エントリとして記憶する。   Further, the data processing device includes an information entry storage unit (information entry storage unit) that executes the following processing. That is, the information entry storage unit obtains, as a search result of the first information entry by the search tree, a node identifier indicating a node reached by a search in each search tree, update history information of the node, and shared update history information. , Is stored as the second information entry.

また、該データ処理装置は、以下のような処理を実行する再評価部(再評価手段)を備える。即ち、係る再評価部は、第2の情報エントリを使用したデータ処理を行う際、上記情報エントリ記憶部に記憶された第2の情報エントリに関する、ノードの共有更新履歴情報のキャッシュと、当該ノードの最新の共有更新履歴情報とを、各上記ベース探索木について比較する。係る比較処理の結果、両者に不整合があった場合、再評価部は、当該ノードを含むベース探索木が属する探索木グループの各探索木について、第2の情報エントリ記憶部に記憶された第2の情報エントリに関する各ノードの更新履歴情報のキャッシュと、各ノードの最新の更新履歴情報とを比較する。再評価部は、両者に不整合があった場合は、上記第2の情報エントリ記憶部に記憶された第2の情報エントリは無効であると判定する。   Further, the data processing device includes a re-evaluation unit (re-evaluation unit) that executes the following processing. That is, when performing the data processing using the second information entry, the reevaluation unit includes a cache of the node's shared update history information regarding the second information entry stored in the information entry storage unit, Is compared with the latest shared update history information for each of the base search trees. As a result of the comparison process, when there is a mismatch between the two, the reevaluation unit determines, for each search tree of the search tree group to which the base search tree including the node belongs, the second search information stored in the second information entry storage unit. Then, the cache of the update history information of each node relating to the second information entry is compared with the latest update history information of each node. When there is a mismatch between the two, the reevaluation unit determines that the second information entry stored in the second information entry storage unit is invalid.

[実施の形態の説明]
以下に記載する本実施の形態の説明においては、一例として、データ処理としてパケット処理を実施し、当該データ処理に用いられる情報エントリとしてルールを使用する場合について説明する。また、本実施の形態においてはパケット(通信パケット)として、IPv4(Internet Protocol version 4)パケットを扱う例を示している。しかし、本発明は、上記のようなパケット処理の場合に限定されず、他の一般的なデータ処理についても広く適用可能である。
[Description of Embodiment]
In the following description of the present embodiment, as an example, a case will be described in which packet processing is performed as data processing and rules are used as information entries used in the data processing. In the present embodiment, an example is shown in which an IPv4 (Internet Protocol version 4) packet is handled as a packet (communication packet). However, the present invention is not limited to the packet processing as described above, and is widely applicable to other general data processing.

[実施の形態の構成例]
まず、本実施の形態の構成例について、図1を用いて説明する。図1は、本発明の実施の形態に係るデータ処理装置のブロック構成の一例を示すブロック構成図である。図1に例示するデータ処理装置1は、探索木制御部10と、探索木記憶部20と、ルール記憶部30と、キャッシュテーブル制御部40と、キャッシュテーブル記憶部50と、パケット処理部60と、通信IF部70と、データ処理装置制御部80と、を含む。
[Configuration Example of Embodiment]
First, a configuration example of the present embodiment will be described with reference to FIG. FIG. 1 is a block diagram showing an example of a block configuration of a data processing device according to an embodiment of the present invention. The data processing device 1 illustrated in FIG. 1 includes a search tree control unit 10, a search tree storage unit 20, a rule storage unit 30, a cache table control unit 40, a cache table storage unit 50, a packet processing unit 60, , A communication IF unit 70, and a data processing device control unit 80.

探索木制御部10は、探索木記憶部20に記憶される探索木およびルール記憶部30に記憶されるルールの管理を行う。具体的には、探索木制御部10は、例えば、探索木の初期化や探索、ルールの追加等を行う部位である。   The search tree control unit 10 manages the search tree stored in the search tree storage unit 20 and the rules stored in the rule storage unit 30. Specifically, the search tree control unit 10 is, for example, a unit that performs search tree initialization, search, addition of rules, and the like.

探索木記憶部20は、詳細は後述するが、主に、受信パケット(すなわち処理対象のデータの一種)に対応するルール(すなわち情報エントリの一種、第1の情報エントリ)を探索する際に用いられる探索木を記憶する。探索木記憶部20に記憶される探索木は、1つまたは複数のノードによって構成される。該ノードは、中間ノードまたはリーフノードのいずれかである。また、探索木記憶部20は、探索木のグループ化に係る情報を記憶する。探索木記憶部20が記憶する探索木の数は、通常、2個以上であるが、一つであってもよい。探索木記憶部20は、例えば、メモリを用いて探索木を記憶する。各探索木、各ノードおよび各探索木グループには、それぞれを一意に識別する識別子が割り当てられ、当該識別子が参照等の操作の際に使用される。   Although details will be described later, the search tree storage unit 20 is mainly used when searching for a rule (that is, one type of information entry, first information entry) corresponding to a received packet (that is, one type of data to be processed). The search tree is stored. The search tree stored in the search tree storage unit 20 includes one or a plurality of nodes. The node is either an intermediate node or a leaf node. Further, the search tree storage unit 20 stores information related to search tree grouping. The number of search trees stored in the search tree storage unit 20 is usually two or more, but may be one. The search tree storage unit 20 stores the search tree using a memory, for example. An identifier for uniquely identifying each search tree, each node, and each search tree group is assigned, and the identifier is used in an operation such as reference.

ルール記憶部30は、パケット処理するための情報であるルール(すなわち情報エントリの一種、第1の情報エントリ)の集合(ルールセット、サブルールセット)を記憶する。ルール記憶部30は、例えば、メモリを用いてルールの集合を記憶する。ルール記憶部30は、例えば、配列やハッシュテーブルなどのデータ構造を使用して、ルールの集合をメモリに記憶する。各ルールおよび各ルールセットや各サブルールセットには、それらを一意に識別する識別子が割り当てられ、当該識別子が参照等の操作の際に使用される。   The rule storage unit 30 stores a set (rule set, sub-rule set) of rules (that is, a type of information entry, a first information entry) that is information for packet processing. The rule storage unit 30 stores, for example, a set of rules using a memory. The rule storage unit 30 stores a set of rules in a memory using, for example, a data structure such as an array or a hash table. An identifier for uniquely identifying each rule, each rule set, and each sub-rule set is assigned, and the identifier is used at the time of an operation such as reference.

キャッシュテーブル制御部40は、キャッシュテーブル記憶部50に記憶されるキャッシュエントリの管理を行う。キャッシュテーブル制御部40は、例えば、キャッシュエントリの作成や探索等を行う。   The cache table control unit 40 manages cache entries stored in the cache table storage unit 50. The cache table control unit 40 performs, for example, creation and search of a cache entry.

キャッシュテーブル記憶部50は、探索木による探索の結果を含む(キャッシュする)キャッシュエントリ(すなわち情報エントリの一種、第2の情報エントリ)を記憶する部位である。キャッシュテーブル記憶部50は、例えば、情報エントリ記憶手段として機能する。キャッシュテーブル記憶部50は、例えば、メモリを用いてキャッシュエントリを記憶する。キャッシュテーブル記憶部50は、例えば、ハッシュテーブルのデータ構造を使用してキャッシュエントリをメモリに記憶する。各キャッシュエントリにはそれぞれを一意に識別する識別子が割り当てられ、当該識別子が参照等の操作の際に使用される。   The cache table storage unit 50 is a unit that stores a cache entry (that is, a type of information entry, a second information entry) that includes (caches) a result of a search using a search tree. The cache table storage unit 50 functions as, for example, an information entry storage unit. The cache table storage unit 50 stores a cache entry using a memory, for example. The cache table storage unit 50 stores a cache entry in a memory using, for example, a data structure of a hash table. Each cache entry is assigned an identifier for uniquely identifying the cache entry, and the identifier is used for operations such as reference.

パケット処理部60は、通信IF部70からパケット(すなわち処理対象のデータの一種)を受信し、受信したパケットの処理を行う。その際、パケット処理部60は、探索木制御部10およびキャッシュテーブル制御部40を使用して、当該パケットの処理に用いる情報エントリ(ノード、ルール、キャッシュエントリ)を探索し、探索結果を用いて当該パケットを処理する。なお、パケット処理部60は、処理対象のデータの一種(パケット)を処理する、データ処理実行手段として機能してもよい。   The packet processing unit 60 receives a packet (that is, a type of data to be processed) from the communication IF unit 70, and processes the received packet. At that time, the packet processing unit 60 uses the search tree control unit 10 and the cache table control unit 40 to search for an information entry (node, rule, cache entry) used for processing the packet, and uses the search result. Process the packet. Note that the packet processing unit 60 may function as a data processing execution unit that processes a type (packet) of data to be processed.

通信IF部70は、データ処理装置1と通信ネットワーク(図1には図示していない)とを接続するインタフェースであり、当該通信ネットワークで使用される通信プロトコル(以下、単に「プロトコル」と記載する場合がある)にしたがってパケットの送受信を行う。   The communication IF unit 70 is an interface for connecting the data processing device 1 to a communication network (not shown in FIG. 1), and a communication protocol used in the communication network (hereinafter simply referred to as “protocol”). In some cases).

データ処理装置制御部80は、データ処理装置1がルールセットやサブルールセットにしたがってパケットを処理するように制御する。データ処理装置制御部80は、例えば、データ処理装置1が起動する際、探索木初期化部11(図2)に初期ルールセットを渡して初期化するように指示する。データ処理装置制御部80は、当該初期ルールセットをデータ処理装置1が具備する記憶装置(図1には図示していない)から読み込んでもよい。また、データ処理装置制御部80は、当該初期ルールセットを、他の制御装置(図1には図示していない)から受信してもよい。また、データ処理装置制御部80は、ユーザインタフェース(図1には図示していない)を介して、ユーザからルール更新の命令を受け取った際に、探索木制御部10に対してルール更新を指示する。また、データ処理装置制御部80は、他の制御装置(図1には図示していない)からルール更新の命令を受信した際に、探索木制御部10に対してルール更新を指示してもよい。   The data processing device control unit 80 controls the data processing device 1 to process a packet according to a rule set or a sub-rule set. For example, when the data processing device 1 starts up, the data processing device control unit 80 gives an instruction to the search tree initialization unit 11 (FIG. 2) to pass an initial rule set and to perform initialization. The data processing device control unit 80 may read the initial rule set from a storage device (not shown in FIG. 1) included in the data processing device 1. Further, the data processing device control unit 80 may receive the initial rule set from another control device (not shown in FIG. 1). When receiving a rule update command from a user via a user interface (not shown in FIG. 1), the data processing device control unit 80 instructs the search tree control unit 10 to update the rule. I do. Further, the data processing device control unit 80 may instruct the search tree control unit 10 to update the rule when receiving a rule update instruction from another control device (not shown in FIG. 1). Good.

次に、図1に示した本実施の形態のデータ処理装置1において使用されるルールについて図4の表を用いて説明する。図4は、図1に示したデータ処理装置1において使用されるルールの一構成例を説明する表であり、図1のデータ処理装置1のルール記憶部30に記憶されるルールの構成例を示している。   Next, rules used in the data processing device 1 of the present embodiment shown in FIG. 1 will be described with reference to the table of FIG. FIG. 4 is a table for explaining a configuration example of a rule used in the data processing device 1 shown in FIG. 1. FIG. 4 shows a configuration example of a rule stored in the rule storage unit 30 of the data processing device 1 in FIG. Is shown.

図4の表の項目欄31に示すように、各ルールは、適用対象を示すデータ識別情報の一種であるマッチ条件や優先度、さらには、アクション、統計情報、削除フラグを含んで構成される。各ルールのマッチ条件は、図4の表の説明欄32に示すように、当該ルールに適合するパケットが持つフィールド値の条件を規定する。例えば、本実施の形態においては、以下の五つのフィールド(5タプル(5Tuple))をマッチ条件(データ識別情報の一種)として使用する。即ち、それら五つのフィールドは、開始送信先IPアドレスおよび終了送信先IPアドレス、開始送信元IPアドレスおよび終了送信元IPアドレス、開始送信先ポート番号および終了送信先ポート番号、開始送信元ポート番号および終了送信元ポート番号、開始プロトコル番号および終了プロトコル番号である。   As shown in the item column 31 of the table of FIG. 4, each rule is configured to include a match condition and a priority, which are a kind of data identification information indicating an application target, and further include an action, statistical information, and a deletion flag. . As shown in the description column 32 of the table in FIG. 4, the match condition of each rule defines the condition of the field value of the packet that conforms to the rule. For example, in the present embodiment, the following five fields (5 tuples) are used as match conditions (a type of data identification information). That is, those five fields are a start destination IP address and an end destination IP address, a start source IP address and an end source IP address, a start destination port number and an end destination port number, a start source port number and The end source port number, start protocol number, and end protocol number.

例えば、本実施の形態においては、マッチ条件の一例として、以下のような具体例が図4の表の例欄33に示されている。即ち、係る具体例においては、(開始および終了)送信先IPアドレスは、‘0.0.0.0’〜‘255.255.255.255’の範囲内である。また、(開始および終了)送信元IPアドレスは、‘10.0.0.0’〜‘10.255.255.255’の範囲内である。また、(開始および終了)送信先ポート番号は‘80’である。また、(開始および終了)送信元ポート番号は、‘0’〜‘65535’の範囲内である。また、プロトコル番号は‘17’である。ただし、本発明は、かかるフィールド構成のみに限定されるものではない。   For example, in the present embodiment, the following specific examples are shown in the example column 33 of the table of FIG. 4 as an example of the match condition. That is, in such a specific example, the (start and end) destination IP addresses are in the range of '0.0.0.0' to '255.255.255.255'. The (start and end) source IP addresses are in the range from '10 .0.0.0 'to '10 .255.255.255'. The (start and end) destination port number is '80'. The (start and end) source port numbers are in the range of '0' to '65535'. The protocol number is '17'. However, the present invention is not limited to only such a field configuration.

また、各ルールの優先度は、或るパケットに対して複数のルールが適合する場合に、採用されるルールを選択するために使用される。各ルールの優先度は、図4の表の説明欄32に示すように、例えば、各ルールそれぞれの優先度を表す数値(例えば非負整数)であり、大きい数値ほど高い優先度を示してもよい。例えば、図4の表の例欄33に示す当該ルールの優先度には、非負整数‘100’が設定されている。   The priority of each rule is used to select a rule to be adopted when a plurality of rules match a certain packet. The priority of each rule is, for example, a numerical value (for example, a non-negative integer) representing the priority of each rule, as shown in the description column 32 of the table in FIG. 4, and a higher numerical value may indicate a higher priority. . For example, a non-negative integer ‘100’ is set for the priority of the rule shown in the example column 33 of the table of FIG.

また、各ルールのアクションは、図4の表の説明欄32に示すように、当該ルールに適合したパケットに対して実行する処理内容(処理方法)を規定する。適合したパケットに対するルールのアクションが、パケットの送受信に関わる場合には、図4の表の例欄33に示すように、当該パケットが通信IF部70に対して出力される。なお、各ルールそれぞれに含まれるアクションの数は、1つに限定されず、0であっても、あるいは、2つ以上であってもよい。ルールのアクションの一例を以下に示す。ただし、本実施形態は、ルールのアクションとして以下の処理に限定されるものではない。   Further, the action of each rule defines the processing content (processing method) to be executed on a packet conforming to the rule, as shown in the description column 32 of the table in FIG. When the action of the rule for the matched packet involves transmission and reception of the packet, the packet is output to the communication IF unit 70 as shown in the example column 33 of the table in FIG. The number of actions included in each rule is not limited to one, and may be zero or two or more. An example of a rule action is shown below. However, the present embodiment is not limited to the following processing as a rule action.

(a)指定された通信IF部70からパケットを出力する。   (A) The packet is output from the designated communication IF unit 70.

(b)パケットの送信先MAC(Media Access Control)アドレスを指定された値に変更する。   (B) Change the destination MAC (Media Access Control) address of the packet to the specified value.

(c)パケットの送信元MACアドレスを指定された値に変更する。   (C) Change the source MAC address of the packet to the specified value.

(d)パケットの送信先IPアドレスを指定された値に変更する。   (D) Change the destination IP address of the packet to the specified value.

(e)パケットの送信元IPアドレスを指定された値に変更する。   (E) Change the source IP address of the packet to the specified value.

(f)パケットの送信先ポート番号を指定された値に変更する。   (F) Change the destination port number of the packet to the specified value.

(g)パケットの送信元ポート番号を指定された値に変更する。   (G) Change the source port number of the packet to the specified value.

(h)パケットにVLAN(Virtual Local Area Network)タグを追加する。   (H) Add a VLAN (Virtual Local Area Network) tag to the packet.

(i)パケットのVLANタグを削除する。   (I) Delete the VLAN tag of the packet.

(j)パケットのVLANタグを変更する。   (J) Change the VLAN tag of the packet.

(k)パケットを破棄する。   (K) Discard the packet.

次に、各ルールの統計情報は、図4の表の説明欄32に示すように、当該ルールに適合して、処理されたパケット群に関する統計値を表す。係る各ルールの統計情報は、例えば、図4の表の例欄33に示すように、合計送信パケットサイズ、合計受信パケットサイズ、送信パケット数、受信パケット数、等である。   Next, as shown in the description column 32 of the table of FIG. 4, the statistical information of each rule indicates a statistical value of a packet group that has been processed in conformity with the rule. The statistical information of each rule is, for example, a total transmission packet size, a total reception packet size, a transmission packet number, a reception packet number, and the like, as shown in an example column 33 of the table in FIG.

また、各ルールの削除フラグは、図4の表の説明欄32に示すように、当該ルールに関して削除が要求されたものの、当該ルールが使用中であることから、削除処理が延期されているか否かを示すフラグである。   Further, as shown in the explanation column 32 of the table in FIG. 4, the deletion flag of each rule indicates whether the deletion processing is postponed because the deletion is requested for the rule but the rule is in use. Is a flag indicating

次に、図1に示した本実施の形態のデータ処理装置1における、探索木記憶部20が記憶する探索木に係る情報およびノードに係る情報について図5の表を用いて説明する。   Next, information on the search tree and information on the nodes stored in the search tree storage unit 20 in the data processing device 1 of the present embodiment shown in FIG. 1 will be described with reference to the table in FIG.

探索木記憶部20は、探索木の集合と、探索木グループリストと、ノードの集合と、を記憶する。図5は、図1に示したデータ処理装置1において使用される探索木に係る情報およびノードに係る情報の一構成例を説明する表である。図5は、図1のデータ処理装置1の探索木記憶部20に記憶される探索木に係る情報およびノードに係る情報の構成例を示す。図5における(A)部分には、探索木に係る情報および探索木グループリストに係る情報が例示されている。また、図5における(B)部分には、ノードに係る情報が例示されている。なお、本実施の形態におけるノードは、中間ノードまたはリーフノードのいずれかである。図5の(B)部分においては、ノード種別欄24に示すように、中間ノード・リーフノードともに共通に有する情報は“中間ノード・リーフノード共通”の部分に、中間ノードのみが有する情報は“中間ノード”の部分に、リーフノードのみが有する情報は“リーフノード”の部分に示されている。   The search tree storage unit 20 stores a set of search trees, a search tree group list, and a set of nodes. FIG. 5 is a table illustrating a configuration example of information related to a search tree and information related to a node used in the data processing device 1 illustrated in FIG. FIG. 5 shows a configuration example of the information on the search tree and the information on the nodes stored in the search tree storage unit 20 of the data processing device 1 in FIG. Part (A) in FIG. 5 illustrates information about the search tree and information about the search tree group list. FIG. 5B illustrates information on nodes. The node in the present embodiment is either an intermediate node or a leaf node. In the part (B) of FIG. 5, as shown in the node type column 24, the information that is common to both the intermediate node and the leaf node is “common to the intermediate node and leaf node”, and the information that only the intermediate node has is “ The information that only the leaf nodes have in the "intermediate node" portion is shown in the "leaf node" portion.

また、図5の(B)部分の項目欄25に示すノードの部分空間とは、当該ノードの探索対象である、当該ノードが表す部分空間の情報である。本部分空間の情報は、図23〜図25を用いて先に説明した一般的な探索木の例において、図25の“ノードが表す部分空間”欄に記載の情報に相当する。図25に示した例においては、探索空間の次元数が2次元の場合を示した。これに対して、本実施の形態におけるルールのマッチ条件は、前述のように、5タプル(5Tuple)であることから、本実施の形態における探索空間の次元数は5次元となる。   The node partial space shown in the item column 25 of the part (B) of FIG. 5 is information on a partial space represented by the node, which is a search target of the node. The information of this subspace corresponds to the information described in the “subspace represented by node” column in FIG. 25 in the example of the general search tree described above with reference to FIGS. In the example shown in FIG. 25, the case where the number of dimensions of the search space is two is shown. On the other hand, since the matching condition of the rule in the present embodiment is 5 tuples (5 Tuples) as described above, the number of dimensions of the search space in the present embodiment is five.

したがって、図5の(B)部分におけるノード種別欄24の“中間ノード”において、項目欄25に示す“カット(Cut)する次元”および“カット(Cut)数”は、探索空間を5次元にカッティング(Cutting)して、子ノードを作成する際に使用する情報である。例えば、図25の例において、ルートノードに関する“カット(Cut)する次元”および“カット(Cut)数”の情報は、それぞれ、‘X軸’および‘4’である。また、図25の例において、ノード1に関する“カット(Cut)する次元”および“カット(Cut)数”の情報は、それぞれ、‘Y軸’および‘2’である。なお、探索木を作成する際、或るノードにおいて同時に複数の次元に関するカット(Cut)が実行されてもよい。その場合、“カット(Cut)する次元”および“カット(Cut)数”の組は、複数の次元毎に記憶される。   Therefore, in the “intermediate node” of the node type column 24 in the part (B) of FIG. 5, the “dimension to cut (Cut)” and the “number of cuts (Cut)” shown in the item column 25 change the search space into five dimensions. This is information used when a child node is created by cutting. For example, in the example of FIG. 25, the information of the “dimension to cut (Cut)” and the “number of cuts (Cut)” regarding the root node are ‘X axis’ and ‘4’, respectively. In the example of FIG. 25, the information of the “dimension to cut (Cut)” and the “number of cuts (Cut)” regarding the node 1 are ‘Y axis’ and ‘2’, respectively. When a search tree is created, a cut may be performed on a plurality of dimensions at a certain node at the same time. In this case, a set of “dimensions to cut” and “number of cuts” is stored for each of a plurality of dimensions.

また、探索木に係る情報については、図5の(A)部分における種別欄21に示すように、探索木それぞれに係る情報と、1ないし複数の探索木をグループ化した探索木グループに係る情報と、が記憶されている。探索木それぞれに係る情報には、項目欄22および説明欄23に示すように、ルートとなるノード(ルートノード)を示すルートノード識別子、対応するサブルールセットを示すサブルールセット識別子、属する探索木グループを示す探索木グループ識別子、が含まれる。また、探索木グループに係る情報には、属する各探索木を示す探索木識別子リスト、ベースとなるベース探索木を示すベース探索木識別子、が含まれる。   Further, as for the information relating to the search tree, as shown in the type column 21 in the part (A) of FIG. 5, information relating to each of the search trees and information relating to a search tree group obtained by grouping one or a plurality of search trees. And are stored. As shown in the item column 22 and the description column 23, information on each search tree includes a root node identifier indicating a root node (root node), a subrule set identifier indicating a corresponding subrule set, and a search tree to which the search tree belongs. A search tree group identifier indicating a group is included. The information on the search tree group includes a search tree identifier list indicating each search tree to which the search tree belongs, and a base search tree identifier indicating a base search tree as a base.

次に、本発明に係る実施の形態において使用されるキャッシュテーブルおよびキャッシュエントリについて説明する。キャッシュエントリは、探索木を用いた、受信パケットに適合するルールの探索結果を記憶して再利用するために用いられる。探索木の探索処理への入力としては、受信パケットにおいてルールのマッチ条件として使用されるフィールド群(本実施の形態においては5フィールド、すなわち5タプル(5Tuple))が用いられる。以降、当該フィールド群の値を‘キー’と呼称する。キーが同じパケット群に対して、同じルールセットによるルール探索を行った場合、同じルールが得られる。したがって、本実施の形態においては、データ処理装置1は、キーごとにキャッシュエントリを作成して使用する。なお、以降、キーが同じパケット群のことを‘フロー’と呼称する。   Next, a cache table and a cache entry used in the embodiment according to the present invention will be described. The cache entry is used to store and reuse a search result of a rule that matches a received packet using a search tree. As an input to the search tree search process, a field group (5 fields, that is, 5 tuples in this embodiment) used as a rule match condition in the received packet is used. Hereinafter, the value of the field group is referred to as a “key”. When the same key set is used to perform a rule search based on the same rule set, the same rule is obtained. Therefore, in the present embodiment, the data processing device 1 creates and uses a cache entry for each key. Hereinafter, a group of packets having the same key is referred to as a “flow”.

図6は、図1に示したデータ処理装置1のキャッシュテーブル記憶部50に記憶される、キャッシュテーブルおよびキャッシュエントリに関する情報の一例を示す表であり、図6における(A)の部分は、キャッシュエントリに係る情報の一例を示す。図6における(B)の部分は、キャッシュエントリノード状態の一例を示す。図6における(A)(B)いずれの部分も、本実施の形態が使用するキャッシュエントリに係る情報の一構成例を示している。本実施の形態においては、オープン・アドレス(Open Address)型のハッシュテーブルを使用して、キャッシュエントリを記憶する例を示している。ただし、本実施形態は、このようなオープン・アドレス型のハッシュテーブルに限定されるものではない。   FIG. 6 is a table showing an example of information related to the cache table and the cache entry stored in the cache table storage unit 50 of the data processing device 1 shown in FIG. 1. FIG. 4 shows an example of information relating to an entry. Part (B) of FIG. 6 shows an example of the cache entry node state. Each of (A) and (B) in FIG. 6 shows a configuration example of information related to a cache entry used in the present embodiment. In the present embodiment, an example is shown in which a cache entry is stored using an open address (Open Address) type hash table. However, the present embodiment is not limited to such an open address type hash table.

キャッシュテーブルのバケツリスト(Bucket List)は、例えば、キャッシュエントリの配列として実現することができる。この場合、第N番目のバケツ(Bucket)のM番目のキャッシュエントリは、バケツリスト(Bucket List)における第(N−1)*(M−1)番目の要素にアクセスすることによって参照することができる。キャッシュエントリに係る情報は、図6の(A)部分の項目欄51に示すように、使用中フラグ、キー、ルール識別子、最終使用時刻、ノード状態リストに関する情報を含む。   The bucket list of the cache table (Bucket List) can be realized, for example, as an array of cache entries. In this case, the M-th cache entry of the N-th bucket (Bucket) can be referred to by accessing the (N-1) * (M-1) -th element in the bucket list (Bucket List). it can. The information related to the cache entry includes information about a busy flag, a key, a rule identifier, a last use time, and a node status list, as shown in the item column 51 of FIG.

図6の(A)部分の説明欄52に示すように、使用中フラグは、当該キャッシュエントリが使用中であるか否かを示すフラグである。使用中フラグがオンであれば、当該キャッシュエントリが使用中であることを示す。キーは、当該キャッシュエントリが表すフローに関するキーであり、ハッシュテーブル内探索用の探索キーとして使用される。また、ルール識別子は、当該キャッシュエントリに該当するパケットに適合するルールの識別子である。最終使用時刻は、当該キャッシュエントリを最後に使用した際の時刻を示す情報である。また、ノード状態リストは、図6の(B)部分に示すような、当該キャッシュエントリが最後に使用された際の、当該キャッシュエントリが表すフローが属するノードの状態(探索木毎の)リストを示している。   As shown in the description column 52 of FIG. 6A, the in-use flag is a flag indicating whether or not the cache entry is in use. If the in-use flag is on, it indicates that the cache entry is in use. The key is a key related to the flow represented by the cache entry, and is used as a search key for searching in the hash table. The rule identifier is an identifier of a rule that matches a packet corresponding to the cache entry. The last use time is information indicating the time when the cache entry was last used. The node state list is a list of states (for each search tree) of the node to which the flow represented by the cache entry belongs when the cache entry is used last, as shown in part (B) of FIG. Is shown.

つまり、図6の(B)部分に示すキャッシュエントリのノード状態リストは、当該キャッシュエントリのキーを用いてルールを探索した際に最終的に到達したノード(探索木毎)の情報を記憶する。図6の(B)部分における項目欄53に示すように、キャッシュエントリのノード状態は、探索木識別子、ノード識別子、更新カウンタキャッシュ、共有更新カウンタキャッシュを含む。   That is, the node state list of the cache entry shown in FIG. 6B stores information of the node (each search tree) that has finally reached when a rule is searched using the key of the cache entry. As shown in the item column 53 in FIG. 6B, the node state of the cache entry includes a search tree identifier, a node identifier, an update counter cache, and a shared update counter cache.

図6の(B)部分における説明欄54に示すように、ノード状態の探索木識別子は、当該ノード状態が示す探索木の識別子を示す。また、ノード状態のノード識別子は、当該キャッシュエントリが表すフローが当該探索木において属するノードの識別子である。また、ノード状態の更新カウンタキャッシュおよび共有更新カウンタキャッシュには、それぞれ、当該キャッシュエントリが最後に使用された際の、当該ノードの更新カウンタの値および共有更新カウンタの値が記憶される。なお、共有更新カウンタキャッシュは、ベース探索木のノードについてのみ使用される。   As shown in the description column 54 in FIG. 6B, the search tree identifier of the node state indicates the identifier of the search tree indicated by the node state. The node identifier in the node state is an identifier of a node to which the flow represented by the cache entry belongs in the search tree. The update counter cache and the shared update counter cache in the node state respectively store the value of the update counter and the value of the shared update counter of the node when the cache entry was last used. Note that the shared update counter cache is used only for nodes of the base search tree.

次に、図1に示したデータ処理装置1の探索木制御部10の詳細な構成例について、図2のブロック構成図を用いて説明する。図2は、図1に示したデータ処理装置1の探索木制御部10の詳細なブロック構成の一例を示すブロック構成図である。図2に示すように、探索木制御部10は、探索木初期化部11と、ルール更新部12と、探索木探索部13と、更新カウンタ取得部14と、を含む。   Next, a detailed configuration example of the search tree control unit 10 of the data processing device 1 shown in FIG. 1 will be described with reference to the block configuration diagram of FIG. FIG. 2 is a block diagram showing an example of a detailed block configuration of the search tree control unit 10 of the data processing device 1 shown in FIG. As shown in FIG. 2, the search tree control unit 10 includes a search tree initialization unit 11, a rule update unit 12, a search tree search unit 13, and an update counter acquisition unit 14.

探索木初期化部11は、初期状態において使用するルールセット(初期ルールセット)を基にして、探索木記憶部20およびルール記憶部30それぞれに記憶される探索木およびルールに係る情報を初期化する。当該初期ルールセットは、データ処理装置1が具備する記憶装置(図2には図示されていない)にあらかじめ記憶されていてもよい。また、当該初期ルールセットは、他の制御装置(図2には図示されていない)から与えられてもよい。   The search tree initialization unit 11 initializes information on the search tree and the rules stored in the search tree storage unit 20 and the rule storage unit 30, respectively, based on the rule set (initial rule set) used in the initial state. I do. The initial rule set may be stored in advance in a storage device (not shown in FIG. 2) included in the data processing device 1. Further, the initial rule set may be provided from another control device (not shown in FIG. 2).

また、ルール更新部12は、例えば図1に示したデータ処理装置制御部80からの要求に応じて、探索木記憶部20およびルール記憶部30それぞれに記憶される探索木およびルール(第1の情報エントリの一種)に係る情報を更新する部位である。ルール更新部12は、例えば、更新手段として機能する。ルール更新部12は、データ処理装置制御部80からの要求に含まれる操作種別(追加、変更、削除、のいずれか)およびルールを、パラメータとして受け取る。データ処理装置制御部80からの要求に含まれる操作種別がルール更新(ルール変更)の場合、該当するルールの優先度およびアクションの変更を要求することは可能であるが、マッチ条件は変更することができない。   Further, the rule updating unit 12 may be configured to search the search tree and the rule stored in the search tree storage unit 20 and the rule storage unit 30, respectively, in response to a request from the data processing device control unit 80 illustrated in FIG. This is a part for updating information relating to (a type of information entry). The rule updating unit 12 functions as, for example, an updating unit. The rule update unit 12 receives the operation type (any of addition, change, and deletion) and the rule included in the request from the data processing device control unit 80 as parameters. When the operation type included in the request from the data processing device control unit 80 is rule update (rule change), it is possible to request a change in the priority and action of the corresponding rule, but the match condition must be changed. Can not.

また、探索木探索部13は、例えば図1に示したパケット処理部60からの要求に応じて、指定されたキーに適合するルールを探索する。探索木探索部13は、探索に係るパラメータとして、探索に使用すべきキー(探索キー)をパケット処理部60から受け取る。探索木探索部13は、探索キーに適合する最高優先度のルールの識別子(最高優先度のルールが検出された場合)、および、探索木における探索において最終的に到達したノード(中間ノードもしくはリーフノード)の識別子(探索木毎)のリストを要求元に返す。   The search tree search unit 13 searches for a rule that matches the specified key, for example, in response to a request from the packet processing unit 60 illustrated in FIG. The search tree search unit 13 receives a key (search key) to be used for the search from the packet processing unit 60 as a parameter related to the search. The search tree search unit 13 determines the identifier of the highest-priority rule that matches the search key (when the highest-priority rule is detected), and the node (intermediate node or leaf) finally reached in the search in the search tree. A list of identifiers (for each search tree) of the node) is returned to the request source.

また、更新カウンタ取得部14は、例えば図1に示したパケット処理部60からの要求に応じて、指定されたノードの更新カウンタの最新の値および共有更新カウンタの最新の値を取得する。   The update counter obtaining unit 14 obtains the latest value of the update counter of the designated node and the latest value of the shared update counter in response to, for example, a request from the packet processing unit 60 shown in FIG.

次に、図1に示したデータ処理装置1のキャッシュテーブル制御部40の詳細な構成例について、図3のブロック構成図を用いて説明する。図3は、図1に示したデータ処理装置1のキャッシュテーブル制御部40の詳細なブロック構成の一例を示すブロック構成図である。図3に示すように、キャッシュテーブル制御部40は、キャッシュエントリ作成部41と、キャッシュエントリ探索部42と、キャッシュエントリ再評価部43と、を含む。   Next, a detailed configuration example of the cache table control unit 40 of the data processing device 1 shown in FIG. 1 will be described with reference to the block configuration diagram of FIG. FIG. 3 is a block diagram showing an example of a detailed block configuration of the cache table control unit 40 of the data processing device 1 shown in FIG. As shown in FIG. 3, the cache table control unit 40 includes a cache entry creation unit 41, a cache entry search unit 42, and a cache entry reevaluation unit 43.

キャッシュエントリ作成部41は、例えば図1に示したデータ処理装置1のパケット処理部60からの要求に応じて、キャッシュエントリを作成する。また、キャッシュエントリ作成部41は、指定されたキーに対応するバケツ(Bucket)に空きがない場合、当該バケツ(Bucket)内のキャッシュエントリを一つ削除し、新しいキャッシュエントリを作成する。   The cache entry creation unit 41 creates a cache entry, for example, in response to a request from the packet processing unit 60 of the data processing device 1 shown in FIG. When there is no free space in the bucket corresponding to the specified key, the cache entry creation unit 41 deletes one cache entry in the bucket and creates a new cache entry.

また、キャッシュエントリ探索部42は、例えば図1に示したデータ処理装置1のパケット処理部60からの要求に応じて、キャッシュエントリを探索する。キャッシュエントリ探索部42は、パラメータとしてキーを受け取り、受け取った当該キーに対応するキャッシュエントリを探索して、探索したキャッシュエントリを要求元に返す。   Further, the cache entry searching unit 42 searches for a cache entry in response to a request from the packet processing unit 60 of the data processing device 1 shown in FIG. 1, for example. The cache entry search unit 42 receives the key as a parameter, searches for a cache entry corresponding to the received key, and returns the searched cache entry to the request source.

また、キャッシュエントリ再評価部43は、例えば図1に示したデータ処理装置1のパケット処理部60からの要求に応じて、キャッシュエントリを再評価する。キャッシュエントリ再評価部43は、キャッシュエントリの識別子を受け取る。ここで、キャッシュエントリの再評価とは、指定されたキャッシュエントリとして記憶している探索木探索結果(当該キャッシュエントリが表すフローに適合するルール)が、最新のルールセットの状態においても有効か否かを確認することである。キャッシュエントリ再評価部43は、あるキャッシュエントリが最新のルールセットの状態において有効か否かを確認するために、当該キャッシュエントリとして記憶された、以下のような情報を含むノード状態リストと、関連するノードの更新カウンタおよび共有更新カウンタの最新の値とを使用する。   The cache entry re-evaluation unit 43 re-evaluates the cache entry in response to a request from the packet processing unit 60 of the data processing device 1 shown in FIG. 1, for example. The cache entry reevaluation unit 43 receives the identifier of the cache entry. Here, the re-evaluation of the cache entry means that the search tree search result (the rule matching the flow represented by the cache entry) stored as the specified cache entry is valid even in the state of the latest rule set. Is to make sure. The cache entry re-evaluation unit 43 checks whether or not a certain cache entry is valid in the state of the latest rule set, and stores a node state list including the following information stored as the cache entry, And the latest value of the node's update counter and shared update counter.

(a)当該フローが各探索木において属するノード、
(b)当該キャッシュエントリが最後に使用された際の、各当該ノードの更新カウンタの値、
(c)当該キャッシュエントリが最後に使用された際の、各当該ノードの共有更新カウンタの値(ベース探索木のノードのみ有効)。
(A) a node to which the flow belongs in each search tree;
(B) the value of the update counter of each node when the cache entry is used last;
(C) The value of the shared update counter of each node when the cache entry is used last (only the node of the base search tree is valid).

[実施の形態の動作例]
次に、本実施の形態の構成例として図1〜図3に例示したデータ処理装置1における以下の各動作について、その一例を、図面を参照しながら詳細に説明する。
(A)探索木初期化処理、
(B)ルール更新処理、
(C)ルール探索処理、
(D)パケット処理、
(E)キャッシュエントリ作成処理、
(F)キャッシュエントリ探索処理、
(G)キャッシュエントリ再評価処理。
[Operation Example of Embodiment]
Next, an example of each of the following operations in the data processing device 1 illustrated in FIGS. 1 to 3 as a configuration example of the present embodiment will be described in detail with reference to the drawings.
(A) search tree initialization processing,
(B) rule update processing,
(C) rule search processing,
(D) packet processing,
(E) cache entry creation processing,
(F) cache entry search processing;
(G) Cache entry reevaluation processing.

<(A)探索木初期化処理>
まず、図7〜図9のフローチャートを用いて、探索木初期化処理の動作例について説明する。図7は、図1に示したデータ処理装置1の探索木制御部10における探索木初期化部11が、探索木記憶部20およびルール記憶部30にそれぞれ記憶される探索木およびルールセットを初期化する際の、動作の一例を示すフローチャートである。図7のフローチャートに例示する本探索木初期化処理の動作は、例えば、データ処理装置1の起動時に開始されてもよく、データ処理装置制御部80からの初期化要求に応じて開始されてもよい。なお、本探索木初期化処理の動作の開始に際して、探索木制御部10における探索木初期化部11には、初期状態で使用するルールセット(すなわち初期ルールセット)がパラメータとして与えられる。
<(A) Search tree initialization processing>
First, an operation example of the search tree initialization processing will be described with reference to the flowcharts of FIGS. FIG. 7 shows that the search tree initialization unit 11 in the search tree control unit 10 of the data processing apparatus 1 shown in FIG. 1 initializes the search tree and the rule set stored in the search tree storage unit 20 and the rule storage unit 30, respectively. 9 is a flowchart showing an example of an operation when the operation is changed. The operation of the search tree initialization process illustrated in the flowchart of FIG. 7 may be started, for example, when the data processing device 1 is started, or may be started in response to an initialization request from the data processing device control unit 80. Good. At the start of the operation of the search tree initialization processing, the search tree initialization unit 11 in the search tree control unit 10 is given a rule set (that is, an initial rule set) used in the initial state as a parameter.

図7のフローチャートにおいて、探索木初期化部11は、まず、パラメータとして与えられた初期ルールセットを、各ルールの特徴を用いてサブルールセットに分割し、ルール記憶部30に記憶させる(ステップS101)。上記サブルールセットへの分割は、周知の技術を用いて行われて良く、例えば、上記非特許文献1に記載の分割方法を用いてもよい。   In the flowchart of FIG. 7, the search tree initialization unit 11 divides an initial rule set given as a parameter into sub-rule sets using characteristics of each rule, and stores the sub-rule set in the rule storage unit 30 (step S101). ). The division into the sub-rule sets may be performed using a well-known technique. For example, the division method described in Non-Patent Document 1 may be used.

当該サブルールセットへの分割方法においては、まず、ルールのマッチ条件として使用される各フィールドについて、該当する当該フィールドにおけるマッチ条件の大小を判定する閾値を設定する。例えば、プロトコル番号フィールド(採り得る値0〜255)について閾値”0.5”を設定する。そして、或るルールの”(終了プロトコル番号)−(開始プロトコル番号)”が、”127(=255*0.5(整数部))”以上であれば、探索木初期化部11が、当該ルールは、プロトコル番号について大きいと判定する。また、127未満であれば、探索木初期化部11は、当該ルールは、プロトコル番号について小さいと判定する。   In the method of dividing into sub-rule sets, first, for each field used as a match condition of a rule, a threshold for determining the magnitude of the match condition in the corresponding field is set. For example, a threshold value “0.5” is set for the protocol number field (possible values 0 to 255). If “(end protocol number) − (start protocol number)” of a certain rule is equal to or more than “127 (= 255 * 0.5 (integer part))”, the search tree initialization unit 11 The rule determines that the protocol number is large. If the value is less than 127, the search tree initialization unit 11 determines that the rule is small for the protocol number.

当該サブルールセットへの分割方法において、探索木初期化部11は、各ルールの各フィールド(5タプル(5Tuple))について、それぞれ大小判定を行う。次に、探索木初期化部11は、各フィールドの大小判定結果が同じであるルール群を、一つのサブルールセットとする。探索木初期化部11は、例えば、送信先IPアドレスおよび送信先ポート番号のフィールドのみが大きく、残りのフィールドが小さいと判定されたルール群により一つのサブルールセットを構成する。ただし、マッチ条件が小さいフィールドの数が4以上のルール群については、纏めて一つのサブルールセットとする。サブルールセットの構成例を図21Aおよび図21Bに例示する。このサブルールセットの構成例は図21Aおよび図21Bの2つの図面で示してあり、図21Bは図21Aの続きの部分を示す。即ち、図21Aおよび図21Bは一続きの図面として理解するべき図面であるので、以下では両図面を一つの図面として纏めて図21と称することとする。説明の便宜上、図21Aおよび図21Bの上部には同じ内容の凡例を設けられている。但し、図21Aおよび図21Bの両図を一体としてみる場合(即ち図21Aの下端に図21Bの上端を接続した形で両図をみる場合)には、図21B上部の凡例は省略されたものとして扱われてよい。図21は、図1に示したデータ処理装置1の探索木制御部10における探索木初期化部11が、ルールセットをルールの特徴に基づいて分割する際の、サブルールセットの例を示す説明図である。図21には、ルールが、送信元IPアドレス(IPS)、送信先IPアドレス(IPD)、(通信)プロトコル(P)、送信元ポート(TPS)、送信先ポート(TPD)の5つのフィールド(5タプル)からなる場合の、サブルールセットの構成例が示されている。なお、図21においては、各フィールドにおけるマッチ条件の指定が小さいフィールドを、ハッチング(網掛け)を施した四角形によって示している。   In the method for dividing into sub-rule sets, the search tree initialization unit 11 performs magnitude determination on each field (5 tuples) of each rule. Next, the search tree initialization unit 11 sets a rule group having the same magnitude determination result in each field as one sub-rule set. The search tree initialization unit 11 forms one sub-rule set by a rule group in which only the fields of the destination IP address and the destination port number are large and the remaining fields are small. However, a rule group in which the number of fields having small match conditions is four or more is collectively regarded as one sub-rule set. 21A and 21B illustrate a configuration example of the sub-rule set. An example of the configuration of this sub-rule set is shown in the two drawings of FIGS. 21A and 21B, and FIG. 21B shows a continuation of FIG. 21A. That is, since FIGS. 21A and 21B are drawings to be understood as a continuous drawing, both drawings are collectively referred to as FIG. 21 below. For convenience of explanation, legends having the same contents are provided in the upper part of FIGS. 21A and 21B. However, in the case where both figures of FIG. 21A and FIG. 21B are viewed integrally (that is, when both figures are viewed with the upper end of FIG. 21B connected to the lower end of FIG. 21A), the legend at the top of FIG. 21B is omitted. May be treated as FIG. 21 is a diagram illustrating an example of a sub-rule set when the search tree initialization unit 11 in the search tree control unit 10 of the data processing device 1 illustrated in FIG. 1 divides a rule set based on rule characteristics. FIG. In FIG. 21, the rule includes five fields of a source IP address (IPS), a destination IP address (IPD), a (communication) protocol (P), a source port (TPS), and a destination port (TPD). 5 shows an example of the configuration of a sub-rule set in the case of (5 tuples). In FIG. 21, a field in which the match condition is specified in each field is indicated by a hatched rectangle.

図21のサブルールセット構成例において、図21(図21A)における(a)部分は、マッチ条件の指定が5フィールド(5タプル)とも大きいルール群として‘サブセット5’の1個のサブルールセットが存在する場合を示す。また、図21(図21A)の(b)部分は、マッチ条件の指定が小さいフィールドの数が1個のルール群として、‘サブセット1−1’〜‘サブセット1−5’の5個のサブルールセットが存在する場合を示す。例えば、‘サブセット1−1’の場合は、ハッチングによって示しているように、送信元IPアドレスのフィールドが、小さいフィールドであることを示している。   In the example of the sub-rule set configuration of FIG. 21, (a) in FIG. 21 (FIG. 21A) is a sub-rule set of 'subset 5' as a rule group in which the specification of the match condition is large for all five fields (five tuples). Indicates the presence of Further, FIG. 21 (FIG. 21A) portion (b) shows five rule sub-sets of “subset 1-1” to “subset 1-5” as a rule group in which the number of fields with a small matching condition designation is one. Indicates when a ruleset exists. For example, in the case of “subset 1-1”, as indicated by hatching, the field of the source IP address is a small field.

また、図21(図21A)の(c)部分は、マッチ条件の指定が小さいフィールドの数が2個のルール群として、‘サブセット2−1’〜‘サブセット2−10’の10個のサブルールセットが存在する場合を示している。例えば、‘サブセット2−1’の場合は、ハッチングによって示しているように、送信元IPアドレスと送信先IPアドレスとの2つのフィールドが、小さいフィールドであることを示している。また、図21(図21B)の(d)は、マッチ条件の指定が小さいフィールドの数が3個のルール群として、‘サブセット3−1’〜‘サブセット3−10’の10個のサブルールセットが存在する場合を示している。例えば、‘サブセット3−1’の場合は、ハッチングによって示しているように、送信元IPアドレスと送信先IPアドレスとプロトコルとの3つのフィールドが、小さいフィールドであることを示している。   Further, FIG. 21 (FIG. 21A) part (c) is a rule group in which the number of fields for which the specification of the match condition is small is two, and the ten sub-sets of 'subset 2-1' to 'subset 2-10' are This shows a case where a rule set exists. For example, in the case of “subset 2-1”, as indicated by hatching, two fields of the source IP address and the destination IP address are small fields. Also, (d) of FIG. 21 (FIG. 21B) shows a rule group in which the number of fields for which the specification of the match condition is small is three, and the ten sub-rules of “subset 3-1” to “subset 3-10” This shows the case where the set exists. For example, in the case of “subset 3-1”, as indicated by hatching, three fields of the source IP address, the destination IP address, and the protocol are small fields.

また、図21(図21B)の(e)部分は、マッチ条件の指定が小さいフィールドの数が4個以上のルール群として、‘サブセット4’の1個のサブルールセットに纏められて収容される場合を示している。例えば、送信元IPアドレスと送信先IPアドレスとプロトコルと送信元ポートとの4つのフィールドが小さいフィールドである場合も、送信元IPアドレスと送信先IPアドレスとプロトコルと送信元ポートと送信先ポートの5つのフィールドが小さいフィールドである場合も、‘サブセット4’という一つのサブルールセットに纏めて収容される。   Further, part (e) of FIG. 21 (FIG. 21B) is accommodated in one sub-rule set of 'subset 4' as a rule group in which the number of fields for which the match condition is specified is small is four or more. Is shown. For example, even when the four fields of the source IP address, the destination IP address, the protocol, and the source port are small fields, the fields of the source IP address, the destination IP address, the protocol, the source port, and the destination port are also used. Even when the five fields are small fields, they are collectively accommodated in one sub-rule set called “subset 4”.

図7のフローチャートの説明に戻って、探索木初期化部11は、次に、サブルールセット毎に探索木を構築する(ステップS102)。その動作の詳細については後述する。しかる後、探索木初期化部11は、探索木グループと、各探索木グループのベース探索木と、を決定する(ステップS103)。ここで、探索木初期化部11は、例えば、各探索木に含まれるルールの特徴を用いてあらかじめ定めたグループ化基準により、探索木をグループ化する。係るグループ化基準は、例えば、ルールのマッチ条件(データ識別情報の一種)の粒度を与える、以下に示すようなグループ化基準であってもよい。   Returning to the description of the flowchart in FIG. 7, the search tree initialization unit 11 next builds a search tree for each sub-rule set (step S102). Details of the operation will be described later. Thereafter, the search tree initialization unit 11 determines a search tree group and a base search tree of each search tree group (step S103). Here, the search tree initialization unit 11 groups the search trees according to a predetermined grouping criterion using the characteristics of the rules included in each search tree, for example. Such a grouping criterion may be, for example, the following grouping criterion that gives the granularity of a rule match condition (a type of data identification information).

(a)グループ化基準A:マッチ条件の指定が5フィールドとも大きいルール群を収容する探索木(図21の(a)部分の‘サブセット5’用探索木)は、単独で探索木グループを構成する。   (A) Grouping criterion A: A search tree (a search tree for 'subset 5' in part (a) of FIG. 21) accommodating a rule group in which match conditions are specified in all five fields constitutes a search tree group by itself. I do.

(b)グループ化基準B:マッチ条件の指定が小さいフィールド数が4以上のルール群を収容する探索木(図21の(e)部分の‘サブセット4’用探索木)についても、単独で探索木グループを構成するようにしてもよい。   (B) Grouping criterion B: A search tree (a search tree for 'subset 4' in (e) of FIG. 21) which accommodates a rule group having a small number of match fields and a field number of 4 or more is also independently searched. Tree groups may be configured.

(c)グループ化基準C:マッチ条件の指定が小さいフィールドの数が少ない(例えば1個の)ルール群を収容する探索木(図21の(b)部分の‘サブセット1−1’用探索木〜‘サブセット1−5’用探索木)は、それぞれ異なる探索木グループに含める。   (C) Grouping criterion C: a search tree accommodating a rule group having a small number of fields (for example, one) with a small specification of a match condition (a search tree for 'subset 1-1' in part (b) of FIG. 21) To 'subset 1-5' search trees) are included in different search tree groups.

(d)グループ化基準D:マッチ条件の指定の大小パターンが似ている探索木同士を同じ探索木グループに含め、似ていない探索木同士は別の探索木グループに含める。   (D) Grouping criterion D: Search trees having similar large and small patterns specified in the match condition are included in the same search tree group, and search trees that are not similar are included in another search tree group.

(d−1)例えば、マッチ条件の指定が小さいフィールドを‘0’、大きいフィールドを‘1’と表し、各探索木についてマッチ条件の指定の大小パターンから5ビット2進数列を作成する。そして、各探索木について作成した5ビット2進数列間のハミング距離(具体的には、数値化されたハミング距離)を用いて、2つの探索木に関する類似度判定を行う。     (D-1) For example, a field with a small match condition designation is represented by "0" and a large field is represented by "1", and a 5-bit binary sequence is created for each search tree from the large and small pattern designated by the match condition. Then, the similarity determination regarding the two search trees is performed using the Hamming distance (specifically, the quantified Hamming distance) between the 5-bit binary sequences created for each search tree.

(d−2)例えば、図21の(c)部分の‘サブセット2−5’用2進数列は‘10011’、図21(d)の‘サブセット3−7’用2進数列は‘10001’であり、その間のハミング距離は‘1’である。また、図21の(c)部分の‘サブセット2−7’用2進数列は‘10110’であり、サブセット2−5用2進数列とのハミング距離は‘2’である。したがって、‘サブセット2−5’用探索木と同じ探索木グループに収容する探索木としては、ハミング距離が小さい‘サブセット3−7’用探索木の方が、‘サブセット2−7‘用探索木よりも望ましい。     (D-2) For example, the binary sequence for 'subset 2-5' in FIG. 21C is '10011', and the binary sequence for 'subset 3-7' in FIG. 21D is '10001'. And the Hamming distance between them is '1'. In addition, the binary sequence for "subset 2-7" in part (c) of FIG. 21 is "10110", and the hamming distance with the binary sequence for subset 2-5 is "2". Therefore, as a search tree accommodated in the same search tree group as the search tree for 'subset 2-5', the search tree for 'subset 3-7' having a smaller Hamming distance is the search tree for 'subset 2-7'. More desirable.

(e)グループ化基準E:各探索木グループに含まれる探索木の数が、なるべく等しくなるようにする(ただし、グループ化基準Aおよびグループ化基準Bによるグループを除く)。   (E) Grouping criterion E: The number of search trees included in each search tree group is set to be as equal as possible (excluding the groups based on the grouping criterion A and the grouping criterion B).

図21のサブルールセット構成例における探索木初期化部11によるグループ化の結果を示す探索木グループの一例を、図22に示す。図22は、図1に示したデータ処理装置1の探索木制御部10における探索木初期化部11により作成される探索木グループの一例を示す表である。図21のサブルールセット構成例の場合、前述のグループ化基準A〜Eを適用することにより、図22の探索木グループ欄111に示すように、サブルールセットは、探索木グループ1〜探索木グループ7の7個の探索木グループにグルーピングされる。   FIG. 22 shows an example of a search tree group indicating a result of grouping by the search tree initialization unit 11 in the example of the sub-rule set configuration of FIG. FIG. 22 is a table showing an example of a search tree group created by the search tree initialization unit 11 in the search tree control unit 10 of the data processing device 1 shown in FIG. In the case of the sub-rule set configuration example in FIG. 21, by applying the above-described grouping criteria A to E, the sub-rule set is divided into search tree groups 1 to It is grouped into seven search tree groups of group 7.

例えば、探索木グループ1には、図22の使用グループ化基準欄113に示すように、図21に例示するサブルールセットに対して、グループ化基準C、D、Eを適用することによりグループ化された探索木が含まれる。即ち、図22の所属探索木欄112に示すように、探索木グループ1には、図21の‘サブセット1−1’、‘サブセット2−1’、‘サブセット2−2’、‘サブセット3−1’、‘サブセット3−3’の5個の探索木が属する。同様に、探索木グループ2には、図21に例示するサブルールセットに対して、グループ化基準C、D、Eを適用することによりグループ化された探索木が含まれる。即ち、図22の所属探索木欄112に示すように、探索木グループ2には、図21の‘サブセット1−2’、‘サブセット2−5’、‘サブセット2−6’、‘サブセット3−7’、‘サブセット3−9’の5個の探索木が属する。また、探索木グループ6には、グループ化基準Aを適用することにより、‘サブセット5’の1個の探索木が属する。探索木グループ7には、グループ化基準Bを適用することにより、‘サブセット4’の1個の探索木が属する。   For example, as shown in the use grouping criterion column 113 in FIG. 22, the search tree group 1 is grouped by applying the grouping criterion C, D, and E to the sub-rule set illustrated in FIG. Search tree is included. That is, as shown in the belonging search tree column 112 in FIG. 22, the search tree group 1 includes “subset 1-1”, “subset 2-1”, “subset 2-2”, “subset 2-2” in FIG. 5 'search trees 1' and 'subset 3-3' belong. Similarly, search tree group 2 includes search trees grouped by applying grouping criteria C, D, and E to the sub-rule set illustrated in FIG. That is, as shown in the belonging search tree column 112 in FIG. 22, the search tree group 2 includes “subset 1-2”, “subset 2-5”, “subset 2-6”, and “subset 3” in FIG. 7 'and five search trees of' subset 3-9 'belong. In addition, one search tree of the ‘subset 5’ belongs to the search tree group 6 by applying the grouping criterion A. One search tree of 'subset 4' belongs to search tree group 7 by applying grouping criterion B.

さらに、探索木初期化部11は、例えば、決定された各探索木グループの中から、マッチ条件の指定が小さいフィールドの数が最も小さい(少ない)探索木を、当該探索木グループのベース探索木として選択する。図22の例においては、探索木初期化部11は、例えば、探索木グループ1のベース探索木として‘サブセット1−1’用探索木(マッチ条件の小さいフィールドの数が‘1’の探索木)を選択する。   Further, for example, the search tree initialization unit 11 determines, from among the determined search tree groups, a search tree having the smallest (small) number of fields whose match condition is specified as the base search tree of the search tree group. Select as In the example of FIG. 22, the search tree initialization unit 11 determines, for example, a search tree for “subset 1-1” (a search tree whose number of fields having a small match condition is “1”) as a base search tree of the search tree group 1. ).

次に、図7のステップS102において、探索木初期化部11がサブルールセット毎に探索木を構築する動作の一例について、図8および図9のフローチャートを参照して説明する。図8は、図1に示したデータ処理装置1の探索木制御部10における探索木初期化部11が、探索木構築処理を行う際の動作の一例を示すフローチャートであり、探索木初期化部11が探索木を構築する際の動作の一例を示している。   Next, an example of the operation in which the search tree initialization unit 11 constructs a search tree for each sub-rule set in step S102 in FIG. 7 will be described with reference to the flowcharts in FIGS. FIG. 8 is a flowchart illustrating an example of an operation when the search tree initialization unit 11 in the search tree control unit 10 of the data processing device 1 illustrated in FIG. 1 performs a search tree construction process. 11 shows an example of the operation when constructing a search tree.

図8のフローチャートにおいて、探索木初期化部11は、まず、構築する探索木のルートノードを割り当てる(ステップS111)。具体的には、探索木初期化部11は、探索木記憶部20にルートノードの情報を記憶するデータ領域を割り当て、当該ルートノードについて以下のような情報を設定する。   In the flowchart of FIG. 8, the search tree initialization unit 11 first assigns a root node of the search tree to be constructed (step S111). Specifically, the search tree initialization unit 11 allocates a data area for storing information of a root node to the search tree storage unit 20, and sets the following information for the root node.

(a)リーフノードフラグ:オフ、
(b)親ノード識別子 :無効値、
(c)部分空間 :下記の探索空間全体、
(c−1)送信先IPアドレス:0.0.0.0〜255.255.255.255、
(c−2)送信元IPアドレス:0.0.0.0〜255.255.255.255、
(c−3)プロトコル番号 :0〜255、
(c−4)送信先ポート番号 :0〜65535、
(c−5)送信元ポート番号 :0〜65535、
(d)更新カウンタおよび共有更新カウンタ:0。
(A) Leaf node flag: off,
(B) parent node identifier: invalid value,
(C) Subspace: The entire search space below,
(C-1) Destination IP address: 0.0.0.0 to 255.255.255.255,
(C-2) Source IP address: 0.0.0.0 to 255.255.255.255,
(C-3) Protocol number: 0 to 255,
(C-4) Destination port number: 0 to 65535,
(C-5) Source port number: 0 to 65535,
(D) Update counter and shared update counter: 0.

次いで、探索木初期化部11は、割り当てたルートノードについて、後述する探索木構築サブ処理Aを実行する(ステップS112)。その際、探索木初期化部11は、当該ルートノードと、処理対象のサブルールセットに含まれる全てのルールと、をパラメータとして使用する。   Next, the search tree initialization unit 11 executes a search tree construction sub-process A described later for the assigned root node (step S112). At that time, the search tree initialization unit 11 uses the root node and all the rules included in the processing target sub-rule set as parameters.

次に、図8のフローチャートのステップS112において実行される探索木構築サブ処理Aの詳細な動作について、図9のフローチャートを用いて説明する。図9は、図8のフローチャートのステップS112において実行される探索木構築サブ処理Aの詳細な動作の一例を示すフローチャートである。本探索木構築サブ処理Aは、パラメータとして、処理対象のノード(例えばノード識別子の形式、以降‘処理対象ノード’と記載)および当該ノードに含まれるルールの集合(例えばルール識別子のリストの形式、以降‘処理対象ルールセット’と記載)を受け取る。   Next, the detailed operation of the search tree construction sub-process A executed in step S112 of the flowchart of FIG. 8 will be described using the flowchart of FIG. FIG. 9 is a flowchart illustrating an example of a detailed operation of the search tree construction sub-process A executed in step S112 of the flowchart of FIG. The search tree construction sub-process A includes, as parameters, a processing target node (for example, a node identifier format, hereinafter referred to as a “processing target node”) and a set of rules included in the node (for example, a rule identifier list format, Hereinafter, it is described as 'rule set to be processed').

図9のフローチャートにおいて、探索木初期化部11は、まず、処理対象ルールセットに含まれるルールの数があらかじめ定めた一定数(Binth)以下か否かを確認する(ステップS121)。ルールの数が一定数(Binth)以下ではなかった場合(ステップS121のNO)、探索木初期化部11は、処理対象ノードが表す部分空間をカット(Cut)する次元およびカット(Cut)数を決定する(ステップS122)。ここで、カット(Cut)する次元およびカット(Cut)数は、周知の技術を用いて決定されてもよく、例えば、係る技術として、上記非特許文献1および該非特許文献1が参照する文献に記載の分割方法が用いられてもよい。   In the flowchart of FIG. 9, the search tree initialization unit 11 first checks whether the number of rules included in the rule set to be processed is equal to or smaller than a predetermined number (Binth) (step S121). If the number of rules is not equal to or smaller than the fixed number (Binth) (NO in step S121), the search tree initialization unit 11 determines the dimension for cutting (Cut) the subspace represented by the processing target node and the number of cuts (Cut). It is determined (step S122). Here, the dimension to cut (Cut) and the number of cuts (Cut) may be determined using a known technique. For example, as such a technique, see Non-Patent Document 1 and the documents referred to by Non-Patent Document 1. The described division method may be used.

上記非特許文献1および該非特許文献1が参照する文献に記載の当該分割方法においては、処理対象ルールセットの各ルールのマッチ条件が、処理対象ノードの部分空間との共通部分に限定される。例えば、或るルールのプロトコル番号が10〜20であり、処理対象ノードの部分空間のプロトコル番号が15〜25であった場合、当該ルールのマッチ条件のプロトコル番号は、15〜20に決定される。   In the division method described in Non-Patent Document 1 and the document referred to by Non-Patent Document 1, the matching condition of each rule of the processing target rule set is limited to a common part with the subspace of the processing target node. For example, when the protocol number of a certain rule is 10 to 20 and the protocol number of the subspace of the processing target node is 15 to 25, the protocol number of the match condition of the rule is determined to be 15 to 20. .

さらに、当該分割方法は、各次元(フィールド)について、ユニークな範囲の数を計算する。例えば、ルールが3つあり、各ルールのマッチ条件のプロトコル番号が、それぞれ、15〜20、16〜20、17〜17、であった場合、ユニークな範囲の数は3となる。また、各ルールのマッチ条件のプロトコル番号が、それぞれ、15〜20、15〜20、17〜17、であった場合には、ユニークな範囲の数は2となる(すなわち、第1番目と第2番目とは同一のプロトコル番号であるため)。そして、当該分割方法は、全次元についてのユニークな範囲の数の平均より大きいユニークな範囲の数を有する次元を、カット(Cut)する次元として選択する。   Further, the division method calculates the number of unique ranges for each dimension (field). For example, when there are three rules and the protocol numbers of the match conditions of each rule are 15 to 20, 16 to 20, and 17 to 17, respectively, the number of unique ranges is three. Further, when the protocol numbers of the match conditions of each rule are 15 to 20, 15 to 20, and 17 to 17, respectively, the number of unique ranges is 2 (that is, the first and second unique ranges). The second is the same protocol number). Then, in the division method, a dimension having a number of unique ranges larger than the average of the number of unique ranges for all dimensions is selected as a dimension to be cut (Cut).

また、当該分割方法は、カット(Cut)する数の上限値を、メモリ使用量を調整するためのパラメータであるspfac(Special Factor)と、処理対象ルールセットの大きさ(ルール数)とから決定する。例えば、当該分割方法は、当該ルール数の平方根と、パラメータspfacとを積算した値をカット(Cut)する数の上限値とする。そして、当該分割方法は、カット(Cut)する数を2としたときの、各子ノードに含まれるルールの数の平均値および最大値を求める。   In the division method, the upper limit of the number of cuts is determined from spfac (Special Factor), which is a parameter for adjusting the memory usage, and the size of the rule set to be processed (the number of rules). I do. For example, in the division method, a value obtained by integrating the square root of the number of rules and the parameter spfac is set as the upper limit of the number to be cut. Then, in the division method, when the number of cuts is 2, the average value and the maximum value of the number of rules included in each child node are obtained.

さらに、当該分割方法は、カット(Cut)する数を増やし、その時の各子ノードに含まれるルールの数の平均値および最大値を求める。そして、当該分割方法は、カット(Cut)する値が上限値に達するか、もしくは、カット(Cut)する数を増やしても、各子ノードに含まれるルールの数の平均値および最大値に大きな変化が現れなくなった際のカット(Cut)する数を、処理対象ノードをカット(Cut)する数として決定する。   Further, in the division method, the number of cuts is increased, and the average value and the maximum value of the number of rules included in each child node at that time are obtained. Then, even if the value to be cut (Cut) reaches the upper limit value or the number of cuts (Cut) is increased, the division method has a large average value and a maximum value of the number of rules included in each child node. The number of cuts (Cut) when the change stops appearing is determined as the number of cuts (Cut) of the processing target node.

図9のフローチャートの説明に戻る。探索木初期化部11は、次に、ステップS122において決定したカット(Cut)方法(Cutする次元と、Cutする数)に基づき、処理対象ノードが表す部分空間をカット(Cut)した場合に得られる各部分空間について、子ノードを割り当てる(ステップS123)。具体的には、探索木初期化部11は、探索木記憶部20に各子ノードの情報を記憶するデータ領域を割り当てさせ、各子ノードについて以下のような情報を設定する。なお、カット(Cut)した結果得られた部分空間に含まれるルールの数が‘0’の場合には、当該部分空間を表す子ノードは割り当てなくてもよい。   Returning to the description of the flowchart of FIG. Next, the search tree initialization unit 11 obtains the result when the subspace represented by the processing target node is cut (Cut) based on the cut (Cut) method (the dimension to be cut and the number of cuts) determined in step S122. A child node is assigned to each of the subspaces (step S123). Specifically, the search tree initialization unit 11 causes the search tree storage unit 20 to allocate a data area for storing information of each child node, and sets the following information for each child node. When the number of rules included in the subspace obtained as a result of the cut is 0, a child node representing the subspace does not need to be assigned.

(a)リーフノードフラグ:オフ、
(b)親ノード識別子 :処理対象ノードの識別子、
(c)部分空間情報 :当該子ノードが表す部分空間、
(d)更新カウンタおよび共有更新カウンタ:0。
(A) Leaf node flag: off,
(B) parent node identifier: identifier of the processing target node,
(C) subspace information: subspace represented by the child node;
(D) Update counter and shared update counter: 0.

次いで、探索木初期化部11は、ステップS123において割り当てた各子ノードについて、ステップS121〜S123までの本探索木構築サブ処理Aを実行する(ステップS124)。その際、探索木初期化部11は、処理対象の子ノードと、当該子ノードに含まれるルールの集合と、をパラメータとして使用する。   Next, the search tree initialization unit 11 executes the main search tree construction sub-process A of steps S121 to S123 for each child node assigned in step S123 (step S124). At this time, the search tree initialization unit 11 uses a child node to be processed and a set of rules included in the child node as parameters.

なお、ステップS121において、ルールの数が一定数(Binth)以下であった場合には(ステップS121のYES)、探索木初期化部11は、処理対象ノードをリーフノードとしてセットアップする(ステップS125)。具体的には、探索木初期化部11は、処理対象ノードについて以下のような設定変更・追加を行う。   If the number of rules is equal to or smaller than the fixed number (Binth) in step S121 (YES in step S121), the search tree initialization unit 11 sets up the processing target node as a leaf node (step S125). . Specifically, the search tree initialization unit 11 changes or adds the following settings to the processing target node.

(a)リーフノードフラグ: オン、
(b)ルール識別子リスト: 当該子ノードに含まれるルールの識別子のリスト。
(A) Leaf node flag: ON,
(B) Rule identifier list: A list of rule identifiers included in the child node.

<(B)ルール更新処理>
次に、図10〜図14のフローチャートを用いて、ルール更新処理の動作例について説明する。図10は、図1に示したデータ処理装置1の探索木制御部10におけるルール更新部12が、探索木記憶部20およびルール記憶部30それぞれに記憶される探索木およびルールセットを更新する際の動作の一例を示すフローチャートである。図10のフローチャートに例示する本ルール更新処理の動作は、例えば、データ処理装置制御部80からの要求により開始されてもよい。ルール更新部12は、ルール更新処理に係るパラメータとして、操作種別(追加、変更、削除、のいずれか)およびルール(以降、‘処理対象ルール’と記載)を受け取る。
<(B) Rule update processing>
Next, an operation example of the rule update process will be described with reference to the flowcharts of FIGS. FIG. 10 illustrates a case where the rule updating unit 12 in the search tree control unit 10 of the data processing apparatus 1 illustrated in FIG. 1 updates the search tree and the rule set stored in the search tree storage unit 20 and the rule storage unit 30, respectively. 5 is a flowchart showing an example of the operation of FIG. The operation of the rule update process exemplified in the flowchart of FIG. 10 may be started, for example, by a request from the data processing device control unit 80. The rule update unit 12 receives an operation type (any of addition, change, and deletion) and a rule (hereinafter, referred to as a “process target rule”) as parameters related to the rule update process.

図10のフローチャートにおいて、ルール更新部12は、まず、処理対象ルールが含まれる、処理対象のサブルールセットを選択する(ステップS131)。該サブルールセットの選択は、処理対象ルールの特徴に基づき、図7のフローチャートのステップS101によって用いられた方法と同じ方法によって行われる。   In the flowchart of FIG. 10, the rule update unit 12 first selects a processing target sub-rule set including the processing target rule (step S131). The selection of the sub-rule set is performed by the same method as the method used in step S101 of the flowchart of FIG.

次に、ルール更新部12は、パラメータとして要求されている現在の操作が、ルール削除か否かを確認する(ステップS132)。要求されている現在の操作がルール削除であった場合には(ステップS132のYES)、ルール更新部12は、ルール記憶部30に記憶されている処理対象ルールの削除フラグをオンに設定した後(ステップS134)、ステップS135に移行する。一方、要求されている現在の操作がルール削除ではなかった場合には(ステップS132のNO)、ルール更新部12は、処理対象のサブルールセットを、パラメータによる要求にしたがって更新した後(ステップS133)、ステップS135に移行する。具体的な更新処理としては、ルール追加の場合には、ルール更新部12は、ルール記憶部30に処理対象サブルールセットの一要素として処理対象ルールを新たに記憶させる。また、ルール変更の場合には、ルール更新部12は、ルール記憶部30に処理対象サブルールセットの一要素として記憶されている処理対象ルールの情報(優先度およびアクション)を変更する。   Next, the rule update unit 12 checks whether the current operation requested as a parameter is a rule deletion (step S132). If the requested current operation is rule deletion (YES in step S132), the rule updating unit 12 sets the deletion flag of the processing target rule stored in the rule storage unit 30 to ON. (Step S134), the process proceeds to step S135. On the other hand, when the requested current operation is not the rule deletion (NO in step S132), the rule updating unit 12 updates the sub-rule set to be processed according to the request by the parameter (step S133). ), And proceed to step S135. As a specific update process, in the case of adding a rule, the rule updating unit 12 causes the rule storage unit 30 to newly store the processing target rule as an element of the processing target sub-rule set. In the case of a rule change, the rule update unit 12 changes the information (priority and action) of the processing target rule stored in the rule storage unit 30 as one element of the processing target sub-rule set.

次いで、ルール更新部12は、パラメータとして要求されている現在の操作がルール追加か否かを確認する(ステップS135)。要求されている現在の操作がルール追加であった場合には(ステップS135のYES)、ルール更新部12は、処理対象サブルールセットの探索木(すなわち処理対象探索木)のルートノードについて、後述するルール更新サブ処理A1を実行した後(ステップS136)、ステップS138に移行する。一方、要求されている現在の操作がルール追加ではなかった場合には(ステップS135のNO)、ルール更新部12は、処理対象探索木のルートノードについて、後述するルール更新サブ処理Bを実行した後(ステップS137)、ステップS138に移行する。   Next, the rule updating unit 12 checks whether the current operation requested as a parameter is a rule addition (step S135). If the requested current operation is to add a rule (YES in step S135), the rule update unit 12 determines a root node of the search tree of the processing target sub-rule set (that is, the processing target search tree), which will be described later. After executing the rule update sub-process A1 (step S136), the process proceeds to step S138. On the other hand, when the requested current operation is not a rule addition (NO in step S135), the rule update unit 12 executes a rule update sub-process B described below for the root node of the search tree to be processed. Thereafter (step S137), the process proceeds to step S138.

しかる後、ルール更新部12は、処理対象探索木のベース探索木を選択する(ステップS138)。具体的には、ルール更新部12は、探索木記憶部20に記憶されている探索木グループリストを参照し、処理対象探索木が属する探索木グループのベース探索木の識別子を取得する。次いで、ルール更新部12は、ステップS138において選択したベース探索木のルートノードについて、後述するルール更新サブ処理Cを実行する(ステップS139)。   Thereafter, the rule update unit 12 selects a base search tree for the search tree to be processed (step S138). Specifically, the rule update unit 12 refers to the search tree group list stored in the search tree storage unit 20, and acquires the base search tree identifier of the search tree group to which the processing target search tree belongs. Next, the rule update unit 12 executes a later-described rule update sub-process C for the root node of the base search tree selected in step S138 (step S139).

詳細は後述するが、ステップS136のルール更新サブ処理A1およびステップS137のルール更新サブ処理Bにより、処理対象探索木の、処理対象ルールを含んでいるノードの更新カウンタが更新される。また、ステップS139のルール更新サブ処理Cにより、処理対象探索木が属する探索木グループのベース探索木の、処理対象ルールを含んでいるノードの共有更新カウンタが更新される。   Although details will be described later, the update counter of the node including the processing target rule in the processing target search tree is updated by the rule updating sub-processing A1 in step S136 and the rule updating sub-processing B in step S137. Further, by the rule update sub-process C in step S139, the shared update counter of the node including the processing target rule is updated in the base search tree of the search tree group to which the processing target search tree belongs.

次に、図10のフローチャートのステップS136において実行されるルール更新サブ処理A1の詳細な動作について、図11のフローチャートを用いて説明する。図11は、図10のフローチャートのステップS136において実行されるルール更新サブ処理A1の詳細な動作の一例を示すフローチャートである。本ルール更新サブ処理A1においては、処理対象のノード(処理対象ノード)および当該ノードに追加するルール(処理対象ルール)が与えられる。   Next, the detailed operation of the rule update sub-process A1 executed in step S136 of the flowchart of FIG. 10 will be described with reference to the flowchart of FIG. FIG. 11 is a flowchart illustrating an example of a detailed operation of the rule update sub-process A1 executed in step S136 of the flowchart of FIG. In the rule update sub-process A1, a processing target node (processing target node) and a rule to be added to the node (processing target rule) are given.

図11のフローチャートにおいて、ルール更新部12は、まず、処理対象ノードがリーフノードか否かを確認する(ステップS141)。リーフノードか否かの確認は、処理対象ノードのリーフノードフラグがオンか否かを確認することによって行われる。処理対象ノードがリーフノードではなかった場合には(ステップS141のNO)、ルール更新部12は、処理対象ルールを含む子ノード群を選択する(ステップS142)。或る子ノードが処理対象ルールを含んでいるか否かは、当該子ノードが表す部分空間と、処理対象ルールのマッチ条件が表す部分空間とに重なり(重なる部分)があるか否か(すなわち共通部分があるか否か)によって判定することができる。   In the flowchart of FIG. 11, the rule update unit 12 first checks whether the processing target node is a leaf node (step S141). The confirmation as to whether or not the node is a leaf node is performed by confirming whether or not the leaf node flag of the processing target node is on. If the processing target node is not a leaf node (NO in step S141), the rule update unit 12 selects a child node group including the processing target rule (step S142). Whether or not a certain child node includes the processing target rule is determined by whether or not there is an overlap (overlapping part) between the subspace represented by the child node and the subspace represented by the match condition of the processing target rule (that is, common). (Whether or not there is a portion).

次いで、ルール更新部12は、ステップS142において選択された各子ノード(未割り当ての子ノードを含む)それぞれについて、後述するルール更新サブ処理A2を実行する(ステップS143)。その際、ルール更新部12は、パラメータとして、選択された子ノード(新しい処理対象ノードとして)と、現在の処理対象ノード(新しい処理対象ノードの親ノードとして)と、処理対象ルールと、を使用する。   Next, the rule update unit 12 executes a later-described rule update sub-process A2 for each of the child nodes (including unassigned child nodes) selected in step S142 (step S143). At this time, the rule updating unit 12 uses the selected child node (as a new processing target node), the current processing target node (as a parent node of the new processing target node), and the processing target rule as parameters. I do.

しかる後、ルール更新部12は、ステップS143において1回もしくは複数回実行されたルール更新サブ処理A2のいずれかにおいて新規に割り当てられた子ノードがあるか否かを確認する(ステップS144)。その確認の結果、新規に割り当てられた子ノードがなかった場合には(ステップS144のNO)、ルール更新部12は、本ルール更新サブ処理A1を終了する。一方、新規に割り当てられた子ノードがあった場合には(ステップS144のYES)、ルール更新部12は、処理対象ノードの更新カウンタを更新する(ステップS145)。具体的には、ルール更新部12は、処理対象ノードの更新カウンタの値を、現在の値に‘1’加えたものに変更する。   Thereafter, the rule update unit 12 checks whether there is any child node newly assigned in any of the rule update sub-processes A2 executed once or more than once in step S143 (step S144). As a result of the check, if there is no newly assigned child node (NO in step S144), the rule update unit 12 ends the rule update sub-process A1. On the other hand, when there is a newly assigned child node (YES in step S144), the rule update unit 12 updates the update counter of the processing target node (step S145). Specifically, the rule updating unit 12 changes the value of the update counter of the processing target node to a value obtained by adding “1” to the current value.

また、ステップS141において、処理対象ノードがリーフノードであった場合には(ステップS141のYES)、ルール更新部12は、ルール追加後の処理対象ノード(リーフノード)に対応するルールの数があらかじめ定めた一定数(Binth)以下か否かを確認する(ステップS146)。ルールの数が該一定数(Binth)以下であった場合(ステップS146のYES)、ルール更新部12は、処理対象ノード(リーフノード)のルール識別子リストに処理対象ルールの識別子を追加した後(ステップS147)、前述したステップS145に移行する。   Also, in step S141, if the processing target node is a leaf node (YES in step S141), the rule updating unit 12 determines in advance that the number of rules corresponding to the processing target node (leaf node) after the rule has been added. It is checked whether the number is equal to or less than a predetermined number (Binth) (step S146). If the number of rules is equal to or smaller than the certain number (Binth) (YES in step S146), the rule updating unit 12 adds the identifier of the processing target rule to the rule identifier list of the processing target node (leaf node) ( Step S147), and the process proceeds to step S145 described above.

一方、ルールの数が該一定数(Binth)以下ではなかった場合には(ステップS146のNO)、ルール更新部12は、処理対象ノード(リーフノード)を中間ノードに変更(中間ノードとして設定)し、新たに、子ノードを作成した後(ステップS148)、前述したステップS145に移行する。ステップS148においては、具体的には、ルール更新部12は、処理対象ノードのリーフノードフラグをオフに変更する。さらに、子ノードを作成するために、ルール更新部12は、処理対象ノードの識別子と、処理対象ノードのルール識別子リストに処理対象ルールの識別子を加えたルールセットと、をパラメータとして、図9を用いて説明した探索木構築サブ処理Aを実行する。   On the other hand, when the number of rules is not equal to or smaller than the fixed number (Binth) (NO in step S146), the rule update unit 12 changes the processing target node (leaf node) to an intermediate node (set as an intermediate node) Then, after a new child node is created (step S148), the process proceeds to step S145 described above. In step S148, specifically, the rule update unit 12 changes the leaf node flag of the processing target node to off. Further, in order to create a child node, the rule updating unit 12 uses FIG. 9 as parameters with the identifier of the processing target node and the rule set obtained by adding the identifier of the processing target rule to the rule identifier list of the processing target node. The search tree construction sub-process A described above is executed.

次に、図11のフローチャートのステップS143において実行されるルール更新サブ処理A2の詳細な動作について、図12のフローチャートを用いて説明する。図12は、図11のフローチャートのステップS143において実行されるルール更新サブ処理A2の詳細な動作の一例を示すフローチャートである。本ルール更新サブ処理A2においては、処理対象のノード(処理対象ノード)と、処理対象ノードの親ノードの識別子と、処理対象ノードが表す部分空間と、当該ノードに追加するルール(処理対象ルール)と、がパラメータとして与えられる。   Next, the detailed operation of the rule update sub-process A2 executed in step S143 of the flowchart of FIG. 11 will be described using the flowchart of FIG. FIG. 12 is a flowchart illustrating an example of a detailed operation of the rule update sub-process A2 executed in step S143 of the flowchart of FIG. In the rule update sub-process A2, a processing target node (processing target node), an identifier of a parent node of the processing target node, a partial space represented by the processing target node, and a rule to be added to the node (processing target rule) Are given as parameters.

図12のフローチャートにおいて、ルール更新部12は、まず、処理対象ノードのためのデータ領域が割り当て済みか否かを確認する(ステップS151)。データ領域が割り当て済みであった場合は(ステップS151のYES)、ルール更新部12は、処理対象ノードおよび処理対象ルールをパラメータとして、図11に示したルール更新サブ処理A1を実行する(ステップS152)。一方、データ領域が割り当て済みではなかった場合には(ステップS151のNO)、ルール更新部12は、処理対象ノードのためのデータ領域を割り当て、リーフノードとしてセットアップする(ステップS153)。具体的には、ルール更新部12は、探索木記憶部20に処理対象ノードの情報を記憶するデータ領域を割り当てさせ、当該ノードについて以下のような情報を設定する。   In the flowchart of FIG. 12, the rule update unit 12 first checks whether a data area for a processing target node has been allocated (step S151). If the data area has been allocated (YES in step S151), the rule update unit 12 executes the rule update sub-process A1 shown in FIG. 11 using the processing target node and the processing target rule as parameters (step S152). ). On the other hand, if the data area has not been allocated (NO in step S151), the rule update unit 12 allocates a data area for the processing target node and sets up the data area as a leaf node (step S153). Specifically, the rule updating unit 12 causes the search tree storage unit 20 to allocate a data area for storing information on the processing target node, and sets the following information for the node.

(a)リーフノードフラグ:オン、
(b)親ノード識別子 :パラメータとして与えられた親ノード識別子、
(c)部分空間 :パラメータとして与えられた部分空間、
(d)更新カウンタおよび共有更新カウンタ:0、
(e)ルール識別子リスト:処理対象ルールの識別子。
(A) Leaf node flag: ON,
(B) parent node identifier: parent node identifier given as a parameter,
(C) subspace: a subspace given as a parameter,
(D) Update counter and shared update counter: 0,
(E) Rule identifier list: The identifier of the rule to be processed.

次に、図10のフローチャートのステップS137において実行されるルール更新サブ処理Bの詳細な動作について、図13のフローチャートを用いて説明する。図13は、図10のフローチャートのステップS137において実行されるルール更新サブ処理Bの詳細な動作の一例を示すフローチャートである。本ルール更新サブ処理Bにおいては、パラメータとして、処理対象のノード(処理対象ノード)と、削除もしくは変更するルール(処理対象ルール)と、を受け取る。   Next, the detailed operation of the rule update sub-process B executed in step S137 of the flowchart of FIG. 10 will be described using the flowchart of FIG. FIG. 13 is a flowchart illustrating an example of a detailed operation of the rule update sub-process B executed in step S137 of the flowchart of FIG. In the rule update sub-process B, a processing target node (processing target node) and a rule to be deleted or changed (processing target rule) are received as parameters.

図13のフローチャートにおいて、ルール更新部12は、まず、処理対象ノードがリーフノードか否かを確認する(ステップS161)。リーフノードか否かの確認は、処理対象ノードのリーフノードフラグがオンか否かによって行われる。処理対象ノードがリーフノードではなかった場合には(ステップS161のN)、ルール更新部12は、処理対象ルールを含む子ノード群を選択する(ステップS162)。或る子ノードが処理対象ルールを含んでいるか否かは、当該子ノードが表す部分空間と、処理対象ルールのマッチ条件が表す部分空間とに重なる部分があるか否か(すなわち共通部分があるか否か)によって判定することができる。   In the flowchart of FIG. 13, the rule update unit 12 first checks whether the processing target node is a leaf node (step S161). Whether or not the node is a leaf node is determined based on whether or not the leaf node flag of the processing target node is on. When the processing target node is not a leaf node (N in step S161), the rule updating unit 12 selects a child node group including the processing target rule (step S162). Whether a certain child node includes the processing target rule is determined by whether there is a part overlapping the subspace represented by the child node and the subspace represented by the matching condition of the processing target rule (that is, there is a common part). Or not).

次いで、ルール更新部12は、ステップS162において選択された各子ノード(割り当て済みの子ノードのみ)それぞれについて、ルール更新サブ処理Bを実行する(ステップS163)。   Next, the rule update unit 12 executes the rule update sub-process B for each of the child nodes (only assigned child nodes) selected in step S162 (step S163).

ステップS161において、処理対象ノードがリーフノードであった場合には(ステップS161のYES)、ルール更新部12は、処理対象ノード(リーフノード)のルール識別子リストを更新する(ステップS164)。具体的には、要求されている現在の操作がルール削除である場合には、ルール更新部12は、処理対象ルールの識別子を当該ルール識別子リストから削除する。また、要求されている現在の操作がルール更新である場合には、本動作を省略することができる。しかる後、ルール更新部12は、処理対象ノード(リーフノード)の更新カウンタを更新する(ステップS165)。具体的には、ルール更新部12は、処理対象ノード(リーフノード)の更新カウンタの値を、現在の値に‘1’加えたものに変更する。   If the processing target node is a leaf node in step S161 (YES in step S161), the rule update unit 12 updates the rule identifier list of the processing target node (leaf node) (step S164). Specifically, when the requested current operation is rule deletion, the rule update unit 12 deletes the identifier of the processing target rule from the rule identifier list. If the requested current operation is a rule update, this operation can be omitted. Thereafter, the rule update unit 12 updates the update counter of the processing target node (leaf node) (Step S165). Specifically, the rule update unit 12 changes the value of the update counter of the processing target node (leaf node) to a value obtained by adding “1” to the current value.

次に、図10のフローチャートのステップS139において実行されるルール更新サブ処理Cの詳細な動作について、図14のフローチャートを用いて説明する。図14は、図10のフローチャートのステップS139において実行されるルール更新サブ処理Cの詳細な動作の一例を示すフローチャートである。本ルール更新サブ処理Cにおいては、処理対象のノード(処理対象ノード)および当該ノードに追加するルール(処理対象ルール)が、パラメータとして与えられる。   Next, the detailed operation of the rule update sub-process C executed in step S139 of the flowchart of FIG. 10 will be described using the flowchart of FIG. FIG. 14 is a flowchart illustrating an example of a detailed operation of the rule update sub-process C executed in step S139 of the flowchart of FIG. In this rule update sub-process C, a node to be processed (process target node) and a rule to be added to the node (process target rule) are given as parameters.

図14のフローチャートにおいて、ルール更新部12は、まず、処理対象ノードがリーフノードか否かを確認する(ステップS171)。リーフノードか否かの確認は、処理対象ノードのリーフノードフラグがオンか否かによって行われる。処理対象ノードがリーフノードではなかった場合には(ステップS171のNO)、ルール更新部12は、処理対象ルールを含む子ノード群を選択する(ステップS172)。或る子ノードが処理対象ルールを含んでいるか否かは、当該子ノードが表す部分空間と、処理対象ルールのマッチ条件が表す部分空間とに重なる部分があるか否か(すなわち共通部分があるか否か)によって判定することができる。   In the flowchart of FIG. 14, the rule update unit 12 first checks whether the processing target node is a leaf node (step S171). Whether or not the node is a leaf node is determined based on whether or not the leaf node flag of the processing target node is on. If the processing target node is not a leaf node (NO in step S171), the rule update unit 12 selects a child node group including the processing target rule (step S172). Whether a certain child node includes a processing target rule depends on whether there is a part overlapping the subspace represented by the child node and the subspace represented by the match condition of the processing target rule (that is, there is a common part). Or not).

次いで、ルール更新部12は、ステップS172において選択された各子ノード(割り当て済みの子ノードのみ)それぞれについて、ルール更新サブ処理Cを実行する(ステップS173)。   Next, the rule update unit 12 executes the rule update sub-process C for each of the child nodes selected in step S172 (only assigned child nodes) (step S173).

しかる後、ルール更新部12は、以下の条件が満たされるか否かを確認する。即ち、ルール更新部12は、ステップS172において選択された子ノードにデータ領域が未割り当ての子ノード(すなわち関係するルールの数が0の子ノード)があり、かつ、要求されている現在の操作がルール追加であり、かつ、当該未割当の子ノードが表す部分空間と処理対象ルールのマッチ条件が表す部分空間とに重なる部分がある、という条件を確認する(ステップS174)。データ領域が未割り当ての子ノードがあり、かつ、要求されている現在の操作がルール追加であり、かつ、当該未割当の子ノードが表す部分空間と処理対象ルールのマッチ条件が表す部分空間とに重なる部分がある場合には(ステップS174のYES)、ルール更新部12は、処理対象ノードの共有更新カウンタを更新して(ステップS175)、本ルール更新サブ処理Cを終了する。具体的には、ルール更新部12は、処理対象ノードの共有更新カウンタの値を、現在の値に‘1’加えたものに変更する。一方、ステップS174において、データ領域が未割り当ての子ノードがなかったか、もしくは、要求されている現在の操作がルール追加ではなかった場合には(ステップS174のNO)、ルール更新部12は、本ルール更新サブ処理Cを終了する。なお、ステップS174において、未割当の子ノードが表す部分空間と処理対象ルールのマッチ条件が表す部分空間とに重なる部分が無い場合も、ルール更新部12は、本ルール更新サブ処理Cを終了してもよい。   Thereafter, the rule update unit 12 checks whether the following condition is satisfied. That is, the rule updating unit 12 determines that the child node selected in step S172 has a child node to which a data area has not been allocated (that is, a child node in which the number of related rules is 0), and that the requested current operation is Is a rule addition, and the condition that the subspace represented by the unassigned child node overlaps with the subspace represented by the match condition of the processing target rule is checked (step S174). There is a child node to which the data area has not been allocated, and the current operation requested is a rule addition, and the subspace represented by the unallocated child node and the subspace represented by the match condition of the processing target rule If there is a portion that overlaps (YES in step S174), the rule update unit 12 updates the shared update counter of the processing target node (step S175), and ends the rule update sub-process C. Specifically, the rule update unit 12 changes the value of the shared update counter of the processing target node to a value obtained by adding “1” to the current value. On the other hand, in step S174, if there is no child node to which the data area has not been assigned, or if the requested current operation is not a rule addition (NO in step S174), the rule update unit 12 The rule update sub-process C ends. In step S174, even when there is no overlapping part between the partial space represented by the unassigned child node and the partial space represented by the match condition of the processing target rule, the rule updating unit 12 terminates the rule updating sub-process C. You may.

また、ステップS171において、処理対象ノードがリーフノードであった場合には(ステップS171のYES)、ルール更新部12は、処理対象ノード(リーフノード)の共有更新カウンタを更新して(ステップS176)、本ルール更新サブ処理Cを終了する。具体的には、ルール更新部12は、処理対象ノード(リーフノード)の共有更新カウンタの値を、現在の値に‘1’加えたものに変更する。ルール更新部12は、図14にフローチャートで示したルール更新サブ処理C(すなわち、図10のステップS139)の実行と並行して、削除待ちフラグがオンのルールを削除する処理を、例えば、定期的に実行する。ルール更新部12は、ルール記憶部30に記憶されたルールのうち、削除フラグがオンであり、かつ、参照カウンタが0であるルールについて、ルール記憶部30に削除させる。   If the processing target node is a leaf node in step S171 (YES in step S171), the rule update unit 12 updates the shared update counter of the processing target node (leaf node) (step S176). Then, the present rule update sub-process C ends. Specifically, the rule update unit 12 changes the value of the shared update counter of the processing target node (leaf node) to a value obtained by adding “1” to the current value. In parallel with the execution of the rule update sub-process C shown in the flowchart of FIG. 14 (that is, step S139 of FIG. 10), the rule update unit 12 performs a process of deleting a rule whose deletion wait flag is on, for example, periodically. To run. The rule update unit 12 causes the rule storage unit 30 to delete a rule whose deletion flag is on and a reference counter is 0 among the rules stored in the rule storage unit 30.

<(C)ルール探索処理>
次に、図15、図16のフローチャートを用いて、ルール探索処理の動作例について説明する。図15は、図1に示したデータ処理装置1の探索木制御部10における探索木探索部13が、探索木記憶部20およびルール記憶部30それぞれに記憶される探索木およびルールセットを参照して、与えられたキーに適合するルールを探索する際の動作の一例を示すフローチャートである。図15のフローチャートに例示する本ルール探索処理の動作は、例えば、パケット処理部60からの要求により開始され、本ルール探索処理に係るパラメータとして、探索木探索部13は、探索に使用すべきキー(探索キー)を受け取る。
本ルール探索処理においては、探索木探索部13は、パラメータとして与えられた探索キーに適合する最高優先度のルールの識別子(探索された場合)を、要求元(例えば、パケット処理部60)に返す。探索木探索部13は、また、探索木における探索において最終的に到達したノード(中間ノードもしくはリーフノード)の識別子(探索木毎)のリストを、要求元に返す。
<(C) Rule search processing>
Next, an operation example of the rule search processing will be described with reference to the flowcharts of FIGS. FIG. 15 shows that the search tree search unit 13 in the search tree control unit 10 of the data processing apparatus 1 shown in FIG. 1 refers to the search tree and the rule set stored in the search tree storage unit 20 and the rule storage unit 30, respectively. 6 is a flowchart illustrating an example of an operation when searching for a rule that matches a given key. The operation of the present rule search process illustrated in the flowchart of FIG. 15 is started, for example, by a request from the packet processing unit 60. As a parameter related to the present rule search process, the search tree search unit 13 uses a key to be used for the search. (Search key).
In the present rule search process, the search tree search unit 13 sends the identifier of the highest priority rule (if searched) matching the search key given as a parameter to the request source (for example, the packet processing unit 60). return. The search tree search unit 13 also returns a list of identifiers (for each search tree) of nodes (intermediate nodes or leaf nodes) finally reached in the search in the search tree to the request source.

図15のフローチャートにおいて、探索木探索部13は、まず、各探索木について、後述するルール探索サブ処理Aを実行する(ステップS181)。次いで、探索木探索部13は、ステップS181において得られた、各探索木内で発見されたルールの集合の中から最高優先度のルールを選択する。探索木探索部13は、選択したルールを、パラメータとして受け取った探索キーに適合するルールとして要求元に返す(ステップS182)。また、探索木探索部13は、ステップS181において各探索木について得られる、探索により最終的に到達したノード(中間ノードもしくはリーフノード)の識別子(探索木毎)のリストも要求元に返す。   In the flowchart of FIG. 15, the search tree search unit 13 first executes a later-described rule search sub-process A for each search tree (step S181). Next, the search tree search unit 13 selects the rule with the highest priority from the set of rules found in each search tree obtained in step S181. The search tree search unit 13 returns the selected rule to the request source as a rule that matches the search key received as a parameter (step S182). In addition, the search tree search unit 13 also returns a list of identifiers (for each search tree) of nodes (intermediate nodes or leaf nodes) finally reached by the search, which are obtained for each search tree in step S181.

次に、図15のフローチャートのステップS181において実行されるルール探索サブ処理Aの詳細な動作について、図16のフローチャートを用いて説明する。図16は、図15のフローチャートのステップS181において実行されるルール探索サブ処理Aの詳細な動作の一例を示すフローチャートである。本ルール探索サブ処理Aにおいては、探索木探索部13は、パラメータとして、処理対象の探索木(例えば探索木識別子の形式、以降‘処理対象探索木’と記載)および探索に使用すべきキー(探索キー)を受け取る。また、本ルール探索サブ処理Aにおいては、探索木探索部13は、探索の結果、探索されたルールおよび探索により最終的に到達したノードの識別子を要求元に返す。なお、本ルール探索サブ処理Aにおいて処理の対象としているノードを‘処理対象ノード’と呼称する。   Next, the detailed operation of the rule search sub-process A executed in step S181 of the flowchart of FIG. 15 will be described using the flowchart of FIG. FIG. 16 is a flowchart showing an example of the detailed operation of the rule search sub-process A executed in step S181 of the flowchart in FIG. In the rule search sub-process A, the search tree search unit 13 uses, as parameters, a search tree to be processed (for example, a search tree identifier format, hereinafter referred to as a “process target search tree”), and a key ( Search key). In the rule search sub-process A, the search tree search unit 13 returns the searched rule, the identifier of the node finally reached by the search, as a result of the search, to the request source. Note that the node to be processed in the rule search sub-process A is referred to as a “process target node”.

図16のフローチャートにおいて、探索木探索部13は、まず、処理対象ノードとして処理対象探索木のルートノードを選択する(ステップS191)。次に、探索木探索部13は、処理対象ノードがリーフノードか否かを確認する(ステップS192)。リーフノードか否かの確認は、処理対象ノードのリーフノードフラグがオンか否かによって行われる。   In the flowchart of FIG. 16, the search tree search unit 13 first selects the root node of the search tree to be processed as the node to be processed (step S191). Next, the search tree search unit 13 checks whether the processing target node is a leaf node (step S192). Whether or not the node is a leaf node is determined based on whether or not the leaf node flag of the processing target node is on.

処理対象ノードがリーフノードではなかった場合には(ステップS192のNO)、探索木探索部13は、パラメータとして受け取った探索キーに対応する子ノードを選択する(ステップS193)。次いで、探索木探索部13は、ステップS193において選択した子ノードに対してデータ領域が割り当て済みか否かを確認する(ステップS194)。データ領域が割り当て済みであった場合には(ステップS194のYES)、探索木探索部13は、処理対象ノードとして当該子ノードを選択して(ステップS195)、ステップS192に復帰する。   If the processing target node is not a leaf node (NO in step S192), the search tree search unit 13 selects a child node corresponding to the search key received as a parameter (step S193). Next, the search tree search unit 13 checks whether a data area has been allocated to the child node selected in step S193 (step S194). If the data area has been allocated (YES in step S194), the search tree search unit 13 selects the child node as a processing target node (step S195), and returns to step S192.

一方、ステップS194において、データ領域が割り当て済みではなかった場合には(ステップS194のNO)、探索木探索部13は、探索キーに対応するルールは存在しないので、本探索において最終的に到達したノードを現在の処理対象ノードとして本ルール探索サブ処理Aを終了する。   On the other hand, if the data area has not been allocated in step S194 (NO in step S194), the search tree search unit 13 has finally reached the main search because there is no rule corresponding to the search key. This rule search sub-process A ends with the node as the current process target node.

また、ステップS192において、処理対象ノードがリーフノードであった場合には(ステップS192のYES)、探索木探索部13は、処理対象ノード(リーフノード)のルール識別子リストを基にして、ルール記憶部30を参照して、本リーフノードに関係するルールを取得する(ステップS196)。さらに、探索木探索部13は、例えば、当該ルール群内において線形探索処理を実施して、当該ルール群の中から探索キーに適合する最高優先度のルールを選択し、探索キーに適合するルールとして出力する。その後、探索木探索部13は、本ルール探索サブ処理Aを終了する。この場合、本探索で最終的に到達したノードは、現在の処理対象ノード(リーフノード)となる。   Further, in step S192, if the processing target node is a leaf node (YES in step S192), the search tree search unit 13 stores a rule based on the rule identifier list of the processing target node (leaf node). With reference to the unit 30, a rule related to this leaf node is acquired (step S196). Further, the search tree search unit 13 performs, for example, a linear search process in the rule group, selects a rule with the highest priority matching the search key from the rule group, and selects a rule matching the search key. Output as After that, the search tree search unit 13 ends the rule search sub-process A. In this case, the node finally reached in this search is the current processing target node (leaf node).

<(D)パケット処理>
次に、図17のフローチャートを用いて、パケット処理の動作例について説明する。図17は、図1に示したデータ処理装置1のパケット処理部60がパケットを受信した際の動作の一例を示すフローチャートである。図17のフローチャートに例示する本パケット処理の動作は、データ処理装置1の通信IF部70がパケット(処理対象パケット)を受信し、パケット処理部60にパケットの受信通知がなされた際に開始される。
<(D) Packet processing>
Next, an operation example of the packet processing will be described with reference to the flowchart in FIG. FIG. 17 is a flowchart illustrating an example of an operation when the packet processing unit 60 of the data processing device 1 illustrated in FIG. 1 receives a packet. The packet processing operation illustrated in the flowchart of FIG. 17 is started when the communication IF unit 70 of the data processing device 1 receives a packet (processing target packet) and the packet processing unit 60 is notified of the reception of the packet. You.

図17のフローチャートにおいて、パケット処理部60は、まず、受信した処理対象パケットからルール探索に使用するためのキー(探索キー)を抽出する(ステップS201)。具体的には、パケット処理部60は、受信したパケットから、送信元IPアドレス、送信先IPアドレス、プロトコル番号、送信元ポート番号、送信先ポート番号を探索キーとして取り出す。次に、パケット処理部60は、ステップS201において抽出された探索キーをパラメータとして、図3に示すキャッシュテーブル制御部40のキャッシュエントリ探索部42に依頼して、キャッシュエントリを探索する(ステップS202)。   In the flowchart of FIG. 17, the packet processing unit 60 first extracts a key (search key) used for rule search from the received processing target packet (step S201). Specifically, the packet processing unit 60 extracts the source IP address, the destination IP address, the protocol number, the source port number, and the destination port number from the received packet as a search key. Next, the packet processing unit 60 requests the cache entry search unit 42 of the cache table control unit 40 shown in FIG. 3 using the search key extracted in step S201 as a parameter to search for a cache entry (step S202). .

パケット処理部60は、キャッシュエントリ探索部42に対する依頼結果として、パラメータとして引き渡した探索キーに対応するキャッシュエントリ(処理対象キャッシュエントリ)が検出されたか否かを確認する(ステップS203)。処理対象キャッシュエントリが検出された場合には(ステップS203のYES)、パケット処理部60は、図3に示すキャッシュテーブル制御部40のキャッシュエントリ再評価部43に依頼して、当該処理対象キャッシュエントリの再評価を行う(ステップS204)。キャッシュエントリ再評価部43は、再評価の結果として、当該処理対象キャッシュエントリが更新されたか(探索キーに適合するルールが検出された場合)、もしくは、削除されたか(探索キーに適合するルールが検出されなかった場合)、のいずれかを返す。   The packet processing unit 60 checks whether a cache entry (processing target cache entry) corresponding to the search key passed as a parameter is detected as a result of the request to the cache entry search unit 42 (step S203). If the processing target cache entry is detected (YES in step S203), the packet processing unit 60 requests the cache entry re-evaluation unit 43 of the cache table control unit 40 shown in FIG. Is re-evaluated (step S204). As a result of the re-evaluation, the cache entry reevaluation unit 43 determines whether the processing target cache entry has been updated (if a rule that matches the search key is detected) or deleted (if the rule that matches the search key does not match). If not detected), return one of the following.

パケット処理部60は、キャッシュエントリ再評価部43からの再評価の結果を受け取ると、ステップS204において探索キーに適合するルールが検出されたか否かを確認する(ステップS205)。探索キーに適合するルールが検出された場合には(ステップS205のYES)、パケット処理部60は、当該適合ルールのアクションに従い、処理対象パケットを処理する(ステップS206)。   Upon receiving the re-evaluation result from the cache entry re-evaluation unit 43, the packet processing unit 60 checks whether a rule matching the search key has been detected in step S204 (step S205). If a rule that matches the search key is detected (YES in step S205), the packet processing unit 60 processes the processing target packet according to the action of the matching rule (step S206).

一方、ステップS205において、探索キーに適合するルールが検出されなかった場合には(ステップS205のNO)、パケット処理部60は、処理対象パケットについて、適合ルールが不明の場合の処理を実行する(ステップS207)。具体的には、例えば、パケット処理部60は、以下に示すいずれかもしくは組み合わせの処理を実行する。   On the other hand, if no rule that matches the search key is detected in step S205 (NO in step S205), the packet processing unit 60 executes a process for a packet to be processed when the matching rule is unknown (step S205). Step S207). Specifically, for example, the packet processing unit 60 executes one or a combination of the following processes.

(a)当該パケットを破棄する。
(b)当該パケットの適合ルールが不明の旨をログ出力する。
(c)当該パケットの適合ルールが不明の旨をデータ処理装置制御部80に通知する。
(d)当該パケットの適合ルールが不明の旨を他の装置(例えば、ネットワーク管理装置。図1〜図3には図示されていない)に通知する。
(A) Discard the packet.
(B) A log is output to the effect that the matching rule of the packet is unknown.
(C) Notify the data processing device control unit 80 that the matching rule of the packet is unknown.
(D) Notify another device (for example, a network management device; not shown in FIGS. 1 to 3) that the matching rule of the packet is unknown.

また、ステップS203において、処理対象キャッシュエントリが検出されなかった場合には(ステップS203のNO)、パケット処理部60は、図2に示す探索木制御部10の探索木探索部13に依頼して、探索キーに適合するルールを探索する(ステップS208)。パケット処理部60は、探索木探索部13への依頼結果として、探索キーに適合するルールが探索されたか否かを確認する(ステップS209)。探索キーに適合するルールが探索されなかった場合(ステップS209のNO)、パケット処理部60は、ステップS207へ移行して、前述のような適合ルールが不明の場合の処理を実行する。   Further, when the processing target cache entry is not detected in step S203 (NO in step S203), the packet processing unit 60 requests the search tree search unit 13 of the search tree control unit 10 shown in FIG. Then, a rule matching the search key is searched (step S208). The packet processing unit 60 checks whether a rule matching the search key has been searched as a result of the request to the search tree search unit 13 (step S209). When a rule that matches the search key is not found (NO in step S209), the packet processing unit 60 proceeds to step S207 and executes the above-described processing when the matching rule is unknown.

一方、探索キーに適合するルールが探索された場合には(ステップS209のYES)、パケット処理部60は、図3に示すキャッシュテーブル制御部40のキャッシュエントリ作成部41に依頼して、当該処理対象パケットを処理するためのキャッシュエントリを作成して、キャッシュテーブル記憶部50に記憶させる(ステップS210)。なお、キャッシュエントリ作成部41に依頼する際、パケット処理部60は、パラメータとして、ステップS201において抽出した探索キーと、ステップS208において発見されたルールの識別子と、ステップS208において探索木探索部13から返されたノード識別子のリストと、をキャッシュエントリ作成部41に渡す。   On the other hand, if a rule that matches the search key is found (YES in step S209), the packet processing unit 60 requests the cache entry creation unit 41 of the cache table control unit 40 shown in FIG. A cache entry for processing the target packet is created and stored in the cache table storage unit 50 (step S210). When requesting the cache entry creation unit 41, the packet processing unit 60 receives, as parameters, the search key extracted in step S201, the identifier of the rule found in step S208, and the search tree search unit 13 in step S208. The returned list of node identifiers is passed to the cache entry creation unit 41.

しかる後、パケット処理部60は、ステップS206に移行して、ステップS208において探索された適合ルールが示すアクションに従い、処理対象パケットを処理する。   Thereafter, the packet processing unit 60 proceeds to step S206, and processes the processing target packet according to the action indicated by the matching rule searched in step S208.

<(E)キャッシュエントリ作成処理>
次に、図18のフローチャートを用いて、キャッシュエントリ作成処理の動作例について説明する。図18は、図1に示したデータ処理装置1のキャッシュテーブル制御部40におけるキャッシュエントリ作成部41が、キャッシュエントリを作成する際の動作の一例を示すフローチャートである。図18のフローチャートに例示する本キャッシュエントリ作成処理の動作は、例えば、パケット処理部60からの要求に基づいて開始される。なお、キャッシュエントリ作成部41は、本キャッシュエントリ作成処理に係るパラメータとして、キー(探索キー)と、ルール識別子と、キーを用いた探索木の探索において最終的に到達したノードの識別子(探索木毎)と、を受け取る。
<(E) Cache entry creation processing>
Next, an operation example of the cache entry creation processing will be described with reference to the flowchart in FIG. FIG. 18 is a flowchart illustrating an example of an operation when the cache entry creation unit 41 in the cache table control unit 40 of the data processing device 1 illustrated in FIG. 1 creates a cache entry. The operation of the present cache entry creation processing illustrated in the flowchart of FIG. 18 is started based on a request from the packet processing unit 60, for example. The cache entry creation unit 41 uses the key (search key), the rule identifier, and the identifier (search tree) of the node finally reached in the search of the search tree using the key as parameters related to the cache entry creation processing. Every) and receive.

図18のフローチャートにおいて、キャッシュエントリ作成部41は、まず、パラメータとして受け取ったキーのハッシュ値を計算し、計算結果を基にして、当該キーに対応するハッシュテーブルのバケツ(Bucket)を選択する(ステップS221)。次に、キャッシュエントリ作成部41は、ステップS221において選択したバケツ(Bucket)に空きがあるか否かを確認する(ステップS222)。バケツ(Bucket)の空きの有無は、当該バケツ(Bucket)内の各キャッシュエントリについて、使用中フラグを確認することによって確認することができる。   In the flowchart of FIG. 18, the cache entry creation unit 41 first calculates a hash value of a key received as a parameter, and selects a bucket of the hash table corresponding to the key based on the calculation result ( Step S221). Next, the cache entry creation unit 41 checks whether or not the bucket selected in step S221 has an empty space (step S222). Whether or not a bucket is empty can be confirmed by checking the in-use flag for each cache entry in the bucket.

選択したバケツ(Bucket)に空きがあった場合には(ステップS222のYES)、ステップS224に移行する。選択したバケツ(Bucket)に空きがなかった場合は(ステップS222のNO)、キャッシュエントリ作成部41は、当該バケツ(Bucket)内の各キャッシュエントリのうち、いずれか一つのキャッシュエントリを削除した後(ステップS223)、ステップS224に移行する。ここで、キャッシュエントリ作成部41は、キャッシュエントリの使用中フラグをオフに設定することによってキャッシュエントリを削除することができる。その際、キャッシュエントリ作成部41は、当該キャッシュエントリの適合ルールの参照カウンタを1減らす。また、キャッシュエントリ作成部41は、例えば、最終使用時刻が最も古いキャッシュエントリを削除対象として選択してもよい。   If there is a vacancy in the selected bucket (Bucket) (YES in step S222), the process proceeds to step S224. If there is no free space in the selected bucket (Bucket) (NO in step S222), the cache entry creation unit 41 deletes any one of the cache entries in the bucket (Bucket). (Step S223), and it moves to step S224. Here, the cache entry creation unit 41 can delete the cache entry by setting the in-use flag of the cache entry to off. At that time, the cache entry creation unit 41 decrements the reference counter of the matching rule of the cache entry by one. Further, the cache entry creation unit 41 may select, for example, a cache entry with the oldest last use time as a deletion target.

ステップS224においては、キャッシュエントリ作成部41は、当該バケツ(Bucket)内の空きキャッシュエントリの一つを選択して、セットアップする(ステップS224)。具体的には、キャッシュエントリ作成部41は、選択したキャッシュエントリに対して、以下のような情報を設定する。また、キャッシュエントリ作成部41は、パラメータとして与えられたルールの参照カウンタを1増やす。   In step S224, the cache entry creation unit 41 selects and sets up one of the empty cache entries in the bucket (Step S224). Specifically, the cache entry creation unit 41 sets the following information for the selected cache entry. Further, the cache entry creating unit 41 increases the reference counter of the rule given as a parameter by one.

(a)使用中フラグ:オン、
(b)キー :パラメータとして与えられたキー、
(c)ルール識別子:パラメータとして与えられたルールの識別子、
(d)最終使用時刻: 処理実行時点における時刻、
(e)ノード状態.ノード識別子 (探索木毎):パラメータとして与えられたノード識別子、
(f)ノード状態.更新カウンタキャッシュ (探索木毎):前記ノード識別子を基に図2に示す更新カウンタ取得部14に依頼して取得した値、
(g)ノード状態.共有更新カウンタキャッシュ (ベース探索木毎):前記ノード識別子を基に図2に示す更新カウンタ取得部14に依頼して取得した値。
(A) In-use flag: ON,
(B) key: a key given as a parameter,
(C) rule identifier: an identifier of a rule given as a parameter,
(D) Last use time: time at the time of execution of processing,
(E) Node state. Node identifier (for each search tree): node identifier given as a parameter,
(F) Node state. Update counter cache (for each search tree): a value obtained by requesting the update counter obtaining unit 14 shown in FIG. 2 based on the node identifier,
(G) Node state. Shared update counter cache (for each base search tree): A value obtained by requesting the update counter obtaining unit 14 shown in FIG. 2 based on the node identifier.

<(F)キャッシュエントリ探索処理>
次に、図19のフローチャートを用いて、キャッシュエントリ探索処理の動作例について説明する。図19は、図1に示したデータ処理装置1のキャッシュテーブル制御部40におけるキャッシュエントリ探索部42が、キャッシュエントリを探索する際の動作の一例を示すフローチャートである。図19のフローチャートに例示する本キャッシュエントリ探索処理の動作は、例えば、パケット処理部60からの要求に基づいて開始される。なお、キャッシュエントリ作成部41は、本キャッシュエントリ探索処理に係るパラメータとして、キー(探索キー)を受け取る。
<(F) Cache entry search processing>
Next, an operation example of the cache entry search process will be described with reference to the flowchart in FIG. FIG. 19 is a flowchart illustrating an example of an operation when the cache entry search unit 42 in the cache table control unit 40 of the data processing device 1 illustrated in FIG. 1 searches for a cache entry. The operation of the cache entry search process illustrated in the flowchart of FIG. 19 is started, for example, based on a request from the packet processing unit 60. Note that the cache entry creation unit 41 receives a key (search key) as a parameter related to the present cache entry search processing.

図19のフローチャートにおいて、キャッシュエントリ探索部42は、まず、パラメータとして受け取ったキーのハッシュ値を計算する。キャッシュエントリ探索部42は、係る計算結果を基にして、当該キーに対応するハッシュテーブルのバケツ(Bucket)を選択する(ステップS231)。次に、キャッシュエントリ探索部42は、ステップS231において選択したバケツ(Bucket)内の最初のキャッシュエントリを選択する(ステップS232)。   In the flowchart of FIG. 19, the cache entry search unit 42 first calculates a hash value of a key received as a parameter. The cache entry search unit 42 selects a bucket of the hash table corresponding to the key based on the calculation result (Step S231). Next, the cache entry search unit 42 selects the first cache entry in the bucket selected in step S231 (step S232).

次いで、キャッシュエントリ探索部42は、選択したキャッシュエントリの使用中フラグがオンであり、かつ、当該キャッシュエントリのキーと本キャッシュエントリ探索処理のパラメータとして与えられたキーとが一致するか否かを確認する(ステップS233)。キャッシュエントリの使用中フラグがオンであり、かつ、当該キャッシュエントリのキーと本キャッシュエントリ探索処理のパラメータとして与えられたキーとが一致した場合は(ステップS233のYES)、キャッシュエントリ探索部42は、キーに合致するキャッシュエントリの探索に成功したと判定する。この場合、キャッシュエントリ探索部42は、本キャッシュエントリ探索処理を終了し、探索の結果として、当該キャッシュエントリの識別子を要求元に返す。   Next, the cache entry searching unit 42 determines whether the in-use flag of the selected cache entry is on and whether the key of the cache entry matches the key given as a parameter of the present cache entry search process. Confirm (step S233). If the in-use flag of the cache entry is on and the key of the cache entry matches the key given as a parameter of the present cache entry search process (YES in step S233), the cache entry search unit 42 , It is determined that a search for a cache entry that matches the key has been successful. In this case, the cache entry search unit 42 ends the present cache entry search process, and returns the identifier of the cache entry to the request source as a search result.

一方、ステップS233において、キャッシュエントリの使用中フラグがオンであり、かつ、当該キャッシュエントリのキーと本キャッシュエントリ探索処理のパラメータとして与えられたキーとが一致しなかった場合は(ステップS233のNO)、キャッシュエントリ探索部42は、選択したキャッシュエントリがバケツ(Bucket)内の最後のキャッシュエントリか否かを確認する(ステップS234)。選択したキャッシュエントリがバケツ(Bucket)内の最後のキャッシュエントリであった場合には(ステップS234のYES)、キャッシュエントリ探索部42は、本キャッシュエントリ探索処理を終了する。キャッシュエントリ探索部42は、探索の結果として、キーに合致するキャッシュエントリを探索することができなかったことを要求元に通知する。なお、選択したキャッシュエントリの使用中フラグがオフの場合も(ステップS233においてNO)、上記と同様に、ステップS234以降の処理が実行される。   On the other hand, in step S233, if the in-use flag of the cache entry is on and the key of the cache entry does not match the key given as a parameter of the cache entry search process (NO in step S233) ), The cache entry search unit 42 checks whether or not the selected cache entry is the last cache entry in the bucket (Step S234). If the selected cache entry is the last cache entry in the bucket (YES in step S234), the cache entry search unit 42 ends the cache entry search processing. The cache entry search unit 42 notifies the request source that a cache entry matching the key could not be searched as a result of the search. Note that, even when the in-use flag of the selected cache entry is off (NO in step S233), the processes in step S234 and thereafter are executed in the same manner as described above.

また、ステップS234において、バケツ(Bucket)内の最後のキャッシュエントリではなかった場合には(ステップS234のNO)、キャッシュエントリ探索部42は、バケツ(Bucket)内の次のキャッシュエントリを選択して(ステップS235)、ステップS233に復帰する。   If the cache entry is not the last cache entry in the bucket (NO in step S234) in step S234, the cache entry search unit 42 selects the next cache entry in the bucket (Bucket). (Step S235), and the process returns to step S233.

<(G)キャッシュエントリ再評価処理>
次に、図20のフローチャートを用いて、キャッシュエントリ再評価処理の動作例について説明する。図20は、図1に示したデータ処理装置1のキャッシュテーブル制御部40におけるキャッシュエントリ再評価部43が、キャッシュエントリを再評価する際の動作の一例を示すフローチャートである。図20のフローチャートに例示する本キャッシュエントリ再評価処理の動作は、例えば、パケット処理部60からの要求に基づいて開始される。なお、キャッシュエントリ再評価部43は、本キャッシュエントリ再評価処理に係るパラメータとして、再評価対象のキャッシュエントリ(処理対象キャッシュエントリ)の識別子を受け取る。
<(G) Cache entry reevaluation process>
Next, an operation example of the cache entry reevaluation process will be described with reference to the flowchart in FIG. FIG. 20 is a flowchart illustrating an example of an operation when the cache entry reevaluation unit 43 in the cache table control unit 40 of the data processing device 1 illustrated in FIG. 1 reevaluates a cache entry. The operation of the present cache entry reevaluation process illustrated in the flowchart of FIG. 20 is started based on, for example, a request from the packet processing unit 60. The cache entry re-evaluation unit 43 receives the identifier of the cache entry to be re-evaluated (processing target cache entry) as a parameter related to the cache entry re-evaluation processing.

図20のフローチャートにおいて、キャッシュエントリ再評価部43は、まず、処理対象キャッシュエントリのノード状態リストを参照する。キャッシュエントリ再評価部43は、図2に示す探索木制御部10の更新カウンタ取得部14に依頼して、処理対象キャッシュエントリが表すフローが属するノードの最新の共有更新カウンタ値(ベース探索木毎)を取得する(ステップS241)。次に、キャッシュエントリ再評価部43は、ステップS241において取得された最新の共有更新カウンタ値と、キャッシュテーブル記憶部50に記憶された処理対象キャッシュエントリに関する各ベース探索木の共有更新カウンタ値との間に差分があるか否かを確認する(ステップS242)。   In the flowchart of FIG. 20, the cache entry reevaluation unit 43 first refers to the node state list of the cache entry to be processed. The cache entry reevaluation unit 43 requests the update counter acquisition unit 14 of the search tree control unit 10 shown in FIG. 2 to update the latest shared update counter value (for each base search tree) of the node to which the flow represented by the processing target cache entry belongs. ) Is acquired (step S241). Next, the cache entry reevaluation unit 43 compares the latest shared update counter value acquired in step S241 with the shared update counter value of each base search tree for the processing target cache entry stored in the cache table storage unit 50. It is checked whether there is a difference between them (step S242).

最新の共有更新カウンタ値とキャッシュテーブル記憶部50に記憶された処理対象キャッシュエントリに関する各ベース探索木の共有更新カウンタ値との間に差分がない場合は(ステップS242のNO)、ステップS247に移行する。一方、最新の共有更新カウンタ値と、キャッシュテーブル記憶部50に記憶された処理対象キャッシュエントリに関する各ベース探索木の共有更新カウンタ値との間に差分がある場合は(ステップS242のYES)、キャッシュエントリ再評価部43は、以下の処理を実行する。即ち、キャッシュエントリ再評価部43は、当該処理対象キャッシュエントリのうち、適合ルールおよび共有更新カウンタ値に差分があった探索木グループ内のノードに係る情報は無効である可能性があるものと判定する。そして、キャッシュエントリ再評価部43は、処理対象キャッシュエントリのノード状態リストを参照し、図2に示す探索木制御部10の更新カウンタ取得部14に依頼して、処理対象キャッシュエントリが表すフローが属するノードの最新の更新カウンタ値(探索木毎)を取得する(ステップS243)。その際、キャッシュエントリ再評価部43は、ステップS242において差分が検出されたベース探索木が属する探索木グループ内の探索木群を、更新カウンタ値(探索木毎)の取得対象とする。   If there is no difference between the latest shared update counter value and the shared update counter value of each base search tree for the processing target cache entry stored in the cache table storage unit 50 (NO in step S242), the process proceeds to step S247. I do. On the other hand, if there is a difference between the latest shared update counter value and the shared update counter value of each base search tree for the processing target cache entry stored in the cache table storage unit 50 (YES in step S242), the cache is updated. The entry reevaluation unit 43 performs the following processing. That is, the cache entry re-evaluation unit 43 determines that, among the processing target cache entries, information on the nodes in the search tree group having a difference between the matching rule and the shared update counter value may be invalid. I do. Then, the cache entry reevaluation unit 43 refers to the node state list of the processing target cache entry, requests the update counter acquisition unit 14 of the search tree control unit 10 shown in FIG. 2 to determine the flow represented by the processing target cache entry. The latest update counter value (for each search tree) of the node to which the node belongs is acquired (step S243). At this time, the cache entry reevaluation unit 43 sets the search tree group in the search tree group to which the base search tree whose difference has been detected in step S242 belongs as the update counter value (for each search tree).

次いで、キャッシュエントリ再評価部43は、ステップS243において取得された最新の更新カウンタ値と、キャッシュテーブル記憶部50に記憶された処理対象キャッシュエントリに関する各探索木の更新カウンタ値との間に差分があるか否かを確認する(ステップS244)。最新の更新カウンタ値とキャッシュテーブル記憶部50に記憶された処理対象キャッシュエントリに関する各探索木の更新カウンタ値との間に差分がない場合は(ステップS244のNO)、ステップS247に移行する。   Next, the cache entry reevaluation unit 43 determines that the difference between the latest update counter value acquired in step S243 and the update counter value of each search tree for the processing target cache entry stored in the cache table storage unit 50 is It is confirmed whether or not there is (step S244). If there is no difference between the latest update counter value and the update counter value of each search tree for the processing target cache entry stored in the cache table storage unit 50 (NO in step S244), the process proceeds to step S247.

一方、ステップS244において、最新の更新カウンタ値と、キャッシュテーブル記憶部50に記憶された処理対象キャッシュエントリに関する各探索木の更新カウンタ値との間に差分があった場合は(ステップS244のYES)、キャッシュエントリ再評価部43は、以下の処理を実行する。即ち、キャッシュエントリ再評価部43は、当該処理対象キャッシュエントリのうち、適合ルールおよび更新カウンタ値に差分があった探索木のノードに係る情報は無効であると判定する。そして、キャッシュエントリ再評価部43は、図2に示す探索木制御部10の探索木探索部13に依頼して、当該処理対象キャッシュエントリのキーに適合するルールを再度探索し直す(ステップS245)。このとき、キャッシュエントリ再評価部43は、ステップS244において更新カウンタ値に差分があったと判定された探索木の識別子のリストを、探索木探索部13に渡す。当該探索木の識別子のリストを受け取った探索木探索部13は、探索対象を当該探索木に限定して探索処理を行ってもよい。また、キャッシュエントリ再評価部43は、処理対象キャッシュエントリのノード状態リストに含まれるノード識別子のリストを、探索木探索部13に渡す。当該ノード識別子のリストを受け取った探索木探索部13は、探索木の探索処理を、ルートノードからではなく、受け取ったノード識別子によって識別されるノードから始めてもよい。   On the other hand, in step S244, when there is a difference between the latest update counter value and the update counter value of each search tree related to the processing target cache entry stored in the cache table storage unit 50 (YES in step S244). The cache entry reevaluation unit 43 executes the following processing. That is, the cache entry re-evaluation unit 43 determines that the information on the node of the search tree having a difference between the matching rule and the update counter value in the processing target cache entry is invalid. Then, the cache entry reevaluation unit 43 requests the search tree search unit 13 of the search tree control unit 10 shown in FIG. 2 to search again for a rule that matches the key of the cache entry to be processed (step S245). . At this time, the cache entry reevaluation unit 43 passes a list of the identifiers of the search trees determined to have a difference in the update counter value in step S244 to the search tree search unit 13. The search tree search unit 13 that has received the list of identifiers of the search tree may perform a search process by limiting a search target to the search tree. Further, the cache entry reevaluation unit 43 passes the list of node identifiers included in the node state list of the processing target cache entry to the search tree search unit 13. The search tree search unit 13 that has received the list of node identifiers may start the search processing of the search tree not from the root node but from the node identified by the received node identifier.

しかる後、キャッシュエントリ再評価部43は、ステップS245において探索されたルールの情報を基にして、処理対象キャッシュエントリを更新する(ステップS246)。具体的には、ステップS245においてキーに適合するルールを探索することができなかった場合には、キャッシュエントリ再評価部43は、処理対象キャッシュエントリの使用中フラグをオフに設定し、処理対象キャッシュエントリを削除する。その際、キャッシュエントリ再評価部43は、以前の適合ルールの参照カウンタを1減らす。   Thereafter, the cache entry reevaluation unit 43 updates the processing target cache entry based on the information of the rule searched in step S245 (step S246). Specifically, when a rule that matches the key cannot be searched in step S245, the cache entry reevaluation unit 43 sets the in-use flag of the processing target cache entry to off, and sets the processing target cache entry to off. Delete an entry. At that time, the cache entry reevaluation unit 43 decrements the reference counter of the previous matching rule by one.

一方、キーに適合するルールを探索することができた場合には、キャッシュエントリ再評価部43は、処理対象キャッシュエントリのルール識別子に、探索された当該適合ルールの識別子を設定する。その際、キャッシュエントリ再評価部43は、以前の適合ルールの参照カウンタを1減らし、新しい適合ルールの参照カウンタを1増やす。また、キャッシュエントリ再評価部43は、処理対象キャッシュエントリの最終使用時刻に、処理時点の時刻を設定する。さらに、キャッシュエントリ再評価部43は、ステップS241およびS243において、最新の共有更新カウンタ値および最新の更新カウンタ値を取得していた場合には、取得した最新の共有更新カウンタ値、最新の更新カウンタ値をそれぞれ処理対象キャッシュエントリの共有更新カウンタキャッシュ、更新カウンタキャッシュに記憶する。   On the other hand, when a rule that matches the key can be searched for, the cache entry reevaluation unit 43 sets the identifier of the searched matching rule as the rule identifier of the processing target cache entry. At that time, the cache entry reevaluation unit 43 decrements the reference counter of the previous matching rule by one and increases the reference counter of the new matching rule by one. Further, the cache entry re-evaluation unit 43 sets the time at the time of processing as the last use time of the cache entry to be processed. Further, when the latest shared update counter value and the latest update counter value have been acquired in steps S241 and S243, the cache entry reevaluation unit 43 determines whether the acquired latest shared update counter value and the latest update counter value have been acquired. The values are respectively stored in the shared update counter cache and the update counter cache of the cache entry to be processed.

なお、ステップS242において、最新の共有更新カウンタ値と処理対象キャッシュエントリに記憶された各ベース探索木の共有更新カウンタ値との間に差分がなかった場合(ステップS242のNO)、または、ステップS244において、最新の更新カウンタ値と処理対象キャッシュエントリに記憶された各探索木の更新カウンタ値との間に差分がなかった場合には(ステップS244のNO)、キャッシュエントリ再評価部43は、以下の処理を実行する。すなわち、キャッシュエントリ再評価部43は、ステップS247において、当該処理対象キャッシュエントリは有効であるものと評価して、処理対象キャッシュエントリの最終使用時刻を、処理実行時点の時刻に設定する(ステップS247)。   If there is no difference between the latest shared update counter value and the shared update counter value of each base search tree stored in the processing target cache entry in step S242 (NO in step S242), or step S244. In the case where there is no difference between the latest update counter value and the update counter value of each search tree stored in the processing target cache entry (NO in step S244), the cache entry re-evaluation unit 43 Execute the processing of That is, in step S247, the cache entry reevaluation unit 43 evaluates that the processing target cache entry is valid, and sets the last use time of the processing target cache entry to the time at which the processing is executed (step S247). ).

また、キャッシュエントリ再評価部43は、本キャッシュエントリ再評価処理を終了する際に、処理対象キャッシュエントリが更新されたか(キーに適合するルールを探索できた場合)、あるいは、削除されたか(キーに適合するルールを探索できなかった場合)、のいずれかを示す情報を要求元に返す。   When ending the present cache entry reevaluation process, the cache entry reevaluation unit 43 checks whether the cache entry to be processed has been updated (if a rule matching the key has been found) or deleted (key Is returned to the requesting source, if any rule that matches is not found).

(本実施の形態の効果)
以上に詳細に説明したように、本実施の形態においては、次のような効果が得られる。
(Effects of the present embodiment)
As described in detail above, the present embodiment has the following effects.

本実施の形態によれば、図2に示す探索木制御部10の探索木初期化部11は、ルールセットをルールの特徴に基づいてサブルールセットに分割して、サブルールセット毎に探索木を構築する。さらに、探索木初期化部11は、各サブルールセットの特徴に基づいて探索木をグループ化し、探索木グループ毎にベース探索木を決定する。また、図1に示す探索木記憶部20が記憶する探索木のノードは、更新カウンタおよび共有更新カウンタに関する情報を有している。   According to the present embodiment, search tree initialization section 11 of search tree control section 10 shown in FIG. 2 divides a rule set into sub-rule sets based on the characteristics of the rules, and To build. Further, the search tree initialization unit 11 groups search trees based on the characteristics of each sub-rule set, and determines a base search tree for each search tree group. A search tree node stored in the search tree storage unit 20 illustrated in FIG. 1 has information on an update counter and a shared update counter.

また、図2に示す探索木制御部10のルール更新部12は、ルール更新(追加、変更、削除)に際し、処理対象ルールのマッチ条件が表す部分空間と重複する部分空間を表しているノード(群)に関し、処理対象ルールが含まれるサブルールセットに対する探索木における、当該ノードの更新カウンタを更新する。さらに、探索木制御部10は、当該探索木が属する探索木グループのベース探索木における当該ノードの共有更新カウンタをも更新する。また、図1に示すキャッシュテーブル記憶部50が記憶するキャッシュエントリは、当該キャッシュエントリが表すフローが属するノードの情報(探索木毎;ノードの更新カウンタおよび共有更新カウンタのキャッシュを含む情報)を有する。当該情報は、キャッシュエントリ作成部41およびキャッシュエントリ再評価部43によって当該キャッシュエントリが使用される毎に更新される。   Further, the rule updating unit 12 of the search tree control unit 10 illustrated in FIG. 2, when updating (adding, changing, deleting) a rule, represents a node (which represents a subspace overlapping with a subspace indicated by a match condition of a processing target rule). Group), the update counter of the node is updated in the search tree for the sub-rule set including the rule to be processed. Further, the search tree control unit 10 updates the shared update counter of the node in the base search tree of the search tree group to which the search tree belongs. The cache entry stored in the cache table storage unit 50 illustrated in FIG. 1 includes information on a node to which the flow represented by the cache entry belongs (for each search tree; information including a cache of a node update counter and a shared update counter). . The information is updated by the cache entry creation unit 41 and the cache entry reevaluation unit 43 each time the cache entry is used.

また、図1に示すパケット処理部60は、受信パケットを処理する際に、当該パケット(フロー)用のキャッシュエントリが存在する場合、当該キャッシュエントリを再評価してから使用する。   Further, when processing a received packet, if a cache entry for the packet (flow) exists, the packet processing unit 60 illustrated in FIG. 1 re-evaluates the cache entry and uses it.

また、図3に示すキャッシュテーブル制御部40のキャッシュエントリ再評価部43は、キャッシュエントリが表すフローが属するノード(群)に関し、記憶されている更新カウンタキャッシュの値(更新履歴情報のキャッシュの一種)と当該ノードの最新の更新カウンタの値(最新の更新履歴情報の一種)とを比較する。そして、両者に不整合がある場合、キャッシュエントリ再評価部43は、適合するルールの再探索が必要であると判断する。その際、キャッシュエントリ再評価部43は、記憶されている共有更新カウンタキャッシュの値(共有更新履歴情報のキャッシュの一種)と、当該ノード(ベース探索木に属する)の最新の共有更新カウンタの値(最新の共有更新履歴情報の一種)とを比較する。キャッシュエントリ再評価部43は、両者に不整合があった場合にのみ、当該ノードが属する探索木グループ内において更新カウンタキャッシュの値(更新履歴情報のキャッシュの一種)が無効であるものとして扱う。この場合、キャッシュエントリ再評価部43は、前述した記憶されている更新カウンタキャッシュの値と当該ノードの最新の更新カウンタの値との比較を行う。   Also, the cache entry reevaluation unit 43 of the cache table control unit 40 shown in FIG. 3 stores the value of the stored update counter cache (a type of cache of update history information) for the node (group) to which the flow represented by the cache entry belongs. ) Is compared with the value of the latest update counter (a type of latest update history information) of the node. If there is an inconsistency between the two, the cache entry re-evaluation unit 43 determines that a re-search for a matching rule is necessary. At this time, the cache entry reevaluation unit 43 calculates the value of the stored shared update counter cache (a kind of cache of the shared update history information) and the value of the latest shared update counter of the node (belonging to the base search tree). (A type of the latest shared update history information). The cache entry re-evaluation unit 43 treats the value of the update counter cache (a kind of cache of the update history information) as invalid in the search tree group to which the node belongs only when there is inconsistency between the two. In this case, the cache entry reevaluation unit 43 compares the stored value of the update counter cache described above with the value of the latest update counter of the node.

よって、本実施の形態によれば、パケット処理(データ処理の一種)に用いる情報エントリを探索する探索木が複数の探索木から構成されている場合であっても、以下のような効果を期待することができる。   Therefore, according to the present embodiment, the following effects are expected even when a search tree for searching for an information entry used for packet processing (a type of data processing) includes a plurality of search trees. can do.

具体的には、ルールセット(情報エントリの集合の一種)の更新時における、探索木による探索結果(第1の情報エントリ)と、該探索結果をキャッシュしているキャッシュエントリ(第2の情報エントリ)との間の同期処理(キャッシュエントリの再評価処理)を想定する。本実施の形態によれば、当該同期処理の際、パケット(処理対象のデータの一種)を受信する毎に確認する必要がある、共有更新カウンタ(共有更新履歴情報の一種)及び更新カウンタ(更新履歴情報の一種)の確認回数を、探索木の数から、ベース探索木の数に減らすことができる。その結果、パケット(処理対象のデータの一種)の処理におけるメモリアクセス回数を減らすことができる。さらには、アクセス先メモリアドレス領域が限定され(アクセス離散度が下がり)、かつ、キャッシュメモリによりメモリアクセス遅延の隠蔽効果も得られ易くなる。これにより、パケット処理(データ処理の一種)の性能の安定化、高速化を図ることができる。以上より、本実施形態におけるデータ処理装置1によれば、データ処理(例えばパケット処理)に用いる情報エントリを探索する際に用いる探索木を複数有する場合であっても、情報エントリの探索に要する負荷を低減することができる。   More specifically, a search result (first information entry) based on a search tree and a cache entry (second information entry) that caches the search result when a rule set (a type of a set of information entries) is updated. ) Is assumed (cache entry reevaluation processing). According to the present embodiment, at the time of the synchronization process, the shared update counter (a type of shared update history information) and the update counter (a type of shared update history information) need to be confirmed each time a packet (a type of data to be processed) is received. The number of times of confirmation of (a type of history information) can be reduced from the number of search trees to the number of base search trees. As a result, the number of memory accesses in the processing of a packet (a type of data to be processed) can be reduced. Furthermore, the access destination memory address area is limited (access discreteness is reduced), and the effect of concealing memory access delay is easily obtained by the cache memory. As a result, the performance of packet processing (a type of data processing) can be stabilized and speeded up. As described above, according to the data processing device 1 of the present embodiment, even when a plurality of search trees are used for searching for information entries used for data processing (for example, packet processing), the load required for searching for information entries is increased. Can be reduced.

なお、上記説明では、データ処理装置1は、受信したパケットに適合するルールが存在しない場合(ステップS209のNO、ステップS205のNO)に、当該パケットのフローに対応するキャッシュエントリを作成しないもしくは削除する(ステップS207)。しかしながら、本実施形態を用いて説明した本発明は、これに限定されるものではない。他の例として、データ処理装置1は、例えば、ステップS207において、上記に加え、適合するルールがない、という情報を記憶したキャッシュエントリを作成もしくは維持してもよい。これにより、データ処理装置1は、適合するルールがないパケットを受信した場合の探索木探索の実行回数を減らすことができる。   In the above description, when there is no rule that matches the received packet (NO in step S209, NO in step S205), the data processing device 1 does not create or delete the cache entry corresponding to the flow of the packet. (Step S207). However, the present invention described using the present embodiment is not limited to this. As another example, for example, in step S207, the data processing device 1 may create or maintain a cache entry storing information indicating that there is no matching rule in addition to the above. Thereby, the data processing device 1 can reduce the number of executions of the search tree search when a packet without a matching rule is received.

また、上記説明では、探索木は木構造であり、ルートノード以外のノードの親ノードの数は1である例を示した。しかしながら、本実施形態を用いて説明した本発明は、これに限定されるものではない。他の例として、ノードは複数の親ノードを持ってもよい。この場合、探索木は純粋な木ではなく、グラフとなる。ノードが複数の親ノードを持つ状態は、当該複数の親ノードが表す部分空間に重複がある場合に発生する。また、そのような重複は、あるノードの子ノード群を作成する際、各子ノードが表す部分空間の一部または全部に重なりを持たせることで発生する。そのような子ノード群の作成方法は、探索処理最適化の一環として行われてもよい。なお、探索処理においては、子ノード群の部分空間に重複があり、かつ探索キーが当該重複する部分空間に含まれる場合、当該部分空間を含む複数の子ノードを探索すればよい。   In the above description, an example has been described in which the search tree has a tree structure and the number of parent nodes of nodes other than the root node is one. However, the present invention described using the present embodiment is not limited to this. As another example, a node may have multiple parent nodes. In this case, the search tree is not a pure tree but a graph. The state in which a node has a plurality of parent nodes occurs when there is an overlap in the subspaces represented by the plurality of parent nodes. Such duplication occurs when a child node group of a certain node is created by giving an overlap to part or all of the subspace represented by each child node. Such a method of creating a child node group may be performed as part of search processing optimization. In the search processing, when there is an overlap in the subspaces of the child node group and the search key is included in the overlapping subspace, a plurality of child nodes including the subspace may be searched.

また、上記説明では、ルール更新の際、データ処理装置1は、常に、ベース木の共有更新カウンタを更新する。しかしながら、本実施形態を用いて説明した本発明は、これに限定されるものではない。他の例として、ルール更新の際、データ処理装置1は、所定の条件が成立する場合には、ベース木の共有更新カウンタを更新しないよう処理してもよい。その場合、ノードに係る情報に共有更新カウンタ非更新フラグを設け、データ処理装置1は、共有更新カウンタを更新せずに更新されたノードに係る情報の当該フラグをオンにする。また、キャッシュエントリのノード状態に当該フラグを追加し、キャッシュエントリ作成の際、データ処理装置1は、ノードの当該フラグの値をキャッシュエントリに記憶する。ステップS204においてキャッシュエントリを再評価する際、キャッシュエントリ再評価部43は、当該フラグを参照する。そして、キャッシュエントリ再評価部43は、当該フラグがオンのノードがある場合、当該ノードが属する探索木グループについて、ステップS241およびステップS242を省略し、ステップS242においてYESであったとして処理を行う。共有更新カウンタの利用は、前述したとおり、パケットを受信する毎に確認する必要がある共有更新カウンタ及び更新カウンタの確認回数を減らす効果がある一方、False Positiveを発生させる可能性がある。すなわち、当該更新の影響を受けないキャッシュエントリであっても、当該共有更新カウンタを参照している場合、当該共有更新カウンタの変更を検出して、各探索木の更新カウンタの取得および比較処理を行う場合が発生しうる。当該更新の影響を受けないキャッシュエントリについては、更新カウンタの比較では差異(不整合)が存在しないため、探索木の再探索は行われないものの、更新カウンタ取得および比較処理の負荷が発生する。所定の条件が成立する場合にベース木の共有更新カウンタを更新しないことで、そのようなFalse Positiveの発生、およびそれに伴う負荷の発生を抑制することができる。所定の条件として、例えば、下記(1)及び(2)のいずれかもしくは組み合わせを使用できる。
(1)更新されるルールの部分空間が、ベース木において多くのノードの部分空間と重複している場合 (すなわち、ルール更新により共有更新カウンタが更新されるノードの数が多い場合)
(2)更新されるルールに関係するノードを使用しているキャッシュエントリの数が少ない場合
あるノードを使用しているキャッシュエントリの数は、例えば、以下のような方法で確認することができる。即ち、ノードに係る情報に参照カウンタを追加する。そして、当該ノードを使用・参照するキャッシュエントリが作成された際に当該参照カウンタを1増やし、当該キャッシュエントリが当該ノードの使用・参照を終了する際に当該参照カウンタを1減らす。これにより、あるノードを使用しているキャッシュエントリの数を確認できる。
In the above description, at the time of rule update, the data processing device 1 always updates the shared update counter of the base tree. However, the present invention described using the present embodiment is not limited to this. As another example, when updating a rule, the data processing device 1 may perform processing so as not to update the shared update counter of the base tree when a predetermined condition is satisfied. In that case, a shared update counter non-update flag is provided in the information on the node, and the data processing device 1 turns on the flag of the information on the updated node without updating the shared update counter. Further, the flag is added to the node state of the cache entry, and when creating the cache entry, the data processing device 1 stores the value of the flag of the node in the cache entry. When re-evaluating the cache entry in step S204, the cache entry re-evaluation unit 43 refers to the flag. Then, when there is a node whose flag is on, the cache entry reevaluation unit 43 omits steps S241 and S242 for the search tree group to which the node belongs, and performs the processing assuming that YES was obtained in step S242. As described above, the use of the shared update counter has the effect of reducing the number of times the shared update counter and the update counter need to be checked each time a packet is received, but may cause False Positive. That is, even if the cache entry is not affected by the update, if the cache update refers to the shared update counter, the change of the shared update counter is detected, and the acquisition and comparison processing of the update counter of each search tree is performed. Doing so can occur. For a cache entry that is not affected by the update, no difference (inconsistency) exists in the comparison of the update counters, so that the search tree is not re-searched, but a load of update counter acquisition and comparison processing occurs. By not updating the shared update counter of the base tree when the predetermined condition is satisfied, it is possible to suppress the occurrence of such False Positive and the associated load. As the predetermined condition, for example, one or a combination of the following (1) and (2) can be used.
(1) When the subspace of the rule to be updated overlaps with the subspace of many nodes in the base tree (that is, when the number of nodes whose shared update counter is updated by the rule update is large)
(2) When the number of cache entries using a node related to the rule to be updated is small The number of cache entries using a certain node can be confirmed by the following method, for example. That is, a reference counter is added to the information on the node. Then, the reference counter is incremented by one when a cache entry using and referring to the node is created, and decremented by one when the cache entry ends use and reference of the node. As a result, the number of cache entries using a certain node can be confirmed.

また、上記説明では、データ処理装置1は、ベース木をルールの探索に使用する探索木の中から選択する。しかしながら、本実施形態を用いて説明した本発明は、これに限定されるものではない。他の例として、各探索木グループに探索用の探索木とは別の探索木(共有更新カウンタ用探索木)を追加し、当該共有更新カウンタ用探索木をベース木としてもよい。共有更新カウンタ用探索木は、ルールの収容を行わず、その構築は当該探索木グループの初期ルールセットと独立であってもよい。例えば、共有更新カウンタ用探索木の構築における各ノードでのCutする次元やCut数は予め与えられてもよい。   In the above description, the data processing device 1 selects the base tree from the search trees used for searching for rules. However, the present invention described using the present embodiment is not limited to this. As another example, a search tree (search tree for a shared update counter) different from the search tree for search may be added to each search tree group, and the search tree for the shared update counter may be used as a base tree. The search tree for the shared update counter does not contain rules, and its construction may be independent of the initial rule set of the search tree group. For example, the dimension and the number of Cuts at each node in the construction of the search tree for the shared update counter may be given in advance.

<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した実施形態を実現可能なハードウェア構成について説明する。
<Configuration of hardware and software program (computer program)>
Hereinafter, a hardware configuration capable of realizing the above-described embodiment will be described.

以下の説明においては、上記実施形態において説明したデータ処理装置1を、単に「データ処理装置」と記載する。また、データ処理装置の各構成要素を、単に「データ処理装置の構成要素」と記載する場合がある。   In the following description, the data processing device 1 described in the above embodiment will be simply referred to as “data processing device”. In addition, each component of the data processing device may be simply described as “a component of the data processing device”.

上記実施形態において説明したデータ処理装置は、1つ又は複数の専用のハードウェア装置により構成されてもよい。その場合、上記各図(図1乃至図3)に示した各構成要素は、その一部又は全部を統合したハードウェア(処理ロジックを実装した集積回路あるいは記憶デバイス等)を用いて実現されてもよい。   The data processing device described in the above embodiment may be configured by one or a plurality of dedicated hardware devices. In this case, each component shown in each of the above-described drawings (FIGS. 1 to 3) is realized using hardware (an integrated circuit or a storage device on which processing logic is mounted) in which some or all of the components are integrated. Is also good.

データ処理装置が専用のハードウェアにより実現される場合、係るデータ処理装置の構成要素は、例えば、それぞれの機能を提供可能な回路構成(circuitry)により実現されてもよい。係る回路構成は、例えば、SoC(System on a Chip)等の集積回路や、当該集積回路を用いて実現されたチップセット等を含む。この場合、データ処理装置の構成要素が保持するデータは、例えば、SoCとして統合されたRAM(Random Access Memory)領域やフラッシュメモリ領域、あるいは、当該SoCに接続された記憶デバイス(半導体記憶装置等)に記憶されてもよい。   When the data processing device is realized by dedicated hardware, the components of the data processing device may be realized by, for example, a circuit configuration that can provide respective functions. Such a circuit configuration includes, for example, an integrated circuit such as a SoC (System on a Chip), a chip set realized using the integrated circuit, and the like. In this case, the data held by the components of the data processing apparatus may be, for example, a RAM (Random Access Memory) area or a flash memory area integrated as a SoC, or a storage device (semiconductor storage device or the like) connected to the SoC. May be stored.

また、この場合、データ処理装置の各構成要素を接続する通信回線としては、周知の通信ネットワーク(例えば通信バス等)を採用してもよい。また、各構成要素を接続する通信回線は、それぞれの構成要素間をピアツーピアで接続してもよい。   In this case, a well-known communication network (for example, a communication bus or the like) may be adopted as a communication line for connecting each component of the data processing device. Further, the communication line connecting the components may connect the components in a peer-to-peer manner.

また、上述したデータ処理装置は、図26に例示するような汎用のハードウェア2600と、係るハードウェアによって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、データ処理装置は、任意の数の、汎用のハードウェア装置及びソフトウェア・プログラムにより構成されてもよい。即ち、データ処理装置を構成する構成要素毎に、個別のハードウェア装置が割当てられてもよく、複数の構成要素が、一つのハードウェア装置を用いて実現されてもよい。   Further, the above-described data processing device may be configured by general-purpose hardware 2600 as illustrated in FIG. 26 and various software programs (computer programs) executed by the hardware. In this case, the data processing device may be constituted by an arbitrary number of general-purpose hardware devices and software programs. That is, an individual hardware device may be assigned to each component configuring the data processing device, and a plurality of components may be realized using one hardware device.

図26における演算装置2601は、汎用のCPU(中央処理装置:Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置2601は、例えば後述する不揮発性記憶装置2603に記憶された各種ソフトウェア・プログラムを記憶装置2602に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。この場合、上記実施形態におけるデータ処理装置の構成要素の機能は、演算装置2601により実行されるソフトウェア・プログラムを用いて実現される。   The arithmetic device 2601 in FIG. 26 is an arithmetic processing device such as a general-purpose CPU (Central Processing Unit) or a microprocessor. The arithmetic device 2601 may read out various software programs stored in, for example, a nonvolatile storage device 2603 described later into the storage device 2602, and execute processing according to the software program. In this case, the functions of the components of the data processing device in the above embodiment are realized using a software program executed by the arithmetic device 2601.

記憶装置2602は、演算装置2601から参照可能な、RAMあるいはROM等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置2602は、揮発性のメモリ装置であってもよく、不揮発性のメモリ装置であってもよい。記憶装置2602には、データ処理装置の構成要素が保持するデータが一時的に記憶されてもよい。   The storage device 2602 is a memory device such as a RAM or a ROM, which can be referred to from the arithmetic device 2601, and stores software programs, various data, and the like. Note that the storage device 2602 may be a volatile memory device or a nonvolatile memory device. The storage device 2602 may temporarily store data held by the components of the data processing device.

なお、記憶装置2602、あるいは、演算装置2601には、記憶装置2602よりも比較的高速にアクセス可能なキャッシュメモリ2602aが設けられてもよい。ハードウェア2600は、CPUと、キャッシュメモリとを含む階層メモリ構成を備えたコンピュータを構成することができる。   Note that the storage device 2602 or the arithmetic device 2601 may be provided with a cache memory 2602a that can be accessed relatively faster than the storage device 2602. The hardware 2600 can configure a computer having a hierarchical memory configuration including a CPU and a cache memory.

不揮発性記憶装置2603は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置等の、不揮発性の記憶装置である。不揮発性記憶装置2603は、各種ソフトウェア・プログラムやデータ等を記憶可能である。   The non-volatile storage device 2603 is a non-volatile storage device such as a magnetic disk drive or a semiconductor storage device using a flash memory. The nonvolatile storage device 2603 can store various software programs, data, and the like.

ネットワークインタフェース2606は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のLAN接続用インタフェース装置を採用してもよい。例えば、データ処理装置は、ネットワークインタフェース2606を介して、各種通信ネットワークを介して、通信パケットを取得してもよい。   The network interface 2606 is an interface device that connects to a communication network, and may employ, for example, a wired or wireless LAN connection interface device. For example, the data processing device may acquire a communication packet via various communication networks via the network interface 2606.

ドライブ装置2604は、例えば、後述する記録媒体2605に対するデータの読み込みや書き込みを処理する装置である。   The drive device 2604 is, for example, a device that processes reading and writing of data from and to a recording medium 2605 described below.

記録媒体2605は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。   The recording medium 2605 is any recording medium on which data can be recorded, such as an optical disk, a magneto-optical disk, and a semiconductor flash memory.

入出力インタフェース2607は、外部装置との間の入出力を制御する装置である。   The input / output interface 2607 is a device that controls input / output with an external device.

上述した実施形態を例に説明した本発明におけるデータ処理装置、あるいはその構成要素は、例えば、図26に例示するハードウェア装置に対して、上記実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより実現されてもよい。より具体的には、例えば、係るハードウェア装置に対して供給したソフトウェア・プログラムを、演算装置2601が実行することによって、本発明が実現されてもよい。この場合、係るハードウェア装置で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト、仮想環境基盤等のミドルウェアなどが各処理の一部を実行してもよい。   The data processing device according to the present invention described in the above-described embodiment or a component thereof is, for example, a software program capable of realizing the functions described in the above-described embodiment with respect to a hardware device illustrated in FIG. May be realized by supplying More specifically, for example, the present invention may be realized when the arithmetic device 2601 executes a software program supplied to the hardware device. In this case, an operating system running on such a hardware device, middleware such as database management software, network software, or a virtual environment base, etc., may execute a part of each process.

上述した実施形態において上記各図に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。ただし、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。   In the above-described embodiment, each unit shown in each of the drawings can be realized as a software module, which is a function (processing) unit of a software program executed by the above-described hardware. However, the division of each software module shown in these drawings is a configuration for convenience of explanation, and various configurations can be assumed at the time of implementation.

例えば、図1乃至図3に例示したデータ処理装置の各構成要素をソフトウェアモジュールとして実現する場合、これらのソフトウェアモジュールが不揮発性記憶装置2603に記憶される。そして、演算装置2601がそれぞれの処理を実行する際に、これらのソフトウェアモジュールを記憶装置2602に読み出す。   For example, when each component of the data processing device illustrated in FIGS. 1 to 3 is realized as a software module, the software module is stored in the nonvolatile storage device 2603. Then, when the arithmetic device 2601 executes each process, these software modules are read out to the storage device 2602.

また、これらのソフトウェアモジュールは、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成されてもよい。このような構成により、これらのソフトウェアモジュールは、相互に通信可能に接続される。   Further, these software modules may be configured to be able to mutually transmit various data by an appropriate method such as a shared memory or inter-process communication. With such a configuration, these software modules are communicably connected to each other.

更に、上記ソフトウェア・プログラムは記録媒体2605に記録されてもよい。この場合、上記ソフトウェア・プログラムは、上記データ処理装置の構成要素の出荷段階、あるいは運用段階等において、適宜ドライブ装置2604を通じて不揮発性記憶装置2603に格納されるよう構成されてもよい。   Further, the software program may be recorded on the recording medium 2605. In this case, the software program may be configured to be stored in the non-volatile storage device 2603 via the drive device 2604 as needed at the stage of shipping or operating the components of the data processing device.

なお、上記の場合において、上記ハードウェアへの各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。   In the above case, the method of supplying various software programs to the hardware is such that the software is installed in the apparatus using an appropriate jig at a manufacturing stage before shipment or a maintenance stage after shipment. A method may be adopted. In addition, as a method of supplying various software programs, a general procedure may be adopted at present, such as a method of downloading from the outside via a communication line such as the Internet.

そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記録媒体によって構成されると捉えることができる。この場合、係る記録媒体は、ハードウェア装置と独立した媒体に限らず、LANやインターネットなどにより伝送されたソフトウェア・プログラムをダウンロードして記憶又は一時記憶した記録媒体を含む。   In such a case, the present invention can be considered to be constituted by a code constituting the software program or a computer-readable recording medium in which the code is recorded. In this case, the recording medium is not limited to a medium independent of the hardware device, but includes a recording medium in which a software program transmitted via a LAN, the Internet, or the like is downloaded and stored or temporarily stored.

また、上述したデータ処理装置の構成要素は、図26に例示するハードウェア装置を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、図26に例示するハードウェア装置の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、図26に例示するハードウェア装置を物理的な装置として構成した場合と同様の構成にて、本発明を実現可能である。   The components of the data processing device described above are configured by a virtual environment in which the hardware devices illustrated in FIG. 26 are virtualized, and various software programs (computer programs) executed in the virtual environment. You may. In this case, the components of the hardware device illustrated in FIG. 26 are provided as virtual devices in the virtualized environment. Also in this case, the present invention can be realized with the same configuration as the case where the hardware device illustrated in FIG. 26 is configured as a physical device.

以上、本発明の好適な実施形態の構成を説明した。しかし、かかる実施形態は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。   The configuration of the preferred embodiment of the present invention has been described above. However, it should be noted that such embodiments are merely examples of the present invention and do not limit the present invention in any way. It will be readily apparent to those skilled in the art that various modifications and changes can be made in accordance with the particular application without departing from the spirit of the invention.

即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。   That is, the present invention can apply various aspects that can be understood by those skilled in the art within the scope of the present invention.

この出願は、2015年2月6日に出願された日本出願特願2015−022010を基礎とする優先権を主張し、その開示の全てをここに取り込む。   This application claims priority based on Japanese Patent Application No. 2015-022010 filed on February 6, 2015, the disclosure of which is incorporated herein in its entirety.

1 データ処理装置
10 探索木制御部
11 探索木初期化部
12 ルール更新部
13 探索木探索部
14 更新カウンタ取得部
20 探索木記憶部
21 種別欄
22 項目欄
23 説明欄
24 ノード種別欄
25 項目欄
26 説明欄
30 ルール記憶部
31 項目欄
32 説明欄
33 例欄
40 キャッシュテーブル制御部
41 キャッシュエントリ作成部
42 キャッシュエントリ探索部
43 キャッシュエントリ再評価部
50 キャッシュテーブル記憶部
51 項目欄
52 説明欄
53 項目欄
54 説明欄
60 パケット処理部
70 通信IF部
80 データ処理装置制御部
111 探索木グループ欄
112 所属探索木欄
113 使用グループ化基準欄
Reference Signs List 1 data processing device 10 search tree control unit 11 search tree initialization unit 12 rule update unit 13 search tree search unit 14 update counter acquisition unit 20 search tree storage unit 21 type column 22 item column 23 description column 24 node type column 25 item column 26 description column 30 rule storage unit 31 item column 32 description column 33 example column 40 cache table control unit 41 cache entry creation unit 42 cache entry search unit 43 cache entry reevaluation unit 50 cache table storage unit 51 item column 52 description column 53 item Column 54 Description column 60 Packet processing unit 70 Communication IF unit 80 Data processing device control unit 111 Search tree group column 112 Membership search tree column 113 Use grouping reference column

Claims (10)

処理対象とするデータを処理する方法を決定するための第1の情報エントリを、それぞれの適用対象とするデータ識別情報を含む第1の情報エントリの集合の中から1ないし複数の探索木を用いて探索し、探索した前記第1の情報エントリを用いて前記データを処理する場合において、各前記探索木を構成するノードである中間ノードおよびリーフノードを前記データ識別情報の探索空間に対応付けて探索した際に得られた前記探索木による前記第1の情報エントリの探索結果を第2の情報エントリとして記憶しておき、前記データを処理する際に、当該データに関する前記第2の情報エントリが記憶されていた場合、当該第2の情報エントリを使用して当該データを処理するデータ処理装置であって、
1ないし複数の前記探索木をグループ化し、各探索木グループにおけるベース探索木を選択する探索木初期化手段と、
前記探索木を構成する中間ノードおよびリーフノードの各ノードに関し、前記ノードの更新の履歴を示す更新履歴情報および当該探索木を構成するいずれかの前記ノードの更新の履歴を示す共有更新履歴情報を記憶する探索木記憶手段と、
前記第1の情報エントリの内容を操作した際に、当該第1の情報エントリの前記データ識別情報である操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの更新履歴情報を更新するとともに、当該ノードを含む前記探索木が属する前記探索木グループのベース探索木について前記操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの共有更新履歴情報を更新する更新手段と、
前記第2の情報エントリとして、前記探索木による前記第1の情報エントリの探索結果として得られる、各前記探索木における探索によって到達したノードを示すノード識別子と当該ノードの前記更新履歴情報および前記共有更新履歴情報とのキャッシュを記憶する情報エントリ記憶手段と、
前記第2の情報エントリを使用したデータ処理を行う際に、前記情報エントリ記憶手段に記憶された当該第2の情報エントリに関する前記ノードの前記共有更新履歴情報のキャッシュと当該ノードの最新の前記共有更新履歴情報とを、各前記ベース探索木について比較し、両者に不整合があった場合には、当該ノードを含む前記ベース探索木が属する前記探索木グループの各前記探索木について、前記情報エントリ記憶手段に記憶された当該第2の情報エントリに関する各前記ノードの前記更新履歴情報のキャッシュと各当該ノードの最新の前記更新履歴情報とを比較し、両者に不整合があった場合は、前記情報エントリ記憶手段に記憶された当該第2の情報エントリに含まれる情報のうち少なくとも前記更新履歴情報に関し前記不整合が検出されたノードに係る情報は無効であるものと判定する再評価手段と
を備えるデータ処理装置。
A first information entry for determining a method of processing data to be processed is determined by using one or a plurality of search trees from a set of first information entries each including data identification information to be applied. In the case where the data is processed using the searched first information entry, an intermediate node and a leaf node which are nodes constituting each search tree are associated with a search space of the data identification information. A search result of the first information entry by the search tree obtained at the time of the search is stored as a second information entry, and when the data is processed, the second information entry relating to the data is A data processing device that processes the data using the second information entry if the data is stored;
Search tree initialization means for grouping one or more search trees and selecting a base search tree in each search tree group;
For each of the intermediate nodes and the leaf nodes constituting the search tree, update history information indicating the update history of the node and shared update history information indicating the update history of any of the nodes constituting the search tree are: Search tree storage means for storing;
When the content of the first information entry is operated, update history information of the node associated with a search space overlapping with the operation target data identification information that is the data identification information of the first information entry is updated. Updating means for updating the shared update history information of the node associated with the search space overlapping with the operation target data identification information for the base search tree of the search tree group to which the search tree including the node belongs. ,
As the second information entry, a node identifier obtained as a search result of the first information entry by the search tree and indicating a node reached by a search in each search tree, the update history information of the node, and the sharing Information entry storage means for storing a cache with update history information;
When performing data processing using the second information entry, a cache of the shared update history information of the node related to the second information entry stored in the information entry storage unit and the latest shared information of the node The update history information is compared for each of the base search trees, and when there is a mismatch between the two, the information entry for each of the search trees of the search tree group to which the base search tree including the node belongs belongs. The cache of the update history information of each of the nodes related to the second information entry stored in the storage unit is compared with the latest update history information of each of the nodes. The inconsistency is detected in at least the update history information among the information contained in the second information entry stored in the information entry storage means. Is information relating to node data processing apparatus and a revaluation unit determines that invalid.
前記再評価手段は、前記情報エントリ記憶手段に記憶された前記第2の情報エントリが無効であるものと判定した際に、前記情報エントリ記憶手段に記憶された当該第2の情報エントリに関する前記更新履歴情報のキャッシュの値と最新の更新履歴情報の値とに不整合があった前記ノードが属する前記探索木について前記第1の情報エントリの再探索を行い、再探索した結果を用いて当該情報エントリ記憶手段に記憶された当該第2の情報エントリを更新する
請求項1に記載のデータ処理装置。
The re-evaluation unit, when determining that the second information entry stored in the information entry storage unit is invalid, updates the second information entry stored in the information entry storage unit. The first information entry is re-searched for the search tree to which the node in which the value of the history information cache is inconsistent with the value of the latest update history information, and the information is obtained using the result of the re-search. The data processing device according to claim 1, wherein the second information entry stored in the entry storage unit is updated.
前記再評価手段は、前記第1の情報エントリの再探索を、前記情報エントリ記憶手段に記憶された当該第2の情報エントリに関する前記更新履歴情報のキャッシュの値と最新の更新履歴情報の値とに不整合があった前記ノードが属する前記探索木のルートのノードから開始する代わりに、前記情報エントリ記憶手段に記憶された当該第2の情報エントリに関する前記ノード識別子のキャッシュが示すノードから開始する
請求項2に記載のデータ処理装置。
The re-evaluation means may perform a re-search for the first information entry by comparing a value of the cache of the update history information and a value of the latest update history information with respect to the second information entry stored in the information entry storage means. Instead of starting from the node at the root of the search tree to which the node having the inconsistency belongs, starts from the node indicated by the node identifier cache for the second information entry stored in the information entry storage means. The data processing device according to claim 2.
前記探索木初期化手段は、1ないし複数の前記探索木をグループ化する際に、各前記探索木に含まれる前記第1の情報エントリの特徴を用いてあらかじめ定めたグループ化基準に基づいて、前記探索木のグループ化を行う
請求項1ないし請求項3のいずれかに記載のデータ処理装置。
The search tree initializing means, when grouping one or more search trees, based on a grouping criterion predetermined using characteristics of the first information entry included in each search tree, The data processing device according to claim 1, wherein the search trees are grouped.
前記探索木初期化手段は、前記グループ化基準として、前記第1の情報エントリに含まれる前記データ識別情報の粒度を用いる
請求項4に記載のデータ処理装置。
The data processing device according to claim 4, wherein the search tree initialization unit uses a granularity of the data identification information included in the first information entry as the grouping criterion.
前記更新履歴情報および前記共有更新履歴情報が、それぞれの更新回数をカウントする更新カウンタおよび共有更新カウンタからなっており、前記ノードの値と前記キャッシュの値に差異がある状態を不整合とみなす
請求項1ないし請求項5のいずれかに記載のデータ処理装置。
The update history information and the shared update history information each include an update counter for counting the number of updates and a shared update counter, and a state in which there is a difference between the value of the node and the value of the cache is regarded as inconsistent. The data processing device according to claim 1.
処理対象とするデータを処理する方法を決定するための第1の情報エントリを、それぞれの適用対象とするデータ識別情報を含む第1の情報エントリの集合の中から1ないし複数の探索木を用いて探索し、探索した前記第1の情報エントリを用いて前記データを処理する場合において、各前記探索木を構成するノードである中間ノードおよびリーフノードを前記データ識別情報の探索空間に対応付けて探索した際に得られた前記探索木による前記第1の情報エントリの探索結果を第2の情報エントリとして記憶しておき、前記データを処理する際に、当該データに関する前記第2の情報エントリが記憶されていた場合、当該第2の情報エントリを使用して当該データを処理する情報エントリ管理方法であって、
1ないし複数の前記探索木をグループ化し、各探索木グループにおけるベース探索木を選択し、
前記探索木を構成する中間ノードおよびリーフノードの各ノードに関し、前記ノードの更新の履歴を示す更新履歴情報および当該探索木を構成するいずれかの前記ノードの更新の履歴を示す共有更新履歴情報を記憶し、
前記第1の情報エントリの内容を操作した際に、当該第1の情報エントリの前記データ識別情報である操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの更新履歴情報を更新するとともに、当該ノードを含む前記探索木が属する前記探索木グループのベース探索木について前記操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの共有更新履歴情報を更新し、
前記第2の情報エントリとして、前記探索木による前記第1の情報エントリの探索結果として得られる、各前記探索木における探索によって到達したノードを示すノード識別子と当該ノードの前記更新履歴情報および前記共有更新履歴情報とのキャッシュを記憶し、
前記第2の情報エントリを使用したデータ処理を行う際に、前記第2の情報エントリを記憶することによって記憶された当該第2の情報エントリに関する前記ノードの前記共有更新履歴情報のキャッシュと当該ノードの最新の前記共有更新履歴情報とを、各前記ベース探索木について比較し、両者に不整合があった場合には、当該ノードを含む前記ベース探索木が属する前記探索木グループの各前記探索木について、前記記憶された当該第2の情報エントリに関する各前記ノードの前記更新履歴情報のキャッシュと各当該ノードの最新の前記更新履歴情報とを比較し、両者に不整合があった場合は、前記記憶された当該第2の情報エントリは無効であると判定することで、第2の情報エントリを再評価する
情報エントリ管理方法。
A first information entry for determining a method of processing data to be processed is determined by using one or a plurality of search trees from a set of first information entries each including data identification information to be applied. In the case where the data is processed using the searched first information entry, an intermediate node and a leaf node which are nodes constituting each search tree are associated with a search space of the data identification information. A search result of the first information entry by the search tree obtained at the time of the search is stored as a second information entry, and when the data is processed, the second information entry relating to the data is If stored, an information entry management method for processing the data using the second information entry,
Grouping one or more search trees, selecting a base search tree in each search tree group,
For each of the intermediate nodes and the leaf nodes constituting the search tree, update history information indicating the update history of the node and shared update history information indicating the update history of any of the nodes constituting the search tree are: Remember,
When the content of the first information entry is operated, update history information of the node associated with a search space overlapping with the operation target data identification information that is the data identification information of the first information entry is updated. And updating the shared update history information of the node associated with the search space overlapping with the operation target data identification information for the base search tree of the search tree group to which the search tree including the node belongs,
As the second information entry, a node identifier obtained as a search result of the first information entry by the search tree and indicating a node reached by a search in each search tree, the update history information of the node, and the sharing Store cache with update history information,
When performing data processing using the second information entry, the cache of the shared update history information of the node related to the second information entry stored by storing the second information entry, and the node Is compared with the latest shared update history information for each of the base search trees. If there is a mismatch between the two, each of the search trees of the search tree group to which the base search tree including the node belongs belongs. Is compared with the cache of the update history information of each of the nodes relating to the stored second information entry and the latest update history information of each of the nodes. An information entry management method for re-evaluating the second information entry by determining that the stored second information entry is invalid.
前記第2の情報エントリの再評価は、前記記憶された前記第2の情報エントリが無効であると判定した際に、前記記憶された当該第2の情報エントリに関する前記更新履歴情報のキャッシュの値と、最新の更新履歴情報の値と、に不整合があった前記ノードが属する前記探索木について前記第1の情報エントリの再探索を行い、再探索した結果を用いて前記記憶された当該第2の情報エントリを更新する
請求項7に記載の情報エントリ管理方法。
The re-evaluation of the second information entry may include, when it is determined that the stored second information entry is invalid, the value of the cache of the update history information relating to the stored second information entry. And a value of the latest update history information, the search tree to which the node having the inconsistency belongs is searched again for the first information entry, and the stored second search information is used using a result of the search again. 8. The information entry management method according to claim 7, wherein the second information entry is updated.
前記第2の情報エントリの再評価は、前記第1の情報エントリの再探索を、前記記憶された当該第2の情報エントリに関する前記更新履歴情報のキャッシュの値と、最新の更新履歴情報の値と、に不整合があった前記ノードが属する前記探索木のルートのノードから開始する代わりに、前記記憶された当該第2の情報エントリに関する前記ノード識別子のキャッシュが示すノードから開始する
請求項8に記載の情報エントリ管理方法。
The re-evaluation of the second information entry includes re-searching the first information entry by re-evaluating a cache value of the update history information relating to the stored second information entry and a value of the latest update history information. And starting from the node indicated by the cache of the node identifier related to the stored second information entry, instead of starting from the root node of the search tree to which the node having the inconsistency belongs. Information entry management method described in.
処理対象とするデータを処理する方法を決定するための第1の情報エントリを、それぞれの適用対象とするデータ識別情報を含む第1の情報エントリの集合の中から1ないし複数の探索木を用いて探索し、探索した前記第1の情報エントリを用いて前記データを処理する場合において、各前記探索木を構成するノードである中間ノードおよびリーフノードを前記データ識別情報の探索空間に対応付けて探索した際に得られた前記探索木による前記第1の情報エントリの探索結果を第2の情報エントリとして記憶しておき、前記データを処理する際に、当該データに関する前記第2の情報エントリが記憶されていた場合、当該第2の情報エントリを使用して当該データを処理する情報エントリ管理プログラムであって、
1ないし複数の前記探索木をグループ化し、各探索木グループにおけるベース探索木を選択する探索木初期化処理と、
前記探索木を構成する中間ノードおよびリーフノードの各ノードに関し、前記ノードの更新の履歴を示す更新履歴情報および当該探索木を構成するいずれかの前記ノードの更新の履歴を示す共有更新履歴情報を記憶する探索木記憶処理と、
前記第1の情報エントリの内容を操作した際に、当該第1の情報エントリの前記データ識別情報である操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの更新履歴情報を更新するとともに、当該ノードを含む前記探索木が属する前記探索木グループのベース探索木について前記操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの共有更新履歴情報を更新する更新処理と、
前記第2の情報エントリとして、前記探索木による前記第1の情報エントリの探索結果として得られる、各前記探索木における探索によって到達したノードを示すノード識別子と当該ノードの前記更新履歴情報および前記共有更新履歴情報とのキャッシュを記憶する第2の情報エントリ記憶処理と、
前記第2の情報エントリを使用したデータ処理を行う際に、前記第2の情報エントリ記憶処理によって記憶された当該第2の情報エントリに関する前記ノードの前記共有更新履歴情報のキャッシュと当該ノードの最新の前記共有更新履歴情報とを、各前記ベース探索木について比較し、両者に不整合があった場合には、当該ノードを含む前記ベース探索木が属する前記探索木グループの各前記探索木について、前記第2の情報エントリ記憶処理によって記憶された当該第2の情報エントリに関する各前記ノードの前記更新履歴情報のキャッシュと各当該ノードの最新の前記更新履歴情報とを比較し、両者に不整合があった場合は、前記第2の情報エントリ記憶処理によって記憶された当該第2の情報エントリは無効であるものと判定する再評価処理と、をコンピュータに実行させる
情報エントリ管理プログラム。
A first information entry for determining a method of processing data to be processed is determined by using one or a plurality of search trees from a set of first information entries each including data identification information to be applied. In the case where the data is processed using the searched first information entry, an intermediate node and a leaf node which are nodes constituting each search tree are associated with a search space of the data identification information. A search result of the first information entry by the search tree obtained at the time of the search is stored as a second information entry, and when the data is processed, the second information entry relating to the data is If stored, an information entry management program that processes the data using the second information entry,
A search tree initialization process for grouping one or more search trees and selecting a base search tree in each search tree group;
For each of the intermediate nodes and the leaf nodes constituting the search tree, update history information indicating the update history of the node and shared update history information indicating the update history of any of the nodes constituting the search tree are: A search tree storage process for storing;
When the content of the first information entry is operated, update history information of the node associated with a search space overlapping with the operation target data identification information that is the data identification information of the first information entry is updated. And updating the shared update history information of the node associated with the search space overlapping with the operation target data identification information for the base search tree of the search tree group to which the search tree including the node belongs. ,
As the second information entry, a node identifier obtained as a search result of the first information entry by the search tree and indicating a node reached by a search in each search tree, the update history information of the node, and the sharing A second information entry storage process of storing a cache with the update history information;
When performing the data processing using the second information entry, the cache of the shared update history information of the node related to the second information entry stored by the second information entry storage processing and the latest The shared update history information is compared for each of the base search trees, and when there is a mismatch between the two, for each of the search trees of the search tree group to which the base search tree including the node belongs, The cache of the update history information of each of the nodes related to the second information entry stored in the second information entry storage process is compared with the latest update history information of each of the nodes. If there is, the second information entry stored by the second information entry storage process is re-evaluated to be determined to be invalid. Information entry management program to be executed process and, to the computer.
JP2016573232A 2015-02-06 2016-02-05 Data processing device, information entry management method, and information entry management program Active JP6652070B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015022010 2015-02-06
JP2015022010 2015-02-06
PCT/JP2016/000593 WO2016125501A1 (en) 2015-02-06 2016-02-05 Data processing device, information entry management method, and recording medium with information entry management program recorded thereon

Publications (2)

Publication Number Publication Date
JPWO2016125501A1 JPWO2016125501A1 (en) 2017-11-16
JP6652070B2 true JP6652070B2 (en) 2020-02-19

Family

ID=56563853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016573232A Active JP6652070B2 (en) 2015-02-06 2016-02-05 Data processing device, information entry management method, and information entry management program

Country Status (2)

Country Link
JP (1) JP6652070B2 (en)
WO (1) WO2016125501A1 (en)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3284064B2 (en) * 1996-11-28 2002-05-20 日本電信電話株式会社 Digital search device
DE60026229T2 (en) * 2000-01-27 2006-12-14 International Business Machines Corp. Method and apparatus for classifying data packets
JP3609358B2 (en) * 2000-08-17 2005-01-12 日本電信電話株式会社 Flow identification search apparatus and method
JP2008244642A (en) * 2007-03-26 2008-10-09 Nec Corp Retrieval device, method, and program

Also Published As

Publication number Publication date
JPWO2016125501A1 (en) 2017-11-16
WO2016125501A1 (en) 2016-08-11

Similar Documents

Publication Publication Date Title
US8478707B1 (en) System and method for reducing flow rules in forwarding tables
US11418632B2 (en) High speed flexible packet classification using network processors
US7478426B2 (en) Multi-field classification dynamic rule updates
US20170264643A1 (en) Language-localized policy statements
US9690813B2 (en) Tunable hardware sort engine for performing composite sorting algorithms
EP2772040B1 (en) Prefix and predictive search in a distributed hash table
JP6940239B2 (en) Methods and systems for anonymizing data stock
US20160335296A1 (en) Memory System for Optimized Search Access
Yingchareonthawornchai et al. A sorted partitioning approach to high-speed and fast-update OpenFlow classification
US11562004B2 (en) Classifying and filtering platform data via k-means clustering
US9021098B1 (en) Allocation of interface identifiers within network device having multiple forwarding components
US10984050B2 (en) Method, apparatus, and computer program product for managing storage system
US9426054B2 (en) Aliasing of named data objects and named graphs for named data networks
US20170012874A1 (en) Software router and methods for looking up routing table and for updating routing entry of the software router
US20200036784A1 (en) Peer-to-peer network for internet of things resource allocation operation
JP6652070B2 (en) Data processing device, information entry management method, and information entry management program
CN107045535B (en) Database table index
Abdolazimi et al. Connected components of big graphs in fixed mapreduce rounds
CN111193746B (en) Security policy matching method, device, electronic equipment and medium
Bahrambeigy et al. Bloom-Bird: A scalable open source router based on Bloom filter
Zhou et al. Raze policy conflicts in SDN
WO2017130824A1 (en) Information processing device, information processing method, and recording medium containing information processing program
WO2016208148A1 (en) Data processing device, data processing method, and computer-readable recording medium
WO2021012211A1 (en) Method and apparatus for establishing index for data
CN112639761B (en) Method and device for establishing index for data

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170724

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190115

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: 20191224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200106

R150 Certificate of patent or registration of utility model

Ref document number: 6652070

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150