IP Library Granted Patent US 11,296,984
Granted Patent B2
US 11,296,984 · App. 15/665,135 · Granted Apr 5, 2022

Use of hypervisor for active-active stateful network service cluster

Inventors: Mani Kancherla (Cupertino, CA); Ronghua Zhang (San Jose, CA)
Assignee: NICIRA, INC.
H04L45/74G06F9/45533H04L12/46H04L12/4633H04L12/4641H04L41/0893H04L67/00H04L67/1002H04L67/142H04L69/22G06F2009/4557H04L41/5058H04L45/302
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 11,296,984
App. No.
15/665,135
Granted
Apr 5, 2022
Kind
B2
Abstract

For a managed network, some embodiments provide a method for a set of service nodes in an active-active service node cluster in conjunction with a host computer hosting a destination data compute node (DCN) to improve the efficiency of directing a return data message to a service node storing state information for the flow to which the data message belongs. A primary service node in some embodiments receives a data message in a particular data message flow addressed to a destination DCN, performs a service on the data message and forwards the data message, along with information identifying the primary service node, to a host computer on which the destination DCN executes. The host computer generates an entry in a reverse forwarding table including identifying information for the particular data message flow and the primary service node to use to forward data messages in the particular data message flow to the primary service node.

Claims (33)

1. For a cluster of service nodes that perform a service for different message flows, a method comprising:

at a particular service node that is a primary service node for a particular data message flow that is addressed to a destination data compute node (DCN);

receiving a data message of the particular data message flow from a forwarding element that performs a load balancing operation to select the particular service node;

performing the service on the data message; and

forwarding the data message along with information identifying the primary service node to a host computer on which the destination DCN executes, wherein a module executing on the host computer generates an entry in a reverse forwarding table including identifying information for (i) the particular data message flow and (ii) the primary service node, the generated reverse forwarding table entry used to forward, to the primary service node, a return data message of the particular data message flow that is identified on the host computer.

2. The method of claim 1 , wherein forwarding the data message comprises encapsulating the data message for delivery to a tunnel endpoint executing on the host computer.

3. The method of claim 2 , wherein the information identifying the primary service node is included in an outer header of the encapsulated data message.

4. The method of claim 1 further comprising maintaining session state information for the particular data message flow at the primary service node.

5. The method of claim 4 further comprising:

at the primary service node,

identifying a secondary service node for the particular data message flow; and

sending the session state information to the secondary service node.

6. The method of claim 5 , wherein identifying a secondary service node comprises computing a consistent hash of at least one value in the header field of data messages in the particular data message flow to identify the secondary service node.

7. The method of claim 6 , wherein the identification is also based on a service cluster membership.

8. The method of claim 7 , wherein the received data message is a first data message in the particular data message flow and the service cluster membership is a current service cluster membership.

9. The method of claim 5 , wherein information identifying the secondary service node is also forwarded with the data message to the host computer on which the destination DCN executes for the host to use to forward return data messages to the secondary service node if the primary service node is unavailable.

10. The method of claim 9 , wherein the information identifying the primary service node and the information identifying the secondary service node are included in an outer header of the encapsulated data message.

11. The method of claim 1 , wherein the load balancing operation is equal-cost multipath (ECMP) routing.

12. The method of claim 1 , wherein none of the forwarding element, primary service node, and hypervisor execute on a same machine.

13. A non-transitory machine readable medium storing a program to be executed by a set of processing units of a particular service node that is a primary service node for a particular data message flow that is addressed to a destination data compute node (DCN), the particular service node in a cluster of service nodes that perform a service for different message flows, the program comprising sets of instructions for:

receiving a data message of the particular data message flow from a forwarding element that performs a load balancing operation to select the particular service node;

performing the service on the data message; and

forwarding the data message along with information identifying the primary service node to a host computer on which the destination DCN executes, wherein a module executing on the host computer generates an entry in a reverse forwarding table including identifying information for (i) the particular data message flow and (ii) the primary service node, the generated reverse forwarding table entry used to forward, to the primary service node, a return data message of the particular data message flow that is identified on the host computer.

14. The non-transitory machine readable medium of claim 13 , wherein the set of instructions for forwarding the data message comprises a set of instructions for encapsulating the data message for delivery to a tunnel endpoint executing on the host computer.

15. The non-transitory machine readable medium of claim 14 , wherein the information identifying the primary service node is included in an outer header of the encapsulated data message.

16. The non-transitory machine readable medium of claim 13 further comprising a set of instructions for maintaining session state information for the particular data message flow at the primary service node.

17. The non-transitory machine readable medium of claim 16 further comprising sets of instructions for:

identifying a secondary service node for the particular data message flow; and

sending the session state information to the secondary service node,

wherein the set of instructions for forwarding the data message further comprises a set of instructions for including information identifying the secondary service node for the host computer to use to forward return data messages to the secondary service node if the primary service node is unavailable.

18. The non-transitory machine readable medium of claim 17 , wherein the set of instructions for identifying a secondary service node comprises a set of instructions for computing a consistent hash of at least one value in the header field of data messages in the particular data message flow to identify the secondary service node based on a service cluster membership.

19. The non-transitory machine readable medium of claim 13 , wherein the load balancing operation is equal-cost multipath (ECMP) routing.

20. The non-transitory machine readable medium of claim 13 , wherein none of the forwarding element, primary service node, and hypervisor execute on a same machine.

Assignments (2)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2018
From: KANCHERLA, MANI; ZHANG, RONGHUA
To: NICIRA, INC.
Reel/Frame 046338/0518 →
Continuity (1)
Related Publication 20190036819A1 · Jan 31, 2019
Cited By (2)
US 12,335,139 US 12,470,621