KR101476113B1 - 룩업 클러스터 컴플렉스 - Google Patents
룩업 클러스터 컴플렉스 Download PDFInfo
- Publication number
- KR101476113B1 KR101476113B1 KR1020147005633A KR20147005633A KR101476113B1 KR 101476113 B1 KR101476113 B1 KR 101476113B1 KR 1020147005633 A KR1020147005633 A KR 1020147005633A KR 20147005633 A KR20147005633 A KR 20147005633A KR 101476113 B1 KR101476113 B1 KR 101476113B1
- Authority
- KR
- South Korea
- Prior art keywords
- rules
- packet processing
- key
- packet
- subset
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/18—Protocol analysers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/027—Frames
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1075—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- 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
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/39—Credit based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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/02—Protocol performance
-
- 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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7452—Multiple parallel or consecutive lookup operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02B—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
- Y02B70/00—Technologies for an efficient end-user side electric power management and consumption
- Y02B70/30—Systems integrating technologies related to power network operation and communication or information technologies for improving the carbon footprint of the management of residential or tertiary loads, i.e. smart grids as climate change mitigation technology in the buildings sector, including also the last stages of power distribution and the control, monitoring or operating management systems at local level
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
패킷 처리기는 네트워크 아키텍처 내에서 패킷들의 룰 매칭 (rule matching) 을 제공한다. 패킷 처리기는 다수의 룩업 엔진 및 각각의 온-칩 메모리 유닛을 갖는 룩업 클러스터 컴플렉스를 포함한다. 각 룩업 엔진은 패킷과 연관된 키 요청을 수신하고 패킷 데이터와 매칭하는 룰들의 서브세트를 결정한다. 이러한 룰 매칭의 결과로서, 룩업 엔진은 매칭의 발견 여부를 표시하는 응답 메시지를 보낸다.
Description
본원은 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,344; 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,382; 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,379; 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,400; 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,406; 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,407; 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,438; 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,447; 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,450; 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,459; 및 2011년 8월 2일자에 출원된 미국 가출원 번호 61/514,463에 대한 우선권을 주장한다. 상기 특허 문헌들의 전체 교시 내용들은 본 명세서에서 참조로서 인용된다.
OSI (Open Systems Interconnection) 레퍼런스 모델은 전송 매체를 통해서 통신하도록 사용되는 7 개의 네트워크 프로토콜 계층들 (L1 내지 L7) 을 규정한다. 이 중 상위 층들 (L4 내지 L7) 은 종단간 통신을 다루고 하위 층들 (L1 내지 L3) 은 로컬 통신 (local communications) 을 다룬다.
네트워킹 애플리케이션 인지 (aware) 시스템들은 예를 들어서 HTTP (HyperText Transfer Protocol) 및 SMTP (Simple Mail Transfer Protocol) 와 같은 L7 네트워크 프로토콜 층 및 TCP (Transmission Control Protocol) 와 같은 L4 네트워크 프로토콜 층과 같은 L3 네트워크 프로토콜 층 내지 L7 네트워크 프로토콜 층의 범위를 처리, 필터링 및 스위칭할 필요가 있다. 이러한 네트워크 프로토콜 층들을 처리하는 것 이외에, 네트워킹 애플리케이션 인지 시스템들은 L3 네트워크 프로토콜 층 내지 L7 네트워크 프로토콜 층에 대한 액세스 및 콘텐츠 기반 보안을 사용하여서 이러한 프로토콜 층들을 동시에 안전하게 보호할 필요가 있으며, 이러한 보안 방식은 와이어 스피드 (wire-speed) 에서의 AV (Anti- Virus) 기능 및 AS (Anti-Spam) 기능, 방화벽 (Firewall), VPN (Virtual Private Network), SSL (Secure Sockets Layer), IDS (Intrusion Detection System), IPSec (Internet Protocol Security) 을 포함한다.
오늘날의 인터넷에서 네트워크 동작의 효율 및 보안을 개선하는 것은 인터넷 사용자에게 궁극적 목표로서 되고 있다. 액세스 제어, 트래픽 엔지니어링, 침입 검출 및 수많은 다른 네트워크 서비스들에서는 패킷 헤더의 다수의 필드들을 기초로 하여서 패킷들을 분별하는 이른바 패킷 분류가 요구된다.
인터넷 라우터는 라우팅, 레이트 한정 (rate limiting), 방화벽에서의 액세스 제어, 가상 대역폭 할당, 정책 기반 라우팅, 서비스 차별화, 로드 밸런싱 (load balancing), 트래픽 쉐이핑 (traffic shaping) 및 트래픽 과금 (traffic billing) 과 같은 다수의 진보된 인터넷 서비스들을 구현하기 위해서 패킷들을 분류한다. 이러한 서비스들에서, 인터넷 라우터는 상이한 플로우로 들어오는 패킷들을 분류하고 이어서 이러한 분류 결과에 따라서 적합한 동작들을 수행할 필요가 있다.
분류자는 필터들의 세트 또는 룰들 (rules) 의 세트를 사용하여서 플로우 또는 클래스를 특정한다. 예를 들어서, 방화벽에서의 각 룰은 소스 어드레스 및 수신지 어드레스 세트를 특정하고 이에 대응하는 부정 또는 허용 동작을 이와 연관시킨다. 이와 달리, 이러한 룰들은 어드레싱 및 프로토콜 정보를 포함하는, OSI 모델의 층 2 내지 층 5 을 포함하는 패킷 헤더의 몇몇 필드들에 기초할 수 있다.
몇몇 타입의 독점적 (proprietary) 하드웨어 상에서, ACL (Access Control List) 는 호스트 또는 층 3 디바이스 상에서 가용한 포트 넘버 (port number) 또는 네트워크 대몬 명 (network daemon names) 에 적용되는 룰들을 지칭하며, 각각은 서비스를 사용하도록 허용된 호스트들 및/또는 네트워크들의 리스트를 갖는다. 개별 서버들 및 라우터들 모두 네트워크 ACL들을 가질 수 있다. ACL들은 인바운드 트래픽 및 아웃바운드 트래픽 모두를 제어하도록 구성될 수 있다.
본 개시의 예시적인 실시예들은 패킷 처리 방법을 제공한다. 키 요청이 수신되며, 이 키 요청은 해당 패킷 내의 정보에 대해서 적용할 하나 이상의 관련 룰들을 룩업 (lookup) 하라는 요청이다. 이 키 요청은 키 (key) 및 테이블 식별자 (TID) 를 포함하며, 상기 키는 상기 패킷으로부터 추출된 데이터를 포함한다. 적어도 하나의 필드를 추출하기 위해서 상기 키가 파싱 (parsing) 된다. 상기 테이블 식별자에 의해서 표시된 트리 액세스 테이블 (tree access table) 내의 적어도 하나의 엔트리가 선택되며, 상기 엔트리는 메모리 내에 저장된 룰들 (rules) 의 세트로의 경로의 시작 어드레스를 제공한다.
이어서, 적어도 하나의 버킷 (bucket) 을 결정하도록 상기 적어도 하나의 필드에 기초하여서 상기 엔트리가 처리된다. 상기 적어도 하나의 버킷은 상기 룰들의 세트의 일부인 룰들의 서브세트 (subset) 을 향하는 포인터들 (pointers) 을 포함한다. 이어서, 상기 메모리로부터 상기 룰들의 서브세트가 검색되고 상기 적어도 하나의 필드가 상기 룰들의 서브세트에 대하여 적용된다. 이 적용 결과에 기초하여서, 상기 적어도 하나의 필드가 상기 룰들의 서브세트 중 적어도 하나의 룰과 매칭 (matching) 하는지의 여부를 표시하는 응답 신호가 출력된다.
다른 실시예들에서, 상기 룩업 요청은 키 포맷 테이블 인덱스 (key format table index) 를 포함하며, 상기 키를 파싱하는 동작은 상기 키 포맷 데이블 인덱스에 기초한다. 상기 룰들의 세트는 상기 메모리 내에 저장된 룰들의 부분일 수 있다. 상기 적어도 하나의 버킷은 복수의 버킷을 포함하며, 상기 엔트리는 상기 복수의 버킷과 연관된 노드 (node) 를 포함하며, 상기 엔트리를 처리하는 동작은 상기 복수의 버킷을 결정하도록 상기 노드를 처리하는 동작을 포함할 수 있다. 또한, 상기 노드는 적어도 하나의 중계 (intermediary) 노드를 통해서 상기 복수의 버킷과 연관될 수 있다.
또 다른 실시예들에서, 상기 룰들의 서브세트는 우선 순위 (priority) 로 배열되며, 상기 적어도 하나의 필드는 상기 룰들의 세트에 대해서 우선 순위가 내려가는 순서로 적용될 수 있다. 상기 적어도 하나의 필드와 상기 룰들의 서브세트 간의 최초 매칭 (first matching) 이 발견된 후에 상기 응답 신호가 출력될 수 있다. 또한, 상기 룰들의 서브세트에 대해서 상기 적어도 하나의 필드를 적용하는 동작은 상기 최초 매칭이 발견된 후에 정지될 수 있다. 또한, 상기 테이블 식별자에 의해서 표시된 트리 액세스 테이블 내에서 복수의 엔트리가 선택될 수 있다. 미리 결정된 우선 순위에 기초하여서 복수의 매칭 결과 중에서 룰 매칭 결과가 선택될 수 있으며, 각 매칭 결과는 상기 복수의 엔트리들 중 하나에 대응한다.
또 다른 실시예에서, 패킷 처리 장치는 룩업 클러스터를 포함할 수 있다. 이 룩업 클러스터는 키 요청을 수신하도록 구성되며, 이 키 요청은 해당 패킷 내의 정보에 대해서 적용할 하나 이상의 관련 룰들을 룩업하라는 요청이다. 이 키 요청은 키 및 테이블 식별자를 포함하며, 상기 키는 상기 패킷으로부터 추출된 데이터를 포함한다. 상기 룩업 클러스터는 적어도 하나의 필드를 추출하기 위해서 상기 키를 파싱하며, 상기 테이블 식별자에 의해서 표시된 트리 액세스 테이블 내의 적어도 하나의 엔트리를 선택하며 상기 엔트리는 메모리 내에 저장된 룰들의 세트의 시작 어드레스를 제공한다.
룩업 클러스터는 적어도 하나의 버킷-상기 적어도 하나의 버킷은 상기 룰들의 세트의 일부인 룰들의 서브세트을 향하는 포인터들을 포함함-을 결정하도록 상기 적어도 하나의 필드에 기초하여서 상기 엔트리를 처리하도록 구성되는 트리 워킹 엔진 (tree-walk engine) (TWE) 을 포함한다. 또한, 버킷 워킹 엔진 (bucket-walk engine:BWE) 은 상기 메모리로부터 상기 룰들의 서브세트를 검색하도록 구성되며, 룰 매칭 엔진 (rule-matching engine) 은 상기 적어도 하나의 필드를 상기 룰들의 서브세트에 대하여 적용하도록 구성될 수 있다. 이어서, 상기 룩업 클러스터는 상기 적어도 하나의 필드가 상기 룰들의 서브세트 중 적어도 하나의 룰과 매칭하는지의 여부를 표시하는 응답 신호를 출력할 수 있다.
전술한 바들은 첨부 도면에서 예시되는 바와 같은 본 발명의 예시적인 실시예들에 대한 다음의 보다 구체적인 설명들로부터 명백해질 것이며, 상이한 도면들에서 유사한 참조 부호는 유사한 구성 요소를 나타낸다. 이 도면들은 반드시 축척 (scale) 에 맞게 된 것은 아니며 대신에 본 발명의 실시예들을 예시하기 위해서 강조될 수 있다.
도 1은 본원에서 기술되는 탐색 프로세서의 예시적인 실시예들을 채용하는 네트워크 요소들을 포함하는 통상적인 네트워크 토폴러지 (topology) 의 블록도이다.
도 2a 내지 도 2c는 라우터들에서 채용된 탐색 프로세서의 예시적인 실시예들을 예시하는 블록도들이다.
도 3a는 라우터 아키텍처의 예시적인 실시예의 도면이다.
도 3b는 탐색 프로세서를 채용하는 라우터의 예시적인 실시예들을 예시하는 블록도이다.
도 3c는 스위칭형 백플레인 (backplane) 을 포함하는 라우터의 다른 실시예의 블록도이다.
도 3d는 탐색 프로세서를 채용하는 라우터의 예시적인 실시예를 예시하는 블록도이다.
도 4a 및 도 4b는 탐색 프로세서의 예시적인 실시예들의 블록도들이다.
도 4c는 일 실시예에서의 LCC (Lookup Cluster Complex) 의 블록도이다.
도 4d는 일 실시예에서의 LCC에서의 입력 및 출력 데이터를 예시하는 블록도이다.
도 5는 단일 패킷 헤더로부터의 다수의 룩업 요청들의 생성을 예시하는 블록도이다.
도 6은 일 실시예에서의 LUE (Lookup Engine) 및 이와 연관된 OCM (on-chip memory) 의 블록도이다.
도 7은 메모리 구조로 룰들을 로딩하는 컴파일러 (complier) 의 예시적인 실시예을 예시하는 블록도이다.
도 8은 탐색 블록 또는 탐색 클러스터의 예시적인 실시예을 예시하는 블록도이다.
도 9a는 패킷 내의 소정의 키 (key) 에 대한 룰들을 로딩하는데 채용되는 메모리 구조의 예시적인 실시예를 예시하는 블록도이다.
도 9b는 키를 수신하고 메모리 구조로부터의 룰들의 세트를 로딩하는 TWE에 의해서 채용되는 메모리 구조의 예시적인 실시예들을 예시하는 도면이며, 여기서 상기 룰들은 외부 메모리 내에 저장된다.
도 10a는 탐색 프로세서에 의해서 채용되는 예시적인 프로세스를 예시하는 흐름도이다.
도 10b는 BPP (Bucket Post Processor) 에 의해 룰들의 세트를 사용하여서 키에 대해서 탐색을 수행하는 예시적인 프로세스를 예시하는 흐름도이다.
도 11은 본 개시의 다양한 실시예들이 구현될 수 있는 컴퓨터의 블록도이다.
도 1은 본원에서 기술되는 탐색 프로세서의 예시적인 실시예들을 채용하는 네트워크 요소들을 포함하는 통상적인 네트워크 토폴러지 (topology) 의 블록도이다.
도 2a 내지 도 2c는 라우터들에서 채용된 탐색 프로세서의 예시적인 실시예들을 예시하는 블록도들이다.
도 3a는 라우터 아키텍처의 예시적인 실시예의 도면이다.
도 3b는 탐색 프로세서를 채용하는 라우터의 예시적인 실시예들을 예시하는 블록도이다.
도 3c는 스위칭형 백플레인 (backplane) 을 포함하는 라우터의 다른 실시예의 블록도이다.
도 3d는 탐색 프로세서를 채용하는 라우터의 예시적인 실시예를 예시하는 블록도이다.
도 4a 및 도 4b는 탐색 프로세서의 예시적인 실시예들의 블록도들이다.
도 4c는 일 실시예에서의 LCC (Lookup Cluster Complex) 의 블록도이다.
도 4d는 일 실시예에서의 LCC에서의 입력 및 출력 데이터를 예시하는 블록도이다.
도 5는 단일 패킷 헤더로부터의 다수의 룩업 요청들의 생성을 예시하는 블록도이다.
도 6은 일 실시예에서의 LUE (Lookup Engine) 및 이와 연관된 OCM (on-chip memory) 의 블록도이다.
도 7은 메모리 구조로 룰들을 로딩하는 컴파일러 (complier) 의 예시적인 실시예을 예시하는 블록도이다.
도 8은 탐색 블록 또는 탐색 클러스터의 예시적인 실시예을 예시하는 블록도이다.
도 9a는 패킷 내의 소정의 키 (key) 에 대한 룰들을 로딩하는데 채용되는 메모리 구조의 예시적인 실시예를 예시하는 블록도이다.
도 9b는 키를 수신하고 메모리 구조로부터의 룰들의 세트를 로딩하는 TWE에 의해서 채용되는 메모리 구조의 예시적인 실시예들을 예시하는 도면이며, 여기서 상기 룰들은 외부 메모리 내에 저장된다.
도 10a는 탐색 프로세서에 의해서 채용되는 예시적인 프로세스를 예시하는 흐름도이다.
도 10b는 BPP (Bucket Post Processor) 에 의해 룰들의 세트를 사용하여서 키에 대해서 탐색을 수행하는 예시적인 프로세스를 예시하는 흐름도이다.
도 11은 본 개시의 다양한 실시예들이 구현될 수 있는 컴퓨터의 블록도이다.
오래 동안 패킷 분류는 광범위하게 연구되어 왔지만, i) 네트워크 대역폭이 계속적으로 성장하고 있으며, ii) 네트워크 애플리케이션 복잡성이 증가하고 있으며, (iii) 네트워크 시스템에 대한 기술 혁신이 이루어지고 있기 때문에, 연구자들은 여전히 신규하면서 효율적인 패킷 분류 방식을 찾고자 하고 있다.
네트워크 대역폭에 대한 요구가 폭발하는 것은 일반적으로 데이터 트패픽 성장때문이다. 앞서가는 서비스 제공자들은 6 내지 9 개월 단위로 그들의 백본 네트워크 상에서 대역폭이 2 배로 됨을 보고한다. 따라서, 모든 에지 디바이스 및 코어 디바이스 상에서의 지수적으로 증가하는 트래픽을 처리하기 위해서 새로운 패킷 분류 방식들이 요구된다.
네트워크 애플리케이션들의 복잡성이 증가하는 바는 네트워크 서비스들에서 구현되고 있는 내트워크 애플리케이션의 수가 증가하기 때문이다. 패킷 분류가 서비스 인지 라우팅, 침입 방지 및 트래픽 쉐이핑 (shaping) 과 같은 다양한 종류의 애플리케이션들을 위해서 광범위하게 사용되고 있다. 따라서, 새로운 패킷 분류 방식은 큰 성능 손실 없이 다양한 타입의 룰 세트들을 다룰 수 있도록 지능적이어야 한다.
또한, 다중 코어 프로세서와 같은 새로운 기술들은 전례가 없는 컴퓨팅 능력 및 크게 통합된 자원들을 제공한다. 따라서, 새로운 패킷 분류 방식은 진보된 하드웨어 및 소프트웨어 기술들에 잘 맞추어져야 한다.
기존의 패킷 분류 알고리즘들은 시간적 이점을 취하기 위해서 메모리를 희생시키고 있다. 이러한 절충이 계속적으로 개선되고 있을지라도, 합리적 메모리 양에 대해서 얻을 수 있는 시간은 여전히 전반적으로 빈약하다.
기존의 알고리즘 방식들이 가지고 있는 문제점들로 인해서, 벤더들은 모든 룰들에 대하여 패킷들을 동시에 체크하기 위해서 무작위 병렬 하드웨어 (brute-force parallel hardware) 를 채용하는 TCAM (ternary content-addressable memory) 를 사용한다. 알고리즘 방식에 비한 TCAM의 주요 이점들은 속도 및 판정 품질 (determinism) 이다 (모든 TCAM들은 모든 데이터베이스에 대해서 동작한다).
TCAM은 완전 연관 메모리 (fully associative memory) 로서 기능하는 하드웨어 디바이스이다. TCAM 셀은 0, 1 또는 'X'인 3 개의 값들을 저장하며, 이 X 값은 무시 비트 (don't care bit) 를 나타내며 TCAM이 클린 스타 (kleene star) '*' 와 같은 와일드카드 (wildcard) 를 포함하는 룰과 매칭하는 것을 가능하게 하는 셀당 마스크 (per-cell mask) 로서 동작한다. 동작 시에, 전체 패킷 헤더가 TCAM에 제공되어서 자신과 매칭하는 엔트리 (룰) 을 결정할 수 있다. 그러나, TCAM의 복잡성으로 인해서 오직 소량의 비유연하면서 상대적으로 저속인 구현만이 가능하며 이로써 많은 전력을 소모하게 된다. 따라서, 특정 데이터 구조 상에서 동작하는 효율적인 알고리즘 방식이 필요하다.
현 알고리즘 방법들은 수학적 분석 및/또는 소프트웨어 시뮬레이션 (관측 기반 방식) 의 수준에 머무르고 있다.
우수한 시간/특별한 복잡도를 갖도록 제안된 수학적 방식이 보고되었다. 그러나, 이러한 종류의 방법은 현실의 네트워크 디바이스들에서는 구현될 수 없는 것으로 알려졌는데 그 이유는 수학적 방식은 문제를 단순화하고/하거나 큰 상수 팩터 (large constant factor) 를 생략하여서 명시적인 최악의 경우의 바운드 (explicit worst-case bound) 를 은폐하도록 특별한 조건들을 부가하기 때문이다.
제안된 관측 기반 방식은 현실에서의 사용을 위한 효율적인 방식을 달성하기 위해서 룰들에서 관측되는 통계적 특성들을 사용한다. 그러나, 이러한 알고리즘 방법은 일반적으로 특정 타입의 룰들에 대해서만 양호하게 동작한다. 상이한 이용 상황을 위한 패킷 분류 룰들은 다양한 특징들을 갖기 때문에, 매우 소수의 관측 기반 방법들만이 다양한 조건 하에서 안정적인 성능을 달성하기 위해서 상이한 타입의 룰 세트들에서 리던던시 (redundancy) 을 완전하게 활용할 수 있다.
패킷 분류는 또한 정책 데이터베이스, 플로우 분류자, 또는 간단하게 분류자 (classifier) 로 지칭되는 패킷 분류자를 사용하여서 수행된다. 분류자는 룰들 또는 정책들의 집합이다. 수신된 패킷들이 룰들과 매칭되며 이 룰들은 매칭된 패킷에 대하여 취할 동작들을 결정한다. 일반적인 패킷 분류에서는 라우터가 패킷 헤더 내의 다수의 필드들에 기초하여서 패킷을 분류할 필요가 있다. 분류자의 각 룰은 패킷 헤더의 'F' 필드들 상의 기준 사항들 (criteria) 에 따라서 패킷이 속할 수 있는 클래스를 특정하고 식별자 (예를 들어서, 클래스 ID) 를 각 클래스와 연관시킨다. 예를 들어서, 플로우 분류자 내의 각 룰은 플로우 플로우 세부 사항 (flow specifiation) 이며, 여기서 각 플로우는 개별 클래스 내에 있다. 식별자가 각 룰과 연관된 동작 (operation) 을 고유하게 특정한다. 각 룰은 'F' 필드를 갖는다. R[i]로 지칭되는 룰 R의 i 번째 필드는 패킷 헤더의 i 번째 필드 상의 규칙적 표현 (regular expression) 이다. 패킷 P는 매 i에 대해서 특정 룰 R을 매칭하며 패킷 P의 헤더의 i 번째 필드는 상기 규칙적 표현 R[i]을 만족시킨다.
이러한 룰들에 의해서 특정된 클래스들이 중첩될 수 있다. 예를 들어서, 일 패킷은 몇 개의 룰들과 매칭할 수 있다. 이 경우에, 몇 개의 룰들이 중첩하면, 이 룰들이 분류자에서 나타나는 순서가 룰들의 상대적 우선 순위를 결정한다. 달리 말하면, 다수의 룰들과 매칭한 패킷은 분류자 내에서 룰들 중에서 가장 먼저 나타난 룰의 식별자 (클래스 ID) 에 의해서 식별된 클래스에 속한다. 다른 실시예들에서, 각 룰에 우선 순위 표시가 제공될 수 있다.
패킷 분류자는 분류자 테이블 내의 룰들을 분석 및 카테고리화하고 수신된 패킷을 상기 분류자 테이블로부터의 룰과 매칭하는데 사용되는 결정 트리 (decision tree) 를 생성할 수 있다. 결정 트리는 트리 형태의 결정 그래프 또는 모델 및 찬스 이벤트 결과 (chance event outcome), 자원 코스트 (resource cost) 및 유틸리티 (utility) 를 포함하는 그들의 가능한 결과들을 사용하는 결정 지원 툴이다. 결정 트리는 통상적으로 목표에 가장 도달할 가능성이 큰 전략을 식별하는 바를 돕도록 동작 리서치 (operation research) 시에, 특히 결정 분석 시에 사용된다. 결정 트리의 다른 용도는 조건적 확율을 계산하기 위한 서술형 수단 (descriptive means) 이다. 결정 트리는 수신된 패킷을 처리하는 방식을 결정하기 위해서 수신된 패킷을 분류자 테이블 내의 룰과 선택 매칭하는데 사용될 수 있다.
도 1은 탐색 프로세서의 예시적인 실시예들을 채용하는 네트워크 요소들을 포함하는 통상적인 네트워크 토폴러지 (topology) 의 블록도이다. 네트워크 토폴러지는 다수의 코어 라우터들 (104a 내지 104h) 을 포함하는 인터넷 코어 (102) 를 포함한다. 다수의 코어 라우터들 (104a 내지 104h) 각각은 다수의 코어 라우터들 (104a 내지 104h) 중 적어도 하나의 다른 라우터에 접속된다. 인터넷 코어 (102) 의 에지 상에 있는 코어 라우터들 (즉, 코어 라우터들 (104b 내지 104e) 및 코어 라우터 (104h)) 은 적어도 하나의 에지 라우터 (106a 내지 106f) 에 접속된다. 각 에지 라우터 (106a 내지 106f) 는 적어도 하나의 액세스 라우터 (108a 내지 108e) 에 접속된다.
코어 라우터들 (104a 내지 104h) 은 인터넷 코어 (102) 또는 인터넷 백본 (backbone) 내에서 동작하도록 구성된다. 코어 라우터들 (104a 내지 104h) 은 인터넷 코어 (102) 의 다수의 통신 인터페이스들을 지원하도록 구성되며 다수의 통신 프로토콜 각각의 최고 스피드로 패킷들을 포워딩하도록 더 구성된다.
에지 라우터 (106a 내지 106f) 는 인터넷 코어 (102) 의 에지에 배치된다. 에지 라우터 (106a 내지 106f) 는 인터넷 코어 (102) 외부의 액세스 라우터 (108a 내지 108e) 와 인터넷 코어 (102) 내의 코어 라우터 (104a 내지 104h) 를 서로 브리지한다. 에지 라우터 (106a 내지 106f) 는 액세스 라우터 (108a 내지 108e) 에서 코어 라우터 (104a 내지 104h) 로 패킷들을 포워딩하고 이와 반대로 패킷들을 포워딩하는 브리징 프로토콜 (bridging protocol) 을 사용하도록 구성될 수 있다.
액세스 라우터 (108a 내지 108e) 는 홈 사용자 또는 사무실과 같은 최종 사용자에 의해서 사용되는 라우터이며 에지 라우터 (106a 내지 106f) 중 하나에 접속되며 이로써 코어 라우터 (104a 내지 104h) 중 하나에 접속됨으로써 인터넷 코어 (102) 에 전송된다. 이러한 방식으로, 에지 라우터 (106a 내지 106f) 는 에지 라우터 (106a 내지 106f) 및 이와 상호 접속된 코어 라우터 (104a 내지 104h) 를 통해서 임의의 다른 에지 라우터 (106a 내지 106f) 에 접속될 수 있다.
본 명세서에서 기술되는 탐색 프로세서는 코어 라우터 (104a 내지 104h), 에지 라우터 (106a 내지 106f) 및 액세스 라우터 (108a 내지 108e) 중 임의의 라우터에 상주할 수 있다. 이러한 각 라우터 내에서 본 명세서에서 기술된 탐색 프로세서는 룰들의 세트에 기초하여서 인터넷 프로토콜 (IP) 패킷들을 분석하고 적합한 네트워크 경로를 따라서 IP 패킷들을 포워딩하도록 구성된다.
도 2a는 에지 라우터 (106) 에서 사용되는 탐색 프로세서 (202) 의 예시적인 실시예들을 예시하는 블록도 (200) 이다. 제공자 에지 라우터와 같은 에지 라우터 (106) 는 탐색 프로세서 (202), 제 1 호스트 프로세서 (204) 및 제 2 호스트 프로세서 (214) 를 포함한다. 제 1 호스트 프로세서 (204) 는 인그레스 (ingress) 호스트 프로세서로서 구성된다. 제 1 호스트 프로세서 (204) 는 네트워크로부터 인그레스 패킷 (206) 을 수신한다. 제 1 호스트 프로세서 (204) 는 인그레스 패킷 (206) 으로부터의 패킷 헤더 (또는 필드) 를 포함하는 룩업 요청을 인터레이큰 인터페이스 (Interlaken interface) (208) 를 사용하여서 탐색 프로세서 (202) 에 포워딩한다. 이어서, 탐색 프로세서 (202) 는 네트워크 상에서 상기 인그레스 패킷 (206) 을 포워딩하기 위한 경로를 결정하기 위해서 복수의 룰을 채용하는 복수의 룰 처리 엔진들을 사용하여서 패킷 헤더를 처리한다. 패킷 헤더를 갖는 룩업 요청을 처리한 후에, 탐색 프로세서 (202) 는 경로 정보를 제 1 호스트 프로세서 (204) 에 포워딩하고 상기 제 1 호스트 프로세서 (204) 는 상기 처리된 인그레스 패킷 (210) 을 네트워크 내의 다른 네트워크 요소로 포워딩한다.
유사하게, 제 2 호스트 프로세서 (214) 는 에그레스 (egress) 호스트 프로세서로서 구성된다. 제 2 호스트 프로세서 (214) 는 네트워크로부터 전송될 에그레스 패킷 (216) 을 수신한다. 제 2 호스트 프로세서 (214) 는 에그레스 패킷 (216) 으로부터의 패킷 헤더 (또는 필드) 를 포함하는 룩업 요청을 제 2 인터레이큰 인터페이스 (Interlaken interface) (218) 를 사용하여서 탐색 프로세서 (202) 에 포워딩한다. 이어서, 탐색 프로세서 (202) 는 네트워크 상에서 상기 에그레스 패킷 (216) 을 포워딩하기 위한 경로를 결정하기 위해서 복수의 룰을 채용하는 복수의 룰 처리 엔진들을 사용하여서 패킷 헤더를 처리한다. 상기 제 2 호스트 프로세서 (214) 는 상기 처리된 에그레스 패킷 (220) 을 네트워크 내의 다른 네트워크 요소로 포워딩한다.
도 2b는 탐색 프로세서 (202) 를 채용하도록 구성된 에지 라우터 (106) 의 다른 예시적인 실시예를 예시하는 블록도 (202) 이다. 이 실시예에서, 에지 라우터 (106) 는 예를 들어서 제 1 탐색 프로세서 (202a) 및 제 2 탐색 프로세서 (202b) 와 같은 복수의 탐색 프로세서 (202) 를 포함한다. 복수의 탐색 프로세서 (202a 및 202b) 는 각기 복수의 인터레이큰 인터페이스 (226a 및 226b) 를 사용하여서 패킷 프로세서 (228) 에 접속된다. 복수의 탐색 프로세서 (202a 및 202b) 는 단일 인터레이큰 인터페이스를 통해서 패킷 프로세서 (228) 에 접속될 수 있다. 에지 라우터 (106) 는 패킷 프로세서 (228) 에서 전 처리된 (pre-processed) 패킷들 (222) 의 패킷 헤더 (또는 필드) 를 갖는 룩업 요청을 수신한다. 탐색 프로세서 (202a 및 202b) 중 하나는 룰들의 세트 및 상기 패킷 헤더 내의 데이터에 기초하여서 상기 전 처리된 패킷 (222) 의 적합한 포워딩 수신지를 찾기 위해서 패킷 헤더를 탐색하고 룩업 요청에 대한 응답을 패킷 프로세서 (228) 로 한다. 이어서, 패킷 프로세서 (228) 는 후 처리된 (post processed) 패킷 (224) 을 탐색 프로세서 (202a 및 202b) 에 의해서 수행된 룩업 요청 응답에 기초하여서 네트워크로 전송한다.
도 2c는 탐색 프로세서 (202) 를 채용한 액세스 라우터 (246) 의 예시적인 실시예를 예시하는 블록도 (240) 이다. 액세스 라우터 (246) 는 인그레스 패킷 프로세서 (242) 에서 입력되는 패킷 (250) 을 수신한다. 이어서, 인그레스 패킷 프로세서 (242) 는 이 입력된 패킷 (250) 의 패킷 헤더를 갖는 룩업 요청을 탐색 프로세서 (202) 에 포워딩한다. 탐색 프로세서 (202) 는 룩업 요청의 패킷 헤더에 기초하여서 입력된 패킷 (250) 의 포워딩 경로를 결정하고 룩업 요청에 대한 응답을 인터레이큰 인터페이스 (252) 를 통해서 에그레스 패킷 프로세서 (244) 로 한다. 이어서, 에그레스 패킷 프로세서 (244) 는 포워딩된 패킷 (248) 을 네트워크로 출력한다.
도 3a는 라우터 아키텍처의 예시적인 실시예의 도면 (300) 이다. 라우터 아키텍처는 프로세서 (308) 및 메모리 (304) 를 포함하는 프로세서 카드 (303) 와 접속된 스위칭형 백플레인 (302) 을 포함한다. 이 스위칭형 백플레인 (302) 은 복수의 라인 카드들 (306a 내지 306h) 에도 접속된다. 라인 카드들 (306a 내지 306h) 각각은 본 명세서에서 기술되는 탐색 프로세서를 포함한다.
도 3b는 탐색 프로세서 (202) 를 채용하는 라우터의 예시적인 실시예들을 예시하는 블록도 (320) 이다. 라우터는 라인 카드들 (306a 및 306b) 및 프로세서 카드 (303) 에 접속되는 스위칭형 백플레인 (302) 을 포함한다. 프로세서 카드 (303) 는 프로세서 (308) 및 라우팅 테이블 (328) 을 포함하며, 이 라우팅 테이블은 프로세서 카드 (303) 의 메모리 (304) 내에 저장될 수 있다. 각 라인 카드 (306a 및 306b) 는 각기 로컬 버퍼 메모리 (322a 및 322b), 포워딩 테이블 (324a 및 324b) 및 MAC (media access control) 층 (326a 및 326b) 을 포함한다. 탐색 프로세서 (202) 는 라인 카드들 (306a 및 306b) 의 포워딩 테이블 (324a 및 324b) 내에 각기 존재한다.
실례로서, 패킷이 라인 카드 (304a) 의 MAC 층 (326a) 에서 수신된다. MAC 층 (326a) 은 이 패킷을 포워딩 테이블 (324a) 에 전송한다. 이어서, 이 패킷 및 적합한 포워딩 테이블 정보가 로컬 버퍼 메모리 (322a) 내에 저장된다. 이어서, 프로세서 카드 (303) 는 그의 라우팅 테이블 (328) 에 액세스하여서 수신된 패킷을 어느 곳으로 포워딩할지를 결정한다. 이 결정 결과에 기초하여서, 라우터는 적합한 라인 카드 (304b) 를 선택하고 상기 패킷 및 이의 포워딩 정보를 상기 적합한 라인 카드의 로컬 버퍼 메모리 (322b) 내에 저장하고 이 패킷을 네트워크 외부로 포워딩한다.
도 3c는 스위칭형 백플레인 (backplane) 을 포함하는 라우터의 다른 실시예의 블록도 (340) 이다. 스위칭형 백플레인 (302) 은 프로세스 카드 (303), 라인 카드들 (342b 내지 342h) 및 서비스 카드 (342a) 에 접속된다. 프로세서 카드 (303) 는 메모리 (304) 및 프로세서 (308) 를 포함한다. 서비스 카드 (342a) 는 일 타입의 라인 카드 (342a 내지 342h) 이다. 또한, 본 명세서에서 기술된 탐색 프로세서는 서비스 카드 (342a) 내에도 존재할 수 있다.
도 3d는 탐색 프로세서 (202) 를 채용하는 라우터의 예시적인 실시예들을 예시하는 블록도 (360) 이다. 스위칭형 백플레인 (302) 은 프로세스 카드 (303) 및 서비스 카드 (342a) 또는 라인 카드들 (342b 내지 342h) 에 접속된다. 라인 카드들 (342a 및 342b) 은 서비스 카드 (342a) 또는 라인 카드 (342b 내지 342h) 일 수 있다. 라인 카드들 (342a 및 342b) 은 포워딩 테이블 및 대응 정책 모듈 (344a 및 344b) 및 MAC (media access control) 층 (326a 및 326b) 을 포함한다. 탐색 프로세서 (202) 는 라인 카드들 (342a 및 342b) 내에 각기 존재한다. 라인 카드 (342a) 가 네트워크로부터 MAC 층 (346b) 을 통해서 그의 포워딩 테이블 및 대응 정책 모듈 (344a) 에서 패킷을 수신한다. 탐색 프로세서 (202) 가 프로세서 카드 (303) 내의 라우팅 테이블 (328) 에 따른 포워딩 테이블 및 대응 정책 모듈 (344a) 에 따라서 패킷을 처리하고 이 패킷을 적합한 라인 카드 (342b) 로 포워딩하며 이후에 네트워크로 포워딩될 것이다.
도 4a는 탐색 프로세서 (202) 의 예시적인 실시예들의 블록도 (400) 이다. 탐색 프로세서 (202) 는 시리얼라이저 (serializer) / 디시리얼라이저 (deserializer) (SerDes) 인터페이스 (402) 에 접속된다. 일 실시예에서, SerDes 인터페이스 (402) 는 초당 최소 10 Gb 까지의 데이터 전달 속도를 달성할 수 있는 8 개의 전송 레인들 (lanes) 을 포함한다. 탐색 프로세서 (202) 는 SerDes 인터페이스 (402) 에 접속된 4중 (quad) 레인 인터페이스들의 2 개의 세트 (404a 및 404b) 를 포함한다. 4중 레인 인터페이스들의 2 개의 세트 (404a 및 404b) 각각은 각기 제 1 인터레이큰 인터페이스 (406a) 및 제 2 인터레이큰 인터페이스 (406b) 에 접속된다. 이어서, 제 1 인터레이큰 인터페이스 (406a) 및 제 2 인터레이큰 인터페이스 (406b) 는 각기 제 1 룩업 프론트 엔드 (LUF) (408a) 및 제 2 룩업 프론트 엔드 (LUF) (408b) 에 접속된다. 이어서, 제 1 룩업 프론트 엔드 (LUF) (408a) 및 제 2 룩업 프론트 엔드 (LUF) (408b) 는 크로스바 (crossbar) (412) (또한, 지능형 페브릭 (intelligent fabric) 또는 'X-bar' 로서 기술됨) 에 접속된다.
이 크로스바 (412) 는 제 1 수퍼클러스터 (supercluser) (410a) 및 제 2 수퍼클러스터 (supercluser) (410b) 에 접속된다. 각 제 1 수퍼클러스터 (410a) 및 제 2 수퍼클러스터 (410b) 내에는 복수의 탐색 블록들 (412a 내지 412d) 이 존재한다. 각 탐색 블록 (412) 또는 탐색 클러스터는 수신된 패킷으로부터 키 (key) 를 수신하고 이 키를 처리하기 하기 위한 룰들의 세트를 결정 및 로딩하고 이러한 룰들을 사용하여서 실행된 탐색의 결과들을 출력하도록 구성된다. 크로스바 (412) 및 수퍼클러스터들 (410a 및 410b) 은 룩업 클러스터 컴플렉스 (LCC) (414) 의 일부이다.
도 4b는 본 명세서에서 기술되는 탐색 프로세서의 예시적인 실시예의 블록도 (420) 이다. 탐색 프로세서는 LUF 입력 프로세서 (LIP) (424) 및 LUF 출력 프로세서 (LOP) (440) 인 것으로서 도시된 바와 같은 LUF (408) 를 포함한다. 이 탐색 프로세서는 수퍼클러스터들 (410a 및 410b) 을 포함하는 LCC (414) 를 더 포함한다. LIP (424) 는 인터레이큰 입력 (422a) 및 인터레이큰 입력 (422b) 을 수신한다. LIP (424) 는 스케줄러 (428a 및 428b), 패킷 헤더 테이블 (430a 및 430b), 룰 데이터베이스 로케이션 (location) 테이블 (432a 및 432b) 및 그룹 규정 테이블 (426) 을 포함한다. LIP (424) 는 테이블들, CSR들 및 요청들 (434a 및 434b) 을 생성하여서 LCC (414) 에 전송한다. LCC (414) 는 수퍼클러스터들 (410a 및 410b) 및 그 내의 탐색 클러스터들 (미도시) 에 기초하여서 응답들 (436a 및 436b) 을 생성한다. 이어서, LOP (440) 가 이 응답들을 수신하여서 이들을 인터레이큰 출력부 (442a) 및 인터레이큰 출력부 (442b) 를 통해서 출력한다.
본 명세서에서 기술되는 프로세서는 패킷과 매칭하는 하나 이상의 룰들 (예를 들어서, 매칭 룰들) 을 로딩한다. 일반적으로, 패킷은 헤더, 페이로드 및 트레일러와 같은 부분들로 분할될 수 있다. 패킷의 헤더 (또는 패킷 헤더) 는 예를 들어서 필드들로 더 분할될 수 있다. 따라서, 프로세서는 패킷의 하나 이상의 부분들 (또는 필드들) 과 매칭하는 하나 이상의 룰들을 더 찾을 수 있다.
탐색 프로세서는 패킷 또는 패킷들의 부분들과 매칭하는 하나 이상의 룰들을 찾는 "룩업 요청 (lookup request)" 을 실행할 수 있다. 이 룩업 요청은 먼저느 하나 이상의 매칭하는 룰들을 찾을 수 있다.
본 명세서에서 개시된 프로세서의 견지에서 보면, 룩업 요청을 실행하는 바는 (1) 호스트 프로세서로부터 룩업 요청을 수신하는 동작에서 시작된다. 룩업 요청은 패킷 헤더 및 그룹 식별자 (GID) 를 포함한다.
(2) GID가 GDT (global definition/description table:보편적 규정/서술 테이블) 내의 엔트리를 인덱싱한다. 각 GDT는 (a) n 개의 테이블 식별자 (TID), (b) 패킷 헤더 인덱스 (PHIDX) 및 (c) 키 포맷 테이블 인덱스 (KFTIDX) 를 포함한다.
(3) 각 TID가 트리 로케이션 테이블 (TLT:tree location table) 내의 엔트리를 인덱싱한다. 각 TLT 엔트리는 하나 이상의 매칭 룰들을 탐색하는 룩업 엔진 또는 프로세서 코어를 식별한다. 이로써, 각 TID는 어느 룩업 엔진 또는 프로세서 코어가 하나 이상의 매칭 룰들을 탐색할지 및 특정의 하나 이상의 매칭 룰들이 어디에 저장될지를 모두 특정하게 된다.
(4) 또한, 각 TID는 트리 액세스 테이블 (TAT) 내의 엔트리를 인덱싱한다. 각 TAT 엔트리는 룰들의 테이블 또는 트리로 지칭되는 룰들 (또는 룰들을 향하는 포인터들 (pointers)) 의 집합을 저장하는 메모리 내에서의 시작 어드레스 (예를 들어서, 루트 노드 (root node)) 를 제공한다. "룰들의 테이블", "룰들의 트리" "테이블" 또는 "트리"는 본원 전체에서 상호 교환 가능하게 사용된다. 결국, TID는 TAT를 식별하고, TAT는 하나 이상의 매칭 룰들을 찾을 수 있는 룰들의 세트 또는 집합을 식별한다.
(5) GDT 엔트리의 PHIDX는 패킷 헤더 테이블 (PHT) 내의 엔트리를 인덱싱한다. PHT 내의 각 엔트리는 패킷 헤더로부터 n 개의 키들을 추출하는 방식을 프로세서에게 지시한다.
(6) GDT 엔트리의 KFTIDX는 키 포맷 테이블 (KFT) 내의 엔트리를 인덱싱한다. KFT 내의 각 엔트리는 패킷 헤더로부터 추출된 n 개의 키들 각각으로부터 하나 이상의 필드들 (즉, 패킷 헤더의 부분들) 을 추출하도록 하는 인스트럭션들을 제공한다.
(7) 프로세서가 각 TID와 함께 패킷으로부터 추출된 각각의 필드를 사용하여서 룰들의 서브세트 (subset) 를 탐색한다. 각 서브세트는 각 추출된 필드와 매칭할 수도 있는 (possibly) 룰들을 포함한다.
(8) 이어서, 프로세서는 각 서브세트의 각 룰과 추출된 필드를 비교한다. 프로세서는 매칭하는 룰을 응답 시에 또는 룩업 응답 시에 제공한다.
룩업 요청 및 이의 열거된 스테이지들의 상술한 설명은 룩업 요청의 개념을 제공하기 위해서 기술되었다. 이러한 개념들은 다양한 방식으로 구현될 수 있다. 예를 들어서, 본 발명의 예시적인 실시예들에서, 이러한 개념들은 탐색 프로세서에 의해서 구현될 수 있다.
상술한 바와 같이, 탐색 프로세서는 패킷에 대한 룩업 요청을 처리한다. 룩업 요청 처리 시에, 프로세서는 패킷으로부터 헤더 또는 필드를 추출하고 이 추출된 것들이 하나 이상의 룰들에 적용된다. 헤더의 필드는 키로서 지칭될 수 있다.
탐색 프로세서는 룰들의 하나 이상의 트리를 저장한다. 일 실시예에서, 룰들의 트리는 소정의 키에 대해서 룰들의 세트를 좁혀가도록 (narrow down) 프로세서에 의해서 채용되는 메모리 구조이며, 룰은 키 값의 테스트이다. 이 트리는 루트 노드 또는 시작 어드레스를 갖는다. 탐색 프로세서는 TWE (트리 워킹 엔진: tree walk engine) 을 사용하여서 특정 키에 대한 트리를 트라버스한다 (traverse). 결국에는 TWE는 트리 내의 메모리 어드레스를 향하는 포인터에 도달하게 된다. 이 포인터는 룰들의 버킷 (bucket) 을 가리키거나 직접적으로 메모리 내의 룰을 가리키는 포인터일 수 있다.
룰들의 버킷은 룰들을 향하는 포인터들의 세트이다. 포인터가 룰들의 버킷을 가리키면, BWE (버킷 워킹 엔진:bucket walk engine) 이 상기 키 및 버킷에 기초하여서 온 칩 메모리 (on chip memory) 와 같은 메모리 내의 룰들을 향하는 포인터를 결정한다. 메모리 내의 룰들의 그룹은 천크 (chunk) 로 지칭된다. 천크는 순차적으로 어드레스될 수 있는 룰들이거나 다른 방식으로 그룹핑된 (grouped) 룰들일 수 있다. 포인터가 메모리 내의 룰들을 바로 가리키면, 이 포인터는 천크를 직접적으로 가리킬 수 있다.
프로세서가 일단 메모리부터의 룰들의 천크를 로딩하면, 프로세서는 이 키 및 룰들의 천크를 룰 매칭 엔진 (RME) 에 전송한다. 룰 매칭 엔진은 이 키가 상기 천크 내의 룰들과 매칭하는지의 여부를 결정한다. 이어서, 룰 매칭 엔진 및 탐색 프로세서는 선택된 룰 및 매칭 결과를 룩업 요청 응답으로서 전송한다.
도 4c는 보다 세부적으로 2 개의 수퍼클러스터들 (410a 및 410b) 을 포함하는 LCC (Lookup Cluster Complex) (414) 의 블록도이다. 각 수퍼클러스터는 다수의 (예를 들어서, 8 개의) 클러스터들을 포함하며, 각 클러스터 (예를 들어서, 클러스터 (412a) 는 LUE (452a 내지 452h) 또는 LUE (453a 내지 453h) 및 이와 연관된 온 칩 메모리 (454a 내지 454h) 또는 온 칩 메모리 (455a 내지 455h) 및 크로스바 디바이스 (412) 를 포함한다. 예시적인 탐색 프로세서는 패킷 데이터 처리를 위해서 이러한 수퍼클러스터들 (410a 및 410b) 을 2 개 이상 포함할 수 있다.
도 4d는 일 실시예에서의 LCC (414) 에서의 입력 및 출력 데이터를 예시하는 블록도이다. LCC (414) 는 룩업 요청 또는 다른 통신 시에 다음의 같은 정보를 수신하도록 구성될 수 있다:
(1) LFTWCLMSK (Least Full Cluster Mask) 는 소정의 탐색 시에 수퍼클러스터마다 인에이블 (enable) 할 클러스터를 선택하는데 사용되는 비트 마스크이다.
(2) KCLMSK (Key Cluster Mask) 는 LCC 내에서 어느 클러스터가 키 요청 데이터를 수락해야 하는지를 표시한다. KCLMSK는 탐색 시작 시에 참여하지 않을 수 있는 클러스터들이 프로세싱의 마지막 부분을 수행할 수 있게 한다. 수퍼클러스터 내의 Xbar 세그먼트들 (segment) 은 탐색 동작이 클러스터들 간에서 이동할 수 있게 한다. KCLMSK는 잠재적으로 참여할 수 있는 모든 클러스터들을 통지한다.
(3) TID (트리 ID) 및 KFTIDX (키 포맷 인덱스) 는 상기 마스크들과 함께 실행 (트리 또는 룰들의 세트를 나타내는 RCDS를 워킹하는 (walking) 실행) 이 개시되는 트리 루트들을 선택한다.
(4) KID (키 ID) 는 LUF가 인-플라이트 인벤토리 (in-flight inventory) 를 추적하고 요청에 대한 응답 결과를 매칭하도록 유지된다.
(5) KEY는 트리 또는 RCDS를 탐색하기 위해서 헤더 튜플들 (tuples) 로부터 추출된 데이터이다.
탐색 프로세서는 단일 패킷 헤더에 대해 1 회 내지 4 회의 탐색을 개시하는 (launching) 방법을 제공한다. 이러한 요청들 각각은 헤더들 내에서 완전하게 상이하면서 완전하게 독립적인 필드 세트들을 탐색할 수 있다. 이러한 탐색들은 이들이 동일한 패킷 헤더에 대한 것임을 통보하는 것과 함께 매번 독립적인 탐색일 수 있다. 탐색 페브릭 (LCC) 은 이러한 탐색들을 완전하게 상이한 탐색들로 간주하며 (서브-키 (sub-key ID) 가 입력 및 출력된 것 외에) 초기 요청 확장에 대한 어떠한 지식도 가지고 있지 않다.
또한, LCC (414) 는 룩업 요청 또는 다른 통신에 대한 응답 시에 다음의 정보를 출력하도록 구성될 수 있다:
(1) KID는 응답된 키 ID이다.
(2) RuleData는 호스트로의 역 (back) 응답의 일부이다.
(3) RulePriority는 서브-트리 (sub-tree) (또는 서브-RCDS) 응답과 연관되면서 LUF로 하여금 다수의 클러스터 응답 결과로부터 하나의 최상의 응답을 선택하게 하는 메트릭 (metric) 이다. MinRule은 또한 호스트로의 역 응답의 일부이다.
공통 패킷에 대응하는 다수의 응답 메시지들이, 호스트로 반대로 전달될 때에, 공통 ID를 공유하고 클록마다 다수의 응답을 생성하도록 합병되어서 (coalesced) 소망하는 처리량이 달성된다. 이 응답들은 합병될 필요가 없지만 이 응답들이 합병된다면 인터페이스 대역폭이 보다 효율적으로 사용될 수 있다. 예시적인 실시예에서, 1 개 내지 4 개의 응답들이 일 응답 메시지로 합병되고 이로써 최초의 탐색 요청 시의 요청 수와 일치하게 된다.
도 5는 단일 룩업 요청 (550) 으로부터 복수의 키 요청들을 생성하는 바를 예시하는 블록도이다. 패킷 헤더 (552) 를 포함하는 룩업 요청 (550) 은 명령 인터페이스 (command interface) 를 거쳐서 LUF (408) 도달한다. GID (그룹 ID) (554) 필드는 다양한 내부 LUF (408) 테이블을 인덱싱하며 LUF (408) 로 하여금 개별적인 키들 (또는 "서브 키"로 지칭됨) 을 갖는 4 개에 달하는 상이한 키 요청들 (560a 내지 560d) 을 생성할 수 있게 하며, 상기 각 개별 키들은 4 번의 독립적인 탐색을 개시하는데 사용될 수 있다. 예시적인 실례에서, 키 요청 (560a) 의 키는 476 비트에 달하는 비트 폭을 가지며 패킷 헤더 (552) 는 512 비트에 달하는 비트 폭을 가질 수 있다. 이 키들은 매우 작은 입도로 해서 (on a nibble granularity basis) 재구성될 수 있으며 소비자 애플리케이션 층에 의해서 완벽하게 재배열될 수 있다. 예시적인 실시예에서, 탐색 프로세서는 16 개에 달하는 키 재구성 방식을 사전 저장할 수 있다.
LUF (408) 의 서브 키 확장 인덱스 모듈은 패킷 헤더 (552) 가 각각의 키 요청들 (560a 내지 506d) 에 대해서 어떻게 다수의 서브 키들로 분할될 지를 결정한다. 패킷 헤더 (552) 를 다수의 서브 키들로 확장시킨 후에, LUF (408) 의 서브-트리 확장 및 스케줄링 모듈은 각 키 요청들 (560a 내지 506d) 이 탐색 프로세서의 적합한 부분으로 향하게 한다.
서브 키 확장의 다운스트림에서, LUF (408) 스케줄러는 예를 들어서 서브 키마다 다수의 서브 RCDS 워킹 (walk) 을 수행할 클러스터들을 선택한다. 각 서브 키는 결국에는 호스트로 응답되지만 내부적으로는 사용되지 않은 공통 XID (556) 을 공유하는 개별 탐색으로서 간주된다. 따라서, LUF (408) 는 확장되어서 단일 요청에 대해서 4 개의 서브 키들을 추적한다.
도 6은 일 실시예에서의 LUE (Lookup Engine) (650) 및 이와 연관된 OCM (on-chip memory) (690) 의 블록도이다. LUE (650) 는 탐색 프로세서 및 도 4a 내지 도 4d를 참조하여서 상술한 LCC 구성 내에서 구현될 수 있다. 일 실시예에 따라서, 룰 프로세싱 시에, LUE (650) 는 하나 이상의 트리 워킹 엔진들 (TWEs) (660) 의 컴플렉스 (complex), 하나 이상의 버킷 워킹 엔진들 (BWEs) (670) 의 컴플렉스, 및 룰 매칭 엔진들 (RME) (680a 내지 680c) 을 포함한다. 룰 프로세싱이 (이하에서 기술될 바와 같이) 외부 메모리로 확장되는 다른 실시예에서, LUE (650) 는 추가 RME를 구비한 버킷 포스트-프로세서 (bucket post-processor) (BPP) 를 더 포함할 수 있다. LUE (650) 와 연관된 OCM (690) 은 LUE (650) 에 의한 룰 매칭을 위해서 룰들을 저장한다.
예시적인 탐색 프로세서의 동작 시에, 호스트 인터페이스 (도 4a) 는 호스트로부터 룩업 요청을 수신한다. LUF (도 4a에서의 LUF (408a)) 는 룩업 요청을 하나 이상의 키 요청들로 처리하고 여기서 각 키 요청은 키 (도 5) 를 갖는다. LUF은 룩업 요청을 처리할 클러스터들의 세트를 선택함으로써 수퍼클러스터로의 요청들을 스케줄링한다.
도 6으로 돌아가면, 선택된 클러스터의 LUE (650) 구성 요소가 룩업 요청을 처리한다. 여기서, TWE (660) 가 (키 요청 내에 포함됨) 키를 사용하여서 이 키와 매칭할 수도 있는 룰들의 세트를 나타내는 트리를 진행 (walking) 한다. TWE (660) 가 트리의 리프 (leaf) 에 도달하면, TWE (660) 는 룰들의 버킷 (또는 간단히 버킷) 으로 지칭되는 룰들의 서브세트를 BWE (670) 에 전달한다. 용어 "트리" 및 "RCDS (rule complied data structure)" 은 본 명세서에서 상호 교환 가능하게 사용된다. BWE (670) 은 룰들의 버킷을 처리하고 이를 RME (680a 내지 680c) 에 전달한다. RME (680a 내지 680c) 은 TWE (660) 에 의해서 식별된 룰들과 키를 서로 비교한다. 이로써, 탐색 프로세서는 호스트에 대한 응답으로서 "매칭 발견됨" 또는 "매칭이 발견되지 않음" 의 응답을 제공한다.
LUE (650) 로의 룩업 요청을 수신하기 이전에, LUF (예를 들어서, 도 4a의 LUF (408a)) 는 호스트 프로세서로부터 룩업 요청을 수신한다. 이 룩업 요청은 패킷 헤더 및 그룹 식별자 (GID) 를 포함한다. GID는 GDT (보편적 규정/서술 테이블) 내의 엔트리를 인덱싱한다. 각 GDT 엔트리는 (a) n 개의 테이블 식별자 (TID), (b) 패킷 헤더 인덱스 (PHIDX) 및 (c) 키 포맷 테이블 인덱스 (KFTIDX) 를 포함한다. 다음으로, 각 TID는 트리 로케이션 테이블 (TLT:tree location table) 내의 엔트리를 인덱싱한다. 각 TLT 엔트리는 하나 이상의 매칭 룰들을 탐색하는 룩업 엔진 또는 프로세서 코어를 식별한다. 이로써, 각 TID는 어느 룩업 엔진 또는 프로세서 코어가 하나 이상의 매칭 룰들을 탐색할지 및 특정의 하나 이상의 매칭 룰들이 어디에 저장될지를 모두 특정하게 된다.
또한, 각 TID는 LUE (650) 에서의 트리 액세스 테이블 (TAT) (665) 내의 엔트리를 인덱싱한다. (예를 들어서, 메모리 내에 저장된) LUE 상의 룰들의 세트 또는 집합이 2 개 이상 존재하기 때문에, TID는 하나 이상의 매칭 룰들을 탐색하기 위해서 이러한 세트 또는 집합들 중 어느 것을 탐색할지를 식별한다. 각 TAT (665) 엔트리는 룰들의 테이블 또는 트리로 지칭되는 룰들 (또는 룰들을 향하는 포인터들) 의 집합을 저장하는 메모리 내에서의 시작 어드레스 (예를 들어서, 루트 노드) 를 제공한다. ("룰들의 테이블", "룰들의 트리" "테이블" 또는 "트리"는 본원 전체에서 상호 교환 가능하게 사용된다.) 결국, TID는 TAT (665) 를 식별하고, TAT (665) 는 하나 이상의 매칭 룰들을 찾을 수 있는 룰들의 세트 또는 집합을 식별한다.
GDT 엔트리의 PHIDX는 패킷 헤더 테이블 (PHT) 내의 엔트리를 인덱싱한다. PHT 내의 각 엔트리는 패킷 헤더로부터 n 개의 키들을 추출하는 방식을 프로세서에게 지시한다. GDT 엔트리의 KFTIDX는 키 포맷 테이블 (KFT) 내의 엔트리를 인덱싱한다. KFT 내의 각 엔트리는 패킷 헤더로부터 추출된 n 개의 키들 각각으로부터 하나 이상의 필드들 (즉, 패킷 헤더의 부분들) 을 추출하도록 하는 인스트럭션들을 제공한다. 예를 들어서, KFT 엔트리 (또는 키 포맷 타입) 는 100 비트 키 중 어느 비트가 IP 패킷 헤더의 소스 IP 어드레스에 대응하는지를 특정한다.
LUF는 도 5에서 예시적으로 도시된 바와 같이 룩업 요청으로부터의 하나 이상의 키 요청을 어셈블리하고 키 요청을 LUE (650) 에 전송한다.
동작 시에, LUE (650) 는 (도 4a의 LUF (408a) 와 같은) LUF로부터 키 요청 (KRQ) 을 수신한다. KRQ는 키 (KEYDATA), 키 포맷 테이블 인덱스 (KFTIDX) 및 테이블 식별자 (TID) 를 포함하고 도 5를 참조하여서 상술된 키 요청들 (560a 내지 560d) 에 의해서 도시된 바와 같은 룩업과 연관된 추가 데이터를 포함할 수 있다.
KFT로부터 제공되는 (및 KFTIDX에 의해서 인덱싱되는) 인스트럭션들에 따라서 키가 파싱된다 (parsed). 이어서, TWE (660) 는 파싱된 키를 사용하여서 이 파싱된 키와 매칭할 수도 있는 룰들의 세트를 나타내는 트리를 워킹한다. TWE (660) 이 워킹하는 트리는 노드 및 리프 (leaf) 를 포함한다. TWE (660) 는 이 트리의 루트 노드에서 워킹을 시작한다. 루트 노드의 위치는 TAT (665) 로부터 제공된다 (그리고 TID에 의해서 인덱싱된다). TWE (660) 는 트리의 리프에 도달할 때까지 트리를 워킹한다. 트리 내의 각 리프는 룰들의 버킷 (또는 간단하게 버킷) 으로 지칭되는 룰들의 서브세트를 나타낸다. TWE (660) 가 리프에 도달하면, 후속 처리를 위해서 이 대응하는 버킷을 BWE (670) 에 전달한다.
BWE (670) 가 하나 이상의 룰을 포함할 수 있는 버킷을 페치 (fetch) 한다. 편리한 실시예에서, 이 버킷은 메모리 내에 저장된 룰들을 향하는 하나 이상의 포인터들 (또는 어드레스들) 을 포함한다. 이 룰들은 온 칩 메모리 (OCM) 내에 저장될 수 있으며, 이 경우에, BWE (670) 은 OCM 으로부터 룰들을 페치하고 이 룰들을 RME (로컬 (local) RME) 에 전달한다. OBS (OCM bank slotter) (695) 는 해당 액세스 포트들 (p0 내지 p3) 이 다수의 TWE (660), BWE (670) 및 RME (680a 내지 680c) 간에서 점유 및 공유되도록 보장함으로써 OCM (690) 으로의 요청들을 스케줄링할 수 있다.
또한, 룰들은 LUE (650) (및 이 LUE을 포함하는 탐색 프로세서) 외부에 위치한 메모리 내에 저장될 수도 있다. 이 경우에, BWE (670) 는 외부 메모리부터 룰들을 페치하여서 이하에서 기술될 "룰 확장"으로 지칭되는 절차에서 상기 룰들을 BPP (bucket post processor) (및 이와 연관된 RME) 에 전송한다.
도 6으로 돌아가면, KTFIDX는 룰 포맷 테이블 (RFT) (667) 내의 엔트리를 인덱싱한다. RFT (667) 내의 각 엔트리는 룰으로부터 하나 이상의 필드를 추출하기 위해서 페치된 룰의 비트를 파싱하기 위한 인스트럭션들을 제공한다. 이 룰은 RTF (667) 로부터 제공되는 (그리고 KTFIDX에 의해서 인덱싱되는) 인스트럭션들에 따라서 파싱된다. 이어서, RME (680a 내지 680c) 는 이 파싱된 룰을 파싱된 키를 서로 비교하여서 매칭 여부를 발견한다. 이로써, RME는 서브-트리 응답 (STRSP) 로 지칭되는 응답으로서 "매칭 발견됨" 또는 "매칭 발견되지 않음" 의 응답을 LUF에 전송한다.
일 실시예에 따라서, 각 수퍼클러스터는 분산된 온 칩 메모리 (OCM) 및 n HW-지원 쓰레드 엔진 (n HW-assist thread engine) 을 포함하며, 여기서 'n'은 각 쓰레드 반복의 레이턴시 (latency) 에 의해서 결정된다 (n = 10 사이클). 각 클러스터의 성능을 최대화시키기 위해서, 최소 쓰레드 반복 레이턴시 = 'n' 사이클이며 각 HW 쓰레드가 단일 사이클 OCM 액세스를 요구하면, 'n' 쓰레드 엔진들은 예를 들어서 매 사이클마다 최대로 파이프라인된 (pipelined) OCM 액세스들을 허용하도록 단일 포트된 (ported) SRAM의 사용을 시분할 멀티플렉싱 (TDM) 할 수 있다.
예시적인 실시예들에서, 각 클러스터의 LUE는 10 개의 트리 워킹 엔진 (TWE), 10 개의 버킷 워킹 엔진 (BWE) 및 3 개의 룰 매칭 엔진 (RME) 을 포함하며, 이들은 입력되는 호스트 룩업/키 요청들을 처리하도록 사용된다. 각 TWE/BWE/RME 엔진은 그 자신의 HW 컨텍스트 상태 (또는 HW 쓰레드) 를 포함하며, 이로써 각 키 요청이 처리될 때에 각 키 요청의 상태를 계속 추적할 수 있다. 각 클러스터의 LUE에서, 10 사이클의 TWE 최소 쓰레드 반복 레이턴스는 10 개에 달하는 활성 TWE 쓰레드들이 간섭 없이 OCM 단일-포트된 SRAM을 시분할 멀티플렉싱할 수 있게 한다 (즉, OCM이 매 사이클마다 최대로 파이프라인된 액세스를 가질 수 있다).
도 6을 참조하면, LUE(650)의 보다 상세한 예시적인 동작에서, 새로운 호스트 요청들 및 키 요청들이 KRQ (key request bust) 를 통해서 LUF로부터 수신된다. 각 LUE (650) 는 16 개에 달하는 계류 중인 KRQ 요청들 (또는 키 또는 호스트 요청들) 을 수신하도록 구성될 수 있다. 호스트 요청 (CSR/Table/OCM에 대한 호스트 R/W 액세스) 은 호스트 요청 (HRF) FIFO에 들어가며 호스트 기록 데이터가 공통 기록 데이터 버퍼 (WDB) 내에 기록된다. 호스트 요청 (R/W) 은 각 LUE (650) 클러스터에 있어서 "순서대로 (in order)" 처리될 수 있다. 호스트 응답들이 HRQ/HRD FIFO로 응답되며 여기서 호스트 응답들은 중앙 리소스 블록 (CRB) 을 통해서 STRSP 버스를 통해서 전달될 것을 대기하며 결국에는 인터레이큰 패킷을 통해서 호스트로 응답된다.
새로운 키 요청이 키 요청 FIFO (KRF) 에 들어가며 이들과 연관된 키 데이터가 공통 기록 데이터 버퍼 (WDB) 내에 기록된다. 이동된 트리 워킹 요청들 (TWMIGs) 은 소스 LUE (650) 클러스터로부터 XBR (412) 버스를 통해서 수신지 LUE 클러스터에 전달된다. 새로운 TWMIG들은 TMQ/TMD로 인큐딩되며 (enqueued) 처리되기 위해서 대기 (pending) TWE (660) 를 기다린다.
새로운 키 요청들 (KRF) 및 이동된 트리 요청들 (TMQ) 은 트리 ID (TID) 를 사용하여서 TIC/TAT (665) 액세스를 위해서 조정한다 (arbitrate). TIC/TAT (665) 구조는 TEW들 (660) 중 할당된 하나에서의 서브-트리 워킹 동안에 사용된 트리 액세스 테이블 정보를 포함한다. 새로운 키 요청에 대해서, 소프트웨어가 로딩한 룰 포맷 테이블 정보를 획득하기 위해서 RIC/RFT (667) 가 또한 액세스된다. 트리 이동 요청은 RIC/RFT 테이블을 재페치 (re-fetch) 하지 않을 수 있지만 대신에 RIC/RFT 정보를 소스 클러스터로부터 이 이동 요청 자체 내에서 반송할 수 있다. 또한, 트리 이동 요청을 위한 키 데이터가 트리 이동 데이터 (TMD) 내에 저장될 수 있다.
일단 TAT (665) 및/또는 RFT (667) 정보가 페치되면, 새로운 키 요청이 하나의 TWE (660) (TWE들 중 하나) 에 할당된다. (HW 병렬성을 구현하여서) 새로운 키 요청 탐색을 신속하게 수행하기 위해서, 이 키 요청은 8 개에 달하는 고유 서브-트리 워크 (walks) 로 (소프트웨어 동작에 의해서) 파티셔닝될 수 있으며, 각 서브-트리 워킹 쓰레드가 개별 TWE (660) 에 할당된다. TW 이동 요청은 언제나 오직 하나의 TWE에 할당될 수 있다.
일단 TWE의 서브-트리 워킹이 리프 노드 (leaf node) 를 검출하였으면, 프로세싱을 위한 콘트롤 (control) 이 버킷 워킹 엔진 (BWE) (670) 풀로 전달된다. BWE들 (670) 은 이 리프 노드로부터의 버킷 정보 서술자 (bucket info descriptor) 를 사용하여서 버킷 엔트리들을 페치한다. 이어서, 버킷 엔트리들 (BEs) 이 룰 워킹 엔진들 (RWEs) (680a 내지 680c) 에 의해서 처리된다. 룰 워킹 엔진들 (RWEs) (680a 내지 680c) 은 룰 천크들 (RulChkPtr) 을 향하는 포인터들을 포함하는 버킷 엔트리들 (BEs) 을 처리한다. 룰 워킹 엔진들 (RWEs) (680a 내지 680c) 은 룰 데이터를 페치하여서 룰 매칭 엔진들 (RMEs) (680a 내지 680c) 의 대기 풀 (pending pool) 에 전달한다. 룰 매칭 엔진들 (RMEs) (680a 내지 680c) 은 이 페치된 OCM 룰 천크 데이터 및 이에 대응하는 (RTF (667) 로부터의) 룰 포맷 데이터를 사용하여서 각 버킷 엔트리 (BE) 에 의해서 특정된 룰들의 천크를 처리한다. 룰 워킹 엔진들 (RWEs) (680a 내지 680c) 은 전체 버킷 내의 모든 버킷 엔트리 (BE) 에 대하여 각 룰 천크에 대한 부분적 RME 매칭 결과들을 수집할 것이다. 일단 매칭 여부에 대한 결과가 획득되면, 룩업 응답 (LURSP) 이 LRQ/LRD로 역으로 전달되며 다시 역으로 STRSP 버스를 통해서 룩업 프론트 엔드 (LUF) 로 전달된다.
룰 매칭 동작 동안의 임의의 시간에, BWE (670) 는 원격 버킷 엔트리 (BE) 요청을 하거나 룰 워킹 엔진들 (RWEs) (680a 내지 680c) 은 원격 출력 큐 (ROQ) 를 통해서 다른 클러스터에 원격 룰 천크 요청을 할 수 있다. OBS (OCM Bank Select) (659) 아비터 (arbiter) 가 모든 트리/버킷 및 룰 데이터 구조들을 포함하는 공통 OCM으로의 모든 액세스들을 책임진다. 원격 클러스터는 XBR (412) 를 통해서 원격 OCM 요청을 함으로써 다른 클러스터의 OCM을 액세스할 수 있으며 이 원격 OCM 요청은 원격 입력 큐 (RIQ) 로 인큐잉된다. TWE 풀, BWE 풀, RIQ 및 HRF 모두는 공통 OCM 내에서 요청을 생성할 수 있으며, 이 공통 OCM은 전체 OCM 레이턴시를 최소화하고 OCM 대역폭을 최대화하여서 (뱅크 충돌 회피를 위하여) 최적의 전체적인 탐색 성능을 얻기 위하여 복잡한 동적 중재 방식을 갖는다.
상술한 바와 같이, 룰들은 온 칩 메모리 (OCM) 상에 상주할 수 있다. 이러한 경우에, BWE (670) 에 의해서 채용되는 (engaged) 룰 매칭 엔진들 (RMEs) (680a 내지 680c) 은 BWE (670) 와 동일한 LUE (650) 의 일부이다. 이로써, BWE (670) 은 "로컬 (local)" 룰 매칭 엔진들 (RMEs) (680a 내지 680c) 을 채용한다고 말할 수 있다. 룰들은 프로세서 외부에 있는, 즉 오프 칩인 메모리 상에 상주할 수도 있다. 이러한 경우는 외부 메모리로 확장된 룰 프로세싱 또는 "룰 확장"으로서 지칭될 수 있는 경우이며, 이 경우에, BWE (670) 은 그의 로컬 (local) 룰 매칭 엔진들 (RMEs) (680a 내지 680c) 을 채용하지 않는다. 대신에, BWE (670) 은 "천크"로 지칭되는 룰들의 버킷의 일부를 판독하도록 하는 요청 메시지를 메모리 제어기에 전송할 수 있다. 또한, BWE (670) 은 "측대역 (sideband)" 메시지를 BPP에게 전송하여서 (소정의 키와 연관된) 천크가 외부 메모리로부터 입력될 것을 예상하라는 바를 BPP에게 알린다.
BPP는 외부 메모리로부터 수신된 룰들의 천크를 처리하기 시작한다. 이 처리의 일부로서, BPP가 매칭을 발견하였으면, BPP은 룩업 응답으로 지칭되는 응답 (또한 서브-트리 응답으로도 지칭됨) 을 LUF에 전송한다. 또한, BPP은 BPP가 천크 처리를 완료하였음을 알리는 메시지를 LUE에게 보내고 이로써 LUE은 자유롭게 다른 요청 상으로 이동할 수 있다.
BPP가 매칭을 발견하지 못하였고 천크 처리가 완료되었으면, BPP는 BPP가 천크 처리를 완료하였으며 처리할 다른 천크를 자신에게 전송하라는 메시지를 LUE에게 보낸다. 이어서, LUE는 MAC 및 MBC를 통해서 룰들의 버킷의 다음 천크를 BPP 등에 전송할 것을 알리는 "측대역" 메시지를 전송하며 이러한 바가 계속된다.
룰들의 버킷의 최종 천크에 대해서, LUE (650) 은 이 천크가 BPP에 의해서 처리될 마지막 천크임을 알리는 "측대역" 메시지를 상기 BPP에 전송한다. LUE는 전체 버킷의 크기를 알고 있기 때문에 그 천크가 마지막 천크임을 알고 있다. 최종 천크의 경우에, BPP가 매칭을 발견하지 못하였으면, BPP는 이 버킷 처리가 완료되었음을 알리는 "매칭 없음" 응답을 LUF에 전송한다. 이어서, LUE (650) 는 이 컨텍스트 (즉, 수행된 작업의 세부 사항들) 로부터 분리되어서 다른 요청으로 진행한다.
다른 실시예들에서, 다수의 클러스터들이 동일한 RCDS (rule complied data structure) 또는 서브-RCDS를 포함하도록 구성될 수 있다. 이러한 구성에서, LUF는 가장 분주하지 않는 클러스터가 이 탐색을 수행하도록 선택함으로서 해당 작업의 부하의 균형을 유지한다.
도 7은 메모리 구조 내로 룰들을 로딩하는 컴파일러의 예시적인 실시예를 나타내는 블록도 (700) 이다. 소프트웨어 컴파일러 (704) 는 룰 세트 (702) 를 수신한다. 소프트웨어 컴파일러 (704) 는 컴파일링된 룰들 (710) 의 바이너리 포맷 (binary format) 을 생성한다. 이 컴파일링된 룰들 (710) 의 바이너리 포맷 (binary format) 은 트리 (712), 버킷들 (714) 및 룰들 (716) 을 포함한다. 트리 (712) 는 노드들 (711a 내지 711d), 리프 노드들 (713s 내지 713b) 및 루트 노드 (732) 를 포함한다. 트리 (712) 의 리프 노드들 (713s 내지 713b) 각각은 버킷들 (714) 의 세트 중 일 버킷을 가리킨다. 각 버킷 내에서, 룰 또는 천크 포인터들 (718) 을 포함하는 버킷 엔트리들이 존재한다. 룰들 (716) 은 룰들의 천크들 (720) 을 포함한다. (룰들의) 천크 (720) 는 룰들의 순차적 그룹 또는 메모리 전체에 걸쳐서 산포되어서 복수의 포인터에 의해서 구성되거나 (예를 들어서, 해시 함수를 사용하여서) 상기 산포된 천크 (720) 를 재조합함으로써 구성되는 룰들의 그룹일 수 있다.
도 8은 탐색 블록 또는 탐색 클러스터 (410) 의 예시적인 실시예를 예시하는 블록도 (500) 이다. 탐색 클러스터 (410) 는 온 칩 메모리 (OCM) (508), 트리 워킹 엔진 (TWE) (504), 버킷 워킹 엔진 (BWE) (514) 및 복수의 룰 매칭 엔진 (RME) (520a 내지 520c) 를 포함한다. OCM (508) 은 트리 데이터 구조, 버킷 저장 데이터 구조, 및 천크 및/또는 룰 데이터 구조를 저장한다.
탐색 클러스터 (410) 는 LUF (408) (도 4a) 로부터 키 (502) 를 TWE (504) 에서 수신한다. TWE (504) 는 OCM (508) 로의 복수의 트리 입출력 (I/O) 액세스를 발행 및 수신할 수 있다. 키 (502) 에 기초하여서, TWE (504) 는 루트 노드에서 가능한 리프 노드까지 트리를 워킹한다. TWE (504) 가 적합한 리프 도드를 발견하지 못하였으면, TWE (504) 는 무매칭 (매칭 없음) (512) 을 발행한다. TWE (504) 가 적합한 리프 도드를 발견하였으면, 이 피드 노드는 버킷을 향하는 포인터 (510) 를 표시한다. TWE (504) 는 이 버킷을 향하는 포인터 (510) 를 BWE (514) 에 제공한다. OCM (508) 으로의 버킷 입출력 액세스 (516) 를 발행함으로써 BWE (514) 는 OCM (508) 를 액세스한다. 버킷 입출력 액세스 (516) 는 BWE (514) 로의 천크를 향하는 적어도 하나의 포인터 (518) 를 검색한다. BWE (514) 는 이 천크를 향하는 포인터 (518) 를 다수의 RME (520a 내지 520c) 중 하나에 제공한다. 다수의 RME (520a 내지 520c) 중 선택된 하나는 이 키 (502) 를 수신한다. 다수의 RME (520a 내지 520c) 각각은 OCM 내의 천크로부터 적합한 룰을 다운로드하여서 키 (502) 를 분석하기 위해서 천크를 향하는 포인터 (518) 를 사용하여서 OCM (508) 로의 룰 및/또는 천크 입출력 액세스 (524) 를 발행하도록 구성된다. 이어서, RME (520a 내지 520c) 는 OCM (508) 으로부터 액세스된 룰들을 사용하여서 키를 분석하고 OCM (508) 내에 저장된 트리 및 버킷에 의해서 표시된 룰 또는 천크와 상기 키가 매칭하는지의 여부에 따라서 매칭이 있다는 응답 또는 매칭이 없다는 응답 (522a 내지 522c) 를 발행한다.
도 9a는 패킷 내의 소정의 키에 대하여 룰들을 로딩하는데 사용된 메모리 구조의 예시적인 실례를 나타내는 블록도 (730) 이다. TEW (예를 들어서, 도 6의 TWE (660)) 가 특정 키에 대한 트리 (712) 를 워킹하기 시작하는데, 이 트리의 루트 노드 (732) 에서 시작하여서 트리 경로 (734) 를 따라서 워킹한다. TWE는 자신이 수신한 각 키에 대하여 트리 경로 (734) 를 워킹하여서 트리 (712) 를 통과한다. 결국, 트리 경로 (734) 는 리프 노드 (736) 에 도달하며, 이 리프 노드는 널 (null) 또는 무매칭 (nonmatch) 을 포함할 수 있으며, 이러한 경우에는, TWE는 무매칭을 응답으로 보낸다. 또한 리프 노드는 버킷 (738) 을 향하는 포인터를 포함할 수 있으며, 이 경우에는 TWE는 버킷 (738) 을 향하는 포인터를 BWE에 전송하며, 이 BWE는 버킷들의 세트 (714) 로부터 특정 버킷을 로딩한다. 이 특정 버킷은 룰들 또는 룰들의 천크를 향하는 적어도 하나의 포인터 (718) 를 포함할 수 있다. BWE는 룰 (746) 를 향하는 포인터 (718) 에 기초하여서 룰들을 OCM으로부터 탐색 클러스터 내의 RME들 중 하나로 로딩한다.
도 9b는 키를 수신하고 메모리 구조로부터 룰들의 세트를 로딩하는 TWE에 의해서 채용되는 메모리 구조의 예시적인 실시예를 나타내는 도면 (740) 이며, 여기서 룰들은 온 칩 메모리 내에 저장되기 보다는 외부 메모리에 저장된다. 다시 한번, TWE는 키를 수신하고 루프 노드 (732) 에서 시작하여서 리프 노드 (736) 에 도달할 때까지 트리 경로 (734) 를 따라서 트리 (712) 를 워킹하며, 상기 리프 노드는 널 값 (null value) 을 가질 수 있는데 이 경우에는 TWE는 무매칭을 응답으로 보내며, 또한 리프 노드는 룰들로의 포인터들 (742) 을 저장할 수 있다. 이 외부 메모리 실시예에서, 리프 노드 (736) 가 외부 메모리 내의 룰들 및/또는 천크들 (746) 을 바로 가리킬 수 있다. 룰들이 OCM 내에 저장된 경우에는, 리프 노드 (736) 는 버킷들을 가리킬 수 있으며 이어서 버킷들이 룰 및/또는 천크를 가리킨다. 그러나, 룰들이 외부 메모리 내에 저장되면, TWE는 룰들을 향하는 포인터 (742) 에 기초하여서 외부 메모리로부터 룰들을 로딩하여서 이 룰들 (746) 을 BPP (bucket post processor) 로 전송한다. BPP가 채용되어서 외부 메모리로부터의 룰들 (746) 을 처리한다. 동일한 트리 구조가 외부 메모리 내의 버킷 또는 룰을 가리킬 수 있다. 예를 들어서, 각 리프 노드 (736) 는 메모리 내의 어드레스 (또는 널) 를 가리킬 수 있다. 시스템은 어드레스가 외부 메모리 내의 룰을 가리키는지 아니면 OCM 내의 버킷을 가리키는지의 여부를 판정할 수 있다. 이러한 판정 결과에 기초하여서, 시스템은 적합한 메모리를 액세스하며 동일한 트리가 외부 메모리 및 OCM 양자에 대해서 일 실시예에서 동시에 사용될 수 있다. 그러나, 탐색 프로세서는 오직 외부 메모리 실시예만을 사용하거나 오직 OCM 실시예만을 사용하도록 구성될 수도 있다.
도 10a는 탐색 프로세서에 의해서 채용되는 예시적인 프로세스를 설명하는 흐름도 (600) 이다. 먼저, 탐색 프로세서는 수신된 패킷의 헤더 구역으로부터 키를 수신한다 (602). 이어서, 탐색 프로세서는 TWE를 사용하여서 트리 데이터 구조를 워킹하여서 트리의 리프 노드 상의 룰 또는 버킷을 향하는 포인터를 찾는다 (604). 루프 노드가 존재하지 않거나 널 상태에 있으면 이 수신된 키에 대해서 무매칭이 자동적으로 생성된다.
이어서, 탐색 프로세서의 탐색 클러스터가 널 상태가 아닌 리프 노드를 탐색함으로써 룰 또는 버킷이 트리 내에 존재하는지의 여부를 판정한다 (606). 가령, 그렇지 않으면, 즉 루프 노드가 존재하지 않거나 널 상태에 있으면 탐색 클러스터는 무매칭을 응답으로 보낸다 (608). 리프 노드가 룰 또는 버킷을 저장하면, 탐색 클러스터는 리프 노드가 룰을 가리키는지 버킷을 가리키는지를 판정한다 (610). 리프 노드가 룰을 바로 가리키면, 탐색 클러스터는 이 룰을 외부 메모리로부터 로딩한다 (612). 이어서, 시스템은 이 룰을 BPP에 제공한다 (614). 시스템은 (i) BPP가 리프 노드로부터의 포인터를 사용하여서 외부 메모리로부터 룰을 가져오거나 (pulling) (ii) 탐색 클러스터 내의 네비게이션 유닛이 요청된 메모리 어드레스를 BPP에 전송하라는 명령을 외부 메모리에 전송함으로써, 룰을 BPP에 제공할 수 있다.
BPP는 룰들의 천크를 처리하고 룰들을 키와 비교하도록 구성된 RME와 유사하지만 BPP는 외부 메모리로부터의 룰들을 처리하도록 더 구성된다. 외부 메모리로부터 룰들을 로딩하는 동작들 (610,612,614) 은 탐색 프로세서 및 이에 대응하는 탐색 클러스터들에 대해서 선택 사양적인 동작이다. 탐색 프로세서는 모든 룰들 및/또는 룰들의 천크를 OCM 상에 저장할 수 있다. 따라서, 트리 데이터 구조는 바로 룰들을 향하는 포인터 대신에 버킷을 향하는 포인터를 저장할 수 있다. 룰들 및/또는 룰들의 천크들이 오직 OCM에만 저장된 실시예들에서도, 리프 노드는 버킷을 사용하지 않고서 OCM 내의 룰들 및/또는 룰들의 천크를 직접적으로 바로 가리킬 수 있다.
동작 (610)에서 리프 노드가 버킷을 가리키면 탐색 프로세서는 버킷 내에 저장된 포인터들을 로딩한다 (616). 이어서, 탐색 프로세서는 버킷으로부터의 포인터들이 가리키고 있는 OCM의 위치에 저장된 룰들을 로딩한다. 이어서, 시스템은 이 룰(들)을 RME들 (620) 에 제공한다.
도 10b는 BPP가 룰들의 세트를 사용하여서 키에 대한 탐색을 수행하기 위한 예시적인 프로세스를 설명하는 흐름도 (800) 이다. 먼저, 패킷 프로세싱 엔진이 BPP에 키 (802) 를 전송한다. BWE들은 외부 메모리 (EM) 으로부터 룰을 수신할 것을 예상하라는 메시지를 BPP에 전송한다 (804). 이어서, BWE는 룰 또는 룰들의 블록을 BPP에 전송한다 (806). 이어서, BPP는 보다 많은 룰들이 처리될 필요가 있는지의 여부를 판정한다 (808). 어떠한 추가 룰도 처리될 필요가 없으면, BPP은 처리된 룰들의 매칭 또는 무매칭을 응답으로 보낸다 (810). 추가 룰들이 처리될 필요가 있다면, 가령, 천크의 오직 일부가 처리되다면, BPP는 규칙들의 다음 블록들을 요청한다 (812). 이어서, BWE는 BPP로 전송될 규칙들의 다음 블록들을 요청한다 (814). 이어서, BWE는 규칙들의 다음 블록을 BPP에 전송한다 (816). 다시 한번, BPP는 보다 많은 룰들이 처리될 필요가 있는지의 여부를 판정한다 (808). 그렇지 않으면, BPP은 처리된 룰들의 매칭 또는 무매칭을 응답으로 보낸다 (810). 그러나, 추가 룰들이 처리될 필요가 있다면, BPP는 규칙들의 다음 블록들을 요청한다 (812).
예시적인 실시예에서, 각 클러스터에서, HW-지원 엔진 풀이 사용되어서 키 요청들을 처리한다. 키 요청 (또는 HW 쓰레드) 는 클러스터 중 하나에 디스파치되고 (dispatched) HW-지원 쓰레드 엔진에 할당된다. 고유 HW-지원 쓰레드 엔진 상에서 실행되는 각 HW 쓰레드는 다음 중 하나를 실행할 수 있다:
a) (최소 레이턴시 동안에) 그 자신의 로컬 OCM으로의 로컬 OCM 액세스를 할 수 있다;
b) 크로스바 (XBR) 를 통한 (그의 수퍼클러스터 내의) 다른 클러스터의 OCM으로의 원격 OCM 액세스를 할 수 있다:
몇몇 경우에, 클러스터 [x] 상의 HW 쓰레드는 동일한 수퍼클러스터 내의 클러스터 [y] 상의 OCM 데이터를 원격으로 액세스할 것을 선택할 수 있다. 이로써, 클러스터들 간에 보다 큰 RCDS (룰 컴파일링된 데이터 구조) 이미지들을 분할할 수 있는 유연성을 소프트웨어에 부여될 수 있다; 및
c) (소프트웨어 SW 제어 하에서) HW 쓰레드를 자신의 8 웨이 (way) 수퍼클러스터 내의 임의의 다른 클러스터 (LUE) 로 이동시킬 수 있다:
예시적인 실시예에 따라서, 이러한 HW 이동 기술은 HW 쓰레드가 자신의 쓰레드 컨텍스트를 OCM 데이터 액세스가 로컬인 상이한 클러스터로 이동시킬 수 있다. 다른 경우에, 클러스터 [x] 상의 HW 쓰레드 (예를 들어서, TWE/BWE) 는 동일한 수퍼클러스터 내의 다른 클러스터 [y] 로 자신의 HW 쓰레드 상태 (트리 또는 버킷) 를 이동시키는 것을 선택할 수 있으며, 이로써 클러스터 [y] 상에 저장된 로컬 OCM 데이터를 액세스할 수 있다. 이로써, HW 쓰레드는 로컬 OCM 데이터로 이동하며 이로써 전체적인 성능이 증가된다. 또한, 소프트웨어 SW는 전체적인 작업부하를 분산시키고 HW 클러스터 및 쓰레드 병렬성을 활용하기 위해서 클러스터 그룹들을 SW 파이프라인 그룹으로 구축하는 것을 선택할 수 있다.
편리한 실시예에 따라서, OCM (칩 온 메모리) 는 최저 면적 오버헤드 (및 단위 면적당 최적 성능) 를 위해서 다수의 단일-포트된 (ported) SRAM을 사용하여서 구축된다. 클러스터 병렬성을 활용하기 위해서, OCM은 클러스터들 간에서 더 분산될 수 있다. 각 클러스터는 OCM의 일부 또는 "OCM 파티션" 및 단일-포트된 SRAM을 판독 (또는 기록) 할 수 있는 'n' HW-지원 쓰레드 엔진을 포함한다. 이렇게 함으로써, 다수의 클러스터들 각각이 그들의 로컬 OCM 파티션을 병렬로 액세스할 수 있으며 이로써 단위 면적당 최상의 전체적 성능을 산출할 수 있다. 룩업 쓰레드가 OCM 파티션 (즉, 단일 클러스터) 보다 많은 어드레스 공간을 요구하는 경우에, HW가 크로스바를 통한 원격 OCM 액세스를 지원하거나 HW 쓰레드 이동 (또는 작업 이동 (work migration)) 을 지원하며, 이 HW 쓰레드 이동에서는 (하나 이상의 관련 응용 상황에서 세부적으로 기술된 바와 같이) HW 쓰레드가 처리될 데이터가 위치하는 상이한 클러스터로 이동될 수 있다.
본 발명의 실시예들에 따라서, 룩업 엔진 (LUE) 은 다른 노드들의 네트워크 내의, 스위치 또는 라우터와 같은 물리적 네트워크 노드 (또는 디바이스) 일 수 있다. LUE는 이 노드의 구성 요소, 모듈, 블레이드 또는 카드와 같은 물리적 네트워크 노드 (또는 디바이스) 의 일부일 수 있다.
본 발명의 다른 실시예들에 따라서, LUE는 (도 11을 참조하여서 이하에서 보다 상세하게 기술될 바와 같은) 프로세서, 메모리, 통신 인터페이스 등을 갖는 범용 컴퓨터이다. 이 범용 컴퓨터는 예를 들어서 이 컴퓨터로 하여금 최적의 매칭 결과를 판정하고 호스트로 이를 응답으로 보내도록 호스트로부터 수신된 룩업 요청을 처리하게 하는 인스트럭션들을 프로세서 내로 로딩함으로써 LUF 및 그의 구성 요소로 변환된다.
도 11은 본 발명의 다양한 실시예들이 구현될 수 있는 컴퓨터 (500) 의 내부 구조의 블록도이다. 이 컴퓨터 (500) 는 시스템 버스 (579) 를 포함하고, 이 버스는 컴퓨터 또는 프로세싱 시스템의 구성 요소들 간에서의 데이터 전달을 위해서 사용되는 하드웨어 라인들의 세트이다. 버스 (579) 는 본질적으로 컴퓨터 시스템의 상이한 요소들 (예를 들어서, 프로세서, 데이터 저장부, 메모리, 입출력 포트들, 네트워크 포트들 등) 을 상호 접속시켜서 이러한 요소들 간에 정보가 전달될 수 있게 하는 공유형 콘듀트 (conduit) 이다. 이 시스템 버스 (579) 에 다양한 입력 및 출력 장치들 (예를 들어서, 키보드, 마우스, 디스플레이, 프린터, 스피커 등) 을 컴퓨터 (500) 에 연결시키기 위한 입출력 장치 인터페이스 (582) 가 부착된다. 네트워크 인터페이스 (586) 는 컴퓨터 (500) 가 네트워크에 부착된 다양한 다른 장치들에 연결되게 한다. 메모리 (590) 는 (도 8의 절차와 같은) 본 발명의 실시예를 구현하는데 사용되는 컴퓨터 소프트웨어 인스트럭션 (592) 및 데이터 (594) 를 휘발성으로 저장한다. 디스크 저장 장치 (595) 는 본 발명의 실시예를 구현하는데 사용되는 컴퓨터 소프트웨어 인스트럭션 (592) 및 데이터 (594) 를 비휘발성으로 저장한다. 중앙 프로세서 유닛 (CPU) (584) 이 시스템 버스 (579) 에 부착되어서 컴퓨터 인스트럭션들을 실행시킨다.
일 실시예에서, 프로세서 루틴 (592) 및 데이터 (594) 는 본 발명의 실시예들을 위한 소프트웨어 인스트럭션들의 적어도 일부를 제공하는 (예를 들어서, 하나 이상의 DVD-ROM, CD-ROM, 디스켓, 테이프, 등과 같은 분리 가능한 저장 매체와 같은) 컴퓨터 판독 가능한 매체를 포함하는 컴퓨터 프로그램 제품 (일반적으로 참조 부호 (592)) 이다. 컴퓨터 프로그램 제품 (592) 은 본 기술 분야에서 잘 알려진 바와 같은 임의의 적합한 소프트웨어 설치 절차에 의해서 설치될 수 있다. 다른 실시예들에서, 소프트웨어 인스트럭션들의 적어도 일부분은 또한 케이블, 통신 및/또는 무선 접속을 통해서 다운로드될 수 있다.
또한, 본 발명의 실시예들은 다양한 컴퓨터 아키텍처들로 구현될 수 있다. 도 11의 범용 컴퓨터는 본 발명의 임의의 실시예들을 예시적이면서 비한정적으로 설명하기 위한 것이다.
본 발명은 본 발명의 예시적인 실시예들을 참조하여서 특정하게 도시 및 기술되었지만, 형태 및 세부 사항에 있어서 다양한 변경이 첨부된 청구 범위에 의해서 포함되는 본 발명의 범위를 벗어나지 않으면서 이루어질 수 있음을 본 기술 분야의 당업자는 이해할 것이다.
실시예들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 또한, 실시예들은 하나 이상의 프로세서에 의해서 판독 및 실행될 수 있는 비일시적 머신 판독 가능한 매체 상에 저장된 인스트럭션들로서 구현될 수 있다. 비일시적 머신 판독 가능한 매체는 머신 (예를 들어서, 컴퓨팅 디바이스) 에 의해서 판독가능한 형태로 정보를 전송 또는 저장하기 위한 임의의 메카니즘을 포함할 수 있다. 예를 들어서, 비일시적 머신 판독 가능한 매체는 ROM, RAM, 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 장치 등을 포함할 수 있다. 또한, 펌웨어, 소프트웨어, 루틴 또는 인스트럭션들이 본 명세서에서 소정의 동작들을 수행하는 것으로서 기술될 수 있다. 그러나, 이러한 설명들은 단지 편이성을 위한 것일 뿐이며 실제로 이러한 동작들은 컴퓨팅 디바이스, 프로세서, 제어기, 또는 펌웨어, 소프트웨어, 루틴, 인스트럭션들 등을 실행하는 다른 장치들로부터 이루어질 수 있다.
블록도 및 흐름도 (예를 들어서, 도 6) 는 보다 많은 또는 많은 적은 수의 요소들을 포함하거나 상이하게 구성되거나 상이하게 표현될 수 있다. 구현이 본 발명의 실시예들의 실행을 예시하는 블록도 및 흐름도 및 이들의 수를 지정할 수 있다.
Claims (26)
- 패킷을 처리하기 위한 장치에 의해 수행되는 패킷 처리 방법으로서,
키 (key) 및 테이블 식별자 (TID) 를 포함하는 키 요청을 수신하는 단계로서, 상기 키는 패킷으로부터 추출된 데이터를 포함하는, 상기 키 요청을 수신하는 단계;
적어도 하나의 필드를 추출하기 위해서 상기 키를 파싱 (parsing) 하는 단계;
상기 테이블 식별자에 의해서 표시된 트리 액세스 테이블 (tree access table) 내의 적어도 하나의 엔트리를 선택하는 단계로서, 상기 엔트리는 메모리 내에 저장된 룰들 (rules) 의 세트로의 경로의 시작 어드레스를 제공하는, 상기 엔트리를 선택하는 단계;
적어도 하나의 버킷 (bucket) 을 결정하도록 상기 적어도 하나의 필드에 기초하여서 상기 엔트리를 처리하는 단계로서, 상기 적어도 하나의 버킷은 상기 룰들의 세트의 일부인 룰들의 서브세트 (subset) 를 향하는 포인터들 (pointers) 을 포함하는, 상기 엔트리를 처리하는 단계;
상기 메모리로부터 상기 룰들의 서브세트를 검색하는 단계;
상기 적어도 하나의 필드를 상기 룰들의 서브세트에 대하여 적용하는 단계; 및
상기 적어도 하나의 필드가 상기 룰들의 서브세트 중 적어도 하나의 룰과 매칭 (matching) 하는지의 여부를 표시하는 응답 신호를 출력하는 단계를 포함하는,
패킷 처리 방법.
- 제 1 항에 있어서,
상기 키 요청은 키 포맷 테이블 인덱스 (key format table index) 를 포함하는,
패킷 처리 방법.
- 제 2 항에 있어서,
상기 키를 파싱하는 단계는 상기 키 포맷 데이블 인덱스에 기초하는,
패킷 처리 방법.
- 제 1 항에 있어서,
상기 룰들의 세트는 상기 메모리 내에 저장된 룰들의 일부인,
패킷 처리 방법.
- 제 1 항에 있어서,
상기 적어도 하나의 버킷은 복수의 버킷을 포함하는,
패킷 처리 방법.
- 제 5 항에 있어서,
상기 엔트리는 상기 복수의 버킷과 연관된 노드 (node) 를 포함하는,
패킷 처리 방법.
- 제 6 항에 있어서,
상기 엔트리를 처리하는 단계는 상기 복수의 버킷을 결정하도록 상기 노드를 처리하는 단계를 포함하는,
패킷 처리 방법.
- 제 6 항에 있어서,
상기 노드는 적어도 하나의 중계 (intermediary) 노드를 통해서 상기 복수의 버킷과 연관되는,
패킷 처리 방법.
- 제 1 항에 있어서,
상기 룰들의 서브세트는 우선 순위 (priority) 로 배열되는,
패킷 처리 방법.
- 제 9 항에 있어서,
상기 적어도 하나의 필드는 상기 룰들의 세트에 대해서 우선 순위가 내려가는 순서로 적용되는,
패킷 처리 방법.
- 제 10 항에 있어서,
상기 적어도 하나의 필드와 상기 룰들의 서브세트 간의 최초 매칭 (first matching) 이 발견된 (located) 후에 상기 응답 신호가 출력되는,
패킷 처리 방법.
- 제 11 항에 있어서,
상기 적어도 하나의 필드를 상기 룰들의 서브세트에 대하여 적용하는 단계는 상기 최초 매칭이 발견된 후에 정지되는,
패킷 처리 방법.
- 제 1 항에 있어서,
상기 테이블 식별자에 의해서 표시된 트리 액세스 테이블 내의 적어도 하나의 엔트리를 선택하는 단계는 복수의 엔트리를 선택하는 단계를 포함하는,
패킷 처리 방법.
- 제 13 항에 있어서,
미리 결정된 우선 순위에 기초하여서 복수의 매칭 결과 중에서 선택하는 단계를 더 포함하며,
각 매칭 결과는 상기 복수의 엔트리들 중 하나에 대응하는,
패킷 처리 방법.
- 패킷 처리 장치로서,
트리 워킹 엔진 (TWE:tree walk engine);
버킷 워킹 엔진 (BWE:bucket walk engine); 및
룰 매칭 엔진 (RME:rule matching engine) 을 포함하며,
상기 트리 워킹 엔진은,
패킷으로부터 추출된 데이터를 포함하는 키 및 테이블 식별자 (TID) 를 포함하는 키 요청을 수신하고,
적어도 하나의 필드를 추출하기 위해서 상기 키를 파싱하며,
상기 테이블 식별자에 의해서 표시된 트리 액세스 테이블 내의 적어도 하나의 엔트리-상기 엔트리는 메모리 내에 저장된 룰들의 세트의 시작 어드레스를 제공함-를 선택하고,
적어도 하나의 버킷-상기 적어도 하나의 버킷은 상기 룰들의 세트의 일부인 룰들의 서브세트를 향하는 포인터들을 포함함-을 결정하도록 상기 적어도 하나의 필드에 기초하여서 상기 엔트리를 처리하도록 구성되며,
상기 버킷 워킹 엔진은 상기 메모리로부터 상기 룰들의 서브세트를 검색하도록 구성되며,
상기 룰 매칭 엔진은 상기 적어도 하나의 필드를 상기 룰들의 서브세트에 대하여 적용하고 상기 적어도 하나의 필드가 상기 룰들의 서브세트 중 적어도 하나의 룰과 매칭하는지의 여부를 표시하는 응답 신호를 출력하도록 구성되는,
패킷 처리 장치.
- 제 15 항에 있어서,
상기 키 요청은 키 포맷 테이블 인덱스를 포함하는,
패킷 처리 장치.
- 제 16 항에 있어서,
상기 키를 파싱하는 것은 상기 키 포맷 데이블 인덱스에 기초하는,
패킷 처리 장치.
- 제 15 항에 있어서,
상기 룰들의 세트는 상기 메모리 내에 저장된 룰들의 부분인,
패킷 처리 장치.
- 제 15 항에 있어서,
상기 적어도 하나의 버킷은 복수의 버킷을 포함하는,
패킷 처리 장치.
- 제 19 항에 있어서,
상기 엔트리는 상기 복수의 버킷과 연관된 노드를 포함하는,
패킷 처리 장치.
- 제 20 항에 있어서,
상기 엔트리를 처리하는 것은 상기 복수의 버킷을 결정하도록 상기 노드를 처리하는 동작을 포함하는,
패킷 처리 장치.
- 제 20 항에 있어서,
상기 노드는 적어도 하나의 중계 노드를 통해서 상기 복수의 버킷과 연관되는,
패킷 처리 장치.
- 제 15 항에 있어서,
상기 룰들의 서브세트는 우선 순위로 배열되는,
패킷 처리 장치.
- 제 23 항에 있어서,
상기 적어도 하나의 필드는 상기 룰들의 세트에 대해서 우선 순위가 내려가는 순서로 적용되는,
패킷 처리 장치.
- 제 24 항에 있어서,
상기 적어도 하나의 필드와 상기 룰들의 서브세트 간의 최초 매칭이 발견된 후에 상기 응답 신호가 출력되는,
패킷 처리 장치.
- 제 25 항에 있어서,
상기 적어도 하나의 필드를 상기 룰들의 서브세트에 대하여 적용하는 것은 상기 최초 매칭이 발견된 후에 정지되는,
패킷 처리 장치.
Applications Claiming Priority (23)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161514459P | 2011-08-02 | 2011-08-02 | |
US201161514450P | 2011-08-02 | 2011-08-02 | |
US201161514463P | 2011-08-02 | 2011-08-02 | |
US201161514438P | 2011-08-02 | 2011-08-02 | |
US201161514382P | 2011-08-02 | 2011-08-02 | |
US201161514379P | 2011-08-02 | 2011-08-02 | |
US201161514447P | 2011-08-02 | 2011-08-02 | |
US201161514407P | 2011-08-02 | 2011-08-02 | |
US201161514406P | 2011-08-02 | 2011-08-02 | |
US201161514344P | 2011-08-02 | 2011-08-02 | |
US201161514400P | 2011-08-02 | 2011-08-02 | |
US61/514,450 | 2011-08-02 | ||
US61/514,382 | 2011-08-02 | ||
US61/514,406 | 2011-08-02 | ||
US61/514,459 | 2011-08-02 | ||
US61/514,344 | 2011-08-02 | ||
US61/514,379 | 2011-08-02 | ||
US61/514,447 | 2011-08-02 | ||
US61/514,463 | 2011-08-02 | ||
US61/514,400 | 2011-08-02 | ||
US61/514,438 | 2011-08-02 | ||
US61/514,407 | 2011-08-02 | ||
PCT/US2012/049383 WO2013019981A1 (en) | 2011-08-02 | 2012-08-02 | Lookup cluster complex |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140053266A KR20140053266A (ko) | 2014-05-07 |
KR101476113B1 true KR101476113B1 (ko) | 2014-12-23 |
Family
ID=46642652
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147005633A KR101476113B1 (ko) | 2011-08-02 | 2012-08-02 | 룩업 클러스터 컴플렉스 |
KR1020147005800A KR101476114B1 (ko) | 2011-08-02 | 2012-08-02 | 룩업 프론트 엔드 입력 프로세서 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147005800A KR101476114B1 (ko) | 2011-08-02 | 2012-08-02 | 룩업 프론트 엔드 입력 프로세서 |
Country Status (5)
Country | Link |
---|---|
US (27) | US9596222B2 (ko) |
JP (1) | JP5657840B2 (ko) |
KR (2) | KR101476113B1 (ko) |
CN (2) | CN103858392B (ko) |
WO (5) | WO2013020001A1 (ko) |
Families Citing this family (163)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9596222B2 (en) | 2011-08-02 | 2017-03-14 | Cavium, Inc. | Method and apparatus encoding a rule for a lookup request in a processor |
US9208438B2 (en) | 2011-08-02 | 2015-12-08 | Cavium, Inc. | Duplication in decision trees |
US8923306B2 (en) | 2011-08-02 | 2014-12-30 | Cavium, Inc. | Phased bucket pre-fetch in a network processor |
US9183244B2 (en) | 2011-08-02 | 2015-11-10 | Cavium, Inc. | Rule modification in decision trees |
US10229139B2 (en) | 2011-08-02 | 2019-03-12 | Cavium, Llc | Incremental update heuristics |
US9159420B1 (en) * | 2011-08-16 | 2015-10-13 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for content addressable memory parallel lookup |
US20130135816A1 (en) * | 2011-11-17 | 2013-05-30 | Futurewei Technologies, Inc. | Method and Apparatus for Scalable Low Latency Solid State Drive Interface |
US9767058B2 (en) | 2011-11-17 | 2017-09-19 | Futurewei Technologies, Inc. | Method and apparatus for scalable low latency solid state drive interface |
US9049200B2 (en) * | 2012-07-27 | 2015-06-02 | Cisco Technology, Inc. | System and method for improving hardware utilization for a bidirectional access controls list in a low latency high-throughput network |
US9143449B2 (en) * | 2012-07-31 | 2015-09-22 | Cisco Technology, Inc. | Methods and apparatuses for improving database search performance |
US9100366B2 (en) * | 2012-09-13 | 2015-08-04 | Cisco Technology, Inc. | Early policy evaluation of multiphase attributes in high-performance firewalls |
US20140089619A1 (en) * | 2012-09-27 | 2014-03-27 | Infinera Corporation | Object replication framework for a distributed computing environment |
US9307059B2 (en) * | 2012-11-09 | 2016-04-05 | Sap Se | Retry mechanism for data loading from on-premise datasource to cloud |
US9185057B2 (en) * | 2012-12-05 | 2015-11-10 | The Intellisis Corporation | Smart memory |
US9536016B2 (en) * | 2013-01-16 | 2017-01-03 | Google Inc. | On-disk multimap |
US10021026B2 (en) * | 2013-01-31 | 2018-07-10 | Hewlett Packard Enterprise Development Lp | Incremental update of a shape graph |
US9424366B1 (en) * | 2013-02-11 | 2016-08-23 | Marvell International Ltd. | Reducing power consumption in ternary content addressable memory (TCAM) |
US9270704B2 (en) * | 2013-03-13 | 2016-02-23 | FireMon, LLC | Modeling network devices for behavior analysis |
US9578061B2 (en) | 2013-03-13 | 2017-02-21 | FireMon, LLC | System and method for modeling a networking device policy |
US10083200B2 (en) | 2013-03-14 | 2018-09-25 | Cavium, Inc. | Batch incremental update |
EP2972888B1 (en) * | 2013-03-14 | 2019-02-06 | Micron Technology, INC. | Memory systems and methods including training,data organizing,and/or shadowing |
US9865222B2 (en) * | 2013-03-15 | 2018-01-09 | Videri Inc. | Systems and methods for displaying, distributing, viewing, and controlling digital art and imaging |
US9195939B1 (en) | 2013-03-15 | 2015-11-24 | Cavium, Inc. | Scope in decision trees |
US9112767B2 (en) | 2013-03-15 | 2015-08-18 | Cavium, Inc. | Method and an accumulator scoreboard for out-of-order rule response handling |
US9430511B2 (en) * | 2013-03-15 | 2016-08-30 | Cavium, Inc. | Merging independent writes, separating dependent and independent writes, and error roll back |
US9276846B2 (en) | 2013-03-15 | 2016-03-01 | Cavium, Inc. | Packet extraction optimization in a network processor |
US9595003B1 (en) | 2013-03-15 | 2017-03-14 | Cavium, Inc. | Compiler with mask nodes |
US9531647B1 (en) | 2013-03-15 | 2016-12-27 | Cavium, Inc. | Multi-host processing |
US9130819B2 (en) * | 2013-03-15 | 2015-09-08 | Cavium, Inc. | Method and apparatus for scheduling rule matching in a processor |
KR20140131781A (ko) * | 2013-05-06 | 2014-11-14 | 삼성전자주식회사 | 메모리 제어 장치 및 방법 |
US10862731B1 (en) * | 2013-06-27 | 2020-12-08 | EMC IP Holding Company LLC | Utilizing demonstration data based on dynamically determining feature availability |
US9286217B2 (en) * | 2013-08-26 | 2016-03-15 | Qualcomm Incorporated | Systems and methods for memory utilization for object detection |
US9356818B2 (en) * | 2013-10-30 | 2016-05-31 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and computing device for packet classification |
US9674086B2 (en) * | 2013-11-05 | 2017-06-06 | Cisco Technology, Inc. | Work conserving schedular based on ranking |
US9620213B2 (en) | 2013-12-27 | 2017-04-11 | Cavium, Inc. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US9379963B2 (en) | 2013-12-30 | 2016-06-28 | Cavium, Inc. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US9275336B2 (en) * | 2013-12-31 | 2016-03-01 | Cavium, Inc. | Method and system for skipping over group(s) of rules based on skip group rule |
US9544402B2 (en) | 2013-12-31 | 2017-01-10 | Cavium, Inc. | Multi-rule approach to encoding a group of rules |
US9667446B2 (en) | 2014-01-08 | 2017-05-30 | Cavium, Inc. | Condition code approach for comparing rule and packet data that are provided in portions |
CN103763197B (zh) * | 2014-01-27 | 2017-04-12 | 杭州华三通信技术有限公司 | 一种流表项冲突检测装置和方法 |
CN104012053B (zh) | 2014-04-30 | 2017-01-25 | 华为技术有限公司 | 查找装置及方法 |
US9485257B2 (en) | 2014-05-22 | 2016-11-01 | International Business Machines Corporation | Atomically updating ternary content addressable memory-based access control lists |
US9749328B2 (en) | 2014-05-22 | 2017-08-29 | International Business Machines Corporation | Access control list-based port mirroring techniques |
US9497119B2 (en) * | 2014-05-22 | 2016-11-15 | International Business Machines Corporation | Supporting access control list rules that apply to TCP segments belonging to ‘established’ connection |
US9722931B2 (en) | 2014-06-05 | 2017-08-01 | International Business Machines Corporation | Unified framework for isolating multicast and broadcast frames to a traffic class separate from a traffic class used for unicast frames |
US9344373B2 (en) * | 2014-06-13 | 2016-05-17 | International Business Machines Corporation | Packet I/O support for a logical switch router architecture |
KR101535813B1 (ko) * | 2014-10-17 | 2015-07-10 | 한국과학기술정보연구원 | 복합 이벤트 처리를 위한 이벤트 구성 규칙의 동적 업데이트를 위한 시스템 및 방법 |
US10116564B2 (en) * | 2014-11-10 | 2018-10-30 | Cavium, Inc. | Hybrid wildcard match table |
US11943142B2 (en) | 2014-11-10 | 2024-03-26 | Marvell Asia Pte, LTD | Hybrid wildcard match table |
US11218410B2 (en) | 2014-11-10 | 2022-01-04 | Marvell Asia Pte, Ltd. | Hybrid wildcard match table |
US9485179B2 (en) * | 2014-11-13 | 2016-11-01 | Cavium, Inc. | Apparatus and method for scalable and flexible table search in a network switch |
US9692727B2 (en) | 2014-12-02 | 2017-06-27 | Nicira, Inc. | Context-aware distributed firewall |
US10061531B2 (en) | 2015-01-29 | 2018-08-28 | Knuedge Incorporated | Uniform system wide addressing for a computing system |
US9552327B2 (en) | 2015-01-29 | 2017-01-24 | Knuedge Incorporated | Memory controller for a network on a chip device |
KR102328071B1 (ko) * | 2015-02-04 | 2021-11-18 | 한국전자통신연구원 | 광전송망의 트래픽을 처리하는 방법 및 장치 |
JP6598188B2 (ja) * | 2015-02-27 | 2019-10-30 | 株式会社エヴリカ | 情報処理装置、方法およびプログラム |
US20170288968A1 (en) * | 2015-03-23 | 2017-10-05 | Hewlett Packard Enterprise Development Lp | Compiling network policies |
WO2016158732A1 (ja) * | 2015-03-27 | 2016-10-06 | 古河電気工業株式会社 | 電磁シールド管、電磁シールド構造 |
US20160321285A1 (en) * | 2015-05-02 | 2016-11-03 | Mohammad Faraz RASHID | Method for organizing and distributing data |
US20160335298A1 (en) | 2015-05-12 | 2016-11-17 | Extreme Networks, Inc. | Methods, systems, and non-transitory computer readable media for generating a tree structure with nodal comparison fields and cut values for rapid tree traversal and reduced numbers of full comparisons at leaf nodes |
US10075998B2 (en) * | 2015-05-14 | 2018-09-11 | Intel IP Corporation | Wireless device, method, and computer readable media for signaling a resource allocation in a high efficiency wireless local-area network |
US10115463B1 (en) * | 2015-06-25 | 2018-10-30 | Xilinx, Inc. | Verification of a RAM-based TCAM |
US20170017420A1 (en) | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Enabling High Read Rates To Data Element Lists |
US20170017414A1 (en) | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices |
US20170017567A1 (en) | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Implementing Distributed-Linked Lists For Network Devices |
US20170017419A1 (en) | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Enabling High Read Rates To Data Element Lists |
US10423330B2 (en) * | 2015-07-29 | 2019-09-24 | International Business Machines Corporation | Data collection in a multi-threaded processor |
US9984144B2 (en) | 2015-08-17 | 2018-05-29 | Mellanox Technologies Tlv Ltd. | Efficient lookup of TCAM-like rules in RAM |
US10496680B2 (en) | 2015-08-17 | 2019-12-03 | Mellanox Technologies Tlv Ltd. | High-performance bloom filter array |
US10049126B2 (en) | 2015-09-06 | 2018-08-14 | Mellanox Technologies Tlv Ltd. | Cuckoo hashing with selectable hash |
US10451094B2 (en) * | 2015-09-28 | 2019-10-22 | Kubota Corporation | Hydraulic system of work machine |
CN105426352A (zh) * | 2015-11-24 | 2016-03-23 | 国家电网公司 | 模板文档自动生成方法 |
US10554572B1 (en) * | 2016-02-19 | 2020-02-04 | Innovium, Inc. | Scalable ingress arbitration for merging control and payload |
US10027583B2 (en) | 2016-03-22 | 2018-07-17 | Knuedge Incorporated | Chained packet sequences in a network on a chip architecture |
US9892057B2 (en) | 2016-03-31 | 2018-02-13 | Mellanox Technologies Tlv Ltd. | Single double cuckoo hash |
US10346049B2 (en) | 2016-04-29 | 2019-07-09 | Friday Harbor Llc | Distributed contiguous reads in a network on a chip architecture |
CN106209626B (zh) * | 2016-07-26 | 2019-12-06 | 新华三技术有限公司 | 自适应下发路由方法以及装置 |
US10965693B2 (en) * | 2016-07-31 | 2021-03-30 | Fenror7 Ltd | Method and system for detecting movement of malware and other potential threats |
US10068034B2 (en) | 2016-09-07 | 2018-09-04 | Mellanox Technologies Tlv Ltd. | Efficient matching of TCAM rules using hash tables in RAM |
US10204060B2 (en) | 2016-09-13 | 2019-02-12 | International Business Machines Corporation | Determining memory access categories to use to assign tasks to processor cores to execute |
US10169248B2 (en) | 2016-09-13 | 2019-01-01 | International Business Machines Corporation | Determining cores to assign to cache hostile tasks |
US10209900B2 (en) * | 2016-09-19 | 2019-02-19 | Fungible, Inc. | Buffer allocation and memory management using mapping table |
US10303375B2 (en) | 2016-09-19 | 2019-05-28 | Fungible, Inc. | Buffer allocation and memory management |
US10454786B2 (en) * | 2016-09-26 | 2019-10-22 | Amazon Technologies, Inc. | Multi-party updates to distributed systems |
US10489424B2 (en) | 2016-09-26 | 2019-11-26 | Amazon Technologies, Inc. | Different hierarchies of resource data objects for managing system resources |
US10193862B2 (en) | 2016-11-29 | 2019-01-29 | Vmware, Inc. | Security policy analysis based on detecting new network port connections |
US10341242B2 (en) * | 2016-12-13 | 2019-07-02 | Oracle International Corporation | System and method for providing a programmable packet classification framework for use in a network device |
US10404594B2 (en) | 2016-12-13 | 2019-09-03 | Oracle International Corporation | System and method for providing partitions of classification resources in a network device |
CN106844041B (zh) * | 2016-12-29 | 2020-06-16 | 华为技术有限公司 | 内存管理的方法及内存管理系统 |
US10084855B2 (en) * | 2017-01-23 | 2018-09-25 | Akamai Technologies, Inc. | Pixel-based load balancing |
US10257090B2 (en) * | 2017-02-21 | 2019-04-09 | Futurewei Technologies, Inc. | Packet classification using multi-dimensional splitting |
US10491521B2 (en) | 2017-03-26 | 2019-11-26 | Mellanox Technologies Tlv Ltd. | Field checking based caching of ACL lookups to ease ACL lookup search |
WO2018183526A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking, full-mesh data center network having optical permutors |
WO2018183542A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
WO2018183553A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups |
US10565112B2 (en) | 2017-04-10 | 2020-02-18 | Fungible, Inc. | Relay consistent memory management in a multiple processor system |
US10885118B2 (en) * | 2017-05-12 | 2021-01-05 | Futurewei Technologies, Inc. | Incremental graph computations for querying large graphs |
US10713089B2 (en) * | 2017-05-20 | 2020-07-14 | Cavium International | Method and apparatus for load balancing of jobs scheduled for processing |
EP3625679A1 (en) | 2017-07-10 | 2020-03-25 | Fungible, Inc. | Data processing unit for stream processing |
US10659254B2 (en) | 2017-07-10 | 2020-05-19 | Fungible, Inc. | Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric |
US10476794B2 (en) | 2017-07-30 | 2019-11-12 | Mellanox Technologies Tlv Ltd. | Efficient caching of TCAM rules in RAM |
CN107450495B (zh) * | 2017-08-25 | 2019-10-29 | 艾普工华科技(武汉)有限公司 | 一种基于消息规则引擎的柔性在制品管理业务模型系统 |
CN108632235B (zh) | 2017-08-31 | 2020-07-07 | 新华三技术有限公司 | 一种网包分类决策树建立方法及装置 |
CN107797973A (zh) * | 2017-09-27 | 2018-03-13 | 西安交通大学 | 一种面向硬件实现的gbdt分类模型压缩方法 |
WO2019068017A1 (en) | 2017-09-29 | 2019-04-04 | Fungible, Inc. | RESILIENT NETWORK COMMUNICATION USING SELECTIVE PULVER FLOW SPRAY BY MULTIPATH PATH |
US10904367B2 (en) | 2017-09-29 | 2021-01-26 | Fungible, Inc. | Network access node virtual fabrics configured dynamically over an underlay network |
WO2019104090A1 (en) | 2017-11-21 | 2019-05-31 | Fungible, Inc. | Work unit stack data structures in multiple core processor system for stream data processing |
WO2019152063A1 (en) | 2018-02-02 | 2019-08-08 | Fungible, Inc. | Efficient work unit processing in a multicore system |
US10791092B2 (en) * | 2018-02-14 | 2020-09-29 | Nicira, Inc. | Firewall rules with expression matching |
WO2019178264A1 (en) | 2018-03-14 | 2019-09-19 | Fungible, Inc. | Flexible processing of network packets |
TWI664527B (zh) * | 2018-03-20 | 2019-07-01 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行初始化之方法、記憶裝置及其控制器以及電子裝置 |
CN108595370A (zh) * | 2018-03-30 | 2018-09-28 | 新华三信息安全技术有限公司 | 一种多核处理器及报文处理方法 |
US11876684B1 (en) * | 2018-05-22 | 2024-01-16 | Amazon Technologies, Inc. | Controlled cross-cell migration of data in cell-based distributed computing architecture |
WO2019237029A1 (en) | 2018-06-08 | 2019-12-12 | Fungible, Inc. | Directed graph traversal using content-addressable memory |
CN108984618B (zh) * | 2018-06-13 | 2021-02-02 | 深圳市商汤科技有限公司 | 数据处理方法和装置、电子设备和计算机可读存储介质 |
CN111819552B (zh) * | 2018-06-20 | 2024-08-02 | 华为技术有限公司 | 访问控制列表的管理方法及装置 |
US10798200B2 (en) * | 2018-06-22 | 2020-10-06 | Vmware, Inc. | Payload matching via single pass transformation of HTTP payload |
US11483313B2 (en) * | 2018-06-28 | 2022-10-25 | Intel Corporation | Technologies for updating an access control list table without causing disruption |
US10581759B1 (en) | 2018-07-12 | 2020-03-03 | Innovium, Inc. | Sharing packet processing resources |
CN108959636B (zh) * | 2018-07-25 | 2020-11-03 | 京东数字科技控股有限公司 | 数据处理方法、装置、系统、计算机可读介质 |
US11327974B2 (en) | 2018-08-02 | 2022-05-10 | Mellanox Technologies, Ltd. | Field variability based TCAM splitting |
CN109032952B (zh) * | 2018-08-09 | 2021-11-23 | 中国建设银行股份有限公司 | 一种基于规则的智能外呼服务模拟方法及系统 |
US11003715B2 (en) | 2018-09-17 | 2021-05-11 | Mellanox Technologies, Ltd. | Equipment and method for hash table resizing |
FR3086825A1 (fr) * | 2018-09-28 | 2020-04-03 | Orange | Procedes de protection d'un domaine client contre une attaque informatique, nœud client, serveur et programmes d'ordinateur correspondants. |
CN111049746B (zh) * | 2018-10-12 | 2022-04-22 | 华为技术有限公司 | 一种路由表项生成方法、字典树生成方法和装置 |
US10958770B2 (en) | 2018-10-15 | 2021-03-23 | Fungible, Inc. | Realization of a programmable forwarding pipeline through packet header summaries in a data processing unit |
US10708373B2 (en) * | 2018-11-09 | 2020-07-07 | Oath Inc. | Decentralized method and system for accurately determining a level of activity of a client device |
CN109542601B (zh) * | 2018-11-20 | 2020-12-29 | 杭州迪普科技股份有限公司 | 策略编译方法、装置、电子设备及计算机存储介质 |
US10929175B2 (en) | 2018-11-21 | 2021-02-23 | Fungible, Inc. | Service chaining hardware accelerators within a data stream processing integrated circuit |
WO2020107484A1 (zh) * | 2018-11-30 | 2020-06-04 | 华为技术有限公司 | 一种acl的规则分类方法、查找方法和装置 |
CN109766439A (zh) * | 2018-12-15 | 2019-05-17 | 内蒙航天动力机械测试所 | 统计查询软件的无限树状分类定义与指派方法 |
GB2579849B (en) * | 2018-12-18 | 2021-08-25 | Advanced Risc Mach Ltd | Integrity tree for memory integrity checking |
EP3703341A1 (en) * | 2019-02-28 | 2020-09-02 | Rohde & Schwarz GmbH & Co. KG | System for analyzing and interpreting at least one data stream as well as method of automatic configuration of a system |
CN109885408B (zh) * | 2019-03-13 | 2022-05-03 | 四川长虹电器股份有限公司 | 基于Android系统的轻量级浏览器资源优化方法 |
US11531915B2 (en) * | 2019-03-20 | 2022-12-20 | Oracle International Corporation | Method for generating rulesets using tree-based models for black-box machine learning explainability |
US11258726B2 (en) | 2019-03-27 | 2022-02-22 | Fungible, Inc. | Low latency packet switch architecture |
CN111817978B (zh) * | 2019-04-12 | 2022-10-04 | 华为技术有限公司 | 一种流分类方法及装置 |
US11032371B2 (en) * | 2019-05-29 | 2021-06-08 | Red Hat, Inc. | Data migration using read function triggers |
US10931638B1 (en) * | 2019-07-31 | 2021-02-23 | Capital One Services, Llc | Automated firewall feedback from network traffic analysis |
US10979358B2 (en) * | 2019-08-20 | 2021-04-13 | SMART lOPS, INC. | Low-latency data packet distributor |
US10944675B1 (en) | 2019-09-04 | 2021-03-09 | Mellanox Technologies Tlv Ltd. | TCAM with multi region lookups and a single logical lookup |
US11579802B2 (en) | 2019-10-04 | 2023-02-14 | Fungible, Inc. | Pipeline using match-action blocks |
US11330032B2 (en) * | 2019-10-15 | 2022-05-10 | Vmware, Inc. | Method and system for content proxying between formats |
CN112948103B (zh) * | 2019-12-10 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 资源配置方法、装置、存储介质及电子设备 |
CN110995748A (zh) * | 2019-12-17 | 2020-04-10 | 杭州安恒信息技术股份有限公司 | 一种防暴力破解方法、装置、设备、介质 |
US11128694B2 (en) * | 2020-01-09 | 2021-09-21 | Cisco Technology, Inc. | Optimized internet access in a multi-site software-defined network fabric |
US11539622B2 (en) | 2020-05-04 | 2022-12-27 | Mellanox Technologies, Ltd. | Dynamically-optimized hash-based packet classifier |
US11782895B2 (en) | 2020-09-07 | 2023-10-10 | Mellanox Technologies, Ltd. | Cuckoo hashing including accessing hash tables using affinity table |
CN112311698B (zh) * | 2020-09-28 | 2021-08-24 | 清华大学无锡应用技术研究院 | 处理网络数据包的方法、装置及存储介质 |
KR20220045480A (ko) * | 2020-10-05 | 2022-04-12 | 삼성전자주식회사 | 인-메모리 프로세싱을 수행하는 메모리 디바이스 |
CN112350947B (zh) * | 2020-10-23 | 2022-07-29 | 杭州迪普信息技术有限公司 | 一种报文匹配决策树的更新方法及装置 |
US11593309B2 (en) | 2020-11-05 | 2023-02-28 | International Business Machines Corporation | Reliable delivery of event notifications from a distributed file system |
CN113114584B (zh) * | 2021-03-01 | 2023-02-28 | 杭州迪普科技股份有限公司 | 一种网络设备的保护方法及装置 |
US11734005B2 (en) | 2021-07-04 | 2023-08-22 | Mellanox Technologies, Ltd. | Processor with split read |
CN113709099B (zh) * | 2021-07-12 | 2023-11-07 | 新华三大数据技术有限公司 | 混合云防火墙规则下发方法、装置、设备及存储介质 |
US11677663B2 (en) * | 2021-08-12 | 2023-06-13 | Schweitzer Engineering Laboratories, Inc. | Software-defined network statistics extension |
US11917042B2 (en) | 2021-08-15 | 2024-02-27 | Mellanox Technologies, Ltd. | Optimizing header-based action selection |
CN113741821B (zh) * | 2021-11-01 | 2022-03-01 | 中科声龙科技发展(北京)有限公司 | 基于分类的数据存取方法、系统、介质及程序 |
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 |
US11847461B2 (en) * | 2022-05-19 | 2023-12-19 | Mellanox Technologies, Ltd. | Out-of-order input / output write |
US11882002B2 (en) | 2022-06-22 | 2024-01-23 | Schweitzer Engineering Laboratories, Inc. | Offline test mode SDN validation |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7277425B1 (en) | 2002-10-21 | 2007-10-02 | Force10 Networks, Inc. | High-speed router switching architecture |
Family Cites Families (246)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US441022A (en) | 1890-11-18 | Method of baling cotton | ||
US4965825A (en) | 1981-11-03 | 1990-10-23 | The Personalized Mass Media Corporation | Signal processing apparatus and methods |
JPS6289149A (ja) * | 1985-10-15 | 1987-04-23 | Agency Of Ind Science & Technol | 多ポ−トメモリシステム |
ATE180336T1 (de) | 1989-09-01 | 1999-06-15 | Amdahl Corp | Betriebssystem und datenbank mit einer aus mehreren tabellen geformten zugriffsstruktur |
CA2066724C (en) | 1989-09-01 | 2000-12-05 | Helge Knudsen | Operating system and data base |
AT392555B (de) | 1989-10-24 | 1991-04-25 | Alcatel Austria Ag | Verfahren zum uebertragen von binaerinformationen in einem optischen uebertragungsnetzwerk sowie optisches uebertragungsnetzwerk |
US5214653A (en) * | 1990-10-22 | 1993-05-25 | Harris Corporation | Fault finder expert system |
AU4661793A (en) | 1992-07-02 | 1994-01-31 | Wellfleet Communications | Data packet processing method and apparatus |
US5634025A (en) * | 1993-12-09 | 1997-05-27 | International Business Machines Corporation | Method and system for efficiently fetching variable-width instructions in a data processing system having multiple prefetch units |
US5742843A (en) | 1994-07-20 | 1998-04-21 | Fujitsu Limited | Control system for access between processing elements in a parallel computer |
US5727167A (en) * | 1995-04-14 | 1998-03-10 | International Business Machines Corporation | Thresholding support in performance monitoring |
US5995511A (en) | 1996-04-05 | 1999-11-30 | Fore Systems, Inc. | Digital network including mechanism for grouping virtual message transfer paths having similar transfer service rates to facilitate efficient scheduling of transfers thereover |
US5893911A (en) | 1996-04-17 | 1999-04-13 | Neon Software, Inc. | Method for defining and applying rules for message distribution for transaction processing in a distributed application |
US7613926B2 (en) | 1997-11-06 | 2009-11-03 | Finjan Software, Ltd | Method and system for protecting a computer and a network from hostile downloadables |
US5893142A (en) | 1996-11-14 | 1999-04-06 | Motorola Inc. | Data processing system having a cache and method therefor |
US6233575B1 (en) | 1997-06-24 | 2001-05-15 | International Business Machines Corporation | Multilevel taxonomy based on features derived from training documents classification using fisher values as discrimination values |
JP3436871B2 (ja) * | 1997-10-23 | 2003-08-18 | 株式会社東芝 | 通信資源管理方法及びノード装置 |
JP3027845B2 (ja) | 1997-11-21 | 2000-04-04 | オムロン株式会社 | プログラム制御装置および方法 |
US6549519B1 (en) * | 1998-01-23 | 2003-04-15 | Alcatel Internetworking (Pe), Inc. | Network switching device with pipelined search engines |
US6341130B1 (en) | 1998-02-09 | 2002-01-22 | Lucent Technologies, Inc. | Packet classification method and apparatus employing two fields |
US6658002B1 (en) * | 1998-06-30 | 2003-12-02 | Cisco Technology, Inc. | Logical operation unit for packet processing |
US6212184B1 (en) | 1998-07-15 | 2001-04-03 | Washington University | Fast scaleable methods and devices for layer four switching |
US6519636B2 (en) | 1998-10-28 | 2003-02-11 | International Business Machines Corporation | Efficient classification, manipulation, and control of network transmissions by associating network flows with rule based functions |
US6567408B1 (en) | 1999-02-01 | 2003-05-20 | Redback Networks Inc. | Methods and apparatus for packet classification with multi-level data structure |
US6297768B1 (en) | 1999-02-25 | 2001-10-02 | Lunareye, Inc. | Triggerable remote controller |
JP3692820B2 (ja) | 1999-03-10 | 2005-09-07 | 株式会社デンソー | 自動車用制御装置 |
US6510509B1 (en) * | 1999-03-29 | 2003-01-21 | Pmc-Sierra Us, Inc. | Method and apparatus for high-speed network rule processing |
US6701432B1 (en) * | 1999-04-01 | 2004-03-02 | Netscreen Technologies, Inc. | Firewall including local bus |
US6298340B1 (en) | 1999-05-14 | 2001-10-02 | International Business Machines Corporation | System and method and computer program for filtering using tree structure |
US6587466B1 (en) | 1999-05-27 | 2003-07-01 | International Business Machines Corporation | Search tree for policy based packet classification in communication networks |
GB2355084B (en) | 1999-07-21 | 2004-04-28 | Element 14 Ltd | Setting condition values in a computer |
US6636480B1 (en) | 1999-09-08 | 2003-10-21 | Riverstone Networks, Inc. | Method and system for controlling data flow through a multiport switch |
US7110407B1 (en) | 1999-09-23 | 2006-09-19 | Netlogic Microsystems, Inc. | Method and apparatus for performing priority encoding in a segmented classification system using enable signals |
US6775281B1 (en) | 1999-09-30 | 2004-08-10 | Mosaid Technologies, Inc. | Method and apparatus for a four-way hash table |
US6467019B1 (en) | 1999-11-08 | 2002-10-15 | Juniper Networks, Inc. | Method for memory management in ternary content addressable memories (CAMs) |
US6778530B1 (en) * | 1999-11-08 | 2004-08-17 | Juniper Networks, Inc. | Method and apparatus for multiple field matching in network device |
GB9930849D0 (en) | 1999-12-24 | 2000-02-16 | Koninkl Philips Electronics Nv | Data communications |
US6539394B1 (en) | 2000-01-04 | 2003-03-25 | International Business Machines Corporation | Method and system for performing interval-based testing of filter rules |
US7039641B2 (en) | 2000-02-24 | 2006-05-02 | Lucent Technologies Inc. | Modular packet classification |
US6473763B1 (en) | 2000-03-31 | 2002-10-29 | International Business Machines Corporation | System, method and computer program for filtering multi-action rule set |
US7215637B1 (en) | 2000-04-17 | 2007-05-08 | Juniper Networks, Inc. | Systems and methods for processing packets |
US7032031B2 (en) | 2000-06-23 | 2006-04-18 | Cloudshield Technologies, Inc. | Edge adapter apparatus and method |
US9800608B2 (en) * | 2000-09-25 | 2017-10-24 | Symantec Corporation | Processing data flows with a data flow processor |
US8010469B2 (en) | 2000-09-25 | 2011-08-30 | Crossbeam Systems, Inc. | Systems and methods for processing data flows |
US20110238855A1 (en) | 2000-09-25 | 2011-09-29 | Yevgeny Korsunsky | Processing data flows with a data flow processor |
US20070192863A1 (en) | 2005-07-01 | 2007-08-16 | Harsh Kapoor | Systems and methods for processing data flows |
KR100699470B1 (ko) * | 2000-09-27 | 2007-03-26 | 삼성전자주식회사 | 멀티레이어 패킷 처리 장치 |
WO2002043302A2 (en) * | 2000-11-21 | 2002-05-30 | Transwitch Corporation | Methods and apparatus for switching atm, tdm, and packet data through a single communications switch |
CA2326851A1 (en) | 2000-11-24 | 2002-05-24 | Redback Networks Systems Canada Inc. | Policy change characterization method and apparatus |
US6868414B2 (en) | 2001-01-03 | 2005-03-15 | International Business Machines Corporation | Technique for serializing data structure updates and retrievals without requiring searchers to use locks |
AU2002233500A1 (en) * | 2001-02-14 | 2002-08-28 | Clearspeed Technology Limited | An interconnection system |
US6754626B2 (en) * | 2001-03-01 | 2004-06-22 | International Business Machines Corporation | Creating a hierarchical tree of language models for a dialog system based on prompt and dialog context |
JP2002290447A (ja) * | 2001-03-27 | 2002-10-04 | Mitsubishi Electric Corp | アドレス検索方法、アドレス検索回路、およびアドレス検索プログラム |
US6735600B1 (en) * | 2001-03-30 | 2004-05-11 | Lsi Logic Corporation | Editing protocol for flexible search engines |
US6904057B2 (en) | 2001-05-04 | 2005-06-07 | Slt Logic Llc | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification |
US6757768B1 (en) * | 2001-05-17 | 2004-06-29 | Cisco Technology, Inc. | Apparatus and technique for maintaining order among requests issued over an external bus of an intermediate network node |
US7133409B1 (en) | 2001-07-19 | 2006-11-07 | Richard Willardson | Programmable packet filtering in a prioritized chain |
US7116663B2 (en) | 2001-07-20 | 2006-10-03 | Pmc-Sierra Ltd. | Multi-field classification using enhanced masked matching |
US7027988B1 (en) | 2001-07-20 | 2006-04-11 | At&T Corp. | System and method of ε removal of weighted automata and transducers |
US7209962B2 (en) * | 2001-07-30 | 2007-04-24 | International Business Machines Corporation | System and method for IP packet filtering based on non-IP packet traffic attributes |
US7046848B1 (en) | 2001-08-22 | 2006-05-16 | Olcott Peter L | Method and system for recognizing machine generated character glyphs and icons in graphic images |
EP1320006A1 (en) | 2001-12-12 | 2003-06-18 | Canal+ Technologies Société Anonyme | Processing data |
US7403999B2 (en) | 2001-12-28 | 2008-07-22 | International Business Machines Corporation | Classification support system and method for fragmented IP packets |
US7225188B1 (en) | 2002-02-13 | 2007-05-29 | Cisco Technology, Inc. | System and method for performing regular expression matching with high parallelism |
US7719980B2 (en) | 2002-02-19 | 2010-05-18 | Broadcom Corporation | Method and apparatus for flexible frame processing and classification engine |
US8135772B2 (en) * | 2002-05-01 | 2012-03-13 | Oracle International Corporation | Single servlets for B2B message routing |
US7251698B2 (en) * | 2002-05-28 | 2007-07-31 | Newisys, Inc. | Address space management in systems having multiple multi-processor clusters |
US7327727B2 (en) | 2002-06-04 | 2008-02-05 | Lucent Technologies Inc. | Atomic lookup rule set transition |
US7079542B2 (en) | 2002-07-02 | 2006-07-18 | Samsung Electronics Co., Ltd. | Internet protocol address look-up method |
AU2003256391A1 (en) | 2002-07-03 | 2004-01-23 | University Of Florida | Dynamic ip router tables using highest-priority matching |
AU2003259797A1 (en) | 2002-08-05 | 2004-02-23 | Fish, Robert | System and method of parallel pattern matching |
GB0226289D0 (en) | 2002-11-11 | 2002-12-18 | Orange Personal Comm Serv Ltd | Telecommunications |
GB2395395B (en) * | 2002-11-15 | 2004-11-10 | 3Com Corp | Classification search scheme and rules engine for network unit |
US7536476B1 (en) | 2002-12-20 | 2009-05-19 | Cisco Technology, Inc. | Method for performing tree based ACL lookups |
US7548848B1 (en) | 2003-01-08 | 2009-06-16 | Xambala, Inc. | Method and apparatus for semantic processing engine |
WO2004072797A2 (en) | 2003-02-07 | 2004-08-26 | Safenet, Inc. | System and method for determining the start of a match of a regular expression |
US20040172234A1 (en) | 2003-02-28 | 2004-09-02 | Dapp Michael C. | Hardware accelerator personality compiler |
SE0300894D0 (sv) * | 2003-03-28 | 2003-03-28 | Saab Ab | Metod att fastställa regler för en anordning som är avsedd att kunna användas för att generera beslutstöd |
US7571156B1 (en) | 2003-03-28 | 2009-08-04 | Netlogic Microsystems, Inc. | Network device, storage medium and methods for incrementally updating a forwarding database |
US7466687B2 (en) | 2003-04-28 | 2008-12-16 | International Business Machines Corporation | Packet classification using modified range labels |
US7093231B2 (en) | 2003-05-06 | 2006-08-15 | David H. Alderson | Grammer for regular expressions |
US7415472B2 (en) | 2003-05-13 | 2008-08-19 | Cisco Technology, Inc. | Comparison tree data structures of particular use in performing lookup operations |
US7411418B2 (en) | 2003-05-23 | 2008-08-12 | Sensory Networks, Inc. | Efficient representation of state transition tables |
US7685254B2 (en) * | 2003-06-10 | 2010-03-23 | Pandya Ashish A | Runtime adaptable search processor |
US7382777B2 (en) | 2003-06-17 | 2008-06-03 | International Business Machines Corporation | Method for implementing actions based on packet classification and lookup results |
US7386626B2 (en) * | 2003-06-23 | 2008-06-10 | Newisys, Inc. | Bandwidth, framing and error detection in communications between multi-processor clusters of multi-cluster computer systems |
US7388840B2 (en) | 2003-06-30 | 2008-06-17 | Intel Corporation | Methods and apparatuses for route management on a networking control plane |
US7548944B2 (en) | 2003-07-15 | 2009-06-16 | Intel Corporation | Statistics collection framework for a network processor |
US7299227B2 (en) | 2003-09-09 | 2007-11-20 | Stmicroelectronics, Inc. | Method and system for providing cascaded trie-based network packet search engines |
US7870161B2 (en) | 2003-11-07 | 2011-01-11 | Qiang Wang | Fast signature scan |
US7873992B1 (en) | 2003-12-04 | 2011-01-18 | Avaya Inc. | Dynamic system of autonomous parsers for interpreting arbitrary telecommunication equipment streams |
US20060026138A1 (en) | 2004-01-09 | 2006-02-02 | Gavin Robertson | Real-time indexes |
US7706353B2 (en) | 2004-01-21 | 2010-04-27 | Alcatel-Lucent Usa Inc. | Congestion control in connection-oriented packet-switching networks |
US7392349B1 (en) * | 2004-01-27 | 2008-06-24 | Netlogic Microsystems, Inc. | Table management within a policy-based routing system |
US7370361B2 (en) | 2004-02-06 | 2008-05-06 | Trend Micro Incorporated | System and method for securing computers against computer virus |
US7441022B1 (en) | 2004-03-12 | 2008-10-21 | Sun Microsystems, Inc. | Resolving conflicts between network service rule sets for network data traffic in a system where rule patterns with longer prefixes match before rule patterns with shorter prefixes |
US7586851B2 (en) | 2004-04-26 | 2009-09-08 | Cisco Technology, Inc. | Programmable packet parsing processor |
US7366728B2 (en) | 2004-04-27 | 2008-04-29 | International Business Machines Corporation | System for compressing a search tree structure used in rule classification |
US7685637B2 (en) | 2004-06-14 | 2010-03-23 | Lionic Corporation | System security approaches using sub-expression automata |
JP4855655B2 (ja) * | 2004-06-15 | 2012-01-18 | 株式会社ソニー・コンピュータエンタテインメント | 処理管理装置、コンピュータ・システム、分散処理方法及びコンピュータプログラム |
JP4392294B2 (ja) | 2004-06-15 | 2009-12-24 | 株式会社日立製作所 | 通信統計収集装置 |
US7760719B2 (en) * | 2004-06-30 | 2010-07-20 | Conexant Systems, Inc. | Combined pipelined classification and address search method and apparatus for switching environments |
BRPI0513181A (pt) * | 2004-07-09 | 2008-04-29 | Matsushita Electric Ind Co Ltd | método e aparelho de gerenciamento de rede |
US7478426B2 (en) | 2004-07-20 | 2009-01-13 | International Busines Machines Corporation | Multi-field classification dynamic rule updates |
US7711893B1 (en) | 2004-07-22 | 2010-05-04 | Netlogic Microsystems, Inc. | Range code compression method and apparatus for ternary content addressable memory (CAM) devices |
US7464218B2 (en) | 2004-08-31 | 2008-12-09 | Seagate Technology Llc | Method for improving data throughput for a data storage device |
US8560475B2 (en) | 2004-09-10 | 2013-10-15 | Cavium, Inc. | Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process |
US8392590B2 (en) | 2004-09-10 | 2013-03-05 | Cavium, Inc. | Deterministic finite automata (DFA) processing |
US8301788B2 (en) | 2004-09-10 | 2012-10-30 | Cavium, Inc. | Deterministic finite automata (DFA) instruction |
US7594081B2 (en) | 2004-09-10 | 2009-09-22 | Cavium Networks, Inc. | Direct access to low-latency memory |
WO2006029508A1 (en) | 2004-09-13 | 2006-03-23 | Solace Systems Inc. | Highly scalable subscription matching for a content routing network |
US7260558B1 (en) | 2004-10-25 | 2007-08-21 | Hi/Fn, Inc. | Simultaneously searching for a plurality of patterns definable by complex expressions, and efficiently generating data for such searching |
US7356663B2 (en) | 2004-11-08 | 2008-04-08 | Intruguard Devices, Inc. | Layered memory architecture for deterministic finite automaton based string matching useful in network intrusion detection and prevention systems and apparatuses |
US7478424B2 (en) | 2004-11-30 | 2009-01-13 | Cymtec Systems, Inc. | Propagation protection within a network |
WO2006061899A1 (ja) | 2004-12-09 | 2006-06-15 | Mitsubishi Denki Kabushiki Kaisha | 文字列照合装置および文字列照合プログラム |
JP4140910B2 (ja) * | 2004-12-28 | 2008-08-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データ処理装置、データ管理装置、データ処理方法、データ管理方法、データ処理プログラム、データ管理プログラム、及び情報システム |
US20060155915A1 (en) | 2004-12-30 | 2006-07-13 | Pereira Jose P | Database query processor |
US7350040B2 (en) | 2005-03-03 | 2008-03-25 | Microsoft Corporation | Method and system for securing metadata to detect unauthorized access |
US7710988B1 (en) | 2005-03-11 | 2010-05-04 | Xambala Corporation | Method and system for non-deterministic finite automaton filtering |
US7653903B2 (en) * | 2005-03-25 | 2010-01-26 | Sony Corporation | Modular imaging download system |
US7668160B2 (en) | 2005-03-31 | 2010-02-23 | Intel Corporation | Methods for performing packet classification |
JP2006285808A (ja) * | 2005-04-04 | 2006-10-19 | Hitachi Ltd | ストレージシステム |
US20060288024A1 (en) | 2005-04-28 | 2006-12-21 | Freescale Semiconductor Incorporated | Compressed representations of tries |
US7958507B2 (en) * | 2005-06-16 | 2011-06-07 | Hewlett-Packard Development Company, L.P. | Job scheduling system and method |
US7784094B2 (en) * | 2005-06-30 | 2010-08-24 | Intel Corporation | Stateful packet content matching mechanisms |
US20080229415A1 (en) | 2005-07-01 | 2008-09-18 | Harsh Kapoor | Systems and methods for processing data flows |
US7979368B2 (en) | 2005-07-01 | 2011-07-12 | Crossbeam Systems, Inc. | Systems and methods for processing data flows |
US7869411B2 (en) | 2005-11-21 | 2011-01-11 | Broadcom Corporation | Compact packet operation device and method |
US7702629B2 (en) | 2005-12-02 | 2010-04-20 | Exegy Incorporated | Method and device for high performance regular expression pattern matching |
US20070168377A1 (en) | 2005-12-29 | 2007-07-19 | Arabella Software Ltd. | Method and apparatus for classifying Internet Protocol data packets |
US20070168548A1 (en) * | 2006-01-19 | 2007-07-19 | International Business Machines Corporation | Method and system for performing multi-cluster application-specific routing |
US8978154B2 (en) | 2006-02-15 | 2015-03-10 | Samsung Electronics Co., Ltd. | Method and apparatus for importing content having plurality of parts |
US20070226362A1 (en) | 2006-03-21 | 2007-09-27 | At&T Corp. | Monitoring regular expressions on out-of-order streams |
US7844422B2 (en) | 2006-05-30 | 2010-11-30 | International Business Machines Corporation | Method and system for changing a description for a state transition function of a state machine engine |
US20080097959A1 (en) | 2006-06-14 | 2008-04-24 | Nec Laboratories America, Inc. | Scalable xml filtering with bottom up path matching and encoded path joins |
US20080071783A1 (en) | 2006-07-03 | 2008-03-20 | Benjamin Langmead | System, Apparatus, And Methods For Pattern Matching |
US7522581B2 (en) * | 2006-08-01 | 2009-04-21 | International Business Machines Corporation | Overload protection for SIP servers |
EP2074767A2 (en) | 2006-08-02 | 2009-07-01 | University Of Florida Research Foundation, Inc. | Succinct representation of static packet classifiers |
US20080034427A1 (en) | 2006-08-02 | 2008-02-07 | Nec Laboratories America, Inc. | Fast and scalable process for regular expression search |
GB2441351B (en) | 2006-09-01 | 2010-12-08 | 3Com Corp | Positionally dependent pattern checking in character strings using deterministic finite automata |
US7932349B2 (en) | 2006-09-18 | 2011-04-26 | Hercules Incorporated | Membrane separation process for removing residuals polyamine-epihalohydrin resins |
US8024691B2 (en) | 2006-09-28 | 2011-09-20 | Mcgill University | Automata unit, a tool for designing checker circuitry and a method of manufacturing hardware circuitry incorporating checker circuitry |
GB2452420B (en) | 2006-10-27 | 2009-05-06 | 3Com Corp | Signature checking using deterministic finite state machines |
SE531947C2 (sv) | 2006-11-03 | 2009-09-15 | Oricane Ab | Förfarande, anordning och system för flerfältsklassificering i ett datakommunikationsnätverk |
US7657497B2 (en) | 2006-11-07 | 2010-02-02 | Ebay Inc. | Online fraud prevention using genetic algorithm solution |
US7831607B2 (en) | 2006-12-08 | 2010-11-09 | Pandya Ashish A | Interval symbol architecture for programmable intelligent search memory |
WO2008073824A1 (en) | 2006-12-08 | 2008-06-19 | Pandya Ashish A | Dynamic programmable intelligent search memory |
US8156507B2 (en) | 2006-12-08 | 2012-04-10 | Microsoft Corporation | User mode file system serialization and reliability |
US7636717B1 (en) | 2007-01-18 | 2009-12-22 | Netlogic Microsystems, Inc. | Method and apparatus for optimizing string search operations |
US7962434B2 (en) | 2007-02-15 | 2011-06-14 | Wisconsin Alumni Research Foundation | Extended finite state automata and systems and methods for recognizing patterns in a data stream using extended finite state automata |
FR2914081A1 (fr) | 2007-03-23 | 2008-09-26 | Advestigo Sa | Procede de protection de documents numeriques contre des utilisations non autorisees. |
JP5299272B2 (ja) | 2007-04-12 | 2013-09-25 | 富士通株式会社 | 分析プログラムおよび分析装置 |
US7961489B2 (en) | 2007-04-23 | 2011-06-14 | Marvell Israel (MISL)Ltd. | Comparing data representations to stored patterns |
US8156247B2 (en) | 2007-04-30 | 2012-04-10 | Lsi Corportion | Systems and methods for reducing network performance degradation |
US7854002B2 (en) | 2007-04-30 | 2010-12-14 | Microsoft Corporation | Pattern matching for spyware detection |
US20080291916A1 (en) | 2007-05-22 | 2008-11-27 | Bo Xiong | Systems and methods for dynamic quality of service |
US7852756B2 (en) | 2007-06-13 | 2010-12-14 | 02Micro International Limited | Network interface system with filtering function |
US8341723B2 (en) * | 2007-06-28 | 2012-12-25 | Microsoft Corporation | Filtering kernel-mode network communications |
US8219508B2 (en) | 2007-07-06 | 2012-07-10 | Lsi Corporation | Systems and methods for compressing state machine instructions using a two access indexing scheme |
JP4967876B2 (ja) * | 2007-07-18 | 2012-07-04 | 日本電気株式会社 | ネットワーク、ネットワーク装置及びそれらに用いる伝送経路冗長化方法 |
US8024802B1 (en) | 2007-07-31 | 2011-09-20 | Hewlett-Packard Development Company, L.P. | Methods and systems for using state ranges for processing regular expressions in intrusion-prevention systems |
US8520978B2 (en) | 2007-10-31 | 2013-08-27 | Mckesson Technologies Inc. | Methods, computer program products, apparatuses, and systems for facilitating viewing and manipulation of an image on a client device |
US8086609B2 (en) | 2007-11-01 | 2011-12-27 | Cavium, Inc. | Graph caching |
US8819217B2 (en) | 2007-11-01 | 2014-08-26 | Cavium, Inc. | Intelligent graph walking |
US20090125470A1 (en) | 2007-11-09 | 2009-05-14 | Juniper Networks, Inc. | System and Method for Managing Access Control Lists |
US8180803B2 (en) | 2007-11-27 | 2012-05-15 | Cavium, Inc. | Deterministic finite automata (DFA) graph compression |
US7949683B2 (en) | 2007-11-27 | 2011-05-24 | Cavium Networks, Inc. | Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph |
KR100920518B1 (ko) | 2007-11-27 | 2009-10-09 | 한국전자통신연구원 | 패킷 분류 장치 및 방법 |
TWI363532B (en) | 2008-01-21 | 2012-05-01 | Univ Nat Taiwan | Method and system for packet classificiation with reduced memory space and enhanced access speed |
US7904942B2 (en) * | 2008-02-22 | 2011-03-08 | Inventec Corporation | Method of updating intrusion detection rules through link data packet |
US8474043B2 (en) * | 2008-04-17 | 2013-06-25 | Sourcefire, Inc. | Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing |
SE532426C2 (sv) | 2008-05-26 | 2010-01-19 | Oricane Ab | Metod för datapaketklassificering i ett datakommunikationsnät |
US8051085B1 (en) | 2008-07-18 | 2011-11-01 | Netlogic Microsystems, Inc. | Determining regular expression match lengths |
US8554800B2 (en) | 2008-07-30 | 2013-10-08 | Portool Ltd. | System, methods and applications for structured document indexing |
US20100037056A1 (en) | 2008-08-07 | 2010-02-11 | Follis Benjamin D | Method to support privacy preserving secure data management in archival systems |
US8352391B1 (en) * | 2008-08-20 | 2013-01-08 | Juniper Networks, Inc. | Fast update filter |
US8005114B2 (en) | 2008-09-08 | 2011-08-23 | Wisconsin Alumni Research Foundation | Method and apparatus to vary the transmission bit rate within individual wireless packets through multi-rate packetization |
US8176085B2 (en) | 2008-09-30 | 2012-05-08 | Microsoft Corporation | Modular forest automata |
US8447120B2 (en) | 2008-10-04 | 2013-05-21 | Microsoft Corporation | Incremental feature indexing for scalable location recognition |
US7872993B2 (en) | 2008-10-30 | 2011-01-18 | Alcatel Lucent | Method and system for classifying data packets |
US8473523B2 (en) | 2008-10-31 | 2013-06-25 | Cavium, Inc. | Deterministic finite automata graph traversal with nodal bit mapping |
US8683590B2 (en) | 2008-10-31 | 2014-03-25 | Alcatel Lucent | Method and apparatus for pattern matching for intrusion detection/prevention systems |
US9154380B2 (en) | 2008-12-11 | 2015-10-06 | International Business Machines Corporation | Rules based fetching of operating platform status |
TWI482083B (zh) | 2008-12-15 | 2015-04-21 | Univ Nat Taiwan | 二階段式正規表示式比對處理方法及系統 |
TWI383618B (zh) | 2008-12-22 | 2013-01-21 | Univ Nat Taiwan | 管線架構型正規表示式樣式比對處理電路 |
US8111697B1 (en) * | 2008-12-31 | 2012-02-07 | Juniper Networks, Inc. | Methods and apparatus for packet classification based on multiple conditions |
US8171539B2 (en) | 2009-01-07 | 2012-05-01 | Symbol Technologies, Inc. | Methods and apparatus for implementing a search tree |
US20100192225A1 (en) | 2009-01-28 | 2010-07-29 | Juniper Networks, Inc. | Efficient application identification with network devices |
US8634731B2 (en) * | 2009-02-18 | 2014-01-21 | OCé PRINTING SYSTEMS GMBH | Method for automatically controlling the sequence of processing orders for processing material containers |
US8218553B2 (en) | 2009-02-25 | 2012-07-10 | Juniper Networks, Inc. | Load balancing network traffic on a label switched path using resource reservation protocol with traffic engineering |
KR101034389B1 (ko) | 2009-04-22 | 2011-05-16 | (주) 시스메이트 | 패킷 내 시그니처 위치에 따른 시그니처 검색 방법 |
US7990893B1 (en) | 2009-05-19 | 2011-08-02 | Juniper Networks, Inc. | Fast prefix-based network route filtering |
US8259726B2 (en) | 2009-05-28 | 2012-09-04 | Force10 Networks, Inc. | Method and apparatus for forwarding table reduction |
US20110016154A1 (en) | 2009-07-17 | 2011-01-20 | Rajan Goyal | Profile-based and dictionary based graph caching |
JP2012133405A (ja) | 2009-07-24 | 2012-07-12 | Hitachi Ltd | ストレージ装置及びそのデータ転送制御方法 |
US8462786B2 (en) | 2009-08-17 | 2013-06-11 | Board Of Trustees Of Michigan State University | Efficient TCAM-based packet classification using multiple lookups and classifier semantics |
US8276142B2 (en) | 2009-10-09 | 2012-09-25 | Intel Corporation | Hardware support for thread scheduling on multi-core processors |
US8554698B2 (en) | 2009-10-17 | 2013-10-08 | Polytechnic Institute Of New York University | Configuring state machines used to order and select matching operations for determining whether an input string matches any of at least one regular expression using lookahead finite automata based regular expression detection |
US8631043B2 (en) | 2009-12-09 | 2014-01-14 | Alcatel Lucent | Method and apparatus for generating a shape graph from a binary trie |
EP2517420B1 (en) | 2009-12-22 | 2014-03-19 | Cuneyt F. Bazlamacci | Systolic array architecture for fast ip lookup |
US8291258B2 (en) | 2010-01-08 | 2012-10-16 | Juniper Networks, Inc. | High availability for network security devices |
JP5768063B2 (ja) | 2010-01-13 | 2015-08-26 | アビニシオ テクノロジー エルエルシー | 適合を特徴付けるルールを用いたメタデータソースの照合 |
US8458354B2 (en) | 2010-01-27 | 2013-06-04 | Interdisciplinary Center Herzliya | Multi-pattern matching in compressed communication traffic |
US8522199B2 (en) | 2010-02-26 | 2013-08-27 | Mcafee, Inc. | System, method, and computer program product for applying a regular expression to content based on required strings of the regular expression |
US8477611B2 (en) | 2010-03-03 | 2013-07-02 | Ewha University Industry Collaboration Foundation | Method and apparatus for packet classification using bloom filter |
CN101794271B (zh) * | 2010-03-31 | 2012-05-23 | 华为技术有限公司 | 多核内存一致性的实现方法和装置 |
WO2011130604A1 (en) * | 2010-04-16 | 2011-10-20 | Massachusetts Institute Of Technology | Execution migration |
CN101853301A (zh) | 2010-05-25 | 2010-10-06 | 华为技术有限公司 | 正则表达式匹配的方法和系统 |
US20130070753A1 (en) | 2010-05-26 | 2013-03-21 | University Of Florida Research Foundation, Inc. | Consistent updates for packet classification devices |
JP5319626B2 (ja) * | 2010-08-18 | 2013-10-16 | 日本電信電話株式会社 | ノード、パケット転送方法および通信ネットワーク |
US8543528B2 (en) | 2010-09-23 | 2013-09-24 | International Business Machines Corporation | Exploitation of transition rule sharing based on short state tags to improve the storage efficiency |
CN102075511B (zh) | 2010-11-01 | 2014-05-14 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据匹配设备和方法以及网络入侵检测设备和方法 |
US8799188B2 (en) | 2011-02-08 | 2014-08-05 | International Business Machines Corporation | Algorithm engine for use in a pattern matching accelerator |
US8856203B1 (en) | 2011-02-08 | 2014-10-07 | Pmc-Sierra Us, Inc. | System and method for algorithmic TCAM packet classification |
US9471532B2 (en) * | 2011-02-11 | 2016-10-18 | Microsoft Technology Licensing, Llc | Remote core operations in a multi-core computer |
EP2490134A1 (en) | 2011-02-18 | 2012-08-22 | Amadeus S.A.S. | Method, system and computer program to provide fares detection from rules attributes |
US9398033B2 (en) | 2011-02-25 | 2016-07-19 | Cavium, Inc. | Regular expression processing automaton |
US20120221494A1 (en) | 2011-02-25 | 2012-08-30 | International Business Machines Corporation | Regular expression pattern matching using keyword graphs |
WO2012154616A2 (en) | 2011-05-06 | 2012-11-15 | Xcelemor, Inc. | Computing system with hardware reconfiguration mechanism and method of operation thereof |
US8990259B2 (en) | 2011-06-24 | 2015-03-24 | Cavium, Inc. | Anchored patterns |
US9858051B2 (en) | 2011-06-24 | 2018-01-02 | Cavium, Inc. | Regex compiler |
US8800021B1 (en) | 2011-06-29 | 2014-08-05 | Juniper Networks, Inc. | Hardware implementation of complex firewalls using chaining technique |
US8516241B2 (en) * | 2011-07-12 | 2013-08-20 | Cisco Technology, Inc. | Zone-based firewall policy model for a virtualized data center |
US9596222B2 (en) | 2011-08-02 | 2017-03-14 | Cavium, Inc. | Method and apparatus encoding a rule for a lookup request in a processor |
US10229139B2 (en) | 2011-08-02 | 2019-03-12 | Cavium, Llc | Incremental update heuristics |
US9183244B2 (en) | 2011-08-02 | 2015-11-10 | Cavium, Inc. | Rule modification in decision trees |
US8923306B2 (en) | 2011-08-02 | 2014-12-30 | Cavium, Inc. | Phased bucket pre-fetch in a network processor |
US9208438B2 (en) | 2011-08-02 | 2015-12-08 | Cavium, Inc. | Duplication in decision trees |
US9203805B2 (en) | 2011-11-23 | 2015-12-01 | Cavium, Inc. | Reverse NFA generation and processing |
US9307009B2 (en) | 2012-02-15 | 2016-04-05 | Mobilespan Inc. | Presenting execution of a remote application in a mobile device native format |
US9575806B2 (en) * | 2012-06-29 | 2017-02-21 | Intel Corporation | Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring |
US9712510B2 (en) | 2012-07-06 | 2017-07-18 | Box, Inc. | Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform |
US9055004B2 (en) | 2012-09-18 | 2015-06-09 | Cisco Technology, Inc. | Scalable low latency multi-protocol networking device |
US9177253B2 (en) | 2013-01-31 | 2015-11-03 | Intel Corporation | System and method for DFA-NFA splitting |
US20140229386A1 (en) | 2013-02-13 | 2014-08-14 | Mistral Mobile | Secure mobile payments |
US10083200B2 (en) | 2013-03-14 | 2018-09-25 | Cavium, Inc. | Batch incremental update |
US9430511B2 (en) | 2013-03-15 | 2016-08-30 | Cavium, Inc. | Merging independent writes, separating dependent and independent writes, and error roll back |
US9276846B2 (en) | 2013-03-15 | 2016-03-01 | Cavium, Inc. | Packet extraction optimization in a network processor |
US9537771B2 (en) | 2013-04-04 | 2017-01-03 | Marvell Israel (M.I.S.L) Ltd. | Exact match hash lookup databases in network switch devices |
US9426165B2 (en) | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for compilation of finite automata |
US9563399B2 (en) | 2013-08-30 | 2017-02-07 | Cavium, Inc. | Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features |
US9419943B2 (en) | 2013-12-30 | 2016-08-16 | Cavium, Inc. | Method and apparatus for processing of finite automata |
US9544402B2 (en) | 2013-12-31 | 2017-01-10 | Cavium, Inc. | Multi-rule approach to encoding a group of rules |
US9667446B2 (en) | 2014-01-08 | 2017-05-30 | Cavium, Inc. | Condition code approach for comparing rule and packet data that are provided in portions |
US9904630B2 (en) | 2014-01-31 | 2018-02-27 | Cavium, Inc. | Finite automata processing based on a top of stack (TOS) memory |
US9602532B2 (en) | 2014-01-31 | 2017-03-21 | Cavium, Inc. | Method and apparatus for optimizing finite automata processing |
-
2012
- 2012-08-02 US US13/565,389 patent/US9596222B2/en active Active
- 2012-08-02 WO PCT/US2012/049405 patent/WO2013020001A1/en active Application Filing
- 2012-08-02 US US13/565,736 patent/US8966152B2/en active Active
- 2012-08-02 KR KR1020147005633A patent/KR101476113B1/ko active IP Right Grant
- 2012-08-02 US US13/565,735 patent/US9065860B2/en active Active
- 2012-08-02 US US13/565,422 patent/US8472452B2/en active Active
- 2012-08-02 US US13/565,727 patent/US8711861B2/en active Active
- 2012-08-02 US US13/565,749 patent/US8954700B2/en active Active
- 2012-08-02 WO PCT/US2012/049400 patent/WO2013019996A1/en active Application Filing
- 2012-08-02 JP JP2014524092A patent/JP5657840B2/ja active Active
- 2012-08-02 US US13/565,743 patent/US9319316B2/en active Active
- 2012-08-02 WO PCT/US2012/049408 patent/WO2013020003A1/en active Application Filing
- 2012-08-02 US US13/565,459 patent/US8719331B2/en active Active
- 2012-08-02 US US13/565,271 patent/US10277510B2/en active Active
- 2012-08-02 US US13/565,784 patent/US8937952B2/en active Active
- 2012-08-02 WO PCT/US2012/049406 patent/WO2013020002A1/en active Application Filing
- 2012-08-02 US US13/565,775 patent/US9137340B2/en active Active
- 2012-08-02 US US13/565,741 patent/US9391892B2/en active Active
- 2012-08-02 US US13/565,767 patent/US8606959B2/en active Active
- 2012-08-02 WO PCT/US2012/049383 patent/WO2013019981A1/en active Application Filing
- 2012-08-02 CN CN201280048291.0A patent/CN103858392B/zh active Active
- 2012-08-02 US US13/565,406 patent/US9344366B2/en not_active Expired - Fee Related
- 2012-08-02 CN CN201280048417.4A patent/CN103858386B/zh not_active Expired - Fee Related
- 2012-08-02 US US13/565,746 patent/US9525630B2/en active Active
- 2012-08-02 KR KR1020147005800A patent/KR101476114B1/ko active IP Right Grant
- 2012-08-30 US US13/599,276 patent/US9729527B2/en active Active
- 2012-10-30 US US13/664,015 patent/US8934488B2/en active Active
- 2012-11-27 US US13/686,269 patent/US8937954B2/en active Active
-
2013
- 2013-05-23 US US13/901,220 patent/US8995449B2/en active Active
- 2013-11-18 US US14/082,365 patent/US9497117B2/en active Active
- 2013-12-23 US US14/138,931 patent/US9031075B2/en active Active
-
2014
- 2014-03-31 US US14/230,698 patent/US9614762B2/en active Active
- 2014-12-15 US US14/570,626 patent/US9191321B2/en not_active Expired - Fee Related
-
2015
- 2015-01-08 US US14/592,384 patent/US9531690B2/en active Active
- 2015-01-26 US US14/604,975 patent/US20150143060A1/en not_active Abandoned
- 2015-03-17 US US14/660,132 patent/US9225643B2/en active Active
-
2016
- 2016-05-03 US US15/145,052 patent/US9866540B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7277425B1 (en) | 2002-10-21 | 2007-10-02 | Force10 Networks, Inc. | High-speed router switching architecture |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101476113B1 (ko) | 룩업 클러스터 컴플렉스 | |
US9531723B2 (en) | Phased bucket pre-fetch in a network processor | |
US9276846B2 (en) | Packet extraction optimization in a network processor | |
US9430511B2 (en) | Merging independent writes, separating dependent and independent writes, and error roll back | |
US9531647B1 (en) | Multi-host processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated 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: 20171117 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20181115 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20191218 Year of fee payment: 6 |