throbber
(54) DYNAMIC PERFORMANCE BASED SERVER
`SELECTION
`(75) Inventor: Bruce A. Young, LeMars, IA (US)
`(73) Assignee: Gateway, Inc., Poway, CA (US)
`(*) Notice:
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`21) Appl. No.: 09/329,620
`Filed
`o 1999
`(22) Filed:
`Jun. 10,
`(51) Int. Cl. ................................................ G06F 17/30
`(52) U.S. Cl. ............................. 707/2; 707/10, 707/201;
`707/203; 707/1; 707/3; 707/100; 709/224;
`709:248
`(58) Field of Search ................................. 709/224, 248;
`707/10, 1, 3, 100, 20, 201, 203
`
`(56)
`
`FOREIGN PATENT DOCUMENTS
`98/18076
`4/1998 ............. GO6F/9/46
`OTHER PUBLICATIONS
`E.P.O.'....","...");
`XP000787863, 650–653, (1/97).
`Katz, E.D., et al., “A Scalable HTTP server: the NCSA
`ss
`prototype', Computer Networks and ISDN Systems, North
`Holland Publishing, vol. 27, No. 2, XP004037986, 155–164,
`(1994).
`* cited by examiner
`Primary Examiner Diane D. Mizrahi
`Assistant Examiner Thuy Pardo
`(74) Attorney, Agent, or Firm-Scott Charles Richardson;
`Schwegman, Lundberg, Woesner & Kluth
`(57)
`ABSTRACT
`Downloading of Internet files is optimized based on which
`of multiple locations is most efficient in providing the files.
`Identical or contiguous portions of a file are downloaded
`References Cited
`from different Servers, and performance data Such as a bit
`rate for each Site is used to then Select the optimal Server to
`U.S. PATENT DOCUMENTS
`complete the download. An applet intercepts the request for
`5,049,873 A 9/1991 Robins et al. ......... 340/825.06
`the file from a web browser and determines the best server
`5,261,044 A 11/1993 Dev. et al. .................. 395/159
`to provide the file. When the request is intercepted, it reads
`5,572,643 A 11/1996 Judson et al. ..
`... 395/793
`a list of available file transfer protocol (ftp) locations from
`5,687.292 A 11/1997 Boda et al. ................... 395/11
`which to download the file. The applet or other type of
`5,744,669 A 6/1998 George et al. ......... 395/20054
`5:52, A go Stylist .. 35i program pings each site to prioritize the list based on
`5771226. A 6/1998 R al. . . . . . . . . . . . . . . . . . . 370/232
`Shortest response time. The throughput of the finally Selected
`5774,660 A 6/1998 Brendeletal. .395/20031
`server is tracked as the file is downloaded. If the throughput
`5,774,668. A
`6/1998 Choquier et al... 395/20053
`drops below a desired throughput, the next best Server is
`5,838,906 A 11/1998 Doyle et al. ........... 395/200.32
`Selected from the previous list, or the Selection and tracking
`5.974,460 A * 10/1999 Maddalozzo, Jr. et al. .. 709/224
`process is started again to determine if a faster Server has
`6,138,155. A * 10/2000 Davis et al. ................ 709/224
`become available due to changes in demand on the Servers.
`6.212,571 B1 * 4/2001 Kikuchi et al.
`... 709/248
`6,223,221 B1
`4/2001 Kunz ......................... 709/224
`24 Claims, 2 Drawing Sheets
`
`(12) United States Patent
`Young
`
`USOO6477522B1
`(10) Patent No.:
`US 6,477,522 B1
`(45) Date of Patent:
`Nov. 5, 2002
`
`WO
`
`
`
`210 - NTERCEPT REQUEST FOR FILE
`
`200
`/
`
`215.
`
`OBTAN LST OF SERVERS
`
`220-
`
`PRIORITIZE ST
`
`225 dOWNLOAD ORTIONS OF FE
`FROM EACH SERVER
`
`230-
`
`MONTOR THROUGHPUT
`
`235
`
`SELECT BEST SERVER To
`COMPLE FILE TRANSFER
`
`24-O-
`
`MONTOR THROUGHT
`
`245
`
`HROUGHPUT
`BELOW DESIRED RATE
`
`NO
`
`YES
`
`250 -
`
`SELECT NEXT BEST SERVER
`TO COMPLETE OR MEASURE
`EACH HROUGHUT AGAIN
`
`-1-
`
`Amazon v. Audio Pod
`US Patent 10,735,488
`Amazon EX-1008
`
`

`

`U.S. Patent
`
`Nov. 5, 2002
`
`Sheet 1 of 2
`
`US 6,477,522 B1
`
`FIG. 1
`
`102 - PROCESSOR
`
`1 OO
`1
`
`11 O
`
`style
`CACHE ... li. DART
`
`CONTROLLER
`
`12O
`
`124
`of connector
`IDE conNECTOR
`scs connector
`scs conNECTOR
`USB PORT
`USB PORT
`126
`
`122
`
`I/O
`BRIDGE
`
`121 - PC CONNECTOR
`
`127
`GRAPHICS
`CONTROLLER
`
`PC CONNECTOR
`weaport(s)
`VGA PORT(S)
`129
`
`VIDEO
`128 Moy
`
`130
`
`BUFFER - 132
`
`140
`
`
`
`144
`REAL TIME KEYBOARD/
`CLOCK
`MOUSE
`|CONTROLLER
`KEYBOARD/145
`BIOS ROM
`
`SYSTEM | 12
`BIOS ROM
`.
`I/O
`CONTROLLER
`
`151 - ISA CONNECTOR
`
`131- ISA CONNECTOR
`
`151 - ISA CONNECTOR
`154
`155
`156
`
`SERAL PORT
`R
`SERAL PORT
`PARALLEL PORT
`
`57 1
`FDD CONNECTOR
`
`
`
`-2-
`
`

`

`U.S. Patent
`
`Nov. 5, 2002
`
`Sheet 2 of 2
`
`US 6,477,522 B1
`
`210 - INTERCEPT REQUEST FOR FILE
`
`2OO
`/
`
`215
`
`OBTAIN LIST OF SERVERS
`
`22O
`
`PRIORITIZE LIST
`
`225
`
`DOWNLOAD PORTIONS OF FILE
`FROM EACH SERVER
`
`230
`
`MONITOR THROUGHPUT
`
`235
`
`SELECT BEST SERVER TO
`COMPLETE FILE TRANSFER
`
`240
`
`MONITOR THROUGHPUT
`
`245
`THROUGHPUT
`BELOW DESIRED RATE
`p
`
`SELECT NEXT BEST SERVER
`TO COMPLETE OR MEASURE
`EACH THROUGHPUT AGAIN
`
`
`
`
`
`
`
`
`
`
`
`250
`
`FIG. 2
`
`-3-
`
`

`

