SYSTEMS AND METHODS FOR MULTI-PERSPECTIVE OPTIMIZATION OF DATA TRANSFERS IN HETEROGENEOUS NETWORKS SUCH AS THE INTERNET
First Claim
Patent Images
1. A system for optimizing the utilization of heterogeneous network resources in which data sets are divided into a plurality of multiple subsets that are stored in multiple parts of the system which includes:
- (a) a plurality of end-user client computers capable of requesting data from multiple resources on a network and reassembling pieces of data received in response to the requested data into a complete data set;
(b) a plurality of classes of network resources to service data transfers to said end-user client computers;
(c) one or more network coordination servers that coordinate access of end-user client computers to said plurality of classes of network resources;
(d) one or more sources of network information which is accessible to one or more network coordination servers by making requests for information to the source that are formatted to be compatible with the source;
(e) wherein said plurality of classes of network resources include;
(i) source servers controlled by the service provider on which data is stored for transmission to end users; and
(ii) peer resources which are storage, or network transfer, or computational resources, or a combination thereof, provided by said end-user client computers.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are described for optimizing network data transfers using multiple classes of network resources and network intelligence gathered and integrated by a multi-perspective network optimizer so as to maximize the performance, scalability and commercial controllability and minimize the cost of network data transfers in heterogeneous networks such as the internet.
-
Citations
61 Claims
-
1. A system for optimizing the utilization of heterogeneous network resources in which data sets are divided into a plurality of multiple subsets that are stored in multiple parts of the system which includes:
-
(a) a plurality of end-user client computers capable of requesting data from multiple resources on a network and reassembling pieces of data received in response to the requested data into a complete data set;
(b) a plurality of classes of network resources to service data transfers to said end-user client computers;
(c) one or more network coordination servers that coordinate access of end-user client computers to said plurality of classes of network resources;
(d) one or more sources of network information which is accessible to one or more network coordination servers by making requests for information to the source that are formatted to be compatible with the source;
(e) wherein said plurality of classes of network resources include;
(i) source servers controlled by the service provider on which data is stored for transmission to end users; and
(ii) peer resources which are storage, or network transfer, or computational resources, or a combination thereof, provided by said end-user client computers. - View Dependent Claims (3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 57, 58, 59, 60, 61)
-
-
2. A system for optimizing the utilization of heterogeneous network resources in which data sets are divided into a plurality of subsets that are stored in multiple parts of the system infrastructure which includes:
-
(a) a plurality of end-user client computers capable of requesting data from multiple resources on a network and reassembling subsets of data received in response to a data request into a complete data set;
(b) a plurality of classes of network resources to service data transfers to end-user client computers;
(c) one or more network coordination servers that coordinate access of end-user client computers to said plurality of classes of network resources;
(d) one or more source of network information which is accessible to one or more network coordination servers by making requests for information to the source that are formatted to be compatible with the source;
wherein said plurality of classes of network resources include;
(i) source servers controlled by a service provider on which data is stored for transmission to end users (ii) peer resources which are storage, or network transfer, or computational resources, or a combination thereof, provided by end-users'"'"' client computers;
(iii) network infrastructure servers which are not controlled by the service provider, but which may be utilized to optimize the overall network by servicing storage and retrieval requests, where such requests are constrained to abide by rules, interfaces and protocols of the network infrastructure servers. - View Dependent Claims (4, 27, 28, 29, 30)
-
-
31. A method for optimizing the utilization of heterogeneous network resources in the transmission of data sets to end-user client computers whereby,
(a) dividing a data set into a plurality of subsets that are stored on a plurality of classes of network resources, including, at least, a class of one or more source servers under the control of a service provider and a class consisting of a plurality of end-user client computers, (b) generating a metadata description of the relation of the subsets to a complete data set and storing said metadata description on a coordination server, including the addresses for retrieval of the subsets and an address for the metadata description, (c) providing to an outside application such as a browser or media player or other application running on an end-user client computer that wishes to retrieve the data set, the address for the metadata description, such that, when the address is invoked by the outside application, client software running on the end-user client computer directs the request to the coordination server, which returns the metadata description and a set of recommended addresses for retrieval of subsets of the data set to the requesting client computer, (d) requesting data subsets by the client computer according to the protocol type of the resource to which the request is made to a plurality of classes of network resources, and retrieving the data subsets to the end-user client computer, (e) re-assembling the data subsets and transferring them to the media player or other application according to the protocol and/or data format required by the receiving media player or other player or other application, upon request from a media player or other application running on the end-user client computer, (e) storing the data sub-sets in persistent storage on the end-user client computer, and (g) upon request from another resource in the network, including another end-user client computer, retrieving and transmitting requested data sub-sets to the requesting resource, including another end-user client computer, according to the protocol of the request.
-
32. A method for optimizing the utilization of heterogeneous network resources in the transmission of data sets to end-user client computers comprising,
(a) dividing a data set into a plurality of subsets that are stored on a plurality of classes of network resources, including, at least, a class of one or more source servers under the control of a service provider and a class consisting of one or more network infrastructure servers not under the control of the service provider and optionally a class consisting of peer resources on end-user client computers, where (b) requesting storage and retrieval of data sub-sets on said servers will be executed if the requests conform to the protocol and data formats of the server, notwithstanding that the sources in the class of network infrastructure servers are not under the control of the service provider, so that protocol and format routines may be executed on a coordination server and the data sub-sets stored on the network infrastructure servers are available to retrieval requests, (c) generating and storing on a coordination server, a metadata description of the relation of the sub-sets to the complete data set including the addresses for retrieval of the sub-sets, the protocol and data format requirements of each server and an address for the metadata description, (c) providing the address for the metadata description to an outside application such as a browser or media player or other application running on a end-user client computer that wishes to retrieve the data set, (e) directing the request to said coordination server by client software running on the end-user client computer when the address is invoked by the outside application, which coordination server in response to the request, returns the metadata description and a set of recommended addresses for retrieval of subsets of the data set to the requesting client computer, forming requests to source server class resources through its client software, and network infrastructure class resources and optionally peer resource class resources for the data subsets according to the protocol type of the source to which the request is made, and retrieving the returned data subsets to the end-user client computer, (g) re-assembling the data-subsets and transferring them to the media player or other application according to the protocol and/or data format required by the receiving media player or other application, upon request from a media player or other application running on the end-user client computer, (h) storing the data subsets in persistent storage on the end-user client computer, and (i) upon request from another resource in the network, including another end-user client computer, retrieving and transmitting requested data sub-sets to the requesting resource, including another end-user client computer, according to the protocol of the request.
-
32-1. A method for optimizing the utilization of heterogeneous network resources in the transmission of data sets to end-user client computers, comprising:
-
(a) dividing a data set into a plurality of subsets that are stored on a plurality of source server resources, (b) generating a metadata description of the relation of the sub sets to the complete data set and storing said metadata description on a coordination server, including addresses for retrieval of the subsets and an address for the metadata description, (c) providing the address for the metadata description to an outside application such as a browser or media player or other application running on a end-user client computer that wishes to retrieve the data set, (d) directing the request to the coordination server, by means of client software running on the end-user computer, when the address is invoked by the outside application, wherein said coordination server returns the metadata description and a set of recommended addresses for retrieval of subsets of the data set to the requesting client computer, (e) forming requests to a plurality of source servers for the data subsets according to the protocol type of the source server to which the request is made through the requesting client computer'"'"'s client software, and retrieving the data subsets to the end-user client computer, (f) re-assembling the data-subsets and transferring them to the media player or other application according to the protocol and/or data format required by the receiving media player or other application.
-
-
50. The method of claim 50, wherein the cacheing proxy server is an HTTP cache proxy server, and said coordination server shapes all suggested resource requests so that the request:
-
(a) will include and properly set all HTTP directives necessary for allowing cacheing of a data set or data sub-set, including, for example, but not limited to, a Date or ETag header and Expires header, and, (b) does not include directives that would prevent cacheing of a data set or subset, including, for example but not limited to, no cache, no store, private, max-age=0, s-maxage-0, and (c) does not, include strings in the request URI that would indicate dynamic content or other class of content that would typically be blocked from cacheing by the proxy cache, including, for example, but not limited to the strings ?, &
, cgi-bin, php, pl, isp, jsp, py(d) limits the size of data subsets to a size that typical HTTP proxy caches will not reject as too large for cache efficiency and reject for cacheing, - View Dependent Claims (51, 52, 53, 54, 55, 56)
-
Specification