1. Field
This invention relates generally to data communications, and more specifically, to a virtual service network.
2. Background
Service load balancers such as server load balancers or application delivery controllers typically balance load among a plurality of servers providing network services such as Web documents, voice calls, advertisements, enterprise applications, video services, gaming, or consuming broadband services. A service is used by many client computers. Some services are offered for few clients and some services are offered to many clients. Typically a service is handled by a service load balancer. When there are many clients utilizing the service at the same time, the service load balancer will handle the distribution of client service accesses among the servers. However, as the capacity of the service load balancer is reached, a network administrator cannot easily add a second service load balancer, since a service is typically assigned to an IP address of the service load balancer. Adding another service load balancer having the same IP address for the service is not possible in a data network. Network nodes in the data network would not be able to determine which service load balancer to send a client service access to.
The scaling of service demand has not been a problem in the past as computing capacity of service load balancer was able to keep up with client service demand. However, as mobile computing becomes pervasive and as more traditional non networking services such as television, gaming, and advertisement are migrating to data networks, the demand for client services has surpassed the pace of processing improvement. The need to scale to a plurality of service load balancers to support a network service is imminent.
The present invention describes a virtual service network wherein network nodes in the virtual service network are capable of processing client service sessions of a network service and forwarding the sessions to a plurality of service load balancers.
According to one embodiment of the present invention, a method for providing forwarding policies in a virtual service network, the virtual service network comprising a network node and a pool of service load balancers serving a virtual service associated with a virtual service network address, comprises: (a) receiving a virtual service session request from a client device by the network node, the virtual service session request comprising the virtual service network address for the virtual service served by the pool of service load balancers, wherein the network node comprises a plurality of packet forwarding policies, each packet forwarding policy comprising a virtual service network address associated with a destination; (b) comparing by the network node the virtual service network address in the virtual service session request with the virtual service network address in each packet forwarding policy; (c) in response to finding a match between the virtual service network address in the virtual service session request and a given virtual service network address in a given packet forwarding policy, determining the given destination in the given packet forwarding policy by the network node; and (d) sending the virtual service session request to a service load balancer in the pool of service load balancers associated with the given destination, wherein the service load balancer establishes a virtual service session with the client device.
In one aspect of the present invention, after the service load balancer establishes the virtual service session with the client device, the method further comprises: (e) receiving a virtual service request from the client device through the virtual service session by the network node, the virtual service request comprising the virtual service network address for the virtual service; (f) comparing by the network node the second virtual service network address in the virtual service request with the virtual service network address in each packet forwarding policy; (g) in response to finding a match between the virtual service network address in the virtual service request and a second given virtual service network address in a second given packet forwarding policy, determining a second given destination in the second given packet forwarding policy by the network node; and (h) sending the virtual service request to a second service load balancer associated with the second given destination by the network node.
In one aspect of the present invention, the method further comprises: (i) receiving a virtual service data packet from the client device through the virtual service session by the network node, the virtual service data packet comprising the virtual service network address for the virtual service; (j) comparing by the network node the virtual service network address in the virtual service data packet with the virtual service network address in each packet forwarding policy; (k) in response to finding a match between the virtual service network address in the virtual service data packet and a third given virtual service network address in a third given packet forwarding policy, determining a third given destination in the third given packet forwarding policy by the network node; and (l) sending the virtual service data packet to a third service load balancer associated with the third given destination by the network node.
In one aspect of the present invention, the service load balancer, the second service load balancer, and the third service load balancer are the same service load balancer.
In one aspect of the present invention, the method further comprises: (e) receiving a data packet of the virtual service session by the network node from the service load balancer over a data network, the data packet comprising a client network address of the client device; (f) retrieving the client network address from the data packet by the network node; and (g) sending the data packet to the client device using the client network address by the network node.
In one aspect of the present invention, the data packet comprises a virtual service session request response or a virtual service request response.
In one aspect of the present invention, the given destination comprises a second network node, wherein the sending (d) comprises: (d1) sending the virtual service session request to the second network node, wherein the second network node comprises a second plurality of packet forwarding policies, each of the second packet forwarding policies comprising a second virtual service network address associated with a second destination; (d2) comparing by the second network node the virtual service network address in the virtual service session request with the virtual service network address in each of the second packet forwarding policies; (d3) in response to finding a match between the virtual service network address in the virtual service session request and a second given virtual service network address in a second given packet forwarding policy, determining a second given destination in the second given packet forwarding policy by the second network node; and (d4) sending the virtual service session request to the service load balancer associated with the second given destination, wherein the service load balancer establishes a virtual service session with the client device.
In one aspect of the present invention, the determining (c) comprises: (c1) finding by the network node that the virtual service network address in the virtual service session request matches a first virtual service network address in a first packet forwarding policy and a second virtual network address in a second packet forwarding policy; (c2) selecting by the network node either the first packet forwarding policy or the second packet forwarding policy based on additional information comprised in the first and second packet forwarding policies; and (c3) determining the given destination in the selected packet forwarding policy by the network node.
In one aspect of the present invention, wherein the additional information comprises one or more of the following: a multi-path factor; and a traffic policy.
In one aspect of the present invention, the first packet forwarding policy comprises a first destination associated with a first service load balancer in the pool of service load balancers, and the second packet forwarding policy comprises a second destination associated with a second service load balancer in the pool of service load balancers, wherein the first service load balancer is different from the second service load balancer, wherein the determining (c3) comprises: (c3i) in response to selecting the first packet forwarding policy, determining the first destination associated with the first service load balancer in the first packet forwarding policy by the network node; and (c3ii) in response to selecting the second packet forwarding policy, determining the second destination in the second packet forwarding policy in the second packet forwarding policy by the network node.
In one aspect of the present invention, the network node comprises a first plurality of packet forwarding policies for a first virtual service and a second plurality of packet forwarding policies for a second virtual service, wherein the comparing (b) comprises: (b1) determining by the network node whether the virtual service session request is for the first virtual service or the second virtual service; (b2) in response to determining that the virtual service session request is for the first virtual service, comparing by the network node the virtual service network address in the virtual service session request with a virtual service network address in each of the first plurality of packet forwarding policies; and (b3) in response to determining that the virtual service session request is for the first virtual service, comparing by the network node the virtual service network address in the virtual service session request with a virtual service network address in each of the second plurality of packet forwarding policies.
In one aspect of the present invention, the virtual service session request further comprises a client network address of the client device, and each packet forwarding policy further comprises a client network address associated with the destination, wherein the comparing (b) and the determining (c) comprise: (b1) comparing by the network node the virtual service network address in the virtual service session request with the virtual service network address in each packet forwarding policy; (b2) comparing by the network node the client network address in the virtual service session request with the client network address in each packet forwarding policy; and (c1) in response to finding the match between the virtual service network address in the virtual service session request and the given virtual service network address in the given packet forwarding policy, and in response to finding a match between the client network address in the virtual service session request and the given client network address in the given packet forwarding policy, determining the given destination in the given packet forwarding policy by the network node.
System and computer program products corresponding to the above-summarized methods are also described and claimed herein.
According to another embodiment of the present invention, a method for providing forwarding policies in a virtual service network, the virtual service network comprising a network node and a pool of service load balancers serving a virtual service associated with a virtual service network address, comprising: (a) receiving a virtual service session request from a client device by the network node, the virtual service session request comprising a client device network address for the client device and the virtual service network address for the virtual service served by the pool of service load balancers, wherein the network node comprises a plurality of packet forwarding policies, each packet forwarding policy comprising a client network address and a virtual service network address associated with a destination; (b) comparing by the network node the virtual service network address in the virtual service session request with a first virtual service network address in a first packet forwarding policy of the plurality of packet forwarding policies, and comparing the client device network address in the virtual service session request with a first client network address in the first packet forwarding policy; (c) in response to determining that the virtual service network address in the virtual service session request matches the first virtual service network address, and determining that the client device network address in the virtual service session request does not match the first client network address, determining by the network node that the first packet forwarding policy does not apply to the virtual service session request; (d) in response to determining that the first packet forwarding policy does not apply, comparing by the network node the virtual service network address in the virtual service session request with a second virtual service network address in a second packet forwarding policy of the plurality of packet forwarding policies, and comparing the client device network address in the virtual service session request with a second client network address in the second packet forwarding policy; (e) in response to determining that the virtual service network address in the virtual service session request matches the second virtual service network address, and determining that the client device network address in the virtual service session request matches the second client network address, determining by the network node that the second packet forwarding policy applies to the virtual service session request; (f) in response to determining that the second packet forwarding policy applies, determining a given destination in the second packet forwarding policy by the network node; and (g) sending the virtual service session request to a service load balancer in the pool of service load balancers associated with the given destination, wherein the service load balancer establishes a virtual service session with the client device.
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 eh 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 one embodiment, virtual service network 510 is configured over a data network 500. In this embodiment, network node 562 and service load balancers 532-534 are a part of data network 500. In one embodiment, network node 562 connects directly to service load balancers 532-534 and forwards data packets directly to service load balancers 532-534. In one embodiment, network node 562 forwards data packets through one or more network elements (not shown) in data network 500.
In one embodiment, service load balancers 532-534 send data packets to network node 562 through data network 500, using one or more network elements in data network 500 if necessary.
In one embodiment, data network 500 includes an Internet Protocol (IP) network, a corporate data network, a regional corporate data network, an Internet service provider network, a residential data network, a wired network such as Ethernet, a wireless network such as a WiFi network, or a cellular network. In one embodiment, data network 500 resides in a data center, or connects to a network or application network cloud.
In one embodiment, network node 562 includes, in addition to that described later in this specification, the functionality of a network switch, an Ethernet switch, an IP router, an ATM switch, a stackable switch, a broadband remote access system (BRAS), a cable head-end, a mobile network gateway, a home agent gateway (HA-Gateway), a PDSN, a GGSN, a broadband gateway, a VPN gateway, a firewall, or a networking device capable of forwarding packets in data network 500.
In some embodiments, service load balancer 534 includes functionality of 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, a gateway to distribute load to one or more servers, or a gateway performing network address translation (NAT).
Service load balancer pool 530 connects to server pool 200, which in an embodiment includes a plurality of servers 212, 214, 216. Servers 212-216 of server pool 200 serves service 240. Service load balancers 532-534 of service load balancer pool 530 serves service 240 as virtual service 540.
In some embodiments, server 212 includes functionality of 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 media center, an app server or a network server providing a network or application service to client device 100 using a Web protocol.
In some embodiments, service 240 includes a Web service, a HTTP service, a FTP service, a file transfer service, a video or audio streaming service, an app download service, an advertisement service, an on-line game service, a document access service, a conferencing service, a file sharing service, a group collaboration service, a database access service, an on-line transaction service, a Web browsing service, a VOIP service, a notification service, a messaging service, or an Internet data communication service.
Each service load balancer, for example service load balancer 532, can exchange data packets to one or more servers in server pool 200.
Client device 100 is a computing device connecting to virtual service network 510. In one embodiment, in order to utilize service 240, client device 100 establishes a virtual service session 140 for virtual service 540 with service load balancer pool 530 through virtual service network 510. Service load balancer pool 530 establishes service session 340 with server pool 200 and relays data packets between virtual service session 140 and service session 340. In this embodiment, server pool 200 provides the service 240 to client device 100. In some embodiments, client device 100 is a personal computer, a laptop computer, a desktop computer, a smartphone, a feature phone, a tablet computer, an e-reader, an end-use networked device, a server computer, a service proxy computer, a service gateway, a business computer, a server computer, or a computer requesting service 240.
In one embodiment illustrated in
After establishing virtual service session 140, client device 100 sends a virtual service request 144 through virtual service session 140 to service load balancer 534. Service load balancer 534 determines that virtual service request 144 is to be relayed to server 212. Subsequently client device 100 exchanges virtual service data packet 146 with server 212 via service load balancer 534.
Network node 562 compares criteria 643 against virtual service session request 142. In one embodiment, network node 562 retrieves virtual service network address 541 from virtual service session request 142. In one embodiment, criteria 643 include virtual service network address 646. Network node 562 compares virtual service network address 541 with virtual service network address 646. In one embodiment, virtual service network address 646 includes virtual service network address 541 and network node 562 finds a match between virtual service network address 541 and virtual service network address 646. In response to finding a match between virtual service network address 541 and virtual service network address 646, the network node 562 applies the packet forwarding policy 641 to the virtual service session request 142 by informing the network module 670 to transmit the virtual service session request 142 using the network interface 674 indicated by destination 645.
In one embodiment, virtual service network address 646 includes a transport layer address such as TCP port number, UDP port number or other transport layer information. Network node 562 retrieves transport layer address from virtual service network address 541 and compares with virtual service network address 646. In one embodiment, network node 562 finds a match of the transport layer addresses, network node 562 determines that packet forwarding policy 641 is to be applied to virtual service session request 142. In one embodiment, virtual service network address 646 includes a range of network addresses. In finding that virtual service network address 541 is included in the range of network addresses, network node 562 determines there is a match. In one embodiment, virtual service network address 646 includes a range of transport layer addresses. In finding that transport layer address of virtual service network address 541 is included in the range of transport layer addresses, network node 562 determines there is a match.
In one embodiment, criteria 643 include client network address 647. Network node 562 obtains client device network address 101 from virtual service session request 142 and compares client network address 647 with client device network address 101. If there is a match, network node 562 determines packet forwarding policy 641 is applicable. In one embodiment, client network address 647 includes a range of network addresses. In finding that client device network address 101 is included in the range of network addresses, network node 562 determines there is a match.
In one embodiment, network node 562 further includes another packet forwarding policy 651. Packet forwarding policy 651 includes criteria 652, which includes a client network address 653 different from client network address 647 and the same virtual service network address 646 as packet forwarding policy 641. Network node 562 obtains virtual service network address 541 and client device network address 101 from virtual service session request 142. In one embodiment, network node 562 first determines whether packet forwarding policy 651 applies to virtual service session request 142. Network node 562 compares client network address 653 in packet forwarding policy 651 with client device network address 101, and compares virtual service network address 646 in packet forwarding policy 651 with virtual service network address 541. In response to determining that there is no match between the client network address 653 and client device network address 101, the network node 562 determines that packet forwarding policy 651 does not apply. In one embodiment client network address 653 includes a range of network addresses. In finding that client device network address 101 is not included in the range of network addresses, network node 562 determines there is no match.
Network node 562 then determines whether a different packet forwarding policy applies. In one embodiment, after determining that packet forwarding policy 651 does not apply, network node 562 determines whether packet forwarding policy 641 applies. Network node compares client network address 647 in packet forwarding policy 641 with client device network address 101, and compares virtual service network address 646 in packet forwarding policy 641 with virtual service network address 541. In response to finding a match between client network address 647 and client network address 101 and a match between the virtual service network address 646 and virtual service network address 541, network node 562 determines packet forwarding policy 641 is applicable.
Upon receiving virtual service session request 142, service load balancer 534 processes the virtual service session request 142 and replies with a virtual service session request response 143, comprising one or more data packets to be transmitted to client device 100. A process to send data packet 143 will be discussed in a later illustration.
In one embodiment, destination 645 includes a modification procedure prior to transmission. Network node 562 applies the modification procedure in destination 645 prior to informing network interface 674. In one embodiment, destination 645 indicates a IP tunneling modification, a VLAN modification, a MPLS modification, a L2TP tunnel, a IP-in-IP tunnel, a IPv6-v4 tunnel modification, a IPSec modification, a packet header modification, a packet payload modification, or other modification procedure related to network interface 674.
Service load balancer 534 receives and processes virtual service request 144. Service load balancer 534 selects server 212 to service virtual service request 144 and sends the virtual service request 144 to the server 212. The selection of server 212 is known to those skilled in the art. Any and all such selection process is considered as a part of an embodiment of the present invention and is not described in this specification. Server 212 responds to the virtual service request 144 with a service request response 245 and sends the service request response 245 to service load balancer 534. Service load balancer 534 creates virtual service request response 544 and sends virtual service request response 544 to client device 100. An embodiment to send virtual service request 544 from service load balancer 534 to client device 100 will be described in a later illustration in this specification.
Network node 562 retrieves destination client device network address 101 from data packet 147, and determines that data packet 147 is to be sent to client device 100, based on the retrieved client device network address 101.
In one embodiment illustrated in
Network node 562 matches criteria 683 against data packet 148. In one embodiment, network node 562 retrieves virtual service network address 541 from data packet 148. In one embodiment, criteria 683 include virtual service network address 686. Network node 562 matches virtual service network address 541 with virtual service network address 686. In one embodiment, virtual service network address 686 includes virtual service network address 541 and network node 562 finds a match between virtual service network address 541 and virtual service network address 686.
In one embodiment, virtual service network address 686 includes a transport layer address such as TCP port number, UDP port number or other transport layer information. Network node 562 retrieves transport layer address from data packet 148 and compares the transport layer address with virtual service network address 686. In one embodiment, network node 562 finds a match of the transport layer addresses, network node 562 determines that packet forwarding policy 681 is to be applied to data packet 148. In one embodiment, virtual service network address 686 includes a range of network addresses. In finding that virtual service network address 541 is included in the range of network addresses, network node 562 determines there is a match. In one embodiment, virtual service network address 686 includes a range transport layer addresses. In finding that the transport layer address of data packet 148 is included in the range of transport layer addresses, network node 562 determines there is a match.
In one embodiment, criteria 683 include client network address 687. Network node 562 obtains client device network address 101 from data packet 148 and compares client network address 687 with client device network address 101. If there is a match, network node 562 determines packet forwarding policy 681 is applicable. In one embodiment, client network address 687 includes a range of network addresses. In finding that client device network address 101 is included in the range of network addresses, network node 562 determines there is a match.
In one embodiment, destination 685 indicates a modification process prior to transmission. Network node 562 applies the modification in destination 685 prior to informing network interface 674. In one embodiment, destination 645 indicates an IP tunneling modification, a VLAN modification, a MPLS modification, a L2TP tunnel, a IP-in-IP tunnel, a IPv6-v4 tunnel modification, a IPSec modification, a packet header modification, a packet payload modification, a layer 2 over layer 2 tunnel modification, a layer 3 over layer 2 tunnel modification, a layer 3 over layer 3 tunnel modification, or other modification related to network interface 674.
In one embodiment, network configuration module 821 receives packet forwarding policy 641 from administrator 120, and stores packet forwarding policy 641 into storage 823.
In one embodiment, network configuration module 821 connects to service load balancer 534 and detects a change to service load balancer 534, and in response, network configuration module 821 generates packet forwarding policy 641. In one embodiment, a change can be due to a change to virtual service 540 of service load balancer 534, or availability of service load balancer 534. In one embodiment, service load balancer 534 sends packet forwarding policy 641 to network configuration module 821.
In one embodiment, network configuration module 821 connects to network node 564 and detects a change to network node 564, and in response, network configuration module 821 generates packet forwarding policy 641.
In one embodiment, network configuration module 821 connects to virtual service network 510 and data network 500. Network configuration module 821 detects a change to virtual service network 510 or data network 500. In response, network configuration module 821 generates packet forwarding policy 641.
In one embodiment, network configuration module 821 detects a change in network node 562 and generates packet forwarding policy 641.
In one embodiment, network configuration module 821 instructs network node 562 to remove packet forwarding policy 641. In one embodiment, network configuration module 821 detects a change in network node 564, service load balancer 534, data network 500, virtual service network 510, or network node 562 and determines packet forwarding policy 641 is to be removed. In one embodiment, network configuration module 821 removes packet forwarding policy 641 from storage 823.
In one embodiment, network configuration module 821 receives a command from administrator 120 to remove packet forwarding policy 641. In one embodiment, network configuration module 821 receives a command from service load balancer 534 to remove packet forwarding policy 641.
In one embodiment, network node 562 receives data packet 148 from client device 100 and matches information in data packet 148 with criteria 643. Network node 562 finds both packet forwarding policy 641 and packet forwarding policy 642 applicable. Network node 562 selects packet forwarding policy 641 based on additional information. In one embodiment, packet forwarding policy 641 includes multi-path factor 648 while packet forwarding policy 642 includes multi-path factor 649. Network node 562 selects packet forwarding policy 641 based on multi-path factor 648 and traffic policy 659. In one embodiment, multi-path factor 648 indicates a primary path while multi-path factor 649 indicates a secondary path. Network node 562 selects packet forwarding policy 641. In one embodiment, multi-path factor 648 includes a status indicating if service load balancer 532 is available. If multi-path factor 648 status indicates service load balancer 532 is available and multi-path factor 649 status indicates service load balancer 534 is not available, network node 562 selects packet forwarding policy 641.
In one embodiment, packet forwarding policy 641 includes traffic policy 659 such as traffic shaping, traffic management, quality of service, bandwidth management, packet access control or queuing parameters. Network node 562 applies traffic policy 659 or instructs network module 670 to apply traffic policy 659.
In an embodiment illustrated in
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.
Number | Name | Date | Kind |
---|---|---|---|
5218602 | Grant et al. | Jun 1993 | A |
5774660 | Brendel et al. | Jun 1998 | A |
5935207 | Logue et al. | Aug 1999 | A |
5958053 | Denker | Sep 1999 | A |
6003069 | Cavill | Dec 1999 | A |
6047268 | Bartoli et al. | Apr 2000 | A |
6219706 | Fan et al. | Apr 2001 | B1 |
6321338 | Porras et al. | Nov 2001 | B1 |
6374300 | Masters | Apr 2002 | B2 |
6587866 | Modi et al. | Jul 2003 | B1 |
6748414 | Bournas | Jun 2004 | B1 |
6772334 | Glawitsch | Aug 2004 | B1 |
6779033 | Watson et al. | Aug 2004 | B1 |
7010605 | Dharmarajan | 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 |
7181524 | Lele | Feb 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 |
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 | Dec 2008 | B1 |
7467202 | Savchuk | Dec 2008 | B2 |
7472190 | Robinson | Dec 2008 | 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 |
7590736 | Hydrie et al. | Sep 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 | Apr 2010 | B1 |
7707295 | Szeto et al. | Apr 2010 | B1 |
7711790 | Barrett et al. | May 2010 | B1 |
7747748 | Allen | Jun 2010 | B2 |
7792113 | Foschiano et al. | Sep 2010 | B1 |
7826487 | Mukerji et al. | Nov 2010 | B1 |
7881215 | Daigle et al. | Feb 2011 | B1 |
7970934 | Patel | Jun 2011 | B1 |
7990847 | Leroy et al. | Aug 2011 | B1 |
7991859 | Miller et al. | Aug 2011 | B1 |
8019870 | Eppstein | Sep 2011 | B1 |
8032634 | Eppstein | Oct 2011 | B1 |
8090866 | Bashyam et al. | Jan 2012 | B1 |
8122116 | Matsunaga et al. | Feb 2012 | B2 |
8179809 | Eppstein | May 2012 | B1 |
8185651 | Moran et al. | May 2012 | B2 |
8191106 | Choyi et al. | May 2012 | B2 |
8224971 | Miller et al. | Jul 2012 | B1 |
8296434 | Miller et al. | Oct 2012 | B1 |
8312507 | Chen et al. | Nov 2012 | B2 |
8379515 | Mukerji | Feb 2013 | B1 |
8554929 | Szeto et al. | Oct 2013 | B1 |
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 |
8681610 | Mukerji | Mar 2014 | B1 |
8782221 | Han | Jul 2014 | B2 |
8813180 | Chen et al. | Aug 2014 | B1 |
8826372 | Chen et al. | Sep 2014 | B1 |
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 |
9154584 | Han | Oct 2015 | B1 |
20010049741 | Skene et al. | Dec 2001 | A1 |
20020032777 | Kawata 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 | Sep 2002 | A1 |
20020138618 | Szabo | Sep 2002 | A1 |
20020143991 | Chow et al. | Oct 2002 | A1 |
20020178259 | Doyle et al. | Nov 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 | Jan 2003 | A1 |
20030023873 | Ben-Itzhak | Jan 2003 | A1 |
20030035409 | Wang et al. | Feb 2003 | A1 |
20030035420 | Niu | Feb 2003 | A1 |
20030131245 | Linderman | Jul 2003 | A1 |
20030135625 | Fontes et al. | Jul 2003 | A1 |
20030195962 | Kikuchi et al. | Oct 2003 | 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 |
20040111516 | Cain | Jun 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 | Oct 2004 | A1 |
20040210663 | Phillips et al. | Oct 2004 | A1 |
20040213158 | Collett et al. | Oct 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 |
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 |
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 |
20060023721 | Miyake et al. | Feb 2006 | A1 |
20060036610 | Wang | Feb 2006 | A1 |
20060036733 | Fujimoto et al. | Feb 2006 | A1 |
20060069774 | Chen et al. | Mar 2006 | A1 |
20060069804 | Miyake et al. | Mar 2006 | A1 |
20060077926 | Rune | Apr 2006 | A1 |
20060092950 | Arregoces | May 2006 | A1 |
20060098645 | Walkin | May 2006 | A1 |
20060168319 | Trossen | Jul 2006 | A1 |
20060187901 | Cortes et al. | Aug 2006 | A1 |
20060190997 | Mahajani et al. | Aug 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 |
20070094396 | Takano | Apr 2007 | A1 |
20070118881 | Mitchell et al. | May 2007 | A1 |
20070156919 | Potti et al. | Jul 2007 | A1 |
20070185998 | Touitou et al. | Aug 2007 | A1 |
20070195792 | Chen et al. | Aug 2007 | A1 |
20070230337 | Igarashi et al. | Oct 2007 | A1 |
20070245090 | King et al. | 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 |
20080031263 | Ervin et al. | Feb 2008 | A1 |
20080101396 | Miyata | May 2008 | A1 |
20080109452 | Patterson | May 2008 | A1 |
20080109870 | Sherlock et al. | May 2008 | A1 |
20080134332 | Keohane et al. | Jun 2008 | A1 |
20080228781 | Chen et al. | Sep 2008 | A1 |
20080250099 | Shen et al. | Oct 2008 | A1 |
20080271130 | Ramamoorthy | Oct 2008 | A1 |
20080291911 | Lee et al. | Nov 2008 | 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 |
20090228547 | Miyaoka et al. | Sep 2009 | A1 |
20100008229 | Bi et al. | Jan 2010 | A1 |
20100036952 | Hazlewood 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 |
20100083076 | Ushiyama | Apr 2010 | A1 |
20100094985 | Abu-Samaha et al. | Apr 2010 | A1 |
20100106833 | Banerjee et al. | Apr 2010 | A1 |
20100106854 | Kim et al. | Apr 2010 | A1 |
20100162378 | Jayawardena et al. | Jun 2010 | A1 |
20100210265 | Borzsei et al. | Aug 2010 | A1 |
20100217793 | Preiss | 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 |
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 |
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 |
20110093522 | Chen et al. | Apr 2011 | A1 |
20110110294 | Valluri et al. | May 2011 | A1 |
20110145324 | Reinart et al. | Jun 2011 | A1 |
20110153834 | Bharrat | Jun 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 |
20110302256 | Sureshehandra et al. | Dec 2011 | A1 |
20110307541 | Walsh et al. | Dec 2011 | A1 |
20120023231 | Ueno | Jan 2012 | A1 |
20120030341 | Jensen et al. | Feb 2012 | A1 |
20120066371 | Patel | Mar 2012 | A1 |
20120084419 | Kannan et al. | Apr 2012 | A1 |
20120084460 | McGinnity et al. | Apr 2012 | A1 |
20120117571 | Davis | May 2012 | A1 |
20120144014 | Natham | 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 |
20120191839 | Maynard | Jul 2012 | A1 |
20120239792 | Banerjee | Sep 2012 | A1 |
20120240185 | Kapoor et al. | Sep 2012 | A1 |
20120290727 | Tivig | Nov 2012 | A1 |
20120297046 | Raja et al. | Nov 2012 | A1 |
20130046876 | Narayana et al. | Feb 2013 | A1 |
20130074177 | Varadhan et al. | Mar 2013 | A1 |
20130083725 | Mallya et al. | Apr 2013 | A1 |
20130100958 | Jalan et al. | Apr 2013 | A1 |
20130136139 | Zheng et al. | May 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 |
20130282791 | Kruglick | Oct 2013 | A1 |
20140012972 | Han | Jan 2014 | A1 |
20140089500 | Sankar et al. | Mar 2014 | A1 |
20140169168 | Jalan et al. | Jun 2014 | A1 |
20140207845 | Han et al. | Jul 2014 | A1 |
20140258536 | Chiong | Sep 2014 | A1 |
20140269728 | Jalan et al. | Sep 2014 | A1 |
20140330982 | Jalan et al. | Nov 2014 | A1 |
20140359052 | Joachimpillai et al. | Dec 2014 | A1 |
20150039671 | Jalan et al. | Feb 2015 | A1 |
20150156223 | Xu et al. | Jun 2015 | A1 |
20150281087 | Jalan et al. | Oct 2015 | A1 |
20150281104 | Golshan et al. | Oct 2015 | A1 |
20150296058 | Jalan et al. | Oct 2015 | A1 |
Number | Date | Country |
---|---|---|
1372662 | Oct 2002 | CN |
1449618 | Oct 2003 | CN |
1529460 | Sep 2004 | CN |
1575582 | Feb 2005 | CN |
1725702 | Jan 2006 | CN |
101004740 | Jul 2007 | CN |
101094225 | Dec 2007 | CN |
101189598 | May 2008 | CN |
101247349 | Aug 2008 | CN |
101261644 | Sep 2008 | 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 |
1209876 | May 2002 | EP |
1770915 | Apr 2007 | EP |
1885096 | Feb 2008 | 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 |
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 |
392015 | Sep 2015 | IN |
H09-097233 | Apr 1997 | JP |
H11-338836 | Oct 1999 | JP |
2000276432 | Oct 2000 | JP |
2000307634 | Nov 2000 | JP |
2001051859 | Feb 2001 | JP |
2006332825 | Dec 2006 | JP |
2008040718 | Feb 2008 | JP |
2013528330 | May 2011 | JP |
2014-143686 | Aug 2014 | JP |
2015507380 | Mar 2015 | JP |
10-0830413 | May 2008 | KR |
1020120117461 | Aug 2013 | KR |
0113228 | Feb 2001 | WO |
0114990 | Mar 2001 | WO |
WO0145349 | Jun 2001 | WO |
03103237 | Dec 2003 | WO |
WO2004084085 | Sep 2004 | WO |
2008053954 | May 2008 | WO |
2011049770 | Apr 2011 | WO |
WO2011079381 | Jul 2011 | WO |
2011149796 | Dec 2011 | WO |
2012050747 | Apr 2012 | WO |
2012075237 | Jun 2012 | WO |
2013070391 | May 2013 | WO |
2013081952 | Jun 2013 | WO |
2013096019 | Jun 2013 | WO |
2013112492 | Aug 2013 | WO |
2014052099 | Apr 2014 | WO |
2014088741 | Jun 2014 | WO |
2014093829 | Jun 2014 | WO |
2014138483 | Sep 2014 | WO |
2014144837 | Sep 2014 | WO |
WO 2014179753 | Nov 2014 | WO |
WO2015153020 | Oct 2015 | WO |
Entry |
---|
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. |
Cardellini et al., “Dynamic Load Balancing on Web-server Systems”, IEEE Internet Computing, vol. 3, No. 3, pp. 28-39, May-Jun. 1999. |
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. |
Number | Date | Country | |
---|---|---|---|
20140164617 A1 | Jun 2014 | US |