IP Library Granted Patent US 10,003,474
Granted Patent B2
US 10,003,474 · App. 14/267,813 · Granted Jun 19, 2018

Flow synchronization

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,003,474
App. No.
14/267,813
Granted
Jun 19, 2018
Kind
B2
Abstract

A controller node receives a list of a first plurality of flows programmed on a network switch. The controller node extracts a flow cookie value from a flow cookie data field of each flow in the first plurality of flows on the received list and calculates a session identifier on the basis of the extracted cookie values. At least one add flow command is transmitted from the controller node to the network switch to program a second plurality of flows on the network switch. The at least one add flow command comprises flow cookie values in the flow cookie data fields of each of the flows in the second plurality of flows which are set equal to the calculated session identifier. At least one delete flow command is transmitted from the controller node to the network switch to delete programming of the first plurality of flows on the network switch.

Claims (56)

1. A method for synchronizing flows in a packet-switched network, the method comprising:

receiving at a controller node, a list of a first plurality of flows programmed on a network switch;

at the controller node, extracting a flow cookie value from a flow cookie data field of each flow in the first plurality of flows on the received list;

at the controller node, calculating a session identifier based on the extracted cookie values;

transmitting at least one add flow command from the controller node to the network switch to program a second plurality of flows on the network switch, wherein the at least one add flow command comprises flow cookie values in the flow cookie data fields of each of the flows in the second plurality of flows which are set equal to the calculated session identifier; and

transmitting a delete flow command from the controller node to the network switch to delete programming of the first plurality of flows on the network switch, wherein the delete flow command identifies to the network switch the first plurality of flows which are to be deleted based on at least part of the respective flow cookie values extracted from the received list,

wherein the flow cookie value of the each flow in the first and second plurality of flows is not used to uniquely identify the each flow in the first and second plurality of flows,

wherein the flow cookie value of the each flow in the first and second plurality of flows is used to identify a plurality of flows, and

wherein the each flow in the first and second plurality of flows is identified by a unique identifier, the unique identifier being distinct from the flow cookie value of the each flow in the first and second plurality of flows.

2. The method according to claim 1 , wherein the at least part comprises one or more cookie mask bits.

3. The method according to claim 1 , wherein the at least part comprises one or more cookie masks bits, and

wherein the transmitted delete flow command wildcards all flow match parameters except for the extracted flow cookie values and/or the one or more cookie masks bits.

4. The method according to claim 1 , wherein the session identifier is calculated to be different to any of the session identifiers calculated from the extracted flow cookie values.

5. The method according to claim 1 , wherein the session identifier is calculated to be different to any of the extracted flow cookie values.

6. The method according to claim 1 , wherein the session identifier is calculated to be a value one higher than the highest of the extracted flow cookie values.

7. The method according to claim 1 , comprising, prior to receipt of the list at the controller node, transmitting at least one initial add flow command from the controller node to the network switch to program the second plurality of flows on the network switch, wherein the at least one add flow command comprises flow cookie values in the flow cookie data fields of each of the flows in the second plurality of flows which are each set to a given predetermined value.

8. The method according to claim 1 , comprising transmitting, from the controller node to the network switch, a request to provide a list of flows programmed on the network switch,

wherein the received list is received from the network switch in response to the transmitted request.

9. The method according to claim 1 , wherein the list is received from the network switch after reconnection of a connection failure between the controller node and the network switch.

10. The method according to claim 1 , wherein the transmitted at least one add flow command comprises a request for notification when the second plurality of flows have been programmed on the network switch, the method comprising:

receiving, at the controller node from the network switch, notification that the second plurality of flows have been programmed on the network switch.

11. The method according to claim 1 , wherein the transmitted delete flow command comprises a request for notification when the first plurality of flows have been deleted on the network switch, the method comprising:

receiving, at the controller node from the network switch, notification that the first plurality of flows have been deleted on the network switch.

12. The method according to claim 7 , wherein the transmitted at least one initial add flow command comprises a request for notification when the second plurality of flows have been programmed on the network switch, the method comprising:

receiving, at the controller node from the network switch, notification that the second plurality of flows have been programmed on the network switch.

13. The method according to claim 1 , wherein the first plurality comprises at least one flow which is not in the second plurality, or the second plurality comprises at least one flow which is not in the first plurality.

14. The method according to claim 1 , comprising:

transmitting at least a first add flow command from the controller node to the network switch to program a third plurality of flows on the network switch, wherein the at least first add flow command comprises flow cookie values in the flow cookie data fields of each of the flows in the third plurality of flows which comprise one or more bits set to identify a first application and the calculated session identifier in the other flow cookie data field bits; and

transmitting at least a second add flow command from the controller node to the network switch to program a fourth plurality of flows on the network switch, wherein the at least second add flow command comprises flow cookie values in the flow cookie data fields of each of flows in the fourth plurality of flows which comprise one or more bits set to identify a second, different application and the calculated session identifier in the other flow cookie data field bits,

wherein the transmitted delete flow command identifies the first plurality of flows as:

flows having flow cookie values with bits matching the one or more bits set to identify the first application, but with other bits which do not match the calculated session identifier, or

flows having flow cookie values with bits matching the one or more bits set to identify the second application, but with other bits which do not match the calculated session identifier.

15. The method according to claim 1 , wherein the transmitted delete flow command indicates an order in which at least two different flows in the first plurality of flows should be deleted on the network switch.

16. The method according to claim 15 , wherein the deletion order is indicated in one or more bits of the cookie data fields of the at least two different flows which are reserved for indicating the order of flow deletions.

17. The method according to claim 1 , wherein the network switch is configured to operate the OpenFlow protocol and the first plurality of flows and the second plurality of flows comprise flows programmed according to the OpenFlow protocol.

18. The method according to claim 1 , wherein the at least one add flow command and the delete flow command relate to flows programmed with one or more match parameters and a match priority.

19. A system for use in synchronizing flows in a packet-switched network, the system comprising:

at least one memory including computer program code;

and at least one processor in data communication with the at least one memory, the at least one processor configured to:

receive at a controller node, a list of a first plurality of flows programmed on a network switch;

at the controller node, extract a flow cookie value from a flow cookie data field of each flow in the first plurality of flows on the received list;

at the controller node, calculate a session identifier based on the extracted cookie values;

transmit at least one add flow command from the controller node to the network switch to program a second plurality of flows on the network switch, wherein the at least one add flow command comprises flow cookie values in the flow cookie data fields of each of the flows in the second plurality of flows which are set equal to the calculated session identifier; and

transmit a delete flow command from the controller node to the network switch to delete programming of the first plurality of flows on the network switch, wherein the delete flow command identifies to the network switch the first plurality of flows which are to be deleted based on at least part of the respective flow cookie values extracted from the received list,

wherein the flow cookie value of the each flow in the first and second plurality of flows is not used to uniquely identify the each flow in the first and second plurality of flows,

wherein the flow cookie value of the each flow in the first and second plurality of flows is used to identify a plurality of flows, and

wherein the each flow in the first and second plurality of flows is identified by a unique identifier, the unique identifier being distinct from the flow cookie value of the each flow in the first and second plurality of flows.

20. A non-transitory computer-readable storage medium comprising computer executable instructions, which, when executed by a processor, cause a computerized device to perform a method for synchronizing flows in a packet-switched network, the method comprising:

receiving at a controller node, a list of a first plurality of flows programmed on a network switch;

at the controller node, extracting a flow cookie value from a flow cookie data field of each flow in the first plurality of flows on the received list;

at the controller node, calculating a session identifier based on the extracted cookie values;

transmitting at least one add flow command from the controller node to the network switch to program a second plurality of flows on the network switch, wherein the at least one add flow command comprises flow cookie values in the flow cookie data fields of each of the flows in the second plurality of flows which are set equal to the calculated session identifier; and

transmitting a delete flow command from the controller node to the network switch to delete programming of the first plurality of flows on the network switch, wherein the delete flow command identifies to the network switch the first plurality of flows which are to be deleted based on at least part of the respective flow cookie values extracted from the received list,

wherein the flow cookie value of the each flow in the first and second plurality of flows is not used to uniquely identify the each flow in the first and second plurality of flows,

wherein the flow cookie value of the each flow in the first and second plurality of flows is used to identify a plurality of flows, and

wherein the each flow in the first and second plurality of flows is identified by a unique identifier, the unique identifier being distinct from the flow cookie value of the each flow in the first and second plurality of flows.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2026
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: ALIANZA, INC.
Reel/Frame 075645/0892 →
CHANGE OF NAME Recorded May 13, 2026
From: ALIANZA, INC.
To: ALIANZA, LLC
Reel/Frame 075646/0037 →
SECURITY INTEREST Recorded May 6, 2025
From: ALIANZA, INC.; METASWITCH NETWORKS LTD
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 071191/0228 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2016
From: BROCKBANK, ROBERT; POLLITT, ALEX; CURTIS, MICHAEL
To: METASWITCH NETWORKS LTD
Reel/Frame 038047/0306 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2016
From: CRAMPTON, SHAUN
To: METASWITCH NETWORKS LTD
Reel/Frame 038047/0309 →