Combining stateless and stateful server load balancing
Summary by NHIP
Hybrid-Stateful Server Load Balancing
The service gateway switches between hybrid-stateful and hybrid-stateless processing methods for data packets based on satisfied conditions. The gateway compares a stored time duration against a predetermined threshold or receives conditions from an administrator to trigger the switch.
Claim Score by NHIP
Abstract
The processing of data packets sent over a communication session between a host and a server by a service gateway includes processing a data packet using a current hybrid-stateful or hybrid-stateless processing method. The processing then checks whether a hybrid-stateless or hybrid-stateful condition is satisfied. When one of the sets of conditions is satisfied, the process includes changing from a hybrid-stateful to a hybrid-stateless processing method, or vice versa, for a subsequently received data packet. If the conditions are not satisfied, the process continues as originally structured.

Term
5.1 yearsleft in the term
Expires 24 October 2031.
- Priority
- Filed
- Granted
- Today
- Expires
15 claims: 3 independent, 12 dependent
- 1A method for processing data packets sent over a communication session between a host and a server by a service gateway, comprising:processing a data packet using a hybrid-stateful processing method by the service gateway, the hybrid-stateful processing method utilizing a service session table;checking by the service gateway whether a hybrid-stateless condition is satisfied;in response to determining that the hybrid-stateless condition is satisfied, changing to a hybrid-stateless processing method for a subsequently received data packet by the service gateway, the hybrid-stateless processing method utilizing a service mapping table;and in response to determining that the hybrid-stateless condition is not satisfied, processing the subsequently received data packet using the hybrid-stateful processing method by the service gateway.
- 5A system, comprising:a service gateway comprising a processor and a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code configured to: process a data packet using a hybrid-stateful processing method, the hybrid-stateful processing method utilizing a service session table at the service gateway;check whether a hybrid-stateless condition is satisfied;in response to determining that the hybrid-stateless condition is satisfied, change to a hybrid-stateless processing method for a subsequently received data packet, the hybrid-stateless processing method utilizing a service mapping table at the service gateway;and in response to determining that the hybrid-stateless condition is not satisfied, process the subsequently received data packet using the hybrid-stateful processing method.
- 9Broadest claimClaim Score 61, broad(NHIP)A method for processing data packets sent over a communication session between a host and a server by a service gateway, comprising:processing a data packet using a hybrid-stateless processing method by the service gateway, the hybrid-stateless processing method utilizing a service mapping table;checking by the service gateway whether a hybrid-stateful condition is satisfied;in response to determining that the hybrid-stateful condition is satisfied, changing to a hybrid-stateful processing method for a subsequently received data packet by the service gateway, the hybrid-stateful processing method utilizing a service session table;and in response to determining that the hybrid-stateful condition is not satisfied, processing the subsequently received data packet using the hybrid-stateless processing method by the service gateway.
Independent claims3
105 paragraphs in 5 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of and claims the priority benefit of U.S. patent application Ser. No. 13/280,336 filed on Oct. 24, 2011, and issued on Nov. 25, 2014 as U.S. Pat. No. 8,897,154, entitled “Combining Stateless and Stateful Server Load Balancing,” the disclosure of which is incorporated herein by reference.
BACKGROUND OF THE INVENTION
1. Field
This invention relates generally to data communications, and more specifically, to a service gateway.
2. Related Art
Demand for data communication services for consumer and corporate computing devices has been rapidly increasing. Service providers deploy service gateways such as server load balancers or traffic managers to bridge host computers or computing devices with servers providing the data services.
Service gateways provide services either using a stateful processing method or a stateless processing method. Generally, in a stateful processing method, packets are processed as a stream of packets, and each packet in the stream are processed in the same way. In a stateless processing method, packets are processed discretely, where each packet is assessed individually. The stateful processing method may be preferred over the stateless processing method due to the security and control features that may be implemented, however, the resource requirements of such features may make the services difficult to scale. The stateless processing method may be preferred over the stateful processing method due to its scalability, however, this is at the expense of security and control.
Traffic managed by service gateways is rarely uniform, as conditions on a network typically fluctuate, at times greatly. Currently, system administrators are required to choose either a stateful processing method or a stateless processing method for a particular service address, weighing the costs and benefits of each method. System administrators are not able to realize the advantages of both processing methods for such non-uniform traffic.
BRIEF SUMMARY OF THE INVENTION
According to one embodiment of the present invention, a method for processing data packets sent over a communication session between a host and a server by a service gateway, comprises: processing a data packet using a hybrid-stateful processing method by the service gateway; checking by the service gateway whether a hybrid-stateless condition is satisfied; in response to determining that the hybrid-stateless condition is satisfied, changing to a hybrid-stateless processing method for a subsequently received data packet by the service gateway; and in response to determining that the hybrid-stateless condition is not satisfied, processing the subsequently received data packet using the hybrid-stateful processing method by the service gateway.
In another embodiment of the present invention, a method for processing data packets sent over a communication session between a host and a server by a service gateway, comprises: processing a data packet using a hybrid-stateless processing method by the service gateway, wherein the hybrid-stateless processing method processes the data packet using a stateless processing method unless a service address or a server address of the data packet matches a session entry in a session table; checking by the service gateway whether a hybrid-stateful condition is satisfied; in response to determining that the hybrid-stateful condition is satisfied, changing to a hybrid-stateful processing method for a subsequently received data packet by the service gateway, wherein the hybrid-stateful processing method processes the subsequently received data packet using a stateful processing method unless the subsequently received data packet either does not comprise a service request or the subsequently received data packet is received from the server; in response to determining that the hybrid-stateful condition is not satisfied, processing the subsequently received data packet using the hybrid-stateless processing method by the service gateway; wherein the hybrid-stateful processing method comprises: receiving the data packet by the service gateway; determining by the service gateway whether the data packet is received by the service gateway from the host or the server; in response to determining that the data packet is received from the host, determining by the service gateway whether the data packet comprises a service request; in response to determining that the data packet comprises the service request, processing the data packet using the stateful processing method by the service gateway; in response to determining that the data packet is received from the host and does not comprise the service request, processing the data packet using the hybrid-stateless processing method by the service gateway; and in response to determining that the data packet is received from the server, processing the data packet using the hybrid-stateless processing method by the service gateway.
In one aspect of the present invention, the hybrid-stateless processing method comprises: receiving the subsequently received data packet from the host by the service gateway; obtaining the service address from the subsequently received data packet by the service gateway; comparing the service address of the subsequently received data packet against service addresses stored in session entries in the session table by the service gateway; in response to determining that the session table comprises a session entry matching the service address of the subsequently received data packet, processing the subsequently received data packet based on information stored in the matching session entry using the stateful processing method by the service gateway. In response to determining that the session table does not comprise any session entry matching the service address of the subsequently received data packet: comparing the service address of the subsequently received data packet against service addresses stored in mapping entries in a mapping table by the service gateway, finding a mapping entry matching the service address of the subsequently received data packet by the service gateway, and processing the subsequently received data packet based on information stored in the matching mapping entry using the stateless processing method by the service gateway.
System and computer program products corresponding to the above-summarized methods are also described and claimed herein.
BRIEF DESCRIPTION OF THE DRAWINGS
<figref idref="DRAWINGS">FIG. 1</figref> illustrates a service gateway for processing a communication session between a host and a plurality of servers.
<figref idref="DRAWINGS">FIG. 2</figref> illustrates a stateful processing method.
<figref idref="DRAWINGS">FIG. 3</figref> illustrates a stateless processing method.
<figref idref="DRAWINGS">FIG. 4</figref> illustrates an embodiment of a service gateway performing a hybrid-stateless processing method combining a stateful processing method and a stateless processing method according to the present invention.
<figref idref="DRAWINGS">FIG. 5</figref> illustrates an embodiment of a service gateway performing a hybrid-stateful processing method combining a stateful processing method and a stateless processing method according to the present invention.
<figref idref="DRAWINGS">FIG. 6</figref> illustrates an embodiment of a service gateway changing from a hybrid-stateful processing method to a hybrid-stateless processing in response to a hybrid-stateless condition being satisfied according to the present invention.
<figref idref="DRAWINGS">FIG. 7</figref> illustrates an embodiment of a service gateway changing from a hybrid-stateless processing method to a hybrid-stateful processing method in response to a hybrid-stateful condition being satisfied according to the present invention.
<figref idref="DRAWINGS">FIG. 8</figref> is a flowchart illustrating an embodiment of a hybrid-stateless processing method according to the present invention.
<figref idref="DRAWINGS">FIG. 9</figref> is a flowchart illustrating an embodiment of a hybrid-stateful processing method according to the present invention.
<figref idref="DRAWINGS">FIG. 10</figref> is a flowchart illustrating an embodiment of a method for changing from a hybrid-stateful processing method to a hybrid-stateless processing in response to a hybrid-stateless condition being satisfied according to the present invention.
<figref idref="DRAWINGS">FIG. 11</figref> is a flowchart illustrating an embodiment of a method for changing from a hybrid-stateless processing method to a hybrid-stateful processing method in response to a hybrid-stateful condition being satisfied according to the present invention.
DETAILED DESCRIPTION OF THE INVENTION
The following description is presented to enable one of ordinary skill in the art to make and use the invention and is provided in the context of a patent application and its requirements. Various modifications to the embodiment will be readily apparent to those skilled in the art and the generic principles herein may be applied to other embodiments. Thus, the present invention is not intended to be limited to the embodiment shown but is to be accorded the widest scope consistent with the principles and features described herein.
The present invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the present invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the present invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboards, displays, point devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified local function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Embodiments of the present invention provide a security gateway with the capability of processing packets using either a hybrid stateless processing method or a hybrid stateful processing method, and with the capability for assessing conditions in determining whether to switch from using the hybrid stateful processing method to the hybrid stateless processing method or vice versa. Before describing the various embodiments of the present invention, the stateful only and stateless only methods are first described with reference to <figref idref="DRAWINGS">FIGS. 1 through 3</figref>.
<figref idref="DRAWINGS">FIG. 1</figref> illustrates a service gateway <b>110</b> for processing a communication session <b>300</b> between a host <b>100</b> and a server <b>200</b>. A plurality of data packets are sent between host <b>100</b> and server <b>200</b> over the communication session <b>300</b>. The service gateway <b>110</b> receives a service request <b>301</b> data packet from a host <b>100</b> to establish communication session <b>300</b>. Service request <b>301</b> is delivered over a data network <b>153</b>. Service request <b>301</b> may be a Web service request such as a HTTP (Hypertext Transport Protocol) request, a secure HTTP request, a FTP (File Transfer Protocol) request, a file transfer request, a SIP (Session Initiation Protocol) session request, a request based on Web technology, a video or audio streaming request, a Web conferencing session request, or any request over the Internet, corporate network, data center network, or a network cloud. Service request <b>301</b> may be a request for a mobile application download, an advertisement delivery request, an e-book delivery request, a collaboration session request, or an on-line newspaper or magazine delivery request.
Host <b>100</b> is a computing device with network access capabilities. Host <b>100</b> may be a workstation, a desktop personal computer or a laptop personal computer. In some embodiments, host <b>100</b> is a Personal Data Assistant (PDA), a tablet, a smartphone, or a cellular phone. For other examples, host <b>100</b> may be a set-top box, an Internet media viewer, an Internet media player, a smart sensor, a smart medical device, a net-top box, a networked television set, a networked DVR, a networked Blu-ray player, or a media center.
Service gateway <b>110</b> is a computing device operationally coupled to a processor <b>113</b> and a computer readable medium <b>114</b> for storing computer readable program code to be executed by the processor <b>113</b>. Service gateway <b>110</b> may be implemented as a server load balancer, an application delivery controller, a service delivery platform, a traffic manager, a security gateway, a component of a firewall system, a component of a virtual private network (VPN), a load balancer for video servers, or a gateway to distribute load to one or more servers.
Server <b>200</b> is a computing device operationally coupled to a processor <b>213</b> and a computer readable medium <b>214</b> for storing computer readable program code to be executed by the processor <b>213</b>. The computer readable program code may implement server <b>200</b> as a Web server, a file server, a video server, a database server, an application server, a voice system, a conferencing server, a media gateway, a SIP server, a remote access server, a VPN server, a media center, an app server or a network server providing a network or application service to host <b>100</b>.
Data network <b>153</b> may include an Internet Protocol (IP) network. Data network <b>153</b> may include a corporate data network or a regional corporate data network, an Internet service provider network, a residential data network, a wired network such as Ethernet, a wireless network such as a WiFi network, or cellular network. Data network <b>153</b> may reside in a data center, or connects to a network or application network cloud.
Service request <b>301</b> from host <b>100</b> includes a service address <b>331</b>, such as an IP address. Service address <b>331</b> includes an application layer address or a transport layer port number, such as transmission control protocol (TCP) port number or user datagram protocol (UDP) port number. Service address <b>331</b> is associated with service gateway <b>110</b> so that service gateway <b>110</b> processes the service request <b>301</b>. Service address <b>331</b> may include a destination IP address of service request <b>301</b>, and optionally may include destination transport layer port number of service request <b>301</b>.
Service request <b>301</b> may include a TCP session request data packet, or a UDP data packet. Service address <b>331</b> is included in the data packet of service request <b>301</b>.
Service gateway <b>110</b> determines a server address <b>321</b> based on service address <b>331</b> obtained from service request <b>301</b>. Server address <b>321</b> is associated with server <b>200</b> and may include a network address or IP address of server <b>200</b>. Server address <b>321</b> may include an application layer address, such as a TCP port number or a UDP port number of server <b>200</b>.
Based on server address <b>321</b>, service gateway <b>110</b> sends a service session request <b>306</b> to server <b>200</b>. Subsequently service gateway <b>110</b> receives a response to session request <b>306</b> from server <b>200</b> and establishes a server-side service session <b>305</b> with server <b>200</b>. Based on session request <b>306</b> response, service gateway <b>110</b> sends a service request <b>301</b> response to host <b>100</b>, and establishes a host-side service session <b>302</b> with host <b>100</b> for service request <b>301</b>.
Communication session <b>300</b> includes host-side service session <b>302</b> and server-side service session <b>305</b>. Service session <b>302</b> includes one or more data packets from host <b>100</b> for communication session <b>300</b>. Service session <b>305</b> includes one or more data packets from server <b>200</b> for communication session <b>300</b>. Service session <b>302</b> may include service request <b>301</b>.
Upon establishment of service session <b>302</b> and service session <b>305</b>, service gateway <b>110</b> subsequently processes a data packet <b>304</b> of service session <b>302</b> received from host <b>100</b>. Data packet <b>304</b> includes service address <b>331</b>. Service gateway <b>110</b> modifies data packet <b>304</b> by replacing service address <b>331</b> with server address <b>321</b>. Service gateway <b>110</b> sends modified data packet <b>304</b> to server <b>200</b>.
When service gateway <b>110</b> receives a data packet <b>307</b> of service session <b>305</b> from server <b>200</b>, service gateway <b>110</b> processes data packet <b>307</b>. Data packet <b>307</b> of service session <b>305</b> may include server address <b>321</b>. Service gateway <b>110</b> modifies data packet <b>307</b> by replacing server address <b>321</b> with service address <b>331</b>. Service gateway <b>110</b> sends modified data packet <b>307</b> to host <b>100</b>.
There are two common methods in processing service session <b>302</b> and service session <b>305</b>: a stateful processing method and a stateless processing method. <figref idref="DRAWINGS">FIG. 2</figref> illustrates a stateful processing method. In <figref idref="DRAWINGS">FIG. 2</figref>, service gateway <b>110</b> maintains a service session table <b>412</b>. Session table <b>412</b> stores one or more service session entries. Service gateway <b>110</b> creates a session entry <b>420</b> for service session <b>302</b>. Session entry <b>420</b> stores service address <b>331</b> and server address <b>321</b> to associate service address <b>331</b> and server address <b>321</b>. Service gateway <b>110</b> may create session entry <b>420</b> after establishing host-side service session <b>302</b> and server-side service session <b>306</b>. Service gateway <b>110</b> may create session entry <b>420</b> after receiving service request <b>301</b>. Service gateway <b>110</b> stores service address <b>331</b> and server address <b>321</b> in session entry <b>420</b> after service gateway <b>110</b> determines the addresses. Service gateway <b>110</b> stores session entry <b>420</b> in session table <b>412</b>.
Service gateway <b>110</b> includes a storage <b>400</b> and stores session table <b>412</b> in storage <b>400</b>. Storage <b>400</b> is a memory module residing in service gateway <b>110</b>. Service gateway <b>110</b> includes a network processing module (not shown) comprising a field programmable gate array (FPGA), a network processor, an application specific integrated circuit (ASIC). Storage <b>400</b> is associated with the network processing module. Examples of storage <b>400</b> include a content addressable memory (CAM), a ternary content addressable memory (TCAM), a static random accessible memory (SRAM), or a dynamic random accessible memory (DRAM).
Service gateway <b>110</b> obtains service address <b>331</b> from service request <b>301</b>. Service gateway <b>110</b> maintains a service policy <b>471</b> and determines server address <b>321</b> based on service policy <b>471</b>. Service policy <b>471</b> may be based on a relationship between server <b>200</b> and service address <b>331</b>. Service policy <b>471</b> includes service address <b>331</b> and server address <b>321</b>. Service gateway <b>110</b> selects service policy <b>471</b> based on a match between service address <b>331</b> obtained from service request <b>301</b> and the service address in the service policy <b>471</b>. Service gateway <b>110</b> applies service policy <b>471</b> to service request <b>301</b>. Service policy <b>471</b> may include a security policy <b>482</b> where a non-secure service request <b>301</b> can be sent to server <b>200</b>. Service policy <b>471</b> may include a traffic policy <b>483</b>, where service request <b>301</b> is served by server <b>200</b> when traffic load to server <b>200</b> is low. Service request <b>301</b> may be received from a predetermined network interface of service gateway <b>110</b> and traffic policy <b>483</b> indicates that service request <b>301</b> from the network interface should be sent to server <b>200</b>.
Server <b>240</b> also serves service request <b>301</b>. Service policy <b>471</b> may include a server load policy <b>484</b> indicating that service request <b>301</b> is to be sent to server <b>200</b> when server load of server <b>240</b> is high. In one example, service policy <b>471</b> includes a server availability policy <b>485</b> indicating that service request <b>301</b> is to be sent to server <b>200</b>, where server <b>200</b> is a back-up server to server <b>240</b>, and server <b>240</b> is not available. Service policy <b>471</b> may include a load balancing policy <b>486</b> between server <b>200</b> and server <b>240</b>. Service gateway <b>110</b> selects server <b>200</b> using the load balancing policy <b>486</b>, which may include a round robin or another load balancing scheme. Service policy <b>471</b> may include a host policy <b>487</b> indicating that service request <b>301</b> is to be sent to server <b>200</b> when host <b>100</b> satisfies host policy <b>487</b>.
After service gateway <b>110</b> applies service policy <b>471</b> to service request <b>301</b>, service gateway <b>110</b> retrieves server address <b>321</b> from service policy <b>471</b>. Service gateway <b>110</b> creates session entry <b>420</b> with service address <b>331</b> and server address <b>321</b>, associating service address <b>331</b> and server address <b>321</b>. Service gateway <b>110</b> stores session entry <b>420</b> in session table <b>412</b>.
Service gateway <b>110</b> uses session table <b>412</b> to process data packet <b>304</b> received from host <b>100</b>, and data packet <b>307</b> received from server <b>200</b>. When service gateway <b>110</b> receives data packet <b>304</b> from host <b>100</b>, service gateway <b>110</b> obtains service address <b>331</b> from data packet <b>304</b>. Service gateway <b>110</b> compares the obtained service address <b>331</b> against service addresses stored in session table <b>412</b>. When service gateway <b>110</b> determines there is a match between the obtained service address <b>331</b> and session entry <b>420</b> in session table <b>412</b>, service gateway <b>110</b> uses information stored in session entry <b>420</b> to process data packet <b>304</b>. Service gateway <b>110</b> modifies data packet <b>304</b> by replacing service address <b>331</b> with server address <b>321</b>, where server address <b>321</b> is obtained from the matched session entry <b>420</b>. Service gateway <b>110</b> sends modified data packet <b>304</b> to server <b>200</b>.
Service request <b>301</b> may include a host address <b>104</b> associated with host <b>100</b>. Service gateway <b>110</b> retrieves host address <b>104</b> from service request <b>301</b>. Service gateway <b>110</b> may use retrieved host address <b>104</b> when applying service policy <b>471</b>. Service gateway <b>110</b> stores host address <b>104</b> in service session entry <b>420</b>. Data packet <b>304</b> may include host address <b>104</b>. Service gateway <b>110</b> obtains host address <b>104</b> from data packet <b>304</b> and compares the obtained host address <b>104</b> against addresses stored in session table <b>412</b> and session entry <b>420</b>.
When service gateway <b>110</b> receives a data packet <b>307</b> of server-side service session <b>305</b> from server <b>200</b>, service gateway <b>110</b> retrieves server address <b>321</b> from data packet <b>307</b>. Service gateway <b>110</b> compares the obtained server address <b>321</b> against addresses stored in session table <b>412</b>, and determines there is a match with session entry <b>420</b>. In response to determining there is a match, service gateway <b>110</b> uses session entry <b>420</b> to process data packet <b>307</b>. Service gateway <b>110</b> modifies data packet <b>307</b> by replacing server address <b>321</b> with service address <b>331</b>, which is retrieved from the matched session entry <b>420</b>. Service gateway <b>110</b> sends modified data packet <b>307</b> to host <b>100</b>.
Data packet <b>307</b> may include host address <b>104</b>. Service gateway <b>110</b> obtains host address <b>104</b> from data packet <b>307</b> and uses the obtained host address <b>104</b> in comparing against addresses stored in session table <b>412</b> and session entry <b>420</b>.
Data packet <b>304</b> received from service session <b>302</b> may indicate a session termination request. For example, data packet <b>304</b> is a TCP FIN packet, a TCP RESET packet. Service gateway <b>110</b> inspects data packet <b>304</b> content and determines data packet <b>304</b> includes a session termination request. In response, service gateway <b>110</b> removes session entry <b>420</b> from session table <b>412</b>. Service gateway <b>110</b> may remove session entry <b>420</b> after processing data packet <b>304</b> or waits for a pre-determined period of time before removing session entry <b>420</b>.
The processing method illustrated in <figref idref="DRAWINGS">FIG. 2</figref> is often referred as a stateful processing method. A stateful processing method allows service gateway <b>110</b> to apply one or more service policies to select server <b>200</b>. The service policies may include security policies and other policies to protect server <b>200</b>. Security policy <b>482</b> may cause service request <b>301</b> to be declined if a security concern is detected. Such security consideration is known to those skilled in the art and is not described in this application. Applying traffic policy <b>483</b> or server load policy <b>484</b> can also protect server <b>200</b> from overloading. Enforcing the service policies often improves service response time of server <b>200</b> to serve host <b>100</b>.
However, applying service policy <b>471</b> to service request <b>301</b> requires computation resource of service gateway <b>110</b>, such as CPU cycles. Such computation requirement may post a limitation on the ability of service gateway <b>110</b> to provide services when service gateway <b>110</b> receives and processes a large number of service requests over a short period of time.
For example, session table <b>412</b> has a certain capacity limit, such as 4 GB, 2000 entries, up to 10000 entries or 200 MB. The greater the number of service sessions serviced by service gateway <b>110</b> using a stateful processing method, the greater the number of session entries stored in session table <b>412</b>. The capacity of session table <b>412</b> may become a severe limitation to the servicing capabilities of service gateway <b>110</b>.
<figref idref="DRAWINGS">FIG. 3</figref> illustrates a stateless processing method. In this method, service gateway <b>110</b> does not use session table <b>412</b>. Instead, service gateway <b>110</b> maintains and uses a service mapping table <b>452</b>. Service mapping table <b>452</b> is stored in storage <b>400</b>. Service mapping table <b>452</b> includes a service mapping entry <b>460</b>. Mapping entry <b>460</b> may include service address <b>331</b> and server address <b>321</b>, associating service address <b>331</b> and server address <b>321</b>. According to the service mapping entry <b>460</b>, server <b>200</b> with server address <b>321</b> serves host <b>100</b> for service address <b>331</b>.
When service gateway <b>110</b> receives a data packet <b>304</b> from host <b>100</b>, service gateway <b>110</b> obtains service address <b>331</b> from data packet <b>304</b>, and compares service address <b>331</b> with service addresses stored in service mapping table <b>452</b>. When service gateway <b>110</b> determines there is a match with mapping entry <b>460</b>, service gateway <b>110</b> retrieves server address <b>321</b> from mapping entry <b>460</b>. Service gateway <b>110</b> modifies data packet <b>304</b> by replacing service address <b>331</b> with server address <b>321</b>. Service gateway <b>110</b> sends modified data packet <b>304</b> to server <b>200</b>.
When service gateway <b>110</b> receives a data packet <b>307</b> from server <b>200</b>, service gateway <b>110</b> processes data packet <b>307</b> using service mapping table <b>452</b>. Service gateway <b>110</b> obtains server address <b>321</b> from data packet <b>307</b>. Service gateway <b>110</b> compares server address <b>321</b> against server addresses stored in service mapping table <b>452</b>. When service gateway <b>110</b> determines there is a match with mapping entry <b>460</b>, service gateway <b>110</b> retrieves service address <b>331</b> from mapping entry <b>460</b>, and modifies data packet <b>307</b> by replacing server address <b>321</b> with service address <b>331</b>. Subsequently service gateway <b>110</b> sends modified data packet <b>307</b> to host <b>100</b>.
Service gateway <b>110</b> may match service address <b>331</b> or server address <b>321</b> against service mapping table <b>452</b> using a hash method. Service mapping table <b>452</b> includes a hash table using a hash function (HashFunc) <b>571</b>. Mapping entry <b>460</b> is associated with a hash value (HashValue <b>581</b>).
HashValue <b>581</b> includes the result of applying HashFunc <b>571</b> to service address <b>331</b>. HashValue <b>581</b> may include the result of applying HashFunc <b>571</b> to server address <b>321</b>.
HashValue <b>581</b> may include an index of mapping entry <b>460</b> in service mapping table <b>452</b>. Mapping entry <b>460</b> occupies an entry in service mapping table <b>452</b> indexed by HashValue <b>581</b>. For example, service mapping table <b>452</b> contains 1000 entries where the indices are 1-1000, and mapping entry <b>460</b> has an index of 894. In another example, service mapping table <b>452</b> contains 16 entries and mapping entry <b>460</b> has an index of 7.
Service gateway <b>110</b> applies HashFunc <b>571</b> to service address <b>331</b> of data packet <b>304</b> to obtain HashValue <b>581</b>. Assume that service gateway <b>110</b> searches service mapping table <b>452</b> for an entry with index HashValue <b>581</b> and finds mapping entry <b>460</b>. For data packet <b>307</b>, service gateway <b>110</b> applies HashFunc <b>571</b> to server address <b>321</b> of data packet <b>307</b> to obtain HashValue <b>581</b>. Service gateway <b>110</b> searches service mapping table <b>452</b> for an entry with index HashValue <b>581</b> and finds mapping entry <b>460</b>.
Mapping entry <b>460</b> may include HashValue <b>581</b>. After service gateway <b>110</b> applies hash function HashFunc <b>571</b> to obtain HashValue <b>581</b>, service gateway <b>110</b> searches service mapping table <b>452</b> and finds mapping entry <b>460</b> containing an index matching HashValue <b>581</b>.
Examples of hash functions HashFunc <b>571</b> include CRC checksum functions and other checksum functions; hash functions using a combination of bit-wise operators such as bit-wise AND operator, bit-wise OR operator, bit-wise NAND operator and bit-wise XOR operator; MD5 hash functions and other cryptography hash functions; Jenkins hash function and other non-cryptography hash functions; hardware based hash functions implemented in FPGA, ASIC or an integrated circuit board of service gateway <b>110</b>; and other types of hash functions or table lookup functions. Typically such hash functions are simple and can be calculated rapidly by service gateway <b>110</b>.
Data packet <b>304</b> includes host address <b>104</b> associated with host <b>100</b>. Service gateway <b>110</b> obtains host address <b>104</b> from data packet <b>304</b> and uses the obtained host address <b>104</b> in the processing of data packet <b>304</b>.
Data packet <b>307</b> includes host address <b>104</b>. Service gateway obtains host address <b>104</b> from data packet <b>307</b> and uses the obtained host address <b>104</b> in the processing of data packet <b>307</b>.
Typically, mapping entry <b>460</b> is configured by a service provider or an administrator of a service provider. Mapping entry <b>460</b> may be configured when server <b>200</b> becomes available, or when server address <b>321</b> or service address <b>331</b> becomes available. Server address <b>321</b> or service address <b>331</b> may be configured by the service provider to become available.
In this stateless processing method, service mapping table <b>452</b> is not related to the number of service sessions processed by service gateway <b>110</b>. The capacity of service mapping table <b>452</b> is related to the number of available service addresses and server addresses. Such capacity is usually small. Service mapping tables <b>452</b> may have a few tens of entries or a few thousand entries.
The advantages of a stateless processing method include small resource requirement for service mapping table <b>452</b>, a minimal or no computational requirement to handle service request <b>301</b>, or no requirements to apply service policy <b>471</b>. A stateless processing method is usually preferred over a stateful processing method when service gateway <b>110</b> receives a large number of service session requests in a short period of time, or under a heavy load of service requests. A stateless method is also preferred when the memory capacity of session table for new sessions is running low, say below 10% of the session table <b>412</b>. A stateless method protects service gateway <b>110</b> from resource overload and therefore maintains service quality towards host <b>100</b> under stressful situations.
However, a stateless processing method may be less desirable than a stateful processing method due to security concerns, since service gateway <b>110</b> does not apply security policy <b>482</b>. Similarly service gateway <b>110</b> does not apply any other policy in service policy <b>471</b>, affecting security of server <b>200</b>, security of data network <b>153</b>, traffic condition of data network <b>153</b>, and service quality rendered to host <b>100</b>. A stateful processing method is also preferred over the stateless processing method when service gateway <b>110</b> may select server address <b>321</b> from a plurality of server addresses. For example, a service provider may configure a plurality of servers to serve service address <b>331</b> in a load balancing manner. A service provider may configure a backup server for service address <b>331</b>.
In a typical deployment scenario, a service provider may use a stateful processing method for a first service address while using a stateless processing method for a different second service address. The service provider does not expect the first service to have significant traffic or usage. The service provider may not expect the second service to be a security concern. In reality, the first service may see a sudden surge of traffic due to an unforeseen situation, whereas the second service may suffer a security attack. Using a hybrid processing method according to the present invention, as described below, a service provider may combine a stateful processing method for the first service when the load is light and change to a stateless processing method when the load becomes heavy; and may deploy a hybrid processing method to combine a stateless processing method for the second service during normal circumstances and switch immediately to a stateful processing method when a security alert is detected for the second service.
The various embodiment of the present invention are now described with reference to <figref idref="DRAWINGS">FIGS. 4 through 11</figref>.
<figref idref="DRAWINGS">FIG. 4</figref> illustrates an embodiment of a service gateway <b>110</b> performing a hybrid-stateless processing method combining a stateful processing method and a stateless process method according to the present invention. <figref idref="DRAWINGS">FIG. 8</figref> is a flowchart illustrating an embodiment of a hybrid-stateless processing method according to the present invention. In this embodiment, the computer readable medium <b>114</b> of the service gateway <b>110</b> stores computer readable program code, which when executed by processor <b>113</b>, implements the various embodiment of the present invention. Service gateway <b>110</b> maintains session table <b>412</b> and service mapping table <b>452</b> in storage <b>400</b>. In this embodiment of a hybrid-stateless processing method, service gateway <b>110</b> processes a received data packet <b>304</b> with a stateless method using service mapping table <b>452</b> when the service address of the received data packet <b>304</b> does not match any service addresses stored in session table <b>412</b>.
Service gateway <b>110</b> connects to server <b>200</b> and server <b>240</b>. Server <b>200</b> is associated with server address <b>321</b>. Server <b>240</b> is associated with server address <b>324</b>. Service gateway <b>110</b> is associated with service address <b>331</b> and service address <b>334</b>.
In some embodiments, session table <b>412</b> includes a session entry <b>420</b> which stores service address <b>331</b> and server address <b>321</b>, associating service address <b>331</b> and server address <b>321</b>. Service mapping table <b>452</b> includes a mapping entry <b>462</b> which stores service address <b>334</b> and server address <b>324</b>, associating service addresses <b>334</b> and <b>324</b>.
In various embodiments, server <b>200</b> may be the same as server <b>240</b>. Server address <b>321</b> may be the same as server address <b>324</b>. Service address <b>331</b> may be the same as service address <b>334</b>.
Referring to both <figref idref="DRAWINGS">FIGS. 4 and 8</figref>, service gateway <b>110</b> receives a data packet <b>304</b> from host <b>100</b> (<b>801</b>). Service gateway <b>110</b> obtains service address <b>336</b> from data packet <b>304</b> (<b>802</b>). Service gateway <b>110</b> compares service address <b>336</b> of data packet <b>304</b> against service addresses stored in session table <b>412</b> (<b>803</b>).
In some embodiments, service gateway <b>110</b> finds a match in session entry <b>420</b>, where service address <b>336</b> matches service address <b>331</b> of session entry <b>420</b> (<b>804</b>). In response to finding the match, service gateway <b>110</b> processes data packet <b>304</b> based on information stored in session entry <b>420</b> using a stateful processing method (<b>805</b>), such as the one described above with reference to <figref idref="DRAWINGS">FIG. 2</figref>.
When service gateway <b>110</b> does not find a match in session table <b>412</b> (<b>804</b>), service gateway <b>110</b> compares service address <b>336</b> of data packet <b>304</b> against service addresses in service mapping table <b>452</b> (<b>806</b>). If service gateway <b>110</b> finds a match in mapping entry <b>462</b> of service mapping table <b>452</b>, wherein service address <b>336</b> matches service address <b>324</b> of mapping entry <b>462</b> (<b>807</b>), service gateway <b>110</b> processes data packet <b>304</b> based on information stored in mapping entry <b>462</b> using a stateless processing method (<b>808</b>), such as the one described above with reference to <figref idref="DRAWINGS">FIG. 3</figref>.
In various embodiments, service gateway <b>110</b> receives a data packet <b>307</b> from server <b>200</b> (<b>830</b>). Service gateway <b>110</b> extracts server address <b>321</b> from data packet <b>307</b> (<b>831</b>) and compares server address <b>321</b> of data packet <b>307</b> against server addresses stored in session table <b>412</b> (<b>832</b>). When service gateway <b>110</b> finds a match in session entry <b>420</b>, with server address <b>321</b> of data packet <b>307</b> matching server address <b>321</b> of session entry <b>420</b> (<b>803</b>), service gateway <b>110</b> processes data packet <b>308</b> using the stateful processing method (<b>805</b>), as described above with reference to <figref idref="DRAWINGS">FIG. 2</figref>.
In some embodiments, service gateway <b>110</b> receives a data packet <b>308</b> from server <b>240</b> (<b>830</b>). Service gateway <b>110</b> extracts server address <b>324</b> from data packet <b>308</b> (<b>832</b>) and compares server address <b>324</b> of data packet <b>308</b> against server addresses stored in session table <b>412</b> (<b>832</b>). When service gateway <b>110</b> does not find a match (<b>833</b>), service gateway <b>110</b> compares server address <b>324</b> of data packet <b>308</b> against server addresses stored in service mapping table <b>452</b> (<b>834</b>) and finds a match in mapping entry <b>462</b>, where server address <b>324</b> of data packet <b>308</b> matches server address <b>324</b> of mapping entry <b>462</b> (<b>807</b>). In response, service gateway <b>110</b> modifies data packet <b>308</b> based on information stored in mapping entry <b>462</b> using a stateless processing method (<b>808</b>). Service gateway <b>110</b> sends modified data packet <b>308</b>.
<figref idref="DRAWINGS">FIG. 5</figref> illustrates an embodiment of a service gateway <b>110</b> performing a hybrid-stateful processing method combining a stateful processing method and a stateless processing method according to the present invention. <figref idref="DRAWINGS">FIG. 9</figref> is a flowchart illustrating an embodiment of the hybrid-stateful processing method according to the present invention. Referring to both <figref idref="DRAWINGS">FIGS. 5 and 9</figref>, service gateway <b>110</b> receives a data packet <b>304</b> from host <b>100</b> (<b>901</b>). In some embodiments, service gateway <b>110</b> determines that data packet <b>304</b> includes a service request <b>301</b> from host <b>100</b> (<b>902</b>). In response, service gateway <b>110</b> applies a stateful processing method to service request <b>301</b> (<b>903</b>). Service gateway <b>110</b> performs the stateful processing method, including applying service policy <b>471</b> to service request <b>301</b>, creating session entry <b>420</b> using service address <b>331</b> of service request <b>301</b> and server address <b>321</b> of service policy <b>471</b>, as described above with reference to <figref idref="DRAWINGS">FIG. 2</figref>.
In various embodiments, service gateway <b>110</b> determines data packet <b>304</b> does not include a service request (<b>902</b>). In response, service gateway <b>110</b> processes data packet <b>304</b> using the hybrid-stateless processing method, as described above with reference to <figref idref="DRAWINGS">FIG. 4</figref>.
In other embodiments, service gateway <b>110</b> receives a data packet <b>307</b> from server <b>200</b> (<b>901</b>). In this embodiment of a hybrid-stateful processing method, service gateway <b>110</b> applies a hybrid-stateless processing method to data packet <b>307</b> (<b>904</b>), as described above with reference to <figref idref="DRAWINGS">FIG. 4</figref>.
<figref idref="DRAWINGS">FIGS. 6 and 10</figref> illustrate an embodiment of a service gateway and a method, respectfully, for changing from a hybrid-stateful processing method to a hybrid-stateless processing method in response to a hybrid-stateless condition being satisfied according to the present invention. Referring to both <figref idref="DRAWINGS">FIGS. 6 and 10</figref>, service gateway <b>110</b> is using a hybrid-stateful processing method (<b>1001</b>). Service gateway <b>110</b> maintains a hybrid-stateless condition <b>810</b>. Service gateway <b>110</b> checks if hybrid-stateless condition <b>810</b> is satisfied (<b>1002</b>). In response to determining that the hybrid-stateless condition <b>810</b> is satisfied (<b>1003</b>), service gateway <b>110</b> changes to a hybrid-stateless processing method (<b>1004</b>). The service gateway <b>110</b> processes the next data packet received using the hybrid-stateless processing method, as described above with reference to <figref idref="DRAWINGS">FIGS. 4 and 8</figref>. In response to determining that the hybrid-stateless condition <b>810</b> is not satisfied (<b>1003</b>), the service gateway <b>110</b> continues using the hybrid-stateful processing method (<b>1005</b>), as described above with reference to <figref idref="DRAWINGS">FIGS. 5 and 9</figref>.
In some embodiments, hybrid-stateless condition <b>810</b> includes a session rate <b>811</b>. For example, session rate <b>811</b> is 10 thousand sessions per second, 5 thousand active sessions per second, or one hundred sessions per 10 milliseconds.
In various embodiments, service gateway <b>110</b> calculates a session rate <b>821</b>. Session rate <b>821</b> can be calculated based on a count of active host-side service sessions over a period of time. When the service session is associated with a session entry in session table <b>412</b>, a service session is active. In various embodiments, session rate <b>821</b> calculates a difference between a count of received service requests and a count of received service termination requests over a period of time. In other embodiments, session rate <b>821</b> calculates a count of service requests received over a period of time.
In some embodiments, service gateway <b>110</b> calculates a session rate <b>821</b> in a predetermined period of time, such as every second, once every 250 milliseconds, once every 3 seconds or once every 10 seconds. In other embodiments, service gateway <b>110</b> calculates session rate <b>821</b> at variable times. For example, service gateway <b>110</b> calculates session rate <b>821</b> when a data packet from a host is received; when a service request is received; when a service termination request is received; or when a data packet is received from server <b>200</b>. Service gateway <b>110</b> compares session rate <b>821</b> with session rate <b>811</b> of hybrid-stateless condition <b>810</b>. If session rate <b>821</b> exceeds or is equal to session rate <b>811</b>, service gateway <b>110</b> determines that hybrid-stateless condition <b>810</b> is met and satisfied.
In various embodiments, hybrid-stateless condition <b>810</b> includes a session table utilization <b>814</b>. A session table utilization is a parameter setting forth a percentage of the session table capacity that is storing session entries. Hybrid-stateless condition <b>810</b> is satisfied if a count of stored session entries of session table <b>412</b> exceeds session table utilization <b>814</b>. For example, session table utilization <b>814</b> is 90%, 85% or 95%. Service gateway <b>110</b> calculates a session table utilization <b>824</b> from time to time by calculating a count of stored session entries of session table <b>412</b>. In some embodiments, service gateway <b>110</b> calculates session table utilization <b>824</b> periodically, such as every second, once every 20 milliseconds, once every 500 milliseconds, or once every 2 seconds. In other embodiments, service gateway <b>110</b> calculates session table utilization <b>824</b> when service gateway <b>110</b> processes a service request, a service termination request, or a data packet.
Service gateway <b>110</b> compares session table utilization <b>824</b> with session table utilization <b>814</b> of hybrid-stateless condition <b>810</b>. When session table utilization <b>824</b> exceeds or is equal to session table utilization <b>814</b>, service gateway <b>110</b> determines that hybrid-stateless condition <b>810</b> is met and satisfied.
In some embodiments, hybrid-stateless condition <b>810</b> further includes a time duration <b>816</b>, where hybrid-stateless condition <b>810</b> must be considered met for at least a time duration <b>816</b> in order for the hybrid-stateless condition <b>810</b> to be satisfied. Examples of time duration <b>816</b> include 120 seconds, 30 seconds, and 5 seconds. Service gateway <b>110</b> checks from time to time whether the hybrid-stateless condition <b>810</b> is met, as described earlier. In various embodiments, service gateway <b>110</b> further includes a time duration <b>826</b> stored in memory. Initially, service gateway <b>110</b> assigns a value of 0 to the time duration <b>826</b>. From time to time, service gateway <b>110</b> checks if hybrid-stateless condition <b>810</b> is met. If hybrid-stateless condition <b>810</b> is met, service gateway <b>110</b> increases the time duration <b>826</b> by an amount of time elapsed since the last time the hybrid-stateless condition <b>810</b> was checked. After the time duration <b>826</b> is modified, service gateway <b>110</b> checks if the time duration <b>826</b> exceeds time duration <b>816</b>. If time duration <b>826</b> exceeds time duration <b>816</b>, service gateway <b>110</b> determines that hybrid-stateless condition <b>810</b> is satisfied. Service gateway <b>110</b> subsequently changes to employ a hybrid-stateless method with subsequently received data packets.
If service gateway <b>110</b> determines hybrid-stateless condition <b>810</b> is not met, service gateway <b>110</b> modifies the time duration <b>826</b> to a value of 0.
In some embodiments, service gateway <b>110</b> receives hybrid-stateless condition <b>810</b> from an operator or an administrator <b>130</b>. Administrator <b>130</b> can be a human operator provisioning hybrid-stateless condition <b>810</b> onto service gateway <b>110</b>. Administrator <b>130</b> can be a network management system sending hybrid-stateless condition <b>810</b> to service gateway <b>110</b>. Administrator <b>130</b> may include a storage medium storing hybrid-stateless condition <b>810</b>. Service gateway <b>110</b> retrieves hybrid-stateless condition <b>810</b> from the storage of administrator <b>130</b>.
<figref idref="DRAWINGS">FIGS. 7 and 11</figref> illustrate an embodiment of a service gateway and a method, respectfully, for changing from a hybrid-stateless processing method to a hybrid-stateful processing method in response to a hybrid-stateful condition being satisfied according to the present invention. Referring to both <figref idref="DRAWINGS">FIGS. 7 and 11</figref>, service gateway <b>110</b> employs a hybrid-stateless processing method (<b>1101</b>) Service gateway <b>110</b> maintains a hybrid-stateful condition <b>910</b>. Service gateway <b>110</b> checks if hybrid-stateful condition <b>910</b> is satisfied (<b>1102</b>). In response to determining that the hybrid-stateful condition <b>910</b> is satisfied (<b>1103</b>), service gateway <b>110</b> changes to a hybrid-stateful processing method (<b>1104</b>) and processes the next data packet using the hybrid-stateful processing method, described above with reference to <figref idref="DRAWINGS">FIGS. 5 and 9</figref>. In response to determining that the hybrid-stateful condition <b>910</b> is not satisfied (<b>1103</b>), service gateway <b>110</b> continues using the hybrid-stateless processing method (<b>1105</b>) and processes the next data packet using the hybrid-stateless processing method, as described above with reference to <figref idref="DRAWINGS">FIGS. 4 and 8</figref>.
In some embodiments, hybrid-stateful condition <b>910</b> includes a session rate <b>911</b>. For example, session rate <b>911</b> is 1 thousand sessions per second, 500 active sessions per second, or ten sessions per 10 milliseconds.
Service gateway <b>110</b> can calculate a session rate <b>921</b>. In some embodiments, session rate <b>921</b> calculates a difference between a count of received service requests and a count of received service termination requests over a period of time. Session rate <b>921</b> may also calculate a count of service requests received over a period of time. In various embodiments, service gateway <b>110</b> determines if a data packet received from a host includes a service request before applying a hybrid-stateless processing method to the received data packet. Service gateway <b>110</b> may also determine if a data packet received from a host or a server includes a service termination request before applying a hybrid-stateless processing method to the received data packet.
In some embodiments, service gateway <b>110</b> calculates session rate <b>921</b> in a predetermined period of time, such as every second, once every 100 milliseconds, once every 3 seconds, or once every 5 seconds. Service gateway <b>110</b> may also calculate session rate <b>921</b> at variable times. For example, service gateway <b>110</b> calculates session rate <b>921</b> when a data packet from a host is received; when a service request is received; when a service termination request is received; or when a data packet is received from a server. Service gateway <b>110</b> compares session rate <b>921</b> with session rate <b>911</b>. If session rate <b>921</b> is below or smaller than session rate <b>911</b>, service gateway <b>110</b> determines that hybrid-stateful condition <b>910</b> is met and satisfied.
In various embodiments, hybrid-stateful condition <b>910</b> includes a session table utilization <b>914</b>. Hybrid-stateful condition <b>910</b> is satisfied if a count of stored session entries of session table <b>412</b> does not exceed session table utilization <b>914</b>. For example, session table utilization <b>914</b> is 60%, 75% or 45%. Service gateway <b>110</b> calculates session table utilization <b>924</b> from time to time by calculating a count of stored session entries of session table <b>412</b>. In some embodiments, service gateway <b>110</b> calculates session table utilization <b>924</b> periodically, such as every second, once every 20 milliseconds, once every 500 milliseconds, or once every 2 seconds. Service gateway <b>110</b> may also calculate session table utilization <b>924</b> when service gateway <b>110</b> processes a service request, a service termination request, or a data packet.
Service gateway <b>110</b> compares session table utilization <b>924</b> with session table utilization <b>914</b> of hybrid-stateful condition <b>910</b>. If session table utilization <b>924</b> is smaller than session table utilization <b>914</b>, service gateway <b>110</b> determines that hybrid-stateful condition <b>910</b> is met and satisfied.
Hybrid-stateful condition <b>910</b> may further include a time duration <b>916</b>, where hybrid-stateful condition <b>910</b> must be considered met for at least a time duration <b>916</b> in order for the hybrid-stateful condition <b>910</b> is satisfied. Examples of time duration <b>916</b> include 100 seconds, 40 seconds, and 5 seconds. Service gateway <b>110</b> checks from time to time if the hybrid-stateful condition <b>910</b> is met as described earlier. In some embodiments, service gateway <b>110</b> further includes a time duration <b>926</b> stored in memory. Initially, service gateway <b>110</b> assigns a value of 0 to the time duration <b>926</b>. From time to time, service gateway <b>110</b> determines if hybrid-stateful condition <b>910</b> is met. If hybrid-stateful condition <b>910</b> is met, service gateway <b>110</b> increases the time duration <b>926</b> by an amount of time elapsed since the last time the hybrid-stateful condition <b>910</b> was checked. In various embodiments, after the time duration <b>926</b> is modified, service gateway <b>110</b> checks if the time duration <b>926</b> exceeds time duration <b>916</b>. If time duration <b>926</b> exceeds time duration <b>916</b>, service gateway <b>110</b> determines hybrid-stateful condition <b>910</b> is satisfied. Service gateway <b>110</b> subsequently changes to employ a hybrid-stateful method with subsequently received data packets.
In some embodiments, service gateway <b>110</b> receives hybrid-stateful condition <b>910</b> from an operator or an administrator <b>130</b>. Administrator <b>130</b> can be a human operator provisioning hybrid-stateful condition <b>910</b> onto service gateway <b>110</b>. Administrator <b>130</b> can be a network management system sending hybrid-stateful condition <b>910</b> to service gateway <b>110</b>. Administrator <b>130</b> can include a storage medium storing hybrid-stateful condition <b>910</b>. Service gateway <b>110</b> retrieves hybrid-stateful condition <b>910</b> from the storage of administrator <b>130</b>.
Returning to <figref idref="DRAWINGS">FIG. 8</figref>, <figref idref="DRAWINGS">FIG. 8</figref> shows that when the service gateway <b>110</b> is processing data packets using the stateful processing method (<b>805</b>), the service gateway <b>110</b> would check whether the hybrid-stateless condition <b>801</b> is met (see <figref idref="DRAWINGS">FIG. 10</figref>). <figref idref="DRAWINGS">FIG. 8</figref> also shows that when the service gateway <b>110</b> is processing data packets using the stateless processing method (<b>808</b>), the service gateway <b>110</b> would check whether the hybrid-stateful condition <b>910</b> is met (see <figref idref="DRAWINGS">FIG. 11</figref>). However, the references (C and D) to <figref idref="DRAWINGS">FIGS. 10 and 11</figref> are not intended to convey any order of steps. The checking of the conditions <b>810</b> or <b>910</b> may occur concurrently with the processing of data packets, as described above with reference to <figref idref="DRAWINGS">FIGS. 4 and 8</figref>.
Returning to <figref idref="DRAWINGS">FIG. 9</figref>, <figref idref="DRAWINGS">FIG. 9</figref> shows that when the service gateway <b>110</b> is processing data packets using the stateful processing method (<b>903</b>), the service gateway <b>110</b> would check whether the hybrid-stateless condition <b>810</b> is met (see <figref idref="DRAWINGS">FIG. 10</figref>). <figref idref="DRAWINGS">FIG. 9</figref> also shows that when the service gateway <b>110</b> is processing data packets using the hybrid-stateless processing method (<b>904</b>), the service gateway <b>110</b> would either check if the hybrid-stateless condition <b>810</b> or the hybrid-stateful condition <b>910</b> is met (see <figref idref="DRAWINGS">FIGS. 10 and 11</figref>), depending on the processing during the hybrid states processing method per <figref idref="DRAWINGS">FIGS. 4 and 8</figref>. However, the reference to <figref idref="DRAWINGS">FIGS. 10</figref> (C) and <b>11</b> (D) are not intended to convey any order of steps. The checking of the conditions <b>810</b> or <b>910</b> may occur concurrently with the processing of data packets as illustrated in <figref idref="DRAWINGS">FIGS. 5 and 9</figref>.
Although the present invention has been described in accordance with the embodiments shown, one of ordinary skill in the art will readily recognize that there could be variations to the embodiments and those variations would be within the spirit and scope of the present invention. Accordingly, many modifications may be made by one of ordinary skill in the art without departing from the spirit and scope of the appended claims.
Contents5
12 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12
Every citation, both waysCites: the store holds 377 of 378
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10257101B2 | Cited by | United States of America | Applicant |
| US10243791B2 | Cited by | United States of America | Applicant |
| US9992107B2 | Cited by | United States of America | Applicant |
| US9960967B2 | Cited by | United States of America | Applicant |
| US9979801B2 | Cited by | United States of America | Applicant |
| US9900252B2 | Cited by | United States of America | Applicant |
| US9906422B2 | Cited by | United States of America | Applicant |
| US10749904B2 | Cited by | United States of America | Applicant |
| US10581976B2 | Cited by | United States of America | Applicant |
| US10044582B2 | Cited by | United States of America | Applicant |
| US10491523B2 | Cited by | United States of America | Applicant |
| USRE47296E | Cited by | United States of America | Applicant |
| US10686683B2 | Cited by | United States of America | Applicant |
| US10484465B2 | Cited by | United States of America | Applicant |
| US9609052B2 | Cited by | United States of America | Applicant |
| US10021174B2 | Cited by | United States of America | Applicant |
| US2016156708A1 | Cited by | United States of America | Pre-grant |
| US10516577B2 | Cited by | United States of America | Applicant |
| US10735267B2 | Cited by | United States of America | Applicant |
| US9992229B2 | Cited by | United States of America | Applicant |
| US9906591B2 | Cited by | United States of America | Search report |
| US9961135B2 | Cited by | United States of America | Applicant |
| US9961136B2 | Cited by | United States of America | Applicant |
| US10659354B2 | Cited by | United States of America | Applicant |
| US10002141B2 | Cited by | United States of America | Applicant |
| US9986061B2 | Cited by | United States of America | Applicant |
| US9843484B2 | Cited by | United States of America | Applicant |
| US10230770B2 | Cited by | United States of America | Applicant |
| US10305904B2 | Cited by | United States of America | Applicant |
| US10038693B2 | Cited by | United States of America | Applicant |
| US10862955B2 | Cited by | United States of America | Applicant |
| US11005762B2 | Cited by | United States of America | Applicant |
| US10178165B2 | Cited by | United States of America | Applicant |
| US9942162B2 | Cited by | United States of America | Applicant |
| US10129122B2 | Cited by | United States of America | Applicant |
| US10880400B2 | Cited by | United States of America | Applicant |
| US9705800B2 | Cited by | United States of America | Applicant |
| US12223342B2 | Cited by | United States of America | Search report |
| US2023088364A1 | Cited by | United States of America | Search report |
| US9942152B2 | Cited by | United States of America | Applicant |
| US10447775B2 | Cited by | United States of America | Applicant |
| US2001049741A1 | Cites | United States of America | Applicant |
| US2002032777A1 | Cites | United States of America | Applicant |
| US2002078164A1 | Cites | United States of America | Applicant |
| US2002091844A1 | Cites | United States of America | Applicant |
| US2002103916A1 | Cites | United States of America | Applicant |
| US2002133491A1 | Cites | United States of America | Applicant |
| US2002138618A1 | Cites | United States of America | Applicant |
| US2002143991A1 | Cites | United States of America | Applicant |
| US2002178259A1 | Cites | United States of America | Applicant |
| US2002194335A1 | Cites | United States of America | Applicant |
| US2002194350A1 | Cites | United States of America | Applicant |
| US2003009591A1 | Cites | United States of America | Applicant |
| US2003014544A1 | Cites | United States of America | Applicant |
| US2003023711A1 | Cites | United States of America | Applicant |
| US2003023873A1 | Cites | United States of America | Applicant |
| US2003035409A1 | Cites | United States of America | Applicant |
| US2003035420A1 | Cites | United States of America | Applicant |
| US2003131245A1 | Cites | United States of America | Applicant |
| US2003135625A1 | Cites | United States of America | Applicant |
| US2006069774A1 | Cites | United States of America | Search report |
| US2008228781A1 | Cites | United States of America | Search report |
| US2010223630A1 | Cites | United States of America | Search report |
| US2011040826A1 | Cites | United States of America | Search report |
| US5218602A | Cites | United States of America | Applicant |
| US5774660A | Cites | United States of America | Applicant |
| US5935207A | Cites | United States of America | Applicant |
| US5958053A | Cites | United States of America | Applicant |
| US6003069A | Cites | United States of America | Applicant |
| US6047268A | Cites | United States of America | Applicant |
| US6131163A | Cites | United States of America | Applicant |
| US6219706B1 | Cites | United States of America | Applicant |
| US6259705B1 | Cites | United States of America | Applicant |
| US6321338B1 | Cites | United States of America | Applicant |
| US6374300B2 | Cites | United States of America | Applicant |
| US6587866B1 | Cites | United States of America | Applicant |
| US6748414B1 | Cites | United States of America | Applicant |
| US6772334B1 | Cites | United States of America | Applicant |
| US6779033B1 | Cites | United States of America | Applicant |
| US7010605B1 | Cites | United States of America | Applicant |
| US7013482B1 | Cites | United States of America | Search report |
| US7058718B2 | Cites | United States of America | Applicant |
| US7069438B2 | Cites | United States of America | Applicant |
| US7076555B1 | Cites | United States of America | Applicant |
| US7143087B2 | Cites | United States of America | Applicant |
| US7181524B1 | Cites | United States of America | Applicant |
| US7228359B1 | Cites | United States of America | Applicant |
| US7234161B1 | Cites | United States of America | Applicant |
| US7236457B2 | Cites | United States of America | Applicant |
| US7254133B2 | Cites | United States of America | Applicant |
| US7269850B2 | Cites | United States of America | Applicant |
| US7277963B2 | Cites | United States of America | Applicant |
| US7301899B2 | Cites | United States of America | Applicant |
| US7308499B2 | Cites | United States of America | Applicant |
| US7310686B2 | Cites | United States of America | Applicant |
| US7328267B1 | Cites | United States of America | Applicant |
| US7334232B2 | Cites | United States of America | Search report |
| US7337241B2 | Cites | United States of America | Applicant |
| US7343399B2 | Cites | United States of America | Applicant |
| US7349970B2 | Cites | United States of America | Search report |
21 members in 8 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 201113280336 | United States of America | A | |
| 201113280336 | United States of America | A | |
| 201414520126 | United States of America | A | |
| 13280336 | – | – | – |
| US201113280336 | – | – | – |
| US201414520126 | – | – | – |
Members21
| Document | Office | Kind | |
|---|---|---|---|
| US2013100958A1 | United States of America | A1 | |
| WO2013070391A1 | World Intellectual Property Organization (WIPO) | A1 | |
| KR20140088172A | Republic of Korea | A | |
| EP2772026A1 | European Patent Office (EPO) | A1 | |
| CN104067569A | China | A | |
| US8897154B2 | United States of America | B2 | |
| US2015039671A1 | United States of America | A1 | |
| JP2015507380A | Japan | A | |
| HK1198565A | Hong Kong, China | A | |
| HK1198565A1 | Hong Kong, China | A1 | |
| EP2772026A4 | European Patent Office (EPO) | A4 | |
| IN3764CHN2014A | India | A | |
| US9270774B2This record | United States of America | B2 | |
| JP5913609B2 | Japan | B2 | |
| US2016156708A1 | United States of America | A1 | |
| KR101632187B1 | Republic of Korea | B1 | |
| EP2772026B1 | European Patent Office (EPO) | B1 | |
| CN104067569B | China | B | |
| US9906591B2 | United States of America | B2 | |
| US2018124169A1 | United States of America | A1 | |
| US10484465B2 | United States of America | B2 |
42 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Mail Certificate of Correction MemoMCOCM | MCOCM | |
| Certificate of Correction MemoCOCM | COCM | |
| Post Issue Communication - Certificate of CorrectionN423 | N423 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Printer Rush- No mailingTCPB | TCPB | |
| Mail Response to 312 Amendment (PTO-271)MN271 | MN271 | |
| Printer Rush- No mailingTCPB | TCPB | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Response to Amendment under Rule 312N271 | N271 | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| FITF set to NO - revise initial settingFTFI | FTFI | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Cleared by OIPE CSRL194 | L194 | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Entity status set to undiscounted (initial default setting or status change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
5 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Certificate of correctionCC | CC | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS |
Numbers
- Publication
- 09270774
- Publication, DOCDB
- 9270774
- Publication, EPODOC
- US9270774
- Application
- 14520126
- Application, DOCDB
- 201414520126
- Application, EPODOC
- US201414520126
Titles
- English
- Combining stateless and stateful server load balancing
Patent term adjustment
- Applicant delay
- −18 days
- Net adjustment
- 0 days
Classification
- CPC, 8
- H04L67/142
- H04L67/28
- H04L67/1027
- H04L12/66
- H04L67/10
- H04L67/564
- H04L67/2819
- H04L67/56
- IPC, 2
- H04L12 66
- H04L29 08
- USPC, 1
- 001001000