IP Library Granted Patent US 10,587,481
Granted Patent B2
US 10,587,481 · App. 15/865,512 · Granted Mar 10, 2020

Directing data flows in data centers with clustering services

Inventors: Venkataraman Natham (Pleasanton, CA); Pagalavan Krishnamoorthy (San Jose, CA); Ramesh Santhanakrishnan (Fremont, CA); Ali Golshan (Palo Alto, CA)
Assignee: Cisco Technology, Inc.
H04L41/50H04L45/66H04L67/1002
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,587,481
App. No.
15/865,512
Granted
Mar 10, 2020
Kind
B2
Abstract

Techniques are provided for implementing clustering services in a virtual data center or other virtualized infrastructure in a manner that allows packets to be directed to a particular service engine of a service engine cluster.

Claims (50)

1. A method comprising:

receiving, at a controller, a forward packet from a selected service engine of a group of service engines, the forward packet originating from a client;

creating, by the controller, an entry in a table for indicating a data flow associated with the forward packet, the entry including an identifier of the selected service engine;

sending, by the controller, the forward packet to a selected server of a group of servers;

receiving, at the controller, a reverse packet from the selected server, the reverse packet including an identifier of the group of service engines and destined for the client;

modifying, by the controller, the reverse packet using the entry in the table by replacing the identifier of the group of service engines with the identifier of the selected service engine; and

sending, by the controller, the modified reverse packet to the selected service engine,

wherein the controller is disposed on a data path between the group of service engines and the group of servers.

2. The method of claim 1 , further comprising:

identifying, by the controller, the identifier of the selected service engine from the entry in the table to apply to the reverse packet.

3. The method of claim 1 , further comprising:

identifying, by the controller, a data flow associated with the reverse packet based on one or more identifiers included in the reverse packet;

verifying, by the controller, a correspondence between the data flow associated with the reverse packet and the data flow associated with the forward packet indicated by the entry in the table; and

upon verifying the correspondence, determining, by the controller, the identifier of the selected service engine using the entry in the table.

4. The method of claim 1 , wherein the group of service engines comprises a cluster of load balancers of a virtual data center.

5. The method of claim 1 , wherein the group of service engines comprises a plurality of physical devices configured as a single logical entity.

6. The method of claim 1 , wherein the group of servers comprises a group of virtual machines.

7. The method of claim 1 , wherein the identifier of the group of service engines comprises a default gateway address directed to the group of service engines.

8. The method of claim 1 , wherein the controller comprises a hypervisor.

9. The method of claim 1 , wherein sending the forward packet to the selected server comprises sending the forward packet to the selected server over a layer-2 (L2) network.

10. The method of claim 1 , wherein the identifier of the group of service engines and the identifier of the selected service engine comprise MAC addresses.

11. A controller comprising:

one or more processors;

a non-transitory memory for storing program instructions;

the one or more processors being configured to execute the program instructions for:

receiving a forward packet from a selected service engine of a group of service engines, the forward packet originating from a client;

creating an entry in a table for indicating a data flow associated with the forward packet, the entry including an identifier of the selected service engine;

sending the forward packet to a selected server of a group of servers;

receiving a reverse packet from the selected server, the reverse packet including an identifier of the group of service engines and destined for the client;

modifying the reverse packet using the entry in the table by replacing the identifier of the group of service engines with the identifier of the selected service engine; and

sending the modified reverse packet to the selected service engine,

wherein the controller is disposed on a data path between the group of service engines and the group of servers.

12. The controller of claim 11 , wherein the one or more processors are further configured to execute the instructions for:

identifying, from the entry in the table, the identifier of the selected service engine to apply to the reverse packet.

13. The controller of claim 11 , wherein the controller comprises a hypervisor.

14. The controller of claim 11 , wherein the group of service engines comprises a cluster of load balancers.

15. The controller of claim 11 , wherein the group of servers comprises a group of virtual machines.

16. The controller of claim 11 , wherein the identifier of the group of service engines comprises a default gateway address directed to the group of service engines.

17. A non-transitory computer-readable storage medium storing thereon computer-readable instructions which are executable by one or more processors of a controller, the computer-readable instructions comprising:

instructions for receiving a forward packet from a selected service engine of a group of service engines, the forward packet originating from a client;

instructions for creating an entry in a table for indicating a data flow associated with the forward packet, the entry including an identifier of the selected service engine;

instructions for sending the forward packet to a selected server of a group of servers;

instructions for receiving a reverse packet from the selected server, the reverse packet including an identifier of the group of service engines and destined for the client;

instructions for modifying the reverse packet using the entry in the table by replacing the identifier of the group of service engines with the identifier of the selected service engine; and

instructions for sending the modified reverse packet to the selected service engine,

wherein the controller is disposed on a data path between the group of service engines and the group of servers.

18. The non-transitory computer-readable storage medium of claim 17 having computer-readable instructions further comprising:

instructions for identifying, from the entry in the table, the identifier of the selected service engine to apply to the reverse packet.

19. The non-transitory computer-readable storage medium of claim 17 , wherein the identifier of the group of service engines comprises a default gateway address directed to the group of service engines.

20. The non-transitory computer-readable storage medium of claim 17 , wherein the group of service engines comprise a cluster of load balancers of a data center, and wherein the group of servers comprises a group of virtual machines.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2019
From: NATHAM, VENKATARAMAN; KRISHNAMOORTHY, PAGALAVAN; SANTHANAKRISHNAN, RAMESH; GOLSHAN, ALI
To: CISCO TECHNOLOGY, INC.
Reel/Frame 051321/0325 →
Continuity (3)
Continuation 14022049 · Sep 9, 2013
Continuation 12958097 · Dec 1, 2010
Related Publication 20180152357A1 · May 31, 2018
Cited By (1)
US 12,362,999