IP Library Granted Patent US 9,407,460
Granted Patent B2
US 9,407,460 · App. 14/220,936 · 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,460
App. No.
14/220,936
Granted
Aug 2, 2016
Kind
B2
Abstract

In a method for processing network packets, a network packet is received at an ingress port. After at least a first portion of the network packet has been received, but before the network packet has been completely received, a first data structure representing the network packet is generated based on the first portion, the first data structure is processed, and the network packet begins to be selectively forwarded to a first one or more egress ports, or selectively not forwarded to any egress port, responsively to processing the first data structure. A second data structure representing the network packet is generated and, after the network packet has been completely received, the second data structure is processed, and the network packet is selectively forwarded to a second one or more egress ports, different from the first one or more egress ports, responsively to processing the second data structure.

Claims (68)

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;

after at least a first portion of the network packet has been received at the ingress port, but before the network packet has been completely received at the ingress port,

generating, at the network device and based on the first portion of the network packet, a first data structure representing the network packet,

processing the first data structure at a packet processor of the network device, and

selectively beginning to forward the network packet to a first one or more egress ports of the network device, or selectively not forwarding the network packet to any egress port, responsively to processing the first data structure;

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,

processing the second data structure at the packet processor, and

selectively forwarding the network packet to a second one or more egress ports of the network device, different from the first one or more egress ports, responsively to processing the second data structure.

2. The method of claim 1 , wherein:

processing the first data structure includes determining one or more target egress ports to which the network packet is to be forwarded; and

selectively beginning to forward the network packet to the first one or more egress ports, or selectively not forwarding the network packet to any egress port, is 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.

3. The method of claim 2 , wherein the speeds of the egress links associated with the target egress ports are determined at least by one or both of (i) operational speeds of the target egress ports, and (ii) a destination of the first network packet.

4. The method of claim 1 , wherein:

processing the first data structure includes

determining one or more target egress ports to which the network packet is to be forwarded, and

determining which of the target egress ports, if any, are associated with egress links having a speed less than or equal to a speed at which the network packet is received at the ingress port; and

selectively beginning to forward the network packet to the first one or more egress ports, or selectively not forwarding the network packet to any egress port, responsively to processing the first data structure includes beginning to forward the network packet only to those target egress ports, if any, that have been determined to be associated with egress links having a speed less than or equal to the speed at which the network packet is received at the ingress port.

5. The method of claim 4 , wherein selectively forwarding the network packet responsively to processing the second data structure includes forwarding the network packet only to those target egress ports that have not been determined to be associated with egress links having a speed less than or equal to the speed at which the network packet is received at the ingress port.

6. The method of claim 4 , wherein processing the second data structure is performed selectively in response to determining that the network packet has not yet been forwarded to all of the target egress ports.

7. The method of claim 1 , further comprising:

based on a first indicator included in the first data structure, selectively not performing a first non-forwarding operation on the first data structure; and

based on a second indicator included in the second data structure, selectively performing the first non-forwarding operation on the second data structure.

8. The method of claim 7 , wherein the first non-forwarding operation performed at least on the second data structure is an operation that at least one of (i) determines a byte count of the network packet, and (ii) determines whether the network packet contains errors.

9. The method of claim 7 , wherein the first non-forwarding operation is either (i) a metering operation that utilizes at least a byte count of the network packet determined by the packet processor, or (ii) a mirroring operation that selectively mirrors, or selectively does not mirror, the network packet based on whether the network packet contains errors.

10. The method of claim 1 , wherein receiving the network packet at the ingress port includes writing the network packet to a packet buffer configured to store the network packet during processing by the packet processor.

11. 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

processing the second data structure includes adding to the second data structure information about the network packet that was not included in the first data structure.

12. 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

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

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

a forwarding module configured to

before the first network packet has been completely received at the ingress port, (i) process the first data structure, and (ii) selectively begin to forward the first network packet to a first one or more egress ports of the plurality of ports, or selectively not forward the first network packet to any egress port, responsively to processing the first data structure, and

after the first network packet has been completely received at the ingress port, (i) process the second data structure, and (ii) selectively forward the first network packet to a second one or more egress ports of the plurality of ports, different from the first one or more egress ports, responsively to processing the second data structure.

13. The network device of claim 12 , wherein the forwarding module is configured to:

process the first data structure at least by determining one or more target egress ports to which the first network packet is to be forwarded; and

selectively begin to forward the network packet to the first one or more egress ports, or selectively not forward the network packet to any egress port, based at least in part on speeds of egress links associated with the target egress ports relative to a speed at which the first network packet is received at the ingress port.

14. The network device of claim 12 , wherein the forwarding module is configured to:

process the first data structure at least by

determining one or more target egress ports to which the first network packet is to be forwarded, and

determining which of the target egress ports, if any, are associated with egress links having a speed less than or equal to a speed at which the first network packet is received at the ingress port; and

selectively begin to forward the first network packet to the first one or more egress ports, or selectively not forward the first network packet to any egress port, responsively to processing the first data structure at least by beginning to forward the first network packet only to those target egress ports, if any, that have been determined by the forwarding module to be associated with egress links having a speed less than or equal to the speed at which the first network packet is received at the ingress port.

15. The network device of claim 14 , wherein the forwarding module is configured to selectively forward the first network packet responsively to processing the second data structure at least by forwarding the first network packet only to those target egress ports that have not been determined by the forwarding module to be associated with egress links having a speed less than or equal to the speed at which the first network packet is received at the ingress port.

16. The network device of claim 14 , 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 forwarding module is configured to process the first data structure and selectively begin to forward the first network packet to the first one or more egress ports before the first network packet has been completely written to the packet buffer.

17. The network device of claim 12 , wherein the packet processor further comprises a non-forwarding module configured to:

based on a first indicator included in the first data structure, selectively not perform a first non-forwarding operation on the first data structure; and

based on a second indicator included in the second data structure, selectively perform the first non-forwarding operation on the second data structure.

18. The network device of claim 17 , wherein the non-forwarding module is (i) a counting module configured to determine a byte count of the first network packet, (ii) a metering module configured to utilize at least the byte count of the first network packet as determined by the packet processor, or (iii) a mirroring module configured to selectively mirror, or selectively not mirror, the first network packet based on whether the first network packet contains errors.

19. The network device of claim 12 , wherein either:

(i) the packet processor is a hardware packet processing pipeline, and the forwarding module is a stage 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 is a module corresponding to instructions executed by the one or more processors.

20. 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 first forwarding decision for the network packet using the first data structure to forward the network packet to one or more egress ports;

for each of the one or more egress ports, selectively forwarding, or selectively not forwarding, the network packet to the respective egress port according to the first forwarding decision at least based on an operational speed of the respective egress port relative to the ingress port;

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;

processing the second data structure at a packet processor of the network device, wherein processing the second data structure includes making a second forwarding decision for the network packet using the second data structure to forward the network packet to the one or more egress ports; and

for each of the one or more egress ports, selectively forwarding, or selectively not forwarding, the network packet to the respective egress port according to the second forwarding decision and an additional input.

21. The method of claim 20 , wherein selectively forwarding, or selectively not forwarding, the network packet to the respective egress port according to the second forwarding decision and an additional input includes selectively forwarding, or selectively not forwarding, the network packet to the respective egress port according to the second forwarding decision and at least one of (i) an operational speed of the respective egress port relative to the ingress port and (ii) an indicator of which of the one or more egress ports, if any, the network packet was forwarded to according to the first forwarding decision.

Assignments (7)
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 →
LICENSE Recorded May 20, 2016
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 038660/0104 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2016
From: MARVELL INTERNATIONAL LTD.
To: MARVELL WORLD TRADE LTD.
Reel/Frame 038660/0035 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2015
From: MARVELL ISRAEL (M.I.S.L) LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 036137/0786 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2015
From: TURGEMAN, SHIRA; LEVY, GIL; KADOSH, AVIRAN
To: MARVELL ISRAEL (M.I.S.L) LTD.
Reel/Frame 036137/0762 →
Continuity (3)
Provisional Application 61906023 · Nov 19, 2013
Provisional Application 61803562 · Mar 20, 2013
Related Publication 20140286351A1 · Sep 25, 2014