FIFO buffer with multiple stream packet segmentation
First Claim
Patent Images
1. A network processing device packet buffering subsystem comprising:
- a first-in first out (FIFO) memory comprising a plurality of FIFO buffers, each associated with a source index, to receive multiplexed packet data marked with source indices and sort the multiplexed packet data to the FIFO buffers according to source index;
a plurality of counters, associated respectively with the plurality of FIFO buffers, to track a size of each packet as it is received into each FIFO buffer from the multiplexed packet data; and
segmentation logic to output from the FIFO memory a segment of a packet being received into a given one of the FIFO buffers when the packet data accumulated in that given FIFO buffer for the received packet exceeds a selected data length, the selected data length being less than an amount of data than can be transmitted through a switch fabric associated with the buffering subsystem during a single epoch of time;
wherein the segmentation logic allows the packet data accumulated for a given segment to exceed the selected data length by up to a selected overflow amount when lengthening the given segment will allow the given segment to be a last segment for its corresponding packet;
wherein the segmentation logic delays outputting the given segment until it determines whether the given segment can be made the last segment by extending the given segment up to the selected overflow amount.
15 Assignments
0 Petitions
Accused Products
Abstract
An epoch-based network processor internally segments packets for processing and aggregation in epoch payloads. FIFO buffers interact with a memory management unit to efficiently manage the segmentation and aggregation process.
38 Citations
51 Claims
-
1. A network processing device packet buffering subsystem comprising:
-
a first-in first out (FIFO) memory comprising a plurality of FIFO buffers, each associated with a source index, to receive multiplexed packet data marked with source indices and sort the multiplexed packet data to the FIFO buffers according to source index; a plurality of counters, associated respectively with the plurality of FIFO buffers, to track a size of each packet as it is received into each FIFO buffer from the multiplexed packet data; and segmentation logic to output from the FIFO memory a segment of a packet being received into a given one of the FIFO buffers when the packet data accumulated in that given FIFO buffer for the received packet exceeds a selected data length, the selected data length being less than an amount of data than can be transmitted through a switch fabric associated with the buffering subsystem during a single epoch of time; wherein the segmentation logic allows the packet data accumulated for a given segment to exceed the selected data length by up to a selected overflow amount when lengthening the given segment will allow the given segment to be a last segment for its corresponding packet; wherein the segmentation logic delays outputting the given segment until it determines whether the given segment can be made the last segment by extending the given segment up to the selected overflow amount. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A network processing device comprising:
-
an epoch-based switch fabric; a backplane supporting multiple ingress port pipes and egress port pipes to the switch fabric; an epoch scheduler to schedule connection of ingress port pipes to egress port pipes through the switch fabric for each epoch; and a plurality of line cards, each connected to the epoch-based switch fabric by at least one ingress port pipe, each line card connected to a given ingress port pipe that is scheduled for a given epoch, and each line card constructing epoch data for the given epoch by concatenating multiple packet segments having a destination reachable through a given egress port pipe paired with the given ingress port pipe for the given epoch; wherein; packet segments corresponding to a first one of one or more packets include one or more first packet segments and one or more second packet segments; packets are segmented each time the first packet exceeds a selected data length; the one or more first packet segments are transmitted in a first epoch; the one or more second packet segments are transmitted in a second epoch different from the first epoch; packet data accumulated for a given segment may exceed the selected data length by up to a selected overflow amount when lengthening the given segment will allow the given segment to be a last segment for its corresponding packet; and transmission of the given segment is delayed until it is determined whether the given segment can be made the last segment by extending the given segment up to the selected overflow amount.
-
-
25. A method of operating a network processing device comprising:
-
receiving multiplexed packet data marked with source indices; sorting the multiplexed packet data to a plurality of FIFO buffers according to source index; tracking the size of each packet as it is received into each FIFO buffer from the multiplexed packet data using a plurality of counters, associated respectively with the plurality of FIFO buffers; performing packet segmentation on a packet being received into a given one of the FIFO buffers; and outputting a segment of the received packet when packet data accumulated in that given FIFO buffer for the received packet exceeds a selected data length, the selected data length being less than the amount of data that can be transmitted through a switch fabric associated with the buffering subsystem during a single epoch of time; allowing the packet data accumulated for a given segment to exceed the selected data length by up to a selected overflow amount when lengthening the given segment will allow the given segment to be a last segment for its corresponding packet; delaying outputting the given segment until it is determined whether the given segment can be made the last segment by extending the given segment up to the selected overflow amount. - View Dependent Claims (26, 27, 28, 29, 30)
-
-
31. A network processing device comprising:
-
an epoch-based switch fabric; a backplane supporting multiple ingress port pipes and egress port pipes to the switch fabric; an epoch scheduler to schedule connection of ingress port pipes to egress port pipes through the switch fabric for each epoch; a plurality of ingress traffic managers, each coupled to the switch fabric by at least one corresponding ingress port pipe, each ingress traffic manager buffering packets, prior to transmission through the switch fabric, as a collection of buffered packet segments, and concatenating multiple buffered packet segments from one or more packets with a common egress port pipe destination to create epoch data for transmission through the switch fabric during each epoch for which the corresponding ingress port pipe is scheduled for connection to a corresponding egress port pipe; and a plurality of egress traffic managers, each connected to the switch fabric by at least one the egress port pipe, each egress traffic manager parsing packet segments received from the ingress traffic managers during epochs in order to buffer the packet segments, and recombining the buffered packet segments for a given packet after all segments of the given packet are received, wherein each of the buffered packets is segmented into one or more packet segments included in the collection of buffered packet segments, and wherein; the epoch data includes a plurality of the packet segments; one of the buffered packets includes one or more first packet segments and one or more second packet segments; the buffered packets are segmented each time the buffered packets exceed a selected data length; the one or more first packet segments are transmitted in a first epoch; the one or more second packet segments are transmitted in a second epoch different from the first epoch; packet data accumulated for a given segment may exceed the selected data length by up to a selected overflow amount when lengthening the given segment will allow the given segment to be a last segment for its corresponding packet; and transmission of the given segment is delayed until it is determined whether the given segment can be made the last segment by extending the given segment up to the selected overflow amount. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40, 41)
-
-
42. A method of operating a network processing device, the method comprising:
-
switching packet data during a series of epochs through a switch fabric having multiple ingress port pipes and egress port pipes, each epoch corresponding to a switch fabric configuration that connects given ingress port pipes with given egress port pipes; for packets received by the network processing device, segmenting each packet exceeding a selected data length prior to switching packet data corresponding to that packet through the switch fabric; concatenating multiple packet segments from one or more packets with a common egress port pipe destination to create epoch data for transmission through the switch fabric during each epoch from each ingress port pipe scheduled for connection to a corresponding egress port pipe, wherein; packet segments corresponding to one of the one or more packets include one or more first packet segments and one or more second packet segments; the one or more first packet segments are transmitted in a first epoch; the one or more second packet segments are transmitted in a second epoch different from the first epoch; packet data accumulated for a given segment may exceed a selected data length by up to a selected overflow amount when lengthening the given segment will allow the given segment to be a last segment for its corresponding packet; and transmission of the given segment is delayed until it is determined whether the given segment can be made the last segment by extending the given segment up to the selected overflow amount; parsing packet segments received from egress port pipes during epochs in order to buffer the packet segments; and recombining the buffered packet segments for the given packet after all segments of the given packet are received from a respective egress port pipe. - View Dependent Claims (43, 44, 45, 46, 47, 48, 49, 50, 51)
-
Specification