`
`
`
`
`
`
`
`
`
`Exhibit A
`
`
`
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 2 of 71
`TTTTAA
`
`US008495167B2
`
`
`
`
`
`
`
`
`
`
`
`US 8,495,167 B2
`(10) Patent No.:
`a2) United States Patent
`
`
`
`
`
`
`
`Valjakka
`Jul. 23, 2013
`(45) Date of Patent:
`
`
`
`
`(54) DATA COMMUNICATIONS NETWORKS,
`
`
`
`
`
`
`
`
`SYSTEMS, METHODS AND APPARATUS
`
`(76)
`
`
`
`
`
`
`
`Inventor: Lauri Valjakka, Espoo (FI)
`
`
`
`
`
`*)
`
`Notice:
`
`
`
`
`
`
`
`
`
`1)
`y
`Subject to any disclaimer, the term of this
`
`
`
`
`patent is extended or adjusted under 35
`
`
`
`
`U.S.C. 154(b) by 252 days.
`
`
`
`
`(21) Appl. No.: 10/208,685
`
`
`
`Filed:
`
`
`
`
`
`
`
`Jul. 30, 2002
`
`
`Prior Publication Data
`
`
`
`US 2003/0093491 Al
`May15, 2003
`
`
`
`
`Foreign Application Priority Data
`
`
`
`
`
`
`
`
`
`
`(22)
`
`(65)
`
`(30)
`
`
`
`(51)
`
`
`
`
`
`(EP) ceesessssssssseseessesssssssseessen 01660145
`
`
`
`
`
`(2006.01)
`
`
`
`
`Aug. 2, 2001
`
`
`Int. Cl.
`
`GO6F 15/167
`
`
`
`(52) U.S. CL.
`
`
`
`
`
`
`USPC woe 709/214; 709/212; 709/213; 709/216
`
`
`
`
`(58) Field of Classification Search
`
`
`
`
`
`
`USPC vce 709/216, 218, 213, 214, 215, 217,
`709/224
`
`
`
`
`
`
`
`
`See application file for complete search history.
`
`
`
`(56)
`
`
`References Cited
`
`
`
`
`
`U.S. PATENT DOCUMENTS
`
`
`
`
`
`
`
`5/1999 Joensuuetal.
`5,905,952 A
`
`
`
`
`
`3/2000 Brunsonetal. .......... 379/100.11
`6,038,296 A *
`
`
`
`
`
`6,157,965 A * 12/2000 Mohammedet al.
`........... 710/8
`
`
`
`
`
`
`6,226,673 B1*
`5/2001 Yoshimoto...........
`.. 709/223
`
`
`
`
`
`
`
`6,249,810 BI1*
`6/2001 Kiraly oe 709/217
`
`
`
`
`
`
`
`6,587,756 B2*
`7/2003 Moriguchi etal... 70/1
`
`
`
`
`
`
`
`6,873,627 B1*
`3/2005 Miller etal.
`.....
`.. 370/466
`
`
`
`
`
`
`6,879,982 B2*
`4/2005 Shirasaka occ V1
`
`
`
`
`
`
`6,912,514 B2*
`6/2005 Matsushimaet al.
`wee 705/52
`
`
`
`
`
`
`
`6,950,431 B1*
`9/2005 Nozaki etal. 0.00.00. 370/390
`
`
`
`
`6,970,939 B2* 11/2005 Sim vesesccccessseeessseeee 709/236
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`ws 709/227
`
`
`7,139,827 B1* 11/2006 Iwayamaetal.
`
`
`
`
`
`
`
`
`.. 709/235
`7,222,186 B2*
`5/2007 Kobayashi.........
`. 713/168
`
`
`
`
`
`
`
`7,228,416 B2*
`6/2007 Nishizawaetal.
`
`
`
`
`
`
`bees 455/7
`
`7,373,103 B2*
`5/2008 Sato et al. wu...
`2001/0011301 Al*
`8/2001 Satoetal. ow...
`... 709/219
`
`
`
`
`
`
`
`
`2002/0010785 Al*
`1/2002 Katsukawaet al.
`........... 709/229
`
`
`
`
`
`
`
`
`(Continued)
`FOREIGN PATENT DOCUMENTS
`
`
`0709994
`5/1996
`
`
`
`8/1996
`0726663
`
`
`
`
`(Continued)
`OTHER PUBLICATIONS
`
`
`
`
`
`
`EP
`EP
`
`
`
`
`
`
`
`
`
`
`“System and Method for communication” by Kiraly et al. Interna-
`tional Publication # WO 00/65776.*
`
`
`
`
`
`
`
`
`
`
`
`(Continued)
`
`
`
`
`Primary Examiner — Dhairya A Patel
`
`
`
`
`
`
`
`(74) Attorney, Agent, or Firm — Seppo Laine Oy; Joshua P.
`Wert
`
`
`ABSTRACT
`(57)
`
`
`
`
`
`
`A data communications network comprises a plurality of
`
`
`
`
`
`
`
`terminals and a main server adapted to manage selective
`
`
`
`
`
`
`
`
`
`retrieval of data from a first server by at least one target
`
`
`
`
`
`
`
`terminal. Someorall of the terminals are adapted to act as
`
`
`
`
`
`
`
`
`
`
`relay servers for serving data retrieved from the first server to
`
`
`
`
`
`
`
`
`
`at least one target terminal. The network includes a network
`information database and the mainserverselects at least one
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`target terminalto act as arelay server for serving data to other
`
`
`
`
`
`
`
`target terminals on the basis of terminal performance infor-
`mation storedin the network information database. Terminals
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`acting as relay servers also select further downstream target
`
`
`
`
`
`
`
`
`terminals to act as further relay servers on the basis of the
`
`
`
`
`
`
`
`
`relative performancesofthe further target terminals. The load
`
`
`
`
`
`
`
`on the main serveris thus distributed amongall of the relay
`
`
`
`
`
`servers, providing improved network performance.
`
`
`
`
`21 Claims, 4 Drawing Sheets
`
`
`Main server
`Data storage|
`
`
`
`
`
`
`
`we] fFMedia
`
`
`storage
`
`2017
`
`aeeed
` Tracking
`
`
`database
`
`
`
`1a
`12
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Ch
`
` |\ | terminalis
`
`
`
`
`
`
`
`Target terminals / .
`
`
`
`
`
`Relaying
`
`
`
`
`
`
`
`
`L.
`
`uy
`
`
`
`
`
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 3 of 71
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 3 of 71
`
`
`
`US 8,495,167 B2
`
`Page 2
`
`
`U.S. PATENT DOCUMENTS
`
`
`
`
`
`eee ee neta en ene eee een eee 709/231
`2002/0143977 Al* 10/2002 Togashi
`
`2003/0009539 Al*
`1/2003 Hattori oc 709/219
`
`
`
`
`
`
`2004/0192275 AL*
`9/2004 Kim wee 455/418
`
`
`
`
`
`
`
`
`2006/0114350 Al*
`6/2006 Shimadaetal. ........... 348/423.1
`
`
`
`
`
`
`
`
`
`WO
`WO
`Wo
`
`
`
`
`
`* 11/2000
`WO 00/65776
`
`
`
`
`11/2000
`WO 0065776
`
`
`3/2001
`WO 01/22688 Al
`
`
`OTHER PUBLICATIONS
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`“System and Method for communication” by Kiraly et al. Internal
`
`
`
`Publication # WO 00/65776.*
`
`
`
`
`
`* cited by examiner
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`EP
`
`
`HU
`
`
`
`FOREIGN PATENT DOCUMENTS
`0863646
`9/1998
`
`
`
`
`
`
`
`222337 Bl
`—-.2/2000
`
`
`
`
`
`
`
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 4 of 71
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 4 of 71
`
`
`U.S. Patent
`
`
`
`
`
`Jul. 23, 2013
`
`
`
`
`Sheet 1 of 4
`
`
`
`US 8,495,167 B2
`
`
`
`Target terminals
`
`
`
`Main serv
`
`
`
`
`
`Relaying
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Data storage|
`er
`terminals
`
`
`
`
`
`
`Media
`
`storage
`
`
`
`
`
`Tracking
`
`
`
`
`
`
`
`
`database
`
`
`
`
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 5 of 71
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 5 of 71
`
`
`U.S. Patent
`
`
`
`
`
`Jul. 23, 2013
`
`
`
`
`Sheet 2 of 4
`
`
`
`US 8,495,167 B2
`
`
`Fig.2A
`
`
`
`
`
`. NL
`
`
`
`
`
`
`
`
`
`
`TCP/IP or
`
`
`
`
`other routed
`
`
`network
`
`
`protocol
`
`
`
`
`
`sOODDODDEEDODADAEDOnADDSARESALEBOAOOsOELEDeeeesseeeesE
`
`Main server
`
`
`_ aise
`
`includes
`the
`
`terminal
`parts.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Ea
`
`
`[30]
`
`
`Ea
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Main
`
`
`
`
`
`
` application
`
`eveeraseusnusaedpadantandetaensosentre
`Ayraremnnane
`
`scence
`
`opBC /
`
`
`
`
`
`
`
`Native DB
`DB
`:
`
`
`
`
`
`
`interface
`interface
`
`i ‘
`:
`i ‘
`i ‘ 4
`‘ : ‘
`1
`Native DB interface.
`
`DB interface structure
`
`
`I/O control
`
`
`
`
`
`
`Offers the required server
`level functionality to the
`
`
`
`
`main application core for
`
`
`
`
`data transfer control and log
`
`
`
`
`data aggregation
`
`
`Database interface
`
`
`offers access to the database
`either via ODBC interface or
`
`
`
`
`to the main application
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`*
`
`
`Fi om 2B
`
`
`Fig.2c€
`
`s
`cere
`
`*Interpyets received packets
`
`
`
`
`*Stores, @ata that belongs to it
`
`
`
`
`
`
`*Pransfers packets to be relayed
`
`
`
`
`
`
`to prepafation
`*Handles resending
`
`
`
`Data reception
`
`
`“Receives individual packets
`
`
`
`
`
`
`Data preparation
`*Prepares data to be relayed
`
`
`
`
`Data transmission
`
`
`*Sends the prepared data
`
`
`
`
`| *Sends acknowledgements to
`
`
`the client
`
`
`.Routing control
`
`
`
`‘Maintains optimal data transfer
`
`
`
`
`
`rate
`
`Socket control
`
`
`*Administers socket objects
`
`
`
`Server Socket|Client Socket
`
`
`
`
`
`"Monitor
`*Transmitter
`
`
`
`Main application
`
`
`“Structure
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`42
`
`
`
`
`
`
` 52
`
`
`TCP/IP or
`
`
`other routed
`
`network
`
`
`
`protocol
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 6 of 71
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 6 of 71
`
`
`U.S. Patent
`
`
`
`
`
`Jul. 23, 2013
`
`
`
`
`Sheet 3 of 4
`
`
`
`US 8,495,167 B2
`
`Routing
`
`
`
`Main server
`
`
`
`
`Select 2 or 3
`
`
`terminals with
`
`
`
`lowest delay
`
`
`
`
`Routing requests
`
`
`
`Terminals
`
`
`
`Terminals
`
`
`
`Acknowledgements
`
`
`
`
`Update terminal
`data
`
`
`
`
`
`
`
`
`
`
`
`
`
`Fig.3A
`
`Data for all terminals
`last packet has arrived
`
`
`
`
`Data aggregate transfer process
`
`
`
`Main server 12
`
`
`
`
`
`Terminals 14
`
`
`
`
`Terminals 16
`
`
`
`
`
`Chop aggregate
`
`
`
`
`Transmit packets
`
`
`
`
`
`
`Acknowledgement when the
`
`
`
`
`
`
`
`
`
`
`
`
`Fig.3B
`
`
`
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 7 of 71
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 7 of 71
`
`
`U.S. Patent
`
`
`
`
`
`Jul. 23, 2013
`
`
`
`
`Sheet 4 of 4
`
`
`
`US 8,495,167 B2
`
`M.S
`
`
`
`TiJIN
`
`
`
`
`
`T2
`
`T3JINAN
`
`
`TBT4
`
`
`T22— 731
`
`T16ps734
`
`T19028737
`
`5
`
`
`
`
`T14
`
`723
`
`732
`
`
`T17p26T35
`
`Piep28738
`T6 ——133
`
`
`
`
`T15
`
`T20
`
`T18
`
`
`
`T36
`
`
`
`
`e530T39
`
`T21
`
`
`Fig.4
`
`
`
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 8 of 71
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 8 of 71
`
`
`
`US 8,495,167 B2
`
`
`1
`
`
`
`DATA COMMUNICATIONS NETWORKS,
`
`
`
`
`SYSTEMS, METHODS AND APPARATUS
`
`FIELD OF THE INVENTION
`
`
`
`
`
`
`
`
`
`
`
`Thepresent invention relates to improvements in data com-
`
`
`
`
`
`
`munications networks and to systems, methods and apparatus
`
`
`
`employed in such networks.
`
`
`
`
`BACKGROUNDTO THE INVENTION
`
`
`
`
`
`
`
`
`
`
`
`
`In conventional client/server data networks, such as TCP/
`
`
`
`
`
`
`
`
`IP or other routed networks, a mainserverservesall terminals
`
`
`
`
`
`
`
`
`
`via a single server socket. This results in extreme spikes in the
`
`
`
`
`
`
`
`network load, especially when data is required to be trans-
`
`
`
`
`
`
`ferred to a large numberofclients simultaneously, causing
`
`
`
`delays in data transmission.
`
`
`
`
`
`
`
`Thepresent invention seeks to provide improved network
`
`
`
`
`
`
`
`systems, methods and apparatus whereby network perfor-
`manceis enhanced.
`
`
`
`20
`
`
`
`
`
`SUMMARYOF THE INVENTION
`
`
`
`
`
`
`
`
`
`
`The invention provides improved data communications
`
`
`
`
`
`networks, methods of operating data communications net-
`
`
`
`
`
`
`
`works, network servers, network terminals and computerpro-
`
`
`
`
`
`
`gramsas defined in the claims appended hereto.
`
`
`
`
`
`25
`
`
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`
`
`
`
`
`
`
`
`
`
`Embodiments of the invention will now be described, by
`
`
`
`
`
`
`
`way of example only, with reference to the accompanying
`
`
`drawings, in which:
`
`
`
`
`
`
`FIG.1 is a diagram illustrating the operational model of a
`
`
`
`
`
`
`data communications network embodyingthe present inven-
`
`tion;
`
`
`
`
`
`
`
`FIGS. 2A, 2B and 2C are diagramsillustrating the opera-
`
`
`
`
`
`
`
`tional structure of a main server and terminals employed in
`
`
`
`the network of FIG. 1;
`
`
`
`
`
`
`FIGS. 3A and 3B are transaction diagrams illustrating
`
`
`
`
`
`
`
`
`routing and data transfer processes employed in the network
`
`
`
`of FIG. 1; and
`
`
`
`
`
`
`FIG.41s a diagram illustrating one example of a scheme for
`
`
`
`
`
`
`
`distributing data from a main server to a numberoftarget
`terminals in accordance with the invention.
`
`
`
`
`
`
`DETAILED DESCRIPTION OF THE PREFERRED
`
`
`
`EMBODIMENTS
`
`
`
`
`
`
`
`
`
`
`
`Referring now to the drawings, FIG.1 illustrates an opera-
`
`
`
`
`
`
`tional model of a simplified exemplary embodimentof a data
`communications network in accordance with the invention.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`The network includes a data storage system 10, which in this
`
`
`
`
`
`
`
`
`embodimentincludes media storage system 18 for data (i.e.
`
`
`
`
`
`
`“media”or “content’’) thatis to be selectively distributed over
`
`
`
`
`
`
`
`
`
`the network, and a tracking database 20 that is used for
`
`
`
`
`
`
`managing the operation of the networkas shall be described
`
`
`
`
`
`
`
`
`
`
`in more detail below. For convenience, data that is to be
`
`
`
`
`
`
`
`
`distributed from the media storage system 18 will be referred
`
`
`
`
`
`
`
`to herein as “content”, which will be understood to include
`
`
`
`
`
`
`
`
`
`any type of data of interest to end users, including but not
`
`
`
`
`
`
`
`
`limited to text, graphics, video, audio, executable codeetc.
`
`
`
`
`
`
`
`
`Content will generally comprise a data file of some type.
`
`
`
`
`
`
`
`For the purposesofthe present invention, “content” means
`
`
`
`
`
`
`
`
`files or parts offiles or equivalents thereof that are stored on
`
`
`
`
`
`
`
`
`a server, downloaded from the server by a client and stored by
`
`
`
`
`
`
`
`
`
`the client for subsequent use, as distinct from digital broad-
`
`30
`
`
`
`35
`
`
`
`40
`
`
`
`45
`
`
`
`50
`
`
`
`55
`
`
`
`60
`
`
`
`
`
`
`
`
`
`
`
`
`
`2
`
`
`
`
`
`
`cast media in which a data stream is transmitted by a broad-
`
`
`
`
`
`
`
`cast server and is temporarily buffered by clients and, in some
`
`
`
`
`cases, by intervening relay units.
`The network further includes a main server 12 that com-
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`municates with the media storage system 18 and tracking
`
`
`
`
`
`
`
`
`
`database 20, and controls the distribution of content from the
`
`
`
`
`
`
`
`
`
`media storage system 18. The networkalso includesa plural-
`
`
`
`
`
`
`
`ity of terminals 14 and 16, to which content is to be distrib-
`
`
`
`
`
`
`
`
`uted. In accordance with the invention, when the same con-
`
`
`
`
`
`
`tent is to be distributed to a numberofterminals,at least some
`
`
`
`
`
`
`
`of the terminals 14also act as “relay servers” in distributing
`
`
`
`
`
`
`
`the content to the remaining terminals 16 (i.e. someorall of
`
`
`
`
`
`
`
`
`the terminals mayalso be capable of acting as relay servers).
`
`
`
`
`
`
`
`
`All transactions between the media storage system 18 and
`
`
`
`
`
`
`
`
`
`the terminals 14, 16 are controlled by the main server 12. In
`
`
`
`
`
`
`
`
`
`particular, all data downloadsto the terminals from the media
`
`
`
`
`
`
`
`
`
`storage system 18 are managed by the main server 12. Gen-
`
`
`
`
`
`
`
`
`erally, content is retrieved from the storage system by the
`
`
`
`
`
`
`
`main server and forwarded on to the terminals 14, 16 by the
`
`
`
`
`
`
`
`
`
`
`main server. In some cases, however, the main server does not
`
`
`
`
`
`
`
`
`
`itself retrieve and forward content, but managestheretrieval
`
`
`
`
`
`and forwarding of content by other servers.
`
`
`
`
`
`
`
`
`The term “target terminal” used here means a terminal
`
`
`
`
`
`
`
`
`
`whichis the intendedrecipientofcontent(a data file) from the
`
`
`
`
`
`
`
`
`
`media storage 18. Each terminal 14, 16 can bethe target for a
`
`
`
`
`
`
`
`
`datafile. In this embodiment, each ofthefirst set of terminals
`
`
`
`
`
`
`
`14 is also adapted to operate as a relay server by forwarding
`data to one or more of the second set of terminals 16 as
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`described further below. The terminals 16 may also act as
`
`
`
`
`
`
`
`
`relay servers for relaying data to additional terminals (not
`
`
`
`
`
`
`
`shown) downstream thereof. It will be understoodthatnotall
`
`
`
`
`
`
`
`
`ofthe terminals includedin the network need operate as relay
`
`
`
`
`
`
`
`
`
`servers and the network may includeterminal devicesthat are
`
`
`
`
`
`
`not suited for operation as relay servers.
`
`
`
`
`
`
`
`The tracking database 20 keeps records of transactions
`
`
`
`
`
`
`
`
`
`
`between the main server 12 and the various terminals 14, 16.
`
`
`
`
`
`
`
`
`In particular, the tracking database monitors the performance
`
`
`
`
`
`
`
`(communication speed and/or other parameters suchasreli-
`
`
`
`
`
`
`
`
`ability) of all terminals that also act as relay servers in the
`network. This information is available to the main server. In
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`particular, the tracking database 12 is able to provide the main
`
`
`
`
`
`
`
`
`server withlists of terminal addresses rankedbytheir relative
`
`performances.
`
`
`
`
`
`
`
`In operation ofthe network, when a contentdatafile is to be
`
`
`
`
`
`
`
`distributed to particular target terminals, the main server 12
`
`
`
`
`
`
`initiates a data transport operation by sending a transport
`
`
`
`
`
`
`
`
`
`request to thefirst set of terminals 14, which are selected as
`
`
`
`
`
`
`
`
`being the best terminals from thelist oftarget terminals on the
`
`
`
`
`
`
`
`basis of the current performance data. The transport request
`includes:
`
`
`
`
`
`
`Details of the file to be transported. These will generally
`
`
`
`
`
`
`
`
`
`include, for example,thefile type and size, time stamps
`
`
`
`
`
`
`for activation and deactivation ofthe content, encryption
`
`
`
`
`and compression details, etc.
`
`
`
`
`
`
`
`
`The addresses of relay servers and terminals that are to be
`involvedin the distributionofthefile.
`
`
`
`
`
`
`
`
`
`
`
`
`
`The transport request sent from the main server 12 to the
`first set ofterminals 14 instructs these terminalsto retrieve the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`data from the main server 12 (or from another server address
`
`
`
`
`
`
`
`included in the transport request). The list of the remaining
`
`
`
`
`
`
`
`
`target terminal addresses is divided betweenthe first termi-
`
`
`
`
`
`
`
`
`nals 14, so that each ofthe first terminals 14 acts as a relay
`
`
`
`
`
`
`
`server for distributing the data to a subset of the remaining
`
`
`target terminals.
`
`
`
`
`
`
`
`
`
`In response to the transport request from the main server
`
`
`
`
`
`
`
`
`12, each ofthe first terminals 14 begins to downloadthefile
`from the main server 12. When oneofthefirst terminals 14
`
`
`
`
`
`
`
`
`
`
`
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 9 of 71
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 9 of 71
`
`
`
`US 8,495,167 B2
`
`
`3
`
`
`
`
`
`
`
`has received a predetermined numberofbytesofthefile, that
`
`
`
`
`
`
`terminal 14 sends a modified version of the original transport
`
`
`
`
`
`
`
`
`request to its subset of the target terminals 16. The modified
`
`
`
`
`
`
`
`
`transport request identifies the relevantfirst terminal 14 as the
`
`
`
`
`
`
`
`server address from whichits subsetofthe target terminals 16
`
`
`
`
`
`
`
`
`should retrieve the data. Depending on the numberoftarget
`
`
`
`
`
`
`
`
`terminals, the list of target terminals may be sub-divided a
`
`
`
`
`
`
`
`numberoftimes. That is, each of the secondset of terminals
`
`
`
`
`
`
`
`
`
`16 mayreceive a list of further target terminals for whichit is
`
`
`
`
`
`
`
`
`
`to act as a relay server. At each stage, it is preferred that the
`
`
`
`
`
`
`
`
`
`“best” terminals from thelist ofremainingtargets are selected
`
`
`
`
`
`
`
`to act as relay servers for the remainder.
`Wheneach terminal 14 or 16 has downloaded the whole
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`file, it sends a notification message direct to the main server
`
`
`
`12, as indicated by 22 in FIG. 1.
`
`
`
`
`
`
`
`
`The main server 12 is adapted to serve data requests from
`the first set ofterminals 14. Ifthe terminal in the secondset of
`
`
`
`
`
`
`
`
`
`terminals 16 cannot reach the terminalin the first set of the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`terminals 14 it will send the data request to the main server 12.
`
`
`
`
`
`
`
`
`Generally, the main server and each downstream terminal
`
`
`
`
`
`
`
`
`
`acting as a relay server will only serve a small number(e.g. 2
`
`
`
`
`
`
`
`to 5) of downstream terminals. If the numberoftarget termi-
`
`
`
`
`
`
`
`
`
`nals is less than or equal to this number, the target terminals
`
`
`
`
`
`
`
`
`
`
`mayall retrieve the data direct from the main server, or the
`
`
`
`
`
`
`
`
`
`
`main server may requestthe best of the target terminals to act
`
`
`
`
`
`
`
`as the relay server for the other(s).
`
`
`
`
`
`
`
`
`
`Tt will be understood that the network may include many
`
`
`
`
`
`
`
`
`more terminals than are illustrated in FIG.1, arranged ina tree
`
`
`
`
`
`
`
`structure wherein each terminalis either a node (functioning
`
`
`
`
`
`
`
`
`
`as both a relay server and a target terminal) or a leaf (func-
`
`
`
`
`
`
`
`
`tioning only as a target terminal); i.e. there may be multiple
`
`
`
`
`
`
`
`node terminals in the downstream data transmission path
`
`
`
`
`
`
`
`
`
`between the main server and each target terminal. Preferably,
`
`
`
`
`
`
`
`there is also an upstream communication path 22 from each
`
`
`
`
`
`
`
`
`
`
`terminal 14, 16 direct to the main server 12. The upstream
`
`
`
`
`
`
`path 22 is used by target terminals to acknowledgereceipt of
`
`
`
`
`
`
`
`
`data. These acknowledgements are sent directly from the
`
`
`
`
`
`
`
`
`target terminals to the main server 12 as illustrated. The
`
`
`
`
`
`
`
`
`
`
`upstream path 22 between the terminals 14 and the main
`
`
`
`
`
`
`
`
`
`server 12 has been omitted from FIG.1 for clarity of illustra-
`tion.
`
`
`
`
`
`
`
`
`
`Tt should be understood that the operational model illus-
`
`
`
`
`
`
`
`trated in FIG. 1 may be implemented using an existing, con-
`
`
`
`
`
`
`
`
`ventional network infrastructure (such as the Internet or
`
`
`
`
`
`
`
`
`equivalent) and does not require a new physical network.
`
`
`
`
`
`
`
`
`Servers and terminals may be connectedto the network back-
`
`
`
`
`
`
`
`
`bone by synchronous fixed connections such as ISDN,
`
`
`
`
`
`
`
`
`HSDL, T1 or T3 and the network may include dial-up con-
`
`
`
`
`
`
`
`nections, wireless connections etc. That is, FIG. 1 illustrates
`
`
`
`
`
`
`
`
`logical connections between the server and terminals, rather
`
`
`
`
`
`
`
`than physical connections. Further, the logical connections
`
`
`
`
`
`
`
`
`between the main server and terminals vary dynamically in
`
`
`
`
`
`
`use of the network, as shall be described further below.
`
`
`
`
`
`
`
`
`The invention is particularly suited for use whereall ter-
`
`
`
`
`
`
`
`
`minals are capable also of acting as relay servers as described
`
`
`
`
`
`
`and can be assumed to be permanently on-line. However,it
`
`
`
`
`
`
`
`
`will be understood that the invention may be adapted to
`
`
`
`
`
`
`
`
`accommodate terminals that do notalso act as relay servers
`
`
`
`
`
`
`
`
`(such terminals would alwaysbe “leaves”, at the end oflists
`
`
`
`of target terminals).
`
`
`
`
`
`
`
`Thetarget terminal requests each packetto be transferred
`
`
`
`
`
`
`
`separately. The packetto betransferred includes the informa-
`
`
`
`
`
`
`
`
`tion about the type of the data to be transferred, size, com-
`
`
`
`
`
`
`
`
`pression, and the checksumsrequired for the validation of the
`65
`
`
`
`transferred data packet.
`
`
`
`
`
`
`FIG. 2A of the drawings illustrates the operational struc-
`
`
`
`
`
`
`
`ture of the main server 12, including a network database 23
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`
`4
`
`
`
`
`
`
`
`
`for storing network information including the addressesetc.
`
`
`
`
`
`
`
`
`ofnetwork terminals (this database may implementall or part
`
`
`
`
`
`
`of the functionality of the tracking database 20 of FIG. 1;
`
`
`
`
`
`
`
`these database functions can be performed by one or more
`
`
`
`
`
`
`database systems on one or more computers/servers), data-
`
`
`
`
`
`
`
`
`
`base interface modules 24, 26, and a terminal module 28. The
`terminal module 28 includedin the main server 12 is also used
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`in each of the network terminals/relay servers 14 and 16, and
`
`
`
`
`
`
`includes a routed network protocol module 30 (preferably a
`
`
`
`
`
`
`
`
`
`TCP/IP module, but other routed protocols may be used) and
`
`
`
`
`
`
`
`
`
`a main application module 32. As shown in FIG. 2B, the
`
`
`
`
`
`
`
`database interface modules 24, 26 provide I/O (input/output)
`
`
`
`
`
`
`
`
`
`control functions 34, providing the required serverlevel func-
`
`
`
`
`
`
`
`
`tionality to the core of the main application 32 for data trans-
`
`
`
`
`
`
`
`
`
`fer control and for logging data aggregation, and database
`
`
`
`
`
`
`
`interface functions providing access to the network database
`
`
`
`
`
`
`
`
`
`
`23. For example, this may be either via an ODBC (open
`
`
`
`
`
`
`database connectivity) interface or a database interface native
`
`
`
`
`
`
`to the network database system 23.
`
`
`
`
`
`
`As shown in FIG.2C,the main application 32, as employed
`in both the main server and those terminals that also act as
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`relay servers, comprises the following functional modules:
`
`
`
`
`
`
`A core module 38 interprets received packets and stores
`data.
`
`
`
`
`
`
`
`A data reception module 40 receives individual packets.
`
`
`
`
`
`
`A data preparation module 42 prepares data to be relayed.
`
`
`
`
`
`
`A data transmission module 44 sends data prepared by the
`
`
`
`
`
`preparation module 42 and sends acknowledgements to
`relevant clients.
`
`
`
`
`
`
`
`
`
`A routing control module 46 maintains optimaldata trans-
`fer rates.
`
`
`
`
`
`
`
`
`
`A socket control module 48 administers socket objects.
`A server socket 50 monitors data received via the TCP/IP
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`module (or other routed network protocol module) 30.
`Client sockets 52 transmit data via the module 30. The
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`numberofclient sockets varies dynamically depending
`
`
`
`
`
`
`
`on the number of server connections required at any
`
`
`particular time.
`
`
`
`
`
`
`In a conventional system, a server has a server-oriented
`
`
`
`
`
`
`
`connection for clients, comprising a server socket which is
`
`
`
`
`
`
`
`
`
`used to connect to the client’s server socket. In the present
`
`
`
`
`
`
`
`
`
`invention, the main application used in the main server 12 and
`
`
`
`
`
`
`
`
`
`in each terminalthat also operatesas a relay server contains a
`
`
`
`
`
`
`
`standard server socket 50 for receiving data from its clients. In
`
`
`
`
`
`
`
`
`
`addition to this, the main application also has client sockets
`52 for downstream communications to the downstream ter-
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`minals. The actual data to be transmittedto the target termi-
`
`
`
`
`
`
`
`
`nals is sent via these client sockets and acknowledgements are
`received from terminals via the server socket. When the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`required data has been sent by the server, the client socket
`
`
`
`
`
`
`
`
`
`created for the purpose of sending the data can be destroyed,
`
`
`
`
`
`
`so as not to consume networkresources unnecessarily. By this
`
`
`
`
`
`
`
`
`method, received acknowledgements will not cause any inter-
`
`
`
`
`
`
`
`
`ruptions in the outgoing data flow. Each terminal/server has
`
`
`
`
`
`
`
`
`two “hard-coded” sockets, one client socket 52 for serving
`other terminals/servers and one server socket 50 for main-
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`server connection use only. Additional sockets can be created
`
`
`
`
`
`
`
`
`and used dynamically as required. Each socket has an inde-
`
`
`
`
`
`
`
`pendentprocessorthread controlling it so that sockets can be
`
`
`
`
`
`
`
`managedand controlled without interrupts and delays.
`
`
`
`
`
`
`The opening and operation of sockets is handled dynami-
`
`
`
`
`
`
`cally using a C++ class-application which generates a new
`socket when it needs a new instance of this class. In this
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`mannersockets can be managed dynamically and their num-
`
`
`
`
`
`
`
`
`ber varied as necessary. Each thread owns and controls its
`
`
`
`
`
`
`
`own sockets. When a socket is no longer needed the control-
`
`
`
`
`
`
`
`
`
`ling thread destroys the socket and then destroysitself.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 10 of 71
`Case 4:22-cv-01490-JST Document 39-1 Filed 05/12/22 Page 10 of 71
`
`
`
`US 8,495,167 B2
`
`
`
`
`5
`
`
`
`
`
`The operation of the network will now be described.
`
`
`
`
`
`FIG.3Aillustrates the routing process.
`
`
`
`
`
`
`
`
`
`The main server selects a first set of a few (two orthree)
`
`
`
`
`
`
`
`
`
`terminals, and sendsthe transport request (which includes the
`
`
`
`
`
`
`
`addresses of the relevant target terminals) to each of these.
`
`
`
`
`
`
`
`Eachofthis first set ofterminals acknowledges its connection
`
`
`
`
`
`
`
`
`
`in the dynamic route by sending a messagedirect to the main
`
`
`
`
`
`
`
`server. The speed of this acknowledgement can be used to
`
`
`
`
`
`
`
`
`
`update the terminal data used for monitoring terminal perfor-
`
`
`
`
`
`
`
`
`
`mance. This first set of terminals is selected as being the
`
`
`
`
`
`
`
`
`“best” (“fastest”) terminals for use in transferring data to the
`
`
`
`
`
`
`
`particular target terminal, based on performancedata previ-
`
`
`
`
`
`
`
`ously acquired in operation of the network and stored in the
`network database.
`
`
`
`
`
`
`
`
`Whenthe data transfer is underway, data is transferred to
`
`
`
`
`
`
`
`
`the known terminals already registered as part ofthe network.
`
`
`
`
`
`
`
`
`
`If a new terminalis registered to the main server during the
`transfer it will be includedin the next data transfer.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Aspreviously described, the main serverselects the termi-
`
`
`
`
`
`
`
`
`nals with the shortest response times. This information is
`
`
`
`
`
`
`
`obtained in the following manner: the primary recipient of
`
`
`
`
`
`
`routing acknowledgements from particular terminals is the
`
`
`
`
`
`
`
`
`“server role” application that sent the transport request to
`
`
`
`
`
`
`
`those terminals. Whenthe transfer chain is completed, infor-
`
`
`
`
`
`
`
`mation is naturally relayed automatically to the main server.
`
`
`
`
`
`
`The performance of different terminals (network addresses)
`
`
`
`
`
`
`
`
`is measured simply by measuring the response time between
`
`
`
`
`
`
`
`
`different terminals and by selecting the terminals with short-
`
`
`
`est response times.
`
`
`
`
`
`
`
`
`
`Tt is not necessary for the terminals to know the entire
`
`
`
`
`
`
`
`network address space of the network, since the target termi-
`
`
`
`
`
`
`
`nal addresses are includedin the transport requests.
`
`
`
`
`
`
`
`
`
`Aspart of the transport request, the main server sends the
`
`
`
`
`
`
`
`
`addresses of other target terminals to the first set of terminals/
`
`
`
`
`
`
`
`
`
`relay servers. Each terminal selects its own downstream ter-
`
`
`
`
`
`
`
`
`minals/relay servers and sendstherest of the target network
`
`
`
`
`
`
`
`addresses to these terminals/relay servers as part ofthe modi-
`
`
`
`
`
`
`
`
`fied transport request. That is, each one of the first set of
`
`
`
`
`
`
`
`terminals selects a further two or three “best” terminals/relay
`
`
`
`
`
`
`
`servers from the addresses forwardedto it by the main server
`
`
`
`
`
`
`
`
`and passes the modified transport request on to these termi-
`
`
`
`
`
`
`
`
`nals, including the details of the other remaining target ter-
`
`
`
`
`
`
`
`
`
`minals. Because ofthis dynamic routing, the main server need
`
`
`
`
`
`
`
`
`
`not know explicitly which terminals deliver data and which
`terminals receiveit. It is sufficient that it is ensured that each
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`terminal in the route is accessible. If the delivery fails for one
`
`
`
`
`
`
`
`
`
`terminal for some reason,this is registered in the database and
`
`
`
`
`
`
`
`
`failed deliveries are repeated during the next transfer.
`
`
`
`
`
`
`
`Oncethe route to a particular target has been established,
`
`
`
`
`
`
`
`
`
`
`the packets of the datafile are passed along the defined route
`
`
`
`
`
`
`
`
`via the selected relay servers on the basis ofthe target terminal
`
`
`
`
`
`address in the handle/header of each packet.
`
`
`
`
`
`
`
`
`Automatic routing evenly divides the load over a larger
`
`
`
`
`
`
`
`
`
`network region, reducing the time window required for any
`
`
`
`
`particular data transfer operation.
`
`
`
`
`
`
`
`The data transfer process is illustrated in FIG. 3B.
`
`
`
`
`
`
`
`
`As shownin FIG.3B, in responseto the transport request
`
`
`
`
`
`
`
`
`
`
`each target terminal requests the data from the main server or
`
`
`
`
`
`
`
`
`
`the upstream terminal acting as the server (as specified in the
`
`
`
`
`
`
`
`
`transport request) as packets, reassembles the file and, if
`
`
`
`
`
`
`
`necessary, relays the packets to downstream target terminals.
`
`
`
`
`
`
`
`
`Whenthe target terminal has received the last packet of the
`
`
`
`
`
`
`file, it sends an acknowledgementto the main server.
`
`
`
`
`
`
`
`
`It is preferred that all data is transferred in encrypted and
`
`
`
`
`
`
`
`
`compressed binary format. In this manner data security is
`
`
`
`
`
`
`
`
`improved as compared with transferring plain text and data
`
`
`
`
`
`
`
`
`
`transfer requires less time. Binary format data requires