WO2021024392A1 - パケット検索装置、パケット検索方法およびパケット検索プログラム - Google Patents

パケット検索装置、パケット検索方法およびパケット検索プログラム Download PDF

Info

Publication number
WO2021024392A1
WO2021024392A1 PCT/JP2019/030979 JP2019030979W WO2021024392A1 WO 2021024392 A1 WO2021024392 A1 WO 2021024392A1 JP 2019030979 W JP2019030979 W JP 2019030979W WO 2021024392 A1 WO2021024392 A1 WO 2021024392A1
Authority
WO
WIPO (PCT)
Prior art keywords
hash
binary tree
value
packet search
packet
Prior art date
Application number
PCT/JP2019/030979
Other languages
English (en)
French (fr)
Inventor
斉 金子
雅幸 西木
Original Assignee
日本電信電話株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to PCT/JP2019/030979 priority Critical patent/WO2021024392A1/ja
Publication of WO2021024392A1 publication Critical patent/WO2021024392A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation

Definitions

  • the present invention relates to a packet search device, a packet search method, and a packet search program.
  • packet search technology includes TCAM (Ternary Content Addressable Memory) search mainly using hardware and search by binary tree method or hash method mainly using software processing (Non-Patent Document 1). reference).
  • TCAM Binary Content Addressable Memory
  • hash method mainly using software processing
  • the hash method is generally faster than the binary tree method because it operates in the same way as the normal variable value acquisition process and does not perform the comparison process.
  • the hash method it may be difficult to apply the hash method with the conventional technology.
  • the match field Match Field
  • the search target field must be the same among all the rules. Therefore, if the ANY value or the like is allowed in any of the multiple fields, the packet search may be performed.
  • the hash method could not be applied. In other words, when the search target field is not fixed, such as when ANY is allowed in the rule, it is difficult to take advantage of the high speed of the hash method.
  • the present invention has been made in view of the above, and an object of the present invention is to make it possible to easily apply a hash method to packet retrieval.
  • the packet search device creates a binary tree creating unit that creates a binary tree having a predetermined branch and a hash table of the created binary tree.
  • a binary tree creating unit that creates a binary tree having a predetermined branch and a hash table of the created binary tree.
  • an expansion unit that expands the ANY value into branches of 0 and 1
  • a hash table creation unit that creates a table using hash values for the target part in the binary tree. And, characterized by having.
  • the hash method can be easily applied to packet retrieval.
  • FIG. 1 is a diagram for explaining a processing outline of the packet search device of the present embodiment.
  • FIG. 2 is a diagram for explaining a processing outline of the packet search device of the present embodiment.
  • FIG. 3 is a diagram for explaining a processing outline of the packet search device of the present embodiment.
  • FIG. 4 is a schematic diagram illustrating a schematic configuration of the packet search device of the present embodiment.
  • FIG. 5 is a diagram for explaining the processing of the binary tree creating unit.
  • FIG. 6 is a diagram for explaining the processing of the hash table creation unit.
  • FIG. 7 is a diagram for explaining the processing of the hash table creation unit.
  • FIG. 8 is a diagram for explaining the processing of the hash table creation unit.
  • FIG. 9 is a flowchart showing a packet search processing procedure.
  • FIG. 10 is a diagram showing an example of a computer that executes a packet search program.
  • Outline of packet search device processing 1 to 3 are diagrams for explaining a processing outline of the packet search device of the present embodiment.
  • the application of the hash method is typically a case where the search target field is fixed in advance such as 5 times and a variable such as ANY is not allowed as a value. That is, the hash method cannot be applied in principle unless the search target fields of each rule match exactly like a perfect rectangle.
  • the hash method is a method in which the target field of the input packet and the match field of the rule are converted into hash values and compared. Therefore, if ANY, prefix, and suffix are allowed in the match field and the search target field of the rule is different, the target area to be hashed by the packet is not fixed, and it becomes difficult to apply the hash method. This is because, in order to establish the hash, the target field on the input packet side and the target field on the rule side must match. On the other hand, if the fields in the rule include ANY, prefix, and suffix, and the target field on the rule side is not determined, the above matching becomes difficult.
  • the hash method is applied to the comparative search process of the corresponding part.
  • a hash table is created with array variables, and the search value (hash value) is used as the index of the array variable.
  • the search by the hash method is performed by specifying this index value, but since this operation is a memory address specification process at the machine language level, it is the same operation as a normal variable value acquisition process. That is, in the hash method, the packet search device 10 can execute the search without performing the comparison process by changing the comparison search process to the memory address designation process. Therefore, high-speed processing is realized.
  • the search for the three pieces of information (011, 101, 111) in the broken line frame A1 is speeded up by the hash table.
  • the comparison search process is not executed even in the original binary tree method, so the effect of hash table conversion cannot be obtained. Therefore, in such a case, it is not always necessary to create a hash table.
  • the larger the number of branches of the part to be hash-table the higher the effect of speeding up obtained by hash-table.
  • FIG. 3 illustrates the fields to which the hash method is applied in the binary tree.
  • bits are defined in the horizontal axis direction
  • rules are defined in the vertical axis direction.
  • the field to which the hash method is applied is a perfect rectangular shape, so that the target fields match among all the rules.
  • each rule is represented by a rule chain, and a hash table is partially created to speed up the process.
  • FIG. 3B assuming a binary tree with ANY designation, avoiding the ANY value in the binary tree, the rectangular part is made into a hash table.
  • the packet search device 10 expands a rule with an ANY value by a packet search process described later to broaden the scope of application of hash tableization.
  • FIG. 4 is a schematic diagram illustrating a schematic configuration of the packet search device of the present embodiment.
  • the packet search device 10 of the present embodiment is realized by a general-purpose computer or the like, and includes a communication control unit 13, a storage unit 14, and a control unit 15.
  • the communication control unit 13 is realized by a NIC (Network Interface Card) or the like, and communicates between an external device such as another network device via a telecommunication line such as a LAN (Local Area Network) or the Internet and the control unit 15. Control.
  • NIC Network Interface Card
  • LAN Local Area Network
  • Control Control.
  • the storage unit 14 is realized by a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory (Flash Memory), or a storage device such as a hard disk or an optical disk.
  • the storage unit 14 stores in advance a processing program that operates the packet search device 10, data used during execution of the processing program, and the like, or is temporarily stored each time the processing is performed.
  • the storage unit 14 may be configured to communicate with the control unit 15 via the communication control unit 13.
  • the control unit 15 is realized by using a CPU (Central Processing Unit), an NP (Network Processor), an FPGA (Field Programmable Gate Array), or the like, and executes a processing program stored in a memory. As a result, the control unit 15 functions as a binary tree creation unit 15a, an expansion unit 15b, and a hash table creation unit 15c.
  • a CPU Central Processing Unit
  • NP Network Processor
  • FPGA Field Programmable Gate Array
  • control unit 15 may include other functional units.
  • a search unit may be provided to search for packets that match the rule chain represented by the binary tree created by the packet search process described later and the hash table among the packets received from other network devices or the like.
  • the binary tree creation unit 15a creates a binary tree having a predetermined branch.
  • FIG. 5 is a diagram for explaining the processing of the binary tree creating unit 15a.
  • A is omitted in the blank portion shown in FIG. 5 surrounded by a broken line ellipse and having no node to the end.
  • the expansion unit 15b expands the ANY value into branches of 0 and 1. Specifically, the expansion unit 15b sets a plurality of rules represented by 0 and 1 in the rule chain represented by tracing each branch of the binary tree, including the ANY value of the target portion to be hash-table. Expand to real rules.
  • the target portion to be hash-table is, for example, a portion where the start bit position and the end bit position of each rule match, as in the broken line frames A2 and A3 shown in FIG.
  • the hash table creation unit 15c creates a table using hash values for the target part in the binary tree. Specifically, the hash table creation unit 15c uses the hash value corresponding to the actual rule in which each branch is represented by the path to the leaf, which is the terminal node, including the expanded branch, to set the target part. Make a hash table.
  • FIGS. 6 to 8 are diagrams for explaining the processing of the hash table creating unit 15c.
  • the hash table creation unit 15c stores the hash value corresponding to each actual rule as an index value in the rule registration area.
  • a 4-bit rule "1A0A” including an ANY value is expanded into an actual rule of a bit length of the ANY value, that is, four actual rules "1000", “1001", “1100", and "1101".
  • the search target data "1001” hits two rules of the rule chain “1A0A”-> rule "1001".
  • the memory of the bit length of the ANY value is consumed for the rule including the ANY value.
  • the hash table creation unit 15c may create a table in which the pointer to the actual rule associated with the hash value is chained instead of chaining the actual rule itself. That is, the increase in memory consumption in the rule registration area can be suppressed by chaining the pointer to the actual rule instead of chaining the actual rule itself.
  • the rule "1A0A” is associated with four pointers having hash values 8, 9, 12, and 13 corresponding to the actual rule.
  • one pointer such as a hash value 9 is associated with a rule that does not include an ANY value such as the rule "1001".
  • the registration area of the pointer corresponding to each actual rule is increased.
  • a rule of a 32-bit ANY value such as when the IP address is an ANY value, 8 bytes ⁇ 2 32 ⁇ 34 Gbytes of memory will be consumed.
  • the hash table creation unit 15c may create a table including pointers shared by a plurality of hash values among the pointers to the actual rules associated with the hash values. Good. That is, the hash table creation unit 15c shares the pointer itself to the rule including the ANY value.
  • FIG. 8 illustrates a shared pointer B1 including pointers of hash values 9 and 13 of the actual rule in association with the rule “1A0A”.
  • a shared pointer can be used at the end of the rule chain, that is, when the Next pointer of the pointer is set to "NULL".
  • the shared pointer B1 in which the above rule "1A0A" is at the end of the rule chain and the Next pointer is set to "Null" is associated with the rule "1A0A" in the storage unit 14. Is remembered in.
  • the shared pointer B2 can also be shared as a pointer of the subsequent rule "AA00". That is, the shared pointer B3 includes a pointer B2 including hash values 8 and 12 and a pointer having hash values 0 and 4. Then, the shared pointer B3 whose Next pointer is set to "Null" is stored in the storage unit 14 in association with the rule "AA00". In this way, in the case of a rule chain, it is possible to share a pointer between consecutive rules. Therefore, the hash table creation unit 15c may create a table in which a combination of rule chains for chaining pointers to actual rules associated with hash values is shared by a plurality of hash values.
  • the developing portion 15b may be developed as a target portion in order from the portion where the number of continuous ANY values of the binary tree is small. For example, in the binary tree shown in FIG. 5, when the number of consecutive A (ANY values) is N in the route to each leaf, when each A is expanded into two branches of 0 and 1, each route is expanded. The number of actual rules corresponding to is increased by (2 N -1). Therefore, the expansion unit 15b expands the number of pointers increased by the expansion within a range that does not exceed the upper limit set in advance by the system administrator.
  • the hash table creation unit 15c may be set as a target portion of hash tableization in which continuous ANY values are expanded within a range of a predetermined threshold value (for example, 5) or less set in advance by the system administrator. This makes it possible to suppress the increase in the number of actual rules and reduce the memory consumption.
  • a predetermined threshold value for example, 5
  • the number of consecutive A's in each path including A omitted in the broken line ellipse is 5 or less, and even if all A's are expanded, the number of increase of rules is 62. Because it is small, it is the target part of the hash table that expands the ANY value.
  • the number of consecutive A's is 6, and for example, when the predetermined threshold value is 5, the number of rule increases increases, so the hash table in which the ANY value is expanded It is excluded from the target of conversion.
  • FIG. 9 is a flowchart showing a packet search processing procedure.
  • the flowchart of FIG. 9 is started, for example, at the timing when the user inputs an operation instructing the start.
  • the binary tree creation unit 15a creates a binary tree of a packet search rule having a predetermined branch (step S1).
  • the expansion unit 15b when the expansion unit 15b includes the ANY value in the target portion of the created rule to be converted into a hash table of the binary tree, the expansion unit 15b expands the ANY value into branches of 0 and 1 (step S2).
  • the expansion unit 15b may set a portion in which the number of continuous ANY values of the binary tree is equal to or less than a predetermined threshold value as a target portion for hash table formation.
  • the hash table creation unit 15c creates a hash table using the hash value corresponding to the actual rule represented by the route that traces the expanded branch to each leaf (step S3).
  • the hash table creation unit 15c includes an ANY value represented by a route to the leaf of the target portion to be hash-tabled before expansion, with a pointer indicating the position of the hash value in the memory. It may be stored in the storage unit 14 in association with the rule.
  • the hash table creation unit 15c is a target portion for converting one shared pointer indicating the position on the memory of a plurality of hash values expanded from one ANY value into a hash table before expansion instead of the hash value. It may be stored in the storage unit 14 in association with the rule including the ANY value represented by the route to the leaf. As a result, a series of packet search processes are completed.
  • the binary tree creating unit 15a creates a binary tree having a predetermined branch. Further, when the target portion to be converted into a hash table of the created binary tree includes an ANY value, the expansion unit 15b expands the ANY value into branches of 0 and 1. Further, the hash table creation unit 15c creates a table using hash values for the target portion in the binary tree.
  • the packet search device 10 can create a hash table for the target part in the binary tree by using the hash value of the actual rule even if the target part to be converted into the hash table of the binary tree contains the ANY value.
  • the range of application of the hash method can be widened, so that the hash method can be easily applied to the packet search.
  • hash table creation unit 15c creates a table in which pointers associated with hash values are chained. This makes it possible to suppress memory consumption.
  • the hash table creation unit 15c creates a table including pointers shared by a plurality of hash values among the pointers associated with the hash values. This makes it possible to further suppress memory consumption.
  • the expansion unit 15b expands as the target portion in order from the portion where the number of continuous ANY values of the binary tree is small. This makes it possible to suppress memory consumption due to an increase in the rules for expanding the ANY value.
  • the packet search device 10 can be implemented by installing a packet search program that executes the above packet search process as package software or online software on a desired computer.
  • the information processing device can function as the packet search device 10.
  • the information processing device referred to here includes a desktop type or notebook type personal computer.
  • the information processing device includes smartphones, mobile communication terminals such as mobile phones and PHS (Personal Handyphone System), and slate terminals such as PDAs (Personal Digital Assistants).
  • the function of the packet search device 10 may be implemented in the cloud server.
  • FIG. 10 is a diagram showing an example of a computer that executes a packet search program.
  • the computer 1000 has, for example, a memory 1010, a CPU 1020, a hard disk drive interface 1030, a disk drive interface 1040, a serial port interface 1050, a video adapter 1060, and a network interface 1070. Each of these parts is connected by a bus 1080.
  • the memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM 1012.
  • the ROM 1011 stores, for example, a boot program such as a BIOS (Basic Input Output System).
  • BIOS Basic Input Output System
  • the hard disk drive interface 1030 is connected to the hard disk drive 1031.
  • the disk drive interface 1040 is connected to the disk drive 1041.
  • a removable storage medium such as a magnetic disk or an optical disk is inserted into the disk drive 1041.
  • a mouse 1051 and a keyboard 1052 are connected to the serial port interface 1050.
  • a display 1061 is connected to the video adapter 1060.
  • the hard disk drive 1031 stores, for example, the OS 1091, the application program 1092, the program module 1093, and the program data 1094. Each piece of information described in the above embodiment is stored in, for example, the hard disk drive 1031 or the memory 1010.
  • the packet search program is stored in the hard disk drive 1031 as, for example, a program module 1093 in which a command executed by the computer 1000 is described.
  • the program module 1093 in which each process executed by the packet search device 10 described in the above embodiment is described is stored in the hard disk drive 1031.
  • the data used for information processing by the packet search program is stored as program data 1094 in, for example, the hard disk drive 1031.
  • the CPU 1020 reads the program module 1093 and the program data 1094 stored in the hard disk drive 1031 into the RAM 1012 as needed, and executes each of the above-described procedures.
  • the program module 1093 and program data 1094 related to the packet search program are not limited to the case where they are stored in the hard disk drive 1031. For example, they are stored in a removable storage medium and read by the CPU 1020 via the disk drive 1041 or the like. It may be issued. Alternatively, the program module 1093 and the program data 1094 related to the packet search program are stored in another computer connected via a network such as LAN or WAN (Wide Area Network), and read by the CPU 1020 via the network interface 1070. May be done.
  • LAN or WAN Wide Area Network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

二分木作成部(15a)が、所定の枝分かれを有する二分木を作成する。展開部(15b)が、作成された二分木のハッシュテーブル化する対象部分にANY値が含まれる場合に、該ANY値を0と1との枝分かれに展開する。ハッシュテーブル作成部(15c)が、二分木における対象部分について、ハッシュ値を用いたテーブルを作成する。

Description

パケット検索装置、パケット検索方法およびパケット検索プログラム
 本発明は、パケット検索装置、パケット検索方法およびパケット検索プログラムに関する。
 従来、パケットの検索技術として、主にハードウェアを用いたTCAM(Ternary Content Addressable Memory)検索と、主にソフトウェア処理を用いた二分木法やハッシュ(Hash)法による検索がある(非特許文献1参照)。これらの検索技術のうち、ハッシュ法は、通常の変数値取得処理と同様の動作であり、比較処理を行わないため、一般的には二分木法よりも高速である。
"パケットフォワーディングを支える技術(2)ハードウェア処理ルータの内部詳解"、[online]、2012年、Internet Week 2012、[2019年7月9日検索]、インターネット<URL:https://www.nic.ad.jp/ja/materials/iw/2012/proceedings/d1/d1-uchiya.pdf>
 しかしながら、従来技術では、ハッシュ法を適用することが困難な場合がある。例えば、ハッシュ法では、全てのルール(rule)について、ANY値等が許容されず、マッチフィールド(Match Field)が固定されなければならない。すなわち、ハッシュ法では、全てのルール間で、検索対象フィールドが同じでなければならないことから、複数のフィールドの内、何れかのフィールドでANY値等が許容される場合には、パケット検索に際して、ハッシュ法が適用できなかった。換言すれば、ルールにANYを許容する場合等、検索対象フィールドが固定化されていない場合には、ハッシュ法の高速性を活かすことは困難であった。
 本発明は、上記に鑑みてなされたものであって、パケット検索にハッシュ法の適用を容易に可能とすることを目的とする。
 上述した課題を解決し、目的を達成するために、本発明に係るパケット検索装置は、所定の枝分かれを有する二分木を作成する二分木作成部と、作成された前記二分木のハッシュテーブル化する対象部分にANY値が含まれる場合に、該ANY値を0と1との枝分かれに展開する展開部と、前記二分木における前記対象部分について、ハッシュ値を用いたテーブルを作成するハッシュテーブル作成部と、を有することを特徴とする。
 本発明によれば、パケット検索にハッシュ法の適用が容易に可能となる。
図1は、本実施形態のパケット検索装置の処理概要を説明するための図である。 図2は、本実施形態のパケット検索装置の処理概要を説明するための図である。 図3は、本実施形態のパケット検索装置の処理概要を説明するための図である。 図4は、本実施形態のパケット検索装置の概略構成を例示する模式図である。 図5は、二分木作成部の処理を説明するための図である。 図6は、ハッシュテーブル作成部の処理を説明するための図である。 図7は、ハッシュテーブル作成部の処理を説明するための図である。 図8は、ハッシュテーブル作成部の処理を説明するための図である。 図9は、パケット検索処理手順を示すフローチャートである。 図10は、パケット検索プログラムを実行するコンピュータの一例を示す図である。
 以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
[パケット検索装置の処理概要]
 図1~図3は、本実施形態のパケット検索装置の処理概要を説明するための図である。ハッシュ法の適用は、検索対象フィールドが5tupleの様に予め固定されており、値としてANY等の変数が許容されていない場合が典型例である。すなわち、各ルールの検索対象フィールドが、完全長方形型のように完全に一致していないと、ハッシュ法は原則として適用できない。
 より具体的には、図1に示すように、ハッシュ法は、入力パケットの対象フィールドとルールのマッチフィールドとを、それぞれハッシュ値化して比較する方法である。そのため、マッチフィールドにANYやprefix、suffixが許容され、ルールの検索対象フィールドがまちまちになると、パケットによりハッシュ値化する対象領域が固定化されず、ハッシュ法の適用は困難となる。なぜなら、ハッシュを成立させるためには、入力パケット側の対象フィールドとルール側の対象フィールドとが一致している必要がある。その一方で、ルール内のフィールドにANYやprefix、suffixが含まれることにより、ルール側の対象フィールドが定まらない場合には、上記一致が困難となるからである。
 そこで、図2に示すように、二分木の一部(破線枠A1の部分)をハッシュテーブル化することにより、該当部分の比較検索処理に対し、ハッシュ法を適用する。ハッシュ法では、ハッシュテーブルを配列変数で作成し、検索値(ハッシュ値)を配列変数のインデックスにする。ハッシュ法による検索は、このインデックス値の指定により行うが、本動作は、機械語レベルでは、メモリのアドレス指定処理となるため、通常の変数値取得処理と同様の動作になる。すなわち、ハッシュ法では、パケット検索装置10は、上記比較検索処理を、メモリアドレス指定処理に変更することにより、比較処理を行わずに検索を実行することができる。このため、高速処理が実現される。
 図2に示す例では、破線枠A1内の3つの情報(011、101、111)に対する検索が、ハッシュテーブル化により高速化されることとなる。但し、ハッシュテーブル化する部分の情報が1つしかない(枝分かれが無い)場合には、元の二分木法でも比較検索処理が実行されないため、ハッシュテーブル化による効果は得られない。このため、かかる場合には、必ずしもハッシュテーブル化を行う必要は無い。反対に、ハッシュテーブル化する部分の枝分かれの数が多い程、ハッシュテーブル化により得られる高速化の効果は高くなる。
 図3には、二分木においてハッシュ法の適用対象となるフィールドが例示されている。図3では、横軸方向にはビットが規定され、縦軸方向にはルールが規定されている。図3(a)に示すように、従来、ハッシュ法の適用対象となるフィールドは、完全長方形型であるため、全てのルール間で対象フィールドが一致している。また、ANY値(prefix、suffixを含む)を伴うフィールドを対象として、各ルールをルールチェインで表して、部分的にハッシュテーブル化を行って高速化を図っている。その場合に、図3(b)に示すように、ANY指定を伴う二分木を前提とし、二分木内のANY値を回避して、長方形型の部分をハッシュテーブル化する。
 ここで、二分木内にANY指定の箇所がまばらに存在する場合には、ハッシュテーブル化できる範囲が狭まって、ハッシュ法の適用による高速化の効果が薄れてしまう。そこで、本実施形態に係るパケット検索装置10は、後述するパケット検索処理により、ANY値を伴うルールを展開して、ハッシュテーブル化の適用範囲を広くする。
[パケット検索装置の構成]
 図4は、本実施形態のパケット検索装置の概略構成を例示する模式図である。図4に示すように、本実施形態のパケット検索装置10は、汎用コンピュータ等で実現され、通信制御部13、記憶部14、および制御部15を備える。
 通信制御部13は、NIC(Network Interface Card)等で実現され、LAN(Local Area Network)やインターネットなどの電気通信回線を介した他のネットワーク装置等の外部の装置と制御部15との通信を制御する。
 記憶部14は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部14には、パケット検索装置10を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが予め記憶され、あるいは処理の都度一時的に記憶される。なお、記憶部14は、通信制御部13を介して制御部15と通信する構成でもよい。
 制御部15は、CPU(Central Processing Unit)やNP(Network Processor)やFPGA(Field Programmable Gate Array)等を用いて実現され、メモリに記憶された処理プログラムを実行する。これにより、制御部15は、二分木作成部15a、展開部15bおよびハッシュテーブル作成部15cとして機能する。
 なお、これらの機能部は、それぞれ、あるいは一部が異なるハードウェアに実装されてもよい。また、制御部15は、その他の機能部を備えてもよい。例えば、他のネットワーク装置等から受信したパケットのうち、後述するパケット検索処理で作成された二分木とハッシュテーブルとで表されるルールチェインに合致するパケットを検索する検索部を備えてもよい。
 二分木作成部15aは、所定の枝分かれを有する二分木を作成する。ここで、図5は、二分木作成部15aの処理を説明するための図である。図5に示すように、二分木作成部15aは、各ノードを上から0、1、A(ANY値=0または1)として二分木を作成し、その順に従って上からルールを並べる。ここで、図5に破線楕円で囲んで示す、末端までノードがない空白部分は、Aが省略されているものとする。
 図4の説明に戻る。展開部15bは、作成された二分木のハッシュテーブル化する対象部分にANY値が含まれる場合に、該ANY値を0と1との枝分かれに展開する。具体的には、展開部15bは、二分木の各枝をたどって表されるルールチェインのうち、ハッシュテーブル化する対象部分のANY値を含むルールを、0と1とで表される複数の実ルールに展開する。なお、ハッシュテーブル化する対象部分は、例えば、図5に示した破線枠A2、A3のように、各ルールの開始ビット位置と終了ビット位置とが一致する部分である。
 ハッシュテーブル作成部15cは、二分木における対象部分について、ハッシュ値を用いたテーブルを作成する。具体的には、ハッシュテーブル作成部15cは、展開された枝分かれを含めて、各枝を末端のノードである葉までの経路で表される実ルールに対応するハッシュ値を用いて、対象部分をハッシュテーブル化する。
 ここで、図6~図8は、ハッシュテーブル作成部15cの処理を説明するための図である。ハッシュテーブル作成部15cは、例えば、図6に示すように、各実ルールに対応するハッシュ値をインデックス値として、ルール登録領域に記憶させる。図6には、ハッシュ関数H(x)は、恒等関数である(H(x)=x)場合が例示されているが、これに限定されない。
 また、図6には、ANY値を含む4ビットのルール「1A0A」が、ANY値のビット長倍の実ルールすなわち4つの実ルール「1000」「1001」「1100」「1101」に展開される場合が例示されている。例えば、検索対象データ「1001」は、ルール「1A0A」→ルール「1001」のルールチェインの2つのルールにヒットする。この場合には、ルール登録領域では、ANY値を含むルールについて、ANY値のビット長倍のメモリが消費されることになる。
 そこで、図7に示すように、ハッシュテーブル作成部15cは、実ルール自体をチェイニングするのでなく、ハッシュ値に対応付けられた実ルールへのポインタをチェイニングしたテーブルを作成してもよい。つまり、実ルール自体をチェイニングするのではなく、実ルールへのポインタをチェイニングすることで、ルール登録領域でのメモリ消費の増加を抑制することができる。
 図7に示す例では、ルール「1A0A」に、これの実ルールに対応するハッシュ値8、9、12、13の4つのポインタが対応付けられる。なお、図7に示すように、ルール「1001」等のANY値を含まないルールには、ハッシュ値9等の1つのポインタが対応づけられる。このようにポインタを用いることにより、ANY値を含むルールを多数の実ルールに展開することによる、ルール登録領域でのメモリ消費の増加を抑制することができる。
 ただし、この場合にも、各実ルールに対応するポインタの登録領域が増大することになる。例えば、64ビットマシンの場合には、IPアドレスがANY値である場合等、32ビットのANY値のルールについては、8バイト×232≒34Gバイトのメモリが消費されることになる。
 そこで、図8に示すように、ハッシュテーブル作成部15cは、ハッシュ値に対応付けられた実ルールへのポインタのうち、複数のハッシュ値で共有されるポインタを含むテーブルを作成するようにしてもよい。つまり、ハッシュテーブル作成部15cは、ANY値を含むルールへのポインタ自身を共有する。
 図8には、ルール「1A0A」に対応づけて、実ルールのハッシュ値9、13のポインタを含む共用ポインタB1が例示されている。このような共用ポインタは、ルールチェインの最後尾の場合、すなわちポインタのNext pointerが「NULL」に設定される場合に用いることができる。図8に示す例では、上記のルール「1A0A」がルールチェインの最後尾の場合であってNext pointerが「NULL」に設定された共用ポインタB1が、ルール「1A0A」に対応付けて記憶部14に記憶される。
 一方、ルールチェインの場合、例えば、ルール「1A0A」→ルール「AA00」の場合には、ルール「1A0A」のNext pointerはルール「AA00」を示し、ルール「AA00」のNext pointerが「NULL」に設定される。この場合には、ルール「1A0A」の実ルールのハッシュ値8、12のポインタを含む共用ポインタB2は、上記の共用ポインタB1とは別に、ルールの登録領域にルール「1A0A」と対応付けて記憶される必要がある。
 また、共用ポインタB2は、後続するルール「AA00」のポインタとしても共用できる。すなわち、共用ポインタB3は、ハッシュ値8、12を含むポインタB2とハッシュ値0、4のポインタとを含む。そして、このNext pointerが「NULL」に設定された共用ポインタB3が、ルール「AA00」に対応付けて記憶部14に記憶される。このように、ルールチェインの場合には、連続するルール間でポインタを共用することが可能となる。このため、ハッシュテーブル作成部15cは、ハッシュ値に対応付けられた実ルールへのポインタをチェイニングするルールチェインの組合せを、複数のハッシュ値で共有するテーブルを作成するようにしてもよい。
 また、展開部15bは、二分木のANY値が連続する数が少ない部分から順に対象部分として展開するようにしてもよい。例えば、図5に示した二分木において、各葉への経路でA(ANY値)の連続する数がNの場合に、それぞれのAを0と1との2つの枝に展開すると、各経路に対応する実ルールの数が(2-1)だけ増加する。そこで、展開部15bは、展開したことにより増加したポインタの数が予めシステム管理者により設定された上限値を超えない範囲で展開する。また、ハッシュテーブル作成部15cは、予めシステム管理者により設定された所定の閾値(例えば5)以下の範囲で、連続するANY値を展開したハッシュテーブル化の対象部分とするようにしてもよい。これにより、実ルールの増加数を抑え、メモリ消費量を抑えることが可能となる。
 例えば、図5の領域A2において、破線楕円内で省略されているAを含め、各経路で連続するAの数は5以下であって、全てのAを展開してもルールの増加数は62と小さいため、ANY値を展開したハッシュテーブル化の対象部分とされる。これに対し、図5の領域A3の前では、Aの連続する数が6であり、例えば、所定の閾値が5の場合には、ルール増加数が多くなるため、ANY値を展開したハッシュテーブル化の対象から外される。
[パケット検索処理]
 次に、図9を参照して、本実施形態に係るパケット検索装置10によるパケット検索処理について説明する。図9は、パケット検索処理手順を示すフローチャートである。図9のフローチャートは、例えば、ユーザが開始を指示する操作入力を行ったタイミングで開始される。
 まず、二分木作成部15aが、所定の枝分かれを有するパケット検索のルールの二分木を作成する(ステップS1)。
 次に、展開部15bが、作成されたルールの二分木のハッシュテーブル化する対象部分にANY値が含まれる場合に、このANY値を0と1との枝分かれに展開する(ステップS2)。ここで、展開部15bは、二分木のANY値が連続する数が所定の閾値以下の部分をハッシュテーブル化の対象部分としてもよい。
 次に、ハッシュテーブル作成部15cが、展開された枝を各葉までたどった経路で表される実ルールに対応するハッシュ値を用いたハッシュテーブルを作成する(ステップS3)。
 ここで、ハッシュテーブル作成部15cは、ハッシュ値に代えて、ハッシュ値のメモリ上の位置を示すポインタを、展開前のハッシュテーブル化する対象部分の葉までの経路で表されるANY値を含むルールに対応付けて記憶部14に記憶させてもよい。
 また、ハッシュテーブル作成部15cは、ハッシュ値に代えて、1つのANY値から展開された複数のハッシュ値のメモリ上の位置を示す1つの共用ポインタを、展開前のハッシュテーブル化する対象部分の葉までの経路で表されるANY値を含むルールに対応付けて記憶部14に記憶させてもよい。これにより、一連のパケット検索処理が終了する。
 以上、説明したように、本実施形態のパケット検索装置10において、二分木作成部15aが、所定の枝分かれを有する二分木を作成する。また、展開部15bが、作成された二分木のハッシュテーブル化する対象部分にANY値が含まれる場合に、該ANY値を0と1との枝分かれに展開する。また、ハッシュテーブル作成部15cが、二分木における対象部分について、ハッシュ値を用いたテーブルを作成する。
 これにより、パケット検索装置10は、二分木のハッシュテーブル化する対象部分にANY値が含まれていても、二分木における対象部分について、実ルールのハッシュ値を用いてハッシュテーブル化できる。このように、パケット検索装置10によれば、ハッシュ法の適用範囲を広くできるので、パケット検索にハッシュ法を適用することが容易に可能となる。
 また、ハッシュテーブル作成部15cは、ハッシュ値に対応付けられたポインタをチェイニングしたテーブルを作成する。これにより、メモリ消費を抑制することが可能となる。
 また、ハッシュテーブル作成部15cは、ハッシュ値に対応付けられたポインタのうち、複数のハッシュ値で共有されるポインタを含むテーブルを作成する。これにより、さらにメモリ消費を抑制することが可能となる。
 また、展開部15bは、二分木のANY値が連続する数が少ない部分から順に対象部分として展開する。これにより、ANY値を展開したルールの増加によるメモリ消費を抑制することが可能となる。
[プログラム]
 上記実施形態に係るパケット検索装置10が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。一実施形態として、パケット検索装置10は、パッケージソフトウェアやオンラインソフトウェアとして上記のパケット検索処理を実行するパケット検索プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記のパケット検索プログラムを情報処理装置に実行させることにより、情報処理装置をパケット検索装置10として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)などの移動体通信端末、さらには、PDA(Personal Digital Assistant)などのスレート端末などがその範疇に含まれる。また、パケット検索装置10の機能を、クラウドサーバに実装してもよい。
 図10は、パケット検索プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
 メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1061が接続される。
 ここで、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各情報は、例えばハードディスクドライブ1031やメモリ1010に記憶される。
 また、パケット検索プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明したパケット検索装置10が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
 また、パケット検索プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
 なお、パケット検索プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、パケット検索プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LANやWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
 以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
 10 パケット検索装置
 13 通信制御部
 14 記憶部
 15 制御部
 15a 二分木作成部
 15b 展開部
 15c ハッシュテーブル作成部

Claims (8)

  1.  所定の枝分かれを有する二分木を作成する二分木作成部と、
     作成された前記二分木のハッシュテーブル化する対象部分にANY値が含まれる場合に、該ANY値を0と1との枝分かれに展開する展開部と、
     前記二分木における前記対象部分について、ハッシュ値を用いたテーブルを作成するハッシュテーブル作成部と、
     を有することを特徴とするパケット検索装置。
  2.  前記ハッシュテーブル作成部は、実ルール自体をチェイニングするのでなく、前記ハッシュ値に対応付けられた実ルールへのポインタをチェイニングしたテーブルを作成することを特徴とする請求項1に記載のパケット検索装置。
  3.  前記ハッシュテーブル作成部は、前記ハッシュ値に対応付けられた実ルールへのポインタのうち、複数のハッシュ値で共有されるポインタを含むテーブルを作成することを特徴とする請求項1に記載のパケット検索装置。
  4.  前記ハッシュテーブル作成部は、前記ハッシュ値に対応付けられた実ルールへのポインタをチェイニングするルールチェインの組合せを、複数のハッシュ値で共有するテーブルを作成することを特徴とする請求項1に記載のパケット検索装置。
  5.  前記展開部は、前記二分木のANY値が連続する数が少ない部分から順に前記対象部分として展開することを特徴とする請求項1に記載のパケット検索装置。
  6.  前記展開部は、展開したことにより増加したポインタの数が予め設定された上限値を超えない範囲で、前記二分木のANY値が連続する数が少ない部分から順に前記対象部分として展開することを特徴とする請求項5に記載のパケット検索装置。
  7.  パケット検索装置で実行されるパケット検索方法であって、
     所定の枝分かれを有する二分木を作成する二分木作成工程と、
     作成された前記二分木のハッシュテーブル化する対象部分にANY値が含まれる場合に、該ANY値を0と1との枝分かれに展開する展開工程と、
     前記二分木における前記対象部分について、ハッシュ値を用いたテーブルを作成するハッシュテーブル作成工程と、
     を含んだことを特徴とするパケット検索方法。
  8.  所定の枝分かれを有する二分木を作成する二分木作成ステップと、
     作成された前記二分木のハッシュテーブル化する対象部分にANY値が含まれる場合に、該ANY値を0と1との枝分かれに展開する展開ステップと、
     前記二分木における前記対象部分について、ハッシュ値を用いたテーブルを作成するハッシュテーブル作成ステップと、
     をコンピュータに実行させるためのパケット検索プログラム。
PCT/JP2019/030979 2019-08-06 2019-08-06 パケット検索装置、パケット検索方法およびパケット検索プログラム WO2021024392A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/030979 WO2021024392A1 (ja) 2019-08-06 2019-08-06 パケット検索装置、パケット検索方法およびパケット検索プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/030979 WO2021024392A1 (ja) 2019-08-06 2019-08-06 パケット検索装置、パケット検索方法およびパケット検索プログラム

Publications (1)

Publication Number Publication Date
WO2021024392A1 true WO2021024392A1 (ja) 2021-02-11

Family

ID=74502872

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/030979 WO2021024392A1 (ja) 2019-08-06 2019-08-06 パケット検索装置、パケット検索方法およびパケット検索プログラム

Country Status (1)

Country Link
WO (1) WO2021024392A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6018524A (en) * 1997-09-09 2000-01-25 Washington University Scalable high speed IP routing lookups
US6212184B1 (en) * 1998-07-15 2001-04-03 Washington University Fast scaleable methods and devices for layer four switching
US6389419B1 (en) * 1999-10-06 2002-05-14 Cisco Technology, Inc. Storing and retrieving connection information using bidirectional hashing of connection identifiers
US20180145911A1 (en) * 2015-06-30 2018-05-24 New H3C Technologies Co., Ltd. Ip routing search

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6018524A (en) * 1997-09-09 2000-01-25 Washington University Scalable high speed IP routing lookups
US6212184B1 (en) * 1998-07-15 2001-04-03 Washington University Fast scaleable methods and devices for layer four switching
US6389419B1 (en) * 1999-10-06 2002-05-14 Cisco Technology, Inc. Storing and retrieving connection information using bidirectional hashing of connection identifiers
US20180145911A1 (en) * 2015-06-30 2018-05-24 New H3C Technologies Co., Ltd. Ip routing search

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Detailed explanation of interior of hardware processing router", TECHNOLOGY TO SUPPORT PACKET FORWARDING, 20 November 2012 (2012-11-20), Retrieved from the Internet <URL:https://www.nic.ad.jp/ja/materials/iw/2012/proceedings/dl/dl-uchiya.pdf> [retrieved on 20190902] *

Similar Documents

Publication Publication Date Title
US20150242429A1 (en) Data matching based on hash table representations of hash tables
JP2018517206A (ja) アプリケーションページクイックアクセス
US9983827B1 (en) Key-based memory deduplication protection
US11003579B2 (en) Method, device and computer program product for managing distributed system
US11533337B2 (en) MULP: a multi-layer approach to ACL pruning
US20170142186A1 (en) Method, apparatus, and electronic device for downloading files
CN111338640B (zh) 一种可动态调整的非对称指令重链接方法和装置
CN110659165A (zh) 一种多节点服务器自动化测试方法和装置
WO2024021493A1 (zh) 数据包解封装卸载方法、装置、电子设备及存储介质
CN114866229A (zh) 一种基于Kubernetes的数据加解密方法和装置
US20220036206A1 (en) Containerized distributed rules engine
WO2021024392A1 (ja) パケット検索装置、パケット検索方法およびパケット検索プログラム
WO2021166087A1 (ja) パケット検索装置、パケット検索方法およびパケット検索プログラム
US20160314155A1 (en) Data integration pipeline
US20120158635A1 (en) Storage efficient programmable state machine
US8645404B2 (en) Memory pattern searching via displaced-read memory addressing
WO2020022374A1 (ja) パケット検索装置、パケット検索方法、及びパケット検索プログラム
CN113726660B (zh) 一种基于完美哈希算法的路由查找器和方法
WO2019160164A1 (ja) 検索装置、検索方法及び検索プログラム
US11275507B2 (en) Method, electronic device, and computer storage medium for information processing
US20180270114A1 (en) Multi Platform Static Semantic Consistency Checking of Network Configurations
US11354291B2 (en) Search device, search method, and search program
WO2020153154A1 (ja) 検索装置、および、ハッシュテーブルの作成方法
JP2016218847A (ja) 逐次クラスタリング装置、方法、及びプログラム
WO2024176415A1 (ja) 探索装置、探索方法及び探索プログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19940943

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19940943

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP