IP Library Granted Patent US 9,118,581
Granted Patent B2
US 9,118,581 · App. 13/650,354 · Granted Aug 25, 2015

Routing network traffic

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,118,581
App. No.
13/650,354
Granted
Aug 25, 2015
Kind
B2
Abstract

A traffic manager ( 121 - 124 ) for, and a method of, routing network traffic to a plurality of server computers ( 131 - 138 ). The traffic manager includes a network interface ( 204 ) and a processor ( 201 ). The processor is configured to receive network traffic comprising a request ( 701, 702 ) from a client computer ( 102 - 105 ) via the network interface. The processor is configured to then identify, based on attributes of the request, a server computer that is responsible for servicing the request (a responsible server). The processor is configured to then route the request to the responsible server using the network interface.

Claims (64)

1. A plurality of traffic managers for routing network traffic to a plurality of server computers, wherein each traffic manager in the plurality of traffic managers includes a network interface, and a processor configured to:

receive network traffic comprising a request from a client computer via said network interface;

identify, based on attributes of said request, a responsible server computer that is responsible for servicing said request, wherein said identifying is performed by each traffic manager independently of other traffic managers in the plurality of traffic managers, and

route said request to said responsible server using said network interface, wherein said routing is performed by each traffic manager independently of other traffic managers in the plurality of traffic managers.

2. The plurality of traffic managers according to claim 1 , wherein said processor is further configured to identify a server computer that is responsible for servicing said request by creating a hash of attributes of said request and determining a server computer responsible for servicing requests having that hash.

3. The plurality of traffic managers according to claim 2 , wherein said processor is configured to, for any value of said hash, establish which server computer is responsible for servicing requests having that hash by:

creating a first list of said server computers, said first list being ordered and numbered;

calculating a first variable by taking the modulus of the hash with respect to the number of server computers in said first list;

identifying, as an identified server, the server computer at the position in the first list indicated by said first variable;

establishing said identified server as responsible for servicing requests having said hash.

4. The plurality of traffic managers according to claim 3 , wherein said processor is further configured to:

determine a condition to the effect that a first server computer is no longer online (an offline server); and

allocate to each of the other server computers responsibility for processing a portion of the network traffic previously routed to said offline server, whilst maintaining each of the other server computers' existing share of responsibility for servicing network traffic.

5. The plurality of traffic managers according to claim 4 , wherein said processor is configured to determine that said first server computer is offline by identifying that said identified server has not broadcast a multicast to indicate that it is online.

6. The plurality of traffic managers according to claim 5 , wherein said processor is further configured to:

determine a condition to the effect that said identified server is offline;

remove said identified server from said first list to create a second list and numbering said second list;

evaluate a modified hash by dividing said hash by said number of server computers in said first list; and

evaluate second variable by taking the modulus of the modified hash with respect to the number of server computers in said second list;

identify, as a substitute server, the server computer at the position in the second list indicated by said second variable;

establish the substitute server as responsible for servicing requests having the unmodified hash.

7. The plurality of traffic managers according to claim 1 , wherein said traffic manager forms part of a cluster further comprising at least one similar traffic manager, such that said cluster comprises a plurality of traffic managers, and wherein:

network traffic is replicated to each one of said plurality of traffic managers, and

said processor is further configured to maintain communication with said at least one traffic manager using said network interface.

8. The plurality of traffic managers according to claim 7 , wherein each said processor is configured to determine whether to route or to drop said request by creating a hash of attributes of said request and determining whether it is responsible for routing requests having that hash.

9. The plurality of traffic managers according to claim 8 , wherein said processor is further configured to:

establish a traffic management responsibilities array in memory by determining whether it is responsible for routing requests having each possible hash value; and

consult said traffic management responsibilities array to determine whether it is responsible for routing each request.

10. The plurality of traffic managers according to claim 7 , wherein said processor is further configured to:

determine a condition to the effect that one of said plurality of traffic managers is no longer online (an offline traffic manager); and

assume responsibility for routing a portion of the traffic handled by said offline traffic manager, whilst maintaining responsibility for routing traffic that it is already responsible for.

11. A method of routing network traffic to a plurality of server computers using a plurality of traffic managers, wherein each traffic manager in the plurality of traffic managers performs steps of:

receiving network traffic comprising a request from a client computer via said network interface;

identifying, based on attributes of said request, a responsible server computer that is responsible for servicing said request, wherein said identifying is performed by each traffic manager independently of other traffic managers in the plurality of traffic managers, and

routing said request to said responsible server, wherein said routing is performed by each traffic manager independently of other traffic managers in the plurality of traffic managers.

12. The method according to claim 11 , wherein said step of identifying a server computer that is responsible for servicing said request comprises creating a hash of attributes of said request and determining a server computer responsible for servicing requests having that hash.

13. The method according to claim 12 , wherein for any value of said hash, said step of determining a server computer responsible for servicing requests having that hash comprises:

crating a first list of said server computers, said first list being ordered and numbered;

calculating a first variable by taking the modulus of the hash with respect to the number of server computers in said first list;

identifying, as an identified server, the server computer at the position in the first list indicated by said first variable;

establishing said identified server as responsible for servicing requests having said hash.

14. The method according to claim 13 , wherein said computer further performs steps of:

determining a condition to the effect that a first server computer is no longer online (an offline server); and

allocating to each of the other server computers responsibility for processing a portion of the network traffic previously routed to said offline server, whilst maintaining each of the other server computers' existing share of responsibility for servicing network traffic.

15. The method according to claim 11 , wherein said computer further performs the steps of:

determining a condition to the effect that said identified server is offline;

removing said identified server from said first list to create a second list and numbering said second list;

calculating a modified hash by dividing said hash by said number of server computers in said first list; and

calculating a second variable by taking the modulus of the modified hash with respect to the number of server computers in said second list;

identifying, as a substitute server, the server computer at the position in the second list indicated by said second variable;

establishing the substitute server as responsible for servicing requests having the unmodified hash.

16. The method according to claim 11 , wherein said computer is a traffic manager forming part of a cluster further comprising at least one similar traffic manager, such that said cluster comprises a plurality of traffic managers, and wherein:

network traffic is replicated to each one of said plurality of traffic managers, and

said computer maintains communication with said at least one traffic manager.

17. The method according to claim 16 , wherein said traffic manager performs further steps of:

determining a condition to the effect that one of said plurality of traffic managers is no longer online (an offline traffic manager); and

assuming responsibility for routing a portion of the traffic handled by said offline traffic manager, whilst maintaining responsibility for routing traffic that it is already responsible for.

18. The method according to claim 11 , wherein said traffic manager performs further steps of:

establishing a traffic management responsibilities array in memory by determining whether it is responsible for routing requests having each possible hash value; and

consulting said traffic management responsibilities array to determine whether it is responsible for routing each request.

19. A non-transitory computer-readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of routing network traffic to a plurality of server computers using a plurality of traffic managers, wherein each traffic manager in the plurality of traffic managers performs steps of:

receiving network traffic comprising a request from a client computer via said network interface;

identifying, based on attributes of said request, a responsible server computer that is responsible for servicing said request, wherein said identifying is performed by each traffic manager independently of other traffic managers in the plurality of traffic managers, and

routing said request to said responsible server, wherein said routing is performed by each traffic manager independently of other traffic managers in the plurality of traffic managers.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY 14633493 WHICH WAS ENTERED INCORRECTLY AS 14633793 PREVIOUSLY RECORDED ON REEL 71176 FRAME 315. ASSIGNOR(S) HEREBY CONFIRMS THE FIRST LIEN NEWCO SECURITY AGREEMENT. Recorded Nov 10, 2025
From: PULSE SECURE, LLC; IVANTI, INC.; IVANTI US LLC; IVANTI SECURITY HOLDINGS LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 073818/0515 →
FIRST LIEN NEWCO SECURITY AGREEMENT Recorded May 5, 2025
From: PULSE SECURE, LLC; IVANTI, INC.; IVANTI US LLC; IVANTI SECURITY HOLDINGS LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 071176/0315 →
SECURITY INTEREST Recorded May 3, 2025
From: PULSE SECURE LLC
To: ALTER DOMUS (US) LLC
Reel/Frame 071165/0027 →
NOTICE OF SUCCESSION OF AGENCY FOR SECURITY INTEREST AT REEL/FRAME 054665/0873 Recorded Apr 29, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: ALTER DOMUS (US) LLC, AS SUCCESSOR AGENT
Reel/Frame 071123/0386 →
SECURITY INTEREST Recorded Dec 9, 2020
From: CELLSEC, INC.; PULSE SECURE, LLC; INVANTI, INC.; MOBILEIRON, INC.; INVANTI US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 054665/0873 →
SECURITY INTEREST Recorded Dec 9, 2020
From: CELLSEC, INC.; PULSE SECURE, LLC; IVANTI, INC.; MOBILEIRON, INC.; IVANTI US LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 054665/0062 →
RELEASE OF SECURITY INTEREST : RECORDED AT REEL/FRAME - 053638-0220 Recorded Dec 1, 2020
From: KKR LOAN ADMINISTRATION SERVICES LLC
To: PULSE SECURE, LLC
Reel/Frame 054559/0368 →
SECURITY INTEREST Recorded Aug 29, 2020
From: PULSE SECURE, LLC
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 053638/0220 →