KR102146947B1 - 네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법 - Google Patents

네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102146947B1
KR102146947B1 KR1020187021904A KR20187021904A KR102146947B1 KR 102146947 B1 KR102146947 B1 KR 102146947B1 KR 1020187021904 A KR1020187021904 A KR 1020187021904A KR 20187021904 A KR20187021904 A KR 20187021904A KR 102146947 B1 KR102146947 B1 KR 102146947B1
Authority
KR
South Korea
Prior art keywords
packet
header
data
newly developed
protocol
Prior art date
Application number
KR1020187021904A
Other languages
English (en)
Other versions
KR20180088531A (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 KR20180088531A publication Critical patent/KR20180088531A/ko
Application granted granted Critical
Publication of KR102146947B1 publication Critical patent/KR102146947B1/ko

Links

Images

Classifications

    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • 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/08Protocols for interworking; Protocol conversion

Landscapes

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

Abstract

네트워크 프로토콜들을 업데이트하기 위한 시스템 및 방법이 제공된다. 새로운 ASIC은 미래의 네트워크 프로토콜들에 적응하도록 설계되며, ASIC은 적어도 하나의 패킷 편집 프로그램을 포함한다. ASIC은 새로운 프로토콜들―패킷은 이 새로운 프로토콜들에 맞추어 업데이트되어야 함―을 결정하기 위하여 수신된 패킷을 분류하고(820), 패킷의 선택된 기존 헤더들을 삭제하며(830), 분류에 기초하여 패킷에 새로운 헤더들을 삽입하며(840), 그리고 분류에 기초하여 선택된 헤더들을 수정하도록(850) 구성된다.

Description

네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR ADAPTING TO NETWORK PROTOCOL UPDATES}
[0001] 본 출원은 2014년 5월 9일에 출원된 미국 특허 출원번호 제14/273,953호의 연속출원이며, 이에 의해 이 출원의 개시내용은 인용에 의해 본원에 통합된다.
[0002] 대부분의 네트워킹 ASIC(application specific integrated circuit)들은 미리 정의된 네트워크 프로토콜들에 대해 작고 정해진 세트의 패킷 헤더 편집 능력들을 구현한다. 특정 네트워크 프로토콜들에 대한 이러한 헤더 편집 능력들의 예들은 GRE(generic routing encapsulation) 터널 캡슐화(encapsulation) 및 캡슐화 해제(decapsulation), VLAN/MPLS(virtual local area network/multiprotocol label switching) 태그 푸시(push)/팝(pop) 등을 포함한다. 새로운 네트워크 프로토콜들은 ASIC의 완벽한 재설계(complete redesign) 또는 리스핀(respin)을 필요로 하는데, 이는 비용이 많이 들면서 시간을 소비한다. 예컨대, 네트워크에서 ASIC들을 재설계하고 교체하는 것은 수년의 시간이 걸리고 수백만 달러의 비용이 든다.
본 발명의 배경이 되는 기술은 다음의 공개특허공보에 개시되어 있다.
[문헌 1] US 2002/0163935 A1 (Jeremy B. Paatela 외) 2002.11.07.
[0003] 네트워크 프로토콜들을 적절하게 업데이트하기 위한 시스템 및 방법이 제공된다. 미래의 네트워크 프로토콜들에 적응가능한 ASIC은 현재 및 가능한 미래 네트워크 프로토콜들의 패킷 헤더 편집 요건들을 지원하도록 프로그래밍될 수 있는 PIPE(Protocol Independent Packet Editor)를 포함한다.
[0004] 기술의 일 양상은 패킷을 수신하는 단계, 하나 이상의 프로세서들을 사용하여 패킷을 분류하는 단계―분류하는 단계는 새로운 프로토콜을 결정하는 단계를 포함하며, 패킷은 새로운 프로토콜에 맞추어 업데이트되어야 함―, 하나 이상의 프로세서들을 사용하여 패킷의 기존 헤더를 삭제하는 단계, 하나 이상의 프로세서들을 사용하여 분류에 기초하여 패킷에 새로운 헤더를 삽입하는 단계 및 하나 이상의 프로세서들을 사용하여, 분류에 기초하여 새로운 헤더를 수정하는 단계를 포함하는 방법을 제공한다. 일부 예들에 따르면, 새로운 프로토콜을 결정하는 단계―패킷은 새로운 프로토콜에 맞추어 업데이트되어야 함―는 패킷 편집 프로그램에 대한 포인터(pointer)들을 식별하는 단계를 포함한다. 기존 패킷 헤더를 삭제하는 단계는 새로운 프로토콜에 의해 사용되지 않는, 기존 헤더의 선택된 부분들을 삭제하는 단계를 포함할 수 있다. 게다가, 새로운 패킷 헤더를 삽입하는 단계는 이전 패킷 헤더에 남아 있는 부분들과 새로운 프로토콜에 기초한 새로운 패킷 헤더의 부분들을 삽입하는 단계를 포함할 수 있다. 새로운 헤더를 포함하는 패킷은 새로운 헤더에 기초하여 네트워크를 통해 송신될 수 있다.
[0005] 개시내용의 다른 양상은 적어도 하나의 메모리 및 적어도 하나의 메모리와 통신하는 적어도 하나의 프로세서를 포함하는 시스템을 제공한다. 적어도 하나의 프로세서는 패킷을 수신하며, 패킷을 분류하며―분류하는 것은 새로운 프로토콜을 결정하는 것을 포함하며, 패킷은 이 새로운 프로토콜에 맞추어 업데이트되어야 함―, 패킷의 기존 헤더를 삭제하며, 분류에 기초하여 패킷에 새로운 헤더를 삽입하며 그리고 분류에 기초하여 새로운 헤더를 수정하도록 구성된다.
[0006] 적어도 하나의 메모리는 적어도 하나의 패킷 편집 프로그램을 포함할 수 있으며, 각각의 패킷 편집 프로그램은 그 자신의 편집 명령들에 대한 포인터들, 및 정적 데이터, 공유 데이터 및 동적 데이터의 세트들에 대한 포인터들을 포함할 수 있다. 적어도 하나의 메모리는 편집 명령들에 의해 액세스가능한 레지스터 데이터 및 메타 데이터를 더 포함할 수 있다. 게다가, 적어도 하나의 메모리 및 적어도 하나의 프로세서는 ASIC(application specific integrated circuit)상에 상주할 수 있다.
[0007] 개시내용의 또 다른 양상은 방법을 수행하기 위하여 하나 이상의 프로세서들에 의해 실행가능한 명령들을 저장한 비-일시적 컴퓨터-판독가능 매체를 제공하며, 방법은 패킷을 수신하는 단계, 패킷을 분류하는 단계―분류하는 단계는 새로운 프로토콜을 결정하는 단계를 포함하며, 패킷은 이 새로운 프로토콜에 맞추어 업데이트되어야 함―, 패킷의 기존 헤더를 삭제하는 단계, 분류에 기초하여 패킷에 새로운 헤더를 삽입하는 단계, 및 분류에 기초하여 새로운 헤더를 수정하는 단계를 포함한다.
[0008] 도 1은 개시내용의 양상에 따른 시스템 다이어그램이다.
[0009] 도 2는 개시내용의 양상들에 따른 다른 시스템 다이어그램이다.
[0010] 도 3a-b는 개시내용의 양상들에 따른 예시적인 명령 포맷들을 예시한다.
[0011] 도 4는 개시내용의 양상들에 따른 다른 시스템 다이어그램이다.
[0012] 도 5a-f는 개시내용의 양상들에 따른 예시적인 명령들을 예시한다.
[0013] 도 6a-f는 개시내용의 양상들에 따른 예시적인 명령들을 예시한다.
[0014] 도 7는 개시내용의 양상들에 따른 또 다른 시스템 다이어그램이다.
[0015] 도 8은 개시내용의 양상들에 따른 예시적인 방법의 흐름도이다.
[0016] 본 개시내용은 네트워크 프로토콜들을 적절하게 업데이트하기 위한 시스템 및 방법을 제공한다. 네트워크 프로토콜이 업데이트될 때 ASIC(application specific integrated circuit)들을 재설계하고 교체하는 것 보다 오히려, 미래의 네트워크 프로토콜들에 적응하도록 새로운 ASIC이 설계된다. ASIC은 현재 및 가능한 미래 네트워크 프로토콜들의 패킷 헤더 편집 요건들을 지원하도록 프로그래밍될 수 있는 PIPE(Protocol Independent Packet Editor)를 포함한다.
[0017] 일 실시예에 따르면, ASIC은 패킷 헤더에 대해 동작하는 편집 프로그램을 실행하는 중앙 편집 유닛(CEU: Central Editing Unit)을 포함한다. 중앙 편집 유닛은 3개의 개별 편집 유닛들, 즉 삭제 유닛, 삽입 유닛 및 수정 유닛의 프로세싱 파이프라인이다. 각각의 유닛은 이전 유닛으로부터 수정된 패킷에 대해 동작한다. 이러한 CEU 파이프라인은 효율적인 실리콘 하드웨어 구현과 함께 높은 대역폭과 패킷 레이트에서 유연한(flexible) 패킷 헤더 편집을 가능하게 한다.
[0018] 삭제 유닛은 패킷으로부터 임의 프로토콜 헤더들의 제거를 가능하게 한다. 삽입 유닛은 패킷으로의 임의 프로토콜 헤더들의 삽입을 가능하게 한다. 수정 유닛은 헤더 필드들의 유연한 재기록(flexible rewriting)(오버라이트(overwrite) 또는 판독-수정-기록(read-modify-write))을 가능하게 한다.
[0019] CEU에 의해 실행되는 패킷 편집 프로그램은 편집 명령들(삭제, 삽입 및 필드 수정)의 세트 및 편집 데이터(구성, 메타, 공유 및 동적)의 세트를 포함한다. 캡슐화, 캡슐화 해제, 암호화, 복호화 등과 같은 상이한 패킷 헤더 편집 능력들을 위한 하나 이상의 상이한 편집 프로그램들이 존재할 수 있다. 논리 유닛은 프로그램 명령들 및 연관된 데이터 세트에 대한 포인터들을 결정하기 위하여 착신 패킷을 파싱(parsing)하고 분류한다.
[0020] 편집 명령들은 예컨대 길이가 32 바이트 또는 64 바이트일 수 있다. 편집 명령들은 상이한 네트워크 동작들을 위한 상이한 편집 프로그램들에 의해 공유될 수 있다. 각각의 편집 프로그램은 3개의 데이터 세트들, 즉 정적 데이터; 공유 데이터(예컨대, 상이한 패킷 편집 프로그램들 사이에서 공유되는 보안 흐름 상태의 [flowID,pkt_cnt,encryption key]); 및 동적 데이터(예컨대, 프로그램에 전용된 데이터)에 대한 포인터들을 포함할 수 있다. 게다가, 편집 명령들이 이용할 수 있는 2개의 글로벌 데이터 세트들, 즉 메타 데이터 및 정규 데이터가 존재한다.
[0021] 도 1은 개시내용의 양상들에 따른 ASIC(100)을 예시한다. ASIC(100)은 패킷(150)과 같은 패킷을 수신하고, 업데이트된 네트워크 프로토콜에 따라 패킷을 업데이트하도록 적응된다. 일부 예들에 따르면, 업데이트된 네트워크 프로토콜은 현재 개발되지 않은 미래 네트워크 프로토콜일 수 있다. 이와 관련하여, 프로토콜이 업데이트될 때마다 네트워크에서 각각의 ASIC을 교체하는 것보다 오히려, 네트워크를 통해 송신되는 패킷들 및 ASIC이 효율적으로 업데이트될 수 있다.
[0022] ASIC(100)은 네트워크로 상호 연결되는 다수의 ASIC들 중 임의의 ASIC일 수 있다. 다른 예에 따르면, ASIC은 프로토콜 업데이트들을 위해 설계될 수 있다. ASIC(100)이 특정 컴포넌트들을 가지는 것으로 설명되는 반면에, ASIC에서 전형적으로 발견되는 컴포넌트들과 같은 다른 컴포넌트들이 포함될 수 있다는 것이 이해되어야 한다. 게다가, 컴포넌트들이 ASIC(100)내에 상주하는 것으로 도시된 반면에, 컴포넌트들이 ASIC(100)과 통신하는 네트워크의 다른 위치에 상주할 수 있다는 것이 이해되어야 한다.
[0023] ASIC(100)은 사용자 로직(110) 및 패킷 편집기(120)를 포함한다. 패킷 편집기(120)는 편집 명령들(132)과 편집 데이터(134)를 포함하는 적어도 하나의 편집 프로그램(130) 및 중앙 편집 유닛(140)을 더 포함한다.
[0024] 사용자 로직(110)은 ASIC에서 수신된 패킷들을 파싱하고 패킷들을 분류한다. 예컨대, 사용자 로직(110)은 다수의 편집 프로그램들 중 어느 편집 프로그램이 패킷(150)에 대해 동작해야 하는지를 결정할 수 있다. 상이한 타입들의 패킷들을 업데이트하기 위하여 상이한 편집 프로그램들이 생성될 수 있다. 예컨대, 제 1 편집 프로그램은 패킷을 제 1 프로토콜로부터 새로운 프로토콜로 업데이트하기 위하여 사용될 수 있는 반면에, 제 2 편집 프로그램은 패킷을 제 2 프로토콜로부터 새로운 프로토콜로 업데이트하기 위하여 사용된다. 다른 예에 따르면, 제 3 편집 프로그램은 캡슐화된 패킷들을 업데이트하기 위하여 사용될 수 있는 반면에, 제 3 편집 프로그램은 캡슐화 해제된 패킷들을 업데이트하기 위하여 사용된다.
[0025] 각각의 편집 프로그램은 편집 데이터 및 편집 명령들을 포함한다. 예컨대, 편집 프로그램(130)은 편집 명령들(132) 및 편집 데이터(134)를 포함한다. 편집 프로그램의 추가 세부사항들은 도 4와 관련하여 이하에서 설명된다.
[0026] 중앙 편집 유닛(140)은 사용자 로직(110)에 의해 식별된 편집 프로그램에 따라 패킷(150)을 업데이트하는 프로세싱 파이프라인이다. 따라서, ASIC(100)은 네트워크를 통해, 업데이트된 패킷(150')을 전송할 수 있다.
[0027] 도 2는 중앙 편집 유닛(140)의 추가 세부사항들을 예시한다. 도시된 바와 같이, 중앙 편집 유닛(140)은 삭제 유닛(210), 삽입 유닛(220) 및 수정 유닛(230)을 포함한다. 이들 유닛들(210, 220, 230) 각각은 명령들(132)과 같은, 특정 편집 프로그램에 대한 명령들의 세트에 따라 착신 패킷(150)에 대하여 동작한다. 도 4와 관련하여 이하에서 논의되는 바와같이, 명령들(132)은 각각의 유닛(210, 220, 230)에 대한 명령들의 개별 세트를 포함할 수 있다. 삽입 유닛(220)은 삭제 유닛(210)에 의해 수정된 패킷이 이후의 패킷(150)에 대하여 동작한다. 유사하게, 수정 유닛(230)은 삽입 유닛(220)에 의해 패킷이 수정된 이후의 패킷에 대하여 동작한다. 각각의 유닛은 자신의 동작 이후에 그리고 다음 유닛에 패킷을 전달하기 전에 패킷에 대한 바이트 스트림을 재정렬할 수 있다. 이러한 중앙 편집 유닛 파이프라인은 높은 대역폭과 패킷 레이트로 유연한(flexible) 패킷 헤더 편집을 가능하게 한다. 게다가, 파이프라인은 효율적인 실리콘 하드웨어 구현을 제공한다.
[0028] 삭제 유닛(210)은 패킷으로부터 임의 프로토콜 헤더들의 제거를 가능하게 한다. 예컨대, 터널링된 네트워크(tunneled network)에서 내부 IP 헤더 및 외부 IP 헤더와 같은 다수의 헤더들을 포함하는 패킷들에 대하여, 삭제 유닛(210)은 모든 패킷 헤더들 또는 선택된 패킷 헤더들을 제거할 수 있다. 다른 예에 따르면, 삭제 유닛(210)은 업데이트된 네트워크 프로토콜과 관련된 패킷 필드들을 유지하면서 특정 패킷 필드들을 제거할 수 있다.
[0029] 삽입 유닛(220)은 패킷으로의 임의 프로토콜 헤더들의 삽입을 가능하게 한다. 예컨대, 삽입 유닛(220)은 업데이트 네트워크 프로토콜과 관련된 헤더 필드들의 새로운 세트를 생성하고 이들 생성된 필드들을 패킷(150)에 추가할 수 있다. 단지 특정한 필드들만이 삭제 유닛(210)에 의해 삭제되는 예에서, 삽입 유닛(220)은 나머지 필드들이 다시 생성될 필요가 없음을 결정하고 대신에 단지 필요한 필드들만을 생성할 수 있다. 다른 예들에서, 삽입 유닛(220)은 헤더 전체를 생성할 수 있다.
[0030] 수정 유닛(230)은 헤더 필드들의 유연한(flexible) 재기록, 예컨대 오버라이트 또는 판독-수정-기록을 가능하게 한다. 예컨대, 수정 유닛(230)은 패킷이 업데이트된 네트워크를 통해 적절히 송신되는 것을 가능하게 하는 정보로 패킷 헤더 필드들을 채울 수 있다.
[0031] 도 1과 관련하여 앞서 논의된 바와같이, 각각의 패킷 편집 프로그램은 편집 명령들 및 편집 데이터 세트를 포함한다. 예컨대, 프로그램은 자신의 편집 명령들에 대하여 16-비트 포인터를 가질 수 있다. 일부 예들에 따르면, 편집 명령들은 상이한 편집 프로그램들에 의해 공유될 수 있다. 예컨대, 제 1 네트워크 프로토콜 하에서의 캡슐화와 제 2 네트워크 프로토콜 하에서의 캡슐화는 동일한 편집 명령들을 활용할 수 있다.
[0032] 도 3a 및 도 3b는 편집 명령들의 예시적인 포맷들을 예시한다. 도 3a의 예에서, 명령들은 32B이다. 바이트 0-7은 삭제에 전용되며, 바이트 8-15는 삽입에 전용되며, 바이트 16-31은 수정에 전용된다. 도 3b의 예에서, 명령들은 64B이다. 여기서, 32B 포맷과 유사하게, 바이트 0-7은 삭제에 전용된다. 그러나, 32B 포맷과 대조적으로, 64B 포맷에서는 바이트 8-31이 삽입에 전용되며 바이트 32-63은 수정에 전용된다.
[0033] 도 4는 편집 프로그램(430)의 더 상세한 예시를 제공한다. 편집 프로그램(430)은 편집 명령들(440) 및 편집 데이터(450)를 포함한다.
[0034] 편집 데이터(450)는 정적 데이터(452), 공유 데이터(454) 및 동적 데이터(456)를 포함한다. 예컨대, 각각의 편집 프로그램은 ASIC과 통신하는 메모리에 저장될 수 있는 이들 데이터 세트들에 대한 포인터들을 포함할 수 있다. 일례에 따르면, 정적 데이터(452) 및 공유 데이터(454)는 각각 32B일 수 있으며, 동적 데이터(456)는 특정 편집 프로그램에 전용된 데이터의 32B-64B일 수 있다. 일례에 따르면, 선택된 n-튜플(tuple) 헤더 필드들로부터 생성된 해시(hash)를 사용하여 공유/동적 데이터 세트들의 그룹으로부터 공유/동적 데이터 세트들을 선택함으로써 다중경로 로드 밸런싱(multipath load balancing)이 지원될 수 있다.
[0035] 도시되지 않았을지라도, 편집 명령들은 추가 데이터, 예컨대 메타 데이터 및 레지스터 데이터를 이용할 수 있다. 예컨대, 메타 데이터의 32B가 이용가능할 수 있으며, 여기서 첫번째 8x2B 하프워드(halfword)는 메타데이터, 예컨대 pkt_length, ip_pkt_id, flow_hash, slice_ID 등이다. 두번째 8x2B 하프워드는 패킷 헤더로부터 수집된 2B 헤더 필드들, 예컨대 IP_PROTO, TTL, TOS 등이다. 예컨대, 사용자 로직의 파싱을 통해, 패킷 포맷이 식별되며, 원하는 헤더 필드들을 선택하기 위하여 8x2B 오프셋(offset)들이 특정된다. 다른 예로서, 레지스터 데이터의 64B는 8x8B 레지스터들과 함께 편집 명령들이 이용할 수 있을 것이다. 이러한 예에서, 레지스터 0은 전부 0들로 하드코딩되며; 레지스터 1은 선택적으로 64비트 패킷 카운트(count)가 로드되며; 레지스터 2는 선택적으로 64비트 타임스탬프가 로드되며; 레지스터들 3-7은 정적 데이터를 가진 소프트웨어로 구성된다.
[0036] 편집 명령들(440)은 삭제 명령(442), 삽입 명령(444) 및 수정 명령들(446)을 포함한다. <INS NOP> 및 <INS MOV>과 같은 특정 삽입 명령들(444)의 예들이 도 5a-5f에서 더 상세히 도시되고 설명된다. <MOD NOP> 및 <MOD WRITE META>와 같은 특정 수정 명령들(446)의 예들이 또한 도 6a-6f에서 더 상세히 도시되고 설명된다.
[0037] 삭제 명령들(442)은 예컨대 길이가 8B일 수 있으며, 여기서 각각의 비트는 128B 패킷 헤더의 2B 하프워드를 나타낸다. 비트가 세팅될 때, 대응하는 2B 하프워드는 패킷 헤더로부터 삭제된다. 64비트 0은 실질적으로 NOP(no operation) 삭제 명령이다.
[0038] 삽입 명령들(444)은 예컨대 도 2의 삽입 유닛(220)에 의해 실행될 수 있다. 일례에 따르면, 삽입 유닛(220)은 0에서 시작하는 액티브 헤더 포인터(active header pointer)를 (예컨대, 2B 하프워드의 단위로) 유지한다. 도 5a와 관련하여 이하에서 더 상세히 설명되는 MOV 명령은 헤더 포인터를 앞으로 이동시킨다. 삽입 명령은 현재의 액티브 헤더 포인터에 특정 데이터를 삽입하며, 삽입된 하프워드들의 수 만큼 헤더 포인터를 앞으로 이동시킨다. 모든 삽입 명령들(444)은 예컨대 폭이 8비트일 수 있다.
[0039] 도 5a-5f는 이동 및 특정 데이터 세트들에 대한 동작들을 포함하는 예시적인 삽입 명령들(444)을 예시한다. NOP(no operation) 삽입 명령은 도시되지 않는다. 예컨대 0들의 8비트는 NOP이며, 즉 삽입 명령들의 끝을 표시한다.
[0040] 도 5a는 예시적인 INS MOV 명령을 예시한다. 이러한 명령은 특정 카운트(cnt) 만큼 현재 삽입 포인터를 전진시킨다. 예컨대, 도시된 바와같이, 비트 0-5는 카운트를 포함하는데 반해, 비트 7-8은 0으로 세팅된다.
[0041] 도 5b는 예시적인 INS STATIC 명령을 예시한다. 이러한 명령은 정적 데이터 세트(예컨대, 도 4의 정적 데이터(452))로부터의 특정 (cnt) 하프워드들을 삽입한다. 만일 h=0이면, 데이터는 하부 16B로부터 시작한다. 만일 h=1이면, 데이터는 상부 16B로부터 시작한다.
[0042] 도 5c는 예시적인 INS SHARED 명령을 예시한다. 이러한 명령은 INS STATIC 명령이 정적 데이터 세트에 대해 동작하는 것과 동일한 방식으로 공유 데이터 세트(예컨대, 도 4의 공유 데이터(454))에 대해 동작할 수 있다. 유사하게, 도 5d는 도 4의 동적 데이터(456)와 같은 동적 데이터의 첫번째 32B에 대해 동작하는 것과 동일한 방식으로 또한 동작하는 예시적인 INS DYNAMIC L 명령들을 예시한다. 더욱이, 도 5e는 동적 데이터의 두번째 32B에 대하여 동작하는 것과 동일한 방식으로 또한 동작하는 예시적인 INS DYNAMIC H 명령들을 예시한다.
[0043] 도 5f는 선택된 글로벌 레지스터 데이터로부터의 cnt 하프워드들을 삽입하는 예시적인 INS REG 명령을 예시한다.
[0044] 수정 명령들(446)은 일반적으로 일부 명령들에서 선택된 선택적인 비트들 또는 바이트들을 사용하여 하프워드에 대하여 동작할 수 있다. 일부 예에 따르면, 동일한 하프워드에 대하여 2개의 수정 명령들이 동작할 수 있으며, 각각의 수정 명령은 상이한 바이트로 동작한다. MOD NOP는 NOP(no operation) 수정 명령을 표시하며, 0의 16비트로 표현될 수 있다. 이는 수정 명령들의 끝을 표시한다.
[0045] 도 6a는 예시적인 MOD WRITE META 명령을 예시한다. 이러한 명령에 따르면, 기록 동작은 특정 op_code에 따라 메타 데이터 세트로부터 선택된 (sel[3:0]) 2B 필드와 (하프워드의 단위로) 오프셋에서 수행된다. 메타데이터의 4 니블(nibble)을 재기록하는 지원되는 기록 op_code의 예들은 1. ABCD > ABCD; 2. ABCD > ABXX; 3. ABCD > XXCD; 4. ABCD > XXAB; 5. ABCD > CDXX; 6. ABCD > XCDX; 7. ABCD > XXBC;을 포함한다. 이들 예들에서, "X"는 니블이 변경되지 않았음을 표시한다. 예 6 및 7은 예컨대 IPv4 헤더와 IPv6 헤더 사이에 DSCP/ECN를 복사할 때 유용할 수 있다.
[0046] 도 6b는 예시적인 MOD_CHKSUM 명령을 예시한다. 이러한 명령은 hdr_len 하프워드들에 대하여 (헤더의 첫번째 64B내의) hdr_offset에서 시작하는 1의 보수 검사합(checksum)을 (IPv4 헤더에서 처럼) 계산하며, hdr_offset 필드에 대한 특정 csum_offset 위치에, 계산된 검사합 필드를 기록한다. 검사합 필드 그 자체는 검사합 누산에 포함되지 않는다.
[0047] 도 6c는 헤더 오프셋에서 (바이트 인에이블(byte enable) "ben"에 의해 특정된) 바이트/하프워드에 대하여 op_code에 의해 특정된 동작들을 실행하는 예시적인 MOD_ALU 명령을 예시한다. 지원되는 op_code의 예들은 0- 0으로 세팅; 1- 1로 세팅; 2- 1 가산; 3- 1 가산 그러나 8hF 또는 16hFF에서 중지; 4- 1 감산; 5- 1 감산 그러나 0에서 중지;를 포함한다.
[0048] 도 6d는 imm_data에서 특정된 증분 값을 사용하여 csum_offset에서 검사합 필드의 증분 검사합 업데이트를 수행하는 예시적인 MOD_CKSUM_INC 명령을 예시한다.
[0049] 도 6e는 16비트 즉시 데이터(immediate data) imm_data와 오프셋에 헤더 필드를 오버라이트하는 예시적인 MOD_WRITE_IMM 명령을 예시한다. nibble_en의 각각의 비트는 하프워드의 1 니블이 오버라이트되는 것을 가능하게 한다.
[0050] 도 6f는 메타 데이터로부터 선택된 (sel[3:0]) 2B 필드와 imm_data 간의 (op_code에 의해 특정된) 동작들의 결과를 사용하여 (하프워드의 단위로) 오프셋에 기록하는 예시적인 MOD_WRITE_META_IMM 명령을 예시한다. 지원되는 op_code의 예들은 0- 가산; 1- 비트단위(bitwide) OR; 2- 비트단위 AND;를 포함한다.
[0051] 다수의 예시적인 명령들이 설명되었지만, 이들 예들은 비한정적이며 추가 명령들이 패킷 헤더들을 업데이트하기 위하여 사용될 수 있다는 것이 이해되어야 한다. 게다가, 이들 예시적인 명령들은 의도된 효과를 계속해서 달성하면서 수정될 수 있다는 것이 이해되어야 한다.
[0052] 도 7은 본원에서 설명된 바와같이 패킷 헤더들을 업데이트하기 위하여 구현될 수 있는 예시적인 컴퓨팅 디바이스를 예시한다. 컴퓨팅 디바이스는 프로세서(730) 및 메모리(720)를 포함하는 ASIC 또는 다른 디바이스, 또는 서로간에 통신하는 다수의 컴퓨팅 디바이스들 또는 컴포넌트들일 수 있다. 컴퓨팅 디바이스(700)는 다른 컴퓨팅 디바이스들로부터 데이터 패킷들 또는 다른 정보를 수신하기 위한 하나 이상의 입력 포트들(750)을 더 포함할 수 있다. 유사하게, 컴퓨팅 디바이스(700)는 예컨대 새로운 네트워크 프로토콜에 따라 패킷 헤더들이 업데이트된 이후에 패킷들을 송신하기 위한 하나 이상의 출력 포트들(760)을 가질 수 있다.
[0053] 메모리(720)는 프로세서(730)에 의해 실행되거나 또는 그렇지 않은 경우에 프로세서(730)에 의해 사용될 수 있는 명령들(728) 및 데이터(722)를 비롯하여 프로세서(730)에 의해 액세스가능한 정보를 저장한다. 메모리(720)는 컴퓨터-판독가능 매체, 또는 전자 디바이스의 도움으로 판독될 수 있는 데이터를 저장하는 다른 매체, 예컨대 하드-드라이브, 메모리 카드, ROM, RAM, DVD 또는 다른 광학 디스크들 뿐만아니라 다른 기록-가능 및 판독-가능 메모리들을 비롯하여 프로세서에 의해 액세스가능한 정보를 저장할 수 있는 임의의 타입의 메모리일 수 있다. 일례에 따르면, 도 4를 다시 참조하면, 편집 데이터(450) 및 편집 명령들(440)은 단일 로직 SRAM을 공유하여, 자신들 사이에 SRAM 자원들의 동적 할당을 가능하게 할 수 있다. 시스템들 및 방법들은 전술한 것들의 상이한 조합들을 포함할 수 있으며, 따라서 명령들 및 데이터의 상이한 부분들은 상이한 타입들의 매체들상에 저장된다.
[0054] 명령들(728)은 프로세서(730)에 의해 직접적으로 실행되거나 (예컨대, 머신 코드) 또는 간접적으로 실행될 (예컨대, 스크립트들) 명령들의 임의의 세트일 수 있다. 예컨대, 명령들은 컴퓨터-판독가능 매체상에 컴퓨터 코드로서 저장될 수 있다. 이와 관련하여, 용어들 "명령들" 및 "프로그램들"은 본원에서 상호 교환가능하게 사용될 수 있다. 명령들은 프로세서에 의한 직접 프로세싱을 위한 목적 코드 포맷으로, 또는 요구에 따라 해석되거나 또는 사전에 컴파일되는 독립 소스 코드 모듈들의 집합들 또는 스크립들을 포함하는 임의의 다른 컴퓨터 언어로 저장될 수 있다. 패킷의 수신시에, 프로세서(730)는 명령들(728)을 실행하여, 예컨대 패킷을 분류하고, 패킷 헤더를 삭제하며, 분류에 기초하여 새로운 패킷 헤더를 삽입하며 그리고 분류에 기초하여 패킷 헤더를 수정할 수 있다.
[0055] 데이터(722)는 명령들(728)에 따라 프로세서(730)에 의해 리트리브(retrieve)되거나 저장되거나 또는 수정될 수 있다. 예컨대, 비록 시스템 및 방법이 임의의 특정 데이터 구조에 의해 제한되지 않을지라도, 데이터는 복수의 상이한 필드들 및 레코드들, XML 문서들 또는 플랫 파일(flat file)들을 가진 테이블로서 컴퓨터 레지스터들에, 즉 관계형 데이터베이스에 저장될 수 있다. 데이터는 또한 임의의 컴퓨터-판독가능 포맷으로 포맷될 수 있다. 데이터는 관련 정보, 예컨대 번호들, 설명 텍스트(descriptive text), 소유 코드(proprietary code)들, (다른 네트워크 위치들을 포함하는) 상이한 메모리들 또는 동일한 메모리의 다른 영역들에 저장된 데이터에 대한 참조(reference)들, 또는 관련 데이터를 계산하기 위한 기능에 의해 사용되는 정보를 식별하는데 충분한 임의의 정보를 포함할 수 있다.
[0056] 프로세서(730)는 임의의 종래의 프로세서, 예컨대 상업적으로 이용가능한 라우터들의 프로세서들일 수 있다. 대안적으로, 프로세서는 전용 제어기, 예컨대 ASIC 또는 다른 하드웨어-기반 프로세서일 수 있다. 실제로, 프로세서 및 메모리는 동일한 물리적 하우징내에 보관되거나 또는 보관될 수 없는 다수의 프로세서들 및 메모리들을 포함할 수 있다. 예컨대, 메모리는 데이터 센터의 서버 팜(server farm)에 위치한 하드 드라이브 또는 다른 저장 매체들일 수 있다. 따라서, 프로세서, 메모리 또는 컴퓨터에 대한 참조는 병렬로 동작하거나 또는 동작하지 않을 수 있는 프로세서들, 메모리들 또는 컴퓨터들의 집합에 대한 참조를 포함하는 것으로 이해될 것이다.
[0057] 컴퓨팅 디바이스(700)는 예컨대 네트워크를 통해 다른 컴퓨팅 디바이스들과 통신할 수 있다. 예컨대, 디바이스들은 유선 연결을 통해 또는 무선으로 통신할 수 있다. 네트워크 및 중간 노드(intervening node)들은 인터넷, 월드 와이드 웹(World Wide Web), 인트라넷들, 가상 사설 네트워크들, 광대역 네트워크들, 로컬 네트워크들, 하나 이상의 회사들이 소유한 통신 프로토콜들을 사용하는 사설 네트워크들, 이더넷, WiFi (예컨대, 802.11, 802.11b, g, n, 또는 다른 이러한 표준들) 및 HTTP와 전술한 것들의 다양한 조합들을 포함하는 다양한 구성들 및 프로토콜들을 포함할 수 있다. 이러한 통신은 다른 컴퓨터들에 그리고 이 다른 컴퓨터들로부터 데이터를 송신할 수 있는 임의의 디바이스, 예컨대 모뎀들(예컨대, 다이얼-업(dial-up), 케이블 또는 광섬유) 및 무선 인터페이스들에 의해 가능하게 될 수 있다.
[0058] 도 8은 새로운 네트워크 프로토콜에 따르도록 패킷들을 업데이트하는 예시적인 방법을 예시한다. 예컨대, 이러한 방법은 앞서 설명된 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스에 의해 수행될 수 있다. 이러한 방법에 수반되는 동작들이 설명된 바로 그 순서로 수행될 필요가 없다는 것이 이해되어야 한다. 오히려, 다양한 동작들은 상이한 순서로 또는 동시에 핸들링될 수 있으며 동작들은 추가되거나 또는 생략될 수 있다.
[0059] 블록(810)에서는 패킷이 수신된다. 블록(820)에서는 수신된 패킷이 분류된다. 예컨대, 분류는 수신된 패킷의 포맷을 결정하는 것과 새로운 프로토콜을 결정하는 것을 포함할 수 있으며, 이 새로운 프로토콜에 따라 수신된 패킷이 업데이트되어야 한다. 일례에 따르면, 분류는 수신된 패킷이 특정 패킷 편집 프로그램 및 연관된 데이터 세트에 대한 포인터들을 포함하는지의 여부를 결정하는 것을 포함한다.
[0060] 블록(830)에서는 패킷 헤더가 삭제된다. 예컨대, 헤더는 새로운 프로토콜 헤더 포맷에 기초하여 부분적으로 삭제되거나 또는 그 전체가 삭제될 수 있다.
[0061] 블록(840)에서는 새로운 프로토콜 헤더가 분류에 기초하여 삽입된다. 예컨대, 새로운 헤더가 삭제에 기초하여 전체적으로 또는 부분적으로 삽입될 수 있다. 헤더는 예컨대 도 4 및 도 5a-f와 관련하여 앞서 설명된 동작들 중 임의의 동작을 사용하여 삽입될 수 있다.
[0062] 블록(850)에서는 헤더가 수정될 수 있다. 예컨대, 새로운 헤더 필드들이 기록될 수 있으며 그리고/또는 기존 헤더 필드들이 오버라이트되거나 또는 수정될 수 있다. 헤더 필드들의 수정은 예컨대 도 4 및 도 6a-f와 관련하여 앞서 설명된 명령들 중 임의의 명령을 사용하여 수행될 수 있다. 일단 패킷 헤더가 수정되면, 업데이트된 패킷은 예컨대 컴퓨팅 디바이스의 출력 포트를 통해 출력될 수 있다.
[0063] 앞서 설명된 시스템들, 방법들 및 예들은 그들이 아직 정의되지 않은 새로운 프로토콜들에 기존 네트워크들을 적응시키는 것을 제공한다는 점에서 유리하다. 프로토콜 업데이트가 발생할 때마다 다수의 ASIC들을 재설계하고 교체하는 것 보다 오히려, 기존 ASIC들에 의한 사용을 위해 패킷 헤더들이 수정될 수 있다. 이와 관련하여, 실질적인 시간, 노력 및 비용이 절감된다.
[0064] 앞서 논의된 특징들의 이들 및 다른 변형들 및 조합들이 청구범위에 의해 정의된 요지로부터 벗어나지 않고 활용될 수 있기 때문에, 실시예들의 전술한 설명은 청구범위에 의해 정의된 요지를 제한하는 것으로 보다 오히려 예시하는 것으로 이해되어야 한다. 예로서, 전술한 동작들은 앞서 설명된 바로 그 순서로 수행될 필요가 없다. 오히려, 다양한 단계들은 상이한 순서로 또는 동시에 핸들링될 수 있다. 단계들은 또한 달리 언급하지 않는 한 생략될 수 있다. 게다가, 본원에서 설명된 예들 뿐만아니라 "예컨대", "포함하는" 등으로 표현된 절들의 제공이 청구범위의 요지를 특정 예들로 제한하는 것으로 해석되지 않아야 하며; 오히려 예들은 많은 가능한 실시예들 중 단지 하나의 실시예만을 예시하는 것으로 의도된다. 더욱이, 상이한 도면들에서 동일한 참조부호들은 동일하거나 또는 유사한 엘리먼트들을 식별할 수 있다.

Claims (21)

  1. 하나 이상의 프로세서들을 사용하여 패킷을 수신하는 단계;
    상기 하나 이상의 프로세서들을 사용하여 상기 패킷을 분류하는 단계 ― 상기 분류하는 단계는:
    상기 패킷을 업데이트할 새롭게 개발된 프로토콜을 결정하는 단계 ― 상기 새롭게 개발된 프로토콜은 상기 하나 이상의 프로세서들이 개발되던 시기에는 아직 정의되지 않은 프로토콜임 ―; 및
    상기 새롭게 개발된 프로토콜에 맞추어 상기 패킷을 업데이트하기 위해 다수의 패킷 편집 프로그램들 중 어느 패킷 편집 프로그램이 상기 패킷에 대해 동작해야 하는지를 결정하는 단계를 포함하고, 상기 다수의 패킷 편집 프로그램들 각각은 편집 명령들 및 편집 데이터를 포함하고, 상기 편집 데이터는 정적 데이터, 공유 데이터 및 동적 데이터를 포함함 ―;
    상기 패킷을 업데이트하는 단계 ― 상기 업데이트하는 단계는:
    상기 패킷의 기존 헤더를 삭제하는 단계;
    상기 분류에 기초하여 상기 결정된 패킷 편집 프로그램에 따라 상기 패킷에 새로운 헤더를 삽입하는 단계 ― 상기 새로운 헤더는 상기 새롭게 개발된 프로토콜과 관련됨 ―; 및
    상기 분류에 기초하여 상기 결정된 패킷 편집 프로그램에 따라 상기 새로운 헤더를 수정하는 단계
    를 포함함 ― 를 포함하는,
    방법.
  2. 제 1항에 있어서,
    상기 패킷을 업데이트할 새롭게 개발된 프로토콜을 결정하는 단계는 상기 패킷을 업데이트하기 위해 상기 패킷 편집 프로그램에 대한 포인터(pointer)들을 식별하는 단계를 포함하는,
    방법.
  3. 제 1항에 있어서,
    상기 패킷의 기존 헤더를 삭제하는 단계는 상기 새롭게 개발된 프로토콜에 의해 사용되지 않는, 상기 기존 헤더의 선택된 부분들을 삭제하는 단계를 포함하는,
    방법.
  4. 제 3항에 있어서,
    상기 패킷에 새로운 헤더를 삽입하는 단계는 이전 패킷 헤더에 남아 있는 부분들과 상기 새롭게 개발된 프로토콜에 기초한 상기 새로운 헤더의 부분들을 삽입하는 단계를 포함하는,
    방법.
  5. 제 1항에 있어서,
    상기 새로운 헤더를 수정하는 단계는 오버라이트(overwrite) 또는 판독-수정-기록(read-modify-write) 동작 중 적어도 하나를 실행하는 단계를 포함하는,
    방법.
  6. 제 1항에 있어서,
    상기 새로운 헤더를 포함하는 상기 패킷을 상기 새로운 헤더에 기초하여 네트워크를 통해 송신하는 단계를 더 포함하는,
    방법.
  7. 다수의 패킷 편집 프로그램들을 포함하는 적어도 하나의 메모리, 및
    상기 적어도 하나의 메모리와 통신하는 적어도 하나의 프로세서를 포함하며;
    상기 적어도 하나의 프로세서는,
    패킷을 수신하고,
    상기 패킷을 분류하고 ― 상기 분류하는 것은:
    상기 패킷을 업데이트할 새롭게 개발된 프로토콜을 결정하는 것 ― 상기 새롭게 개발된 프로토콜은 상기 하나 이상의 프로세서들이 개발되던 시기에는 아직 정의되지 않은 프로토콜임 ―; 및
    상기 새롭게 개발된 프로토콜에 맞추어 상기 패킷을 업데이트하기 위해 다수의 패킷 편집 프로그램들 중 어느 패킷 편집 프로그램이 상기 패킷에 대해 동작해야 하는지를 결정하는 것을 포함하고, 상기 다수의 패킷 편집 프로그램들 각각은 편집 명령들 및 편집 데이터를 포함하고, 상기 편집 데이터는 정적 데이터, 공유 데이터 및 동적 데이터를 포함함 ―;
    상기 패킷을 업데이트하는 ― 상기 업데이트하는 것은:
    상기 패킷의 기존 헤더를 삭제하는 것;
    상기 분류에 기초하여 상기 결정된 패킷 편집 프로그램에 따라 상기 패킷에 새로운 헤더를 삽입하는 것; 및
    상기 분류에 기초하여 상기 결정된 패킷 편집 프로그램에 따라 상기 새로운 헤더를 수정하는 것
    을 포함함 ―,
    시스템.
  8. 제 7항에 있어서,
    각각의 패킷 편집 프로그램은 그 자신의 편집 명령들에 대한 포인터들, 및 정적 데이터, 공유 데이터 및 동적 데이터의 세트들에 대한 포인터들을 포함하는,
    시스템.
  9. 제 8항에 있어서,
    상기 적어도 하나의 메모리는 상기 편집 명령들에 의해 액세스가능한 레지스터 데이터 및 메타 데이터를 더 포함하는,
    시스템.
  10. 제 7항에 있어서,
    상기 적어도 하나의 메모리 및 상기 적어도 하나의 프로세서는 ASIC(application specific integrated circuit)상에 상주하고,
    상기 새롭게 개발된 프로토콜은 상기 ASIC의 설계 또는 제조 이후에 개발되는,
    시스템.
  11. 제 7항에 있어서,
    상기 패킷을 업데이트할 새롭게 개발된 프로토콜을 결정하는 것은 상기 패킷을 업데이트하기 위해 상기 패킷 편집 프로그램에 대한 포인터들을 식별하는 것을 포함하는,
    시스템.
  12. 제 7항에 있어서,
    상기 패킷의 기존 헤더를 삭제하는 것은 상기 새롭게 개발된 프로토콜에 의해 사용되지 않는, 상기 기존 헤더의 선택된 부분들을 삭제하는 것을 포함하는,
    시스템.
  13. 제 12항에 있어서,
    상기 패킷에 새로운 헤더를 삽입하는 것은 이전 패킷 헤더에 남아 있는 부분들과 상기 새롭게 개발된 프로토콜에 기초한 상기 새로운 헤더의 부분들을 삽입하는 것을 포함하는,
    시스템.
  14. 제 7항에 있어서,
    상기 새로운 헤더를 수정하는 것은 오버라이트(overwrite) 또는 판독-수정-기록(read-modify-write) 동작 중 적어도 하나를 실행하는 것을 포함하는,
    시스템.
  15. 제 7항에 있어서,
    상기 적어도 하나의 프로세서는 상기 새로운 헤더를 포함하는 상기 패킷을 상기 새로운 헤더에 기초하여 네트워크를 통해 송신하도록 추가로 구성되는,
    시스템.
  16. 방법을 수행하기 위하여 하나 이상의 프로세서들에 의해 실행가능한 명령들을 저장한 비-일시적 컴퓨터-판독가능 매체로서,
    상기 방법은,
    상기 하나 이상의 프로세서들을 사용하여 패킷을 수신하는 단계;
    상기 패킷을 분류하는 단계 ― 상기 분류하는 단계는:
    상기 패킷을 업데이트할 새롭게 개발된 프로토콜을 결정하는 단계 ― 상기 새롭게 개발된 프로토콜은 상기 하나 이상의 프로세서들이 개발되던 시기에는 아직 정의되지 않은 프로토콜임 ―; 및
    상기 새롭게 개발된 프로토콜에 맞추어 상기 패킷을 업데이트하기 위해 다수의 패킷 편집 프로그램들 중 어느 패킷 편집 프로그램이 상기 패킷에 대해 동작해야 하는지를 결정하는 단계를 포함하고, 상기 다수의 패킷 편집 프로그램들 각각은 편집 명령들 및 편집 데이터를 포함하고, 상기 편집 데이터는 정적 데이터, 공유 데이터 및 동적 데이터를 포함함 ―;
    상기 패킷을 업데이트하는 단계 ― 상기 업데이트하는 단계는:
    상기 패킷의 기존 헤더를 삭제하는 단계;
    상기 분류에 기초하여 상기 결정된 패킷 편집 프로그램에 따라 상기 패킷에 새로운 헤더를 삽입하는 단계; 및
    상기 분류에 기초하여 상기 결정된 패킷 편집 프로그램에 따라 상기 새로운 헤더를 수정하는 단계
    를 포함함 ― 를 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  17. 제 16항에 있어서,
    상기 패킷을 업데이트할 새롭게 개발된 프로토콜을 결정하는 단계는 상기 패킷을 업데이트하기 위해 상기 패킷 편집 프로그램에 대한 포인터들을 식별하는 단계를 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  18. 제 16항에 있어서,
    상기 패킷의 기존 헤더를 삭제하는 단계는 상기 새롭게 개발된 프로토콜에 의해 사용되지 않는, 상기 기존 헤더의 선택된 부분들을 삭제하는 단계를 포함하며; 그리고
    상기 패킷에 새로운 헤더를 삽입하는 단계는 이전 패킷 헤더에 남아 있는 부분들과 상기 새롭게 개발된 프로토콜에 기초한 상기 새로운 헤더의 부분들을 삽입하는 단계를 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  19. 제 16항에 있어서,
    상기 새로운 헤더를 수정하는 단계는 오버라이트(overwrite) 또는 판독-수정-기록(read-modify-write) 동작 중 적어도 하나를 실행하는 단계를 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  20. 제 16항에 있어서,
    상기 방법은 상기 새로운 헤더를 포함하는 상기 패킷을 상기 새로운 헤더에 기초하여 네트워크를 통해 송신하는 단계를 더 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  21. 제 1항에 있어서,
    상기 다수의 패킷 편집 프로그램들 중 어느 패킷 편집 프로그램이 상기 패킷에 대해 동작해야 하는지를 결정하는 단계는 상기 새롭게 개발된 프로토콜에 맞추어 상기 패킷을 업데이트하는데 필요한 편집 능력들에 기초하여 이루어지는,
    방법.
KR1020187021904A 2014-05-09 2015-05-07 네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법 KR102146947B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/273,953 2014-05-09
US14/273,953 US9503552B2 (en) 2014-05-09 2014-05-09 System and method for adapting to network protocol updates
PCT/US2015/029736 WO2015171922A1 (en) 2014-05-09 2015-05-07 System and method for adapting to network protocol updates

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020167030023A Division KR20160138519A (ko) 2014-05-09 2015-05-07 네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20180088531A KR20180088531A (ko) 2018-08-03
KR102146947B1 true KR102146947B1 (ko) 2020-08-21

Family

ID=53269723

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167030023A KR20160138519A (ko) 2014-05-09 2015-05-07 네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법
KR1020187021904A KR102146947B1 (ko) 2014-05-09 2015-05-07 네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167030023A KR20160138519A (ko) 2014-05-09 2015-05-07 네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법

Country Status (8)

Country Link
US (1) US9503552B2 (ko)
EP (1) EP3120528B1 (ko)
JP (1) JP6310573B2 (ko)
KR (2) KR20160138519A (ko)
CN (2) CN106256112A (ko)
DE (1) DE202015009279U1 (ko)
DK (1) DK3120528T3 (ko)
WO (1) WO2015171922A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10412009B2 (en) * 2016-03-10 2019-09-10 Arista Networks, Inc. Next hop groups
US9800514B1 (en) 2016-12-15 2017-10-24 Red Hat, Inc. Prioritizing data packets in a network
CN107770071B (zh) * 2017-10-19 2021-03-23 盛科网络(苏州)有限公司 一种基于OpenFlow的MPLS报文处理方法及装置
KR102079028B1 (ko) * 2018-04-05 2020-02-19 국방과학연구소 모의 네트워크 트래픽 트레이스 모의 생성을 위한 장치 및 방법
US11438266B2 (en) * 2020-02-04 2022-09-06 Mellanox Technologies, Ltd. Generic packet header insertion and removal

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010033580A1 (en) 1997-11-19 2001-10-25 Dorsey Paul C. Multi-protocol packet translator
EP1158724A2 (en) 2000-05-24 2001-11-28 Alcatel Internetworking (PE), Inc. Packet processor with programmable application logic
US20020163935A1 (en) 2001-05-04 2002-11-07 Terago Communications, Inc. System and method for providing transformation of multi-protocol packets in a data stream

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802287A (en) 1993-10-20 1998-09-01 Lsi Logic Corporation Single chip universal protocol multi-function ATM network interface
US6975628B2 (en) 2000-12-22 2005-12-13 Intel Corporation Method for representing and controlling packet data flow through packet forwarding hardware
US6901052B2 (en) 2001-05-04 2005-05-31 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US7573876B2 (en) * 2002-12-05 2009-08-11 Intel Corporation Interconnecting network processors with heterogeneous fabrics
US7353362B2 (en) * 2003-07-25 2008-04-01 International Business Machines Corporation Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus
US20050078704A1 (en) * 2003-10-14 2005-04-14 International Business Machines Corporation Method and apparatus for translating data packets from one network protocol to another
US20050198336A1 (en) * 2004-01-22 2005-09-08 Edward Eytchison Methods and apparatuses for automatic adaptation of different protocols
US9043862B2 (en) * 2008-02-06 2015-05-26 Qualcomm Incorporated Policy control for encapsulated data flows
CN101534199A (zh) * 2008-03-10 2009-09-16 上海十进制网络信息科技有限公司 一种字符排列路由器
WO2009129837A1 (en) * 2008-04-22 2009-10-29 Telefonaktiebolaget Lm Ericsson (Publ) Method of operating a signalling gateway and an application server, and signalling gateway and application server
US7920569B1 (en) * 2008-05-05 2011-04-05 Juniper Networks, Inc. Multi-link transport protocol translation
US8249104B2 (en) * 2008-10-30 2012-08-21 Futurewei Technologies, Inc. Optical network terminal management and control interface over Ethernet
US8705524B1 (en) * 2010-06-17 2014-04-22 Adtran, Inc. Systems and methods for embedding metadata in data packets
WO2011100932A2 (zh) * 2011-04-14 2011-08-25 华为技术有限公司 联动策略实现方法及装置、开放平台单板和设备
IN2014DN09322A (ko) * 2012-05-10 2015-07-10 Ericsson Telefon Ab L M

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010033580A1 (en) 1997-11-19 2001-10-25 Dorsey Paul C. Multi-protocol packet translator
EP1158724A2 (en) 2000-05-24 2001-11-28 Alcatel Internetworking (PE), Inc. Packet processor with programmable application logic
US20020163935A1 (en) 2001-05-04 2002-11-07 Terago Communications, Inc. System and method for providing transformation of multi-protocol packets in a data stream

Also Published As

Publication number Publication date
CN106256112A (zh) 2016-12-21
WO2015171922A1 (en) 2015-11-12
EP3120528A1 (en) 2017-01-25
DE202015009279U1 (de) 2017-01-19
DK3120528T3 (da) 2021-12-06
KR20180088531A (ko) 2018-08-03
KR20160138519A (ko) 2016-12-05
JP2017517951A (ja) 2017-06-29
JP6310573B2 (ja) 2018-04-11
CN113765892A (zh) 2021-12-07
EP3120528B1 (en) 2021-09-08
US20150326696A1 (en) 2015-11-12
US9503552B2 (en) 2016-11-22

Similar Documents

Publication Publication Date Title
KR102146947B1 (ko) 네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법
US10764181B2 (en) Pipelined evaluations for algorithmic forwarding route lookup
US11516129B2 (en) Packet edit processing method and related device
US10284390B2 (en) Techniques for efficient service chain analytics
US9019837B2 (en) Packet modification to facilitate use of network tags
EP2978174B1 (en) Interest return control message
US20120195208A1 (en) Programmable multifield parser packet
US9860168B1 (en) Network packet header modification for hardware-based packet processing
EP3142325A1 (en) Network named fragments in a content centric network
US9985892B1 (en) System and method for providing congestion notification in layer 3 networks
US20180270153A1 (en) Increasing entropy across routing table segments
US10958770B2 (en) Realization of a programmable forwarding pipeline through packet header summaries in a data processing unit
JP2016522627A (ja) パケット処理方法および装置
US20170111483A1 (en) Checksum friendly timestamp update
JP6189898B2 (ja) アクティブメッセージによるrmaapiのサポート
US20230269148A1 (en) High-Speed Packet Filtering
CN108683606B (zh) IPsec防重放的方法、装置、网络设备及可读存储介质
WO2014042966A1 (en) Telemetry data routing
CN115242561B (zh) IPSec传输模式超限包后分片处理方法、设备及介质
US10084613B2 (en) Self adapting driver for controlling datapath hardware elements
US9985885B1 (en) Aggregating common portions of forwarding routes
JP2009218743A (ja) Ipプロトコル処理装置及びその処理方法
EP3720068A1 (en) Message processing method and device
US10917502B2 (en) Method for using metadata in internet protocol packets

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right