A method of downloading data, a computing device and a computer program

By deprioritizing speculative content downloads, the method ensures seamless content availability while maintaining network performance and reducing congestion, enhancing user experience and network efficiency.

GB2641044APending Publication Date: 2025-11-19VODAFONE GROUP SERVICES LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
GB2024006738
Authority / Receiving Office
GB · GB
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-05-13
Publication Date
2025-11-19

AI Technical Summary

Technical Problem

Existing methods of speculatively downloading content result in resource utilization and performance issues for other applications and devices due to equal prioritization with normal Internet traffic, leading to degraded user experience and network congestion.

Method used

A method of deprioritizing speculative Internet content by downloading it at a lower priority setting, allowing other applications to maintain performance and utilizing spare network capacity effectively.

Benefits of technology

Improves user experience by ensuring immediate content availability without impacting other applications or devices, optimizing network utilization, and reducing congestion by prioritizing normal traffic.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method of downloading data to a device on a local area network (LAN). At a first point in time, an application, 110, on a user device on a home LAN, 120, sends a speculative content request, 102, for pre-load data to a speculative internet download (SID) service 130 on a residential gateway. The SID service sends a content request, 103, to a content server, 150. The pre-load data content is downloaded, 104, to the SID service with a lower priority setting than that normally used for content and stored at the residential gateway. The SID service provides a uniform resource indicator (URI) of the locally stored pre-loaded data, 106, to the application on the user device. At a second point in time, the application on the user device requests access to the pre-loaded data content which may then be locally downloaded if available. The data may be web, video or game content. The user device may supply an authentication token to the SID service for authentication with the content server. The residential gateway may be a wireless router, home hub, broadband gateway etc. The low priority setting may be a “scavenger class” priority setting, e.g. CS1 (DSCP8).
Need to check novelty before this filing date? Find Prior Art

Description

Field

[0001] The present application relates to a method of downloading content in advance of the content being required by an application. Glossary

[0002] Glossary of terms: IP - Internet Protocol LAN - Local Area Network DNS - Domain Name System CDN - Content Distribution Network RG - Residential Gateway WiFi (RTM) - Wireless Fidelity RTM - Registered Trade Mark HTTP - Hypertext Transfer Protocol HTTPS - Hypertext Transfer Protocol Secure QoE - Quality of Experience ONT - Optical Network Terminal OLT - Optical Line Terminal SID - Speculative Internet Download BNG - Broadband Network Gateway API - Application Programming Interface URI - Uniform Resource Identifier CORS - Cross-origin resource sharing FPGA - Field-Programmable-Gate-Array ASIC - Application-Specific-lntegrated-Circuit DSP - Digital-Signal-Processor CD-ROM - Compact Disc Read-Only Memory DVD-ROM - Digital Versatile Disc Read-Only Memory ROM - Read-Only Memory RAM - Random-Access Memory EEPROM - Electrically Erasable Programmable Read-Only Memory EPROM - Erasable Programmable Read-Only Memory Background

[0003] Computing applications may display content to a user that is obtained via the Internet. This content may be provided on demand. In other words, the content may be downloaded when it is requested by the user and immediately displayed to the user. However, where the content is large and / or where the Internet connection is slow, this may result in delays for the user and a poor user experience.

[0004] To address this issue, some applications download content that the user is likely to request in the future, so that the content is pre-loaded and can be immediately displayed if the user does request it, without having to wait for the content to download. Algorithms exist to identify content that an application may potentially need in the future. The identified content may be content that has a high probability of being required, such as the remaining parts of a film that is already being watched. Alternatively, the identified content may have a lower probability of being required (may be more speculative), such as the start of a video that the user might elect to watch.

[0005] Applications speculatively acquiring large volumes of content data may create issues for other applications running on the same device (e.g., by using storage and processing resources on the device so that resources for other applications are more limited), which can impact the performance and user experience of other applications. Moreover, speculatively acquiring large volumes of content data may create issues for other users / devices sharing the same Internet connection because the speculative content uses download bandwidth of the Internet connection so that bandwidth for other devices sharing the Internet connection is more limited. This may impact the performance of applications running on other devices sharing the same Internet connection.

[0006] This utilisation of resources may be justified where the content is ultimately needed in any case. However, in the case of speculative content that is ultimately not required, this utilisation of resources and potential impact on performance for other applications is unjustified. Therefore, an improved method for speculatively downloading Internet content is desired. Summary

[0007] As described above, applications already speculatively download content and algorithms exist to determine how content is selected for speculative download. However, the speculative content is downloaded at the same priority as normal Internet traffic, which can give rise to the issues described above. The present application therefore proposes a method of deprioritising speculative Internet content (speculatively downloading content at lower priority), so that performance of other applications is unaffected by speculative downloads.

[0008] A method of downloading data is provided. The method comprises communicating at a first point in time, from a first computing device in a local area network, LAN, to a second computing device in the same LAN, a first request from an application running on the first computing device for the second computing device to pre-load data by downloading the data from a remote server with a low priority setting and storing the data on a storage medium in the LAN. The method further comprises communicating at a second point in time later than the first point in time, from the first computing device to the second computing device, a second request for the application to access the data that the application requested the second computing device to pre-load in the first request.

[0009] If the data has been downloaded from the remote server to the second computing device at the second point in time, the method further comprises communicating the data from the second computing device to the first computing device. Otherwise, if the data has not been downloaded from the remote server to the second computing device at the second point in time, the method further comprises communicating a message from the second computing device to the first computing device indicating that the data that the application requested the second computing device to pre-load in the first request is not available.

[0010] Alternatively, if the data has not been downloaded from the remote server to the second computing device at the second point in time, the method may further comprise downloading, by the second computing device and with a normal priority setting, the data that the application requested the second computing device to pre-load in the first request and communicating the data from the second computing device to the first computing device.

[0011] The data may be Internet protocol, IP, data. In other words, the data may be downloaded via the Internet protocol at the Internet layer (e.g., IPv4, IPv6, IPsec, and the like).

[0012] The data may comprise one or more IP packets. The data may be routed through the Internet and / or the ISP network using one or more IP addresses (e.g., IPv4 or IPv6 addresses). The data may be routed between network nodes using IP routing tables.

[0013] The data may be downloaded using an address resolved using Domain Name System, DNS, information.

[0014] The data may be downloaded from the remote server via the Internet.

[0015] The first request may cause the second computing device to download the data from the remote server with a low priority setting and store the data on the storage medium. In other words, the request may be a request for the second computing device to download the data from the remote server with a low priority setting and store the data on the storage medium.

[0016] The term “pre-load data” in this context means obtain data that is not needed yet. The data may be obtained speculatively in anticipation of it being needed in the future.

[0017] The data may not be currently required by the application but may be identified by the application as data that may be required by the application at a later point in time.

[0018] A “low priority setting” in the context of downloading data may indicate that network traffic (such as IP traffic) associated with the download should be queued behind other network traffic having a normal / medium priority setting or a high priority setting. As a result, other network traffic at normal or high priority destined for devices in the LAN should not be affected by the low priority download.

[0019] Sometimes, bottlenecks are created between nodes in the network. Low-priority traffic may only be communicated between the network nodes when there is no higher priority traffic queued for transmission between the nodes.

[0020] Normal priority data downloads for devices in the LAN should not be slowed down by the low priority download. Therefore, the proposed methods allow data to be pre-loaded, making use of available capacity within the network, without negatively impacting download performance for other applications running on the same computing device or other computing devices in the LAN.

[0021] Existing network routing protocols may implement network traffic prioritisation. For example, a priority setting may be applied to IP data.

[0022] The data may be downloaded in data packets, such as IP data packets.

[0023] A quality of service, QoS, may be applied to the data download, where the QoS indicates the network priority of the network traffic (packets) associated with the download. The QoS may indicate that the network traffic should be communicated to the second computing device with a low network priority, so that high and normal priority network traffic is communicated first and the low priority traffic is communication using spare bandwidth, only when there is capacity available.

[0024] High priority traffic may be forwarded immediately. Low priority traffic may be ratelimited using techniques such as bandwidth throttling, congestion control and packet dropping.

[0025] Where the method is a method performed by the second computing device, the method may further comprise downloading the data from the remote server with a low priority setting

[0026] The LAN may be a user’s home network. The user’s home network may also be called a customer premises.

[0027] The remote server may be a web server.

[0028] Each request is communicated via an interface designated for requesting data at a low priority setting.

[0029] Each request may be received and processed by a service running on the second computing device.

[0030] The second computing device may be separate from the first computing device and in communication with the first computing device via the LAN.

[0031] The request to pre-load data and the request to access the pre-loaded data may each be communicated via the LAN.

[0032] The second computing device may be a router (e.g., a wireless router).

[0033] The storage medium may be co-located with the router. In other words, the router may comprise the storage medium.

[0034] Alternatively, the first computing device may be in communication with the router via the LAN. Where the router is a wireless router, the first computing device may be in communication with the router via a wireless communication protocol, such as wireless LAN “WiFi” (RTM), according to the Institute of Electrical and Electronics Engineers, IEEE, standard 802.11.

[0035] The first computing device and the second computing device may be the same computing device. The request to pre-load data and the request to access the pre-loaded data are communicated between the first computing device and the second computing device via an internal interface.

[0036] The method may further comprise communicating, from the application to the second computing device, a request for a session, wherein the first request is associated with the session. The method may further comprise communicating, from the application to the second computing device, a request to close the session. The method may further comprise deleting data (content) stored on the storage medium in response to the request to close the session.

[0037] The method may further comprise receiving one or more other requests from the application for the second computing device to pre-load data. The method may further comprise, in response to the request to close the session, deleting other data stored on the storage medium in response to the other requests.

[0038] Deleting the data may comprise communicating a command to delete the data to a data manager.

[0039] The method may further comprise, in response to the second request, after communicating the data from the second computing device to the first computing device, deleting the data stored on the storage medium in response to the first request.

[0040] Alternatively, the data may be stored on the storage medium until the session is closed.

[0041] The method may further comprise communicating, from the application to the second computing device, one or more authentication tokens for authenticating with the remote server, in order to download the data.

[0042] Where the method is a method performed by the second computing device, the method may further comprise using the one or more authentication tokens to authenticate with the remote server in order to download the data.

[0043] The data may be encrypted.

[0044] If the second computing device is trusted by the application, the method may further comprise communicating an encryption key from the application to the second computing device. The second computing device may use the encryption key to decrypt the data. Alternatively, if the second computing device is not trusted by the application, the second computing device may download and store the encrypted data and pass it to the application when required, without knowledge of the key. The application may decrypt the data once it is received form the second computing device.

[0045] The message indicating that the data requested by the application is not available may cause the first computing device to download the data from the remote server with a normal priority setting.

[0046] The message indicating that the data that the application requested is not available may comprise a redirect (e.g., an HTTP redirect) to cause the first computing device to download the data from the remote server with a normal priority setting.

[0047] Where the method is a method performed by the first computing device, if a message is received indicating that the data that the application requested in the second request is not available, the method may further comprise downloading the data from the remote server with a normal priority setting.

[0048] In other words, the application running on the first computing device may download the data directly if it is not available from the second computing device.

[0049] The data may relate to one of: web content; video content; and game content.

[0050] At the first point in time, the application may be displaying a first portion of a video. The data may relate to a second portion of the video chronologically later than the first portion of the video.

[0051] The first portion in this example need not be the very first part of the video and could be any part of the video other than the very end part. Chronologically refers to the order in which the portions of the video are played, which is well defined for a video that plays from a beginning of the video to an end of the video.

[0052] At the first point in time, the application may be displaying a web page comprising a link to video content. The data may relate to a first portion of the video content.

[0053] A link may also be referred to as a web link or hyperlink.

[0054] The first portion of the video content may refer to the very first portion of the video. In other words, the start of the video that is played when the user clicks the link.

[0055] At the first point in time, the application may be displaying a first video. The first video may belong to a playlist comprising a plurality of videos in a defined order. The data may relate to a first portion of a second video in the playlist subsequent to the first video in the defined order.

[0056] The second video may be immediately subsequent to the first video in some examples.

[0057] Where the method is performed by the second computing device, the method may further comprise storing and maintaining records of data requests from the application and one or more other applications running on the first computing device or other computing devices in the LAN. The method may further comprise determining statistics based on the records and communicating the statistics to a network provider.

[0058] The data may be video data. The application may be a video application. The first request may comprise an address of a manifest of a video. The manifest may be hosted on the remote server. The manifest may comprise a plurality of addresses for a plurality of segments of the video. Each segment of the video may be hosted on the remote server. The video data may comprise one or more of the plurality of segments.

[0059] A method of downloading video data is also provided. The method comprises communicating at a first point in time, from a first computing device in a local area network, LAN, to a second computing device in the same LAN, a first request from a video application running on the first computing device for the second computing device to preload video data by downloading the video data from a remote server with a low priority setting and storing the video data on a storage medium in the LAN. The method further comprises communicating at a second point in time later than the first point in time, from the first computing device to the second computing device, a second request for the video application or a video player running on the first computing device to access the video data that the application requested the second computing device to pre-load in the first request.

[0060] If the video data has been downloaded from the remote server to the second computing device at the second point in time, the method further comprises communicating the video data from the second computing device to the first computing device. Otherwise, if the video data has not been downloaded from the remote server to the second computing device at the second point in time, the method further comprises communicating a message from the second computing device to the first computing device indicating that the video data is not available.

[0061] Alternatively, if the data has not been downloaded from the remote server to the second computing device at the second point in time, the method may further comprise downloading, by the second computing device and with a normal priority setting, the data that the application requested the second computing device to pre-load in the first request and communicating the data from the second computing device to the first computing device.

[0062] The first request may comprise an address of a manifest of a video (e.g., a URI). The manifest may be hosted on the remote server. The manifest may comprise a plurality of addresses (e.g., URIs) for a plurality of segments of the video hosted on the remote server. The video data may comprise one or more of the plurality of segments.

[0063] The method may further comprise downloading the manifest to the second computing device. The method may further comprise modifying the manifest to replace the plurality of addresses for the plurality of segments of the video hosted on the remote server with a plurality of addresses (e.g., URIs) for the plurality of segments of the video hosted on the storage medium.

[0064] The method may further comprise communicating, from the second computing device to the first computing device, the modified manifest.

[0065] The method may further comprise downloading, by the second computing device, one or more of the plurality of segments of the video from the remote server with a low priority setting and storing the one or more segments on the storage medium.

[0066] In some examples, method may comprise downloading all of the plurality of segments of the video from the remote server with a low priority setting.

[0067] The speculative download service can be used to proactively download video segments that are not currently required but may be required in the future.

[0068] The video application and / or video player may be configured to download and / or play the video using HTTP Adaptive Streaming.

[0069] The method may further comprise downloading, by the second computing device, one or more of the plurality of segments from the remote server with a low priority setting and storing the data on a storage medium in the LAN.

[0070] There may be a plurality of variants of the video. For example, each variant may have a different quality setting and / or may be encoded with a different codec.

[0071] The manifest may therefore comprise, for each segment of the video, a plurality of addresses (e.g., URIs), wherein each address corresponds to a different variant of the segment.

[0072] In response to the first request, the second computing device may download an initial subset of the plurality of segments with a low priority setting and store the data on the storage medium. In other words, the first request may cause the second computing device to download the video data from the remote server with a low priority setting and store the data on the storage medium.

[0073] The initial subset of the plurality of segments may be an initial buffer portion of the video. The initial subset of the plurality of segments may be defined by the manifest.

[0074] Where there are a plurality of variants, the second computing device may download, for each variant of the plurality of variants, an initial subset of the plurality of segments with a low priority setting and store the data on the storage medium. Alternatively, the second computing device may download an initial subset of the plurality of segments for each of a subset of the plurality of variants (e.g., the most commonly requested variants).

[0075] The second request may comprise a request for a first segment of the video. The second request may further comprise an indication of which variant of the content is required.

[0076] On receiving the second request for the first segment of the video, the second computing device may download an initial subset of the plurality of segments with a normal priority setting and store the data on the storage medium.

[0077] On receiving the second request for the first segment of the video, the second computing device may download the remainder of the plurality of segments of the video corresponding to the variant indicated in the second request, with a low priority setting and store the data on the storage medium.

[0078] The remainder of the plurality of segments may comprise the plurality of segments of the required variant that not have not already been downloaded (not including the one or more initial segments). This is because the one or more initial segments may have already been downloaded with a normal priority setting in some examples or pre-loaded in multiple variants at a low priority setting in other examples.

[0079] The message indicating that the data is not available may comprise a redirect (e.g., an HTTP redirect) to cause the first computing device to download the data from the remote server with a normal priority setting.

[0080] Video segments downloaded from the content server at a low priority setting may be stored on the storage medium within the LAN. The video application or video player may obtain the segments as required by local download. This may improve playback performance and enhance user experience, as compared to obtaining the segments normally from the remote content server.

[0081] In this way, as with other examples, the proposed methods are able to reduce the susceptibility of the application to available bandwidth changes, reduce the vulnerability of the application to networking issues, and proactively obtain the initial buffer for the next videos in the user’s playlist. By applying a lower priority to the speculative content download requests, while content that is immediately required is downloaded at a normal priority, the video is downloaded as fast as possible to the LAN, without adversely impacting other users / applications.

[0082] A computing device configured to perform the methods described above is also provided.

[0083] A computer program comprising instructions that, when executed on a processor, cause the processor to perform the methods described above is also provided. Brief description of the drawings

[0084] The present invention will now be described with reference to the following drawings, which provide specific non-limiting examples.

[0085] Fig. 1 illustrates a specific example of a method of speculatively downloading content via a speculative download service, in line with the proposed methods.

[0086] Fig. 2 illustrates an example system for carrying out the proposed methods.

[0087] Fig. 3 illustrates an example of a specific use case of the proposed methods, in which video content is speculatively downloaded via the speculative download service.

[0088] Fig. 4 illustrates another use case of the proposed methods.

[0089] Fig. 5 illustrates a Quality of Experience “QoE” evaluation setup for evaluating the performance of a specific example of the proposed methods.

[0090] Fig.6 illustrates a further example method of the Speculative Internet Download Concept.

[0091] Fig. 7 illustrates a call flow according to a specific example of the proposed speculative content download method.

[0092] Fig. 8 illustrates another use case of the proposed methods.

[0093] Fig. 9 illustrates a call flow according to another specific example of the proposed speculative content download method. Detailed description

[0094] A number of specific examples useful for understanding the invention are described in more detail below. The proposed methods provide an opportunity for a network operator to improve the quality of Internet data services provided to customers. Where customers already make use of speculative Internet download to improve the user-experience of particular applications, this is sometimes achieved at the expense of user-experience for other applications on the same device or other user devices sharing the same Internet connection.

[0095] The proposed methods therefore provide a service that allows the end application to speculatively request content that it may need in the near future but without impacting the performance of other applications. In the proposed methods, speculative content is downloaded into the user’s home network at a lower priority than normal Internet traffic. In this may, speculative downloads may make use of any spare capacity in the Internet connection to the user’s home network (home LAN).

[0096] The proposed methods aim to achieve improved user experience across multiple applications and devices in the user’s home, by differentiating between “normal” Internet traffic, which is required immediately, and “speculative” Internet traffic, which may be required at a later point in time. The speculative traffic should be de-prioritised compared to the normal traffic, so that normal traffic is not impeded by speculative traffic.

[0097] Network traffic communicated via existing network protocols may already have a priority setting. For example, IP traffic has an associated priority. For IP traffic, this priority setting is currently used in some examples to raise the priority of IP data for time-critical applications, such as for video calls where buffering or latency would be very noticeable. The priority setting is not currently used to deprioritise application traffic for content retrieval.

[0098] The Internet service provider (also called “network operator”) is in a unique position to deliver this service, since the ISP is responsible for transport of the Internet traffic to the user’s home through the access network (e.g., fibre access network) and the core network. The ISP is therefore able to implement the priority setting by managing the queuing of network traffic at network nodes so that “normal” network traffic (traffic having a “normal” priority setting) is always routed before de-prioritised network traffic (traffic having a “low-priority” setting). An “over-the-top” Internet provider would be unable to deliver this service because they rely on an access network and core network provided by another network operator.

[0099] In addition to improving user experience across multiple applications, the proposed methods may also lead to improved network utilisation. Since content is requested in advance with a low-priority setting, the network can prioritise other (normal priority) traffic whilst network usage is high (whilst bandwidth is limited) and wait for network capacity to become available before downloading the requested content. This may lead to a smoothing of overall network traffic, may help to decongest the network during times of high network utilisation and may also allow the network to make use of spare capacity during times of low network utilisation.

[0100] Unlike standard ‘push’ Content Distribution Networks (CDN) or cache prior art systems, the proposed methods allow the end application to request content directly from the service (rather than the content being dictated by the network). Therefore, the speculative content obtained via the proposed methods is more likely to be used by the end application. Therefore, network utilisation by the proposed methods may be more efficient. Moreover, content obtained via these methods is downloaded with a normal priority setting and therefore may adversely affect other network traffic, especially if the volume of the content is large or if the network is congested.

[0101] Some cache systems store data requested by one user for the benefit of other users. However, these systems do not benefit the user requesting the data. Moreover, the data is not obtained before it is ever needed (and so is not “speculative”).

