US9300733B2 - System and/or method for client-driven server load distribution - Google Patents

System and/or method for client-driven server load distribution Download PDF

Info

Publication number
US9300733B2
US9300733B2 US13/305,693 US201113305693A US9300733B2 US 9300733 B2 US9300733 B2 US 9300733B2 US 201113305693 A US201113305693 A US 201113305693A US 9300733 B2 US9300733 B2 US 9300733B2
Authority
US
United States
Prior art keywords
server
message
client
initiation message
session initiation
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.)
Active
Application number
US13/305,693
Other versions
US20120278493A1 (en
Inventor
Michael Thornburgh
Matthew Kaufman
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.)
Adobe Inc
Original Assignee
Adobe Systems Inc
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 Adobe Systems Inc filed Critical Adobe Systems Inc
Priority to US13/305,693 priority Critical patent/US9300733B2/en
Assigned to ADOBE SYSTEMS INCORPORATED reassignment ADOBE SYSTEMS INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KAUFMAN, MATTHEW, THORNBURGH, MICHAEL
Publication of US20120278493A1 publication Critical patent/US20120278493A1/en
Application granted granted Critical
Publication of US9300733B2 publication Critical patent/US9300733B2/en
Assigned to ADOBE INC. reassignment ADOBE INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: ADOBE SYSTEMS INCORPORATED
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/1002
    • 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/101Server selection for load balancing based on network conditions

Definitions

  • the subject matter disclosed herein relates to server load distribution.
  • a client may receive a requested service and/or resource from any one of several servers capable of providing the requested service and/or resource.
  • a server is typically resource constrained and may be slow to respond to requests from a client if the server is already heavily loaded with other tasks and/or requests. Accordingly, load balancing techniques are typically applied to multiple servers to, for example, direct new requests for server resources to servers that are the least busy or occupied.
  • a load monitor is typically deployed for routing requests for server resources to servers in the cluster that are least loaded.
  • a load monitor may track metrics associated with servers to determine the extent to which they are occupied or busy. New requests are then typically routed to the server or servers in the cluster that are the least occupied.
  • Such a system for load balancing among a plurality of servers in a cluster is described in U.S. Pat. No. 7,039,916.
  • geographic load balancing systems are typically available to direct client requests to a geographically nearest server having sufficient resources available to provide a requested resource to a client.
  • geographic load balancing systems are typically costly and complex.
  • FIG. 1 is a schematic diagram of a network topology for transmitting information between clients and servers according to an embodiment.
  • FIG. 2 is a flow diagram of a process associated with actions of a client for initiating a session with a server according to an embodiment.
  • FIG. 3 is a flow diagram of a process associated with actions of a server which is responsive to a request for a service from a client device according to an embodiment.
  • FIG. 4 is a schematic diagram of a computing platform according to an embodiment.
  • Instructions relate to expressions which represent one or more logical operations.
  • instructions may be “machine-readable” by being interpretable by a machine for executing one or more operations on one or more data objects.
  • instructions as referred to herein may relate to encoded commands which are executable by a processing circuit having a command set which includes the encoded commands.
  • Such an instruction may be encoded in the form of a machine language understood by the processing circuit. Again, these are merely examples of an instruction and claimed subject matter is not limited in this respect.
  • Storage medium as referred to herein relates to media capable of maintaining expressions which are perceivable by one or more machines.
  • a storage medium may comprise one or more storage devices for storing machine-readable instructions and/or information.
  • Such storage devices may comprise any one of several media types including, for example, magnetic, optical or semiconductor storage media.
  • Such actions and/or processes may be executed by a computing platform under the control of machine-readable instructions stored in a storage medium. Further, unless specifically stated otherwise, process described herein, with reference to flow diagrams or otherwise, may also be executed and/or controlled, in whole or in part, by such a computing platform.
  • a “computer program” as referred to herein relates to an organized list of instructions that, when executed, causes a computing platform and/or machine to behave in a predetermined manner.
  • a computer program may comprise machine-readable instructions that are executable by a computing platform to perform one or more desired tasks.
  • a computer program may define inputs and outputs such that execution of the program may provide outputs based, at least in part, on the inputs.
  • these are merely examples of a computer program and claimed subject matter is not limited in these respects.
  • a computer program may comprise one or more “software components” comprising instructions that are executable as an integrated part of the computer program.
  • a computer program may comprise multiple software components that are individually created to perform associated functions of the computer program. The different components may then be integrated together to provide a functioning computer program.
  • these are merely examples of a computer program and claimed subject matter is not limited in these respects.
  • an “application” as referred to herein relates to a computer program or group of computer programs capable of providing a desired result and/or action.
  • such an application may comprise one or more computer programs that perform tasks in connection with providing a service and/or resource to a user.
  • an application may comprise one or more end-user computer programs such as database programs, spreadsheets, word processors, computer programs that are accessible through a network browser, electronic mail, interactive games, video and/or image processing programs, media presentation programs, calendars, financial application software, inventory control systems and/or the like.
  • end-user computer programs such as database programs, spreadsheets, word processors, computer programs that are accessible through a network browser, electronic mail, interactive games, video and/or image processing programs, media presentation programs, calendars, financial application software, inventory control systems and/or the like.
  • these are merely examples of an application and claimed subject matter is not limited in these respects.
  • a computing platform may comprise one or more “communication adapters” to enable communication between processes executing on the computing platform and a network.
  • a communication adapter may comprise a device capable of transmitting information to and/or receiving information from a communication channel and/or data link.
  • a communication adapter may be capable of transmitting information to and/or receiving information from a data transmission medium according to a predefined communication protocol.
  • this is merely an example of a communication adapter and claimed subject matter is not limited in this respect.
  • a “network” as referred to herein relates to a plurality of devices capable of communicating through transmission of information over data transmission media.
  • a network may transmit data between devices over data links according to one or more communication protocols.
  • this is merely an example of a network according to a particular embodiment and claimed subject matter is not limited in this respect.
  • a “client” as referred to herein relates to a process that is capable of communicating with other processes through a network to perform one or more functions or tasks.
  • a client may comprise one or more application programs hosted on a computing platform capable of transmitting information to and/or receiving information from a network through a communication adapter.
  • this is merely one example of an implementation of a client according to a particular embodiment and claimed subject matter is not limited in this respect.
  • a “server” as referred to herein relates to a process that is capable of providing a service and/or resource to other processes, such as clients, in communication with the server over a network.
  • a server may comprise one or more application programs hosted on a computing platform capable of transmitting information to and/or receiving information from a network through a communication adapter.
  • this is merely one example of an implementation of a server according to a particular embodiment and claimed subject matter is not limited in this respect.
  • a “session” as referred to herein relates to period during which processes communicate over a network to perform one or more tasks, operations and/or functions.
  • a session may be established between a client and a server for the purpose of providing one or more resources and/or services to the client.
  • client and server may be adapted to communicate through the transmission of datagrams and/or packets according to a protocol.
  • such a session may be established according to a particular communication protocol enabled by a network employing network, data link and physical layer protocols for transmission of information between processes according to associated addresses.
  • a load balancing monitor for load balancing among servers typically entails the use of a dedicated network appliance to monitor network traffic between a network and servers in a cluster of servers. This typically also requires server resources to be closely located within a geographical area and to be connected to the load balancing monitor. Accordingly, the use of such a load balancing monitor may be ineffective at efficiently allocating server resources that are geographically dispersed. As pointed out above, geographic load balancing solutions may enable allocation of server resources that are geographically dispersed. However, such systems are complex to set and administer, and often require reconfiguration if a network environment changes.
  • a client to receive a service and/or resource may select from among a plurality of servers to provide that service and/or resource based, at least in part, on a measurement of “responsiveness” of such servers in a manner that obviates the need for a dedicated load balancing monitor and enables efficient allocation of server resources that are geographically dispersed.
  • responsiveness of a server may be caused by multiple factors such as, for example, availability of computing resources at the server to respond to client requests, and delays associated with transmitting information in a network between the server and a client.
  • these are merely examples of factors that may determine a responsiveness of a server and claimed subject matter is not limited in this respect.
  • Responsiveness of a server may be measured based, at least in part, on a round-trip delay between transmission of a message from a client to the server and receipt of a response message at the client.
  • a first portion of the round-trip delay may comprise a delay associated with processing a message received at the server and transmitting a response message from the server.
  • a server that is heavily loaded with other tasks may incur a longer delay in processing such a message than a server that is not as heavily loaded.
  • a second portion of the round-trip delay may comprise a delay associated with transmitting messages between a client and a server over network infrastructure. For example, transmitting messages between a client and a first server may incur a shorter delay than a delay associated with transmitting message between a client and a second server which are geographically further apart from one another than the client and the first server.
  • FIG. 1 is a schematic diagram of a system 10 that is capable of establishing a session between a client 14 and one or more servers 16 over a network 12 .
  • Network 12 may employ data links (not shown) comprising one or more data transmission mediums such as, for example, cabling (e.g., fiber optic, twisted wire pair, coaxial), satellite transmission links or terrestrial wireless transmission links.
  • data transmission mediums such as, for example, cabling (e.g., fiber optic, twisted wire pair, coaxial), satellite transmission links or terrestrial wireless transmission links.
  • cabling e.g., fiber optic, twisted wire pair, coaxial
  • satellite transmission links e.g., satellite transmission links or terrestrial wireless transmission links.
  • network 12 may employ one or more communication protocols for transmitting information between a source and a destination such as, for example, an Internet Protocol (IP), asynchronous transfer mode (ATM) and/or communication protocols adapted for use on wireless transmission links.
  • IP Internet Protocol
  • ATM asynchronous transfer mode
  • network 12 may comprise one or more network topologies and/or configurations such as, for example, one or more local area networks, one or more Intranets, the Internet, wireless carrier infrastructure Internet versus Intranet, and/or wireless carrier infrastructure, just to name a few examples.
  • client 14 may comprise one or more processes hosted on a computing platform that is communicatively coupled to network 12 by a communication adapter (not shown).
  • servers 16 may comprise processes hosted on one or more computing platforms connected to network 12 by an associated communication adapter.
  • each server 16 may be hosted on its own associated computing platform which is distinct from computing platforms hosting other servers 16 .
  • two or more servers may be hosted on a single computing platform.
  • client 14 may select a server from among servers 16 to provide a service by, for example, establishing a session through which client 14 and server 16 may communicate over network 12 .
  • a server may comprise a print server adapted to process print jobs, web server, email server, content server adapted to distribute audio or video content (e.g., through streaming) such as, for example, the Adobe® Flash Media Server sold by Adobe Systems Inc. and/or other servers capable of streaming audio and/or video content.
  • Client 14 may comprise any one of several application programs hosted on a computing platform such as, for example, email applications, web browsers, document processing programs, media players such as the Adobe® Flash Player sold by Adobe Systems Inc., and/or the like.
  • client 14 may be hosted and/or executed on any one of several devices capable of communicating with a network such as, for example, personal computers, mobile telephones, set-top boxes, Internet-connected televisions, home audio/video entertainment systems, personal digital assistants, just to name a few examples.
  • client 14 may select a server 16 to provide a resource and/or service based, at least in part, on a responsiveness of the selected server which is measured by client 14 .
  • client 14 may select a server 16 that is the most responsive from among servers 16 measured based, at least in part, on one or more responses to messages transmitted substantially simultaneously to servers 16 from client 14 .
  • responsiveness of a server 16 may result from, at least in part, an availability of computing resources at server to respond to a request from client 14 . For example, if a server 16 is currently committed to providing resources to satisfy other requests (e.g., from other clients), such a server 16 may have limited remaining resources to respond to the request from client 14 .
  • responsiveness of a server 16 may result from, at least in part, delays and/or throughput associated with network 12 in transmitting information between client 14 and such a server 16 .
  • portions of network 12 may be more robustly configured to handle network traffic than other portions.
  • certain events may affect delays and/or throughput associated with transmitting information between client 14 and such a server 16 such as, for example, other demands of network resources and equipment outages, just to name a few examples.
  • client 14 is adapted to transmit a plurality of initiation messages over network 12 to servers 16 substantially simultaneously.
  • Client 14 may determine a responsiveness of servers 16 based, at least in part, on any responses received from servers 16 to the substantially simultaneously transmitted initiation messages.
  • Client 14 may determine a responsiveness of a server based, at least in part, on a delay between transmitting initiation messages and receipt of a response to an initiation message from the server.
  • client 14 may select a most responsive server 16 to establish a session if a response from the selected server 16 to the substantially simultaneously transmitted initiation messages is the earliest received response.
  • FIG. 2 is a flow diagram of a process 100 associated with actions of a client for initiating a session with a server according to an embodiment.
  • FIG. 3 is a flow diagram of a process 200 associated with actions of a server device for responding to messages from a client attempting to initiate a session.
  • a client and servers may employ messages defined in the Secure Media Flow Protocol, Version 1.2, Dec. 14, 2005 (hereinafter “Media Flow Protocol” or “MFP”).
  • Media Flow Protocol Secure Media Flow Protocol
  • a client may employ MFP to establish a session with a server selected from two or more servers through an exchange of messages in datagrams transmitted through a network according to a User Datagram Protocol (UDP) (e.g., over Internet Protocol (IP) packets).
  • UDP User Datagram Protocol
  • IP Internet Protocol
  • a client may maintain a data structure identifying servers that are capable of providing resources and/or services.
  • a data structure may associate socket addresses with servers where a socket address may comprise, for example, information combining an IP address and a UDP port number.
  • a client may identify servers (e.g., servers 16 ) capable of providing a particular desired resource and/or service through a session with such a client.
  • Such a particular desired resource and/or service may comprise, for example, any of the above identified resources and/or services, for example.
  • the identified servers may then be associated with a list of selected socket addresses from the data structure. For a particular resource and/or service, such as those provided by a print server or a media content server, for example, such a data structure may associate such a resource and/or service with socket address of servers that are capable of providing that particular resource and/or service.
  • a client 14 may transmit initiation messages to servers selected at block 102 substantially simultaneously.
  • initiation messages may be addressed according to socket addresses associated with servers identified at block 102 and comprise, for example, a unique tag identifying the particular request from such a client.
  • a unique tag may comprise, for example, a pseudo random number and/or sequence of bytes generated by a client using any one of several techniques.
  • an initiation message transmitted at block 104 may comprise an “Initiator Hello” or “IHello” message defined according to the aforementioned MFP, for example. Again, it should be understood that this is merely one example of how an initiation message may be transmitted to a server according to a protocol in a particular example and claimed subject matter is not limited in this respect.
  • FIG. 3 is a flow diagram of a process 200 hosted on a server which is responsive to an initiating message transmitted from a client (e.g., at block 104 in FIG. 2 ).
  • a server may receive an initiation message from a client addressed according to a socket address associated with the server and comprising a unique tag generated by the client generating the initiation message.
  • a server may determine whether to respond to the received initiation message. Rather than respond to the received initiation message, a server may discard the received initiation message if, for example, the initiation message is from an unauthorized client or the server is otherwise unavailable to engage in a session with the client.
  • a server may discard the received message as an implementation of a statistical approach to discard the received message with increasing likelihood as the server becomes increasingly loaded. Here, under certain conditions, a server may more likely discard a request rather than provide a delayed response.
  • a server may generate a response message responsive to an initiation message received from a client at block 202 comprising information identifying the received initiation message and additional information associated with the server.
  • a response message may comprise a tag extracted from the received initiation message and a cookie generated by the server based, at least in part, on an address of the client (e.g., from a source address in a received datagram encapsulating the received initiation message), current time and/or secret information known to the server.
  • a cookie may be generated from a hash combining the aforementioned address of the client, current time and/or secret information, for example.
  • a responsive message generated at block 208 may also include a cryptographic certificate associated with the server, for example.
  • a server may transmit a response generated at block 208 to a client according to the client's address.
  • the server may format the response message as a “Responder Hello” or “RHello” message defined according to the aforementioned MFP, for example.
  • this is merely one example of how a response message may be formatted for transmission to a client in response to receipt of an initiation message according to a protocol in a particular example, and claimed subject matter is not limited in this respect.
  • a client may receive one or more response messages from one or more servers responsive to initiation messages transmitted at block 104 .
  • message received at block 106 may comprise response messages transmitted by a server at block 210 as illustrated above according to a particular example.
  • a received response message may be readily associated with initiation messages transmitted at block 104 .
  • a client may associate received response messages with initiation messages transmitted substantially simultaneously at block 104 .
  • a client may select a server (for initiating a session) based, at least in part, on response messages received at block 106 .
  • block 108 may select a server based, at least in part, on its responsiveness to messages transmitted at block 104 .
  • block 108 may select a most responsive server as being the server transmitting the earliest response message received at block 106 associated with particular initiation messages.
  • block 108 may associate such an echoed tag with the particular set of initiation messages.
  • a client may select the most responsive server as, for example, the server transmitting the earliest received response message having an echoed tag associated with such a particular set of initiation messages.
  • a client may discard any reference to an original tag upon receipt of such an earliest response message so that such subsequent response messages are not recognized. It should be understood, however, that this is merely one example of how the responsiveness of one or more servers may be evaluated according to a particular embodiment and claimed subject matter is not limited in this respect.
  • a client may initiate a session with the selected server at block 110 .
  • a client may transmit a session initiation message to the socket address of the selected server containing, for example, a cookie from a response message received from the selected server and session negotiation information.
  • session negotiation information may include, for example, a session identifier to be used by the selected server in labeling packets transmitted to the client during the session.
  • session negotiation information may also include keying information to be used in negotiating a secure communications channel during the session.
  • keying information may comprise, for example, an initiator certificate associated with the client, initiator session key component and/or a digital signature.
  • a client may format such a session initiation message as an “Initiating Initial Keying” or “IIKeying” message defined according to the aforementioned MFP, for example.
  • a server may determine whether the received session initiation message is valid at diamond 212 by comparing the echoed cookie with the cookie formed at block 208 and transmitted in a response message at block 210 .
  • a server at block 214 may open a session by, for example, responding to a valid session initiation message with transmission of a session initiation response message to the requesting client.
  • Such a session initiation response message may comprise, for example, a session identifier to be used by the client in labeling packets transmitted to the server during the session and keying information.
  • keying information may include, for example, a responder session key component.
  • a server may format such a session initiation response message as a “Responder Initial Keying” or “RIKeying” message defined according to the aforementioned MFP, for example.
  • a server at block 210 may deliberately delay transmitting a response message to a requesting client based upon certain conditions such as, for example, a condition where the server is heavily loaded with requests from other clients. With such a delayed response, the server may less likely appear to be the most responsive server, for example.
  • a session initiation message from a client to a selected server comprises a initiator session key component and a session initiation response message from a selected server to the client
  • session key components may collectively contribute to an encryption key to be used in maintaining security of information in packets transmitted during a session.
  • an encryption key may be determined from a concatenation of the session key components or a hash function based on the session key components.
  • a server may employ few computational resources to establishing a connection with the client.
  • a server need only maintain a copy of an associated cookie that is included in the response message and/or information for computing the cookie for a limited time period (e.g., long enough to validate an initiation message at diamond 212 ).
  • a server may discard the cookie included in a response message transmitted at block 210 and then recreate the cookie in response to a session initiation message from a client. For example, upon receipt of a session initiation message from a client at a server, diamond 212 may compute a cookie based upon secret information used by the server to create a cookie included in a response message at block 208 , source address of the received session initiation message and current time. Here, the server may maintain a current time in discrete increments (e.g., 30 seconds). If diamond 212 can match the computed cookie with information in the received session initiation message, diamond 212 may determine that the received session initiation message is valid.
  • diamond may compute a second cookie based upon the secret information, source address of the received session initiation message and a previous current time. If diamond 212 can not match the second cookie with information in the received session initiation message, the session initiation message may be determined to be invalid.
  • a server By discarding a cookie included in a response message, a server remains stateless until determination of receipt of a valid session initiation message at diamond 212 . Accordingly, a client need only establish a single session and/or logical connection with a selected server in the process of selecting the server from among a plurality of servers.
  • a client may initiate transmission of initiation messages at block 102 in a network through one or more communication adapters of a computing platform hosting the client.
  • multiple messages to be transmitted substantially simultaneously may be queued in a buffer for transmission in a data transmission medium.
  • delays in the transmission of one initiation message relative to another initiation message may be insignificant with respect to measuring responsiveness of a server to such an initiation message at blocks 106 and 108 , for example.
  • a single computing platform may host multiple servers capable of providing a resource and/or service to a client.
  • multiple servers may have distinct socket addresses, permitting a client to separately transmit multiple initiation messages to different servers hosted on a single computing platform, and individually select such a server based, at least in part, on receipt of associated response messages without deviating from claimed subject matter.
  • FIG. 4 is a schematic diagram of a computing platform 400 that may host a server or client as illustrated above according to a particular embodiment.
  • Computing platform 400 includes a processing system 402 , which may include a central processing unit such as a microprocessor or microcontroller for executing programs to control tasks in the machine 400 , thereby enabling features and function described above.
  • the processing system 402 may include one or more additional processors, which may be discrete processors or may be built in to the central processing unit.
  • Processing system 402 is coupled with a bus 404 , which is adapted to transmit signals between processing system 402 and other devices.
  • Computing platform 400 may include embedded controllers, such as, for example, Generic or Programmable Logic Devices or Arrays (PLD, PLA, GAL, PAL), Field Programmable Gate Arrays (FPGA), Application Specific Integrated Circuits (ASIC), single-chip computers, smart cards, or the like.
  • embedded controllers such as, for example, Generic or Programmable Logic Devices or Arrays (PLD, PLA, GAL, PAL), Field Programmable Gate Arrays (FPGA), Application Specific Integrated Circuits (ASIC), single-chip computers, smart cards, or the like.
  • Computing platform 400 may include a main memory 406 and one or more cache memories, and may also include a secondary memory 408 . These memories provide storage of machine-readable instructions and data for computer programs to be executed by processing system 402 .
  • main memory 406 and secondary memory 408 may comprise one or more of the above identified storage media.
  • secondary memory 408 may include, for example, a hard disk drive 410 , a removable storage drive 412 and/or a storage interface 420 .
  • Computing platform 400 may also include a display system 424 for connecting to a display device 426 and an input/output (I/O) system 430 (e.g., one or more controllers or adapters for providing interface functions) for connecting to one or more I/O devices 432 through 434 .
  • I/O system 430 may provide a communications interface, which allows information to be transmitted, in the form of signals 442 , between computing platform 400 and external devices, networks or information sources.
  • Signals 442 may be transmitted in any type of transmission media (e.g., as electronic, electromagnetic or optical transmission media) to be received via a channel 440 (e.g., wire, cable, optical fiber, phone line, infrared (IR) channel, radio frequency (RF) channel, etc.).
  • a communications interface used to receive these signals 442 may comprise a network interface controller designed for a particular type of network, protocol and/or transmission medium, and/or may be designed to serve multiple networks, protocols and/or channel media.
  • Machine-readable instructions may be stored in computing platform 400 and/or delivered to computing platform 400 over a communications interface. It should be understood that computing platform 400 is merely an example of a computing platform capable of hosting a client or a server and that other systems, architectures, and modifications and/or reconfigurations may also be used without deviating from claimed subject matter.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

The subject matter disclosed herein relates to communication between a client and a server in a communications network. In one particular example, a server is selected from a plurality of servers to provide a resource and/or a service to a client.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a divisional application of and claims priority to U.S. application Ser. No. 11/757,126, filed on Jun. 1, 2007. The disclosure of the prior application is considered part of and is incorporated by reference in the disclosure of this application
TECHNICAL FIELD
The subject matter disclosed herein relates to server load distribution.
BACKGROUND
In a typical client-server network topology, a client may receive a requested service and/or resource from any one of several servers capable of providing the requested service and/or resource. A server is typically resource constrained and may be slow to respond to requests from a client if the server is already heavily loaded with other tasks and/or requests. Accordingly, load balancing techniques are typically applied to multiple servers to, for example, direct new requests for server resources to servers that are the least busy or occupied.
To facilitate load balancing among a cluster of servers, for example, a load monitor is typically deployed for routing requests for server resources to servers in the cluster that are least loaded. Here, such a load monitor may track metrics associated with servers to determine the extent to which they are occupied or busy. New requests are then typically routed to the server or servers in the cluster that are the least occupied. Such a system for load balancing among a plurality of servers in a cluster is described in U.S. Pat. No. 7,039,916. Additionally, geographic load balancing systems are typically available to direct client requests to a geographically nearest server having sufficient resources available to provide a requested resource to a client. However, such geographic load balancing systems are typically costly and complex.
BRIEF DESCRIPTION OF THE FIGURES
Non-limiting and non-exhaustive embodiments will be described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various figures unless otherwise specified.
FIG. 1 is a schematic diagram of a network topology for transmitting information between clients and servers according to an embodiment.
FIG. 2 is a flow diagram of a process associated with actions of a client for initiating a session with a server according to an embodiment.
FIG. 3 is a flow diagram of a process associated with actions of a server which is responsive to a request for a service from a client device according to an embodiment.
FIG. 4 is a schematic diagram of a computing platform according to an embodiment.
DETAILED DESCRIPTION
Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of claimed subject matter. Thus, the appearances of the phrase “in one embodiment” or “an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in one or more embodiments.
“Instructions” as referred to herein relate to expressions which represent one or more logical operations. For example, instructions may be “machine-readable” by being interpretable by a machine for executing one or more operations on one or more data objects. However, this is merely an example of instructions and claimed subject matter is not limited in this respect. In another example, instructions as referred to herein may relate to encoded commands which are executable by a processing circuit having a command set which includes the encoded commands. Such an instruction may be encoded in the form of a machine language understood by the processing circuit. Again, these are merely examples of an instruction and claimed subject matter is not limited in this respect.
“Storage medium” as referred to herein relates to media capable of maintaining expressions which are perceivable by one or more machines. For example, a storage medium may comprise one or more storage devices for storing machine-readable instructions and/or information. Such storage devices may comprise any one of several media types including, for example, magnetic, optical or semiconductor storage media. However, these are merely examples of a storage medium and claimed subject matter is not limited in these respects.
Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout this specification discussions utilizing terms such as “processing,” “computing,” “calculating,” “selecting,” “forming,” “enabling,” “inhibiting,” “identifying,” “initiating,” “obtaining,” “hosting,” “maintaining,” “representing,” “modifying,” “receiving,” “transmitting,” “establishing,” “determining” and/or the like refer to the actions and/or processes that may be performed by a computing platform, such as a computer or a similar electronic computing device, that manipulates and/or transforms data represented as physical electronic and/or magnetic quantities and/or other physical quantities within the computing platform's processors, memories, registers, and/or other information storage, transmission, reception and/or display devices. Such actions and/or processes may be executed by a computing platform under the control of machine-readable instructions stored in a storage medium. Further, unless specifically stated otherwise, process described herein, with reference to flow diagrams or otherwise, may also be executed and/or controlled, in whole or in part, by such a computing platform.
A “computer program” as referred to herein relates to an organized list of instructions that, when executed, causes a computing platform and/or machine to behave in a predetermined manner. Here, for example, a computer program may comprise machine-readable instructions that are executable by a computing platform to perform one or more desired tasks. In one particular embodiment, although claimed subject matter is not limited in these respects, a computer program may define inputs and outputs such that execution of the program may provide outputs based, at least in part, on the inputs. However, these are merely examples of a computer program and claimed subject matter is not limited in these respects.
According to an embodiment, a computer program may comprise one or more “software components” comprising instructions that are executable as an integrated part of the computer program. Here, for example, a computer program may comprise multiple software components that are individually created to perform associated functions of the computer program. The different components may then be integrated together to provide a functioning computer program. However, these are merely examples of a computer program and claimed subject matter is not limited in these respects.
An “application” as referred to herein relates to a computer program or group of computer programs capable of providing a desired result and/or action. In a particular embodiment, for example, such an application may comprise one or more computer programs that perform tasks in connection with providing a service and/or resource to a user. For example, although claimed subject matter is not limited in these respects, an application may comprise one or more end-user computer programs such as database programs, spreadsheets, word processors, computer programs that are accessible through a network browser, electronic mail, interactive games, video and/or image processing programs, media presentation programs, calendars, financial application software, inventory control systems and/or the like. However, these are merely examples of an application and claimed subject matter is not limited in these respects.
In one embodiment, a computing platform may comprise one or more “communication adapters” to enable communication between processes executing on the computing platform and a network. Such a communication adapter may comprise a device capable of transmitting information to and/or receiving information from a communication channel and/or data link. In one particular embodiment, for example, a communication adapter may be capable of transmitting information to and/or receiving information from a data transmission medium according to a predefined communication protocol. However, this is merely an example of a communication adapter and claimed subject matter is not limited in this respect.
A “network” as referred to herein relates to a plurality of devices capable of communicating through transmission of information over data transmission media. In a particular example, a network may transmit data between devices over data links according to one or more communication protocols. However, this is merely an example of a network according to a particular embodiment and claimed subject matter is not limited in this respect.
A “client” as referred to herein relates to a process that is capable of communicating with other processes through a network to perform one or more functions or tasks. For example, a client may comprise one or more application programs hosted on a computing platform capable of transmitting information to and/or receiving information from a network through a communication adapter. However, this is merely one example of an implementation of a client according to a particular embodiment and claimed subject matter is not limited in this respect.
A “server” as referred to herein relates to a process that is capable of providing a service and/or resource to other processes, such as clients, in communication with the server over a network. In one particular example, a server may comprise one or more application programs hosted on a computing platform capable of transmitting information to and/or receiving information from a network through a communication adapter. However, this is merely one example of an implementation of a server according to a particular embodiment and claimed subject matter is not limited in this respect.
A “session” as referred to herein relates to period during which processes communicate over a network to perform one or more tasks, operations and/or functions. In one particular embodiment, a session may be established between a client and a server for the purpose of providing one or more resources and/or services to the client. For example, such a client and server may be adapted to communicate through the transmission of datagrams and/or packets according to a protocol. In a particular embodiment, such a session may be established according to a particular communication protocol enabled by a network employing network, data link and physical layer protocols for transmission of information between processes according to associated addresses.
The use of a load balancing monitor for load balancing among servers typically entails the use of a dedicated network appliance to monitor network traffic between a network and servers in a cluster of servers. This typically also requires server resources to be closely located within a geographical area and to be connected to the load balancing monitor. Accordingly, the use of such a load balancing monitor may be ineffective at efficiently allocating server resources that are geographically dispersed. As pointed out above, geographic load balancing solutions may enable allocation of server resources that are geographically dispersed. However, such systems are complex to set and administer, and often require reconfiguration if a network environment changes. According to a particular embodiment, a client to receive a service and/or resource may select from among a plurality of servers to provide that service and/or resource based, at least in part, on a measurement of “responsiveness” of such servers in a manner that obviates the need for a dedicated load balancing monitor and enables efficient allocation of server resources that are geographically dispersed. Here, responsiveness of a server may be caused by multiple factors such as, for example, availability of computing resources at the server to respond to client requests, and delays associated with transmitting information in a network between the server and a client. However, these are merely examples of factors that may determine a responsiveness of a server and claimed subject matter is not limited in this respect.
Responsiveness of a server may be measured based, at least in part, on a round-trip delay between transmission of a message from a client to the server and receipt of a response message at the client. A first portion of the round-trip delay may comprise a delay associated with processing a message received at the server and transmitting a response message from the server. Here, a server that is heavily loaded with other tasks may incur a longer delay in processing such a message than a server that is not as heavily loaded. A second portion of the round-trip delay may comprise a delay associated with transmitting messages between a client and a server over network infrastructure. For example, transmitting messages between a client and a first server may incur a shorter delay than a delay associated with transmitting message between a client and a second server which are geographically further apart from one another than the client and the first server.
FIG. 1 is a schematic diagram of a system 10 that is capable of establishing a session between a client 14 and one or more servers 16 over a network 12. Network 12 may employ data links (not shown) comprising one or more data transmission mediums such as, for example, cabling (e.g., fiber optic, twisted wire pair, coaxial), satellite transmission links or terrestrial wireless transmission links. However, these are merely examples of data transmission media that may be used for transmitting information in a network and claimed subject matter is not limited in this respect. Additionally, network 12 may employ one or more communication protocols for transmitting information between a source and a destination such as, for example, an Internet Protocol (IP), asynchronous transfer mode (ATM) and/or communication protocols adapted for use on wireless transmission links. However, these are merely examples of communication protocols that may be used for transmitting information between a source and a destination in a network and claimed subject matter is not limited in these respects. In particular embodiments, network 12 may comprise one or more network topologies and/or configurations such as, for example, one or more local area networks, one or more Intranets, the Internet, wireless carrier infrastructure Internet versus Intranet, and/or wireless carrier infrastructure, just to name a few examples.
According to an embodiment, client 14 may comprise one or more processes hosted on a computing platform that is communicatively coupled to network 12 by a communication adapter (not shown). Similarly, servers 16 may comprise processes hosted on one or more computing platforms connected to network 12 by an associated communication adapter. In particular embodiments, each server 16 may be hosted on its own associated computing platform which is distinct from computing platforms hosting other servers 16. Alternatively, two or more servers may be hosted on a single computing platform.
According to an embodiment, client 14 may select a server from among servers 16 to provide a service by, for example, establishing a session through which client 14 and server 16 may communicate over network 12. In particular embodiments, although claimed subject matter is not limited in this respect, a server may comprise a print server adapted to process print jobs, web server, email server, content server adapted to distribute audio or video content (e.g., through streaming) such as, for example, the Adobe® Flash Media Server sold by Adobe Systems Inc. and/or other servers capable of streaming audio and/or video content. Client 14 may comprise any one of several application programs hosted on a computing platform such as, for example, email applications, web browsers, document processing programs, media players such as the Adobe® Flash Player sold by Adobe Systems Inc., and/or the like. Here, it should be understood that client 14 may be hosted and/or executed on any one of several devices capable of communicating with a network such as, for example, personal computers, mobile telephones, set-top boxes, Internet-connected televisions, home audio/video entertainment systems, personal digital assistants, just to name a few examples.
According to an embodiment, client 14 may select a server 16 to provide a resource and/or service based, at least in part, on a responsiveness of the selected server which is measured by client 14. For example, client 14 may select a server 16 that is the most responsive from among servers 16 measured based, at least in part, on one or more responses to messages transmitted substantially simultaneously to servers 16 from client 14. As pointed out above, responsiveness of a server 16 may result from, at least in part, an availability of computing resources at server to respond to a request from client 14. For example, if a server 16 is currently committed to providing resources to satisfy other requests (e.g., from other clients), such a server 16 may have limited remaining resources to respond to the request from client 14.
Also as pointed out above, responsiveness of a server 16 may result from, at least in part, delays and/or throughput associated with network 12 in transmitting information between client 14 and such a server 16. Here, for example, portions of network 12 may be more robustly configured to handle network traffic than other portions. Also, certain events may affect delays and/or throughput associated with transmitting information between client 14 and such a server 16 such as, for example, other demands of network resources and equipment outages, just to name a few examples.
According to an embodiment, although claimed subject matter is not limited in this respect, client 14 is adapted to transmit a plurality of initiation messages over network 12 to servers 16 substantially simultaneously. Client 14 may determine a responsiveness of servers 16 based, at least in part, on any responses received from servers 16 to the substantially simultaneously transmitted initiation messages. Client 14 may determine a responsiveness of a server based, at least in part, on a delay between transmitting initiation messages and receipt of a response to an initiation message from the server. Here, for example, client 14 may select a most responsive server 16 to establish a session if a response from the selected server 16 to the substantially simultaneously transmitted initiation messages is the earliest received response.
FIG. 2 is a flow diagram of a process 100 associated with actions of a client for initiating a session with a server according to an embodiment. FIG. 3 is a flow diagram of a process 200 associated with actions of a server device for responding to messages from a client attempting to initiate a session. In one particular embodiment, although claimed subject matter is not limited in this respect, a client and servers may employ messages defined in the Secure Media Flow Protocol, Version 1.2, Dec. 14, 2005 (hereinafter “Media Flow Protocol” or “MFP”). As illustrated below, a client may employ MFP to establish a session with a server selected from two or more servers through an exchange of messages in datagrams transmitted through a network according to a User Datagram Protocol (UDP) (e.g., over Internet Protocol (IP) packets). While particular examples provided herein establish a session between a client and a server using the MFP, it should be understood that such implementations are merely examples of establishing a session between a client and a server provided for the purpose of illustration, and that claimed subject matter is not limited to such implementations. Features described herein may be implemented using different communication protocols without deviating from claimed subject matter.
According to an embodiment, a client may maintain a data structure identifying servers that are capable of providing resources and/or services. In a particular example, such a data structure may associate socket addresses with servers where a socket address may comprise, for example, information combining an IP address and a UDP port number. At block 102, a client may identify servers (e.g., servers 16) capable of providing a particular desired resource and/or service through a session with such a client. Such a particular desired resource and/or service may comprise, for example, any of the above identified resources and/or services, for example. The identified servers may then be associated with a list of selected socket addresses from the data structure. For a particular resource and/or service, such as those provided by a print server or a media content server, for example, such a data structure may associate such a resource and/or service with socket address of servers that are capable of providing that particular resource and/or service.
At block 104, a client 14 may transmit initiation messages to servers selected at block 102 substantially simultaneously. According to an embodiment, such initiation messages may be addressed according to socket addresses associated with servers identified at block 102 and comprise, for example, a unique tag identifying the particular request from such a client. Such a unique tag may comprise, for example, a pseudo random number and/or sequence of bytes generated by a client using any one of several techniques. In one particular example, an initiation message transmitted at block 104 may comprise an “Initiator Hello” or “IHello” message defined according to the aforementioned MFP, for example. Again, it should be understood that this is merely one example of how an initiation message may be transmitted to a server according to a protocol in a particular example and claimed subject matter is not limited in this respect.
FIG. 3 is a flow diagram of a process 200 hosted on a server which is responsive to an initiating message transmitted from a client (e.g., at block 104 in FIG. 2). For example, at block 202, a server may receive an initiation message from a client addressed according to a socket address associated with the server and comprising a unique tag generated by the client generating the initiation message. At diamond 204, a server may determine whether to respond to the received initiation message. Rather than respond to the received initiation message, a server may discard the received initiation message if, for example, the initiation message is from an unauthorized client or the server is otherwise unavailable to engage in a session with the client. Alternatively, a server may discard the received message as an implementation of a statistical approach to discard the received message with increasing likelihood as the server becomes increasingly loaded. Here, under certain conditions, a server may more likely discard a request rather than provide a delayed response.
At block 208, a server may generate a response message responsive to an initiation message received from a client at block 202 comprising information identifying the received initiation message and additional information associated with the server. For example, such a response message may comprise a tag extracted from the received initiation message and a cookie generated by the server based, at least in part, on an address of the client (e.g., from a source address in a received datagram encapsulating the received initiation message), current time and/or secret information known to the server. Here, such a cookie may be generated from a hash combining the aforementioned address of the client, current time and/or secret information, for example. A responsive message generated at block 208 may also include a cryptographic certificate associated with the server, for example.
At block 210, a server may transmit a response generated at block 208 to a client according to the client's address. In a particular embodiment, the server may format the response message as a “Responder Hello” or “RHello” message defined according to the aforementioned MFP, for example. Again, it should be understood that this is merely one example of how a response message may be formatted for transmission to a client in response to receipt of an initiation message according to a protocol in a particular example, and claimed subject matter is not limited in this respect.
Returning to FIG. 2, at block 106, a client may receive one or more response messages from one or more servers responsive to initiation messages transmitted at block 104. In a particular example, such message received at block 106 may comprise response messages transmitted by a server at block 210 as illustrated above according to a particular example. Here, by including the tag of a received initiation message “echoed” back from a client, a received response message may be readily associated with initiation messages transmitted at block 104. Accordingly, at block 106, a client may associate received response messages with initiation messages transmitted substantially simultaneously at block 104.
According to an embodiment, at block 108 a client may select a server (for initiating a session) based, at least in part, on response messages received at block 106. Here, block 108 may select a server based, at least in part, on its responsiveness to messages transmitted at block 104. For example, block 108 may select a most responsive server as being the server transmitting the earliest response message received at block 106 associated with particular initiation messages. In a particular embodiment where a response message includes a tag echoed back from a particular set of initiation messages transmitted substantially simultaneously at block 104, for example, block 108 may associate such an echoed tag with the particular set of initiation messages. Here, a client may select the most responsive server as, for example, the server transmitting the earliest received response message having an echoed tag associated with such a particular set of initiation messages. In a particular implementation, a client may discard any reference to an original tag upon receipt of such an earliest response message so that such subsequent response messages are not recognized. It should be understood, however, that this is merely one example of how the responsiveness of one or more servers may be evaluated according to a particular embodiment and claimed subject matter is not limited in this respect.
Upon selecting a server at block 108 from among a plurality of servers, a client may initiate a session with the selected server at block 110. For example, such a client may transmit a session initiation message to the socket address of the selected server containing, for example, a cookie from a response message received from the selected server and session negotiation information. Such session negotiation information may include, for example, a session identifier to be used by the selected server in labeling packets transmitted to the client during the session. Such session negotiation information may also include keying information to be used in negotiating a secure communications channel during the session. Such keying information may comprise, for example, an initiator certificate associated with the client, initiator session key component and/or a digital signature. In a particular implementation, a client may format such a session initiation message as an “Initiating Initial Keying” or “IIKeying” message defined according to the aforementioned MFP, for example.
By receiving a cookie echoed back in a session initiation message transmitted at block 110, a server may determine whether the received session initiation message is valid at diamond 212 by comparing the echoed cookie with the cookie formed at block 208 and transmitted in a response message at block 210. Upon receipt of such a valid session initiation message, a server at block 214 may open a session by, for example, responding to a valid session initiation message with transmission of a session initiation response message to the requesting client. Such a session initiation response message may comprise, for example, a session identifier to be used by the client in labeling packets transmitted to the server during the session and keying information. Such keying information may include, for example, a responder session key component. In a particular implementation, a server may format such a session initiation response message as a “Responder Initial Keying” or “RIKeying” message defined according to the aforementioned MFP, for example.
In a particular embodiment, a server at block 210 may deliberately delay transmitting a response message to a requesting client based upon certain conditions such as, for example, a condition where the server is heavily loaded with requests from other clients. With such a delayed response, the server may less likely appear to be the most responsive server, for example.
In a particular embodiment where a session initiation message from a client to a selected server comprises a initiator session key component and a session initiation response message from a selected server to the client, such session key components may collectively contribute to an encryption key to be used in maintaining security of information in packets transmitted during a session. For example, such an encryption key may be determined from a concatenation of the session key components or a hash function based on the session key components.
In embodiments illustrated above, unless a server is selected by a client (e.g., upon receipt of a session initiation message) a server may employ few computational resources to establishing a connection with the client. By merely preparing and transmitting a response message to a requesting client at block 208, a server need only maintain a copy of an associated cookie that is included in the response message and/or information for computing the cookie for a limited time period (e.g., long enough to validate an initiation message at diamond 212).
In one embodiment, a server may discard the cookie included in a response message transmitted at block 210 and then recreate the cookie in response to a session initiation message from a client. For example, upon receipt of a session initiation message from a client at a server, diamond 212 may compute a cookie based upon secret information used by the server to create a cookie included in a response message at block 208, source address of the received session initiation message and current time. Here, the server may maintain a current time in discrete increments (e.g., 30 seconds). If diamond 212 can match the computed cookie with information in the received session initiation message, diamond 212 may determine that the received session initiation message is valid. If no match is found, diamond may compute a second cookie based upon the secret information, source address of the received session initiation message and a previous current time. If diamond 212 can not match the second cookie with information in the received session initiation message, the session initiation message may be determined to be invalid.
By discarding a cookie included in a response message, a server remains stateless until determination of receipt of a valid session initiation message at diamond 212. Accordingly, a client need only establish a single session and/or logical connection with a selected server in the process of selecting the server from among a plurality of servers.
In particular embodiments, it should be understood that a client may initiate transmission of initiation messages at block 102 in a network through one or more communication adapters of a computing platform hosting the client. As such, multiple messages to be transmitted substantially simultaneously may be queued in a buffer for transmission in a data transmission medium. Here, while some initiation messages may actually commence transmission prior to other messages, delays in the transmission of one initiation message relative to another initiation message may be insignificant with respect to measuring responsiveness of a server to such an initiation message at blocks 106 and 108, for example.
According to an embodiment, a single computing platform may host multiple servers capable of providing a resource and/or service to a client. Here, it should be understood that such multiple servers may have distinct socket addresses, permitting a client to separately transmit multiple initiation messages to different servers hosted on a single computing platform, and individually select such a server based, at least in part, on receipt of associated response messages without deviating from claimed subject matter.
FIG. 4 is a schematic diagram of a computing platform 400 that may host a server or client as illustrated above according to a particular embodiment. Computing platform 400 includes a processing system 402, which may include a central processing unit such as a microprocessor or microcontroller for executing programs to control tasks in the machine 400, thereby enabling features and function described above. Moreover, the processing system 402 may include one or more additional processors, which may be discrete processors or may be built in to the central processing unit.
Processing system 402 is coupled with a bus 404, which is adapted to transmit signals between processing system 402 and other devices. Computing platform 400 may include embedded controllers, such as, for example, Generic or Programmable Logic Devices or Arrays (PLD, PLA, GAL, PAL), Field Programmable Gate Arrays (FPGA), Application Specific Integrated Circuits (ASIC), single-chip computers, smart cards, or the like.
Computing platform 400 may include a main memory 406 and one or more cache memories, and may also include a secondary memory 408. These memories provide storage of machine-readable instructions and data for computer programs to be executed by processing system 402. Here main memory 406 and secondary memory 408 may comprise one or more of the above identified storage media. In the particular illustrated implementation, secondary memory 408 may include, for example, a hard disk drive 410, a removable storage drive 412 and/or a storage interface 420.
Computing platform 400 may also include a display system 424 for connecting to a display device 426 and an input/output (I/O) system 430 (e.g., one or more controllers or adapters for providing interface functions) for connecting to one or more I/O devices 432 through 434. I/O system 430 may provide a communications interface, which allows information to be transmitted, in the form of signals 442, between computing platform 400 and external devices, networks or information sources. Signals 442 may be transmitted in any type of transmission media (e.g., as electronic, electromagnetic or optical transmission media) to be received via a channel 440 (e.g., wire, cable, optical fiber, phone line, infrared (IR) channel, radio frequency (RF) channel, etc.). A communications interface used to receive these signals 442 may comprise a network interface controller designed for a particular type of network, protocol and/or transmission medium, and/or may be designed to serve multiple networks, protocols and/or channel media.
Machine-readable instructions may be stored in computing platform 400 and/or delivered to computing platform 400 over a communications interface. It should be understood that computing platform 400 is merely an example of a computing platform capable of hosting a client or a server and that other systems, architectures, and modifications and/or reconfigurations may also be used without deviating from claimed subject matter.
While there has been illustrated and described what are presently considered to be example embodiments, it will be understood by those skilled in the art that various other modifications may be made, and equivalents may be substituted, without departing from claimed subject matter. Additionally, many modifications may be made to adapt a particular situation to the teachings of claimed subject matter without departing from the central concept described herein. Therefore, it is intended that claimed subject matter not be limited to the particular embodiments disclosed, but that such claimed subject matter may also include all embodiments falling within the scope of the appended claims, and equivalents thereof.

Claims (20)

What is claimed is:
1. A method comprising:
receiving, at a server hosted on a computing platform, an initiation message sent by a client to multiple servers over a network, the multiple servers including the server hosted on the computing platform, wherein the initiation message requests a resource or a service and includes a tag identifying the initiation message;
generating, at the server, a response message based on the initiation message, the response message including the tag and a generated cookie;
sending the response message to the client; discarding, at the server, the generated cookie to keep the server stateless with respect to the initiation message after the response message is sent;
receiving a session initiation message from the client, the session initiation message including the generated cookie;
validating the session initiation message based on a comparison of the generated cookie received in the session initiation message and a regenerated version of the generated cookie, where the regenerated version of the generated cookie is created based upon secret information used by the server to create the generated cookie included in the session initiation message and a source address of the session initiation message; and
responding to a valid session initiation message with a session initiation response message to the client to open a session, wherein the session initiation response message comprises keying information that includes a responder session key component that is used to form an encryption key used to encrypt packets transmitted during the session.
2. The method of claim 1, further comprising:
receiving, at the server, an additional message before the initiation message, the additional message being another initiation message sent to the multiple servers over the network; and
based on a statistical assessment with respect to server load, discarding the additional message without response or delaying a response to the additional message.
3. The method of claim 1, where generating the response message comprises generating the response message including a cryptographic certificate associated with the server.
4. The method of claim 1, where the response message sent from the server indicates a responsiveness of the server.
5. The method of claim 4, where the responsiveness of the server results from, at least in part, delays or throughput associated with the network in transmitting information between the client and the server.
6. The method of claim 1, where the response message sent from the server is the earliest response message received by the client in response to the initiation message sent by the client to the multiple servers.
7. The method of claim 1, where the server is at least one server selected from the group consisting of a print server adapted to process print jobs, a web server, an email server, and a content server adapted to distribute audio or video content.
8. The method of claim 1, where the regenerated version of the generated cookie is created based upon a current time.
9. The method of claim 1, comprising:
generating a second cookie based upon secret information used by the server to create the generated cookie included in the session initiation message, a source address of the session initiation message, and a previous current time;
comparing the second cookie with information in the received session initiation message; and
based upon a result of the comparing, determining that the session initiation message is invalid.
10. A system comprising:
a communication adapter configured to transmit information to and receive information from a network; and
a processing system coupled with the communication adapter, the processing system configured to host a server to perform operations comprising:
receiving an initiation message sent by a client to multiple servers over the network, the multiple servers including the server, wherein the initiation message requests a resource or service and includes a tag identifying the initiation message;
generating, at the server, a response message based on the initiation message, the response message including the tag and a generated cookie;
sending the response message to the client; discarding, at the server, the generated cookie to keep the server stateless with respect to the initiation message after the response message is sent;
receiving a session initiation message from the client, the session initiation message including the generated cookie;
validating the session initiation message based on a comparison of the generated cookie received in the session initiation message and a regenerated version of the generated cookie, where the regenerated version of the generated cookie is created based upon secret information used by the server to create the generated cookie included in the session initiation message and a source address of the session initiation message; and
responding to a valid session initiation message with a session initiation response message to the client to open a session, wherein the session initiation response message comprises keying information that includes a responder session key component that is used to form an encryption key used to encrypt packets transmitted during the session.
11. The system of claim 10, were the processing system is configured to:
receive an additional message before the initiation message, the additional message being another initiation message sent to the multiple servers over the network; and
based on a statistical assessment with respect to server load, discard the additional message without response or delaying a response to the additional message.
12. The system of claim 10, where generating the response message comprises generating the response message including a cryptographic certificate associated with the server.
13. The system of claim 10, where the response message sent from the server indicates a responsiveness of the server.
14. The system of claim 13, where the responsiveness of the server results from, at least in part, delays or throughput associated with the network in transmitting information between the client and the server.
15. The system of claim 10, where the response message sent from the server is the earliest response message received by the client in response to the initiation message sent by the client to the multiple servers.
16. The system of claim 10, where the server is at least one server selected from the group consisting of a print server adapted to process print jobs, a web server, an email server, or a content server adapted to distribute audio or video content.
17. The system of claim 10, where the regenerated version of the generated cookie is created based upon a current time.
18. The system of claim 10, comprising:
generating a second cookie based upon secret information used by the server to create the generated cookie included in the session initiation message, a source address of the session initiation message, and a previous current time;
comparing the second cookie with information in the received session initiation message; and
based upon a result of the comparing, determining that the session initiation message is invalid.
19. A non-transitory storage medium encoding machine-readable instructions configured to cause a server hosted on a computing platform to perform operations comprising:
receiving, at the server hosted on the computing platform, an initiation message sent by a client to multiple servers over a network, the multiple servers including the server hosted on the computing platform, wherein the initiation message requests a resource or a service and includes a tag identifying the initiation message;
generating, at the server, a response message based on the initiation message, the response message including the tag and a generated cookie;
sending the response message to the client;
discarding, at the server, the generated cookie to keep the server stateless with respect to the initiation message after the response message is sent;
receiving a session initiation message from the client, the session initiation message including the generated cookie;
validating the session initiation message based on a comparison of the generated cookie received in the session initiation message and a regenerated version of the generated cookie, where the regenerated version of the generated cookie is created based upon secret information used by the server to create the generated cookie included in the session initiation message and a source address of the session initiation message; and
responding to a valid session initiation message with a session initiation response message to the client to open a session, wherein the session initiation response message comprises keying information that includes a responder session key component that is used to form an encryption key used to encrypt packets transmitted during the session.
20. The storage medium of claim 19, were the machine-readable instructions are configured to cause the server to perform operations comprising:
receiving an additional message before the initiation message, the additional message being another initiation message sent to the multiple servers over the network; and
based on a statistical assessment with respect to server load, discarding the additional message without response or delaying a response to the additional message.
US13/305,693 2007-06-01 2011-11-28 System and/or method for client-driven server load distribution Active US9300733B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/305,693 US9300733B2 (en) 2007-06-01 2011-11-28 System and/or method for client-driven server load distribution

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/757,126 US8069251B2 (en) 2007-06-01 2007-06-01 System and/or method for client-driven server load distribution
US13/305,693 US9300733B2 (en) 2007-06-01 2011-11-28 System and/or method for client-driven server load distribution

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/757,126 Division US8069251B2 (en) 2007-06-01 2007-06-01 System and/or method for client-driven server load distribution

Publications (2)

Publication Number Publication Date
US20120278493A1 US20120278493A1 (en) 2012-11-01
US9300733B2 true US9300733B2 (en) 2016-03-29

Family

ID=40075453

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/757,126 Active 2028-10-30 US8069251B2 (en) 2007-06-01 2007-06-01 System and/or method for client-driven server load distribution
US13/305,693 Active US9300733B2 (en) 2007-06-01 2011-11-28 System and/or method for client-driven server load distribution

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/757,126 Active 2028-10-30 US8069251B2 (en) 2007-06-01 2007-06-01 System and/or method for client-driven server load distribution

Country Status (2)

Country Link
US (2) US8069251B2 (en)
WO (1) WO2008147578A1 (en)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8069251B2 (en) 2007-06-01 2011-11-29 Adobe Systems Incorporated System and/or method for client-driven server load distribution
US8239548B2 (en) * 2007-07-17 2012-08-07 Adobe Systems Incorporated Endpoint discriminator in network transport protocol startup packets
US8145698B1 (en) 2008-01-03 2012-03-27 Adobe Systems Incorporated Self organizing peer-to-peer system, method, and/or apparatus
US8171147B1 (en) * 2008-02-20 2012-05-01 Adobe Systems Incorporated System, method, and/or apparatus for establishing peer-to-peer communication
US8341401B1 (en) 2008-05-13 2012-12-25 Adobe Systems Incorporated Interoperable cryptographic peer and server identities
US8312147B2 (en) * 2008-05-13 2012-11-13 Adobe Systems Incorporated Many-to-one mapping of host identities
JP2009289103A (en) * 2008-05-30 2009-12-10 Fujitsu Ltd Information processing system, information processing apparatus, and computer program
US8380845B2 (en) 2010-10-08 2013-02-19 Microsoft Corporation Providing a monitoring service in a cloud-based computing environment
US8959219B2 (en) 2010-10-18 2015-02-17 Microsoft Technology Licensing, Llc Dynamic rerouting of service requests between service endpoints for web services in a composite service
US8874787B2 (en) 2010-10-20 2014-10-28 Microsoft Corporation Optimized consumption of third-party web services in a composite service
JP5740943B2 (en) * 2010-12-01 2015-07-01 株式会社リコー Image forming apparatus, image processing system, image processing program, and image processing method
US8725875B2 (en) * 2011-06-21 2014-05-13 Intel Corporation Native cloud computing via network segmentation
US9836711B2 (en) * 2012-05-17 2017-12-05 Hitachi, Ltd. Job execution system, job execution program, and job execution method
CN104125654A (en) * 2013-04-23 2014-10-29 腾讯科技(深圳)有限公司 Data transmission method and devices for wifi network and terminal devices
US10164857B2 (en) * 2013-11-14 2018-12-25 Eric P. Vance System and method for machines to communicate over the internet
US9191330B2 (en) 2013-11-14 2015-11-17 International Business Machines Corporation Path selection for network service requests
US9606245B1 (en) 2015-03-24 2017-03-28 The Research Foundation For The State University Of New York Autonomous gamma, X-ray, and particle detector
US10768997B2 (en) 2016-12-05 2020-09-08 International Business Machines Corporation Tail latency-based job offloading in load-balanced groups
US10700978B2 (en) 2016-12-05 2020-06-30 International Business Machines Corporation Offloading at a virtual switch in a load-balanced group
US10944788B2 (en) * 2017-04-07 2021-03-09 Trusona, Inc. Systems and methods for communication verification
US11223654B2 (en) * 2019-12-06 2022-01-11 EMC IP Holding Company LLC System and method for managing secured communication channel sessions for applications sharing a port

Citations (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4475192A (en) 1982-02-16 1984-10-02 At&T Bell Laboratories Data packet flow control scheme for switching networks
US4686701A (en) * 1985-02-07 1987-08-11 American Telephone And Telegraph Company, At&T Bell Laboratories Processing sequence calls in a distributed control switching system
US4686669A (en) * 1985-02-07 1987-08-11 American Telephone And Telegraph Company, At&T Bell Laboratories Path hunting in a distributed control switching system
US4689815A (en) * 1985-08-23 1987-08-25 American Telephone And Telegraph Company, At&T Bell Laboratories Controlling multi-port hunt groups in a distributed control switching system
US4694487A (en) * 1985-02-07 1987-09-15 American Telephone And Telegraph Company, At&T Bell Laboratories Controlling multi-fort hunt groups in a distributed control switching system
US5247665A (en) * 1988-09-30 1993-09-21 Kabushiki Kaisha Toshiba Data base processing apparatus using relational operation processing
US5506968A (en) 1992-12-28 1996-04-09 At&T Global Information Solutions Company Terminating access of an agent to a shared resource when a timer, started after a low latency agent requests access, reaches a predetermined value
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
US5799002A (en) 1996-07-02 1998-08-25 Microsoft Corporation Adaptive bandwidth throttling for network services
US5857072A (en) 1996-04-30 1999-01-05 Sprint Communications Co. L.P. System and method for distributing data simultaneously to multiple computers on a network, with advanced notice to intended recipients
US5938732A (en) 1996-12-09 1999-08-17 Sun Microsystems, Inc. Load balancing and failover of network services
US5960404A (en) 1997-08-28 1999-09-28 International Business Machines Corp. Mechanism for heterogeneous, peer-to-peer, and disconnected workflow operation
US6032175A (en) 1996-10-17 2000-02-29 International Business Machines Corporation Enhanced directory services in compound wide/local area networks
JP2000151601A (en) 1998-11-16 2000-05-30 Dainippon Printing Co Ltd Instrument and method for measuring interaction time in information distribution system
US6205481B1 (en) 1998-03-17 2001-03-20 Infolibria, Inc. Protocol for distributing fresh content among networked cache servers
US6280991B1 (en) * 1997-10-15 2001-08-28 Wisconsin Alumni Research Foundation Engineered cytotoxic ribonclease
US20010032263A1 (en) 2000-04-14 2001-10-18 Ganesan Gopal Archival database system for handling information and information transfers in a computer network
US20010042131A1 (en) 2000-04-14 2001-11-15 John Mathon System for handling information and information transfers in a computer network
US20020042828A1 (en) 2000-10-05 2002-04-11 Christopher Peiffer Connection management system and method
US20020049815A1 (en) 2000-04-14 2002-04-25 Kayshav Dattatri System for monitoring and managing information and information transfers in a computer network
US20020062454A1 (en) 2000-09-27 2002-05-23 Amphus, Inc. Dynamic power and workload management for multi-server system
US20020062375A1 (en) 2000-11-22 2002-05-23 Dan Teodosiu Locator and tracking service for peer to peer resources
US20020065930A1 (en) 2000-03-07 2002-05-30 Rhodes David L. Collaborative host masquerading system
US6405236B1 (en) 1998-01-09 2002-06-11 Hilf! Gmbh, Microcomputer- Consulting Method for transporting data and computer network for carrying out said method
US20020085714A1 (en) * 2000-12-28 2002-07-04 Wataru Inoha Contents recording apparatus, recording medium, contents reproducing apparatus, contents transmission method, transmission medium, and contents reception method
CA2331046A1 (en) 2001-01-15 2002-07-15 Netpcs Networks Inc. Method and system for internet connection and communication management
US20020107935A1 (en) 2001-01-12 2002-08-08 Epicrealm Inc. Method and system for community data caching
US20020112058A1 (en) 2000-12-01 2002-08-15 Microsoft Corporation Peer networking host framework and hosting API
US20020111133A1 (en) * 1999-07-15 2002-08-15 Erland Wittkotter Data processing appliance
US20020120744A1 (en) 2001-02-28 2002-08-29 Chellis Eugene C. System and method for describing and automatically managing resources
US20020129159A1 (en) 2001-03-09 2002-09-12 Michael Luby Multi-output packet server with independent streams
US20020133593A1 (en) 2000-03-03 2002-09-19 Johnson Scott C. Systems and methods for the deterministic management of information
US20020138618A1 (en) 2000-03-21 2002-09-26 F5 Networks, Inc. Simplified method for processing multiple connections from the same client
US20020150094A1 (en) 2000-10-27 2002-10-17 Matthew Cheng Hierarchical level-based internet protocol multicasting
US20020174219A1 (en) 2001-05-21 2002-11-21 International Business Machines Corporation System and method for providing gracefully degraded services on the internet under overloaded conditions
US20020184310A1 (en) 2001-01-22 2002-12-05 Traversat Bernard A. Providing peer groups in a peer-to-peer environment
US6516350B1 (en) 1999-06-17 2003-02-04 International Business Machines Corporation Self-regulated resource management of distributed computer resources
US20030043846A1 (en) 2001-08-31 2003-03-06 Purpura William J. User bandwidth monitor and control management system and method
US6563793B1 (en) 1998-11-25 2003-05-13 Enron Warpspeed Services, Inc. Method and apparatus for providing guaranteed quality/class of service within and across networks using existing reservation protocols and frame formats
US6567802B1 (en) * 2000-09-06 2003-05-20 The Trustees Of The University Of Pennsylvania Systematic approach to query optimization
US6578077B1 (en) 1997-05-27 2003-06-10 Novell, Inc. Traffic monitoring tool for bandwidth management
US20030163702A1 (en) 2001-04-06 2003-08-28 Vigue Charles L. System and method for secure and verified sharing of resources in a peer-to-peer network environment
US20030182425A1 (en) 2002-03-01 2003-09-25 Docomo Communications Laboratories Usa, Inc. Communication system capable of executing a communication task in a manner adaptable to available distributed resources
US6631118B1 (en) 1998-11-10 2003-10-07 At&T Corp. System and method for providing dynamic bandwidth on demand
US20030200252A1 (en) 2000-01-10 2003-10-23 Brent Krum System for segregating a monitor program in a farm system
US20030208599A1 (en) 1997-08-19 2003-11-06 Kabushiki Kaisha Toshiba Server device and communication connection scheme using network interface processors
US6658473B1 (en) 2000-02-25 2003-12-02 Sun Microsystems, Inc. Method and apparatus for distributing load in a computer environment
US20040015608A1 (en) 2000-11-29 2004-01-22 Applied Microsystems Corporation Method and system for dynamically incorporating advertising content into multimedia environments
US20040028209A1 (en) 1998-08-12 2004-02-12 Fleming Norman Wayne Networks, systems and methods for routing data traffic within a telephone network based on available resources
US6725272B1 (en) 2000-02-18 2004-04-20 Netscaler, Inc. Apparatus, method and computer program product for guaranteed content delivery incorporating putting a client on-hold based on response time
US20040078622A1 (en) 2002-09-18 2004-04-22 International Business Machines Corporation Client assisted autonomic computing
US6766348B1 (en) 1999-08-03 2004-07-20 Worldcom, Inc. Method and system for load-balanced data exchange in distributed network-based resource allocation
US20040151500A1 (en) 2002-12-06 2004-08-05 Akira Misawa OVPN system, OVPN terminating device, collective controlling device, and optical communication network
US6788827B1 (en) * 1999-09-30 2004-09-07 Koninklijke Philips Electronics N.V. Image processing method and system for following a moving object from one image to an other image sequence
US6798786B1 (en) 1999-06-07 2004-09-28 Nortel Networks Limited Managing calls over a data network
US20040193461A1 (en) 2003-03-27 2004-09-30 International Business Machines Corporation Method and apparatus for obtaining status information in a grid
US20040215780A1 (en) 2003-03-31 2004-10-28 Nec Corporation Distributed resource management system
US20050060553A1 (en) * 2000-03-09 2005-03-17 Microsoft Corporation Session-state manager
US20050057521A1 (en) * 2003-09-16 2005-03-17 Microsoft Corporation Method for processing data quantifying force applied to one or more keys of a computer keyboard
US20050160269A1 (en) * 2004-01-20 2005-07-21 Matsushita Electric Works, Ltd. Common security key generation apparatus
US20050165921A1 (en) 2004-01-23 2005-07-28 Sam Abadir Systems and methods for vertically integrated data distribution and access management
US20050198634A1 (en) * 2004-01-28 2005-09-08 Nielsen Robert D. Assigning tasks in a distributed system
US6970925B1 (en) 1999-02-03 2005-11-29 William H. Gates, III Method and system for property notification
US20060041745A1 (en) 2002-06-19 2006-02-23 Marratech Ab Apparatus and method for conveying private information within a group communication system
US20060047831A1 (en) 2004-05-19 2006-03-02 Bea Systems, Inc. System and method for clustered tunneling of requests in application servers and transaction-based systems
US7039916B2 (en) 2001-09-24 2006-05-02 Intel Corporation Data delivery system for adjusting assignment of connection requests to nodes based upon the tracked duration
US20060101081A1 (en) 2004-11-01 2006-05-11 Sybase, Inc. Distributed Database System Providing Data and Space Management Methodology
US7058804B1 (en) * 1999-08-30 2006-06-06 Nippon Telegraph And Telephone Corporation Data storing system, issuing apparatus, data providing apparatus and computer readable medium storing data storing program
US7111162B1 (en) 2001-09-10 2006-09-19 Cisco Technology, Inc. Load balancing approach for scaling secure sockets layer performance
US20060215652A1 (en) 2005-03-22 2006-09-28 Logitech Europe S.A. Method and apparatus for packet traversal of a network address translation device
US20060228678A1 (en) * 2005-04-11 2006-10-12 Seiko Epson Corporation Data display method of data display apparatus, data display apparatus, data generation apparatus having the same, and sheet processing apparatus
US20070028106A1 (en) * 2005-07-26 2007-02-01 Microsoft Corporation Extended authenticated key exchange with key confirmation
US20070033403A1 (en) * 2005-07-21 2007-02-08 Microsoft Corporation Extended authenticated key exchange
US7246356B1 (en) 2003-01-29 2007-07-17 Adobe Systems Incorporated Method and system for facilitating comunications between an interactive multimedia client and an interactive multimedia communication server
US20070180227A1 (en) * 2005-03-01 2007-08-02 Matsushita Electric Works, Ltd. Decryption apparatus for use in encrypted communications
US7274706B1 (en) 2001-04-24 2007-09-25 Syrus Ziai Methods and systems for processing network data
US20070226743A1 (en) 2006-03-27 2007-09-27 Fujitsu Limited Parallel-distributed-processing program and parallel-distributed-processing system
US20070234428A1 (en) 2006-03-22 2007-10-04 Rash Michael B Method for secure single-packet remote authorization
US20070256078A1 (en) 2006-04-28 2007-11-01 Falk Nathan B Resource reservation system, method and program product used in distributed cluster environments
US20070260538A1 (en) 1993-08-30 2007-11-08 Deaton David W System, method and database for processing transactions
US7305486B2 (en) 2000-06-30 2007-12-04 Kanad Ghose System and method for fast, reliable byte stream transport
US20080046758A1 (en) * 2006-05-05 2008-02-21 Interdigital Technology Corporation Digital rights management using trusted processing techniques
US20080075048A1 (en) 2006-09-26 2008-03-27 Suszko August J Socket based passive server
US20080086453A1 (en) 2006-10-05 2008-04-10 Fabian-Baber, Inc. Method and apparatus for correlating the results of a computer network text search with relevant multimedia files
US20080141378A1 (en) * 2006-12-12 2008-06-12 Mclean Ivan Hugh Method and apparatus for creating licenses in a mobile digital rights management network
US20080256180A1 (en) 2003-10-14 2008-10-16 International Business Machines Corporation Use of hardware to manage dependencies between groups of network data packets
US20080280623A1 (en) 2005-04-04 2008-11-13 Telefonaktiebolaget L M Ericsson (Publ) Method and Apparatus For Distributing Load on Application Servers
US20080301219A1 (en) 2007-06-01 2008-12-04 Michael Thornburgh System and/or Method for Client-Driven Server Load Distribution
US20090024739A1 (en) 2007-07-17 2009-01-22 Thornburgh Michael C Endpoint discriminator in network transport protocol startup packets
US7490162B1 (en) * 2002-05-15 2009-02-10 F5 Networks, Inc. Method and system for forwarding messages received at a traffic manager
US20090150534A1 (en) 1999-05-11 2009-06-11 Andrew Karl Miller Load balancing technique implemented in a data network device utilizing a data cache

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7129138B1 (en) * 2005-04-14 2006-10-31 International Business Machines Corporation Methods of implementing and enhanced silicon-on-insulator (SOI) box structures

Patent Citations (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4475192A (en) 1982-02-16 1984-10-02 At&T Bell Laboratories Data packet flow control scheme for switching networks
US4686701A (en) * 1985-02-07 1987-08-11 American Telephone And Telegraph Company, At&T Bell Laboratories Processing sequence calls in a distributed control switching system
US4686669A (en) * 1985-02-07 1987-08-11 American Telephone And Telegraph Company, At&T Bell Laboratories Path hunting in a distributed control switching system
US4694487A (en) * 1985-02-07 1987-09-15 American Telephone And Telegraph Company, At&T Bell Laboratories Controlling multi-fort hunt groups in a distributed control switching system
US4689815A (en) * 1985-08-23 1987-08-25 American Telephone And Telegraph Company, At&T Bell Laboratories Controlling multi-port hunt groups in a distributed control switching system
US5247665A (en) * 1988-09-30 1993-09-21 Kabushiki Kaisha Toshiba Data base processing apparatus using relational operation processing
US5506968A (en) 1992-12-28 1996-04-09 At&T Global Information Solutions Company Terminating access of an agent to a shared resource when a timer, started after a low latency agent requests access, reaches a predetermined value
US20070260538A1 (en) 1993-08-30 2007-11-08 Deaton David W System, method and database for processing transactions
US5857072A (en) 1996-04-30 1999-01-05 Sprint Communications Co. L.P. System and method for distributing data simultaneously to multiple computers on a network, with advanced notice to intended recipients
US5799002A (en) 1996-07-02 1998-08-25 Microsoft Corporation Adaptive bandwidth throttling for network services
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
US6032175A (en) 1996-10-17 2000-02-29 International Business Machines Corporation Enhanced directory services in compound wide/local area networks
US5938732A (en) 1996-12-09 1999-08-17 Sun Microsystems, Inc. Load balancing and failover of network services
US6578077B1 (en) 1997-05-27 2003-06-10 Novell, Inc. Traffic monitoring tool for bandwidth management
US20030208599A1 (en) 1997-08-19 2003-11-06 Kabushiki Kaisha Toshiba Server device and communication connection scheme using network interface processors
US5960404A (en) 1997-08-28 1999-09-28 International Business Machines Corp. Mechanism for heterogeneous, peer-to-peer, and disconnected workflow operation
US6280991B1 (en) * 1997-10-15 2001-08-28 Wisconsin Alumni Research Foundation Engineered cytotoxic ribonclease
US6405236B1 (en) 1998-01-09 2002-06-11 Hilf! Gmbh, Microcomputer- Consulting Method for transporting data and computer network for carrying out said method
US6205481B1 (en) 1998-03-17 2001-03-20 Infolibria, Inc. Protocol for distributing fresh content among networked cache servers
US20040028209A1 (en) 1998-08-12 2004-02-12 Fleming Norman Wayne Networks, systems and methods for routing data traffic within a telephone network based on available resources
US6631118B1 (en) 1998-11-10 2003-10-07 At&T Corp. System and method for providing dynamic bandwidth on demand
JP2000151601A (en) 1998-11-16 2000-05-30 Dainippon Printing Co Ltd Instrument and method for measuring interaction time in information distribution system
US6563793B1 (en) 1998-11-25 2003-05-13 Enron Warpspeed Services, Inc. Method and apparatus for providing guaranteed quality/class of service within and across networks using existing reservation protocols and frame formats
US6970925B1 (en) 1999-02-03 2005-11-29 William H. Gates, III Method and system for property notification
US20090150534A1 (en) 1999-05-11 2009-06-11 Andrew Karl Miller Load balancing technique implemented in a data network device utilizing a data cache
US6798786B1 (en) 1999-06-07 2004-09-28 Nortel Networks Limited Managing calls over a data network
US6516350B1 (en) 1999-06-17 2003-02-04 International Business Machines Corporation Self-regulated resource management of distributed computer resources
US20020111133A1 (en) * 1999-07-15 2002-08-15 Erland Wittkotter Data processing appliance
US6766348B1 (en) 1999-08-03 2004-07-20 Worldcom, Inc. Method and system for load-balanced data exchange in distributed network-based resource allocation
US7058804B1 (en) * 1999-08-30 2006-06-06 Nippon Telegraph And Telephone Corporation Data storing system, issuing apparatus, data providing apparatus and computer readable medium storing data storing program
US6788827B1 (en) * 1999-09-30 2004-09-07 Koninklijke Philips Electronics N.V. Image processing method and system for following a moving object from one image to an other image sequence
US20030200252A1 (en) 2000-01-10 2003-10-23 Brent Krum System for segregating a monitor program in a farm system
US6725272B1 (en) 2000-02-18 2004-04-20 Netscaler, Inc. Apparatus, method and computer program product for guaranteed content delivery incorporating putting a client on-hold based on response time
US6658473B1 (en) 2000-02-25 2003-12-02 Sun Microsystems, Inc. Method and apparatus for distributing load in a computer environment
US20020133593A1 (en) 2000-03-03 2002-09-19 Johnson Scott C. Systems and methods for the deterministic management of information
US20020065930A1 (en) 2000-03-07 2002-05-30 Rhodes David L. Collaborative host masquerading system
US20050060553A1 (en) * 2000-03-09 2005-03-17 Microsoft Corporation Session-state manager
US20020138618A1 (en) 2000-03-21 2002-09-26 F5 Networks, Inc. Simplified method for processing multiple connections from the same client
US20010042131A1 (en) 2000-04-14 2001-11-15 John Mathon System for handling information and information transfers in a computer network
US20020049815A1 (en) 2000-04-14 2002-04-25 Kayshav Dattatri System for monitoring and managing information and information transfers in a computer network
US6925482B2 (en) 2000-04-14 2005-08-02 Slam Dunk Networks, Inc. Archival database system for handling information and information transfers in a computer network
US20010032263A1 (en) 2000-04-14 2001-10-18 Ganesan Gopal Archival database system for handling information and information transfers in a computer network
US7305486B2 (en) 2000-06-30 2007-12-04 Kanad Ghose System and method for fast, reliable byte stream transport
US6567802B1 (en) * 2000-09-06 2003-05-20 The Trustees Of The University Of Pennsylvania Systematic approach to query optimization
US20020062454A1 (en) 2000-09-27 2002-05-23 Amphus, Inc. Dynamic power and workload management for multi-server system
US20020042828A1 (en) 2000-10-05 2002-04-11 Christopher Peiffer Connection management system and method
US20020150094A1 (en) 2000-10-27 2002-10-17 Matthew Cheng Hierarchical level-based internet protocol multicasting
US20020062375A1 (en) 2000-11-22 2002-05-23 Dan Teodosiu Locator and tracking service for peer to peer resources
US20040015608A1 (en) 2000-11-29 2004-01-22 Applied Microsystems Corporation Method and system for dynamically incorporating advertising content into multimedia environments
US20020112058A1 (en) 2000-12-01 2002-08-15 Microsoft Corporation Peer networking host framework and hosting API
US20020085714A1 (en) * 2000-12-28 2002-07-04 Wataru Inoha Contents recording apparatus, recording medium, contents reproducing apparatus, contents transmission method, transmission medium, and contents reception method
US20020107935A1 (en) 2001-01-12 2002-08-08 Epicrealm Inc. Method and system for community data caching
CA2331046A1 (en) 2001-01-15 2002-07-15 Netpcs Networks Inc. Method and system for internet connection and communication management
US20020184310A1 (en) 2001-01-22 2002-12-05 Traversat Bernard A. Providing peer groups in a peer-to-peer environment
US20020120744A1 (en) 2001-02-28 2002-08-29 Chellis Eugene C. System and method for describing and automatically managing resources
US20020129159A1 (en) 2001-03-09 2002-09-12 Michael Luby Multi-output packet server with independent streams
US20030163702A1 (en) 2001-04-06 2003-08-28 Vigue Charles L. System and method for secure and verified sharing of resources in a peer-to-peer network environment
US7274706B1 (en) 2001-04-24 2007-09-25 Syrus Ziai Methods and systems for processing network data
US20020174219A1 (en) 2001-05-21 2002-11-21 International Business Machines Corporation System and method for providing gracefully degraded services on the internet under overloaded conditions
US20030043846A1 (en) 2001-08-31 2003-03-06 Purpura William J. User bandwidth monitor and control management system and method
US7111162B1 (en) 2001-09-10 2006-09-19 Cisco Technology, Inc. Load balancing approach for scaling secure sockets layer performance
US7039916B2 (en) 2001-09-24 2006-05-02 Intel Corporation Data delivery system for adjusting assignment of connection requests to nodes based upon the tracked duration
US20030182425A1 (en) 2002-03-01 2003-09-25 Docomo Communications Laboratories Usa, Inc. Communication system capable of executing a communication task in a manner adaptable to available distributed resources
US7490162B1 (en) * 2002-05-15 2009-02-10 F5 Networks, Inc. Method and system for forwarding messages received at a traffic manager
US20060041745A1 (en) 2002-06-19 2006-02-23 Marratech Ab Apparatus and method for conveying private information within a group communication system
US20040078622A1 (en) 2002-09-18 2004-04-22 International Business Machines Corporation Client assisted autonomic computing
US20040151500A1 (en) 2002-12-06 2004-08-05 Akira Misawa OVPN system, OVPN terminating device, collective controlling device, and optical communication network
US7246356B1 (en) 2003-01-29 2007-07-17 Adobe Systems Incorporated Method and system for facilitating comunications between an interactive multimedia client and an interactive multimedia communication server
US20040193461A1 (en) 2003-03-27 2004-09-30 International Business Machines Corporation Method and apparatus for obtaining status information in a grid
US20040215780A1 (en) 2003-03-31 2004-10-28 Nec Corporation Distributed resource management system
US20050057521A1 (en) * 2003-09-16 2005-03-17 Microsoft Corporation Method for processing data quantifying force applied to one or more keys of a computer keyboard
US20080256180A1 (en) 2003-10-14 2008-10-16 International Business Machines Corporation Use of hardware to manage dependencies between groups of network data packets
US20050160269A1 (en) * 2004-01-20 2005-07-21 Matsushita Electric Works, Ltd. Common security key generation apparatus
US20050165921A1 (en) 2004-01-23 2005-07-28 Sam Abadir Systems and methods for vertically integrated data distribution and access management
US20050198634A1 (en) * 2004-01-28 2005-09-08 Nielsen Robert D. Assigning tasks in a distributed system
US20060047831A1 (en) 2004-05-19 2006-03-02 Bea Systems, Inc. System and method for clustered tunneling of requests in application servers and transaction-based systems
US7403945B2 (en) 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
US20060101081A1 (en) 2004-11-01 2006-05-11 Sybase, Inc. Distributed Database System Providing Data and Space Management Methodology
US20070180227A1 (en) * 2005-03-01 2007-08-02 Matsushita Electric Works, Ltd. Decryption apparatus for use in encrypted communications
US20060215652A1 (en) 2005-03-22 2006-09-28 Logitech Europe S.A. Method and apparatus for packet traversal of a network address translation device
US20080280623A1 (en) 2005-04-04 2008-11-13 Telefonaktiebolaget L M Ericsson (Publ) Method and Apparatus For Distributing Load on Application Servers
US20060228678A1 (en) * 2005-04-11 2006-10-12 Seiko Epson Corporation Data display method of data display apparatus, data display apparatus, data generation apparatus having the same, and sheet processing apparatus
US20070033403A1 (en) * 2005-07-21 2007-02-08 Microsoft Corporation Extended authenticated key exchange
US20070028106A1 (en) * 2005-07-26 2007-02-01 Microsoft Corporation Extended authenticated key exchange with key confirmation
US20070234428A1 (en) 2006-03-22 2007-10-04 Rash Michael B Method for secure single-packet remote authorization
US20070226743A1 (en) 2006-03-27 2007-09-27 Fujitsu Limited Parallel-distributed-processing program and parallel-distributed-processing system
US20070256078A1 (en) 2006-04-28 2007-11-01 Falk Nathan B Resource reservation system, method and program product used in distributed cluster environments
US20080046758A1 (en) * 2006-05-05 2008-02-21 Interdigital Technology Corporation Digital rights management using trusted processing techniques
US20080075048A1 (en) 2006-09-26 2008-03-27 Suszko August J Socket based passive server
US20080086453A1 (en) 2006-10-05 2008-04-10 Fabian-Baber, Inc. Method and apparatus for correlating the results of a computer network text search with relevant multimedia files
US20080141378A1 (en) * 2006-12-12 2008-06-12 Mclean Ivan Hugh Method and apparatus for creating licenses in a mobile digital rights management network
US20080301219A1 (en) 2007-06-01 2008-12-04 Michael Thornburgh System and/or Method for Client-Driven Server Load Distribution
US20090024739A1 (en) 2007-07-17 2009-01-22 Thornburgh Michael C Endpoint discriminator in network transport protocol startup packets

Non-Patent Citations (24)

* Cited by examiner, † Cited by third party
Title
"Real-Time Media Flow Protocol Frequently Asked Questions-External", Jul. 2008. http://download.macromedia.com/pub/labs/flashplayer10/flashplayer10-rtmfp-faq-070208.pdf (accessed on May 8, 2009), 5 pages.
"Secure Hash Standard" Federal Information Processing Standards Publication 280-2, Aug. 1, 2002, pp. I-iii and 1-71.
Allman, M. et al., "RFC 2581: TCP Congestion Control", Apr. 1999, to be published by the USPTO, 13 pages.
Andreasson, "Chapter 4.4. TCP Connections", 2001, Downloaded from the internet at http://www.faqs.org/docs/iptables/tcpconnections.html on May 9, 2008, 4 pages.
Aron, et al., "Cluster Reserves: A Mechanism for Resource Management in Cluster-based Network Servers", 2000, Department of Computer Science, Rice University, pp. 90-101, ACM, 13 pages.
Bernstein, "SYN Cookies", downloaded from the internet at http://cr.yp.to/syncookies.html on May 9, 2008, 3 pages.
Co-pending U.S. Appl. No. 11/779,165, filed Jul. 17, 2007.
http://en.wikipedia.org/wiki/BitTorrent-%protocol%29, May 5, 2008, 13 pages.
http://en.wikipedia.org/wiki/Gnutella, Apr. 25, 2008, 8 pages.
http://en.wikipedia.org/wiki/Kazaa, May 3, 2008, 7 pages.
International Search Report and Written Opinion mailed Jun. 27, 2008, in related matter PCT/US2008/053865, 9 pages.
International Search Report and Written Opinion mailed Oct. 28, 2008, in related matter PCT/US2008/063739, 9 pages.
Kaufman et al., "The Secure Media Flow Protocol, Version 1", Amicima, Inc. 2004, pp. 1-14.
Menezes et al., "Handbook of Applied Cryptography," CRC Press, 1996, pp. 321-383, 64 pages.
Office Action mailed Jan. 13, 2010, in related matter U.S. Appl. No. 11/779,165, 21 pages.
Office Action mailed Sep. 3, 2009, in related matter U.S. Appl. No. 11/779,165, 21 pages.
Pai et aI, "Locality-Aware Request Distribution in Clusterbased Network Servers", 1998, Department of Electrical and Computer Engineering, Rice University, pp. 205-216, ACM, 13 pages.
Patent Application, filed Feb. 20, 2008, for related U.S. Appl. No. 12/034,649, 29 pages.
Patent Application, filed Jan. 3, 2008, U.S. Appl. No. 11/969,186.
Postel, J., "RFC 768: User Datagram Protocol", Aug. 1980, to be published by the USPTO, 3 pages.
Response filed Sep. 28, 2009 in co-pending U.S. Appl. No. 11/757,126, 23 pages.
Salowey et al., "Transport Layer Security (TLS) Session Resumption without Server-Side State", Network Working Group, Internet-Draft, May 26, 2009, 18 pages.
Stewart, "Stream Control Transmission Protocol", Sep. 2007, Network Working Group, Request for Comment 4960, downloaded from the internet at http://www.ietf.org/rfc/rfc4960.txt on May 9, 2008, 150 pages.
U.S. Appl. No. 11/969,186, in Office Action mailed Dec. 16, 2009, 8 pages.

Also Published As

Publication number Publication date
US20120278493A1 (en) 2012-11-01
US8069251B2 (en) 2011-11-29
WO2008147578A1 (en) 2008-12-04
US20080301219A1 (en) 2008-12-04

Similar Documents

Publication Publication Date Title
US9300733B2 (en) System and/or method for client-driven server load distribution
US10686850B2 (en) Enterprise client-server system and methods of providing web application support through distributed emulation of websocket communications
CN108683747B (en) Resource obtaining, distributing and downloading method, device, equipment and storage medium
EP3547580B1 (en) Data sending method and apparatus, and data receiving method and apparatus
US20080175383A1 (en) Method and communication unit for communicating between communication apparatus
US20040133631A1 (en) Communication system
US9332090B1 (en) Communication data padding
WO2018072650A1 (en) Method, apparatus, and platform for accomplishing interaction between mobile terminal and iptv
US8650313B2 (en) Endpoint discriminator in network transport protocol startup packets
CN115297098B (en) Edge service acquisition method and device, edge computing system, medium and equipment
US8443057B1 (en) System, method, and/or apparatus for establishing peer-to-peer communication
WO2016180284A1 (en) Service node allocation method, device, cdn management server and system
US20190373085A1 (en) Transfer apparatus, transfer method, and program
CN106060155B (en) The method and device of P2P resource-sharing
US20130024543A1 (en) Methods for generating multiple responses to a single request message and devices thereof
CN105359485A (en) Method for retrieving, by a client terminal, a content part of a multimedia content
TWI691184B (en) Data transmission and reception method
WO2023129183A1 (en) System, method and computer-readable medium for streaming data accessing
CN118101782A (en) Data transmission method, device, electronic equipment and storage medium
CN117880542A (en) CDN cluster source returning method based on long connection and CDN cluster based on long connection
CN117793002A (en) Path acquisition method, content distribution network system, computing device, and storage medium
Paul et al. Performance challenges of decentralised services

Legal Events

Date Code Title Description
AS Assignment

Owner name: ADOBE SYSTEMS INCORPORATED, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:THORNBURGH, MICHAEL;KAUFMAN, MATTHEW;REEL/FRAME:027608/0185

Effective date: 20070531

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: ADOBE INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:ADOBE SYSTEMS INCORPORATED;REEL/FRAME:048867/0882

Effective date: 20181008

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8