KR20060054353A - 분류자 확인을 위한 장치 및 방법 - Google Patents
분류자 확인을 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR20060054353A KR20060054353A KR1020067001764A KR20067001764A KR20060054353A KR 20060054353 A KR20060054353 A KR 20060054353A KR 1020067001764 A KR1020067001764 A KR 1020067001764A KR 20067001764 A KR20067001764 A KR 20067001764A KR 20060054353 A KR20060054353 A KR 20060054353A
- Authority
- KR
- South Korea
- Prior art keywords
- pattern
- packet
- classification
- identifier
- field
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/22—Arrangements for preventing the taking of data from a data transmission channel without authorisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5603—Access techniques
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 입력패킷의 분류방법에 대한 것이다. 필드의 패턴과 관련된 데이터 베이스를 유지하고 , 여기서 상기 필드는 네트워크 주소가 될 수 있다. 상기 데이터베이스는 각 패턴을 고유수치식별자(unique numeric identifier)에 매핑시킴으로서 구축될 수 있다. 상기 고유수치식별자의 수는 패턴의 수와 일치하며, 각각의 고유수치식별자의 크기는 각 패턴의 필드보다 훨씬 작다. 상기 데이터베이스는 각 패턴에 관련될 하나 또는 그 이상의 고유수치식별자의 범위를 결정함으로써 더 구축될 수 있다. 각 패턴의 상기 범위는 최소 고유수치식별자와 최대 고유수치식별자에 의해 경계가 정해질 수 있다. 상기 방법은 입력패킷의 필드를 이용하여 해당 필드에 대한 관련식별자를 결정하는 것을 포함하고, 여기서 상기 관련식별자는 고유수치식별자중의 하나와 일치한다. 상기 관련 식별자는 상기 패턴의 하나 또는 그 이상의 상기 범위와 매칭될 수 있고, 상기 방법은 입력패킷을 어떻게 처리할 것인지를 결정할 수 있다.
Description
본 발명은 패킷분류(packet classification)를 위한 시스템 및 방법, 더욱 상세하게는 효과적으로 패킷을 분류하는 시스템 및 방법에 관한 것이다.
패킷분류(Packet classification)는 진보된 네트워크 응용분야에서 보안 및 품질보장(QoS)을 위한 필수적인 전제요소이다. 패킷은 패킷교환(packet-switched) 네트워크상에서 전송되는 정보의 단편들이다. 데이터에 부가하여, 패킷이 어디로 전송되어야 하는지를 규정하는 수신지 주소(destination address)와 때때로 그것이 어디로부터 발신되었는지를 나타내는 발신지 주소(source address)(이 주소 정보는 전형적으로 패킷헤더(packet header)에 포함된다)를 포함한다. 일반적으로 패킷분류는 네트워크(neatwork)상에서 다른 패킷과 다르게 처리(process)되는 패킷을 필터링(filtering) 하는 것과, 이어서 패킷을 정해진 방식으로 처리하는 것에 관련된다.
패킷분류기(packet classifier)는 라우터(routers), 스위치, 및 패킷을 여과하고 처리하는 동작을 수행하는 유사장치에서 사용된다. 패킷분류기는 라우팅 될 패킷을 수신하여 패킷을 시스템 관리기 의해 유지되는 목록과 비교한다. 만약 매치된다면 그 패킷은 정해진 방법으로 처리될 것이다.
패킷분류에서 공통적으로 요구되는 것은 라우터가 패킷 헤더의 정보에 기초하여 패킷을 분류하는 것이다. 패킷 헤더는 발신지 주소 및 수신지 주소, 프로토콜(protocols), 플래그(flags) 및 서비스 타입(type)과 같은 다양한 정보를 포함하는 여러 필드를 포함한다. 패킷은 룰(rule)에 의해 정의되는 플로우(flow)라 불리는 동일군(equivalence classes)으로 분류된다. 예를 들면 플로우는 발신지 주소가 프리픽스 비트 S(prefix bits S)로 시작되고, 프로토콜이 TCP이고, 웹트래픽(web traffic)으로 서브 포트(server port)에 전송될 한 세트의 패킷들이 될 수 있다. 각 플로우는 그것과 관련된 추가적인 처리 명령을 가질 수 있다. 이러한 명령의 예들은 특정 큐(queue)에 대한 패킷의 전송, 드로핑(dropping) 및 패킷의 복사를 포함한다.
패킷분류는 10G/sec 이더넷(Ethernet) 네트워크에서, 15밀리언 패킷/sec에 가까운 속도로 수행되어야 한다. 전형적인 패킷 분류자의 경우 최악의 경우에 있어서 각 패킷은 결과가 결정되기 전에 각 룰에 비교되어야 한다. N개의 룰이 주어진다면, 패킷분류기에 의해 매 초당 15×N밀리언의 비교(comparisons)가 수행되어야 한다. 현재 N은 전형적으로 1000개의 명령이다. 그러나 인터넷상에서 수요는 좀 더 복잡해지고 있기 때문에 N은 가까운 미래에는 100,000에 접근할 것이다. 이렇게 많은 수의 룰 들은 전형적인 패킷 분류기에서 초당 1.5조의(trillion)의 비교를 요구할 것이다. 또한 패킷분류기에 사용되는 비교는 다수의 헤드필드에 대한 동일성 및 범위 확인으로 이루어지는 비단순(non trivial) 작업이다.
[ 발명의 요약 ]
본 발명의 하나의 구현예는 입력되는 패킷을 분류하는 방법에 관한 것이다. 이러한 방법은 예를 들어, IPv4 또는 IPv6 패킷 매칭에 사용될 수 있다. 이 방법은 필드의 패턴과 관련된 데이터베이스를 유지하는 것을 포함하는데 여기서 필드는 네트워크 주소가 될 수 있다. 본 발명의 하나의 양상에 따르면, 데이터베이스는 트리 데이터 구조로 유지될 수 있다. 그 데이터베이스는 각 패턴을 고유수치식별자(unique numeric identifier)에 매핑시킴으로써 구축될 수 있다. 고유수치식별자의 수는 패턴의 수와 같고, 각 고유수치식별자의 크기(size)는 각 패턴의 필드보다 훨씬 작다. 데이터 베이스는 각 패턴에 연관될 하나 또는 그 이상의 고유수치식별자의 범위를 결정함으로써 구축될 수 있다. 각 패턴에 대한 범위는 최소 고유수치식별자와 최대 고유수치식별자에 의해서 경계가 정해질 수 있다. 이 방법은 또한 입력패킷의 필드를 사용하여 그러한 필드에 대한 관련식별자를 결정하는 것을 포함하고, 여기서 관련식별자는 고유수치식별자중의 하나와 일치한다. 이어서 관련식별자는 그 패턴에 대한 하나 또는 그 이상의 범위와 매칭될 수 있고, 이어서 이 방법은 그 입력패킷을 어떻게 처리할 것인지를 결정할 수 있다.
본 발명의 다른 구현예는 제 1 구현예의 방법에 유일하게 적합한 패킷분류 장치에 관한 것이다. 이러한 구현예에서는, 다수의 단순 프로세싱 요소(simple processing elements)들의 패킷 분류 동작이 프로그램된 제어하에서 수행되도록 조직되고 제어된다. 이 실시예의 한가지 능력은 수치범위 동작(numerical range operation)을 가능하게 하는 것이다 - 즉, 필드가 수치적으로 두 목표 값들 사이에 놓이도록 결정하는 것이다.
본 발명의 또 다른 구현예는 분류 레코드(classification record)에 직접적으로 적용되는 분류프로그램 세그먼트(segment)를 선별하기 위해서 입력패킷의 분류레코드에 있는 데이터를 이용하는 메카니즘을 제공하는 것이다. 이 메카니즘은 두 개의 특징을 가진다. 첫째, 그것은 제 1세트의 바이너리 패턴 및 제 2세트의 바이너리 패턴을 유지하는 것을 특징으로 한다. 이 실시예에서 바이너리 패턴의 세트 중 하나는 패킷분류를 위한 동작 동안에 이용될 수 있고, 바이너리 패턴 중 나머지 세트는 시스템 관리자에 의해 업 데이트 될 수 있다. 이어서 두 세트의 바이너리 패턴들은 패턴의 무결절성 업데이트(seamless update)를 제공하기 위해 스위칭 될 수 있다. 둘째로, 본 발명의 메카니즘은 패킷헤더 또는 분류레코드에 포함된 데이터에 대한 분류 프로그램의 세그먼트를 선택하는데 특징이 있다.
본 발명의 또 다른 실시예는 위에 설명된 방법을 수행하기 위해 형성된 시스템이라는 특징이 있다.
[도면의 간단한 설명]
도 1a는 본 발명의 일실시예의 동작을 나타내는 블록도이다.
도 1b는 도 1a의 실시예와 관계되어 이용될 수 있는 데이터베이스의 생성을 나타내는 블록도이다.
도 2a는 본 발명의 일실시예에 따라 만들어진 트리에 대한 블록도이다.
도 2b는 발명의 한 실시예에 따라 만들어진 두번째 트리에 대한 블록도이다.
도 3은 도 2의 종료 노드(node)와 상응하는 패턴범위(pattern ranges)를 나타내는 표이다.
도 4는 본 발명의 한 실시예에 따른 분류엔진을 나타내는 블록도이다.
도 5는 TCP/IP 분류레코드의 한 예를 나타내는 블록도이다.
도 6은 포맷되지 않은 128-비트(bit) 분류레코드를 나타내는 블록도이다.
도 7은 도 5의 분류레코드로부터 얻어진 표이다.
도 8은 분류레코드에 재기록된 결과를 보여주는 블록도이다.
도 9는 분류결과의 포맷(format)을 나타내는 블록도이다.
도 10은 명령 포맷을 나타내는 블록도이다.
도 11은 우선순위 매치 상태(priority match status)를 나타내는 추가 필드를 가진 분류결과에 대한 블록도이다.
도 12는 일례의 분류 프로그램 구조(exemplary classification program structure)를 나타내는 표이다.
도 13은 필드압축(field compression)된 분류레코드에 대한 블록도이다.
도 14는 필드압축된 분류레코드에 대한 또 다른 실시예를 나타내는 블록도이다.
도 15는 본 발명에 따른 분류 엔진의 한 실시예에 관한 흐름도(flow chart)이다.
도 16은 분류엔진의 도 15에 도시된 헤더 어레이 구조(header array structure)의 블록도이다.
도 17은 분류엔진의 도 15에 도시된 프로세서 어레이 구조(processor array structure)의 블록도이다.
도 18은 도 17에 도시된 유한상태기계(finite state machine)의 유한상태도의 흐름도이다.
1. 패킷을 분류하는 방법
본 발명의 구현예들은 네트워크상에서의 효과적인 패킷분류를 제공한다. 본 발명은 네트워크 주소와 같이 긴 필드(long field)들을 보다 더 짧은 수치 식별자(numeric identifiers)로 재맵핑(remapping)함으로써 비교의 수를 최소화하는 방법을 이용한다. 수치식별자는 전 필드(full fields)를 대신하여 비교에 이용된다. 요구되는 수많은 계산을 급격히 감소시킴으로써, 전력과 비용이 절약되고, 주어진 룰의 수에 대해서 패킷분류기의 풋프린터(footprint)의 크기가 감소 될 수 있다.
본 발명의 하나의 양상에 의하면, 패킷분류의 방법 및 시스템은 제공된다. 이러한 구현예에서 패킷분류기는 집행될 한 세트의 룰을 유지한다. 각 룰은 그 안에 포함된 필드의 패턴을 가진다. 주소와 같은 필드들은 입력 패킷의 패킷 헤더 내에서 발견되는 주소와 매치될 수 있다. 하나의 구현예에서 분류 식별자(classifier identifier)라 불리는 고유수치식별자(unique numeric identifier)는 집행될 룰세트의 각 필드들을 식별하기 위해 사용된다. 분류식별자는 룰 세트 내에 포함된 패턴의 수에 따라 할당된다 (즉 각 패턴에 고유분류식별자가 할당된다). 따라서 룰내에 유지될 수 있는 N개의 패턴이 주어진다면, N개의 분류식별자가 할당될 것이다. 특히, 각 분류식별자의 할당은 룰과 관련된 주소(또는 주소들)로부터 기인하며, 이것에 대해서는 아래에 더 구체적으로 설명할 것이다. 필드들은, 하나의 구현예에서 네트워크 주소가 될 수 있으나, 본 발명은 네트워크 주소가 되는 응용만으로 한정되지 않는다.
도 1은 본 발명의 이런 구현예의 동작을 나타내는 블록도이다. 도 1a의 구현예에서 제 1데이터베이스는 패턴에 있어서의 주소 프리픽스(prefixs)와 고유하게 할당된 수치식별자 사이에서의 할당(assignment)을 제공하기 위해 유지된다. 이것은 블럭 5에 도시된다. 한 실시예에서 이 데이터베이스는 트리데이터구조를 이용하여 구현될 수 있다. 이어서 각 패턴은 그 패턴에 상응하는 일정한 범위의 고유수치식별자에 할당된다.
또한 독립(independent) 데이터구조도 유지되고, 이 데이터구조는 입력패킷의 패킷헤더의 각각의 독립필드(주소와 같은)에 관련식별자를 제공하는데 사용된다. 블럭10은 이 같은 행위를 나타낸다. 이것은 본질적으로 패킷분류에 대한 전처리단계(preprocessing step)로 인식될 수 있다.
이어서 입력패킷에 대한 관련식별자는 제 1 데이터베이스에서 패턴에 할당된 범위와 비교된다. 만약 관련식별자가 이들 범위중 하나 또는 그 이상 내에 속한다면, 우선순위 계산 모듈(priority computation module)이 그 룰들중 어느 것이 집행될지를 결정하기 위해 사용될 수 있다. 도 1a의 블럭 15는 관련식별자를 패턴에 대한 범위와 비교하는 행위를 나타낸다. 만약 입력 패킷이 일치한다면, 도 1a의 블럭 20에 도시된 바와 같이 입력패킷은 적절하게 처리될 것이다.
1. 재맵핑 패턴 (remapping pattern)
도 1a와 관련하여 상술한 바와 같이 각 패턴에 대한 고유수치식별자를 가지는 데이터베이스가 구축된다. 분류식별자로도 불리는 고유수치식별자는 입력패킷을 룰에 매칭시키는데 사용될 수 있다. 패킷분류기요구(packet classifier need)는 그 자체로서 룰세트내에서 발견된 N개의 주소(즉 패턴들)에만 관계된다. 본 발명의 실시예에서 분류식별자의 각각을 나타내기 위해 필요한 비트(bit)의 수는 log2N 보다 큰 최대 정수와 일치한다. 분류분류대상이 되는 공동 필드(Common fields)는 IPv4의 수신지 또는 발신지 주소 필드 및 IPv6의 수신지 또는 발신지 주소 필드이다. 이들 주소들은 크기(size)상으로 32비트(IPv4)내지 128비트(IPv6) 길이의 범위에 있다. 그러므로 기존의 패킷식별자는 일반적으로 각 룰 비교를 위해 32비트(예컨대, IPv4)를 비교한다. 그러나 본 발명의 실시예에서는 패킷식별자는 단지 log2N 비트만 비교한다. 이것은 상당한 계산 비교(computational comparisons) 상의 절감을 초래한다.
종래의 분류응용에 있어서(라우터와 스위치에서)는 패킷이 다음에 어디로 보내져야 되는지를 결정하기 위해 입력패킷의 수신지 주소를 조사할 필요가 있다. 이런 조사를 달성하기 위한 메카니즘은 패턴에 대한 고유분류식별자를 결정하기 위해 현 실시예가 구축하는 메카니즘이다. 잘 알려진 트리와 같은 소프트웨어 데이터구조와 TCM와 같은 하드웨어 메카니즘을 포함하는 입력패킷의 수신지주소의 조사를 위해 사용되는 많은 그러한 메카니즘이 있다. 더 나아가 라우터와 스위치는 발신지주소의 유효성 체크를 종종 수행하고, 이것은 일반적으로 수신지주소의 경우와 같은 유효한 조사(look up)를 필요로 한다.
예를 들어, 패킷식별자가 1024 룰의 데이터베이스를 유지한다고 가정한다. 고작 룰 데이터베이스는 1024개의 다른 주소 프리픽스 - 각룰에 대해서 하나씩 - 를 가진다. 네트워크 주소가 룰 데이터베이스 상에서 아무리 길어도 데이터베이스는 "0-1023"와 같이 주소 프리픽스 각각을 간단히 나타낼 수 있다. 즉 한 숫자는 각 주소 프리픽스에 할당된다. 이런 네트워크주소에 대해 각각을 나타내기 위해 요구되는 비트의 수는 10이다.(즉 210=1024)
동작기간 동안 고유하게 선택된 10비트 수(관련식별자(associated identifier)라 불리는)는 수신지 주소 조사 구조(lookup structure)에서 입력패킷의 수신지 프리픽스에 관련된다. 발신지 주소 조사구조에 관해서도 동일하게 실행된다. IPv4주소의 경우에, 비교에 요구되는 비트의 수는 64비트에서 20비트까지 감소될 것이다.- 44비트의 큰 이득이 있다.- IPv6주소의 경우에는, 요구되는 비교는 256비트에서 20비트로 급감 될 것이다.
이더네트 네트워크에서 15밀리언 패킷/sec에 근접되는 현재의 대역폭에서, 만약 N=1024 룰 및 N=1024 패턴이라면, 전형적인 패킷 분류기는 약 초당 15빌리언의 처리를 수행하여야 한다. 각 처리는 수신지 및 발신지 주소를 포함하는 여러개의 필드에 걸쳐 수행되어야 한다. 예를 들면 IPv4 수신지 및 발신지 주소에서 조사되어야 하는 개별 비트의 수는 각각 32비트, 즉, 총 64비트가 될 것이다. 그러나 본 발명의 실시예를 사용하면 만약 N=1024 룰 및 N=1024 패턴이라면 룰 당 비교는 64비트에서 20비트로 감소 될 것이다. 이것은 이런 중요한 필드들에서 거의 68%의 이득이 있음을 나타낸다. IPv6에서는 그 이득이 92%정도에 이른다.(256비트는 20비트로 감소된다)
이하에서 분류식별자가 패턴에 할당되는 과정에 대해서 설명한다. 룰세트내(즉 패턴내)에 포함된 주소들은 이 과정을 이용하여 분류식별자가 할당된다. 또한, 입력패킷의 패킷헤더내에서 발견된 주소들은 조사절차(look up procedure)를 이용한 관련식별자와 관련이 있다. 분류식별자들이 룰 세트내에 포함된 주소에 할당될 수 있는 과정을 먼저 설명한다. 룰 세트내에 포함된 주소들은 명세서를 통해서 "패턴들"로 나타낼 것이고, 입력패킷의 패킷헤드내에 포함된 주소는 "스트링(string)"으로 나타낼 것이다.
사용자가 룰 세트를 규정한 후에, 데이터베이스는 룰 세트내의 각 패턴에 대한 고유수치식별자를 할당하기 위해 구축된다. 고유수치식별자는 각 패턴의 길이보다도 길이가 더 작다. 한 실시예에서 데이터베이스는 룰 세트의 패턴을 사용하여 구축된 트리(tree)이다. 이 트리는 패킷분류기의 임의의 동작이 입력패킷에 대해 시작되기 전에 만들어질 수 있다.
도 1b는 본 발명의 일측면에 따른 패턴을 이용하여 데이터베이스를 구축하는데 사용될 수 있는 한 공정(process)의 블록도를 나타낸다. 그 절차에서 첫 번째 단계 185는 사용자(예를 들면 네트워크 관리자)가 룰 세트를 규정하는 것이다. 각 룰은 그 안에 포함된 패턴(예컨대, 네트워크 주소)을 가진다. 다음 단계 190은 룰에서 발견되는 고유패턴의 전체수를 결정하는 것이다. 마지막 단계 195는 각 패턴을 고유수치식별자에 매핑시키는 것이다. 고유수치식별자의 할당은 그 패턴의 바이너리 스트링에 기초한다. 각각의 고유수치식별자는 log2N 보다 큰 최소 정수보다 길이 면에서 길지 않고, 여기서 N은 룰 세트내에서 고유 패턴의 수이다.
도 2a는 4가지 패턴 - 각 패턴에 3개의 비트가 있는 - 을 가지는 트리의 생성을 나타낸다. 도 2a에서의 그림은 아래 패턴에 따르는 트리에 대한 것이다.
001
010
111
011
이 절차는 바이너리 결정 트리(binary decision tree)를 사용한다. 각 패턴은 왼쪽에서부터 오른쪽으로 분석된다(즉 가장 큰 비트가 맨 처음에). 노드(node) 100, 110, 120, 130, 140, 및 150은 박스에 의해 표현된다. 노드에 있어서 수는 분류식별자이다. 노드들은 결정경로(decision path) 105, 115, 125, 135, 145, 및 155에 의해 서로 연결되어 있다. 각 결정경로는 연관된 이진수를 가진다. 이 트리는 왼쪽에서부터 오른쪽으로 연속적으로 만들어지고 최소값을 가지는 패턴에서 시작하여 최대값을 가진 패턴에서 끝나게 된다. 예를 들면 첫 번째 결정 경로는, 만약 적용할 수 있다면, 루터노드(root node)에서 자노드(child node)까지 좌측으로 분기된다. 이 결정경로는 모든 패턴에 대해서 "0"과 일치하는 가장 높은 비트와 관련되어 있다. 그러므로 "0"으로 시작하는 모든 패턴은 이 결정 경로를 탐색할 것이다. 탐색전에는 노드들은 그들에게 할당된 분류식별자를 가지지 않는다. 가장 낮은 수치를 가지는 패턴은 맨 먼저 트리를 탐색한다.
도 2a에서 노드 100은 첫번째 비트의 결정 포인트(point)를 나타낸다. 만약 첫 번째 비트가 "0"이면, 그 패턴은 그것(즉 패턴 "001", "010", "011")과 관련된 "0"을 가지는 결정경로 105를 탐색한다. 만약 예상 패턴의 첫 번째 비트가 "1"이면, 그 패턴은 결정 패스 155(이것은 패턴 111의 경우도 마찬가지이다)를 탐색한다. 패턴의 종료를 결과시키지 않는 노드는 분류식별자 "0"이 할당된다. "0"을 가지는 노드는 룰 세트 상에서 어떤 패턴과도 일치하지 않는다. 도 2a의 예에서 "001"는 트리를 탐색하는 첫 번째 패턴이다. 패턴 "001"는 탑(top) 노드 100에서 시작하고, 노드가 패턴 탐색의 종료를 초래하지 않기 때문에 노드 100은 분류식별자 "0"이 할당된다. 패턴"001"의 첫째 비트가 "0"이기 때문에 그 패턴은 결정경로 105를 통과한다.
패턴 "001"이 노드 110에서 종료되지 않기 때문에 노드 110은 분류 식별자 "0"이 할당된다. 앞의 결정 절차와 부합되게 패턴 "001"은 결정경로 115를 탐색하고 노드 120에서 종료된다. 하나의 자 노드를 가지는 모 노드(parent node)는 설명 목적을 위해 제거되었음을 유의하여야 하고, 모 결정경로(parent decision path)는 이러한 생략을 반영한다. 따라서 결정경로 115는 그것과 관련된 바이너리 스트링 "01"을 가진다. 패턴 "001"은 노드 120에서 비트가 소진되어 종료된다. 따라서 노드 120은 분류식별자 1로 할당되고, 이것은 유일하게 패턴"001"을 식별한다.
유사한 탐색이 최소 잔여 패턴인 다음 패턴 "010"에 대해서 일어난다. 패턴 "010"은 노드 130에서 종료되기 전에 노드 100, 110, 및 140을 탐색한다. 그러므로 노드 130은 분류식별자 "2"에 할당된다. 모든 패턴이 분류식별자에 할당될 때까지 유사한 탐색이 소모적으로 발생한다. 예를 들면 패턴 "001"은 노드 150에서 종료되기 전에 노드 100, 110, 및 140을 탐색한다. 그러므로 노드 150은 분류식별자에 "3"으로 할당된다. 마지막으로 패턴 "111"은 노드 160에서 종료되기 전에 노드 100을 탐색한다. 그러므로 노드 160은 분류식별자 "4"로 할당된다.
도 2a의 실시예에서 N=4이다. 상술한 바와 같이, 이러한 4개의 주소를 나타내기 위해 필요한 비트의 수는 log2N 비트이다. 그러므로 이러한 실시예에서 단지 2개의 비트만이 4개의 룰을 할당하기 위해 필요하다. 게다가 N=4 이기 때문에 도 2a의 트리와 관련된 4개의 고유 분류식별자가 있다.
도 2b는 IPv4 주소로 부터 유래된 아래의 4가지 패턴에 대한 분류식별자의 할당으로 만들어진 트리를 나타낸다.
128.0.0.0/8=0b10000000
144.0.0.0/8=0b10010000
128.0.0.0/12=0b10000000.0000
128.192.0/10=0b10000000.11
이 패턴은 각 32비트 IP주소에 대한 서브넷 마스크(subnet mask)를 나타낸다. 예를 들면 128.0.0.0/8의 패턴은 주소의 첫 8비트이다(즉 "10000000"). 마찬가지로 패턴 144.0.0.0/8의 패턴은 주소의 첫 8비트이다.(즉 "10010000")
도 2a의 예에서처럼 도 2b의 실시예에 대한 분류식별자는 그 패턴을 나타내는 바이너리 트리(즉, 각 노드가 공통 스트링 프리픽스를 나타내는 트리)에 대한 깊이-우선, 전위탐색(depth-first, pre-order traversal) 연속적으로 할당될 수 있다. 도 2b에서 노드에 있는 숫자들은 분류식별자를 나타내고, 에지(edge)들은 그들을 탐색하기 위한 서브스트링(이진수로)에 라벨링(labeling)된다. 이러한 트리는 어떤 패턴과도 관계되지 않는 분기점이 되는 중간 노드를 가질 수 있다. 하나의 패턴과 관계된 노드는 종료 노드(terminal node)로서 지칭된다.
설명을 간략하게 하기 위해 단지 하나의 자노드를 가지는 분류식별자 "0"으로 할당된 노드는 도 2b에서 제거되었다. 제거된 결정경로와 관계있는 이진수는 모결정 경로에 의해서 흡수된다. 예를 들면, 결정경로 225에 있어서 "00000"스트링 대신에 결정경로 225는 각각 분류식별자 "0"을 가지거나 결정경로의 각각과 관련된 "0"을 가지는 5개의 노드의 시퀀스로 표현될 수 있다.
트리데이터구조의 구축 후에, 각 패턴에 적합한 분류식별자를 할당하기 위해 탐색된다. 탐색방법은 잘 알려진 깊이 우선 탐색 알고리즘(depth-first traversal algorithm)이 될 것이다. 이러한 탐색은 룰 매칭에 있어 주소 예측을 명확히 할 수 있는 메카니즘을 제공하고 각 패턴에 대한 분류식별자의 범위를 체크 할 수 있는 많은 메카니즘을 허용할 수 있다.
도 2b에서 표현된 트리의 깊이-우선 전위 탐색의 실행은 아래에서 상세하게 설명하는 바와 같이 진행된다. 탐색은 필수적으로 트리의 종료노드를 일일이 열거한다.
루트 노드(205)는 종료 노드가 아니며, 따라서 이것은 "0"으로 할당된다. 루터노드의 자 노드의 세트가 결정된다. 이러한 세트는 규약에 따라 0, 1, 2의 멤버(members)를 가진다. 이 세트가 2개의 멤버들을 가질 때 첫 번째 멤버는 두 멤버 중 수치적으로 작은 것이다. 도 2b에서 루터 노드의 유일한 자 노드는 노드 215이다. 이것은 종료 노드가 아니므로 이것을 수 "0"으로 할당하게 된다.
노드 215의 자 노드 세트는 220과 250을 포함한다. 우리는 이 세트 (노드 220)의 첫째 멤버를 방문한다. 노드 220은 종료 노드이고 가장 먼저 접하게 되므로 수 "1"로 할당되며, 그것의 자 노드(230, 240)들의 세트는 이어서 조사된다.
노드 230은 노드 220의 첫 번째 자 노드이다. 노드 230은 종료 노드이다. 이것은 접하는 두 번째 종료 노드이므로 수 "2"로 할당된다(깊이-우선 탐색에 있어서 접하는 두 번째 종료 노드를 나타낸다). 노드 230은 자 노드를 가지지 않으므로 이 경로는 종료된다.
노드 240은 노드 220의 두 번째 자 노드이며 또한 종료 노드이다. 이것은 접하는 세 번째 종료 노드이므로 수 "3"이 할당된다. 노드 240은 자 노드를 가지지 않으므로 이 경로는 종료된다.
노드 215로 복귀하면, 그것의 두 번째 자 노드는 아직 열거되지 않았다. 노드 215의 두 번째 자 노드는 노드 250이고, 이것은 접하는 네 번째 종료노드이다. 따라서 수 "4"가 할당된다.
도 2b의 예에서 N=4이다. 이런 4개의 주소를 표현하기 위해 요구되는 비트의 수는 log2N 비트, 즉, 2비트이다. 또한 N=4이므로 도 2b에서 도시된 패턴과 관련되는 4개의 고유 분류식별자가 있다.
아이피(IP) 주소들은 다른 주소 내에 포함될 수 있다. 이것은 룰 세트의 패턴내에서도 일어날 수 있다. 도 2b의 예에서 IP 주소 128.0.0.0/12 및 128.192.0.0/10은 128.0.0.0/8 내에 포함된다. 이것을 반영하기 위해 각 패턴의 범위들이 결정되고 표로 정리된다. 각 패턴에 할당된 분류식별자는 그 범위 안에 포함되어야 한다. 더욱이 자 노드들의 분류식별자들은 그 패턴 범위 내에 포함되어야 한다.
이러한 기준은 그 패턴 범위를 결정하는 아래의 방법을 사용하여 만족 될 수 있다. 패턴에 대해 할당된 분류식별자는 패턴 범위에 대한 하단경계(low bound)가 되도록 선택된다. 상단경계(upper bound)는 그것 아래의 최대분류식별자이다(즉 그것 아래의 자노드). 이것은 분류식별자가 좀 더 특정한 패턴에 일치될지라도, 개괄적인 패턴(genernal pattern)하의 특수한 패턴들이 개괄적인 패턴에 매치 될 수 있도록 보장한다.(즉 만약 패턴내의 다른 필드가 일치되지 않는경우)
도 3은 도 2b에서 예를 든 세트에서 각 패턴에 대한 분류식별자 범위를 보여 준다. 도 3을 참고하면, 패턴 범위 310은 1에서 3까지 범위를 포함하고 있음을 보여준다. 다시 도 2b를 참고하면 패턴범위 310은 모 노드(그 자체) 220, 그의 자 노드 230, 240의 분류식별자를 포함하는 것을 알 수 있다. 패턴 범위 320, 330, 및 340 은 각각 범위에 관계된 노드가 그들로부터 분기 되는 자 노드를 가지지 않으므로 한 개의 분류식별자의 범위를 가진다. 따라서, 노드의 분류식별자는 상단경계(upper bound) 및 하단경계(lower bound)가 된다. 범위가 결정된 후에 패킷분류기는 동작될 준비가 된다.
입력패킷의 스트링이 하나 이상의 룰에 적용되는 지를 결정하기 위해 범위(range)가 사용된다. 그러므로 범위가 각각의 패턴에 할당될 때 그 범위가 패턴에 할당된 분류식별자 뿐만 아니라 그것의 자 노드의 분류식별자도 포함한다는 것이 중요하게 될 수 있다. 상술한 구현예에서는 관련 패턴의 범위의 하단경계로 분류 식별자를 이용하였으나, 분류식별자를 패턴 범위의 상단 경계로 사용하는 것을 배제하는 것은 아니다. 이러한 동작을 얻기 위한 어떠한 스킴(scheme)도 본 발명의 범위 내에 포함된다.
아래의 코드는 - 이것이 실행될 때 - 분류식별자를 가진 트리를 열거하는데 사용될 수 있다. 이 코드는 단지 예에 불과하고 이러한 트리는 다른 코드 또는 방법을 이용하여 만들어질 수 있다.
● 탐색 개시전 : currentC1sId = 0, nextC1sId=1, visitRoot(),
● 만약 노드가 패턴에 일치하지 않는다면 : push ( currentC1sId ), node.cIsId=currentC1sId, visitChildren ( node ), currentC1sId = pop (),
● 그렇지 않다면(otherwise): push(currentC1sId), currentC1sId=nextC1sId, nextC1sId=nextC1sId + 1, node.cIsId=currentC1sId, visitChildren(node),currentC1sId=pop().
2. 패킷 분류를 위한 동작
다시 도 1a를 참고하여, 패킷분류의 하나의 방법에 대해 더욱 자세히 설명할 것이다. 도 1a에서 제1 단계(5)는 데이터베이스내의 각각의 고유패턴에 대한 고유 수치식별자를 가지는 데이터베이스를 유지하는 것을 포함한다. 특히 위에 설명된 바와 같이 데이터베이스는 매치 될 긴 패턴들(예를 들면 주소 등)의 어레이를 포함할 수 있다. 이 데이터베이스는 패턴의 어레이에 대응되는 짧은 고유 수치식별자의 대응 어레이를 유지한다. - 각 패턴에 대해 하나의 고유 수치식별자 를 가짐 - 예를 들어, 데이터베이스 패턴의 어레이가 아래의 어레이로 이루어졌다고 가정하자 : 128.0.0.0/8, 128.0.0.0/12, 128.192.0.0/10, 및 144.0.0.0/8. 데이터베이스는 그 어레이에 대해 다시 번호를 매기고 각각 1,2,3, 및 4로서 패턴을 지칭하고, 이들은 새로운 어레이로 저장된다. 새로운 어레이의 멤버들은 고유 수치식별자(unique numeric identifiers) 또는 분류식별자(classifiers identifiers)로 불린다. 각 고유 수치식별자는 그것이 유래된 기원 패턴(originating pattern)을 암시적으로 나타낸다. 파트 A.1은 좀 더 자세히 그러한 패턴의 어레이에 대한 생성을 논의하고 있다. 부가하여, 위에서 설명한 바와 같이 각 패턴에 대한 분류식별자 범위가 결정된다.
패킷이 패킷분류자의 입구에 도달할 때, 패킷은 주소정보를 포함하는 패킷헤더를 가진다. 이런 실시예의 동작시, 입력패킷은 전처리기(pre-processor)에 의해 수신되고, 여기서 패킷헤더가 패킷으로부터 제거된다. 패킷헤더내에 포함된 네트워크주소는 식별이 된다. 이어서 제 2 데이터베이스를 탐색함으로써 헤더내의 네트워크 주소 각각에 대해 관련식별자를 연관시키려는 시도가 이루어지는데, 이것은 도 2a 또는 도 2b와 관계하여 위에서 논의된 것들과 유사할 수 있으나, 반드시 유사할 필요는 없다. 하나의 구현예에서, 전처리기(pre-processor)는 최장 프리픽스 일치(Longest- Prefix Match)(LPM)를 수행하고 관련식별자를 각 네트워크주소에 할당하기 위해 시도한다.
도 1a에서 제 2단계 (10)은 입력패킷의 주소(발신지 및 수신지 주소)를 사용하여 제 2 데이터베이스를 탐색하는 것이다. 이러한 제 2 데이터베이스는 필드 패턴에 대한 고유수치식별자의 할당을 위해 사용된 구조와 유사하거나 유사하지 않을 수 있다. 이러한 두 번째 메카니즘은 입력 패킷의 적당한 패킷 필드를 앞에 기술된 메카니즘에 의해 패턴에 할당된 고유수치식별자와 연관시킬 수 있는 임의의 메카니즘이 될 수 있다. 바꾸어 말하면 관련식별자(associated identifier)는 입력패킷의 각 필드(즉, 하나의 예에서 발신지 및 수신지 주소)에 할당된다. 이러한 제 2 데이터베이스는 - 그러나 한정되는 것은 아니다 - 트리 또는 목록(lists)과 같은 소프트웨어 데이터구조와 TCAMs(ternary addressable content addresable memories)와 같은 메카니즘을 포함하나 반드시 이들로 제한되는 것은 아니다. 패킷헤더의 필더에 대한 관련식별자의 결합은 다수의 메카니즘으로 수행될 수 있다.
도 1의 제 3단계(15)는 입력 패킷의 네트워크 주소에 할당된 관련식별자들을 각각의 패턴들에 연관된 일정한 범위의 값들을 가지는 하나 이상의 패턴과 매치시키는 것을 포함한다. 만약 입력패킷에 할당된 관련식별자가 하나 또는 그 이상의 패턴 범위에 속한다면 매치된다. 이제 입력스트링(input string)과 관련된 관련식별자는 각 패턴에 대한 범위에 대해 테스트(test)된다 (하단경계<=분류식별자<=상단경계). 예를 들면, 도 3을 참조하면, 만약 네트워크 주소에 할당된 관련식별자가 "3" 이라면, 이러한 네트워크 주소는 범위 310 및 340에 속한다. 그러므로 이러한 네트워크 주소는 패턴 128.0.0.0/8 및 128.192.0.0./10과 관련된 룰과 매치된다. 이러한 예에서, 네트워크 주소는 하나 이상의 룰과 매치된다. 우선순위 계산(priority computation)은 룰 중에서 어떤 부분이 집행되어야 하는지를 결정하기 위해 수행될 수 있다. 이러한 우선순위 계산이 네트워크 주소이외의 패킷헤더내의 정보를 사용할 수 있고, 또는 다른 실시예에는 사용자가 어느 룰이 우선순위를 가지는지를 정할 수 있다.
마지막 단계(20)는 매치된 패턴에 따라 패킷을 처리하는 것을 포함한다. 즉, 만약 매치된 패턴과 관련된 룰이 패킷 식별자에게 패킷을 드롭하라는 명령을 한다면, 그 패킷은 드롭될 것이다.
B. 분류 식별자 하드웨어(Classfier Identifier Hardware)
도 4는 본 발명의 하나의 양상에 따른 패킷분류기의 일 실시예를 도시한 것이다. 점선은 패킷분류기의 분류엔진 400을 포괄한다. 도 4의 실시예는 상술한 패킷분류 방법을 수행하는데 사용될 수 있다. 또한 위에 개설된 방법을 수행하는 데 다른 하드웨어 구현(implementation)들이 사용될 수 있다.
도 4를 참고하면, 분류엔진(400)은 매치 처리 단위(match processing unit, 440), 프로그램(템플릿(template)) (410), 및 패턴 세트 (420), (430)을 포함한다. 매치 처리 분류 유니트 (410)은 템플릿 (410)로부터 수신하는 동작들을 수행한다. 분류엔진 (400)의 템플릿 (410)은 사용자의 요구에 의해서 규정되고, 매치 처리 단위(440)에 의해 수행되는 동작의 목록을 유지한다. 템플릿(410)은 분류레코드의 포맷을 코드화(encode)하고, 분류레코드 상에서 수행될 동작들을 저장한다. 템플릿(410)은 고 레벨 코드(higher level code)로 사용자에 의해 프로그램 되고나서 컴파일(compile)된(미도시) 룰들로 구성된다. 분류레코드는 패킷 헤더의 스냅샷(snapshot)이 될 수 있다. 분류레코드의 목적중 하나는 오퍼랜드(operand)를 매치 처리 단위 (440)에 전송하는 것이다.
패턴 메모리 (420, 430)은 특정 시스템 배치에 대한 패턴을 저장한다. 소프트웨어 드라이버들(미도시)은 주어진 룰의 세트에 대해 분류엔진 400의 템플레이트 410에 패턴 메모리를 배치한다. 두 패턴 메모리들, 패턴 A420 및 패턴 B430은 무결절성의 업데이트(update)가 가능하도록 분류 엔진 400에서 유지된다. A 또는 B 패턴 420, 430중 하나는 어떤 주어진 시간에서 매치 처리 단위 440에 제공되기 위해 사용될 수 있다. 이것은 패턴 (420, 430)의 다른 것이 프로세스 인터페이스(processor interface)를 통해 업데이트 될 수 있도록 허용한다. 일단 업데이트 되면 프로세스는 분류엔진 400에 세트를 스위칭하라고 명령할 수 있다.
동작에 있어서, 전처리기(450)은 분류레코드를 매치처리단위(match processing unit) 440에 전송한다. 전형적으로 분류레코드는 예를 들면 주소와 같은 필드들을 포함하는 패킷헤더정보를 가지고 있다. 템플릿(410)으로부터 명령을 받으면 즉시 매치처리단위(440)는 분류레코드내의 할당된 필드와 A패턴 (420)과 비교하고 분류 결과를 후처리기(460)에 보낸다. 후처리기(460)는 매치처리단위(440)가 주어진 패턴 420, 430의 주어진 헤더에 대해 결정되는 최우선 룰(highest priority rule)을 코드화한다. 요약하면, 패킷은 전처리기 450에 의해 수신되고 이어서 패킷은 분류엔진 400에서 패턴과 매치되며 매치된 패킷은 매치된 패킷과 관련된 룰에 따라서 후처리기에 의해 처리된다
1. 분류 레코드(Classification Record)
분류레코드는 전처리기 450에 의해 입력패킷의 패킷헤더로부터 만들어진다. 128비트를 가지는 분류레코드(500)를 도 5에 나타낸다. 분류레코드 500내에 있는 두 개의 필드들은 하드웨어 구현(implementation)에 있어 중요성을 가진다. R비트(510)는 A/B선택 비트로써 이것은 분류레코드 500에 적용되는 명령세트를 제어하기 위해 사용된다. 도 5의 분류레코드(500)은 TCP/IP 분류를 위해서 만들어진다. 이러한 포맷은 IP 및 TCP 패킷 헤더로부터 추출된 필드를 통한 셉튜플(septuple)분류를 제공한다. 도 6은 포맷되지 않는 128비트 분류레코드의 한 예로써, 이것은 사용자의 할당에 따라서 포맷될 수 있다. 도 6의 음영부분은 적용데이터가 분류레코드 내 어디에 위치되는지 보여준다. 도 6은 도 5의 빈 분류레코드 500을 나타낸다.
일단 분류레코드가 포맷되면 다양한 분야에 걸쳐서 지지되는 동작이 결정된다. 도 7은 도 5에 도시된 분류레코드 500을 위한 전형적인 룰 템플릿의 개요이다. 도 7은 어떻게 템플릿이 표준 TCP/IP 헤더 및 분류레코드 500에 대해 사용하기 위해 만들어질 수 있는가의 하나의 구체적인 실시예가다. 필드 710은 분류레코드의 셉튜플 필드 중 어느 필드가 피연산필드가 되는 지를 선별한다. 필드 710은 TCP/IP패킷 헤더내에서 발견되는 공통 필드(common field)를 리스트(list)한다. 예를 들면, SA는 발신지 주소를 나타낸다. DA는 수신지 주소의 두 문자이다. 프로토콜은 어떤 프로토콜이 패킷 자체에 사용되는지(예컨대, TCP)를 나타낸다. TOS는 Type of Serve의 약어이다. SP는 발신지 포트(port)를 나타내고, DP는 수신지 포트를 나타낸다. TCPCtrl는 전송 통제 프로토콜의 제어필드(Transmission Control Protocolol' control field)를 나타낸다
동작(operation) 720은 피연산자에 대해 수행될 동작을 나타낸다. 일반 동작은 동일(equality), 비동일(inequality), 보다 큰(grater than), 보다 작은(less than), 범위 및 마스크된 동일성 체킹(masked equality checkimg)을 포함한다. 동일 체킹 테스트는 필드내의 비트가 패턴과 동일한지 테스트한다. 비동일 체크는 그 필드가 패턴과 일치되지 않는지를 테스트한다. "보다 큰" 체크는 그 필드가 특정 수(즉 패턴)보다 큰지를 테스트한다. "보다 작은" 체크는 필드가 패턴보다 작은지를 테스트한다. 마스크된 동일 체크는 예비단계를 제외하고 동일 테스트와 유사하다. 마스크된 동일 체크는 그것이 두 번째 패턴과의 동일성을 테스트 하기 전에 먼저 첫째 패턴을 가지고 비트별로 부울 AND (bitwise Boolean AND)연산을 수행한다. 동작 범위체크(operation range check)는 "보다 큰", "보다 작은" 동작들의 조합이다. 이것은 필드가 두 패턴 사이에 있는지를 테스트한다.
도 7을 참고하면, "샵오브헤더비트"(# of Header bit)(730)는 분류 헤더에서 셉튜플 필드의 크기를 나타낸다. 예를 들면, TCP/IPv4는 32비트의 수신지 주소와 발신지 주소를 사용한다. 간결화를 위해 IP 주소는 보통 소수점에 의해 이격된 4바이트(각 8비트를 가지는)로 표현된다. 각 바이트는 128.192.0.1처럼 수 0과 225 사이에의 숫자를 표현한다. "샵오브패턴비트"(# of pattern bits) (740)은 동작 720을 수행하기 위해 요구되는 패턴비트의 수를 나타낸다.
도 7에서 노트(Note)(750)로 표시된 열은 어떻게 칼럼 740의 각각의 패턴비트들이 어떻게 비교동작(720)에 있어서 적용되는지 사용자에게 명확하게 하기 위해 사용된다. 예를 들어, 룰이 분류레코드에서 SA필드(32비트)상의 마스크된 동일성(masked equality)을 수행한다면, 64비트(740으로부터)가 요구된다 - 마스크에 대해 32비트 및 동일에 대해 32비트 -. 노트 750 열에서 대응하는 행 772는 이것을 설명한다. 예를 들면 만약 마스크된 동일이 분류레코드에서 3비트("101")길이인 가설 필드에서 수행된다면 비교 동작을 완료시키기 위해서 6비트가 필요하다. 이러한 예에서 필드는 "101"이고, 첫째 패턴은 "110"이며, 첫째 필드는 "100"이고, 두 번째 패턴은 "110"이다. 마스크된 동일성의 동작마다, F는 비트 와이즈 부울 연산에서 m을 가진 AND'd이다. 그 결과가 "100"이다("101" AND "100"). 그 결과는 "110"인 n과 일치되지 않는다.
열 758, 이와 대응하는 노트(Note) 778는 소스포트필드에서 수행될 동작범위에 대해서는 32비트가 요구된다는 것을 사용자에게 알려준다. 동작에서 범위(range)는 오퍼랜드(예컨대 SA필드758)가 두 수 사이에 있는지를 테스트한다. 범위는 소스포트필드 758(예를 들면)상에서 수행될 수 있도록 상단 경계(16비트 길이) 및 하단경계(16비트길이)를 필요로 한다.
2. 분류결과
분류엔진 400이 매치의 결과에 도달할 때 분류결과라 불리는 이 결과는 분류레코드에 기록된다. 도 8에서 도시된 바와 같이 분류엔진은 분류결과 810으로 분류레코드의 최소 15비트를 덮어쓴다. 도 8을 참고하면 음영부분인 필드 820은 분류엔진 400에 전송된 분류레코드에 관하여 변경되지 않는다.
도 9는 분류결과 900의 포맷을 보여준다. 분류결과(900)은 3개의 필드를 포함한다. : M910, 세트 920, 및 필터(filter) 930이다. M필드(910)은 단일 비트 필드이고 매치가 발생하는지(세트되는 경우) 또는 발생하지 않는지 (클리어(clear)시)를 나타낸다.
세트 필드 920은 5비트 길이이다. 세트 필드 920은 어느 필터세트가 매치되는 지를 나타낸다. A필터 세트는 512 룰까지의 그룹이다(이와 같은 전형적인 묘사에서). 필터세트는 룰 분리기(rule separator)로 불리는 템플릿 내의 특수한 명령에 의해 분리된다.
이런 패킷분류자의 실시예는 룰의 데이터베이스를 유지한다. 룰들은 패킷이 패킷분류자에 도달했을 때 룰들이 소정의 순서에 적용되도록 그러한 룰 데이터베이스내의 네트워크 매니저(또는 프로토콜)에 의해 우선 순위가 정해진다. 따라서 패킷헤더가 둘 또는 그 이상의 룰과 일치한다면 최우선 순위를 가진 룰이 적용된다.
본 구현예에서 필터 필드 930은 9비트 길이이다. 필터 필드 930은 우선순위조정(priority arbitration)의 결과를 보고하기 위해 사용될 수 있다. 예를 들어, 분류엔진이 입력패킷에 연관된 관련식별자를 하나 또는 그 이상의 룰에 매치시킬때 우선순위의 문제가 발생된다. 분류엔진(네트워크 메니저에 의해 설정된 배치에 따라)은 어느 필터가 입력패킷에 적용되는지를 결정한다. 필터 필드 (930)는 우선 순위 결정의 결과이고 매치되는(만일 있다면) 최우선 필터(highest priority filter)를 나타낸다.
3. 명령세트
도 10을 참고하면, 명령세트는 템플릿과 R비트로 할당된 패턴세트의 조합이다. 본 발명의 구현예에서, 분류엔진의 명령크기는 522비트이다. 명령메모리는 분류 프로그램의 무결절성 업데이트가 가능하도록 이중화되어 있다. 즉, 제 2 명령세트와 패턴세트는 분류엔진내에 이중으로 유지된다. 이것은 사용자로 하여금 서비스를 중단시키지 않고 실행변환을 하기 위해 세트중 하나를 취할 수 있게 한다.
도 10은 명령의 포맷을 도시한 것이다. 명령1000은 3개의 필드를 가지고 있다. 명령 1000은 옵코드(Opcode) 필드 1010, 헤더비트셀(Header Bit Sel)필드 1020, 및 패턴 필드 1030을 포함한다. 옵코드 필드 1010은 수행될 동작을 나타내는 3비트 코드를 가리킨다.
공통 동작의 일부는 "필드분리기", "작거나 같은" "크거나 같은", "같은", "룰 분리기" "작거나 같은 우선순위" "크거나 같은 우선순위" 및 "동일한 우선수위"을 포함한다.
헤더비트선택(HeaderBitSel)필드 1020은 명령에 대한 오퍼랜드중 하나의 소스로써 분류레코드로부터 한 비트를 선택한다. 512 패턴비트의 각각은 동시에 비교되는 512 필터의 각각에 부합되는 한 비트를 가지는 두 번째 오퍼랜드의 소스로써 제공된다.
4. 합성된 동작(Synthesized Operation)
우리는 이런 기본 세트로부터 다른 동작들을 합성할 수 있고 이것은 특정 응용에 유용할 수 있다. 예를 들면, 부울 "OR" 명령어(Boolean "OR' Instrution)는 비트가 OR'd가 되도록 선택하면서 헤더비트선택(HeaderBitSel) 필드를 가진 "크거나 같은" (GE)명령어에 의해서 합성될 수 있고, 여기서 연속적인 OR 명령어는 그 순서에서 마지막 OR 명령을 제외하고 모두 0이다. 이것은 모두 하나의 패턴을 가진다.
본 실시예의 분류 엔진은 사실상 여러가지 이유로 입력패킷에 사용되는 터너리 컨텐트 어드레스블 메모리(Ternary Content Addressable Memory, TCAM)보다 우수하다. 특히 부울 로직(Logic) "OR" 연산을 표현하는 능력은 복수의 TCAM 엔트리의 사용 없이는 TCAM상에서 이루어질 수 없다. 또한 하나의 마스크를 모든 비트에 적용되도록 요구하는 것과 대조적으로 하나의 마스크를 하나의 필드에 적용하는 능력은 패턴 메모리를 좀 더 효과적으로 이용할 수 있게 한다. 더 나아가 본 발명의 구현예는 범위를 지원(support)하는 대단한 능력을 가지고 있다. 예를 들면, 공통 포트 표현은 룰 세트 상에서 "1023보다 큰(greater than 1023)"것이다. TCAM상에서 이런 포트 표현을 도입하는 룰의 구현은 6개의 TCAM 엔트리를 요구한다.
5. 분류 프로그램 구조(Classification Program Structure)(템플릿)
도 12는 분류프로그램의 일반적 구조를 보여준다. 템플릿 1210은 템플릿의 룰 분리기를 포함하는 앞선 명령중의 옵코드와 헤더 비트 선택(HeaderBitSel)필드의 순서에 의해 규정된다. 룰 분리 명령(rule separater instruction)은 필터세트의 경계를 규정한다. 똑같은 템플릿으로 표현되는 모든 필터는 필터세트로 그룹화되고, 그들의 패턴에 따라 세분(refine)된다. 한 개의 템플릿은 512개까지의 다른 필터에 적용된다. 템플릿은 384개의 명령만큼 커질 수 있고, 32개의 명령만큼 작을 수 있다.
6. 필드 압축(Field Compression)
수신지 프리픽스 또는 DMAC 주소와 발송 경로를 결합시키는 일은 특별한(제한된) 형태의 분류이다. 이것은 전형적으로 분류엔진에 의해 지지되는 진보된 N 터플(N-tuple)의 부분집합이다. 본 발명의 다른 구현예에서 필드 압축은 섹션(section) A에서 기술된 대로 실행된다. 섹션 A에서 중심축은 시스템에 의해서 지지되는 잠재적(potential)인 룰의 수를 확대시키기 위한 메카니즘을 제공한 것 뿐만 아니라, 패킷 식별자로 하여금 분류될 필드의 필드 압축을 이용할 수 있게 하는 것이다. 섹션 A에 설명된 기술을 완전하게 필드 압축에 적용될 수 있도록 개설한다.
전처리기가 룩업(lookup)동작을 실행할때 (예를 들면, 한 실시예에서 최장 프리픽스 일치(Longest-Prefix Match)), 전처리기는 관련식별자를 가진 분류 레코드를 실장케한다. IPv 주소의 경우, 분류레코드(즉 관련식별자)에 요구되는 표현은 64비트에서 32비트로 급감한다 - 44비트의 상당한 이득- . MAC 주소의 경우 분류레코드에 요구되는 표현은 96비트에서 20비트로 급감한다 - 76비트의 더욱더 큰 이득이 있다. 그리고 IPv6 주소의 경우 요구되는 표현은 256비트에서 20비트로 급감한다. 이런 치환을 필드압축이라 한다.
도 13은 발신지 및 수신지 프리픽스 주소의 필드 압축을 가진 셉튜플 IPv4 분류 레코드의 예이다. 도 13의 음영부분 1320을 참고하면 50비트는 이 구조에서 할당되지 않은 채(uncommitted)로 남아있다. 이 50비트는 분류를 위한 추가적인 필드를 제공하기 위해 사용될 수 있다.
도 14는 L2 브리지 프레임(L2 briged frame)에 대해 L3-4분류를 제공하는 11-튜플(tuple) 이더넷 프레임 분류 레코드의 한 예이다. T(타입(type))비트를 부가함으로써 이더넷 분류레코드가 하나를 다른 하나와 구별시키는 타입 비트를 가지는 IPv4 레코드와 동일한 것으로 추정될 수 있다. 이 기술은 룰 번역(compilation)을 간단히 하는데 유용하다.
7. 최적화(Optimization)
템플릿 크기의 데이터 의존 감소를 제공하도록 템플릿에 대해 약간의 최적화(optimization)가 실행될 수 있다. 동일한 헤더비트에 대해 만약 LE(작거나 같은)명령에 대한 패턴이 GE(크거나 같은)명령의 패턴과 같다면, 그 쌍은 똑같은 패턴을 가진 EQ(같은)명령으로 대체될 수 있다. 만약 LE 명령과 관련된 패턴이 모두 일(1)이면, 그 LE 명령은 제거될 수 있다. 만약 GE 명령과 관련된 패턴이 모두 제로라면 GE 명령은 제거될 수 있다. 만약 모두 제로 패턴 비트를 가진 MASK 명령이 있다면, MASK와 그의 대응되는 DATA 명령들은 제거될 수 있다.
이러한 최적화는 제공된 패턴에 관하여 분류프로그램 템플릿의 간단한 변환을 가능하게 한다. 템플릿이 크기상으로 감소되므로 추가적인 템플릿 명령이 가능해질 수 있다. 교대로 이것은 더 많은 필터가 특정될 수 있도록 가능하게 한다. 그러나 임의의 룰 명령(arbitrary rule ordering)은 일반적으로 그러한 최적화가 가능하도록 할 수 없다. 그러므로 이것은 위의 최적화 중 하나가 적용될 수 있는 가능성을 증가시키기 위해 어떤 발견적방법(heuristics) 적용을 요구할 수 있다.
8. 분류엔진의 구조(Architecture)
아래의 구현은 본 발명의 한 실시예에서 사용될 수 있다. 본 발명의 구조의 범위(scope)는 이러한 구현예로 한정되지 않는다. 도 15를 보면, 블록도는 패킷분류엔진 1600의 주요한 구성요소들을 보여준다. 이러한 구성요소들은 제어기(controller)(1610), 명령 메모리(1620), 하나 또는 그 이상인 패턴 메모리 (1630), 명령 디코더(decoder)(1640), 헤더 어레이(header array)(1650), 프로세서 어레이(1660), 결과 메모리(1670), 및 우선순위 인코더(encoder)(1680)을 포함한다.
전처리기(미도시)는 입력패킷의 분류 레코드를 포맷하고, 헤더 어레이 1650에 분류레코드의 수개의 필드를 기록한다. 헤더 필드 1650에 기록된 필드의 수는 패킷분류기(packet classifier)의 패킷처리속도를 결정한다. 예를 들어, 2억 패킷/초의 패킷 처리 속도는 적어도 하나의 분류 레코드가 매 50 나노 초마다 처리될 것을 요한다. 32 분류 레코드가 주어진다면, 프로세서 어레이는 동시에 모든 레코드를 처리하는데 1600 나노 초까지의 시간을 소비할 수 있다. 4 나노초 클락 사이클시간(4 nanosecond clock cycle time)이 주어진다면, 400개까지의 명령이 각 분류 레코드에 적용될 수 있다. 헤더 어레이 내에 유지되는 레코드의 수가 증가 될 때, 각 레코드에 적용될 수 있는 명령수 또한 증가된다.
명령 메모리(1620) 및 패턴 메모리(1630)은 일반 제어기 1610(예, 카운터(counter))에 의해서 어드레스 된다. 명령어는 헤더비트의 수와 옵 코드로 구성된다. 헤더비트는 적절한 수의 비트를 프로세서 어레이(1660)에 제공하기 위해 헤더어레이(1650)에 의해 사용된다. 옵코드는 각각의 프로세싱 요소(processing element)가 헤더어레이 (1650)로부터의 현재의 헤더 데이터 비트와 함께 데이터의 메모리로부터의 현재의 룰 데이터 비트에 관해 어떠한 조치를 취해야 하는 지를 결정한다. 이하에서 도 15에 도시된 블록도의 주요한 구성요소들에 대해서 설명한다.
a. 제어기(Controller)
제어기(1610)는 데이터 경로 요소들에 대해 타이밍(timing)을 제공한다. 이것은 전체 명령의 수를 모듈로(modulo) 계수하는 명령 포인터(instruction pointer)를 유지한다. 이 포인터는 명령 메모리(1620)와 패턴 메모리(1630)를 어드레스 하기 위해 사용된다. 제어기는 헤더 컨텍스트(header context)가 명령 시퀀스(sequence)의 개시시에 적절하게 스위칭 되도록 헤더 어레이(1650)의 타이밍을 관리한다.
b. 명령 및 패턴 메모리
명령 메모리(1620) 및 패턴 메모리(1630)는 본 발명의 실시예에서 스태틱 랜덤 액세스 메모리(Static Random Access Memory, SRAM) 장치를 포함한다. 한 실시예에서 공통 주소는 제어기 1610에 의해 제공받는다. 어드레스된 위치의 데이터가 읽히고 명령 디코더(1640)와 헤더 어레이(1650)에 전송된다. 본 구현에서의 상기 메모리들은 다이나믹 랜덤 액세스 메모리(Dynamic Random Access Memory)와 같은 다른 RAM 장치로 대체될 수 있다.
c. 명령 디코더(Instruction Decoder)
프로세서 어레이(1660)에 대한 적당한 제어신호가 생성될 수 있도록 명령 디코더(1640)는 명령 메모리(1620)로부터 수신된 명령을 디코딩하는 역할을 담당한다. 관련 제어신호들을 도 17에 도시하였고, 프로세서 어레이 구조(Processor Array Structure)는 아래에 설명된다.
d. 헤더 어레이
도 16은 헤더 어레이 1700의 구조를 나타낸다. 분류 레코드는 단일 사이클(single cycle)로 헤더어레이 1650에 기록된다. 한 개의 헤더비트는 현재 명령의 통제하의 각 헤더로부터 동시에 읽혀진다. 이와 같이 해서 헤더 어레이(1650)는 전이 메모리(transposition memorry)로 행동한다. 헤더어레이의 내용(contents)은 헤더의 현 세트(current set)를 적용하도록 분류 프로그램에 있어서의 명령의 부분집합을 결정하는데 사용될 수 있다. 그러한 선별은 고정되거나, 프로그램화될 수 있으며 이것은 분류레코드의 무결절성 업데이트를 가능하게 하고 효과적으로 분류프로그램 크기를 증가시킬 수 있다.
e. 프로세서 어레이(Processor Array)
도 17을 참고하면 프로세서 어레이(1660)의 구조(1800)은 처리할 헤더의 수만큼 열(row) 및 병렬로 처리될 룰 만큼의 세로 칸을 가진다. 상기 구조는 요구에 따라 수천 개의 프로세싱 요소(processing elements, PEs)(1850)로 구성될 수 있다. 단일 사이클에서 각각의 프로세싱 요소(1850)는 룰과 헤더비트 사이에서 발견된 매치를 가리키는 커맨드(command) 뿐만 아니라 패턴 메모리로부터의 비트 및 헤더 어레이(명령에 의해 지시되는 바와 같이)로부터 적합한 비트를 수신한다.
프로세싱 요소(1850)는 도 18에 상태도(state diagram)로 도시된 바와 같이 4-상태 유한 상태 기계(four-state finite state machine,FSM)이다. 비록 도 18의 상태 흐름도에서 도시하지 않았으나, 유한 상태 기계(1850)(도 17)은 명령 디코더 1640에 의해 지시받아서 일시정지될 수 있다(1860). 이런 일시정지는 클락 게이팅(clock gating) 및 다음 상태 로직에 의해 이루어질 수 있는데, 전자는 최종적으로 전체적으로 더 적은 로직을 초래한다.
새로운 룰 시그널 1870의 확인시, 전체 세로칸에 대한 매치상태 1910은 쉬프트 레지스트(shift register)(미도시)에 로딩되고, 유한 상태 기계(1850)는 매치 상태로 리셋(reset)된다. 후속되는 사이클에서, 쉬프트 레지스터는 이 결과를 매치를 전송하는 우선 인코드 1680으로 전환시킨다. 쉬프트 레지스터가 완전히 플러쉬(flush) 될 때까지 이것은 모든 사이클상에서 각 헤더에 대해 (열, row) 벡터(vector) 1810을 전환하는 것을 포함한다.
f. 우선순위 인코더(Priority Encoder)
우선순위 인코더는 매치 벡터상에 세팅된 최우선 요소세트(highest priority element)를 식별하여 그 결과를 결과 메모리에 기록한다.
상술한 패킷분류기는 다양하게 구현될 수 있다. 한 실시예에서, 이것은 케이스케이드(cascade)로 구성되어 장치의 한 인스턴스가 그 장치의 다른 인스턴스를 위해 제공된다.
보다 큼 및 보다 작음, 앞과 뒤, 오른쪽과 왼쪽, 꼭대기와 바닥, 위와 아래, 및 수평과 수직 등의 임의의 표현이 발명의 편의를 위해서 사용되지만 본 발명 또는 그의 구성요소들을 임의의 하나의 연결관계 위치 또는 공간적 배향으로 제한되는 것은 아니다. 첨부 도면상의 모든 치수는 장래의 디자인에 따라서 및 본 발명의 범위를 벗어나지 않는 본 발명의 구현예들의 의도된 사용과 관련하여 변경될 수 있다.
이상에서 몇 가지 구현예를 참고하여 본 발명을 설명하였으나, 본 발명이 속하는 기술분야에서 당업자들은 청구된 발명의 범위와 사상을 벗어나지 않고 만들어질 수 있는 다양한 변화를 인식할 수 있을 것이다. 따라서, 본 발명은 도면에서 도시된 것과 명세서에서 설명된 것으로 제한되지 않고 첨부된 청구범위에 표시된 것으로만 한정된다.
Claims (36)
- 다음의 단계들을 포함하는 입력패킷(incoming packet)의 분류방법 :하나 또는 그 이상의 필드의 패턴에 관련된 데이터베이스를 유지하는 단계로서, 여기서 상기 데이터베이스는 패턴을 고유수치식별자(unique numeric identifier)에 매핑시키는 과정, 여기서 상기 고유수치식별자의 수는 패턴의 수와 일치하며, 여기서 각각의 고유수치식별자의 크기는 각 패턴의 필드보다 훨씬 작은 과정 ; 및각 패턴에 관련될 하나 또는 그 이상의 고유수치식별자의 범위를 결정하는 과정으로서, 여기서 상기 범위는 최소 고유수치식별자와 최대 고유수치식별자에 의해 경계가 정해지는 과정에 의해 구축되는 데이터베이스 유지 단계 ;입력패킷의 필드를 이용하여 해당 필드에 대한 관련식별자를 결정하는 단계로서, 여기서 상기 관련식별자는 고유수치식별자중의 하나와 일치하는 단계 ;입력패킷의 필드에 할당된 관련식별자를 하나 또는 그 이상의 상기 범위와 매칭시키는 단계 ; 및상기 매칭작업에 기초하여 입력패킷을 어떻게 처리할 것인지를 결정하는 단계.
- 제 1항에 있어서, 상기 패턴의 필드들 및 상기 입력패킷들의 필드들이 네트워크 주소인 것을 특징으로 하는 입력패킷의 분류방법.
- 제 1항 있어서, 상기 입력패킷이 하나 이상의 필드를 가지고, 여기서 입력 패킷의 필드를 이용하여 관련식별자를 결정하는 동작이 상기 입력패킷의 필드 각각에 대해 수행되는 것을 특징으로 하는 입력패킷의 분류방법.
- 제 1항에 있어서, 상기 방법이 상기 관련식별자가 다른 고유수치식별자에 의해서 경계가 정해지는 상기 범위 중의 하나와 매치 될 때, 상기 범위내의 고유수치식별자들 사이의 우선순위를 결정하고, 처리를 위해 최우선순위를 선택하는 단계를 더 포함하는 것을 특징으로 하는 입력패킷의 분류방법.
- 제 1항에 있어서, 상기 데이터베이스가 트리(tree)인 것을 특징으로 하는 입력패킷의 분류방법.
- 제 5항에 있어서, 각 수치 식별자의 크기가 log2 N 보다 큰 최대 정수와 일치하고, 여기서 N은 고유패턴의 수인 것을 특징으로 하는 입력패킷의 분류방법.
- 제 5항에 있어서, 상기 트리가 패턴들의 깊이-우선, 이진 탐색(depth first, binary traversal)을 이용하여 형성되는 것을 특징으로 하는 입력패킷의 분류방법.
- 제 1항에 있어서, 입력패킷의 필드를 이용하여 관련식별자를 결정하는 단계가 최장 프리픽스 매칭 공정(longest - prefix matching process,LPM)을 이용하는 것을 포함하는 것을 특징으로 하는 입력패킷의 분류방법.
- 제 1항에 있어서, 상기 방법이필드의 하나 또는 그 이상의 패턴과 관련되는 제 2 데이터베이스를 유지하는 단계 ; 및상기 데이터베이스 대신에 상기 제2 데이터베이스로 교체하는 단계를 더 포함하는 것을 특징으로 하는 입력패킷의 분류방법.
- 제 1항의 방법에 있어서, 입력패킷의 필드를 이용하여 관련식별자를 결정하는 단계가 주소화 메모리(addressable memory)를 이용하여 상기 관련식별자를 조사하는 과정(looking-up)을 포함하는 것을 특징으로 하는 입력패킷의 분류방법.
- 제 1항에 있어서, 상기 데이터베이스는 트리를 구성함에 의해 구축되고, 여기서 상기 트리의 잎들(leaves)은 :루트 잎(root leaf)에 해당하는 최고 비트를 선택하는 과정 ; 및패턴들 중 하나의 필드들 중 하나를 좌측에서 우측으로 파싱(parsing)하여 자 잎 (child leaf)을 구성하는 과정에 의해 형성되는 것을 특징으로 입력패킷의 분류방법.
- 다음의 단계들을 포함하는 패킷 분류에 이용하기 위해 필드들의 패턴들의데이터베이스를 구축하는 방법 :각 패턴을 고유수치식별자에 매핑시키는 단계로서, 여기서 상기 고유수치식별자의 수는 패턴의 수와 일치하며, 여기서 각 고유수치식별자의 크기는 각 패턴의 상기 필드의 크기보다 훨씬 작은 단계 ; 및각 패턴과 관련된 상기 고유수치식별자의 하나 또는 그 이상의 범위를 결정하는 단계로서, 여기서 상기 범위는 최소고유수치식별자 및 최대고유수치식별자에 의해 경계가 정해지는 단계.
- 제 12항에 있어서, 상기 방법이 상기 데이터베이스를 구축하기 위해 상기 패턴들의 상기 필드들에 기초하여 트리를 만드는 단계를 더 포함하는 입력패킷의 분류방법.
- 제 13항에 있어서, 각 패턴의 매핑 단계가 상기 고유수치식별자 중 하나를 상기 트리의 각 종료 노드에 연관시키는 것을 포함하는 입력패킷의 분류방법.
- 다음을 포함하는 입력패킷의 분류장치 :하나 또는 그 이상의 필드들의 패턴들과 관련되는 데이터베이스, 여기서 상기 데이터베이스는 각 패턴을 고유수치식별자에 매핑시키는 과정으로서, 여기서 상기 고유수치식별자의 수는 상기 패턴의 수와 같고, 여기서 상기 각 고유수치식별자의 크기는 각 패턴의 상기 필드 수보다 훨씬 작은 과정 ; 및각 패턴과 관련되도록 상기 고유수치식별자의 하나 또는 그 이상의 범위를 결정하는 과정으로서, 여기서 상기 범위는 최소 고유수치식별자와 최대 고유수치식별자에 의해서 결정되는 과정에 의해 구축되는 데이터베이스 :입력패킷의 필드를 이용하여 해당 필드에 대한 관련식별자를 결정하는 수단으로서, 상기 관련식별자는 고유수치식별자의 하나와 일치되는 수단 ;상기 입력패킷의 상기 필드에 할당된 상기 관련식별자를 하나 또는 그 이상의 상기 범위와 매칭시키는 수단 ; 및매칭동작에 기초하여 상기 입력패킷을 어떻게 처리할 것인지를 결정하는 수단.
- 입력패킷의 패킷헤더를 수신하고, 상기 패킷헤더는 필드를 포함하며, 관련 식별자를 상기 필드에 할당하는 전처리기 ;제 1세트의 바이너리 패턴을 포함하는 제 1 기억장치 ;제 2세트의 바이너리 패턴을 포함하는 제 2 기억장치 ;바이너리 패턴의 제 1 및 제 2세트 중의 하나를 상기 입력패킷의 필드에 할당된 관련식별자에 적용하기 위한 명령들을 포함하는 제 3 기억장치 ; 및상기 명령을 바이너리 패턴에 대한 상기 제 1 세트의 바이너리 패턴 또는 제 2 바이너리 패턴 내의 패턴들 중 하나에 상기 필드를 매치시키기 위해서 상기 명령들을 상기 필드에 인가하는 프로세스를 포함하는 패킷분류 시스템.
- 제 16항에 있어서, 상기 필드가 네트워크 주소인 것을 특징으로 하는 패킷분류 시스템.
- 제 16항에 있어서, 상기 시스템이 상기 처리기로부터 수신된 매치된 패턴에 해당하는 결과를 포함하는 제 4 기억장치를 더 포함하는 것을 특징으로 하는 패킷분류 시스템.
- 제 16항에 있어서, 상기 시스템이 하나 또는 그 이상의 매치된 패턴 중에서 우선순위를 결정하는 수단을 더 포함하는 것을 특징으로 패킷분류 시스템.
- 입력패킷의 패킷헤더를 수신하는 단계로서, 상기 패킷헤더는 필드를 포함하는 단계 ;관련 식별자를 상기 필드에 할당하는 단계 ;제 1세트 바이너리 패턴 및 제 2세트 바이너리 패턴을 유지하는 단계 ;바이너리 패턴의 제1 및 제 2 세트 중의 하나를 상기 입력패킷의 필드에 할당된 상기 관련식별자에 적용하는 단계 ; 및상기 입력패킷의 상기 필드를 제 1세트의 바이너리 패턴 또는 제 2세트의 바이너리 패턴에 매칭시키는 단계를 포함하는 패킷분류 방법
- (a) 다수의 프로세싱 요소(processing elements)를 포함하는 프로세서 어레이(processor array), 여기서 상기 각각의 프로세싱 요소는 : (¡) 입력 패킷으로부터 유래된 분류 레코드를 프로그램된 관계 연산을 수행함으로써 실행된 룰들과 관련된 하나 또는 그 이상의 패턴들과 비교하고 (ⅱ)상기 프로세싱 요소 중 하나 이상에 의해 공유되는 쉬프트 레지스터에 상태 정보를 캡쳐하도록 구성되고 ;(b) 프로세싱 요소의 한 세트에 대한 동작을 일시 정지시키고, 해당 세트의 프로세싱 요소에 대해 동작을 재개시키는 명령 디코더 ;(c) 상기 쉬프트 레지스트로부터의 상태 정보로부터 최우선 순위를 결정하는 최소한 하나의 우선순위 인코더 ; 및(d) 읽고 기록할 수 있는 능력을 위해 어드레스되는 레코드 메모리(record memory)로서, 여기서 기록은 동시에 처리된 수개의 패킷 중 어느 것이 패킷분류를 위해 상기 장치에 제공되는지를 나타내기 위해 실행되고, 읽기는 어느 비트 또는 비트들이 동시에 처리된 모든 패킷으로부터 프로세서 어레이에 제공되어야 되는지를 나타내기 위해 실행되는 레코드 메모리를 포함하는 패킷분류 장치.
- 제 21항에 있어서, 상기 프로그램된 관계 연산(programmed relational operations)은 동일(equality)하거나, 작거나 같은(less than or equal to), 및 크거나 같은(grater than equal to) 연산을 포함하는 패킷분류 장치.
- 제 21항에 있어서, 상기 장치가 (ⅰ) 동시에 처리된 패킷의 어느 비트 또는 비트들이 프로세서 어레이에 의해 조사되는지를 선택하고, (ⅱ)선택된 비트 또는 비트들이 하나 또는 그 이상의 패턴에 대하여 어떻게 비교되는지를 결정하는 명령을 포함하는 명령 메모리를 더 포함하는 패킷분류 장치.
- 제 23항에 있어서, 상기 명령메모리내의 상기 명령들은 분류프로그램이고, 여기서 상기 분류 프로그램은 분류 프로그램을 연속적인 명령의 부분집합들로 나누기 위한 명령을 더 포함하고, 여기서 각각의 부분집합은 분류프로그램에 의해 규정된 룰의 부분집합을 나타내는 것을 특징으로 하는 패킷분류 장치.
- 제 24항에 있어서, 우선순위 관계가(relationship) 한 쌍의 상기 룰의 부분집합들 사이에 존재하는 것을 특징으로 하는 패킷분류 장치.
- 제 24항에 있어서, 상기 레코드 메모리는 분류 프로그램의 실행중에 재기록 가능하며, 상기 우선순위 인코더로부터의 결과가 상기 분류 프로그램에 의해 연속적으로 조사되는 것을 특징으로 하는 패킷분류 장치.
- 제 26항에 있어서, 상기 결과는 상기 우선순위 인코더에 의해 결정되는 바와 같은 현재의 최우선 순위 매치(current highest priority match)를 포함하는 것을 특징으로 하는 패킷분류 장치.
- 제 24항에 있어서, 상기 레코드 메모리 내의 상기 분류 레코드 중의 하나로부터 선택된 하나 또는 그 이상의 비트는 상기 분류 레코드의 하나 또는 그 이상에 적용하기 위해 분류 프로그램내의 명령어의 부분집합을 결정할 수 있는 것을 특징으로 하는 패킷분류 장치.
- 제 28항에 있어서, 선택된 하나 또는 그 이상의 비트가 프로그램된 제어 (control)하에서 선택될 수 있는 것을 특징으로 하는 패킷분류 장치.
- 제 28항에 있어서, 상기 분류 프로그램은 무결절성(seamlessly) 업데이트될 수 있는 것을 특징으로 하는 패킷분류 장치.
- 제 28항에 있어서, 상기 분류프로그램의 유효 크기(effective size)가 증가 될 수 있는 것을 특징으로 하는 패킷분류 장치.
- 제 28항에 있어서, 하나의 입력패킷에 적용되는 상기 프로세싱 요소의 수가 조정(scaled)될 수 있는 것을 특징으로 하는 패킷분류 장치.
- 제 28항에 있어서, 동시에 처리되는 상기 패킷의 수가 조정될 수 있는 것을 특징으로 하는 패킷분류 장치.
- 제 28항에 있어서, 분류프로그램을 선택하기 위해 이용된 상기 패킷 비트의 수가 조정될 수 있는 것을 특징으로 하는 패킷분류 장치.
- 제 28항의 장치에 있어서, 상기 장치의 다수의 인스턴스들이 케스케이드로 구성되어 상기 장치의 첫 번째 인스턴스가 상기 장치의 두 번째 인스턴스에 제공되는 것을 특징으로 하는 패킷분류 장치.
- 제 21항에 있어서, 상기 장치의 다수의 인스턴스들이 케스케이트로 구성되어 상기 장치의 첫 번째 인스턴스가 상기 장치의 두 번째 인스턴스에 제공되는 것을 특징으로 하는 패킷분류 장치.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US49016503P | 2003-07-25 | 2003-07-25 | |
US60/490,165 | 2003-07-25 | ||
US10/650,154 | 2003-08-28 | ||
US10/650,154 US7840696B2 (en) | 2003-07-25 | 2003-08-28 | Apparatus and method for classifier identification |
PCT/US2004/023370 WO2005013532A2 (en) | 2003-07-25 | 2004-07-22 | Apparatus and method for classifier identification |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060054353A true KR20060054353A (ko) | 2006-05-22 |
KR100933916B1 KR100933916B1 (ko) | 2009-12-23 |
Family
ID=34083636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020067001764A KR100933916B1 (ko) | 2003-07-25 | 2004-07-22 | 분류자 확인을 위한 장치 및 방법 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7840696B2 (ko) |
EP (1) | EP1656758A4 (ko) |
JP (1) | JP2007507915A (ko) |
KR (1) | KR100933916B1 (ko) |
CA (1) | CA2532259A1 (ko) |
WO (1) | WO2005013532A2 (ko) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7840696B2 (en) * | 2003-07-25 | 2010-11-23 | Broadcom Corporation | Apparatus and method for classifier identification |
US7634500B1 (en) * | 2003-11-03 | 2009-12-15 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
US20050149563A1 (en) * | 2004-01-06 | 2005-07-07 | Yong Yean K. | Random early detect and differential packet aging flow control in switch queues |
US7460558B2 (en) * | 2004-12-16 | 2008-12-02 | International Business Machines Corporation | System and method for connection capacity reassignment in a multi-tier data processing system network |
US7512706B2 (en) * | 2004-12-16 | 2009-03-31 | International Business Machines Corporation | Method, computer program product, and data processing system for data queuing prioritization in a multi-tiered network |
US7240136B2 (en) * | 2004-12-16 | 2007-07-03 | International Business Machines Corporation | System and method for request priority transfer across nodes in a multi-tier data processing system network |
US8665868B2 (en) * | 2005-08-19 | 2014-03-04 | Cpacket Networks, Inc. | Apparatus and method for enhancing forwarding and classification of network traffic with prioritized matching and categorization |
US7353332B2 (en) * | 2005-10-11 | 2008-04-01 | Integrated Device Technology, Inc. | Switching circuit implementing variable string matching |
US8031706B2 (en) * | 2005-10-31 | 2011-10-04 | Agere Systems Inc. | Circuitry for determining network operations in a network device by addressing lookup tables with contents of protocol header fields |
US7853578B1 (en) | 2005-12-09 | 2010-12-14 | Marvell International Ltd. | High-performance pattern matching |
FI20060563A0 (fi) * | 2006-06-07 | 2006-06-07 | Nokia Corp | Staattista reititystä käyttäville verkoille tarkoitettu pakettienluokitusmenetelmä |
US20080134283A1 (en) * | 2006-12-05 | 2008-06-05 | Electronics And Telecommunications Research Institute | Security apparatus and method for supporting IPv4 and IPv6 |
US8320374B2 (en) * | 2006-12-28 | 2012-11-27 | Alcatel Lucent | Method and apparatus for improved multicast routing |
US8132248B2 (en) * | 2007-07-18 | 2012-03-06 | Trend Micro Incorporated | Managing configurations of a firewall |
KR101366254B1 (ko) * | 2007-08-03 | 2014-02-20 | 삼성전자주식회사 | 방송망을 통하여 전송되는 ip 패킷의 압축 및 복원 방법 |
KR100920518B1 (ko) * | 2007-11-27 | 2009-10-09 | 한국전자통신연구원 | 패킷 분류 장치 및 방법 |
US8798057B1 (en) | 2008-09-30 | 2014-08-05 | Juniper Networks, Inc. | Methods and apparatus to implement except condition during data packet classification |
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 |
US8804950B1 (en) | 2008-09-30 | 2014-08-12 | Juniper Networks, Inc. | Methods and apparatus for producing a hash value based on a hash function |
US8675648B1 (en) | 2008-09-30 | 2014-03-18 | Juniper Networks, Inc. | Methods and apparatus for compression in packet classification |
US8111697B1 (en) | 2008-12-31 | 2012-02-07 | Juniper Networks, Inc. | Methods and apparatus for packet classification based on multiple conditions |
WO2010097945A1 (ja) * | 2009-02-27 | 2010-09-02 | 三菱電機株式会社 | 情報処理装置及び情報処理方法及びプログラム |
JP5661764B2 (ja) * | 2009-07-09 | 2015-01-28 | シーパケット ネットワークス, インコーポレイテッド | ネットワークトラフィックの転送、分類および監視を向上させる装置および方法 |
WO2012081148A1 (en) * | 2010-12-15 | 2012-06-21 | Nec Corporation | Packet classifier, packet classification method and packet classification program |
US8745760B2 (en) * | 2012-01-30 | 2014-06-03 | Cisco Technology, Inc. | Malware classification for unknown executable files |
US9049251B2 (en) * | 2012-02-28 | 2015-06-02 | Futurewei Technologies, Inc. | Method and apparatus for internet protocol based content router |
US10320955B1 (en) * | 2012-08-30 | 2019-06-11 | Keysight Technologies, Inc. | Method for decoding data packets |
CN104967575B (zh) * | 2015-06-03 | 2018-10-02 | 清华大学 | 虚拟软件定义网络交换机 |
US10009291B1 (en) * | 2015-12-21 | 2018-06-26 | Amazon Technologies, Inc. | Programmable switching fabric for dynamic path selection |
US10341259B1 (en) | 2016-05-31 | 2019-07-02 | Amazon Technologies, Inc. | Packet forwarding using programmable feature prioritization |
WO2021016270A1 (en) * | 2019-07-23 | 2021-01-28 | Cyber Crucible Inc. | Systems and methods for ransomware detection and mitigation |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579307A (en) * | 1995-03-23 | 1996-11-26 | Motorola, Inc. | Packet routing system and method with quasi-real-time control |
FI972739A0 (fi) | 1997-06-25 | 1997-06-25 | Ericsson Telefon Ab L M | Foerfarande och system foer kommunikation |
US6041053A (en) * | 1997-09-18 | 2000-03-21 | Microsfot Corporation | Technique for efficiently classifying packets using a trie-indexed hierarchy forest that accommodates wildcards |
US5956721A (en) * | 1997-09-19 | 1999-09-21 | Microsoft Corporation | Method and computer program product for classifying network communication packets processed in a network stack |
JPH11136287A (ja) * | 1997-10-25 | 1999-05-21 | Masaya Yoneda | 検索装置およびそれを用いたデータ転送システム |
JP3970448B2 (ja) * | 1998-12-21 | 2007-09-05 | 株式会社日立製作所 | 情報中継方法および装置 |
US7185081B1 (en) * | 1999-04-30 | 2007-02-27 | Pmc-Sierra, Inc. | Method and apparatus for programmable lexical packet classifier |
CN100432991C (zh) * | 1999-12-10 | 2008-11-12 | 睦塞德技术公司 | 最长匹配地址查询的方法和装置 |
ATE319249T1 (de) | 2000-01-27 | 2006-03-15 | Ibm | Verfahren und vorrichtung für klassifizierung von datenpaketen |
US6892237B1 (en) * | 2000-03-28 | 2005-05-10 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
US6970462B1 (en) * | 2000-04-24 | 2005-11-29 | Cisco Technology, Inc. | Method for high speed packet classification |
JP2002026973A (ja) * | 2000-07-12 | 2002-01-25 | Nec Corp | 経路検索システム及びその方法並びにそれに使用するルータ装置 |
US7031320B2 (en) | 2000-12-22 | 2006-04-18 | Samsung Electronics Co., Ltd. | Apparatus and method for performing high-speed IP route lookup and managing routing/forwarding tables |
US7193997B2 (en) * | 2001-03-19 | 2007-03-20 | International Business Machines Corporation | Packet classification |
US7227842B1 (en) * | 2001-04-24 | 2007-06-05 | Tensilica, Inc. | Fast IP packet classification with configurable processor |
US7054315B2 (en) * | 2001-09-17 | 2006-05-30 | Pmc-Sierra Ltd. | Efficiency masked matching |
US7088719B2 (en) * | 2001-12-21 | 2006-08-08 | Agere Systems Inc. | Processor with packet processing order maintenance based on packet flow identifiers |
US7239639B2 (en) * | 2001-12-27 | 2007-07-03 | 3Com Corporation | System and method for dynamically constructing packet classification rules |
SE521907C2 (sv) | 2002-01-21 | 2003-12-16 | Rockstorm Technologies Ab | Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras |
US7523218B1 (en) | 2002-04-30 | 2009-04-21 | University Of Florida Research Foundation, Inc. | O(log n) dynamic router tables for prefixes and ranges |
US7356695B2 (en) * | 2002-08-01 | 2008-04-08 | International Business Machines Corporation | Multi-level security systems |
US7134143B2 (en) * | 2003-02-04 | 2006-11-07 | Stellenberg Gerald S | Method and apparatus for data packet pattern matching |
US7535906B2 (en) * | 2003-05-28 | 2009-05-19 | International Business Machines Corporation | Packet classification |
US7415012B1 (en) * | 2003-05-28 | 2008-08-19 | Verizon Corporate Services Group Inc. | Systems and methods for high speed packet classification |
US7251651B2 (en) * | 2003-05-28 | 2007-07-31 | International Business Machines Corporation | Packet classification |
US7840696B2 (en) * | 2003-07-25 | 2010-11-23 | Broadcom Corporation | Apparatus and method for classifier identification |
-
2003
- 2003-08-28 US US10/650,154 patent/US7840696B2/en not_active Expired - Fee Related
-
2004
- 2004-07-22 EP EP04778741A patent/EP1656758A4/en not_active Withdrawn
- 2004-07-22 WO PCT/US2004/023370 patent/WO2005013532A2/en active Application Filing
- 2004-07-22 JP JP2006521196A patent/JP2007507915A/ja active Pending
- 2004-07-22 CA CA002532259A patent/CA2532259A1/en not_active Abandoned
- 2004-07-22 KR KR1020067001764A patent/KR100933916B1/ko not_active IP Right Cessation
-
2007
- 2007-06-29 US US11/819,962 patent/US7774497B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2007507915A (ja) | 2007-03-29 |
US7840696B2 (en) | 2010-11-23 |
KR100933916B1 (ko) | 2009-12-23 |
US20080052300A1 (en) | 2008-02-28 |
WO2005013532A2 (en) | 2005-02-10 |
EP1656758A4 (en) | 2011-08-17 |
CA2532259A1 (en) | 2005-02-10 |
US7774497B2 (en) | 2010-08-10 |
US20050021491A1 (en) | 2005-01-27 |
EP1656758A2 (en) | 2006-05-17 |
WO2005013532A3 (en) | 2009-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100933916B1 (ko) | 분류자 확인을 위한 장치 및 방법 | |
US6775737B1 (en) | Method and apparatus for allocating and using range identifiers as input values to content-addressable memories | |
US8599859B2 (en) | Iterative parsing and classification | |
US20030120621A1 (en) | Method of improving the lookup performance of tree-type knowledge base searches | |
US7177978B2 (en) | Generating and merging lookup results to apply multiple features | |
Xie et al. | Mousika: Enable general in-network intelligence in programmable switches by knowledge distillation | |
US7233597B2 (en) | High speed parser | |
US20130246698A1 (en) | Hybrid Memory for Search Operations | |
US20060221954A1 (en) | Methods for performing packet classification | |
US20080228798A1 (en) | Method and apparatus for deep packet processing | |
WO2009015603A1 (fr) | Système de compilation d'expressions régulières, système d'appariement, procédé de compilation et procédé d'appariement | |
WO2005022347A2 (en) | Reverse path forwarding protection | |
JP2001223749A (ja) | パケット分類エンジン | |
US7454396B2 (en) | Method for compressing multi-field rule specifications | |
US11652744B1 (en) | Multi-stage prefix matching enhancements | |
US6574701B2 (en) | Technique for updating a content addressable memory | |
US6532516B1 (en) | Technique for updating a content addressable memory | |
US6970971B1 (en) | Method and apparatus for mapping prefixes and values of a hierarchical space to other representations | |
US7219187B1 (en) | Search parameter table in a content addressable memory | |
CN114979062A (zh) | 使用预测的动态网络地址转换 | |
WO2016101552A1 (zh) | 报文检测方法及装置、存储介质 | |
US11929837B2 (en) | Rule compilation schemes for fast packet classification | |
US6825706B2 (en) | Multiplexer | |
US20040196839A1 (en) | Methods and apparatus to route packets in a policy driven networked environment | |
US20240195892A1 (en) | Efficient Memory Utilization for Cartesian Products of Rules |
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: 20121206 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20131206 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150119 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20151215 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20161207 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |