Abstract: A capability is provided for extending a content delivery network (CDN) to an end user device. The end user device is configured to operate as an extension of the CDN. The end user device includes a storage module configured to cache content items as part of the CDN. The end user device includes a control client configured to supporting caching of content items in the content cache. The control client of the end user device is configured to communicate with a control server for controlling loading of content items from network-based caches of the CDN to the storage module of the end user device. The control server is configured to communicate with a proxy server of the CDN for determining loading of content items from network-based caches of the CDN to the storage module of the end user device. 42
TECHNICAL FIELD
The invention relates generally to content delivery networks and, more
specifically but not exclusively, to extending a content delivery network to an
end user device.
BACKGROUND
A content delivery network (CON) is a system of servers deployed for
serving content to end users. A typical goal of a CON is to serve content to
end users with high availability and high performance. The servers of a CON
may be deployed in one or more data centers or in any other suitable network
locations. A CON operator is typically paid by content providers (e.g., media
companies, e-commerce vendors, and the like) for delivering content of the
content providers to end users. The content may include web objects (e.g.,
text, graphics, web pages, scripts, or the like), downloadable objects (e.g.,
media files, software, documents, or the like), applications, live streaming
media, on-demand streaming media, or the like.
SUMMARY
Various deficiencies in the prior art are addressed by embodiments for
extending a Content Delivery Network (CON) to an end user device.
In one embodiment, an apparatus includes a processor and a memory
communicatively connected to the processor. The processor is configured to
determine whether to cache the content item in a CON, where determining
whether to cache the content item in the CON includes determining whether to
cache the content item in a storage module of an end user device. The
processor is configured to support access to the content from the CON by
accessing the content from the storage module of the end user device.
In one embodiment, an apparatus includes a processor and a memory
communicatively connected to the processor. The processor is configured to
determine whether to cache the content item in a CON, where determining
2
whether to cache the content item in the CON comprises determining whether
to cache the content item in a storage module of an end user device.
In one embodiment, an apparatus includes a processor and a storage
module communicatively connected to the processor. The processor is
configured to receive a content item from a network server of a CON, cache
the received content item in the CON by caching the content item in the
storage module, and access the content item from the CON by accessing the
content item from the storage module.
BRIEF DESCRIPTION OF THE DRAWINGS
The teachings herein can be readily understood by considering the
following detailed description in conjunction with the accompanying drawings,
in which:
FIG. 1 depicts a high-level block diagram of an exemplary Mobile
Smartloading (MSL) network architecture supporting extension of a CON to an
end user device;
FIG. 2 depicts one embodiment of a method for loading a content item
from a CON into a cache on a mobile device when the content item is injected
into the CON by a content provider;
FIG. 3 depicts one embodiment of a method for consuming a content
item from a cache on a mobile device where the cache on the mobile device
is an extension of a CON;
FIG. 4 depicts one embodiment of a method for offering to load a
content item from a CON into a cache of a mobile device when a request for
the content item is sent from the mobile device to the content source;
FIG. 5 depicts one embodiment of a method for predictive loading of a
content item from a CON into a cache of a mobile device;
FIG. 6 depicts one embodiment of a method for consuming a content
item from a cache on a mobile device where the cache on the mobile device
is an extension of a CON; and
FIG. 7 depicts a high-level block diagram of a computer suitable for use
in performing functions described herein.
3
To facilitate understanding, identical reference numerals have been
used, where possible, to designate identical elements that are common to the
figures.
DETAILED DESCRIPTION
In general, a Content Delivery Network (CDN) extension capability is
provided for extending a network-based CDN to end user devices.
A CDN is typically designed to cache content closer to the end users,
thereby lowering the cost of delivering the content to the end users and
improving the end user experience of the end users by reducing latency of
access to the content. The CDN caches, however, are deployed within the
service provider network and, thus, are unable to fully optimize the access
portion of the network (i.e., the last "hop" between the service provider
network and the end users). Additionally, the access portion of the network
can contribute a significant portion of the cost of content delivery and also
may have a significant impact on quality of the end user experience of the end
users, especially in mobile communication networks. Accordingly, in one
embodiment a CDN is extended to the end user devices (e.g., using CDN
caches on the end user devices) such that the above-referenced limitations of
the CDN may be overcome in terms of reducing the cost of content delivery
and enhancing the end user experience of the end users. In at least some
embodiments, the CDN extension capability is configured to extend a
network-based CDN to the end user device (e.g., mobile device, set top
boxes, residential gateways, or the like) to improve the quality of experience
of the end user(s) during content playback and to reduce the load on the
network during and resulting from content delivery. In at least some
embodiments, the CDN extension capability is configured to support cost
efficient delivery of content to an end user device for caching in storage on the
end user device. In at least some embodiments, the CDN extension
capability is configured to extend a network-based CDN to cover and alleviate
load on the last hop between the network and the end user device (e.g., the
wireless link between the end user device and the wireless access point, the
4
wireless backhaul network, or the like, as well as various combinations
thereof). In at least some embodiments, the CON extension capability is
configured to redirect requests for content to the nearest CON cache, whether
it be in the network or on the end user device. In at least some embodiments,
the CON extension capability is configured to enable a request for content
initiated from an end user device to be intercepted in order to provide to an
end user of the end user device an offer to cache the content in a cache of the
end user device for later consumption by the end user. In at least some
embodiments, the CON extension capability is configured to support ingestion
of content of one or more partner content providers into an extended CON
and to use the extended CON to improve the quality of experience of the end
user for content of non-partners (e.g., OTT content sharing sites or the like).
It is noted that at least some such embodiments, as well as various other
embodiments, may be supported without requiring any changes to the existing
content clients or presentation capabilities of the end user device. The CON
extension capability may be configured to support various other functions
related to extension of a network-based CON to storage of an end user
device.
The CON extension capability is primarily depicted and described
within the context of a Mobile Smartloading (MSL) network architecture. In
general, MSL is a network efficient way of delivering content to the end users
while also enhancing the quality of experience of the end users. In many
existing content delivery schemes (e.g., video download, video streaming, or
the like), content delivery is performed in real-time and on-demand without
regard to the network condition of the underlying network. This can lead to
poor quality of experience, especially since the content delivery may happen
at times when the network capacity is constrained (e.g. during peak periods)
or when the user is in a poor network coverage area. MSL may utilize a
combination surplus capacity available on macro cellular wireless networks
during off-peak times an one or more alternate, cost-efficient access
technologies (e.g., Wireless Fidelity (WiFi), femtocells, or the like) to move
content from the network into the storage of the end user devices. In MSL,
5
the content is cached locally in the end user device and can be viewed by the
end user at any time without disruptions and independent of network
connectivity of the end user device. This has the benefit of providing a high
quality of experience to the end user while also alleviating the peak network
load (e.g., by delivering content to the end user device at off-peak times and
by serving content requests locally at the end user device without adding load
to the underlying communication network. It is noted that MSL has various
potential commercial applications (e.g., the smartloaded data may be
discounted by the network operator for incentivizing the end user to defer their
content downloads to off-peak times on macro cellular wireless access
networks or using alternate cost efficient access technologies, a mobile Digital
Video Recorder (DVR) service may be provided whereby personalized
content may be preloaded into the end user device of an end user in advance
of content consumption based on information associated with the end user, or
the like). In general, MSL is adapted to support various other functions and
services. An exemplary MSL network architecture configured to support the
CDN extension capability is depicted and described with respect to FIG. 1.
FIG. 1 depicts a high-level block diagram of an exemplary MSL
network architecture supporting extension of a CDN to an end user device.
The MSL network architecture 100 includes a mobile device (MD) 110,
an MSL control server 120, an MSL proxy server 130, a CDN 140, and a
content source (CS) 150.
The MD 110 is a mobile wireless device configured to receive content
and present the content via one or more presentation interfaces. The MD 110
includes an MSL client 112, an MSL cache 114, and a plurality of application
clients (ACs) 1161- 116N (collectively, ACs 116). It will be appreciated that
MD 110 includes various other elements and modules which are omitted for
purposes of clarity (e.g., one or more processors, one or more memories, one
of more network interface modules, or the like). For example, MD 110 may be
a laptop computer, a tablet computer, a smartphone, or any other suitable
mobile wireless device.
6
The MSL client 112, MSL cache 114, MSL control server 120, and MSL
proxy server 130 are configured to cooperate for providing various functions
of the CDN extension capability.
The MSL client 112 and the MSL cache 114 are configured to support
extension of the CDN 140 to the MD 110. The MSL client 112 is configured to
communicate with MSL cache 114 for purposes of storing content items in
MSL cache 114 and retrieving content items from MSL cache 114. The MSL
client 112 is configured to communicate with MSL control server 120 and MSL
proxy server 130 for coordinating delivery of content from CON 140 to MD 110
for caching of the content in MSL cache 114 of MD 110 and any subsequent
sourcing of the cached content from MSL cache 114 of MD 110 (i.e., such that
MSL cache 114 of MD 110 may operate as an extension of CDN 140). For
example, MSL client 112 may receive, from MSL control server 120, an
indication that a content item is to be loaded into the MSL cache 114 of MD
110. For example, MSL client 112 may exchange messages with MSL proxy
server 130 for purposes of starting and stopping transfer of a content item to
be loaded into MSL cache 114 of MD 110 (e.g., starting the transfer under
favorable conditions and stopping the transfer under unfavorable conditions).
The MSL client 112 is configured to support a plurality of MSL client side
Application Programming Interfaces (APis) 1151 - 115N (collectively, MSL
client-side APis 115) between MSL client 112 and the ACs 116, respectively,
for use in caching content within MSL cache 114 and for retrieving content
from MSL cache 114 and presenting the retrieved content via one or more
presentation interfaces of MD 110. The MSL cache 114 is configured to store
content items cached on MD 110 in conjunction with the CDN extension
capability. The operation of MSL client 112 and MSL cache 114 may be
better understood by way of reference to FIGs. 2 - 6.
The MSL control server 120 is configured to communicate with MSL
client 112 of MD 110 and MSL proxy server 130. The MSL control server 120
is configured to exchange MSL control messages with MSL client 112 of MD
110 and MSL proxy server 130. The MSL control server 120 is configured to
operate in the control path between CS 150 and MD 110 (where control paths
7
are indicated in FIG. 1 using dashed lines). The MSL control server 120 is
configured to perform functions such as determining whether or not a content
item has been loaded into the MSL cache 114 of MD 110, notifying MD 110
that a content item is to be loaded into the MSL cache 114 of MD 110, or the
like, as well as various combinations thereof. The MSL control server 120
supports an MSL server side API 125 between the MSL control server 120
and CS 150 for use in loading content into MSL cache 114 of MD 110. The
operation of MSL control server 120 in supporting the extension of CON 140
to the MSL cache 114 may be better understood by way of reference to FIGs.
2-6.
The MSL proxy server 130 is configured to communicate with MSL
client 112 of MD 110 and MSL control server 120. The MSL proxy server 130
is configured to exchange MSL control messages with MSL control server
120. The MSL proxy server 130 is configured to operate in the data path
between CS 150 and MD 110 (where data paths are indicated in FIG. 1 using
solid lines). The MSL proxy server 130 is configured to perform functions
such as redirecting content requests initiated from MD 110 to the MSL control
server 120 (e.g., for enabling MSL control server 120 determine whether or
not the content can be served locally from the MSL cache 114 of MD 11 0),
determining whether a content item requested from MD 110 is already cached
in CON 140, controlling caching of a content item in CON 140, providing an
option for a content item requested from MD 110 to be loaded into the MSL
cache 114 of MD 110 rather than being provided to MD 110 in real time, or
the like, as well as various combinations thereof. The operation of MSL proxy
server 130 in supporting the extension of CON 140 to the MSL cache 114
may be better understood by way of reference to FIGs. 2- 6.
The CON 140 is configured to cache content closer to the end users
(illustratively, to MD 11 0), thereby lowering the cost of delivering the content
to the end users and improving the end user experience of the end users by
reducing latency of access to the content. It will be appreciated that CON 140
may include one or more content servers configured to cache content and to
provide the cached content to end users such as MD 110 (i.e., CON 140 may
8
be considered to represent the one or more content servers). It is noted that,
although the MSL proxy server 130 is depicted and described herein as being
independent of CON 140, the MSL proxy server 130 may be considered to
form part of the CON 140 (e.g., such that the MSL proxy server 130 provides
proxy capabilities as well as CON-related capabilities).
The CS 150 is a source of content which may be provided to end users
via one or more communication networks. The content may include one or
more of web objects (e.g., text, graphics, web pages, scripts, or the like),
downloadable objects (e.g., media files, software, documents, or the like),
applications, live streaming media, on-demand streaming media, or the like,
as well as various combinations thereof. The CS 150 is configured to provide
content to end users directly (e.g., without using CON 140) and is configured
to provide content to CON 140 such that the content may be provided to end
users by CON 140. For example, the CS 150 may represent a server of a
content owner, an application server (e.g., a web server, a live streaming
media server, a media on demand server, or the like), or the like. The CS 150
also may represent a server considered to form part of CON 140.
The MSL network architecture 100 is configured to support mobile
smartloading of content, which may include mobile smartloading of content
into MSL cache 114 of MD 110 such that MSL cache 114 of MD 110 may
operate as an extension of CON 140.
The MSL client 112 of MD 110, the MSL control server 120, and the
MSL proxy server 130 are configured to cooperate to perform smartloading of
content into MSL cache 114 of MD 110.
In one embodiment, MSL control server 120 is configured to perform
content selection for smartloading of the selected content in MSL cache 114
of MD 110. The content that is selected for smartloading into MSL cache 114
of MD 110 may be selected based on one or more of user selections (e.g., via
requests to consume the content, via indications of preferences for the
content, or the like), provider selection by the content provider or service
provider (e.g., based on popularity of content, based on the content selection
history of the user of MD 110, or the like), recommendation-based selection,
9
subscription-based selection, or the like, as well as various combinations
thereof. In one embodiment, MSL control server 120 maintains a per user
smartloading content queue including information such as a set of content
items to be smartloaded into MSL cache 114 of MD 110, content priority
information (e.g., preferred order in which the content items are to be
smartloaded), content network location information for each of the content
items to be smartloaded (e.g., Uniform Resource Identifier (URI) or any other
information adapted for use in accessing the content item), content item metadata,
or the like, as well as various combinations thereof.
In one embodiment, MSL client 112 and MSL control server 120 are
configured to control transfer of content to MD 110 for smartloading in MSL
cache 114 of MD 11 0. The MS L control server 120 may be configured to
determine a schedule for delivery of content to MD 110 for caching in MSL
cache 114, where the schedule may be determined by considering only MD
110 or considering MD 110 in conjunction with one or more other MDs
(omitted for purposes of clarity) as a group. The MSL control server 120 may
be configured to determine the schedule for delivery of content to MD 110
based on one or more of information reported by MD 110 (e.g., device
conditions, network conditions, and the like), network status information (e.g.,
network congestion and load information), provider preferences or policies,
user preferences, or the like, as well as various combinations thereof. The
MSL control server 120 may be configured to initiate transfer of content to MD
110 based on a determined schedule or to provide the determined schedule
to MSL client 112 for use in controlling transfer of content to MD 110. In one
embodiment, MSL control server 120 utilizes the smartloading content queue
for controlling delivery of the content items to MD 110 for smartloading into
MSL cache 114 of MD 110. The MSL client 112 may be configured to monitor
device conditions of MD 110 (e.g., power status, battery status, processor
occupancy, or the like) and network conditions of the underlying
communication network (e.g., channel quality, bearer(s), or the like) for use in
determining opportunities for delivery of content to MD 110 for caching in MSL
cache 114 (e.g., time for delivery, bearer to use for delivery, or the like). The
10
MSL client 112 may be configured to react to changes in such condition
information by interrupting/resuming content delivery via exchange of control
messages with MSL control server 120 (or even by initiating a seamless
switchover to a different access network). As noted above, however, MSL
client 112 cooperates with the elements on the data path (e.g., MSL proxy
server 130, CON 140, or CS 150) for actual delivery of the content to MD 110
for smartloading into MSL cache 114 of MD 110.
The MSL client 112 and MSL control server 120 may cooperate to
manage the content that has been smartloaded into MSL cache 114 of MD
110 (e.g., setting the size of MSL cache 114, performing cache partitioning
across content sources or providers, utilizing cache replacement
mechanisms, supporting access control enforcements, performing controlled
purges (e.g., based on or more of user preferences, network operator policies,
content provider policies, or the like), or the like, as well as various
combinations thereof.
The MSL client 112 of MD 110, the MSL control server 120, and the
MSL proxy server 130 may cooperate to perform various other functions in
support of the CON extension capability.
It is noted that, although primarily depicted and described herein with
respect to an embodiment of an MSL network architecture including specific
numbers, types, and arrangements of elements, the MSL network architecture
may include any other suitable numbers, types, or arrangements of elements
(e.g., additional MDs, one or more additional servers of the CON, one or more
additional CSs, or the like, as well as various combinations thereof).
It is noted that MSL network architecture 100 may utilize various types
of underlying communication networks and associated technologies. For
example, although omitted from FIG. 1 for purposes of clarity, MD 110 may
access one or more wireless access networks in order to communicate with
other elements of MSL network architecture 100. For example, MD 110 may
access one or more of a Third Generation (3G) cellular access network, a
Fourth Generation (4G) cellular access network, a femtocell access network,
11
a Wireless Fidelity (WiFi) access network, or the like, as well as various
combinations thereof.
FIG. 2 depicts one embodiment of a method for loading a content item
from a CON into a cache on a mobile device when the content item is injected
into the CON by a content provider.
As depicted in FIG. 2, the method 200 includes steps performed by
MSL client 112, MSL control server 120, CON 140, and CS 150. Within the
context of FIG. 2, CS 150 represents the content owner (or any other type of
content source which may provide content to CON 140). References to
loading in FIG. 2 are references to smartloading (in which the content item is
pre-loaded into MD 110 prior to being consumed). In FIG. 2, control
messages are indicated via dashed lines whereas content transfers are
indicated via solid lines. Although primarily depicted and described as being
performed serially, at least a portion of the steps of method 200 may be
performed contemporaneously or in a different order than presented in FIG. 2.
At step 210, CS 150 provides a content item (denoted as Item X) to
CON 140 for storage of the content item in CON 140.
At step 220, CON 140 sends a content load determination request
message to MSL control server 120 (denoted as SL ITEM X LOAD
REQUEST). The content load determination request message is indicative
that the content item is available within CON 140, such that the MSL control
server 120 should make a determination as to whether or not the content item
is to be loaded into the MSL cache 114 of the MD 110.
At step 230, MSL control server 120 sends a content load control
message to MSL client 112 of MD 110 (denoted as SL ITEM X REQUEST).
The content load control message is indicative that a determination has been
made by MSL control server 120 that the content item is to be loaded into the
MSL cache 114 of the MD 110. This determination may be made by analytics
of the MSL control server 120 based on one or more user-related properties,
such as user profile information , content usage history, one or more content
properties (e.g., popularity, category, tags, and so forth), or the like, as well as
various combinations thereof. The content load control message includes
12
content loading information for use by MSL client 112 of MD 110 in requesting
loading of the content item into the MSL cache 114 of MD 110. The content
loading information includes content item source information indicative of a
location within the CON 140 at which the content item is stored (e.g., a CON
URL at which the content item may be requested}. The content loading
information also may include one or more of a content item download
deadline, a content item priority, or the like, as well as various combinations
thereof. If the MSL control server 120 maintains a content loading queue for
MD 110 (e.g., for maintaining the set of content items to be loaded into the
MSL cache of the MD 11 0), the indication that the content item is to be loaded
into the MSL cache 114 of the MD 11 0 may be added to the content loading
queue for MD 11 0.
At step 240, the content item is loaded from CON 140 into the MSL
cache 114 of MD 110. The step 240 includes one or more sets of requests
and responses exchanged between MSL client 112 of MD 110 and CON 140.
The requests are (1) requests from MSL client 112 of MD 110 to CON 140 for
requesting that the CON 140 begins/resumes sending the content item to MD
110 (e.g., when a relatively low cost wireless access point is available to MD
110, during off-peak times on a macro cellular wireless access point, or the
like) and (2) requests from MSL client 112 of MD 110 to CON 140 for
requesting that the CON 140 suspend sending the content item to MD 110
(e.g., when a relatively low cost wireless access point is not available to MD
110, during peak times on a macro cellular wireless access point, or the like).
The MSL client 150 may request/suspend loading of the content item from
CON 140 into MSL cache 114 of MD 110 any suitable number of times which
may be at any suitable times based on any suitable conditions (e.g., based on
one or more of network status information, network access patterns of the MD
110 to wireless access points, or the like, as well as various combinations
thereof). The responses include the transfer of respective portions of the
content item from CON 140 to MD 110 for caching on MSL cache 114 of MD
110 such that MSL cache 114 of MD 110 may operate as an extension of the
CON 140. It is noted that, although omitted for purposes of clarity, the MSL
13
client 112 and the MSL control server 120 may cooperate to coordinate
efficient delivery of the content item from the CON 140 to the MSL cache 114
of MD 110.
At step 250, MSL client 112 of MD 110 sends a content load complete
message to MSL control server 120 (denoted as SL ITEM X COMPLETE).
The content load complete message is indicative that the loading of the
content item into MSL cache 114 of MD 110 is complete. The MSL control
server 120 then has information indicative that the content item is available
from MSL cache 114 of MD 110 as part of CON 140 (i.e., MSL cache 114 of
MD 110 is operating as an extension of CON 140 for the content item).
It is noted that, in FIG. 2, the CON provider of CON 140 is hosting the
content of the content provider and the content provider provides meta data for
the content item to the CON provider such that no identification of the content
item needs to be performed.
FIG. 3 depicts one embodiment of a method for consuming a content
item from a cache on a mobile device where the cache on the mobile device
is an extension of a CON.
As depicted in FIG. 3, the method 300 includes steps performed by
MSL client 112 of MD 110, AC 116 of MD 110, MSL control server 120, and
MSL proxy server 130. References to loading in FIG. 3 are references to
smartloading (in which the content item is pre-loaded into MD 110 prior to
being consumed). In FIG. 3, control messages are indicated via dashed lines
whereas content transfers are indicated via solid lines. Although primarily
depicted and described as being performed serially, at least a portion of the
steps of method 300 may be performed contemporaneously or in a different
order than presented in FIG. 3.
At step 310, the AC 116 of MD 110 sends a content request message
directed to a content source (omitted for purposes of clarity) and the content
request message is intercepted by MSL proxy server 130. The content
request message is an HTTP GET message requesting Item X. The content
request message includes an identifier of the requested content item (e.g., a
14
URL identifying a location at which the requested content item is stored by the
content source).
At step 320, the MSL proxy server 130 sends a redirect request
message to MSL control server 120 (denoted as REDIRECT REQUEST).
The redirect request message is a request to determine whether the content
request message sent from the AC 116 of MD 110 to the MSL proxy server
130 is to be redirected back to the MD 110 (rather than being propagated
toward the content source).
At step 330, the MSL control server 120 determines whether the
requested content item is available from the MSL cache 114 of MD 110 such
that the content request message sent from the AC 116 of MD 110 and
intercepted by the MSL proxy server 130 is to be redirected back to MD 110.
If the content item has already been loaded into MSL cache 114 of MD 110
such that MD 110 operates as an extension of CON 140 for that content item,
then the content item can be served to AC 116 of MD 11 0 locally from MSL
cache 114 of MD 110, thereby conserving resources and improving the quality
of experience of the end user of MD 110. In FIG. 3, an assumption is made
that the content item is available from the MSL cache 114 of MD 110. It is
noted that, if a determination was made that the content item was not
available from the MSL cache 114 of MD 110, the MSL control server 120
may determine whether the requested content item may be served from a
network-based portion of CON 140 or could propagate the content request
message toward the content source.
At step 340, the MSL control server 120 sends a redirect response
message to MSL proxy server 130 (denoted as REDIRECT RESPONSE).
The MSL control server 120 sends a redirect response message to MSL
proxy server 130 based on a determination by MSL control server 120 that the
content request message sent from the AC 116 of MD 110 to the MSL proxy
server 130 is to be redirected back to MD 110. The redirect response
message indicates to MSL proxy server 130 that the content item request
initiated by the AC 116 of MD 110 is to be redirected back to the MD 110
(rather than being propagated to CON 140).
15
At step 350, MSL proxy server 130 sends an HTTP REDIRECT
message to the AC 116 of MD 110 from which the content request was
initiated. The HTTP REDIRECT message enables the MSL proxy server 130
to redirect the AC 116 of MD 110 to obtain the requested content item locally
from the MSL cache 114 of MD 110 rather than from the network-based
portion of CDN 140 or from the content source. The HTTP REDIRECT
message includes a CON-based content identifier of the requested content
item (e.g., a CDN URL of the requested content item). The MSL proxy server
130 may use the content source URL for the content item to determine the
CDN URL of the requested content item for use in the HTTP REDIRECT
message.
At step 360, the AC 116 of MD 110 sends a new content request
message to MSL client 112 of MD 110 (i.e., internally within MD 11 0). The
new content request message is an HTTP GET message requesting Item X.
The new content request message includes the CON-based content identifier
of the requested content item (e.g., a CDN URL of the requested content
item) for use by MSL client 112 of MD 110 to identify the requested content
item in MSL cache 114 of MD 110.
At step 370, the MSL client 112 of MD 110 determines whether the
requested content item is cached on MD 110 (e.g., is cached on MSL cache
114 of MD 114). The MSL client 112 uses the CON-based content identifier
of the requested content item (provided in the new content request message
received from MSL proxy server 130) to determine whether the requested
content item is cached in the MSL cache 114 of MD 110. In FIG. 3, an
assumption is made that the requested content item is cached in the MSL
cache 114 of MD 110.
At step 380, based on a determination that the requested content item
is cached on MD 110, the MSL client 112 retrieves the requested content item
from the MSL cache 112 and provides the requested content to the AC 116 of
MD 110 from which the content request was initiated. The MSL client 112
uses the CON-based content identifier of the requested content item (provided
in the new content request message received from MSL proxy server 130) to
16
retrieve the requested content item from MSL cache 114 of MD 110. The
MSL client 112 of MD 110 may serve the content item to the AC 116 from the
MSL cache 114 using the associated MSL client side API 115 associated with
the AC 116.
It is noted that, although primarily depicted and described with respect
to an embodiment in which MSL control server 120 determines availability of
the requested content item in MSL cache 114 of MD 110 before performing
redirection of the content request, in one embodiment (1) the MSL proxy
server 130 is configured to redirect the content request to the MSL client 112
of MD 110 without sending the content request to MSL control server 120 and
(2) the MSL client 112 is configured to determine, based on availability of the
requested content item in MSL cache 114 of MD 110, whether the content
request can be served locally from MSL cache 114 of MD 110 (when present
in MSL cache 114) or whether the content request needs to be redirected
back to the network to be served by a network-based portion of CON 140
(e.g., when not present in MSL cache 114). In one such embodiment, the
redirected content request sent from MSL proxy server 130 to MSL client 112
of MD 110 includes content item source information indicative of a location
within the CON 140 at which the content item is stored (e.g., a CON URL at
which the content item may be requested) such that the MSL client 112 may
use the content item source information for redirecting the content request
back to the network to be served by a network-based portion of CON 140 if
necessary (e.g., if the content item is not cached locally in the MSL cache 114
of the MD 110).
It is noted that, although method 300 is primarily depicted and
described with respect to an embodiment in which the AC 116 of MD 110 is
an HTTP-based client and the content item is requested using HTTP
messages, method 300 may be used for various other types of client
applications using various other types of content requesUdelivery protocols.
It is noted that, within the context of method 300 of FIG. 3, the MSL
proxy server is configured to operate as a redirector. It is noted that, although
method 300 of FIG. 3 is primarily depicted and described with respect to use
17
of HTTP-based redirection of the content request message of the AC 116, any
suitable redirection mechanism may be used to redirect the content request
message of the AC 116 to the MSL client 112 of MD 110.
It is noted that the redirection of the content request may or may not be
transparent to the user of the MD 11 0, depending on the type of Operating
System (OS) supported by the MD 110. In an embodiment in which the MD
110 includes a multi-tasking OS (depicted in FIG. 1 and FIG. 3), the MSL
client 112 may be configured to support standard, HTTP-based APis for
content streaming and download that work in a compliant manner with HTTP
redirect mechanisms such that access by the user of MD 110 to the content
loaded into MSL cache 114 may be implemented in a transparent manner
without requiring any changes by the content provider (e.g., without changes
to the mobile application or web site of the content provider). In an
embodiment in which the MD 110 includes a non-multi-tasking OS (omitted for
purposes of clarity), the functionality of MSL client 114 may be embedded
within the mobile application of the content provider via a Software
Development Kit (SDK) and the MSL client 114 may provide the content to the
AC 116 of MD 110 via associated SDK APis.
FIG. 4 depicts one embodiment of a method for offering to load a
content item from a CON into a cache of a mobile device when a request for
the content item is sent from the mobile device to the content source.
As depicted in FIG. 4, the method 400 includes steps performed by
MSL client 112 of MD 110, AC 116 of MD 110, MSL control server 120, MSL
proxy server 130 (which functions as a server considered to be part of CON
140), and CS 150. Within the context of FIG. 4, CS 150 represents a content
source corresponding to the AC 116 of MD 110 (e.g., an application server for
the same application) or any other suitable type of content source which may
provide content to MSL proxy server 130 (CON 140). References to loading
in FIG. 4 are references to smartloading (in which the content item is preloaded
into MD 110 prior to being consumed). In FIG. 4, control messages
are indicated via dashed lines whereas content transfers are indicated via
solid lines. Although primarily depicted and described as being performed
18
serially, at least a portion of the steps of method 400 may be performed
contemporaneously or in a different order than presented in FIG. 4.
At step 405, the AC 116 of MD 110 sends a content request message
to MSL proxy server 130. The content request message is an HTTP GET
message requesting Item X. The content request message includes an
identifier of the requested content item (e.g., a URL identifying a location at
which the requested content item is stored by the content source).
At step 410, the MSL proxy server 130 forward the content request
message (the HTTP GET message requesting Item X) to CS 150.
At step 415, the CS 150 initiates transfer of the requested content item
to MSL proxy server 130.
At step 420, the MSL proxy server 130 performs content identification,
in order to identify the received content item, using fingerprinting. The proxy
server 130 performs fingerprinting of the content item, computes a unique
identifier for the content item using the results of the fingerprinting, and uses
the unique content identifier computed for the received content item in order
to determine whether the content item is already cached in the CON 140. The
fingerprinting may be performed using data received in response to the
content request message (illustratively, the HTTP GET message), such as
one or more of header information, an initial portion of the payload data, or the
like, as well as various combinations thereof. The fingerprinting computation
may involve hashing and checksum mechanisms. The fingerprinting may be
performed in any other suitable manner. If the content item is not already
cached in the CON 140, the proxy server 130 stores the content item in the
CON 140 such that the content item is associated with the unique content
identifier computed for the content item. If the content item is already stored
in CON 140, the proxy server 140 may then determine the next action to be
taken for the content item. In FIG. 4, the content item is already stored in the
CON 140 (although it is only stored in a network-based cache of CON 140,
not in the MSL cache 114 of MD 110 which is operating as an extension of the
CON 140).
19
At step 425, the MSL proxy server 130 optionally sends a message to
the CS 150 requesting that the transfer of the content item to MSL proxy
server 130 be terminated (e.g., in response to a determination that the content
item is already stored in CON 140). In this manner, resources may be
conserved where the content item is already available within the CON 140.
At step 430, the MSL proxy server 130 sends a content location
request message to the MSL control server 120 requesting that the MSL
control server 120 determine whether or not the content item is currently
cached in the MSL cache 114 (denoted as ITEM X LOCATION REQUEST).
At step 435, the MSL control server 120 determines whether or not the
content item is currently cached in the MSL cache 114 of MD 11 0. This
determination may include performing a search using a content identifier of
the content item. This determination may include determining the location(s)
within the CON 140 at which the content item is stored and determining
whether the MSL cache 114 is one of the storage locations for the content
item. The content item may be stored in a network-based cache of CON 140
and/or in MSL cache 114 of the MD 110. In FIG. 4, the content item is not
currently cached in the MSL cache 114 of the MD 11 0. It is noted that, if the
MSL control server 120 determined that the content item was already cached
in the MSL cache 114 of MD 110, the remaining steps of method 400 would
not be performed; rather, the MSL control server would redirect the request
for the content item to the MSL client 112 of MD 110 (e.g., as depicted and
described with respect to steps 640- 660 of FIG. 6).
At step 440, the MSL control server 120 sends a content location
response message to the MSL: proxy server 130 (denoted as ITEM X
LOCATION RESPONSE). The content location response message is
indicative as to whether or not the content item is currently cached in the MSL
cache 114 of MD 110. In FIG. 4, as noted above, the content location
response message indicates that the content item is not currently cached in
the MSL cache 114 of the MD 110.
At step 445, the MSL proxy server 130 sends a content loading request
message to the MD 110 for providing an option for the content item to be
20
loaded into the MSL cache 114 of MD 110 (denoted as SL ITEM X OPTION
REQUEST). The content loading request message requests, from the MD
110, an indication as to whether the content item is to be loaded into the MSL
cache 114 of the MD 110. The content loading request message may be
provided to the AC 116 of MD 110 and presented to the user via a
presentation interface of the MD 110 such that the user of the MD 110 may
indicate whether or not the content item should be loaded into the MSL cache
114 of the MD 110 (as depicted in FIG. 4). The content loading request
message may be provided to the MSL client 112 of the MD 110 such that the
MSL client 112 of the MD 110 may determine whether or not the content item
should be loaded into the MSL cache 114 of the MD 110 (omitted from FIG. 4
for purposes of clarity).
At step 450, the MD 110 sends a content loading response message to
the MSL proxy server 130 based on a decision from MD 11 0 regarding the
option for the content item to be loaded into the MSL cache 114 of MD 110
(denoted as SL ITEM X OPTION RESPONSE). The content loading
response message indicates whether or not the content item is to be loaded
into the MSL cache 114 of MD 110. As noted with respect to step 445, the
content loading response message may originate from the AC 116 of MD 110
(as depicted in FIG. 4) or from the MSL client 112 of MD 110 (omitted from
FIG. 4 for purposes of clarity). In FIG. 4, an assumption is made that the
content item is to be loaded into the MSL cache 114 of MD 110.
At step 455, the MSL proxy server 130 sends a content load request
message to the MSL control server 120 (denoted as SL REQUEST (ITEM X)).
The content load request message is indicative that the content item
requested by MD 110 is to be loaded into the MSL cache 114 of MD 110. If
the MSL control server 120 maintains a content loading queue for MD 110
(e.g., for maintaining the set of content items to be loaded into the MSL cache
of the MD 11 0), the indication that the content item is to be loaded into the
MSL cache 114 of the MD 110 may be added to the content loading queue for
MD 110.
21
At step 460, the MSL control server 120 sends a content load control
message to MSL client 112 of MD 110 (denoted as SL ITEM X REQUEST).
The content load control message indicates to the MSL client 112 of MD 110
that the content item is to be loaded into the MSL cache 114 of MD 110, such
that the MSL client 112 may begin the content loading process. The content
load control message includes content loading information for use by MSL
client 112 of MD 110 in requesting loading of the content item into the MSL
cache 114 of MD 110. The content loading information includes content item
source information indicative of a location within the CDN 140 at which the
content item is stored (e.g., a CDN URL at which the content item may be
requested). The content loading information also may include one or more of
a content item deadline, a content item priority, or the like, as well as various
combinations thereof.
At step 465, the content item is loaded from CDN 140 (illustratively,
from MSL proxy server 130 which is operating as part of CDN 140) into the
MSL cache 11465 of MD 110. The step 465 includes one or more sets of
requests and responses exchanged between MSL client 112 of MD 110 and
MSL proxy server 130 (CDN 140). The requests are (1) requests from MSL
client 112 of MD 110 to MSL proxy server 130 (CDN 140) for requesting that
the MSL proxy server 130 (CDN 140) begins/resumes sending the content
item to MD 110 (e.g., when a relatively low cost wireless access point is
available to MD 110, during off-peak times on a macro cellular wireless
access point, or the like) and (2) requests from MSL client 112 of MD 110 to
MSL proxy server 130 (CDN 140) for requesting that the MSL proxy server
130 (CDN 140) suspend sending the content item to MD 110 (e.g., when a
relatively low cost wireless access point is not available to MD 110, during
peak times on a macro cellular wireless access point, or the like). The MSL
client 150 may request/suspend loading of the content item from MSL proxy
server 130 (CDN 140) into MSL cache 114 of MD 110 any suitable number of
times which may be at any suitable times based on any suitable conditions
(e.g., based on one or more of network status information, network access
patterns of the MD 110 to wireless access points, or the like, as well as
22
various combinations thereof). The responses include the transfer of
respective portions of the content item from MSL proxy server 130 (CON 140)
to MD 110 for caching on MSL cache 114 of MD 110 such that MSL cache
114 of MD 110 may operate as an extension of the CON 140.
At step 470, MSL client 112 of MD 110 sends a content load complete
message to MSL control server 120 (denoted as SL ITEM X COMPLETE).
The content load complete message is indicative that the loading of the
content item into MSL cache 114 of MD 110 is complete. The MSL control
server 120 then has information indicative that the content item is available
from MSL cache 114 of MD 110 as part of CON 140 (i.e., MSL cache 114 of
MD 110 is operating as an extension of CON 140 for the content item).
It is noted that, although primarily depicted and described with respect
to an embodiment in which MSL proxy server 130 sends a request message
to the MD 110 for requesting an indication as to whether or not the content
item is to be loaded into the MSL cache 114 of MD 110, in one embodiment
the MSL proxy server 130 may be configured to determine whether or not to
send the request message to the MD 110 for requesting an indication as to
whether or not the content item is to be loaded into the MSL cache 114 of MD
110. This determination may be based on one or more factors, such as a size
of the requested content item (e.g., for a content item greater than a threshold
size, the request message is sent for providing an option for the requested
content item to be to pre-loaded into MSL cache 114 of MD 110 before the
requested content item is consumed by the user of MD 11 0), subscription
information associated with a user of MD 110, preferences of a user of MD
110, or the like, as well as various combinations thereof. If a determination is
made not to provide an option for the requested content item to be to preloaded
into MSL cache 114 of MD 110 before the requested content item is
consumed by the user of MD 110, the remaining steps of method 400 would
not be performed (rather, the requested content item would be provided to the
MD 110 in real time).
23
It is noted that, within the context of method 400 of FIG. 4, the MSL
proxy server 130 is configured to operate as a proxy and a portion of the CON
140.
It is noted that, although method 400 is primarily depicted and
described with respect to an embodiment in which the AC 116 of MD 110 is
an HTTP-based client and the content item is requested using HTTP
messages, method 400 may be used for various other types of client
applications using various other types of content request/delivery protocols.
FIG. 5 depicts one embodiment of a method for predictive loading of a
content item from a CON into a cache of a mobile device.
As depicted in FIG. 5, the method 500 includes steps performed by
MSL client 112 of MD 110, MSL control server 120, MSL proxy server 130,
and CS 150. Within the context of FIG. 5, CS 150 represents any suitable
type of content source (e.g., a server of a content owner, an application server
corresponding to the AC 116 of MD 110, or any other suitable type of content
source which may provide content to MSL proxy server 130 (CON 140).
References to loading in FIG. 5 are references to smartloading (in which the
content item is pre-loaded into MD 110 prior to being consumed). In FIG. 5,
control messages are indicated via dashed lines whereas content transfers
are indicated via solid lines. Although primarily depicted and described as
being performed serially, at least a portion of the steps of method 500 may be
performed contemporaneously or in a different order than presented in FIG. 5.
At step 510, the MSL proxy server 130 sends a content request
message to CS 150. The content request message is an HTTP GET
message requesting Item X. The content request message includes an
identifier of the requested content item (e.g., a URL identifying a location at
which the requested content item is stored by the content source).
At step 520, the CS 150 initiates transfer of the requested content item
to MSL proxy server 130.
At step 530, the MSL proxy server 130 performs detection processing
on the received content item in order to identify the received content item and
caches the content item in the CON 140. The received content item may be
24
identified in any suitable manner (e.g., based on one or more of a content
identifier associated with the content item, identification of a watermark
included within the content item, recognition of the content of the content item,
or the like). In FIG. 5, it is assumed that the received content item is not
already cached in the CON 140 (otherwise, steps 425-470 of FIG. 4 may be
performed where a determination is made that the received content item is
already cached in the CON 140).
At step 540, the MSL proxy server 130 sends a content availability
notification message to the MSL control server 120 (denoted as ITEM X
AVAILABLE NOTIFICATION). The content availability notification message
indicates to the MSL control server 120 that the content item is available from
CON 140.
At step 550, the MSL control server 120 determines whether to load
the content item from the CON 140 into the MSL cache 114 of MD 110. The
MSL control server 120 may determine, based on its analytics, whether to
load the content item to the MSL cache 114 of MD 110 using smartloading.
This determination may be based on one or more factors, such as a size of
the requested content item (e.g., for a content item greater than a threshold
size, the request message is sent for providing an option for the requested
content item to be to pre-loaded into MSL cache 114 of MD 11 0 before the
requested content item is consumed by the user of MD 11 0), subscription
information associated with a user of MD 110, preferences of a user of MD
110, or the like, as well as various combinations thereof. In FIG. 5, an
assumption is made that the MSL control server 120 determines that the
content item is to be loaded into the MSL cache 114 of MD 110.
At step 560, the MSL control server 120 sends a content load control
message to MSL client 112 of MD 110 (denoted as SL ITEM X REQUEST).
The content load control message indicates to the MSL client 112 of MD 110
that the content item is to be loaded into the MSL cache 114 of MD 110, such
that the MSL client 112 may begin the content loading process. The content
load control message includes content loading information for use by MSL
client 112 of MD 110 in requesting loading of the content item into the MSL
25
cache 114 of MD 11 0. The content loading information includes content item
source information indicative of a location within the CON 140 at which the
content item is stored (e.g., a CON URL at which the content item may be
requested). The content loading information also may include one or more of
a content item deadline, a content item priority, or the like, as well as various
combinations thereof.
At step 570, the content item is loaded from CON 140 (illustratively,
from MSL proxy server 130 which is operating as part of CON 140) into the
MSL cache 114 of MD 110. The step 570 includes one or more sets of
requests and responses exchanged between MSL client 112 of MD 110 and
MSL proxy server 130 (CON 140). The requests are ( 1) requests from MSL
client 112 of MD 110 to MSL proxy server 130 (CON 140) for requesting that
the MSL proxy server 130 (CON 140) begins/resumes sending the content
item to MD 110 (e.g., when a relatively low cost wireless access point is
available to MD 110, during off-peak times on a macro cellular wireless
access point, or the like) and (2) requests from MSL client 112 of MD 110 to
MSL proxy server 130 (CON 140) for requesting that the MSL proxy server
130 (CON 140) suspend sending the content item to MD 110 (e.g., when a
relatively low cost wireless access point is not available to MD 110, during
peak times on a macro cellular wireless access point, or the like). The MSL
client 150 may request/suspend loading of the content item from MSL proxy
server 130 (CON 140) into MSL cache 114 of MD 110 any suitable number of
times which may be at any suitable times based on any suitable conditions
(e.g., based on one or more of network status information, network access
patterns of the MD 110 to wireless access points, or the like, as well as
various combinations thereof). The responses include the transfer of
respective portions of the content item from MSL proxy server 130 (CON 140)
to MD 110 for caching on MSL cache 114 of MD 110 such that MSL cache
114 of MD 110 may operate as an extension of the CON 140.
At step 580, MSL client 112 of MD 110 sends a content load complete
message to MSL control server 120 (denoted as SL ITEM X COMPLETE).
The content load complete message is indicative that the loading of the
26
content item into MSL cache 114 of MD 110 is complete. The MSL control
server 120 then has information indicative that the content item is available
from MSL cache 114 of MD 110 as part of CON 140 (i.e., MSL cache 114 of
MD 110 is operating as an extension of CON 140 for the content item).
It is noted that, within the context of method 500 of FIG. 5, the MSL
proxy server 130 is configured to operate as a proxy and a portion of the CON
140.
It is noted that, in FIG. 5, CON 140 is performing transparent caching of
the content item belonging to a non-partner content provider (e.g., OTT
content) in order to lower the network costs and improve the quality of
experience of the end user. In this case, there is no direct way for the CON
140 to acquire the metadata for the content item and, thus, content
identification is performed. It is noted that, although method 500 is primarily
depicted and described with respect to an embodiment in which the AC 116 of
MD 110 is an HTTP-based client and the content item is requested using
HTTP messages, method 500 may be used for various other types of client
applications using various other types of content request/delivery protocols.
FIG. 6 depicts one embodiment of a method for consuming a content
item from a cache on a mobile device where the cache on the mobile device
is an extension of a CON.
As depicted in FIG. 6, the method 600 includes steps performed by
MSL client 112 of MD 110, AC 116 of MD 110, MSL control server 120, MSL
proxy server 130, and CS 150. Within the context of FIG. 6, CS 150
represents a content source corresponding to the AC 116 of MD 110 (e.g., an
application server for the same application) or any other suitable type of
content source which may provide content to MSL proxy server 130 (CON
140). References to loading in FIG. 6 are references to smartloading (in
which the content item is pre-loaded into MD 110 prior to being consumed).
In FIG. 6, control messages are indicated via dashed lines whereas content
transfers are indicated via solid lines. Although primarily depicted and
described as being performed serially, at least a portion of the steps of
27
method 600 may be performed contemporaneously or in a different order than
presented in FIG. 6.
At step 605, the AC 116 of MD 110 sends a content request message
to MSL proxy server 130. The content request message is an HTTP GET
message requesting Item X. The content request message includes an
identifier of the requested content item (e.g., a URL identifying a location at
which the requested content item is stored by the content source).
At step 610, the MSL proxy server 130 forwards the content request
message (the HTTP GET message requesting Item X) to CS 150.
At step 615, the CS 150 initiates transfer of the requested content item
to MSL proxy server 130.
At step 620, the MSL proxy server 130 performs content identification,
in order to identify the received content item, using fingerprinting. The proxy
server 130 performs fingerprinting of the content item, computes a unique
identifier for the content item using the results of the fingerprinting, and uses
the unique content identifier computed for the received content item in order
to determine whether the content item is already stored in the CON 140. The
fingerprinting may be performed using data received in response to the
content request message (illustratively, the HTTP GET message), such as
one or more of header information, an initial portion of the payload data, or the
like, as well as various combinations thereof. The fingerprinting computation
may involve hashing and checksum mechanisms. The fingerprinting may be
performed in any other suitable manner. If the content item is not already
stored in the CON 140, the proxy server 130 stores the content item in the
CON 140 such that the content item is associated with the unique content
identifier computed for the content item. If the content item is already stored
in CON 140, the proxy server 140 may then determine the next action to be
taken for the content item. In FIG. 6, the content item is already stored in the
CON 140 (as it is at least stored in the MSL cache 114 of MD 110, which is
operating as an extension of the CON 140).
At step 625, the MSL proxy server 130 sends a message to the CS 150
requesting that the transfer of the content item to MSL proxy server 130 be
28
terminated (e.g., in response to a determination that the content item is
already stored in CDN 140). In this manner, resources may be conserved
where the content item is already available within the CDN 140.
At step 630, the MSL proxy server 130 sends a redirect request
message to MSL control server 120 (denoted as REDIRECT REQUEST).
The redirect request message is a request to determine whether the content
request message sent from the AC 116 of MD 11 0 to the MSL proxy server
130 is to be redirected back to the MD 110 such that the content may be
sourced locally from the MSL cache 114 of MD 110 rather than from the
network (e.g., rather than from the network-based portion of CDN 140).
At step 635, the MSL control server 120 determines whether the
requested content item is available from the MSL cache 114 of MD 110 such
that the content request message sent from the AC 116 of MD 110 is to be
redirected back to MD 110. If the content item has already been loaded into
MSL cache 114 of MD 110 such that MD 110 operates as an extension of
CDN 140 for that content item, then the content item can be served to AC 116
of MD 110 locally from MSL cache 114 of MD 110, thereby conserving
resources and improving the quality of experience of the end user of MD 110.
In FIG. 6, as noted above, the content item is available from the MSL cache
114 of MD 110. It is noted that, if a determination was made that the content
item was not available from the MSL cache 114 of MD 110, the MSL control
server 120 may determine whether the requested content item may be served
from a network-based portion of CDN 140 or could propagate the content
request message toward the content source.
At step 640, the MSL control server 120 sends a redirect response
message to MSL proxy server 130 (denoted as REDIRECT RESPONSE).
The MSL control server 120 sends a redirect response message to MSL
proxy server 130 based on a determination by MSL control server 120 that the
content request message sent from the AC 116 of MD 110 to the MSL proxy
server 130 is to be redirected back to MD 110. The redirect response
message indicates to MSL proxy server 130 that the content item request
29
initiated by the AC 116 of MD 110 is to be redirected back to the MD 110
(rather than being propagated to CON 140).
At step 645, MSL proxy server 130 sends an HTTP REDIRECT
message to the AC 116 of MD 110 from which the content request was
initiated. The HTTP REDIRECT message enables the MSL proxy server 130
to redirect the AC 116 of MD 110 to obtain the requested content item locally
from the MSL cache 114 of MD 110 rather than from the network-based
portion of CON 140 or from the content source. The HTTP REDIRECT
message includes a CON-based content identifier of the requested content
item (e.g., a CON URL of the requested content item). The MSL proxy server
130 may use the content source URL for the content item to determine the
CON URL of the requested content item for use in the HTTP REDIRECT
message.
At step 650, the AC 116 of MD 110 sends a new content request
message to MSL client 112 of MD 110 (i.e., internally within MD 11 0). The
new content request message is an HTTP GET message requesting Item X.
The new content request message includes the CON-based content identifier
of the requested content item (e.g., a CON URL of the requested content
item) for use by MSL client 112 of MD 110 to identify the requested content
item in MSL cache 114 of MD 110.
At step 655, the MSL client 112 of MD 110 determines whether the
requested content item is cached on MD 110 (e.g., is cached on MSL cache
114 of MD 114). The MSL client 112 uses the CON-based content identifier
of the requested content item (provided in the new content request message
received from MSL proxy server 130) to determine whether the requested
content item is cached in the MSL cache 114 of MD 110. In FIG. 6, as noted
above, the requested content item is cached in the MSL cache 114 of MD
110.
At step 660, based on a determination that the requested content item
is cached on MD 110, the MSL client 112 retrieves the requested content item
from the MSL cache 112 and provides the requested content to the AC 116 of
MD 110 from which the content request was initiated. The MSL client 112
30
uses the CON-based content identifier of the requested content item (provided
in the new content request message received from MSL proxy server 130) to
retrieve the requested content item from MSL cache 114 of MD 110. The
MSL client 112 of MD 110 may serve the content item to the AC 116 from the
MSL cache 114 using the associated MSL client side API 115 associated with
the AC 116.
It is noted that, although primarily depicted and described with respect
to an embodiment in which MSL control server 120 determines availability of
the requested content item in MSL cache 114 of MD 110 before performing
redirection of the content request, in one embodiment (1) the MSL proxy
server 130 is configured to redirect the content request to the MSL client 112
of MD 110 without sending the content request to MSL control server 120 and
(2) the MSL client 112 is configured to determine, based on availability of the
requested content item in MSL cache 114 of MD 110, whether the content
request can be served locally from MSL cache 114 of MD 110 (when present
in MSL cache 114) or whether the content request needs to be redirected
back to the network to be served by a network-based portion of CON 140
(e.g., when not present in MSL cache 114). In one such embodiment, the
redirected content request sent from MSL proxy server 130 to MSL client 112
of MD 110 includes content item source information indicative of a location
within the CON 140 at which the content item is stored (e.g., a CON URL at
which the content item may be requested) such that the MSL client 112 may
use the content item source information for redirecting the content request
back to the network to be served by a network-based portion of CON 140 if
necessary.
It is noted that, although method 600 is primarily depicted and
described with respect to an embodiment in which the AC 116 of MD 11 0 is
an HTTP-based client and the content item is requested using HTTP
messages, method 600 may be used for various other types of client
applications using various other types of content request/delivery protocols.
It is noted that, within the context of method 600 of FIG. 6, the MSL
proxy server is configured to operate as a redirector. It is noted that, although
31
method 600 of FIG. 6 is primarily depicted and described with respect to use
of HTTP-based redirection of the content request message of the AC 116, any
suitable redirection mechanism may be used to redirect the content request
message of the AC 116 to the MSL client 112 of MD 110.
It is noted that, as described hereinabove with respect to FIG. 3, the
redirection of the content request may or may not be transparent to the user
of the MD 110, depending on the type of OS supported by the MD 110.
It is noted that, although the CON extension capability is primarily
depicted and described herein within the context of extending a CON to end
user devices where smartloading (namely, MSL) is used to load the content
into the caches on the end user devices, any other suitable content loading
mechanism may be used to load the content into the caches on the end user
devices and thereby extend the CON to the end user devices.
It is noted that, although the CON extension capability is primarily
depicted and described herein within the context of extending a CON to end
user devices within a specific type of wireless environment (namely, within an
MSL network architecture supporting mobile end user devices), the CON
extension capability may be used to extend a CON to end user devices in
various other types of wireless environments (e.g., within other types of
mobile wireless environments, within fixed wireless environments, or the like).
It is noted that, although the CON extension capability is primarily depicted
and described herein within the context of extending a CON to end user
devices within wireless environments, the CON extension capability may be
used to extend a CON to end user devices in various other types of
communication environments (e.g., in wireline environments in which the end
user devices may include one or more of set top boxes, residential gateways,
Digital Subscriber Line (DSL) Access Multiplexers (OS LAMs), or the like). It is
noted that the CON extension capability may be used to extend a CON to end
user devices in communication environments using various combinations of
such communication technologies.
It is noted that, although primarily depicted and described herein with
respect to embodiments in which an entire content item is cached in the MSL
32
cache of the end user device, in at least one embodiment only a portion of a
content item may be cached in the MSL cache of the end user device prior to
consumption of the content item via the end user device. In at least some
such embodiments, when the content item is requested for consumption via
the end user device, the portion of the content item cached in the MSL cache
of the end user device may be served locally from the MSL cache of the end
user device and the remaining portion of the content item may be served from
the network-based portion of the CON.
It is noted that, although primarily depicted and described herein with
respect to embodiment in which specific functions are performed by an end
user device 110, a control server (e.g., MSL control server 120), and a proxy
server (e.g., MSL proxy server 130), in various other embodiments the various
functions depicted and described herein may be combined or distributed in
various other ways. In one embodiment, for example, the functions depicted
and described herein as being performed by a control server and a proxy
server (where such servers are depicted as being separate devices) may be
performed by a single device configured to function as a combination of the
control and proxy servers. In one embodiment, for example, at least a portion
of the functions depicted and described herein as being performed by a proxy
server deployed within the network may be implemented on the end user
device. It is noted that the various functions may be combined and/or
distributed across existing and/or new device, modules, or the like in various
other ways. Accordingly, it will be appreciated that references herein to the
"control server" and the "proxy server" may be read more generally as being
references to a "control module" and a "proxy module" where such modules
may be implemented in any suitable configuration (e.g., each as one or more
logical component on one or more existing and/or new devices). Similarly, it
will be appreciated that references herein to a "control module" and a "proxy
module" may be read more generally as being modules of or associated with
a CON.
FIG. 7 depicts a high-level block diagram of a computer suitable for use
in performing functions described herein.
33
The computer 700 includes a processor 702 (e.g., a central processing
unit (CPU) and/or other suitable processor(s)) and a memory 704 (e.g.,
random access memory (RAM), read only memory (ROM), and the like).
The computer 700 also may include a cooperating module/process
705. The cooperating process 705 can be loaded into memory 704 and
executed by the processor 702 to implement functions as discussed herein
and, thus, cooperating process 705 (including associated data structures) can
be stored on a computer readable storage medium, e.g., RAM memory,
magnetic or optical drive or diskette, and the like.
The computer 700 also may include one or more input/output devices
506 (e.g., a user input device (such as a keyboard, a keypad, a mouse, and
the like), a user output device (such as a display, a speaker, and the like), an
input port, an output port, a receiver, a transmitter, one or more storage
devices (e.g., a tape drive, a floppy drive, a hard disk drive, a compact disk
drive, and the like), or the like, as well as various combinations thereof).
It will be appreciated that computer 700 depicted in FIG. 7 provides a
general architecture and functionality suitable for implementing functional
elements described herein and/or portions of functional elements described
herein. For example, the computer 700 provides a general architecture and
functionality suitable for implementing one or more of an element of MD 110,
a portion of MD 110, MSL client 112, a portion of MSL client 112, MSL cache
114, an AC 116, an AS 120, a portion of an AS 120, MSL control server 120,
a portion of MSL control server 120, MSL proxy server 130, a portion of MSL
proxy server 130, one or more elements of CON 140, or the like.
It will be appreciated that the functions depicted and described herein
may be implemented in software (e.g., via implementation of software on one
or more processors, for executing on a general purpose computer (e.g., via
execution by one or more processors) so as to implement a special purpose
computer, and the like) and/or may be implemented in hardware (e.g., using a
general purpose computer, one or more applicatiOn specific integrated circuits
(ASIC), and/or any other hardware equivalents).
34
It is contemplated that some of the steps discussed herein as software
methods may be implemented within hardware, for example, as circuitry that
cooperates with the processor to perform various method steps. Portions of
the functions/elements described herein may be implemented as a computer
program product wherein computer instructions, when processed by a
computer, adapt the operation of the computer such that the methods and/or
techniques described herein are invoked or otherwise provided. Instructions
for invoking the inventive methods may be stored in fixed or removable media,
transmitted via a data stream in a broadcast or other signal bearing medium,
and/or stored within a memory within a computing device operating according
to the instructions.
It is noted that the term "or" as used herein refers to a non-exclusive
"or," unless otherwise indicated (e.g., "or else" or "or in the alternative").
It is noted that, although various embodiments which incorporate the
teachings of the present invention have been shown and described in detail
herein, those skilled in the art can readily devise many other varied
embodiments that still incorporate these teachings.
35
1/We claim:
1. An apparatus configured to support caching of a content item,
comprising:
a processor and a memory communicatively connected to the
processor, the processor configured to:
determine whether to cache the content item in a Content
Delivery Network (CON), wherein determining whether to cache the
content item in the CON comprises determining whether to cache the
content item in a storage module of an end user device; and
support access to the content from the CON by accessing the
content from the storage module of the end user device.
2. The apparatus of claim 1, wherein the processor is configured to
determine whether to cache the content item in the storage module of the end
user device based on at least one of:
analytics of data associated with a user;
analytics of data associated with a content item;
a determination that the content item is cached in a network cache of
the CON;
a determination that a request for the content item is initiated from a
content client of the end user device;
a determination that a user of the end user device accepts caching of
the content item in the storage module of the end user device
a determination that an owner of the content item allows or desires the
content item to be cached in the CON; or
a determination that an owner of the CON wishes to cache the content
item in the CON.
3. The apparatus of claim 1, wherein the processor is configured to:
propagate, toward the end user device, an indication that the content
item is to be cached in storage module of the end user device.
36
4. The apparatus of claim 1, wherein the processor is configured to
perform at least one of:
propagate at least a portion of the content item toward the end user
device for caching in the storage module of the end user device; or
propagate a message configured to cause a module of the CDN to
propagate at least a portion of the content item toward the end user device for
caching in the storage module of the end user device.
5. The apparatus of claim 1, wherein the processor is configured to
perform at least one of:
receiving an indication of caching progress related to caching of the
content item in the storage module of the end user device; or
propagating an indication of caching progress related to caching of the
content item in the storage module of the end user device.
6. The apparatus of claim 1, wherein the processor is configured to:
maintain, in a repository, content cache status information comprising:
information indicative as to whether the content item is stored
partially or completely in the storage module of the end device; and
information indicative as to which portion of the content item is
stored in the storage module of the end user device based on an
indication that the content item is stored partially in the storage module
of the end device.
7. The apparatus of claim 1, wherein the processor is configured to:
receive a request for determining whether the content item is cached in
the storage module of the end user device; and
propagate the request toward a module configured to determine, based
on client cache repository information associated with the end user device,
whether the content item is cached in the storage module of the end user
device.
37
8. The apparatus of claim 1, wherein the processor is configured to:
receive a request for client cache repository information associated
with the end user device; and
accept or respond to the request for client cache repository information
associated with the end user device.
9. The apparatus of claim 8, wherein the processor is configured to
receive the request from one of a CON client of the end user device, a content
client of the end user device, a proxy module of the CON, or a control module
of the CON.
10. The apparatus of claim 1, wherein the processor is configured to
perform at least one of:
intercept a request of the end user device; or
intercept a response propagated toward the end user device.
11. The apparatus of claim 1, wherein the processor is configured to:
intercept a request of the end user device to access the content item;
and
propagate the request toward a content source of the content item.
12. The apparatus of claim 1, wherein the processor is configured to:
redirect a request for the content item toward the storage module of the
end user device based on a determination that the content item is cached in
the storage module of the end user device.
13. The apparatus of claim 12, wherein the determination that the content
item is cached in the storage module of the end user device is based on client
cache repository information associated with the end user device.
38
14. The apparatus claim 12, wherein the redirected request comprises
content identification information for identifying the content item within the
CON.
15. The apparatus of claim 1, wherein the processor is configured to:
retrieve the content item from the storage module of the end user
device; and
propagate the retrieved content item for presentation via at least one
presentation interface.
16. The apparatus of claim 15, wherein the processor is configured to:
propagate, toward a network cache of the CON based on a
determination that only a portion of the content item is cached in the storage
module of the end user device, a request for a portion of the content item to
be propagated toward the end user device.
17. The apparatus of claim 1, wherein the processor is configured to:
propagate an offer message configured to provide an offer for the
content item to be cached in the storage module of the end user device.
18. The apparatus of claim 1, wherein the processor is configured to:
present, via at least one presentation interface of the end user device,
an offer for the content item to be cached in the storage module of the end
user device.
19. The apparatus of claim 1, wherein the processor is configured to:
receive a response indicative of a decision by a user of the end user to
cache the content item in the storage module of the end user device; and
send a message indicative that the content item is to be cached in the
storage module of the end user device.
20. The apparatus of claim 1, wherein the processor is configured to:
39
receive a portion of the content item from a content source; and
perform fingerprinting of the content item based on the received portion
of the content item.
21. The apparatus of claim 20, wherein the processor is configured to
perform fingerprinting of the content item based on at least one of header
information or a portion of payload data.
22. The apparatus of claim 20, wherein the processor is configured to
perform at least one of:
compute a unique identifier for the content item based on the
fingerprinting of the content item;
determine whether the content item is cached in the CON based on the
fingerprinting of the content item; or
determine whether the content item is cached in the storage module of
the end user device based on the fingerprinting of the content item.
23. The apparatus of claim 1, wherein the processor is configured to:
generate a redirect message intended for a content client of the end
user device.
24. The apparatus of claim 23, wherein the processor is configured to:
generate the redirect message intended for a content client of the end
user device based on at least one of:
a determination that the content item is cached in the storage
module of the end user device.
fingerprinting of the content item based on the received portion
of the content item; or
a query for availability of the content item in the storage module
of the end user device.
40
25. The apparatus of claim 1, wherein the processor is configured to
support access to the content from the CON by accessing the content from
the storage module of the end user device transparent to a content client of
the end user device.
26. An apparatus configured to support caching of a content item,
comprising:
a processor and a memory communicatively connected to the
processor, the processor configured to:
determine whether to cache the content item in a Content
Delivery Network (CON), wherein determining whether to cache the content
item in the CON comprises determining whether to cache the content item in a
storage module of an end user device.
27. An apparatus, comprising:
a processor and a storage module communicatively connected to the
processor, the processor configured to:
receive a content item from a network server of a Content
Delivery Network (CON);
cache the received content item in the CON by caching the
content item in the storage module; and
access the content item from the CON by accessing the content
item from the storage module.
| Section | Controller | Decision Date |
|---|---|---|
| # | Name | Date |
|---|---|---|
| 1 | 2245-DEL-2012-FORM 4 [03-12-2024(online)].pdf | 2024-12-03 |
| 1 | 2245-DEL-2012-FORM 4 [26-06-2023(online)].pdf | 2023-06-26 |
| 1 | 2245-del-2012-Form-1-(22-08-2012).pdf | 2012-08-22 |
| 2 | 2245-del-2012-Correspondence-Others-(22-08-2012).pdf | 2012-08-22 |
| 2 | 2245-DEL-2012-FORM 4 [26-06-2023(online)].pdf | 2023-06-26 |
| 2 | 2245-DEL-2012-IntimationOfGrant14-03-2023.pdf | 2023-03-14 |
| 3 | 2245-del-2012-GPA.pdf | 2015-09-28 |
| 3 | 2245-DEL-2012-IntimationOfGrant14-03-2023.pdf | 2023-03-14 |
| 3 | 2245-DEL-2012-PatentCertificate14-03-2023.pdf | 2023-03-14 |
| 4 | 2245-DEL-2012-Written submissions and relevant documents [22-12-2022(online)].pdf | 2022-12-22 |
| 4 | 2245-DEL-2012-PatentCertificate14-03-2023.pdf | 2023-03-14 |
| 4 | 2245-del-2012-Form-3.pdf | 2015-09-28 |
| 5 | 2245-DEL-2012-Written submissions and relevant documents [22-12-2022(online)].pdf | 2022-12-22 |
| 5 | 2245-DEL-2012-FORM-26 [08-12-2022(online)].pdf | 2022-12-08 |
| 5 | 2245-del-2012-Form-2.pdf | 2015-09-28 |
| 6 | 2245-DEL-2012-FORM-26 [08-12-2022(online)].pdf | 2022-12-08 |
| 6 | 2245-del-2012-Form-1.pdf | 2015-09-28 |
| 6 | 2245-DEL-2012-Correspondence to notify the Controller [18-10-2022(online)].pdf | 2022-10-18 |
| 7 | 2245-DEL-2012-US(14)-HearingNotice-(HearingDate-08-12-2022).pdf | 2022-10-18 |
| 7 | 2245-del-2012-Drawings.pdf | 2015-09-28 |
| 7 | 2245-DEL-2012-Correspondence to notify the Controller [18-10-2022(online)].pdf | 2022-10-18 |
| 8 | 2245-DEL-2012-CLAIMS [14-07-2020(online)].pdf | 2020-07-14 |
| 8 | 2245-del-2012-Description (Complete).pdf | 2015-09-28 |
| 8 | 2245-DEL-2012-US(14)-HearingNotice-(HearingDate-08-12-2022).pdf | 2022-10-18 |
| 9 | 2245-DEL-2012-CLAIMS [14-07-2020(online)].pdf | 2020-07-14 |
| 9 | 2245-DEL-2012-COMPLETE SPECIFICATION [14-07-2020(online)].pdf | 2020-07-14 |
| 9 | 2245-del-2012-Correspondence-others.pdf | 2015-09-28 |
| 10 | 2245-del-2012-Claims.pdf | 2015-09-28 |
| 10 | 2245-DEL-2012-COMPLETE SPECIFICATION [14-07-2020(online)].pdf | 2020-07-14 |
| 10 | 2245-DEL-2012-FER_SER_REPLY [14-07-2020(online)].pdf | 2020-07-14 |
| 11 | 2245-del-2012-Abstract.pdf | 2015-09-28 |
| 11 | 2245-DEL-2012-FER.pdf | 2020-01-16 |
| 11 | 2245-DEL-2012-FER_SER_REPLY [14-07-2020(online)].pdf | 2020-07-14 |
| 12 | 2245-DEL-2012-FER.pdf | 2020-01-16 |
| 12 | Form 18 [13-07-2016(online)].pdf | 2016-07-13 |
| 13 | Form 18 [13-07-2016(online)].pdf | 2016-07-13 |
| 13 | 2245-DEL-2012-FER.pdf | 2020-01-16 |
| 13 | 2245-del-2012-Abstract.pdf | 2015-09-28 |
| 14 | 2245-del-2012-Abstract.pdf | 2015-09-28 |
| 14 | 2245-del-2012-Claims.pdf | 2015-09-28 |
| 14 | 2245-DEL-2012-FER_SER_REPLY [14-07-2020(online)].pdf | 2020-07-14 |
| 15 | 2245-del-2012-Claims.pdf | 2015-09-28 |
| 15 | 2245-DEL-2012-COMPLETE SPECIFICATION [14-07-2020(online)].pdf | 2020-07-14 |
| 15 | 2245-del-2012-Correspondence-others.pdf | 2015-09-28 |
| 16 | 2245-DEL-2012-CLAIMS [14-07-2020(online)].pdf | 2020-07-14 |
| 16 | 2245-del-2012-Correspondence-others.pdf | 2015-09-28 |
| 16 | 2245-del-2012-Description (Complete).pdf | 2015-09-28 |
| 17 | 2245-del-2012-Drawings.pdf | 2015-09-28 |
| 17 | 2245-DEL-2012-US(14)-HearingNotice-(HearingDate-08-12-2022).pdf | 2022-10-18 |
| 17 | 2245-del-2012-Description (Complete).pdf | 2015-09-28 |
| 18 | 2245-del-2012-Drawings.pdf | 2015-09-28 |
| 18 | 2245-del-2012-Form-1.pdf | 2015-09-28 |
| 18 | 2245-DEL-2012-Correspondence to notify the Controller [18-10-2022(online)].pdf | 2022-10-18 |
| 19 | 2245-del-2012-Form-1.pdf | 2015-09-28 |
| 19 | 2245-del-2012-Form-2.pdf | 2015-09-28 |
| 19 | 2245-DEL-2012-FORM-26 [08-12-2022(online)].pdf | 2022-12-08 |
| 20 | 2245-del-2012-Form-2.pdf | 2015-09-28 |
| 20 | 2245-del-2012-Form-3.pdf | 2015-09-28 |
| 20 | 2245-DEL-2012-Written submissions and relevant documents [22-12-2022(online)].pdf | 2022-12-22 |
| 21 | 2245-del-2012-Form-3.pdf | 2015-09-28 |
| 21 | 2245-del-2012-GPA.pdf | 2015-09-28 |
| 21 | 2245-DEL-2012-PatentCertificate14-03-2023.pdf | 2023-03-14 |
| 22 | 2245-del-2012-Correspondence-Others-(22-08-2012).pdf | 2012-08-22 |
| 22 | 2245-del-2012-GPA.pdf | 2015-09-28 |
| 22 | 2245-DEL-2012-IntimationOfGrant14-03-2023.pdf | 2023-03-14 |
| 23 | 2245-del-2012-Correspondence-Others-(22-08-2012).pdf | 2012-08-22 |
| 23 | 2245-DEL-2012-FORM 4 [26-06-2023(online)].pdf | 2023-06-26 |
| 23 | 2245-del-2012-Form-1-(22-08-2012).pdf | 2012-08-22 |
| 24 | 2245-DEL-2012-FORM 4 [03-12-2024(online)].pdf | 2024-12-03 |
| 24 | 2245-del-2012-Form-1-(22-08-2012).pdf | 2012-08-22 |
| 1 | SearchStrategy_26-12-2019.pdf |