[0102] Fig. 1 illustrates a specific example of a method of speculatively downloading content via a speculative download service, in line with the proposed methods. At step 101, an application 110 (e.g., a video application running on a user device) identifies that the user might want to watch a specific video or videos. At step 102, the application 110 sends a speculative content request to a speculative download service 130, which may be running on a Residential Gateway (RG) in the user’s home Local Area Network (LAN). The speculative content request may be sent via the user’s home LAN 120. At step 103, the speculative download service 130 requests the content from a content server 150 (e.g., a video content server). The request is sent via the user’s Internet connection, such as a broadband access connection, fibre access connection, or other fixed line, mobile or satellite access connection. The user’s Internet connection is provided by an Internet service provider (ISP) network 140, which comprises an access network and a core network. The request comprises an indication that the content is requested at a low priority. At step 104, the content server 150 returns the content to the speculative download service 130 at a low network priority (e.g., using a so-called “scavenger class” priority setting). At step 105, the speculative download service 130 serves the content locally within the user’s home LAN 120. At step 106, the speculative content service 130 responds to the application 110 by providing a Uniform Resource Identifier (URI) of the locally served content.

[0103] In this way, the proposed service allows an application 110 to download content that may be required in future, at a lower network priority. If the speculative download service 130 is not able to download the content in advance using the lower priority setting, then the application 110 will request the content normally (using a normal priority setting) when the content is needed.

[0104] Advantageously, the proposed service can improve the user experience of the application user, without impacting other network traffic entering the user’s home network via the access network and without impacting other network traffic in the core network. Where applications already speculatively obtain content, this is currently performed at a normal priority setting, which can adversely impact other applications / users in the user’s home network. By using the proposed service for speculatively obtaining content, this traffic relating to speculative content may be converted to a lower priority setting, which could improve the performance of the ISP network (including the access network and the core network) and other applications running in the user’s home network.

[0105] For example, many existing applications obtain video on demand content speculatively. This content may relate to videos that might be watched by a user in the future or might relate to subsequent parts of a video that is currently being watched by a user. This video on demand content could be obtained via the speculative download service 130, rather than normal download, which could move the network traffic to a lower priority setting. By reducing the volume of “normal” network traffic, the application performance, access network performance, core network performance and the performance of applications running on other devices in the user’s home network that obtain content via the ISP network may be improved.

[0106] The proposed methods can also apply to many other use cases, including game content download, and the like.

[0107] Fig. 2 illustrates an example system for carrying out the proposed methods. An application 210 running on a device 260 in the user’s home network 220 may request content from a content server 250 via a normal download 207. For a normal download, the content is downloaded from the content server 250, via the Internet, via the user’s Internet connection provided by the ISP network 240, via the user’s residential gateway 270 (also called a “home router”), via the user’s home LAN 220, to the application 210.

[0108] The application may identify content that is not currently required but may be required by the application in the future. To obtain this content, the application 210 may speculatively request the content via a speculative download service 230 running on the user’s residential gateway 270. In this case, the content is downloaded from the content server 250, via the Internet, via the user’s Internet connection provided by the ISP network 240, to the speculative download service 230 running on the user’s residential gateway 270. The download to the speculative download service 230 is illustrated as step 204 on Fig. 2. The speculative content is downloaded to the speculative download service 230 using a strictly lower priority queue across the ISP network 240. In this way, the speculative content download does not impact any other network traffic in the ISP network 240. When the content is needed by the application, the content is requested by the application 210 via the user’s home LAN 220 (e.g., via a WiFi connection), as illustrated by step 206. The content is only downloaded from the speculative download service 230 to the application 210 as / when it is needed by the application 210.

[0109] If content is successfully downloaded 204 at a lower priority setting via the speculative download service 230 then this reduces normal priority traffic 207 in the ISP network 240.

[0110] The proposed methods may be implemented by an SID service running on a router in the user’s home LAN. Alternatively, the SID service may be implemented on a standalone server in the user’s home LAN. One advantage of providing the SID service on the router / RG is that the router may be the first node in the LAN to receive the content from the access network. Therefore, if the content is stored locally on the router / RG, internal bandwidth within the LAN is not utilised until the content is requested from the SID service by the application. For example, where the user’s home LAN is connected via WiFi, WiFi capacity is not used until the content is needed by the application. Moreover, the ISP may be responsible for maintaining the router and setting the configuration of the router to ensure efficient communication with the access network. By integrating the SID service with the router, the service may be implemented more seamlessly.

[0111] Nevertheless, the SID service could be implemented anywhere in the LAN. Where the SID service is separate from the router, the server implementing the SID service may be connected to the router / RG by a wired connection, such as an ethernet connection. This may help to alleviate local traffic (e.g., via WiFi) within the LAN caused by speculative content downloads.

[0112] The present application also provides new methods for applications running on user devices within the user’s home LAN to establish a session with the SID service and request speculative content via the SID service. If the request for speculative content is successful, the application may obtain the content from the SID service when it is needed, rather than by downloading the content normally from the content server.

[0113] The proposed methods result in network traffic relating to speculative downloads being communicated through the access network and core network with a reduced priority setting. Network entities in these networks should honour the low-priority status of the network traffic.

[0114] The content server may optionally also be configured to de-prioritise requests for content that are made with a low-priority setting. However, this is not essential and the content server should be able to fulfil all content requests without the performance of the content server for normal network traffic being adversely affected by low-priority network traffic, even if the content server treats all the content requests with equal priority.

[0115] Fig. 3 illustrates an example of a specific use case of the proposed methods, in which video content is speculatively downloaded via the speculative download service.

[0116] HTTP Adaptive Streaming (which is commonly used for obtaining video content) downloads videos incrementally in segments / chunks. Often these do not consume all the user’s bandwidth provided by the access network.

[0117] The speculative download service can be used to proactively download video segments that are not currently required but may be required in the future.

[0118] In this way, the proposed methods are able to reduce the susceptibility of the application to available bandwidth changes (future parts of the video are already available within the home network at high quality). Moreover, the proposed methods may reduce the vulnerability of the application to networking issues (which can reduce instances of the video needing to be paused by the application to allow time for video buffering). Moreover, the proposed methods may be used to proactively obtain the initial buffer for the next videos in the user’s playlist. By applying a lower priority to the speculative content download requests, while content that is immediately required is downloaded at a normal priority, the video is downloaded as fast as possible to the home without adversely impacting the other users / applications with the low-priority download.

[0119] The speculative download service may not be appropriate for time-critical applications, such as video calls and live streaming. However, the service may nevertheless be suitable for on demand streaming in near-real time, where a video feed is subject to a delay. Video content required immediately may be requested at a normal priority while video content that will be required soon may be requested via the SID service. If the SID service is unable to provide the content in good time before it is needed by the application, the application may request the content normally to prevent buffering and maintain user experience.

[0120] Where live-streamed content is interspersed with pre-recorded content (for example, where adverts are displayed during a live feed or where a pre-recorded segment is presented within a live show) the application can obtain the live streamed content normally but may use the SID service to download the pre-recorded content in advance. In this way, the pre-recorded content may be displayed without any initial buffering, switchover between the live feed and the pre-recorded content may be more seamless and the user experience may be enhanced. Prior art applications may hold off on obtaining the pre-recorded content while the live-stream is ongoing, due to the risk of the download of pre-recorded content adversely affecting the live-streamed content. This content may therefore only be downloaded once the live stream has been paused, which may lead to initial buffering at the start of the pre-recorded content. However, when using the SID service, this content may be obtained in advance because the de-prioritised network traffic relating to content obtained via the SID service will not affect normal network traffic.

[0121] Where the content relates to a video file, as illustrated in Fig. 3, the application may determine how and in what order to obtain the chunks of the video file. For example, the application may download chunks normally starting from the beginning of the file and download chunks speculatively starting from the end of the file. The download may be complete when the normal and speculative downloads “meet in the middle” and all the chunks are available within the LAN. From that point, the remainder of the video is stored on the SID service within the LAN and the application can obtain the chunks as required by a local download, which can improve playback performance and enhance user experience, as compared to obtaining the chunks normally from a remote content server.

[0122] Some applications select videos for the user to watch and the user might scroll through the videos watching some but skipping past others. Such an application may obtain the initial buffer fill of a number of possible videos that the user might choose to watch (e.g., the next ten videos) via the speculative download service. Currently, such applications may obtain this content via normal priority download, which can impact performance of the currently playing video, as well as performance for other applications and users within the LAN. Therefore, using the SID service may improve user experience.

[0123] When a user is watching a video via an application, a manifest corresponding to the video that the user is watching may be provided to the application. The manifest provides the application with a list of chunks of the video file. Video on-demand applications normally use chunk delivery by obtaining the manifest, determining what chunks are required based on the manifest, and downloading the required chunks at normal priority according to a schedule, where some chunks are downloaded in advance to account for latency in the Internet connection and to reduce buffering.

[0124] In another example of how the SID service may be used to download video content by using the proposed SID service, a video application may delegate the task of determining which chunks are required to the SID service. The application may provide the manifest to the SID service and obtain every chunk of the video from the SID service. The SID service may obtain the chunks from the remote server by low-priority download. If the application requests a chunk from the SID service that is not yet available, the SID service may redirect the request, so that the application obtains the chunk directly via a normal download. Alternatively, the SID service may obtain the chunk at normal priority and pass it on to the application, as if it were stored locally.

[0125] In other words, the application may obtain every chunk from the SID service and the SID service may obtain the chunks via a combination of low-priority download and normal download, based on the time available until the chunk is required.

[0126] Another use case of the proposed methods is illustrated in Fig. 4. Game content that is not immediately required may be downloaded via the speculative download service, without impacting game play. Due to the nature of gaming applications requiring real-time reactions to events, the network traffic associated with gaming may sometimes be required to consume all of the user’s bandwidth / connectivity, to avoid any interruption to game play and improve the user experience. Since network traffic relating to speculative content is always communicated through the access network (and core network) with a lower priority, the network traffic associated with the gaming application, which may be critical for user experience, is unaffected by the lower-priority network traffic.

[0127] For example, the speculative download service may be used to download new game assets, without any impact on user gameplay.

[0128] The speculative download could be triggered by the end user. For example, the user may initiate a download of a large new game. The speculative download service may queue the download and the actual content will only be downloaded when there is spare capacity in the access network (for example, the majority of the game may be downloaded in the middle of the night, when demand on the access network is lower). By using the proposed methods, the user may initiate the download whenever they choose (e.g., during the day), without impacting other users. Without the proposed methods, initiating the download during the day may impact other users / applications in the user’s home network. Therefore, the user may have to wait until the middle of the night (when the rest of the family is not using the broadband) to initiate the download. The user experience for all users may therefore be improved by the proposed methods.

[0129] The speculative download may be triggered by the game. For example, the game may download new level content that is needed during the game (but not needed immediately), without adding any buffering to the gameplay communications to the servers, which is more time-critical.

[0130] Prior art applications may avoid any non-critical downloads to keep the Internet connection unused so that more critical network traffic between the game application and the online servers is not impacted and thereby enhance the performance of the game for the user. By using the proposed methods, the game can speculatively download another part of the online world at lower priority, without impacting the gameplay.

[0131] The proposed methods may provide benefits to the Internet Service Provider (also called the “network operator”). By supplying content that can be downloaded with a lower priority setting, the traffic may be postponed until there is available capacity in the network. In this way, the network can be more efficiently utilised.

[0132] Via the proposed methods, the network operator is also able to introduce application-initiated differential queueing. Net neutrality regulations may prevent network operators from applying different priority settings to application network traffic. However, by providing the proposed method in which the application actively requests the content with a lower priority setting, different priority settings may be applied to the network traffic. Moreover, while selectively applying an increased priority setting to application network traffic may be prohibited, selectively applying a reduced priority setting may be permitted in some examples.

[0133] The Internet Service Provider is well positioned to implement the proposed methods, because the ISP is responsible for the access network and the core network. The proposed methods cannot be implemented as effectively by an over-the-top (OTT) Internet service provider because an OTT provider does not direct control over how network traffic is communicated through the access network and the core network.

[0134] The proposed methods may also provide benefits to the application provider. By making use of the proposed methods, application providers are able to improve customer experience when using their applications and services. Since the speculative content does not affect the normal content, performance may be enhanced for the normal content by offloading the speculative content to the SID service. Moreover, speculative downloads can be identified in the application provider’s infrastructure (for example, by front-end content servers from which the content is requested), thus enabling higher network utilisation for the application provider(as per the network benefits described above).

[0135] Moreover, by enabling the application to access content locally, the proposed methods also provide enhanced data storage for application. The low priority content is stored on the SID service so does not consume the application’s allocation of storage on the device.

[0136] The proposed methods may also provide benefits to the end user. The proposed methods may improve user experience for the user of the application and for other users in the same home network.

[0137] If all the network traffic were communicated into the home network at the same priority, large volumes of content data could cause congestion, adversely impacting the performance of the access network. This could affect applications running on the user device, as well as other devices and users in the home network. By providing a mechanism for differential queuing, the network overhead associated with normal traffic may be reduced, thereby improving the performance of the access network for normal network traffic.

[0138] Fig. 5 illustrates a Quality of Experience “QoE” evaluation setup for evaluating the performance of a specific example of the proposed methods. The setup comprises: a residential gateway (or “router”) 570 in home LAN 520; a Speculative Internet Download Service (“SID” Service) 530, which may be running on the residential gateway 570 or may be running on a standalone server; a user device 560A of a user of the speculative Internet download system; a user device 560B of another user in the home LAN 520; a measurement test device 560C for measuring properties of test network traffic through the ISP network 540 and LAN 520; a database 572 for storing measurement results from each of the user devices 560A-C; a core router 580 in a core network of the ISP network 540; an access network of the ISP network 540 to connect the user’s home LAN to the core network, the access network comprising an optical network terminal ONT 582 and an optical line terminal OLT 584; a broadband network gateway BNG 586 to connect the access network to the core network; a content server 550 in the ISP network 540; and a measurement test server 588 in the ISP network 540. The ISP network 540 is connected to the Internet 590 to enable onward flow of network traffic to / from other destinations.

[0139] The network traffic associated with the speculative download may be de-prioritised within the ISP network, which is illustrated by the arrows 540. The scope of the deprioritisation may be restricted to the ISP network or de-prioritisation may also be implemented outside the ISP network. Where the network traffic relating to a speculative download is IP traffic, the IP traffic may be assigned a priority of CS1(DSCP8), which is the strict lowest priority setting for IP traffic. All other traffic may have a default priority setting (or higher).

[0140] Since the ISP implements the access network, the de-prioritisation of the network traffic may be implemented in the access network, to ensure that the network traffic associated with the speculative download does not affect the normal network traffic. The de-prioritisation may also be implemented in the core network, to avoid normal traffic being delayed by congestion at bottlenecks in the network caused by network traffic associated with speculative downloads.

[0141] As previously described, the SID user 560A may speculatively request content from the SID service 530 at step 502. The SID service 530 downloads the content from the content server 550 with a low-priority setting at step 504, which illustrates the speculative (low-priority) download path. When the speculative download is complete, the SID service hosts the content within the home LAN. At step 506, the SID user 560A requires the content previously requested and performs a local download of the content from the SID service 530. Since the content was previously downloaded into the home LAN, there is no need to download the content via the ISP network at a normal priority setting.

[0142] Meanwhile, the SID user 560A also downloads other content from the content server 550 normally, as illustrated by the normal content download path 507. The other user device 560B is also using the ISP network to access the Internet 590 and network traffic in both directions (not taking advantage of the SID service) is illustrated by path 508. The measurement test device 560C is also using the ISP network to communicate network traffic to and from the measurement test server 588 and network traffic in both directions is illustrated by path 509. This measurement traffic is used to validate latency and loss impact on other users of the same connection.

[0143] Using the system illustrated in Fig. 5, it is possible to show that the SID system may be used by an application (such as a web application) running on a user device to proactively download content required in the near future. The system may be used to validate that SID download traffic does not impact other users’ traffic. The system may be used to validate that SID traffic does not impact normal content download for the SID user. The system may be used to show that SID benefits the QoE of the end user.

[0144] Whilst content server 550 is shown as an element of the ISP network, in communication with core router, this is not essential for the content server. The evaluation setup illustrated in Fig. 5 includes the content server in the ISP network for practical reasons. However, it is more common for content to be requested from a content server accessed via the Internet 590. Therefore, the SID service is not restricted to content available with the ISP network. Network traffic with a lower priority setting may be deprioritised at other networking bottlenecks throughout the Internet. Therefore, the proposed methods may also provide benefits to other networks accessed via the Internet, outside of the ISP network.

[0145] A further example method of the Speculative Internet Download Concept is illustrated in more detail in Fig. 6. In the example shown in Fig. 6, the Speculative Internet Download Service 630 is running on the user’s home router 670.

[0146] The SID service may be available to any application 610 running on any device 660 in the user’s home network (LAN). The SID service 630 may download content at a lower priority, so that no SID download will negatively impact any Normal Download on the network.

[0147] The user device 660 may communicate with the home router 670 across the user’s LAN 620 via WiFi. The home router 670 may communicate with a content server 650 (also called an “Internet content server” or “Internet server”) via an access network 642, via an access node 686 and via a core network 680. The ISP network comprises the access network 642 and the core network 680 (and the access node 686, which connects the access network 642 to the core network 680). The ISP network may also comprise additional elements, such as a backhaul network and / or one or more edge networks.

[0148] As illustrated by arrow 612, network traffic relating to a low-priority (speculative) download is queued at bottlenecks in the ISP network.

[0149] A normal content download is illustrated by arrows 607A and 607B. Arrow 607A illustrates the request and arrow 607B illustrates the response.

[0150] A speculative content download is illustrated by arrows 602, 603, 604 and 606. The application 610 requests the content from the SID service at step 602. The SID service requests the content from the content server 650 at step 603. The content is transferred to the SID service at a low priority setting at step 604. At step 606A, the SID service informs the application that the content is ready. When the application 610 requires the requested content, it is downloaded locally from the SID service, as illustrated by steps 606B and 606C.

[0151] Fig. 7 illustrates a call flow according to a specific example of the proposed speculative content download method.

[0152] At step 711, SID service discovery is performed. The application 710 (which may be a web application) identifies the SID service 730 based on a certificate provided by the ISP.

[0153] At step 712, the application 710 indicates to the content server 750 that a SID service is available. The “content server” 750 may be one or more application front-end servers. The content server 750 can decide whether or not to allow the use of the SID service. If use of the SID service is allowed, the content server 750 may also provide the application 710 with any additional auth tokens that are needed for the SID service to perform the speculative content download directly from the content server 750.

[0154] At step 713, the application 710 creates a SID session with the SID service 730 on the RG.

[0155] At step 714, the application 710 requests content using an API provided by the SID service. The request includes the headers required, including any auth tokens. It is up to the app to determine whether to use a unique, per-session URI or a URI that can be reused across sessions.

[0156] At step 715, the SID service 730 requests content form the content server 750. The request may use the header info and auth tokens provided by the application 710 at step 714.

[0157] At step 716, content is downloaded to the SID service. The content is downloaded using a low priority setting (sometimes called a ‘scavenger’ class) across the ISP network.

[0158] At step 717, content is stored by the SID service.

[0159] At step 718, a push notification is sent to the application 710 to indicate that the requested content is available. A unique download code (e.g., in the form of a URI) may be provided to the application 710 by the SID service 730.

[0160] At step 719, the application 710 sends a request to the SID service 730 to get the downloaded content.

[0161] At step 720, the SID service 730 provides the content to the application 710.

[0162] At step 721, the application 710 sends a request to the content server 750 to get content that has not been speculatively downloaded by the SID service 730. The application 710 is free to do this at any time if a speculative download has not been successfully completed for the required content (either because the application 710 speculatively requested the content but the content has not been downloaded by the time it is required or because the application 710 did not speculatively request the content from the SID service 730 before it was needed). This would be the normal behaviour if the application 710 were not using the SID service 730.

[0163] At step 722, the content is downloaded to the application 710 with a normal priority setting.

[0164] At step 723, the application 710 sends a message to the SID service 730 to close the session.

[0165] At step 724, the SID service 730 responds to the application 710 to indicate that the session is closed.

[0166] At step 725, the SID service 730 tidies up files by deleting any session-specific files. Cacheable files may be maintained with a cache policy.

[0167] As described with reference to step 712 above, if the application 710 requires permission to access the content from the content server 750 then permission may be given to the SID service 730 by the content server 750. This may be achieved by passing the relevant authorisation tokens to the application 710, which are then forwarded by the application 710 to the SID service 730. Alternatively, the content server 750 may provide tokens directly to the SID service.

[0168] Use of the SID service 730 also has implications for Cross-origin resource sharing (CORS). CORS is a security restriction that, by default, prevents browsers accessing data from other origins (e.g. domain names). Where the content requested by the application 710 and downloaded by the SID service 730 includes resources that are accessed from another domain, the SID service 730 may be configured to allow cross-origin access from the site of the original request (i.e., allow cross origin requests from the same origins as the original content).

[0169] Use of the SID service 730 also has implications for encryption (in particular, for encryption at rest), content may be downloaded from the content server 750 to the SID service 730 using HTTPS. Likewise, content may be downloaded from the SID service 730 to the application 710 using HTTPS. However, there is a break in trust for the application 710, because it does not know if the content has been modified by the SID service 730. To enhance security, the application 710 and / or content server 750 may add authentication and / or encryption to the underlying content data. The SID service 730 may therefore be unable to modify and / or access the underlying data.

[0170] The SID service 730 may provide a mechanism for the application provider to obtain statistics from the SID service. For example, the application provider may benefit from knowing the success rate of speculative downloads, the time taken for speculative downloads to become available, the number of speculative downloads requests, the volume of data obtained via speculative download and stored by the SID service, the duration of sessions established with the SID service, and other statistics.

[0171] The SID service may comprise a database for storing the content obtained speculatively until it is needed. The SID service may continue to store the content after it has been accessed, until the application closes the corresponding session. In this way, the application can access the content repeatedly, if required, while the session is open. This may enable the application to use less of the device storage by using data storage provided by the SID service.

[0172] The SID service 730 may impose limits on how much content data may be stored on behalf of each application using the service. The SID service may additionally / alternatively impose limits on the content that may be stored from a particular content server or host (across one or more applications).

[0173] The SID service may monitor the how applications use the service and may blacklist or take action against those applications that use the system badly. For example, if the application requests content speculatively and then requests the same content normally, even though the content is available via the SID service, this may be logged by the SID service. In another example, the SID service may block applications that speculatively request large volumes of content that are never subsequently used.

[0174] As described above with reference to step 725, the SID service 730 may be configured to delete session-specific files when the session is closed by the application. The SID service may also be configured to delete stored content that has not been accessed after a preconfigured period of time has elapsed. Additionally or alternatively, open sessions may be automatically closed, without input from the application, if they have been open for a preconfigured period of time or if the session has not been used (e.g., by requesting speculative content) for a preconfigured period of time.

[0175] The above considerations are described with reference to the specific example described and illustrated in Fig. 7. However, these considerations are not limited to this specific example and may be applied to any of the other examples described.

[0176] Fig. 8 illustrates an example of another specific use case of the proposed methods, in which video content is downloaded via the speculative download service.

[0177] In this specific example, as with some of the other examples described above, HTTP Adaptive Streaming is used to download a video file incrementally in segments / chunks. The speculative download service can be used to proactively download video segments that are not currently required but may be required in the future.

[0178] In contrast to some examples described with reference to Fig. 3 (in which the application determines how and in what order to obtain the chunks of the video file), in the examples according to Fig. 8, the SID service may determine how and in what order to obtain the chunks of the video file.

[0179] The SID service may be used to proactively download video segments, based on the manifest.

[0180] There may be a plurality of variants of the content, such as with different quality settings and / or encoded with different codecs. The manifest may therefore comprise instructions for downloading different versions of the segments.

[0181] The application may request the video manifest via the SID service, rather than obtaining it directly. The SID service may obtain the manifest form the content server at normal priority and forward the manifest to the application.

[0182] The SID service may modify the manifest received from the content server and provide the modified manifest to the application. The modified manifest may instruct the application to obtain the video segments locally from the SID service.

[0183] When the application requests the first chunk of the video from the SID service, the application may indicate which variant of the content is required (e.g., what codec and / or quality). On receiving the request for the first segment, the SID service may download one or more initial segments of the video normally, and download the remainder of the segments of the video (of the required variant) with a low-priority setting.

[0184] Alternatively, the SID service may download one or more initial segments of the video for all possible variants at a low priority setting. On receiving the request for the first segment, the SID service may serve the pre-downloaded initial segment of the required variant of the video requested by the application, and download the remainder of the segments of the required variant of the video with a low-priority setting.

[0185] If the application requests a segment of the video that the SID service has not predownloaded at a low priority setting (or a variant that the SID service has not predownloaded), the SID service may either download the segment on behalf of the application at normal priority, or respond to the request with a redirection to the original content, which induces the application to request the segment directly from the content server at normal priority.

[0186] Video segments obtained from the content server are stored on the SID service within the LAN and the application can obtain the segments as required by a local download. This may improve playback performance and enhance user experience, as compared to obtaining the segments normally from the remote content server.

[0187] In this way, as with other examples, the proposed methods are able to reduce the susceptibility of the application to available bandwidth changes, reduce the vulnerability of the application to networking issues, and proactively obtain the initial buffer for the next videos in the user’s playlist. By applying a lower priority to the speculative content download requests, while content that is immediately required is downloaded at a normal priority, the video is downloaded as fast as possible to the LAN, without adversely impacting other users / applications.

[0188] Fig. 9 illustrates a call flow according to a further specific example of the proposed speculative content download method.

[0189] At step 911, the video application 910 interacts normally with the video content service 950 (login, browse, catalogue, and the like).

[0190] At step 912, the application 910 creates a SID session with the SID service 930 on the RG.

[0191] At step 913, the application 910 identifies that the user might want to watch one or more specific videos.

[0192] At step 914, the application 910 sends a request to the SID service 930, using an API provided by the SID service. The request comprises the manifest URI for the video, or multiple manifest URIs for the videos.

[0193] At step 915, the SID service 930 requests the manifest form a video service 950 (e.g., video content server).

[0194] At step 916, the video service 950 returns the manifest to the SID service 930.

[0195] The SID service 930 serves the manifest locally. At step 917, the SID service 930 responds to the video application 910 with the URI of the locally served manifest.

[0196] At step 918, the SID service requests content from the video service 950 in order to get the initial segments (e.g., for a buffer fill) of the identified one or more videos, according to the respective manifest.

[0197] The SID service may get the initial segments for all available bandwidths I codecs. Alternatively, the SID service may obtain a subset of the available bandwidths I codecs (e.g., the most commonly required bandwidths I codecs).

[0198] At step 919, the video service 950 may return the requested segments to the SID service. The segments may be downloaded using a low priority setting (sometimes called a ‘scavenger’ class) across the ISP network. Alternatively, if video playback is required immediately, the segments may be downloaded at a normal priority setting.

[0199] Scavenger class is strictly lower priority than all other traffic. Therefore, downloading the segments at scavenger priority has zero impact on other applications / users in the LAN (and very little impact on the network itself).

[0200] At step 920 the user decides to watch one of the videos that have been requested by the SID service.

[0201] At step 921, the video application 910 provides the URI of the locally served manifest to a video player 962.

[0202] At step 922, the video player 962 retrieve the manifest from the SID service 930.

[0203] At step 923, the SID service 930 provides the manifest to the video player 962.

[0204] At step 924, the SID service 930 starts to download the remainder of the segments in the video corresponding to the manifest requested by the video player 962 from the video service 950.

[0205] Steps 925 to 929 are repeated for each required segment.

[0206] At step 925, the video player 962 requests a required segment from the SID service 930.

[0207] If the requested segment has already been downloaded, step 926 is performed. Otherwise, steps 927 to 929 are performed.

[0208] At step 926, the SID service 930 provides the requested segment to the video player 962.

[0209] At step 927, the SID service 930 provides an http redirect to the video player 962. The redirect points the video player to obtain the video segment directly from the video service 950.

[0210] At step 928, the video player 962 requests the segment directly from the video service 950.

[0211] At step 929, the segment is returned to the video player 962 with a normal priority setting.

[0212] The above steps may be repeated as needed until the user finishes watching the video or changes to a different video.

[0213] If the user changes to a different video, the flow may return to step 920.

[0214] The process may continue until the user disconnects. At step 930, the application 910 sends a message to the SID service 930 to close the session.

[0215] At step 931, the SID service 930 responds to the application 910 to indicate that the session is closed.

[0216] At step 932, the SID service 930 tidies up files by deleting any session-specific files. Cacheable files may be maintained with a cache policy.

[0217] The “Speculative Internet download” (SID) service may alternatively be referred to as “Opportunistic content download” in some examples.

[0218] The access network may be a fixed line access network or a wireless access network (such as a cellular access network).

[0219] Where the description refers to a server, a gateway or a router, for instance, this may actually be a pair of servers, gateways or routers (primary and failover), for redundancy.

[0220] It will be appreciated that embodiments of the disclosure may be implemented using a variety of different information processing systems. In particular, although the figures and the discussion thereof provide exemplary computing systems and methods, these are presented merely to provide a useful reference in discussing various aspects of the disclosure. Embodiments may be carried out on any suitable data processing device, such as a personal computer, laptop, personal digital assistant, mobile telephone, set top box, television, server computer, etc. Of course, the description of the systems and methods has been simplified for purposes of discussion, and they are just one of many different types of systems and methods that may be used. It will be appreciated that the boundaries between logic blocks are merely illustrative and that alternative embodiments may merge logic blocks or elements, or may impose an alternate decomposition of functionality upon various logic blocks or elements.

[0221] It will be appreciated that the above-mentioned functionality may be implemented as one or more corresponding modules as hardware and / or software. For example, the above-mentioned functionality may be implemented as one or more software components for execution by a processor of the system. Alternatively, the above-mentioned functionality may be implemented as hardware, such as on one or more field-programmable-gate-arrays (FPGAs), and / or one or more application-specific-integrated-circuits (ASICs), and / or one or more digital-signal-processors (DSPs), and / or other hardware arrangements. Method steps implemented in flowcharts contained herein, or as described above, may each be implemented by corresponding respective modules. Moreover, multiple method steps implemented in flowcharts contained herein, or as described above, may be implemented together by a single module.

[0222] It will be appreciated that, insofar as embodiments of the disclosure are implemented by a computer program, then a storage medium and a transmission medium carrying the computer program form aspects of the disclosure. The computer program may have one or more program instructions, or program code, that, when executed by a computer, causes an embodiment of the disclosure to be carried out. The term “program” as used herein, may be a sequence of instructions designed for execution on a computer system, and may include a subroutine, a function, a procedure, a module, an object method, an object implementation, an executable application, an applet, a servlet, source code, object code, a shared library, a dynamic linked library, and / or other sequences of instructions designed for execution on a computer system. The storage medium may be a magnetic disc (such as a hard drive or a floppy disc), an optical disc (such as a CD-ROM, a DVD-ROM or a BluRay disc), or a memory (such as a ROM, a RAM, EEPROM, EPROM, Flash memory or a portable / removable memory device), etc. The transmission medium may be a communications signal, a data broadcast, a communications link between two or more computers, etc.

[0223] Each feature disclosed in this specification, unless stated otherwise, may be replaced by alternative features serving the same, equivalent or similar purpose. Thus, unless stated otherwise, each feature disclosed is one example only of a generic series of equivalent or similar features.

[0224] As used herein, including in the claims, unless the context indicates otherwise, singular forms of the terms herein are to be construed as including the plural form and, where the context allows, vice versa. For instance, unless the context indicates otherwise, a singular reference herein including in the claims, such as "a" or "an" (such as a server, a gateway, a private routing table, a tunnel, a router, or an endpoint) means "one or more" (for instance, one or more servers, one or more gateways, one or more private routing tables, one or more tunnels, one or more routers or one or more endpoints). Throughout the description and claims of this disclosure, the words "comprise", "including", "having" and "contain" and variations of the words, for example "comprising" and "comprises" or similar, mean that the described feature includes the additional features that follow, and are not intended to (and do not) exclude the presence of other components.

[0225] The use of any and all examples, or exemplary language ("for instance", "such as", "for example" and like language) provided herein, is intended merely to better illustrate the disclosure and does not indicate a limitation on the scope of the disclosure unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the disclosure.

[0226] Any steps described in this specification may be performed in any order or simultaneously unless stated or the context requires otherwise. Moreover, where a step is described as being performed after a step, this does not preclude intervening steps being performed.

[0227] All of the aspects and / or features disclosed in this specification may be combined in any combination, except combinations where at least some of such features and / or steps are mutually exclusive. In particular, the preferred features of the disclosure are applicable to all aspects and embodiments of the disclosure and may be used in any combination. Likewise, features described in non-essential combinations may be used separately (not in combination).

[0228] A method of manufacturing and / or operating any of the devices disclosed herein is also provided. The method may comprise steps of providing each of the features disclosed and / or configuring or using the respective feature for its stated function.

Claims

1. A method of downloading data, the method comprising: communicating at a first point in time, from a first computing device in a local area network, LAN, to a second computing device in the same LAN, a first request from an application running on the first computing device for the second computing device to preload data by downloading the data from a remote server with a low priority setting and storing the data on a storage medium in the LAN;communicating at a second point in time later than the first point in time, from the first computing device to the second computing device, a second request for the application to access the data that the application requested the second computing device to pre-load in the first request;if the data has been downloaded from the remote server to the second computing device at the second point in time, communicating the data from the second computing device to the first computing device;otherwise, if the data has not been downloaded from the remote server to the second computing device at the second point in time, communicating a message from the second computing device to the first computing device indicating that the data that the application requested the second computing device to pre-load in the first request is not available.

2. The method of claim 1, wherein each request is communicated via an interface designated for requesting data at a low priority setting.

3. The method of claim 1 or claim 2, wherein each request is received and processed by a service running on the second computing device.

4. The method of any preceding claim, wherein the second computing device is separate from the first computing device and in communication with the first computing device via the LAN.

5. The method of claim 4, wherein the second computing device is a router.

6. The method of any of claims 1 to 3, wherein the first computing device and thesecond computing device are the same computing device, wherein the request to pre-loaddata and the request to access the pre-loaded data are communicated between the first computing device and the second computing device via an internal interface.

7. The method of any preceding claim, further comprising:communicating, from the application to the second computing device, a request for a session, wherein the first request is associated with the session;communicating, from the application to the second computing device, a request to close the session; anddeleting data stored on the storage medium in response to the request to close the session.

8. The method of any preceding claim, further comprising: communicating, from the application to the second computing device, one or more authentication tokens for authenticating with the remote server, in order to download the data.

9. The method of any preceding claim, wherein the data is encrypted.

10. The method of any preceding claim, wherein the data relates to one of:web content;video content; and game content.

11. The method of any of claims 1 to 9, wherein a first portion of a video is being displayed by the application at the first point in time, wherein the data relates to a second portion of the video chronologically later than the first portion of the video.

12. The method of any of claims 1 to 9, wherein a web page comprising a link to video content is being displayed by the application at the first point in time, wherein the data relates to a first portion of the video content.

13. The method of any of claims 1 to 9, wherein a first video is being displayed by the application at the first point in time, wherein the first video belongs to a playlist comprising a plurality of videos in a defined order, wherein the data relates to a first portion of a second video in the playlist subsequent to the first video in the defined order.

14. The method of any preceding claim, wherein the data is video data, wherein the application is a video application, wherein the first request comprises an address of a manifest of a video, wherein the manifest is hosted on the remote server, wherein the5 manifest comprises a plurality of addresses for a plurality of segments of the video, wherein each segment of the video is hosted on the remote server, and wherein the video data comprises one or more of the plurality of segments.

15. A computing device configured to perform the method of any preceding claim.1016. A computer program comprising instructions that, when executed on a processor, cause the processor to perform the method of any of claims 1 to 14.41

Citation Information

Patent Citations

  • Network application performance enhancement using speculative execution

    US20100312858A1

  • Method and apparatus for streaming multimedia content of server by using cache

    US20140244727A1

  • Systems and methods for digital media delivery prioritization

    US20200403929A1