IP Library Granted Patent US 10,164,883
Granted Patent B2
US 10,164,883 · App. 15/254,879 · Granted Dec 25, 2018

System and method for flow management in software-defined networks

Inventors: Kashyap Tavarekere Ananthapadmanabha (San Jose, CA); Vivek Agarwal (Campbell, CA); Eswara S. P. Chinthalapati (San Jose, CA)
Assignee: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
H04L45/7457H04L45/00H04L45/38H04L45/7453H04L47/2441H04L47/2483H04L49/3009H04L61/103
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,164,883
App. No.
15/254,879
Granted
Dec 25, 2018
Kind
B2
Abstract

A system facilitates flow definition management in a switch. During operation, the system identifies a generic flow definition which specifies a flow that is not specific to any input port of a switch. The system further stores in a flow lookup data structure one or more port-specific flow rules based on the generic flow definition, wherein each port-specific flow rule corresponds to a respective port capable of processing data flows.

Claims (57)

1. A switch, comprising:

one or more ports capable of processing data flows based on a flow rule;

flow circuitry configured to allocate a flow identifier to a generic flow definition, which indicates a flow that is not specific to any input port of the switch;

lookup circuitry configured to:

store, in a first data structure, one or more port-specific flow rules generated based on the generic flow definition, wherein each port-specific flow rule corresponds to a port of the one or more ports; and

store the flow identifier in a respective entry of a second data structure, wherein each entry of the second data structure corresponds to a port of the one or more ports; and

forwarding circuitry configured to determine an egress port for a packet based on one of the one or more port-specific flow rules.

2. The switch of claim 1 , further comprising a content addressable memory (CAM), wherein the first data structure is stored in the CAM.

3. The switch of claim 1 , wherein the lookup circuitry is further configured to store, in a third data structure, the generic flow definition with a flag indicating that the generic flow definition is not specific to any input port.

4. The switch of claim 1 , wherein the switch is an OpenFlow-capable switch.

5. The switch of claim 1 , wherein the second data structure is a per-port linked list, wherein a respective entry of the second data structure is associated with a corresponding port of the one or more ports;

wherein a respective element in the entry indicates a flow identifier for a flow definition applicable to the corresponding port; and

wherein the elements in the entry are sorted in the order of priority of the corresponding flow definitions.

6. The switch of claim 1 , wherein the lookup circuitry is further configured to store, in a fourth data structure, one or more flow definitions with corresponding flow identifier(s).

7. The switch of claim 6 , wherein a respective entry in the fourth data structure stores a flow definition;

wherein the switch further comprises a hash circuitry configured to compute a hash value based on the flow identifier for the flow definition; and

wherein the hash value is used as an index to the entry of the fourth data structure.

8. The switch of claim 6 , further comprising updating circuitry configured to update a flow definition; and

wherein while updating the flow definition, the updating circuitry is configured to:

traverse a per-port linked list for a port associated with the flow definition to be updated to locate a flow identifier for the flow definition to be updated;

determine one or more flow identifiers whose priority is lower than the located flow identifier; and

rewrite the flow rules associated with the determined flow identifiers in the first data structure, thereby preserving the priority order of the flow rules for the port after the update.

9. A method, comprising:

allocating a flow identifier to a generic flow definition, which indicates a flow that is not specific to any input port of a switch, wherein the switch comprises one or more ports capable of processing data flows based on a flow rule;

storing, in a first data structure one or more port-specific flow rules generated based on the generic flow definition, wherein each port-specific flow rule corresponds to a port of the one or more ports;

storing the flow identifier in a respective entry of a second data structure, wherein each entry of the second data structure corresponds to a port of the one or more ports; and

determining an egress port for a packet based on one of the one or more port-specific flow rules.

10. The method of claim 9 , wherein the first data structure is stored in a CAM.

11. The method of claim 9 , further comprising storing, in a third data structure, the generic flow definition with a flag indicating that the generic flow definition is not specific to any input port.

12. The method of claim 9 , wherein the switch is an OpenFlow-capable switch.

13. The method of claim 9 , wherein the second data structure is a per-port linked list, wherein a respective entry of the second data structure is associated with a corresponding port of the one or more ports;

wherein a respective element in the entry indicates a flow identifier for a flow definition applicable to the corresponding port; and

wherein the elements in the entry are sorted in the order of priority of the corresponding flow definitions.

14. The method of claim 9 , further comprising storing, in a fourth data structure, one or more flow definitions with corresponding flow identifier(s).

15. The method of claim 14 , wherein a respective entry in the fourth data structure stores a flow definition;

wherein the method further comprises computing a hash value based on the flow identifier for the flow definition; and

wherein the hash value is used as an index to the entry of the fourth data structure.

16. The method of claim 14 , further comprising updating a flow definition by:

traversing a per-port linked list for a port associated with the flow definition to be updated to locate a flow identifier for the flow definition to be updated;

determining one or more flow identifiers whose priority is lower than the located flow identifier; and

rewriting the flow rules associated with the determined flow identifiers in the first data structure, thereby preserving the priority order of the flow rules for the port after the update.

17. A computing system, comprising:

one or more ports capable of processing data flows based on a flow rule;

a processor; and

a non-transitory computer-readable storage medium storing instructions which when executed by the processor cause the processor to perform a method, the method comprising:

allocating a flow identifier to a generic flow definition, which indicates a flow that is not specific to any input port of the switch;

storing, in a first data structure, one or more port-specific flow rules generated based on the generic flow definition, wherein each port-specific flow rule corresponds to a port of the one or more ports;

storing the flow identifier in a respective entry of a second data structure, wherein each entry of the second data structure corresponds to a port of the one or more ports; and

determining an egress port for a packet based on one of the one or more port-specific flow rules.

18. The computer system of claim 17 , wherein the method further comprises storing, in a third data structure, the generic flow definition with a flag indicating that the generic flow definition is not specific to any input port.

19. The computer system of claim 17 , wherein the second data structure is a per-port linked list, wherein a respective entry of the second data structure is associated with a corresponding port of the one or more ports;

wherein a respective element in the entry indicates a flow identifier for a flow definition applicable to the corresponding port; and

wherein the elements in the entry are sorted in the order of priority of the corresponding flow definitions.

20. The computer system of claim 19 , wherein the method further comprises:

traversing a per-port linked list for a port associated with the flow definition to be updated to locate a flow identifier for the flow definition to be updated;

determining one or more flow identifiers whose priority is lower than the located flow identifier; and

rewriting the flow rules associated with the determined flow identifiers in the first data structure, thereby preserving the priority order of the flow rules for the port after the update.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →
Continuity (3)
Continuation 13669313 · Nov 5, 2012
Provisional Application 61558332 · Nov 10, 2011
Related Publication 20170134281A1 · May 11, 2017