Methods to manage services over a service gateway

Information

  • Patent Grant
  • 9979801
  • Patent Number
    9,979,801
  • Date Filed
    Wednesday, June 24, 2015
    9 years ago
  • Date Issued
    Tuesday, May 22, 2018
    6 years ago
Abstract
In activating a service, a service gateway retrieves a service table entry using a service or server address of the service entry, where the service table entry has an association with another service entry. An association to the service entry is added and a marker value is set to indicate associations with two service entries. After a time duration, the association with the other service entry is removed, and the marker value is changed accordingly. In deactivating a service entry, the service gateway calculates a hash value for the service or server address of the service entry. After matching the hash value to a hash value of another service entry, an association with the other service entry is added. A marker value is set to indicate associations with two service entries. After a time duration, the association with the service entry is removed, and the marker value is changed accordingly.
Description
BACKGROUND OF THE INVENTION

Field


This invention relates generally to data communications, and more specifically, to a service gateway.


Background


Service gateways such as server load balancers, firewalls, or traffic managers are typically deployed to bridge services between client computing devices and application servers. The number of client computing devices proliferates in past few years in the areas of consumer computers, mobile computing devices, smartphones, and gaming devices.


When the number of client devices increases, the number of service sessions between client devices and application servers increases accordingly. Traditional stateful session packet processing used by service gateways gives way to stateless packet processing. Stateless packet processing is more efficient in computation and in memory consumption. It suits well in order to scale up services for an expected large number of service sessions. A typical stateless packet processing method uses a form of hash table. The table is stored with predetermined servers and applications information.


At the same time, the number of applications also increases rapidly as consumers and corporations install new applications on their computing devices. More servers are installed every day, and more applications become available every hour. In order to activate a server or an application in a server, operator needs to update the hash table with the additional server or application information. Often times, updating the table means replacing an existing server or application information of a table entry with the activating server or application information. Such table entry content replacement is disruptive to on-going service session using the existing table entry. Data packets of any on-going service session would not be forwarded to the proper server or client device. For example, if a consumer is watching a Netflix™ streaming video, the video stream will be abruptly stopped. If a corporate worker is in the middle of a business transaction, the transaction will be stalled. The worker needs to restart the transaction. In a worst case, the worker may need to find out which part of the transaction had been completed in order to avoid duplicating the completed portion of the transaction.


In addition to activating a new server or application, during maintenance such as backup, software update, hardware replacement, servers and applications are often taken off line. The corresponding table entries will also need to be replaced as the server or the application on a server is no longer available at the table entry. It is desirable to replace the table entry with a second server or another server running the same application.


It is highly desirable to have a stateless packet processing method while services can be managed to allow a server or an application on a server to be added or removed, without interrupting existing service sessions.


Therefore, there is a need for a method to manage services over a service gateway using stateless packet processing method.


BRIEF SUMMARY OF THE INVENTION

According to one embodiment of the present invention, a method for managing services by a service gateway comprises: (a) receiving a first service entry for a service to be activated by the service gateway, the first service entry comprising a first service address associated with the first service and a first server address; (b) retrieving a service table entry of a service mapping table using the first service address or the first server address of the first service entry, the service table entry having an association with a second service entry, the second service entry comprising a second service address and a second server address; (c) adding to the service table entry an association to the first service entry; (d) storing a marker value associated with the service table entry to indicate that the service table entry is associated with a plurality of service entries; (e) setting a timer associated with the service table entry to a predetermined duration; (f) in response to an expiration of the timer, removing the association with the second service entry from the service table entry; and (g) in response to removing the association with the second service from the service table entry, changing the marker value to indicate that the service table entry is not associated with a plurality of service entries.


In one aspect of the present invention, prior to the removing of the association with the second service entry from the service table entry, the method further comprises: (h) receiving a data packet by the service gateway from a host, the data packet comprising a third service address; (i) comparing the third service address of the data packet with the first service address of the first service entry or with the second service address of the second service entry; (j) in response to finding a match between the third service address and the first service address, or between the third service address and the second service address, determining the marker value associated with the service table entry; (k) in response to determining that the marker value indicates that the service table entry is associated with a plurality of service entries, creating a session entry based on the service table entry and storing the session entry in a session table; (l) in response to finding the match between the third service address and the first service address, modifying the data packet by replacing the third service address with the first server address; (m) in response to finding the match between the third service address and the second service address, modifying the data packet by replacing the third service address with the second server address; and (n) sending the modified data packet to the first server address or the second server address.


In one aspect of the present invention, prior to the removing of the association with the second service entry from the service table entry, the method further comprises: (h) receiving a data packet by the service gateway from a server, the data packet comprising a third server address; (i) comparing the third server address of the data packet with the first server address of the first service entry or with the second server address of the second service entry; (j) in response to finding a match between the third server address and the first server address, or between the third server address and the second server address, determining the marker value associated with the service table entry; (k) in response to determining that the marker value indicates that the service table entry is associated with a plurality of service entries, creating a session entry based on the service table entry and storing the session entry in a session table; (l) in response to finding the match between the third server address and the first server address, modifying the data packet by replacing the third server address with the first service address; (m) in response to finding the match between the third server address and the second server address, modifying the data packet by replacing the third server address with the second service address; and (n) sending the modified data packet to a host address from the data packet.


In one aspect of the present invention, the receiving (h) comprises: (h1) receiving the data packet from the host; (h2) comparing the data packet against session entries in the session table; (h3) in response to finding a match between the data packet and a given session entry in the session table: (h3i) modifying the data packet by replacing the third service address with a given server address in the given session entry; (h3ii) skipping the comparing (i), the determining (j), the creating (k), the modifying (l), the modifying (m), and the sending (n); and (h3iii) sending the modified data packet to the given server address; and (h4) in response to finding no matches between the data packet and the session entries, performing the comparing (i), the determining (j), the creating (k), the modifying (l), the modifying (m), and the sending (n).


In one embodiment of the present invention, a method for managing services by a service gateway, comprises: (a) receiving an indication to deactivate a first service entry for a service, the first service entry comprising a first service address associated with the service and a first server address, the first service entry associated with a service table entry of a service mapping table; (b) calculating a first hash value for the first service address or the first server address of the first service entry; (c) determining whether a second hash value of a second service entry in the service mapping table matches the first hash value, the second service entry comprising a second service address and a second server address; (d) in response to determining that the second hash value matches the first hash value, adding an association with the second service entry to the service table entry; (e) storing a marker value associated with the service table entry to indicate that the service table entry is associated with a plurality of service entries; (f) setting a timer associated with the service table entry to a predetermined duration; (g) in response to an expiration of the timer, removing the association with the first service entry from the service table entry; and (h) in response to removing the association with the first service entry from the service table entry, changing the marker value to indicate that the service table entry is not associated with a plurality of service entries.


System and computer program products corresponding to the above-summarized methods are also described and claimed herein.





BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE FIGURES


FIG. 1 illustrates an embodiment of a stateless service gateway between a host and a plurality of service addresses according to the present invention.



FIG. 2 illustrates an embodiment of a managed service mapping table for a stateless service gateway according to the present invention.



FIGS. 3A-3F illustrates an embodiment of a data packet processing method according to the present invention.



FIG. 4 illustrates an embodiment of a process to add a service entry according to the present invention.



FIG. 5 illustrates an embodiment of a process to remove a service entry 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 present 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.


In an embodiment illustrated in FIG. 1, a service gateway 110 processes a service session 302 between a host 100 and a server 210. In one embodiment, service session 302 is a Web service session such as a HTTP (Hypertext Transport Protocol) session, a secure HTTP session, a FTP (File Transfer Protocol) session, a file transfer session, a SIP (Session Initiation Protocol) session, a session based on Web technology, a video or audio streaming session, a Web conferencing session, or any session over the Internet, corporate network, data center network, or a network cloud. Service session 302 includes a plurality of data packets between host 100 and server 210. Service session 302 is delivered over a data network 153.


Host 100 is a computing device with network access capabilities. In one embodiment, host 100 is a workstation, a desktop personal computer or a laptop personal computer. In one embodiment, host 100 is a Personal Data Assistant (PDA), a tablet PC, a smartphone, or a cellular phone. In one embodiment, host 100 is 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 110 is operationally coupled to a processor 113 and a computer readable medium 114. The computer readable medium 114 stores computer readable program code, which when executed by the processor 113, implements the various embodiments of the present invention as described herein. In some embodiments, service gateway 110 is 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 210 is operationally coupled to a processor 213 and a computer readable medium 214. The computer readable medium 214 stores computer readable program code, which when executed by the processor 213, implements the various embodiments of the present invention as described herein. In some embodiments, the computer readable program code implements server 210 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 100.


In one embodiment, data network 153 is an Internet Protocol (IP) network. In one embodiment, data network 153 is a corporate data network or a regional corporate data network. In one embodiment, data network 153 is an Internet service provider network. In one embodiment, data network 153 is a residential data network. In one embodiment, data network 153 includes a wired network such as Ethernet. In one embodiment, data network 153 includes a wireless network such as a WiFi network, or cellular network. In one embodiment, data network 153 resides in a data center, or connects to a network or application network cloud.


In one embodiment, service session 302 includes a data packet 304 from host 100. Data packet 304 includes a service address 331. In one embodiment, service address 331 includes an IP address. In one embodiment, service address 331 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 331 is associated with service gateway 110 so that the service data packet 304 of service session 302 is processed by the service gateway 110. In one embodiment, service address 331 includes a destination IP address of service data packet 304, and optionally includes destination transport layer port number of service data packet 304.


Service gateway 110 determines a server address 310 associated with the service address 331 obtained from service data packet 304. In one embodiment, server address 310 includes a network address or IP address of server 210. In one embodiment, server address 310 includes an application layer address, such as a TCP port number or a UDP port number of server 210.


Based on server address 310, service gateway 110 modifies service data packet 304 by replacing service address 331 with server address 310. Service gateway 110 sends modified service data packet 304 to server 210.


In one embodiment, service gateway 110 receives a data packet 308 of service session 302 from server 210. Service gateway 110 processes data packet 308. Data packet 308 includes server address 310. Service gateway 110 determines a service address 331 associated with server address 310 obtained from service data packet 308. Service gateway 110 modifies data packet 308 by replacing server address 310 with service address 331. Service gateway 110 sends modified data packet 308 to host 100.


In one embodiment, service gateway 110 includes storage 400, and a service mapping table 412 (not shown) stored in storage 400. In one embodiment, storage 400 is a memory module residing in service gateway 110. In one embodiment, service gateway 110 includes a network processing module (not shown) comprising a field programmable gate array (FPGA), a network processor, an application specific integrated circuit (ASIC). Storage 400 is associated with the network processing module. Examples of storage 400 in this embodiment 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).



FIG. 2 illustrates an embodiment of a managed service mapping table 412 of service gateway 110 according to the present invention. In one embodiment, service gateway 110 includes a service entry 511 and a service entry 514. Service entry 511 includes service address 331 and server address 310, associating service address 331 and server address 310. Service entry 514 includes service address 334 and server address 340, associating service address 334 and server address 340. Server address 310 is different from server address 340. Server address 310 is associated with server 210 and server address 340 is associated with server 240. In one embodiment, server 210 is the same as server 240. Server address 310 associates with a server software application different from the server software application associated to server address 340. In one embodiment, server address 310 and server address 340 are associated with a same server software application whereas server 210 is different from server 240. In one embodiment, server address 310 and server address 340 are not related to each other.


In one embodiment, service mapping table 412 includes a service table entry 420 which is associated with service entry 511. Service gateway 110 may modify service table entry 420 from being associated with service entry 511 to being associated with service entry 514.


In one embodiment, for host 100 to use the service associated with service entry 514, service gateway 110 activates service entry 514. Service gateway 110 selects service table entry 420 to activate service entry 514, wherein service table entry 420 also has an association with service entry 511. A process for determining the service table entry 420 in order to activate service entry 514 is described further below with reference to FIG. 4.


In one embodiment, to deactivate the service associated with service entry 511, service gateway 110 removes service entry 511 from service table entry 420. Service gateway 110 selects service entry 514 to replace service entry 511 in service table entry 420. A process for selecting the service entry 514 to replace service entry 511 in service table entry 420 is described further below with reference to FIG. 5.


In one embodiment, service gateway 110 modifies service table entry 420 to include an association with a second service entry 514. Service table entry 420 is thus associated with both service entry 511 and service entry 514. In one embodiment, service gateway 110 stores a change marker 427 into service table entry 420. In one embodiment, service table entry 420 includes a change marker 427 and service gateway 110 modifies the change marker 427 value to “TRUE” to indicate that service table entry 420 includes two service entry associations. The association of service table entry 420 with two service entries indicates that one service entry is to be removed and is to be replaced by the other service entry will remain associated with service table entry 420.


In one embodiment, service gateway 110 is connected to a clock 119. Service gateway 110 includes a timer 117. Service gateway 110 sets timer 117 to a predetermined time period such as 10 minutes, 5 seconds, 2 minutes, or 1 hour. Service gateway 110 sets timer 117 while storing service entry 514 into service table entry 420. Service gateway 110 checks clock 119 to determine if timer 117 expires. When timer 117 expires, service gateway 110 changes marker 427 to “FALSE” or removes marker 427 from service table entry 420. Service gateway 110 also removes the association to service entry 511 from service table entry 420. The use of the timer 117 is described further below with reference to FIGS. 4 and 5.



FIGS. 3A-3F illustrate an embodiment of a data packet processing of service gateway using a service mapping table according to the present invention.


In one embodiment illustrated in FIG. 3A, service gateway 110 includes a session table 452 for storing information for sessions between hosts and servers. Session table 452 is stored in storage 400.


Service mapping table 412 includes a service table entry 420 and a service table entry 423. Service table entry 420 includes marker 427, which here has a value of “FALSE”. The service table entry 420 is associated with service entry 511. Service entry 511 stores service address 331 and server address 310 associated with server 210.


Service table entry 423 includes marker 429, which here has a value of “TRUE”. Service table entry 423 is associated with service entry 514 and service entry 516. Service entry 514 includes service address 334 and server address 340 associated with server 240. Service entry 516 stores service address 336 and server address 360 associated with server 260.


In one embodiment, service gateway 110 receives a data packet 304 from host 100. Service gateway 110 obtains service address 338 from data packet 304. Service gateway 110 compares service address 338 against service mapping table 412, and finds a match with service table entry 420.


In one embodiment, service mapping table 412 includes a plurality of service table entries. A service table entry 420 is indexed by a table index 430. In one embodiment, service mapping table 412 has 1000 entries and the table index 430 has an integer value between 0 and 999. In one embodiment, table index 430 has a value between 1 and 1000. In one embodiment table index has a value between 55 and 4897, or between −7 to 198024. In one embodiment, table index 430 has non-integer value.


In one embodiment, service gateway 110 includes a hash function HFunc 701. Service gateway 110 compares service address 338 against service mapping table 412 using HFunc 701.


Service gateway 110 applies HFunc 701 to service address 338 to obtain a hash value HValue 711. Service gateway 110 compares HValue 711 against service mapping table 412 to finds a match with table index 430. Service gateway 110 retrieves service table entry 420 using table index 430. In one embodiment, HValue 711 has the same value as table index 430.


Examples of hash functions HFunc 701 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 110; and other types of hash functions or table lookup functions. Typically such hash functions are simple and can be calculated rapidly by service gateway 110.


Service gateway 110 checks marker 427 of service table entry 420. Marker 427 has a value “FALSE”. Service gateway 110 modifies data packet 304 by replacing service address 338 with server address 310. Service gateway 110 sends modified data packet 304 to server 210, which is associated with server address 310.


In one embodiment, assume that the service associated with service entry 514 is to be replaced by the service associated with service entry 516, i.e., service entry 514 is to be replaced by service entry 516 in service table entry 423. Service gateway 110 compares service address 338 with service table entry 423 and finds a match between service address 338 and service address 334 of the associated service entry 514. In response, service gateway 110 determines marker 429 of service table entry 423 to be “TRUE”. Service gateway 110 creates a session entry 454 based on service table entry 423. Referring now to FIG. 3B, in one embodiment, service gateway 110 uses the associated service entry 514 of service table entry 423 to create session entry 454. Service gateway 110 obtains server address 340 from service entry 514, and stores service address 338 and server address 340 into session entry 454. In one embodiment, service gateway 110 obtains host address 108 from data packet 304 and stores host address 108 into session entry 454. Host address 108 is associated with host 100. In one embodiment, host address 108 includes an IP address or a network address of host 100. In one embodiment, host address 108 further includes an application layer address, a TCP port number, or a UDP port number of host 100. Service gateway 110 stores session entry 454 into session table 452. Service gateway 110 uses session entry 454 to process data packet 304. Service gateway 110 modifies data packet 304 by replacing service address 338 by server address 340 of session entry 454. Service gateway 110 sends modified data packet 304 to server 240.


In one embodiment, service gateway 110 compares service address 338 against service table entry 423 and finds service address 338 matching service address 336 of the associated service entry 516 of service table entry 423, the new associated service entry. Service gateway 110 determines marker 429 of service table entry 423 to be “TRUE”. Referring now to FIG. 3C, service gateway 110 uses service entry 516 to create session entry 454. Service gateway 110 stores service address 338, server address 360 of service entry 516 into session entry 454. In one embodiment, service gateway 110 stores host address 108 into session entry 454. Service gateway 110 modifies data packet 304 by replacing service address 338 by server address 360 and sends modified data packet 304 to server 260.


In one embodiment, service gateway 110 checks if data packet 304 includes a session request. For example, data packet 304 includes a TCP SYN packet. Service gateway 110 uses new associated service entry 516 of service table entry 423 to create session entry 454, as described above with reference to FIG. 3C.


In one embodiment, service gateway 110 compares data packet 304 against session table 452 prior to comparing data packet 304 against service mapping table 412. In one embodiment, service gateway 110 matches service address 338 of data packet 304 against session table 452. In one embodiment, service gateway 110 further obtains host address 108 of data packet 304, and compares service address 338 and host address 108 against session table 452. In an embodiment, service gateway 110 finds a match with session entry 454. Service gateway 110 modifies data packet 304 by replacing service address 338 of data packet 304 by server address of session entry 420, and sends modified data packet 304 to the associated server of the server address of session entry 454.


In one embodiment, service gateway 110 does not find a match between data packet 304 and session table 452. In response, service gateway 110 proceeds to compare data packet 304 against service mapping table 412, as described above.


Referring now to FIG. 3D, in one embodiment, service gateway 110 receives a data packet 308 from a server. In one embodiment, service gateway 110 receives data packet 308 from server 210. Service gateway 110 obtains server address 310 of data packet 308, compares server address 310 against service mapping table 412, and finds a match with service table entry 420. In one embodiment, service gateway 110 applies hash function HFunc 701 to server address 310 to obtain HValue 715. Service gateway 110 compares HValue 715 against service mapping table 412 and finds a match with table index 430. Service gateway 110 retrieves service table entry 420 using table index 430. Service gateway 110 checks marker 427 of service table entry 420 to be “FALSE”. Service gateway 110 modifies data packet 308 by replacing server address 310 by service address 331 of service entry 511 of service table entry 420. Service gateway 110 sends modified data packet 308 to host 100.


In one embodiment, service gateway 110 receives data packet 348 from server 240. Service gateway 110 obtains server address 340 of data packet 348, and compares server address 340 against service mapping table 412. Service gateway 110 finds a match with service table entry 423. Service gateway 110 checks marker 429 of service table entry 423 to be “TRUE”. In response, referring to FIG. 3E, service gateway 110 creates a session entry 464 (FIG. 3E) using server address 340 and service table entry 423. Service gateway 110 stores server address 340 in session entry 464. Service gateway 110 further checks and determines server address 340 matches the existing associated service entry 514 of service table entry 423. Service gateway 110 associates session entry 464 to service address 334 of service entry 514 in session entry 464. Service gateway 110 stores the session entry 464 in the session table 452. In one embodiment, service gateway 110 extracts host address 108 from data packet 348 and stores host address 108 in session entry 464 as well.


Service gateway 110 modifies data packet 348 by replacing server address 340 with service address 331, and sends modified data packet 348 to host 100, which is associated with host address 108.


In one embodiment, service gateway 110 receives data packet 349 from server 260. Service gateway 110 obtains server address 360 of data packet 349, and compares server address 360 against service table entry 423. Service gateway 110 finds a match with service table entry 423. Service gateway 110 checks marker 429 of service table entry 423 to be “TRUE”. Service gateway 110 further determines server address 360 of data packet 349 matches server address 360 of service entry 516 associated with service table entry 423. Referring now to FIG. 3F, service gateway 110 creates a session entry 466 using server address 360 and service entry 516. Service gateway 110 stores server address 360 and service address 336 of service entry 516 into session entry 466. Service gateway 110 stores session entry 466 into session table 452. In one embodiment, service gateway 110 extracts host address 108 from data packet 349 and stores host address 108 into session entry 466.


Service gateway 110 modifies data packet 349 by replacing server address 360 with service address 336, and sends modified data packet 349 to host 100 corresponding to host address 108.


In one embodiment, service gateway 110 compares data packet 349 against session table 452 prior to comparing data packet 349 against service mapping table 412. Service gateway 110 obtains server address 360 of data packet 308 and compares server address 360 against session table 452. In one embodiment, service gateway 110 obtains further host address 108 of data packet 308 and matches server address 360 together with host address 108 against session table 452. In an embodiment, service gateway 110 finds a match with session entry 466. Service gateway 110 modifies data packet 308 by replacing server address 360 of data packet 304 by service address 336 of session entry 466, and sends modified data packet 349 to host 100 associated to host address 108.


In one embodiment, service gateway 110 does not find a match between data packet 308 and session table 452. Service gateway 110 proceeds to compare data packet 308 against service mapping table 412, as described above.


In one embodiment, service gateway 110 uses session entry 466 created using data packet 308 received from server 260, in comparing subsequent host-side session data packet against session table 452. In one embodiment, service gateway 110 uses session entry 454 created using data packet 304 received from host 100, in comparing subsequent server-side session data packets against session table 452.



FIG. 4 illustrates an embodiment of a process to activate a service entry according to the present invention. In one embodiment, service mapping table 412 includes service table entry 420 indexed by table index 430. Service table entry 420 is associated with service entry 511.


Service gateway 110 includes a hash function HFunc 702. In one embodiment, HFunc 702 is the same as HFunc 701. In one embodiment, HFunc 702 is different from HFunc 701.


In one embodiment, service gateway 110 activates service entry 514, which includes service address 334 and server address 340. In one embodiment, service gateway 110 receives service entry 514 from a user 130. In one embodiment, user 130 is a network administrator, or a network management system. In one embodiment, service gateway receives service entry 514 from a pre-determined configuration retrieved from storage or received remotely from a network.


Service gateway 110 applies hash function HFunc 702 to service entry 514 to obtain a hash value HValue 712. In one embodiment, HFunc 702 is applied to service address 334. In one embodiment, HFunc 702 is applied to server address 340. In one embodiment, HFunc 702 is applied to both service address 334 and server address 340. Service gateway 110 calculates a hash value HValue 712. In one embodiment, hash value HValue 712 matches table index 430 of service mapping table 412. Service gateway 110 retrieves service table entry 420 using table index 430. Service gateway 110 adds an association with service entry 514 to service table entry 420 so that service table entry 420 is associated with both service entry 511 and service entry 514. In one embodiment, service gateway 110 stores a change marker 427 to service table entry 420 or sets the change marker 427 value to “TRUE”.


In one embodiment, service gateway 110 set a timer 117 for the activation or service entry 514. When timer 117 expires. Service gateway 110 removes the association with service entry 511 from service table entry 420. Service gateway 110 removes change marker 427 from service table entry 420 or changes the value of marker 427 to “FALSE”. Service table entry 420 maintains the association with service entry 514. By setting the time 117, existing connections related to service entry 511 may be migrated to the session table 452, as described above, prior to the removal of service entry 511 from service table entry 420, reducing disruptions to existing session connections.



FIG. 5 illustrates a process to deactivate a service entry 511. Service mapping table 412 includes a service table entry 420 associated with service entry 511. Service mapping table 412 further includes a second service table entry 423 associated with service entry 514 different from service entry 511, such as a deactivate command or request. Service gateway 110 receives a deactivate indication 172 to deactivate service entry 511. In one embodiment, service gateway 110 receives the indication 172 from user 130. In one embodiment, service gateway 110 receives the indication 172 from a pre-determined configuration retrieved from storage or remotely over a data network.


Indication 172 includes service entry 511. Service entry 511 includes service address 331 and server address 310. Service gateway 110 obtains service entry 511 from indication 172.


In one embodiment, service gateway 110 calculates a hash value HValue 712 by applying HFunc 702 to service entry 511. In one embodiment, service gateway 110 applies HFunc 702 to service address 331 of service entry 511. In one embodiment, service gateway 110 applies HFunc 702 to server address 310 of service entry 511. In one embodiment, service gateway applies HFunc 702 to both service address 331 and server address 310. Service gateway 110 compares HValue 712 against service mapping table 412 and finds a match with table index 430. Service gateway 110 retrieves service table entry 420 using table index 430 from service mapping table 412.


In one embodiment, service gateway 110 compares service entry 511 against service mapping table 412. In one embodiment, service gateway 110 compares service address 331 of service entry 511 to service address 331 of service table entry 420 and finds a match. In one embodiment, service gateway 110 compares server address 310 of service entry 511 to server address 310 of service table entry 420 and finds a match. In one embodiment, service gateway 110 compares both service address 331 and server address 310 of service entry 511 and finds a match with service table entry 420. Service gateway 110 determines table index 430 of the matching service table entry 420.


Service gateway 110 proceeds to select a replacement service entry 514 for service table entry 423. In one embodiment, in selecting service entry 514 from service mapping table 412, service gateway 110 selects a service table entry 423 and applies hash function HFunc 702 to service entry 514 of service table entry 423. Service gateway 110 calculates a hash value HValue 713 by applying HFunc 702 to service entry 514. Service gateway 110 compares HValue 713 to table index 430 and finds a match. Service gateway 110 adds an association with service entry 514 to service table entry 420 so that service table entry 420 is associated with both service entry 511 and service entry 514. In one embodiment, service gateway 110 stores a change marker 427 to service table entry 420 or sets the change marker 427 value to “TRUE”. In one embodiment, service gateway 110 selects service entry 514 by applying the hash function HFunc 702 to one or more service entries in service mapping table 412.


In one embodiment, service gateway 110 set a timer 117 for the activation of service entry 514. When timer 117 expires. Service gateway 110 removes the association with service entry 511 from service table entry 420. Service gateway 110 remove change marker 427 from service table entry 420 or changes the value of marker 427 to “FALSE”. Service table entry 420 maintains an association with service entry 514.


In one embodiment, service table entry 420 includes a pre-determined alternate association service entry 514. In one embodiment, service gateway 110 selects service entry 514 by retrieving the alternate association service entry 514 of service table entry 420 from storage or remotely over a data network.


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.

Claims
  • 1. A system for processing an uninterrupted service session comprising: a service gateway communicatively coupled to a host using a first network and to a plurality of servers using a second network, the service gateway processing a service session between the host and at least one of the plurality of servers, the service gateway including a processor coupled to a memory, the memory storing instructions executable by the processor to perform a method comprising:getting a first service entry, the first service entry including a service address and a first server address, the first service address including an address associated with the service gateway and a service identifier;storing the first service entry with an active status designation in a service table entry of a service mapping table, the service mapping table including a plurality of service table entries, the table entry associated with the service;starting a timer in response to storing the first service entry to calculate when a predetermined amount of time has elapsed;changing a status designation of a second service entry to an inactive status designation in response to the timer having calculated the predetermined amount of time has elapsed, the second service entry stored in the service table entry, the second service entry including the service address and a second server address;receiving a first data packet from the host, the first data packet including the service address;determining a first server address associated with the service address using the first service entry;modifying the first data packet, the modifying including replacing the service address with the first server address; andforwarding the modified first data packet to the first server address.
  • 2. The system of claim 1 wherein the method further comprises: receiving a second data packet from the host, the second data packet including the service address;determining a second server address associated with the service address;modifying the second data packet, the modifying including replacing the service address with the second server address; andforwarding the modified second data packet to the second server address.
  • 3. The system of claim 2 wherein the determining the second server address comprises: retrieving from the service mapping table the second service entry in the service table entry corresponding to the service address; andidentifying the second server address in the second service entry.
  • 4. The system of claim 2 wherein the service mapping table is indexed using a hash function and the index is stored in a table index, and wherein the determining the second server address comprises: applying the hash function to the service address to generate a hash value;retrieving from the service mapping table the second service entry in the service table entry corresponding to the service address using the hash value and the status designation of the second service entry; andidentifying the second server address in the second service entry.
  • 5. The system of claim 4 wherein the hash function is at least one of: a checksum function, a cyclic redundancy check (CRC) function, bit-wise AND operator, bit-wise OR operator, bit-wise NAND operator, bit-wise NOR operator, MD5 hash function, cryptographic hash function, Jenkins hash function, table lookup function, hash function performed by an application specific integrated circuit (ASIC), and hash function performed by a field programmable gate array (FPGA).
  • 6. The system of claim 1 wherein the determining the first server address comprises: retrieving from the service mapping table the first service entry in the service table entry corresponding to the service address; andidentifying the first server address in the first service entry.
  • 7. The system of claim 5 wherein the service table entry is indexed using a hash function and the index is stored in a table index, and wherein the determining the first server address comprises: applying the hash function to the service address to generate a hash value;retrieving from the service mapping table the first service entry in the service table entry corresponding to the service address using the hash value and the status designation of the first service entry; andidentifying the first server address in the first service entry.
  • 8. The system of claim 7 wherein the hash function is at least one of: a checksum function, a cyclic redundancy check (CRC) function, bit-wise AND operator, bit-wise OR operator, bit-wise NAND operator, bit-wise NOR operator, MD5 hash function, cryptographic hash function, Jenkins hash function, table lookup function, hash function performed by an application specific integrated circuit (ASIC), and hash function performed by a field programmable gate array (FPGA).
  • 9. The system of claim 1 wherein the service address includes at least one of: a destination Internet Protocol (IP) address, an application layer address, and a destination transport layer port number,the transport layer port number being at least one of a: transmission control protocol (TCP) port number and a user datagram protocol (UDP) port number, andthe service identifier identifying at least one of a: Hypertext Transport Protocol (HTTP) session, a secure HTTP session, a File Transfer Protocol (FTP) session, a file sharing protocol session; a Session Initiation Protocol (SIP) session, a web session, a video and/or audio streaming session, and a web conferencing session.
  • 10. A method for processing an uninterrupted service session by a service gateway communicatively coupled to a host using a first network and to a plurality of servers using a second network, the service gateway processing a service session between the host and at least one of the plurality of servers, the method comprising: getting a first service entry, the first service entry including a service address and a first server address, the first service address including an address associated with the service gateway and a service identifier;storing the first service entry with an active status designation in a service table entry of a service mapping table, the service mapping table including a plurality of service table entries, the table entry associated with the service;starting a timer in response to storing the first service entry to calculate when a predetermined amount of time has elapsed; changing a status designation of a second service entry to an inactive status designation in response to the timer having calculated the predetermined amount of time has elapsed, the second service entry stored in the service table entry, the second service entry including the service address and a second server address;receiving a first data packet from the host, the first data packet including the service address;determining a first server address associated with the service address using the first service entry;modifying the first data packet, the modifying including replacing the service address with the first server address; andforwarding the modified first data packet to the first server address.
  • 11. The method of claim 10 further comprising: receiving a second data packet from the host, the second data packet including the service address;determining a second server address associated with the service address;modifying the second data packet, the modifying including replacing the service address with the second server address; andforwarding the modified second data packet to the second server address.
  • 12. The method of claim 11 wherein the determining the second server address comprises: retrieving from the service mapping table the second service entry in the service table entry corresponding to the service address; andidentifying the second server address in the second service entry.
  • 13. The method of claim 11 wherein the service mapping table is indexed using a hash function and the index is stored in a table index, and wherein the determining the second server address comprises: applying the hash function to the service address to generate a hash value;retrieving from the service mapping table the second service entry in the service table entry corresponding to the service address using the hash value and the status designation of the second service entry; andidentifying the second server address in the second service entry.
  • 14. The method of claim 13 wherein the hash function is at least one of: a checksum function, a cyclic redundancy check (CRC) function, bit-wise AND operator, bit-wise OR operator, bit-wise NAND operator, bit-wise NOR operator, MD5 hash function, cryptographic hash function, Jenkins hash function, table lookup function, hash function performed by an application specific integrated circuit (ASIC), and hash function performed by a field programmable gate array (FPGA).
  • 15. The method of claim 10 wherein the determining the first server address comprises: retrieving from the service mapping table the first service entry in the service table entry corresponding to the service address; andidentifying the first server address in the first service entry.
  • 16. The method of claim 14 wherein the service table entry is indexed using a hash function and the index is stored in a table index, and wherein the determining the first server address comprises: applying the hash function to the service address to generate a hash value;retrieving from the service mapping table the first service entry in the service table entry corresponding to the service address using the hash value and the status designation of the first service entry; andidentifying the first server address in the first service entry.
  • 17. The method of claim 16 wherein the hash function is at least one of: a checksum function, a cyclic redundancy check (CRC) function, bit-wise AND operator, bit-wise OR operator, bit-wise NAND operator, bit-wise NOR operator, MD5 hash function, cryptographic hash function, Jenkins hash function, table lookup function, hash function performed by an application specific integrated circuit (ASIC), and hash function performed by a field programmable gate array (FPGA).
  • 18. The method of claim 10 wherein the service address includes at least one of: a destination Internet Protocol (IP) address, an application layer address, and a destination transport layer port number,the transport layer port number being at least one of a: transmission control protocol (TCP) port number and a user datagram protocol (UDP) port number, andthe service identifier identifying at least one of a: Hypertext Transport Protocol (HTTP) session, a secure HTTP session, a File Transfer Protocol (FTP) session, a file sharing protocol session; a Session Initiation Protocol (SIP) session, a web session, a video and/or audio streaming session, and a web conferencing session.
  • 19. A method for processing an uninterrupted service session by a service gateway communicatively coupled to a host using a first network and to a plurality of servers using a second network, the service gateway processing a service session between the host and at least one of the plurality of servers, the method comprising: receiving a first data packet from the host, the first data packet including a service address;applying a hash function to the service address to generate a hash value;retrieving from a service mapping table a first service entry in a service table entry corresponding to the service address using the hash value and a status designation of the first service entry, the service mapping table including a plurality of service table entries and being indexed using the hash function, the index being stored in a table index, the first service entry being stored in the service table entry and including the service address and a second server address, the service table entry being associated with a service;identifying the first server address in the first service entry;modifying the first data packet, the modifying including replacing the service address with the first server address;forwarding the modified first data packet to the first server address;getting a second service entry, the second service entry including the service address and a second server address, the second service address including an address associated with the service gateway and a service identifier;storing the second service entry with an active status designation in the service table entry of the service mapping table;starting a timer in response to storing the first service entry to calculate when a predetermined amount of time has elapsed;changing a status designation of the first service entry to an inactive status designation in response to the timer having calculated the predetermined amount of time has elapsed;receiving a second data packet from the host, the second data packet including the service address;retrieving from the service mapping table the second service entry in the service table entry corresponding to the service address using the hash value and the status designation of the second service entry;identifying the second server address in the second service entry;modifying the second data packet, the modifying including replacing the service address with the second server address; andforwarding the modified second data packet to the second server address.
CROSS REFERENCE TO RELATED APPLICATION

This non-provisional patent application claims the benefit of, and is a continuation of, U.S. patent application Ser. No. 13/337,030 titled “Methods to Manage Services over a Service Gateway,”filed Dec. 23, 2011, which is hereby incorporated by reference in its entirety including all references cited therein.

US Referenced Citations (454)
Number Name Date Kind
5218602 Grant et al. Jun 1993 A
5774660 Brendel 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 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 Jul 2003 B1
6600738 Alperovich et al. Jul 2003 B1
6658114 Farn et al. Dec 2003 B1
6667980 Modi Dec 2003 B1
6748414 Boumas 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
6836462 Albert Dec 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
7321926 Zhang Jan 2008 B1
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 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 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 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
9531846 Han et al. Dec 2016 B2
20010042200 Lamberton et al. Nov 2001 A1
20010049741 Skene et al. Dec 2001 A1
20010052024 Devarakonda 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 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
20030154306 Perry Aug 2003 A1
20030179775 Carolan Sep 2003 A1
20030195962 Kikuchi et al. Oct 2003 A1
20030210694 Jayaraman Nov 2003 A1
20040010545 Pandya Jan 2004 A1
20040062246 Boucher et al. Apr 2004 A1
20040073703 Boucher et al. Apr 2004 A1
20040078419 Ferrari 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 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
20040260745 Gage Dec 2004 A1
20040268358 Darling et al. Dec 2004 A1
20050005207 Herneque Jan 2005 A1
20050009520 Herrero et al. Jan 2005 A1
20050021725 Lobbert 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 Apr 2005 A1
20050102400 Nakahara May 2005 A1
20050125276 Rusu Jun 2005 A1
20050163073 Heller et al. 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
20060013227 Kannan Jan 2006 A1
20060023721 Miyake et al. Feb 2006 A1
20060029076 Namihira 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
20070076653 Park et al. Apr 2007 A1
20070086382 Narayanan et al. Apr 2007 A1
20070088822 Coile 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
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
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 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
20090328054 Paramasivam 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
20100061272 Veillette 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
20100138535 Jerrim Jun 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 Sep 2010 A1
20100235522 Chen et al. Sep 2010 A1
20100235880 Chen et al. Sep 2010 A1
20100238828 Russell Sep 2010 A1
20100265824 Chao 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 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 Feb 2011 A1
20110060831 Ishii et al. Mar 2011 A1
20110083174 Aldridge et al. Apr 2011 A1
20110093522 Chen et al. Apr 2011 A1
20110093586 Garcia-Luna-Aceves Apr 2011 A1
20110099403 Miyata et al. Apr 2011 A1
20110099623 Garrard et al. Apr 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 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
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 Chiong Sep 2014 A1
20140269728 Jalan et al. 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
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
20170048356 Thompson 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
JOURNAL392015 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 (18)
Entry
G. Goldszmidt, G. Hunt, IBM Research Report NetDispatcher: A TCP Connection Router, RC 20853 (May 19, 1997).
Mario Baldi; Fulvio Risso; Cascarano N.; Andrea Baldini Service-Based Traffic Classification: Principles and Validation. In: 2009 IEEE Sarnoff Symposium, Princeton, New Jersey, Jan. 3, 2009. pp. 1-6.
PCT/US2012/069026 Written Opinion of the International Searching Authority, dated Mar. 11, 2013.
“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.
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.
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, Kluwer 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.
Related Publications (1)
Number Date Country
20150296058 A1 Oct 2015 US
Continuations (1)
Number Date Country
Parent 13337030 Dec 2011 US
Child 14749072 US