IP Library Granted Patent US 10,952,264
Granted Patent B2
US 10,952,264 · App. 16/298,399 · Granted Mar 16, 2021

Persistent distribution of connectionless traffic supporting virtual connection migration

Inventors: Sergio Leonardo Ruiz (Redondo Beach, CA); Derek Shiell (Santa Monica, CA)
Assignee: Verizon Digital Media Services Inc.
H04W76/11G06F9/45558H04L12/4641H04L67/1002H04L69/08H04L69/161H04L69/164H04W80/06G06F2009/45595
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,952,264
App. No.
16/298,399
Granted
Mar 16, 2021
Kind
B2
Abstract

Provided is a device that persistently distributes connectionless traffic across different simultaneously executing server instances in a manner that allows a first set of server instances of the device to commence a new first set of connectionless data streams during a first interval, and a different second set of server instances of the device to commence a different second set of connectionless data streams as the first set of server instances respond to ongoing connectionless data streams of the first set of connectionless data streams during a subsequent second interval. The persistent distribution further supports virtual connection migration by distributing, to the same server instance, data packets that are directed to the same connectionless data stream even when the sending user equipment changes addressing during the connectionless data stream.

Claims (62)

1. A device comprising:

a non-transitory computer-readable medium storing a set of processor-executable instructions; and

one or more processors configured to execute the set of processor-executable instructions, wherein executing the set of processor-executable instructions causes the one or more processors to:

receive a data packet at a port that is associated with a connectionless networking protocol;

distribute the data packet from the port to a first server instance running on the device;

process the data packet at the first server instance in response to the data packet comprising a connection identifier that matches to one of a first plurality of connection identifiers that the first server instance generates to identify a particular connectionless data stream that is initiated between the first server instance and a first client, and wherein the first plurality of connection identifiers comprise different connection identifiers that the first server instance generates to identify a first plurality of connectionless data streams initiated between the first server instance and different clients; and

forward the data packet from the first server instance to a different second server instance that was initiated and running on the device before the first server instance in response to the connection identifier of the data packet being different than the first plurality of connection identifiers.

2. The device of claim 1 , wherein the processor-executable instructions further include processor-executable instructions to:

create a plurality of network sockets;

bind each of the plurality of network sockets to the port and to a different server instance; and

wherein the processor-executable instructions to distribute the data packet include processor-executable instructions to transfer the data packet to the first server instance using a particular network socket of the plurality of network sockets that is bound to the port and the first server instance.

3. The device of claim 2 , wherein the processor-executable instructions further include processor-executable instructions to:

create a domain socket between the first server instance and the second server instance; and

wherein the processor-executable instructions to forward the data packet include processor-executable instructions to transfer the data packet from the first server instance to the second server instance using the domain socket.

4. The device of claim 1 , wherein the processor-executable instructions further include processor-executable instructions to:

determine whether the data packet is an initial data packet for a new connectionless data stream based on one or more properties of the data packet; and

wherein the processor-executable instructions to distribute the data packet include processor-executable instructions to:

select the first server instance using a first distribution scheme in response to the data packet being an initial data packet for a new connectionless data stream; and

select the first server instance using a different second distribution scheme in response to the data packet being a data packet of an existing connectionless data stream of the first plurality of connectionless data streams.

5. The device of claim 4 , wherein the second distribution scheme uses the connection identifier of the data packet to select the first server instance, and wherein the first distribution scheme does not use the connection identifier of the data packet to select the first server instance.

6. The device of claim 1 , wherein the processor-executable instructions to process the data packet further include processor-executable instructions to:

provide a response data packet with additional data from the particular connectionless data stream.

7. The device of claim 1 , wherein the processor-executable instructions further include processor-executable instructions to:

determine, at the first server instance, whether the data packet is an initial data packet for a new connectionless data stream based on one or more properties of the data packet that are different than the connection identifier of the data packet; and

initiate a new connectionless data stream at the first server instance in response to determining that the data packet is the initial data packet for the new connectionless data stream based on the one or more properties.

8. The device of claim 7 , wherein the processor-executable instructions to initiate the new connectionless data stream include processor-executable instructions to:

generate a new connection identifier that is different than each of the first plurality of connection identifiers, and that is within a same first range values as the first plurality of connection identifiers; and

provide a response data packet comprising the new connection identifier in a source connection identifier field of the response data packet, and a different connection identifier, that is obtained from the source connection identifier field of the received data packet, in a destination connection identifier field of the response data packet.

9. The device of claim 1 , wherein the connection identifier of the data packet is a first connection identifier in a first range of connection identifiers, and wherein the processor-executable instructions further include processor-executable instructions to:

receive a second data packet comprising a different second connection identifier that is in a different second range of connection identifiers;

distribute the second data packet from the port to a third server instance based on the second connection identifier, and the third server instance initiating a second plurality of connectionless data streams with connection identifiers in the second range of connection identifiers.

10. The device of claim 1 , wherein the connectionless network protocol is based on the User Datagram Protocol (“UDP”).

11. The device of claim 1 , wherein the connection identifier is an identifier of the Quick Internet UDP Connections (“QUIC”) protocol and is used to uniquely identify a connectionless data stream from other connectionless data streams.

12. The device of claim 1 , wherein the processor-executable instructions further include processor-executable instructions to:

process, at the second server instance, the data packet in response to the data packet belonging to a connectionless data stream of a second plurality of connectionless data streams initiated with the second server instance as determined from the connection identifier matching to one of a second plurality of connection identifiers generated by the second server instance for the second plurality of connectionless data streams.

13. A method comprising:

receiving a data packet at a port that is associated with a connectionless networking protocol;

distributing the data packet from the port to a first server instance running on a device;

determining, at the first server instance, whether the data packet is an initial data packet for a new connectionless data stream based on one or more properties of the data packet that are different than a connection identifier of the data packet;

initiating a new connectionless data stream at the first server instance in response to determining that the data packet is the initial data packet for the new connectionless data stream based on the one or more properties; and

forwarding the data packet from the first server instance to a second server instance running on the device in response to the connection identifier of the data packet being different than a first plurality of connection identifiers that the first server instance generates to identify a first plurality of connectionless data streams initiated between the first server instance and different clients.

14. The method of claim 13 further comprising:

creating a plurality of network sockets;

binding each of the plurality of network sockets to the port and to a different server instance; and

wherein said distributing comprises transferring the data packet to the first server instance using a particular network socket of the plurality of network sockets that is bound to the port and the first server instance.

15. The method of claim 14 further comprising:

creating a domain socket between the first server instance and the second server instance; and

wherein said forwarding comprises transferring the data packet from the first server instance to the second server instance using the domain socket.

16. The method of claim 13 , wherein said distributing comprises:

selecting the first server instance from a plurality of server instances using a first distribution scheme in response to the data packet being the initial data packet for the new connectionless data stream; and

selecting the first server instance from the plurality of server instances using a different second distribution scheme in response to the data packet being a data packet of an existing connectionless data stream.

17. The method of claim 13 , wherein said initiating comprises:

generating a new connection identifier that is different than each of the first plurality of connection identifiers, and that is within a same first range values as the first plurality of connection identifiers; and

providing a response data packet comprising the new connection identifier in a source connection identifier field of the response data packet, and a different connection identifier, that is obtained from the source connection identifier field of the received data packet, in a destination connection identifier field of the response data packet.

18. The method of claim 13 further comprising:

processing, at the second server instance, the data packet in response to the connection identifier of the data packet matching to one of a second plurality of connection identifiers generated by the second server instance for a second plurality of connectionless data streams.

19. A method comprising:

receiving a first data packet at a particular port of a device, the first data packet comprising a first connection identifier that is in a first range of connection identifiers;

distributing the first data packet from the particular port to a first server instance running on the device based on the first connection identifier, and the first server instance initiating a first plurality of connectionless data streams with connection identifiers in the first range of connection identifiers;

processing the data packet at the first server instance in response to the first connection identifier matching to a particular connection identifier generated by the first server instance for one of the first plurality of connectionless data streams;

receiving a second data packet at the particular port, the second data packet comprising a different second connection identifier that is in a different second range of connection identifiers; and

distributing the second data packet from the particular port to a different second server instance running on the device based on the second connection identifier, and the second server instance initiating a second plurality of connectionless data streams with connection identifiers in the second range of connection identifiers.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2021
From: VERIZON DIGITAL MEDIA SERVICES INC.
To: VERIZON PATENT AND LICENSING INC.
Reel/Frame 057352/0057 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2019
From: RUIZ, SERGIO LEONARDO; SHIELL, DEREK
To: VERIZON DIGITAL MEDIA SERVICES INC.
Reel/Frame 048562/0460 →