KR20010077983A - 데이터 패킷 분류 방법 및 수단 - Google Patents

데이터 패킷 분류 방법 및 수단 Download PDF

Info

Publication number
KR20010077983A
KR20010077983A KR1020010002057A KR20010002057A KR20010077983A KR 20010077983 A KR20010077983 A KR 20010077983A KR 1020010002057 A KR1020010002057 A KR 1020010002057A KR 20010002057 A KR20010002057 A KR 20010002057A KR 20010077983 A KR20010077983 A KR 20010077983A
Authority
KR
South Korea
Prior art keywords
rule
range
search
prefix
tokens
Prior art date
Application number
KR1020010002057A
Other languages
English (en)
Other versions
KR100441317B1 (ko
Inventor
엔그버슨톤
반룬터렌잔
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR20010077983A publication Critical patent/KR20010077983A/ko
Application granted granted Critical
Publication of KR100441317B1 publication Critical patent/KR100441317B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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/74591Address table lookup; Address filtering using content-addressable memories [CAM]

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)
  • Maintenance And Management Of Digital Transmission (AREA)

Abstract

데이터 패킷을 각 패킷에 존재하는 발신지 어드레스 및 목적지 어드레스 등의 2개의 (또는 그 이상의) 기준에 의거하여 몇개의 룰 중 어느 한 룰에 따라 처리되는 시스템에서, 최장 매칭 프리픽스 검색 동작에 의해 적용가능한 룰을 결정할 수 있는 분류 방법이 개시되어 있다. 불균일한 길이를 갖는 범위 토큰이 기준값의 기본 범위에 할당됨으로써, 패킷으로부터의 입력값의 각 조합이 특정의 가변 길이의 범위 토큰 조합에 의해 표현될 수 있다. 기억된 룰 식별자를 포함하는 검색 트리는, 최장 매칭 프리픽스 탐색 동작에 대해 입력으로 사용되는 특정 범위 토큰 조합 각각이 요구되는 식별자를 제공하도록 설계되어 있다. 동일한 프리픽스를 갖는 서로 다른 범위 토큰 조합들은 기억된 하나의 룰 식별자로의 동일한 경로를 사용할 수 있으므로, 이 방법을 사용하면 분류 절차에 대한 기억 공간 및 시간 요건이 완화되고 룰이 변할 때에도 간단히 갱신할 수 있게 된다.

Description

데이터 패킷 분류 방법 및 수단{METHOD AND MEANS FOR CLASSIFYING DATA PACKETS}
본 발명은 통신 시스템에서 패킷 등의 항목을 처리하는 분야에 관한 것으로서, 항목의 내용을 조사하여 여러 가지 기준(criteria)에 대해 각 패킷에 포함된 각각의 기준값(criteria value)을 검출하고, 이 기준값을 사용하여 패킷을 분류하며 이 패킷의 추가 처리 또는 포워드를 위해 적용가능한 룰(applicable rule)을 결정한다.
통신 시스템, 예를 들어 인터넷에서 패킷을 처리함에 있어서, 통상은 목적지 어드레스를 계산(evaluate)하여 패킷 경로상의 중간 노드 각각에서 어느 출력 또는 링크상으로 패킷을 포워드해야 하는지를 결정하게 된다. 각종의 통신 시스템에서, 각 패킷의 헤더에 있는 목적지 어드레스, 발신지 어드레스 또는 기타 데이터에 따라 다양한 형태의 서비스가 제공된다. 서비스 형태의 차이라는 것은, 패킷이 처리 또는 포워드되는 우선 순위나, 그 전송에 대해 지불해야할 요금, 또는 어떤 발신자에 대해서는 패킷 처리를 아예 거부하는 것, 등등이 있다. 오늘날의 시스템에서는 엄청난 양의 패킷(일반적으로는, 데이터 항목)을 처리해야 되기 때문에, 패킷과 함께 수신된 기준을 알아내고 그에 따라 어떤 형태의 처리를 선택해야 하는지의 결정하는 일은 아주 짧은 시간내에 고속으로 이루어져야만 한다.
통신 시스템에서 패킷을 분류하는 몇가지 방법이 이하의 간행물에 개시되어 있다. T.V. Lakshman과 D. Stiliadis의 "효율적인 다차원 범위 매칭을 사용한 고속의 정책-기반 포워딩"(High-Speed Policy-based Forwarding Using Efficient Multi-dimensional Range Matching, Proc. ACM SIGCOMM'98, Comp. Commun. Rev. Vol. 28, No. 4, 1998년 10월, 203-214 페이지)이라는 제목의 논문에는, 주어진 룰의 집합에서 수신된 패킷의 처리에 적용가능한 룰을 찾아내는 방법에 대해 기술하고 있다. n개의 차원(예를 들면, 목적지 어드레스, 발신지 어드레스 등등을 나타냄) 각각에 있어서, 개개의 차원은 중첩되지 않는 구간으로 분할되며, 각 구간은 이 개개의 차원으로부터의 값들의 범위로 이루어져 있다. 이들 구간은 그 구간내에서는 적용가능한 룰에 어떤 변동도 없도록 선택된다. 이러한 각 구간 또는 범위에 대해, 시스템에 존재하는 각 룰에 대해 1 비트씩 포함하는 비트맵이 생성된다: 어떤 룰이 그 범위에 적용될 때에, 그 비트는 1이 되고, 그렇지 않은 경우에는 그 비트는 0이 된다. 비트맵내의 비트들은 그 비트에 대응하는 룰의 우선 순위에 따라 순위가 매겨져 있다. 이렇게 함으로써, 다수의 룰이 적용가능한 경우에는 최고 우선 순위를 갖는 룰을 선택할 수 있게 된다. 패킷을 분류하려고 할 경우, 먼저 각 차원에 대해 패킷이 어떤 구간 또는 범위에 속하는지를 검출한 다음에, 개개의 구간의 비트맵에 대해 비트별 AND 조합(combination)을 하여 교집합(intersection)을 구한다. 그 결과가 어떤 룰이 적용가능한 룰인지를 나타내주며, 우선 순위법에 따라 하나의 룰이 최종적으로 선택된다. 이렇게 함으로써, 적은 수의 룰에 대해 고속으로 분류를 행할 수 있다.
그렇지만, 고려해야할 룰이 수백개 또는 수천개가 있는 경우에는, 비트맵이 거대하게 되고, 많은 기억 공간이 필요하게 된다. 이들 거대한 비트맵에 억세스하고 이들 비트맵 중 다수개에 대해 교집합을 구하는 데는 많은 시간이 걸리며, 따라서 소정의 분류 속도로는 지원할 수 있는 룰의 개수가 한정된다. 게다가, 해당하는 룰의 우선 순위에 근거하여 비트맵내의 비트들의 순위를 매기는 것만으로는 적절한 시간내에 데이터 구조에 대해 증분적 갱신(incremental update)을 행할 수 없게 된다: 새로운 룰을 삽입하려면 모든 차원에서 모든 구간들에 대응하는 비트맵 모두에 대해 수정을 가해야만 한다.
P. Gupta와 N. McKeown의 "다수의 필드에 의한 패킷 분류"("Packet Classification on Multiple Fields" ACM SIGCOMM'99, Comp. Commun. Rev. Vol.29, No. 4, 1999년 10월, 147-160 페이지)라는 제목의 논문에는, 이 분류를 순차적인 몇 단계를 거쳐 행하는 방법에 대해 기술하고 있다. 첫 번째 단계에서는, 패킷 헤더를 다수의 청크(chunk)로 분리하고, 이 청크를 사용하여 다수의 메모리를 동시에 인덱싱하게 된다. 후속 단계들에서는, 이전 단계들의 탐색 결과를 조합하여 새로운 청크를 구성하고, 여러 메모리를 동시에 억세스하게 된다. 선처리 단계(preprocessing step)에서는, 각 청크에 대해 소위 청크 등가 집합(chunk equivalence set)을 도출하게 되는데, 분류 룰에 관여한 각종 범위를 청크에 투영하거나(첫번째 단계의 청크의 경우) 또는 이전 단계의 청크 등가 집합의 가능한 교집합(후속 단계의 청크의 경우)으로부터 도출한다. 각 원소에는 소위 등가 클래스 ID가 할당되며, 이 ID는 집합 원소(set element)에 0부터 시작하여 이진 숫자를 매김으로써 얻어진다. 청크 값을 사용하여 메모리를 인덱싱함으로써 얻어진 각 탐색 결과는 이 값이 관련된 청크 등가 집합의 원소에 대응하는 등가 클래스 ID로 된다. 등가 ID의 크기는 메모리를 인덱싱하는데 사용되는 청크의 크기보다 더 작은 것이 보통이기 때문에, 이러한 것을 감축(reduction)이라 해도 될 것이다. 마지막 단계에서의 메모리 탐색이 최고 우선 순위를 갖는 적용가능한 룰의 ID를 제공한다. 이와 같이 하여 달성되는 전체 감축은 모든 관련 패킷 헤더 부분의 크기로부터 룰 식별 인덱스(rule identification index)의 크기로 된다.
이 방법의 단점은 대용량 기억 공간이 필요하다는 것과 기억 공간의 사용이 비효율적이라는 것이다. 룰의 특성에 따라, 많은 메모리가 여러번 동일한 값을 가지고 있는 경우가 있다. 이것에 직접 관련하여, 룰을 삽입 또는 제거함으로써 데이터 구조를 갱신하는 것은 많은 메모리 장소에 영향을 주게 되어 고속의 증분적 갱신을 할 수 없게 된다. 룰의 개수가 많은 경우에는, 선처리에 상당한 시간에 걸리게 된다.
인용 문헌에서 언급하고 있는 공지의 방법 모두는, 몇몇 상황에서는 고속 분류가 가능함에도 불구하고, 머지 않은 장래에 인터넷에서 예상되는 것과 같이, 룰의 개수가 아주 많을 경우에는, 필요한 처리 속도를 얻을 수 없다.
본 발명의 목적은 각 패킷에 포함되어 있는 복수의 기준값들에 응답하여 처리해야 할 패킷 또는 기타 데이터 항목을 적용가능한 룰에 따라 분류하는 방법 및 수단을 안출해내는 데 있다. 따라서, 본 발명은 기준값의 구간들에 대한 주어진 룰의 불규칙적인 분포 및 상호 관계를 이용하여 이 룰 분포 및 상호 관계를 분류 및 검색 메카니즘의 구조로 최적 매핑을 할 수 있어야만 한다. 그 결과, 효율적인 탐색 절차를 사용할 수 있게 된다. 또한, 본 발명의 목적은 입력값 범위에 걸쳐 룰의 분포의 변동, 예를 들면 새로운 룰의 부가에 대해 검색 및 분류 구조를 고속이면서 간단하게 적응시킬 수 있는 분류 방법 및 수단을 안출해내는 데 있다. 본 발명의 또다른 목적은 패킷과 함께 수신된 기준 입력값에 응답하여 요구되는 기억 용량의 크기를 감축시키고 각 패킷을 분류하고 적용가능한 룰을 결정하는데 걸리는 시간을 최소화하는데 있다.
이러한 목적을 달성하기 위한 본 발명은 청구 범위의 청구항들에 기재되어 있다. 특히, 그의 잇점들을 말한다면, 이하와 같다: 본 발명은 각 패킷(또는 분류해야할 데이터 항목)에 대해 적용가능한 클래스, 예를 들면 필요한 처리 룰을 그 패킷의 전송 속도에 적합한 시간내에 결정할 수 있기 때문에, 전혀 지연이 생기지 않는다. 게다가, 공지의 최장 매칭 프리픽스(longest-matching-prefix) 검색법을 적어도 최종 선택 단계에서는 사용할 수 있다. 그 밖에도, 새로운 룰이 부가되거나 또는 범위와 룰간의 할당에 변동이 있을 때에는, 기억된 데이터의 많은 부분을 변경하지 않고 테이블에 몇개의 엔트리만을 부가하는 것으로 매핑 데이터베이스(룩업 테이블)의 갱신을 용이하게 실행할 수 있다; 전체적인 갱신은 최적화를 위해 일정 간격으로 행할 수 있기 때문에, 이전의 즉각적인 적응(immediate adaptation)을 지연시키는 일이 없다.
도 1은 본 발명의 특징적인 패킷 분류 절차에 대해 개괄적으로 도시한 개략도.
도 2는 패킷 분류용 룰과 이 룰이 유효하게 되는 기준값(입력값)의 범위간의 관계를 도시한 다이어그램.
도 3은 본 발명의 제1 실시예에 있어서 범위 토큰(range token)을 생성하기 위한 원시 범위(primitive range)와 기본 범위(basic range)에 할당된 범위 토큰을 함께 도시한 룰/범위 다이어그램.
도 4는 도 3의 원시 범위를 상세히 도시한 도면.
도 5는 제1 실시예에서 주어진 입력에 대해 적용가능한 룰을 결정하기 위한 최장 매칭 프리픽스 탐색 동작(longest-matching-prefix-lookup operation)의 결과 얻어진 검색 트리(search tree)를 나타낸 도면.
도 6은 본 발명의 제2 실시예에서 범위 토큰을 생성하기 위한 원시 범위와 기본 범위에 할당된 범위 토큰을 함께 도시한 룰/범위 다이어그램.
도 7A 및 도 7B는 도 6의 원시 범위를 상세히 도시한 도면.
도 8은 제2 실시예에서 주어진 입력에 대해 적용가능한 룰을 결정하기 위한최장 매칭 프리픽스 탐색 동작의 결과 얻어진 검색 트리를 나타낸 도면.
도 9는 패킷 분류를 위해 검색 데이터베이스를 갱신하는 것에 대해 설명하기 위한 것으로서, 도 2와 유사하지만 부가의 룰의 삽입으로 변형된 룰/범위 다이어그램.
도 10은 갱신 동작을 설명하기 위한 것으로서, 범위 토큰을 생성하기 위한 원시 범위가 함께 도시된 룰 분포가 도 9의 것과는 다른 룰/범위 다이어그램.
도 11은 도 10의 원시 범위를 상세히 도시한 도면.
도 12는 제1 실시예의 도 5의 검색 트리에 기초하여 도 9 및 도 10의 변형된 룰 분포에 대해 얻은 갱신된 검색 트리(위쪽 부분만)를 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
1a, 1b, 1c : 원시 범위
L1, L2, L3 : 계층
이하에서는, 본 발명의 실시예들에 대해 본 발명의 특징적인 절차를 예시한 첨부된 도면을 참조하여 설명하기로 한다.
본 발명에 대하여 도 1을 참조하면서 개괄적으로 간략히 설명하기로 한다.
분류 과정의 첫번째 단계로서, 관련 기준의 입력값을 수신된 입력 항목에서 취출한다. 이 개괄적인 설명에서는, 분류하려고 하는 항목이 통신 패킷이고 기준은 목적지 어드레스 및 발신지 어드레스인 것으로 가정한다. 2개의 특정 어드레스값 I1및 I2을 기억 테이블에서의 탐색 절차를 위한 입력값으로 한다. 그 다음 단계에서, 개개의 입력값이 사전 선택된 기본 범위 중 어느 범위(값 구간)에 들어가는지를 각 기준마다 별도로 결정하게 된다. 이 결과, 2개의 입력값에 대한 2개의기본 범위 Xi및 Yj의 식별자가 얻어진다. 지금까지의 이들 단계는 공지의 다른 분류 절차에서의 단계와 동일한 것이다.
이제 또다른 기억 테이블에서의 탐색 동작에 대해서 살펴보면, 여기에서는 이전에 결정된 기본 범위 각각에 대해 범위 토큰을 찾아서 범위 토큰 RT(Xi) 및 RT(Yj)를 얻게 된다. 이들 범위 토큰들 중 적어도 한개는 균일하지 않은(가변) 길이를 갖는 범위 토큰의 집합으로부터 얻어진다. 예를 들어, 범위 토큰 RT(Yj)의 집합에는 길이가 1비트 내지 n 비트인 토큰들이 들어 있을 수 있다. 범위 토큰들은 기본 범위에 매핑(할당)되도록 선택됨으로써 입력값의 값 범위에 걸쳐 룰의 분포에 적합한 프리픽스-지향 집합을 형성하게 된다. 그 다음에 실제의 입력값들에 대해 얻은 2개의 범위 토큰을 기선정된 방식으로 조합, 사용하여 기억 데이터 구조에 최장 매칭 프리픽스 탐색 또는 검색 동작을 행한다. 이 데이터 구조는 이진 검색 트리일 수도 있고, 또한 룰 프리픽스에 근거하여 범위 토큰 조합의 경우들(occuring range token combinations)을 검색 키로서 최적 활용하도록 설계된 것으로서, 출력으로서 최종적으로 얻어지는 그 룰의 식별자(identifier)를 사용하여 수신된 입력값 I1및 I2를 특정 방식으로 조합하게 된다.
기술하게 될 본 발명의 제1 실시예에서는, 범위 토큰들 중 단지 한개만이 가변 길이를 가지고 다른 토큰은 고정 길이를 갖는다. 이 경우에, 2개의 범위 토큰을 연결(concatenate)하여 단일의 가변 길이의 검색 키를 얻고, 이 검색 키를 최장매칭 프리픽스 검색 동작을 위한 입력으로 사용한다.
제2 실시예(후술함)에서는, 범위 토큰이 둘다 가변 길이를 가진다. 그리고, 이들 토큰을 2개의 별도의 부분 검색 키로서 특수한 최장 매칭 프리픽스 탐색 또는 검색 동작에 입력으로 함께 사용하여 필요한 룰 식별자를 결정하게 된다.
이 개괄적 설명 및 기술된 2개의 실시예에서는, 단지 2개의 기준만을 계산하여 수신된 데이터 항목을 분류, 예를 들면 룰을 찾고 그 룰에 따라 수신된 패킷을 추가 처리하게 된다. 그러나, 본 발명은 2개 이상의 기준을 계산하여 항목의 분류를 행하는 시스템에도 적용할 수 있다.
그러한 경우에 n차원 시스템에서는 기사용된 변수(기본 범위 식별자 Xi, ... 및 범위 토큰 RT(Xi), ...)를 제공하기만 하면 된다. 이렇게 하게 되면, 단지 한 개의 토큰만이 가변 길이를 가지고 나머지 (n-1) 개의 토큰이 고정 길이를 갖는 경우, 연결을 함으로써 LMP(longest-matching-prefix) 탐색 동작에 대해 단일의 검색 키가 얻어지게 되고, 그렇지 않고 n개의 토큰 모두가 가변 길이를 갖는 경우에는, n개의 부분 검색 키를 따로따로 LMP 검색 동작에 입력으로 제공하게 되며, 이에 대해서는 제2 실시예에서 설명하기로 한다.
이하에서는, 본 발명의 실시예 2개를 일예로서 설명한다.
게다가, 본 발명에 따라 발생된 패킷 분류용 데이터베이스를 갱신하는 방법에 대해서도 간략히 설명한다. 본 명세서에서 사용되는 특정 용어에 대해서는, 본 명세서의 말미에 이들을 모아서 그 정의를 간략히 설명하였다.
예 1
이 예에서는, 4개의 룰을 사용하여 X와 Y 차원으로 표시되는 2 차원으로 이하의 범위(룰 범위(rule range)라고 함)를 커버하고 있다.
우선 순위 X 룰 범위 Y 룰 범위
1 1 20-69 10-59
2 2 50-99 40-89
3 2 10-29 50-79
4 3 60-89 30-49
도 2는 룰을 2차원 사각형으로 도시한 룰 다이어그램(룰/범위 다이어그램)이다. 중첩되지 않는 구간 X0-X8 및 Y0-Y7은 모든 룰의 범위 경계를 X 및 Y축으로 투사하여 얻은 것이다. 이들 구간을 기본 범위(basic range)라고 한다. 이 기본 범위로는 이하의 것들이 있다:
기본 범위 기본 범위
X0 <10 Y0 <10
X1 10-19 Y1 10-29
X2 20-29 Y2 30-39
X3 30-49 Y3 40-49
X4 50-59 Y4 50-59
X5 60-69 Y5 60-79
X6 70-89 Y6 80-89
X7 90-99 Y7 >=90
X8 >=100
도 2의 다이어그램에서 기본 범위는 폭이 10 또는 20 단위(예를 들어, X2 = 20-29 이고 X3 = 30-49 임)라는 것에 유의한다. 물론, 기본 범위의 폭은 이 이외의 것(십진수 이외의 것)도 가능하다; 각각의 기본 범위는 그 자신만의 개별 폭을 가질 수도 있다.
도 2에서, 2개의 룰이 중첩하는 경우에는, 우선 순위가 더 높은 룰이 우선 순위가 그보다 낮은 룰의 '상측'으로 올라온다(drawn 'on top'). 예를 들어, 룰 3이 룰 1과 [X2, Y4]에서 중첩하고 있으며, 룰 3이 룰 1보다 우선 순위가 더 높기 때문에, 룰 3이 상측으로 올라와 있다.
가변 길이 범위 토큰
"범위 토큰"은 기본 범위들(룰에 의해 커버되지 않는 범위는 제외되며, 이들은 특수한 범위 토큰을 수신할 수도 있는데, 이에 대해서는 본 명세서에서 설명하지 않음) 각각에 할당되며, 하나의 특정 범위 교집합을 나타내는 범위 토큰의 집합(수신된 패킷으로부터의 현재의 입력값에 대응함)을 조합, 사용하여 적용가능한 룰을 결정하게 된다. 본 발명의 개념은 가변 길이 범위 토큰을 적어도 1차원의 기본 범위에 할당하는 것을 포함한다 이 예에서, 가변 길이 범위 토큰은 Y 차원의 기본 범위에만 할당된다.
원시 범위 계층구조
계층 구조로 순위가 매겨진 원시 범위(primitive range, ordered in a hierarchy)를 도입함으로써 룰의 기존의 특정 분포 및 상호 관계에 따라 범위 토큰를 효율적이면서 최적으로 발생할 수 있게 된다. 주어진 룰의 집합에 대해 범위 토큰을 도출하는 한 방법이 도 3에 도시되어 있다. Y 룰 범위를 사용하여 Y축의 좌측에 도시된 소위 원시 범위를 포함하는 여러 계층으로 된 계층 구조를 작성하게 된다. 계층(L1, L2, L3)는 설명의 목적상 수평으로 좌에서 우로 도시되어 있다; 계층 구조의 '하부'는 가장 좌측(계층 L1)에 도시된 원시 범위로 구성되어 있다. 도 4에서, 원시 범위 계층 구조는 통상적인 방식인 수직으로 도시되어 있다.
원시 범위 계층 구조의 작성은 일정한 룰의 순위에 근거하고 있다. 룰 순위는 여러 가지 방식으로 선택될 수 있으며, 예를 들면 룰 우선 순위, 범위의 크기, 룰의 예상 수명, 또는 이들의 조합에 근거하여 선택될 수 있다. 룰 순위를 적절히 선택함으로써, 계층 구조에서 원시 범위의 개수를 최소화할 수 있게 되고, 이에 따라 필요한 범위 토큰의 개수 및 그 길이를 감축시킬 수 있게 된다. 여기서는 이하의 순위를 사용한다: 룰 2, 룰 3, 룰 1, 룰 4. 원시 범위 계층 구조는 이하의 특성을 갖는다: 하부 계층에 있는 원시 범위(도 3에서, 가장 좌측의 '수직 계층' L1)는 분리되어 있어야만 하며(중첩하지 않아야 하며), 보다 상위 계층에 있는 원시 범위(L2 및 L3)는 보다 하위 계층에 있는 원시 범위의 부분 집합이어야만 한다.
도 3에서, 룰 2의 Y 룰 범위 전체는 계층 1에 있는 원시 범위 2로서 배치되어 있다(왜냐하면 룰 2는 룰 순위에서 최상위 룰이기 때문이다). 그 다음에, 상기한 룰 순위에 따라, 룰 3의 Y 룰 범위가 택해지고, 원시 범위 2의 상측의 계층 2에 있는 원시 범위 3으로 배치된다. 원시 범위 3은 원시 범위 2의 부분 집합이다.
그 다음에, 룰 1의 Y 룰 범위가 택해진다. 룰 1의 Y 룰 범위는 원시 범위 2및 3 모두와 중첩하고 있다. 상위 계층에 있는 원시 범위가 하위 계층에 있는 원시 범위의 부분 집합이어야만 한다는 특성을 유지하기 위하여, 룰 1의 Y 룰 범위는 1a, 1b 및 1c로 표시된 3개의 원시 범위로 분할된다. 원시 범위 1c는 원시 범위 3의 부분 범위(subrange)이며, 따라서 계층 3에서 원시 범위 3의 상측에 배치될 수 있다. 원시 범위 1b는 원시 범위 3의 부분 범위로서 원시 범위 3과는 분리되어 있으며, 따라서 계층 2에서 원시 범위 2의 상측에 배치된다. 룰 1의 Y 범위의 나머지 부분, 원시 범위 1a는 원시 범위 2와 분리되어 있으며, 따라서 계층 1에 배치된다.
마지막으로, 룰 4의 Y 룰 범위를 택한다. 이 범위는 원시 범위 1a 및 1b 모두와 중첩하고 있다. 룰 1의 Y 룰 범위에 대해 한 것과 마찬가지로, 이제는 룰 4의 Y 룰 범위를 2개의 원시 범위 4a 및 4b로 분할한다. 원시 범위 4a는 원시 범위 1a이 부분 집합이고, 따라서 계층 2에서 원시 범위 1a의 상측에 배치된다. 원시 범위 4b는 원시 범위 1a와 같다. 이는 간단히 '병합'된다, 즉 최초 원시 범위 1b를 지금부터는 원시 범위 "1b,4b"라고 한다.
도 4는 원시 범위 계층구조를 수직으로 도시한 것이다.
원시 범위 ID
계층 구조에서 원시 범위 각각에는 이제 이하의 방식으로 식별자가 할당(각 계층마다 별도로 할당되며, 각 계층내에서는 원시 범위의 집합 각각에 대해 별도로 할당되고, 이 집합은 하위 레벨에 있는 원시 범위들중 하나와 연관됨)된다:
k를 최하위 계층, 즉 계층 1에 있는 원시 범위의 개수라고 할 때, 이들 원시범위 각각에는 고유의 이진수가 할당되며, 이 이진수의 비트수는 최대 log(k)이다. 도 4에서, 원시 범위 2에는 ID '0'이 할당되고, 원시 범위 1a에는 ID '1'이 할당되어 있다.
이전의 계층에 있는 한 원시 범위의 부분 범위인 주어진 계층에서의 원시 범위의 집합 각각에 대해 동일한 과정을 반복한다. 예를 들어, 원시 범위 3과 원시 범위 1b,4b는 계층 1에 있는 원시 범위 2 중에서 계층 2에서 2개의 부분 범위가 된다. 원시 범위 3에는 ID '0'이 할당되고, 원시 범위 1b,4b에는 ID '1'이 할당된다. 도 4는 이와 같이 원시 범위에 계층 구조로 할당된 모든 ID를 도시한 것이다.
룰 순위를 적절히 선택함으로써, 원시 범위의 개수 및 계층 구조의 필요 계층의 개수를 최소화할 수 있게 된다.
범위 토큰
계층 구조내의 원시 범위 ID에 근거하여, 모든 기본 범위에 대한 범위 토큰은 이하의 방식으로 도출된다. 기본 범위 각각에 있어서, 범위 토큰은 원시 범위의 ID 모두를 연결하여 구성되며, 주어진 기본 범위는 이 원시 범위의 부분 집합이다. 여기서 연결의 순위는 계층 구조에서 이들 원시 범위의 계층 순위에 따른다(하부 층에서 상부 층으로).
예를 들어, 기본 범위 Y4에 대한 범위 토큰 "000"은 이하의 방식으로 도출된다. 기본 범위 Y4는 도 3에서 알 수 있는 바와 같이 원시 범위 2, 3 및 1c의 부분 집합이다. 이들 원시 범위의 ID는 도 4에 따르면 "0", "0" 및 "0"이며, 이들을 연결시키면 "000"으로 된다. 도 3은 이와 같이 도출된 Y 차원의 기본 범위(Y1...Y6)에 대한 모든 범위 토큰을 우측에 도시하고 있다.
이 예에서는, Y 차원의 기본 범위에만 가변 길이의 범위 토큰이 할당되어 있다. X 차원의 기본 범위에는 도 3에서 알 수 있는 바와 같이 적어도 하나의 룰 범위의 부분 집합인 기본 범위에 단지 3비트(기본 범위가 7개인 경우)의 이진수 번호를 붙이기만 한 고정 길이의 범위 토큰이 할당되어 있다(룰/범위 다이어그램의 상부 참조).
룰 프리픽스(Rule prefixes)
이 예에서는 구조에 따른 분류 동작시에, 주어진 입력에 대해 X 및 Y 기본 범위를 병렬로 결정한다. 주어진 입력은 수신된 패킷으로부터 추출된 관련 기준값, 예를 들어 어떤 특정의 목적지 어드레스 및 어떤 특정의 발신지 어드레스의 집합이다. 각 입력값에 대해, 그것이 속하는 기본 범위 및 부속 범위 토큰을 예를 들어 탐색 동작시에 찾아내게 된다. 모든 입력값에 대한 탐색 동작은 시간을 절감하기 위해 병렬로 행해진다. 이들 탐색 동작은 표준적인 것이기 때문에 여기서는 더 이상 설명하지 않기로 한다. 찾아낸 X 기본 범위의 결과적인 고정 크기의 범위 토큰은 찾아낸 Y 기본 범위의 결과적인 가변 크기의 범위 토큰과 연결된다. 이 연결 결과는 최장 매칭 프리픽스 검색 동작을 위한 검색 키로서 사용되어 분류 동작의 주어진 입력에 적용되는 최상위 우선 순위 룰을 결정하게 된다. 중요한 요소는 연결된 범위 토큰에 응답하여 룰 식별자를 찾아내는데 최종적으로 사용되는 탐색 또는 검색 트리의 구성을 결정하는 "룰 프리픽스"(rule prefix)이다. 각 룰 프리픽스는 하나의 룰 식별자로의 트리 경로를 나타낸다. 이들 룰 프리픽스를 적절히선택함으로써 최적의 시간 및 기억 공간 요건으로 최장 매칭 프리픽스 탐색 동작이 가능하게 된다.
연결된 병렬 검색 결과(concatenated parallel search results)를 테스트하는 기준(즉, 검색 키)이 되는 룰 프리픽스는 이하의 방식으로 도출된다:
X 차원의 기본 범위 각각에 대해서, 먼저 주어진 기본 범위가 X 룰 범위의 부분 집합으로 되는 룰을 결정한다. 그 다음에, 이들 룰 각각 및 주어진 기본 X 범위에 대해, 개개의 Y 룰 범위 중 어느 부분이 보다 상위의 우선 순위 룰에 의해 커버되어 있지 않은지를 결정한다. Y 룰 범위의 이 부분에 대해, 이 Y 룰 범위 부분을 부분 집합으로 갖는 가장 작은 원시 범위의 집합을 결정한다. 발견된 집합내의 각 원시 범위에 대해서는, X 차원의 주어진 기본 범위의 범위 토큰을 주어진 원시 범위 자신(Y 차원)의 ID 및 주어진 원시 범위의 아래쪽에 있는 모든 원시 범위의 ID와 계층 구조에서의 계층 순서에 따라 연결하여 별도의 룰 프리픽스를 생성한다. 이렇게 함으로써 주어진 룰에 대한 룰 프리픽스가 얻어진다.
예를 들어, 기본 범위 X5는 룰 1, 2 및 4의 X 룰 범위의 일부분이 된다. 룰 1의 경우, Y 범위 Y1만이 보다 상위의 우선 순위 룰 2 및 4에 의해 커버되지 않고 있다. Y1을 부분 집합으로 갖는 가장 작은 원시 범위는 원시 범위 1a이다. 이제 룰 프리픽스는 X5의 고정 크기의 범위 토큰("101")을 원시 범위 1a의 가변 크기 ID("1")와 연결시켜 얻어진다: 룰 프리픽스 1011 ⇒ 룰 1.
룰 2의 경우에는, Y 범위 Y4 내지 Y6는 보다 상위의 우선 순위 룰 4에 의해 커버되어 있지 않다. Y4 내지 Y6를 부분 집합으로 갖는 가장 작은 원시 범위는 원시 범위 2이다. 룰 프리픽스는 이제 X5의 범위 토큰("101")을 원시 범위 2의 가변 크기 ID("0")와 연결시켜 얻어진다: 룰 프리픽스 1010 ⇒ 룰 2.
룰 4는 기본 범위 X5에 대한 상위의 우선 순위 룰 어떤 것에 의해서도 커버되어 있지 않다. Y 범위 Y2 및 Y3를 부분 집합으로 갖는 가장 작은 원시 범위의 집합은 원시 범위 4a 및 "1b,4b"이다. 이들 원시 범위 각각에 대해 룰 프리픽스를 결정한다. 원시 범위 4a의 경우, 룰 프리픽스는 X5의 범위 토큰("101")을 원시 범위 1a의 ID("1") 및 원시 범위 4a의 ID("0")와 연결시켜 얻어진다: 룰 프리픽스 10110 ⇒ 룰 4.
원시 범위 4b의 경우, "룰 4"를 가리키는 룰 프리픽스는 X5의 범위 토큰("101")을 원시 범위 2의 ID("0") 및 원시 범위 "1b,4b"의 ID("1")와 연결시켜 얻어진다: 룰 프리픽스 10101 ⇒ 룰 4. X 차원의 모든 기본 범위에 대해 동일한 절차를 수행함으로써, 이하와 같은 룰 프리픽스의 리스트가 얻어진다:
룰 프리픽스
1) 00100 ⇒ 룰 3
2) 01000 ⇒ 룰 3
3) 01001 ⇒ 룰 1
4) 0101 ⇒ 룰 1
5) 011000 ⇒ 룰 1
6) 01101 ⇒ 룰 1
7) 0111 ⇒ 룰 1
8) 1001 ⇒ 룰 1
9) 1000 ⇒ 룰 2
10) 1011 ⇒ 룰 1
11) 10110 ⇒ 룰 4
12) 1010 ⇒ 룰 2
13) 10101 ⇒ 룰 4
14) 11010 ⇒ 룰 4
15) 1100 ⇒ 룰 2
16) 11001 ⇒ 룰 4
17) 1110 ⇒ 룰 2
룰 프리픽스 12는 룰 프리픽스 13의 프리픽스라는 것에 유의한다. 이것은 도 3을 보면 알 수 있다: 분류 동작에 대한 주어진 입력에 대하여, 룰 프리픽스 12가 매칭 프리픽스(matching prefix)인 경우에는, 이것은 이 입력이 사각형[X5, Y3-Y6]내의 어떤 곳의 좌표와 관련되어 있다는 것을 의미하는 것이며, 이는 또한 룰 2가 적용된다는 것을 의미한다. 룰 프리픽스 13이 보다 긴 매칭 프리픽스인 것으로 판명된 경우에는, 이것은 그 입력이 사각형[X5, Y3]내의 어떤 곳의 좌표와 관련되어 있다는 것을 의미하는 것이며, 이는 또한 룰 4가 적용된다는 것을 의미한다. 룰 4는 보다 상위의 우선 순위를 갖기 때문에, 룰 4는 분류 동작의 출력이 된다. 또한, 룰 프리픽스 15는 룰 프리픽스 16의 프리픽스이다.
상기한 문헌에는, 고속의 최장 매칭 프리픽스 검색 동작을 수행하는 몇가지방법에 대해 보고되어 있다. 이들 방법 모두를 여기에 적용할 수 있다. 도 5는 상기 열거한 룰 프리픽스 리스트에 대한 최장 매칭 프리픽스 검색 트리 구조를 도시한 것이다. 이 트리 구조는 이진 트리로 설계되어 있는데 그것은 간단하기 때문이다. 이 동작에 대하여는 나중에 간략히 설명하기로 한다.
예 2
이 두 번째 예에서는, 첫 번째 예에서 사용된 것과 동일한 4개의 룰을 가정하며, 이는 도 2에 도시되어 있다.
가변 길이의 범위 토큰
이 예에서, 가변 길이의 범위 토큰은 X 및 Y 차원 양쪽의 기본 범위에 할당되게 된다. 이점에서, 가변 길이의 범위 토큰이 Y 차원만의 기본 범위에 할당되고 있는 첫 번째 예와 대비된다.
가변 길이의 범위 토큰을 2 차원(또는 그 이상의 차원)으로 사용될 때에는, 적어도 룰과 범위간의 어떤 관계에 대해서는 훨씬 더 양호한 분류 절차가 가능하게 된다. 이러한 사실은 그 결과 얻어지는 이 예의 설명의 후단에 있는 룰 프리픽스의 리스트 및 도 8에 있는 검색 트리로부터 알 수 있다.
가변 길이의 범위 토큰을 양 차원의 기본 범위로 할당하는 한가지 방법은 도 6에 도시한 바와 같이 2 단계로 이루어져 있다.
첫 번째 단계는 기존의 룰을 소위 서브 룰(subrule)로 분할하여 이들 서브 룰과 관련된 2차원 사각형이 분리되도록(중첩하지 않도록) 하거나 또는 서로 안에 포함되도록(즉, 어느 한쪽 룰의 서브 룰(예를 들어 3b)이 다른쪽 룰 안에 포함되거나 또는 다른쪽 룰의 서브 룰(예를 들어 1a)안에 포함되도록) 한다. 룰을 서브 룰로 분할하는 방법은 여러 가지 기준, 예를 들어 룰 우선 순위, 룰 범위의 크기 또는 이들의 조합에 근거할 수 있다. 예를 들어, 도 6에서, 룰 4는 2개의 서브 룰 4a 및 4b로 분할된다. 그 결과, 서브 룰 4b는 이제 룰 2에 포함되어지고, 서브 룰 4a는 이제 룰 2와 분리되어 있다.
룰이 서브 룰로 분할되는 경우, 보다 상위의 우선 순위 룰에 의해 완전히 커버되게 되는 서브 룰은 버려질 수 있다. 예를 들어, 도 6에서, 룰 1은 서브 룰 1a, 1b, 1c 및 1d로 분할되어 있다. 룰 1의 나머지 부분은 보다 상위의 우선 순위 룰 2(좌하측 부분) 및 보다 상위의 우선 순위 서브 룰 4a(좌측 부분)에 의해 커버되어 있으며, 따라서 버려지게 된다.
모든 룰 및 서브 룰이 서로의 안에 포함되어 있거나 또는 분리되어 있다는 특성만 유지된다면, 두 번째 단계로서 원시 범위 계층 구조를 각 차원마다 작성하게 된다. 이것은 첫 번째 예에서 설명한 것과 동일한 방식으로 행해진다. 각 차원에 대해, 원시 범위 계층 구조를 작성하는데 사용되는 룰 및 서브 룰의 순위는 주어진 차원에서 (서브) 룰 범위가 보다 큰 것부터 (서브) 룰 범위가 보다 작은 쪽으로 되어 있다. 이렇게 하여 얻어지는 X 및 Y 차원에 대한 원시 범위 계층 구조는 도 6에서 X축 아래쪽과 Y축의 좌측에 각각 도시되어 있다.
예를 들어, X 차원에서, 룰 2의 X 룰 범위는 계층 1에서 원시 범위 2로서 택해진다. 원시 범위 2의 상측에는, 원시 범위 1c 및 4a,b가 계층 2에 배치되어 있으며, 이는 서브 룰 1c 및 서브 룰 4a 및 4b에 대응하는 것이다. 원시 범위 4a,b의 상측에는, 원시 범위 1d가 계층 3에 배치되어 있으며, 이는 서브 룰 1d에 대응하는 것이다. 이들 원시 범위들을 X 차원으로 계층화하는 것은 그들의 크기에 따라 행해진다. 마찬가지로, Y 차원에 대한 원시 범위가 생성된다.
원시 범위 ID는 첫 번째 예에서 설명한 것과 동일한 방식으로 결정되며, 이에 대해서는 도 7A 및 도 7B에 도시하였다. 또한, 원시 범위 계층 구조 및 원시 범위 ID로부터 가변 길이의 범위 토큰을 도출하는 것도 첫 번째 예에서 설명한 것과 동일한 방식으로 행해지나, 지금은 2 차원에 대해서 행하게 된다. 그 결과가 도 6의 룰/범위 다이어그램의 상부와 우측에 도시되어 있다.
룰 프리픽스
적어도 2차원으로 가변 길이의 범위 토큰이 기본 범위에 할당되는 경우에는, 분류 입력으로서 각 차원에서의 기본 범위를 결정하기 위한 병렬 검색 동작의 결과인 범위 토큰은 중간 테스트 결과(즉, 단일 검색 키)를 구성하기 위해 연결되는 것이 아니라, 변형된 최장 매칭 프리픽스 검색에 대한 입력으로 별도의 비트 벡터(2개의 "부분 검색 키")로서 제공된다. 이렇게 하는 것은 분류 동작의 주어진 입력값에 적용되는 최상위 우선 순위 룰을 결정하기 위해서이다. 이 변형된 최장 매칭 프리픽스 검색 동작과 종래의 최장 매칭 프리픽스 검색 동작간의 차이점은, 종래의 검색 동작에서는 정확히 하나의 비트 벡터(즉, 단일 검색 키)를 입력으로 사용하며 이 입력을 좌에서 우로 처리한다는 것이다. 반면에, 변형된 검색 동작에서는, 다수의 서로 다른 크기를 갖는 비트 벡터(2개의 "부분 검색 키")를 입력으로 사용하여 그 각각을 좌에서 우로 처리할 수 있다는 것이지만, 이들 여러 가지 비트 벡터의 일부분을 검색 동작의 일정 시점에서 사용하게 되는 순서는 이미 처리된 비트 벡터 부분의 값에 따라 달라지게 된다. 이에 대해서 지금부터 설명하기로 한다.
이미 설명한 분리 동작 및 버리는 동작 후에 남아 있는 각 서브 룰 및 분리되지 않은 룰 각각에 대해서, 룰 프리픽스는 이하의 방식으로 도출된다. 각 차원에서, 그 차원의 주어진 룰 또는 서브 룰의 룰 범위와 같은 원시 범위를 결정한다. 그 다음에, 각 차원에서, 결정된 원시 범위를 부분 집합으로 가짐과 동시에 이 결정된 원시 범위 자체를 포함하는 모든 원시 범위의 집합을 결정한다. 마지막으로, 룰 프리픽스를 생성하게 되는데, 이는 이들 원시 범위 모두의 원시 범위 ID를 연결시키되, X 차원의 계층 1에 있는 원시 범위의 원시 범위 ID부터 시작하여, 다음에는 Y 차원의 계층 1에 있는 원시 범위의 원시 범위 ID를, 그 다음에는 X 차원의 계층 2에 있는 원시 범위의 원시 범위 ID를, 이와 같이 계속하여 이들 원시 범위 모두를 다 커버할 때까지 연결시켜 룰 프리픽스를 생성하게 된다. 만약에 주어진 룰 또는 서브 룰에 대해 X 차원 및 Y 차원에 대한 원시 범위의 집합이 포함하는 요소의 개수가 서로 다른 경우에는, 원시 범위 ID를 교대로 연결하는 것을 한 집합의 원시 범위 ID 모두가 사용된 이후에는 종료하게 되고, 그 다음부터는 나머지 집합의 원시 범위 ID만을 사용하여 룰 프리픽스의 나머지 부분을 생성하게 된다. 충족되어야 하고 또한 X 및 Y 차원과 관련된 원시 범위 ID를 연결시키는 순서를 결정하기도 하는 중요한 조건으로는, 룰 또는 서브 룰이 (보다 하위의 우선 순위) 룰 또는 서브 룰 안에 포함되어 있다면, 포함하고 있는 룰 또는 서브 룰과 관련된 원시 범위 ID는 위의 포함되어 있는 룰 또는 서브 룰에 대한 룰 프리픽스에서와 동일한순서로 나타나야 한다는 것이다. 이렇게 되어야만 하는 이유는, 적용가능한 룰 식별자를 최종적으로 얻기 위한 최장 매칭 프리픽스 탐색 절차에서 백트래킹(backtracking)을 피하기 위해서이다.
예를 들어(도 6, 도 7A 및 도 7B 참조), 서브 룰 1a에 대한 룰 프리픽스는 이하와 같은 방식으로 구성될 수 있다. X 차원에서 원시 범위 1a,b는 서브 룰 1a의 룰 범위와 같으며, Y 차원에서 원시 범위 1a는 서브 룰 1a의 룰 범위와 같다. X 차원에서 원시 범위 1a를 부분 집합으로 갖는 원시 범위 ID(이 경우에는 없슴)와 함께 원시 범위의 집합은, 원시 범위 1a,b를 포함하고 있고 또한 하위 계층에서 상위 계층 순으로 하면, 1a,b:11이 된다.
Y 차원에서 원시 범위 1a를 부분 집합으로 갖는 원시 범위 ID와 함께 원시 범위의 집합은, 원시 범위 1a를 포함하고 있고 또한 하위 계층에서 상위 계층 순으로 하면, 2:0, 1a:1이 된다.
서브 룰 1a는 도 6에서 다른 어떤 룰 또는 서브 룰에 포함되어 있지 않기 때문에, 대응하는 룰 프리픽스는 X 차원부터 시작하여 이들 집합의 원시 범위 ID를 단지 교대로 위치시킴으로써 이들 집합으로부터 직접 도출될 수 있다: 룰 프리픽스 X(11)Y(0)Y(1) ⇒ 룰 1.
서브 룰 3b(서브 룰 1a에 포함되어 있슴)에 대한 룰 프리픽스는 이하의 방식으로 구성될 수 있다. X 차원에서 원시 범위 3b,d는 서브 룰 3b의 룰 범위와 같으며, Y 차원에서 원시 범위 3a,b는 서브 룰 3b의 룰 범위와 같다. X 차원에서 원시 범위 3b,d를 부분 집합으로 갖는 원시 범위 ID와 함께 원시 범위의 집합은, 원시범위 3b,d를 포함하고 있고 또한 하위 계층에서 상위 계층 순으로 하면, 1a,b:11, 3b,d:0이 된다.
Y 차원에서 원시 범위 3a,b를 부분 집합으로 갖는 원시 범위 ID와 함께 원시 범위의 집합은, 원시 범위 3a,b를 포함하고 있고 또한 하위 계층에서 상위 계층 순으로 하면, 2:0, 1a:1, 3a,b:0이 된다.
서브 룰 3b는 서브 룰 1a에 포함되어 있기 때문에, 양쪽 집합의 첫 번째 요소는 서브 룰 1a에 관련된 룰 프리픽스에서 이들이 나타나는 순서와 동일한 순서로 연결시켜야만 한다. 이 룰 프리픽스의 나머비 부분은 나머지 요소들의 원시 범위 ID를 단지 교대로 연결시킴으로써 양쪽 집합으로부터 얻어진다: 룰 프리픽스 X(11)Y(0)Y(1)X(0)Y(0) ⇒ 룰 3.
이를 살펴보면 서브 룰 1a에 관련된 룰 프리픽스는 (어떤 의미에서) 서브 룰 3b에 관련된 룰 프리픽스의 프리픽스가 됨을 알 수 있다.
다른 룰 및 서브 룰에 대한 룰 프리픽스는 마찬가지로 하여 얻어진다:
룰 프리픽스
1) X(11)Y(0)Y(1) ⇒ 룰 1 (서브 룰 1a)
2) X(11)Y(1) ⇒ 룰 1 (서브 룰 1b)
3) X(0)Y(1)X(1) ⇒ 룰 1 (서브 룰 1c)
4) X(0)Y(1)X(0)Y(1)X(0) ⇒ 룰 1 (서브 룰 1d)
5) X(0)Y(0) ⇒ 룰 2
6) X(10)Y(0)Y(1)Y(0) ⇒ 룰 3 (서브 룰 3a)
7) X(11)Y(0)Y(1)X(0)Y(0) ⇒ 룰 3 (서브 룰 3b)
8) X(10)Y(0)Y(0) ⇒ 룰 3 (서브 룰 3c)
9) X(11)Y(0)X(0)Y(0) ⇒ 룰 3 (서브 룰 3d)
10) X(0)Y(1)X(0)Y(0) ⇒ 룰 4 (서브 룰 4a)
11) X(0)Y(0)X(0)Y(1)Y(1) ⇒ 룰 4 (서브 룰 4b)
룰 2에 관련된 룰 프리픽스는 (어떤 의미에서) 서브 룰 4b에 관련된 룰 프리픽스의 프리픽스가 됨을 알 수 있다.
도 8에는 적용가능한 최상위 우선 순위 룰을 결정하기 위하여 병렬 기본 범위 검색으로부터 얻은 범위 토큰에 대해 변형된 최장 매칭 프리픽스 검색(탐색)을 수행하기 위한 데이터 구조(검색 트리)의 일례가 도시되어 있다. 각 노드에서, 그 다음 노드는 X 차원이나 또는 Y 차원의 기본 범위 검색으로부터 얻은 범위 토큰으로부터 취출한 한 비트에 근거하여 선택된다.
이 최장 매칭 프리픽스 검색 트리를 다른 공지의 LMP 검색 트리(예를 들어, 도 5의 검색 트리)와 비교할 때 차이점은: (a) 단일 검색 키 대신에, 한쌍의 별도의 (부분) 검색 키를 입력으로 사용한다. (b) 검색 트리 구조의 각 엔트리는 출력 표시(사용될 그 다음 엔트리; 룰 식별자) 이외에, 2개의 (부분) 입력 검색 키 중에서 어느 것을 그 다음 제어 비트가 취하게 될 것인지를 나타내는 표시도 포함하고 있다. 이 동작에 대해서는 나중에 간략히 부가 설명하기로 한다.
예를 들어, 분류 동작에의 입력이 도 6의 영역 [X6, Y3]내에 '위치'하고 있는 경우에는, 이하의 2개의 범위 토큰이 병렬 기본 범위 검색의 결과가 된다:
X 차원 : 00 (X6)
Y 차원 : 011 (Y3)
도 8에서, 데이터 구조를 통해 룰 4로의 경로를 따라 룰 2도 발견된다; 그러나, 룰 4는 보다 긴 룰 프리픽스에 해당하기 때문에, 룰 4가 선택되는데, 이는 룰 4가 룰 2보다 상위의 우선 순위를 가지므로 제대로 선택한 것이다.
증분적 갱신(Incremental Updating)
2가지 예를 살펴보면, 룰을 부가 또는 제거하기 위해 분류 데이터 구조가 어떻게 증분적으로 갱신되는지를 알 수 있다. 증분적 갱신을 함으로써 분류 데이터 구조를 신속하게 갱신할 수 있게 되며, 이렇게 하는 것은 룰의 부가 또는 제거 이후의 새로운 상황을 즉각적으로 반영하기 위해서이다. 그러나, 데이터 구조 전체를 스크래치(scratch)로부터 작성하는 경우에 보다 효율적인 구조가 얻어지는 것이 일반적이다. 실제의 시스템에서는, 일정 횟수의 갱신 후에 또는 어떤 기간 후에만 구조 전체를 재생성하고 또한 이들 완성된 재구성들간에 데이터 구조를 증분적으로 갱신하는 것으로 이를 적용할 수 있다.
룰의 증분적 부가(Incremental addition of a rule)
기본 범위
도 9는 룰 5를 도 2에 도시한 룰의 최초의 집합에 부가하는 것의 일례를 나타낸 것이다. 이 새로운 룰을 구현하기 위하여, 기본 범위 X3 및 Y1을 X3' 및 X3", 그리고 Y1' 및 Y1"으로 각각 분할되어 룰 경계를 매칭시키게 된다.
원시 범위 계층 구조
그 다음 단계는 도 3 및 도 4에 도시된 원시 범위 계층 구조를 갱신하는 것이다. 이것에 대해서는, 도 10 및 도 11에 도시되어 있다. 룰 5의 Y 룰 범위(Y1" 및 Y2)는 2개의 원시 범위 5a 및 5b로 분할된다(왜냐하면, 이미 존재하는 원시 범위 4a와 부분적으로 중첩하고 있기 때문이다). 원시 범위 5a는 원시 범위 4a와 병합되고, 지금부터 이를 원시 범위 '4a,5b'로 표시하기로 하며, 원시 범위 5a는 계층 2에서 부가된다. 도 11에는 원시 범위 ID가 도시되어 있다. 계층 1의 원시 범위 1a는 최초에는 계층 2에 단지 하나의 서브 범위만을 가지고 있었다. 원시 범위 4a에는 '0'으로 된 1비트의 원시 범위 ID가 할당되어 있었다. 이제는 계층 2의 또하나의 원시 범위, 즉 원시 범위 5a는 원시 범위 1a의 서브 범위로 부가되어 있다. 원시 범위 5a에는 이제 원시 범위 ID '1'이 직접 할당될 수 있는데, 그 이유는 1비트의 가능한 모든 원시 범위 ID가 원시 범위 1a의 계층 2의 서브 범위 모두에 할당되어 있지는 않기 때문이다. 이렇지 않은 경우에는, 서브 범위의 모든 원시 범위 ID는 1비트 확장되어 재할당되어야만 한다. 그 경우, 이들 원시 범위 ID에 의해 영향을 받는 모든 기본 범위 ID 및 룰 프리픽스는 변화되고, 다시 재계산되어 데이터 구조에서 갱신되어야만 한다.
따라서, 증분적 갱신을 수행할 수 있도록 하기 위해서는, '여분의'(spare) 원시 범위 ID를 원시 범위 계층 구조 전체에 걸쳐 유지되어 새로운 원시 범위의 부가에 대해 행해져야 할 변화의 횟수를 제한하도록 하는 것이 중요하다. 이제, 새로운 기본 범위 Y1"에 대한 가변 길이의 범위 토큰은 첫 번째 예에서 설명한 것과 동일한 방식으로 도출될 수 있다. 기본 범위 Y1'는 최초의 기본 범위 Y1의 범위토큰을 물려받게 된다.
도 3에는, 8개의 가능한 3비트 고정 크기의 범위 토큰 중 7개만이 X 차원에서 기본 범위에 할당되어 있다는 것을 알 수 있다; 범위 토큰 '000'만 할당되어 있지 않다. 이 '여분의' 범위 토큰은 이에 기본 범위 X3'에 할당되고, 기본 범위 X3"에는 최초의 기본 범위 X3의 범위 토큰 '011'이 할당된다.
도 10은 이제 X 및 Y 차원에서 기본 범위에 할당되었던 범위 토큰을 도시한 것이다(룰/범위 다이어그램의 상부 및 우측 참조).
룰 프리픽스
룰 5 및 새로운 기본 범위 및 범위 토큰의 부가에 근거하여, 룰 프리픽스의 집합은 이하의 방식으로 갱신되어야 한다:
룰 5는 X 차원에서 기본 범위 X1, X2 및 X3'를 커버하고, 룰 1보다 상위의 우선 순위를 갖는다. 따라서, 이하의 룰 프리픽스가 부가된다:
00110 ⇒ 룰 5
00111 ⇒ 룰 5
01010 ⇒ 룰 5
01011 ⇒ 룰 5
00010 ⇒ 룰 5
00011 ⇒ 룰 5
기본 범위 X3' 및 X3"은 최초의 기본 범위 X3에 관련된 룰 프리픽스를 물려받는다. 기본 범위 X3"는 최초의 기본 범위 X3와 동일한 범위 토큰 '011'을 갖기때문에, 최초의 기본 범위 X3와 관련된 이하의 룰 프리픽스만 기본 범위 X3'에 부가하면 된다:
000000 ⇒ 룰 1
0001 ⇒ 룰 1
이제 룰 프리픽스의 전체 리스트는 이하와 같이 된다(새로운 룰 프리픽스는 진한 글씨로 되어 있다):
룰 프리픽스
1) 00100 ⇒ 룰 3
2) 00110 ⇒ 룰 5
3) 00111 ⇒ 룰 5
4) 01000 ⇒ 룰 3
5) 01001 ⇒ 룰 1
6) 0101 ⇒ 룰 1
7) 01010 ⇒ 룰 5
8) 01011 ⇒ 룰 5
9) 000000 ⇒ 룰 1
10) 0001 ⇒ 룰 1
11) 00010 ⇒ 룰 5
12) 00011 ⇒ 룰 5
13) 011000 ⇒ 룰 1
14) 01101 ⇒ 룰 1
15) 0111 ⇒ 룰 1
16) 1001 ⇒ 룰 1
17) 1000 ⇒ 룰 2
18) 1011 ⇒ 룰 1
19) 10110 ⇒ 룰 4
20) 1010 ⇒ 룰 2
21) 10101 ⇒ 룰 4
22) 11010 ⇒ 룰 4
23) 1100 ⇒ 룰 2
24) 11001 ⇒ 룰 4
25) 1110 ⇒ 룰 2
도 12는 도 5의 검색 트리 구조에 대응하는 것으로 이를 갱신한 것이다. 실제로는, 도 12는 검색 트리 구조의 상부만을 도시한 것인데, 그것은 하부에는 갱신이 필요없었고 도 5의 트리 구조의 하부와 동일하기 때문이다.
룰의 증분적 삭제(Incremental deletion of a rule)
기존의 구조로부터 룰을 삭제하는 것은 비교적 쉽다. 이러한 삭제는 최장 매칭 프리픽스 검색 트리 구조에서 그 룰에 대한 모든 참조를 제거하기만 하면 된다. 예를 들어, 룰 2의 삭제는 도 5에 도시된 트리의 경우 이 룰에 대한 4개의 참조를 제거하면 되며(예 1), 도 8에 도시된 트리로부터는 이 룰에 대한 1개의 참조만을 제거하면 된다(예 2).
검색 트리의 동작
이제 도 5, 도 8 및 도 12에 개략적으로 도시된 검색 트리의 동작에 대해 간략히 설명하기로 한다. 이들 검색 트리에 있는 각각의 동그라미는 노드를 나타내며, 이 노드는 예를 들면 메모리내의 엔트리의 그룹이 될 수도 있다. 각 노드는 이하의 엔트리의 그룹을 포함할 수도 있다:
a) X 또는 Y (계산해야 할 입력 키)
b) 비트 번호 (계산해야 할 키 비트)
c) 그 다음 노드에 대한 첫 번째 포인터 (비트가 0(zero)인 경우)
d) 그 다음 노드에 대한 두 번째 포인터 (비트가 1인 경우)
e) 룰 식별자
병렬 부분 검색 키를 사용하는 경우(도 8)에는 X 또는 Y 선택(필드 a)만 필요하다. 단일 입력 검색 키를 사용하는 경우(도 3 및 도 12)에는 그것이 필요없다. 계산된 비트를 프로세서가 카운트할 경우에 비트 번호(필드 b)는 필요없다. 룰 식별자는 실제로 필요한 경우에만 이들 노드에 기억되어 있다(도 3 및 도 8 참조).
검색 트리에서의 최장 매칭 프리픽스 탐색 과정은 이하의 단계들을 포함하고 있다:
1) 복수의 부분 검색 키(또는 단일 검색 키)를 기억시킴
2) 비트 카운터를 0으로 설정함(비트 카운터가 있는 경우)
3) 검색 트리의 엔트리 노드로 감
4) 엔트리 (b)에 있는 비트 번호로(또는 비트 카운터 내용으로) 표시된 비트를 엔트리 (a)에 표시된 입력 키로부터, 또는 단일 검색 키로부터 가져옴
5) 이 비트의 이진값을 검출하고, 이 값에 따라 엔트리 (c) 및 (d)로부터 첫 번째 포인터를 추출하거나 두 번째 포인터를 추출함
6) (존재하는 경우에는) 엔트리 (e)로부터 룰 식별자를 추출하고 이를 버퍼링함
7) 현재의 입력 키의 마지막 비트가 계산되었는지 여부를 검출함;
"예"인 경우: 버퍼링된 룰 식별자를 출력으로 제공하거나 (룰 식별자가 버퍼링되어있지 않은 경우에는) NIL 출력을 제공함;
"아니오"인 경우: (이용가능한 경우, 개개의 비트 카운트를 1만큼 증가시킴); 단계 (5)에서 발견된 포인터를 사용하여 검색 트리에서 그 다음 노드로 가서 단계 (4) 내지 (7)을 반복함.
(a) 트리의 리프 노드(leaf node)(엔드 노드(end node))에 도달한 경우나, 또는 (b) 그 다음 단계에서, 이미 써버린 입력 검색 키로부터 비트를 계산해야만 하는 경우에는, 검색 과정은 종료되고, 버퍼링된 마지막 룰 식별자가 출력으로 제공된다.
용어 리스트
= 패킷 (또는 다른 항목)을 처리하기 위한 복수의 서로 다른 명령들 중 한 명령으로서, 패킷이 포함하는 특정 기준값에 따라 행해지는 분류가 달라짐.
(룰은 서로간에 우선 순위가 부여되어 있는 것이 보통이다)
룰 다이어그램= 2 (또는 n) 차원의 다이어그램으로서, 각각의 룰이 유효하게 되는 기준값의 범위를 나타냄.
기본 범위= 룰 다이어그램에서의 각각의 범위(= Xn /Yn)
(룰 사각형의 모든 경계를 룰 다이어그램 축으로 투사함으로써 생성됨)
룰 범위= 룰이 유효하게 되는 몇 개의 기본 범위
(하나의 룰 사각형의 경계들을 룰 다이어그램 축으로 투사함으로써 생성됨)
룰 순위= 우선 순위 또는 크기 등등에 따른 룰의 순서
룰 식별자= 분류 동작의 결과
(마지막 최장 매칭 프리픽스 탐색 동작의 출력)
범위 토큰= 기본 범위를 나타내는 비트 벡터
기준= 분류를 위해 계산되는 패킷(항목)내의 필드
(예를 들면, 발신지 어드레스 또는 목적지 어드레스)
기준값= 계산된 패킷(항목)내에 포함되어 있는 기준의 실제값
또한 (분류를 위한)입력값또는입력 파라메타라고도 함
검색키= 룰 다이어그램에서 한 특정 지점에 대한, 즉 입력값들로 이루어진 한 특정 집합에 대한 범위 토큰들의 조합
(관련 룰 식별자를 찾아내기 위해 최장 매칭 프리픽스 탐색을 위한 입력으로 사용됨)
룰 프리픽스(rule prefix)= 프리픽스는 최장 매칭 프리픽스 검색 트리에 구현되는 것으로서 출력으로의 경로, 즉 룰 식별자로의 경로를 나타냄.
원시 범위(primitive range)= 범위 토큰을 생성하는데 사용되는 복수의 범위 중 하나
(기본 범위를 하나 또는 몇 개 포함할 수도 있음)
(원시 범위는 계층 구조로 배열됨)
원시 범위 식별자= 한 계층내에 있는 원시 범위들간을 구별짓기 위한 단일 비트 또는 비트 그룹
동일한 프리픽스를 갖는 서로 다른 범위 토큰 조합들은 기억된 하나의 룰 식별자로의 동일한 경로를 사용할 수 있으므로, 이 방법을 사용하면 분류 절차에 대한 기억 공간 및 시간 요건이 완화되고 룰이 변할 때에도 간단히 갱신할 수 있게 된다.

Claims (18)

  1. 처리할 데이터 항목에 존재하는 적어도 2개의 서로 다른 기준값들의 조합에 응답하여 적용가능한 처리 룰을 검출하는 방법에 있어서,
    상기 기준값들 각각에 대해, 각각이 상기 개개의 기준값의 한 구간을 나타내는 범위 토큰(range tokens)의 집합에서 범위 토큰을 선택하고 -적어도 하나의 기준에 대한 범위 토큰의 집합은 불균일한 길이를 가짐-,
    룰 식별자(rule identifier)를 포함하는 검색 구조에서의 탐색 동작을 위한 입력으로서 한 데이터 항목에 대해 선택된 범위 토큰들의 조합을 사용하여, 최장 매칭 프리픽스 검색 동작(longest-matching- prefix search operation)에 의해 하나의 룰 식별자를 찾아내는 것을 특징으로 하는 처리 룰 검출 방법.
  2. 제1항에 있어서,
    검색 구조로서 검색 트리를 사용하되,
    상기 검색 트리는, 복수의 룰이 범위 토큰들의 조합에 의해 표현된 기준값 구간들의 특정 교집합(intersection)에 대해 유효할 때에는, 상기 개개의 탐색 동작의 결과, 최상위 랭크 또는 우선 순위(highest rank or priority)를 갖는 단일 룰에 대한 식별자를 주어진 순위로 출력하도록 설계되어 있는 것을 특징으로 하는 처리 룰 검출 방법.
  3. 제1항에 있어서,
    불균일한 길이를 갖는 범위 토큰들이 단지 하나의 기준에 대해서만 범위 토큰의 집합에 제공되고,
    상기 최장 매칭 프리픽스 검색 동작에 대한 입력으로서 사용되는 범위 토큰들의 조합은 주어진 데이터 항목의 기준값들에 대해 결정된 범위 토큰들의 연결(concatenation)인 것을 특징으로 하는 처리 룰 검출 방법.
  4. 제1항에 있어서,
    불균일한 길이를 갖는 범위 토큰들이 적어도 2개의 기준에 대해 범위 토큰의 집합에 제공되고, 한 특정의 데이터 항목의 기준값들에 대해 상기 결정된 범위 토큰들이 검색 구조에 대한 병렬 입력으로 사용되며,
    검색 구조내의 엔트리(entry)는 표식(indication)을 포함하는데 입력 범위 토큰의 이 표식을 보고 상기 최장 매칭 프리픽스 검색 동작을 위한 그 다음 숫자(digit)를 취하는 것을 특징으로 하는 처리 룰 검출 방법.
  5. 제1항에 있어서,
    상기 검색 구조는 룰 프리픽스(rule prefix)에 근거한 검색 트리이고, 각각의 룰 프리픽스는 하나의 룰 식별자를 포함하는 검색 트리(search tree)에서 노드(node)로의 경로를 나타내며,
    각각이 한 개 또는 복수개의 어떤 기준의 기본값 범위(basic value rangesof a criterion)와 같은 중첩하지 않는 원시 범위들의 계층 구조(a hierarchy of non-overlapping primitive ranges)를 사용하여 범위 토큰 및 상기 룰 프리픽스를 생성함으로써, 최장 매칭 프리픽스 검색 동작을 적절한 룰 식별자를 찾아내는데 사용할 수 있는 것을 특징으로 하는 처리 룰 검출 방법.
  6. 제1항의 처리 룰 검출 방법을 실행하는 수단에 있어서,
    검색 구조로서 검색 트리를 구비하되,
    상기 검색 트리는, 복수의 룰이 범위 토큰들의 조합에 의해 표현된 기준값 구간들의 특정 교집합(intersection)에 대해 유효할 때에는, 상기 개개의 탐색 동작의 결과, 최상위 랭크 또는 우선 순위(highest rank or priority)를 갖는 단일 룰에 대한 식별자를 주어진 순위로 출력하도록 설계되어 있는 것을 특징으로 하는 처리 룰 검출 방법 실행 수단.
  7. 제1항의 처리 룰 검출 방법을 실행하는 수단에 있어서,
    노드를 포함하는 검색 트리를 구비하되,
    상기 트리 구조는 룰 프리픽스에 근거하고 있으며, 각각의 룰 프리픽스는 룰 식별자를 포함하는 검색 트리에서 노드로의 경로를 나타내며,
    각각의 룰 프리픽스는 룰 식별자를 찾아내기 위해 최장 매칭 프리픽스 검색 동작에 입력으로 될 수도 있는 선택된 범위 토큰들의 적어도 하나의 조합에 대응하거나 또는 이 조합의 프리픽스인 것을 특징으로 하는 처리 룰 검출 방법 실행 수단.
  8. 제1항의 방법을 실행하기 위한 검색 구조(search structure)에 있어서,
    몇 개의 노드를 포함하는 트리 구조를 구비하되,
    상기 노드 중 선택된 노드들은 룰 식별자를 포함하고, 상기 트리 구조를 통해 선택된 노드로의 각 경로는 룰 프리픽스를 나타내며, 따라서 하나의 룰 식별자는 최장 매칭 프리픽스 탐색 동작을 위한 범위 토큰들의 특정 입력 조합을 사용함으로써 결정될 수 있는 것을 특징으로 하는 검색 구조.
  9. 제8항에 있어서,
    상기 검색 구조에서 경로를 결정하기 위한 상기 룰 프리픽스는, 공통 프리픽스를 가짐과 동시에 동일한 룰과도 연관되어 있는 범위 토큰들의 여러 가지 조합에 따라 기억된 룰 식별자로의 동일 경로를 따라갈 수 있도록 선택되는 것을 특징으로 하는 검색 구조.
  10. 제8항에 있어서,
    상기 입력 기준값을 나타내는 복수의 입력 토큰들을 입력으로 복수의 병렬 부분 검색 키(parallel partial search key)로서 사용하되,
    상기 노드는 탐색 절차에서 현재의 단계를 제어하기 위해 상기 개개의 노드에서 상기 복수의 검색 키 중 하나를 선택하기 위한 정보를 포함하고 있는 것을 특징으로 하는 검색 구조.
  11. 복수의 주어진 룰로 이루어진 집합에서 선택된 한 룰에 따라 처리해야될 데이터 항목으로부터 얻은 복수의 기준의 입력값들의 조합에 응답하여 적용가능한 룰을 결정하기 위한 검색 구조에 있어서,
    상기 검색 구조는 노드를 구비하는데, 기억된 룰 식별자를 복수의 주어진 룰 하나에 대해 하나씩 소정의 노드에 포함하고 있으며, 또한 상기 검색 구조는 상기 소정의 노드로의 선택가능한 경로 몇개를 제공하는데, 상기 경로 각각은 복수의 소정의 룰 프리픽스 중 하나를 나타내고,
    각각의 룰 프리픽스는 범위 토큰들의 가능한 조합 중 적어도 한 조합에 대응하거나 또는 그 조합의 프리픽스이며, 상기 범위 토큰들 각각은 상기 기준들 중 하나의 특정의 값 범위를 나타내며,
    탐색 구조에 입력으로서 제공되고 기준 입력값들의 한 조합을 나타내는 범위 토큰들의 각각의 조합에 대해, 하나의 특정 룰 식별자가 최장 매칭 프리픽스 탐색 동작시에 상기 검색 구조에서 선택되도록 되어 있는 것을 특징으로 하는 검색 구조.
  12. 제11항에 있어서,
    상기 검색 구조에서 상기 경로를 결정하기 위한 상기 룰 프리픽스는, 공통 프리픽스를 가지면서 동일한 룰과도 연관된 범위 토큰들의 여러가지 조합에 응답하여 기억된 룰 식별자로의 동일 경로를 따라갈 수 있도록 선택되는 것을 특징으로 하는 검색 구조.
  13. 제11항에 있어서,
    둘다 불균일한 길이를 갖는 2개의 병렬 범위 토큰의 조합을 부분 검색 입력 키(partial search input key)로서 사용하되,
    노드는, 상기 최장 매칭 프리픽스 탐색 절차에서 현재의 경로 선택 단계를 제어하기 위해, 2개의 부분 검색 입력 키 중 하나를 개개의 노드에서 각각 선택하기 위한 정보를 포함하고 있는 것을 특징으로 하는 검색 구조.
  14. 복수의 룰 중에서 데이터 패킷에 적용가능한 룰을 결정하기 위해 데이터 패킷을 분류하는 방법에 있어서,
    상기 룰 각각은 n 차원의 n개의 변수의 값의 기본 범위([Xi];[Yj])의 교집합([Xi, Yj])으로 이루어진 다른 집합에 대해 유효하고, 각 패킷은 상기 n개의 변수 각각의 값을 포함하고 있으며,
    상기 기본 범위 ([Xi];[Yj])에 범위 토큰으로서 비트 벡터(bit vector)를 할당하는 단계 -적어도 하나의 차원에 대한 범위 토큰은 불균일한 길이(non-uniform length)를 가지며, 범위 토큰들 중 몇개는 공통 프리픽스(common prefix)를 갖도록 범위 토큰을 선택하여 기본 범위 교집합 ([Xi, Yj])의 그룹에 걸친 룰의 분포를 반영함-;
    범위 토큰들의 프리픽스-지향 분포(prefix-oriented distribution)를 반영하도록 편성되어 있는 검색 구조로 룰 식별자를 저장하는 단계;
    분류하게 될 각 패킷에 대해, 패킷이 포함하고 있는 변수들의 값을 나타내는 범위 토큰들의 조합을 형성하는 단계; 및
    입력으로서 상기 형성된 범위 토큰의 조합을 사용하여, 상기 검색 구조에서 최장 매칭 프리픽스 검색 동작에 의해 적용가능한 룰의 식별자를 찾아내는 단계
    를 포함하는 것을 특징으로 하는 데이터 패킷 분류 방법.
  15. 데이터 패킷을 이러한 데이터 패킷 각각에 포함되어 있는 서로 다른 기준의 기준 값에 응답하여 룰을 나타내는 카테고리로 분류하고, 각각의 기준값을 하나 포함하고 있는 기준값들의 특정 조합 각각이 상기 카테고리 중 적어도 하나와 연관되어 있는 시스템에서, 데이터 패킷에 대해 적용가능한 카테고리를 검출하는 방법에 있어서,
    먼저 각 기준에 대해 상기 각각의 기준값이 위치하는 값 범위를 나타내는 가변 길이의 룩업 검색 키 조합(variable-length lookup search key combination)을 결정하는 단계; 및
    그 다음에 이 룩업 검색 키 조합을 최장 매칭 프리픽스 선택 동작에서 사용하여, 소정의 노드에 카테고리 식별자를 포함하는 검색 트리 데이터 구조에서 적용가능한 카테고리를 검출하는 단계
    를 포함하는 것을 특징으로 하는 카테고리 검출 방법.
  16. 제15항의 방법을 실행하기 위한 검색 트리 데이터 구조에 있어서,
    검색 프로세스를 각각이 카테고리 식별자를 포함하고 있는 선택된 노드로 인도하는 복수의 경로 중 한 경로를 따라 가도록 진행시키는 정보를 포함하고 있는 복수의 노드 -상기 경로 각각은 룰 프리픽스를 나타냄-; 및
    최장 매칭 프리픽스 검색을 가능토록 하기 위해, 모든 가능한 룩업 검색 키 조합의 집합에 적합하게 되어 있는 룰 프리픽스의 집합
    을 구비하는 것을 특징으로 하는 검색 트리 데이터 구조.
  17. 정보 처리 시스템에서 데이터 항목들을 상기 데이터 항목 각각에 표시된 복수의 기준값들에 응답하여 카테고리별로 분류하는 방법-상기 각 카테고리는 값들의 조합 중 적어도 하나의 특정 조합 또는 상기 기준값들의 범위와 연관되어 있슴-에 있어서,
    각각의 기준에 대해, 분류하게 될 데이터 항목에 표시된 값을 검출하여, 상기 검출된 값이 소정의 기본값 구간(basic value interval) 중 어느 구간에 속하는지를 결정하는 단계;
    소정의 기본값 구간 각각에 대해, 그 기본값 구간을 나타내는 연관 범위 토큰(associated range token)을 얻는 단계 -적어도 하나의 기준의 범위 토큰들은 불균일한 길이를 가짐-; 및
    주어진 데이터 항목에 대해 얻은 모든 범위 토큰들의 조합을 카테고리 식별자를 포함하는 데이터 구조에서 최장 매칭 프리픽스 탐색 동작에 대한 입력으로 사용함으로써, 하나의 특정 카테고리 식별자를 선택하는 단계
    를 포함하는 것을 특징으로 하는 데이터 항목 분류 방법.
  18. 제17항에 있어서,
    계층 구조 체계의 원시 범위(a hierarchical system of primitive ranges)를 사용하여 불균일한 길이를 갖는 범위 토큰을 생성하되,
    원시 범위 각각은 카테고리 각각의 기본값 구간과의 연관 분포에 따라 하나 또는 복수의 기본값 구간과 같게 함으로써, 최장 매칭 프리픽스 탐색 절차에 적합한 범위 토큰의 프리픽스-지향 집합(prefix-oriented set)을 얻게 되는 것을 특징으로 하는 데이터 항목 분류 방법.
KR10-2001-0002057A 2000-01-27 2001-01-13 데이터 패킷 분류 방법 및 장치 KR100441317B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP00810073.1 2000-01-27
EP00810073 2000-01-27

Publications (2)

Publication Number Publication Date
KR20010077983A true KR20010077983A (ko) 2001-08-20
KR100441317B1 KR100441317B1 (ko) 2004-07-23

Family

ID=8174535

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0002057A KR100441317B1 (ko) 2000-01-27 2001-01-13 데이터 패킷 분류 방법 및 장치

Country Status (6)

Country Link
US (1) US20020009076A1 (ko)
JP (1) JP3485262B2 (ko)
KR (1) KR100441317B1 (ko)
AT (1) ATE319249T1 (ko)
CA (1) CA2330222A1 (ko)
DE (1) DE60026229T2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100467746B1 (ko) * 2002-03-26 2005-01-24 한정보통신 주식회사 주소 분할에 의한 다중필드 분류시스템
KR100863863B1 (ko) * 2006-07-06 2008-10-15 아락사라 네트워크 가부시키가이샤 패킷 전송 장치

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996670B1 (en) * 1999-07-08 2011-08-09 Broadcom Corporation Classification engine in a cryptography acceleration chip
GB2377519B (en) * 2001-02-14 2005-06-15 Clearspeed Technology Ltd Lookup engine
US6691124B2 (en) * 2001-04-04 2004-02-10 Cypress Semiconductor Corp. Compact data structures for pipelined message forwarding lookups
US7170891B2 (en) * 2001-08-30 2007-01-30 Messenger Terabit Networks, Inc. High speed data classification system
US6735179B2 (en) * 2002-02-14 2004-05-11 Bivio Networks, Inc. Systems and methods for packet filtering
JP2003324464A (ja) * 2002-04-30 2003-11-14 Fujitsu Ltd データ検索装置及びデータ検索方法
US7523218B1 (en) 2002-04-30 2009-04-21 University Of Florida Research Foundation, Inc. O(log n) dynamic router tables for prefixes and ranges
US7474657B2 (en) 2002-04-30 2009-01-06 University Of Florida Research Foundation, Inc. Partitioning methods for dynamic router tables
US20040018237A1 (en) * 2002-05-31 2004-01-29 Perricone Nicholas V. Topical drug delivery using phosphatidylcholine
US7336660B2 (en) * 2002-05-31 2008-02-26 Cisco Technology, Inc. Method and apparatus for processing packets based on information extracted from the packets and context indications such as but not limited to input interface characteristics
US7203963B1 (en) * 2002-06-13 2007-04-10 Mcafee, Inc. Method and apparatus for adaptively classifying network traffic
US7444318B2 (en) * 2002-07-03 2008-10-28 University Of Florida Research Foundation, Inc. Prefix partitioning methods for dynamic router tables
US7508825B2 (en) * 2002-08-05 2009-03-24 Intel Corporation Data packet classification
US7724740B1 (en) * 2002-08-27 2010-05-25 3Com Corporation Computer system and network interface supporting class of service queues
US7894480B1 (en) * 2002-08-27 2011-02-22 Hewlett-Packard Company Computer system and network interface with hardware based rule checking for embedded firewall
GB2395395B (en) * 2002-11-15 2004-11-10 3Com Corp Classification search scheme and rules engine for network unit
US20040123120A1 (en) * 2002-12-18 2004-06-24 Broadcom Corporation Cryptography accelerator input interface data handling
US7191341B2 (en) * 2002-12-18 2007-03-13 Broadcom Corporation Methods and apparatus for ordering data in a cryptography accelerator
US20040123123A1 (en) * 2002-12-18 2004-06-24 Buer Mark L. Methods and apparatus for accessing security association information in a cryptography accelerator
US7434043B2 (en) 2002-12-18 2008-10-07 Broadcom Corporation Cryptography accelerator data routing unit
US7568110B2 (en) * 2002-12-18 2009-07-28 Broadcom Corporation Cryptography accelerator interface decoupling from cryptography processing cores
US7548848B1 (en) 2003-01-08 2009-06-16 Xambala, Inc. Method and apparatus for semantic processing engine
US7466687B2 (en) * 2003-04-28 2008-12-16 International Business Machines Corporation Packet classification using modified range labels
US7415012B1 (en) * 2003-05-28 2008-08-19 Verizon Corporate Services Group Inc. Systems and methods for high speed packet classification
US7251651B2 (en) * 2003-05-28 2007-07-31 International Business Machines Corporation Packet classification
US7382777B2 (en) * 2003-06-17 2008-06-03 International Business Machines Corporation Method for implementing actions based on packet classification and lookup results
US7840696B2 (en) * 2003-07-25 2010-11-23 Broadcom Corporation Apparatus and method for classifier identification
US7441022B1 (en) * 2004-03-12 2008-10-21 Sun Microsystems, Inc. Resolving conflicts between network service rule sets for network data traffic in a system where rule patterns with longer prefixes match before rule patterns with shorter prefixes
US7478426B2 (en) * 2004-07-20 2009-01-13 International Busines Machines Corporation Multi-field classification dynamic rule updates
US7340570B2 (en) * 2004-08-18 2008-03-04 Intel Corporation Engine for comparing a key with rules having high and low values defining a range
DE602004012291T2 (de) * 2004-11-30 2009-03-19 Alcatel Lucent Ethernet Digital Subscriber Line Access Multiplexer DSLAM mit Durchflusskontrolle
US20060136717A1 (en) 2004-12-20 2006-06-22 Mark Buer System and method for authentication via a proximate device
US8295484B2 (en) 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
US7710988B1 (en) 2005-03-11 2010-05-04 Xambala Corporation Method and system for non-deterministic finite automaton filtering
US8665868B2 (en) * 2005-08-19 2014-03-04 Cpacket Networks, Inc. Apparatus and method for enhancing forwarding and classification of network traffic with prioritized matching and categorization
US20070121632A1 (en) * 2005-11-28 2007-05-31 Arabella Software, Ltd. Method and system for routing an IP packet
WO2007150034A1 (en) * 2006-06-22 2007-12-27 Wisconsin Alumni Research Foundation Method of developing improved packet classification system
US9356818B2 (en) * 2013-10-30 2016-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Method and computing device for packet classification
US11308114B1 (en) * 2013-12-23 2022-04-19 Cazena, Inc. Platform for provisioning a data analytics environment
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9548945B2 (en) 2013-12-27 2017-01-17 Cavium, Inc. Matrix of on-chip routers interconnecting a plurality of processing engines and a method of routing using thereof
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9880844B2 (en) 2013-12-30 2018-01-30 Cavium, Inc. Method and apparatus for parallel and conditional data manipulation in a software-defined network processing engine
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9516145B2 (en) * 2014-06-19 2016-12-06 Cavium, Inc. Method of extracting data from packets and an apparatus thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9628385B2 (en) 2014-06-19 2017-04-18 Cavium, Inc. Method of identifying internal destinations of networks packets and an apparatus thereof
US10050833B2 (en) 2014-06-19 2018-08-14 Cavium, Inc. Method of reducing latency in a flexible parser and an apparatus thereof
US9742694B2 (en) 2014-06-19 2017-08-22 Cavium, Inc. Method of dynamically renumbering ports and an apparatus thereof
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US9961167B2 (en) 2014-06-19 2018-05-01 Cavium, Inc. Method of modifying packets to a generic format for enabling programmable modifications and an apparatus thereof
WO2016125501A1 (ja) * 2015-02-06 2016-08-11 日本電気株式会社 データ処理装置、情報エントリ管理方法及び情報エントリ管理プログラムが記録された記録媒体
US10003676B2 (en) * 2015-02-20 2018-06-19 Cavium, Inc. Method and apparatus for generating parallel lookup requests utilizing a super key
CN111752960B (zh) * 2020-06-28 2023-07-28 北京百度网讯科技有限公司 数据处理方法和装置
US20230283638A1 (en) * 2022-03-01 2023-09-07 Fortinet, Inc. Systems and methods for security policy organization using a dual bitmap

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5652879A (en) * 1993-05-12 1997-07-29 Apple Computer, Inc. Dynamic value mechanism for computer storage container manager enabling access of objects by multiple application programs
US6052683A (en) * 1998-02-24 2000-04-18 Nortel Networks Corporation Address lookup in packet data communication networks
US6141738A (en) * 1998-07-08 2000-10-31 Nortel Networks Corporation Address translation method and system having a forwarding table data structure

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100467746B1 (ko) * 2002-03-26 2005-01-24 한정보통신 주식회사 주소 분할에 의한 다중필드 분류시스템
KR100863863B1 (ko) * 2006-07-06 2008-10-15 아락사라 네트워크 가부시키가이샤 패킷 전송 장치

Also Published As

Publication number Publication date
CA2330222A1 (en) 2001-07-27
DE60026229T2 (de) 2006-12-14
US20020009076A1 (en) 2002-01-24
JP2001274837A (ja) 2001-10-05
KR100441317B1 (ko) 2004-07-23
ATE319249T1 (de) 2006-03-15
DE60026229D1 (de) 2006-04-27
JP3485262B2 (ja) 2004-01-13

Similar Documents

Publication Publication Date Title
KR100441317B1 (ko) 데이터 패킷 분류 방법 및 장치
US6434144B1 (en) Multi-level table lookup
US7099881B2 (en) Method for increasing average storage capacity in a bit-mapped tree-based storage engine by using remappable prefix representations and a run-length encoding scheme that defines multi-length fields to compactly store IP prefixes
US6728732B1 (en) Data structure using a tree bitmap and method for rapid classification of data in a database
EP2040184B1 (en) Database and database processing methods
JP4452183B2 (ja) プログラマブル状態マシンのデータ構造を作成して入力単語連鎖を構文解析する方法、プログラマブル状態マシンのデータ構造を使用して入力単語連鎖に対応する結果として得られた値を検索する方法、ワイヤスピードのディープ・パケット処理を行う方法、ディープ・パケット処理のための装置、チップ埋め込み装置、およびプログラミング・コード命令を含むコンピュータ・プログラム(ディープ・パケット処理のための方法および装置)
US7350020B2 (en) Generating and merging lookup results to apply multiple features
JP3771271B2 (ja) コンパクト0完全木における順序付けられたキーの集まりの記憶と検索のための装置及び方法
US7689485B2 (en) Generating accounting data based on access control list entries
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
CN100385880C (zh) 分组分类装置和使用字段级特里结构的方法
US7249149B1 (en) Tree bitmap data structures and their use in performing lookup operations
CN107800631A (zh) 使用ram中的散列表的tcam规则的有效匹配
US7162481B2 (en) Method for increasing storage capacity in a multi-bit trie-based hardware storage engine by compressing the representation of single-length prefixes
JP2013149277A (ja) 圧縮データの構造を問い合わせる方法
CN106416152B (zh) 一种查找装置、查找配置方法和查找方法
US6484170B2 (en) Generating searchable data entries and applications therefore
EP2288092A1 (en) Method and device for improving scalability of longest prefix match
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
JP2004328433A (ja) 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造
CN112131356B (zh) 一种基于tcam的报文关键字匹配方法和装置
Chang et al. TCAM-based multi-match packet classification using multidimensional rule layering
WO2003027854A1 (en) Technique for updating a content addressable memory
EP1128608B1 (en) Method and means for classifying data packets
EP1175756B1 (en) Longest matching prefix lookup

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20070702

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee