IP Library Granted Patent US 11,005,708
Granted Patent B1
US 11,005,708 · App. 16/789,786 · Granted May 11, 2021

Techniques to perform the dynamic configuration of load-balanced relay operations

Inventors: Claudiu Dan Gheorghe (San Mateo, CA); Erik James Reed (Dublin, CA); Ehren Andrew Kret (Sunnyvale, CA)
Assignee: WHATSAPP INC.
H04L41/0803H04B7/15507H04L43/087H04L65/60H04L65/605H04L65/80H04L67/1004H04L67/146H04L67/28H04L67/42H04L63/0428H04L63/168
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,005,708
App. No.
16/789,786
Granted
May 11, 2021
Kind
B1
Abstract

Techniques to perform the dynamic configuration of load-balanced relay operations are described. In one embodiment, an apparatus may comprise a first load balancer component, a second load balancer component, a first relay server component, a second relay server component, and a persistent shared-memory storage component. The apparatus may be operative to perform the dynamic configuration of load-balanced relay operations for a two-tier relay system using persistent shared-memory storage in which a session identifier received from client devices is used to coordinate the activities of the relay server components based on information shared via the persistent shared-memory storage component. Other embodiments are described and claimed.

Claims (38)

1. A computer-implemented method, comprising:

extracting a first session identifier from a first token, the first token unencrypted from a first encrypted token received from a first client device using a first key retrieved, based on a first index from first relay information of a first-client bind request, from an encryption key table;

registering a network address of the first client device with the first session identifier in a memory;

extracting a second session identifier from a second token, the second token unencrypted from a second encrypted token received from a second client device using a second key retrieved, based on a second index from second relay information of a second-client bind request, from the encryption key table, wherein the first relay information and the second relay information are the same, the first index and the second index are the same, and the first session identifier and the second session identifier are the same;

retrieving the network address from the memory based on the second session identifier; and

transmitting a network packet from the second client device to the network address.

2. The method of claim 1 , wherein the first encrypted token comprises the first session identifier encrypted using the first key, and wherein the second encrypted token comprises the second session identifier encrypted using the second key.

3. The method of claim 2 , the first relay information comprising the first encrypted token, wherein the first encrypted token from the first relay information has been augmented with the first index, the first index in an unencrypted form, and the second relay information comprising the second encrypted token, wherein the second encrypted token from the second relay information has been augmented with the second index, the second index in an unencrypted form.

4. The method of claim 1 , wherein the first key and second key are associated with one or more specific relay systems for use with the one or more specific relay systems, wherein the first encrypted token uses the first key based on the first key's association with the one or more specific relay systems, and wherein the second encrypted token uses the second key based on the second key's association with the one or more specific relay systems.

5. The method of claim 4 , wherein the one or more specific relay systems are transmitted in the encryption key table, wherein the encryption key table comprises null entries in a general shared portion of the encryption key table and filled entries in a region-specific portion of the encryption key table.

6. The method of claim 1 , wherein the encryption key table is distributed among various relay systems.

7. The method of claim 1 , wherein the encryption key table comprises multiple keys, wherein each of the multiple keys is at a particular key index and wherein one or more of the multiple keys has been updated based on a key rotation command.

8. The method of claim 1 , further comprising receiving the first-client bind request from a first load balancer component and receiving the second-client bind request from a second load balancer component.

9. A non-transitory computer-readable storage medium comprising instructions which, when executed, cause a system to:

extract a first session identifier from a first token, the first token unencrypted from a first encrypted token received from a first client device using a first key retrieved, based on a first index from first relay information of a first-client bind request, from an encryption key table;

register a network address of the first client device with the first session identifier in a memory;

extract a second session identifier from a second token, the second token unencrypted from a second encrypted token received from a second client device using a second key retrieved, based on a second index from second relay information of a second-client bind request, from the encryption key table, wherein the first relay information and the second relay information are the same, the first index and the second index are the same, and the first session identifier and the second session identifier are the same;

retrieve the network address from the memory based on the second session identifier; and

transmit a network packet from the second client device to the network address.

10. The computer-readable storage medium of claim 9 , wherein the first encrypted token comprises the first session identifier encrypted using the first key, and wherein the second encrypted token comprises the second session identifier encrypted using the second key.

11. The computer-readable storage medium of claim 10 , the first relay information comprising the first encrypted token, wherein the first encrypted token from the first relay information has been augmented with the first index, the first index in an unencrypted form, and the second relay information comprising the second encrypted token, wherein the second encrypted token from the second relay information has been augmented with the second index, the second index in an unencrypted form.

12. The computer-readable storage medium of claim 9 , wherein the first key and second key are associated with one or more specific relay systems for use with the one or more specific relay systems, wherein the first encrypted token uses the first key based on the first key's association with the one or more specific relay systems, and wherein the second encrypted token uses the second key based on the second key's association with the one or more specific relay systems.

13. The computer-readable storage medium of claim 12 , wherein the one or more specific relay systems are transmitted in the encryption key table, and wherein the encryption key table comprises null entries in a general shared portion of the encryption key table and filled entries in a region-specific portion of the encryption key table.

14. The computer-readable storage medium of claim 9 , wherein the encryption key table is distributed among various relay systems.

15. The computer-readable storage medium of claim 9 , wherein the encryption key table comprises multiple keys, wherein each of the multiple keys is at a particular key index.

16. The computer-readable storage medium of claim 15 , wherein one or more of the multiple keys has been updated based on a key rotation command.

17. The computer-readable storage medium of claim 9 , further comprising instructions which, when executed, cause the system to receive the first-client bind request from a first load balancer component and receive the second-client bind request from a second load balancer component.

18. An apparatus, comprising:

a processor circuit on a device;

a first relay server component operative to:

extract a first session identifier from a first token, the first token unencrypted from a first encrypted token received from a first client device using a first key retrieved, based on a first index from first relay information of a first-client bind request, from an encryption key table; and

register a network address of the first client device with the first session identifier in a memory; and

a second relay server component operative to:

extract a second session identifier from a second token, the second token unencrypted from a second encrypted token received from a second client device using a second key retrieved, based on a second index from second relay information of a second-client bind request, from the encryption key table, wherein the first relay information and the second relay information are the same, the first index and the second index are the same, and the first session identifier and the second session identifier are the same;

retrieve the network address from the memory based on the second session identifier; and

transmit a network packet from the second client device to the network address.

19. The apparatus of claim 18 , the first relay information comprising the first encrypted token and the second relay information comprising the second encrypted token, wherein the first encrypted token has been augmented with the first index and comprises the first session identifier encrypted using the first key, the first index being unencrypted, and wherein the second encrypted token has been augmented with the second index and comprises the second session identifier encrypted using the second key, the second index being unencrypted.

20. The apparatus of claim 18 , wherein the first relay server component is operative to receive the first-client bind request from a first load balancer component and wherein the second relay server component is operative to receive the second-client bind request from a second load balancer component.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2022
From: GHEORGHE, CLAUDIU DAN; REED, ERIK JAMES; KRET, EHREN
To: WHATSAPP INC.
Reel/Frame 061339/0951 →
CHANGE OF NAME Recorded Jun 22, 2021
From: WHATSAPP INC.
To: WHATSAPP LLC
Reel/Frame 056646/0001 →
Continuity (3)
Continuation 15201170 · Jul 1, 2016
Provisional Application 62301173 · Feb 29, 2016
Provisional Application 62301161 · Feb 29, 2016
Cited By (3)
US 12,316,720 US 12,401,993 US 12,445,537