IP Library Granted Patent US 9,407,461
Granted Patent B2
US 9,407,461 · App. 14/221,006 · Granted Aug 2, 2016

Cut-through processing for slow and fast ports

Inventors: Shira Turgeman (Nirit, IL); Gil Levy (Hod Hasharon, IL); Aviran Kadosh (Misgav, IL)
Assignee: MARVELL WORLD TRADE LTD.
H04L12/5689H04L49/252H04L49/90
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,407,461
App. No.
14/221,006
Granted
Aug 2, 2016
Kind
B2
Abstract

In a method for processing network packets, a network packet is received at an ingress port. Before the network packet has been completely received at the ingress port, a first data structure representing the network packet is generated based on a received first portion of the network packet, and the first data structure is processed at a packet processor of the network device. Processing the first data structure includes making a forwarding decision for the network packet. A second data structure representing the network packet is generated and, after the network packet has been completely received at the ingress port, at least one or more non-forwarding operations are performed with respect to the network packet using at least the second data structure.

Claims (56)

1. A method for processing network packets in a network device, the method comprising:

receiving a network packet at an ingress port of the network device;

before the network packet has been completely received at the ingress port, generating, at the network device, a first data structure representing the network packet based on a received first portion of the network packet;

processing the first data structure at a packet processor of the network device, wherein processing the first data structure includes making a forwarding decision for the network packet;

before the network packet has been completely received at the ingress port, generating, at the network device, a second data structure representing the network packet; and

after the network packet has been completely received at the ingress port, performing at least one or more non-forwarding operations with respect to the network packet using at least the second data structure.

2. The method of claim 1 , wherein performing at least one or more non-forwarding operations includes performing a counting operation with respect to the network packet.

3. The method of claim 1 , wherein performing at least one or more non-forwarding operations includes performing a metering operation with respect to the network packet.

4. The method of claim 1 , wherein performing at least one or more non-forwarding operations includes performing an error checking operation with respect to the network packet.

5. The method of claim 4 , wherein performing at least one or more non-forwarding operations further includes selectively mirroring, or selectively not mirroring, the network packet responsively to the error checking operation.

6. The method of claim 1 , wherein:

processing the first data structure further includes performing a meter check to determine whether to forward or drop the network packet; and

performing at least one or more non-forwarding operations with respect to the network packet using at least the second data structure includes selectively performing a meter update, or selectively not performing a meter update, based on whether the network packet is forwarded or dropped.

7. The method of claim 1 , wherein:

processing the first data structure further includes

detecting a first indicator included in the first data structure, and

in response to detecting the first indicator, selectively not performing the one or more non-forwarding operations; and

performing the at least one or more non-forwarding operations using at least the second data structure includes

detecting a second indicator included in the second data structure, and

selectively performing the one or more non-forwarding operations, using at least the second data structure, in response to detecting the second indicator.

8. The method of claim 1 , wherein:

making a forwarding decision for the network packet includes determining one or more target egress ports, of the network device, to which the network packet is to be forwarded; and

the method further includes selectively forwarding the network packet to at least one of the target egress ports, or selectively not forwarding the network packet to any egress port, responsively to the forwarding decision.

9. The method of claim 8 , wherein making the forwarding decision further includes determining which of the target egress ports, if any, is suitable for cut-through forwarding based at least in part on speeds of egress links associated with the target egress ports relative to a speed at which the network packet is received at the ingress port.

10. The method of claim 1 , wherein receiving the network packet at the ingress port includes writing the received packet to a packet buffer of the network device.

11. The method of claim 1 , wherein making a forwarding decision for the network packet is performed before the network packet has been completely received at the ingress port.

12. The method of claim 1 , wherein one or both of:

generating a second data structure representing the network packet includes generating a second data structure comprising information about the network packet that was not included in the first data structure; and

performing at least one or more non-forwarding operations with respect to the network packet includes adding to the second data structure information about the network packet that was not included in the first data structure.

13. A network device comprising:

a plurality of ports, the plurality of ports including an ingress port configured to receive network packets from a network; and

a packet processor coupled to the plurality of ports, the packet processor comprising

a descriptor generator unit configured to

generate, before the first network packet has been completely received at the ingress port, a first data structure based on a received first portion of the first network packet, the first data structure representing the first network packet, and

generate, before the network packet has been completely received at the ingress port, a second data structure representing the first network packet,

a forwarding module configured to process the first data structure at least by making a forwarding decision for the first network packet, and

one or more non-forwarding modules configured to, after the first network packet has been completely received at the ingress port, perform one or more non-forwarding operations with respect to the first network packet using at least the second data structure.

14. The network device of claim 13 , wherein the one or more non-forwarding modules include a counting module configured to perform a counting operation with respect to the first network packet.

15. The network device of claim 13 , wherein the one or more non-forwarding modules include a metering module configured to perform a metering operation with respect to the first network packet.

16. The network device of claim 13 , wherein the one or more non-forwarding modules further include a mirroring module configured to process the second data structure to selectively mirror, or selectively not mirror, the first network packet based on whether the first network packet contains errors.

17. The network device of claim 13 , wherein the one or more non-forwarding modules are configured to:

process the first data structure at least by performing a meter check to determine whether to forward or drop the first network packet; and

perform the one or more non-forwarding operations with respect to the first network packet using at least the second data structure at least by selectively performing a meter update, or selectively not performing a meter update, based on whether the first network packet is forwarded or dropped.

18. The network device of claim 13 , wherein at least one non-forwarding module of the one or more non-forwarding modules is configured to:

detect a first indicator included in the first data structure;

in response to detecting the first indicator, selectively not perform at least a first non-forwarding operation of the at least one non-forwarding module;

detect a second indicator included in the second data structure; and

in response to detecting the second indicator, selectively perform at least the first non-forwarding operation using at least the second data structure.

19. The network device of claim 13 , wherein the forwarding module is configured to make the forwarding decision for the first network packet before the first network packet has been completely received at the ingress port.

20. The network device of claim 13 , further comprising:

a packet buffer configured to store network packets during processing by the packet processor,

wherein the descriptor generator unit is configured to generate the first data structure before the first network packet is completely written to the packet buffer; and

wherein the one or more non-forwarding modules are configured to perform the one or more non-forwarding operations after the first network packet has been completely written to the packet buffer.

21. The network device of claim 13 , wherein either:

(i) the packet processor is a hardware packet processing pipeline, and the forwarding module and the non-forwarding module are respective stages of the hardware packet processing pipeline; or

(ii) the packet processor comprises one or more processors configured to execute machine-readable instructions, and the forwarding module and the non-forwarding module are respective modules corresponding to instructions executed by the one or more processors.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 051778/0537 →
Continuity (4)
Division 14220936 · Mar 20, 2014
Provisional Application 61906023 · Nov 19, 2013
Provisional Application 61803562 · Mar 20, 2013
Related Publication 20140286352A1 · Sep 25, 2014