Transmission control of protocol state exchange for dynamic stateful service insertion

Information

  • Patent Grant
  • 10581976
  • Patent Number
    10,581,976
  • Date Filed
    Wednesday, August 12, 2015
    9 years ago
  • Date Issued
    Tuesday, March 3, 2020
    5 years ago
Abstract
Provided are methods and systems for a Transmission Control Protocol (TCP) state handoff of a data traffic flow. A method for a TCP state handoff of a data traffic flow comprises determining a TCP state at predetermined times by a state machine unit. The TCP state includes data concerning a session between a client and a server. The TCP state for the predetermined times is stored to a database. A request to apply a predetermined policy to the session is received by a transaction processing unit and, based on the request, a session request associated with the session between the client and the server is sent to an access control unit. The session request is processed by the access control unit based on the TCP state and according to the predetermined policy.
Description
TECHNICAL FIELD

This disclosure relates generally to data processing and, more particularly, to transmission of control protocol (TCP) state exchange for dynamic stateful service insertion.


BACKGROUND

The approaches described in this section could be pursued but are not necessarily approaches that have previously been conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.


A stateful service is a service in which subsequent requests to the service depend on the outcome of the first request. The service can keep track of requests made earlier and may need more recent requests to establish a session. Thus, a state of a session between a client and a server may need to be persisted to a database. The stateful service may be exemplified by a call for an application programmable interface authentication. In this example, a user needs to send credentials to the service and the service may provide the user with a token or save a session. Subsequent requests from the user may include the token so that the service can check the status of the session that was created with the first request. Thus, a subsequent request depends on the outcome of the first request.


A stateful service insertion is an insertion of an external stateful service into a data traffic flow. In case of non-transparent stateful service insertion, the data packets are redirected to a service, such as a web proxy, which requires the data packet to be addressed to the service. In case of a transparent stateful service insertion, the data packets are redirected to a service, such as a firewall, which does not require the data packet to be specifically addressed to the service.


The stateful service insertion is usually performed using a source network address. However, conventional TCP state exchange techniques do not allow for providing transferring connection states for real-time traffic flow. As a result, stateful service insertion cannot be implemented using a data traffic endpoint. Furthermore, even though there are some methods for TCP state transfers for the cases where two nodes are used, these methods are ineffective for a greater number of nodes.


SUMMARY

This summary is provided to introduce a selection of concepts in a simplified form that are further described in the Detailed Description below. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.


The present disclosure is related to approaches for a TCP state handoff of a data traffic flow. Specifically, a system for a TCP state handoff of a data traffic flow may comprise a state machine unit, a transaction processing unit, and an access control unit. The state machine unit may be operable to determine a TCP state at predetermined times. The TCP state may include data concerning a session between a client and a server. The transaction processing unit may be operable to store the TCP state for the predetermined times to a database, receive a request to apply a predetermined policy to the session, and based on the request, send a session request associated with the session between the client and the server to the access control unit. The access control unit may be operable to process the session request based on the TCP state and according to the predetermined policy.


According to another approach of the present disclosure, there is provided a method for a TCP state handoff of a data traffic flow. The method may commence with determining a TCP state at predetermined times by a state machine unit. The TCP state may include data concerning a session between a client and a server. The method may continue with storing the TCP state for the predetermined times to a database. The method may further include receiving, by a transaction processing unit, a request to apply a predetermined policy to the session. Based on the request, the transaction processing unit may send a session request associated with the session between the client and the server to the access control unit. The session request may be processed based on the TCP state and according to the predetermined policy.


In further example embodiments of the present disclosure, the method operations are stored on a machine-readable medium comprising instructions, which when implemented by one or more processors perform the recited operations. In yet further example embodiments, hardware systems, or devices can be adapted to perform the recited operations. Other features, examples, and embodiments are described below.





BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments are illustrated by way of example, and not by limitation, in the figures of the accompanying drawings, in which like references indicate similar elements.



FIG. 1 shows an environment, within which methods and systems for a TCP state handoff of a data traffic flow can be implemented.



FIG. 2 is a process flow diagram of a method for a TCP state handoff of a data traffic flow.



FIG. 3 is a block diagram illustrating a system for a TCP state handoff of a data traffic flow.



FIG. 4 is a schematic diagram showing a TCP state handoff for a data packet flow between a client and a server.



FIG. 5 shows a diagrammatic representation of a computing device for a machine, within which a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein can be executed.





DETAILED DESCRIPTION

The following detailed description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show illustrations in accordance with example embodiments. These example embodiments, which are also referred to herein as “examples,” are described in enough detail to enable those skilled in the art to practice the present subject matter. The embodiments can be combined, other embodiments can be utilized, or structural, logical, and electrical changes can be made without departing from the scope of what is claimed. The following detailed description is therefore not to be taken in a limiting sense, and the scope is defined by the appended claims and their equivalents. In this document, the terms “a” and “an” are used, as is common in patent documents, to include one or more than one. In this document, the term “or” is used to refer to a nonexclusive “or,” such that “A or B” includes “A but not B,” “B but not A,” and “A and B,” unless otherwise indicated.


Embodiments disclosed herein may be implemented using a variety of technologies. For example, the methods described herein may be implemented in software executing on a computer system or in hardware utilizing either a combination of microprocessors or other specially designed application-specific integrated circuits, programmable logic devices, or various combinations thereof. In particular, the methods described herein may be implemented by a series of computer-executable instructions residing on a storage medium, such as a disk drive or computer-readable medium. It should be noted that methods disclosed herein can be implemented by a computer (e.g., a desktop computer, tablet computer, laptop computer), game console, handheld gaming device, cellular phone, smart phone, smart television system, and so forth.


As outlined in the summary, the embodiments of the present disclosure are directed to a TCP state handoff of a data traffic flow. A connection between two TCP devices (e.g. between a client and a server) can begin in a null state with no connections present. A connection process can go through a series of states to establish a connection between two TCP devices. Upon occurrence of an event causing the connection to be closed, the connection may return to a closed state. States of the connection between the client and the server can also be referred to as TCP states.


A TCP state handoff is a process of migration of an established TCP state from an original node to a new node. During the TCP state handoff, one TCP socket endpoint can seamlessly migrate from one node to the other node. After such TCP state handoff, the new node may send data packets directly to the other TCP endpoint. Content-aware request distribution among servers performed using the TCP state handoff may enable intelligent distribution of data packets, provide quality of service requirements for different types of contents, and improve overall cluster performance.


Methods and systems for a TCP state handoff of a data traffic flow of the present disclosure are directed to transferring the TCP state to any node in a network that may need to be brought up into a session between the client and the server. The purpose of bringing up a new node may include providing a secure communication, speeding up a session between the client and the server, and so forth.


More specifically, there may exist a session, such as a HyperText Transfer Protocol (HTTP) transaction, between the client and the server, and a network system (for example, a security system) may determine that scrutiny needs to be applied to the session. In this case, conventional methods require sending a reset command and then setting up a data traffic flow after the resetting, or dropping some packets so that the data traffic flow may be re-established. However, such conventional methods may cause adverse effects on the network performance.


According to the methods and system of the present disclosure, security functions may be performed by an access control unit. In some example embodiments, the access control unit may include a web application firewall. The web application firewall may be operable to filter access to the server (for example, to a web application associated with the server) for the client by inspecting both the data traffic flowing towards the server and the response data traffic flowing from the server. A transaction processing unit may be responsible for processing transactions between the clients and the server. The transaction processing unit may determine that a session needs to be processed by the access control unit for security purposes. The transaction processing unit may send a signal to the access control unit informing the firewall that there is a session to which security policies need to be applied. The transaction processing unit may further provide the access control unit with information about a current TCP state of the session. For this purpose, the transaction processing unit may send a magic packet containing information concerning a current TCP state of the session. The magic packet can include data packet having a sequence of bytes that can be sent as any network- and transport-layer protocol or can be inserted into data packets of any standard protocols of higher layer, such as User Datagram Protocol or Internetwork Packet Exchange. The access control unit may operate in a stand-by mode and may activate upon receiving the magic packet.


Alternatively, the information about a current TCP state of the session may be stored in a database. The transaction processing unit may provide the access control unit with an entry in the database so that the access control unit can obtain the information about a current TCP state of the session by looking up the database. The access control unit may apply predetermined policies to data packets of the session and re-establish the session based on the TCP state.


Referring now to the drawings, FIG. 1 illustrates an environment 100 within which methods and systems for a TCP state handoff of a data traffic flow can be implemented. The environment 100 may include a network 110, a client 120, a server 130, and a system 300 for a TCP state handoff of a data traffic flow. The client 120 may include a network machine or a network resource that sends a session request 140 to the server 130. The client 120 and the server 130 may communicate with each other using the network 110.


The network 110 may include the Internet or any other network capable of communicating data between devices. Suitable networks may include or interface with any one or more of, for instance, a local intranet, a Personal Area Network, a Local Area Network, a Wide Area Network, a Metropolitan Area Network, a virtual private network, a storage area network, a frame relay connection, an Advanced Intelligent Network connection, a synchronous optical network connection, a digital T1, T3, E1 or E3 line, Digital Data Service connection, Digital Subscriber Line connection, an Ethernet connection, an Integrated Services Digital Network line, a dial-up port such as a V.90, V.34 or V.34bis analog modem connection, a cable modem, an Asynchronous Transfer Mode connection, or a Fiber Distributed Data Interface or Copper Distributed Data Interface connection. Furthermore, communications may also include links to any of a variety of wireless networks, including Wireless Application Protocol, General Packet Radio Service, Global System for Mobile Communication, Code Division Multiple Access or Time Division Multiple Access, cellular phone networks, Global Positioning System, cellular digital packet data, Research in Motion, Limited duplex paging network, Bluetooth radio, or an IEEE 802.11-based radio frequency network. The network 110 can further include or interface with any one or more of an RS-232 serial connection, an IEEE-1394 (Firewire) connection, a Fiber Channel connection, an IrDA (infrared) port, a Small Computer Systems Interface connection, a Universal Serial Bus (USB) connection or other wired or wireless, digital or analog interface or connection, mesh or Digi® networking. The network 110 may include a network of data processing nodes that are interconnected for the purpose of data communication.


A state machine unit 150 may be tracking a TCP state 160 of a session between the client 120 and the server 130. The system 300 may be operable to review all data packets, such as the session request 140, sent between the client 120 and the server 130. If the system 300 determines that security policies need to be applied to the session request 140, the system forwards the session request 140 to an access control unit 170. The access control unit 170 may process the session request 140 according to the security policies and re-establish the session based on the TCP state.



FIG. 2 shows a process flow diagram of a method 200 for a TCP state handoff of a data traffic flow, according to an example embodiment. In some embodiments, the operations may be combined, performed in parallel, or performed in a different order. The method 200 may also include additional or fewer operations than those illustrated. The method 200 may be performed by processing logic that may comprise hardware (e.g., decision making logic, dedicated logic, programmable logic, and microcode), software (such as software run on a general-purpose computer system or a dedicated machine), or a combination of both.


The method 200 may commence at operation 202 with determining, by a state machine unit, a TCP state for sessions between clients and servers at predetermined times. In example embodiments, the TCP state may include data concerning a session between a client and a server. The data associated with the session may include at least one or more of the following: a source port destination, a current sequence number, a window, a timestamp, a timer, and so forth.


The method 200 may continue with storing the TCP state for a predetermined number of times to a database at operation 204. In example embodiments, the TCP state may be stored to the state machine unit. In further embodiments, a further state machine unit may be initialized. The TCP state may be stored to the further state machine unit.


The method 200 may further include receiving, by a transaction processing unit, a request to apply a predetermined policy to the session at operation 206. In some embodiments, the transaction processing unit may communicate with Distributed Denial of Service (DDoS) units. A DDoS unit may be operable to inspect data traffic flow between the client and the server and notify the transaction processing unit in case predetermined policies (for example, security policies) are needed to be applied to the data traffic flow.


Based on the request, the transaction processing unit may send a session request associated with the session between the client and the server to an access control unit at operation 208. In some embodiments, sending the session request may be delayed by the transaction processing unit until the state machine unit determines the TCP state.


In further embodiments, the storing of the TCP state may include encoding the TCP state into a signal, such as an in-band signal and/or out-of-band signal. The signal may be sent to the access control unit.


In some embodiments, the session request may be sent to the access control unit using a magic packet. The magic packet may include the TCP state and instructions on how to process the session according to the predetermined policy. Upon receiving the magic packet, the access control unit may be activated (for example, switched from a stand-by mode to an active mode).


At operation 210, the method 200 may include processing, by the access control unit, the session request based on the TCP state and according to the predetermined policy. The predetermined policy may include one or more of the following: a security policy, a forwarding policy, and so forth.


In some embodiments, the processing includes sending a reset request to the client. The reset request may prompt the client to resend the session request. Based on the session request resent by the client, the session between the client and the server may be established.


In an example embodiment, the processing of the session request may include establishing a further session between the client and the server. The further session may be established based on the TCP state retrieved by the access control unit from the database.



FIG. 3 shows a block diagram illustrating various modules of an example system 300 for a TCP state handoff of a data traffic flow. Specifically, the system 300 may include a state machine unit 302, a transaction processing unit 304, and an access control unit 306.


The state machine unit 302 may be operable to determine a TCP state at predetermined times. The TCP state may include data concerning a session between a client and a server. The data concerning the session may include at least one or more of the following: a source port destination, a current sequence number, a window, a timestamp, and a timer.


The transaction processing unit 304 may be operable to store the TCP state for the predetermined times to a database. In some embodiments, the TCP state may be stored to the state machine unit 302. In further embodiments, the storing of the TCP state may include initializing a further state machine unit and storing the TCP state to the further state machine unit.


Alternatively, the storing of the TCP state may include encoding the TCP state into a signal and sending the signal to the access control unit 306.


The transaction processing unit 304 may be further operable to receive a request to apply a predetermined policy to the session. Based on the request, the transaction processing unit 304 may send a session request associated with the session between the client and the server to the access control unit 306.


In some embodiments, the session request may be sent to the access control unit using a magic packet. The magic packet may include the TCP state and instructions to process the session according to the predetermined policy.


The access control unit 306 may be operable to process the session request based on the TCP state and according to the predetermined policy. In some embodiments, the processing of the session request by the access control unit 306 may include establishing a further session between the client and the server. The further session may be established based on the TCP state retrieved by the access control unit 306.


In further example embodiments, the processing may include the access control unit 306 sending a reset request to the client. The reset request may prompt the client to resend the session request. Upon receiving the session request resent by the client, a session between a client and a server may be established.



FIG. 4 is a schematic diagram 400 showing a TCP state handoff for a data packet flow between a client and a server, according to an example embodiment. FIG. 4 shows an embodiment when there is an established session between a client 405 and a server 410. A transaction processing unit 415 may determine that a predetermined policy that requires a data traffic flow associated with the session is to be sent to an access control unit 420.


The client 405 may send a “SYNchronize” message 425 to the transaction processing unit 415. The transaction processing unit 415 receives the “SYNchronize” message 425 from the client 405 and sends a “SYNchronize-ACKnowledgement” message 430 to the client 405. The client 405 receives the “SYNchronize-ACKnowledgement” message 430 from the transaction processing unit 415 and sends an “ACKnowledgement” message 435 to the transaction processing unit 415.


Additionally, the transaction processing unit 415 may send an “ACKnowledgement” message 450 to the server 410. In turn, the server 410 may send an “ACKnowledgement” message 455 to the transaction processing unit 415. Furthermore, an access control unit 420 may exchange messages 460, 465 with the server 410.


Upon receiving the “SYNchronize-ACKnowledgement” message 430, the transaction processing unit 415 may emulate latency and send a magic packet 440 to the access control unit 420. The latency may correspond to a time needed by a state machine unit (not shown) to establish the TCP state of the session established between the client 405 and the server 410. Therefore, data packets of the data traffic flow may be queued until a delay time (latency) is reached and then sent to a destination point.


The magic packet 440 may contain data about a current TCP state between the client 405 and the server 410. Alternatively, the magic packet 440 may contain a reference to a database, in which data about the TCP state between the client 405 and the server 410 are stored.


Upon receiving the magic packet 440, the access control unit 420 may apply predetermined policies to the data traffic associated with the session (for example, apply filters 470) and re-establish the session based on the TCP state. Additionally, the access control unit 420 may instruct the client 405 to retransmit or recover a session request if a timer of the session is not expired, and the client 405 may send an “ACKnowledgement” message 445 to the access control unit 420.


Therefore, the access control unit 420 may act as a TCP proxy between the client 405 and the server 410. More specifically, from a perspective from the access control unit 420 to the server 410, the access control unit 420 may act as a client. From a perspective from the access control unit 420 to the client 405, the access control unit 420 may act as a server. The access control unit 420 may apply predetermined policies to the data traffic flow between the client 405 and the server 410 to provide a secure communication. Additionally, the access control unit 420 may process the data traffic flow using cryptography, such as elliptical curve cryptography, and the like.


If the client 405 sends a further session (not shown) to the server 410, there is no need to perform the TCP state handoff because the access control unit 420 already has a flow mapping for the client 405 and the server 410.



FIG. 5 illustrates an example computer system 500 that may be used to implement embodiments of the present disclosure. The computer system 500 may serve as a computing device for a machine, within which a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein can be executed. The computer system 500 can be implemented in the contexts of the likes of computing systems, networks, servers, or combinations thereof. The computer system 500 includes one or more processor units 510 and main memory 520. Main memory 520 stores, in part, instructions and data for execution by processor 510. Main memory 520 stores the executable code when in operation. The computer system 500 further includes a mass data storage 530, portable storage device(s) 540, output devices 550, user input devices 560, a graphics display system 570, and peripheral devices 580. The methods may be implemented in software that is cloud-based.


The components shown in FIG. 5 are depicted as being connected via a single bus 590. The components may be connected through one or more data transport means. Processor unit 510 and main memory 520 are connected via a local microprocessor bus, and mass data storage 530, peripheral device(s) 580, portable storage device 540, and graphics display system 570 are connected via one or more input/output (I/O) buses.


Mass data storage 530, which can be implemented with a magnetic disk drive, solid state drive, or an optical disk drive, is a non-volatile storage device for storing data and instructions for use by processor unit 510. Mass data storage 530 stores the system software for implementing embodiments of the present disclosure for purposes of loading that software into main memory 520.


Portable storage device 540 operates in conjunction with a portable non-volatile storage medium, such as a floppy disk, CD, DVD, or USB storage device, to input and output data and code to and from the computer system 500. The system software for implementing embodiments of the present disclosure is stored on such a portable medium and input to the computer system 500 via the portable storage device 540.


User input devices 560 provide a portion of a user interface. User input devices 560 include one or more microphones, an alphanumeric keypad, such as a keyboard, for inputting alphanumeric and other information, or a pointing device, such as a mouse, a trackball, stylus, or cursor direction keys. User input devices 560 can also include a touchscreen. Additionally, the computer system 500 includes output devices 550. Suitable output devices include speakers, printers, network interfaces, and monitors.


Graphics display system 570 includes a liquid crystal display or other suitable display device. Graphics display system 570 receives textual and graphical information and processes the information for output to the display device. Peripheral devices 580 may include any type of computer support device to add additional functionality to the computer system.


The components provided in the computer system 500 of FIG. 5 are those typically found in computer systems that may be suitable for use with embodiments of the present disclosure and are intended to represent a broad category of such computer components that are well known in the art. Thus, the computer system 500 can be a personal computer, handheld computing system, telephone, mobile computing system, workstation, tablet, phablet, mobile phone, server, minicomputer, mainframe computer, or any other computing system. The computer may also include different bus configurations, networked platforms, multi-processor platforms, and the like. Various operating systems may be used including UNIX, LINUX, WINDOWS, MAC OS, PALM OS, ANDROID, IOS, QNX, and other suitable operating systems.


It is noteworthy that any hardware platform suitable for performing the processing described herein is suitable for use with the embodiments provided herein. Computer-readable storage media refer to any medium or media that participate in providing instructions to a central processing unit, a processor, a microcontroller, or the like. Such media may take forms including, but not limited to, non-volatile and volatile media such as optical or magnetic disks and dynamic memory, respectively. Common forms of computer-readable storage media include a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic storage medium, a Compact Disk Read Only Memory (CD-ROM) disk, DVD, Blu-ray disc, any other optical storage medium, RAM, Programmable Read-Only Memory, Erasable Programmable Read-Only Memory, Electronically Erasable Programmable Read-Only Memory, flash memory, and/or any other memory chip, module, or cartridge.


In some embodiments, the computer system 500 may be implemented as a cloud-based computing environment, such as a virtual machine operating within a computing cloud. In other embodiments, the computer system 500 may itself include a cloud-based computing environment, where the functionalities of the computer system 500 are executed in a distributed fashion. Thus, the computer system 500, when configured as a computing cloud, may include pluralities of computing devices in various forms, as will be described in greater detail below.


In general, a cloud-based computing environment is a resource that typically combines the computational power of a large grouping of processors (such as within web servers) and/or that combines the storage capacity of a large grouping of computer memories or storage devices. Systems that provide cloud-based resources may be utilized exclusively by their owners or such systems may be accessible to outside users who deploy applications within the computing infrastructure to obtain the benefit of large computational or storage resources.


The cloud may be formed, for example, by a network of web servers that comprise a plurality of computing devices, such as the computer system 500, with each server (or at least a plurality thereof) providing processor and/or storage resources. These servers may manage workloads provided by multiple users (e.g., cloud resource customers or other users). Typically, each user places workload demands upon the cloud that vary in real-time, sometimes dramatically. The nature and extent of these variations typically depends on the type of business associated with the user.


Thus, methods and systems for a TCP state handoff of a data traffic flow have been described. Although embodiments have been described with reference to specific example embodiments, it will be evident that various modifications and changes can be made to these example embodiments without departing from the broader spirit and scope of the present application. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

Claims
  • 1. A system for a Transmission Control Protocol (TCP) state handoff of a data traffic flow, the system comprising: a hardware state machine unit configured to: determine a plurality of TCP states at predetermined times, each TCP state of the plurality of TCP states being separately determined at a particular predetermined time,wherein each of the plurality of TCP states includes data concerning a session between a client and a server at the particular predetermined time;a hardware transaction processing unit configured to: store the TCP state for each of the predetermined times to a database;receive a request to apply a predetermined policy to the session, wherein the session is processed by the hardware transaction processing unit and wherein the applying the predetermined policy to the session includes transferring the processing of the session to a hardware access control unit;based on the request, transfer the processing of the session from the hardware transaction processing unit to the hardware access control unit by sending a session request associated with the session between the client and the server to the hardware access control unit, the session request including a current TCP state of the plurality of TCP states, the current TCP state being the TCP state stored for a current time and including the data concerning the session for the current time, the session request further including an instruction to process the session according to the predetermined policy; andthe hardware access control unit configured to: switch from a stand-by mode to an active mode based on receipt of the session request, the hardware access control unit operating in the stand-by mode in absence of session requests from the hardware transaction processing unit;upon switching to the active mode, in response to the instruction to process the session, act as a TCP proxy in the session between the client and the server by establishing the session between the hardware access control unit and the client and establishing the session between the hardware access control unit and the server based on the current TCP state; andbased on the instruction included in the session request, process the session request and further data packets associated with the session based on the current TCP state and according to the predetermined policy.
  • 2. The system of claim 1, wherein the processing of the session request includes establishing a further session between the client and the server, the further session being established based on the current TCP state retrieved by the hardware access control unit.
  • 3. The system of claim 1, wherein the storing of the TCP state includes storing the TCP state to the hardware state machine unit.
  • 4. The system of claim 1, wherein the processing includes sending a reset request to the client, the reset request prompting the client to resend the session request.
  • 5. The system of claim 1, wherein the storing of the TCP state includes: initializing a further hardware state machine unit; andstoring the TCP state to the further hardware state machine unit.
  • 6. The system of claim 1, wherein the storing of the TCP state includes: encoding the TCP state into a signal; andsending the signal to the hardware access control unit.
  • 7. The system of claim 1, wherein the session request is sent to the hardware access control unit using a magic packet, the magic packet including the TCP state and the instruction to process the session according to the predetermined policy.
  • 8. The system of claim 1, wherein the data concerning the session include at least one or more of the following: a source port destination, a current sequence number, a window, a timestamp, and a timer.
  • 9. The system of claim 1, wherein the hardware transaction processing unit is further configured to delay the sending of the session request until the hardware state machine unit determines the TCP state.
  • 10. A method for a TCP state handoff of a data traffic flow, the method comprising: determining, by a hardware state machine unit, a plurality of TCP states at predetermined times, each TCP state of the plurality of TCP states being separately determined at a particular predetermined time, wherein each of the plurality of TCP states includes data concerning a session between a client and a server at the particular predetermined time;storing, to a database, the TCP state for the predetermined times;receiving, by a hardware transaction processing unit, a request to apply a predetermined policy to the session, wherein the session is processed by the hardware transaction processing unit and wherein the applying the predetermined policy to the session includes transferring the processing of the session to a hardware access control unit;based on the request, transferring the processing of the session from the hardware transaction processing unit to the hardware access control unit by sending, by the hardware transaction processing unit, a session request associated with the session between the client and the server to the hardware access control unit, the session request including a current TCP state of the plurality of TCP states, the current TCP state being the TCP state stored for a current time and including the data concerning the session for the current time, the session request further including an instruction to process the session according to the predetermined policy; andswitching, by the hardware access control unit, from a stand-by mode to an active mode based on receipt of the session request, the hardware access control unit operating in the stand-by mode in absence of session requests from the hardware transaction processing unit;upon switching to the active mode, in response to the instruction to process the session, acting, by the hardware access control unit, as a TCP proxy in the session between the client and the server by establishing the session between the hardware access control unit and the client and establishing the session between the hardware access control unit and the server based on the current TCP state; andbased on the instruction included in the session request, processing, by the hardware access control unit, the session request and further data packets associated with the session based on the current TCP state and according to the predetermined policy.
  • 11. The method of claim 10, wherein the processing of the session request includes establishing a further session between the client and the server, the further session being established based on the current TCP state retrieved by the hardware access control unit.
  • 12. The method of claim 10, wherein the storing of the TCP state includes storing the TCP state to the hardware state machine unit.
  • 13. The method of claim 10, wherein the processing includes sending a reset request to the client, the reset request prompting the client to resend the session request.
  • 14. The method of claim 10, wherein the storing of the TCP state further includes: initializing a further hardware state machine unit; andstoring the TCP state to the further hardware state machine unit.
  • 15. The method of claim 10, wherein the storing of the TCP state includes: encoding the TCP state into a signal; andsending the signal to the hardware access control unit.
  • 16. The method of claim 10, wherein the session request is sent to the hardware access control unit using a magic packet, the magic packet including the TCP state and the instruction to process the session according to the predetermined policy.
  • 17. The method of claim 10, wherein the data concerning the session include at least one or more of the following: a source port destination, a current sequence number, a window, a timestamp, and a timer.
  • 18. The method of claim 10, wherein the predetermined policy includes one or more of the following: a security policy and a forwarding policy.
  • 19. The method of claim 10, further comprising delaying, by the hardware transaction processing unit, sending the session request until the hardware state machine unit determines the TCP state.
  • 20. A system for a TCP state handoff of a data traffic flow, the system comprising: a hardware state machine unit configured to: determine a plurality of TCP states at predetermined times, each TCP state of the plurality of TCP states being separately determined at a particular predetermined time,wherein each of the plurality of TCP states includes data concerning a session between a client and a server at the particular predetermined time;a hardware transaction processing unit configured to: store the TCP state for each of the predetermined times to a database;receive a request to apply a predetermined policy to the session, wherein the session is processed by the hardware transaction processing unit and wherein the applying the predetermined policy to the session includes transferring the processing of the session to a hardware access control unit;based on the request, transferring the processing of the session from the hardware transaction processing unit to the hardware access control unit by sending a session request associated with the session between the client and the server to the hardware access control unit, the session request including a current TCP state of the plurality of TCP states, the current TCP state being the TCP state stored for a current time and including the data concerning the session for the current time, wherein the session request is sent to the hardware access control unit using a magic packet, the magic packet including the current TCP state and an instruction to process the session according to the predetermined policy; andthe hardware access control unit configured to: switch from a stand-by mode to an active mode based on receipt of the session request, the hardware access control unit operating in the stand-by mode in absence of session requests from the hardware transaction processing unit;upon switching to the active mode, in response to the instruction to process the session, act as a TCP proxy in the session between the client and the server by establishing the session between the hardware access control unit and the client and establishing the session between the hardware access control unit and the server based on the current TCP state; andbased on the instruction included in the session request, process the session request and further data packets associated with the session based on the current TCP state and according to the predetermined policy, wherein the processing of the session request includes establishing a further session between the client and the server, the further session being established based on the current TCP state retrieved by the hardware access control unit.
US Referenced Citations (447)
Number Name Date Kind
5218602 Grant et al. Jun 1993 A
5774660 Brendel et al. Jun 1998 A
5862339 Bonnaure et al. Jan 1999 A
5875185 Wang et al. Feb 1999 A
5935207 Logue et al. Aug 1999 A
5958053 Denker Sep 1999 A
5995981 Wikstrom Nov 1999 A
6003069 Cavill Dec 1999 A
6047268 Bartoli et al. Apr 2000 A
6075783 Voit Jun 2000 A
6131163 Wiegel Oct 2000 A
6219706 Fan et al. Apr 2001 B1
6259705 Takahashi et al. Jul 2001 B1
6321338 Porras et al. Nov 2001 B1
6374300 Masters Apr 2002 B2
6456617 Oda et al. Sep 2002 B1
6459682 Ellesson et al. Oct 2002 B1
6483600 Schuster et al. Nov 2002 B1
6535516 Leu et al. Mar 2003 B1
6578066 Logan et al. Jun 2003 B1
6587866 Modi et al. Jul 2003 B1
6600738 Alperovich et al. Jul 2003 B1
6658114 Farn et al. Dec 2003 B1
6748414 Bournas Jun 2004 B1
6772205 Lavian et al. Aug 2004 B1
6772334 Glawitsch Aug 2004 B1
6779017 Lamberton et al. Aug 2004 B1
6779033 Watson et al. Aug 2004 B1
6804224 Schuster et al. Oct 2004 B1
6952728 Alles et al. Oct 2005 B1
7010605 Dharmarajan Mar 2006 B1
7013482 Krumel Mar 2006 B1
7058718 Fontes et al. Jun 2006 B2
7069438 Balabine et al. Jun 2006 B2
7076555 Orman et al. Jul 2006 B1
7143087 Fairweather Nov 2006 B2
7167927 Philbrick et al. Jan 2007 B2
7181524 Lele Feb 2007 B1
7218722 Turner et al. May 2007 B1
7228359 Monteiro Jun 2007 B1
7234161 Maufer et al. Jun 2007 B1
7236457 Joe Jun 2007 B2
7254133 Govindarajan et al. Aug 2007 B2
7269850 Govindarajan et al. Sep 2007 B2
7277963 Dolson et al. Oct 2007 B2
7301899 Goldstone Nov 2007 B2
7308499 Chavez Dec 2007 B2
7310686 Uysal Dec 2007 B2
7328267 Bashyam et al. Feb 2008 B1
7334232 Jacobs et al. Feb 2008 B2
7337241 Boucher et al. Feb 2008 B2
7343399 Hayball et al. Mar 2008 B2
7349970 Clement et al. Mar 2008 B2
7370353 Yang May 2008 B2
7373500 Ramelson et al. May 2008 B2
7391725 Huitema et al. Jun 2008 B2
7398317 Chen et al. Jul 2008 B2
7423977 Joshi Sep 2008 B1
7430755 Hughes et al. Sep 2008 B1
7463648 Eppstein et al. Dec 2008 B1
7467202 Savchuk Dec 2008 B2
7472190 Robinson Dec 2008 B2
7492766 Cabeca et al. Feb 2009 B2
7506360 Wilkinson et al. Mar 2009 B1
7509369 Tormasov Mar 2009 B1
7512980 Copeland et al. Mar 2009 B2
7533409 Keane et al. May 2009 B2
7552323 Shay Jun 2009 B2
7584262 Wang et al. Sep 2009 B1
7584301 Joshi Sep 2009 B1
7590736 Hydrie et al. Sep 2009 B2
7610622 Touitou et al. Oct 2009 B2
7613193 Swami et al. Nov 2009 B2
7613822 Joy et al. Nov 2009 B2
7673072 Boucher et al. Mar 2010 B2
7675854 Chen et al. Mar 2010 B2
7703102 Eppstein et al. Apr 2010 B1
7707295 Szeto et al. Apr 2010 B1
7711790 Barrett et al. May 2010 B1
7733866 Mishra et al. Jun 2010 B2
7747748 Allen Jun 2010 B2
7765328 Bryers et al. Jul 2010 B2
7792113 Foschiano et al. Sep 2010 B1
7808994 Vinokour et al. Oct 2010 B1
7826487 Mukerji et al. Nov 2010 B1
7881215 Daigle et al. Feb 2011 B1
7948952 Hurtta et al. May 2011 B2
7965727 Sakata et al. Jun 2011 B2
7970934 Patel Jun 2011 B1
7979694 Touitou et al. Jul 2011 B2
7983258 Ruben et al. Jul 2011 B1
7990847 Leroy et al. Aug 2011 B1
7991859 Miller et al. Aug 2011 B1
7992201 Aldridge et al. Aug 2011 B2
8019870 Eppstein et al. Sep 2011 B1
8032634 Eppstein et al. Oct 2011 B1
8081640 Ozawa et al. Dec 2011 B2
8090866 Bashyam et al. Jan 2012 B1
8099492 Dahlin et al. Jan 2012 B2
8116312 Riddoch et al. Feb 2012 B2
8122116 Matsunaga et al. Feb 2012 B2
8151019 Le et al. Apr 2012 B1
8179809 Eppstein et al. May 2012 B1
8185651 Moran et al. May 2012 B2
8191106 Choyi et al. May 2012 B2
8224971 Miller et al. Jul 2012 B1
8261339 Aldridge et al. Sep 2012 B2
8266235 Jalan et al. Sep 2012 B2
8296434 Miller et al. Oct 2012 B1
8312507 Chen et al. Nov 2012 B2
8379515 Mukerji Feb 2013 B1
8499093 Grosser et al. Jul 2013 B2
8539075 Bali et al. Sep 2013 B2
8554929 Szeto et al. Oct 2013 B1
8559437 Mishra et al. Oct 2013 B2
8560693 Wang et al. Oct 2013 B1
8584199 Chen et al. Nov 2013 B1
8595791 Chen et al. Nov 2013 B1
RE44701 Chen et al. Jan 2014 E
8675488 Sidebottom et al. Mar 2014 B1
8681610 Mukerji Mar 2014 B1
8750164 Casado et al. Jun 2014 B2
8782221 Han Jul 2014 B2
8813180 Chen et al. Aug 2014 B1
8826372 Chen et al. Sep 2014 B1
8879427 Krumel Nov 2014 B2
8885463 Medved et al. Nov 2014 B1
8897154 Jalan et al. Nov 2014 B2
8965957 Barros Feb 2015 B2
8977749 Han Mar 2015 B1
8990262 Chen et al. Mar 2015 B2
9094364 Jalan et al. Jul 2015 B2
9106561 Jalan et al. Aug 2015 B2
9137301 Dunlap et al. Sep 2015 B1
9154577 Jalan et al. Oct 2015 B2
9154584 Han Oct 2015 B1
9215275 Kannan et al. Dec 2015 B2
9219751 Chen et al. Dec 2015 B1
9253152 Chen et al. Feb 2016 B1
9270705 Chen et al. Feb 2016 B1
9270774 Jalan et al. Feb 2016 B2
9338225 Jalan et al. May 2016 B2
9350744 Chen et al. May 2016 B2
9356910 Chen et al. May 2016 B2
9386088 Zheng et al. Jul 2016 B2
9432463 Bowman Aug 2016 B2
9531846 Han et al. Dec 2016 B2
20010042200 Lamberton et al. Nov 2001 A1
20010049741 Skene et al. Dec 2001 A1
20020026515 Michielsens et al. Feb 2002 A1
20020032777 Kawata et al. Mar 2002 A1
20020032799 Wiedeman et al. Mar 2002 A1
20020078164 Reinschmidt Jun 2002 A1
20020091844 Craft et al. Jul 2002 A1
20020103916 Chen et al. Aug 2002 A1
20020133491 Sim et al. Sep 2002 A1
20020138618 Szabo Sep 2002 A1
20020141386 Minert et al. Oct 2002 A1
20020143991 Chow et al. Oct 2002 A1
20020178259 Doyle et al. Nov 2002 A1
20020188678 Edecker et al. Dec 2002 A1
20020191575 Kalavade et al. Dec 2002 A1
20020194335 Maynard Dec 2002 A1
20020194350 Lu et al. Dec 2002 A1
20030009591 Hayball et al. Jan 2003 A1
20030014544 Pettey Jan 2003 A1
20030023711 Parmar et al. Jan 2003 A1
20030023873 Ben-Itzhak Jan 2003 A1
20030035409 Wang et al. Feb 2003 A1
20030035420 Niu Feb 2003 A1
20030061506 Cooper et al. Mar 2003 A1
20030065762 Stolorz et al. Apr 2003 A1
20030091028 Chang et al. May 2003 A1
20030131245 Linderman Jul 2003 A1
20030135625 Fontes et al. Jul 2003 A1
20030195962 Kikuchi et al. Oct 2003 A1
20040010545 Pandya Jan 2004 A1
20040062246 Boucher et al. Apr 2004 A1
20040073703 Boucher et al. Apr 2004 A1
20040078419 Ferrari et al. Apr 2004 A1
20040078480 Boucher et al. Apr 2004 A1
20040103315 Cooper et al. May 2004 A1
20040111516 Cain Jun 2004 A1
20040128312 Shalabi et al. Jul 2004 A1
20040139057 Hirata et al. Jul 2004 A1
20040139108 Tang et al. Jul 2004 A1
20040141005 Banatwala et al. Jul 2004 A1
20040143599 Shalabi et al. Jul 2004 A1
20040187032 Gels et al. Sep 2004 A1
20040199616 Karhu Oct 2004 A1
20040199646 Susai et al. Oct 2004 A1
20040202182 Lund et al. Oct 2004 A1
20040210623 Hydrie et al. Oct 2004 A1
20040210663 Phillips et al. Oct 2004 A1
20040213158 Collett et al. Oct 2004 A1
20040250059 Ramelson et al. Dec 2004 A1
20040268358 Darling et al. Dec 2004 A1
20050005207 Herneque Jan 2005 A1
20050009520 Herrero et al. Jan 2005 A1
20050021848 Jorgenson Jan 2005 A1
20050027862 Nguyen et al. Feb 2005 A1
20050036501 Chung et al. Feb 2005 A1
20050036511 Baratakke et al. Feb 2005 A1
20050039033 Meyers et al. Feb 2005 A1
20050044270 Grove et al. Feb 2005 A1
20050074013 Hershey et al. Apr 2005 A1
20050080890 Yang et al. Apr 2005 A1
20050102400 Nakahara et al. May 2005 A1
20050125276 Rusu Jun 2005 A1
20050163073 Heller et al. Jul 2005 A1
20050165909 Cromer Jul 2005 A1
20050198335 Brown et al. Sep 2005 A1
20050213586 Cyganski et al. Sep 2005 A1
20050240989 Kim et al. Oct 2005 A1
20050249225 Singhal Nov 2005 A1
20050259586 Hafid et al. Nov 2005 A1
20050281190 McGee et al. Dec 2005 A1
20060023721 Miyake et al. Feb 2006 A1
20060036610 Wang Feb 2006 A1
20060036733 Fujimoto et al. Feb 2006 A1
20060041745 Parnes Feb 2006 A1
20060064478 Sirkin Mar 2006 A1
20060069774 Chen et al. Mar 2006 A1
20060069804 Miyake et al. Mar 2006 A1
20060077926 Rune Apr 2006 A1
20060092950 Arregoces et al. May 2006 A1
20060098645 Walkin May 2006 A1
20060112170 Sirkin May 2006 A1
20060164978 Werner et al. Jul 2006 A1
20060168319 Trossen Jul 2006 A1
20060187901 Cortes et al. Aug 2006 A1
20060190997 Mahajani et al. Aug 2006 A1
20060209789 Gupta et al. Sep 2006 A1
20060230129 Swami et al. Oct 2006 A1
20060233100 Luft et al. Oct 2006 A1
20060251057 Kwon et al. Nov 2006 A1
20060277303 Hegde et al. Dec 2006 A1
20060280121 Matoba Dec 2006 A1
20070019543 Wei et al. Jan 2007 A1
20070022479 Sikdar et al. Jan 2007 A1
20070027991 Sikdar Feb 2007 A1
20070044142 Yoon Feb 2007 A1
20070076653 Park et al. Apr 2007 A1
20070086382 Narayanan et al. Apr 2007 A1
20070094396 Takano et al. Apr 2007 A1
20070118881 Mitchell et al. May 2007 A1
20070124502 Li May 2007 A1
20070156919 Potti et al. Jul 2007 A1
20070165622 O'Rourke et al. Jul 2007 A1
20070180119 Khivesara et al. Aug 2007 A1
20070185998 Touitou et al. Aug 2007 A1
20070195792 Chen et al. Aug 2007 A1
20070230337 Igarashi et al. Oct 2007 A1
20070242738 Park et al. Oct 2007 A1
20070243879 Park et al. Oct 2007 A1
20070245018 Bhola Oct 2007 A1
20070245090 King et al. Oct 2007 A1
20070248009 Petersen Oct 2007 A1
20070259673 Willars et al. Nov 2007 A1
20070283429 Chen et al. Dec 2007 A1
20070286077 Wu Dec 2007 A1
20070288247 Mackay Dec 2007 A1
20070294209 Strub et al. Dec 2007 A1
20080016161 Tsirtsis et al. Jan 2008 A1
20080031263 Ervin et al. Feb 2008 A1
20080076432 Senarath et al. Mar 2008 A1
20080101396 Miyata May 2008 A1
20080109452 Patterson May 2008 A1
20080109870 Sherlock et al. May 2008 A1
20080120129 Seubert et al. May 2008 A1
20080120364 Chari May 2008 A1
20080134332 Keohane et al. Jun 2008 A1
20080162679 Maher et al. Jul 2008 A1
20080225722 Khemani et al. Sep 2008 A1
20080228781 Chen et al. Sep 2008 A1
20080250099 Shen et al. Oct 2008 A1
20080253390 Das et al. Oct 2008 A1
20080263209 Pisharody et al. Oct 2008 A1
20080271130 Ramamoorthy Oct 2008 A1
20080282254 Blander et al. Nov 2008 A1
20080291911 Lee et al. Nov 2008 A1
20080298303 Tsirtsis Dec 2008 A1
20090024722 Sethuraman et al. Jan 2009 A1
20090031415 Aldridge et al. Jan 2009 A1
20090049198 Blinn et al. Feb 2009 A1
20090070470 Bauman et al. Mar 2009 A1
20090077651 Poeluev Mar 2009 A1
20090092124 Singhal et al. Apr 2009 A1
20090106830 Maher Apr 2009 A1
20090138606 Moran et al. May 2009 A1
20090138945 Savchuk May 2009 A1
20090141634 Rothstein et al. Jun 2009 A1
20090164614 Christian et al. Jun 2009 A1
20090172093 Matsubara Jul 2009 A1
20090213858 Dolganow et al. Aug 2009 A1
20090222583 Josefsberg et al. Sep 2009 A1
20090227228 Hu et al. Sep 2009 A1
20090228547 Miyaoka et al. Sep 2009 A1
20090262741 Jungck et al. Oct 2009 A1
20090271472 Scheifler et al. Oct 2009 A1
20090285196 Lee et al. Nov 2009 A1
20090313379 Rydnell et al. Dec 2009 A1
20100008229 Bi et al. Jan 2010 A1
20100023621 Ezolt et al. Jan 2010 A1
20100036952 Hazlewood et al. Feb 2010 A1
20100042869 Szabo et al. Feb 2010 A1
20100054139 Chun et al. Mar 2010 A1
20100061319 Aso et al. Mar 2010 A1
20100064008 Yan et al. Mar 2010 A1
20100082787 Kommula et al. Apr 2010 A1
20100083076 Ushiyama Apr 2010 A1
20100094985 Abu-Samaha et al. Apr 2010 A1
20100095018 Khemani et al. Apr 2010 A1
20100098417 Tse-Au Apr 2010 A1
20100106833 Banerjee et al. Apr 2010 A1
20100106854 Kim et al. Apr 2010 A1
20100128606 Patel et al. May 2010 A1
20100162378 Jayawardena et al. Jun 2010 A1
20100205310 Altshuler et al. Aug 2010 A1
20100210265 Borzsei et al. Aug 2010 A1
20100217793 Preiss Aug 2010 A1
20100217819 Chen et al. Aug 2010 A1
20100223630 Degenkolb et al. Sep 2010 A1
20100228819 Wei Sep 2010 A1
20100235507 Szeto et al. Sep 2010 A1
20100235522 Chen et al. Sep 2010 A1
20100235880 Chen et al. Sep 2010 A1
20100238828 Russell Sep 2010 A1
20100265824 Chao et al. Oct 2010 A1
20100268814 Cross et al. Oct 2010 A1
20100293296 Hsu et al. Nov 2010 A1
20100312740 Clemm et al. Dec 2010 A1
20100318631 Shukla Dec 2010 A1
20100322252 Suganthi et al. Dec 2010 A1
20100330971 Selitser et al. Dec 2010 A1
20100333101 Pope et al. Dec 2010 A1
20110007652 Bai Jan 2011 A1
20110019550 Bryers et al. Jan 2011 A1
20110023071 Li et al. Jan 2011 A1
20110029599 Pulleyn et al. Feb 2011 A1
20110032941 Quach et al. Feb 2011 A1
20110040826 Chadzelek et al. Feb 2011 A1
20110047294 Singh et al. Feb 2011 A1
20110060831 Ishii et al. Mar 2011 A1
20110083174 Aldridge et al. Apr 2011 A1
20110093522 Chen et al. Apr 2011 A1
20110099403 Miyata et al. Apr 2011 A1
20110099623 Garrard et al. Apr 2011 A1
20110107116 Diab May 2011 A1
20110110294 Valluri et al. May 2011 A1
20110145324 Reinart et al. Jun 2011 A1
20110149879 Noriega et al. Jun 2011 A1
20110153834 Bharrat Jun 2011 A1
20110178985 San Martin Arribas et al. Jul 2011 A1
20110185073 Jagadeeswaran et al. Jul 2011 A1
20110191773 Pavel et al. Aug 2011 A1
20110196971 Reguraman et al. Aug 2011 A1
20110276695 Maldaner Nov 2011 A1
20110276982 Nakayama et al. Nov 2011 A1
20110289496 Steer Nov 2011 A1
20110292939 Subramaian et al. Dec 2011 A1
20110302256 Sureshehandra et al. Dec 2011 A1
20110307541 Walsh et al. Dec 2011 A1
20120008495 Shen et al. Jan 2012 A1
20120023231 Ueno Jan 2012 A1
20120026897 Guichard et al. Feb 2012 A1
20120030341 Jensen et al. Feb 2012 A1
20120066371 Patel et al. Mar 2012 A1
20120084419 Kannan et al. Apr 2012 A1
20120084460 McGinnity et al. Apr 2012 A1
20120106355 Ludwig May 2012 A1
20120117382 Larson et al. May 2012 A1
20120117571 Davis et al. May 2012 A1
20120144014 Natham et al. Jun 2012 A1
20120144015 Jalan et al. Jun 2012 A1
20120151353 Joanny Jun 2012 A1
20120170548 Rajagopalan et al. Jul 2012 A1
20120173759 Agarwal et al. Jul 2012 A1
20120179770 Jalan et al. Jul 2012 A1
20120191839 Maynard Jul 2012 A1
20120215910 Wada Aug 2012 A1
20120239792 Banerjee et al. Sep 2012 A1
20120240185 Kapoor et al. Sep 2012 A1
20120290727 Tivig Nov 2012 A1
20120297046 Raja et al. Nov 2012 A1
20120311116 Jalan et al. Dec 2012 A1
20130046876 Narayana et al. Feb 2013 A1
20130058335 Koponen et al. Mar 2013 A1
20130074177 Varadhan et al. Mar 2013 A1
20130083725 Mallya et al. Apr 2013 A1
20130100958 Jalan et al. Apr 2013 A1
20130124713 Feinberg et al. May 2013 A1
20130125230 Koponen May 2013 A1
20130135996 Torres et al. May 2013 A1
20130136139 Zheng et al. May 2013 A1
20130148500 Sonoda et al. Jun 2013 A1
20130166762 Jalan et al. Jun 2013 A1
20130173795 McPherson Jul 2013 A1
20130176854 Chisu et al. Jul 2013 A1
20130191486 Someya et al. Jul 2013 A1
20130198385 Han et al. Aug 2013 A1
20130250765 Ehsan et al. Sep 2013 A1
20130258846 Damola Oct 2013 A1
20130282791 Kruglick Oct 2013 A1
20140012972 Han Jan 2014 A1
20140089500 Sankar et al. Mar 2014 A1
20140164617 Jalan et al. Jun 2014 A1
20140169168 Jalan et al. Jun 2014 A1
20140207845 Han et al. Jul 2014 A1
20140258465 Li Sep 2014 A1
20140258536 Chiang Sep 2014 A1
20140269728 Jalan et al. Sep 2014 A1
20140280470 Calo Sep 2014 A1
20140286313 Fu et al. Sep 2014 A1
20140298091 Carlen et al. Oct 2014 A1
20140330982 Jalan et al. Nov 2014 A1
20140334485 Jain et al. Nov 2014 A1
20140359052 Joachimpillai et al. Dec 2014 A1
20150026794 Zuk et al. Jan 2015 A1
20150039671 Jalan et al. Feb 2015 A1
20150156223 Xu et al. Jun 2015 A1
20150215436 Kancherla Jul 2015 A1
20150237173 Virkki et al. Aug 2015 A1
20150244566 Puimedon Aug 2015 A1
20150281087 Jalan et al. Oct 2015 A1
20150281104 Golshan et al. Oct 2015 A1
20150296058 Jalan et al. Oct 2015 A1
20150312092 Golshan et al. Oct 2015 A1
20150312268 Ray Oct 2015 A1
20150333988 Jalan et al. Nov 2015 A1
20150350048 Sampat et al. Dec 2015 A1
20150350379 Jalan et al. Dec 2015 A1
20160014052 Han Jan 2016 A1
20160014126 Jalan et al. Jan 2016 A1
20160036778 Chen et al. Feb 2016 A1
20160042014 Jalan et al. Feb 2016 A1
20160043901 Sankar et al. Feb 2016 A1
20160044095 Sankar et al. Feb 2016 A1
20160050233 Chen et al. Feb 2016 A1
20160088074 Kannan et al. Mar 2016 A1
20160105395 Chen et al. Apr 2016 A1
20160105446 Chen et al. Apr 2016 A1
20160119382 Chen et al. Apr 2016 A1
20160139910 Ramanathan et al. May 2016 A1
20160156708 Jalan et al. Jun 2016 A1
20160173579 Jalan et al. Jun 2016 A1
20170048107 Dosovitsky et al. Feb 2017 A1
Foreign Referenced Citations (116)
Number Date Country
1372662 Oct 2002 CN
1449618 Oct 2003 CN
1473300 Feb 2004 CN
1529460 Sep 2004 CN
1575582 Feb 2005 CN
1714545 Dec 2005 CN
1725702 Jan 2006 CN
1910869 Feb 2007 CN
101004740 Jul 2007 CN
101094225 Dec 2007 CN
101163336 Apr 2008 CN
101169785 Apr 2008 CN
101189598 May 2008 CN
101193089 Jun 2008 CN
101247349 Aug 2008 CN
101261644 Sep 2008 CN
101442425 May 2009 CN
101495993 Jul 2009 CN
101682532 Mar 2010 CN
101878663 Nov 2010 CN
102123156 Jul 2011 CN
102143075 Aug 2011 CN
102546590 Jul 2012 CN
102571742 Jul 2012 CN
102577252 Jul 2012 CN
102918801 Feb 2013 CN
103533018 Jan 2014 CN
103944954 Jul 2014 CN
104040990 Sep 2014 CN
104067569 Sep 2014 CN
104106241 Oct 2014 CN
104137491 Nov 2014 CN
104796396 Jul 2015 CN
102577252 Mar 2016 CN
102918801 May 2016 CN
102571742 Jul 2016 CN
1209876 May 2002 EP
1770915 Apr 2007 EP
1885096 Feb 2008 EP
02296313 Mar 2011 EP
2577910 Apr 2013 EP
2622795 Aug 2013 EP
2647174 Oct 2013 EP
2760170 Jul 2014 EP
2772026 Sep 2014 EP
2901308 Aug 2015 EP
2760170 Dec 2015 EP
1182560 Nov 2013 HK
1183569 Dec 2013 HK
1183996 Jan 2014 HK
1189438 Jun 2014 HK
1198565 May 2015 HK
1198848 Jun 2015 HK
1199153 Jun 2015 HK
1199779 Jul 2015 HK
1200617 Aug 2015 HK
392015 Sep 2015 IN
261CHE2014 Jul 2016 IN
1668CHENP2015 Jul 2016 IN
H09-097233 Apr 1997 JP
1999096128 Apr 1999 JP
H11-338836 Oct 1999 JP
2000276432 Oct 2000 JP
2000307634 Nov 2000 JP
2001051859 Feb 2001 JP
2001298449 Oct 2001 JP
2002091936 Mar 2002 JP
2003141068 May 2003 JP
2003186776 Jul 2003 JP
2005141441 Jun 2005 JP
2006332825 Dec 2006 JP
2008040718 Feb 2008 JP
2009500731 Jan 2009 JP
2013528330 Jul 2013 JP
2014504484 Feb 2014 JP
2014143686 Aug 2014 JP
2015507380 Mar 2015 JP
5855663 Dec 2015 JP
5906263 Apr 2016 JP
5913609 Apr 2016 JP
5946189 Jun 2016 JP
100830413 May 2008 KR
20130096624 Aug 2013 KR
101576585 Dec 2015 KR
101632187 Jun 2016 KR
269763 Feb 1996 TW
425821 Mar 2001 TW
444478 Jul 2001 TW
WO2001013228 Feb 2001 WO
WO2001014990 Mar 2001 WO
WO2001045349 Jun 2001 WO
WO2003103237 Dec 2003 WO
WO2004084085 Sep 2004 WO
WO2006098033 Sep 2006 WO
WO2008053954 May 2008 WO
WO2008078593 Jul 2008 WO
WO2011049770 Apr 2011 WO
WO2011079381 Jul 2011 WO
WO2011149796 Dec 2011 WO
WO2012050747 Apr 2012 WO
WO2012075237 Jun 2012 WO
WO2012083264 Jun 2012 WO
WO2012097015 Jul 2012 WO
WO2013070391 May 2013 WO
WO2013081952 Jun 2013 WO
WO2013096019 Jun 2013 WO
WO2013112492 Aug 2013 WO
WO2014031046 Feb 2014 WO
WO2014052099 Apr 2014 WO
WO2014088741 Jun 2014 WO
WO2014093829 Jun 2014 WO
WO2014138483 Sep 2014 WO
WO2014144837 Sep 2014 WO
WO2014179753 Nov 2014 WO
WO2015153020 Oct 2015 WO
WO2015164026 Oct 2015 WO
Non-Patent Literature Citations (15)
Entry
Cardellini et al., “Dynamic Load Balancing on Web-server Systems”, IEEE Internet Computing, vol. 3, No. 3, pp. 28-39, May-Jun. 1999.
Spatscheck et al., “Optimizing TCP Forwarder Performance”, IEEE/ACM Transactions on Networking, vol. 8, No. 2, Apr. 2000.
Kjaer et al. “Resource allocation and disturbance rejection in web servers using SLAs and virtualized servers”, IEEE Transactions on Network and Service Management, IEEE, US, vol. 6, No. 4, Dec. 1, 2009.
Sharifian et al. “An approximation-based load-balancing algorithm with admission control for cluster web servers with dynamic workloads”, The Journal of Supercomputing, Kluver Academic Publishers, BO, vol. 53, No. 3, Jul. 3, 2009.
Goldszmidt et al. NetDispatcher: A TCP Connection Router, IBM Research Report RC 20853, May 19, 1997.
Koike et al., “Transport Middleware for Network-Based Control,” IEICE Technical Report, Jun. 22, 2000, vol. 100, No. 53, pp. 13-18.
Yamamoto et al., “Performance Evaluation of Window Size in Proxy-based TCP for Multi-hop Wireless Networks,” IPSJ SIG Technical Reports, May 15, 2008, vol. 2008, No. 44, pp. 109-114.
Abe et al., “Adaptive Split Connection Schemes in Advanced Relay Nodes,” IEICE Technical Report, Feb. 22, 2010, vol. 109, No. 438, pp. 25-30.
Gite, Vivek, “Linux Tune Network Stack (Buffers Size) to Increase Networking Performance,” accessed Apr. 13, 2016 at URL: <<http://www.cyberciti.biz/faq/linux-tcp-tuning/>>, Jul. 8, 2009, 24 pages.
“Tcp—TCP Protocol”, Linux Programmer's Manual, accessed Apr. 13, 2016 at URL: <<https://www.freebsd.org/cgi/man.cgi?query=tcp&apropos=0&sektion=7&manpath=SuSE+Linux%2Fi386+11.0&format=asci>>, Nov. 25, 2007, 11 pages.
“Enhanced Interior Gateway Routing Protocol”, Cisco, Document ID 16406, Sep. 9, 2005 update, 43 pages.
Crotti, Manuel et al., “Detecting HTTP Tunnels with Statistical Mechanisms”, IEEE International Conference on Communications, Jun. 24-28, 2007, pp. 6162-6168.
Haruyama, Takahiro et al., “Dial-to-Connect VPN System for Remote DLNA Communication”, IEEE Consumer Communications and Networking Conference, CCNC 2008. 5th IEEE, Jan. 10-12, 2008, pp. 1224-1225.
Chen, Jianhua et al., “SSL/TLS-based Secure Tunnel Gateway System Design and Implementation”, IEEE International Workshop on Anti-counterfeiting, Security, Identification, Apr. 16-18, 2007, pp. 258-261.
“EIGRP MPLS VPN PE-CE Site of Origin (SoO)”, Cisco Systems, Feb. 28, 2006, 14 pages.
Related Publications (1)
Number Date Country
20170048356 A1 Feb 2017 US