`1
`DYNAMIC PERFORMANCE BASED SERVER
`SELECTION
`
`US 6,477,522 B1
`
`FIELD OF THE INVENTION
`The present invention relates to networked computer
`Systems and in particular to the Selection of a Server for
`desired information based on performance.
`
`BACKGROUND
`Networks, Such as the Internet contain information that a
`user desires to obtain. The information is contained in files
`that may be specified by uniform resource locators (URLs)
`which are essentially addresses which specify the computer
`and the location of the file on that computer. Many times,
`Several computers, referred to as Servers will have the same
`file available for retrieval by a user. Each such file has a
`different URL. In some cases, multiple servers may be
`connected together to appear as a single site and have Several
`individual Servers having the same file for increased overall
`throughput. In Such cases, a manager of the Servers trans
`parent to the user System Selects which individual Server or
`Servers should provide the file given a client/user request.
`The manager may Select the Server to balance the load
`between the servers. However, most files on the Internet are
`located on Separate Servers and are identified with Separate
`URLS.
`When a user tries to access a file, a Site is Selected, and the
`file transfer is requested through a browser when a user
`clicks on highlighted text or image which is associated with
`the URL, or types in the URL directly. This link identifies
`only one site, which may be very busy. The user will usually
`Select a site which is geographically closest to the user. This
`may or may not be the best choice. There is no easy ability
`for a user to Select a different site, other than to Stop the
`transmission of the file after noticing that it is taking a long
`time, then Searching for a different Site with the same file and
`initiating a new transfer. Some sites do offer multiple Sites
`from which to obtain the information, but the user still must
`make the decision as to which Site to use, and if not satisfied,
`Stop the transmission and Start over by Selecting another site.
`A further method of determining which Site might respond
`faster involves the use of a program which will ping a group
`of Selected Sites to see which will respond the fastest. A ping
`is a well known method of Sending a message to a server,
`essentially asking “are you there'?” The server will then
`respond that they are there. While this gives a good indica
`tion of the length of time for a download of a file to begin,
`it provides little information regarding the Speed at which
`Such a download will proceed. There is a need for an easier
`and more informative way to determine which server will
`provide the fastest download of a file. There is also a need
`for downloading information or files more quickly.
`
`SUMMARY
`Downloading of files is optimized based on which of
`multiple locations is most efficient in providing the files. In
`one implementation of the invention, portions of a file are
`downloaded from different Servers, and performance data
`Such as a bit rate for each Site is used to then Select the
`optimal Server to complete the download.
`In a further embodiment, an applet intercepts the request
`for the file from the browser and determines the best server
`to provide the file. When the request is intercepted, the
`applet reads a list of available file transfer protocol (ftp)
`
`2
`locations from which to download the file. The list may be
`hidden text in an hypertext markup language (HTML) page,
`or may actually be provided by a link on a Server. The applet
`or other type of program then may ping each site to prioritize
`the list based on Shortest response time. A first portion of the
`file is downloaded from one site, and throughput measure
`ments tracked. Using a reconnect internet protocol com
`mand to identify where the first download ended, a Second
`portion of the file is downloaded from the next site on the
`list, again with throughput measurements tracked. This
`process is repeated for further portions of the file, and the
`location with the best throughput is Selected to complete the
`file transfer. In Still further embodiments, a Same portion
`Such as the first portion is read from each Server to ensure
`consistent throughput measurements.
`In yet a further embodiment of the invention, the through
`put of the finally Selected Server is tracked as the file is
`downloaded. If the throughput drops below a desired
`throughput, the next best Server is Selected from the previous
`list, or the Selection and tracking proceSS is started again to
`determine if a faster Server has become available due to
`changes in demand on the Servers.
`The present invention provides improved information
`regarding the best Server from which to obtain a desired file,
`and the ability to download files quickly.
`
`15
`
`25
`
`DESCRIPTION OF THE FIGURES
`FIG. 1 is a block diagram of a typical computer System in
`accordance with the present invention.
`FIG.2 is a flow chart of a module which determines which
`Server to use for a file transfer.
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`DETAILED DESCRIPTION
`In the following description, reference is made to the
`accompanying drawings which form a part hereof, and in
`which is shown by way of illustration specific embodiments
`in which the invention may be practiced. These embodi
`ments are described in Sufficient detail to enable those
`skilled in the art to practice the invention, and it is to be
`understood that other embodiments may be utilized and that
`Structural, logical and electrical changes may be made
`without departing from the Scope of the present invention.
`The following description is, therefore, not to be taken in a
`limited Sense, and the Scope of the present invention is
`defined by the appended claims.
`A Standard personal computer System is first described,
`followed by description of a module, Such as an applet that
`intercepts requests from a browser running on the computer
`System and determines which Server from a list of multiple
`servers is best to provide the file. The applet may also be a
`module or modules within the browser itself
`FIG. 1 shows a block diagram of a personal computer
`system 100 according to the present invention. In this
`embodiment, a processor 102, a System controller 112, a
`cache 114, and a data-path chip 118 are each coupled to a
`host bus 110. Processor 102 is a microprocessor Such as a
`486-type chip, a Pentiumrn(R), Pentium IICR) or other suitable
`microprocessor. Cache 114 provides high-Speed local
`memory data (in one embodiment, for example, 512 kB of
`data) for processor 102, and is controlled by System con
`troller 112, which loads cache 114 with data that is expected
`to be used Soon after the data is placed in cache 112 (i.e., in
`the near future). Main memory 116 is coupled between
`system controller 114 and data-path chip 118, and in one
`embodiment, provides random-acceSS memory of between
`
`-4-
`
`

`

`3
`16 MB and 128 MB of data. In one embodiment, main
`memory 116 is provided on SIMMs (Single In-line Memory
`Modules), while in another embodiment, main memory 116
`is provided on DIMMs (Dual In-line Memory Modules),
`each of which plugs into Suitable Sockets provided on a
`motherboard holding many of the other components shown
`in FIG. 1. Main memory 116 includes standard DRAM
`(Dynamic Random-Access Memory), EDO (Extended Data
`Out) DRAM, SDRAM (Synchronous DRAM), or other
`Suitable memory technology. System controller 112 controls
`PCI (Peripheral Component Interconnect) bus 120, a local
`bus for system 100 that provides a high-speed data path
`between processor 102 and various peripheral devices, Such
`as graphics devices, Storage drives, network cabling, etc.
`Data-path chip 118 is also controlled by system controller
`112 to assist in routing data between main memory 116, host
`bus 110, and PCI bus 120.
`In one embodiment, PCI bus 120 provides a 32-bit-wide
`data path that runs at 33 MHz. In another embodiment, PCI
`bus 120 provides a 64-bit-wide data path that runs at 33
`MHz. In yet other embodiments, PCI bus 120 provides
`32-bit-wide or 64-bit-wide data paths that runs at higher
`speeds. In one embodiment, PCI bus 120 provides connec
`tivity to I/O bridge 122, graphics controller 127, and one or
`more PCI connectors 121 (i.e., sockets into which a card
`edge may be inserted), each of which accepts a standard PCI
`card. In one embodiment, I/O bridge 122 and graphics
`controller 127 are each integrated on the motherboard along
`with system controller 112, in order to avoid a board
`connector-board Signal-crossing interface and thus provide
`better speed and reliability. In the embodiment shown,
`graphics controller 127 is coupled to a video memory 128
`(that includes memory such as DRAM, EDO DRAM,
`SDRAM, or VRAM (Video Random-Access Memory)), and
`drives VGA (Video Graphics Adaptor) port 129. VGA port
`129 can connect to industry-standard monitorS Such as
`VGA-type, SVGA (Super VGA)-type, XGA-type (eXtended
`Graphics Adaptor) or SXGA-type (Super XGA) display
`devices. Other input/output (I/O) cards having a PCI inter
`face can be plugged into PCI connectorS 121.
`In one embodiment, I/O bridge 122 is a chip that provides
`connection and control to one or more independent IDE
`connectors 124-125, to a USB (Universal Serial Bus) port
`126, and to ISA (Industry Standard Architecture) bus 130. In
`this embodiment, IDE connector 124 provides connectivity
`for up to two standard IDE-type devices such as hard disk
`drives, CDROM (Compact Disk-Read-Only Memory)
`drives, DVD (Digital Video Disk) drives, or TBU (Tape
`Backup Unit) devices. In one similar embodiment, two IDE
`connectors 124 are provided, and each provide the EIDE
`(Enhanced IDE) architecture. In the embodiment shown,
`SCSI (Small Computer System Interface) connector 125
`provides connectivity for up to seven or fifteen SCSI-type
`devices (depending on the version of SCSI supported by the
`embodiment). In one embodiment, I/O bridge 122 provides
`ISAbus 130 having one or more ISA connectors 131 (in one
`embodiment, three connectors are provided). In one
`embodiment, ISA bus 130 is coupled to I/O controller 152,
`which in turn provides connections to two serial ports 154
`and 155, parallel port 156, and FDD (Floppy-Disk Drive)
`connector 157. In one embodiment, ISA bus 130 is con
`nected to buffer 132, which is connected to Xbus 140, which
`provides connections to real-time clock 142, keyboard/
`mouse controller 144 and keyboard BIOS ROM (Basic
`Input/Output System Read-Only Memory) 145, and to sys
`tem. BIOS ROM 146.
`Computer system 100, or other suitable computer system
`having a different configuration well known in the art is
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,477,522 B1
`
`15
`
`25
`
`4
`many times used to run a common browser application
`which is used to acceSS and properly display information
`Stored on a network Such as the Internet. The information
`may be referred to as a file, which contains multimedia data,
`or just plain text. Some of the text contains a link or address
`to other files which may be stored on one or more servers
`attached to the network. When a user of computer system
`100 uses the browser to select the link, an applet indicated
`generally at 200 in FIG.2 may be configured to intercept the
`user's request for the file as indicated at 210. FIG. 2 is a
`flowchart of the applet 200, which may be run in the browser
`and set to look for file transfer protocol (ftp) requests or
`other types of file transfer requests. Each of the blocks or
`combinations of the blocks describe functionality that may
`be implemented in one or more Software modules which can
`easily be written by one skilled in the art with reference to
`the flowchart. The applet may automatically intercept Such
`requests and obtain a list of servers at 215 which contain the
`desired file by scanning hidden HTML text surrounding the
`link, or actually Scan the current file which contained the
`link for other visibly rendered links to multiple servers
`where the information or files may be obtained. In a further
`embodiment, a user may select a number of Server locations
`from which to obtain the file and provide them directly at
`215 without the need for automatic interruption at 210. This
`can be done by first invoking the applet 200 and then
`clicking on each of the desired links. Once all the links have
`been Selected, the applet may be requested to process the list.
`In still a further embodiment, the applet 200 obtains the list
`of possible servers from the server identified by the initial
`link.
`Once the applet 200 obtains the list, it reads the list, and
`Sends a "ping to each Server at 220, keeping track of the
`amount of time for each server to respond. This provides an
`indication of which Server responds the fastest, and may be
`a good candidate from which to obtain the file in the fastest
`manner. The list may then be prioritized in one embodiment,
`or may be used as is without any attempt to provide an initial
`prioritization.
`At 225, a first portion of the file is requested from the
`highest priority Server. The throughput of Such Server is
`tracked at 230, such as by a bits per second indication. The
`time for ping response obtained in initially prioritizing the
`list of servers is Subtracted from the time it takes to down
`load the first portion in one embodiment to obtain a better
`indication of true bit rate. After the first server has completed
`delivering the first portion of the file, a reconnect internet
`protocol (IP) command is used to indicate to the Second
`server that a file transfer was interrupted. With some well
`known handshaking, a starting address is provided to the
`Second Server, and a Second portion of the file is transferred
`from the Second Server. Throughput of this transfer is also
`tracked and the rest of the Servers are contacted in the same
`manner to obtain further consecutive or contiguous portions
`of the file. Once all the servers in the list have completed, the
`performance as measured by throughput is ranked, and the
`rest of the file is requested at 235 from the highest through
`put Server which is Selected as the optimal Server.
`The throughput may further be monitored at 240 from the
`optimal Server. This is done because performance may
`change over time for very large files. If the performance falls
`below a desired rate at 245, a different server may be
`Selected. Either the next server on the previously generated
`performance ranked list may be selected for continuation of
`the transmission, or the performance of each Server may be
`redetermined Starting again at 225. If the performance does
`not fall below a desired rate, the transfer is completed with
`the elected optimal Server.
`
`-5-
`
`

`

`S
`The desired rate for decision block 245 may be estab
`lished as a desired percentage of the throughput as deter
`mined at step 230, such as 75%. In this manner, if reselection
`if performed at 250, the desired percentage of throughput is
`again determined based on the measured throughput of the
`Server which is Selected to complete the transmission. A
`Sliding average may be used to Smooth out short term
`variations in transmission rates to prevent frequent Switch
`ing of Servers.
`It is to be understood that the above description is
`intended to be illustrative, and not restrictive. Many other
`embodiments will be apparent to those of skill in the art
`upon reviewing the above description. Downloading of files
`is optimized based on which of multiple locations is most
`efficient in providing the files. In one implementation of the
`invention, portions of a file are downloaded from different
`Servers, and performance data Such as a bit rate for each Site
`is used to then Select the optimal Server to complete the
`download. The size of the portions may be either temporal
`in nature, Such as one or more Seconds, or may be based on
`a predetermined number of bytes or blocks of data. In one
`embodiment, the first 500 bits are selected as the first
`portion, the Second 500 as the Second portion and So on. For
`Small files of a few thousand or more bits, the selection
`proceSS may be bypassed if desired. Embedded pictures may
`also be specified by indicating that an entire block should be
`obtained if encountered prior to completing a Specified
`portion.
`The applet may be Software Stored on computer readable
`media, and may be written in any of Several languages, Such
`as Java (trademark of Sun Microsystems of Palo Alto, Calif.)
`or other languages. The functionality of the applet may be
`provided in many of multiple forms, and may be built into
`the browser itself or as a separate application, or even as part
`of the operating System. It may be fully automated, or may
`present the results of the Server throughput to the user for
`user Selection. It is usually Stored on computer readable
`medium such as cache 114, main memory 116 or disk drives
`which are coupled to IDE connector 124, SCSI connector
`125 or USB port 126. Further, a carrier wave may be used
`as a computer readable medium to transmit the applet. The
`scope of the invention should, therefore, be determined with
`reference to the appended claims, along with the full Scope
`of equivalents to which Such claims are entitled.
`What is claimed is:
`1. A System for downloading a desired file from a network
`of multiple servers which have a copy of the file, the system
`comprising:
`means for identifying the locations of the desired file at
`each Server;
`means for estimating a throughput rate of transfer of the
`desired file from each Server, and
`means for Selecting the Server having the best estimated
`throughput rate for completing transfer of the desired
`file;
`wherein Said means for estimating further comprises:
`means for initiating the transfer of Selected portions of the
`file from each Server, and
`means for determining the time to receive the Selected
`portions of the file from each server.
`2. The system of claim 1, wherein the selected portions of
`the file comprise consecutive portion of the file.
`3. The system of claim 1 wherein the selected portions of
`the file comprise substantially the same portion of the file
`from each Server.
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,477,522 B1
`
`15
`
`25
`
`6
`4. The System of claim 1 and further comprising:
`means for estimating latency of each Server; and
`means for Subtracting the latency during the measuring of
`the throughput of each Server.
`5. A system for downloading a desired file from a network
`of multiple servers which have a copy of the file, the system
`comprising:
`means for identifying the locations of the desired file at
`each Server;
`means for measuring a latency for each Server;
`means for measuring a time taken to transfer Selected
`portions of information from each Server,
`means for Subtracting the latency from Such time taken
`and to provide a throughput rate; and
`means for Selecting the Server having the best measured
`throughput rate for completing transfer of the desired
`file;
`wherein the Selected portions of information comprise
`Substantially the same portion of the desired file from
`each Server.
`6. The system of claim 5 wherein the selected portions of
`information comprise consecutive portions of the desired
`file.
`7. A computerized System for downloading desired files
`from a network of multiple Servers, Some of which have a
`copy of the file, the System comprising:
`a module that obtains a list of Servers having a copy of a
`desired file;
`a download module that initiates downloading of Selected
`portions of the desired file from multiple servers; and
`a module that measures the throughput from each of Said
`Server and Selects an optimal Server for completion of
`downloading of the file, and
`further comprising a module for monitoring the through
`put of the Selected optimal Server and Selecting a new
`optimal server if the throughput falls below a desired
`level.
`8. The system of claim 7 wherein the module that obtains
`the list comprises an applet that intercepts file transfer
`requests from a browser.
`9. The system of claim 7 wherein the selected portions
`comprise consecutive portions of the file.
`10. The system of claim 9 wherein the download module
`issues a reconnect IP command to obtain each consecutive
`portion by identifying a beginning address of the file.
`11. A method of downloading desired files from a network
`of multiple Servers, Some of which have a copy of the file,
`the method comprising:
`obtaining a list of Servers having a copy of a desired file,
`downloading Selected portions of the desired file from
`multiple different servers;
`measuring the throughput from each Server; and
`Selecting an optimal Server for completion of the down
`load of the desired file,
`further comprising monitoring the throughput of the
`Selected optional Server; and
`further comprising Selecting a new optimal Server if the
`throughput of the selected optimal server falls below a
`desired level.
`12. The method of claim 11 and further comprising:
`measuring a time for response to a message from each
`SCWC.
`13. The method of claim 12 wherein the message com
`prises a ping.
`
`-6-
`
`

`

`7
`14. The method of claim 12 wherein the time for response
`from each server is Subtracted from the time measured for
`downloading each portion from each corresponding Server.
`15. The method of claim 11 wherein the new optimal
`Server is Selected based on previously measured throughput
`from each Server.
`16. The method of claim 11 wherein the new optimal
`Server is Selected based current measurement of throughput
`as in claim 14.
`17. The method of claim 11 wherein the selected portions
`comprise the same portion.
`18. The method of claim 11 wherein the selected portions
`comprise consecutive portions of the desired file.
`19. The method of claim 11 wherein the size of the
`Selected portions is based on a predetermined number of
`bits, or on a predetermined time for downloading.
`20. A computer readable medium having instructions
`Stored thereon for causing a computer to implement a
`method of downloading desired files from a network of
`multiple Servers, Some of which have a copy of the file, the
`method comprising:
`obtaining a list of Servers having a copy of a desired file;
`downloading Selected portions of the desired file from
`multiple different servers;
`measuring the throughput from each Such Server; and
`Selecting an optimal Server for completion of the down
`load of the desired file; and
`further comprising monitoring the throughput of the
`Selected optimal Server and Selecting a new optimal
`server if the throughput falls below a desired level;
`completing downloading of the file.
`21. A computer readable medium having instructions
`Stored thereon for causing a computer to implement a
`method of downloading desired files from a network of
`multiple Servers, Some of which have a copy of the file, the
`method comprising:
`
`1O
`
`15
`
`25
`
`35
`
`US 6,477,522 B1
`
`8
`obtaining a list of Servers having a copy of a desired file;
`downloading Selected portions of the desired file from
`multiple different servers;
`measuring the throughput from each Such Server;
`Selecting an optimal Server for completion of the down
`load of the desired file;
`monitoring the throughput as the Selected optimal Server
`downloads the rest of the file; and
`redetermining an optimal Server if the throughput of the
`selected optimal server falls below a desired level.
`22. A computer implemented method of Selecting a Server
`for downloading a desired file from a network of multiple
`Servers which have a copy of the file, the method compris
`ing:
`identifying the locations of the desired file at each Server;
`measuring a latency for each Server;
`measuring a time taken to transfer Selected portions of
`information from each Server;
`Subtracting the latency from Such time taken and to
`provide a throughput rate; and
`Selecting the Server having the best measured throughput
`rate for completion of transfer of the desired file;
`wherein the Selected portions of information comprise
`Substantially the same portion of the desired file from
`each Server.
`23. The method of claim 22 and further comprising:
`transferring remaining portions of the file from the
`Selected Server.
`24. A computer readable medium having instructions
`Stored thereon for causing a computer to perform the method
`of claim 22.
`
`-7-
`
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket