Claims
- 1) A method of distributing a client among a first trusted edge server and a second trusted edge server, wherein a trusted edge server is a server, in a communications path between an originating server and a connected client, that can be trusted not to release information prior to an appropriate time, the method comprising:
determining a first latency between the first trusted edge server and the client; comparing the first latency to a second latency; and transferring the client to the second trusted edge server if the second latency is lower than the first latency.
- 2) The method of claim 1, wherein the step of determining the first latency further comprises:
estimating the first latency using a connection history between the first trusted edge server and the client.
- 3) The method of claim 1, wherein the step of determining the first latency further comprises:
estimating the first latency using network functions to test a first connection between the first trusted edge server and the client.
- 4) The method of claim 1, wherein the second latency is a latency between the second trusted edge server and the client.
- 5) The method of claim 1, wherein the second latency is a minimum theoretical latency.
- 6) The method of claim 1, further comprising:
obtaining a release time, wherein the release time is an earliest time at which an event is intended to be delivered to the client; obtaining a completion time, wherein the completion time is a latest time at which the event can arrive at the client; calculating a send time as a function of the first latency and the second latency; and sending the event to the client at the send time.
- 7) A method of distributing an event from a trusted edge server to a client, wherein the trusted edge server is a server, in a communications path between an originating server and a connected client, that can be trusted not to release information prior to an appropriate time, the method comprising:
obtaining a release time, wherein the release time is an earliest time at which the event is intended to be delivered to the client; obtaining a completion time, wherein the completion time is a latest time at which the event can arrive at the client; determining a first latency between the trusted edge server and a first client; calculating a first send time as a function of the first latency; and sending the event from the trusted edge server to the first client at the first send time.
- 8) The method of claim 7, wherein the step of determining the first latency further comprises:
estimating the first latency using a connection history between the trusted edge server and the first client.
- 9) The method of claim 7, wherein the step of determining the first latency further comprises:
estimating the first latency using network functions to test a connection between the trusted edge server and the first client.
- 10) The method of claim 7, wherein the step of calculating the first send time further comprises:
estimating a first delivery time using the first latency; and calculating the first send time as the release time minus the first delivery time.
- 11) The method of claim 7, wherein the step of calculating the first send time further comprises:
estimating a first delivery time using the first latency; and calculating the first send time to be prior to the completion time minus the first delivery time.
- 12) The method of claim 7, wherein the event is distributed from the trusted edge server to a second client, the second client having a second latency, wherein the calculating the first send time as a function of the first latency includes calculating the first send time as a function of the second latency, the method further comprising:
sending the event from the trusted edge server to the second client at the first send time.
- 13) The method of claim 12, wherein the step of calculating the first send time further comprises:
estimating a first delivery time as a function of the first latency; estimating a second delivery time as a function of the second latency; calculating the first send time to be equal to the release time minus the first delivery time if the second delivery time is greater than the first delivery time; and calculating the first send time to be equal to the release time minus the second delivery time if the first delivery time is greater than the second delivery time.
- 14) The method of claim 12, wherein the step of calculating the first send time further comprises:
estimating a first delivery time as a function of the first latency; estimating a second delivery time as a function of the second latency; calculating the first send time to be prior to the completion time minus the first delivery time if the first delivery time is greater than the second delivery time; and calculating the first send time to be prior to the completion time minus the second delivery time if the second delivery time is greater than the first delivery time.
- 15) The method of claim 7 further comprising:
determining a second latency between the trusted edge server and a second client; calculating a second send time as a function of the second latency; and sending the event from the trusted edge server to the second client at the second send time.
- 16) The method of claim 15, wherein the originating server distributes the event to the trusted edge server, the method further comprising:
determining an originating latency between the originating server and the trusted edge server; calculating an originating send time as a function of the first send time, the second send time, and the originating latency; and sending the event from the originating server to the trusted edge server at the originating send time.
- 17) The method of claim 7, wherein the originating server distributes the event to the trusted edge server, the method further comprising:
determining an originating latency between the originating server and the trusted edge server; calculating an originating send time as a function of the first send time and the originating latency; and sending the event from the originating server to the trusted edge server at the originating send time.
- 18) The method of claim 7, wherein:
the determining the first latency includes:
determining a transfer latency; comparing the first latency to the transfer latency; and transferring the first client to a second trusted edge server if the transfer latency is lower than the first latency; the calculating the first send time includes determining the first send time as a function of a second latency between the second trusted edge server and the first client; and the sending the event includes sending the event from the second trusted edge server to the first client at the first send time if the transfer latency is lower than the first latency.
- 19) The method of claim 18, wherein the transfer latency is a latency between the second trusted edge server and the first client.
- 20) The method of claim 18, wherein the transfer latency is a minimum theoretical latency.
- 21) A method of distributing an event from a trusted edge server to a client, wherein the trusted edge server is a server, in a communications path between an originating server and a connected client, that can be trusted not to release information prior to an appropriate time, the method comprising:
obtaining a release time, wherein the release time is an earliest time at which the event is intended to be delivered to the client; obtaining a completion time, wherein the completion time is a latest time at which the event can arrive at the client; determining a first latency between a first trusted edge server and a first client communicating with the first trusted edge server; comparing the first latency to a first transfer latency; transferring the first client if the first transfer latency is lower than the first latency; calculating a first send time as a function of the first latency and the first transfer latency; and sending the event to the first client at the first send time.
- 22) The method of claim 21 wherein the first transfer latency is a latency between a second trusted edge server and the first client; and wherein the transferring the first client if the first transfer latency is lower than the first latency includes transferring the first client to the second trusted edge server.
- 23) The method of claim 21, wherein the event is distributed from a second trusted edge server to a second client, and wherein the calculating the first send time as a function of the first latency and the first transfer latency includes calculating the first send time as a function of a second latency and a second transfer latency, the method further comprising:
determining the second latency between the second trusted edge server and the second client; comparing the second latency to the second transfer latency; transferring the second client if the second transfer latency is lower than the second latency; and sending the event to the second client at the first send time.
- 24) The method of claim 23, wherein the second trusted edge server is the first trusted edge server.
- 25) The method of claim 23, wherein the step of calculating the first send time further comprises:
estimating a first delivery time as a function of the first latency and the first transfer latency; estimating a second delivery time as a function of the second latency and the second transfer latency; calculating the first send time to be prior to the completion time minus the first delivery time if the first delivery time is greater than the second delivery time; and calculating the first send time to be prior to the completion time minus the second delivery time if the second delivery time is greater than the first delivery time.
- 26) The method of claim 21, wherein the event is distributed from a second trusted edge server to a second client, the method further comprising:
determining a second latency between the second trusted edge server and the second client; comparing the second latency to a second transfer latency; transferring the second client if the second transfer latency is lower than the second latency; calculating a second send time as a function of the second latency and the second transfer latency; and sending the event to the second client at the second send time.
- 27) A computer-readable medium, having computer-executable instructions for distributing a client among a first trusted edge server and a second trusted edge server, wherein a trusted edge server is a server, in a communications path between an originating server and a connected client, that can be trusted not to release information prior to an appropriate time, the computer-executable instructions performing steps comprising:
determining a first latency between the first trusted edge server and the client; comparing the first latency to a second latency; and transferring the client to the second trusted edge server if the second latency is lower than the first latency.
- 28) The computer-readable medium of claim 27, wherein the second latency is a latency between the second trusted edge server and the client.
- 29) The computer-readable medium of claim 27, wherein the second latency is a minimum theoretical latency.
- 30) A computer-readable medium, having computer-executable instructions for distributing an event from a trusted edge server to a client, wherein the trusted edge server is a server, in a communications path between an originating server and a connected client, that can be trusted not to release information prior to an appropriate time, the computer-executable instructions performing steps comprising:
obtaining a release time, wherein the release time is an earliest time at which the event is intended to be delivered to the client; obtaining a completion time, wherein the completion time is a latest time at which the event can arrive at the client; determining a first latency between the trusted edge server and a first client; calculating a first send time as a function of the first latency; and sending the event from the trusted edge server to the first client at the first send time.
- 31) The computer-readable medium of claim 30, wherein the step of calculating the first send time further comprises:
estimating a first delivery time using the first latency; and calculating the first send time to be prior to the completion time minus the first delivery time.
- 32) The computer-readable medium of claim 30, wherein the calculating the first send time as a function of the first latency includes calculating the first send time as a function of a second latency between the trusted edge server and a second client, the computer-readable medium having further computer-executable instructions for performing steps comprising:
sending the event from the trusted edge server to the second client at the first send time.
- 33) The computer-readable medium of claim 32, wherein the step of calculating the first send time further comprises:
estimating a first delivery time as a function of the first latency; estimating a second delivery time as a function of the second latency; calculating the first send time to be prior to the completion time minus the first delivery time if the first delivery time is greater than the second delivery time; and calculating the first send time to be prior to the completion time minus the second delivery time if the second delivery time is greater than the first delivery time.
- 34) The computer-readable medium of claim 30, having further computer-executable instructions for performing steps comprising:
determining a second latency between the trusted edge server and a second client; calculating a second send time as a function of the second latency; and sending the event from the trusted edge server to the second client at the second send time.
- 35) A computer-readable medium, having computer-executable instructions for distributing an event from a trusted edge server to a client, wherein the trusted edge server is a server, in a communications path between an originating server and a connected client, that can be trusted not to release information prior to an appropriate time, the computer-executable instructions performing steps comprising:
obtaining a release time, wherein the release time is an earliest time at which the event is intended to be delivered to the client; obtaining a completion time, wherein the completion time is a latest time at which the event can arrive at the client; determining a first latency between a first trusted edge server and a first client communicating with the first trusted edge server; comparing the first latency to a first transfer latency; transferring the first client if the first transfer latency is lower than the first latency; calculating a first send time as a function of the first latency and the first transfer latency; and sending the event to the first client at the first send time.
- 36) The computer-readable medium of claim 35, having further computer-executable instructions for distributing the event from a second trusted edge server to a second client, wherein the calculating the first send time as a function of the first latency and the first transfer latency includes calculating the first send time as a function of a second latency and a second transfer latency, the further computer-executable instructions performing steps comprising:
determining the second latency between a second trusted edge server and a second client; comparing the second latency to a second transfer latency; transferring the second client if the second transfer latency is lower than the second latency; and sending the event to the second client at the first send time.
- 37) The computer-readable medium of claim 35, wherein the event is distributed from a second trusted edge server to a second client, the second client having a second latency, the computer-executable instructions performing steps further comprising:
comparing the second latency to a second transfer latency; transferring the second client if the second transfer latency is lower than the second latency; calculating a second send time as a function of the second latency and the second transfer latency; and sending the event to the second client at the second send time.
- 38) A system for network distribution to minimize latencies, the system comprising:
an originating server; a first trusted edge server having connected to it a client; a second trusted edge server, wherein a trusted edge server is a server, in a communications path between the originating server and a connected client, that can be trusted not to release information prior to an appropriate time; and computer-executable instructions for performing steps comprising:
determining a first latency between the first trusted edge server and the client; comparing the first latency to a second latency; and transferring the client to the second trusted edge server if the second latency is lower than the first latency.
- 39) The system of claim 38, wherein the second latency is a latency between the second trusted edge server and the client.
- 40) The system of claim 38, wherein the second latency is a minimum theoretical latency.
- 41) The system of claim 38, wherein the computer-executable instructions perform further steps comprising:
obtaining a release time, wherein the release time is an earliest time at which an event is intended to be delivered to the client; obtaining a completion time, wherein the completion time is a latest time at which the event can arrive at the client; calculating a send time as a function of the first latency and the second latency; and sending the event to the client at the send time.
- 42) A system for efficient event distribution, the system comprising:
an originating server; a trusted edge server having connected to it a first client, wherein the trusted edge server is a server, in a communications path between the originating server and a connected client, that can be trusted not to release information prior to an appropriate time; and computer-executable instructions for performing steps comprising:
obtaining a release time, wherein the release time is an earliest time at which the event is intended to be delivered to the first client; obtaining a completion time, wherein the completion time is a latest time at which the event can arrive at the first client; determining a first latency between the trusted edge server and the first client; calculating a first send time as a function of the first latency; and sending the event from the trusted edge server to the first client at the first send time.
- 43) The system of claim 42, wherein the step of calculating the first send time further comprises:
estimating a first delivery time using the first latency; and calculating the first send time to be prior to the completion time minus the first delivery time.
- 44) The system of claim 42, wherein the step of calculating the first send time as a function of the first latency includes calculating the first send time as a function of a second latency, the system further comprising:
comprising computer-executable instructions for performing steps comprising:
sending the event from the trusted edge server to a second client, the second client having a second latency, at the first send time.
- 45) The system of claim 44 wherein the step of calculating the first send time further comprises:
estimating a first delivery time as a function of the first latency; estimating a second delivery time as a function of the second latency; calculating the first send time to be prior to the completion time minus the first delivery time if the first delivery time is greater than the second delivery time; and calculating the first send time to be prior to the completion time minus the second delivery time if the second delivery time is greater than the first delivery time.
- 46) The system of claim 42, further comprising:
computer-executable instructions for performing steps comprising:
determining a second latency between the trusted edge server and a second client; calculating a second send time as a function of the second latency; and sending the event from the trusted edge server to the second client at the second send time.
- 47) The system of claim 46, further comprising:
comprising computer-executable instructions for performing steps comprising:
determining an originating latency between the originating server and the trusted edge server; calculating an originating send time as a function of the first send time, the second send time, and the originating latency; and sending the event from the originating server to the trusted edge server at the originating send time.
- 48) The system of claim 42, further comprising:
computer-executable instructions for performing steps comprising:
determining an originating latency between the originating server and the trusted edge server; calculating an originating send time as a function of the first send time and the originating latency; and sending the event from the originating server to the trusted edge server at the originating send time.
- 49) The system of claim 42, wherein:
the computer-executable instructions for determining the first latency include computer-executable instructions for performing steps comprising:
determining a transfer latency; comparing the first latency to a transfer latency; and transferring the first client to a second trusted edge server if the transfer latency is lower than the first latency; the computer-executable instructions for calculating the first send time include computer-executable instructions for determining the first send time as a function of a second latency between the second trusted edge server and the first client; and the computer-executable instructions for sending the event include computer-executable instructions for sending the event from the second trusted edge server to the first client at the first send time if the transfer latency is lower than the first latency.
- 50) The system of claim 49, wherein the transfer latency is a latency between the second trusted edge server and the first client.
- 51) The system of claim 49, wherein the transfer latency is a minimum theoretical latency.
- 52) A system for efficient event distribution, the system comprising:
a first trusted edge server having connected to it a first client; a second trusted edge server, wherein a trusted edge server is a server, in a communications path between an originating server and a connected client, that can be trusted not to release information prior to an appropriate time; and computer-executable instructions for performing steps comprising:
obtaining a release time, wherein the release time is an earliest time at which the event is intended to be delivered to the first client; obtaining a completion time, wherein the completion time is a latest time at which the event can arrive at the first client; determining a first latency between the first trusted edge server and the first client; comparing the first latency to a first transfer latency; transferring the first client if the first transfer latency is lower than the first latency; calculating a first send time as a function of the first latency and the first transfer latency; and sending the event to the first client at the first send time.
- 53) The system of claim 52, wherein the first transfer latency is a latency between the second trusted edge server and the first client, and wherein the computer-executable instructions for transferring the first client if the first transfer latency is lower than the first latency include computer-executable instructions for transferring the first client to the second trusted edge server.
- 54) The system of claim 52, wherein the computer-executable instructions for calculating the first send time as a function of the first latency and the first transfer latency include computer-executable instructions for calculating the first send time as a function of a second latency and a second transfer latency, the system further comprising:
computer-executable instructions for performing steps comprising:
determining the second latency between the second trusted edge server and a second client; comparing the second latency to the second transfer latency; transferring the second client if the second transfer latency is lower than the second latency; and sending the event to the second client at the first send time.
- 55) The system of claim 54, wherein the second trusted edge server is the first trusted edge server.
- 56) The system of claim 54, wherein the computer-executable instructions for calculating the first send time further comprise computer-executable instructions for performing steps comprising:
estimating a first delivery time as a function of the first latency and the first transfer latency; estimating a second delivery time as a function of the second latency and the second transfer latency; calculating the first send time to be prior to the completion time minus the first delivery time if the first delivery time is greater than the second delivery time; and calculating the second send time to be prior to the completion time minus the second delivery time if the second delivery time is greater than the first delivery time.
- 57) The system of claim 52, further comprising:
computer-executable instructions for performing steps comprising:
determining a second latency between the second trusted edge server and a second client; comparing the second latency to a second transfer latency; transferring the second client if the second transfer latency is lower than the second latency; calculating a second send time as a function of the second latency and the second transfer latency; and sending the event to the second client at the second send time.
- 58) A method of distributing a client among a first trusted edge server and a second trusted edge server, wherein a trusted edge server is a server, in a communications path between an originating server and a connected client, that can be trusted not to release information prior to an appropriate time, the method comprising:
a step for determining a first latency between the first trusted edge server and the client; a step for comparing the first latency to a second latency; and a step for transferring the client to the second trusted edge server if the second latency is lower than the first latency.
- 59) A method of distributing an event from a trusted edge server to a client, wherein the trusted edge server is a server, in a communications path between an originating server and a connected client, that can be trusted not to release information prior to an appropriate time, the method comprising:
a step for obtaining a release time, wherein the release time is an earliest time at which the event is intended to be delivered to the client; a step for obtaining a completion time, wherein the completion time is a latest time at which the event can arrive at the client; a step for determining a first latency between the trusted edge server and a first client; a step for calculating a first send time as a function of the first latency; and a step for sending the event from the trusted edge server to the first client at the first send time.
- 60) The method of claim 59, wherein the step for calculating the first send time further comprises:
a step for estimating a first delivery time using the first latency; and a step for calculating the first send time to be prior to the completion time minus the first delivery time.
- 61) The method of claim 59 further comprising:
a step for determining a second latency between the trusted edge server and a second client; a step for calculating a second send time as a function of the second latency; and a step for sending the event from the trusted edge server to the second client at the second send time.
- 62) The method of claim 59, wherein:
the step for determining the first latency includes:
a step for determining a transfer latency; a step for comparing the first latency to the transfer latency; and a step for transferring the first client to a second trusted edge server if the transfer latency is lower than the first latency; the step for calculating the first send time includes a step for determining the first send time as a function of a second latency between the second trusted edge server and the first client; and the step for sending the event includes a step for sending the event from the second trusted edge server to the first client at the first send time if the transfer latency is lower than the first latency.
- 63) A trusted edge server comprising:
means for obtaining a release time and a completion time, wherein the release time is an earliest time at which the event is intended to be delivered to a client, and the completion time is a latest time at which the event can arrive at the client; means for determining a first latency between the trusted edge server and a first client; means for calculating a first send time as a function of the first latency; and means for sending the event from the trusted edge server to the first client at the first send time.
- 64) The trusted edge server of claim 63, wherein the means for calculating the first send time as a function of the first latency include means for calculating the first send time as a function of a second latency between the trusted edge server and a second client, and wherein the means for sending the event from the trusted edge server to the first client at the first send time include means for sending the event from the trusted edge server to the second client at the first send time.
- 65) The trusted edge server of claim 64, wherein the means for calculating the first send time further comprise:
means for estimating a first delivery time as a function of the first latency, and a second delivery time as a function of the second latency; means for calculating the first send time to be prior to the completion time minus the first delivery time if the first delivery time is greater than the second delivery time; and means for calculating the first send time to be prior to the completion time minus the second delivery time if the second delivery time is greater than the first delivery time.
- 66) A trusted edge server comprising:
means for obtaining a release time and a completion time, wherein the release time is an earliest time at which the event is intended to be delivered to a client, and the completion time is a latest time at which the event can arrive at the client; means for determining a first latency between a first trusted edge server and a first client communicating with the first trusted edge server; means for comparing the first latency to a first transfer latency; means for transferring the first client if the first transfer latency is lower than the first latency; means for calculating a first send time as a function of the first latency and the first transfer latency; and means for sending the event to the first client at the first send time.
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This application is related to U.S. application Ser. No. ______ , entitled “Time-Window-Constrained Multicast For Future Delivery Multicast” (Attorney Docket Number 213946) filed concurrently with the present application, and which is incorporated herein by reference in its entirety.