IP Library › Granted Patent US 8,588,066
Granted Patent B2
US 8,588,066 · App. 13/072,276 · Granted Nov 19, 2013

Systems and methods for link load balancing on a multi-core device

Inventors: Deepak Goel (Bangalore, IN); Jyotheesh Rao Kurma (Bangalore, IN)
Assignee: Citrix Systems, Inc.
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 8,588,066
App. No.
13/072,276
Granted
Nov 19, 2013
Kind
B2
Abstract

Systems and methods are described for link load balancing, by a multi-core intermediary device, a plurality of Internet links. The method may include load balancing, by a multi-core device intermediary to a plurality of devices and a plurality of Internet links, network traffic across the plurality of Internet links. The multi-core device providing persistence of network traffic to a selected Internet link based on a persistence type. A first core of the multi-core device receives, a packet to be transmitted via an Internet link to be selected from the plurality of Internet links. The first core sends to a second core of the multi-core device a request for persistence information responsive to identifying that the second core is an owner core of a session for persistence based on the persistence type. The first core receives the persistence information from the second core and determines to transmit the packet to the Internet link previously selected based on the persistence information received from the second core.

Claims (30)

1. A method for link load balancing, by a multi-core intermediary device, a plurality of Internet links, the method comprising:

(a) load balancing, by a multi-core device intermediary to a plurality of devices and a plurality of Internet links, network traffic across the plurality of Internet links, the multi-core device providing persistence of network traffic to a selected Internet link based on a persistence type;

(b) receiving, by a first core of the multi-core device, a packet to be transmitted via an Internet link to be selected from the plurality of Internet links;

(c) sending, by the first core to a second core of the multi-core device, a request for persistence information responsive to identifying that the second core is an owner core of a session for persistence based on the persistence type;

(d) receiving, by the first core, the persistence information from the second core; and

(e) determining, by the first core, to transmit the packet to the Internet link previously selected based on the persistence information received from the second core.

2. The method of claim 1 , wherein step (a) further comprises load balancing, by the multi-core device, outbound network traffic across the plurality of Internet links based on a load balancing method of one of: round robin, destination hash, least packets or least bandwidth.

3. The method of claim 1 , wherein step (a) further comprises providing persistence of network traffic to the selected Internet link based on the persistence type comprising persistence based on a source internet protocol address of the packet.

4. The method of claim 1 , wherein step (a) further comprises providing persistence of network traffic to the selected Internet link based on the persistence type comprising persistence based on a source internet protocol address and a destination internet protocol address of the packet.

5. The method of claim 1 , wherein step (b) further comprises receiving, by a virtual server executing on the first core, the packet for the session created by the second core.

6. The method of claim 1 , wherein step (c) further comprises determining, by the first core that the second core is the owner of the session based on a hash of tuple information of the packet.

7. The method of claim 1 , wherein step (c) further comprises sending, by the first core to the second core, a core to core message comprising the request.

8. The method of claim 1 , wherein step (d) further comprises receiving, by the first core from the second core, a core to core message comprising a response having the persistence information.

9. The method of claim 1 , wherein step (d) further comprises receiving persistence information comprising identification of the Internet link selected for the session.

10. The method of claim 1 , wherein step (f) further comprises forwarding, by the first core, the packet via a link load balanced route for the session identified via the persistence information.

11. A method for link load balancing, by a multi-core intermediary device, a plurality of Internet links, the method comprising:

(a) load balancing, by a multi-core device intermediary to a plurality of devices and a plurality of Internet links, network traffic across the plurality of Internet links, the multi-core device providing persistence of network traffic to a selected Internet link based on a persistence type;

(b) identifying, by a first core of the multi-core device receiving a packet having a destination via an Internet link to be selected from the plurality of Internet links, that persistence is enabled for a virtual server of the multi-core device that provides the load balancing;

(c) sending, by the first core to a second core of the multi-core device, a request for persistence information responsive to identifying that the second core is an owner core of a session of the packet;

(d) receiving, by the first core, the persistence information for the session of the packet from the second core; and

(e) selecting, by the first core, a source IP address and source port for the packet based on the persistence information.

12. The method of claim 11 , wherein step (a) further comprises load balancing, by the multi-core device, outbound network traffic across the plurality of Internet links based on a load balancing method of one of: round robin, destination hash, least packets or least bandwidth.

13. The method of claim 11 , wherein step (a) further comprises providing persistence of network traffic to the selected Internet link based on the persistence type comprising persistence based on a source internet protocol address of the packet.

14. The method of claim 11 , wherein step (a) further comprises providing persistence of network traffic to the selected Internet link based on the persistence type comprising persistence based on a source internet protocol address and a destination internet protocol address of the packet.

15. The method of claim 11 , wherein step (b) further comprises assigning, by the first core, a dummy internet protocol (IP) address as a source IP and a dummy port number as a source port for a connection for the packet.

16. The method of claim 11 , wherein step (c) further comprises determining, by the first core that the second core is the owner of the session based on a hash of tuple information of the packet.

17. The method of claim 11 , wherein step (d) further comprises receiving persistence information comprising information identifying the Internet link selected for the session.

18. The method of claim 11 , wherein step (e) further selecting the source IP address and the source port based on link load balancing route information received via the persistence information.

19. The method of claim 11 , wherein step (e) further modifying a dummy IP address and dummy port assigned to a connection for the packet using the selected source IP address and source port.

20. The method of claim 11 , further comprising sending, by the first core, the packet via a connection based on the selected source IP and source port.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 28, 2011
From: GOEL, DEEPAK; KURMA, JYOTHEESH RAO
To: CITRIX SYSTEMS, INC.
Reel/Frame 026029/0685 →
Continuity (2)
Provisional Application 61317776 · Mar 26, 2010
Related Publication 20110235508A1 · Sep 29, 2011