Cut-through decode and reliability
First Claim
Patent Images
1. A method for writing data received over a network to a memory, comprising:
- beginning to receive a packet from a packet source at a port of a node operationally coupled to the network, the packet including a header portion and a payload portion, the header portion operating as a memory key for determining an address of the memory where the packet is copied at the node;
wherein the header portion includes a cut-through checksum that is based on a plurality of fields of data in the header portion for validating the packet before an entire payload for the packet has been received such that at least the received payload portion of the packet is transferred to the memory before the entire payload is received;
determining the cut-through checksum based on the plurality of fields of data in the header portion;
validating the determined cut-through checksum with the cut-through checksum in the header portion before the entire packet has been received so as to confirm that a memory location to which the payload is directed is a correct memory location for the payload and not erroneously directed to another memory location;
using a token identifier as an index to an array maintained by the node for determining the address to store the packet;
wherein the token identifier is a part of the header portion and is sent to the packet source by the node and identifies a physical memory location to store the packet but is not itself a memory address;
determining the memory address from the array for storing the packet;
initiating a write operation upon validation of the cut-through checksum and after determining the memory address, for at least some of the payload, to the correct memory location before the entire packet has been received;
initiating a direct memory access operation for storing the header portion separate from the payload as a receive header queue entry;
wherein the node maintains a plurality of receiver header queues, each queue corresponding to an application executed by the node;
updating a status flag in the receive header queue entry after the packet is received in its entirety; and
updating a receive pointer to indicate to a processor for the node of a new receive header queue entry;
wherein a network interface for the node updates the receive pointer after the packet is received and the processor polls the receive pointer to ascertain if there is a new receive header queue entry for processing.
5 Assignments
0 Petitions
Accused Products
Abstract
Validation of various portions of received data, including validating a cut-through checksum found in a received data packet. The cut-through checksum is based on data found in a packet header, and thus can be validated before the entire packet is received. This feature allows processing of the received data to begin before the entire packet has been received. Many embodiments will also receive a checksum that is based on the entire packet.
57 Citations
24 Claims
-
1. A method for writing data received over a network to a memory, comprising:
-
beginning to receive a packet from a packet source at a port of a node operationally coupled to the network, the packet including a header portion and a payload portion, the header portion operating as a memory key for determining an address of the memory where the packet is copied at the node;
wherein the header portion includes a cut-through checksum that is based on a plurality of fields of data in the header portion for validating the packet before an entire payload for the packet has been received such that at least the received payload portion of the packet is transferred to the memory before the entire payload is received;determining the cut-through checksum based on the plurality of fields of data in the header portion; validating the determined cut-through checksum with the cut-through checksum in the header portion before the entire packet has been received so as to confirm that a memory location to which the payload is directed is a correct memory location for the payload and not erroneously directed to another memory location; using a token identifier as an index to an array maintained by the node for determining the address to store the packet;
wherein the token identifier is a part of the header portion and is sent to the packet source by the node and identifies a physical memory location to store the packet but is not itself a memory address;determining the memory address from the array for storing the packet; initiating a write operation upon validation of the cut-through checksum and after determining the memory address, for at least some of the payload, to the correct memory location before the entire packet has been received; initiating a direct memory access operation for storing the header portion separate from the payload as a receive header queue entry;
wherein the node maintains a plurality of receiver header queues, each queue corresponding to an application executed by the node;updating a status flag in the receive header queue entry after the packet is received in its entirety; and updating a receive pointer to indicate to a processor for the node of a new receive header queue entry;
wherein a network interface for the node updates the receive pointer after the packet is received and the processor polls the receive pointer to ascertain if there is a new receive header queue entry for processing. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A system, comprising:
-
a first node having at least a processor and a network interface for receiving a packet from a second node having at least a processor and a network interface via a network, the packet having a payload portion and a header portion that operates as a memory key for determining an address of a memory where the packet is stored by the first node; wherein the first node is configured to send a token identifier to the second node, which identifies a memory location at the first node but is not itself a memory address and the second node is configured to determine a cut-through checksum based on a plurality of fields of the header portion of the packet, the cut-through checksum used by the first node to validate the packet before an entire payload for the packet has been received such that at least a received payload portion of the packet is transferred to the memory of the first node, before the entire payload for the packet is received; wherein the first node begins to receive the packet from the second node with the header portion having the cut-through checksum determined by the second node;
deter-mines the cut-through checksum based on the plurality of fields in the header portion;
validates the determined cut-through checksum with the cut-through checksum in the header portion before the entire packet has been received so as to confirm that a memory location to which the payload is directed is a correct memory location for the payload;
uses a token identifier in the header portion as an index to an array maintained by the node for determining a memory address to store the packet; and
initiates a write operation upon validation of the cut-through checksum and after determining the memory address, for at least some of the payload, to the correct memory location before the entire payload for the packet has been received;wherein the network interface for the first node initiates a direct memory access operation for storing the header portion separate from the payload as a receive header queue entry in one of a plurality of receiver header queues maintained by the first node, where each queue corresponds to an application executed by the first node; and wherein the network interface updates a status flag in the receive header queue entry after the packet is received in its entirety and updates a receive pointer to indicate to a processor for the first node of a new receive header queue entry that is ready for processing. - View Dependent Claims (19, 20)
-
-
21. A method for sending a packet to a first node from a second node via a network, comprising:
-
sending a token identifier from the first node to the second node, where the token identifier operates as an index to an array for determining an address to store the packet;
wherein the token identifier identifies a memory location but is not itself a memory address;determining a first cut-through checksum based on information in the header portion of the packet;
wherein the second node determines the first cut-through checksum that is used by the first node to validate the packet before an entire payload for the packet has been received such that at least a received payload portion of the packet is transferred to the memory of the first node, before the entire payload for the packet is received;beginning to receive the packet at the first node from the second node, the packet including a header portion and a payload portion, the header portion includes the first cut-through checksum determined by the second node and operates as a memory key for determining an address of the memory where the packet is copied at the first node; determining a second cut-through checksum based on the plurality of fields of data in the header portion;
wherein the first node determines the second cut-through checksum;validating the second cut-through checksum with the first cut-through checksum in the header portion before the entire packet has been received so as to confirm that a memory location to which the payload is directed is a correct memory location for the payload and not erroneously directed to another memory location; using a token identifier in the header portion as an index to the array maintained by the first node for determining the address to store the packet; determining the memory address from the array for storing the packet; initiating a write operation for at least some of the payload to the correct memory location, before the entire packet has been received; initiating a direct memory access operation for storing the header portion separate from the payload as a receive header queue entry;
wherein the first node maintains a plurality of receiver header queues, each queue corresponding to an application executed by the first node;updating a status flag in the receive header queue entry after the packet is received in its entirety; and updating a receive pointer to indicate to a processor for the first node of a new receive header queue entry;
wherein a network interface for the first node updates the receive pointer after the packet is received and the processor polls the receive pointer to ascertain if there is a new receive header queue entry for processing. - View Dependent Claims (22, 23, 24)
-
Specification