Reliable event broadcaster with multiplexing and bandwidth control functions
First Claim
1. A method of allocating bandwidth of a communications system among multiple applications using the communications system to transfer data, comprising:
- receiving a value for an aggregate bandwidth BA available to a plurality of applications;
determining, by the communications system, a first bandwidth B1 for each of the plurality of applications, wherein the first bandwidth B1 for an application corresponds to a minimum guaranteed bandwidth for the application and determining the first bandwidth B1 for each of the plurality of applications is based at least in part on a first condition that the sum of the first bandwidth B1 for each of the plurality of applications does not exceed the aggregate bandwidth BA;
receiving a relative priority level for each of the plurality of applications, wherein the relative priority level has a value Pi selected from a plurality of priority levels, P<
i represents the priority levels less than Pi, and P<
i represents the priority levels greater than Pi;
determining, by the communications system, a second bandwidth B2 for each application, wherein the second bandwidth B2 corresponds to an expected bandwidth that is not less than the first bandwidth B1 and determining the second bandwidth B2 for each application is based at least in part on a second condition that, for each relative priority value Pi of the plurality of priority levels, the sum of the second bandwidth B2 for each application at the relative priority level Pi added to the sum of the first bandwidth B1 for each application at one or more of the relative priority levels P<
i does not exceed the aggregate bandwidth BA; and
allocating bandwidth to each of the plurality of applications in accordance with the determined first bandwidth B1 and the determined second bandwidth B2 for the application, the allocated bandwidth for the application being a function of at least the determined second bandwidth B2 and having a value different from the determined second bandwidth B2.
13 Assignments
0 Petitions
Accused Products
Abstract
Data may be transmitted in a broadcast mode to multiple devices operating in a network. Efficient utilization of bandwidth while providing a desired level of quality of service is enabled for the applications executing on the devices that utilize the broadcasted data. A set of bandwidth constraints may be utilized in combination with a set of heuristics and rules for the allocation and re-allocation of bandwidth among multiple applications in a manner that minimizes the impact on the quality of service metrics of importance to the affected applications when contention exists for the network resources. Quality of service provided to each application may be degraded smoothly, with certain priorities and guarantees being maintained. Event segmentation and reassembly functions for applications may be provided, as well as reliability mechanisms to increase the ability to provide data to client devices that have not been actively receiving for significant periods of time.
-
Citations
29 Claims
-
1. A method of allocating bandwidth of a communications system among multiple applications using the communications system to transfer data, comprising:
-
receiving a value for an aggregate bandwidth BA available to a plurality of applications; determining, by the communications system, a first bandwidth B1 for each of the plurality of applications, wherein the first bandwidth B1 for an application corresponds to a minimum guaranteed bandwidth for the application and determining the first bandwidth B1 for each of the plurality of applications is based at least in part on a first condition that the sum of the first bandwidth B1 for each of the plurality of applications does not exceed the aggregate bandwidth BA; receiving a relative priority level for each of the plurality of applications, wherein the relative priority level has a value Pi selected from a plurality of priority levels, P<
i represents the priority levels less than Pi, and P<
i represents the priority levels greater than Pi;determining, by the communications system, a second bandwidth B2 for each application, wherein the second bandwidth B2 corresponds to an expected bandwidth that is not less than the first bandwidth B1 and determining the second bandwidth B2 for each application is based at least in part on a second condition that, for each relative priority value Pi of the plurality of priority levels, the sum of the second bandwidth B2 for each application at the relative priority level Pi added to the sum of the first bandwidth B1 for each application at one or more of the relative priority levels P<
i does not exceed the aggregate bandwidth BA; andallocating bandwidth to each of the plurality of applications in accordance with the determined first bandwidth B1 and the determined second bandwidth B2 for the application, the allocated bandwidth for the application being a function of at least the determined second bandwidth B2 and having a value different from the determined second bandwidth B2. - View Dependent Claims (2, 3, 4, 5, 28, 29)
-
-
6. An apparatus for delivering data to a plurality of client devices over a communications network, comprising:
-
a registration element configured to register a plurality of applications, each application providing data to be delivered to the client devices; a bandwidth allocation element configured to, at least; determine a value for an aggregate bandwidth BA available to the plurality of applications; determine a first bandwidth B1 for each of the plurality of applications, wherein the first bandwidth B1 for an application corresponds to a minimum guaranteed bandwidth for the application and the sum of the first bandwidth B1 for each of the plurality of applications does not exceed the aggregate bandwidth BA; determine a relative priority level for each of the plurality of applications, wherein the relative priority level has a value Pi selected from a plurality of priority levels, P<
i represents the priority levels less than Pi, and P>
i represents the priority levels greater than Pi;determine a second bandwidth B2 for each application, wherein the second bandwidth B2 corresponds to an expected bandwidth that is not less than the first bandwidth B1 and such that, for each relative priority value Pi of the plurality of priority levels, the sum of the second bandwidth B2 for each application at the relative priority level Pi added to the sum of the first bandwidth B1 for each application at one of the relative priority levels P<
i does not exceed the aggregate bandwidth BA; andallocate bandwidth to each of the plurality of applications in accordance with the determined first bandwidth B1 and the determined second bandwidth B2 for the application, the allocated bandwidth for the application being a function of at least the determined second bandwidth B2 and having a value different from the determined second bandwidth B2; a communications network formatting element configured to format the provided data for transport over the communications network; and a communications network control element configured to provide the formatted data to the communications network for transport over the communications network. - View Dependent Claims (7, 8, 9, 10, 11)
-
-
12. An apparatus for receiving data transported over a communications network intended for an application executing on the apparatus, comprising:
-
a registration element configured to register the application; a data assembly element configured to process data received from the communications network, the data assembly element producing an event from one or more data packets; a cache configured to store the received data; and a scheduling element configured to determine when to provide the event to the application; wherein the application is one of a plurality of applications and the application is allocated a bandwidth by a bandwidth allocation element configured to, at least; determine a value for an aggregate bandwidth BA available to the plurality of applications; determine a first bandwidth B1 for each of the plurality of applications, wherein the first bandwidth B1 for an application corresponds to a minimum guaranteed bandwidth for the application and the sum of the first bandwidth B1 for each of the plurality of applications does not exceed the aggregate bandwidth BA; determine a relative priority level for each of the plurality of applications, wherein the relative priority level has a value Pi selected from a plurality of priority levels, P<
i represents the priority levels less than Pi, and P>
i represents the priority levels greater than Pi;determine a second bandwidth B2 for each application, wherein the second bandwidth B2 corresponds to an expected bandwidth that is not less than the first bandwidth B1 and such that, for each relative priority value Pi of the plurality of priority levels, the sum of the second bandwidth B2 for each application at the relative priority level Pi added to the sum of the first bandwidth B1 for each application at one of the relative priority levels P<
i does not exceed the aggregate bandwidth BA; andallocate bandwidth to each of the plurality of applications in accordance with the determined first bandwidth B1 and the determined second bandwidth B2 for the application, the allocated bandwidth for the application being a function of at least the determined second bandwidth B2 and having a value different from the determined second bandwidth B2. - View Dependent Claims (13, 14)
-
-
15. A system for the delivery of data over a communications network to a client application, comprising:
-
a server apparatus comprising; a registration element configured to register a server application, the server application providing data to be delivered to the client application; a bandwidth allocation element configured to, at least; determine a value for an aggregate bandwidth BA available to the plurality of applications; determine a first bandwidth B1 for each of the plurality of applications, wherein the first bandwidth B1 for an application corresponds to a minimum guaranteed bandwidth for the application and the sum of the first bandwidth B1 for each of the plurality of applications does not exceed the aggregate bandwidth BA; determine a relative priority level for each of the plurality of applications, wherein the relative priority level has a value Pi selected from a plurality of priority levels, P<
i represents the priority levels less than Pi, and P>
i represents the priority levels greater than Pi;determine a second bandwidth B2 for each application, wherein the second bandwidth B2 corresponds to an expected bandwidth that is not less than the first bandwidth B1 and such that, for each relative priority value Pi of the plurality of priority levels, the sum of the second bandwidth B2 for each application at the relative priority level Pi added to the sum of the first bandwidth B1 for each application at one of the relative priority levels P<
i does not exceed the aggregate bandwidth BA; andallocate bandwidth to each of the plurality of applications in accordance with the determined first bandwidth B1 and the determined second bandwidth B2 for the application, the allocated bandwidth for the application being a function of at least the determined second bandwidth B2 and having a value different from the determined second bandwidth B2; a communications network formatting element configured to format the provided data for transport over the communications network; and a communications network control element configured to provide the formatted data to the communications network for transport over the communications network; and a client device comprising; a registration element configured to register the client application; a data assembly element configured to process data received from the communications network, the data assembly element producing an event from one or more data packets; a cache configured to store the received data; and a scheduling element configured to determine when to provide the event to the client application. - View Dependent Claims (16, 17, 18, 19, 20)
-
-
21. A method of distributing data to multiple client devices over a communications network, comprising:
-
registering an application to provide data to the client devices, the application being one of a plurality of applications; allocating bandwidth of the communications network to the application including; determining a value for an aggregate bandwidth BA available to the plurality of applications; determining a first bandwidth B1 for each of the plurality of applications, wherein the first bandwidth B1 for an application corresponds to a minimum guaranteed bandwidth for the application and the sum of the first bandwidth B1 for each of the plurality of applications does not exceed the aggregate bandwidth BA; determining a relative priority level for each of the plurality of applications, wherein the relative priority level has a value Pi selected from a plurality of priority levels, P>
i represents the priority levels less than Pi, and P>
i represents the priority levels greater than Pi;determining a second bandwidth B2 for each application, wherein the second bandwidth B2 corresponds to an expected bandwidth that is not less than the first bandwidth B1 and such that, for each relative priority value Pi of the plurality of priority levels, the sum of the second bandwidth B2 for each application at the relative priority level Pi added to the sum of the first bandwidth B1 for each application at one of the relative priority levels P>
i does not exceed the aggregate bandwidth BA; andallocating bandwidth to each of the plurality of applications in accordance with the determined first bandwidth B1 and the determined second bandwidth B2 for the application, the allocated bandwidth for the application being a function of at least the determined second bandwidth B2 and having a value different from the determined second bandwidth B2; processing data provided by the application for transport over the communications network; transporting the processed data over the communications network; for each client device, at least; registering a client application with the client device; receiving the data after transport over the communications network; caching the data in a storage medium; scheduling delivery of the data; and providing the data to the client application. - View Dependent Claims (22, 23, 24, 25, 26, 27)
-
Specification