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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information 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
そして、特許文献2に開示された装置は、パケットを受信し、当該パケットに対応するキャッシュエントリ(ルーティングテーブルの検索結果(すなわちルーティングエントリの情報)を含む)を使用して、当該パケットを処理する。この処理の際、該装置は、当該ルーティングエントリのカウンタ値を参照して、当該ルーティングエントリの更新の有無を判断する。該装置は、更新が検出された場合には、キャッシュエントリを削除する。これにより、該装置は、削除するキャッシュエントリを特定するための負荷を低減することができ、キャッシュエントリを削除する負荷を低減することができる。
Then, the device disclosed in
以上のように、ルールセットをサブルールセットに分割し、サブルールセット毎に探索木を構築して探索に使用するパケット分類分け(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
つまり、カウンタ値は、探索木のノード毎に存在し、各パケットは、典型的には、異なるノードに含まれるルールに適合される。このため、カウンタ値へのメモリアクセスは、メモリアドレス空間において離散的な領域(アドレス)に対して実行される。メモリアクセスが離散的な領域に対して実行される場合、キャッシュメモリによるメモリアクセス遅延隠蔽効果が得難くなる。これにより、パケットの処理に要する時間が長くなるという問題が、より顕著に発生する。 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.
以下、本発明によるデータ処理装置等の好適な実施形態について添付図を参照して説明する。なお、以下においては、本発明によるデータ処理装置および情報エントリ管理方法の実施形態について説明する。かかる情報エントリ管理方法は、コンピュータにより実行可能な情報エントリ管理プログラムとして実施されてもよい。係る情報エントリ管理プログラムは、コンピュータにより読み取り可能な記録媒体に記録されてもよい。また、以下の各図面に付した図面参照符号は、理解を助けるための一例として、各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。 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
探索木制御部10は、探索木記憶部20に記憶される探索木およびルール記憶部30に記憶されるルールの管理を行う。具体的には、探索木制御部10は、例えば、探索木の初期化や探索、ルールの追加等を行う部位である。
The search
探索木記憶部20は、詳細は後述するが、主に、受信パケット(すなわち処理対象のデータの一種)に対応するルール(すなわち情報エントリの一種、第1の情報エントリ)を探索する際に用いられる探索木を記憶する。探索木記憶部20に記憶される探索木は、1つまたは複数のノードによって構成される。該ノードは、中間ノードまたはリーフノードのいずれかである。また、探索木記憶部20は、探索木のグループ化に係る情報を記憶する。探索木記憶部20が記憶する探索木の数は、通常、2個以上であるが、一つであってもよい。探索木記憶部20は、例えば、メモリを用いて探索木を記憶する。各探索木、各ノードおよび各探索木グループには、それぞれを一意に識別する識別子が割り当てられ、当該識別子が参照等の操作の際に使用される。
Although details will be described later, the search
ルール記憶部30は、パケット処理するための情報であるルール(すなわち情報エントリの一種、第1の情報エントリ)の集合(ルールセット、サブルールセット)を記憶する。ルール記憶部30は、例えば、メモリを用いてルールの集合を記憶する。ルール記憶部30は、例えば、配列やハッシュテーブルなどのデータ構造を使用して、ルールの集合をメモリに記憶する。各ルールおよび各ルールセットや各サブルールセットには、それらを一意に識別する識別子が割り当てられ、当該識別子が参照等の操作の際に使用される。
The
キャッシュテーブル制御部40は、キャッシュテーブル記憶部50に記憶されるキャッシュエントリの管理を行う。キャッシュテーブル制御部40は、例えば、キャッシュエントリの作成や探索等を行う。
The cache
キャッシュテーブル記憶部50は、探索木による探索の結果を含む(キャッシュする)キャッシュエントリ(すなわち情報エントリの一種、第2の情報エントリ)を記憶する部位である。キャッシュテーブル記憶部50は、例えば、情報エントリ記憶手段として機能する。キャッシュテーブル記憶部50は、例えば、メモリを用いてキャッシュエントリを記憶する。キャッシュテーブル記憶部50は、例えば、ハッシュテーブルのデータ構造を使用してキャッシュエントリをメモリに記憶する。各キャッシュエントリにはそれぞれを一意に識別する識別子が割り当てられ、当該識別子が参照等の操作の際に使用される。
The cache
パケット処理部60は、通信IF部70からパケット(すなわち処理対象のデータの一種)を受信し、受信したパケットの処理を行う。その際、パケット処理部60は、探索木制御部10およびキャッシュテーブル制御部40を使用して、当該パケットの処理に用いる情報エントリ(ノード、ルール、キャッシュエントリ)を探索し、探索結果を用いて当該パケットを処理する。なお、パケット処理部60は、処理対象のデータの一種(パケット)を処理する、データ処理実行手段として機能してもよい。
The
通信IF部70は、データ処理装置1と通信ネットワーク(図1には図示していない)とを接続するインタフェースであり、当該通信ネットワークで使用される通信プロトコル(以下、単に「プロトコル」と記載する場合がある)にしたがってパケットの送受信を行う。
The communication IF
データ処理装置制御部80は、データ処理装置1がルールセットやサブルールセットにしたがってパケットを処理するように制御する。データ処理装置制御部80は、例えば、データ処理装置1が起動する際、探索木初期化部11(図2)に初期ルールセットを渡して初期化するように指示する。データ処理装置制御部80は、当該初期ルールセットをデータ処理装置1が具備する記憶装置(図1には図示していない)から読み込んでもよい。また、データ処理装置制御部80は、当該初期ルールセットを、他の制御装置(図1には図示していない)から受信してもよい。また、データ処理装置制御部80は、ユーザインタフェース(図1には図示していない)を介して、ユーザからルール更新の命令を受け取った際に、探索木制御部10に対してルール更新を指示する。また、データ処理装置制御部80は、他の制御装置(図1には図示していない)からルール更新の命令を受信した際に、探索木制御部10に対してルール更新を指示してもよい。
The data processing
次に、図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
図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
例えば、本実施の形態においては、マッチ条件の一例として、以下のような具体例が図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
また、各ルールの優先度は、或るパケットに対して複数のルールが適合する場合に、採用されるルールを選択するために使用される。各ルールの優先度は、図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
また、各ルールのアクションは、図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
(a)指定された通信IF部70からパケットを出力する。
(A) The packet is output from the designated communication IF
(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
また、各ルールの削除フラグは、図4の表の説明欄32に示すように、当該ルールに関して削除が要求されたものの、当該ルールが使用中であることから、削除処理が延期されているか否かを示すフラグである。
Further, as shown in the
次に、図1に示した本実施の形態のデータ処理装置1における、探索木記憶部20が記憶する探索木に係る情報およびノードに係る情報について図5の表を用いて説明する。
Next, information on the search tree and information on the nodes stored in the search
探索木記憶部20は、探索木の集合と、探索木グループリストと、ノードの集合と、を記憶する。図5は、図1に示したデータ処理装置1において使用される探索木に係る情報およびノードに係る情報の一構成例を説明する表である。図5は、図1のデータ処理装置1の探索木記憶部20に記憶される探索木に係る情報およびノードに係る情報の構成例を示す。図5における(A)部分には、探索木に係る情報および探索木グループリストに係る情報が例示されている。また、図5における(B)部分には、ノードに係る情報が例示されている。なお、本実施の形態におけるノードは、中間ノードまたはリーフノードのいずれかである。図5の(B)部分においては、ノード種別欄24に示すように、中間ノード・リーフノードともに共通に有する情報は“中間ノード・リーフノード共通”の部分に、中間ノードのみが有する情報は“中間ノード”の部分に、リーフノードのみが有する情報は“リーフノード”の部分に示されている。
The search
また、図5の(B)部分の項目欄25に示すノードの部分空間とは、当該ノードの探索対象である、当該ノードが表す部分空間の情報である。本部分空間の情報は、図23〜図25を用いて先に説明した一般的な探索木の例において、図25の“ノードが表す部分空間”欄に記載の情報に相当する。図25に示した例においては、探索空間の次元数が2次元の場合を示した。これに対して、本実施の形態におけるルールのマッチ条件は、前述のように、5タプル(5Tuple)であることから、本実施の形態における探索空間の次元数は5次元となる。
The node partial space shown in the
したがって、図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
また、探索木に係る情報については、図5の(A)部分における種別欄21に示すように、探索木それぞれに係る情報と、1ないし複数の探索木をグループ化した探索木グループに係る情報と、が記憶されている。探索木それぞれに係る情報には、項目欄22および説明欄23に示すように、ルートとなるノード(ルートノード)を示すルートノード識別子、対応するサブルールセットを示すサブルールセット識別子、属する探索木グループを示す探索木グループ識別子、が含まれる。また、探索木グループに係る情報には、属する各探索木を示す探索木識別子リスト、ベースとなるベース探索木を示すベース探索木識別子、が含まれる。
Further, as for the information relating to the search tree, as shown in the
次に、本発明に係る実施の形態において使用されるキャッシュテーブルおよびキャッシュエントリについて説明する。キャッシュエントリは、探索木を用いた、受信パケットに適合するルールの探索結果を記憶して再利用するために用いられる。探索木の探索処理への入力としては、受信パケットにおいてルールのマッチ条件として使用されるフィールド群(本実施の形態においては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
キャッシュテーブルのバケツリスト(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
図6の(A)部分の説明欄52に示すように、使用中フラグは、当該キャッシュエントリが使用中であるか否かを示すフラグである。使用中フラグがオンであれば、当該キャッシュエントリが使用中であることを示す。キーは、当該キャッシュエントリが表すフローに関するキーであり、ハッシュテーブル内探索用の探索キーとして使用される。また、ルール識別子は、当該キャッシュエントリに該当するパケットに適合するルールの識別子である。最終使用時刻は、当該キャッシュエントリを最後に使用した際の時刻を示す情報である。また、ノード状態リストは、図6の(B)部分に示すような、当該キャッシュエントリが最後に使用された際の、当該キャッシュエントリが表すフローが属するノードの状態(探索木毎の)リストを示している。
As shown in the
つまり、図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
探索木初期化部11は、初期状態において使用するルールセット(初期ルールセット)を基にして、探索木記憶部20およびルール記憶部30それぞれに記憶される探索木およびルールに係る情報を初期化する。当該初期ルールセットは、データ処理装置1が具備する記憶装置(図2には図示されていない)にあらかじめ記憶されていてもよい。また、当該初期ルールセットは、他の制御装置(図2には図示されていない)から与えられてもよい。
The search
また、ルール更新部12は、例えば図1に示したデータ処理装置制御部80からの要求に応じて、探索木記憶部20およびルール記憶部30それぞれに記憶される探索木およびルール(第1の情報エントリの一種)に係る情報を更新する部位である。ルール更新部12は、例えば、更新手段として機能する。ルール更新部12は、データ処理装置制御部80からの要求に含まれる操作種別(追加、変更、削除、のいずれか)およびルールを、パラメータとして受け取る。データ処理装置制御部80からの要求に含まれる操作種別がルール更新(ルール変更)の場合、該当するルールの優先度およびアクションの変更を要求することは可能であるが、マッチ条件は変更することができない。
Further, the
また、探索木探索部13は、例えば図1に示したパケット処理部60からの要求に応じて、指定されたキーに適合するルールを探索する。探索木探索部13は、探索に係るパラメータとして、探索に使用すべきキー(探索キー)をパケット処理部60から受け取る。探索木探索部13は、探索キーに適合する最高優先度のルールの識別子(最高優先度のルールが検出された場合)、および、探索木における探索において最終的に到達したノード(中間ノードもしくはリーフノード)の識別子(探索木毎)のリストを要求元に返す。
The search
また、更新カウンタ取得部14は、例えば図1に示したパケット処理部60からの要求に応じて、指定されたノードの更新カウンタの最新の値および共有更新カウンタの最新の値を取得する。
The update
次に、図1に示したデータ処理装置1のキャッシュテーブル制御部40の詳細な構成例について、図3のブロック構成図を用いて説明する。図3は、図1に示したデータ処理装置1のキャッシュテーブル制御部40の詳細なブロック構成の一例を示すブロック構成図である。図3に示すように、キャッシュテーブル制御部40は、キャッシュエントリ作成部41と、キャッシュエントリ探索部42と、キャッシュエントリ再評価部43と、を含む。
Next, a detailed configuration example of the cache
キャッシュエントリ作成部41は、例えば図1に示したデータ処理装置1のパケット処理部60からの要求に応じて、キャッシュエントリを作成する。また、キャッシュエントリ作成部41は、指定されたキーに対応するバケツ(Bucket)に空きがない場合、当該バケツ(Bucket)内のキャッシュエントリを一つ削除し、新しいキャッシュエントリを作成する。
The cache
また、キャッシュエントリ探索部42は、例えば図1に示したデータ処理装置1のパケット処理部60からの要求に応じて、キャッシュエントリを探索する。キャッシュエントリ探索部42は、パラメータとしてキーを受け取り、受け取った当該キーに対応するキャッシュエントリを探索して、探索したキャッシュエントリを要求元に返す。
Further, the cache
また、キャッシュエントリ再評価部43は、例えば図1に示したデータ処理装置1のパケット処理部60からの要求に応じて、キャッシュエントリを再評価する。キャッシュエントリ再評価部43は、キャッシュエントリの識別子を受け取る。ここで、キャッシュエントリの再評価とは、指定されたキャッシュエントリとして記憶している探索木探索結果(当該キャッシュエントリが表すフローに適合するルール)が、最新のルールセットの状態においても有効か否かを確認することである。キャッシュエントリ再評価部43は、あるキャッシュエントリが最新のルールセットの状態において有効か否かを確認するために、当該キャッシュエントリとして記憶された、以下のような情報を含むノード状態リストと、関連するノードの更新カウンタおよび共有更新カウンタの最新の値とを使用する。
The cache
(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
図7のフローチャートにおいて、探索木初期化部11は、まず、パラメータとして与えられた初期ルールセットを、各ルールの特徴を用いてサブルールセットに分割し、ルール記憶部30に記憶させる(ステップS101)。上記サブルールセットへの分割は、周知の技術を用いて行われて良く、例えば、上記非特許文献1に記載の分割方法を用いてもよい。
In the flowchart of FIG. 7, the search
当該サブルールセットへの分割方法においては、まず、ルールのマッチ条件として使用される各フィールドについて、該当する当該フィールドにおけるマッチ条件の大小を判定する閾値を設定する。例えば、プロトコル番号フィールド(採り得る値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 (
当該サブルールセットへの分割方法において、探索木初期化部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
図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
(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
例えば、探索木グループ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
さらに、探索木初期化部11は、例えば、決定された各探索木グループの中から、マッチ条件の指定が小さいフィールドの数が最も小さい(少ない)探索木を、当該探索木グループのベース探索木として選択する。図22の例においては、探索木初期化部11は、例えば、探索木グループ1のベース探索木として‘サブセット1−1’用探索木(マッチ条件の小さいフィールドの数が‘1’の探索木)を選択する。
Further, for example, the search
次に、図7のステップS102において、探索木初期化部11がサブルールセット毎に探索木を構築する動作の一例について、図8および図9のフローチャートを参照して説明する。図8は、図1に示したデータ処理装置1の探索木制御部10における探索木初期化部11が、探索木構築処理を行う際の動作の一例を示すフローチャートであり、探索木初期化部11が探索木を構築する際の動作の一例を示している。
Next, an example of the operation in which the search
図8のフローチャートにおいて、探索木初期化部11は、まず、構築する探索木のルートノードを割り当てる(ステップS111)。具体的には、探索木初期化部11は、探索木記憶部20にルートノードの情報を記憶するデータ領域を割り当て、当該ルートノードについて以下のような情報を設定する。
In the flowchart of FIG. 8, the search
(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
次に、図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
上記非特許文献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
(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
なお、ステップ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
(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
図10のフローチャートにおいて、ルール更新部12は、まず、処理対象ルールが含まれる、処理対象のサブルールセットを選択する(ステップS131)。該サブルールセットの選択は、処理対象ルールの特徴に基づき、図7のフローチャートのステップS101によって用いられた方法と同じ方法によって行われる。
In the flowchart of FIG. 10, the
次に、ルール更新部12は、パラメータとして要求されている現在の操作が、ルール削除か否かを確認する(ステップS132)。要求されている現在の操作がルール削除であった場合には(ステップS132のYES)、ルール更新部12は、ルール記憶部30に記憶されている処理対象ルールの削除フラグをオンに設定した後(ステップS134)、ステップS135に移行する。一方、要求されている現在の操作がルール削除ではなかった場合には(ステップS132のNO)、ルール更新部12は、処理対象のサブルールセットを、パラメータによる要求にしたがって更新した後(ステップS133)、ステップS135に移行する。具体的な更新処理としては、ルール追加の場合には、ルール更新部12は、ルール記憶部30に処理対象サブルールセットの一要素として処理対象ルールを新たに記憶させる。また、ルール変更の場合には、ルール更新部12は、ルール記憶部30に処理対象サブルールセットの一要素として記憶されている処理対象ルールの情報(優先度およびアクション)を変更する。
Next, the
次いで、ルール更新部12は、パラメータとして要求されている現在の操作がルール追加か否かを確認する(ステップS135)。要求されている現在の操作がルール追加であった場合には(ステップS135のYES)、ルール更新部12は、処理対象サブルールセットの探索木(すなわち処理対象探索木)のルートノードについて、後述するルール更新サブ処理A1を実行した後(ステップS136)、ステップS138に移行する。一方、要求されている現在の操作がルール追加ではなかった場合には(ステップS135のNO)、ルール更新部12は、処理対象探索木のルートノードについて、後述するルール更新サブ処理Bを実行した後(ステップS137)、ステップS138に移行する。
Next, the
しかる後、ルール更新部12は、処理対象探索木のベース探索木を選択する(ステップS138)。具体的には、ルール更新部12は、探索木記憶部20に記憶されている探索木グループリストを参照し、処理対象探索木が属する探索木グループのベース探索木の識別子を取得する。次いで、ルール更新部12は、ステップS138において選択したベース探索木のルートノードについて、後述するルール更新サブ処理Cを実行する(ステップS139)。
Thereafter, the
詳細は後述するが、ステップ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
次いで、ルール更新部12は、ステップS142において選択された各子ノード(未割り当ての子ノードを含む)それぞれについて、後述するルール更新サブ処理A2を実行する(ステップS143)。その際、ルール更新部12は、パラメータとして、選択された子ノード(新しい処理対象ノードとして)と、現在の処理対象ノード(新しい処理対象ノードの親ノードとして)と、処理対象ルールと、を使用する。
Next, the
しかる後、ルール更新部12は、ステップS143において1回もしくは複数回実行されたルール更新サブ処理A2のいずれかにおいて新規に割り当てられた子ノードがあるか否かを確認する(ステップS144)。その確認の結果、新規に割り当てられた子ノードがなかった場合には(ステップS144のNO)、ルール更新部12は、本ルール更新サブ処理A1を終了する。一方、新規に割り当てられた子ノードがあった場合には(ステップS144のYES)、ルール更新部12は、処理対象ノードの更新カウンタを更新する(ステップS145)。具体的には、ルール更新部12は、処理対象ノードの更新カウンタの値を、現在の値に‘1’加えたものに変更する。
Thereafter, the
また、ステップ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
一方、ルールの数が該一定数(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
次に、図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
(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
次いで、ルール更新部12は、ステップS162において選択された各子ノード(割り当て済みの子ノードのみ)それぞれについて、ルール更新サブ処理Bを実行する(ステップS163)。
Next, the
ステップ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
次に、図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
次いで、ルール更新部12は、ステップS172において選択された各子ノード(割り当て済みの子ノードのみ)それぞれについて、ルール更新サブ処理Cを実行する(ステップS173)。
Next, the
しかる後、ルール更新部12は、以下の条件が満たされるか否かを確認する。即ち、ルール更新部12は、ステップS172において選択された子ノードにデータ領域が未割り当ての子ノード(すなわち関係するルールの数が0の子ノード)があり、かつ、要求されている現在の操作がルール追加であり、かつ、当該未割当の子ノードが表す部分空間と処理対象ルールのマッチ条件が表す部分空間とに重なる部分がある、という条件を確認する(ステップS174)。データ領域が未割り当ての子ノードがあり、かつ、要求されている現在の操作がルール追加であり、かつ、当該未割当の子ノードが表す部分空間と処理対象ルールのマッチ条件が表す部分空間とに重なる部分がある場合には(ステップS174のYES)、ルール更新部12は、処理対象ノードの共有更新カウンタを更新して(ステップS175)、本ルール更新サブ処理Cを終了する。具体的には、ルール更新部12は、処理対象ノードの共有更新カウンタの値を、現在の値に‘1’加えたものに変更する。一方、ステップS174において、データ領域が未割り当ての子ノードがなかったか、もしくは、要求されている現在の操作がルール追加ではなかった場合には(ステップS174のNO)、ルール更新部12は、本ルール更新サブ処理Cを終了する。なお、ステップS174において、未割当の子ノードが表す部分空間と処理対象ルールのマッチ条件が表す部分空間とに重なる部分が無い場合も、ルール更新部12は、本ルール更新サブ処理Cを終了してもよい。
Thereafter, the
また、ステップ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
<(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
In the present rule search process, the search
図15のフローチャートにおいて、探索木探索部13は、まず、各探索木について、後述するルール探索サブ処理Aを実行する(ステップS181)。次いで、探索木探索部13は、ステップS181において得られた、各探索木内で発見されたルールの集合の中から最高優先度のルールを選択する。探索木探索部13は、選択したルールを、パラメータとして受け取った探索キーに適合するルールとして要求元に返す(ステップS182)。また、探索木探索部13は、ステップS181において各探索木について得られる、探索により最終的に到達したノード(中間ノードもしくはリーフノード)の識別子(探索木毎)のリストも要求元に返す。
In the flowchart of FIG. 15, the search
次に、図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
図16のフローチャートにおいて、探索木探索部13は、まず、処理対象ノードとして処理対象探索木のルートノードを選択する(ステップS191)。次に、探索木探索部13は、処理対象ノードがリーフノードか否かを確認する(ステップS192)。リーフノードか否かの確認は、処理対象ノードのリーフノードフラグがオンか否かによって行われる。
In the flowchart of FIG. 16, the search
処理対象ノードがリーフノードではなかった場合には(ステップ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
一方、ステップ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
また、ステップ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
<(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
図17のフローチャートにおいて、パケット処理部60は、まず、受信した処理対象パケットからルール探索に使用するためのキー(探索キー)を抽出する(ステップS201)。具体的には、パケット処理部60は、受信したパケットから、送信元IPアドレス、送信先IPアドレス、プロトコル番号、送信元ポート番号、送信先ポート番号を探索キーとして取り出す。次に、パケット処理部60は、ステップS201において抽出された探索キーをパラメータとして、図3に示すキャッシュテーブル制御部40のキャッシュエントリ探索部42に依頼して、キャッシュエントリを探索する(ステップS202)。
In the flowchart of FIG. 17, the
パケット処理部60は、キャッシュエントリ探索部42に対する依頼結果として、パラメータとして引き渡した探索キーに対応するキャッシュエントリ(処理対象キャッシュエントリ)が検出されたか否かを確認する(ステップS203)。処理対象キャッシュエントリが検出された場合には(ステップS203のYES)、パケット処理部60は、図3に示すキャッシュテーブル制御部40のキャッシュエントリ再評価部43に依頼して、当該処理対象キャッシュエントリの再評価を行う(ステップS204)。キャッシュエントリ再評価部43は、再評価の結果として、当該処理対象キャッシュエントリが更新されたか(探索キーに適合するルールが検出された場合)、もしくは、削除されたか(探索キーに適合するルールが検出されなかった場合)、のいずれかを返す。
The
パケット処理部60は、キャッシュエントリ再評価部43からの再評価の結果を受け取ると、ステップS204において探索キーに適合するルールが検出されたか否かを確認する(ステップS205)。探索キーに適合するルールが検出された場合には(ステップS205のYES)、パケット処理部60は、当該適合ルールのアクションに従い、処理対象パケットを処理する(ステップS206)。
Upon receiving the re-evaluation result from the cache
一方、ステップ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
(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
(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
一方、探索キーに適合するルールが探索された場合には(ステップ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
しかる後、パケット処理部60は、ステップS206に移行して、ステップS208において探索された適合ルールが示すアクションに従い、処理対象パケットを処理する。
Thereafter, the
<(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
図18のフローチャートにおいて、キャッシュエントリ作成部41は、まず、パラメータとして受け取ったキーのハッシュ値を計算し、計算結果を基にして、当該キーに対応するハッシュテーブルのバケツ(Bucket)を選択する(ステップS221)。次に、キャッシュエントリ作成部41は、ステップS221において選択したバケツ(Bucket)に空きがあるか否かを確認する(ステップS222)。バケツ(Bucket)の空きの有無は、当該バケツ(Bucket)内の各キャッシュエントリについて、使用中フラグを確認することによって確認することができる。
In the flowchart of FIG. 18, the cache
選択したバケツ(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
ステップS224においては、キャッシュエントリ作成部41は、当該バケツ(Bucket)内の空きキャッシュエントリの一つを選択して、セットアップする(ステップS224)。具体的には、キャッシュエントリ作成部41は、選択したキャッシュエントリに対して、以下のような情報を設定する。また、キャッシュエントリ作成部41は、パラメータとして与えられたルールの参照カウンタを1増やす。
In step S224, the cache
(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
(G) Node state. Shared update counter cache (for each base search tree): A value obtained by requesting the update
<(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
図19のフローチャートにおいて、キャッシュエントリ探索部42は、まず、パラメータとして受け取ったキーのハッシュ値を計算する。キャッシュエントリ探索部42は、係る計算結果を基にして、当該キーに対応するハッシュテーブルのバケツ(Bucket)を選択する(ステップS231)。次に、キャッシュエントリ探索部42は、ステップS231において選択したバケツ(Bucket)内の最初のキャッシュエントリを選択する(ステップS232)。
In the flowchart of FIG. 19, the cache
次いで、キャッシュエントリ探索部42は、選択したキャッシュエントリの使用中フラグがオンであり、かつ、当該キャッシュエントリのキーと本キャッシュエントリ探索処理のパラメータとして与えられたキーとが一致するか否かを確認する(ステップS233)。キャッシュエントリの使用中フラグがオンであり、かつ、当該キャッシュエントリのキーと本キャッシュエントリ探索処理のパラメータとして与えられたキーとが一致した場合は(ステップS233のYES)、キャッシュエントリ探索部42は、キーに合致するキャッシュエントリの探索に成功したと判定する。この場合、キャッシュエントリ探索部42は、本キャッシュエントリ探索処理を終了し、探索の結果として、当該キャッシュエントリの識別子を要求元に返す。
Next, the cache
一方、ステップ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
また、ステップ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
<(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
図20のフローチャートにおいて、キャッシュエントリ再評価部43は、まず、処理対象キャッシュエントリのノード状態リストを参照する。キャッシュエントリ再評価部43は、図2に示す探索木制御部10の更新カウンタ取得部14に依頼して、処理対象キャッシュエントリが表すフローが属するノードの最新の共有更新カウンタ値(ベース探索木毎)を取得する(ステップS241)。次に、キャッシュエントリ再評価部43は、ステップS241において取得された最新の共有更新カウンタ値と、キャッシュテーブル記憶部50に記憶された処理対象キャッシュエントリに関する各ベース探索木の共有更新カウンタ値との間に差分があるか否かを確認する(ステップS242)。
In the flowchart of FIG. 20, the cache
最新の共有更新カウンタ値とキャッシュテーブル記憶部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
次いで、キャッシュエントリ再評価部43は、ステップS243において取得された最新の更新カウンタ値と、キャッシュテーブル記憶部50に記憶された処理対象キャッシュエントリに関する各探索木の更新カウンタ値との間に差分があるか否かを確認する(ステップS244)。最新の更新カウンタ値とキャッシュテーブル記憶部50に記憶された処理対象キャッシュエントリに関する各探索木の更新カウンタ値との間に差分がない場合は(ステップS244のNO)、ステップS247に移行する。
Next, the cache
一方、ステップ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
しかる後、キャッシュエントリ再評価部43は、ステップS245において探索されたルールの情報を基にして、処理対象キャッシュエントリを更新する(ステップS246)。具体的には、ステップS245においてキーに適合するルールを探索することができなかった場合には、キャッシュエントリ再評価部43は、処理対象キャッシュエントリの使用中フラグをオフに設定し、処理対象キャッシュエントリを削除する。その際、キャッシュエントリ再評価部43は、以前の適合ルールの参照カウンタを1減らす。
Thereafter, the cache
一方、キーに適合するルールを探索することができた場合には、キャッシュエントリ再評価部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
なお、ステップ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
また、キャッシュエントリ再評価部43は、本キャッシュエントリ再評価処理を終了する際に、処理対象キャッシュエントリが更新されたか(キーに適合するルールを探索できた場合)、あるいは、削除されたか(キーに適合するルールを探索できなかった場合)、のいずれかを示す情報を要求元に返す。
When ending the present cache entry reevaluation process, the cache
(本実施の形態の効果)
以上に詳細に説明したように、本実施の形態においては、次のような効果が得られる。(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
また、図2に示す探索木制御部10のルール更新部12は、ルール更新(追加、変更、削除)に際し、処理対象ルールのマッチ条件が表す部分空間と重複する部分空間を表しているノード(群)に関し、処理対象ルールが含まれるサブルールセットに対する探索木における、当該ノードの更新カウンタを更新する。さらに、探索木制御部10は、当該探索木が属する探索木グループのベース探索木における当該ノードの共有更新カウンタをも更新する。また、図1に示すキャッシュテーブル記憶部50が記憶するキャッシュエントリは、当該キャッシュエントリが表すフローが属するノードの情報(探索木毎;ノードの更新カウンタおよび共有更新カウンタのキャッシュを含む情報)を有する。当該情報は、キャッシュエントリ作成部41およびキャッシュエントリ再評価部43によって当該キャッシュエントリが使用される毎に更新される。
Further, the
また、図1に示すパケット処理部60は、受信パケットを処理する際に、当該パケット(フロー)用のキャッシュエントリが存在する場合、当該キャッシュエントリを再評価してから使用する。
Further, when processing a received packet, if a cache entry for the packet (flow) exists, the
また、図3に示すキャッシュテーブル制御部40のキャッシュエントリ再評価部43は、キャッシュエントリが表すフローが属するノード(群)に関し、記憶されている更新カウンタキャッシュの値(更新履歴情報のキャッシュの一種)と当該ノードの最新の更新カウンタの値(最新の更新履歴情報の一種)とを比較する。そして、両者に不整合がある場合、キャッシュエントリ再評価部43は、適合するルールの再探索が必要であると判断する。その際、キャッシュエントリ再評価部43は、記憶されている共有更新カウンタキャッシュの値(共有更新履歴情報のキャッシュの一種)と、当該ノード(ベース探索木に属する)の最新の共有更新カウンタの値(最新の共有更新履歴情報の一種)とを比較する。キャッシュエントリ再評価部43は、両者に不整合があった場合にのみ、当該ノードが属する探索木グループ内において更新カウンタキャッシュの値(更新履歴情報のキャッシュの一種)が無効であるものとして扱う。この場合、キャッシュエントリ再評価部43は、前述した記憶されている更新カウンタキャッシュの値と当該ノードの最新の更新カウンタの値との比較を行う。
Also, the cache
よって、本実施の形態によれば、パケット処理(データ処理の一種)に用いる情報エントリを探索する探索木が複数の探索木から構成されている場合であっても、以下のような効果を期待することができる。 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
(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-
図26における演算装置2601は、汎用のCPU(中央処理装置:Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置2601は、例えば後述する不揮発性記憶装置2603に記憶された各種ソフトウェア・プログラムを記憶装置2602に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。この場合、上記実施形態におけるデータ処理装置の構成要素の機能は、演算装置2601により実行されるソフトウェア・プログラムを用いて実現される。
The
記憶装置2602は、演算装置2601から参照可能な、RAMあるいはROM等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置2602は、揮発性のメモリ装置であってもよく、不揮発性のメモリ装置であってもよい。記憶装置2602には、データ処理装置の構成要素が保持するデータが一時的に記憶されてもよい。
The
なお、記憶装置2602、あるいは、演算装置2601には、記憶装置2602よりも比較的高速にアクセス可能なキャッシュメモリ2602aが設けられてもよい。ハードウェア2600は、CPUと、キャッシュメモリとを含む階層メモリ構成を備えたコンピュータを構成することができる。
Note that the
不揮発性記憶装置2603は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置等の、不揮発性の記憶装置である。不揮発性記憶装置2603は、各種ソフトウェア・プログラムやデータ等を記憶可能である。
The
ネットワークインタフェース2606は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のLAN接続用インタフェース装置を採用してもよい。例えば、データ処理装置は、ネットワークインタフェース2606を介して、各種通信ネットワークを介して、通信パケットを取得してもよい。
The
ドライブ装置2604は、例えば、後述する記録媒体2605に対するデータの読み込みや書き込みを処理する装置である。
The
記録媒体2605は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
The
入出力インタフェース2607は、外部装置との間の入出力を制御する装置である。
The input /
上述した実施形態を例に説明した本発明におけるデータ処理装置、あるいはその構成要素は、例えば、図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
上述した実施形態において上記各図に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。ただし、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。 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
また、これらのソフトウェアモジュールは、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成されてもよい。このような構成により、これらのソフトウェアモジュールは、相互に通信可能に接続される。 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
なお、上記の場合において、上記ハードウェアへの各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。 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
Claims (10)
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.
請求項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.
請求項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ないし請求項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.
請求項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の情報エントリの前記データ識別情報である操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの更新履歴情報を更新するとともに、当該ノードを含む前記探索木が属する前記探索木グループのベース探索木について前記操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの共有更新履歴情報を更新し、
前記第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.
請求項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.
請求項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の情報エントリの前記データ識別情報である操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの更新履歴情報を更新するとともに、当該ノードを含む前記探索木が属する前記探索木グループのベース探索木について前記操作対象データ識別情報と重複する探索空間に対応付けられた前記ノードの共有更新履歴情報を更新する更新処理と、
前記第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.
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)
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 |
-
2016
- 2016-02-05 JP JP2016573232A patent/JP6652070B2/en active Active
- 2016-02-05 WO PCT/JP2016/000593 patent/WO2016125501A1/en active Application Filing
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 |