WO2013149982A1 - Server system for streaming media content to a client - Google Patents

Server system for streaming media content to a client Download PDF

Info

Publication number
WO2013149982A1
WO2013149982A1 PCT/EP2013/056857 EP2013056857W WO2013149982A1 WO 2013149982 A1 WO2013149982 A1 WO 2013149982A1 EP 2013056857 W EP2013056857 W EP 2013056857W WO 2013149982 A1 WO2013149982 A1 WO 2013149982A1
Authority
WO
WIPO (PCT)
Prior art keywords
streaming
server
servers
routing
client
Prior art date
Application number
PCT/EP2013/056857
Other languages
French (fr)
Inventor
Jaron VIETOR
Bob Christoffel DIJS
Alfred Marie DIJS
Original Assignee
Rassat Investment B.V.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Rassat Investment B.V. filed Critical Rassat Investment B.V.
Publication of WO2013149982A1 publication Critical patent/WO2013149982A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23103Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion using load balancing strategies, e.g. by placing or distributing content on different disks, different memories or different servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23116Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving data replication, e.g. over plural servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests

Definitions

  • the invention relates to a server system for streaming media content to a client via a communications network, a streaming server configured for use in the server system and a routing server configured for use in the server system.
  • the invention further relates to a method of controlling the server system for streaming media content to the client and a computer program product comprising instructions for causing a server system to perform the method.
  • Streaming media content typically involves a client, such as a personal computer, set top box or Smartphone, issuing a media request to a streaming server.
  • the streaming server sends the media content to the client via the communication network as a sequence of data elements made available over time.
  • the streaming of media content offers various advantages, such as enabling users to get the media content which they want, at a time when they want it. In particular, it has become possible to deliver media content 'on demand' in addition to delivering traditional 'live' broadcast media content.
  • a client needs to know whom to send its media request within the communication network.
  • the client needs to obtain an address within the communication network such that the media request can be sent via the communication network to said address.
  • the address may be a domain name or Internet Protocol (IP) address.
  • IP Internet Protocol
  • the address may be predetermined in the client.
  • a set top box may be configured to contact a predetermined address of the Video On Demand (VOD) provider who provided the set top box to the user.
  • VOD Video On Demand
  • the address within the communication network may be of a streaming server.
  • the streaming server may be unable to cope with said requests, e.g., due to the streaming server reaching its maximum communication bandwidth and/or processor load.
  • the client may be provided with a domain name and may be arranged for contacting a domain name server to obtain an address associated with the domain name.
  • the domain name server may be arranged for, in response, providing addresses of different streaming servers to subsequent clients in order to distribute clients over the plurality of streaming servers. Hence, even though clients may be provided with a same predetermined domain name, they may be assigned to different streaming servers.
  • a routing server may be employed which comprises media location information that indicates which media content is stored on which of the plurality streaming servers. Upon receiving a media request from the client, the routing server may then redirect the media request to a particular one of the plurality streaming servers which comprises the requested media content by matching the media request to the media location information.
  • a drawback of the known systems of streaming media content to a client is that they are not flexible enough to cope with sudden changes affecting the demand of media content by the clients and/or the supply of media content by the streaming servers.
  • One of the objects of the invention is to provide a server system which is more flexible to better match demand of media content to supply of media content.
  • a first aspect of the invention provides a server system for streaming media content to a client via a communications network, comprising:
  • a plurality of streaming servers each comprising respective media content and being arranged for accepting a media request from the client for streaming the media content to the client;
  • At least one routing server arranged for i) receiving the media request from the client and ii) redirecting the media request to a particular one of the plurality of streaming servers based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client;
  • each of the plurality of streaming servers is arranged for receiving configuration instructions from one of the at least one routing server for, upon execution of the configuration instructions, establishing a configuration of the respective one of the plurality of streaming servers;
  • the at least one routing server is arranged for i) issuing the
  • configuration instructions to at least one of the plurality of streaming servers, and ii) establishing the suitability of the at least one of the plurality of streaming servers for streaming the media content to the client based on the configuration instructions.
  • a further aspect of the invention provides a streaming server configured for use in the aforementioned server system.
  • a further aspect of the invention provides a routing server configured for use in the aforementioned server system.
  • a server system in accordance with the first aspect of the invention comprises a plurality of streaming servers.
  • Each of the streaming servers comprises media content, which may be different or the same as the media content on the other streaming servers.
  • Each of the streaming servers is arranged for, in response to a request from a client, streaming the requested media content to the client via the communication network.
  • the server system further comprises at least one routing server.
  • the routing server initially receives the media request from the client, e.g., due to the client being initially provided with the address of the routing server.
  • the routing server is arranged for redirecting the media request to a particular one of the plurality of streaming servers.
  • the routing server makes use of data which expresses a suitability of the particular one of the plurality of streaming servers for streaming the requested media content to the client, i.e., is indicative of whether the streaming server can supply the media content to the client.
  • the routing server redirects the media request accordingly, e.g., by forwarding the media request to the particular one of the plurality of streaming servers, or by providing the client with an address of the particular streaming server for enabling the client to resend the media request directly to said streaming server.
  • each of the plurality of streaming servers is arranged for receiving configuration instructions from a routing server within the server system.
  • the configuration instructions instruct the streaming server receiving the configuration instructions to establish a certain streaming configuration, e.g., establish certain streaming allowances or limitations, set streaming protocols, etc.
  • the at least one routing server is arranged for issuing the configuration instructions to a streaming server within the server system. Having issued the configuration instructions, the routing server then generates data which expresses the suitability of the streaming server for streaming the media content to the client. The data is generated based on the configuration instructions and subsequently used in the redirecting of the media request to a particular one of the plurality of streaming servers.
  • the above measures provide a server system in which a client does not directly send an initial media request to a streaming server, but rather in which at least one routing server is employed which initially receives the media request and redirects the media request to a particular one of the plurality of streaming servers.
  • the routing server assumes the role of media request router within the server system, enabling the server system to distribute media requests of clients over a plurality of streaming servers.
  • the routing server assumes the role of streaming server manager within the server system by virtue of the routing server being arranged for issuing configuration instructions to a streaming server, and each of the plurality of streaming servers being arranged for executing issued configuration instructions.
  • the routing server can automatically configure the streaming server, without a need for a user to manually configure the streaming server, e.g., using a management console.
  • the configuration instructions enable the routing server to directly determine the current, up-to-date configuration of the streaming server by virtue of the configuration instructions actually causing the streaming server to establish said configuration.
  • the routing server can better predict how suitable the streaming server is compared to, e.g., using a suitability which is solely based on whether a streaming server comprises the media content requested by the client.
  • the present invention is partially based on the recognition that the routing of media requests is improved by basing it on the current, up-to-date configuration of streaming servers, since such configuration may greatly affect the streaming capabilities and thus streaming performance of a streaming server. Moreover, the inventors have recognized that although it may be possible to synchronize information on the configuration of the streaming server to the routing server, various problems are associated with such synchronization.
  • the routing server can dynamically route media requests based on the current, up-to-date configuration of the streaming servers.
  • the server system is able to better cope with sudden changes affecting the demand of media content by the clients and/or the supply of media content by the streaming servers.
  • each of the plurality of streaming servers is arranged for receiving transfer instructions from the routing server for, upon execution of the transfer instructions, transferring media content to and/or from another one of the plurality of streaming servers; and the at least one routing server is arranged for i) issuing the transfer instructions to the streaming server, and ii) establishing the suitability of the streaming server for streaming the media content to the client further based on the transfer instructions.
  • the routing server is arranged for, in addition to managing the configuration of the streaming server, also managing its media content by virtue of issuing the transfer instructions to the streaming server.
  • the routing server instead of having to obtain media location information that indicates which media content is stored on which of the plurality streaming servers, the routing server issues transfer instructions which actually cause the streaming server to receive and subsequently store the media content.
  • the routing server has up-to-date knowledge on the media content of the streaming server.
  • the server system is able to better cope with sudden changes affecting the demand of media content by the clients and/or the supply of media content by the streaming servers.
  • it is not needed to otherwise synchronize media location information from the streaming server to the routing server.
  • each of the plurality of streaming servers is arranged for providing utilization information indicative of its degree of utilization to the routing server; and the at least one routing server is arranged for i) receiving the utilization information from the streaming server, and ii) generating the configuration instructions and/or the transfer instructions based on the utilization information.
  • Utilization information is indicative of a streaming server's ability to handle the current and further media requests from clients.
  • the routing server is able to update a streaming server's configuration and/or media content in accordance with this ability, at the same time, adapt the routing of media requests to the updated configuration and/or media content.
  • the routing server may, when the communication bandwidth of a streaming server is near its limit, issue transfer instructions to the streaming server to instruct the streaming server to transfer a portion of its media content to a further streaming server. Having issued said instructions, the routing server may then route media requests corresponding to the portion of the media content to the further streaming server, thereby reducing the communication bandwidth of the earlier streaming server.
  • the at least one routing server is arranged for generating the configuration instructions and/or the transfer instructions further based on the media request.
  • the media request as part of a plurality of recent media requests, is indicative of the current demand of media content by the clients.
  • the configuration instructions and/or the transfer instructions allow the routing server to manage the supply of media content by the streaming servers.
  • the server system is able to better match the current demand of media content to the supply of media content.
  • sudden changes in the demand of media content can be immediately observed and used to both manage the supply of media content and to adapt the routing of media requests accordingly.
  • the at least one routing server is a plurality of routing servers, each of the plurality of routing servers being arranged for communicating with other ones of the plurality of routing servers; and wherein each of the plurality of streaming servers is arranged for receiving the configuration instructions from an associated one of the plurality of routing servers; and each of the plurality of routing servers is arranged for i) establishing the suitability of the associated one of the plurality of streaming servers, and ii) sharing data indicative of said suitability with the other ones of the plurality of routing servers.
  • a server system in which all of the plurality of routing servers are mutually connected, and in which each of plurality of streaming servers is associated with one of the plurality of routing servers. All of the routing servers share the suitability of the associated streaming server amongst all of the plurality of routing servers.
  • each routing server is aware of the suitability of each of the plurality of streaming servers for streaming the media content to the client, without having to establish the suitability of each of the plurality of streaming servers on its own.
  • the media requests of clients can be distributed over multiple routing servers in order to reduce the communication bandwidth and/or processor load per routing server.
  • the capacity of the server system of routing media requests of clients is increased.
  • the plurality of routing servers is arranged for, when one of the plurality of routing servers experiences a failure, establishing, for the associated one of the plurality of streaming servers, another one of the plurality of routing servers as the associated one of the plurality of routing servers.
  • the routing of media requests is less susceptible to failures.
  • the plurality of routing servers exhibits self-redundancy, i.e., internally compensates for failures.
  • the server system provides more reliable streaming of media content to a client.
  • said establishing is performed by each of the plurality of routing servers using a same selection algorithm for establishing a same one of the plurality of routing servers as the associated one of the plurality of routing servers.
  • the server system further comprises an assignment server for, in response to a request from the client, assigning one of the plurality of routing servers to the client based on an assignment scheme, the assignment scheme being arranged for distributing subsequent clients over the plurality of routing servers.
  • a media request of a client is routed to a streaming server by, firstly, the assignment server assigning one of the plurality of routing servers to the client, and secondly, the routing server assigning one of the plurality of streaming servers to the client, the latter by redirecting the media request of the client to said streaming server.
  • clients are first distributed over the plurality of routing servers and subsequently further distributed over the plurality of streaming servers.
  • the communication bandwidth and/or processor load is evenly distributed over the plurality of routing servers and evenly distributed over the plurality of streaming servers.
  • each of the plurality of streaming servers is arranged for, when the respective associated one of the plurality of routing servers experiences a failure, using the assignment server for establishing another one of the plurality of routing servers as the associated one of the plurality of routing servers.
  • the same mechanism that is used to distribute clients over the plurality of routing servers is used to assign a new routing server to a streaming server of which the earlier associated routing server experienced a failure.
  • each of the plurality of streaming servers is arranged for, during an initialization phase, establishing the respective associated one of the plurality of routing servers using the assignment server.
  • the same mechanism that is used to distribute clients over the plurality of routing servers is used to assign a routing server to a streaming server during an initialization phase of the streaming server.
  • the association between a routing server and a streaming server is established automatically.
  • the plurality of streaming servers are distributed evenly over the plurality of routing servers.
  • the utilization information is indicative of at least one of: a number of clients which are streaming media content, a communication bandwidth, and a server load, of the respective streaming server.
  • a further aspect of the invention provides a method of controlling a server system for streaming media content to a client via a communications network, the server system comprising:
  • a plurality of streaming servers each comprising respective media content and being arranged for accepting a media request from the client for streaming the media content to the client;
  • At least one routing server arranged for i) receiving the media request from the client and ii) redirecting the media request to a particular one of the plurality of streaming servers based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client;
  • each of the plurality of streaming servers i) receiving configuration instructions from one of the at least one routing server, and ii) executing the configuration instructions for establishing a configuration of the respective one of the plurality of streaming servers;
  • j issuing the configuration instructions to at least one of the plurality of streaming servers, and jj) establishing the suitability of the at least one of the plurality of streaming servers for streaming the media content to the client based on the configuration instructions.
  • a further aspect of the invention provides a computer program product comprising instructions for causing a server system to perform the aforementioned method.
  • Fig. 1 shows a server system according to the present invention, and a client sending a media request to a routing server of the server system;
  • Fig. 2 shows a method according to the present invention;
  • Fig. 3 shows a computer readable medium comprising a computer program product according to the present invention.
  • Fig. 4 shows a server system according to the present invention, comprising a plurality of routing servers arranged for communicating with each other and an assignment server for assigning one of the plurality of routing servers to the client.
  • Fig 1 shows a server system 100 for streaming media content 210, 212 to a client 200 via a communications network. It is noted that the communication network is not explicitly depicted in Fig. 1 , but rather enables the depicted communication within the server system 100 and the communication between the client 200 and the server system 100.
  • the server system 100 comprises a plurality of streaming servers 400-402.
  • Fig. 1 shows two streaming servers, i.e., a first streaming server 400 and a second streaming server 402.
  • Each of the streaming servers 400-402 comprises media content.
  • the media content stored on each of the streaming servers 400-402 may be the same, different, or in part the same and in part different.
  • Each of the streaming servers 400-402 is arranged for accepting a media request from the client 200 via the
  • a particular streaming server 400-402 may comprise more media content than is requested by the client 200, i.e., only a portion of the media content may be requested by the client 200 for streaming.
  • media content refers to visually and/or audibly perceptible content such as video, images, audio, etc, which is encoded in a digital form.
  • the media content may or may not be stored in a compressed form, i.e., stored such that the media content needs less storage space compared to its original form.
  • a streaming server may comprise movies, television shows, music albums, etc.
  • the server system 100 comprises at least one routing server 300.
  • Fig. 1 shows precisely one routing server 300.
  • the routing server 300 is arranged for receiving the media request 202 from the client 200.
  • the client 200 may be arranged for initially sending the media request 202 to the routing server 300, e.g., by being initially provided with an address of the routing server 300.
  • the routing server 300 is arranged for redirecting the media request 204-206 to a particular one of the plurality of streaming servers 400-402.
  • the redirecting, i.e., to which of the plurality of streaming servers 400-402 the media request is to be direct, is based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client.
  • routing server or “the routing server” is described to be configured or arranged in a certain manner in the aforementioned and following description, this may also apply to other routing servers in case the server system comprises more than one routing servers. For example, all of the plurality of routing servers may be configured or arranged accordingly. Similarly, if “a streaming server” or “the streaming server” is described to be configured or arranged in a certain manner, others or all of the plurality of streaming servers may also be configured or arranged accordingly.
  • each of the plurality of streaming servers 400 is arranged for receiving configuration instructions 312 from one of the routing servers of the server system 100.
  • Fig. 1 shows the first streaming server 400 being arranged for receiving configuration instructions 312 from the routing server 300.
  • the configuration instructions 312 cause the streaming server 400 to establish a particular configuration upon receiving and executing the configuration instructions 312. It is noted that the configuration instructions may be sent in any suitable form to the streaming server 400.
  • establishing a configuration refers to setting or modifying at least one configurable aspect of the streaming of the streaming server 400.
  • the configuration instructions 312 may set or modify streaming allowances or limitations of the streaming server 400, e.g., bandwidth limits such as a limit of the current communication bandwidth to a certain number of bytes per second, data usage limits such as a limit to an overall number of bytes transmitted, or geographical limits such as a limit to which geographical locations streaming is allowed and to which geographical locations is disallowed.
  • the configuration instructions 312 may specify streaming protocols to be activated on or supported by the streaming server 400, availability of media content for streaming, streaming quality, streaming formats, etc.
  • the configurable aspects of the streaming may apply to the streaming server 400 as a whole, or to parts of the media content individually, e.g., to a specific movie. It will be appreciated that the configuration instructions are not limited to the aforementioned aspects of the streaming, and that many more aspects are within reach of the skilled person.
  • the streaming server 400 may establish its configuration under exclusive control of the configuration instructions issued by the routing server 300. This may be due to the streaming server 400 not comprising internal mechanisms for setting or modifying the configurable aspect(s) of the streaming of the streaming server 400.
  • the second streaming server 402 may also be configured for receiving configuration instructions from the routing server 300.
  • the configuration instructions issued by the routing server 300 to the second streaming server 402 may be the same, different, or in part the same and in part different, from those issued by the routing server 300 to the first streaming server 400.
  • the routing server 300 may individually configure streaming servers, resulting in the configuration instructions being at least in part different between the streaming servers.
  • the routing server 300 is arranged for issuing the configuration instructions to a streaming server 400 within the server system 100.
  • Fig. 1 shows the routing server 300 issuing the configuration instructions to the first streaming server 400.
  • the routing server 300 is able to configure the first streaming server 400 within the server system 100.
  • the routing server 300 is arranged for establishing the suitability of the streaming server 400 to which it has issued the configuration instructions 312.
  • the routing server 300 is thus arranged for establishing a suitability of the first streaming server 400.
  • the routing server 300 may also establish the suitability of the second streaming server 402.
  • the suitability is data which is indicative of whether the streaming server 400 can stream the media content to the client 200. Moreover, the suitability may be indicative of how well the streaming server can supply the media content to the client 200.
  • the suitability may be a part of a performance index comprising the suitability of all of the plurality of streaming servers 400-402 for enabling establishing their relative suitability.
  • the suitability may be directly indicative of the suitability of the streaming server 400 for streaming the requested media content, e.g., by indicating that the media content is present on the streaming server and the streaming server having sufficient communication bandwidth.
  • the suitability may also be indirectly indicative thereof, e.g., indicate a hardware configuration of the particular streaming server, its load as expressed in, e.g., memory usage, processor usage or communication bandwidth, or a general availability of types of media content.
  • the suitability may also be indicative of an expected quality of the connection within the communication network between the streaming server 400 and the client 200.
  • the server system 100 as depicted in Fig. 1 enables the routing server 300 to configure the first streaming server 400 and to establish its suitability.
  • the routing server 300 then redirects the media request 202 as received from the client 200 to a particular one of the plurality of streaming servers based on based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client.
  • the routing server 300 as shown in Fig. 1 may only know the suitability of the first streaming server 400.
  • the routing server 300 may decide to redirect the media request 202 of the client 200 to the first streaming server 400 if the routing server 300 determines that the first streaming server 400 is sufficiently suitable for streaming the media content to the client 200.
  • the routing server 300 may provide an address 208 of the first streaming server 400 to the client 200.
  • the client 200 may send a further media request 204 to the first streaming server 400.
  • the client may resend the earlier media request 202 to the first streaming server 400.
  • the first streaming server 400 may start streaming the media content 210 to the client 200.
  • the routing server 300 may decide to redirect the media request 202 of the client 200 to the second streaming server 402 without explicitly knowing the suitability of the second streaming server 402 for streaming the media content to the client 200.
  • the client 200 may send the further media request 206 to the second streaming server 402.
  • the routing server 300 redirects the media request 202 based on knowledge of the suitability of all of the plurality of streaming servers 400-402 in order to redirect the media request 202 to one of the plurality of streaming servers 400-402 which is most suitable for streaming the media content to the client 200. This may be the case when, for example, the routing server 300 also configures the second streaming server 402 and establishes its suitability.
  • the routing server 300 may obtain the suitability of other streaming servers, e.g., the second streaming server 402, from another routing servers. It is noted that this scenario will be discussed further in reference to Fig. 4.
  • Fig. 1 shows the routing server 300 redirecting the media request 202 by providing the client 200 with an address 208 of a particular one of the plurality of streaming servers 400-402.
  • the routing server 300 may also be arranged for forwarding the media request to the particular one of the plurality of streaming servers 400-402.
  • the routing server 300 may also employ other means which enable the media request 202 of the client 200 to be appropriately redirected.
  • the server system 100 may further be arranged as follows: each of the plurality of streaming servers 400-402, i.e., in the example of Fig. 1 the first streaming server 400 and the second streaming server 402, may be arranged for receiving transfer instructions 314 from a routing server 300 within the server system 100 for, upon execution of the transfer instructions 314, transferring media content 412, 414 to and/or from another one of the plurality of streaming servers 400-402. Moreover, the at least one routing server 300, i.e., in the example of Fig. 1 the one routing server 300, may be arranged for issuing the transfer instructions 314 to a streaming server 400-402 within the server system 100.
  • Fig. 1 depicts the first routing server 300 issuing transfer instructions 314 to the first streaming server 400.
  • the transfer instructions 314 may cause the first streaming server 400 to send media content 412 to the second streaming server 402 and/ or to receive media content 414 from the second streaming server 402.
  • the transfer instructions when issued to the second streaming server 402, may cause the second streaming server 402 to send media content 414 to the first streaming server 400, or to receive media content 412 from the first streaming server 400.
  • a routing server 300 may manage the media content on at least one of the plurality of streaming servers 400-402 by suitable issuing transfer instructions 314 thereto.
  • a transfer instruction may be considered as a special type of configuration instruction, in that it configures a streaming server to send or receive media content. Accordingly, the configuration instruction as issued by the routing server may constitute a transfer instruction.
  • the routing server 300 may be further arranged for establishing the suitability of the streaming server 400 for streaming the media content 210 to the client 200 further based on the transfer instructions 314.
  • the routing server 300 may therefore take into account which media content has been send to 412 or received by 414 the streaming server 300 to determine whether the streaming server 300 can supply the media content to the client 200, and if so, may determine how well the streaming server 300 can supply the media content to the client 200 based the issued transfer instructions 314.
  • the server system 100 may further be arranged as follows: each of the plurality of streaming servers 400-402 may be arranged for providing utilization information 316 indicative of its degree of utilization to the routing server 300, and the at least one routing server 300 may be arranged for i) receiving the utilization information 316 from the streaming server 400, and ii) generating the configuration instructions 312 and/or the transfer instructions 314 based on the utilization information 316.
  • Fig. 1 depicts the first streaming server 400 providing utilization information 316 to the routing server 300.
  • Utilization information 316 may relate to, e.g., current communication bandwidth and/or processor load of the streaming server 400.
  • the utilization information 316 may be provided, e.g., in the form of a live feed of statistical data, or in the form of a log file of recent media requests.
  • the utilization information 316 may be indicative of how well the streaming server 400 is able to stream media content 210 to a current client 200, i.e., one that is to be redirected by the routing server 300.
  • the utilization information 316 may comprise, for each client 200 currently connected to the streaming server 400, an identification of the media content that is currently being streamed, a type of the connection to the client, a time of the connection being established, a number of seconds that the connection is active, a number of bytes that has been sent and received, and an IP address of the client.
  • the above information may be included in the utilization information 316 as well, with the exception that the number of seconds that the connection is active may be replaced by a number of seconds that the connection was active.
  • the utilization information 316 may comprise, for one or more parts of media content as well as for the streaming server 400 in its entirety, a current transmission bandwidth in bytes per second for sending and/or receiving, and a number of clients being connected to the streaming server 400 which are being provided with said media content.
  • the routing server 300 may be arranged for generating the configuration instructions 312 based on the utilization information 316, e.g., to reconfigure the streaming server 400 based on the utilization of the streaming server 400. For example, if the streaming server 400 is found to be underutilized, the routing server 300 may generate configuration instructions 312 which configure the streaming server 400 to, e.g., remove streaming limitations, add support for additional streaming protocols, stream at a higher quality and/or bandwidth, etc. Similarly, if the streaming server 400 is found to be near its maximum utilization, the routing server 300 may generate configuration instructions 312 which configure the streaming server 400 to, e.g., add streaming limitations, remove support for certain streaming protocols, stream at a lower quality and/or bandwidth, etc.
  • the routing server 300 may be arranged for generating the transfer instructions 314 based on the utilization information 316, e.g., to manage the media content on the streaming server 400 based on the utilization of the streaming server 400. For example, if the streaming server 400 is found to be near its maximum utilization, the routing server 300 may generate transfer instructions 314 which instruct the streaming server 400 to send certain media content 412 to another streaming server 402. The routing server 300 may then lower the utilization of the streaming server 400 by redirecting media requests for said media content to the other streaming server 402.
  • the at least one routing server 300 may establish the suitability of the streaming server 400 for streaming the media content 210 to the client 200 further based on the utilization information 316. Hence, the routing server 300 may avoid redirecting media requests 204-206 to the streaming server 400 if the streaming server 400 is near its 15
  • the routing server 300 may preferably redirect media requests to the under-utilized streaming server 400.
  • the routing server 300 may be arranged for generating the configuration instructions 312 and/or the transfer instructions 314 based on the media request 202.
  • the media request 202 may determine whether, and if so, which kind of configuration instructions 312 and/or transfer instructions 314 are issued to the streaming server 400.
  • the media request 202 may be a current media request 202.
  • the routing server 300 may generate the configuration instructions 312 and/or the transfer instructions 314 to accommodate the media request 202 of a current client 200, e.g., by transferring the requested media content from a streaming server 400 which is near its maximum utilization to another streaming server 402 that is under-utilized.
  • the routing server 300 may take into account previous media requests in generating the configuration instructions 312 and/or the transfer instructions 314.
  • the routing server 300 may analyze the media requests of clients to establish a current demand for media content and/or anticipate a future demand for media content. The routing server 300 may then manage the supply of media content by generating the configuration instructions 312 and/or the transfer instructions 314 for the streaming server 400 accordingly. It will be appreciated that many different kind of configuration instructions 312 and/or transfer instructions 314 may be generated based on the media request 202 and/or the previous media requests. It is noted that the
  • Fig. 2 shows a method 500 of controlling a server system for streaming media content to a client via a communications network
  • the server system comprising a plurality of streaming servers, each comprising respective media content and being arranged for accepting a media request from the client for streaming the media content to the client, and at least one routing server, arranged for i) receiving the media request from the client and ii) redirecting the media request to a particular one of the plurality of streaming servers based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client.
  • the method 500 itself comprises, on each of the plurality of streaming servers, i) receiving 510 configuration instructions from a routing server in a step titled "ROUTING SERVER RECEIVING CONFIGURATION INSTRUCTIONS", and ii) executing 520 the configuration instructions for establishing a configuration of a respective one of the plurality of streaming servers in a step titled "ROUTING SERVER EXECUTING CONFIGURATION INSTRUCTIONS".
  • the method 500 comprises, on the at least one routing server, j) issuing 530 the configuration instructions to a streaming server in a step titled "STREAMING SERVER ISSUEING THE CONFIGURATION INSTRUCTIONS", and jj) establishing 540 the suitability of the streaming server for streaming the media content to the client based on the configuration instructions in a step titled "STREAMING SERVER ESTABLISHING THE SUITABILITY OF THE STREAMING SERVER".
  • the method 500 may correspond to an operation of the server system 100, and is explained in reference to the server system 100. It will be appreciated, however, that the method 500 may be performed in separation of said system 100. Moreover, it is noted that the method steps of the method 500 may be performed in any suitable order. In particular, it is noted that the steps performed on the at least one routing server may be performed in parallel to the steps performed on each of the plurality of streaming servers.
  • Fig. 3 shows a computer program product 560 comprising instructions for causing a server system to perform the method according to the present invention.
  • the computer program product 560 may be comprised on a computer readable medium 550, for example in the form of as a series of machine readable physical marks and/or as a series of elements having different electrical, e.g., magnetic, or optical properties or values.
  • a computer program product may be provided comprising instructions for causing a routing server according to the present invention to perform specifically those method steps 530-540 of the aforementioned method 500 which are to be performed on the routing server.
  • a computer program product may be provided comprising instructions for causing a streaming server according to the present invention to perform specifically those method steps 510-520 of the
  • Fig. 4 shows a server system 120 comprising a plurality of routing servers 300-308.
  • Each of the plurality of routing servers 300-308 may be configured or arranged in correspondence with the at least one routing server 300 as depicted in Fig. 1.
  • each of the plurality of routing servers 300-308 is arranged for communicating with other ones of the plurality of routing servers 300-308.
  • Fig. 4 shows each of the plurality of routing servers 300-308 being arranged for communicating with all of the other ones of the plurality of routing servers 300-308. This is shown in Fig. 4 illustratively by each of the plurality of routing servers 300-308 being connected to each other by a bidirectional arrow 310.
  • Fig. 4 shows a star-shaped communication network being established amongst the routing servers. It is noted that the actual communication network may differ from that depicted in Fig. 4. For example, in case the communication network is the Internet, it may be suffice that each of the plurality of routing servers 300-308 is connected to the Internet to enable communication amongst the plurality of routing servers 300-308.
  • the server system 120 further comprises a plurality of streaming servers 400- 408, each being arranged for receiving the configuration instructions 312 from an associated one of the plurality of routing servers 300-308.
  • each of the plurality of streaming servers 400-408 has one associated one of the plurality of routing servers 300- 308.
  • a first streaming server 400 is associated with a first routing server 300
  • a second streaming server 402 is associated with a second routing server 302, etc.
  • each of the plurality of streaming servers 400-408 is associated with exactly one of the plurality of routing servers 300-308.
  • a multiple streaming servers may be associated with a same one of the plurality of routing servers 300-308.
  • a fourth routing server 306 may be associated with a fourth streaming server 406 and a fifth streaming server 407.
  • each of said streaming servers 406-407 is arranged for receiving the configuration instructions from said fourth routing server 306.
  • each of the plurality of routing servers 300-308 is arranged for establishing the suitability of the associated one of the plurality of streaming servers.
  • the first routing server 300 establishes the suitability of the first streaming server 400 streaming the media content to the client 200.
  • the fourth streaming server 306 establishes the suitability of both the fourth streaming server 406 and the fifth streaming server 407 for streaming the media content to the client 200, etc.
  • each of the plurality of routing servers 300-308 is arranged for sharing said suitability with the other ones of the plurality of routing servers 300-308.
  • each one of the plurality of routing servers 300-308 may know of each one of the plurality of streaming servers 400-408 its suitability for streaming the media content to the client.
  • each of the plurality of routing servers 300-308 may redirect a media request 200 received from a client 200 to a particular one of the plurality of streaming servers 400-408 based on knowing the suitability of each of the plurality of streaming servers 400-408.
  • a routing server 300 may redirect the media request 200 to a particular streaming server which is most suitable for streaming the media content to the client 200.
  • a routing server and a streaming server is represented in Fig. 4 by a bidirectional arrow 410. It is noted that the communication may be similar as depicted in Fig. 1 , i.e., comprise configuration instructions 312 and transfer instructions 314 being sent to the streaming server, and utilization information 316 being sent to the routing server. Additionally, the communication between streaming servers, e.g., comprising media content being transferred between streaming servers, is not shown in Fig. 4 but may take place within the server system 120.
  • the plurality of routing servers 300-308 may be arranged for, when one of the plurality of routing servers 400-408 experiences a failure, establishing, for the associated one of the plurality of streaming servers 400-408, another one of the plurality of routing servers as the associated one of the plurality of routing servers.
  • a failure of a routing server may be detected by others of the plurality of routing servers, e.g., by not being able to communicate with the particular routing server.
  • the streaming server associated with the routing server that experiences the failure may not be able to receive configuration instructions and/or transfer instructions anymore due to the associated routing server experiencing the failure. As a consequence, the streaming server may not be manageable anymore within the server system 120. To avoid this from occurring, the streaming server may be assigned another one of the plurality of routing server.
  • another one of the plurality of routing servers 300-308 may send the streaming server a configuration instruction causing the streaming server to establish said routing server as the associated routing server.
  • the streaming server may subsequently receive the configuration instructions and transfer instructions from the newly associated routing server, and may provide its the utilization information thereto.
  • the newly associated routing server may take the place of the previous routing server within the server system 120.
  • the above establishing may be performed by each of the plurality of routing servers 300-308 using a same algorithm in order to establish a same one of the plurality of routing servers 300-308 as the associated one of the plurality of routing servers irrespective of which one of the plurality of routing servers initiates the above reassignment.
  • a failure of one of the plurality of routing servers 300-308 may be automatically detected within the server system 120, and the streaming server associated with the routing server experiencing the failure may automatically be assigned a new routing server. It is noted that the redirecting of media requests may continue uninterrupted while the streaming server is still associated with the routing server experiencing the failure, i.e., while the streaming server is temporarily "unmanaged", since the suitability of said streaming server is shared with the other ones of the plurality of routing servers 300-308. Hence, other routing servers 300 may continue to redirect media requests based on its suitability.
  • a routing server being associated with a streaming server may involve the routing server storing address information, e.g., a domain name or IP address, of the particular streaming server, and vice versa.
  • the server system 120 may further comprise an assignment server 140 which, in response to a request 142 from the client 200, assigns one of the plurality of routing servers 300-308 to the client 200.
  • the client 200 may contact the assignment server 140 and be dynamically assigned to one of the plurality of routing servers 300-308.
  • the assignment server 140 may be a domain name serve, the client 200 may be provided with a domain name, and the domain name server 140 may, upon receiving a request from the client 200 for resolving the domain name to an IP address, issue an IP address of one of the plurality of routing servers 300-308.
  • the domain name server 140 may, upon receiving a request from the client 200 for resolving the domain name to an IP address, issue an IP address of one of the plurality of routing servers 300-308.
  • other types of assignment servers may be advantageously used as well.
  • the assignment may be based on an assignment scheme.
  • the assignment scheme may be arranged for distributing subsequent clients over the plurality of routing servers 300-308.
  • the assignment scheme may or may not be arranged for assigning subsequent clients to different ones of the plurality of routing servers 300-308.
  • An example of an assignment scheme which may be advantageously used is a so-termed round-robin assignment scheme, which causes the assignment server to, based on a list of routing servers, assign a next routing server on the list to a next client, and to jump to the beginning of the list once the assignment server arrives at the end of the list.
  • each of the plurality of streaming servers 400-408 may be arranged for, when the respective associated one of the plurality of routing servers 300-308 experiences a failure, using the assignment server 140 to establish another one of the plurality of routing servers 300-308 as the associated one of the plurality of routing servers 300-308.
  • each of the plurality of streaming servers 400-408 may be arranged for, during an initialization phase, establishing the respective associated one of the plurality of routing servers 300-308 using the assignment server 140.
  • each of the plurality of streaming servers 400-408 may itself determine a new associated routing server by, e.g., requesting an address thereof from the assignment server 140. This may be either during an initialization phase, e.g., start-up of the streaming server, or during a failure of the associated one of the plurality of routing servers 300-308.
  • Media streaming to a client 200 may be initiated as follows in the aforementioned server system 120.
  • the client 200 may request an address of a routing server by sending a request 142 to the assignment server 140.
  • the assignment server 140 may, based on an assignment scheme, provide the client 200 with an address 144 of the one of the plurality of routing servers 300-308.
  • the address 144 may be of the first routing server 300.
  • the client 200 may then send a media request 202 to the first routing server.
  • the first routing server 300 may provide an address of the second streaming server 402.
  • the client 200 may then send a further media request 204 to the second streaming server 402.
  • server refers to a computing entity having the functionality of providing the client access to the media content.
  • server software which is executed on hardware, with a wide range of possibilities existing on how to allocate the hardware to the server software.
  • each server of the aforementioned server systems may correspond to server software running on a different physical computer.
  • one or more servers of said server systems may also be allocated to a virtualized machine provided by a computer, with the computer providing, i.e., hosting, multiple virtual machines and therefore possible hosting multiple servers.
  • the concepts known in the field of hardware virtualization may be applied to the present invention.
  • one or more servers of said server system may correspond to software applications or software service, thereby allowing a computer to host multiple servers without needing to employ virtualization.
  • the aforementioned server systems may be a co-located system of servers, i.e., may be physically co-located, e.g., in a same building of a data center.
  • said server system may be equally formed by servers that are physically distributed over multiple locations.
  • a server system is formed implicitly by virtue of the servers within the server system being arranged for communicating with each other.
  • a first routing server and a first streaming server may be both located in the Amsterdam, NL
  • a second routing server may be located in New York City, US
  • a second streaming server may be located in Toronto, CA.
  • the client 200 may be a personal computer located in Shanghai, CN.
  • the client 200 may be a software application or software service running on personal computer, set top box, tablet device, Smartphone, etc.
  • the client 200 may also take other suitable forms.
  • any reference signs placed between parentheses shall not be construed as limiting the claim.
  • Use of the verb "comprise” and its conjugations does not exclude the presence of elements or steps other than those stated in a claim.
  • the article “a” or “an” preceding an element does not exclude the presence of a plurality of such elements.
  • the invention may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer.

Abstract

Server system (100, 120) for streaming media content (210, 212) to a client (200) via a communications network, comprising a plurality of streaming servers (400-408), each comprising respective media content (210, 212) and being arranged for accepting a media request (202-206) from the client (200) for streaming the media content to the client; at least one routing server (300), arranged for i) receiving the media request (202) from the client (200) and ii) redirecting the media request (204-206) to a particular one of the plurality of streaming servers (400-408) based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client; and wherein each of the plurality of streaming servers (400) is arranged for receiving configuration instructions (312) from a routing server (300) for, upon execution of the configuration instructions, establishing a configuration of a respective one of the plurality of streaming servers; and the at least one routing server (300) is arranged for i) issuing the configuration instructions (312) to a streaming server (400), and ii) establishing the suitability of the streaming server for streaming the media content (210, 212) to the client (200) based on the configuration instructions.

Description

Server system for streaming media content to a client
FIELD OF THE INVENTION
The invention relates to a server system for streaming media content to a client via a communications network, a streaming server configured for use in the server system and a routing server configured for use in the server system.
The invention further relates to a method of controlling the server system for streaming media content to the client and a computer program product comprising instructions for causing a server system to perform the method.
With the advent of global communication networks, in particular the Internet, it has become feasibly to deliver media content to users by streaming the media content via the communication network instead of having to rely on broadcasting the media content via traditional means, e.g., via DVB or ATSC broadcasting. Streaming media content typically involves a client, such as a personal computer, set top box or Smartphone, issuing a media request to a streaming server. In response, the streaming server sends the media content to the client via the communication network as a sequence of data elements made available over time. Compared to the aforementioned broadcasting, the streaming of media content offers various advantages, such as enabling users to get the media content which they want, at a time when they want it. In particular, it has become possible to deliver media content 'on demand' in addition to delivering traditional 'live' broadcast media content.
BACKGROUND ART
A client needs to know whom to send its media request within the communication network. In particular, the client needs to obtain an address within the communication network such that the media request can be sent via the communication network to said address. In case of the Internet, the address may be a domain name or Internet Protocol (IP) address. The address may be predetermined in the client. For example, a set top box may be configured to contact a predetermined address of the Video On Demand (VOD) provider who provided the set top box to the user.
The address within the communication network may be of a streaming server. However, in case many clients simultaneously send media requests to the streaming server, the streaming server may be unable to cope with said requests, e.g., due to the streaming server reaching its maximum communication bandwidth and/or processor load. It is known to distribute the media requests of many clients over a plurality of streaming servers in order to reduce the communication bandwidth and/or processor load per streaming server. This usually results in a more reliable streaming performance. For that purpose, the client may be provided with a domain name and may be arranged for contacting a domain name server to obtain an address associated with the domain name. The domain name server may be arranged for, in response, providing addresses of different streaming servers to subsequent clients in order to distribute clients over the plurality of streaming servers. Hence, even though clients may be provided with a same predetermined domain name, they may be assigned to different streaming servers.
It is also known to distribute media content over a plurality of streaming servers such that each streaming server does not need to store all of the media content. However, a client requesting media content then needs to be redirected to a particular one of the plurality of streaming servers which comprises the requested media content. For that purpose, a routing server may be employed which comprises media location information that indicates which media content is stored on which of the plurality streaming servers. Upon receiving a media request from the client, the routing server may then redirect the media request to a particular one of the plurality streaming servers which comprises the requested media content by matching the media request to the media location information.
SUMMARY OF THE INVENTION
A drawback of the known systems of streaming media content to a client is that they are not flexible enough to cope with sudden changes affecting the demand of media content by the clients and/or the supply of media content by the streaming servers.
One of the objects of the invention is to provide a server system which is more flexible to better match demand of media content to supply of media content.
A first aspect of the invention provides a server system for streaming media content to a client via a communications network, comprising:
a plurality of streaming servers, each comprising respective media content and being arranged for accepting a media request from the client for streaming the media content to the client;
- at least one routing server, arranged for i) receiving the media request from the client and ii) redirecting the media request to a particular one of the plurality of streaming servers based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client;
and wherein: each of the plurality of streaming servers is arranged for receiving configuration instructions from one of the at least one routing server for, upon execution of the configuration instructions, establishing a configuration of the respective one of the plurality of streaming servers; and
the at least one routing server is arranged for i) issuing the
configuration instructions to at least one of the plurality of streaming servers, and ii) establishing the suitability of the at least one of the plurality of streaming servers for streaming the media content to the client based on the configuration instructions.
A further aspect of the invention provides a streaming server configured for use in the aforementioned server system.
A further aspect of the invention provides a routing server configured for use in the aforementioned server system.
Embodiments of the invention are defined in the dependent claims.
A server system in accordance with the first aspect of the invention comprises a plurality of streaming servers. Each of the streaming servers comprises media content, which may be different or the same as the media content on the other streaming servers. Each of the streaming servers is arranged for, in response to a request from a client, streaming the requested media content to the client via the communication network.
The server system further comprises at least one routing server. The routing server initially receives the media request from the client, e.g., due to the client being initially provided with the address of the routing server. The routing server is arranged for redirecting the media request to a particular one of the plurality of streaming servers. For that purpose, the routing server makes use of data which expresses a suitability of the particular one of the plurality of streaming servers for streaming the requested media content to the client, i.e., is indicative of whether the streaming server can supply the media content to the client. Having determined said suitability, the routing server then redirects the media request accordingly, e.g., by forwarding the media request to the particular one of the plurality of streaming servers, or by providing the client with an address of the particular streaming server for enabling the client to resend the media request directly to said streaming server.
For enabling the above server system in which a routing server redirects the media request to a particular one of the plurality of streaming servers, each of the plurality of streaming servers is arranged for receiving configuration instructions from a routing server within the server system. The configuration instructions instruct the streaming server receiving the configuration instructions to establish a certain streaming configuration, e.g., establish certain streaming allowances or limitations, set streaming protocols, etc. Moreover, the at least one routing server is arranged for issuing the configuration instructions to a streaming server within the server system. Having issued the configuration instructions, the routing server then generates data which expresses the suitability of the streaming server for streaming the media content to the client. The data is generated based on the configuration instructions and subsequently used in the redirecting of the media request to a particular one of the plurality of streaming servers.
The above measures provide a server system in which a client does not directly send an initial media request to a streaming server, but rather in which at least one routing server is employed which initially receives the media request and redirects the media request to a particular one of the plurality of streaming servers. Hence, the routing server assumes the role of media request router within the server system, enabling the server system to distribute media requests of clients over a plurality of streaming servers.
In addition, the routing server assumes the role of streaming server manager within the server system by virtue of the routing server being arranged for issuing configuration instructions to a streaming server, and each of the plurality of streaming servers being arranged for executing issued configuration instructions. Hence, the routing server can automatically configure the streaming server, without a need for a user to manually configure the streaming server, e.g., using a management console.
The configuration instructions enable the routing server to directly determine the current, up-to-date configuration of the streaming server by virtue of the configuration instructions actually causing the streaming server to establish said configuration. By establishing the suitability of the streaming server based on the current, up-to-date configuration of the streaming server, the routing server can better predict how suitable the streaming server is compared to, e.g., using a suitability which is solely based on whether a streaming server comprises the media content requested by the client.
The present invention is partially based on the recognition that the routing of media requests is improved by basing it on the current, up-to-date configuration of streaming servers, since such configuration may greatly affect the streaming capabilities and thus streaming performance of a streaming server. Moreover, the inventors have recognized that although it may be possible to synchronize information on the configuration of the streaming server to the routing server, various problems are associated with such synchronization.
By providing a routing server that assumes both the roles of media request router and streaming server manager, the routing server can dynamically route media requests based on the current, up-to-date configuration of the streaming servers.
Advantageously, it is not needed to otherwise synchronize information on the configuration of the streaming server to the routing server. Advantageously, problems associated with such synchronization are avoided, such as having to temporarily cease routing during such synchronization, or synchronization delays or failures occurring and thus having to base the routing of media requests on out-of-date information. Advantageously, the server system is able to better cope with sudden changes affecting the demand of media content by the clients and/or the supply of media content by the streaming servers.
In an embodiment, each of the plurality of streaming servers is arranged for receiving transfer instructions from the routing server for, upon execution of the transfer instructions, transferring media content to and/or from another one of the plurality of streaming servers; and the at least one routing server is arranged for i) issuing the transfer instructions to the streaming server, and ii) establishing the suitability of the streaming server for streaming the media content to the client further based on the transfer instructions.
The routing server is arranged for, in addition to managing the configuration of the streaming server, also managing its media content by virtue of issuing the transfer instructions to the streaming server. Hence, instead of having to obtain media location information that indicates which media content is stored on which of the plurality streaming servers, the routing server issues transfer instructions which actually cause the streaming server to receive and subsequently store the media content. As a result, the routing server has up-to-date knowledge on the media content of the streaming server.
By establishing the suitability of the streaming server further based on the transfer instructions, this up-to-date knowledge is automatically taken into account in the routing of media requests. Hence, the server system is able to better cope with sudden changes affecting the demand of media content by the clients and/or the supply of media content by the streaming servers. Advantageously, it is not needed to otherwise synchronize media location information from the streaming server to the routing server.
In an embodiment, each of the plurality of streaming servers is arranged for providing utilization information indicative of its degree of utilization to the routing server; and the at least one routing server is arranged for i) receiving the utilization information from the streaming server, and ii) generating the configuration instructions and/or the transfer instructions based on the utilization information.
Utilization information, such as, e.g., current communication bandwidth and/or processor load, is indicative of a streaming server's ability to handle the current and further media requests from clients. By generating the configuration instructions and/or the transfer instructions based on the utilization information, the routing server is able to update a streaming server's configuration and/or media content in accordance with this ability, at the same time, adapt the routing of media requests to the updated configuration and/or media content. For example, the routing server may, when the communication bandwidth of a streaming server is near its limit, issue transfer instructions to the streaming server to instruct the streaming server to transfer a portion of its media content to a further streaming server. Having issued said instructions, the routing server may then route media requests corresponding to the portion of the media content to the further streaming server, thereby reducing the communication bandwidth of the earlier streaming server.
In an embodiment, the at least one routing server is arranged for generating the configuration instructions and/or the transfer instructions further based on the media request. The media request, as part of a plurality of recent media requests, is indicative of the current demand of media content by the clients. The configuration instructions and/or the transfer instructions allow the routing server to manage the supply of media content by the streaming servers. By generating the instructions for managing the supply of media content based on the media request, the server system is able to better match the current demand of media content to the supply of media content. Advantageously, sudden changes in the demand of media content can be immediately observed and used to both manage the supply of media content and to adapt the routing of media requests accordingly.
In an embodiment, the at least one routing server is a plurality of routing servers, each of the plurality of routing servers being arranged for communicating with other ones of the plurality of routing servers; and wherein each of the plurality of streaming servers is arranged for receiving the configuration instructions from an associated one of the plurality of routing servers; and each of the plurality of routing servers is arranged for i) establishing the suitability of the associated one of the plurality of streaming servers, and ii) sharing data indicative of said suitability with the other ones of the plurality of routing servers.
Accordingly, a server system is provided in which all of the plurality of routing servers are mutually connected, and in which each of plurality of streaming servers is associated with one of the plurality of routing servers. All of the routing servers share the suitability of the associated streaming server amongst all of the plurality of routing servers. As a result, each routing server is aware of the suitability of each of the plurality of streaming servers for streaming the media content to the client, without having to establish the suitability of each of the plurality of streaming servers on its own. Advantageously, the media requests of clients can be distributed over multiple routing servers in order to reduce the communication bandwidth and/or processor load per routing server. Advantageously, the capacity of the server system of routing media requests of clients is increased. In an embodiment, the plurality of routing servers is arranged for, when one of the plurality of routing servers experiences a failure, establishing, for the associated one of the plurality of streaming servers, another one of the plurality of routing servers as the associated one of the plurality of routing servers.
By providing a mechanism which establishes a further routing server as a replacement for an earlier routing server which experiences a failure, the routing of media requests is less susceptible to failures. Advantageously, the plurality of routing servers exhibits self-redundancy, i.e., internally compensates for failures. Advantageously, the server system provides more reliable streaming of media content to a client.
In an embodiment, said establishing is performed by each of the plurality of routing servers using a same selection algorithm for establishing a same one of the plurality of routing servers as the associated one of the plurality of routing servers.
In an embodiment, the server system further comprises an assignment server for, in response to a request from the client, assigning one of the plurality of routing servers to the client based on an assignment scheme, the assignment scheme being arranged for distributing subsequent clients over the plurality of routing servers.
Hence, a media request of a client is routed to a streaming server by, firstly, the assignment server assigning one of the plurality of routing servers to the client, and secondly, the routing server assigning one of the plurality of streaming servers to the client, the latter by redirecting the media request of the client to said streaming server. Effectively, clients are first distributed over the plurality of routing servers and subsequently further distributed over the plurality of streaming servers. Advantageously, the communication bandwidth and/or processor load is evenly distributed over the plurality of routing servers and evenly distributed over the plurality of streaming servers.
In an embodiment, each of the plurality of streaming servers is arranged for, when the respective associated one of the plurality of routing servers experiences a failure, using the assignment server for establishing another one of the plurality of routing servers as the associated one of the plurality of routing servers.
Hence, the same mechanism that is used to distribute clients over the plurality of routing servers is used to assign a new routing server to a streaming server of which the earlier associated routing server experienced a failure. Advantageously, it is not needed to provide a new mechanism to efficiently assign the streaming server to a new routing server.
In an embodiment, each of the plurality of streaming servers is arranged for, during an initialization phase, establishing the respective associated one of the plurality of routing servers using the assignment server. Hence, the same mechanism that is used to distribute clients over the plurality of routing servers is used to assign a routing server to a streaming server during an initialization phase of the streaming server. Advantageously, the association between a routing server and a streaming server is established automatically. Advantageously, the plurality of streaming servers are distributed evenly over the plurality of routing servers.
In an embodiment, the utilization information is indicative of at least one of: a number of clients which are streaming media content, a communication bandwidth, and a server load, of the respective streaming server.
A further aspect of the invention provides a method of controlling a server system for streaming media content to a client via a communications network, the server system comprising:
a plurality of streaming servers, each comprising respective media content and being arranged for accepting a media request from the client for streaming the media content to the client;
at least one routing server, arranged for i) receiving the media request from the client and ii) redirecting the media request to a particular one of the plurality of streaming servers based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client;
and the method comprising:
on each of the plurality of streaming servers, i) receiving configuration instructions from one of the at least one routing server, and ii) executing the configuration instructions for establishing a configuration of the respective one of the plurality of streaming servers; and
on the at least one routing server, j) issuing the configuration instructions to at least one of the plurality of streaming servers, and jj) establishing the suitability of the at least one of the plurality of streaming servers for streaming the media content to the client based on the configuration instructions.
A further aspect of the invention provides a computer program product comprising instructions for causing a server system to perform the aforementioned method.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other aspects of the invention are apparent from and will be elucidated with reference to the embodiments described hereinafter. In the drawings,
Fig. 1 shows a server system according to the present invention, and a client sending a media request to a routing server of the server system; Fig. 2 shows a method according to the present invention;
Fig. 3 shows a computer readable medium comprising a computer program product according to the present invention; and
Fig. 4 shows a server system according to the present invention, comprising a plurality of routing servers arranged for communicating with each other and an assignment server for assigning one of the plurality of routing servers to the client.
It should be noted that items which have the same reference numbers in different Figures, have the same structural features and the same functions, or are the same signals. Where the function and/or structure of such an item has been explained, there is no necessity for repeated explanation thereof in the detailed description.
DETAILED DESCRIPTION OF EMBODIMENTS
Fig 1 . shows a server system 100 for streaming media content 210, 212 to a client 200 via a communications network. It is noted that the communication network is not explicitly depicted in Fig. 1 , but rather enables the depicted communication within the server system 100 and the communication between the client 200 and the server system 100.
The server system 100 comprises a plurality of streaming servers 400-402. By way of example, Fig. 1 shows two streaming servers, i.e., a first streaming server 400 and a second streaming server 402. Each of the streaming servers 400-402 comprises media content. The media content stored on each of the streaming servers 400-402 may be the same, different, or in part the same and in part different. Each of the streaming servers 400-402 is arranged for accepting a media request from the client 200 via the
communication network for requesting the respective streaming server 400-402 to stream the media content 210, 212 to the client 200. It is noted that a particular streaming server 400-402 may comprise more media content than is requested by the client 200, i.e., only a portion of the media content may be requested by the client 200 for streaming.
In this respect, it is noted that the term media content refers to visually and/or audibly perceptible content such as video, images, audio, etc, which is encoded in a digital form. The media content may or may not be stored in a compressed form, i.e., stored such that the media content needs less storage space compared to its original form. As such, a streaming server may comprise movies, television shows, music albums, etc.
The server system 100 comprises at least one routing server 300. By way of example, Fig. 1 shows precisely one routing server 300. The routing server 300 is arranged for receiving the media request 202 from the client 200. For that purpose, the client 200 may be arranged for initially sending the media request 202 to the routing server 300, e.g., by being initially provided with an address of the routing server 300. The routing server 300 is arranged for redirecting the media request 204-206 to a particular one of the plurality of streaming servers 400-402. The redirecting, i.e., to which of the plurality of streaming servers 400-402 the media request is to be direct, is based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client.
In general, it is noted that if "a routing server" or "the routing server" is described to be configured or arranged in a certain manner in the aforementioned and following description, this may also apply to other routing servers in case the server system comprises more than one routing servers. For example, all of the plurality of routing servers may be configured or arranged accordingly. Similarly, if "a streaming server" or "the streaming server" is described to be configured or arranged in a certain manner, others or all of the plurality of streaming servers may also be configured or arranged accordingly.
Within the server system 100, each of the plurality of streaming servers 400 is arranged for receiving configuration instructions 312 from one of the routing servers of the server system 100. By way of example, Fig. 1 shows the first streaming server 400 being arranged for receiving configuration instructions 312 from the routing server 300. The configuration instructions 312 cause the streaming server 400 to establish a particular configuration upon receiving and executing the configuration instructions 312. It is noted that the configuration instructions may be sent in any suitable form to the streaming server 400.
Here, establishing a configuration refers to setting or modifying at least one configurable aspect of the streaming of the streaming server 400. For example, the configuration instructions 312 may set or modify streaming allowances or limitations of the streaming server 400, e.g., bandwidth limits such as a limit of the current communication bandwidth to a certain number of bytes per second, data usage limits such as a limit to an overall number of bytes transmitted, or geographical limits such as a limit to which geographical locations streaming is allowed and to which geographical locations is disallowed. Additionally or alternatively, the configuration instructions 312 may specify streaming protocols to be activated on or supported by the streaming server 400, availability of media content for streaming, streaming quality, streaming formats, etc. It is noted that the configurable aspects of the streaming may apply to the streaming server 400 as a whole, or to parts of the media content individually, e.g., to a specific movie. It will be appreciated that the configuration instructions are not limited to the aforementioned aspects of the streaming, and that many more aspects are within reach of the skilled person.
It is noted that the streaming server 400 may establish its configuration under exclusive control of the configuration instructions issued by the routing server 300. This may be due to the streaming server 400 not comprising internal mechanisms for setting or modifying the configurable aspect(s) of the streaming of the streaming server 400.
Although not shown in Fig. 1 , the second streaming server 402 may also be configured for receiving configuration instructions from the routing server 300. In this case, the configuration instructions issued by the routing server 300 to the second streaming server 402 may be the same, different, or in part the same and in part different, from those issued by the routing server 300 to the first streaming server 400. It is noted that typically, the routing server 300 may individually configure streaming servers, resulting in the configuration instructions being at least in part different between the streaming servers.
The routing server 300 is arranged for issuing the configuration instructions to a streaming server 400 within the server system 100. By way of example, Fig. 1 shows the routing server 300 issuing the configuration instructions to the first streaming server 400. As such, the routing server 300 is able to configure the first streaming server 400 within the server system 100. Moreover, the routing server 300 is arranged for establishing the suitability of the streaming server 400 to which it has issued the configuration instructions 312. In the example of Fig. 1 , the routing server 300 is thus arranged for establishing a suitability of the first streaming server 400. In case the routing server 300 were also to issue configuration instructions to the second streaming server 402, the routing server 300 may also establish the suitability of the second streaming server 402.
The suitability is data which is indicative of whether the streaming server 400 can stream the media content to the client 200. Moreover, the suitability may be indicative of how well the streaming server can supply the media content to the client 200. The suitability may be a part of a performance index comprising the suitability of all of the plurality of streaming servers 400-402 for enabling establishing their relative suitability. The suitability may be directly indicative of the suitability of the streaming server 400 for streaming the requested media content, e.g., by indicating that the media content is present on the streaming server and the streaming server having sufficient communication bandwidth. However, the suitability may also be indirectly indicative thereof, e.g., indicate a hardware configuration of the particular streaming server, its load as expressed in, e.g., memory usage, processor usage or communication bandwidth, or a general availability of types of media content. The suitability may also be indicative of an expected quality of the connection within the communication network between the streaming server 400 and the client 200.
The server system 100 as depicted in Fig. 1 enables the routing server 300 to configure the first streaming server 400 and to establish its suitability. The routing server 300 then redirects the media request 202 as received from the client 200 to a particular one of the plurality of streaming servers based on based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client.
The routing server 300 as shown in Fig. 1 may only know the suitability of the first streaming server 400. In this case, the routing server 300 may decide to redirect the media request 202 of the client 200 to the first streaming server 400 if the routing server 300 determines that the first streaming server 400 is sufficiently suitable for streaming the media content to the client 200. For that purpose, the routing server 300 may provide an address 208 of the first streaming server 400 to the client 200. In response, the client 200 may send a further media request 204 to the first streaming server 400. Alternatively, the client may resend the earlier media request 202 to the first streaming server 400. In response, the first streaming server 400 may start streaming the media content 210 to the client 200.
If the routing server 300 determines that the first streaming server 400 is not sufficiently suitable for streaming the media content to the client 200, the routing server 300 may decide to redirect the media request 202 of the client 200 to the second streaming server 402 without explicitly knowing the suitability of the second streaming server 402 for streaming the media content to the client 200. As a result, the client 200 may send the further media request 206 to the second streaming server 402. Preferably, however, the routing server 300 redirects the media request 202 based on knowledge of the suitability of all of the plurality of streaming servers 400-402 in order to redirect the media request 202 to one of the plurality of streaming servers 400-402 which is most suitable for streaming the media content to the client 200. This may be the case when, for example, the routing server 300 also configures the second streaming server 402 and establishes its suitability.
Alternatively or additionally, the routing server 300 may obtain the suitability of other streaming servers, e.g., the second streaming server 402, from another routing servers. It is noted that this scenario will be discussed further in reference to Fig. 4.
It is noted that Fig. 1 shows the routing server 300 redirecting the media request 202 by providing the client 200 with an address 208 of a particular one of the plurality of streaming servers 400-402. Alternatively, the routing server 300 may also be arranged for forwarding the media request to the particular one of the plurality of streaming servers 400-402. Of course, the routing server 300 may also employ other means which enable the media request 202 of the client 200 to be appropriately redirected.
The server system 100 may further be arranged as follows: each of the plurality of streaming servers 400-402, i.e., in the example of Fig. 1 the first streaming server 400 and the second streaming server 402, may be arranged for receiving transfer instructions 314 from a routing server 300 within the server system 100 for, upon execution of the transfer instructions 314, transferring media content 412, 414 to and/or from another one of the plurality of streaming servers 400-402. Moreover, the at least one routing server 300, i.e., in the example of Fig. 1 the one routing server 300, may be arranged for issuing the transfer instructions 314 to a streaming server 400-402 within the server system 100.
By way of example, Fig. 1 depicts the first routing server 300 issuing transfer instructions 314 to the first streaming server 400. The transfer instructions 314 may cause the first streaming server 400 to send media content 412 to the second streaming server 402 and/ or to receive media content 414 from the second streaming server 402. Although not shown in Fig. 1 , the transfer instructions, when issued to the second streaming server 402, may cause the second streaming server 402 to send media content 414 to the first streaming server 400, or to receive media content 412 from the first streaming server 400. In general, a routing server 300 may manage the media content on at least one of the plurality of streaming servers 400-402 by suitable issuing transfer instructions 314 thereto. It is noted that a transfer instruction may be considered as a special type of configuration instruction, in that it configures a streaming server to send or receive media content. Accordingly, the configuration instruction as issued by the routing server may constitute a transfer instruction.
The routing server 300 may be further arranged for establishing the suitability of the streaming server 400 for streaming the media content 210 to the client 200 further based on the transfer instructions 314. The routing server 300 may therefore take into account which media content has been send to 412 or received by 414 the streaming server 300 to determine whether the streaming server 300 can supply the media content to the client 200, and if so, may determine how well the streaming server 300 can supply the media content to the client 200 based the issued transfer instructions 314.
The server system 100 may further be arranged as follows: each of the plurality of streaming servers 400-402 may be arranged for providing utilization information 316 indicative of its degree of utilization to the routing server 300, and the at least one routing server 300 may be arranged for i) receiving the utilization information 316 from the streaming server 400, and ii) generating the configuration instructions 312 and/or the transfer instructions 314 based on the utilization information 316.
By way of example, Fig. 1 depicts the first streaming server 400 providing utilization information 316 to the routing server 300. Utilization information 316 may relate to, e.g., current communication bandwidth and/or processor load of the streaming server 400. The utilization information 316 may be provided, e.g., in the form of a live feed of statistical data, or in the form of a log file of recent media requests. The utilization information 316 may be indicative of how well the streaming server 400 is able to stream media content 210 to a current client 200, i.e., one that is to be redirected by the routing server 300. In particular, the utilization information 316 may comprise, for each client 200 currently connected to the streaming server 400, an identification of the media content that is currently being streamed, a type of the connection to the client, a time of the connection being established, a number of seconds that the connection is active, a number of bytes that has been sent and received, and an IP address of the client. Moreover, for each client which is no longer connected to the streaming server 400, i.e., for past clients, the above information may be included in the utilization information 316 as well, with the exception that the number of seconds that the connection is active may be replaced by a number of seconds that the connection was active. Furthermore, the utilization information 316 may comprise, for one or more parts of media content as well as for the streaming server 400 in its entirety, a current transmission bandwidth in bytes per second for sending and/or receiving, and a number of clients being connected to the streaming server 400 which are being provided with said media content.
The routing server 300 may be arranged for generating the configuration instructions 312 based on the utilization information 316, e.g., to reconfigure the streaming server 400 based on the utilization of the streaming server 400. For example, if the streaming server 400 is found to be underutilized, the routing server 300 may generate configuration instructions 312 which configure the streaming server 400 to, e.g., remove streaming limitations, add support for additional streaming protocols, stream at a higher quality and/or bandwidth, etc. Similarly, if the streaming server 400 is found to be near its maximum utilization, the routing server 300 may generate configuration instructions 312 which configure the streaming server 400 to, e.g., add streaming limitations, remove support for certain streaming protocols, stream at a lower quality and/or bandwidth, etc.
Alternatively or additionally, the routing server 300 may be arranged for generating the transfer instructions 314 based on the utilization information 316, e.g., to manage the media content on the streaming server 400 based on the utilization of the streaming server 400. For example, if the streaming server 400 is found to be near its maximum utilization, the routing server 300 may generate transfer instructions 314 which instruct the streaming server 400 to send certain media content 412 to another streaming server 402. The routing server 300 may then lower the utilization of the streaming server 400 by redirecting media requests for said media content to the other streaming server 402.
It is noted that the at least one routing server 300 may establish the suitability of the streaming server 400 for streaming the media content 210 to the client 200 further based on the utilization information 316. Hence, the routing server 300 may avoid redirecting media requests 204-206 to the streaming server 400 if the streaming server 400 is near its 15
maximum utilization, e.g., by redirecting the media requests 204-206 to another streaming server 402. Similarly, if a streaming server 400 is under-utilized, the routing server 300 may preferably redirect media requests to the under-utilized streaming server 400.
Additionally or alternatively, the routing server 300 may be arranged for generating the configuration instructions 312 and/or the transfer instructions 314 based on the media request 202. Hence, the media request 202 may determine whether, and if so, which kind of configuration instructions 312 and/or transfer instructions 314 are issued to the streaming server 400. The media request 202 may be a current media request 202. Hence, the routing server 300 may generate the configuration instructions 312 and/or the transfer instructions 314 to accommodate the media request 202 of a current client 200, e.g., by transferring the requested media content from a streaming server 400 which is near its maximum utilization to another streaming server 402 that is under-utilized. Additionally or alternatively, the routing server 300 may take into account previous media requests in generating the configuration instructions 312 and/or the transfer instructions 314.
In general, the routing server 300 may analyze the media requests of clients to establish a current demand for media content and/or anticipate a future demand for media content. The routing server 300 may then manage the supply of media content by generating the configuration instructions 312 and/or the transfer instructions 314 for the streaming server 400 accordingly. It will be appreciated that many different kind of configuration instructions 312 and/or transfer instructions 314 may be generated based on the media request 202 and/or the previous media requests. It is noted that the
aforementioned examples do not constitute a limitation of the present invention.
Fig. 2 shows a method 500 of controlling a server system for streaming media content to a client via a communications network, the server system comprising a plurality of streaming servers, each comprising respective media content and being arranged for accepting a media request from the client for streaming the media content to the client, and at least one routing server, arranged for i) receiving the media request from the client and ii) redirecting the media request to a particular one of the plurality of streaming servers based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client. The method 500 itself comprises, on each of the plurality of streaming servers, i) receiving 510 configuration instructions from a routing server in a step titled "ROUTING SERVER RECEIVING CONFIGURATION INSTRUCTIONS", and ii) executing 520 the configuration instructions for establishing a configuration of a respective one of the plurality of streaming servers in a step titled "ROUTING SERVER EXECUTING CONFIGURATION INSTRUCTIONS". Moreover, the method 500 comprises, on the at least one routing server, j) issuing 530 the configuration instructions to a streaming server in a step titled "STREAMING SERVER ISSUEING THE CONFIGURATION INSTRUCTIONS", and jj) establishing 540 the suitability of the streaming server for streaming the media content to the client based on the configuration instructions in a step titled "STREAMING SERVER ESTABLISHING THE SUITABILITY OF THE STREAMING SERVER".
The method 500 may correspond to an operation of the server system 100, and is explained in reference to the server system 100. It will be appreciated, however, that the method 500 may be performed in separation of said system 100. Moreover, it is noted that the method steps of the method 500 may be performed in any suitable order. In particular, it is noted that the steps performed on the at least one routing server may be performed in parallel to the steps performed on each of the plurality of streaming servers.
Fig. 3 shows a computer program product 560 comprising instructions for causing a server system to perform the method according to the present invention. The computer program product 560 may be comprised on a computer readable medium 550, for example in the form of as a series of machine readable physical marks and/or as a series of elements having different electrical, e.g., magnetic, or optical properties or values.
Alternatively or additionally, a computer program product may be provided comprising instructions for causing a routing server according to the present invention to perform specifically those method steps 530-540 of the aforementioned method 500 which are to be performed on the routing server. Alternatively or additionally, a computer program product may be provided comprising instructions for causing a streaming server according to the present invention to perform specifically those method steps 510-520 of the
aforementioned method 500 which are to be performed on the streaming server.
Fig. 4 shows a server system 120 comprising a plurality of routing servers 300-308. Each of the plurality of routing servers 300-308 may be configured or arranged in correspondence with the at least one routing server 300 as depicted in Fig. 1. In addition, each of the plurality of routing servers 300-308 is arranged for communicating with other ones of the plurality of routing servers 300-308. Fig. 4 shows each of the plurality of routing servers 300-308 being arranged for communicating with all of the other ones of the plurality of routing servers 300-308. This is shown in Fig. 4 illustratively by each of the plurality of routing servers 300-308 being connected to each other by a bidirectional arrow 310.
Consequently, Fig. 4 shows a star-shaped communication network being established amongst the routing servers. It is noted that the actual communication network may differ from that depicted in Fig. 4. For example, in case the communication network is the Internet, it may be suffice that each of the plurality of routing servers 300-308 is connected to the Internet to enable communication amongst the plurality of routing servers 300-308.
The server system 120 further comprises a plurality of streaming servers 400- 408, each being arranged for receiving the configuration instructions 312 from an associated one of the plurality of routing servers 300-308. As a consequence, each of the plurality of streaming servers 400-408 has one associated one of the plurality of routing servers 300- 308. For example, a first streaming server 400 is associated with a first routing server 300, a second streaming server 402 is associated with a second routing server 302, etc. In the server system 120, each of the plurality of streaming servers 400-408 is associated with exactly one of the plurality of routing servers 300-308. However, a multiple streaming servers may be associated with a same one of the plurality of routing servers 300-308. For example, a fourth routing server 306 may be associated with a fourth streaming server 406 and a fifth streaming server 407. Hence, each of said streaming servers 406-407 is arranged for receiving the configuration instructions from said fourth routing server 306.
In turn, each of the plurality of routing servers 300-308 is arranged for establishing the suitability of the associated one of the plurality of streaming servers. Hence, the first routing server 300 establishes the suitability of the first streaming server 400 streaming the media content to the client 200. Similarly, the fourth streaming server 306 establishes the suitability of both the fourth streaming server 406 and the fifth streaming server 407 for streaming the media content to the client 200, etc.
Moreover, each of the plurality of routing servers 300-308 is arranged for sharing said suitability with the other ones of the plurality of routing servers 300-308. Hence, each one of the plurality of routing servers 300-308 may know of each one of the plurality of streaming servers 400-408 its suitability for streaming the media content to the client. As such, each of the plurality of routing servers 300-308 may redirect a media request 200 received from a client 200 to a particular one of the plurality of streaming servers 400-408 based on knowing the suitability of each of the plurality of streaming servers 400-408.
Hence, a routing server 300 may redirect the media request 200 to a particular streaming server which is most suitable for streaming the media content to the client 200.
For sake of clarity, all of the communication between a routing server and a streaming server is represented in Fig. 4 by a bidirectional arrow 410. It is noted that the communication may be similar as depicted in Fig. 1 , i.e., comprise configuration instructions 312 and transfer instructions 314 being sent to the streaming server, and utilization information 316 being sent to the routing server. Additionally, the communication between streaming servers, e.g., comprising media content being transferred between streaming servers, is not shown in Fig. 4 but may take place within the server system 120.
The plurality of routing servers 300-308 may be arranged for, when one of the plurality of routing servers 400-408 experiences a failure, establishing, for the associated one of the plurality of streaming servers 400-408, another one of the plurality of routing servers as the associated one of the plurality of routing servers. A failure of a routing server may be detected by others of the plurality of routing servers, e.g., by not being able to communicate with the particular routing server. In principle, the streaming server associated with the routing server that experiences the failure may not be able to receive configuration instructions and/or transfer instructions anymore due to the associated routing server experiencing the failure. As a consequence, the streaming server may not be manageable anymore within the server system 120. To avoid this from occurring, the streaming server may be assigned another one of the plurality of routing server. For example, another one of the plurality of routing servers 300-308 may send the streaming server a configuration instruction causing the streaming server to establish said routing server as the associated routing server. Hence, the streaming server may subsequently receive the configuration instructions and transfer instructions from the newly associated routing server, and may provide its the utilization information thereto. Effectively, the newly associated routing server may take the place of the previous routing server within the server system 120.
The above establishing may performed by each of the plurality of routing servers 300-308 using a same algorithm in order to establish a same one of the plurality of routing servers 300-308 as the associated one of the plurality of routing servers irrespective of which one of the plurality of routing servers initiates the above reassignment.
As a result, a failure of one of the plurality of routing servers 300-308 may be automatically detected within the server system 120, and the streaming server associated with the routing server experiencing the failure may automatically be assigned a new routing server. It is noted that the redirecting of media requests may continue uninterrupted while the streaming server is still associated with the routing server experiencing the failure, i.e., while the streaming server is temporarily "unmanaged", since the suitability of said streaming server is shared with the other ones of the plurality of routing servers 300-308. Hence, other routing servers 300 may continue to redirect media requests based on its suitability.
In general, it is noted that a routing server being associated with a streaming server may involve the routing server storing address information, e.g., a domain name or IP address, of the particular streaming server, and vice versa. The server system 120 may further comprise an assignment server 140 which, in response to a request 142 from the client 200, assigns one of the plurality of routing servers 300-308 to the client 200. Hence, instead of the client 200 having an address of one of the plurality of routing servers 300-308 preconfigured, the client 200 may contact the assignment server 140 and be dynamically assigned to one of the plurality of routing servers 300-308. The assignment server 140 may be a domain name serve, the client 200 may be provided with a domain name, and the domain name server 140 may, upon receiving a request from the client 200 for resolving the domain name to an IP address, issue an IP address of one of the plurality of routing servers 300-308. However, other types of assignment servers may be advantageously used as well.
The assignment may be based on an assignment scheme. The assignment scheme may be arranged for distributing subsequent clients over the plurality of routing servers 300-308. The assignment scheme may or may not be arranged for assigning subsequent clients to different ones of the plurality of routing servers 300-308. An example of an assignment scheme which may be advantageously used is a so-termed round-robin assignment scheme, which causes the assignment server to, based on a list of routing servers, assign a next routing server on the list to a next client, and to jump to the beginning of the list once the assignment server arrives at the end of the list.
Given the availability of an assignment server, each of the plurality of streaming servers 400-408 may be arranged for, when the respective associated one of the plurality of routing servers 300-308 experiences a failure, using the assignment server 140 to establish another one of the plurality of routing servers 300-308 as the associated one of the plurality of routing servers 300-308. Similarly, each of the plurality of streaming servers 400-408 may be arranged for, during an initialization phase, establishing the respective associated one of the plurality of routing servers 300-308 using the assignment server 140. Hence, each of the plurality of streaming servers 400-408 may itself determine a new associated routing server by, e.g., requesting an address thereof from the assignment server 140. This may be either during an initialization phase, e.g., start-up of the streaming server, or during a failure of the associated one of the plurality of routing servers 300-308.
Media streaming to a client 200 may be initiated as follows in the aforementioned server system 120. The client 200 may request an address of a routing server by sending a request 142 to the assignment server 140. The assignment server 140 may, based on an assignment scheme, provide the client 200 with an address 144 of the one of the plurality of routing servers 300-308. By means of example, the address 144 may be of the first routing server 300. The client 200 may then send a media request 202 to the first routing server. In response, the first routing server 300 may provide an address of the second streaming server 402. The client 200 may then send a further media request 204 to the second streaming server 402. In response, the second streaming server 402
commences streaming the requested media content 210 to the client.
In general, it is noted that the term server refers to a computing entity having the functionality of providing the client access to the media content. Nowadays, such functionality is typically provided by server software which is executed on hardware, with a wide range of possibilities existing on how to allocate the hardware to the server software. For example, each server of the aforementioned server systems may correspond to server software running on a different physical computer. However, one or more servers of said server systems may also be allocated to a virtualized machine provided by a computer, with the computer providing, i.e., hosting, multiple virtual machines and therefore possible hosting multiple servers. It is noted that the concepts known in the field of hardware virtualization may be applied to the present invention. In addition, one or more servers of said server system may correspond to software applications or software service, thereby allowing a computer to host multiple servers without needing to employ virtualization.
The aforementioned server systems may be a co-located system of servers, i.e., may be physically co-located, e.g., in a same building of a data center. However, said server system may be equally formed by servers that are physically distributed over multiple locations. In such a case, a server system is formed implicitly by virtue of the servers within the server system being arranged for communicating with each other. For example, a first routing server and a first streaming server may be both located in the Amsterdam, NL, whereas a second routing server may be located in New York City, US and a second streaming server may be located in Toronto, CA. Moreover, the client 200 may be a personal computer located in Shanghai, CN. The client 200 may be a software application or software service running on personal computer, set top box, tablet device, Smartphone, etc. However, the client 200 may also take other suitable forms.
It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be able to design many alternative embodiments.
In the claims, any reference signs placed between parentheses shall not be construed as limiting the claim. Use of the verb "comprise" and its conjugations does not exclude the presence of elements or steps other than those stated in a claim. The article "a" or "an" preceding an element does not exclude the presence of a plurality of such elements. The invention may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer. In the device claim
enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.

Claims

CLAIMS:
1 . Server system (100, 120) for streaming media content (210, 212) to a client (200) via a communications network, comprising:
a plurality of streaming servers (400-408), each comprising respective media content (210, 212) and being arranged for accepting a media request (202-206) from the client (200) for streaming the media content to the client;
at least one routing server (300), arranged for i) receiving the media request (202) from the client (200) and ii) redirecting the media request (204-206) to a particular one of the plurality of streaming servers (400-408) based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client;
and wherein:
each of the plurality of streaming servers (400) is arranged for receiving configuration instructions (312) from one of the at least one routing server (300) for, upon execution of the configuration instructions, establishing a configuration of the respective one of the plurality of streaming servers; and
- the at least one routing server (300) is arranged for i) issuing the configuration instructions (312) to at least one of the plurality of streaming servers (400), and ii) establishing the suitability of the at least one of the plurality of streaming servers for streaming the media content (210, 212) to the client (200) based on the configuration instructions.
2. Server system (100, 120) according to claim 1 , wherein:
each of the plurality of streaming servers (400) is arranged for receiving transfer instructions (314) from the routing server (300) for, upon execution of the transfer instructions, transferring media content (412, 414) to and/or from another one of the plurality of streaming servers; and
the at least one routing server (300) is arranged for i) issuing the transfer instructions (314) to the streaming server (400), and ii) establishing the suitability of the streaming server for streaming the media content (210, 212) to the client (200) further based on the transfer instructions.
3. Server system (100, 120) according to claim 2, wherein: each of the plurality of streaming servers (400) is arranged for providing utilization information (316) indicative of its degree of utilization to the routing server (300); and
the at least one routing server (300) is arranged for i) receiving the utilization information (316) from the streaming server (400), and ii) generating the configuration instructions (312) and/or the transfer instructions (314) based on the utilization information.
4. Server system (100, 120) according to claim 2 or 3, wherein the at least one routing server (300) is arranged for generating the configuration instructions (312) and/or the transfer instructions (314) further based on the media request (202-206).
5. Server system (120) according to any one of claims 1 to 4, wherein:
the at least one routing server is a plurality of routing servers (300-308), each of the plurality of routing servers being arranged for communicating with other ones of the plurality of routing servers;
and wherein
each of the plurality of streaming servers (400-408) is arranged for receiving the configuration instructions (312) from an associated one of the plurality of routing servers (300-308); and
- each of the plurality of routing servers (300-308) is arranged for i) establishing the suitability of the associated one of the plurality of streaming servers, and ii) sharing data indicative of said suitability with the other ones of the plurality of routing servers.
6. Server system (120) according to claim 5, wherein the plurality of routing servers (300-308) is arranged for, when one of the plurality of routing servers experiences a failure, establishing, for the associated one of the plurality of streaming servers (400-408), another one of the plurality of routing servers as the associated one of the plurality of routing servers.
7. Server system (120) according to claim 6, wherein said establishing is performed by each of the plurality of routing servers (300-308) using a same selection algorithm for establishing a same one of the plurality of routing servers (400-408) as the associated one of the plurality of routing servers.
8. Server system (120) according to any one of claims 5 to 7, further comprising an assignment server (140) for, in response to a request (142) from the client, assigning one of the plurality of routing servers (300-308) to the client (200) based on an assignment scheme, the assignment scheme being arranged for distributing subsequent clients over the plurality of routing servers.
9. Server system (120) according to claim 8, wherein each of the plurality of streaming servers (400-408) is arranged for, when the respective associated one of the plurality of routing servers (300-308) experiences a failure, using the assignment server (140) for establishing another one of the plurality of routing servers as the associated one of the plurality of routing servers.
10. Server system (120) according to claim 8 or 9, wherein each of the plurality of streaming servers (400-408) is arranged for, during an initialization phase, establishing the respective associated one of the plurality of routing servers (300-308) using the assignment server (140).
1 1 . Streaming server (400) configured for use in the server system of any one of claims 1 to 10.
12. Streaming server (400) according to claim 1 1 , arranged for establishing its configuration under exclusive control of the configuration instructions issued by the routing server (300).
13. Routing server (300) configured for use in the server system of any one of claims 1 to 10.
14. Method (500) of controlling a server system for streaming media content to a client via a communications network, the server system comprising:
- a plurality of streaming servers, each comprising respective media content and being arranged for accepting a media request from the client for streaming the media content to the client;
at least one routing server, arranged for i) receiving the media request from the client and ii) redirecting the media request to a particular one of the plurality of streaming servers based on a suitability of the particular one of the plurality of streaming servers for streaming the media content to the client;
and the method comprising:
on each of the plurality of streaming servers, i) receiving (510) configuration instructions from one of the at least one routing server, and ii) executing (520) the configuration instructions for establishing a configuration of the respective one of the plurality of streaming servers; and
on the at least one routing server, j) issuing (530) the configuration instructions to at least one of the plurality of streaming servers, and jj) establishing (540) the suitability of the at least one of the plurality of streaming servers for streaming the media content to the client based on the configuration instructions.
15. Computer program product (560) comprising instructions for causing a server system to perform the method according to claim 14.
PCT/EP2013/056857 2012-04-06 2013-04-02 Server system for streaming media content to a client WO2013149982A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261621129P 2012-04-06 2012-04-06
US61/621,129 2012-04-06

Publications (1)

Publication Number Publication Date
WO2013149982A1 true WO2013149982A1 (en) 2013-10-10

Family

ID=48141920

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2013/056857 WO2013149982A1 (en) 2012-04-06 2013-04-02 Server system for streaming media content to a client

Country Status (1)

Country Link
WO (1) WO2013149982A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103945198A (en) * 2014-05-13 2014-07-23 高新兴科技集团股份有限公司 System and method for controlling streaming media route of video monitoring system
WO2019112844A1 (en) * 2017-12-05 2019-06-13 Zoll Medical Corporation Medical equipment management

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020157113A1 (en) * 2001-04-20 2002-10-24 Fred Allegrezza System and method for retrieving and storing multimedia data
WO2011049500A1 (en) * 2009-10-23 2011-04-28 Telefonaktiebolaget Lm Ericsson (Publ) A method and arrangement in a communication network for selecting network elements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020157113A1 (en) * 2001-04-20 2002-10-24 Fred Allegrezza System and method for retrieving and storing multimedia data
WO2011049500A1 (en) * 2009-10-23 2011-04-28 Telefonaktiebolaget Lm Ericsson (Publ) A method and arrangement in a communication network for selecting network elements

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIAOBO ZHOU ET AL: "Request redirection and data layout for network traffic balancing in cluster-based video-on-demand servers", PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM., PROCEEDINGS INTERNATIO NAL, IPDPS 2002, ABSTRACTS AND CD-ROM FT. LAUDERDALE, FL, USA 15-19 APRIL 2002, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 15 April 2002 (2002-04-15), pages 127 - 134, XP010591162, ISBN: 978-0-7695-1573-1 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103945198A (en) * 2014-05-13 2014-07-23 高新兴科技集团股份有限公司 System and method for controlling streaming media route of video monitoring system
CN103945198B (en) * 2014-05-13 2018-04-20 高新兴科技集团股份有限公司 A kind of system and method for controlling video monitoring system Streaming Media route
WO2019112844A1 (en) * 2017-12-05 2019-06-13 Zoll Medical Corporation Medical equipment management
US11424024B2 (en) 2017-12-05 2022-08-23 Zoll Medical Corporation Medical equipment management
US11955231B2 (en) 2017-12-05 2024-04-09 Zoll Medical Corporation Medical equipment management

Similar Documents

Publication Publication Date Title
CN113826363B (en) Consistent route advertisement between redundant controllers in a global network access point
US11095602B2 (en) Media streaming system supporting several streaming engines and using content addressing
US7912954B1 (en) System and method for digital media server load balancing
US11178062B2 (en) Orchestrating physical and virtual resources for delivering digital contents
US10069885B2 (en) Bandwidth management for over-the-top adaptive streaming
EP2874378B1 (en) Apparatus for performing server handoff in a name-based content distribution system
US8775661B2 (en) Origin request with peer fulfillment
US8621042B2 (en) Anycast redirect to unicast content download
US20110299543A1 (en) Method and System for Providing Virtual Gateway Services
JP2010504668A (en) Resource delivery method, system, and edge server
WO2021023018A1 (en) Service scheduling method and apparatus
KR20130040236A (en) Method, server and terminal for audio and video on demand
EP3095229B1 (en) Method and nodes for configuring a communication path for a media service
CN103458013A (en) Streaming media server cluster load balancing system and balancing method
US9137300B1 (en) Opportunistic pipe switching
WO2011049500A1 (en) A method and arrangement in a communication network for selecting network elements
US10284381B1 (en) Low latency data distribution in a computing service environment
JP5620881B2 (en) Transaction processing system, transaction processing method, and transaction processing program
BR112016011664B1 (en) COMMUNICATION SYSTEM AND METHOD FOR PERFORMING COMMUNICATION EVENTS, AND COMPUTER READABLE STORAGE MEDIA
US9760370B2 (en) Load balancing using predictable state partitioning
WO2012065549A1 (en) Method and system for content management
WO2013149982A1 (en) Server system for streaming media content to a client
JP4864128B2 (en) Communication system and communication program
WO2012091694A1 (en) Anycast redirect to unicast content download
WO2023109863A1 (en) Content delivery network system and content delivery method

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13717202

Country of ref document: EP

Kind code of ref document: A1

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13717202

Country of ref document: EP

Kind code of ref document: A1