Framework for dynamically programmed network packet processing
AssigneeCisco Technology, Inc.
InventorsDaniel C. Frost, Stewart F. Bryant, Clarence Filsfils
Life of this patent
Estimating the term…
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.
Claims21
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.
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.
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.
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.
Dependencies are inferred from the claim text.