KR100429142B1 - 네트워크 프로세서용 소프트웨어 관리 트리 구현 - Google Patents

네트워크 프로세서용 소프트웨어 관리 트리 구현 Download PDF

Info

Publication number
KR100429142B1
KR100429142B1 KR10-2001-0015401A KR20010015401A KR100429142B1 KR 100429142 B1 KR100429142 B1 KR 100429142B1 KR 20010015401 A KR20010015401 A KR 20010015401A KR 100429142 B1 KR100429142 B1 KR 100429142B1
Authority
KR
South Korea
Prior art keywords
search
leaf
pattern
tree
key
Prior art date
Application number
KR10-2001-0015401A
Other languages
English (en)
Other versions
KR20010103587A (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 KR20010103587A publication Critical patent/KR20010103587A/ko
Application granted granted Critical
Publication of KR100429142B1 publication Critical patent/KR100429142B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

제어 포인트 프로세서(control point processor)에 의해 정의된 검색 메카니즘을 따르는 트리 구조(tree structure)를 생성하는 메카니즘을 제공하는 소프트웨어 관리형 트리(Software Managed Tree, SMT)용의 신규한 데이타 구조, 방법, 및 장치가 제공된다. 검색 메카니즘은 이전 포인터(previous pointer)에 관한 저장을 요구하지 않으며 테스트할 다음 비트 또는 비트 그룹과 함께 포워드 포인터(forward pointer)만을 필요로함으로써 노드 저장 공간을 줄여준다. 검색 메카니즘은 다중 검색을 요구하지 않고도 애플리케이션에 대해 다중 필터 규칙(multiple filter rule)을 처리하며, 아울러, 다양한 필터 규칙들이 체인화(chained)될 수 있도록 해준다. 범위 검색을 정의하기 위해 동일한 길이의 2개의 패턴이 각각의 리프(leaf) 내에 저장된다. 컴페어 앳 엔드(compare at end) 동작은 범위내 비교(compare under range) 또는 마스킹된 비교(compare under mask)중 어느 하나이다. 범위내 비교에서, 입력키가 2개의 패턴에 의해 정의된 범위 내에 있는지를 판별하기 위해, 입력키가 검사된다. 마스킹된 비교에서, 입력키 내의 비트들은 제2 리프 패턴에 의해 명시된 마스크하에서 제1 리프 패턴 내의 비트들과 비교된다.

Description

네트워크 프로세서용 소프트웨어 관리 트리 구현{SOFTWARE MANAGEMENT TREE IMPLEMENTATION FOR A NETWORK PROCESSOR}
본 출원은, 1999년 8월 27일 츨원되어 계류중에 있으며 동일인에게 양도된 일련번호 09/384,691호인 "Network Processor Processing Complex and Methods"; 일련번호(attorney docket RAL-1999-0139)인 "Full Match(FM) Search Algorithm Implementation for a Network Processor"; 및 일련번호(attorney docket RAL-1999-0140)인 "Longest Prefix Match(LPM) Algorithm Implementation for a Network Processor"와 공통된 내용을 다루고 있다. 각각의 계류중인 특허 출원은 본 명세서에서 참고용으로 인용하는 것이다.
본 발명은 일반적으로 패턴 정합 알고리즘(pattern matching algorithm)에 관한 것으로, 보다 구체적으로는, 네트워크 프로세서에서 구현될 수 있는 소프트웨어 관리형 트리 검색 알고리즘(software management tree 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)의 도움으로 수행된다.
본 발명의 목적은, 다중 검색을 요구하지 않고 애플리케이션에 대한 다중 필터 규칙을 처리해주는 고유하고 효과적인 메카니즘을 제공하는 것이다.
본 발명의 또 다른 목적은, 이전의 포인터들에 대한 저장을 요구하지 않고 테스트될 다음 차례의 비트 또는 비트 그룹과 함께 포워드 포인터들만을 이용함으로써 노드의 저장 공간을 감소시켜주는 검색 메카니즘을 제공하는 것이다.
본 발명은 제어 포인트에 의해 정의된 검색 메카니즘을 따르는 트리 구조를 생성하는 메카니즘을 제공하는 소프트웨어 관리형 트리(Software Managed Tree, SMT)를 위한 신규한 데이타 구조를 기술한다. 예시적인 이와 같은 메카니즘은, IP 소스 어드레스(IPSA), IP 목적지 어드레스(IPDA), 소스 포트(SP), 목적지 포트(DP), 및 통신 프로토콜을 포함한 인터넷 프로토콜 5-튜플 필터링 테이블일 것이다. 완전 정합(Full Match) 또는 최장 프레픽스 정합 트리(Longest Prefix Match Tree)와는 대조적으로, SMT 트리는 범위 비교(range comparison)를 지원한다. 예를 들어, 소스 포트가 범위 x 및 y에 반드시 있어야 한다는 것을 명시하기 위해 리프(leaf)가 이용될 수 있다. 이러한 접근법은 효율적인 저장 및 시간을 갖는 매우 효과적이고 간단한 구현을 허용한다. 이러한 접근법은 다양한 필터가 연쇄(chained)를 이루도록 허용해준다.
도 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)용의 외부 제로 버스 전환(ZeroBus Turnaround, ZBT) SRAM(30)과, 대규모 용량 요건을 위한 DDR DRAM(32)가 프로토콜 프로세서의 제어 저장용으로 제공된다.
네트워크 프로세서(10)는, 부착된 제어 포인트 프로세서(34) 상에서 동작하는 전처리(preprocessing) 알고리즘과 연계된 임베딩된 하드웨어 가속기를 이용하여, 와이어 속도로 복합 범위, 우선순위, 및 동작 내역을 갖는 1백개 이상의 필터링 규칙을 통해 프레임들을 처리할 수 있다. 이로 인해, 네트워크 프로세서-기반의 시스템이 게이트웨이, 서버 팜 응용, 및 혼합 트래픽의 처리에 관련된 필터링에 적합하게 된다.
네트워크 관리자가 일관성있고 사용자-친근형의 인터페이스에 필터 규칙을 입력하면 제어 포인트 소프트웨어는 자동 논리 검사를 제공한다. 네트워크 프로세서(10)는,안정성 이론에 기초한 신규한 흐름 제어를 이용하여, 흔히 이용되는 임의 조기 폐기 방법(random early discard method)보다, 전송제어프로토콜(Transfer Control Protocol:TCP) 붕괴없이, 높은 비율의 임시적인 과트래픽(oversubscription)을 잘 견딘다. 네트워크 프로세서(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)에 놓이고 EPC(12)에 인큐된다(enqueued). 프레임의 일부는 프레임 참조를 수행하기 위해 디스페처(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, 106)에 저장하기 때문이다.
키 길이 이 8비트 레지스터는 키-1 비트를 저장하며, 키 구축 동안에 하드웨어에 의해 자동으로 갱신된다.
LUDefIndex 이것은 참조 정의 테이블 내로의 8비트 인덱스로서, 검색이 이루어지는 트리에 대한 완전한 정의를 포함한다. LUDefIndex의 내부 구조는 도 11에 도시되어 있다.
TSRNr 검색 결과는 1비트 트리 검색 결과 영역(Tree Search Result Area) TSR0 또는 TSR1에 저장될 수 있다. 이것은 TSRN으로 명시된다. TSE가 검색하고 있는 동안에, 피코코드는 이전 검색 결과를 분석하기 위해 다른 TSR을 액세스할 수 있다.
컬러 (LUDefTable에 명시되는) 컬러 인에이블된 트리의 경우, 16비트 컬러 레지스터(124)의 내용이 해쉬 동작 동안에 키 내에 삽입된다.
참조 정의 테이블은 트리 검색 메모리를 관리하는 주 구조이다. 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) 이후에 바로 발생한다. 직접 테이블(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들의 MAC 어드레스를 구별할 수 있다.
해쉬 함수(104)는 그 출력의 대부분의 엔트로피가 최상위 비트에 존재하도록 정의된다. 해쉬키 레지스터(106)의 N개의 최상위 비트는 직접 테이블(DT, 108)의 인덱스를 계산하기 위해 이용된다.
SMT 트리의 경우, 입력키와 컬러는 함께 192비트 입력 패턴을 형성한다. 이 점에서, 컬러 레지스터는 키 레지스터의 확장판으로서 간주될 수 있다. SMT 트리는 컬러 인에이블 비트를 '0'으로 설정해야 한다. 또한, SMT 트리는 해쉬 함수를 이용하여야 하는데, 이는 176비트 입력키(102)와 16비트 컬러 레지스터(124)를 취하여, 키가 176개의 최좌측 비트를 형성하고 컬러가 16개의 최우측비트(LSB)를 형성하는,192비트 해쉬키(106)을 생성한다. 따라서, SMT 트리에 대한 해쉬 함수는 실제로는 해쉬 함수가 아니라, 키의 확장판으로서 컬러를 이용하는 수단이다.
효율적인 검색 및 저장을 달성하기 위해, 이러한 구현은 다음과 같은 데이타 구조를 이용한다:
a. 검색될 필요가 있는 패턴/키;
b. 직접 테이블(DT) 엔트리;
c. 패턴 검색 제어 블럭(PSCB);
d. 리프
e. 컴페어 앳 엔드
f. 비교 테이블 엔트리
DT 엔트리는 키의 처음 "N"개 비트에 기초한 제1 어드레스 위치로서, 이하에서 기술하는 부분들을 포함하고 있다. PSCB 엔트리는 중개 노드 위치이다. 리프 엔트리는 검색 결과를 위한 어드레스 위치이다. 비교 테이블 엔트리는 리프/패턴 비교 파라미터들을 기술한다. DT 엔트리는 이하에서 기술되는 바와 같이, 폭 1과 높이 1, 또는 폭 1과 높이 2에 의해 정의되는 형상(shape)를 가진다.
PSCB는 트리 내에서의 브랜치(branch)를 나타낸다. 양호한 실시예에서는 0-브랜치와 1-브랜치가 있다. PSCB로부터 나오는 브랜치의 개수는 브랜치를 가리키는데 사용되는 비트 개수에 따라 가변적이다. 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는 리프 패턴이 달라지는 위치들에서 트리내에 삽입된다. 이것은 효율적인 검색 동작을 허용하는데, 이는 PSCB의 개수, 이에 따라 검색 성능이 트리 내의 리프의 개수에만 의존하고 패턴의 길이에는 의존하지 않기 때문이다. PSCB 레지스터 포멧은 도 12에 도시되어 있다.
SMT 트리에서, PSCB 이후의 제1 리프는 LUDefTable 내에 정의된 형상을 가진다. 리프 체인 내의 다른 리프들은, 리프 내의 NLASMT 필드에 해당하는 연결 포인터(chaining pointer) 내의 5비트에 의해 정의된 형상을 가진다.
DT 및 PSCB 엔트리의 포멧은 동일하며 다음과 같은 부분들을 가진다:
a. SCB(Search Control Block, 검색 제어 블럭) 2비트.
b. 다음 PSCB 어드레스를 가리키는 NPA(Next Pattern Address, 다음 패턴 어드레스), 또는 리프/결과를 가리키는 LCBA(Leaf Control Block Address).
c. 테스트할 "x"개(x=1 또는 n)의 다음 비트 쌍 또는 비트 그룹을 가리킬 수 있는 NBT(Next Bit or Bits to Test, 테스트할 다음 비트 또는 비트들).
테스트할 비트 개수는 저장 효율등에 기초하여 결정됨.
d. 직접 리프(direct leaf).
이러한 구현에서 각각의 엔트리는 36 비트 폭을 가지며 3개의 가능한 현재 정의된 엔트리 포멧들 중 하나를 포함한다:
a. 빈 DT 엔트리: SCB=00 이고, NPA=0이며, NBT는 무효 또는 0이다.
b. NPA/NBT가 유효하다: SCB=00이고 NPA 및 NBT는 유효하다. DT 엔트리의 경우, NPA는 제1 중개 노드를 가리키고, NBT는 테스트할 비트 또는 비트들을 가리킨다. PSCB 엔트리의 경우, NPA는 트레일(trail) 내의 다른 노드들을 가리킨다.
c. LCBA가 유효하다: SCB=01. LCBA는 관련된 리프 어드레스, 즉, 검색 결과를 가리킨다.
d. 직접 리프: SCB=10이고 나머지 데이타는 검색 결과나 리프를 포함한다. 리프 데이타의 일부는 큰 검색 결과 저장을 지원하기 위해 리프 어드레스의 연결(chaining)을 포함한다.
DT 및 PSCB 엔트리의 메모리 할당에 관하여: SMT PSCB는, 2**테스트할 비트 개수만큼의 어드레스 쌍 또는 그룹으로 구성된다는 점만 제외하고는 SMT DT 엔트리와 동일한 구조를 가진다. 이들 어드레스 쌍 또는 그룹은 메모리 내에 연속적으로 할당되며 검색 트리를 검색하기 위한 브랜치/점프 포인터로서 이용된다.
SMT 트리 내의 리프의 포멧은 2개의 패턴을 포함한 제어 정보를 포함한다. 이들 2개 패턴은 범위비교를 정의하기 위해 이용된다. SMT 내의 리프는 NLASMT 필드를 이용하여 연결될 수 있다. 도 13은 SMT 트리를 위한 포멧을 도시한다. PSCB 이후에 제1 리프가 도달되면, 컴페어 앳 엔드(compare at end) 동작이 수행된다. 이것이 OK를 반환하면, 검색이 중단된다. 그러나, 컴페어 앳 엔드가 KO를 반환하고 0이 아닌 NLASMT 필드가 있다면, 다음 리프가 판독되고 또 다른 컴페어 앳 엔드 동작이 수행된다. 이러한 프로세스는 컴페어 앳 엔드가 OK를 반환할 때까지 계속되거나, NLASMT 필드가 0과 같을 때까지 계속되는데, 이 경우는 KO를 반환한다.
소프트웨어 관리 트리 검색을 위한 고수준 알고리즘 흐름도는 다음과 같다:
1. DT 엔트리 판독
a. SCB=00이고 NPA 및 NBT가 유효하다면, 다음 PSCB를 생성하기 위해 NPA 및 NBT를 판독.
b. NBT가 유효하지 않고 직접 리프가 유효하다면, 리프 내용을 판독하고 리프 평가 단계로 진행.
c. NBT가 유효하지 않고/않거나 리프가 존재하지 않는다면, KO, 즉, 검색 결과 실패를 리턴하고, 완료 플래그를 DONE으로 마크.
2. 리프 평가: 패턴(키)와 리프 내에 저장된 패턴을 비교. SMT는 항상 2개의 패턴을 포함한다. 이들 2개의 패턴은 범위 비교를 정의하기 위해 이용된다. 또한, SMT 내의 리프들은 (즉, 다음 리프 어드레스를 나타내는 NLASMT의 이용하여) 체인화될 수 있다. PSCB 이후에 첫번째 리프가 발견(hit)되면, 컴페어 앳 엔드 동작이 수행된다. 이 동작 결과 OK(성공) 반환되면, 검색은 OK와 더불어 정지된다. 그러나, 이 동작 결과 KO(실패)가 반환되고, 0, 즉, 유효한 NLASMT가 있다면, 다음 리프가 판독되고 또 다른 컴페어 앳 엔드 동작이 수행된다. 이 동작은 컴페어 앳 엔드 동작이 OK(성공)을 반환할 때까지 또는 NLASMT 필드가 유효하지 않아서 KO(실패)를 반환할때까지 계속된다.
본 명세서에서 기술되는 비트/레지스터 폭 값은 예시적인 것이며 가용 메모리, 성능 요건등을 최적화시키기 위해 다른 값으로 변경될 수 있다.
검색은 직접 테이블(108) 내로의 액세스로 시작한다. 즉, 직접 테이블로부터 DT가 판독된다. DT 엔트리를 판독하기 위해 이용되는 어드레스는, LUDefTable 내에 정의된 3개 특성에 기초하여 레지스터(106)의 해시키의 N개 최상위 비트로부터 계산된다. DT 엔트리는 트리의 루트(root)로 간주될 수 있다. 실제의 트리 데이타 구조는 트리-유형에 따라 달라진다. SMT 트리에 대해서는 패트리샤 트리 데이타 구조의 확장이 이용된다.
8개의 엔트리 DT(108)의 한 이용예가 도 6에 도시되어 있다. 검색 시간, 즉, 액세스되어야 하는 PSCB의 개수는 DT를 이용하여 감소될 수 있다. 따라서, DT 크기를 증가시킴으로써, 메모리 이용률과 검색 성능간에 절충(trade off)이 이루어질 수 있다.
성능상의 이유로 인해, 리프 포인터를 포함하는지의 여부만을 알기 위해-DT 엔트리의 판독 이후에는 리프 자체를 판독해야 함- DT 엔트리를 판독한다는 것은 비효율적이다. 이러한 상황은 FM 트리의 경우에 종종 발생한다. FM 트리는 DT 엔트리 하나당 많은 단일 리프 엔트리(many single leaf entries)를 포함한다. 직접 리프의 개념은 보다 높은 메모리 이용률과 보다 나은 성능간의 절충을 허용한다.
트리는 직접 리프를 인에이블시킬 수 있으며, 이러한 인에이블링은 참조정의 테이블(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)을 통과할 것이다.
SMT 트리 검색 동안에 PSCB를 마주치게 되면, 트리 검색 엔진 하드웨어는 해싱된 키의 비트 p값에 따라 0-브랜치 또는 1-브랜치 상에서 트리-보행을 계속할 것이다.
도 10은 본 발명의 소프트웨어 관리 트리 검색 알고리즘의 처리 논리를 도시한다. 알고리즘은 논리 블럭(100)에서 입력키의 판독과 더불어 시작한다. SMT 검색에서, 입력키는 선택적으로 해쉬키로 해싱될 수 있다. 해쉬 함수는 입력키 내의 비트들의 순서를 역전시킬 수도 있다. 예를 들어, 비트1과 비트7을 뒤바꿀 수도 있다. 해쉬함수가 사용될 때, 이것은 프로그래밍가능하다. 즉, 어느 비트들이 바뀔것인지(swap)에 관해 프로그래밍될 수 있다. 논리 블럭(1002)에 지시된 바와 같이, 다음으로 직접 테이블이 판독된다. 해쉬키의 상위 N개 비트들(N은 구성가능)은 직접 테이블 내로의 인덱스로서 이용된다. 판독된 엔트리가 비어 있다면, 종료 블럭(1004)에 도시된 바와 같이, 검색은 KO(발견되지 않음)을 반환한다. 판별 블럭(1006)에서 엔트리가 리프를 가리킨다면, 처리는 논리 블럭(1010)에서 리프의 내용 판독과 더불어 계속된다. 그렇지 않고, 엔트리가 PSCB를 가리킨다면, 논리 블럭(1008)에 도시된 바와 같이 PSCB의 적절한 부분이 판독된다. SMT 검색에 대해, PSCB는 FM PSCB의 포멧을 가질 수 있다. 대안으로, 이하에서 기술되는 바와 같이, 보다 진보된 포멧을 가질 수 있다.
논리 블럭(1008)에서 처리는, 리프가 발견되었는지의 여부를 판별하기 위해 판별 블럭(1008)로 복귀한다. 판별 블럭(1006)에서 리프가 발견되면, 논리 블럭(1010)에 도시된 바와 같이 리프가 판독되어, 논리 블럭(1012)에 도시된 바와 같이 입력키와 비교된다. 리프에 저장된 패턴과 판별 블럭(1014)에서의 입력키간에 정합이 있다면, 검색은 OK(성공)을 반환하며 종료 블럭(1018)에 도시된 바와 같이 리프의 내용을 애플리케이션으로 건네줄 것이다. 판별 블럭(1014)에서 정합이 없다면, 판별 블럭(1016)에 도시된 바와 같이 처리는 다음 리프가 존재하는지의 여부에 대한 판별과 더불어 계속된다. 리프 체인 내에 다음 리프가 존재한다면, 이 리프의 내용을 판독하기 위해 논리 블럭(1010)으로 처리가 되돌아간다. 그렇지 않고, 다음 리프가 없다면, 종료 블럭(1020)에 도시된 바와 같이 검색은 KO(실패)를 반환한다.
리프 패턴과 해싱된 키간의 비교 동작은 FM과 LPM 검색의 경우보다 복잡하다. 리프는 2개의 패턴, p1 및 p2를 포함한다. p1 및 p2 내의 해쉬키는 각각 논리적으로 N개의 필드로 분할된다. 비교 동작은 2개의 모드에 따라 수행될 수 있다: (i) p1은 최소치를, p2는 최대치를 나타낸다. (ii) p1은 패턴을, p2는 마스크를 나타낸다. (i)의 경우, p1≤ 해쉬키 ≤p2일 때 하부-비교(sub-compare)는 OK를 반환한다. (ii)의 경우, (해쉬키 AND p2) = (p1 AND p2)일 때 하부-비교는 OK를 반환한다.
각각의 필드에 대한 비교 모드뿐만 아니라 필드의 정의(각각의 필드의 크기와 위치)는 리프 내에 인코딩된 형태로 저장되거나, 특별한 참조 테이블 내에 저장될 수 있다. 양호한 실시예에서는, CompDefTable이 사용되며, 테이블의 인덱스가 리프 내에 저장된다.
확장으로서, PSCB는 2b개의 엔트리로 구성될 수 있다. 여기서, 해쉬키로부터의 b개의 비트는 PSCB로부터 어느 엔트리를 판독할 것인지를 선택한다. 이것은 보다 많은 메모리 사용을 댓가로 성능을 향상시켜 준다. 또한, 각각의 엔트리가 리프 비교에서 설명된 방식과 동일한 방식으로 동작하는 1개 또는 2개의 패턴(p1 및 p2)을 가지도록 PSCB가 확장될 수 있다. 예를 들어, PSCB가 길이 L(이 역시 PSCB에 저장됨)인 p1 및 p2를 갖는다고 가정하자. 그 후에, NBT에 의해 주어된 위치에서 해쉬키로부터 L개의 비트가 취해진다. 이들 L개의 비트들은 정수 I로서 해석된다. p1≤I≤p2일 때, 다음 PSCB로부터 엔트리 1이 사용되고, 그렇지 않은 경우, 다음 PSCB로부터 엔트리 0이 사용된다.
트리 검색 성능을 향상시키기 위해 캐쉬가 사용될 수도 있다. 캐쉬의 사용은, 트리별로 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)가 리프를 삽입 또는 삭제할 수 있도록 허용하는 융통성을 가진다.
SMT는, CP가 CP에 의해 정의된 검색 메카니즘을 따르는 트리 구조를 생성하는 메카니즘을 제공한다. 이러한 예는, IP 소스 어드레스(IPSA)와 IP 목적지 어드레스(IPDA)와 소스 포트와 목적지 포트와 프로토콜을 포함하는 IP 5-튜플 필터링 테이블일 것이다. FM 및 LPM 트리와는 대조적으로, SMT는 범위에 대한 지원을 제공한다. 예를 들어, 소스 포트는 범위 100...110 내에 있어야 한다는 것을 명시하기 위해 리프가 사용될 수 있다.
SMT와 FM/LPM 트리간의 차이점은 아래와 같다:
SMT는 리프 내에 항상 2개의 패턴을 포함한다. 2개의 패턴은 이하에서 설명하는 바와 같이 범위 비교를 정의하기 위해 사용된다.
SMT에서의 리프들은 다음 리프 어드레스(NLASMT) 필드를 이용하여 체인화될 수 있다. PSCB 이후 첫번째 리프가 발견되면, 컴페어 앳 엔드 동작이 수행된다. OK(성공)을 반환하면, 검색은 OK와 더불어 정지한다. KO(실패)가 반환되고 0이 아닌 NLASMT 필드가 있다면, 다음 리프가 판독되고 또 다른 컴페어 앳 엔드 동작이 수행된다. 이러한 처리는 컴페어 앳 엔드 동작이 OK(성공)을 반환할 때까지 계속되거나 NLASMT 필드가 0일때까지 계속되는데, 이는 KO(실패)가 반환된다.
FM/LPM 트리와는 대조적으로, SMT는 각각의 리프 내에 동일한 길이의 2개 패턴을 포함한다. 비교 동작을 위해, 입력키(그리고 비슷하게, 리프 내에 저장된 2개의 키)는 논리적으로 복수개의 필드로 분할될 수 있다. 한 예가 도 8에 도시되어 있다. 각각의 필드에 대해, 2개 비교들 중 하나가 수행된다:
1. 마스크하에서의 비교(Compare under mask). 입력키 내의 비트들은 리프 패턴1에 명시된 마스크하에서의 리프 패턴0 내의 비트들과 비교된다. 마스크 내의 '1'은, 입력키내의 대응하는 비트가 패턴0 내의 대응하는 비트와 동일해야 한다는 것을 가리킨다. 마스크 내의 '0'은, 입력키내의 대응하는 비트가 비교에 아무런 영향을 주지 않는다는 것을 가리킨다.
2. 범위내 비교(Compare under range). 입력키내의 비트들은, Min과 Max에 의해 주어지는 범위(Min과 Max도 범위에 포함됨) 내에 있는지를 판별하기 위해 검사되는 정수로서 다루어진다. 범위 내에 있다면 필드 비교는 OK이고, 그렇지않다면 KO이다. 모든 필드 비교가 OK인 경우에만, 컴페어 앳 엔드의 전체 비교가 OK를 반환한다. 그렇지 않다면, 컴페어 앳 엔드는 KO를 반환한다.
논리 필드들이 어떻게 정의되는지에 관한 것은 비교 정의 테이블(CompDefTable) 내에 명시되어 있다. 이 테이블의 엔트리 포멧의 한 예가 도 9에 도시되어 있다. 필드는 CompDefTable 내에 다른 것을 명시하는 엔트리가 있지 않는 이상 필드는 마스크하에서의 비교(compare under mask) 필드이다.
CompDefTable 내의 각각의 엔트리는 하나 또는 두개의 범위 비교를 지정한다. 이하에 설명되는 바와 같이, 2개 이상의 범위 비교를 지정하기 위해 복수개의 엔트리가 사용될 수 있다. 각각의 범위 비교는 2개의 파라미터에 의해 정의된다:
옵셋. 필드의 첫번째 바이트의 위치이다. 옵셋은 16-비트 범위이며 다음과 같은 값을 가질 수 있다: 0, 16, 32, 48, 64, 80, 96, 112, 128.
필드의 비트 길이. 길이는 다음과 같은 값을 가질 수 있다: 8, 16, 24, 32.
예를 들어, 도 8에 도시된 키에 대해, 소스 포트 필드에 대한 범위내 비교(compare under range)는 64로 설정된 Offset0와 16으로 설정된 Min/MaxLength0을 가지며, 목적지 포트 필드에 대한 범위내 비교는 80으로 설정된 Offset1과 16으로 설정된 Min/MaxLength1을 가질 것이다. 2개 이상의 범위 비교가 필요하다면, 계속 비트(continue bit)가 1로 설정되어야 한다. 이것은 CompDefTable 내의 다음 엔트리가 또 다른 하나 또는 2개의 범위내 비교를 정의하는데 이용될 수 있도록 해준다. SMT 비교를 위해 이용되는 CompDefTable 내의 인덱스는 리프 내에 명시된다.
성능상의 이유로 인해, 가능한 적은 횟수의 테이블내 비교(compare-under-table) 동작을 이용하는 것이 바람직하다. 각각의 테이블내 비교(compare-under-table)은 그 실행시에 추가적인 1개의 클럭 싸이클(7.5㎱)을 요구한다. 따라서, 범위가 2의 급수(즉, 128-255)이면, 어떠한 범위내 비교(compare-under-range)도 필요없으며, 이러한 종류의 범위는 마스크하에서의 비교(compare-under-mask) 동작을 이용하여 처리될 수 있다.
SMT 컴페어 앳 엔드가 실패하고 리프 내의 NLASMT 필드가 0이 아니면, TSE(70)은 다음 리프를 판독하고 비교가 OK를 반환하거나 NLASMT가 0과 같을때까지 또 다른 컴페어 앳 엔드 동작을 수행한다.
본 발명은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 본 명세서에 설명된 방법을 실행하는데 적합한 어떠한 종류의 시스템 또는 다른 장치도 이용될 수 있다. 하드웨어 및 소프트웨어의 전형적인 조합은, 로딩되어 실행될 때 본 명세서에 따른 방법을 실행하도록 컴퓨터 시스템을 제어하는 범용 컴퓨터 시스템일 수도 있다. 본 발명은 본 명세서에서 기술된 방법들을 구현할 수 있는 모든 특징들을 구비하고 컴퓨터 시스템에 로딩되었을 때 이들 방법들을 실행할 수 있는 컴퓨터 프로그램 제품 내에 임베딩될 수도 있다.
본 명세서에서 의미하는 컴퓨터 프로그램 명령어 또는 컴퓨터 프로그램은, 임의의 랭귀지, 코드(즉, 피코코드 명령어) 또는 표기로된 명령어 세트의 임의 표현으로서, 상기 명령어 세트는 직접적으로 정보 처리 능력을 갖는 시스템이 특정의 기능을 수행하도록 유발하거나, a) 다른 랭귀지, 코드 또는 표기로의 변환; b) 다른 재료 형태로의 복제중 어느 하나 또는 양쪽 모두를 거친 이후에 정보 처리 능력을 갖는 시스템이 특정의 기능을 수행하도록 유발한다.
당업자는 본 발명의 정신과 영역을 벗어나지 않고도 본 발명의 양호한 실시예에 대한 많은 수정이 가능하다는 것을 이해할 수 있을 것이다. 또한, 본 발명의 다른 특징을 이용하지 않고도 본 발명의 특징들중 일부를 이용하는 것도 가능하다. 따라서, 본 발명의 영역은 첨부된 특허청구범위에 의해 제한되기 때문에 양호한 실시예에 대한 상기의 설명들은 본 발명의 원리를 설명하기 위한 것이지 제한하기 위한 것은 아니다.
다중 검색을 요구하지 않고 애플리케이션에 대한 다중 필터 규칙을 처리해주는 고유하고 효과적인 메카니즘을 제공되며, 이전의 포인터들에 대한 저장을 요구하지 않고 테스트될 다음 차례의 비트 또는 비트 그룹과 함께 포워드 포인터들만을 이용함으로써 노드의 저장 공간을 감소시켜주는 검색 메카니즘이 제공되며, 제어 포인트에 의해 정의된 검색 메카니즘을 따르는 트리 구조를 생성하는 메카니즘을 제공하는 소프트웨어 관리형 트리(Software Managed Tree, SMT)를 위한 신규한 데이타 구조가 기술한다.

Claims (36)

  1. 소프트웨어 관리형 트리에서 가변 길이 검색키에 대한 패턴 범위 비교(pattern range comparison)를 컴퓨터 처리 장치에 의해 수행하기 위한 방법에 있어서,
    검색 스트링으로서의 입력키를 판독하는 단계와,
    상기 검색키의 N개 최상위 비트를, 복수개의 검색 트리들의 루트 노드들을 나타내는 테이블의 인덱스(index)로서 이용하는 단계-각각의 비-공백(non-empty) 엔트리는 상기 검색 트리 내의 다음 브랜치(branch) 또는 리프(leaf)에 대한 포인터를 포함함-와,
    상기 비-공백 테이블 엔트리 내의 포인터가 상기 대응하는 검색 트리의 리프 또는 다음 브랜치를 가리키는지를 판별하는 단계와,
    상기 포인터가 상기 대응하는 검색 트리의 리프를 가리키지 않는다면 다음 브랜치 내용(next branch content)을 판독하는 단계와,
    상기 대응하는 검색 트리의 리프에 도달하면 상기 리프의 내용을 판독하고 상기 리프 내의 패턴쌍과 상기 검색키를 비교하여 상기 리프 패턴쌍에 의해 정의된 범위가 상기 검색키를 포함하는지를 판별하는 단계와,
    상기 리프 패턴이 상기 검색키를 포함한다면 발견된 상기 리프의 내용을 요청 애플리케이션(requesting application)으로 반환하는 단계
    를 포함하는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  2. 제1항에 있어서, 검색키를 형성하기 위해 프로그램가능한 해쉬 함수(programmable hash function)를 이용하여 상기 입력키를 해싱하는 단계를 더 포함하는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  3. 제1항에 있어서, 검색 트리의 복수개의 루트 노드를 나타내는 상기 테이블은 2N개의 엔트리를 포함하는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  4. 제1항에 있어서, 상기 컴퓨터 처리 장치는 네트워크 프로세서(network processor)인 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  5. 제1항에 있어서, 상기 대응하는 검색 트리의 다음 브랜치의 내용은 또 다른 다음 브랜치를 가리키는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  6. 제1항에 있어서, 상기 다음 브랜치의 내용은 상기 대응하는 검색 트리의 리프를 가리키는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  7. 제1항에 있어서, 상기 리프 패턴이 상기 검색키를 포함하지 않고 또 다른 리프에 대한 포인터를 포함하지 않는다면, 실패 표시(no success indication)를 반환하는 단계를 더 포함하는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  8. 제1항에 있어서, 상기 테이블 내로의 인덱스가 비어 있는 엔트리에 대한 것이라면 실패 표시를 반환하는 단계를 더 포함하는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  9. 제1항에 있어서, 컬러 레지스터의 내용(contents of color register)을 상기 검색키에 추가하여 최종 검색키(final search key)를 제공하는 단계를 더 포함하는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  10. 제1항에 있어서, 0으로 이루어진 스트링(string of zeros)을 상기 검색키에 추가하여 최종 검색키를 제공하는 단계를 더 포함하는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  11. 제1항에 있어서, 상기 패턴쌍을 비교하는 동작은 범위내 비교(compare under range) 동작을 포함하고, 상기 범위내 비교에서 상기 검색키 내의 비트들은, 상기 검색키가 상기 패턴쌍에 의해 정의된 범위 내에 있는지를 판별하기 위해 검사되는 정수(integer)로서 다루어지는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  12. 제1항에 있어서, 상기 패턴쌍을 비교하는 동작은 마스크하에서의 비교(compare under mask) 동작을 포함하고, 상기 마스크하에서의 비교에서 상기 검색키 내의 비트들은, 제2 리프 패턴에 명시된 마스크하에서 제1 리프 패턴 내의 비트들과 비교되는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  13. 제1항에 있어서,
    상기 리프가 또 다른 리프에 대한 체인 포인터(chain pointer)를 포함한다면, 상기 또 다른 리프 내에 저장된 패턴쌍을 판독하여 이 패턴을 상기 검색키와 비교하는 단계와,
    상기 저장된 패턴이 상기 검색키를 포함하지 않고 상기 체인 내의 다음 리프에 대한 포인터를 포함하지 않는다면, 실패 표시를 반환하는 단계
    를 더 포함하는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  14. 제1항에 있어서,
    상기 리프가 또 다른 리프에 대한 체인 포인터를 포함한다면, 상기 또 다른 리프 내에 저장된 패턴쌍을 판독하여 상기 패턴을 상기 검색키와 비교하는 단계와,
    상기 저장된 패턴이 상기 검색키를 포함한다면 성공 표시(indication of success)를 반환하는 단계
    를 더 포함하는 컴퓨터 처리 장치에 의한 패턴 범위 비교 수행 방법.
  15. 소프트웨어 관리형 트리에서 가변 길이 검색키에 대한 패턴 범위 비교를 수행하기 위한 복수개의 데이타 구조를 포함하는 컴퓨터 판독가능 매체에 있어서,
    검색하고자 하는 패턴 또는 키와,
    검색 트리에 대한 첫번째 어드레스 위치를 저장하는 직접 테이블(direct table)과,
    각각이 검색 트리 내의 브랜치를 나타내는 복수개의 패턴 검색 제어 블럭과,
    각각의 엔트리와 연관된 적어도 하나의 범위 비교를 명시하는 비교 테이블과,
    각각이 상기 검색키와 비교하기 위한 패턴쌍을 저장하는 복수개의 리프
    를 포함하는 컴퓨터 판독가능 매체.
  16. 제15항에 있어서, 트리 검색 메모리를 관리하는 참조 정의 테이블(lookup definition table)을 더 포함하는 컴퓨터 판독가능 매체.
  17. 제15항에 있어서, 상기 참조 정의 테이블은 상기 트리가 위치하는 물리적 메모리와, 상기 키 및 리프의 크기와, 수행될 검색의 종류를 정의하는 엔트리를 포함하는 컴퓨터 판독가능 매체.
  18. 제15항에 있어서, 상기 참조 정의 테이블은 복수개의 메모리 내에 구현되는 컴퓨터 판독가능 매체.
  19. 제15항에 있어서, 상기 직접 테이블 엔트리용 포멧은,
    적어도 하나의 검색 제어 블럭과, 다음 패턴 검색 제어 블럭을 가리키는 다음 패턴 어드레스와, 리프 또는 결과를 가리키는 리프 제어 블럭 어드레스와, 테스트될 다음 비트나 비트들과, 직접 리프(direct leaf)를 포함하는 컴퓨터 판독가능 매체.
  20. 제15항에 있어서, 상기 패턴 검색 제어 블럭용 포멧은,
    적어도 하나의 검색 제어 블럭과, 다음 패턴 검색 제어 블럭을 가리키는 다음 패턴 어드레스와, 리프 또는 결과를 가리키는 리프 제어 블럭 어드레스와, 테스트될 다음 비트나 비트들을 포함하는 컴퓨터 판독가능 매체.
  21. 제15항에 있어서, 상기 비교 테이블은 적어도 하나의 범위 비교를 정의하는 엔트리를 포함하고, 각각의 범위 비교는, 필드의 첫번째 비트의 위치에 해당하는 옵셋 파라미터와, 비트단위의 필드 길이에 해당하는 길이 파라미터에 의해 정의되는 컴퓨터 판독 가능 매체.
  22. 제15항에 있어서, 리프 데이타 구조는 적어도 하나의 리프 체인 포인터와, 프레픽스(prefix) 길이와, 검색키와 비교될 패턴쌍과, 가변 사용자 데이타를 포함하는 컴퓨터 판독 가능 매체.
  23. 제15항에 있어서, 상기 직접 리프는 직접 테이블 엔트리 내에 직접 저장되며, 검색 제어 블럭 및 검색키와 비교될 패턴쌍을 포함하는 컴퓨터 판독 가능 매체.
  24. 제15항에 있어서, 상기 리프 패턴이 달라지는 위치에서 상기 검색 트리 내에 패턴 검색 제어 블럭이 삽입되는 컴퓨터 판독 가능 매체.
  25. 제15항에 있어서, 패턴 검색 제어 블럭은 폭 1 및 높이 1로 정의되는 형상(shape)을 가지며, 적어도 36비트의 라인 길이를 갖는 메모리 내에 저장되는 캄퓨터 판독 가능 매체.
  26. 소프트웨어 관리형 트리에서 가변 길이 검색키에 대한 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치에 있어서,
    프레임 처리를 제공하는 내부 제어 포인터 프로세서와 복수개의 프로토콜 프로세서를 포함하는 임베딩된 프로세서 복합체(embedded processor complex)와,
    상기 각각의 프로토콜 프로세서에 액세스할 수 있으며, 고속 패턴 검색과, 데이타 조작과, 프레임 해석(frame parsing)을 제공하는 복수개의 하드웨어 가속기 코프로세서와,
    적어도 하나의 검색 트리를 나타내는 복수개의 데이타 구조-상기 데이타 구조는 직접 테이블과, 패턴 검색 제어 블럭과, 비교 테이블과, 검색키와 비교될 패턴쌍을 포함하는 리프를 포함함-를 저장하는 복수개의 프로그래머블 메모리 디바이스와,
    복수개의 메모리 디바이스에 대한 각각의 프로토콜 프로세서의 액세스를 제어하는 제어 메모리 중재기
    를 포함하는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  27. 제26항에 있어서, 메모리 판독 및 기록과 메모리 범위 검사를 포함하는 트리 검색 명령어를 수행하기 위해 프로토콜 프로세서 실행과 병행하여 동작하는 트리 검색 엔진(tree search engine)을 더 포함하는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  28. 제26항에 있어서, 상기 복수개의 메모리 디바이스는 적어도 하나의 내부 스태틱(static) 랜덤 액세스 메모리와, 외부 스태틱 랜덤 액세스 메모리와, 외부 다이내믹 랜덤 액세스 메모리를 더 포함하는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  29. 제26항에 있어서, 상기 제어 메모리 중재기는 상기 복수개의 프로토콜 프로세서와 상기 복수개의 메모리 디바이스에 메모리 싸이클을 할당함으로써 제어 메모리 동작을 관리하는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  30. 제26항에 있어서, 각각의 프로토콜 프로세서는 데이타 저장 동작을 위해 1차 데이타 버퍼와, 스크래치 패드 데이타 버퍼와 제어 레지스터를 포함하는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  31. 제26항에 있어서, 상기 검색키에 대해 지오메트릭 해쉬 함수(geometric hash function)를 수행하는 해쉬 박스 요소(hash box component)를 더 포함하는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  32. 제26항에 있어서, 프로그래머블 검색 키 레지스터(programmable search key register)와 프로그래머블 해쉬키 레지스터(programmable hashed key register)를 더 포함하는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  33. 제32항에 있어서, 복수개의 독립된 검색 트리들이 하나의 테이블 데이타 구조를 공유가능하게 해주는 프로그래머블 컬러 키 레지스터(programmable color key register)를 더 포함하는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  34. 제33항에 있어서, 상기 컬러 키 레지스터가 인에이블된다면, 상기 컬러 키 레지스터의 내용물이 최종의 해쉬키(final hashed key)를 생성하기 위해 해쉬 출력(hash output)에 추가되는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  35. 제33항에 있어서, 상기 컬러 레지스터가 인에이블되지 않으면, 최종 해쉬키를 생성하기 위해 동일한 개수의 0을 해쉬 출력에 추가하는 패턴 범위 비교를 수행하기 위해 반도체 기판 상에 제조된 장치.
  36. 소프트웨어 관리형 트리에서 가변 길이 검색키에 대한 패턴 범위 비교(pattern range comparison)를 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능 매체에 있어서,
    검색 스트링으로서의 입력키를 판독하는 프로그램 명령어와,
    상기 검색키의 N개 최상위 비트를, 검색 트리의 복수개의 루트 노드(root node)를 나타내는 테이블 내로의 인덱스(index)로서 이용하는 프로그램 명령어-각각의 비-공백 엔트리는 검색 트리 내의 다음 브랜치 또는 리프에 대한 포인터를 포함함-와,
    상기 비-공백 테이블 엔트리 내의 포인터가 상기 대응하는 검색 트리의 리프 또는 다음 브랜치를 가리키는지를 판별하는 프로그램 명령어와,
    상기 포인터가 상기 대응하는 검색 트리의 리프를 가리키지 않는다면 다음 브랜치 내용을 판독하는 프로그램 명령어와,
    상기 대응하는 검색 트리의 리프에 도달하면 상기 리프의 내용을 판독하고 상기 리프 내의 패턴쌍과 상기 검색키를 비교하여 상기 리프 패턴쌍에 의해 정의된 범위가 상기 검색키를 포함하는지를 판별하는 프로그램 명령어와,
    상기 리프 패턴이 상기 검색키를 포함한다면 발견된 상기 리프의 내용을 요청 애플리케이션으로 반환하는 프로그램 명령어
    를 포함하는 컴퓨터 판독 가능 매체.
KR10-2001-0015401A 2000-04-06 2001-03-24 네트워크 프로세서용 소프트웨어 관리 트리 구현 KR100429142B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/545,100 US7107265B1 (en) 2000-04-06 2000-04-06 Software management tree implementation for a network processor
US09/545,100 2000-04-06

Publications (2)

Publication Number Publication Date
KR20010103587A KR20010103587A (ko) 2001-11-23
KR100429142B1 true KR100429142B1 (ko) 2004-04-29

Family

ID=24174892

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0015401A KR100429142B1 (ko) 2000-04-06 2001-03-24 네트워크 프로세서용 소프트웨어 관리 트리 구현

Country Status (4)

Country Link
US (1) US7107265B1 (ko)
JP (1) JP3651783B2 (ko)
KR (1) KR100429142B1 (ko)
CN (1) CN1195279C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180118736A (ko) * 2016-03-01 2018-10-31 알리바바 그룹 홀딩 리미티드 데이터 처리 방법 및 디바이스

Families Citing this family (32)

* 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
US7856543B2 (en) * 2001-02-14 2010-12-21 Rambus Inc. Data processing architectures for packet handling wherein batches of data packets of unpredictable size are distributed across processing elements arranged in a SIMD array operable to process different respective packet protocols at once while executing a single common instruction stream
US8195705B2 (en) * 2001-12-11 2012-06-05 International Business Machines Corporation Hybrid search memory for network processor and computer systems
WO2004032435A1 (ja) * 2002-10-03 2004-04-15 In4S Inc. ビットストリングの照合方法および装置
US20040098510A1 (en) * 2002-11-15 2004-05-20 Ewert Peter M. Communicating between network processors
US8037102B2 (en) 2004-02-09 2011-10-11 Robert T. and Virginia T. Jenkins Manipulating sets of hierarchical data
US9646107B2 (en) 2004-05-28 2017-05-09 Robert T. and Virginia T. Jenkins as Trustee of the Jenkins Family Trust Method and/or system for simplifying tree expressions such as for query reduction
US7620632B2 (en) * 2004-06-30 2009-11-17 Skyler Technology, Inc. Method and/or system for performing tree matching
US7801923B2 (en) 2004-10-29 2010-09-21 Robert T. and Virginia T. Jenkins as Trustees of the Jenkins Family Trust Method and/or system for tagging trees
US7627591B2 (en) 2004-10-29 2009-12-01 Skyler Technology, Inc. Method and/or system for manipulating tree expressions
US7636727B2 (en) 2004-12-06 2009-12-22 Skyler Technology, Inc. Enumeration of trees from finite number of nodes
US7630995B2 (en) 2004-11-30 2009-12-08 Skyler Technology, Inc. Method and/or system for transmitting and/or receiving data
US8316059B1 (en) 2004-12-30 2012-11-20 Robert T. and Virginia T. Jenkins Enumeration of rooted partial subtrees
US8615530B1 (en) 2005-01-31 2013-12-24 Robert T. and Virginia T. Jenkins as Trustees for the Jenkins Family Trust Method and/or system for tree transformation
US7681177B2 (en) 2005-02-28 2010-03-16 Skyler Technology, Inc. Method and/or system for transforming between trees and strings
US7376809B2 (en) * 2005-03-09 2008-05-20 International Business Machines Corporation Systems and methods for multi-frame control blocks
US7466715B2 (en) * 2005-03-28 2008-12-16 International Business Machines Corporation Flexible control block format for frame description and management
US8356040B2 (en) 2005-03-31 2013-01-15 Robert T. and Virginia T. Jenkins Method and/or system for transforming between trees and arrays
US7899821B1 (en) 2005-04-29 2011-03-01 Karl Schiffmann Manipulation and/or analysis of hierarchical data
US7784094B2 (en) * 2005-06-30 2010-08-24 Intel Corporation Stateful packet content matching mechanisms
JP4891657B2 (ja) * 2006-05-29 2012-03-07 株式会社野村総合研究所 データ記憶システム、ファイル検索装置およびプログラム
US20090310544A1 (en) * 2008-06-12 2009-12-17 Praval Jain Method and system for increasing throughput in a hierarchical wireless network
CN102783097B (zh) * 2010-03-24 2015-04-08 日本电气株式会社 分组转发系统、控制设备、转发设备以及用于准备处理规则的方法
US8935508B1 (en) * 2010-08-30 2015-01-13 Qualcomm Incorporated Implementing pseudo content access memory
US20120066265A1 (en) * 2010-09-10 2012-03-15 Siemens Corporation Method and Apparatus for Supporting Multiple Users Working on a Project
CN103248649B (zh) * 2012-02-09 2016-08-24 宇龙计算机通信科技(深圳)有限公司 应用的分类管理方法、设备及系统
US10320955B1 (en) * 2012-08-30 2019-06-11 Keysight Technologies, Inc. Method for decoding data packets
JP6209098B2 (ja) * 2014-02-07 2017-10-04 富士通株式会社 データ管理プログラム、データ管理方法、及びデータ管理システム
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
US20160335296A1 (en) * 2015-05-14 2016-11-17 Blue Sage Communications, Inc. Memory System for Optimized Search Access
US10397116B1 (en) * 2017-05-05 2019-08-27 Amazon Technologies, Inc. Access control based on range-matching

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0419889A2 (en) * 1989-09-28 1991-04-03 Bull HN Information Systems Inc. Prefix search tree with partial key branching
JPH10162013A (ja) * 1996-11-28 1998-06-19 Nippon Telegr & Teleph Corp <Ntt> デジタル探索装置
US5857196A (en) * 1996-07-19 1999-01-05 Bay Networks, Inc. Method for storing a tree of potential keys in a sparse table
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

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2698154B2 (ja) 1989-03-31 1998-01-19 アルプス電気株式会社 キートツプの製造方法
JPH05167640A (ja) 1991-12-11 1993-07-02 Oki Electric Ind Co Ltd 通信プロトコル実装方式
US5787430A (en) 1994-06-30 1998-07-28 International Business Machines Corporation Variable length data sequence backtracking a trie structure
JP3520709B2 (ja) 1997-03-13 2004-04-19 三菱電機株式会社 ネットワークアドレス検索方式
US6460120B1 (en) * 1999-08-27 2002-10-01 International Business Machines Corporation Network processor, memory organization and methods
US20030093613A1 (en) * 2000-01-14 2003-05-15 David Sherman Compressed ternary mask system and method
US6675163B1 (en) 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0419889A2 (en) * 1989-09-28 1991-04-03 Bull HN Information Systems Inc. Prefix search tree with partial key branching
US5857196A (en) * 1996-07-19 1999-01-05 Bay Networks, Inc. Method for storing a tree of potential keys in a sparse table
JPH10162013A (ja) * 1996-11-28 1998-06-19 Nippon Telegr & Teleph Corp <Ntt> デジタル探索装置
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180118736A (ko) * 2016-03-01 2018-10-31 알리바바 그룹 홀딩 리미티드 데이터 처리 방법 및 디바이스
KR102153806B1 (ko) 2016-03-01 2020-09-10 알리바바 그룹 홀딩 리미티드 데이터 처리 방법 및 디바이스
US11200220B2 (en) 2016-03-01 2021-12-14 Advanced New Technologies Co., Ltd. Efficient storage of user personal attributes for service provisioning

Also Published As

Publication number Publication date
US7107265B1 (en) 2006-09-12
JP2002024293A (ja) 2002-01-25
JP3651783B2 (ja) 2005-05-25
CN1316708A (zh) 2001-10-10
CN1195279C (zh) 2005-03-30
KR20010103587A (ko) 2001-11-23

Similar Documents

Publication Publication Date Title
KR100429142B1 (ko) 네트워크 프로세서용 소프트웨어 관리 트리 구현
KR100477391B1 (ko) 네트워크 프로세서용 완전 정합(fm) 검색 알고리즘 구현
US7383244B2 (en) Longest prefix match (LPM) algorithm implementation for a network processor
US7116663B2 (en) Multi-field classification using enhanced masked matching
US7627570B2 (en) Highly scalable subscription matching for a content routing network
Taylor Survey and taxonomy of packet classification techniques
US20040236720A1 (en) Longest prefix match lookup using hash function
US9563399B2 (en) Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features
US7054315B2 (en) Efficiency masked matching
JP3734704B2 (ja) パケット分類エンジン
US9154442B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US7382787B1 (en) Packet routing and switching device
US8898204B1 (en) System and method for controlling updates of a data structure
US8762362B1 (en) System and method for updating a data structure
Iyer et al. ClassiPl: an architecture for fast and flexible packet classification
CN115917520A (zh) 用于通过分布式算法为可编程数据平面提供lpm实现的系统
Ficara et al. Enhancing counting bloom filters through huffman-coded multilayer structures
CN115917473A (zh) 用分布式lpm实现的高度可扩展算法构建数据结构的系统
GB2371381A (en) Tree based search method
Peyravian et al. Search engine implications for network processor efficiency
Markoborodov et al. An approach to the translation of software-defined network switch flow table into network processing unit assembly language
JP3443356B2 (ja) パケット分類装置
Dharmapurikar Algorithms and architectures for network search processors
Kumar Doctoral Dissertation Proposal: Acceleration of Network Processing Algorithms
Wang High speed string matching for virus scanning-Quick Sampling and Verification

Legal Events

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