U.S. patent application number 14/503089 was filed with the patent office on 2015-05-14 for accelerated delivery of media content via peer caching.
The applicant listed for this patent is Mark D. Alleman, Israel L'Heureux. Invention is credited to Mark D. Alleman, Israel L'Heureux.
Application Number | 20150134767 14/503089 |
Document ID | / |
Family ID | 51489238 |
Filed Date | 2015-05-14 |
United States Patent
Application |
20150134767 |
Kind Code |
A1 |
L'Heureux; Israel ; et
al. |
May 14, 2015 |
ACCELERATED DELIVERY OF MEDIA CONTENT VIA PEER CACHING
Abstract
An example method includes monitoring client devices to identify
a subset of client devices actively connected to an internet
gateway server, and maintaining a record of media data chunks
cached at each client device of the subset of client devices. The
method includes receiving a request from a first client device for
a media data item stored at a media server device, and determining
that a first target portion of the media data item is cached at a
second client device actively connected to the internet gateway
server. The method includes instructing the first client device to
establish a peer-to-peer connection with the second client device,
to request, and to receive the first target portion of the media
data item from the second client device. The method includes
retrieving and sending the remainder of the media data item to the
first client device.
Inventors: |
L'Heureux; Israel; (Monaco,
MC) ; Alleman; Mark D.; (Portland, OR) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
L'Heureux; Israel
Alleman; Mark D. |
Monaco
Portland |
OR |
MC
US |
|
|
Family ID: |
51489238 |
Appl. No.: |
14/503089 |
Filed: |
September 30, 2014 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13017022 |
Jan 30, 2011 |
8849899 |
|
|
14503089 |
|
|
|
|
Current U.S.
Class: |
709/213 |
Current CPC
Class: |
H04L 65/60 20130101;
H04L 67/1085 20130101; H04L 67/108 20130101; H04L 67/2842 20130101;
H04L 29/08 20130101 |
Class at
Publication: |
709/213 |
International
Class: |
H04L 29/08 20060101
H04L029/08; H04L 29/06 20060101 H04L029/06 |
Claims
1. A method for an internet gateway server, comprising: receiving a
request from a first client device over a client-side access
network for a media data item stored at a media server device
connected or connectable to the internet gateway server via a
server-side wide area network; determining that a first target
portion of the media data item is cached at a second client device
actively connected to the internet gateway server over the
client-side access network, the first target portion corresponding
to a seek location of the media data item; responsive to the
request, instructing the first client device to establish a
connection with the second client device over the client-side
access network, to request and to receive the first target portion
of the media data item from the second client device; retrieving a
remainder of the media data item not cached at any client device
actively connected to the internet gateway server, by requesting
the remainder of the media data item from the media server device,
and receiving the remainder of the media data item from the media
server device over the server-side wide area network; and sending
the remainder of the media data item to the first client
device.
2. A method performed by one or more server devices, the method
comprising: enabling communications between a first client device
and a media server device, the communications including a request
by the first client device for a media data item stored at the
media server device; retrieving the media data item from the media
server device; breaking the media data item into two or more
constituent media data subunits, including at least a first media
data subunit and a second media data subunit; sending the first
media data subunit to the first client device; maintaining, at a
data store, a record of the first media data subunit being cached
at the first client device; receiving a request by a second client
device for the media data item stored at the media server device;
referencing the data store for the record to identify the first
media data subunit being cached at the first client device;
instructing the second client device to request and receive the
first media data subunit from the first client device via a
peer-to-peer connection; and sending the second media data subunit
to the second client device.
3. The method of claim 2, wherein instructing the second client
device to request and receive the first media data subunit from the
first client device via the peer-to-peer connection further
includes instructing the second client device to present an
indication that transmission of media data is being
accelerated.
4. The method of claim 2, further comprising: prompting a user of
the second client device with an option to opt-in to accelerated
transmission of media data; and wherein instructing the second
client device to request and receive the first media data subunit
from the first client device via the peer-to-peer connection is
performed responsive to the user of the second client device
opting-in to the accelerated transmission of media data.
5. The method of claim 4, further comprising: instructing the
second client device to cache a media data subunit of the media
data item at the second client device responsive to the user of the
second client device opting-in to the accelerated transmission of
media data.
6. The method of claim 2, wherein instructing the second client
device to request and receive the first media data subunit from the
first client device via the peer-to-peer connection is performed if
the first client device is determined to be actively connected to a
gateway server device of the one or more server devices.
7. The method of claim 6, wherein breaking the media data item into
two or more constituent media data subunits is performed by the
gateway server.
8. The method of claim 6, wherein breaking the media data item into
two or more constituent media data subunits is performed by the
media server device.
9. The method of claim 2, further comprising: instructing the first
client device to cache the first media data subunit of the media
data item at the first client device.
10. The method of claim 2, further comprising: maintaining, at the
data store, a record of whether the first client device is actively
connected to a gateway server device of the one or more server
devices; determining whether the first client device is actively
connected to the gateway server device based on the record; and
wherein instructing the second client device to request and receive
the first media data subunit from the first client device via a
peer-to-peer connection is performed if the first client device is
actively connected to the gateway server device.
11. The method of claim 10, further comprising: maintaining, at the
data store, a record of whether one or more other client devices
are actively connected to the gateway server device and which of
the two or more media data subunits are cached at the one or more
other client devices; determining whether a third client device of
the one or more client devices is actively connected to the gateway
server device and has cached the first media data subunit based on
the record; and wherein if the first client device is determined
not to be actively connected to the gateway server device,
instructing the second client device to request and receive the
first media data subunit from the third client device via a
peer-to-peer connection.
12. The method of claim 11, wherein if the first client device and
the third client device having cached the first media data subunit
are both actively connected to the gateway server, then determine
whether the second client device is to request the first media data
subunit from either the first client device or the third client
device based on one or more factors; wherein the one or more
factors include a serving load on the first client device, a
serving load on the third client device, a connection parameter
between first client device and the second client device, a
connection parameter between the third client device and the second
client device, and/or a connection parameter between the second
client device and the gateway server device.
13. A method performed by a client device, the method comprising:
requesting a media data item from a media server device via a
communications network; receiving a data record over the
communications network, the data record indicating one or more
other client devices having cached media data subunits of the media
data item and actively connected to a gateway server device or the
media server device; requesting a first media data subunit from a
second client device of the one or more other client devices based
on the data record; receiving the first media data subunit of the
media data item from the second client device over a peer-to-peer
connection via the communications network; presenting the first
media data subunit of the media data item; receiving a second media
data subunit of the media data item from the gateway server device
or the media server device via the communications network;
presenting the second media data subunit of the media data item;
receiving an instruction via the communications network, the
instruction identifying the second media data subunit of the media
data item to be cached at the client device; caching the second
media data subunit of the media data item at the client device
responsive to the instruction; receiving a request for the second
media data subunit from a third client device over another
peer-to-peer connection via the communication network; and sending
the second media data subunit to the third client device over the
another peer-to-peer connection.
14. The method of claim 13, further comprising: prompting a user of
the client device to opt-in to accelerated delivery of the media
data item; and wherein requesting the first media data subunit from
the second client device is performed by the client device if the
user opted-in to accelerated delivery of the media data item.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application claims priority to and is a
continuation of U.S. patent application Ser. No. 13/017,022, titled
ACCELERATED DELIVERY OF MEDIA CONTENT VIA PEER CACHING, filed Jan.
30, 2011, and issued as U.S. Pat. No. 8,849,899, the entire
contents of which are incorporated herein by reference in their
entirety for all purposes.
BACKGROUND
[0002] When downloading or streaming media from a remote server,
users often experience delay before the presentation begins. A
connection must be established between the user's device and a
remote server, and the media must be downloaded and buffered a
suitable amount before playback may begin. Network connection
speed, latency, and congestion, as well as server delay, can
contribute to the delay the user experiences. Frustrated with such
delay, a user may navigate to a different media source, or may
abandon the media viewing effort all together. This inhibits the
widespread adoption of on-demand internet based media delivery
methods, since some users may tend to prefer the immediate ability
to tune in different media programs via a cable television
tuner.
SUMMARY
[0003] A network communications system and method are disclosed.
The network communications method may include establishing
client-side connections between an internet gateway server and a
plurality of client devices via a client-side access network, and
enabling communications between each of the client devices and
corresponding server devices via the client-side access network,
the internet gateway server, and a server-side wide area network.
The method further includes monitoring the client devices to
identify a subset of the client devices actively connected to the
internet gateway server via the client-side access network, and
maintaining a record of media data chunks cached at each client
device of the subset of client devices actively connected to the
internet gateway server.
[0004] The method may further include receiving a request from a
first client device of the subset of client devices actively
connected to the internet gateway server for a media data item
stored at a media server device connected or connectable to the
internet gateway server via the server-side wide area network. The
method further includes determining that a first target portion of
the media data item is cached at a second client device of the
subset of client devices actively connected to the internet gateway
server based on the record, and determining that a second target
portion of the media data item is cached at a third client device
of the subset of client devices actively connected to the internet
gateway server based on the record.
[0005] Responsive to the request, the method further includes
instructing the first client device to establish corresponding
peer-to-peer connections with each of the second and third client
devices, to request, and to receive the first and second target
portions of the media data item from the second and third client
devices, respectively. The method further includes initiating
presentation of the first and second target portions of the media
data item at the first client device. The method further includes
retrieving a remainder of the media data item, sending the
remainder of the media data item to the first client device, and
initiating presentation of the remainder of the media data
item.
[0006] Claimed subject matter, however, is not limited by this
summary as other implementations may be disclosed by the following
written description and associated drawings.
BRIEF DESCRIPTION OF DRAWINGS
[0007] FIG. 1 is a schematic diagram depicting an example network
communications system according to one disclosed embodiment.
[0008] FIGS. 2 and 3 are flow diagrams depicting an example network
communications method according to one disclosed embodiment.
[0009] FIG. 4 is network flow diagram according to one disclosed
embodiment.
[0010] FIG. 5 is a flow diagram depicting another example network
communications method according to one disclosed embodiment.
[0011] FIGS. 6 and 7 schematically depict example media data items
according to one disclosed embodiment.
[0012] FIG. 8 is a diagram depicting an example cache table
according to one disclosed embodiment.
DETAILED DESCRIPTION
[0013] FIG. 1 is a schematic diagram depicting an example network
communications system 100 according to one disclosed embodiment.
Network communications system includes a number of computing
devices, including: an internet gateway server 110, one or more
server devices such as media server device 120, a plurality of
client devices such as first client device 130, second client
device 140, and third client device 150. These computing devices
may comprise a processor, memory, and/or mass storage. Instructions
stored in memory or mass storage may be executed by the processor
to perform one or more of the methods, processes, or functions
described herein.
[0014] Internet gateway server 110 may include one or more of a
cache manager 112 to monitor and identify media data chunks cached
at each client device, and a chunker module 114 to break apart, or
chunk, a media data item into two or more constituent media data
subunits, referred to as chunks. Cache manager 112 and chunker
module 114 may be implemented as instructions stored in memory or
mass storage executable by a processor of internet gateway server
110. However, chunker module 114 may instead reside at media server
device 120 as chunker module 124 in other implementations. In at
least some implementations, internet gateway server 110 may reside
at or may comprise a component of an internet gateway 160. Internet
gateway 160 may further include a data store 162. Data store 162
may include a connected client device list 164 indicating a list of
client devices actively connected to the internet gateway server,
and a cache table 166 indicating media data chunks cached at each
client device actively connected to the internet gateway server.
The contents of connected client device list 164 and cache table
166 are described in greater detail with reference to FIG. 8.
[0015] Media server device 120 may include one or more of media
data item 122 (among other media data items), and chunker module
124 to chunk a media data item into two or more media data chunks.
Chunker module 124 may be implemented as instructions stored in
memory or mass storage executable by a processor of media server
device 120. Typically, the chunker module is positioned either at
the media server device 120 as chunker module 124, or at the
internet gateway server 110 as chunker module 114, as previously
discussed, since the media data need only be chunked once by a
module in either location. Alternatively, both chunker modules 114,
124 may be provided, to provide flexibility in the location of
chunking Internet gateway server 110 may communicate with media
server device 120 via server-side wide area network (WAN) 170. As
one example, server-side WAN 170 may comprise the Internet or a
portion thereof. For this reason, the internet gateway server may
alternatively referred to as a WAN gateway server, but throughout
this description will be referred to as an internet gateway server
for ease of reference.
[0016] First client device 130 (also referred to herein as a
requesting client device) may include a media viewer 132 to enable
a user to view, browse, or control presentation of media data
items, a data cache 134, and a peer-to-peer module 136 to
facilitate request and retrieval of media data from other client
devices over peer-to-peer connections. Media viewer 132 and
peer-to-peer module 136 may be implemented as instructions stored
in memory or mass storage executable by a processor of first client
device 130. Media viewer 132 may be configured to present media
data items, for example, via a graphical display and/or audio
speaker of first client device 130. Data cache 134 may reside at
memory or mass storage of first client device 130, and may be
configured to cache media data items or portions thereof (e.g., one
or more media data chunks of a media data item). Second client
device 140 and third client device 150 may be functionally
identical to first client device 130. For example, second client
device 140 may include media viewer 142, data cache 144, and
peer-to-peer module 146. Third client device 150 may include media
viewer 152, data cache 154, and peer-to-peer module 156. In at
least some implementations, client devices 130, 140, 150, etc., may
comprise one or more of an internet enabled mobile telephone,
tablet computing device, personal computer, laptop computing
device, desktop computing device, internet enabled television,
cable television receiver, satellite television receiver, digital
video recorder, a component of an electronic device, or other
suitable computing device.
[0017] As one example, internet gateway server 110 may be
positioned at a mobile broadband access point, and client-side
access network 172 may be a mobile broadband wireless access
network. As another example, internet gateway server 110 may be
positioned at a cable network broadband access point of a cable
operator, and client-side access network 172 may be a cable
broadband wireless access network. As yet another example, internet
gateway server 110 may be positioned at a public switched telephone
network, and client-side access network 172 may be a leased line
access network, dial-up access network, or asynchronous digital
subscriber line access network.
[0018] Internet gateway server 110 is configured to establish
client-side connections between internet gateway server 110 and the
plurality of client devices 130, 140, and 150 via a client-side
access network 172. Internet gateway server 110 is configured to
enable communications between each of the client devices and
corresponding server devices via client-side access network 172,
internet gateway server 110, and server-side WAN 170. As one
example, second client device 140 may request and receive a media
data item 122 or portion thereof from media data stored at media
server device 120 via internet gateway server 110. For example,
second client device 140 is shown with a cached first target
portion 148 comprising one or more media data chunks that were
received from media server device 120. A user may operate media
viewer 142 to present media data item 122, including at least first
target portion 148.
[0019] Internet gateway server 110 is further configured to monitor
the plurality of client devices to identify a subset of the client
devices actively connected to internet gateway server 110 via
client-side access network 172. In at least some implementations,
cache manager 112 of internet gateway server 110 may update
connected client device list 164 in response to client devices
connecting or disconnecting from internet gateway server 110 to
provide an indication of actively connected client devices.
Internet gateway server 110 is further configured to maintain a
record of media data chunks cached at each client device of the
subset of client devices actively connected to the internet gateway
server. For example, cache manager 112 of internet gateway server
110 may update cache table 166 in response to media data chunks
being cached or deleted (e.g., over written or made available for
over-writing) at client devices to maintain a record of media data
chunks stored at each client device. In at least some
implementations, a media data item may be cached in a distributed
cache across a plurality of client devices. Cache manager 112 may
manage, control, and track (e.g., via cache table 166) caching of
the media data chunks of the media data item across the plurality
of client devices in any suitable manner.
[0020] Internet gateway server 110 is further configured to receive
a request 180 from first client device 130 (i.e., a requesting
client device) of the subset of client devices actively connected
to internet gateway server 110, for a media data item 122 stored at
media server device 120 connected or connectable to internet
gateway server 110 via server-side WAN 170. Cache manager 112 of
internet gateway server 110 is configured to determine that first
target portion 148 of media data item 122 is cached at second
client device 140 of the subset of client devices actively
connected to internet gateway server 110 based on the record
maintained, for example, at cache table 166. As one example, first
target portion 148 may correspond to a seek location (e.g.,
playback point) of media data item 122. For example, first target
portion 148 may comprise at least one media data chunk beginning at
and following from the seek location. Cache manager 112 of internet
gateway server 110 may be further configured to determine that a
second target portion 158 of media data item 122 is cached at third
client device 150 of the subset of client devices actively
connected to the internet gateway server based on the record
maintained, for example, at cache table 166. For example, second
target portion 158 may comprise at least one media data chunk
beginning at the end of first target portion 148 corresponding to a
subsequent location after the seek location of first media data
item 122. Greater numbers of target portions of a media data item
may be identified and retrieved for a requesting client device
based on the record of media data chunks cached at each client
device, as indicated by cache table 166.
[0021] Cache manager 112 of internet gateway server 110 is further
configured to, responsive to request 180, instruct first client
device 130 (e.g., via instruction message 182) to establish
corresponding peer-to-peer connections 184, 186 with each of second
client device 140 and third client device 150, to request, and to
receive first target portion 148 and second target portion 158 of
media data item 122 from second client device 140 and third client
device 150, respectively. For example, peer-to-peer module 136 of
first client device 130 may be configured to receive instruction
message 182 from internet gateway server 110. Instruction message
182 may indicate one or more network locations of one or more
client devices from which the one or more target portions of the
media data item may be obtained.
[0022] In at least some implementations, peer-to-peer connections
may be established between respective peer-to-peer modules of the
client devices. For example, peer-to-peer module 136 of first
client device 130 may establish one or more peer-to-peer
connections (e.g., connections 184, 186) with peer-to-peer modules
of other client devices (e.g., second client device 140 and third
client device 150), in response to receiving instruction message
182. First client device 130 may request and receive first target
portion 148 from second client device 140 via peer-to-peer
connection 184 over client-side access network 172. First client
device 130 may request and receive second target portion 158 from
third client device 150 via peer-to-peer connection 186 over
client-side access network 172. The first and second target
portions 148, 158 may be cached at data cache 134 by first client
device 130. Media viewer 132 may initiate presentation of first and
second target portions 148, 158 upon receiving them from second and
third client devices 140 and 150.
[0023] In at least some implementations, chunker module 114 of
internet gateway server 110 is configured to retrieve a remainder
168 of media data item 122 not obtained by first client device 130
from other client devices. As one example, internet gateway server
110 may retrieve remainder 168 of media data item 122 by retrieving
the entire media data item 122 from media server device 120, chunk
or otherwise divide media data item 122 into a plurality of media
data chunks at chunker module 114, and identify those chunks that
comprise remainder 168 of media data item 122. Internet gateway
server 110 is further configured to send a reply message 192 that
includes those media data chunks comprising remainder 168 to first
client device 130, so that first client device 130 may obtain the
entirety of media data item 122. As another example, cache manager
112 is configured to retrieve remainder 168 of media data item 122
from media server device 120, wherein chunker module 124 chunks or
otherwise divides media data item 122 at media server device 120.
Cache manager 112 of internet gateway server 110 is configured to
send a request 188 for a remainder 168 of media data item 122 from
media server device 120, and receive a reply 190 including a
remainder 168 of media data item 122 from media server device 120.
Cache manager 112 is configured to send a reply message 192
including a remainder 168 to first client device 130.
[0024] While the above example has been described in terms of first
client device 130 obtaining first and second target portions 148,
158 from respective second and third client devices 140, 150, with
remainder 168 being obtained from internet gateway server 110,
other content delivery scenarios may be supported. For example, a
first target portion may be instead obtained by first client device
130 from internet gateway server 110, a second target portion may
be instead obtained from one of second and third client devices
140, 150, and a remainder may be obtained from another of second
and third client device 140, 150. Accordingly, it should be
understood that numerous content delivery scenarios may be
implemented by internet gateway server 110, whereby one or more
portions of a media data item may be obtained via one or more
peer-to-peer connections.
[0025] In at least some implementations, cache manager 112 of
internet gateway server 110 is configured to identify a media
identifier for media data item 122 requested by first client device
130 based, at least in part, on a parameter of a URL or other
resource identifier of the request. Alternatively or additionally,
internet gateway server 110 is configured to identify the media
data item 122 based, at least in part, on information contained in
a query response 190 received from media server device 120. For
example, the media identifier may comprise a media data item title,
or media server device 120 may resolve the media data item title to
a character string of a variable or predetermined string length to
obtain the media identifier. Thus, a movie title such as "On Any
Sunday" may be a media identifier, or an alphanumeric code
associated with the movie title may be the media identifier, for
example. The latter alternative may assign different codes to each
of multiple versions of the same movie having the same title,
enable the system to distinguish between such versions, for
example. It will be appreciated that other suitable information may
be utilized as a media identifier or may be resolved to a media
identifier, for example, by media server device 120. As described
in greater detail with reference to FIG. 8, cache table 166
comprising the record of media data chunks cached at each of client
device of the subset of client devices actively connected to
internet gateway server 110 may be organized by media identifier
and a corresponding media data chunk identifier for each media data
chunk, and a client identifier for each of the client devices.
[0026] In at least some implementations, cache manager 112 of
internet gateway server 110 is further configured to receive a
confirmation message from peer-to-peer module 136 of first client
device 130 indicating that at least the first target portion 148
was successfully transferred over respective peer-to-peer
connections between first client device 130 and second client
device 140. A confirmation message may be sent by peer-to-peer
module 136 to cache manager 112 for each target portion or media
data chunk thereof that is successfully received by first client
device 130. If the confirmation message for first target portion
148 is not received from the first client device within a threshold
time period after instructing the first client device or if an
error message is instead received, then cache manager 112 of
internet gateway server 110 is further configured to retrieve first
target portion 148 (e.g., from media server device 120) and send
first target portion 148 to first client device 130. Alternatively,
cache manager 112 is configured to instruct peer-to-peer module 136
of first client device 130 to establish corresponding peer-to-peer
connections with a fourth client device (not shown), to request,
and to receive first target portion 148 from the fourth client
device.
[0027] In at least some implementations, cache manager 112 of
internet gateway server 110, prior to determining that first target
portion 148 is cached at second client device 140, is further
configured to determine whether first client device 130 is
authorized to receive accelerated transmission of media data, and
to instruct first client device 130 to establish the corresponding
peer-to-peer connections with each of the second and third client
devices 140, 150 only if first client device 130 is authorized to
receive accelerated transmission of media data. Authorization of
accelerated transmission of media data is described in greater
detail with reference to FIG. 5.
[0028] In at least some implementations, cache manager 112 of
internet gateway server 110 is further configured to, prior to
receiving request 180 from first client device 130, preload a third
portion of media data item 122 at first client device 130 by
sending a third portion of the media data item to first client
device via client-side access network 172. The third portion of
media data item 122 may correspond to a beginning portion of media
data item 122, and first and second target portions 148, 158 may
correspond to subsequent portions of media data item 122. In at
least some implementations, internet gateway server 110 and/or
media server device 120 monitor which media data items users are
viewing or playing at respective client devices. Beginning portions
of some (e.g., top 100 most viewed) or all of the media data items
available to the client devices may be preloaded onto some or all
of the client devices before actually receiving a request for the
media data item. The media viewer module of a client device may be
configured to check the data cache at the client device prior to
requesting the media data item, and initiate presentation of the
preloaded beginning portion of the media data item from the data
cache even before receiving other portions of the media data item
over the network. In this way, viewing of a media data item can
commence without peer-to-peer connections being established and
without regards to network latency.
[0029] The above described cache manager 112 and/or chunker module
114 of internet gateway server 110, in cooperation with
peer-to-peer modules of client devices may further support the
following methods, processes, or functions described with reference
to FIGS. 2-6.
[0030] FIGS. 2 and 3 are flow diagrams depicting an example network
communications method 200 according to one disclosed embodiment.
Method 200 may be performed, a least in part, by an internet
gateway server or other suitable network device, such as previously
described internet gateway server 110, for example.
[0031] At 210, the method includes establishing client-side
connections between the internet gateway server and a plurality of
client devices via a client-side access network. As one example,
the internet gateway server may establish a TCP connection with a
client device in response to the client device initiating a
three-way handshake procedure with the internet gateway server. At
212, the method includes enabling communications between each of
the client devices and corresponding server devices via the
client-side access network, the internet gateway server, and a
server-side wide area network. As one example, the internet gateway
server may enable communications between a client device and a
media server device via the client-side access network connected to
the client device, the internet gateway device, and server-side
wide area network connected to the media server device.
[0032] At 214, the method includes monitoring the client devices to
identify a subset of the client devices actively connected to the
internet gateway server via the client-side access network. For
example, the internet gateway server may update a connected client
device list in response to a client device connecting to or
disconnecting from the internet gateway server to maintain a list
of client devices actively connected to the internet gateway server
at a given time. As previously described, each client device may be
identified and distinguished from each other by a client
identifier.
[0033] At 216, the method includes maintaining a record of media
data chunks cached at each client device of the plurality of client
devices, including at least each client device of the subset of
client devices actively connected to the internet gateway server.
As one example, the internet gateway server may maintain a record
for a given client device that spans multiple sessions to include
one or more media data chunks of one or more media data items that
were previously received by that client device. In at least some
implementations, the internet gateway device may identify the
cached media data chunks at a client device based on requests
received from the client device for the media data chunks,
responses sent to the client device for the media data chunks, or
previous commands sent to the client device to control retention of
the cached media data chunks by the client device. Alternatively or
additionally, the internet gateway server may identify the cached
media data chunks based on a response from the client device for a
request made by the internet gateway server for a record of media
data chunks cached at the client device. In at least some
implementations, a media data chunk of a media data item may be
identified by a media data chunk identifier (e.g., a byte range
indicator) in addition to a media identifier of the media data
item. For example, the record of media data chunks cached at each
client device of the subset of client devices (e.g., the cache
table) may be organized by the media identifier and a corresponding
media data chunk identifier for each media data chunk, and a client
identifier for each of the client devices. As a non-limiting
example, a given media data chunk of a given media data item cached
at a given client device may be identified as [byte range=1025-2048
of media data item XYZ cached at client device ABC], however other
suitable identifiers may be used.
[0034] In at least some implementations, method 200 further
includes identifying a media identifier for the media data item
based, at least in part, on a parameter of a URL of the request for
media data item. Alternatively or additionally, identifying the
media identifier for the media data item based, at least in part,
on a query response received from the media server device. The
media identifier may be used by the internet gateway device to
identify, from the cache table and/or connected client device list,
one or more client devices having cached media data chunks of the
media data item corresponding to the media identifier.
[0035] It will be appreciated that any suitable caching policy may
be implemented at a client device to cause the client device to
retain one or more cached media data chunks. For example, a client
device may be configured to or instructed to retain, in a data
cache at the client device, one or more predetermined or randomly
selected media data chunks forming a subset of a media data item
comprising a larger number of media data chunks. Regardless of the
particular approach used to maintain cached media data chunks at a
client device, the internet gateway server may obtain a record of
the media data chunks cached at each client device.
[0036] At 218, the method includes receiving a request from a first
client device of the subset of client devices actively connected to
the internet gateway server for a media data item stored at a media
server device connected or connectable to the internet gateway
server via the server-side wide area network. At 220, the method
includes determining that a first target portion of the media data
item is cached at a second client device of the subset of client
devices actively connected to the internet gateway server based on
the record of media data chunks cached at each client device of the
subset of client devices actively connected to the internet gateway
server. At 222, the method includes determining that a second
target portion of the media data item is cached at a third client
device of the subset of client devices actively connected to the
internet gateway server based on the record of media data chunks
cached at each client device actively connected to the internet
gateway server. In at least some implementations, the method may
not be performed at 222, for example, if only a first target
portion of the media data item is to be sent to the first client
device via a peer-to-peer connection.
[0037] Referring to FIG. 3, at 224, the method includes, responsive
to the request, instructing the first client device to establish
corresponding peer-to-peer connections with each of the second and
third client devices, to request, and to receive the first and
second target portions of the media data item from the second and
third client devices, respectively. However, the method at 224 may
include instructing the first client device to establish a
peer-to-peer connection with only the second client device if the
second target portion of the media data item is not to be obtained
by the first client device over a peer-to-peer connection to the
third client device.
[0038] At 226, the first client device establishes corresponding
peer-to-peer connections with each of the second and the third
client devices (if utilizing the third client device), requests,
and receives the first and second target portions of the media data
item from the second and third client devices (if utilizing a third
client device), respectively. At 228, the method includes
initiating presentation of the first and second target portions of
the media data item at the first client device. For example,
presentation of the first target portion of the media data item may
be initiated at the first client device as soon as the first target
portion is received by the first client device, with presentation
of the second target portion occurring after presentation of the
first target portion in accordance with the logical playback order
of the media data chunks of the media data item. In at least some
implementations, method 200 may further include receiving a
confirmation message from the first client device indicating that
the first target portion and the second target portion were
successfully transferred over respective peer-to-peer connections
between the first client device and the second and third client
devices. For example, the first client device may be configured to
send a confirmation message to the internet gateway server in
response to successfully receiving a target portion of the media
data item from another client device.
[0039] The method may continue in this manner to enable the first
client device to retrieve any suitable number of media data chunks
from any suitable number of other client devices, including three
or more, ten or more, one hundred or more, etc. other client
devices. The number of media data chunks retrieved by the first
client device from other client devices may be computed and
implemented (e.g., by the internet gateway server) based on an
estimation of how long it will take for the first client device to
retrieve and buffer the remainder portion of the media data item
from the media server device. In at least some implementations, the
internet gateway server may instruct the first client device to
retrieve a greater number of media data chunks from a greater
number of other client devices as an estimation of how long it will
take the first client device to retrieve and buffer the remainder
portion increases, to thereby reduce the total amount of time for
the first client device to request and receive the media data
item.
[0040] At 230, the method includes the internet gateway server
retrieving a remainder of the media data item. In at least some
implementations, retrieving the remainder of the media data item
includes requesting the remainder of the media data item from the
media server device, and receiving the remainder of the media data
item from the media server device. Alternatively, in at least some
implementations, retrieving the remainder of the media data item at
230 includes retrieving the entire media data item from the media
server device, chunking the media data item into a plurality of
chunks, and identifying those chunks that comprise the remainder of
the media data item. At 232, the method includes sending the
remainder of the media data item to the first client device. In
some examples, sending the remainder of the media data item at 232
may include sending those chunks identified by the internet gateway
device comprising the remainder to the first client device. At 234,
the method includes initiating presentation of the remainder of the
media data item at the first client device.
[0041] In an alternative environment, the functionality of the
internet gateway server described above may instead be implemented
by a networking device positioned in internet gateway 160, which is
configured to include the function of a transparent proxy, and
which is configured to route requests for initial chunks of media
data that would have otherwise been routed to the media server,
instead directly to the peer client devices on which the requested
chunks are cached, so that a requesting client device effectively
retrieves those chunks of media data from peer client devices,
rather than from the media data server. Such a gateway with
transparent proxy functionality may have a speed advantage, in that
it is not necessary to terminate the connections at the proxy as in
a conventional proxy server. A benefit of transparency, in at least
some implementations, is that the client does not need to be
configured to use a proxy, and the gateway can have intelligent
over-riding control as to where connections and requests go.
[0042] In such implementations, the transparent proxy may not
establish HTTP-level connections with client devices. Accordingly,
it will be appreciated that in such an embodiment, the method at
210 may be omitted, and the method step at 214 may instead include
monitoring request and response streams between a client device and
the media server, rather than monitoring client devices themselves.
The method at 218 may be implemented by the transparent proxy
monitoring communications between the first client device and the
media server device to identify one or more of a request message
for a media data item from the first client device directed to the
media server device, or a response message for the request from the
media server device directed to the first client device. The method
at 224 may include intercepting the response message from the media
server device, and modifying an object reference to a first target
portion of the media data item in the response message from a
network address of the media server device to a network address of
a second client device to enable the first client device to
establish a peer-to-peer connection with the second client device,
and to enable the first client device to request and to receive the
first target portion of the media data item from the second client
device via the peer-to-peer connection. The method at 230 may be
further implemented by the transparent proxy facilitating delivery
of a remainder of the media data item to the first client device
from one or more of the media server device, from a third client
device via another peer-to-peer connection, or from the transparent
proxy itself.
[0043] In another alternative environment, the functionality of the
internet gateway server and/or transparent proxy described above
may instead be implemented by one or more client devices, including
a client device requesting a media data item from one or more
clients and/or one or more client devices serving media data chunks
to the requesting client device. For example, a client can be
elected to perform at least some of the functions of the gateway
server or transparent proxy described herein. Accordingly, any of
the clients on the network may be configured to function as the
internet gateway server or transparent proxy. As such, a client
device may include one or more of the previously described cache
manager and/or chunker module, for example.
[0044] FIG. 4 is a network flow diagram according to one disclosed
embodiment. At 410 and 412, client devices A and B respectively
establish connections with the internet gateway server, request
media data, and receive media data from the internet gateway server
or other suitable network location. As one example, a TCP
connection or other suitable connection may be established between
a client device and the internet gateway device. Portions of the
media data may be cached at clients A and B as one or more media
data chunks. At 414, the internet gateway server maintains a record
of media data chunks cached at each client device, including client
devices A and B. As one example, the record may comprise a cache
table such as previously described cache table 166. At 416, the
internet gateway server monitors to identify client devices, such
as client devices A and B that are actively connected to the
internet gateway server. As one example, the internet gateway
server may maintain a connected client device list such as
previously described connected client device list 164.
[0045] At 418, a requesting client device establishes a connection
with the internet gateway server. The internet gateway server may
update the connected client device list in response to the
requesting client device connecting to the internet gateway server.
At 420, the requesting client device makes a request to the
internet gateway server for a media data item stored on a media
server device. As one example, the request may comprise an HTTP
request or other suitable application-level protocol request. At
422, the internet gateway server determines (e.g., based on the
cache table and the connected client device list) if one or more
target portions of the requested media data item are cached at one
or more other actively connected client devices, such as client
devices A and B, for example. A target portion may correspond to a
seek location of the requested media data item, for example, and
may comprise one or more media data chunks. At 424, the internet
gateway server may request and receive a media identifier from the
media server device for the requested media data item. The media
identifier may be used by the internet gateway server to retrieve a
list of client devices from the cache table that have cached one or
more media data chunks for the media identifier.
[0046] If one or more of the target portions of the requested media
data item are cached at one or more of the actively connected
client devices, such as client device A and B, the internet gateway
server sends a peer-to-peer data cache retrieval command to the
requesting client device at 426. The peer-to-peer data cache
retrieval command, in this example, instructs the requesting client
device to establish corresponding peer-to-peer connections with
each of client devices A and B, to request, and to receive first
and second target portions of the requested media data item from
client device A and B, respectively. At 428, the requesting client
device establishes a peer-to-peer connection with client device A,
and sends a request for a first target portion of the media data
item to client device A over the peer-to-peer connection at 432. At
434, the requesting client device establishes another peer-to-peer
connection with client device B, and sends a request for a second
target portion of the media data item over the peer-to-peer
connection at 438.
[0047] At 436 and 440, the requesting client receives the first and
second target portions from clients A and B over the respective
peer-to-peer connections. At 446, the requesting client device may
initiate presentation of the first and/or second target portions of
the media data item as soon as they are received by the requesting
client device. For example, if the first target portion comprises
forward encoded media, then the requesting client device may
initiate playback of the first target portion before receiving the
second target portion of the media data item.
[0048] At 442, the requesting client device may send a confirmation
message to the internet gateway server that indicates that the
first and second target portions of the media data item were
successfully received by the requesting client device. In at least
some implementations, the confirmation message may indicate which
media data chunks of the target portions were successfully received
by the requesting client device. The confirmation message may
indicate missing media data chunks, for example, if the
peer-to-peer connection was lost or interrupted during retrieval of
the target portion.
[0049] If one or more of the target portions of the requested media
data item are not cached at one or more of the actively connected
client devices, or if one or more of the media data chunks were not
received by the requesting client device, the internet gateway
server may request the media data item, one or more target portions
of the media data item, or one or more media data chunks of the
media data item from the media server device at 430. The internet
gateway server may serve the requested media data item to the
requesting client device (not shown), for example, without
instructing the requesting client device to establish peer-to-peer
connections with other client devices. Alternatively or
additionally, the internet gateway server may instruct the
requesting client device to establish corresponding peer-to-peer
connections with yet another client device, to request, and to
receive one or more media data chunks from the client device.
[0050] At 444, the internet gateway server may request and receive
the media data item or remainder of the media data item not
requested by the requesting client device from other client
devices. At 448, the internet gateway server receives the remainder
of the media data item from the media server device or obtains the
remainder of the media data item, for example, by chunking the
media data item. To obtain the remainder, the internet gateway
server may compare the media data chunks of the media data item to
the media data chunks indicated by the confirmation message to have
been received by the requesting client device. At 450, the internet
gateway server sends the remainder of the media data item to the
requesting client device, or may alternatively send an instruction
to the requesting client to obtain the remainder from another
client device via a peer-to-peer connection. At 452, the requesting
client device initiates presentation of the remainder of the media
data item.
[0051] FIG. 5 is a flow diagram depicting another example network
communications method 500 according to one disclosed embodiment. In
at least some implementations, method 500 may be implemented with
previously described method 200. For example, method 500 may be
performed, at least in part, by an internet gateway server or other
suitable network device, such as previously described internet
gateway server 110. However, in at least some implementations,
method 500 may be performed, at least in part, by a peer-to-peer
module operating at a requesting client device, such as previously
described peer-to-peer module 136.
[0052] At 510, the method includes determining whether a requesting
client device (e.g., the previously described first client device
of system 100 or method 200) is authorized to receive accelerated
transmission of media data, and if so, proceeding with the
accelerated transmission of media data. For example, 510 of method
500 may be applied at previously described method 200 at 218. From
512, if the requesting client device is determined to be authorized
to receive the accelerated transmission of media data, the method
at 514 includes accelerating the transmission of media data to the
requesting client device. For example, the internet gateway server
may instruct the requesting client device to request one or more
target portions of a media content item from one or more other
client devices via respective peer-to-peer connection as previously
described by method 200 of FIGS. 2 and 3.
[0053] The method at 516 may further include instructing the
requesting client device to display an icon (e.g., via a graphical
display of the requesting client device) or otherwise present an
indication (e.g., by audio output to provide an acceleration
indicator, or other suitable output) indicating that transmission
of media data is being accelerated. For example, the internet
gateway server, the requesting client device, or an API thereof may
rewrite HTML or data stream of the original content to insert a
message that may be utilized by the requesting client device to
inform the user about the added value of the accelerated
transmission of media data. In at least some implementations, a
peer-to-peer module operating at the requesting client device may
be configured to display the icon or otherwise present an
indication of the accelerated transmission of media data without
necessarily receiving an instruction from an internet gateway
server.
[0054] If the requesting client device is determined at 512 to be
unauthorized to receive accelerated transmission of media data, the
method at 518 includes instructing the requesting client device to
display or otherwise present an advertisement for accelerated
transmission of media data. For example, the advertisement may be
displayed or otherwise presented to a user via the requesting
client device before presentation of the requested media data item
is initiated, or at least during a period of time when the
requesting client device is waiting to receive the requested media
data item from the network. In at least some implementations, the
advertisement may be preloaded at the requesting client device
(e.g., before the requesting client device requests the media data
item) to enable rapid display or presentation of the advertisement
while the requested media data item is being retrieved by the
requesting client device.
[0055] Alternatively or additionally, the method at 518 may include
instructing the requesting client device to prompt a user with an
option to select accelerated transmission of media data. For
example, a user may be prompted to opt-in to the accelerated
transmission of media data for the current session or for
subsequent sessions by paying an additional subscription fee and/or
by permitting the user's client device to be utilized to cache
chunks of media data that may be requested by other client devices
via peer-to-peer connections. In at least some implementations, a
peer-to-peer module operating at the requesting client device may
be configured to display the advertisement and/or prompt the user
without necessarily receiving an instruction from an internet
gateway server.
[0056] FIG. 6 shows an example media data item 600 comprising N
bytes of data. A first target portion 610 of media data item 600
comprises X bytes of data, a second target portion 612 of media
data item 600 comprises Y bytes of data, and a remainder 614 of
media data item 600 comprises Z bytes of data. In this example,
first and second target portions 610 and 612 each comprise at least
one media data chunk, however, a target portion of a media data
item may comprise two or more media data chunks in some
implementations. In this example, first target portion 612
corresponds to seek location 616 of media data item 600 that is
located at the beginning of the media data item. For example, first
target portion 610 comprises at least one media data chunk
beginning at and following from seek location 616. A direction of
presentation (e.g., playback) of media data item 600 is depicted at
620. In at least some implementations, the size of all chunks is
the same, and thus, the X bytes of data of first target portion 610
may be equal in size to the Y bytes of data of the second target
portion 612. For example, first portion 610 and second portion 612
may each comprise a predetermined number of bytes (e.g., 1024 bytes
or other suitable number of bytes). However, in some
implementations, the X bytes of data of first target portion 610
may be larger or smaller than the Y bytes of data of second target
portion 612. In at least some implementations, the Z bytes of data
of remainder 614 may be equal to the X and Y bytes of data of first
and second target portions. For example, padding bits or bytes may
be added by the internet gateway or media server device to
remainder 614 to increase the size of remainder 614 to a
predetermined size if remainder 614 is smaller than first or second
target portions. However, in some implementations, the Z bytes of
remainder 614 may be larger or smaller than the X or Y bytes of
first and second target portions. Typically, the remainder is much
larger than the size of the chunks initially downloaded from peer
client devices, but the remainder may be delivered in chunks of
equal size to the initial chunks, if desired.
[0057] FIG. 7 shows another example media data item 700 comprising
N bytes of data. In this example, a seek location 716 of media data
item 700 is advanced to an intermediate location subsequent to the
beginning of media data item 700. A direction of presentation
(e.g., playback) of media data item 700 is depicted at 720. For
example, a user may fast forward a media data item or may resume
presentation of a media data item from an intermediate location via
a media viewer operating at the client device. In this example,
first target portion 710 and second target portion 712 are located
at intermediate locations of media data item 700 corresponding to
seek location 716. A remainder 714 of media data item 700 is shown
subsequent to first and second target portions 710 and 712. A
skipped portion 718 of media data item 700 is further shown. In at
least some implementations, skipped portion 718 of media data item
700 may not be provided to a client device in scenarios where the
client device requests presentation of the media data item from an
intermediate seek location such as seek location 716. However, if a
user of the requesting client device rewinds the media data item to
a location prior to seek location 716, the requesting client device
may initiate presentation of the media data item from the location
prior to the seek location (if already cached at the requesting
client device from a previous session) or may request and receive a
target portion of the media data item corresponding to the prior
location from the internet gateway server or other client
device.
[0058] FIG. 8 is a diagram depicting an example cache table 800
according to one disclosed embodiment. Cache table 800 may
correspond to previously described cache table 166 of FIG. 1. As
shown in FIG. 8, cache table 800 comprises a record of media data
chunks cached at each client device organized by the media
identifier and a corresponding media data chunk identifier for each
media data chunk, and a client identifier for each of the client
devices. For example, cache table 800 includes four different
client identifiers (CLIENT ABC, CLIENT DEF, CLIENT GHI, CLIENT JKL)
corresponding to four different client devices; two different media
identifiers (MEDIA UVW, MEDIA XYZ), and six different media data
chunk identifiers (BYTES 1-1024, 1025-2048, and 2049-3072 of MEDIA
UVW, BYTES 1-1024, 1025-2048, and 2049-3072 of MEDIA XYZ). FIG. 8
depicts how a given client device may have a number of media data
chunks of a number of different media data items. FIG. 8 also
depicts how two client devices may have cached the same media data
chunk. If multiple client devices have cached the same media data
chunk, then the internet gateway server or other suitable network
device can apply an algorithm to determine which client device
should be assigned to serve the media data chunk to the requesting
client device. Factors in the selection of a serving client device
among a number of redundant client devices having the same cached
media data chunk may include: the serving load on the serving
client device (e.g., the least used or accessed data cache may be
utilized before the more heavily used data cache), the availability
of other media data chunks cached at the serving client device
(e.g., a data cache may have a different media data chunk that may
be served instead of the redundant media data chunk), connection
parameters (e.g., round trip time, packet error rate, etc.) between
the serving client device and the requesting client device or the
internet gateway server over the client-side access network (e.g.,
utilize the serving client device with the faster connection),
among other suitable factors.
[0059] While the previous examples depict a client device
requesting and receiving two target portions of a media data item
from two other client devices over corresponding peer-to-peer
connections, it will be appreciated that any suitable number of
target portions may be requested and received by a client device
from any suitable number of other client devices over corresponding
peer-to-peer connections. It should be understood that the
embodiments herein are illustrative and not restrictive, since the
scope of the invention is defined by the appended claims rather
than by the description preceding them, and all changes that fall
within metes and bounds of the claims, or equivalence of such metes
and bounds thereof are therefore intended to be embraced by the
claims.
* * * * *