IP Library Granted Patent US 10,735,221
Granted Patent B2
US 10,735,221 · App. 15/938,995 · Granted Aug 4, 2020

Flexible processor of a port extender device

Inventors: Ilan Mayer-Wolf (Tel-Aviv, IL); Ilan Yerushalmi (Hod Hasharon, IL); David Melman (Halutz, IL); Tal Mizrahi (Haifa, IL)
Assignee: Marvell International Ltd.
H04L12/4645H04L45/00H04L45/50H04L45/7453H04L49/3009H04L49/3063H04L69/22
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 10,735,221
App. No.
15/938,995
Filed
Mar 28, 2018
Granted
Aug 4, 2020
Kind
B2
Art Unit
2463
USPC
370/392
Abstract

A packet type corresponding to a packet received by a network device is determined. Based on the packet type, one or more header fields to be extracted from a header of the packet are identified. Identifying the one or more header fields includes extracting, from a memory based on the packet type, respective indicators of locations of the one or more header fields and respective indicators of sizes of the one or more header fields. The one or more identified header fields from the header of the packet, based on the respective indicators of locations of the one or more header fields and respective indicators of sizes of the one or more header fields. The packet is then processed based on the one or more header fields extracted from the header. The processing includes deter mining at least one port to which to forward the packet.

Claims (64)

1. A method for processing of packets ingressing a network device, the method comprising

receiving a packet at a port of the network device;

performing, with an ingress processor of the network device, ingress processing of the packet, the ingress processing including:

determining a packet type, among a plurality of packet types supported by the network device, corresponding to the packet,

identifying, based on the packet type, one or more header fields to be extracted from a header of the packet, including i) determining one or more locations in a memory using the determined packet type, the memory storing respective information identifying header fields to be extracted from headers of packets corresponding to respective packet types among the plurality of packet types, and ii) retrieving, from the determined one or more locations in the memory a) respective indicators of locations of the one or more header fields to be extracted from the header of the packet and b) respective indicators of sizes of the one or more header fields to be extracted from the header of the packet, and

extracting, based on i) the respective indicators of the locations retrieved from the memory and ii) the respective identifiers of the sizes retrieved from the memory, the one or more header fields from the header of the packet; and

processing, with a packet processor of the network device, the packet based on the one or more header fields extracted from the header, the processing including determining at least one port to which to forward the packet.

2. The method of claim 1 , wherein determining the packet type includes:

generating a packet type key corresponding to the packet, and

searching, based on the packet type key, a content addressable memory to a find an entry matching the packet type key.

3. The method of claim 2 , wherein generating the packet type key comprises generating the packet type key to include i) initial information obtained from the header of the packet and ii) additional information obtained other than from the header of the packet.

4. The method of claim 2 , wherein generating the packet type key includes generating the packet type key to include one or more user defined fields in the header of the packet.

5. The method of claim 1 , wherein:

determining the one or more locations in the memory using the determined packet type comprises generating a packet type index corresponding to the determine packet type, and

retrieving, from the determined one or more locations in the memory i) respective indicators of locations of the one or more header fields and ii) respective indicators of sizes of the one or more header fields comprises accessing, using the packet type index, one or more field identifier tables stored in the memory.

6. The method of claim 5 , wherein accessing the one or more field identifier tables includes accessing, using the packet type index, a destination index table that relates packet type indices to identifiers of header fields, the header fields to be included in a destination index to be used for obtaining a destination portmap for forwarding the packet.

7. The method of claim 5 , wherein accessing the one or more field identifier tables includes accessing, using the packet type index, a source index table that relates packet type indices to identifiers of header fields, the header fields to be included in a source index to be used for obtaining a source compliment portmap for masking a source port of the packet.

8. The method of claim 5 , further comprising accessing, using the packet type index, a class of service (CoS) table stored in the memory, the CoS table relating packet type indices to class of service attributes corresponding to the packet.

9. The method of claim 1 , wherein:

the network device is a port extender device, and

retrieving, from the determined one or more locations in the memory, i) respective indicators of locations of the one or more header fields and ii) respective indicators of sizes of the one or more header fields includes retrieving, from the determined one or more locations in the memory, a target ID field in a forwarding tag in the header of the packet.

10. The method of claim 9 , wherein

the packet is a first packet,

the method further comprises

receiving a second packet at the network device,

determining a packet type, among the plurality of packet types supported by the network device, corresponding to the second packet,

determining one or more other locations in the memory using the determined packet type corresponding to the second packet, and

retrieving, from the determined one or more other locations in the memory using the determined packet type corresponding to the second packet, i) an indicator of a location of a target ID field in a forwarding tag in a header of the second packet and ii) an indicator of a size of the target ID field in a forwarding tag in the header of the second packet, wherein one or both i) the location of the target ID field in the forwarding tag in the header of the second packet is different from the location of the target ID field in the forwarding tag in the header of the first packet and ii) the size of the target ID field in the forwarding tag in the header of the second packet is different from the size of the target ID field in the forwarding tag in the header of the first packet.

11. The method of claim 1 , further comprising:

identifying, with the ingress processor based on information in the header of the packet, a packet hash type corresponding to the packet; and

obtaining, with the ingress processor based on the packet hash type corresponding to the packet, a hash value for the packet; and

wherein determining the at least one port to which to forward the packet includes selecting, based on the hash value, the at least one port from a link aggregate group (LAG) of ports.

12. A network device, comprising

a plurality of ports configured to receive and to transmit packets;

a memory storing respective information identifying header fields to be extracted from headers of packets corresponding to respective packet types among a plurality of packet types supported by the network device;

an ingress processor coupled to the memory, the ingress processor configured to

determine a packet type, among the plurality of packet types supported by the network device, corresponding to a packet received via a port among the plurality of ports,

identify, based on the packet type, one or more header fields to be extracted from a header of the packet, including i) determining one or more locations in the memory using the determined packet type, and ii) retrieving, from the determined one or more locations in the memory a) respective indicators of locations of the one or more header fields to be extracted from the header of the packet and b) respective indicators of sizes of the one or more header fields to be extracted from the header of the packet, and

extract, based on i) the respective indicators of the locations retrieved from the memory and ii) the respective identifiers of the sizes retrieved from the memory, the one or more header fields from the header of the packet; and

a packet processor configured to process the packet based on the one or more header fields extracted from the header, the packet processor being configured to at least determine at least one port to which to forward the packet.

13. The network device of claim 12 , wherein the ingress processor is configured to:

generate a packet type key corresponding to the packet, and

search, based on the packet type key, a content addressable memory to a find an entry matching the packet type key to determine the packet type corresponding to the packet.

14. The network device of claim 13 , wherein the ingress processor is configured to generate the packet type key to include i) initial information obtained from the header of the packet and ii) additional information obtained other than from the header of the packet.

15. The network device of claim 13 , wherein the ingress processor is configured to generate the packet type key to include one or more user defined fields in the header of the packet.

16. The network device of claim 12 , wherein the ingress processor is further configured to:

generate a packet type index corresponding to the determined packet type, and

access, using the packet type index, one or more field identifier tables, stored in the memory, to retrieve, from the one or more field identifier tables, the i) respective indicators of locations of the one or more header fields and ii) respective indicators of sizes of the one or more header fields.

17. The network device of claim 16 , wherein the ingress processor is configured to access, using the packet type index, at least a destination index table that relates packet type indices to identifiers of header fields, the header fields to be included in a destination index to be used for obtaining a destination portmap for forwarding the packet.

18. The network device of claim 16 , wherein the ingress processor is configured to access, using the packet type index, at least a source index table that relates packet type indices to identifiers of header fields, the header fields to be included in a source index to be used for obtaining a source compliment portmap for masking a source port of the packet.

19. The network device of claim 16 , wherein the ingress processor is further configured to:

access, using the packet type index, a class of service (CoS) table stored in the memory, the CoS table relating packet type indices to class of service attributes corresponding to packets, and

retrieve, from the CoS table, one or more class of class of service attributes to be used for egress processing of the packet.

20. The network device of claim 19 , wherein the ingress processor is further configured to:

identify, based on information in the header of the packet, a packet hash type corresponding to the packet,

obtain, based on the packet hash type corresponding to the packet, a hash value for the packet, and

select, based on the hash value, the at least one port from a link aggregate group (LAG) of ports.

21. The network device of claim 12 , wherein the ingress processor is configured to retrieve, from the determined one or more locations in the memory, i) an indicator of a location of a target ID field in a port extender forwarding tag included in the header of the packet and ii) an indicator of a size if of the target ID field in the port extender forwarding tag included in the header of the packet.

22. The network device of claim 21 , wherein

the packet is a first packet, and

the ingress processor is further configured to

determine a packet type, among the plurality of packet types supported by the network device, corresponding to a second packet received by the network device, and

determine one or more other locations in the memory using the determined packet type corresponding to the second packet, and

retrieve, from the determined one or more other locations in the memory using the packet type corresponding to the second packet, i) an indicator of a location of a target ID field in a port extender forwarding tag in a header of the second packet and ii) an indicator of a size of the target ID field in the port extender forwarding tag in the header of the second packet, wherein one or both i) the location of the target ID field in the port extender forwarding tag in the header of the second packet is different from the location of the target ID field in the port extender port extender forwarding tag in the header of the first packet and ii) the size of the target ID field in the port extender forwarding tag in the header of the second packet is different from the size of the target ID field in the port extender forwarding tag in the header of the first packet.

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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2019
From: MAYER-WOLF, IIAN; YERUSHALMI, IIAN; MELMAN, DAVID; MIZRAHI, TAL
To: MARVELL ISRAEL (M.I.S.L) LTD
Reel/Frame 049783/0930 →
LICENSE Recorded Jul 18, 2019
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 049783/0962 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2019
From: MARVELL ISRAEL (M.I.S.L) LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 049783/0949 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2019
From: MARVELL INTERNATIONAL LTD.
To: MARVELL WORLD TRADE LTD.
Reel/Frame 049783/0953 →
Cited By (1)
US 12,609,903