CA2470300A1 - Network load balancing with host status information - Google Patents

Network load balancing with host status information Download PDF

Info

Publication number
CA2470300A1
CA2470300A1 CA002470300A CA2470300A CA2470300A1 CA 2470300 A1 CA2470300 A1 CA 2470300A1 CA 002470300 A CA002470300 A CA 002470300A CA 2470300 A CA2470300 A CA 2470300A CA 2470300 A1 CA2470300 A1 CA 2470300A1
Authority
CA
Canada
Prior art keywords
load
health
application
recited
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA002470300A
Other languages
French (fr)
Inventor
Christopher L. Darling
Joseph M. Joy
Sunita Shrivastava
Chittur Subbaraman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CA2470300A1 publication Critical patent/CA2470300A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Abstract

In a first exemplary media implementation, one or more processor-accessible media include processor-executable instructions that, when executed, direct a system to perform actions that include: accumulating host status information at multiple hosts; and sending the accumulated host status information from the multiple hosts. In a second exemplary media implementation, one or more processor-accessible media include processor-executable instructions that, when executed, direct a system to perform actions that include: receiving host status information from multiple hosts; and making load balancing decisions responsive to the received host status information. In a third exemplary media implementation, one or more processor-accessible media include processor-executable instructions that, when executed, direct a. system to perform actions that include: determining health and load information on a per application basis;
and selecting an application from among multiple applications responsive to the health and load information.

Description

1 Network Load balancing with Host Status Information s TECHNICAL FIELD
6 This disclosure relates in general to network load balancing and in particular, by way of example but not limitation, to network load balancing with a host status information.

io BACKGROUND
n Communication, and many facets of Iife that involve communication, has ~z been greatly impacted by the intemet. The Internet enables information to be i3 communicated between two people and/or entities quickly and relatively easily.
is The Internet includes many network nodes that are linked together such that ~s information may be transferred between and among them. Some network nodes 6 may be routers that propagate a packet from one link to another, may be individual m client computers, may be personal networks for different entities {e.g., intranets ~s for businesses), and so forth. -~9 For this personal network case, as well as others, packets arriving at an zo Internet node or nodes are distributed to other nodes within the personal network.
z~ Such a personal network may be formed, for example, from a set of servers that zz can each work on packets that arrive at the personal neriuork. A business, a z3 university, a government office, etc. may receive many packets in a short z4 timeframe at its personal network. In order to respond in a timely manner and to zs reduce the likelihood of rejection or loss of arriving packets, the personal network Atty Docket No. MS I -I S20US. PATAPP

may rely on multiple servers that can each work on the arriving packets z simultaneously.
The arriving packets are often inquiries pertaining to certain information, a such as a document, a catalog item, a web page, and so forth. The arriving packets s can also pertain to an economic transaction between a customer and a merchant.
6 Other purposes for the packets of a packet-based communication are possible.
Regardless, the arriving packets are distributed among different servers of a set of s servers to accommodate a rapid arrival of the packets and/or complex 9 communication exchanges.
o The distribution of arriving packets among different servers of a set of a servers is often termed network load balancing. In other words, a load balancing iz operation may be performed an packets as they arrive at a node or nodes of the 13 Internet when the node or nodes constitute a personal network andlor when they ~a connect the personal network to the Internet.
is Such a load balancing operation is accomplished using dedicated hardware s that fronts the personal network at the node or nodes that connect the personal network to the Internet and/or that provide a presence for the personal network on Is the Internet. The physical hardware that performs the load balancing operation is i 9 usually duplicated in its entirety to realize redundancy and improve availability of zo the load balancing operation. To increase capacity for load balancing operations, z~ more-powerful hardware that replicates the entirety of the previous load balancing 22 hardware, and thus the operational capability thereof, is substituted for the z3 previous load balancing hardware. Such . scaling up of the load balancing z4 operational capabilities is therefore confined to increasing the power of the zs hardware via substitution thereof.
Atty Docks No. MSI-1520US.PATAPP

To implement a load balancing operation, the hardware usually performs a z round robin distribution of arriving connection requests. In other words, arriving 3 connection requests are distributed to servers of a set of servers in a linear, 4 repeating manner with a single connection request being distributed to each server.
s This round-robin load balancing distribution of connections is typically utilized 6 irrespective of the condition of the personal network or the nature of an arriving connection request. If a load balancing operation does extend beyond a round s robin distribution, these other factors are only considered to the extent that they 9 may be inferred from network traffic and/or from a congestion level of the o personal network.
Accordingly, there is a need for schemes and/'or techniques that improve iz network load balancing and/or the options associated therewith.

~a SUMMARY
is In a first exemplary media implementation, one or more processor-6 accessible media include processor-executable instructions that, when executed, m direct a system to perform actions that include: accumulating host status la information at multiple hosts; and sending the accumulated host status information 19 from the multiple hosts. In a second exemplary media implementation, one or zo more processor-accessible media include processor-executable instructions that, z ~ when executed, direct a system to perform actions that include: receiving host zz status information from multiple hosts; and making load balancing decisions z3 responsive to the received host status information. In a third exemplary media z4 implementation, one or more processor-accessible media include processor-zs executable instructions that, when executed, direct a system to perform actions Atty Docket No. MSI-1520US.PATAPP

that include: determining health and load information on a per application basis;
z and selecting an application from among multiple applications responsive to the health and load information.
a In a fourth exemplary media implementation, one or more processor s accessible media include processor-executable instructions that, when executed, direct a system to perform actions that include: analyzing health and/or load information for multiple application endpoints; and ascertaining a token allotment s for the multiple application endpoints responsive to the analyzing.
In a fifth exemplary media implementation, one or more processor accessible media include processor-executable instructions that, when executed, 11 enable a system to implement a message protocol between at least one host and lz one or more load balancing units, the message protocol usable for communicating 13 health and/or load information between the at least one host and the one or more is load balancing units.
is In an exemplary system implementation, a system includes: at least one 16 device that is hosting one or more applications, the at least one device including a m health and load table that includes multiple entries, each entry of the multiple ,s entries associated with an application of the one or more applications;
each entry 9 of the multiple entries including: an application identifier for a particular zo application of the one or more applications; information characterizing at least one z~ status of the particular application; and at least one load balancing directive z2 regarding the particular application.
z3 Other method, system, approach, apparatus, application programming z4 interface (API), device, media, procedure, arrangement, etc.
implementations are zs described herein.
Any Dxket No. MSI-7520US.PATAPP
...."...... ....,.. . ,.._.., yy",~,y"".~,.~,.,..-",N, 7yrys~~e,~.AFa~°N~Nw~~~:;>.v~....m.....~ ..... .... ...,.... ........,.
... .m rvwe~.-.....~.>""...~..~.....- _ ..,......
2 BRIEF DESCRIPTION OF TIDE DRAWINGS
The same numbers are used throughout the drawings to reference like a and/or corresponding aspects, features, and component;.
s FIG. l is an exemplary network load balancing paradigm that illustrates a 6 load balancing infrastructure and multiple hosts.
FIG. 2 is an exemplary network load balancing paradigm that illustrates s multiple load balancing units and multiple hosts.
FIG 3 illustrates an exemplary load balancing unit having separated ,o functionality and an exemplary host.
n FIG 4 illustrates exemplary network load balancing infrastructure having ~z separated classifying and forwarding functionality.
13 FIG. 5 is a flow diagram that illustrates an exE:mplary method for scaling a out network load balancing infrastructure into different configurations.
is FIG. 6 illustrates a first exemplary network load balancing infrastructure 16 configuration from a device perspective.
m FIG 7 illustrates a second exemplary network load balancing infrastructure is configuration from a device perspective.
FIGS. 8A and 8B illustrate first and second exemplary network load ao balancing infrastructure configurations from a component perspective.
21 FIGS. 9A and 9B illustrate first and second exemplary network load z2 f ~ balancing infrastructure configurations from a resource perspective.
23 FIG 10 illustrates an exemplary network Ioad balancing approach that za involves host status information.
Atty Docket No. MS t-I510US.PATAPP

FIG 11 is a flow diagram that illustrates an exemplary method for network z load balancing that involves host status information.
3 FIG 12 illustrates an exemplary network load balancing approach that
4 w involves health and load information.
FIG. 13A is an exemplary health and load table as illustrated in FIG 12.
FIG. 13B is an exemplary consolidated health and load cache as illustrated ~ ~ in FIG. 12.
FIG 14 is a flaw diagram that illustrates an exemplary method for network load balancing that involves health and load information.
to FIG. 15 illustrates an exemplary message protocol for communications " between the hosts and load balancing units that are illustrated in FIG. 12.
,z FIG 16 illustrates an exemplary message transmission scheme for communications between the hosts and load balancing units that are illustrated in i4 FIG 12.
,s FIGS. 17A and 17B illustrate exemplary health and load information proxy ,6 storage scenarios for health and load tables of FIG. 13A and for consolidated ,7 health and load caches of FIG 13B, respectively.
,g FIG 18 illustrates an exemplary target host allotment procedure that utilizes ,9 health and load information.
2o FIG 19 illustrates an exemplary network load balancing approach that 2, involves session information.
22 FIG 20 illustrates an exemplary network load balancing approach that 23 involves communicating session information using notifications and messages.

Atty Docket No. MSI-152DUS.PATAPI~
~°,~~n-~~.s~n~»wxwu r~.r:,ralsss~s~...~ra~.n~rv«r ...,.M,."
...,."~yt;~.~,~~.~,,"... ...M u,..."..~.".",~...=s............. .. ~. .. ....
. ....._.__... ._....,.....,._.._.-._...._ FIG. 21 is a flow diagram that illustrates an exemplary method for network a load balancing that involves communicating session information using notifications and messages.
a FIG. 22 illustrates an exemplary approach to rnamaging session information s at multiple load balancing units.
FIG. 23A is an exemplary session table as illustrated in FIG 20.
7 FIG. 23B is an exemplary distributed atom manager (DAM) table (DAMT) s as illustrated in FIG 22.
FIG 24 is a flow diagram that illustrates an exemplary method for to managing session information at multiple load balancing units.
l FIG. 25 illustrates exemplary network load balancing infrastructure having ii request routing functionality.
13 FIG. 26 is a flow diagram that illustrates an exemplary method for routing i4 incoming packets with regard to (i) session information and (ii) health and load is information.
FIG. 27 illustrates an exemplary traffic routing flow in the absence of failures.
1$ FIG. 28 illustrates an exemplary traffic routing flow in the presence of m failure(s).
o FIG 29 illustrates additional exemplary failover procedures for high 2i availability of network load balancing infrastructure.
za FIG 30 illustrates an exemplary operational implementation of tragic a3 routing interaction with health and load information.
Za FIG 31 illustrates exemplary high availability mechanisms for network is load balancing infrastructure.
7 Atty Docket No. MS1-1520US.PATAPP
.... .,.,:, a. _._...... .__._..,.. .. n.">..,."" ~.~. "w«r~ x;~,,~..,",-..;";~~,.;;.-.~.a.~,~,,,~".-"...,.~ ,"",~"-,",~,.",. ",~. *rv..,.~.
~,x",.~.,.".w ...,----. .. ... ....

FIG. 32 illustrates an exemplary approach to application-level network load 2 balancing with connection migration.
FIG. 33 is a flow diagram that illustrates an exemplary method for a migrating a connection from a first device to a second device.
s FIG. 34 illustrates an exemplary approach to connection migration from the 6 perspective of an originating device.
FIG. 35 illustrates an exemplary approach to connection migration from the 8 perspective of a targeted device.
FIG. 36 illustrates an exemplary approach to an offloading procedure for a zo connection migration.
n FIG. 37 illustrates an exemplary approach to an uploading procedure for a 12 connection migration.
i3 FIG 38 illustrates an exemplary approach to packet tunneling between a l4 forwarder and a host.
is FIG. 39 is a flow diagram that illustrates an exemplary method for packet 16 tunneling between a first device and a second device.
FIG 40 illustrates an exemplary computing (or general device) operating $ environment that is capable of (wholly or partially) implementing at least one ~ aspect of network load balancing as described herein.
zi DETAILED DESCRIPTION
Zz Exemplary Network Load Balancing Paradigms 23 This section describes exemplary paradigms for network load balancing Za and is used to provide foundations, environments, contexts, etc. for the AttyDocka No. MSI-1520US.PATAPP

descriptions in the following sections. This section primarily references FIGS. 1-z 3.
FIG 1 is an exemplary network load balancing paradigm 100 that illustrates a load balancing infrastructure 106 and multiple hosts 108. Exemplary network s load balancing paradigm 100 includes multiple clients 102( 1 ), 102(2) . ..
102(m) and multiple hosts 108(1), 108(2) ... 108(n), as well. as network 104 and load balancing infrastructure 106.
a Each of clients 102 may be any device that is capable of network communication, such as a computer, a mobile station, an entertainment appliance, another network, and so forth. Clients 102 may also relate to a person and/or entity that is operating a client device. In other words, clients 102 may comprise 12 logical clients that are users and/or machines. Network 104 may be formed from 13 one or more networks, such as the Internet, an intranet, a wired or wireless i4 telephone network, and so forth. Additional examples of devices for clients is and network types/topologies for network 104 are described below with reference 16 to FIG 40 in the section entitled "Exemplary Operating Environment for l Computer or Other Device".
~s Individual clients 102 are capable of communicating with one or more hosts 108, and vice versa, across network 104 via load balancing infrastructure zo 106. Hosts 108 host one or more applications for interaction/communication with zl clients 102, for use by clients 102, and so forth. Each host 108 may correspond to zz a server and/or a device, multiple servers and/or multiple devices, part of a server z3 and/or part of a device, some combination thereof, and so forth. Particular z4 implementations for hosts 108 are described further below in the context of zs different network load balancing situations. (However, back-end support for hosts Atty Docket No. MSI-1520US.PATAPP

108 is generally not shown for the sake of clarity.) Furthermore, additional z examples of devices for hosts 108 are also described below with reference to FIG.
40 in the section entitled "Exemplary Operating Environment for Computer or a - Other Device".
s Load balancing infrastructure 106 is reachable or locatable through network 104 at one or more virtual intemet protocol (IP) addresses. Communications from clients 102 (or other nodes) that are directed to the virtual IP address of load s balancing infrastructure 106 are received there and forwarded to a host 108.
Load balancing infrastructure 106 is comprised of hardware and/or software to components (not explicitly Shawn in FIG. 1).
1, Although load balancing infrastructure 106 is shown as an integral ellipse, 12 the infrastructure to effectuate load balancing may also be distributed to other 13 aspects of exemplary network load balancing paradigm 100. For example, ,a software components) of load balancing infrastructure I06 may be located at one is or more of hosts 108 as is described further below. Examples of architectures for I6 load balancing infrastructure 106 are described below with reference to FIG
40 in -, the section entitled "Exemplary Operating Environment for Computer or Other la Device".
19 As indicated at (1), one or more of hosts 108 may provide host status zo information from hosts 108 to load balancing infrastructure 106. This host status z, information may be application specific. .Examples of such host status information zz are described further below and include health and/or load information, session z3 information, etc. for hosts 108. A particular imp~iementation that includes z4 providing health and/or load information from hosts 108 to load balancing 1 0 Aay Do :key No. MS I-1520US.PATAPP

infrastructure 106 is described below in the section entitled "Exemplary Health and Load Handling".
At (2), a request is sent from client 102(1) across network 104 to load 4 balancing infrastructure 106 at the virtual IP address thereof. The content, format, s etc. of a request from a client 102 may depend on the application to which the request is directed, and the term "request" may implicitly include a response or responses from hosts) 108, depending on the context. Kinds of client requests s include, but are not limited to:
1. Hyper text transfer protocol (HTTP) GET requests to from a client using a browser program. Depending on the 11 application (and more specifically, on the uniform resource locator (URL) of the requests), it may be better to service the requests by ~z different sets of hosts, and the existence of a client "session" state on the hosts may militate that requests from specific clients be routed to '4 specific hosts. The requests may be over a secure sockets layer is (SSL) (or other encrypted) connection.
16 2. Virtual private network (VPN) connections (e.g., the 1~ hosts are a set of VPN servers). In this case, the "request" can be considered to be a layer-2 tunneling protocol (L2TP) or point-to ls point tunneling protocol (PPTP) "connection" (the latter is a combination of a transmission control protocol (TCP) control 2° connection and associated generic routing encapsulation (GRE) data 21 traffic).
za 3. Terminal server connections (e.g., the hosts are a set of terminal servers).

Atty Docks No. M51.152CUS.PATAPP

4. Proprietary requests in the form of individual TCP
connections (one per request) employing a proprietary application-specific protocol.
5. Simple object access protocol (SOAP) requests.
6. Real-time communication requests involving control information over a TCP connection and latency-sensitive media streaming over real-time protocol (RTP).
7 Thus, requests can take many diverse, application-specific forms. In certain s described implementations, load balancing infrastructure 106 may make 9 application-specific forwarding decisions.
At (3), load balancing infrastructure 106 forwards the request from 102(1) r r to host 108(2) (in this example). Load balancing infrastructure 106 may consider iz one or more of many factors when selecting a host 108 to which the request is to i3 be forwarded, depending on which implementations) described herein are being a employed. For example, load balancing infrastructure 106 may take into account:
~s the application health and/or load information of each host 108, session r6 information relating to client 102(1) as stored at a host I08, and so forth.
m FIG 2 is an exemplary network load balancing paradigm 200 that illustrates s multiple load balancing units I06 and multiple hosts I08. Specifically, Ioad 9 balancing infrastructure 106 is shown as multiple load balancing units 106(1), Zo 106(2) ... 106(u) in exemplary network load balancing paradigm 200.
a~ Additionally, two muter andlor switches 202(1) and 202(2) are illustrated.
Za Router/switches 202, if present, may be considered as part of or separate 23 from load balancing infrastructure 106 (of FIG 1). Router/switches 202 are Za responsible of directing overall requests and individual packets that are received is from network 104 to the shared virtual IP (VIP) addresses) of load balancing units Atty Docket No. MS 1.1520US.PATAPP
. .. _ ,. ,", ~,~ ,n,~~,- .,~,u~.,, ,,.~~,,"-r. ~,wwar.~~,.~s~,me~..,-~,-.~....~,.... .. .. .. .......,. w.,.,~,.,w",.".","......,~.....~.... ....
....,.,........._. .... _.........~ .~,_.~._._ 1 106. If a first router/switch 202 fails, the second router/switch 202 may takeover z for the first. Although two router/switches 202 are illustrated, one or more than 3 two router/switches 202 may alternatively be employed,.
Router/switches 202 may be ignorant of the load balancing infrastructure or s load-balancing aware. If router/switches 202 are not load-balancing aware, one of 6 two exemplary options may be employed: For a first option, one load balancing unit 106 is "assigned" the shared VIP address, and all network traffic is forwarded s thereto. This one load balancing unit I06 then evenly redistributes the traffic 9 across the other load balancing units I06. However-, there are bottleneck and to failover issues with this first option (which can be mitigated if multiple VIP
1 i addresses are shared and are split between multiple load balancing units 106). For Iz a second option, router/switches 202 axe "tricked" into directing network traffic to z 3 all load balancing units 106, which individually decide what traffic each should la accept for load balancing. However, there are inefficient effort duplication and ~s switch performance/compatibility issues with this second option.
is If, on the other hand, router/switches 202 are load-balancing aware, m router/switches 202 can be made to distribute incoming network traffic la between/among multiple load balancing units 106 (e.g., in a round-robin fashion).
9 It should be understood that such load-balancing-aware routers/switches 202 are zo capable of performing load balancing functions at a rudimentary level (e.g., in zl hardware). For example, load-balancing-aware routers/switches 202 can perform zz simple IP-address-based session affinity so that all packets from a specific source z3 IP address are directed to a same load balancing unit 106.
za Each separately-illustrated load balancing unit I06 of load balancing units zs 106 may represent one physical device, multiple physical devices, or part of a AttyDocket No. MSI-t520US.PATAPP

z single physical device. For example; load balancing unit 106(I) may correspond z to one server, two servers, or more. Alternatively, load balancing unit 106(1) and 3 load balancing unit 106(2) may together correspond to a single server. An a exemplary load balancing unit 106 is described further below from a functional s perspective with reference to FIG 3.
Two exemplary request paths [ 1 ] and [2] are illustrated in FIG. 2. For request path [I], client 102(2) transmits a request over network 104 that reaches
8 router/switch 202(1). Router/switch 202(I) directs the packets) of the request that
9 originated from client 102(2) to load balancing unit 1 U6( I ). Load balancing unit t o 106( 1 ) then forwards the packets) of the request to host 108( 1 ) in accordance with i some load-balancing functionality (e.g., policy). Fox request path [2], client 12 102(m) transmits a request over network I04 that reaches router/switch 202(2).
,3 Router/switch 202(2) directs the packets) of the request that originated from ~a client 102(m) to load balancing unit 106(u). Load balancing unit 106(u) then s forwards the packets) of the request to host 108(n) in accordance with some load i6 balancing functionality. Exemplary load-balancing functionality is described i~ further below with reference to FIG 3.
1 s FIG 3 illustrates an exemplary load balancing unit 106 having separated 19 functionality and an exemplary host I08. Load balancing unit 106 includes seven zo (7) functional blocks 302-314. These fimctional blocks of load balancing unit 106 z, may be realized at least partially using software. Host 108 includes one or more zz applications 316. In a described implementation, load balancing unit 106 includes zs a forwarder 302, a classifier 304, a request router 306, a session tracker 308, a za connection migrator 310, a tunneler 312, and a health and load handler 314.
zs I Atty Docks No. MS 1-t 520US. PA'CAPP

Health and load handler 314 is located partly at hosts 108 and partly on z devices of load balancing units 106: Health and load handler 314 monitors the health and/or load (or more generally the status) of hosts 108 so that health and/or a load information thereof may be used for the load-balancing functionality (e.g., s when making load-balancing decisions). Exemplary implementations for health s and load handler 314 are described further below, particularly in the section entitled "Exemplary Health and Load Handling".
s Session tracker 308 may also be located partly at hosts 108 and partly on devices of load balancing units 106. Session tracker 308 monitors sessions that to are established by clients 10~, so that reconnectionslcontinuations of previously ll established sessions may be facilitated by the load-balancing functionality. For i2 example, some applications keep application-specific client session data on the i3 hosts (which is also a type of host status information). These applications typically expect that clients use the same host for the duration of any given is session. Exemplary types of sessions include: (i) a TCP connection (which is, is strictly speaking, a session); (ii) an SSL session; (iii) a secure IP
(IPsec) session;
m (iv) an HTTP cookie-based session; and so forth.
Although session tracker 308 is illustrated as a discrete block in load i9 balancing unit 106, session tracking functionality of session tracker 308 may zo ,actually be implemented at a global level. In other words, session affinity is zi supported across multiple load balancing units 106. Session tracker 308 includes a zi centralized database and/or a distributed database of session information in order 23 to preserve session affinity. Exemplary implementations for session tracker 308, z4 with an emphasis on a distributed database approach, are described further below, zs particularly in the section entitled "Exemplary Session Tracking".
I S Auy Docker No. MS I-1520US.PATAPP

i Classifier 304 uses the data acquired and maintained by health and load z handler 314 and/or session tracker 308, possibly in conjunction with other factors, 3 to classify incoming requests. In other words, classifier 304 selects a target host a 108 for each incoming request from.a client 102. Forwarder 302 forwards client s requests (and/or the packets thereof in accordance with the targeted host 108 as 6 selected by classifier 304. Forwarder 302 and classifier 304 may operate on a per-packet basis. Exemplary implementations for forwarder 302 and classifier 304 are s described further below, particularly in the sections entitled "Exemplary Approach 9 to Flexible Network Load Balancing" and "Exemplary Classifying, Forwarding, to and Request Routing".
i 1 Request roister 306, as contrasted with per-packet implementations of iz forwarder 302 and classifier 304, can act as a proxy for an application running on i3 a host 108. For example, request roister 306 may terminate TCP connections, is parse (perhaps partially) each logical request from a client 102, and resubmit each 1 s logical request to the targeted host 108. Consequently, each logical request from a 6 client 102 may be directed to a different host 108, depending on the decisions z7 made by request muter 306. Furthermore, request roister 306 may perform pre-ss processing on a connection (e.g., SSL decryption), may choose to absorb certain i9 requests (e.g., because request roister 306 maintains a cache of responses), may zo arbitrarily modify requests before forwarding them to hosts 108, and so forth.
zi Exemplary implementations for request roister 306 are also described further zz below, particularly in the sections entitled "Exemplary Approach to Flexible z3 Network Load Balancing" and "Exemplary Classifying, Forwarding, and Request za Routing".
1 Atty Uockct No. MS!-1520tJS.PATAPP
~.,.".,.,..",r","" ~,..,.",___. . . ...,.. _ ...........
's i Connection migrator 310 enables a connection to be initially terminated at z load balancing unit 106 and then migrated such that the connection is subsequently 3 terminated at host 108. This connection migration can facilitate application-level 4 load balancing. ~ Connection migrator 310 is capable of migrating a connection s from load balancing unit 106 to a host 108 in such a manner that that the original 6 termination at load balancing unit 106 is transparent to a requesting client 102 and to applications 316 of the newly-terminating host 108. Tunneler 312 may utilize a an encapsulation scheme for the tunneling of packets that does not introduce an 9 overhead to each tunneled packet.
to The functionality of tunneler 312 may also be used in situations that do not ~ involve a connection migration. Furthermore, connection migrator 310 and/or iz tunneler 312 may additionally be used in non-Load-balancing implementations.
i3 Exemplary implementations for connection migrator 310, as well as for tunneler la 312, are described further below, particularly in the section entitled "Exemplary is Connection Migrating with Optional Tunneling and/or Application-Level Load s Balancing".
m Any given implementation of a Load balancing unit 106 may include one or is more of the illustrated functions. Although illustrated separately, each of the 19 functions of blocks 302-314 may actually be interrelated with, overlapping with, zo and/or inclusive of other functions. For example, health and/or load information zl of health and load handler 314 may be used by classifier 304. Also, connection zz migrator 310 and tunneler 312 work in conjunction with forwarder 302 and zs classifier 304. Certain other exemplary overlapping and interactions are described za herein below.
7 Atty Docket No. MSI-t.i20US.PATAPP

In a described implementation, host I08 runs and provides access to one or z more applications 316. Generally, applications 316 include file delivery programs, web site management/server programs, remote access programs, electronic mail a programs, database access programs, and so forth. Specifically, applications s may include, but are not limited to, web servers such as Internet Information Server~ (IIS) from Microsoft Corporation, terminal servers such as Microsoft's Terminal ServerTM, and firewall and proxy products such as Internet Security and s Acceleration ServerTM (ISA). Although the specific application 316 examples in the preceding sentence relate to Microsoft~ products, network load balancing as described herein is not limited to any particular vendor{s), application(s), or ~ r operating system(s).
Iz Exemplary Approach to Flexible IyTetwork Load Balancing This section illuminates how the network load balancing implementations 14 described in this and other sections herein provide a flexible approach to network ,s load balancing. This section primarily references FIGS. 4-9B.
As noted above, network load balancing functionality may be scaled up by replacing a first network load balancer with a second., bigger and more powerful is network load balancer. The hardware capabilities of the second network load 19 balancer replicate the entirety of the hardware capabilities of the first network load zo balancer, except that a greater capacity is provided. This is an inflexible approach zi that can be very inefficient, especially when only one network load balancing 22 feature is limiting performance and precipitating an upgrade of a network load 23 balancer.
z4 FIG 4 illustrates exemplary network Load balancing infrastructure having zs separated classifying and forwarding functionality. The separated classifying I Atty Docket No. MS i-1520US.PATAPP

functionality and forwarding functionality are represented by classifier 304 and forwarder 302, respectively. Although classifying and forwarding functions are 3 described further below, especially in the section entitled "Exemplary Classifying, a Forwarding, and Request.Routing", an initial description is presented here as an s example of interaction between network load balancing infrastructure functionality ~ ~ and hosts 108.
In a described implementation, forwarder 302 corresponds to, and is the s network endpoint for, the virtual IP (VIP) address (or addresses). Forwarder is a relatively low-level component that makes simplified and/or elementary policy to decisions, if any, when routing packets to a further or final destination.
Forwarder 302 consults a routing table to determine this destination. Classifier 304 populates the routing table based on one or more factors (e.g", host status information), i3 which are described further in other sections herein.
is Clients 102 and hosts 108 also correspond to indicated network addresses.
is Specifically, client 102(1) corresponds to address Cl, client 102(2) corresponds to ib address C2 ... client 102(m) corresponds to address Cm. Also, host 108(1) corresponds to address Hl, host 108(2) corresponds to address H2 ... host 108(n) corresponds to address Hn.
Five communication paths {I)-{5) are shown in FIG. 4. Communication 2o path (1) is between client 102(1) and forwarder 302, and communication path (5) Zi is between forwarder 302 and host 108(1). Communication paths (2)-(4) are zz between forwarder 302 and classifier 304. For simplicity in this example, the 23 connection associated with communication paths (1)-(5) is an HTTP TCP
za connection. Furthermore, load balancing in this Example relates to routing 2s 19 Atty Docket No. MS I~l520C75.PATAPP

1 incoming connections to the least loaded host 108, at least without any explicit z consideration of application-level load balancing.
Communication paths (1)-(5) indicate how forwarder 302 and classifier 304 4 load-balance a single HTTP TCP connection from client 102( 1 ). At ( 1 ), client s 102( 1 j initiates the TCP connection by sending a TCP SYN packet addressed to 6 the VIP address. The routing infrastructure of network 104 routes this packet to forwarder 302 via router/switch 202( 1 ), which is the "closest" router/switch 202 to s forwarder 302.
At (2), forwarder 302 consults a routing table, which may be internal to to forwarder 302 or otherwise accessible therefrom, in order to look up this 11 connection. This connection may be identified in the routing table by the TCP/IP
t2 4-tuple (i.e., source IP address, source TCP port, destination IP address, destination is TCP port). Because this is the first packet of the connection, there is no entry in la the routing table. Forwarder 302 therefore applies the "default route"
action, r s which is to send this packet to classifier 304.
At (3), classifier 304 consults its (e.g., consolidated) cache of host status n information for hosts 108(1), 108(2) ... 108(n). Classifier 304 concludes that host is 108(1) is available and the least loaded host 108 at this instant for this example.
is Classifier 304 also "plumbs" a route in the routing table consulted by forwarder zo 302 for this TCP connection. For example, classifier 304 adds a route entry or ~ instructs forwarder 302 to add a route entry to the routing table that maps the TCP
22 connection (e.g., identified by the TCP 4-tuple) to a specific destination host 108, a3 which is host 108(1) in this example. More particularly, the route entry specifies za the network address H 1 of host 108( 1 ).
2O AttyDockttNo. MSI-1520US.PATAPP

At (4), classifier 304 sends the TCP SYN packet back to forwarder 302:
z Alternatively, classifier 304 may forward this initial TCP S'YN packet to host 108(1) without using forwarder 302. Other options available to classifier 304 are .described further below.
s At (5), forwarder 302 can access a route entry for the connection s represented by the SYN packet, so it forwards the packet to host 108( 1 ) at address 7 Hl. Forwarder 302 also forwards all subsequent packets from client 102(1) for 8 this connection directly to host I 08( i ). In other words, forwarder 302 can avoid s further interaction with classifier 304 for this connection. One or a combination of mechanisms, which are described further below, may 'be used to delete the route i i entry when the connection ceases.
~z For communication path (5) in many protocol environments, forwarder 302 i3 cannot simply send the packets from client 102(1) as-is to host 108(1) at network I4 address H I because these packets are addressed to the VIP address, which is is hosted by forwarder 302 itself. Instead, forwarder 30:, may employ one or more is of the following exemplary options:
m 1. Forwarder 302 performs Network Address Translation l a (NAT) by (i) overwriting the source (client i 02 ( I )) iP address (C I ) and port number with the IP address and NAT generated port number zo of forwarder 302 and (ii) overwriting the destination IP address 21 (VIP) with the IP address (H 1 ) of the host ( 1 O8( 1 )).
zz 2. Forwarder 302 performs "Half NAT" by overwriting 23 the destination IP address (VIP) with the IP add.ress (H 1 ) of the host za (108(1)) so that the source (client 102(1)) IP address (C1) and port zs number are preserved.
2 Atty Docks No. MS f-1520US.PATAPP

3. Forwarder 302 "tunnels" the packets received from z client 102(1) from forwarder 302 to host 108(1). Specifically in this example, tunneling can be effectuated by encapsulating each packet within a new IP packet that is addressed to host 108(1). Network s load-balancing-aware software on host 108(1 j reconstructs the original packet as received at forwarder 302 from client 102(1).
This original packet is then indicated up on a virtual interface at host 108(1) (e.g., the VIP address corresponding to forwarder 302 is bound to this virtual interface at host 108(1)). Exemplary 1o implementations of such tunneling are described further below with n reference to tunneler 312, especially for ccmnection migration Iz scenarios and particularly in the section entitled "Exemplary is Connection Migrating with Optional Tunneling and/or Application-14 Level Load Balancing".
~s Although FIGS. 4-9B show two specific separated functions, namely is classifying and forwarding, it should be understood that ather functions, such as those of request router 306, session tracker 308, connection migrator 310, and ,s health and load handier 31~., rnay also be scaled out independently (e.g., factored out independently), as is described further below. Furthermore, it should be noted zo that one or more than two functions may be separated and scaled out zl independently at different times andlor simultaneously. Also, although TCP/IP is zz used for the sake of clarity in many examples in this and other sections, the z3 network load balancing principles described herein are applicable to other 24 transmission and/or communication protocols.
zs d Atty Docket No. MS I-1520US.PATAPP

In the exemplary manner of FIG 4, network load balancing functions (such z as those shown in FIG. 3) may be separated from each other for scalability purposes. They may also be separated and duplicated into various configurations a for . increased availability. Exemplary configurations for scalability and/or availability are described below with reference to FIGS. 6-9B after the method of FIG. 5 is described.
FIG. 5 is a flow diagram 500 that illustrates an exemplary method for s scaling out network load balancing infrastructure into different configurations.
Flow diagram 500 includes three blocks 502-506. Although the actions of flow to diagram 500 may be performed in other environments and with a variety of n software schemes, FIGS. I-4 and 6-9B are used in particular to illustrate certain iz aspects and examples of the method.
At block 502, network load balancing infrastn,~.eture is operated in a first is configuration. For example, each configuration may relate to one or more of a is selection, proportion, andlor interrelationship of different load balancing n6 functionalities; a number of and/or types) of different devices; an organization and/or layout of different components; a distribution and/or allocation of ~s resources; and so forth. At block 50~, the network ioad balancing infrastructure is i9 scaled out. For example, separated load balancing functionalities may be zo expanded and/or concomitantly contracted on an individual andlor independent z~ basis. At block 506, the scaled out network load balancing infrastructure is zz operated in a second configuration.
z3 As noted above, a monolithic network load bal.ancer may be scaled up by z4 increasing network load balancing functionality in its entirety by supplanting zs previous network load balancing hardware with more-powerful network load Atty Docket No. MSI-152JUS.'ATAPP

balancing hardware. In contradistinction, scaling out network load balancing z infrastructure can enable network load balancing (sub-)functions to be scaled out individually and/or independently. It can also enable network load balancing a functions to be scaled out together or individually between and among different numbers of devices. Device, component, and resource-oriented scaling out examples are provided below.
FIG. 6 illustrates a first exemplary network load balancing infrastructure s configuration from a device perspective. In this first desvice-oriented network load balancing infrastructure configuration, three devices 602(1), 602(2), and 602(3) 1o are illustrated. However, one, two, or more than three devices 602 may a alternatively be employed.
i2 As illustrated, a forwarder 302( 1 ), a classifier 304( 1 ), and a host 108( 1 ) are 13 resident at and executing on device 602(1). A forwarder 302(2), a classifier 14 304(2), and a host 108(2) are resident at and executing; on device 602(2).
Also, a 1s forwarder 302(3), a classifier 304(3), and a host 108(3) are resident at and 6 executing on device 602(3). Thus, in this first device-oriented network load balancing infrastructure configuration, a respective fo~.-warder 302, classifier 304, la and host 108 are sharing the resources of each respective device 602.
In operation, forwarders 302 are the network endpoints for the SIP
zo address(es). Any classifier 304 may plumb a route for a connection to any host zl 108, depending on host status information. For example, classifier 304(2) may 22 plumb a route for a new incoming connection to host 1 X08(3). In accordance with a z3 new route entry for this connection, forwarder 302(2) forwards subsequent packets 2a to host 108(3).

24 Atty Docket No. MSl-1520US.PATAPP

In one alternative device-oriented network load balancing infrastructure configuration to which the illustrated first one may be scaled out, a fourth device 602(4) (not explicitly shown in FIG. 6) may be added that includes a forwarder 302(4), a classifier 304(4), and a host 108{4). If, on the other hand, sufficient classification functionality is already present with classifiers 304(1-3) but additional forwarding functionality can benefit the request handling of hosts 108, a fourth device 602(4) may be added that includes a forwarder 302(4) and optionally s a host 108(4). For this scaled-out configuration, another classifier 304(1, 2, or 3) may plumb routes for forwarder 302(4) to any of hosts 108(1, 2, or 3) and host io 108(4), if present.
" The first device-oriented exemplary network load balancing infrastructure ~ z configuration of FIG 6 may be especially appropriate for smaller hosting 13 situations in which separate devices for the network lead balancing infrastructure are not technically and/or economically warthwhile o~r viable. However, as the v; hosting duties expand to a greater number (and/or a greater demand on the same 6 number) of hosts 108 or if the network load on hosts 108 is significant, the first device-oriented exemplary network load balancing infrastructure configuration 18 may be scaled out to accommodate this expansion, as represented by a second m device-oriented exemplary network load balancing infrastructure configuration of zo FIG 7.
z~ FIG 7 illustrates a second exemplary network Load balancing infrastructure zz configuration from a device perspective. In this second device-oriented network z3 load balancing infrastructure configuration, three devices 602( 1 ), 602(2), and za 602(3) are also illustrated. A-gain, one, two, or more than three devices 602 may zs alternatively be employed.
2 S Atty Docktt No. MS 1-I 520U5. PATAPP

As illustrated, forwarder 302( 1 ) and classifier 304( 1 ) are resident at and z executing on device 602(1). Forwarder 302(2) and classifier 304{2) are resident at 3 and executing on device 602(2): Also, forwarder 302(3) and classifier 304(3) are 4 resident,at and executing on device 602(3). Thus, in this second device-oriented s network load balancing infrastructure configuration, each respective forwarder 6 302 and classifier 304 are not sharing the resources of each respective device 602 with a host 108. Furthermore, the network load balancing infrastructure may be s servicing any number of hosts 108.
In operation, forwarders 302 are again the network endpoints for the VIP
to address(es). Also, any classifier 304 may plumb a route for a connection to any 1 host 108, depending on host status information. For example, classifier 304(3) lz may plumb a route for a new incoming connection to host 108(2). In accordance 13 with a new route entry for this connection, forwarder 302(3) forwards subsequent 4 packets to host 108(2).
~s Hence, network load balancing infrastructure as realized in software, for ~s example, may be scaled out by moving the network load balancing infrastructure m (or part thereof) from devices that are shared with hosts 108 to devices that are not Is shared with hosts 108. Also, as alluded to above for FIG. 6, another device 602(4) i9 may be added to the network load balancing infrastructure to provide additional zo forwarding functionality, additional classifying functionality, additional zt functionality of both types, and so forth.
zz FIGS. 8A and 8B illustrate first and second exemplary network load z3 balancing infrastructure configurations from a component perspective. As za illustrated, first component-oriented exemplary network Load balancing zs I infrastructure configuration 800 includes four components. Second component-Atty Docket No. MS i-t 520US. PATAPP

oriented exemplary network load balancing infrastt~ucture configuration 850 s includes six components. An alternative second configuration 850 includes a seventh component as indicated by the dashed-line block, which is described further below.
s Specifically, first component-oriented exemplary network load balancing infrastructure configuration 800 (or first configuration 800) includes (i) two forwarders 302(1) and 302(2) and (ii) two classifiers 304(1) and 304(2).
Second s exemplary component-oriented network load balancing infrastructure configuration 850 (or second configuration 850) includes (i) four forwarders 302(1), 302(2), 302(3), and 302(4) and (ii) two classifiers 304(1) and 304(2).
I i Thus, first configuration 800 is scaled out to second configuration 850 by adding iz two components, which are forwarding components in this example.
In a described implementation, each respective network-load-balancing-i4 related functional component corresponds to a respective device (not explicitly ~s shown in FIG. 8A or 8B); however, each component may alternatively correspond 16 to part of a device or more than one device. For example, forwarders 302{1) and m 302(2) may be distributed across three devices. Or forwarder 302(1) and classifier is 304(1) may correspond to a first device, and forwarder 302(2) and classifier 304{2) may correspond to a second device.
zo Two network-load-balancing-related functional components are added to z~ scale out first configuration 800 to second configuration 850. However, one zz component (or more than two) may alternatively be added to scale out the network z3 load balancing infrastructure. Furthermore, two or more different types of za functional components may be scaled out "simultaneously". For example, as zs illustrated by the dashed-line block, another classifying component (e.g., classifier 2 7 Any Docket No. MS I-1520US.PATAPP

304(3)) may also be added when scaling out first configuration 800 to second z configuration 850.
Moreover, scaling by two or more different types of functional components may be performed in similar (e.g., equivalent) or dissimilar proportions to each s other. As illustrated, adding forwarder components 302(3) and 302(4) while not adding any classifier component 304 or while adding a single classifier component 304(3) represent a scaling out at dissimilar proportions. However, two classifier components 304(3) and 304(4) (the latter of which is not explicitly illustrated in FIG 88) may be added while the two forwarder components 302(3) and 302(4) to are added for a scaling out at similar proportions. R'.egardless, each individual network-load-balancing-related functional component may consume a different 12 amount of the available network load balancing infrastructure resources, as is described with reference to FIGS. 9A and 9B.
FIGS. 9A and 9B illustrate first and second exemplary network load balancing infrastructure configurations from a resource perspective. First l6 resource-oriented exemplary network Load balancing infrastructure configuration 900 (or first configuration 900) includes a first resource distribution or allocation i8 for a load balancing unit i06. Second resource=oriented exemplary network load i9 balancing infrastructure configuration 950 (or second configuration 950) includes zo a second resource distribution for load balancing unit 106.
zl As illustrated, first configuration 900 includes a 70%-30% resource zz distribution, and second configuration 950 includes a 40%-fi0% resource 23 distribution. Such resources may include total device resources (e.g., number of z4 devices), processing resources (e.g., number of processor cycles), memory zs resources (e.g., portion of cache, main memory, etc.), network bandwidth and/or 2 ~ Atty Dockct tlo, MSt-1520US.PATAPP

interface resources {e.g., bits per second andlor physical network interface cards z {NICs)), and so forth.
Specifically for first configuration 900, forwarder 302 consumes 70% of a the resources of load balancing unit 106 while classifier 304 consumes 30%
of s these resources. After reallocation during a scaling out procedure to produce second configuration 950, forwarder 302 consumes 40% of the resources of load balancing unit 106 while classifier 304 consumes 60% of these resources.
s In an exemplary situation, first configuration 900 might facilitate better network load balancing performance when fewer, longer transactions are being handled by the associated hosts (not shown in FIGS. 9A and 9B) because n classification functionality is utilized upon initial communication for a connection iz and forwarding functionality is utilized thereafter. Second configuration 950, on 13 the other hand, might facilitate better network load balancing performance when is more, shorter transactions are being handled by the associated hosts because the ~s classification functionality is utilized for a greater percentage of the total number 16 of packets funneled through the network load balancing infrastructure. In this situation, if request routing functionality is also being employed, then request is router(s) 306 are also allocated a percentage of the total computing resources. The 19 resource distribution among the three functionalitie;s may be adjusted while zo handling connections (e.g., adjusted "on the fly") depending on current resource zl consumption andlor deficits.
zz As indicated above with reference to FIGS. 2 and 3, each load balancing z3 unit 106 may correspond to all or a part of a total network load balancing za infrastructure 106. For any given physically, logically, arbitrarily, etc.
defined or zs stipulated load balancing unit 106, the resources thereof may be re-allocated 2 Atty Dockn No. MSi-1520JS.PATAPP

j during a scale out procedure. More specifically, a resource distribution 2 between/among different network-load-balancing-related separated functions of a 3 load balancing unit 106 may be altered in a scale out procedure.
Furthermore, a more than two different functions, as well as other network-load-balancing-related s functions that are not specifically illustrated in FIGS. 9A and 9B, may be allocated 6 differing resource percentages.
The percentage of total system resources allocated to all load balancing s functions may also be altered in a scale out procedure. As a general processing g power example, the percentage of total processing power that is devoted to load o balancing may be gradually increased as the amount of traffic that needs to be load i 1 balanced increases.
i2 Network load balancing software may optionally perform monitoring to ,3 analyze and determine whether resources should be reallocated. For example, the is network load balancing software may monitor the processor utilization of different ~s network-load-balancing-related functions. The actual reallocation may also is optionally be performed automatically by the network load balancing software in 17 an offline or online mode.
~ s It should be understood that a scaling out capability of network load 19 balancing infrastructure (e.g., as realized at Least partially in software) as described ao herein may relate to different installations and not necessarily a change to a single 21 installation. In a resource-oriented example, network load balancing infrastructure z2 as described herein may be configured in accordance with one resource z3 distribution in one installation environment and may be configured in accordance Za with another different resource distribution in another installation environment as having different operational parameters. Additionally, the capabilities, features, 30 Atty Docket No. MSI-1520US.PATAPP

options, etc. described above with regard to scaling out are also applicable for z "scaling in". In other words, resources devoted to network load balancing s infrastructure (or sub-functions thereof] may also be reduced.
a Exemplary Health and Load Handling s This section describes how host status information, such as health and/or load information, may be collected for and utilized in network load balancing.
This section primarily references FIGS. 10-18 and illuminates health and load s functionality such as that provided by health and load handler 314 (of FIG.
3). As described above with reference to FIG. 3, each ho;>t 108 hosts one or more io applications 3I6. Health and load handler 3I4 utilizes health and/or Ioad i I information that relates to applications 316 and/or hosts 108 for certain described iz implementations of network load balancing.
13 FIG 10 illustrates an exemplary network load balancing approach that involves host status information (HSI) 1006. Each host 108(1), 108(2) ...
108(n) is includes one or more applications 316( 1 ), 316(2) . . . 316(n), respectively. These hosts 108 generally and these applications 316 specijE°zcally may change statuses from time to time.
is For example, hosts 108 and applications 316 may be accepting new i9 connections or not accepting new connections. Also, they may be quickly zo handling client requests or slowly handling client requests. Furthermore, they may z~ have many resources in reserve or few unused resources. All or any part of such zz data, or other data, may comprise host status information 1006. Generally, host 23 status information 1006 provides an indication of the status of some aspect of z4 hosts 108 and/or applications 316 that are running thereon.
31 Any Docket No. MSI-t520US.PATAPP

In a described implementation, each host 108(1)" 108(2) ... 108(n) includes z a host status information (HSI) determiner 1002(1), 1002(2) ... and 1002(n), 3 respectively. Each host 108(1), 108(2) ... 108(n) also includes a host status a information . (HSI) disseminator 1004(1), 1004(2) . .. and 1004(n), respectively.
s Each host status information determiner 1002 and/or host status information 6 disseminator 1004 may be part of load balancing infrastructure (LBI) 106.
Each host status information determiner 10()2 determines host status s information 1006 for its respective host 108 andlor applications 316 that are 9 running thereon. Exemplary techniques for determining such host status to information 1006 are described below with reference to FIGS. 12-14, and 1 i particularly FIG 13A. Each host status information disseminator 1004 Iz disseminates host status information 1006 for its respective host 108 and/or 3 applications 316 to load balancing infrastructure 106 (e.g., those portions) of load la balancing infrastructure 106 that are not located on hosts 108). Exemplary is techniques for disseminating such host status information 1006 are described I6 below with reference to FIGS. 12-17, and particularly FIGS. 13B and 1S-17.
Specifically, each host status information disseminator 1004 disseminates is host status information 1006 (directly or indirectly) to each load balancing unit r9 (LBU) 106 of load balancing infrastructure 106 that includes at least one health zo and load handler 314 andlor classif er 304. Load balancing infrastructure zi refers to host status information 1006 when implementing network load balancing.
zz For example, as indicated by logic 1008, load balancing infrastructure 106 is 2s capable of making load balancing decisions responsive to host status information za 1006.
32 Atty Dockct No. MS (-f 520US.PA'fAPP
v;.,., a .,.rv .v ., s , n . ,. ...~f.nN~uc' .a .. awn ._. ,..-._.__._ ~,~
".,",",._ >,v,~ ,~

In operation at ( 1 ), host status information determiners 1002 determine host z status information 1006 for respective hosts 108 and/or applications 316. At ( 1 ) 3 and (2), host status information disseminators 1004 disseminate host status a information 1006 from hosts 108 to load balancing infrastructure 106. For s example, host status information 1006 may be disseminated to individual load 6 balancing units 106. At (3), logic 1008 makes network Ioad balancing decisions responsive to host status information 1006. At (4), connections are forwarded to s targeted hosts 108 based on these network load balancing decisions.
FIG. 11 is a flow diagram 1100 that illustrates. an exemplary method for to network load balancing that involves host status information. Flow diagram a includes three blocks 1102-1106. Although the actions of flow diagram 1100 may iz be performed in other environments and with a variety of software schemes, FIGS.
i3 1-3 and 10 are used in particular to illustrate certain aspects and examples of the is method.
is At block 1102, host status information is sent from hosts to load balancing i6 units. For example, host status information 1006 may be sent from hosts I08 to load balancing units 106. At block 1104, the host status information is received la from the hosts at the load balancing units. For example, load balancing units 106 i9 may receive host status information 1006 from hosts 108. At block 1106, load zo balancing decisions are made responsive to the received host status information.
z1 For example, logic 1008 at load balancing units I06 may make decisions for zz network load balancing responsive to host status information 1006.
z3 Thus in FIG 10, load balancing infrastructure 106 collects host status z4 information 1006 from hosts 108 (and/or applications 316 thereof) and load zs balances incoming requests that are directed to hosts 108 responsive to host status 3 3 Atty Docks No. M$ i-t 520US.PATAPP

information 1006. As described further below with reference to FIGS. 12-18, this z host status information 1006 may be application-specific. As also described 3 further below, examples of host status information 1006 include health and/or load a information.
s FIG. I2 illustrates an exemplary network load balancing approach that 6 involves health andlor load information (HLI) 1206. Hosts 108(1), 108(2) ...
108(n) are coupled to load balancing units 106{1), I06(2) ... 106(u) via a s communication linkage 1210 such as a network.
As illustrated, hosts 108 communicate health and load information 1206 to o load balancing units 106 using communication linkage 1210. The bi-directional l, communication of health and load information 1206, as indicated by the double-iz pointed arrow, refers to a two-way communication from load balancing units ~3 to hosts 108 that provides certain completeness, coherency, correctness, ete. such la that hosts 108 andlor load balancing units 106 may fail independently of one ~s another. Such two-way communications from load balancing units 106 to hosts ~s 108 are described further below with particular reference to FIG 15.
m Health information reflects whether a given host and/or application is is capable of handling client requests. Load information reflects the number, 19 amount, and/or level of client requests that the given host and/or application is zo capable of handling at a particular moment. In other words, load can reflect zi directly and/or inversely an available number, amount, andlor level of total zz capacity of the given host and/or application. As noted above, implementations z3 described with reference to FIGS. 12-18 focus on health and/or load information;
z4 however, those implementations are also applicable to general status information zs for hosts (including the applications thereof).
34 Atty Docket No. MS I-1520US. PATAPP

In a described implementation, each host 108(1), 108(2) ... 108(n) includes z a respective health and load infrastructure (H&LI) component 1202(I), 1202(2) ...
1202(n). Each health and load infrastructure component 1202 may optionally be a a portion of load balancing infrastructure I06 that is resident at and executing on s each host 108. Health and load information 1206 may be realized in software.
When functioning, each health and load infrastruci;ure 1202( 1 ), 1202(2) . .
.
7 1202(n) creates and maintains a respective health and load (H&L) table 1204(1), 1204(2) ... 1204(n).
These health and load tables 1204 may include application-specific entries.
io Health and load information 1206 that is stored in health. and load tables 1204 may n be independent of load balancing infrastructure 106. For example, administrators, iz designers, etc. may specify criteria for health and load information 1206 at 13 configuration time. Additionally, entities external to a device that is or that has a m host I08 may contribute to determining health and Load information 1206 for is applications 3I6 on the device. An exemplary health and load table 1204 is described further below with reference to FIG. 13A.
n Each load balancing unit I06(1), 106(2) ... 106(u) includes a respective is consolidated health and load (H&L) cache 1208(1), I208(2) ... I208(u). Each i9 consolidated health and load cache 1208 includes the information from each health zo and load table 1204( 1 ), 1204(2) . . . 1204(n). Conseq~.zently, each load balancing z~ unit 106 is provided with quick (e.g., cached) access to health and load zz information 1206 for each host I08 for which load b<~Iancing units 106 are Load z3 balancing network traffic.
z4 In operation, health and load infrastructures 1202 push health and load zs information 1206 from health and load tables 1204 to consolidated health and load 3 5 Atty Docket Na. MS 1-1520US.PATAPP

t caches 1208. The mechanism to provide health and load information 1206 is z event driven such that changes to health and load tables 1204 are provided to consolidated health and load caches 1208 in a timely, scaleable manner.
a FIG. 13A is ~ an exemplary health and load table 1204 as illustrated in FIG.
s 12. In a described implementation, health and load table 1204 includes multiple entries 1302 that are each associated with a different application 316. Each entry 1302 may correspond to a row in health and load table 1204 that has three s columns. These columns correspond to application identifier (ID) 1302(A), application status characterization 1302(B), and load ba.lancer directive 1302(C).
to Because each entry 1302 is associated with a particular application 316, a n row is added as each application is spun up (e.g., by an administrator).
Likewise, lz a row is deleted/removed each time an application is closed down.
Similarly, i3 individual fields in columns 1302(A), 1302(E~), and/or 1302(C) are la modified/updated when a value thereof changes. For example, when a status s characterization value changes for a given application 316, a value in a field of i6 application status characterization 1302(B) for entry 1_402 of the given application ~ 316 is updated.
1$ The additions and deletions of entries 1302 for applications 316 may be 9 effectuated with input from a control manager at the host 108. For example, a zo control manager portion of an operating system knows when an application 316 is zi started and stopped because it is actively involved in the starting and stopping of zz applications 316. Hence, a control manager may identify that it has, at least in 23 part, started an application 316; and the control manager may establish that it has, za at least in part, stopped the application 316. Health and load infrastructure 1202 zs may therefore be informed of the starting and stopping of applications 316 by the 3 Any Dockct No. M51-t 520US.PATAPP

1 control manager. Hence, no such explicit communication from applications 316 z has to be provided to health and load infrastructure 1202. An example of a control 3 manager is the Service Control Manager (SCM) of the VJindows~ Operating a : System from Microsoft~ Corporation.
Application identifier 1302(A) includes information that is used to uniquely 6 identify the application 316 to which entry 1302 is associated. Application 7 identifier 1302(A) may include one or more of the failowing for the associated s application 316: the virtual IP address and port, the physical IP address and port, 9 the protocol used, and any protocol-specif c information. The protocol may be to HTTP, IPsec, SOAP, and so forth. The protocol-specific information may be a t i URL pattern or string to further delineate the application associated with entry iz 1302. Thus, application identifier 1302(A) more particularly refers to a specific 3 application endpoint on a particular host 108.
is Other application identifiers may alternatively be employed. For example, is to reduce communication bandwidth, application identifier 1302(A) may be a ~s bit number that maps to the above exemplary information at health and load ~ infrastructure 1202 and at Load balancing units 106. Moreover, any of the fields in is entry 1302 may actually contain a globaily unique identifier (GUID) that is used 19 as a key to look up the true information for the field.
zo Application status characterization 1302(B) includes information that zr reflects the status of the application 316 to which entry 1302 is associated.
zz Application status characterization 1302(B) includes the following for the z3 associated application 316: application health, application load, and application za capacity. Application health is a quasi-Boolean value that indicates whether an zs application is functioning. Application health can be healthy, failing, or unknown.
J Atty Docks No. MSI-1520US.PATAPP

1 Application health is a relatively-instantaneous value and is communicated with z relatively low latency (e.g., of approximately a second or a few seconds) to load 3 balancing units 106 when the application health value changes.
a. Application load is a value that indicates how occupied or busy a given s application is and thus, directly or inversely, how much additional Load the given s application can handle. Application Ioad is a relatively slowly-changing or averaged value that can be smoothed with a hysteresis-inducing mechanism, if s desired, to eliminate transient spikes of increased or decreased load. It is 9 communicated relatively infrequently to Toad ba~Iancing units 106 (e.g., to approximately one to four times a minute). The value of application load is given 11 meaning with regard to application capacity.
12 Application capacity is a value that indicates the maximum capacity of the 13 application. It is selected in a generic manner to be meaningful for a given context ,~ but still sufficiently flexible for other contexts. Application capacity is a unit-less, is bounded number (e.g., 0-99) that is determinable at configuration time. It may be 16 based on processing power, memory size/speed, network access, some m combination thereof, and so forth. Application capacity expresses relative $ capacities between and among other applications of the same type in a set of hosts 29 108(1, 2 ... n).
zo Thus, relative to application capacity, application load gains meaning.
zi Application load for a given application is a percentage of application capacity for zz the given application. Alternatively, application Load can be expressed as a unit-z3 less number from which the percentage can be ascertained in conjunction with the za value of application capacity.
Any Docket No. MSt-1520US.PATAPP

, Load balancer directive 1302(C) includes information that reflects the z desired andlor expected state of the directive established by health and load 3 infrastructure 1202 for load balancing units 106 with respect to an application 316 a to which entry 1302 is associated. Load balancer directive 1302(C) includes the s following for the associated application 316: target load balancing state and 6 current load balancing state.
The target load balancing state reflects the state of the directive to load s balancing units 106 as desired by health and load infrastructure 1202. The current 9 load balancing state reflects what health and load infrastructure 1202 understands ,o the current state of the directive to load balancing units 106 to be as recorded at " load balancing units 106. The current load balancing state thus reflects the load ,z balancing directive that health and load infrastructure 1202 expects Load balancing ,3 units 106 to be currently operating under as dictated using a communication ,a protocol. Such an exemplary communication protocol is described further below ,s with reference to FIG 15. The interaction and relationship between the target load 16 balancing state and the current load balancing state :is also further clarified with o the description of FIG 15.
,s The target load balancing state and the current load balancing state may ,9 each take a value of active, inactive, or draining. An active directive indicates that zo new requests/connections are welcome and may be targeted at the application that z, is associated with entry 1302. An inactive directive indicates that no additional zz packets should be forwarded to the associated application. A draining directive z3 indicates that no packets for new requests/connections should be sent to the za associated application but that packets for existing requests/connections should zs continue to be forwarded to the associated application.
3 Atty Docket No. MS I-t 520US.PATAPP

In a described implementation, the definitive version of respective health z and load information 1206 is stored at health and load tables 1204 that are located at each respective host 108 of multiple hosts 108. Wil:h this implementation, if a host 108 crashes, the health and load information 1206 that is lost pertains to those s applications 316 that also crashed. A measure of high availability is therefore gained automatically without duplicating data. However, the definitive version of health and load information 1206 may alternatively be stored elsewhere. Other such storage options include load balancing units 106 'themselves, a host 108 that (as its sole task or along with hosting duties) stores and maintains health and load to information 1206 for multiple other (including all other) hosts 108, another separate and/or external device, and so forth.
~z If the definitive version of health and load information 1206 is stored and 13 maintained elsewhere besides being distributed across. hosts I08(l, 2 ...n), such ~ health and load information 1206 may be stored redundantly (e.g., also stored in a Is duplicative device, backed-up, etc.) for high-availability purposes.
Exemplary 6 proxy scenarios for storing health and load information 1206 are described below with reference to FIGS. 17A and 178. FIG I 7A is directed to a proxy scenario for is health and load tables 1204, and FIG. 17B is directed to a proxy scenario for 9 consolidated health and load caches 1208.
zo FIG. 13B is an exemplary consolidated health and load cache 1208 as zt illustrated in FIG. I2. In a described implementation, each consolidated health and zz load cache 1208 in each load balancing unit 106 ir~cludea at Least part of the z3 information stored in each health and load table 1204 for each health and load za infrastructure 1202 at each host 108. The cached health and load information may zs be organized in any manner in consolidated health and load cache 1208.
4O Atty Docket No. MSI-IS20US.PATAPP

As illustrated, consolidated health and load cache 1208 includes a cache for z each host 108(1), 108(2) ... 108(n) that replicates part or all of the information in 3 the health and load table 1204 of each respective host 108(1, 2 ... n).
Specifically, a consolidated health and load cache 1208 includes a cache for host #1 1304(1), a s cache for host #2 1304(2) ... a cache for host #n 1304(n). Thus, the illustrated 6 consolidated health and Ioad cache 1208 is organized at a broad Ievel by host 108(1, 2 ... n), with each individual cache 1304 including application-specific 8 entries for the corresponding respective host 108(1, 2 ... n).
Alternatively, 9 consolidated health and load cache 1208 may be organized at a broad level by type to of application 316, with individual blocks that are directed to a specific application ~ type further divided by host 108(1, 2 ... n). Other data structure formats may also tz be employed.
i3 FIG 14 is a flow diagram that illustrates an exemplary method for network is load balancing that involves health and load information. Flow diagram 1400 ~s includes eight blocks 1402-1416. Although the actions of flow diagram 1400 may i6 be performed in other environments and with a variety of software schemes, FIGS.
n I-3 and 12-13B are used in particular to ilhastrate certain aspects and examples of 18 the method. For example, the actions of two blocks 1402-1404 are performed by a 19 host 108, and the actions of six blocks 1406-1416 are performed by a load zo balancing unit 106.
z~ At block 1402, health and load information at a host is determined. For zz example, health and Load information 1206 for applications 316(2) may be z3 ascertained by health and load infrastructure 1202(2) and stored in health and load za table 1204(2) at host 108(2). At block 1404, the determined health and load zs information is disseminated to load balancing units. For example, health and Ioad 41 Atty Docket No. MS!-1520US.PATAPP

infrastructure 1202(2) may send health and Load information 1206 for applications z 316(2) to load balancing units 106(1, 2 ... u). As indicated by arrow 1418, the 3 actions of blocks 1402 and 1404 are repeated so that (application) health and load 4 may be continually monitored and updated as changes occur.
s At block 1406, health and load information is received from hosts. For 6 example, load balancing unit 106(1) may receive health and load information from multiple hosts 108(1, 2 ... n), which includes health and load information s 1206 for applications 316(2) of host 108(2). At block 1408, the received health 9 and load information is cached. For example, load balancing unit 106( 1 ) may to store health and load information 1206 from hosts 108(:1, 2 ... n) into consolidated i i health and load cache 1208( 1 ). With reference to the FIG 13B
implementation of iz a consolidated health and load cache 1208(1), health and load information i3 for applications 316(2) from host 108(2) may be stored in cache for host #2 is 1304(2). As indicated by arrow 1420, the actions of blocks 1406 and 1408 are is repeated so that (application) health and load information may be continually ib received and updated as changes occur.
m As indicated by dashed arrow 1422, load balancing units 106 are also s handling communications from clients 102 while handling (application) health and 19 load issues. At block 1410, a packet requesting a new connection is received. For zo example, Load balancing unit I06(I) may receive a TCP SYN packet from client zi 102(2) through network 104. At block 1412, the cached health and load zz information is consulted. For example, load balancing unit 106(1) may consult zs consolidated health and load cache 1208( 1 ). More particularly, load balancing unit za 106( 1 ) may consult entries that are associated with the application to which the zs TCP SYN packet is directed across caches for hosts #l, #2 ... #n 1304(1, 2 ... n).
42 Atty Docket No. MS 1-t SZOUS. PATAPP
"~'~"W"~' '_'~°'~" . -'°~'"° "'.."'"°""' ~'- -'."~'-°° - ~-... -.: s~.>-~-..-----__-».~.».~.,...~.~_,..,.
............__,..~.._._._~~.~.-._. ._._._ _.

At block 1414, a host is selected responsive to vhe cached health and load z information. For example, load balancing unit 106(1) may select host 108(2) having applications) 316(2) responsive to health and load information 1206 that is cached in consolidated health and load cache 1208(1). The selected application s 316 (and host 108) should be healthy and able to accept additional load (e.g., possibly the least loaded application among those applications that are of the application type to which the TCP SYN packet is directed).
s The consulting of the cached health and load information (at block 1412) and the host-selecting responsive to the cached health and load information (at to block 1414) may be performed prior to reception of a specific new-connection I1 requesting packet and/or using a hatched scheme. ALSO, the selecting may be in ,z accordance with any of many schemes. For example, a token based or a round I3 robin based scheme may be employed. With either scheme, the selection may la involve a weighting of relative loads among the application options. This i s consultation and selection, along with the token and round-robin based schemes, 6 are described further below with reference to FIG. 18 and in the section entitled m "Exemplary Classifying, Forwarding, and Request Routing", especially with is regard to classifying functionality.
19 After the target host is selected at block 1.414, the new-connection-zo requesting packet may be sent thereto. At block 14115, the packet received from zi the client is forwarded to the selected host. For example, the TCP SYN
packet is zz forwarded from Load balancing unit 106(1) to selected host 108(2). The z3 forwarding of this initial packet may be effectuated directly by a classifier 304 or za by a forwarder 302, as is also described further below ire the section entitled zs "Exemplary Classifying, Forwarding, and Request Routing".
Atty Docket No. MS I-1520US.PATAPP

For a described implementation, health and load infrastructure 1202 is z resident at and distributed across multiple hosts 108 as well as being located at 3 load balancing units 106 (as represented by health and load handler 314).
Health a and load infrastructure 1202 has three responsibilities., First, it exposes listening s points) to attain application status updates for application status characterizations 6 1302(8) of health and load tables 1204. Second, it synthesizes the application 7 status information to determine what Load balancing units 106 should do, which is s embodied in load balancer directive 1302(C). Third, health and load infrastructure 9 1202 communicates this directive from hosts 108 to load balancing units 106.
to The directive content of load balancer directive 1302(C) is effectively a 1, digested version of the information for application status characterizations i2 1302(8). However, load balancing units 106 may also receive the raw information a of application status characterizations 1302(8) as well as this processed directive.
i4 The communication of the content of these and other fields of health and load ~s tables 1204 is accomplished using a message protocol that is described below with 6 reference to FIG 15.
m FIG. 15 illustrates an exemplary message protocol 1500 for the health and is Ioad information-related communications that are illustrated in FIG. 12 between 9 hosts 108 and load balancing units 106. Generally, am event-driven mechanism is zo used to push changes to health and load tables 1204 from hosts I08 to load 21 balancing units 106. In other words, for a described implementation, information za is transmitted from hosts 108 to Load balancing units 106 when health and load 23 tables 1204 are updated. This avoids periodically sending a snapshot of all of each 2a health and load table 1204, which reduces network bandwidth consumption by zs health and load infrastructure 1202.
44 Atty Docket No. MSt-1520US.PATAPP
e_...,..". ,. ... ,.. m...__ " . _...._.._ ..-~.. ~.", ~u.,".~"~,. "~ ~,~,.
..~, ny4.~.,~.. ~ _...,a~a ,..... , ....... ..........

Message protocol 1 S00 may be implemented using any available message z transport mechanism. Such mechanisms include reliable multicast transmission, 3 point-to-point transmission (e.g., user datagram protocol (UDP)), and so forth. As a illustrated, message protocol 1500 includes seven message types 1 S02-I S
14: a s heartbeat message 1502, a goodbye message 1504, a row change message 1506, a 6 get table snapshot message I 508, a send table snapshot message I S I0, a postulate 7 table state message 1 S 12, and a postulate wrong message 1 S 14.
s It should be understood that, with the exception of arrows 1 S 16 and 1 S I
8, s no temporal relationship between or among the difff;rent messages types 1 l0 1 S 14 is implied by the illustration. For example, a row change message 1 S06 does I, not typically follow a goodbye message 1504.
1z Heartbeat message 1502 indicates that a particular host 108 is functioning ~3 and provides some error checking for the content of a corresponding particular ~a health and load table 1204 with respect to a corresponding particular cache for the ~s particular host 1304 in consolidated health and load cache 1208. Each health and is load infrastructure 1202 at each host 108 sends a heartbeat message directly or m indirectly to each consolidated health and load cache 1208 at each load balancing 18 unit 106.
19 Heartbeat messages I S02 address the aging-out problem for data in zo consolidated health and load caches 1208 that arises, in part, because a snapshot of zi the entirety of each health and load table 1204 is not periodically transmitted to zz each load balancing unit 106. A transmission scheme for heartbeat messages 23 1S described further below with reference to FIG 16.
za Heartbeat messages 1502 include an identifier for the host, error checking zs data, and optionally a DNS name. The identifier of the host may be a unique (e.g., 4S 4ny Docker No. MSi-1520US.PATAPP
,e.,..~.....<_...,...~..~... __~~.v...~..,>-~...,.~.,~...n_..~......_ ...,-._.~...~".~,~~~.~~.~.~~"u~._"".,...~...",..."v~._..__._._.__.....
..._..~._".".."~,..,_,",.._"_._._.__._.___.. , ..... ____...._.._,._.-"._.__...,._ 1 32-bit) number that is selected at configuration time. The error checking data may z be a checksum, a state-change sequence number, a generation number, a CRC
3 value, etc. that enables a receiving load balancing unit 106 to validate that the a contents of its consolidated health and load cache 1208 comports with the contents s of the health and load table 1204 of the transmitting host 108. If a generation 6 number approach is employed, then multiple generation IDs can be used with each generation ID assigned to a "chunk" of applications. Tvlessages can then refer to a s chunk number or a chunk number/generation ID pair, depending on the context.
The error checking data may be a single value for the health and load table ,0 1204 overall, or it may be multiple values determined on a per-entry 1302 basis.
1 The DNS name may optionally be sent (e.g., every "x" heartbeats) to verify or ~z update the current correct network address for the host.
l3 Goodbye message 1504 is sent from a particular host 108 to load balancing 1~ units 106 to indicate that the particular host 108 is planning to shutdown.
1s Goodbye message 1504 includes a host identifier that may be indexed/mapped to a ib network address for the particular host 108. Goodbye message 1504 is used for i~ clean, intentional shutdowns by hosts 108 to precipitate a "fast clear".
However, if 1g a goodbye message 1504 is lost, caches eventually age out the particular host's 19 108 entries because heartbeat messages 1502 are no longer sent.
zo Row change message 1506 is sent from a particular host 108 to load zl balancing units 106 to indicate that the health and/or load for a given application zz 316 of the particular host 108 has changed. Row change message 1506 includes a z3 host identifier, an application identifier, an operation, and data for the operation.
za Exemplaxy host identifiers are described above with regard to heartbeat messages zs 1502 and goodbye messages 1504. Exemplary application identifiers are 46 accyno~xn no. Msi-~szous.Pnrv~P

i described above with regard to application identifier 13020) of an application-z associated entry 1302 of health and load tables 1204.
The row change operation may be add, delete, or update. In other words, a the data for the operation may be added to (for an add operation) or a replacement s for (for an update operation) information already present at consolidated health 6 and load caches 1208 at load balancing units 106. For a delete operation, no data need be provided. Message protocol 1500 is defined such that multiple operations s may be stipulated to be performed for a single row change message 1506.
Hence 9 for a particular host identifier, sets of an application identifier, operation, and ~o operation data may be repeated for multiple applications 3I6 of the host 108 that is 1 i identified by the particular host identifier.
rz Get table snapshot message 1508 is sent from a particular load balancing 13 unit 106 for a particular consolidated health and load cache 1208 to an individual la host 108 or hosts 108. This get table snapshot message 1508 requests that health is and load infrastructure 1202 at hosts 108 provide a. snapshot of the respective i6 health and load table 1204 for the respective host 108. This message includes an m identification of the requesting load balancing unit 106 and may be used by a load 1$ balancing unit I06 (i) after it has failed and then recovered; (ii) after a host 108 19 fails, recovers, and begins sending heartbeat messages 1502 again; (iii) if a row zo~ change message 1506 is sent to load balancing unit 106, but the message gets zi dropped, so its consolidated health and load cache I208 is out of sync with the zz respective health and load table 1204 for the respective host 108; and (iv) so forth.
z3 For the third (iii) situation, the lack of synchronization between za consolidated health and load cache 1208 and the respective health and load table zs 1204 for the respective host 108 is discovered by a subsequent heartbeat message 7 Atty Docker No. MSI-1520US.f'ATP.PP

1 1502 from the respective host 108 because the "error checking" will indicate that z consolidated health and load cache 1208 is out of date. Load balancing unit 3 can then send a get table snapshot message 1508 so that it can update its a consolidated health and load cache 1208. Thus, for any o.f the three (i, ii, iii) exemplary situations, load balancing unit 106 subsequently reconstitutes its 6 consolidated health and load cache 1208 using get table snapshot 1508. Get table snapshot 1508 may be sent repeatedly to each host 108 in a point-to-point manner s or may be sent one time to many hosts 108 in a multicast manner.
Send table snapshot message 1510 is sent from an individual host 108 to a o particular load balancing unit 106 after the individual host I08 has received a get i 1 table snapshot message 1508 from the particular load balancing unit 106 as 2 indicated by arrow 1516. The contents of a send table snapshot message 1510 is 13 prepared by health and load infrastructure 1202 and includes all or at least i4 multiple rows of the health and load table 1204 of the individual host 108 so that ~ s the particular load balancing unit 106 may rebuild its consolidated health and load ~6 cache 1208. Send table snapshot message 1510 may be a separately designed l~ message, or it may be equivalent to a sequence of add operations in a row change is message 1506.
i9 Postulate table state message I S I 2 and postulate wrong message 1514 are zo related to the target load balancing state and the current load balancing state of z~ load balances directive 1302(C) of an entry 1302 in a health and load table 1204.
zz The target load balancing state is the directive that health and load infrastructure z3 1202 desires load balancing units 106 to be operating under. The current load z4 balancing state is the directive that health and load infrastructure 1202 expects or zs 4 Atty Docket No. MS!-t520US.PATAPP

believes that load balancing units 106 are currently operating under.
Generally, z the two load balancing states are identical.
However, the target load balancing state may differ from the current load a balancing state during a transitional period for a state directive change.
For example, the target load balancing state and the current load balancing state are 6 both initially set to active. A problem with host 108 and/or an application thereof is detected and the target load balancing state directive is switched to s draining. This draining directive is communicated to load balancing units 9 using a row change message 1506.
to There is a delay before this directive change is noted in a1I consolidated I i health and load caches 1208 of all load balancing units 106. During this lz transitional period, the target load balancing state is draining while the current load i3 balancing state is still active at health and load table 1204 of host 108.
Before is changing the current load balancing state to draining, health and load is infrastructure 1202 wants to ensure that consolidated health and Load caches 1208 r 6 have actually been updated to the new directive state of draining.
To verify that consolidated health and load caches 1208 of load balancing I8 units 106 have been updated to a new state directive, health and load infrastructure 19 1202 sends a postulate table state message 1512 to load balancing units 106.
zo Postulate table state message 1512 is sent some time (e.g., a predetermined delay zl period) after transmission of a row change message 1506 indicating that the state zz directive is to be changed. The postulate table state message 1512, in this z3 example, indicates that the table state should be draining. As indicated by the z4 dashed arrow 1518, a load balancing unit 106 responds to this postulate table state zs 4 Atty Docket No. MSI-1520US.PATAPP
...m~;" , ~.~a,,~ ~~~"~,,",~" .",x"",, .,"", .;~w,"M,~ . ~~,, . . z, k"~; ~a~.
, ~ y ..," ,_ .,...".._. _._ ._...,.. .. ....
..__._.....",".~.....",.w._"......._ .. ..... _...... .. .....___.__._.._~.-..m ....-, 1 message 1 S 12 if its consolidated health and load cache 1208 differs from the z postulated state directive.
If the directive in consolidated health and load cache 1208 does differ from a the postulated state directive, then that Load balancing unit 106 sends a postulate s wrong message 1 S 14 to the health and load infrastructure 1202 of the host 108 that 6 issued the postulate table state message 1 S 12. This health and load infrastructure 1202 then periodically resends postulate table state message 1 S I2 until no further s postulate wrong messages I S 14 are received from consolidated health and load s caches 1208. At that point, health and Load infrastructure 1202 sends a row change to message 1 S06 with the new current load balancing state. In this sense, 1 i consolidated health and load caches 1208 are the definitive determiners of the ,z current Load balancing state, and health and load infrastructure 1202 is the 13 definitive determiner of the target load balancing state.
~a FIG. 16 illustrates an exemplary message transmission scheme for the is communications that are illustrated in FIG. 12 between hosts 108 and load 6 balancing units 106. The exemplary message transmission scheme can reduce the ~ bandwidth consumed by heartbeat messages 1502 on communication linkage is 1210. The message transmission scheme of FIG 16 is particularly adapted to l9 heartbeat messages 1502, but it may also be utilized for other messages of ao message protocol 1500.
z~ A group of hosts 108(1), 108(2), 108(3) .., 108(11), and 108(12) are zz illustrated along with load balancing units 106( 1 ), 106(2) . . . 106(u).
Each line z3 represents membership linkage or inclusion among the group of hosts 108( 1, 2 .. .
za 12). The group of hosts 108( 1, 2 . . . 12) form a membership of nodes that work zs together to propagate heartbeat information to load balancing units 106.
Although SO Atty Docket No. MSI-IS20US.PATAPP
...... . . f. ..
F

twelve hosts are shown, more or fewer may be part of any given group of hosts.
z Also, a total set of hosts 108 that are being served by a Load balancing 3 infrastructure 106 may be divided into one, two, three, or more groups of hosts.
a In a described implementation, the membership of nodes for group of hosts s 108(1, 2 ... 12) elect a leader that is responsible for transmitting heartbeat 6 messages 1502 to load balancing units 106. Each (non-leading) host I08 in group 7 of hosts 108(1, 2 ... 12) sends its heartbeat messages 1502 to the elected Ieader.
s Host 108(4) is the elected leader in this example.
With the membership of nodes, heartbeat information for each host 108 in o group of hosts 108( 1, 2 ... 12) propagates to the group leader host 108(4).
Host > > 108(4) collects the heartbeat information and consolidates it into a consolidated ~z heartbeat message 1602. Consolidated heartbeat messages 1602(1), 1602(2) ...
13 1602(u) are then sent to respective load balancing units 106( 1 ), 106(2) .
. . 106(u).
is These consolidated heartbeat messages 1602 may optionally be compressed to i s further reduce bandwidth consumption.
i6 As another alternative, the leader host 108(4) may only forward changes in ~ group membership to consolidated health and load caches 1208. In other words, 2s in this mode, consolidated health and load caches 1208 deal primarily if not solely is with state changes to membership. It is the responsibility of the leader host 108(4) zo to ensure that the first hello is forwarded when a host 108 comes online and that a zi goodbye message 1504 gets sent when that host 108 goes offline.
Additionally, a zz host 108 can periodically specify that a heartbeat message 1502 is to be z3 "forwarded". This indicates to the leader host 108( 4) to send it to consolidated z4 health and load caches 1208 even though it does not represent a membership zs change.
1 ,~tty Docket No. MSi-1520US.PATAPP
.....~u w ,.-,..,,. «.,w,.:-c.. w,.s.,w ... _._..~.. . .,."
.a,~,~.vwurr~;sr~uwH.~sv:~swn.~r"Mme-...~-,....~,..~"",~,a,.a",~~,~r~,.-:,mea!=,nrz~.:. .,>n..;".,". .rte. .M,.,..,.,....~.__.... . _.

Heartbeat messages I 502 (including consolidated heartbeat messages 1602) z are used by load balancing units I06 when their consolidated health and load 3 caches 1208 are unsynchronized with health and load tables 1204. This lack of a synchronization may arise, for example, from a crash or other failure of s consolidated health and load cache 1208 and/or of load balancing unit 106.
As 6 described above, each heartbeat message 1502 includes error checking data that is usable to verify equivalency between a consolidated health and load cache 1208 g and health and load tables 1204. If non-equivalency is discovered with regard to a 9 particular host 108 and/or an application 316 thereof, the DNS name of the ~o particular host 108 is acquired from the heartbeat messages 1502.
The DNS name is used by consolidated health amd load cache 1208 to send lz a get table snapshot message 1508 to the particular host 108 in order to get 13 updated health and load information 1206 in the form of a send table snapshot m message 1510. A different or the same get table snapshot message 1508 is sent to is each host 108 for which non-equivalency is discovered. Eventually, the health and 6 load information 1206 in the consolidated health and load cache 1208 is equivalent n to the health and load information 1206 in health and Load tables 1204 as verifiable i$ by new heartbeat messages 1502. In this manner, a failed consolidated health and z9 load cache 1208 can be bootstrapped back into operation without manual oversight zo using message protocol 1500 and an equivalency-checking scheme.
FIG. 17A and FIG 1'7B illustrate exemplary :health and load information az proxy storage scenarios for health and toad tables 1204 and for consolidated health zs and load caches 1208, respectively. In implementations described above with za reference to FIGS. 12-16, hosts 108 include health and load infrastructure 1202.
Atty Docket No. MSt-1520US.PATAPP

t However, other implementations may entail hosts that do not include health and z load infrastructure 1202.
3 For example, a host may be running a version of applications) and/or an a operating system for which health and load infrastructure is either not s implemented or for policy reasons may not be installed on the host.
Consequently, 6 these types of hosts do not have health and load infrastructure 1202 executing thereon. Host 1702 is such a host that does not execute health and Ioad 8 infrastructure 1202. Nevertheless, host 1702 can utilize a health and load 9 infrastructure 1202 that is executing on one or more proxies, such as proxy 1704.
to Proxy 1704 has resident thereat and executing thereon a health and load a infrastructure 1202, which includes a health and load table 1204. Host 1702 can iz use the functionality of health and Ioad infrastructure 1202 by providing health 13 and load information 1206 to health and load table 1204 for applicatians that are 2~ running on host 1702. Alternatively, proxy 1704 can deduce health and load on ~ s host 1702 by performing external monitoring actions. Proxy 1704 is illustrated as i6 proxy 1704(1) and 1704(2) for redundancy and the resulting high availability.
m In implementations described above with reference to FIGS. 12-16 and 8 below with reference to FIG. 18, load balancing is effectuated with load balancing 9 units 106 that include consolidated health and load caches 1208. However, other zo implementations may entail load balancing that does not include consolidated zi health and load caches 1208.
zz For example, load balancing may be effectuated by monolithic load z3 balancing hardware or other load balancing infrastructure that does not and/or as cannot store or otherwise include a consolidated health and load cache 1208. Load zs balancer 1706 reflects such a load balancing device or devices that do not have a Atty Docket No. MSI-1520US.PwTAPP
. ..._ , . <..~w~ ,.~,~_~.v~a.,~,,,..~.....">, ,"......._. ....",~, ,~
,~,",~~,a,~~.~,~,,~,~-"~,~~",g , .._,. ...~_...,__..~._~.. ,..n .~" ,....._. .
.. - ... .....".,_. . . _...__...____~__.,_._._._..

1 consolidated health and load cache 1208. Nevertheless, load balancer 1706 can z utilize a consolidated health and load cache 1208 that exists on one or more 3 proxies, such as proxy 1708.
4 Proxy 1708 includes a consolidated health and load cache 1208, which s stores health and load information 1206 for hosted applications being serviced by 6 load balancer 1706. Load balancer 1706 can use the health and load information 1206 of consolidated health and load cache 1208 when performing load balancing s functions by accessing such information using application programming interfaces 9 (APIs) native to and supported by load balancer 1706. Alternatively, consolidated o health and load cache 1208 can invoke APIs to push health and load information a 1206, including directives, to load balancer 1706. Proxy 1708 is illustrated as 12 proxy 1708(1) and 1708(2) for redundancy and the resulting high availability.
13 FIG. I8 illustrates an exemplary target application endpoint allotment m procedure that involves a classifier 304 and a health and load handler 314 of a load ~s balancing unit 106. After health and load handler 314 has acquired a consolidated ~s health and load cache 1208, health and load information 1206 thereof is utilized in I-, the selection of application endpoints for new requests/connections.
~s As described above with reference to FIG. 13~, consolidated health and 9 load cache 1208 includes cached health and load information 1206 for multiple zo hosts 108. To facilitate the creation and updating of consolidated health and load z~ cache 1208 from health and load information 1206 that originates from multiple 22 hosts 108, the health and load information 1206 therein is organized so that it may z3 be accessed by identifier of each host 108. However, the health and load za information 1206 therein is also organized such that it can be accessed by type of zs application 316 in order to facilitate application endpoint selection.
S 4 Atty Docket No. MS I- I 52aUS. PATAPP

In other words, health and load handler 314 is capable of accessing health z and load information 1206 on a per-application 316 basis across health and load 3 information 1206 for multiple hosts i 08. Once health and load information 4 for a given application 316 has been accessed for each host 108, allocation of s incoming connection requests may be performed in accordance with such health 6 and load information 1206. For example, possible endpoints for the given application 316 may be allocated to incoming connection requests by selection of s the endpoints of the given application 316 with consideration of available relative 9 load capacity among healthy endpoints for the given application 316.
zo In a described implementation, classifier 304 makes a target application lI endpoint allotment request 1802 to health and load handler 314. As illustrated, lz target application endpoint allotment request 1802 includes (i) a virtual IP address ~3 and port, (ii) a protocol, and (iii) protocol-specification information.
Target 14 application endpoint allotment request 1802 therefore identifies a type of Is application 316 to which incoming canneetion requests are directed.
~s Health and load handler 314 receives target application endpoint allotment j~ request 1802 and selects at least one physical endpoint corresponding to the ~s identified type of application 316 using any one ~~r more of many selection 19 mechanisms. To reduce latency, health and load handler 314 selects an allotment zo of application endpoints to be used over a number of incoming connection zl requests. This allotment is provided from health and load handler 314 to classifier zz 304 using target application endpoint allotment response 1804. As illustrated, z3 target application endpoint allotment response 1804 includes an allotment of za physical IP addresses and ports (such as endpoints IP1, IP2, and IP3) for the zs identified type of application 316.
S J Atry Dockof No. MS I-1520US. PATAPP
~~T~~.~ ~ ~.-,e a~=,~.nx sos.~... -_...""-...-.... _._ _ w... . ". ";
,~~,~..~_.-~. w...~.-...~~..r~~,.<> .. ~-,-~--.------,....
,..",._..,.,~,.,~~""",.,s,~"".... , ...~-"", .""",..n"_,~:"."-.-",.....__.......... ........ ... ._, ...,..w,.,.w...".""...".....,....~

The allotment for target application endpoint allotment response 1804 may z be completed using one or more allotment schemes. By way of example, a token allotment scheme 1806 and a percentage allotment scheme 1808 are illustrated.
Token allotment scheme 1806 is a unit-based allotment scheme, and percentage s allotment scheme 1808 is a time-based allotment scheme.
Token allotment scheme 1806 allocates tokens for each healthy endpoint IP1, IP2, and IP3 responsive to their relative load and capacity ratios. For the s example as illustrated, of the total available capacity, If 1 has 40% of the available 9 capacity, IP2 has 35°/D of the available capacity, and IP3 has 25% of the available ,o capacity. Thus, the total number of tokens is divided along these percentages. The 11 total number of tokens may be provided as part of target application endpoint Iz allotment request 1802 or determined by health and load handler 314.
i3 Any value for the total number of tokens may be used, such as 10, 45, 100, la 250, 637, 1000, and so forth. This value may be set in dependence on the number I s of connection requests per second and the speed/frequency at which application 16 health andlor load is changing. Classifier 304 "users up"/consumes one token ~ when responding to each connection request with an application endpoint 1$ allocation until the tokens are exhausted; classifier 304 then requests another token 9 allotment using target application endpoint allotment rf:quest 1802.
zo Percentage allotment scheme 1808 determines available relative capacity in zl a similar manner. However, instead of tokens, these determined available relative zz capacities per application endpoint are provided to classifier 304 along with a z3 duration timer 1810. Classifier 304 allocates target application endpoints to za incoming connection requests in accordance with these available relative capacity zs percentages until expiration of duration timer 1810.
S 6 Acty Docker Mo. MS I-1520US. PA7APP
_..,..... ..., . ~.,::: _. , ,. r... ,H.,..1., . .... ..
......___...._...__...._.. _ ~ .. _..,.~.,..__.._ ~ . _ __ . ....... _... ....

r For percentage allotment scheme 1808, classifier 304 maintains a running z record of application endpoint allocations to adhere to the allotted percentages and 3 keeps track of time for duration timer 1810. When the lamer expires, classifier 304 4 then requests another percentage allotment using target application endpoint s allotment request 1802.
It should be noted that token allotment scheme 1806 can also use a time limit. If allotted tokens are too old, they should be discarded and new ones s acquired. Otherwise, classifier 304 may consume stale tokens that were 9 previously allocated based on health and load information that is currently too 0 outdated. Use of application endpoint allotments by classifier 304 is described ~ further below in the section entitled "Exemplary Classifying, Forwarding, and iz Request Routing".
3 Exemplary Session Tracking 14 This section describes how host status information, such as session ~s information, may be collected for and utilized in network load balancing.
This 6 section primarily references FIGS. 19-24 and illuminates session affinity ~ preservation functionality such as that provided by session tracker 308 (of FIG 3).
Is As described above with reference to FIGS. 1-3, each host i48 hosts one or more I9 applications 316 that provide services) to clients 102. Session tracker 308 utilizes zo session information that relates to contexts for the connections established zl between applications 316 and clients I02 for certain described implementations of zz network load balancing.
23 FIG. 19 illustrates an exemplary network load balancing approach that za involves session information 1902. At connection III, client 102(1) is shown zs making a new connection with host 108(2) via load balancing infrastructure 106.
S J Atty Docket No. MS I-1520US.PATAPP

2 Load balancing infrastructure 106 may be comprised of one or more load a balancing units 106. When the connection request arrives at Ioad balancing 3 infrastructure 106, the request is typically routed to a host 108 using network load a balancing functionality responsive to health and/or load information of hosts 108 s and/or applications 3I6 (not explicitly shown in FIG 19) thereof.
When connection [I] is made, a session is established between client 102(1) and the servicing application 316, which is on host 108(2) in this example.
The s session provides a context for the communication exchange between client 102(1) 9 and host 108(2). The information for the session context is stored at host 108(2).
2 o When connection [ 1 ] is completed, the session context may not be used again. On n the other hand, the session context may be useful again if client 102(1) attempts to 2 initiate another connection with hosts 108 for the service provided by application i3 3I6. If this other connection is not routed to the same host 108(2} that stores that is session context, then client I02( 1 ) has to establish a new session context, which is can be time consuming, datalprocessing intensive, and/or frustrating to the human is user of client 102( 1 ). With health and/or load information-based network load ~ balancing, there is no likelihood greater than random chance that the second is connection will be routed to I08(2).
is However, if load balancing infrastructure 106 has access to a mapping Zo between session information and hosts 108, load balancing infrastructure 106 can a~ route connection requests that relate to previously established sessions to the 22 appropriate host 108. Some session information rnay be inferred from the contents 23 of packets flowing through load balancing infrastructure 106. However, this 24 approach is imprecise and haphazard for a number of reasons. First, session Zs establishment and termination is merely inferred. Second, some sessions are not Atty Docket No. MS i-t S20US.PATAPP

"officially" terminated with an appropriate indication that is included in a packet.
z For example, some sessions simply time out. Third, packets being transmitted 3 from host 108(2) to client 102(1) may take a path that does not include load 4 .balancing infrastructure 106, which precludes any snooping of such packets by s load balancing infrastructure 106 for session information.
As shown in FIG 19, hosts 108 provide session information (SI) 1902 to load balancing infrastructure I06. Using session information 1902 from hosts 8 108, a session affinity preserver 1904 can preserve the affinity between an 9 established session and the host 108 on which the session was established.
to Session information 1902 includes a linkage between or a mapping from each I i session established between a client 102 and a particular host 108 to that particular iz host 108. This mapping is accessible to session affinity preserver 1904 as part of 13 host-session information mapping 1906. lVlore-specific examples of session ,~ information 1902 are provided below especially with reference to FIGS. 20, 22, is 23A, and 23B.
i6 In certain described implementations for session tracking, the logical nature 1~ of clients 102 is pertinent. As noted above with reference to FIG 1, a client 102 18 may be a specific device andior a specific user of a device. Consequently, session i9 affinity for a user client 102 that is accessing hosts ltJB from different devices can zo still be preserved. Session continuations using session information 1902 can z~ therefore still be effectuated in proxy scenarios (e.g., those of some Internet zz service providers (ISPs)).
z3 Continuing with the connection [I] example, the session established at host za I08(2) is provided to load balancing infrastructure 106 as session information zs 1902. Specifically, a linkage/rnapping between (i) the session context of client Atty Docktt No. MS I~ 1520U5. PATAPP

102(1) and host 108(2) and (ii) an identifier for host 108(2) is created at host-z session information mapping 1906. When a connection request for connection [2]
3 subsequently arrives for the same session context, session affinity preserver 1904 4 locates this session context in host-session information mapping 1906 and s ascertains that host 108(2) is associated with this session context from the 6 linkage/mapping.
Responsive to the mapping of host 108(2) to the requested session context s as ascertained by session affinity preserver 1904 fro~~n host-session information 9 mapping 1906, connection [2] is routed to host 108(2;). In this sense, preserving to session affinity is a higher priority for load balancing infrastructure 106 than application health and load-based network load balancing decisions. However, lz health andlor load may be a more important network load balancing factor than 13 session tracking when, for example, loading is extremely heavy or when the ,.4 session-relevant application and/or host is in a failed condition.
~s Many types of connections may be session-related. Examples include: a 6 TCP connection, a transport layer security (TLS)/SSL session, a PPTP
session, an ~ IPSec/L2TP session, an ISA session, an HTTP cookie-based session, a Terminal is Server session, an administrator-defined session, a:nd so forth. By way of i9 clarification, a TCP connection is considered to be a session of TCP
packets. Also, zo a model for defining sessions by an administrator may be enumerated and z~ supported. Furthermore, client IP-address-based sessions that are delineated by zz timeouts may also be supported. This is relatively non-intelligent session support, z3 but is expected by some users.
za A connection request from a client 102 varies by the type of desired is session. For example, for sessions of type "TCP connection", the connection Atty Docktt No. MSt-1520US.PATAPP

I request comprises a TCP packet. For sessions of type "SSL session", the z connection request comprises a TCP connection. Other such connection requests 3 correspond to other session types. These examples also show how there may be a session layers. At a lower session level, a session context for a TCP
connection s may include a TCP 4-tuple, a session number, the number of bytes sent/received, 6 and so forth. At a higher session level, a session context for an SSL
session may -, include a 32-byte session ID, a public key of the client 102 that is provided to the s host 108, and so forth.
s FIG. 20 illustrates an ' exemplary network load balancing approach that to involves communicating session information using notifications 2006 and z r messages 2008. Multiple load balancing units 106( 1 ), 106{2) . . . 106(u) and iz multiple hosts 108(1), 108(2) ... 108(n) are shown. Each respective host 108(1), ~3 108(2) ... 108(n) includes one or more respective applications 316(1);
316(2) ...
is 316{n) which are resident thereat and executing thereon. I~lotifications 2006 are Is used to provide session information from applications 316, and messages 2008 are 16 used to provide session information from hosts 108 to load balancing units 106.
n As illustrated, each respective host 108(1), 108(2) ... I08(n) includes ~s respective session tracking infrastructure (STI) 2002(1), 2002(2) ...
2002(n).
19 Each respective session tracking infrastructure 2002(1), 2002(2) ...
2002(n) zo includes a respective session table 2014( 1 ), 2014(2} . . . 2014(n) (although only zi session table 2014(1) is explicitly illustrated in FIG 19).
zz Each respective load balancing unit 106(1), 106(2) ... 106(u) includes z3 respective traffic routing functionality (TRF) 2012(1), 2012(2) ...
2012(u). Traffic za routing functionality 2012 may comprise, for example, classifying and/or zs requesting routing functionality, such as that provided by classifier 304 and 61 Atty I>ocke~ No. MS t-! 520US.PA'fAPP
. _...................___.__-._.'...~,__ 1 request muter 306, respectively. Distributed across lcoad balancing units 106(1), z 106(2) ... 106(u) is a distributed session tracking manager 2010.
In a described implementation, traffic routing functionality 2012 and a distributed session tracking manager 2010 are part of load balancing infrastructure s 106. Session tracking infrastructure 2002 may also be (e.g., a remote) part of load s balancing infrastructure 106.
An API 2004 is employed to provide session information from applications s 316 to session tracking infrastructure 2002. Using API 2004, applications 316 are 9 empowered to notify session tracking infrastructure 2002 of session information, ro including various changes thereto. More specifically, each application 316 is ~ capable of providing, and session tracking infrastructure 2002 is capable of iz accepting, notifications 2006.
t3 A notification that a session has been established (or session establishment ~a notification 2006(E)) is provided from application 316 when a session is newly ~s established or opened. Session establishment notification 2006(E) includes a 16 session identifier and optionally an identifier of application 316. A
notification m that a session has been terminated (or session termination notification 2006(T)) is is provided from application 316 when a session is terminated or closed.
Session i9 termination notification 2006(T) also includes the session identifier and optionally zo the identifier of application 316.
zi When session tracking infrastructure 2002 accepts a session establishment zz notification 2006(E), it inserts an entry in session table 2014 for the new session.
z3 An exemplary session table 2014 is described further below with reference to FIG.
z4 23A. When session tracking infrastructure 2002 accepts a session termination zs notification 2006(T), it removes the entry in session table 2014 for the old session.
Atty Docket No. MSI-1520US.PATAPP

Session table 2014( 1 ) is the authoritative source for session information z 1902 with respect to applications 316(1) on host 108(1). There is generally too 3 much latency, however, to require traffic routing functionality 2012 to contact a hosts 108 for access to session tables 2014 upon receipt of each incoming s connection request having a session reference. Session information 1902 is 6 therefore cached at Load balancing units 106.
z At load balancing units 106, distributed session tracking manager 2010 a caches session information 1902 as part of its session tracking management 9 responsibilities. Generally, distributed session tracking manager 2010 is a to distributed application and/or virtual service that resides partially on each load n balancing unit 106. For each logical session, distributed session tracking manager lz 2010 keeps at least one cached copy of session information therefor in a reliable i3 and scalable manner that may be quickly utilized for routing traffic as incoming i4 connection requests that have a session reference are received by load balancing is infrastructure 106.
ib ~~ Communications between hosts 108 and load balancing units 106 are m effectuated with a reliable protocol that ensures that messages 2008 sent from a is host 108 arrive at the intended load balancing unit 106. Each host i08 is bound to 19 at least one specific load balancing unit 106 that is the intended load balancing zo unit 106 for messages 2008. This binding is created by assigning an IP
address of zl a specific load balancing unit 106 to each host 108 for sending session-tracking zz messages 2008 between session tracking infrastructure 2002 and distributed z3 session tracking manager 2010. To facilitate high availability of load balancing za infrastructure 106, if a load balancing unit 106 fails, another load balancing unit zs 106 assumes the IP address of the failed load balancing unit 106: Failure detection 63 Ary Docket No. M51-I520US PATAPP

l for IP address assumption anay be accomplished a sing a heartbeat or another z aliveness monitoring scheme.
Thus, messages 2008 communicate session information 1902 from session 4 tracking infrastructure 2002 to distributed session tracking manager 2010.
For s example, when session tracking infrastructure 2002 accepts a session 6 establishment notification 2006(E), it also sends a session up message 2008(U) to 7 distributed session tracking manager 2010. Session up message 2008(U) includes 8 the session identifier, a host identifier, and optionally other information.
Contents 9 for a session up message 2008(U) are described further below with reference to to FIG. 23B with respect to information that may be stored for each session by an i i implementation of distributed session tracking manager 2010. When session lz tracking infrastructure 2002 accepts a session termination notification 2006(T), it i3 also sends a session down message 2008(D) to distributed session tracking is manager 2010. Messages 2008 can be sent before, during, or after session tracking infrastructure 2002 appropriately modifies session table 2014 in response s to notifications 2006.
m FIG 21 is a flow diagram 2100 that illustrates an exemplary method for ~s network load balancing that involves communicating session information using i9 notifications and messages. Flow diagram 2100 includes fifteen blocks 2102-20 2130. Although the actions of flow diagram 2100 may be performed in other zi environments and with a variety of software schemes, FIGS. 1-3 and 19-20 are zz used in particular to illustrate certain aspects and examples of the method.
23 For example, the actions of four blocks 2102-2104 and 2118-2120 are za performed by an application 316, the actions of six blocks 2106-2110 and Zs 2126 are performed by session tracking infrastructure 2002, and the actions of five 4 Atty Docket No. MS'-1520US.PATAPP
.. . : r ~.. .,~.,:_.,.....x.", :.-_9.,. .._..._.._.- .., r, ,. ~,,-~,~.ra~.,:,:~--~~~ .~."",....__ a.~.-~:~.~.,~..--.-.,.~.."_,....~~M,.,» -1 blocks 2II2-2116 and ZI28-2130 are perfcsrmed by a distributed session tracking z manager 2010. The actions of eight of these blocks 2102-2116 are primarily 3 directed to opening a session, and the actions of seven of these blocks 2118-4 are primarily directed to closing a session.
s At block 2102, a session is opened. For example, application 316 may 6 open a session with a client 102. At block 2104, a session establishment notification is provided. For example, application 316 may provide a session s establishment notification 2006(E) to session tracking infrastructure 2002 using 9 API 2004 as a consequence of and/or in conjunction with opening the session.
to At block 2106, the session establishment notif canon is accepted. For n example, session tracking infrastructure 2002 may accept session establishment lz notification 2006(E) from application 316 in accordance with API 2004. At block ~3 2108, an entry in a session table is inserted. For example, session tracking ~a infrastructure 2002 may insert an entry in session table 2014 for the opened 1s session. Examples of such insertion are described fiurther below especially with 16 reference to FIG 23A. At block 2110, a session up message is sent. For example, r~ session tracking infrastructure 2002 may send a ses;>ion up message 2008(U) to is distributed session tracking manager 2010 using a reliable communication 19 protocol.
zo At block 2112, the session up message is received. For example, z~ distributed session tracking manager 2010 may receive session up message z2 2008(U) from session tracking infrastructure 2002 in accordance with the reliable z3 communication protocol. At block 2114, a session information entry is created.
za For example, distributed session tracking manager 2010 may create a session zs information entry for cached session information 1902 at one or more load Atty Docket No. MSi-1520US.PAIAP°

r balancing units 106. Examples of such creating and subsequent adding are z described further below especially with reference to FIGS. 22 and 23B.
At block 2116, network traffic is routed with the session information. For a example, traffic routing functionality 2012 ~in conjunction with distributed session s tracking manager 2010 may use cached session information 1902, including the 6 created session information entry, to route incoming connection requests that have 7 a session reference. An example of such traffic routing is described further below s especially with reference to FIG. 24. Additional exarr~ples are described below in 9 the section entitled "Exemplary Classifying, Forwarding, and Request Routing".
~ o At block 2118, the session is closed. For example, application 316 may ~ close the session with client 102. At block 2120, a session termination notification iz is provided. For example, application 316 may provide a session termination ,3 notification 2006(T) to session tracking infrastructure 2002 using API 2004 as a is consequence of and/or in conjunction with closing the session.
~s At block 2122, the session termination notification is accepted. For 16 example, session tracking infrastructure 2002 may accept session termination m notification 2006(T) from application 316 in accordance with API 2004. At block is 2124, the entry in the session table is removed: For example, session tracking is infrastructure 2002 may remove the entry in session table 2014 for the closed zo session. At block 2126, a session down message is sent. For example, session z1 tracking infrastructure 2002 may send a session down message 2008(D) to zz distributed session tracking manager 2010 using t:he reliable communication z3 protocol.
za At block 2128, the session down message is received. For example, zs distributed session tracking manager 2010 may receive session down message 66 Atty Dockot No. MSI-1520US.PATAPP

1 2008(D) from session tracking infrastructure 2002 in accordance with the reliable z communication protocol. At block 2130, the session information entry is 3 destroyed. For example, distributed session tracking manager 2010 may destroy 4 the session information entry at the cached session information 1902 at any load s balancing units 106 that have the session information entry. Examples of such 6 destroying and subsequent deleting are described further below especially with 7 reference to FIGS. 22 and 23B.
FIG. 22 illustrates an exemplary approach to managing session information 9 . at multiple load balancing units 106. Each respective Ioad balancing unit 106(1), to 106(2) ... 106(u) includes a respective part 2202(1), 2202(2) ... 2202(u) of a 1 i distributed atom manager (DAM) 2202. DANf 2202 is an exemplary lz implementation of distributed session tracking manager 2010. Each respective 13 DAM portion 2202(1), 2202(2) ... 2202(u) includes a respective part 2206(1), is 2206(2) ... 2206(u) of a DAM table (DAMT) 2206.
is DAM 2202 is a distributed application or virtual service that manages i6 session information 1902 in a reliable and scalable manner so that traffic routing ~ functionality 2012 can use it to preserve session affinity. For example, traffic i8 routing functionality 2012 can access DAM 2202 using an API (not specifically i9 shown) to search or have searched DAMT 2206. Function calls 2204, operation of zo DAM 2202, and other aspects of FIG. 22 are described further below after the zt description of FIGS. 23A and 23B.
zz FIG 23A is an exemplary session table 2014 as illustrated in FIG 20.
23 Session table 2014 includes "v" entries 2302(1), 2302(2) ... 2302(v). Each entry za 2302 is inserted by session tracking infrastnzcture 2002 responsive to a session zs establishment notification 2006(E) that is accepted from an application 316. Each Airy Docket No. MSI-1520US.PATAPP

1 entry 2302 is removed by session tracking infrastructure 2002 responsive to a z session termination notification 2006(T) that is accepted from application 316.
As described above, each session establishment notification 2006(E) a includes a session identifier and optionally an identifier of application 316. Each respective entry 2302( 1 ), 2302(2) . . . 2302(v) in session table 2014 includes 6 respective fields of {i) session identifier 2302{lI), 2302(2I) ... 2302(vI) and (ii) 7 session type and/or application 2302(1T), 2302(2T) ... 2302(vT).
s Session type and/or application 2302(T) may be "TCP", "IPSEC", 9 "Terminal Server," "HTTP-cookie", an application type as noted above, and so to forth. Session identifier 2302(I) may be "<source IP address, source TCP
port, 1 destination IP address, destil~atian TCP part >", "Client IP =
172.30.189.122", iz "User = 'joe user"', "Cookie = '~b7595cc9-e68b-4eb0-9bf1-bb717b31d447}"', 13 another e.g. application-specific identification fox a session, and so forth. For TCP
is connection/session types, session identifier 2302(I) may alternatively be a is canonical version of the TCP 4-tuple (for IPv4 or IPv6). Other values for the ib fields of session identifier 2302{I) and application~'session type 2302(T) may 17 alternatively be used.
is FICA 23B is an exemplary distributed atom manager (DAM) table (DAMT) 19 2206 as illustrated in FIG. 22. DAM table 2206 includes "w" entries 2304(1), zo 2304(2) ... 2304(w). Each session information entry 2304 is created by DAM
zi 2202 responsive to a session up message 2008(U) tlhat is received from session zz tracking infrastructure 2002. Each session information entry 2304 is destroyed 2a responsive to a session down message 2008(D) that is received from session 2a tracking infrastructure 2002. As described further below, session information Atty Docket No. MSI-1520US.PATAPP
......,..... ...~. ",.,.,.."." "."..,.., r. ,...W~. "",,~~;~,~z~~.:.,m,.
.,A.~.....,--_._.._.~~:~,~,~~roc~m~ssr~nx.N~~: --."....",.".;A".,".n..."".,".,. .__ _..._ ..... _..... _._,.~._"
.,...._",.",..._.,...., i entries 2304 of DAM tables 2206 may actually be manipulated by DAM 2202 using function calls 2204.
As described above, session up message 2008{I~ includes the session 4 idenfiifier, a host identifier, and optionally other information. Each respective s session information entry 2304(1), 2304(2) ... 2304(w) in DAM table 2206 includes respective fields of (i) key 2304(1x), 2304(2x) ... 2304(wK), (ii) data 2304{1D), 2304(2D) ... 2304(wD), and {iii) metadata 2304(1M), 2304(2M) ...
s 2304{wM). For example, values for key 2304(x) fields may be aIphanurneric strings, and values for data 2304(D) fields may be binary bits. Values for key l0 2304(x) may be binary bits, too.
Key 2304(x) may correspond to the session identif er 2302(I). Data iz 2304(D) may correspond to the host identifier, such as a network address of the 13 host 108 on which the session context exists. Metadata 2304(M) may correspond l4 to other, optional information. Examples of such metadata 2304(M) include data ~s that is used internally by DAM 2202 to. resolve atom collisions and to track atom ~6 aliveness (e.g., via a time-out mechanism). (This characterization of entries 2304 a as being atomic is described more fully in the following paragraph.) More specifically, metadata 2304(M) includes, among other things, the identity of the ~g entity (e.g._, the instance of traffic routing functionality 2012) that added the zo session information entry 2304 to the DAM table 2206.
z~ In a described implementation, each session information entry 2304 is zz atomic in ,the sense that DAM 2202 may add, delete, copy, etc. tire entries 2304 as w z3 a whole, but DAM 2202 doss not ordinarily modify a portion of any whole entry 24 2304. Thus, atomic entries 2304 are added, deleted, copied, othervvise 67 A:ry Dodx1 No. biSi.1320U&PATAPP
Copy provided by USPTO from the PACK Image Database on 05-f3-2Q04 manipulated, etc. across DAM tables 2206 by DAM 2202 in order to implement 2 availability and scalability for a session affinity preservation implementation.
Function calls 2204 {of FIG. 22) are usable by DAM 2202 to manipulate the atomic entries 2304 of DAM table 2206. Function calls 2204 may be s communicated from one load balancing unit 106 to one or more other load balancing units 106 in a point-to-point or a multicast manner. These function calls include add atom 2204(A), delete atom 2204(D), query atom 2204(Q), and return .
atom 2204(R).
Add atom 2204(A) takes the form AddAtom(key, data) and is used to add ~o an atomic entry 2304 to tine or more DAM tables 2206. Hence, an add atom 2204(A) function call may be formulated as AddAtom(<sessian identifier>, host a2 IP address). Delete atom 2204(D). takes the form DeleteAtom(key) and is used to n delete an atomic entry 2304 at one or more DAM tables 2206. Delete atom > >4 2204(D) function calls may be directed at those DAM tables 2206 known to have Is a copy of the session that is identified by the key 2304(I~) or may be multicast to ~s all DAM tables 2206 to ensure that any copies are deleted. .
c~ Query atom 2204(Q) takes the form QueryAtom(key) and is used by a particular DAM portion 2202 when a session identifier as referenced by an incoming connection request is not located in the particular local DAM table 20 of the particular.DAM portion 2202. _Query atom 2204(Q). function calls are sent zl to one or more (including possibly all) other DAM portions 2202. In response, . . 2z .each other . DAM .portion . 2202 checks tits. local: DAM ~ table 22U6 for ~ the 23 key/session identifier. If the key is located by another DAM portion 2202, this 24 other DAM portion 2202 replies with a return atom 2204{R).
0 Aay Daket No. MS'-iSMUS.PATAPP
Copy provided by USPTO from the PACK Image Database on 05-1S-2004 t Return atom 2204(R) takes the form ReturnAtom(key, data) and .is used to z reply to a query atom 2204(Q) function call. Return atom 2204(R) function calls are used when a DAM portion 2202 has a requested atomic entry 2304 in its local 4 DAM table 2206 as identified by a key 2304(x) specified in the query atom s 2204(Q) function call. Return atom 2204(R) function calls may be directed back s to the DAM portion 2202 that issued the query atom 2204(Q) function call.
7 Add atom 2204{A) function calls are used in response to session up s messages 2008(U) and/or to replicate an atomic entry 2304 to one or more other 9 DAM tables 2206. Such replication may be for redundancy and/or scalability ' ~o Delete atom 2204{D) function calls are used in response to session down a messages 2008(D) and may also be sent to one or more; other DAM tables 2206.
~~
I
iz After an atomic entry 2304 is deleted, the atomic entry 2304 may enter a "zombie"
m state such that it remains with DAM 2202; and optionally so that it is actually still as stored with DAM table 2206 with a zombie indication in the metadata 2304(M) is field of the atomic entry 2304.
~s Thus, once an atomic entry 2304 is deleted, it may stay on in DAM 2202 and DAM table 2206 in a zombie state so that packets for this (now dead and is closed) session are directed to the host 108 of the session context for proper, protocol-specific treatment. For example, TCP packets received after a TCP
r . zo connection has been torn down .are directed to the host 108 -that terminated the zt connection. This host 108 can respond appropriately.-perhaps by sending an RST
zz or by resending a FIN-ACK: The tune the atomic entry 2304 spends in- this z3 zombie state matches (as closely as reasonably possible) the protocol-specific dead z4 time of the reliable communication protocol that is employed.

71 u,,,n~r~.nu~.~smus.r~~~rP
Copy provided by USPTO from the PACR Image Database on 05~13-2004 A query atom 2204(Q) function call is used to attain an atomic entry 2304 when a first load balancing unit 106 receives an incoming connection request that references a session that is not stored in the local DAM table 2206 of the DAM
a 2202 of the first load balancing unit 106. It should be noted that other DAM
s portions 2202 may be queried simultaneously in a broadcast query atom 2204{QJ
function call or sequentially until a positive return atom 2204(R) function call is received.
s A return atom 2204(R) function call is used by a DAM portion 2202 of a second load balancing unit 106 to provide an atomic entry 2304 to the .DAM
to portion 2202 of the first load balancing unit 106, where the atomic entry 2304 has a key 2304(x) that is specified by the keylsession identifier in a query atom Iz 2204(Q) function call, which was previously issued by the DAM portion 2202 of . is the first load balancing unit 106. It should be noted that other components, such.
to as traffic 'routing functionality 2012, may also be capable of calling functions Is 2204, especially a query atom 2204(Q) function call, in accordance with an APl or is Il similar.
o II DAM portions 2202 and DAM tables 2206 may be organized and managed Is I' in a myriad of manners. Exemplary manners relate to replication/redundancy, I4 local caching upon acquisifion, hashing for location selection, and so forth. Zero, zo one, two, or more levels, of replication up to full replication may be employed.
za With a zero level of replication, each atomic entry 2304 is stored at the .zz I~ : that receives.a .session up.message- 2008{U)- therefor. without ,replication to~ other ~ - -z3 (~ DAM portions 2202.
za ~~ With a first level of replication, each atomic entry 2304 is stored at the zs ~~ DAM 2202 that receives a session up message 2008(1.1) therefor, and it is also ~2 AuyDaknNo.MSI~15z0US.PATAPP
Copy provided by USPTO from the PACR Image Database on 05~13-20A4 added (copied) to one other DAM porrion 2202 using an add atom 2204(A) z function call. This handles one level of failure for a load balancing unit 106.
Similarly, with a second level of replication, each atomic entry 2304 is stored at 4 the DAM 2202 that receives a session up message 2008(,U) therefor, and it is also s added to two other DAM portions 2202. Generally, the one, two, etc. other DAM
portions 2202 to which a given DAM portion 2202 copies atomic entries 2304 is 7 predetermined or selected at random. Third, fourth, etc. levels of replication may also be employed.
Furthermore, full replication may be employed by having each atomic entry 2304 that is stored at the DAM 2202 that receives a session up message 2008(U) 11 therefor also being added to every other DAM portion 2202. Several factors are iz impacted by selection of the replication level: As the replication level increases, y3 availability increases and latency decreases. On the other hand, network traffic ~a and memory usage both increase as the replication level increases. , .
~s When full replication is not employed, local caching upon acquisition may ~s be. For example, when a DAM portion 2202 does not locate a referenced session ,z identifier in its part of DAM table 2206, the DAM portion 2202 issues a query -atom 2204(Q) function call to attain the atomic entry 2304 associated with the referenced session identifier via a return atom 2204(R) function call. Instead of ' Zo jettisoning the attained-atomic entry 2304 after.use thereof, the 'DAM
portion 2202 z~ caches the attained atomic entry 2304 iri its part of DAM table 2206. This option zz. offers a tradeoff between:the.above-enumerated=factors.
z3 As another optian when full replication is not employed, hashing for .
za location selection may be. The first atomic entry 2304 for a session is stored at the zs DAM portion 2202 that receives the session up message 2008(U). Replicated 73 Auy Cbeka No. MSt~tSZOUS.PATI1PP
Copy provided by USPTO from the PACK image Database on 05-13-2004 copy or copies are sent via add atom 2204(A) function calls to specific DAM
portions) 2202 using a hashing function. ~f a total range o_f possible hash values, each DAM portion 2202 is assigned a subset thereof. Each session identifier is a hashed using some hashing function to arnve at a hashing value. This hashing value is mapped to the assigned DAM portions) 2202. The DAM portion 2202 that first added the atomic entry 2304 then replicates the atomic entry 2304 to the 7 assigned DAM portions) 2202.
s With hashing for location selection, at least one DAM portion 2242 that has a desired atomic entry 2304 locally cached at its DAM table 2206 is knowable io from the session identifier. A query atom 2204(Q) function call can therefore be a directed to the known DAM portions) 2202. This usually reduces network traffc is and/or latency.
Is 7Chis hashing for .location selection may be used, with one, two, three, or I'a more levels of replication with each range of hashing values mapping to one, two, Is three, etc. different DAM portions 2202, respectively. Additionally, hashing for is location selection may be used with local caching upon acquisition.
l FIG 24 is a flow diagram 2400 that illustrates ,an exemplary method for Its rrianaging session information at multiple load balancing units. ~ Flow diagram I9 2400 includes eight blocks 24022416. Although the actions of flow diagram ao 2400 may be performed in other ,environments and with a variety of.soflware ' zl schemes, FIGS. 1-3, 19, 20, 22, and 238 are used in particular to illustrate certain .
as aspects.and examples of the.method. ~ . ~.. . _ . .
as At block 2402, an incoming connection request with a session reference is as analyzed. For example, traffrc routing functionality 2012 may receive an as ~~ incoming connection request that references a previously-opened/established '4 Atey DtKtn No. MS)~t3MIJS.PATAPP
Copy provided by USPTO from the PACR Image Database on 05-13-2004 session of a particular type. At block 2404, a local DAM table is searched using z the session reference. For example, for a given load balancing unit 106 and traffic routing functionality 2012, the DAM portion 2202 thereof may search its .
4 corresponding DAM table 2206 looking for the session reference.
' s At block 2406, it is determined if the session reference matches a key of the local DAM table. For example, DAM portion 2202 may search key fields z 2304{K) of multiple entries 2304 of DAM table 2206 to determine whether the a session reference matches any values of the key fields 2304(K). If so, flow diagram 2400 continues at block 2412. ' If, on the other hand, the, session reference does not match any key, flow " diagram 2400 continues at block 2408. At block 2408, a query atom function call iz is made. For example, DAM portion 2202 may make a query atom 22U4(Q) ,3- function call that includes the session referencelidentifier as ~ the key.
The query I4 atom 2204(Q) function call may be sent to at least one other DAM portion 2202.
,s The number, selection, order, etc. of possible destination DAM portions 2202 for s6 query atom 2204(Q) may depend on the options (e.g., replication level, hashing for location selection, local caching upon acquisition, point~to-point versus multicast, etc.) employed by DAM 2202.
Is At block 2410, a returned atom is received. For example, information from zo a returned atom 2204(R) function call that is issued by another DAM portion 2202 .
z~ may be received. The ~ other DAM portion 2202 successfully located an atomic _ . Zz entry 2304 in its corresponding. I)AM . table .2206, with -the .located atomic entry ~ ~ . _ . .
zs 2304 having a key that matches the session reference. The information from the za returned atom 2204(R) function call includes values from key field 2304(K) and zs data field 2304(D) for the located atomic entry 2304. These values correspond to o .a Auy.'Jocka No. MSI-1320US,PATAPP
Copy provided by USPTO from the PACK Image Databaae on 05~13-2004 ~"~;~ ~ -., ~.._""~ -~~..~...~_ .,..__~_~ _.~..._._ ._.__,____..__~.~_,.~."~_m~y..~. __,___ - ...._._- _.-. _. . _.___. __. .. .

,' the session identifier of the session and the network address of the host 108 that is z a~nitized to the session.
At block 2412, an atomic entry is extracted. The; atomic entry is extr cted.
4 from the local DAM table if a match was found locally (at blocks 2404 and 2406) s or from the returned atom if a match was found elsewhere (at blocks 2408 and 2410). For example, an atomic entry 2304 may be extracted from DAM table ~ 2206 of the DAM portion 2202 or from iriforrization received by a return atom s 2204(R) function call. Tlie extracted atomic entry 2304 may be cached at the local 9~ . DAM table 2206 if received as a result of the return atom 2204(R) function call.
to At block 2414, 'the host having session affinity with the referenced session is ascertained from the atomic entry . For example; a vafiue of the data field ,z' 2304(D) of the extracted atomic ,entry. 2304 may ~be ascertained to thereby ~~
r3 ascertain a network address of the affinitized host 108. At block 2416, the ,4 incoming connection request is routed to the ascertained host. Eor example, -tragic Is routing functionality 2012 and/or forwarding functionality may route the incoming .
connection request having the session reference to the ascertained and affinitized n7 host 108. Exemplary classifying, request routing, and forwarding functiorialities are described in the follow ing section.
Exemnlary Classifying, Forwarding and Req-nest Itoutin~
zo This section describes how tiaffic routing may b~ irriplemented for network .. ".
zl load balaiacing, :including with regard to high availability of such tragic routing :. , .. zz: functionality. . Traffic . routing.. functionality .:may:. include .~classi:fying . and/or,. _.-.
z3 . requesting routing functionality, especially iii conjunction with forwarding z4. functionality This section primarily references FIGS. 25=31. It illuminates the zs functionality of a request roister 306 (of FIC» 3), an interrelationship between ~6 Atty Dxka No. MSLtSMtJS.PATAPP
Copy provided by USPTO from the PACR Image Database on 05-13-2004 _ i tracking sessions and utilizing health and load information when routing traffic, z operational implementations for traffic routing interactions with session information and/or health and load information, failover ~ procedures for high availability of network load balancing infrastructure (including handling failures s of classifying, forwarding, and/or request routing components), additional network load balancing infrastructure configurations, and so forth. .
FICA 25 illustrates exemplary network laad balancing infrastructure having request routing functionality as realized by request router 306(H/S). As noted above with ~ reference to traffic routing functionality. 2012, traffic routing may io relate to classifying (e.g., with forwarding) and/or requesting routing.
Packet-level classifying, in conjunction with forwarding, is described above with particular iz reference to FIG 4. Request routing is described here with particular reference to ~s FICs 25. - . ~ ' ra - Request-level routing occurs at a higher -level than that of packet-level ~s routing. Generally, a request router 306 acts as a proxy for an application vs running on a host 108. Request router 306 terminates TCP connections, parses n (perhaps partially) each request from a client 102, and resubmits each request to ~a host 108. Request muter 306 may perform pre-processing on the connection, such -~9' as SSL decryption. Also, request router 306 may chose to absorb certain requests zo (e.g., the .request router may maintain .a. cache of responses), and it may _ .
zl "arbitrarily" modify requests before forwarding them to hosts 108.
' ~ zz ~ Request routers 306 are usually application-specific; and they may be rather - ._ zs open-ended in what they are capable of doing. By way of example only, a single za class of request routers 306 - HTTP/SSL request router,~ 306(H/S}-- are addressed zs in the following description. As illustrated; a client 102 having a network address Atty Docket No. MSI-1520US.PATnPP
Copy provided by USPTO from the PAGR Image Database on 05-13-2004 C1 is communicating across network 104 with hosts 108(1) and 108(2) having z network addresses H1 and H2, respectively. The communications are effectuated via load balancing infrastructure that includes an HTTP/SSL request roister 306(H/S).
s HTTP/SSL request roister 306(H/S) terminates HTTP and SSL traffic, decrypts SSL traffic, examines each HTTP request from client 102, applies 7 application-specific rteles to classify each request and to determine the "best"
s endpoint for that request while taking into account application endpoint health and load information, and submits the request to the endpoint. The request submission ,o to the endpoint uses a separate TCP connection than that of the one originated by client 102 (the latter connection is terminated at HTTPISSL request roister ,z 306(H/S)). These actions may be considered as logicall~r equivalent to the actions ,s performed by a classifier 304, but a difference arises in that these actions in HTTP/SSL request roofer 306(H/S) are occurring at thtr logical request level for ,5 each request within the TCP connection. HTTP/SSL request roister 306(H7S), and ,6 request roisters 306 generally, can use the same (i) application health and load and (ii) session tracking infrastructure that is used by classifiers 304:
,8 - HTTP/SSL request roister 306(H/S) is acting as an intermediary between ,9 client 102 and two hosts 108(1) and 108(2). It is handling two requests from client zo 102 over a single TCP connection. .In a described implementation, the resulting z, request routing involves a number of actions. First, client 102 establishes an http zz or https connection [ 1.~ to HTTP/SSL request roister. 30fi(H/S) and sends a request-zs #12502(1).
z4 Second, HTTP/SSL request roister 306(H/S) terminates the SSL session (if zs the traffic is SSL encrypted), parses request #1 2502(1), and examines the content 78 W pr t7oehr Na MSt-t52~J$.PATAPP
Copy provided by USPTO from the PACK Image Database on 05-13~2004 of request #1 2502(1). Taking into.account application. health and load as well as z session information; HTTP/SSL request routes 30b(HIS) determines that host i08(t) is the "best" host for this particular request #1 2502(1) in this example.
a Third, HTTPISSL request routes 306(H/S) establishes a secondary TCP
s connection [2] to host 108(1). It may alternatively use an existing.
connection [2]
to. host 108(1). HTTP/SSL request routes 306(H/S) then sends an e.g.
unencrypted version of request #1 2502(1) to host 1.08(1). Fourth, host 108(1) replies with a s response #1 2504(1). Fifth, HTTP/SSL request routes 306(H/S) encrypts this g response # 1 2504( 1 ) and sends it back to client 102 on T(:P connection [
1 ].
ao. Sixth, client 102 sends another request, request #2 2502(2). ~tequest #2 n 2502(2) is. handled similarly to the' handling of request #1 2502(1), except 'that ,z HTTP/SSL request routes 30.6(H/S) selects host 108(2). The different selection is may be because host 108(1) is now failing or more-heavily. loaded; because ra request #2 2502(2) is directed to a different URL than request #1 2502(1), and so rs forth: Regardless, HTTP/SSL request routes 3U6(I-iIS) establishes another .
is secondary TCP connection, but this secondary TCP connection ,[3] is t~ host c~ 10$(2), tJnencrypted request #2 2502(2) is routed to bast .108(2), and a response rs #2 2504(2) is received therefrom as a.result. An encrypted version of response #2 2504(2) is then sent to client 1'02 from HTTPISSL request routes 306(HlS).
_- . . . - zo. . _ . . : :Seventh,. client 102 . closes TCP connection ..~ 1 ]:. r?vith HTTP/SSL .request . . .. . .
zi routes 306(H%S). HTTP/SSL request routes 306(H/S) (at some future time) closes - - zz connections [2]- and [3] that-itmade to :hosts- 108(=1} and L08(2)-.respectivel-y;~ on - - - . -. .. -. . .. .
z3 behalf of client 102. TCP connection [2] may alternatively be closed after za ~) HTTP/SSL request routes 306(H/S) decides to open/use TCP connection. [3]
for zs II request #2 2502(2).
79 Atty Docket No. MSI-1320US.PATAPP
Copy provided by USPTO from the PACK image Database on 05-13-2004 Because an HTTP/SSL request routes 306(H/S) terminates the httplhttps conneciion, HTTP/SSL request routes 306(H/S) can do more than route requests.
For example, HTTP/SSL request routes 3U6(H/S) can potentially maintain its own a. cache of responses (e.g., with ~an out-of band ,mechanism to invalidate the cache).
s As noted in the above example, HTTP/SSL request routes 306(H/S) can also potentially route -different kinds of requests to different sets of lhosts 108 based on 7 e.g. the 'requested URL. Conversely, HTTP/SSL request routes 306(H/S) can ._ 8 potentially aggregate requests fro_rri many short-lived client connections and send:
9' them over a few, long-standing TCP connections .to hosts 108: Such connection aggregation can reduce the TCP connection processing overhead in 'hosts 108.
I i Request routers of other classes may correspond to other exemplary protocols besides HTTP. Far example, .a.request routes may be a SOAP request , 13 . routes. SOAP~request routers function analogously town H'TTP/SSI, request routei , is . 306(H/S). However, SOAP request routers specialize ,in routing SOAP
traffic.
's SOAP request routers understand SOAP headers and make routing decisions based Is on the SOAP headers as well as application -health and load.
Iz Both packet-level classification and forwarding (or packet=level routing) , Is and request-level routing can provide some form of layer-7 load-balancing. Layer i9 7' load balancing is descrihed'further below in the section entitled "Exemplary __ _ _ ._ zo. Connection Migrating yivith Optional _Tunneling and/or Application=Level ,Load i, : Balancing". . Packet-level routing provides read-only access to the inityal .portion of ~ , - . . .. _ . Za. a client's TCP.connection_data, and request-level.routingcprovides::read and.modify ., .. ...
z3 fl access to an entire data stream.
za Packet-level routing typically has several advantages over request-level zs routing. These advantages include transparency (client packets are delivered to Any Doete~ No, MSI=15201~.PATAPP
Copy provided by USPTO from the PAGR Image Database on 05-13-2004 hosts as-is, preserving source and destination IP addresses and port numbers), low z processing overhead (generatiy, forwarding traffic involves a route lookup), low 3 latency (individual packets are forwarded, and packets are not queued once the a TCP connection destination has been determined), and high-availability (generally, s a failure in a forwarder does not terminate the TCP connection). Request-level 6 routing, on the other hand, typically has the following advantages over packet-level routing: an ability to examine an entire data stream flowing to and from the s client; and an ability to transform a data stream, and even to split the data stream 9 among multiple hosts or aggregate data streams from multiple clients.
~o FICT 26 is a flow diagram 2600 that illustrates an exemplary method for ~ 1 routing incoming packets with regard to (i) session information and (ii) health and ~ z load information. Flow diagram 2600 includes eight blocks 2602-2616.
Although i3 the actions of flow diagram 2600 may be performed in other environments and 1~ with a variety of software schemes, FIGS. 1-3, 12, 1~3-20, 22, and 23B are used in ~ s particular to illustrate certain aspects and examples of the method.
16 At block 2602, an incoming packet is received. For example, a packet from ~ a client 102 may be received at a forwarder 302 of a load 'balancing unit 106. At is block 2604, it is determined if the received packet is for a preexisting session. For i9 example, forwarder 302 may consult a local DAM table 2206( ) to determine that zo the received packet is already part of a TCP/IP session.
zi Additionally, forwarder 302 may consult the local DAM table 2206( ) and zz determine that the received packet is not already part of a 'TCP/IP
session. In this z3 case, forwarder 302 provides the received packet to .a classifier 304, which checks za for a higher level session affinity for the received packet if it has a session zs reference. Examples for these actions are described above with particular Atty')ocka No. MSI-i520US.PATAPP
f.

reference to FIG. 24 and further below with particular reference to FIGS. 27 and z 28.
If the received packet is for a preexisting session (as determined at block a 2604); then flow continues at block 2606. At block 2606, a host.that is affinitized to the preexisting session is ascertained. For example, an affinitized host 108 may 6 be ascertained from the local DAM 2206( ) and/or l:he overall distributed DAM
2206 by forwarder 302 or classifier 304.
At block 2608, it is determined if the affinitized host is healthy. For 9 example, classifier 304 may consult a consolidated health and load cache 1208 to ao determine if the affinitized host 108 is healthy, especially for those received ~ packets that are part of sessions that are of a higher logical level than TCP/IP
,z sessions. The actions) of this block may be accomplished in conjunction with a 3 health and load handler 314.
,a If the affinitized host is healthy (as determined at block 2608), then flow is continues at block 2610. At block 2610, the received packet is routed to the 16 affinitzed host. For example, forwarder 302 (for TCP/IP sessions) or classifier 304 ,~ (for higher-level sessions) may route the packet to the affinitized host I08. In an ,g alternative implementation, classifier 304 may return the received packet to > 9 forwarder 302 for routing to the affinitized host 108 even for received packets that zo are part of higher-level sessions.
z~ If, on the other hand, the affinitized host is not healthy (as determined at zz block 2608), then flow continues at block 2612. Also, if on the other hand, the z3 received packet is not for a preexisting session (as determined at block 2604), then za flow continues at block 2612. At block 2612, a host is selected responsive to zs health and load information. For example, classifier 304 may select a host Atty Docket No. MS t ~ I '?OUS. PATAPP

from andlor using a health and load-related application allotment (e.g., from a z target application endpoint allotment response 1804) that is attained from health s and load handler 314. Examples for these actions) are described above with a particular reference to FIGS. 19 and _18 and further below with particular reference s to FIG. 30.
At block 2614, the received packet is routed to the selected host. For example, classifier 304 may route (optionally via forwarder 302) the packet to the s selected host 108. At block 2616, a route for a connection path to the selected host 9 is plumbed. For example, classifier 304 may add a session information entry to o DAM table 2206, especially at the DAM table 2206( ) that is local to the forwarder a 302 that provided the received packet to the classifier 304. This session iz information entry may be replicated in accordance wiith the instituted redundancy i3 policy for a DAM 2202 (e.g., of a session tracker 30$).
a The actions) of block 2614 and those of block 2616 may be performed in the order specifically illustrated, with those of block 2616 being performed prior ib to those of block 2614, with the actions partially or fully overlapping in any order, and so forth. It should be noted that the actions performed by classifier 304 as ,s described above may alternatively be performed by a request muter 306 (or more i9 generally traffic routing functionality 2012).
zo FIG. 27 illustrates an exemplary traffic routiing flow in the absence of zi failures. As illustrated, one or more load-balancing;-aware switches 202(LBA) zz front the remaining load balancing infrastructure 106 (not separately indicated).
z3 Forwarding and classifying functionality are distributed across three devices or za nodes. A first device includes forwarder 302(1) and classifier 304(1). A
second zs device includes classifier 304(2). A third device includes forwarder 302(2).
Atty Docket No MSI~1520US.PATAt'P

With classifier 304(2) executing on the second device and forwarder 302(2) executing on the third device, each device may be specially tuned for its respective 3 functions. For example, the hardware, software, firmware, some combination thereof, etc. of the second device and the third device may be adapted to support s the desired functionality without excessive over provisioning. Thus, the third s device that includes forwarder 302(2) may be akin to a switch and/or routes from a 7 hardware capability perspective, and the second device that includes classifier s 304(2) may be more akin to a server and/or personal computer from a hardware 9 capability perspective.
;o Although shown as three devices that are providing functionality across ~ four components, alternative logical and/or device-level configurations for ~z forwarding and classifying functionality are applicable to the exemplary traffic 3 routing flow that is described here for FIG. 27. Also, although the routing 1a destinations are shown as hosts 108, the descriptions herein of routing 1 s implementations may alternatively be applied more generally to a next node ,6 destination for the packet and not necessarily a final node that consumes the i ~ packet.
A DAM 2202 realization of session tracker 308 is used to implement DAM
I9 table 2206. However, session affinity preservers 1904 in general are also Zo applicable to the exemplary traffic routing flow of FIG. 27. Forwarder 302(1) z, includes DAM table portion 2206(1), and forwarder 302(2) includes DAM table zz portion 2206(2}. Incoming packets are routed to host 108(1) or host 108(2}.
z3 In a described implementation, DAM 2202 is a distributed, in-memory za table of "atoms" 2304 (e.g., keyword-value pairs, with optional metadata) having z; session information. DAM 2202 and DAM table 22t)6 is described further above H4 Any Docks No. MSI-1520IiS.PATAPP

t with particular reference to FIGS. 22-24. Any node in the cluster of classifiers 304 z may add, query, and delete atoms 2304. DAM 2202 maintains a highly available 3 DAM table 2206 that includes active (e.g., TCP/IP level) routes as well as higher-a level:session information.
s At ( 1 ), load-balancing-aware switches 202(LBA) direct an incoming packet 6 to forwarder 302(1). At (2), forwarder 302(I) consults its internal routing table, DAM table 2206( 1 ). When forwarder 302( 1 ) does not find an atomic entry s for this packet, it forwards the packet to its assigned and/or associated classifier, 9 classifier 304( 1 ).
to At {3), classifier 304(1) recognizes that the packet in this example is a TCP-~ SYN packet. Classifier 304(1) therefore treats the packet as a start of a new TCP
~z connection from a client I08. Using health and load information from a health ~3 and load handler 314 {not explicitly illustrated), classifier 304(1) determines that ~a host 108(1) should receive this TCP connection. Classifier 304(1) updates DAM
is table 2206( 1 ) that serves as the local routing table for forwarder 302( 1 ), and it also i6 inserts an atomic entry 2304 representing the route unto the overall DAM
2206.
o These may be separate operations, a single operation in which the TCP/IP-level s sessions of DAM table 2206 are located at forwarders 302, and so forth. DAM
19 2202 internally replicates this route to one or more other members of the cluster of zo classifiers 304 in accordance with its stipulated redundancy policy.
zi At (4), forwarder 302(1) directly forwards :>ubsequent packets for this zz connection to host 108( 1 ) without interacting with classifier 304( 1 ).

z3 can be used to mask, at least in part, the failure of a forwarder 302, a classifier za 304, or a forwarder/classifier pair 302/304. DAM 2202 can also be used, at least zs in part, to preserve client connectivity if load-balancing-aware switches 202(LBA) 8 S Atty Docks No. MS I ~ 1520US PATAPP
~:..~"~~,~,n , ,w.:.nm~r~,~.<,... ~.. ..,.,..
,.~~.,m,..~"~",~z"~.,~.,,..,h",~...,..~",",~.-.._-._ _....w.
...".......".__......

z inadvertently start sending packets for an established connection to a different z forwarder 302.
FIG. 28 illustrates an exemplary traffic routing flow in the presence of a failure(s). In contrast to the "failure-free" exemplary traffic routing flow of FIG.
s 27, a failure has occurred in a portion of the network load balancing infrastructure 6 106 (not specifically identified) of FIG. 28. Specifically, the first device, on which forwarder 302(1) and classifier 304{1) are resident and executing, fails after the s connection that is illustrated in FIG 27 is established: This failure is masked, at 9 least in part, by DAM 2202.
o At {1), load-balancing-aware switches 202(LBA) detect the failure of ~ forwarder 302( 1 ) and start forwarding packets for the connection to some other ,z forwarder 302 in the cluster. In this example, the other forwarder 302 is forwarder 3 302(2). Although FIG. 28 illustrates a failure sih~ation, load-balancing-aware ~a switches 202(LBA) may also send this traffic to forwarder 302(2) even if ~s forwarder 302(1) is still available. This non-failure-induced change of forwarders 16 302 may occur, for example, because load-balancing-aware switches 202(LBA) "forget" the affinity of this tragic to forwarder 302(1). The actions of notations is (2)-(5) apply to both the failure and the "forgotten affinity" situations.
At (2), forwarder 302(2) consults its routing table, DAM table 2206{2).
zo When it does not find a route for this packet, it forwards the packet to its classifier z2 304(2). At (3), classifier 304(2) recognizes that this packet is a "mid-connection"
22 TCP packet, and classifier 304(2) queries DAM 2202 for the route for this packet.
z3 DAM 2202 responds with the route for the connection from an atomic entry za that is associated therewith.
zs Atty Docket V0. MSI-1520US.PATAPP

1 At (4), classifier 304(2) plumbs the route in forwarder 302(2). An z exemplary protocol for plumbing routes is described further below. At (5), 3 subsequent packets for this connection that are directed to forwarder 302(2) are 4 routed directly to the correct host, which is host 108( 1 ) in this example, without consulting classifier 304(2).
6 Generally, a route plumbing protocol for communications between 7 classifiers 304 and forwarders 302 includes instructions to add and remove routes.
a More specifically, an add route instruction is sent from a classifier 304 to a 9 forwarder 302 in order to plumb a route from the forwarder 302 to a destination to host 108 for a given connection. 13y way of example, an add route instruction can 11 be provided to forwarder 302(2) from classifier 304(2) as indicated at (4) in FIG.
lz 28. The route (e.g., a key and corresponding value) is added to local DAM
table 13 2206(2) for quick access by forwarder 302(2) in the futlxre. In this example, la classifier 304(2) is a separate device from forwarder 302(2), so the route plumbing is protocol may be an inter-device protocol. However, the route plumbing protocol is may also be utilized for intra-device communications.
1~ In a described implementation, classifier 304(2) includes a connection la inventory 2802. With connection inventory 2802, classifier 304(2) keeps track of 19 the connections of any forwarders 302 (such as forwarder 302(2)) for which zo classifier 304(2) plumbs routes. To enable classifier 304(2) to keep track of the zl connections, including cessations thereof, forwarder 302(2) forwards final.packets zz for connections (such as a TCP FIN packet) to classifier 304(2). Classifier 304(2) z3 then deletes an entry in connection inventory 2802 that corresponds to the za connection and sends a delete route instruction to forwarder 302(2). Upon zs receiving the delete route instruction, forwarder 302(2) removes the corresponding Any Dxka No. MSI-1520US.PATAPP

route in DAM table 2206(2). In this manner, the classifying functionality in 2 conjunction with session tracking functionality can control the route tables, and 3 the routes thereof, that are used by the forwarding functionality.
Consequently, a forwarding functionality that is-. separated . onto a . different device may be s effectuated using high-speed, but relatively simple, hardware.
FIG 29 illustrates additional exemplary failover procedures for high availability of network load balancing infrastructure 106. Failover procedures for s two different failures, failure 2902 and failure 2906, are described. As illustrated, 9 network load balancing infrastructure 106 (not separ<~tely indicated) includes five to components: forwarder 302(1), forwarder 302{2), forwarder 302(3), classifier 1 304(1), and classifier 304(2).
l2 In a described implementation, each of these five components 302( 1 ), l3 302(2), 302(3), 304(1), and 304{2) corresponds to an individual device.
However, a similar failover procedures apply to environments in which different load balancing components share devices.
6 Initially at { 1 ], router/switch(es) 202 direct an incoming packet that 7 happens to be for a new connection to forwarder 302( 1 ). Because forwarder is 302(1) does not have a route for this connection in its local routing table, it sends ~ 9 the packet to classifier 304( 1 ) as indicated by the dashed double arrow at ( 1 ).
ao Classifier 304(1) first checks session information with reference to session zi tracking 308 for a possible higher-level session affinity. In this example, the aZ packet is not affinized to an existing session, 5o classifier 304(1) selects a host 108 z3 with reference to health and load information with reference to health and load za handling 314.
as Atty Docks No- MS ~ ~ 152~U5. PATAPP
_ xo cv... ,. wiy .. , .u.Yri%WU ~.,~ ..'~,H'NSa .>xn m enw.......,...
"...w....~,a,.. ronrts ~cyyp~~p~."",s,y~spt~,5$~pc.~,~,.7mmIFM~ W n~.,.ro,Y
n».w..., .....wn.:x..-..........w__-. _..... ......_..~ ,..,.~~.", ".,.~"y"
~:ft~vrx,.,.r Specifically, classifier 304( 1 ) selects host 108( 1 ) in this example.
2 Assuming the packet is for a TCP/IP connection, this TCP/IP session as linked to 3 host 108( 1 ) is added to DAM 2202 using an add atom 2204(A) function call by a classifier 304(.1 ). The initial packet is forwarded to host 108( I ) by classifier 304( 1 ) or forwarder 302( I ). Classifier 304( 1 } also plumbs a route in the local 6 routing table of forwarder 302(1). Subsequent packets are forwarded to host ~ 108(1) by forwarder 302(1) without further interaction with classifier 304(1}.
s At some time during connection [ 1 ], there is a failure 2902 at forwarder 9 302(1). With load-balancing-aware router/switch(es) 202(LBA), this failure Io is detected. As a result, at point 2904, router/switch(es) 202 direct later packets n that would have been sent to forwarder 302( 1 ) along connection [ 1 ] to another 12 forwarder 302, which is forwarder 302(2) in this example.
i3 Forwarder 302(2) thus receives future packets along a connection [2].
is Because forwarder 302(2) does not have an entry in its local routing table for the is packets that were formerly directed to forwarder 302(1), forwarder 302(2) sends is the first received packet of connection [2] to the classifier to which it is m assigned/associated. In this example, forwarder 302(2) is assigned to classifier is 304(2) as indicated by the dashed double arrow at (2).
l9 Classifier 304(2) uses a query atom 2204(Q) function call to attain the Zo atomic entry 2304 (not explicitly shown) from DAM 2202 that is associated with i the existing TCP/IP connection. This atomic entry 2304 is provided through DAM
z2 2202 of session tracking 308 via a return atom 2204(IZ) function call.
Classifier z3 304(2) extracts the host 108(1) that is affinitized with this TCP/IP
connection from Za the returned atomic entry 2304. Classifier 304(2) forwards the first received Zs packet for connection [2] to host 108{1) and also plumbs a route in the local Atty Docks No. MS!-1520US.PATAPF

routing table of forwarder 302{2). Subsequent packets are forwarded to host z 108( 1 ) by forwarder 302(2) without further interaction with classifier 304(2).
The above descriptions focus predominantly on failures of individual a forwarder 302 components. However, classifier 3()4 components can also fail.
s For example, at some point, there is a failure 2906 at: classifier 304{2).
Forwarder 6 302(2) detects failure 2906 when it attempts to conserve classification services or through noticing a lack of some aliveness indication such as a heartbeat-type s indicator. To handle failure 2906, forwarder 302(2) is reassigned or re-associated 9 with a different classifier 304, which is classifier 304(1} in this example.
Future ~o classification functionality is provided to forwarder 302(2) by classifier 304(i) as n indicated by the dashed double arrow at (3).
~z FIG 30 illustrates an exemplary operational implementation of traffic 13 routing interaction with health and load information. Forwarder 302 and classifier la 304 interact with health and load handler 314 in order to route packets to hosts r s 108( 1 ), 108(2) . . . 108(n). Although a forwarder 302 and a classifier 304 are is illustrated, the exemplary operational implementation is also applicable to a m request router 306 (or traffic routing functionality 20112 in general).
~ a As illustrated, host 108( 1 ) includes application endpoints IP 1, IP3, and IP4 19 for application #1, application #l, and application #2, respectively. Host 108(2) zo includes application endpoints IP2 and IP6 for application #1 and application #2, z~ respectively. Host 108(n) includes application endpoint 1:P5 for application #2.
zz These hosts 108( 1 ), 108(2) . . . 108(n) and application endpoints IP 1, IP2, IP3, IP4, z3 IPS, and IP6 are monitored by health and load handler 314 (e.g., using health and za load infrastructure 1202, consolidated health and loadl cache 1208, etc.).
zs 90 ' AttyDockttNo.MSI-IS:OUS.PATAPP
n»~ _ _u ., . ~. ~,.... .y_... ."" . ..._.. __ _...._. .,..~, ,~, y .,,~,.,N,.x.~,.a;~wr~a,,,~g F" ...... . m"-...,.~.,.P...,..... _.___. __...
_.._ .. ___.n...~m, ,.., In a described implementation, at ( 1 ) classifier 304 requests one or more z application endpoint allotments (e.g., via at least one target application endpoint 3 allotment request 1802) in an environment using a token allotment scheme 1806.
a Health and load handler 314, in this example, responds by providing token s allotments 3002 (e.g., via at least one target application endpoint allotment 6 response 1804).
Specifically, a token allotment for application #1 3002( 1 ) and a token s allotment for application #2 3002(2) are available to classifier 304. Token 9 allotment for application # 1 3002( 1 ) initially provides 40 tokens for IP
I , 3 5 tokens o for IP2, and 25 tokens for IP3. Token allotment for application #2 3002(2) provides 10 tokens for IP4, 72 tokens for IPS, and 18 tokens for IP6. For each lz new connection that is allocated a routing to an application endpoint by classifier i3 304, a token is consumed by classifier 304.
d At (2), forwarder 302 receives an initial incoming packet for a new is connection. Because no routing for this new connection is present in local DAM
6 table portion 2206 of forwarder 302, forwarder 302 forwards the initial packet to m classifier 304 at {3).
At (4), classifier 304 {e.g., after determining tl-~at the initial packet does not 19 include a session reference for a higher-level session) selects an application zo endpoint (and thus a host IO$) responsive to health and load information.
z~ Specifically, for a new connection that is to be served. by application #1, classifier zz 304 can select any of IP 1, IP2, and IP3 if a token for the respective endpoint still 23 exists.
zai~ Classifier 304 can consume tokens in any of many possible manners. For as '~ example, classifier 304 may use a round-robin approach regardless of the number Any Docker No. MS I-1520US~ PATAPP
_..~..~.-».~..,.~.r ~.~,.. ~ <--------- -~. -R~»...~--.r~..,.a,~,m. ...
a___._.__.~._.~.,~,.__. _.. _.

i of tokens per endpoint. Alternatively, classifier 304 may simply start from IP 1 and z progress through IP3 while consuming all tokens for each endpoint before moving 3 to the next endpoint in a linear approach. Also, classifier 304 may consume a a token from the endpoint-defined-set of tokens that currently has the greatest s number of tokens at any one moment. Using the latter approach, classifier 6 selects IP1. Other approaches may also be employed.
As illustrated, classifier 304 consumes a token for application endpoint IP2.
s Consequently, the token set for IP2 is reduced from 35 tokens to 34 tokens as a 9 token is consumed. Also, the initial packet for the new connection is to be routed io to application endpoint IP2.
At (SA), the initial packet is forwarded from classifier 304 to application iz endpoint IP2 of host 108(2). Before, during, or after this forwarding, classifier l3 304 at (SB) plumbs a route for this connection in local DAM table portion 2206.
is Classifier 304 may also add an atomic entry 304 for this session into DAM
table I s 2206 for distribution and replication purposes. At (6), future packets for this is connection/session are forwarded from forwarder 302 to application endpoint 0 of host 108{2) using the local routing table of forwarder 302 as realized by local 18 DAM table portion 2206 in FIG. 30.
FIG. 31 illustrates exemplary high availability mechanisms for network zo load balancing infrastructure 106. Specifically, exemplary failure detection 3104, z~ exemplary failure handling 3106, and exemplary failure recovery 3108 are shown.
Zz These exemplary high availability mechanisms are described with regard to 23 different network load balancing infrastructure 106 components. The network za load balancing infrastructure 106 components include a forwarder 302, a classifier is 304, a request router 306, a session tracker 308, and a health and load handler 314.
92 Aay Docket No MSI-1520US PATAPP
.m ,..-nmwra.~x ..a, ,."...7,rsamar_ . ....,.m ,.r.~.w ...,.._ ..m..." " .-.a~c.s.na?mr~rtH~, .._~~..:~~~~Nan.~s~.~'~..~p..m~auu,-s.,y.tpt~,.r'~'~C~'n~.,r..rmw~..a< .m .. ,..._...,.._...... _ i i At 3102(A), forwarder 302 undergoes a local failure. At 3104(A), at least 2 one load-balancing-aware switch detects the failure. To handle local failure 3 3102(A), packets are redirected to other forwarders) at 3106(A) by the load-a balancing-aware switch. To recover from the failure of forwarder 302, routes that s were stored locally at forwarder 302 are rebuilt at 3108(A) at the forwarders) to 6 which packets are redirected using a distributed session tracking manager and a table thereof such as a DAM and a DAM table thereof. The distributed session s tracking manager may therefore include data redundancies of one or more levels.
At 3102(B), classifier 304 undergoes a local failure. At 3104(B), at least ~o one forwarder detects the failure. To handle local failure 3102(B); packets are > > redirected to other classifiers) at 3106(B) by the forwarder detecting the failure.
~z To recover from the failure of classifier 304, session information that was stored i3 locally at classifier 304 are rebuilt at 3108(B) at the classifiers) to which packets are redirected using DAM. This session information may be, for example, session i s information of a higher Ievel than baseline TCP/IP connections. Also, such i6 session information may be considered as part of session tracking infrastructure 1 ~ that is resident on the same device as classifier 304.
1 s At 3102(C), request muter 306 undergoes a local failure. At 3104(C), at ~9 least one forwarder and/or load-balancing-aware switch detect the failure.
To zo handle local failure 3102(C), packets are redirected to other request router(s) at 2i 3106{C) by the forwarder and/or load-balancing-aware switch. Individual current 22 logical requests on which request router 306 is working upon the occurrence of 23 local failure 3102(C) may be lost unless each such individual logical request is Za replicated while the request is being serviced. To recover from the failure of is request router 306, session information and/or routes that were stored locally at 93 Atty Do:ket Na. MS1.1520US.PATAPP
~.. , _.. ;... ~., . ,. . , , __ ~ _..
...m,x.ra . ~,..~ n,w~rus.:~...w, ..~.~rm,.~.~~. ~~ ,..,.,.... _._... ~
,~"._..~ ",>",~. ,_.., ,.,m ........... __ __.._.,~,s"~.,.~.,..~~--.~.....
_.......__ ~__"",.,"",""_~,".,e,._ .. ........___,..._.,_.a.n_w,-,-, request muter 306 are rebuilt at 3108(C) at the request router(s) to which packets z (and thus new logical requests) are redirected. The session information rebuilding 3 may be effectuated using DAM. Again, such session information may be a considered as part of session tracking infrastructure that is resident on the same device as request router 306.
At 3102(D), session tracker 308 undergoes a local failure. At 3104(D), at Ieast one forwarder and/or classifier detect the failure. For example, if session s tracker 308 is resident on a same device as a classifier, then a forwarder or another 9 classifier may detect the failure. If session tracker 308 is resident on a separate ~o device, then a classifier may detect the failure. To handle 'local failure 3102(D), 1 ~ data redundancy of one or more levels and distribution across multiple devices are ~z instituted at 3106(D) for the tracked session information. It should be noted that i3 the redundancy and distribution are instituted prior to~ failure 3102(D).
To recover is from the failure of session tracker 308, session information from the tables of the ~s DAM may be redistributed and re-replicated at 3108(D) across at least two devices 16 (if not already so distributed and sufficiently replicated) in order to handle a > > second level of failure.
t s At 3102(E), health and load handler 314 undergoes a local failure. At 19 3104(E), at least one classifier andlor request rou.ter detect the failure.
For zo example, a component that is receiving health and load information from health z1 and load handler 314 may detect a failure if health and load handler 314 becomes zz non-responsive, especially if health and load handler 314 is resident on a different z3 device from that of the inquiring component. To handle local failure 3102(E), za cached health and load data redundancy and intrinsic failure handling are zs employed at 3106(E) for the health and load information.
Atty Docks No. MS I-: 520US. PATAPP
<" ,"..., s.K,~,~,..;~;. ,""~~.;~~.:,;, ..H,w;,..u~.~.::~..~,r " ...
,.~..,~.,.... x,.,w"u.,"~" . ~,",~~,~,~".;~-.,~_~..~.. ,-.
_........_..s"""".",~,..,_..~..__,~.... ....... _~.._..._"
,.~......,._._...._.

i For example, each health and load handler 3I4 can include a consolidated z health and load information cache 1208 that duplicates information in health and 3 load tables 1204 on multiple hosts 108. Also, consumers of the health and load a information 1206 of a given health and load handler 314 may be located an a same s device as health and load handler 314 so that failure of health and load handler 6 314 is intrinsically acceptable. Similarly, the authoritative version of a respective portion of health and load information 1206 is located on a respective host 108 so $ that failure of the host 108 renders the loss of the respective portion of the health 9 and load information acceptable.
~o To recover from the failure of health and load handler 314, a given network n load balancing component that consumes health and load information may query a ~ z different health and load handler because each such health and load handler ~ 3 includes a consolidated cache of health and load handler information.
Also, when ~a health and load handler 314 is again accessible, message protocol 1500 may be ~; used at 3108(E) to rebuild its consolidated cache of health and load information.
~ 6 Using these exemplary high availability mechanisms, failures of network load o balancing infrastructure 106 components can be detected, handled, and recovered ~s ~ from in order to mask such failures from clients 102.
X911 Exemplary Connection Mi~ratin zo with Optional Tunneling and/or Eipplication-Level Load Balancing zi This section describes how connection manipulation, such as connection zz migration, may be utilized in network 1~ad balancing. This section primarily z3 references FIGS. 32-39 and illuminates connection migrating functionality such as za that provided by connection migrator 310 (of FIG :3). As described above with zs reference to FIGS. 3 and 4, each incoming connection at load balancing Atty Docket No. MSI-IS20US.PAT.4PP

1 infrastructure 106 may be terminated thereat. Afterwards, the connection may be z migrated to a host 108 such that the connection is then terminated at the host 108.
3 Connection migrator 310 is capable of performing tl-iis connection migration and .a . may be located partially at hosts 108 to effectuate the migration. .Such connection s migration maybe performed in conjunction with application-level load balancing 6 by a classifier 304 and/or using tunneling via tunneler 312.
FIG. 32 illustrates an exemplary approach to application-level network load s balancing with connection migration. Application-level, or layer-7, load balancing 9 pertains to making load balancing decisions with regard to an application that is to ;o handle a connection. To perform application-level load balancing, load balancing I ~ infrastructure 106 usually takes into consideration a data portion of a connection.
~z Unless request routing is employed, a classifier 304 typically takes a peek at the I3 initial portion of a connection and then migrates the connection, in conjunction ~a with connection migrator 310, to a selected host 108.
1; For application-level load balancing in a TCP-lbased environment generally, 16 classifiers 304 peek at the initial portion of a client's TCP data when deciding a where to forward the client's TCP connection. Thus, application-level logic ~a examines the client's data and makes load balancing decisions based on that data.
~9 For example, if a connection is an (unencrypted) HTTP connection, a classifier zo 304 can take a peek at the HTTP header of the first HTTP request in the zl connection, and it can make routing decisions based on some portion of the zz content of the header (e.g., the URL, a cookie, etc.). Although application-level z3 load balancing, connection migration, and tunneling are applicable to other za protocols, TCP/IP is used predominantly in the examplles herein.
2~
Atty Docket No. MSI-1520US.PATAPP

As illustrated, load balancing infrastructure 106 (not specifically indicated) z includes a forwarder 302, a classifier 304, a tunneler 312, and a connection 3 migrator 310 (and possibly e.g. load-balancing-aware router/switches 202(LBA)).
a Forwarder 302 corresponds to the virtual IP address and forwards packets to hosts s 108 in accordance with host selections by classifier 304. Although not specifically 6 shown in FIG. 32 for clarity, hosts 108 also include connection migrator 310 functionality and tunneler 312 functionality.
s In a described implementation, forwarder 302, classifier 304, and 9 connection migrator 310 (at classifier 304 and on hosts 108), along with TCP
jo protocol software on classifier 304 and hosts 108, cooperate to provide connection i s migration. The connection migration illustrated in FIG. 32 is for a connection iz from client 102(1) that is initially terminated at classifier 304. After connection i 3 migration, the connection from client 102( 1 ) is terminated at host 108( 1 ). Once is the connection is terminated at host 108( 1 ), packets for the connection may be tunneled using tunneler 312 (at forwarder 302 and host 108( 1 )).
r s At ( 1 ), client 102( 1 ) sends a SYN packet to forwarder 302 to signal the start m of a new TCP connection. At (2), forwarder 302 for ards this packet to classifier s 304. At (3), classifier 304 accepts the TCP connection on behalf of a host 29 (whose identity is not yet known because the actual target host 108( ) has yet to be zo selected). In TCP protocol terms, classifier 304 sends a SYN-ACK packet to z~ client 102( 1 ).
zz At (4), client 102( 1 ) begins sending data. (The initial SYN packet may also z3 contain data.) The data is processed by classifier 304, which can consult za application-specific logic. The application-specific logic can relate to which host zs 108 is capable of handling or best handling which types of requests or Atty Docktt Vo. MSI-1520US PATAPP
mnnh... ,.. ,. ,m,mauH.. .~.d.,."~,~aw~: .a., ~. ,u.A>wr -.,.. -.. .,".m" ,n -v.. M , . ., .,.~.,..".- . ., ,~~m ,.."...,."..."r..~"..,..~...

I connections. Hence, classifier 304 uses the data, as well as application health and 2 load information from health and load handler 314 and optionally application 3 session information from session tracker 308, to determine a host 108 that is better 4 or best suited to handle this connection from client 102( 1 ). In this example, host s 108( 1 ) is selected.
At (5), classifier 304 sends a "binary blob" th<~t represents the state of the 7 TCP connection to host 108( 1 ). This connection state is aggregated with s cooperation from a TCP stack on classifier 304 by connection migrator 310.
The 9 binary blob contains data from client 102( 1 ) that lhas been acknowledged by o classifier 304 and TCP parameters such as the TCP,~IP 4-tuple, initial sequence ~ numbers, and so forth.
iZ At (6), a connection migrator 310 component on host 108(1) (not explicitly ~ 3 shown in FIG. 32) "injects" this connection into a TCl? stack on host 108( 1 ). This is connection state injection is performed in cooperation. with the TCP stack on host is 108(1), making it appear to applications 316 on host 108(1) that this connection ib was originally accepted by host 108(1) itself. Client 102(1) is unaware of the connection migration.
At (7), classifier 304, in cooperation with the 'fCP stack on classifier 304, l9 silently cleans up the internal state maintained for this connection.
Classifier 304 ao also adds a route in a local routing table of forwarder 302 that indicates host z1 108(1) as the destination for packets of this connection.
Zz At (8), subsequent packets for the connection are routed by forwarder 302 3 to host 108( 1 ). These packets may be treated the sarr~e by forwarder 302 as those Za packets for connections that are classified and routed without using connection is migration. These subsequent packets may optionally be tunneled from forwarder Atty Docket No. MS I-1520US.PA7APP

302 to host 108(1) using tunneler 312. 'Tunneler 312 is also illustrated (using z dashed lines) at connection migrator 310 at classifier 304 because certain parameters) used by tunneler 312 may be determined during a connection a migration and/or associated with a connection being migrated. Exemplary s implementations for tunneler 312 are described fmrther below with particular 6 reference to FIGS. 38 and 39.
FIG 33 is a flow diagram 3300 that illustrates an exemplary method for s migrating a connection from a first device to a second device. Flow diagram 9 includes seven blocks 3302-3314. Although FIGS. 32 and 34-37 focus primarily io on connection migration in a network load balancing environment, connection i i migration as described herein may be effectuated between two devices in general ~z that each include connection migration functionality, such as that of connection 3 migrator 310.
a At block 3302, a connection is accepted at a first device. For example, a 1 s first device may terminate an incoming connection in accordance with one or more 6 protocols of a protocol stack portion of a network stack. At block 3304, data is a received for the connection at the first device. For example, this data may be is received in an initial packet that requests the connection or in one or more packets i9 that are received subsequent to an acceptance of the connection.
zo At block 3306, a connection state for the accepted connection is aggregated zi from a protocol stack (or more generally from a network stack) at the first device.
zz For example, a protocol state of the one or more protocols of the protocol stack z3 may be compiled and aggregated with any received data that has been za acknowledged. At block 3308, the connection state is sent from the first device to zs 99 Atty Dxket No MSI-3520US PATAPP

1 a second device. For example, the aggregated information of the connection state z may be sent using a reliable protocol to a second devic;e.
At block 3310, the connection state for the connection being migrated is a received from the first device at the second.device: -At block 33.12, the connection s state is injected into a protocol stack (or more generally into the network stack) of 6 the second device. For example; the connection rr~ay be rehydrated using the protocols of the protocol stack of the second device such that programs above the s protocol stack level are unaware that the connection is a migrated connection.
9 More specifically, the protocol state may be infused :into the protocol stack. The ~o aggregated data of the connection state is also incorporated at the second device.
~ At block 3314, the connection is continued at the second device. For example, the lz connection may be continued at the second device ais if the connection was not 3 previously terminated elsewhere.
is FIG. 34 illustrates an exemplary approach to connection migration from the ~ s perspective of an originating device 3400. Connection migration in originating ib device 3400 is effectuated, at Ieast partly, by connection migrator 310. In a o described implementation, originating device 3400 is a device that is part of ~s network load balancing infrastructure 106. For example, originating device 9 may comprise a classifier 304, possibly along with a forwarder 302, a request zo router 306, and so forth.
zi As illustrated, originating device 3400 includes as parts of its network stack zz a physical network interface (PNI) 3410, a PNI miniport 3408, a protocol-z3 hardware interface 3406, a protocol stack 3404, and a socket layer 3402.
za Originating device 3400 also includes load balancing functionality 106, such as a zs classifier 304 at an application level and connection migrator 310.
Specifically, Atty Docket No. MSi-f 5: OI;S.PATAPP

connection migrator 310 includes a migrator intermediate driver 3414 and a z migrator shim 3412. Connection migrator 310 is capable of offloading a 3 connection from originating device 3400.
a In a described implementation, physical network interface 3410 may be a s network interface card (NIC) (e.g., an Ethernet NIC), a wireless interface, and so 6 forth. Although only one physical network interface 3410 is shown, a given device may actually have multiple such physical nf;twork interfaces 3410 (i.e., s originating device 3400 may be mufti-homed). Eaclz physical network interface 9 3410 typically corresponds to one or more physical network addresses.
ao PNI miniport 3408 is a software module that understands and interfaces i l with the specific hardware realization of physical network interface 3410.
IZ Protocol-hardware interface 3406 is a layer that includes one or more respective i3 interfaces between one or mare respective protocols and PNI miniport 3408.
is Protocol stack 3404 includes one or more respective modules that are each ~s directed to one or more respective protocols. Examples of such protocols are 16 described further below with reference to FIGS. 36 and 37. In a transient context, ~ protocol stack 3404 includes a protocol state 3420 for each connection existing at ~s originating device 3400. A socket layer 3402 lies between a program such as load i9 balancing functionality 106 and protocol stack 3404. Socket layer 3402 provides zo APIs between load balancing functionality 106 and protocol stack 3404, and it z~ enables programs to register for connections, among other things.
zz Migrator intermediate driver 3414, or more generally migrator driver 3414, z3 is located at protocol-hardware interface layer 3406. Migrator shim 3412 is za located transparently between protocol stack 3404 and socket layer 3402.
101 Atty Docket No MSI-1520US PA7APt "..- ,u ,e _.ax. p.....z , . .__ .,._d.ar,av M.. ~~%elF~'a~:~'uxa=~a ~.. ~ ~-aPmw=e",m..--_. Y_ .__-._ When an initial packet (not shown) reque sting a new connection is z presented to originating device 3400, the packet is directed upward from physical 3 network interface 3410, to Pi\ITI miniport 3408, through protocol-hardware interface layer 3406, and to protocol stack 3404. As the packet traverses the one or more protocols of protocol stack 3404, protocol state 3420 is created thereat.
6 Also, as a result of this initial packet or as a consequence of load balancing 7 functionality 106 accepting the connection to take a peek at the request, data 3416 s arrives at originating device 3400.
In operation, migrator intermediate driver 3414 diverts a copy of data 3416 to to the logic of connection migrator 310. When load balancing functionality ~, issues a migrate connection function call, the migrate function call is passed to a ~z topmost layer of protocol stack 3404 so that connection state aggregation ~3 may commence. Protocol state 3420 is compiled from the one or more protocols 1~ of protocol stack 3404. In a TCP/IP implementation, protocol state 3420 may ,s include (i) destination and source TCP ports and IP addresses (e.g., a 16 tuple), (ii) TCP window state, (iii) initial sequence numbers, (iv) timeout m information, (v) IP fragment ID, (vi) routing information, and (vii) so forth.
is Connection state aggregation 3418 also aggregates data 3416 that has been 19 diverted to connection migrator 310 and that has already been acknowledged from zo originating device 3400 (e.g., by load balancing functionality 106). This 2~ aggregated connection state 3418 includes protocol skate 3420 and data 3416 (and zz optionally other connection-related information). Aggregated connection state z3 3418 is then sent as a binary blob 3422 away from originating device 3400 toward za a targeted device using a reliable protocol. This binary blob 3422 may also be zs bundled with a flow identifier if the connection is to be tunneled subsequently 1 O2 Atty Docket No. MS I-1520US. PATAPP

with tunneler 312. Flow identifiers with tunneling are described further below z with particular reference to FIGS. 38 and 39.
FIG. 35 illustrates an exemplary approach to connection migration from the a perspective of~a target device 3500. Target device 3500 i.s similar to originating s device 3400 with respect to the various illustrated layers/modules, including 6 connection migrator 310. As illustrated however, at least one application 316 at an z application level is interfacing with socket layer 3402. Target device 3500 may s therefore comprise a host 108. Also, connection migrator 310 is capable of 9 uploading a connection from originating device 3400.
o In a described implementation, application 315 is the destination of the i connection-initiating packet received at originating device 3400. From originating ~z device 3400, target device 3500 receives binary blc>b 3422. Binary blob 3 includes the connection state associated with the connection being migrated to is target device 3500 and optionally a flow identifier. This connection state includes is protocol state 3420 and acknowledged data 3416 (and possibly other connection-6 related information).
In operation, when binary blob 3422 reaches protocol-hardware interface ~s ~ layer 3406, migrator intermediate driver 3414 recognizes it as a blob for 19 connection migration and diverts it. The connection state is injected at 3502 to zo create the appearance to application 316 that the connection was originally z~ terminated at target device 3500.
zz Specifically, protocol state 3420 of injected connection state 3502 is infused 23 into protocol stack 3404. In a described implementation, protocol state 3420 is za infused first at higher-level protocols and then at lower-level protocols of protocol zs stack 3404. After protocol state 3420 is infused into protocol stack 3404, data Atty Docket No. MSI-1520US.PATAPP
.....o ,. . <,a.. _,r.b~.5.._,. ,. wm ...~<. .--.<,... ~~.g.~,r , , mtk.ry.xgE-5.iu,.~a.~..na u?...r~."g:.~g"b..xm.avr.W.<.-,wa;.._.w-,~n~.-.o..----.-- -_.._ 3416 can be indicated up to application 316. This data 3416 can be provided to z application 316 as if it were part of a newly and locally terminated connection.
After connection state injection 3502 is completed, the connection initiated a by the . packet received at originating device 3400 is successfully migrated s therefrom to target device 3500. Subsequent packets for the connection may be 6 forwarded directly to target device 3500 without passing through originating device 3400, or at least with only simple routing and :no application-level analysis s being applied thereto. Optionally, these packets may be tunneled such that 9 migrator intermediate driver 3414 effectively operates as a software-based virtual is NIC that is bound to the virtual IP address.
" FIG. 36 illustrates an exemplary approach to an offloading procedure 3600 lz for a connection migration. Migration offloading procedure 3600 illustrates a additional exemplary details for a connection migration by an originating device a 3400. As illustrated, general protocol stack 3404 includes a TCP stack 3404(T), an is IP stack 3404(I), and an address resolution protocol (ARP) stack 3404(A).
ib However, other specific protocol stacks 3404( ) may alternatively be employed.
,~ By way of example, protocol-hardware interface layer 3406 may be ,s realized as a network driver interface specificatio~a (NI~IS)-based layer in a 19 Microsoft Windows~ operating system (OS) environment. Also, socket layer zo 3402 may be realized as a Winsock~ layer in a Microsoft~ Windows~ OS
z, environment.
zz In a described implementation, migrator interniediate driver 3414 includes z3 protocol-hardware interfaces 3406 at the junctions to ARP stack 3404(A) and to za PNI miniport 3408. Migrator intermediate driver 3414 serves as an offload target zs in migration offloading procedure 3600. The offload target is a protocol-hardware 4 Atty Dockct No. MSI-1520US.PATAPP
. n ~G.~. ~.., .~,"~r.,".e~ ~ss,n >.~ .~.;~a.nsb ,., .... _..x. -a-... .,.,...
.. , " . "...,w,~.,", ~" ~ a ,,. ~; ..., ~-~, ..-.~ w., .. ... ... . , .. ..., _ . a." ..,...-...-,."~...~. m..~,....~-....~... _ _ _. .

i interface 3406 miniport as illustrated in this example. In a migration uploading z procedure 3700 (as in FIG. 37), rnigrator intermediate driver 3414 serves as an 3 upload diverter.
More specifically, migrator intermediate driver 3414 is .bound to each s physical network interface 3410 through which a~ TCP connection may be 6 migrated. Migrator intermediate driver 3414 usually operates as a pass-through driver by passing packets upwards or downwards in the network stack without s otherwise interacting with the packets. However, migrator intermediate driver 9 3414 does interact with packets related to connection migration (optionally ,o including subsequently tunneled packets).
Responsibilities of migrator intermediate driver 3414 include: (i) the Iz acceptance of migrate offload requests; (ii) the aggregation of the protocol state i3 information that is related to the TCP connection being migrated as compiled from ~a the specific protocol stacks 3404( ), along with acknowledged data to produce the ~ s connection state information; and (iii) the transmission of the aggregated ,6 connection state to a targeted device 3500 for a migration uploading procedure 7 3700. A reliable wire protocol for such transmission ~rraay be shared with that used ,g by the session tracking components 2002 and 2010 to send and receive session 9 information messages 2008 (e.g., as described above with reference to FIG.
20).
zo Another responsibility of migrator intermediate driver 3414 (e.g., in a zi migration uploading procedure 3700) is to initiate the uploading of migrated zz connections that it receives from other devices and to buffer any incoming packets z3 related to the migrating connection while it is in the process of being uploaded. To za upload the connection, migrator intermediate driver ?.414 sends an upload request zs to migrator shim 3412. Migrator shim 3412 issues an inject call down into 1 OS Atty Doc':et No. MSI-1520US.PATAPP
,. <,.. . . .., " ~. _"~..~., ,.. ~..~~~. ,.s.. - ~ _,.,.:..., ,~ ."~..~",., ~.~.~r~..~.,~~r.:..~",.~.~ :..~ N ..err"~-~~~~.,.~.~~ ~~~ < <.~~..._»-.>.,.....~."..__-__..__._..

protocol stack 3404 at TCP stack 3404(A) to instantiate the connection in the a protocol stack 3404 portion of the network stack.
Migrator shim 3412 exposes a client interface to TCP stack 3404{T) and a exposes a provider interface to socket layer 3402. Pvligrator shim 3412 has two roles: (i) to initiate connection migration offload procedure 3600 on an originating 6 device 3400 and subsequently migration upload procedure 3700 on a targeted device 3500 and (ii) to mediate the classification process between a host s application 316 program, a load-balancing classifier 304 program, and socket layer 9 3402. Migrator shim 3412 and migrator intermediate driver 3414 are both further ~o n described below with reference to FIGS. 36 and 37.
For an exemplary migration offloading procedure 3600, the migration of a Iz TCP connection is performed after classifier 304 classifies the incoming TCP
i3 connection using one, two, or more packets thereof. Migration offloading a procedure 3600 is described at points < 1 > through <7=>.
i5 At <1>, an initialization is performed prior to classification operations.
6 Protocol stack 3404 makes queries at protocol-hardware interface layer 3406 to m determine what offloading capabilities, if any, are available. Migrator ~s intermediate driver 3414 indicates that connection migration offloading is ,9 available and propagates the query down to PNI miniport 3408. If a TCP
chimney zo offload ability is provided by a physical network interface 3410, PNI
rniniport 21 3408 also so indicates. TCP chimney offload enables some TCP/IP processing to Zz be offloaded to the hardware of physical network :interface 3410 and involves z3 some compiling of protocol state 3420. Consequently, some compiling and Za aggregation logic may be shared between the two offloading mechanisms.
106 Atty Docket No U.tSi-i SZOtfS PAT.1PP
.~ . _v.~-....._. ..... ~ s...~.. . ..,_ ,._a..",.~. Q ,.,..
:~.;rr~..r,3.ras.~.a_w~.~.~..~.......,a._.,"~,"..,,.h-c.,.
a.."..""~",r~.<...., .. ...,..,..-..,."_. _..~,_ .... _._ At <2>, once a TCP connection has been classif ied, classifier 304 initiates a z TCP connection migration to a selected host 108. Specifically, a migration 3 command indicating a targeted device 3500 is issued via socket layer 3402 to a migrator,shim 3412.
At <3>, migrator shim 3412 initiates TCP connection migration to compile 6 the TCP protocol state. Specifically, migrator shim :3412 invokes a TCP
initiate 7 migrate offload API (or more generally a migrate connection function call or s migrate connection command). This routine compiles the relevant state for the 9 specified TCP connection that is used to reinstate the connection on the targeted to device 3500. The compiled protocol state 3420 includes state from the " intermediate stack layers, including TCP stack 3404(T), IP stack 3404(I), and ARP
iz stack 3404(A).
,3 At <4>, once protocol stack 3404 has compiled protocol state 3420 for the a TCP connection being migrated, it invokes an initiate; migrate offload API
on the miniport to which it is bound; in this example, that miniport is migrator 16 intermediate driver 3414. 1=Iowever, in practice, there may be other intermediate ,~ drivers inserted between protocol stack 3404 and xnigrator intermediate driver js 3414, such as IP QoS. If so, those IM drivers may participate in the migration, if 19 relevant, by compiling/aggregating their state to the connection state information zo for the connection being migrated. Intermediate drivers continue to propagate the zl initiate migrate offload call down the network stack, which eventually results in zz execution of a migrate offload handler at migrator intermediate driver 3414. At z3 this point, migrator intermediate driver 3414 also aggregates any acknowledged za data with the remaining connection state for transfer of the TCP connection to zs targeted device 3500.
Atty Docks No. MS1-1520US.PATAPP

; At <5>, after storingieopying connection state information for the TCP
z connection being migrated, migrator intermediate driver 3414 notifies the network 3 stack that the migration is in its final stages by invoking an initiate migrate offload a complete API. This initiate migrate offload complete .API follows the reverse path s up the network stack, through the same intermediate drivers (if any), and 6 eventually to protocol stack 3404. As each layer processes this call, state information that is associated with the migrated connection may be released.
Until s the processing of this call is complete, each layer may send updating notifications 9 down the network stack to update any part of the connection state that has changed ;o since the migration was initiated.
At <6>, when the initiate migrate offload complete routine reaches TCP
;z stack 3404(T), TCP silently (i.e., no reset is sent to client 108) closes the ;3 connection, flushing all state associated with the migrated connection, and ~a propagates the initiate migrate offload complete call to migrator shim 3412. At ;s this point, the network stack is free of any residual knowledge of the migrated ~s TCP connection.
At <7>, when the initiate migrate offload complete call returns to migrator ;8 intermediate driver 3414 (via the migrator shim 3412 portion of connection ;9 migrator 310), the migration of the TCP connection .from originating device zo to targeted device 3500 may commence with the transfer of the connection state zl thereto. The connection state may be transferred asynchronously and reliably.
zz Once migration is initiated, originating device; 3400 is also responsible for zs ensuring that subsequent data from client 108 is forwarded to target device 3500.
za Consequently, even after the connection is successfully migrated to the target, the zs originator retains some amount of state for the connection (e.g., a routing table Atty Docket No. MSI-1320US.PATAPP

i entry) in order to properly route subsequent packets to the target. When the z connection is terminated, the target notifies the originator to enable it to purge 3 whatever residual state remains for the migrated connection.
a Furthermore, as a consequence of the asynchronous nature of the s connection migration, data packets for the migrating connection that are forwarded 6 by originating device 3400 (or a forwarder designated thereby if a separate device) may start arriving at targeted device 3500 before targeted device 3500 receives the s migrated connection state. Migrator intermediate driver 3414 at targeted device 9 3500 is responsible for buffering those packets until the associated migrated o connection is established on targeted device 3500.
FIG. 37 illustrates an exemplary approach to an uploading procedure 3700 ~z for a connection migration. Migration uploading procedure 3700 illustrates 3 additional exemplary details for a connection migration by targeted device 3500.
is When a migrated connection arrives at targeted device 3500, it is relayed to is migrator intermediate driver 3414 for processing. After amalgamating and 6 assimilating the migrated connection state, migrator intermediate driver 3414, in m conjunction with migrator shim 3412, injects the migrated connection into the is local network stack in a manner transparent to application 316. Fox an exemplary 9 migration uploading procedure 3700, the migration of a TCP connection at points zo < 1 > through <8> is described.
zi At < 1 >, as described above with reference to migration offloading zz procedure 3600, an initialization is performed prior to application hosting z3 operations. Specifically, protocol stack 3404 makes queries regarding what za offloading capabilities, if any, are available. Migra.tor intermediate driver 3414 zs I fills in the TCP connection migration support query to indicate that connection 109 Atty Docket No. MSI-IS20US.PATAPP
.. Mr""_,. . .,.;;~..;:,~"~",.m~;,...._~~",~,,.":,".~,~.. .. . ~.x.:,..;,~~,"
. .........
a, .. r ,.. ..:~., pa c, ..:sc.~.<..;u.~na:erk~a~...,.rr.~m...;..." rv......
Ww.,..."-._......""., .~ma.:F ~-_ _ __ _.___.._..r........~.........,~,._T_.~.. ._ ....._ , migration uploading is available and also propagates the query down to PNI
z miniport 3408 for possible TCP chimney offload capabilities.
At <2>, when connection migration data arrives at target device 3500, the .~ connection migration information (e.g., a bundled binary blob 3422) is delivered s to migrator intermediate driver 3414. Migrator intermediate driver 3414 re-s assembles the connection state, matches it up with any associated data that has arrived during the migration, and prepares for the upload onto the network stack.
s Any data from client 102 that arrives during the process of uploading the migrated 9 connection is buffered by migrator intermediate driver 3414. Upon successful ~o campletion of the migration, the data will be delivered to application 316.
At <3>, to initiate the upload of the migrated connection into the local ~z network stack, migrator intermediate driver 3414 notifies migrator shim 3412 that 13 a migrated connection request has arrived. Migrator intermediate driver 3414 also m delivers the connection state (or at least protocol state 3420) to migrator shim s 3412.
ib At <4>, migrator shim 3412 initiates the upload of the migrated connection ~ by invoking a TCP initiate inject routine (or more generally an infuse protocol is state routine) and by providing the migrated protocol state 3420 to TCP
stack 9 3404(T). At <5>, TCPIIP recreates the migrated connection throughout protocol zo stack 3404 using the provided protocol state 3420. This protocol state 3420 may z~ include one or more of transport state (TCP), path state (IP), neighbor and next-zz hop state (ARP), and so forth.
23 At <6>, if the migrated connection is successfully reestablished on target za device 3500, TCP initiates a connect event to a client portion of migrator shim zs 3412 to indicate that a new connection has been established. There are a multitude I I O Atty Docket No. MSl-I520US.PATAPP

of possible reasons for failure, but common reasons may include the lack of a z corresponding listener, routing failure, etc. In these cases where the network stack z is unable to reestablish the migrated connection, no connect event is indicated and a a failure -status is specifed in the initiate inject complete call.
Connection s migrator 310 is responsible for cleaning up the migration and for sending a reset 6 notification back to client 102 to abandon the connection.
At <7>, migrator shim 3412 acts as a provider to propagate the connect s event to socket layer 3402 so as to indicate to the listening application 316 that a s new connection has been established. If the application 316 accepts the ~o connection, it processes the requests and responds through normal read and write l socket operations; application 316 can be unaware that the connection was iz migrated. If the connection is not accepted by the application 316, TCP
terminates 3 the connection but does not send a reset notification back to client 102.
Again, a la failure status is specified in the initiate inject complete call, and connection migrator 310 is responsible for cleaning up the migration and for sending a reset notification back to client 102 to abandon the connection.
m A special situation arises when application 316 and. classifier 304 are co-$ ~ located on the same device: migrator shim 3412 may referee between them.
9 When both classes of programs reside on the same host 108, they may both be zo listening to the same IP address(es) and port(s). However, TCP typically has one ~ listener per unique IP address and port. Consequently, migrator shim 3412 can zz obscure a configuration where two programs are listening on the same IP
address Z3 and port by multiplexing the two sockets into a single listener at the TCP
layer.
Za In such a case, when connect events arnve at the client portion of migrator Zs shim 3412, migrator shim 3412 as a provider determines on which listening socket i 11 Aay Docket Vo. hlS1-! 520US PATAPP
....,. .. ~ , ., , .~,. ,.~v~..-~.r,.~~,.,~~..,~...,.....~.,-...~-.-~,,. ,~, ,....~~.R rt _".,~, -.~. r._ .... . «. .:.~~.~«-~~

to deliver the connect notification at socket layer 3402. If there is only one socket 2 listening to the corresponding IP address and port, then that socket receives the connect event. If there is more than one socket listening, then the recipient a ~ ~ depends on the context in which the connect event is indicated. If the .connect s event is a brand new connection for a virtual IP address; then the connect event is s delivered to classifier 304; if the connect event is for a dedicated IP
address (non-? load-balanced IP address) or the result of uploading a migrated connection, then $ the connect event is delivered to the target application 316.
At <8>, once the injection of the migrated connection is complete, TCP
to notifies migrator shim 34 i 2 by invoking the provided initiate inject complete ~ handler. A status code is provided to notify migrator shim 3412 whether or not the 2 connection was successfully uploaded. If uploading of the migrated connection I3 fails, connection migrator 310 is responsible for cleaning up the migration and for m notifying client 102 that the connection has been abandoned by sending it a reset.
is If the migrated connection was successfully injected into the local network stack, ib migrator intermediate driver 3414 may begin delivering any buffered data from 7 client 102 by passing the received packets) up through the packet receive path of la protocol-hardware interface 3406.
When a migrated connection is terminated (because uploading failed, Zo because the migrated connection is subsequently closed through normal means, z~ etc.), target device 3500 notifies originating device 3400. ~riginating device 3400 zz uses these notifications to more efficiently and reliably clean out lingering state for 23 migrated connections, including routing table entries. Therefore, to account for Za successfully migrated connections which terminate arbitrarily in the future, 112 Atty Docket No MSI~!5=JUS "ATAPP

1 migrator shim 3412 may monitor their activity and notify migrator intermediate z driver 3414 when the sockets therefor are closed.
s FIG. 38 illustrates an exemplary approach to packet tunneling between a a forwarder 302 and a host 108. Encapsulated packets 3808 may be tunneled from s forwarder 302 to host 108 without incurring overhead for each packet transmitted.
6 As described further below, the tunneling is effectuated using a flow identifier 3814 and encapsulation mapping tables 3806 and 3810 of iunnelers 312(F) and s 312(H), respectively, of forwarder 302 and host 108, respectively. Flow identifier 9 3814 is inserted into encapsulated packets 3808.
o As noted above with reference to FIG. 32, packets for a connection that a arrive subsequent to a connection migration may be routed by forwarder 302 to iz host 108(1) using tunneling by a tunneler 312. At (8) (of FIG 32), forwarder 302 l3 forwards such subsequent packets from forwarder 302 having a network address la of "F" to host 108( 1 ) having a network address of "H 1 ". As described above with is reference to FIG. 4, forwarder 302 may perform NAT', half NAT, tunneling, etc. in i6 order to route the incoming packets to host 108(1).
i7 Such incoming packets include a destination IP address of the virtual IP
i s ("VIP") address and a source IP address of "C 1 " for packets arriving from client t9 102( 1 ). The packets being routed to host 108( 1 ) have a destination IP
address of zo H 1 and a source address of C 1 (for half NAT) or "F" (for full NAT). This re-z, writing of the addresses can interfere with some protocols that expect both of zz client 102( 1 ) and host 108( 1 ) to have identical views of the source and destination z3 addresses.
za Furthermore, at Least with respect to full NAT, return paths from host zs 108(1) to client 102(1) that do not run through forwarder 302 are prohibitive 113 Atty pocks No. MSI-1520US PATAPP
...u.,. A .,..r,rtr r.ri.N~,u.*..v eu"_...wy~.; .cn .r~..--.. > ~ ,...
~.,p~X"c~,, ~~ypy",,~..,a",~ , y"", ....M....:.x,",;,.,.,.m.,,~",~~_""n....
m...,..,..,.»...", ,",~,a,.~"~~",,_,~_......
....,.__....,..........."....d.....w"..

1 because host 108( 1 ) does not know the address of client 102( 1 ). Direct paths from z host 108(1) to client 102(1) are desirable in situations in which tragic from host 3 108( 1 ) to client 102(1 ) is especially high andlor significantly greater than traffic in :.4 the opposite direction (e.g., when host108(1.) provides streaming media to client s 102( 1 )).
Tunneling by tunnelers 312 as described herein can provide for identical views with respect to the source and destination addresses (and ports) for clients $ 102 and applications 316 on hosts 108. By way of e~;ample and with reference to 9 FIGS. 34 and 35, tunneler 312 in each of forwarder 302 and host 108 may operate to as part of or in conjunction with a migrator intermediate driver 3414 of a ~ 1 connection migrator 310.
:z In a described implementation for FIG. 38, connection migrator 3I0 i3 provides an encapsulation mapping 3812 between a flow identifier 3814 and a is TCP/IP 4-tuple 3804. Connection migrator 310 may be assaciated with a classifier is 304, and connection migrator 310 (optionally along with such a classifier 304) i6 may be located on a same device as forwarder 302. Alternatively, connection a migrator 310 (as well as the classifier 304) may be located on a different device is from forwarder 302. Encapsulation mapping 3812 may alternatively be provided l9 by or in conjunction with tunneler 312 functionality that is, for example, located at zo and/or associated with a classifier 304.
z~ By being mapped to a TCP/IP 4-tuple 3804 in encapsulation mapping 3812, zz flow identifier 3814 serves to identify a flow of encapsulated packets 3808 for a z3 particular connection. TCP%IP 4-tuple 3804 includes network addresses (and ports, za etc.) for the source and destination for a particular connection in accordance with a zs TCP/IP protocol, or any similar or analogous protocol. Flaw identifier 3814 is 32 114 Any Dockn No MS1.1520US PATAPP
_. ,.,»" ,.;~.:,~--a z"~..wena.M.... ..=,m,....--~.~..~.~~., ,~.~,.,.,.,~a.~-.........samiet.mt~!......~.s...~wo.,a~,».4.-~.--.-_ _.
__ bits in a described implementation because 32 bits is available for connections z established in accordance with an Internet IPv4 protocol. However, flow 3 identifiers 3814 of other lengths may alternatively be used, especially for other a protocols such as Internet IPv6, UDP, and so forth.
s Flow identifiers 3814 may be generated using any appropriate mechanism, 6 such as an incrementing connection counter. Furthermore, TCP/IP 4-tuple 3804 is more generally a sourceldestination pair. Each source value and destination value s of an individual source/destination pair may include a network node identifier 9 (e.g., network address, port, some combination thereof, etc.) for the source and io destination, respectively, of a given packet propagating or! a particular connection.
a Connection migrator 310 provides encapsulation mapping 3812 to host 108.
~z Tunneler 3I2(H) at host 108 stores encapsulation mapping 3812 in encapsulation 3 mapping table 3810 as encapsulation mapping entry 3810( 1 ). Tunneler 312(H) is can thereafter use flow identifier 3814 to map to and identify the particular is connection corresponding to TCPIIP 4-tuple 3804. Encapsulation mapping 3812 i6 may optionally be provided to host I08 as part of a bundled binary blob 3422 in a 7 connection migration operation.
is Forwarder 302 also includes a tunneler 312(F) component with an t9 encapsulation mapping table 3806. Encapsulation mapping table 3806 stores an zo encapsulation mapping entry 3806(1) that links/maps TCP/IP 4-tuple 3804 for a z~ particular connection to a flow identifier 3814. Tunneler 312(F) also receives the zz mapping information for encapsulation mapping entry 3 806( 1 ) from connection z3 migrator 310 (e.g., as an encapsulation mapping 3812).
za Although only one encapsulation mapping entry 3 806( 1 ) and 3 810( 1 ) is Zs shown, each of encapsulation mapping table 3806 and encapsulation mapping 1 1 S AttyDoekecNo MSI-t520USPATAPP

table 3810 may have multiple such entries. These encapsulation mapping tables z 3806 and 3810 may be combined with other information, such as tables for session 3 information of session tracker 308.
a When .a transmitting device (such as. forwarder 302) and a receiving device s (such as host I08) of encapsulated packets 3808 only tunnel between each other, 6 the encapsulation mapping tables thereof likely hame the same encapsulation mapping entries. Otherwise, encapsulation mapping table 3806 and encapsulation s mapping table 3810 likely have a different total set of encapsulation mapping 9 entries 3806( ) and encapsulation mapping entries 3810( ), respectively.
In operation, an incoming packet 3802 for a particular connection is n received at forwarder 302. The particular connection is associated with ~z tuple 3804. Incoming packet 3802 includes TCP/IP 4-tuple 3804 with a source IP
13 address (of a client 102), a destination IP address (the virCual IP), a source TCP
is port (of the client 102), and a destination TCP port.
Tunneler 312(F) accepts incoming packet 3802 for tunneling to host 108.
is Using TCPIIP 4-tuple 3804, tunneler 312(F) accesses encapsulation mapping table 1~ 3806 to locate encapsulation mapping entry 3806(1). Flow identifier 3814 is 18 extracted from encapsulation mapping entry 3 806( 1 j as being linked/mapped to ~ 9 TCP/IP 4-tuple 3 804.
zo To create encapsulated packet 3808, tunneler 312(F) inserts flow identifier zi 3814 into the source and destination port portions of the TCP/IP 4-tuple header.
z2 For an Internet IPv4 implementation, these two TCP port portions offer 32 bits of zs total space. Also, for the source IP address portion of the TCP/IP 4-tuple header, 24 tunneler 312{F) inserts the IP address "F" of forwarder 302. For the destination IP
zs AttyDockn~JO. MSI-i520US.PATAPP

address portion of the TCP/IP 4-tuple header, tunneler 312(F) inserts the IP
z address "H" of host 108.
Forwarder 302 routesitransmits encapsulated packet 3808 to host 108, and a host 108 receives encapsulated packet 3808 from forwarder 302. The tunneler 312(H) component at host 108 detects that encapsulated packet 3808 is a tunneled 6 packet that is to be de-encapsulated.
Flow identifier 3814 is extracted from encapsulated packet 3808 and used s to look up the corresponding TCP/IP 4-tuple 3804 that is linked thereto in 9 encapsulation mapping entry 3 810( 1 ) of encapsulation mapping table 3 810.
to TCP/iP 4-tuple 3804 is used by tunneler 312(H) to recreate the TCP/IP 4-tuple 11 3804 header as originally received in incoming packet 3802 at forwarder 302.
lz Specifically, the IP address F of forwarder 302 is replaced with the source 13 IP address, and the IP address H of host 108 is replaced with the destination IP
a address. Furthermore, flow identifier 3814 is replaced by the source TCP
port and is the destination TCP port. The de-encapsulated packet is then indicated up the network stack of host 108 to the targeted application 316.
m More generally, a portion of a packet header, including a portion of a g source/destination pair, for a given packet that is not necessarily used for ~s communicating the given packet may be used to carry a flow identifier 3814.
By zo pre-providing at least part of the source/destinatian pair at host 108, a flow zi identifier 3814 may be employed to tunnel (e..g., encapsulate andlor de-zz encapsulate) packets without incurring an encapsulation overhead on each packet.
z3 Furthermore, packets that are full-size with respect to a given protocol may be za tunneled without being broken apart.
zs Atty Dockot Yo MSI-1520US.PATAPP
,~.,...~a.,ri , r.a . m ~~.;~.r.:., ,~.rrm... . x.......-, -,.,~~..~., ~, :~,M~K .a.,~,n,~ ~,~"..-n".,.... .. -_.~_, .~"~- ,~.~,..xi~",~~"......,.a."..,..".~..».._~.."..__. _ ___ ..

FIG 39 is a flow diagram 3900 that illustrates an exemplary method for z packet tunneling between a first device and a second device. For example, the 3 first device and the second device may correspond to an originating device a and a target device 3500, respectively, of load balanct,ng infrastructure 106 and a s cluster of hosts I08, respectively. Nevertheless, tunneling may be employed in 6 non-load-balancing implementations.
Flow diagram 3900 includes twelve blocks 3902-3924. Although the s actions of flow diagram 3900 may be performed in other environments and with a 9 variety of software schemes, FIGS. 1-3, 32, 34, 35, and 38 are used in particular to ,o illustrate certain aspects and examples of the method.
At block 3902, a mapping of a flow identifier-to-TCP/IP 4-tuple is sent to a lz target device from an originating device. For example, originating device 13 may send an encapsulation mapping 3812 that links a flow identifier 3814 to a ~a TCP/IP 4-tuple 3804. At block 3914, the mapping of the flow identifier-to-the s TCP/IP 4-tuple is received at the target device from the originating device.
For example, target device 3500 receives encapsulation mapping 3812 that links flow identifier 3814 to TCP/IP 4-tuple 3804 from, originating device 3400.
l$ Alternatively, target device 3500 may receive encapsulation mapping 3812 9 from another device. As indicated by dashed arrows 3926 and 3928, the actions of zo blocks 3904-3912 and blocks 3916-3924 can occur at some time after the actions zi ~~ of blocks 3902 and 3914, respectively.
zz At block 3904, an incoming packet is received at the originating device z3 from a client. For example, an incoming packet 3802 having a header with as TCP/IP 4-tuple 3804 may be received at originating device 3400 from a client 102.
Zs At block 3906, a flow identifier is looked up for a connection corresponding to the Atty Dockn ~o. 41S I -I 520JS. P ~TAPP
......_ ~a~..R..~-~~,~:~,:,w:_:.~~_...".,....,_._.~....~.--..,-~ , ....._..._._-_.-......._._..___, " .~_._..__.........-_____..._..._.____,.."~,.~..

client's packet using the TPC/IP 4-tuple of the incoming packet. For example, z flow identifier 3814 may be looked up for the connection with client 102 using 3 TCP/IP 4-tuple 3804 that is mapped thereto in an encapsulation mapping entry a 3806( 1) of an encapsulation mapping table 3806.
s At block 3908, the source IP and destination IF' of the incoming packet are 6 replaced with an originating IP address of the originating device and a target IP
address of the target device, respectively. For example, originating device $ may replace the IP address portions of the TCP/IP 4-tuple 3804 portion of a header 9 of incoming packet 3802 with IP addresses of originating device 3400 and target to device 3500.
~ i At block 3910, the source port and the destination port of the incoming iz packet are replaced with the flow identifier. For example, originating device 3400 i3 may replace source and destination TCP ports of the TCP/IP 4-tuple 3804 portion of the header of incoming packet 3802 with flow identifier 3814. At block 3912, ~s the encapsulated packet is sent from the originating device to the target device.
6 For example, originating device 3400 may send an encapsulated packet 3808 to 7 target device 3500.
is At block 3916, the encapsulated packet is received at the target device from 9 the originating device. For example, target device 3500 may receive the zo encapsulated packet 3808 from originating device 3400. At block 3918, the z~ TCP/IP 4-tuple is looked up for the connection corresponding to the packet 2z received from the client using the flow identifier. For example, target device 3500 z3 may access an encapsulation mapping table 3810 at an encapsulation mapping 2a entry 3810(1) that maps flow identifier 3814 to TCPIIP 4-tuple 3804.
119 Atty Docket Ho MSI-t520US PATAPP

At block 3920, the originating IP address anc3 the target IP address are z replaced with the source IP address and the destination IP address, respectively, 3 using the looked-up TCP/IP 4-tuple. For example, target device 3500 may replace a vthe IP addresses of originating device 3400 and target device 3500 in encapsulated s packet 3808 with the source IP address and the destination IP address from TCP/IP
6 4-tuple 3804 as attained from encapsulation mapping table 3810.
At block 3922, the flow identifier is replaced with the source port and the s destination port of the incoming packet using the looked up TCP/IP 4-tuple.
For 9 example, target device 3500 may replace flow identifier 3814 in encapsulated ,o packet 3808 with the source TCP port and the destination TCP port from TCP/IP
1 4-tuple 3804. At block 3924, the client's packet is indicated up to an application at ,z the target device. For example, a de-encapsulated version of encapsulated packet i3 3808, or incoming packet 3802, is indicated up to application 316 of target device 4 3500.
The actions, aspects, features, components, etc. of FIGS. 1-39 are 26 illustrated in diagrams that are divided into multiple blocks. However, the order, ;, interconnections, layout, etc. in which FIGS. 1-39 are described and/or shown is ,a not intended to be construed as a limitation, and any number of the blocks can be 19 combined, rearranged, augmented, omitted, etc. in any manner to implement one zo or more systems, methods, devices, procedures, media, APIs, apparatuses, zl arrangements, etc. for network load balancing. Furthermore, although the zz description herein includes references to specific; implementations (and the z3 exemplary operating environment of FIG. 40), the illustrated and/or described za implementations can be implemented in any suitable hardware, software, zs firmware, or combination thereof and using any suitable network organization(s), I 2 O Acry Docks No. ~LSI-1520US.PATAPP

transport/communication protocols(s), application programming interfaces) z (APIs), client-server architecture(s), and so forth.
3 Exemplary Operating Environment for Computer or Other Device a FIG 40 illustrates pan exemplary computing (or general device) operating s environment 4000 that is capable of (fully or partially) implementing at least one 6 system, device, apparatus, component, arrangement, protocol, approach, method, procedure, media, API, some combination thereof, etc. for network load balancing s as described herein. Operating environment 4000 ma.y be utilized in the computer 9 and network architectures described below or in a stand-alone situation.
Exemplary operating environment 4000 is only one example of an environment and is not intended to suggest any limitation as to the scope of use or ~z functionality of the applicable device (including computer, network node, i3 entertainment device, mobile appliance, general electronic device, etc.) ~a architectures. Neither should operating environment 4000 (or the devices thereof) is be interpreted as having any dependency or requirement relating to any one or to is any combination of components as illustrated in FIG. 40.
a Additionally, network load balancing may be implemented with numerous ~s other general purpose or special purpose device (including computing system) ~9 environments or conf gurations. Examples of well known devices, systems, zo environments, and/or configurations that may be suitable for use include, but are zl not limited to, personal computers, server computers, thin clients, thick clients, zz personal digital assistants (PDAs) or mobile telephones, watches, hand-held or z3 laptop devices, multiprocessor systems, microprocessor-based systems, set-top za boxes, programmable consumer electronics, video game machines, game consoles, is portable or handheld gaming units, network PCs, minicomputers, mainframe 121 Aay pocket No. MSI-I SZOUS.PATAPP
.....;.~w. s,arac~~-..rv~<w,.~.e...._.r..e..~w~m~,~vN ,~~;:
w~gas,~r~re~c~a.~e~~~;.aw»»a~.,~=~,:,~wcrw~ri~,~..xca~<,~.,..~,»_.,....."..m.._ m_.... _-~.
c i computers, network nodes, distributed or mufti-processing computing z environments that include any of the above systems or devices, some combination 3 thereof, and so forth.
a .Implementations for network load balancing may be described in the general context of processor-executable instructions. Generally, processor-6 executable instructions include routines, programs, protocols, objects, interfaces, components, data structures, ete. that perform andlor enable particular tasks and/or s implement particular abstract data types. Network load balancing, as described in 9 certain implementations herein, may also be practiced in distributed processing ~o environments where tasks are performed by remotely-linked processing devices ~ i that are connected through a communications link andlor network.
Especially in a ~ z distributed computing environment, processor-executable instructions may be 13 located in separate storage media, executed by different processors, and/or m propagated over transmission media.
is Exemplary operating environment 4000 includes a general-purpose !6 computing device in the form of a computer 4002, which may comprise any (e.g., > > electronic) device with computing/processing capabilities. The components of is computer 4002 may include, but are not limited to~, one or more processors or i9 processing units 4004, a system memory 4006, and a system bus 4008 that couples zo various system components including processor 4004 to system memory 4006.
21 Processors 4004 are not limited by the materials from which they are zz formed or the processing mechanisms employed therein. For example, processors z3 4004 may be comprised of semiconductors) and/or transistors (e.g., electronic za integrated circuits (ICs)). In such a context, processor-executable instructions may zs ~ be electronically-executable instructions. Alternatively, the mechanisms of or for Atty Docks No. MS1.1520US.PATAPP
1tt,~-.,G1N a "%/p.ho ..i5~'S4_,w,.,r:h.,3;;..rc-~ f, MY ."".."",.,.. ~-~,.~gy"Kq,~e,y#~,p-.~~.~~,~p,"~,~,~~..~~ ...._.._..--_,.~...._"".....,~.,~»~"."~,."~.~,~..__....r".,..H,..e, ~........ _-.,m.

t processors 4004, and thus of or for computer 4002, may include, but are not z limited to, quantum computing, optical computing, mechanical computing (e.g., 3 using nanotechnology), and so forth.
a System bus 4008 represents one or more of any of many types of wired or s wireless bus structures, including a memory bus or mf:mory controller, a point-to-6 point connection, a switching fabric, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of s example, such architectures may include an Industry Standard Architecture (ISA) 9 bus, a Micro Channel Architecture {MCA) bus, an Enhanced ISA (EISA) bus, a o Video Electronics Standards Association (VESA;1 local bus, a Peripheral 1 i Component Interconnects (PCI) bus also known as a Mezzanine bus, some ~z combination thereof, and so forth.
i3 Computer 4002 typically includes a variety of processor-accessible media.
m Such media may be any available media that is accessible by computer 4002 or is another (e.g., electronic) device, and it includes both volatile and non-volatile 16 media, removable and non-removable media, and storage and transmission media.
System memory 4006 includes processor-acccasible storage media in the 8 form of volatile memory, such as random access memory (RAM) 4040, and/or I9 non-volatile memory, such as read only memory (ROM) 4012. A basic zo input/output system (BIOS) 4014, containing the basic routines that help to z ~ transfer information between elements within computer 4002, such as during start-zz up, is typically stored in ROM 4012. RAM 4010 typically contains data and/or zs program modules/instructions that are immediately accessible to and/or being za presently operated on by processing unit 4004.
2s I
123 Atty Doclctt Nc MSI-1520l;S PATAPP
" , ., r ...~, vv-.,..;~,~,~",.._TV",.~ ~. "-.... ..__. ", ,.,,~,~,~._,~:.~~~,~,..,~r.".,.~"""., . .......,.~. _..~_.,-,~~, ~.""....,._ ._,.~,.._,_ ........... .......
- ,<c"<.._".... _ ..,..._ .

Computer 4002 may also include other removable/non-removable and/or z volatile/non-volatile storage media. By way of example, FICl. 40 illustrates a hard 3 disk drive or disk drive array 4016 for reading from and writing to a (typically) a non-removable, non-volatile magnetic media (not separately shown); a magnetic s disk drive 4018 for reading from and writing to a {typically) removable, non-6 volatile magnetic disk 4020 {e.g., a "floppy disk"); and an optical disk drive 4022 7 for reading from andlor writing to a (typically) removable, non-volatile optical a disk 4024 such as a CD, DVD, or other optical media. I-Iard disk drive 4016, 9 magnetic disk drive 4018, and optical disk drive 4022 are each connected to o system bus 4008 by one or more storage media interfaces 4026. Alternatively, l hard disk drive 4016, magnetic disk drive 4018, and optical disk drive 4022 may ,z be connected to system bus 4008 by one or more other separate or combined l3 interfaces (not shown).
The disk drives and their associated processor-accessible media provide 1s non-volatile storage of processor-executable instructiions, such as data structures, a6 program modules, and other data for computer 4002. Although exemplary m computer 4002 illustrates a hard disk 4016, a removable magnetic disk 4020, and a 1g removable optical disk 4024, it is to be appreciated that other types of processor-i9 accessible media may store instructions that are accessible by a device, such as zo magnetic cassettes or other magnetic storage devices, flash memory, compact zl disks (CDs), digital versatile disks (DVDs) or other optical storage, RAM, ROM, zz electrically-erasable programmable read-only memories (EEPROM), and so forth.
z3 Such media may also include so-called special purpo:>e or hard-wired IC
chips. In za other words, any processor-accessible media may be utilized to realize the storage zs media of the exemplary operating environment 4000.
Atty Dockct Vo. M51.15201;S.P07APP
.,."._,... ,n,..,~-_.~ .~ -.... ___.r._.._._ .....:,.~..,.,~,n.,~,;.~.~;~,.,.~,~":,~,y~",",~.~,..,.~,..,.."~;;;,.~",~.
"~".~~~,~.. , ,.:..""..".,.~,~....__._ __ _......

Any number of program modules (or other units or sets of z instructions/code) may be stored on hard disk 4016, magnetic disk 4020, optical 3 disk 4024, ROM 4012, and/or RAM 4040, including lby way of general example, a an operating system 4028, one or more application programs 4030, other program s modules 4032, and program data 4034.
A user may enter commands and/or information into computer 4002 via input devices such as a keyboard 4036 and a pointing device 4038 (e.g., a s "mouse"). Other input devices 4040 (not shown specifically) may include a 9 microphone, joystick, game pad, satellite dish, serial x>ort, scanner, and/or the like.
~o These and other input devices are connected to processing unit 4004 via ~ input/output interfaces 4042 that are coupled to system bus 4008. However, input 12 devices and/or output devices may instead be connected by other interface and bus i3 structures, such as a parallel port, a game port, a universal serial bus (USB) port, is an infrared port, an IEEE 1394 ("Firewire") interface, an IEEE 802.11 wireless ~; interface, a Bluetooth~ wireless interface, and so forfh.
is A monitor/view screen 4044 or other type of display device may also be m connected to system bus 4008 via an interface, such as a video adapter 4046.
Ia Video adapter 4046 (or another component) may be or may include a graphics 'g card for processing graphics-intensive calculations and for handling demanding zo display requirements. Typically, a graphics card includes a graphics processing 21 unit (GPU), video RAM (VRAM), etc. to facilitate the expeditious display of zz graphics and performance of graphics operations. In addition to monitor 4044, z3 other output peripheral devices rnay include components such as speakers (not z4 shown) and a printer 4048, which may be connected to computer 4002 via zs input/output interfaces 4042.
12 S Atty Docket No. MS t ~ I 520US. PATAPP
<..r..z . , ."-- r~ ""..~saur~. *,~~ ..>,*r~,.. ,w. n,., ..",. , _ ~,.....~.._»_. .b,_..."M. ",.,.,.",."... >» .~.~. a, w.._._~...._.__....., ~.._N.....,"_....~._.._. .,....
..' -, ..~.. :.m,*, ~..... ....._.. . ,....w...._......:....___... . . t .. _ ,._...

a Computer 4002 may operate in a networked environment using logical z connections to one or more remote computers, such as a remote computing device 3 4050. By way of example, remote computing device 400 may be a personal 4 computer, a portable computer (e.g., laptop computer, tablet computer, PDA, s mobile station, etc.), a palm or pocket-sized computer, a watch, a gaming device, a s server, a router, a network computer, a peer device, another network node, or another device type as listed above, and so forth. However, remote computing s device 4050 is illustrated as a portable computer that: may include many or all of 9 the elements and features described herein with respect to computer 4002.
Logical connections between computer 4002 and remote computer 4050 are l ~ depicted as a local area network (LAN) 4052 and a general wide area network ~2 (WAN) 4054. Such networking environments are commonplace in offices, ,3 enterprise-wide computer networks, intranets, the Internet, fxed and mobile ~a telephone networks, ad-hoc and infrastructure wireless networks, other wireless ,s networks, gaming networks, some combination thereof, and so forth. Such ~s networks and communications connections are examples of transmission media.
m When implemented in a LAN networking environment, computer 4002 is ~a usually connected to LAN 4052 via a network interface or adapter 4056. When ~9 implemented in a WAN networking environment, computer 4002 typically zo includes a modem 4058 or other means for establishing communications over zc WAN 4054. Modem 405$, which may be internal or external to computer 4002, 2z may be connected to system bus 4008 via input/output interfaces 4042 or any z3 other appropriate mechanism(s). It is to be appreciated that the illustrated network z4 connections are exemplary and that other means of establishing communication is links) between computers 4002 and 4050 may be employed.
I 2 6 Atty Docket No MS I-I S?OUS PATAPP

i Furthermore, other hardware that is specifically designed for servers may z be employed. For example, SSL acceleration cards can be used to offload SSL
3 computations. Additionally, especially in a network load balancing operating a environment, ~ TCP offload hardware . and/or . packet classifiers on network interfaces or adapters 4056 (e.g., on network interfacf: cards) may be installed and 6 used at server devices.
In a networked environment, such as that illustrated with operating s environment 4000, program modules or other in;>tructions that are depicted 9 relative to computer 4002, or portions thereof, may be fully or partially stored in a o remote media storage device. By way of example, remote application programs l 4060 reside on a memory component of remote computer 4050 but may be usable Iz or otherwise accessible via computer 4002. Also, for purposes of illustration, ,3 application programs 4030 and other processor-executable instructions such as m operating system 4028 are illustrated herein as discrete blocks, but it is recognized that such programs, components, and other instructions reside at various times in 6 different storage components of computing device 4002 (and/or remote computing 17 device 4050) and are executed by processors) 4004 of computer 4002 (and/or is those of remote computing device 4050).
Although systems, media, devices, methods, procedures, apparatuses, zo techniques, schemes, approaches, procedures, arrangements, and other zi implementations have been described in language specific to structural, logical, zz algorithmic, and functional features and/or diagrams, it is to be understood that the z3 invention defined in the appended claims is not necessarily limited to the specific za features or diagrams described. Rather, the specific features and diagrams are zs disclosed as exemplary forms of implementing the claimed invention.
7 AttyDockctNo.MSI-1520US.PATAPP
,... ,..w~, .. x ,na..., . ~"..~-.g...-~s,." " . ~_, ~. ~. w:>,.,.. , ",.":,,:,,~ ~, ".~ .~.~~p,~~.,"~,,.~,,~,~., . ~,.~,. ..~,... ~."~"....
....,~._,o,.m."~ .. . __

Claims (124)

1. One or more processor-accessible media comprising processor-executable instructions that, when executed, direct a system to perform actions comprising:
receiving host status information from a plurality of hosts; and making load balancing decisions responsive to the received host status information.
2. The one or more processor-accessible media as recited in claim 1, comprising the processor-executable instructions that, when executed, direct the system to perform a further action comprising:
receiving a request for a new connection from a client; and wherein the action of making comprises an action of:
selecting a destination target for the new connection responsive to the received host status information.
3. The one or more processor-accessible media as recited in claim 1, wherein the host status information comprises health and/or load information that is associated with the plurality of hosts, and the action of receiving comprises an action of:
receiving the health and/or load information from the plurality of hosts.
4. The one or more processor-accessible media as recited in claim 1, wherein the host status information comprises application-specific host status information, and the action of making comprises an action of:
making load balancing decisions responsive to the received application-specific host status information.
5. The one or more processor-accessible media as recited in claim 1, wherein the action of receiving comprises at least one action of:
receiving the host status information directly from one or more hosts of the plurality of hosts; and receiving the host status information indirectly from one or more hosts of the plurality of hosts.
6. A system comprising:
at least one processor; and one or more media including processor-executable instructions that are capable of being executed by the at least one processor, the processor-executable instructions adapted to direct the system to perform actions comprising:
receiving host status information from a plurality of hosts; and making load balancing decisions responsive to the received host status information.
7. The system as recited in claim 6, wherein the action of receiving comprises an action of:
receiving the host status information from the plurality of hosts via at least one proxy.
8. The system as recited in claim 6, wherein host status information includes at least one load balancing directive; and wherein the action of receiving comprises an action of:
receiving the at least one load balancing directive from the plurality of hosts via at least one proxy that is invoking one or more application programming interfaces (APIs) to push the at least one load balancing directive.
9. The system as recited in claim 6, wherein the system comprises at least one of a single device and a plurality of devices.
10. A method for network load balancing, the method comprising:
determining host status information for a plurality of hosts;
sending the host status information from the plurality of hosts to at least one device comprising load balancing infrastructure;
receiving the host status information from the plurality of hosts at the at least one device; and making load balancing decisions with the load balancing infrastructure responsive to the received host status information.
11. One or more processor-accessible media comprising processor-executable instructions that, when executed, direct a system to perform actions comprising:
accumulating host status information at a plurality of hosts; and sending the accumulated host status information from the plurality of hosts.
12. The one or more processor-accessible media as recited in claim 11, wherein the host status information comprises health and/or load information that is associated with the plurality of hosts and the action of sending comprises an action of:
sending the health and/or load information from the plurality of hosts.
13. The one or more processor-accessible media as recited in claim 11, wherein the action of accumulating comprises an action of:
accumulating the host status information with regard to applications executing on the plurality of hosts.
14. The one or more processor-accessible media as recited in claim 11, wherein the action of sending comprises an action of:
sending the accumulated host status information from the plurality of hosts to at least one proxy.
15. The one or more processor-accessible media as recited in claim 11, wherein the action of sending comprises an action of:
sending the accumulated host status information from the plurality of hosts to load balancing functionality.
16. A system comprising:
a host status information determiner that is adapted to determine host status information for a host; and a host status information disseminator that is adapted to disseminate the host status information to load balancing infrastructure.
17. The system as recited in claim 16, wherein the system further comprises:
one or more applications;
wherein the host status information determiner determines the host status information with regard to the one or more applications.
18. The system as recited in claim 16, wherein the system comprises a device on which the host is resident.
19. The system as recited in claim 16, wherein the system further comprises:
another host status information determiner that is adapted to determine additional host status information for another host; and another host status information disseminator that is adapted to disseminate the additional host status information to the load balancing infrastructure;
wherein the system comprises a first device on which the host is resident and a second device on which the other host is resident.
20. One or more processor-accessible media comprising processor-executable instructions that, when executed, enable a system to implement a message protocol between at least one host and one or more load balancing units, the message protocol usable for communicating health and/or load information between the at least one host and the one or more load balancing units.
21. The one or more processor-accessible media as recited in claim 20, wherein at least a portion of the processor-executable instructions comprise software that is adapted to be executed on the at least one host.
22. The one or more processor-accessible media as recited in claim 20, wherein at least a portion of the processor-executable instructions comprise software that is adapted to be executed on the one or more load balancing units.
23. The one or more processor-accessible media as recited in claim 20, comprising the processor-executable instructions that, when executed, enable the system to implement the message protocol that includes at least one message, the at least one message comprising a heartbeat message that indicates to the one or more load balancing units that the at least one host is functioning.
24. The one or more processor-accessible media as recited in claim 23, wherein a format of the heartbeat message comprises an identifier for the at least one host, error checking data for health and/or load information, and a domain name system (DNS) name.
25. The one or more processor-accessible media as recited in claim 23, wherein a format of the heartbeat message permits inclusion of a chunk number/generation identifier (ID) pair.
26. The one or more processor-accessible media as recited in claim 20, comprising the processor-executable instructions that, when executed, enable the system to implement the message protocol that includes at least one message, the at least one message comprising a goodbye message that indicates to the one or more load balancing units that the at least one host is planning to shutdown.
27. The one or more processor-accessible media as recited in claim 26, wherein a format of the goodbye message comprises an identifier for the at least one host.
28. The one or more processor-accessible media as recited in claim 20, comprising the processor-executable instructions that, when executed, enable the system to implement the message protocol that includes at least one message, the at least one message comprising a row change message that indicates to the one or more load balancing units that health and/or load information for an application of the at least one host has changed.
29. The one or more processor-accessible media as recited in claim 28, wherein a format of the row change message comprises an identifier for the at least one host, an identifier for the application, an operation to reflect the change, and data for the operation.
30. The one or more processor-accessible media as recited in claim 20, comprising the processor-executable instructions that, when executed, enable the system to implement the message protocol that includes at least one message, the at least one message comprising a get table snapshot message that is sent from the one or more load balancing units to the at least one host, the get table snapshot message requesting a snapshot of current health and/or load information of the at least one host.
31. The one or more processor-accessible media as recited in claim 30, wherein a format of the get table snapshot message comprises an identification of a requesting load balancing unit of the one or more load balancing units.
32. The one or more processor-accessible media as recited in claim 20, comprising the processor-executable instructions that, when executed, enable the system to implement the message protocol that includes at least one message, the at least one message. comprising a send table snapshot message that is sent from the at least one host to a requesting load balancing unit of the one or more load balancing units, the send table snapshot message providing a snapshot of current health and/or load information of the at least one host.
33. The one or more processor-accessible media as recited in claim 32, wherein a format of the send table snapshot message comprises the snapshot of the current health and/or load information of the at least one host.
34. The one or more processor-accessible media as recited in claim 20, comprising the processor-executable instructions that, when executed, enable the system to implement the message protocol that includes at least one message, the at least one message comprising a postulate table state message that is sent from the at least one host to the one or more load balancing units, the postulate table state message including a load balancing state directive that indicates a current load balancing state directive that is expected by the at least one host to be existing .
at the one or more load balancing units.
35. The one or more processor-accessible media as recited in claim 34, wherein a format of the postulate table state message comprises an identifier for the at least one host and the current load balancing state directive.
36. The one or more processor-accessible media as recited in claim 20, comprising the processor-executable instructions that, when executed, enable the system to implement the message protocol that includes at least one message, the at least one message comprising a postulate wrong message that is sent from a load balancing unit of the one or more load balancing units to the at least one host, which previously sent a postulate table state message; the postulate wrong message indicating that the load balancing unit has an actual load balancing state directive that differs from a postulated load balancing state directive that is included in the postulate table state message.
37. A system comprising:
at least one device that is hosting one or more applications, the at least one device including a health and load table that includes a plurality of entries, each entry of the plurality of entries associated with an application of the one or more applications; each entry of the plurality of entries comprising:
an application identifier for a particular application of the one or more applications;
information characterizing at least one status of the particular application; and at least one load balancing directive regarding the particular application.
38. The system as recited in claim 37, wherein the application identifier uniquely identifies the particular application from among the one or more applications.
39. The system as recited in claim 37, wherein the application identifier comprises at least one of a virtual internet protocol (IP) address and port, a physical IP address and port, a protocol relevant to the particular application, and information that is specific to the protocol.
40. The system as recited in claim 37, wherein the application identifier comprises at least one globally unique identifier (GUID).
41. The system as recited in claim 37, wherein the information characterizing at least one status of the particular application comprises at least one of application health, application load, and application capacity.
42. The system as recited in claim 41, wherein the application health indicates whether a status of the particular application is healthy, failing, or unknown; wherein the application load indicates how occupied the particular application is; and wherein the application capacity indicates a maximum capacity of the particular application.
43. The system as recited in claim 42, wherein the maximum capacity of the particular application is expressed relative to a total capacity for applications of a same type as that of the particular application that are executing in the system.
44. The system as recited in claim 42, wherein the maximum capacity of the particular application is expressed as a unit-less and bounded number.
45. The system as recited in claim 37, wherein the at least one load balancing directive may be provided to a plurality of load balancing units to provide guidance for network load balancing regarding the particular application and with respect to other applications of a same application type.
46. The system as recited in claim 37, wherein the at least one load balancing directive comprises at least one of active, draining, and inactive.
47. The system as recited in claim 37, wherein the at least one load balancing directive comprises a target load balancing state directive and a current load balancing state directive.
48. The system as recited in claim 47, wherein the target load balancing state directive indicates a load balancing state that health and load infrastructure, which is located at the at least one device, intends for health and load infrastructure, which is located at a plurality of load balancing units, to be operating under.
49. The system as recited in claim 47, wherein the current load balancing state directive indicates a load balancing state that health and load infrastructure, which is located at the at least one device, believes health and load infrastructure, which is located at a plurality of load balancing units, to be currently operating under.
50. The system as recited in claim 37, wherein the system further comprises:
a plurality of devices, with each respective device of the plurality of devices including a respective health and load table.
51. One or more processor-accessible media comprising processor-executable instructions that comprise at least part of an operating system, wherein the processor-executable instructions, when executed, direct a system to perform actions comprising:
determining when an application is started;
reporting, responsive to the determining, the application as started to health and load infrastructure that is capable of communicating with network load balancing infrastructure;
detecting when the application is stopped; and reporting, responsive to the detecting, the application as stopped to the health and load infrastructure.
52. The one or more processor-accessible media as recited in claim 51, wherein at least a portion of the processor-executable instructions comprise at least part of a control manager of the operating system.
53. One or more processor-accessible media comprising processor-executable instructions that comprise at least part of an operating system, wherein the processor-executable instructions, when executed, direct a system to perform actions comprising:
identifying that an application is started as a result of starting the application;
reporting, responsive to the identifying, the application as started to health and load infrastructure that is capable of communicating with network load balancing infrastructure;
establishing that the application is stopped as a result of stopping the application; and reporting, responsive to the establishing, the application as stopped to the health and load infrastructure.
54. The one or more processor-accessible media as recited in claim 53, wherein at least a portion of the processor-executable instructions comprise at least part of a control manager of the operating system.
55. A system comprising:
health and load infrastructure that is adapted to determine application-specific health and load information; and load balancing infrastructure that is adapted to utilize the application-specific health and load information when allocating requests to a plurality of applications.
56. The system as recited in claim 55, wherein the health and load infrastructure comprises a health and load table that stores at least a portion of the application-specific health and load information.
57. The system as recited in claim 55, wherein the health and load infrastructure comprises a health and load table that stores at least a portion of the application-specific health and load information; the health and load table including a plurality of entries, each entry of the plurality of entries associated with a particular application of the plurality of applications.
58. The system as recited in claim 55, wherein the health and load infrastructure comprises a health and load table that stores at least a portion of the application-specific health and load information; the health and load table including a plurality of entries, each entry of the plurality of entries including: an application identifier for a particular application with which the entry is associated, information characterizing at least one status of the particular application, and at least one load balancing directive with regard to the particular application.
59. The system as recited in claim 55, wherein the load balancing infrastructure comprises a consolidated health and load cache that stores the application-specific health and load information.
60. The system as recited in claim 55, wherein the load balancing infrastructure comprises a consolidated health and load cache that stores the application-specific health and load information for the plurality of applications that are executing on a plurality of hosts.
61. The system as recited in claim 55, wherein the application-specific health and load information comprises application-endpoint-specific health and load information.
62. The system as recited in claim 55, further comprising:
a proxy device that comprises at least part of the health and load infrastructure, the at least part of the health and load infrastructure adapted to determine the application-specific health and load information by performing external monitoring actions.
63. The system as recited in claim 55, wherein:
the health and load infrastructure comprises a plurality of health and load tables that store the application-specific health and load information; and the load balancing infrastructure comprises a plurality of consolidated health and load caches that store the application-specific health and load information.
64. The system as recited in claim 63, wherein the system further comprises:
a plurality of hosts upon which the health and load infrastructure is distributed over, each host of the plurality of hosts having a health and load table of the plurality of health and load tables; and a plurality of load balancing units corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches.
65. The system as recited in claim 63, wherein the system further comprises:
a plurality of hosts upon which the health and load infrastructure is distributed over, each host of the plurality of hosts having a health and load table of the plurality of health and load tables; and a plurality of load balancing units corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches;
wherein each consolidated health and load cache of the plurality of health and load caches includes the application-specific health and load information that is stored on each health and load table of the plurality of health and load tables.
66. The system as recited in claim 63, wherein the system further comprises:
a plurality of hosts upon which the health. and load infrastructure is distributed over, each host of the plurality of hosts having a health and load table of the plurality of health and load tables; and a plurality of load balancing units corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches;
wherein the plurality of applications are executing on the plurality of hosts.
67. The system as recited in claim 63, wherein the system further comprises:
a plurality of hosts resident at a plurality of devices, the health and load infrastructure distributed over the plurality of hosts, Each host of the plurality of hosts having a health and load table of the plurality of health and load tables; and a plurality of load balancing units comprised of at least one device and corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches.
68. The system as recited in claim 63, wherein the system further comprises:
a plurality of hosts resident at a plurality of devices, the health and load infrastructure distributed over the plurality of hosts, each host of the plurality of hosts having a health and load table of the plurality of health and load tables; and a plurality of load balancing units comprised of at least one device and corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches;
wherein the health and load infrastructure comprises a remote part of the load balancing infrastructure.
69. The system as recited in claim 63, wherein the system further comprises:
a plurality of hosts resident at a plurality of devices, the health and load infrastructure distributed over the plurality of hosts, Each host of the plurality of hosts having a health and load table of the plurality of health and load tables; and a plurality of load balancing units comprised of at least one device and corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches;
wherein the at least one device is one of the plurality of devices.
70. The system as recited in claim 63, wherein the system further comprises:
a plurality of hosts resident at a plurality of devices, the health and load infrastructure distributed over the plurality of hosts, each host of the plurality of hosts having a health and load table of the plurality of health and load tables; and a plurality of load balancing units comprised of at least one device and corresponding to at least a portion of the load balancing infrastructure, each load balancing unit of the plurality of load balancing units having a consolidated health and load cache of the plurality of consolidated health and load caches;
wherein the at least one device is not one of the plurality of devices; and wherein the health and load infrastructure is further adapted to disseminate the application-specific health and load information from the plurality of devices to the at least one device.
71. The system as recited in claim 55, wherein the health and load infrastructure and the load balancing infrastructure are capable of using a message protocol for communications therebetween that relate to the application-specific health and load information.
72. The system as recited in claim 71, wherein the message protocol comprises one or more of the following message types: a heartbeat message type, a goodbye message type, a row change message type, a get table snapshot message type, a send table snapshot message type, a postulate table state message type, and a postulate wrong message type.
73. The system as recited in claim 71, wherein the message protocol includes a capability for communication using group membership.
74. The system as recited in claim 55, wherein the load balancing infrastructure, after a failure, is capable of recovering the application-specific health and load information via the health and load infrastructure using a message protocol for communications therebetween.
75. The system as recited in claim 55, wherein the load balancing infrastructure is further adapted to allocate requests to the plurality of applications using one or more allotment schemes.
76. The system as recited in claim 75, wherein the one or more allotment schemes comprise at least one of a token allotment scheme and a percentage allotment scheme.
77. The system as recited in claim 75, wherein the one or more allotment schemes entail using a timer expiration mechanism.
78. The system as recited in claim 75, wherein the one or more allotment schemes are implemented by a health and load handler component of the load balancing infrastructure.
79. One or more processor-accessible media comprising processor-executable instructions that, when executed, direct a system to perform actions comprising:
analyzing health and/or load information for a plurality of application endpoints; and ascertaining a token allotment for the plurality of application endpoints responsive to the analyzing.
80. The one or more processor-accessible media as recited in claim 79, comprising the processor-executable instructions that, when executed, direct the system to perform further actions comprising:
receiving a target application endpoint allotment request that identifies the plurality of application endpoints; and sending a target application endpoint allotment response that includes the token allotment.
81. The one or more processor-accessible media as recited in claim 79, comprising the processor-executable instructions that, when executed, direct the system to perform further actions comprising:
receiving a target application endpoint allotment request that includes one or more of a virtual internet protocol (IP) address and port, a protocol, and information that is specific to the protocol; and sending a target application endpoint allotment response that includes a physical IP address and port.
82. The one or more processor-accessible media as recited in claim 79, wherein the action of analyzing comprises an action of:
analyzing application-endpoint-specific health and/or load information for the plurality of application endpoints.
83. The one or more processor-accessible media as recited in claim 79, wherein the action of ascertaining comprises an action of:
ascertaining the token allotment for the plurality of application endpoints based on relative available capacities between or among the plurality of application endpoints.
84. The one or more processor-accessible media as recited in claim 79, wherein the token allotment comprises a first number of tokens corresponding to a first application endpoint of the plurality of application endpoints and a second number of tokens corresponding to a second application endpoint of the plurality of application endpoints.
85. The one or more processor-accessible media as recited in claim 79, wherein the token allotment comprises:
a first number of tokens corresponding to a first application endpoint of the plurality of application endpoints;
a second number of tokens corresponding to a second application endpoint of the plurality of application endpoints; and a time limit, wherein an expiration of the time limit renders unusable any remaining tokens of the first number of tokens and the second number of tokens.
86. The one or more processor-accessible media as recited in claim 79, comprising the processor-executable instructions that, when executed, direct the system to perform a further action comprising:
using the token allotment to classify incoming connection requests.
87. One or more processor-accessible media comprising processor-executable instructions that, when executed, direct a system to perform actions comprising:
determining health and load information on a per application basis; and selecting an application from among a plurality of applications responsive to the health and load information.
88. The one or more processor-accessible media as recited in claim 87, wherein the action of determining comprises an action of:
determining when applications of the plurality of applications start and stop.
89. The one or more processor-accessible media as recited in claim 87, wherein the action of determining comprises an action of:
determining when an application of the plurality of applications is healthy and when the application is failing or failed.
90. The one or more processor-accessible media as recited in claim 87, wherein the action of determining comprises an action of:
determining a load of a given application of a particular application type relative to loading of one or more other applications of the particular application type.
91. The one or more processor-accessible media as recited in claim 87, comprising the processor-executable instructions that, when executed, direct the system to perform a further action comprising:
receiving external input regarding determination of the health and load information on a per application basis;
wherein the action of determining comprises an action of:
determining the health and load information on a per application basis in accordance with the external input.
92. The one or more processor-accessible media as recited in claim 87, comprising the processor-executable instructions that, when executed, direct the system to perform a further action comprising:
disseminating the health and load information from at least one host to one or more load balancing units.
93. The one or more processor-accessible media as recited in claim 87, comprising the processor-executable instructions that, when executed, direct the system to perform a further action comprising:
disseminating the health and load information from at least one host to one or more load balancing units using a message protocol.
94. The one or more processor-accessible media as recited in claim $7, comprising the processor-executable instructions that, when executed, direct the system to perform a further action comprising:
disseminating the health and load information .from at least one host to one or more load balancing units using a membership grouping.
95. The one or more processor-accessible media as recited in claim 94, wherein the action of disseminating comprises an action of:
sending a heartbeat message from the at least one host to a leadership host, wherein the heartbeat message includes a forwarding indication such that the leadership host is directed to forward the heartbeat message to the one or more load balancing units even if no change in the membership grouping is involved.
96. The one or more processor-accessible media as recited in claim 87, comprising the processor-executable instructions that, when executed, direct the system to perform a further action comprising:
disseminating the health and load information from at least one health and load table to one or more consolidated health and load caches.
97. The one or more processor-accessible media as recited in claim 87, comprising the processor-executable instructions that, when executed, direct the system to perform further actions comprising:
receiving the health and load information from a plurality of hosts; and caching the health and load information.
98. The one or more processor-accessible media as recited in claim 87, comprising the processor-executable instructions that, when executed, direct the system to perform further actions comprising:
receiving the health and load information from a plurality of hosts;
caching the received health and load information;
receiving a packet requesting a connection initiation; and consulting the cached health and load information for the connection initiation;
wherein the action of selecting comprises an action of:
selecting the application from among the plurality of applications responsive to the consulting.
99. The one or more processor-accessible media as recited in claim 98, wherein the connection initiation pertains to a particular application type.
100. The one or more processor-accessible media as recited in claim 87, wherein the action of selecting comprises an action of selecting an application endpoint from among a plurality of application endpoints responsive to the health and load information.
101. The one or more processor-accessible media as recited in claim 87, wherein the action of selecting comprises an action of:
selecting, responsive to the health and load information, an application endpoint from among a plurality of application endpoints that are distributed among a plurality of hosts.
102, The one or more processor-accessible media as recited in claim 87, wherein the one or more processor-accessible media comprise at least one of (i) one or more storage media and (ii) one or more transmission media.
103. The one or more processor-accessible media as recited in claim 87, wherein at least a portion of the processor-executable instructions comprise at least part of a load balancing software program.
104. The one or more processor-accessible media as recited in claim 87, wherein at least a portion of the processor-executable instructions are adapted to run on the system wherein the system comprises a single device.
I05. The one or more processor-accessible media as recited in claim 87, wherein at least a portion of the processor-executable instructions are adapted to run on the system wherein the system comprises a plurality of devices.
106. The one or more processor-accessible media as recited in claim 87, wherein the action of selecting comprises an action of:
selecting, responsive to the health and load information, an allotment of application endpoints from among a plurality of application endpoints with regard to relative available capacities between or among the plurality of application endpoints.
107. The one or more processor-accessible media as recited in claim I06, wherein the action of selecting comprises a further action of:
selecting the allotment of application endpoints using a token allotment scheme.
108. The one ar more processor-accessible media as recited in claim 106, wherein the action of selecting comprises a further action of:
selecting the allotment of application endpoints using a percentage allotment scheme.
109. The one or more processor-accessible media as recited in claim 105, wherein the plurality of application endpoints correspond to applications of a single application type.
110. The one or more processor-accessible media as recited in claim 87, wherein the action of selecting comprises an action of:
selecting the application from among the plurality of applications responsive to the health and load information in order to balance a network load caused by incoming packets.
111. The one or more processor-accessible media as recited in claim 87, wherein the action of selecting comprises an action of:
selecting the application from among the plurality of applications responsive to the health and load information in order to balance a network load caused by incoming connection requests.
112. An arrangement for network load balancing with host status information, the arrangement comprising:
means for determining host status information for a plurality of hosts; and means for making load balancing decisions responsive to the host status information.
113. ~The arrangement as recited in claim 112, wherein the means for determining is located at the plurality of hosts, and the means for making is located at load balancing infrastructure; and wherein the arrangement further comprises:
means for disseminating the host status information from the plurality of hosts to the load balancing infrastructure.
114. The arrangement as recited in claim 112, wherein the means for determining comprises means for determining application-specific host status information for the plurality of hosts, and the means for making comprises means for making the load balancing decisions responsive to the application-specific host status information.
115. The arrangement as recited in claim 112, wherein the arrangement comprises at least one system.
116. The arrangement as recited in claim 112, wherein the arrangement comprises one or more processor-accessible media.
117. An arrangement comprising:
accumulation means for accumulating host status information at a plurality of hosts; and sending means for sending the accumulated host status information from the plurality of hosts.
118. The arrangement as recited in claim 117, wherein the host status information comprises health and/or load information that is associated with the plurality of hosts and the sending means comprises:
means for sending the health. and/or load information from the plurality of hosts.
119. The arrangement as recited in claim 1 I7, wherein the accumulation means comprises:
means for accumulating the host status information with regard to applications executing on the plurality of hosts.
120. The arrangement as recited in claim 117, wherein the sending means comprises:
means for sending the accumulated host status information from the plurality of hosts to load balancing functionality.
121. An arrangement comprising:
determination means, for determining health and load information on a per application basis; and selection means for selecting an application from among a plurality of applications responsive to the health and load information.
122. The arrangement as recited in claim 121, wherein the determination means comprises:
means for determining when an application of the plurality of applications is healthy and when the application is failing or failed.
123. The arrangement as recited in claim 121, wherein the determination means comprises:
means for determining a load of a given application of a particular application type relative to loading of one or more other applications of the particular application type.
124. The arrangement as recited in claim 121, wherein the selection means comprises:
means for selecting an application endpoint from among a plurality of application endpoints responsive to the health and load information.
CA002470300A 2003-06-30 2004-06-08 Network load balancing with host status information Abandoned CA2470300A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/610,519 US7636917B2 (en) 2003-06-30 2003-06-30 Network load balancing with host status information
US10/610,519 2003-06-30

Publications (1)

Publication Number Publication Date
CA2470300A1 true CA2470300A1 (en) 2004-12-30

Family

ID=33435411

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002470300A Abandoned CA2470300A1 (en) 2003-06-30 2004-06-08 Network load balancing with host status information

Country Status (22)

Country Link
US (1) US7636917B2 (en)
EP (1) EP1494421B1 (en)
JP (1) JP4942921B2 (en)
KR (1) KR101109218B1 (en)
CN (1) CN1578320B (en)
AT (1) ATE407506T1 (en)
AU (1) AU2004202389B2 (en)
BR (1) BRPI0402591B1 (en)
CA (1) CA2470300A1 (en)
CO (1) CO5590203A1 (en)
DE (1) DE602004016255D1 (en)
EG (1) EG23984A (en)
HK (1) HK1073025A1 (en)
IL (1) IL162164A0 (en)
MX (1) MXPA04006411A (en)
MY (1) MY142244A (en)
NO (1) NO331320B1 (en)
NZ (1) NZ533148A (en)
RU (1) RU2380746C2 (en)
SG (1) SG117505A1 (en)
TW (1) TWI356311B (en)
ZA (1) ZA200404375B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10834176B2 (en) 2017-03-10 2020-11-10 The Directv Group, Inc. Automated end-to-end application deployment in a data center

Families Citing this family (372)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343413B2 (en) 2000-03-21 2008-03-11 F5 Networks, Inc. Method and system for optimizing a network by independently scaling control segments and data flow
US8380854B2 (en) 2000-03-21 2013-02-19 F5 Networks, Inc. Simplified method for processing multiple connections from the same client
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7689676B2 (en) 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7890543B2 (en) 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7716742B1 (en) 2003-05-12 2010-05-11 Sourcefire, Inc. Systems and methods for determining characteristics of a network and analyzing vulnerabilities
WO2004107132A2 (en) 2003-05-28 2004-12-09 Caymas Systems, Inc. Method, system and software for state signing of internet resources
US7760729B2 (en) 2003-05-28 2010-07-20 Citrix Systems, Inc. Policy based network address translation
US9525566B2 (en) * 2003-07-31 2016-12-20 Cloudsoft Corporation Limited Self-managed mediated information flow
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US8572249B2 (en) * 2003-12-10 2013-10-29 Aventail Llc Network appliance for balancing load and platform services
US7890996B1 (en) 2004-02-18 2011-02-15 Teros, Inc. Using statistical analysis to generate exception rules that allow legitimate messages to pass through application proxies and gateways
US7774834B1 (en) 2004-02-18 2010-08-10 Citrix Systems, Inc. Rule generalization for web application entry point modeling
US7778422B2 (en) 2004-02-27 2010-08-17 Microsoft Corporation Security associations for devices
JP2005293370A (en) * 2004-04-01 2005-10-20 Hitachi Ltd Storage control system
US20050246529A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US20060209695A1 (en) * 2005-03-15 2006-09-21 Archer Shafford R Jr Load balancing in a distributed telecommunications platform
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
AU2005266943C1 (en) 2004-07-23 2011-01-06 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
EP2264956B1 (en) 2004-07-23 2017-06-14 Citrix Systems, Inc. Method for securing remote access to private networks
US7539681B2 (en) 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US7496962B2 (en) * 2004-07-29 2009-02-24 Sourcefire, Inc. Intrusion detection strategies for hypertext transport protocol
US20060069761A1 (en) * 2004-09-14 2006-03-30 Dell Products L.P. System and method for load balancing virtual machines in a computer network
US20060072482A1 (en) * 2004-10-06 2006-04-06 Nokia Corporation Service routing
CN101069384B (en) * 2004-12-09 2010-05-05 国际商业机器公司 Method and system for managing message-based work load in network environment
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US8040903B2 (en) * 2005-02-01 2011-10-18 Hewlett-Packard Development Company, L.P. Automated configuration of point-to-point load balancing between teamed network resources of peer devices
JP4621044B2 (en) * 2005-03-15 2011-01-26 富士通株式会社 Load distribution apparatus and load distribution method
JP4848660B2 (en) * 2005-03-30 2011-12-28 ソニー株式会社 Information processing distributed system, information processing apparatus, and information processing distributed method
ATE449495T1 (en) * 2005-04-04 2009-12-15 Ericsson Telefon Ab L M METHOD AND APPARATUS FOR LOAD DISTRIBUTION ON APPLICATION SERVERS
US7797147B2 (en) 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US8489728B2 (en) 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
JP2006323526A (en) * 2005-05-17 2006-11-30 Fujitsu Ltd Cluster management program, recording medium with its program recorded, cluster management method, node and cluster
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US8135814B2 (en) * 2005-06-29 2012-03-13 At&T Intellectual Property I, L.P. Network capacity management system
US20070041327A1 (en) * 2005-08-16 2007-02-22 Cisco Technology, Inc. Multicast heartbeat signaling
US7882209B1 (en) * 2005-09-30 2011-02-01 At&T Intellectual Property Ii, L.P. Tiered and modular approach to operational support systems
US7926071B2 (en) * 2005-10-20 2011-04-12 Microsoft Corporation Load balancing interfaces
US8234378B2 (en) 2005-10-20 2012-07-31 Microsoft Corporation Load balancing in a managed execution environment
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
JP4001297B2 (en) * 2005-11-10 2007-10-31 株式会社日立製作所 Information processing system and its management server
US8046833B2 (en) 2005-11-14 2011-10-25 Sourcefire, Inc. Intrusion event correlation with network discovery information
US7733803B2 (en) 2005-11-14 2010-06-08 Sourcefire, Inc. Systems and methods for modifying network map attributes
DE602006014192D1 (en) 2005-12-02 2010-06-17 Citrix Systems Inc CERTIFICATION CERTIFICATES FROM A PROXY SERVER FOR A VIRTUALIZED CALCULATION ENVIRONMENT TO ACCESS A REMOTE RESOURCE
US7924884B2 (en) 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US8756298B2 (en) * 2005-12-21 2014-06-17 Cisco Technology, Inc. System for automatic configuration of computers in a server farm
US20070150600A1 (en) * 2005-12-22 2007-06-28 International Business Machines Corporation Method and apparatus for collecting data for characterizing HTTP session workloads
US8301839B2 (en) 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
JP4652981B2 (en) * 2006-01-13 2011-03-16 日本電信電話株式会社 DNS server selection device, DNS server selection method, DNS server selection program, and name resolution system
US20070168548A1 (en) * 2006-01-19 2007-07-19 International Business Machines Corporation Method and system for performing multi-cluster application-specific routing
US20070198524A1 (en) * 2006-02-09 2007-08-23 International Business Machines Corporation Maintaining connections between application servers and databases in a multitier computer architecture
US7675854B2 (en) 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US8531953B2 (en) * 2006-02-21 2013-09-10 Barclays Capital Inc. System and method for network traffic splitting
US20070198982A1 (en) * 2006-02-21 2007-08-23 International Business Machines Corporation Dynamic resource allocation for disparate application performance requirements
US8295275B2 (en) * 2006-03-20 2012-10-23 Intel Corporation Tagging network I/O transactions in a virtual machine run-time environment
US7643410B2 (en) * 2006-03-29 2010-01-05 Intel Corporation Method and apparatus for managing a connection in a connection orientated environment
US20070239854A1 (en) * 2006-04-11 2007-10-11 Gopalakrishnan Janakiraman Method of migrating process domain
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
CN100461719C (en) * 2006-06-15 2009-02-11 华为技术有限公司 System and method for detecting service healthiness
US7890636B2 (en) * 2006-06-28 2011-02-15 Cisco Technology, Inc. Application integrated gateway
US7760641B2 (en) * 2006-07-10 2010-07-20 International Business Machines Corporation Distributed traffic shaping across a cluster
US7948988B2 (en) 2006-07-27 2011-05-24 Sourcefire, Inc. Device, system and method for analysis of fragments in a fragment train
US8869262B2 (en) * 2006-08-03 2014-10-21 Citrix Systems, Inc. Systems and methods for application based interception of SSL/VPN traffic
US8108525B2 (en) 2006-08-03 2012-01-31 Citrix Systems, Inc. Systems and methods for managing a plurality of user sessions in a virtual private network environment
US8495181B2 (en) 2006-08-03 2013-07-23 Citrix Systems, Inc Systems and methods for application based interception SSI/VPN traffic
US7701945B2 (en) 2006-08-10 2010-04-20 Sourcefire, Inc. Device, system and method for analysis of segments in a transmission control protocol (TCP) session
US8141164B2 (en) 2006-08-21 2012-03-20 Citrix Systems, Inc. Systems and methods for dynamic decentralized load balancing across multiple sites
US7791559B2 (en) 2006-09-14 2010-09-07 Citrix Systems, Inc. System and method for multiple display support in remote access software
US8054241B2 (en) 2006-09-14 2011-11-08 Citrix Systems, Inc. Systems and methods for multiple display support in remote access software
JP4324975B2 (en) * 2006-09-27 2009-09-02 日本電気株式会社 Load reduction system, computer, and load reduction method
US20080115213A1 (en) * 2006-11-14 2008-05-15 Fmr Corp. Detecting Fraudulent Activity on a Network Using Stored Information
US8145560B2 (en) * 2006-11-14 2012-03-27 Fmr Llc Detecting fraudulent activity on a network
US8180873B2 (en) * 2006-11-14 2012-05-15 Fmr Llc Detecting fraudulent activity
US20080114858A1 (en) * 2006-11-14 2008-05-15 Fmr Corp. Reconstructing Data on a Network
US7856494B2 (en) 2006-11-14 2010-12-21 Fmr Llc Detecting and interdicting fraudulent activity on a network
WO2008127372A2 (en) * 2006-12-05 2008-10-23 Qualcomm Incorporated Apparatus and methods of a zero single point of failure load balancer
US8069352B2 (en) 2007-02-28 2011-11-29 Sourcefire, Inc. Device, system and method for timestamp analysis of segments in a transmission control protocol (TCP) session
US20080209053A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation HTTP-Based Peer-to-Peer Framework
US7760642B2 (en) 2007-03-12 2010-07-20 Citrix Systems, Inc. Systems and methods for providing quality of service precedence in TCP congestion control
US7796510B2 (en) 2007-03-12 2010-09-14 Citrix Systems, Inc. Systems and methods for providing virtual fair queueing of network traffic
CN101296176B (en) * 2007-04-25 2010-12-22 阿里巴巴集团控股有限公司 Data processing method and apparatus based on cluster
WO2008134057A1 (en) 2007-04-30 2008-11-06 Sourcefire, Inc. Real-time awareness for a computer network
US20080307426A1 (en) * 2007-06-05 2008-12-11 Telefonaktiebolaget Lm Ericsson (Publ) Dynamic load management in high availability systems
US8086674B2 (en) * 2007-06-21 2011-12-27 Research In Motion Limited Attachment server network for viewing attachments on a portable electronic device
US9032079B2 (en) * 2007-06-26 2015-05-12 Microsoft Technology Licensing, Llc Management and diagnosis of telephonic devices
US8132247B2 (en) * 2007-08-03 2012-03-06 Citrix Systems, Inc. Systems and methods for authorizing a client in an SSL VPN session failover environment
US8908700B2 (en) 2007-09-07 2014-12-09 Citrix Systems, Inc. Systems and methods for bridging a WAN accelerator with a security gateway
US8068416B2 (en) * 2007-09-20 2011-11-29 At&T Intellectual Property I, L.P. System and method of communicating a media stream
US8996707B2 (en) * 2007-09-28 2015-03-31 Alcatel Lucent Method and apparatus for performing load balancing for a control plane of a mobile communication network
US8156504B2 (en) * 2007-10-05 2012-04-10 Cisco Technology, Inc. Scalable resources in a virtualized load balancer
US7925694B2 (en) 2007-10-19 2011-04-12 Citrix Systems, Inc. Systems and methods for managing cookies via HTTP content layer
TWI399982B (en) * 2007-12-05 2013-06-21 Ol2 Inc System for compressing streaming interactive video
US7983166B2 (en) * 2008-01-03 2011-07-19 At&T Intellectual Property I, L.P. System and method of delivering video content
US8291086B2 (en) * 2008-01-18 2012-10-16 General Electric Company Method and system for accessing data in an enterprise information system
US8769660B2 (en) 2008-01-26 2014-07-01 Citrix Systems, Inc. Systems and methods for proxying cookies for SSL VPN clientless sessions
US7467207B1 (en) * 2008-02-01 2008-12-16 International Business Machines Corporation Balancing communication load in a system based on determination of user-user affinity levels
US20090199290A1 (en) * 2008-02-01 2009-08-06 Secure Computing Corporation Virtual private network system and method
US8489750B2 (en) 2008-02-28 2013-07-16 Level 3 Communications, Llc Load-balancing cluster
US11323510B2 (en) 2008-02-28 2022-05-03 Level 3 Communications, Llc Load-balancing cluster
JP2009237763A (en) * 2008-03-26 2009-10-15 Hitachi Ltd Server system and control method therefor
US8474043B2 (en) 2008-04-17 2013-06-25 Sourcefire, Inc. Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing
US8806053B1 (en) 2008-04-29 2014-08-12 F5 Networks, Inc. Methods and systems for optimizing network traffic using preemptive acknowledgment signals
JP5264297B2 (en) * 2008-06-03 2013-08-14 キヤノン株式会社 Job processing method, image processing system, and image processing apparatus
US8447881B2 (en) 2008-09-02 2013-05-21 Microsoft Corporation Load balancing for services
US8533333B2 (en) * 2008-09-03 2013-09-10 Microsoft Corporation Shared hosting using host name affinity
WO2010045089A1 (en) 2008-10-08 2010-04-22 Sourcefire, Inc. Target-based smb and dce/rpc processing for an intrusion detection system or intrusion prevention system
US8566444B1 (en) 2008-10-30 2013-10-22 F5 Networks, Inc. Methods and system for simultaneous multiple rules checking
US8738780B2 (en) * 2009-01-22 2014-05-27 Citrix Systems, Inc. System and method for hybrid communication mechanism utilizing both communication server-based and direct endpoint-to-endpoint connections
WO2010106772A1 (en) * 2009-03-17 2010-09-23 日本電気株式会社 Distributed processing system and distributed processing method
US8433749B2 (en) 2009-04-15 2013-04-30 Accenture Global Services Limited Method and system for client-side scaling of web server farm architectures in a cloud data center
US8416692B2 (en) * 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
US8613085B2 (en) * 2009-07-22 2013-12-17 Broadcom Corporation Method and system for traffic management via virtual machine migration
GB2473023A (en) 2009-08-27 2011-03-02 Intergrated Security Mfg Ltd Monitoring system
US9450804B2 (en) * 2009-09-03 2016-09-20 At&T Intellectual Property I, L.P. Anycast aware transport for content distribution networks
US8775553B2 (en) * 2009-09-11 2014-07-08 The Directv Group, Inc. Managing signal delivery to a plurality of display platforms
US10157280B2 (en) 2009-09-23 2018-12-18 F5 Networks, Inc. System and method for identifying security breach attempts of a website
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US8868961B1 (en) 2009-11-06 2014-10-21 F5 Networks, Inc. Methods for acquiring hyper transport timing and devices thereof
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8510409B1 (en) * 2009-12-23 2013-08-13 Emc Corporation Application-specific outbound source routing from a host in a data network
US8910176B2 (en) * 2010-01-15 2014-12-09 International Business Machines Corporation System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance
CN102948234B (en) * 2010-01-15 2016-08-24 爱立信(中国)通信有限公司 Including the radio resources allocation in the system of repeater
CN101788909B (en) * 2010-01-28 2012-12-05 北京天空堂科技有限公司 Solving method and device of network game server end walking system
TWI502375B (en) * 2010-03-09 2015-10-01 Alibaba Group Holding Ltd Instant messaging method, system and device
CN101783771A (en) * 2010-03-24 2010-07-21 杭州华三通信技术有限公司 Method and equipment for realizing load balance continuity
JP5809238B2 (en) 2010-04-16 2015-11-10 シスコ テクノロジー,インコーポレイテッド System and method for near real-time network attack detection, and system and method for integrated detection by detection routing
US9667569B1 (en) 2010-04-29 2017-05-30 Amazon Technologies, Inc. System and method for adaptive server shielding
CN102255932B (en) * 2010-05-20 2015-09-09 百度在线网络技术(北京)有限公司 Load-balancing method and load equalizer
JP5530810B2 (en) * 2010-06-02 2014-06-25 株式会社日立システムズ Scale-out system and method and program
US8433790B2 (en) 2010-06-11 2013-04-30 Sourcefire, Inc. System and method for assigning network blocks to sensors
CN101873237B (en) * 2010-06-13 2012-02-22 用友软件股份有限公司 Method and system for dynamically maintaining member servers in cluster
US8671182B2 (en) * 2010-06-22 2014-03-11 Sourcefire, Inc. System and method for resolving operating system or service identity conflicts
US9141625B1 (en) 2010-06-22 2015-09-22 F5 Networks, Inc. Methods for preserving flow state during virtual machine migration and devices thereof
US10015286B1 (en) 2010-06-23 2018-07-03 F5 Networks, Inc. System and method for proxying HTTP single sign on across network domains
US20120221603A1 (en) * 2010-07-02 2012-08-30 salesforces.com, Inc. Distributed mobile services
US8908545B1 (en) 2010-07-08 2014-12-09 F5 Networks, Inc. System and method for handling TCP performance in network access with driver initiated application tunnel
US8391174B2 (en) 2010-07-13 2013-03-05 Hewlett-Packard Development Company, L.P. Data packet routing
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US8244881B2 (en) * 2010-08-06 2012-08-14 Palo Alto Research Center Incorporated Service virtualization over content-centric networks
US9083760B1 (en) 2010-08-09 2015-07-14 F5 Networks, Inc. Dynamic cloning and reservation of detached idle connections
US8630174B1 (en) 2010-09-14 2014-01-14 F5 Networks, Inc. System and method for post shaping TCP packetization
US8886981B1 (en) 2010-09-15 2014-11-11 F5 Networks, Inc. Systems and methods for idle driven scheduling
US8804504B1 (en) 2010-09-16 2014-08-12 F5 Networks, Inc. System and method for reducing CPU load in processing PPP packets on a SSL-VPN tunneling device
EP2622495A4 (en) * 2010-09-27 2015-08-12 Lantronix Inc Various methods and apparatuses for accessing networked devices without accessible addresses via virtual ip addresses
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
US20120109852A1 (en) * 2010-10-27 2012-05-03 Microsoft Corporation Reactive load balancing for distributed systems
EP2633667B1 (en) 2010-10-29 2017-09-06 F5 Networks, Inc System and method for on the fly protocol conversion in obtaining policy enforcement information
US8959571B2 (en) 2010-10-29 2015-02-17 F5 Networks, Inc. Automated policy builder
JP5538560B2 (en) 2010-11-01 2014-07-02 かもめエンジニアリング株式会社 Access control method, access control apparatus, and access control program
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US8755283B2 (en) 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
CN102137005B (en) * 2010-12-31 2014-04-02 华为技术有限公司 Method, device and system for forwarding date in communication system
JP5948345B2 (en) 2011-01-11 2016-07-06 エイ10 ネットワークス インコーポレイテッドA10 Networks, Inc. Virtual application delivery chassis system
US8627467B2 (en) 2011-01-14 2014-01-07 F5 Networks, Inc. System and method for selectively storing web objects in a cache memory based on policy decisions
JP2012156698A (en) * 2011-01-25 2012-08-16 Hitachi Ltd Relay apparatus, communication network system, and load distribution method
US10135831B2 (en) 2011-01-28 2018-11-20 F5 Networks, Inc. System and method for combining an access control system with a traffic management system
US8612550B2 (en) 2011-02-07 2013-12-17 Microsoft Corporation Proxy-based cache content distribution and affinity
US8812586B1 (en) * 2011-02-15 2014-08-19 Google Inc. Correlating status information generated in a computer network
US8601034B2 (en) 2011-03-11 2013-12-03 Sourcefire, Inc. System and method for real time data awareness
US9578126B1 (en) 2011-04-30 2017-02-21 F5 Networks, Inc. System and method for automatically discovering wide area network optimized routes and devices
US9154577B2 (en) 2011-06-06 2015-10-06 A10 Networks, Inc. Sychronization of configuration file of virtual application distribution chassis
US9246819B1 (en) * 2011-06-20 2016-01-26 F5 Networks, Inc. System and method for performing message-based load balancing
US9055076B1 (en) 2011-06-23 2015-06-09 Amazon Technologies, Inc. System and method for distributed load balancing with load balancer clients for hosts
US8812727B1 (en) 2011-06-23 2014-08-19 Amazon Technologies, Inc. System and method for distributed load balancing with distributed direct server return
CN102201010A (en) * 2011-06-23 2011-09-28 清华大学 Distributed database system without sharing structure and realizing method thereof
CN102891868B (en) * 2011-07-19 2016-09-28 上海可鲁系统软件有限公司 The load-balancing method of a kind of distributed system and device
US8897154B2 (en) 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9432321B2 (en) * 2011-12-19 2016-08-30 Alcatel Lucent Method and apparatus for messaging in the cloud
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US9270766B2 (en) 2011-12-30 2016-02-23 F5 Networks, Inc. Methods for identifying network traffic characteristics to correlate and manage one or more subsequent flows and devices thereof
US9444884B2 (en) * 2011-12-31 2016-09-13 Level 3 Communications, Llc Load-aware load-balancing cluster without a central load balancer
DE102012200042A1 (en) * 2012-01-03 2013-07-04 Airbus Operations Gmbh SERVER SYSTEM, AIR OR ROOM VEHICLE AND METHOD
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9172753B1 (en) 2012-02-20 2015-10-27 F5 Networks, Inc. Methods for optimizing HTTP header based authentication and devices thereof
US9231879B1 (en) 2012-02-20 2016-01-05 F5 Networks, Inc. Methods for policy-based network traffic queue management and devices thereof
EP2853074B1 (en) 2012-04-27 2021-03-24 F5 Networks, Inc Methods for optimizing service of content requests and devices thereof
US20130308439A1 (en) * 2012-05-18 2013-11-21 Benu Networks, Inc. Highly scalable modular system with high reliability and low latency
US9363313B2 (en) * 2012-06-11 2016-06-07 Cisco Technology, Inc. Reducing virtual IP-address (VIP) failure detection time
US8805990B2 (en) 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
US10002141B2 (en) * 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US9705800B2 (en) 2012-09-25 2017-07-11 A10 Networks, Inc. Load distribution in data networks
US10021174B2 (en) * 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US9246998B2 (en) 2012-10-16 2016-01-26 Microsoft Technology Licensing, Llc Load balancer bypass
US9185006B2 (en) 2012-12-17 2015-11-10 Microsoft Technology Licensing, Llc Exchange of server health and client information through headers for request management
CN103259832A (en) * 2012-12-24 2013-08-21 中国科学院沈阳自动化研究所 Cluster resource control method for achieving dynamic load balance, fault diagnosis and failover
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
WO2014144837A1 (en) 2013-03-15 2014-09-18 A10 Networks, Inc. Processing data packets using a policy based network path
US9871712B1 (en) 2013-04-16 2018-01-16 Amazon Technologies, Inc. Health checking in a distributed load balancer
US10038626B2 (en) 2013-04-16 2018-07-31 Amazon Technologies, Inc. Multipath routing in a distributed load balancer
US10135914B2 (en) * 2013-04-16 2018-11-20 Amazon Technologies, Inc. Connection publishing in a distributed load balancer
US9553809B2 (en) * 2013-04-16 2017-01-24 Amazon Technologies, Inc. Asymmetric packet flow in a distributed load balancer
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
WO2014179753A2 (en) 2013-05-03 2014-11-06 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
WO2014193940A1 (en) 2013-05-28 2014-12-04 Convida Wireless, Llc Load balancing in the internet of things
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
CN105144836B (en) 2014-03-11 2019-06-21 华为技术有限公司 A kind of information transferring method and device
US20150261721A1 (en) * 2014-03-13 2015-09-17 Lantiq Deutschland Gmbh Flow control between processing devices
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
CN104980361B (en) 2014-04-01 2018-09-21 华为技术有限公司 A kind of load-balancing method, apparatus and system
US10742559B2 (en) 2014-04-24 2020-08-11 A10 Networks, Inc. Eliminating data traffic redirection in scalable clusters
US9961130B2 (en) * 2014-04-24 2018-05-01 A10 Networks, Inc. Distributed high availability processing methods for service sessions
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US9871849B2 (en) * 2014-05-20 2018-01-16 Citrix Systems, Inc. Systems and methods for just-in-time state sharing
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US10015143B1 (en) 2014-06-05 2018-07-03 F5 Networks, Inc. Methods for securing one or more license entitlement grants and devices thereof
WO2015195734A1 (en) * 2014-06-19 2015-12-23 Thomson Licensing Natural language control of a gateway device
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10511694B2 (en) 2014-07-23 2019-12-17 Citrix Systems, Inc. Systems and methods for application specific load balancing
US10122630B1 (en) 2014-08-15 2018-11-06 F5 Networks, Inc. Methods for network traffic presteering and devices thereof
US10432711B1 (en) * 2014-09-15 2019-10-01 Amazon Technologies, Inc. Adaptive endpoint selection
US11095715B2 (en) * 2014-09-24 2021-08-17 Ebay Inc. Assigning storage responsibility in a distributed data storage system with replication
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US10048974B1 (en) * 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9646163B2 (en) 2014-11-14 2017-05-09 Getgo, Inc. Communicating data between client devices using a hybrid connection having a regular communications pathway and a highly confidential communications pathway
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
CN105808343B (en) * 2014-12-31 2019-01-04 中国科学院沈阳自动化研究所 For the cluster resource control method in complicated production management system
US9565167B2 (en) * 2015-01-21 2017-02-07 Huawei Technologies Co., Ltd. Load balancing internet protocol security tunnels
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US10505818B1 (en) 2015-05-05 2019-12-10 F5 Networks. Inc. Methods for analyzing and load balancing based on server health and devices thereof
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
WO2017023860A1 (en) * 2015-07-31 2017-02-09 Modulus Technology Solutions Corp. Estimating wireless network load and adjusting applications to minimize network overload probability and maximize successful application operation
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10264092B2 (en) * 2015-08-24 2019-04-16 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Signature based distributed inventory caching
CN108370327A (en) 2015-09-25 2018-08-03 Fsa技术股份有限公司 More truck data stream regulating systems and method
US10623319B1 (en) * 2015-09-28 2020-04-14 Amazon Technologies, Inc. Load rebalancing in a network-based system
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US20170353537A1 (en) * 2015-10-28 2017-12-07 Fractal Industries, Inc. Predictive load balancing for a digital environment
IL242353B (en) * 2015-10-29 2021-01-31 Verint Systems Ltd System and method for soft failovers for proxy servers
US10880381B2 (en) 2015-11-04 2020-12-29 Micro Focus Llc Direct connection limitation based on a period of time
TW201721498A (en) * 2015-12-01 2017-06-16 Chunghwa Telecom Co Ltd Wired area network user management system and method with security and function scalability wherein a network controller is used to control a programmable network switch, and divert a non-authenticated terminal device to an authentication server
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9894670B1 (en) * 2015-12-17 2018-02-13 Innovium, Inc. Implementing adaptive resource allocation for network devices
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US10318288B2 (en) 2016-01-13 2019-06-11 A10 Networks, Inc. System and method to process a chain of network applications
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
TWI612429B (en) * 2016-04-12 2018-01-21 緯創資通股份有限公司 Server system and data access method using the same
US10644963B2 (en) 2016-06-13 2020-05-05 Intel Corporation Systems and methods for detecting a zombie server
US10904127B2 (en) * 2016-06-13 2021-01-26 Intel Corporation Systems and methods for detecting a zombie server
US10791088B1 (en) 2016-06-17 2020-09-29 F5 Networks, Inc. Methods for disaggregating subscribers via DHCP address translation and devices thereof
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
WO2018032499A1 (en) * 2016-08-19 2018-02-22 华为技术有限公司 Load balancing method and associated device
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
US10778585B1 (en) * 2016-11-30 2020-09-15 Amazon Technologies, Inc. Connection and application state migration for uninterrupted service availability
US10235069B2 (en) * 2016-12-22 2019-03-19 Western Digital Technologies, Inc. Load balancing by dynamically transferring memory range assignments
US10084855B2 (en) * 2017-01-23 2018-09-25 Akamai Technologies, Inc. Pixel-based load balancing
US10476945B2 (en) * 2017-02-01 2019-11-12 Juniper Networks, Inc. Consistent flow assignment in load balancing
US11496438B1 (en) 2017-02-07 2022-11-08 F5, Inc. Methods for improved network security using asymmetric traffic delivery and devices thereof
US10791119B1 (en) 2017-03-14 2020-09-29 F5 Networks, Inc. Methods for temporal password injection and devices thereof
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US10931662B1 (en) 2017-04-10 2021-02-23 F5 Networks, Inc. Methods for ephemeral authentication screening and devices thereof
US10972453B1 (en) 2017-05-03 2021-04-06 F5 Networks, Inc. Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US10212043B1 (en) * 2017-07-26 2019-02-19 Citrix Systems, Inc. Proactive link load balancing to maintain quality of link
US10599482B2 (en) 2017-08-24 2020-03-24 Google Llc Method for intra-subgraph optimization in tuple graph programs
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network
US10887235B2 (en) * 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US11122083B1 (en) 2017-09-08 2021-09-14 F5 Networks, Inc. Methods for managing network connections based on DNS data and network policies and devices thereof
KR102058541B1 (en) * 2017-12-11 2020-01-22 엔에이치엔 주식회사 Server monitering method and server monitering apparatus using the method
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
JP2019161603A (en) * 2018-03-16 2019-09-19 株式会社東芝 Load distribution device, load distribution system, program, and load distribution method
US11658995B1 (en) 2018-03-20 2023-05-23 F5, Inc. Methods for dynamically mitigating network attacks and devices thereof
US20190319933A1 (en) * 2018-04-12 2019-10-17 Alibaba Group Holding Limited Cooperative tls acceleration
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11044200B1 (en) 2018-07-06 2021-06-22 F5 Networks, Inc. Methods for service stitching using a packet header and devices thereof
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
CN110858229B (en) 2018-08-23 2023-04-07 阿里巴巴集团控股有限公司 Data processing method, device, access control system and storage medium
US20210192390A1 (en) * 2018-09-24 2021-06-24 Hewlett-Packard Development Company, L.P. Device status assessment
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
TWI684131B (en) * 2019-02-26 2020-02-01 華碩電腦股份有限公司 Data transmission device, data transmission method and non-transitory computer readable medium
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
TWI689186B (en) * 2019-04-09 2020-03-21 聚騰科技股份有限公司 Data transmission and reception method
CN110308983B (en) * 2019-04-19 2022-04-05 中国工商银行股份有限公司 Resource load balancing method and system, service node and client
EP3959675A1 (en) * 2019-04-25 2022-03-02 Liveperson, Inc. Smart capacity for workload routing
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
CN111130979B (en) * 2019-12-09 2022-02-22 苏州浪潮智能科技有限公司 Method and equipment for connecting branch node with central node in SDWAN (software development wide area network) scene
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US20210326322A1 (en) * 2020-04-17 2021-10-21 Unisys Corporation Change history
US11616721B2 (en) 2020-11-24 2023-03-28 International Business Machines Corporation In-packet version tagging utilizing a perimeter NAT
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN114039881B (en) * 2021-10-19 2023-08-08 创盛视联数码科技(北京)有限公司 Communication connection monitoring method
EP4268912A1 (en) * 2022-04-26 2023-11-01 Build A Rocket Boy Games Ltd. Dynamic transitioning of a simulating host of a portion or all of a network interactive environment
CN116233137B (en) * 2023-02-17 2023-11-17 通明智云(北京)科技有限公司 Cluster-based load sharing and backup method and device

Family Cites Families (184)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200770A (en) * 1977-09-06 1980-04-29 Stanford University Cryptographic apparatus and method
US4218582A (en) 1977-10-06 1980-08-19 The Board Of Trustees Of The Leland Stanford Junior University Public key cryptographic apparatus and method
US4405829A (en) 1977-12-14 1983-09-20 Massachusetts Institute Of Technology Cryptographic communications system and method
US4424414A (en) * 1978-05-01 1984-01-03 Board Of Trustees Of The Leland Stanford Junior University Exponentiation cryptographic apparatus and method
DE3789215T2 (en) 1986-12-22 1994-06-01 American Telephone & Telegraph Controlled dynamic load balancing for a multiprocessor system.
US5031089A (en) 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
JPH0488489A (en) 1990-08-01 1992-03-23 Internatl Business Mach Corp <Ibm> Character recognizing device and method using generalized half conversion
WO1992005485A2 (en) * 1990-09-17 1992-04-02 Cabletron Systems, Inc. Network management system using model-based intelligence
JPH04287290A (en) 1990-11-20 1992-10-12 Imra America Inc Hough transformation picture processor
WO1992016904A1 (en) 1991-03-18 1992-10-01 Echelon Corporation Binder interface structure
EP0576574B1 (en) * 1991-03-18 2001-10-31 Echelon Corporation Programming language structures for use in a network for communicating, sensing and controlling information
US6115393A (en) 1991-04-12 2000-09-05 Concord Communications, Inc. Network monitoring
IL99923A0 (en) 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5371852A (en) 1992-10-14 1994-12-06 International Business Machines Corporation Method and apparatus for making a cluster of computers appear as a single host on a network
US5557774A (en) 1993-03-22 1996-09-17 Hitachi, Ltd. Method for making test environmental programs
BR9402027A (en) * 1993-05-28 1994-12-13 Xerox Corp Process for managing a configuration and ensuring compatibility between components in a computer system, and process for eliminating incompatibilities between resident software and migration software in an automated computer system
JP3487515B2 (en) * 1993-06-15 2004-01-19 株式会社日立製作所 Distributed processing system and distributed processing method
US5686940A (en) 1993-12-24 1997-11-11 Rohm Co., Ltd. Display apparatus
US5668995A (en) 1994-04-22 1997-09-16 Ncr Corporation Method and apparatus for capacity planning for multiprocessor computer systems in client/server environments
JPH0844677A (en) * 1994-07-29 1996-02-16 Toshiba Corp Distributed processing system
WO1996016497A1 (en) * 1994-11-21 1996-05-30 Oracle Corporation Transferring binary large objects (blobs) in a network environment
US5758351A (en) 1995-03-01 1998-05-26 Sterling Software, Inc. System and method for the creation and use of surrogate information system objects
US5724508A (en) 1995-03-09 1998-03-03 Insoft, Inc. Apparatus for collaborative computing
US5774668A (en) 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5895499A (en) * 1995-07-03 1999-04-20 Sun Microsystems, Inc. Cross-domain data transfer using deferred page remapping
US5917730A (en) 1995-08-17 1999-06-29 Gse Process Solutions, Inc. Computer implemented object oriented visualization system and method
US5774689A (en) 1995-09-22 1998-06-30 Bell Atlantic Network Services, Inc. Network configuration management system for digital communication networks
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5684800A (en) 1995-11-15 1997-11-04 Cabletron Systems, Inc. Method for establishing restricted broadcast groups in a switched network
US5801970A (en) 1995-12-06 1998-09-01 Martin Marietta Corporation Model-based feature tracking system
GB2309558A (en) * 1996-01-26 1997-07-30 Ibm Load balancing across the processors of a server computer
JP3847364B2 (en) * 1996-02-14 2006-11-22 富士通株式会社 Load share system
JP3083476B2 (en) * 1996-03-06 2000-09-04 松下電器産業株式会社 Application server system
JPH09244940A (en) * 1996-03-12 1997-09-19 Hitachi Ltd Method for managing distributed computer resource
US5768271A (en) 1996-04-12 1998-06-16 Alcatel Data Networks Inc. Virtual private network
US6085238A (en) 1996-04-23 2000-07-04 Matsushita Electric Works, Ltd. Virtual LAN system
US5748958A (en) 1996-04-30 1998-05-05 International Business Machines Corporation System for utilizing batch requests to present membership changes to process groups
US5845124A (en) 1996-05-01 1998-12-01 Ncr Corporation Systems and methods for generating and displaying a symbolic representation of a network model
EP0812086B1 (en) 1996-06-07 2007-09-05 Nippon Telegraph And Telephone Corporation Vlan control system and method
KR100204029B1 (en) 1996-06-19 1999-06-15 이계철 Allocation method of virtual link at atm switching system
US5822531A (en) 1996-07-22 1998-10-13 International Business Machines Corporation Method and system for dynamically reconfiguring a cluster of computer systems
US5796830A (en) * 1996-07-29 1998-08-18 International Business Machines Corporation Interoperable cryptographic key recovery system
US5774660A (en) 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US5818937A (en) 1996-08-12 1998-10-06 Ncr Corporation Telephone tone security device
US5930798A (en) 1996-08-15 1999-07-27 Predicate Logic, Inc. Universal data measurement, analysis and control system
US5918017A (en) 1996-08-23 1999-06-29 Internatioinal Business Machines Corp. System and method for providing dynamically alterable computer clusters for message routing
US6236365B1 (en) 1996-09-09 2001-05-22 Tracbeam, Llc Location of a mobile station using a plurality of commercial wireless infrastructures
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US5790895A (en) 1996-10-18 1998-08-04 Compaq Computer Corporation Modem sharing
US5784463A (en) 1996-12-04 1998-07-21 V-One Corporation Token distribution, registration, and dynamic configuration of user entitlement for an application level security system and method
US5938732A (en) 1996-12-09 1999-08-17 Sun Microsystems, Inc. Load balancing and failover of network services
EP1015966A2 (en) 1996-12-13 2000-07-05 Maves International Software, Inc. Method, system and data structures for computer software application development and execution
GB9626241D0 (en) 1996-12-18 1997-02-05 Ncr Int Inc Secure data processing method and system
US5845277A (en) 1996-12-19 1998-12-01 Mci Communications Corporation Production of statistically-based network maps
US6272523B1 (en) 1996-12-20 2001-08-07 International Business Machines Corporation Distributed networking using logical processes
US6112243A (en) 1996-12-30 2000-08-29 Intel Corporation Method and apparatus for allocating tasks to remote networked processors
JPH10198642A (en) * 1997-01-09 1998-07-31 Fujitsu Ltd Server device
US5826015A (en) 1997-02-20 1998-10-20 Digital Equipment Corporation Method and apparatus for secure remote programming of firmware and configurations of a computer over a network
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US5958009A (en) 1997-02-27 1999-09-28 Hewlett-Packard Company System and method for efficiently monitoring quality of service in a distributed processing environment
US6067580A (en) 1997-03-11 2000-05-23 International Business Machines Corporation Integrating distributed computing environment remote procedure calls with an advisory work load manager
US5968126A (en) 1997-04-02 1999-10-19 Switchsoft Systems, Inc. User-based binding of network stations to broadcast domains
JP2001519121A (en) 1997-04-04 2001-10-16 アセンド コミュニケーションズ インコーポレイテッド High-speed packet scheduling method and apparatus
CA2202572C (en) 1997-04-14 2004-02-10 Ka Lun Eddie Law A scaleable web server and method of efficiently managing multiple servers
US6065058A (en) 1997-05-09 2000-05-16 International Business Machines Corp. Dynamic push filtering based on information exchanged among nodes in a proxy hierarchy
US6049528A (en) * 1997-06-30 2000-04-11 Sun Microsystems, Inc. Trunking ethernet-compatible networks
FR2765702B1 (en) 1997-07-02 2001-07-06 Bull Sa INFORMATION PROCESSING SYSTEM ARCHITECTURE
US6185308B1 (en) * 1997-07-07 2001-02-06 Fujitsu Limited Key recovery system
US6233610B1 (en) 1997-08-27 2001-05-15 Northern Telecom Limited Communications network having management system architecture supporting reuse
US5960371A (en) 1997-09-04 1999-09-28 Schlumberger Technology Corporation Method of determining dips and azimuths of fractures from borehole images
US6041054A (en) * 1997-09-24 2000-03-21 Telefonaktiebolaget Lm Ericsson Efficient transport of internet protocol packets using asynchronous transfer mode adaptation layer two
JP3649367B2 (en) * 1997-09-26 2005-05-18 ソニー株式会社 Packet transmission control method and apparatus
EP0907145A3 (en) 1997-10-03 2003-03-26 Nippon Telegraph and Telephone Corporation Method and equipment for extracting image features from image sequence
US6192401B1 (en) * 1997-10-21 2001-02-20 Sun Microsystems, Inc. System and method for determining cluster membership in a heterogeneous distributed system
US6047325A (en) * 1997-10-24 2000-04-04 Jain; Lalit Network device for supporting construction of virtual local area networks on arbitrary local and wide area computer networks
US6178529B1 (en) * 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6088734A (en) 1997-11-12 2000-07-11 International Business Machines Corporation Systems methods and computer program products for controlling earliest deadline first scheduling at ATM nodes
US6125447A (en) 1997-12-11 2000-09-26 Sun Microsystems, Inc. Protection domains to provide security in a computer system
US6035405A (en) * 1997-12-22 2000-03-07 Nortel Networks Corporation Secure virtual LANs
US6370584B1 (en) * 1998-01-13 2002-04-09 Trustees Of Boston University Distributed routing
US6182275B1 (en) * 1998-01-26 2001-01-30 Dell Usa, L.P. Generation of a compatible order for a computer system
US6086618A (en) 1998-01-26 2000-07-11 Microsoft Corporation Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration
US6076108A (en) 1998-03-06 2000-06-13 I2 Technologies, Inc. System and method for maintaining a state for a user session using a web system having a global session server
US6208649B1 (en) * 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6691148B1 (en) * 1998-03-13 2004-02-10 Verizon Corporate Services Group Inc. Framework for providing quality of service requirements in a distributed object-oriented computer system
TW374965B (en) 1998-03-17 1999-11-21 Winbond Electronics Corp Method of processing of transmission of confidential data and the network system
US6098093A (en) 1998-03-19 2000-08-01 International Business Machines Corp. Maintaining sessions in a clustered server environment
US6393386B1 (en) * 1998-03-26 2002-05-21 Visual Networks Technologies, Inc. Dynamic modeling of complex networks and prediction of impacts of faults therein
US6236901B1 (en) 1998-03-31 2001-05-22 Dell Usa, L.P. Manufacturing system and method for assembly of computer systems in a build-to-order environment
WO1999052237A1 (en) * 1998-04-03 1999-10-14 Vertical Networks Inc. System and method for transmitting voice and data using intelligent bridged tdm and packet buses
US6118785A (en) 1998-04-07 2000-09-12 3Com Corporation Point-to-point protocol with a signaling channel
US6059842A (en) 1998-04-14 2000-05-09 International Business Machines Corp. System and method for optimizing computer software and hardware
US6208345B1 (en) * 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6167052A (en) 1998-04-27 2000-12-26 Vpnx.Com, Inc. Establishing connectivity in networks
US6311144B1 (en) 1998-05-13 2001-10-30 Nabil A. Abu El Ata Method and apparatus for designing and analyzing information systems using multi-layer mathematical models
FR2779018B1 (en) * 1998-05-22 2000-08-18 Activcard TERMINAL AND SYSTEM FOR IMPLEMENTING SECURE ELECTRONIC TRANSACTIONS
US6269076B1 (en) 1998-05-28 2001-07-31 3Com Corporation Method of resolving split virtual LANs utilizing a network management system
US6360265B1 (en) * 1998-07-08 2002-03-19 Lucent Technologies Inc. Arrangement of delivering internet protocol datagrams for multimedia services to the same server
US6226788B1 (en) 1998-07-22 2001-05-01 Cisco Technology, Inc. Extensible network management system
US6266707B1 (en) 1998-08-17 2001-07-24 International Business Machines Corporation System and method for IP network address translation and IP filtering with dynamic address resolution
US6336138B1 (en) * 1998-08-25 2002-01-01 Hewlett-Packard Company Template-driven approach for generating models on network services
US6327622B1 (en) 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6311270B1 (en) 1998-09-14 2001-10-30 International Business Machines Corporation Method and apparatus for securing communication utilizing a security processor
US6167383A (en) 1998-09-22 2000-12-26 Dell Usa, Lp Method and apparatus for providing customer configured machines at an internet site
US6253230B1 (en) 1998-09-22 2001-06-26 International Business Machines Corporation Distributed scalable device for selecting a server from a server cluster and a switched path to the selected server
US6230312B1 (en) 1998-10-02 2001-05-08 Microsoft Corporation Automatic detection of per-unit location constraints
US6438652B1 (en) * 1998-10-09 2002-08-20 International Business Machines Corporation Load balancing cooperating cache servers by shifting forwarded request
US6546423B1 (en) * 1998-10-22 2003-04-08 At&T Corp. System and method for network load balancing
US6212559B1 (en) * 1998-10-28 2001-04-03 Trw Inc. Automated configuration of internet-like computer networks
JP3820777B2 (en) * 1998-11-12 2006-09-13 富士ゼロックス株式会社 Private key deposit system and method
US6272522B1 (en) 1998-11-17 2001-08-07 Sun Microsystems, Incorporated Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
US6330605B1 (en) 1998-11-19 2001-12-11 Volera, Inc. Proxy cache cluster
US6108702A (en) 1998-12-02 2000-08-22 Micromuse, Inc. Method and apparatus for determining accurate topology features of a network
US6336171B1 (en) * 1998-12-23 2002-01-01 Ncr Corporation Resource protection in a cluster environment
US6570847B1 (en) * 1998-12-31 2003-05-27 At&T Corp. Method and system for network traffic rate control based on fractional tokens
US6691168B1 (en) * 1998-12-31 2004-02-10 Pmc-Sierra Method and apparatus for high-speed network rule processing
US6377996B1 (en) * 1999-02-18 2002-04-23 International Business Machines Corporation System for seamless streaming of data stored on a network of distributed primary and target servers using segmentation information exchanged among all servers during streaming
JP2000268012A (en) * 1999-03-12 2000-09-29 Nec Corp Method and device for distributing load in client server system
US6341356B1 (en) * 1999-03-25 2002-01-22 International Business Machines Corporation System for I/O path load balancing and failure which can be ported to a plurality of operating environments
JP2000322288A (en) * 1999-05-06 2000-11-24 Fujitsu Ltd Distributed object development system and computer readable recording medium for recording program for execution of distributed object development by computer
US6757744B1 (en) * 1999-05-12 2004-06-29 Unisys Corporation Distributed transport communications manager with messaging subsystem for high-speed communications between heterogeneous computer systems
CN100384191C (en) * 1999-06-10 2008-04-23 阿尔卡塔尔互联网运行公司 Strategy based network architecture
US6539494B1 (en) * 1999-06-17 2003-03-25 Art Technology Group, Inc. Internet server session backup apparatus
US6505244B1 (en) * 1999-06-29 2003-01-07 Cisco Technology Inc. Policy engine which supports application specific plug-ins for enforcing policies in a feedback-based, adaptive data network
US6367010B1 (en) * 1999-07-02 2002-04-02 Postx Corporation Method for generating secure symmetric encryption and decryption
US6684335B1 (en) * 1999-08-19 2004-01-27 Epstein, Iii Edwin A. Resistance cell architecture
US7162427B1 (en) * 1999-08-20 2007-01-09 Electronic Data Systems Corporation Structure and method of modeling integrated business and information technology frameworks and architecture in support of a business
US6370573B1 (en) * 1999-08-31 2002-04-09 Accenture Llp System, method and article of manufacture for managing an environment of a development architecture framework
US6256773B1 (en) 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6351685B1 (en) * 1999-11-05 2002-02-26 International Business Machines Corporation Wireless communication between multiple intelligent pickers and with a central job queue in an automated data storage library
US6598077B2 (en) * 1999-12-06 2003-07-22 Warp Solutions, Inc. System and method for dynamic content routing
US6529953B1 (en) * 1999-12-17 2003-03-04 Reliable Network Solutions Scalable computer network resource monitoring and location system
US6862613B1 (en) * 2000-01-10 2005-03-01 Sun Microsystems, Inc. Method and apparatus for managing operations of clustered computer systems
US6983317B1 (en) * 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6701363B1 (en) * 2000-02-29 2004-03-02 International Business Machines Corporation Method, computer program product, and system for deriving web transaction performance metrics
US7506034B2 (en) * 2000-03-03 2009-03-17 Intel Corporation Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US6678821B1 (en) * 2000-03-23 2004-01-13 E-Witness Inc. Method and system for restricting access to the private key of a user in a public key infrastructure
US6574195B2 (en) * 2000-04-19 2003-06-03 Caspian Networks, Inc. Micro-flow management
WO2001084313A2 (en) * 2000-05-02 2001-11-08 Sun Microsystems, Inc. Method and system for achieving high availability in a networked computer system
US6675308B1 (en) * 2000-05-09 2004-01-06 3Com Corporation Methods of determining whether a network interface card entry within the system registry pertains to physical hardware or to a virtual device
JP2002108910A (en) * 2000-09-27 2002-04-12 Nec Soft Ltd Enciphered filing system, enciphered file retrieving method and computer readable recording medium
US7272653B2 (en) * 2000-09-28 2007-09-18 International Business Machines Corporation System and method for implementing a clustered load balancer
US6886038B1 (en) * 2000-10-24 2005-04-26 Microsoft Corporation System and method for restricting data transfers and managing software components of distributed computers
US6853841B1 (en) * 2000-10-25 2005-02-08 Sun Microsystems, Inc. Protocol for a remote control device to enable control of network attached devices
US7003574B1 (en) * 2000-11-01 2006-02-21 Microsoft Corporation Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US6785707B2 (en) * 2000-11-14 2004-08-31 Bitfone Corp. Enhanced multimedia mobile content delivery and message system using cache management
US6856591B1 (en) * 2000-12-15 2005-02-15 Cisco Technology, Inc. Method and system for high reliability cluster management
US20030046615A1 (en) * 2000-12-22 2003-03-06 Alan Stone System and method for adaptive reliability balancing in distributed programming networks
US7383329B2 (en) * 2001-02-13 2008-06-03 Aventail, Llc Distributed cache for state transfer operations
US7003562B2 (en) * 2001-03-27 2006-02-21 Redseal Systems, Inc. Method and apparatus for network wide policy-based analysis of configurations of devices
US7162634B2 (en) * 2001-04-18 2007-01-09 Thomson Licensing Method for providing security on a powerline-modem network
US7194439B2 (en) * 2001-04-30 2007-03-20 International Business Machines Corporation Method and system for correlating job accounting information with software license information
US20030014644A1 (en) * 2001-05-02 2003-01-16 Burns James E. Method and system for security policy management
US7013462B2 (en) * 2001-05-10 2006-03-14 Hewlett-Packard Development Company, L.P. Method to map an inventory management system to a configuration management system
WO2002098526A1 (en) * 2001-06-04 2002-12-12 Playnet, Inc. System and method for distributing a multi-client game/application over a communications network
US20030009559A1 (en) * 2001-07-09 2003-01-09 Naoya Ikeda Network system and method of distributing accesses to a plurality of server apparatus in the network system
US7174379B2 (en) * 2001-08-03 2007-02-06 International Business Machines Corporation Managing server resources for hosted applications
US7765283B2 (en) * 2001-08-15 2010-07-27 Cisco Technology, Inc. Network provisioning in a distributed network management architecture
US20030041159A1 (en) * 2001-08-17 2003-02-27 David Tinsley Systems and method for presenting customizable multimedia presentations
US20030041142A1 (en) * 2001-08-27 2003-02-27 Nec Usa, Inc. Generic network monitoring tool
US6980978B2 (en) * 2001-09-07 2005-12-27 International Business Machines Corporation Site integration management system for operational support service in an internet data center
US7500069B2 (en) * 2001-09-17 2009-03-03 Hewlett-Packard Development Company, L.P. System and method for providing secure access to network logical storage partitions
US7769823B2 (en) * 2001-09-28 2010-08-03 F5 Networks, Inc. Method and system for distributing requests for content
US7200665B2 (en) * 2001-10-17 2007-04-03 Hewlett-Packard Development Company, L.P. Allowing requests of a session to be serviced by different servers in a multi-server data service system
US7194616B2 (en) * 2001-10-27 2007-03-20 International Business Machines Corporation Flexible temporary capacity upgrade/downgrade in a computer system without involvement of the operating system
US20030126464A1 (en) * 2001-12-04 2003-07-03 Mcdaniel Patrick D. Method and system for determining and enforcing security policy in a communication session
US6990666B2 (en) * 2002-03-18 2006-01-24 Surgient Inc. Near on-line server
US6681262B1 (en) * 2002-05-06 2004-01-20 Infinicon Systems Network data flow optimization
US20040002878A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Method and system for user-determined authentication in a federated environment
US7191344B2 (en) * 2002-08-08 2007-03-13 Authenex, Inc. Method and system for controlling access to data stored on a data storage device
US20040054791A1 (en) * 2002-09-17 2004-03-18 Krishnendu Chakraborty System and method for enforcing user policies on a web server
US7890543B2 (en) * 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7689676B2 (en) * 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US8122106B2 (en) * 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7350186B2 (en) * 2003-03-10 2008-03-25 International Business Machines Corporation Methods and apparatus for managing computing deployment in presence of variable workload
US7603442B2 (en) * 2003-06-20 2009-10-13 Microsoft Corporation Method and system for maintaining service dependency relationships in a computer system
US7606929B2 (en) * 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US20060025984A1 (en) * 2004-08-02 2006-02-02 Microsoft Corporation Automatic validation and calibration of transaction-based performance models
US8627149B2 (en) * 2004-08-30 2014-01-07 International Business Machines Corporation Techniques for health monitoring and control of application servers
US7333000B2 (en) * 2004-11-12 2008-02-19 Afco Systems Development, Inc. Tracking system and method for electrically powered equipment
US7350068B2 (en) * 2005-04-22 2008-03-25 International Business Machines Corporation Server blade network boot method that minimizes required network bandwidth
US7805496B2 (en) * 2005-05-10 2010-09-28 International Business Machines Corporation Automatic generation of hybrid performance models

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10834176B2 (en) 2017-03-10 2020-11-10 The Directv Group, Inc. Automated end-to-end application deployment in a data center
US11297128B2 (en) 2017-03-10 2022-04-05 Directv, Llc Automated end-to-end application deployment in a data center

Also Published As

Publication number Publication date
AU2004202389A1 (en) 2005-01-20
TWI356311B (en) 2012-01-11
RU2004117220A (en) 2006-01-10
DE602004016255D1 (en) 2008-10-16
TW200506646A (en) 2005-02-16
CO5590203A1 (en) 2005-12-30
HK1073025A1 (en) 2005-09-16
ZA200404375B (en) 2004-12-09
US20040268358A1 (en) 2004-12-30
KR101109218B1 (en) 2012-01-30
CN1578320B (en) 2012-06-20
NO20042744L (en) 2005-01-03
CN1578320A (en) 2005-02-09
ATE407506T1 (en) 2008-09-15
BRPI0402591A (en) 2005-02-09
RU2380746C2 (en) 2010-01-27
EG23984A (en) 2008-02-27
KR20050002617A (en) 2005-01-07
NO331320B1 (en) 2011-11-21
IL162164A0 (en) 2005-11-20
AU2004202389B2 (en) 2009-12-10
JP2005025756A (en) 2005-01-27
EP1494421B1 (en) 2008-09-03
MY142244A (en) 2010-11-15
EP1494421A1 (en) 2005-01-05
NZ533148A (en) 2006-02-24
JP4942921B2 (en) 2012-05-30
US7636917B2 (en) 2009-12-22
MXPA04006411A (en) 2005-03-31
SG117505A1 (en) 2005-12-29
BRPI0402591B1 (en) 2018-10-16

Similar Documents

Publication Publication Date Title
CA2470300A1 (en) Network load balancing with host status information
US7613822B2 (en) Network load balancing with session information
US7590736B2 (en) Flexible network load balancing
US7567504B2 (en) Network load balancing with traffic routing
CA2470420C (en) Network load balancing with connection manipulation
US7363347B2 (en) Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
US7644159B2 (en) Load balancing for a server farm
US9942153B2 (en) Multiple persistant load balancer system
RU2387002C2 (en) Levelling network load through connection control
Rawal et al. Multi-client/Multi-server split architecture
WO2023003773A1 (en) Cluster-aware multipath transmission control protocol (mptcp) session load balancing
US11272014B2 (en) Systems and methods for reducing connection setup latency
Ivanisenko Methods and Algorithms of load balancing
Hosseini et al. Yuz: Improving Performance of Cluster-Based Services by Near-L4 Session-Persistent Load Balancing
Koskinen IP substitution as a building block for fault tolerance in stateless distributed network services
Kang et al. Efficient prioritized service recovery using content-aware routing mechanism in web server cluster
Perlegos Transparent Failover
Kostic et al. Cheetah: A High-Speed Programmable Load-Balancer Framework with Guaranteed Per-Connection-Consistency

Legal Events

Date Code Title Description
EEER Examination request
FZDE Discontinued

Effective date: 20140610