WO2013052004A1 - "a communication system for content distribution, a server device for controlling content distribution, a client device for requesting content, and corresponding methods" - Google Patents

"a communication system for content distribution, a server device for controlling content distribution, a client device for requesting content, and corresponding methods" Download PDF

Info

Publication number
WO2013052004A1
WO2013052004A1 PCT/SG2011/000346 SG2011000346W WO2013052004A1 WO 2013052004 A1 WO2013052004 A1 WO 2013052004A1 SG 2011000346 W SG2011000346 W SG 2011000346W WO 2013052004 A1 WO2013052004 A1 WO 2013052004A1
Authority
WO
WIPO (PCT)
Prior art keywords
client
client device
content
server
server device
Prior art date
Application number
PCT/SG2011/000346
Other languages
French (fr)
Inventor
Wenlong Russell SIM
Ming Yuan LIM
Aiyn Yieen LEONG
Original Assignee
E-Technology Group Private Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by E-Technology Group Private Limited filed Critical E-Technology Group Private Limited
Priority to PCT/SG2011/000346 priority Critical patent/WO2013052004A1/en
Publication of WO2013052004A1 publication Critical patent/WO2013052004A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/10Integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/029Location-based management or tracking services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/61Time-dependent
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices
    • H04W88/06Terminal devices adapted for operation in multiple networks or having at least two operational modes, e.g. multi-mode terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Embodiments of the present invention provide a method for content distribution in a communication system. The communication system comprises a server device and a plurality of client devices. Each client device has multiple communication interfaces configured to operate according to different communication technologies. The method comprises: transmitting, from a first client device to the server device, a request to receive content. The method further comprises: transmitting, from the server device to the first client device, at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device. The at least one instruction is generated based on the requested content and information relating to at least one client device obtained by the server device.

Description

A COMMUNICATION SYSTEM FOR CONTENT DISTRIBUTION, A SERVER DEVICE FOR CONTROLLING CONTENT DISTRIBUTION, A CLIENT DEVICE FOR REQUESTING CONTENT, AND
CORRESPONDING METHODS Technical Field
[001] Various embodiments relate to a communication system for content distribution, a server device for controlling content distribution, a client device for requesting content, and corresponding methods.
Background [002] Communication devices of a communication system may be capable of requesting content, such as, text, images, audio, video and the like. For example, a cellular phone may be capable of browsing the internet using a cooperating cellular network, such as, for example, a third generation telecommunication standard (3G) cellular network. Whilst browsing the internet, the cellular phone may issue a request to download an image from a content provider of the requested image. The content provider may be, for example, a web server hosting a web page containing the image. In response to the request, the web server may send the requested image to the cellular phone via the 3G network. Accordingly, the cellular phone requests content and the requested content is distributed to the cellular phone. Summary
[003] Various embodiments provide a method for content distribution in a communication system, the communication system comprising a server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the method comprising: transmitting, from a first client device to the server device, a request to receive content; and transmitting, from the server device to the first client device, at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, the at least one instruction being generated based on the requested content and information relating to at least one client device obtained by the server device. [004] Various embodiments provide a communication system for content distribution, the communication system comprising a server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, wherein a first client device is configured to transmit a request to receive content to the server device; and wherein the server device is configured to generate at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, based on the requested content and information relating to at least one client device obtained by the server device, and the server device is configured to transmit the at least one instruction to the first client device.
[005] Various embodiments provide a server device for controlling content distribution in a communication system, the communication system comprising the server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the server device comprising: a receiver for receiving a request for content from a first client device; a scheduler for generating at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, based on the requested content and information relating to at least one client device obtained by the server device; and a transmitter for transmitting the at least one instruction to the first client device.
[006] Various embodiments provide a method for controlling content distribution in a communication system, the communication system comprising a server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the method comprising: receiving, at the server device, a request for content from a first client device; generating, in the server device, at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, based on the requested content and information relating to at least one client device obtained by the server device; and transmitting the at least one instruction from the server device to the first client device.
[007] Various embodiments provide a client device for requesting content in a communication system, the communication system comprising the server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the client device comprising: a transmitter configured to transmit to the server device a request to receive content; a receiver configured to receive from the server device at least one instruction for the client device to obtain requested content from one or more other client devices via one or more communication interfaces of the client device.
[008] Various embodiments provide a method for requesting content in a communication system, the communication system comprising the server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the method comprising: transmitting, in a client device, to the server device a request to receive content; and receiving, in the client device, from the server device at least one instruction for the client device to obtain requested content from one or more other client devices via one or more communication interfaces of the client device. Brief Description of the Drawings
[009] In the drawings, like reference characters generally refer to like parts throughout the different views. The drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of some example embodiments of the invention. In the following description, various example embodiments of the invention are described with reference to the following drawings, in which:
[010] FIG. 1 shows a communication system according to an embodiment; .
[Oil] FIG. 2 shows a server according to an embodiment;
[012] FIG. 3 shows a client according to an embodiment;
[013] FIG. 4 shows a communication system according to an embodiment;
[014] FIG. 5 shows a method of distributing content according to an embodiment;
[015] FIG. 6 shows a communication system according to an embodiment;
[016] FIG. 7 shows a server according to an embodiment;
[017] FIG. 8 shows a method of storing data and generating metadata in a server according to an embodiment;
[018] FIG. 9 shows a communication system according to an embodiment;
[019] FIG. 10 shows a communication system according to an embodiment;
[020] FIG. 11 shows a server according to an embodiment;
[021] FIG. 12 shows a communication system according to an embodiment;
[022] FIG. 13 shows a communication system according to an embodiment;
[023] FIG. 14 shows a mobile communication device according to an embodiment; and
[024] FIG. 15 shows some internal elements of the mobile communication device of FIG. 14.
Detailed Description
[025] The following detailed description refers to the accompanying drawings that show, by way of illustration, specific details and embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be utilized and structural, logical, and electrical changes may be made without departing from the scope of the invention. The various embodiments are not necessarily mutually exclusive, as some embodiments can be combined with one or more other embodiments to form new embodiments.
[026] Various embodiments provide a method for content distribution in a communication system, the communication system comprising a server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the method comprising: transmitting, from a first client device to the server device, a request to receive content; and transmitting, from the server device to the first client device, at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, the at least one instruction being generated based on the requested content and information relating to at least one client device obtained by the server device.
[027] Preferably, the first client device transmits the request via a first interface of the first client device. Preferably, the at least one instruction instructs the first client device to obtain requested content via one or more other communication interfaces of the first client device. Therefore, the at least one instruction is received via the first communication interface of the first client device and the first client device is instructed to obtain requested content via communication interfaces other than the first communication interface. Preferably, the first interface is a primary interface whereas the other interface is a secondary interface. In an embodiment, a primary communication interface is a communication interface configured to operate with a wide- area or long-range wireless communication path, such as, for example, a 3G cellular network. In an embodiment, a secondary communication interface is a communication interface configured to operate with a local-area or short-range wireless communication path, such as, for example, a WIFI network, a WIFI direct network and/or a Bluetooth network. [028] Preferably, at least one communication interface of the first client device is a secondary communication interface, and the at least one instruction instructs the first client device to obtain requested content via the secondary communication interface. In an embodiment, the secondary interface may be characterized by probabilistic network connectivity. For example, a probabilistic connection may one which may not be turned on and/or one that may not be stable enough for transmission due to mobility, such as, for example, a WIFI connection.
[029] Preferably, the at least one instruction for the first client device to obtain requested content relates to the whole of, or only part of, the content requested by the first client device.
[030] Preferably, the first client device may receive the at least one instruction from the server device via at least one intermediary device. Preferably, the server device may receive the content request from the first client device via at least one intermediary device. In an embodiment, the at least one intermediary device is at least one client device, at least one access router or an access network.
[031] Preferably, the first client device may transmit the content request to the server device via any communication interface of the first client device. Preferably, the first client device may receive the at least one instruction from the server device via any communication interface of the first client device. [032] Preferably, transmitting, from a first client device to the server device, a request to receive content comprises generating, in the first client device, the request to receive content, the request having an address of a content provider of the requested content as a destination address and redirecting the request to the server device. [033] Preferably, the method further comprises obtaining, by the first client device, requested content as instructed by the at least one instruction received by the first client device from the server device. Preferably, the first client device relays the at least one instruction to one of the other client devices to initiate content distribution from the said one of the other client devices to the first client device. [034] Preferably, the first client device obtains requested content from at least one of the one or more other client devices though at least one intermediary device. In an embodiment, the at least one intermediary device is at least one client device, at least one access router or an access network. [035] Preferably, the method further comprises transmitting requested content from the server device to at least one client device based on the requested content and information relating to at least one client device obtained by the server device. For example, the server device may comprise, or be in communication with (e.g. via a communication device), a communication interface and the server device may transmit content to the at least one client device via this communication interface.
[036] Preferably, the server device transmits content to the at least one client device via one or more communication interfaces. For example, the server device may comprise, or be in communication with (e.g. via a communication device), one or more communication interfaces and the server device may transmit content to the at least one client device via these one or more communication interfaces.
[037] Preferably, the method further comprises obtaining, by the server device, requested content from a content provider of the requested content before transmitting requested content from the server device to the at least one client device.
[038] Preferably, the method further comprises transmitting, from the server device to at least one of the one or more other client devices, at least one instruction for the at least one of the one or more other client devices to obtain requested content from one or more other client devices via one or more communication interfaces of the at least one of the one or more other client devices, the at least one instruction being generated based on the requested content and information relating to at least one client device obtained by the server device.. For example, there are three client devices, CI, C2 and C3, and CI is the first client device. Accordingly, the server may send an instruction to C2 instructing C2 to obtain content from C3. The instruction may be sent to C2 via its first communication interface and the instruction may instruct C2 to obtain content via its first communication interface or another of its communication interfaces. [039] Preferably, the method further comprises obtaining, by the at least one of the one or more other client devices, requested content as instructed by the at least one instruction transmitted from the server device to the at least one of the one or more other client devices. [040] Preferably, the method further comprises transmitting, from at least one client device to the server device, information relating to at least one client device. For example, the information may relate to the client device transmitting the information. Additionally or alternatively, the information may relate to a different client device.
[041] Preferably, the information relating to at least one client device indicates at least one of the following: connectivity of at least one client device; location of at least one client device; movement of at least one client device; content stored on at least one client device; content requested by at least one client device; available capacity of at least one client device; a cache level of at least one client device.
[042] Preferably, the information relating to at least one client device is stored on the server device.
[043] Preferably, the method further comprises: transmitting, from at least one client device to the server device, information relating to delivery status of content requested by the first client device, and monitoring, in the server device, the status of delivery of the requested content to the first client device based on the received information relating to delivery status.
[044] Preferably, the server device is in communication with a communication device having at least one communication interface and the server device communicates with at least one client device via the at least one communication interface of the communication device.. For example, the server device may be in communication with the communication device directly or via another device or network, such as, for example, the internet. Additionally or alternatively, the server device may comprise at least one communication interface and communicate with at least one client device via the at least one interface. [045] Preferably, at least one client device is a content provider of the requested content.
[046] Preferably, the request is generated by an application of the first client device and content obtained by the first client device is provided to the application as having been obtained directly from a content provider of the requested content.
[047] Preferably, the method further comprises: transmitting a first identifier from the server device to the first client device; including an encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the first identifier; and verifying the authenticity of the at least one instruction at the first client device based on a comparison between the first identifier and a second identifier obtained by decrypting the encrypted value. Preferably, authenticity is verified if the first identifier and the second identifier match. Preferably, the encrypted value is generated using a hash function. Preferably, the first identifier uniquely identifies the first client device. Preferably, the first identifier is associated with a finite period of time, and after the finite period of time has expired the first identifier no longer verifies the authenticity of the at least one instruction. Preferably, the server device transmits the first identifier to the first client device in response to a corresponding request received from the first client device. Preferably, the server device transmits a replacement identifier to the client when the finite period of time relating to the first identifier has expired. Preferably, the finite period of time corresponding to an identifier is of random length. 4
[048] Preferably, the method further comprises: transmitting a third identifier from the server device to another client device; including a second encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the third identifier; relaying the at least one instruction from the first client device to the other client device to initiate content distribution from the other client device to the first client device; and, verifying the authenticity of the at least one instruction at the other client device based on a comparison between the third identifier and a fourth identifier obtained by decrypting the second encrypted value. Accordingly, a content requesting client may receive an instruction from the server and forward that instruction to a content distributing client designated in the instruction. On receiving the forwarded instruction, the content distributing client may confirm that distributing content to the content requesting client is in accordance with the server's instructions. [049] Various embodiments provide, a communication system for content distribution, the communication system comprising a server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, wherein a first client device is configured to transmit a request to receive content to the server device; and wherein the server device is configured to generate at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, based on the requested content and information relating to at least one client device obtained by the server device, and the server device is configured to transmit the at least one instruction to the first client device.
[050] Preferably, the first client device is configured to generate the request to receive content, the request having an address of a content provider of the requested content as a destination address, and redirect the request to the server device, in order to transmit the request to the server device. [051] Preferably, the first client device is configured to obtain requested content as instructed by the at least one instruction received by the first client device from the server device.
[052] Preferably, the first client device is configured to obtain requested content from at least one of the one or more other client devices though at least one intermediary device.
[053] Preferably, at least one client device is a content provider of the requested content. [054] Preferably, an application of the first client device is configured to generate the request and the first client device is configured to provide content obtained by the first client device to the application as having been obtained directly from a content provider of the requested content. [055] Preferably, the server device is configured to transmit a first identifier to the first client device, and the server device is additionally configured to include an encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the first identifier, and wherein the first client device is configured to receive the first identifier from the server device and the first client device is additionally configured to verify the authenticity of the at least one instruction received from the server device based on a comparison between the first identifier and a second identifier obtained by decrypting the encrypted value. [056] Preferably, the server device is configured to transmit a third identifier to another client device, and the server device is additionally configured to include a second encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the third identifier; wherein the first client device is configured to relay the at least one instruction to the other client device to initiate content distribution from the other client device to the first client device; and, wherein the other client device is configured to receive the third identifier from the server device and the other client device is additionally configured to verify the authenticity of the at least one instruction at the other client device based on a comparison between the third identifier and a fourth identifier obtained by decrypting the second encrypted value.
[057] Preferably, the server device is the server device as described below.
[058] Preferably, the client device is the client device as described below.
[059] Various embodiments provide, a server device for controlling content distribution in a communication system, the communication system comprising the server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the server device comprising: a receiver for receiving a request for content from a first client device; a scheduler for generating at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, based on the requested content and information relating to at least one client device obtained by the server device; and a transmitter for transmitting the at least one instruction to the first client device.
[060] Preferably, the request has an address of a content provider of the requested content as a destination address.
[061] Preferably, the scheduler is configured to generate at least one instruction for at least one of the one or more other client devices to obtain requested content from one or more other client devices via one or more communication interfaces of the at least one of the one or more other client devices, based on the requested content and information relating to at least one client device obtained by the server device; and wherein the transmitter is configured to transmit the at least one instruction to the at least one of the one or more other client devices.
[062] Preferably, the server device further comprises a data repository for storing content; and, if requested content is stored in the data repository, the scheduler is configured to cause the transmitter to transmit requested content to at least one client device based on the requested content and information relating to at least one client device obtained by the server device.
[063] Preferably, the scheduler is configured to cause the transmitter to transmit requested content to the at least one client device via one or more communication interfaces. Preferably, the server device is in communication with a communication device having at least one communication interface, and the server device communicates with the at least one client device via the at least one communication interface of the communication device. For example, the server device may be in communication with the communication device via another device or network, such as, the internet. Preferably, the server device comprises at least one communication interface and the server device communicates with the at least one client device via the at least one communication interface of the server device.
[064] Preferably, the server device is configured to obtain requested content from a content provider of the requested content and store the obtained requested content in the data repository.
[065] Preferably, the server device further comprises a content parser configured to parse one or more portions of content stored in the data repository and generate at least one piece of metadata for one or more portions of parsed content, wherein the scheduler is configured to generate at least one instruction for at least one client device based on at least one piece of metadata.
[066] Preferably, the server device further comprises a connectivity controller for storing connectivity information relating to at least one client device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the connectivity information stored in the connectivity controller. [067] Preferably, the server device further comprises a location controller for storing location information relating to at least one client device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the location information stored in the location controller.
[068] Preferably, the server device further comprises a cluster controller for defining at least one cluster of client devices based on information relating to at least one client device obtained by the server device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the at least one cluster defined by the cluster controller.
[069] Preferably, the server device further comprises an incentive controller for storing at least one incentive parameter relating to at least one client device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the at least one incentive parameter stored in the incentive controller. [070] Preferably, the at least one incentive parameter includes at least one of the following: a cache level, an available capacity.
[071] Preferably, the server device further comprises a diffusion controller configured to predict a future position of at least one client device based on information relating to at least one client device obtained by the server device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the predicted future position.
[072] Preferably, the receiver is additionally configured to receive information relating to at least one client device from at least one client device. [073] Preferably, the information relating to at least one client device comprises at least one of the following: connectivity of at least one client device; location of at least one client device; movement of at least one client device; content stored on at least one client device; content requested by at least one client device; available capacity of at least one client device; a cache level of at least one client device. [074] Preferably, the receiver is additionally configured to receive from at least one client device information relating to delivery status of the content requested by the first client device and the scheduler is configured to monitor the status of delivery of the requested content to the first client device based on the received information relating to delivery status. [075] Preferably, the server device is configured to transmit a first identifier to the first client device, and the server device is additionally configured to include an encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the first identifier.
[076] Preferably, the server device is configured to transmit a third identifier to another client device, and the server device is additionally configured to include a second encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the third identifier. [077] Various embodiments provide a method for controlling content distribution in a communication system, the communication system comprising a server device and a plurality of client devices, each client device having multiple communication 5 interfaces configured to operate according to different communication technologies, the method comprising: receiving, at a first communication interface of the server device, a request for content from a first client device; generating, in the server device, at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of 10 the first client device, based on the requested content and information relating to at least one client device obtained by the server device; and transmitting the at least one instruction from the server device to the first client device.
[078] Preferably, the request has as a destination address an address of a content provider of the requested content.
15 [079] Various embodiments provide a client device for requesting content in a communication system, the communication system comprising the server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the client device comprising: a transmitter configured to transmit to the server device
20 a request to receive content; a receiver configured to receive from the server device at least one instruction for the client device to obtain requested content from one or more other client devices via one or more communication interfaces of the client device.
[080] Preferably, the client device further comprises a request generator configured to generate the request to receive content, the request having as a destination address '.5 an address of a content provider of the requested content; and wherein the transmitter is configured to redirect the request to the server device in order to transmit the request to the server device.
[081] Preferably, the client device further comprises a content fetcher configured to cause the client device to obtain requested content as instructed by the at least one i0 instruction received from the server device. Preferably, the first client device is configured to relay the at least one instruction to another client device to initiate content distribution from the other client device to the first client device.
[082] Preferably, the client device is configured to receive a first identifier from the server device and the client device is additionally configured to verify the authenticity of the at least one instruction received from the server device based on a comparison between the first identifier and a second identifier obtained by decrypting the encrypted value.
[083] Various embodiments provide a method for requesting content in a communication system, the communication system comprising the server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the method comprising: transmitting, in a client device, to the server device a request to receive content; and receiving, in the client device, from the server device at least one instruction for the client device to obtain requested content from one or more other client devices via one or more communication interfaces of the client device.
[084] Preferably, transmitting, in a client device, to the server device a request to receive content comprises generating, in the client device, the request to receive content, the request having as a destination address an address of a content provider of the requested content, and redirecting, in the client device, the request to the server device.
[085] Preferably, the method further comprises obtaining, in the client device, requested content as instructed by the at least one instruction received from the server device.
[086] The above paragraphs disclose various preferable features of the following aspects: the method for content distribution, the communication system for content distribution, the server device for controlling content distribution, the method for controlling content distribution, the client device for requesting content, and the method for requesting content. It is to be understood that the preferable features disclosed in connection with one of these aspects apply equally to each of the other aspects.
[087] In the context of various embodiments, 'content' may be understood as a portion of data. Content may include physically-reproducible data in the form of text, images, audio, video and the like. Additionally or alternatively, content may consist of non-physically-reproducible data, such as, for example, control or management data for use in establishing or maintaining a communication system.
[088] In the context of various embodiments, 'communication device' may be understood to be an apparatus capable of communicating data, such as content, with another apparatus. Non-limiting examples of a communication device include: a cellular phone, a personal digital assistant (PDA), a laptop computer, a desktop computer and a communications router.
[089] Figure 1 illustrates an exemplary communication system 2 within which some embodiments are intended to operate. The communication system 2 comprises multiple communication devices including a server 4, a first client 6, a second client 8 and a third client 10. In an embodiment, the clients may be or include a mobile device and the server may have a fixed position; however, in other embodiments the server may be or include a mobile device. Each client 6 to 10 is capable of communicating with the server 4 via a primary communication path indicated by a dashed line. Also, each client 6 to 10 is capable of communicating with each other client via a secondary communication path indicated by a solid line. In an embodiment, the primary communication path is a wide-area or long-range wireless communication path, such as, for example, a 3G cellular network. In an embodiment, the secondary communication path is a local-area or short-range wireless communication path, such as, for example, a WIFI network, a WIFI direct network and/or a Bluetooth network.
[090] Figure 1 illustrates a single server and three clients. However, some embodiments are configured to operate with more than one server. Additionally or alternatively, some embodiments are configured to operate with more or less than three clients. Also, Figure 1 illustrates that the server and each client is capable of communicating via a single primary communication path; however, in some embodiments one or more devices may be capable of communicating via more than one primary communication path. Furthermore, Figure 1 illustrates that each client is capable of communicating via a single secondary path; however, in some embodiments one or more client devices may be capable of communicating via more than one secondary communication path.
[091] Figure 2 illustrates an embodiment of the server 4 of Figure 1. The server 4 may include a communication interface 'A' in communication with a receiver 20 and a transmitter 22. The receiver 20 is configured to receive data via the communication interface A. The transmitter 22 is configured to transmit data via the communication interface A. The receiver 20 and the transmitter 22 are also in communication with a scheduler 24. The scheduler 24 is configured to schedule content distribution to one or more clients by transmitting instructions to one or more clients based on requested content and information on one or more clients. In an embodiment, the scheduler 24 schedules content based on content requests received via the interface A and the receiver 20. In an embodiment, the scheduler 24 transmits instructions via the transmitter 22 and interface A.
[092] In an embodiment, the receiver 20, transmitter 22 and scheduler 24 are each in communication with a communication bus (not shown) and are able to communicate with each other via the bus.
[093] In an embodiment, the communication interface 'A' of the server is configured to operate according to a primary communication technology. In an embodiment, the primary communication technology is 3G. Accordingly, the communication interface A is capable of sending and receiving data via 3G. [094] Figure 3 illustrates an embodiment of a client, such as, one of the clients 6, 8 or 10 of Figure 1. The client 6, 8 or 10 comprises two communication interfaces, a communication interface 'A' and a communication interface 'Β'. Both communication interfaces A and B are in communication with a receiver 30 and a transmitter 32. The receiver 30 is configured to receive data via the communication interfaces A and B. The transmitter 32 is configured to transmit data via the communication interfaces A and B.
[095] The receiver 30 and the transmitter 32 are also in communication with a request generator 34. The request generator 34 is configured to generate a request to receive content. In an embodiment, the request generator 34 may be a web browser application and the request to receive content may be a request for a website. In an embodiment, the request to receive content may comprise a destination address and an indication of the content requested. In an embodiment, the destination address is an address of a content provider of the requested content. [096] The receiver 30, the transmitter 32 and the request generator 34 are also in communication with a content fetcher 36. The content fetcher 36 is configured to fetch (i.e. obtain) content from a particular source. In an embodiment, the content fetcher 36 is configured to obtain content from a communication device specified in an instruction received by the receiver 30. In an embodiment, the communication device specified may be specified by an address contained in the received instruction.
[097] In an embodiment, the communication interface A of the client is configured to operate according to a primary communication technology. In an embodiment, the primary communication technology is 3G. Accordingly, the communication interface A is capable of sending and receiving data via 3G. In an embodiment, the communication interface 'B' of the client is configured to operate according to a secondary communication technology. In an embodiment, the secondary communication technology is WIFI. Accordingly, the communication interface A is capable of sending and receiving data via WIFI.
[098] Figure 4 illustrates an exemplary communication system 40. As seen more particularly in Figure 4, the communication system 40 may include the same elements as the communication system 2 of Figure 1 ; however, Figure 4 also illustrates a content provider 12. The content provider 12 may include a content storage (not shown) for storing content and a communication interface A (not shown) for communicating with other devices, such as, for example, in order to exchange content with the other devices. [099] Next will be described the operation of the communication system 40 for the distribution of content to the client 6. The operation will be described using the illustrated communication system 40 of Figure 4 and the flow diagram of Figure 5.
[0100] At SI, the client 6 generates a request to receive content. For example, the request generator 34 may take the form of a web browser application running on the client 6 and a human user of the client 6 may navigate the web browser to request download of a particular video from a particular website. Accordingly, the request generator 34 may generate a request to receive the video.
[0101] In an embodiment, the request is generated for transmission to a provider of the requested content. For example, the content provider 12 may be the provider of the requested video, i.e. the website. Specifically, the request may contain a destination address and an indication of the requested content, wherein the destination address is the address of the content provider 12 and the indication of requested content is an indication of the video. In an embodiment, the request specifies a communication interface of the client 6 via which the content is to be received. For example, the request may specify that the video is to be received via the communication interface A of the client 6.
[0102] At S2, the client 6 redirects (i.e. transmits) the request to the server 4. Accordingly, when the request is generated it is intended to be for transmission to the content provider 12; however, the request is redirected and transmitted to the server 4. In an embodiment, the request is generated by a software application of the client 6, such as the web browser mentioned above. As such, the request is generated in an application layer. However, even though the software application issues the request for delivery to the content provider 12, when the request is passed down a layer, i.e. towards the transport layer, the request is modified so that it is redirected to the server 4. Therefore, when the request reaches the communication interface A of the client, the request is transmitted (i.e. redirected) to the server 4.
[0103] In an embodiment, the request is redirected to the server 4 via the same communication interface of the client 6 as specified in the original request, i.e. communication interface A of client 6 considering the above example. [0104] At S3, the redirected request is received at the receiver 20 via the communication interface A of the server 4. The request is then communicated from the receiver 20 to the scheduler 24. The scheduler 24 then generates an instruction for the client 6. Specifically, the instruction may instruct the client 6 to obtain the requested content, i.e. the video, from one or more other client devices, i.e. clients 8 or 10, via one or more communication interfaces of the client 6, i.e. via the interface A or B of the client 6. The instruction may be generated based on information which has been obtained by the server and which relates to at least one of the clients 6, 8 or 10. For example, the server may contain a database of information relating to one or more of the clients 6 to 10. Such information may relate to client connectivity, i.e. which devices a client is (or can be) connected to and the respective strengths of those connections. Also, the information may relate to the content stored on a client, a location of a client, an available capacity (e.g. memory or processing capacity) of a client or the relative power consumptions of different interfaces of a client. The contents of the database may be static or may be updated dynamically (e.g. at fixed or variable intervals).
[0105] In an embodiment, the instruction may include an address of a communication device from which to obtain the requested content. For example, the instruction may include an address of a client, such as, client 8. In an embodiment, the instruction specifies which communication interface should be used by the client 6 for obtaining the requested content. For example, the instruction may specify that the client 6 should use its communication interface B. Once the instruction has been generated by the scheduler 24 it is passed to the transmitter 22. The transmitter 22 then sends the instruction to the client 6 via the communication interface A of the server. [0106] At S4, the receiver 30 of the client 6 receives the instruction via the communication interface A of the client 6. The instruction is then passed to the content fetcher 36. In an embodiment, the content fetcher 36 is configured to identify the address and communication interface specified in the received instruction and cause the client 6 to obtain the requested content from the address specified via the communication interface specified. For example, the instruction may specify that the content is to be obtained from the client 8 via the communication interface B. Accordingly, the content fetcher 36 may use the transmitter 32 and the receiver 30 to establish a connection with the client 8 and then cause the requested content (i.e. the video) to be downloaded from the client 8 via the communication interface B. Alternatively, a communication session may already be established between client 6 and client 8; therefore, only the downloading operation may be necessary. According to the above operations, requested content is distributed to the client 6. It is to be understood that the process of one client downloading data from another client may be described as sideloading. It is also to be understood that the client 6 may initiate content distribution from the client 8 to the client 6 by relaying to the client 8 the instruction received from the server at S3. On receiving the relayed instruction, the client 8 may be configured to begin content distribution to the client 6 in accordance with the instruction.
[0107] In an embodiment, the client 6 and/or the client 8 may send one or more delivery reports to the server 4 during the course of the distribution of the requested content to the client 6. Accordingly, the scheduler 24 can be notified when the requested content has been received by the client 6. Furthermore, the scheduler 24 can be made aware when a failure occurs and content is not received by the client 6, or is only partially received by the client 6. For example, a failure may occur if the clients 6 and 8 move out of range of each other.
[0108] In an embodiment, during the course of operation the server 4 may receive information relating to one or more of the clients 6 to 10 from one or more of the clients 6 to 10. In an embodiment, such information may be obtained at the communication interface A of the server 4. As shown in Figure 6, each of clients 6 to 10 may send information relating to themselves or another client to the server 4 via the communication interface A. In an embodiment, clients may only send information relating to themselves. In an embodiment, only certain clients may send information. In an embodiment, one or more clients may send information periodically or as a one- off. In an embodiment, clients which send information periodically may send the information at fixed intervals of time or at variable intervals of time. In an embodiment, different clients may send information at the same time or at different times. [0109] As mentioned above, the server 4 generates the instruction based on the requested content and information about at least one of the clients. For example, the server 4 knows what content has been requested from the received request. Also, the server 4 knows information on one or more of the clients. For instance, the server 4 may know what content is stored on client 8 and may know the connectivity (i.e. which devices each client is connected to) of the client 6 and the client 8. Therefore, the server 4 may have all the information necessary to identify that the content requested by the client 6 may be obtained from the client 8.
[0110] Furthermore, the server 4 may also be aware of the relative connection strengths (e.g. data rate) between the clients and the server. Accordingly, the server 4 may be aware that the content requested by the client 6 may be distributed from client 8 via interface B faster than the same content may be distributed from the content provider via interface A. In turn, power consumption may be conserved since it takes less time to distribute (i.e. transmit and receive) content. Therefore, the above- described embodiment provides an improved method of content distribution.
[0111] Furthermore, the server 4 may also be aware of the relative power consumptions of the different communication interfaces of the client 6. Accordingly, the server 4 may be aware that the content requested by the client 6 may be distributed from client 8 via interface B using less power than the same content may be distributed from the content provider via interface A. Therefore, the above-described provides an improved method of content distribution.
[0112] It is to be understood that the server 4 may instruct the client 6 to obtain only part of the requested content from client 8. In an embodiment, the server 4 may instruct the client 6 to obtain the remaining part (or a part thereof) from one or more other clients, such as, for example, the client 10. Additionally or alternatively, the server 4 may instruct the client 6 to obtain the remaining part (or a part thereof) from the content provider 12. For example, the server 4 may distribute content in this way in order to reduce the time taken for client 6 to receive the requested content or to reduce power consumption in client 6. .
[0113] In an embodiment, the server 4 may instruct the client 6 to obtain part of the requested content via one communication interface and the remaining part (or a part thereof) via one or more other communication interfaces. The client may receive content via different interfaces simultaneously or at different times. In an embodiment, the server 4 may instruct the client 6 to obtain one part from client 8 using interface B and the remaining part (of a part thereof) from the content provider 12 via the communication interface A. For example, the server 4 may distribute content in this way in order to reduce the time taken for client 6 to receive the requested content or to reduce power consumption in client 6. [0114] In summary, therefore, content requested by client 6 may be distributed to the client 6 under the control of the server 4 from one or more other clients (clients 8 and 10) and/or from the content provider 12.
[0115] In an embodiment, once content is received by the content fetcher 36 of the client 6, the content fetcher 36 may present the received content to the request generator 34 (i.e. the web browser) as if the received content had been received directly from the content provider 12 via the interface A. Accordingly, from the point of view of the request generator, received content is provided in accordance with the request generated by the request generator. This is the case even though the content may have been received from numerous other sources via numerous other interfaces. [0116] In an embodiment, content requests, instructions and distributed content may be transported between the server and a client and between multiple clients via a 'layer' which sits on top of an existing network transport mechanism and between the communicating devices (e.g. client, server). For example, the existing network transport mechanism may be the transmission control protocol (TCP), the user datagram protocol (UDP) or the like. In an example, the 'layer' is sandwiched between the TCP/IP layer and the application layer.
[0117] Figure 7 illustrates an embodiment of a server 400. The server 400 is a modification of the above-described server 4. Accordingly, in some embodiments, the server 4 may be substituted for the server 400. As seen more particularly on Figure 7, the server 400 may include the communication interface A, the receiver 20, the transmitter 22 and the scheduler 24, as described above in respect of server 4. Additionally, however, the server 400 may also include the following further features.
[0118] The server 400 may include a data repository 402 in communication with the receiver 20, the transmitter 22 and the scheduler 24. The data repository 402 is capable of storing data, such as, for example, content. In an embodiment, the data repository 402, the receiver 20, the transmitter 22 and the scheduler 24 are each connected to a common bus and communicate with each other via the bus.
[0119] The server 400 also comprises a content parser 404 in communication with the data repository 402. The content parser 404 is capable of obtaining portions of data (e.g. content) from the data repository 402 and processing it. The operation of obtaining data may be performed asynchronously or synchronously from the operation of processing the data. Specifically, processing the data includes the content parser 404 generating one or more pieces of metadata for each data portion obtained from the data repository 402. [0120] Each data portion may include a number of data segments each containing a number of data blocks. The segment and block sizes may be fixed or variable. In an embodiment the segment size and block size are determined dynamically.
[0121] In an embodiment, a piece of metadata may include a string of bits wherein each bit corresponds to a data block. Accordingly, the string may include the same number of bits as the number of data blocks in a data segment corresponding to the string. Therefore, a string (i.e. a piece of metadata) is generated for each data segment. Furthermore, a plurality of strings is generated for each data portion (comprising a number of segments). The plurality of strings may be arranged to form a bitmap, wherein each bit in the bitmap corresponds to a data block of a corresponding data portion, and each row of the bitmap corresponds to a data segment of the corresponding data portion.
[0122] The server 400 may also include a metadata repository 406 in communication with the content parser 404 and the scheduler 24. The metadata repository 406 is capable of storing metadata generated by the content parser 404. In an embodiment, the metadata repository 406 stores metadata with an indication of the content it relates to which is stored in the data repository 402. Therefore, content stored in the data repository 402 is mapped to an entry in the metadata repository 406.
[0123] In an embodiment, the scheduler 24 takes data from the data repository 402 and metadata repository 406 and schedules content delivery to the client on a segment by segment and block by block basis. Since the segment and block size may be variable and determined dynamically, such scheduling may make it difficult for third parties to obtain content during distribution maliciously. Accordingly, content may be protected from third parties trying to obtain content maliciously.
[0124] According to the above, the server 400 is capable of receiving content at the receiver 20 via the communication interface A, and is capable of storing the received content. Furthermore, the server 400 is capable of generating metadata for the stored content which may be used in scheduling content distribution to one or more clients.
[0125] Figure 8 illustrates an exemplary method implemented by the server 400 for storing content and generating metadata. At S400, content is obtained by the server 400, for example, by the receiver 20 via the communication interface A. At S402, the obtained content is stored in the data repository 402. At S404, a first portion of the content is obtained by the content parser 404. At S406, the content parser 404 generates one or more pieces of metadata based on the first content portion and stores the metadata in the metadata repository 406 with an indication of the content to which it relates. At 408, the content parser 404 identifies whether or not any unprocessed portions of the obtained content exist in the data repository 402. If so, at S410, the next portion is obtained and processed in the same way as the first portion. If not, the method ends. [0126] In an embodiment, the server 400 may further include a coding controller 408 connected to the data repository 402, the receiver 20, the transmitter 22 and the scheduler 24, for example, via a common bus. In operation, the coding controller is configured to encode content before it is stored on the data repository 402. For example, the content may be encoded by employing Random Linear Coding practices, although other coding practices may be used instead. Encoding stored content may enhance the overall delivery of such content. For example, in an embodiment, two clients are missing different portions of the same content. The server can encode a single data packet including both missing portions and transmit the coded data packet to both clients. On receipt, the first client can decode the data packet using the portion it already has to obtain the portion it is missing. The second client can do the same to obtain the portion it is missing. In an embodiment, the scheduler decides which data portions to combine into a single coded data packet, and to which clients to transmit the coded data packet. In a further example, one or more clients may additionally or alternatively have the capability to encode data. In an embodiment, a client may comprise a coding controller to code content stored by the client. For example, the server may issue an instruction to the client to operate as described above. Specifically, considering the above example, the server may instruct the client to encode a single packet including both missing portions and transmit the coded data packet to both above-mentioned clients. Accordingly, a server and/or one or more clients may act as a broadcasting node of an access network. Also, multiple receiving clients may receive the same encoded data packet simultaneously and each individual receiving client may extract therefrom data which is missing specifically from that client.
[0127] An advantage of generating and storing metadata may be explained as follows. A first client may request content and a second client may comprise some but not all of the requested content. The server 400 may obtain a bitmap of the content stored by the second client, such as, for example, via the receiver 20 and communication interface A. In an example, a bitmap or a portion thereof may be transmitted from a client to the server to indicate that content relating to the bitmap has been successfully received or transmitted by the client. Stated differently, clients may send bitmaps or portions of bitmaps as delivery reports. The server may store these received bitmaps. Accordingly, the server may maintain knowledge of what content is stored of which clients. This may assist the scheduler in scheduling content distribution.
[0128] As mentioned above, the bits of a bitmap correspond to a data block of a data portion. In use, each b'it of a bitmap can be set to either a T or a Ό'. In an embodiment, the bit can be set to T if the block has been successfully sent or received. Alternatively, the bit can be set to a '0' if the block has not been . successfully sent or received. Therefore, where a client contains a complete portion of content, the client will also contain a bitmap comprising all Ts. Alternatively, where a client contains an incomplete portion of content, the client will contain a bitmap having Ί ' s and ' 0 ' s. [0129] The server 400 may use the bitmaps obtained from clients to determine which parts of the content requested by the first client are not stored by the second client. For example, the server 400 may overlay a bitmap of the complete content stored on the metadata repository 406 with a bitmap of the incomplete content stored by the second client. Accordingly, the server 400 may determine which parts (i.e. which segments or blocks) of the requested content may be obtained from the second client and which parts of the requested content must be obtained from elsewhere, such as, for example, the server 400 or the content provider 12. Therefore, an appropriate instruction may be generated by the server 400 and sent to the first client.
[0130] In an embodiment, the server 400 is configured to obtain and store content from a content provider in response to receiving from a client a request for content which is not already stored in the data repository 402. In an embodiment, the server 400 is configured to obtain and store all requested content which is not already stored in the data repository 402. In an embodiment, the server 400 is configured to obtain and store only some of the requested content which is not already stored in the data repository 402. For example, the server 400 may be configured to only store content which has been requested previously by the same or a different client, particularly if the different client is close by the requesting client. Accordingly, the server 400 may store only popular content. Therefore, the server 400 may be able to directly transmit popular content to the client instead of, or in addition to, instructing the client to obtain content from another client or a content provider. This can be advantageous if no other clients have the requested content. Also, this can be advantageous if the strength of the connection between the server 400 arid the client is strong, i.e. it can handle a high data rate. In another example, the server may filter content requests and store content based on the results of the filtering process. For example, the filter may identify requests from a particular client or content relating to particular subject- matter. [0131] In an embodiment, the server 400 may be configured to generate and store metadata for all or some of the content stored on the data repository 402.
[0132] Figure 9 illustrates an exemplary communication system 50. The communication system 50 may include the same elements as the communication system 40 of Figure 4; however, the server 4 has been substituted with the server 400.
[0133] Next will be described the operation of the communication system 50 for the distribution of content to the client 6. The operation will be described using the illustrated communication system 50 of Figure 9.
[0134] Figure 9 illustrates some of the same operations as Figure 4, such as, SI to S4. Since these operations have been described above they are not described again here. However, it should be noted that in S3 the instruction sent from the server 400 to the client 6 is an instruction for client 6 to obtain only part of the requested content from client 8. Accordingly, at S4, client 6 obtains only part of the requested content from client 8 via the communication interface B. [0135] In an embodiment, at S5, the server 400 transmits part of the requested content directly to the client 6 via the communication interface A of the server 400. For example, part of the content requested by client 6 in SI may already be stored in the data repository 402 of server 400. Additionally or alternatively, part of the content requested by the client in 6 in SI may be Obtained by the server 400 from the content provider 12 in S6, prior to the server 400 transmitting said content to the client 6 in S5.
[0136] In an embodiment, content may be obtained by the server 400 from the content provider 12 (S6) even in the absence of a corresponding request for that content from the client 6. For example, there may be an as such conventional arrangement between the server 400 and the content provider 12 that certain content be uploaded by the content provider 12 (or downloaded by the server) in anticipation of the server 400 later receiving a request for the content from the client 6. This may be the case even if the server never actually receives a request for the content. [0137] According to this operation, client 6 obtains part of its requested content from the client 8 via the interface B of client 6, and client 6 receives part of its requested content from the server 400 via the interface A of client 6. Therefore, content is distributed to the client 6 via multiple interfaces using different communication technologies. Additionally, content is distributed to the client 6 via multiple different paths. An advantage of this operation is that content distribution to the client 6 can be faster since two interfaces are being used simultaneously. Also, if the communication link between the client 6 and the client 8 is capable of providing a higher data rate than the link between the server 400 and the client 6, content distribution can be faster compared to when content is only received from the server 400. Further, if the interface B requires less power to operate than the interface A, power consumption in the client 6 can be reduced compared to when content is only received from the server 400.
[0138] In an embodiment, at S7, the server 400 transmits (via interface A) part of the content directly to the client 8. For example, before the operation of S4, part of the content transmitted from the client 8 to the client 6 in S4 may be transmitted to the client 8 from the server 400 in S7. Therefore, content may be distributed to the client 6 from the server 400 via the client 8. According to this operation, power consumption in the client 6 may be conserved. For example, if the interface B requires less power to operate than the interface A, substituting receiving the requested content via the interface B instead of the interface A conserves power in the client 6. Obviously, the client 8 uses more power in this embodiment. Furthermore, overall system power consumption may be reduced if, for example, the connection between the server 400 and the client 8 is faster (i.e. higher data rate) than the connection between the server 400 and the client 6.
[0139] In an embodiment, at S8, the client 8 obtains (via interface B) part of the content from the client 10. In an embodiment, the server 400 transmits an instruction to client 8 instructing it to obtain part of the content from the client 10. This process is analogous to the process of the server 400 transmitting an instruction to the client 6 instructing it to obtain part of the content from the client 8. For example, before the operation of S4, part of the content transmitted from the client 8 to the client 6 in S4 may be obtained by the client 8 from the client 10 in S8. Therefore, content may be distributed to the client 6 from the client 10 via the client 8.
[0140] According to this operation, overall system power consumption may be reduced if, for example, the client 8 is able to obtain missing content from the client 10 via interface B rather than from the server 400 via the interface A. Furthermore, an advantage of this operation is that content from client 10 may be received by client 6 even if client 10 is out of range of client 6. Specifically, client 8 may act as a routing station for content between client 10 and client 6.
[0141] It is noted that the server 400 may be aware of the contents of the client 10 and the client 8 since during the course of operation the server 400 may receive at its communication interface A information relating to one or more of the clients 6 to 10, as described above with reference to Figure 6.
[0142] In an embodiment, in S9, the client 6 may obtain part of the requested content directly from the content provider 12. For example, in S3, the instruction from the server 400 to the client 6 may instruct the client 6 to obtain part of the requested content directly from the content provider 12 via the interface A. Accordingly, at S9, the client 6 may do as instructed. Additionally or alternatively, the server 400 may instruct the content provider 12 to transmit the content to the client 6.
[0143] An advantage of this operation is that when there is a strong connection link (i.e. one having a high data rate) between the client 6 and the content provider 12, the server 400 can take advantage of this and instruct the client 6 to obtain content directly from the content provider 12. Accordingly, content distribution to the client 6 may be faster. Also, due to the increase in speed, power consumption in the client 6 may be reduced compared to, for example, receiving the same content from the server 400 via the interface A.
[0144] In the above-described embodiments, instructions are sent to the client 6 from the server 400 via the client's interface A (S3). However, in some other embodiments, instructions may additionally or alternatively be sent to the client 6 from the server 400 via the client's interface B, for example, through client 8 and/or client 10. For example, the client 6 may loose its connection with the primary communication path (e.g. 3G) and, therefore, the server 400 may not be able to communicate with the client 6 via its interface A. However, client 8's connection with the primary communication path may be operational. In this case, the server 400 may transmit client 6's instruction to client 8 via the primary communication path (e.g. 3G) and request that the client 8 relay client 6's instruction to client 6 via the secondary communication path (e.g. WIFI). In an analogous way, content requests may be transmitted from client 6 to server 400 via client 8. Accordingly, any data (e.g. content, content requests, instructions) may be exchanged between a server and a client via one or more other clients.
[0145] In addition to the above, any data (e.g. content, content requests, instructions) may be exchanged between a server and a client via any active communication path between the server and the client. Accordingly, any data (e.g. content, content requests, instructions) may be exchanged between a server and a client via any interface of the client configured to cooperate with an active communication path between the server and the client. These active connection paths may be direct or indirect (i.e. via one or more other devices). Considering the example in the paragraph above, data may be exchanged between the server 400 and the client 6 via the client 6's interface A (i.e. direct) or via the client 6's interface B (i.e. indirect via client 8 and/or client 10).
[0146] Figure 10 illustrates an exemplary communication system 60. The communication system 60 may include the same elements as the communication 50 of Figure 9.
[0147] Next will be described the operation of the communication system 60 for the distribution of content to the client 6 and to the client 10. The operation will be described using the illustrated communication system 60 of Figure 9.
[0148] In an embodiment, at SI 3, the client 6 transmits a request for content to the server 400 via the interface A. This operation is analogous to the operation of S2 described above with reference to Figure 4. At SI 4, the server 400 receives the content request from client 6 at the receiver 20 via the interface A. The scheduler 24 identifies that the requested content is contained in the data repository 402. The scheduler 24 then controls the transmission of the requested content from the data repository 402 to the transmitter 22 and via the interface A to the client 6. This operation is analogous to S5 of Figure 9. [0149] In an embodiment, as the content begins to be transmitted to the client 6, at SI 5, the client 10 transmits to the server 400 via the interface A a request for the same content. As before, this operation is analogous to the operation of S2 described above. The server 400 receives the content request from client 10 at the receiver 20 via the interface A. The scheduler 24 identifies that the requested content is contained in the data repository 402 and is in the process of being transmitted to the client 6 via interface A. The scheduler 24 is also aware that the client 6 and the client 10 may establish a connection together via their interface Bs. In particular, the scheduler 24 is aware of the location of client 6 and 10 as well as the connectivity of client 6 and 10.
[0150] In an embodiment, in view of the above, the scheduler 24 does not transmit to client 10 the part of the requested content which it has already been transmitted to client 6. Instead, at SI 6, the scheduler 24 transmits an instruction to client 10 instructing the client 10 to obtain this part of the requested content from the client 6 via the interface B. This operation is analogous to the operation S3 of Figure 4. At SI 7, the client 10 then obtains this part of the requested content from the client 6. [0151] In an embodiment, the scheduler 24 also realizes that the part of the content not yet transmitted from the server 400 to the client 6 must be transmitted to both the client 6 and the client 10. Therefore, the scheduler 24 sends a portion (e.g. half) of this remaining content to client 6 (SI 4) and the remaining portion (e.g. the remaining half) of the remaining content to client 10 (SI 8). Further, at SI 9, the scheduler 24 instructs the client 6 and the client 10 to swap their respective portions so that both the client 6 and the client 10 contain complete copies of the requested content. Accordingly, requested content is distributed to both client 6 and client 10.
[0152] In an embodiment, the client 6 and the client 10 may issue their requests for content at the same time. Alternatively, the client 10 may issue its request before the client 6 issues its request. Furthermore, in an embodiment, more than two clients may . request the same content at the same or similar times. In each case, the above- described principles may be extended to such scenarios by the skilled person without further inventive skill.
[0153] According to the above operation, the speed with which content is distributed can be optimized. For example, the interface A may allow for a lower data rate compared to the interface B. Therefore, by maximizing use of the interface B, content distribution may be faster. Furthermore, interfaces A and B may be used simultaneously. Therefore, content distribution may be faster because content may be distributed to a client via multiple interfaces and multiple communication paths.
[0154] According to the above operation, power consumption in a client may be reduced. For example, the above-described improvements in speed translate to savings in power consumption because clients spend less time communicating, i.e.
transmitting or receiving. Additionally, the power consumption per bit of data received or transmitted via the interface A may be more than the equivalent measure for interface B. Therefore, by maximizing the use of interface B, the interface A is utilized less and power consumption in the client is reduced.
[0155] Figure 11 illustrates an embodiment of a server 500. The server 500 is a modification of the above-described server 4. Accordingly, in some embodiments, the server 4 may be substituted for the server 500. As seen more particularly on Figure 11, the server 500 may include the communication interface A, the receiver 20, the transmitter 22 and the scheduler 24, as described above in respect of server 4.
Additionally, however, the server 500 also may include the following further features.
[0156] As mentioned previously with respect to server 4, the receiver 20, the transmitter 22 and the scheduler 24 may each be connected to a common bus and may be able to communicate with each over via the bus. In the server 500, the following features may also be connected to the bus:
[0157] A connectivity controller 502. In an embodiment, the connectivity controller 502 stores connectivity information relating to one or more clients, such as, for example, clients 6 to 10. For example, the connectivity information is provided to the server 500 as described above with reference to Figure 6. For example, connectivity information may provide an indication of a client's actual or possible connections to other devices, such as, other clients, servers or content providers. The connectivity information may include, but is not limited to, a Link Quality. Specifically, a client may maintain a Link Quality value and this may be part of the information passed from the client to the server, as described with reference to Figure 6.
[0158] The Link Quality aims to provide an indication of what connection paths (i.e. communication links) to the client exist together with a measure of the quality (e.g. data rate, capacity) of each connection path. The Link Quality may include a signal- to-noise ratio or a packet throughput rate for one or more communication paths from the client. Additionally, the Link Quality may provide an indication of the usability of a neighboring client. For example, the Link Quality may indicate the available memory or processing capacity of a neighboring client connected to the client by a connection path. Also, the Link Quality may indicate a proportion of the neighboring client's capacity which is usable by the client. Further, the Link Quality may indicate the power consumption in the client caused by communication via one or more of the communication paths from the client. In summary, the Link Quality aims to provide a measure of the quality of each communication link of the client. Accordingly, the scheduler 24 is capable of scheduling content to the client based on connectivity information, such as, the Link Quality. Therefore, the scheduler 24 is capable of scheduling content to the client via the fastest link available, or whilst conserving power consumption in the client.
[0159] A location controller 504. In an embodiment, the location controller 504 stores location information relating to one or more clients, such as, for example, clients 6 to 10. For example, the location information is provided to the server 500 as described above with reference to Figure 6. For example, location information may provide an indication of a client's absolute geographical position. The client may identify its absolute position via GPS or via other means, such as, for example, via a cellular network or from a neighboring device. Accordingly, the scheduler 24 is capable of scheduling content to the client in dependence on the client's location. For example, the scheduler may determine that two clients are in close proximity to each other even though they may not be aware of each other. Accordingly, the scheduler may instruct one of the clients to connect to and obtain requested content from the other client.
[0160] A cluster controller 506. In an embodiment, the cluster controller 506 uses connectivity information stored on the connectivity controller 502 to form one or more clusters of clients. Accordingly, content distribution to clients within a cluster may be improved by considering the whole cluster as a single entity capable of sharing content together. For example, within a cluster the communication speed may be relatively fast, therefore, scheduling content to clients within the cluster may be performed primarily from other clients of the cluster. However, if content is only available from outside the cluster, the scheduler may schedule content to a content from outside the cluster.
[0161] In an embodiment, the cluster controller 506 also uses delivery reports received by the server to form one or more clusters of clients. Since the delivery reports provide an indication of what content is stored by clients, the clients can be clustered together based on their content instead of, or in addition to, being clustered based on their connectivity.
[0162] In an embodiment, the cluster controller 506 also uses location information stored on the location controller 504 to form one or more clusters of clients. Content may be distributed to clients within a similar geographical area quickly since these clients are likely to have strong communications links with each other owing to the short distances between clients. Therefore, by clustering according to location, content may be distributed to such clients more efficiently.
[0163] A diffusion controller 508. In an embodiment, the diffusion controller 508 computes a content diffusion strategy which helps the scheduler 'seed' content to clusters and in so doing improves overall content distribution speed for the clients of that cluster. For example, based on location information stored in the location controller 504, the scheduler may identify that a client is moving. Alternatively, the client may transmit movement information directly to the server 500 which is received and subsequently stored by the diffusion controller 508. Therefore, the scheduler may become aware that the client is about to move out of range of the cluster from which it is receiving content. Additionally, the scheduler may become aware that the client is about to move into range of a new cluster. Therefore, before the client leaves one cluster and joins the next cluster, the scheduler may transmit content to the new cluster and notify the client of a new source for obtaining the requested content. Alternatively, the new cluster may already have the requested content and, therefore, the scheduler may only inform the client of a new source for obtaining the requested content.
[0164] According to the above operation, content distribution to the client can be optimized since the client can be made aware of a new source of content as soon as, or before, a current source of content moves out of range. Therefore, the client need not stop receiving requested content even though the content source changes. The same principles may be applied to an embodiment in which content is seeded to more than one moving, content-receiving client. Also, the same principles may be applied to an embodiment in which the content-sending client(s) may be moving instead of, or in addition to, the content -receiving client(s).
[0165] In an embodiment, the same content must be distributed to multiple clients. The clients may be organized into n clusters by the cluster controller 506. The diffusion controller may then organize the content into n portions and establish a diffusion strategy whereby each of the n content portions is distributed to a different one of the n clusters. Accordingly, the scheduler may then distribute content according to the diffusion strategy. Within each cluster, the content portion transmitted to that cluster may be shared among the cluster members. Furthermore, clients from one cluster may share the content portion sent to their cluster with clients of other clusters. In this way, the same content may be distributed to multiple parties in an efficient manner.
[0166] A capacity controller 510. In an embodiment, the capacity controller stores capacity information relating to one or more clients, such as, for example, clients 6 to 10. For example, the capacity information is provided to the server 500 as described above with reference to Figure 6. For example, capacity information may provide an indication of a client's capacity, such as, memory or processing capacity. Accordingly, the scheduler 24 may be capable of identifying an actual capacity of a client and/or a virtual capacity of a client. The actual capacity may be obtained directly from the capacity information relating to that client. The virtual capacity may be obtained by considering the actual capacity of all neighboring clients together with the capacity of the communication links to those neighboring clients. In an embodiment, virtual capacity may only include the capacity of neighboring clients which are connected via the interface B (i.e. a secondary interface). The concept of virtual capacity may be considered analogous to hard disk space in the virtual memory concept.
[0167] Therefore, the scheduler 24 can schedule content distribution to the client based on the actual capacity of the client and/or the virtual capacity of the client. In this way, the scheduler 24 may treat the neighboring clients as external memories or external processors of the client. Stated differently, a neighboring client may be viewed just as an accessible memory of the client having a particular volume (neighbor's capacity) and as being accessible at a particular data rate (connection link's speed). Accordingly, content distribution to the client may be improved, such as, for example, by being faster and/or by reducing power consumption in the client.
[0168] An incentive controller 512. In an embodiment, the incentive controller 512 stores one or more incentive parameters for one or more clients, such as, clients 6 to 10. For example, the incentive parameters may be provided to the server 500 as described above with reference to Figure 6. Additionally or alternatively, incentive parameters may be set by the scheduler and such incentive parameters may relate to all clients or only to specific clients. In an embodiment, the incentive parameters provide client specific requirements to assist the scheduler 24 in scheduling content to the client. For example, incentive parameters may include a cache level in a client, a proportion of available capacity which a client is willing to donate for another client's use or a maximum power consumption for a particular client. Accordingly, the scheduler 24 may schedule content to a client based on the incentive parameters relating to that client and also the incentive parameters relating to other clients, such as, other neighboring clients. [0169] For example, the incentive controller 512 may contain an incentive parameter relating to a first client which specifies that power consumption in the client is to be . minimized. Additionally, the incentive controller 512 may contain an incentive parameter relating to a second client which specifies that the second client is willing to donate 80% of its processing and memory capacity for use by other clients. If the first client requests content and is close to the second client, the scheduler 24 may choose to transmit content to the second client via the client's interface A and instruct the first client to obtain the content via its interface B from the second client. Accordingly, power consumption in the first client is minimized and the capacity of the second client is used for the first client's purposes.
[0170] A transaction controller 514. In an embodiment, the transaction controller 514 is capable of keeping a record of the delivery status of content which has been scheduled for distribution by the scheduler 24. For example, as mentioned above, a sending and/or a receiving party may send a delivery report to the server during content distribution and/or once content distribution is complete. In an embodiment, the transaction controller 514 uses these delivery reports to maintain a transaction history log. For example, the transaction controller 514 may store all or some of the received delivery reports.
[0171] An advantage of the transaction controller 514 is that it provides a mechanism by which the operation of the server in distributing content may be audited and analyzed, for example, for fraud detection or collusion detection. In an example, the transaction controller 514 may only record a transaction as complete once it has received a successful delivery report from both the transmitting party and the receiving party. In some other embodiments, confirmation from only one party may suffice.
[0172] It is to be understood that the features of the server 500 and the server 400 may be combined to form a further embodiment. Additionally, some other embodiments of the invention may include some but not all of the features of server 500 and/or some but not all of the features of server 400.
[0173] Advantages of the above-described additional features of server 500 enable content to be distributed to a client faster and/or whilst reducing power usage by the client. [0174] Figure 12 illustrates a communication system 602 including a server 604 and clients 606 to 612. The server 604 may correspond to the server 4, 400 or 500 described above. However, the server 604 may include multiple communication interfaces configured to operate according to different communication technologies. As seen more particularly on Figure 12, the server 604 and the client 606 communicate with each other via two communication interface A's (indicated by the dashed lines) and three communication interface B's (indicated by the solid lines). Therefore, both the server 604 and the client 606 may include two interface A's and three interface B's. It is noted that each interface of the server 604 is in communication with the server's transmitter and receiver, and each interface of the client 606 is in communication with the client's transmitter and receiver. Furthermore, the client 606 also has a separate communication interface B for communicating with clients 608 to 612.
[0175] In an embodiment, clients 608 to 612 are capable of communicating with each other via their interface B. However, it is to be understood that in some embodiments, clients 608 to 612 may only be able to communicate with proxy client 606 and not with each other.
[0176] In an embodiment, the client 606 acts as a proxy node for clients 608 to 612, for example, for internet access. Therefore, clients 608 to 612 receive content through client 606 as scheduled by the server 604. The communication link between the proxy client 606 and the server 604 can exploit the simultaneous use of multiple communication interfaces. For example, in Figure 12, two interface A's and three interface B's may be used. Accordingly, the speed of communication between the server 604 and the proxy client 606 can be very fast compared to the case when only one interface is used. In an example, the connection between the client 606 and the server 604 is fast enough to be considered a broadband connection. Furthermore, the arrangement of Figure 12 may be preferable since it may be cheaper than installing a temporary wired broadband connection.
[0177] In en embodiment, in addition to receiving content via the proxy client 606, each client 608 to 612 may receive content from each other. The distribution of content to each of clients 606 to 612 is as described in the embodiments above. Therefore, distribution is controlled from the server 604.
[0178] In an embodiment, the server 604 and the proxy client 606 may have more or less communication interfaces than those indicated on Figure 12. In an embodiment, there may be more than one proxy client. In an embodiment, there may be more or less than four clients using the one or more proxy clients.
[0179] The embodiment of Figure 12 may be used in a predefined area, such as, for example, a convention hall or an exhibition hall. For example, each client could represent a different person at the hall and the proxy client could provide a means for each person to download content quickly whilst in the hall. According to this arrangement, the download speed is faster by virtue of the multiple interfaces between server 604 and client 606. In an embodiment, the arrangement of Figure 12 may be used in a predefined area in which there is no communication link available to clients other than the link provided by the client 606 and the server 604.
[0180] Figure 13 illustrates a communication system 700 including the server 604 and proxy client 606 described above with reference to Figure 12. Additionally however, the communication system 700 may include a hardware device, such as, for example, a video camera 702. The camera is in communication with the proxy client 606 via an interface B of the camera 702 and the proxy client 606.
[0181] In an embodiment, the camera 702 uploads data, such as, for example, audio or video content, to the proxy client 606. The proxy client 606 then splits the content up and simultaneously transfers it to the server 604 via the multiple interfaces. Accordingly, data from the camera 702 can be uploaded to the server 604 quickly by virtue of the multiple interfaces between the proxy client 606 and the server 604. At the server 604, the data can be reassembled and, for example, forwarded to cloud storage for editing or transmitted directly to a distribution server for broadcasting. Therefore, it is an advantage that data from the camera 702 may be uploaded to a remote location quickly by making use of a multiple interface and multiple path connection between the proxy client and the server. [0182] In an embodiment, the camera 602 may be substituted by another hardware device, such as, for example, another type of sensing device or data generating device. In an example, one or more of the same or different hardware devices may be connected to the proxy client 606. [0183] In an embodiment, a security mechanism is provided so that a client can verify whether or not an instruction sent from the server was actually sent by the server. The security mechanism may also enable a client to verify whether or not an instruction from the server and relayed via another device actually originated from the server.
[0184] In an embodiment, before a client starts communicating with the server, the client must register with the server. Registration may involve the client sending a registration request to the server. On receiving the registration request from the client, the server generates an identifier (ID) for the client. In an embodiment, the identifier may be a communication session ID. The server then sends the ID to the client as a registration response to complete registration. In an embodiment, the server also stores the ID. In an embodiment, the ID is unique to the client. In some other embodiments, the server may just send a registration response to a client of its own accord, i.e. not necessarily in response to receiving a registration request.
[0185] As mentioned above, during communication the client may transmit a content request to the server. For example, the request may be redirected from the content provider to the server. In any case, on receipt of the request, the server may generate an instruction for the client indicating a source from which the client is to obtain the requested content. For example, the source may be a content provider and/or another client. In any case, the instruction includes an encrypted value generated using the client's ID. Accordingly, when the client receives the instruction it can decrypt the encrypted value to obtain the ID and then confirm that this ID matches the ID assigned to the client during registration. Since only the server knows the client's ID, if the two IDs match, the client can assume that the instruction is authentic, i.e. the instruction came from the server.
[0186] In an embodiment, the encrypted value is calculated by using a hash function, such as, for example, a hash-based message authentication code (HMAC). Accordingly, after unhashing the hash value, the client can confirm authenticity by checking that the ID inside the hash matches the ID assigned to the client.
[0187] In an embodiment, the client's ID is only valid for a temporary period of time. For example, the server may generate the ID in combination with a corresponding expiry time or period. In this case, the registration response may include the ID and the expiry time. In an embodiment, after the expiry time has elapsed the client may need to re-register with the server. Additionally or alternatively, the server may send one or more messages to the client notifying the client of its new ID and corresponding expiry time. Such messages may be sent to the client 'out-of-band', i.e. outside of the normal communication channel between the client and the server during a communication session. For example, the ID may be communicated a priori as the client first enters the system. This can be considered as "outside" the actual content distribution communication session because the new ID is not communicated from the server to the client using the same communication channel that is doing the content distribution of data. An advantage of having a temporary ID is that even if an attacker is able to guess or crack the client's existing ID and thereby impersonate the server, the ID will soon expire. Once the ID has expired, the hacker will no longer be able to impersonate the server. In an embodiment, the expiry time may be randomized, rather than predictably periodic, to make it more difficult for attackers to hack into the system. For example, a first ID may expire after 1 minute, a second after 30 seconds, a third after 45 seconds, etc.
[0188] In view of the above, a client is able to verify the authenticity of an instruction relayed via another device, such as, for example, another client device. Specifically, the relayed instruction will contain an encrypted (e.g. hashed) value generated using the client's ID. Accordingly, when the client receives the instruction it can decrypt the encrypted value, identify the ID, and confirm that it matches the ID assigned to the client during registration. Since only the server knows the client's ID, if the two IDs match, the client can assume that the instruction is authentic.
[0189] As described above, the security mechanism may be used by a content requesting client to verify that a received instruction was sent by the server. In an embodiment, the security mechanism may be used by a content distributing client to verify that a request for content from another client originated from the server, i.e. the request is in accordance with the server's scheduling. For example, a first client may transmit a content request to the server. The server may then transmit an instruction for the first client to obtain requested content from a second client. Accordingly, on receipt of the instruction, the first client requests content from the second client in accordance with the server's instruction. As before, the instruction received by the first client includes an encrypted value calculated using the ID of the first client. However, this time, the instruction also includes an encrypted value calculated using the ID of the second client. As before, when the first client receives the instruction, the first client can verify the authenticity of the instruction by decrypting the encrypted value calculated using the ID of the first client.
[0190] As mentioned above, the first client may obtain content from the second client in accordance with the instruction by relaying the instruction to the second client. On receiving the relayed instruction, the second client may confirm the authenticity of the instruction by decrypting the encrypted value calculated using the ID of the second client. Stated differently, the second client can compare an ID obtained via the decryption with an ID assigned to the second client during a prior registration sequence, as described above. Therefore, using the single instruction from the server, both the first and second clients can confirm the authenticity of the instruction. It is to be understood that the instruction is transmitted from the server to the first client and that the first client forwards the instruction to the second client. Specifically, the instruction is transmitted from the server to the first client to instruct the first client to obtain content from the second client, whereas the instruction is forwarded from the first client to the second client to instruct the second client to distribute content to the first client.
[0191] An advantage of the above-described security mechanism is that a client does not need to verify the authenticity of every instruction with a central authorization server before executing the instruction. Such centralized authentication could reduce efficiency and effectiveness of content distribution. Additionally, the above-described security mechanism does not require the use of a certification authority, as would be necessary, for example, in a public/private key authentication system. The need for a certification authority would increase complexity which in turn would reduce content distribution efficiency.
[0192] In the above-described embodiments, content may be distributed to a client in a controlled and organized fashion. In particular, scheduling of content distribution to a client may be controlled and optimized by the server. The server may control content distribution to a client even though the server may not distribute content to the client itself, i.e. the server may instruct (control) the client to obtain the requested content from another client or a content provider. Embodiments may provide a general purpose multi-interface content transport system. [0193] In the above-described embodiments, the client generates a request to receive content for transmission to a content provider of the requested content. The client then redirects (i.e. transmits) the request to the server rather than to the content provider. However, in some embodiments, the client may generate the request for transmission to the server. Stated differently, there may be no redirecting operation, just a transmission of the request from the client to the server. In some other embodiments, the client may not actually generate the request. Stated differently, the client may just transmit a request to the server device, rather than generate and transmit the request.
[0194] In the above-described embodiments, the server always handles content requests which have been redirected to it. However, in some embodiments, the server may bounce back one or more requests to the clients who sent them. For example, the decision to bounce back a request may be based on one or more criteria, such as, for example, the number of received requests which have not yet been handled. In such situations, a client who receives a bounced back request may establish a direct connection with the content provider for obtaining the requested content. Optionally, the server may still keep track of the client's request but may not carry out any data traffic for the client.
[0195] In the above-described embodiments, the server transmits an instruction to a client to obtain requested content from a particular source, for example, another client. In some embodiments, the instruction may include a list of sources from which the requested content may be obtained. For example, it may be up to the client to choose from which source to obtain the requested content. In an example, the client chooses the source with the best connection speed (e.g. bit rate) to the client. In some embodiments, the list may be a prioritized list. Accordingly, the client may attempt to obtain the content from the first source listed and, if this fails, the client may then attempt to obtain the content from the next source listed, and so on.
[0196] In the above-described embodiments, the server transmits an instruction to a client which instructs the client to obtain content from a particular source, such as, for example, another client or a content provider. However, in some embodiments the server may transmit a number of instructions rather than a single instruction. For example, the server may issue a first instruction to obtain a first part of the content from a particular source. Later on, the server may issue a second instruction to obtain a second part of the content from the source, and so on. Also as mentioned above, the second instruction may instruct the client to obtain the second part of the content from a different source. It is to be understood that one or more instructions may be sent to a client instructing the client to obtain one or more parts of requested content from one or more sources.
[0197] In the above-described embodiments, clients may include two communication interfaces, an interface A configured to operate according to a primary communication technology and an interface B configured to operate according to a secondary communication technology. In some embodiments, one or more clients may include one or more primary interfaces configured to operate according to the same or one or more different primary communication technologies. For example, such primary communication technologies may include 4G, 3G and 2G. Additionally or alternatively, one or more clients may include one or more secondary interfaces configured to operate according to the same or one or more different secondary communication technologies. For example, such secondary communication technologies may include WIFI and Bluetooth. In summary, a client may include any number o f primary and secondary interfaces. All the primary interfaces may relate the same or one or more different communication technologies. All the secondary interfaces may relate to the same or one or more different communication technologies. Clients may transmit and receive data (e.g. content, instructions, requests) with the server via one or more of the clients' primary or secondary interfaces. Clients may transmit and receive data (e.g. content, instructions, and requests) with other clients via one or more of the clients' secondary interfaces.
[0198] In the above-described embodiments, the server may include an interface A configured to operate according to a primary communication technology. In some embodiments, a server may include one or more primary interfaces configured to operate according to the same or one or more different primary communication technologies. For example, such primary communication technologies may include 4G, 3G and 2G. The server may transmit and receive data (e.g. content, instructions, and requests) with clients via one or more of the server's primary interfaces. [0199] In some of the above-described embodiments, the server may include an interface B configured to operate according to a secondary communication technology. In some embodiments, a server may include one or more secondary interfaces configured to operate according to the same or one or more different secondary communication technologies. For example, such secondary communication technologies may include WIFI or Bluetooth. The server may transmit and receive data (e.g. content, instructions, and requests) with clients via one or more of the server's secondary interfaces.
[0200] In the above-described embodiments, the server comprises one or more communication interfaces. However, in some embodiments, the server may additionally or alternatively be in communication with one or more communication interfaces via one or more additional devices and/or networks. For example, the server device may not comprise an interface A or an interface B. Instead, the server may only comprise a single connection to a computer network, such as, for example, the internet. This single connection may be wired or wireless. Also in communication with the computer network may be a communication device (e.g. a base station) having one or more interface A. Accordingly, the server may transmit and receive data (e.g. content, instructions, and requests) with clients via its single connection to the computer network and the interface A of the communication device. In a further example, the computer network may additionally be in communication with a communication device (e.g. a WIFI hotspot) having one or more interface B. Accordingly, the server may transmit and receive data (e.g. content, instructions, and requests) with clients via the single connection to the computer network and the interface B of the communication device. In this way, it is to be understood that the server is 'in communication with' the interfaces of the communication devices. Accordingly, in an embodiment, the server may exchange data with a client via one or more networks and/or devices.
[0201] In the above-described embodiments, content is distributed to a client via one client (S4), two clients (S8 and S4), the server (S5), the server and a client (S7 and S4), the content provider (S9) or the content provider and the server (S6 and S5). However, it is to be understood that in some embodiments, content may be distributed to the client via any number or combination of clients, servers or content providers using the principles of the above-described embodiments. For example, content may be distributed via three or more clients, via two or more content providers or via one or more servers and one or more clients.
[0202] In the above-described embodiments, content may be relayed to a requesting client via one or more other clients or servers. It is noted that this relay operation may be performed across one or more different interface types. For example, a relaying client may receive content via its interface B but transmit the content via its interface A. Additionally or alternatively, the relaying client may receive content via one interface B (e.g. WIFI) but transmit the content via a different interface B (e.g. Bluetooth). In some embodiments, the server may operate in a corresponding way.
[0203] In the above-described embodiments, the communication system may include one server and a plurality of clients. However, in some embodiments, the communication system may include more than one server. In the event that a plurality of servers are provided, they may schedule content to clients in a coordinated way, such as, for example, they may handle requests in a particular order. Furthermore, in some embodiments, the communication system may include only one client. In this scenario, the client may receive content from either the server or the content provider.
[0204] In the above-described embodiments, the request for content is redirected (i.e. transmitted) from the client device directly to the server device. However, in some embodiments, the request may be redirected via an intermediary element, such as, for example, another communication device. For example, in one embodiment, the request is redirected via a load balancer. The load balancer may include a list of servers under its administrative domain. The load balancer may forward the request to one of the servers under its administrative domain, for example, one of the servers in its list. Accordingly content requests may be distributed around multiple servers in order to share among the servers the processing load of handling requests. For example, multiple load balancers may be deployed in various locations around the world and be responsible for distributing requests to those servers in their particular geographical region.
[0205] In the above-described embodiments, a client may receive or obtain content from a number of different sources, such as, for example, a server, a content provider or another client. In some embodiments, the client may receive content from one or more of those sources via one or more intermediary devices or networks. For example, a client may be instructed to obtain content from another client via a wireless access point or an access network. In an embodiment, the server instructs the client to receive content from a particular source via an intermediary device or network. It is to be understood that the process of one client downloading data from another client via one or more intermediary devices or networks may be referred to as sideloading. Also, in-direct sideloading, i.e. sideloading from one client to another client via an intermediary, may be described as first -order sideloading. Further, direct sideloading, i.e. sideloading from one client directly to another client, may be described as second-order sideloading.
[0206] In the above-described embodiments, communication between the various elements of the communication system is wireless. However, in some embodiments, one or more communication paths may be via wired technology rather than wireless technology. In such scenarios, the wired links may be used in preference to wireless links if, for example, they provide a better data rate or consume less power. Further, certain wired links may be used in preference to other wired links, for example, because they cause less signal attenuation due to shorter wire length. Accordingly, some embodiments may perform fast and efficient content distribution in a mobile wireless environment whereas some other embodiments may perform fast and efficient content distribution in a fixed wired environment. [0207] In the above-described embodiments, situations arise where requested content may be delivered to a client via one or more different paths. For example, the requested content may be transmitted from the server via interface A, obtained from the content provider via interface A, or obtained from another client via interface B. In some embodiments, paths involving a secondary interface, i.e. an interface configured to operate according to a secondary communication technology, may be used in preference to paths involving a primary interface. In some embodiments, primary interfaces may only be used if content may not be obtained via a secondary interface. [0208] In the above-described embodiments, a primary communication path is a long- range wireless communication path, such as, for example, a 3G cellular network. In an embodiment, the secondary communication path is a short-range wireless communication path, such as, for example, a WIFI network and/or a Bluetooth network. In an embodiment, a primary interface (interface A) is only suitable for use with a primary communication path and a secondary interface (interface B) is only suitable for use with a secondary communication path. In an embodiment, a primary communication path is characterized as a more reliable communication path than a secondary communication path. For example, the secondary interface may be characterized by probabilistic network connectivity. For example, a probabilistic connection may one which may not be turned on and/or one that may not be stable enough for transmission due to mobility, such as, for example, a WIFI connection.
[0209] In the above-described embodiments, content may be scheduled for distribution to a client in such a way as to reduce power consumption in the client. For example, content may be routed to a client via a neighbor in order to use the client's interface B, rather than interface A. In some embodiments, content may be scheduled for distribution to a client in such a way as to reduce power consumption in one or more clients. For example, incentive parameters in the incentive controller of the server may indicate power consumption in two particular clients must be reduced. Therefore, the scheduler may choose not to route content through one or both of these two particular clients. [0210] In the above-described embodiments, the server is described as a single physical device. However, in some other embodiments, the server could be distributed among two or more separate physical devices. For example, the data repository, the content parser and the metadata repository may be provided in a first physical device and the remaining parts of the server may be provided in a separate second physical device which is in communication with the first physical device, for example, via a high speed Ethernet connection.
[0211] An advantage of some embodiments of the invention may be described as follows. [0212] In a conventional system, multiple cellular phones are located in close proximity to each other, such as, for example, at a flash crowd event like a formula one grand prix motor racing event. Each phone is capable of requesting and obtaining internet content via a 3G connection. However, since multiple cellular phones are simultaneously requesting content the speed at which content is distributed to each phone via 3G is slow. Furthermore, even though each phone may include a WIFI facility, there are no WIFI connections to the internet available. As more people join the event so the content distribution speed slows down even more due to increased demand.
[0213] In contrast, in an embodiment, each phone may also exchange content with other phones at the event. Since all phone users are at an event some of the content downloaded relates to the event. Therefore, different phones are requesting the same content. Content can be shared between different phones using their WIFI facilities. Firstly, this represents a speed-up in content delivery time since WIFI is a faster delivery mechanism than 3G. Secondly, content delivered via 3G is delivered faster because of the reduction in 3G traffic resulting from some phones obtaining content from other phones via WIFI. Thirdly, power consumption in phones is reduced since content download times are reduced. Fourthly, power consumption in phones is reduced since they are downloading via less power intensive WIFI rather than more power intensive 3G. Fifthly, as the number of people at the event increases, so the number of content distribution path options increases resulting in a reduction in content delivery time and power consumption of phones. [0214] Next will be described a mobile communication device and its operation with reference to Figures 14 and 15. The mobile communication device may provide an operating environment for some embodiments. In an embodiment, the mobile communication device of Figures 14 and 15 may include a client. In an embodiment, the mobile communication device of Figures 14 and 15 may include a server. In some other embodiments, however, the server may include one or more personal computers.
[0215] Figure 14 represents a mobile communication device 802 which may include a keypad 804, a touch-screen 806, a microphone 808, a speaker 810 and an antenna (not shown). The device 802 is capable of being operated by a user to perform a variety of different functions, such as, for example, hosting a telephone call, sending an SMS message, browsing the internet, sending an email and providing satellite navigation.
[0216] Figure 15 shows a schematic view of some of the internal hardware elements of the device 802. With reference to Figure 15, the device 802 may include hardware to perform telephony functions, together with an application processor and corresponding support hardware to enable the device to have other functions, such as messaging, internet browsing, email functions, satellite navigation and the like.
[0217] In Figure 15, the telephony hardware is represented by the RF processor 814 which provides an RF signal to the antenna for the transmission of telephony signals, and the receipt therefrom. Additionally provided is baseband processor 816, which provides signals to and receives signals from the RF processor 814. The baseband processor 816 also interacts with a subscriber identity module 818, as is well known in the art. The telephony subsystem of the device 802 is beyond the scope of the present invention.
[0218] The keypad 804 and the touch-screen 806 are controlled by an application processor 820. A power and audio controller 822 is provided to supply power from a battery (not shown) to the telephony subsystem, the application processor 820, and the other hardware. The power and audio controller 822 also controls input from the microphone 808, and audio output via the speaker 810. [0219] Also provided is a WiFi processor and antenna 824 which is controlled by the application processor 820. The WiFi processor and antenna 824 is capable of sending and receiving data using WiFi communication technology. Also provided is a Bluetooth processor and antenna 826 which is controlled by the application processor 820. The Bluetooth processor and antenna 826 is capable of sending and receiving data using Bluetooth communication technology.
[0220] In order for the application processor 820 to operate, various different types of memory are provided. Firstly, the device 802 includes Random Access Memory (RAM) 828 connected to the application processor 820 into which data and program code can be written and read from at will. Code placed anywhere in RAM 828 can be executed by the application processor 820 from the RAM 828. RAM 828 may represent a volatile memory of the device 802.
[0221] Secondly, the device 802 is provided with a long-term storage 830 connected to the application processor 820. The long-term storage 830 may include three partitions, an operating system (OS) partition, a system partition and a user partition. The long-term storage 830 may represent a non-volatile memory of the device 802. In an example, the OS partition contains the firmware of the computing device which includes an operating system. Other computer programs may also be stored on the long-term storage 830, such as application programs, and the like. In particular, application programs which are mandatory to the device, such as, in the case of a communication device, communications applications and the like are typically stored in the system partition. The application programs stored on the system partition would typically be those which are bundled with the device by the device manufacturer when the phone is first sold. Application programs which are added to the device by the user would usually be stored in the user partition.
[0222] As stated, the representation of Figure 15 is schematic. In practice, the various functional components illustrated may be substituted into one and the same component. For example, a single processor may provide the functionality of one or more of the RF processor, the baseband processor, the WiFi processor, the Bluetooth processor and the application processor. Furthermore, in some embodiments, one or more elements of Figure 15 may be omitted. [0223] While the invention has been particularly shown and described with reference to specific embodiments, it should be understood by those skilled in the art that one or more features from one embodiment may be combined with one or more features from one or more other embodiments in order to form further embodiments. It is to be understood that these further embodiments form part of the present disclosure.
[0224] While the invention has been particularly shown and described with reference to specific embodiments, it should be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. The scope of the invention is thus indicated by the appended claims and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced.

Claims

A method for content distribution in a communication system, the communication system comprising a server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the method comprising:
transmitting, from a first client device to the server device, a request to receive content; and
transmitting, from the server device to the first client device, at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, the at least one instruction being generated based on the requested content and information relating to at least one client device obtained by the server device.
The method of claim 1, wherein transmitting, from a first client device to the server device, a request to receive content comprises generating, in the first client device, the request to receive content, the request having an address of a content provider of the requested content as a destination address and redirecting the request to the server device.
The method of claim 1 or 2, further comprising obtaining, by the first client device, requested content as instructed by the at least one instruction received by the first client device from the server device.
The method of claim 3, wherein the first client device obtains requested content from at least one of the one or more other client devices though at least one intermediary device.
The method of any preceding claim, further comprising transmitting requested content from the server device to at least one client device based on the requested content and information relating to at least one client device obtained by the server device.
6. The method of claim 5, wherein the server device transmits content to the at least one client device via one or more communication interfaces.
7. The method of claims 5 or 6, further comprising obtaining, by the server device, requested content from a content provider of the requested content before transmitting requested content from the server device to the at least one client device.
8. The method of any preceding claim, further comprising transmitting, from the server device to at least one of the one or more other client devices, at least one instruction for the at least one of the one or more other client devices to obtain requested content from one or more other client devices via one or more communication interfaces of the at least one of the one or more other client devices, the at least one instruction being generated based on the requested content and information relating to at least one client device obtained by the server device.
9. The method of claim 8, further comprising obtaining, by the at least one of the one or more other client devices, requested content as instructed by the at least one instruction transmitted from the server device to the at least one of the one or more other client devices.
10. The method of any preceding claim, further comprising transmitting, from at least one client device to the server device, information relating to at least one client device.
11. The method of any preceding claim, wherein the information relating to at least one client device indicates at least one of the following:
i. connectivity of at least one client device;
ii. location of at least one client device;
iii. movement of at least one client device;
iv. content stored on at least one client device,
v. content requested by at least one client device,
vi. available capacity of at least one client device, vii. a cache level of at least one client device.
12. The method of any preceding claim, wherein the information relating to at least one client device is stored on the server device.
13. The method of any preceding claim, further comprising:
transmitting, from at least one client device to the server device, information relating to delivery status of content requested by the first client device, and
monitoring, in the server device, the status of delivery of the requested content to the first client device based on the received information relating to delivery status.
14. The method of any preceding claim, wherein the server device is in communication with a communication device having at least one communication interface and the server device communicates with at least one client device via the at least one communication interface of the communication device.
15. The method of any preceding claim, wherein at least one client device is a content provider of the requested content.
16. The method of any preceding claim, wherein the request is generated by an application of the first client device and content obtained by the first client device is provided to the application as having been obtained directly from a content provider of the requested content.
17. The method of any preceding claim, further comprising:
transmitting a first identifier from the server device to the first client device, including an encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the first identifier, and
verifying the authenticity of the at least one instruction at the first client device based on a comparison between the first identifier and a second identifier obtained by decrypting the encrypted value.
18. The method of claim 17, further comprising:
transmitting a third identifier from the server device to another client device; including a second encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the third identifier;
relaying the at least one instruction from the first client device to the other client device to initiate content distribution from the other client device to the first client device; and,
verifying the authenticity of the at least one instruction at the other client device based on a comparison between the third identifier and a fourth identifier obtained by decrypting the second encrypted value.
19. A communication system for content distribution, the communication system comprising a server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies,
wherein a first client device is configured to transmit a request to receive content to the server device; and
wherein the server device is configured to generate at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, based on the requested content and information relating to at least one client device obtained by the server device, and the server device is configured to transmit the at least one instruction to the first client device.
20. The communication system of claim 19, wherein the first client device is configured to generate the request to receive content, the request having an address of a content provider of the requested content as a destination address, and redirect the request to the server device, in order to transmit the request to the server device.
21. The communication system of claims 19 or 20, wherein the first client device is configured to obtain requested content as instructed by the at least one instruction received by the first client device from the server device.
22. The communication system of claim 21, wherein the first client device is configured to obtain requested content from at least one of the one or more other client devices though at least one intermediary device.
23. The communication system of any one of claims 19 to 22, wherein at least one client device is a content provider of the requested content.
24. The communication system of any one of claims 19 to 23, wherein an application of the first client device is configured to generate the request and the first client device is configured to provide content obtained by the first client device to the application as having been obtained directly from a content provider of the requested content.
25. The communication system of any one of claims 19 to 24, wherein the server device is configured to transmit a first identifier to the first client device, and the server is additionally configured to include an encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the first identifier, and
wherein the first client device is configured to receive the first identifier from the server device and the first client device is additionally configured to verify the authenticity of the at least one instruction received from the server device based on a comparison between the first identifier and a second identifier obtained by decrypting the encrypted value.
26. The communication system of claim 25, wherein the server device is configured to transmit a third identifier to another client device, and the server device is additionally configured to include a second encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the third identifier,
wherein the first client device is configured to relay the at least one instruction to the other client device to initiate content distribution from the other client device to the first client device, and wherein the other client device is configured to receive the third identifier from the server device and the other client device is additionally configured to verify the authenticity of the at least one instruction at the other client device based on a comparison between the third identifier and a fourth identifier obtained by decrypting the second encrypted value.
27. The communication system of any one of claims 19 to 26, wherein the server device is the server device of any one of claims 29 to 46.
28. The communication system of any one of claims 19 to 27, wherein the client device is the client device of any one of claims 49 to 52.
29. A server device for controlling content distribution in a communication system, the communication system comprising the server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the server device comprising:
a receiver for receiving a request for content from a first client device;
a scheduler for generating at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, based on the requested content and information relating to at least one client device obtained by the server device; and
a transmitter for transmitting the at least one instruction to the first client device.
30. The server device of claim 29, wherein the request has an address of a content provider of the requested content as a destination address.
31. The server device of claim 29 or 30, wherein the. scheduler is configured to generate at least one instruction for at least one of the one or more other client devices to obtain requested content from one or more other client devices via one or more communication interfaces of the at least one of the one or more other client devices, based on the requested content and information relating to at least one client device obtained by the server device; and
wherein the transmitter is configured to transmit the at least one instruction to the at least one of the one or more other client devices.
32. The server device of any one of claims 29 to 31, further comprising a data repository for storing content; and
wherein, if requested content is stored in the data repository, the scheduler is configured to cause the transmitter to transmit requested content to at least one client device based on the requested content and information relating to at least one client device obtained by the server device.
33. The server device of claim 32, wherein the scheduler is configured to cause the transmitter to transmit requested content to the at least one client device via one or more communication interfaces.
34. The server device of claim 32 or 33, wherein the server device is configured to obtain requested content from a content provider of the requested content and store the obtained requested content in the data repository.
35. The server device of any one of claims 32 to 34, further comprising a content parser configured to parse one or more portions of content stored in the data repository and generate at least one piece of metadata for one or more portions of parsed content, wherein the scheduler is configured to generate at least one instruction for at least one client device based on at least one piece of metadata.
36. The server device of any one of claims 29 to 35, further comprising a connectivity controller for storing connectivity information relating to at least one client device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the connectivity information stored in the connectivity controller.
37. The server device of any one of claims 29 to 36, further comprising a location controller for storing location information relating to at least one client device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the location information stored in the location controller.
38. The server device of any one of claims 29 to 37, further comprising a cluster controller for defining at least one cluster of client devices based on information relating to at least one client device obtained by the server device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the at least one cluster defined by the cluster controller.
39. The server device of any one of claims 29 to 38, further comprising an incentive controller for storing at least one incentive parameter relating to at least one client device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the at least one incentive parameter stored in the incentive controller.
40. The server device of claim 39, wherein the at least one incentive parameter includes at least one of the following:
i. a cache level,
ii. an available capacity.
41. The server device of any one of claims 29 to 40, further comprising a diffusion controller configured to predict a future position of at least one client device based on information relating to at least one client device obtained by the server device, wherein the scheduler is configured to generate at least one instruction for at least one client device based on the predicted future position.
42. The server device of any one of claims 29 to 41, wherein the receiver is additionally configured to receive information relating to at least one client device from at least one client device.
43. The server device of claim 29 to 42, wherein the information relating to at least one client device comprises at least one of the following:
i. connectivity of at least one client device; ii. location of at least one client device;
iii. movement of at least one client device;
iv. content stored on at least one client device,
v. content requested by at least one client device,
vi. available capacity of at least one client device,
vii. a cache level of at least one client device.
44. The server device of any one of claims 29 to 43, wherein the receiver is additionally configured to receive from at least one client device information relating to delivery status of the content requested by the first client device and the scheduler is configured to monitor the status of delivery of the requested content to the first client device based on the received information relating to delivery status.
45. The server device of any one of claims 29 to 44, wherein the server device is configured to transmit a first identifier to the first client device, and the server device is additionally configured to include an encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the first identifier.
46. The server device of claim 45, wherein the server device is configured to transmit a third identifier to another client device, and the server device is additionally configured to include a second encrypted value with the at least one instruction transmitted from the server device to the first client device, the encrypted value being calculated using the third identifier.
47. A method for controlling content distribution in a communication system, the communication system comprising a server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the method comprising:
receiving, at a first communication interface of the server device, a request for content from a first client device; generating, in the server device, at least one instruction for the first client device to obtain requested content from one or more other client devices via one or more communication interfaces of the first client device, based on the requested content and information relating to at least one client device obtained by the server device; and
transmitting the at least one instruction from the server device to the first client device.
48. The method of claim 47, wherein the request has as a destination address an address of a content provider of the requested content.
49. A client device for requesting content in a communication system, the communication system comprising the server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the client device comprising:
a transmitter configured to transmit to the server device a request to receive content;
a receiver configured to receive from the server device at least one instruction for the client device to obtain requested content from one or more other client devices via one or more communication interfaces of the client device.
50. The client device of claim 49, further comprising a request generator configured to generate the request to receive content, the request having as a destination address an address of a content provider of the requested content; and
wherein the transmitter is configured to redirect the request to the server device in order to transmit the request to the server device.
51. The client device of claim 49 or 50, further comprising a content fetcher configured to cause the client device to obtain requested content as instructed by the at least one instruction received from the server device.
52. The client device of any one of claims 49 to 51, wherein the client device is configured to receive a first identifier from the server device and the client device is additionally configured to verify the authenticity of the at least one instruction received from the server device based on a comparison between the first identifier and a second identifier obtained by decrypting the encrypted value.
53. A method for requesting content in a communication system, the communication system comprising the server device and a plurality of client devices, each client device having multiple communication interfaces configured to operate according to different communication technologies, the method comprising:
transmitting, in a client device, to the server device a request to receive content; and
receiving, in the client device, from the server device at least one instruction for the client device to obtain requested content from one or more other client devices via one or more communication interfaces of the client device.
54. The method of claim 53, wherein transmitting, in a client device, to the server device a request to receive content comprises generating, in the client device, the request to receive content, the request having as a destination address an address of a content provider of the requested content, and redirecting, in the client device, the request to the server device.
55. The method of claim 53 or 54, further comprising obtaining, in the client device, requested content as instructed by the at least one instruction received from the server device.
PCT/SG2011/000346 2011-10-03 2011-10-03 "a communication system for content distribution, a server device for controlling content distribution, a client device for requesting content, and corresponding methods" WO2013052004A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/SG2011/000346 WO2013052004A1 (en) 2011-10-03 2011-10-03 "a communication system for content distribution, a server device for controlling content distribution, a client device for requesting content, and corresponding methods"

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/SG2011/000346 WO2013052004A1 (en) 2011-10-03 2011-10-03 "a communication system for content distribution, a server device for controlling content distribution, a client device for requesting content, and corresponding methods"

Publications (1)

Publication Number Publication Date
WO2013052004A1 true WO2013052004A1 (en) 2013-04-11

Family

ID=48043997

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/SG2011/000346 WO2013052004A1 (en) 2011-10-03 2011-10-03 "a communication system for content distribution, a server device for controlling content distribution, a client device for requesting content, and corresponding methods"

Country Status (1)

Country Link
WO (1) WO2013052004A1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282751A1 (en) * 2013-03-12 2014-09-18 Samsung Electronics Co., Ltd. Method and device for sharing content
US9332081B2 (en) 2013-08-30 2016-05-03 Google Inc. Anonymous cross-device linking using temporal identifiers
GB2537623A (en) * 2015-04-20 2016-10-26 Fujitsu Ltd Content delivery over D2D links
US10460098B1 (en) 2014-08-20 2019-10-29 Google Llc Linking devices using encrypted account identifiers

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014483A1 (en) * 2001-04-13 2003-01-16 Stevenson Daniel C. Dynamic networked content distribution
US20040103204A1 (en) * 2002-11-27 2004-05-27 Docomo Communications Laboratories Usa, Inc. Method of connecting a client device with a router in a wireless communication network
US20060075082A1 (en) * 2004-09-02 2006-04-06 Futoshi Haga Content distribution system and content distribution method
US20070256141A1 (en) * 2006-04-27 2007-11-01 Toshihisa Nakano Content distribution system
US20100095222A1 (en) * 2007-03-08 2010-04-15 Thomson Licensing Corporation Method, apparatus and system for coordinated content distribution workflow

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014483A1 (en) * 2001-04-13 2003-01-16 Stevenson Daniel C. Dynamic networked content distribution
US20040103204A1 (en) * 2002-11-27 2004-05-27 Docomo Communications Laboratories Usa, Inc. Method of connecting a client device with a router in a wireless communication network
US20060075082A1 (en) * 2004-09-02 2006-04-06 Futoshi Haga Content distribution system and content distribution method
US20070256141A1 (en) * 2006-04-27 2007-11-01 Toshihisa Nakano Content distribution system
US20100095222A1 (en) * 2007-03-08 2010-04-15 Thomson Licensing Corporation Method, apparatus and system for coordinated content distribution workflow

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282751A1 (en) * 2013-03-12 2014-09-18 Samsung Electronics Co., Ltd. Method and device for sharing content
US9332081B2 (en) 2013-08-30 2016-05-03 Google Inc. Anonymous cross-device linking using temporal identifiers
US9774594B2 (en) 2013-08-30 2017-09-26 Google Inc. Anonymous cross-device linking using temporal identifiers
US10460098B1 (en) 2014-08-20 2019-10-29 Google Llc Linking devices using encrypted account identifiers
GB2537623A (en) * 2015-04-20 2016-10-26 Fujitsu Ltd Content delivery over D2D links

Similar Documents

Publication Publication Date Title
US10271253B2 (en) Mapping scheme employed in an information centric network to manage domain-based security and mobility
Su et al. A secure content caching scheme for disaster backup in fog computing enabled mobile social networks
EP2533465B1 (en) Method and terminal for access control of network service
EP3273657B1 (en) Methods and systems for dynamic media content output for mobile devices
KR102132266B1 (en) Secondary node type based control for data streaming
AU2013226494A1 (en) Method and device for rekeying in a radio network link layer encryption system
EP3366019B1 (en) Method and apparatus for secure content caching and delivery
WO2013052004A1 (en) "a communication system for content distribution, a server device for controlling content distribution, a client device for requesting content, and corresponding methods"
US8504655B1 (en) Proxy delegation for content delivery
JP2004248169A (en) Communications control system, communication control method and program, and communication terminal
Martins et al. Iris: Secure reliable live-streaming with opportunistic mobile edge cloud offloading
RU2365044C2 (en) Method and device for keys delivery
KR101500118B1 (en) Data sharing method and data sharing system
EP3017382B1 (en) Caching content
JP2005275690A (en) Authentication substituting method, distribution management device, and program for authentication substitution method
CN103095729B (en) Based on web content switched system and the changing method thereof of Session Initiation Protocol
CN103621045A (en) Content distribution
JP4440057B2 (en) Communication management system and communication management apparatus
Schatz et al. Hydra: practical metadata security for contact discovery, messaging, and voice calls
Moon et al. Cedos: A network architecture and programming abstraction for delay-tolerant mobile apps
US10863323B1 (en) Techniques for correlating delivery receipt messages in a communications network
US10728719B1 (en) Techniques for combining segmented messages in a communications network
Sabra et al. Using group anonymity to hide the identity of VoIP mobile users communicating over hybrid networks while preserving quality of service
Schmidt et al. Distributed SIP conference management with autonomously authenticated sources and its application to an H. 264 videoconferencing software for mobiles
CN109155913A (en) The determination method and device of method for connecting network, security node

Legal Events

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

Ref document number: 11873583

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 19/08/2014)

122 Ep: pct application non-entry in european phase

Ref document number: 11873583

Country of ref document: EP

Kind code of ref document: A1