Multi-slice network processor
First Claim
1. In a multi-slice network processor system comprising a plurality of processing slice modules, each module processing and storing a slice of packet data, a method for processing a packet in packet slices for transfer over a network interface comprising:
- prepending a system header to the packet, the system header providing information for use by the multi-slice system, the information comprising a sequence number;
assigning a packet identifier to the packet;
segmenting data of the packet into cells, the data including both header and body data for the packet;
generating cell descriptive information for each cell, the cell descriptive information including the packet identifier, and a packet position indicator indicating an order position of data of the cell with respect to the packet;
delivering one or more cells of the packet to one or more processing slice modules based upon load balancing criteria;
storing one or more cells in a buffer in the packet slice;
generating a buffer correlation data structure correlating the buffer of the packet slice to the packet, wherein the buffer correlation data structure is a linked list of buffer identifiers;
maintaining an independent set of upper bits of a sequence number for each communication flow; and
incrementing the independent set of upper bits for the respective communication flow, concatenating the set of upper bits with a set of bits of a sequence number in the system header into an index, indexing into a re-sequencing buffer space of sufficient depth to cover a slice-to-slice skew case based on the index, and resequencing the packet into its sequence order position responsive to one of the processing slices delivering a packet having a sequence number that is smaller in value than a sequence number for an immediately preceding packet for the same slice.
3 Assignments
0 Petitions
Accused Products
Abstract
A multi-slice network processor processes a packet in packet slices for transfer over a multi-port network interface such as a switch fabric. The network processor segments a packet into cells having a target size. A group of cells of a common packet form a packet slice which is independently processed by one of a number of parallel processing and storage slices. Load balancing may be used in the selection of processing slices. Furthermore, the network processor may load balance slices across the multi-port network interface to one or more destination slices of another network processor. The multi-slice processor uses post header storage delivery on ingress processing to the multi-port interface thereby reducing temporary storage requirements. The multi-slice network processor may also utilize sequence numbers associated with each packet to ensure that prior to transmission onto a destination network, the packet is in the correct order for a communication flow.
165 Citations
13 Claims
-
1. In a multi-slice network processor system comprising a plurality of processing slice modules, each module processing and storing a slice of packet data, a method for processing a packet in packet slices for transfer over a network interface comprising:
-
prepending a system header to the packet, the system header providing information for use by the multi-slice system, the information comprising a sequence number; assigning a packet identifier to the packet; segmenting data of the packet into cells, the data including both header and body data for the packet; generating cell descriptive information for each cell, the cell descriptive information including the packet identifier, and a packet position indicator indicating an order position of data of the cell with respect to the packet; delivering one or more cells of the packet to one or more processing slice modules based upon load balancing criteria; storing one or more cells in a buffer in the packet slice; generating a buffer correlation data structure correlating the buffer of the packet slice to the packet, wherein the buffer correlation data structure is a linked list of buffer identifiers; maintaining an independent set of upper bits of a sequence number for each communication flow; and incrementing the independent set of upper bits for the respective communication flow, concatenating the set of upper bits with a set of bits of a sequence number in the system header into an index, indexing into a re-sequencing buffer space of sufficient depth to cover a slice-to-slice skew case based on the index, and resequencing the packet into its sequence order position responsive to one of the processing slices delivering a packet having a sequence number that is smaller in value than a sequence number for an immediately preceding packet for the same slice. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A multi-slice network processor system comprising:
-
a plurality of parallel processing slices, each processing slice comprising a lookup processing module and access to a storage sub-system, the storage sub-system including a memory, the memory storing at least one group of cells of a packet in a buffer; and
a buffer manager, the buffer manager maintaining a buffer correlation data structure for correlating one or more buffers to the packet, wherein the buffer correlation data structure is a linked list of buffer identifiers, the buffer correlation data structure being stored in the memory;a network data distribution and aggregation module for segmenting a packet received from a network into one or more packet slices, the network data distribution and aggregation module having a communication interface to each of the processing slices for communicating each packet slice; each of the plurality of slices having a channel communication interface with the network interface over which each packet slice is directed to a destination processing slice across the network interface; and a queuing module having an enqueuing communication interface and a de-queuing communication interface with each of the processing slices, the queuing module controlling the enqueuing and dequeuing of each of the packet slices, and determining the destination processing slice based on load balancing criteria; wherein the queuing module is configured to maintain an independent set of upper bits of a sequence number for each communication flow; wherein the queuing module is configured to acquire a sequence number for a packet delivered from a slice; and wherein the queuing module is configured to increment the independent set of upper bits for a communication flow, concatenate the set of upper bits with a set of bits of the sequence number of the packet into an index, index into a re-sequencing buffer space of sufficient depth to cover a slice-to-slew case based on the index, and re-sequence the packet into its sequence order position responsive to detecting one of the processing slices delivering a packet with a sequence number that is smaller in value than sequence number for a packet immediately preceding the packet for the same slice. - View Dependent Claims (10, 11, 12, 13)
-
Specification