KR101587756B1 - 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 - Google Patents

블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 Download PDF

Info

Publication number
KR101587756B1
KR101587756B1 KR1020150024480A KR20150024480A KR101587756B1 KR 101587756 B1 KR101587756 B1 KR 101587756B1 KR 1020150024480 A KR1020150024480 A KR 1020150024480A KR 20150024480 A KR20150024480 A KR 20150024480A KR 101587756 B1 KR101587756 B1 KR 101587756B1
Authority
KR
South Korea
Prior art keywords
information
prefix
string information
bloom filter
node
Prior art date
Application number
KR1020150024480A
Other languages
English (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 KR1020150024480A priority Critical patent/KR101587756B1/ko
Application granted granted Critical
Publication of KR101587756B1 publication Critical patent/KR101587756B1/ko

Links

Images

Classifications

    • H04L12/5689
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • G06F17/30949

Abstract

블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법이 개시된다.
이진 트라이(Binary trie)를 이용한 스트링 정보 검색 방법은 이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및 계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계를 포함할 수 있다.

Description

블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법{APPARATUS AND METHOD FOR SEARCHING STRING DATA USING BLOOM FILTER PRE-SEARCHING}
본 발명은 스트링 정보 검색 장치 및 방법에 관한 것으로, 블룸 필터를 이용하여 IP 주소와 같은 스트링 정보를 검색하는 장치 및 방법에 관한 것이다.
컴퓨터 네트워크에서 IP 주소는 각 컴퓨터에 부여된 고유의 식별 주소이다. 네트워크에 연결된 네트워크 기기들은 서로 중복 되지 않는 IP 주소를 가지고 있으며, 그 주소를 바탕으로 네트워크 상에서 위치를 식별할 수 있다. 이때, IP 주소 검색 방법은 미리 정의된 라우팅 테이블에 속한 프리픽스 중에서 각 입력 패킷의 목적지 IP 주소와 일치하는 프리픽스 정보를 찾는 방법일 수 있다.
종래의 클래스 기반 주소 체계에서 주소 공간이 낭비되는 문제점을 해결하기 위하여 도입된 CIDR(Classless Inter-Domain Routing)에서는 하나의 입력 정보가 복수의 프리픽스 정보와 일치할 수 있다. 따라서, CIDR는 일치하는 복수의 프리픽스 정보 중 목적지와 가장 가까운 네트워크까지 접근할 수 있도록 가장 길게 일치하는 프리픽스 정보(Best Matching Prefix, BMP)의 라우팅 정보를 찾아야 하는 문제점이 있다. 더구나, 라우터가 저장하는 라우터 테이블의 크기가 증가하고 있으므로, 라우터 테이블의 크기가 증가함에 따라 가장 길게 일치하는 프리픽스의 라우팅 정보를 더 찾기 어려워진다는 한계가 있었다.
또한, 종래의 IP 주소 검색 방법은 TCAM(Ternary Content Addressable Memory)을 이용하여 IP 주소를 검색하였다. TCAM은 초당 2억 5천만 번 이상의 검색이 가능하지만 높은 전력 소모와 방대한 공간 소요를 갖는 단점이 있었다.
따라서, 크기가 큰 라우팅 테이블에서도 좋은 성능을 유지하며, 전력 소모와 테이블 저장 공간을 최소화하는 방법이 요청되고 있다.
[선행 문헌]
한국 등록 특허(10-1028470)
한국 등록 특허(10-0920107)
본 발명은 블룸 필터의 쿼리 결과가 음성이 될 때까지 블룸 필터의 쿼리를 연속적으로 수행하여 일치하는 프리픽스 중에서 길이가 가장 긴 이진 트라이의 레벨인 프리픽스 길이를 계산하고, 프리픽스 길이에 따른 노드의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색함으로써, 효율적으로 라우팅 정보를 검색하는 장치 및 방법을 제공할 수 있다.
또한, 본 발명은 이진 트라이의 내부 노드들 각각과 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 선 계산하고, 프리픽스 정보가 저장되지 않은 이진 트라이의 내부 노드에 선 계산한 프리픽스 정보를 저장함으로써, 백 트래킹 회수를 최소화하는 장치 및 방법을 제공할 수 있다.
그리고, 본 발명은 이진 트라이의 내부 노드에 저장된 모든 프리픽스 정보를 리프 노드로 이동시켜 프리픽스 정보가 리프 노트에만 저장되도록 함으로써, 백 트래킹 회수를 최소화하는 장치 및 방법을 제공할 수 있다.
또한, 본 발명은 이진 트라이의 노드들 중, 프리픽스 검색 과정에서 검색될 가능성이 없는 노드를 식별하고, 식별한 노드를 해시 테이블 엔트리에 저장하지 않음으로써, 검색 성능의 저하 없이 해시 테이블의 저장 공간을 최소화하는 장치 및 방법을 제공할 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법은 이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및 계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법의 프리픽스 길이를 연쇄적으로 검색하는 단계는, 상기 블룸 필터로 상기 스트링 정보의 프리픽스 정보를 쿼리하는 단계; 상기 블룸 필터의 쿼리 결과가 양성인 경우, 상기 스트링 정보의 프리픽스 길이를 증가시키는 단계; 증가된 프리픽스 길이에 따라 상기 블룸 필터로 상기 스트링 정보의 프리픽스 정보를 쿼리하는 단계; 상기 블룸 필터의 쿼리 결과가 음성인 경우 마지막으로 양성 결과를 얻은 길이를 상기 스트링 정보의 프리픽스 길이로 결정하는 단계; 증가된 프리픽스 길이가 이진 트라이의 마지막 레벨에 대응하는 경우, 현재 프리픽스 길이를 상기 스트링 정보의 프리픽스 길이로 결정하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법의 프리픽스 정보를 검색하는 단계는, 상기 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계; 및 상기 해시 테이블에서 상기 스트링 정보의 프리픽스 정보가 검색되지 않는 경우, 상기 프리픽스 길이를 순차적으로 감소하며, 감소된 프리픽스 길이에 대응하는 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법은 이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및 계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계를 포함하고, 상기 해시 테이블은 이진 트라이의 프리픽스 정보가 저장되지 않은 내부 노드에 상기 내부 노드와 일치도가 가장 높은 프리픽스 정보를 포함할 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법은 검색된 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보가 검색되지 않는 경우, 상기 프리픽스 길이보다 1이 적은 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보가 검색하는 단계를 더 포함할 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법의 해시 테이블은, 이진 트라이의 노드들 중에서 다음 레벨의 블룸 필터 쿼리 결과가 항상 양성이 되는 노드를 제외한 나머지 노드들이 저장될 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법의 다음 레벨의 블룸 필터 쿼리 결과가 항상 양성이 되는 노드는, 상기 이진 트라이의 노드들 중에서 두 개의 자식 노드를 가질 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법은 이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및 계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계를 포함하고, 상기 이진 트라이는, 리프 푸싱을 이용하여 상기 이진 트라이의 내부 노드에 저장된 프리픽스 정보들이 상기 이진 트라이의 리프 노드로 이동될 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법의 해시 테이블은, 이진 트라이의 노드들 중에서 다음 레벨의 블룸 필터 쿼리 결과가 항상 양성이 되는 노드를 제외한 나머지 노드들이 저장될 수 있다.
본 발명의 일실시예에 따른 스트링 정보 검색 방법은 이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및 계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계를 포함하고, 상기 해시 테이블은, 이진 트라이의 노드들 중에서 다음 레벨의 블룸 필터 쿼리 결과가 항상 양성이 되는 노드를 제외한 나머지 노드들이 저장될 수 있다.
본 발명의 일실시예에 의하면, 블룸 필터의 쿼리 결과가 음성이 될 때까지 블룸 필터의 쿼리를 연속적으로 수행하여 일치하는 프리픽스 중에서 길이가 가장 긴 이진 트라이의 레벨인 프리픽스 길이를 계산하고, 프리픽스 길이에 따른 노드의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색함으로써, 효율적으로 스트링 정보를 검색할 수 있다.
또한, 본 발명의 일실시예에 의하면, 이진 트라이의 내부 노드들 각각과 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 선 계산하고, 프리픽스 정보가 저장되지 않은 이진 트라이의 내부 노드에 선 계산한 프리픽스 정보를 저장함으로써, 백 트래킹 회수를 최소화할 수 있다.
그리고, 본 발명의 일실시예에 의하면, 이진 트라이의 내부 노드에 저장된 모든 프리픽스 정보를 리프 노드로 이동시켜 프리픽스 정보가 리프 노트에만 저장되도록 함으로써, 백 트래킹 회수를 최소화할 수 있다.
또한, 본 발명의 일실시예에 의하면, 이진 트라이의 노드들 중, 프리픽스 검색 과정에서 검색될 가능성이 없는 노드를 식별하고, 식별한 노드를 해시 테이블 엔트리에 저장하지 않음으로써, 검색 성능의 저하 없이 해시 테이블의 저장 공간을 최소화할 수 있다.
도 1은 본 발명의 일실시예에 따른 스트링 정보 검색 시스템을 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 이진 트라이의 일례이다.
도 3은 본 발명의 일실시예에 따른 블룸 필터의 일례이다.
도 4는 본 발명의 제1 실시예에 따른 검색 정보 구성 장치가 검색 정보를 구성하는 과정에서 사용하는 의사 코드의 일례이다.
도 5는 본 발명의 제2 실시예에 따른 검색 정보 구성 장치가 검색 정보를 구성하는 과정에서 사용하는 의사 코드의 일례이다.
도 6는 본 발명의 제3 실시예에 따른 검색 정보 구성 장치가 검색 정보를 구성하는 과정에서 사용하는 의사 코드의 일례이다.
도 7은 본 발명의 일실시예에 따른 스트링 정보 검색 장치를 나타내는 도면이다.
도 8은 본 발명의 제1 실시예에 따른 스트링 정보 검색 과정에서 사용하는 의사 코드의 일례이다.
도 9는 본 발명의 제1 실시예에 따른 스트링 정보 검색 과정의 일례이다.
도 10은 본 발명의 제2 실시예에 따른 스트링 정보 검색 과정에서 사용하는 의사 코드의 일례이다.
도 11은 본 발명의 제3 실시예에 따른 스트링 정보 검색 과정의 일례이다.
도 12는 본 발명의 제4 실시예에 따른 스트링 정보 검색 과정의 일례이다.
도 13은 본 발명의 일실시예에 따른 스트링 정보 검색 방법의 해시 테이블 접근 회수의 일례이다.
도 14는 스트링 정보 검색 방법의 해시 테이블 접근 회수의 비교 결과이다.
도 15는 스트링 정보 검색 방법의 테이블 메모리 사용량의 비교 결과이다.
도 16은 본 발명의 일실시예에 따른 해시 엔트리 구조의 일례이다.
도 17은 본 발명의 일실시예에 따른 스트링 정보 검색 방법을 도시한 플로우차트이다.
도 18은 본 발명의 일실시예에 따른 스트링 정보 검색 방법의 프리픽스 길이 검색 과정을 도시한 플로우차트이다.
도 19는 본 발명의 일실시예에 따른 스트링 정보 검색 방법의 프리픽스 정보 검색 과정을 도시한 플로우차트이다.
도 20은 본 발명의 일실시예에 따른 검색 정보 구성 장치가 검색 정보를 구성하는 방법을 도시한 플로우차트이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 본 발명의 일실시예에 따른 스트링 정보 검색 방법은 스트링 정보 검색 장치에 의해 수행될 수 있다.
도 1은 본 발명의 일실시예에 따른 스트링 정보 검색 시스템을 나타내는 도면이다.
도 1을 참고하면, 본 발명의 일실시예에 따른 스트링 정보 검색 시스템은 검색 정보 구성 장치(110) 및 스트링 정보 검색 장치(120)를 포함할 수 있다. 이때, 스트링 정보 검색 시스템은 컴퓨터 네트워크에서 IP 주소를 검색하기 위하여 사용될 수 있다. 예를 들어, 스트링 정보는 IP 주소와 같이 숫자, 또는 문자들이 나열된 정보일 수 있다.
검색 정보 구성 장치(110)는 복수의 레벨로 구분되는 노드들로 구성된 이진 트라이(Binary-trie)에 따라 스트링 정보를 해시 테이블, 또는 블룸 필터에 저장하여 검색 정보를 구성할 수 있다.
도 1을 참고하면, 본 발명의 일실시예에 따른 검색 정보 구성 장치(110)는 이진 트라이 생성부(111), 해시 테이블 생성부(112) 및 블룸 필터 생성부(113)를 포함할 수 있다.
이진 트라이 생성부(111)는 두 개의 포인터를 가지는 노드들을 이용하여 이진 트라이를 생성할 수 있다.
이때, 이진 트라이 생성부(111)는 스트링 정보의 프리픽스 정보 및 프리픽스 길이에 대응하는 레벨에 스트링 정보의 프리픽스 정보를 저장할 수 있다. 구체적으로, 이진 트라이 생성부(111)는 스트링 정보의 프리픽스 길이에 따라, 스트링 정보의 프리픽스 정보가 저장될 노드의 레벨을 결정할 수 있다. 또한, 이진 트라이 생성부(111)는 스트링 정보의 프리픽스 정보에 따라 프리픽스 정보가 저장되는 경로를 결정할 수 있다.
또한, 이진 트라이 생성부(111)는 이진 트라이에서 프리픽스 정보가 저장되지 않은 내부 노드들을 식별할 수 있다. 이때, 이진 트라이 생성부(111)는 식별한 노드에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 계산할 수 있다. 그리고, 이진 트라이 생성부(111)는 계산한 프리픽스 정보를 식별한 노드에 저장할 수 있다.
그리고, 이진 트라이 생성부(111)는 이진 트라이의 내부 노드에 위치한 모든 프리픽스 정보를 리프 노드로 이동시킴으로써, 프리픽스 정보가 리프 노드에만 존재하도록 하는 리프 푸싱을 수행할 수도 있다.
해시 테이블 생성부(112)는 이진 트라이의 레벨 별로 해시 테이블을 생성할 수 있다. 이때, 해시 테이블 생성부(110)는 이진 트라이의 레벨이 동일한 적어도 하나의 노드를 하나의 해시 테이블 엔트리에 저장할 수 있다. 또한, 해시 테이블 생성부(112)는 생성한 해시 테이블을 칩 외부 메모리(off-chip memory)에 저장할 수 있다.
그리고, 해시 테이블 생성부(112)가 생성한 해시 테이블은 스트링 정보의 프리픽스 길이에 대응하는 경우, 또는, 블룸 필터의 거짓 양성에 의한 백-트래킹에 의한 경우에만 접근될 수 있다. 따라서, 이진 트라이의 노드들 중에는 스트링 정보 검색 과정에서 접근되지 않는 노드가 존재할 수 있다.
또한, 이진 트라이에서 길이 L에 존재하는 노드가 두 개의 자식 노드를 갖는다면, 길이 L+1에 대한 블룸 필터 검색에서 거짓 양성이 발생할 수 없다. 즉, 두 개의 자식 노드를 가진 노드는 검색 과정에서 절대 접근되지 않는 것을 의미할 수 있다.
따라서, 해시 테이블 생성부(112)는 이진 트라이의 노드들 중에서 두 개의 자식 노드를 가지는 노드를 해시 테이블 엔트리에 저장하지 않음으로써, 검색 과정에서 사용되지 않는 노드를 해시 테이블 엔트리에 저장하기 위하여 불필요하게 저장 공간이 사용되는 것을 방지할 수 있다.
블룸 필터 생성부(113)는 이진 트라이의 레벨 정보에 기초한 블룸 필터를 생성할 수 있다. 구체적으로, 블룸 필터 생성부(113)는 프리픽스 길이에 대응하는 이진 트라이의 레벨의 노드 중에서 스트링 정보의 프리픽스 정보에 대응하는 노드가 있는지 여부를 확인할 수 있는 블룸 필터를 생성할 수 있다.
스트링 정보 검색 장치(120)는 블룸 필터 생성부(113)가 생성한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 스트링 정보의 프리픽스 길이를 계산할 수 있다. 이때, 프리픽스 정보를 구성하는 문자, 또는 숫자는 각각 이진 트라이의 레벨에 대응하며, 프리픽스 길이는 프리픽스 정보가 일치하는 프리픽스 중에서 길이가 가장 긴 이진 트라이의 레벨일 수 있다.
구체적으로, 스트링 정보 검색 장치(120)는 블룸 필터의 쿼리 결과가 음성으로 나타날 때까지 프리픽스 길이를 증가시키면서 블룸 필터의 쿼리를 수행할 수 있다. 이때, 쿼리 결과가 음성이라는 것은 현재 프리픽스 길이에 대응하는 이진 트라이의 레벨에서 프리픽스 정보가 저장된 노드가 없다는 의미일 수 있다. 따라서, 스트링 정보 검색 장치(120)는 현재 프리픽스 길이보다 1 작은 이전 프리픽스 길이를 가장 길게 일치하는 길이(Best Matching Prefix level)인 프리픽스 길이로 계산할 수 있다.
그리고, 스트링 정보 검색 장치(120)는 계산된 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색할 수 있다. 블룸 필터의 쿼리 결과가 거짓 양성인 경우에도, 스트링 정보 검색 장치(120)는 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색하지 못할 수 있다. 이때, 스트링 정보 검색 장치(120)는 프리픽스 길이를 감소시키고, 감소된 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색하는 백 트래킹(back-tracking)을 수행할 수 있다.
이때, 백 트래킹이 일어나는 회수는 블룸 필터의 거짓 양성의 비율에 영향을 받을 수 있다. 예를 들어, 프리픽스 길이가 L이고, L+1 길이에서 블룸 필터의 쿼리 결과가 거짓 양성이며, L+2에서 블룸 필터의 쿼리 결과가 음성인 경우, 한 번의 백 트래킹이 발생할 수 있다.
또한, L+1과 L+2에서 블룸 필터의 쿼리 결과가 거짓 양성이고 L+3에서 블룸 필터의 쿼리 결과가 음성인 경우, 두 번의 백 트래킹이 발생할 수 있다. 따라서, 백-트래킹이 발생할 확률은 수학식 1과 같이 표현될 수 있다.
Figure 112015017040114-pat00001
이때,
Figure 112015017040114-pat00002
는 길이 i의 거짓 양성 비율일 수 있다. 즉, 백-트래킹 발생 확률은 프리픽스 길이 각각에서 거짓 양성 비율의 곱으로 표현되므로 빠르게 감소할 수 있다.
스트링 정보 검색 장치(120)는 블룸 필터의 쿼리 결과가 음성이 될 때까지 블룸 필터의 쿼리를 연속적으로 수행하여 일치하는 프리픽스 중에서 길이가 가장 긴 이진 트라이의 레벨인 프리픽스 길이를 계산하고, 프리픽스 길이에 따른 노드의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색함으로써, 효율적으로 스트링 정보를 검색할 수 있다.
도 2는 본 발명의 일실시예에 따른 이진 트라이의 일례이다.
이진 트라이는 도 2에 도시된 바와 같이 트리 구조를 바탕으로 하는 정보 구조일 수 있다. 이때, 이진 트라이에 포함된 노드들 각각은 두 개의 포인터를 가지고 있으며, 왼쪽 포인터는 0, 오른쪽 포인터는 1을 의미할 수 있다.
그리고, 이진 트라이 생성부(111)는 이진 트라이에서 프리픽스 정보에 대응하는 경로에 따라 프리픽스 정보를 저장할 노드를 결정할 수 있다. 예를 들어, 이진 트라이 생성부(111)는 표 1을 사용하여 도 2와 같은 이진 트라이를 생성할 수 있다.
Figure 112015017040114-pat00003
구체적으로, 이진 트라이 생성부(111)는 프리픽스 정보의 최상위 비트부터 한 비트씩 확인할 수 있다. 이때, 비트의 값이 0이면 왼쪽 포인터를 따라 진행하고, 비트의 값이 1이면 오른쪽 포인터를 따라 진행할 수 있다. 즉, P1은 0000*이므로 이진 트라이 생성부(111)는 이진 트라이의 루트 노드부터 계속 왼쪽 포인터를 따라 진행하여 도 2에 도시된 바와 같이 이진 트라이의 가장 왼쪽 노드에 P1의 프리픽스 정보를 저장할 수 있다. 또한, P3은 01*이므로, 이진 트라이 생성부(110)는 도 2에 도시된 바와 같이 왼쪽 포인트로 한번, 오른쪽 포인트로 한번씩 진행한 노드에 P3의 프리픽스 정보를 저장할 수 있다.
이진 트라이 생성부(111)는 상기 과정을 프리픽스 길이만큼 반복하여 도달한 노드에 프리픽스 정보를 저장할 수 있다. 즉, 프리픽스 길이와 프리픽스 정보의 값이 각각 프리픽스 정보가 저장되는 레벨과 경로를 결정할 수 있다.
도 3은 본 발명의 일실시예에 따른 블룸 필터의 일례이다.
블룸 필터는 어떤 원소들의 집합이 주어졌을 때 주어진 집합에 속하는 원소들의 존재를 비트-벡터 형식으로 나타내는 정보 구조일 수 있다. 그리고, 블룸 필터는 입력과 일치하는 원소가 검색하는 대상인 집합 내에 존재하는지의 여부를 판단할 수 있다. 이때, 블룸 필터는 해시 함수를 이용하여 획득한 해시 인덱스에 검색한 원소를 저장하지 않고, 해시 인덱스에서 해당하는 비트 값을 1로 하여 원소의 존재를 표시할 수 있다. 예를 들어, 블룸 필터는 주어진 집합의 정보를 축약하여 저장하는 m-비트의 배열일 수 있다.
먼저, 블룸 필터 생성부(113)는 블룸 필터의 모든 비트를 0으로 초기화할 수 있다. 다음으로, 블룸 필터 생성부(113)는 집합의 원소에 해당하는
Figure 112015017040114-pat00004
Figure 112015017040114-pat00005
개의 해시 색인 값을 구할 수 있다. 그 다음으로, 블룸 필터 생성부(113)는 구해진
Figure 112015017040114-pat00006
Figure 112015017040114-pat00007
개의 해시 색인의 값에 해당하는 비트 값을 1로 변경할 수 있다. 블룸 필터 생성부(113)는 상기 과정을 반복하여 블룸 필터를 생성할 수 있다.
블룸 필터의 쿼리는 프리픽스 정보와 같은 입력 정보가 집합의 원소인지를 확인하는 과정일 수 있다. 예를 들어, 검색 과정에서 블룸 필터의 쿼리를 수행하는 스트링 정보 검색 장치(120)는 블룸 필터 생성부(113)가 블룸 필터를 생성하는 과정에서 사용한 해시 함수와 동일한 해시 함수를 이용하여 해시 색인을 구할 수 있다.
그리고, 스트링 정보 검색 장치(120)는 구한 해시 색인에 해당하는 비트 값을 확인할 수 있다. 이때, k개의 비트의 값이 모두 1인 경우, 스트링 정보 검색 장치(120)는 입력 정보가 주어진 집합의 원소라고 판단하여 쿼리 결과를 양성(positive)으로 처리할 수 있다. 그러나, 비트들 중에서 값이 0인 비트가 하나라도 있는 경우, 스트링 정보 검색 장치(120)는 입력 정보가 주어진 집합에 속하지 않다고 판단하여 쿼리 결과를 음성(negative)으로 처리할 수 있다.
예를 들어, 도 3은 3개의 원소를 갖는 블룸 필터이다. 이때, 블룸 필터 생성부(113)는 원소 x1, x2, x3로 이루어진 집합에 대하여 블룸 필터를 생성할 수 있다. 그리고, 스트링 정보 검색 장치(120)는 프리픽스 정보인 입력 정보 y를 이용하여 블룸 필터를 쿼리할 수 있다. 이때, 입력 정보 y에 대응하는 값에는 도 3에 도시된 바와 같이 블룸 필터의 값이 0인 비트에 해당되는 인덱스가 하나 이상 존재할 수 있다. 따라서, 스트링 정보 검색 장치(120)는 입력 정보 y가 집합에 속한 원소가 아닌 음성이라고 쿼리 결과를 결정할 수 있다.
또한, 블룸 필터는 집합에 포함된 원소가 아님에도 양성으로 판단하는 거짓 양성(false positive)을 발생시킬 수 있으나, 거짓 음성은 발생시키지 않는다는 특징을 가질 수 있다. 예를 들어, 블룸 필터 생성부(113)가 n개의 원소로 m 비트의 블룸 필터를 생성하는 경우, 생성한 블룸 필터에서 거짓 양성의 비율은 수학식 2와 같이 나타낼 수 있다.
Figure 112015017040114-pat00008
그리고, 블룸 필터 생성부(113)가 n개의 원소로 m 비트의 블룸 필터를 생성하는 경우, 거짓 양성 비율을 최소화 시키는 해시 함수의 개수는 수학식 3과 같이 정의될 수 있다.
Figure 112015017040114-pat00009
도 4는 본 발명의 제1 실시예에 따른 검색 정보 구성 장치가 검색 정보를 구성하는 과정에서 사용하는 의사 코드의 일례이다.
본 발명의 제1 실시예는 이진 트라이의 내부 노드와 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 선 계산하고, 프리픽스 정보가 저장되지 않은 이진 트라이의 내부 노드에 선 계산한 프리픽스 정보를 저장하는 실시예이다.
이때, 이진 트라이 생성부(111)는 도 4에 도시된 바와 같은 의사 코드를 이용하여 이진 트라이의 내부 노드들 각각과 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 선 계산할 수 있다. 그리고, 이진 트라이 생성부(111)는 프리픽스 정보가 저장되지 않은 이진 트라이의 내부 노드에 선 계산한 프리픽스 정보를 저장할 수 있다.
도 5는 본 발명의 제2 실시예에 따른 검색 정보 구성 장치가 검색 정보를 구성하는 과정에서 사용하는 의사 코드의 일례이다.
본 발명의 제2 실시예는 이진 트라이에 리프 푸싱을 수행하여 프리픽스 정보가 리프 노드에만 존재하도록 하는 실시예이다.
이때, 이진 트라이 생성부(111)는 도 5에 도시된 바와 같은 의사 코드로 이진 트라이의 내부 노드에 저장된 모든 프리픽스 정보를 리프 노드로 이동시켜 프리픽스 정보가 리프 노트에만 저장되도록 할 수 있다.
도 6는 본 발명의 제3 실시예에 따른 검색 정보 구성 장치가 검색 정보를 구성하는 과정에서 사용하는 의사 코드의 일례이다.
해시 테이블 생성부(112)는 도 6에 도시된 바와 같은 의사 코드를 이용하여 이진 트라이의 노드들 중에는 자식 노드가 하나인 노드들만 해시 테이블 엔트리에 저장할 수 있다.
즉, 해시 테이블 생성부(112)는 이진 트라이의 노드들 중, 프리픽스 검색 과정에서 검색될 가능성이 없는 노드를 식별하고, 식별한 노드를 해시 테이블 엔트리에 저장하지 않음으로써, 검색 성능의 저하 없이 해시 테이블의 저장 공간을 최소화할 수 있다.
도 7은 본 발명의 일실시예에 따른 스트링 정보 검색 장치를 나타내는 도면이다.
도 7를 참고하면, 본 발명의 일실시예에 따른 스트링 정보 검색 장치(120)는 프리픽스 길이 계산부(710) 및 프리픽스 정보 검색부(720)를 포함할 수 있다.
프리픽스 길이 계산부(710)는 블룸 필터 생성부(113)가 생성한 블룸 필터로 검색하고자 하는 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 스트링 정보의 프리픽스 길이를 계산할 수 있다.
구체적으로, 프리픽스 길이 계산부(710)는 블룸 필터로 스트링 정보의 프리픽스 정보를 쿼리할 수 있다. 블룸 필터의 쿼리 결과가 양성인 경우, 프리픽스 길이 계산부(710)는 스트링 정보의 프리픽스 길이를 증가시키고, 증가된 프리픽스 길이에 따라 블룸 필터로 스트링 정보의 프리픽스 정보를 쿼리하는 과정을 반복할 수 있다.
또한, 블룸 필터의 쿼리 결과가 음성인 경우, 프리픽스 길이 계산부(710)는 마지막으로 양성 결과를 낸 레벨을 스트링 정보의 프리픽스 길이로 계산할 수 있다. 그리고, 증가된 프리픽스의 길이가 이진 트라이의 마지막 레벨에 대응하는 경우, 프리픽스 길이 계산부(710)는 현재 프리픽스 길이를 스트링 정보의 프리픽스 길이로 계산할 수 있다.
프리픽스 정보 검색부(720)는 프리픽스 길이 계산부(710)에서 계산된 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색할 수 있다.
이때, 프리픽스 정보 검색부(720)는 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색할 수 있다. 그리고, 해시 테이블에서 스트링 정보의 프리픽스 정보가 검색되지 않는 경우, 프리픽스 정보 검색부(720)는 프리픽스 길이를 순차적으로 감소하며, 감소된 프리픽스 길이에 대응하는 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색하는 백 트래킹을 수행할 수 있다.
또한, 이진 트라이 생성부(111)는 제1 실시예에 따라 프리픽스 정보가 저장되지 않은 내부 노드에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 계산하고, 계산한 프리픽스 정보를 해당 내부 노드에 저장할 수 있다. 즉, 이진 트라이 생성부(111)는 프리픽스 정보 검색부(720)가 백 트래킹을 수행하여 검색할 수 있는 프리픽스 정보를 미리 계산하고, 계산된 프리픽스 정보를 프리픽스 정보 검색부(720)가 백 트래킹을 수행할 경우, 가장 먼저 검색하게 되는 레벨의 노드에 저장할 수 있다. 따라서, 해시 테이블에서 스트링 정보의 프리픽스 정보가 검색되지 않는 경우, 프리픽스 정보 검색부(720)는 프리픽스 길이를 1 감소한 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 획득할 수 있다.
이진 트라이 생성부(111)가 제1 실시예에 따라 이진 트라이를 생성한 경우, 프리픽스 정보 검색 과정은 이하 도 9를 참조하여 상세히 설명한다.
그리고, 이진 트라이 생성부(111)가 리프 푸싱을 수행하고, 증가된 프리픽스의 길이가 이진 트라이의 마지막 레벨인 리프 노드에 대응하는 경우, 프리픽스 정보 검색부(720)는 리프 노드에서 프리픽스 정보를 검색할 수 있다. 또한, 이진 트라이 생성부(111)가 리프 푸싱을 수행한 경우, 모든 프리픽스 정보는 리프 노드에 저장될 수 있다. 따라서, 프리픽스 정보 검색부(720)가 백 트래킹 과정에서 프리픽스 정보가 일치하는 내부 노드를 검색한 경우, 해당 내부 노드에는 프리픽스 정보가 저장되어 있지 않으므로, 검색이 종료될 수 있다.
스트링 정보 검색 장치(120)는 이진 트라이의 특성을 이용하여 블룸 필터의 쿼리 결과가 음성이 될 때까지 해시 테이블이 저장된 오프 칩 메모리에 접근하지 않음으로써, 오프 칩 메모리의 접근 시간 및 회수를 단축하여 검색 효율을 높일 수 있다.
도 8은 본 발명의 제1 실시예에 따른 스트링 정보 검색 과정에서 사용하는 의사 코드의 일례이다.
도 8은 이진 트라이 생성부(111)가 제1 실시예에 따라 도 4와 같은 의사 코드를 사용하여 이진 트라이를 생성한 경우, 스트링 정보 검색 장치(120)가 사용하는 의사 코드의 일례이다.
이때, 스트링 정보 검색 장치(120)는 도 8에 도시된 바와 같은 의사 코드를 이용하여 블룸 필터로 스트링 정보의 프리픽스 정보를 쿼리할 수 있다. 그리고, 블룸 필터의 쿼리 결과가 양성인 경우, 스트링 정보 검색 장치(120)의 프리픽스 길이 계산부(710)는 스트링 정보의 프리픽스 길이를 증가시키고, 증가된 프리픽스 길이에 따라 블룸 필터로 스트링 정보의 프리픽스 정보를 쿼리하는 과정을 반복할 수 있다.
또한, 블룸 필터의 쿼리 결과가 음성인 경우, 프리픽스 길이 계산부(710)는 마지막으로 양성 결과를 낸 레벨을 스트링 정보의 프리픽스 길이로 계산할 수 있다. 그리고, 증가된 프리픽스의 길이가 이진 트라이의 마지막 레벨에 대응하는 경우, 프리픽스 길이 계산부(710)는 현재 프리픽스 길이를 스트링 정보의 프리픽스 길이로 계산할 수 있다.
그리고, 프리픽스 정보 검색부(720)는 프리픽스 길이 계산부(710)에서 계산된 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색할 수 있다. 이때, 이진 트라이 생성부(111)가 제1 실시예에 따라 프리픽스 정보 검색부(720)가 백 트래킹을 수행할 경우, 가장 먼저 검색하기 되는 레벨의 노드에 프리픽스 정보를 선 계산하여 저장하고 있으므로, 프리픽스 정보 검색부(720)는 프리픽스 길이를 1 감소한 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 획득할 수 있다.
도 9는 본 발명의 제1 실시예에 따른 스트링 정보 검색 과정의 일례이다.
이진 트라이 생성부(111)는 제1 실시예에 따라 스트링 정보의 프리픽스 정보가 저장되지 않은 내부 노드에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 계산할 수 있다. 이때, 노드(920)는 프리픽스 정보가 저장되지 않은 내부 노드일 수 있다.
이때, 이진 트라이 생성부(111)는 노드(920)의 부모 노드에 저장된 프리픽스 정보를 이용하여 노드(920)에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 계산할 수 있다. 예를 들어, 노드(920)의 부모 노드들 중 프리픽스 정보가 저장된 부모 노드는 노드(930)일 수 있다. 따라서, 노드(920)에서 프리픽스 길이가 가장 긴 프리픽스 정보는 노드(930)에 저장된 P6일 수 있다.
따라서, 이진 트라이 생성부(111)는 프리픽스 정보 P6를 노드(920)에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보로 계산하여 노드(920)에 프리픽스 정보 P6를 저장할 수 있다. 또한, 노드(920)의 부모 노드들 중 프리픽스 정보가 저장된 부모 노드가 복수인 경우, 이진 트라이 생성부(111)는 프리픽스 정보가 저장된 부모 노드들 중에서 노드(920)에 가장 가까운 부모 노드의 프리픽스 정보를 노드(920)에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보로 계산할 수 있다.
그리고, 스트링 정보 검색 장치(120)는 검색하고자 하는 스트링 정보에 따른 입력 정보를 이용하여 스트링 정보의 프리픽스 정보를 검색할 수 있다. 예를 들어, 입력 정보가 100100인 경우, 스트링 정보 검색 장치(120)는 블룸 필터(900)을 이용하여 순차적으로 프리픽스 길이를 쿼리할 수 있다.
이때, 길이 1 내지 길이 5에서는 쿼리 결과가 양성이고, 노드(910)에 대응하는 길이 6에서 쿼리 결과가 음성일 수 있다. 이때, 스트링 정보 검색 장치(120)는 마지막으로 쿼리 결과가 양성으로 판단된 길이 5에 대응하는 해시 테이블에서 노드(920)를 확인할 수 있다. 그리고, 스트링 정보 검색 장치(120)는 노드(920)에 저장된 프리픽스 정보 P6를 입력 정보에 대응하는 스트링 정보의 프리픽스 정보로 결정하고, 검색을 종료할 수 있다.
도 10은 본 발명의 제2 실시예에 따른 스트링 정보 검색 과정에서 사용하는 의사 코드의 일례이다.
도 10은 이진 트라이 생성부(111)가 제2 실시예에 따라 도 5와 같은 의사 코드를 사용하여 리프 푸싱한 이진 트라이를 생성한 경우, 스트링 정보 검색 장치(120)가 사용하는 의사 코드의 일례이다.
이때, 프리픽스 길이 계산부(710)는 도 10에 도시된 바와 같은 의사 코드를 이용하여 블룸 필터로 스트링 정보의 프리픽스 정보를 쿼리할 수 있다. 그리고, 블룸 필터의 쿼리 결과가 양성인 경우, 스트링 정보 검색 장치(120)의 프리픽스 길이 계산부(710)는 스트링 정보의 프리픽스 길이를 증가시키고, 증가된 프리픽스 길이에 따라 블룸 필터로 스트링 정보의 프리픽스 정보를 쿼리하는 과정을 반복할 수 있다.
또한, 블룸 필터의 쿼리 결과가 음성이거나, 증가된 프리픽스의 길이가 이진 트라이의 마지막 레벨에 대응하는 경우, 프리픽스 길이 계산부(710)는 현재 프리픽스 길이를 스트링 정보의 프리픽스 길이로 계산할 수 있다.
그리고, 프리픽스 정보 검색부(720)는 프리픽스 길이에 대응하는 리프 노드에서 프리픽스 정보를 검색할 수 있다. 또한, 이진 트라이 생성부(111)가 리프 푸싱을 수행한 경우, 모든 프리픽스 정보는 리프 노드에 저장될 수 있다. 따라서, 프리픽스 정보 검색부(720)가 백 트래킹 과정에서 프리픽스 정보가 일치하는 내부 노드를 검색한 경우, 일치하는 프리픽스 정보를 찾을 수 없으므로, 검색이 종료될 수 있다.
도 11은 본 발명의 제3 실시예에 따른 스트링 정보 검색 과정의 일례이다.
본 발명의 제3 실시예는 제1 실시예에 해시 테이블 생성부(112)가 이진 트라이의 노드들 중에는 자식 노드가 하나인 노드들만 해시 테이블 엔트리에 저장하는 실시예를 적용한 실시예일 수 있다.
이때, 해시 테이블 생성부(112)는 이진 트라이의 노드들을 두 개의 자식 노드를 가지는 노드(1110)들과 프리픽스 정보가 저장된 노드(1120)들 및 하나의 자식 노드를 가지는 노드(1130)들로 분류할 수 있다. 이때, 두 개의 자식 노드를 가지는 노드(1110)는 검색 과정에서 접근되지 않을 수 있다.
예를 들어, 노드(1111)에 대한 블룸 필터의 쿼리 결과가 양성인 경우, 노드(1111)는 스트링 정보의 프리픽스 정보에 대응하는 노드일 수 있다. 그리고, 이진 트라이에서 비트의 값은 0 아니면 1이며, 노드(1111)는 비트의 값이 0인 경우에 대응하는 노드(1131)와 비트의 값이 1인 경우에 대응하는 노드(1121)을 모두 자식 노드로 가지고 있다. 즉, 노드(1111)의 프리픽스 길이가 L인 경우, 프리픽스 길이가 L+1에는 스트링 정보의 프리픽스 정보에 대응할 수 있는 노드(1131)와 노드(1121)가 모두 포함되어 있으므로 블룸 필터의 쿼리 결과가 거짓 양성이 될 수 없다.
또한, 스트링 정보의 프리픽스 정보가 노드(1121)에 저장된 경우, 프리픽스 정보 검색부(720)가 노드(1121)에 접근할 수 있다. 그리고, 스트링 정보의 프리픽스 정보에 가장 가까운 프리픽스 정보가 노드(1131)에 저장된 경우, 노드(1112)가 포함된 프리픽스 길이 L+2에서 블룸 필터의 쿼리 결과가 음성이 될 수 있다. 따라서, 프리픽스 길이 계산부(710)는 프리픽스 길이를 L+1로 결정하고, 프리픽스 정보 검색부(720)는 노드(1131)에 저장된 프리픽스 정보를 검색할 수 있다.
즉, 프리픽스 정보 검색부(720)가 백 트래킹을 수행하는 경우에도 노드(1111)까지 백 트래킹 되기 전에 노드(1111)의 자식 노드인 노드(1221) 및 노드(1131)에서 검색이 종료될 수 있다. 그러므로, 해시 테이블 생성부(112)는 노드(1111)와 같이 검색 과정에서 사용되지 않는 노드(1110)들을 해시 테이블 엔트리에 저장하지 않음으로써, 해시 테이블을 저장하는 공간을 최소화할 수 있다.
또한, 이진 트라이 생성부(111)는 제1 실시예에 따라 스트링 정보의 프리픽스 정보가 저장되지 않은 내부 노드에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 계산할 수 있다. 이때, 노드(1132)는 프리픽스 정보가 저장되지 않은 내부 노드일 수 있다.
이때, 이진 트라이 생성부(111)는 노드(1132)의 부모 노드에 저장된 프리픽스 정보를 이용하여 노드(1132)에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 계산할 수 있다. 예를 들어, 노드(1132)의 부모 노드들 중 프리픽스 정보가 저장된 부모 노드는 노드(1122)일 수 있다. 따라서, 노드(1132)에서 프리픽스 길이가 가장 긴 프리픽스 정보는 노드(1122)에 저장된 P6일 수 있다.
따라서, 이진 트라이 생성부(111)는 프리픽스 정보 P6를 노드(1132)에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보로 계산하여 노드(1132)에 프리픽스 정보 P6를 저장할 수 있다.
이때, 노드(1113)은 스트링 정보의 프리픽스 정보가 저장되지 않은 내부 노드이지만, 검색 과정에서 사용되지 않는 노드(1110)들 중 하나이므로, 이진 트라이 생성부(111)는 노드(1113)를 저장하지 않을 수 있다.
도 12는 본 발명의 제4 실시예에 따른 스트링 정보 검색 과정의 일례이다.
본 발명의 제4 실시예는 제2 실시예에 해시 테이블 생성부(112)가 이진 트라이의 노드들 중에는 자식 노드가 하나인 노드들만 해시 테이블 엔트리에 저장하는 실시예를 적용한 실시예일 수 있다.
이때, 해시 테이블 생성부(112)는 이진 트라이의 노드들을 두 개의 자식 노드를 가지는 노드(1210)들와 프리픽스 정보가 저장된 노드(1220)들 및 하나의 자식 노드를 가지는 노드(1230)들로 분류할 수 있다. 이때, 두 개의 자식 노드를 가지는 노드(1210)는 도 11에 도시된 바와 같이 검색 과정에서 접근되지 않을 수 있다.
그러므로, 해시 테이블 생성부(112)는 노드(1111)와 같이 검색 과정에서 사용되지 않는 노드(1110)들을 해시 테이블 엔트리에 저장하지 않음으로써, 해시 테이블을 저장하는 공간을 최소화할 수 있다.
또한, 이진 트라이 생성부(111)는 제2 실시예에 따라 이진 트라이에 리프 푸싱을 수행할 수 있다.
구체적으로, 이진 트라이 생성부(111)는 프리픽스 정보 P6이 저장되었던 노드(1211)를 리프 푸싱하여 리프 노드(1221)를 생성할 수 있다. 그리고, 이진 트라이 생성부(111)는 도 12에 도시된 바와 같이 노드(1211)에 저장되었던 프리픽스 정보 P6을 리프 노드(1221)로 이동 시킬 수 있다.
또한, 이진 트라이 생성부(111)는 프리픽스 정보 P7이 저장되었던 노드(1212)를 리프 푸싱하여 리프 노드(1222)를 생성할 수 있다. 그리고, 이진 트라이 생성부(111)는 도 12에 도시된 바와 같이 노드(1212)에 저장되었던 프리픽스 정보 P7을 리프 노드(1222)로 이동 시킬 수 있다.
그리고, 이진 트라이 생성부(111)는 프리픽스 정보 P7이 저장되었던 노드(1213)를 리프 푸싱하여 리프 노드(1223)를 생성할 수 있다. 그리고, 이진 트라이 생성부(111)는 도 12에 도시된 바와 같이 노드(1213)에 저장되었던 프리픽스 정보 P7을 리프 노드(1223)로 이동 시킬 수 있다.
또한, 이진 트라이 생성부(111)는 프리픽스 정보 P6이 저장되었던 노드(1214)를 리프 푸싱하여 리프 노드(1224)를 생성할 수 있다. 그리고, 이진 트라이 생성부(111)는 도 12에 도시된 바와 같이 노드(1214)에 저장되었던 프리픽스 정보 P6을 리프 노드(1224)로 이동 시킬 수 있다.
이때, 리프 푸싱된 노드들은 하나의 자식 노드를 가지고 있었지만, 리프 푸싱에 따라 생성되는 리프 노드가 자식 노드로 추가되므로 두 개의 자식 노드를 가질 수 있다. 따라서, 리프 푸싱된 노드들은 검색 과정에서 사용되지 않는 노드(1210)들 중 하나이므로, 이진 트라이 생성부(111)는 리프 푸싱한 노드들을 해시 테이블 엔트리에 저장하지 않을 수 있다.
도 13은 본 발명의 일실시예에 따른 스트링 정보 검색 방법의 해시 테이블 접근 회수의 일례이다.
도 13은 5개의 라우팅 테이블(MAE-WEST, MAE-EAST, PORT80, Grouptlcom, Telstra)을 사용하여 본 발명의 제1 실시예와 제2 실시예의 성능을 평가한 결과이다. 이때, 라우팅 테이블은 약 15,000개에서 227,000개의 프리픽스 정보를 가지고 있다. 또한, 스트링 정보 검색 장치(120)는 각각의 라우팅 테이블 크기의 3배의 입력 주소를 사용하여 성능 평가를 수행하였다.
그리고, 블룸 필터 생성부(113)는 블룸 필터의 인덱스를 얻기 위한 해시 함수로 순환 중복 검사(cyclic redundancy Check, CRC)를 사용할 수 있다. CRC를 사용할 경우, CRC의 여러 비트를 조합하여 여러 개의 해시 인덱스를 쉽게 만들어 낼 수 있다는 장점이 있다.
예를 들어, 도 13은 블룸 필터 생성부(113)가 64-비트 CRC를 사용하여 블룸 필터를 생성하고, 스트링 정보 검색 장치(120)가 오프-칩 메모리에 저장된 해시 테이블에 접근하기 위하여 완전 해시 함수를 사용하여 성능을 평가한 결과일 수 있다. 이때, 완전 해시 함수는 충돌이 발생하지 않도록 모든 스트링 정보들이 해시 테이블 전역에 완전히 분산시키는 해시 함수일 수 있다.
또한, 검색 정보 구성 장치(110)는 각각의 라우팅 테이블에 대하여 만들어진 이진 트라이의 유효 길이에 존재하는 노드 개수에 따라 결정된 블룸 필터 크기를 변경하여 성능을 평가할 수 있다.
예를 들어, N 개의 프리픽스 정보를 가지는 라우팅 테이블에 대하여 이진 트라이 생성부가 T 개의 노드로 이진 트라이를 생성하는 경우, 블룸 필터 크기 T'은
Figure 112015017040114-pat00010
에 의해 결정될 수 있다. 이때, 유효 길이란 프리픽스 정보가 저장되는 노드가 존재하는 길이일 수 있다.
또한, 최종 블룸 필터의 크기는 m = αT'에 의하여 결정되며, α값을 2, 4, 8, 16, 32로 바꾸어 가며 제1 실시예 및 제2 실시예의 성능을 평가하기 위한 시뮬레이션을 수행할 수 있다. 그리고. 블룸 필터의 인덱스를 구하기 위한 해시 함수의 개수는 블룸 필터 거짓 양성 비율을 최소화 하는 값으로 결정될 수 있다.
표 2는 제1 실시예 및 제3 실시예의 해시 테이블 엔트리 수일 수 있다.
Figure 112015017040114-pat00011
이때, 표 2에서 Algorithm 1은 제1 실시예이고, Algorithm 1R은 제3 실시예일 수 있다.
표 3은 제2 실시예 및 제3 실시예의 해시 테이블 엔트리 수일 수 있다.
Figure 112015017040114-pat00012
이때, 표 3에서 Algorithm 2은 제2 실시예이고, Algorithm 2R은 제4 실시예일 수 있다. 또한, 표 3의 프리픽스 정보 개수 Np 및 블룸 필터의 크기 T는 리프 푸슁으로 증가한 노드 때문에 표 2와 같은 제1 실시예의 프리픽스 정보 개수(N) 및 블룸 필터의 크기 T보다 클 수 있다.
이때, 이진 트라이 생성부(110)가 생성한 이진 트라이에 포함된 노드의 개수는 블룸 필터 생성부(113)가 생성하는 블룸 필터에 프로그램 된 원소 수와 동일 할 수 있다.
그러나, 제3 실시예, 및 제4 실시예와 같이 제1 실시예 및 제2 실시예에 메모리를 개선하기 위한 해시 테이블 생성부(112)의 실시예가 적용되는 경우, 표 2와 표 3에 도시된 바와 같이 해시 테이블 엔트리에 저장되는 엔트리의 수(Ne)가 현저히 감소할 수 있다. 이때, 표 2와 표 3에서 비율(Rate)는 메모리를 개선하기 위한 해시 테이블 생성부(112)의 실시예가 적용되지 않은 제1 실시예 및 제2 실시예의 해시 테이블 엔트리 개수 대비 제3 실시예 및 제4 실시예의 해시 테이블 엔트리 개수일 수 있다.
표 2와 표 3에 도시된 바와 같이 제3 실시예와 제4 실시예는 라우팅 테이블의 크기가 클수록 더 많은 해시 테이블 엔트리를 감소시킬 수 있다. 예를 들어, 제3 실시예에 따른 해시 테이블 생성부(112)는 표 1과 같이 라우팅 테이블 MAE-WEST에 대해서 81.8%의 노드를 저장하지만, 라우팅 테이블 Telstra에 대해서는 72.8%만을 저장할 수 있다.
이때, 메모리를 개선하기 위한 해시 테이블 생성부(112)의 실시예에 따른 해시 테이블 엔트리 감소 비율은 제4 실시예가 제3 실시예보다 높을 수 있다.
구체적으로, 제4 실시예에 따른 해시 테이블 생성부(112)는 라우팅 테이블 MAE-WEST에 대해서 76.3%의 노드를 저장하지만, 라우팅 테이블 Telstra에 대해서는 50.4%의 노드만을 저장할 수 있다. 이때, 라우팅 테이블 Telstra에서 제4 실시예에 따른 해시 테이블 생성부(112)가 해시 테이블 엔트리에 저장하는 내부 노드의 개수는 해시 테이블 엔트리에 저장되는 노드의 1.7%인 5027개일 수 있다.
그래프(1310)은 제3 실시예에 따른 스트링 정보 검색 장치(120)의 평균 해시 테이블 접근 회수이고, 그래프(1320)은 제4 실시예에 따른 스트링 정보 검색 장치(120)의 평균 해시 테이블 접근 회수일 수 있다. 그래프(1310) 및 그래프(1320)에 따르면 블룸 필터의 크기가 증가함에 따라 해시 테이블 검색 회수가 급격히 1로 수렴할 수 있다.
그래프(1311)은 제3 실시예에 따른 스트링 정보 검색 장치(120)의 최대 해시 테이블 접근 회수이고, 그래프(1321)은 제4 실시예에 따른 스트링 정보 검색 장치(120)의 최대 해시 테이블 접근 회수일 수 있다.
이때, 이론적인 최대 해시 테이블 접근 회수는 W까지 가능할 수 있다. 그러나, 블룸 필터 크가 8T'인 경우, 모든 라우팅 정보에 대한 해시 테이블 접근 회수는 3번 이하이며, 블룸 필터의 크기가 커짐에 따라 1로 수렴할 수 있다. 이때, 라우팅 정보는 라우팅 테이블에 포함된 스트링 정보일 수 있다.
또한, 블룸 필터 크기에 따른 성능 평가는 표 4와 같을 수 있다.
Figure 112015017040114-pat00013
이때, α 항목은 블룸 필터의 크기가 기본 크기의 몇 배인지를 표시하는 항목이고, M 항목은 실제 메모리 소모양을 킬로바이트(KB)로 표시하는 항목일 수 있다. 또한,
Figure 112015017040114-pat00014
항목은 평균 해시 테이블 접근 회수를 표시하는 항목이고,
Figure 112015017040114-pat00015
는 최대 해시 테이블 접근 회수를 표시하는 항목일 수 있다. 그리고,
Figure 112015017040114-pat00016
항목은 평균 블룸 필터 쿼리 회수를 표시하는 항목이고,
Figure 112015017040114-pat00017
은 해시 테이블 한 번 접근으로 검색이 완료되는 비율을 표시하는 항목일 수 있다.
그래프(1310), 그래프(1320), 그래프(1311), 그래프(1321) 및 표 4에 따르면, 블룸 필터의 크기가 커질수록
Figure 112015017040114-pat00018
Figure 112015017040114-pat00019
가 1로 수렴하여 모든 검색이 한 번의 오프-칩 메모리 접근으로 완료됨을 볼 수 있다. 그러나,
Figure 112015017040114-pat00020
은 라우팅 테이블의 프리픽스 분포에 영향을 받는 값이므로 블룸 필터 크기에 큰 영향을 받지 않을 수 있다.
도 14는 스트링 정보 검색 방법의 해시 테이블 접근 회수의 비교 결과이다.
도 14는 WBSL-BF(Waldvogel's Binary Search on Length-BF), LBSL-BF(Leaf-Pushing Binary Search on Length-BF), 본 발명의 제3 실시예 및 제4 실시예에서 블룸 필터의 크기가 거짓 양성이 발생하지 않는 블룸 필터 크기인 경우, 종래의 스트링 정보 검색 기술인 WBSL-BF, LBSL-BF와 본 발명의 제3 실시예 및 제4 실시예의 성능을 비교한 결과이다. 구체적으로, 그래프(1410)는 성능 비교 결과에 따른 평균 해시 테이블 접근 회수를 표시하고, 그래프(1420)는 최대 해시 테이블 접근 회수를 표시할 수 있다.
또한, 표 5는 성능 비교 결과에 따른 평균 해시 접근 회수와 블룸 필터 접근 회수일 수 있다.
Figure 112015017040114-pat00021
그래프(1410), 및 표 5에 도시된 바와 같이 본 발명의 제3 실시예 및 제4 실시예는 WBSL-BF, LBSL-BF보다 해시 테이블의 접근 회수가 적고, 블룸 필터의 쿼리 회수가 클 수 있다. 즉, 본 발명의 제3 실시예 및 제4 실시예는 블룸 필터의 쿼리를 더 많이 수행하여 해시 테이블의 접근 회수를 최소화할 수 있다. 이때, 블룸 필터는 칩 안에 저장되므로, 블룸 필터의 쿼리를 수행하기 위하여 접근하는 시간이 매우 짧을 수 있다. 따라서, 블룸 필터의 쿼리를 수행하는 회수가 증가하라도 칩 외부에 위치한 해시 테이블에 접근하는 회수가 최소화되면 최종적으로 검색에 필요한 시간이 감소될 수 있다.
또한, WBSL-BF, LBSL-BF와 본 발명의 제3 실시예 및 제4 실시예가 각각 해시 테이블 엔트리에 저장하는 노드의 개수는 표 6과 같을 수 있다. 본 발명의 제3 실시예 및 제4 실시예는 메모리를 개선하기 위한 해시 테이블 생성부(112)의 실시예에 의하여 WBSL-BF나 LBSL-BF보다 더 적은 메모리를 사용할 수 있다.
Figure 112015017040114-pat00022
도 15는 스트링 정보 검색 방법의 테이블 메모리 사용량의 비교 결과이다.
도 15는 WBSL-BF, LBSL-BF, 본 발명의 제3 실시예 및 제4 실시예가 사용하는 해시 테이블의 크기를 비교한 결과이다.
이때, 그래프(1510)는 라우팅 테이블 MAE-WEST에서 WBSL-BF, LBSL-BF, 본 발명의 제3 실시예 및 제4 실시예가 각각 사용하는 해시 테이블의 크기이고, 그래프(1520)는 라우팅 테이블 MAE-EAST에서 WBSL-BF, LBSL-BF, 본 발명의 제3 실시예 및 제4 실시예가 각각 사용하는 해시 테이블의 크기일 수 있다.
또한, 그래프(1530)는 라우팅 테이블 PORT80에서 WBSL-BF, LBSL-BF, 본 발명의 제3 실시예 및 제4 실시예가 각각 사용하는 해시 테이블의 크기이고, 그래프(1540)는 라우팅 테이블 Grouptlcom 에서 WBSL-BF, LBSL-BF, 본 발명의 제3 실시예 및 제4 실시예가 각각 사용하는 해시 테이블의 크기일 수 있다.
그리고, 그래프(1550)는 라우팅 테이블 Telstra에서 WBSL-BF, LBSL-BF, 본 발명의 제3 실시예 및 제4 실시예가 각각 사용하는 해시 테이블의 크기일 수 있다.
이때, 각각 해시 테이블 엔트리는 도 16에 도시된 바와 같이 6바이트의 넓이를 가질 수 있다.
도 17은 본 발명의 일실시예에 따른 스트링 정보 검색 방법을 도시한 플로우차트이다.
단계(1710)에서 프리픽스 길이 계산부(710)는 블룸 필터 생성부(113)가 생성한 블룸 필터로 검색하고자 하는 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 스트링 정보의 프리픽스 길이를 계산할 수 있다.
단계(1720)에서 프리픽스 정보 검색부(720)는 단계(1710)에서 계산된 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색할 수 있다.
도 18은 본 발명의 일실시예에 따른 스트링 정보 검색 방법의 프리픽스 길이 검색 과정을 도시한 플로우차트이다. 도 18의 단계(1810) 내지 단계(1860)는 도 17의 단계(1710)에 포함될 수 있다.
단계(1810)에서 프리픽스 길이 계산부(710)는 블룸 필터로 스트링 정보의 프리픽스 정보를 쿼리할 수 있다.
단계(1820)에서 프리픽스 길이 계산부(710)는 블룸 필터의 쿼리 결과가 양성인지 여부를 확인할 수 있다. 블룸 필터의 쿼리 결과가 양성인 경우, 프리픽스 길이 계산부(710)는 단계(1840)을 수행할 수 있다. 또한, 블룸 필터의 쿼리 결과가 음성인 경우, 프리픽스 길이 계산부(710)는 단계(1830)을 수행할 수 있다.
단계(1830)에서 프리픽스 길이 계산부(710)는 현재 프리픽스 길이를 스트링 정보의 프리픽스 길이로 계산할 수 있다.
단계(1840)에서 프리픽스 길이 계산부(710)는 프리픽스의 길이가 이진 트라이의 마지막 레벨에 대응하는지 여부를 확인할 수 있다. 프리픽스의 길이가 이진 트라이의 마지막 레벨에 대응하는 경우, 프리픽스 길이 계산부(710)는 단계(1830)을 수행할 수 있다. 또한, 프리픽스의 길이가 이진 트라이의 마지막 레벨에 대응하지 않는 경우, 프리픽스 길이 계산부(710)는 단계(1850)을 수행할 수 있다.
단계(1850)에서 프리픽스 길이 계산부(710)는 스트링 정보의 프리픽스 길이를 증가시킬 수 있다.
단계(1860)에서 프리픽스 길이 계산부(710)는 단계(1850)에서 증가된 프리픽스 길이에 따라 블룸 필터로 스트링 정보의 프리픽스 정보를 쿼리할 수 있다.
도 19는 본 발명의 일실시예에 따른 스트링 정보 검색 방법의 프리픽스 정보 검색 과정을 도시한 플로우차트이다. 도 19의 단계(1910) 내지 단계(1950)는 도 17의 단계(1720)에 포함될 수 있다.
단계(1910)에서 프리픽스 정보 검색부(720)는 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색할 수 있다.
단계(1920)에서 프리픽스 정보 검색부(720)는 해시 테이블에서 스트링 정보의 프리픽스 정보가 검색되었는지 여부를 확인할 수 있다. 프리픽스 정보가 검색된 경우, 프리픽스 정보 검색부(720)는 단계(1830)을 수행할 수 있다. 또한, 프리픽스 정보가 검색되지 않은 경우, 프리픽스 정보 검색부(720)는 단계(1840)을 수행할 수 있다.
단계(1930)에서 프리픽스 정보 검색부(720)는 검색된 프리픽스 정보에 따라 스트링 정보를 출력할 수 있다. 구체적으로, 프리픽스 정보 검색부(720)는 해시 함수로 검색된 프리픽스 정보에서 스트링 정보를 복호화하여 출력할 수 있다.
단계(1940)에서 프리픽스 정보 검색부(720)는 프리픽스 길이를 감소시킬 수 있다.
단계(1950)에서 프리픽스 정보 검색부(720)는 단계(1940)에서 감소된 프리픽스 길이에 대응하는 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색하는 백 트래킹을 수행할 수 있다.
도 20은 본 발명의 일실시예에 따른 검색 정보 구성 방법을 도시한 플로우차트이다.
단계(2010)에서 이진 트라이 생성부(111)는 두 개의 포인터를 가지는 노드들을 이용하여 이진 트라이를 생성할 수 있다. 이때, 이진 트라이 생성부(111)는 이진 트라이에서 프리픽스 정보가 저장되지 않은 내부 노드들을 식별할 수 있다. 이때, 이진 트라이 생성부(111)는 식별한 노드에서 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 계산할 수 있다. 그리고, 이진 트라이 생성부(111)는 계산한 프리픽스 정보를 식별한 노드에 저장할 수 있다.
그리고, 이진 트라이 생성부(111)는 이진 트라이의 내부 노드에 위치한 모든 프리픽스 정보를 리프 노드로 이동시킴으로써, 프리픽스 정보가 리프 노드에만 존재하도록 하는 리프 푸싱을 수행할 수도 있다.
단계(2020)에서 해시 테이블 생성부(112)는 단계(2010)에서 생성한 이진 트라이의 노드들 중에서 스트링 정보 검색 과정에서 접근되지 않는 노드를 추출할 수 있다. 이때, 해시 테이블 생성부(112)는 다음 레벨의 블룸 필터 쿼리 결과가 항상 양성이 되는 노드를 스트링 정보 검색 과정에서 접근되지 않는 노드로 추출할 수 있다. 예를 들어, 이진 트라이의 노드들 중에서 두 개의 자식 노드를 가지는 노드는 스트링 정보 검색 과정에서 접근되지 않는 노드일 수 있다.
단계(2030)에서 해시 테이블 생성부(112)는 이진 트라이의 레벨 별로 해시 테이블을 생성할 수 있다. 그리고, 해시 테이블 생성부(110)는 이진 트라이의 레벨이 동일한 적어도 하나의 노드를 하나의 해시 테이블 엔트리에 저장할 수 있다. 이때, 해시 테이블 생성부(110)는 이진 트라이의 레벨이 동일한 노드들 중에서 단계(2020)에서 추출한 노드를 제외한 나머지 노드를 해시 테이블 엔트리에 저장할 수 있다.
즉, 해시 테이블 생성부(112)는 이진 트라이의 노드들 중에서 스트링 정보 검색 과정에서 접근되지 않는 노드를 해시 테이블 엔트리에 저장하지 않음으로써, 검색 과정에서 사용되지 않는 노드를 해시 테이블 엔트리에 저장하기 위하여 불필요하게 저장 공간이 사용되는 것을 방지할 수 있다.
본 발명은 블룸 필터의 쿼리 결과가 음성이 될 때까지 블룸 필터의 쿼리를 연속적으로 수행하여 일치하는 프리픽스 중에서 길이가 가장 긴 이진 트라이의 레벨인 프리픽스 길이를 계산하고, 프리픽스 길이에 따른 노드의 해시 테이블에서 스트링 정보의 프리픽스 정보를 검색함으로써, 효율적으로 스트링 정보를 검색할 수 있다.
또한, 본 발명은 이진 트라이의 내부 노드들 각각과 일치하는 프리픽스 길이가 가장 긴 프리픽스 정보를 선 계산하고, 프리픽스 정보가 저장되지 않은 이진 트라이의 내부 노드에 선 계산한 프리픽스 정보를 저장함으로써, 백 트래킹 회수를 최소화할 수 있다.
그리고, 본 발명은 이진 트라이의 내부 노드에 저장된 모든 프리픽스 정보를 리프 노드로 이동시켜 프리픽스 정보가 리프 노트에만 저장되도록 함으로써, 백 트래킹 회수를 최소화할 수 있다.
또한, 본 발명은 이진 트라이의 노드들 중, 프리픽스 검색 과정에서 검색될 가능성이 없는 노드를 식별하고, 식별한 노드를 해시 테이블 엔트리에 저장하지 않음으로써, 검색 성능의 저하 없이 해시 테이블의 저장 공간을 최소화할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
110: 검색 정보 구성 장치
111: 이진 트라이 생성부
112: 해시 테이블 생성부
113: 블룸 필터 생성부
120: 스트링 정보 검색 장치
710: 프리픽스 길이 계산부
720: 프리픽스 정보 검색부

Claims (10)

  1. 이진 트라이(Binary trie)를 이용한 스트링 정보 검색 방법에 있어서,
    이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및
    계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계
    를 포함하고,
    상기 프리픽스 길이를 연쇄적으로 검색하는 단계는,
    상기 블룸 필터로 상기 스트링 정보의 프리픽스 정보를 쿼리하는 단계;
    상기 블룸 필터의 쿼리 결과가 양성인 경우, 상기 스트링 정보의 프리픽스 길이를 증가시키는 단계;
    증가된 프리픽스 길이에 따라 상기 블룸 필터로 상기 스트링 정보의 프리픽스 정보를 쿼리하는 단계;
    상기 블룸 필터의 쿼리 결과가 음성인 경우 마지막으로 양성 결과를 얻은 길이를 상기 스트링 정보의 프리픽스 길이로 결정하는 단계; 및
    증가된 프리픽스 길이가 이진 트라이의 마지막 레벨에 대응하는 경우, 현재 프리픽스 길이를 상기 스트링 정보의 프리픽스 길이로 결정하는 단계
    를 포함하는 스트링 정보 검색 방법.
  2. 삭제
  3. 이진 트라이(Binary trie)를 이용한 스트링 정보 검색 방법에 있어서,
    이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및
    계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계
    를 포함하고,
    상기 프리픽스 정보를 검색하는 단계는,
    상기 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계; 및
    상기 해시 테이블에서 상기 스트링 정보의 프리픽스 정보가 검색되지 않는 경우, 상기 프리픽스 길이를 순차적으로 감소하며, 감소된 프리픽스 길이에 대응하는 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계
    를 포함하는 스트링 정보 검색 방법.
  4. 이진 트라이를 이용한 스트링 정보 검색 방법에 있어서,
    이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및
    계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계
    를 포함하고,
    상기 해시 테이블은,
    이진 트라이의 프리픽스 정보가 저장되지 않은 내부 노드에 상기 내부 노드와 일치도가 가장 높은 프리픽스 정보를 포함하는 스트링 정보 검색 방법.
  5. 제4항에 있어서,
    검색된 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보가 검색되지 않는 경우, 상기 프리픽스 길이보다 1이 적은 프리픽스 길이에 대응하는 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보가 검색하는 단계
    를 더 포함하는 스트링 정보 검색 방법.
  6. 제4항에 있어서,
    상기 해시 테이블은,
    이진 트라이의 노드들 중에서 다음 레벨의 블룸 필터 쿼리 결과가 항상 양성이 되는 노드를 제외한 나머지 노드들이 저장되는 스트링 정보 검색 방법.
  7. 제6항에 있어서,
    상기 다음 레벨의 블룸 필터 쿼리 결과가 항상 양성이 되는 노드는,
    상기 이진 트라이의 노드들 중에서 두 개의 자식 노드를 가지는 노드인 스트링 정보 검색 방법.
  8. 이진 트라이를 이용한 스트링 정보 검색 방법에 있어서,
    이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및
    계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계
    를 포함하고,
    상기 이진 트라이는,
    리프 푸싱을 이용하여 상기 이진 트라이의 내부 노드에 저장된 프리픽스 정보들이 상기 이진 트라이의 리프 노드로 이동되는 스트링 정보 검색 방법.
  9. 제8항에 있어서,
    상기 해시 테이블은,
    이진 트라이의 노드들 중에서 다음 레벨의 블룸 필터 쿼리 결과가 항상 양성이 되는 노드를 제외한 나머지 노드들이 저장되는 스트링 정보 검색 방법.
  10. 이진 트라이를 이용한 스트링 정보 검색 방법에 있어서,
    이진 트라이의 레벨 정보에 기초한 블룸 필터로 스트링 정보의 프리픽스 정보를 연쇄적으로 쿼리하여 상기 스트링 정보의 프리픽스 길이를 계산하는 단계; 및
    계산된 프리픽스 길이에 대응하는 상기 이진 트라이의 레벨의 해시 테이블에서 상기 스트링 정보의 프리픽스 정보를 검색하는 단계
    를 포함하고,
    상기 해시 테이블은,
    이진 트라이의 노드들 중에서 다음 레벨의 블룸 필터 쿼리 결과가 항상 양성이 되는 노드를 제외한 나머지 노드들이 저장되는 스트링 정보 검색 방법.
KR1020150024480A 2015-02-17 2015-02-17 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 KR101587756B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150024480A KR101587756B1 (ko) 2015-02-17 2015-02-17 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150024480A KR101587756B1 (ko) 2015-02-17 2015-02-17 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101587756B1 true KR101587756B1 (ko) 2016-01-21

Family

ID=55308790

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150024480A KR101587756B1 (ko) 2015-02-17 2015-02-17 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101587756B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107870925A (zh) * 2016-09-26 2018-04-03 华为技术有限公司 一种字符串过滤方法和相关装置
CN112115312A (zh) * 2020-09-08 2020-12-22 湖南大学 数据名查找方法、系统及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100010987A (ko) * 2008-07-24 2010-02-03 이화여자대학교 산학협력단 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100010987A (ko) * 2008-07-24 2010-02-03 이화여자대학교 산학협력단 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107870925A (zh) * 2016-09-26 2018-04-03 华为技术有限公司 一种字符串过滤方法和相关装置
CN112115312A (zh) * 2020-09-08 2020-12-22 湖南大学 数据名查找方法、系统及存储介质
CN112115312B (zh) * 2020-09-08 2022-07-08 湖南大学 数据名查找方法、系统及存储介质

Similar Documents

Publication Publication Date Title
KR100962653B1 (ko) 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치
US8023519B2 (en) Dense mode coding scheme
US6697363B1 (en) Method and apparatus for longest matching prefix determination in a communication network
KR101028470B1 (ko) Ip주소 검색을 위한 장치 및 방법
US7986696B1 (en) Method and apparatus for longest prefix matching
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
CN106326475B (zh) 一种高效的静态哈希表实现方法及系统
CN110858823B (zh) 一种数据包的分类方法、装置及计算机可读存储介质
WO2015127721A1 (zh) 数据匹配的方法、装置及计算机存储介质
US10771386B2 (en) IP routing search
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
JP2016170526A (ja) 検索装置、検索方法、プログラム、及び記録媒体
US10515015B2 (en) Hash table-based mask length computation for longest prefix match caching
KR101587756B1 (ko) 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법
KR101582050B1 (ko) 블룸 필터 선―검색을 이용한 이름 검색 장치 및 방법
Moataz et al. Oblivious substring search with updates
CN106302178B (zh) 一种路由查询方法及装置
US10795580B2 (en) Content addressable memory system
CN113824814B (zh) 一种转发表的地址匹配方法、装置、网络设备及介质
EP3255571B1 (en) System and method for efficient interval search using locality-preserving hashing
EP3319279B1 (en) Ip routing lookup
Matoušek et al. Towards hardware architecture for memory efficient IPv4/IPv6 Lookup in 100 Gbps networks
JP3754043B2 (ja) データ検索装置
Wang et al. Efficient IP address lookup with a counting Bloom filter in Trie-based algorithms
Park et al. A fast IP address lookup algorithm based on search space reduction

Legal Events

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

Payment date: 20190102

Year of fee payment: 4