KR20100014194A - 네트워크 스택의 데이터 경로 가속 - Google Patents

네트워크 스택의 데이터 경로 가속 Download PDF

Info

Publication number
KR20100014194A
KR20100014194A KR1020090070880A KR20090070880A KR20100014194A KR 20100014194 A KR20100014194 A KR 20100014194A KR 1020090070880 A KR1020090070880 A KR 1020090070880A KR 20090070880 A KR20090070880 A KR 20090070880A KR 20100014194 A KR20100014194 A KR 20100014194A
Authority
KR
South Korea
Prior art keywords
packets
particular connection
packet
sequence
code segments
Prior art date
Application number
KR1020090070880A
Other languages
English (en)
Other versions
KR101115436B1 (ko
Inventor
파비안 에이. 고메스
레오 캐플란
Original Assignee
브로드콤 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 브로드콤 코포레이션 filed Critical 브로드콤 코포레이션
Publication of KR20100014194A publication Critical patent/KR20100014194A/ko
Application granted granted Critical
Publication of KR101115436B1 publication Critical patent/KR101115436B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/324Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/325Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25

Abstract

장치는 특정 접속의 제 1 패킷을 사용하여 상기 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스(sequence)를 실행 시간에 도출하도록 배치되고 구성된 플로우 캐시 모듈(flow cache module), 및 상기 패킷들의 IP(Internet Protocol; 인터넷 프로토콜) 튜플(tuple)을 사용하여 상기 특정 접속에 속하는 것으로서 패킷들을 식별하도록 배치되고 구성된 파서 모듈(parser module)을 포함하고, 상기 플로우 캐시 모듈은 상기 식별된 패킷들에 상기 코드 세그먼트들의 통상의 시퀀스를 적용하도록 배치되고 구성된다.

Description

네트워크 스택의 데이터 경로 가속{DATA PATH ACCELERATION OF A NETWORK STACK}
본 발명은 네트워크 스택(stack)의 데이터 경로 가속(acceleration)에 관한 것이다.
데이터 패킷은 WAN(wide area network; 광역 네트워크) 및 LAN(local area network; 근거리 네트워크)을 통해 통신될 수 있다. 장치들은 하나의 네트워크를 다른 네트워크로 접속되기 위해 사용될 수 있고, 또는 하나의 네트워크를 하나 이상의 다른 장치들로 접속하기 위해 사용될 수 있다. 예를 들면, 컴퓨터 네트워크 내의 장치 또는 컴퓨팅 네트워크 시스템은 접속을 개시 또는 종료할 수 있는 엔드 노드(end node)일 수 있다. 컴퓨터 네트워크 내의 장치, 또는 컴퓨터 네트워킹 시스템은 컴퓨터 네트워크의 다른 노드로 데이터를 전달하기 위한 역할을 가질 수 있는 중간 노드일 수 있다. 데이터 패킷들은 중간 노드들과 같은 기능을 하는 장치들을 통해 통신될 수 있다.
하나 이상의 실시예들의 상세한 설명은 첨부된 도면 및 이하의 상세한 설명에서 기술된다.
본 발명의 일 측면에 따라, 장치는,
특정 접속의 제 1 패킷을 사용하여 상기 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스(sequence)를 실행 시간에 도출하도록 배치되고 구성된 플로우 캐시 모듈(flow cache module); 및
상기 패킷들의 IP(Internet Protocol; 인터넷 프로토콜) 튜플(tuple)을 사용하여 상기 특정 접속에 속하는 것으로서 패킷들을 식별하도록 배치되고 구성된 파서 모듈(parser module)을 포함하고,
상기 플로우 캐시 모듈은 상기 식별된 패킷들에 상기 코드 세그먼트들의 통상의 시퀀스를 적용하도록 배치되고 구성된다.
바람직하게는, 상기 플로우 캐시 모듈은 상기 특정 접속에 대한 통상의 스택(stack)을 구성하도록 배치되고 구성된다.
바람직하게는, 상기 플로우 캐시 모듈은 값(value)들로서의 C 언어 goto 레벨을 사용하여 스레딩된(threaded) 코드 시퀀스로서 상기 특정 접속에 대한 통상의 스택을 구성하도록 배치되고 구성된다.
바람직하게는, 상기 파서 모듈은 상기 IP 튜플을 검출하기 위해 상기 패킷들의 헤더(header)들을 파싱(parse)하도록 배치되고 구성된다.
바람직하게는,
상기 파서 모듈은 상기 패킷들의 헤더들을 검사하도록 배치되고 구성되며,
상기 플로우 캐시 모듈은 상기 검사된 헤더들에 기초하여 상기 특정 접속에 속하는 것과 같은 특정 패킷 유형들을 배제하도록 배치되고 구성된다.
바람직하게는, 상기 IP 튜플은 출발지 주소, 목적지 주소, 프로토콜 유형, 출발지 포트, 및 목적지 포트를 포함한다.
본 발명의 일 측면에 따라, 방법은,
특정 접속의 제 1 패킷을 사용하여 상기 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스(sequence)를 실행 시간에 도출하는 단계;
상기 패킷들의 IP(Internet Protocol; 인터넷 프로토콜) 튜플(tuple)을 사용하여 상기 특정 접속에 속하는 것으로서 패킷들을 식별하는 단계; 및
상기 식별된 패킷들에 상기 코드 세그먼트들의 통상의 시퀀스를 적용하는 단계를 포함한다.
바람직하게는, 상기 코드 세그먼트들의 통상의 시퀀스를 실행 시간에 도출하는 단계는 상기 특정 접속에 대한 통상의 스택(stack)을 구성하는 단계를 포함한다.
바람직하게는, 상기 코드 세그먼트들의 통상의 시퀀스를 실행 시간에 도출하는 단계는 값(value)들로서의 C 언어 goto 레벨들을 사용하여 스레딩된(threaded) 코드 시퀀스로서 상기 특정 접속에 대한 통상의 스택을 구성하는 단계를 포함한다.
바람직하게는, 상기 패킷들을 식별하는 단계는 상기 IP 튜플을 검출하기 위해 상기 패킷들의 헤더(header)들을 파싱(parsing)하는 단계를 포함한다.
바람직하게는, 상기 방법은,
상기 패킷들의 헤더들을 검사하는 단계; 및
상기 검사된 헤더들에 기초하여 상기 특정 접속에 속하는 것으로서 특정 패킷 유형을 배제하는 단계를 더 포함한다.
바람직하게는, 상기 IP 튜플은 출발지 주소, 목적지 주소, 프로토콜 유형, 출발지 포트, 및 목적지 포트를 포함한다.
본 발명의 일 측면에 따라, 컴퓨터 판독가능 매체(computer readable medium) 상에 실체적으로 내장되고 실행가능한 코드를 포함하며, 패킷 가속(packet acceleration)을 수행하기 위한 컴퓨터 프로그램 제품에 있어서,
상기 실행가능한 코드가 실행될 때 적어도 하나의 데이터 프로세싱 장치가,
특정 접속의 제 1 패킷을 사용하여 상기 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스(sequence)를 실행 시간에 도출하게 하고,
상기 패킷들의 IP(Internet Protocol; 인터넷 프로토콜) 튜플(tuple)을 사용하여 상기 특정 접속에 속하는 것으로서 패킷들을 식별하게 하고, 및
상기 식별된 패킷들에 상기 코드 세그먼트들의 통상의 시퀀스를 적용하게 한다.
바람직하게는, 상기 실행가능한 코드는 상기 데이터 프로세싱 장치가 상기 특정 접속에 대한 통상의 스택을 구성하게 하도록 구성된다.
바람직하게는, 상기 실행가능한 코드는 상기 데이터 프로세싱 장치가 값들로서의 C 언어 goto 레벨들을 사용하여 스레딩된 코드 시퀀스로서 상기 특정 접속에 대한 통상의 스택을 구성하게 하도록 구성된다.
바람직하게는, 상기 실행가능한 코드는 상기 데이터 프로세싱 장치가 상기 IP 튜플을 검출하기 위해 상기 패킷들의 헤더들을 파싱하게 하도록 구성된다.
바람직하게는, 상기 실행가능한 코드는 상기 데이터 프로세싱 장치가
상기 패킷들의 헤더들을 검사하게 하고, 및
상기 검사된 헤더들에 기초하여 상기 특정 접속에 속하는 것으로서 특정 패킷 유형들을 배제하게 하도록 구성된다.
상기 IP 튜플은 출발지 주소, 목적지 주소, 프로토콜 유형, 출발지 포트, 및 목적지 포트를 포함한다.
다른 특징들은 상세한 설명, 도면, 및 청구항에서 명확해질 것이다.
일반적으로, 시스템은 네트워크들 사이에서 통신되는 패킷들을 라우팅(route)하거나 브리징(bridge)하기 위해 사용될 수 있고, 또는 네트워크와 하나 이상의 장치들 사이에 통신되는 패킷들을 라우팅하거나 브리징하기 위해 사용될 수 있다. 예를 들면, 시스템은 제 1 네트워크로부터 들어오고 제 2 네트워크로 나가는 패킷들을 라우팅하고 브리징하기 위해 사용될 수 있다. 상기 시스템은 패킷들이 특정 접속에 속하는지 판단하고, 만일 속한다면 상기 패킷들에 코드 세그먼트들의 통상적 시퀀스를 적용하는 것에 의해 장치를 통해 패킷들의 이동(flow)을 가속시킬 수 있는 프로세서를 포함할 수 있고, 상기 코드 세그먼트들의 통상적 시퀀스는 상기 특정 접속의 제 1 패킷 상에서 수행되는 프로세싱에 기초한 실행 시간(runtime)에서 도출될 수 있다. 이러한 방식으로, 특정 접속에 속하는 것으로 식별된 패킷들은 OS(operating system; 동작 시스템) 네트워크 스택을 우회할 수 있고, 상기 장치를 통해 가속될 수 있으며, 이에 따라 패킷들의 처리량(throughput)은 증가할 수 있다.
일 예시적인 실시예에서, 패킷들은 WAN 또는 LAN 인터페이스 상에서 수신될 수 있다. 프로세서는 네트워크 장치를 통해 패킷들을 가속시키도록 구성된 실행가능 코드들을 포함할 수 있는 플로우 캐시 소프트웨어(flow cache software)(예컨대, 컴퓨터 프로그램 제품)를 사용하여 패킷 가속을 구현할 수 있다.
데이터 패킷들을 프로세싱하기 위해 플로우 캐시 소프트웨어를 사용하는 것은 데이터 패킷 프로세싱이 네트워크 스택으로부터 오프로드(offload)되게 할 수 있다. 플로우 캐시 소프트웨어는 다수의 데이터 패킷 흐름을 조작하고, NAT(network address translation), PPPoE(point-to-point protocol over Ethernet) 종료, VLAN(virtual local area network) 브리징, 멀티캐스트(multicast), 레이트 제한(rate limiting), 컬러 마킹(color marking), 및 쉐이핑(shaping)을 포함하는 다양한 수정 기능들을 제공하도록 구성될 수 있다.
도 1을 참조하면, 시스템(100)은 패킷들을 프로세싱하기 위해 사용될 수 있다. 시스템(100)은 통신을 위해 프로세서(102) 및 브리지(104)를 포함하고, 프로세서(102)와 다른 구성 요소들(도시되지 않음) 사이에서 통신을 가능하게 한다. 프로세서(102)는 OS(operating system; 106)를 포함한다. 네트워크(108)는 시스템(100)과 통신한다.
일 예시적인 실시예에서, 시스템(100)은 단일 칩 상에 구현될 수 있고, 다수의 다른 장치들 및 솔루션(solution)들에 사용될 수 있다. 예를 들면, 시스템(100)은 게이트웨이, 라우터, 브리지, 케이블 모뎀, DSL(digital subscriber line; 디지털 가입자 회선) 모뎀, 기타 네트워킹 장치들, 및 단일 장치 혹은 다수의 장치들에서 이들 장치들의 임의의 조합에서 사용될 수 있는 고도로 집적된 단일 칩인 IAD(integrated access device; 통합 접속 장치) 솔루션일 수 있다. 시스템(100)은 다수의 데이트 플로우(flow)들을 조작하도록 구성될 수 있다. 다른 예시적인 실시예에서, 시스템(100)은 서로 협력하여 동작하도록 구성된 다수의 칩들 상에 구현될 수 있다.
네트워크(108)는 시스템(100)과 통신하는 하나 이상의 네트워크들을 포함할 수 있다. 예를 들면, 네트워크(108)는 시스템(100)과 통신하는 다수의 다른 네트워크들을 포함할 수 있다. 네트워크(108)는 WAN, LAN, PON(passive optical network; 수동형 광 네트워크), GPON(gigabyte passive optical network; 기가바이트 수동형 광 네트워크), 및 임의의 다른 유형의 네트워크를 포함할 수 있다. 시스템(100)은 네트워크들(108) 사이에서 업스트림(upstream) 데이터 패킷들(예컨대, LAN에서 WAN으로), 및 다운스트림(downstream) 데이터 패킷들(예컨대, WAN에서 LAN으로)을 프로세싱하기 위해 다른 네트워크들(108) 사이에 인터페이스를 제공할 수 있다. 도 1이 네트워크(108)와 시스템(100) 사이에 착신(incoming) 데이터 경로 및 발신(outgoing) 데이터 경로를 도시하였을 지라도, 다수의 다른 네트워크들(108)과 통신하기 위해 다수의 다른 데이터 경로들 및 유선/무선 포트(port)들이 있을 수 있다.
프로세서(102)는 패킷들을 프로세싱하도록 배치되고 구성된 프로세서를 포함할 수 있다. 프로세서(102)는 패킷들의 하나 이상의 스트림들을 프로세싱하도록 구성될 수 있다. 일 실시예에서, 프로세서(102)는 단일 스레딩된(threaded) 단일 프로세서 솔루션을 포함할 수 있다. 다른 예시적인 실시예에서, 프로세서(102)는 다수의 스레딩된 프로세서 솔루션을 포함할 수 있다. 프로세서(102)는 패킷 프로세싱에 부가하여 다른 기능들을 수행하도록 구성될 수 있다.
프로세서(102)는 OS(106)를 포함할 수 있다. 예를 들면, OS(102)는 Linux(리눅스) 기반 OS, MAC 기반 OS, 윈도우즈 OS 혹은 비스타 OS와 같은 Microsoft(마이크로소프트) 기반 OS, eCos(embedded Configurable operation system; 내장형 설정가능 OS), VxWorks, BSD(Berkeley Software Distribution) OS, QNX OS, 또는 임의의 유형의 OS를 포함할 수 있다.
OS(106)는 수신 드라이버(110), 파서(parser) 모듈(112), 테이블(table; 116)을 갖는 플로우 캐시 모듈(114), 버퍼 로그(buffer log; 118), 네트워크 스택(120), 및 송신 드라이버(122)를 포함할 수 있다. 수신 드라이버(110)는 네트워크(108)에 의해 시스템(100)으로 송신된 패킷들을 수신하도록 구성될 수 있다. 수신 드라이버(110)는 수신된 패킷들을 저장하도록 데이터 버퍼(도시되지 않음)를 포함할 수 있다. 예를 들면, 데이터 버퍼는 Linux OS에서 "skbuff" 또는 일부 OS에서 "mbuf"로서 언급될 수 있다. 수신 드라이버(110)는 파서 모듈(112)로 패킷들을 통신할 수 있다.
파서 모듈(112)은 패킷들의 IP(인터넷 프로토콜) 튜플(tuple)을 사용하여 패킷들을 식별하도록 구성될 수 있다. IP 튜플은 패킷의 하나 이상의 필드들을 포함할 수 있다. 일 예시적인 실시예에서, IP 튜플은 IP 출발지(source) 주소, IP 목적지(destination) 주소, IP 프로토콜 유형, 출발지 포트, 및 목적지 포트를 포함할 수 있다. 예를 들면, 출발지 포트 및 목적지 포트는 예컨대 TCP(송신 제어 프로토콜) 또는 UDP(사용자 데이터그램 프로토콜)와 같은 상부의 전송 프로토콜의 출발지 및 목적지 포트들일 수 있다.
파서 모듈(112)은 수신된 패킷 헤더를 신속하게 파싱(parsing)하는 것에 의해 패킷들로부터 IP 튜플을 검출하도록 구성될 수 있다. 예를 들면, 파서 모듈(112)은 수신된 제 2 계층 헤더(들)로부터 IP 튜플을 검출할 수 있다. 파서 모듈(112)은 IP 튜플 상의 해시(hash)를 계산하도록 구성될 수 있다. 파서 모듈(112)은 엔트리(entry)가 IP 튜플에 대한 테이블(116)에 존재하는지 보기 위해 테이블(116)을 보도록 계산된 해시를 사용할 수 있다. 테이블(116)은 접속을 저장할 수 있고, 이 접속의 패킷들은 플로우 캐시 모듈(114)에 의해 가속될 수 있으며, 테이블 정보는 IP 튜플에 적용되는 해시 함수에 의해 접속가능하다. 만일 테이블(116) 내에 엔트리가 존재한다면, 이는 플로우 캐시 히트(flow cache hit)로서 언급될 수 있다. 만일 테이블(116) 내에 엔트리가 존재하지 않으면, 플로우 캐시 미스(flow cache miss)로서 언급될 수 있다. 다른 예시적인 실시예에서, 튜플은 제 2 계층 필드들의 결합일 수 있고, 파서 모듈(112)은 이 제 2 계층 필드들을 검출하도록 구성될 수 있다.
만일 엔트리가 테이블(116) 내에 존재하지 않으면, 패킷에 대한 정보는 버퍼 로그(118)에 로깅(log)될 수 있다. 예를 들면, 일 예시적인 실시예에서, 제 2 계층 헤더, 수신된 패킷의 IP 헤더의 오프셋, 및 이른바 TTL(time to live) 필드인 IP 헤더의 특정 필드, DSCP 필드, 및 IP 튜플 필드는 수신된 패킷들의 IP 튜플 해시 값에 따라 버퍼 로그에 로깅될 수 있다. 수신된 패킷은 송신 드라이버(122)에 도달할 때까지 네트워크 스택(120)으로 이동하는 것에 의해 네트워크 스택의 정상적 경로를 따를 수 있다. 송신 드라이버(122)에서 만일 패킷이 지속해서 연관된 버퍼 로그를 갖는다면, 패킷은 플로우 캐시 모듈(114)로 다시 넘겨진다. 플로우 캐시 모듈(114)은 송신 헤더를 버퍼 로그로 로깅하고, 수신된 송신 로깅된 패킷 데이터를 사용하여 코드 세그먼트의 통상의 시퀀스를 계산하며, 엔트리는 수신된 송신 헤더들의 버퍼 로그 및 코드 세그먼트들의 통상의 시퀀스를 포함하도록 수신된 IP 튜플 해시에 대해 테이블(116)내에 생성된다. 이후에 패킷은 다음 목적지로 패킷을 네트워크(108)로 전송하는 송신 드라이버(122)로 돌아온다.
만일 엔트리가 테이블(116)에 존재하지 않는다면, 수신된 패킷은 특정 접속을 위해 수신된 제 1 패킷일 수 있다. 만일 이 접속의 제 1 패킷이 플로우 캐시 가속을 위한 후보(candidate)가 되되록 판단된다면, 엔트리는 테이블(116)내에 생성될 수 있고, 이에 따라 이 특정 접속에 대한 차후의 패킷들은 파서 모듈(112)이 엔트리가 테이블(116) 내에 존재하는지 여부를 보는 검사를 할 때 플로우 캐시 히트일 수 있다. 패킷은 프로세싱 단계의 시퀀스가 이 패킷에 대해 판단될 수 있도록 네트워크 스택(120)에 의해 프로세싱되는 것으로서 태그(tag)되고 추적(track)될 수 있다.
버퍼 로그(118)는 수신된 데이터 패킷과 직접적으로 혹은 간접적으로 연관될 수 있다. 일 예시적인 실시예에서, 수신 드라이버(110)는 패킷들의 저장을 위해 버퍼 로그(118)를 사용할 수 있다. 직접적 연관의 일 실시예는 버퍼 로그(118)의 일부 예비된 헤드룸(headroom)을 갖게 한다. 예를 들면, 만일 최대 데이터 버퍼가 1800 바이트의 크기라면, 2048 바이트 패킷 버퍼는 최초의 248 바이트의 버퍼 로그와 수신된 패킷에 대한 데이터 스토리지(storage) 모두를 수용할 수 있다. 버퍼 로그(118)는 2048 정렬된 메모리에서 할당될 수 있고, 이는 데이터 버퍼로의 포인터(pointer)로부터 버퍼 로그(118)로 낮은 11비트의 단순한 클리어 동작(clear operation)을 변환한다. 대안적인 예시적인 실시예에서, 버퍼 로그(118)는 데이터 버퍼 문맥 객체(context object)와 간접적으로 연관될 수 있다.
IP 튜플 플로우 캐시 히트에 대한 검사 이전에, 파서 모듈(112)은 패킷에 관련된 다른 정보를 검사하도록 구성될 수 있다. 예를 들면, 파서 모듈(112)은 엔트리가 테이블(116) 내에 존재하는지 여부를 판단하는 것으로부터 특정 패킷 유형을 배제하기 위해 제 2/3 계층 헤더들을 검사하도록 구성될 수 있다. 예를 들면, 파서 모듈(112)은 예컨대, 브로드캐스트(broadcast) 혹은 멀티캐스트(multicast) 패킷, 제 2 계층 발견 프로토콜에 관련된 패킷, 특정 세션에 속한 패킷, 킵 얼라이브(keep alive) 제어 프로토콜 패킷, 분할된 데이터 패킷, 및/또는 TCP 프로토콜의 RST/FIN 비트들과 같은 대역 내 제어 시그널링(signaling)을 갖는 데이터 패킷들과 같은 패킷들을 배제하도록 제 2/3 계층 헤더들을 검사할 수 있다. 이러한 유형의 데이터 패킷들은 IP 튜플에 로깅하지 않고 네트워크 스택(120)에 직접적으로 전달되고, 특정 네트워크 스택 조작을 요구하도록 취급될 수 있다. 이러한 유형의 패킷들은 엔트리가 테이블(116)에 존재하는지 판단하기 전에 파서 모듈(112)이 검사하는 배제 목록의 일부를 형성할 수 있다. 대안적으로, 파서 모듈(112)은 엔트리에 대해 테이블(116)을 검사하고 있는 동일한 시간 또는 그 근처에서 배제 목록을 검사할 수 있다.
배제 목록에 속하지 않았고 이와 연관된 버퍼 로그를 갖는 패킷은 플로우 캐시 모듈(114)에 의한 가속(예컨대, 소프트웨어 가속)을 위한 후보로서 가정된다. 패킷이 네트워크 스택(120)을 통해 전달할 때, 이러한 가정은 만일 예컨대 패킷이 애플리케이션 레벨 게이트웨이와 같은 특정 프로토콜 프로세싱을 통해 통과한다면 무효(invalid)가 될 수 있다. 이러한 시나리오 하에서, 버퍼 로그(118)는 (만일 간접적으로 연관된다면) 해제(release)될 수 있고, 패킷은 정상적 프로세싱으로서 간주된다.
다음 노드로 전송되는 패킷들은 송신 드라이버(122)로 주어질 수 있다. 송신 드라이버(122)에서, 만일 패킷이 지속해서 가속을 위한 후보로서 태그된다면, IP 헤더의 오프셋(offset)은 각 제 2 계층 밀봉(encapsulation)의 프로토콜 필드를 사용하여 계산될 수 있다. 로그된 수신 헤더 정보 및 송신 헤더 정보는 패킷에 대한 정보를 계산하거나 추론하도록 사용될 수 있다. 플로우 캐시 모듈(114)은 로깅된 수신 헤더 정보 및 송신 헤더 정보를 사용하여 패킷의 프로세싱에 대한 정보를 판단하도록 구성될 수 있다.
예를 들면, 플로우 캐시 모듈(114)은 만일 TTL이 감소된다면 패킷이 라우팅된 접속에 속하는지 판단할 수 있다. 플로우 캐시 모듈(114)은 만일 수신 및 송신 IP 튜플들이 다르다면 패킷이 NAT 접속(즉, 네트워크 주소 해석 프로세싱을 통해 이동된 접속)에 속하는지 판단할 수 있다. 플로우 캐시 모듈(114)은 만일 제 2 계층 헤더들이 다르고 라우팅되지 않는다면 패킷이 브리징된 또는 스위치 접속에 속하는지 판단할 수 있다. 플로우 캐시 모듈(114)은 패킷이 특정 QOS 제 2 계층 태깅 또는 DSCP IP 수정이 필요할지 판단할 수 있다. 플로우 캐시 모듈(114)은 또한 우선도(priority) 및 목적지 포트, 채널, 송신 큐(queue), 및 기타 정보와 같은 그 밖의 정보를 판단할 수 있다.
플로우 캐시 모듈(114)은 특정 접속에 속하는 것으로서 IP 튜플에 의해 식별되는 임의의 차후 패킷들에 적용될 필요가 있는 한정된 동작의 시퀀스로 적용가능한 판단을 해석하도록 구성될 수 있다. 플로우 캐시 모듈(114)은 접속의 제 1 패킷에 대해 도출된 정보를 사용하여 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스를 실행 시간에서 도출하도록 구성될 수 있다. 동작 시퀀스 및 관련된 데이터는 해시 키로서 수신 IP 튜플을 사용하여 테이블(116)로 삽입될 수 있는 플로우 캐시 객체로 입력될 수 있다. 이러한 방식으로, 플로우 캐시 모듈(114)은 특정 접속에 대해 통상의 스택을 생성한다.
플로우 캐시 테이블(116)의 IP 튜플 히트를 갖는 수신 드라이버(110)에서 수신된 임의의 차후 패킷들은 테이블(116)에 저장된 동작의 통상의 시퀀스를 단순히 실행할 것이다. 이에 따라, 차후 패킷들은 네트워크 스택(120)에 의해 프로세싱될 필요가 없을 것이며, 네트워크 스택(120)을 우회할 것이다. 일 실시예에서, 코드 세그먼트들의 통상의 시퀀스의 최종 동작은 패킷을 송신 드라이버(122)에 인큐잉(enqueue)하기 위한 시도(invocation)일 수 있다.
일 예시적인 실시예에서, 플로우 캐시 모듈(114)은 값으로서 C 언어의 goto 라벨(label)을 사용하여 스레딩된 코드 시퀀스로서 특정 접속을 위한 통상의 스택을 구성하도록 설정될 수 있다. C 언어 컴파일러(complier)는 "값으로서의 라벨"로 언급되는 C 언어에 대한 확장을 제공한다. 이러한 구성은 C 라벨 구성이 값으로서 사용되게 허용한다. 코드 세그먼트는 C 명령문(statement)의 세트로서 정의될 수 있고, 라벨에 의해 고유하게 식별될 수 있다. 이후에, 라벨의 배열은 실행되는 코드 세그먼트들의 목록을 특정한다. 코드 세그먼트의 최종 C 명령문은 특정 goto 명령문일 수 있고, 이 명령문의 목적지 라벨은 라벨들의 배열의 다음 색인으로부터 꺼내지고, 이에 따라 코드 세그먼트들을 스레딩한다. 하나의 특정 코드 세그먼트는 return으로 정의될 수 있고, 이것의 식별 라벨은 라벨들의 배열의 최종 요소일 수 있다.
플로우 캐시 모듈(114)은 예컨대, 모든 제 2 계층 헤더들을 삭제, 새로운 제 2 계층 헤더들을 삽입, 특정 오프셋에서 바이트들을 교체, TTL을 감소, IP DSCP를 맹글링(mangle), 출발지 NAT를 맹글링, D-NAT를 맹글링, 제 3 계층 체크섬(checksum)을 점진적으로 갱신, 제 4 계층 체크섬을 점진적으로 갱신, 패킷 복제, 접근된(touched) 데이터만을 데이터 캐시 무효화(data cache invalidate), 송신 장치에서 인큐잉, 복귀(return), 및 기타 동작들, 및 동작들의 조합과 같은 동작들을 달성하기 위해 여러 일반적 코드 세그먼트들을 구현할 수 있다. 코드 세그먼트들은 임의의 조건적 시험 또는 함수 호출이 결여된 문자일 수 있다. 수신 및 송신 헤더 정보를 사용하여, 코드 시퀀스들의 적합한 세트가 추론될 수 있고, 이 라벨들의 스레드(thread)는 각 코드 세그먼트에 의해 필요로 될 수 있는 다른 정보에 따라 테이블(116)의 플로우 캐시 엔트리에 저장된다.
도 2를 참조하면, 프로세스(200)는 패킷들을 프로세싱하기 위해 사용될 수 있다. 프로세스(200)는 특정 접속의 제 1 패킷을 사용하여 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스를 실행 시간에 도출하는 단계(202), 패킷들의 IP 튜플을 사용하여 특정 접속에 속하는 것으로서 패킷들을 식별하는 단계(204), 및 식별된 패킷들에 코드 세그먼트들의 통상의 시퀀스를 적용하는 단계(206)를 포함한다.
일 예시적인 실시예에서, 프로세스(200)는 도 1의 파서 모듈(112) 및 플로우 캐시 모듈(114)에 의해 구현될 수 있다. 일 실시예에서, 파서 모듈(112) 및 플로우 캐시 모듈(114)은 시스템(100)을 통해 패킷들을 가속시기키 위해 패킷들 상에 동작하는 소프트웨어 구성요소로서 구현될 수 있다.
예를 들면, 플로우 캐시 모듈(114)은 특정 접속의 제 1 패킷을 사용하여 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스를 실행 시간에 도출하도록 구성될 수 있다(202). 이러한 방식으로, 플로우 캐시 모듈(114)은 코드 세그먼트들의 통상의 시퀀스를 판단하기 위해 제 1 패킷의 수신 헤더 및 송신 헤더로부터의 정보를 사용할 수 있다. 플로우 캐시 모듈(114)은 특정 접속에 대한 통상 의 스택을 구성할 수 있고, 이에 따라 특정 접속에 대한 차후 패킷들은 네트워크 스택(예컨대, 도 1의 네트워크 스택(120))을 우회할 수 있다.
파서 모듈(112)은 패킷들(204)의 IP 튜플을 사용하여 특정 접속에 속하는 것으로서 패킷들을 식별하도록 구성될 수 있다. 파서 모듈(112)은 IP 튜플을 검출하기 위해 수신된 패킷들의 헤더들을 파싱할 수 있다. 파서 모듈(112)은 IP 튜플을 사용하여 해시 키를 계산할 수 있고, 엔트리가 테이블(116)에 존재하는지 여부를 판단하기 위해 테이블(116)에 대한 해시 키를 검사할 수 있다. 플로우 캐시 모듈(114)은 식별된 패킷들에 코드 세그먼트들의 통상의 시퀀스를 적용할 수 있다(206).
일 예시적인 실시예에서, 파서 모듈(112), 플로우 캐시 모듈(114), 및 프로세서(200)를 갖는 시스템(100)의 사용은 패킷들을 프로세싱하기 위해 네트워크 스택만을 단순히 사용하여 시스템 상에서 6 폴드(fold) 성능 이득을 획득하도록 설명된다. 통상의 스레딩된 코드 시퀀스를 동적으로 구성한 시스템(100)은 모든 추가적 데이터 패킷들이 통상의 스텍으로 플로우 캐시 히트를 통해 재유도된 경우 100 Mbit 다운스트림 VDSL 접속 상에서 초당 123,000 패킷의 유선 다운스트림 레이트를 유지할 수 있었다. DSL 소프트웨어 참조의 최근에 사용된 네트워크 스택 상에서의 6 폴드 성능 이득은 플로우 캐시 기반 소프트웨어 가속을 사용하여 설명되었다.
본원에 기재된 다양한 기술들의 실시예는 디지털 전자 회로에서, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합에서 구현될 수 있다. 실시예들은 예컨대 프로그램가능 프로세서, 컴퓨터, 또는 다중 컴퓨터와 같은 데이터 프 로세싱 장치의 동작의 제어로 실행하기 위한 기계 판독가능 스토리지 장치와 같은 정보 운반자에 컴퓨터 프로그램이 실제적으로 내장된 컴퓨터 프로그램 제품으로서 구현될 수 있다. 상기 기재된 컴퓨터 프로그램(들)과 같은 컴퓨터 프로그램은 컴파일된 또는 해석된 언어를 포함하는 프로그래밍 언어의 임의의 형태로 기록될 수 있고, 독립형 프로그램, 또는 모듈, 구성요소, 서브루틴, 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 유닛으로서 배치될 수 있다. 컴퓨터 프로그램은 다수의 사이트들에 걸쳐 분산되거나 하나의 사이트에서 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 실행되고 통신 네트워크에 의해 상호접속되도록 배치될 수 있다.
방법의 단계들은 입력 데이터 상에서 동작하고, 출력을 생성하는 것에 의해 기능들을 수행하도록 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램가능 프로세서들에 의해 수행될 수 있다. 방법 단계들은 또한 예컨대, FPGA나 ASIC과 같은 특정 목적의 논리 회로에 의해 수행될 수 있고, 장치는 FPGA나 ASIC와 같은 특정 목적 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은 예시적으로 범용 및 특정 목적 마이크로프로세서, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 모두 포함한다. 일반적으로, 프로세서는 RAM 또는 ROM, 또는 이 둘 모두로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 구성요소들은 명령들을 실행하기 위한 적어도 하나의 프로세서, 및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 장치들을 포함할 수 있다. 일반적으로, 컴퓨터는 또한 예컨대, 자기 디스크, 자기 광 디스크, 또는 광 디스크와 같이 데이터를 저장하기 위한 하나 이 상의 대용량 스토리지 장치들에 데이터를 전달하거나 이로부터 데이터를 수신할 수 있도록, 또는 이 둘 모두를 위해 동작적으로 결합되거나 이를 포함할 수 있다. 컴퓨터 프로그램 명령 및 데이터를 내장하기에 적합한 정보 운반자는 일 예시로서 예컨대 EPROM, EEPROM, 및 플래시 메모리와 같은 반도체 메모리 장치, 예컨대 내장용 하드 디스크 또는 탈착가능 디스크와 같은 자기 디스크, 자기 광 디스크, 및 CD-ROM 및 DVD-ROM 디스크를 포함하는 비 휘발성 메모리의 모든 형태를 포함한다. 프로세서 및 메모리는 특정 목적 논리 회로에 추가되거나 통합될 수 있다.
실시예들은 예컨대 데이터 서버와 같은 백 엔드(back-end) 구성요소를 포함하거나, 예컨대 애플리케이션 서버와 같은 미들웨어(middleware) 구성요소를 포함하거나, 또는 예컨대 사용자가 구현으로 상호작용할 수 있는 웹 브라우저나 GUI(graphical user interface)를 갖는 클라이언트 컴퓨터와 같은 프론트 엔드(front-end) 구성요소를 포함하거나, 백 엔드, 미들웨어, 프론트 엔드 구성요소들의 임의의 조합을 포함하는 컴퓨팅 시스템으로 구현될 수 있다. 구성요소들은 예컨대 통신 네트워크와 같은 디지털 데이터 통신의 매체 또는 임의의 형태에 의해 상호접속될 수 있다. 통신 네트워크들의 예시는 예컨대, 인터넷과 같은 WAN 및 LAN을 포함한다.
기재된 실시예들의 특정 형태가 본원에 설명된 것과 같이 도시되는 한편, 다수의 수정, 치환, 변경, 및 균등물이 당업자에게 이제 일어날 것이다. 따라서, 첨부된 청구항은 실시예의 범위 내에 부합하는 모든 수정 및 변경을 포함하는 것으로 의도된다.
도 1은 패킷들을 프로세싱하기 위한 시스템의 예시적인 블럭도이다.
도 2는 패킷들을 프로세싱하기 위한 예시적인 흐름도이다.

Claims (10)

  1. 특정 접속의 제 1 패킷을 사용하여 상기 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스(sequence)를 실행 시간에 도출하도록 배치되고 구성된 플로우 캐시 모듈(flow cache module); 및
    상기 패킷들의 IP(Internet Protocol; 인터넷 프로토콜) 튜플(tuple)을 사용하여 상기 특정 접속에 속하는 것으로서 패킷들을 식별하도록 배치되고 구성된 파서 모듈(parser module)을 포함하고,
    상기 플로우 캐시 모듈은 상기 식별된 패킷들에 상기 코드 세그먼트들의 통상의 시퀀스를 적용하도록 배치되고 구성된 것을 특징으로 하는 장치.
  2. 청구항 1에 있어서,
    상기 플로우 캐시 모듈은 상기 특정 접속에 대한 통상의 스택(stack)을 구성하도록 배치되고 구성된 것을 특징으로 하는 장치.
  3. 청구항 1에 있어서,
    상기 플로우 캐시 모듈은 값(value)들로서의 C 언어 goto 레벨을 사용하여 스레딩된(threaded) 코드 시퀀스로서 상기 특정 접속에 대한 통상의 스택을 구성하도록 배치되고 구성된 것을 특징으로 하는 장치.
  4. 청구항 1에 있어서,
    상기 파서 모듈은 상기 IP 튜플을 검출하기 위해 상기 패킷들의 헤더(header)들을 파싱(parse)하도록 배치되고 구성된 것을 특징으로 하는 장치.
  5. 청구항 1에 있어서,
    상기 파서 모듈은 상기 패킷들의 헤더들을 검사하도록 배치되고 구성되며,
    상기 플로우 캐시 모듈은 상기 검사된 헤더들에 기초하여 상기 특정 접속에 속하는 것과 같은 특정 패킷 유형들을 배제하도록 배치되고 구성된 것을 특징으로 하는 장치.
  6. 특정 접속의 제 1 패킷을 사용하여 상기 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스(sequence)를 실행 시간에 도출하는 단계;
    상기 패킷들의 IP(Internet Protocol; 인터넷 프로토콜) 튜플(tuple)을 사용하여 상기 특정 접속에 속하는 것으로서 패킷들을 식별하는 단계; 및
    상기 식별된 패킷들에 상기 코드 세그먼트들의 통상의 시퀀스를 적용하는 단계를 포함하는 방법.
  7. 청구항 6에 있어서,
    상기 코드 세그먼트들의 통상의 시퀀스를 실행 시간에 도출하는 단계는 상기 특정 접속에 대한 통상의 스택(stack)을 구성하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 청구항 6에 있어서,
    상기 코드 세그먼트들의 통상의 시퀀스를 실행 시간에 도출하는 단계는 값(value)들로서의 C 언어 goto 레벨들을 사용하여 스레딩된(threaded) 코드 시퀀스로서 상기 특정 접속에 대한 통상의 스택을 구성하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 청구항 6에 있어서,
    상기 패킷들을 식별하는 단계는 상기 IP 튜플을 검출하기 위해 상기 패킷들의 헤더(header)들을 파싱(parsing)하는 단계를 포함하는 것을 특징으로 하는 방법.
  10. 컴퓨터 판독가능 매체(computer readable medium) 상에 실체적으로 내장되고 실행가능한 코드를 포함하며, 패킷 가속(packet acceleration)을 수행하기 위한 컴퓨터 프로그램 제품에 있어서,
    상기 실행가능한 코드가 실행될 때 적어도 하나의 데이터 프로세싱 장치가,
    특정 접속의 제 1 패킷을 사용하여 상기 특정 접속에 속하는 패킷들에 대한 코드 세그먼트들의 통상의 시퀀스(sequence)를 실행 시간에 도출하게 하고,
    상기 패킷들의 IP(Internet Protocol; 인터넷 프로토콜) 튜플(tuple)을 사용 하여 상기 특정 접속에 속하는 것으로서 패킷들을 식별하게 하고, 및
    상기 식별된 패킷들에 상기 코드 세그먼트들의 통상의 시퀀스를 적용하게 하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
KR1020090070880A 2008-07-31 2009-07-31 네트워크 스택의 데이터 경로 가속 KR101115436B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/183,935 US7908376B2 (en) 2008-07-31 2008-07-31 Data path acceleration of a network stack
US12/183,935 2008-07-31

Publications (2)

Publication Number Publication Date
KR20100014194A true KR20100014194A (ko) 2010-02-10
KR101115436B1 KR101115436B1 (ko) 2012-02-20

Family

ID=41328548

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090070880A KR101115436B1 (ko) 2008-07-31 2009-07-31 네트워크 스택의 데이터 경로 가속

Country Status (5)

Country Link
US (1) US7908376B2 (ko)
EP (1) EP2150023B1 (ko)
KR (1) KR101115436B1 (ko)
CN (1) CN101645843B (ko)
TW (1) TWI423616B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US20090092136A1 (en) * 2007-10-09 2009-04-09 Broadcom Corporation System and method for packet classification, modification and forwarding
WO2012079041A1 (en) 2010-12-09 2012-06-14 Exegy Incorporated Method and apparatus for managing orders in financial markets
US10637782B2 (en) 2011-03-23 2020-04-28 Hughes Network Systems, Llc System and method for policy-based multipath WAN transports for improved quality of service over broadband networks
US9716659B2 (en) 2011-03-23 2017-07-25 Hughes Network Systems, Llc System and method for providing improved quality of service over broadband networks
US9240950B2 (en) 2011-03-23 2016-01-19 Hughes Network Systems, Llc System and method for providing quality of service over dedicated local loop networks
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US9459076B2 (en) 2012-12-12 2016-10-04 Trackingpoint, Inc. Rifle scope, apparatus, and method including proximity detection and warning system
US10061808B2 (en) * 2014-06-03 2018-08-28 Sap Se Cached views
EP3560135A4 (en) 2016-12-22 2020-08-05 IP Reservoir, LLC PIPELINES INTENDED FOR AUTOMATIC ACCELERATED LEARNING BY EQUIPMENT
EP3367621A1 (en) * 2017-02-28 2018-08-29 Intel Corporation Method and apparatus for local traffic acceleration
US10178207B1 (en) * 2017-07-10 2019-01-08 Adtran, Inc. Optimized defragmentation of data packets in a passive optical network
CN110049386B (zh) * 2018-01-17 2022-02-25 华为技术有限公司 通信网络及相关设备
CN111355662B (zh) * 2018-12-24 2022-09-13 中移(杭州)信息技术有限公司 一种数据加速方法、装置、网关设备及可读存储介质
EP3970107A4 (en) 2019-05-14 2023-01-11 Exegy Incorporated METHODS AND SYSTEMS FOR GENERATION AND DISTRIBUTION OF TRADING SIGNALS FROM FINANCIAL MARKET DATA
CN112054868B (zh) * 2019-06-06 2021-11-19 中国移动通信有限公司研究院 一种光模块、管控信息处理方法及通信系统
US20220261901A1 (en) 2021-02-16 2022-08-18 Exegy Incorporated Methods and Systems for Bettering Market Making at Low Latency

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6389479B1 (en) 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6339595B1 (en) * 1997-12-23 2002-01-15 Cisco Technology, Inc. Peer-model support for virtual private networks with potentially overlapping addresses
US6771646B1 (en) * 1999-06-30 2004-08-03 Hi/Fn, Inc. Associative cache structure for lookups and updates of flow records in a network monitor
US6496935B1 (en) * 2000-03-02 2002-12-17 Check Point Software Technologies Ltd System, device and method for rapid packet filtering and processing
US20040213189A1 (en) 2001-01-25 2004-10-28 Matthew David Alspaugh Environmentally-hardened ATM network
US7042888B2 (en) 2001-09-24 2006-05-09 Ericsson Inc. System and method for processing packets
US7269663B2 (en) 2001-09-28 2007-09-11 Intel Corporation Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache
US7512129B1 (en) 2002-02-19 2009-03-31 Redback Networks Inc. Method and apparatus for implementing a switching unit including a bypass path
US7376125B1 (en) * 2002-06-04 2008-05-20 Fortinet, Inc. Service processing switch
US7340535B1 (en) * 2002-06-04 2008-03-04 Fortinet, Inc. System and method for controlling routing in a virtual router system
US20040039940A1 (en) * 2002-08-23 2004-02-26 Koninklijke Philips Electronics N.V. Hardware-based packet filtering accelerator
US7266120B2 (en) * 2002-11-18 2007-09-04 Fortinet, Inc. System and method for hardware accelerated packet multicast in a virtual routing system
US7586920B2 (en) 2003-05-30 2009-09-08 Calix Networks, Inc. Merging multiple data flows in a passive optical network
US7599361B2 (en) 2004-07-02 2009-10-06 P-Cube Ltd. Wire-speed packet management in a multi-pipeline network processor
ATE518205T1 (de) 2004-11-25 2011-08-15 Telecom Italia Spa Kombination aus ic-karte und drahtlosem sender- /empfängermodul für mobilkommunikationsgeräte
WO2006080898A1 (en) 2005-01-26 2006-08-03 Infineon Technologies Ag Improvements in and relating to data processing
US8639837B2 (en) 2006-07-29 2014-01-28 Blue Coat Systems, Inc. System and method of traffic inspection and classification for purposes of implementing session ND content control
US20090092136A1 (en) 2007-10-09 2009-04-09 Broadcom Corporation System and method for packet classification, modification and forwarding

Also Published As

Publication number Publication date
TW201021466A (en) 2010-06-01
KR101115436B1 (ko) 2012-02-20
CN101645843B (zh) 2015-11-25
TWI423616B (zh) 2014-01-11
US20100027545A1 (en) 2010-02-04
EP2150023A2 (en) 2010-02-03
EP2150023A3 (en) 2014-08-27
CN101645843A (zh) 2010-02-10
US7908376B2 (en) 2011-03-15
EP2150023B1 (en) 2015-09-09

Similar Documents

Publication Publication Date Title
KR101115436B1 (ko) 네트워크 스택의 데이터 경로 가속
US10097402B2 (en) Filter tables for management functions
CN111095881B (zh) 用于分段路由网络信令和分组处理的方法及装置
US10432745B2 (en) Accelerated network packet processing
US10534601B1 (en) In-service software upgrade of virtual router with reduced packet loss
US7983257B2 (en) Hardware switch for hypervisors and blade servers
JP3717836B2 (ja) ダイナミック・ロード・バランサ
US9299434B2 (en) Dedicated egress fast path for non-matching packets in an OpenFlow switch
KR101969194B1 (ko) 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법
US8638793B1 (en) Enhanced parsing and classification in a packet processor
US20180083876A1 (en) Optimization of multi-table lookups for software-defined networking systems
US20080013541A1 (en) Selective header field dispatch in a network processing system
US20110026527A1 (en) Tag-based interface between a switching device and servers for use in frame processing and forwarding
US8867568B2 (en) Method for parsing network packets having future defined tags
Li et al. Improving SDN scalability with protocol-oblivious source routing: A system-level study
US20130294449A1 (en) Efficient application recognition in network traffic
US20190215306A1 (en) Rule processing and enforcement for interleaved layer 4, layer 7 and verb based rulesets
CZ20021442A3 (cs) Způsob a systém pro klasifikaci rámců a protokolů
US11431677B2 (en) Mechanisms for layer 7 context accumulation for enforcing layer 4, layer 7 and verb-based rules
CN112671941A (zh) 报文处理方法、装置、设备及介质
JP3645735B2 (ja) ネットワーク中継装置及びネットワーク中継方法
CN112532468A (zh) 网络测量系统、方法、设备及存储介质
Baldi et al. Network Function Modeling and Performance Estimation.
US11824738B2 (en) Network traffic flooding for unknown data-link to transport mapping scenarios
US20230179688A1 (en) Variable Frame Headers

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150203

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee