KR100364433B1 - IP address look-up method using a bit-vector table - Google Patents

IP address look-up method using a bit-vector table Download PDF

Info

Publication number
KR100364433B1
KR100364433B1 KR1020000022792A KR20000022792A KR100364433B1 KR 100364433 B1 KR100364433 B1 KR 100364433B1 KR 1020000022792 A KR1020000022792 A KR 1020000022792A KR 20000022792 A KR20000022792 A KR 20000022792A KR 100364433 B1 KR100364433 B1 KR 100364433B1
Authority
KR
South Korea
Prior art keywords
bit
prefix
bits
address
vector table
Prior art date
Application number
KR1020000022792A
Other languages
Korean (ko)
Other versions
KR20010098110A (en
Inventor
안종석
나승구
오승현
Original Assignee
학교법인 동국학원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 학교법인 동국학원 filed Critical 학교법인 동국학원
Priority to KR1020000022792A priority Critical patent/KR100364433B1/en
Publication of KR20010098110A publication Critical patent/KR20010098110A/en
Application granted granted Critical
Publication of KR100364433B1 publication Critical patent/KR100364433B1/en

Links

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses

Abstract

본 발명은 라우터의 IP 주소검색을 위해 사용되는 포워딩(forwarding) 테이블을 Gbps(Giga bit per second)급 초고속 라우터에서 적용할 수 있도록 고속으로 검색할 수 있도록 트라이(trie) 구조를 변경하여 트라이의 단계를 압축하고, 압축된 정보는 별도의 필드 값으로 표현하여 트라이 검색경로를 짧게 하는 IP 주소검색방법에 관한 것이다.The present invention changes the trie structure so that the forwarding table used for IP address retrieval of the router can be searched at high speed so that it can be applied to a Gbps (Giga bit per second) high speed router. Is compressed, and the compressed information is expressed as a separate field value, and the IP address retrieval method shortens the tri search path.

본 발명에 의한 비트-벡터 테이블을 이용한 IP주소검색방법은 (a)IP 주소 검색시 사용되는 라우팅 테이블을 프리픽스 트라이로 표현되는 비트-벡터 테이블로 구성하는 단계; (b)상기 비트-벡터 테이블에서 검색할 IP주소를 m비트 단위로 나누는 단계; (c)상기 m비트로 나누어진 값을 인덱스로 비트-벡터 테이블에서 자식노드의 개수와 프리픽스 비트의 개수를 구하는 단계; 및 (d)상기 프리픽스 비트 개수를 누적한 누적치를 라우팅 인덱스로 사용하여 IP주소를 검색하는 단계를 포함함을 특징으로 한다.An IP address retrieval method using a bit-vector table according to the present invention comprises the steps of: (a) constructing a routing table used for retrieving an IP address into a bit-vector table represented by a prefix tree; (b) dividing the IP address to be searched in the bit-vector table by m bits; obtaining the number of child nodes and the number of prefix bits in a bit-vector table by indexing the value divided by the m bits; And (d) searching for an IP address using a cumulative value of accumulating the number of prefix bits as a routing index.

Description

비트-벡터 테이블을 이용한 IP 주소 검색방법{IP address look-up method using a bit-vector table}IP address look-up method using a bit-vector table}

본 발명은 인터넷 라우터의 주소검색(IP Address Lookup) 방법에 대한 것으로, 보다 더 구체적으로는 라우터의 주소검색을 위해 사용되는 포워딩(forwarding) 테이블을 Gbps(Giga bit per second)급 초고속 라우터에서도 적용할 수 있도록 고속으로 검색할 수 있는 방법에 대한 것이다.The present invention relates to an IP address lookup method of an internet router, and more particularly, a forwarding table used for address lookup of a router may be applied to a gigabit per second (Gbps) -class high speed router. It's about how you can search at high speed.

즉, 일반적으로 DRAM 메모리에 저장되는 포워딩 테이블을 캐쉬 메모리에 저장할 수 있을 만큼 작은 크기로 구성하여 빠르게 검색할 수 있는 포워딩 테이블의 자료구조와 검색 알고리즘에 대한 것이다.That is, the data structure and search algorithm of the forwarding table that can be quickly searched by configuring the forwarding table stored in the DRAM memory small enough to be stored in the cache memory.

도 1은 일반적인 라우터의 개념적 설계의 실시 예를 도시한 것이다.1 illustrates an embodiment of a conceptual design of a general router.

도 1에서 라우터는 네트워크 인터페이스, 포워딩 엔진과 네트워크 프로세서가 스위칭 조직(fabric)을 경유해서 서로 연결된다. 네트워크 인터페이스로 들어온 패킷의 헤더만이 포워딩 엔진으로 전달되어, IP 주소검색 과정을 거치고 포워딩에 사용될 네트워크 인터페이스가 결정된다. 네트워크 인터페이스는 라우팅 프로토콜을 수행하고, 패킷 헤더의 다른 부분을 다루는 등의 기능을 수행한다. 도 1의 설계를 채용한 대표적인 예는 BBN Multigigabit 라우터이다.In FIG. 1, routers are connected to each other via a network, a forwarding engine and a network processor via a switching fabric. Only the headers of packets entering the network interface are forwarded to the forwarding engine to determine the network interface to be used for forwarding. The network interface performs the routing protocol, handles other parts of the packet header, and so on. A representative example employing the design of FIG. 1 is a BBN Multigigabit router.

도 2는 라우터의 개념적 설계의 다른 일실시 예를 도시한 것이다.2 illustrates another embodiment of a conceptual design of a router.

도 2의 설계에서는 네트워크 인터페이스에 포함된 프로세싱 요소가 IP 주소검색을 개별적으로 수행하는데, 대표적인 예는 Ascend Communications의 라우터이다. 도 1의 포워딩 엔진과 도 2의 인터페이스의 프로세싱 요소는 모두 지역적인 라우팅 테이블 즉, 포워딩 테이블을 갖는다. 라우팅 프로토콜에 의해 계속적으로 변경되는 라우팅 테이블은 네트워크 프로세서에 의해 동적으로 관리되는데, 포워딩 테이블 또한 네트워크 프로세서가 라우팅 테이블을 기반으로 만들어 포워딩 엔진에서 다운로드할 수 있도록 한다. 라우팅 테이블과 포워딩 테이블을 별도로 사용하는 이유는 라우팅 테이블은 동적으로 변경, 관리하기 쉬운 성질을 가져야하고, 포워딩 테이블은 동적인 구조 대신 빠른 검색을 지원할 수 있어야 하기 때문이다. 이상과 같은 라우터의 구조와 기능 중에서 포워딩 엔진에 의해 처리되는 IP 주소검색 기능이 라우터의 성능을 결정하는 가장 중요한 요소로 평가되며, 다른 기능은 비교적 작은 부담으로 처리될 수 있음이 알려져있다.In the design of Figure 2, the processing elements included in the network interface perform IP address lookups individually, a representative example being a router from Ascend Communications. Both the forwarding engine of FIG. 1 and the processing elements of the interface of FIG. 2 have a local routing table, that is, a forwarding table. The routing table, which is constantly changed by the routing protocol, is dynamically managed by the network processor. The forwarding table also allows the network processor to build on the routing table and download it from the forwarding engine. The reason why the routing table and the forwarding table are used separately is that the routing table should be easy to change and manage dynamically, and the forwarding table should be able to support fast search instead of the dynamic structure. Among the structures and functions of the routers described above, the IP address lookup function processed by the forwarding engine is evaluated as the most important factor determining the performance of the router, and other functions are known to be handled with a relatively small burden.

라우터는 IP 데이터그램을 포워딩할 출력 링크를 결정하기 위해서 라우팅 테이블을 검색하는 라우팅 검색(routing lookup)을 실시한다.The router performs a routing lookup that searches the routing table to determine the output link to forward the IP datagram.

도 3은 라우팅 테이블의 엔트리를 도시한 것으로, IP 주소와 다음 홉의 조합으로 구성됨을 나타낸다.Figure 3 shows an entry in the routing table, which shows a combination of an IP address and a next hop.

IP 주소는 불특정한 길이의 프리픽스(prefix: 인터넷에서 네트워크 주소를 의미하며, 최대 32 비트의 길이를 갖는다.)로 표현되며, 라우팅 검색의 결과는 IP 데이터그램의 최종 목적지를 향하는 출력링크 즉, 다음 홉(next-hop)값이 된다. 라우팅 검색은 가장 긴 길이의 프리픽스가 일치하는 엔트리를 선택하는 최장 프리픽스 일치(LPM:Logest Prefix Match)기법을 기준으로 실시된다. 예를 들어 도 3과 같은 라우팅 테이블이 있을 때 각 엔트리의 프리픽스 길이는 일정하지 않은 상태로 구성된다. 이때 검색할 주소로 10000111이 주어진다면, 정확하게 일치하는 엔트리는 검색되지 않는다. 그러나 일부분이라도 일치하는 엔트리는 100*과 1000*가 있고, 두 개의 프리픽스 중에서 더 긴 엔트리값 즉, 1000*가 선택되어 다음 홉으로 L6이 선택된다.An IP address is represented by a prefix of unspecified length (a network address on the Internet, up to 32 bits long), and the result of a routing search is an output link to the final destination of the IP datagram, that is, This is the next hop value. Routing lookup is performed based on the Longest Prefix Match (LPM) technique, which selects entries whose longest prefix matches. For example, when there is a routing table as shown in FIG. 3, the prefix length of each entry is configured to be in an inconsistent state. If 10000111 is given as the address to be searched, an exact match is not searched. However, there are 100 * and 1000 * entries that match at least partly, and the longer entry value, 1000 *, is selected from the two prefixes and L6 is selected as the next hop.

전통적인 라우팅 테이블 구현은 수십년전에 고안되고, LPM을 고려하여 수정된 패트리샤 트리(Patricia tree)를 이용하는 것으로, 대표적인 구현 예는 NetBSD 1.2 이다. NetBSD의 구현에서 트리의 내부 및 단말 노드는 각각 24 바이트 크기이며, 약 40,000개의 엔트리를 갖는 라우팅 테이블이 2MB 크기로 구현된다. 이러한 크기의 라우팅 테이블은 단일-칩(One-chip:L1) 또는 L2 캐쉬(SRAM: 10~20 nsec)에 담을 수 없을 정도로 크므로, 메모리(DRAM: 60~100 nsec)를 이용하게 되는데, 메모리의 접근 속도가 매우 느리기 때문에 IP 주소검색에서 필요한 수회의 메모리 읽기는 치명적인 속도 저하를 일으킨다. 결과적으로 고속 라우터를 구현하기 위해서는기존의 단점을 보완하여 빠른 검색을 가능하게 하는 새로운 검색방법이 필요하게 되었다.The traditional routing table implementation uses the Patricia tree, which was invented decades ago and modified for LPM. A typical implementation is NetBSD 1.2. In the NetBSD implementation, the inner and terminal nodes of the tree are each 24 bytes in size, and a routing table with about 40,000 entries is implemented in 2MB. This size routing table is so large that it cannot fit in a single-chip (L1) or L2 cache (SRAM: 10-20 nsec), so it uses memory (DRAM: 60-100 nsec). Because of its very slow access speed, several memory reads required for IP address lookups can be fatal. As a result, in order to implement a high-speed router, a new search method is required to compensate for the existing shortcomings and enable fast search.

빠른 IP 주소검색이 가능한 고속 라우터를 구현하기 위한 최근의 방법은 크게 세 가지로 구분할 수 있다.There are three main methods for implementing a high-speed router capable of fast IP address lookup.

첫째, 하드웨어를 사용하는 기법은 ①CAM (Content-Addressable Memory)을 사용하는 방법과 ②병렬처리 및 캐쉬를 적용하는 방법이다.First, the technique using hardware is using ①CAM (Content-Addressable Memory) and ② applying parallelism and cache.

둘째, 패킷 헤더에 라벨이나 추가적인 정보를 기록하는 등의 ③통신 프로토콜을 변경하여 빠른 포워딩을 구현하는 방법이다.Second, fast forwarding is implemented by changing the communication protocol such as recording a label or additional information in the packet header.

셋째, 소프트웨어를 기반으로 하는 방법은 더 효율적인 데이터 구조와 검색 기법을 적용하는 방법으로, ④정확한 일치 기법(Exact matching scheme)을 적용하기 위한 연구와 ⑤트라이(trie) 구조를 변경하는 연구의 두 가지로 분류할 수 있다.Third, the software-based method is to apply a more efficient data structure and retrieval method, ④ a study to apply an exact matching scheme, and ⑤ a study to change the trie structure. Can be classified as

하드웨어를 이용하는 첫 번째 방법은 좋은 성능을 발휘할 수 있는 반면에 비용이 높아지는 단점이 있다.The first way of using hardware is to have good performance, but at the cost of high cost.

통신 프로토콜을 변경하는 두 번째 방법은 기존의 인터넷 프로토콜을 변경하기가 거의 불가능하다는 어려움 때문에 현실적으로 사용하기 어렵다. 물론 기존 통신 프로토콜의 확장 개념으로 호환성을 제공하여 점진적으로 적용할 수 있지만 망(network) 단위의 대규모 적용이 아니면 실제 효과를 볼 수 없다는 단점이 있다.The second method of changing the communication protocol is difficult to use because of the difficulty of changing the existing Internet protocol. Of course, it can be applied gradually by providing compatibility as an extension concept of the existing communication protocol, but there is a disadvantage in that it cannot be realized unless it is a large-scale application of a network unit.

마지막 방법인 소프트웨어를 기반으로 하는 방법은 먼저 ④와 같이 다양한 길이의 프리픽스를 같은 길이로 확장하여 이진검색 기법을 적용하는 방법과, 프리픽스 확장을 기반으로 이진검색을 다중검색으로 확장하는 방법이 있다. 이러한 방법은 이진검색에서 발생하는 백트래킹(back-tracking)을 방지하는 다양한 필드를 가져야 하므로 자료구조가 복잡하여 구현하고 사용하기 어렵다는 단점이 있다. ⑤와 같이 트라이를 이용하는 방법은 다시 트라이의 단계를 압축하고, 압축된 정보는 별도의 필드 값으로 표현하여 트라이 검색경로를 짧게 하는 방법과 트라이를 표현하는 다양한 자료구조를 고안하여 빠른 검색을 가능하게 하는 방법으로 구분할 수 있다.The last method, based on software, is to apply binary search technique by extending various length prefixes to the same length as in ④, and extend binary search to multiple searches based on prefix extension. This method has a disadvantage that it is difficult to implement and use because the data structure is complex because it must have various fields that prevent back-tracking from binary search. The method of using tri as in ⑤ compresses the steps of the tri again, expresses the compressed information as a separate field value, shortens the tri search path, and devises various data structures representing the tri to enable quick retrieval. Can be divided into

본 발명이 이루고자하는 기술적 과제는 라우터의 주소검색을 위해 사용되는 포워딩(forwarding) 테이블을 Gbps(Giga bit per second)급 초고속 라우터에서도 적용할 수 있도록 고속으로 검색할 수 있도록 트라이(trie) 구조를 변경하여 트라이의 단계를 압축하고, 압축된 정보는 별도의 필드 값으로 표현하여 트라이 검색경로를 짧게 하는 IP 주소검색방법을 제공함에 있다.The technical problem to be achieved by the present invention is to change the trie structure so that the forwarding table used for the address search of the router can be applied at high speed to be applied to a Gbps (Giga bit per second) -class high-speed router By compressing the tri step, and expressing the compressed information as a separate field value to provide an IP address search method to shorten the tri search path.

도 1은 일반적인 라우터의 개념적 설계의 실시 예를 도시한 것이다.1 illustrates an embodiment of a conceptual design of a general router.

도 2는 라우터의 개념적 설계의 다른 일실시 예를 도시한 것이다.2 illustrates another embodiment of a conceptual design of a router.

도 3은 라우팅 테이블의 엔트리를 도시한 것으로, IP 주소와 다음 홉의 조합으로 구성됨을 나타낸다.Figure 3 shows an entry in the routing table, which shows a combination of an IP address and a next hop.

도 4는 본 발명에 의한 비트-벡터 테이블을 이용한 IP주소검색방법에 대한 순서도를 도시한 것이다.4 is a flowchart illustrating an IP address searching method using a bit-vector table according to the present invention.

도 5는 IP 주소 검색시 사용되는 라우팅 테이블의 모든 프리픽스 엔트리를 깊이(Depth) 32의 이진 트리로 표현한 실시예를 도시한 것이다.FIG. 5 illustrates an embodiment in which all prefix entries of a routing table used when searching an IP address are represented by a binary tree of depth 32. Referring to FIG.

도 6은 프리픽스 트라이의 검색 깊이를 단축하기 위해서 프리픽스 트라이를 8 비트 깊이의 4 계층으로 분할하여 구성된 포워딩 테이블을 도시한 것이다.FIG. 6 illustrates a forwarding table configured by dividing a prefix tri into four layers of 8 bit depth in order to shorten a search depth of the prefix tri.

도 7은 IP 프리픽스를 트리로 표현하기 위해서 트리를 확장한 실시예를 도시한 것이다.FIG. 7 illustrates an embodiment in which a tree is extended to represent an IP prefix as a tree.

도 8은 8 비트 단위로 구성된 부트라이를 각 리프 노드 256 비트의 프리픽스 비트 정보와 자식 노드 정보를 두개의 비트로 표시하여 도시한 것이다.FIG. 8 shows a boot-ray configured in units of 8 bits by indicating prefix bit information and child node information of each leaf node 256 bits in two bits.

도 9는 전체 프리픽스 트라이를 깊이 8의 부트라이로 넓이 우선 탐색 순서로구성하고, 각각의 부트라이를 하나의 노드로 갖는 비트-벡터(Bit-vector)테이블로 구성하기 위한 비트-벡터 테이블의 자료구조를 도시한 것이다.9 shows the data of a bit-vector table for organizing the entire prefix tri into a wide-priority search order with a bootray of depth 8, and configuring a bit-vector table having each boot-lay as one node. The structure is shown.

도 10은 도 8과 9를 적용하여 비트-벡터 테이블을 구성한 실시예를 도시한 것이다.FIG. 10 illustrates an embodiment in which a bit-vector table is configured by applying FIGS. 8 and 9.

도 11은 비트-벡터 테이블을 이용한 IP주소검색방법을 프로그램밍화한 것이다.11 is a program of an IP address searching method using a bit-vector table.

도 12는 비트-벡터 테이블을 이용한 포워딩 실험결과치를 표로 나나탠 것이다.12 shows a table of forwarding experiment results using a bit-vector table.

상기 기술적 과제를 해결하기 위한 본 발명에 의한 비트-벡터 테이블을 이용한 IP주소검색방법은 (a)IP 주소 검색시 사용되는 라우팅 테이블을 프리픽스 트라이로 표현되는 비트-벡터 테이블로 구성하는 단계; (b)상기 비트-벡터 테이블에서 검색할 IP주소를 m비트 단위로 나누는 단계; (c)상기 m비트로 나누어진 값을 인덱스로 비트-벡터 테이블에서 자식노드의 개수와 프리픽스 비트의 개수를 구하는 단계; 및 (d)상기 프리픽스 비트 개수를 누적한 누적치를 라우팅 인덱스로 사용하여IP주소를 검색하는 단계를 포함함을 특징으로 한다.An IP address retrieval method using a bit-vector table according to the present invention for solving the above technical problem comprises the steps of: (a) constructing a routing table used in retrieving an IP address as a bit-vector table represented by a prefix tri; (b) dividing the IP address to be searched in the bit-vector table by m bits; obtaining the number of child nodes and the number of prefix bits in a bit-vector table by indexing the value divided by the m bits; And (d) searching for an IP address using a cumulative value accumulating the number of prefix bits as a routing index.

또한, 상기 (a)단계는 (a1)IP 주소 검색시 사용되는 라우팅 테이블의 IP 프리픽스 엔트리를 확장하여 프리픽스의 길이 n을 깊이로 갖는 이진트리로 표현하는 단계; (a2)상기 이진트리의 IP 프리픽스를 트라이로 표현하기 위하여 모든 노드는 2개의 자식노드를 갖거나 자식노드가 없어야 하는 트라이로 변경하여 프리픽스 비트가 α개 증가하는 단계; (a3)상기 프리픽스 트라이를 깊이 m의 부트라이로 분할하여 깊이 m에 존재하는 프리픽스 비트가 전체 프리픽스 비트중에서 몇 번째 비트인지를 계산하는 단계; 및 (a4)상기 프리픽스 트라이에서 깊이 m의 부트라이를 넓이 우선 탐색순서로 비트-벡터 테이블의 순차적인 노드로 구성하여 최종 비트-벡터 테이블을 구성하는 단계를 포함함을 특징으로 한다.In addition, the step (a) may include (a1) expressing a binary tree having a length n of a depth by expanding an IP prefix entry of a routing table used when searching for an IP address; (a2) increasing the number of prefix bits by changing every node to a tri having no child node or having two child nodes in order to express the IP prefix of the binary tree as a tri; (a3) dividing the prefix tri into a booti of depth m to calculate how many bits of the prefix bits exist at the depth m; And (a4) configuring a final bit-vector table by configuring a booti of depth m in the prefix tri as a sequential node of a bit-vector table in a width-first search order.

또한, 상기 (a1)단계는 상기 라우팅 테이블을 이진 트리로 표시할 경우 라우팅 엔트리의 개수인 k개만큼 프리픽스 비트가 이진트리에 존재함을 특징한다.In addition, in the step (a1), when the routing table is represented as a binary tree, there are k prefix bits, which are the number of routing entries, in the binary tree.

또한, 상기 (a2)단계에서 상기 프리픽스 트라이의 깊이 m에서 IP 주소의 프리픽스 비트가 0에서 k+α개 사이에서 몇 번째 비트인지 나타내는 카운트 값임을 특징으로 한다.Further, in the step (a2), the prefix bit of the IP address at the depth m of the prefix tri is a count value indicating the number of bits between 0 and k + α bits.

또한, 상기 (b)단계에서 m비트값은 프리픽스 트라이의 깊이 m에서 m번째 노드를 포함하는 부트라이와 m번째 특정 리프 노드를 의미함을 특징으로 한다.Further, in step (b), the m-bit value means a boot ray and an m-th specific leaf node including the m-th node at the depth m of the prefix tri.

또한, 상기 특정 리프 노드는 비트-벡터 노드의 프리픽스 비트 필드와 자식 비트 필드의 위치를 나타냄을 특징으로 한다.In addition, the specific leaf node is characterized by indicating the position of the prefix bit field and the child bit field of the bit-vector node.

또한, 상기 (c)단계는 (c1)상기 m비트로 나누어진 값을 비트-벡터 테이블의인덱스로하여 m번째 비트 위치에서 자식노드가 있을 때, 현재위치까지 누적된 자식노드의 개수와 프리픽스 비트의 개수를 구하는 단계; 및 (c2)상기 m비트로 인덱스된 비트-벡터 테이블 노드에서 자식노드가 더 이상 없고, 프리픽스 비트가 있으면 다시 프리픽스 비트 개수를 계산하는 단계를 포함함을 특징으로 한다.In addition, in step (c), (c1) the value divided by the m bits is used as an index of the bit-vector table, and when there are child nodes at the m th bit position, the number of child nodes accumulated to the current position and the prefix bits Obtaining a number; And (c2) if there are no child nodes in the bit-vector table node indexed with the m bits, and if there are prefix bits, calculating the number of prefix bits again.

이하 도면을 참조하여 본 발명을 상세히 설명하기로 한다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

도 4는 본 발명에 의한 비트-벡터 테이블을 이용한 IP주소검색방법에 대한 순서도를 도시한 것이다.4 is a flowchart illustrating an IP address searching method using a bit-vector table according to the present invention.

첫째, IP 주소 검색시 사용되는 라우팅 테이블을 프리픽스 트라이로 표현되는 비트-벡터 테이블로 구성하는 단계이다(S410).First, in step S410, a routing table used in retrieving an IP address is configured as a bit-vector table represented by a prefix tri.

도 5는 IP 주소 검색시 사용되는 라우팅 테이블의 모든 프리픽스 엔트리를 깊이(Depth) 32의 이진 트리로 표현한 실시예를 도시한 것이다.FIG. 5 illustrates an embodiment in which all prefix entries of a routing table used when searching an IP address are represented by a binary tree of depth 32. Referring to FIG.

이때 깊이 32에서 트리의 넓이 즉, IP 주소의 가짓수는 최대 232개이다.At this time, the depth of the tree at 32 is the maximum number of 2 32 IP addresses.

즉, 32 비트 길이를 갖는 IP 주소는 0부터 232사이의 값을 가지며, 라우팅 테이블 엔트리도 0부터 232사이의 값으로 구성된다. 실제 라우팅 테이블 엔트리는 도 5에서 점으로 표시되는 프리픽스 비트와 같이 232개 보다 작은 개수로 구성되므로 라우팅 테이블을 이진 트리로 표시할 경우 깊이 32에서 라우팅 엔트리의 개수만큼 프리픽스 비트가 존재하게된다.That is, an IP address having a length of 32 bits has a value between 0 and 2 32 , and a routing table entry also has a value between 0 and 2 32 . Since the actual routing table entries are composed of less than 2 32 numbers, such as the prefix bits indicated by dots in FIG. 5, when the routing table is represented as a binary tree, there are prefix bits as many as the number of routing entries at depth 32.

따라서, 주어진 IP 주소의 라우팅 검색에서 찾아야할 라우팅 테이블 엔트리의 인덱스 값은 이진트리의 깊이 32에서 IP주소의 프리픽스 비트가 0부터 232사이에서 몇 번째 비트인지 나타내는 카운트 값과 같다. 즉, IP 검색을 라우팅 테이블의 프리픽스 값과 비교하는 대신 이진트리를 검색하여 깊이 32에서 도달한 프리픽스 비트가 몇 번째 값인지 계산하는 것으로 대치할 수 있다.Therefore, the index value of the routing table entry to be found in the routing search of the given IP address is equal to the count value indicating the number of bits between 0 and 2 32 of the prefix bit of the IP address at the depth 32 of the binary tree. In other words, instead of comparing the IP lookup with the prefix value in the routing table, it can be replaced by searching the binary tree to calculate the number of prefix bits reached at depth 32.

도 6은 프리픽스 트라이의 검색 깊이를 단축하기 위해서 프리픽스 트라이를 8 비트 깊이의 4 계층으로 분할하여 구성된 포워딩 테이블을 도시한 것이다.FIG. 6 illustrates a forwarding table configured by dividing a prefix tri into four layers of 8 bit depth in order to shorten a search depth of the prefix tri.

도 6에서 점으로 표현되는 비트들이 IP주소 프리픽스가 존재하는 곳이 된다. 프리픽스 점들은 루트노드로부터 비트 값(1 or 0)에 따라 확장된 결과이며, 점으로 표시되는 특정 프리픽스는 도 5의 범위 r 에 속하는 IP 주소에 대해 대표성 즉, LPM에 의해 다음 홉 엔트리로 선택된다. 또한 도 6에서 보는 바와 같이 특정 프리픽스의 범위에 포함되는 더 긴 길이의 프리픽스는 자신의 범위만큼 상위 프리픽스를 대체하게된다.Bits represented by dots in FIG. 6 become places where an IP address prefix exists. The prefix points are the result of extending from the root node according to the bit value (1 or 0), and the specific prefix represented by the point is chosen as the next hop entry by the representative, ie LPM, for the IP address in the range r of FIG. . Also, as shown in FIG. 6, a longer length prefix included in a range of a specific prefix replaces an upper prefix by its range.

도 7은 IP 프리픽스를 트리로 표현하기 위해서 트리를 확장한 실시예를 도시한 것이다.FIG. 7 illustrates an embodiment in which a tree is extended to represent an IP prefix as a tree.

즉, 모든 노드는 2개의 자식 노드를 갖거나 자식 노드가 없어야 하는 트라이가 되어야 한다. 이렇게 표현된 프리픽스 트라이는 결국 깊이 32의 리프(Leaves) 노드의 관점에서 보면 모든 표현 가능한 프리픽스 비트를 순서대로 배열한 것과 같으며, 프리픽스의 길이가 n일 때에는 r=2(32-n)의 범위를 갖는 것으로 볼 수 있다.That is, every node must be a trie that must have two child nodes or no child nodes. The prefix try expressed in this way is equivalent to arranging all representable prefix bits in order from the perspective of the Leafs node at depth 32, with r = 2 (32-n) when the length of the prefix is n It can be seen that having.

도 7에서 검게 표시된 노드는 프리픽스가 있는 노드이고, 흰 노드는 대응되는 프리픽스가 없는 노드, 사선 노드는 자식 노드 또는 하위 프리픽스가 있는 노드이다. 그러나 원래의 깊이 32의 트라이를 모두 순차적으로 검색하는 것은 많은 시간을 소모하므로 트라이의 깊이를 압축하여 검색시간을 단축할 필요가 있다. 이러한 개념을 적용하여 트라이를 3 계층(16 비트, 8 비트, 8 비트)으로 구성하고, 프리픽스 유무를 표현하는 비트-벡터(Bit-vector)를 사용하는 방법에 대한 방법이 발표된바 있으며, 이 방법에서는 비트-벡터를 이용하여 프리픽스 비트의 출현 순위를 표현하는 몇 개의 배열로 포워딩 테이블을 구성하였다.In FIG. 7, a node marked black is a node having a prefix, a white node is a node having no corresponding prefix, and an oblique node is a node having a child node or a lower prefix. However, sequential searching of all the original 32-tris consumes a lot of time, so it is necessary to reduce the searching time by compressing the depth of the tri. Applying this concept, a method of constructing a tri layer into three layers (16 bits, 8 bits, 8 bits) and using a bit-vector representing a presence or absence of a prefix has been published. In the method, the forwarding table is composed of several arrays representing the order of appearance of prefix bits using bit-vectors.

본 발명에서는 프리픽스 트라이의 검색 깊이를 단축하기 위해서 도 6과 같이 프리픽스 트라이를 8 비트 깊이의 4 계층으로 분할 구성하여 포워딩 테이블을 만들었으며, 4계층으로 구성된 트라이는 최대 4회의 비교 검색으로 원하는 프리픽스 비트를 찾을 수 있다. 전체 프리픽스 트라이를 8 비트 깊이의 부트라이로 분할하면 깊이 8에서 리프 노드의 개수는 최대 28이 되며, 하나의 포워딩 테이블 노드를 구성하게된다. 즉, 깊이 8의 모든 프리픽스 비트는 하나의 포워딩 테이블 노드가 되고, 깊이 16에서는 깊이 8의 비트들이 루트가 되는 깊이 8의 부트라이를 구성할 수 있으므로 최대 256개의 포워딩 테이블 노드가 만들어 질 수 있다.In the present invention, in order to shorten the search depth of the prefix tri, the prefix tri is divided into four layers of 8 bit depth as shown in FIG. 6 to create a forwarding table. Can be found. Dividing the entire prefix tri into an 8-bit-depth bootstrap results in a maximum of 2 8 leaf nodes at depth 8, which constitutes one forwarding table node. That is, since all prefix bits of depth 8 become one forwarding table node, and at depth 16, a maximum of 256 forwarding table nodes can be created because a depth of 8 bootray can be formed at which the bits of depth 8 are rooted.

도 8은 8 비트 단위로 구성된 부트라이를 각 리프 노드 256 비트의 프리픽스 비트 정보와 자식 노드 정보를 두개의 비트로 표시한 것이다.FIG. 8 shows a bootstrap configured in units of 8 bits, and prefix bit information and child node information of each leaf node 256 bits are represented by two bits.

하나의 포워딩 테이블 노드는 IP 주소 검색때 필요한 시프트(Shift) 연산의 회수를 줄이기 위해 모든 선행 노드의 프리픽스 비트(tp)와 자식 노드 비트(tc) 개수를 누적한 필드 값과 현재 노드의 8 바이트마다 비트 개수를 기록한 3개의필드(p1,p2,p3/prefix, c1,c2,c3/child)를 갖는다.One forwarding table node is a field value that accumulates the prefix bits (tp) and the number of child node bits (tc) of all preceding nodes to reduce the number of shift operations required for IP address lookups, and every 8 bytes of the current node. It has three fields (p1, p2, p3 / prefix, c1, c2, c3 / child) in which the number of bits is recorded.

도 9는 전체 프리픽스 트라이를 깊이 8의 부트라이로 넓이 우선 탐색 순서로 구성하고, 각각의 부트라이를 하나의 노드로 갖는 비트-벡터(Bit-vector)테이블로 구성하기 위한 비트-벡터 테이블의 자료구조를 도시한 것이다.FIG. 9 shows the data of a bit-vector table for organizing the entire prefix tri into a wide-priority search order with a bootray of depth 8, and configuring a bit-vector table having each boot-lay as one node. The structure is shown.

도 10은 도 8과 9를 적용하여 비트-벡터 테이블을 구성한 실시예를 도시한 것이다.FIG. 10 illustrates an embodiment in which a bit-vector table is configured by applying FIGS. 8 and 9.

도 10의 예제에서 사용된 라우팅 테이블은 6개의 엔트리로 구성되었고, 먼저 도6, 7에서 설명한 그래프로 표현된 다음 비트-벡터 테이블로 변경된다. 도 10의 예제는 쉬운 설명을 위해 단계의 깊이를 4비트로 변경하여 사용하였고, p1~p3 필드를 8비트를 담당하는 p1 필드만 사용하도록 변경하였다. 구성된 포워딩 테이블은 6개의 노드로 구성되었으며, 깊이가 4비트 단위이므로 하나의 노드는 총 16비트 즉, 16개의 프리픽스 값을 표현할 수 있다.The routing table used in the example of FIG. 10 is composed of six entries, and is first changed to a bit-vector table represented by a graph described in FIGS. 6 and 7. In the example of FIG. 10, the depth of the step is changed to 4 bits for easy explanation, and the p1 to p3 fields are changed to use only the p1 field that is responsible for 8 bits. The configured forwarding table is composed of 6 nodes, and since the depth is 4 bit units, one node can express a total of 16 bits, that is, 16 prefix values.

비트-벡터 테이블의 노드 개수는 약 54,000개의 실제 라우팅 테이블에 대해 약 3,700개가 되었으며 284Kbyte의 크기로 구성되었다. 이러한 크기는 펜티엄 Ⅱ 400MHz 프로세서의 L2 캐쉬에 저장되는 충분히 작은 크기이며, 라우팅 테이블의 크기에 따라 평균 320~530 nsec의 검색 속도를 기록하였다.The number of nodes in the bit-vector table is about 3,700 for about 54,000 real routing tables and consists of 284 Kbytes. This size is small enough to be stored in the L2 cache of the Pentium II 400MHz processor, and the average search speed is 320-530 nsec depending on the size of the routing table.

둘째, 상기 비트-벡터 테이블의 IP주소에서 프리픽스 트라이를 m비트 단위로 계층화하여 나누는 단계이다(S420).Second, in step S420, the prefix tri is layered and divided in units of m bits from the IP address of the bit-vector table.

IP 주소를 8 비트 단위로 나누어서 사용하는 것은 프리픽스 트라이를 8 비트 단위로 계층화했기 때문이다. 구해진 8 비트의 값은 부트라이에서 대응되는 리프노드를 뜻하며, 비트-벡터 노드의 prefixBit 필드와 childBit 필드의 위치를 의미한다.The use of an IP address divided by 8 bits is because the prefix tree is layered into 8 bits. The obtained 8-bit value refers to a leaf node corresponding to the BootRie, and means the positions of the prefixBit and childBit fields of the bit-vector node.

셋째, 상기 m비트로 계층화된 프리픽스 트라이에서 자식노드의 개수와 프리픽스 비트의 개수를 구하는 단계이다(S430).Third, in operation S430, the number of child nodes and the number of prefix bits are obtained from the prefix tri layered into m bits.

줄 3에서와 자식 노드가 있음을 알았을 때는 현재 위치까지의 자식 노드의 개수와 프리픽스 비트의 개수를 구하고, 줄 5와 같이 이것을 비트-벡터 테이블의 인덱스로 사용하여 다음 8 비트에 대한 검색 노드로 사용한다. 마지막으로 자식 노드가 더 이상 없고, 프리픽스 비트가 있으면 다시 프리픽스 비트의 개수를 계산한다.When you know that at line 3 and there are child nodes, find the number of child nodes and the prefix bits up to the current position, and use this as an index of the bit-vector table as the search node for the next 8 bits, as shown in line 5. do. Finally, if there are no more child nodes and there are prefix bits, the number of prefix bits is calculated again.

넷째, 상기 프리픽스 비트 개수를 누적한 누적치를 라우팅 인덱스로 사용하여 IP주소를 검색하는 단계이다(S440).Fourth, an IP address is searched using a cumulative value of accumulating the number of prefix bits as a routing index (S440).

검색의 결과로 구해진 프리픽스 비트의 개수는 포워딩 테이블 엔트리의 인덱스가 된다. 그러나 비트-벡터 테이블의 프리픽스 비트 개수는 포워딩 테이블의 엔트리 개수보다 많으므로 구해진 인덱스로 직접 포워딩 테이블을 접근할 수는 없다. 비트-벡터 테이블의 프리픽스 비트 개수가 많은 이유는 도 6에서와 같이 이진 트리(Binary tree)를 트라이로 확장했기 때문이다. 따라서 비트-벡터 테이블의 프리픽스 비트는 확장된 트라이의 인덱스이며 이진 트리의 인덱스와 트라이의 인덱스를 대응시키는 별도의 자료구조-pointer-를 사용하여야 한다. 필요한 자료구조의 개수는 확장된 트라이의 프리픽스 비트의 개수와 같으며 검색 완료후 1회의 메모리 읽기를 추가로 발생시킨다.The number of prefix bits obtained as a result of the search becomes the index of the forwarding table entry. However, since the number of prefix bits in the bit-vector table is larger than the number of entries in the forwarding table, the forwarding table cannot be directly accessed by the obtained index. The reason for the large number of prefix bits in the bit-vector table is that binary trees are extended to tri as shown in FIG. Therefore, the prefix bit of the bit-vector table is the index of the extended tri and must use a separate data structure (pointer) that maps the index of the binary tree to the index of the tri. The number of data structures required is equal to the number of prefix bits of the extended trie, and an additional memory read occurs after the search is completed.

도 10의 예제를 이용하여 주소 12.5(0000 1100 0000 0101)에 대한 검색을 실시하는 경우 다음과 같이 처리된다. 먼저 검색되는 노드의 순서는 노드 0 -> 노드 1 -> 노드 3 -> 노드 5의 순서로 검색된다. 노드 0, 1, 3에서 childBit가 set(1) 상태이므로 도 11의 줄3과 같이 해당 비트까지의 childBit의 set 비트 누적개수를 구해서 다음 노드의 인덱스로 사용하여 다음 노드로 이동한다. 노드 1과 5에서는 prefixBit 가 set(1) 상태이므로 도 11의 줄3,4와 같이 prefixBit의 set 비트 누적개수를 구하고, 노드 5에서는 더 이상 진행할 IP주소 프리픽스가 없으므로 계산된 프리픽스 누적치 5가 pointers의 인덱스로 사용된다. 그러나 도 10의 예제에서는 pointers의 값과 라우팅 테이블의 값이 동일하므로 프리픽스 누적치를 라우팅 인덱스로 사용하면 IP 주소 12.5를 검색 완료하게 된다.If the search for the address 12.5 (0000 1100 0000 0101) is performed using the example of FIG. 10, the process is as follows. The order of the first node to be searched is the order of node 0-> node 1-> node 3-> node 5. Since childBit is in the set (1) state at nodes 0, 1, and 3, as shown in line 3 of FIG. 11, the cumulative number of set bits of the childBit up to the corresponding bit is obtained and used as an index of the next node to move to the next node. Since the prefixBit is set (1) in nodes 1 and 5, the cumulative number of set bits of the prefixBit is obtained as shown in lines 3 and 4 of FIG. Used as an index. However, in the example of FIG. 10, since the value of pointers and the value of the routing table are the same, if the prefix accumulation value is used as the routing index, the IP address 12.5 is completed.

도 12는 비트-벡터 테이블을 이용한 포워딩 실험결과치를 표로 나타낸 것이다.12 is a table showing the results of the forwarding experiment using the bit-vector table.

비트-벡터 테이블을 이용한 포워딩 실험은 미국의 실제 라우팅 테이블을 이용하여 실시하였다. 도 12에서 보는 바와 같이 라우팅 테이블의 크기는 4만8천여개 이상의 백본급 라우터부터 수천 개의 엔트리를 가진 기업(Enterprise)급 라우터까지로 다양하게 구성되어 있다. 포워딩 테이블의 구성(Build) 소요시간은 메모리에 있는 프리픽스 트라이로부터 비트-벡터 테이블을 구성하는 시간으로 약 90 msec부터 280 ms가 소요되었다. 기존의 연구에 의하면 백본급 라우터의 포워딩 테이블이 초당 1회 정도의 수정 빈도임을 감안할 때 충분히 작은 시간이다.The forwarding experiment using the bit-vector table was performed using a real routing table in the United States. As shown in FIG. 12, the size of the routing table varies from more than 48,000 backbone routers to enterprise-class routers with thousands of entries. The build time of the forwarding table is about 90 msec to 280 ms, which is the time to construct the bit-vector table from the prefix try in memory. Previous studies have shown that the forwarding table of a backbone router is small enough to be modified once per second.

비트-벡터 포워딩 테이블을 이용한 검색 소요시간에 대한 측정은 리눅스 커널 2.2.12에서 펜티엄 Ⅱ 400MHz 프로세서(L1 cache 32Kbyte, L2 cache 512Kbyte)를 이용하였다. Paix 라우터의 경우 평균 검색 시간은 320 nsec를 기록하였고 가장 큰 Mae-East 라우터는 530 nsec를 기록하였다. 검색에 사용한 IP 주소 값은 랜덤(Random) 함수로 생성하였고, 백만 번의 검색을 반복하여 성능을 측정하였다. 현재의 일반적인 프로세서는 우리의 이해 범위 내에서는 특정 데이터 블록을 L2 캐쉬에 상주시킬 수 있는 특별한 방법이 없으므로, 본 발명의 성능 측정 결과는 포워딩 테이블이 L2 캐쉬와 메모리에 혼재하고 있는 상태의 결과치이다.We used a Pentium II 400MHz processor (L1 cache 32Kbyte, L2 cache 512Kbyte) in Linux kernel 2.2.12 to measure the search time using bit-vector forwarding table. The average search time for Paix routers was 320 nsec and the largest Mae-East router was 530 nsec. The IP address used for the search was generated by a random function, and performance was measured by repeating the search a million times. Since the current general processor has no special way of resident certain data blocks in the L2 cache within our understanding, the performance measurement result of the present invention is the result of the forwarding table mixed in the L2 cache and memory.

도면과 명세서는 단지 본 발명의 예시적인 것으로서, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.The drawings and specification are merely exemplary of the invention, which are used for the purpose of illustrating the invention only and are not intended to limit the scope of the invention as defined in the appended claims or claims. Therefore, those skilled in the art will understand that various modifications and equivalent other embodiments are possible. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.

본 발명에 의하면, 소프트웨어만으로 빠른 IP 주소 검색이 가능하다. 5기가비트급 고속 라우터는 평균 512바이트 크기의 패킷을 800x10-9초 이내에 처리할 수 있는 속도를 지원하여야 하는데, 본 발명에서는 실제 라우팅 테이블을 사용하여 실험한 평균 패킷 처리속도가 320x10-9~530x10-9초가 소요되어 5 Gbps급 이상의 고속 라우터를 구현할 수 있다.According to the present invention, a quick IP address search is possible only by software. A 5 Gigabit high speed router should support a speed that can process packets of an average size of 512 bytes within 800x10 -9 seconds. In the present invention, the average packet throughput tested using an actual routing table is 320x10 -9 to 530x10- . It takes 9 seconds to implement a 5 Gbps or faster router.

Claims (8)

(a)IP 주소 검색시 사용되는 라우팅 테이블을 프리픽스 트라이로 표현되는 비트-벡터 테이블로 구성하기 위하여, IP 프리픽스 엔트리를 확장하여 프리픽스의 길이 n을 깊이로 갖는 이진트리로 표현하는 단계;(a) expressing a binary tree having a length n of a prefix by extending an IP prefix entry to configure a routing table used in retrieving an IP address into a bit-vector table represented by a prefix tri; (b)모든 노드를, 2개의 자식노드를 갖거나 자식노드가 없어야 하는 트라이로 변경하여 프리픽스 비트가 α개 증가시키는 단계;(b) changing all nodes to tri, which should have two child nodes or no child nodes, increasing α prefix bits; (c)상기 프리픽스 트라이를 깊이 m의 부트라이로 분할하여 깊이 m에 존재하는 상기 프리픽스 비트가 전체 프리픽스 비트중에서 몇 번째 비트인지를 계산하는 단계;(c) dividing the prefix tri into a booti of depth m to calculate the number of bits of the prefix bits present in the depth m; (d)상기 프리픽스 트라이에서 깊이 m의 부트라이를 넓이 우선 탐색순서로 비트-벡터 테이블의 순차적인 노드로 구성하여 최종 비트-벡터 테이블을 구성하는 단계;(d) constructing a final bit-vector table by configuring a booti of depth m in the prefix tri as a sequential node of a bit-vector table in a width-first search order; (e)상기 비트-벡터 테이블에서 검색할 IP 주소를 m비트 단위로 나누는 단계;(e) dividing the IP address to be searched in the bit-vector table by m bits; (f)상기 m비트로 나누어진 값을 인덱스로 상기 비트-벡터 테이블에서 자식노드의 개수와 상기 프리픽스 비트의 개수를 구하는 단계; 및obtaining the number of child nodes and the number of prefix bits in the bit-vector table by indexing the value divided by the m bits; And (g)상기 프리픽스 비트의 개수를 누적한 누적치를 라우팅 인덱스로 사용하여 IP 주소를 검색하는 단계를 포함함을 특징으로 하는 비트-벡터 테이블을 이용한 IP주소검색방법.and (g) searching for an IP address using a cumulative value of the number of prefix bits as a routing index. 삭제delete 제1항에 있어서, 상기 (a)단계는The method of claim 1, wherein step (a) 상기 라우팅 테이블을 이진 트리로 표시할 경우 라우팅 엔트리의 개수인 k개만큼 프리픽스 비트가 이진트리에 존재함을 특징으로 하는 비트-벡터 테이블을 이용한 IP주소검색방법.When the routing table is represented as a binary tree, an IP address retrieval method using a bit-vector table includes k prefix bits, which are the number of routing entries, in the binary tree. 제1항에 있어서, 상기 (a)단계에서 상기 프리픽스의 길이는The method of claim 1, wherein the length of the prefix in step (a) is 최대 32의 깊이를 갖음을 특징으로 하는 비트-벡터 테이블을 이용한 IP주소검색방법.IP address retrieval method using a bit-vector table characterized by having a maximum depth of 32. 제2항에 있어서, 상기 (b)단계에서 상기 라우팅 테이블의 인덱스 값은The method of claim 2, wherein the index value of the routing table in step (b) 상기 프리픽스 트라이의 깊이 m에서 IP 주소의 프리픽스 비트가 0에서 k+α개 사이에서 몇 번째 비트인지 나타내는 카운트 값임을 특징으로 하는 비트-벡터 테이블을 이용한 IP주소검색방법.And a count value indicating the number of bits between 0 and k + α bits at the depth m of the prefix tri. 제1항에 있어서, 상기 (e)단계에서 m비트값은 프리픽스 트라이의 깊이 m에서 m번째 노드를 포함하는 부트라이와 m번째 특정 리프 노드를 의미함을 특징으로 하는 비트-벡터 테이블을 이용한 IP주소검색방법.2. The IP using the bit-vector table according to claim 1, wherein the m-bit value in step (e) means a boot ray and an m-th specific leaf node including the m-th node at the depth m of the prefix tri. How to search address. 제6항에 있어서, 상기 특정 리프 노드는The method of claim 6, wherein the specific leaf node is 비트-벡터 노드의 프리픽스 비트 필드와 자식 비트 필드의 위치를 나타냄을 특징으로 하는 비트-벡터 테이블을 이용한 IP주소검색방법.IP address retrieval method using a bit-vector table, characterized in that the position of the prefix bit field and the child bit field of the bit-vector node. 제1항에 있어서, 상기 (f)단계는The method of claim 1, wherein step (f) (f1)상기 m비트로 나누어진 값을 상기 비트-벡터 테이블의 인덱스로하여 m번째 비트 위치에서 자식노드가 있을 때, 현재위치까지 누적된 자식노드의 개수와 프리픽스 비트의 개수를 구하는 단계; 및(f1) calculating the number of child nodes and prefix bits accumulated to the current position when there are child nodes at the m th bit position using the value divided by the m bits as an index of the bit-vector table; And (f2)상기 m비트로 인덱스된 상기 비트-벡터 테이블 노드에서 자식노드가 더 이상 없고, 프리픽스 비트가 있으면 다시 프리픽스 비트 개수를 계산하는 단계를 포함함을 특징으로 하는 비트-벡터 테이블을 이용한 IP주소검색방법.(f2) IP address retrieval using a bit-vector table, comprising calculating the number of prefix bits if there are no child nodes in the bit-vector table node indexed with the m-bits and if there are prefix bits Way.
KR1020000022792A 2000-04-28 2000-04-28 IP address look-up method using a bit-vector table KR100364433B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020000022792A KR100364433B1 (en) 2000-04-28 2000-04-28 IP address look-up method using a bit-vector table

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000022792A KR100364433B1 (en) 2000-04-28 2000-04-28 IP address look-up method using a bit-vector table

Publications (2)

Publication Number Publication Date
KR20010098110A KR20010098110A (en) 2001-11-08
KR100364433B1 true KR100364433B1 (en) 2002-12-11

Family

ID=19667485

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000022792A KR100364433B1 (en) 2000-04-28 2000-04-28 IP address look-up method using a bit-vector table

Country Status (1)

Country Link
KR (1) KR100364433B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100472275B1 (en) * 2000-07-12 2005-03-08 닛본 덴끼 가부시끼가이샤 Route retrieving system, method therefor and a router device to be used in the same
KR100506844B1 (en) * 2002-03-12 2005-08-11 주식회사 프리컴시스템 Ip sharer detection method

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100598341B1 (en) * 1999-12-17 2006-07-06 주식회사 케이티 Method of IP subnet information management on database using binary string
KR100814077B1 (en) * 2006-10-09 2008-03-14 이화여자대학교 산학협력단 An ip address lookup method using priority-trie and apparatus for relaying packets therefor
CN110399359B (en) * 2019-07-24 2023-09-01 创新先进技术有限公司 Data backtracking method, device and equipment

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519858A (en) * 1992-01-10 1996-05-21 Digital Equipment Corporation Address recognition engine with look-up database for storing network information
JPH09107377A (en) * 1995-10-12 1997-04-22 Nippon Telegr & Teleph Corp <Ntt> Routing table retrieval method
US5761440A (en) * 1994-09-15 1998-06-02 International Business Machines Corporation System and method utilizing multiple search trees to route data within a data processing network
JPH10327180A (en) * 1997-05-26 1998-12-08 Fujikura Ltd Address retrieval device
WO1999014906A1 (en) * 1997-09-15 1999-03-25 Effnet Group Ab Method and system for fast routing lookups
US6018524A (en) * 1997-09-09 2000-01-25 Washington University Scalable high speed IP routing lookups
KR20010030607A (en) * 1997-09-15 2001-04-16 에프넷 그룹 에이비 Method and system for fast routing lookups

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519858A (en) * 1992-01-10 1996-05-21 Digital Equipment Corporation Address recognition engine with look-up database for storing network information
US5761440A (en) * 1994-09-15 1998-06-02 International Business Machines Corporation System and method utilizing multiple search trees to route data within a data processing network
JPH09107377A (en) * 1995-10-12 1997-04-22 Nippon Telegr & Teleph Corp <Ntt> Routing table retrieval method
JPH10327180A (en) * 1997-05-26 1998-12-08 Fujikura Ltd Address retrieval device
US6018524A (en) * 1997-09-09 2000-01-25 Washington University Scalable high speed IP routing lookups
WO1999014906A1 (en) * 1997-09-15 1999-03-25 Effnet Group Ab Method and system for fast routing lookups
KR20010030607A (en) * 1997-09-15 2001-04-16 에프넷 그룹 에이비 Method and system for fast routing lookups

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100472275B1 (en) * 2000-07-12 2005-03-08 닛본 덴끼 가부시끼가이샤 Route retrieving system, method therefor and a router device to be used in the same
KR100506844B1 (en) * 2002-03-12 2005-08-11 주식회사 프리컴시스템 Ip sharer detection method

Also Published As

Publication number Publication date
KR20010098110A (en) 2001-11-08

Similar Documents

Publication Publication Date Title
US7356033B2 (en) Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures
Zane et al. CoolCAMs: Power-efficient TCAMs for forwarding engines
US6594655B2 (en) Wildcards in radix- search tree structures
US6728732B1 (en) Data structure using a tree bitmap and method for rapid classification of data in a database
US7433871B2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
KR100586461B1 (en) Method, Hardware Architecture and Recording Medium for Searching IP Address by Using Pipeline Binary Tree
CN105141525B (en) IPv6 method for searching route and device
US20030091043A1 (en) Methods and systems for fast packet forwarding
CA2365395C (en) Default route coding
Pao et al. Efficient hardware architecture for fast IP address lookup
CN107431660B (en) Search device, search method, and recording medium
US7249149B1 (en) Tree bitmap data structures and their use in performing lookup operations
CN106330716B (en) IP route searching method and device
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
KR100364433B1 (en) IP address look-up method using a bit-vector table
US20040210588A1 (en) Methods and apparatus for address lookup
Yilmaz et al. A trie-based algorithm for IP lookup problem
Hsieh et al. A classified multisuffix trie for IP lookup and update
US20050114393A1 (en) Dynamic forwarding method using binary search
Veeramani et al. Efficient IP lookup using hybrid trie-based partitioning of TCAM-based open flow switches
Erdem Pipelined hierarchical architecture for high performance packet classification
Erdem et al. Value-coded trie structure for high-performance IPv6 lookup
Nie et al. IP address lookup using a dynamic hash function
CN106330721B (en) IP method for searching route and device
Lim et al. A new pipelined binary search architecture for IP address lookup

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20091111

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee