US20010027479A1 - Distributed client-based data caching system - Google Patents

Distributed client-based data caching system Download PDF

Info

Publication number
US20010027479A1
US20010027479A1 US09/817,953 US81795301A US2001027479A1 US 20010027479 A1 US20010027479 A1 US 20010027479A1 US 81795301 A US81795301 A US 81795301A US 2001027479 A1 US2001027479 A1 US 2001027479A1
Authority
US
United States
Prior art keywords
peer
client
data package
data
peer client
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
US09/817,953
Other versions
US6374289B2 (en
Inventor
Hubert Delaney
Adi Ruppin
Lior Hass
Ofer Faigon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
RPX Corp
Original Assignee
Backweb Tech Ltd
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22604301&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=US20010027479(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Backweb Tech Ltd filed Critical Backweb Tech Ltd
Priority to US09/817,953 priority Critical patent/US6374289B2/en
Publication of US20010027479A1 publication Critical patent/US20010027479A1/en
Application granted granted Critical
Publication of US6374289B2 publication Critical patent/US6374289B2/en
Assigned to BACKWEB TECHNOLOGIES LTD. reassignment BACKWEB TECHNOLOGIES LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DELANY, HUBERT, FAIGON, OFER, HASS, LIOR, RUPPIN, ADI
Assigned to RPX CORPORATION reassignment RPX CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BACKWEB TECHNOLOGIES LTD.
Assigned to JEFFERIES FINANCE LLC reassignment JEFFERIES FINANCE LLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: RPX CORPORATION
Anticipated expiration legal-status Critical
Assigned to RPX CORPORATION reassignment RPX CORPORATION RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: JEFFERIES FINANCE LLC
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9537Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4788Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/632Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing using a connection between clients on a wide area network, e.g. setting up a peer-to-peer communication via Internet for retrieving video segments from the hard-disk of other client devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091Interfacing with client-server systems or between P2P systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/288Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
    • 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/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • 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
    • 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/568Storing data temporarily at an intermediate stage, e.g. caching

Definitions

  • the present invention relates to a distributed client-based data caching system Specifically, the system of the present invention enables data packages to be served to a client through a flexible, non-deterministic distributed system of peer clients which cache the data packages, in order to maximize efficiency and speed for serving the data package to the client.
  • Networks which connect two or more computers enable client computers to obtain data packages, such as documents, images, messages, data packages or other types of data, from remote storage media which are not installed on the client computer itself. Instead, these remote storage media are managed and operated through a remote computer, known as a server computer or simply as a “server” (in the same vein, the client computer is also often termed only a “client”).
  • a remote computer known as a server computer or simply as a “server” (in the same vein, the client computer is also often termed only a “client”).
  • the advantage of such a system is that the client computer can potentially obtain data from any server on the network.
  • the disadvantage of the system is the requirement for sufficient bandwidth on the network to enable data to be transmitted from the server to the client. Furthermore, if the load is not evenly distributed between servers on the network, one server may become overwhelmed with requests, thereby decreasing the speed and efficiency of retrieval. Thus, currently many networks cannot provide rapid and efficient data retrieval due to the heavy demands placed upon the available bandwidth.
  • Proxy servers are often installed to conserve bandwidth on an Internet connection or on connections to other LANs (local area networks). These proxy servers cache frequently accessed data, thereby reducing the load on the main server, and distributing demand for bandwidth more evenly across the network.
  • proxy servers are typically expensive to maintain.
  • proxy servers require dedicated computers to be installed and configured. Each computer on the LAN has to be separately configured in order to communicate with the proxy server. Such configuration is deterministic, such that each client must be configured to communicate with each proxy server separately.
  • proxy servers have many drawbacks.
  • a more useful solution would enable Intranets to reap the benefits of the proxy server, without requiring dedicated machines and without requiring any special installation or configuration. Furthermore, such a solution would not be deterministic, such that each client could communicate with more than one server according to the load on each server, rather than according to the configuration of the client itself. Unfortunately, such a solution is not currently available.
  • the present invention is of a distributed client-based data caching system, which enables data to be served to a client through a flexible, non-deterministic distributed system of caching entities, in order to maximize efficiency and speed for serving the document to the client.
  • the caching entities are peer clients which serve the data to each other, thereby reducing the amount of bandwidth required to obtain data from an external server.
  • a method for distributing data packages across a network featuring an external server for serving at least one data package, the external server being a dedicated server, the steps of the method being performed by a data processor, the method comprising the steps of: (a) providing a plurality of peer clients attached to the network and a list of data packages being stored by each of the plurality of peer clients, each data package on the list of data packages having an entry, the entry indicating a unique identifier for the data package and a location of the data package in at least one of the plurality of peer clients; (b) examining the list of data packages by a first peer client to find an entry for a data package; and (c) if the entry for the data package is present on the list of data packages of the first peer client, retrieving the data package from the location at another of the plurality of peer clients according to the entry for the data package.
  • the list of data packages is stored on the external server.
  • the list of data packages is stored on at least the first peer client.
  • the method further comprises the steps of: (d) sending a request message for the data package by the first peer client to at least one other peer client; and (e) if a response message is received by the first peer client from the at least one other peer client, retrieving the data package from the at least one other peer client by the first peer client.
  • the request message and the response message are transmitted to the plurality of peer clients by broadcasting.
  • the request message and the response message are transmitted to the plurality of peer clients by multicasting.
  • the request message and the response message are transmitted to the plurality of peer clients by polling each peer client individually.
  • the method further comprises the step of: (f) obtaining the data package by the first peer client from the external server.
  • the method further comprises the step of sending a response message by the first peer client to the at least one other peer client substantially before the first peer client obtains the data package from the external server.
  • the list of data packages is stored on each of the plurality of peer clients, and the method further comprises the steps of: (g) receiving the response message from the first peer client by the at least one other peer client; and (h) altering the list of data packages being stored by the at least one other peer client for indicating the location of the data package according to the response message.
  • the list of data packages is stored on each of the plurality of peer clients, and the method further comprises the steps of: (g) receiving the response message from the first peer client by the at least one other peer client; and (h) altering the list of data packages being stored by the at least one other peer client for indicating the location of the data package according to a probabilistic function.
  • Pn(x) is a probability that the new location is substituted for the old location
  • Po(x) is a probability that the old location is retained
  • “generation” indicates how many times the location had been previously changed.
  • an upper limit is predetermined for a number of the plurality of peer clients served substantially simultaneously by the at least one other peer client, such that if a number of the plurality of peer clients served substantially simultaneously by the at least one other peer client is greater than the upper limit, the method further comprises the step of: (d) sending a busy message from the at least one other peer client to the first peer client.
  • the external server is a Web server
  • the plurality of peer clients is a plurality of Web browsers.
  • the external servis a BackWebTM server
  • the plurality of peer clients is a plurality of BackWebTM clients.
  • the unique identifier for the data package is an MD5 digest of the data package.
  • the step of retrieving the data package is performed according to a protocol based on TCP/IP.
  • the protocol is HTTP.
  • the protocol is FTP.
  • protocol based on TCP/IP includes any such protocol, including but not limited to the HTTP (hypertext transfer protocol) and FTP (file transfer protocol) protocols.
  • data package refers to any discrete, identifiable unit of data, including but not limited to documents, images, messages, data packages or any other type of data.
  • computing platform refers to a particular computer hardware system or to a particular software operating system.
  • hardware systems include, but are not limited to, personal computers (PC), Apple MacintoshTM computers, mainframes, minicomputers and workstations, which are also non-limiting examples of data processors for operating a software application under an operating system.
  • software operating systems include, but are not limited to, UNIX, VMS, Linux, MacOSTM, DOS, one of the WindowsTM operating systems by Microsoft Inc. (Seattle, Wash., USA), including Windows NTTM, Windows 3.xTM (in which “x” is a version number, such as “Windows 3.1TM ⁇ ), Windows95TM and Windows98TM.
  • a software application could be written in a substantially suitable programming language, which could easily be selected by one of ordinary skill in the art.
  • the programming language chosen should be compatible with the operating system according to which the software application is executed. Examples of suitable programming languages include, but are not limited to, C, C++ and Java.
  • broadcast may also include “multicast” as well.
  • FIGS. 1A and 1B are schematic block diagrams of an exemplary basic system and method according to the present invention.
  • FIGS. 2 A- 2 E are schematic block diagrams of an exemplary request/response protocol and method according to the present invention.
  • FIG. 3 is a schematic block diagram of an exemplary preferred data-flow diagram according to the present invention.
  • FIG. 4 is a flowchart of a method for operating the system of the present invention with Web browsers.
  • FIGS. 5A and 5B are exemplary request and response messages according to the present invention.
  • the present invention is of a distributed client-based data caching system, which enables data to be served to a client through a flexible, non-deterministic distributed system of caching entities, in order to maximize efficiency and speed for serving the data to the client.
  • the caching entities are peer clients which serve the data to each other, thereby reducing the amount of bandwidth required to obtain data from an external server.
  • the system of the present invention enables clients to share data packages among themselves across their local network neighborhood, for example within a LAN, thereby eliminating the need for a specialized proxy server. Furthermore, the network traffic is not significantly affected, since modern network architectures are well suited for peer-to-peer communications. Most currently operating networks have a star topology, using switching hubs, in which communication between two peers does not affect simultaneous communication among other nodes on the network. Thus, the system of the present invention overcomes the drawbacks of a proxy server, yet does not add significant loads to the traffic on the network itself.
  • the software application attempts to locate the data package locally on the memory or on the disk or disks of the client. Then, if the data package is not found locally, the software application retrieves the data package from the appropriate server.
  • the operation of the system of the present invention adds an intermediate step.
  • an attempt is made to retrieve the data package from a peer client on the local network “neighborhood” before resorting to retrieving the data package from the server.
  • every client actually functions as a caching proxy. Once a client requires a data package, it queries all the hosts, which are actually peer clients, on the local network for that data package. If no neighboring peer client has the data package, the client retrieves the data package from the external server as usual. However, if a neighboring client already has the required data package, the requesting client will download this data package from the peer client rather than from the external server.
  • FIG. 1A is a schematic block diagram of an exemplary system according to the present invention
  • FIG. 1B is a flowchart of the operation of the system of FIG. 1A
  • FIG. 1A shows a system 10 which includes a plurality of peer clients 12 connected by a local network 14 of some type, for example a LAN, indicated by the heavier line in FIG. 1A.
  • Two peer clients 12 labeled as “peer client 1” 20 and “peer client 2” 22 , are shown for the purposes of illustration only and without intending to be limiting in any way.
  • Each peer client 12 is also connected to an external server 16 of some type by an external connection 18 . Although only one external server 16 is shown, a plurality of external servers could also be implemented.
  • External server 16 is a dedicated server, in the sense that this server has a primary or at least a substantially significant role as a server for data packages. As shown for the purposes of illustration, external connection 18 only connects to local network 14 at one point, although multiple such external connections could also be implemented (not shown). In addition, external connection 18 could also optionally connect each peer client 12 directly to server 16 (not shown).
  • peer client 12 such as peer client 12 looks for a data package in the local memory or disk cache of that particular peer client 12 . If the desired data package is not found on the local disk cache, then in step 2 , peer client 12 queries any other peer client(s) 12 on local network 14 to determine whether any other peer client 12 has a particular data package. For example, peer client 20 could query peer client 22 , to determine whether peer client 22 has the desired data package. In step 3 a, if peer client 22 has the desired data package, then peer client 20 obtains the data package from peer client 22 .
  • peer client 22 if peer client 22 does not have the desired data package, then peer client 20 obtains the data package from server 16 through external connection 18 .
  • every peer client 12 is also potentially a server which is internal to local network 14 , and hence could be described as an “internal server” to distinguish peer client 12 from external server 16 .
  • Each peer client 12 could also be described as a “caching entity” and the data stored by each client for serving to other peer clients 12 as “cached data” or “cached data packages”.
  • FIGS. 2 A- 2 D illustrate an exemplary embodiment of the system of the present invention for implementation with the software application of BackWebTM (BackWeb Technologies Ltd., Ramat Gan, Israel) on a local area network (LAN).
  • FIGS. 4 and 5A- 5 B illustrate an exemplary embodiment of the system of the present invention for implementation with a Web browser software application on the Internet.
  • FIG. 2A shows an exemplary local network 24 which features a plurality of peer clients 12 of which three are shown for the purposes of discussion only and without intending to be limiting in any way.
  • a peer client 26 labeled “A”
  • Local area network 24 features two other peer clients 12 : peer client 28 , labeled “B”, and peer client 30 , labeled “C”.
  • Peer client 26 must therefore first communicate a request to peer client 28 and peer client 30 to see if the desired data packages are available at either location, and then peer client 26 must obtain these data packages from peer client 28 or peer client 30 if the desired data packages are available.
  • two protocols are used for communication between peer clients on a local area network (LAN), a data package-exchange protocol and a control protocol.
  • the data package exchange protocol is used to transfer data packages between peer clients, once the desired data package has been located, and is described in greater detail with respect to FIG. 2B below.
  • the control protocol enables each peer client to efficiently build and maintain tables which describe the location of available data packages across the local area network, by exchanging messages.
  • Each peer client maintains two hash-tables which contain information about data package location: a local-data packages table and a network-data packages table.
  • the local-data packages table is a hash-table of data packages which reside on the storage medium or media of the peer client itself.
  • the network-data packages table is a hash-table of data packages which reside on the storage medium or media of other clients on the local network.
  • This table contains the local area network address of the peer client on which each data package is being stored.
  • the size of this hash-table is preferably limited in order to reduce memory consumption. More preferably, each entry in the table has a time-stamp, such that older entries are purged when the size of the table exceeds the upper permissible limit.
  • each data package has a unique identifier or “fingerprint” associated with it. More preferably, this unique identifier is an MD5 digest of the content of the data package (for a description of the MD5 specification, which is an industry standard and would therefore be obvious to one of ordinary skill in the art, see “RFC 1321” at http://ds.internic. net/rfc/rfc1321.txt).
  • any peer client knows both the unique identifier and the location of the data package on the local network, that client can then proceed to download the data package.
  • the peer client may not know the location of the desired data package, in which case the client must follow a control protocol according to the present invention in order to determine the location of the desired data package and to enable the client to build these hash tables with respect to future attempts to locate a data package.
  • control protocol is used to provide each client with knowledge about the locations of data packages across the local network.
  • control messages are preferably sent and received as broadcast or multicast packets.
  • Local area networks such as Ethernet networks support broadcast or multicast packets such that all peer clients on a local area network receive the broadcast or multicast packets. Effectively, a single packet can be sent to all peer clients by using broadcast or multicast, thereby reducing the amount of traffic on the network required as a result of transmitting the request message (see for example Chapter 12, “Broadcasting and Multicasting”, of TCP/IP Illustrated Volume, by W. Richard Stevens, Addison-Wesley, 1994).
  • the system of the present invention could poll each peer client individually with a control message for that peer client, although this is not preferred since such individually addressed messages would consume excessive amounts of available bandwidth. In such a situation, preferably polling would be restricted to a certain group of peer clients as internal servers, in order to reduce the amount of traffic on the local area network.
  • the decision to select either IP multicast or broadcast is made according to the configuration set by the network administrator for the local area network.
  • IP multicast is preferable in terms of load on the clients of the local network, but may not be supported on all platforms (operating systems).
  • the TTL or Time to Live may be configured. The TTL specifies the number of routers a packet can cross before being dropped. Configuring the TTL enables data package sharing to be expanded across subnet boundaries.
  • the control protocol of the present invention preferably operates as follows.
  • peer client “A” from FIG. 2A looks for a data package on the local storage medium or media.
  • peer client “A” since the data package was not found locally on the medium or media of peer client “A”, peer client “A” must download the data package and therefore preferably multicasts (or alternatively broadcasts) a request message.
  • a request message preferably contains a protocol identifying version number (PVN) for the control protocol of the present invention and a list of MD5 digests of the needed data packages, as shown in FIG. 2C.
  • PVN protocol identifying version number
  • a list of requested data packages is included in the request message rather than a single MD5 digest, in order to reduce the total number of request messages on the network.
  • step 3 the neighboring clients, shown as peer clients “B” and “C” in FIG. 2A, receive this request message and search for the requested data package in their local-data packages hash-table.
  • a peer client which does not find the data package locally does not reply, as shown in step 4 a.
  • the peer client sends a response message, preferably after waiting a short random time interval to determine whether another peer client will respond first. More preferably, the peer client does not distribute the response message if another client responded previously, in order to reduce unnecessary traffic on the local area network. Also more preferably, the peer client distributes the response message by broadcast or multicast.
  • peer client “A” requests a data package “W”
  • peer client “B” would reply with the response message, since peer client “B” has the data package stored locally.
  • peer client “C” would not reply with a response message, since peer client “C” does not have data package “W” stored locally.
  • peer client “A” requests a data package “X”
  • both peer client “B” and peer client “C” could respond. In this situation, preferably only peer client “B” or peer client “C” would respond, depending on which peer client had the shorter random interval for waiting before sending the response message.
  • responses are sent only for data packages with yet unknown locations. For example, suppose client “A” requests data packages “W”, “X”, “Y” and “Z”. Client “B” has data packages “W”, “X” and “Y”, and is the first to r, with a reply message indicating possession of data packages “W”, “X” and “Y”. Suppose another client, “C” has data packages “X”, “Y” and “Z”. Since it replied after client “B”, the response message from client “C” will only indicate possession of data package “Z” because this is the only data package with an as yet unknown location.
  • a response message optionally contains the identifying PVN, the list of MD5 digests of data packages that were found and a TCP port number, as shown in FIG. 2D.
  • the port number identifies on which TCP port the responding peer client is waiting for data package requests.
  • the response message optionally contains other indicators which enable the requesting client to retrieve one or more data packages from the responding peer.
  • response messages are also be broadcast for data packages which are currently being downloaded from an external server, for reasons described in greater detail below.
  • step 5 the peer client downloads the data package or data packages.
  • the requesting client either receives a reply and downloads the data packages from the client that replied; or, if a reply is not received within a certain period of time, proceeds to download these data packages from an external server. If the peer client is downloading a data package from another peer client as an internal server, the data package-exchange protocol is used to obtain the data package.
  • the data package-exchange protocol is based on some appropriate peer-to-peer communication protocol, including but not limited to the HTTP protocol (see RFC-2068, “Hypertext Transfer Protocol-HTTP/1.1”, available from http://ds.internic.net/rfc/rfc2068.txt as of Sep. 23, 1998).
  • a more complex implementation is employed, since such a simple implementation may cause multiple clients to fetch the same data packages from the external server simultaneously. This situation would arise if several peer clients need to download the same data packages at approximately the same time, which is a very probable scenario for push clients for which content delivery is triggered by an external server, since none of these clients would receive a response to its request. Instead, the other clients would still be downloading the data package when the new client request is broadcast, such that none of them would be ready to serve these data packages. Thus, many or even all of the clients would attempt to retrieve the data package from the external server and not from another peer client, thereby increasing the amount of traffic on the network and reducing the efficiency of operation of the system of the present invention.
  • the problem is solved by notifying other clients when a first client is downloading the data package from the external server, even if the process of retrieving the data package is not yet complete.
  • the first client which requires the data package obtains the data package from the external server.
  • Other clients which require the data package will then download it from the first client, even if the first client is still in the process of retrieving the data package from the external server.
  • the preferred embodiment of the method of the present invention is described in greater detail with regard to FIG. 2E.
  • step 1 the requesting client again transmits the request, again preferably by broadcasting or multicasting, and then waits for a response. If no response is received within a certain period of time, in step 2 the client transmits a response message as if replying to its own request, indicating that this client either has the data package, or in this case, that the client is retrieving the data package. In step 3 , the client retrieves the data package from the external server.
  • step 4 other clients create an entry in their network data packages hash table, indicating the location of the client which will be serving the data package. Thus, preferably only a single client accesses the external server for any given data package.
  • the client If a request is sent for multiple data packages, but a response is received indicating the location of only some of the data packages at a neighboring peer client or clients, the client first obtains these data packages from the neighboring peer client or clients. Next, the client then transmits the response message for the rest of the data packages, and proceeds to obtain the remaining data package or data packages from the external server. Thus, the client only obtains the data package or data packages from the external server which are not available locally, rather than obtaining all of the data packages from the external server, thereby reducing network traffic.
  • the process of downloading data package from peer clients is optimized to reduce the amount of time required for downloading, the load on each individual client and the overall network traffic. Such optimization is performed as follows.
  • each client is bound, such that each client is only able to serve a fixed, limited number of other clients simultaneously. More preferably, the default limit is three other clients, for example, or some another appropriate number which is preferably configured by the user or by the network administrator. If an additional client attempts to download a data package from a client which is already serving the maximum number of other clients will receive a “busy” message. This feature limits the load on each individual client.
  • the present invention is able to optimize the selection of the best client from which the data package should be obtained. For example, if client “A” had already downloaded a larger portion of the required data package than client “B”, transferring the data package from client “A” is more optimal. Such clients are preferentially selected to serve data packages, since these clients will be able to serve the data package after a shorter time period has elapsed. Such preferential selection occurs by shortening the time period for waiting before these clients respond, thereby increasing the likelihood that they will serve the data packages. For this reason, the client preferably calculates the random delay before responding such that the delay is inversely proportional to the percentage of the data package which has been already downloaded. In addition, the random delay is preferably proportional to the number of clients being served at the moment, in order to decrease the likelihood of overloading already busy clients.
  • the entries of the locations of data packages in the network data packages table are updated according to a probabilistic function.
  • a probabilistic function is preferred in order to prevent all of the clients from registering a single client as the server for any particular data package, for example.
  • the remaining clients listening across the network update the entry for this data package in their network data packages table, by adding the IP address, or some other type of address according to the addressing system employed by the network, of the client which can serve the data package to this table.
  • the clients would store only the last advertised location of each data package, and therefore many or all clients might attempt to obtain the data package from a single client as the internal server, thereby overloading that client.
  • the following probabilistic algorithm is used to determine the particular client address which is stored in the network data packages table.
  • Pn(x) is the probability that a new IP address is substituted for the old IP address
  • Po(x) is the probability that the old IP address is retained
  • “generation” is a number indicating how many times this address had been previously changed.
  • client “A” responds indicating it has data package “X”
  • initially all other peer clients store the IP address of client “A” as the location of data package “X”.
  • client “B” broadcasts a response also indicating that client “B” has data package “X”
  • the probability that any one client now changes the IP address for the location of data package “X” is 50%. In other words, about half of the clients should now point to client “A” and about half should point to client “B”.
  • Such a substantially even distribution of load across multiple clients should produce data-flow with a tree-shaped topology, as shown in FIG. 3, rather than a random topology, thus optimizing the average download time and the load on the serving clients.
  • client “A” sends a broadcast or multicast message indicating that the package is in the process of being downloaded. Therefore, preferably only a single client “B” polls client “A” for each data package, for example. Other clients preferably automatically receive any responses from that polling action through the broadcast or multicast transmission, and thus will not be forced to poll for themselves.
  • the polling (request/response) traffic is optimized since there is usually no need to transmit both a request and a response for each data package needed by each client. Such optimization is possible since each client preferably receives substantially all of the request/response communication of all the other clients and “remembers” the location of the data packages in the network-data packages table.
  • the actual process for receiving a data package from an internal server is performed according to the data package exchange protocol, by using the HTTP protocol or some other suitable peer-to-peer communication protocol.
  • the data package transfer software application of the present invention preferably features a timer, for detection of an aborted transfer or a very slow data package transfer, for example. The timer determines when such a transfer has timed out. If a time-out occurs, the requesting client preferably repeats the whole process. If the transfer remains unsuccessful after a plurality of attempts, the client preferably ceases to attempt to transfer the data package from the peer client as the internal server, and instead transfers the data package or data packages directly from the external server.
  • the requesting client receives a message indicating that the data package is not ready, as well as an indication of the fraction of the data package already downloaded. The requesting client continues polling the serving client until the data package download is complete. If the download becomes substantially slower or is otherwise interrupted or terminated for a long period of time, the requesting client behaves as if a time-out occurred.
  • substantially automatic detection of peer clients is supported. Such automatic detection enables each peer client to detect the presence of other peer clients on the network. If such peer clients are not found, preferably the system of the present invention is disabled, since the operation of the system as described above would only prolong the time period required to download a data package if no other peer clients are available.
  • the amount of bandwidth on the local area network which is consumed by each peer client serving data packages to other clients is limited, to avoid over-burdening any specific host.
  • This limit is preferably configurable by the user or by the network administrator.
  • transmitted data packages are preferably only data packages which were intended to be served to the peer clients, such that malicious users preferably cannot use the system of the present invention to obtain “random” data packages from the storage media of a peer client.
  • Data packages are more preferably only referenced by their unique identifier, such as their 128-bit MD5 digest, such that a data package is only able to be downloaded from a client if the intended recipient knows this digest.
  • the name of a data package alone is preferably not sufficient information to permit retrieval of the data package from a peer client.
  • the system of the present invention is also applicable to Web browsers, FTP clients, and other software applications involving client-server data-transfer.
  • another exemplary embodiment of the present invention is used for caching Web content.
  • a Web browser being operated by a client computer requests a specific data package.
  • the Web browser looks at the local cache, as is known to one of ordinary skill in the art. If the data package is found in the local cache, then that data package is retrieved from the local cache. Otherwise, the Web browser issues a message requesting this data package, preferably by using broadcast or multicast message transmission.
  • the data package is preferably uniquely defined by a unique identifier. More preferably, the unique identifier is the URL of the data package, or alternatively and preferably a combination of the URL of the data package and timestamp, or by any other suitable unique identifier.
  • the Web browser preferably transmits one request message containing the list of needed data packages, thereby reducing the total network traffic across the network.
  • a situation may arise if, for example, the Web browser had just parsed an HTML (hypertext mark-up language) document, or Web page, which contains many links to follow.
  • each request message contains an identifying “magic number”, which may contain the protocol version (PVN). For instance: “V1.0”. As shown in FIG.
  • the request message includes the list of URL's or other unique identifiers to identify the data package or data packages being requested, which is similar in function to the list of MD5 digests described previously for request messages, and a unique identifier identifying the request message, shown as “REQ”.
  • step 2 other Web browsers across the network listen to detect request messages of this type.
  • These Web browsers which are peer clients for this embodiment of the present invention, receive this request message and check their own cache for the requested URL. If the requested URL is found in the local cache of a Web browser, that Web browser preferably waits a random interval and then preferably transmits a response message indicating it has the required data package (or data packages). Preferably, the message is broadcast or multicast. More preferably, that Web browser does not reply if another Web browser had replied first. A reply message is preferably sent by a particular Web browser even if the requested URL is still being downloaded by that Web browser.
  • step 3 if no response to an issued requmessage is received within a certain amount of time, for example 5 seconds, then the process is preferably timed out.
  • the Web browser preferably no longer attempts to obtain the URL from another Web browser, and the URL is obtained from the regular Web server using regular HTTP protocol.
  • the Web browser Before starting to download the data package from the regular Web server, the Web browser preferably transmits a response message indicating that this particular Web browser is downloading the data package.
  • the Web browser obtains the URL from the other Web browser which indicated that it had the URL in the local cache.
  • Web browsers across the network record the URLs and the address from which the response message originated for future use, such that these Web browsers would be able to download the URL at a future time without first transmitting the request message.
  • the Web browser attempts to download the data package.
  • the downloading process is performed with a suitable data-transfer protocol, such as HTTP or FTP. If a time-out or other failure occurs during the processing of data package transfer, the receiving Web browser preferably performs substantially the entire procedure more than once. More preferably, the number of permitted attempts to retry the transfer is configurable. If the process fails after these attempts have been performed, preferably the Web browser transfers the required data package or data packages from the regular Web server.
  • data package downloading is well distributed, such that the Web browsers do not obtain a data package from only a single Web browser, but rather obtain the data package from a plurality of Web browsers.
  • Such distribution is maintained as follows.
  • the number of simultaneous data package transfers from a single Web browser is limited. If this number is exceeded, the Web browser transmits a “busy” message to other Web browsers attempting to transfer the data package.
  • the Web browser transmits a “busy” message to other Web browsers attempting to transfer the data package.
  • the corresponding entry in the hash table for that data package is not altered every time another response message is received pertaining to this data package.
  • the hash table is preferably altered by subsequent messages in a probabilistic manner, such that the probability that any particular entry is updated to indicate a new location of a data package is equal to 1/(generation+1), where ‘generation’ counts the number of times a response message was received for that data package.
  • each Web browser preferably now alters the entry in the hash table to indicate a new location of data package “X” with a probability of about fifty percent, such that about fifty percent of the Web browsers now have an entry indicating that the data package is available from Web browser “A” and such that about fifty percent of the Web browsers now have an entry indicating that the data package is available from Web browser “B”.
  • a good load distribution can be achieved.
  • the random delay (mentioned in step 2 above) chosen by a browser is proportional to the number of currently served browsers, or the number of browsers currently downloading data packages from that browser, and inversely proportional to the amount of the data package already downloaded by it. This way the browsers more eligible to download from are more likely to be chosen by other browsers to serve these data packages.

Abstract

A system and method for enabling data package distribution to be performed by a plurality of peer clients connected to each other through a network, such as a LAN (local area network). Each peer client can obtain data packages from each other or from an external server. However, each peer client preferably obtains data packages from other peer clients, rather than obtaining data packages from the external server.

Description

    FIELD AND BACKGROUND OF THE INVENTION
  • The present invention relates to a distributed client-based data caching system Specifically, the system of the present invention enables data packages to be served to a client through a flexible, non-deterministic distributed system of peer clients which cache the data packages, in order to maximize efficiency and speed for serving the data package to the client. [0001]
  • Networks which connect two or more computers, such as the Internet or intranets, enable client computers to obtain data packages, such as documents, images, messages, data packages or other types of data, from remote storage media which are not installed on the client computer itself. Instead, these remote storage media are managed and operated through a remote computer, known as a server computer or simply as a “server” (in the same vein, the client computer is also often termed only a “client”). The advantage of such a system is that the client computer can potentially obtain data from any server on the network. The disadvantage of the system is the requirement for sufficient bandwidth on the network to enable data to be transmitted from the server to the client. Furthermore, if the load is not evenly distributed between servers on the network, one server may become overwhelmed with requests, thereby decreasing the speed and efficiency of retrieval. Thus, currently many networks cannot provide rapid and efficient data retrieval due to the heavy demands placed upon the available bandwidth. [0002]
  • Proxy servers are often installed to conserve bandwidth on an Internet connection or on connections to other LANs (local area networks). These proxy servers cache frequently accessed data, thereby reducing the load on the main server, and distributing demand for bandwidth more evenly across the network. Unfortunately, such proxy servers are typically expensive to maintain. Furthermore, proxy servers require dedicated computers to be installed and configured. Each computer on the LAN has to be separately configured in order to communicate with the proxy server. Such configuration is deterministic, such that each client must be configured to communicate with each proxy server separately. Thus, proxy servers have many drawbacks. [0003]
  • A more useful solution would enable Intranets to reap the benefits of the proxy server, without requiring dedicated machines and without requiring any special installation or configuration. Furthermore, such a solution would not be deterministic, such that each client could communicate with more than one server according to the load on each server, rather than according to the configuration of the client itself. Unfortunately, such a solution is not currently available. [0004]
  • Therefore, there is an unmet need for, and it would be highly useful to have, a distributed client-based data caching system which enables data to be stored and retrieved from a plurality of peer clients, or “caching entities”, yet which does not require any special configuration or installation of separate servers. [0005]
  • SUMMARY OF THE INVENTION
  • The present invention is of a distributed client-based data caching system, which enables data to be served to a client through a flexible, non-deterministic distributed system of caching entities, in order to maximize efficiency and speed for serving the document to the client. The caching entities are peer clients which serve the data to each other, thereby reducing the amount of bandwidth required to obtain data from an external server. [0006]
  • According to the present invention, there is provided a method for distributing data packages across a network, the network featuring an external server for serving at least one data package, the external server being a dedicated server, the steps of the method being performed by a data processor, the method comprising the steps of: (a) providing a plurality of peer clients attached to the network and a list of data packages being stored by each of the plurality of peer clients, each data package on the list of data packages having an entry, the entry indicating a unique identifier for the data package and a location of the data package in at least one of the plurality of peer clients; (b) examining the list of data packages by a first peer client to find an entry for a data package; and (c) if the entry for the data package is present on the list of data packages of the first peer client, retrieving the data package from the location at another of the plurality of peer clients according to the entry for the data package. [0007]
  • Alternatively, the list of data packages is stored on the external server. [0008]
  • According to preferred embodiments of the present invention, the list of data packages is stored on at least the first peer client. Preferably, if alternatively the entry for the data package is absent from the list of data packages of the first peer client, the method further comprises the steps of: (d) sending a request message for the data package by the first peer client to at least one other peer client; and (e) if a response message is received by the first peer client from the at least one other peer client, retrieving the data package from the at least one other peer client by the first peer client. [0009]
  • Preferably, the request message and the response message are transmitted to the plurality of peer clients by broadcasting. Alternatively, the request message and the response message are transmitted to the plurality of peer clients by multicasting. Also alternatively, the request message and the response message are transmitted to the plurality of peer clients by polling each peer client individually. [0010]
  • Also alternatively and preferably, if the response message is not received from the at least one other peer client by the first peer client, the method further comprises the step of: (f) obtaining the data package by the first peer client from the external server. Preferably, the method further comprises the step of sending a response message by the first peer client to the at least one other peer client substantially before the first peer client obtains the data package from the external server. More preferably, the list of data packages is stored on each of the plurality of peer clients, and the method further comprises the steps of: (g) receiving the response message from the first peer client by the at least one other peer client; and (h) altering the list of data packages being stored by the at least one other peer client for indicating the location of the data package according to the response message. [0011]
  • Alternatively, the list of data packages is stored on each of the plurality of peer clients, and the method further comprises the steps of: (g) receiving the response message from the first peer client by the at least one other peer client; and (h) altering the list of data packages being stored by the at least one other peer client for indicating the location of the data package according to a probabilistic function. [0012]
  • Preferably, the probabilistic function is performed according to a set of equations: [0013] New location = { Old location Po ( x ) = 1 / ( generation + 1 ) New location Pn ( x ) = 1 - 1 / ( generation + 1 )
    Figure US20010027479A1-20011004-M00001
  • wherein Pn(x) is a probability that the new location is substituted for the old location, Po(x) is a probability that the old location is retained, and “generation” indicates how many times the location had been previously changed. [0014]
  • Also preferably, an upper limit is predetermined for a number of the plurality of peer clients served substantially simultaneously by the at least one other peer client, such that if a number of the plurality of peer clients served substantially simultaneously by the at least one other peer client is greater than the upper limit, the method further comprises the step of: (d) sending a busy message from the at least one other peer client to the first peer client. [0015]
  • Preferably, the external server is a Web server, and the plurality of peer clients is a plurality of Web browsers. [0016]
  • Also preferably, the external servis a BackWeb™ server, and the plurality of peer clients is a plurality of BackWeb™ clients. [0017]
  • Preferably, the unique identifier for the data package is an MD5 digest of the data package. [0018]
  • According to still other preferred embodiments of the present invention, the step of retrieving the data package is performed according to a protocol based on TCP/IP. Preferably, the protocol is HTTP. Alternatively and preferably, the protocol is FTP. [0019]
  • Hereinafter, the term “protocol based on TCP/IP” includes any such protocol, including but not limited to the HTTP (hypertext transfer protocol) and FTP (file transfer protocol) protocols. [0020]
  • Hereinafter, the term “data package” refers to any discrete, identifiable unit of data, including but not limited to documents, images, messages, data packages or any other type of data. [0021]
  • Hereinafter, the term “computing platform” refers to a particular computer hardware system or to a particular software operating system. Examples of such hardware systems include, but are not limited to, personal computers (PC), Apple Macintosh™ computers, mainframes, minicomputers and workstations, which are also non-limiting examples of data processors for operating a software application under an operating system. Examples of such software operating systems include, but are not limited to, UNIX, VMS, Linux, MacOS™, DOS, one of the Windows™ operating systems by Microsoft Inc. (Seattle, Wash., USA), including Windows NT™, Windows 3.x™ (in which “x” is a version number, such as “Windows 3.1™λ), Windows95™ and Windows98™. [0022]
  • For the present invention, a software application could be written in a substantially suitable programming language, which could easily be selected by one of ordinary skill in the art. The programming language chosen should be compatible with the operating system according to which the software application is executed. Examples of suitable programming languages include, but are not limited to, C, C++ and Java. [0023]
  • Hereinafter, the term “broadcast” may also include “multicast” as well.[0024]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The invention is herein described, by way of example only, with reference to the accompanying drawings, wherein: [0025]
  • FIGS. 1A and 1B are schematic block diagrams of an exemplary basic system and method according to the present invention; [0026]
  • FIGS. [0027] 2A-2E are schematic block diagrams of an exemplary request/response protocol and method according to the present invention;
  • FIG. 3 is a schematic block diagram of an exemplary preferred data-flow diagram according to the present invention; [0028]
  • FIG. 4 is a flowchart of a method for operating the system of the present invention with Web browsers; and [0029]
  • FIGS. 5A and 5B are exemplary request and response messages according to the present invention.[0030]
  • DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • The present invention is of a distributed client-based data caching system, which enables data to be served to a client through a flexible, non-deterministic distributed system of caching entities, in order to maximize efficiency and speed for serving the data to the client. The caching entities are peer clients which serve the data to each other, thereby reducing the amount of bandwidth required to obtain data from an external server. [0031]
  • The system of the present invention enables clients to share data packages among themselves across their local network neighborhood, for example within a LAN, thereby eliminating the need for a specialized proxy server. Furthermore, the network traffic is not significantly affected, since modern network architectures are well suited for peer-to-peer communications. Most currently operating networks have a star topology, using switching hubs, in which communication between two peers does not affect simultaneous communication among other nodes on the network. Thus, the system of the present invention overcomes the drawbacks of a proxy server, yet does not add significant loads to the traffic on the network itself. [0032]
  • For currently available client-server software applications known in the art, whenever a client requires a data package, the following algorithm is performed. First, the software application attempts to locate the data package locally on the memory or on the disk or disks of the client. Then, if the data package is not found locally, the software application retrieves the data package from the appropriate server. [0033]
  • By contrast, the operation of the system of the present invention adds an intermediate step. For the present invention, if the data package is not found locally, an attempt is made to retrieve the data package from a peer client on the local network “neighborhood” before resorting to retrieving the data package from the server. [0034]
  • Thus, for the system of the present invention, every client actually functions as a caching proxy. Once a client requires a data package, it queries all the hosts, which are actually peer clients, on the local network for that data package. If no neighboring peer client has the data package, the client retrieves the data package from the external server as usual. However, if a neighboring client already has the required data package, the requesting client will download this data package from the peer client rather than from the external server. [0035]
  • The principles and operation of the distributed client-based data caching system according to the present invention may be better understood with reference to the drawings and the accompanying description. [0036]
  • FIG. 1A is a schematic block diagram of an exemplary system according to the present invention, while FIG. 1B is a flowchart of the operation of the system of FIG. 1A. FIG. 1A shows a [0037] system 10 which includes a plurality of peer clients 12 connected by a local network 14 of some type, for example a LAN, indicated by the heavier line in FIG. 1A. Two peer clients 12, labeled as “peer client 1” 20 and “peer client 2” 22, are shown for the purposes of illustration only and without intending to be limiting in any way. Each peer client 12 is also connected to an external server 16 of some type by an external connection 18. Although only one external server 16 is shown, a plurality of external servers could also be implemented. External server 16 is a dedicated server, in the sense that this server has a primary or at least a substantially significant role as a server for data packages. As shown for the purposes of illustration, external connection 18 only connects to local network 14 at one point, although multiple such external connections could also be implemented (not shown). In addition, external connection 18 could also optionally connect each peer client 12 directly to server 16 (not shown).
  • The operation of [0038] system 10 according to the present invention is illustrated with reference also to FIG. 1B. In step 1, peer client 12, such as peer client 12 looks for a data package in the local memory or disk cache of that particular peer client 12. If the desired data package is not found on the local disk cache, then in step 2, peer client 12 queries any other peer client(s) 12 on local network 14 to determine whether any other peer client 12 has a particular data package. For example, peer client 20 could query peer client 22, to determine whether peer client 22 has the desired data package. In step 3 a, if peer client 22 has the desired data package, then peer client 20 obtains the data package from peer client 22. Alternatively, as shown in step 3 b, if peer client 22 does not have the desired data package, then peer client 20 obtains the data package from server 16 through external connection 18. Thus, every peer client 12 is also potentially a server which is internal to local network 14, and hence could be described as an “internal server” to distinguish peer client 12 from external server 16.
  • Each [0039] peer client 12 could also be described as a “caching entity” and the data stored by each client for serving to other peer clients 12 as “cached data” or “cached data packages”.
  • A number of different possible embodiments of the system of the present invention can be implemented, of which two illustrative embodiments are shown with reference to theFigures below. Briefly, FIGS. [0040] 2A-2D illustrate an exemplary embodiment of the system of the present invention for implementation with the software application of BackWeb™ (BackWeb Technologies Ltd., Ramat Gan, Israel) on a local area network (LAN). FIGS. 4 and 5A-5B illustrate an exemplary embodiment of the system of the present invention for implementation with a Web browser software application on the Internet.
  • FIG. 2A shows an exemplary [0041] local network 24 which features a plurality of peer clients 12 of which three are shown for the purposes of discussion only and without intending to be limiting in any way. For the purposes of discussion only, suppose a peer client 26, labeled “A”, wishes to obtain four data packages “W”, “X”, “Y” and “Z”. None of these data packages are local to peer client 26, which must therefore obtain these data packages from either another peer client 12 as an internal server, or from an external server (not shown). Local area network 24 features two other peer clients 12: peer client 28, labeled “B”, and peer client 30, labeled “C”. Peer client 26 must therefore first communicate a request to peer client 28 and peer client 30 to see if the desired data packages are available at either location, and then peer client 26 must obtain these data packages from peer client 28 or peer client 30 if the desired data packages are available.
  • Preferably, two protocols are used for communication between peer clients on a local area network (LAN), a data package-exchange protocol and a control protocol. Specifically, the data package exchange protocol is used to transfer data packages between peer clients, once the desired data package has been located, and is described in greater detail with respect to FIG. 2B below. The control protocol enables each peer client to efficiently build and maintain tables which describe the location of available data packages across the local area network, by exchanging messages. [0042]
  • Each peer client maintains two hash-tables which contain information about data package location: a local-data packages table and a network-data packages table. The local-data packages table is a hash-table of data packages which reside on the storage medium or media of the peer client itself. The network-data packages table is a hash-table of data packages which reside on the storage medium or media of other clients on the local network. This table contains the local area network address of the peer client on which each data package is being stored. The size of this hash-table is preferably limited in order to reduce memory consumption. More preferably, each entry in the table has a time-stamp, such that older entries are purged when the size of the table exceeds the upper permissible limit. [0043]
  • In order to effectively identify the desired data package, preferably each data package has a unique identifier or “fingerprint” associated with it. More preferably, this unique identifier is an MD5 digest of the content of the data package (for a description of the MD5 specification, which is an industry standard and would therefore be obvious to one of ordinary skill in the art, see “RFC 1321” at http://ds.internic. net/rfc/rfc1321.txt). [0044]
  • Once any peer client knows both the unique identifier and the location of the data package on the local network, that client can then proceed to download the data package. However, the peer client may not know the location of the desired data package, in which case the client must follow a control protocol according to the present invention in order to determine the location of the desired data package and to enable the client to build these hash tables with respect to future attempts to locate a data package. [0045]
  • The control protocol is used to provide each client with knowledge about the locations of data packages across the local network. In the preferred implementation illustrated with respect to FIGS. [0046] 2A-2D, control messages are preferably sent and received as broadcast or multicast packets. Local area networks such as Ethernet networks support broadcast or multicast packets such that all peer clients on a local area network receive the broadcast or multicast packets. Effectively, a single packet can be sent to all peer clients by using broadcast or multicast, thereby reducing the amount of traffic on the network required as a result of transmitting the request message (see for example Chapter 12, “Broadcasting and Multicasting”, of TCP/IP Illustrated Volume, by W. Richard Stevens, Addison-Wesley, 1994). However, optionally the system of the present invention could poll each peer client individually with a control message for that peer client, although this is not preferred since such individually addressed messages would consume excessive amounts of available bandwidth. In such a situation, preferably polling would be restricted to a certain group of peer clients as internal servers, in order to reduce the amount of traffic on the local area network.
  • For the preferred implementation in which broadcast or multicast is used, more preferably, the decision to select either IP multicast or broadcast is made according to the configuration set by the network administrator for the local area network. IP multicast is preferable in terms of load on the clients of the local network, but may not be supported on all platforms (operating systems). More preferably, the TTL or Time to Live may be configured. The TTL specifies the number of routers a packet can cross before being dropped. Configuring the TTL enables data package sharing to be expanded across subnet boundaries. [0047]
  • As shown with respect to FIG. 2B, the control protocol of the present invention preferably operates as follows. In [0048] step 1, peer client “A” from FIG. 2A looks for a data package on the local storage medium or media. In step 2, since the data package was not found locally on the medium or media of peer client “A”, peer client “A” must download the data package and therefore preferably multicasts (or alternatively broadcasts) a request message. A request message preferably contains a protocol identifying version number (PVN) for the control protocol of the present invention and a list of MD5 digests of the needed data packages, as shown in FIG. 2C.
  • Optionally and preferably, if more than one data package is desired, a list of requested data packages is included in the request message rather than a single MD5 digest, in order to reduce the total number of request messages on the network. [0049]
  • In [0050] step 3, the neighboring clients, shown as peer clients “B” and “C” in FIG. 2A, receive this request message and search for the requested data package in their local-data packages hash-table. A peer client which does not find the data package locally does not reply, as shown in step 4 a. Otherwise, in step 4 b the peer client sends a response message, preferably after waiting a short random time interval to determine whether another peer client will respond first. More preferably, the peer client does not distribute the response message if another client responded previously, in order to reduce unnecessary traffic on the local area network. Also more preferably, the peer client distributes the response message by broadcast or multicast.
  • For example, as shown in FIG. 2A, if peer client “A” requests a data package “W”, peer client “B” would reply with the response message, since peer client “B” has the data package stored locally. By contrast, peer client “C” would not reply with a response message, since peer client “C” does not have data package “W” stored locally. On the other hand, if peer client “A” requests a data package “X”, both peer client “B” and peer client “C” could respond. In this situation, preferably only peer client “B” or peer client “C” would respond, depending on which peer client had the shorter random interval for waiting before sending the response message. [0051]
  • More preferably, responses are sent only for data packages with yet unknown locations. For example, suppose client “A” requests data packages “W”, “X”, “Y” and “Z”. Client “B” has data packages “W”, “X” and “Y”, and is the first to r, with a reply message indicating possession of data packages “W”, “X” and “Y”. Suppose another client, “C” has data packages “X”, “Y” and “Z”. Since it replied after client “B”, the response message from client “C” will only indicate possession of data package “Z” because this is the only data package with an as yet unknown location. [0052]
  • A response message optionally contains the identifying PVN, the list of MD5 digests of data packages that were found and a TCP port number, as shown in FIG. 2D. The port number identifies on which TCP port the responding peer client is waiting for data package requests. Alternatively, the response message optionally contains other indicators which enable the requesting client to retrieve one or more data packages from the responding peer. Preferably, response messages are also be broadcast for data packages which are currently being downloaded from an external server, for reasons described in greater detail below. [0053]
  • In [0054] step 5, the peer client downloads the data package or data packages. In principle, according to a relatively simple embodiment of the present invention, at this stage the requesting client either receives a reply and downloads the data packages from the client that replied; or, if a reply is not received within a certain period of time, proceeds to download these data packages from an external server. If the peer client is downloading a data package from another peer client as an internal server, the data package-exchange protocol is used to obtain the data package. The data package-exchange protocol is based on some appropriate peer-to-peer communication protocol, including but not limited to the HTTP protocol (see RFC-2068, “Hypertext Transfer Protocol-HTTP/1.1”, available from http://ds.internic.net/rfc/rfc2068.txt as of Sep. 23, 1998).
  • Preferably, a more complex implementation is employed, since such a simple implementation may cause multiple clients to fetch the same data packages from the external server simultaneously. This situation would arise if several peer clients need to download the same data packages at approximately the same time, which is a very probable scenario for push clients for which content delivery is triggered by an external server, since none of these clients would receive a response to its request. Instead, the other clients would still be downloading the data package when the new client request is broadcast, such that none of them would be ready to serve these data packages. Thus, many or even all of the clients would attempt to retrieve the data package from the external server and not from another peer client, thereby increasing the amount of traffic on the network and reducing the efficiency of operation of the system of the present invention. [0055]
  • Preferably, the problem is solved by notifying other clients when a first client is downloading the data package from the external server, even if the process of retrieving the data package is not yet complete. In this preferred embodiment, the first client which requires the data package obtains the data package from the external server. Other clients which require the data package will then download it from the first client, even if the first client is still in the process of retrieving the data package from the external server. The preferred embodiment of the method of the present invention is described in greater detail with regard to FIG. 2E. [0056]
  • In [0057] step 1, the requesting client again transmits the request, again preferably by broadcasting or multicasting, and then waits for a response. If no response is received within a certain period of time, in step 2 the client transmits a response message as if replying to its own request, indicating that this client either has the data package, or in this case, that the client is retrieving the data package. In step 3, the client retrieves the data package from the external server.
  • In [0058] step 4, other clients create an entry in their network data packages hash table, indicating the location of the client which will be serving the data package. Thus, preferably only a single client accesses the external server for any given data package.
  • If a request is sent for multiple data packages, but a response is received indicating the location of only some of the data packages at a neighboring peer client or clients, the client first obtains these data packages from the neighboring peer client or clients. Next, the client then transmits the response message for the rest of the data packages, and proceeds to obtain the remaining data package or data packages from the external server. Thus, the client only obtains the data package or data packages from the external server which are not available locally, rather than obtaining all of the data packages from the external server, thereby reducing network traffic. [0059]
  • According to preferred embodiments of the present invention, preferably the process of downloading data package from peer clients is optimized to reduce the amount of time required for downloading, the load on each individual client and the overall network traffic. Such optimization is performed as follows. [0060]
  • First, preferably the exit degree of each client is bound, such that each client is only able to serve a fixed, limited number of other clients simultaneously. More preferably, the default limit is three other clients, for example, or some another appropriate number which is preferably configured by the user or by the network administrator. If an additional client attempts to download a data package from a client which is already serving the maximum number of other clients will receive a “busy” message. This feature limits the load on each individual client. [0061]
  • Also preferably, the present invention is able to optimize the selection of the best client from which the data package should be obtained. For example, if client “A” had already downloaded a larger portion of the required data package than client “B”, transferring the data package from client “A” is more optimal. Such clients are preferentially selected to serve data packages, since these clients will be able to serve the data package after a shorter time period has elapsed. Such preferential selection occurs by shortening the time period for waiting before these clients respond, thereby increasing the likelihood that they will serve the data packages. For this reason, the client preferably calculates the random delay before responding such that the delay is inversely proportional to the percentage of the data package which has been already downloaded. In addition, the random delay is preferably proportional to the number of clients being served at the moment, in order to decrease the likelihood of overloading already busy clients. [0062]
  • In addition, according to other preferred embodiments of the present invention, preferably the entries of the locations of data packages in the network data packages table are updated according to a probabilistic function. Such a function is preferred in order to prevent all of the clients from registering a single client as the server for any particular data package, for example. When different clients respond, usually at different times, indicating they have a specific data package, the remaining clients listening across the network update the entry for this data package in their network data packages table, by adding the IP address, or some other type of address according to the addressing system employed by the network, of the client which can serve the data package to this table. In a simple implementation, the clients would store only the last advertised location of each data package, and therefore many or all clients might attempt to obtain the data package from a single client as the internal server, thereby overloading that client. [0063]
  • To avoid this situation, preferably the following probabilistic algorithm is used to determine the particular client address which is stored in the network data packages table. Each time a new client transmits a response message, indicating that this client is able to serve particular data package, the probability that the new IP address of the new client is substituted for the old IP address is calculated according to the following equations: [0064] New IP address = { Old IP address Po ( x ) = 1 / ( generation + 1 ) New IP address Pn ( x ) = 1 - 1 / ( generation + 1 )
    Figure US20010027479A1-20011004-M00002
  • wherein Pn(x) is the probability that a new IP address is substituted for the old IP address, Po(x) is the probability that the old IP address is retained, and “generation” is a number indicating how many times this address had been previously changed. [0065]
  • For example, if client “A” responds indicating it has data package “X”, then initially all other peer clients store the IP address of client “A” as the location of data package “X”. If client “B” then broadcasts a response also indicating that client “B” has data package “X”, then the probability that any one client now changes the IP address for the location of data package “X” is 50%. In other words, about half of the clients should now point to client “A” and about half should point to client “B”. [0066]
  • Such a substantially even distribution of load across multiple clients should produce data-flow with a tree-shaped topology, as shown in FIG. 3, rather than a random topology, thus optimizing the average download time and the load on the serving clients. [0067]
  • Furthermore, if any client requests a particular data package during the period required by client “A” for downloading that package, preferably client “A” sends a broadcast or multicast message indicating that the package is in the process of being downloaded. Therefore, preferably only a single client “B” polls client “A” for each data package, for example. Other clients preferably automatically receive any responses from that polling action through the broadcast or multicast transmission, and thus will not be forced to poll for themselves. [0068]
  • The polling (request/response) traffic is optimized since there is usually no need to transmit both a request and a response for each data package needed by each client. Such optimization is possible since each client preferably receives substantially all of the request/response communication of all the other clients and “remembers” the location of the data packages in the network-data packages table. [0069]
  • As previously described, the actual process for receiving a data package from an internal server is performed according to the data package exchange protocol, by using the HTTP protocol or some other suitable peer-to-peer communication protocol. The data package transfer software application of the present invention preferably features a timer, for detection of an aborted transfer or a very slow data package transfer, for example. The timer determines when such a transfer has timed out. If a time-out occurs, the requesting client preferably repeats the whole process. If the transfer remains unsuccessful after a plurality of attempts, the client preferably ceases to attempt to transfer the data package from the peer client as the internal server, and instead transfers the data package or data packages directly from the external server. [0070]
  • Again, as described previously, if a requested data package has not yet finished being downloaded by a peer client, the requesting client receives a message indicating that the data package is not ready, as well as an indication of the fraction of the data package already downloaded. The requesting client continues polling the serving client until the data package download is complete. If the download becomes substantially slower or is otherwise interrupted or terminated for a long period of time, the requesting client behaves as if a time-out occurred. [0071]
  • According to additional preferred features of the present invention, substantially automatic detection of peer clients is supported. Such automatic detection enables each peer client to detect the presence of other peer clients on the network. If such peer clients are not found, preferably the system of the present invention is disabled, since the operation of the system as described above would only prolong the time period required to download a data package if no other peer clients are available. [0072]
  • Preferably, the amount of bandwidth on the local area network which is consumed by each peer client serving data packages to other clients is limited, to avoid over-burdening any specific host. This limit is preferably configurable by the user or by the network administrator. [0073]
  • Furthermore, in order to protect peer clients from unauthorized access of local storage media through the system of the present invention, certain security features are preferably included. For example, preferably only data packages identified in the hash tables are able to be transferred from the client. Thus, transmitted data packages are preferably only data packages which were intended to be served to the peer clients, such that malicious users preferably cannot use the system of the present invention to obtain “random” data packages from the storage media of a peer client. Data packages are more preferably only referenced by their unique identifier, such as their 128-bit MD5 digest, such that a data package is only able to be downloaded from a client if the intended recipient knows this digest. Thus, the name of a data package alone is preferably not sufficient information to permit retrieval of the data package from a peer client. [0074]
  • According to another embodiment of the present invention, the system of the present invention is also applicable to Web browsers, FTP clients, and other software applications involving client-server data-transfer. As described with reference to FIGS. 4 and 5A-[0075] 5B, another exemplary embodiment of the present invention is used for caching Web content.
  • In [0076] step 1 of FIG. 4, a Web browser being operated by a client computer requests a specific data package. First the Web browser looks at the local cache, as is known to one of ordinary skill in the art. If the data package is found in the local cache, then that data package is retrieved from the local cache. Otherwise, the Web browser issues a message requesting this data package, preferably by using broadcast or multicast message transmission. The data package is preferably uniquely defined by a unique identifier. More preferably, the unique identifier is the URL of the data package, or alternatively and preferably a combination of the URL of the data package and timestamp, or by any other suitable unique identifier.
  • For optimization, if more than one data package is required, the Web browser preferably transmits one request message containing the list of needed data packages, thereby reducing the total network traffic across the network. Such a situation may arise if, for example, the Web browser had just parsed an HTML (hypertext mark-up language) document, or Web page, which contains many links to follow. Preferably and optionally, each request message contains an identifying “magic number”, which may contain the protocol version (PVN). For instance: “V1.0”. As shown in FIG. 5A, the request message includes the list of URL's or other unique identifiers to identify the data package or data packages being requested, which is similar in function to the list of MD5 digests described previously for request messages, and a unique identifier identifying the request message, shown as “REQ”. [0077]
  • In [0078] step 2, other Web browsers across the network listen to detect request messages of this type. These Web browsers, which are peer clients for this embodiment of the present invention, receive this request message and check their own cache for the requested URL. If the requested URL is found in the local cache of a Web browser, that Web browser preferably waits a random interval and then preferably transmits a response message indicating it has the required data package (or data packages). Preferably, the message is broadcast or multicast. More preferably, that Web browser does not reply if another Web browser had replied first. A reply message is preferably sent by a particular Web browser even if the requested URL is still being downloaded by that Web browser.
  • In [0079] step 3, if no response to an issued requmessage is received within a certain amount of time, for example 5 seconds, then the process is preferably timed out. In this case, the Web browser preferably no longer attempts to obtain the URL from another Web browser, and the URL is obtained from the regular Web server using regular HTTP protocol. Before starting to download the data package from the regular Web server, the Web browser preferably transmits a response message indicating that this particular Web browser is downloading the data package.
  • On the other hand, if a response message is received, the Web browser obtains the URL from the other Web browser which indicated that it had the URL in the local cache. Preferably, Web browsers across the network record the URLs and the address from which the response message originated for future use, such that these Web browsers would be able to download the URL at a future time without first transmitting the request message. [0080]
  • Once the Web browser is able to locate a data package on a neighboring Web browser, the Web browser attempts to download the data package. The downloading process is performed with a suitable data-transfer protocol, such as HTTP or FTP. If a time-out or other failure occurs during the processing of data package transfer, the receiving Web browser preferably performs substantially the entire procedure more than once. More preferably, the number of permitted attempts to retry the transfer is configurable. If the process fails after these attempts have been performed, preferably the Web browser transfers the required data package or data packages from the regular Web server. [0081]
  • According to preferred features of this embodiment of the present invention, data package downloading is well distributed, such that the Web browsers do not obtain a data package from only a single Web browser, but rather obtain the data package from a plurality of Web browsers. Such distribution is maintained as follows. [0082]
  • First, preferably the number of simultaneous data package transfers from a single Web browser is limited. If this number is exceeded, the Web browser transmits a “busy” message to other Web browsers attempting to transfer the data package. Next, preferably once a Web browser receives a message giving the location of a particular data package, the corresponding entry in the hash table for that data package is not altered every time another response message is received pertaining to this data package. The hash table is preferably altered by subsequent messages in a probabilistic manner, such that the probability that any particular entry is updated to indicate a new location of a data package is equal to 1/(generation+1), where ‘generation’ counts the number of times a response message was received for that data package. [0083]
  • For example, if Web browser “A” transmits a response message indicating that data package “X” is on the local cache, then initially all of the neighboring Web browsers have an entry in the hash table indicating that Web browser “A” is the location of data package “X”. If Web browser “B” then transmits a response message for data package “X”, then each Web browser preferably now alters the entry in the hash table to indicate a new location of data package “X” with a probability of about fifty percent, such that about fifty percent of the Web browsers now have an entry indicating that the data package is available from Web browser “A” and such that about fifty percent of the Web browsers now have an entry indicating that the data package is available from Web browser “B”. Thus, a good load distribution can be achieved. [0084]
  • The random delay (mentioned in [0085] step 2 above) chosen by a browser is proportional to the number of currently served browsers, or the number of browsers currently downloading data packages from that browser, and inversely proportional to the amount of the data package already downloaded by it. This way the browsers more eligible to download from are more likely to be chosen by other browsers to serve these data packages.
  • While the invention has been described with respect to a limited number of embodiments, it will be appreciated that many variations, modifications and other applications of the invention may be made. [0086]

Claims (21)

What is claimed is:
1. A method for distributing data packages across a network, the network featuring an external server for serving at least one data package, the external server being a dedicated server, the steps of the method being performed by a data processor, the method comprising the steps of:
(a) providing a plurality of peer clients attached to the network and providing a list of data packages, said data packages being stored by each of said plurality of peer clients, each data package of said data packages having an entry in said list, said entry indicating a unique identifier for said data package and a location of said data package in at least one of said plurality of peer clients;
(b) examining said list of data packages by a first peer client to find an entry for a required data package; and
(c) if said entry for said data package is present on said list of data packages of said first peer client, retrieving said data package from said location at another of said plurality of peer clients according to said entry for said data package.
2. The method of
claim 1
, wherein said list of data packages is stored on the external server.
3. The method of
claim 1
, wherein said list of data packages is stored on at least said first peer client.
4. The method of
claim 3
, wherein alternatively said entry for said data package is absent from said list of data packages of said first peer client, the method further comprising the steps of:
(d) sending a request message for said data package by said first peer client to at least one other peer client; and
(e) if a response message is received by said first peer client from said at least one other peer client, retrieving said data package from said at least one other peer client by said first peer client.
5. The method of
claim 4
, the method further comprising the step of:
(f) altering said list of data packages being stored by at least said first peer client for indicating said location of said data package according to said response message.
6. The method of
claim 5
, wherein said request message and said response message are transmitted to said plurality of peer clients by broadcasting.
7. The method of
claim 5
, wherein said request message and said response message are transmitted to said plurality of peer clients by multicasting.
8. The method of
claim 5
, wherein said request message and said response message are transmitted to said plurality of peer clients by polling each peer client individually.
9. The method of
claim 5
, wherein if said response message is not received from said at least one other peer client by said first peer client, the method further comprises the step of:
(g) obtaining said data package by said first peer client from the external server.
10. The method of
claim 9
, further comprising the step of sending a response message by said first peer client to said at least one other peer client substantially before said first peer client obtains said data package from the external server.
11. The method of
claim 10
, wherein said list of data packages is stored on each of said plurality of peer clients, the method further comprising the steps of:
(h) receiving said response message from said first peer client by said at least one other peer client; and
(i) altering said list of data packages being stored by said at least one other peer client for indicating said location of said data package according to said response message.
12. The method of
claim 10
, wherein said list of data packages is stored on each of said plurality of peer clients, the method further comprising the steps of:
(h) receiving said response message from said first peer client by said at least one other peer client; and
(i) altering said list of data packages being stored by said at least one other peer client for indicating said location of said data package according to a probabilistic function.
13. The method of
claim 1
, wherein said probabilistic function is performed according to a set of equations: New location = { Old location Po ( x ) = 1 / ( generation + 1 ) New location Pn ( x ) = 1 - 1 / ( generation + 1 )
Figure US20010027479A1-20011004-M00003
wherein Pn(x) is a probability that said new location is substituted for said old location, Po(x) is a probability that said old location is retained, and “generation” indicates how many times said location had been previously changed.
14. The method of
claim 10
, further comprising the steps of:
(h) receiving said response message from said first peer client by said at least one other peer client; and
(i) retrieving said data package from said first peer client by said at least one other peer client substantially after said first peer client has obtained said data package.
15. The method of
claim 1
, wherein an upper limit is predetermined for a number of said plurality of peer clients served substantially simultaneously by said at least one other peer client, such that if a number of said plurality of peer clients served substantially simultaneously by said at least one other peer client is greater than said upper limit, the method further comprises the step of:
(d) sending a busy message from said at least one other peer client to said first peer client.
16. The method of
claim 1
, wherein the external server is a Web server, and said plurality of peer clients is a plurality of Web browsers.
17. The method of
claim 1
, wherein the external server is a BackWeb™ server, and said plurality of peer clients is a plurality of BackWeb™ clients.
18. The method of
claim 1
, wherein said unique identifier for said data package is an MD5 digest of said data package.
19. The method of
claim 1
, wherein the step of retrieving said data package is performed according to a protocol based on TCP/IP.
20. The method of
claim 19
, wherein said protocol is HTTP.
21. The method of
claim 19
, wherein said protocol is FTP.
US09/817,953 1998-10-05 2001-03-26 Distributed client-based data caching system Expired - Lifetime US6374289B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/817,953 US6374289B2 (en) 1998-10-05 2001-03-26 Distributed client-based data caching system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16668698A 1998-10-05 1998-10-05
US09/817,953 US6374289B2 (en) 1998-10-05 2001-03-26 Distributed client-based data caching system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US16668698A Continuation 1998-10-05 1998-10-05

Publications (2)

Publication Number Publication Date
US20010027479A1 true US20010027479A1 (en) 2001-10-04
US6374289B2 US6374289B2 (en) 2002-04-16

Family

ID=22604301

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/817,953 Expired - Lifetime US6374289B2 (en) 1998-10-05 2001-03-26 Distributed client-based data caching system

Country Status (3)

Country Link
US (1) US6374289B2 (en)
EP (1) EP0993163A1 (en)
JP (1) JP2000137641A (en)

Cited By (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099773A1 (en) * 2001-01-25 2002-07-25 Kaoru Tsuru Data communication apparatus and data communication method
US20020143892A1 (en) * 2001-04-03 2002-10-03 Mogul Jeffrey C. Reduction of network retrieval latency using cache and digest
US20020156875A1 (en) * 2001-04-24 2002-10-24 Kuldipsingh Pabla Peer group name server
US20030101265A1 (en) * 2001-11-27 2003-05-29 International Business Machines Corporation System and method for dynamically allocating processing on a network amongst multiple network servers
US20030135552A1 (en) * 2002-01-14 2003-07-17 Blackstock Michael A. Method for discovering and discriminating devices on local collaborative networks to facilitate collaboration among users
US20030135556A1 (en) * 2001-12-14 2003-07-17 International Business Machines Corporation Selection of communication strategies for message brokers or publish/subscribe communications
WO2004006094A1 (en) * 2002-07-08 2004-01-15 Siemens Aktiengesellschaft Method for updating services in communication networks
US20040019641A1 (en) * 2002-07-25 2004-01-29 Bartram Linda Ruth Method for context based discovery and filtering of portable collaborative networks
US20040109451A1 (en) * 2002-12-06 2004-06-10 Stmicroelectronics, Inc. Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US20040117376A1 (en) * 2002-07-12 2004-06-17 Optimalhome, Inc. Method for distributed acquisition of data from computer-based network data sources
US20040213283A1 (en) * 1999-08-09 2004-10-28 Mitsubishi Material Corporation Information transmitting apparatus, information saving apparatus, information receiving apparatus, method for using the same, and recording medium thereof
US20050060389A1 (en) * 2003-09-12 2005-03-17 Ludmila Cherkasova System and method for evaluating a capacity of a streaming media server for supporting a workload
FR2860935A1 (en) * 2003-10-09 2005-04-15 Canon Kk Digital data processing method for peer-to-peer computer network, involves storing data structure establishing link between each usable part of signal and single identifier of signal in communication apparatus
US20060212542A1 (en) * 2005-03-15 2006-09-21 1000 Oaks Hu Lian Technology Development Co., Ltd. Method and computer-readable medium for file downloading in a peer-to-peer network
US20060212584A1 (en) * 2005-03-15 2006-09-21 Qian Xiang Shi Ji (Beijing) Technology Development Co. Ltd. Method and system for accelerating downloading of web page content by a peer-to-peer network
US20060235832A1 (en) * 2005-03-21 2006-10-19 Lg Electronics Inc. Broadcast terminal for searching broadcast content and method thereof
US20070022082A1 (en) * 2005-07-20 2007-01-25 International Business Machines Corporation Search engine coverage
US20070028133A1 (en) * 2005-01-28 2007-02-01 Argo-Notes, Inc. Download method for file by bit torrent protocol
US20070106694A1 (en) * 2005-10-31 2007-05-10 Masami Mori Structuralized document, contents delivery server apparatus, and contents delivery system
US20070157266A1 (en) * 2005-12-23 2007-07-05 United Video Properties, Inc. Interactive media guidance system having multiple devices
US20070283026A1 (en) * 2004-02-18 2007-12-06 Thorsten Lohmar Method And Device For Reliable Broadcast
US20080114999A1 (en) * 2006-11-14 2008-05-15 Dell Products, Lp System and method for providing a communication enabled ups power system for information handling systems
US20080294714A1 (en) * 2007-05-22 2008-11-27 International Business Machines Corporation High Availability Message Transmission
US20090063629A1 (en) * 2006-03-06 2009-03-05 Lg Electronics Inc. Data transfer controlling method, content transfer controlling method, content processing information acquisition method and content transfer system
US20090133129A1 (en) * 2006-03-06 2009-05-21 Lg Electronics Inc. Data transferring method
US20090222537A1 (en) * 2003-12-04 2009-09-03 Colligo Newworks, Inc., A Canadian Corporation System And Method For Interactive Instant Networking
US20090292809A1 (en) * 2007-01-05 2009-11-26 Lg Electronics Inc. Method for transferring resource and method for providing information
US20090293131A1 (en) * 2006-09-06 2009-11-26 Lg Electronics Inc. Method and system for processing content
US20090300724A1 (en) * 2007-02-16 2009-12-03 Lg Electronics Inc. Method for managing domain using multi domain manager and domain system
US20090313349A1 (en) * 2006-03-06 2009-12-17 Lg Electronics Inc. Data transferring method
US20090319473A1 (en) * 2008-06-19 2009-12-24 Microsoft Corporation Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic
US7644173B1 (en) * 2005-09-26 2010-01-05 Roxbeam Media Network Corporation System and method for facilitating expedited delivery of media content
US20100030871A1 (en) * 2008-07-30 2010-02-04 Microsoft Corporation Populating and using caches in client-side caching
US20100115613A1 (en) * 2008-10-31 2010-05-06 Google Inc. Cacheable Mesh Browsers
US7742485B2 (en) 2005-07-29 2010-06-22 Roxbeam Media Network Corporation Distributed system for delivery of information via a digital network
EP2400749A1 (en) 2010-06-24 2011-12-28 Koninklijke KPN N.V. Access network controls distributed local caching upon end-user download
KR101322947B1 (en) 2005-08-30 2013-10-29 마이크로소프트 코포레이션 Distributed caching of files in a network
US8589368B1 (en) * 2007-09-05 2013-11-19 Adobe Systems Incorporated Media players and download manager functionality
US20130318250A1 (en) * 2012-05-21 2013-11-28 Rsupport Co., Ltd. Method for connecting between terminals
US8612801B2 (en) 2011-01-25 2013-12-17 Dell Products, Lp System and method for extending system uptime while running on backup power
CN104052808A (en) * 2014-06-13 2014-09-17 乐视网信息技术(北京)股份有限公司 Digital content acquiring method and system based on CDN
JP2015094962A (en) * 2013-11-08 2015-05-18 富士ゼロックス株式会社 Relay device, terminal device, and program
WO2016156386A1 (en) * 2015-03-30 2016-10-06 Tdf System for broadcasting audio and/or video content via a local wifi network, and devices implementing the method
WO2017011327A1 (en) * 2015-07-10 2017-01-19 Whether or Knot LLC Systems and methods for electronic data distribution
US9893957B2 (en) 2009-10-02 2018-02-13 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US9954934B2 (en) 2008-03-31 2018-04-24 Amazon Technologies, Inc. Content delivery reconciliation
US9985927B2 (en) 2008-11-17 2018-05-29 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10015241B2 (en) 2012-09-20 2018-07-03 Amazon Technologies, Inc. Automated profiling of resource usage
US10015237B2 (en) 2010-09-28 2018-07-03 Amazon Technologies, Inc. Point of presence management in request routing
US10021179B1 (en) * 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10079742B1 (en) 2010-09-28 2018-09-18 Amazon Technologies, Inc. Latency measurement in resource requests
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US10116584B2 (en) 2008-11-17 2018-10-30 Amazon Technologies, Inc. Managing content delivery network service providers
US10135620B2 (en) 2009-09-04 2018-11-20 Amazon Technologis, Inc. Managing secure content in a content delivery network
US10157135B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Cache optimization
US10158729B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Locality based content distribution
US10162753B2 (en) 2009-06-16 2018-12-25 Amazon Technologies, Inc. Managing resources using resource expiration data
US10180993B2 (en) 2015-05-13 2019-01-15 Amazon Technologies, Inc. Routing based request correlation
US10200402B2 (en) 2015-09-24 2019-02-05 Amazon Technologies, Inc. Mitigating network attacks
US10225362B2 (en) 2012-06-11 2019-03-05 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US10225322B2 (en) 2010-09-28 2019-03-05 Amazon Technologies, Inc. Point of presence management in request routing
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US10230819B2 (en) 2009-03-27 2019-03-12 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10264062B2 (en) 2009-03-27 2019-04-16 Amazon Technologies, Inc. Request routing using a popularity identifier to identify a cache component
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10305797B2 (en) 2008-03-31 2019-05-28 Amazon Technologies, Inc. Request routing based on class
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10374955B2 (en) 2013-06-04 2019-08-06 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10469355B2 (en) 2015-03-30 2019-11-05 Amazon Technologies, Inc. Traffic surge management for points of presence
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US10491534B2 (en) 2009-03-27 2019-11-26 Amazon Technologies, Inc. Managing resources and entries in tracking information in resource cache components
US10506029B2 (en) 2010-01-28 2019-12-10 Amazon Technologies, Inc. Content distribution network
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US10511567B2 (en) 2008-03-31 2019-12-17 Amazon Technologies, Inc. Network resource identification
US10523783B2 (en) 2008-11-17 2019-12-31 Amazon Technologies, Inc. Request routing utilizing client location information
EP3595326A1 (en) * 2014-04-07 2020-01-15 The Nielsen Company (US), LLC Signature retrieval and matching for media monitoring
US10554748B2 (en) 2008-03-31 2020-02-04 Amazon Technologies, Inc. Content management
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US10645056B2 (en) 2012-12-19 2020-05-05 Amazon Technologies, Inc. Source-dependent address resolution
US10742550B2 (en) 2008-11-17 2020-08-11 Amazon Technologies, Inc. Updating routing information based on client location
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10951725B2 (en) 2010-11-22 2021-03-16 Amazon Technologies, Inc. Request routing processing
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US11108729B2 (en) 2010-09-28 2021-08-31 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
CN114025376A (en) * 2021-11-10 2022-02-08 江苏思极科技服务有限公司 Trusted utilization system for idle bandwidth of network load equipment 5G
US11290418B2 (en) 2017-09-25 2022-03-29 Amazon Technologies, Inc. Hybrid content request routing system
US11604667B2 (en) 2011-04-27 2023-03-14 Amazon Technologies, Inc. Optimized deployment based upon customer locality

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633901B1 (en) * 1998-10-23 2003-10-14 Pss Systems, Inc. Multi-route client-server architecture
US6907463B1 (en) * 1999-10-19 2005-06-14 Audiogalaxy, Inc. System and method for enabling file transfers executed in a network environment by a software program
IL133039A (en) * 1999-11-18 2007-12-03 Eyeblaster Inc Full duplex re-transmitter
US6847924B1 (en) * 2000-06-19 2005-01-25 Ncr Corporation Method and system for aggregating data distribution models
US8024415B2 (en) * 2001-03-16 2011-09-20 Microsoft Corporation Priorities generation and management
US7634528B2 (en) 2000-03-16 2009-12-15 Microsoft Corporation Harnessing information about the timing of a user's client-server interactions to enhance messaging and collaboration services
US7743340B2 (en) * 2000-03-16 2010-06-22 Microsoft Corporation Positioning and rendering notification heralds based on user's focus of attention and activity
US20020087649A1 (en) * 2000-03-16 2002-07-04 Horvitz Eric J. Bounded-deferral policies for reducing the disruptiveness of notifications
BRPI0001810B1 (en) * 2000-03-28 2015-06-23 Coppe Ufrj Coordenação Dos Programas De Pós Graduação De Engenharia Da Universidade Fed Do Rio De Ja Distributed cooperative memory for scalable interactive vod system
US6970937B1 (en) * 2000-06-15 2005-11-29 Abacast, Inc. User-relayed data broadcasting
US7086050B2 (en) 2000-08-04 2006-08-01 Mcafee, Inc. Updating computer files
GB2366965A (en) 2000-09-01 2002-03-20 Ncr Int Inc Downloading data to a requesting client form the local cache of another client
DE60043815D1 (en) * 2000-09-12 2010-03-25 Motorola Inc Ad hoc telecommunications network administration and mediation
JP2002117145A (en) * 2000-10-05 2002-04-19 Nippon Telegr & Teleph Corp <Ntt> Method for managing medical information and recording medium stored with program for the same
US7903822B1 (en) * 2000-11-10 2011-03-08 DMT Licensing, LLC. Method and system for establishing a trusted and decentralized peer-to-peer network
US7594030B2 (en) 2000-11-22 2009-09-22 Microsoft Corporation Locator and tracking service for peer to peer resources
US7072982B2 (en) 2000-11-22 2006-07-04 Microsoft Corporation Universal naming scheme for peer to peer resources
US20020062336A1 (en) * 2000-11-22 2002-05-23 Dan Teodosiu Resource coherency among resources cached in a peer to peer environment
US7844666B2 (en) * 2000-12-12 2010-11-30 Microsoft Corporation Controls and displays for acquiring preferences, inspecting behavior, and guiding the learning and decision policies of an adaptive communications prioritization and routing system
EP1220173A1 (en) * 2000-12-29 2002-07-03 THOMSON multimedia System and method for the secure distribution of digital content in a sharing network
US7188145B2 (en) 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
US7035911B2 (en) 2001-01-12 2006-04-25 Epicrealm, Licensing Llc Method and system for community data caching
WO2002056182A2 (en) * 2001-01-12 2002-07-18 Epicrealm Operating Inc Method and system for community data caching
WO2002057917A2 (en) 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7197565B2 (en) 2001-01-22 2007-03-27 Sun Microsystems, Inc. System and method of using a pipe advertisement for a peer-to-peer network entity in peer-to-peer presence detection
US7165107B2 (en) 2001-01-22 2007-01-16 Sun Microsystems, Inc. System and method for dynamic, transparent migration of services
WO2002065282A2 (en) * 2001-02-09 2002-08-22 Microsoft Corporation Distribution of binary executables and content from peer locations/machines
IL148080A0 (en) * 2001-02-13 2002-09-12 Hosen Eliav System for distributing video and content on demand
NL1017388C2 (en) 2001-02-16 2002-08-19 Marc Van Oldenborgh Organic data network with a dynamic topology.
JP2002342088A (en) * 2001-03-15 2002-11-29 Sony Corp Information processor, information processing method, information transmission/reception method, recording medium and program
US8156223B2 (en) * 2001-03-20 2012-04-10 Microsoft Corporation Distribution of binary executables and content from peer locations/machines
US7720996B2 (en) * 2001-03-27 2010-05-18 Microsoft Corporation Internet protocol (IP) address proximity and application to peer provider location
US7721110B2 (en) * 2001-04-06 2010-05-18 Mcafee, Inc. System and method for secure and verified sharing of resources in a peer-to-peer network environment
US7181506B1 (en) 2001-04-06 2007-02-20 Mcafee, Inc. System and method to securely confirm performance of task by a peer in a peer-to-peer network environment
US20020162109A1 (en) * 2001-04-26 2002-10-31 Koninklijke Philips Electronics N.V. Distributed storage on a P2P network architecture
US7051327B1 (en) * 2001-05-08 2006-05-23 Gateway Inc. System for providing data backup and restore with updated version by creating data package based upon configuration data application data and user response to suggestion
KR20020095706A (en) * 2001-06-15 2002-12-28 아라정보기술 주식회사 Method for searching search terms by P2P(Peer to Peer) system
KR100436431B1 (en) * 2001-06-21 2004-06-16 (주)와이즈피어 Collaborative Information exchanging system on the Peer to Peer network
US7546363B2 (en) 2001-07-06 2009-06-09 Intel Corporation Adaptive route determination for peer-to-peer services
US7562112B2 (en) * 2001-07-06 2009-07-14 Intel Corporation Method and apparatus for peer-to-peer services for efficient transfer of information between networks
US7440994B2 (en) * 2001-07-06 2008-10-21 Intel Corporation Method and apparatus for peer-to-peer services to shift network traffic to allow for an efficient transfer of information between devices via prioritized list
KR20030014513A (en) * 2001-08-11 2003-02-19 한국전자통신연구원 Meshod and System of Sharing Client Data For Distributing Load of Server
JP2003076596A (en) * 2001-09-05 2003-03-14 Sharp Corp Information registration apparatus, information registering program and machine readable recording medium having information registering program recorded thereon
JP2003099382A (en) * 2001-09-20 2003-04-04 Sharp Corp Communication system and recording medium with information processing program stored therein
EP1309147A1 (en) * 2001-10-30 2003-05-07 Hewlett-Packard Company, A Delaware Corporation Method and apparatus for managing profile information in a heterogeneous or homogeneous network environment
EP1308853A1 (en) * 2001-10-30 2003-05-07 Hewlett-Packard Company Data caching
JP3857572B2 (en) * 2001-11-20 2006-12-13 沖電気工業株式会社 IP telephone apparatus and IP telephone apparatus search method
US20030101267A1 (en) * 2001-11-28 2003-05-29 Thompson Mark R. Peer-to-peer caching network
US20030110218A1 (en) * 2001-12-12 2003-06-12 Stanley Randy P. Local caching of images for on-line conferencing programs
US7218917B2 (en) * 2002-01-15 2007-05-15 Hewlett-Packard Development Company, L.P. Method for searching nodes for information
US20030158958A1 (en) * 2002-02-20 2003-08-21 Koninklijke Philips Electronics N.V. Distributed storage network architecture using user devices
US7614081B2 (en) 2002-04-08 2009-11-03 Sony Corporation Managing and sharing identities on a network
US7478126B2 (en) 2002-04-08 2009-01-13 Sony Corporation Initializing relationships between devices in a network
US20030204602A1 (en) 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
US20030236863A1 (en) * 2002-06-25 2003-12-25 Johnson Peter E. Just-in-time multicasting
KR20040001336A (en) * 2002-06-27 2004-01-07 주식회사 케이티 Method of push-style contents delivery over the internet using P2P model
FR2842057B1 (en) 2002-07-05 2005-10-28 Canon Kk METHOD AND DEVICE FOR PROCESSING DATA IN A COMMUNICATION NETWORK
US20040010553A1 (en) * 2002-07-15 2004-01-15 International Business Machines Corporation Peer to peer location based services
US7849140B2 (en) 2002-08-29 2010-12-07 Oracle America, Inc. Peer-to-peer email messaging
US7263560B2 (en) 2002-08-30 2007-08-28 Sun Microsystems, Inc. Decentralized peer-to-peer advertisement
US20040107242A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Peer-to-peer content broadcast transfer mechanism
DE10260926B4 (en) * 2002-12-20 2005-12-01 Hewlett-Packard Development Co., L.P., Houston communication method
US7751537B2 (en) 2002-12-20 2010-07-06 Avaya Canada Corp. Peer to peer voice over IP network with distributed call processing
US7404002B1 (en) * 2003-03-06 2008-07-22 Nvidia Corporation Method and system for broadcasting live data over a network
US7457879B2 (en) * 2003-04-01 2008-11-25 Microsoft Corporation Notification platform architecture
JP4303688B2 (en) * 2003-05-21 2009-07-29 富士通株式会社 Data access response system and method for accessing data access response system
FR2857763A1 (en) * 2003-07-18 2005-01-21 Canon Kk METHOD OF ACCESSING AND SHARING A DIGITAL DOCUMENT IN A P2P COMMUNICATION NETWORK
EP1690368B1 (en) * 2003-11-12 2014-07-02 Avaya Canada Corp. Peer discovery
KR100625659B1 (en) 2004-03-10 2006-09-20 에스케이 텔레콤주식회사 Peer to Peer File Searching Method between Mobile Communication Terminals in Wireless Environment
GB2412279A (en) * 2004-03-16 2005-09-21 Bbc Technology Holdings Ltd Data distribution system and method
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US8868772B2 (en) 2004-04-30 2014-10-21 Echostar Technologies L.L.C. Apparatus, system, and method for adaptive-rate shifting of streaming content
US7716324B2 (en) * 2004-05-12 2010-05-11 Baytsp.Com, Inc. Identification and tracking of digital content distributors on wide area networks
WO2006034563A1 (en) * 2004-09-30 2006-04-06 Avaya Canada Corp. System and methods for announcing and locating services in a distributed peer-to-peer network
US7796520B2 (en) 2004-09-30 2010-09-14 Avaya Canada Corp. System and methods for announcing and locating services in a distributed peer-to-peer network
US20060067327A1 (en) * 2004-09-30 2006-03-30 Behrouz Poustchi Information distribution system, method and network devices
US20060090069A1 (en) * 2004-10-22 2006-04-27 Venturcom, Inc. Method and system for caching read requests from a shared image in a computer network
US20080052410A1 (en) * 2004-10-29 2008-02-28 Serge Soulet Method, System and Means for Transmitting a Data Package to a Plurality of Computers Distributed Through a Set of Distinct Local Networks
US7818401B2 (en) * 2004-12-23 2010-10-19 General Instrument Corporation Method and apparatus for providing decentralized load distribution
JP4749742B2 (en) * 2005-03-07 2011-08-17 シャープ株式会社 Information exchange system
US8683066B2 (en) 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
US8370514B2 (en) 2005-04-28 2013-02-05 DISH Digital L.L.C. System and method of minimizing network bandwidth retrieved from an external network
US20060294022A1 (en) * 2005-06-22 2006-12-28 Dayan Richard A Apparatus, system, and method for enabling a service
JP4862346B2 (en) * 2005-10-17 2012-01-25 富士ゼロックス株式会社 Download system and program
DE602005010723D1 (en) * 2005-12-02 2008-12-11 Mitel Networks Corp Distributed server network
US8392400B1 (en) * 2005-12-29 2013-03-05 Amazon Technologies, Inc. Method and apparatus for stress management in a searchable data service
US7801912B2 (en) * 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US7765192B2 (en) 2006-03-29 2010-07-27 Abo Enterprises, Llc System and method for archiving a media collection
US7444388B1 (en) 2006-04-13 2008-10-28 Concert Technology Corporation System and method for obtaining media content for a portable media player
CN101083600A (en) * 2006-05-29 2007-12-05 华为技术有限公司 Method for realizing distributed storage network and data distributed storage
US8468131B2 (en) 2006-06-29 2013-06-18 Avaya Canada Corp. Connecting devices in a peer-to-peer network with a service provider
US8218529B2 (en) 2006-07-07 2012-07-10 Avaya Canada Corp. Device for and method of terminating a VoIP call
US8620699B2 (en) 2006-08-08 2013-12-31 Napo Enterprises, Llc Heavy influencer media recommendations
US7617322B2 (en) * 2006-09-29 2009-11-10 Microsoft Corporation Secure peer-to-peer cache sharing
US20080178230A1 (en) 2006-12-05 2008-07-24 Crackle, Inc. Video sharing platform providing for public and private sharing and distributed downloads of videos
US8307092B2 (en) * 2007-02-21 2012-11-06 Napo Enterprises, Llc Method and system for collecting information about a user's media collections from multiple login points
EP1983723B1 (en) * 2007-04-17 2012-05-30 Vodafone Holding GmbH Method and central processing unit for managing peer-to-peer connections
US20090187978A1 (en) * 2008-01-18 2009-07-23 Yahoo! Inc. Security and authentications in peer-to-peer networks
CN101247370B (en) * 2008-03-14 2010-09-29 中国网通集团宽带业务应用国家工程实验室有限公司 Method and system for implementing message presentation service
JP5325978B2 (en) * 2008-05-20 2013-10-23 トムソン ライセンシング Content map distribution system and method usable in a plurality of receivers
US8583682B2 (en) * 2008-12-30 2013-11-12 Microsoft Corporation Peer-to-peer web search using tagged resources
US8185566B2 (en) 2009-01-15 2012-05-22 Microsoft Corporation Client-based caching of remote files
EP2237477A1 (en) * 2009-03-31 2010-10-06 Siemens Aktiengesellschaft Data transfer to multiple operating stations
CN101674330A (en) * 2009-10-09 2010-03-17 中兴通讯股份有限公司 Service interaction method and device thereof
US9510029B2 (en) 2010-02-11 2016-11-29 Echostar Advanced Technologies L.L.C. Systems and methods to provide trick play during streaming playback
CN103731451B (en) * 2012-10-12 2018-10-19 腾讯科技(深圳)有限公司 A kind of method and system that file uploads
US9596312B2 (en) * 2013-01-28 2017-03-14 Facebook, Inc. Static resource caching
US11310312B2 (en) 2014-07-07 2022-04-19 Citrix Systems, Inc. Peer to peer remote application discovery
US11283866B2 (en) 2014-07-07 2022-03-22 Citrix Systems, Inc. Providing remote access to applications through interface hooks

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151989A (en) 1987-02-13 1992-09-29 International Business Machines Corporation Directory cache management in a distributed data processing system
US5261069A (en) 1990-08-13 1993-11-09 Hewlett-Packard Company Method of maintaining consistency of cached data in a database system
US5249290A (en) * 1991-02-22 1993-09-28 At&T Bell Laboratories Method of and apparatus for operating a client/server computer network
GB2294132A (en) * 1994-10-10 1996-04-17 Marconi Gec Ltd Data communication network
US5689708A (en) 1995-03-31 1997-11-18 Showcase Corporation Client/server computer systems having control of client-based application programs, and application-program control means therefor
US5729689A (en) 1995-04-25 1998-03-17 Microsoft Corporation Network naming services proxy agent
US5793973A (en) 1995-07-14 1998-08-11 Microsoft Corporation Method and system for opportunistic broadcasting of data
US5864854A (en) * 1996-01-05 1999-01-26 Lsi Logic Corporation System and method for maintaining a shared cache look-up table
US5822523A (en) 1996-02-01 1998-10-13 Mpath Interactive, Inc. Server-group messaging system for interactive applications
US5754774A (en) 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US5835720A (en) 1996-05-17 1998-11-10 Sun Microsystems, Inc. IP discovery apparatus and method
US5787470A (en) * 1996-10-18 1998-07-28 At&T Corp Inter-cache protocol for improved WEB performance
US5884046A (en) 1996-10-23 1999-03-16 Pluris, Inc. Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network
US6021426A (en) 1997-07-31 2000-02-01 At&T Corp Method and apparatus for dynamic data transfer on a web page

Cited By (198)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040213283A1 (en) * 1999-08-09 2004-10-28 Mitsubishi Material Corporation Information transmitting apparatus, information saving apparatus, information receiving apparatus, method for using the same, and recording medium thereof
US20020099773A1 (en) * 2001-01-25 2002-07-25 Kaoru Tsuru Data communication apparatus and data communication method
US20020143892A1 (en) * 2001-04-03 2002-10-03 Mogul Jeffrey C. Reduction of network retrieval latency using cache and digest
US7315884B2 (en) * 2001-04-03 2008-01-01 Hewlett-Packard Development Company, L.P. Reduction of network retrieval latency using cache and digest
US20020156875A1 (en) * 2001-04-24 2002-10-24 Kuldipsingh Pabla Peer group name server
US7272636B2 (en) * 2001-04-24 2007-09-18 Sun Microsystems, Inc. Peer group name server
US20030101265A1 (en) * 2001-11-27 2003-05-29 International Business Machines Corporation System and method for dynamically allocating processing on a network amongst multiple network servers
US7734726B2 (en) * 2001-11-27 2010-06-08 International Business Machines Corporation System and method for dynamically allocating processing on a network amongst multiple network servers
US20030135556A1 (en) * 2001-12-14 2003-07-17 International Business Machines Corporation Selection of communication strategies for message brokers or publish/subscribe communications
US8909710B2 (en) 2002-01-14 2014-12-09 Colligo Networks, Inc. Method for discovering and discriminating devices on local collaborative networks to facilitate collaboration among users
US20030135552A1 (en) * 2002-01-14 2003-07-17 Blackstock Michael A. Method for discovering and discriminating devices on local collaborative networks to facilitate collaboration among users
US20090187625A1 (en) * 2002-01-14 2009-07-23 Colligo Networks, Inc., A Canadian Corporation Method for discovering and discriminating devices on local collaborative networks to facilitate collaboration among users
US9270762B2 (en) * 2002-07-08 2016-02-23 Siemens Aktiengesellschaft Method for updating services in communication networks
WO2004006094A1 (en) * 2002-07-08 2004-01-15 Siemens Aktiengesellschaft Method for updating services in communication networks
CN100350385C (en) * 2002-07-08 2007-11-21 西门子公司 Method for updating services in communication networks
US20050262222A1 (en) * 2002-07-08 2005-11-24 Ralf Neuhaus Method for updating services in communication networks
US20040117376A1 (en) * 2002-07-12 2004-06-17 Optimalhome, Inc. Method for distributed acquisition of data from computer-based network data sources
US20100146106A1 (en) * 2002-07-25 2010-06-10 Colligo Networks, Inc. Method For Context Based Discovery And Filtering Of Portable Collaborative Networks
US7613772B2 (en) 2002-07-25 2009-11-03 Colligo Networks, Inc. Method for context based discovery and filtering of portable collaborative networks
US20040019641A1 (en) * 2002-07-25 2004-01-29 Bartram Linda Ruth Method for context based discovery and filtering of portable collaborative networks
US8725865B2 (en) 2002-07-25 2014-05-13 Colligo Networks, Inc. Method for context based discovery and filtering of portable collaborative networks
US7782853B2 (en) * 2002-12-06 2010-08-24 Stmicroelectronics, Inc. Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US20040109451A1 (en) * 2002-12-06 2004-06-10 Stmicroelectronics, Inc. Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US7610381B2 (en) * 2003-09-12 2009-10-27 Hewlett-Packard Development Company, L.P. System and method for evaluating a capacity of a streaming media server for supporting a workload
US20050060389A1 (en) * 2003-09-12 2005-03-17 Ludmila Cherkasova System and method for evaluating a capacity of a streaming media server for supporting a workload
US20050114386A1 (en) * 2003-10-09 2005-05-26 Canon Kabushiki Kaisha Method and device for processing digital data
FR2860935A1 (en) * 2003-10-09 2005-04-15 Canon Kk Digital data processing method for peer-to-peer computer network, involves storing data structure establishing link between each usable part of signal and single identifier of signal in communication apparatus
US8782116B2 (en) * 2003-10-09 2014-07-15 Canon Kabushiki Kaisha Method and device for processing digital data with a unique identifier
US20090222537A1 (en) * 2003-12-04 2009-09-03 Colligo Newworks, Inc., A Canadian Corporation System And Method For Interactive Instant Networking
US8230093B2 (en) * 2004-02-18 2012-07-24 Telefonaktiebolaget Lm Ericsson (Publ) Method and device for reliable broadcast
US9787802B2 (en) 2004-02-18 2017-10-10 Telefonaktiebolaget Lm Ericsson (Publ) Technique for reliable bulk data delivery
US20070283026A1 (en) * 2004-02-18 2007-12-06 Thorsten Lohmar Method And Device For Reliable Broadcast
US7379967B2 (en) * 2005-01-28 2008-05-27 Grid Solutions, Inc. Download method for file by bit torrent protocol
US20070028133A1 (en) * 2005-01-28 2007-02-01 Argo-Notes, Inc. Download method for file by bit torrent protocol
US20060212542A1 (en) * 2005-03-15 2006-09-21 1000 Oaks Hu Lian Technology Development Co., Ltd. Method and computer-readable medium for file downloading in a peer-to-peer network
US20060212584A1 (en) * 2005-03-15 2006-09-21 Qian Xiang Shi Ji (Beijing) Technology Development Co. Ltd. Method and system for accelerating downloading of web page content by a peer-to-peer network
US20060235832A1 (en) * 2005-03-21 2006-10-19 Lg Electronics Inc. Broadcast terminal for searching broadcast content and method thereof
US20070022082A1 (en) * 2005-07-20 2007-01-25 International Business Machines Corporation Search engine coverage
US7742485B2 (en) 2005-07-29 2010-06-22 Roxbeam Media Network Corporation Distributed system for delivery of information via a digital network
KR101322947B1 (en) 2005-08-30 2013-10-29 마이크로소프트 코포레이션 Distributed caching of files in a network
US7644173B1 (en) * 2005-09-26 2010-01-05 Roxbeam Media Network Corporation System and method for facilitating expedited delivery of media content
US20070106694A1 (en) * 2005-10-31 2007-05-10 Masami Mori Structuralized document, contents delivery server apparatus, and contents delivery system
US20070157266A1 (en) * 2005-12-23 2007-07-05 United Video Properties, Inc. Interactive media guidance system having multiple devices
US20090313502A1 (en) * 2006-03-06 2009-12-17 Lg Electronics Inc. Data transferring method and content transferring method
US20090144580A1 (en) * 2006-03-06 2009-06-04 Lg Electronics Inc. Data Transfer Controlling Method, Content Transfer Controlling Method, Content Processing Information Acquisition Method And Content Transfer System
US20090307387A1 (en) * 2006-03-06 2009-12-10 Lg Electronics Inc. Drm interoperable system
US20090063629A1 (en) * 2006-03-06 2009-03-05 Lg Electronics Inc. Data transfer controlling method, content transfer controlling method, content processing information acquisition method and content transfer system
US20090313349A1 (en) * 2006-03-06 2009-12-17 Lg Electronics Inc. Data transferring method
US8997182B2 (en) 2006-03-06 2015-03-31 Lg Electronics Inc. Legacy device registering method, data transferring method and legacy device authenticating method
US8543707B2 (en) 2006-03-06 2013-09-24 Lg Electronics Inc. Data transfer controlling method, content transfer controlling method, content processing information acquisition method and content transfer system
US20090133129A1 (en) * 2006-03-06 2009-05-21 Lg Electronics Inc. Data transferring method
US20090144581A1 (en) * 2006-03-06 2009-06-04 Lg Electronics Inc. Data Transfer Controlling Method, Content Transfer Controlling Method, Content Processing Information Acquisition Method And Content Transfer System
US20090144384A1 (en) * 2006-03-06 2009-06-04 Lg Electronics Inc. Domain managing method, domain extending method and reference point controller electing method
US20090228988A1 (en) * 2006-03-06 2009-09-10 Lg Electronics Inc. Data Transferring Method And Content Transferring Method
US20090222893A1 (en) * 2006-03-06 2009-09-03 Lg Electronics Inc. Legacy device registering method, data transferring method and legacy device authenticating method
US20090177770A1 (en) * 2006-03-06 2009-07-09 Lg Electronics Inc. Domain managing method, domain extending method and reference point controller electing method
US8676878B2 (en) 2006-03-06 2014-03-18 Lg Electronics Inc. Domain managing method, domain extending method and reference point controller electing method
US8667108B2 (en) 2006-03-06 2014-03-04 Lg Electronics Inc. Domain managing method, domain extending method and reference point controller electing method
US8180936B2 (en) 2006-03-06 2012-05-15 Lg Electronics Inc. DRM interoperable system
US8560703B2 (en) 2006-03-06 2013-10-15 Lg Electronics Inc. Data transfer controlling method, content transfer controlling method, content processing information acquisition method and content transfer system
US8291057B2 (en) 2006-03-06 2012-10-16 Lg Electronics Inc. Data transferring method and content transferring method
US20090144407A1 (en) * 2006-03-06 2009-06-04 Lg Electronics Inc. Domain managing method, domain extending method and reference point controller electing method
US8301785B2 (en) 2006-03-06 2012-10-30 Lg Electronics Inc. Data transferring method and content transferring method
US8667107B2 (en) 2006-03-06 2014-03-04 Lg Electronics Inc. Domain managing method, domain extending method and reference point controller electing method
US8429300B2 (en) 2006-03-06 2013-04-23 Lg Electronics Inc. Data transferring method
US8291508B2 (en) 2006-09-06 2012-10-16 Lg Electronics Inc. Method and system for processing content
US20090293131A1 (en) * 2006-09-06 2009-11-26 Lg Electronics Inc. Method and system for processing content
US7849335B2 (en) * 2006-11-14 2010-12-07 Dell Products, Lp System and method for providing a communication enabled UPS power system for information handling systems
US20080114999A1 (en) * 2006-11-14 2008-05-15 Dell Products, Lp System and method for providing a communication enabled ups power system for information handling systems
US8918508B2 (en) 2007-01-05 2014-12-23 Lg Electronics Inc. Method for transferring resource and method for providing information
US20090292809A1 (en) * 2007-01-05 2009-11-26 Lg Electronics Inc. Method for transferring resource and method for providing information
US8584206B2 (en) 2007-02-16 2013-11-12 Lg Electronics Inc. Method for managing domain using multi domain manager and domain system
US20090300724A1 (en) * 2007-02-16 2009-12-03 Lg Electronics Inc. Method for managing domain using multi domain manager and domain system
US20080294714A1 (en) * 2007-05-22 2008-11-27 International Business Machines Corporation High Availability Message Transmission
US8307114B2 (en) 2007-05-22 2012-11-06 International Business Machines Corporation High availability message transmission
US8468266B2 (en) 2007-05-22 2013-06-18 International Business Machines Corporation High availability message transmission
US8589368B1 (en) * 2007-09-05 2013-11-19 Adobe Systems Incorporated Media players and download manager functionality
US10771552B2 (en) 2008-03-31 2020-09-08 Amazon Technologies, Inc. Content management
US10158729B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Locality based content distribution
US11194719B2 (en) 2008-03-31 2021-12-07 Amazon Technologies, Inc. Cache optimization
US10797995B2 (en) 2008-03-31 2020-10-06 Amazon Technologies, Inc. Request routing based on class
US11245770B2 (en) 2008-03-31 2022-02-08 Amazon Technologies, Inc. Locality based content distribution
US10530874B2 (en) 2008-03-31 2020-01-07 Amazon Technologies, Inc. Locality based content distribution
US11909639B2 (en) 2008-03-31 2024-02-20 Amazon Technologies, Inc. Request routing based on class
US10511567B2 (en) 2008-03-31 2019-12-17 Amazon Technologies, Inc. Network resource identification
US11451472B2 (en) 2008-03-31 2022-09-20 Amazon Technologies, Inc. Request routing based on class
US10305797B2 (en) 2008-03-31 2019-05-28 Amazon Technologies, Inc. Request routing based on class
US10554748B2 (en) 2008-03-31 2020-02-04 Amazon Technologies, Inc. Content management
US9954934B2 (en) 2008-03-31 2018-04-24 Amazon Technologies, Inc. Content delivery reconciliation
US10645149B2 (en) 2008-03-31 2020-05-05 Amazon Technologies, Inc. Content delivery reconciliation
US10157135B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Cache optimization
US9747340B2 (en) 2008-06-19 2017-08-29 Microsoft Technology Licensing, Llc Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic
US20090319473A1 (en) * 2008-06-19 2009-12-24 Microsoft Corporation Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic
US9286293B2 (en) * 2008-07-30 2016-03-15 Microsoft Technology Licensing, Llc Populating and using caches in client-side caching
US20100030871A1 (en) * 2008-07-30 2010-02-04 Microsoft Corporation Populating and using caches in client-side caching
US20100115613A1 (en) * 2008-10-31 2010-05-06 Google Inc. Cacheable Mesh Browsers
US11115500B2 (en) 2008-11-17 2021-09-07 Amazon Technologies, Inc. Request routing utilizing client location information
US10742550B2 (en) 2008-11-17 2020-08-11 Amazon Technologies, Inc. Updating routing information based on client location
US10116584B2 (en) 2008-11-17 2018-10-30 Amazon Technologies, Inc. Managing content delivery network service providers
US11283715B2 (en) 2008-11-17 2022-03-22 Amazon Technologies, Inc. Updating routing information based on client location
US9985927B2 (en) 2008-11-17 2018-05-29 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US11811657B2 (en) 2008-11-17 2023-11-07 Amazon Technologies, Inc. Updating routing information based on client location
US10523783B2 (en) 2008-11-17 2019-12-31 Amazon Technologies, Inc. Request routing utilizing client location information
US10574787B2 (en) 2009-03-27 2020-02-25 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10491534B2 (en) 2009-03-27 2019-11-26 Amazon Technologies, Inc. Managing resources and entries in tracking information in resource cache components
US10264062B2 (en) 2009-03-27 2019-04-16 Amazon Technologies, Inc. Request routing using a popularity identifier to identify a cache component
US10230819B2 (en) 2009-03-27 2019-03-12 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10521348B2 (en) 2009-06-16 2019-12-31 Amazon Technologies, Inc. Managing resources using resource expiration data
US10162753B2 (en) 2009-06-16 2018-12-25 Amazon Technologies, Inc. Managing resources using resource expiration data
US10783077B2 (en) 2009-06-16 2020-09-22 Amazon Technologies, Inc. Managing resources using resource expiration data
US10135620B2 (en) 2009-09-04 2018-11-20 Amazon Technologis, Inc. Managing secure content in a content delivery network
US10785037B2 (en) 2009-09-04 2020-09-22 Amazon Technologies, Inc. Managing secure content in a content delivery network
US9893957B2 (en) 2009-10-02 2018-02-13 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US10218584B2 (en) 2009-10-02 2019-02-26 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US10506029B2 (en) 2010-01-28 2019-12-10 Amazon Technologies, Inc. Content distribution network
US11205037B2 (en) 2010-01-28 2021-12-21 Amazon Technologies, Inc. Content distribution network
EP2400749A1 (en) 2010-06-24 2011-12-28 Koninklijke KPN N.V. Access network controls distributed local caching upon end-user download
US11336712B2 (en) 2010-09-28 2022-05-17 Amazon Technologies, Inc. Point of presence management in request routing
US10225322B2 (en) 2010-09-28 2019-03-05 Amazon Technologies, Inc. Point of presence management in request routing
US10778554B2 (en) 2010-09-28 2020-09-15 Amazon Technologies, Inc. Latency measurement in resource requests
US11632420B2 (en) 2010-09-28 2023-04-18 Amazon Technologies, Inc. Point of presence management in request routing
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US10931738B2 (en) 2010-09-28 2021-02-23 Amazon Technologies, Inc. Point of presence management in request routing
US10015237B2 (en) 2010-09-28 2018-07-03 Amazon Technologies, Inc. Point of presence management in request routing
US11108729B2 (en) 2010-09-28 2021-08-31 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US10079742B1 (en) 2010-09-28 2018-09-18 Amazon Technologies, Inc. Latency measurement in resource requests
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US10951725B2 (en) 2010-11-22 2021-03-16 Amazon Technologies, Inc. Request routing processing
US8612801B2 (en) 2011-01-25 2013-12-17 Dell Products, Lp System and method for extending system uptime while running on backup power
US9280193B2 (en) 2011-01-25 2016-03-08 Dell Products, Lp System and method for extending system uptime while running on backup power
US11604667B2 (en) 2011-04-27 2023-03-14 Amazon Technologies, Inc. Optimized deployment based upon customer locality
US10021179B1 (en) * 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US20130318250A1 (en) * 2012-05-21 2013-11-28 Rsupport Co., Ltd. Method for connecting between terminals
US10225362B2 (en) 2012-06-11 2019-03-05 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US11303717B2 (en) 2012-06-11 2022-04-12 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US11729294B2 (en) 2012-06-11 2023-08-15 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US10015241B2 (en) 2012-09-20 2018-07-03 Amazon Technologies, Inc. Automated profiling of resource usage
US10542079B2 (en) 2012-09-20 2020-01-21 Amazon Technologies, Inc. Automated profiling of resource usage
US10645056B2 (en) 2012-12-19 2020-05-05 Amazon Technologies, Inc. Source-dependent address resolution
US10374955B2 (en) 2013-06-04 2019-08-06 Amazon Technologies, Inc. Managing network computing components utilizing request routing
JP2015094962A (en) * 2013-11-08 2015-05-18 富士ゼロックス株式会社 Relay device, terminal device, and program
US10841650B2 (en) 2014-04-07 2020-11-17 The Nielsen Company (Us), Llc Signature retrieval and matching for media monitoring
US11533535B2 (en) 2014-04-07 2022-12-20 The Nielsen Company (Us), Llc Signature retrieval and matching for media monitoring
EP3595326A1 (en) * 2014-04-07 2020-01-15 The Nielsen Company (US), LLC Signature retrieval and matching for media monitoring
CN104052808A (en) * 2014-06-13 2014-09-17 乐视网信息技术(北京)股份有限公司 Digital content acquiring method and system based on CDN
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11863417B2 (en) 2014-12-18 2024-01-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11381487B2 (en) 2014-12-18 2022-07-05 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10728133B2 (en) 2014-12-18 2020-07-28 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11297140B2 (en) 2015-03-23 2022-04-05 Amazon Technologies, Inc. Point of presence based data uploading
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US10469355B2 (en) 2015-03-30 2019-11-05 Amazon Technologies, Inc. Traffic surge management for points of presence
WO2016156386A1 (en) * 2015-03-30 2016-10-06 Tdf System for broadcasting audio and/or video content via a local wifi network, and devices implementing the method
US10180993B2 (en) 2015-05-13 2019-01-15 Amazon Technologies, Inc. Routing based request correlation
US10691752B2 (en) 2015-05-13 2020-06-23 Amazon Technologies, Inc. Routing based request correlation
US11461402B2 (en) 2015-05-13 2022-10-04 Amazon Technologies, Inc. Routing based request correlation
US11327951B2 (en) 2015-07-10 2022-05-10 Whether or Knot LLC Systems and methods for weather data distribution
US11093481B2 (en) 2015-07-10 2021-08-17 Whether or Knot LLC Systems and methods for electronic data distribution
US10452647B2 (en) 2015-07-10 2019-10-22 Whether or Knot LLC Systems and methods for electronic data distribution
US10437814B2 (en) 2015-07-10 2019-10-08 Whether or Knot LLC Systems and methods for weather data distribution
WO2017011327A1 (en) * 2015-07-10 2017-01-19 Whether or Knot LLC Systems and methods for electronic data distribution
US10078658B2 (en) 2015-07-10 2018-09-18 Whether or Knot LLC Systems and methods for electronic data distribution
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US10200402B2 (en) 2015-09-24 2019-02-05 Amazon Technologies, Inc. Mitigating network attacks
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US11134134B2 (en) 2015-11-10 2021-09-28 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10666756B2 (en) 2016-06-06 2020-05-26 Amazon Technologies, Inc. Request management for hierarchical cache
US11463550B2 (en) 2016-06-06 2022-10-04 Amazon Technologies, Inc. Request management for hierarchical cache
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US11457088B2 (en) 2016-06-29 2022-09-27 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10516590B2 (en) 2016-08-23 2019-12-24 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10469442B2 (en) 2016-08-24 2019-11-05 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10616250B2 (en) 2016-10-05 2020-04-07 Amazon Technologies, Inc. Network addresses with encoded DNS-level information
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US10505961B2 (en) 2016-10-05 2019-12-10 Amazon Technologies, Inc. Digitally signed network address
US11330008B2 (en) 2016-10-05 2022-05-10 Amazon Technologies, Inc. Network addresses with encoded DNS-level information
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US11762703B2 (en) 2016-12-27 2023-09-19 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US11290418B2 (en) 2017-09-25 2022-03-29 Amazon Technologies, Inc. Hybrid content request routing system
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US11362986B2 (en) 2018-11-16 2022-06-14 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
CN114025376A (en) * 2021-11-10 2022-02-08 江苏思极科技服务有限公司 Trusted utilization system for idle bandwidth of network load equipment 5G

Also Published As

Publication number Publication date
JP2000137641A (en) 2000-05-16
EP0993163A1 (en) 2000-04-12
US6374289B2 (en) 2002-04-16

Similar Documents

Publication Publication Date Title
US6374289B2 (en) Distributed client-based data caching system
US6983326B1 (en) System and method for distributed function discovery in a peer-to-peer network environment
US7620816B1 (en) System and method for automatic selection of service provider for efficient use of bandwidth and resources in a peer-to-peer network environment
US7055036B2 (en) System and method to verify trusted status of peer in a peer-to-peer network environment
US20200296185A1 (en) Service request management
US6542964B1 (en) Cost-based optimization for content distribution using dynamic protocol selection and query resolution for cache server
US10771541B2 (en) Automated management of content servers based on change in demand
US7721110B2 (en) System and method for secure and verified sharing of resources in a peer-to-peer network environment
EP1493094B1 (en) Method and system for tiered distribution in a content delivery network
US7305375B2 (en) Method and system for distributed remote resources
US5933849A (en) Scalable distributed caching system and method
RU2413981C2 (en) Distributed file caching in network
US6912562B1 (en) Cache invalidation technique with spurious resource change indications
US6850968B1 (en) Reduction of network server loading
US7181506B1 (en) System and method to securely confirm performance of task by a peer in a peer-to-peer network environment
US20020133537A1 (en) Server cluster and server-side cooperative caching method for use with same
US7373394B1 (en) Method and apparatus for multicast cloud with integrated multicast and unicast channel routing in a content distribution network
US20030028626A1 (en) Dynamically configuring network communication parameters for an application
JP2002335268A (en) Slicing persistent connections
US7343395B2 (en) Facilitating resource access using prioritized multicast responses to a discovery request
EP1344347B1 (en) Managing network traffic using hashing functions
JP2002525749A (en) Internet caching system, method and system configuration
KR100768631B1 (en) Method And Apparatus For Content Routing Of Content Level In The Content Delivery Network
US7260606B1 (en) Attenuation, delay, queuing, and message caching processes for use in e-mail protocols in order to reduce network server loading
KR100450605B1 (en) A web application sever and method for providing dynamic contents thereof

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FEPP Fee payment procedure

Free format text: PAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 8

RR Request for reexamination filed

Effective date: 20100217

FEPP Fee payment procedure

Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: BACKWEB TECHNOLOGIES LTD., ISRAEL

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DELANY, HUBERT;RUPPIN, ADI;HASS, LIOR;AND OTHERS;REEL/FRAME:029448/0367

Effective date: 19981020

AS Assignment

Owner name: RPX CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BACKWEB TECHNOLOGIES LTD.;REEL/FRAME:029627/0269

Effective date: 20121227

B1 Reexamination certificate first reexamination

Free format text: THE PATENTABILITY OF CLAIM 15 IS CONFIRMED.CLAIMS 1, 3-5, 9, 16, 19-20, 22 AND 23 ARE CANCELLED.CLAIMS 2, 6-8, 10-14, 17-18 AND 21 WERE NOT REEXAMINED.

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: JEFFERIES FINANCE LLC, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:RPX CORPORATION;REEL/FRAME:046486/0433

Effective date: 20180619

AS Assignment

Owner name: RPX CORPORATION, CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:054486/0422

Effective date: 20201023