KR20010103588A - 네트워크 프로세서용 완전 정합(fm) 검색 알고리즘 구현 - Google Patents

네트워크 프로세서용 완전 정합(fm) 검색 알고리즘 구현 Download PDF

Info

Publication number
KR20010103588A
KR20010103588A KR1020010015402A KR20010015402A KR20010103588A KR 20010103588 A KR20010103588 A KR 20010103588A KR 1020010015402 A KR1020010015402 A KR 1020010015402A KR 20010015402 A KR20010015402 A KR 20010015402A KR 20010103588 A KR20010103588 A KR 20010103588A
Authority
KR
South Korea
Prior art keywords
leaf
search
key
tree
pattern
Prior art date
Application number
KR1020010015402A
Other languages
English (en)
Other versions
KR100477391B1 (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 KR20010103588A publication Critical patent/KR20010103588A/ko
Application granted granted Critical
Publication of KR100477391B1 publication Critical patent/KR100477391B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99935Query augmenting and refining, e.g. inexact access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

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

Abstract

검색 트리의 리프 내에 저장된 패턴과 검색 패턴간의 완전 정합(full match)을 찾아내기 위한 신규한 데이타 구조, 방법 및 장치가 제공된다. 키(key)가 입력이 되고, 이 키 상에 해쉬 함수가 수행된다. 직접 테이블(DT)가 액세스되고, 리프(leaf)에 도달할 때까지 패턴 검색 제어 블럭(Pattern Search Control Block; PSCB)를 통해 트리 보행이 이루어진다. 검색 메카니즘은 한 세트의 데이타 구조를 이용하는데, 이 데이타 구조는, 수개의 레지스터 및 통상의 메모리 내에 위치하며 비교적 단순한 하드웨어 매크로에 의해 조작될 수 있는 패트리샤 트리 구조(Patricia Tree Structure)를 구축하는데 이용된다. 검색에 필요한 키와 대응하는 정보 모두는 패트리샤 트리 구조에 저장된다. 해쉬 함수(hash function)는 키의 비트들로부터 해쉬키의 비트들로의 n->n 매핑을 제공한다. 해쉬 키 및 이에 관련된 정보를 트리 내에 저장하는데 이용되는 데이타 구조는 리프라 불린다. 각각의 리프는 입력키와 정확히 정합되는 하나의 키에 대응한다. 리프는 키뿐만 아니라 추가적인 정보도 저장한다. 리프의 길이는 키의 길이처럼 프로그램가능하다. 리프는 랜덤 액세스 메모리에 저장되며 하나의 메모리 엔트리로서 구현된다. 만일 키가 직접 테이블 내에 위치한다면 직접 리프(direct leaf)라 불린다.

Description

네트워크 프로세서용 완전 정합(FM) 검색 알고리즘 구현{FULL MATCH(FM) SEARCH ALGORITHM IMPLEMENTATION FOR A NETWORK PROCESSOR}
본 출원은, 1999년 8월 27일 출원되어 계류중에 있으며 동일인에 양도된 일련번호 09/384,691호인 "Network Processor Processing Complex and Methods"; 일련번호(attorney docket RAL-1999-0140)인 "Longest Prefix Match(LPM) Algorithm Implementation for a Network Processor"; 및 일련번호(attorney docket RAL-1999-0141)인 "Software Management Tree Implementation for a Network Processor"와 공통된 내용을 다루고 있다. 각각의 계류중인 특허 출원은 본 명세서에서 참고용으로 인용하는 것이다.
본 발명은 일반적으로 패턴 정합 알고리즘(pattern matching algorithm)에 관한 것으로, 보다 구체적으로는, 네트워크 프로세서에서 구현될 수 있는 완전 정합 검색 알고리즘(full matching search algorithm)에 관한 것이다.
보다 더 복잡한 태스크를 매체 속도(media speed)로 지원할 수 있는 하드웨어 통합형 처리에 대한 요구로 인해 네트워크 프로세서가 창출되었다. 네트워크 프로세서는, 세트로된 프로그래머블 프로토콜 프로세서(protocol processor)와 보완적인 시스템 코프로세서(system coprocessor)를 통해 기능적 융통성과 더불어 와이어속도 프레임 처리 및 포워딩 능력을 제공한다. 마이크로프로세서가 오늘날의 개인용 컴퓨터에서 기본적인 요소인 것처럼, 네트워크 프로세서들은 네트워크에서 기본적인 구축 블럭(building block)이 되어 가고 있다. 네트워크 프로세서들은 다수의 데이타 스트림의 실시간 처리와, 향상된 보안능력과, IP 패킷의 처리와 포워딩 능력을 제공한다. 또한, 이들은 병렬 분산 처리 및 파이프라인 처리 설계와같은 진보된 아키텍쳐를 통해 속도 개선을 제공한다. 이들 능력은 효율적인 검색 엔진과 향상된 데이타 처리 능력을 가능케하며, 복잡한 태스크의 신속한 실행을 제공한다. 네트워크 프로세서들의 프로그램가능한 특징(programmable feature)은, 네트워크 제품 개발자들이 새로운 ASIC을 요구하지 않고도 새로운 프로토콜과 기술을 구현할 수 있도록 해준다.
네트워크 프로세서들은, 인터넷 또는 기업 네트워크 제공자들을 위한 상호접속 솔루션의 개발을 위해 고도로 주문제작가능하고 규모조절가능한(scalable) 기술을 제공한다. 네트워크 프로세서는, 저급의 단독형 장치(low-end standalone device)로부터 대규모 멀티랙 솔루션(large multirack solution)에 이르기까지 다양한 범위의 솔루션에 대한 기초를 제공한다. 이러한 규모조절가능한 특성은, 고성능의 비차단 패킷 라우팅 스위치 기술(non-blocking packet routing switch technology) 및 다른 인더스트리의 스위치 기술에 적용될 수 있는 IBM사의 DASL(Data Aligned Serial Link)와 같은 전용의 인터페이스를 이용하여 달성된다.
프로그래머블 통신 집적 회로로서, 네트워크 프로세서는 대단히 효율적인 패킷 분류, 프레임당 다중-테이블 참조, 패킷 수정, 큐/정책 관리, 및 다른 패킷 처리 능력을 제공한다. 고용량, 및 임의의 프로토콜 층에서의 프레임 내용에 기초하여 프레임들을 스위치시키는 매체 효과(media weight)를 요구하는 고객의 요구에 부응하기 위해, 네트워크 프로세서는 하나의 장치상에 스위칭 엔진, 검색 엔진, 프레임 프로세서 및 이더넷 MAC을 통합하고 있다.
하드웨어 가속기들은 프레임 포워딩, 프레임 필터링, 및 프레임 변경을 수행한다. 복합 범위 및 동작 내역(action specification)와 더불어 수백개의 규칙을 수행할 수 있는 네트워크 프로세서의 능력은, 필터링 능력에 대한 새로운 벤치마크가 되고 있으며, 이러한 능력이야말로 고용량 서버 팜 응용(high capacity server farm application)에 대해 네트워크 프로세서-기반의 시스템만이 적합한 솔루션이 될 수 있게끔 하는 이유이다.
네트워크 프로세서를 이용하여 개발된 전형적인 시스템은, 각각의 프로그래머블 네트워크 프로세서가 동시에 태스크를 실행하는 분산형 소프트웨어 모델(distributed software model)을 이용한다. 일부 기능은 제어 포인트(Control Point, CP) 프로세서에서 실행되며, 이 프로세서는 네트워크 프로세서에 대해 내부적 또는 외부적일 수 있다. CP는 제2층 및 제3층 라우팅 프로토콜과, 제4층 및 제5층 네트워크 응용 및 시스템 관리를 지원한다. 와이어속도 포워딩 및 필터링(wirespeed forwarding and filtering) 기능은 네트워크 프로세서 하드웨어 및 상주하는 피코코드(picocode)의 조합에 의해 수행된다.
다수의 상호접속된 노드들을 포함하는 통신 네트워크에서, 데이타는 하나의 노드로부터 다른 노드나 네트워크로 전송될 수 있다. 라우터(router)라 불리는 특수화된 노드들은 데이타를 그들의 목적지로 포워딩하는 역할을 책임진다. 통신 네트워크를 통해 전송된 소정의 데이타는 일반적으로 헤더(header)의 일부로서 목적지 어드레스에 대한 정보를 포함한다. 각각의 라우터는, 이 정보 또는 적어도 그 일부를 내부적으로 저장된 어드레스 목록과 비교한다. 저장된 어드레스와 목적지 어드레스간에 정합이 존재한다면, 라우터는 목적지 노드로 인도하는 경로를 설정한다. 네트워크 크기와 구조에 따라, 데이타는 그들의 목적지로 바로 보내지거나 또 다른 중간 라우터로 보내진다. 국제 표준화 기구(ISO)가 공표한 라우팅 표준에 따르면, 라우터는 부분적 어드레스(partial address)에 대한 라우팅 정보를 저장한다. 그 다음, 라우터는 자신이 보유한 데이타베이스내에서 가장 잘 정합되는 부분 어드레스로 패킷을 전송한다. ISO 표준은, 주어진 개수의 자릿수 또는 주어진 헤더 길이를 이용하여 노드의 계층적 구조가 만들어질 수 있도록 허용한다. 메인 라우터는 어드레스의 처음 부분에 의해 어드레싱되며, 서브라우터들은 중간 부분에 의해, 최종 목적지는 어드레스의 마지막 자릿수에 의해 어드레싱된다. 따라서, 라우터는 계층구조중 데이타가 전달될 레벨에 할당된 자릿수들을 판독하는 것으로 충분하다.
수신 패킷의 라우팅은 수반된 어드레스 스트링에 기초한다. 어드레스 스트링은 데이타베이스 내에서 검색키로서 이용된다. 데이타베이스는, 패킷의 전달 경로상에서 어느 라우터가 다음 라우터인지와 같은 다른 관련된 정보와 함께 어드레스 스트링을 저장하고 있다. 데이타베이스는 라우팅 테이블(routing table)이라 불리며, 현재의 라우터와 다음 라우터간의 링크는 패킷의 진행과정에서 다음번 홉(hop)이라 불린다. 라우팅 테이블 검색 과정은 테이블 구조뿐만 아니라 어드레스 구조에 따라 다르다. 예를 들어, 비계층 구조(nonhierarchal structure)를 가지며 8비트 이하의 크기를 갖는 검색키는, 일련의 어드레스 엔트리로서 조직된 라우팅 테이블에서 가장 효율적으로 발견될 수 있다. 검색키는 올바른 엔트리를 찾기 위한 테이블 내의 인덱스(index)로서 이용될 것이다. 예를 들어, 32비트와 같은 큰 크기의 검색키의 경우, 대응하는 라우팅 테이블은 10000개 이상의 엔트리를 가질 것이다. 인덱스에 의해 바로 검색되는 간단한 테이블로서 데이타를 조직화하면, 대부분의 테이블이 비게 될 것이므로 많은 양의 메모리를 낭비하게 될 것이다.
종래의 라우터는 검색 과정을 몇개의 단계로 나누고 있다. 제1 단계는, 목적지 호스트 컴퓨터에 라우터가 직접 접속되어 있는지를 판별하는 것이다. 이 경우, 메시지는 목적지로부터 1 홉(hop)이며 그 방향으로 라우팅되어야 한다. 목적지 컴퓨터가 라우터에 직접 접속되어 있지 않으면, 제2 단계는 목적지 네트워크의 형태학적 방향(topological direction)을 판별하는 것이다. 형태학적 배치로부터 방향이 결정되면, 메시지는 이 방향으로 라우팅된다. 그렇지 않다면, 제3 단계는 디폴트 링크를 따라 메시지를 라우팅하는 것이다.
전형적으로, 제1 단계는 라우터에 직접 접속된 호스트 컴퓨터의 32비트 어드레스를 포함하는 테이블을 통한 선형 검색을 이용하여 수행된다. 로컬 형태를 고려하여, 어드레스 테이블 내의 각각의 엔트리는 어드레싱된 컴퓨터로 직접 이어지는 대응하는 출력 인터페이스에 접속된다. 라우터에 의해 목적지 어드레스가 수신되면, 전체 32비트가 테이블 내의 목적지 어드레스의 각각과 비교된다. 정합이 발견되면, 메시지는 명시된 라우터 인터페이스를 경유하여 대응하는 목적지에 직접 전송된다.
제2 단계, 즉, 목적지 네트워크의 방향을 판별하는 단계에서는, 대개 테이블의 선형 검색을 이용하지는 않는데, 이는 네트워크 어드레스의 개수로 인해 테이블의 관리와 이용이 어려워지기 때문이다. 종래 기술에서, 어드레스 스트링이, 네트워크 어드레스와 서브넷 어드레스와 호스트 식별자로 이루어진 3단계 계층에 부합한다면, 라우터는 해싱(hashing), 패트리샤-트리 검색(Patricia-tree searching), 및 다중-레벨 검색(multilevel searching)과 같은 몇개의 공지된 기술들 중 하나를 이용하여 판별을 수행하였다. 해싱에서, 해쉬 함수(hash function)는 어드레스의 네트워크 부분을 감소시켜, 작고 관리가능한 인덱스를 생성한다. 해쉬 인덱스(hash index)는, 해쉬 테이블의 인덱싱 및 정합하는 해쉬 엔트리의 검색에 이용된다. 해쉬 테이블의 각각의 해쉬 엔트리는, 대응하는 네트워크의 형태학적 방향을 가리키는 출력 인터페이스의 어드레스에 대응한다. 해쉬 네트워크부와 해쉬 엔트리 사이에 정합이 발생하면, 메시지는 대응하는 인터페이스와 목적지 어드레스를 향해 방향전환된다.
해싱은 대규모의 관리불가능한 필드를 작고 관리가능한 인덱스로 축소시킨다. 그러나, 이 과정에서 2개 이상의 필드가 동일한 해쉬 인덱스를 가지는 경우가 있다. 이러한 경우를 충돌이라 부르는데, 이는 이들 필드들은 해쉬 테이블에서 동일한 위치에 저장되기 때문이다. 충돌시에 엔트리를 구분하기 위해서 추가적인 검색이 필요하다. 따라서, 충돌은 해쉬 검색에서 얻어지는 효율성을 저하시키고, 모든 허용가능한 어드레스들이 하나의 인덱스로 집약되는 최악의 경우에는, 해쉬는 검색 절차로서는 무용한 것이 되고 만다.
패트리샤-트리 검색은 해쉬 방법에서 발생하는 충돌이 없다. 이 검색 방법은 모든 어드레스 스트링, 및 관련된 라우터 정보와 같은 부수적인 정보가 2진 트리에 저장될 것을 요구한다. 어드레스 스트링 내의 최상위 비트 위치로부터 시작하여, 검색 절차는 어드레스를 트리 노드들과 비트별로 비교한다. 정합된 비트 값은 좌측 또는 우측 자노드(child node)로 검색이 이루어지도록 하며, 이 절차는 어드레스의 다음 비트에 대해서도 반복된다. 검색 시간은 저장된 최장 어드레스 스트링의 크기에 비례한다. 패트리샤-트리 검색에서, 평균 검색 시간과 최악의 검색 시간간의 차이는 그리 크지 않다. 또한, 라우팅 테이블은 상당히 효율적으로 조직화되며 해쉬 방법에서의 라우팅 테이블보다 작은 메모리를 요구한다. 패트리샤-트리 검색은 최악의 검색을 해쉬 방법보다 더 잘 다루지만, 대부분, 정합을 발견하기까지 상당히 긴 시간을 요구한다. 따라서, 많은 종래의 라우터들은 해싱과 패트리샤-트리 검색의 조합을 이용한다. 이 조합은 멀티-레벨 검색이라 불린다.
멀티-레벨 검색은 해쉬와 패트리샤-트리 검색을 결합한다. 캐쉬는 가장 최근에 가장 흔하게 라우팅된 네트워크 어드레스의 서브세트를 포함하는 해쉬 테이블을 저장한다. 메시지가 수신될 때, 목적지 어드레스는 테이블 상에 해싱된다. 목적지 어드레스가 소정 시간 내에 발견되지 않으면, 어드레스는 패트리샤-트리 검색 엔진으로 보내지고, 패트리샤-트리 검색 엔진은 이 어드레스가 저장되어 있다면 반드시 발견할 것이다.
종래 기술에서, 고정 정합 트리(fixed match trees), 최장 프레픽스 정합 트리(longest prefix match tree), 및 소프트웨어 관리형 트리(software managed tree)를 포함한 다수의 공지된 트리 검색 알고리즘이 있다. 고정 정합 트리는 제2층 이더넷 MAC과 같은 정확한 정합(exact match)을 요구하는 고정 길이 패턴에 대해 이용된다. 최장 프레픽스 정합 트리는 IP 서브넷 포워딩과 같은 부분적 정합만을 요구하는 가변 길이 패턴에 대해 이용된다. 소프트웨어 관리형 트리는 필터 규칙과 같은 범위(range) 또는 비트 마스크(bit mask)로서 정의된 패턴들에 이용된다. 일반적으로, 참조(look up)는 트리 검색 엔진(tree search engine, TSE)의 도움으로 수행된다.
본 발명의 목적은 패트리샤 트리(Patricia tree)에 대한 완전 정합 트리 검색 알고리즘의 하드웨어적 구현을 제공하는 것이다. 이러한 알고리즘의 목적에 부합되도록 메모리가 어떻게 설정되고, 하드웨어가 이들 구조를 어떻게 처리하는지가 설명된다.
본 발명의 또 다른 목적은 이전 포인터에 대한 저장을 요하지 않고 테스트할 다음 비트 또는 비트 그룹과 더불어 포워드 포인터만을 이용함으로써 노드에 대한 저장 공간을 감소시켜주는 검색 메카니즘을 제공하는 것이다.
주된 개념은, 키가 입력이 되고, 키상에 해쉬 함수가 수행되고, 직접 테이블(DT)가 액세스되고, 패턴 검색 제어 블럭(PSCB)을 통해 트리 보행(tree walk)이 이루어지고, 리프와 더불어 종결한다.
해결되는 문제점은 몇개의 레지스터와 통상의 메모리에 위치하며 비교적 간단한 하드웨어 매크로에 의해 조작될 수 있는 패트리샤 트리 구조를 구축하는데 이용될 수 있는 한 세트의 데이타 구조의 설계이다. 패트리샤 트리에서, 검색에 필요한 키(key)와 대응하는 정보 양쪽 모두 저장된다.
키는 검색되어 정합되는 정보이다. 초기에, 키는 레지스터에 위치하며 해싱된다. 그 결과는 해쉬 키(hash key)이며 실제적인 검색은 해쉬 키상에서 발생한다. 해쉬 함수는 널 해쉬(null hash)가 될 수도 있으며, 그 경우에 해쉬 키는 키와 완전히 동일할 것이다. 해쉬 함수는 키의 비트들을 해쉬 키의 비트들로 n->n 매핑시켜준다.
해쉬 키와 트리 내의 관련된 정보를 저장하는데 이용되는 데이타 구조는 리프(leaf)라 불린다. 리프의 검색이 본 알고리즘의 목적이다. 각각의 리프는 입력키와 정확히 정합하는 하나의 키에 대응한다. 이 구현에서, 리프는 키를 포함하고, 저장될 추가 정보가 여기에 추가된다. 키의 길이가 프로그램가능한 것과 마찬가지로 리프의 길이도 프로그램가능하다. 리프는 랜덤 액세스 메모리에 저장되며 하나의 메모리 엔트리로서 구현된다. 키가 직접 테이블(DT) 내에 위치하는 경우에는 직접 리프라 불린다.
도 1은 본 발명의 양호한 실시예에 따른 네트워크 프로세서에 대한 예시적 아키텍쳐.
도 2는 본 발명의 양호한 실시예에 따른 임베딩된 프로세서 복합체 대한 예시적 실시예.
도 3은 본 발명의 양호한 실시예에 따른 예시적인 프로토콜 프로세서의 구조.
도 4는 본 발명의 양호한 실시예에 따른 예시적인 인입 및 배출 프레임 흐름.
도 5는 본 발명의 양호한 실시예에 따른 완전 정합(full match) 검색 알고리즘을 위한 트리 데이타 구조.
도 6은 본 발명의 양호한 실시예에 따른 직접 테이블을 예시적 데이타 구조에 대해 이용한 경우의 효과를 도시한 도면.
도 7은 본 발명의 양호한 실시예에 따라 직접 리프를 인에이블한 경우의 예시적인 데이타 구조에 미치는 효과를 도시한 도면.
도 8은 본 발명의 양호한 실시예에 따른 소프트웨어 관리 트리(SMT)의 입력키 및 리프 패턴의 필드들 예.
도 9는 본 발명의 양호한 실시예에 따른 비교 정의 테이블 엔트리에 대한 예시적 포멧.
도 10은 본 발명의 양호한 실시예에 따른 소프트웨어 관리 트리 검색 알고리즘의 프로세스 논리.
도 11은 본 발명의 양호한 실시예에 따른 예시적인 참조 정의 테이블(lookup definition table)의 내부 구조.
도 12는 PSCB 레지스터의 내부 포멧.
도 13은 SMT에 대한 고정 리프 포멧.
도 14는 본 발명의 양호한 실시예에 따른 트리 검색 엔진에 대한 예시적인 아키텍쳐.
<도면의 주요 부분에 대한 부호의 설명>
10 : 네트워크 프로세서
12 : 임베딩된 프로세서 복합체
22 : 물리적 MAC 멀티플렉서
24 : 물리적 MAC 멀티플렉서
42 : 인입 데이타 저장부
44 : 배출 데이타 저장부
본 발명이 구현된 네트워크 프로세서의 관점에서 본 발명이 기술될 것이다. 네트워크 프로세서(10)은 단일 칩상에 구현된 프로그래머블 스위칭 및 라우팅 시스템으로, 그 아키텍쳐가 도 1에 도시되어 있다. 네트워크 프로세서(10)은, 스위치 인터페이스에 부착시키기 위한 DASL(Data Aligned Serial Links)뿐만 아니라 10/100 이더넷, 기가비트 이더넷, 및 POS(Packet Over SONNET)에 대한 매체 인터페이스(media interface)를 제공한다. 내부 하드웨어 가속기들은 성능과 효율을 향상시킨다. 임베딩된 프로세서 복합체(EPC, 123)는 프레임 처리, 구성 및 관리지원을 위해 프로토콜 프로세서(protocol processor)와 내부 제어 포인트프로세서(internal control point processor)를 포함한다.
N개까지의 병렬 프로토콜 프로세서가 이용가능하다. 16개 프로토콜 프로세서로 된 실시예의 경우, 16,384 워드(words)의 내부 피코코드(picocode) 명령어 저장과, 32,768개의 외부 피코코드 명령어 저장이 이용가능하여, 2,128 MIPS(million instructions per second)의 총 처리 능력을 제공한다. 또한, 각각의 프로토콜 프로세서는, 고속 패턴 검색, 데이타 조작, 내부 칩 관리 기능, 프레임 해석, 및 데이타 프리페치 지원을 제공하는 M개의 하드웨어 가속기 코프로세서를 액세스한다. 양호한 실시예에서, 내부 및 외부 메모리, 즉, 즉석 액세스(immediate access)용의 32K 내부 SRAM과(28)과, 빠른 액세스(fast access)용의 외부 제로 버스 전환(Zero Bus Turnaround, ZBT) SRAM(30)과, 대규모 용량 요건을 위한 DDR DRAM(32)가 프로토콜 프로세서의 제어 저장용으로 제공된다.
선행처리 알고리즘과 연계하여 임베딩된 하드웨어 가속기를 이용하고, 부착된 제어 포인트 프로세서(34) 상에서 동작하면서, 네트워크 프로세서(10)은 복합 범위, 우선순위, 및 와이어속도에서의 동작 내역과 더불어 1백개 이상의 필터링 규칙을 통해 프레임들을 처리할 수 있다. 이로 인해, 네트워크 프로세서-기반의 시스템이 게이트웨이, 서버 팜 응용, 및 혼합 트래픽의 처리에 관련된 필터링에 적합하게 된다.
네트워크 관리자가 일관성 있고 사용자-친근형 인터페이스에 필터 규칙을 입력할 때 제어 포인트 소프트웨어는 자동 논리 검사를 제공한다. 안정성 이론에 기초한 신규한 흐름 제어를 이용하여, 네트워크 프로세서(10)은, 흔히 이용되는 임의조기 폐기 방법(random early discard method)보다, 높은 비율의 임시적인 과트래픽(oversubscription)을 TCP 붕괴없이 잘 견딘다. 네트워크 프로세서(10)은 자동 대역폭 할당에 의해 차별화된 서비스를 제공하며, 네트워크 관리자가 순시적 통계 또는 추정된 트래픽 통계에 기초한 수십개의 임계치 설정이 주는 영향을 예측해야 하는 부담을 경감시켜준다.
하나의 네트워크 프로세서(10)은, 40개까지의 패스트 이더넷 또는 4개까지의 기가비트 이더넷 포트에 대해 매체 속도 스위칭을 제공한다. 또한 OC-48c, OC-48, 4개의 OC-12 또는 16개의 OC-3 포트를 지원하도록 구성될 수도 있다. 규모조절가능성(scalability)을 위해, 포트 밀도가 배가되도록 2개의 네트워크 프로세서를 상호접속시키기 위해, 또는 64개까지의 네트워크 프로세서를 갖는 스위칭 솔루션을 생성하도록 스위치 구조(switch fabric)를 부착시키기 위해, 2개의 3.5Gbps 직렬 DASL 링크가 사용될 수 있다. 시스템 가용성을 증가시키기 위해, 2개의 DASL 링크, 즉, 주링크와 부링크가 잉여 스위치 구조에 접속을 제공할 수도 있다.
네트워크 프로세서(10)의 한 실시예는 도 1에 도시된 바와 같이 하기와 같은 주요 부분을 포함한다:
1. 16개까지의 프로그래머블 프로세서와 더불어 코프로세서를 포함하는 임베딩된 프로세서 복합체(EPC, 12);
2. 이더넷 물리층 장치로부터 스위치 구조까지 도달하는 프레임들을 위한 인큐-디큐-스케쥴링 논리부(Enqueue-Dequeue-Scheduling logic, 14)(EDS-인입);
3. 스위치 구조로부터 이더넷 물리층까지 도달하는 프레임들을 위한 인큐-디큐-스케쥴링 논리부(Enqueue-Dequeue-Scheduling logic, 16)(EDS-배출);
4. 다른 네트워크 또는 프로세서 또는 중간 스위치로의 상호접속을 위한, 인입 스위치 인터페이스(스위치 인입, 18) 및 배출 스위치 인터페이스(스위치 배출, 20) DASL 링크;
5. 이더넷 또는 POS 물리층 장치(26)로부터의 프레임을 수신하는 물리적 MAC 멀티플렉서(22)(PMM-인입)와, 이더넷 또는 POS 물리층 장치(26)로 프레임을 전송하는 물리 MAC 멀티플렉서(24)
도 2는 임베딩된 프로세서 복합체에 대한 실시예를 도시하고 있다. 이것은 2128 MIPS의 처리 능력을 제공하는 16개의 프로토콜 프로세서를 포함한다. 각각의 프로토콜 프로세서(40)은 3단 파이프라인(페치, 디코드, 실행), 범용 레지스터, 특수 목적 레지스터, 8개의 명령어 캐쉬, 전용 산술 논리 장치(ALU), 및 133MHz로 동작하는 코프로세서들을 포함한다. 프로토콜 프로세서들 중 2개는 전용화되어 있는데, 하나는 가이드된 프레임(guided frame)들을 처리하기 위한 것(가이드된 프레임 핸들러)이고, 나머지 하나는 제어 메모리 내에 참조 데이타(look-up data)를 구축하기 위한 것(일반 트리 핸들러)이다.
도 3은 프로토콜 프로세서의 한 실시예를 도시하고 있다. 프로그래머블 프로세서들(40)의 각각과 관련된 코프로세서들은 다음과 같은 기능을 제공한다:
1. 데이타 저장 코프로세서(64)는 프레임 버퍼 메모리(42, 44)와 인터페이싱하여 (인입 및 배출 방향) 직접 메모리 액세스(DMA)를 제공한다.
2. 체크섬 코프로세서(62)는 헤더 체크섬(header checksum)을 계산한다.
3. 인큐 코프로세서(enqueue coprocessor, 66)은 키 프레임 파라미터들을 포함하는 256-비트 작동 레지스터로의 액세스를 제어한다. 이 코프로세서들은, 프레임들을 스위치 및 타겟 포트 큐로 큐잉(enqueue)하기 위해 완료 유닛(completion unit, 46)과 인터페이싱한다.
4. 인터페이스 코프로세서는 모든 프로토콜 프로세서들에게 디버그 및 통계 수집을 위한 내부 레지스터, 카운터 및 메모리로의 액세스를 제공한다.
5. 스트링 복사 코프로세서는 EPC 내에서의 효율적인 데이타 이동을 가능케한다.
6. 카운터 코프로세서는 프로토콜 프로세서(40)에 대한 카운터 갱신을 관리한다.
7. 정책 코프로세서는 흐름 제어 정보를 검사하고 미리할당된 대역폭에 부합하는지의 여부를 확인한다.
하드웨어 가속기(48)은 프레임 포워딩, 프레임 필터링, 프레임 변경, 및 트리 검색을 수행한다. 네트워크 프로세서에 통합된 다른 특징들로는 필터 규칙 처리, 해시 기능, 및 흐름 제어가 있다.
프로토콜 프로세서(40)은 복합 범위 및 동작 내역과 더불어 1백개 이상의 프레임 필터 규칙을 수행할 수 있다. 필터링은 네트워크 보안에 필수적이며, 네트워크 프로세서 하드웨어 보조물(48)은 이들 복잡한 규칙 세트의 와이어 속도 수행을 제공한다. 필터 규칙은 프레임을 허용 또는 거부하거나, 인터넷 프로토콜(IP) 헤더 정보에 기초하여 서비스 품질(QOS, Quality Of Service)을 할당한다. 규칙을선행처리하기 위한 제어 포인트 소프트웨어는 자동적으로 논리 오류를 교정한다. 논리적으로 올바른 규칙 세트가 입력된 후에, 패킷 헤더 정보로부터 키들이 형성되고 네트워크 프로세서의 소프트웨어 관리형 트리를 이용하여 와이어속도로 테스트된다.
지오메트릭 해쉬 함수(geometric hash function)는 이상적인 랜덤 해쉬를 능가하는 성능을 위해 IP 헤더 내의 통계적 정보를 이용한다. 결과적으로, 저충돌률로 인해 추가적인 검색없이도 완전 정합 테이블(full match table) 내의 고속 참조를 가능하게 된다.
프로토콜 프로세서 실행과 병렬로 동작하면서, 트리 검색 엔진(70)은 (메모리 판독, 기록 또는 판독-기록을 포함하는) 트리 검색 명령어, 메모리 범위 검사, 및 불법 메모리 액세스 통지를 수행한다. 도 14는 트리 검색 엔진의 한 실시예를 도시한다.
네트워크 프로세서(10) 내에서 2개 시스템 제어 옵션이 이용가능하다. 내부 프로세서(34)는 시스템에 대해 제어 포인트(CP) 프로세서의 기능을 할 수 있다. 또는 대안으로, 초기화 및 구성 설정을 위해 4개의 이더넷 매크로들 중 하나에 외부 프로세서가 접속될 수 있다. CP 프로세서(34)는 가이드된 프레임(guided frame)이라 불리는 특수한 이더넷 프레임들을 구축함으로써 네트워크 프로세서들 내의 다른 프로세서들과 통신한다. 가이드된 프레임들은 DASL 링크를 가로질러 다른 장치로 포워딩되어, 하나의 이더넷 포트에 부착된 하나의 CP 프로세서가 서브시스템 내에 포함된 모든 네트워크 프로세서 장치들과 통신하며 이들을 제어할 수 있도록 해준다. 각각의 네트워크 프로세서의 내부 프로세서(34)는 분리된 32-비트 PCI 버스를 이용하여 통신할 수 있다.
네트워크 프로세서(10)은 대개 서브시스템 보드상에 존재하며 프로토콜층(즉, 제2, 3, 4층 및 그 상위층) 프레임 처리를 제공한다. CP 서브시스템 내의 CP 프로세서(34)상에서 실행되는 소프트웨어는 관리기능 및 경로 발견 기능을 제공한다. CP 코드, 프로토콜 프로세서상에서 실행되는 피코코드, 및 가이드된 프레임 핸들러상에서 실행되는 피코코드는 이 시스템의 초기화, 포워딩 경로의 유지, 시스템 관리를 가능하게 해준다. 분산 시스템으로서, CP 및 각각의 네트워크 서브시스템은, 병렬로 동작하며 효율 및 성능 향상을 위해 가이드된 프레임들을 이용하여 통신하는 복수개의 프로세서들을 포함한다.
데이타 프레임들은 PMM(22)에 의해 매체로부터 수신되어 데이타 저장 버퍼(42)로 전송된다. PMM은 수신 과정 동안에 CRC 검사와 프레임 유효성 검사를 수행한다. 디스페처(50)은 64바이트까지의 프레임 정보를 프레임 참조를 위해 가용 프로토콜 프로세서(40)으로 전송한다. 분류기 하드웨어 보조물(48)은 프레임 포멧을 식별하기 위해 제어 데이타를 제공한다. 프로토콜 프로세서(40)은 고정 정합 트리, 최장 프레픽스 정합 트리, 소프트웨어 관리형 트리를 포함한 트리 검색 알고리즘들 중 적용시킬 알고리즘을 결정하기 위해 제어 데이타를 이용한다.
참조는 트리 검색 엔진(TSE, 70)의 도움으로 수행된다. TSE(70)은 제어 메모리(72) 액세스를 수행하여 프로토콜 프로세서가 실행을 계속할 수 있도록 해준다. 제어 메모리(72)는 모든 테이블, 카운터, 및 피코코드가 필요로하는 다른 데이타를 저장한다. 효율을 위해, 제어 메모리 중재기(52)는, 프로토콜 프로세서(40)과 다양한 온-칩 및 오프-칩 제어 메모리 옵션(54)들 사이에서 메모리 싸이클을 할당함으로써 제어 메모리 옵션들을 관리한다.
프로토콜 프로세서(40)은 데이타 저장 동작을 위해 1차 데이타 버퍼, 스크래치 패드 데이타 버퍼 및 제어 레지스터(집합적으로, 72)를 포함한다. 정합이 발생하면, VLAN 헤더 삽입 또는 오버레이와 같은 인입 프레임 변경이 적용된다. 이들 변경은 EPC(12)에 의해 수행되지 않는다. 대신에, 인입 스위치 인터페이스 하드웨어(18)은 하드웨어 플래그가 세팅되어 있다면 변경을 수행한다. 다른 프레임 변경들은, 피코코드 및 데이타 저장 코프로세서(64)에 의해 인입 데이타 저장부(42)에 보관된 프레임 내용을 수정함으로써 수행될 수 있다.
제어 데이타는 수집되어, 스위치 구조에 프레임을 전송하기 이전에 스위치 헤더와 프레임 헤더를 구축하는데 이용된다. 제어 데이타는 배출 네트워크 프로세서용 정보뿐만 아니라 프레임 목적지와 같은 스위치 정보를 포함하여, 목적지 포트의 프레임 참조, 멀티캐스트 또는 유니캐스트 동작, 및 배출 프레임 변경을 촉진한다.
도 4는 예시적인 인입 및 배출 프레임(ingress and egress frame) 흐름을 도시하고 있다. 완료시에, 인큐 코프로세서(enqueue coprocessor, 66)은 프레임을 큐 제어 블럭(QCB, 74)로 큐잉하기 위한 필요한 포멧을 구축하여 이들을 완료 유닛(46)으로 포워딩한다. 완료 유닛(completion unit, 46)은 16개까지의 프로토콜 프로세서로부터 스위치 구조 큐(switch fabric queue, 76)까지의 프레임 순서를보장한다. 스위치 구조 큐로부터의 프레임들은 64바이트 셀로 구획화되고, 이들이 스위치 구조(76)에 의해 전송될 때 스위치 헤더 및 프레임 헤더 바이트들이 삽입된다.
스위치 구조(76)으로부터 수신된 프레임들은, 리어셈블리 제어 블럭(RCB, 80)과 EDS-배출부(44)에 의해 제공된 정보를 이용하여 배출 데이타 저장 버퍼(egress data store buffer, 78)에 놓인다. 프레임의 일부는 프레임 참조를 수행하기 위해 디스페처(50)에 의해 임의의 유휴 프로토콜 프로세서(40)으로 전송된다. 프레임 데이타는 분류기 하드웨어 보조물(48)로부터의 데이타와 더불어 프로토콜 프로세서(40)에 디스페치된다. 분류기 하드웨어 보조물(classifier hardware assist, 48)은, 배출 과정을 위한 시작 명령어 어드레스의 판별을 돕기 위해 인입 네트워크 프로세서에 의해 생성된 프레임 제어 데이타를 이용한다.
배출 트리 검색은 인입 검색을 위해 지원되는 알고리즘과 동일한 알고리즘을 지원한다. 참조는 TSE(70)의 보조에 의해 수행되므로 프로토콜 프로세서(40)은 자유롭게 실행을 계속할 수 있다. 모든 제어 메모리 동작은 제어 메모리 중재기(52)에 의해 관리되며, 이 중재기는 프로세서 복합체들 사이에서 메모리 액세스를 할당한다.
배출 프레임 데이타는 데이타 저장 코프로세서(64)를 통해 액세스된다. 성공적인 참조의 결과는 포워딩 정보를 포함하며, 어떤 경우에는, 프레임 변경 정보를 포함한다. 배출 프레임 변경으로서, VLAN 헤더 삭제, 존속 기간 증가(IPX) 또는 감소(IP), IP 헤더 체크섬 재계산, 이더넷 프레임 CRC 오버레이 및 MAC 목적지어드레스 또는 소스 어드레스 오버레이 또는 삽입이 해당될 수 있다. IP 헤더 체크섬은 체크섬 코프로세서(62)에 의해 준비된다. 임베딩된 프로세서 복합체(12)은 변경을 수행하지는 않고 하드웨어 플래그들을 생성한다. PMM 배출 하드웨어(24)가 변경을 수행한다. 완료시에, 인큐 코프로세서(46)은 EDS 배출 큐(44) 내에 프레임을 큐잉하기 위해 요구되는 포멧을 구축하여 이들을 완료 유닛(46)으로 포워딩하는 이용된다. 완료 유닛(46)은, 16개까지의 프로토콜 프로세서로부터, 배출 이더넷 MAC으로 프레임을 공급하는 EDS 배출 큐(44)까지의 프레임 순서를 보장한다. 완료된 프레임들은 최종적으로 PMM 배출 하드웨어(24)에 의해 이더넷 MAC 또는 POS 인터페이스 및 물리적 포트바깥으로 전송된다.
도 14에 도시된 트리 검색 엔진(TSE, 70)은 정보를 저장 및 검색하기 위해 트리 개념을 이용한다. 삽입 및 삭제 뿐만 아니라, 검색, 즉, 트리-검색은 키에 기초하여 수행된다. 키는 예를 들어 MAC 소스 어드레스, 또는 IP 소스 어드레스 및 IP 목적지 어드레스의 결합물과 같은 비트 패턴이다. 본 발명에서 이용하기 위한 예시적인 트리 데이타 구조(100)이 도 5에 도시되어 있다. 적어도 키(102)를 포함하는 리프(116, 118, 120, 122)라 불리는 제어 블럭 내에 정보가 저장된다[저장된 비트 패턴은 실제로 해싱된 키(106)임]. 리프는 에이징(aging) 정보와 같은 추가 정보나, 타겟 블레이드(target blade) 및 타겟 포트(target port)와 같은 포워딩 정보일 수 있는 사용자 정보를 역시 포함할 수 있다. 리프의 포멧은 피코코드에 의해 정의되며, 오브젝트는 내부 또는 외부 제어 저장부에 위치한다.
트리 검색 알고리즘은 키(102)를 포함하는 입력 파라미터상에서 동작하며,키상에서 해쉬(104)를 수행하고, 직접 테이블(108, DT)를 액세스하며, 패턴 검색 제어 블럭(PSCB, 110, 112, 114)를 통해 트리를 탐색하며, 리프(116, 118, 120, 122)에서 종료한다. 트리 유형에 따라 각각 다른 고유한 검색 알고리즘을 가지며, 이러한 알고리즘에 따라 검색이 이루어지는 규칙은 달라진다. 예를 들어, 고정 정합(FM) 트리의 경우, 데이타 구조는 패트리샤 트리이다. 리프가 발견되면, 이 리프는 입력 키(102)와 정합될 수 있는 유일한 후보이다. "컴페어 앳 엔드(compare at end)" 동작은 입력키(102)와 리프에 저장된 패턴을 비교한다. 이것은 리프가 정말로 입력키(102)와 정합하는지를 확인하는 것이다. 리프가 발견되고 정합이 발생한다면 검색 결과는 성공(OK)이고, 그 외의 모든 경우는 실패(KO)이다.
검색 동작에 대한 입력은 다음과 같은 파라미터들을 포함한다:
키 검색 또는 삽입/삭제 이전에 특별한 피코코드 명령어를 이용하여 176비트 키가 구축되어야 한다. 단지 하나의 키 레지스터가 있지만, 트리 검색이 시작된 후 TSE(70)가 검색을 수행하고 있는 동안에, 이 키 레지스터는 다음 검색을 위한 키를 구축하기 위해 피코코드에 의해 이용될 수 있다. 이것은 TSE(70)은 키를 해쉬하여 그 결과를 내부 해싱된키 레지스터(HashedKey register, 06)에 저장하기 때문이다.
키 길이 이 8비트 레지스터는 키-1 비트를 저장하며, 키 구축 동안에 하드웨어에 의해 자동으로 갱신된다.
LUDefIndex 이것은 참조 정의 테이블 내로의 8비트 인덱스로서, 검색이 이루어지는 트리에 대한 완전한 정의를 포함한다. LUDefIndex의 내부 구조는도 11에 도시되어 있다.
TSRNr 검색 결과는 1비트 트리 검색 결과 영역(Tree Search Result Area) TSR0 또는 TSR1에 저장될 수 있다. 이것은 TSRN으로 명시된다. TSE가 검색하고 있는 동안에, 피코코드는 이전 검색 결과를 분석하기 위해 다른 TSR을 액세스할 수 있다.
컬러 (LUDefTable에 명시되는) 컬러 인에이블된 트리의 경우, 16비트 컬러 레지스터(124)의 내용이 해쉬 동작 동안에 키 내에 삽입된다.
FM 트리의 경우, 도 4에 도시된 바와 같이 입력키는 해싱된 키(106)으로 해싱될 것이다. 몇개의 수정된 알고리즘이 이용가능하다. 사용될 알고리즘은 LUDefTable 내에 명시된다.
참조 정의 테이블은 트리 검색 메모리를 관리하는 주 구조이다. LUDefTable은 내부 메모리 구조로서 트리를 생성하기 위한 128 엔트리를 포함한다. LUDefTable은, 트리가 위치하는 물리적 메모리(예를 들어, DRAM, SRAM, 내부 RAM)와, 캐시 인에이블 여부와, 키와 리프의 크기와, 수행될 검색 동작의 유형을 정의하는 엔트리를 포함한다. LUDefTable은 3개의 별도 랜덤 액세스 메모리로서 구현된다. 하나는 일반 프로세서 트리 핸들러(GTH)에 의해서만 액세스 가능하며, 나머지 2개는 서로 동일한 복사본으로서 모든 피코프로세서들에 의해 액세스가능하다.
해쉬 함수(104)의 출력은 항상 176 비트 숫자로서, 원래의 입력키(102)와 해쉬 함수(104)의 출력 사이에 1-대-1 대응관계가 존재하는 특성을 가진다. 이하에서 설명되는 바와 같이, 이 특성은 직접 테이블(108) 이후에 시작하는 트리의 깊이를 최소화시켜준다.
도 4의 예에서와 같이 트리에 대해 컬러가 인에이블되면, 16-비트 컬러 레지스터(124)가 176-비트 해쉬 함수 출력에 삽입되고, 그 결과는 해싱된 키(HashedKey, 106)이라 불리는 192비트 숫자가 된다. 만일, 직접 테이블(108)이 2N개의 엔트리를 포함하면, 도 4에 도시된 바와 같이, 16비트 컬러값이 비트 위치 N에서 삽입된다. 해쉬 함수의 결과는 삽입된 컬러값과 더불어 해싱된 키 레지스터(106) 내에 저장된다. 트리에 대해 컬러가 디스에이블되면, 176 비트 해쉬 함수는 변경되지 않으며, 192비트 최종 해싱된 키를 생성하기 위해 해쉬 출력에 16개의 0이 추가된다.
복수개의 독립된 트리가 하나의 직접 테이블(108)을 공유하기 위해 컬러가 이용될 수 있다. 예를 들어, 컬러의 한 이용예로서, MAC 소스 어드레스(SA) 테이블 내에서의 가상 랜(VLAN) ID가 있다. 이 경우에, 입력키(102)는 MAC SA이고, 컬러(124)는 VLAN ID일 것이다(왜냐하면, VLAN ID는 12비트이고, 컬러의 4비트는 미사용, 즉, 0으로 설정되기 때문이다). 해쉬 함수(104) 이후에, 이용되는 패턴은 48+16=64이다. 컬러는 이제 패턴의 일부가 되고 서로 다른 VLAN들의 어드레스를 구별할 수 있다.
해쉬 함수(104)는 그 출력의 대부분의 엔트로피가 최상위 비트에 존재하도록 정의된다. 해싱된 키 레지스터(106)의 N개의 최상위 비트는 직접 테이블(DT, 108)의 인덱스를 계산하기 위해 이용된다.
트리를 구현하는 제1 구조는 직접 테이블(DT, 108)이라 불린다. N개의 요소를 갖는 DT 테이블 내의 각각의 엔트리는 소정의 키에 대응하는데, 이 키는 그 처음 log2N개 비트들이 DT 테이블 내의 해당 엔트리의 인덱스와 2진 형태에 있어서 동일하다. 예를 들어, 16개 엔트리 DT 테이블 내의 5번째 엔트리는 그 처음 3개 비트가 "0101"인 키들에 대응한다. DT 내의 인덱스와 동일한 처음 log2N개 비트들을 갖는 키에 대응하는 리프가 없다면, 그 엔트리는 비어있는(empty) 것으로 마크된다. 이들 비트들과 정합하는 리프가 오직 하나 있다면, 그 엔트리 내부에는 리프에 대한 포인터(a pointer to a leaf)가 있다. 동일한 처음 비트들을 갖는 키들에 대응하는 리프가 복수개 있다면, DT 엔트리는 PSCB 구조(110)을 가리키며, 또한 테스트할 다음 비트(들)(NBT) 필드(106)을 가리킨다. 이들 구조가 이하에서 기술될 것이다.
DT 테이블(108)은 메모리 내에 구현되며, 그 크기(길이)와 시작점은 프로그램가능하다. 또 다른 프로그램가능한 특징은 소위 직접 리프의 사용이다. DT 엔트리가 리프를 가리키게 하는 것(이 경우에는 리프가 그 이후에 판독되어야 함)이 아니라, DT 엔트리의 위치에 리프가 저장될 수도 있다. 이것은 직접 리프라 불린다. 물론, 여기에는 DT 엔트리를 위해 보다 많은 메모리가 필요하다는 문제점은 있으나 속도가 빨라지는 면도 있다. 메모리의 크기(폭)은 리프를 수용하기에 충분해야 하며, 모든 DT 엔트리가 그 내부에 리프를 저장하는 것은 아니다. 그러나, 키에 대한 양호한 해쉬 함수 결과는 대부분의 리프들이 하나의 DT 엔트리에 부착되도록하여, 속도가 빠르게 될 것이다.
요약하면, DT 엔트리는 비어있을 수도 있다. 이 경우에, 어떠한 리프도 이 DT 엔트리에 부착되지 않는다. DT 엔트리는 이 DT 엔트리에 부착된 하나의 리프를 가리킬 수도 있다. 이 경우에는, DT 엔트리는 패턴 검색 제어 블럭(PSCB)를 가리킬 수 있으며 또한 이 PSCB에 대한 테스트할 다음 비트(들)(Next bit(s) to Test; NBT)을 포함한다. 결국, DT 엔트리는 직접 리프를 포함할 수 있다.
PSCB는 트리 내에서의 브랜치(branch)를 나타낸다. 양호한 실시예에서는 0-브랜치와 1-브랜치가 있다. 브랜치의 개수는 브랜치를 가리키는데 사용되는 비트 개수에 따라 가변적이다. n개 비트가 사용된다면, PSCB에서 2n개의 브랜치가 정의된다. 각각의 PSCB는 비트 위치 p에도 관련되어 있다. 0-브랜치를 통해 PSCB로부터 도달될수 있는 모든 리프는 패턴내의 위치 p에서 '0'을 가지며, 1-브랜치를 통해 도달될 수 있는 모든 리프는 위치 p에서 '1'을 가진다. 나아가, PSCB로부터 도달될 수 있는 모든 리프는 항상 비트 0...p-1들이 동일한 패턴, 즉, 위치 p에서 달라지는 패턴을 가진다. PSCB에 관련된 비트 위치는 이전의 PSCB에 저장되거나 DT 엔트리에 저장되며 NBT(Next bit to Test)라 불린다.
PSCB 엔트리의 포멧은 DT 엔트리의 포멧과 동일하다. 이는 랜덤 액세스 메모리로 구현된다.
PSCB는 리프 패턴이 달라지는 위치들에서 트리내에 삽입된다. 이것은 효율적인 검색 동작을 허용하는데, 이는 PSCB의 개수, 및 이에 따른 검색 성능이 트리내의 리프의 개수에만 의존하고 패턴의 길이에는 의존하지 않기 때문이다. PSCB 레지스터 포멧은 도 12에 도시되어 있다.
요약하면, PSCB 엔트리는 비어있을 수 있으며, 하나의 리프를 가리킬 수도 있고, 또 다른 PSCB를 가리키며 그 PSCB에 대한 테스트할 다음 비트(NBT)를 포함할 수도 있다. FM PSCB는 이하에서 기술되는 바와 같이 항상 폭 1, 높이 1로 정의되는 형상을 가진다.
PSCB는 하나 이상의 비트에 대응하는 브랜치를 나타낼 수 있다. 이 경우에, 예를 들면, 2 비트에 대응하는 PSCB는 4개의 PSCB 엔트리, 즉, 00 브랜치 엔트리, 01 브랜치 엔트리, 10 브랜치 엔트리, 및 11 브랜치 엔트리를 가진다. 각각의 트리는 서로 다른 개수의 비트들에 대응하는 PSCB들을 가질 수 있다. 이 경우에, 이전 PSCB는 그 다음 PSCB에 대응하는 비트들이 나타내는 비트 번호뿐만 아니라 비트 개수를 가질 것이다.
실제적인 구현에서, 키는 특별한 키 레지스터(102) 내에 삽입되고, 그 다음, 해싱된다.(104) 그 결과는 해싱된 키 레지스터(106) 내에 저장된다. 해쉬 함수(104)는 프로그램가능하며, 이 함수들 중 하나는 널 해쉬(즉, 해쉬 없음) 함수이다. 해싱된 키의 처음 n개 비트는 DT 테이블(108)에 대한 인덱스로서 사용된다. 프로그램가능한 한 특징은, DT 엔트리 내의 인덱스로서 사용되는 비트들 직후에 비트 벡터(bit vector)를 삽입하는 것이다. 이 비트 벡터는 "컬러" 값(레지스터 124)이라 불리며, 해싱된 키의 결과와 삽입된 컬러 값은 해싱된 키 레지스터(106)에 저장된다.
FM 트리에서 리프의 포멧은 패턴을 포함하는 제어 정보를 포함한다. 패턴은 트리내에서 리프를 고유하게 식별시켜준다. 리프는 또한 트리 검색을 개시시킨 애플리케이션이 요구하는 데이타를 포함한다. 리프 내에 포함된 데이타는 애플리케이션에 따라 다르며 그 크기 또는 메모리 요건은 트리에 대한 LUDefTable에 의해 정의된다. 도 13은 FM 트리에 대한 고정 리프 포멧을 도시한다.
DT 엔트리 처리시의 단계들은 다음과 같다:
DT 엔트리는 메모리로부터 판독된다.
DT 엔트리가 널 엔트리이면, 이것은 해싱된 키와 동일한 처음 "n"개 비트를 갖는 리프가 트리 내에 없기 때문에 검색이 실패함을 의미한다.
DT 엔트리가 리프에 대한 포인터를 가진다면, DT(108)로부터의 포인터를 리프에 대한 어드레스로서 사용하여 메모리로부터 리프가 판독된다. 리프는 레지스터에 저장되고 키와 비교된다. 이 단계는 컴페어 엣 엔드(compare at end)라 불린다. 완전 정합(full match)이 있다면, 트리 검색은 성공한다. 그렇지 않다면, 트리 검색은 실패한다.
DT 엔트리가 NBT 및 PSCB(110)에 대한 포인터를 가진다면, NBT는 우선 특정한 레지스터에 저장된다. 그 다음, NBT 숫자는 위치 NBT내의 키에서 비트를 찾는데 이용된다. 이 비트(0 또는 1)은 올바른 PSCB 엔트리를 추출하기 위해 PSCB에 대한 포인터와 더불어 이용된다: 이 비트는 포인터의 끝에 추가되고 이것은 PSCB의 메모리내에서의 전체 어드레스(full address)를 주게 된다. PCSB는 판독되어 특정한 레지스터에 저장된다; 그 다음 하드웨어는 PSCB 엔트리를 처리한다. 이 때, 알고리즘은 트리를 보행하기 시작한다.
PSCB 엔트리를 처리하는 단계는 다음과 같다:
PSCB 엔트리가 널 엔트리이면, 이것은 키와 동일한 처음 NBT 비트를 갖는 리프가 트리 내에 없기 때문에 검색이 실패함을 의미한다.
PSCB가 리프에 대한 포인터를 가진다면, PSCB로부터의 포인터를 리프에 대한 어드레스로서 이용하여 메모리로부터 리프가 판독된다. 리프는 레지스터에 저장되고 키와 비교된다. 이 단계는 컴페어 엣 엔드라 불린다. 완전 정합이 있다면, 트리 검색은 성공할 것이다. 그렇지 않다면, 트리 검색은 실패할 것이다.
PSCB가 NBT 및 PSCB에 대한 포인터를 가진다면, NBT는 우선 특정한 레지스터에 저장되고, 이것은 현재의 NBT가 된다. 그 다음 이 NBT 숫자는 위치 NBT내의 키에서 비트를 찾는데 이용된다. 이 비트(0 또는 1)은 올바른 다음 PSCB 엔트리를 추출하기 위해 PSCB에 대한 포인터와 더불어 이용된다: 이 비트(0 또는 1)는 포인터의 끝에 추가되고 이것은 PSCB의 메모리내에서의 전체 어드레스(full address)를 주게 된다. PCSB는 판독되어 특정한 레지스터에 저장된다. 그 다음 하드웨어는 PSCB 엔트리를 처리한다.
트리 보행 동안에, 리프의 모든 비트들이 테스트되는 것이 아니라 PSCB(트리 내의 브랜치)가 있는 비트들에 대해서만 테스트된다. 따라서, 일단 리프가 발견되면, 모든 비트가 정합하는지를 확인하기 위해 리프 패턴은 키와 비교되어야 한다. 이것이 알고리즘의 컴페어 엣 엔드 동작(compare-at-the-end)에 대한 이유이다. 검색의 성공 또는 실패는 완료 플래그와 더불어 OK/KO 플래그에 의해 마크된다.완료 플래그가 트리거되면, 이 FM 트리 검색 엔진을 이용하는 프로그램 또는 하드웨어는 OK/KO 플래그를 검사할 수 있다.
"프로그램가능"이라고 기술된 모든 것은 트리에 대응하는 특정 레지스터 값을 설정할 수 있다. 엔진이 N개 트리를 지원할 필요가 있다면, N개의 이들값은 레지스터 어레이 내에 위치한다. 이 레지스터 내에서, 프로그램가능한 값, 즉, 사용할 해쉬 함수, DT 테이블의 시작부, 그 크기등이 인코딩된다.
하드웨어의 한 가능성은 키의 자동 삽입(하드웨어 삽입)이다. (해싱된) 키 검색이 진행됨에 따라, 부정합(KO)가 있는 경우에는, 즉석에서 PCSB를 생성하는 하드웨어를 사용함으로써 이 시점에서 리프가 자동으로 삽입될 수 있다. 이 경우에, 완전 정합 트리의 개념은 캐쉬로서 이용될 수 있다.
검색은 직접 테이블(108) 내로의 액세스와 더불어 시작한다. 즉, 직접 테이블로부터 DT 엔트리가 판독된다. DT 엔트리를 판독하기 위해 이용되는 어드레스는, 참조 정의 테이블(LUDefTable) 내에 정의된 3개 특성 뿐만 아니라 해싱된 키의 N개 최상위 비트로부터 계산된다. DT 엔트리는 트리의 루트(root)로 간주될 수 있다. 실제의 트리 데이타 구조는 트리-유형에 따라 달라진다. 패트리샤 트리 데이타 구조는 FM 트리를 위해 이용된다. 패트리샤 트리 확장 구조는 LPM 및 SMT 트리에 대해 이용된다.
8개의 엔트리 DT(108)의 한 이용예가 도 6에 도시되어 있다. 검색 시간, 즉, 액세스되어야 하는 PSCB의 개수는 DT를 이용하여 감소될 수 있다. 따라서, DT 크기를 증가시킴으로써, 메모리 이용률과 검색 성능간에 교환(trade off)이 이루어질 수 있다.
성능상의 이유로 인해, 리프 포인터를 포함하는지의 여부만을 알기 위해-DT 엔트리의 판독 이후에는 리프를 판독해야 함- DT 엔트리를 판독한다는 것은 비효율적이다. 이러한 상황은 FM 트리의 경우에 종종 발생한다. FM 트리는 DT 엔트리 하나당 많은 단일 리프 엔트리(many single leaf entries)를 포함한다. 직접 리프의 개념은 보다 높은 메모리 이용률과 보다 나은 성능간의 교환을 허용한다.
트리는 직접 리프(direct leaf)를 인에이블시킬 수 있으며, 이러한 인에이블링은 참조 정의 테이블(LUDefTable) 내에 명시된다. 직접 리프 인에이블 및 디스에이블된 트리들간의 차이점이 도 7에 도시되어 있다. 직접 리프가 인에이블되고 DT 엔트리가 단일 리프를 포함하면, 이 리프는 DT 엔트리 그 자체 내에 저장된다. 그렇지 않을 경우, DT 엔트리는 리프에 대한 포인터를 포함할 것이다
형상(shape)는 TSM의 한 특징이며 리프나 PSCB와 같은 오브젝트가 TSM에 저장되는 방법을 명시한다. 형상은 폭 및 높이 파라미터에 의해 정의된다. 오브젝트의 높이는 오브젝트가 저장되는 연속된 어드레스 위치의 개수를 가리킨다. 오브젝트의 폭은 오브젝트가 저장되는 연속적 뱅크의 개수를 가리킨다. 폭과 높이에 대해, 하드웨어는 적절한 개수의 위치를 자동으로 판독한다. 피코코드의 관점에서 보면, 오브젝트는 액세스의 원자 단위이다. SRAM에 저장된 오브젝트에 대해서 폭은 항상 1이다. DRAM에 저장된 오브젝트에 대해서 폭은 1이상일 것이다. 하나의메모리 위치 내에 꼭 맞는 크기의 오브젝트는, 높이 1과 폭 1을 갖는 것으로 정의된다. 직접 리프가 디스에이블된 오브젝트의 형상은 항상 (W=1, H=1)이다. DT엔트리가 랜덤 액세스 메모리(DRAM) 내에 저장될 때 64비트를 점유한다. 직접 리프가 디스에이블된 DT 엔트리의 형상은 리프의 형상과 동일하며, LUDefTable에 명시된다. 일반적으로, 이것은 보다 많은 메모리가 DT(108)에 의해 이용되도록 만들며, 리프의 형상이 DT 엔트리 어드레스 계산에 영향을 미치게 만든다.
DT 엔트리가 판독된 후 DT 엔트리가 직접 리프를 포함하지도 않으며 비어 있지도 않다고 가정하면, 이러한 DT 엔트리에서 시작하는 트리 보행(tree walking)에 의해 검색이 계속될 것이다. 트리 보행은 리프가 도달될 때까지 수개의 PSCB(Pattern Search Control Block)을 통과할 것이다.
FM 트리 검색 동안에 PSCB를 마주치게 되면, 트리 검색 엔진 하드웨어는 해싱된 키의 비트 p값에 따라 0-브랜치 또는 1-브랜치 상에서 트리-보행을 계속할 것이다.
트리-보행 동안에 해싱된 키의 모든 비트들이 테스트되는 것은 아니며, PSCB가 있는 비트들에 대해서만 테스트된다. 따라서, 리프가 발견될 때, 리프 내의 패턴은 모든 비트들이 정합하는지를 확인하기 위해 해싱된 키와 비교되어야 한다. 리프 내에 저장되는 것은 해싱된 키이지 원래의 입력키가 아님에 주목해야 한다. FM 리프가 발견되면, 다음의 동작들이 수행된다:
단계 1 : 리프 패턴은 해싱된 키와 비교된다. 정합이 발생하면, 단계2로 동작이 넘어간다. 그렇지 않다면, 리프가 다른 리프에 대한 연결 포인터(chain pointer)를 포함하면, 리프가 판독되고 패턴이 해싱된 키와 다시 한번 비교된다. 정합이 없고 NLA 필드가 없다면, 검색은 실패(KO)로 끝난다.
단계 2 : 벡터 마스크가 인에이블되면, 리프의 벡터 마스크로부터 숫자 VectorIndex를 갖는 비트가 판독된다. 이 비트는 검색 결과의 일부로서 반환된다. 검색은 성공(OK)으로 끝난다.
도 10은 본 발명의 완전 정합(full match) 알고리즘의 처리 논리를 도시한다. 논리 블럭(1000)에서 입력키의 판독과 더불어 처리가 시작한다. 그 다음 입력키는 논리 블럭(1002)에 지시된 바와 같이 해쉬 함수를 통과한다. 입력키를 해싱하여 해싱된 키를 생성하는 것은 선택사항이다. 해싱된 키의 최좌측 비트들, 즉, 직접 테이블을 어드레싱하는데 이용되는 비트들에서 엔트로피가 가장 높도록 해쉬 함수가 선택된다. 해쉬 함수는 역변환가능하다. 즉, 해싱된 키를 입력키로 변환해 줄 수 있는 역해쉬 함수가 존재한다. 그 다음, 논리 블럭(1004)에서, 직접 테이블이 판독된다. 해싱된 키의 상위 N개 비트(N은 구성가능함)들은 직접 테이블 내로의 인덱스로서 이용된다. 판독된 엔트리가 비어 있다면, 검색은 KO(정합없음)를 반환한다. 이것은 종료 블럭(1006)에 의해 지시된다. 판별 블럭(1008)에 지시된 바와 같이, 엔트리가 리프를 가리키는지 아닌지의 여부에 관하여 판별이 이루어진다. DT 엔트리가 리프를 가리킨다면, 블럭(1010)에 지시된 바와 같이 리프가 판독된다. 그렇지 않다면, DT 엔트리는 PSCB를 가리킨다. 이 경우에, PSCB의 적절한 부분이 논리 블럭(1012)에 지시된 바와 같이 판독된다. 완전 정합 검색을 위해, PSCB는 2개의 엔트리를 포함한다: 0-부분 및 1-부분. 이전의 PSCB(또는 DT 엔트리)는 비트 번호(NBT: 테스트할 다음 비트)를 포함한다. NBT는, 어느 PSCB 엔트리를 이용할지를 선택하는 해싱된 키 내의 비트(즉, 0 또는 1)을 선택한다.PCSB 엔트리는 리프에 대한 포인터를 포함하거나, 또 다른 PSCB에 대한 포인터를 포함한다. 그 다음 처리는 판별 블럭(1008)로 되돌아간다. 판별 블럭(1008)에서 일단 리프가 발견되고, 논리 블럭(1010)에서 판독되면, 논리 블럭(104)에 의해 지시된 바와 같이 리프에 저장된 패턴이 해싱된 키와 비트별로 비교된다. 판별 블럭(1016)에서 지시된 바와 같이 모든 비트가 정합되면, 종료 블럭(1018)에 지시된 바와 같이 검색은 OK(성공적 정합)을 반환한다. 그 다음 리프의 내용은 애플리케이션으로 건네진다. 그렇지 않다면, 종료 블럭(1020)에 지시된 바와 같이 검색은 KO(실패)를 반환한다. 이러한 처리 논리에 대한 확장으로서, PSCB는 2b개의 엔트리로 구성될 수도 있다. 여기서, 해싱된 키로부터의 b개 비트는 PSCB로부터 판독될 엔트리를 선택한다. 이것은 메모리 사용량을 댓가로 성능을 향상시킨다.
트리 검색 성능을 향상시키기 위해 캐쉬가 사용될 수도 있다. 캐쉬의 사용은, 트리별 기초하에서 LUDefTable 내에 명시될 수 있다. 검색 동안에, 트리 검색 엔진(70)은 해싱된 키와 정합하는 리프가 존재하는지를 판별하기 위해 먼저 캐쉬를 검사할 것이다. 이러한 리프가 발견되면, 이 리프가 반환될 것이고 검색은 더 이상 필요하지 않다. 이와 같은 리프가 발견되지 않는다면, 통상의 검색이 개시된다.
트리 검색 엔진 하드웨어(70)에 대해, 캐쉬 참조는 통상의 검색과 정확히 동일하다. 따라서, 입력키는 해싱된 키로 해싱되고, 직접 테이블(108)의 액세스가 수행된다. 직접 테이블(108)은 캐쉬로서 역할한다. 캐쉬 검색이 OK(성공)을 반환하면, 검색은 종료한다. 그렇지 않다면, 트리 검색 엔진은 전체 트리에서 제2 검색-해쉬 동작은 수행되지 않는다-을 개시할 것이다. 해싱된 키 레지스터(106)의 내용은 재사용된다
캐쉬 검색의 사용여부는 LUDefTable 내에 명시될 수 있다. 캐쉬 검색이 LUDefTable 엔트리 I를 사용하고 검색 결과가 KO(실패)라면, LUDefTable 엔트리 I+1을 이용한 또 다른 검색이 자동으로 시작될 것이다. LUDefTable 엔트리 I+1하에 전체 트리가 저장되는 것이 바람직하지만, 대개, 이것은 다중 검색이 체인화될 수 있도록 허용한다.
트리 검색 엔진(70)은 FM 트리, LPM 트리, 및 SMT 트리에서 하드웨어 검색 동작을 제공한다. 모든 트리 유형에 대해, 트리의 초기화와 유지를 위해 다양한 소프트웨어가 필요하다. 제어 포인트 프로세서(34)의 개입없이도 리프의 삽입 및 삭제가 가능한 것은 FM 트리와 LPM 트리뿐이다. 이러한 특징의 사용은 규모조절가능한 구성(scalable configuration)을 허용하고, 필요하다면 CP(34)가 리프를 삽입 또는 삭제할 수 있도록 허용하는 융통성을 가진다.
FM 트리는 고정된 크기의 패턴으로 테이블을 효율적으로 검색하기 위한 메카니즘을 제공한다. 이러한 예는 제2층 이더넷 유니캐스트 MAC 테이블(Ethernet unicast MAC table)이 될 것이다. 이더넷 유니캐스트 MAC 어드레스는 고정된 6바이트이며 정확한 정합을 가져야 한다. 그렇지 않다면, 목적지는 알수 없다.
FM 트리는 해싱 함수 덕택에 최고의 퍼포먼스 트리이다. 트리 검색 엔진은 아주 낮은 충돌률을 제공하는 복수개의 고정 해싱 함수를 제공한다. DT(108)이 충분히 크다면, 하나의 DT 엔트리와 연관된 복수개의 리프를 가질 확률은 대단히 낮다. 이것이 1+ 엡실론(1+ epsilon)으로써, 엡실론은 DT 엔트리에서 충돌 횟수를 나타낸다. 하나의 리프를 갖는 DT 엔트리는 엡실론=0을 가진다. 따라서, 해싱 함수와 더불어 FM 트리를 사용함으로써, 엡실론 값은 매우 작아야 한다.
FM 트리 내의 DT 엔트리의 구조가 도 8에 도시되어 있다. 각각의 DT 엔트리는 36-비트 폭이며 다음과 같은 포멧을 가진다:
비어있는 DT 엔트리. 이 DT 엔트리에 관련된 어떠한 리프도 없다.
다음 PSCB에 대한 포인터. DT 엔트리는 PSCB에 대한 포인터를 포함한다. 다음 PSCB 어드레스(NPS) 및 테스트할 다음 비트(NBT) 필드가 유효하다.
리프에 대한 포인터. DT 엔트리와 연관된 하나의 리프가 있다. 리프 제어 블럭 어드레스(LCBA)는 이 리프에 대한 포인터를 포함한다.
직접 리프. DT 엔트리와 연관된 하나의 리프가 있으며 이 리프는 DT 엔트리 그 자체에 저장된다. 리프의 제1 필드는 NLA 로프(rope)이어야 하며, 이것은 직접 리프들이 인에이블된 로프(rope enabled)를 가져야 함을 가리킨다. 로프는 트리 내의 리프들을 함께 연결시키는데 이용되는 원형의 링크된 리스트이다. 피코코드는 "로프를 보행(walk the rope)", 즉, 로프 내의 모든 리프들을 순차적으로 검사할 수 있다. NLA 내의 처음 2개 비트는 자동으로 "직접" 인코딩할 수 있도록 '10'을 가리키도록 예약됨에 주목해야 한다. 직접 리프들은, 이들이 LUDefTable에서 인에이블된다면, 주어진 트리에 대해서만 이용될 것이다.
FM PSCB는 이들이 2개의 PSCB 라인들로 구성되어 각각의 PSCB 라인이 도 8에 도시된 바와 같은 2개의 포멧들중 하나를 가질수 있다는 점만 제외하고는 FM DT 엔트리와 동일한 구조를 가진다. 2개의 PSCB 라인들은 메모리에 연속적으로 할당되며 트리 보행을 위한 브랜치로서 사용된다. 테스트할 다음 비트(NBT) 필드는, PSCB를 보행하기 위한 비트 비교로서 이용될 키속으로의 옵셋을 의미하며 2개의 PSCB 라인들중 어느것을 이용할지를 가리킨다.
FM 트리를 검색하기 위한 한 예가 도 9에 도시되어 있다. 여기서 7-비트 값(7-bit value)이 트리에 저장된다. 이 예는 키의 최상위(MSB) 3개 비트를 FM DT(108) 내로의 해쉬로서 사용함으로써 단순화된다. 이 트리에는 5개의 엔트리(L0-L4)가 저장되어 있다.
첫번째 예로서, 2진 입력키 1110011을 가정해보자. 처음 3개 비트 '111'은 DT 엔트리(7)로 인덱싱된다. 여기서 리프 L0를 가리키는 LCBA가 존재한다. 리프 L0는 TSE(70)에 의해 판독되고 L0 내의 패턴은 입력 패턴과 비교된다. 이 예에서, 정확한 정합이 발생하고 TSE는 OK(성공)을 반환할 것이다.
입력 패턴 1001110을 가정해 보자, DT 엔트리(4)는 NBT 필드 3을 갖는 PSCB0에 대한 포인터를 포함한다. 이것은 키 내의 제4 비트, 즉, '1'(비트 0은 MSB 또는 최좌측 비트이다)은 트리내의 어느 브랜치가 취해질 것인지를 결정한다. 제4 비트가 '1'이기 때문에, PSCB0의 하위 반쪽이 사용된다. 제4 비트가 '0'이었다면 PSCB0의 상위 반쪽이 사용되었을 것이다. 각각의 PSCB는 근본적으로 PSCB 라인들의 2개 요소로된 어레이로서 NBT값 '0'는 첫번째 요소로의 인덱스이고, NBT값 '1'은 두번째 요소로의 인덱스이다. 따라서, PSCB0의 PSCB 라인1은, NBT 6과 더불어, PSCB2를 가리키는 그 다음 PSCB 어드레스(NPA)를 포함하기 때문에 검색은 계속된다. NBT가 7이고 입력 패턴의 비트 7이 '0'일 때, L3에 대한 포인터를 포함하는 PSCB2이 상위 반쪽이 이용된다. 리프 L3를 판독하여 L3 내의 패턴을 입력 패턴과 전체 비교를 수행하는 동작은 OK(성공)을 반환한다.
입력 패턴 1001100에 관한 검색은, 앞의 예와 동일한 트리내 경로를 정확히 따를 것이다. 그러나, 컴페어 엣 앤드 동작은 정합하지 않을 것이고, 검색은 KO(실패)를 반환할 것이다.
본 발명은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 본 명세서에 설명된 방법을 실행하는데 적합한 어떠한 종류의 시스템 또는 다른 장치도 이용될 수 있다. 하드웨어 및 소프트웨어의 전형적인 조합은, 로딩되어 실행될 때 본 명세서에 따른 방법을 실행하도록 컴퓨터 시스템을 제어하는 범용 컴퓨터 시스템일 수도 있다. 본 발명은 본 명세서에서 기술된 방법들을 구현할 수 있는 모든 특징들을 구비하고 컴퓨터 시스템에 로딩되었을 때 이들 방법들을 실행할 수 있는 컴퓨터 프로그램 제품 내에 임베딩될 수도 있다.
본 명세서에서 의미하는 컴퓨터 프로그램 명령어 또는 컴퓨터 프로그램은, 임의의 랭귀지, 코드(즉, 피코코드 명령어) 또는 표기로된 명령어 세트의 임의 표현으로서, 상기 명령어 세트는 직접적으로 정보 처리 능력을 갖는 시스템이 특정의 기능을 수행하도록 유발하거나, a) 다른 랭귀지, 코드 또는 표기로의 변환; b) 다른 재료 형태로의 복제중 어느 하나 또는 양쪽 모두를 거친 이후에 정보 처리 능력을 갖는 시스템이 특정의 기능을 수행하도록 유발한다.
당업자는 본 발명의 정신과 영역을 벗어나지 않고도 본 발명의 양호한 실시예에 대한 많은 수정이 가능하다는 것을 이해할 수 있을 것이다. 또한, 본 발명의 다른 특징을 이용하지 않고도 본 발명의 특징들중 일부를 이용하는 것도 가능하다. 따라서, 본 발명의 영역은 첨부된 특허청구범위에 의해 제한되기 때문에 양호한 실시예에 대한 상기의 설명들은 본 발명의 원리를 설명하기 위한 것이지 제한하기 위한 것은 아니다.
패트리샤 트리(Patricia tree)에 대한 완전 정합 트리 검색 알고리즘의 하드웨어적 구현을 제공되며, 이전 포인터에 대한 저장을 요하지 않고 테스트할 다음 비트 또는 비트 그룹과 더불어 포워드 포인터만을 이용함으로써 노드에 대한 저장 공간을 감소시켜주는 검색 메카니즘을 제공되며, 몇개의 레지스터와 통상의 메모리에 위치하며 비교적 간단한 하드웨어 매크로에 의해 조작될 수 있는 패트리샤 트리 구조를 구축하는데 이용될 수 있는 한 세트의 데이타 구조가 제공된다.

Claims (34)

  1. 가변 길이 검색키에 대한 완전 정합(full match)을 컴퓨터 처리 장치에 의해 판별하기 위한 방법에 있어서,
    검색 스트링으로서의 입력키를 판독하는 단계와,
    해싱된 키(hashed key)를 발생시키기 위해 해쉬 함수(hash function)를 이용하여 상기 입력키를 해싱하는 단계와,
    검색 트리의 복수개의 루트 노드(root node)를 나타내는 테이블 내로의 인덱스로서 상기 해싱된 키의 N개 최상위 비트를 이용하는 단계-각각의 비어 있지 않은 엔트리는 검색 트리 내의 다음 브랜치(branch)나 리프(leaf)에 대한 포인터를 포함함-와,
    비어 있지 않은 테이블 엔트리 내의 포인터가 대응하는 검색 트리의 리프 또는 다음 브랜치를 가리키는지를 판별하는 단계와,
    상기 포인터가 대응하는 검색 트리의 상기 리프를 가리키지 않는다면 상기 다음 브랜치 내용을 판독하는 단계와,
    대응하는 검색 트리의 상기 리프에 도달하면 상기 리프의 내용을 판독하여 상기 리프 내의 패턴과 해싱된 키를 비교하여 상기 리프 패턴이 상기 해싱된 키와 정합하는지를 판별하는 단계와,
    상기 리프 패턴이 상기 해싱된 키와 정합한다면 발견된 리프의 내용을 요청하는 애플리케이션으로 반환하는 단계
    를 포함하는 가변 길이 검색키의 완전 정합 판별 방법.
  2. 제1항에 있어서, 검색 트리의 복수개의 루트 노드를 나타내는 상기 테이블은 2N개의 엔트리를 포함하는 가변 길이 검색키의 완전 정합 판별 방법.
  3. 제1항에 있어서, 상기 컴퓨터 처리 장치는 네트워크 프로세서인 가변 길이 검색키의 완전 정합 판별 방법.
  4. 제1항에 있어서, 상기 대응하는 검색 트리의 다음 브랜치의 내용은 또 다른 다음 브랜치를 가리키는 가변 길이 검색키의 완전 정합 판별 방법.
  5. 제1항에 있어서, 상기 다음 브랜치의 내용은 상기 대응하는 검색 트리의 상기 리프를 가리키는 가변 길이 검색키의 완전 정합 판별 방법.
  6. 제1항에 있어서, 상기 리프 패턴이 상기 해싱된 키와 정합하지 않고 또다른 리프에 대한 포인터를 포함하지 않는다면, 별견된 정합 없음 표시(no match found indication)를 반환하는 단계를 더 포함하는 가변 길이 검색키의 완전 정합 판별 방법.
  7. 제1항에 있어서, 상기 테이블 내로의 인덱스가 비어 있는 엔트리에 대한 것이면 발견된 정합 없음 표시(no match found indication)를 반환하는 단계를 더 포함하는 가변 길이 검색키의 완전 정합 판별 방법.
  8. 제1항에 있어서, 최종 해싱된 키를 제공하기 위해 컬러 레지스터의 내용을 상기 해싱된 키에 추가하는 단계를 더 포함하는 가변 길이 검색키의 완전 정합 판별 방법.
  9. 제1항에 있어서, 최종 해싱된 키를 제공하기 위해 0으로 된 스트링을 상기 해싱된 키에 추가하는 단계를 더 포함하는 가변 길이 검색키의 완전 정합 판별 방법.
  10. 제1항에 있어서, 상기 다음 브랜치의 비트 수가 상기 해싱된 키의 길이를 초과할 때 완전 정합을 위한 상기 검색을 종료하는 단계를 더 포함하는 가변 길이 검색키의 완전 정합 판별 방법.
  11. 제1항에 있어서, 상기 입력 키상에 사용되는 해쉬 함수는 해싱된 키를 입력키로 변환할 수 있는 가역 해쉬 함수인 가변 길이 검색키의 완전 정합 판별 방법.
  12. 제1항에 있어서,
    상기 리프가 다른 리프에 대한 연결 포인터(chain pointer)를 포함한다면, 상기 다른 리프 내에 저장된 패턴을 판독하여 상기 패턴을 상기 해싱된 키와 비교하는 단계와,
    상기 저장된 패턴이 상기 해싱된 키와 정합하지 않고 상기 체인 내의 다음 리프에 대한 포인터를 포함하지 않는다면 발견된 정합 없음 표시를 반환하는 단계
    를 더 포함하는 가변 길이 검색키의 완전 정합 판별 방법.
  13. 제1항에 있어서,
    상기 리프가 또 다른 리프에 대한 연결 포인터를 포함한다면, 또 다른 리프에 저장된 패턴을 판독하여 상기 패턴을 상기 해싱된 키와 비교하는 단계와,
    상기 저장된 패턴이 상기 해싱된 키와 정합한다면 발견된 정합 있음 표시(indication of match found)를 반환하는 단계
    를 더 포함하는 가변 길이 검색키의 완전 정합 판별 방법.
  14. 가변 길이 검색키에 대한 완전 정합을 발견하기 위한 복수개의 데이타 구조를 포함하는 컴퓨터 판독가능 매체에 있어서,
    검색하고자하는 패턴 또는 키와,
    검색 트리에 대한 첫번째 어드레스 위치를 저장하는 직접 테이블과,
    각각이 상기 검색 트리 내의 브랜치를 나타내는 복수개의 패턴 검색 제어 블럭과,
    각각이 검색 결과에 대한 어드레스 위치(address location)가 되는 복수개의 리프
    를 포함하는 컴퓨터 판독가능 매체.
  15. 제14항에 있어서, 트리 검색 메모리를 관리하는 참조 정의 테이블(lookup definition table)을 더 포함하는 컴퓨터 판독가능 매체.
  16. 제15항에 있어서, 상기 참조 정의 테이블은 상기 트리가 위치하는 물리적 메모리와, 상기 키 및 리프의 크기와, 수행될 검색 유형을 정의하는 엔트리들을 포함하는 컴퓨터 판독가능 매체.
  17. 제14항에 있어서, 상기 참조 정의 테이블은 복수개의 메모리 내에 구현되는 컴퓨터 판독가능 매체.
  18. 제14항에 있어서, 직접 테이블 엔트리를 위한 포멧은 적어도 하나의 검색 제어 블럭과, 다음 패턴 검색 제어 블럭을 가리키는 다음 패턴 어드레스(next pattern address)와, 리프나 결과를 가리키는 리프 제어 블럭 어드레스와, 테스트될 다음 비트 또는 비트들과, 직접 리프를 포함하는 컴퓨터 판독가능 매체.
  19. 제14항에 있어서, 패턴 검색 제어 블럭을 위한 포멧은 적어도 하나의 검색제어 블럭과, 다음 패턴 검색 제어 블럭을 가리키는 다음 패턴 어드레스와, 리프 또는 결과를 가리키는 리프 제어 블럭 어드레스와, 테스트될 다음 비트 또는 비트들을 포함하는 컴퓨터 판독가능 매체.
  20. 제14항에 있어서, 리프 데이타 구조는 적어도 하나의 리프 연결 포인터(leaf chaining pointer)와, 프레픽스 길이와, 상기 검색키와 비교될 패턴과, 가변 사용자 데이타를 포함하는 컴퓨터 판독가능 매체.
  21. 제18항에 있어서, 상기 직접 리프는 직접 테이블 엔트리에 직접 저장되며 검색키와 비교될 패턴과 검색 제어 블럭을 포함하는 컴퓨터 판독가능 매체.
  22. 제14항에 있어서, 리프 패턴이 달라지는 위치에서 상기 검색 트리 내에 패턴 검색 제어 블럭이 삽입되는 컴퓨터 판독가능 매체.
  23. 제14항에 있어서, 패턴 검색 제어 블럭은 폭 1 및 높이 1로 정의되는 형상을 가지며 적어도 36 비트의 라인 길이를 갖는 메모리 내에 저장되는 컴퓨터 판독가능 매체.
  24. 가변 길이 검색키에 대한 완전 정합을 판별하기 위해 반도체 기판 상에 제조된 장치에 있어서,
    프레임 처리를 제공하는 내부 제어 포인트 프로세서(internal control point processor)와 복수개의 프로토콜 프로세서(protocol processor)를 포함하는 임베딩된 프로세서 복합체와,
    각각의 프로토콜 프로세서에 액세스가능하며 고속 패턴 검색, 데이타 조작, 및 프레임 해석(parsing)을 제공하는 복수개의 하드웨어 가속기 코프로세서와,
    적어도 하나의 검색 트리를 나타내는 복수개의 데이타 구조-상기 데이타 구조는 직접 테이블과, 패턴 검색 제어 블럭과, 리프를 포함함-를 저장하는 복수개의 프로그램가능한 메모리 디바이스와,
    상기 복수개의 메모리 디바이스에 대한 각각의 프로토콜 프로세서의 액세스를 제어하는 제어 메모리 중재기
    를 포함하는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  25. 제24항에 있어서, 메모리 판독 및 기록과 메모리 범위 검사를 포함하는 트리 검색 명령어를 수행하기 위해 프로토콜 프로세서 실행과 병렬로 동작하는 트리 검색 엔진을 더 포함하는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  26. 제24항에 있어서, 상기 복수개의 메모리 디바이스는 적어도 하나의 내부 정적 랜덤 액세스 메모리와, 외부 정적 랜덤 액세스 메모리와, 외부 동적 랜덤 액세스 메모리를 더 포함하는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  27. 제24항에 있어서, 상기 제어 메모리 중재기는 상기 복수개의 프로토콜 프로세서와 복수개의 메모리 디바이스간에 메모리 싸이클을 할당함으로써 제어 메모리 동작을 관리하는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  28. 제24항에 있어서, 각각의 프로토콜 프로세서는 데이타 저장 동작을 위해 주 데이타 버퍼와, 스크래치 패드 데이타 버퍼와, 제어 레지스터를 포함하는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  29. 제24항에 있어서, 상기 검색키상에 지오메트릭 해쉬 함수(geometric hash function)를 수행하는 해쉬 박스 요소(hash box component)를 더 포함하는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  30. 제24항에 있어서, 프로그램가능 검색키 레지스터(programmable search key register)와 프로그램가능 해싱된 키 레지스터(programmable hashed key register)를 더 포함하는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  31. 제30항에 있어서, 복수개의 서로 독립된 검색 트리들이 하나의 테이블 데이타 구조를 공유하는 것을 가능하게 해주는 프로그램가능 컬러 키 레지스터(programmable color key register)를 더 포함하는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  32. 제31항에 있어서, 상기 컬러 레지스터의 내용은, 만일 인에이블된다면, 최종 해싱된 키를 생성하기 위해 상기 해시 출력에 추가되는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  33. 제31항에 있어서, 컬러 레지스터가 인에이블되지 않는다면, 최종 해싱된 키를 생성하기 위해 등가 개수의 0을 상기 해시 출력에 추가하는 가변 길이 검색키에 대한 완전 정합 판별 장치.
  34. 가변 길이 검색키에 대한 완전 정합을 판별하기 위한 컴퓨터 프로그램 제품을 포함하는 컴퓨터 판독가능한 매체에 있어서,
    검색 스트링으로서의 입력키를 판독하는 프로그램 명령어와,
    해싱된 키를 상기 입력키로 변환할 수 있는 가역 해쉬 함수를 이용하여 상기입력키를 해싱하는 프로그램 명령어와,
    검색 트리 내의 복수개의 루트 노드를 나타내는 테이블 내로의 인덱스로서 상기 해싱된 키의 N개의 최상위 비트를 이용하는 프로그램 명령어-각각의 비어있지 않은 엔트리는 검색 트리 내의 다음 브랜치 또는 리프에 대한 포인터를 포함함-와,
    비어 있지 않은 테이블 엔트리 내의 포인터가 상기 대응하는 검색 트리의 다음 브랜치 또는 리프를 가리키는지의 여부를 판별하는 프로그램 명령어와,
    상기 포인터가 상기 대응하는 검색 트리의 상기 리프를 가리키지 않는다면 상기 다음 브랜치 내용을 판독하는 프로그램 명령어와,
    상기 대응하는 검색 트리의 리프에 도달하면 상기 리프의 내용을 판독하고 상기 리프 내의 패턴을 상기 해싱된 키와 비교하여 상기 리프 패턴이 상기 해싱된 키와 정합하는지를 판별하는 프로그램 명령어와,
    상기 리프 패턴이 상기 해싱된 키와 정합한다면 발견된 리프의 내용을 요청 애플리케이션으로 반환하는 프로그램 명령어
    를 포함하는 컴퓨터 판독가능한 매체.
KR10-2001-0015402A 2000-04-06 2001-03-24 네트워크 프로세서용 완전 정합(fm) 검색 알고리즘 구현 KR100477391B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/543,531 US6675163B1 (en) 2000-04-06 2000-04-06 Full match (FM) search algorithm implementation for a network processor
US09/543,531 2000-04-06

Publications (2)

Publication Number Publication Date
KR20010103588A true KR20010103588A (ko) 2001-11-23
KR100477391B1 KR100477391B1 (ko) 2005-03-17

Family

ID=24168430

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0015402A KR100477391B1 (ko) 2000-04-06 2001-03-24 네트워크 프로세서용 완전 정합(fm) 검색 알고리즘 구현

Country Status (4)

Country Link
US (3) US6675163B1 (ko)
JP (1) JP3651589B2 (ko)
KR (1) KR100477391B1 (ko)
CN (1) CN1148687C (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040046465A (ko) * 2002-11-27 2004-06-05 한국전자통신연구원 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법
KR101145490B1 (ko) * 2005-02-07 2012-05-16 지멘스 악티엔게젤샤프트 위험 검출 시스템에서 디바이스들의 포지션을 결정하기 위한 방법
KR101411266B1 (ko) * 2011-09-27 2014-06-25 주식회사 엘지씨엔에스 계층 구조를 이용한 이벤트 처리 방법 및 그를 이용한 이벤트 처리 엔진 및 그 시스템
KR101461821B1 (ko) * 2013-08-29 2014-11-13 주식회사 엘지씨엔에스 계층 구조를 이용한 이벤트 처리 방법 및 이를 수행하는 이벤트 처리 시스템

Families Citing this family (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6947931B1 (en) * 2000-04-06 2005-09-20 International Business Machines Corporation Longest prefix match (LPM) algorithm implementation for a network processor
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US7107265B1 (en) 2000-04-06 2006-09-12 International Business Machines Corporation Software management tree implementation for a network processor
US6928162B1 (en) * 2000-04-07 2005-08-09 International Business Machines Corporation Method and system for manipulating and telescoping a hash function
US6880064B1 (en) * 2000-06-21 2005-04-12 Mosaid Technologies, Inc. Method and apparatus for physical width expansion of a longest prefix match lookup table
WO2002017262A2 (en) * 2000-08-21 2002-02-28 United States Postal Services Delivery point validation system
KR100686732B1 (ko) * 2000-08-26 2007-02-23 삼성전자주식회사 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
US20020116527A1 (en) * 2000-12-21 2002-08-22 Jin-Ru Chen Lookup engine for network devices
KR100488414B1 (ko) * 2000-12-30 2005-05-11 한국전자통신연구원 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법
US20030026246A1 (en) * 2001-06-06 2003-02-06 Zarlink Semiconductor V.N. Inc. Cached IP routing tree for longest prefix search
US7054855B2 (en) * 2001-07-03 2006-05-30 International Business Machines Corporation Method and system for performing a pattern match search for text strings
US6947958B2 (en) * 2001-09-19 2005-09-20 Sony Corporation System and method for documenting composite data products
KR100456671B1 (ko) * 2001-11-24 2004-11-10 주식회사 케이티 네트워크 라우터의 고속 패킷 전달을 위한 병렬 룩업 엔진및 그 방법
US8195705B2 (en) 2001-12-11 2012-06-05 International Business Machines Corporation Hybrid search memory for network processor and computer systems
US6963868B2 (en) * 2002-06-03 2005-11-08 International Business Machines Corporation Multi-bit Patricia trees
US7451182B2 (en) * 2002-06-28 2008-11-11 Intel Corporation Coordinating operations of network and host processors
US7219211B1 (en) * 2002-11-19 2007-05-15 Juniper Networks, Inc. Precompute logic for software packet processing
US7117196B2 (en) * 2002-11-22 2006-10-03 International Business Machines Corporation Method and system for optimizing leaf comparisons from a tree search
US7146371B2 (en) * 2002-12-05 2006-12-05 International Business Machines Corporation Performance and memory bandwidth utilization for tree searches using tree fragmentation
US7643413B2 (en) * 2002-12-31 2010-01-05 Brooktree Broadband Holding, Inc. System and method for providing quality of service in asynchronous transfer mode cell transmission
US7627552B2 (en) 2003-03-27 2009-12-01 Microsoft Corporation System and method for filtering and organizing items based on common elements
US6917618B2 (en) * 2003-04-02 2005-07-12 Cisco Technology, Inc. Arrangement in a router for generating a route based on a pattern of a received packet
JP3842250B2 (ja) 2003-07-08 2006-11-08 インターナショナル・ビジネス・マシーンズ・コーポレーション 経路制御装置、経路制御方法及びそのプログラム
CN1826598A (zh) * 2003-07-21 2006-08-30 皇家飞利浦电子股份有限公司 在文档中搜索的方法
US7464331B2 (en) * 2003-08-18 2008-12-09 Microsoft Corporation System and method for validating hierarchically-organized messages
US7634500B1 (en) 2003-11-03 2009-12-15 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
US7243165B2 (en) * 2004-01-14 2007-07-10 International Business Machines Corporation Parallel pattern detection engine
US7433355B2 (en) * 2004-02-09 2008-10-07 Alcatel Lucent Filter based longest prefix match algorithm
US7412431B2 (en) * 2004-04-27 2008-08-12 International Business Machines Corporation Method for managing multi-field classification rules relating to ingress
US7454396B2 (en) * 2004-04-27 2008-11-18 International Business Machines Corporation Method for compressing multi-field rule specifications
US7366728B2 (en) 2004-04-27 2008-04-29 International Business Machines Corporation System for compressing a search tree structure used in rule classification
IL161874A (en) * 2004-05-07 2012-09-24 Yves Villaret System and method for searching strings of records
US7266548B2 (en) * 2004-06-30 2007-09-04 Microsoft Corporation Automated taxonomy generation
JP2006099524A (ja) * 2004-09-30 2006-04-13 Nec Commun Syst Ltd データ構造およびデータ検索方法
US7715384B2 (en) 2004-11-30 2010-05-11 Broadcom Corporation Unicast trunking in a network device
US8014390B2 (en) * 2004-11-30 2011-09-06 Broadcom Corporation Policy based routing using a fast filter processor
US7554984B2 (en) * 2004-11-30 2009-06-30 Broadcom Corporation Fast filter processor metering and chaining
US7680107B2 (en) * 2004-11-30 2010-03-16 Broadcom Corporation High speed trunking in a network device
US7830892B2 (en) 2004-11-30 2010-11-09 Broadcom Corporation VLAN translation in a network device
US7826481B2 (en) * 2004-11-30 2010-11-02 Broadcom Corporation Network for supporting advance features on legacy components
US8005084B2 (en) * 2004-11-30 2011-08-23 Broadcom Corporation Mirroring in a network device
CN101266599B (zh) * 2005-01-31 2010-07-21 日电(中国)有限公司 输入方法和用户终端装置
US7769858B2 (en) * 2005-02-23 2010-08-03 International Business Machines Corporation Method for efficiently hashing packet keys into a firewall connection table
CN1878164A (zh) * 2005-06-08 2006-12-13 华为技术有限公司 E.164号码域名存储和查询方法
US7665028B2 (en) 2005-07-13 2010-02-16 Microsoft Corporation Rich drag drop user interface
US7583590B2 (en) * 2005-07-15 2009-09-01 Telefonaktiebolaget L M Ericsson (Publ) Router and method for protocol process migration
US7353332B2 (en) * 2005-10-11 2008-04-01 Integrated Device Technology, Inc. Switching circuit implementing variable string matching
US7984180B2 (en) 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US7843927B1 (en) * 2006-12-22 2010-11-30 Extreme Networks, Inc. Methods, systems, and computer program products for routing packets at a multi-mode layer 3 packet forwarding device
US20070162481A1 (en) * 2006-01-10 2007-07-12 Millett Ronald P Pattern index
US8116312B2 (en) * 2006-02-08 2012-02-14 Solarflare Communications, Inc. Method and apparatus for multicast packet reception
US7644082B2 (en) * 2006-03-03 2010-01-05 Perfect Search Corporation Abbreviated index
US8266152B2 (en) * 2006-03-03 2012-09-11 Perfect Search Corporation Hashed indexing
US7792812B1 (en) * 2006-03-31 2010-09-07 Netlogic Microsystems, Inc. Search engine devices that support high speed parallel decoding of digital search tries
CN100371936C (zh) * 2006-04-03 2008-02-27 无锡永中科技有限公司 用于树型结构文件的数据查找方法
JP4271227B2 (ja) 2006-10-30 2009-06-03 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
JP4271214B2 (ja) * 2006-07-07 2009-06-03 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US8150856B2 (en) * 2006-07-07 2012-04-03 S. Grants Co., Ltd. Bit string searching apparatus, searching method, and program
US20080052270A1 (en) * 2006-08-23 2008-02-28 Telefonaktiebolaget Lm Ericsson (Publ) Hash table structure and search method
US7783654B1 (en) 2006-09-19 2010-08-24 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
CN100530182C (zh) * 2006-10-17 2009-08-19 中兴通讯股份有限公司 一种通信系统中字符串匹配信息的处理方法
US7805460B2 (en) * 2006-10-26 2010-09-28 Polytechnic Institute Of New York University Generating a hierarchical data structure associated with a plurality of known arbitrary-length bit strings used for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit string
JP4379894B2 (ja) * 2006-11-28 2009-12-09 株式会社エスグランツ カップルドノードツリーの分割/結合方法及びプログラム
US7720826B2 (en) * 2006-12-29 2010-05-18 Sap Ag Performing a query for a rule in a database
US7860849B1 (en) 2007-01-18 2010-12-28 Netlogic Microsystems, Inc. Optimizing search trees by increasing success size parameter
JP4402120B2 (ja) * 2007-01-24 2010-01-20 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
WO2008132806A1 (ja) * 2007-04-19 2008-11-06 S.Grants Co., Ltd. カップルドノードツリーの退避/復元方法、最長一致/最短一致検索方法、ビット列検索方法及び記憶媒体
JP4514768B2 (ja) * 2007-04-19 2010-07-28 株式会社エスグランツ カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム
JP4439013B2 (ja) * 2007-04-25 2010-03-24 株式会社エスグランツ ビット列検索方法及び検索プログラム
JP4514771B2 (ja) * 2007-05-18 2010-07-28 株式会社エスグランツ カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム
US8266062B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Server side reversible hash for telephone-based licensing mechanism
JP4527753B2 (ja) * 2007-07-03 2010-08-18 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US8312541B2 (en) * 2007-07-17 2012-11-13 Cisco Technology, Inc. Detecting neighbor discovery denial of service attacks against a router
US7912840B2 (en) * 2007-08-30 2011-03-22 Perfect Search Corporation Indexing and filtering using composite data stores
US7774347B2 (en) * 2007-08-30 2010-08-10 Perfect Search Corporation Vortex searching
US7774353B2 (en) * 2007-08-30 2010-08-10 Perfect Search Corporation Search templates
CN101802822B (zh) * 2007-09-14 2012-10-24 新叶股份有限公司 比特序列检索装置、检索方法以及程序
CN100527134C (zh) * 2007-12-04 2009-08-12 威盛电子股份有限公司 多模式搜寻的方法与系统
JP4502223B2 (ja) * 2007-12-05 2010-07-14 株式会社エスグランツ ビット列のマージソート装置、方法及びプログラム
JP4498409B2 (ja) * 2007-12-28 2010-07-07 株式会社エスグランツ データベースのインデックスキー更新方法及びプログラム
JP4567754B2 (ja) * 2008-01-17 2010-10-20 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US9128868B2 (en) * 2008-01-31 2015-09-08 International Business Machines Corporation System for error decoding with retries and associated methods
US8114117B2 (en) * 2008-09-30 2012-02-14 Tyco Healthcare Group Lp Compression device with wear area
JP4514810B2 (ja) * 2008-05-18 2010-07-28 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US8032495B2 (en) * 2008-06-20 2011-10-04 Perfect Search Corporation Index compression
US8051085B1 (en) 2008-07-18 2011-11-01 Netlogic Microsystems, Inc. Determining regular expression match lengths
US8675648B1 (en) 2008-09-30 2014-03-18 Juniper Networks, Inc. Methods and apparatus for compression in packet classification
US7738454B1 (en) 2008-09-30 2010-06-15 Juniper Networks, Inc. Methods and apparatus related to packet classification based on range values
US8798057B1 (en) 2008-09-30 2014-08-05 Juniper Networks, Inc. Methods and apparatus to implement except condition during data packet classification
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
US7961734B2 (en) * 2008-09-30 2011-06-14 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
US7796541B1 (en) 2008-09-30 2010-09-14 Juniper Networks, Inc. Methods and apparatus for range matching during packet classification based on a linked-node structure
US7835357B2 (en) * 2008-09-30 2010-11-16 Juniper Networks, Inc. Methods and apparatus for packet classification based on policy vectors
US8255496B2 (en) 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
US8565118B2 (en) * 2008-12-30 2013-10-22 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8190769B1 (en) 2008-12-30 2012-05-29 Juniper Networks, Inc. Methods and apparatus for provisioning at a network device in response to a virtual resource migration notification
US8331362B2 (en) * 2008-12-30 2012-12-11 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8488588B1 (en) 2008-12-31 2013-07-16 Juniper Networks, Inc. Methods and apparatus for indexing set bit values in a long vector associated with a switch fabric
US7889741B1 (en) 2008-12-31 2011-02-15 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
CN101556610B (zh) * 2009-05-04 2011-12-21 中兴通讯股份有限公司 网络处理器使用的建表和查表方法
US8953603B2 (en) * 2009-10-28 2015-02-10 Juniper Networks, Inc. Methods and apparatus related to a distributed switch fabric
US8442048B2 (en) * 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
KR100964207B1 (ko) 2009-11-13 2010-06-17 동국대학교 산학협력단 해시 기반 문서의 색인화 및 검색 방법 및 장치
US8331373B2 (en) 2010-03-15 2012-12-11 Extreme Networks, Inc. Methods, systems, and computer readable media for automatically selecting between internet protocol switching modes on a per-module basis in a packet forwarding device
EP2552059B1 (en) * 2010-03-24 2014-12-03 Nec Corporation Packet transfer system, control apparatus, transfer apparatus, method of creating processing rules, and program
US8599853B2 (en) 2010-04-16 2013-12-03 Wipro Limited System and method for an exact match search using pointer based pipelined multibit trie traversal technique
CN101834907B (zh) * 2010-05-21 2012-09-05 郑州金翔软件科技有限公司 端到端纠错码存储覆盖网系统的实现方法
US8880507B2 (en) 2010-07-22 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match using binary search tree
CN102012911B (zh) * 2010-11-19 2012-11-14 清华大学 基于约束优化的专家匹配方法及系统
US8312066B2 (en) * 2010-11-30 2012-11-13 Telefonaktiebolaget L M Ericsson (Publ) Hash collision resolution with key compression in a MAC forwarding data structure
US9282060B2 (en) 2010-12-15 2016-03-08 Juniper Networks, Inc. Methods and apparatus for dynamic resource management within a distributed control plane of a switch
US8891406B1 (en) 2010-12-22 2014-11-18 Juniper Networks, Inc. Methods and apparatus for tunnel management within a data center
US8615015B1 (en) * 2010-12-30 2013-12-24 Juniper Networks, Inc. Apparatus, systems and methods for aggregate routes within a communications network
US10069720B2 (en) 2011-06-06 2018-09-04 Alcatel Lucent Routing by resolution
US8880494B2 (en) * 2011-07-28 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match scheme
CN102609545A (zh) * 2012-03-14 2012-07-25 福建榕基软件股份有限公司 树型结构中快速搜索定位树结点的方法
US9172743B2 (en) * 2012-12-31 2015-10-27 Futurewei Technologies, Inc. Scalable storage systems with longest prefix matching switches
US9639544B1 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Table data persistence
KR102158389B1 (ko) * 2013-11-06 2020-09-21 삼성전자주식회사 컨텐츠 중심 네트워크에서 패킷 특성을 고려하는 노드의 동작 방법 및 노드
JP6209098B2 (ja) * 2014-02-07 2017-10-04 富士通株式会社 データ管理プログラム、データ管理方法、及びデータ管理システム
CN104301228A (zh) * 2014-09-12 2015-01-21 中国电子科技集团公司第三十二研究所 网络处理器中查找模块的实现方法及系统
US9886450B2 (en) * 2014-09-25 2018-02-06 Oracle International Corporation System and method for supporting zero-copy binary radix tree in a distributed computing environment
JP5960863B1 (ja) * 2015-03-11 2016-08-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 検索装置、検索方法、プログラム、及び記録媒体
US10241706B2 (en) * 2016-05-20 2019-03-26 Renesas Electronics Corporation Semiconductor device and its memory access control method
US11200217B2 (en) 2016-05-26 2021-12-14 Perfect Search Corporation Structured document indexing and searching
KR102597283B1 (ko) 2017-05-22 2023-11-01 브로리스 센서 테크놀로지, 유에이비 혈액 구성성분 농도 레벨의 실시간 모니터링을 위한 튜닝가능형 하이브리드 iii-v/iv 레이저 센서 시스템 온 칩
US11177630B2 (en) 2018-02-02 2021-11-16 Brolis Sensor Technology, Uab Wavelength determination for widely tunable lasers and laser systems thereof
CN113282800A (zh) * 2021-05-29 2021-08-20 北京威努特技术有限公司 一种基于信息熵的动态多模匹配方法及装置
CN117874308A (zh) * 2024-03-12 2024-04-12 北京全路通信信号研究设计院集团有限公司 一种列控数据获取方法、装置、电子设备及存储介质

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121495A (en) 1988-02-02 1992-06-09 Bell Communications Research, Inc. Methods and apparatus for information storage and retrieval utilizing hashing techniques
US5202985A (en) * 1988-04-14 1993-04-13 Racal-Datacom, Inc. Apparatus and method for displaying data communication network configuration after searching the network
CA2000006C (en) * 1989-01-23 1994-07-12 Walter W. Chang Combinatorial signatures for data encoding and searching
JP2698154B2 (ja) 1989-03-31 1998-01-19 アルプス電気株式会社 キートツプの製造方法
WO1991003791A1 (en) 1989-09-01 1991-03-21 Amdahl Corporation Operating system and data base
US5202986A (en) 1989-09-28 1993-04-13 Bull Hn Information Systems Inc. Prefix search tree partial key branching
EP0520116A1 (en) * 1991-06-28 1992-12-30 International Business Machines Corporation Method and apparatus for performing pattern search functions
JPH05167640A (ja) 1991-12-11 1993-07-02 Oki Electric Ind Co Ltd 通信プロトコル実装方式
US5519858A (en) * 1992-01-10 1996-05-21 Digital Equipment Corporation Address recognition engine with look-up database for storing network information
US5418947A (en) 1992-12-23 1995-05-23 At&T Corp. Locating information in an unsorted database utilizing a B-tree
US5918225A (en) 1993-04-16 1999-06-29 Sybase, Inc. SQL-based database system with improved indexing methodology
WO1996000945A1 (en) 1994-06-30 1996-01-11 International Business Machines Corp. Variable length data sequence matching method and apparatus
US5546390A (en) * 1994-12-29 1996-08-13 Storage Technology Corporation Method and apparatus for radix decision packet processing
US5815737A (en) * 1995-06-05 1998-09-29 Pmc-Sierra, Inc. Approach for identifying a subset of asynchronous transfer mode (ATM) VPI/VCI values in the complete VPI/VCI range
US5857196A (en) 1996-07-19 1999-01-05 Bay Networks, Inc. Method for storing a tree of potential keys in a sparse table
US5852820A (en) * 1996-08-09 1998-12-22 Digital Equipment Corporation Method for optimizing entries for searching an index
US20010055299A1 (en) * 1996-08-16 2001-12-27 Keith C. Kelly Method and apparatus for establishing communications between packet-switched and circuit-switched networks
US5940396A (en) * 1996-08-21 1999-08-17 3Com Ltd. Method of routing in an asynchronous transfer mode network
US5819291A (en) 1996-08-23 1998-10-06 General Electric Company Matching new customer records to existing customer records in a large business database using hash key
JP3284064B2 (ja) 1996-11-28 2002-05-20 日本電信電話株式会社 デジタル探索装置
US5978795A (en) * 1997-01-14 1999-11-02 Microsoft Corporation Temporally ordered binary search method and system
JP3520709B2 (ja) 1997-03-13 2004-04-19 三菱電機株式会社 ネットワークアドレス検索方式
US6035326A (en) * 1997-05-07 2000-03-07 International Business Machines Corporation Mapping table lookup optimization system
US5893086A (en) 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
US5946679A (en) 1997-07-31 1999-08-31 Torrent Networking Technologies, Corp. System and method for locating a route in a route table using hashing and compressed radix tree searching
US6553002B1 (en) * 1997-08-29 2003-04-22 Ascend Communications, Inc. Apparatus and method for routing data packets through a communications network
US6266706B1 (en) * 1997-09-15 2001-07-24 Effnet Group Ab Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams
JPH11122285A (ja) * 1997-10-16 1999-04-30 Fujitsu Ltd Lan電話交換装置及びシステム
US5946676A (en) * 1997-11-03 1999-08-31 Ithaca Media Corporation Information delivery system
US6012061A (en) 1997-11-25 2000-01-04 International Business Machines Corp. Method and apparatus for deleting nodes in Patricia trees
US6161144A (en) * 1998-01-23 2000-12-12 Alcatel Internetworking (Pe), Inc. Network switching device with concurrent key lookups
US6047283A (en) * 1998-02-26 2000-04-04 Sap Aktiengesellschaft Fast string searching and indexing using a search tree having a plurality of linked nodes
US6396842B1 (en) * 1998-04-30 2002-05-28 3Com Corporation Method of searching using longest match based Randix Search Trie with variable length keys and having prefix capability
US6430527B1 (en) * 1998-05-06 2002-08-06 Avici Systems Prefix search circuitry and method
US6522632B1 (en) * 1998-05-06 2003-02-18 Avici Systems Apparatus and method for efficient prefix search
US6876653B2 (en) * 1998-07-08 2005-04-05 Broadcom Corporation Fast flexible filter processor based architecture for a network device
US6560640B2 (en) * 1999-01-22 2003-05-06 Openwave Systems, Inc. Remote bookmarking for wireless client devices
GB9912129D0 (en) 1999-05-26 1999-07-28 3Com Corp Communication device with forwarding database having having a trie search facility
US6789116B1 (en) * 1999-06-30 2004-09-07 Hi/Fn, Inc. State processor for pattern matching in a network monitor device
US6404752B1 (en) * 1999-08-27 2002-06-11 International Business Machines Corporation Network switch using network processor and methods
US6460120B1 (en) * 1999-08-27 2002-10-01 International Business Machines Corporation Network processor, memory organization and methods
EP1250779A2 (en) * 1999-12-10 2002-10-23 Mosaid Technologies Incorporated Method and apparatus for longest match address lookup
US7107265B1 (en) 2000-04-06 2006-09-12 International Business Machines Corporation Software management tree implementation for a network processor
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US6671725B1 (en) * 2000-04-18 2003-12-30 International Business Machines Corporation Server cluster interconnection using network processor

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040046465A (ko) * 2002-11-27 2004-06-05 한국전자통신연구원 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법
KR101145490B1 (ko) * 2005-02-07 2012-05-16 지멘스 악티엔게젤샤프트 위험 검출 시스템에서 디바이스들의 포지션을 결정하기 위한 방법
KR101411266B1 (ko) * 2011-09-27 2014-06-25 주식회사 엘지씨엔에스 계층 구조를 이용한 이벤트 처리 방법 및 그를 이용한 이벤트 처리 엔진 및 그 시스템
KR101461821B1 (ko) * 2013-08-29 2014-11-13 주식회사 엘지씨엔에스 계층 구조를 이용한 이벤트 처리 방법 및 이를 수행하는 이벤트 처리 시스템

Also Published As

Publication number Publication date
US7120630B2 (en) 2006-10-10
US7139753B2 (en) 2006-11-21
CN1148687C (zh) 2004-05-05
KR100477391B1 (ko) 2005-03-17
CN1316696A (zh) 2001-10-10
US6675163B1 (en) 2004-01-06
JP2001357071A (ja) 2001-12-26
JP3651589B2 (ja) 2005-05-25
US20050177552A1 (en) 2005-08-11
US20050076010A1 (en) 2005-04-07

Similar Documents

Publication Publication Date Title
KR100477391B1 (ko) 네트워크 프로세서용 완전 정합(fm) 검색 알고리즘 구현
KR100429142B1 (ko) 네트워크 프로세서용 소프트웨어 관리 트리 구현
US7984038B2 (en) Longest prefix match (LPM) algorithm implementation for a network processor
US7089240B2 (en) Longest prefix match lookup using hash function
US7627570B2 (en) Highly scalable subscription matching for a content routing network
Doeringer et al. Routing on longest-matching prefixes
US9154442B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
JP3734704B2 (ja) パケット分類エンジン
US6529897B1 (en) Method and system for testing filter rules using caching and a tree structure
US7861291B2 (en) System and method for implementing ACLs using standard LPM engine
Iyer et al. ClassiPl: an architecture for fast and flexible packet classification
JP2003508954A (ja) ネットワーク・スイッチ及びコンポーネント及び操作方法
WO2004006061A2 (en) Dynamic ip router tables using highest-priority matching
JP2003508957A (ja) ネットワーク・プロセッサ処理コンプレックス及び方法
JP2003508951A (ja) Vlsiネットワーク・プロセッサ及び方法
Ficara et al. Enhancing counting bloom filters through huffman-coded multilayer structures
CN115917473A (zh) 用分布式lpm实现的高度可扩展算法构建数据结构的系统
US20070255676A1 (en) Methods and apparatus for performing tree-based processing using multi-level memory storage
Zhang et al. NetSHa: In-network acceleration of LSH-based distributed search
GB2371381A (en) Tree based search method
Markoborodov et al. An approach to the translation of software-defined network switch flow table into network processing unit assembly language
JP3443356B2 (ja) パケット分類装置
Takahashit A Systolic Sieve Array for Real-time Packet Classification
Dharmapurikar Algorithms and architectures for network search processors
Kumar Doctoral Dissertation Proposal: Acceleration of Network Processing Algorithms

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee