`
`US008560604B2
`
`(IO) Patent No.: US 8,560,604 B2
`
`c12) United States Patent
`
`(45)Date of Patent:
`
`Shribman et al.
`
`Oct. 15, 2013
`
`(54)SYSTEM AND METHOD FOR PROVIDING
`FASTER AND MORE E FFICIENT DATA
`COMMUNICATI ON
`
`(75)Inventors: Derry Shribman, Netanya (IL); O fer
`
`
`
`Netanya (IL)
`Vilenski,
`
`1/2011 Samuels et al. ............... 709/223
`
`
`
`7,865,585 B2 *
`
`1/2003 Chan et al. .................... 709/236
`2003/0009583 Al*
`
`9/2003 Wang et al.
`
`2003/0174648 Al
`5/2004 Yeager et al.
`
`2004/0088646 Al
`
`7 /2007 Johnson
`
`2007/0156855 Al
`
`1/2008 Bornstein et al.
`
`2008/0008089 Al
`5/2008 Wang
`
`2008/0109446 Al
`
`9/2008 Painter et al.
`2008/0235391 Al
`
`
`
`
`
`(IL)(73) Assignee: Hola Networks Ltd. , Netanya
`
`* cited by examiner
`
`( *) Notice: Subject to any disclaimer, the term ofthis
`
`
`
`
`
`patent is extended or adjusted under 35
`- Minh-Chau Nguyen
`
`
`Primary Examiner
`U.S.C. 154(b) by 451 days.
`
`
`
`
`Phinney Bass + Green PA
`
`Sheehan (74)Attorney, Agent, or Firm - Peter A. Nieves;
`
`(21)Appl. No.: 12/836,059
`
`(22)Filed:
`Jul. 14, 2010
`
`(57)
`
`ABSTRACT
`
`(65)
`
`
`
`P rior Publication Data
`
`
`
`
`
`A system designed for increasing network communication
`
`
`
`
`
`speed for users, while lowering network congestion for con
`
`tent owners and ISPs. The system employs network elements
`
`
`
`
`including an acceleration server, clients, agents, and peers,
`
`
`
`
`where communication requests generated by applications are
`
`
`(60)Provisional application No. 61/249,624, filed on Oct.
`
`
`
`intercepted by the client on the same machine. The IP address
`8, 2009.
`
`
`
`
`of the server in the communication request is transmitted to
`
`
`
`
`the acceleration server, which provides a list of agents to use
`(51) I nt. Cl.
`
`
`for this IP address. The communication request is sent to the
`G06F 15116 (2006.01)
`
`
`
`
`agents. One or more of the agents respond with a list of peers
`(52)U.S. Cl.
`
`
`that have previously seen some or all of the content which is
`
`
`USPC ............................ 709/203; 709/228
`709/204;
`
`
`
`
`
`the response to this request ( after checking whether this data
`( 58) Field of Classification
`Search
`
`
`
`
`
`is still valid). The client then downloads the data from these
`
`
`
`USPC .................. 709/203-204, 217-219, 223, 236
`
`
`
`peers in parts and in parallel, thereby speeding up the Web
`
`
`
`See application file for complete search history.
`
`
`
`transfer, releasing congestion from the Web by fetching the
`
`
`
`
`information from multiple sources, and relieving traffic from
`
`
`
`Web servers by offloading the data transfers from them to
`nearby peers.
`
`US 2011/0087733 Al Apr. 14, 2011
`
`
`
`Related U.S. App lication Data
`
`(56)
`
`
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`7,120,666 B2 * 10/2006 McCanne et al. ............. 709/203
`
`
`
`
`7,203,741 B2 * 4/2007 Marco et al ................... 709/223
`
`
`
`20 Claims, 15 Drawing Sheets
`
`CLIENT
`DEVICE
`
`,,.
`
`CLIENT
`DEVICE
`li
`
`CLIENT
`DEVICE
`ll
`
`CLIENT
`DEVICE
`!l!
`
`CLIENT
`DEVICE
`
`_,.
`
`PROXY
`SERVER
`
`•
`
`WEB
`SERVER
`'-"
`
`WEB
`SERVER
`
`,_,
`
`WEB
`SERVER
`
`""
`
`Metacluster LT, UAB
`EX1004
`Page 1 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 1 of 15
`
`US 8,560,604 B2
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`CLIENT
`DEWICE
`14
`
`CLIENT
`DEWICE
`L6
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`CLIENT
`DEWIC
`O
`
`CLENT
`DEWICE
`12
`
`
`
`
`
`
`
`PROXY
`SERVER
`4.
`
`WEB
`SERWER
`30
`
`PROXY
`SERWER
`
`WEB
`SERVER
`32
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`CLEN
`DEWICE
`LS
`
`CLEN
`DEWICE
`20
`
`WEB
`SERWER
`34
`
`
`
`
`
`
`
`
`
`
`
`
`
`PROXY
`SERWER
`
`FIG 11
`
`Page 2 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 2 of 15
`
`US 8,560,604 B2
`
`SERVER
`80
`
`FIG 2
`
`
`
`
`
`CLEN
`DEWICE
`60
`
`Page 3 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 3 of 15
`
`US 8,560,604 B2
`
`ACCELERATION
`SERVER
`162
`
`
`
`
`
`
`
`
`
`STORAGE
`DEWICE
`154
`
`WEB
`SERVER
`152
`
`
`
`CLIEN
`O
`
`FIG 3
`
`Page 4 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 4 of 15
`
`US 8,560,604 B2
`
`
`
`
`
`
`
`
`
`LEIN (JELLNI
`
`èJESMAO-18E
`
`FIZ
`
`ERHV/WALHOS
`
`?I?
`
`(~~
`
`Page 5 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 5 Of 15
`
`US 8,560,604 B2
`
`
`
`APPLICATION
`LEVEL
`270
`
`INTERNET
`BROWSER
`214
`
`OTHER
`APPLICATIONS
`216
`
`ACCELERATION
`APPLICATION
`220
`
`OPERATING
`SYSTEM
`LEVEL
`260
`
`INTERMMEDIATE DRIVER
`272
`
`COMMUNICATION
`STACKS
`264
`
`Y-
`
`-
`
`DEVICE DRIVERS
`262
`
`OPERATING
`SYSTEM
`230
`
`MEMORY
`210
`
`FIG. 5
`
`Page 6 of 27
`
`
`
`NOILVYS1S99V
`
`
`
`
`
`JINGOWLNADVJINGOWY33dJINGOWLNAaND
`
`
`
`
`
`NOILVYNSIANOD
`
`asvav.vad
`
`082
`
`
`
`
`
`ASVEVLVdAHOVD
`
`782
`
`
`
`ADIAACADVYOLS
`
`802
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 6 of 15
`
`US 8,560,604 B2
`
`vezNOILVYd1S99
`
`
`
`YaZIIVILINIWALSAS
`
`JTINGOW
`
`NOILVOMIddV
`
`022
`
`Page 7 of 27
`
`Page 7 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 7 of 15
`
`US 8,560,604 B2
`
`62
`
`?
`
`ACCELERATION DATABASE 16A
`166 AGENT PADDRESS ONLINE OFFLNE
`
`>>> INDEXED BY AGENT PARESS
`
`CACHE DATABASE 282
`286 LS OF URLS:
`288 URL 1
`290 URL
`292 URL H P HEADERS
`294 AST CHECKED ON SERVER
`296 LAST CHANGED ON SERVER
`298 LST OF CHUNKS FOR THIS URL:
`300 CHUNK
`302 CHUNK CHECKSUM
`304 CHUNK DATA
`306 LIST OF PEERS:
`308 PEER 1
`30 PEER 1 PADDRESS
`312 PEER2 CONNECTION STATUS
`FIG. 7
`
`Page 8 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 8 of 15
`
`US 8,560,604 B2
`
`300
`
`-
`
`INITIALIZER SIGNS UP WITH
`ACCELERATION SERVER
`302
`
`DETERMINE IF THERE IS AN
`UPDATED VERSION OF
`APPLICATION?
`304
`
`
`
`INITIALIZER REDIRECTS
`OUTGOING NETWORK TRAFFIC
`306
`
`INITIALIZER LAUNCHES CLIENT
`MODULE AND CONFIGURES
`CLIENT MODULE TO INTERCEPT
`ALL OUTGOING NETWORK
`COMMUNICATIONS
`308
`
`INITIALIZER LAUNCHES AGENT
`MODULE AND PEER MODULE
`310
`
`FIG. 8
`
`Page 9 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 9 Of 15
`
`US 8,560,604 B2
`
`
`
`APPLICATION ON CLIENT INITIATES
`RECQUEST FOR A RESOURCE ON A
`NETWORK
`352
`
`. 350
`
`RESOURCE RECQUEST IS INTERCEPTED BY
`THE CLIENT MODULE
`354
`
`CLIENT MODULE LOOKS UP IP ADDRESS OF
`SERVER THAT IS TARGET OF RESOURCE
`RECQUEST AND SENDS IP ADDRESS TO
`ACCELERATION SERVER TO OBTAIN LIST
`OF COMMUNICATION DEVICES THAT
`CLIENT CAN USE AS AGENTS
`356
`
`ACCELERATION SERVER PREPARES A LIST
`OFAGENTS THAT MAYBE SUITABLE TO
`HANDLE THE RECQUEST FROM THIS IP
`ADDRESS
`358
`
`CLIENT SENDS ORIGINAL REOUEST TO ALL
`AGENTS IN THE LIST RECEIVED FROM
`ACCELERATION SERVER TO DETERMINE
`WHICH AGENT IN THE LIST IS BEST SUITED
`TO ASSIST WITH THE REGUEST
`360
`
`FIG. 9
`
`Page 10 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 10 of 15
`
`US 8,560,604 B2
`
`EACHAGENT THAT RECEIVES CLIENT REQUEST RESPONDS TO CLIENT WITH
`WHETHER IT HAS INFO. REGARDING REGUEST THAT CANASSIST CLIENT TO
`DOWNLOAD REGUESTED INFO. FROMPEERS IN NETWORK
`382
`
`CLIENT SELECTS SPECIFICAGENT
`
`384
`
`
`
`
`
`
`
`
`
`CLIENT NOTIFIESSELECTED AGENT OF USE FOR RECQUEST AND NOTIFIES OTHER
`AGENTS OF LACK OF USE
`386
`
`CLIENT FORWARDS SELECTED AGENT REQUEST FOR FIRSTX NUMBER OF
`CHUNKS
`388
`
`DOES SELECTED AGENT HAVE INFO, REGARDING
`REGUESTED CHUNKS AND IS INFO. STILL VALID?
`390
`
`YES
`
`
`
`IF INFO. STILL VALID, SELECTED
`AGENT RESPONDS TO CLIENT WITH
`CHECKSUM OF CHUNK, LIST OF
`PEERS THAT CONTAIN CHUNKS, AND
`IF ONLY A PORTION OF INFO.,
`HEADERS
`392
`
`LIST OF PEERS FOREACH CHUNKS
`SORTED BY GEOGRAPHICAL
`PROXIMITY TO REGUESTING CLIENT
`394
`
`LIST OF CLOSEST PEERS TO CLIENT
`ISSENT TO CLIENT
`396
`
`SELECTED AGENT SENDS REQUEST
`DIRECTLY TO SERVER
`400
`
`SELECTED AGENT STORES INFO.
`FROM SERVER IN ITS DATABASE
`402
`
`SELECTED AGENT PREPARES
`RESPONSE (LIST) FOR CLIENT,
`WHERE RESPONSE INCLUDES
`CHECKSUM OF CHUNK, HEADERS,
`AND PROVIDES ITSELF AS THE ONLY
`PEER FOR THESE CHUNKS
`404
`
`LIST IS FORWARDED BACK TO
`CLIENT
`406
`
`
`
`FIG 10
`
`Page 11 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 11 of 15
`
`US 8,560,604 B2
`
`
`
`CLIENT RECEIVES RESPONSE FROM THE AGENT AND FOREACH OFX CHUNKS,
`CLIENT SENDS AREQUEST TO EACH OF THE PEERS LSTED FOR THE CHUNK TO
`DOWNLOAD THE DATA OF THAT CHUNK
`422
`
`PEERS RESPOND REGARDING WHETHER THEY STILL HAVE THE DATA OF THE
`CHUNK
`424
`
`CLIENT SELECTS QUICKEST PEER WITH DATA OF THE CHUCK 426
`
`CHOSEN PEER SENDS CHUNK TO CLIENT
`
`428
`
`CLIENT STORES CHUNKS IN ITS CACHE FORFUTURE USE
`
`430
`
`IF ANY CHUNKS WERE NOT LOADED FROMANY OF THE PEERS, CLIENT REQUESTS
`CHUNKS AGAIN FROMAGENT
`432
`
`CLIENT ACKNOWLEDGES TO THE AGENT WHICH OF THE CHUNKS IT RECEIVED
`PROPERLY
`434
`
`AGENT LOOKS UP CHUNKS IN DATABASE OF AGENT AND ADDS CLIENT TO LIST
`OF PEERS FOR THESE CHUNKS
`436
`
`CLIENT PASSES DATA TO APPLICATION OF CLIENT THAT MADE REQUEST 438
`
`CLIENT CHECKS WHETHER ALL OF THE CHUNKS FOR RECQUEST WERE RECEIVED
`440
`
`FIG. 11
`
`420
`
`Page 12 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 12 of 15
`
`US 8,560,604 B2
`
`LOOK UP HTTP REQUEST IN
`DATABASE, GET ITS HTTP HEADERs
`5O2
`
`USING STANDARD HTTP
`PROTOCOL CHECK THE HEADERS
`TO SEE IF THE URLIS STILL VALID
`AT THIS TIME (USING HTTP
`HEADER INFORMATION SUCH AS
`'MAX AGE', 'NO CACHE", MUST
`REVALIDATE", ETC.)
`504
`
`
`
`
`
`
`
`
`
`
`
`IS DATA CACHED FOR THIS
`REQUEST STILL VALID?
`506
`
`
`
`
`
`
`
`SEND HTTP CONDITIONAL REQUEST
`TO THE WEB SERVER TO CHECK IF
`THE DATA STORED FOR THIS
`REQUEST IS STILL VALID
`50
`
`RETURN "VALID"
`508
`
`IS CACHED DATA STILL VALIDP
`512
`
`RETURN "NVALID"
`514
`
`FIG 12
`
`Page 13 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 13 of 15
`
`US 8,560,604 B2
`
`CHECK"KEEPAVEW, IHNETWORK
`MNTSCIENTS/AGENTS/PRS), AND
`UPDATEOAABASEASTOTHERSTATUS
`(ON-LINEA OFF-INE)
`
`
`
`CHECK VERSION
`
`FORTHENEXT5ACTMEAG ENTS
`HATHASHEPADDRESS THAT
`SOLOSESTOTHEARGET
`SERVERP
`(EG. 192,166.3.103 ISOOSERTO
`1955.322 THENTO
`192.167.3.104)
`
`FG 13
`
`Page 14 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 14 of 15
`
`US 8,560,604 B2
`
`
`
`6 OO
`
`NETWORK A PPLICATION ON CLIENT ISSUES RE QUEST TO
`CONNECT TO A TCP IP SERVER
`5 O1.
`
`CoNNECTION REQUEST Is INTERCEPTED BY
`ACCELERATION APPLICATION ON THE CENT
`
`CLIENT MODULE SENDS THE IP ADDRESS OF THE TCPIP
`SERVER TO THE ACCELERATION SERVER TO OBTAIN AN
`A GENT LIST
`6 O4
`
`A CCELERATION SERVER PRE PARES A LIST OF A GENTS
`THAT MAY BE SUITABLE TO HANDLE THE REQUEST FROM
`THIS IP ADDRESS (FOR EXAMPLE, A PRIMARY AGENT AND
`F OUR SE COND ARY AG ENTS), AND SEND S THE LIST TO THE
`CLIENT
`6 O6
`
`CLIENT ISSUES A TCPP CONNECT WITH THE PRIMARY
`AG ENT ( or o NE o F THE O THE R A GENTs IF THE PRIMARY
`A GENT CONNECT DOES NOT SUCCEED) TO ESTABLISH A
`T CPIP CONNECTION WITH AN AG ENT
`SO 8
`
`CLENT SENDS TO THE AGENT THE IP ADDRESS OF THE
`TCPP SERVER THAT THE COMMUNI CATION APPLICATION
`WANTs To C on NECT WITH AND THE PORT To WHICH IT
`WANTS TO CONNECT
`61. O
`
`AGENT ISSUES A TCP IP CONNECT WITH THE TCPIP
`SERVER TO THE IP AND PORT RECEIVED FROM THE CENT
`61.2
`
`F.G. 14
`
`Page 15 of 27
`
`
`
`U.S. Patent
`
`Oct. 15, 2013
`
`Sheet 15 Of 15
`
`US 8,560,604 B2
`
`ACCELERATION APPLICATION INTERCEPTS A TCPIP WRITE COMMAND FROM THE
`COMMUNICATION APPLICATION (ON CLIENT) OR FROM TCPIP SERVER (ONAGENT) 802
`
`DATA OF WRITE COMMAND IS BROKEN UP INTO CHUNKS AND CHECKSUMS ARE
`CALCULATED FOREACH CHUNK 804
`
`ACCELERATION APPLICATION LOOKS UP EACH CHUNK'S CHECKSUMINTS CACHE
`DATABASE 806
`y
`DOES AN ENTRY FOR THE CHECKSUMEXIST IN THE CACHE DATABASE? 808
`
`YES
`
`ACCELERATION APPLICATION PREPARES
`LIST OF PEERS THAT HAVE RECEIVED THIS
`CHUNK IN THE PAST 810
`
`ACCELERATION APPLICATION SENDS PEER
`LIST TO COMMUNICATION DEVICE IT IS
`COMMUNICATING WITH (CLIENT TO AGENT,
`ORAGENT TO CLIENT), AND ADDS THAT
`COMMUNICATION DEVICE TO THE LIST OF
`PEERS FOR THAT CHUNK 812
`
`COMMUNICATION DEVICE WITH
`ACCELERATION APPLICATION THAT
`RECEIVED THE LIST OF PEERS CONNECTS
`TO AT LEAST ONE OF THE PEERS AND
`DOWNLOADS THE CHUNK FROM IT 814
`
`
`
`
`
`
`
`NO
`
`ACCELERATION APPLICATION ADDS
`THE CHUNK AND ITS CHECKSUM TO
`ITS CACHE DATABASE, AND SENDS
`THE CHUNK ITSELF TO THE
`COMMUNICATION DEVICE TIS
`COMMUNICATING WITH (CLIENT TO
`AGENT, OR AGENT TO CLIENT), AND
`ADDS THAT COMMUNICATION DEVICE
`TO THE LIST OF PEERS FOR THAT
`CHUNK 820
`
`NO
`
`HAVE ALL CHUNK DATA BEENTRANSFERRED TO THE OTHER SIDE? 816
`
`YES
`ACCELERATION APPLICATION PASSES ON THE COMPLETE DATA RECEIVED ON TO THE
`REQUESTER - IN THE CLIENT IT PASSES IT ON TO THE COMMUNICATION APPLICATION,
`AND IN THE AGENTIT PASSES IT ON TO THE TCPIP SERVER 818
`
`FIG. 15
`
`800
`
`Page 16 of 27
`
`
`
`US 8,560,604 B2
`
`1.
`SYSTEMAND METHOD FOR PROVIDING
`FASTER AND MORE EFFICIENT DATA
`COMMUNICATION
`
`CROSS-REFERENCE TO RELATED
`APPLICATIONS
`
`The present application claims priority to U.S. provisional
`patent application entitled “FASTER AND MORE EFFI
`CIENT DATA COMMUNICATIONSYSTEM, having Ser.
`No. 61/249,624, filed Oct. 8, 2009, which is hereby incorpo
`rated herein by reference in its entirety.
`
`FIELD OF THE INVENTION
`
`10
`
`15
`
`The present invention is related to Internet communication,
`and more particularly, to improving data communication
`speed and bandwidth efficiency on the Internet.
`
`BACKGROUND OF THE INVENTION
`
`2
`One solution that has been in use is called a “proxy'. FIG.
`1 is a schematic diagram providing an example of use of a
`proxy within a network 2. A proxy, or proxy server 4, 6, 8 is
`a device that is placed between one or more clients, illustrated
`in FIG. 1 as client devices 10, 12, 14, 16, 18, 20, that request
`data, via the Internet 22, and a Web server or Web servers 30,
`32, 34 from which they are requesting the data. The proxy
`server 4, 6, 8 requests the data from the Web servers 30, 32,34
`on their behalf, and caches the responses from the Web serv
`ers 30, 32, 34, to provide to other client devices that make
`similar requests. If the proxy server 4, 6, 8 is geographically
`close enough to the client devices 10, 12, 14, 16, 18, 20, and
`if the storage and bandwidth of the proxy server 4, 6, 8 are
`large enough, the proxy server 4, 6, 8 will speed up the
`requests for the client devices 10, 12, 14, 16, 18, 20 that it is
`Serving.
`It should be noted, however, that to provide a comprehen
`sive solution for Internet surfing, the proxy servers of FIG. 1
`would need to be deployed at every point around the world
`where the Internet is being consumed, and the storage size of
`the proxy servers at each location would need to be near the
`size of all the data stored anywhere on the Internet. The
`abovementioned would lead to massive costs that are imprac
`tical. In addition, these proxy solutions cannot deal well with
`dynamic data that is prevalent now on the Web.
`There have been commercial companies, such as Akamai,
`that have deployed such proxies locally around the world, and
`that are serving a select Small group of sites on the Internet. If
`all sites on the Web were to be solved with such a solution, the
`capital investment would be in the range of billions of dollars.
`In addition, this type of solution does not handle dynamic
`COntent.
`To create large distribution systems without the large hard
`ware costs involved with a proxy solution, “peer-to-peer file
`sharing Solutions have been introduced. Such as, for
`example, BitTorrent. FIG. 2 is a schematic diagram providing
`an example of a peer-to-peer file transfer network 50. In the
`network 50, files are stored on computers of consumers,
`referred to herein as client devices 60. Each consumer can
`serve up data to other consumers, via the Internet 62, thus
`taking the load of serving off of the distributors and saving
`them the associated costs, and providing the consumer mul
`tiple points from which to download the data, referred to
`herein as peers 70, 72, 74,76, 78, thus increasing the speed of
`the download. However, each Such peer-to-peer Solution must
`have some sort of index by which to find the required data. In
`typical peer-to-peer file sharing systems, because the index is
`on a server 80, or distributed among several servers, the
`number of files available in the system is not very large
`(otherwise, the server costs would be very large, or the lookup
`time would be very long).
`The peer-to-peer file sharing solution is acceptable in file
`sharing systems, because there are not that many media files
`that are of interest to the mass (probably in the order of
`magnitude of millions of movies and Songs that are of inter
`est). Storing and maintaining an index of millions of entries is
`practical technically and economically. However, if this sys
`tem were to be used to serve the hundreds of billions of files
`that are available on the Internet of today, the cost of storing
`and maintaining Such an index would be again in the billions
`of dollars. In addition, these types of peer-to-peer file sharing
`systems are not able to deal with dynamic HTTP data.
`In conclusion, there does not exist a system that enables
`fast transmission of most of the data on the Internet, that does
`not incur tremendous costs, and/or that provides only a very
`partial solution to the problem of Internet traffic congestion.
`
`25
`
`30
`
`35
`
`45
`
`There are several trends in network and Internet usage,
`which tremendously increase the bandwidth that is being
`used on the Internet. One such trend is that more and more
`video is being viewed on demand on the Internet. Such view
`ing includes the viewing of both large and short video clips. In
`addition, regular shows and full-featured films may be viewed
`on the Internet. Another trend that is increasing the traffic on
`the Internet is that Web sites (such as shopping portals, news
`portals, and Social networks) are becoming global, meaning
`that the Web sites are serving people in many diverse places
`on the globe, and thus the data is traversing over longer
`stretches of the Internet, increasing the congestion.
`The increase in bandwidth consumption has created sev
`eral major problems, a few of which are described below:
`The problem for users—the current Internet bandwidth is not
`sufficient, and thus the effective speed experienced by users
`is slow;
`The problem for content owners—the tremendous amount of
`40
`data being viewed by users is costing large amounts of money
`in hosting and bandwidth costs; and
`The problem for Internet Service Providers (ISPs) the
`growth in Internet traffic is requiring the ISPs to increase the
`infrastructure costs (communication lines, routers, etc.) at
`tremendous financial expense.
`The need for a new method of data transfer that is fast for
`the consumer, cheap for the content distributor and does not
`require infrastructure investment for ISPs, has become a
`major issue which is yet unsolved.
`There have been many attempts at making the Internet
`faster for the consumer and cheaper for the broadcaster. Each
`Such attempt is lacking in Some aspect to become a wide
`spread, practical solution, or is a partial Solution in that it
`solves only a subset of the major problems associated with the
`increase in Internet traffic. Most of the previous solutions
`require billions of dollars in capital investment for a compre
`hensive solution. Many of these attempts are lacking in that
`much of the content on the Internet has become dynamically
`created per the user and the session of the user (this is what
`used to be called the “Web2.0 trend). This may be seen on the
`Amazon Web site and the Salesforce Web site, for example,
`where most of the page views on these Web sites is tailored to
`the viewer, and is thus different for any two viewers. This
`dynamic information makes it impossible for most of the
`solutions offered to date to store the content and provide it to
`others seeking similar content.
`
`50
`
`55
`
`60
`
`65
`
`Page 17 of 27
`
`
`
`3
`Thus, a heretofore unaddressed need exists in the industry to
`address the aforementioned deficiencies and inadequacies.
`
`US 8,560,604 B2
`
`SUMMARY OF THE INVENTION
`
`The present system and method provides for faster and
`more efficient data communication within a communication
`network. Briefly described, in architecture, one embodiment
`of the system, among others, can be implemented as follows.
`A network is provided for accelerating data communication,
`wherein the network contains: at least one client communi
`cation device for originating a data request for obtaining the
`data from a data server; at least one agent communication
`device which is assigned to the data server for receiving the
`data request from the client communication device, wherein
`the agent keeps track of which client communication devices
`have received responses to data requests from the assigned
`data server; at least one peer communication device for Stor
`ing portions of data received in response to the data request by
`the at least one client communication device, wherein the
`portions of data may be transmitted to the at least one client
`communication device upon request by the client communi
`cation device; and at least one acceleration server for deciding
`which agent communication device is to be assigned to which
`data server and providing this information to the at least one
`client communication device.
`The present system and method also provides a communi
`cation device within a network, wherein the communication
`device contains: a memory; and a processor configured by the
`memory to perform the steps of originating a data request for
`obtaining data from a data server, being assigned to a data
`server, referred to as an assigned data server; receiving a data
`request from a separate device within the network, and keep
`ing track of which client communication devices within the
`network have received responses to data requests from the
`assigned data server, and storing portions of data received in
`response to the originated data request, wherein the portions
`of data may be transmitted to communication device upon
`request by the communication device.
`Other systems, methods, features, and advantages of the
`present invention will be or become apparent to one with skill
`in the art upon examination of the following drawings and
`detailed description. It is intended that all such additional
`systems, methods, features, and advantages be included
`within this description, be within the scope of the present
`invention, and be protected by the accompanying claims.
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`45
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`50
`
`Many aspects of the invention can be better understood
`with reference to the following drawings. The components in
`the drawings are not necessarily to Scale, emphasis instead
`being placed upon clearly illustrating the principles of the
`present invention. Moreover, in the drawings, like reference
`numerals designate corresponding parts throughout the sev
`eral views.
`FIG. 1 is a schematic diagram providing a prior art example
`of use of a proxy within a network.
`FIG.2 is a schematic diagram providing a prior art example
`of a peer-to-peer file transfer network.
`FIG. 3 is a schematic diagram providing an example of a
`communication network in accordance with the present
`invention.
`FIG. 4 is a schematic diagram further illustrating a com
`munication device of the communication network of FIG. 3.
`65
`FIG. 5 is a schematic diagram further illustrating the
`memory of FIG. 4.
`
`55
`
`60
`
`4
`FIG. 6 is a schematic diagram further illustrating elements
`of the acceleration application of FIG. 5, as well as commu
`nication paths of the acceleration application.
`FIG. 7 is a chart further illustrating two of the main data
`bases utilized within the communication network.
`FIG. 8 is a flowchart illustrating operation of the accelera
`tion system initializer module.
`FIG. 9 is a flowchart further illustrating communication
`between different elements of the communication network.
`FIG. 10 is a flowchart continuing the flowchart of FIG.9
`and focused on agent response to the HTTP request.
`FIG. 11 is a flowchart continuing the flowchart of FIG. 10,
`which illustrates actions taken upon receipt of the list of
`peers, or single peer listing, from the agent.
`FIG. 12 is a flowchart illustrating steps taken by an agent,
`client, or peer to determine whether a certain HTTP request is
`still valid.
`FIG. 13 is a flowchart outlining operation of the accelera
`tion server.
`FIG. 14 is a flowchart further illustrating TCPIP accelera
`tion in accordance with an alternative embodiment of the
`invention.
`FIG. 15 is a flowchart further illustrating TCPIP accelera
`tion in accordance with an alternative embodiment of the
`invention, detailing the communication between the client
`and the TCPIP server (read and write commands) after the
`connect phase has completed Successfully.
`
`DETAILED DESCRIPTION
`
`The present system and method provides for faster and
`more efficient data communication within a communication
`network. An example of such a communication network 100
`is provided by the schematic diagram of FIG. 3. The network
`100 of FIG.3 contains multiple communication devices. Due
`to functionality provided by software stored within each com
`munication device, which may be the same in each commu
`nication device, each communication device may serve as a
`client, peer, or agent, depending upon requirements of the
`network 100, as is described in detail herein. It should be
`noted that a detailed description of a communication device is
`provided with regard to the description of FIG. 4.
`Returning to FIG. 3, the exemplary embodiment of the
`network 100 illustrates that one of the communication
`devices is functioning as a client 102. The client 102 is
`capable of communication with one or more peers 112, 114,
`116 and one or more agents 122. For exemplary purposes, the
`network contains three peers and one agent, although it is
`noted that a client can communicate with any number of
`agents and peers.
`The communication network 100 also contains a Web
`server 152. The Web server 152 is the server from which the
`client 102 is requesting information and may be, for example,
`a typical HTTP server, such as those being used to deliver
`content on any of the many such servers on the Internet. It
`should be noted that the server 152 is not limited to being an
`HTTP server. In fact, if a different communication protocol is
`used within the communication network, the server may be a
`server capable of handling a different protocol. It should also
`be noted that while the present description refers to the use of
`HTTP, the present invention may relate to any other commu
`nication protocol and HTTP is not intended to be a limitation
`to the present invention.
`The communication network 100 further contains an accel
`eration server 162 having an acceleration server storage
`device 164. As is described in more detail herein, the accel
`eration server storage device 164 has contained therein an
`
`Page 18 of 27
`
`
`
`5
`acceleration server database. The acceleration server data
`base stores Internet protocol (IP) addresses of communica
`tion devices within the communication network 100 having
`acceleration software stored therein. Specifically, the accel
`eration server database contains stored therein a list of com
`munication devices having acceleration Software stored
`therein that are currently online within the communication
`network 100. For each such agent, the acceleration server
`assigns a list of IP addresses.
`In the communication network 100 of FIG. 3, the applica
`tion in the client 102 is requesting information from the Web
`server 152, which is why the software within the communi
`cation device designated this communication device to work
`as a client. In addition, since the agent 122 receives the
`request from the client 102 as the communication device
`closest to the Web server 152, functionality of the agent 122,
`as provided by the software of the agent 122, designates this
`communication device to work as an agent. It should be
`noted, that in accordance with an alternative embodiment of
`the invention, the agent need not be the communication
`device that is closest to the Web server. Instead, a different
`communication device may be selected to be the agent.
`Since the peers 112, 114, 116 contain at least portions of
`the information sought by the client 102 from the Web server
`152, functionality of the peers 112, 114, 116, as provided by
`the software of the peers 112, 114, 116, designates these
`communication devices to work as peers. It should be noted
`that the process of designating clients, agents, and peers is
`described in detail herein. It should also be noted that the
`number of clients, agents, peers, acceleration servers, Web
`servers, and other components of the communication network
`100 may differ from the number illustrated by FIG. 3. In fact,
`the number of clients, agents, peers, acceleration servers,
`Web servers, and other components of the communication
`network 100 are not intended to be limited by the current
`description.
`Prior to describing functionality performed within a com
`munication network 100, the following further describes a
`communication device 200, in accordance with a first exem
`plary embodiment of the invention. FIG. 4 is a schematic
`40
`diagram further illustrating a communication device 200 of
`the communication network 100, which contains general
`components of a computer. As previously mentioned, it
`should be noted that the communication device 200 of FIG. 4
`may serve as a client, agent, or peer.
`Generally, in terms of hardware architecture, as shown in
`FIG. 4, the communication device 200 includes a processor
`202, memory 210, at least one storage device 208, and one or
`more input and/or output (I/O) devices 240 (or peripherals)
`that are communicatively coupled via a local interface 250.
`The local interface 250 can be, for example but not limited to,
`one or more buses or other wired or wireless connections, as
`is known in the art. The local interface 250 may have addi
`tional elements, which are omitted for simplicity, Such as
`controllers, buffers (caches), drivers, repeaters, and receivers,
`to enable communications. Further, the local interface 250
`may include address, control, and/or data connections to
`enable appropriate communications among the aforemen
`tioned components.
`The processor 202 is a hardware device for executing soft
`ware, particularly that stored in the memory 210. The proces
`Sor 52 can be any custom made or commercially available
`processor, a central processing unit (CPU), an auxiliary pro
`cessor among several processors associated with the commu
`nication device 200, a semiconductor based microprocessor
`65
`(in the form of a microchip or chip set), a macroprocessor, or
`generally any device for executing software instructions.
`
`50
`
`35
`
`45
`
`55
`
`60
`
`US 8,560,604 B2
`
`10
`
`15
`
`25
`
`30
`
`6
`The memory 210, which is further illustrated and described
`by the description of FIG. 5, can include any one or combi
`nation of Volatile memory elements (e.g., random access
`memory (RAM, such as DRAM, SRAM, SDRAM, etc.)) and
`nonvolatile memory elements (e.g., ROM, hard drive, tape,
`CDROM, etc.). Moreover, the memory 210 may incorporate
`electronic, magnetic, optical, and/or other types of Storage
`media. Note that the memory 210 can have a distributed
`architecture, where various components are situated remote
`from one another, but can be accessed by the processor 202.
`The software 212 located within the memory 210 may
`include one or more separate programs, each of which con
`tains an ordered listing of executable instructions for imple
`menting logical functions of the communication device 200,
`as described below. In the example of FIG.4, the software 212
`in the memory 210 at least contains an acceleration applica
`tion 220 and an Internet browser 214. In addition, the memory
`210 may contain an operating system (O/S) 230. The operat
`ing system 230 essentially controls the execution of computer
`programs and provides scheduling, input-output control, file
`and data management, memory management, and communi
`cation control and related services. It should be noted that, in
`addition to the acceleration application 220, Internet browser
`214, and operating system 230, the memory 210 may contain
`other software applications.
`While the present description refers to a request from the
`client originating from an Internet browser, the present inven
`tion is not limited to requests originating from Internet brows
`ers. Instead, a request may originate from an email program or
`any other program that would be used to request data that is
`stored on a Web server, or other server holding data that is
`requested by the client device.
`Functionality of the communication device 200 may be
`provided by a source program, executable program (object
`code), Script, or any other entity containing a set of instruc
`tions to be performed. When a source program, then the
`progra