IP Library Granted Patent US 9,521,028
Granted Patent B2
US 9,521,028 · App. 13/912,709 · Granted Dec 13, 2016

Method and apparatus for providing software defined network flow distribution

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,521,028
App. No.
13/912,709
Granted
Dec 13, 2016
Kind
B2
Abstract

Various embodiments provide a method and apparatus for providing SDN flow distribution without requiring per-connection state in the network. In particular, the SDN flow distribution is realized in network elements within the forwarding path of packets by providing in those network elements with a controller capable of mapping traffic flows onto a set of target servers.

Claims (80)

1. An apparatus for providing in-path flow distribution, the apparatus comprising:

a plurality of virtual machines;

a data storage comprising a rules portion comprising a plurality of rules and a servers list portion, wherein at least a subset of the plurality of rules map packet flow to one or more of the plurality of virtual machines based on the servers list portion; and

a processor communicatively connected to the plurality of virtual machines and the data storage, the processor being configured to:

receive a packet from an edge router;

determine a rule from the plurality of rules based on the packet;

determine a virtual machine based on the rule and the servers list portion;

modify a destination address of the packet based on the virtual machine;

forward the packet to the virtual machine;

wherein the data storage further comprises a hash array portion comprising an array of server index values:

wherein the servers list portion comprises a set of server addresses;

and wherein the determination of the virtual machine is further based on further configuring the processor to select the virtual machine from the set of server addresses using a server index determined based on the rule;

wherein the array of server index values comprises the server index.

2. The apparatus of claim 1 , wherein the apparatus is a first host in a network of a plurality of hosts; wherein the virtual machine is a member of a second plurality of virtual machines hosted on a second host, the second host being a member of the plurality of hosts; and wherein at least a second subset of the plurality of rules map packet flow to one or more of the second plurality of virtual machines based on the servers list portion.

3. The apparatus of claim 1 , wherein the destination address is a MAC address.

4. The apparatus of claim 1 , wherein the rule comprises a distribute portion, the distribute portion specifying a distribution action.

5. The apparatus of claim 1 , wherein the processor is further configured to:

determine that the packet initiates a packet flow;

wherein the modification of the destination address of the packet is based on the determination that the packet initiates the packet flow.

6. The apparatus of claim 5 , wherein the determination that the packet initiates a packet flow is based on a SYN flag in the packet.

7. The apparatus of claim 1 , wherein the processor is further configured to:

receive a second packet from the edge router, the second packet comprising a server value identifying the virtual machine;

modify a destination address of the second packet based on the server value; and

forward the second packet to the virtual machine.

8. The apparatus of claim 7 , wherein the server value is in a TCP ACK field of the second packet.

9. The apparatus of claim 7 , wherein the server value is a server index value; and wherein the processor is further configured to determine the virtual machine based on the server index value and the servers list portion.

10. The apparatus of claim 7 , wherein the data storage further comprises a history portion; and wherein the processor is further configured to:

receive a third packet from the edge router;

determine that the third packet is a retransmission;

retrieve a prior server value from the history portion based on the determination that the third packet is a retransmission and the third packet;

modify a destination address of the third packet based on the prior server value; and

forward the third packet to the virtual machine.

11. The apparatus of claim 1 , wherein the processor is further configured to:

receive a second packet from the edge router, the second packet comprising a server value identifying the virtual machine;

determine that a corresponding server index value in the array of server index values is a trigger value;

set the corresponding server index value to the server value;

modify a destination address of the second packet based on the server value; and

forward the second packet to the virtual machine.

12. A method for providing in-path flow distribution, the method comprising:

at a processor communicatively connected to a data storage, receiving a packet from an edge router; wherein the data storage comprises a rules portion comprising a plurality of rules and a servers list portion, wherein at least a subset of the plurality of rules map packet flow to a virtual machine based on the servers list portion;

determining, by the processor in cooperation with the data storage, a rule from the plurality of rules based on the packet;

determining, by the processor in cooperation with the data storage, a virtual machine based on the rule and the servers list portion;

modifying, by the processor in cooperation with the data storage, a destination address of the packet based on the virtual machine;

forwarding, by the processor in cooperation with the data storage, the packet to the virtual server;

wherein the data storage further comprises a hash array portion comprising an array of server index values:

wherein the servers list portion comprises a set of server addresses;

and wherein the determining the virtual machine is further based on selecting the virtual machine from the set of server addresses using a server index determined based on the rule;

wherein the array of server index values comprises the server index.

13. The method of claim 12 , further comprising:

determining, by the processor in cooperation with the data storage, that the packet initiates a packet flow;

wherein the modification of the destination address of the packet is based on the determination that the packet initiates the packet flow.

14. The method of claim 12 , further comprising:

receiving, by the processor in cooperation with the data storage, a second packet from the edge router, the second packet comprising a server value identifying the virtual machine;

modifying, by the processor in cooperation with the data storage, a destination address of the second packet based on the server value; and

forwarding, by the processor in cooperation with the data storage, the second packet to the virtual machine.

15. The method of claim 13 , further comprising:

receiving, by the processor in cooperation with the data storage, a second packet from the edge router, the second packet comprising a server value identifying the virtual machine;

determining, by the processor in cooperation with the data storage, that a corresponding server index value in the array of server index values is a trigger value;

setting, by the processor in cooperation with the data storage, the corresponding server index value to the server value;

modifying, by the processor in cooperation with the data storage, a destination address of the second packet based on the server value; and

forwarding, by the processor in cooperation with the data storage, the second packet to the virtual machine.

16. The method of claim 12 , further comprising:

wherein the data storage further comprises a history portion;

determining, by the processor in cooperation with the data storage, a historical server index value associated with the virtual machine;

storing, by the processor in cooperation with the data storage, the historical server index value in the history portion;

receiving, by the processor in cooperation with the data storage, a second packet from the edge router, the second packet comprising a server value;

determining, by the processor in cooperation with the data storage, a second rule from the plurality of rules based on the second packet;

determining, by the processor in cooperation with the data storage, a second server index value based on the rule and the servers list portion;

retrieving, by the processor in cooperation with the data storage, the historical server index value based on a determination that the server value does not correspond to the second server index value;

modifying, by the processor in cooperation with the data storage, a destination address of the second packet based on the historical server index value; and

forwarding, by the processor in cooperation with the data storage, the second packet.

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

receiving a packet from an edge router; wherein the data storage comprises a rules portion comprising a plurality of rules and a servers list portion, wherein at least a subset of the plurality of rules map packet flow to a virtual machine based on the servers list portion;

determining a rule from the plurality of rules based on the packet;

determining a virtual machine based on the rule and the servers list portion;

modifying a destination address of the packet based on the virtual machine; forwarding the packet to the virtual server;

wherein the data storage further comprises a hash array portion comprising an array of server index values;

wherein the servers list portion comprises a set of server addresses;

and wherein the determining the virtual machine is further based on selecting the virtual machine from the set of server addresses using a server index determined based on the rule:

wherein the array of server index values comprises the server index.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Sep 3, 2014
From: CREDIT SUISSE AG
To: ALCATEL-LUCENT CANADA INC.
Reel/Frame 033683/0191 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2014
From: ALCATEL-LUCENT CANADA INC.
To: ALCATEL LUCENT
Reel/Frame 033543/0175 →
SECURITY AGREEMENT Recorded Jul 22, 2013
From: ALCATEL LUCENT CANADA INC.
To: CREDIT SUISSE AG
Reel/Frame 030851/0623 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 030568 FRAME 0744. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF ASSIGNORS INTEREST. Recorded Jun 18, 2013
From: VAN BEMMEL, JEROEN
To: ALCATEL-LUCENT CANADA INC.
Reel/Frame 030649/0600 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 7, 2013
From: VAN BEMMEL, JEROEN
To: ALCATEL-LUCENT USA INC.
Reel/Frame 030568/0744 →