KR101787899B1 - A bitmap generating method based on priority-name prefix trie and name prefix searching method using the bitmap - Google Patents

A bitmap generating method based on priority-name prefix trie and name prefix searching method using the bitmap Download PDF

Info

Publication number
KR101787899B1
KR101787899B1 KR1020160070526A KR20160070526A KR101787899B1 KR 101787899 B1 KR101787899 B1 KR 101787899B1 KR 1020160070526 A KR1020160070526 A KR 1020160070526A KR 20160070526 A KR20160070526 A KR 20160070526A KR 101787899 B1 KR101787899 B1 KR 101787899B1
Authority
KR
South Korea
Prior art keywords
name prefix
node
priority
name
bitmap
Prior art date
Application number
KR1020160070526A
Other languages
Korean (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 이화여자대학교 산학협력단
Priority to KR1020160070526A priority Critical patent/KR101787899B1/en
Application granted granted Critical
Publication of KR101787899B1 publication Critical patent/KR101787899B1/en

Links

Images

Classifications

    • G06F17/30324
    • G06F17/30327
    • G06F17/30336
    • G06F17/30339
    • G06F17/30424
    • H04L61/305
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/30Types of network names
    • H04L2101/35Types of network names containing special prefixes

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법 및 상기 비트맵을 이용한 이름 프리픽스 검색 방법이 개시된다. 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법은 이름 프리픽스 트라이(Name Prefix Trie, NPT)에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이(Priority-Name Prefix Trie, P-NPT)를 결정하는 단계; 상기 우선순위-이름 프리픽스 트라이로부터 비트맵 테이블, 인코딩 테이블 및 노드 테이블를 포함하는 비트맵을 생성하는 단계; 및 상기 생성된 비트맵을 저장하는 단계를 포함할 수 있다.A method of generating a bitmap based on a priority name prefix trie and a method of searching for a name prefix using the bitmap are disclosed. Priority Name Prefix Trie-based bitmap generation methods include a Priority-Name Prefix Trie (P-TEF) including priority nodes and non-priority nodes derived from a Name Prefix Trie (NPT) NPT); Generating a bitmap including a bitmap table, an encoding table and a node table from the priority-name prefix trie; And storing the generated bitmap.

Figure R1020160070526
Figure R1020160070526

Description

우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법 및 상기 비트맵을 이용한 이름 프리픽스 검색 방법{A BITMAP GENERATING METHOD BASED ON PRIORITY-NAME PREFIX TRIE AND NAME PREFIX SEARCHING METHOD USING THE BITMAP}BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method for generating a bitmap based on a priority name prefix trie and a method for searching for a name prefix using the bitmap,

본 발명은 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법 및 상기 비트맵을 이용한 이름 프리픽스 검색 방법에 관한 것으로, 보다 구체적으로는 이름 프리픽스 트라이(Name Prefix Trie, NPT)에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이(Priority-Name Prefix Trie, P-NPT)를 결정하고, 결정된 우선순위-이름 프리픽스 트라이로부터 생성된 비트맵(비트맵 테이블, 인코딩 테이블 및 노드 테이블)을 이용하여 입력 패킷에 대한 이름 프리픽스를 검색하는 방법에 관한 것이다. The present invention relates to a method for generating a bitmap based on a priority name prefix trie and a method for searching for a name prefix using the bitmap. More specifically, the present invention relates to a priority node derived from a name prefix trie (NPT) (Bitmap table, encoding table and node table) generated from the determined priority-name prefix trie are determined based on the priority-name prefix trie (P-NPT) To retrieve a name prefix for an input packet.

현재의 인터넷은 TCP/IP를 기반으로 하는 자원(resource) 공유를 목적으로 개발되었다. 따라서, 이러한 TCP/IP 기반의 인터넷은 두 종단 시스템(end-system)간의 데이터 전송에 적합하다. 하지만, 오늘날 인터넷 트래픽은 단순한 데이터 전송이 아닌 웹 스트리밍, 비디오 전송, P2P(peer-to-peer)기반의 파일 공유 등 대용량 콘텐츠의 분배 및 응용이 주를 이룬다. 이러한 인터넷 트래픽 양상의 변화로 인하여 기존의 인터넷은 대역폭(bandwidth)부족, 서비스 품질의 저하 등의 한계점을 드러내고 있다. 이와 같은 인터넷의 문제를 해결하기 위해 미래인터넷의 한 형태로 제안된 것이 NDN(Named Data Network)이다. The current Internet has been developed for the purpose of sharing resources based on TCP / IP. Therefore, such TCP / IP based Internet is suitable for data transmission between two end systems. Today, however, Internet traffic is not simply data transmission, but distribution and application of large-capacity contents such as web streaming, video transmission, peer-to-peer (P2P) Due to such changes in the Internet traffic pattern, the existing Internet shows limitations such as lack of bandwidth and deterioration of service quality. Named Data Network (NDN) is proposed as a form of future Internet to solve the problems of the Internet.

기존의 인터넷 라우터와 NDN 라우터에서는 가장 길게 일치하는 프리픽스(longest prefix)를 기반으로 패킷 전송이 이루어진다. 그러나 이와 같이 가장 길게 일치하는 프리픽스를 찾는 과정에서 기존의 인터넷 라우터는 IP주소를 사용하지만, NDN 라우터는 콘텐츠의 이름을 사용한다는 점에서 차이가 있다. 콘텐츠의 이름은 고정된 길이를 갖는 IP주소와는 달리 길이와 형태의 제약이 없기 때문에, NDN 라우터의 FIB(Forwarding Information Base)테이블을 구현하기 위해서는 많은 메모리가 필요하다. 이러한 이유로, NDN 라우터의 FIB테이블은 칩-외부메모리(off-chip memory)를 이용하여야만 구현이 가능하다. In existing Internet routers and NDN routers, packet transmission is performed based on the longest prefix. However, in the process of finding the longest matching prefix, the existing Internet router uses the IP address, but the NDN router uses the name of the content. Since the name of the content is not limited by the length and the format, unlike the IP address having the fixed length, a large amount of memory is required to implement the forwarding information base (FIB) table of the NDN router. For this reason, the FIB table of the NDN router can only be implemented using chip-off-chip memory.

하지만, DRAM과 같은 칩-외부메모리를 사용하여 프로세싱할 때 걸리는 시간은 SRAM과 같은 칩-내부메모리를 사용하여 프로세싱할 때 걸리는 시간의 약 10~20배에 달한다. 칩-외부메모리에 저장된 FIB테이블을 사용하여 가장 길게 일치하는 프리픽스를 찾는 과정은 전체 패킷 전송 속도를 저하시키는 큰 요인이 되고 있다. 라우터에서는 패킷 선-속도(wire-speed)에 맞추어 패킷 전송이 이루어져야 하기 때문에, FIB테이블에서의 검색 속도 저하는 라우터의 성능저하로 직결된다. However, the processing time using a chip-external memory such as DRAM is about 10 to 20 times the processing time using chip-internal memory such as SRAM. The process of finding the longest matching prefix using the FIB table stored in the chip-external memory is a major factor in lowering the overall packet transmission rate. In the router, packet transmission must be performed in accordance with the packet wire-speed, so that the reduction in the search speed in the FIB table is directly related to the performance degradation of the router.

본 발명은 이름 프리픽스 트라이(Name Prefix Trie, NPT)에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이(Priority-Name Prefix Trie, P-NPT)를 결정하고, 결정된 우선순위-이름 프리픽스 트라이로부터 생성된 비트맵(비트맵 테이블, 인코딩 테이블 및 노드 테이블)을 이용하여 입력 패킷에 대한 이름 프리픽스를 검색함으로써 이름 프리픽스 검색 능력을 향상시킬 수 있는 장치 및 방법을 제공한다.The present invention determines a priority-name prefix trie (P-NPT) including a priority node and a non-priority node derived from a name prefix trie (NPT) The present invention provides an apparatus and method for improving a name prefix search capability by retrieving a name prefix for an input packet using a bit map (bit map table, encoding table and node table) generated from a name prefix trie.

본 발명의 일실시예에 따른 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법은 이름 프리픽스 트라이(Name Prefix Trie, NPT)에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이(Priority-Name Prefix Trie, P-NPT)를 결정하는 단계; 상기 우선순위-이름 프리픽스 트라이로부터 비트맵 테이블, 인코딩 테이블 및 노드 테이블을 포함하는 비트맵을 생성하는 단계; 및 상기 생성된 비트맵을 저장하는 단계를 포함할 수 있다.A method for generating a bitmap based on a priority name prefix trie according to an embodiment of the present invention includes a priority-name prefix trie including a priority node and a non-priority node derived from a name prefix trie (NPT) Priority-Name Prefix Trie, P-NPT); Generating a bitmap including a bitmap table, an encoding table and a node table from the priority-name prefix trie; And storing the generated bitmap.

상기 결정하는 단계는 상기 이름 프리픽스 트라이에서 이름 프리픽스를 가지지 않는 빈 노드가 루트 노드로 설정된 서브 트라이를 결정하는 단계; 상기 서브 트라이에서 이름 프리픽스를 가지는 적어도 하나의 삽입 노드들 중 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드를 우선순위 노드로 결정하여 상기 서브 트라이의 루트 노드로 대체하는 단계를 포함할 수 있다.Wherein the determining step comprises: determining a subtree in which an empty node having no name prefix in the name prefix tri is set as a root node; Determining an insertion node storing a name prefix having the largest number of components among at least one insertion node having a name prefix in the subtree as a priority node and replacing the insertion node with a root node of the subtree.

상기 생성하는 단계는 상기 우선순위-이름 프리픽스 트라이에 포함된 우선순위 노드 및 상기 우선순위 노드를 제외한 삽입 노드를 나타내는 비우선순위 노드의 노드 번호를 상기 비트맵 테이블의 인덱스 번호 및 노드 테이블의 인덱스 번호 각각에 매칭할 수 있다.Wherein the step of generating the node number of the priority node included in the priority-name prefix triangle and the node number of the non-priority node indicating the inserted node excluding the priority node is performed by using the index number of the bitmap table and the index number of the node table . ≪ / RTI >

상기 비트맵 테이블은 (i) 상기 우선순위-이름 프리픽스 트라이에 포함된 노드들이 우선순위 노드 또는 비우선순위 노드인지 여부를 나타내는 노드 타입, (ii) 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스를 구성하는 컴포넌트의 개수를 나타내는 컴포넌트, (iii) 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스에 해시 함수를 적용하여 도출된 핑거프린트(fingerprint)를 나타내는 해시브리프, (iv) 우선순위-이름 프리픽스 트라이에 포함된 노드들에 대한 자식 노드의 개수를 나타내는 차일드 개수 정보 및 (iv) 우선순위-이름 프리픽스 트라이에 포함된 노드들의 첫번째 자식 노드로의 경로에 해당하는 인코딩 테이블의 주소값을 나타내는 차일드 포인터 정보 중 적어도 하나의 정보를 포함할 수 있다.The bitmap table includes (i) a node type indicating whether the nodes included in the priority-name prefix trie are priority nodes or non-priority nodes, (ii) a node type indicating whether nodes included in the priority-name prefix tri (Iii) a hash brief that indicates a fingerprint derived by applying a hash function to a name prefix stored in each of the nodes included in the priority-name prefix triad, (iii) a component representing the number of components constituting the stored name prefix, (iv) Child number information indicating the number of child nodes for the nodes included in the priority-name prefix trie, and (iv) Encoding corresponding to the path to the first child node of the nodes included in the priority- And at least one of the child pointer information indicating the address value of the table have.

상기 인코딩 테이블은 상기 우선순위-이름 프리픽스 트라이에 포함된 우선순위 노드와 비우선순위 노드 각각의 자식 노드에 대한 에지(edge) 정보 및 상기 우선순위 노드 및 비우선순위 노드와 상기 자식 노드 간의 인덱스 번호 차이를 나타내는 인코딩 번호를 포함할 수 있다.Wherein the encoding table includes edge information for child nodes of the priority node and the non-priority node included in the priority-name prefix triangle, and edge information for the child nodes of the priority node and the non-priority node, Quot; < / RTI >

상기 노드 테이블은 상기 우선순위-이름 프리픽스 트라이의 우선순위 노드와 비우선순위 노드 각각에 포함된 이름 프리픽스와 상기 이름 프리픽스에 대응하는 출력 페이스를 포함할 수 있다.The node table may include a name prefix included in each of the priority node and the non-priority node of the priority-name prefix trie, and an output face corresponding to the name prefix.

상기 저장하는 단계는 상기 비트맵 테이블 및 인코딩 테이블은 이름 프리픽스를 검색하는 칩의 내부 메모리에 저장하고, 상기 노드 테이블은 이름 프리픽스를 검색하는 칩의 외부 메모리에 저장할 수 있다.The storing step may store the bitmap table and the encoding table in an internal memory of a chip that retrieves a name prefix, and the node table may store the name prefix in an external memory of a chip that retrieves a name prefix.

본 발명의 일실시예에 따른 이름 프리픽스 검색 방법은 이름 프리픽스 트라이에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이에 기초하여 생성된 비트맵을 식별하는 단계; 및 상기 식별된 비트맵을 이용하여 입력 패킷의 이름 프리픽스와 가장 많은 컴포넌트가 일치하는 우선순위-이름 프리픽스 트라이 내의 이름 프리픽스를 검색하는 단계;를 포함하고, 상기 비트맵은 비트맵 테이블, 인코딩 테이블 및 노드 테이블로 구성될 수 있다.A method for searching for a name prefix according to an embodiment of the present invention includes: identifying a bitmap generated based on a priority-name prefix triangle including a priority node and a non-priority node derived from a name prefix triage; And searching for a name prefix in a priority-name prefix triangle in which the name component of the input packet matches the most components using the identified bitmap, wherein the bitmap includes a bitmap table, an encoding table, And a node table.

상기 검색하는 단계는 상기 입력 패킷의 이름 프리픽스를 검색하기 위해 접근한 상기 비트맵 테이블의 노드 타입에 기초하여 상기 우선순위-이름 프리픽스 트라이에 포함된 노드가 우선순위- 노드인지 또는 비우선순위 노드인지 확인하는 단계; 및 상기 우선순위-이름 프리픽스 트라이에 포함된 노드가 비우선순위 노드로 확인되면, 상기 확인된 비우선순위 노드의 인덱스 번호와 동일한 노드 테이블의 인덱스 번호에 접근하여 출력 페이스를 추출하는 단계를 포함할 수 있다.The searching step may include determining whether a node included in the priority-name prefix trie is a priority-node or a non-priority node based on a node type of the bitmap table accessed to search for a name prefix of the input packet ; And extracting an output face by accessing an index number of a node table identical to the index number of the verified non-priority node when the node included in the priority-name prefix tri is identified as a non-priority node .

상기 추출하는 단계 이후에 상기 입력 패킷의 이름 프리픽스를 검색하기 위해 접근한 상기 비트맵 테이블의 비우선순위 노드가 자식 노드를 가지는지 여부를 확인하는 단계; 상기 비우선순위 노드가 자식 노드를 가지는 것으로 확인된 경우, 상기 비트맵 테이블의 차일드 포인터 정보를 이용하여 인코딩 테이블에 접근하고, 상기 인코딩 테이블을 이용하여 다음에 검색을 진행할 경로와 일치하는 자식 노드에 대한 에지 정보를 확인하는 단계; 상기 일치하는 자식 노드에 대한 에지 정보가 확인된 경우, 상기 입력 패킷의 이름 프리픽스를 검색하기 위해 접근한 상기 비트맵 테이블의 비우선순위 노드에 대한 인덱스 번호와 상기 확인된 에지 정보에 대응하는 인코딩 번호를 이용하여 다음에 검색을 진행할 비트맵 테이블의 인덱스를 결정하는 단계를 더 포함할 수 있다.Confirming whether the non-priority node of the bitmap table accessed to retrieve the name prefix of the input packet after the extracting has a child node; Accessing the encoding table using the child pointer information of the bitmap table when the non-priority node has determined that the child node has the child node, Checking edge information; An index number for a non-priority node of the bitmap table accessed to search for a name prefix of the input packet, and an encoding number corresponding to the identified edge information if the edge information for the matching child node is identified And determining an index of the bitmap table to be searched next.

상기 검색하는 단계는 상기 입력 패킷의 이름 프리픽스를 검색하기 위해 접근한 상기 비트맵 테이블의 노드 타입에 기초하여 상기 우선순위-이름 프리픽스 트라이에 포함된 노드가 우선순위 노드인지 비우선순위 노드인지 확인하는 단계; 상기 우선순위-이름 프리픽스 트라이에 포함된 노드가 우선순위 노드로 확인되면, 상기 입력 패킷의 이름 프리픽스에 대한 해시 값과 상기 비트맵 테이블에 포함된 해시브리프가 일치하는지 비교하는 단계; 상기 입력 패킷의 이름 프리픽스에 대한 해시 값과 상기 비트맵 테이블에 포함된 해시브리프가 일치하는 경우, 비트맵 테이블의 인덱스 번호와 동일한 노드 테이블의 인덱스 번호에 접근하여 상기 입력 패킷의 이름 프리픽스와 상기 노드 테이블에 저장된 이름 프리픽스와 일치하는지 비교하는 단계; 및 상기 입력 패킷의 이름 프리픽스와 상기 노드 테이블에 저장된 이름 프리픽스와 일치하는 경우, 출력 페이스를 추출하는 단계를 포함할 수 있다.Wherein the searching step comprises: checking whether a node included in the priority-name prefix trie is a priority node or a non-priority node based on a node type of the bitmap table accessed to search for a name prefix of the input packet ; Comparing the hash value of the name prefix of the input packet with the hash brief included in the bitmap table if the node included in the priority-name prefix triangle is identified as a priority node; If a hash value of a name prefix of the input packet matches a hash brief included in the bitmap table, accessing an index number of a node table that is the same as an index number of the bitmap table, Comparing a name prefix stored in the table with a name prefix; And extracting an output face if the name prefix of the input packet and the name prefix stored in the node table coincide with each other.

상기 우선순위-이름 프리픽스 트라이는 상기 이름 프리픽스 트라이에서 이름 프리픽스를 가지지 않는 빈 노드를 루트 노드로 설정하는 서브 트라이를 결정하고, 상기 서브 트라이에서 이름 프리픽스를 가지는 적어도 하나의 삽입 노드들 중 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드를 우선순위 노드로 결정하여 상기 서브 트라이의 루트 노드로 대체함으로써 생성될 수 있다.Wherein the priority-name prefix trie determines a subtree setting an empty node having no name prefix to the root node in the name prefix triad, and wherein in the subtree the largest number of at least one insertion node having a name prefix , And replacing the insertion node storing the name prefix having the name prefix with the root node of the subtree as a priority node.

상기 비트맵은 상기 우선순위-이름 프리픽스 트라이에 포함된 우선순위 노드 및 상기 우선순위 노드를 제외한 삽입 노드를 나타내는 비우선순위 노드의 노드 번호를 상기 비트맵 테이블의 인덱스 번호 및 노드 테이블의 인덱스 번호 각각에 매칭함으로써 생성될 수 있다.The bitmap may include a priority node included in the priority-name prefix trie and a node number of a non-priority node indicating an insertion node excluding the priority node to an index number of the bitmap table and an index number of the node table As shown in FIG.

비트맵 테이블은 (i) 상기 우선순위-이름 프리픽스 트라이에 포함된 노드들이 우선순위 노드 또는 비우선순위 노드인지 여부를 나타내는 노드 타입, (ii) 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스를 구성하는 컴포넌트의 개수를 나타내는 컴포넌트, (iii) 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스에 해시 함수를 적용하여 도출된 핑거프린트(fingerprint)를 나타내는 해시브리프, (iv) 우선순위-이름 프리픽스 트라이에 포함된 노드들에 대한 자식 노드의 개수를 나타내는 차일드 개수 정보 및 (iv) 우선순위-이름 프리픽스 트라이에 포함된 노드들의 첫번째 자식 노드로의 경로에 해당하는 인코딩 테이블의 주소값을 나타내는 차일드 포인터 정보 중 적어도 하나의 정보를 포함할 수 있다.The bitmap table includes (i) a node type indicating whether the nodes included in the priority-name prefix trie are priority nodes or non-priority nodes, (ii) a node type stored in each of the nodes included in the priority- (Iii) a hash brief that indicates a fingerprint derived by applying a hash function to a name prefix stored in each of the nodes included in the priority-name prefix trie; (iii) a component indicating the number of components constituting the name prefix; iv) a child number information indicating the number of child nodes for the nodes included in the priority-name prefix trie, and (iv) an encoding table corresponding to the path to the first child node of the nodes included in the priority- And child pointer information indicating an address value of the child pointer information .

상기 인코딩 테이블은 상기 우선순위-이름 프리픽스 트라이에 포함된 우선순위 노드와 비우선순위 노드 각각의 자식 노드에 대한 에지(edge) 정보 및 상기 우선순위 노드 및 비우선순위 노드와 상기 자식 노드 간의 인덱스 번호 차이를 나타내는 인코딩 번호를 포함할 수 있다.Wherein the encoding table includes edge information for child nodes of the priority node and the non-priority node included in the priority-name prefix triangle, and edge information for the child nodes of the priority node and the non-priority node, Quot; < / RTI >

상기 노드 테이블은 상기 우선순위-이름 프리픽스 트라이의 우선순위 노드와 비우선순위 노드 각각에 포함된 이름 프리픽스와 상기 이름 프리픽스에 대응하는 출력 페이스를 포함할 수 있다.The node table may include a name prefix included in each of the priority node and the non-priority node of the priority-name prefix trie, and an output face corresponding to the name prefix.

상기 비트맵 테이블 및 인코딩 테이블은 이름 프리픽스를 검색하는 칩의 내부 메모리에 저장되고, 상기 노드 테이블은 이름 프리픽스를 검색하는 칩의 외부 메모리에 저장될 수 있다.The bitmap table and the encoding table are stored in an internal memory of a chip retrieving a name prefix, and the node table can be stored in an external memory of a chip retrieving a name prefix.

본 발명의 일실시예에 의하면, 이름 프리픽스 트라이(Name Prefix Trie, NPT)에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이(Priority-Name Prefix Trie, P-NPT)를 결정하고, 결정된 우선순위-이름 프리픽스 트라이로부터 생성된 비트맵(비트맵 테이블, 인코딩 테이블 및 노드 테이블)을 이용하여 입력 패킷에 대한 이름 프리픽스를 검색함으로써 이름 프리픽스 검색 능력을 향상시킬 수 있다.According to an embodiment of the present invention, a priority-name prefix trie (P-NPT) including a priority node and a non-priority node derived from a name prefix trie (NPT) And search for the name prefix for the input packet using the bitmap (bitmap table, encoding table, and node table) generated from the determined priority-name prefix trie to improve the name prefix search capability.

본 발명의 일실시예에 의하면, 우선순위-이름 프리픽스 트라이로부터 생성된 비트맵(비트맵 테이블, 인코딩 테이블 및 노드 테이블)을 이름 프리픽스를 검색하는 칩의 내부 메모리 및 외부 메모리에 나누어 저장함으로써 이름 프리픽스 검색 능력을 향상시킬 수 있다.According to an embodiment of the present invention, a bitmap (bitmap table, encoding table, and node table) generated from a priority-name prefix trie is divided and stored in an internal memory and an external memory of a chip that searches for a name prefix, The search ability can be improved.

도 1은 본 발명의 일실시예에 따른 이름 프리픽스 검색 장치를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 이름 프리픽스의 예시 세트 및 상기 예시 세트를 이용하여 구축된 이름 프리픽스 트라이의 예를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 우선순위 이름 프리픽스 트라이의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 우선순위 이름 프리픽스 트라이 기반의 비트맵 예를 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 비우선순위로 판단된 우선순위 이름 프리픽스 트라이의 노드에 대한 이름 프리픽스 검색 방법을 순서대로 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 우선순위로 판단된 우선순위 이름 프리픽스 트라이의 노드에 대한 이름 프리픽스 검색 방법을 순서대로 도시한 도면이다.
1 is a diagram illustrating a name prefix search apparatus according to an embodiment of the present invention.
2 is an exemplary set of name prefixes and an example of a name prefix trie constructed using the example set in accordance with an embodiment of the present invention.
3 is a diagram illustrating an example of a priority name prefix triangle according to an embodiment of the present invention.
FIG. 4 is a diagram illustrating an example of a bitmap based on a priority name prefix triangle according to an embodiment of the present invention.
FIG. 5 is a diagram illustrating a method of searching for a name prefix for a node of a priority name prefix triad determined to be nonpriority according to an exemplary embodiment of the present invention.
FIG. 6 is a diagram illustrating a method of searching for a name prefix for a node of a priority name prefix triage determined to have a priority according to an embodiment of the present invention.

본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.It is to be understood that the specific structural or functional descriptions of embodiments of the present invention disclosed herein are presented for the purpose of describing embodiments only in accordance with the concepts of the present invention, May be embodied in various forms and are not limited to the embodiments described herein.

본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Embodiments in accordance with the concepts of the present invention are capable of various modifications and may take various forms, so that the embodiments are illustrated in the drawings and described in detail herein. However, it is not intended to limit the embodiments according to the concepts of the present invention to the specific disclosure forms, but includes changes, equivalents, or alternatives falling within the spirit and scope of the present invention.

제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.The terms first, second, or the like may be used to describe various elements, but the elements should not be limited by the terms. The terms may be named for the purpose of distinguishing one element from another, for example without departing from the scope of the right according to the concept of the present invention, the first element being referred to as the second element, Similarly, the second component may also be referred to as the first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between. Expressions that describe the relationship between components, for example, "between" and "immediately" or "directly adjacent to" should be interpreted as well.

본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, the terms "comprises ", or" having ", and the like, are used to specify one or more of the features, numbers, steps, operations, elements, But do not preclude the presence or addition of steps, operations, elements, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.

이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. However, the scope of the patent application is not limited or limited by these embodiments. Like reference symbols in the drawings denote like elements.

도 1은 본 발명의 일실시예에 따른 이름 프리픽스 검색 장치를 도시한 도면이다.1 is a diagram illustrating a name prefix search apparatus according to an embodiment of the present invention.

이름 프리픽스 검색 장치(100)는 프로세서(110), 프로세서의 내부에 배치된 내부 메모리(120) 및 프로세서의 외부에 배치된 외부 메모리(130)로 구성될 수 있다. 이때, 프로세서(110)는 하나의 칩으로 구현될 수 있다. 그래서, 프로세서(110)가 입력 패킷에 대한 이름 프리픽스를 검색하기 위해 프로세서(110)의 내부에 배치된 내부 메모리(120)를 이용하는 경우, 이름 프리픽스 검색은 온-칩(On-Chip)에서 진행될 수 있다. 하지만, 프로세서(110)가 이름 프리픽스를 검색하기 위해 프로세서(110)의 외부에 배치된 외부 메모리(130)를 이용하는 경우, 이름 프리픽스 검색은 오프-칩(Off-Chip)에서 진행될 수 있다. The name prefix search apparatus 100 may include a processor 110, an internal memory 120 disposed inside the processor, and an external memory 130 disposed outside the processor. At this time, the processor 110 may be implemented as one chip. Thus, if the processor 110 utilizes the internal memory 120 disposed within the processor 110 to retrieve the name prefix for the input packet, the name prefix search may proceed on-chip have. However, if the processor 110 uses the external memory 130 located outside the processor 110 to retrieve the name prefix, the name prefix search may be performed off-chip.

이 때, 오프-칩에서 진행되는 이름 프리픽스 검색은 외부 메모리(130)로의 접근 시간으로 인해 온-칩에서 진행되는 이름 프리픽스 검색보다 검색 속도가 늦다. 즉, 오프-칩에서 이름 프리픽스를 검색하는 것은 소용되는 시간이 매우 길어 이름 프리픽스를 검색하는 속도에 가장 큰 영향을 미치므로 오프-칩의 접근 횟수를 이름 프리픽스 검색에 대한 성능평가의 지표로 삼을 수 있다.At this time, the search for the name prefix in the off-chip is slower than the searching for the name prefix in the on-chip due to the access time to the external memory 130. That is, searching for a name prefix on the off-chip has the greatest effect on the speed of searching for a name prefix because it takes a long time to use it, so the number of off-chip accesses is used as an index of performance evaluation for a name prefix search .

따라서, 이름 프리픽스 검색 장치(100)는 입력 패킷에 대한 이름 프리픽스 검색에 걸리는 시간을 줄이기 위하여 FIB 테이블을 프로세서(110)의 내부 메모리(120) 및 외부 메모리(130)에 분할하여 저장할 수 있다.Accordingly, the name prefix search apparatus 100 may divide and store the FIB table in the internal memory 120 and the external memory 130 of the processor 110 to reduce the time taken to search for a name prefix for an input packet.

구체적으로 이름 프리픽스 검색 장치(100)는 이름 프리픽스 트라이에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이에 기초하여 생성된 비트맵을 식별하고, 식별된 비트맵에 기초하여 입력 패킷에 대한 이름 프리픽스를 검색할 수 있다. 즉, 이름 프리픽스 검색 장치(100)는 비트맵 중 우선순위-이름 프리픽스 트라이의 윤곽 정보를 포함하는 비트맵 테이블과 인코딩 테이블을 내부 메모리(120)에 저장하고, 우선순위-이름 프리픽스 트라이에 포함된 각각의 노드에 대한 실질적인 정보인 이름 프리픽스와 출력 페이스를 외부 메모리(130)에 저장함으로써 외부 메모리(130)에서의 프로세싱을 최소화할 수 있다. 이때, 우선순위-이름 프리픽스 트라이를 결정하는 방법과 비트맵을 생성하는 방법은 추후 도면을 통해 자세히 설명하도록 한다.Specifically, the name prefix search apparatus 100 identifies a bitmap generated based on a priority-name prefix triangle including a priority node and a non-priority node derived from a name prefix triage, and based on the identified bitmap The name prefix for the input packet can be retrieved. That is, the name prefix search apparatus 100 stores the bitmap table and the encoding table including the outline information of the priority-name prefix trie among the bitmaps in the internal memory 120, The processing in the external memory 130 can be minimized by storing the name prefix and the output face, which are substantial information on each node, in the external memory 130. [ At this time, a method of determining the priority-name prefix trie and a method of generating the bitmap will be described later in detail.

도 2는 본 발명의 일실시예에 따른 이름 프리픽스의 예시 세트 및 상기 예시 세트를 이용하여 구축된 이름 프리픽스 트라이의 예를 도시한 도면이다.2 is an exemplary set of name prefixes and an example of a name prefix trie constructed using the example set in accordance with an embodiment of the present invention.

이름 프리픽스 트라이(Name Prefix Trie, NPT)는 IP주소 검색에서 이용되었던 이진 트라이(Binary trie)를 확장한 개념이다. 프리픽스가 저장되는 노드(node)까지의 경로가 프리픽스를 의미한다는 점에서는 이진트라이와 같다 그러나 경로 값으로 0과 1만을 사용하였던 IP주소와는 달리, NDN(Named Data Network)에서 경로 값으로 사용하는 콘텐츠의 이름은 길이와 형태에 제한이 없기 때문에 하나의 노드가 가질 수 있는 자식 노드의 개수는 무한히 많아질 수 있다. 이때, 이름 프리픽스 트라이 는 IP주소 검색에서 사용되었던 이진 트라이를 확장한 개념이기 때문에, 이진 트라이와 마찬가지로 불필요한 빈 노드(internal node)로 인한 메모리 낭비가 많다. 또한, 입력 패킷에 대한 이름 프리픽스와 가장 많은 컴포넌트가 일치하는 이름 프리픽스를 찾기 위해 검색을 진행할 경로가 더 이상 존재하지 않을 때까지 계속 진행해야 한다는 점에서 검색성능이 좋지 않은 문제가 있다.The Name Prefix Trie (NPT) is an extension of the binary trie used in IP address lookup. Unlike an IP address that uses only 0s and 1s as path values, it is used as a path value in an NDN (Named Data Network), since the path to the node where the prefix is stored means the prefix. Since the name of the content is not limited in length and form, the number of child nodes that a node can have is infinitely large. In this case, since the name prefix trie is an extension of the binary trie used in the IP address search, like the binary trie, there is a lot of memory waste due to an unnecessary internal node. In addition, there is a problem in that the search performance is poor because the search is to be continued until there is no more path to search for the name prefix of the input packet and the name prefix having the largest number of components.

이러한 문제에 대한 방안으로 본 발명에서는 이름 프리픽스 트라이에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이(Priority-Name Prefix Trie, P-NPT)를 결정하는 방법을 제공한다. As a solution to this problem, the present invention provides a method for determining a priority-name prefix trie (P-NPT) including a priority node and a non-priority node derived from a name prefix trie.

도 2의 (a)는 이름 프리픽스 및 출력 페이스의 예시 세트이며, 도 2의 (b)는 도 2의 (a)에 대한 이름 프리픽스 트라이를 구축 예를 보여준다. 이하에서는 이름 프리픽스 트라이에서 이름 프리픽스가 저장된 노드를 삽입 노드, 이름 프리픽스가 저장된 노드로 가는 경로에 부득이하게 존재하는 비어 있는 노드를 빈 노드로 부르기로 한다. 이때, 각각의 이름 프리픽스는 출력페이스 정보를 가지며, 이름 프리픽스 트라이의 삽입 노드 역시 서로 다른 노드 번호가 설정될 수 있다.2 (a) is an example set of a name prefix and an output face, and FIG. 2 (b) shows an example of building a name prefix triangle for FIG. 2 (a). Hereinafter, a node in which the name prefix is stored in the name prefix trie is referred to as an insertion node, and an empty node inevitably exists in the path to the node where the name prefix is stored. At this time, each name prefix has output face information, and the insertion node of the name prefix triad can also be set to a different node number.

예를 들어, 이름 프리픽스 kr/or/visitkorea를 이름 프리픽스 트라이로 구축하면 다음과 같다. 먼저 이름 프리픽스 트라이의 최상위 레벨에 빈 노드(210)이 위치한다. 이후 빈 노드(210)로부터 kr에 해당하는 패스를 따라 이동하면 빈 노드(220)이 위치한다. 다시 빈 노드(220)으로부터 or에 해당하는 패스를 따라 이동하면 빈 노드(230)이 위치하고, 다시 빈 노드(230)으로부터 visitkorea에 해당하는 패스를 따라 이동하면 이름 프리픽스 kr/or/visitkorea가 저장된 삽입 노드(240)가 위치할 수 있다. For example, if you build a name prefix kr / or / visitkorea with a name prefix trie: First, the empty node 210 is located at the highest level of the name prefix triad. Thereafter, when the user moves along the path corresponding to kr from the empty node 210, the empty node 220 is located. If the user moves along the path corresponding to or from the empty node 220, the empty node 230 is located. If the empty node 230 moves along the path corresponding to the visit korea from the empty node 230, the insertion of the name prefix kr / or / Node 240 may be located.

도 3은 본 발명의 일실시예에 따른 우선순위 이름 프리픽스 트라이의 예를 도시한 도면이다.3 is a diagram illustrating an example of a priority name prefix triangle according to an embodiment of the present invention.

삽입 노드와 빈 노드만을 가졌던 이름 프리픽스 트라이와는 다르게, 이름 프리픽스 트라이로부터 결정된 우선순위-이름 프리픽스 트라이는 우선순위 노드(priority node)와 우선순위 노드를 제외한 삽입 노드를 나타내는 비우선순위 노드(non-priority node)만을 갖는다. Unlike a name prefix trie that only had an insert node and an empty node, the priority-name prefix trie determined from the name prefix trie is a priority node and a non-priority node representing the inserted node excluding the priority node node.

우선순위-이름 프리픽스 트라이를 결정하는 과정은 다음과 같다. 먼저 이름 프리픽스 트라이에서 이름 프리픽스를 가지지 않는 빈 노드가 루트 노드로 설정된 서브 트라이를 결정할 수 있다. 이때 선택되는 빈 노드는 이름 프리픽스 트라이의 최상위 레벨에 존재하는 노드일 수 있다. 이후, 결정된 서브 트라이에서 이름 프리픽스가 저장된 적어도 하나의 삽입 노드들 중 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드를 우선순위 노드로 결정하여 서브 트라이의 루트 노드로 대체할 수 있다. 이와 같은 우선순위-이름 프리픽스 트라이를 결정하는 과정은 이름 프리픽스 검색 장치(100)에 포함된 프로세서(110)에 의해 수행될 수 있다.The process of determining the priority-name prefix trie is as follows. First, in the name prefix trie, an empty node that does not have a name prefix can be determined as a subtry that is set as the root node. The empty node selected at this time may be a node existing at the highest level of the name prefix trie. Thereafter, the insertion node storing the name prefix having the largest number of components among at least one insertion node in which the name prefix is stored in the determined subtree may be determined as the priority node and replaced with the root node of the subtree. The process of determining such a priority-name prefix triage may be performed by the processor 110 included in the name prefix search apparatus 100. [

예를 들어, 도 2의 (b)와 같은 이름 프리픽스 트라이를 우선순위-이름 프리픽스 트라이로 결정하는 과정은 다음과 같다. 먼저 프로세서(110)는 도 3의 (a)와 같은 이름 프리픽스 트라이의 최상위 레벨에 존재하는 빈 노드(310)를 루트 노드로 설정하는 서브 트라이(311)를 결정할 수 있다. 이후, 프로세서(110)는 서브 트라이(311)에 존재하는 삽입 노드들 중 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드(312)를 우선순위 노드로 결정할 수 있다. 이때, 우선순위 노드로 결정된 삽입 노드(312)에 저장된 이름 프리픽스는 'com/youtube/user/skyDoesMinecraft'이고 출력 페이스(output face)는 7이다. 프로세서(110)는 이와 같은 이름 프리픽스와 출력 페이스를 서브 트라이(310)의 루트 노드(310)에 대체하여 저장할 수 있다. 이때, 동일한 서브 트라이(311) 내에 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드(312,313)가 둘 이상일 경우 프로세서(110)는 둘 중 하나를 선택하여 루트 노드로 대체할 수 있다. 본 발명에서는 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드(312,313)가 둘 이상일 경우 왼쪽에 위치하는 삽입 노드(312)를 우선순위 노드로 결정하여 루트 노드로 대체하였다.For example, a process of determining a name-prefix trie as shown in FIG. 2 (b) as a priority-name prefix trie is as follows. First, the processor 110 may determine a sub-trie 311 that sets an empty node 310 located at the highest level of the name prefix triangle as shown in FIG. 3A as a root node. After that, the processor 110 may determine the insertion node 312 storing the name prefix having the largest number of the insertion nodes existing in the subtree 311 as the priority node. At this time, the name prefix stored in the insertion node 312 determined as the priority node is 'com / youtube / user / skyDoesMinecraft' and the output face is 7. The processor 110 may substitute such a name prefix and output face in the root node 310 of the subtree 310 for storage. At this time, when there are two or more insertion nodes 312 and 313 in which a name prefix having the largest number of components is stored in the same subtree 311, the processor 110 may select either one of them and replace it with a root node. In the present invention, when there are more than two insertion nodes 312 and 313 storing a name prefix having the largest number of components, the insertion node 312 located on the left side is determined as a priority node and replaced with a root node.

이제 이름 프리픽스 트라이의 최상위 레벨에는 빈 노드가 더 이상 존재하지 않으므로 다음 하위 레벨로 넘어갈 수 있다. 따라서, 프로세서(110)는 이름 프리픽스 트라이의 두 번째 레벨에 존재하는 빈 노드(320)가 루트 노드로 설정된 서브 트라이(321)를 결정할 수 있다. 이후, 프로세서(110)는 서브 트라이(321)에 존재하는 삽입 노드들 중 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드(322)를 우선순위 노드로 결정할 수 있다. 이때, 우선순위 노드로 결정된 삽입 노드(322)에 저장된 이름 프리픽스는 'kr/or/visitkorea'이고, 출력 페이스는 1이다. 프로세서(110)는 이와 같은 이름 프리픽스와 출력 페이스를 서브 트라이(321)의 루트 노드(320)에 대체하여 저장할 수 있다. 마찬가지로 동일한 서브 트라이(321) 내에 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드(322,323)가 둘 이상일 경우 프로세서(110)는 둘 중 하나를 선택하여 루트 노드로 대체할 수 있다.You can now jump to the next lower level because there are no more empty nodes at the top level of the name prefix trie. Thus, the processor 110 may determine the subtree 321 where the empty node 320, which is in the second level of the name prefix triad, is set as the root node. Then, the processor 110 may determine the insertion node 322 storing the name prefix having the largest number of the insertion nodes existing in the subtree 321 as a priority node. At this time, the name prefix stored in the insertion node 322 determined as the priority node is 'kr / or / visitkorea', and the output face is 1. Processor 110 may replace and store such name prefix and output face in root node 320 of subtree 321. Similarly, if there are more than two insertion nodes 322 and 323 storing the name prefix having the largest number of components in the same subtree 321, the processor 110 may select one of them and replace it with the root node.

프로세서(110)는 이름 프리픽스 트라이 내에 더 이상 빈 노드가 존재하지 않을 때까지 이와 같은 과정을 반복하여 수행함으로써 도 3의 (b)와 같은 우선순위-이름 프리픽스 트라이를 구축할 수 있다. 이와 같이 우선순위-이름 프리픽스 트라이는 이름 프리픽스를 검색하기 위하여 우선순위 노드에 접근하였을 때 가장 많은 컴포넌트가 일치할 가능성이 있는 삽입 노드의 정보를 저장한다. 따라서, 입력 패킷에 대한 이름 프리픽스와 우선순위 노드에 저장된 이름 프리픽스 정보가 일치할 경우, 프로세서(110)는 검색을 진행할 경로가 남아 있더라도 검색을 종료할 수 있다. 즉, 이와 같은 우선순위-이름 프리픽스 트라이를 통해 우선순위 노드를 정의함으로써, 불필요한 빈 노드를 줄이고, 검색 성능 또한 향상시킬 수 있다. The processor 110 may build the priority-name prefix trie as shown in FIG. 3 (b) by repeating this process until there are no more empty nodes in the name prefix trie. In this way, the priority-name prefix trie stores the information of the inserted node which is likely to match most components when the priority node is accessed to retrieve the name prefix. Accordingly, if the name prefix of the input packet matches the name prefix information stored in the priority node, the processor 110 can terminate the search even if there is a path to continue the search. That is, by defining the priority node through such priority-name prefix trie, it is possible to reduce unnecessary empty nodes and improve search performance.

도 4는 본 발명의 일실시예에 따른 우선순위 이름 프리픽스 트라이 기반의 비트맵 예를 도시한 도면이다.FIG. 4 is a diagram illustrating an example of a bitmap based on a priority name prefix triangle according to an embodiment of the present invention.

이름 프리픽스 트라이의 각각의 노드에는 플래그(flag)(1bit), 자식 노드로의 포인터(pointer), 자식 노드에 대한 에지(edge) 정보(에지 1개당 32bit), 이름 프리픽스(128bit) 및 출력 페이스 정보를 모두 포함하여야 하기 때문에 많은 메모리를 필요로 한다. 본 발명에서는 비트맵(Bitmap)을 적용하여 프로세서(110)의 내부 메모리(120)에 우선순위-이름 프리픽스 트라이의 윤곽 정보를 저장하여, 프로세서(110)의 외부에 배치된 외부 메모리(130)에서의 프로세싱을 최소화할 수 있다. 이와 같은 비트맵은 우선순위-이름 프리픽스 트라이에 기초하여 이름 프리픽스 검색 장치(100)의 프로세서(110)에 의해 생성될 수 있다. 도 4의 비트맵 예는 도 3의 우선순위-이름 프리픽스 트라이에 기초하여 생성되었다.Each node of the name prefix trie has a flag (1 bit), a pointer to a child node, edge information (32 bits per edge) for a child node, a name prefix (128 bits) It requires a lot of memory. In the present invention, the outline information of the priority-name prefix tri is stored in the internal memory 120 of the processor 110 by applying a bitmap, and the outline information of the priority-name prefix tri is stored in the external memory 130 disposed outside the processor 110 Can be minimized. Such a bitmap may be generated by the processor 110 of the name prefix searching apparatus 100 based on the priority-name prefix trie. The bitmap example of FIG. 4 was generated based on the priority-name prefix trie of FIG.

비트맵은 비트맵 테이블(Bitmap table), 인코딩 테이블(Encoding table) 및 노드 테이블(Node table)로 구성될 수 있다. 이때, 비트맵 테이블 및 인코딩 테이블은 이름 프리픽스를 검색하는 프로세서(110)의 내부 메모리(120)에 저장되고, 노드 테이블은 이름 프리픽스를 검색하는 프로세서(110)의 외부 메모리(130)에 저장될 수 있다. The bitmap may consist of a bitmap table, an encoding table, and a node table. The bitmap table and encoding table are then stored in the internal memory 120 of the processor 110 that retrieves the name prefix and the node table may be stored in the external memory 130 of the processor 110 retrieving the name prefix have.

우선순위-이름 프리픽스 트라이의 노드 번호는 0부터 시작하며, 상위레벨에서 하위레벨 순으로 부여될 수 있다. 예를 들어, 도 3의 (b)와 같은 우선순위-이름 프리픽스 트라이에서 루트 노드의 노드 번호는 0이고, 'kr/or/warning'이 저장된 우선순위 노드의 노드 번호는 5가 된다. The node number of the priority-name prefix trie starts from 0 and can be assigned in order from the highest level to the lowest level. For example, the node number of the root node in the priority-name prefix triangle shown in FIG. 3 (b) is 0, and the node number of the priority node storing 'kr / or / warning' is 5.

이때, 우선순위-이름 프리픽스 트라이를 이용하여 비트맵을 생성함에 있어서, 우선순위-이름 프리픽스 트라이에 포함된 각각의 노드 번호와 동일한 비트맵 테이블의 인덱스 번호 및 노드 테이블의 인덱스 번호를 매칭하여 노드 정보를 저장할 수 있다. 따라서, 비트맵 테이블과 노드 테이블을 연결하기 위한 별도의 포인터가 필요 없다. In generating the bitmap using the priority-name prefix trie, the index number of the bitmap table and the index number of the node table, which are the same as the respective node numbers included in the priority-name prefix trie, are matched, Can be stored. Therefore, there is no need for a separate pointer to connect the bitmap table and the node table.

A. 구체적으로 비트맵을 구성하는 비트맵 테이블은 우선순위-이름 프리픽스 트라이에 포함된 각각의 노드에 대한 5개의 필드 정보로 구성된다. 먼저 도 4의 비트맵 테이블의 a열과 같이 우선순위-이름 프리픽스 트라이에 포함된 각각의 노드들이 우선순위 노드인지 또는 비우선순위 노드인지를 나타내는 노드 타입에 대한 정보를 포함할 수 있다. 즉, 입력 패킷의 이름 프리픽스를 검색하기 위하여 접근한 우선순위-이름 프리픽스 트라이의 노드가 삽입 노드일 경우에는 0을, 우선순위 노드일 경우에는 1을 저장한다.A. Specifically, the bitmap table constituting the bitmap is composed of five pieces of field information for each node included in the priority-name prefix trie. First, as shown by column a in the bitmap table of FIG. 4, information on the node type indicating whether each of the nodes included in the priority-name prefix trie is a priority node or a non-priority node may be included. That is, if the node of the priority-name prefix trie that is accessed to retrieve the name prefix of the input packet is an insertion node, 0 is stored, and when the node is a priority node, 1 is stored.

다음으로 비트맵 테이블은 b열과 같이 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스의 컴포넌트 개수에 대한 정보를 포함할 수 있다. 예를 들어, 비트맵 테이블의 인덱스 0은 도 3에서 우선순위-이름 프리픽스 트라이의 최상위 레벨에 존재하는 우선순위 노드를 나타낸다. 우선순위-이름 프리픽스 트라이의 0번 노드는 'com/youtube/user/skyDoesMinecraft'의 이름 프리픽스를 저장하고 있으며, 각각의 com, youtube, user 및 skyDoesMinecraft는 이름 프리픽스를 구성하는 컴포넌트에 해당한다. 따라서, 비트맵 테이블의 인덱스 0에 대응하는 컴포넌트의 개수는 4이다. Next, the bitmap table may include information on the number of components of the name prefix stored in each of the nodes included in the priority-name prefix trie, such as column b. For example, index 0 of the bitmap table represents a priority node at the highest level of the priority-name prefix trie in FIG. Node 0 of the priority-name prefix trie stores the name prefix of 'com / youtube / user / skyDoesMinecraft', and each com, youtube, user, and skyDoesMinecraft correspond to the components that make up the name prefix. Thus, the number of components corresponding to index 0 in the bitmap table is four.

다음으로 비트맵 테이블은 c열과 같이 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스에 해시 함수를 적용하여 도출된 해시브리프를 포함할 수 있다. 이때, 도출된 해시브리프는 이름 프리픽스에 대한 핑거프린트(fingerprint)를 나타낼 수 있다. The bitmap table may then include a hash brief that is derived by applying a hash function to the name prefix stored in each of the nodes included in the priority-name prefix triad, such as column c. At this time, the derived hash brief may indicate a fingerprint for the name prefix.

이와 같은 해시브리프는 이름 프리픽스 검색 장치(100)가 이름 프리픽스를 검색할 때 이용될 수 있다. 이름 프리픽스 트라이에서는 입력 패킷에 대한 이름 프리픽스가 경로상에 존재하는 모든 이름 프리픽스와 일치하는 반면 우선순위 트라이의 우선순위 노드에는 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장되기 때문에, 입력 패킷에 대한 이름 프리픽스가 우선순위 노드에 저장된 이름 프리픽스와 일치할 가능성이 적다. 이러한 우선순위-이름 프리픽스 트라이의 특성으로 인해 불필요한 외부 메모리(130)로의 접근이 빈번하게 발생할 수 있다. 본 발명에서는 해시브리프의 개념을 제안 및 적용하여, 우선순위 노드에 저장된 컴포넌트 개수에 대응하는 입력 패킷에 대한 이름 프리픽스의 컴포넌트에 대한 해시 값을 결정하고, 이를 이용하여 외부 메모리(130)로의 접근을 결정할 수 있다. 즉, 결정된 해시 값을 비트맵 테이블에 저장된 해시브리프와 비교하여 일치할 경우에만 외부 메모리(130)에 접근하기 때문에, 우선순위-이름 프리픽스 트라이의 특성으로 인해 불필요하게 발생하는 외부 메모리(130)로의 접근을 최소화할 수 있다.Such a hash brief can be used when the name prefix search device 100 searches for a name prefix. In the name prefix trie, the name prefix for the input packet matches all the name prefixes present in the path, while the priority prefix of the priority trie stores the name prefix with the largest number of components. It is less likely to match the name prefix stored in the priority node. Due to the characteristics of the priority-name prefix triage, unnecessary access to the external memory 130 may occur frequently. In the present invention, the concept of a hash brief is proposed and applied to determine a hash value for a component of a name prefix for an input packet corresponding to the number of components stored in a priority node, and access to the external memory 130 You can decide. Namely, since the determined hash value is compared with the hash brief stored in the bitmap table and only the matching is performed, the access to the external memory 130 is performed. Therefore, the access to the external memory 130, which is unnecessarily generated due to the characteristics of the priority- Access can be minimized.

다음으로 비트맵 테이블은 d열과 같이 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 대한 자식 노드의 개수를 나타내는 차일드 개수 정보를 포함할 수 있다. 예를 들어, 우선순위-이름 프리픽스 트라이의 0번 노드는 하위에 1번, 2번, 3번 및 4번의 4개의 자식 노드를 가지고 있는 것을 확인할 수 있다. 따라서, 비트맵 테이블의 인덱스 0에 대응하는 차일드 개수 정보는 4이다.Next, the bitmap table may include child number information indicating the number of child nodes for each of the nodes included in the priority-name prefix trie as column d. For example, node 0 of the priority-name prefix trie has four child nodes 1, 2, 3, and 4 at the bottom. Therefore, the child number information corresponding to the index 0 of the bitmap table is 4.

다음으로 비트맵 테이블은 e열과 같이 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 대한 차일드 포인터 정보를 포함할 수 있다. 차일드 포인터 정보는 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각이 가진 첫번째 자식 노드로의 경로에 해당하는 인코딩 테이블의 주소값을 나타낼 수 있다. The bitmap table may then include child pointer information for each of the nodes included in the priority-name prefix trie, such as column e. The child pointer information may indicate the address value of the encoding table corresponding to the path to the first child node of each of the nodes included in the priority-name prefix trie.

B. 비트맵을 구성하는 인코딩 테이블은 우선순위-이름 프리픽스 트라이에 포함된 노드들(우선순위 노드와 비우선순위 노드) 각각의 자식 노드에 대한 에지(edge) 정보 및 상기 우선순위-이름 프리픽스 트라이에 포함된 노드들과 상기 자식 노드 간의 인덱스 번호 차이를 나타내는 인코딩 번호를 포함할 수 있다. B. The encoding table constituting the bitmap includes edge information for the child nodes of each of the nodes (priority node and non-priority node) included in the priority-name prefix trie, and edge information for the priority-name prefix tri And an encoding number indicating an index number difference between the included nodes and the child node.

IP주소를 이용한 프리픽스 검색에서의 자식 노드는 최대 2개로 제한되어 있던 반면 NDN에서의 자식 노드의 개수에는 제한이 없다. 그러므로, 본 발명은 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 대한 불특정한 자식 노드의 개수를 고려하여 비트맵을 적용할 때의 어려움을 해결하기 위해 인코딩 테이블을 도입하였다. 비트맵 테이블이 우선순위-이름 프리픽스 트라이에 포함된 노드들의 윤곽 정보를 저장했다면, 인코딩 테이블은 우선순위-이름 프리픽스 트라이에 포함된 노드가 가진 자식 노드로의 에지(edge) 정보를 포함할 수 있다. 이와 더불어 인코딩 테이블은 우선순위-이름 프리픽스 트라이에 포함된 노드와 자식 노드 간의 노드 번호 차이를 나타내는 인코딩 번호를 이용하여 우선순위-이름 프리픽스 트라이의 노드와 자식 노드를 연결할 수 있다. The number of child nodes in the prefix search using the IP address is limited to a maximum of 2, but the number of child nodes in the NDN is not limited. Therefore, the present invention introduces an encoding table to solve the difficulty in applying a bitmap considering the number of unspecified child nodes for each of the nodes included in the priority-name prefix trie. If the bitmap table stores the outline information of the nodes included in the priority-name prefix trie, the encoding table may contain edge information to the child nodes of the nodes included in the priority-name prefix trie . In addition, the encoding table can link the node of the priority-name prefix trie with the child node using the encoding number indicating the node number difference between the node and the child node included in the priority-name prefix trie.

예를 들어, 우선순위-이름 프리픽스 트라이의 0번 노드는 하위에 1번, 2번, 3번 및 4번의 4개의 자식 노드를 가지고 있다. 이때, 0번 노드로부터 각각의 자식 노드로의 경로에 해당하는 에지(edge) 정보는 kr, de, hk 및 com이며, 해당 에지 정보는 인코딩 테이블에 순차적으로 저장된다. 도 3의 (b)를 보면 알 수 있듯이 0번 노드에서 에지 정보 kr을 따라 이동하면 우선순위-이름 프리픽스 트라이의 1번 노드가 자식노드로 검색된다. 따라서 인코딩 테이블에는 0번 노드와 1번 노드 간의 노드 번호 차이인 1이 인코딩 번호로 저장될 수 있다. 마찬가지로 0번 노드에서 에지 정보 de를 따라 이동하면 우선순위-이름 프리픽스 트라이의 2번 노드가 자식노드로 검색된다. 이때, 인코딩 테이블에는 0번 노드와 2번 노드 간의 번호 차이인 2가 인코딩 번호로 저장될 수 있다.For example, node 0 of the priority-name prefix trie has four child nodes 1, 2, 3, and 4 in the lower level. At this time, the edge information corresponding to the path from the node 0 to each child node is kr, de, hk, and com, and the edge information is sequentially stored in the encoding table. As can be seen from FIG. 3 (b), when the node 0 moves along the edge information kr, the node # 1 of the priority-name prefix trie is searched as a child node. Therefore, the encoding table can store 1, which is the node number difference between node 0 and node 1, as an encoding number. Similarly, if node 0 moves along the edge information de, node 2 of the priority-name prefix trie is searched as a child node. At this time, the encoding table may be stored with a binary encoding number, which is a number difference between nodes 0 and 2. [

C. 비트맵을 구성하는 노드 테이블은 우선순위-이름 프리픽스 트라이에 포함된 노드들(우선순위 노드와 비우선순위 노드) 각각에 포함된 이름 프리픽스와 상기 이름 프리픽스에 대응하는 출력 페이스가 저장될 수 있다.C. The node table constituting the bitmap may store a name prefix included in each of the nodes (priority node and non-priority node) included in the priority-name prefix triangle and an output face corresponding to the name prefix .

본 발명은 우선순위-이름 프리픽스 트라이를 이용하여 상기 A, B, C에 개시된 비트맵을 생성할 수 있다. 구체적으로 도 3의 우선순위-이름 프리픽스 트라이에 포함된 4번 노드를 비트맵으로 생성하는 예는 다음과 같다. 먼저 4번 노드에 대한 노드 정보는 비트맵 테이블 및 노드 테이블의 인덱스 4번의 위치에 저장된다. 4번 노드는 우선순위 노드이므로, 노드 타입에 대한 정보는 1이되고, 저장된 이름 프리픽스는 'com/youtube/user/PewDiePie'이므로 컴포넌트 정보는 4(com, youtube, user, PewDiePie)가 된다. 그리고, 4번 노드는 하위에 4개의 자식 노드를 가지고 있기 때문에 차일드 개수 정보는 4가 된다. 4번 노드에서 자식 노드로의 경로에 해당하는 에지 정보는 순서대로 empowernetwork, youtube, goole, facebook이며 이와 같은 에지 정보를 인코딩 테이블에 순차적으로 저장된다. 그리고 비트맵 테이블의 차일드 포인터에는 4번 노드의 첫번째 자식 노드(empowernetwork)로의 경로에 해당하는 인코딩 테이블의 주소값이 저장되며. 4번 노드와 첫번째 자식 노드인 6번 노드 간의 노드 번호 차이인 2가 인코딩 번호로 저장된다. The present invention can generate the bitmaps disclosed in A, B, and C using the priority-name prefix trie. Specifically, an example of generating the node # 4 included in the priority-name prefix trie of FIG. 3 as a bitmap is as follows. First, the node information of node 4 is stored in index 4 of the bitmap table and the node table. Since the node 4 is a priority node, the information about the node type is 1, and the stored name prefix is 'com / youtube / user / PewDiePie', so the component information is 4 (com, youtube, user, PewDiePie). Since the node 4 has four child nodes at the bottom, the child number information is 4. The edge information corresponding to the route from the node # 4 to the child node is empowernetwork, youtube, goole, and facebook in order, and these edge information is sequentially stored in the encoding table. And the child pointer of the bitmap table stores the address value of the encoding table corresponding to the path to the first child node (empowernetwork) of node 4. The node number difference between node 4 and node 6, which is the first child node, is stored as a 2-encoded number.

도 5는 본 발명의 일실시예에 따른 비우선순위로 판단된 우선순위 이름 프리픽스 트라이의 노드에 대한 이름 프리픽스 검색 방법을 순서대로 도시한 도면이다.FIG. 5 is a diagram illustrating a method of searching for a name prefix for a node of a priority name prefix triad determined to be nonpriority according to an exemplary embodiment of the present invention.

이름 프리픽스 검색 장치(100)는 이름 프리픽스 트라이에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이에 기초하여 생성된 비트맵을 식별할 수 있다. 이때, 식별된 비트맵은 비트맵 테이블, 인코딩 테이블 및 노드 테이블로 구성될 수 있다.The name prefix search apparatus 100 can identify the bit map generated based on the priority-name prefix triad including the priority node and the non-priority node derived from the name prefix triage. At this time, the identified bitmap may be composed of a bitmap table, an encoding table, and a node table.

먼저, 단계(510)에서 이름 프리픽스 검색 장치(100)는 입력 패킷의 이름 프리픽스를 검색하기 위해 비트맵 테이블의 인덱스 번호에 기초하여 우선순위-이름 프리픽스 트라이 내의 노드에 접근할 수 있다. 이때, 비트맵 테이블의 인덱스 번호는 우선순위-이름 프리픽스 트라이 내의 노드 번호에 대응할 수 있다. 즉, 비트맵 테이블의 0번 인덱스는 우선순위-이름 프리픽스 트라이 내의 0번 노드와 대응할 수 있다. 그리고 이름 프리픽스 검색 장치(100)는 우선순위-이름 프리픽스 트라이 내의 최상위 레벨에 존재하는 노드부터 입력 패킷의 이름 프리픽스를 검색할 수 있다. First, in step 510, the name prefix search device 100 can access the nodes in the priority-name prefix tri based on the index number of the bitmap table to retrieve the name prefix of the input packet. At this time, the index number of the bitmap table may correspond to the node number in the priority-name prefix triangle. That is, the index 0 of the bitmap table can correspond to the node 0 in the priority-name prefix trie. Then, the name prefix search apparatus 100 can retrieve the name prefix of the input packet from the node at the highest level in the priority-name prefix triad.

따라서, 이름 프리픽스 검색 장치(100)는 비트맵 테이블의 0번 인덱스에 포함된 노드 타입 정보에 기초하여 우선순위-이름 프리픽스 트라이 내의 노드가 우선순위 노드인지 또는 비우선순위 노드인지를 확인할 수 있다. Therefore, the name prefix search device 100 can confirm whether the node in the priority-name prefix trie is a priority node or a non-priority node based on the node type information included in index 0 of the bitmap table.

단계(520)에서 이름 프리픽스 검색 장치(100)는 확인 결과 우선순위-이름 프리픽스 트라이에 포함된 노드가 비우선순위 노드로 확인되면, 상기 확인된 비우선순위 노드의 인덱스 번호와 동일한 노드 테이블의 인덱스 번호에 접근할 수 있다. 이후 이름 프리픽스 검색 장치(100)는 접근한 노드 테이블의 인덱스 번호에 저장된 출력 페이스를 추출하여 기억할 수 있다.If it is determined in step 520 that the node included in the priority-name prefix trie is identified as a non-priority node, the name prefix search apparatus 100 determines that the index number of the node table is the same as the index number of the verified non- It is accessible. Then, the name prefix search device 100 can extract and store the output face stored in the index number of the accessed node table.

이후 단계(530)에서 이름 프리픽스 검색 장치(100)는 비트맵 테이블의 차일드 개수 정보를 이용하여 상기 확인된 비우선순위 노드가 자식 노드를 가지는지의 여부를 확인할 수 있다.Thereafter, in step 530, the name prefix search apparatus 100 can confirm whether the verified non-priority node has a child node by using the child number information of the bitmap table.

상기 확인된 비우선순위 노드가 자식 노드를 가지지 않는 경우, 이름 프리픽스 검색 장치(100)는 단계(560)과 같이 단계(520)에서 기억하고 있는 출력 페이스를 검색 결과로 반환하고 검색을 종료할 수 있다.If the identified non-priority node does not have any child nodes, the name prefix search device 100 may return the output face stored in step 520 as a search result as in step 560 and terminate the search .

이와는 달리 상기 확인된 비우선순위 노드가 자식 노드를 가지는 경우, 이름 프리픽스 검색 장치(100)는 단계(540)에서 상기 확인된 비우선순위 노드에 대응하는 비트맵 테이블의 차일드 포인터 정보를 이용하여 인코딩 테이블에 접근할 수 있다. 이후 이름 프리픽스 검색 장치(100)는 인코딩 테이블을 이용하여 다음에 검색을 진행할 경로와 일치하는 자식 노드에 대한 에지 정보를 확인할 수 있다.In contrast, if the identified non-priority node has child nodes, the name prefix search apparatus 100 uses the child pointer information of the bitmap table corresponding to the identified non-priority node in step 540, It is accessible. The name prefix search apparatus 100 can then use the encoding table to identify edge information for child nodes that match the path to be searched next.

이때, 일치하는 자식 노드에 대한 에지 정보가 없는 경우, 이름 프리픽스 검색 장치(100)는 단계(560)과 같이 단계(520)에서 기억하고 있는 출력 페이스를 검색 결과로 반환하고 검색을 종료할 수 있다.At this time, if there is no edge information for the matching child node, the name prefix search device 100 returns the search result as the output face stored in the step 520 as in the step 560, and terminates the search .

그러나 일치하는 자식 노드에 대한 에지 정보가 있는 경우, 이름 프리픽스 검색 장치(100)는 단계(550)에서 상기 확인된 비우선순위 노드의 인덱스 번호와 상기 확인된 에지 정보에 대응하는 인코딩 번호를 이용하여 다음에 검색을 진행할 비트맵 테이블의 인덱스를 결정할 수 있다. However, if there is edge information for the matching child node, the name prefix search device 100 uses the index number of the verified non-priority node and the encoding number corresponding to the identified edge information at step 550, The index of the bitmap table to be searched can be determined.

이후 이름 프리픽스 검색 장치(100)는 결정된 비트맵 테이블의 인덱스에 기초하여 단계(510)~단계(560)을 반복하여 수행함으로써 입력 패킷에 대한 이름 프리픽스를 검색할 수 있다.The name prefix search device 100 may then retrieve the name prefix for the input packet by repeating steps 510 through 560 based on the index of the determined bitmap table.

도 6은 본 발명의 일실시예에 따른 우선순위로 판단된 우선순위 이름 프리픽스 트라이의 노드에 대한 이름 프리픽스 검색 방법을 순서대로 도시한 도면이다.FIG. 6 is a diagram illustrating a method of searching for a name prefix for a node of a priority name prefix triage determined to have a priority according to an embodiment of the present invention.

먼저 단계(610)에서 이름 프리픽스 검색 장치(100)는 입력 패킷의 이름 프리픽스를 검색하기 위해 비트맵 테이블의 인덱스 번호에 기초하여 우선순위-이름 프리픽스 트라이 내의 노드에 접근할 수 있다. 이때, 비트맵 테이블의 인덱스 번호는 우선순위-이름 프리픽스 트라이 내의 노드 번호에 대응할 수 있다. 즉, 비트맵 테이블의 0번 인덱스는 우선순위-이름 프리픽스 트라이 내의 0번 노드와 대응할 수 있다. 그리고 이름 프리픽스 검색 장치(100)는 우선순위-이름 프리픽스 트라이 내의 최상위 레벨에 존재하는 노드부터 입력 패킷의 이름 프리픽스를 검색할 수 있다.First, in step 610, the name prefix search device 100 can access the node in the priority-name prefix tri based on the index number of the bitmap table to retrieve the name prefix of the input packet. At this time, the index number of the bitmap table may correspond to the node number in the priority-name prefix triangle. That is, the index 0 of the bitmap table can correspond to the node 0 in the priority-name prefix trie. Then, the name prefix search apparatus 100 can retrieve the name prefix of the input packet from the node at the highest level in the priority-name prefix triad.

따라서, 이름 프리픽스 검색 장치(100)는 비트맵 테이블의 0번 인덱스에 포함된 노드 타입 정보에 기초하여 우선순위-이름 프리픽스 트라이 내의 노드가 우선순위 노드인지 또는 비우선순위 노드인지를 확인할 수 있다.Therefore, the name prefix search device 100 can confirm whether the node in the priority-name prefix trie is a priority node or a non-priority node based on the node type information included in index 0 of the bitmap table.

단계(620)에서 이름 프리픽스 검색 장치(100)는 단계(610)에서 확인된 우선순위 노드에 대한 해시브리프와 입력 패킷의 이름 프리픽스에 대한 해시 값을 비교할 수 있다. 이때, 입력 패킷의 이름 프리픽스에 대한 해시 값은 비트맵 테이블의 해시브리프를 생성할 때 사용한 해시 함수와 동일한 해시 함수를 이용하여 추출할 수 있다. 그리고 이름 프리픽스 검색 장치(100)는 상기 확인된 우선순위 노드에 저장된 이름 프리픽스의 컴포넌트의 개수에 대응하는 입력 패킷에 대한 이름 프리픽스를 이루는 컴포넌트에 기초하여 해시 값을 결정할 수 있다. In step 620, the name prefix search device 100 may compare the hash value of the hash brief for the priority node identified in step 610 and the hash value for the name prefix of the input packet. At this time, the hash value for the name prefix of the input packet can be extracted using the hash function that is the same as the hash function used for generating the hash brief of the bitmap table. The name prefix search apparatus 100 may determine a hash value based on a component constituting a name prefix for an input packet corresponding to the number of components of the name prefix stored in the identified priority node.

이때, 비교된 우선순위 노드에 대한 해시브리프와 입력 패킷의 이름 프리픽스에 대한 해시 값이 일치하는 경우, 이름 프리픽스 검색 장치(100)는 단계(630)에서 상기 확인된 우선순위 노드에 저장된 이름 프리픽스와 상기 확인된 우선순위 노드의 인덱스 번호와 동일한 노드 테이블의 인덱스 번호에 저장된 이름 프리픽스가 일치하는지 비교할 수 있다.At this time, if the hash brief for the compared priority node and the hash value for the name prefix of the input packet coincide with each other, the name prefix search apparatus 100 searches for the name prefix stored in the identified priority node in step 630 It is possible to compare whether the index number of the identified priority node matches the name prefix stored in the index number of the same node table.

비교 결과 일치하는 경우, 이름 프리픽스 검색 장치(100)는 단계(640)과 같이 상기 확인된 우선순위 노드의 인덱스 번호와 동일한 노드 테이블의 인덱스 번호에 저장된 출력 페이스를 추출하여 기억할 수 있다. If the comparison result shows coincidence, the name prefix search apparatus 100 may extract and store the output face stored in the index number of the node table identical to the index number of the identified priority node, as in step 640.

이후 단계(680)에서 이름 프리픽스 검색 장치(100)는 단계(640)에서 기억하고 있는 출력 페이스를 검색 결과로 반환하고 검색을 종료할 수 있다.Thereafter, in step 680, the name prefix search device 100 may return the output face stored in step 640 to the search result and terminate the search.

이와는 달리 비교된 우선순위 노드에 대한 해시브리프와 입력 패킷의 이름 프리픽스에 대한 해시 값이 일치하지 않는 경우, 이름 프리픽스 검색 장치(100)는 단계(650)에서 비트맵 테이블의 차일드 개수 정보를 이용하여 상기 확인된 우선순위 노드가 자식 노드를 가지는지의 여부를 확인할 수 있다. If the hash value for the compared priority node and the hash value for the name prefix of the input packet do not match, the name prefix search device 100 uses the child number information of the bitmap table in step 650 It is possible to confirm whether or not the identified priority node has child nodes.

이후 상기 확인된 우선순위 노드가 자식 노드를 가지지 않는다면, 이름 프리픽스 검색 장치(100)는 단계(680)과 같이 단계(640)에서 기억하고 있는 출력 페이스를 검색 결과로 반환하고 검색을 종료할 수 있다.If the identified priority node does not have a child node, the name prefix search device 100 may return the search result of the output face stored in step 640 as in step 680 and terminate the search .

그러나 상기 확인된 우선순위 노드가 자식 노드를 가지는 경우, 이름 프리픽스 검색 장치(100)는 단계(660)에서 상기 확인된 우선순위 노드에 대응하는 비트맵 테이블의 차일드 포인터 정보를 이용하여 인코딩 테이블에 접근할 수 있다. 이후 이름 프리픽스 검색 장치(100)는 인코딩 테이블을 이용하여 다음에 검색을 진행할 경로와 일치하는 자식 노드에 대한 에지 정보를 확인할 수 있다.However, if the identified priority node has a child node, the name prefix search apparatus 100 accesses the encoding table using the child pointer information of the bitmap table corresponding to the identified priority node in step 660 can do. The name prefix search apparatus 100 can then use the encoding table to identify edge information for child nodes that match the path to be searched next.

이때, 일치하는 자식 노드에 대한 에지 정보가 없는 경우, 이름 프리픽스 검색 장치(100)는 단계(680)과 같이 단계(640)에서 기억하고 있는 출력 페이스를 검색 결과로 반환하고 검색을 종료할 수 있다.At this time, if there is no edge information for the matching child node, the name prefix search device 100 returns the search result as the output face stored in the step 640 as in the step 680, and terminates the search .

그러나 일치하는 자식 노드에 대한 에지 정보가 있는 경우, 이름 프리픽스 검색 장치(100)는 단계(670)에서 상기 확인된 우선순위 노드의 인덱스 번호와 상기 확인된 에지 정보에 대응하는 인코딩 번호를 이용하여 다음에 검색을 진행할 비트맵 테이블의 인덱스를 결정할 수 있다. However, if there is edge information for the matching child node, the name prefix search device 100 uses the index number of the identified priority node and the encoding number corresponding to the identified edge information at step 670 The index of the bitmap table to be searched can be determined.

이후 이름 프리픽스 검색 장치(100)는 결정된 비트맵 테이블의 인덱스에 기초하여 단계(610)~단계(680)을 반복하여 수행함으로써 입력 패킷에 대한 이름 프리픽스를 검색할 수 있다.The name prefix search apparatus 100 may then retrieve the name prefix for the input packet by repeating steps 610 through 680 based on the index of the determined bitmap table.

예를 들어, 이름 프리픽스 검색 방법에 따라 입력 패킷의 이름 프리픽스인 'com/goole/mail/mailbox/user1'을 검색하면 다음과 같을 수 있다. 먼저 비트맵 테이블의 0번 인덱스에 대응하는 우선순위-이름 프리픽스 트라이의 노드는 노드 타입이 1이므로 우선순위 노드에 해당한다. 그리고 이름 프리픽스 검색 장치(100)는 0번 인덱스에 대응하는 컴포넌트의 개수가 4이므로 'com/goole/mail/mailbox/user1' 중 'comgoolemailmailbox'만을 이용하여 해시 값을 결정할 수 있다. 이때, 결정된 해시 값이 010이라고 가정하자.For example, according to the name prefix search method, searching for the input packet's name prefix 'com / goole / mail / mailbox / user1' First, the node of the priority-name prefix triangle corresponding to the index 0 of the bitmap table corresponds to the priority node because the node type is 1. The name prefix search apparatus 100 can determine a hash value using only 'comgoolemailmailbox' among 'com / goole / mail / mailbox / user1' because the number of components corresponding to index 0 is 4. At this time, suppose that the determined hash value is 010.

이때 결정된 해시 값이 0번 인덱스에 대응하는 해시브리프와 일치하지 않으므로 이름 프리픽스 검색 장치(100)는 차일드 포인터 정보를 이용하여 인코딩 테이블에 접근할 수 있다. 이후 이름 프리픽스 검색 장치(100)는 인코딩 테이블을 이용하여 다음에 검색을 진행할 경로와 일치하는 자식 노드에 대한 에지 정보를 확인할 수 있다. 확인 결과 입력 패킷의 이름 프리픽스 중 'com'이 일치하는 것을 확인할 수 있다. Since the hash value determined at this time does not match the hash brief corresponding to the index 0, the name prefix search apparatus 100 can access the encoding table using the child pointer information. The name prefix search apparatus 100 can then use the encoding table to identify edge information for child nodes that match the path to be searched next. As a result, it is confirmed that 'com' in the name prefix of the input packet matches.

이름 프리픽스 검색 장치(100)는 인코딩 테이블에서 'com'에 대응하는 인코딩 번호 4와 현재 검색을 진행중인 우선순위-이름 프리픽스 트라이의 노드에 대한 인덱스 번호 0을 합하여 다음에 검색을 진행할 비트맵 테이블의 인덱스 번호 4를 결정할 수 있다. The name prefix search apparatus 100 adds the encoding number 4 corresponding to 'com' in the encoding table and the index number 0 to the node of the priority-name prefix trie in the current search, Number 4 can be determined.

이후 이름 프리픽스 검색 장치(100)는 새롭게 결정된 비트맵 테이블의 인덱스 번호 4에 기초하여 이름 프리픽스의 검색을 재수행할 수 있다. 비트맵 테이블의 인덱스 번호 4에 대응하는 우선순위-이름 프리픽스 트라이의 노드는 우선순위 노드이므로 입력 패킷의 이름 프리픽스에 대한 해시 값과 4번 인덱스에 대응하는 해시브리프를 비교할 수 있다. Thereafter, the name prefix search device 100 can re-search the name prefix based on the index number 4 of the newly determined bitmap table. The node of the priority-name prefix triangle corresponding to the index number 4 of the bitmap table is the priority node, so the hash value for the name prefix of the input packet can be compared with the hash brief corresponding to the index No. 4.

만약 비교 결과 일치하지 않는다고 가정하면 이름 프리픽스 검색 장치(100)는 차일드 포인터 정보를 이용하여 인코딩 테이블에 접근할 수 있다. 이후 이름 프리픽스 검색 장치(100)는 인코딩 테이블을 이용하여 다음에 검색을 진행할 경로와 일치하는 자식 노드에 대한 에지 정보를 확인할 수 있다. 확인 결과 입력 패킷의 이름 프리픽스 중 'google'이 일치하는 것을 확인할 수 있다.If the comparison result does not match, the name prefix search device 100 can access the encoding table using the child pointer information. The name prefix search apparatus 100 can then use the encoding table to identify edge information for child nodes that match the path to be searched next. As a result, we can confirm that 'google' matches the name prefix of the input packet.

이후 이름 프리픽스 검색 장치(100)는 인코딩 테이블에서 'google'에 대응하는 인코딩 번호 4와 현재 검색을 진행중인 우선순위-이름 프리픽스 트라이의 노드에 대한 인덱스 번호 4를 합하여 다음에 검색을 진행할 비트맵 테이블의 인덱스 번호 8을 결정할 수 있다. Then, the name prefix search apparatus 100 adds the encoding number 4 corresponding to 'google' in the encoding table and the index number 4 to the node of the priority-name prefix trie in the current search, The index number 8 can be determined.

이후 이름 프리픽스 검색 장치(100)는 결정된 비트맵 테이블의 인덱스 번호 8에 기초하여 이름 프리픽스의 검색을 재수행할 수 있다. 비트맵 테이블의 인덱스 번호 8에 대응하는 우선순위-이름 프리픽스 트라이의 노드는 비우선순위 노드이다. 따라서, 이름 프리픽스 검색 장치(100)는 비트맵 테이블의 인덱스 번호 8과 동일한 노드 테이블의 인덱스 번호에 접근할 수 있다. 이후 이름 프리픽스 검색 장치(100)는 접근한 노드 테이블의 인덱스 번호에 저장된 출력 페이스인 9를 추출하여 기억할 수 있다.Then, the name prefix search device 100 can re-search the name prefix based on the index number 8 of the determined bitmap table. The node of the priority-name prefix trie corresponding to index number 8 of the bitmap table is a non-priority node. Therefore, the name prefix search apparatus 100 can access the index number of the node table that is the same as the index number 8 of the bitmap table. Then, the name prefix search apparatus 100 can extract and store the output face 9 stored in the index number of the accessed node table.

이때, 비트맵 테이블의 인덱스 번호 8에 대응하는 우선순위-이름 프리픽스 트라이는 자식 노드가 없으므로 이름 프리픽스 검색 장치(100)는 상기 기억된 출력 페이스 9를 반환하고 검색을 종료할 수 있다.At this time, since the priority-name prefix trie corresponding to the index number 8 of the bitmap table has no child node, the name prefix search device 100 can return the stored output face 9 and terminate the search.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

100 : 이름 프리픽스 검색 장치
110 : 프로세서
120 : 내부 메모리
130 : 외부 메모리
100: Name prefix search device
110: Processor
120: Internal memory
130: External memory

Claims (17)

이름 프리픽스 검색 장치가 수행하는 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법에 있어서,
이름 프리픽스 검색 장치의 프로세서가 이름 프리픽스 트라이(Name Prefix Trie, NPT)에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이(Priority-Name Prefix Trie, P-NPT)를 결정하는 단계;
이름 프리픽스 검색 장치의 프로세서가 상기 우선순위-이름 프리픽스 트라이로부터 비트맵 테이블, 인코딩 테이블 및 노드 테이블를 포함하는 비트맵을 생성하는 단계; 및
이름 프리픽스 검색 장치의 프로세서가 상기 생성된 비트맵을 저장하는 단계
를 포함하는 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법.
A priority name prefix triage based bit map generation method performed by a name prefix search apparatus,
The processor of the name prefix searching apparatus determines a priority-name prefix trie (P-NPT) including priority nodes and non-priority nodes derived from the Name Prefix Trie (NPT) step;
Wherein the processor of the name prefix searching device generates a bitmap including the bitmap table, the encoding table and the node table from the priority-name prefix trie; And
The processor of the name prefix retrieval apparatus stores the generated bitmap
A method for generating a bitmap based on a priority name prefix trie.
제1항에 있어서,
상기 결정하는 단계는,
이름 프리픽스 검색 장치의 프로세서가 상기 이름 프리픽스 트라이에서 이름 프리픽스를 가지지 않는 빈 노드가 루트 노드로 설정된 서브 트라이를 결정하는 단계; 및
이름 프리픽스 검색 장치의 프로세서가 상기 서브 트라이에서 이름 프리픽스를 가지는 적어도 하나의 삽입 노드들 중 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드를 우선순위 노드로 결정하여 상기 서브 트라이의 루트 노드로 대체하는 단계
를 포함하는 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법.
The method according to claim 1,
Wherein the determining comprises:
The processor of the name prefix search apparatus determining a subtree in which an empty node having no name prefix in the name prefix tri is set as a root node; And
The processor of the name prefix searching apparatus determines an insertion node storing a name prefix having the largest number of components among at least one insertion node having a name prefix in the subtree as a priority node and replacing the insertion node with a root node of the subtree
A method for generating a bitmap based on a priority name prefix trie.
제1항에 있어서,
상기 생성하는 단계는,
이름 프리픽스 검색 장치의 프로세서가 상기 우선순위-이름 프리픽스 트라이에 포함된 우선순위 노드 및 상기 우선순위 노드를 제외한 삽입 노드를 나타내는 비우선순위 노드의 노드 번호를 상기 비트맵 테이블의 인덱스 번호 및 노드 테이블의 인덱스 번호 각각에 매칭하는 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법.
The method according to claim 1,
Wherein the generating comprises:
The processor of the name prefix search apparatus searches for the node number of the priority node included in the priority-name prefix trie and the non-priority node indicating the insertion node excluding the priority node as the index number of the bitmap table and the index A priority name that matches each of the numbers. A prefix trie based bitmap generation method.
제1항에 있어서,
상기 비트맵 테이블은,
(i) 상기 우선순위-이름 프리픽스 트라이에 포함된 노드들이 우선순위 노드 또는 비우선순위 노드인지 여부를 나타내는 노드 타입,
(ii) 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스를 구성하는 컴포넌트의 개수를 나타내는 컴포넌트,
(iii) 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스에 해시 함수를 적용하여 도출된 핑거프린트(fingerprint)를 나타내는 해시브리프,
(iv) 우선순위-이름 프리픽스 트라이에 포함된 노드들에 대한 자식 노드의 개수를 나타내는 차일드 개수 정보 및
(iv) 우선순위-이름 프리픽스 트라이에 포함된 노드들의 첫번째 자식 노드로의 경로에 해당하는 인코딩 테이블의 주소값을 나타내는 차일드 포인터 정보 중 적어도 하나의 정보를 포함하는 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법.
The method according to claim 1,
Wherein the bitmap table comprises:
(i) a node type indicating whether the nodes included in the priority-name prefix trie are priority nodes or non-priority nodes,
(ii) a component representing the number of components constituting the name prefix stored in each of the nodes included in the priority-name prefix trie,
(iii) a hash brief that indicates a fingerprint derived by applying a hash function to a name prefix stored in each of the nodes included in the priority-name prefix triad,
(iv) Child number information indicating the number of child nodes for the nodes included in the priority-name prefix trie and
(iv) Priority name - A priority name that includes at least one of the child pointer information indicating the address value of the encoding table corresponding to the path to the first child node of the nodes included in the prefix trie. Generation method.
제1항에 있어서,
상기 인코딩 테이블은,
상기 우선순위-이름 프리픽스 트라이에 포함된 우선순위 노드와 비우선순위 노드 각각의 자식 노드에 대한 에지(edge) 정보 및 상기 우선순위 노드 및 비우선순위 노드와 상기 자식 노드 간의 인덱스 번호 차이를 나타내는 인코딩 번호를 포함하는 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법.
The method according to claim 1,
Wherein the encoding table comprises:
Edge information for the child node of each of the priority node and the non-priority node included in the priority-name prefix triangle and an encoding number indicating the difference between the index numbers of the priority node, the non-priority node, and the child node Included priority names Prefix trie based bitmap generation methods.
제1항에 있어서,
상기 노드 테이블은,
상기 우선순위-이름 프리픽스 트라이의 우선순위 노드와 비우선순위 노드 각각에 포함된 이름 프리픽스와 상기 이름 프리픽스에 대응하는 출력 페이스를 포함하는 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법.
The method according to claim 1,
The node table comprising:
A priority name prefix tri based bitmap generation step including a name prefix included in each of a priority node and a non-priority node of the priority-name prefix trie, and an output face corresponding to the name prefix.
제1항에 있어서,
상기 저장하는 단계는,
이름 프리픽스 검색 장치의 프로세서가 상기 비트맵 테이블 및 인코딩 테이블은 이름 프리픽스를 검색하는 칩의 내부 메모리에 저장하고,
상기 노드 테이블은 이름 프리픽스를 검색하는 칩의 외부 메모리에 저장하는 우선순위 이름 프리픽스 트라이 기반의 비트맵 생성 방법.
The method according to claim 1,
Wherein the storing step comprises:
The processor of the name prefix retrieval apparatus stores the bitmap table and the encoding table in the internal memory of the chip retrieving the name prefix,
Wherein the node table stores a name prefix in an external memory of a chip that retrieves a priority name prefix tri based bitmap.
이름 프리픽스 검색 장치가 수행하는 이름 프리픽스 검색 방법은,
이름 프리픽스 검색 장치의 프로세서가 이름 프리픽스 트라이에서 도출된 우선순위 노드 및 비우선순위 노드를 포함하는 우선순위-이름 프리픽스 트라이에 기초하여 생성된 비트맵을 식별하는 단계;
이름 프리픽스 검색 장치의 프로세서가 상기 식별된 비트맵을 이용하여 입력 패킷의 이름 프리픽스와 가장 많은 컴포넌트가 일치하는 우선순위-이름 프리픽스 트라이 내의 이름 프리픽스를 검색하는 단계
를 포함하고,
상기 비트맵은,
비트맵 테이블, 인코딩 테이블 및 노드 테이블로 구성되는 이름 프리픽스 검색 방법.
The name prefix search method performed by the name prefix search device includes:
Identifying a bitmap generated based on a priority-name prefix triangle including a priority node and a non-priority node derived from a name prefix trie of a name prefix search apparatus;
The processor of the name prefix searching apparatus searches for a name prefix in a priority-name prefix triangle in which the component name matches the name prefix of the input packet using the identified bitmap
Lt; / RTI >
The bit map may include:
A name prefix search method comprising a bitmap table, an encoding table, and a node table.
제8항에 있어서,
상기 검색하는 단계는,
이름 프리픽스 검색 장치의 프로세서가 상기 입력 패킷의 이름 프리픽스를 검색하기 위해 접근한 상기 비트맵 테이블의 노드 타입에 기초하여 상기 우선순위-이름 프리픽스 트라이에 포함된 노드가 우선순위- 노드인지 또는 비우선순위 노드인지 확인하는 단계; 및
이름 프리픽스 검색 장치의 프로세서가 상기 우선순위-이름 프리픽스 트라이에 포함된 노드가 비우선순위 노드로 확인되면, 상기 확인된 비우선순위 노드의 인덱스 번호와 동일한 노드 테이블의 인덱스 번호에 접근하여 출력 페이스를 추출하는 단계
를 포함하는 이름 프리픽스 검색 방법.
9. The method of claim 8,
Wherein the searching comprises:
The node included in the priority-name prefix trie based on the node type of the bitmap table accessed by the processor of the name prefix searching apparatus to search for the name prefix of the input packet is a priority- ; And
If the processor of the name-prefix search apparatus determines that the node included in the priority-name prefix trie is a non-priority node, the processor retrieves the output face by accessing the index number of the node table that is the same as the index number of the verified non- step
≪ / RTI >
제9항에 있어서,
상기 추출하는 단계 이후에,
이름 프리픽스 검색 장치의 프로세서가 상기 입력 패킷의 이름 프리픽스를 검색하기 위해 접근한 상기 비트맵 테이블의 비우선순위 노드가 자식 노드를 가지는지 여부를 확인하는 단계;
이름 프리픽스 검색 장치의 프로세서가 상기 비우선순위 노드가 자식 노드를 가지는 것으로 확인된 경우, 상기 비트맵 테이블의 차일드 포인터 정보를 이용하여 인코딩 테이블에 접근하고, 상기 인코딩 테이블을 이용하여 다음에 검색을 진행할 경로와 일치하는 자식 노드에 대한 에지 정보를 확인하는 단계; 및
이름 프리픽스 검색 장치의 프로세서가 상기 일치하는 자식 노드에 대한 에지 정보가 확인된 경우, 상기 입력 패킷의 이름 프리픽스를 검색하기 위해 접근한 상기 비트맵 테이블의 비우선순위 노드에 대한 인덱스 번호와 상기 확인된 에지 정보에 대응하는 인코딩 번호를 이용하여 다음에 검색을 진행할 비트맵 테이블의 인덱스를 결정하는 단계
를 더 포함하는 이름 프리픽스 검색 방법.
10. The method of claim 9,
After the extracting step,
Confirming whether a non-priority node of the bitmap table that the processor of the name prefix search apparatus has accessed to search for a name prefix of the input packet has a child node;
The processor of the name prefix searching apparatus accesses the encoding table using the child pointer information of the bitmap table when the non-priority node has a child node, Identifying edge information for a child node matching the child node; And
Wherein when the processor of the name prefix searching apparatus determines that the edge information for the matching child node has been checked, the index number of the non-priority node of the bitmap table accessed to search for the name prefix of the input packet, Determining an index of a bitmap table to be retrieved next using an encoding number corresponding to the information
And a prefix search method.
제8항에 있어서,
상기 검색하는 단계는,
이름 프리픽스 검색 장치의 프로세서가 상기 입력 패킷의 이름 프리픽스를 검색하기 위해 접근한 상기 비트맵 테이블의 노드 타입에 기초하여 상기 우선순위-이름 프리픽스 트라이에 포함된 노드가 우선순위 노드인지 비우선순위 노드인지 확인하는 단계;
이름 프리픽스 검색 장치의 프로세서가 상기 우선순위-이름 프리픽스 트라이에 포함된 노드가 우선순위 노드로 확인되면, 상기 입력 패킷의 이름 프리픽스에 대한 해시 값과 상기 비트맵 테이블에 포함된 해시브리프가 일치하는지 비교하는 단계;
이름 프리픽스 검색 장치의 프로세서가 상기 입력 패킷의 이름 프리픽스에 대한 해시 값과 상기 비트맵 테이블에 포함된 해시브리프가 일치하는 경우, 상기 입력 패킷의 이름 프리픽스와 상기 노드 테이블에 저장된 이름 프리픽스와 일치하는지 비교하는 단계; 및
이름 프리픽스 검색 장치의 프로세서가 상기 입력 패킷의 이름 프리픽스와 상기 노드 테이블에 저장된 이름 프리픽스와 일치하는 경우, 상기 확인된 우선순위-이름 프리픽스 트라이에 포함된 노드의 인덱스 번호와 동일한 노드 테이블의 인덱스 번호에 접근하여 출력 페이스를 추출하는 단계
를 포함하는 이름 프리픽스 검색 방법.
9. The method of claim 8,
Wherein the searching comprises:
The processor of the name prefix searching apparatus determines whether the node included in the priority-name prefix trie is a priority node or a non-priority node based on the node type of the bitmap table accessed by the processor to search for a name prefix of the input packet ;
If the processor of the name prefix search apparatus determines that the node included in the priority-name prefix trie is a priority node, the hash value of the name prefix of the input packet is compared with the hash brief included in the bitmap table ;
The processor of the name prefix searching apparatus compares the hash value of the input packet with the hash value of the name prefix of the input packet and the hash brief included in the bit map table to see if the name prefix of the input packet matches the name prefix stored in the node table ; And
If the processor of the name prefix search apparatus matches the name prefix of the input packet and the name prefix stored in the node table, the index number of the node table that is the same as the index number of the node included in the identified priority- Step of accessing and extracting the output face
≪ / RTI >
제8항에 있어서,
상기 우선순위-이름 프리픽스 트라이는,
상기 이름 프리픽스 트라이에서 이름 프리픽스를 가지지 않는 빈 노드를 루트 노드로 설정하는 서브 트라이를 결정하고, 상기 서브 트라이에서 이름 프리픽스를 가지는 적어도 하나의 삽입 노드들 중 가장 많은 컴포넌트를 갖는 이름 프리픽스가 저장된 삽입 노드를 우선순위 노드로 결정하여 상기 서브 트라이의 루트 노드로 대체함으로써 생성되는 이름 프리픽스 검색 방법.
9. The method of claim 8,
Wherein the priority-name prefix trie comprises:
Determining a subtree for setting an empty node having no name prefix in the name prefix triangle as a root node, and determining a subtree in which a name prefix having a name component Is determined as a priority node and replaced with the root node of the subtree.
제8항에 있어서,
상기 비트맵은,
상기 우선순위-이름 프리픽스 트라이에 포함된 우선순위 노드 및 상기 우선순위 노드를 제외한 삽입 노드를 나타내는 비우선순위 노드의 노드 번호를 상기 비트맵 테이블의 인덱스 번호 및 인코딩 테이블의 인덱스 번호 각각에 매칭함으로써 생성되는 이름 프리픽스 검색 방법.
9. The method of claim 8,
The bit map may include:
A priority node included in the priority-name prefix trie and a node number of a non-priority node indicating an insertion node excluding the priority node are matched with index numbers of the bitmap table and index numbers of the encoding table, respectively How to search for name prefixes.
제8항에 있어서,
비트맵 테이블은,
(i) 상기 우선순위-이름 프리픽스 트라이에 포함된 노드들이 우선순위 노드 또는 비우선순위 노드인지 여부를 나타내는 노드 타입,
(ii) 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스를 구성하는 컴포넌트의 개수를 나타내는 컴포넌트,
(iii) 우선순위-이름 프리픽스 트라이에 포함된 노드들 각각에 저장된 이름 프리픽스에 해시 함수를 적용하여 도출된 핑거프린트(fingerprint)를 나타내는 해시브리프,
(iv) 우선순위-이름 프리픽스 트라이에 포함된 노드들에 대한 자식 노드의 개수를 나타내는 차일드 개수 정보 및
(iv) 우선순위-이름 프리픽스 트라이에 포함된 노드들의 첫번째 자식 노드로의 경로에 해당하는 인코딩 테이블의 주소값을 나타내는 차일드 포인터 정보 중 적어도 하나의 정보를 포함하는 이름 프리픽스 검색 방법.
9. The method of claim 8,
The bitmap table,
(i) a node type indicating whether the nodes included in the priority-name prefix trie are priority nodes or non-priority nodes,
(ii) a component representing the number of components constituting the name prefix stored in each of the nodes included in the priority-name prefix trie,
(iii) a hash brief that indicates a fingerprint derived by applying a hash function to a name prefix stored in each of the nodes included in the priority-name prefix triad,
(iv) Child number information indicating the number of child nodes for the nodes included in the priority-name prefix trie and
and (iv) child pointer information indicating an address value of an encoding table corresponding to a path to a first child node of nodes included in the priority-name prefix trie.
제8항에 있어서,
상기 인코딩 테이블은,
상기 우선순위-이름 프리픽스 트라이에 포함된 우선순위 노드와 비우선순위 노드 각각의 자식 노드에 대한 에지(edge) 정보 및 상기 우선순위 노드 및 비우선순위 노드와 상기 자식 노드 간의 인덱스 번호 차이를 나타내는 인코딩 번호를 포함하는 이름 프리픽스 검색 방법.
9. The method of claim 8,
Wherein the encoding table comprises:
Edge information for the child node of each of the priority node and the non-priority node included in the priority-name prefix trie and an encoding number indicating the difference between the index numbers of the priority node, the non-priority node and the child node Contains the name prefix search method.
제8항에 있어서,
상기 노드 테이블은,
상기 우선순위-이름 프리픽스 트라이의 우선순위 노드와 비우선순위 노드 각각에 포함된 이름 프리픽스와 상기 이름 프리픽스에 대응하는 출력 페이스를 포함하는 이름 프리픽스 검색 방법.
9. The method of claim 8,
The node table comprising:
A name prefix included in each of a priority node and a non-priority node of the priority-name prefix triangle, and an output face corresponding to the name prefix.
제8항에 있어서,
상기 비트맵 테이블 및 인코딩 테이블은 이름 프리픽스를 검색하는 칩의 내부 메모리에 저장되고,
상기 노드 테이블은 이름 프리픽스를 검색하는 칩의 외부 메모리에 저장되는 이름 프리픽스 검색 방법.
9. The method of claim 8,
The bitmap table and the encoding table are stored in an internal memory of a chip which searches for a name prefix,
Wherein the node table is stored in an external memory of a chip retrieving a name prefix.
KR1020160070526A 2016-06-07 2016-06-07 A bitmap generating method based on priority-name prefix trie and name prefix searching method using the bitmap KR101787899B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160070526A KR101787899B1 (en) 2016-06-07 2016-06-07 A bitmap generating method based on priority-name prefix trie and name prefix searching method using the bitmap

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160070526A KR101787899B1 (en) 2016-06-07 2016-06-07 A bitmap generating method based on priority-name prefix trie and name prefix searching method using the bitmap

Publications (1)

Publication Number Publication Date
KR101787899B1 true KR101787899B1 (en) 2017-10-19

Family

ID=60298230

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160070526A KR101787899B1 (en) 2016-06-07 2016-06-07 A bitmap generating method based on priority-name prefix trie and name prefix searching method using the bitmap

Country Status (1)

Country Link
KR (1) KR101787899B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101582050B1 (en) * 2014-10-24 2015-12-31 이화여자대학교 산학협력단 Apparatus and method for searching name using bloom filter pre-searching

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101582050B1 (en) * 2014-10-24 2015-12-31 이화여자대학교 산학협력단 Apparatus and method for searching name using bloom filter pre-searching

Similar Documents

Publication Publication Date Title
CN110301120B (en) Stream classification device, method and system
CN105376160B (en) Reputation-based instruction processing on information-centric networks
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
US7281085B1 (en) Method and device for virtualization of multiple data sets on same associative memory
US7808929B2 (en) Efficient ACL lookup algorithms
EP3497892B1 (en) Compressing forwarding tables
US20150120924A1 (en) Software-defined named-data networking
US7317723B1 (en) Action based termination of multidimensional lookup
US10148571B2 (en) Jump on a match optimization for longest prefix match using a binary search tree
CN108134739B (en) Route searching method and device based on index trie
US20130024649A1 (en) Method and device for storing routing table entry
CN104468401A (en) Message processing method and device
US9135833B2 (en) Process for selecting compressed key bits for collision resolution in hash lookup table
WO2017095801A1 (en) Forwarding table compression
KR101787899B1 (en) A bitmap generating method based on priority-name prefix trie and name prefix searching method using the bitmap
KR20150052544A (en) Operating method of node considering packet characteristics in content centric network and the node
US8755386B2 (en) Traceback packet transport protocol
EP4145777A1 (en) Message classification method and apparatus, electronic device, and readable medium
CN112437065B (en) Strategy conflict detection and solution method based on graphic representation under SDN environment
KR20150052576A (en) Operating method of transmission node and receiver node processing packet including location information of field and the packet including the location information of the field
CN114911728A (en) Data searching method and device and integrated circuit
CN109347747B (en) Data processing method and device
JP7359299B2 (en) Packet identification device, packet identification method, and packet identification program
KR102229554B1 (en) Method and Device for Generating Hash Key
KR101583439B1 (en) Packet classification method and packet classification apparatus using an area-based quad trie with leaf-pushing

Legal Events

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