IP Library Granted Patent US 9,462,043
Granted Patent B2
US 9,462,043 · App. 13/927,394 · Granted Oct 4, 2016

Framework for dynamically programmed network packet processing

Inventors: Daniel C. Frost (Middlesex, GB); Stewart F. Bryant (Merstham, GB); Clarence Filsfils (Brussels, BE)
Assignee: Cisco Technology, Inc.
H04L67/10H04L45/566H04L63/0428H04L2463/041
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,462,043
App. No.
13/927,394
Granted
Oct 4, 2016
Kind
B2
Abstract

One or more functions to be performed on a packet at one or more network nodes along a network path are determined at a network device. A packet is generated which includes a packet header. Included in the packet header are an instruction pointer and an instruction portion. A first instruction for the one or more functions to be performed at the one or more network nodes is written to the instruction portion. Additionally, a value pointing to the first instruction is written to the instruction pointer. The packet is transmitted along the network path from the network device.

Claims (72)

1. A method comprising:

determining, at a network device, one or more functions to be performed at one or more network nodes along a network path;

generating a packet including a header, the header comprising an instruction pointer, an instruction portion, a scratch portion and a read pointer; and

transmitting the packet along the network path from the network device,

wherein generating the packet comprises:

writing to the instruction portion a first instruction for the one or more functions to be performed at the one or more network nodes;

writing to the instruction pointer a value pointing to a location in the instruction portion containing the first instruction,

writing to the scratch portion data to be used by the one or more functions, and

writing to the read pointer a read pointer value pointing to a location in the scratch portion containing the data to be used by the one or more functions.

2. The method of claim 1 , wherein:

writing to the instruction portion further comprises writing a second instruction to a second location in the instruction portion; and

writing the first instruction comprises instructions to set the instruction pointer to point to the second location containing the second instruction.

3. The method of claim 1 , wherein:

writing the instruction portion comprises writing an instruction that the packet should be sent to a predetermined network node;

writing to the scratch portion comprises writing an indication of the network node port connected to the predetermined network node; and

writing the read pointer comprises writing a value pointing to the location in the scratch portion storing the indication of the network node port connected to the predetermined network node.

4. The method of claim 1 , wherein:

determining one or more functions comprises determining that a packet payload will be encrypted at a predetermined node;

writing instructions for the one or more functions comprises writing instructions instructing the predetermined node to encrypt the packet payload;

writing to the scratch portion comprises writing a key configured to be used to encrypt the packet payload; and

writing the read pointer comprises writing a read pointer value pointing to the key.

5. The method of claim 1 , wherein generating the packet comprises:

generating a write pointer, and

writing a write pointer value to the write pointer pointing to a location of the scratch portion at which to store an output value generated by the one or more functions.

6. The method of claim 5 , wherein:

writing to the instruction portion comprises writing an instruction to add a timestamp to the scratch portion; and

writing the write pointer value comprises writing a value pointing to a location of the scratch portion to store the timestamp.

7. The method of claim 1 , further comprising receiving an advertisement of functions provided by the one or more network nodes; and

wherein determining the one or more functions comprises selecting functions from the advertisement.

8. The method of claim 1 , wherein:

determining one or more functions comprises defining the network path through the network; and

writing instructions for the one or more functions comprises writing instructions controlling the path of the packet through the network.

9. The method of claim 1 , wherein writing to the instruction portion the first instruction comprises writing a set of compute operations executable on a general purpose computing machine.

10. A method comprising:

receiving, at a network node, a packet comprising a header including an instruction portion, an instruction pointer, a scratch portion and a read pointer, wherein the instruction pointer points to a location in the instruction portion and the read pointer points to a location in the scratch portion;

reading the instruction pointer;

determining a first instruction located in the location in the instruction portion from the instruction pointer; and

executing the first instruction, wherein executing the instructions comprises reading data from the location in the scratch portion pointed to by the read pointer in response the first instruction.

11. The method of claim 10 , wherein executing the first instruction comprises performing at least one of a deep inspection of a packet payload, a modification of a packet payload, or a deletion of the packet.

12. The method of claim 10 , wherein:

executing the first instruction comprises encrypting a packet payload using a key in the location of the scratch portion pointed to by the read pointer and incrementing the instruction pointer.

13. The method of claim 10 , wherein:

executing the first instruction comprises incrementing the instruction pointer, incrementing the read pointer and forwarding the packet to a subsequent network node indicated by a value in the location of the scratch portion previously pointed to by the read pointer.

14. The method of claim 10 , wherein:

receiving the packet comprises a write pointer; and

executing the first instruction comprises writing a value to a location in the scratch portion pointed to by the write pointer.

15. An apparatus comprising:

a network interface unit configured to enable network communications;

a memory; and

a processor coupled to the network interface unit and the memory, wherein the processor is configured to:

receive a packet comprising a header including an instruction portion, an instruction pointer, a scratch portion and a read pointer, wherein the instruction pointer points to a location in the instruction portion and the read pointer points to a location in the scratch portion;

read the instruction pointer;

determine a first instruction located at the location in the instruction portion from the instruction pointer; and

execute the first instruction, wherein executing the instructions comprises reading data from the location in the scratch portion pointed to by the read pointer in response the first instruction.

16. The apparatus of claim 15 , wherein the processor is further configured to:

increment the instruction pointer to point to a second instruction located at a second location in the instruction portion; and

execute the second instruction.

17. The apparatus of claim 15 , wherein the processor is further configured to:

execute the first instruction using a value from the location in the scratch portion pointed to by the read pointer as an input to a function indicated by the first instruction.

18. A tangible, non-transitory computer readable medium comprising instructions that when executed by a processor cause the processor to:

receive a packet comprising a header including an instruction portion, an instruction pointer, a scratch portion and a read pointer wherein the instruction pointer points to a location in the instruction portion and the read pointer points to a location in the scratch portion;

read the instruction pointer;

determine a first instruction located in the location in the instruction portion from the instruction pointer; and

execute the first instruction, wherein executing the instructions comprises reading data from the location in the scratch portion pointed to by the read pointer in response the first instruction.

19. The computer readable medium of claim 18 , wherein the instructions further cause the processor to:

increment the instruction pointer to point to a second location in the instruction portion containing a second instruction; and

execute the second instruction.

20. The computer readable medium of claim 18 , wherein the instructions further cause the processor to:

execute the first instruction using a value from the location in the scratch portion pointed to by the read pointer as an input to the a function indicated by the first instruction.

21. The apparatus of claim 15 , wherein the processor is further configured to:

receive a write pointer in the header; and

execute the first instruction by writing a value to a location in the scratch portion pointed to by the write pointer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2013
From: FROST, DANIEL C.; BRYANT, STEWART F.; FILSFILS, CLARENCE
To: CISCO TECHNOLOGY, INC.
Reel/Frame 030690/0392 →
Continuity (2)
Provisional Application 61779823 · Mar 13, 2013
Related Publication 20140280717A1 · Sep 18, 2014