KR20020059238A - 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된다중탐색 트리 구조의 자료를 탐색하는 방법 - Google Patents

다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된다중탐색 트리 구조의 자료를 탐색하는 방법 Download PDF

Info

Publication number
KR20020059238A
KR20020059238A KR1020010085728A KR20010085728A KR20020059238A KR 20020059238 A KR20020059238 A KR 20020059238A KR 1020010085728 A KR1020010085728 A KR 1020010085728A KR 20010085728 A KR20010085728 A KR 20010085728A KR 20020059238 A KR20020059238 A KR 20020059238A
Authority
KR
South Korea
Prior art keywords
node
key
pointer
information
address
Prior art date
Application number
KR1020010085728A
Other languages
English (en)
Other versions
KR100488414B1 (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 KR20020059238A publication Critical patent/KR20020059238A/ko
Application granted granted Critical
Publication of KR100488414B1 publication Critical patent/KR100488414B1/ko

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/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

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

Abstract

본 발명은 다중탐색 트리를 구성하는 노드 생성 방법과, 그러한 방법에 의해 생성된 노드 구조를 갖는 다중탐색 트리를 탐색하는 방법과, 상기 각 방법들을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
본 발명은, 다중탐색 트리에서 한 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 포인터는 1개만 사용하도록 함으로써 [키 + 키 포인터 + 노드 포인터]가 하나의 캐시라인에 수용되도록 하는 다중탐색 트리의 노드 생성 방법을 제공한다.
또한, 본 발명은 다중탐색 트리에서 한 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 포인터는 1개만 사용하도록 함으로써 한번에 엑세스 가능한 디스크 블록 내에 원하는 만큼의 많은 노드를 포함시킬 수 있으며 어드레스 탐색시의 수용가능한 분기수를 확장하고 탐색작업을 고속화함은 물론, 메인 메모리의 소요 용량을 줄일 수 있도록 하는 다중탐색 트리 구조의 자료를 탐색하는 방법을 제공한다.

Description

다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료를 탐색하는 방법{Node Structuring Method for multiway search tree, and Searching Method by using it}
본 발명은 라우터 시스템 등에서 이용되는 다중탐색 트리를 생성하거나 또는 그에 의해 생성된 다중탐색 트리 구조의 자료를 탐색하는 기술에 관한 것으로, 보다 상세하게는 다중탐색 트리구조에서 트리의 깊이를 줄여 탐색을 고속화하고자 한 다중탐색 트리의 노드 생성 방법과, 그러한 방법에 의해 생성된 다중탐색 트리 구조의 자료를 탐색하는 방법, 및 상기 각 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
일반적인 기가비트용 라우터 시스템의 구조를 개략적으로 나타내면 도 1 과 같이 도시할 수 있다.
도 1을 참조하면, 인터페이스 블럭(14)은 패킷의 두가지 유형 즉, 시스템 내부에서 사용하기 위한 데이터 형태와, 링크(link)에서 사용하기 위한 데이터 형태 사이를 정합하는 기능을 수행한다.
포워딩엔진(FE: Forwarding Engine)(13)은 패킷 포워딩을 담당하는 기능부로서 수신된 패킷을 분류하고 가공하게 된다. 즉, 상기 포워딩 엔진(13)은 패킷의 목적지가 어느 곳인가를 알아내 어느 링크를 통해 내보내야 할지를 결정한다.
스위칭 페브릭(12)은 상기한 바와 같이 포워딩 엔진(13)에서 결정되는 정보를 이용하여 실제 링크로 데이터를 보내는 기능을 수행한다.
그리고 CPU(11)는 상기 스위칭 패브릭을 포함하여 라우터 시스템의 전반적인 제어를 당당하는 기능부로서, 라우팅 프로토콜을 수행한다.
본 발명에서는, 상기 라우터 시스템의 기능부들 중에서 포워딩 엔진에서 필요로 하는 어드레스 탐색과 관련된 유용한 기술이 제안된다.
어드레스 탐색은 어드레스가 사용되는 방법에 따라 완전정합(exact match)방법과 최대유효 정합방법(LPM : Longest Prefix Match) 등이 있다.
상기 완전 정합 방법은 이더넷(Ethernet) 맥(MAC : Medium Access Control) 어드레스와 같이 모든 어드레스의 비트가 일치하는 경우에 사용되고, 최대유효 정합방법은 찾고자 하는 키와 첫 번째 비트부터 가장 길게 일치하는 자료를 찾는 것으로 IPv4(Internet Protocal version 4) 등에 사용된다.
상기 최대유효 정합방법(LPM)에 대해 예를 들어 좀 더 상세히 설명한다. 우선, 입력된 도착 패킷의 IP 어드레스가 '1010101010'이라 가정한다. 이때, 그와 일치하는 자료를 찾기 위해 상기 최대유효 정합방법(LPM)을 이용하게 되면, 자료 구조 중에서 입력된 데이터와 가장 많이 일치하는 자료를 선택한다. 예컨대, 선택 대상으로서 '1011111111', '1010111111', '1010101011'가 있다면, 상기 입력된 데이터와 가장 많이 일치하는(앞부분 8비트가 일치함) '1010101011'를 선택하게 된다.
그러나, 이와 같이 최대유효 정합방법이용하여 탐색하는 경우에는 비교대상과 가장 길게 일치하는 것을 찾아야 하기 때문에 그 노드가 깊어짐에 따라 탐색시간이 길어지는 심각한 문제점을 내포하고 있다. 그리고, 이러한 문제를 해결하기 위해 가장 많이 사용되어온 방법이 패트리샤 트리(Patricia tree)이다.
도 2 내지 도 6 은 종래의 트리구조를 설명하기 위한 것이다.
도 2는 종래의 일반적인 바이너리 트리(Binary Tree) 구조에 대한 일실시예 설명도이다.
도 2는 바이너리 트리(Binary tree) 구조를 예시한 것이다. 바이너리 트리는 루트노드(201)를 기준으로 작은 값은 트리의 왼쪽에 배치하고(203), 큰 값은 트리의 오른쪽으로 배치하여(205) 만드는 것이다.
이러한 구조는 스트링을 저장하기 위한 일반적인 데이터 구조로서, 각 스트링은 트리구조에서 리프로 표시되고 스트링값은 트리의 루트(root: 최상위 계층 노드를 의미함)에서 리프(leaf: 자식노드를 가지지 않는 종단 노드를 의미함)에 이르는 경로(path)에 해당한다.
상기 바이너리 트리의 자료 구조를 살펴보면, 트리 구성시 부모보다 작은값은 부모의 왼쪽 자식으로, 그리고 부모보다 큰값은 부모의 오른쪽 자식으로 각각 구성한 것임을 알 수 있다.
이러한 방법으로 트리가 구성된 경우의 검색은 다음과 같이 이루어진다. 먼저 찾고자 하는 값이 현재 노드의 값과 일치하면 탐색이 완료되고, 찾고자 하는 값이 현재 노드의 값보다 크면 오른쪽 자식 노드로 이동하며, 현재 노드의 값보다 작으면 왼쪽 자식 노드로 이동한다. 이와같은 과정을 계속 반복하면 원하는 값을 검색할 수 있게 된다.
여기서, 바이너리 트리는, 루트 노드(root node)에서 시작하여 키의 각 비트의 값 '0', '1'에 따라 트리가 리프 노드(leaf node)를 만날 때까지 따라가는 형태로 형성되며, 이 형성 과정에서 만난 노드 중 가장 나중에 만난 표시가 되어있는 노드가 찾고자 하는 키와 일치되는 정보를 가지고 있는 노드가 된다.
그러나, 위와 같은 방식에 다르면, 바이너리 트리의 경우 키의 길이와 같은 횟수만큼의 노드를 액세스해야 하므로 그 경로 길이가 늘어나는 문제가 있다. 따라서, 바이너리 트리의 경로 길이(Path length)를 줄이기 위한 방법이 몇 가지 제안되었다.
이하에서 바이너리 트리의 경로 길이(Path length)를 줄이기 위한 방편으로 제시된 몇가지 트리 구조가 소개된다.
도 3은 상기 도 2에 도시된 바이너리 트리(Binary tree)에 대한 경로 압축을 실시한 패트리샤 트리(Patricia Tree)의 일실시예 구조도이다.
도 3을 참조하면, 노드의 수가 많아지더라도 루트에서 리프에 이르는 경로가 길어지는 문제점을 해결하기 위하여, 한 개의 자식만 가지는 노드(도 2의 207, 209 참조)는 제거하는 대신, 제거된 노드의 수를 알려주기 위한 생략 값(skip value)을 저장하도록 한다.
즉, 도 3에서 "skip=2,010"의 표기중 숫자 "2"는 해당 트리 구조에서 한 개의 자식만 있는 노드 2개가 제거 되었음을 의미한다, 그리고 "010"는 제거된 2개의노드 중 첫 번째 노드(도 2의 207 참조)는 생략이 시작된 P3로부터 왼쪽 자식(0)으로 위치하고, 상기 제거된 2개의 노드 중 두 번째 노드(도 2의 209 참조)는 상기 생략된 첫 번째 노드의 오른쪽 자식(1)으로 위치하며, 리프 노드인 P2가 상기 생략된 두 번째 노드의 왼쪽 자식(0)으로 위치함을 의미한다. 이 방법에 따르면, 결과적으로 루트에서 리프에 이르는 경로의 길이가 짧아지게 된다.
다시 말해서, 도 3에 도시된 패트리샤 트리(Patricia Tree)는 분기가 일어나지 않는 경로를 생략시킴으로써 바이너리 트리의 경로 압축(path compression)을 실행하며, 그를 통해 경로 길이를 줄이고자 한 것이다.
도 4는 종래의 일반적인 바이너리 트리(Binary Tree)에 대해 레벨 압축을 한 결과를 보여주는 예시도이다.
레벨 압축 트리는 바이너리 트리의 깊이(depth)를 줄임으로서 리프 노드에 도달하기 위하여 거치는 내부 노드의 수를 줄이는 것이다. 레벨 압축을 위해서는 자식 노드의 수가 2인 기존의 바이너리 트리의 노드에 있어서, 각각의 노드의 자식 수를 증가시킨다.
즉, 바이너리 트리에서는 자식의 수가 반드시 최대 2개이어야 하나, 레벨 압축 트리에서는 자식수를 늘리는 대신 "branching factor"라고 하는 정보를 저장하게 된다. 예컨데, 도 4에 도시된 "branching factor=3" 은 깊이가 3인 바이너리 트리를 압축했음을 표시한다.
상기한 바와 같은 도 4의 노드 축약 방법과 다른 방법으로서 'Lampson'의 다중 탐색 트리에 의한 방법이 알려져 있다.
도 5는 종래의 Lampson의 다중 탐색 트리의 일실시예 구조도이다.
'Lampson'은 찾고자 하는 키와 첫 번째 비트부터 가장 길게 일치하는 자료를 찾는 최대유효 정합방법이 적합하게 이용될 수 있는 인터넷 프로토콜(IP)에 도 5에 도시된 바와 같은 다중 탐색 트리(multiway search tree)를 적용하였다.
도 5 에 32바이트의 캐쉬 라인을 가지는 다중 탐색 트리가 예시되어 있다. 각 노드는 키(K1, K2...), 포인터(P0, P1, P2, ...) 및 키 포인터(PK1, PK2, ...)를 구비하고 있으며, 상기 각 노드는 32바이트로 구성되어 있다.
여기서, 'Lampson'이 다중 탐색 트리를 사용한 이유는 현대적인 프로세서 구조들이 일반적으로 취하는 계층적 메모리 구조를 최대한 활용하려는 것이다. 즉, 심화되는 메모리 속도와 프로세서 속도차를 극복하기 위해, 프로세서에 탑재되는 캐시가 점점 대용량화 되어가고 있다. 이러한 캐시의 동작을 살펴보면, 임의의 메모리 어드레스가 엑세스되면 이 메모리 어드레스를 포함하는 캐시라인 전체가 한꺼번에 프로세서의 캐시로 복사된다. 그리고 상기 캐시 내의 데이터는 해당 프로세서의 처리속도로 처리된다.
따라서, 상기 다중 탐색 트리를 이루는 각 노드를 각각 하나의 캐시라인 크기로 만들면 추가적으로 메인 메모리를 엑세스할 필요 없이 분기 수를 대폭 늘릴 수 있게 된다. 이러한 이유에서 다중 탐색 트리가 많이 이용되고 있다.
상기 다중 탐색 트리는 디스크와 메인 메모리 사이에서의 메모리 계층 구조를 고려하여 고안된 방법이다. 그리고, 디스크 메모리가 상대적으로 저속이고 메인 메모리가 상대적으로 고속인 점을 감안해서, 상기 디스크 메모리로부터 상기 메인메모리로 한꺼번에 읽어 들이는 디스크 블록을 이용함으로써 추가적인 저속의 디스크 엑세스가 배제되도록 한다. 이와 같은 방식으로, 한번에 엑세스 가능한 디스크 블록내의 분기 수를 고속으로 동작하는 상기 메인 메모리의 속도에 상응하게 증가시킬 수 있다. 이러한 다중 탐색 트리의 대표적인 예가 비트리(Btree)라 할 수 있다.
도 6은 일반적인 비트리(Btree)의 트리구조를 보여주는 일실시예 구조도이다.
비트리(Btree)는 바이너리 트리를 개량한 자료구조로서, 자료의 탐색이나 검색을 필요로 하는 알고리즘에 주로 사용된다. 상기 비트리(Btree)는 루트 노드부터 시작하여 해당 노드를 기준으로 하여 비교한 결과에 따라, 작은 값은 상기 노드의 왼쪽에, 그리고 큰 값은 상기 노드의 오른쪽에 각각 배치하는 점에서 앞서 설명한 바이너리 트리와 동일하다고 볼 수 있으나, 비트리(Btree)에서는 상기 바이너리 트리가 각 노드에 각각 하나의 키만 배치하는 점과 달리 하나의 노드에 복수의 키가 함께 배치될 수 있도록 하고 또한 한꺼번에 비교할 수 있도록 한다. 이와 같은 구조의 비트리(Btree)를 이용하면 바이너리 트리와 비교할 때 탐색 속도가 훨씬 빨라지고 트리의 깊이를 줄일 수 있는 이점이 있다.
상기한 바와 같은 비트리(Btree)는, 디스크에 저장된 데이터베이스를 엑세스하기 위한 인덱스 파일을 해당 디스크에 구성하는 경우에 일반적으로 이용되고 있다. 그런데 이때 데이터베이스를 엑세스하기 위한 키들이 문자열로 구성되기 때문에, 해당 노드에서 비교 결과에 따라 연결될 다음 노드를 가리키는 포인터의 길이에 비해 상대적으로 아주 많은 메모리를 차지하게 된다. 따라서, 한번에 엑세스 가능한 디스크 블록 내에 원하는 만큼의 많은 노드를 포함시킬 수 없게 되는 문제점이 있었다.
이에 본 발명은, 상기한 바와 같은 종래 기술의 문제점을 해결하기 위해 제안된 것으로, 다중탐색 트리에서 한 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 포인터는 1개만 사용하도록 함으로써 관련정보(키 + 키 포인터 + 노드 포인터)가 하나의 캐시라인에 수용되도록 하는 다중탐색 트리의 노드 생성 방법을 제공함에 그 목적이 있다.
또한, 본 발명은, 다중탐색 트리에서 한 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 포인터는 1개만 사용하도록 함으로써 관련정보가 하나의 캐시라인에 수용되도록 하는 다중탐색 트리의 노드 생성 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공함에 그 목적이 있다.
한편, 본 발명은 상기한 바와 같은 종래 기술의 문제점을 해결하기 위하여, 다중탐색 트리에서 한 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 포인터는 1개만 사용하도록 함으로써 관련정보가 하나의 캐시라인에 수용되도록 하여, 한번에 엑세스 가능한 디스크 블록 내에 원하는 만큼의 많은 노드를 포함시킬 수 있으며, 어드레스 탐색시의 수용가능한 분기수를 확장하고 탐색작업을 고속화함은 물론, 메인 메모리의 소요 용량을 줄일 수 있도록 하는 다중탐색 트리 구조의 자료를 탐색하는 방법을 제공함에 그 목적이 있다.
또한, 본 발명은 다중탐색 트리에서 한 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 포인터는 1개만 사용하도록 함으로써 관련정보가 하나의 캐시라인에 수용되도록 하여, 한번에 엑세스 가능한 디스크 블록 내에 원하는 만큼의 많은 노드를 포함시킬 수 있으며, 어드레스 탐색시의 수용가능한 분기수를 확장하고 탐색작업을 고속화함은 물론, 메인 메모리의 소요 용량을 줄일 수 있도록 하는 다중탐색 트리 구조의 자료를 탐색하는 방법을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공함에 그 목적이 있다.
도 1은 일반적인 기가비트 라우터 시스템의 구조를 설명하기 위한 개략도.
도 2는 종래의 일반적인 바이너리 트리(Binary Tree) 구조에 대한 일실시예 설명도.
도 3은 상기 도 2에 도시된 바이너리 트리(Binary tree)에 대한 경로 압축을 실시한 패트리샤 트리(Patricia Tree)의 일실시예 구조도.
도 4는 종래의 일반적인 바이너리 트리(Binary Tree)에 대한 레벨 압축을 한 결과를 보여주는 또다른 예시도.
도 5는 종래의 Lampson의 다중 탐색 트리의 일실시예 구조도.
도 6은 일반적인 비트리(Btree)의 트리구조를 보여주는 일실시예 구조도.
도 7은 본 발명에 따른 다중탐색 트리의 노드 생성 방법을 설명하기 위한 일실시예 노드 구조도.
도 8은 본 발명에 따른 상기 도 7과 같은 노드 구조에서의 노드 포인터에 대한 일실시예 상세 구조도.
도 9a 및 도 9b는 상기 도 7 및 도 8에 따른 본 발명의 다중탐색 트리 구조를 이해하기 쉽게 설명하기 위한 일실시예 설명도.
도 10은 본 발명에 따른 다중탐색 트리를 이용한 탐색 방법에 대한 일실시예 흐름도.
본 발명은 상기 첫 번째 목적을 달성하기 위하여, 다중탐색 트리의 한 노드에 수용되는 키가 다수개로 증가하더라도 탐색 속도가 감소되지 않도록 방지하기 위한 노드 생성 방법에 있어서, (a) 상기 각 노드에 적어도 하나의 키 정보를 할당하는 제 1 단계; 및 (b) 상기 각 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 관련 정보가 하나의 캐시라인에 수용되게 포인터 정보를 할당하는 제 2 단계를 포함하는 것을 특징으로 한다.
그리고, 상기한 바와 같은 노드 할당 방법에서의 관련정보는 키(개수) 정보, 키 포인터 정보, 및 노드 포인터 정보를 포함하며, 상기 제 2 단계가, (b-1) 상기 해당 노드에 할당된 다수개의 키 정보 중 첫번째 키 정보의 주소를 나타내는 키 포인터를 설정하는 제 3 단계; (b-2) 상기 다수개의 키 정보들 중 첫 번째 키 정보를 제외한 나머지 키 정보의 주소는 상기 키 포인터가 나타내는 주소로부터 상기 키 정보의 크기에 상응하는 간격으로 연속적(주기적)으로 배치시키는 제 4 단계; (b-3) 상기 해당 노드의 하부 노드(자식 노드) 중 첫번째 하부 노드의 주소를 나타내는 노드 포인터를 설정하는 제 5 단계; 및 (b-4) 상기 노드의 하부 노드 중 첫번째 하부 노드를 제외한 나머지 하부 노드의 주소는 상기 노드 포인터가 나타내는 주소로부터 상기 노드 정보의 크기에 상응하는 간격으로 연속적(주기적)으로 배치시키는 제 6 단계를 포함하는 것을 특징으로 한다.
또한, 상기 노드 포인터가 상기 노드가 가지는 키 정보의 수를 표시하는 키 정보 갯수 정보와, 상기 노드의 하부 노드 중 첫번째 하부 노드의 주소를 표시하는 하부 노드 위치 정보를 포함하는 것을 특징으로 한다.
한편, 본 발명은 상기 두 번째 목적을 달성하기 위하여, 다중탐색 트리의 한 노드에 수용되는 키가 다수개로 증가하더라도 탐색 속도가 감소되지 않도록 방지하는 다중탐색 트리를 구성하기 위하여, 프로세서를 구비한 라우팅 시스템에, (a) 상기 각 노드에 적어도 하나의 키 정보를 할당하는 제 1 기능; 및 (b) 상기 각 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 관련 정보가 하나의 캐시라인에 수용되게 포인터 정보를 할당하는 제 2 기능을 실현시키되, 상기 제 2 기능은, (b-1) 상기 해당 노드에 할당된 다수개의 키 정보 중 첫번째 키 정보의 주소를 나타내는 키 포인터를 설정하는 제 3 기능; (b-2) 상기 다수개의 키 정보들 중 첫 번째 키 정보를 제외한 나머지 키 정보의 주소는 상기 키 포인터가 나타내는 주소로부터 상기 키 정보의 크기에 상응하는 간격으로 연속적(주기적)으로 배치시키는 제 4 기능; (b-3) 상기 해당 노드의 하부 노드(자식 노드) 중 첫번째 하부 노드의 주소를 나타내는 노드 포인터를 설정하는 제 5 기능; 및 (b-4) 상기 노드의 하부 노드 중 첫번째 하부 노드를 제외한 나머지 하부 노드의 주소는 상기 노드 포인터가 나타내는 주소로부터 상기 노드 정보의 크기에 상응하는 간격으로 연속적(주기적)으로 배치시키는 제 6 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
한편, 본 발명은 상기 세 번째 목적을 달성하기 위하여, 다중탐색 트리의 한 노드에 수용되는 키가 다수개로 증가하더라도 탐색 속도가 감소되지 않도록 하기 위해, 상기 각 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 관련 정보가 하나의 캐시라인에 수용되게 포인터 정보를 할당하여 구성한 다중탐색 트리를 탐색하는 방법에 있어서, (a) 입력된 IP 주소와 해당 노드의 키 값을 비교하는 제 1 단계; (b) 상기 제 1 단계의 비교 결과 일치하면, 상기 노드에 포함된 키 포인터를 이용하여 출력점을 탐색하는 제 2 단계; 및 (c) 상기 제 1 단계의 비교결과 일치하지 않으면, 노드 포인트를 검색하여 노드의 종류를 판단하는 제 3 단계; (d) 상기 제 3 단계의 판단결과, 노드의 종류가 리프 노드이면, 키 비교 결과를 참조해서 어느 영역에서 일치하는지 파악하여 키 포인터를 구하여 출력점을 탐색하는 제 4 단계; 및 (e) 상기 제 3 단계의 판단결과, 노드의 종류가 리프 노드가 아니면, 상기 노드의 노드 포인터를 참조해서 다음 노드로 이동하여 상기 제 1 단계부터 반복하는 제 5 단계를 포함하는 것을 특징으로 한다.
그리고, 상기 다중탐색 트리 탐색 방법의 제 4 단계는, (d-1) 상기 제 1 단계의 키 비교 결과를 참조하여, 상기 입력된 IP 주소가 포함되는 상기 노드의 키값 영역을 찾는 제 6 단계; 및 (d-2) 상기 제 6 단계에서 찾은 상기 노드의 키값 영역에 해당하는 하드웨어 상에서 설정된 출력점을 검출하는 제 7 단계를 포함하는 것을 특징으로 한다.
한편, 본 발명은 상기 네 번째 목적을 달성하기 위하여, 다중탐색 트리의 한 노드에 수용되는 키가 다수개로 증가하더라도 탐색 속도가 감소되지 않도록 하기 위해, 상기 각 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 관련 정보가 하나의 캐시라인에 수용되게 포인터 정보를 할당하여 구성한 다중탐색 트리를 탐색하기 위하여, 프로세서를 구비한 탐색 시스템에, (a) 입력된 IP 주소와 해당 노드의 키 값을 비교하는 제 1 기능; (b) 상기 제 1 기능의 비교 결과 일치하면, 상기 노드에 포함된 키 포인터를 이용하여 출력점을 탐색하는 제 2 기능; (c) 상기 제 1 기능의 비교결과 일치하지 않으면, 노드 포인트를 검색하여 노드의 종류를 판단하는 제 3 단계; (d) 상기 제 3 기능의 판단결과, 노드의 종류가 리프 노드이면, 키 비교 결과를 참조해서 어느 영역에서 일치하는지 파악하여 키 포인터를 구하여 출력점을 탐색하는 제 4 기능; 및 (e) 상기 제 3 기능의 판단결과, 노드의 종류가 리프 노드가 아니면, 상기 노드의 노드 포인터를 참조해서 다음 노드로 이동하여 상기 제 1 단계부터 반복하는 제 5 기능을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
여기서 상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한설명을 통하여 보다 분명해 질 것이다. 이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
도 7은 본 발명에 따른 다중탐색 트리의 노드 생성 방법을 설명하기 위한 일실시예 노드 구조도이다. 본 발명의 다중탐색 트리를 이루는 각각의 노드는, 데이터 정보인 키(개수) 정보, 상기 다수개의 키 중 첫번째 키 정보의 주소를 나타내기 위한 지시 정보인 키 포인터(Kp) 정보, 및 상기 노드가 가지는 복수개의 하부 노드(자식 노드)중 첫번째 노드의 주소를 나타내기 위한 지시 정보인 노드 포인터(Po) 정보를 가진다.
도 7은 노드 구조를 비트리(Btree)에 적용하여 8웨이 탐색 트리(8-way search tree)를 구성한 일실시예 노드 구성예로서, 즉, 한 개의 노드는, 각각 32비트로 이루어진 7개의 키(K1 ~ K7)와 16비트로 이루어진 1개의 노드 포인터(Po) 및 16비트로 이루어진 키 포인터(Kp)로 총 32바이트로 구성되어 있다.
여기서, 노드 구성을 좀 더 상세히 살펴 보면, 각각 32비트로 이루어진 K1~K7 은 키의 값을 의미하고, 16비트로 이루어진 노드 포인터(Po)는 첫번째 노드의 위치를 나타내는 포인터이고, 그리고 16비트로 이루어진 키 포인터(Kp)는 첫번째 키의 위치를 나타내는 포인터이다.
예를 들면, "Kp=10000"라 함은 첫번째 키의 값인 K1이 있는 메모리 주소가 '10000'번지임을 의미하며, K2~K7까지의 키의 값은 '10000'번지와 연속되는 번지에 위치하게 된다.
동일한 방법으로 Po=20000 이라 함은 해당 노드의 자식 노드 중 첫번째 노드의 주소가 20000번지임을 의미하고, 본 발명의 실시예는 8웨이(way)이므로 다음부터 2, 3, 4, 5, 6, 7, 8번째까지의 노드는 20000 번지와 연속되는 메모리 주소를 가지게 된다. 참고로, 여기에 소개된 예시에서는 설명의 편의상 노드 포인터 주소들 사이의 오프셋이나 키 포인터 사이의 오프셋은 특별하게 정하지 아니하였으나, 이 점에 관하여는 본 발명 분야의 통상의 지식을 가진자라면 특별히 그에 관한 부연설명 없이도 충분히 실시가능한 것이므로 그에 관한 예시는 생략한다.
여기서, 키 포인터(Kp)는 노드의 첫번째 키에 해당하는 포인터를 나타내고 있는 값으로서, 분기노드의 경우 키 값과 일치되었을 때의 해당 포트 번호에 대한 정보를 나타내고, 분기노드가 아닌 경우에는, 최대유효 정합방법을 가능하게 하는 영역정보를 나타내게 된다.
도 8은 본 발명에 따른 상기 도 7과 같은 노드 구조에서의 노드 포인터에 대한 일실시예 상세 구조도이다.
도 8에 도시된 바와 같이, 노드 포인터(Po)는 키의 개수와 노드 주소에 대한 정보를 동시에 가지고 있다. 즉, MSB(most significant bit) 3비트는 노드에 포함된 키의 개수를 나타내며, LSB(least significant bit) 13비트는 트리의 하위레벨의 위치를 알려주는 포인터의 역할을 하게 된다.
이때, 포인터의 값이 모두 '1'이면 해당 노드가 리프노드를 나타낸다. 만약, 포인터의 값이 모두 '1'이 아니라면 루트노드(root node)이거나 분기노드(branch node)로서 다음 노드를 찾아가는 포인터로 사용한다.
예를 들면, LSB 13비트가 전부 '1'이면 트리의 제일 마지막, 즉 리프노드이므로 더 이상 검색할 필요가 없음을 의미한다. 반면, 전부 '1'이 아닐 경우에는 LSB 13비트의 값이 다음 노드의 값이 있는 메모리 주소를 나타낸다. 즉, LSB 13비트가 '0000111100001'이라면 현재의 노드가 리프노드가 아니며, 다음으로 찾아갈 노드의 주소는 메모리 번지 '0000111100001'라는 것을 의미한다.
도 9a 및 도 9b는 상기 도 7 및 도 8에 따른, 본 발명의 다중탐색 트리 구조를 이해하기 쉽게 설명하기 위한 일실시예 설명도이다.
도 9a는 탐색에 적용되는 7-웨이 탐색 트리(7-way search tree)의 예를 보여주고 있는데, 설명의 편의를 위하여 키 포인터(Kp)는 생략하였다.
도 9a의 노드 포인터(Po)는 MSB가 '110'이므로 키의 수가 6임을 알 수 있고, LSB가 '1111111111111'이므로 리프 노드임을 알 수 있다.
또한, 도 9a에 도시된 본 발명의 실시예가 '1*', '1001*' 및 '10100*'과 같이 3개의 프리픽스(prefix)로 구성되어 있다고 가정하면, 제시된 3개의 프리픽스(prefix)를 기준으로, 해당하는 범위의 키를 6개 생성한다. 이때, 생성되는 6개의 키는 '1*'으로부터 '100000'과 '111111', '1001*'로부터는 '100100'과 '100111', 그리고 '10100*'로부터는 '101000'과 '101111'이 각각 생성된다.
예를 들어, IP 주소가 '110000'인 패킷이 도착하였다고 가정하면, 입력된 IP 주소가 키(Key)와 일치되지 않으면서 생성된 트리에서 '101111'과 '111111'사이의 6번째 키 포인터에 해당되므로, 아래의 [수학식 1]에 의해 해당 키 포인터를 찾고, 그를 통해 IP의 포트 번호를 찾을 수 있다.
해당 키 포인터 = Kp + (하나의 키에 할당된 비트수 x 패킷의 위치)
반면에, 입력된 IP 주소가 키(Key)와 일치되면 해당 키 포인터는 Kp와 위치정보(N)에서 바로 구할 수 있다.
도 9b는 상기 도 9a에서와 같이 생성된 6개의 키 값을 기준으로 하여 트리 구조를 설명하기 위한 도면이다. 도면을 참조하면 최대유효 정합방법(Longest Prefix Matching)에 의한 탐색을 수행하기 위해 각 영역별로 포트 번호가 할당되어 있다.
여기서, 영역별로 포트 영역이 할당되는 있는 점에 대하여는, 이 것이 본 발명의 요지를 벗어나며, 하드웨어 간의 유기적인 연결에 의해 다이나믹하게 이루어지는 것이므로 구체적인 설명을 생략한다.
다만, 본 발명의 설명을 위해 임의로 도 9b와 같이 포트 영역이 구성되어 있다고 가정한다. 즉, '100100'에서 '100111' 사이의 영역은 P2 포트로 할당되고, '101000'에서 '101111' 사이의 영역은 P3 포트로 할당되며, 나머지 영역은 P1 포트로 할당된다.
도 9b에 도시된 본 발명의 실시예를 통해, 다중탐색 트리를 이용한 탐색 방법을 설명하면 다음과 같다. 우선, 루트 노드에부터 리프 노드까지 검색하여 일치하는 키를 찾으면 포트에 대한 정보를 구할 수 있다. 그리고, 리프 노드서 일치하는 키가 없으면 해당하는 범위를 확인하여 포트에 대한 정보를 찾을 수 있게 된다.
즉, 도 9b를 참조하면, 도착된 패킷의 IP 주소를 알면 해당 주소가 위치하는 영역의 포트를 알 수 있다. 예컨대, IP 주소가 '110000'인 패킷이 도착된 경우라면 이는 도면에서 '101111'과 '111111'사이의 영역에 존재하므로 P1 포트임을 알 수 있다.
도 10은 본 발명에 따른 다중탐색 트리를 이용한 탐색 방법에 대한 일실시예 흐름도이다.
우선, 탐색하고자 하는 IP 주소를 입력받아(101), 입력받은 IP 주소에 대한 탐색을 통하여 다중 노드를 읽은 다음, 다중 노드의 키 값을 탐색할 IP 주소와 비교한다(102).
상기 과정(102)에서 비교한 결과, IP주소와 다중 노드의 키 값이 일치할 경우에는 탐색 결과에 따른 키 포인터(Key pointer)를 이용하여 목표 주소지로 찾아가고(103), IP주소와 다중 노드의 키 값이 일치하지 않을 경우에는 노드 포인터의 값을 읽어(104), 해당 노드 포인터가 분기 노드인지 리프 노드인지를 판단한다(105).
상기 과정(105)에서 판단한 결과, 해당 노드 포인터가 리프노드일 경우에는 키 비교결과를 참조하여 키의 범위(영역)를 알아내고(106), 키 포인터(key pointer)를 계산하여 목표 주소지로 찾아간다(107).
한편, 상기 과정(105)에서 판단한 결과, 해당 노드 포인터가 분기 노드일 경우에는 다중 노드의 키가 해당하는 영역을 탐색하고(108), 다음 노드로 이동하기 위해 해당하는 노드 포인터를 이용해서 다음 노드 포인터를 계산하고 다음 노드로이동한 후(109), 키 값을 읽고 키 값들을 비교하는 과정(102)으로 진행하여, 최종으로 리프 노드에서 일치하는 키 값이 나오거나 리프 노드에 도달할 때까지 상기 탐색과정을 반복 수행한다.
상술한 바와 같은 본 발명의 다중탐색 트리 노드 생성 방법이나, 그에 따라 생성된 다중탐색 트리 구조의 자료를 탐색하는 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수도 있다.
이상에서 설명한 본 발명은 진술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위내에서 여러가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진자에게 있어 명백할 것이다.
상기한 바와 같은 본 발명에 따르면, 다중탐색 트리의 한 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 포인터는 1개만 사용하도록 함으로써 관련정보(키 정보, 키 포인터 정보, 노드 포인터 정보)가 하나의 캐시라인에 수용되도록 하여, 메인 메모리의 소요 용량을 줄일 수 있도록 하는 효과가 있을 뿐만아니라, 한번에 엑세스 가능한 디스크 블록 내에 원하는 만큼의 많은 노드를 포함시킬 수 있도록 하는 효과가 있다.
그리고, 어드레스 탐색시의 수용가능한 분기수를 확장하고 트리의 깊이를 줄여 탐색작업을 고속화함은 물론, 포워딩 엔진의 속도를 높일 수 있는 효과가 있다.
또한, 본 발명은 메모리가 절감되어 메모리 요구량이 작아진 부수 효과에 따라 2차 캐시에 들어가는 비율이 높아지게 되어 추가적인 속도 향상 효과를 얻을 수 있다.

Claims (14)

  1. 다중탐색 트리의 한 노드에 수용되는 키가 다수개로 증가하더라도 탐색 속도가 감소되지 않도록 방지하기 위한 노드 생성 방법에 있어서,
    (a) 상기 각 노드에 적어도 하나의 키 정보를 할당하는 제 1 단계; 및
    (b) 상기 각 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 관련 정보가 하나의 캐시라인에 수용되게 포인터 정보를 할당하는 제 2 단계
    를 포함하는, 다중탐색 트리를 구성하는 노드 생성 방법.
  2. 제 1 항에 있어서,
    상기 관련정보는 키(개수) 정보, 키 포인터 정보, 및 노드 포인터 정보를 포함하는 것을 특징으로 하는, 다중탐색 트리를 구성하는 노드 생성 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제 2 단계는,
    (b-1) 상기 해당 노드에 할당된 다수개의 키 정보 중 첫번째 키 정보의 주소를 나타내는 키 포인터를 설정하는 제 3 단계; 및
    (b-2) 상기 다수개의 키 정보들 중 첫 번째 키 정보를 제외한 나머지 키 정보의 주소는 상기 키 포인터가 나타내는 주소로부터 상기 키 정보의 크기에 상응하는 간격으로 연속적(주기적)으로 배치시키는 제 4 단계
    를 포함하는, 다중탐색 트리를 구성하는 노드 생성 방법.
  4. 제 3 항에 있어서,
    상기 제 2 단계는,
    (b-3) 상기 해당 노드의 하부 노드(자식 노드) 중 첫번째 하부 노드의 주소를 나타내는 노드 포인터를 설정하는 제 5 단계; 및
    (b-4) 상기 노드의 하부 노드 중 첫번째 하부 노드를 제외한 나머지 하부 노드의 주소는 상기 노드 포인터가 나타내는 주소로부터 상기 노드 정보의 크기에 상응하는 간격으로 연속적(주기적)으로 배치시키는 제 6 단계
    를 더 포함하는, 다중탐색 트리를 구성하는 노드 생성 방법.
  5. 제 2 항에 있어서,
    상기 노드 포인터는,
    상기 노드가 가지는 키 정보의 수를 표시하는 키 정보 갯수 정보와, 상기 노드의 하부 노드 중 첫번째 하부 노드의 주소를 표시하는 하부 노드 위치 정보를 포함하는 것을 특징으로 하는 다중탐색 트리를 구성하는 노드 생성 방법.
  6. 제 5 항에 있어서,
    상기 노드 포인터는,
    하부 노드가 존재하지 않는 리프 노드인 경우에, 상기 하부 노드 위치 정보의 값을 모두 '1'로 설정하는 것을 특징으로 하는 다중탐색 트리를 구성하는 노드 생성 방법.
  7. 제 3 항에 있어서,
    상기 저장된 다수개의 키 정보 중 첫번째 키 정보의 주소를 제외한 나머지 키 정보의 주소는 하기 [수학식]에 따라 배치되는 것을 특징으로 하는 다중탐색 트리를 구성하는 노드 생성 방법.
    [수학식]
    n번째 키의 주소 = 키 포인터(Kp)+(하나의 키에 할당된 비트수 * n)
    (단, n은 패킷의 위치를 의미함)
  8. 다중탐색 트리의 한 노드에 수용되는 키가 다수개로 증가하더라도 탐색 속도가 감소되지 않도록 하기 위해, 상기 각 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 관련 정보가 하나의 캐시라인에 수용되게 포인터 정보를 할당하여 구성한 다중탐색 트리를 탐색하는 방법에 있어서,
    (a) 입력된 IP 주소와 해당 노드의 키 값을 비교하는 제 1 단계;
    (b) 상기 제 1 단계의 비교 결과 일치하면, 상기 노드에 포함된 키 포인터를 이용하여 출력점을 탐색하는 제 2 단계; 및
    (c) 상기 제 1 단계의 비교결과 일치하지 않으면, 노드 포인트를 검색하여 노드의 종류를 판단하는 제 3 단계;
    (d) 상기 제 3 단계의 판단결과, 노드의 종류가 리프 노드이면, 키 비교 결과를 참조해서 어느 영역에서 일치하는지 파악하여 키 포인터를 구하여 출력점을 탐색하는 제 4 단계; 및
    (e) 상기 제 3 단계의 판단결과, 노드의 종류가 리프 노드가 아니면, 상기 노드의 노드 포인터를 참조해서 다음 노드로 이동하여 상기 제 1 단계부터 반복하는 제 5 단계
    를 포함하는 다중탐색 트리를 이용한 탐색 방법.
  9. 제 8 항에 있어서,
    상기 제 4 단계는,
    (d-1) 상기 제 1 단계의 키 비교 결과를 참조하여, 상기 입력된 IP 주소가 포함되는 상기 노드의 키값 영역을 찾는 제 6 단계; 및
    (d-2) 상기 제 6 단계에서 찾은 상기 노드의 키값 영역에 해당하는 하드웨어상에서 설정된 출력점을 검출하는 제 7 단계
    를 포함하는 다중탐색 트리를 이용한 탐색 방법.
  10. 제 8 항 또는 제 9 항에 있어서,
    상기 노드의 키값과 상기 입력된 IP 주소와의 비교는 최대 유효 정합 방법(Longest Prefix Matching)에 의하는 것을 특징으로 하는 다중탐색 트리를 이용한 탐색 방법.
  11. 다중탐색 트리의 한 노드에 수용되는 키가 다수개로 증가하더라도 탐색 속도가 감소되지 않도록 방지하는 다중탐색 트리를 구성하기 위하여, 프로세서를 구비한 라우팅 시스템에,
    (a) 상기 각 노드에 적어도 하나의 키 정보를 할당하는 제 1 기능; 및
    (b) 상기 각 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 관련 정보가 하나의 캐시라인에 수용되게 포인터 정보를 할당하는 제 2 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  12. 제 11 항에 있어서,
    상기 제 2 기능은,
    (b-1) 상기 해당 노드에 할당된 다수개의 키 정보 중 첫번째 키 정보의 주소를 나타내는 키 포인터를 설정하는 제 3 기능;
    (b-2) 상기 다수개의 키 정보들 중 첫 번째 키 정보를 제외한 나머지 키 정보의 주소는 상기 키 포인터가 나타내는 주소로부터 상기 키 정보의 크기에 상응하는 간격으로 연속적(주기적)으로 배치시키는 제 4 기능;
    (b-3) 상기 해당 노드의 하부 노드(자식 노드) 중 첫번째 하부 노드의 주소를 나타내는 노드 포인터를 설정하는 제 5 기능; 및
    (b-4) 상기 노드의 하부 노드 중 첫번째 하부 노드를 제외한 나머지 하부 노드의 주소는 상기 노드 포인터가 나타내는 주소로부터 상기 노드 정보의 크기에 상응하는 간격으로 연속적(주기적)으로 배치시키는 제 6 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  13. 다중탐색 트리의 한 노드에 수용되는 키가 다수개로 증가하더라도 탐색 속도가 감소되지 않도록 하기 위해, 상기 각 노드에서 사용하는 키의 개수에 관계없이 해당 노드에 기록되는 관련 정보가 하나의 캐시라인에 수용되게 포인터 정보를 할당하여 구성한 다중탐색 트리를 탐색하기 위하여, 프로세서를 구비한 탐색 시스템에,
    (a) 입력된 IP 주소와 해당 노드의 키 값을 비교하는 제 1 기능;
    (b) 상기 제 1 기능의 비교 결과 일치하면, 상기 노드에 포함된 키 포인터를 이용하여 출력점을 탐색하는 제 2 기능; 및
    (c) 상기 제 1 기능의 비교결과 일치하지 않으면, 노드 포인트를 검색하여 노드의 종류를 판단하는 제 3 단계;
    (d) 상기 제 3 기능의 판단결과, 노드의 종류가 리프 노드이면, 키 비교 결과를 참조해서 어느 영역에서 일치하는지 파악하여 키 포인터를 구하여 출력점을 탐색하는 제 4 기능; 및
    (e) 상기 제 3 기능의 판단결과, 노드의 종류가 리프 노드가 아니면, 상기 노드의 노드 포인터를 참조해서 다음 노드로 이동하여 상기 제 1 단계부터 반복하는 제 5 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  14. 제 13 항에 있어서,
    상기 제 4 기능은,
    (d-1) 상기 제 1 기능의 키 비교 결과를 참조하여, 상기 입력된 IP 주소가 포함되는 상기 노드의 키값 영역을 찾는 제 6 기능; 및
    (d-2) 상기 제 6 기능에서 찾은 상기 노드의 키값 영역에 해당하는 하드웨어 상에서 설정된 출력점을 검출하는 제 7 기능
    을 실현시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR10-2001-0085728A 2000-12-30 2001-12-27 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법 KR100488414B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020000087576 2000-12-30
KR20000087576 2000-12-30

Publications (2)

Publication Number Publication Date
KR20020059238A true KR20020059238A (ko) 2002-07-12
KR100488414B1 KR100488414B1 (ko) 2005-05-11

Family

ID=27690412

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0085728A KR100488414B1 (ko) 2000-12-30 2001-12-27 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법

Country Status (2)

Country Link
US (1) US7403494B2 (ko)
KR (1) KR100488414B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190111124A (ko) * 2017-02-09 2019-10-01 마이크론 테크놀로지, 인크. Kvs 트리
KR20190119080A (ko) * 2017-02-09 2019-10-21 마이크론 테크놀로지, 인크. 다중-스트림 저장 장치를 위한 스트림 선택
US11100071B2 (en) 2018-10-10 2021-08-24 Micron Technology, Inc. Key-value store tree data block spill with compaction
US11334270B2 (en) 2018-12-14 2022-05-17 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US11599552B2 (en) 2018-10-10 2023-03-07 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US11657092B2 (en) 2018-12-26 2023-05-23 Micron Technology, Inc. Data tree with order-based node traversal

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20050120037A1 (en) * 2002-07-16 2005-06-02 Fujitsu Limited Apparatus and method for managing network storage, and computer product
US7633886B2 (en) * 2003-12-31 2009-12-15 University Of Florida Research Foundation, Inc. System and methods for packet filtering
US7653619B1 (en) * 2004-07-23 2010-01-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that support variable tree height
US7603346B1 (en) * 2004-07-23 2009-10-13 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein
US7747599B1 (en) 2004-07-23 2010-06-29 Netlogic Microsystems, Inc. Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations
US8886677B1 (en) 2004-07-23 2014-11-11 Netlogic Microsystems, Inc. Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length
US7725450B1 (en) 2004-07-23 2010-05-25 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations
US7697518B1 (en) 2006-09-15 2010-04-13 Netlogic Microsystems, Inc. Integrated search engine devices and methods of updating same using node splitting and merging operations
US7987205B1 (en) * 2006-11-27 2011-07-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations
US7831626B1 (en) 2006-11-27 2010-11-09 Netlogic Microsystems, Inc. Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node
US8086641B1 (en) 2006-11-27 2011-12-27 Netlogic Microsystems, Inc. Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same
US7953721B1 (en) 2006-11-27 2011-05-31 Netlogic Microsystems, Inc. Integrated search engine devices that support database key dumping and methods of operating same
GB2452760A (en) * 2007-09-14 2009-03-18 Data Connection Ltd Storing and searching data in a database tree structure for use in data packet routing applications.
US9269182B2 (en) * 2008-09-05 2016-02-23 Nvidia Corporation System and method for identifying entry points of a hierarchical structure
US8407259B2 (en) * 2009-10-16 2013-03-26 Research In Motion Limited System and method for storing and retrieving data from storage
US8543648B1 (en) * 2010-12-13 2013-09-24 Imdb.Com, Inc. Efficiently finding collaborations on a network
US9460546B1 (en) 2011-03-30 2016-10-04 Nvidia Corporation Hierarchical structure for accelerating ray tracing operations in scene rendering
US20140222870A1 (en) * 2013-02-06 2014-08-07 Lei Zhang System, Method, Software, and Data Structure for Key-Value Mapping and Keys Sorting
CN104601471B (zh) * 2015-02-02 2017-12-01 华为技术有限公司 一种转发信息表的读写方法及网络处理器
US9680749B2 (en) 2015-02-27 2017-06-13 Arista Networks, Inc. System and method of using an exact match table and longest prefix match table as a combined longest prefix match
RU2622629C2 (ru) 2015-03-31 2017-06-16 Закрытое акционерное общество "Лаборатория Касперского" Способ поиска пути по дереву
US11010664B2 (en) * 2016-02-05 2021-05-18 Deepmind Technologies Limited Augmenting neural networks with hierarchical external memory
RU2623882C1 (ru) * 2016-02-18 2017-06-29 Акционерное общество "Лаборатория Касперского" Способ поиска входной строки в дереве поиска с индексацией узлов дерева поиска

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677550A (en) 1983-09-30 1987-06-30 Amalgamated Software Of North America, Inc. Method of compacting and searching a data index
JPS61141035A (ja) * 1984-12-14 1986-06-28 Hitachi Ltd デ−タ検索方式
US5497485A (en) * 1993-05-21 1996-03-05 Amalgamated Software Of North America, Inc. Method and apparatus for implementing Q-trees
CA2117846C (en) * 1993-10-20 2001-02-20 Allen Reiter Computer method and storage structure for storing and accessing multidimensional data
WO1995034155A2 (en) * 1994-06-06 1995-12-14 Nokia Telecommunications Oy A method for storing and retrieving data and a memory arrangement
JPH08223667A (ja) * 1995-02-17 1996-08-30 Sanyo Electric Co Ltd リモコン受信回路
SE510000C2 (sv) * 1997-07-21 1999-03-29 Ericsson Telefon Ab L M Struktur vid databas
US6553002B1 (en) * 1997-08-29 2003-04-22 Ascend Communications, Inc. Apparatus and method for routing data packets through a communications network
US6522632B1 (en) * 1998-05-06 2003-02-18 Avici Systems Apparatus and method for efficient prefix search
KR20000039983A (ko) * 1998-12-16 2000-07-05 김영환 지능망 에스시피 시스템의 데이터베이스 구현 방법
US6711562B1 (en) * 1999-12-01 2004-03-23 The Trustees Of Columbia University In The City Of New York Cache sensitive search (CSS) tree indexing system and method
WO2001040996A1 (en) * 1999-12-01 2001-06-07 The Trustees Of Columbia University In The City Of New York Cache sensitive search (css) tree indexing system and method
CA2393764A1 (en) * 1999-12-10 2001-06-14 Mosaid Technologies Incorporated Method and apparatus for longest match address lookup
KR100328129B1 (ko) * 1999-12-27 2002-03-12 오길록 메모리 계층 구조를 고려한 압축, 탐색 및 새로운 항목삽입 방법
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US6480839B1 (en) * 2000-07-18 2002-11-12 Go2Market.Com System and method for improving database data manipulation using direct indexing within a B*tree index having a tunable index organization
US6567815B1 (en) * 2000-08-01 2003-05-20 International Business Machines Corporation Technique of clustering and compaction of binary trees
US7031314B2 (en) * 2001-05-16 2006-04-18 Bytemobile, Inc. Systems and methods for providing differentiated services within a network communication system
US6711027B2 (en) * 2001-07-23 2004-03-23 Intel Corporation Modules having paths of different impedances

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190111124A (ko) * 2017-02-09 2019-10-01 마이크론 테크놀로지, 인크. Kvs 트리
KR20190119080A (ko) * 2017-02-09 2019-10-21 마이크론 테크놀로지, 인크. 다중-스트림 저장 장치를 위한 스트림 선택
US11100071B2 (en) 2018-10-10 2021-08-24 Micron Technology, Inc. Key-value store tree data block spill with compaction
US11599552B2 (en) 2018-10-10 2023-03-07 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US11334270B2 (en) 2018-12-14 2022-05-17 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US11657092B2 (en) 2018-12-26 2023-05-23 Micron Technology, Inc. Data tree with order-based node traversal

Also Published As

Publication number Publication date
US7403494B2 (en) 2008-07-22
KR100488414B1 (ko) 2005-05-11
US20030123397A1 (en) 2003-07-03

Similar Documents

Publication Publication Date Title
KR100488414B1 (ko) 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법
US6434144B1 (en) Multi-level table lookup
US6553002B1 (en) Apparatus and method for routing data packets through a communications network
JP5529976B2 (ja) 高速ipルックアップのためのシストリック・アレイ・アーキテクチャ
US6697363B1 (en) Method and apparatus for longest matching prefix determination in a communication network
US8880507B2 (en) Longest prefix match using binary search tree
CA2393760C (en) Method and apparatus for longest match address lookup
US6665297B1 (en) Network routing table
US6985483B2 (en) Methods and systems for fast packet forwarding
US20050243827A1 (en) Lookup engine
US20050171959A1 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
JP4995125B2 (ja) 固定長データの検索方法
JP5960863B1 (ja) 検索装置、検索方法、プログラム、及び記録媒体
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
CA2303118A1 (en) Method and system for fast routing lookups
Bahrambeigy et al. Bloom-Bird: A scalable open source router based on Bloom filter
Erdem et al. Value-coded trie structure for high-performance IPv6 lookup
Kim et al. Bitmap-based prefix caching for fast IP lookup
KR20030075016A (ko) 클래스 분할 기법을 이용한 라우팅 테이블 자료구조,라우팅 테이블을 이용한 라우팅 경로 검색방법 및 장치
KR100421414B1 (ko) 다중 탐색 트리의 노드 구조를 이용한 트리 검색 및업데이트 방법
JP6205463B2 (ja) 検索装置、検索方法、プログラム、及び記録媒体
Bahrambeigy et al. Towards Accelerating IP Lookups on Commodity PC Routers using Bloom Filter: Proposal of Bloom-Bird
Li et al. Comparative studies of address lookup algorithms for IPv6
GB2407674A (en) Lookup engine

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20100401

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee