System, method and computer program product for stateless offloading of upper level network protocol operations
AssigneeNVIDIA Corporation
InventorMichael W. Johnson
Life of this patent
Estimating the term…
Abstract
A system, method and associated data structure are provided for offloading upper protocol layer operations. In use, data is communicated over a network utilizing a plurality of protocols associated with a plurality of protocol layers, where the protocol layers include a network layer. Further, processing associated with the communicating is offloaded, at least in part. Such offloaded processing involves at least one protocol associated with at least one of the protocol layers situated at or above the network layer. Still yet, such offloading is performed statelessly.
Claims29
An offload method, comprising:
- communicating data over a network utilizing a plurality of protocols associated with a plurality of protocol layers, the protocol layers including a network layer;
- and
- offloading, at least in part, processing associated with the communicating, where the offloaded processing involves at least one protocol associated with at least one of the protocol layers situated at or above the network layer;
- wherein the offloading is stateless, the stateless offloading avoiding use of state information regarding previous interactions during the course of at least a portion of the offloading of processing, wherein the state information is further associated with a memory descriptor list (MDL);
- wherein the offloaded processing includes an insertion of markers into a data stream including the communicated data;
- wherein the markers are distinct from cyclical redundancy checking (CRC) values and are inserted as the communicated data is being transmitted, after the CRC values are calculated, such that a framing mechanism is provided which may be utilized to identify a subsequent data unit in the data stream;
- wherein each of the markers is 8 bytes in length and includes two pointers, each of the two pointers indicating a 32 bit offset to a header section of a next protocol data unit (PDU), and
- wherein each of the two 32 bit offsets include a copy of the other offset and indicates how many bytes to skip in the data stream in order to find the header section of the next PDU;
- and
- wherein each of the markers uses the two copies of the pointers so that each of the markers spanning a TCP segment boundary would have at least one valid copy of the pointer in one TCP segment.
A transport offload engine sub-system, comprising:
- a transport offload engine in communication with a processor and a network, the transport offload engine for:
- communicating data over a network utilizing a plurality of protocols associated with a plurality of protocol layers, the protocol layers including a network layer;
- and offloading, at least in part, processing associated with the communicating, where the offloaded processing involves at least one protocol associated with at least one of the protocol layers situated at or above the network layer;
- wherein the transport offload engine sub-system is operable such that the offloading is stateless, the stateless offloading avoiding use of state information regarding previous interactions during the course of at least a portion of the offloading of processing, wherein the state information is further associated with a memory descriptor list (MDL);
- wherein offloaded processing includes an insertion of markers into a data stream including the communicated data;
- wherein the markers are distinct from cyclical redundancy checking (CRC) values and are inserted as the communicated data is being transmitted, after the CRC values are calculated, such that a framing mechanism is provided which may be utilized to identify a subsequent data unit in the data stream;
- wherein each of the markers is 8 bytes in length and includes two pointers, each of the two pointers indicating a 32 bit offset to a header section of a next protocol data unit (PDU), and
- wherein each of the two 32 bit offsets include a copy of the other offset and indicates how many bytes to skip in the data stream in order to find the header section of the next PDU;
- and
- wherein each of the markers uses the two copies of the pointers so that each of the markers spanning a TCP segment boundary would have at least one valid copy of the pointer in one TCP segment.
A data structure embodied on a non-transitory computer storage medium, comprising:
- a predetermined bit for enabling an offload mode for use in association with processing data utilizing a plurality of protocols associated with a plurality of protocol layers;
- wherein the data structure is utilized such that, upon enablement, processing is statelessly offloaded at least in part, the stateless offloading avoiding use of state information regarding previous interactions during the course of at least a portion of the offloading of processing, wherein the state information is further associated with a memory descriptor list (MDL), where the offloaded processing involves at least one protocol associated with at least one of the protocol layers situated at or above a network layer;
- wherein the data structure is utilized such that, upon enablement, the offloaded processing includes an insertion of markers into a data stream including the communicated data;
- wherein the data structure is utilized such that, upon enablement, the markers are distinct from cyclical redundancy checking (CRC) values and are inserted as the communicated data is being transmitted, after the CRC values are calculated, such that a framing mechanism is provided which may be utilized to identify a subsequent data unit in the data stream;
- wherein the data structure is utilized such that, upon enablement, each of the markers is 8 bytes in length and includes two pointers, each of the two pointers indicating a 32 bit offset to a header section of a next protocol data unit (PDU), and
- wherein each of the two 32 bit offsets include a copy of the other offset and indicates how many bytes to skip in the data stream in order to find the header section of the next PDU;
- and
- wherein each of the markers uses the two copies of the pointers so that each of the markers spanning a TCP segment boundary would have at least one valid copy of the pointer in one TCP segment.
Dependencies are inferred from the claim text.