KR20050036794A - 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체 - Google Patents

파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체 Download PDF

Info

Publication number
KR20050036794A
KR20050036794A KR1020040082326A KR20040082326A KR20050036794A KR 20050036794 A KR20050036794 A KR 20050036794A KR 1020040082326 A KR1020040082326 A KR 1020040082326A KR 20040082326 A KR20040082326 A KR 20040082326A KR 20050036794 A KR20050036794 A KR 20050036794A
Authority
KR
South Korea
Prior art keywords
prefix
enclosure
found
tree
subtree
Prior art date
Application number
KR1020040082326A
Other languages
English (en)
Other versions
KR100586461B1 (ko
Inventor
임혜숙
Original Assignee
임혜숙
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 임혜숙 filed Critical 임혜숙
Publication of KR20050036794A publication Critical patent/KR20050036794A/ko
Application granted granted Critical
Publication of KR100586461B1 publication Critical patent/KR100586461B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/02Topology update or discovery
    • H04L45/08Learning-based routing, e.g. using neural networks or artificial intelligence

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Artificial Intelligence (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법, 하드웨어 구조 및 기록매체에 관한 것이다.
본 발명은 인클로저 프리픽스를 루트 노드로 하여 이진 트리를 구성하되, 본 발명의 이진 트리에서는 인클로저들의 서브 트리들을 메인 트리에서 분리하여 독립된 트리로 존재시켜, 입력된 어드레스의 프리픽스와 메인 트리의 노드 및 서브 트리의 노드에 포함되어 있는 프리픽스를 파이프라인 기법을 이용하여 비교함으로써 입력된 어드레스를 검색하기 위한 방법, 하드웨어 구조 및 기록매체에 관한 것이다.
본 발명에 의하면, 이진 프리픽스 트리 구조가 갖는 최대 장점인 트리 내에 빈 노드가 없다는 점, 그리고 이진 탐색은 파이프라인을 사용하여 구현되어 질 수 있는 점 등을 살려서 메모리를 효율적으로 사용할 수 있게 한다는 장점이 있다. 또한, 최대 한 번의 내용 주소화 메모리 엑세스 또는 한 번의 메모리 엑세스를 통하여 어드레스 검색을 수행할 수 있는 실용적이면서도 우수한 구조를 제공한다.

Description

파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법, 하드웨어 구조 및 기록매체{Method, Hardware Architecture and Recording Medium for Searching IP Address by Using Pipeline Binary Tree}
본 발명은 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법, 하드웨어 구조 및 기록매체에 관한 것으로, 더욱 상세하게는 인클로저 프리픽스를 루트 노드로 하여 이진 트리를 구성하되, 본 발명의 이진 트리에서는 인클로저들의 서브 트리들을 메인 트리에서 분리하여 독립된 트리로 존재시켜, 입력된 어드레스의 프리픽스와 메인 트리의 노드 및 서브 트리의 노드에 포함되어 있는 프리픽스를 파이프라인 기법을 이용하여 비교함으로써 입력된 어드레스를 검색하기 위한 방법, 하드웨어 구조 및 기록매체에 관한 것이다.
세계 전역에서 광범위하게 사용되고 있는 인터넷 라우터에서 실시간으로 수행되어야 하는 주요 기능 중 하나는 수신한 패킷을 그의 최종 목적지를 향하여 전달(Forwarding)하는 것이다. 이를 위하여 모든 라우터는 전달 테이블(Forwarding Table)을 가지며, 이 전달 테이블로부터 목적지 어드레스(Destination Address)로 액세스(Access)하기 위한 출력 포트(Output Port)와 다음 홉 주소(Hop Address)들에 대한 정보들을 얻어낸다. 패킷이 수신되면 라우터는 수신된 패킷의 목적지 어드레스의 네트워크 파트(Network Part)를 키(Key)로 사용하여 전달 테이블을 참조하는 일을 수행하는데, 이를 어드레스 검색이라고 하고 이 때 사용되는 네트워크 파트를 프리픽스(Prefix)라고 한다.
종래의 클래스를 갖는 어드레싱 방식(Classful Addressing Scheme)에서는 IP 어드레스의 프리픽스를 8 Bit, 16 Bit 또는 24 Bit으로 고정시켜서 사용하였다. 클래스를 갖는 어드레스 방식에서는 프리픽스가 고정되어 있으므로 IP 어드레스가 낭비되며, 네트워크의 종류가 증가함에 따라 라우터의 전달 테이블 크기가 기하급수적으로 증가해야 한다는 등의 문제점이 있다.
이러한 문제점을 해결하기 위하여 클래스를 갖지 않는 어드레싱 방식(CIDR: Classless Interdomain Routing)이 고안되었는데 CIDR 방식에서는 프리픽스의 길이를 고정시켜 놓지 않으므로, IP 어드레스의 낭비를 막을 수 있는 한편, 어드레스 결합(Aggregation)을 가능하게 하여 라우터에서 전달 테이블의 크기가 빠르게 증가하는 것을 방지할 수 있다는 장점이 있다. 그러나 CIDR 방식의 단점은 라우터에서 롱기스트 프리픽스 매칭(Longest Prefix Matching)을 수행하여야 한다는 것이다. 입력된 패킷은 자신의 최종 네트워크의 프리픽스 길이에 대한 정보를 포함하고 있지 않으므로, 전달 테이블에 나와 있는 프리픽스들 중에서 입력된 패킷의 어드레스와 가장 길게 일치하는 엔트리를 찾아야 한다. 다시 말하면, 그동안 완전 매칭(Exact Matching)을 위해 사용되어 오던 여러 가지 어드레스 검색 방식들이 롱기스트 프리픽스 방식에는 더 이상 적용되기 어렵게 되었다는 문제점이 있다.
인터넷 라우터에 연결되어 있는 링크(Link)의 속도는 장차 10 Gbps 이상의 속도까지 증가할 것으로 전망되며, 프리픽스의 종류도 다양해져서 백본 라우터의 전달 테이블의 크기는 수 십만 개 이상의 엔트리를 갖는 커다란 테이블로 증가할 것으로 생각된다. 따라서 전술한 환경에서는 롱기스트 프리픽스 매칭에 의한 어드레스 검색이 오늘날 라우터의 성능을 결정짓는 주요 요인으로 작용하게 되는 바 효율적인 IP 어드레스 검색 알고리즘과 구조에 대한 연구가 활발하게 진행되고 있다.
어드레스 검색은 접근 방식에 따라 크게 몇 가지로 구분할 수 있는데, 그 첫 번째가 트라이(Trie)를 사용하는 방식이다.
도 1은 수 개의 프리픽스들을 표현하는 트라이의 구조의 일예를 나타내는 도면이다.
트라이는 트리(Tree)에 기초한 데이터 구조로서, 프리픽스들 간의 관계를 알기 쉽게 표현한 가장 대표적인 데이터 구조라 할 수 있다. 트라이 구조에서, 모든 프리픽스는 트라이에서의 하나의 노드에 위치하고 루트 노드로부터 출발하는 패스(Path)로 정의된다. 라우터가 갖는 수만 개의 프리픽스들은 주로 트라이로 표현되므로 트라이 구조를 효율적으로 메모리에 저장하는 방식 및 이에 따르는 다양한 IP 어드레스 검색 방식들이 연구되어져 왔다. 트라이에 기초한 방식은 프리픽스에 해당되지 않는 내부 노드(Internal Node)들을 저장하는 데서 오는 메모리의 낭비 및 W 를 트라이의 높이라 할 때 W 번의 메모리 검색을 수행하여야 하는 문제점이 있다. 또한 새로운 프리픽스를 추가하거나, 사용되지 않는 프리픽스를 제거하기 위해 수행되어야 하는 업데이트 등이 용이하지 않은 문제점이 있다.
어드레스 검색을 위한 또다른 방식으로, 같은 길이를 갖는 프리픽스들끼리의 해슁(Hashing)을 사용하는 방식이 있다. 해슁은 완전 매칭 방식을 사용하는 레이어(Layer) 2 주소 검색을 위해 널리 사용되어 온 방식이다. 그러나 이진 탐색 결합 해슁 방식은 순수한 이진 탐색(Binary Search)이 적용되지 않는 문제점이 있다. 다시 말하면, 해슁에 의해 검색된 엔트리(Entry)가 프리픽스를 포함하고 있지 않더라도, IP 주소의 롱기스트 프리픽스 매칭의 특성 때문에 더 긴 프리픽스가 존재함을 알려주기 위한 마커(Marker)와, 각 노드에 '제일 잘 일치하는 프리픽스' (Best Matching Prefix)를 미리 계산하여 저장하여야 하는데, 이러한 마커와 '제일 잘 일치하는 프리픽스'를 미리 계산하고 저장하는 데에는 커다란 오버헤드(Overhead)가 따른다는 문제점이 있다. 또한 이진 탐색 결합 해슁 방식은 특정 프리픽스 분포(Prefix Distribution)에 대하여 빠른 시간 내에 완전 해슁(Perfect Hashing) 함수를 찾을 수 있음을 가정하고 있기 때문에 실용적이지 못하다는 문제점이 있다.
이러한 문제점을 극복하기 위해, 프리픽스 길이 별로 각각 별도의 해슁 함수를 사용하여 모든 프리픽스 길이에 대하여 병렬 검색을 수행한 후, 매치되어 나온 프리픽스 중 가장 길게 매치된 프리픽스를 찾는 해슁을 이용한 병렬 검색 방식이 제안되었다. 해슁을 이용한 병렬 검색 방식에서는 완전 해슁 함수를 가정하지 않고도, 배타적 논리합(Exclusive OR)으로 구현된 해슁 함수를 사용하여 검색이 가능하고, 해슁에서 일어나는 충돌 현상은 보조 테이블(Sub Table)을 두어 해결한 구조로서 매우 실용적인 구조라고 할 수 있다. 그러나 주 테이블에서 충돌 현상이 발생한 경우 보조 테이블에서 이진 검색을 수행하게 되므로 최대 메모리 접근 횟수가 많다는 문제점이 있다. 이 방식에서는 해슁에서의 충돌 현상(Collision)을 해결하기 위하여, 여러 개의 해슁 테이블을 사용하여 현재 충돌 횟수가 적은 쪽의 엔트리에 새로운 프리픽스를 저장하는 방식을 제안하고 있으나, 이러한 데이터 구조를 구현하는 하드웨어 구조에 관하여는 구체적으로 제안된 바가 없다.
한편, 앞서 언급된 해슁을 사용한 모든 어드레스 검색 구조들은 해슁 구조의 본질적인 문제인 비어 있는 엔트리에 대한 메모리 낭비를 해결하지 못했다는 문제점이 있다.
어드레스 검색을 위한 또다른 방식으로, 내용 주소화 메모리(CAM : Content Addressable Memory)를 사용하는 방식이 있다. 이 방식은 현재 실제 교환기나 라우터의 구현에 많이 사용되고 있는 기술로서, 입력된 주소와 내용 주소화 메모리에 저장된 모든 프리픽스들을 동시에 직접 비교하여 매우 빠른 어드레스 검색을 가능하게 하나, 내용 주소화 메모리 관련 기술이 라우터에서 사용하는 프리픽스 수의 증가만큼 빠르게 발전하고 있지 못하다는 문제점이 있다. 다시 말하면, 같은 공간 크기를 차지하는 램(RAM)과 비교할 때, 내용 주소화 메모리에 저장할 수 있는 프리픽스의 개수는 매우 적고 내용 주소화 메모리의 값도 비싸며, 수만 개의 프리픽스를 저장하는 내용 주소화 메모리는 구현이 어렵고, 구현한다 하더라도 이를 어드레스 검색을 수행하기 위해 설계된 칩 내부에 내장하기가 어렵다는 문제점이 있다.
어드레스 검색을 위한 또다른 방식으로, 길이가 다른 프리픽스들간에 이진 탐색을 적용하는 방식이 있다. 이진 탐색 또한 해슁과 마찬가지로 완전 매칭 검색을 이용하는 2 계층 어드레스 검색을 위하여 사용되어져 왔으나, 길이가 다른 프리픽스들 간의 비교를 수행하여야 하는 3 계층 IP 어드레스 검색을 위해서는 사용되지 못하여 왔다. 이 방식에서는 서로 길이가 다른 두 개의 프리픽스들간의 크기를 정의하고, 또한 하나의 프리픽스가 다른 여러 개의 프리픽스들을 포함하고 있을 경우의 인클로저(Enclosure)를 정의하여, IP 어드레스 검색을 위한 이진 탐색을 가능하게 하였다. 이러한 방식으로 트리를 구성하였을 경우, 모든 노드에 프리픽스를 할당하게 되므로 메모리의 낭비 없이 효율적으로 프리픽스들을 저장할 수 있다는 장점이 있으나 전체 트리의 균형이 이루어지지 않아 하드웨어 구현이 어렵다는 문제점이 있다.
이하에서는 길이가 다른 프리픽스들간에 이진 탐색을 적용하기 위한 종래의 트리 구조를 이용한 어드레스 검색에 대해 자세히 설명하기로 한다. 이하에서는 제안된 데이터 구조를 프리픽스들의 트라이 구조와 구분하기 위하여 이진 프리픽스 트리(Binary Prefix Tree) 구조라 부르기로 한다. 이진 프리픽스 트리 구조는 검색되어지는 프리픽스들의 크기를 비교하여 크기에 따라 정렬하는 것으로부터 구성된다. 길이가 다른 프리픽스들간의 이진 검색을 위하여 다음과 같은 정의를 사용하였다.
정의 1 (크기 비교에 관한 정의) : 두개의 프리픽스 A = a1a2 ... an 과 B = b1b2 ... bm을 가정할 때, 만약 n=m 이면, A와 B의 숫자(Numerical) 값이 비교되어진다. 만약 n!=m (n<m을 가정) 이면, 서브스트링(Substring) a1a2 ... an 과 b1b2 ... bn이 비교되어져서 더 큰 숫자 값을 가지는 프리픽스가 더 큰 것으로 정의된다. 만약 두개의 서브스트링이 같은 경우, (n+1) 번째 bit이 1이면 B>A, 아니면 B<A 이다.
정의 2 (매치에 관한 정의) : 두 개의 프리픽스 A = a1a2 ... an 과 B = b1b2 ... bm을 가정할 때, n=m 이고 두 개의 스트링이 같거나, n<m 일 경우 a1 a2 ... an 와 B의 서브스트링 b1b2 ... bn이 같으면 A와 B는 매치(Match)한다. 그렇지 않으면 A와 B는 매치하지 않는다.
정의 3 (디스조인트에 관한 정의) : 두 개의 프리픽스 A와 B가 어느 쪽도 다른 쪽의 프리픽스가 아니면 A와 B는 디스조인트(Disjoint)하다.
정의 4 (인클로저에 관한 정의) : 프리픽스 A가 있을 때, A를 프리픽스로 갖는 다른 프리픽스가 하나라도 존재하면 A는 인클로저(Enclosure)이다.
이진 프리픽스 트리를 구성하는 과정은 다음과 같은 단계를 거친다.
먼저 정의 1을 사용하여 모든 프리픽스들을 크기별로 나열한 리스트를 만든다. 이는, 먼저 모든 프리픽스들을 서로 비교하여, 어떤 프리픽스가 다른 프리픽스의 인클로저(정의 4)인 경우 인클로저의 집합에 프리픽스를 포함시키는 과정을 수행한다. 이 과정을 수행하고 나면 서로 디스조인트(정의 3)한 프리픽스들만 남게 되고, 이 프리픽스들을 크기별로 정렬하는 과정이 수행된다. 알고리즘 1은 전술한 프리픽스들을 크기별로 정렬하는 과정을 수행하는 알고리즘이다.
(알고리즘 1)
알고리즘 1은 최악의 경우(Worst Case)에 O(N2)의 성능을 갖는다.
알고리즘 2는 알고리즘 1을 이용하여 생성된 리스트를 이용하여 이진 프리픽스 트리를 만드는 과정이다. 알고리즘 1에 의하면, 생성되는 리스트는 재귀적으로 반으로 나뉘어진 이진 트리이다. 이진 프리픽스 트리 생성시 유의해야 할 사항은, 만약 나누어지는 점의 프리픽스가 정의 4에 정의된 인클로저인 경우, 이 인클로저를 프리픽스로 갖는 모든 데이터들을 이 인클로저를 루트로 하는 서브트리에 포함시켜야 한다는 것이다. 이는, 프리픽스란 하나의 포인트(Point)를 가리키는 것이 아니라, 그 프리픽스로 시작하는 범위(Range)를 모두 포함하는 것으로서, 이진 탐색은 상위 노드가 먼저 검색되기 때문에 인클로저를 상위 노드에 두어 먼저 검색하기 위함이다.
(알고리즘 2)
알고리즘 2는 O(N2log2N)의 성능을 갖는다.
표 1은 프리픽스들의 예를 나타낸 표이다.
Prefix Fwd RAM Ptr Prefix Fwd RAM Ptr
10 1 1101110010 2
01 2 10001101 3
110 3 11101101 4
1011 4 01010110 5
0001 5 00100101 6
01011 6 100110100 7
00010 7 101011011 8
001100 8 11101110 1
1011001 1 10110111 2
1011010 2 011010 3
0100110 3 011011 4
01001100 4 011101 5
10110011 5 0110010 6
10110001 6 101101000 7
01011001 7 101101110 8
001011 8 00011101 1
00111010 1 011110110 2
도 2는 표 1에서 보인 프리픽스들을 이진 프리픽스 트리 구조로 생성한 도면이다.
도 2에 도시된 바와 같이, 인클로저 프리픽스 10* 를 루트로 하는 서브 트리에는 10*을 프리픽스로 갖는 모든 프리픽스들이 포함되어 있음을 알 수 있다. 도 2에서 진하게 표시되어 있는 노드는 인클로저 프리픽스임을 나타내고, 진하게 표시되어 있지 않은 노드는 디스조인트 프리픽스임을 나타낸다. 도 2에서 볼 수 있듯이 34개의 프리픽스들의 이진 트리가 10개의 트리 깊이를 갖는 불균형(Unbalanced) 트리로 구성되었다.
알고리즘 1 및 알고리즘 2를 통해 만들어진 이진 프리픽스 트리에서의 어드레스 검색 알고리즘은 알고리즘 3과 같다.
(알고리즘 3)
알고리즘 3에서는 탐색 프로시저(Procedure)를 재귀적으로 호출함으로서, 하위 노드에서 매치가 없는 경우에만 상위 노드에서 매치되는 프리픽스를 찾게 함으로써, 가장 하위 노드에서 매치된 프리픽스가 롱기스트 프리픽스로 선정된다. 이를 하드웨어로 설계할 때에는, 상위 노드에서 매치된 프리픽스를 하위 노드에서 매치된 프리픽스로 대치하는 방식으로 설계한다. 인클로저를 상위 노드에 두었으므로, 하위 노드에서 매치하면 이는 인클로저보다 더 긴 프리픽스인 것이 되므로 인클로저를 하위 노드에서 매치되는 노드로 대치함으로써 IP 어드레스의 롱기스트 프리픽스 매칭을 구현하기 위함이다.
한편, 이진 프리픽스 트리에서의 갱신(Update)은 두 가지 경우로 나누어 설명할 수 있다. 알고리즘 4는 이진 프리픽스 트리에서의 갱신 과정을 나타내는 알고리즘이다.
(알고리즘 4)
추가되는 프리픽스가 정의 3에서 보여준 디스조인트 프리픽스라면, 트리의 리프(Leaf)에 추가할 수 있으므로 전술한 어드레스 검색과 같은 성능을 갖는다. 그러나 만약 추가되는 프리픽스가 이진 프리픽스 트리에 이미 존재하는 다른 프리픽스의 인클로저인 경우, 추가되어지는 인클로저는 기존 프리픽스를 대치하여야 하고, 새로이 추가된 인클로저를 루트로 하는 서브 트리를 다시 구성하여야 하는 문제점이 있다.
상기한 문제점을 해결하기 위해 본 발명은, 인클로저 프리픽스를 루트 노드로 하여 이진 트리를 구성하되, 본 발명의 이진 트리에서는 인클로저들의 서브 트리들을 메인 트리에서 분리하여 독립된 트리로 존재시켜, 입력된 어드레스의 프리픽스와 메인 트리의 노드 및 서브 트리의 노드에 포함되어 있는 프리픽스를 파이프라인 기법을 이용하여 비교함으로써 입력된 어드레스를 검색하기 위한 방법, 하드웨어 구조 및 기록매체를 제공하는 것을 목적으로 한다.
본 발명의 제 1 목적에 의하면, 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법에 있어서, (a) 입력된 어드레스의 프리픽스와 상기 인클로저 프리픽스를 비교하는 단계; (b) 상기 (a) 단계의 비교 결과, 상기 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색된 경우, 검색된 상기 인클로저 프리픽스 중 상기 어드레스의 프리픽스와 비트 수가 가장 길게 매치되는 상기 인클로저 프리픽스의 포워딩 램 포인터를 임시 저장하는 단계; (c) 상기 어드레스의 프리픽스의 비트 수가 가장 길게 매치되는 상기 인클로저 프리픽스를 루트 노드로 하는 서브 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하는 단계; (d) 상기 (c) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색된 경우, 검색된 상기 프리픽스의 포워딩 램 포인터를 출력하는 단계; (e) 상기 (c) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되지 않은 경우, 상기 (b) 단계에서 임시 저장된 상기 포워딩 램 포인터를 출력하는 단계; (f) 상기 (a) 단계의 비교 결과, 상기 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색되지 않은 경우, 메인 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하는 단계; (g) 상기 (f) 단계의 비교 결과, 상기 메인 트리에서 매치되는 프리픽스가 검색된 경우, 검색된 상기 프리픽스의 포워딩 램 포인터를 출력하는 단계; 및 (h) 상기 (f) 단계의 비교 결과, 상기 메인 트리에서 매치되는 프리픽스가 검색되지 않은 경우, 디폴트 포워딩 램 포인터를 출력하는 단계를 포함하는 것을 특징으로 하는 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법을 제공한다.
본 발명의 제 2 목적에 의하면, 첫 레벨 인클로저 프리픽스만을 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법에 있어서, (a) 입력된 어드레스의 프리픽스와 상기 인클로저 프리픽스를 비교하는 단계; (b) 상기 (a) 단계의 비교 결과, 상기 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색된 경우, 검색된 상기 인클로저 프리픽스의 포워딩 램 포인터를 임시 저장하는 단계; (c) 상기 어드레스의 프리픽스의 인클로저 프리픽스를 루트 노드로 하는 서브 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하는 단계; (d) 상기 (c) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되고 검색된 상기 프리픽스가 서브 트리 포인터를 가지면, 서브 트리 포인터가 가리키는 서브 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하되, 서브 트리 포인터를 가지지 않는 서브 트리가 검색될 때까지 반복하는 단계; (e) 상기 (d) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되고 검색된 상기 프리픽스가 상기 서브 트리 포인터를 가지지 않거나, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되지 않으면, 상기 (d) 단계에서 최종으로 검색된 상기 프리픽스의 포워딩 램 포인터를 출력하는 단계; (f) 상기 (c) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되지 않은 경우, 상기 (b) 단계에서 임시 저장된 상기 포워딩 램 포인터를 출력하는 단계; (g) 상기 (a) 단계의 비교 결과, 상기 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색되지 않은 경우, 메인 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하는 단계; (h) 상기 (g) 단계의 비교 결과, 상기 메인 트리에서 매치되는 프리픽스가 검색된 경우, 검색된 상기 프리픽스의 포워딩 램 포인터를 출력하는 단계; 및 (i) 상기 (g) 단계의 비교 결과, 상기 메인 트리에서 매치되는 프리픽스가 검색되지 않은 경우, 디폴트 포워딩 램 포인터를 출력하는 단계를 포함하는 것을 특징으로 하는 첫 단계에 생성된 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법을 제공한다.
본 발명의 제 3 목적에 의하면, 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조에 있어서, 상기 한 개 이상의 이진 트리의 루트 노드를 저장하는 내용 주소화 메모리(CAM : Content Addressable Memory); 상기 루트 노드를 제외한 노드를 저장하는 메모리; 및 상기 인클로저 프리픽스를 루트 노드로 하여 메인 트리 및 서브 트리를 구성하고 입력된 어드레스의 프리픽스와 상기 메인 트리의 노드 및 상기 서브 트리의 노드에 포함되어 있는 프리픽스를 비교하여 상기 입력된 어드레스의 상기 검색을 수행하는 처리부를 포함하는 것을 특징으로 하는 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조를 제공한다.
본 발명의 제 4 목적에 의하면, IP 어드레스 검색을 위한 파이프라인 이진 트리를 생성하는 시스템에 있어서, (a) 상기 검색을 위한 프리픽스 리스트에서 인클로저 프리픽스를 검색하는 기능; (b) 검색된 상기 인클로저 프리픽스를 상기 프리픽스 리스트로부터 제거하여 메인 트리 리스트를 생성하고, 검색된 상기 인클로저 프리픽스가 포함된 인클로저 집합을 생성하는 기능; (c) 상기 인클로저 프리픽스 집합에 속한 한 개 이상의 상기 인클로저 프리픽스마다 서브 트리 리스트를 생성하는 기능; (d) 상기 메인 트리 리스트 및 상기 서브 트리 리스트에 포함되어 있는 한 개 이상의 상기 프리픽스를 크기 별로 정렬하는 기능; 및 (e) 상기 메인 트리 리스트 및 상기 서브 트리 리스트에 포함되어 있는 한 개 이상의 상기 프리픽스를 엔트리에 포함하여 메인 트리 및 한 개 이상의 서브 트리를 생성하는 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
본 발명의 제 5 목적에 의하면, IP 어드레스 검색을 위해 생성된 파이프라인 이진 트리에 엔트리를 추가하는 방법에 있어서, (a) 추가하려는 프리픽스와 매치되는 프리픽스가 있는지 여부를 판단하는 단계; (b) 상기 (a) 단계의 판단 결과, 매치되는 프리픽스가 발견된 경우, 추가하려는 상기 프리픽스가 다른 인클로저 프리픽스의 인클로저인지 여부를 판단하는 단계; (c) 상기 (b) 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 인클로저 프리픽스의 인클로저인 경우, 인클로저의 집합에 추가하려는 상기 프리픽스 및 포워딩 램 포인터를 추가하는 단계; (d) 상기 (b) 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 인클로저 프리픽스의 인클로저가 아닌 경우, 추가하려는 상기 프리픽스가 다른 프리픽스의 인클로저인지 여부를 판단하는 단계; (e) 상기 (d) 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 프리픽스의 인클로저인 경우, 발견된 상기 프리픽스만을 추가하려는 상기 프리픽스의 서브 트리로 만들고, 발견된 상기 프리픽스 엔트리를 제거하고, 추가하려는 상기 프리픽스를 상기 인클로저 집합에 추가하는 단계; (f) 상기 (d) 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 프리픽스의 인클로저가 아닌 경우, 발견된 상기 프리픽스를 상기 인클로저 집합에 추가하고 발견된 상기 프리픽스가 포함되어 있는 트리에서 제거하며, 추가하려는 상기 프리픽스를 발견된 상기 프리픽스의 서브 트리로 만드는 단계; 및 (g) 상기 (a) 단계의 판단 결과, 매치되는 프리픽스가 발견되지 않은 경우, 추가하려는 상기 프리픽스를 메인 트리의 새로운 리프 노드로서 추가하는 단계를 포함하는 것을 특징으로 하는 IP 어드레스 검색을 위해 생성된 파이프라인 이진 트리에 엔트리를 추가하는 방법을 제공한다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명의 바람직한 실시예에서는 종래의 이진 프리픽스 구조를 수정하여 이진 프리픽스 구조에서의 전술한 문제점을 개선할 수 있는 데이터 구조인 강화된 이진 트리 (Enhanced Binary Tree : 이하 'EnBiT' 라 칭함)를 제안한다.
종래 기술에 따르면, 이진 프리픽스 트리는 특정 프리픽스를 인클로저로 하는 다른 프리픽스들을 그 인클로저를 루트로 하는 서브 트리에 포함시켜야 하였다. 이는 롱기스트 프리픽스 매치를 수행하여야 하는 IP 어드레스 검색의 특성상, 입력된 목적지 IP 어드레스가 특정 인클로저 프리픽스와 매치하였다 하더라도 더 길게 매치하는 프리픽스를 찾아야 하기 때문이다. 이러한 제약 때문에 도 2에서 보였듯이 불균형 트리가 생성되며, 이러한 불균형 트리는 하드웨어로 구현되기에 어려움을 갖는다.
본 발명의 바람직한 실시예에 따른 EnBiT는 트리의 구성 요소인 프리픽스들이 서로 디스조인트한 관계를 갖는다면 균형 트리를 구성할 수 있다는 점에서 착안하여 이진 프리픽스 트리의 불균형성을 개선한다. 이는 인클로저들의 서브 트리들을 메인 트리에서 분리하여 독립된 트리로서 존재시키면 가능한 일로서, 본 발명의 바람직한 실시예에 따른 EnBiT에서는 인클로저들의 서브 트리들을 메인 트리와 분리하여 독립된 서브 트리로 만든다. 즉 메인 트리는 디스조인트 프리픽스들만으로 구성되고, 모든 인클로저들은 자신을 루트로 하는 프리픽스들의 서브 트리를 가지며, 모든 서브 트리의 프리픽스들 또한 서로 디스조인트한 관계를 갖는다.
알고리즘 5는 본 발명의 바람직한 실시예에 따른 EnBiT를 위해 수정된 정렬 알고리즘이다.
(알고리즘 5)
알고리즘 5는 메인 트리와 모든 인클로저의 서브 트리들을 재귀적으로 정렬하게 하는 알고리즘이다. 정렬 결과, 메인 트리 리스트와 인클로저 집합에 속한 여러 개의 서브 리스트가 생성된다.
알고리즘 6은 본 발명의 바람직한 실시예에 따른 EnBiT에서 트리를 만들기 위해 수정된 알고리즘이다.
(알고리즘 6)
알고리즘 6은 메인 트리의 리스트와 인클로저 집합에 들어있는 모든 인클로저의 리스트들을 위해 반복적으로 수행되어야 한다.
본 발명의 바람직한 실시예에서는 이진 프리픽스 트리 구조의 최대 장점인 비어있는 노드를 저장할 필요가 없는 특성을 살리고, 이진 탐색의 본질적인 성질을 이용하는 파이프라인 방식에 기초한 하드웨어를 제공한다.
먼저 도 2에 나타난 이진 프리픽스 트리를 예로 하여 본 발명의 바람직한 실시예에 따른 파이프라인 구조를 설명한다. 본 발명의 바람직한 실시예에 따른 파이프라인 구조는 이진 탐색의 성질을 그대로 이용한 것으로서, 트리를 깊이에 따라 가로로 나눈 뒤 각 깊이에 속하는 모든 노드들을 묶어 하나의 메모리를 사용하여 저장하고 각 깊이별로 메모리 액세스를 파이프라이닝하는 것이다. 각 엔트리에는 자신의 차일드(Child)로 가는 포인터들이 기억된다.
도 3은 본 발명의 바람직한 실시예에 따른 파이프라인 구조의 적용예를 나타낸 도면이다.
도 3은 도 2에 보인 트리에 본 발명의 바람직한 실시예에 따른 파이프라인 구조를 적용하였을 때의 트리 구조이다. 입력된 패킷의 어드레스가 노드에 저장된 프리픽스보다 작은 경우는 그림의 l 로 표현된 패스(Path)를 따라 검색이 진행되고, 큰 경우에는 그림의 g 로 표현된 패스를 따라 검색이 진행된다. 전술한 바와 같이 이진 프리픽스 트리 구조는 불균형 트리를 형성하게 되므로 파이프라인 단계의 수를 미리 결정할 수 없게 되고, 도 3에서 보여지는 바와 같이 과도한 파이프라인 단계의 수를 요구하게 되므로 하드웨어 구현에는 적합하지 않다.
도 4는 본 발명의 바람직한 제 1 실시예에 따른 EnBiT를 구현하는 하드웨어 구조를 나타낸 도면이다.
도 4는 전술한 표 1에서 보인 프리픽스를 예로 하여 본 발명의 바람직한 제 1 실시예에 따른 EnBiT를 구현하는 하드웨어 구조이다. 본 발명의 바람직한 실시예에 따른 EnBiT 구조에서의 어드레스 검색은 인클로저들 중 가장 길게 일치하는 인클로저를 검색하는 데서 출발한다. 도 4에서 굵은 선으로 표시된 것이 하나의 트리를 나타내며 제일 하단의 트리가 메인 트리이다. 도 4의 m 은 트리 엔트리의 프리픽스와 입력된 어드레스의 프리픽스가 일치하는 경우를 의미하며, l 은 트리 엔트리의 프리픽스가 입력된 어드레스의 프리픽스보다 작을 때를, g는 클 때를 의미한다. 이러한 구조를 이용하여 어드레스를 검색하는 과정은 순서도와 함께 후술한다.
도 4 에 도시된 바와 같이, 본 발명의 바람직한 제 1 실시예에서는 모든 인클로저 프리픽스를 루트 노드로 하고, 모든 루트 노드를 내용 주소화 메모리에 저장한다. 루트 노드의 엔트리에는 프리픽스 정보, 포워딩 램 포인터(Forwarding RAM Pointer) 및 자신의 서브 트리로 가는 포인터가 저장되고, 루트 노드를 제외한 노드 엔트리에는 프리픽스 정보, 포워딩 램 포인터 및 자신의 차일드들로 가는 포인터가 저장된다. 도 4 에서 보인 깊이별로 별도의 메모리를 사용하여 노드들을 저장하는 경우, 각 깊이에서의 메모리 검색은 파이프라이닝이 가능하다. 후술할 실험 결과에서 알 수 있듯이, 60% 이상의 프리픽스가 메인 트리에 포함되고, EnBiT에서의 모든 트리는 균형 구조를 가지므로 파이프라인 단계의 수는 메인 트리의 높이에 의하여 결정된다. 도 4에서 볼 수 있듯이, 표 1의 34개의 프리픽스의 경우에는 3 단계의 메모리 검색 파이프라인을 갖는 구조로서 구현 가능함을 알 수 있다.
본 발명의 바람직한 실시예에 따른 파이프라인 구조는 별도의 메모리에 각 깊이 별로 그 깊이에 속하는 모든 노드를 하나의 메모리에 저장하였으므로, 모든 깊이에서의 메모리 액세스를 동시에 수행할 수 있다. 이렇게 함으로써 입력된 일련의 목적지 IP 어드레스에 대하여 한번의 메모리 액세스로 어드레스 검색을 수행하는 하드웨어 구조가 가능해진다.
도 5는 본 발명의 바람직한 제 1 실시예에 따른 IP 어드레스 검색 과정을 나타낸 순서도이다.
본 발명의 바람직한 제 1 실시예에 따른 EnBiT에서의 어드레스 검색은 입력된 어드레스와 가장 길게 매치하는 인클로저 프리픽스를 찾는 것으로부터 시작한다. 즉, 어떤 트리에서 이진 탐색을 진행할 것인지가 조기에 결정되면 보다 작은 검색 공간 내에서 효율적인 이진 탐색이 가능하게 되는 것이다.
우선, 입력된 어드레스의 프리픽스와 인클로저 집합에 있는 인클로저 프리픽스를 비교한다(S500). 비교 결과, 매치되는 인클로저 프리픽스가 발견되는지를 판단하여(S502), 매치되는 인클로저 프리픽스가 발견되면 발견된 인클로저 프리픽스 중 입력된 어드레스의 프리픽스와 비트 수가 가장 길게 매치되는 인클로저 프리픽스의 포워딩 램 포인터를 임시 저장한다(S504). 다음으로, 인클로저 프리픽스를 루트로 하는 서브 트리에서 이진 탐색을 이용한 어드레스 검색을 진행한다(S506). 서브 트리에서 새로이 매치되는 프리픽스가 있는지 판단하여(S508), 새로이 매치되는 프리픽스가 있으면 임시 저장한 포워딩 램 포인터를 새로이 매치된 포워딩 램 포인터로 대치하여 출력한다(S510). 서브 트리 전체를 검색하는 동안에 새로이 매치되는 프리픽스가 없으면, 현재 임시 저장하고 있는 포워딩 램 포인터를 출력한다(S512).
한편, 단계 S502의 검색 결과, 입력된 어드레스가 어떤 인클로저와도 매치하지 않는 경우에는 디스조인트 프리픽스들로만 구성된 메인 트리로 이동하여 이진 탐색을 진행한다(S514). 메인 트리에서 매치되는 프리픽스가 있는지 판단하여(S516), 매치되는 프리픽스가 있으면 발견된 프리픽스의 포워딩 램 포인터를 출력한 후 조기에 검색을 종료한다(S510). 이는 본 발명의 바람직한 실시예에 따른 EnBiT 트리 내의 모든 프리픽스들은 서로 디스조인트한 관계에 있으므로, 하나의 프리픽스와 매치하였다면 다른 프리픽스와는 매치하지 않기 때문이다. 메인 트리 전체를 검색하였으나 매치되는 프리픽스가 없는 경우에는 디폴트(Default) 포워딩 램 포인터를 출력한다(S518).
본 발명의 바람직한 실시예에 따른 EnBiT 구조에 의하면 엔트리의 합병(Merge)도 용이할 뿐만 아니라 프리픽스 갱신도 용이하다. 본 발명의 바람직한 실시예에 따른 EnBiT에서 특정 프리픽스를 제거하고자 하는 경우에는, 어드레스 검색을 수행하여 지우기를 원하는 프리픽스를 찾아낸 후, 그 프리픽스의 포워딩 램 포인터가 무효함을 표시하면 된다. 이러한 방식으로 어드레스 테이블을 갱신하는 경우 무효한 엔트리가 생길 것이나 어드레스 검색에는 영향을 미치지 않는다. 어드레스 검색시 무효한 엔트리의 프리픽스 값은 비교를 위하여는 사용되나 포워딩 램 포인터는 기억되지 않는다.
도 6은 본 발명의 바람직한 실시예에 따른 EnBiT에 엔트리를 추가하는 과정을 나타낸 순서도이다.
전술한 이진 프리픽스 트리에 새로운 인클로저를 추가하기를 원할 경우 트리 갱신이 매우 어려움을 언급한 바 있으나 본 발명의 바람직한 실시예에 따르면 추가가 매우 용이해진다. 본 발명의 바람직한 실시예에 따른 EnBiT에서 새로운 프리픽스를 추가하기 원할 경우에는 추가하려는 프리픽스의 성격에 따라 다음의 몇 가지 경우로 나누어 생각할 수 있다.
먼저 프리픽스 검색을 수행하였을 때, 추가하려는 프리픽스와 매치되는 프리픽스가 있는지 판단하여(S600), 매치되는 프리픽스가 발견된 경우, 추가하려는 프리픽스가 다른 인클로저 프리픽스의 인클로저인지 여부를 판단한다(S602). 단계 S602의 판단 결과, 추가하려는 프리픽스가 다른 인클로저 프리픽스의 인클로저인 경우, 인클로저의 집합에 새로운 프리픽스와 그의 포워딩 램 포인터를 추가한다(S604). 왜냐하면, 본 발명의 바람직한 실시예에 따른 EnBiT에서의 어드레스 검색은 인클로저들 중 가장 길게 일치하는 프리픽스를 찾는 것을 가정하기 때문에 어떤 입력된 어드레스가 새로이 추가된 프리픽스에만 일치한 경우에는 더 길게 매치하는 프리픽스가 없다는 것이 되므로, 추가된 프리픽스의 포워딩 램 포인터를 출력하면 될 것이기 때문이다. 따라서 새로이 추가된 프리픽스에도 일치하고, 새로이 추가된 프리픽스보다 더 긴 다른 인클로저 프리픽스에도 일치하는 경우에는 더 긴 인클로저의 서브 트리에서 검색이 진행될 것이다.
한편, 단계 S602의 판단 결과, 추가하려는 프리픽스가 다른 인클로저 프리픽스의 인클로저가 아닌 경우, 추가하려는 프리픽스가 다른 프리픽스의 인클로저인지 여부를 판단한다(S606). 단계 S606의 판단 결과, 추가하려는 프리픽스가 다른 프리픽스의 인클로저인 경우, 검색된 프리픽스만을 추가하려는 프리픽스의 서브 트리로 만들고 검색된 엔트리를 앞서 설명한 방식으로 제거한다(S608). 이는 서브 트리 내의 모든 프리픽스가 서로 디스조인트하기 때문이다. 그리고 추가하려는 프리픽스를 인클로저들의 집합에 추가한다(S610). 단계 S606의 판단 결과, 추가하려는 프리픽스가 다른 프리픽스의 인클로저가 아닌 경우, 발견된 프리픽스를 인클로저 집합에 추가하고 발견된 프리픽스가 포함되어 있는 트리에서 제거하며(S612), 추가하려는 프리픽스를 발견된 프리픽스의 서브 트리로 만든다(S614).
한편, 단계 S600의 판단 결과, 매치되는 프리픽스가 발견되지 않은 경우 즉, 추가하려는 프리픽스가 다른 모든 프리픽스에 디스조인트한 경우에는 추가하려는 프리픽스를 메인 트리의 새로운 리프 노드로서 추가한다(S616).
앞서 설명한 바와 같이 본 발명의 바람직한 실시예에 따른 EnBiT는 디스조인트 프리픽스들로만 구성된 작은 높이의 여러 개의 균형 트리를 구성하는 데이터 구조로서 검색과 갱신 면에서 모두 우수한 성능을 갖는다.
도 4에 도시된 바와 같이, 본 발명의 바람직한 제 1 실시예에서는 모든 인클로저 프리픽스를 루트 노드로 하고, 모든 루트 노드를 내용 주소화 메모리에 저장한다. 그런데 프리픽스의 개수가 10만 개 이상일 경우 7% 미만으로 인클로저가 생성된다 하더라도 7000여 개 정도의 엔트리를 갖는 내용 주소화 메모리를 칩 안에 내장하는데 부담이 될 수 있다. 이를 위해 본 발명의 바람직한 제 2 실시예에 따른 하드웨어 구조를 이용할 수 있다.
도 7은 본 발명의 바람직한 제 2 실시예에 따른 EnBiT를 구현하는 하드웨어 구조를 나타낸 도면이다. 특히, 도 7은 표 1에서 보인 프리픽스 예에 적용한 본 발명의 바람직한 제 2 실시예에 따른 하드웨어 구조이다.
본 발명의 바람직한 제 2 실시예에서는 내용 주소화 메모리에 첫 단계에서 생성된 인클로저들만을 저장하고, 어떤 인클로저의 서브 트리 내부에 존재하면서 또 다른 서브 트리를 형성하는 인클로저는 내용 주소화 메모리에 포함시키지 않는다. 이러한 인클로저의 서브 트리는 메모리 파이프라이닝에 포함시킬 수 있다. 도 7을 보면, 파이프라인의 m 이 표시된 곳에서 새로운 서브 트리가 출발함을 알 수 있다.
도 7의 구조는 인클로저 10*으로 시작하는 첫 번째 레벨 트리와, 인클로저 1011*로 시작하는 두 번째 레벨 트리, 그리고 인클로저 1011010*, 인클로저 1011001*과 인클로저 10110111*로 시작하는 3번째 레벨 트리가 존재하여 최대 3개 레벨의 서브 트리가 존재함을 알 수 있다.
도 4와 도 7을 비교하여 보면, 메인 트리의 경우는 같고, 도 4의 인클로저 10*의 서브 트리는 3개의 프리픽스로 구성되어 있는 데 반하여, 도 7의 서브 트리에는 4개의 프리픽스가 포함되어 있고 첫 번째 레벨 인클로저들의 트리에서 새로운 서브 트리가 출발함을 볼 수 있다.
도 8은 본 발명의 바람직한 제 2 실시예에 따른 IP 어드레스 검색 과정을 나타낸 순서도이다.
우선, 입력된 어드레스의 프리픽스와 내용 주소화 메모리에 저장되어 있는 인클로저 프리픽스를 비교한다(S800). 비교 결과, 매치되는 인클로저 프리픽스가 발견되는지를 판단하여(S802), 매치되는 인클로저 프리픽스가 발견되면 발견된 인클로저 프리픽스의 포워딩 램 포인터를 임시 저장한다(S804). 다음으로, 선택된 인클로저 프리픽스를 루트로 하는 서브 트리에서 이진 탐색을 이용한 어드레스 검색을 진행한다(S806). 서브 트리에서 새로이 매치되는 프리픽스가 있는지를 판단하여(S808), 서브 트리에서 새로이 매치되는 프리픽스가 있으면 매치된 프리픽스가 새로운 서브 트리를 가리키는 포인터를 가지는지를 판단한다(S810). 판단 결과, 매치된 프리픽스가 새로운 서브 트리를 가리키는 포인터를 가지면, 새로운 서브 트리에서 검색을 진행한다. 이 과정은, 새로운 서브 트리를 포함하지 않는 노드, 즉 디스조인트 노드를 만날 때까지 계속된다. 한편, 서브 트리에서 새로이 매치되는 프리픽스가 없거나, 새로이 매치되는 프리픽스는 발견되었으나 발견된 프리픽스가 서브 트리 포인터를 가지지 않으면, 최종으로 발견된 프리픽스의 포워딩 램 포인터를 출력한다(S812). 이 때, 단계 S806의 검색 결과, 단계 S802에서 발견된 인클로저 프리픽스를 루트 노드로 하는 서브 트리에서 새로이 매치되는 프리픽스가 없는 경우에는 단계 S804에서 임시 저장한 포워딩 램 포인터가 출력될 것이다.
한편, 단계 S802의 검색 결과, 입력된 어드레스가 어떤 인클로저와도 매치하지 않는 경우에는 디스조인트 프리픽스들로만 구성된 메인 트리로 이동하여 이진 탐색을 진행한다(S814). 메인 트리에서 매치되는 프리픽스가 있는지 판단하여(S816), 매치되는 프리픽스가 있으면 발견된 프리픽스의 포워딩 램 포인터를 출력한 후 조기에 검색을 종료한다(S810). 메인 트리 전체를 검색하였으나 매치되는 프리픽스가 없는 경우에는 디폴트(Default) 포워딩 램 포인터를 출력한다(S818).
한편, 전술한 바와 같은 본 발명의 바람직한 실시예에 따라, 어드레스 검색을 위한 프리픽스 리스트에서 인클로저 프리픽스를 검색하는 기능, 검색된 인클로저 프리픽스를 프리픽스 리스트로부터 제거하여 메인 트리 리스트를 생성하고, 검색된 인클로저 프리픽스가 포함된 인클로저 집합을 생성하는 기능, 인클로저 프리픽스 집합에 속한 한 개 이상의 인클로저 프리픽스마다 서브 트리 리스트를 생성하는 기능, 메인 트리 리스트 및 서브 트리 리스트에 포함되어 있는 한 개 이상의 프리픽스를 크기 별로 정렬하는 기능 및 메인 트리 리스트와 서브 트리 리스트에 포함되어 있는 한 개 이상의 프리픽스를 엔트리에 포함하여 메인 트리 및 한 개 이상의 서브 트리를 생성하는 기능 등은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 기록매체에 저장될 수도 있다.
이하, 본 발명의 바람직한 실시예에 따른 IP 어드레스 검색 방법 및 이를 위한 하드웨어 구조의 성능을 설명한다.
본 발명의 바람직한 실시예에 따른 하드웨어 구조를 C 언어와 Verilog 언어를 사용하여 MAE-WEST 라우터에서의 실제 데이터를 이용하여 성능을 실험해 보면, 종래의 이진 프리픽스 트리는 높이가 32인 거대한 트리로 생성된다. 이는 이진 프리픽스 구조의 문제점인 불균형 트리 구조에서 기인하는 것으로서, 파이프라인 단계의 수가 제한되지 않아 구현이 매우 어렵다.
본 발명의 바람직한 실시예에 따른 하드웨어 구조의 성능을 평가하기 위해 먼저 MAE-WEST 데이터를 분석한 결과, MAE-WEST 데이터에서의 프리픽스 분포는 표 2와 같다.
Number of enclosure prefix Number of Disjoint prefix Total prefix count
1st Level Tree 1,599 (5.40%) 19,001 (64.23%) 20,600
2nd Level Tree 312 (1.05%) 7,538 (25.48%) 7,850
3rd Level Tree 50 (0.17%) 941 (3.18%) 991
4th Level Tree 1 (0.01%) 140 (0.47%) 141
5th Level Tree 0 (0%) 2 (0.01%) 2
Total 1,962 (6.63%) 27,622 (93.37%) 29,584
표 2에서 알 수 있듯이 MAE-WEST 데이터의 경우 최대 5개 레벨의 서브 트리를 가지며, 전체 29,584개의 프리픽스 중에 메인 트리에 포함될 디스조인트 프리픽스는 총 19,001개로서 전체의 64.23%를 차지한다. 메인 트리에 들어가는 19,001개의 프리픽스들은 높이가 15인 트리로 구성되며 15 단계를 갖는 파이프라인 구조로 구현될 수 있다.
본 발명의 바람직한 제 1 실시예에 따른 하드웨어 구조의 경우, 필요로 하는 내용 주소화 메모리 엔트리의 개수는 인클로저 수의 합인 1,962개이고, 본 발명의 바람직한 제 2 실시예에 따른 하드웨어 구조인 경우에는 첫 번째 레벨의 인클로저 개수인 1,599개이다. 또한 실험을 통해 알아본 서브 트리의 최대 높이는, 본 발명의 바람직한 제 1 실시예에 따른 하드웨어 구조의 경우는 9, 본 발명의 바람직한 제 2 실시예에 따른 하드웨어 구조의 경우는 13으로 나왔다. 두 경우 모두 메인 트리의 높이인 15 안에 들어있음을 알 수 있다. 즉 본 발명의 바람직한 실시예에 따른 하드웨어 구조에서는 메인 트리에 들어가는 디스조인트 노드들의 수를 산출해 내면, 메인 트리의 균형 구조 성질로 인하여 전체 파이프라인 단계의 수를 산출해 낼 수 있다.
본 발명의 바람직한 실시예에 따른 하드웨어 구조에서 각 트리의 노드는, 프리픽스 길이를 표시하기 위한 5 bit, 프리픽스 그 자체를 저장하기 위한 32 bit, child를 가리키는 2개의 14 bit 포인터 (최대 214개의 노드를 가지는 트리가 형성되므로), 포워딩 램 포인터를 저장하기 위한 5 bit 등 도합 70 bit가 필요하다. 단 메인 트리의 리프인 경우에는 차일드를 가리키는 두 개의 포인터가 필요하지 않고, 본 발명의 바람직한 제 2 실시예에 따른 하드웨어 구조인 경우에는 현재의 노드로부터 새로운 서브 트리가 나오는 경우에 필요시되는 포인터가 추가된다.
본 발명의 바람직한 실시예에 따른 하드웨어 구조에서 요구되는 메모리의 크기를 메인 트리 중심으로 계산해 보면, 본 발명의 바람직한 제 1 실시예에 따른 하드웨어 구조의 경우, 19,001개의 메인 트리의 노드 중 내부(Internal) 노드가 214 -1 = 16,383개, 리프 노드가 2,618개이고, 서브 트리에 속하는 모든 노드는 내부 노드에 포함되므로 약 240 KB의 메모리가 요구된다.
표 3에는 메모리 액세스 횟수와 요구되는 메모리의 크기와 관련하여 본 발명의 바람직한 실시예에 따른 하드웨어 구조와 종래의 구조를 비교하였다.
Address Lookup Scheme Number of Memory Accesses(Minimum/Maximum) Forwarding Table Size
Huang's scheme 1/3 450KB ~ 470KB
DIR-24-8 1/2 33MB
DIR-21-3-8 1/3 9MB
Parallel Hashing 1/5 189 KB
Proposed Architecture 1/1 2000-entry CAM 240 KB SRAM
표 3에서 볼 수 있듯이 본 발명의 바람직한 실시예에 따른 하드웨어 구조는 메모리 액세스 횟수와 요구되는 메모리 크기에 있어 월등히 우수한 구조라고 할 수 있다. 또한 본 발명의 바람직한 실시예에 따른 하드웨어 구조의 모든 파이프라인 단계는 모두 같은 구조를 가지고 있어, 초고밀도 집적 회로(VLSI : Very Large Scale Integrated Circuit)로 설계하기에 매우 좋은 구조라고 할 수 있다.
도 9은 본 발명의 바람직한 제 3 실시예에 따른 EnBiT를 구현하는 하드웨어 구조를 나타낸 도면이다.
도 9a는 일반적인 인클로저와 인클로저의 서브-프리픽스들이 하나의 트리로 구성된 언밸런스된 구조의 트리를 본 발명에서 제안한 제 1실시예에 따라 여러 개의 밸런스 트리를 사용한 EnBiT(Enhanced Binary Tree)방식으로 변환한 것이다. 이러한 EnBiT(Enhanced Binary Tree)방식은 디스조인트 프리픽스들을 밸런스된 트리를 구성한 것으로, 트리구조에 파이프라인을 적용시켜 한번의 메모리 접근으로 어드레스 검색이 가능한 장점을 가지고 있으나 각 트리 깊이에 따르는 SRAM 사이즈가 라우팅 테이블의 프리픽스 분포 특성에 따라 결정되는 단점을 가지고 있다.
따라서, 본 발명의 바람직한 제 3실시예에서는 디스조인트 프리픽스들로 구성된 트리는 밸런스 트리를 구성하여 온전한 바이너리 검색이 가능하다는 점에서 착안하여, 여러 개의 밸런스 트리들을 하나의 메모리에 저장하여 각 트리마다 순차적인 바이너리 검색을 적용하는 방식을 제안한다. 이러한 방식은 밸런스 트리의 각 노드들에 노드의 차일드로 가는 포인터를 저장함 없이 메모리의 인덱스를 사용하여 바이너리 검색이 수행되므로 메모리 사용 효율이 매우 증가한다. 그러므로 캐쉬에 저장 될 수 있는 충분히 작은 사이즈의 메모리를 필요로 하고, 라우팅 테이블을 위한 메모리 크기가 프리픽스의 길이가 아닌 개수에 따라 결정되어 IPv6로의 전환이 용이하다. 검색 횟수도 N을 프리픽스의 갯수라 할 때, O(logkN)인 특징(바이너리 검색인 경우 k = 2)을 갖는데, Range Table을 사용하여 검색 범위를 줄인 경우 검색 횟수를 보다 줄일 수 있다. 제안하는 구조는 소프트웨어에 기반한 방식으로 일반 프로세서로 처리가능한 유연한 구조이다.
도 9b는 본 발명의 바람직한 제 3실시예에 따른 프리픽스 분류 방법을 도시한 것이다.
그림 9b는 그림 9a의 프리픽스들을 분류한 것으로서, 분류 결과 각 프리픽스에 대한 레벨과 타입(type) 정보를 얻을 수 있다. 프리픽스의 레벨은 프리픽스가 인클로저의 서브트리에 포함될 때 증가한다. 예를 들어 그림 9b의 01*은 첫번째 레벨 인클로저이고 0100*은 두번째 레벨 인클로저가 되며, 010011*는 세번째 레벨 디스조인트 프리픽스가 된다. 첫번째 레벨 인클로저와 첫번째 레벨 디스조인트 프리픽스는 메인트리를 구성하고, 두번째 레벨 디스조인트 프리픽스와 두번째 레벨 인클로저 프리픽스들은 첫번째 레벨 인클로저의 서브트리가 된다.
도 9c는 본 발명의 바람직한 제 3실시예에 의한 프리픽스 저장방식을 나타낸 것이다.
도 9b에서 분류된 프리픽스는 그림 9c의 메인 테이블에 저장된다. 프리픽스 중 첫번째 레벨의 인클로저 프리픽스와 디스조인트 프리픽스를 바이너리 검색이 가능하도록 크기순서대로 메인 테이블의 첫부분에 저장한다. 메인 테이블에 저장된 인클로저들은 각각의 서브트리를 가리키는 포인터와 서브 프리픽스의 개수에 대한 정보를 가지고 있다. 인클로저의 서브 트리 역시 크기 순서대로 메모리에 저장되고 서브프리픽스중 인클로저 프리픽스가 있는 경우 그 프리픽스는 다시 자신의 서브트리를 가리키는 포인터와 개수에 대한 정보를 갖는다. 디스조인트 프리픽스의 경우에는 서브트리에 대한 정보를 갖지 않는다. 그림 9c의 레인지 테이블은 메인테이블에 저장되는 프리픽스들의 처음 2 비트에 대한 정보를 담고 있는데, 처음 2 비트가 레인지 테이블의 메모리 인덱스에 해당하는 프리픽스의 갯수와 위치를 지정한다. 프리픽스의 처음 2비트는 레인지 테이블의 인덱스로 사용되므로, 메인 테이블에는 처음 2비트를 저장할 필요 없이 프리픽스의 나머지 부분만 저장하면 되며, 메인 테이블의 프리픽스에 괄호를 사용하여 표현하였다.
도 10은 본 발명의 바람직한 제 3 실시예에 따른 IP 어드레스 검색과정을 나타낸 순서도이다.
예를 들어 설명하면, 32 비트 IP 어드레스 검색을 위하여, 본 발명에서 제안하는 구조에서는 IPv4 프리픽스 중 가장 짧은 길이인 8 비트 인덱스를 갖는 레인지 테이블을 사용하였다. 제안하는 구조의 검색은 레인지 테이블에서 시작한다. 입력된 패킷의 목적하는 IP 어드레스의 처음 8bit을 레인지 테이블의 인덱스로 사용하여 레인지 테이블에서 메인 테이블의 검색 범위 정보를 얻게 되며, 그 범위에서 첫번째 레벨 인클로저 프리픽스와 디스조인트 프리픽스들 간의 바이너리 검색을 수행하고 매치하는 프리픽스를 찾는다. 매치하는 디스조인트 프리픽스를 찾은 경우 검색이 종료되는데, 첫번째 레벨 바이너리 검색에서 매치하는 디스조인트 프리픽스를 찾은 경우 해당 엔트리의 포워딩 램 포인터를 출력한 후 검색을 끝마치고, 매치하는 인클로저를 찾은 경우 인클로저의 포워딩 램 포인터를 저장한 후, 인클로저 서브트리로 이동하여 다시 바이너리검색을 수행하게 된다. 인클로저의 서브트리에서 매치하는 엔트리가 있는 경우 포워딩 램 포인터 값을 업데이트 하게 된다.
프리픽스들이 레벨별로 분리되어 메인트리 프리픽스와 서브트리 프리픽스로 구분되어 저장된 메인 테이블과 상기 메인트리 프리픽스에 대한 정보를 담고 있는 레인지 테이블로 구성되는 한 개 이상의 파이프라인 이진 트리에 본 발명의 IP 어드레스 검색 방법을 적용하면 다음과 같다.
먼저, 입력된 어드레스의 프리픽스의 초기 비트를 이용하여 레인지 테이블에서 메인테이블의 검색범위 정보를 찾는다(s902). 검색범위 정보에 해당하는 메인 테이블에서 첫 번째 레벨의 인클로저 프리픽스와 디스조인트 프리픽스에 대한 바이너리 검색을 하고(s904), 입력된 어드레스의 프리픽스와 매치가 발생하는 지의 여부를 확인한다(s906).
만약 s906단계의 비교 결과, 입력된 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색된 경우, 검색된 인클로저 프리픽스의 포워딩 포인터를 저장하고 매치된 인클로저의 서브트리에 대한 바이너리 검색을 하게 된다(s908). 그리고 매치된 인클로저 프리픽스를 루트 노드로 하는 서브 트리의 프리픽스를 검색하여 입력된 어드레스의 프리픽스와 비교한다(s910).
s910 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되고 검색된 상기 프리픽스가 인클로저 프리픽스이면(s912), 상기 인클로저 프리픽스의 포워딩 램 포인터를 저장하고, 상기 인클로저 프리픽스의 서브 트리에서 새로이 매치되는 상기 프리픽스를 검색하고 상기 어드레스의 프리픽스와 매치여부 및 매치된 프리픽스가 인클로저인지를 비교하며, 검색된 상기 프리픽스가 인클로저 프리픽스가 아니거나 상기 서브 트리에서 새로이 매치되는 프리픽스가 검색되지 않을 때까지 반복하게 된다.
s910 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되고 검색된 상기 프리픽스가 인클로저 프리픽스가 아니면(s912), 최종으로 검색된 상기 프리픽스의 포워딩 포인터를 저장하고 출력하게 된다.
s910 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되지 않으면, 최종으로 검색된 상기 프리픽스의 포워딩 포인터를 출력하게 된다.
s906 단계의 비교 결과, 매치되는 디스조인트 프리픽스가 검색된 경우(s914), 검색된 상기 프리픽스의 포워딩 포인터를 저장하고 출력하게 된다(s916, s920)
s906 단계의 비교 결과, 매치되는 디스조인트 프리픽스가 검색되지 않은 경우, 디폴트 포워딩 포인터를 저장하고 출력게 된다(s918, s920).
이때 각 단계에서 이루어지는 비교는 이진 검색(Binary Search) 방법을 이용하며, 한 개 이상의 상기 이진 트리의 각 레벨에 속하는 모든 노드는 하나의 메모리에 저장된다.
도 11은 본 발명의 바람직한 제 3 실시예에 따른 EnBiT에 프리픽스를 추가하는 과정을 나타내는 순서도이다.
본 발명에서 제안하는 구조는 업데이트를 위해 각각의 서브트리 사이에 일정 비율의 엔트리를 비워 놓음을 가정하였다. 또한 프리픽스의 처음 8bit은 메인 테이블에 저장하지 않으며, 메인 테이블 저장과 함께 레인지 테이블의 정보를 업데이트 시킨다. 예를 들어 0010* 프리픽스를 추가하고자 하는 경우 먼저 레인지 테이블을 통해 00으로 시작하는 프리픽스의 범위를 알아낸다. 0010*은 범위 안의 첫번째 레벨 인클로저, 디스조인트 프리픽스와 모두 디스조인트 관계이므로 크기순서에 맞춰 저장된다. 또한 00으로 시작하는 프리픽스가 추가되었으므로 레인지 테이블의 정보를 갱신 시킨다. 100*프리픽스를 추가하고자 하는 경우 100*은 10*의 서브 프리픽스이므로 10*의 서브트리로 이동한다. 10*의 서브 프리픽스들과 100*은 디스조인트 관계이므로 100*은 서브트리에 크기순서에 맞게 저장하고 메인 테이블의 정보를 갱신시킨다. 1100*을 삽입하는 경우 1100*은 첫번째 레벨 디스조인트 프리픽스인 110*의 서브프리픽스가 되므로 110*은 인클로저가 되고 1100*을 서브트리로 기억하게 된다. 1111*을 삽입하는 경우 1111*은 첫번째 레벨 디스조인트인 111101*과 1111110*을 서브프리픽스로 갖는 인클로저가 되므로 첫번째 레벨 인클로저로 저장되고 111101*과 1111110*은 두번째 레벨 디스조인트로 다시 저장된다.
보다 상세하게 설명하면, 현재 레벨을 1로 세팅하고 추가하려는 프리픽스와 메인 테이블의 첫 번째 레벨의 모든 프리픽스 및 첫 번째 레벨 인크로저 프리픽스의 서브트리를 검색한다(s952, s954). 그리고 추가하려는 프리픽스에 대하여 매치되는 프리픽스가 있는지 여부를 판단한다(s956).
s956 단계의 판단 결과, 매치되는 프리픽스가 발견된 경우, 매치되는 프리픽스가 인클로저 프리픽스 인지 여부를 판단한다(s958).
s958 단계의 판단 결과, 매치되는 상기 프리픽스가 인클로저 프리픽스인 경우, 레벨을 한단계 증가하여 레벨이 증가된 인클로저 프리픽스의 서브트리를 검색하고 추가하려는 프리픽스와의 매치 여부 및 매치된 프리픽스가 인클로저 프리픽스인지 여부를 판단하되, 매치되는 프리픽스가 발견되지 않거나 매치된 프리픽스가 인클로저 프리픽스가 아닐 때까지 검색을 반복한다(s960).
s956 단계의 판단 결과, 매치되는 프리픽스가 없으면, 현재 레벨의 프리픽스에 추가하려는 프리픽스를 추가하여 크기 순서에 따라 나열하고 저장한다(s962).
s958 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 프리픽스의 인클로저가 아닌 경우, 매치된 프리픽스와 추가하려는 프리픽스를 비교하여 짧은 길이의 프리픽스는 현재 레벨의 인클로저로 저장되고, 긴길이의 프리픽스는 레벨을 한단계 증가한 디스조인트 프리픽스로 저장한다(s964). 메인 테이블에 프리픽스가 추가되어 변경됨에 따라, 레인지 테이블을 갱신한다(s966).
이상의 설명은 본 발명을 예시적으로 설명한 것에 불과한 것으로, 본 발명이 속하는 기술분야에서 통상의 지식을 가지는 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 변형이 가능할 것이다. 따라서, 본 명세서에 개시된 실시예들은 본 발명을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 사상과 범위가 한정되는 것은 아니다. 본 발명의 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
이상에서 설명한 바와 같이 본 발명에 의하면, 이진 프리픽스 트리 구조가 갖는 최대 장점인 트리 내에 빈 노드가 없다는 점, 그리고 이진 탐색은 파이프라인을 사용하여 구현되어 질 수 있는 점 등을 살려서 메모리를 효율적으로 사용할 수 있게 한다는 장점이 있다. 또한, 최대 한 번의 내용 주소화 메모리 엑세스 또는 한 번의 메모리 엑세스를 통하여 어드레스 검색을 수행할 수 있는 실용적이면서도 우수한 구조를 제공한다.
한편, 본 발명의 바람직한 실시예에 따른 EnBiT는 테이블 갱신에도 매우 우수한 성질을 가지며, IPv6를 위해서도 쉽게 확장될 수 있는 장점을 갖는다. 30,000 여개의 라우트를 갖는 MAE-WEST를 통과한 실제 프리픽스의 분포를 가지고 실험한 결과, 전체 파이프라인 단계가 15인 구조가 생성되었고, 약 2000 여개의 엔트리를 갖는 내용 주소화 메모리와 15개의 메모리를 사용하였으며, 전체 필요한 메모리의 크기는 240 Kbyte로써 성능이 매우 우수한 어드레스 검색 방법 및 하드웨어 구조를 제공한다.
도 1은 수 개의 프리픽스들을 표현하는 트라이의 구조의 일예를 나타내는 도면,
도 2는 표 1에서 보인 프리픽스들을 이진 프리픽스 트리 구조로 생성한 도면,
도 3은 본 발명의 바람직한 실시예에 따른 파이프라인 구조의 적용예를 나타낸 도면,
도 4는 본 발명의 바람직한 제 1 실시예에 따른 EnBiT를 구현하는 하드웨어 구조를 나타낸 도면,
도 5는 본 발명의 바람직한 제 1 실시예에 따른 IP 어드레스 검색 과정을 나타낸 순서도,
도 6은 본 발명의 바람직한 실시예에 따른 EnBiT에 엔트리를 추가하는 과정을 나타낸 순서도,
도 7은 본 발명의 바람직한 제 2 실시예에 따른 EnBiT를 구현하는 하드웨어 구조를 나타낸 도면,
도 8은 본 발명의 바람직한 제 2 실시예에 따른 IP 어드레스 검색 과정을 나타낸 순서도이다.
도 9은 본 발명의 바람직한 제 3 실시예에 따른 EnBiT를 구현하는 하드웨어 구조를 나타낸 도면이다.
도 10은 본 발명의 바람직한 제 3 실시예에 따른 IP 어드레스 검색과정을 나타낸 순서도이다.
도 11은 본 발명의 바람직한 제 3 실시예에 따른 EnBiT에 프리픽스를 추가하는 과정을 나타내는 순서도이다.

Claims (39)

  1. 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법에 있어서,
    (a) 입력된 어드레스의 프리픽스와 상기 인클로저 프리픽스를 비교하는 단계;
    (b) 상기 (a) 단계의 비교 결과, 상기 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색된 경우, 검색된 상기 인클로저 프리픽스 중 상기 어드레스의 프리픽스와 비트 수가 가장 길게 매치되는 상기 인클로저 프리픽스의 포워딩 램 포인터를 임시 저장하는 단계;
    (c) 상기 어드레스의 프리픽스의 비트 수가 가장 길게 매치되는 상기 인클로저 프리픽스를 루트 노드로 하는 서브 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하는 단계;
    (d) 상기 (c) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색된 경우, 검색된 상기 프리픽스의 포워딩 램 포인터를 출력하는 단계;
    (e) 상기 (c) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되지 않은 경우, 상기 (b) 단계에서 임시 저장된 상기 포워딩 램 포인터를 출력하는 단계;
    (f) 상기 (a) 단계의 비교 결과, 상기 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색되지 않은 경우, 메인 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하는 단계;
    (g) 상기 (f) 단계의 비교 결과, 상기 메인 트리에서 매치되는 프리픽스가 검색된 경우, 검색된 상기 프리픽스의 포워딩 램 포인터를 출력하는 단계; 및
    (h) 상기 (f) 단계의 비교 결과, 상기 메인 트리에서 매치되는 프리픽스가 검색되지 않은 경우, 디폴트 포워딩 램 포인터를 출력하는 단계
    를 포함하는 것을 특징으로 하는 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  2. 제 1 항에 있어서,
    상기 단계 (a), 상기 단계 (c) 및 상기 단계 (f)에서의 상기 비교는 이진 검색(Binary Search) 방법을 적용하여 비교하는 것을 특징으로 하는 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  3. 제 1 항에 있어서,
    상기 메인 트리 및 서브 트리는 디스조인트 프리픽스만으로 구성되는 것을 특징으로 하는 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  4. 제 1 항에 있어서,
    한 개 이상의 상기 이진 트리의 각 깊이에 속하는 모든 노드는 각 깊이 별로 하나의 메모리에 저장되는 것을 특징으로 하는 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  5. 제 1 항에 있어서,
    상기 이진 트리의 각 깊이에서의 메모리 검색은 파이프라인 기법을 이용하여 수행되는 것을 특징으로 하는 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  6. 제 1 항에 있어서,
    한 개 이상의 상기 루트 노드는 내용 주소화 메모리(CAM : Content Addressable Memory)에 저장되는 것을 특징으로 하는 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  7. 제 1 항에 있어서,
    상기 루트 노드의 엔트리는 상기 프리픽스의 정보, 포워딩 램 포인터 및 서브 트리로 가는 포인터를 저장하는 것을 특징으로 하는 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  8. 제 1 항에 있어서,
    상기 루트 노드를 제외한 노드의 엔트리는 상기 프리픽스의 정보, 포워딩 램 포인터 및 상기 노드의 자식(Child) 노드로 가는 포인터를 저장하는 것을 특징으로 하는 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  9. 첫 레벨 인클로저 프리픽스만을 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법에 있어서,
    (a) 입력된 어드레스의 프리픽스와 상기 인클로저 프리픽스를 비교하는 단계;
    (b) 상기 (a) 단계의 비교 결과, 상기 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색된 경우, 상기 인클로저 프리픽스의 포워딩 램 포인터를 임시 저장하는 단계;
    (c) 상기 인클로저 프리픽스를 루트 노드로 하는 서브 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하는 단계;
    (d) 상기 (c) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되고 검색된 상기 프리픽스가 서브 트리 포인터를 가지면, 서브 트리 포인터가 가리키는 서브 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하되, 서브 트리 포인터를 가지지 않는 프리픽스가 검색될 때까지 반복하는 단계;
    (e) 상기 (d) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되고 검색된 상기 프리픽스가 상기 서브 트리 포인터를 가지지 않거나, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되지 않으면, 상기 (d) 단계에서 최종으로 검색된 상기 프리픽스의 포워딩 램 포인터를 출력하는 단계;
    (f) 상기 (c) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되지 않은 경우, 상기 (b) 단계에서 임시 저장된 상기 포워딩 램 포인터를 출력하는 단계;
    (g) 상기 (a) 단계의 비교 결과, 상기 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색되지 않은 경우, 메인 트리의 프리픽스와 상기 어드레스의 프리픽스를 비교하는 단계;
    (h) 상기 (g) 단계의 비교 결과, 상기 메인 트리에서 매치되는 프리픽스가 검색된 경우, 검색된 상기 프리픽스의 포워딩 램 포인터를 출력하는 단계; 및
    (i) 상기 (g) 단계의 비교 결과, 상기 메인 트리에서 매치되는 프리픽스가 검색되지 않은 경우, 디폴트 포워딩 램 포인터를 출력하는 단계
    를 포함하는 것을 특징으로 하는 첫 레벨 인클로저 프리픽스만을 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  10. 제 9 항에 있어서,
    상기 단계 (a), 상기 단계 (c), 상기 단계 (d) 및 상기 단계 (g)에서의 상기 비교는 이진 검색(Binary Search) 방법을 적용하여 비교하는 것을 특징으로 하는 첫 레벨 인클로저 프리픽스만을 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  11. 제 9 항에 있어서,
    상기 메인 트리 및 서브 트리는 디스조인트 프리픽스만으로 구성되는 것을 특징으로 하는 첫 레벨 인클로저 프리픽스만을 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  12. 제 9 항에 있어서,
    한 개 이상의 상기 이진 트리의 각 깊이에 속하는 모든 노드는 상기 각 깊이별로 하나의 메모리에 저장되는 것을 특징으로 하는 첫 레벨 인클로저 프리픽스만을 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  13. 제 9 항에 있어서,
    한 개 이상의 상기 루트 노드는 내용 주소화 메모리(CAM : Content Addressable Memory)에 저장되는 것을 특징으로 하는 첫 레벨 인클로저 프리픽스만을 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  14. 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조에 있어서,
    상기 한 개 이상의 이진 트리의 루트 노드를 저장하는 내용 주소화 메모리(CAM : Content Addressable Memory);
    상기 루트 노드를 제외한 노드를 저장하는 메모리; 및
    상기 인클로저 프리픽스를 루트 노드로 하여 메인 트리 및 서브 트리를 구성하고 입력된 어드레스의 프리픽스와 상기 메인 트리의 노드 및 상기 서브 트리의 노드에 포함되어 있는 프리픽스를 비교하여 상기 입력된 어드레스의 상기 검색을 수행하는 처리부
    를 포함하는 것을 특징으로 하는 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조.
  15. 제 14 항에 있어서,
    상기 메인 트리 및 서브 트리는 디스조인트 프리픽스만으로 구성되는 것을 특징으로 하는 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조.
  16. 제 14 항에 있어서,
    한 개 이상의 상기 이진 트리의 각 깊이에 속하는 모든 노드는 상기 각 깊이 별로 하나의 메모리에 저장되는 것을 특징으로 하는 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조.
  17. 제 14 항에 있어서,
    상기 이진 트리의 각 깊이에서의 메모리 검색은 파이프라인 기법을 이용하여 수행되는 것을 특징으로 하는 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조.
  18. 제 14 항에 있어서,
    상기 루트 노드의 엔트리는 상기 프리픽스의 정보, 포워딩 램 포인터 및 서브 트리로 가는 포인터를 저장하는 것을 특징으로 하는 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조.
  19. 제 14 항에 있어서,
    상기 루트 노드를 제외한 노드의 엔트리는 상기 프리픽스의 정보, 포워딩 램 포인터 및 상기 노드의 자식(Child) 노드로 가는 포인터를 저장하는 것을 특징으로 하는 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조.
  20. 제 14 항에 있어서,
    상기 내용 주소화 메모리는 상기 메인 트리의 루트 노드 및 한 개 이상의 상기 서브 트리의 루트 노드 중 첫 레벨 인클로저 프리픽스만을 루트 엔트리로 하고 있는 상기 서브 트리의 루트 노드를 포함하는 것을 특징으로 하는 인클로저 프리픽스를 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색을 위한 하드웨어 구조.
  21. IP 어드레스 검색을 위한 파이프라인 이진 트리를 생성하는 시스템에 있어서,
    (a) 상기 검색을 위한 프리픽스 리스트에서 인클로저 프리픽스를 검색하는 기능;
    (b) 검색된 상기 인클로저 프리픽스를 상기 프리픽스 리스트로부터 제거하여 메인 트리 리스트를 생성하고, 검색된 상기 인클로저 프리픽스가 포함된 인클로저 집합을 생성하는 기능;
    (c) 상기 인클로저 프리픽스 집합에 속한 한 개 이상의 상기 인클로저 프리픽스마다 서브 트리 리스트를 생성하는 기능;
    (d) 상기 메인 트리 리스트 및 상기 서브 트리 리스트에 포함되어 있는 한 개 이상의 상기 프리픽스를 크기 별로 정렬하는 기능;
    (e) 상기 메인 트리 리스트 및 상기 서브 트리 리스트에 포함되어 있는 한 개 이상의 상기 프리픽스를 엔트리에 포함하여 메인 트리 및 한 개 이상의 서브 트리를 생성하는 기능; 및
    (f) 상기 파이프라인 이진 트리에 엔트리를 추가, 제거 또는 갱신하는 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  22. 제 21 항에 있어서,
    상기 메인 트리 리스트 및 상기 서브 트리 리스트의 생성과 상기 정렬은 재귀적 서브루틴(Recursive Subroutine)을 사용하여 수행되는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  23. 제 21 항에 있어서,
    상기 메인 트리 및 서브 트리는 디스조인트 프리픽스만으로 구성되는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  24. 제 21 항에 있어서,
    상기 메인 트리 및 한 개 이상의 상기 서브 트리의 각 깊이에 속하는 모든 노드는 상기 각 깊이 별로 하나의 메모리에 저장되는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  25. 제 21 항에 있어서,
    상기 메인 트리 및 한 개 이상의 상기 서브 트리의 루트 노드는 내용 주소화 메모리(CAM : Content Addressable Memory)에 저장되는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  26. 제 21 항에 있어서,
    상기 이진 트리의 각 깊이에서의 메모리 검색은 파이프라인 기법을 이용하여 수행되는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  27. 제 21 항에 있어서,
    상기 루트 노드의 엔트리는 상기 프리픽스의 정보, 포워딩 램 포인터 및 서브 트리로 가는 포인터를 저장하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  28. 제 21 항에 있어서,
    상기 루트 노드를 제외한 노드의 엔트리는 상기 프리픽스의 정보, 포워딩 램 포인터 및 상기 노드의 자식(Child) 노드로 가는 포인터를 저장하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  29. 제 21 항에 있어서,
    상기 메인 트리의 루트 노드 및 한 개 이상의 상기 서브 트리의 루트 노드 중 첫 단계에서 생성된 인클로저 프리픽스를 루트 엔트리에 포함하고 있는 상기 서브 트리의 루트 노드는 내용 주소화 메모리(CAM : Content Addressable Memory)에 저장되는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  30. 제 21 항에 있어서,
    상기 파이프라인 이진 트리에 엔트리 추가시, 추가하려는 프리픽스를 인클로저로 하는 프리픽스가 발견되고 발견된 상기 프리픽스가 인클로저 프리픽스가 아닌 경우, 발견된 상기 프리픽스만을 추가하려는 상기 프리픽스의 서브 트리로 만들고 발견된 상기 프리픽스 엔트리를 제거하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  31. 제 21 항에 있어서,
    상기 파이프라인 이진 트리에 엔트리 추가시, 추가하려는 프리픽스를 인클로저로 하는 인클로저 프리픽스가 발견된 경우 인클로저의 집합에 추가하려는 상기 프리픽스 및 상기 프리픽스의 포워딩 램 포인터를 추가하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  32. 제 21 항에 있어서,
    상기 파이프라인 이진 트리에 엔트리 추가시, 추가하려는 프리픽스가 다른 모든 프리픽스에 디스조인트한 경우, 추가하려는 상기 프리픽스를 메인 트리의 새로운 리프로서 추가하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  33. 제 21 항에 있어서,
    상기 파이프라인 이진 트리의 엔트리 제거는, 제거하고자 하는 프리픽스를 검색한 후 상기 프리픽스의 포워딩 램 포인터가 무효함을 표시하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  34. IP 어드레스 검색을 위해 생성된 파이프라인 이진 트리에 엔트리를 추가하는 방법에 있어서,
    (a) 추가하려는 프리픽스와 매치되는 프리픽스가 있는지 여부를 판단하는 단계;
    (b) 상기 (a) 단계의 판단 결과, 매치되는 프리픽스가 발견된 경우, 추가하려는 상기 프리픽스가 다른 인클로저 프리픽스의 인클로저인지 여부를 판단하는 단계;
    (c) 상기 (b) 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 인클로저 프리픽스의 인클로저인 경우, 인클로저의 집합에 추가하려는 상기 프리픽스 및 포워딩 램 포인터를 추가하는 단계;
    (d) 상기 (b) 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 인클로저 프리픽스의 인클로저가 아닌 경우, 추가하려는 상기 프리픽스가 다른 프리픽스의 인클로저인지 여부를 판단하는 단계;
    (e) 상기 (d) 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 프리픽스의 인클로저인 경우, 발견된 상기 프리픽스만을 추가하려는 상기 프리픽스의 서브 트리로 만들고, 발견된 상기 프리픽스 엔트리를 제거하고, 추가하려는 상기 프리픽스를 상기 인클로저 집합에 추가하는 단계;
    (f) 상기 (d) 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 프리픽스의 인클로저가 아닌 경우, 발견된 상기 프리픽스를 상기 인클로저 집합에 추가하고 발견된 상기 프리픽스가 포함되어 있는 트리에서 제거하며, 추가하려는 상기 프리픽스를 발견된 상기 프리픽스의 서브 트리로 만드는 단계; 및
    (g) 상기 (a) 단계의 판단 결과, 매치되는 프리픽스가 발견되지 않은 경우, 추가하려는 상기 프리픽스를 메인 트리의 새로운 리프 노드로서 추가하는 단계
    를 포함하는 것을 특징으로 하는 IP 어드레스 검색을 위해 생성된 파이프라인 이진 트리에 엔트리를 추가하는 방법.
  35. 제 34 항에 있어서,
    상기 엔트리 제거는 제거하고자 하는 프리픽스를 검색한 후 상기 프리픽스의 포워딩 램 포인터가 무효함을 표시하는 것을 특징으로 하는 IP 어드레스 검색을 위해 생성된 파이프라인 이진 트리에 엔트리를 추가하는 방법.
  36. 프리픽스들이 레벨별로 분리되어 메인트리 프리픽스와 서브트리 프리픽스로 구분되어 저장된 메인 테이블과 상기 메인트리 프리픽스에 대한 정보를 담고 있는 레인지 테이블로 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법에 있어서,
    (a) 입력된 어드레스의 프리픽스의 초기 비트를 이용하여 레인지 테이블에서 메인테이블의 검색범위 정보를 찾는 단계;
    (b) 상기 검색범위 정보에 해당하는 메인 테이블에서 첫 번째 레벨의 인클로저 프리픽스와 디스조인트 프리픽스에 대한 바이너리 검색을 하여 비교하는 단계;
    (c) 상기 (b) 단계의 비교 결과, 상기 어드레스의 프리픽스와 매치되는 상기 인클로저 프리픽스가 검색된 경우, 검색된 인클로저 프리픽스의 포워딩 램 포인터를 저장하는 단계;
    (d) 상기 매치된 인클로저 프리픽스를 루트 노드로 하는 서브 트리의 프리픽스를 검색하여 상기 어드레스의 프리픽스와 비교하는 단계;
    (e) 상기 (d) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되고 검색된 상기 프리픽스가 인클로저 프리픽스이면, 상기 인클로저 프리픽스의 포워딩 램 포인터를 저장하고, 상기 인클로저 프리픽스의 서브 트리에서 새로이 매치되는 상기 프리픽스를 검색하고 상기 어드레스의 프리픽스와 매치여부 및 매치된 프리픽스가 인클로저인지를 비교하며, 검색된 상기 프리픽스가 인클로저 프리픽스가 아니거나 상기 서브 트리에서 새로이 매치되는 프리픽스가 검색되지 않을 때까지 반복하는 단계;
    (f) 상기 (d) 단계 또는 (e) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되고 검색된 상기 프리픽스가 인클로저 프리픽스가 아니면, 최종으로 검색된 상기 프리픽스의 포워딩 포인터를 저장하고 출력하는 단계;
    (g) 상기 (d) 단계 또는 (e) 단계의 비교 결과, 상기 서브 트리에서 새로이 매치되는 상기 프리픽스가 검색되지 않으면, 최종으로 검색된 상기 프리픽스의 포워딩 포인터를 출력하는 단계;
    (h) 상기 (b) 단계의 비교 결과, 매치되는 디스조인트 프리픽스가 검색된 경우, 검색된 상기 프리픽스의 포워딩 포인터를 저장하고 출력하는 단계; 및
    (i) 상기 (b) 단계의 비교 결과, 매치되는 디스조인트 프리픽스가 검색되지 않은 경우, 디폴트 포워딩 포인터를 저장하고 출력하는 단계
    를 포함하는 것을 특징으로 하는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  37. 제 36 항에 있어서,
    상기 단계 (b), 상기 단계 (d) 및 상기 단계 (e) 에서의 상기 비교는 이진 검색(Binary Search) 방법을 적용하여 비교하는 것을 특징으로 하는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  38. 제 36 항에 있어서,
    한 개 이상의 상기 이진 트리의 각 레벨에 속하는 모든 노드는 하나의 메모리에 저장되는 것을 특징으로 하는 첫 레벨 인클로저 프리픽스만을 루트 노드로 하여 구성되는 한 개 이상의 파이프라인 이진 트리를 이용한 IP 어드레스 검색 방법.
  39. 프리픽스들이 레벨별로 분리되어 메인트리 프리픽스와 서브트리 프리픽스로 구분되어 저장된 메인 테이블과 상기 메인트리 프리픽스에 대한 정보를 담고 있는 레인지 테이블로 구성되는 파이프라인 이진 트리에 엔트리를 추가하는 방법에 있어서,
    (a) 추가하려는 프리픽스와 메인 테이블의 첫 번째 레벨의 모든 프리픽스 및 첫 번째 레벨 인클로저 프리픽스의 서브트리에 대하여 매치되는 프리픽스가 있는지 여부를 판단하는 단계;
    (b) 상기 (a) 단계의 판단 결과, 매치되는 프리픽스가 발견된 경우, 매치되는 프리픽스가 인클로저 프리픽스 인지 여부를 판단하는 단계;
    (c) 상기 (b) 단계의 판단 결과, 매치되는 상기 프리픽스가 인클로저 프리픽스인 경우, 레벨을 한단계 증가하여 레벨이 증가된 인클로저 프리픽스의 서브트리를 검색하고 추가하려는 프리픽스와의 매치 여부 및 매치된 프리픽스가 인클로저 프리픽스인지 여부를 판단하되, 매치되는 프리픽스가 발견되지 않거나 매치된 프리픽스가 인클로저 프리픽스가 아닐 때까지 검색을 반복하는 단계;
    (d) 상기 (a) 단계 또는 (c) 단계의 판단 결과, 매치되는 프리픽스가 없으면, 현재 레벨의 프리픽스에 추가하려는 프리픽스를 추가하여 크기 순서에 따라 나열하고 저장하는 단계;
    (e) 상기 (b) 단계 또는 (c) 단계의 판단 결과, 추가하려는 상기 프리픽스가 다른 프리픽스의 인클로저가 아닌 경우, 매치된 프리픽스와 추가하려는 프리픽스를 비교하여 짧은 길이의 프리픽스는 현재 레벨의 인클로저로 저장되고, 긴길이의 프리픽스는 레벨을 한단계 증가한 디스조인트 프리픽스로 저장하는 단계
    (f) 메인 테이블에 프리픽스가 추가되어 변경됨에 따라, 레인지 테이블을 경신하는 단계
    를 포함하는 것을 특징으로 하는 파이프라인 이진 트리에 프리픽스를 추가하는 방법.
KR1020040082326A 2003-10-15 2004-10-14 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체 KR100586461B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020030071928 2003-10-15
KR20030071928 2003-10-15

Publications (2)

Publication Number Publication Date
KR20050036794A true KR20050036794A (ko) 2005-04-20
KR100586461B1 KR100586461B1 (ko) 2006-06-08

Family

ID=34510879

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040082326A KR100586461B1 (ko) 2003-10-15 2004-10-14 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체

Country Status (2)

Country Link
US (1) US20050083937A1 (ko)
KR (1) KR100586461B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100920107B1 (ko) * 2008-02-18 2009-10-01 연세대학교 산학협력단 Ip 주소의 검색 방법 및 장치
US7751346B2 (en) 2005-12-01 2010-07-06 Electronics And Telecommunications Research Institute Apparatus for searching TCP and UDP sockets

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392612B2 (en) * 2003-12-24 2013-03-05 Apple Inc. Replication server selection method
US7551609B2 (en) * 2005-10-21 2009-06-23 Cisco Technology, Inc. Data structure for storing and accessing multiple independent sets of forwarding information
US8838558B2 (en) * 2007-08-08 2014-09-16 Hewlett-Packard Development Company, L.P. Hash lookup table method and apparatus
US8144705B1 (en) * 2008-03-17 2012-03-27 Juniper Networks, Inc. Systems and methods for recursively accessing a multi-bank SRAM
KR100962653B1 (ko) * 2008-07-24 2010-06-11 이화여자대학교 산학협력단 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치
US7986696B1 (en) 2009-02-12 2011-07-26 Compass Electro-Optical Systems Method and apparatus for longest prefix matching
US8468220B2 (en) * 2009-04-21 2013-06-18 Techguard Security Llc Methods of structuring data, pre-compiled exception list engines, and network appliances
US9894093B2 (en) 2009-04-21 2018-02-13 Bandura, Llc Structuring data and pre-compiled exception list engines and internet protocol threat prevention
US9049157B1 (en) * 2009-08-16 2015-06-02 Compass Electro-Optical Systems Ltd Method and device for improving scalability of longest prefix match
US9680747B2 (en) * 2012-06-27 2017-06-13 Futurewei Technologies, Inc. Internet protocol and Ethernet lookup via a unified hashed trie
CN102904812B (zh) * 2012-09-29 2015-07-29 华为技术有限公司 路由表项的存储方法、查找方法、装置及系统
EP2849099B1 (en) * 2013-09-11 2021-07-28 Dassault Systèmes A computer-implemented method for designing an industrial product modeled with a binary tree.
US9602407B2 (en) 2013-12-17 2017-03-21 Huawei Technologies Co., Ltd. Trie stage balancing for network address lookup
US9692727B2 (en) * 2014-12-02 2017-06-27 Nicira, Inc. Context-aware distributed firewall
WO2017113282A1 (zh) * 2015-12-31 2017-07-06 富士通株式会社 网络消息通知装置、方法以及通信系统
CN107347035B (zh) * 2016-05-06 2020-05-08 华为技术有限公司 路由查找方法、装置、分配节点、查找节点及入口节点
US10193862B2 (en) 2016-11-29 2019-01-29 Vmware, Inc. Security policy analysis based on detecting new network port connections
CN106940708A (zh) * 2017-01-23 2017-07-11 北京思特奇信息技术股份有限公司 一种基于二分查找法实现ip范围定位的方法及系统
US11588734B2 (en) * 2020-04-28 2023-02-21 Pensando Systems Inc. Systems for providing an LPM implementation for a programmable data plane through a distributed algorithm
US11093169B1 (en) * 2020-04-29 2021-08-17 EMC IP Holding Company LLC Lockless metadata binary tree access
US11258707B1 (en) * 2020-08-21 2022-02-22 Pensando Systems Inc. Systems for building data structures with highly scalable algorithms for a distributed LPM implementation
CN115396395B (zh) * 2022-08-25 2023-05-12 北京发现角科技有限公司 确定ip地址的地理位置的方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10276225A (ja) 1997-03-31 1998-10-13 Kawasaki Steel Corp ネットワーク中継器
US6067574A (en) * 1998-05-18 2000-05-23 Lucent Technologies Inc High speed routing using compressed tree process
JP3970448B2 (ja) 1998-12-21 2007-09-05 株式会社日立製作所 情報中継方法および装置
KR20010019620A (ko) * 1999-08-28 2001-03-15 서평원 이진 연결 리스트를 이용한 데이터 검색 방법
KR100310288B1 (ko) * 1999-12-24 2001-09-28 오길록 라우터 시스템에서의 파이프 라인 룩업 처리를 위한포워딩 엔진장치
JP3591426B2 (ja) 2000-05-30 2004-11-17 日本電信電話株式会社 プレフィックスを含む複数アドレスによる連想情報探索方法及び装置
US6917954B2 (en) * 2001-05-30 2005-07-12 Mosaid Technologies, Inc. Load balancing in IP address lookup
US6985483B2 (en) * 2001-07-31 2006-01-10 North Carolina State University Methods and systems for fast packet forwarding
KR100413528B1 (ko) * 2001-11-30 2004-01-03 한국전자통신연구원 Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체
US7899067B2 (en) * 2002-05-31 2011-03-01 Cisco Technology, Inc. Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
US6934252B2 (en) * 2002-09-16 2005-08-23 North Carolina State University Methods and systems for fast binary network address lookups using parent node information stored in routing table entries
US7233579B1 (en) * 2002-12-20 2007-06-19 Nortel Networks Limited Routing table for forwarding Internet Protocol (IP) packets through a communications network

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7751346B2 (en) 2005-12-01 2010-07-06 Electronics And Telecommunications Research Institute Apparatus for searching TCP and UDP sockets
KR100920107B1 (ko) * 2008-02-18 2009-10-01 연세대학교 산학협력단 Ip 주소의 검색 방법 및 장치

Also Published As

Publication number Publication date
US20050083937A1 (en) 2005-04-21
KR100586461B1 (ko) 2006-06-08

Similar Documents

Publication Publication Date Title
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
US9672234B2 (en) Database and database processing methods
EP1168723B1 (en) Method and apparatus for longest matching prefix determination in a communication network
JP4452183B2 (ja) プログラマブル状態マシンのデータ構造を作成して入力単語連鎖を構文解析する方法、プログラマブル状態マシンのデータ構造を使用して入力単語連鎖に対応する結果として得られた値を検索する方法、ワイヤスピードのディープ・パケット処理を行う方法、ディープ・パケット処理のための装置、チップ埋め込み装置、およびプログラミング・コード命令を含むコンピュータ・プログラム(ディープ・パケット処理のための方法および装置)
US7356033B2 (en) Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
US6633548B2 (en) Method and apparatus for ternary content addressable memory (TCAM) table management
US7715385B2 (en) Default route coding
US20030174717A1 (en) System and method for longest prefix match for internet protocol lookup
Pao et al. Efficient hardware architecture for fast IP address lookup
KR101434065B1 (ko) 최장 프리픽스 매치의 확장성을 개선하기 위한 방법 및 장치
US20170366459A1 (en) Jump on a Match Optimization for Longest Prefix Match using a Binary Search Tree
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
US20040044868A1 (en) Method and apparatus for high-speed longest prefix match of keys in a memory
Veeramani et al. Efficient IP lookup using hybrid trie-based partitioning of TCAM-based open flow switches
KR100662254B1 (ko) 라우팅 시스템에서의 패킷 분류 장치 및 이를 위한 룰 구축 방법
KR100686732B1 (ko) 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
KR101587756B1 (ko) 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법
KR100420957B1 (ko) 클래스 분할 기법을 이용한 라우팅 테이블 자료구조,라우팅 테이블을 이용한 라우팅 경로 검색방법 및 장치
KR100364433B1 (ko) 비트-벡터 테이블을 이용한 ip 주소 검색방법
JP3660311B2 (ja) テーブル検索装置および方法およびプログラムおよび記録媒体
KR100814077B1 (ko) 우선순위 트라이를 이용한 ip 주소 검색 방법 및 이를제공하는 패킷 중계 장치
Erdem et al. Value-coded trie structure for high-performance IPv6 lookup
KR100560420B1 (ko) 트라이를 이용한 인터넷 프로토콜 주소 검색 방법
KR100378599B1 (ko) 주소 메모리 블록의 간섭 인덱싱에 기반한 라우팅 테이블검색 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130503

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140512

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150522

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20161115

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee