KR100864888B1 - 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법 - Google Patents

라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법 Download PDF

Info

Publication number
KR100864888B1
KR100864888B1 KR1020070014293A KR20070014293A KR100864888B1 KR 100864888 B1 KR100864888 B1 KR 100864888B1 KR 1020070014293 A KR1020070014293 A KR 1020070014293A KR 20070014293 A KR20070014293 A KR 20070014293A KR 100864888 B1 KR100864888 B1 KR 100864888B1
Authority
KR
South Korea
Prior art keywords
rule
sequence
node
link list
ternary cam
Prior art date
Application number
KR1020070014293A
Other languages
English (en)
Other versions
KR20080075307A (ko
Inventor
구윤진
김봉철
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020070014293A priority Critical patent/KR100864888B1/ko
Priority to US12/068,365 priority patent/US20080192754A1/en
Publication of KR20080075307A publication Critical patent/KR20080075307A/ko
Application granted granted Critical
Publication of KR100864888B1 publication Critical patent/KR100864888B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명의 일측면에 따른 라우팅 시스템의 룰 엔트리 관리 방법은, 각각의 엔트리에 대응되는 해쉬 키를 가지는 해쉬 테이블을 구성하는 단계, 상기 해쉬 테이블의 엔트리를 헤드 노드로 하고, 룰 ID와 룰이 입력된 우선순위에 따라 부여되는 시퀀스 ID를 포함하는 각 노드들을 연결하는 단일 링크 리스트를 구성하는 단계 및 독립적인 헤드 노드를 가지고, 상기 단일 링크 리스트를 구성하는 각 노드들을 시퀀스 ID 순서에 따라 양방향으로 연결하는 양방향 링크 리스트를 구성하는 단계를 포함하며, 이에 의할 때 최소한의 정보만을 가지고도 패킷 분류나 패킷 필터링 룰을 터너리 CAM에 쉽게 추가하거나 터너리 CAM에서 삭제할 수 있으며, 룰의 우선 순위를 지키면서 터너리 CAM에 룰을 최대한 저장하기 위해서 필요한 시퀀스 ID 재할당 과정을 룰 추가 또는 삭제 후 일정 시간 후에 시행하도록 하여 패킷 분류나 패킷 필터링 룰 설정시 발생할 수 있는 지연도(latency)를 줄일 수 있는 효과가 있다.

Description

라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법{Routing System and Method for Managing Rule Entry of Ternary Content Addressable Memory}
도 1은 검색키와 마스크를 이용한 터너리 CAM의 엔트리 정보 검색 과정을 도시한 도면.
도 2는 종래 라우팅 시스템에서 터너리 CAM과 보조 메모리의 대응 관계를 도시한 도면.
도 3은 룰 정보의 우선 순위와 터너리 CAM에 엔트리 저장 위치와의 매핑 정보를 관리하는 메커니즘을 도시한 도면.
도 4는 본 발명에 따른 라우팅 시스템의 구성을 도시한 도면.
도 5는 본 발명에서 터너리 CAM의 룰 엔트리를 관리하기 위하여 생성되는 해쉬 테이블과 단일 링크 리스트 및 양방향 링크 리스트의 연결 관계를 도시한 도면.
도 6은 룰 5개가 이미 저장된 후에 새로운 룰 하나를 추가한 후의 해쉬 테이블, 단일 링크 리스트, 양방향 링크 리스트 및 터너리 CAM의 모습을 도시한 도면.
도 7은 도 6에서 룰 #1과 룰 #3을 터너리 CAM에서 삭제한 후의 터너리 CAM 구조와 매핑 정보의 변화 모습을 도시한 도면.
도 8은 삭제된 룰 #1과 룰 #3을 다시 터너리 CAM에 추가한 후의 터너리 CAM 구조와 매핑 정보의 변화 모습을 도시한 도면.
도 9는 시퀀스 ID 재할당 과정을 거친 상태에서, 룰 #7을 터너리 CAM에 추가한 후의 터너리 CAM 구조와 매핑 정보의 변화 모습을 도시한 도면.
도 10은 본 발명에 따라 터너리 CAM에 룰을 추가하는 과정을 도시한 도면.
도 11은 시퀀스 ID 재할당 과정을 도시한 도면.
도 12는 본 발명에 따라 터너리 CAM에서 룰을 삭제하는 과정을 도시한 도면.
*도면의 주요 부분에 대한 부호의 설명*
400: 네트워크 프로세서 402: 인터페이스부
404: 엔트리 관리부 406: 룩업 처리부
410: TCAM 420: 보조 메모리
510: 해쉬 테이블 520: 헤드 노드
본 발명은 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법에 관한 것으로, 보다 자세하게는 해쉬 테이블과 해쉬 테이블에 연결된 단일 링크 리스트 및 양방향 링크 리스트를 사용하여 터너리 내용 주소화 메모리(TCAM)에 룰을 고속 으로 적재하는 테이블 관리 방법에 관한 것이다.
라우팅 기능을 프로세싱 환경에서 실행되는 소프트웨어로 구현했을 때, 그 처리 성능이 패킷의 입력 속도를 따라가지 못하는 경우 병목 현상이 발생한다. 라우팅 과정 중에서 트래픽의 흐름 속도에 영향을 미치는 것은 입력된 패킷에 새로운 헤더 정보를 붙여 다시 송신하는 패킷 포워딩 과정이다. 따라서 라우팅 기능을 고속화하기 위하여 우선 패킷 포워딩 부분만을 분리시킨 고속 포워딩 엔진 기술이 개발되었다.
패킷 포워딩 과정을 고속화하기 위해서는 입력된 패킷에 대한 새로운 헤더정보를 얻기 위한 IP 주소 테이블 룩업(Lookup) 과정에 걸리는 시간을 단축하여야 한다. 이를 위해 소프트웨어적인 방법과 하드웨어적인 방법이 연구되어 왔다.
소프트웨어적인 방법은 대부분 압축 알고리즘을 사용하여 메모리 사용량을 줄이고, 이를 캐쉬나 SRAM과 같은 빠른 메모리를 사용하여 라우팅 룩업을 향상시키는 방법을 주로 사용한다. 이에 의할 때 마이크로프로세서의 성능 향상과 캐쉬의 향상된 히트(Hit)율 증가, 그리고 더욱 빠른 FSB(Front Side Bus)의 직접적인 혜택을 얻을 수 있다. 그러나 소프트웨어적인 방법은 라우팅 업데이트시 전체를 재구성해야 하는 알고리즘이 많으며, 또한 평균적인 검색 효율은 뛰어나더라도 트리 구조가 밀집해 있을 경우 검색 효율이 떨어져 최악의 경우, 32번의 메모리 액세스가 요구되는 단점이 있다.
하드웨어적인 방법에는 크게 메모리를 이용하여 선형적으로 IP 어드레스를 메모리로 매핑하는 방법과 압축 알고리즘을 하드웨어로 구현하는 방법 등이 있다. 하드웨어적인 방법은 파이프라이닝으로 인한 라우팅 속도 향상이 가능하고, 마이크로프로세서로 구현시 OS를 포팅할 때 연산이나 인스트럭션으로 인한 라우팅 속도가 떨어지지 않는 장점을 가지고 있다.
과거에 IP 주소 룩업 과정을 소프트웨어를 통하여 처리하는 경우에는, IP 주소 정보를 트리 형식으로 구성하여 수행하였다. 그 후 점차 고속의 룩업이 요구되면서, 룩업 기능을 하드웨어로 구현하여 처리할 필요가 발생하였다. 그러나 트리 형태의 알고리즘은 하드웨어로 구현하는 것이 어려우며, 구현한다 하더라도 대용량, 고속화에 있어서 한계를 갖는다.
최근 하드웨어 구현으로 각광 받는 룩업 방식은 내용 주소화 메모리(Content Addressable Memory: CAM)를 이용한 룩업 방식이다. CAM은 기억 장치 내에 자료를 수록하거나 읽어낼 때, 실제의 자료 내용을 주소로 하여 접근하는 기억 장치이다. CAM은 데이터를 이용하여 그 데이터와 관련된 값이 위치해 있는 주소를 검색하는 기능을 가지고 있으며, 각 셀(Cell)마다 비교를 위한 XOR 연산을 할 수 있는 특성을 가진 장치로서, 기존의 RAM(Random Access Memory) 구조와는 달리 외부의 정보를 저장된 내용과 비교함으로써 읽고 쓰는 연관 기억 장치(Associative Memory) 구조로 되어 있다. CAM은 이러한 특성으로 인해 네트워크 라우터에서의 검색 엔진에 이용되고 있다.
CAM의 특성상 IP 정보를 입력하면, 1 클럭에 바로 해당 포트 등에 대한 정보를 알 수 있다. 나아가 0과 1외에 Don't care(무정의 값) 정보의 저장이 가능한 터너리 CAM(Ternary CAM: TCAM)을 이용하면 LPM(Longest Prefix Match)까지도 비교 적 쉽게 구현할 수 있다.
근래에 새롭게 요구되고 있는 패킷 분류 기능 또는 패킷 필터링 기능은 IP 포워딩 엔진에서 구현하는 것이 어렵다. 예를 들어, 패킷 분류를 위해서는 5-튜플(Tuple), 즉 목적지 IP 주소(destination IP address), 소스 IP 주소(source IP address), 소스/목적지 포트 넘버(source/destination port number) 및 프로토콜 필드 까지도 볼 필요가 있는데, 이를 미리 설정된 다양한 패킷 필터링 규칙들과 비교하는 작업을 매 패킷마다 하여야 되기 때문에 IP 주소 룩업보다 훨씬 복잡한 작업이 된다.
터너리 CAM(TCAM)은 10~20 나노 초(nanoseconds)의 매우 짧은 시간내에 찾고자 하는 키와 터너리 CAM안의 모든 엔트리들을 병렬적으로 비교함으로써, 룩업 결과 검색을 가능하게 한다. 터너리 CAM에는 내용 비트 스트링(Content Bit String)에 따르는 마스크 비트 스트링(Mask Bit String)이 존재하여, 내용 비트 스트링 모두가 탐색 키(Search Key)와 비교될 필요는 없으며, 터너리 CAM은 터너리 CAM 내의 모든 엔트리 중에서 탐색키와 가장 먼저 매칭된 엔트리 정보를 검색 결과로 알려준다.
일반적으로 터너리 CAM을 이용한 라우팅 시스템은 네트워크 프로세서, 터너리 CAM, 보조 메모리 등을 포함하며, 네트워크 프로세서는 인터페이스부, 엔트리 관리부, 룩업 처리부를 세부 블록으로 포함한다.
인터페이스부는 사용자로부터 CLI(Command Line Interface)를 통해 입력 받은 패킷 분류(classification) 또는 패킷 필터링(filtering)을 위한 룰(Rule) 정보 와 터너리 CAM에 임의의 룰을 추가/삭제하기 위한 정보를 포함하는 엔트리 관리 정보를 엔트리 관리부에 제공한다. 여기서, 룰(rule)은 라우팅 시스템으로 전송된 패킷의 포워딩 정보를 나타내며, 룰에 포함되는 정보는 사용자의 필요에 따라 다르게 구성될 수 있다. 일반적으로 룰은 소스 IP 주소, 목적지 IP 주소, 송신 포트 번호,수신 포트 번호, 프로토콜의 종류, 패킷의 포워딩 정보를 포함한다.
엔트리 관리부는 엔트리 관리 정보에 따라 임의의 룰(Rule)을 터너리 CAM에 추가하거나, 터너리 CAM에서 삭제한다. 엔트리 관리부는 인터페이스부가 제공하는 엔트리 관리 정보가 임의의 룰을 추가하기 위한 정보인 경우, 사용자로부터 입력된 룰을 터너리 CAM의 엔트리 포맷으로 변환하여 터너리 CAM에 저장한다. 한편, 엔트리 관리부는 인터페이스부로부터 제공된 엔트리 관리 정보가 터너리 CAM에 저장된 임의의 룰을 삭제하기 위한 정보인 경우, 터너리 CAM에 저장된 해당 룰을 삭제한다.
룩업 처리부에서는 수신한 패킷 자체와 수신 패킷에 대한 인터페이스 정보(예를 들면, 인터페이스 id, 방향 등)를 이용해 터너리 CAM 룩업을 통해 패킷 포워딩 정보를 획득한다. 이 경우 룩업 처리부는 패킷 포워딩 정보에 따라 패킷을 필터링하거나 패킷 분류에 따른 정책(policy)을 적용한다.
터너리 CAM은 다수의 룰을 저장하며, 보조 메모리는 터너리 CAM이 저장하는 각 룰에 대응되는 패킷의 포워딩 정보를 저장한다. 보조 메모리는 ZBT(Zero Bus Turnaround) SRAM으로 구현되는 것이 일반적이다. 여기서, 패킷 포워딩 정보는 네트워크 프로세서가 수신한 패킷에 대하여 포워딩의 허가(permit)/거부(deny)/분 류(classification)에 대한 정보 등을 포함한다.
도 1은 검색키와 마스크를 이용한 터너리 CAM의 엔트리 정보 검색 과정을 도시한 도면이다.
터너리 CAM은 주어진 탐색키를 저장된 모든 엔트리들과 동시에 비교하여 가장 먼저 매칭되는 엔트리를 검색한다. 이 과정에서 터너리 CAM은 내용 비트 스트링(Content Bit String)에 따르는 마스크 비트 스트링(Mask Bit String)을 가지므로, 내용 비트 스트링 모두가 탐색 키(Search Key)와 비교될 필요가 없다는 것은 앞서 살펴보았다. 즉, 도 1의 마스크 부분 중 무정의 값(Don't Care)을 가지는 부분에 대해서는 탐색시 고려할 필요가 없다. 탐색 키(Search Key) 중 마스크의 무정의 값 부분을 제외한 부분에 대해서만 내용 비트 스트링과 비교한 결과 값이 도 1의 데이터 어레이(Data Array) 부분의 비교 결과(Compare)로 나타나게 된다.
도 2는 종래 라우팅 시스템에서 터너리 CAM과 보조 메모리의 대응 관계를 도시한 도면이다.
도 2에 도시된 바와 같이, 터너리 CAM(100)의 룰과 보조 메모리(200)의 패킷 포워딩 정보는 각각 대응되어 있다. 터너리 CAM(100)에 저장된 각 룰 엔트리는 패킷 분류나 패킷 필터링을 위해 전형적으로 요구되는 5-tuple을 포함한다.
또한 각 룰 엔트리는 룰이 적용될 인터페이스 정보, 예를 들어 인터페이스 ID(116)와 방향(direction)(117)을 포함한다. 이는 룰이 라우팅 시스템 전체에 일 반적으로 적용되는 경우 뿐 아니라, 특정 인터페이스의 내향(ingress) 또는 외향(egress) 트래픽에 구별되어 적용되는 경우도 고려하기 위한 것이다.
만일 룰 엔트리가 5-튜플만을 포함한다면, 라우팅 시스템의 룩업 처리부는 수신 패킷에 대해 터너리 CAM 룩업 후 패킷 포워딩 정보(210)를 획득하게 되므로, 그 패킷 포워딩 정보(210)가 해당 인터페이스에 적용된 것인지 확인하는 과정이 별도로 필요하게 된다. 따라서 이러한 별도의 과정에 소요되는 시간을 줄여 고속의 룩업을 구현하기 위해, 일반적으로 룰 엔트리에 5-튜플과 룰이 적용되는 인터페이스에 관한 정보를 포함시킨다.
도 3은 룰 정보의 우선 순위와 터너리 CAM에 엔트리 저장 위치와의 매핑 정보를 관리하는 메커니즘을 도시한 도면이다.
터너리 CAM은 우선 순위가 낮아지는 순서로 룰(Rule)을 저장해 두고, 주어진 탐색키를 저장된 모든 엔트리들과 동시에 비교하여 가장 먼저 매칭되는 엔트리를 찾는다. 터너리 CAM의 이런 동작으로 인해 가장 우선 순위가 높은 패킷 분류나 패킷 필터링 룰 정보는 터너리 CAM의 첫번째 엔트리에 저장되어야 한다. 이로 인하여 사용자로부터 CLI(Command Line Interface)를 통하여 입력된 패킷 분류나 패킷 필터링 룰(Rule) 정보의 우선 순위와 터너리 CAM에 엔트리 저장 위치와의 매핑(mapping) 정보가 필요하다.
패킷 분류나 패킷 필터링 룰(Rule) 정보가 입력되는 순서대로 우선 순위를 보장하기 위해서, 터너리 CAM의 저장 위치를 가리키는 시퀀스 ID(Sequence Id)를 1 씩 증가시킨다. 시퀀스 ID 값이 높을수록 우선 순위는 낮아진다. 예를 들어, 가장 먼저 입력되는 룰 정보에는 룰 ID 1과 시퀀스 ID 1이 부여된다. 같은 방법으로 순차적으로 입력되는 룰 정보에 각각 룰 ID 2와 시퀀스 ID 2, 룰 ID 3과 시퀀스 ID 3,……, 룰 ID N과 시퀀스 ID N이 차례로 부여된다.
도 3에 도시된 매핑 정보에 따라, 터너리 CAM의 각 엔트리에는 각각의 시퀀스 ID에 대응하는 룰 정보가 저장된다.
그러나 패킷 분류나 패킷 필터링 룰 정보와 터너리 CAM의 룰 저장 위치의 매핑을 도 3과 같이 관리하면, 저장된 룰 정보가 늘어날수록 새로운 룰을 추가하는데 많은 시간이 소요된다. 또한 저장되어 있는 룰을 삭제하기 위해서 해당 룰을 검색하는 시간도 많이 소요된다.
한편 추가되는 룰 정보에 시퀀스 ID를 1씩 증가시키면서 할당하면, 마침내 시퀀스 ID가 터너리 CAM에 저장할 수 있는 마지막 위치를 가리키게 될 수 있다. 그러나 만일 삭제된 룰이 존재하여 터너리 CAM에 정보를 저장할 수 있는 빈 엔트리가 있다면, 새로운 룰 정보를 터너리 CAM에 추가하기 위하여 기존의 저장된 룰을 모두 삭제하여 터너리 CAM을 초기화한다. 이후 다시 룰 정보와 시퀀스 ID의 매핑 정보를 참조하여 시퀀스 ID를 다시 "1"부터 할당하여 터너리 CAM에 기존 룰을 하나씩 다시 저장한 후, 새로운 룰 정보를 추가한다. 이 과정에서 룩업 처리부가 수신 패킷에 대해서 터너리 CAM 룩업 후 패킷 포워딩 정보를 얻을 수 없는 경우가 발생하여, 수신 패킷을 필터링하거나 분류에 따른 정책을 적용하지 못하는 순간이 발생할 수 있다.
따라서 터너리 CAM에 새로운 룰 정보를 추가하거나 기존의 저장된 룰을 삭제하고자 하는 경우, 상기와 같이 시퀀스 ID 재할당 과정을 거치지 않고도 터너리 CAM에 룰을 고속으로 적재하거나 이로부터 룰을 삭제하여 터너리 CAM에 저장된 룰 정보들을 효율적으로 관리하는 룰 엔트리 관리 방법이 요구된다.
따라서 본 발명의 목적은 해쉬 테이블(Hash Table)과 링크 리스트(Linked List)를 사용하여 패킷 분류나 패킷 필터링에 관한 룰 정보와 터너리 CAM의 룰 저장 위치의 매핑 정보를 보다 효율적으로 관리함으로써, 터너리 CAM에 패킷 분류나 패킷 필터링 룰을 손쉽게 추가하거나 삭제할 수 있는 라우팅 시스템 및 라우팅 시스템에 룰을 고속 적재하는 방법을 제공함에 있다.
상기한 목적을 달성하기 위한 본 발명의 일 측면에 따른 라우팅 시스템의 룰 엔트리 관리 방법은, 각각의 엔트리에 대응되는 해쉬 키를 가지는 해쉬 테이블을 구성하는 단계, 상기 해쉬 테이블의 엔트리를 헤드 노드로 하고, 룰 ID와 룰이 입력된 우선순위에 따라 부여되는 시퀀스 ID를 포함하는 각 노드들을 연결하는 단일 링크 리스트를 구성하는 단계 및 독립적인 헤드 노드를 가지고, 상기 단일 링크 리스트를 구성하는 각 노드들을 시퀀스 ID 순서에 따라 양방향으로 연결하는 양방향 링크 리스트를 구성하는 단계를 포함한다.
상기 라우팅 시스템의 룰 엔트리 관리 방법에 있어서 상기 해쉬 키는, 패킷 분류나 패킷 필터링 룰 각각을 구별하는 룰 ID, 룰이 적용된 인터페이스 인덱스 및 인터페이스 방향을 인자로 하여 생성된다.
상기 라우팅 시스템의 룰 엔트리 관리 방법에 있어서 상기 링크 리스트를 구성하는 각 노드는, 룰이 적용된 인터페이스 인덱스에 대한 정보를 더 포함하는 것을 특징으로 한다.
한편, 상기한 목적을 달성하기 위한 본 발명의 다른 측면에 따른 라우팅 시스템의 룰 엔트리 관리 방법은, 터너리 CAM에 추가하기 위한 룰을 수신하는 경우, 수신한 룰에 따른 해쉬 키를 생성하여 이에 매칭되는 해쉬 테이블 엔트리를 검색하는 단계, 검색된 해쉬 테이블 엔트리에 연결된 단일 링크 리스트에 해당 룰에 관한 정보와 일치하는 노드가 존재하는지 판단하는 단계 및 단일 링크 리스트가 존재하지 않는 경우 단일 링크 리스트의 첫 번째 노드 앞에 입력된 룰에 관한 정보를 포함하는 새로운 노드를 추가하고, 양방향 링크 리스트 중 역방향 리스트의 첫 번째 노드 앞에 상기 새로운 노드를 추가하는 단계를 포함한다.
상기 라우팅 시스템의 룰 엔트리 관리 방법은, 새로운 노드를 추가한 경우, 양방향 링크 리스트 중 시퀀스 ID가 증가하는 순서대로 읽어 가면서 새로운 노드에 시퀀스 ID를 할당하는 단계를 더 포함한다.
상기 라우팅 시스템의 룰 엔트리 관리 방법은, 시퀀스 ID 가 가리키는 터너리 CAM의 위치에 룰을 저장하는 단계를 더 포함한다.
상기 라우팅 시스템의 룰 엔트리 관리 방법에 있어서, 수신한 룰이 터너리 CAM 에서 삭제하기 위한 룰인 경우, 상기 룰의 ID와 인터페이스 인덱스에 일치하는 노드가 단일 링크 리스트에 존재하는지 검색하고, 일치하는 노드에 포함된 시퀀스 ID 가 가리키는 터너리 CAM의 위치에서 해당 룰을 삭제하는 것을 특징으로 한다.
상기 라우팅 시스템의 룰 엔트리 관리 방법은, 터너리 CAM의 위치에서 해당 룰을 삭제하는 경우, 양방향 링크 리스트와 단일 링크 리스트에서 해당 노드를 삭제하는 단계를 더 포함한다.
상기 라우팅 시스템의 룰 엔트리 관리 방법은, 룰이 저장되지 않은 엔트리가 존재하고, 다음 차례에 수신되는 룰에 부여될 시퀀스 ID로부터 최대 부여될 수 있는 시퀀스 ID 까지 사용되지 않은 엔트리가 존재하지 않는 경우, 양방향 링크 리스트를 순서대로 읽어가면서 시퀀스 ID를 재할당하는 단계를 더 포함한다.
상기 라우팅 시스템의 룰 엔트리 관리 방법에 있어서, 상기 시퀀스 ID 재할당 과정은, 다음 차례에 수신되는 룰에 부여될 시퀀스 ID로부터 최대 부여될 수 있는 시퀀스 ID 까지 사용되지 않은 터너리 CAM의 엔트리 개수에서 최대 부여될 수 있는 시퀀스 ID 이전에 사용 가능한 터너리 CAM의 엔트리 개수를 뺀 값의 절대값 시간 후에 수행된다.
상기 라우팅 시스템의 룰 엔트리 관리 방법에 있어서, 상기 시퀀스 ID 재할당 과정은, 양방향 링크 리스트를 시퀀스 ID 가 증가하는 순서대로 읽어가면서, 양방향 링크 리스트를 구성하는 각 노드에 시퀀스 ID를 1부터 차례로 재할당하는 것을 특징으로 한다.
한편, 상기한 목적을 달성하기 위한 본 발명의 또 다른 측면에 따른 라우팅 시스템은, 해쉬 키로 구성되는 해쉬 테이블, 상기 해쉬 테이블의 엔트리를 헤드 노드로 하고 룰 ID와 룰이 입력된 우선 순위에 따라 부여되는 시퀀스 ID를 포함하는 각 노드들을 연결하는 단일 링크 리스트 및 독립적인 헤드 노드를 가지고 상기 단일 링크 리스트를 구성하는 각 노드들을 시퀀스 ID 순서에 따라 양방향으로 연결하는 양방향 링크 리스트를 구성하는 네트워크 프로세서와 상기 노드에 포함된 룰을 룰에 부여되는 시퀀스 ID가 가리키는 터너리 CAM 엔트리에 저장하는 터너리 CAM을 포함한다.
상기 라우팅 시스템에 있어서 상기 해쉬 테이블은, 패킷 분류나 패킷 필터링 룰 각각을 구별하는 룰 ID, 룰이 적용된 인터페이스 인덱스 및 인터페이스의 방향을 인자로 하는 해쉬 키를 엔트리로 구성하는 것을 특징으로 한다.
상기 라우팅 시스템에 있어서 상기 단일 링크 리스트는, 상기 해쉬 테이블의 엔트리를 헤드 노드로 하고, 시퀀스 ID와 해쉬 키에 대응되는 룰 ID 또는 인터페이스 인덱스에 대한 정보를 포함하는 노드들을 순차적으로 연결한다.
상기 라우팅 시스템에 있어서 상기 양방향 링크 리스트는, 독립적인 헤드 노드를 주축으로 하여 상기 단일 링크 리스트를 구성하는 각 노드들을 시퀀스 ID 가 증가하는 순서 또는 감소하는 순서에 따라 연결한다.
상기 라우팅 시스템에 있어서 상기 네트워크 프로세서는, 패킷 분류 또는 패킷 필터링을 위한 룰 정보와 터너리 CAM에 임의의 룰을 추가 또는 삭제하기 위한 정보를 포함하는 엔트리 관리 정보를 엔트리 관리부에 제공하는 인터페이스부와 해쉬 테이블, 단일 링크 리스트 및 양방향 링크 리스트를 구성하고, 이를 참조하여 엔트리 관리 정보에 따라 임의의 룰을 터너리 CAM에 저장하거나, 터너리 CAM에서 삭제하는 엔트리 관리부를 포함한다.
상기 라우팅 시스템에 있어서 상기 네트워크 프로세서는, 터너리 CAM을 룩업하여 획득한 패킷 포워딩 정보에 따라 패킷을 필터링하거나 패킷 분류에 따른 정책을 적용하는 룩업 처리부를 더 포함한다.
상기 라우팅 시스템은, 상기 터너리 CAM이 저장하는 각 룰에 대응되는 패킷의 포워딩 정보를 저장하는 보조 메모리를 더 포함한다.
이하 본 발명에 따른 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법을 첨부한 도면을 참조하여 상세히 설명한다.
도 4는 본 발명에 따른 라우팅 시스템의 구성을 도시한 도면이다.
상기 라우팅 시스템은 네트워크 프로세서(400), 터너리 CAM(410), 보조 메모리(420) 등을 포함하며, 네트워크 프로세서(400)는 인터페이스부(402), 엔트리 관리부(404), 룩업 처리부(406)를 세부 블록으로 포함한다.
본원 발명에 따른 라우팅 시스템의 기본적인 구성은 종래의 라우팅 시스템과 기본적으로 동일하며, 그 구성 요소의 기능 또한 기존의 것과 거의 동일하다. 따라서 중복되는 설명을 피하기 위하여 하기에서는 종래의 구성 요소와 다른 부분에 대해서만 기술하기로 한다.
엔트리 관리부(404)는 패킷 분류나 패킷 필터링 룰 정보와 터너리 CAM(410) 에서의 룰 저장 위치와의 매핑 정보를 관리하기 위해 해쉬 테이블, 해쉬 테이블의 엔트리를 헤드 노드(Head Node)로 하는 단일 링크 리스트(Single Linked List) 및양방향 링크 리스트(Double Linked List)를 구성한다. 해쉬 테이블과 단일 링크 리스트 및 양방향 링크 리스트에 대해서는 도 5에 대한 설명에서 상세히 설명하도록 하겠다.
엔트리 관리부(404)는 해쉬 키를 사용하여 이에 매칭되는 해쉬 테이블 엔트리를 검색하는데, 상기 해쉬 키에 대해서도 역시 도 5에 대한 설명에서 상세히 설명하도록 한다.
도 5는 본 발명에서 터너리 CAM의 룰 엔트리를 관리하기 위하여 생성되는 해쉬 테이블과 단일 링크 리스트 및 양방향 링크 리스트의 연결 관계를 도시한 도면이다.
해쉬 테이블(510)은 해쉬 키들로 이루어진다. 도 5에서 도시된 것처럼 해쉬 테이블(510)에는 단일 링크 리스트와 양방향 링크 리스트가 연결되는데, 엔트리 관리부(404)는 이를 참조하여 터너리 CAM(410)에 룰을 고속으로 적재하거나 삭제할 수 있다. 해쉬 테이블(510)의 엔트리를 구성하는 해쉬 키는 다음과 같이 정의된다.
Hash Key = [(Direction<<15)|(Rule Id<<8)|Port Id]&0xFFFF
해쉬 키를 구성하는 인자들은 패킷 분류나 패킷 필터링 룰 각각을 구별하는 룰 ID(Rule Id), 룰이 적용된 인터페이스 인덱스(Port Id), 인터페이스의 방향(Direction)등이 될 수 있다. 이 경우 룰 ID는 패킷 분류나 패킷 필터링에 관한 룰을 구별하기 위하여 각각의 룰에 부여된 고유 ID를 말한다. Direction은 룰이 적용된 인터페이스의 방향을 의미하며, 각각의 인터페이스마다 ingress와 egress가 있을 수 있다. 마지막으로 Port ID는 룰이 적용된 인터페이스 인덱스를 가리킨다.
예를 들어 해쉬 테이블(510)의 키 사이즈를 16bit 로 정의한다면, 2
Figure 112007012691280-pat00001
=65536 이므로 해쉬 키는 65536개가 생길 수 있다. 따라서 이 경우 해쉬 테이블(510)은 0부터 65535까지의 테이블 엔트리를 갖게 된다.
단일 링크 리스트(Single Linked List)는 해쉬 테이블(510)의 엔트리를 헤드 노드(Head Node)로 하는 연결 리스트이다. 상기 단일 링크 리스트를 구성하는 각 노드는 룰 ID, 인터페이스 인덱스와 그에 할당된 시퀀스 ID를 가진다. 엔트리 관리부(404)는 메모리 사용의 제약으로 정의한 해쉬 테이블(510)의 키 사이즈가 룰 ID, 인터페이스 인덱스, 인터페이스 방향의 모든 조합을 포함하지 못하는 경우를 대비하여 상기 단일 링크 리스트를 만든다.
예를 들어, 도 5에서는 각각의 해쉬 테이블 엔트리마다 단일 링크 리스트를 생성할 수 있다. 해쉬 테이블 엔트리 1을 헤드 노드로 하는 단일 링크 리스트는 노드 5(525), 노드 4(524) 및 노드 1(521)을 순차적으로 연결한다. 해쉬 테이블 엔트리 2를 헤드 노드로 하는 단일 링크 리스트는 노드 3(523)과 노드 2(522)를 순차적으로 연결한다. 해쉬 테이블 엔트리 65533을 헤드 노드로 하는 단일 링크 리스트에는 노드 6(526)만이 포함된다.
양방향 링크 리스트(Double Linked List)는 독립적인 헤드 노드(Head Node)(520)와 단일 링크 리스트를 구성하는 각 노드들로 구성되며, 독립적인 헤드 노드(520)를 주축으로 하여 단일 링크 리스트의 각 노드를 시퀀스 ID 순서로 양방향으로 연결한다. 단일 링크 리스트가 해쉬 테이블(510)의 엔트리를 헤드 노드로 구성하는데 반해, 양방향 링크 리스트는 독립적인 헤드 노드(520)를 갖는다.
상기 양방향 링크 리스트는 터너리 CAM(410)의 저장 위치를 나타내는 시퀀스 ID 순서를 보장한다. 이를 위해 양방향 링크 리스트는 순방향 리스트와 역방향 리스트를 가진다. 순방향 리스트란 양방향 링크 리스트의 헤드 노드(520)가 시퀀스 ID 값이 가장 낮은 노드를 가리키는 경우, 즉 시퀀스 ID 값이 가장 낮은 노드부터 시퀀스 ID 값이 높은 노드 순서로 연결한 리스트이다. 순방향 리스트는 터너리 CAM(410)에 룰이 저장된 순서를 나타낸다. 역방향 리스트란 양방향 링크 리스트로 연결된 노드 중에서 시퀀스 ID 값이 가장 큰 노드를 헤드 노드(520)가 가리키는 경우, 즉 시퀀스 ID 값이 가장 높은 노드에서 시퀀스 ID 값이 낮은 노드 순서로 연결한 리스트이다. 역방향 리스트는 양방향 링크 리스트에 새로운 룰을 빠르게 추가하기 위해 사용된다.
도 5에서는 노드 1(521), 노드 2(522), 노드 3(523), 노드 4(524), 노드 5(525), 노드 6(526)을 순서대로 연결한 것이 순방향 리스트가 된다. 이에 반하여 역방향 리스트는 노드 6(526), 노드 5(525), 노드 4(524), 노드 3(523), 노드 2(522), 노드 1(521)을 순서대로 연결한 것이 역방향 리스트가 된다.
설명의 편의성을 위해서 터너리 CAM의 최대 엔트리 개수가 8이라 가정하자. 우선 터너리 CAM과 관련하여 정의되는 파라미터에 관하여 기본적으로 살펴보면 다음과 같다.
Number of Free Entries는 터너리 CAM(410)의 엔트리 중에서, 룰이 저장되어 있지 않은 엔트리 개수를 가리킨다. 터너리 CAM(410)에 룰이 하나도 저장되지 않은 경우, 상기 Number of Free Entries의 값은"8"이다. 상기 Number of Free Entries 값은 룰이 터너리 CAM(410)에 저장될 때마다 감소하고, 룰이 터너리 CAM(410)에서 삭제될 때마다 증가한다.
Next Sequence Id는 다음 차례에 룰을 수신하는 경우, 상기 룰을 터너리 CAM(410)에 저장하게 될 위치를 가리킨다. 만일 터너리 CAM(410)에 룰이 하나도 저장되지 않은 경우, 다음 번 시퀀스 ID는 1이 될 것이므로(룰이 입력되는 순서대로 우선 순위를 보장하기 위해서, 터너리 CAM(410)의 저장 위치를 가리키는 시퀀스 ID를 1씩 증가한다는 것은 앞서 이미 살펴보았다.) Next Sequence Id 값은"1"이 된다. 상기 Next Sequence Id 값은 룰이 터너리 CAM(410)에 저장될 때마다"1"씩 증가한다. 만일 삭제된 룰을 다시 터너리 CAM(410)에 추가한 경우에는, 새로운 룰을 추가하기 전에 발생하는 시퀀스 ID 재할당 이후에 Next Sequence ID는 양방향 링크 리스트(Double Linked List) 중 순방향 리스트에서 가장 마지막에 할당된 시퀀스 ID 값으로 초기화한다.
Left Sequence Id는 Next Sequence Id로부터 최대 Sequence Id까지 사용되지 않는 터너리 CAM(410)의 엔트리 개수를 말한다. 터너리 CAM(410)에 룰이 하나도 저장되지 않는 경우에는 상기 Left Sequence Id 값은"8"이다. Left Sequence Id 값은 룰이 터너리 CAM(410)에 저장될 때마다 감소한다. Sequence Id 재할당이 발생한 이후에는 상기 Left Sequence Id는 Number of Free Entries 값으로 초기화한다.
Used Sequence Id는 Next Sequence Id 이전에 사용 가능한 터너리 CAM(410)의 엔트리 개수를 말한다. 터너리 CAM(410)에 저장된 룰이 하나도 삭제되지 않고 그대로 유지되는 경우, Used Sequence Id 값은"0"이다. 상기 Used Sequence Id 값은 룰이 터너리 CAM(410)에서 삭제될 때마다 증가한다. Sequence Id 재할당이 발생한 이후에, Used Sequence Id 값은 "0"으로 초기화한다.
이제 상기와 같은 해쉬 테이블과 단일 링크 리스트 및 양방향 링크 리스트를 사용하여 터너리 CAM에 룰을 고속으로 적재하거나 삭제하는 룰 엔트리 관리 방법에 대하여 보다 자세히 살펴보기로 하자.
도 6은 룰 5개가 이미 저장된 후에 새로운 룰 하나를 추가한 후의 해쉬 테이블, 단일 링크 리스트, 양방향 링크 리스트 및 터너리 CAM의 모습을 도시한 도면이다.
예를 들어, 룰 #1은 룰 ID 0이 인터페이스 인덱스 1의 ingress에 적용된 패킷 분류나 패킷 필터링 룰, 룰 #2는 룰 ID 0이 인터페이스 인덱스 2의 ingress에 적용된 룰, 룰 #3은 룰 ID 129가 인터페이스 인덱스 2의 Ingress에 적용된 룰, 룰 #4는 룰 ID 129가 인터페이스 인덱스 1의 Ingress에 적용된 룰, 룰 #5는 룰 ID 257이 인터페이스 인덱스 1의 Ingress에 적용된 룰, 룰 #6은 룰 ID 128이 인터페이스 인덱스 13의 egress에 적용된 룰이라고 가정한다.
도 6에서 도시된 것처럼 터너리 CAM(410)에는 6개의 룰에 대한 정보가 저장되어 있다. 지금까지 터너리 CAM(410)에 입력된 룰들은 시퀀스 ID 1부터 시퀀스 ID 6까지 순서대로 저장된다. 따라서 다음 차례에 입력되는 룰은 터너리 CAM(410) 중 시퀀스 ID 7의 위치에 저장된다. 따라서 Next Sequence ID 는 7이 된다.
터너리 CAM(410)의 최대 엔트리 개수가 8이고, Next Sequence ID 는 7이므로, Next Sequence ID 는 7부터 최대 시퀀스 ID인 8까지 사용되지 않는 터너리 CAM(410)의 엔트리 개수는 2이다. 따라서 Left Sequence ID값은 2이다. 또한 룰이 저장되어 있지 않은 터너리 CAM(410)의 엔트리 개수 또한 2가 될 것이므로, Number of Free Entries 값도 2가 된다.
터너리 CAM(410)에 저장된 6개의 룰들은 중간에 삭제되거나 추가되지 않고, 초기에 저장된 그대로 유지되고 있다. 따라서 Next Sequence ID인 7 이전에 사용 가능한 터너리 CAM(410)의 엔트리는 없다. 따라서 Used Sequence ID 값은 0이다.
도 7은 도 6에서 룰 #1과 룰 #3을 터너리 CAM에서 삭제한 후의 터너리 CAM 구조와 매핑 정보의 변화 모습을 도시한 도면이다.
다음 차례에 입력되는 룰은 터너리 CAM(410) 중 시퀀스 ID 7의 위치에 저장된다. 따라서 Next Sequence ID 는 도 6의 경우와 마찬가지로 7이다. 또한 Next Sequence ID 7로부터 터너리 CAM(410)의 최대 시퀀스 ID인 8까지 사용되지 않는 터너리 CAM(410)의 엔트리 개수는 2이므로, Left Sequence Id 값은 2가 된다.
그러나 터너리 CAM(410)에서 저장되어 있는 6개의 룰 중, 룰 #1과 룰 #3이 삭제되었으므로, 시퀀스 ID 1과 시퀀스 ID 3에 대응하는 터너리 CAM(410) 엔트리에는 룰이 저장되어 있지 않다. 도 6에서는 사용할 수 있는 터너리 CAM(410) 엔트리 개수가 2개였지만, 이 중 룰 #1과 룰 #3이 삭제되었으므로, 사용되지 않는 터너리 CAM(410)의 엔트리 개수는 4로 증가한다. 따라서 Number of Free Entries값은 4로 변한다.
또한 터너리 CAM(410)에 저장되어 있는 6개의 룰 들 중에서 2개의 룰이 삭제되었으므로, Next Sequence ID인 7 이전에 사용 가능한 터너리 CAM(410)의 엔트리는 2개로 늘어난다. 따라서 Used Sequence ID 값은 2가 된다. 아직 시퀀스 ID 재할당 과정을 거치지 않았기 때문에 상기 Left Sequence Id 값과 Number of Free Entries 값이 다르다.
도 8은 삭제된 룰 #1과 룰 #3을 다시 터너리 CAM에 추가한 후의 터너리 CAM 구조와 매핑 정보의 변화 모습을 도시한 도면이다.
도 8에서는 아직 시퀀스 ID 재할당 과정이 일어나지 않았다. 따라서 Next Sequence ID 이전에 사용 가능한 터너리 CAM(410)의 엔트리가 존재한다 하더라도, 이를 무시하고 추가되는 룰을 터너리 CAM(410)의 Next Sequence ID 위치부터 차례로 저장한다. 앞서 보았듯 Next Sequence ID는 7이므로, 추가되는 룰 #1은 터너리 CAM(410) 중 시퀀스 ID 7의 위치에 저장된다. 이에 따라 룰 #3은 시퀀스 ID 8의 위치에 저장된다.
이 경우 룰이 시퀀스 ID 8의 위치까지 이미 저장되었기 때문에, Next Sequence ID 값은 7에서 9로 변한다. 또한 Next Sequence ID 값이 최대 Sequence ID 값보다 커서, Next Sequence ID 로부터 최대 Sequence ID 까지 사용되지 않는 터너리 CAM(410)의 엔트리가 존재하지 않는다. 따라서 Left Sequence ID 값은 0 이다.
2개의 룰을 다시 터너리 CAM(410)에 추가하였으므로, 룰이 저장되어 있지 않은 터너리 CAM(410)의 엔트리의 개수는 4개에서 2개로 줄어든다. 따라서 Number of Free Entries값은 4에서 2로 변경된다. 또한 Next Sequence ID 값인 9 이전에 사용 가능한 Used Sequence ID 값 역시 2이다.
도 9는 시퀀스 ID 재할당 과정을 거친 상태에서, 룰 #7을 터너리 CAM에 추가한 후의 터너리 CAM 구조와 매핑 정보의 변화 모습을 도시한 도면이다.
앞서 설명하였지만 터너리 CAM(410)에 새롭게 추가되는 룰은 Next Sequence ID에 대응되는 위치에 저장된다. 그러나 터너리 CAM(410)에 저장되어 있는 기존의 룰이 삭제되어, Next Sequence ID 이전에 사용 가능한 터너리 CAM(410)의 엔트리가 존재할 수 있다. 따라서 보다 효율적인 터너리 CAM(410)의 엔트리 관리를 위하여 시퀀스 ID 재할당 과정이 필요하다.
시퀀스 ID 재할당 과정을 거치고 나면, 현재 터너리 CAM(410)에 저장된 룰들은 우선 순위대로 시퀀스 ID 값을 다시 할당받는다. 예를 들어 도 9에서는 룰 #2, 룰 #4, 룰 #5, 룰 #6, 룰 #1 및 룰 #3에 각각 시퀀스 ID 1, 시퀀스 ID 2, 시퀀스 ID 3, 시퀀스 ID 4, 시퀀스 ID 5 및 시퀀스 ID 6이 할당된다. 시퀀스 ID 재할당 과정을 거치고 나면, Next Sequence ID 이전에 사용 가능한 시퀀스 ID 가 없게 된다. 이후 추가되는 룰 #7은 시퀀스 ID 7에 대응되는 위치에 저장된다.
이후 변화된 터너리 CAM(410) 구조를 살펴보면, 다음 차례에 추가되는 룰은 시퀀스 ID 8의 위치에 저장될 것이므로 Next Sequence ID 값이 8이 된다. 또한 Next Sequence ID로부터 최대 Sequence ID까지 사용되지 않는 터너리 CAM(410)의 엔트리는 시퀀스 ID 8인 엔트리 단 한 개 이므로, Left Sequence ID 값은 1이다. 터너리 CAM(410)에 룰이 저장되어 있지 않은 엔트리도 시퀀스 ID 8에 대응되는 엔트리 뿐이므로, Number of Free Entries 값도 1이 된다. 그러나 터너리 CAM(410)은 시퀀스 ID 재할당 과정을 거쳤으므로, Next Sequence ID 이전에 사용 가능한 엔트리가 존재하지 않는다. 따라서 Used Sequence ID 값은 0으로 변했다.
도 10은 본 발명에 따라 터너리 CAM에 룰을 추가하는 과정을 도시한 도면이다.
엔트리 관리부(404)는 인터페이스부로부터 패킷 분류나 패킷 필터링 룰을 입력받는다(S1001). 이 경우 엔트리 관리부(404)는 룰에 따른 해쉬 키를 생성한다(S1002). 엔트리 관리부(404)는 생성한 해쉬 키를 이용하여 해쉬 테이블(510)을 검색하고(S1003), 상기 해쉬 키에 대응되는 해쉬 테이블 엔트리를 찾는다.
엔트리 관리부(404)는 검색된 해쉬 테이블 엔트리를 헤드 노드로 하는 단일 링크 리스트가 존재하는지 판단한다(S1004). 단일 링크 리스트가 존재하는 경우, 엔트리 관리부(404)는 룰 ID와 인터페이스 인덱스를 사용하여 상기 단일 링크 리스트를 검색한다(S1005). 이 경우 엔트리 관리부(404)는 단일 링크 리스트에 상기 룰 ID 와 인터페이스 인덱스에 일치하는 노드가 존재하지 않는지 판단한다(S1007). 일치하는 노드가 존재하는 경우라면, 수신된 룰을 터너리 CAM(410)에 추가할 필요가 없으므로 모든 과정이 종료된다.
그러나 일치하는 노드가 존재하지 않는 경우, 엔트리 관리부(404)는 단일 링크 리스트의 첫 번째 노드 앞에 상기 룰 ID 와 인터페이스 인덱스에 일치하는 새로운 노드를 추가한다(S1008). 또한 양방향 링크 리스트 중 역방향 리스트의 첫 번째 노드 앞에 새로운 노드를 추가한다(S1009).
만일 S1004 단계에서 단일 링크 리스트가 존재하지 않는다고 판단된 경우에는, 해당 해쉬 테이블 엔트리를 헤드 노드로 하는 단일 링크 리스트를 생성한다(S1006). 이후 S1009 단계를 거치게 된다.
단일 링크 리스트와 양방향 링크 리스트가 모두 업데이트 되면, 엔트리 관리부(404)는 양방향 링크 리스트 중 순방향 리스트 순서대로 읽어가면서 새로운 노드에 시퀀스 ID를 할당한다(S1010). 이 경우 각 노드에 포함된 룰들에 시퀀스 ID가 대응하여 할당된다.
엔트리 관리부(404)는 시퀀스 ID 가 가리키는 터너리 CAM(410) 위치에 시퀀스 ID에 대응되는 룰을 저장한다(S1011). 이 경우 엔트리 관리부(404)는 Next Sequence ID 값을 1 증가시키고(S1012), Number of Free Entries와 Left Sequence ID 값을 갱신한다(S1013).
엔트리 관리부(404)는 시퀀스 ID 재할당이 필요한지 판단한다(S1014). 시퀀스 ID 재할당이 필요한 경우, 엔트리 관리부(404)는 터너리 CAM(410)의 엔트리들에 시퀀스 ID를 재할당한다(S1015). 그러나 시퀀스 ID 재할당 과정이 필요하지 않은 경우라고 판단되면, 터너리 CAM(410)에의 룰 추가 과정을 모두 종료한다.
상기 시퀀스 ID 재할당 과정에 대해서는 다음에 도시하는 도 11에서 상세히 설명하겠다.
도 11은 시퀀스 ID 재할당 과정을 도시한 도면이다.
시퀀스 ID 재할당 과정은 Left Sequence ID 값이 0 이고, Number of Free entries 값이 0이 아닌 값을 갖는 경우에 수행한다. 이 경우 Next Sequence ID 로부터 최대 Sequence ID 까지 사용되지 않은 엔트리가 존재하지 않지만(Left Sequence ID 값이 0 이므로), Number of Free entries 값이 0이 아니므로 터너리 CAM(410) 전체적으로는 사용 가능한 엔트리가 존재한다. 따라서 시퀀스 ID 재할당 과정을 거쳐 터너리 CAM(410)의 엔트리를 재정렬하고, 다시 룰을 순서대로 입력하여야 한다.
시퀀스 ID 재할당 과정은 Left sequence ID 에서 Used Sequence Id를 뺀 값의 절대값 시간 후에 수행된다. 그러나 Left Sequence ID 값과 Used Sequence ID 값의 차가 큰 경우에는 시퀀스 ID를 미리 재정렬 할 필요가 있으므로, 시퀀스 ID 재할당을 미리 수행하게 할 수 있다.
시퀀스 ID 재할당 과정이 시작되면, 엔트리 관리부(404)는 양방향 링크 리 스트 중 순방향 리스트에 있는 노드의 시퀀스 ID를 "1"부터 시작하여 "1"증가하여 할당한다(S1101). 시퀀스 ID를 1 증가하여 할당한 엔트리 관리부(404)는, 터너리 CAM(410)에 저장된 룰을 새롭게 할당된 시퀀스 ID 위치로 이동한다(S1102).
엔트리 관리부(404)는 시퀀스 ID를 새롭게 할당받은 노드가 양방향 링크 리스트 중 순방항 리스트에서 마지막 노드인지 판단한다(S1103). 순방향 리스트의 마지막 노드가 아닌 경우에는 다시 S1101 단계로 되돌아간다.
시퀀스 ID를 새롭게 할당받은 노드가 순방향 리스트의 마지막 노드인 경우에는 Left Sequence ID, Next Sequence ID 및 Used Sequence ID 의 값을 갱신한다(S1104). 이로써 시퀀스 ID 재할당 과정은 모두 종료한다.
도 12는 본 발명에 따라 터너리 CAM에서 룰을 삭제하는 과정을 도시한 도면이다.
엔트리 관리부(404)는 인터페이스부(402)로부터 삭제할 패킷 분류나 패킷 필터링 룰을 입력받는다(S1201). 이 경우 엔트리 관리부(404)는 룰에 따른 해쉬 키를 생성한다(S1202). 엔트리 관리부(404)는 생성한 해쉬 키를 이용하여 해쉬 테이블(510)을 검색하고(S1203), 상기 해쉬 키에 대응되는 해쉬 테이블 엔트리를 찾는다.
엔트리 관리부(404)는 검색된 해쉬 테이블 엔트리를 헤드 노드로 하는 단일 링크 리스트가 존재하는지 판단한다(S1204). 단일 링크 리스트가 존재하지 않는 경우에는 삭제를 원하는 룰이 터너리 CAM(410)에 저장되어 있지 않은 것이므로 룰 삭제 과정은 종료된다.
만일 단일 링크 리스트가 존재하는 경우라면, 엔트리 관리부(404)는 룰 ID와 인터페이스 인덱스를 사용하여 상기 단일 링크 리스트를 검색한다(S1205). 이 경우 엔트리 관리부(404)는 단일 링크 리스트에 상기 룰 ID 와 인터페이스 인덱스에 일치하는 노드가 존재하는지 판단한다(S1206). 일치하는 노드가 존재하지 않는 경우에는 터너리 CAM(410)에서의 룰 삭제 과정은 종료된다.
그러나 일치하는 노드가 존재하는 경우에는, 엔트리 관리부(404)는 시퀀스 ID가 가리키는 터너리 CAM(410) 위치에서 해당 룰을 삭제한다(S1207). 터너리 CAM(410)에서 룰을 삭제한 엔트리 관리부(404)는 양방향 링크 리스트에서 해당 노드를 삭제한다(S1208). 또한 단일 링크 리스트에서 해당 노드를 삭제한다(S1209).
이 경우 엔트리 관리부(404)는 Number of Free Entries 와 Used Sequence ID 값을 갱신한다(S1210). 이후 엔트리 관리부(404)는 시퀀스 ID 재할당이 필요한지 판단하여(S1211), 판단 결과에 따라 시퀀스 ID를 재할당하거나(S1212) 터너리 CAM(410)에서의 룰 삭제 과정을 모두 종료한다.
본 발명에 따르면 해쉬 테이블, 해쉬 테이블의 엔트리를 헤드 노드로 하는 단일 링크 리스트 및 독립적인 헤드 노드를 가지는 양방향 링크 리스트를 사용하여 최소한의 정보만을 가지고도 패킷 분류나 패킷 필터링 룰을 터너리 CAM에 쉽게 추가하거나 터너리 CAM에서 삭제할 수 있으며, 룰의 우선 순위를 지키면서 터너리 CAM에 룰을 최대한 저장하기 위해서 필요한 시퀀스 ID 재할당 과정을 룰 추가 또는 삭제 후 일정 시간 후에 시행하도록 하여 패킷 분류나 패킷 필터링 룰 설정시 발생할 수 있는 지연도(latency)를 줄일 수 있다.
또한 시퀀스 ID를 재할당하는 경우에도 터너리 CAM에 저장되어 있는 룰을 새롭게 할당된 시퀀스 ID 위치로 복사한 후 이전 위치에 저장된 룰을 삭제함으로써, 룩업 처리부가 수신 패킷에 대해서 터너리 CAM 룩업 후 패킷 포워딩 정보를 얻지 못하는 경우를 방지할 수 있으며, 룰 정보와 터너리 CAM의 룰 저장 위치와의 매핑 정보 관리시 패킷 분류나 패킷 필터링 룰을 따로 저장하지 않으므로 메모리를 효과적으로 활용할 수 있는 효과가 있다.

Claims (18)

  1. 각각의 엔트리에 대응되는 해쉬 키를 가지는 해쉬 테이블을 구성하는 단계;
    상기 해쉬 테이블의 엔트리를 헤드 노드로 하고, 룰 ID와 룰이 입력된 우선순위에 따라 부여되는 시퀀스 ID를 포함하는 각 노드들을 연결하는 단일 링크 리스트를 구성하는 단계; 및
    독립적인 헤드 노드를 가지고, 상기 단일 링크 리스트를 구성하는 각 노드들을 시퀀스 ID 순서에 따라 양방향으로 연결하는 양방향 링크 리스트를 구성하는 단계를 포함하는 라우팅 시스템의 룰 엔트리 관리 방법.
  2. 제1항에 있어서,
    상기 해쉬 키는,
    패킷 분류나 패킷 필터링 룰 각각을 구별하는 룰 ID, 룰이 적용된 인터페이스 인덱스 및 인터페이스 방향을 인자로 하여 생성되는 라우팅 시스템의 룰 엔트리 관리 방법.
  3. 제1항에 있어서,
    상기 링크 리스트를 구성하는 각 노드는,
    룰이 적용된 인터페이스 인덱스에 대한 정보를 더 포함하는 것을 특징으로 하는 라우팅 시스템의 룰 엔트리 관리 방법.
  4. 터너리 CAM에 추가하기 위한 룰을 수신하는 경우, 수신한 룰에 따른 해쉬 키를 생성하여 이에 매칭되는 해쉬 테이블 엔트리를 검색하는 단계;
    검색된 해쉬 테이블 엔트리에 연결된 단일 링크 리스트에 해당 룰에 관한 정보와 일치하는 노드가 존재하는지 판단하는 단계; 및
    단일 링크 리스트가 존재하지 않는 경우 단일 링크 리스트의 첫 번째 노드 앞에 입력된 룰에 관한 정보를 포함하는 새로운 노드를 추가하고, 양방향 링크 리스트 중 역방향 리스트의 첫 번째 노드 앞에 상기 새로운 노드를 추가하는 단계를 포함하는 라우팅 시스템의 룰 엔트리 관리 방법.
  5. 제4항에 있어서,
    새로운 노드를 추가한 경우,
    양방향 링크 리스트 중 시퀀스 ID 가 증가하는 순서대로 읽어 가면서 새로운 노드에 시퀀스 ID를 할당하는 단계를 더 포함하는 라우팅 시스템의 룰 엔트리 관리 방법.
  6. 제4항에 있어서,
    시퀀스 ID 가 가리키는 터너리 CAM의 위치에 룰을 저장하는 단계를 더 포함하는 라우팅 시스템의 룰 엔트리 관리 방법.
  7. 제4항에 있어서,
    수신한 룰이 터너리 CAM 에서 삭제하기 위한 룰인 경우,
    상기 룰의 ID 와 인터페이스 인덱스에 일치하는 노드가 단일 링크 리스트에 존재하는지 검색하고, 일치하는 노드에 포함된 시퀀스 ID 가 가리키는 터너리 CAM의 위치에서 해당 룰을 삭제하는 것을 특징으로 하는 라우팅 시스템의 룰 엔트리 관리 방법.
  8. 제7항에 있어서,
    터너리 CAM의 위치에서 해당 룰을 삭제하는 경우,
    양방향 링크 리스트와 단일 링크 리스트에서 해당 노드를 삭제하는 단계를 더 포함하는 라우팅 시스템의 룰 엔트리 관리 방법.
  9. 제4항 또는 제7항에 있어서,
    룰이 저장되지 않은 엔트리가 존재하고, 다음 차례에 수신되는 룰에 부여될 시퀀스 ID로부터 최대 부여될 수 있는 시퀀스 ID 까지 사용되지 않은 엔트리가 존재하지 않는 경우, 양방향 링크 리스트를 순서대로 읽어가면서 시퀀스 ID를 재할당하는 단계를 더 포함하는 라우팅 시스템의 룰 엔트리 관리 방법.
  10. 제9항에 있어서,
    상기 시퀀스 ID 재할당 과정은,
    다음 차례에 수신되는 룰에 부여될 시퀀스 ID로부터 최대 부여될 수 있는 시퀀스 ID 까지 사용되지 않은 터너리 CAM의 엔트리 개수에서 최대 부여될 수 있는 시퀀스 ID 이전에 사용 가능한 터너리 CAM의 엔트리 개수를 뺀 값의 절대값 시간 후에 수행되는 라우팅 시스템의 룰 엔트리 관리 방법.
  11. 제9항에 있어서,
    상기 시퀀스 ID 재할당 과정은,
    양방향 링크 리스트를 시퀀스 ID 가 증가하는 순서대로 읽어가면서, 양방향 링크 리스트를 구성하는 각 노드에 시퀀스 ID를 1부터 차례로 재할당하는 것을 특 징으로 하는 라우팅 시스템의 룰 엔트리 관리 방법.
  12. 해쉬 키로 구성되는 해쉬 테이블, 상기 해쉬 테이블의 엔트리를 헤드 노드로 하고 룰 ID와 룰이 입력된 우선 순위에 따라 부여되는 시퀀스 ID를 포함하는 각 노드들을 연결하는 단일 링크 리스트 및 독립적인 헤드 노드를 가지고 상기 단일 링크 리스트를 구성하는 각 노드들을 시퀀스 ID 순서에 따라 양방향으로 연결하는 양방향 링크 리스트를 구성하는 네트워크 프로세서; 와
    상기 노드에 포함된 룰을 룰에 부여되는 시퀀스 ID가 가리키는 터너리 CAM 엔트리에 저장하는 터너리 CAM을 포함하는 라우팅 시스템.
  13. 제12항에 있어서,
    상기 해쉬 테이블은,
    패킷 분류나 패킷 필터링 룰 각각을 구별하는 룰 ID, 룰이 적용된 인터페이스 인덱스 및 인터페이스의 방향을 인자로 하는 해쉬 키를 엔트리로 구성하는 것을 특징으로 하는 라우팅 시스템.
  14. 제13항에 있어서,
    상기 단일 링크 리스트는,
    상기 해쉬 테이블의 엔트리를 헤드 노드로 하고, 시퀀스 ID와 해쉬 키에 대응되는 룰 ID 또는 인터페이스 인덱스에 대한 정보를 포함하는 노드들을 순차적으로 연결하는 라우팅 시스템.
  15. 제13항에 있어서,
    상기 양방향 링크 리스트는,
    독립적인 헤드 노드를 주축으로 하여 상기 단일 링크 리스트를 구성하는 각 노드들을 시퀀스 ID 가 증가하는 순서 또는 감소하는 순서에 따라 연결하는 라우팅 시스템.
  16. 제12항에 있어서,
    상기 네트워크 프로세서는,
    패킷 분류 또는 패킷 필터링을 위한 룰 정보와 터너리 CAM에 임의의 룰을 추가 또는 삭제하기 위한 정보를 포함하는 엔트리 관리 정보를 엔트리 관리부에 제공하는 인터페이스부; 와
    해쉬 테이블, 단일 링크 리스트 및 양방향 링크 리스트를 구성하고, 이를 참조하여 엔트리 관리 정보에 따라 임의의 룰을 터너리 CAM에 저장하거나, 터너리 CAM에서 삭제하는 엔트리 관리부를 포함하는 라우팅 시스템.
  17. 제12항에 있어서,
    상기 네트워크 프로세서는,
    터너리 CAM을 룩업하여 획득한 패킷 포워딩 정보에 따라 패킷을 필터링하거나 패킷 분류에 따른 정책을 적용하는 룩업 처리부를 더 포함하는 라우팅 시스템.
  18. 제12항에 있어서,
    상기 터너리 CAM이 저장하는 각 룰에 대응되는 패킷의 포워딩 정보를 저장하는 보조 메모리를 더 포함하는 라우팅 시스템.
KR1020070014293A 2007-02-12 2007-02-12 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법 KR100864888B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070014293A KR100864888B1 (ko) 2007-02-12 2007-02-12 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법
US12/068,365 US20080192754A1 (en) 2007-02-12 2008-02-05 Routing system and method for managing rule entries of ternary content addressable memory in the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070014293A KR100864888B1 (ko) 2007-02-12 2007-02-12 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법

Publications (2)

Publication Number Publication Date
KR20080075307A KR20080075307A (ko) 2008-08-18
KR100864888B1 true KR100864888B1 (ko) 2008-10-22

Family

ID=39685758

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070014293A KR100864888B1 (ko) 2007-02-12 2007-02-12 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법

Country Status (2)

Country Link
US (1) US20080192754A1 (ko)
KR (1) KR100864888B1 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741737B (zh) * 2009-12-08 2013-01-16 中兴通讯股份有限公司 路由表的维护方法与装置
US8719307B2 (en) * 2010-04-23 2014-05-06 Red Hat, Inc. Concurrent linked hashed maps
US8908564B2 (en) * 2010-06-28 2014-12-09 Avaya Inc. Method for Media Access Control address learning and learning rate suppression
US8750144B1 (en) * 2010-10-20 2014-06-10 Google Inc. System and method for reducing required memory updates
US8627448B2 (en) 2010-11-02 2014-01-07 Jose Renato Santos Selective invalidation of packet filtering results
US9001828B2 (en) 2011-03-21 2015-04-07 Marvell World Trade Ltd. Method and apparatus for pre-classifying packets
US9098601B2 (en) * 2012-06-27 2015-08-04 Futurewei Technologies, Inc. Ternary content-addressable memory assisted packet classification
US9559897B2 (en) 2012-12-21 2017-01-31 Brocade Communications Systems, Inc. Device ID assignment in a system of devices
US9542402B2 (en) * 2013-04-24 2017-01-10 Empire Technology Development Llc Computing devices with multi-layer file systems
US9313102B2 (en) 2013-05-20 2016-04-12 Brocade Communications Systems, Inc. Configuration validation in a mixed node topology
US9853889B2 (en) 2013-05-20 2017-12-26 Brocade Communications Systems, Inc. Broadcast and multicast traffic reduction in stacking systems
US20140362858A1 (en) * 2013-06-05 2014-12-11 Broadcom Corporation Efficient Management of Linked-Lists Traversed by Multiple Processes
US10284499B2 (en) 2013-08-22 2019-05-07 Arris Enterprises Llc Dedicated control path architecture for systems of devices
US9185049B2 (en) 2013-10-31 2015-11-10 Brocade Communications Systems, Inc. Techniques for simplifying stacking trunk creation and management
CN104809135B (zh) * 2014-01-27 2019-01-11 腾讯科技(深圳)有限公司 一种数据存取方法及装置
US9577932B2 (en) * 2014-02-12 2017-02-21 Brocade Communications Systems, Inc. Techniques for managing ternary content-addressable memory (TCAM) resources in heterogeneous systems
US9692695B2 (en) 2014-03-27 2017-06-27 Brocade Communications Systems, Inc. Techniques for aggregating hardware routing resources in a multi-packet processor networking system
US9692652B2 (en) 2014-04-03 2017-06-27 Brocade Communications Systems, Inc. Framework for reliably communicating port information in a system of devices
US9407735B2 (en) * 2014-06-10 2016-08-02 Cisco Technology, Inc. Flow matching optimization in scaled environments
CN105323175A (zh) * 2014-08-05 2016-02-10 中兴通讯股份有限公司 一种地址解析协议表的扩展方法和装置
CN107292107A (zh) * 2014-12-02 2017-10-24 厦门飞游信息科技有限公司 一种地图寻路方法、设备及计算终端
US10091059B2 (en) 2014-12-16 2018-10-02 Arris Enterprises Llc Handling connections between network devices that support multiple port communication modes
CN104484281B (zh) * 2014-12-26 2018-09-04 新华三技术有限公司 数据存储方法、查找方法及装置
US9590897B1 (en) * 2015-02-26 2017-03-07 Qlogic Corporation Methods and systems for network devices and associated network transmissions
US10496680B2 (en) 2015-08-17 2019-12-03 Mellanox Technologies Tlv Ltd. High-performance bloom filter array
US9418741B1 (en) * 2015-08-25 2016-08-16 Freescale Semiconductor, Inc. Content addressable memory with search line test circuitry
US10049126B2 (en) 2015-09-06 2018-08-14 Mellanox Technologies Tlv Ltd. Cuckoo hashing with selectable hash
US9706017B2 (en) * 2015-09-29 2017-07-11 Mellanox Technologies Tlv Ltd. Atomic update of packet classification rules
US10068034B2 (en) * 2016-09-07 2018-09-04 Mellanox Technologies Tlv Ltd. Efficient matching of TCAM rules using hash tables in RAM
US10491521B2 (en) 2017-03-26 2019-11-26 Mellanox Technologies Tlv Ltd. Field checking based caching of ACL lookups to ease ACL lookup search
US11283680B2 (en) * 2017-06-19 2022-03-22 Cisco Technology, Inc. Identifying components for removal in a network configuration
US10318588B2 (en) * 2017-07-01 2019-06-11 Cisco Technology, Inc. Searching varying selectable physical blocks of entries within a content-addressable memory
US10476794B2 (en) 2017-07-30 2019-11-12 Mellanox Technologies Tlv Ltd. Efficient caching of TCAM rules in RAM
US11327974B2 (en) 2018-08-02 2022-05-10 Mellanox Technologies, Ltd. Field variability based TCAM splitting
US11003715B2 (en) 2018-09-17 2021-05-11 Mellanox Technologies, Ltd. Equipment and method for hash table resizing
CN111324382B (zh) 2018-12-13 2023-03-03 华为技术有限公司 指令处理方法和芯片
US10944675B1 (en) 2019-09-04 2021-03-09 Mellanox Technologies Tlv Ltd. TCAM with multi region lookups and a single logical lookup
US11539622B2 (en) 2020-05-04 2022-12-27 Mellanox Technologies, Ltd. Dynamically-optimized hash-based packet classifier
WO2022017593A1 (en) * 2020-07-22 2022-01-27 Huawei Technologies Co., Ltd. Hardware based pipelined sorter
US11782895B2 (en) 2020-09-07 2023-10-10 Mellanox Technologies, Ltd. Cuckoo hashing including accessing hash tables using affinity table
CN112948642A (zh) * 2021-03-30 2021-06-11 四川九洲电器集团有限责任公司 一种嵌入式哈希表及其操作方法、遍历方法和装置
US11917042B2 (en) 2021-08-15 2024-02-27 Mellanox Technologies, Ltd. Optimizing header-based action selection
CN113539368B (zh) * 2021-08-30 2023-02-03 长春理工大学 荧光图像信号数据存储与颜色分类方法
US11929837B2 (en) 2022-02-23 2024-03-12 Mellanox Technologies, Ltd. Rule compilation schemes for fast packet classification
US11968285B2 (en) 2022-02-24 2024-04-23 Mellanox Technologies, Ltd. Efficient memory utilization for cartesian products of rules

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050108301A (ko) * 2004-05-11 2005-11-16 삼성전자주식회사 계층적 룰베이스 분할을 통한 패킷 분류 방법
KR20070097207A (ko) * 2006-03-28 2007-10-04 충남대학교산학협력단 Tcam을 이용한 고성능 패킷 분류 방법 및 그 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286080B1 (en) * 1999-02-16 2001-09-04 International Business Machines Corporation Advanced read cache emulation
US6633548B2 (en) * 2001-01-30 2003-10-14 Nokia Intelligent Edge Routers Inc. Method and apparatus for ternary content addressable memory (TCAM) table management
US6918020B2 (en) * 2002-08-30 2005-07-12 Intel Corporation Cache management
US20050169169A1 (en) * 2004-01-30 2005-08-04 Srinivas Gadde Determination of an endpoint association from a transport address
US7411957B2 (en) * 2004-03-26 2008-08-12 Cisco Technology, Inc. Hardware filtering support for denial-of-service attacks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050108301A (ko) * 2004-05-11 2005-11-16 삼성전자주식회사 계층적 룰베이스 분할을 통한 패킷 분류 방법
KR20070097207A (ko) * 2006-03-28 2007-10-04 충남대학교산학협력단 Tcam을 이용한 고성능 패킷 분류 방법 및 그 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"TCAM을 이용한 패킷 분류를 위한 효율적인 갱신 알고리즘" 한국통신학회논문지, v.31, no.2A, pp.79-85, 2006년 2월

Also Published As

Publication number Publication date
KR20080075307A (ko) 2008-08-18
US20080192754A1 (en) 2008-08-14

Similar Documents

Publication Publication Date Title
KR100864888B1 (ko) 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법
KR100612256B1 (ko) 터너리 내용 주소화 메모리 관리 장치 및 그 방법
US8335780B2 (en) Scalable high speed relational processor for databases and networks
KR100705593B1 (ko) 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법
US8284787B2 (en) Dynamic tree bitmap for IP lookup and update
EP1623347B1 (en) Comparison tree data structures and lookup operations
US7043494B1 (en) Fast, deterministic exact match look-ups in large tables
US7433871B2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
JP3800546B2 (ja) Tcamを使用するデータフローの選択的なルーティング方法
US6212184B1 (en) Fast scaleable methods and devices for layer four switching
US10083200B2 (en) Batch incremental update
EP2643762B1 (en) Method and apparatus for high performance, updatable, and deterministic hash table for network equipment
US8345685B2 (en) Method and device for processing data packets
US20130304926A1 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US6625612B1 (en) Deterministic search algorithm
US6529897B1 (en) Method and system for testing filter rules using caching and a tree structure
JP2004517519A (ja) 高速インターネットプロトコルルートルックアップ遂行及びルーティング/フォワーディングテーブル管理のための装置及び方法
JP3570323B2 (ja) アドレスに関するプレフィクスの格納方法
US8364803B2 (en) Method, device, computer program product and system for representing a partition of N W-bit intervals associated to D-bit data in a data communications network
WO2009076854A1 (zh) 数据缓存系统和大容量缓存的实现方法
US20140114995A1 (en) Scalable high speed relational processor for databases and networks
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
US7558775B1 (en) Methods and apparatus for maintaining sets of ranges typically using an associative memory and for using these ranges to identify a matching range based on a query point or query range and to maintain sorted elements for use such as in providing priority queue operations
Hsieh et al. Multiprefix trie: A new data structure for designing dynamic router-tables
Sun et al. An on-chip IP address lookup algorithm

Legal Events

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

Payment date: 20120927

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130927

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140929

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150925

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170927

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee