IP Library › Granted Patent US 11,863,457
Granted Patent B2
US 11,863,457 · App. 17/117,819 · Granted Jan 2, 2024

Time-sensitive data delivery in distributed computing systems

Inventor: Shachar Raindel (Redmond, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
H04L47/283H04L47/32H04L67/1095H04L69/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 11,863,457
App. No.
17/117,819
Filed
Dec 10, 2020
Granted
Jan 2, 2024
Kind
B2
Art Unit
2468
USPC
370/235
Abstract

Techniques of time-sensitive data delivery in distributed computing systems are disclosed herein. In one example, a server can disseminate the same information to multiple endpoints in a distributed computing system by transmitting multiple packets to the multiple endpoints hosted on additional servers in the distributed computing system. The multiple packets individually include a header field containing a delivery time before which the packets are not forwarded to corresponding final destinations and a payload containing data representing copies of information identical to one another destined to the multiple endpoints hosted on the additional servers.

Claims (99)

1. A method for time-sensitive data delivery in a distributed computing system having a plurality of servers interconnected by a computer network, the method comprising:

receiving, at multiple servers in the distributed computing system, packets from a source host, the packets individually having:

a header with a first header field containing data representing a delivery time and a second header field containing data representing a network address identifying a virtual machine or container hosted on the multiple servers; and

a payload containing data representing copies of information destined to the identified virtual machines or containers hosted at the multiple servers;

in response to receiving the packets, at the multiple servers hosting the identified virtual machines or containers:

inspecting the data in the header field to identify the delivery time;

performing a comparison of the identified delivery time to a system time at the multiple servers hosting the identified virtual machines or containers;

based on the performed comparison, storing the received packets in a buffer at the multiple servers hosting the identified virtual machines or containers without allowing the received packets to be accessed by the virtual machine or container identified by the network address in the second header field prior to the identified delivery time being expired, thereby preventing the virtual machine or container hosted at a first of the multiple servers hosting the identified virtual machines or containers from accessing the information in the payload of the packets earlier than another virtual machine or container hosted at a second of the multiple servers hosting the identified virtual machines or containers; and

allowing the packets or the payload of the packets to be accessed by the identified virtual machines or containers after expiration of the delivery time, thereby providing time-sensitive data delivery of the copies of the same information in the payload to the identified virtual machines or containers.

2. The method of claim 1 wherein performing the comparison includes:

performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers to determine whether the delivery time has expired; and

in response to determining that the delivery time has expired,

immediately forwarding the packets to the virtual machine or container identified by the network address in the second header field; and

transmitting data representing a report indicating that the packets have arrived after the delivery time has expired.

3. The method of claim 1 wherein performing the comparison includes:

performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers to determine whether the delivery time has expired; and

in response to determining that the delivery time has expired,

immediately forwarding the packets to the virtual machine or container identified by the network address in the second header field; and

transmitting, via the computer network, data representing a request to increase an estimated latency of transmitting the packets from the source host to the multiple servers hosting the identified virtual machines or containers.

4. The method of claim 1 wherein performing the comparison includes:

performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers to determine whether the delivery time has expired; and

in response to determining that the delivery time has not expired,

calculating a difference between the delivery time and a time of arrival based on the system time at the each of the servers;

determining whether the calculated difference between the time of arrival and the delivery time exceeds a delay threshold; and

in response to determining that the calculated difference exceeds the delay threshold, transmitting a notification indicating excessive delay between a time of receiving the packets and the delivery time.

5. The method of claim 1 wherein performing the comparison includes:

performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers to determine whether the delivery time has expired; and

in response to determining that the delivery time has not expired,

calculating a difference between the delivery time and a time of arrival based on the system time at the multiple servers hosting the identified virtual machines or containers; and

transmitting, via the computer network, the calculated difference between the delivery time and the time of arrival.

6. The method of claim 1 wherein storing the received packets in the buffer includes storing the received packets in at least one of:

a network switch interconnected to the multiple servers hosting the identified virtual machines or containers;

a network interface card on the multiple servers hosting the identified virtual machines or containers;

a field programmable gate array coupled to the network interface card on the multiple servers hosting the identified virtual machines or containers;

a hypervisor on the multiple servers hosting the identified virtual machines or containers; or

an operating system on the multiple servers hosting the identified virtual machines or containers.

7. The method of claim 1 wherein performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers includes performing the comparison of the identified delivery time to a local system time at the multiple servers hosting the identified virtual machines or containers or a platform system time at the distributed computing system.

8. The method of claim 1 wherein:

performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers includes performing the comparison of the identified delivery time to a local system time at the multiple servers hosting the identified virtual machines or containers; and

the method further includes synchronizing the local system time at the multiple servers hosting the identified virtual machines or containers with a remote reference clock.

9. A computing device connectable to other computing devices in a distributed computing system via a computer network, comprising:

a processor; and

a memory containing instructions executable by the processor to provide an operating system and one or more applications executing on the computing device, the memory also including additional instructions executable by the processor to cause the computing device to:

receive, via the computer network, a packet from another computing device in the distributed computing system, the received packet including:

a header with a first header field containing data representing a delivery time and a second header field containing data representing a network address identifying one of the applications executing on the computing device; and

a payload containing data representing a copy of information transmitted to the identified application and to other applications executing on other computing devices in the distributed computing system; and

inspect the data in the header field of the received packet to identify the delivery time;

perform a comparison of the identified delivery time to a system time at the computing device; and

based on the performed comparison, temporarily store the received packet in a buffer without allowing access to the received packet to the identified application identified by the network address in the second header field prior to the identified delivery time being expired, thereby preventing the identified application from accessing the information in the payload of the packet prior to the identified delivery time being expired; and

allowing the packets or the payload of the packets to be accessed by the identified application after expiration of the delivery time, thereby providing time-sensitive data delivery of the copies of the same information in the payload to the identified application.

10. The computing device of claim 9 wherein to perform the comparison includes to:

determine whether the delivery time has expired; and

in response to determining that the delivery time has expired,

immediately allow the identified application to access to the packet; and

transmit data representing a report indicating that the packet has arrived after the delivery time has expired.

11. The computing device of claim 9 wherein to perform the comparison includes to:

determine whether the delivery time has expired; and

in response to determining that the delivery time has expired,

immediately allow the identified application to access the packet; and

transmit data representing a request to increase an estimated latency of transmitting the packet from the second computing device to the computing device.

12. The computing device of claim 9 wherein to perform the comparison includes to:

determine whether the delivery time has expired; and

in response to determining that the delivery time has not expired,

calculate a difference between the delivery time and a time of arrival based on the system time at the computing device;

determine whether the calculated difference between the time of arrival and the delivery time exceeds a delay threshold; and

in response to determining that the calculated difference exceeds the delay threshold, transmit a notification indicating excessive delay between a time of receiving the packet and the delivery time.

13. The computing device of claim 9 wherein:

to perform the comparison of the identified delivery time to the system time includes performing the comparison of the identified delivery time to a local system time at the computing device; and

the memory includes further instructions executable by the processor to cause the computing device to synchronize the local system time at the computing device with other computing devices in the distributed computing system.

14. A computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by one or more processors of a computing device, cause the computing device to perform operations comprising:

receiving, at multiple servers in a distributed computing system having a plurality of servers interconnected by a computer network, packets from a source host, the packets individually having:

a header with a first header field containing data representing a delivery time and a second header field containing data representing a network address identifying a virtual machine or container hosted on the multiple servers; and

a payload containing data representing copies of information destined to the identified virtual machines or containers hosted at the multiple servers;

in response to receiving the packets, at the multiple servers hosting the identified virtual machines or containers:

inspecting the data in the header field to identify the delivery time;

performing a comparison of the identified delivery time to a system time at the servers hosting the identified virtual machines or containers;

based on the performed comparison, storing the received packets in a buffer at the multiple servers hosting the identified virtual machines or containers without allowing the received packets to be accessed by the virtual machine or container identified by the network address in the second header field prior to the identified delivery time being expired, thereby preventing the virtual machine or container hosted at a first of the multiple servers hosting the identified virtual machines or containers from accessing the information in the payload of the packets earlier than another virtual machine or container hosted at a second of the multiple servers hosting the identified virtual machines or containers; and

allowing the packets or the payload of the packets to be accessed by the identified virtual machines or containers after expiration of the delivery time, thereby providing time-sensitive data delivery of the copies of the same information in the payload to the identified virtual machines or containers.

15. The computer-readable storage medium of claim 14 wherein performing the comparison includes:

performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers to determine whether the delivery time has expired; and

in response to determining that the delivery time has expired,

immediately forwarding the packets to the virtual machine or container identified by the network address in the second header field; and

transmitting data representing a report indicating that the packets have arrived after the delivery time has expired.

16. The computer-readable storage medium of claim 14 wherein performing the comparison includes:

performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers to determine whether the delivery time has expired; and

in response to determining that the delivery time has expired,

immediately forwarding the packets to the virtual machine or container identified by the network address in the second header field; and

transmitting, via the computer network, data representing a request to increase an estimated latency of transmitting the packets from the source host to the multiple servers hosting the identified virtual machines or containers.

17. The computer-readable storage medium of claim 14 wherein performing the comparison includes:

performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers to determine whether the delivery time has expired; and

in response to determining that the delivery time has not expired,

calculating a difference between the delivery time and a time of arrival based on the system time at the multiple servers hosting the identified virtual machines or containers;

determining whether the calculated difference between the time of arrival and the delivery time exceeds a delay threshold; and

in response to determining that the calculated difference exceeds the delay threshold, transmitting a notification indicating excessive delay between a time of receiving the packets and the delivery time.

18. The computer-readable storage medium of claim 14 wherein performing the comparison includes:

performing the comparison of the identified delivery time to the system time at the multiple servers hosting the identified virtual machines or containers to determine whether the delivery time has expired; and

in response to determining that the delivery time has not expired,

calculating a difference between the delivery time and a time of arrival based on the system time at the multiple servers hosting the identified virtual machines or containers; and

transmitting, via the computer network, the calculated difference between the delivery time and the time of arrival.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2020
From: RAINDEL, SHACHAR
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 054607/0298 →
Continuity (1)
Related Publication 20220191148A1 · Jun 16, 2022