IP Library › Granted Patent US 10,680,955
Granted Patent B2
US 10,680,955 · App. 16/037,884 · Granted Jun 9, 2020

Stateless and reliable load balancing using segment routing and TCP timestamps

Inventors: Pierre Pfister (Chalons-en-Champagne, FR); William Mark Townsley (Paris, FR); Benoît Pit-Claudel (Montrouge, FR); Aloÿs Christophe Augustin (Paris, FR); Yoann Desmouceaux (Paris, FR)
Assignee: Cisco Technology, Inc.
H04L47/125H04L45/7453H04L47/13H04L47/21H04L67/1023H04L67/1029H04L69/16H04L69/22
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,680,955
App. No.
16/037,884
Granted
Jun 9, 2020
Kind
B2
Abstract

Stateless and reliable load balancing using segment routing and an available side-channel may be provided. First, a non-SYN packet associated with a connection may be received. The non-SYN packet may have first data contained in an available side-channel. Next an associated bucket may be retrieved based on a hash of second data in the non-SYN packet. The associated bucket may identify a plurality of servers. Then a one of the plurality of servers may be selected based on the first data contained in the available side-channel.

Claims (46)

1. A method comprising:

receiving a non-SYN packet associated with a connection, the non-SYN packet having first data contained in an available side-channel;

retrieving an associated bucket based on a hash of second data in the non-SYN packet, the associated bucket identifying a plurality of servers;

selecting a one of the plurality of servers based on the first data contained in the available side-channel;

receiving a SYN-packet associated with the connection;

encapsulating the SYN-packet, wherein bits identifying a value to be used by the available side channel to identify the one of the plurality of servers are set in the encapsulation; and

steering the encapsulated SYN-packet to the one of the plurality of servers.

2. The method of claim 1 , wherein receiving the non-SYN packet having the first data contained in the available side-channel comprises receiving the non-SYN packet having the first data contained in the available side-channel wherein the available side-channel comprises a Transmission Control Protocol (TCP) Time Stamp (TS) and the first data comprises a value in lower-order bits of the TCP TS.

3. The method of claim 1 , wherein retrieving the associated bucket based on the hash of the second data contained in the non-SYN packet, the associated bucket identifying the plurality of servers comprises retrieving the associated bucket wherein the plurality of servers comprise a currently used server and a past used server.

4. The method of claim 1 , wherein selecting the one of the plurality of servers based on the first data contained in the available side-channel comprises:

identifying a sub-table corresponding to the associated bucket based on the first data; and

selecting the one of the plurality of servers identified in the sub-table.

5. The method of claim 1 , further comprising performing the hash of the second data contained in the non-SYN packet.

6. The method of claim 1 , further comprising performing the hash of the second data contained in the non-SYN packet wherein the second data comprises a 5-tuple of the connection, the 5-tuple comprising a source address, a destination address, a protocol, a source port, and a destination port.

7. The method of claim 1 , further comprising sending the non-SYN packet to the one of the plurality of servers.

8. The method of claim 1 , wherein encapsulating the SYN-packet comprises setting bits of an IPv6 Segment Routing (SR) Segment Identifier (SID) to the value.

9. A system comprising:

a memory storage; and

a processing unit coupled to the memory storage, wherein the processing unit is operative to:

receive a non-SYN packet associated with a connection, the non-SYN packet having first data contained in an available side-channel;

retrieve an associated bucket based on a hash of second data in the non-SYN packet, the associated bucket identifying a plurality of servers;

select a one of the plurality of servers based on the first data contained in the available side-channel,

receive a SYN-packet associated with the connection,

encapsulate the SYN-packet, wherein bits identifying a value to be used by the available side channel to identify the one of the plurality of servers are set in the encapsulation, and

steer the encapsulated SYN-packet to the one of the plurality of servers.

10. The system of claim 9 , wherein the processing unit being operative to select the one of the plurality of servers based on the first data contained in the available side-channel comprises the processing unit being operative to:

identify a sub-table corresponding to the associated bucket based on the first data; and

select the one of the plurality of servers identified in the sub-table.

11. The system of claim 9 , wherein the available side-channel comprises a Transmission Control Protocol (TCP) Time Stamp (TS) and the first data comprises a value in lower-order bits of the TCP TS.

12. The system of claim 9 , wherein the processing unit is further operative to perform the hash of the second data contained in the non-SYN packet.

13. The system of claim 9 , wherein the second data comprises a 5-tuple of the connection, the 5-tuple comprising a source address, a destination address, a protocol, a source port, and a destination port.

14. The system of claim 9 , wherein the processing unit is further operative to send the non-SYN packet to the one of the plurality of servers.

15. A non-transitory computer-readable medium that stores a set of instructions, which when executed by a processor, cause one or more computing devices to:

receive a non-SYN packet associated with a connection, the non-SYN packet having first data contained in an available side-channel;

retrieve an associated bucket based on a hash of second data in the non-SYN packet, the associated bucket identifying a plurality of servers;

select a one of the plurality of servers based on the first data contained in the available side-channel;

receive a SYN-packet associated with the connection;

encapsulate the SYN-packet, wherein bits identifying a value to be used by the available side channel to identify the one of the plurality of servers are set in the encapsulation; and

steer the encapsulated SYN-packet to the one of the plurality of servers.

16. The non-transitory computer-readable medium of claim 15 , wherein receiving the non-SYN packet having the first data contained in the available side-channel comprises receiving the non-SYN packet having the first data contained in the available side-channel wherein the available side-channel comprises a Transmission Control Protocol (TCP) Time Stamp (TS) and the first data comprises a value in lower-order bits of the TCP TS.

17. The non-transitory computer-readable medium of claim 15 , wherein retrieving the associated bucket based on the hash of the second data contained in the non-SYN packet, the associated bucket identifying the plurality of servers comprises retrieving the associated bucket wherein the plurality of servers comprise a currently used server and a past used server.

18. The non-transitory computer-readable medium of claim 15 , wherein selecting the one of the plurality of servers based on the first data contained in the available side-channel comprises:

identifying a sub-table corresponding to the associated bucket based on the first data; and

selecting the one of the plurality of servers identified in the sub-table.

19. The non-transitory computer-readable medium of claim 15 , wherein the instructions, which when executed by the processor, further cause the one or more computing devices to perform the hash of the second data contained in the non-SYN packet wherein the second data comprises a 5-tuple of the connection, the 5-tuple comprising a source address, a destination address, a protocol, a source port, and a destination port.

20. The system of claim 9 , wherein the processing unit being operative to encapsulate the SYN-packet comprises the processing unit being operative to set bits of an IPv6 Segment Routing (SR) Segment Identifier (SID) to the value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2018
From: PFISTER, PIERRE; TOWNSLEY, WILLIAM MARK; PIT-CLAUDEL, BENOÎT; AUGUSTIN, ALOYS CHRISTOPHE; DESMOUCEAUX, YOANN
To: CISCO TECHNOLOGY, INC.
Reel/Frame 046374/0849 →
Continuity (2)
Provisional Application 62687584 · Jun 20, 2018
Related Publication 20190394131A1 · Dec 26, 2019
Cited By (1)
US 12,348,422