throbber
(12) United States Patent
`Brendel
`
`US006182139B1
`(10) Patent No.:
`US 6,182,139 B1
`(45) Date of Patent:
`*Jan. 30, 2001
`
`(54) CLIENT-SIDE RESOURCE-BASED
`LOAD-BALANCING WITH
`DELAYED-RESOURCE-BINDING USING TCP
`STATE MIGRATION TO WWW SERVER
`FARM
`
`(75) Inventor: Juergen Brendel, Santa Clara, CA (US)
`(73) Assignee: Resonate Inc., Mountain View, CA
`(US)
`Under 35 U.S.C. 154(b), the term of this
`patent shall be extended for 0 days.
`
`(*) Notice:
`
`This patent is Subject to a terminal dis
`claimer.
`
`(21) Appl. No.: 09/103,336
`(22) Filed:
`Jun. 23, 1998
`Related U.S. Application Data
`(63) Continuation-in-part of application No. 08/691,006, filed on
`Aug. 5, 1996, now Pat. No. 5,774,660.
`(51) Int. Cl." ............................. G06F 13/38; G06F 15/17
`(52) U.S. Cl. ..................
`709/226; 709/105; 709/201
`(58) Field of Search ..................................... 709/226, 229,
`709/238, 239, 245, 250, 302,304, 219,
`203,105,104; 370/237, 390; 714/11, 13,
`5, 6, 7
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`5,181,200
`5,325,362
`
`1/1993 Harrison .............................. 370/85.1
`6/1994 Aziz .................................... 370/94.1
`(List continued on next page.)
`
`FOREIGN PATENT DOCUMENTS
`648038 * 4/1995 (EP) .............................. HO4L/29/06
`677943 * 10/1995 (EP) .............................. HO4L/29/06
`Primary Examiner Mark H. Rinehart
`Assistant Examiner Bunjob Jaroenchonwanit
`(74) Attorney, Agent, or Firm-Stuart T. Auvinen
`(57)
`ABSTRACT
`A client-side dispatcher resides on a client machine below
`high-level client applications and TCP/IP layers. The client
`Side dispatcher performs TCP State migration to relocate the
`client-server TCP connection to a new server by storing
`packets locally and later altering them before transmission.
`The client-side dispatcher operates in Several modes. In an
`error-recovery mode, when a Server fails, error packets from
`the Server are intercepted by the client-Side dispatcher.
`Stored connection packet's destination addresses are
`changed to an address of a relocated Server. The altered
`packets then establish a connection with the relocated Server.
`Source addresses of packets from the Server are changed to
`that of the original Server that crashed So that the client
`application is not aware of the error. In a delayed URL-based
`dispatch mode, the client-side dispatcher intercepts connec
`tion packets before they are Sent over the network. Reply
`packets are faked by the client-Side dispatcher to appear to
`be from a server and then sent to up to the client TCP/IP
`layers. The client's TCP then sends URL packet identifying
`the resource requested. The client-side dispatcher decodes
`the URL and picks a server and sends the packet to the
`Server. Reply packets from the Server are intercepted, and
`data packets altered to have the Source address of the faked
`server. Multicast of the initial packet to multiple servers is
`used for empirical load-balancing by the client. The first
`Server to respond is chosen while the others are reset. Thus
`the client-side dispatcher picks the fastest of Several Servers.
`20 Claims, 9 Drawing Sheets
`
`
`
`CLIENT-SIDE
`DISPATCHER 20
`
`EXHIBIT 1010
`Guest-Tek v. Nomadix, IPR2018-00376
`
`

`

`US 6,182,139 B1
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`2/1998 Largarde et al. .................... 395/610
`5,721,908
`5,751,971 * 5/1998 Dobbins et al.
`... 709/238
`5,774,660 * 6/1998 Brendel et al. .
`709/201
`12/1995 Li et al. ................................. 370/16
`5,473,599
`56.6 : A: s et t
`39. 5,774,668
`6/1998 Choquier et al.
`709/223
`2 - - -2
`f
`an et al. .........................
`f
`5,826,032
`10/1998 Finn et al. ........................... 709/236
`5,621,734
`4/1997 Mann et al. ...
`370/94.1
`5,862,335 * 1/1999 Welch, Jr. et al. .
`709/224
`5,636,371 * 6/1997 Yu et al. .....
`... 395/500
`5,862,362 * 1/1999 Somasegar et al.
`... 395/500
`5,673,322
`9/1997 Pepe et al. ..
`... 380/49
`5,892,924 * 4/1999 Lyon et al.......
`... 709/245
`5,701,451
`12/1997 Rogers et al. .
`... 395/600
`5,894.554 * 4/1999 Lowery et al. .
`... 709/203
`5,926,482 * 7/1999 Christie et all
`370/469
`5,706,507
`1/1998 Schloss ..........
`... 395/615
`2 - 1 - 2
`IISLle el all. . . . . . . . . . . . . . . . . . . . . . .
`5,710,918
`1/1998 Lagarde et al.
`... 395/610
`5,715,453
`2/1998 Stewart ................................ 395/615
`5,717.860
`2/1998 Graber et al. ................... 395/200.16
`
`
`
`* cited by examiner
`
`

`

`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 1 of 9
`
`US 6,182,139 B1
`
`CLENT
`"BROWSER"
`
`70
`
`
`
`SERVER
`
`56
`
`51
`
`52
`
`55
`
`

`

`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 2 of 9
`
`US 6,182,139 B1
`
`CLIENT
`"BROWSER"
`
`
`
`10
`
`
`
`
`
`
`
`NO RESPONSE
`TIMEOUT
`
`T1/T3
`
`

`

`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 3 of 9
`
`US 6,182,139 B1
`
`CLIENT
`
`10
`
`SERVER
`
`IP 18
`
`
`
`CLIENT-SIDE
`DISPATCHER 20
`
`
`
`DYNLINK 22
`
`3 O
`
`FIG.3
`
`CLIENT-SIDE DISPATCHER
`
`
`
`SESSION
`TABLE 32
`
`
`
`TCP 38
`STATE
`MACHINE
`
`
`
`LOCAL 40
`PACKET
`STORAGE
`
`
`
`FIG.4
`
`

`

`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 4 of 9
`
`
`\dO0TSYOL:dlONSdiLS3dYAHOLVdSId}SONVHOWOOL
`SAONVHOSAIS-LNANMO}
`
`
`
`
`eeeDKSOASZ.tOt~™”W
`
`Nid(O)MOV+NAS(ONAS
`
`
`
`
`
`
`erereteeseeees: (o)HSNd:Tz:dol2:tddWLNAITO}TOSMIGSYSOSNS
`
`WoW
`
`
`
`
`
`(O)HSNd(O)NAS(O)NAS
`
`oe
`
`NisNid+NAS
`
`YAS90734YYAS90714uYAS0073yYASSIYOgretecsesescees;: o%
`(0)MOVsy:Td}
`
`
`
`
`
`US 6,182,139 B1
`
`>.
`
`Gols
`
`

`

`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 5 of 9
`
`US 6,182,139 B1
`
`o€
`
` S0NaNDSDROOLOIssaMSHOLVdSIC}3SONVHO
`4acusSONVHDACIS-LNAI9}(0)NAS
`
`
`
`
`YASOOTSY=NAS.ywouda|og(ONO2¢C44q}dH(O)4OVvivaDOTSYASSIOBASSIOgeveseseseessees
`dH+NASLeceeeenewsees:+NAS
`(o)uSn¢(O)NAS{ SHSaWNNYASYAS0¢(O)NAS(O)HSNd
`
`
`
`\
`dH+NAS
`
`Viva(O)MOV
`
`iddWLNAIO}LOSHIGAYMOMSVIVGTeens°
`
`(O)HSNdtT; di/dOL8}
`
`

`

`U.S. Patent
`U.S. Patent
`
`Jan. 30, 2001
`Jan. 30, 2001
`
`Sheet 6 of 9
`Sheet 6 of 9
`
`
`
`US 6,182,139 B1
`US 6,182,139 B1
`
`o¢€
`
`
`
`gresceetseeecees;>te:(viva)(o)OWa;1d}(o)HSNd(Via)
`(OHSNd+NAS
`
`+MOV+Y4OV(0)NAS
`
`sqis-inanobecceceseesNGONWHOLYSONVHOoccccccccssscssecsesessecesssseseseseessecteeceneses
`
`
`YSHOLVdsia:d|1S3ddlONSBTUNGvVaYAWV4NSD
`
`
`YASYASD07SY0¢:90144OLOMWOOLOLNOISSVSlyddol
`SAS90734YASD0TSHYASDOT3Y
`
`(LWHSNd(O)HSNd
`
`
`
`(LHSNd(O)HSNd*NASiz: di/dOl8}
`YAS
`
`
`(O)HSNd(O)MOV
`
`(viva)(O)NAS
`
`
`+OVNoceceeseccsceee
`
`tddWLNAITO}HOLVdSIGGSSVE-THNINSIIDPPBEESSESS°
`
`

`

`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 7 of 9
`
`US 6,182,139 B1
`
`(viva)
`
`
`
`+HOV(0)MOV+NAS
`
`
`
`(O)HSNd(O)NAS
`
`:SIOOL
`
`dlONSYSHOLVdSid
`
`(O)HSNd
`
`isumocecccccccsscccccccesarsgeenssceasssenssscenassceassccenssecenssseassecnsasesserscensstenssceeeennnnane
`
`
`
`
`
`ZSOAS
`
`auASTe
`
`(VLVQ):(O)HSNd¢CC4q}+OVLewcececneccces-
`.
`
`YYAS
`
`O0)NAS
`
`
`
`
`
`
`
`
`TSVOLLINiddvINAIT9|(O)HSNdpurennestsrereees:: di/dOl8:
`
`
`
`
`

`

`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 8 of 9
`
`US 6,182,139 B1
`
`
`
`
`
`
`
`
`L?JOdTITO
`d?TITO
`
`69
`
`

`

`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 9 of 9
`
`US 6,182,139 B1
`
`
`
`SDNSOLTO
`SOWONI
`
`El LVLS
`d'O L
`
`E||W.LS
`
`d'OL
`
`

`

`1
`CLIENTSIDE RESOURCE-BASED
`LOAD-BALANCING WITH
`DELAYED-RESOURCE-BINDING USING TCP
`STATE MIGRATION TO WWW SERVER
`FARM
`
`RELATED APPLICATION
`This application is a continuation-in-part of the
`co-pending parent application for “A World-Wide-Web
`Server with Delayed Resource-Binding for Resource-Based
`Load Balancing on a Distributed-Resource Multi-Node
`Network”, U.S. Ser. No. 08/691,006, filed Aug. 5, 1996, now
`U.S. Pat. No. 5,774,660.
`FIELD OF THE INVENTION
`This invention relates to network Servers, and more par
`ticularly to URL-based Server-assignment on the client-Side.
`BACKGROUND OF THE INVENTION
`Many Internet users can testify to the utter frustration
`when a “SERVER NOT RESPONDING” error message is
`displayed on their browser while trying to connect to a web
`Site. Users often blame the company that administers the
`unavailable web site, despite large investments in replicated
`Servers. Internet technologies are increasingly used for
`mission-critical Intranet applications that require high levels
`of reliability. An intelligently-designed web-site architecture
`with better fault-tolerance is needed.
`The parent application described a server farm that uses a
`single, virtual IP address for all server machines. The client
`first connects to a load-balancer at the Server farm that
`receives all incoming packets to the Virtual IP address. The
`load-balancer makes the initial connection with the client,
`Saving the packets used to make the connection. Once the
`connection is made and acknowledged, the client Sends the
`data request in a packet that contains a Universal Resource
`Locator, or URL.
`The load-balancer extracts the URL from the packet. The
`URL specifies a file or service at the web-server farm. The
`load-balancer then Selects only those Servers that have the
`resource requested in the URL. Load-balancing is then
`performed among these Servers.
`Since load-balancing waits until the URL is received,
`load-balancing depends on the resource requested, not
`merely on the load of each server. The server farm can be
`heterogeneous-the entire content of the web site does not
`have to be mirrored to each server's hard disk. Some files
`and resources may be located on a single node or a few
`nodes. Other web sites resources may include dedicated
`Servers with Specific resources Such as databases or built-in
`application-programming interfaces (API's) to interface
`with user-defined programs, or Software licenses to run
`particular programs on particular Servers. Other Servers may
`support the SMTP or POP3 post-office-protocols for e-mail,
`the NNTP protocol for newsgroups, etc. These specialized
`resources can reside on just a few of the Servers.
`TCP State Migration
`The connection is transferred from the load-balancer to
`the assigned Server once the URL is extracted. In this
`process, called TCP State migration, the Stored packets from
`the client are replayed by the load-balancer to the assigned
`Server. The acknowledgement packets from the assigned
`Server are captured by the load-balancer and deleted So that
`the client is unaware that the connection has been transferred
`from the load-balancer to the assigned Server. Future packets
`from the client are first routed to the load-balancer, and then
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,182,139 B1
`
`2
`passed through to the assigned Server. The assigned Server
`uses the virtual IP address instead of its own IP address as
`the Source address for packets returned to the client.
`TCP state migration is described in much more detail in
`the parent, U.S. Pat. No. 5,774,660, hereby incorporated by
`reference.
`Fault-Tolerant Web Site-FIG. 1
`The parent application described a fault-tolerant web farm
`using a back-up load balancer. FIG. 1 is a diagram of a
`fault-tolerant web site with a back-up load balancer and dual
`Internet connections. Browser client 10 Sends requests
`through Internet 66 with a virtual IP address for the whole
`web site. Incoming packets with the virtual IP address are
`routed to load balancer 70 over local LAN 144. Local LAN
`144 may contain routers, Switches, and hubs (not shown)
`when Servers are located on Separate network nodes. Most
`large Server farms have very complex interconnections
`within the local LAN network. Local LAN 144 connects to
`Internet 66 through Internet connection 142 which directly
`connects to Internet connection router 140, and through
`Internet connection 148, which is connected to Internet
`connection router 146.
`Connections 142, 148 provide connection to Internet 66.
`A primary load balancer 70 is used to direct and load balance
`connections across servers 51, 52, 55, 56. A backup load
`balancer 70' is also provided to take over operation should
`primary load balancer 70 fail. These load balancers are
`located on Separate Servers to lessen the chance that both fail
`at the same time. Backup load balancer 70' closely monitors
`primary load balancer 70 to detect a failure.
`It is Somewhat undesirable to have a back-up load bal
`ancer. If the primary and back-up load-balancers crash or
`otherwise becomes unavailable, client packets are no longer
`forwarded to their Servers, causing the clients to hang. A
`technique to avoid this client hang caused by a load-balancer
`crash is desired.
`Incoming Packets Through Load-Balancer
`FIG. 1 shows that incoming packets from client 10 are all
`routed through load-balancer 70, since a virtual IP address is
`used as the destination address. Load-balancer 70 changes
`the address of these incoming packets to direct them to the
`assigned server, such as server 52. Server 52 then sends the
`data back to client 10, using the virtual IP address as the
`SOCC.
`Although Server 52 sends outgoing packets directly to
`client 10, the incoming packets Still all go through load
`balancer 70. This still creates Somewhat of a network
`bottleneck, although certainly not as Severe as the prior art
`Since only the Smaller incoming packets are routed through
`load-balancer 70. It is desirable to remove this bottleneck.
`FIG. 2 shows a client attempting to connect to a failed
`Server. Similar reference numbers are used as described for
`FIG. 1. Client 10 attempts to open a connection to load
`balancer 70, which is migrated over to server 52. Packets
`from client 10 are not responded to by server 52 since server
`52 has crashed. Client 10 receives no reply from server 52,
`So client 10 eventually displays an error message to the user
`such as “Server Not Responding”. Otherwise, the client
`times out while waiting for a response, and displays the error
`message “Server Down or Unreachable', or “Connection
`Timed Out’.
`Another common error is that the client uses a Stale
`reference-a URL to a web page that no longer exists or has
`been relocated. It is desirable to have URL automatically
`translated to the relocated web page to avoid this error.
`
`

`

`3
`It is desired to reduce the frequency of “SERVER NOT
`RESPONDING” and “SERVER TIMED OUT” messages
`that Internet users often receive. A more efficient and fault
`tolerant web-site architecture that avoids the data bottleneck
`and Single point of failure at the load-balancer at the web site
`is desired. It is desired for the client to perform load
`balancing or Server assignment and for the TCP connection
`to be migrated from the client to the assigned Server.
`Client-side Server-assignment is desirable.
`WAN load balancing is also desirable. To minimize client
`latency the client should be served by the best responding
`Server. Responding is a function of both Server load and
`network latency. Minimizing latency is desirable since
`minimal-latency paths tend to go around Internet
`bottlenecks, because Server routes though bottlenecks are
`slower. This improves the overall performance of the Inter
`net and/or company WAN links.
`SUMMARY OF THE INVENTION
`A client-side dispatcher migrates a connection for a
`high-level client application from an original Server to a
`relocated Server. The client-side dispatcher has a Session
`table for Storing an original Server address of the original
`Server and a relocated Server address of the relocated Server.
`An input receives first packets from the high-level client
`application. The first packets have the original Server
`address as a destination address. An output outputs to a
`network Second packets. The Second packets have the relo
`cated Server address as the destination address.
`A local packet Storage is for Storing the first packets. An
`address translator converts the destination address of the first
`packets from the original Server address to the relocated
`Server address to generate the Second packets. A packet
`replayer sends the Second packets to the output.
`A first State machine tracks a Sequence of the first packets
`from the high-level client application. A Second State
`machine tracks a Sequence of the Second packets to the
`network. A checksum generator re-generates a checksum for
`the Second packets containing the relocated Server address.
`A sequence-number generator adjusts a Sequence number
`of incoming packets from the relocated Server to match
`Sequence numbers from the original Server. It also adjusts an
`acknowledgement Sequence number of outgoing packets to
`the relocated Server to match Sequence numbers for the
`relocated Server. Thus packets to the original Server are
`altered for transmission to the relocated Server.
`In further aspects the input is connected to an Internet
`Protocol IP layer. The IP layer is connected to a transfer
`control-protocol TCP layer that is connected to the high
`level client application. The output is connected to a data
`link layer that is connected to the network.
`In Still further aspects the Session table has a plurality of
`entries. Each entry is Selected by a first indeX and by a
`Second index. The first indeX has the original Server address
`while the second index has the relocated server address. The
`first indeX is extracted from outgoing first packets while the
`Second indeX is extracted from incoming packets from the
`relocated Server.
`In further aspects the Sequence numbers of incoming
`packets from the relocated Server are adjusted by Subtracting
`a delta Value while the acknowledgement Sequence numbers
`for Outgoing packets to the relocated Server are adjusted by
`adding the delta Value. The delta Value is generated by
`Subtracting a Sequence number from a first packet received
`from the relocated Server from a Sequence number from a
`first packet received from the original Server.
`
`4
`In other aspects an error detector detects an error from the
`original Server. The error detector Sends a reset packet to the
`original Server to close a connection. The error detector
`activates the address translator to translate the first packets
`Stored in the local packet Storage into the Second packets.
`The packet replayer Sends the Second packets to the relo
`cated Server to make a new connection with the relocated
`Server instead of with the original Server. Thus the connec
`tion is migrated from the original Server to the relocated
`Server when an error occurs. The error detector detects the
`error when the original Server does not respond or when
`incoming data indicates an error.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a diagram of a fault-tolerant web site with a
`back-up load balancer and dual Internet connections.
`FIG. 2 shows a client stranded on a failed server.
`FIG.3 shows a client-side dispatcher in the client machine
`that assigns a Server to the client.
`FIG. 4 is a diagram of a client-side dispatcher module.
`FIG. 5 shows an initial error packet intercepted by the
`client-side dispatcher and the connection migrated to a
`relocated Server.
`FIG. 6 illustrates client-side TCP state migration to a
`relocated Server when a connection was made to an original
`server that later fails.
`FIG. 7 highlights delayed URL-based dispatch from the
`client-side dispatcher to a server.
`FIG. 8 highlights multicast from the client-side dispatcher
`to multiple Servers to find the fastest-responding Server to
`handle the request.
`FIG. 9 shows an index into the session table for outgoing
`packets and another indeX into the Session table for incom
`ing packets.
`FIG. 10 shows the contents of the session table in the
`client-side dispatcher.
`DETAILED DESCRIPTION
`The present invention relates to an improvement in Inter
`net request dispatching from clients to Servers. The follow
`ing description is presented to enable one of ordinary skill in
`the art to make and use the invention as provided in the
`context of a particular application and its requirements.
`Various modifications to the preferred embodiment will be
`apparent to those with skill in the art, and the general
`principles defined herein may be applied to other embodi
`ments. Therefore, the present invention is not intended to be
`limited to the particular embodiments shown and described,
`but is to be accorded the widest Scope consistent with the
`principles and novel features herein disclosed.
`The inventor has realized that the TCP state migration
`method described in the parent application can be used not
`just within the web-site farm, but can extend back to the
`client. The connection is transferred or “hops', not just
`within the server farm, but across the Internet from server to
`server, controlled by the client. While the parent describes
`TCP migration of the connection from the load balancer to
`the assigned Server, the inventor has realized that the client
`can also perform TCP migration.
`Client-Side Load Balancer Intercepts Connection Packets
`The functions of the load balancer can be moved below
`the client's network Stack. Then the connection can be
`initially made within the client machine, with all
`connection-establishment packets intercepted without being
`
`US 6,182,139 B1
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`

`

`US 6,182,139 B1
`
`S
`Sent out over the network. A load-balancer module in the
`client machine fakes a connection with the standard TCP/IP
`Stack that is used by the higher-level client application
`(browser). Once the browser's stack makes the faked
`connection, the browser sends out the URL with the
`requested resource. The client load-balancer can then extract
`the URL and make a server assignment. The client load
`balancer then replays the connection-establishment packets
`to the assigned Server by transmitting them over the Internet.
`The client-side load balancer resides in the client
`machine's network Stack-invisible to the client applica
`tions. It appears to the client application that a connection is
`made with a remote server. Once the URL is sent from the
`client application, the client-side load-balancer assigns a
`remote Server and migrates the connection over the Internet
`to the remote Server. The client application or browser is not
`aware that the connection was migrated from the local
`machine to a remote node. Thus client-side load balancing is
`transparent to high-level user applications.
`The client-side load balancer can operate in other modes.
`For example, a normal connection with a remote Server can
`be made. If a Server-error message is received, the client
`Side load-balancer intercepts the error messages, hiding
`them from the client user application. A new connection to
`a replacement Server is made by the client-Side load
`balancer by replaying the connection packets. Once the new
`connection is made, the client can continue to make
`requests, unaware that the connection has been transferred to
`another server. Thus server errors are hidden from the user.
`Of course, the client-Side load balancer cannot perform
`traditional load balancing without knowledge of the loads of
`each Server at the Server farm, or knowledge of requests
`from other clients. Thus the inventor prefers the term
`“client-side dispatcher' Since client requests are dispatched
`to various Servers.
`Load-Balancing By MultiCast of Connection Packets
`A simple type of load-balancing is possible from the client
`Side. Rather than just make one connection with one server,
`the client-side dispatcher sends out many connection packets
`to different servers. The server that responds first is likely to
`be the least loaded, or the closest server to the client on the
`network. The connection is acknowledged with this first
`responding Server while connections to the slower Servers
`are cancelled by Sending them reset packets.
`While the load-balancing capabilities of the client-side
`dispatcher are perhaps less powerful than for the Server-side
`load balancer, error handling is better performed on the
`client Side. Thus the client-side dispatcher has error
`handling capabilities that are Superior to those of the Server
`farm's load balancer. The usefulness of the client-side
`dispatcher thus extends beyond traditional load-balancing.
`Client-Side Dispatcher In Client's Network Stack-FIG.
`
`3
`
`6
`the addresses and an IP checksum is generated and
`prepended. The TCP packet with the user-application data is
`contained within the IP packet.
`Several operating systems (Windows NT, Solaris, AIX,
`HPUX, and others) allow for third-party software modules
`to be placed within the network Stack. The exact location
`within the Stack can vary, but the modules can intercept and
`alter network packets without being visible to high-level
`user applications 14. In FIG. 3, client-side dispatcher 20 is
`such a third-party software module that is placed below IP
`layer 18. Client-side dispatcher 20 intercepts IP packets
`from IP layer 18 before they are sent to data-link layer
`(DLL) 22. DLL 22 contains the low-level network-card
`Software drivers, Such as an Ethernet driver. DLL 22 writes
`and reads registers on a network card to Send packets over
`the physical media of network 30.
`ASSigned Server 52 also connects to network 30 using
`data-link layer DLL 23. Packets are passed up the server's
`network stack to IP layer 28 and TCP layer 27 before the
`data is sent to Server application 24. Server application 24
`responds to the high-level request from high-level client
`application 14 by fetching the desired data and transmitting
`it back over network 30 to client 10.
`In this mode, client-side dispatcher 20 intercepts IP pack
`ets and changes the virtual IP address of the server farm to
`the physical IP address of assigned server 52. Since the
`physical IP address is used for outgoing packets, these
`packets are Sent directly to assigned Server 52. These packets
`are not sent first to the server-side load balancer (70 of FIG.
`1). Thus load-balancing functions are shifted to the client
`machine using client-side dispatcher 20.
`Client-Side Dispatcher-FIG. 4
`FIG. 4 is a diagram of a client-side dispatcher module.
`Client-side dispatcher 20 fits in the client machine’s network
`stack as shown for FIG. 3. Session table 32 contains entries
`for TCP Sessions with remote clients, including Sessions
`migrated to a another Server, and Sessions that have not yet
`been migrated to the remote server. Session table 20 is
`described in more detail in FIGS. 9-10.
`Address translation table 32 contains IP addresses and
`TCP ports of relocated servers that are linked to IP addresses
`and ports of requested Servers. Relocated Servers are the
`client's TCP connection endpoints that have been moved to
`a new Server proceSS or machine.
`Address translation table 34 converts the IP address and
`port of a requested server to an IP address and TCP port of
`a relocated Server. This translation is then Stored in Session
`table 32 for currently-active Sessions. Address translation
`table 34 contains translations for active Sessions, and trans
`lations for other addresses not currently active in a Session.
`TCP state machine 38 keeps track of the TCP state as
`Synchronization SYN, acknowledgement ACK, data, and
`reset RST packets are exchanged. Since multiple client
`applications can open multiple Sessions with different
`Servers, TCP States for each active Session are Stored in
`session table 32.
`Rather than Simply pass each packet through, client-side
`dispatcher 20 may store packets in local packet Storage 40.
`Both incoming and outgoing packets may be Stored. Packet
`replayer 42 re-transmits packets from Storage 40 to relocated
`Servers as connections are transferred. Incoming error pack
`ets may be intercepted by client-side dispatcher 20 and
`Stored in Storage 40 rather than Sent up to the client appli
`cation while the connection is being migrated from a failed
`Server. Outgoing packets for establishing a connection can
`be stored rather than sent out over the network until the first
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`FIG.3 shows a client-side dispatcher in the client machine
`that assigns a Server to the client. Client 10 includes one or
`more high-level user applications 14. High-level user appli
`cations 14 send information over network 30 by sending
`information down a network stack. TCP layer 16 receives
`network requests from high-level user applications 14 and
`forms TCP packets. TCP headers, containing Sequence and
`acknowledgement numbers, ports for the Source (client
`application) and destination (server application) and a TCP
`checksum are generated and prepended to the packet.
`IP layer 18 receives the TCP packets from TCP layer 16
`and generates Internet Protocol (IP) addresses for the client
`machine and the Server machine. An IP header, containing
`
`60
`
`65
`
`

`

`US 6,182,139 B1
`
`15
`
`25
`
`7
`data-request packet is received, So the client-side dispatcher
`20 can decode the URL request before deciding which server
`to assign the request to.
`Initial-Effor/Timeout Redirect-FIG. 5
`FIG. 5 shows an initial error packet intercepted by the
`client-side dispatcher and the connection migrated to a
`relocated Server. The client-side dispatcher can operate in
`Several modes. An error-recovery mode is described first.
`The error-recover mode allows packets to flow through
`freely from the high-level client application and TCP/IP
`layers 21 to the data-link layer DLL 22 and out over network
`30 to a server. However, when an error packet is received
`from a server, client-side dispatcher 20 prevents the error
`packet from reaching the client application. Instead, a new
`connection to another Server is opened using TCP State
`migration. The relocated Server then responds to the client
`requests. Packets are altered by client-side dispatcher 20 to
`look like packets from the original Server So that the high
`level client application is not aware of the error or that the
`Server connection has been relocated to another Server.
`When the high-level client application desires to open a
`new connection with a remote server, it causes the TCP layer
`to generate a SYN packet that is sent down the TCP/IP stack
`to network 30. Before reaching DLL 22, the SYN packet is
`intercepted by client-side dispatcher 20. A Session entry in
`the Session table is created for the new connection, but the
`packet is not altered and is passed down to DLL 22.
`The remote server is the original server identified by the
`destination IP address and TCP port from client application
`and TCP/IP layers 21. When this original server operates
`normally, it responds with a SYN+ACK packet to the client.
`When client-side dispatcher 20 sees the SYN+ACK packet,
`it may delete the Session entry and allow the Session to
`proceed normally without altering any packets.
`However, when the Server proceSS is not running, the
`Server machine may respond with an error packet Such as a
`reset RST packet. This RST packet is intercepted by client
`side dispatcher 20 after being passed up by DLL 22. Rather
`than Send this RST packet up to client application and
`TCP/IP layers 21, client-side dispatcher 20 intercepts the
`RST packet and performs TCP state migration to another
`Server. A timeout could also occur rather than a RST packet
`being received. The timeout could then initiate State migra
`tion rather than the RST packet.
`The SYN packet is retrieved from the local packet storage
`in client-side dispatcher 20, and the destination address is
`translated from the original server's address to an IP address
`of another Server, the relocated Server. The address is trans
`lated by looking up the original server's IP address and TCP
`50
`port in the address translation table to find the IP address and
`TCP port of the relocated connection to the server process.
`The TCP and IP checksums are recalculated before the
`altered SYN packet is sent out over network 30 to the
`relocated Server.
`If the relocated Server is also down, and either times out
`or replies with a RST packet, the relocation process can be
`repeated. However, when the relocated Server responds with
`a SYN+ACK packet, the connection can be migrated. The
`Source address of the relocated Server is changed to the
`original Server's address by client-side dispatcher 20, and
`the checksums recalculated. The altered SYN+ACK packet
`is passed up to the client TCP stack. The client applications
`TCP stack then sends its request in a TCP data packet. The
`request packet is intercepted by the client-side dispatcher,
`and it destination address changed from the original Server
`to the relocated Server. Checksums are recalculated and the
`
`8
`altered request packet is sent over network 30 to the relo
`cated Server. The relocated Server responds with one or more
`data packets that are intercepted by the client-Side dis
`patcher. The Source addresses of these data packets are
`changed to the original Server's address before being passed
`up to the client application.
`When the client has received all the desired data, it closes
`the connecti

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