US2018027035A1PendingUtilityA1
Redirection apparatus and method
Assignee: ORBITAL MULTI MEDIA HOLDINGS CORPPriority: Feb 3, 2010Filed: Oct 3, 2017Published: Jan 25, 2018
Est. expiryFeb 3, 2030(~3.5 yrs left)· nominal 20-yr term from priority
Inventors:Manh Hung Peter Do
H04L 65/4084H04L 65/80H04N 21/23116H04N 21/23103H04N 7/17309H04L 65/612G06F 9/5083H04L 67/1001H04L 65/65H04L 65/75
40
PatentIndex Score
0
Cited by
0
References
0
Claims
Abstract
Described embodiments are directed to methods and apparatus for redirecting a client device to a selected streaming server in response to receiving a request for content. The streaming server to which the client is redirected can be selected based on one or more criteria such as streaming server loads (e.g. connection loads and processing loads) and content storage location, using a data structure stored at the redirection server.
Claims
exact text as granted — not AI-modified1 . A redirection server for redirecting a client device to one of a plurality of streaming servers of a system configured to store content in a plurality of hierarchical storage layers, the redirection server comprising:
a memory storing a data structure for storing and associating streaming server identifiers with storage layer identifiers and identifiers of the content residing in the plurality of hierarchical storage layers, wherein a higher storage layer of the plurality of hierarchical storage layers identifies a storage location providing faster content access times than the content access times provided by a storage location identified by a lower storage layer of the plurality of hierarchical storage layers; a selector configured to select a streaming server from among the plurality of streaming servers using said data structure, in response to receiving a request for content from the client device, wherein the selector is operable to: determine the highest storage layer of the plurality of hierarchical storage layers from which the requested content is available and select an available streaming server of the plurality of streaming servers having the requested content in said highest storage layer of the plurality of hierarchical storage layers; wherein if none of the available streaming servers of the plurality of streaming servers are associated with the highest storage layer of the plurality of hierarchical storage layers, then the selector is further operable to determine the next lowest storage layer of the plurality of hierarchical storage layers and to select an available streaming server of the plurality of streaming servers having the requested content in said next lowest layer of the plurality of hierarchical storage layers; and a transceiver configured to receive said request and to send to the client device a reply including the identifier of the selected streaming server of the plurality of streaming servers.
2 . A redirection server according to claim 1 , wherein the selector is configured to instruct the selected streaming server of the plurality of streaming servers to fetch the requested content from a storage server of the system, in response to determining that said highest storage layer of the plurality of hierarchical storage layers from which the requested content is available is not associated with one of the plurality of streaming servers.
3 . A redirection server according to claim 1 , wherein the apparatus is configured to receive from each of the plurality of streaming servers a message including information indicating the content currently being stored.
4 . A redirection server according to claim 3 , wherein said information further includes information indicating the storage layers of the plurality of hierarchical storage layers corresponding to said content if the streaming server from which the message is received is associated with more than one storage layer of the plurality of hierarchical storage layers.
5 . A redirection server according to claim 3 , wherein the apparatus is configured to update the data structure based on the information included in said message.
6 . A redirection server according to claim 3 , wherein said message is received periodically.
7 . A redirection server according to claim 1 , wherein the plurality of hierarchical storage layers comprises a first storage layer having the fastest content access times among the plurality of hierarchical storage layers, a second storage layer having the slowest content access times among the plurality of hierarchical storage layers, and at least one third storage layer having content access times intermediate to the first and second storage layers.
8 . A redirection server according to claim 1 , wherein the data structure is further configured to store and associate the streaming server identifiers with data representing streaming server loads for each of the plurality of streaming servers, and wherein said determining includes identifying one or more streaming servers of the plurality of streaming servers having capacity to handle said request.
9 . A redirection server according to claim 8 , wherein said data structure is further configured to store and associate the content identifiers with file type identifiers, each of the file type identifiers corresponding to one of a plurality of different streaming server loads.
10 . A redirection server according to claim 8 , wherein said data representing streaming server loads comprises at least one of processing loads and connection loads.
11 . A method of redirecting a client device to one of a plurality of streaming servers of a system configured to store content in a plurality of hierarchical storage layers, the method being implemented in a redirection server and comprising the steps of:
storing and associating, in a memory storing a data structure on the redirection server, streaming server identifiers, storage layer identifiers, and identifiers of the content residing in the plurality of hierarchical storage layers, wherein a higher storage layer of the plurality of hierarchical storage layers identifies a storage location providing faster content access times than the content access times provided by a lower storage layer of the plurality of hierarchical storage layers; receiving a request for content from the client device; selecting a streaming server from among the plurality of streaming servers using said data structure in response to receiving said request, the selecting including determining the highest storage layer of the plurality of hierarchical storage layers from which the requested content is available and selecting an available streaming server of the plurality of streaming servers having the requested content in said highest storage layer of the plurality of hierarchical storage layers; wherein if none of the available streaming servers of the plurality of streaming servers are associated with the highest storage layer of the plurality of hierarchical storage layers, then the selecting further includes determining the next lowest storage layer of the plurality of hierarchical storage layers and selecting an available streaming server of the plurality of streaming servers having the requested content in said next lowest layer of the plurality of hierarchical storage layers; and sending to the client device a reply including the identifier of the selected streaming server of the plurality of streaming servers.
12 . A method according to claim 11 , further comprising instructing the selected streaming server of the plurality of streaming servers to fetch the requested content from a storage server of the system, in response to determining that said highest content storage layer of the plurality of hierarchical storage layers from which the requested content is available is not associated with one of the plurality of streaming servers.
13 . A method according to claim 11 , further comprising receiving from each of the plurality of streaming servers a message including information indicating the content currently being stored.
14 . A method according to claim 13 , wherein said information further includes information indicating the storage layers of the plurality of hierarchical storage layers corresponding to said content if the streaming server from which the message is received is associated with more than one storage layer of the plurality of hierarchical storage layers.
15 . A method according to claim 13 , further comprising updating the data structure based on the information included in said message.
16 . A method according to claim 13 , wherein said message is received periodically.
17 . A method according to claim 11 , wherein the plurality of hierarchical storage layers comprises a first storage layer having the fastest content access times among the plurality of hierarchical storage layers, a second storage layer having the slowest content access times among the plurality of hierarchical storage layers, and at least one third storage layer having content access times intermediate to the first and second storage layers.
18 . A method according to claim 11 , further comprising storing and associating the streaming server identifiers with data representing streaming server loads for each of the plurality of streaming servers, and wherein said determining includes identifying one or more streaming servers of the plurality of streaming servers having capacity to handle said request.
19 . A method according to claim 18 , further comprising storing and associating the content identifiers with file type identifiers in said data structure, each of the file type identifiers corresponding to a different streaming server load.
20 . A method according to claim 18 , wherein said data representing streaming server loads comprises at least one of processing loads and connection loads.
21 . A redirection server for redirecting a client device to a streaming server of a system including a plurality of streaming servers configured to store content, the redirection server comprising:
a monitoring agent for periodically monitoring the plurality of streaming servers; a memory storing a data structure for storing and associating streaming server identifiers with data representing streaming server loads including a connection load and a processing load for each of the plurality of streaming servers, said connection load being a number of open connections being supported by each streaming server of the plurality of streaming servers for respective content and said processing load being CPU usage for each streaming server of the plurality of streaming servers, wherein said data comprises a current load and a load limit for each of said streaming servers of the plurality of streaming servers; a selector configured to select a streaming server from among the plurality of streaming servers using said data structure, in response to receiving from the client device a request that identifies the content and a type of said content, said type corresponding to one of a plurality of different streaming server loads, wherein the selecting includes identifying one or more streaming servers of the plurality of streaming servers storing the content identified in the client request, and selecting the streaming server of the plurality of streaming servers among said one or more streaming servers of the plurality of streaming servers having capacity to handle said request by:
identifying the streaming server of the plurality of streaming servers having a lowest connection load that is less than a predetermined connection load threshold, said connection load being determined from periodic feedback information received by the redirection server from the identified streaming server of the plurality of streaming servers, or by estimating from redirects issued by the redirection server, or by a combination of both;
wherein, if the processing load for said identified streaming server of the plurality of streaming servers is less than a predetermined processing load threshold, selecting the streaming server of the plurality of streaming servers to stream the content;
a transceiver configured to receive said request and to send to the client device a reply including the identifier of the selected streaming server of the plurality of streaming servers; the redirection server being configured to update the data representing streaming server load associated with the selected streaming server identifier stored in the data structure, in response to selecting the streaming server of the plurality of streaming servers.
22 . A redirection server according to claim 21 , wherein said type is identified by a type identifier that is specific to said type.
23 . A redirection server according to claim 21 , wherein said type identifier is associated with one or more of screen aspect ratio and video bit rate.
24 . A redirection server according to claim 21 , wherein said data structure is further configured to store and associate said streaming server identifiers with identifiers of the content residing at the plurality of streaming servers, said selector further configured to identify any streaming server of the plurality of streaming servers storing the requested content.
25 . A redirection server according to claim 21 , wherein the redirection server is configured to receive from each of the plurality of streaming servers a message including information indicating the current load, and to update the corresponding current load in said data structure based on said information.
26 . A redirection server according to claim 21 , wherein said connection load limit is based on a benchmarked load.
27 . A method of redirecting a client device to a streaming server of a system including a plurality of streaming servers configured to store content, the method being implemented in a redirection server and comprising the steps of:
periodically monitoring the plurality of streaming servers; storing and associating streaming server identifiers with data representing streaming server loads including a connection load and a processing load for each of the plurality of streaming servers in a data structure in a redirection server, said connection load being a number of open connections being supported by each streaming server of the plurality of streaming servers for respective content and said processing load being CPU usage for each streaming server of the plurality of streaming servers, wherein said data comprises a current load and a load limit for each of said streaming servers of the plurality of streaming servers; receiving from the client device a request that identifies content and a type of said content, said type corresponding to one of a plurality of different streaming server loads; selecting a streaming server from among the plurality of streaming servers using said data structure, including identifying one or more streaming servers of the plurality of streaming servers storing the content identified in the client request, and selecting the streaming server of the plurality of streaming servers among said one or more streaming servers of the plurality of streaming servers having capacity to handle said request by:
identifying the streaming server of the plurality of streaming servers having a lowest connection load that is less than a predetermined connection load threshold, said connection load being determined from periodic feedback information received by the redirection server from the identified streaming server of the plurality of streaming servers, or by estimating from redirects issued by the redirection server, or by a combination of both;
wherein, if the processing load for said identified streaming server of the plurality of streaming servers is less than a predetermined processing load threshold, selecting the streaming server of the plurality of streaming servers to stream the content;
sending to the client device a reply including the identifier of the selected streaming server of the plurality of streaming servers; and updating the data representing streaming server load associated with the selected streaming server identifier stored in the data structure, in response to selecting the streaming server of the plurality of streaming servers.
28 . A method according to claim 27 , wherein said type is identified by a type identifier that is specific to said type.
29 . A method according to claim 27 , wherein said type identifier is associated with one or more of screen aspect ratio and video bit rate.
30 . A method according to claim 27 , wherein said data structure is further configured to store and associate said streaming server identifiers with identifiers of the content residing at the plurality of streaming servers, said selecting further including identifying any streaming server of the plurality of streaming servers storing the requested content.
31 . A method according to claim 27 , further comprising receiving from each of the plurality of streaming servers a message including information indicating the current load, and updating the corresponding current connection data in said data structure based on said information.
32 . A method according to claim 27 , wherein said connection load limit is based on a benchmarked load.
33 . A redirection server according to claim 21 , wherein said data structure is configured to store and associate cached content identifiers with said streaming server identifiers, and wherein said selector is configured to select the streaming server identifier further based on said cached content identifiers.
34 . A redirection server according to claim 21 , wherein said selector is configured to update said data representing said streaming server loads according to a calculated load value that is a function of processing load and connection load.
35 . A redirection server according to claim 34 , wherein the function comprises a processing load component, a connection load component, and a connection load to processing load ratio component.
36 . A redirection server according to claim 34 , wherein the processing load and connection load are weighted such that each load type is assigned a relative importance.
37 . A redirection server according to claim 21 , including a content mapper configured to map said request for content to one or more streaming server identifiers, from which the streaming server identifier is selected.
38 . A redirection server according to claim 21 , wherein said data structure is configured to store and associate client identifiers with selected streaming server identifiers.
39 . A method according to claim 27 , further comprising:
storing and associating cached content identifiers with said streaming server identifiers; and wherein said selecting is further based on said cached content identifiers.
40 . A method according to claim 27 , wherein said updating comprises calculating a load value that is a function of processing load and connection load.
41 . A method according to claim 40 , wherein the function comprises a processing load component, a connection load component, and a connection load to processing load ratio component.
42 . A method according to claim 41 , further comprising weighting the processing load and connection load such that each load type is assigned a relative importance.
43 . A method according to claim 27 , further comprising mapping said request for content to one or more streaming server identifiers, from which said selecting is performed.
44 . A method according to claim 27 , further comprising storing and associating client identifiers with selected streaming server identifiers.
45 . A system comprising:
a plurality of streaming servers each configured to retrieve and/or store content for streaming to client devices; and a redirection server for redirecting the client devices to the plurality of streaming servers in accordance with claim 1 .
46 . A system according to claim 45 , comprising at least two redirection servers for redirecting the client devices to the plurality of streaming servers in accordance with claim 1 , the at least two redirection servers sharing an IP address.
47 . A system comprising:
a plurality of first apparatuses for redirecting client devices to a plurality of streaming servers in accordance with the redirection servers of claim 1 ; and a second apparatus for redirecting the client devices to one of said plurality of first apparatuses.
48 . A non-transitory carrier medium carrying computer readable code for configuring a computer as the redirection server of claim 1 .
49 . A non-transitory carrier medium carrying computer readable code for controlling a computer to carry out the method of claim 11 .
50 . A system of claim 47 wherein the second apparatus is configured to redirect said request to a first apparatus among the plurality of first apparatuses that is geographically located closest to the client device sending the request.
51 . A system of claim 50 wherein said second apparatus is configured to determine the difference between an IP address of the client device and an IP address of each of the plurality of first apparatuses and identify a lowest absolute value.
52 . A system comprising:
a plurality of streaming servers each configured to retrieve and/or store content for streaming to client devices; and a redirection server for redirecting the client devices to the plurality of streaming servers in accordance with claim 21 .
53 . A system according to claim 52 , comprising at least two redirection servers for redirecting the client devices to the plurality of streaming servers in accordance with claim 21 , the at least two redirection servers sharing an IP address.
54 . A system comprising:
a plurality of first apparatuses for redirecting client devices to a plurality of streaming servers in accordance with the redirection servers of claim 21 ; and a second apparatus for redirecting the client devices to one of said plurality of first apparatuses.
55 . A system according to claim 54 wherein the second apparatus is configured to redirect said request to a first apparatus among the plurality of first apparatuses that is geographically located closes to the client device sending the request.
56 . A system according to claim 55 wherein said second apparatus is configured to determine the difference between an IP address of the client device and an IP address of each of the plurality of first apparatuses and identify a lowest absolute value.
57 . A non-transitory carrier medium carrying computer readable code for configuring a computer as the redirection server of claim 21 .
58 . A non-transitory carrier medium carrying computer readable code for controlling a computer to carry out the method of claim 27 .Join the waitlist — get patent alerts
Track US2018027035A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.