KR102337516B1 - 패킷들로부터 데이터를 추출하는 방법 및 그 장치 - Google Patents

패킷들로부터 데이터를 추출하는 방법 및 그 장치 Download PDF

Info

Publication number
KR102337516B1
KR102337516B1 KR1020150087785A KR20150087785A KR102337516B1 KR 102337516 B1 KR102337516 B1 KR 102337516B1 KR 1020150087785 A KR1020150087785 A KR 1020150087785A KR 20150087785 A KR20150087785 A KR 20150087785A KR 102337516 B1 KR102337516 B1 KR 102337516B1
Authority
KR
South Korea
Prior art keywords
layer
protocol
fields
token
generic
Prior art date
Application number
KR1020150087785A
Other languages
English (en)
Other versions
KR20150145728A (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 KR20150145728A publication Critical patent/KR20150145728A/ko
Application granted granted Critical
Publication of KR102337516B1 publication Critical patent/KR102337516B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • 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
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • 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/03Protocol definition or specification 
    • 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

Landscapes

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

Abstract

패킷들로부터 데이터를 추출하기 위한 장치의 실시예들은, 패킷들로부터 필드들이 추출되게 하는 프로그램가능한 레이어 커맨드들에 관련된다. 패킷은 개별 레이어들로 분할된다. 레이어 각각에 이 레이어가 어떤 레이어인지 식별하는 것을 돕는 고유한 레이어 타입 번호가 주어진다. 레이어 타입에 기초하여, 레이어 각각은 제네릭 포맷으로 확장된다. 레이어 각각은 이 레이어에 대해 제네릭 레이어 커맨드들의 세트를 갖는다. 레이어 커맨드 각각의 필드들은 fieldOffset, 및 fieldLen이다. 이들 레이어 커맨드들은 패킷 내의 정보가 프로그램가능한 방식으로 추출되게 한다. 패킷의 프로토콜 레이어 각각으로부터 추출된 필드들은 토큰 레이어를 형성하도록 연결된다. 모든 토큰 레이어들은, 패킷의 추가 프로세싱을 위해 사용되는, 최종 토큰을 형성하기 위해 연결된다.

Description

패킷들로부터 데이터를 추출하는 방법 및 그 장치{METHOD OF EXTRACTING DATA FROM PACKETS AND AN APPARATUS THEREOF}
본 발명은 네트워크 패킷들에 관한 것이다. 보다 구체적으로, 본 발명은 패킷들로부터 데이터를 추출하는 방법 및 그 장치에 관한 것이다.
이더넷 패킷들과 같은, 네트워크 패킷들을 프로세스하기 위해, 패킷들로부터 특정한 필드들을 추출할 필요가 있다. 추출된 필드들 내에 포함된 값들은 얼마나 많은 패킷들이 처리되어야 (handled) 하는지 결정하는 것을 돕는다. 예를 들어, 스위칭은 패킷이 전송되어야 하는 포트를 결정하기 위해 이더넷 헤더 내부에서 48 비트 MAC 수신지 어드레스를 활용한다. 유사하게, 라우팅은 IPv4 레이어 내에 포함된 32 비트 수신지 IP 어드레스를 활용한다. 현재 하드웨어 솔루션들은 패킷들로부터 이러한 정보를 추출하기 위해 고정된 추출 메커니즘들을 활용한다. 패킷 내에서 추출될 관련 정보가 배치된 위치의 결정은 구현시 이루어진다. 그러나, 현재 하드웨어 솔루션들은 발전하는 네트워크 프로토콜들을 처리할 수 없다.
패킷들로부터 데이터를 추출하기 위한 장치의 실시예들은, 패킷들로부터 필드들이 추출되게 하는 프로그램가능한 레이어 커맨드들에 관련된다. 패킷은 개별 레이어들로 분할된다. 레이어 각각에 이 레이어가 어떤 레이어인지 식별하는 것을 돕는 고유한 레이어 타입 번호가 주어진다. 레이어 타입에 기초하여, 레이어 각각은 제네릭 포맷으로 확장된다. 레이어 각각은 이 레이어에 대해 제네릭 레이어 커맨드들의 세트를 갖는다. 레이어 커맨드 각각의 필드들은 상기 확장된 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정하는 fieldOffset, 및 상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen이다. 이들 레이어 커맨드들은 패킷 내의 정보가 프로그램가능한 방식으로 추출되게 한다. 패킷의 프로토콜 레이어 각각으로부터 추출된 필드들은 토큰 레이어를 형성하도록 연결된다. 모든 토큰 레이어들은, 패킷의 추가 프로세싱을 위해 사용되는, 최종 토큰을 형성하기 위해 연결된다.
일 양태에서, 파서 엔진 (parser engine) 을 구현하는 방법이 제공된다. 방법은, 패킷의 프로토콜 레이어들을 식별하는 단계, 상기 프로토콜 레이어의 상기 식별에 기초하여, 제네릭 포맷 (generic format) 으로 상기 프로토콜 레이어 각각을 확장하는 단계, 및 상기 확장된 프로토콜 레이어들로부터 컨텐츠들을 선택하여 최종 토큰을 형성하는 단계를 포함한다.
일부 실시예들에서, 상기 패킷의 상기 프로토콜 레이어들 각각은 상기 프로토콜 레이어의 고유한 레이어 타입 번호에 기초하여 식별된다.
일부 실시예들에서, 상기 제네릭 포맷은 상기 프로토콜 레이어가 가질 수 있는 모든 필드들의 슈퍼 세트를 규정한다.
일부 실시예들에서, 상기 프로토콜 레이어들 각각을 확장하는 단계는, 확장된 프로토콜 레이어에 대한 비트 벡터를 유지하는 단계로서, 상기 비트 벡터는 상기 확장된 프로토콜 레이어의 바이트 각각에 대한 바이트 당 비트 (bit per byte) 를 포함하는, 상기 비트 벡터를 유지하는 단계, 유효한 필드 각각의 바이트 각각에 대해 가용한 것으로서 비트를 마킹하는 단계로서, 상기 유효한 필드 각각은 상기 패킷의 상기 프로토콜 레이어 내에 존재하는 필드인, 상기 비트를 가용한 것으로서 마킹하는 단계, 및 무효한 필드 각각의 바이트 각각에 대해 비가용한 것으로서 비트를 마킹하는 단계로서, 상기 무효한 필드 각각은 상기 패킷의 상기 프로토콜 레이어 내에 존재하지 않는 필드인, 상기 비트를 비가용한 것으로서 마킹하는 단계를 포함한다.
일부 실시예들에서, 방법은 또한 상기 확장된 프로토콜 레이어를 표현하기 위해 압축된 포맷을 사용하는 단계를 포함한다.
일부 실시예들에서, 방법은 또한 상기 확장된 프로토콜 레이어로부터 필드를 추출하기 위해 제네릭 레이어 커맨드들의 세트로부터 적어도 하나의 커맨드를 상기 확장된 프로토콜 레이어에 적용하는 단계를 포함한다. 상기 제네릭 레이어 커맨드들 각각의 필드들은, 상기 확장된 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정하는 fieldOffset, 및 상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen이다. 일부 실시예들에서, 상기 제네릭 레이어 커맨드들 각각의 필드들은 소프트웨어 규정된다.
일부 실시예들에서, 방법은, 적어도 상기 추출된 필드에 기초하여 토큰 레이어를 형성하는 단계, 및 적어도 상기 토큰 레이어에 기초하여 상기 최종 토큰을 형성하는 단계를 더 포함한다. 상기 토큰 레이어는 어떠한 갭도 없이 상기 확장된 프로토콜 레이어로부터의 다른 추출된 필드들과 함께 상기 추출된 필드를 배치함으로써 형성된다. 상기 최종 토큰은 어떠한 갭도 없이 다른 토큰 레이어들과 함께 상기 토큰 레이어를 배치함으로써 형성된다. 상기 최종 토큰은 상기 패킷의 추가 프로세싱을 위해 사용될 수 있다.
또 다른 양태로서, 네트워크 스위치를 구현하는 방법이 제공된다. 방법은, 상기 네트워크 스위치의 인커밍 포트에서 패킷을 수신하는 단계, 대응하는 프로토콜에 대한 제네릭 포맷에 따라 상기 패킷의 프로토콜 헤더 각각을 제네릭화 (generalize) 하는 단계, 제네릭화된 프로토콜 헤더 각각에 대해, 상기 제네릭화된 프로토콜 헤더로부터 하나 이상의 필드들을 추출하는 단계, 제네릭화된 프로토콜 헤더 각각에 대해, 토큰 레이어를 형성하도록 상기 제네릭화된 프로토콜 헤더로부터의 상기 하나 이상의 추출된 필드들을 연결하는 단계 (concatenating), 및 최종 토큰을 형성하기 위해 모든 토큰 레이어들을 연결하는 단계를 포함한다.
일부 실시예들에서, 상기 네트워크 스위치는 파서 엔진을 포함하고, 상기 파서 엔진은, 프로토콜 헤더 각각을 제네릭화하고, 상기 제네릭화된 프로토콜 헤더로부터 하나 이상의 필드들을 추출하고, 토큰 레이어를 형성하도록 상기 제네릭화된 프로토콜 헤더로부터의 상기 하나 이상의 추출된 필드들을 연결하고, 그리고 최종 토큰을 형성하도록 모든 토큰 레이어들을 연결하도록 구성된다.
일부 실시예들에서, 프로토콜 헤더 각각을 제네릭화하는 단계는, 상기 파서 엔진이 상기 프로토콜 헤더의 레이어 타입 및 상기 레이어 타입의 변형을 결정하는 단계, 상기 파서 엔진이 상기 레이어 타입 및 상기 변형에 기초하여 상기 프로토콜 헤더로부터 누락 필드들을 검출하는 단계, 및 상기 검출에 기초하여, 상기 파서 엔진이 상기 프로토콜 헤더를 상기 제네릭 포맷으로 확장하는 단계를 포함한다.
일부 실시예들에서, 하나 이상의 필드들을 추출하는 단계는 하나 이상의 제네릭 레이어 커맨드들을 상기 제네릭화된 프로토콜 헤더에 적용하는 단계를 포함한다. 상기 하나 이상의 제네릭 레이어 커맨드들 각각의 필드들은, 상기 확장된 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정하는 fieldOffset, 및 상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen이다.
일부 실시예들에서, 방법은 패킷을 수신하기 전에, 소프트웨어를 통해 상기 하나 이상의 제네릭 레이어 커맨드들 각각의 필드들을 프로그래밍하는 단계를 포함한다.
일부 실시예들에서, 방법은 패킷을 수신하기 전에, 프로토콜들의 제네릭 포맷들의 소프트웨어 규정된 맵핑을 허용하는 단계 및 상기 네트워크 스위치의 메모리에 상기 소프트웨어 규정된 맵핑들을 저장하는 단계를 포함한다.
또 다른 양태에서 네트워크 스위치가 제공된다. 네트워크 스위치는 패킷들을 수신 및 전송하기 위한 입력 포트 및 출력 포트를 포함한다. 네트워크 스위치는 또한 프로토콜들의 제네릭 포맷들의 소프트웨어 규정된 맵핑들의 세트를 저장하고, 필드들을 추출하기 위한 제네릭 레이어 커맨드들의 세트를 저장하기 위한 메모리를 포함한다. 네트워크 스위치는 또한 대응하는 프로토콜에 대해 특정된 상기 소프트웨어 규정된 맵핑들 중 하나에 따라 패킷의 프로토콜 헤더 각각을 제네릭화하도록 상기 패킷에 대해 헤더 제네릭화 프로세스를 수행하고, 그리고 상기 제네릭화된 프로토콜 헤더들로부터 컨텐츠들을 선택하여 최종 토큰을 형성하기 위한 파서 엔진을 포함한다. 상기 헤더 제네릭화 프로세스는 프로토콜의 상이한 변형들, 상이한 프로토콜들 또는 양자에 대해 사용될 수 있다.
일부 실시예들에서, 상기 패킷이 상기 파서 엔진에 의해 프로세싱된 후, 상기 패킷은 정규화된 (canonicalized) 프로토콜 레이어들을 포함한다. 상기 정규화된 프로토콜 레이어들 각각은 상기 대응하는 프로토콜에 대한 대응하는 제네릭 포맷에 따라 확장된 프로토콜 레이어이다.
일부 실시예들에서, 상기 파서 엔진은 또한 상기 제네릭화된 프로토콜 레이어로부터 필드를 추출하기 위해 상기 제네릭화된 프로토콜 레이어들 각각에 제네릭 레이어 커맨드들의 세트들 중 하나의 세트로부터 적어도 하나의 레이어 커맨드를 적용한다. 일부 실시예들에서, 상기 제네릭 레이어 커맨드들의 세트 중 상기 하나의 세트는 상기 대응하는 프로토콜에 특정된다. 일부 실시예들에서, 상기 제네릭 레이어 커맨드들 각각의 필드들은 소프트웨어 규정된다.
일부 실시예들에서, 상기 추출된 필드는 토큰 레이어를 형성하기 위해 상기 제네릭화된 프로토콜 레이어로부터의 다른 추출된 필드들과 연결된다. 일부 실시예들에서, 상기 토큰 레이어는 최종 토큰을 형성하기 위해 다른 토큰 레이어들과 연결된다. 일부 실시예들에서, 상기 최종 토큰은 상기 패킷의 추가 프로세싱을 위해 사용된다.
또 다른 양태에서, 파서 엔진이 제공된다. 파서 엔진은 회로를 포함하고, 상기 회로는, 패킷의 프로토콜 레이어들을 식별하고, 상기 프로토콜 레이어의 식별에 기초하여 상기 프로토콜 레이어들 각각을 제네릭 포맷으로 확장하고, 그리고 상기 확장된 프로토콜 레이어들로부터 컨텐츠들을 선택하여 최종 토큰을 형성하도록 구성된다.
일부 실시예들에서, 상기 패킷의 상기 프로토콜 레이어들 각각은 상기 프로토콜 레이어의 고유한 레이어 타입 번호에 기초하여 식별된다. 일부 실시예들에서, 상기 제네릭 포맷은 상기 프로토콜 레이어가 가질 수 있는 모든 필드들의 슈퍼 세트를 규정한다.
일부 실시예들에서, 상기 회로는 또한 상기 확장된 프로토콜 레이어로부터 필드를 추출하기 위해 제네릭 레이어 커맨드들의 세트로부터 적어도 하나의 커맨드를 상기 확장된 프로토콜 레이어에 적용하도록 구성된다. 일부 실시예들에서, 상기 제네릭 레이어 커맨드들 각각의 필드들은, 상기 확장된 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정하는 fieldOffset, 및 상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen이다. 일부 실시예들에서, 상기 제네릭 레이어 커맨드들 각각의 필드들은 소프트웨어 규정된다.
일부 실시예들에서, 상기 회로는 또한, 적어도 상기 추출된 필드에 기초하여 토큰 레이어를 형성하고 그리고 적어도 상기 토큰 레이어에 기초하여 상기 최종 토큰을 형성하도록 구성된다. 일부 실시예들에서, 상기 토큰 레이어는 어떠한 갭도 없이 상기 확장된 프로토콜 레이어로부터의 다른 추출된 필드들과 함께 상기 추출된 필드를 배치함으로써 형성된다. 일부 실시예들에서, 상기 최종 토큰은 어떠한 갭도 없이 다른 토큰 레이어들과 함께 상기 토큰 레이어를 배치함으로써 형성된다.
전술한 바는 유사한 참조 부호들이 상이한 도면들에 걸쳐서 동일한 부분들을 지칭하는 첨부 도면들에서 예시된 바와 같은, 본 발명의 예시적인 실시예들의 다음의 보다 구체적인 설명으로부터 명백해질 것이다. 도면들은 반드시 실제 축척대로 되지는 않으며, 대신에 본 발명의 실시예들을 예시할 시에 강조되었다.
도 1은 본 발명의 일부 실시예들에 따른 인커밍 패킷의 레이어들의 제네릭 포맷들 (generic formats) 로의 헤더 확장의 도를 예시한다.
도 2a 및 도 2b는 본 발명의 일부 실시예들에 따른 프로토콜 헤더의 예시적인 제네릭화를 예시한다.
도 3a 내지 도 3c는 본 발명의 일부 실시예들에 따른 프로토콜 헤더의 또 다른 예시적인 제네릭화를 예시한다.
도 4a 내지 도 4c는 본 발명의 일부 실시예들에 따른 프로토콜 헤더의 또 다른 예시적인 제네릭화를 예시한다.
도 5는 본 발명의 일부 실시예들에 따른 확장된 레이어로부터의 데이터 추출의 블록도를 예시한다.
도 6은 본 발명의 일부 실시예들에 따른 단일 버스를 형성하기 위해 함께 연결된 모든 레이어들로부터 추출된 정보의 블록을 예시한다.
도 7a 및 도 7b는 본 발명의 일부 실시예들에 따른 파서 엔진의 방법들을 예시한다.
도 8은 본 발명의 일부 실시예들에 따른 네트워크 스위치의 방법을 예시한다.
다음의 설명에서, 다수의 세부사항들이 설명을 위해서 제시된다. 그러나, 본 발명은 이러한 특정 세부사항들 사용 없이 실시될 수 있음을 본 기술 분야의 당업자는 이해할 것이다. 따라서, 본 발명은 도시된 실시예들로 한정되는 것이 아니며 본 명세서에서 기술된 원리들 및 특징들에 부합되는 가장 넓은 범위가 부여되어야 한다.
패킷들로부터 데이터를 추출하기 위한 장치의 실시예들은, 패킷들로부터 필드들이 추출되게 하는 프로그램가능한 레이어 커맨드들에 관련된다. 패킷은 개별 레이어들로 분할된다. 레이어 각각에 이 레이어가 어떤 레이어인지 식별하는 것을 돕는 고유한 레이어 타입 번호가 주어진다. 레이어 타입에 기초하여, 레이어 각각은 제네릭 포맷으로 확장된다. 레이어 각각은 이 레이어에 대해 제네릭 레이어 커맨드들의 세트를 갖는다. 레이어 커맨드 각각의 필드들은 상기 확장된 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정하는 fieldOffset, 및 상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen이다. 이들 레이어 커맨드들은 패킷 내의 정보가 프로그램가능한 방식으로 추출되게 한다. 패킷의 프로토콜 레이어 각각으로부터 추출된 필드들은 토큰 레이어를 형성하도록 연결된다. 모든 토큰 레이어들은, 패킷의 추가 프로세싱을 위해 사용되는, 최종 토큰을 형성하기 위해 연결된다.
네트워크 디바이스, 예를 들어 네트워크 스위치는 네트워크 트래픽을 스위칭/라우팅할 수 있다. 네트워크 스위치는 패킷들을 수신 및 송신하기 위해 적어도 하나의 입력/인커밍 포트 및 적어도 하나의 출력/아웃고잉 포트를 포함한다. 일부 실시예들에서, 네트워크 스위치는 또한 파서 및 리라이터를 포함한다. 파서는 네트워크 패킷들의 컨텐츠들을 식별하기 위한 하나 이상의 파서 엔진들을 포함할 수 있으며, 리라이터는 패킷들이 네트워크 스위치로부터 전송되기 이전에 이 패킷들을 수정하기 위한 하나 이상의 리라이트 엔진들을 포함할 수 있다. 파서 엔진(들) 및 리라이트 엔진(들)은 유연성이 있고 프로그램가능한 방식으로 동작한다.
네트워크 스위치는 또한 네트워크 스위치에 의해서 사용되는 데이터를 저장하기 위한 메모리를 포함한다. 예를 들어, 메모리는 제네릭 레이어 커맨드들의 세트를 저장한다. 간략하게는, 제네릭 레이어 커맨드들은 프로토콜 헤더들로부터 필드들을 추출하기 위해 전형적으로 사용된다. 또 다른 실례로서, 메모리는 또한 프로토콜들의 제네릭 포맷들의 소프트웨어-규정된 맵핑들을 저장한다. 간략하게는, 각 프로토콜 헤더는 대응하는 프로토콜에 특정된 소프트웨어-규정된 맵핑들 중 하나에 따라서 나타낸다. 자명할 바와 같이, 이러한 맵핑들은 새로운 프로토콜들을 포함하여서, 프로토콜의 상이한 변형들 및 상이한 프로토콜들 상에서 사용될 수 있다. 또 다른 예로서, 메모리는 또한 카운터들 및 통계사항들을 포함한다.
이더넷에서, 패킷들은 다수의 프로토콜 레이어들을 포함한다. 프로토콜 레이어 각각은 상이한 정보를 반송한다. 잘 알려진 레이어들의 일부 실례들은 다음과 같다:
● 이더넷
● PBB 이더넷
● ARP
● IPV4
● IPV6
● MPLS
● FCOE
● TCP
● UDP
● ICMP
● IGMP
● GRE
● ICMPv6
● VxLAN
● TRILL
● CNM
이론적으로는, 이 프로토콜 레이어들은 임의의 순서로 발생할 수 있다. 그러나, 이러한 레이어들의 오직 일부 잘 알려진 조합들만이 발생한다. 이러한 레이어들의 유효한 조합들의 일부 실례들은 다음과 같다:
● 이더넷
● 이더넷, ARP
● 이더넷, CNM
● 이더넷, FCoE
● 이더넷, IPV4
● 이더넷, IPV4, ICMP
● 이더넷, IPV4, IGMP
패킷 파싱 (및 리라이트) 동작을 위해, 패킷은 레이어들로 분할된다. 이러한 분할은 상기에 열거된 것과 같은 공지의 레이어들에 기초하여 이루어진다. 많은 레이어들이 그 내부에 상이한 타입들의 필드들의 조합을 갖는다. 상이한 가능한 조합들을 효율적으로 처리 (handle) 하기 위해 레이어들은 제네릭 포맷들로 확장된다. 이들 제네릭 포맷들은, 레이어들 내의 특정한 필드들과 무관한, 레이어 커맨드들과 같은, 커맨드들의 사용을 허용한다. 제네릭 포맷은 임의의 공지의 레이어가 가질 수 있는 모든 필드들의 슈퍼 세트를 규정한다.
도 1은 본 발명의 일부 실시예들에 따른 제네릭 포맷들로의 인커밍 패킷의 레이어들의 헤더 확장의 도 (100) 를 예시한다. 도 1에서, 인커밍 패킷은 8 개의 헤더 프로토콜 레이어들을 포함한다. 프로토콜 레이어 각각은 각각의 프로토콜에 대한 헤더를 포함한다. 보다 많은 또는 보다 적은 프로토콜 레이어들이 상술한 바와 같이 가능하다. 파서 엔진은 레이어 각각 및 이의 변형을 식별할 수 있다. 파서 엔진은 도 1에 예시된 바와 같이, 레이어의 식별 (identification) 및 변형에 기초하여 프로토콜 레이어 각각을 확장시킨다. 정규 (canonical) 레이어는 그의 제네릭 포맷으로 확장된 프로토콜 레이어를 말한다. 간략하게는, 각 정규 레이어는 무효한 필드들에 대해서는 0으로서 마킹된 비트들 및 유효한 필드들에 대해서는 1로서 마킹된 비트들을 갖는 비트 벡터를 포함한다.
파서 엔진이 이더넷 패킷 헤더로서 레이어를 식별하였다고 가정한다. 도 2a 내지 도 4c는 본 발명의 일부 실시예들에 따라서 파서 엔진이 이더넷 프로토콜 상에서 어떻게 동작하는지의 실례들을 예시한다. 도 2a 내지 도 4c에서 예시된 실례들은 파서 엔진이 프로토콜, 예를 들어 이더넷 프로토콜의 상이한 변형들 상에서 동작할 수 있음을 입증한다. 각 실례는 이더넷 프로토콜의 인커밍 헤더 및 그의 대응하는 제네릭 포맷을 예시한다. 다른 프로토콜들은 논의되지 않지만, 파서 엔진은 다른 프로토콜들 상에서도 유사하게 동작할 수 있음이 주목된다.
도 2a는 인커밍 패킷의 예시적인 이더넷 패킷 헤더의 포맷 (200) 을 예시한다. 이더넷 패킷 헤더 (200) 는 22 바이트이며 및 다음과 같은 5 개의 필드들을 포함한다: Source Address (SA) 필드, Destination Address (DA) 필드, Service VLAN Tag 필드, Customer VLAN Tag 필드 및 EtherType 필드. SA 필드 및 DA 필드는 각각 6 바이트이다. Service VLAN Tag 필드 및 Customer VLAN Tag 필드는 각각 4 바이트이다. EtherType 필드는 2 바이트이다. 이더넷 패킷 헤더 (200) 를 갖는 패킷은 이더넷 패킷의 최대 변형 (variant) 이며, 22 바이트의 최대 크기를 갖는다.
파서 엔진은 이더넷 패킷 헤더 (200) 를 프로세싱하며 이더넷 패킷 헤더 (200) 로부터 필드들 중 어느 것도 누락되지 않음을 결정한다. 이더넷 패킷 헤더 (200) 의 제네릭 포맷은 따라서 이더넷 패킷 헤더 (200) 의 것과 동일한데, 그 이유는 이더넷 패킷 헤더 (200) 는 모든 가능한 필드들을 포함하기 때문이다. 도 2b는 도 2a의 이더넷 패킷 헤더 (200) 를 나타내는 비트 벡터 (205) 를 예시한다. 비트 벡터 (205) 의 각 비트는 이더넷 패킷 헤더 (200) 의 22 바이트 중 하나에 대응한다. 비트 벡터 (205) 는 모두 1을 포함하는데, 그 이유는 모든 필드들이 이더넷 패킷 헤더 (200) 내에서 존재하기 때문에 이더넷 패킷 헤더 (200) 의 모든 필드들이 유효하거나 값을 가지기 때문이다. 따라서, 이더넷 패킷 헤더 (200) 는 {22'b111111_111111_1111_1111_11} 의 제네릭 포맷으로 나타낸다.
도 3a는 인커밍 패킷의 또 다른 예시적인 이더넷 패킷 헤더의 포맷 (300) 을 예시한다. 이더넷 패킷 헤더 (300) 는 18 바이트이며 오직 4 개의 필드들: SA 필드, DA 필드, Customer VLAN Tag 필드 및 EtherType 필드만을 포함한다. 이더넷 패킷 헤더 (300) 에는 Service VLAN Tag 필드가 누락되어 있다. 이더넷 패킷 헤더 (300) 를 갖는 패킷은 이더넷 패킷의 또 다른 변형이다.
파서 엔진은 이더넷 패킷 헤더 (300) 를 프로세싱하고, Service VLAN Tag 필드가 이더넷 패킷 헤더 (300) 로부터 누락되었음을 결정하고, 누락된 Service VLAN Tag 필드를 이더넷 패킷 헤더 (300) 의 제네릭 포맷의 적합한 위치에 포함시킴으로써 이더넷 패킷 헤더 (300) 를 22 바이트의 그의 최대 크기로 확장시킨다. 도 3b는 확장된 이더넷 패킷 헤더의 제네릭 포맷 (300') 을 예시한다. 확장된 이더넷 패킷 헤더 (300') 는 누락된 Service VLAN Tag 필드를 포함하여서, 이더넷 프로토콜의 모든 가능한 필드들을 포함한다. 확장된 이더넷 패킷 헤더 (300') 내의 유효한 필드들은, SA 필드, DA 필드, Customer VLAN Tag 필드 및 EtherType 필드인데, 그 이유는 이들이 이더넷 패킷 헤더 (400) 내에 존재하기 때문이다. 확장된 이더넷 패킷 헤더 (300') 내의 무효한 필드는 Service VLAN Tag 필드인데, 그 이유는 이 필드는 이더넷 패킷 헤더 (300) 내에 존재하지 않지만 확장된 이더넷 패킷 헤더 (300') 내로 부가되었기 때문이다.
도 3c는 도 3b의 확장된 이더넷 패킷 헤더 (300') 를 나타내는 비트 벡터 (305) 를 예시한다. 비트 벡터 (305) 의 각 비트는 확장된 이더넷 패킷 헤더 (300') 의 22 바이트 중 하나에 대응한다. 비트 벡터 (305) 는 SA 필드, DA 필드, Customer VLAN Tag 필드 및 EtherType 필드인 모든 유효한 필드들에 대해서는 모두 1을 포함한다. 비트 벡터 (305) 는 오직 Service VLAN Tag 필드만인 모든 무효한 필드들에 대해서는 0을 포함한다. 따라서, 이더넷 패킷 헤더 (300) 는 {22'b111111_111111_0000_1111_11} 의 제네릭 포맷에 의해서 나타낸다.
도 4a는 인커밍 패킷의 또 다른 예시적인 이더넷 패킷 헤더의 포맷 (400) 을 예시한다. 이더넷 패킷 헤더 (400) 는 14 바이트이며 오직 3 개의 필드들: SA 필드, DA 필드 및 EtherType 필드만을 포함한다. 이더넷 패킷 헤더 (400) 에는 Service VLAN Tag 필드 및 Customer VLAN Tag 필드가 누락되어 있다. 이더넷 패킷 헤더 (400) 를 갖는 패킷은 이더넷 패킷의 가장 작은 변형이다.
파서 엔진은 이더넷 헤더 (400) 를 프로세싱하고, Service VLAN Tag 필드 및 Customer VLAN Tag 필드가 이더넷 패킷 헤더 (400) 로부터 누락되었다고 결정하고, 누락된 (missing) Service VLAN Tag 필드 및 누락된 Customer VLAN Tag 필드를 이더넷 패킷 헤더 (400) 의 제네릭 포맷의 적합한 위치에 포함시킴으로써 이더넷 패킷 헤더 (400) 를 22 바이트의 그의 최대 크기로 확장시킨다. 도 4b는 확장된 이더넷 패킷 헤더의 제네릭 포맷 (400') 을 예시한다. 확장된 이더넷 패킷 헤더 (400') 는 누락된 Service VLAN Tag 필드 및 누락된 Customer VLAN Tag 필드를 포함하여서, 이더넷 프로토콜의 모든 가능한 필드들을 포함한다. 확장된 이더넷 패킷 헤더 (400') 내에서의 유효한 필드들은 SA 필드, DA 필드 및 EtherType 필드인데, 그 이유는 이들이 이더넷 패킷 헤더 (400) 내에 존재하기 때문이다. 확장된 이더넷 패킷 헤더 (400') 내에서의 무효한 필드는 Service VLAN Tag 필드 및 Customer VLAN Tag 필드인데, 그 이유는 이들이 이더넷 패킷 헤더 (400) 내에 존재하지 않지만, 확장된 이더넷 패킷 헤더 (400') 내에 부가되었기 때문이다.
도 4c는 도 4b의 확장된 이더넷 패킷 헤더 (400') 를 나타내는 비트 벡터 (405) 를 예시한다. 비트 벡터 (405) 의 각 비트는 확장된 이더넷 패킷 헤더 (400') 의 22 바이트 중 하나에 대응한다. 비트 벡터 (405) 는 SA 필드, DA 필드 및 EtherType 필드인 모든 유효한 필드들에 대해서는 1을 포함한다. 비트 벡터 (405) 는 Service VLAN Tag 필드 및 Customer VLAN Tag 필드인 모든 무효한 필드들에 대해서는 0을 포함한다. 따라서, 이더넷 패킷 헤더 (400) 는 {22'b111111_111111_0000_0000_11} 의 제네릭 포맷에 의해서 나타낸다.
도 2a 내지 도 4c에서 예시된 바와 같이, 인커밍 이더넷 헤더의 변형과 상관없이, 일단 이더넷 헤더의 제네릭 포맷으로의 확장이 수행되면, 필드 오프셋들은 최대 크기의 이더넷 헤더 (예를 들어, 도 2a의 이더넷 패킷 헤더 (200)) 와 동일하게 된다. 헤더 확장은 유리하게는 인커밍 이더넷 헤더와 상관없이 소프트웨어 커맨드들의 동일한 세트가 동작하게 하는데, 그 이유는 이더넷 헤더가 그의 최대 크기의 이더넷 헤더로 확장되었기 때문이다. 이로써, 예를 들어 EtherType 필드를 추출하는 레이어 커맨드는 어느 이더넷 헤더가 수신되는지 상관없이 언제나 동일한 오프셋을 포인팅할 것이다.
일부 실시예들에서, 임의의 수신된 헤더 내에 존재하는 필드들을 표현하기 위해 압축된 포맷이 사용된다. 2 개의 필드들의 조합으로 컴팩트한 포맷이 만들어진다. 즉:
contBytes: 이는 레이어의 시작에서 얼마나 많은 바이트들이 유효한지를 나타낸다; 그리고
validBytes: 이는 레이어 내의 바이트 각각의 유효성을 나타내는 비트 벡터이다.
예를 들어, contBytes가 8이고 validBytes가 4'h0111이고, 각각의 레이어가 유효한 바이트들 0 내지 7을 포함하면, null 바이트 및 3 개의 유효한 바이트들이 이어진다. 이러한 압축된 포맷을 사용하는 것은 레이어를 나타내는데 요구되는 비트들의 수를 줄일 수 있게 한다. 바이트들의 총 수는 테이블 1에 나타낸 예시적인 의사 코드 (pseudo-code) 에 의해 계산될 수 있다.
테이블 1

Total_length = contBytes ;
for (i = 0; i < LENGTH_OF_VALID_BYTES; i++)
if (validBytes[i])
Total_length++;
헤더들의 제네릭 포맷들은 패킷 헤더들로부터 필드들의 추출에 관하여 하드웨어 및 소프트웨어 유연성을 발생시킨다. 하드웨어는 필드들이 패킷 헤더들 내에서 어디에 상주하는지에 상관없이 패킷 헤더들로부터 필드들을 추출할 수 있다. 하드웨어는 새로운 프로토콜들을 지원하도록 소프트웨어에 의해서 프로그램될 수 있다. 소프트웨어는 다양한 헤더 프로토콜들에 대해서 하드웨어 테이블 내의 제네릭 포맷들을 프로그램한다.
일단 프로토콜 헤더들이 확장되면, 프로그램 가능한 레이어 커맨드들은 패킷들로부터 필드들이 추출되게 한다. 레이어 각각은 대응하는 프로토콜에 특정한 N 개의 레이어 커맨드들의 세트를 갖는다. 일부 실시예들에서, 레이어 각각은 8 개의 프로그램가능한 레이어 커맨드들을 갖는다. 테이블 2는 레이어 커맨드 각각의 필드들을 열거한다. 이들 필드들은 소프트웨어 규정된다.
테이블 2
커맨드 필드들 기술
fieldOffset 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정함
fieldLen 상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정함
제네릭 레이어 커맨드들은 패킷 내의 정보가 프로그램 가능한 방식으로 추출되게 한다. 예를 들어, 관습적인 구현예들과 비교하여, 이더넷에서, MAC DA (MAC 수신지 어드레스) 를 추출하기 위해, 레이어 커맨드는 0의 오프셋 및 6 바이트의 길이를 특정할 것이다. 이는 이 레이어로부터 추출될, MAC DA를 반송하는, 처음 6 바이트들을 발생시킬 것이다. 유사하게, IP DA를 추출하기 위해, 레이어 커맨드는 16의 오프셋 및 4 바이트의 길이를 특정할 것이다. 이는 이 레이어로부터 추출될, IP DA를 반송하는 16의 오프셋에서 시작하는 4 바이트들을 발생시킬 것이다.
도 5는 본 발명의 일부 실시예들에 따른 확장된 레이어로부터 데이터 추출의 블록도 (500) 를 예시한다. 확장된 레이어는 도 5에서 “레이어 N 헤더 (정규 헤더)”로 라벨이 붙여졌다. 파서 엔진에 의해 결정된, 레이어 타입은 메모리 내에서 참조되고, 확장된 레이어로부터 필드들을 추출하기 위해 N 개의 레이어 커맨드들 중 하나 이상을 특정한다. 레이어 커맨드 각각은 2 개의 필드들: fieldOffsetfieldLen을 포함한다. 도 5에서, 제 1 레이어 커맨드는 field0를 추출하고, 제 2 레이어 커맨드는 field1을 추출하고, 제 3 레이어 커맨드는 field15를 추출한다. 추출된 정보는, 도 5에서 “토큰 레이어 N”로 도시된 버스에 저장된다. 추출된 필드들은 토큰 레이어를 형성하기 위해 추출된 필드들 사이에 어떠한 갭도 없이 서로 이웃하여 차례로 배치된다. 즉, 추출된 필드들은 토큰 레이어를 형성하기 위해 연결된다. 임의의 레이어의 추출된 정보의 총 길이는 특정한 레이어에 대해 모든 fieldLen 레이어 커맨드들의 합이다.
도 6은 본 발명의 일부 실시예들에 따라 단일 버스를 형성하기 위해 함께 연결되는 모든 레이어들로부터 추출된 정보의 블록도 (600) 를 예시한다. 도 6에서, 2 개의 레이어 커맨드들 (즉, cmd0 및 cmd1) 이 토큰 레이어 0으로부터 Layer 0으로부터 필드들을 추출하기 위해 사용되고, 3 개의 레이어 커맨드들 (즉, cmd0, cmd1 및cmd2) 이 토큰 레이어 1로부터 Layer 1로부터 필드들을 추출하기 위해 사용되고, 계속된다. 모든 토큰 레이어들이 최종 토큰을 형성하기 위해 토큰 레이어들 사이에 어떠한 갭도 없이 서로 이웃하여 차례로 배치된다. 즉, 토큰 레이어 0 내지 토큰 레이어 7이 최종 토큰을 형성하기 위해 연결된다. 최종 토큰은 통상적으로 패킷의 추가 프로세싱을 위해 사용된다.
도 7a는 본 발명의 일부 실시예들에 따른 파서 엔진의 방법 (700) 을 예시한다. 파서 엔진은 네트워크 스위치의 일부이고 네트워크 패킷들의 컨텐츠를 식별한다. 통상적으로, 파서 엔진은 먼저 프로토콜 레이어에 의해 패킷을 분할한다. 단계 705에서, 패킷의 프로토콜 레이어들이 식별된다. 패킷의 프로토콜 레이어들 각각은 프로토콜 레이어의 고유한 레이어 타입 번호에 기초하여 식별된다.
단계 710에서, 프로토콜 레이어들 각각은 이 프로토콜 레이어의 식별에 기초하여 제네릭 포맷으로 확장된다. 제네릭 포맷은 프로토콜 레이어가 가질 수 있는 모든 필드들의 슈퍼 세트를 규정한다. 비트 벡터는 확장된 프로토콜 레이어에 대해 유지된다. 비트 벡턱는 확장된 프로토콜 레이어의 바이트 각각에 대해 바이트 당 비트 (bit per byte) 를 포함한다. 비트는 유효한 필드 각각의 바이트 각각에 대해 가용한 것으로 마킹되고, 유효한 필드 각각은 패킷의 프로토콜 레이어 내에 존재하는 필드이다. 비트는 무효한 필드 각각의 바이트 각각에 대해 비가용한 것으로서 마킹되고, 무효한 필드 각각은 패킷의 프로토콜 레이어 내에 존재하지 않는 필드이다. 일부 실시예들에서, 압축된 포맷은 확장된 프로토콜 레이어를 표현하기 위해 사용된다.
단계 715에서, 확장된 프로토콜 레이어들로부터의 컨텐츠가 선택되어 최종 토큰을 형성한다.
도 7b는 본 발명의 일부 실시예들에 따른 파서 엔진의 또 다른 방법 (750) 을 예시한다. 통상적으로, 파서 엔진은 방법 (700) 후에 방법 (750) 을 수행한다. 단계 755에서, 확장된 프로토콜 레이어로부터 필드를 추출하기 위해 확장된 프로토콜 레이어에 제네릭 레이어 커맨드들의 세트로부터 적어도 하나의 커맨드가 적용된다. 제네릭 레이어 커맨드들 각각의 필드들은, 확장된 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정하는 fieldOffset 및 상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen이다. 제네릭 레이어 각각의 필드들은 소프트웨어 규정된다.
단계 760에서, 적어도 추출된 필드에 기초하여 토큰 레이어가 형성된다. 토큰 레이어는 확장된 프로토콜 레이어로부터 추출된 다른 필드들과 추출된 필드를 어떠한 갭도 없이 배치함으로써 형성된다.
단계 765에서, 최종 토큰은 토큰 레이어에 기초하여 형성된다. 최종 토큰은 어떠한 갭도 없이 다른 토큰 레이어들과 함께 토큰 레이어를 배치함으로써 형성된다. 최종 토큰은 통상적으로 패킷의 추가 프로세싱을 위해 사용된다.
도 8은 본 발명의 일부 실시예들에 따른 네트워크 스위치의 방법 (800) 을 예시한다. 일부 실시예들에서, 네트워크 스위치는 프로토콜들의 제네릭 포맷들의 소프트웨어 규정된 맵핑을 허용하고 네트워크 스위치의 메모리에 소프트웨어 규정된 맵핑들을 저장한다. 단계 805에서, 패킷은 네트워크 스위치의 인커밍 포트에서 수신된다.
단계 810에서, 패킷의 프로토콜 헤더 각각은 대응하는 프로토콜에 대한 제네릭 포맷에 따라 제네릭화된다. 파서 엔진은 프로토콜 헤더의 레이어 타입 및 레이어 타입의 변형을 결정한다. 파서 엔진은 레이어 타입 및 변형에 기초하여 프로토콜로부터 누락 필드들을 검출한다. 검출에 기초하여, 파서 엔진은 프로토콜 헤더를 제네릭 포맷으로 확장시킨다.
단계 815에서, 제네릭화된 프로토콜 헤더 각각에 대해, 제네릭화된 프로토콜 헤더로부터 하나 이상의 필드들이 추출된다. 하나 이상의 필드들을 추출하기 위해, 하나 이상의 제네릭 레이어 커맨드들이 제네릭화된 프로토콜 헤더에 적용된다. 제네릭 레이어 커맨드들 각각의 필드들은, 확장된 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정하는 fieldOffset 및 상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen이다. 제네릭 레이어 커맨드들 각각의 필드들은 통상적으로 단계 805 전에 소프트웨어에 의해 프로그램된다.
단계 820에서, 제네릭화된 프로토콜 헤더 각각에 대해, 제네릭화된 프로토콜 헤더로부터 하나 이상의 추출된 필드들이 토큰 레이어를 형성하도록 연결된다. 토큰 레이어는 하나 이상의 추출된 다른 필드들을 어떠한 갭도 없이 함께 배치함으로써 형성된다.
단계 825에서, 모든 토큰 레이어들은 최종 토큰을 형성하기 위해 연결된다. 최종 토큰은 어떠한 갭도 없이 다른 토큰 레이어들과 함께 토큰 레이어를 배치함으로써 형성된다. 최종 토큰 레이어는 통상적으로 패킷의 추가 프로세싱을 위해 사용된다.
패킷으로부터의 데이터는 레이어 커맨드들을 사용하여 추출된다. 레이어의 레이어 각각은 제네릭 포맷으로 확장된다. 헤더들의 제네릭 포맷들은 레이어 커맨드들이 패킷의 레이어들 내의 특정한 필드들과 무관하게 패킷 헤더들로부터 필드들을 추출하는 관점에서 하드웨어 및 소프트웨어 유연성을 발생시킨다. 추출될 관련 정보가 패킷 내 어디에 존재하는지의 결정은 더이상 구현 시간에 이루어질 필요가 없다.
본 기술 분야의 당업자는 다른 용도들 및 이점들이 역시 존재함을 이해할 것이다. 본 발명이 다수의 특정 세부사항들을 참조하여서 기술되었지만, 본 기술 분야의 당업자는 본 발명이 본 발명의 범위를 벗어나지 않고 다른 특정 형태들로 구현될 수 있다는 것을 인식할 것이다. 따라서, 본 발명은 전술한 예시적인 세부사항들에 의해서 한정되기보다는 첨부된 청구항들에 의해서 규정된다는 것을 본 기술 분야의 당업자는 이해할 것이다.

Claims (38)

  1. 파서 엔진 (parser engine) 을 구현하는 방법으로서,
    패킷의 하나 이상의 프로토콜 레이어들을 식별하는 단계로서, 상기 프로토콜 레이어들 각각은 하나 이상의 필드들을 가지는, 상기 프로토콜 레이어들을 식별하는 단계;
    상기 프로토콜 레이어들의 각 프로토콜 레이어에 대해, 상기 프로토콜 레이어의 상기 식별에 기초하여, 기 설정된 수의 필드들을 갖는 제네릭 포맷 (generic format) 으로 상기 프로토콜 레이어를 확장하는 단계; 및
    하나 이상의 상기 확장된 프로토콜 레이어들로부터 컨텐츠들을 선택하여 최종 토큰을 형성하는 단계를 포함하는, 파서 엔진을 구현하는 방법.
  2. 제 1 항에 있어서,
    상기 프로토콜 레이어들 각각은 고유한 레이어 타입 번호를 가지고, 상기 고유한 레이어 타입 번호에 기초하여 식별되는, 파서 엔진을 구현하는 방법.
  3. 제 1 항에 있어서,
    상기 제네릭 포맷은 상기 프로토콜 레이어들이 가질 수 있는 모든 필드들의 슈퍼 세트를 규정하는, 파서 엔진을 구현하는 방법.
  4. 제 1 항에 있어서,
    상기 프로토콜 레이어를 확장하는 단계는,
    상기 확장된 프로토콜 레이어에 대한 비트 벡터를 유지하는 단계로서, 상기 비트 벡터는 비트들 각각이 상기 확장된 프로토콜 레이어의 바이트들의 하나에 대응하도록 상기 확장된 프로토콜 레이어의 바이트 각각에 대한 비트 (bit) 를 포함하는, 상기 비트 벡터를 유지하는 단계;
    상기 비트들 각각에 대해, 상기 대응하는 바이트가 상기 프로토콜 레이어의 유효한 필드의 부분이면 상기 비트를 제1 값으로 설정하는 단계로서, 유효한 필드들의 각각은 상기 프로토콜 레이어가 상기 확장된 프로토콜 레이어로 확장되기 전에 상기 패킷의 상기 프로토콜 레이어 내에 존재하는 필드인, 상기 비트를 상기 제1 값으로 설정하는 단계; 및
    상기 비트들 각각에 대해, 상기 대응하는 바이트가 상기 프로토콜 레이어의 무효한 필드의 부분이면 상기 비트를 제2 값으로 설정하는 단계로서, 무효한 필드들의 각각은 상기 프로토콜 레이어가 상기 확장된 프로토콜 레이어로 확장되기 전에 상기 패킷의 상기 프로토콜 레이어 내에 존재하지 않는 필드인, 상기 비트를 제2 값으로 설정하는 단계를 포함하는, 파서 엔진을 구현하는 방법.
  5. 제 4 항에 있어서,
    상기 확장된 프로토콜 레이어를 표현하기 위해 압축된 포맷을 사용하는 단계를 더 포함하는, 파서 엔진을 구현하는 방법.
  6. 제 1 항에 있어서,
    확장된 프로토콜 레이어로부터 필드를 추출하기 위해 제네릭 레이어 커맨드들의 세트로부터 적어도 하나의 커맨드를 상기 확장된 프로토콜 레이어에 적용하는 단계를 더 포함하는, 파서 엔진을 구현하는 방법.
  7. 제 6 항에 있어서,
    상기 제네릭 레이어 커맨드들 각각의 필드들은,
    상기 확장된 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정하는 fieldOffset, 및
    상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen인, 파서 엔진을 구현하는 방법.
  8. 제 6 항에 있어서,
    상기 제네릭 레이어 커맨드들 각각의 필드들은 소프트웨어 규정되는, 파서 엔진을 구현하는 방법.
  9. 제 6 항에 있어서,
    적어도 상기 추출된 필드에 기초하여 토큰 레이어를 형성하는 단계; 및
    적어도 상기 토큰 레이어에 기초하여 상기 최종 토큰을 형성하는 단계를 더 포함하는, 파서 엔진을 구현하는 방법.
  10. 제 9 항에 있어서,
    상기 토큰 레이어는 어떠한 갭도 없이 상기 확장된 프로토콜 레이어로부터의 다른 추출된 필드들과 함께 상기 추출된 필드를 배치함으로써 형성되는, 파서 엔진을 구현하는 방법.
  11. 제 9 항에 있어서,
    상기 최종 토큰은 어떠한 갭도 없이 다른 토큰 레이어들과 함께 상기 토큰 레이어를 배치함으로써 형성되는, 파서 엔진을 구현하는 방법.
  12. 네트워크 스위치를 구현하는 방법으로서,
    상기 네트워크 스위치의 인커밍 포트에서 패킷 헤더를 갖는 패킷을 수신하는 단계로서, 상기 패킷 헤더는 하나 이상의 프로토콜 헤더들을 포함하는, 상기 패킷을 수신하는 단계;
    상기 프로토콜 헤더들의 각각에 대해, 상기 프로토콜 헤더를 대응하는 프로토콜에 대한 제네릭 포맷으로 제네릭화 (generalize) 하여 제네릭화된 프로토콜 헤더를 형성하는 단계;
    제네릭화된 프로토콜 헤더 각각에 대해, 토큰 레이어를 형성하도록 상기 제네릭화된 프로토콜 헤더로부터의 상기 하나 이상의 추출된 필드들을 연결하는 (concatenating) 단계; 및
    최종 토큰을 형성하기 위해 모든 토큰 레이어들을 연결하는 단계를 포함하는, 네트워크 스위치를 구현하는 방법.
  13. 제 12 항에 있어서,
    상기 네트워크 스위치는 파서 엔진을 포함하고,
    상기 파서 엔진은, 프로토콜 헤더 각각을 제네릭화하고, 상기 제네릭화된 프로토콜 헤더로부터 하나 이상의 필드들을 추출하고, 상기 토큰 레이어를 형성하도록 상기 제네릭화된 프로토콜 헤더로부터의 상기 하나 이상의 추출된 필드들을 연결하고, 그리고 상기 최종 토큰을 형성하도록 모든 토큰 레이어들을 연결하도록 구성되는, 네트워크 스위치를 구현하는 방법.
  14. 제 13 항에 있어서,
    상기 프로토콜 헤더를 제네릭화하는 단계는,
    상기 파서 엔진이 상기 프로토콜 헤더의 레이어 타입 및 상기 레이어 타입의 변형을 결정하는 단계;
    상기 파서 엔진이 상기 레이어 타입 및 상기 변형에 기초하여 상기 프로토콜 헤더로부터 누락 필드들을 검출하는 단계; 및
    상기 검출에 기초하여, 상기 파서 엔진이 상기 프로토콜 헤더를 상기 제네릭 포맷으로 확장하는 단계를 포함하는, 네트워크 스위치를 구현하는 방법.
  15. 제 12 항에 있어서,
    하나 이상의 필드들을 추출하는 단계는 하나 이상의 제네릭 레이어 커맨드들을 상기 제네릭화된 프로토콜 헤더에 적용하는 단계를 포함하는, 네트워크 스위치를 구현하는 방법.
  16. 제 15 항에 있어서,
    상기 하나 이상의 제네릭 레이어 커맨드들 각각의 필드들은,
    추출될 필드가 시작하는 상기 제네릭화된 프로토콜 헤더 내에서 오프셋을 특정하는 fieldOffset, 및
    상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen인, 네트워크 스위치를 구현하는 방법.
  17. 제 15 항에 있어서,
    상기 패킷을 수신하기 전에,
    소프트웨어를 통해 상기 하나 이상의 제네릭 레이어 커맨드들 각각의 필드들을 프로그래밍하는 단계를 더 포함하는, 네트워크 스위치를 구현하는 방법.
  18. 제 12 항에 있어서,
    상기 패킷을 수신하기 전에,
    프로토콜들의 제네릭 포맷들의 소프트웨어 규정된 맵핑을 허용하는 단계; 및
    상기 네트워크 스위치의 메모리에 상기 소프트웨어 규정된 맵핑들을 저장하는 단계를 더 포함하는, 네트워크 스위치를 구현하는 방법.
  19. 네트워크 스위치로서,
    하나 이상의 프로토콜 레이어들을 포함하는 헤더들을 갖는 패킷들을 수신 및 전송하기 위한 입력 포트 및 출력 포트;
    하나 이상의 프로토콜들에 대해 제네릭 프로토콜 레이어 포맷들의 소프트웨어 규정된 맵핑들의 세트를 저장하고, 상기 제네릭 프로토콜 레이어 포맷들 중 하나로 변환되는 상기 프로토콜 레이어들로부터 원하는 필드들을 추출하기 위한 제네릭 레이어 커맨드들의 세트를 저장하기 위한 메모리로서, 상기 제네릭 프로토콜 레이어 포맷들 각각이 기 설정된 수의 필드들을 갖는, 상기 메모리; 및
    상기 제네릭 프로토콜 레이어 포맷들 중 하나에 따라 상기 패킷의 상기 헤더의 상기 프로토콜 레이어들의 각각을 제네릭화하도록 상기 패킷들의 각각의 헤더에 대해 헤더 제네릭화 프로세스를 수행하여 확장된 프로토콜 레이어를 형성하고, 상기 제네릭화된 프로토콜 헤더들로부터 컨텐츠들을 선택하여 최종 토큰을 형성하기 위한 파서 엔진을 포함하는, 네트워크 스위치.
  20. 제 19 항에 있어서,
    상기 헤더 제네릭화 프로세스는 상기 하나 이상의 프로토콜들의 프로토콜 레이어들의 상이한 변형들에 대해 사용되는, 네트워크 스위치.
  21. 제 19 항에 있어서,
    상기 헤더 제네릭화 프로세스는 상기 프로토콜들의 상이한 프로토콜들에 대해 사용되는, 네트워크 스위치.
  22. 제 19 항에 있어서,
    상기 패킷이 상기 파서 엔진에 의해 프로세싱된 후, 상기 패킷은 정규화된 (canonicalized) 프로토콜 레이어들을 포함하는, 네트워크 스위치.
  23. 제 22 항에 있어서,
    상기 정규화된 (canonicalized) 프로토콜 레이어들 각각은 상기 패킷의 상기 헤더의 상기 프로토콜 레이어들 중 하나에 기초하여 제네릭화된 상기 확장된 프로토콜 레이어들 중 하나인, 네트워크 스위치.
  24. 제 19 항에 있어서,
    상기 파서 엔진은 또한 상기 확장된 프로토콜 레이어들로부터 하나 이상의 필드들을 추출하기 위해 상기 확장된 프로토콜 레이어들 각각에 제네릭 레이어 커맨드들의 세트들 중 하나의 세트로부터 적어도 하나의 레이어 커맨드를 적용하는, 네트워크 스위치.
  25. 제 24 항에 있어서,
    상기 제네릭 레이어 커맨드들의 세트 중 상기 하나의 세트는 상기 제네릭 레이어 커맨드들의 세트 중 상기 하나의 세트가 적용된 상기 확장된 프로토콜 레이어의 상기 프로토콜에 특정된, 네트워크 스위치.
  26. 제 24 항에 있어서,
    상기 제네릭 레이어 커맨드들 각각에 의해 추출된 상기 필드들은 소프트웨어 규정되는, 네트워크 스위치.
  27. 제 24 항에 있어서,
    상기 확장된 레이어들 중 하나로부터 상기 추출된 모든 필드는 토큰 레이어를 형성하기 위해 서로 연결되는, 네트워크 스위치.
  28. 제 27 항에 있어서,
    상기 토큰 레이어는 최종 토큰을 형성하기 위해 상기 패킷으로부터 유래된 (derived) 상기 확장된 프로토콜 레이어들의 나머지 (remainder) 로부터 형성된 다른 토큰 레이어들과 연결되는, 네트워크 스위치.
  29. 제 28 항에 있어서,
    상기 최종 토큰은 상기 패킷의 추가 프로세싱을 위해 사용되는, 네트워크 스위치.
  30. 파서 엔진으로서,
    회로를 포함하고,
    상기 회로는,
    패킷의 하나 이상의 프로토콜 레이어들을 식별하고;
    상기 프로토콜 레이어들의 각 프로토콜 레이어에 대해, 상기 프로토콜 레이어의 식별에 기초하여 상기 프로토콜 레이어를 기 설정된 수의 필드들을 갖는 제네릭 포맷으로 확장하여 확장된 프로토콜 레이어를 형성하고; 그리고
    상기 확장된 프로토콜 레이어들의 각각으로부터 컨텐츠들을 선택하여 최종 토큰을 형성하도록 구성되고,
    상기 프로토콜 레이어들 각각은 하나 이상의 필드들을 갖는, 파서 엔진.
  31. 제 30 항에 있어서,
    상기 프로토콜 레이어들 각각은 고유한 레이어 타입 번호를 가지고, 상기 고유한 레이어 타입 번호에 기초하여 식별되는, 파서 엔진.
  32. 제 30 항에 있어서,
    상기 제네릭 포맷은 상기 프로토콜 레이어들이 가질 수 있는 모든 필드들의 슈퍼 세트를 규정하는, 파서 엔진.
  33. 제 30 항에 있어서,
    상기 회로는 또한 상기 확장된 프로토콜 레이어로부터 하나 이상의 필드들을 추출하기 위해 제네릭 레이어 커맨드들의 세트로부터 적어도 하나의 커맨드를 상기 확장된 프로토콜 레이어에 적용하도록 구성되는, 파서 엔진.
  34. 제 33 항에 있어서,
    상기 제네릭 레이어 커맨드들 각각의 필드들은,
    상기 확장된 프로토콜 레이어 내에서 추출될 필드가 시작하는 오프셋을 특정하는 fieldOffset, 및
    상기 특정된 오프셋으로부터 추출되어야 하는 바이트들의 수를 특정하는 fieldLen인, 파서 엔진.
  35. 제 33 항에 있어서,
    상기 제네릭 레이어 커맨드들 각각의 필드들은 소프트웨어 규정되는, 파서 엔진.
  36. 제 33 항에 있어서,
    상기 회로는 또한,
    적어도 상기 추출된 필드에 기초하여 토큰 레이어를 형성하고 그리고 적어도 상기 토큰 레이어에 기초하여 상기 최종 토큰을 형성하도록 구성되는, 파서 엔진.
  37. 제 36 항에 있어서,
    상기 토큰 레이어는 상기 추출된 필드들을 함께 배치함으로써 형성되는, 파서 엔진.
  38. 제 36 항에 있어서,
    상기 최종 토큰은 어떠한 갭도 없이 다른 토큰 레이어들과 함께 상기 토큰 레이어를 배치함으로써 형성되는, 파서 엔진.
KR1020150087785A 2014-06-19 2015-06-19 패킷들로부터 데이터를 추출하는 방법 및 그 장치 KR102337516B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/309,726 2014-06-19
US14/309,726 US9516145B2 (en) 2014-06-19 2014-06-19 Method of extracting data from packets and an apparatus thereof

Publications (2)

Publication Number Publication Date
KR20150145728A KR20150145728A (ko) 2015-12-30
KR102337516B1 true KR102337516B1 (ko) 2021-12-09

Family

ID=53541505

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150087785A KR102337516B1 (ko) 2014-06-19 2015-06-19 패킷들로부터 데이터를 추출하는 방법 및 그 장치

Country Status (7)

Country Link
US (1) US9516145B2 (ko)
EP (1) EP2958285A3 (ko)
JP (1) JP6590545B2 (ko)
KR (1) KR102337516B1 (ko)
CN (1) CN105282134B (ko)
HK (1) HK1220831A1 (ko)
TW (1) TW201607274A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10911579B1 (en) * 2016-03-01 2021-02-02 Amazon Technologies, Inc. Generating programmatically defined fields of metadata for network packets
CN111092880B (zh) * 2019-12-13 2022-08-09 支付宝(杭州)信息技术有限公司 一种网络流量数据提取方法及装置
JP7220814B1 (ja) 2022-01-21 2023-02-10 エヌ・ティ・ティ・アドバンステクノロジ株式会社 データ取得装置及びデータ取得方法
CN116156027B (zh) * 2023-04-20 2023-07-18 中国人民解放军国防科技大学 一种支持rmt的动作执行引擎及其执行方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100441317B1 (ko) * 2000-01-27 2004-07-23 인터내셔널 비지네스 머신즈 코포레이션 데이터 패킷 분류 방법 및 장치
US20120281714A1 (en) * 2011-05-06 2012-11-08 Ralink Technology Corporation Packet processing accelerator and method thereof
US20130039278A1 (en) * 2010-05-03 2013-02-14 Nokia Corporation Protocol overhead reduction

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805808A (en) 1991-12-27 1998-09-08 Digital Equipment Corporation Real time parser for data packets in a communications network
US6088356A (en) 1997-06-30 2000-07-11 Sun Microsystems, Inc. System and method for a multi-layer network element
US6341129B1 (en) 1998-04-03 2002-01-22 Alteon Networks, Inc. TCP resegmentation
US7333484B2 (en) 1998-08-07 2008-02-19 Intel Corporation Services processor having a packet editing unit
FI106504B (fi) 1998-10-06 2001-02-15 Nokia Networks Oy Datan segmentointimenetelmä tietoliikennejärjestelmässä
US6789116B1 (en) 1999-06-30 2004-09-07 Hi/Fn, Inc. State processor for pattern matching in a network monitor device
US7038993B2 (en) 1999-12-02 2006-05-02 Matsushita Electric Industrial Co., Ltd. Optical disc medium having a plurality of sector groups, a recording method thereof and recorder
JP3613102B2 (ja) 1999-12-14 2005-01-26 日本電気株式会社 フレーム構成方法、フレーム構成装置およびフレーム構成転送システム
JP4099930B2 (ja) 2000-06-02 2008-06-11 株式会社日立製作所 ルータ装置及びvpn識別情報の設定方法
GB0023169D0 (en) 2000-09-20 2000-11-01 Ibm Message parsing in message processing systems
US6944168B2 (en) 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US6904057B2 (en) 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US7580408B2 (en) 2001-11-21 2009-08-25 Alcatel Lucent Configurable packet processor
US7236501B1 (en) 2002-03-22 2007-06-26 Juniper Networks, Inc. Systems and methods for handling packet fragmentation
US7187694B1 (en) 2002-03-29 2007-03-06 Pmc-Sierra, Inc. Generic packet parser
JP2003308206A (ja) 2002-04-15 2003-10-31 Fujitsu Ltd プロセッサ装置
US20050232303A1 (en) 2002-04-26 2005-10-20 Koen Deforche Efficient packet processing pipeline device and method
US7408957B2 (en) 2002-06-13 2008-08-05 International Business Machines Corporation Selective header field dispatch in a network processing system
US20050281281A1 (en) 2003-01-24 2005-12-22 Rajesh Nair Port input buffer architecture
US7415596B2 (en) 2003-01-24 2008-08-19 Gigafin Networks, Inc. Parser table/production rule table configuration using CAM and SRAM
US7706363B1 (en) 2003-06-11 2010-04-27 Radlan Computer Communications, Ltd Method and apparatus for managing packets in a packet switched network
WO2005036834A1 (ja) * 2003-10-10 2005-04-21 Fujitsu Limited 統計情報採取方法及び装置
US7411957B2 (en) 2004-03-26 2008-08-12 Cisco Technology, Inc. Hardware filtering support for denial-of-service attacks
US7822032B1 (en) 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US7646770B1 (en) 2004-03-30 2010-01-12 Extreme Networks, Inc. Systems for supporting packet processing operations
US7568047B1 (en) 2004-04-30 2009-07-28 Nortel Networks Limited Method and apparatus for adaptive service label management
JP4392294B2 (ja) 2004-06-15 2009-12-24 株式会社日立製作所 通信統計収集装置
JP4156568B2 (ja) 2004-06-21 2008-09-24 富士通株式会社 通信システムの制御方法、通信制御装置、プログラム
US7760719B2 (en) * 2004-06-30 2010-07-20 Conexant Systems, Inc. Combined pipelined classification and address search method and apparatus for switching environments
US7474619B2 (en) 2004-07-22 2009-01-06 International Business Machines Corporation Method and apparatus for providing fragmentation at a transport level along a transmission path
US7570661B2 (en) 2005-06-14 2009-08-04 Microsoft Corporation Script-based parser
US7603474B2 (en) 2005-10-05 2009-10-13 Microsoft Corporation Efficient endpoint matching using a header-to-bit conversion table
US9143585B2 (en) * 2006-07-07 2015-09-22 Wi-Lan Inc. Method and system for generic multiprotocol convergence over wireless air interface
CN101563908B (zh) 2006-12-19 2013-01-09 国际商业机器公司 分析网络流的装置和方法
US7822875B1 (en) 2006-12-22 2010-10-26 Marvell International Ltd. Method for flexible modifications to a packet
EP3041195A1 (en) * 2007-01-12 2016-07-06 University-Industry Cooperation Group Of Kyung Hee University Packet format of network abstraction layer unit, and algorithm and apparatus for video encoding and decoding using the format
IL220238A (en) 2007-03-12 2014-03-31 Marvell Israel Misl Ltd A method and system for determining the location of fields in information units
US8825592B2 (en) 2008-03-12 2014-09-02 Web Access, Inc. Systems and methods for extracting data from a document in an electronic format
US7843919B2 (en) * 2008-03-20 2010-11-30 International Business Machines Corporation Ethernet virtualization using a network packet alteration
KR101456563B1 (ko) * 2008-05-14 2014-10-31 삼성전자주식회사 멀티 홉 릴레이 환경에서 대역폭 할당 요청과 할당 방법 및시스템
US8234369B2 (en) 2008-12-23 2012-07-31 Verizon Patent And Licensing Inc. Web page response monitoring
US8902886B2 (en) * 2009-04-23 2014-12-02 International Business Machines Corporation Canonicalization of network protocol headers
US8111704B2 (en) 2009-06-26 2012-02-07 Intel Corporation Multiple compression techniques for packetized information
US9008082B2 (en) * 2009-12-07 2015-04-14 Telefonaktiebolaget L M Ericsson (Publ) Handling data packets received at a routing node
US8472438B2 (en) * 2010-04-23 2013-06-25 Telefonaktiebolaget L M Ericsson (Publ) Efficient encapsulation of packets transmitted on a packet-pseudowire over a packet switched network
US8537815B2 (en) 2010-06-17 2013-09-17 Apple Inc. Accelerating data routing
US8705533B1 (en) 2010-12-10 2014-04-22 Juniper Networks, Inc. Fast packet encapsulation using templates
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US8521905B2 (en) 2011-12-22 2013-08-27 Telefonaktiebolaget L M Ericsson (Publ) System for flexible and extensible flow processing in software-defined networks
US9282173B2 (en) 2012-02-17 2016-03-08 Viavi Solutions Inc. Reconfigurable packet header parsing
EP3276977B1 (en) * 2012-10-17 2020-04-29 Sony Corporation Data processing device, data processing method, and program
WO2014070883A2 (en) * 2012-10-30 2014-05-08 Jds Uniphase Corporation Method and system for identifying matching packets
US9219694B2 (en) 2013-03-15 2015-12-22 Wisconsin Alumni Research Foundation Content addressable memory with reduced power consumption
US9769701B2 (en) * 2013-06-14 2017-09-19 Texas Instruments Incorporated Header compression for wireless backhaul systems
US9444914B2 (en) * 2013-09-16 2016-09-13 Annapurna Labs Ltd. Configurable parser and a method for parsing information units
US9628382B2 (en) * 2014-02-05 2017-04-18 Intel Corporation Reliable transport of ethernet packet data with wire-speed and packet data rate match

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100441317B1 (ko) * 2000-01-27 2004-07-23 인터내셔널 비지네스 머신즈 코포레이션 데이터 패킷 분류 방법 및 장치
US20130039278A1 (en) * 2010-05-03 2013-02-14 Nokia Corporation Protocol overhead reduction
US20120281714A1 (en) * 2011-05-06 2012-11-08 Ralink Technology Corporation Packet processing accelerator and method thereof

Also Published As

Publication number Publication date
KR20150145728A (ko) 2015-12-30
CN105282134A (zh) 2016-01-27
TW201607274A (zh) 2016-02-16
JP2016005285A (ja) 2016-01-12
US9516145B2 (en) 2016-12-06
US20150373163A1 (en) 2015-12-24
JP6590545B2 (ja) 2019-10-16
HK1220831A1 (zh) 2017-05-12
CN105282134B (zh) 2020-09-25
EP2958285A2 (en) 2015-12-23
EP2958285A3 (en) 2016-01-27

Similar Documents

Publication Publication Date Title
KR102337513B1 (ko) 패킷 컨텐츠로부터 해시 입력을 형성하는 방법 및 장치
KR102337516B1 (ko) 패킷들로부터 데이터를 추출하는 방법 및 그 장치
WO2016131422A1 (en) Flow entry generating and packet processing based on flow entry
US11258886B2 (en) Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US20240022652A1 (en) A method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US9473601B2 (en) Method of representing a generic format header using continuous bytes and an apparatus thereof
JP6678401B2 (ja) 変更のためにパケットを個々のレイヤに分割し、変更後のレイヤを情報処理で継合する方法およびその装置
US9497294B2 (en) Method of using a unique packet identifier to identify structure of a packet and an apparatus thereof
US20170187623A1 (en) Method of identifying internal destinations of network packets and an apparatus thereof
EP2958288B1 (en) A method of modifying packets to a generic format for enabling programmable modifications and an apparatus thereof
EP2958286B1 (en) A method of using generic modification instructions to enable flexible modifications of packets and an apparatus thereof

Legal Events

Date Code Title Description
N231 Notification of change of applicant
N231 Notification of change of applicant
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant