KR101028470B1 - Ip주소 검색을 위한 장치 및 방법 - Google Patents

Ip주소 검색을 위한 장치 및 방법 Download PDF

Info

Publication number
KR101028470B1
KR101028470B1 KR1020090039643A KR20090039643A KR101028470B1 KR 101028470 B1 KR101028470 B1 KR 101028470B1 KR 1020090039643 A KR1020090039643 A KR 1020090039643A KR 20090039643 A KR20090039643 A KR 20090039643A KR 101028470 B1 KR101028470 B1 KR 101028470B1
Authority
KR
South Korea
Prior art keywords
hashing
integrated
level
bit
node information
Prior art date
Application number
KR1020090039643A
Other languages
English (en)
Other versions
KR20100120812A (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 KR1020090039643A priority Critical patent/KR101028470B1/ko
Priority to US12/577,937 priority patent/US8385343B2/en
Publication of KR20100120812A publication Critical patent/KR20100120812A/ko
Application granted granted Critical
Publication of KR101028470B1 publication Critical patent/KR101028470B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • H04L45/7459Address table lookup; Address filtering using hashing using Bloom filters

Landscapes

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

Abstract

본 발명의 일 실시예는, IP 주소 검색을 위한 장치 및 방법에 관한 것이다.
본 발명의 일 실시예는, 레벨에 따른 이진 검색 구조를 위해 생성된 노드 정보를 검색 전에 통합 복수 해싱 테이블에 미리 저장해두되, 통합 블룸 필터를 이용하여 통합 복수 해싱 테이블의 접근 이전에, 선 필터링을 수행함으로써 통합 복수 해싱 테이블에 접근하는 횟수를 최소화하여 IP 주소 검색을 수행하는 장치를 제공하는 것을 특징으로 한다.
IP 주소, 검색

Description

IP주소 검색을 위한 장치 및 방법{Method and Apparatus for Searching IP Address}
본 발명의 일 실시예는 IP 주소 검색을 위한 장치 및 방법에 관한 것이다. 더욱 상세하게는, 메모리 요구량 및 메모리 접근 횟수를 줄여주어 효율적인 IP 주소 검색을 가능하게 하는 장치 및 방법에 관한 것이다.
현재 인터넷의 속도는 기하 급수적으로 증가하고 있으며, 라우터로 입력되는 패킷의 속도에 맞추어 선 속도(Wire-Speed)로 패킷을 포워딩하는 것이 매우 중요하다. 따라서 많은 알고리즘이 라우터의 성능을 높이기 위해 개발되고 있으며, 라우터의 성능 평가를 위해 다음과 같은 척도가 사용되고 있다. 첫째,라우터에 저장된 라우팅 테이블에 대한 주소 검색시에 소요되는 메모리 접근 횟수이다. 적은 메모리 접근 횟수로 포워딩 정보를 찾아야 빠른 패킷 포워딩이 가능하다. 둘째, 라우터에 저장되는 라우팅 테이블의 크기이다. 한정된 라우터의 메모리에 가능한 많은 프리픽스를 효율적으로 저장할 수 있어야 하며, 이는 IP 주소 검색 알고리즘의 데이터 구조에 의존한다. 셋째, 라우터에 연결된 네트워크들의 프리픽스 정보를 쉽게 추가 또는 삭제할 수 있는 테이블 갱신의 용이성이다. 실제로 초당 많은 수의 프리픽스 가 갱신되고 삭제된다. 따라서 이와 같은 정보를 실시간으로 수용하여 검색이 정확히 이루어질 수 있도록 하는 것이 중요하다. 넷째, IPv4 주소 체계에서 IPv6 주소 체계로의 확장성이다. 현재 IPv4의 주소가 보편적으로 사용되고 있으나 포화 상태에 이르고 있어, 무한대에 가까운 인터넷 주소를 사용할 수 있는 IPv6 주소 체계로의 이동이 불가피하다. 따라서 이와 같은 변화를 수용할 수 있어야 한다.
과거에는 클래스를 갖는 주소 체계에 의해 확정 일치(Exact Matching) 방법으로 검색을 진행하였으나, 프리픽스의 낭비를 막기 위해 현재에는 CIDR(classless inter-domain routing) 방식이 사용되고 있으며, 이로 인해 네트워크에 연결된 호스트의 수에 따라 다양한 크기의 네트워크를 구성할 수 있게 되었다. 따라서 다양한 길이의 프리픽스가 생겨나게 되었으며, 라우터와 같은 스위칭 장비에서는 인터넷 주소 검색에 있어 검색 방법이 매우 복잡해 졌다. 즉, 입력 패킷의 목적지 주소의 네트워크 부분인 프리픽스 길이에 대한 정보를 미리 알고 있지 않으므로 하나의 입력 패킷에 대해 라우터에 존재하는 다수의 프리픽스가 일치할 수 있고, 이 중 가장 길게 일치하는 프리픽스(Longest Matching Prefix: LMP)가 최적으로 일치하는 프리픽스(Best Matcing Prefix: BMP)가 된다.
전술한 라우터의 성능 평가 척도와 같은 요구 사항을 충족시켜주고, 주소 체계 변화 등에 대응할 수 있는 효율적인 IP 주소 검색 구조가 필요하며, 이를 위해, IP 주소 검색 구조에 대한 많은 연구가 이루어져 왔으며, 그러한 연구 결과물로서, 종래의 IP 주소 검색 구조에는, 트리 구조에 기반한 알고리즘, 해싱에 기반한 알고리즘 및 블룸 필터를 기반으로 하는 알고리즘 등이 있다.
종래의 트리 구조에 기반한 알고리즘 중에서, 이진 트라이(Binary Trie: B-Trie) 알고리즘은, 프리픽스의 각 비트값을 경로로 하여 해당하는 노드에 정보를 저장하는 방식으로서, 프리픽스의 최상위 비트부터 진행하여 트리의 루트부터 각 비트값을 확인해가면서 검색을 진행하다. 이러한 이진 트라이 알고리즘은 구성에 있어서는 간단하지만 빈 노드가 많이 존재하게 되어 불필요한 메모리 요구량이 많다는 단점과, IP 주소 검색 속도에 있어서도 최악의 경우 프리픽스의 최대 길이까지 선형적으로 검색해야 하기 때문에 검색 성능이 크게 떨어질 수 있는 문제점이 있다.
또한, 종래의 트리 구조에 기반한 알고리즘 중에서, 이진 검색 트리(Binary Search Tree: BST) 알고리즘은, 전술한 이진 트라이 알고리즘과 달리 빈 노드가 없어 메모리 요구량이 적은 반면, 프리픽스의 네스트(Nesting) 관계를 고려하여 이진 검색 트리를 구성하여야만 하기 때문에, 프리픽스의 네스팅 정도에 따라 불균형이 심해져서 검색 성능이 저하되는 문제점이 있다.
또한, 종래의 해싱 구조에 기반한 알고리즘 중에서, 병렬 해싱 구조(Parallel Hashing Architecture) 알고리즘은, 프리픽스 길이별로 각각 해싱 하드웨어, 주 테이블 및 보조 테이블을 갖는 구조를 가지며, 모든 테이블은 각기 별도의 SRAM에 저장되어 있으므로 검색시 각 테이블에 병렬적으로 접근하여 검색을 하며, 우선 순위 인코더에서 각 테이블에서의 결과 중 가장 길이가 긴 결과를 최종 검색 결과로 출력하는 알고리즘이다. 이러한 병렬 해싱 구조 알고리즘은 병렬적으로 각 테이블에 접근하여 빠르게 검색을 진행할 수 있는 반면, 이러한 빠른 검색을 위해서는 하드웨어 소모가 많고 여러 개의 메모리를 요구하는 문제점이 있다. 또한, 각 라우팅 집합에 맞추어 하드웨어를 구성하므로 소프트웨어적으로 유연하게 설계하기 어려운 문제점이 있다.
또한, 종래의 블룸 필터에 기반한 알고리즘은, 비트-벡터를 이용하여 입력값이 특정 집합의 요소인지 확인하여 필터링하는 블룸 필터를 각 프리픽스 길이별로 구성하는 구조로서, 블룸 필터를 통해 해싱 테이블에 접근하는 횟수를 감소시켜 검색 성능을 향상시킬 수 있으나, 블룸 필터를 각 프리픽스 길이별로 구성해야하기 때문에 구조가 매우 복잡하다는 문제점이 있다. 또한, 이 경우, 블룸 필터뿐만 아니라 해싱 테이블도 각 프리픽스 길이별로 구성해야만 하는 문제점이 있다.
다시 말해, 종래의 여러 가지 IP 주소 검색 구조들은, 라우터의 성능 평가 척도와 같은 요구 사항을 모두 충족시켜주고 주소 체계 변화 등에 대응할 수 있는 효율적인 IP 주소 검색 구조를 제공해주지 못하는 문제점을 안고 있는 것이다.
이러한 배경에서, 본 발명의 일 실시예는, 프리픽스 길이별로 블룸 필터 및 해싱 테이블을 구현할 필요없이, 단일의 통합 블룸 필터와, 단일의 통합 복수 해싱 테이블을 이용함으로써, 메모리 요구량을 크게 줄여주어 효율적인 IP 주소 검색을 가능하게 하는 목적이 있다.
또한, 본 발명의 일 실시예는, 통합 블룸 필터를 이용하여, 통합 복수 해싱 테이블로의 접근을 필요에 따라 제한함으로써, 메모리 접근 횟수를 크게 줄여주고 이를 통해 효율적이고 더욱 빠른 IP 주소 검색을 가능하게 하는 목적이 있다.
또한, 본 발명의 일 실시예는, 통합 블룸 필터 및 통합 복수 해싱 테이블을 이용하여 메모리 요구량 및 메모리 접근 횟수를 크게 줄여줌으로써, IPv4 뿐만 아니라, 더욱 많은 비트 수를 갖는 IPv6 주소 체계에서도 효율적이고 더욱 빠른 IP 주소 검색을 가능하게 하는 목적이 있다.
본 발명의 일 실시예는, IP 주소를 입력받아 저장해두고, 제어신호를 수신할 때마다 상기 제어신호에 의해 지시되는 접근길이에 따라 비트를 상기 저장된 IP 주소로부터 추출하는 비트 추출부; 상기 추출된 비트를 해싱하여 복수의 해싱 색인을 생성하는 해싱부; 통합 블룸 필터에서 상기 복수의 해싱 색인 각각에 해당하는 비트-벡터값을 검색하는 통합 블룸 필터 검색부; 상기 통합 블룸 필터 검색부에서의 검색 결과에 따라, 통합 복수 해싱 테이블에서 상기 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색하는 통합 복수 해싱 테이블 검색부; 상기 검색된 노드 정보 중에서 상기 추출된 비트와 일치하는 노드 정보가 존재하면, 상기 존재하는 노드 정보에 근거하여, 최적 일치 프리픽스를 갱신하는 최적 일치 프리픽스 갱신부; 상기 접근길이에 해당하는 접근레벨이 마지막 레벨이면, 상기 갱신된 최적 일치 프리픽스를 결과값으로 출력하는 결과값 출력부; 및 상기 접근레벨이 마지막 레벨이 아니면, 상기 통합 블룸 필터 검색부 또는 상기 통합 복수 해싱 테이블 검색부에서의 검색 결과와 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중 하나의 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 상기 제어신호를 상기 비트 추출부로 출력하는 접근레벨 제어부를 포함하는 것을 특징으로 하는 IP 주소 검색을 위한 장치를 제공한다.
또한, 본 발명의 일 실시예는, IP 주소를 입력받아 저장해두고, 제어신호를 수신할 때마다 상기 제어신호에 의해 지시되는 접근길이에 따라 비트를 상기 저장된 IP 주소로부터 추출하는 비트 추출 단계; 상기 추출된 비트를 해싱하여 복수의 해싱 색인을 생성하는 해싱 단계; 통합 블룸 필터에서 상기 복수의 해싱 색인 각각에 해당하는 비트-벡터값을 검색하는 통합 블룸 필터 검색 단계; 상기 통합 블룸 필터 검색 단계에서의 검색 결과에 따라, 통합 복수 해싱 테이블에서 상기 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색하는 통합 복수 해싱 테이블 검색 단계; 상기 검색된 노드 정보 중에서 상기 추출된 비트와 일치하는 노드 정보가 존재하면, 상기 존재하는 노드 정보에 근거하여, 최적 일치 프리픽스를 갱신하는 최적 일치 프리픽스 갱신 단계; 상기 접근길이에 해당하는 접근레벨이 마지막 레벨이면, 상기 갱신된 최적 일치 프리픽스를 결과값으로 출력하는 결과값 출력 단계; 및 상기 접근레벨이 마지막 레벨이 아니면, 상기 통합 블룸 필터 검색 단계 또는 상기 통합 복수 해싱 테이블 검색 단계에서의 검색 결과와 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중 하나의 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 상기 제어신호를 출력하는 접근레벨 제어 단계를 포함하는 것을 특징으로 하는 IP 주소 검색 방법을 제공한다.
이상에서 설명한 바와 같이 본 발명의 일 실시예에 의하면, 프리픽스 길이별로 블룸 필터 및 해싱 테이블을 구현할 필요없이, 단일의 통합 블룸 필터와, 단일의 통합 복수 해싱 테이블을 이용함으로써, 메모리 요구량을 크게 줄여주어 효율적인 IP 주소 검색을 가능하게 하는 효과가 있다.
또한, 본 발명의 일 실시예에 의하면, 통합 블룸 필터를 이용하여, 통합 블룸 필터를 이용하여, 통합 복수 해싱 테이블로의 접근을 필요에 따라 제한함으로써, 메모리 접근 횟수를 크게 줄여주고 이를 통해 효율적이고 더욱 빠른 IP 주소 검색을 가능하게 하는 효과가 있다.
또한, 본 발명의 일 실시예에 의하면, 통합 블룸 필터 및 통합 복수 해싱 테이블를 이용하여 메모리 요구량 및 메모리 접근 횟수를 크게 줄여줌으로써, IPv4 뿐만 아니라, 더욱 많은 비트 수를 갖는 IPv6 주소 체계에서도 효율적이고 더욱 빠른 IP 주소 검색을 가능하게 하는 효과가 있다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되 거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치(100)에 대한 블록구성도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치(100)는, 비트 추출부(110), 해싱부(120), 통합 블룸 필터 검색부(130), 통합 복수 해싱 테이블 검색부(140), 최적 일치 프리픽스(BMP: Best Matching Prefix, 이하 "BMP"라 칭함) 갱신부(150), 결과값 출력부(160) 및 접근레벨 제어부(170) 등을 포함한다.
비트 추출부(110)는 IP 주소를 입력받아 저장해두고, 제어신호를 수신할 때마다 제어신호에 의해 지시되는 접근길이에 따라 비트를 저장된 IP 주소로부터 추출한다. 해싱부(120)는 비트 추출부(110)에서 추출된 비트를 해싱(Hashing)하여 복수의 해싱 색인을 생성한다. 통합 블룸 필터 검색부(130)는 "통합 블룸 필터(Bloom Filter)"에서 복수의 해싱 색인(Hashing Index) 각각에 해당하는 비트-벡터값(Bit-Vector Value)을 검색한다. 통합 복수 해싱 테이블 검색부(140)는 통합 블룸 필터 검색부(130)에서의 검색 결과에 따라, "통합 복수 해싱 테이블"에서 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색한다. BMP 갱신부(150)는 통합 복수 해싱 테이블 검색부(140)에 의해 검색된 노드 정보 중에서 비트 추출부(110)에 의해 추출된 비트와 일치하는 노드 정보가 존재하면, 존재하는 노드 정보에 근거하여, BMP를 갱신한다. 결과값 출력부(160)는 현재의 접근길이에 해당하는 접근레벨(즉, BMP 가 갱신된 시점에서의 접근레벨)이 마지막 레벨이면 갱신된 BMP를 결과값으로 출력한다. 접근레벨 제어부(170)는, 현재의 접근길이에 해당하는 접근레벨(즉, BMP가 갱신된 시점에서의 접근레벨)이 마지막 레벨이 아니면, 통합 블룸 필터 검색부(130) 또는 통합 복수 해싱 테이블 검색부(140)에서의 검색 결과와 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중 하나의 레벨을 접근레벨(Access Level)로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 제어신호를 비트 추출부(110)로 출력한다.
전술한 비트 추출부(110)는, 32비트로 된 버전(Version) 4 체계의 IP 주소(즉, IPv4 주소) 또는 128비트로 된 버전 6 체계의 IP 주소(즉, IPv6 주소)를 입력받을 수 있다.
전술한 해싱부(120)는, 도 2에 도시된 바와 같이, 비트 추출부(110)에서 추출된 비트로부터 일정한 길이의 코드를 생성하는 코드 생성기(210); 및 코드 생성기(210)에서 생성된 코드로부터 복수의 해싱 색인을 생성하는 해싱 색인 생성부(220)를 포함한다.
위에서 언급한 코드 생성기(210)는 다양한 길이의 프리픽스를 일정한 규칙에 의해 각 비트가 섞이게 되고, 모두 같은 길이의 스크램블 된 코드를 생성하게 되며, 해싱 색인 생성부(220)는 이렇게 생성된 코드로부터 사용자가 원하는 비트 수만큼 선택하여 복수의 해싱 색인으로 생성할 수 있다. 이때, 코드 생성기(210)는, 일 예로서, CRC 생성기(Cycle Redundancy Check Generator)일 수 있다.
전술한 통합 블룸 필터 검색부(130)는, 통합 블룸 필터에 해싱 색인별로 저 장된 비트-벡터값 중에서, 해싱부(120)에서 생성된 복수의 해싱 색인 각각에 해당하는 비트-벡터값을 검색하되, 이때 검색된 비트-벡터값은, 비트 추출부(110)에서 추출된 비트가 "통합 복수 해싱 테이블"의 엔트리(Entry)에 포함되는지를 판단하기 위한 정보이다.
예를 들어, 비트 추출부(110)에서 추출된 비트가 "통합 복수 해싱 테이블"의 엔트리(Entry)에 포함되는 경우, 통합 블룸 필터의 프로그래밍 과정에서, 통합 블룸 필터에서 해당 해싱 색인에 해당하는 비트-벡터값을 "1"로 프로그래밍하고, 비트 추출부(110)에서 추출된 비트가 "통합 복수 해싱 테이블"의 엔트리(Entry)에 포함되지 않는 경우 통합 블룸 필터에서 해당 해싱 색인에 해당하는 비트-벡터값을 "0"으로 프로그래밍해둔다.
전술한 비트-벡터값의 예시에 따르면, 복수의 해싱 색인에 해당하는 비트-벡터값이 모두 "1"인 경우에는, 비트 추출부(110)에서 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 포함된 것으로 판단될 수 있다. 이에 비해, 복수의 해싱 색인에 해당하는 비트-벡터값이 적어도 한 개가 "0"인 경우에는, 비트 추출부(110)에서 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 포함되지 않는 것으로 판단될 수 있다.
이처럼 통합 블룸 필터 검색부(130)에 의해 검색된 비트-벡터값에 따라 비트 추출부(110)에서 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 포함되는지 포함되지 않는지를 판단할 수 있게 되어, 통합 복수 해싱 테이블로의 접근을 제어할 수 있다.
만약, 통합 블룸 필터 검색부(130)에 의해 검색된 비트-벡터값을 통해, 비트 추출부(110)에서 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 포함되지 않은 것으로 판단된 경우에는, 통합 복수 해싱 테이블 검색부(140)에 의한 통합 복수 해싱 테이블에 접근을 제한하여, 접근레벨 제어부(170)에 의해 접근레벨이 제어되어 제어신호가 출력되고, 출력된 제어신호가 비트 추출부(110)로 입력됨으로써, 다음 레벨에 대한 검색이 이루어지게 된다. 이로 인해, 통합 복수 해싱 테이블의 불필요한 접근을 방지할 수 있다.
만약, 통합 블룸 필터 검색부(130)에 의해 검색된 비트-벡터값을 통해, 비트 추출부(110)에서 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 포함된 것으로 판단된 경우에만, 통합 복수 해싱 테이블 검색부(140)는 통합 복수 해싱 테이블에 접근하여 통합 복수 해싱 테이블에서 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색한다.
위에서 언급한 통합 복수 해싱 테이블의 개수는 복수의 해싱 색인의 개수와 동일할 수 있다. 예를 들어, 해싱부(120)에서 2개의 해싱 색인을 생성한 경우, 통합 복수 해싱 테이블의 개수는 2개일 수 있다.
이러한 경우, 통합 복수 해싱 테이블 검색부(140)는, 복수의 해싱 색인을 이용하여, 통합 복수 해싱 테이블 각각에 병렬적으로 접근하여 노드 정보를 검색하게 된다. 이러한 통합 복수 해싱 테이블에 대한 병렬적인 접근을 통한 노드 정보 검색은 검색 효율을 향상시킬 수 있다.
전술한 BMP 갱신부(150)는, 통합 복수 해싱 테이블 검색부(140)에 의해 검색 된 노드 정보 중에서 비트 추출부(110)에 의해 추출된 비트와 일치하는 노드 정보가 존재하면, 존재하는 노드 정보가 프리픽스 노드의 노드 정보인 경우, 존재하는 노드 정보를 BMP로서 저장함으로써, BMP를 갱신한다.
전술한 바와 같이, 통합 블룸 필터 검색부(130)에서 검색된 비트-벡터값을 통해 비트 추출부(110)에서 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 포함되지 않은 것으로 판단된 경우, 또는 통합 복수 해싱 테이블 검색부(140)에서 검색된 노드 정보가 비트 추출부(110)에 의해 추출된 비트와 일치하지 않는 것을 판단된 경우, 또는 통합 복수 해싱 테이블 검색부(140)에서 검색된 노드 정보가 비트 추출부(110)에 의해 추출된 비트와 일치하여 BMP가 갱신된 경우, 다음 레벨의 검색을 위해, 접근레벨 제어부(170)는 접근레벨을 제어하기 위하여, 각 경우에 맞는 다음 접근레벨(Access Level)을 결정하여 이를 지시하는 제어신호를 출력하여 비트 추출부(110)로 입력함으로써, 다음 레벨의 검색이 시작되게 한다.
전술한 접근레벨 제어를 따라오는 도 3을 참조하여, 더욱 상세하게 설명한다.
도 3을 참조하면, 전술한 접근레벨 제어부(170)는, 통합 블룸 필터 검색부(130)에 의해 검색된 비트-벡터값을 통해, 비트 추출부(110)에 의해 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 미포함된 것으로 판단되면, 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중에서 길이가 짧은 방향의 다음 레벨을 접근레벨로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 "제 1 제어신호"(310)를 제어신호로서 비트 추출부(110)로 출력한다.
또한, 도 3을 참조하면, 전술한 접근레벨 제어부(170)는, 통합 복수 해싱 테이블 검색부(140)에 의해 검색된 노드 정보 중에서 비트 추출부(110)에 의해 추출된 비트와 일치하는 노드 정보가 미 존재하면, 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중에서 길이가 짧은 방향의 다음 레벨을 접근레벨로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 "제 2 제어신호"(320)를 제어신호로서 비트 추출부(110)로 출력한다.
또한, 도 3을 참조하면, 전술한 접근레벨 제어부(170)는, 통합 복수 해싱 테이블 검색부(140)에 의해 검색된 노드 정보 중에서 비트 추출부(110)에 의해 추출된 비트와 일치하는 노드 정보가 존재하면, 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중에서 길이가 긴 방향의 다음 레벨을 접근레벨로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 "제 3 제어신호"(330)를 제어신호로서 비트 추출부(110)로 출력한다.
한편, 도 4를 참조하면, 본 발명의 일 실시예에 따른 IP 검색을 위한 장치(100)는, 통합 복수 해싱 테이블 검색부(140)에 의해 검색된 노드 정보 중에서 비트 추출부(110)에 의해 추출된 비트와 일치하는 노드 정보가 존재하지 않는 경우이거나, 통합 복수 해싱 테이블 검색부(140)에서 복수의 해싱 색인 각각에 해당하는 노드 정보가 통합 복수 해싱 테이블로부터 미검색된 경우, "오버플로우 테이블(Overflow Table)"에서 추출된 비트와 일치하는 노드 정보를 검색하는 오버플로우 테이블 검색부(410)를 추가로 포함할 수 있다.
전술한 오버플로우 테이블 검색부(410)를 추가로 포함한 경우, BMP 갱신 부(150)는, 오버플로우 테이블 검색부(410)에서 검색된 노드 정보에 근거하여, BMP를 갱신할 수 있다.
또한, 도 4를 참조하면, 접근레벨 제어부(170)는, 비트 추출부(110)에서 추출된 비트와 일치하는 노드 정보가 오버플로우 테이블에서 검색되면, 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중에서 길이가 긴 방향의 다음 레벨을 접근레벨로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 "제 4 제어신호"(440)를 제어신호로서 출력하여 비트 추출부(110)로 입력시켜 준다.
또한, 도 4를 참조하면, 접근레벨 제어부(170)는, 비트 추출부(110)에서 추출된 비트와 일치하는 노드 정보가 오버플로우 테이블에서 미검색되면, 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중에서 길이가 짧은 방향의 다음 레벨을 접근레벨로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 "제 5 제어신호"(450)를 제어신호로서 출력하여 비트 추출부(110)로 입력시켜 준다.
이상에서는, 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치(100)를 도 1 내지 도 4를 참조하여 개략적으로 설명하였다. 이하에서는, 따라오는 예시적인 도면들을 참조하여, IP 주소 검색을 위한 장치(100)를 더욱 상세하게 설명한다.
본 발명의 일 실시예에서는, 32비트의 IPv4 주소 뿐만 아니라, 이보다 비트 수가 더 긴 128비트의 IPv6 주소 검색에도 확장성 있도록 적용될 수 있으며, 종래의 다른 IP 주소 검색 알고리즘보다 검색 성능을 더욱 크게 향상시킬 수 있는 효율적인 IP 주소 검색을 가능하게 위해, 프리픽스의 길이를 레벨로 이용하는 이진 검색 방식을 이용한다. 본 발명의 일 실시예에서 개시되는 IP 주소 검색을 위한 구조 는, 레벨에 따른 이진 검색 구조를 위해 생성된 노드 정보를 검색 전에 통합 복수 해싱 테이블에 미리 저장해두되, 통합 블룸 필터를 이용하여 통합 복수 해싱 테이블의 접근 이전에, 선 필터링을 수행함으로써 외부 메모리 형태일 수 있는 통합 복수 해싱 테이블에 접근하는 횟수를 최소화함으로써 검색 성능을 향상시킨 구조이다.
아래에서는, 본 발명에 일 실시예에 따른 IP 주소 검색을 위한 장치(100)가 제공하는 IP 주소 검색을 위해 수행되는 여러 가지 과정 중에서, (1) 해싱 색인 생성 과정과, (2) 통합 블룸 필터의 프로그래밍 과정과, (3) 통합 복수 해싱 테이블에 프리픽스를 저장하는 과정과, (4) 레벨에 따른 이진 검색 과정 및 (5) 업데이트 과정을 따라오는 예시적인 도면들을 참조하여 예시적으로 설명한다.
아래에서의 예시적인 설명의 편의를 위해, 프리픽스 집합과 그에 따른 이진 검색 구조를 가정해본다.
도 5는 프리픽스 집합을 가정한 도면으로서, 도 5를 참조하면, 프리픽스 집합은, P0, P1, P2, P3, P4 및 P6을 포함하는 7개의 "프리픽스 노드"를 가지며, 7개의 프리픽스 노드 각각은 노드 정보로서의 프리픽스를 갖는다.
도 5에서의 프리픽스 집합으로 레벨에 따른 이진 검색 구조를 구성해보면 도 6과 같이 만들어진다. 도 6의 오른쪽에는 레벨에 대한 접근 순서가 표시되어 있다. 가운데 존재하는 레벨인 레벨 3은 가장 먼저 접근되는 접근 레벨이고, 레벨 2 또는 레벨 4는 그 다음의 접근 가능한 접근 레벨이며, 레벨 1 또는 레벨 5는 가장 나중에 접근되는 접근 레벨이다.
또한, 도 6에서는, 빈 노드에 마커(M) 또는 BMP를 저장해둘 수 있는데, 이러한 마커(M) 또는 BMP가 저장된 빈 노드는, 이진 검색시 마지막 접근하는 레벨(도 5에서, 레벨 1과 레벨 5)을 제외한 나머지 레벨에 존재하는 빈 노드이다. 마커(M) 저장 방법은, 해당 빈 노드에 프리픽스가 저장되어 있지는 않지만 길이가 긴 다음 노드에 프리픽스가 존재하는 경우 이를 지시하는 "마커"를 해당 빈 노드에 저장하면 되고, BMP 저장 방법은, 해당 빈 노드에 해당할 때까지의 BMP를 미리 계산하여 해당 빈 노드에 저장하면 된다. 여기서, 마커가 저장된 빈 노드를 "마커 노드"라 하고, BMP가 저장된 빈 노드를 "BMP 노드"라 한다.
이하 설명에서 예시되는 프리픽스, 일정한 길이의 코드, 복수의 해싱 색인 등에 대한 비트 수는 설명의 편의를 위한 예시일뿐, 실제로는 IP 주소 검색을 장치(100)가 입력받는 IP 주소의 비트 수, 프리픽스의 개수, 코드 생성기(210), 해싱 함수의 개수, 해싱 색인의 개수, 또는 IP 주소 검색 성능 등에 따라 아래에서 예시된 비트 수와는 달라질 수 있다.
(1) 해싱 색인 생성 과정
해싱 색인(Hashing Index)은, 코드 생성기(210) 및 해싱 색인 생성부(220)를 포함하는 해싱부(120)에 의해 생성되며, 통합 블룸 필터 및 통합 복수 해싱 테이블을 검색할 때 이용되는 정보이다. 아래 설명에서, 코드 생성기(210)는, 그 일 예일 수 있는 CRC(Cycle Redundancy Check, 이하 "CRC"라 칭함) 생성기인 것으로 가정한다.
CRC 생성기는 길이가 다양한 입력 값(즉, 비트 추출부(110)에 추출된 비트)을 받아 일정한 규칙을 사용하여 입력 값의 각 비트를 섞어, 모두 같은 길이의 스크램블 된 값(즉, 코드)을 생성한다. 이 구조를 이용하면 쉽게 입력 값을 섞을 수 있으며, 또한 구현이 쉽다는 장점이 있다.
CRC 생성기는 다양한 길이의 입력 값(즉, 비트 추출부(110)에 추출된 비트)을 받아 일정한 길이의 코드를 생성하여, 생성된 코드에서 사용자가 원하는 길이의 해슁 색인을 마음대로 뽑을 수 있다는 장점 때문에 본 발명의 일 실시예에서는, 코드 생성기(210)로서 CRC 생성기를 사용한 것이다. 물론, CRC 생성기 이외에도, 다양한 길이의 입력 값(즉, 비트 추출부(110)에 추출된 비트)을 받아 일정한 길이의 코드를 생성할 수 있는 어떠한 형태의 코드 생성기도 가능하다.
한편, 다수의 프리픽스가 통합 복수 해싱 테이블의 같은 위치에 지정될 수 있는데 이것을 충돌(collision)이라 하며, 이러한 충돌을 최소화하는 해싱 색인을 구하여 효율적인 해슁을 하는 것이 관건이며, 입력값(즉, 비트 추출부(110)에 추출된 비트)에 대해 균일한 출력값(즉, 특정 입력값에 대하여 항상 일정한 출력값)을 가져야 한다. CRC 생성기는 해싱 함수 중 완전 해싱(Perfect Hashing)에 가까운 성능을 낸다고 평가되고 있다. 이러한 CRC 생성기는 도 7에서 예시적으로 도시되며, 도 7에 예시적으로 도시된 CRC 생성기는, 일 예로서, 5비트의 일정한 길이의 코드를 생성하는 5비트 CRC 생성기이다. 여기서, 5비트 CRC 생성기는, 설명의 편의를 위한 예시일뿐, 실제로는 임의 길이의 CRC 생성기를 사용할 수 있다. 즉, 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치(100)가 128비트의 IPv6 주소를 검 색하기 위한 장치라면, 128비트의 CRC 생성기를 1개 이용하든지, 64비트의 CRC 생성기를 2개 이용하는 것처럼 n비트의 CRC 생성기를 (128/n)개 이용할 수 있다. 또한, 하나의 64비트 CRC 생성기를 2번 반복하여 사용하든지, n비트의 CRC 생성기를 (128/n) 번 반복하여 이용할 수도 있다.
CRC 생성기를 이용하여 해슁 색인을 구하는 과정은 도 7을 참조하여 아래에서 설명한다.
도 7을 참조하면, 다양한 길이의 프리픽스(즉, 비트 추출부(110)에서 추출된 비트)가 CRC 생성기(700)에 들어가면, 일정한 규칙에 의해 각 비트가 섞이게 되고, 모두 같은 길이의 스크램블 된 값(즉, 일정한 길이의 코드)이 생성된다. 이렇게 생성된 값에서 임의로 사용자가 원하는 비트 수만큼 선택하여 해싱 색인으로 사용한다.
도 7을 참조하면, CRC 생성기(700) 내의 모든 플립-플롭(Flip-Flop)은 일정한 값(예: 0)으로 초기화되어 있으며, 다양한 길이의 프리픽스(즉, 비트 추출부(110)에서 추출된 비트)인 인풋(Input)이 한 비트씩 들어오면서 플립-플롭의 값과 XOR 된다. 마지막 비트까지 들어오면 CRC 생성기(700)의 동작이 멈추고 플립-플롭에 저장되어 있는 값이 코드 생성기(210)인 코드 생성기(700)에서 생성한 코드가 된다.
레벨에 따른 이진 검색 구조를 해싱 구조에 저장하기 위해서는, 도 6의 노드 정보 중 최대 길이인 5비트를 기준으로 하여, 5비트 CRC 생성기(700)를 사용한다. 5비트 CRC 생성기(700)에 프리픽스 노드(P), 마커 노드(M), BMP 선계산 노드(BMP) 값을 통과시켜 얻어낸 코드("CRC 코드"라고 함)는 아래 표 1와 같다. 아래 표 1에서 볼 수 있듯이, 다양한 길이의 노드 값들이 5비트 CRC 생성기(700)를 거쳐 모두 길이 5의 코드가 생성되며, 해싱 색인 생성부(220)는, 코드 생성기(210)의 일 예인 CRC 생성기(700)에서 생성된 코드에서 필요한 비트를 사용자 임의로 선택하여 다양한 해싱 색인을 얻을 수 있다.
Figure 112009027364195-pat00001
(2) 통합 블룸 필터의 프로그래밍 과정
레벨에 따른 이진 검색 구조의 노드 정보를 해싱 구조에 저장하기에 앞서 더욱 효율적인 검색 성능을 위해 통합 블룸 필터를 사용한다.
이러한 통합 블룸 필터는 비트-벡터(Bit-Vector)를 이용하여 입력값이 특정 집합의 요소(Member)인지 확인하여 필터링하는 구조이며, 통합 블룸 필터를 구성하기 위해서는 프로그래밍이라는 과정을 거쳐야 한다. 통합 블룸 필터는 단일 블롬 필터에 다양한 길이의 프리픽스를 모두 프로그래밍한 것으로서, 종래의 IP 주소 검색시 이용되던 블룸 필터가 다양한 프리픽스의 길이별로 구성되어 구현이 복잡하고 메모리 요구량이 크다는 단점이 가지는 것이 비해 구현이 단순해지고 메모리 요구량이 작아지는 장점이 있다.
이러한 통합 블룸 필터의 프로그래밍을 위해, 통합 블룸 필터의 크기를 M, 통합 블룸 필터에 저장될 요소(즉, 프리픽스)의 수를 N이라고 정의하고, 사용할 해싱 함수의 개수를 k로 정의한다. 여기서, 통합 블룸 필터의 크기(M) 및 통합 블룸 필터의 해싱 색인에 필요한 비트 수(B)는 임의의 정수로서, 일 예로서, 아래 수학식 1과 같이 정의될 수 있으며, 통합 블룸 필터의 사이즈(M)는 원하는 필터링 성능에 따라 조절 가능하다. 또한, 사용할 해싱 함수의 개수(k)는 2인 것으로 가정한다.
Figure 112009027364195-pat00002
상기 수학식 1에서의 B는, 임의의 정수로서, log2N (정수값)이거나, log2N가 정수가 아닌 경우 "log2N 보다 큰 가장 작은 정수" 또는 "log2N 보다 작은 가장 큰 정수"일 수 있다. 이러한 B는 임의의 길이를 가질 수 있으며, 이러한 B의 크기에 따라 통합 복수 해싱 테이블의 성능이 달라질 수 있다.
또한, 총 M비트로 구성된 통합 블룸 필터에 프로그래밍하기 위하여, 각 해싱 색인의 값은 1부터 M사이의 값으로 정의되며, 앞에서 해싱 함수의 개수(k)를 2로 가정하였기 때문에, 아래에서는, 복수의 해싱 색인도 2개인 해싱 색인(즉, 해싱 색인 1과 해싱 색인 2)을 포함하고, 해싱 색인 1은 CRC 코드의 첫 B 비트이고, 해싱 색인 2는 마지막 B 비트인 것으로 가정한다. 이와 같은 방식에 따라, 도 6의 노드 구조에서, 각 노드에 대한 2개의 해싱 색인(해싱 색인 1 및 해싱 색인 2)을 구하면 아래 표 2과 같다.
Figure 112009027364195-pat00003
전술한 통합 블룸 필터의 사이즈(M)와 해싱 색인을 참조하여, 통합 블룸 필터를 프로그래밍하는 과정은 다음과 같다.
도 6의 노드의 수(N)는 12개이므로, 통합 블룸 필터의 사이즈 M=N'=16이다. 통합 블룸 필터의 모든 비트-벡터의 값을 0으로 초기화한 뒤, 다음과 같은 프로그래밍 과정(BFAdd (x))을 거친다. 즉, 어떤 입력에 대하여 k개의 해싱 함수를 통하여 얻어진 해싱 색인에 대항하는 통합 블룸 필터의 비트-벡터의 값을 "1"로 만든다. 이와 같은 방식에 따라, 도 6의 모든 노드 정보를 통합 블룸 필터(800)의 사이즈(M=N')에 프로그래밍이 된 결과는 도 8과 같다.
BFAdd (x)
1) for (i=1 to k)
2) Vector[hi(x)] ← 1
통합 블룸 필터의 프로그래밍 결과, 각 해싱 색인별로 저장된 비트-벡터값은, 비트 추출부(110)에서 추출된 비트가 "통합 복수 해싱 테이블"의 엔트리(Entry)에 포함되는지를 판단하기 위한 정보가 되며, 전술한 통합 블룸 필터의 프로그래밍 과정의 설명에서는, 비트-벡터값의 일예로서, 비트 추출부(110)에서 추출된 비트가 "통합 복수 해싱 테이블"의 엔트리(Entry)에 포함되는 경우, 해당 해싱 색인에 해당하는 비트-벡터값을 "1"로 프로그래밍하고, 비트 추출부(110)에서 추출된 비트가 "통합 복수 해싱 테이블"의 엔트리(Entry)에 포함되지 않는 경우 당 해싱 색인에 해당하는 비트-벡터값을 "0"으로 프로그래밍 된 것이다.
(3) 통합 복수 해싱 테이블에 프리픽스를 저장하는 과정
본 발명의 일 실시예에서는, 길이를 이용한 이진 검색 구조의 노드 정보를 통합 복수 해싱 테이블에 저장하여, 검색 성능을 향상시키고, 메모리 요구량에 있어서도 좋은 성능을 보이는 구조를 제안한다.
이러한 "통합 복수 해싱 테이블"은, 종래의 해싱 테이블처럼 길이별로 구성하지 않고, 단일 해싱 테이블에 다양한 길이의 노드 정보를 저장하는 구조를 가지며, 이러한 통합 복수 해싱 테이블의 구조는 해싱 테이블의 개수(=해싱 함수 또는 해싱 색인의 개수), 해싱 테이블당 버켓의 개수 및 버켓당 로드의 개수에 따라 요구되는 메모리의 크기가 달라지고, 또한 오버플로우의 개수가 달라진다.
이하에서는, 프리픽스의 개수가 N이고, 2개의 해싱 함수를 사용할 때, 2개의 해싱 테이블(Table 1, Table 2) 각각의 해싱 테이블당 버켓(Bucket)의 개수를 2B=N' (여기서, B는 log2N 이상인 정수 중 가장 작은 정수)로 갖고, 하나의 버켓 당 로드(엔트리)의 개수를 2로 갖는 통합 복수 해싱 테이블을 가정한다. 또한, 각 버켓의 두 로드를 각각 Left와 Right로 정의한다. 2개의 해싱 테이블(Table 1, Table 2)은 각각 SRAM에 저장 가능하다.
통합 복수 해슁 테이블에 프리픽스를 저장하는 과정을 알아보면 다음과 같다.
상기 표 2의 해싱 색인의 값이 통합 복수 해싱 테이블의 메모리를 가리키는 포인터가 되며, 복수의 해싱 색인, 즉 해싱 색인 1과 해싱 색인 2를 사용하여 통합 복수 해싱 테이블에 포함된 2개의 해싱 테이블(Table 1, Table 2)에 동시에 접근한다. 접근한 2개의 버켓에서 로드의 개수를 비교하여 로드의 개수가 적은 쪽에 프리픽스를 저장한다. 두 개의 버켓의 로드의 수가 같은 경우 임의로 첫 번째 해싱 테이블(Table 1)에 저장되는 것을 가정하였다. 만일 두 개의 버켓이 모두 차 있다면 오버플로우 테이블에 프리픽스를 저장한다.
통합 복수 해슁 테이블의 크기에 따라 오버플로우(Overflow)의 개수가 조절 가능하며, 적절한 크기의 메모리를 사용하여 오버플로우되는 프리픽스의 개수를 일정 수 이하로 제한할 수 있으며, 오버플로우 테이블은 캐쉬나 작은 크기의 TCAM으로 구현 가능하다.
(4) 레벨에 따른 이진 검색 과정
앞에서 전술한 통합 블룸 필터가 프로그래밍되고, 통합 복수 해싱 테이블에 프리픽스가 저장된 이후, 이들을 이용하여 입력된 목적지의 IP 주소에 대한 검색 과정을 거치게 되고, 그 결과값으로서, 포워딩 정보인 최적 일치 프리픽스(BMP: Best Matching Prefix)를 출력한다.
본 발명의 일 실시예에 따른 IP 주소를 검색하기 위한 장치(100)는, 길이를 이용한 이진 검색을 수행하므로, 최장길이 일치 프리픽스(LMP: Longest Matching Prefix, 이하 "LMP"라 칭함)를 최적 일치 프리픽스(BMP: Best Matching Prefix,이하 "BMP"라 칭함)로서 검색하기 위해서는 입력값에 대하여 트라이 레벨에 따라 이진 검색을 진행한다.
도 9는, 레벨에 따른 이진 검색 구조를 예시적으로 나타낸 도면이다. 도 9에 도시된 트라이(Trie)에는 레벨에 다른 이진 검색을 위한 트라이 구조에서 저장되어야 하는 노드들과 접근레벨의 순서가 표시된다.
해싱부(120)에 포함된 코드 생성기(210)로서의 CRC 생성기(700)와, 통합 블룸 필터 검색부(130)에서 이용하는 통합 블룸 필터는, IP 주소 검색을 위하여 설계된 칩의 내부에 존재하고, 통합 복수 해싱 테이블 검색부(140)에서 이용하는 통합 복수 해싱 테이블은 칩의 외부에 존재하는 것을 가정한다. 이때, 통합 블룸 필터의 사용을 통해, 칩의 외부에 메모리 형태로 존재하는 통합 복수 해싱 테이블의 접근 회수를 최소화할 수 있다. 이는 향후 저장하여야 할 IP 주소, 특히 128비트의 상당히 긴 길이를 갖는 IPv6 주소의 프리픽스 정보가 급격히 증가하여 커다란 메모리를 요구하는 경우에도, 실제 노드 정보를 저장하는 메모리를 칩 외부에 둠으로써 쉽게 적용할 수 있다는 장점이 있다.
도 9에 도시된 바와 같이, 레벨 3에 해당하는 노드에 가장 먼저 접근하며, 만일 일치하는 노드(마커 노드, 프리픽스 노드 또는 BMP 노드)가 없다면 레벨 2로, 일치하는 노드(마커 노드, 프리픽스 노드 또는 BMP 노드)가 있다면 레벨 4로 검색을 진행한다. 레벨에 따른 이진 검색의 마지막 레벨(레벨 1 또는 레벨 5)까지 검색을 진행 후, 일치하는 결과 중 최대 길이의 값(LMP)이 BMP가 되며 그 포워딩 정보를 결과값으로서 출력한다.
도 10은, 전술한 레벨에 따른 이진 검색 과정을 슈도코드(Pseudo-Code) 형태를 나타낸 도면이다. 아래에서는, 도 10에 도시된 레벨에 따른 이진 검색 과정(Search(input))을 도 1의 각 구성과 대응시켜 설명한다.
도 10을 참조하면, 먼저, 비트 추출부(110)는 입력값(즉, 입력된 IP 주소의 비트값, input)을 현재의 접근레벨(L)에 해당하는 접근길이에 맞추어 잘라서, 현재의 접근레벨(L)에서의 비트(in)를 추출한다. 이 과정은, 도 10에서의 슈도코드 중에서『in= Cut _ input ( input , L) 』에 해당한다.
이후, 해싱부(120)에 포함된 코드 생성기(210)의 일 예인 CRC 생성기(700)는, 앞에서 추출된 비트(in)로부터 일정한 길이를 갖는 코드(code)를 생성한다. 이 과정은, 도 10에서의 슈도코드 중에서 『code = CRC ( in , 128)』에 해당한다.
이후, 해싱부(120)에 포함된 해싱 색인 생성부(220)는, 생성된 코드(code)에서 원하는 비트만큼 추출하여 2개의 해싱 색인(해싱 색인 1(ind1), 해싱 색인 2(ind2))을 생성한다. 이 과정은, 도 10에서의 슈도코드 중에서 『ind1 = first [log 2 N] bits of code』 및 『ind2 = last [ log 2 N ] bits of code』에 해당한다.
이후, 통합 블룸 필터 검색부(130)는, 생성된 2개의 해싱 색인(해싱 색인 1(ind1), 해싱 색인 2(ind2))을 사용하여, 비트 추출부(110)에서 추출된 비트(in)가 통합 블룸 필터의 요소인지 확인하는 쿼링(Querying)을 진행한다. 이를 위해, 통합 블룸 필터에서, 2개의 해싱 색인(해싱 색인 1(ind1), 해싱 색인 2(ind2))의 위치에 해당하는 비트-벡터값을 검색하고, 검색된 비트-벡터값을 통해, 비트 추출부(110)에서 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 포함되는지를 판단한다. 이 과정은, 도 10에서의 슈도코드 중에서 첫 번째 if문에 해당한다.
예를 들어, 통합 블룸 필터에서, 2개의 해싱 색인 값(해싱 색인 1(ind1), 해싱 색인 2(ind2))의 위치에 해당하는 비트-벡터의 값 중 하나라도 0이 존재하면, 현재의 접근길이는 일치하는 노드가 없는 접근길이이므로 통합 복수 해싱 테이블에서의 검색을 진행할 필요가 없다고 판단하여, 바로 길이가 짧은 쪽의 다음 레벨로 검색을 진행하기 위해, 접근레벨 제어부(170)는 접근레벨을 제어하고, 제어된 접근레벨(L)에 해당하는 접근길이가 지시되는 제 1 제어신호를 비트 추출부(110)로 입력해준다. 접근레벨 제어부(170)에서의 이러한 접근레벨 제어는, 도 10에서의 슈도코드 중에서 첫 번째 if문의 else 문장에 해당한다.
만약, 2개의 해싱 색인 값(해싱 색인 1(ind1), 해싱 색인 2(ind2))의 위치에 해당하는 비트-벡터값이 모두 1인 경우에는, 이 접근길이의 노드가 통합 복수 해싱 테이블에 존재할 가능성이 있으므로, 인풋(즉, 비트 추출부(110)에서 추출된 비트(in))은 통합 블룸 필터를 통과하게 되고, 해싱 색인 1(ind1) 및 해싱 색인 2(ind2)를 이용하여 통합 복수 해싱 테이블에 인풋(즉, 비트 추출부(110)에서 추출된 비트(in))이 실제로 존재하는지 검색을 진행한다.
통합 블룸 필터 검색부(130)에서 검색된 비트-벡터값이 모두 1인 것으로 확인되어, 통합 복수 해싱 테이블 검색부(140)에서 통합 복수 해싱 테이블에 포함된 2개의 해싱 테이블인 해싱 테이블 1(Table1)과 해싱 테이블 2(Table2)를 각각 검색하여, 2개의 해싱 테이블(Table1, Table2)에서 2개의 해싱 색인(해싱 색인 1(ind1) 및 해싱 색인 2(ind2)) 각각에 해당하는 노드 정보가 비트 추출부(110)에서 추출된 비트(in)와 일치하는지를 확인한다. 이 과정은, 도 10에서의 슈도코드 중에서, 두 번째 if 문에 해당한다. 이때, 2개의 해싱 테이블(Table1, Table2)은 별도의 SRAM에 저장될 수 있으며, 검색 시 병렬적으로 메모리에 접근하여 검색을 진행한다.
이때, 해싱 색인 1(ind1)의 값으로 해싱 테이블 1(Table1)의 버켓을 검색하고, 해싱 색인 2의 값으로 해싱 테이블 2(Table2)의 버켓을 검색하여, 비트 추출부(110)에서 추출된 비트인 인풋(in)과 일치하는 노드가 저장되어 있는지 확인한다. 확인 결과, 일치하는 노드가 있다면 이는 현재까지의 BMP이므로 이 결과를 기억한 후 더 긴 방향의 레벨로 검색을 진행하기 위해, 접근레벨 제어부(170)에서 접근레벨을 제어하여 제어된 접근레벨(L)에 해당하는 접근길이가 지시되는 제 3 제어신호를 비트 추출부(110)로 입력해준다. 접근레벨 제어부(170)에서의 이러한 접근레벨 제어는, 도 10에서의 슈도코드 중에서 두 번째 if문 내부에 있는 세 번째 if문의 else 문장에 해당한다.
만약, 검색 도중 통합 복수 해싱 테이블(Table 1, Table 2)에 일치하는 노드가 없다면 오버플로우 테이블에서 검색을 진행하여 이때 일치가 있다면 길이가 긴 방향의 다음 레벨로 검색을 진행하기 위해 접근레벨 제어부(170)에서 접근레벨을 제어하고, 오버플로우 테이블에서도 일치가 없다면, 이는 통합 블룸 필터에서 거짓 양성을 만들어 낸 경우에 해당되어 길이가 짧은 방향의 다음 레벨로 검색을 진행하기 위해, 접근레벨 제어부(170)에서 접근레벨을 제어하여 제어된 접근레벨(L)에 해당하는 접근길이가 지시되는 제 2 제어신호를 비트 추출부(110)로 입력해준다. 접근레벨 제어부(170)에서의 이러한 접근레벨 제어는, 도 10에서의 슈도코드 중에서 두 번째 if문의 else 문장에 해당한다.
레벨에 따른 이진 검색 과정의 예시적인 사례
도 10을 참조하여 이상에서 전술한 레벨에 따른 이진 검색 과정을 도 9 및 도 11을 참조하여 예시적으로 설명한다. 이때, 입력된 IP 주소는 "00110"이라고 가정한다. 이 가정에 따른 IP 주소인 "00110"는 설명의 편위를 위한 예시일뿐, 실제로는 32비트(IPv4인 경우)이거나 128비트(IPv6인 경우)일 수 있다. 따라서, 이하 설명에서 예시되는 모든 비트와 그 비트 수는 설명의 편의를 위한 예시이다.
도 9에 도시된 바와 같이, 첫 접근 레벨은 "레벨 3"이고, 레벨 3에 해당하는 접근길이는 3이기 때문에, 비트 추출부(110)는 입력된 IP 주소의 처음 3비트 "001"을 추출하여, CRC 생성기(700)로 입력한다.
해싱부(120)에 포함된 코드 생성기(210)의 일 예인 CRC 생성기(700)는, 입력된 3비트인 "001"로부터 5비트의 일정한 길이를 갖는 코드를 생성하며, 이때 생성된 코드는, 표 1를 참조하면, "10101"이다.
해싱부(120)에 포함된 해싱 색인 생성부(220)는, 앞에서 생성된 5비트의 코드의 처음 4비트를 해싱 색인 1으로 생성하고, 5비트의 코드의 마지막 4비트를 해싱 색인 2로 생성한다. 이렇게 생성된 해싱 색인 1과 해싱 색인 2는, 표 2을 참조하면, "1010"과 "0101"이고, 십진수로는 "10"과 "5"이다.
통합 블룸 필터 검색부(130)는, 해싱 색인 1(1010(10)) 및 해싱 색인 2(0101(5))를 이용하여 통합 블룸 필터에 대한 쿼링을 진행하여, 통합 블룸 필터의 10번째와 5번째 비트-벡터값을 검색한다. 이렇게 검색된 0번째와 5번째 비트-벡터값이, 도 8를 참조하면, 모두 1이므로, 레벨 3에 대하여 비트 추출부(110)에서 추출된 비트("001")가 통합 복수 해싱 테이블의 엔트리에 포함되는 것으로 판단된다. 즉, 통합 복수 해슁 테이블에 이 노드가 존재할 가능성이 크다는 "양성(Positive)"을 의미한다. 따라서 통합 복수 해싱 테이블 검색부(140)는, 해싱 색인 1(1010(10)) 및 해싱 색인 2(0101(5))를 이용하여 통합 복수 해싱 테이블에서 검색을 진행한다.
도 11을 참조하면, 통합 복수 해싱 테이블 검색부(140)는, 해싱 색인 1(1010(10)) 및 해싱 색인 2(0101(5))를 이용하여 통합 복수 해싱 테이블에 포함된 2개의 해싱 테이블(해싱 테이블 1(Table1) 및 해싱 테이블 2(Table2)를 검색한 결과, 해싱 테이블 1(Table1)의 Left에서 입력값(즉, 레벨 3에 대하여 비트 추출부(110)에서 추출된 비트("001"))과 일치하는 노드 정보가 존재한다는 것을 알 수 있다. 도 9에 도시된 바와 같이, 존재하는 (001*) 노드는 프리픽스가 저장되어 있지 않지만, 그 노드보다 길이가 긴 쪽의 노드에 프리픽스 노드가 존재한다는 마커 노드(M: Marker Node)이므로 다음 긴 레벨로 검색을 진행한다. 즉, 현재의 접근레벨이 레벨 3이므로, 미리 정의된 레벨 순서에 근거하여, 다음 긴 레벨인 "레벨 4"를 접근레벨로서 결정하여 검색을 다시 진행한다. 이때, 접근레벨 제어부(170)가 접근레벨로서 레벨 4에 해당하는 접근길이 4를 지시하는 제어정보(즉, 제 3 제어정보)를 출력하여 비트 추출부(110)로 입력함으로써, 다음 긴 레벨인 "레벨 4"에 대하여 검색이 다시 진행될 수 있다.
두 번째 접근레벨인 "레벨 4"에 해당하는 접근길이가 4이므로, 비트 추출부(110)는, 입력되어 저장된 IP 주소 "00110"에서 처음 4비트인 "0011"을 추출하여, CRC 생성기(700)로 입력해준다.
이후, CRC 생성기(700)는, 표 1를 참조하면, 입력된 비트("0011")로부터 5비트의 일정한 길이를 갖는 코드인 "01111"를 생성하고, 해싱 색인 생성부(220)는, 표 2을 참조하면, CRC 생성기(700)에서 생성된 5비트의 코드 "01111"로부터 2개의 해싱 색인을 생성한다. 이렇게 생성된 2개의 해싱 색인은, "0111(7)"인 제 1 해싱 색인과 "1111(15)"인 제 2 해싱 색인을 포함한다.
이후, 통합 볼룸 필터 검색부(130)는, 도 2에 도시된 통합 블룸 필터에서 "0111(7)"인 제 1 해싱 색인과 "1111(15)"인 제 2 해싱 색인에 해당하는 비트-벡터값을 검색하고, 이렇게 검색된 비트-벡터값이 모두 1이기 때문에, 레벨 4에 대하여 비트 추출부(110)에서 추출된 비트("0011")가 통합 복수 해싱 테이블의 엔트리에 포함되는 것으로 판단될 수 있다. 즉, 통합 복수 해슁 테이블에 이 노드가 존재할 가능성이 크다는 "양성(Positive)"을 의미한다. 따라서 통합 복수 해싱 테이블 검색부(140)는, "0111(7)"인 제 1 해싱 색인과 "1111(15)"인 제 2 해싱 색인을 이용하여 통합 복수 해싱 테이블에서 검색을 진행한다.
이후, 통합 복수 해싱 테이블 검색부(140)는, 통합 복수 해슁 테이블에 포함된 해싱 테이블 1(Table1)의 7번째 엔트리와, 통합 복수 해슁 테이블에 포함된 또다른 해싱 테이블 2(Table2)의 15번째 엔트리에서 검색을 진행한다. 도 11을 참조하면, 검색 결과, 해싱 테이블 1(Table1)의 Left에서 (0011*) 노드가 존재하고 이 노드는 프리픽스가 저장된 프리픽스 노드이기 때문에, BMP 갱신부(150)는 현재까지 BMP를 (0011*) 갱신한다. 그리고, 일치하는 노드가 존재했고, 결과값 출력부(160)에서의 판단 결과, 현재의 레벨 4가 마지막 레벨이 아니기 때문에, 접근레벨 제어부(170)에 의해 접근레벨이 다음 긴 레벨인 "레벨 5"로 제어되어 다시 검색을 진행한다. 이때, 접근레벨 제어부(170)는, 접근레벨로서 레벨 5에 해당하는 접근길이 5를 지시하는 제어정보(즉, 제 3 제어정보)를 출력하여 비트 추출부(110)로 입력함으로써, 다음 긴 레벨인 "레벨 5"에 대하여 검색이 다시 진행될 수 있게 되는 것이다.
세 번째 접근레벨인 "레벨 5"에 해당하는 접근길이가 5이므로, 비트 추출부(110)는, 입력되어 저장된 IP 주소인 "00110"로부터 5비트의 "00110"를 추출하고, CRC 생성기(130)는 추출된 "00110"를 입력받아 "10111"의 코드를 생성한다. 이후, 해싱 색인 생성부(220)는, 생성된 코드인 "10111"로부터 "1011(11)"인 해싱 색인 1과 "0111(7)"인 해싱 색인 2를 생성한다.
이후, 통합 블룸 필터 검색부(130)는, 도 2에 도시된 통합 블룸 필터에서 11번째 비트-벡터값과 7번째 비트-벡터값을 검색하고, 검색 결과, 11번째 비트-벡터값이 "0"이기 때문에, 통합 블룸 필터를 통과하지 못하게 되어, 통합 복수 해싱 테이블 검색을 수행하지 않게 된다. 또한, 현재의 접근레벨인 레벨 5가 마지막 접근레벨이기 때문에, 즉, 길이 5가 마지막 접근길이이기 때문에 검색이 종료되고, 결과값 출력부(160)에서는 현재까지 갱신되어 저장된 BMP인 "0011*"을 결과값으로서 출력한다.
본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치(100)가 통합 블룸 필터를 포함하지 않는다면 3번의 통합 복수 해싱 테이블로의 접근이 필요하지만, 통합 복수 해싱 테이블로의 접근 이전에, 통합 블룸 필터에 의해 멤버가 아닌 값을 필터링해주기때문에, 2번의 통합 복수 해슁 테이블로의 접근으로 모든 검색을 마칠 수 있다. 즉, 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치(100)가 통합 블룸 필터를 포함하게 됨으로써, 불필요한 통합 복수 해슁 테이블로의 접근을 사전에 방지하여 효율적인 검색을 제공할 수 있다.
(5) 업데이트 과정
본 발명에서 일 실시예로서 개시된 IP 주소 검색을 위한 구조에 새로운 노드 정보를 추가하거나, 기존의 노드 정보를 제거하는 과정을 살펴보면 다음과 같다.
새로 추가할 노드 정보를 CRC 하드웨어(CRC 생성기)에 넣어 코드를 얻고, 그 코드에서 2개의 해싱 색인을 구한다. 구해진 2개의 해싱 색인으로 통합 블룸 필터를 프로그래밍하며, 통합 복수 해슁 테이블에 접근하여 두 개의 해싱 색인에 위치하는 곳의 로드를 확인 후, 로드가 적은 곳에 노드 정보를 삽입한다. 만일 통합 복수 해싱 테이블의 로드가 모두 차 있다면 오버플로우 테이블에 노드 정보가 저장된다.
노드 정보의 삭제는 삭제할 정보의 CRC 생성기의 출력값인 코드를 구한 뒤, 이 코드에서 2개의 해싱 색인을 구한다. 이 2개의 해싱 색인으로 통합 복수 해싱 테이블에서 2개의 해싱 색인에 해당하는 테이블 엔트리를 검색하며, 삭제할 노드 정보가 발견되면 그 정보를 삭제한다. 삭제의 경우는, 추가와는 달리 통합 블룸 필터에서의 삭제는 이루어지지 않는다. 따라서 레벨에 따른 이진 검색 과정시, 삭제하지 않은 노드 정보로 인해 통합 블룸 필터의 거짓 양성(False Positive)은 증가할 것이지만 통합 복수 해싱 테이블에서의 검색은 정확하게 이루어질 수 있다.
만일, 통합 블룸 필터에서의 삽입, 삭제 동작이 매우 많이 반복되는 경우에는, 통합 블룸 필터의 거짓 양성의 확률이 매우 증가할 수 있다. 이러한 업데이트 빈도가 높은 라우터에서는 통합 블룸 필터의 각 비트-벡터에 해당하는 구성 성분의 수를 카운트하여, 이 정보를 저장하는 공간을 추가한 카운팅 블룸 필터를 사용할 수 있다. 즉, 통합 블룸 필터에 정보가 삽입되었을 때는 해당 비트의 카운트 정보의 값을 1 증가시키며, 삭제가 되었을 때는 1 감소시킨다. 만일 카운트 값이 0이 되었을 경우에는 통합 블룸 필터의 비트-벡터값을 1에서 0으로 세팅하여 거짓 양성 비율의 증가를 방지할 수 있다.
또한, 본 발명에서 일 실시예로서 개시된 IP 주소 검색을 위한 구조는, 프리픽스의 각 비트를 스크램블 하여 프리픽스 집합의 엔트리 수에 해당하는 비트를 취하여 해싱을 수행하므로 프리픽스의 길이와 직접적인 관련이 없다. 따라서 32비트인 IPv4 또는 128비트인 IPv6의 프리픽스로 제안하는 알고리즘을 구성하여도 큰 차이점이 없다. 다만, 프리픽스 집합의 엔트리 수에 영향을 받으므로 프리픽스의 개수(N)의 2B (여기서, B는 임의의 정수로서, log2N 이상인 정수 중 가장 작은 정수 또는 log2N 이하인 정수 중 가장 큰 정수일 수 있음)에 해당하는 엔트리 구조를 갖는 통합 복수 해싱 테이블을 사용하여야 한다.
즉, 업데이트로 인하여 프리픽스 집합의 엔트리 수가 증가하였을 때, 해싱을 하여 메인 테이블에 저장하는 것을 원칙으로 하며, 충돌이 발생하였을 시에는 오버플로우 테이블에 저장한다. 만일 최악의 경우 오버플로우 테이블에 저장되는 프리픽스의 수가 많아 비용 증가가 심할 경우 B의 크기를 늘려 2B에 해당하는 통합 복수 해싱 테이블을 다시 구성하는 방법을 적용해야 한다.
이상에서는, 전술한 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치(100)를 설명하였으며, 덧붙여, 장치(100)에 대한 상세한 설명 및 예시를 통해, IP 주소 검색을 효율적으로 할 수 있다는 것을 알 수 있었다.
이하에서는, 전술한 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치(100)가 수행하는 IP 주소 검색 방법을 따라오는 도 12에서의 흐름도를 참조하여 간략하게 설명한다.
도 12는 본 발명의 일 실시예에 따른 IP 주소 검색 방법에 대한 흐름도이다.
도 12를 참조하면, 본 발명의 일 실시예에 따른 IP 주소 검색 방법은 비트 추출 단계(S1200), 해싱 단계(S1202), 통합 블룸 필터 검색 단계(S1204), 통합 복수 해싱 테이블 검색 단계(S1206), 최적 일치 프리픽스 갱신 단계(S1208), 접근레벨 제어 단계(S1210) 및 결과값 출력 단계(S1212) 등을 포함한다.
비트 추출 단계(S1200)는, IP 주소를 입력받아 저장해두고, 제어신호를 수신할 때마다 제어신호에 의해 지시되는 접근길이에 따라 비트를 저장된 IP 주소로부터 추출하는 단계이다.
해싱 단계(S1202)는, 비트 추출 단계(S1200)에서 추출된 비트를 해싱하여 복수의 해싱 색인을 생성하는 단계이다.
통합 블룸 필터 검색 단계(S1204)는, 통합 블룸 필터에서 복수의 해싱 색인 각각에 해당하는 비트-벡터값을 검색하는 단계이다.
통합 복수 해싱 테이블 검색 단계(S1206)는, 통합 블룸 필터 검색 단계S1204)에서의 검색 결과에 따라, 통합 복수 해싱 테이블에서 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색하는 단계이다.
최적 일치 프리픽스 갱신 단계(S1208)는, 통합 복수 해싱 테이블 검색 단계(S1206)에서 검색된 노드 정보 중에서 비트 추출 단계(S1200)에서 추출된 비트와 일치하는 노드 정보가 존재하면, 존재하는 노드 정보에 근거하여, 최적 일치 프리픽스를 갱신하는 단계이다.
접근레벨 제어 단계(S1210)는, 접근길이에 해당하는 접근레벨이 마지막 레벨이 아니면, 통합 블룸 필터 검색 단계(S1204) 또는 통합 복수 해싱 테이블 검색 단계(S1206)에서의 검색 결과와 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중 하나의 레벨을 접근레벨로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 제어신호를 출력하는 단계이다.
결과값 출력 단계(S1212)는, 접근길이에 해당하는 접근레벨이 마지막 레벨이면, 최적 일치 프리픽스 갱신 단계(S1208)에서 갱신된 최적 일치 프리픽스를 결과값으로 출력하는 단계이다.
전술한 해싱 단계(S1202)는, 비트 추출 단계(S1200)에서 추출된 비트로부터 일정한 길이의 코드를 생성하는 코드 생성 단계; 및 생성된 코드로부터 복수의 해싱 색인을 생성하는 해싱 색인 생성 단계를 포함한다.
전술한 통합 복수 해싱 테이블 검색 단계(S1206)는, 통합 블룸 필터 검색 단계(S1204)에서 검색된 비트-벡터값을 통해, 비트 추출 단계(S1200)에서 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 포함된 것으로 판단된 경우에만, 수행됨으로써, 통합 복수 해싱 테이블에서 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색한다.
전술한 접근레벨 제어 단계(S1210)는, 통합 블룸 필터 검색 단계(S1204)에서 검색된 비트-벡터값을 통해, 비트 추출 단계(S1200)에서 추출된 비트가 통합 복수 해싱 테이블의 엔트리에 미포함된 것으로 판단되면, 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중에서 길이가 짧은 방향의 다음 레벨을 접근레벨로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 "제 1 제어신호"를 제어신호로서 출력한다.
또한, 전술한 접근레벨 제어 단계(S1210)는, 통합 복수 해싱 테이블 검색 단계(S1206)에서 검색된 노드 정보 중에서 비트 추출 단계(S1200)에서 추출된 비트와 일치하는 노드 정보가 미 존재하면, 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중에서 길이가 짧은 방향의 다음 레벨을 접근레벨로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 "제 2 제어신호"를 제어신호로서 출력한다.
또한, 전술한 접근레벨 제어 단계(S1210)는, 통합 복수 해싱 테이블 검색 단계(S1206)에서 검색된 노드 정보 중에서 비트 추출 단계(S1200)에서 추출된 비트와 일치하는 노드 정보가 존재하면, 미리 정의된 레벨 순서에 근거하여, 복수의 레벨 중에서 길이가 긴 방향의 다음 레벨을 접근레벨로서 결정하고, 결정된 접근레벨에 해당하는 접근길이를 지시하는 "제 3 제어신호"를 제어신호로서 출력한다.
전술한 바와 같이, 접근레벨 제어 단계(S1210)에서, 제 1 제어신호, 제 2 제어신호 및 제 3 제어신호 중 하나가 제어신호로서 출력되면, 전술한 비트 추출 단계(S1200)는, 제 1 제어신호, 제 2 제어신호 및 제 3 제어신호 중 하나를 제어신호로서 수신하여, 수신된 제어신호에 의해 지시되는 접근길이에 따라 비트를 저장된 IP 주소로부터 추출한다.
이상에서 설명한 바와 같이 본 발명의 일 실시예에 의하면, 프리픽스 길이별로 블룸 필터 및 해싱 테이블을 구현할 필요없이, 단일의 통합 블룸 필터와, 단일의 통합 복수 해싱 테이블을 이용함으로써, 메모리 요구량을 크게 줄여주어 효율적인 IP 주소 검색을 가능하게 하는 효과가 있다.
또한, 본 발명의 일 실시예에 의하면, 통합 블룸 필터를 이용하여, 통합 복수 해싱 테이블로의 접근이 불필요하다고 판단된 경우에는 통합 복수 해싱 테이블로의 접근을 사전에 차단함으로써, 메모리 접근 횟수를 크게 줄여주고 이를 통해 효율적이고 더욱 빠른 IP 주소 검색을 가능하게 하는 효과가 있다.
또한, 본 발명의 일 실시예에 의하면, 통합 블룸 필터 및 통합 복수 해싱 테이블를 이용하여 메모리 요구량 및 메모리 접근 횟수를 크게 줄여줌으로써, IPv4 뿐만 아니라, 더욱 많은 비트 수를 갖는 IPv6 주소 체계에서도 효율적이고 더욱 빠른 IP 주소 검색을 가능하게 하는 효과가 있다.
이하에서는, 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치(100) 및 이 장치(100)가 제공하는 IP 주소 검색 방법에 대한 성능 평가 실험을 통해 전술한 효과들을 확인해본다.
본 발명의 일 실시예에 따른 IP 주소 검색에 대한 성능 평가 실험에서는, 실제 백 본 라우터에서 사용된 1069개의 IPv6 라우팅 데이터과, 1069개 중 100개와 500개를 랜덤으로 추출하여 실험하였으며, 실제 IPv6 라우팅 테이블에 존재하는 프리픽스들은 최대 길이가 128비트이므로, 본 성능 평가 실험에서는 64비트 CRC 생성기를 2개 연결하여 사용하였다.
Figure 112009027364195-pat00004
상기 표 3는 각 프리픽스 집합에서 통합 블룸 필터와 통합 복수 해싱 테이블의 크기에 따라 발생하는 오버플로우 개수를 보이고 있다.
표 3에서, 노드의 개수는 프리픽스 집합에서의 프리픽스 개수보다 많은데, 이것은 레벨에 따른 이진 검색 구조에서 생성되는 프리픽스 노드, 마커 노드, BMP노드의 정보를 모두 포함해야 하기 때문이다. 그리고, 표 3에서는, 통합 복수 해슁 테이블의 버켓의 개수를 2b (여기서, b는 log2N 이하인 정수 중 가장 큰 정수) 와, 2B(여기서, B는 log2N 이상인 정수 중 가장 작은 정수)로 하였을 때의 오버플로우 수와 메모리 사용량을 나타내었다.
각 프리픽스 집합에서 거의 모든 노드 정보가 통합 복수 해싱 테이블에 저장되며, 통합 복수 해싱 테이블의 엔트리 수와 오버플로우 수는 트레이드-오프(Trad-off)관계에 있다는 것을 알 수 있다.
통합 복수 해싱 테이블의 엔트리 구조와, 통합 블룸 필터(BF)와 통합 복수 해슁 테이블(Hash Table)을 위한 메모리 사용량을 계산하는 방법을 도 13에 도시하였다.
현재 네트워크상에 존재하는 대부분의 라우터는 빠른 인터넷 주소 검색 성능을 요구하므로 메모리 접근 횟수가 메모리 요구량보다 우선적으로 요구된다. 따라서, 본 발명에서 제안하는 구조에서 오버플로우를 줄이기 위하여 통합 복수 해싱 테이블의 크기를 증가시키면 메모리 요구량이 증가하지만, 종래의 구조에 비하여 월등히 빠른 검색 성능을 보인다는 것을 알 수 있다. 복수 해싱은 완전 해싱으로 간주할 만큼의 해싱 성능을 보인다는 것이 보고되어 왔으며, IPv6의 라우팅 테이블의 경우에도 오버플로우의 급격한 증가 우려가 매우 적다.
아래 표 4와, 통합 블룸 필터의 크기에 따른 통합 복수 해싱 테이블 접근율에 대한 성능 평가 실험 결과를 나타낸 도 14를 통해, 본 발명의 일 실시예에 따른 IP 주소 검색 구조의 성능을 확인할 수 있다.
표 4와 도 14에서는, 통합 복수 해싱 테이블의 경우 버켓의 수가 N'=2B (여기서, B는 log2N 이상인 정수 중 가장 작은 정수) 일 때이며, 통합 블룸 필터의 경우 크기를 N', 2N', 4N', 8N', 16N'으로 증가시키며 실험하였다.
Figure 112009027364195-pat00005
상기 표 4에서 BTmax는 통합 블룸 필터의 최대 접근(probe) 회수를 의미하여, BTavg는 블룸 필터의 평균 접근 회수를 의미한다. 또한 Tmax는 통합 해슁 테이블의 최대 접근(probe) 회수를 의미하여, HTavg는 통합 해슁 테이블의 평균 접근 회수를 의미한다.
해싱 테이블 접근 비율(%)은, 주소 검색시 통합 블룸 필터 접근 회수대비 통합 복수 해싱 테이블 접근 회수의 비율이다. 통합 블룸 필터의 크기가 증가할수록 해쉬 테이블 접근 비율이 감소하며, 이것은 통합 블룸 필터의 필터링 능력이 증가하면서 거짓 양성(false positive)이 감소하는 것을 뜻한다. 따라서 통합 블룸필터의 크기가 증가할수록 통합 복수 해슁 테이블로의 불필요한 메모리 접근이 감소함을 뜻한다.
도 15 및 도 16은, 통합 블룸 필터의 크기가 증가할 때, 본 발명에서 제안하는 구조의 평균 메모리 접근횟수와 메모리 요구량을 나타내었다.
통합 블룸 필터의 크기에 따른 통합 복수 해싱 테이블의 평균 접근 횟수에 대한 성능 평가 실험 결과를 나타낸 도 15을 참조하면, 통합 블룸 필터의 크기가 증가하면 필터링 능력이 증가하여 통합 복수 해슁 테이블로의 접근이 감소함을 알 수 있다.
또한, 통합 블룸 필터의 크기에 따른 메모리 요구량에 대한 성능 평가 실험 결과를 나타낸 도 16을 참조하면, 통합 블룸 필터의 크기는 제안하는 구조의 전체 메모리 요구량에 거의 영향을 미치지 않는다는 것을 알 수 있다.
도 17은 종래의 트리 구조 기반 알고리즘과 평균 메모리 접근 횟수를 비교한 그래프로서, 본 발명의 일 실시예에서 개시된 IP 주소 검색 구조의 버켓의 수를 N'=2b (여기서, b는 log2N 이하인 정수 중 가장 큰 정수)로 하고 통합 블룸 필터의 크기를 16N'로 하여, 종래의 트리 구조 기반 알고리즘들과 평균 메모리 접근 횟수를 비교한 그래프이다. 도 17에서 본 발명에서 제안하는 구조와 비교되는 종래의 다른 알고리즘은, 이진 트라이(B-Trie: Binary Trie), 레벨에 따른 이진 검색(BSL: Binary Search on Levels), 이진 검색 트리(BST: Binary Search Tree) 및 영역 분할 이진 검색(BSR: Binary Search on Range)을 포함한다. 여기서, 본 발명에서 제안하는 구조와 비교되는 종래의 레벨에 따른 이진 검색 구조(BSL)는, 본 발명에서 개시되는 통합 블룸 필터를 포함하지 않는다.
이 구조에서는 프리픽스가 존재하는 모든 레벨에 대하여 외부 메모리에 접근해야하므로, 제안하는 구조에서의 통합 블룸 필터로의 접근 횟수로 생각할 수 있다. 제안하는 구조는 적은 메모리를 요구하는 통합 블룸 필터 사용으로 인하여 기존의 레벨에 따른 이진 검색 구조에 비하여 검색 성능을 더욱 향상시킨 것으로 판단된다. 제안하는 구조가 다른 종래의 알고리즘에 비해 최대 29배 성능이 우수함을 볼 수 있어, 본 발명에서 제안하는 구조가 IPv6 주소 체계에 더욱 적합함을 알 수 있다.
도 18은 종래의 트리 구조 기반 알고리즘과 프리픽스 당 메모리 요구량을 비교한 그래프로서, 본 발명의 일 실시예에 따라 개시되는 IP 주소 검색 구조의 버켓의 수가 N'=2b (여기서, b는 log2N 이하인 정수 중 가장 큰 정수)이고 통합 블룸 필터의 크기가 16N'일 때, 메모리 요구량을 비교한 그래프이다. 프리픽스 당 메모리 요구량의 경우 다른 종래의 트리 구조 기반 알고리즘들에 비해 제안하는 구조가 최대 7배까지 많은 메모리를 요구하는 것을 알 수 있으나, 실제 라우터의 경우 입력 패킷을 포워딩하는 속도가 링크 속도에 미치지 못한다는 점을 감안할 때 평균 메모리 접근 횟수(속도)가 메모리 요구량보다 더 중요한 평가 항목이 될 것이다.
아래 표 5는, N'=2B (여기서, B는 log2N 이상인 정수 중 가장 작은 정수)일 때, 제안하는 구조와 다른 종래의 해싱 기반 알고리즘의 오버플로우 수를 비교한 표이다. 표 5을 참조하면, 제안하는 구조와 병렬 복수 해슁 구조는 모든 프리픽스가 주-테이블에 저장된다는 것을 알 수 있으며, 병렬 해슁 구조의 경우 1069개의 프리픽스 집합에서 798개의 프리픽스가 주-테이블에 저장되지 못하고 보조-테이블에 저장된다는 것을 알 수 있다.
Figure 112009027364195-pat00006
도 19는 도 19는 종래의 해싱 기반 알고리즘과 평균 메모리 접근 횟수를 비교한 그래프로서, 본 발명의 일 실시예에서 개시되는 IP 주소 검색 구조의 버켓의 수가 N'=2B (여기서, B는 log2N 이상인 정수 중 가장 작은 정수)이고 블룸 필터의 크기가 16N'일 때, 다른 종래의 해싱 기반 알고리즘의 검색 성능을 평균 메모리 접근 횟수로 비교한 그래프이다. 종래의 병렬 해싱(Parallel hashing)과 병렬 복수 해싱(Parallel multiple hashing)의 경우, 해싱 테이블의 버켓의 수를 N'=2B (여기서, B=log2N)로 하여 비교하였다. 또한 동일한 조건에서 성능을 비교하기 위하여, 다른 종래의 해싱 기반 알고리즘의 경우, 병렬처리 방식이 아닌 길이에 따른 이진 검색으로 검색 성능을 측정하였다. 즉, 도 6에서 생성된 프리픽스 노드, 마커 노드, BMP 노드 정보를 각 구조에 저장하여 각 레벨을 이용하여 이진 검색 방식으로 접근 레벨을 결정하였다. 그 결과 제안하는 구조가 타 구조에 비하여 1.6-5.7배 빠른 검색 성능을 보였다.
도 20은 종래의 해싱 기반 알고리즘과 프리픽스 당 메모리 요구량을 비교한 그래프이다.
도 20을 참조하면, 본 발명의 일 실시예에서 개시되는 IP 주소 검색 구조와 다른 종래의 해싱 기반 알고리즘에서의 프리픽스 당 메모리 요구량을 비교하기 위해, 본 발명의 일 실시예에서 개시되는 IP 주소 검색 구조의 버켓의 수는 N'=2B (여기서, B는 log2N 이상인 정수 중 가장 작은 정수)이고 통합 블룸 필터의 크기는 16N'로 하고, 종래의 해싱 기반 알고리즘의 경우 버켓의 수는 N'=2B (여기서, B는 log2N 이상인 정수 중 가장 작은 정수)로 하여 비교하였다. 도 20을 참조하면, 그 비교 결과, 프리픽스가 1069개일 때, 본 발명에서 제안하는 구조는 종래의 병렬 해싱보다는 많은 메모리 요구량을, 종래의 병렬 복수 해싱보다는 적은 메모리를 요구한다는 것을 알 수 있으며, 병렬 해싱의 경우 타 구조에 비하여 많은 프리픽스가 보조 테이블에 저장되어 이진 검색을 통하여 검색되므로, 검색 성능이 저하된다는 점을 감안할 때, 본 발명에서 제안하는 구조가 IPv6 주소 검색을 위한 구조로서 더 우수하다.
이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성 요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성 요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 저장매체로서는 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등이 포함될 수 있다.
또한, 이상에서 기재된 "포함하다", "구성하다" 또는 "가지다" 등의 용어는, 특별히 반대되는 기재가 없는 한, 해당 구성 요소가 내재될 수 있음을 의미하는 것이므로, 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것으로 해석되어야 한다. 기술적이거나 과학적인 용어를 포함한 모든 용어들은, 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 사전에 정의된 용어와 같이 일반적으로 사용되는 용어들은 관련 기술의 문맥 상의 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
도 1는 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치에 대한 블록구성도,
도 2은 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치에서 해싱부에 대한 블록구성도,
도 3은 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치에서 접근레벨 제어부를 설명하기 위한 도면,
도 4는 본 발명의 일 실시예에 따른 IP 주소 검색을 위한 장치에서 오버플로우 테이블 검색부를 설명하기 위한 도면,
도 5는 프리픽스 집합을 예시한 도면,
도 6은 레벨에 따른 이진 검색 구조를 예시한 도면,
도 7은 코드 생성기의 일 예로서 CRC 생성기를 예시한 도면,
도 8은 통합 블룸 필터를 예시한 도면,
도 9는 레벨에 따른 이진 검색을 위한 노드들과 접근 레벨을 예시적으로 표시한 도면,
도 10은 레벨에 따른 이진 검색 과정에 대한 슈도코드(Pseudo-Code)를 나타낸 도면,
도 11은 레벨에 따른 이진 검색 과정에 대한 예시적인 사례를 설명하기 위한 도면,
도 12는 본 발명의 일 실시예에 따른 IP 주소 검색 방법에 대한 흐름도,
도 13은 통합 복수 해싱 테이블의 엔트리 구조와 통합 블룸 필터와 통합 복수 해싱 테이블을 위한 메모리 사용량을 계산하는 방법을 위한 도면,
도 14는 통합 블룸 필터의 크기에 따른 통합 복수 해싱 테이블 접근율에 대한 성능 평가 실험 결과를 나타낸 도면,
도 15는 통합 블룸 필터의 크기에 따른 통합 복수 해싱 테이블의 평균 접근 횟수에 대한 성능 평가 실험 결과를 나타낸 도면,
도 16은 통합 블룸 필터의 크기에 따른 메모리 요구량에 대한 성능 평가 실험 결과를 나타낸 도면,
도 17은 종래의 트리 구조 기반 알고리즘과 평균 메모리 접근 횟수를 비교한 그래프,
도 18은 종래의 트리 구조 기반 알고리즘과 프리픽스 당 메모리 요구량을 비교한 그래프,
도 19는 종래의 해싱 기반 알고리즘과 평균 메모리 접근 횟수를 비교한 그래프,
도 20은 종래의 해싱 기반 알고리즘과 프리픽스 당 메모리 요구량을 비교한 그래프이다.
< 도면의 주요 부분에 대한 부호의 설명 >
100: IP 주소 검색 장치
110: 비트 추출부
120: 해싱부
130: 통합 블룸 필터 검색부
140: 통합 복수 해싱 테이블 검색부
150: BMP 갱신부
160: 결과값 출력부
170: 접근레벨 제어부
210: 코드 생성부
220: 해싱 색인 생성부
410: 오버플로우 테이블 검색부
700: CRC 생성기
800: 통합 블룸 필터

Claims (18)

  1. IP 주소를 입력받아 저장해두고, 제어신호를 수신할 때마다 상기 제어신호에 의해 지시되는 프리픽스의 길이(이하, '접근길이'라 함)에 따라 비트를 상기 저장된 IP 주소로부터 추출하는 비트 추출부;
    상기 추출된 비트를 해싱하여 복수의 해싱 색인을 생성하는 해싱부;
    통합 블룸 필터에서 상기 복수의 해싱 색인 각각에 해당하는 비트-벡터값을 검색하는 통합 블룸 필터 검색부;
    상기 통합 블룸 필터 검색부에서의 검색 결과에 따라, 통합 복수 해싱 테이블에서 상기 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색하는 통합 복수 해싱 테이블 검색부;
    상기 검색된 노드 정보 중에서 상기 추출된 비트와 일치하는 노드 정보가 존재하면, 상기 존재하는 노드 정보에 근거하여, 최적 일치 프리픽스를 갱신하는 최적 일치 프리픽스 갱신부;
    프리픽스의 길이에 따라 결정되는 복수의 레벨 중 상기 접근길이에 해당하는 레벨(이하, '접근레벨'이라 함)이 마지막 레벨이면, 상기 갱신된 최적 일치 프리픽스를 결과값으로 출력하는 결과값 출력부; 및
    상기 접근레벨이 마지막 레벨이 아니면, 상기 통합 블룸 필터 검색부 또는 상기 통합 복수 해싱 테이블 검색부에서의 검색 결과와 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중 하나의 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 상기 제어신호를 상기 비트 추출부로 출력하는 접근레벨 제어부
    를 포함하는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  2. 제 1항에 있어서,
    상기 비트 추출부는 버전 4 또는 버전 6 체계의 상기 IP 주소를 입력받는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  3. 제 1항에 있어서,
    상기 해싱부는,
    상기 추출된 비트로부터 일정한 길이의 코드를 생성하는 코드 생성기; 및 상기 생성된 코드로부터 상기 복수의 해싱 색인을 생성하는 해싱 색인 생성부를 포함하는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  4. 제 1항에 있어서,
    상기 통합 블룸 필터 검색부는,
    상기 통합 블룸 필터에 해싱 색인별로 저장된 비트-벡터값 중에서, 상기 복수의 해싱 색인 각각에 해당하는 비트-벡터값을 검색하되,
    상기 검색된 비트-벡터값은, 상기 추출된 비트가 상기 통합 복수 해싱 테이블의 엔트리에 포함되는지를 판단하기 위한 정보인 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  5. 제 1항에 있어서,
    상기 통합 복수 해싱 테이블 검색부는,
    상기 통합 블룸 필터 검색부에 의해 상기 검색된 비트-벡터값을 통해, 상기 추출된 비트가 상기 통합 복수 해싱 테이블의 엔트리에 포함된 것으로 판단된 경우에만, 상기 통합 복수 해싱 테이블에서 상기 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색하는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  6. 제 1항에 있어서,
    상기 통합 복수 해싱 테이블의 개수는 상기 복수의 해싱 색인의 개수와 동일한 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  7. 제 6항에 있어서,
    상기 통합 복수 해싱 테이블 검색부는,
    상기 복수의 해싱 색인을 이용하여, 상기 통합 복수 해싱 테이블 각각에 병렬적으로 접근하여 노드 정보를 검색하는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  8. 제 1항에 있어서,
    상기 최적 일치 프리픽스 갱신부는,
    상기 존재하는 노드 정보가 프리픽스 노드의 노드 정보인 경우, 상기 존재하는 노드 정보를 상기 최적 일치 프리픽스로서 저장함으로써, 상기 최적 일치 프리픽스를 갱신하는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  9. 제 1항에 있어서,
    상기 접근레벨 제어부는,
    상기 통합 블룸 필터 검색부에 의해 상기 검색된 비트-벡터값을 통해, 상기 추출된 비트가 상기 통합 복수 해싱 테이블의 엔트리에 미포함된 것으로 판단되면, 상기 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중에서 프리픽스의 길이가 짧은 방향으로의 다음 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 제 1 제어신호를 상기 제어신호로서 출력하거나,
    상기 통합 복수 해싱 테이블 검색부에 의해 상기 검색된 노드 정보 중에서 상기 추출된 비트와 일치하는 노드 정보가 미 존재하면, 상기 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중에서 프리픽스의 길이가 짧은 방향으로의 다음 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 제 2 제어신호를 상기 제어신호로서 출력하거나,
    상기 통합 복수 해싱 테이블 검색부에 의해 상기 검색된 노드 정보 중에서 상기 추출된 비트와 일치하는 노드 정보가 존재하면, 상기 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중에서 프리픽스의 길이가 긴 방향으로의 다음 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 제 3 제어신호를 상기 제어신호로서 출력하는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  10. 제 1항에 있어서,
    상기 장치는,
    상기 통합 복수 해싱 테이블 검색부에 의해 상기 검색된 노드 정보 중에서 상기 추출된 비트와 일치하는 노드 정보가 미 존재하거나, 상기 통합 복수 해싱 테이블 검색부에서 상기 복수의 해싱 색인 각각에 해당하는 노드 정보가 상기 통합 복수 해싱 테이블로부터 미검색된 경우, 오버플로우 테이블에서 상기 추출된 비트와 일치하는 노드 정보를 검색하는 오버플로우 테이블 검색부를 추가로 포함하는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  11. 제 10항에 있어서,
    상기 최적 일치 프리픽스 갱신부는,
    상기 오버플로우 테이블 검색부에서 상기 검색된 노드 정보에 근거하여, 최적 일치 프리픽스를 갱신하는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  12. 제 10항에 있어서,
    상기 접근레벨 제어부는,
    상기 오버플로우 테이블에서 상기 추출된 비트와 일치하는 노드 정보가 검색되면, 상기 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중에서 프리픽스의 길이가 긴 방향으로의 다음 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 제 4 제어신호를 상기 제어신호로서 출력하거나,
    상기 오버플로우 테이블에서 상기 추출된 비트와 일치하는 노드 정보가 미검색되면, 상기 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중에서 프리픽스의 길이가 짧은 방향으로의 다음 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 제 5 제어신호를 상기 제어신호로서 출력하는 것을 특징으로 하는 IP 주소 검색을 위한 장치.
  13. IP 주소를 입력받아 저장해두고, 제어신호를 수신할 때마다 상기 제어신호에 의해 지시되는 프리픽스의 길이(이하, '접근길이'라 함)에 따라 비트를 상기 저장된 IP 주소로부터 추출하는 비트 추출 단계;
    상기 추출된 비트를 해싱하여 복수의 해싱 색인을 생성하는 해싱 단계;
    통합 블룸 필터에서 상기 복수의 해싱 색인 각각에 해당하는 비트-벡터값을 검색하는 통합 블룸 필터 검색 단계;
    상기 통합 블룸 필터 검색 단계에서의 검색 결과에 따라, 통합 복수 해싱 테이블에서 상기 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색하는 통합 복수 해싱 테이블 검색 단계;
    상기 검색된 노드 정보 중에서 상기 추출된 비트와 일치하는 노드 정보가 존재하면, 상기 존재하는 노드 정보에 근거하여, 최적 일치 프리픽스를 갱신하는 최적 일치 프리픽스 갱신 단계;
    프리픽스의 길이에 따라 결정되는 복수의 레벨 중 상기 접근길이에 해당하는 레벨(이하, '접근레벨'이라 함)이 마지막 레벨이면, 상기 갱신된 최적 일치 프리픽스를 결과값으로 출력하는 결과값 출력 단계; 및
    상기 접근레벨이 마지막 레벨이 아니면, 상기 통합 블룸 필터 검색 단계 또는 상기 통합 복수 해싱 테이블 검색 단계에서의 검색 결과와 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중 하나의 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 상기 제어신호를 출력하는 접근레벨 제어 단계
    를 포함하는 것을 특징으로 하는 IP 주소 검색 방법.
  14. 제 13항에 있어서,
    상기 해싱 단계는,
    상기 추출된 비트로부터 일정한 길이의 코드를 생성하는 코드 생성 단계; 및 상기 생성된 코드로부터 상기 복수의 해싱 색인을 생성하는 해싱 색인 생성 단계를 포함하는 것을 특징으로 하는 IP 주소 검색 방법.
  15. 제 13항에 있어서,
    상기 통합 복수 해싱 테이블 검색 단계는,
    상기 통합 블룸 필터 검색 단계에서 상기 검색된 비트-벡터값을 통해, 상기 추출된 비트가 상기 통합 복수 해싱 테이블의 엔트리에 포함된 것으로 판단된 경우에만, 상기 통합 복수 해싱 테이블에서 상기 복수의 해싱 색인 각각에 해당하는 노드 정보를 검색하는 것을 특징으로 하는 IP 주소 검색을 위한 방법.
  16. 제 13항에 있어서,
    상기 접근레벨 제어 단계는,
    상기 통합 블룸 필터 검색 단계에서 상기 검색된 비트-벡터값을 통해, 상기 추출된 비트가 상기 통합 복수 해싱 테이블의 엔트리에 미포함된 것으로 판단되면, 상기 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중에서 프리픽스의 길이가 짧은 방향으로의 다음 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 제 1 제어신호를 상기 제어신호로서 출력하거나,
    상기 통합 복수 해싱 테이블 검색 단계에서 상기 검색된 노드 정보 중에서 상기 추출된 비트와 일치하는 노드 정보가 미 존재하면, 상기 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중에서 프리픽스의 길이가 짧은 방향으로의 다음 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 제 2 제어신호를 상기 제어신호로서 출력하거나,
    상기 통합 복수 해싱 테이블 검색 단계에서 상기 검색된 노드 정보 중에서 상기 추출된 비트와 일치하는 노드 정보가 존재하면, 상기 미리 정의된 레벨 순서에 근거하여, 상기 복수의 레벨 중에서 프리픽스의 길이가 긴 방향으로의 다음 레벨을 접근레벨로서 결정하고, 상기 결정된 접근레벨에 해당하는 접근길이를 지시하는 제 3 제어신호를 상기 제어신호로서 출력하는 것을 특징으로 하는 IP 주소 검색 방법.
  17. 제 16항에 있어서,
    상기 비트 추출부는,
    상기 제 1 제어신호, 상기 제 2 제어신호 및 상기 제 3 제어신호 중 하나를 상기 제어신호로서 수신하여, 상기 수신된 제어신호에 의해 지시되는 접근길이에 따라 비트를 상기 저장된 IP 주소로부터 추출하는 것을 특징으로 하는 IP 주소 검색 방법.
  18. 삭제
KR1020090039643A 2009-05-07 2009-05-07 Ip주소 검색을 위한 장치 및 방법 KR101028470B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090039643A KR101028470B1 (ko) 2009-05-07 2009-05-07 Ip주소 검색을 위한 장치 및 방법
US12/577,937 US8385343B2 (en) 2009-05-07 2009-10-13 Method and apparatus for searching IP address

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090039643A KR101028470B1 (ko) 2009-05-07 2009-05-07 Ip주소 검색을 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20100120812A KR20100120812A (ko) 2010-11-17
KR101028470B1 true KR101028470B1 (ko) 2011-04-14

Family

ID=43062293

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090039643A KR101028470B1 (ko) 2009-05-07 2009-05-07 Ip주소 검색을 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US8385343B2 (ko)
KR (1) KR101028470B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015008913A1 (ko) * 2013-07-17 2015-01-22 인하대학교 산학협력단 멀티셋의 개별 원소의 개수를 카운팅하는 방법 및 시스템
KR101543841B1 (ko) 2013-07-17 2015-08-11 인하대학교 산학협력단 멀티셋의 개별 원소의 개수를 카운팅하는 방법 및 시스템

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7990973B2 (en) * 2008-08-13 2011-08-02 Alcatel-Lucent Usa Inc. Hash functions for applications such as network address lookup
US8018940B2 (en) * 2008-08-13 2011-09-13 Alcatel Lucent Network address lookup based on bloom filters
KR101639672B1 (ko) * 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US8904176B2 (en) * 2010-04-28 2014-12-02 Hewlett-Packard Development Company Protecting the information encoded in a bloom filter using encoded bits of data
US8938469B1 (en) 2011-05-11 2015-01-20 Juniper Networks, Inc. Dynamically adjusting hash table capacity
US9178846B1 (en) 2011-11-04 2015-11-03 Juniper Networks, Inc. Deterministic network address and port translation
US8886827B2 (en) * 2012-02-13 2014-11-11 Juniper Networks, Inc. Flow cache mechanism for performing packet flow lookups in a network device
US9253019B1 (en) 2012-03-09 2016-02-02 Juniper Networks, Inc. Fault tolerance for authentication, authorization, and accounting (AAA) functionality
US8799507B2 (en) 2012-03-13 2014-08-05 Juniper Networks, Inc. Longest prefix match searches with variable numbers of prefixes
US8954609B1 (en) 2012-04-25 2015-02-10 Juniper Networks, Inc. Time adjustment using time-to-live values
US9300569B2 (en) * 2012-07-31 2016-03-29 Cisco Technology, Inc. Compressing data packet routing information using bloom filters
WO2014132136A2 (en) * 2013-02-27 2014-09-04 Marvell World Trade Ltd. Efficient longest prefix matching techniques for network devices
IL233776B (en) * 2014-07-24 2019-02-28 Verint Systems Ltd A system and method for adjusting domains
US9940356B2 (en) * 2014-07-31 2018-04-10 International Business Machines Corporation Efficient join-filters for parallel processing
KR101689527B1 (ko) * 2014-12-09 2016-12-26 홍익대학교 산학협력단 시간 지역성을 활용한 해시 기반의 주소 검색 장치 및 방법
US20180007075A1 (en) * 2015-02-12 2018-01-04 Hewlett Packard Enterprise Development Lp Monitoring dynamic device configuration protocol offers to determine anomaly
US10129207B1 (en) 2015-07-20 2018-11-13 Juniper Networks, Inc. Network address translation within network device having multiple service units
US10887232B2 (en) 2015-12-16 2021-01-05 Hewlett Packard Enterprise Development Lp Dynamic allocation of hash table resources
US10042875B2 (en) * 2016-09-26 2018-08-07 International Business Machines Corporation Bloom filter index for device discovery
US10469446B1 (en) 2016-09-27 2019-11-05 Juniper Networks, Inc. Subscriber-aware network address translation
JP6805816B2 (ja) * 2016-12-27 2020-12-23 富士通株式会社 情報処理装置、情報処理システム、情報処理方法及びプログラム
CN110674387B (zh) * 2018-06-15 2023-09-22 伊姆西Ip控股有限责任公司 用于数据搜索的方法、装置和计算机存储介质
CN113315705B (zh) * 2021-04-26 2022-07-15 中国科学院计算机网络信息中心 基于单次哈希布隆过滤器的Flexible IP寻址方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086520A1 (en) 2003-08-14 2005-04-21 Sarang Dharmapurikar Method and apparatus for detecting predefined signatures in packet payload using bloom filters
US20050195832A1 (en) 2004-02-09 2005-09-08 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters
KR20100010987A (ko) * 2008-07-24 2010-02-03 이화여자대학교 산학협력단 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8018940B2 (en) * 2008-08-13 2011-09-13 Alcatel Lucent Network address lookup based on bloom filters
US8266506B2 (en) * 2009-04-18 2012-09-11 Alcatel Lucent Method and apparatus for multiset membership testing using combinatorial bloom filters
US8780926B2 (en) * 2009-12-01 2014-07-15 Polytechnic Institute Of New York University Updating prefix-compressed tries for IP route lookup

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086520A1 (en) 2003-08-14 2005-04-21 Sarang Dharmapurikar Method and apparatus for detecting predefined signatures in packet payload using bloom filters
US20050195832A1 (en) 2004-02-09 2005-09-08 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters
KR20100010987A (ko) * 2008-07-24 2010-02-03 이화여자대학교 산학협력단 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015008913A1 (ko) * 2013-07-17 2015-01-22 인하대학교 산학협력단 멀티셋의 개별 원소의 개수를 카운팅하는 방법 및 시스템
KR101543841B1 (ko) 2013-07-17 2015-08-11 인하대학교 산학협력단 멀티셋의 개별 원소의 개수를 카운팅하는 방법 및 시스템

Also Published As

Publication number Publication date
US20100284405A1 (en) 2010-11-11
US8385343B2 (en) 2013-02-26
KR20100120812A (ko) 2010-11-17

Similar Documents

Publication Publication Date Title
KR101028470B1 (ko) Ip주소 검색을 위한 장치 및 방법
KR100962653B1 (ko) 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치
US6697363B1 (en) Method and apparatus for longest matching prefix determination in a communication network
JP4452183B2 (ja) プログラマブル状態マシンのデータ構造を作成して入力単語連鎖を構文解析する方法、プログラマブル状態マシンのデータ構造を使用して入力単語連鎖に対応する結果として得られた値を検索する方法、ワイヤスピードのディープ・パケット処理を行う方法、ディープ・パケット処理のための装置、チップ埋め込み装置、およびプログラミング・コード命令を含むコンピュータ・プログラム(ディープ・パケット処理のための方法および装置)
US6985483B2 (en) Methods and systems for fast packet forwarding
US7356033B2 (en) Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures
CN107431660B (zh) 检索装置、检索方法及记录介质
Le et al. Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning
JP4995125B2 (ja) 固定長データの検索方法
Pao et al. Efficient hardware architecture for fast IP address lookup
CN105141525B (zh) IPv6路由查找方法及装置
JP2002033769A (ja) 圧縮検索テーブルを用いるプレフィックス検索方法およびデータ構造
KR101434065B1 (ko) 최장 프리픽스 매치의 확장성을 개선하기 위한 방법 및 장치
WO2009132556A1 (zh) 一种数据查找的方法及装置
CN113824814B (zh) 一种转发表的地址匹配方法、装置、网络设备及介质
Lim et al. Binary searches on multiple small trees for IP address lookup
KR20050066903A (ko) 고속 라우팅 시스템에서의 패킷 포워딩 처리장치 및 그를이용한 라우팅 룩업 방법
Tan et al. Efficient name lookup scheme based on hash and character trie in named data networking
KR101587756B1 (ko) 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법
CN107204926B (zh) 预处理cache的路由快速查找方法
JP2003500901A (ja) 最長一致プレフィックス・ルックアップ
US9444731B2 (en) Methods and systems for data packet routing
WO2017000892A1 (zh) Ip路由查找
Dai et al. A truly scalable IP lookup algorithm for next generation internet
McLaughlin et al. High-speed ip address lookups using hardware based tree structures

Legal Events

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

Payment date: 20171011

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180614

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee