Content Delivery Network (CDN) Selection Using Performance Metrics

By introducing a CDN selection system based on performance indicators in the video distribution system, combining historical data and predicted performance indicators to optimize CDN selection and request allocation, the problem of difficulty in optimizing the playback experience in the existing technology is solved, and a higher quality playback experience and more stable distribution is achieved.

JP7665673B2Active Publication Date: 2025-04-21HULU LLC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023067009
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-08-24
Filing Date
2023-04-17
Publication Date
2025-04-21
Estimated Expiration
2043-04-17

AI Technical Summary

Technical Problem

When selecting a content distribution network (CDN), it is difficult for existing video distribution systems to optimize the playback experience, resulting in inconsistent quality of the playback experience of the clients on different CDNs.

Method used

Through a CDN selection system based on performance indicators, the CDN selection process is optimized. Based on historical data and predicted performance metrics, the system selects CDNs that can provide the highest quality service in combination with allocation restrictions, and optimizes request allocation through "step back state" to ensure that the allocation ratio requirements are met.

Benefits of technology

It improves the quality of the playback experience of the client, ensures the optimization of CDN selection and the stability of allocation, and reduces the waste of resources caused by random selection in the prior art.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007665673000004
    Figure 0007665673000004
  • Figure 0007665673000005
    Figure 0007665673000005
  • Figure 0007665673000006
    Figure 0007665673000006
Patent Text Reader

Abstract

To provide a method, apparatus and a storage medium for receiving a request for an instance of media content in the current session.SOLUTION: A method includes acquiring a state CDN of a content delivery network which is determined for a session in a set of sessions, the state including a first set of values for a performance metric, and the first set of values being associated with the content delivery networks. The method includes determining a second set of values for the performance metric for the current session, the second set of values being associated with the content delivery networks. The method further includes selecting a content delivery network for the request in the current session based on treating the current session as a session in the set of sessions. The session for the current session is after the session for the state in the set of sessions.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application is a continuation of and claims priority to co-pending International Application No. PCT / CN2022 / 107669 (Docket No. DISNP325WO), entitled CONTENT DELIVERY NETWORK (CDN) SELECTION USING PERFORMANCE METRIC, filed July 25, 2022 by DAI et al., which is incorporated by reference in its entirety and for all purposes. [Background technology]

[0002] A video delivery system can use multiple content delivery networks (CDNs) to deliver video to a client. When a client requests a video, the video delivery system can select one of the content delivery networks to handle the request during a playback session. Once a content delivery network is selected, the client communicates with that content delivery network to stream the video.

[0003]

[0003] Different content delivery networks may provide different quality of service (QoS) to different clients. Thus, the content delivery network assigned to a client may affect the playback experience during a playback session. For example, a first content delivery network may provide a first quality of service and a second content delivery network may provide a second quality of service to a client playing a video. When the playback experiences of the first quality of service and the second quality of service are different, it may be desirable for a video delivery system to assign a content delivery network that can provide a higher quality of service to a video playback session, but using random selection, the video delivery system may not optimally assign a content delivery network to a video request. Summary of the Invention

[0004]

[0004] With respect to the following discussion and drawings, it is emphasized that the details shown represent examples for the purpose of explanatory discussion and are presented to explain the principles and conceptual aspects of the present disclosure. In this regard, no attempt is made to show details of the embodiments more than are necessary for a basic understanding of the present disclosure. The following discussion, together with the drawings, will make clear to those skilled in the art how embodiments according to the present disclosure can be practiced. Similar or identical reference numbers may be used to identify or otherwise refer to similar or identical elements in various drawings and supporting descriptions. [Brief description of the drawings]

[0005] [Figure 1]

[0005] FIG. 1 illustrates a simplified system for selecting a content delivery network (CDN), according to some embodiments. [Diagram 2]

[0006] FIG. 2 illustrates a more detailed example of a CDN selection system, according to some embodiments. [Diagram 3]

[0007] FIG. 1 illustrates a simplified flowchart of a method for selecting a content delivery network, according to some embodiments. [Figure 4]

[0008] FIG. 2 illustrates a simplified flowchart of a more detailed method for selecting a content delivery network, according to some embodiments. [Diagram 5]

[0009] 1 illustrates a table of QoS performance for these five sessions in a content delivery network according to some embodiments. [Figure 6A]

[0010] 4A-4C are diagrams illustrating examples of step-back states in a table, according to some embodiments. [Figure 6B]

[0011] 1 is a table illustrating the QoS performance of each content delivery network, according to some embodiments. [Figure 7]

[0012] FIG. 1 illustrates a video streaming system in communication with multiple clients over one or more communication networks, according to one embodiment. [Figure 8]

[0013] 1 is a schematic diagram of a device for viewing video content and advertisements. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0006]

[0014] Techniques for a video distribution system are described herein. In the following description, for purposes of explanation, numerous examples and specific details are set forth to provide a thorough understanding of some embodiments. Some embodiments, as defined by the claims, may include some or all of the features in these examples alone or together with other features described below, and may further include modifications and equivalents of the features and concepts described herein.

[0007]

[0015] The system can select a content delivery network for allocation to a request for media content. The selection can be based on a performance metric that measures the performance of delivery of an instance of the media content across multiple content delivery networks. For example, the performance metric can be a Quality of Service (QoS) performance metric, although other metrics can be used.

[0008]

[0016] In some embodiments, the system may include a restriction on selecting a content delivery network for a request. In some embodiments, the restriction is based on the allocation of the content delivery networks. For example, the video delivery system may have a configuration that sets a restriction on the ratio of requests allocated to each content delivery network. The restriction may be due to contractual obligations with the CDN or other reasons. In some examples, one simple ratio may be that 30% of requests should be allocated to content delivery network #1, 40% of requests should be allocated to content delivery network #2, 20% of requests should be allocated to content delivery network #3, and 10% of requests should be allocated to content delivery network #4.

[0009]

[0017] The system can adjust the selection of content delivery networks based on optimizing a performance metric, such as achieving a maximum overall performance metric, while also considering allocation constraints. The overall performance metric can be based on the maximum of the performance metric of all sessions that received a particular allocation, such as the maximum of the sum of the performance metrics of all sessions that received a particular allocation. The system can process historical data, such as a batch of sessions that each allocated one content delivery network to a request, to determine what was the optimal performance for these sessions. In processing, the optimal performance can also meet the desired allocation. That is, given an allocation of 30% to content delivery network #1, 40% to content delivery network #2, 20% to content delivery network #3, and 10% to content delivery network #4, the system allocates the request to sessions such that the optimal performance is obtained. The maximum overall performance metric is obtained while adhering to the above allocations. The process may then save an intermediate state called a "step-back state," which represents the request prior to the request associated with the step-back state and an overall performance metric for the step-back state (e.g., overall performance prior to the last request in the batch). The system then selects a content delivery network for the current request based on the intermediate state, which treats the current request as a request after the step-back state (e.g., the last request in the batch). The intermediate state is used because it represents the optimal performance for allocating requests to fulfill the allocation up to the last request in the batch. To make the selection, the content delivery network may be assigned a value of the performance metric for the current request. If the intermediate state represents the optimal performance that can be achieved to fulfill the allocation, the process selects a content delivery network for the request to optimize the overall performance using the intermediate state and the current value of the performance metric. For example, the system selects a content delivery network with the optimal overall performance considering the intermediate state and the current value of the performance metric.As described below, this process may select a content delivery network based on a desired allocation while optimizing an overall performance metric for a batch of sessions.

[0010]

[0018] The use of intermediate states can improve the process of selecting a content delivery network. For example, as described below, the process can be performed faster and less storage can be used because the intermediate states are used instead of reprocessing batches of sessions for future requests. In addition, the improved selection of a content delivery network is performed by optimizing the overall value of a performance metric while still considering the allocation. Optimization based on overall performance can be an improvement compared to conventional techniques that may not have taken into account the performance of the content delivery network. The selection of a content delivery network is also performed deterministically based on intermediate states from previous sessions. This type of selection can also be different from changing the selection probabilities used to randomly select a content delivery network. Optimization of the performance metric can result in a better quality experience at the client receiving the media content.

[0011]

[0019] System Overview

[0020] FIG. 1 illustrates a simplified system 100 for selecting a content delivery network 106, according to some embodiments. The system 100 includes content delivery networks (CDNs) 106-1 through 106-N, a client 102, an origin server 104, and a server system 108. A content provider may operate the server system 108 to provide a video delivery service that allows entities to request and receive media content from a library of media content, such as on-demand video and live video. The content provider may use the server system 108 to coordinate the delivery of media content to the client 102. The media content may include various types of content, such as video, audio, or other types of content information capable of being rendered on a computing device. Video may be used for purposes of discussion, although other types of content may also be evaluated. An instance of the media content may be an instance requested for a request. For example, a first instance of media content may be for a first program, a second instance of media content may be for a second program, a third instance may be for the first program, etc.

[0012]

[0021] The content delivery network 106 can deliver instances of media content for video delivery services. The content delivery network 106 can include one or more computing devices, such as servers, that deliver instances of media content to clients 102. A content provider can also operate its own content delivery network in addition to contracting with multiple third-party content delivery networks to assist in the delivery of its media content to clients 102. Although one instance of a client 102 is shown, the content delivery network 106 may be delivering media content to one or more instances of a client 102. The content delivery network 106 can also include multiple computing devices, such as edge nodes, that may be geographically distributed. An edge node can receive segments of media content from an origin server 104 and deliver the segments to another client 102. Any of the servers coupled to the content delivery network 106 can perform the functions described herein. Also, although server system 108 and content delivery network 106 may be described, the functions performed by either may be distributed between the two entities or performed by other entities.

[0013]

[0022] The client 102 may include a computing device such as a smartphone, a set-top box, a tablet device, a living room device, a game console, etc. The client 102 includes a media player 114 capable of playing content. The client 102 may use one of the content delivery networks 106, such as content delivery network #2, to initiate playback of an instance of media content via the media player 114.

[0014]

[0023] The server system 108 can process requests for instances of media content from the clients 102. Although not shown, the server system 108 may be processing requests from multiple clients 102, both sequentially and simultaneously. For example, a client 102 may be using a video streaming service to request multiple videos simultaneously or within a period of time.

[0015]

[0024] The origin server 104 can store a representation of the media content in the storage device 112. The representation can include different content playback characteristics, such as different representations of the media content encoded at different bit rates or qualities (e.g., resolutions). For example, videos may be encoded at different bit rates. In some examples, the client 102 can request an instance of the media content from each content delivery network 106, and each content delivery network 106 can separately respond with a representation of the instance of the media content. For example, each content delivery network 106 can include one or more servers that can request and receive a representation of the media content from the origin server 104. In this case, each content delivery network 106 can deliver an instance of the media content to the client 102.

[0016]

[0025] The server system 108 is configured to select one of the content delivery networks 106 to process a request for an instance of the media content. A content delivery network (CDN) selection system 110 can select a content delivery network for the request and provide selection data representing the selection of the content delivery network 106 to the client 102. The selection data may be provided to the selected content delivery network 106 in addition to or instead of providing it to the client 102. The client 102 can then interact with the selected content delivery network 106, such as content delivery network #2 106-2, to request a segment of the instance of the media content. The content delivery network #2 106-2 then delivers the segment to the client 102, which can display the segment on the media player 114.

[0017]

[0026] The client 102 may experience different playback conditions during playback of an instance of media content. For example, the playback conditions may vary across content delivery networks 106. This results in the instance of content being delivered to the media client 102 with different values ​​of performance metrics. The performance metric may be referred to as quality of service, which may be a measure of the overall performance of the service delivering the instance of media content from the content delivery network 106 to the client 102. Some metrics that may be used to measure the performance metric of the quality of service may be related to network performance, such as packet loss, bit rate, throughput, transmission delay, network availability, jitter, etc. The performance metric may be based on one or more metrics.

[0018]

[0027] The CDN selection system 110 may select one content delivery network 106 for the request based on a selection process. For example, the CDN selection system 110 may use an analysis of performance metrics for multiple content delivery networks 106 to select one content delivery network 106 for the request, which is described in more detail below. In some embodiments, the CDN selection system 110 may perform the selection immediately upon receiving a request for an instance of the media content. That is, the CDN selection system 110 receives a request for an instance of the media content (e.g., a program) and selects one of the content delivery networks #1-#N. The CDN selection system 110 then transmits an identification of the selected content delivery network to the client 102, which may then request the instance of the media content from the selected content delivery network 106. Other methods for conveying the selection of a content delivery network 106 for a request may also be evaluated. For example, the CDN selection system 110 may send a request to the selected content delivery network 106, which can then communicate with the client 102. The selection process is described in more detail below, beginning with FIG.

[0019]

[0028] As the instances of media content are delivered from the selected content delivery network 106 to the client 102, a performance metric may be measured. The measurement of the performance metric may be performed using different methods, for example, the client 102 may send information used to measure the performance metric, and the content delivery network 106 may send the information. For example, if throughput is used, bytes of the instances of media content being delivered over a period of time may be collected. A performance metric based on throughput may then be used to select one content delivery network 106 for subsequent requests for the media content from this client 102 or other clients 102. If throughput is the only performance metric used, the CDN selection system 110 may optimize the overall throughput. If other performance metrics are used, the CDN selection system 110 may optimize a combination of performance metrics.

[0020]

[0029] The following describes a selection process that may select a content delivery network 106 by optimizing a performance metric, such as an overall performance metric. Although the term QoS performance may be used for purposes of discussion, QoS performance may be interchanged with another performance metric. The selection process may use constraints, such as constraints based on the allocation of the content delivery network 106. The allocation may specify a desired distribution of requests to be handled by the content delivery network 106 in a period of time. For example, the allocation may be a ratio, percentage, etc. The allocation may be based on how many requests the content delivery network 106 should handle over a period of time based on different factors, such as agreed upon with the content delivery network 106 for the percentage. In some examples, the allocation may be 11:12:17, where content delivery network A should be allocated 11 requests in a period of time, content delivery network B should be allocated 12 requests in that period of time, and content delivery network C should be allocated 17 requests in that period of time. The CDN selection system 110 uses a selection process that optimizes overall QoS performance in selecting a content delivery network 106 for a request while considering the allocation. This overall QoS performance may be based on optimizing QoS performance over many sessions rather than one session. As described below, the allocation of content delivery networks 106 seeks to minimize drift from a desired allocation while optimizing overall QoS performance. Drift may be when the total allocation of content delivery networks for a request may not adhere to the desired allocation over a period of time. Drift minimization and overall QoS performance optimization may be performed by determining a step-back state in a batch of sessions that optimizes overall QoS performance and treating the current session as the last session in the batch. The step-back state represents the overall performance metric for requests prior to the last request in the batch of sessions while following the desired allocation.The selection process then selects a content delivery network based on the step-back state and the current predicted QoS performance for the current session. The selected content delivery network optimizes the overall QoS performance. Drift may also be minimized over time as a factor of the number of sessions used. For example, drift is bounded because the overall QoS performance values ​​of the step-back state are for states adjacent to the desired allocation. If a batch size of 100 sessions is used and the step-back state is for the first 99 sessions, a drift of approximately 1% (e.g., 1 out of 100) may be experienced when the current session is treated as the 100th session. If the batch size is 1000 sessions and the step-back state is for the first 999 sessions, the drift may be approximately 0.1%. This process is described in more detail below.

[0021]

[0030] CDN Selection System

[0031] 2 illustrates a more detailed example of a CDN selection system 110 according to some embodiments. A request processor 202 receives a request from a client 102 for an instance of media content. Although not shown, the request processor 202 may receive multiple requests for an instance of media content from multiple clients 102. The requests may be for different media content or the same media content. For example, a first request may be for a first program, a second request may be for a second program, and a third request may be for the first program.

[0022]

[0032] The selection process engine 204 may select one content delivery network for the request. Upon selecting the content delivery network 106, the request processor 202 may return the selected content delivery network 106 to the client 102. To perform the selection process, the selection process engine 204 receives allocations for the content delivery networks and values ​​for performance metrics. The values ​​may be predictions of the performance of the content delivery networks in the current session. Based on the allocations and the values ​​for the respective performance metrics, the selection process engine 204 selects one content delivery network 106 for the request that optimizes the overall performance. In some embodiments, the allocation may not change over a period of time. That is, the allocation may not change across multiple selections of content delivery networks 106. The allocation may change at some points in time, but the allocation may not change while the selection process is being performed for the X requests. The performance metrics may change when different metrics are received from the content delivery networks 106 that are delivering the media content to the client 102.

[0023]

[0033] The selection process is now described in more detail below. The CDN selection system 110 may attempt to optimize QoS performance, such as maximizing overall QoS performance as an optimization goal, while taking into account allocation constraints. In some embodiments, the process optimizes overall QoS performance while attempting to meet the allocation. An example is used below, although other examples may be appreciated. In this example, three content delivery networks 106 may be used, referred to as content delivery network A, content delivery network B, and content delivery network C, although other numbers of content delivery networks 106 may be used.

[0024]

[0034] 3 illustrates a simplified flowchart 300 of a method for selecting a content delivery network 106 according to some embodiments. At 302, the CDN selection system 110 receives a request for media content from a client 102 in a current playback session. As discussed above, the selection of a content delivery network 106 may be performed dynamically when a request is received. In one session, a request may be received and playback of an instance of media content may be performed.

[0025]

[0035] At 304, the CDN selection system 110 determines the QoS performance information and further determines an allocation for distributing the request to the content delivery network 106. The QoS performance information may be determined by historical information of the playback session. The QoS information may also be predicted QoS performance information for the current session. The predicted QoS information may be determined in various ways, such as based on past performance. Determining the QoS performance information is described in more detail below with respect to FIG. 4.

[0026]

[0036] At 306, the CDN selection system 110 selects a content delivery network 106 for the request based on the QoS performance information, the predicted QoS performance for the current session, and the allocation. As discussed below with respect to FIG. 4, this selection attempts to optimize overall QoS performance while minimizing drift from the allocation.

[0027]

[0037] 4 shows a flowchart 400 of a more detailed method for selecting a content delivery network 106, according to some embodiments. At 402, the CDN selection system 110 collects QoS performance information for a batch of past sessions. The number of sessions that may be used may vary, such as 100 sessions, 150 sessions, etc. The number of sessions may also be within a period of time, such as the past 24 hours.

[0028]

[0038] At 404, the CDN selection system 110 calculates the optimal performance for the QoS performance information received at 402. For example, for a session received at 402, the CDN selection system 110 can optimize the overall QoS performance to select a content delivery network 106 as the optimization target for the session. The CDN selection system 110 performs the QoS performance optimization using one condition. In this case, the limiting condition is the allocation limit set for each content delivery network 106. An example of the optimization process is described below. In this example, there are three content delivery networks 106 named content delivery network A, content delivery network B, and content delivery network C, and the QoS performance of any one session in these three content delivery networks is calculated as (p A , p B , p C ) Different methods may be used to determine the QoS performance value. In some embodiments, the QoS performance value may be predicted from past sessions, i.e., historical information may be used to predict the QoS that could have been obtained for each content delivery network in one session if the content delivery network had processed the request. Other methods of determining the QoS performance value, such as using interpolation based on historical information, may also be evaluated. If the total number of sessions in these content delivery networks is S, then the QoS performance value may be predicted from past sessions, i.e., historical information may be used to predict the QoS that could have been obtained for each content delivery network in one session if the content delivery network had processed the request. Other methods of determining the QoS performance value, such as using interpolation based on historical information, may also be evaluated. A , S B and S C Then, the CDN selection system 110 calculates the sum of these QoS performances as P A , P B and P C In this setting, the allocation ratio of these content delivery networks can be calculated as T A :T B :T C Therefore, in this case, the optimization goal is "max(P A +P B +P C )" and its limiting constraint is "S A :S B :SC =T A :T B :T C " This means that the maximum overall QoS performance is determined based on the limitations of the content delivery network selected for sessions with equal allocation ratios. In some embodiments, the selection process can be expressed as follows:

[0029]

number

[0030] The function F may be a sum (st) of terms of the overall QoS performance of the content delivery network with bounded constraints satisfied. In the above, the CDN selection system 110 uses “max(P A +P B +P C) where max is a maximum function and P is the overall QoS performance of each content delivery network. The overall value may represent a cumulative expression of the QoS performance over several sessions, such as the sum of the QoS performances. The CDN selection system 110 uses a state function F(i,j,k) to store intermediate results that represent the maximum overall QoS performance when the traffic of content delivery networks A, B, and C is i, j, and k, respectively. The values ​​of i, j, and k are the values ​​of how many sessions are allocated to each content delivery network A, B, C. For example, the state function F(2,1,3) includes the values ​​i=2, j=1, k=3, where two requests are allocated to content delivery network A, one request is allocated to content delivery network B, and three requests are allocated to content delivery network C. The state function F(i,j,k) represents the optimal value of the overall QoS performance (e.g., the maximum value of this performance metric) of all sessions with a particular allocation defined by i, j, and k. That is, the state function represents the optimal value of the overall QoS performance when the CDN selection system 110 allocates two sessions to content delivery network A, one session to content delivery network B, and three sessions to content delivery network C. Thus, the state function also represents the optimal overall QoS performance that can be obtained subject to the allocation constraints (2, 1, 3).

[0031]

[0039] To select a content delivery network 106 for a current session, the CDN selection system 110 uses a state transition function. For example, the CDN selection system 110 may use a state transition function F(S A ,S B ,S C The following state transition function is used to calculate the optimal overall performance of

[0032]

number

[0033] The state transition function describes the relationship between different (adjacent) state functions. In an example with three content delivery networks, state function F(i,j,k) is adjacent to state functions F(i-1,j,k), F(i,j-1,k) and F(i,j,k-1). That is, if a state function is F(8,12,15), the adjacent state functions are F(7,12,15), F(8,11,15) and F(8,12,14). The three state functions subtract one session from the session value of each content delivery network. In the state transition function, the previous states are represented as “i-1”, “j-1”, “k-1” for content delivery networks A, B and C respectively. Each previous state of each content delivery network has F(i-1,j,k)+p A In this example, F(7,12,15) is the current QoS performance value p A is added to.

[0034]

[0040] The CDN selection system 110 determines the optimal overall performance F(S A ,S B ,S C ) is calculated using the state transition function. For example, A ,S B ,S C In the process of generating the value of F(S), the CDN selection system 110 starts with F(0,0,0). Then, based on F(0,0,0), the results of F(1,0,0), F(0,1,0) and F(0,0,1) are determined using a state transition function. At the end of the process, F(S A ,S B ,S C ) is F(S A -1,S B ,S C ), F(S A ,S B -1,S C ), and F(S A ,S B ,S C-1) is finally determined from the previous state.

[0035]

[0041] Below, an example is described that illustrates the use of state transition functions to determine the optimal overall QoS performance of a batch of playback sessions. For purposes of discussion, five sessions are used, but the number of sessions can vary. For three content delivery networks A, B, and C, the allocation ratio settings for these content delivery networks are T A :T B :T C = 1:2:2. That is, out of the five requests, one request should be allocated to content delivery network A, two requests should be allocated to content delivery network B, and two requests should be allocated to content delivery network C. Therefore, the final number of sessions is S A :S B :S C = 1:2:2, which is the state function F(S A ,S B ,S C )=F(1,2,2) is the final goal.

[0036]

[0042] FIG. 5 shows a table 500 of QoS performance for five sessions in a content delivery network according to some embodiments. Table 500 lists session identifiers in column 502 for the five sessions. The QoS performance for each session is listed in columns 504, 506, and 508 for content delivery networks A, B, and C. The QoS performance may be a predicted performance based on historical information. In this QoS performance metric, a small value of the QoS performance represents a low QoS performance and a large value represents a high QoS performance. For example, an optimal performance metric based on throughput may have a large value and an optimal performance metric based on rebuffer rate may be small. This is because a higher throughput is considered better and a smaller occurrence of rebuffering is considered better. In the following, a maximum function is used to determine the optimal overall QoS performance, but other functions may be used in determining the optimal overall QoS performance, such as a minimum function may be used in the case of the rebuffer rate when the desired sum should be smaller. In this example, in session #1, content delivery network A had a QoS performance of 0.3, content delivery network B had a QoS performance of 0.5, and content delivery network C had a QoS performance of 0.9, i.e., when content delivery network C delivered the requested media content, content delivery network C had the best QoS performance in session #1.

[0037]

[0043] To determine the optimal overall QoS performance across multiple sessions, the CDN selection system 110 calculates the maximum overall QoS performance with a goal of state function F(1,2,2). The following represents a step-by-step process for calculating the maximum overall QoS performance per state. In this process, each possible combination of states can be calculated to arrive at a state function of F(1,2,2). Through this process, the QoS performance for state function F(1,2,2) in this case represents the maximum overall QoS performance possible.

[0038]

[0044] The initial state is F(0,0,0)=0, in which case the sum of the QoS performance is 0 since there were no sessions in the batch of sessions allocated to the content delivery network.

[0039]

[0045] To calculate the state function F(0,0,1), the total count of sessions allocated to all content delivery networks is 1 (e.g., 0+0+1=1) sessions. In this case, the session to be allocated here is session id=1 since this session has allocated only one session. The only adjacent state function to F(0,0,1) is F(0,0,0) since negative values ​​cannot be allowed for allocation (e.g., a session count of -1 is not allowed). The state transition F(0,0,1)=F(0,0,0)+0.9=0.9. The term F(0,0,0) is F(0,0,1-1=0) to determine the adjacent state of the state transition function. As discussed above, the value of F(0,0,0)=0. Also, 0.9 is the QoS performance of the content delivery network C in session 1. This gives an overall QoS performance of 0.9 for this state.

[0040]

[0046] To calculate the state function F(0,0,2), the session to be allocated here is session id=2, and the adjacent state function is F(0,0,1). The value of the state function is F(0,0,2)=F(0,0,1)+0.3=0.9+0.3=1.2.

[0041]

[0047] Since the number of sessions of content delivery network C is limited to not more than two per allocation ratio, the CDN selection system 110 does not calculate the state function F(0,0,3). The next state function can be F(0,1,0). The session to be allocated now is again session id=1 since one session was allocated, but this time the session is allocated to content delivery network B. The value of the state function is F(0,1,0)=F(0,0,0)+0.5=0.5=0.0+0.5=0.5. This value of 0.5 is the maximum overall QoS performance of content delivery network B for session with id=1.

[0042]

[0048] Another state function is F(0,1,1). Here, the session to be allocated is again session id=2, but there are two possible situations. First, the session with id=1 is allocated to content delivery network B, and the session with id=2 is allocated to content delivery network C. In another situation, the allocation of session 1 (content delivery network C) and session 2 (content delivery network B) is reversed. Thus, the adjacent state functions of F(0,1,1) are F(0,1,0) and F(0,0,1). Then, the CDN selection system 110 can calculate the state function F(0,1,1)=max{F(0,1,0)+0.3,F(0,0,1)+0.2}=max{0.5+0.3,0.9+0.2}=max{0.8,1.1}=1.1. In this case, the value of state function F(0,1,0) is determined above to be 0.5, and the value of state function F(0,0,1) is 0.9 above. The maximum of the two values ​​is taken to be 1.1, which represents the maximum overall QoS performance for this state.

[0043]

[0049] Since there are three sessions to calculate the state function F(0,1,2), the session to be allocated is id=3 here. The adjacent state functions of F(0,1,2) are F(0,1,1) and F(0,0,2). The state function is F(0,1,2)=max{F(0,1,1)+1.0,F(0,0,2)+0.5}=max{1.1+1.0,1.2+0.5}=max{2.1,1.7}=2.1. From the above, the value of the state function F(0,1,1) is 1.1, and the QoS performance in session #3 of the content delivery network C is 1.0. Also, from the above, the value of the state function F(0,0,2) is 1.2, and the QoS performance in session #3 of the content delivery network B is 0.5. The maximum value of the two values ​​is taken as 2.1, which represents the maximum overall QoS performance of this state.

[0044]

[0050] To calculate the state function F(0,2,0), the session to be allocated is now again id=2, but there is only one adjacent state function F(0,1,0). Therefore, the state function process is F(0,2,0)=F(0,1,0)+0.2=0.5+0.2=0.7. The value of state function F(0,1,0) is 0.5 from above, and the value of content delivery network B for session #2 is 0.2. The value of 0.7 is the maximum overall QoS performance for this state.

[0045]

[0051] To compute the state function F(0,2,0), the session to be allocated is again id=2, but there is only one adjacent state function F(0,1,0). The state function processing is F(0,2,1)=max{F(0,2,0)+1.0,F(0,1,1)+0.5}=max{0.7+1.0,1.1+0.5}=max{1.7,1.6}=1.7.

[0046]

[0052] To calculate the state function F(0,2,2), the session to be allocated is id=4. There are two adjacent states, and the processing of the state function is F(0,2,2)=max{F(0,2,1)+0.3,F(0,1,2)+0.5}=max{1.7+0.3,2.1+0.5}=max{2.0,2.6}=2.6.

[0047]

[0053] In the following, the processing of other state functions is described, which is similar to the above. The following state functions are calculated as follows:

[0048]

number

[0049]

[0054] The value of the state function may represent the maximum overall QoS performance of previous sessions with that allocation. For example, with state function F(1,2,2)=max{F(1,2,1)+0.3, F(1,1,2)+0.7, F(0,2,2)+0.2}=max{3.3+0.3,3.7+0.7,2.6+0.2}=4.4, the maximum overall QoS performance with an allocation ratio of (1,2,2) is 4.4. That is, selecting content delivery network B for this session should result in the best overall QoS performance of 4.4, which is greater than 3.6 for content delivery network A and 2.8 for content delivery network C. For each content delivery network, the respective value represents the optimal overall QoS performance of the session if that content delivery network is selected for the current session. For example, content delivery network A has a sum of 3.6, content delivery network B has a sum of 4.4, and content delivery network C has a sum of 2.8. These values ​​quantify the overall QoS performance of the session, and as discussed above, the meaning of the values ​​may be based on the performance metric being used, where higher values ​​mean better QoS performance.

[0050]

[0055] Referring back to FIG. 4, at 406, the CDN selection system 110 saves the step-back state from the above calculation at 404. The CDN selection system 110 saves the value of the desired allocation as the step-back state. The step-back state is a state prior to the current session in which one content delivery network should be selected for the request. This step-back state value may represent the optimal overall QoS performance of the previous session. By saving the step-back state, the selection of the content delivery network for the current session may be performed faster. For example, the overall QoS performance of the previous session does not need to be calculated again to process a large number of requests. This reduces the time required to allocate a content delivery network to a request. The step-back state also represents the optimal overall QoS performance that may be achieved from the previous state leading to the allocation. Thus, in addition to optimizing the QoS performance, the allocation ratio for these sessions is respected.

[0051]

[0056] Using the optimal overall performance calculated from past sessions in 404, the CDN selection system 110 selects one content delivery network 106 for the received request based on the results of the step-back state. The CDN selection system 110 selects one content delivery network 106 for the received request based on the step-back result (e.g., a function F(S A -1,S B ,S C ), F(S A ,S B -1,S C ) and F(S A ,S B ,S C -1) to select a content delivery network for future sessions. To accomplish this, the CDN selection system 110 stores the step-back state values ​​required to select a content delivery network for future requests. Specifically, in the previous example of 406, the step-back state is F(S A -1,S B ,S C )=F(0,2,2)=2.6, F(SA ,S B -1,S C )=F(1,1,2)=3.7 and F(S A ,S B ,S C −1)=F(1,2,1)=3.3. The CDN selection system 110 saves the set of overall QoS performance values ​​(2.6, 3.7, 3.3) as the stepback state of the allocation.

[0052]

[0057] At 408, the CDN selection system 110 generates and updates a step-back loop. In some embodiments, the CDN selection system 110 may need to use more step-back states to avoid bias caused by samples in a single group, while in other embodiments, a step-back loop may not be used. In some embodiments, the CDN selection system 110 may add step-back states to create a loop at 408. A loop is a number of step-back states that the CDN selection system 110 uses to select a content delivery network for a request. The CDN selection system 110 may loop through the step-back states, using a new step-back state in the loop for each request received. When the end of the loop is reached, the CDN selection system 110 loops back to the beginning of the loop to reuse the step-back states. For example, the CDN selection system 110 may want to use 200 groups of sessions (e.g., step-back states from 200 groups of 100 sessions each) as step-back states. In the above process at 408, step-back states for one group of 100 sessions were calculated. Another 199 stepback states may also be included in the loop. Bias may be avoided because different stepback states in the loop are used to process new requests, rather than the same stepback state for all requests.

[0053]

[0058] The CDN selection system 110 can form a loop that can change the 100 groups of sessions used over a period of time. One of different methods may be used to update the step-back state loop. For example, the CDN selection system 110 may use a queue, such as a first-in-first-out (FIFO) queue. When a new step-back state is generated, the CDN selection system 110 can store the new step-back state in the queue, and the last step-back state at the head of the queue is dropped. In this way, the CDN selection system 110 incrementally updates the step-back states in the loop. The CDN selection system 110 may also use a one-time update to update the step-back state used. The CDN selection system 110 may accumulate the 100 latest step-back states to form a new loop. The CDN selection system 110 then directly replaces the previous step-back state loop with the new step-back state.

[0054]

[0059] After generating the step-back state loop, the CDN selection system 110 selects 410 an optimal content delivery network 106 for the request. In some embodiments, the CDN selection system 110 can process a single request using the step-back state loop before updating the step-back state loop. In other embodiments, the CDN selection system 110 can process multiple requests using the step-back state loop before updating the step-back state loop.

[0055]

[0060] To select one content delivery network 106 for the request, the CDN selection system 110 can use a state transition function to select a content delivery network 106 that optimizes overall QoS performance. In using the transition function, the CDN selection system 110 can use a step-back state in a loop, considering the request as the last session in a batch, such as the 100th session of 100 sessions. That is, the CDN selection system 110 uses the transition function to determine a content delivery network 106 for the request based on the request being the 100th session after the previous 99 sessions. For example, the CDN selection system 110 selects the content delivery network of the 100th session that has the best overall QoS performance. If the step-back state indicates the optimal overall QoS performance of the content delivery networks of the previous sessions, the CDN selection system 110 can determine which content delivery network of the current session will provide the best overall QoS performance. For example, the predicted QoS performance of the content delivery network of the current session can be added to the QoS performance of each of the step-back states. The resulting value indicates the overall QoS performance of that content delivery network if selected for the current session. By selecting the content delivery network with the best overall QoS performance (step-back state + current QoS), the CDN selection system 110 can maximize the overall QoS performance when selecting a content delivery network. An example of selecting a content delivery network 106 for a request is described below.

[0056]

[0061] 6A illustrates an example of step-back states in a table 600, according to some embodiments. Although three step-back states are shown in this example, there may be more step-back states in the table, such as 200 step-back states. At 602, the table 600 lists step-back state identifiers. In columns 604, 606, and 608, the step-back states are listed for each step-back state identifier for content delivery network A, content delivery network B, and content delivery network C, respectively. As shown at 609, the step-back state determined in 406 is stored in the table 600. Other step-back states may be added in the loop as described above.

[0057]

[0062] In this example, there are four sessions for four requests to be allocated. Figure 6B shows a table 610 showing the QoS performance of each content delivery network according to some embodiments. Column 612 shows the session identifier. Then, columns 614, 616, and 618 show the QoS performance of content delivery A, content delivery B, and content delivery network C, respectively. The QoS performance can be the predicted performance of the content delivery network for the current session. For example, a model may be trained to predict the QoS performance of the content delivery network for the current session, or an interpolation based on past sessions may be used.

[0058]

[0063] The CDN selection system 110 may select a content delivery network 106 for each session shown in table 610. These sessions may be for requests received and processed in sequence. For example, the CDN selection system 110 may receive a request for session 1 and select one content delivery network for session 1. Then, the CDN selection system 110 may receive a request for session 2 and select one content delivery network for session 2, and so on. In general, the values ​​of the step-back states may be examined and the difference in the values ​​in the step-back states may be used to determine the selection of a content delivery network. For session 1, content delivery network B has a QoS performance 0.4 higher than content delivery network C (3.7-3.3=0.4). Also, content delivery network B has a QoS performance 1.1 higher than content delivery network A (3.7-2.6=1.1). Therefore, to select content delivery network C over content delivery network B, the current QoS performance value of content delivery network C must be 0.4 higher than content delivery network B. Similarly, in order to select content delivery network A over content delivery network B, content delivery network A's current QoS performance value must be 1.1 higher than content delivery network B's.

[0059]

[0064] In session 1, the step-back state with ID=1 is the step-back state used to select a content delivery network. As discussed above, the CDN selection system 110 can use different step-back states in a loop to avoid bias. In the following, the state transition function (i, j, k)=max{F(i-1, j, k)+p A , F(i,j-1,k)+p B ,F(i,j,k-1)+p C} to calculate the value for selecting the content delivery network. The value of the state transition function is x A +F(SA -1,S B ,S C )=0.2+2.6=2.8, x B +F(S A ,S B -1,S C )=0.4+3.7=4.1,x C +F(S A ,S B ,S C -1)=0.7+3.3=4.0. In the first term, the step back state is 2.6 for content delivery network A, shown at 620 in FIG. 6A. In this case, the QoS performance of content delivery network A in the current session is 0.2 at 622. Thus, the value of the first term of the state transition function is 0.2+2.6=2.8. In the second term, the step back state is 3.7 for content delivery network B, shown at 624 in FIG. 6A. In this case, the QoS performance of content delivery network B in the current session is 0.4 at 626. Thus, the value of the second term of the state transition function is 0.4+3.7=4.1. In the third term, the step back state is 3.3 for content delivery network C, shown at 628 in FIG. 6A. In this case, the QoS performance of content delivery network C in the current session is 0.7 at 630. Therefore, the value of the third term of the state transition function is 0.7+3.3=4.0. The CDN selection system 110 then determines the maximum term by comparing the determined values, where the values ​​are 2.8, 4.1, and 4.0 for content delivery networks A, B, and C, respectively. The second term of content delivery network B, x B +F(S A ,S B -1,S C ) is largest, the CDN selection system 110 selects content delivery network B for session 1. Selecting content delivery network B may optimize the overall QoS performance because the value of the state transition function is largest. This means that selecting content delivery network B for this request may maximize the overall QoS performance.

[0060]

[0065] In session 2, the step-back state with ID=2 is used to select a content delivery network. This is the second step-back state in the loop. The value of the state transition function is x A +F(S A -1,S B ,S C )=0.3+3.2=3.5, x B +F(S A ,S B -1,S C )=0.5+3.3=3.8, x C +F(S A ,S B ,S C -1)=0.6+3.6=4.2. The third term of the content delivery network C, x C +F(S A ,S B ,S C −1) is the largest, so the CDN selection system 110 selects content delivery network C for session 2.

[0061]

[0066] In session 3, the step-back state with ID=3 is used to select the content delivery network. The value of the state transition function is x A +F(S A -1,S B ,S C )=3.3 <x C +F(S A ,S B ,S C -1)=3.9 <x B +F(S A ,S B -1,S C )=4.1. The second term of content delivery network B, F(S A ,S B -1,S C ) is the largest, so the CDN selection system 110 selects content delivery network B for session 3.

[0062]

[0067] In session 4, the step-back state with ID=1 is used again to select a content delivery network. This is because the step-back states in the loop are used in order, and this step-back state iterates from session 3 to session 1 in the loop after session 3 is used. The value of the state transition function is x A +F(S A -1,S B ,S C )=4.0>x B +F(S A ,S B -1,S C )=3.9>x C +F(S A ,S B ,S C -1) = 3.5. The first term of content delivery network A, x A +F(S A -1,S B ,S C ) is the largest, so the CDN selection system 110 selects content delivery network A for session 4. If there are more sessions, the CDN selection system 110 performs a similar process for step-back states and QoS performance values.

[0063]

[0068] The CDN selection system 110 can treat the QoS performance of all sessions on the content delivery network 106 as forming a fixed distribution, where each session is equivalent and distributed independently. In this case, even if any session is replaced collectively, the results determined by the set traffic allocation can still be maintained since each session is determined independently. For example, over a period of time, the QoS performance of the content delivery network follows a respective probability distribution (e.g., a Gaussian distribution with mean value of 0.9 and variance of 0.01). In this case, for any session, the QoS performance at different CDNs will be a sampling in the distribution. If all samples come from the perfect distribution, 100 samples can be selected arbitrarily and the calculated step-back state will be the same. In other words, these samples can be replaced by each other.

[0064]

[0069] The CDN selection system 110 selects the content delivery network 106 in a manner that provides many advantages: for example, the overall performance of the system may be improved since the QoS performance is improved overall, the desired traffic allocation is also taken into account by the selection, and drift is minimized.

[0065]

[0070] Compared with the random selection of content delivery networks, the following process takes into account the optimized overall QoS performance difference between different content delivery networks 106 when selecting a content delivery network. Taking into account the QoS performance can improve the overall QoS performance, which improves streaming and user experience when better conditions are available during the delivery of media content. The selection makes a deterministic selection to improve the overall performance, but also ensures that the overall allocation ratio is taken into account.

[0066]

[0071] system

[0072] Features and aspects disclosed herein may be implemented in conjunction with a video streaming system 700 in communication with multiple clients over one or more communication networks, as shown in Figure 7. Aspects of the video streaming system 700 are described merely to provide one example application for enabling the distribution and delivery of content prepared in accordance with the present disclosure. It should be understood that the technology is not limited to streaming video applications, but may be adapted to other applications and delivery mechanisms.

[0067]

[0073] In one embodiment, a media programming provider may include a library of media programming. For example, the media programming may be aggregated and provided through a site (e.g., a website), an application, or a browser. A user may access a site or application of a media programming provider and request a media program. A user may be restricted to request only media programs provided by the media programming provider.

[0068]

[0074] In the system 700, video data may be obtained from one or more sources, e.g., from a video source 710, for use as input to the video content server 702. The input video data may comprise raw or edited frame-based video data in any suitable digital format, e.g., Moving Picture Experts Group (MPEG)-1, MPEG-2, MPEG-4, VC-1, H.264 / Advanced Video Coding (AVC), High Efficiency Video Coding (HEVC), or other formats. In the alternative, the video may be provided in a non-digital format and converted to a digital format using a scanner or transcoder. The input video data may comprise various types of video clips or programs, e.g., television program productions, motion pictures, and other content produced as primary content of interest to consumers. The video data may also include audio, or only audio may be used.

[0069]

[0075] The video streaming system 700 may include one or more computer servers or modules 702, 704, or 707 distributed on one or more computers. Each server 702, 704, 707 may include or be operatively coupled to one or more data stores 709, such as databases, indexes, files, or other data structures. The video content server 702 may have access to a data store (not shown) of various video segments. The video content server 702 may provide video segments as directed by a user interface controller in communication with a client. As used herein, a video segment refers to a finite portion of frame-based video data, such as may be used in a streaming video session for viewing a television program, a motion picture, a recorded live performance, or other video content.

[0070]

[0076] In some embodiments, the video ad server 704 can access a data store of relatively short videos (e.g., 10-second, 30-second, or 60-second video ads) configured as advertisements for particular advertisers or messages. The advertisements may be provided for advertisers in exchange for some type of payment, or may comprise promotional messages, public service messages, or some other information for the system 700. The video ad server 704 can serve video advertisement segments when directed by a user interface controller (not shown).

[0071]

[0077] The video streaming system 700 may also include a CDN selection system 110.

[0072]

[0078] The video streaming system 700 may further include an integration and streaming component 707 that integrates video content and video advertisements into streaming video segments. For example, the streaming component 707 may be a content server or a streaming media server. A controller (not shown) may determine the selection or configuration of advertisements in the streaming video based on any suitable algorithm or process. The video streaming system 700 may include other modules or units not shown in FIG. 7, such as a management server, a commerce server, a network infrastructure, an advertisement selection engine, etc.

[0073]

[0079] The video streaming system 700 can be connected to a data communications network 712. The data communications network 712 may comprise a local area network (LAN), a wide area network (WAN), such as the Internet, a telephone network, a wireless cellular telecommunications network (WCS) 714, or any combination of these or similar networks.

[0074]

[0080] One or more clients 720 may be in communication with the video streaming system 700 via the data communications network 712, the wireless cellular telecommunications network 714, or another network. Such clients may include, for example, one or more laptop computers 720-1, desktop computers 720-2, “smart” cell phones 720-3, tablet devices 720-4, network-enabled televisions 720-5, or combinations thereof, via a router 718 for a LAN, via a base station 717 for the wireless cellular telecommunications network 714, or via some other connection. In operation, such clients 720 may transmit and receive data or instructions to and from the system 700 in response to user input or other input received from a user input device. In response, the system 700 may provide the client 720 with video segments and metadata from the data store 709 corresponding to a selection of a media program. The client 720 may output video content from the streaming video segments to a media player using a display screen, projector, or other video output device, as well as receive user input for interacting with the video content.

[0075]

[0081] Distribution of the audio-video data may be performed in various ways, for example, using streaming, from the streaming component 707 to the remote client via computer networks, telecommunications networks, and combinations of such networks. During streaming, a content server continuously streams the audio-video data to a media player component running at least in part on the client, and the media player component may play the audio-video data simultaneously as it receives the streaming data from the server. Although streaming has been discussed, other methods of distribution may also be used. The media player component may begin playing the video data immediately after receiving the initial portion of the data from the content provider. Traditional streaming techniques employ a single provider that distributes a stream of data to a collection of end users. Distributing a single stream to a large audience can require large bandwidth and processing power, and as the number of end users increases, the provider's required bandwidth may increase.

[0076]

[0082] Streaming media can be delivered on demand or live. Streaming allows instant playback at any point in the file. End users can skip through the media file to start playback or change playback to any point in the media file. Thus, end users do not have to wait for the file to download incrementally. Typically, streaming media is delivered from a small number of dedicated servers with high bandwidth capabilities through specialized devices that accept requests for video files and, using information about the format, bandwidth, and structure of these files, deliver the amount of data needed to play the video at the speed needed to play it. The streaming media server can also determine the transmission bandwidth and capabilities of the destination client's media player. The streaming component 707 can communicate with the client 720 using control and data messages to adapt to changing network conditions as the video is played. These control messages can include commands to enable control functions in the client, such as fast forward, fast rewind, pause, or seek to a particular part of the file.

[0077]

[0083] The streaming component 707 transmits only as much video data as is needed, at the rate needed, so that precise control of the number of streams provided can be maintained. A viewer cannot watch high data rate video over a low data rate transmission medium. However, a streaming media server (1) provides users with random access to video files, (2) allows monitoring of who is watching which video program and for how long, (3) uses transmission bandwidth more efficiently because only the amount of data necessary to support the viewing experience is transmitted, and (4) allows more control over content because the video files are not stored on the viewer's computer but are discarded by the media player.

[0078]

[0084] The streaming component 707 can use TCP-based protocols such as HTTP and Real-Time Messaging Protocol (RTMP). The streaming component 707 can also deliver live webcasts and can multicast, allowing multiple clients to tune into a single stream, thereby conserving bandwidth. A streaming media player does not have to rely on buffering the entire video to randomly access any point in a media program. Instead, this random access is accomplished using control messages sent from the media player to the streaming media server. Other protocols used for streaming are Hypertext Transfer Protocol (HTTP) Live Streaming (HLS) or Dynamic Adaptive Streaming over HTTP (DASH). The HLS and DASH protocols deliver video over HTTP via a playlist of small segments that are typically made available at various bitrates from one or more content delivery networks (CDNs). This allows the media player to switch both bitrate and content source on a segment-by-segment basis. This switching helps compensate for network bandwidth changes and infrastructure failures that may occur during the playback of the video.

[0079]

[0085] Delivery of video content through streaming can be accomplished under a variety of models. In one model, a user pays for viewing a video program, for example, by paying a fee for access to a library of media programs, or to restricted portions of media programs, or by using a pay-per-view service. In another model, widely adopted by broadcast television soon after its inception, sponsors pay to present media programs in exchange for the right to present advertisements during or adjacent to the presentation of the program. In some models, advertisements are inserted at predetermined times during a video program, which may be referred to as "ad slots" or "ad breaks." In streaming video, a media player may be configured to prevent a client from playing a video without also playing a predetermined advertisement in a designated ad slot.

[0080]

[0086] Referring to Figure 8, a schematic diagram of a device 800 for viewing video content and advertisements is shown. In selected embodiments, the device 800 may include a processor (CPU) 802 operatively coupled to a processor memory 804 that holds binary coded functional modules for execution by the processor 802. Such functional modules may include an operating system 806 for handling system functions such as input / output and memory access, a browser 808 for displaying web pages, and a media player 810 for playing videos. The memory 804 may hold additional modules not shown in Figure 8, for example, modules for performing other operations described elsewhere herein.

[0081]

[0087] A bus 814 or other communication components may support the transfer of information within the device 800. The processor 802 may be a specialized or dedicated microprocessor that may be configured or operable to perform particular tasks according to the features and aspects disclosed herein by executing machine-readable software code that defines those tasks. Processor memory 804 (e.g., random access memory (RAM) or other dynamic storage device) is connected to the bus 814 or directly to the processor 802 and may store information and instructions to be executed by the processor 802. The memory 804 may also store temporary variables or other intermediate information during the execution of such instructions.

[0082]

[0088] A computer readable medium in storage device 824 is connected to bus 814 and can store static information and instructions for processor 802, for example, storage device (CRM) 824 can store modules 806, 808, 810 and 812 when apparatus 800 is powered off, and the modules from the storage device can be loaded into processor memory 804 when apparatus 800 is powered on. Storage device 824 can include a non-transitory computer readable storage medium that holds information, instructions, or some combination thereof (e.g., instructions that, when executed by processor 802, configure or enable apparatus 800 to perform one or more operations of the methods described herein).

[0083]

[0089] A communication interface 816 may also be connected to the bus 814. The communication interface 816 may provide or support two-way data communication between the device 800 and one or more external devices, e.g., the streaming system 700, optionally via a wired or wireless connection with the router / modem 826. In the alternative, or in addition, the device 800 may include a transceiver 818 connected to an antenna 829, via which the device 800 may communicate wirelessly with a base station of a wireless communication system, or with the router / modem 826. As an alternative, the device 800 may communicate with the video streaming system 700 via a local area network, a virtual private network, or other network. In another alternative, the device 800 may be incorporated as a module or component of the system 700 and communicate with other components via the bus 814 or in some other manner.

[0084]

[0090] Apparatus 800 may be connected (e.g., via bus 814 and graphics processing unit 820) to a display unit 828. Display 828 may include any suitable configuration for displaying information to an operator of apparatus 800. For example, display 828 may include or utilize a liquid crystal display (LCD), a touchscreen LCD (e.g., a capacitive display), a light emitting diode (LED) display, a projector, or other display device for presenting information in a visual display to a user of apparatus 800.

[0085]

[0091] One or more input devices 830 (e.g., an alphanumeric keyboard, microphone, keypad, remote controller, game controller, camera, or camera array) may be connected to the bus 814 via the user input port 822 for communicating information and commands to the apparatus 800. In selected embodiments, the input device 830 may provide or support control of cursor positioning. Such cursor control devices, also referred to as pointing devices, may be configured as a mouse, trackball, trackpad, touch screen, cursor direction keys, or other devices for receiving or tracking physical movements and converting the movements into electrical signals indicative of cursor movement. The cursor control device may be incorporated into the display unit 828, for example using a touch-sensitive screen. The cursor control device may communicate directional information and command selections to the processor 802 and control cursor movement on the display 828. The cursor control device may have two or more degrees of freedom, for example, allowing the device to specify a cursor position in a plane or three-dimensional space.

[0086]

[0092] Some embodiments may be implemented in a non-transitory computer-readable storage medium for use in or in connection with an instruction execution system, apparatus, system, or machine. The computer-readable storage medium contains instructions for controlling a computer system to perform the methods described by some embodiments. The computer system may include one or more computing devices. The instructions, when executed by one or more computer processors, may be configured or operable to perform what is described in some embodiments.

[0087]

[0093] As used throughout this specification and the claims which follow, the words "a," "an," and "the" include the plurals unless the context clearly indicates otherwise. Also, as used throughout this specification and the claims which follow, the meaning of "in" includes "in" and "on," unless the context clearly indicates otherwise.

[0088]

[0094] The above description illustrates various embodiments, along with examples of how aspects of some embodiments may be implemented. The above examples and embodiments should not be considered as the only embodiments, but are presented to illustrate the applicability and advantages of some embodiments as defined by the following claims. Based on the above disclosure and the following claims, other configurations, embodiments, implementations, and equivalents may be used without departing from the scope of the present disclosure as defined by the claims. The invention as described in the claims of the original application is set forth below. [C1] Receiving, by the computing device, a request for an instance of media content in a current session; obtaining, by the computing device, a state of a plurality of content delivery networks determined for a session in a set of sessions, wherein the state includes a first set of values ​​of a performance metric, wherein the first set of values ​​is associated with the plurality of content delivery networks, the method further comprising: determining, by the computing device, a second set of values ​​of the performance metrics for the current session, wherein the second set of values ​​is associated with the plurality of content delivery networks, the method further comprising: selecting, by the computing device, one content delivery network among the plurality of content delivery networks for the request in the current session based on treating the current session as a session in the set of sessions, the session for the current session being after the session for the state in the set of sessions, and wherein the selecting is based on optimizing the first set of values ​​from the state and the second set of values ​​from the current session. [C2] selecting the content delivery network, determining a third set of values ​​of the performance metric for the plurality of content delivery networks using the first set of values ​​and the second set of values ​​for each content delivery network; The method of C1, comprising using the third set of values ​​to select the content delivery network among the plurality of delivery networks for the request in the current session. [C3] Determining the third set of values The method of claim 2, comprising combining a respective first value in a set of first values ​​for a respective content delivery network with a respective second value in the set of second values ​​for the respective content delivery network to generate a respective third value in the set of third values, wherein each content delivery network is associated with a respective third value. [C4] selecting the content delivery network, The method of C3, comprising comparing the respective third values ​​of each content delivery network to one another, wherein the content delivery network is selected based on the comparing. [C5] selecting the content delivery network, The method of C4, comprising selecting a content delivery network having an optimal respective third value in the set of third values. [C6] The method of claim 1, wherein a first value in the first set of values ​​represents an optimal value of an overall performance metric for the session associated with the state and a session in the set of sessions prior to the session associated with the state. [C7] selecting the content delivery network, 2. The method of claim 1, further comprising using the current session as the last session in the set of sessions, where the session associated with the state is adjacent to the last session. [C8] a first value in the set of first values ​​representing an optimal value of an overall performance metric for a content delivery network based on the session associated with the state and sessions in the set of sessions prior to the session associated with the state; The method of C7, wherein an allocation is filled to select each of the content delivery networks within the plurality of content delivery networks across the session associated with the state and the session prior to the session associated with the state. [C9] The method of C1, further comprising causing the selected content delivery network to deliver the instance of the media content to a client that requested the instance of the media content. [C10] determining an optimal performance for the set of sessions based on the performance metrics for the set of sessions; and storing the state based on an optimal performance of the session associated with the state. [C11] The method of C10, wherein the optimal performance is based on an allocation for selecting each of the content delivery networks within the plurality of content delivery networks across the set of sessions. [C12] The method of C11, wherein the allocation specifies a limit on the number of times each content delivery network should be selected within the set of sessions. [C13] determining the optimal performance, The method of claim 10, further comprising determining a plurality of states for different allocations leading to an allocation, wherein one state of the plurality of states represents an optimal value of a performance metric for a respective allocation. [C14] The method of claim 13, wherein the optimal value is an optimized overall value of the performance metric for the respective allocation. [C15] The method of claim 1, further comprising storing a plurality of states for use in processing a plurality of requests for an instance of media content, wherein states of the plurality of states are based on different sets of sessions. [C16] The method of C15, wherein different ones of the states are used to select one content delivery network for different requests for an instance of media content. [C17] The method of C15, wherein states of the plurality of states form a loop in which states are used repeatedly to process requests for instances of media content. [C18] A non-transitory computer-readable storage medium storing computer-executable instructions that, when executed by a computing device, cause the computing device to: receiving a request for an instance of media content in a current session; and and obtaining a state of a plurality of content delivery networks determined for a session in a set of sessions, wherein the state includes a first set of values ​​of a performance metric, wherein the first set of values ​​is associated with the plurality of content delivery networks, the computing device further comprising: and determining a second set of values ​​of the performance metrics for the current session, wherein the second set of values ​​is associated with the plurality of content delivery networks, the computing device further comprising: A non-transitory computer-readable storage medium operable to select one content delivery network among the plurality of content delivery networks for the request in the current session based on treating the current session as a session in the set of sessions, the session for the current session being after the session for the state in the set of sessions, and wherein the selecting is based on optimizing the first set of values ​​from the state and the second set of values ​​from the current session. [C19] selecting the content delivery network, 20. The non-transitory computer-readable storage medium of claim 18, further comprising: using the current session as the last session in the set of sessions, wherein the session associated with the state is adjacent to the last session. [C20] one or more computer processors; and a computer-readable storage medium comprising instructions for controlling the one or more computer processors, the one or more computer processors comprising: receiving a request for an instance of media content in a current session; and and operable to obtain a state of a plurality of content delivery networks determined for a session in a set of sessions, wherein the state includes a first set of values ​​of a performance metric, wherein the first set of values ​​is associated with the plurality of content delivery networks, and wherein the one or more computer processors further: and determining a second set of values ​​of the performance metrics for the current session, wherein the second set of values ​​is associated with the plurality of content delivery networks, the one or more computer processors further operable to select a content delivery network among the plurality of content delivery networks for the request in the current session based on treating the current session as a session in the set of sessions, the session for the current session being after the session for the state in the set of sessions, and wherein the selecting is based on optimizing the first set of values ​​from the state and the second set of values ​​from the current session.

Claims

1. receiving, by the computing device, a request for an instance of media content in a current session; obtaining, by the computing device, a state of a plurality of content delivery networks determined for a session in a set of sessions, wherein the state includes a first set of values ​​of performance metrics from sessions in the set of sessions, wherein the first set of values ​​is associated with the plurality of content delivery networks, the method further comprising: determining, by the computing device, a second set of values ​​of the performance metrics for the current session, wherein the second set of values ​​is associated with the plurality of content delivery networks; the method further comprising: selecting, by the computing device, a content delivery network among the plurality of content delivery networks for the request in the current session based on treating the current session as a session in the set of sessions, the session for the current session being after the session for the state in the set of sessions, and wherein the selecting is based on optimizing the first set of values ​​from the state and the second set of values ​​from the current session.

2. selecting the content delivery network, determining a third set of values ​​of the performance metric for the plurality of content delivery networks using the first set of values ​​and the second set of values ​​for each content delivery network; The method of claim 1 , comprising using the third set of values ​​to select the content delivery network among the multiple delivery networks for the request in the current session.

3. Determining the third set of values 3. The method of claim 2, comprising combining a respective first value in a set of first values ​​for a respective content delivery network with a respective second value in the set of second values ​​for the respective content delivery network to generate a respective third value in the set of third values, wherein each content delivery network is associated with a respective third value.

4. selecting the content delivery network, 4. The method of claim 3, comprising comparing the respective third values ​​of each content delivery network to one another, wherein the content delivery network is selected based on the comparing.

5. selecting the content delivery network, The method of claim 4 , comprising selecting a content delivery network having an optimal respective third value in the set of third values.

6. 2. The method of claim 1, wherein a first value in the first set of values ​​represents an optimal value of an overall performance metric for the session associated with the state and a session in the set of sessions prior to the session associated with the state.

7. selecting the content delivery network, 2. The method of claim 1, comprising using the current session as the last session in the set of sessions, where the session associated with the state is adjacent to the last session.

8. a first value in the set of first values ​​representing an optimal value of an overall performance metric for a content delivery network based on the session associated with the state and sessions in the set of sessions prior to the session associated with the state; 8. The method of claim 7, wherein an allocation is filled to select each of the content delivery networks within the plurality of content delivery networks across the session associated with the state and the session prior to the session associated with the state.

9. The method of claim 1 , further comprising causing the selected content delivery network to deliver the instance of the media content to a client that requested the instance of the media content.

10. determining an optimal performance for the set of sessions based on the performance metrics for the set of sessions; The method of claim 1 , further comprising: storing the state based on an optimal performance of the session associated with the state.

11. The method of claim 10 , wherein the optimal performance is based on an allocation for selecting each of the content delivery networks within the plurality of content delivery networks across the set of sessions.

12. The method of claim 11 , wherein the allocation specifies a limit on the number of times each content delivery network should be selected within the set of sessions.

13. determining the optimal performance, 11. The method of claim 10, comprising determining a plurality of states for different allocations leading to an allocation, wherein one state of the plurality of states represents an optimal value of a performance metric for a respective allocation.

14. The method of claim 13 , wherein the optimal value is an optimized overall value of the performance metric for the respective allocation.

15. 2. The method of claim 1, further comprising storing a plurality of states for use in processing a plurality of requests for an instance of media content, wherein states of the plurality of states are based on different sets of sessions.

16. The method of claim 15 , wherein different ones of the plurality of states are used to select one content delivery network for different requests for an instance of media content.

17. The method of claim 15 , wherein states of the plurality of states form a loop in which states are used repeatedly to process requests for instances of media content.

18. A non-transitory computer-readable storage medium storing computer-executable instructions that, when executed by a computing device, cause the computing device to: receiving a request for an instance of media content in a current session; and acquiring a state of a plurality of content delivery networks determined for a session in a set of sessions, wherein the state includes a first set of values ​​of a performance metric from a session in the set of sessions, wherein the first set of values ​​is associated with the plurality of content delivery networks, the computing device further comprising: and determining a second set of values ​​of the performance metrics for the current session, wherein the second set of values ​​is associated with the plurality of content delivery networks, the computing device further comprising:

11. A non-transitory computer-readable storage medium operable to select a content delivery network among the plurality of content delivery networks for the request in the current session based on treating the current session as a session in the set of sessions, the session for the current session being after the session for the state in the set of sessions, and wherein the selecting is based on optimizing the first set of values ​​from the state and the second set of values ​​from the current session.

19. selecting the content delivery network, 20. The non-transitory computer-readable storage medium of claim 18, comprising using the current session as the last session in the set of sessions, where the session associated with the state is adjacent to the last session.

20. one or more computer processors; and a computer-readable storage medium comprising instructions for controlling the one or more computer processors, the one or more computer processors comprising: receiving a request for an instance of media content in a current session; and operable to obtain a state of a plurality of content delivery networks determined for a session in a set of sessions, wherein the state includes a first set of values ​​of a performance metric from a session in the set of sessions, wherein the first set of values ​​is associated with the plurality of content delivery networks, and wherein the one or more computer processors further: and determining a second set of values ​​of the performance metrics for the current session, wherein the second set of values ​​is associated with the plurality of content delivery networks, the one or more computer processors further operable to select a content delivery network among the plurality of content delivery networks for the request in the current session based on treating the current session as a session in the set of sessions, the session for the current session being after the session for the state in the set of sessions, and wherein the selecting is based on optimizing the first set of values ​​from the state and the second set of values ​​from the current session.

Citation Information

Patent Citations

  • CDN ranking

    EP3742706A1

  • Global constraint-based content delivery network (CDN) selection in a video streaming system

    EP4027616A1

  • Data transfer unit

    JP2012080394A

  • Control device, wireless communication system including control device, program to be executed by computer, and computer-readable recording medium recording program

    JP2020127130A