Forwarding policies on a virtual service network

Information

  • Patent Grant
  • 10341427
  • Patent Number
    10,341,427
  • Date Filed
    Thursday, December 29, 2016
    8 years ago
  • Date Issued
    Tuesday, July 2, 2019
    6 years ago
Abstract
In providing packet forwarding policies in a virtual service network that includes a network node and a pool of service load balancers serving a virtual service, the network node: receives a virtual service session request from a client device, the request including a virtual service network address for the virtual service; compares the virtual service network address in the request with the virtual service network address in each at least one packet forwarding policy; in response to finding a match between the virtual service network address in the request and a given virtual service network address in a given packet forwarding policy, determines the given destination in the given packet forwarding policy; and sends the request to a service load balancer in the pool of service load balancers associated with the given destination, where the service load balancer establishes a virtual service session with the client device.
Description
BACKGROUND OF THE INVENTION
Field

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


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.


BRIEF SUMMARY OF THE INVENTION

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: 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 at least one packet forwarding policy, each packet forwarding policy comprising a virtual service network address associated with a destination; 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; 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 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: 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; 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; 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 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: 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; 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; 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 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: 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; retrieving the client network address from the data packet by the network node; and 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 the virtual service session request to a service load balancer in the pool of service load balancers associated with the given destination comprises: sending the virtual service session request to the second network node, wherein the second network node comprises a second at least one packet forwarding policy, each of the second at least one packet forwarding policies comprising a second virtual service network address associated with a second destination; 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 at least one packet forwarding policies; 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 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 the given destination in the given packet forwarding policy by the network node comprises: 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 service network address in a second packet forwarding policy; 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 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 the given destination in the selected packet forwarding policy by the network node comprises: 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 in response to selecting the second packet forwarding policy, determining the second destination associated with the second service load balancer in the second packet forwarding policy by the network node.


In one aspect of the present invention, the network node comprises a first at least one packet forwarding policy for a first virtual service and a second at least one packet forwarding policy for a second virtual service, wherein the 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 comprises: determining by the network node whether the virtual service session request is for the first virtual service or the second virtual service; 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 packet forwarding policies; and 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 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 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 and the determining the given destination in the given packet forwarding policy by the network node comprise: 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; 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 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: 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 at least one packet forwarding policy comprising a client network address and a virtual service network address associated with a destination; 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 at least one 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; 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; 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 at least one 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; 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; 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 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.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 illustrates a virtual service network for a service according to an embodiment of the present invention.



FIG. 2A illustrates a component view of network node according to an embodiment of the present invention.



FIG. 2B illustrates a component view of service load balancer according to an embodiment of the present invention.



FIG. 2C illustrates a component view of server according to an embodiment of the present invention.



FIG. 3A illustrates a virtual service session according to an embodiment of the present invention.



FIG. 3B illustrates processing of a virtual service session request according to an embodiment of the present invention.



FIG. 3C illustrates processing of a virtual service request according to an embodiment of the present invention.



FIG. 3D illustrates processing of a virtual service data packet according to an embodiment of the present invention.



FIG. 4 illustrates processing of a data packet from service load balancer to client device according to an embodiment of the present invention.



FIG. 5A illustrates a via network node according to an embodiment of the present invention.



FIG. 5B illustrates forwarding a virtual service data packet to a via network node according to an embodiment of the present invention.



FIG. 6 illustrates a network node configuration according to an embodiment of the present invention.



FIG. 7 illustrates packet forwarding policies with other information according to an embodiment of the present invention.



FIG. 8 illustrates a virtual service network supporting multiple services according to an embodiment of the present invention.





DETAILED DESCRIPTION OF THE INVENTION

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.



FIG. 1 illustrates a virtual service network for a service according to an embodiment of the present invention. Virtual service network 510 includes a network node 562 and a service load balancer pool 530, which includes, in one embodiment, a plurality of service load balancers 532, 534. Network node 562 and service load balancer pool 530 are connected in virtual service network 510 such that network node 562 can forward packets to service load balancers 532-534 and vice versa.


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 serve service 240. Service load balancers 532-534 of service load balancer pool 530 serve 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.



FIGS. 2A-2C illustrate components of network node 562, service load balancer 534, and server 212 according to an embodiment of the present invention.


In one embodiment illustrated in FIG. 2A, network node 562 includes processor module 630, packet processing module 650, and network module 670. In one embodiment, processor module 630 includes one or more processors and a computer readable medium storing programming instructions. In one embodiment, processor module 630 includes storage such as random accessible memory (RAM). In one embodiment, packet processing module 650 includes a processor or a network processor capable of processing data packets. In one embodiment, packet processing module 650 is part of processor module 630. In one embodiment, packet processing module 650 is a physical card or module housing a network processor. In one embodiment packet processing module 650 includes storage such as random access memory (RAM), context addressable memory (CAM), tertiary CAM (TCAM), static random access memory (SRAM) or other memory component. In one embodiment, packet processing module 650 includes a plurality of programming instructions. In one embodiment, network module 670 interacts with data network 500 and virtual service network 510 to transmit and receive data packets. In one embodiment, network module 670 includes a plurality of network interfaces such as network interface 671, network interface 672, and network interface 674. Each of the network interfaces connect to another network component. For example, in one embodiment, network interface 671 connects to client device 100; network interface 672 connects to service load balancer 532; and network interface 674 connects to service load balancer 534. In one embodiment, network interface 671 connects to client device 100 and service load balancer pool 530. In one embodiment, network interface 671 is an Ethernet, Gigabit Ethernet, 10-Gigabit Ethernet, ATM, MPLS, wireless network, or optical network interface.



FIG. 2B illustrates a service load balancer such as service load balancer 534 according to an embodiment of the present invention. In one embodiment, service load balancer 534 includes processor module 734, virtual service processing module 754 and network module 774. Network module 774 interacts with data network 500 and virtual service network 510 to transmit and receive data packets. In one embodiment, network module 774 exchanges data packets with network node 562 and server pool 200. Network module 774 includes a network interface card or network interface module connecting to data network 500 and virtual service network 510. In one embodiment, processor module 734 includes a processor and computer readable medium storing programming instructions. In one embodiment, virtual service processing module 754 includes a physical hardware comprising a processor or a network processor, a memory module such as RAM. In one embodiment, virtual service processing module 754 is included in processor module 734. In one embodiment, virtual service processing module 754 includes storage storing programming instructions.



FIG. 2C illustrates a server, such as server 212, according to an embodiment of the present invention. In one embodiment, server 212 includes processor module 832, service processing module 852 and network module 872. Network module 872 interacts with virtual service network 510 to transmit or receive data packets. In one embodiment, network module 872 exchanges data packets with service load balancer pool 530. Network module 872 includes a network interface card or network interface module connecting to data network 500 or virtual service network 510. In one embodiment, processor module 832 includes a processor and computer readable medium storing programming instructions. In one embodiment, service processing module 852 includes a physical hardware comprising a processor or a network processor, a memory module such as RAM. In one embodiment, service processing module 852 is included in processor module 832. In one embodiment, service processing module 852 includes storage storing programming instructions executed by server 212.



FIG. 3A illustrates a session between a client device and a server according to an embodiment of the present invention. In one embodiment, client device 100 uses service 240 by conducting virtual service session 140 using virtual service 540. In one embodiment, virtual service session 140 is a IP session, a UDP session, a TCP session, a SIP session, an ICMP session, a GRE session, a RTSP session, an SSL session, a HTTPS session, or a HTTP session. In one embodiment, virtual service 540 includes a virtual service network address 541, such as an IP network address. In one embodiment, the virtual service network address 541 is shared among the service load balancers in the service load balancer pool 530. In one embodiment, virtual service network address 541 includes a transport layer identity such as a port number, a TCP port, a UDP port. In one embodiment, client device 100 sends a virtual service session request 142, such as a TCP session request data packet, to network node 562. Virtual service session request 142 includes virtual service network address 541. In one embodiment, network node 562 determines that virtual service session request 142 is to be sent to service load balancer 534, based on virtual service network address 541. Service load balancer 534 establishes virtual service session 140 with client device 100.


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.



FIG. 3B illustrates processing of virtual service session request 142 according to an embodiment of the present invention. Client device 100 sends virtual service session request 142 to network node 562. In one embodiment, virtual service session request 142 data packet includes virtual service network address 541, and client network address 101 (also referred to herein as client device network address). In one embodiment, client network address 101 includes an IP address of client device 100, and optionally a transport layer address. Network node 562 selects service load balancer 534, based on a packet forwarding policy 641, and forwards virtual service session request 142 to service load balancer 534. Packet forwarding policy 641 includes criteria 643 and destination 645. Criteria 643 contain matching information for network node 562 to match against virtual service session request 142. Destination 645 includes information to transmit virtual service session request 142. In one embodiment, destination 645 indicates using network interface 674 to transmit virtual service session request 142. Network node 562 informs network module 670 to transmit virtual service session request 142 using network interface 674. In one embodiment, network interface 674 directly connects to service load balancer 534 and service load balancer 534 receives virtual service session request 142. In one embodiment, network interface 674 connects to service load balancer 534 via data network 500 and service load balancer 534 receives virtual service session request 142 via data network 500.


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 an IP tunneling modification, a VLAN modification, a MPLS modification, a L2TP tunnel, an IP-in-IP tunnel, an IPv6-v4 tunnel modification, an IPsec modification, a packet header modification, a packet payload modification, or other modification procedure related to network interface 674.



FIG. 3C illustrates processing of virtual service request 144 according to an embodiment of the present invention. Client device 100 sends virtual service request 144 data packet to network node 562, where the virtual service request 144 includes a virtual service network address 541. In one embodiment, network node 562 processes virtual service request 144 using a similar process illustrated in FIG. 3B, matching the criteria from packet forwarding policy 641 with virtual service request 144 having virtual service network address 541. Network node 562 sends virtual service request 144 to service load balancer 534 according to the application of the matching packet forwarding policy 641.


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 145 and sends the virtual service request response 145 to client device 100. An embodiment to send virtual service request response 145 from service load balancer 534 to client device 100 will be described in a later illustration in this specification.



FIG. 3D illustrates processing of virtual service data packet 146 according to an embodiment of the present invention. Client device 100 sends virtual service data packet 146 to network node 562, where the virtual service data packet 146 includes a virtual service network address 541. In one embodiment, network node 562 processes virtual service data packet 146 in a similar process illustrated in FIG. 3B, matching the criteria from packet forwarding policy 641 with virtual service data packet 146 having virtual service network address 541. Network node 562 sends virtual service data packet 146 to service load balancer 534. Service load balancer 534 generates service packet 546 using virtual service data packet 146, and sends service packet 546 to server 212. The process of generating service packet 546 using virtual service data packet 146 is known to those skilled in the art and is not described in this specification.



FIG. 4 illustrates a process to forward a data packet from service load balancer 534 to client device 100 according to an embodiment of the present invention. In one embodiment, service load balancer 534 sends a data packet 147 of virtual service session 140 to network node 562. In one embodiment, data packet 147 may be virtual service session request response 143 or virtual service request response 145. Data packet 147 includes client device network address 101 of client device 100 as a destination for data packet 147. Service load balancer 534 sends data packet 147 through data network 500 to network node 562, and network node 562 receives data packet 147 from data network 500. In one embodiment, data packet 147 traverses through virtual service network 510 before it is received by network node 562.


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 FIG. 5A, virtual service network 510 includes a network node 564 connected with network node 562 and service load balancer 534. Network node 562 connects to client device 100. Network node 562 receives virtual service data packet 148 of virtual service session 140 from client device 100. Network node 562 selects network node 564 to receive virtual service data packet 148 from network node 562. FIG. 5B illustrates a process for network node 562 to select network node 564 according to an embodiment of the present invention. Network node 564 receives and processes virtual service data packet 148. Network node 564 sends virtual service data packet 148 to service load balancer 534 according to an embodiment process illustrated in FIGS. 3A-3D.



FIG. 5B illustrates a process of network node 562 to send a virtual service data packet 148 from client device 100 to network node 564 according to an embodiment of the present invention. Client device 100 sends virtual service data packet 148 to network node 562. In one embodiment, data packet 148 includes virtual service network address 541, and client network address 101. Network node 562 selects network node 564, based on a packet forwarding policy 681, and forwards data packet 148 to network node 564. Packet forwarding policy 681 includes criteria 683 and destination 685. Criteria 683 contain matching information for network node 562 to compare against data packet 148. Destination 685 indicates information to transmit data packet 148. In one embodiment, destination 685 indicates network interface 674 is to be used to transmit data packet 148. Network node 562 informs network module 670 to transmit data packet 148 using network interface 674. In one embodiment, network interface 674 directly connects to network node 564 and network node 564 receives data packet 148. In one embodiment, network interface 674 connects to network node 564 via data network 500 and network node 564 receives data packet 148 via data network 500.


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.



FIG. 6 illustrates a process to configure a network node with a packet forwarding policy according to an embodiment of the present invention. Network configuration module 821 includes packet forwarding policy 641 which contains a policy to forward a data packet to service load balancer 534 or network node 564. Network configuration module 821 sends packet forwarding policy 641 to network node 562. In one embodiment, network configuration module 821 is a network management system. In one embodiment, network configuration module 821 is a software module within a service load balancer, such as service load balancer 534. In one embodiment, network configuration module 821 is an administrative computing device, wherein a network administrative user provides packet forwarding policy 641 to network configuration module 821. In one embodiment, network configuration module 821 connects to storage 823 wherein storage 823 includes packet forwarding policy 641. Network configuration module 821 retrieves packet forwarding policy 641 and sends to network node 562. In one embodiment, storage 823 includes other packet forwarding policies.


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.



FIG. 7 illustrates several embodiments of different packet forwarding policies according to an embodiment of the present invention. In FIG. 7, network node 562 includes packet forwarding policy 641 and packet forwarding policy 642. Packet forwarding policy 641 and packet forwarding policy 642 include the same criteria 643. Packet forwarding policy 641 includes destination 645 that is different from destination 655 in packet forwarding policy 642. In one embodiment, destination 645 is for service load balancer 532 or a network node (not shown), whereas destination 655 is for service load balancer 534, which is different from service load balancer 532.


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 multi-path factor 649. 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 FIG. 8, server pool 200 serves service 240 and service 250. In this embodiment, service load balancer pool 530 provides virtual services 540 and 550 corresponding to service 240 and service 250 respectively. Network node 562 will include at least one packet forwarding policy for virtual service 540 and one packet forwarding policy for virtual service 550. When the network node 562 receives a data packet, the network node 562 determines whether the data packet is for virtual service 540 or virtual service 550. If the data packet is for virtual service 540, then the network node 562 processes the data packet according to the packet forwarding policies for virtual service 540. If the data packet is for virtual service 550, then the network node 562 processes the data packet according to the packet forwarding policies for virtual service 550.


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 method for processing a client service session of a network service and forwarding the client service session to a pool of service load balancers using at least one packet forwarding policy in a virtual service network, the virtual service network comprising at least one network node and the pool of service load balancers serving a virtual service associated with a virtual service network address, comprising: receiving a virtual service session request from a client device by the at least one 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 and a client device network address;selecting a service load balancer based on the at least one packet forwarding policy by the at least one network node, wherein the selecting comprises: determining whether a first packet forwarding policy or a second packet forwarding policy is applied to the virtual service session request, wherein a client network address of the first packet forwarding policy is different from a client network address of the second packet forwarding policy, the determining comprising: comparing the client network address and a virtual service network address of the second packet forwarding policy with the client device network address and the virtual service network address of the virtual service session request;in response to not finding a match between the client network address of the second packet forwarding policy and the client device network address, comparing the client network address and a virtual service network address of the first packet forwarding policy with the client device network address and the virtual service network address of the virtual service session request; andin response to finding a match between the client network address and the virtual service network address of the first packet forwarding policy with the client device network address and the virtual service network address of the virtual service session request, applying the first packet forwarding policy to the virtual service session request;sending the virtual service session request to a selected service load balancer by the at least one network node;establishing a virtual service session with the client device by the selected service load balancer;sending a virtual service request through the established virtual service session to the selected service load balancer by the client device; andsending a virtual service data packet from the client device to a server by the selected service load balancer.
  • 2. The method of claim 1, wherein the criteria to match against the virtual service session request comprise at least one of a virtual service network address, a transport layer address, a client network address, a range of virtual service network addresses, a range of transport layer addresses, and a range of client network addresses.
  • 3. The method of claim 1, wherein the selecting comprises: comparing, by the network node, criteria of the at least one packet forwarding policy against the virtual service session request; andin response to finding a match between criteria of the at least one packet forwarding policy and the virtual service session request, applying the packet forwarding policy to the virtual service session request.
  • 4. The method of claim 1, wherein after the client device sends the virtual service request to the service load balancer, the method further comprises: selecting the server to service the virtual service request;sending the service load balancer a service request response to the virtual service request by the server; andcreating and sending a virtual service request response to the client device by the service load balancer.
  • 5. The method of claim 1, wherein the virtual service network comprises a first network node connected with a second network node and the service load balancer, wherein the first network node selects the second network node to receive and process the virtual service data packet from the first network node.
  • 6. The method of claim 1, further comprising a network configuration module for configuring the at least one network node with at least one packet forwarding policy, wherein the network configuration module: connects to the selected service load balancer;detects a change to the selected service load balancer; andin response to detecting a change to the service load balancer, generates at least one packet forwarding policy.
  • 7. The method of claim 6, the method further comprising: detecting a change in at least one of the network node, the selected service load balancer, the data network, and the virtual service network; anddetermining the at least one packet forwarding policy is to be removed.
  • 8. The method of claim 1, wherein the selecting comprises: determining whether a first packet forwarding policy or a second packet forwarding policy is applied to the virtual service session request, wherein criteria of the first packet forwarding policy is the same as criteria of the second packet forwarding policy, the determining comprising:selecting the first packet forwarding policy or the second packet forwarding policy based on additional information.
  • 9. The method of claim 8, wherein the additional information comprises at least one of a multi-path factor and a traffic policy.
  • 10. The method of claim 9, wherein a multi-path factor of the first packet forwarding policy indicates a primary path and a multi-path factor of the second forwarding policy indicates a secondary path.
  • 11. A non-transitory computer readable storage medium having computer readable program code embodied therewith for processing a client service session of a network service and forwarding the client service session to a pool of service load balancers using at least one packet forwarding policy in a virtual service network, the virtual service network comprising at least one network node and the pool of service load balancers serving a virtual service associated with a virtual service network address, the computer readable program code configured to: receive a virtual service session request from a client device by the at least one 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 and a client device network address;select a service load balancer based on the at least one packet forwarding policy by the at least one network node, wherein the computer readable program code configured to select is further configured to: determine whether a first packet forwarding policy or a second packet forwarding policy is applied to the virtual service session request, wherein a client network address of the first packet forwarding policy is different from a client network address of the second packet forwarding policy, the determine comprising: compare the client network address and a virtual service network address of the second packet forwarding policy with the client device network address and the virtual service network address of the virtual service session request;in response to not finding a match between the client network address of the second packet forwarding policy and the client device network address, compare the client network address and a virtual service network address of the first packet forwarding policy with the client device network address and the virtual service network address of the virtual service session request; andin response to finding a match between the client network address and the virtual service network address of the first packet forwarding policy with the client device network address and the virtual service network address of the virtual service session request, apply the first packet forwarding policy to the virtual service session request;send the virtual service session request to a selected service load balancer by the at least one network node;establish a virtual service session with the client device by the selected service load balancer;send a virtual service request through the established virtual service session to the selected service load balancer by the client device; andsend a virtual service data packet from the client device to a server by the selected service load balancer.
  • 12. The medium of claim 11, wherein the criteria to match against the virtual service session request comprise at least one of a virtual service network address, a transport layer address, a client network address, a range of virtual service network addresses, a range of transport layer addresses, and a range of client network addresses.
  • 13. The medium of claim 11, wherein the computer readable program code configured to select is further configured to: compare, by the network node, criteria of the at least one packet forwarding policy against the virtual service session request; andin response to finding a match between criteria of the at least one packet forwarding policy and the virtual service session request, apply the packet forwarding policy to the virtual service session request.
  • 14. The medium of claim 11, further comprising a network configuration module for configuring the at least one network node with at least one packet forwarding policy, wherein the network configuration module is configured to: connect to the selected service load balancer;detect a change to the selected service load balancer; andin response to detecting a change to the selected service load balancer, generate at least one packet forwarding policy.
  • 15. The medium of claim 14, wherein the computer readable program code is further configured to: detect a change in at least one of the network node, the selected service load balancer, the data network, and the virtual service network; anddetermine the at least one packet forwarding policy is to be removed.
  • 16. The medium of claim 11, wherein the computer readable program code configured to select is further configured to: determine whether a first packet forwarding policy or a second packet forwarding policy is applied to the virtual service session request, wherein criteria of the first packet forwarding policy is the same as criteria of the second packet forwarding policy, the determine comprising: select the first packet forwarding policy or the second packet forwarding policy based on additional information.
  • 17. The medium of claim 16, wherein the additional information comprises at least one of a multi-path factor and a traffic policy.
  • 18. The medium of claim 17, wherein a multi-path factor of the first packet forwarding policy indicates a primary path and a multi-path factor of the second forwarding policy indicates a secondary path.
CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of, and claims the priority benefit of, U.S. patent application Ser. No. 15/048,290 filed on Feb. 19, 2016, entitled “Forwarding Policies on a Virtual Service Network,” issued on Jan. 10, 2017 as U.S. Pat. No. 9,544,364, which in turn is a continuation of U.S. patent application Ser. No. 13/706,363 filed on Dec. 6, 2012, entitled “Forwarding Policies on a Virtual Service Network,” issued on May 10, 2016 as U.S. Pat. No. 9,338,225, the disclosures of which are incorporated herein by reference in their entirety for all purposes.

US Referenced Citations (291)
Number Name Date Kind
4403286 Fry et al. Sep 1983 A
4495570 Kitajima et al. Jan 1985 A
4577272 Ballew et al. Mar 1986 A
4720850 Oberlander et al. Jan 1988 A
4864492 Blakely-Fogel et al. Sep 1989 A
4882699 Evensen Nov 1989 A
5031089 Liu et al. Jul 1991 A
5218676 Ben-Ayed et al. Jun 1993 A
5293488 Riley et al. Mar 1994 A
5341477 Pitkin et al. Aug 1994 A
5432908 Heddes et al. Jul 1995 A
5537542 Eilert et al. Jul 1996 A
5563878 Blakeley et al. Oct 1996 A
5603029 Aman et al. Feb 1997 A
5675739 Eilert et al. Oct 1997 A
5740371 Wallis Apr 1998 A
5751971 Dobbins et al. May 1998 A
5754752 Sheh et al. May 1998 A
5774660 Brendel et al. Jun 1998 A
5774668 Choquier et al. Jun 1998 A
5796936 Watabe et al. Aug 1998 A
5812771 Fee et al. Sep 1998 A
5828847 Gehr et al. Oct 1998 A
5835724 Smith Nov 1998 A
5867636 Walker Feb 1999 A
5867661 Bittinger et al. Feb 1999 A
5875296 Shi et al. Feb 1999 A
5917997 Bell et al. Jun 1999 A
5918017 Attanasio et al. Jun 1999 A
5923854 Bell et al. Jul 1999 A
5931914 Chiu Aug 1999 A
5935207 Logue et al. Aug 1999 A
5935215 Bell et al. Aug 1999 A
5941988 Bhagwat et al. Aug 1999 A
5944794 Okamoto et al. Aug 1999 A
5946686 Schmuck et al. Aug 1999 A
5951650 Bell et al. Sep 1999 A
5951694 Choquier et al. Sep 1999 A
6006264 Colby et al. Dec 1999 A
6006269 Phaal Dec 1999 A
6031978 Cotner et al. Feb 2000 A
6041357 Kunzelman et al. Mar 2000 A
6076108 Courts et al. Jun 2000 A
6088728 Bellemore et al. Jul 2000 A
6098093 Bayeh et al. Aug 2000 A
6104717 Coile et al. Aug 2000 A
6119174 Borowsky et al. Sep 2000 A
6128279 O'Neil et al. Oct 2000 A
6141759 Braddy Oct 2000 A
6185598 Farber et al. Feb 2001 B1
6223205 Harchol-Balter et al. Apr 2001 B1
6223287 Douglas et al. Apr 2001 B1
6247057 Barrera, III Jun 2001 B1
6249820 Dobbins et al. Jun 2001 B1
6252878 Locklear, Jr. et al. Jun 2001 B1
6262976 McNamara Jul 2001 B1
6286039 Van Horne et al. Sep 2001 B1
6314463 Abbott et al. Nov 2001 B1
6317786 Yamane et al. Nov 2001 B1
6324177 Howes et al. Nov 2001 B1
6330560 Harrison et al. Dec 2001 B1
6339423 Sampson et al. Jan 2002 B1
6353614 Borella et al. Mar 2002 B1
6363075 Huang et al. Mar 2002 B1
6363081 Gase Mar 2002 B1
6374300 Masters Apr 2002 B2
6374359 Shrader et al. Apr 2002 B1
6381632 Lowell Apr 2002 B1
6393475 Leong et al. May 2002 B1
6397261 Eldridge et al. May 2002 B1
6430622 Aiken, Jr. et al. Aug 2002 B1
6445704 Howes et al. Sep 2002 B1
6446225 Robsman et al. Sep 2002 B1
6490682 Vanstone et al. Dec 2002 B2
6496866 Attanasio et al. Dec 2002 B2
6510464 Grantges, Jr. et al. Jan 2003 B1
6515988 Eldridge et al. Feb 2003 B1
6542926 Zalewski et al. Apr 2003 B2
6564215 Hsiao et al. May 2003 B1
6567857 Gupta et al. May 2003 B1
6578066 Logan et al. Jun 2003 B1
6587866 Modi et al. Jul 2003 B1
6591262 MacLellan et al. Jul 2003 B1
6594268 Aukia et al. Jul 2003 B1
6598167 Devine et al. Jul 2003 B2
6606315 Albert et al. Aug 2003 B1
6609150 Lee et al. Aug 2003 B2
6611498 Baker et al. Aug 2003 B1
6650641 Albert et al. Nov 2003 B1
6657974 Britton et al. Dec 2003 B1
6697354 Borella et al. Feb 2004 B1
6701377 Burmann et al. Mar 2004 B2
6704317 Dobson Mar 2004 B1
6711618 Danner et al. Mar 2004 B1
6714979 Brandt et al. Mar 2004 B1
6718383 Hebert Apr 2004 B1
6742126 Mann et al. May 2004 B1
6745229 Gobin et al. Jun 2004 B1
6748413 Bournas Jun 2004 B1
6760758 Lund et al. Jul 2004 B1
6763370 Schmeidler et al. Jul 2004 B1
6763468 Gupta et al. Jul 2004 B2
6772333 Brendel Aug 2004 B1
6779017 Lamberton et al. Aug 2004 B1
6877095 Allen Apr 2005 B1
6886044 Miles et al. Apr 2005 B1
6892307 Wood et al. May 2005 B1
6941384 Aiken, Jr. et al. Sep 2005 B1
6952728 Alles et al. Oct 2005 B1
6954784 Aiken, Jr. et al. Oct 2005 B2
6963917 Callis et al. Nov 2005 B1
6965930 Arrowood et al. Nov 2005 B1
6996617 Aiken, Jr. et al. Feb 2006 B1
6996631 Aiken, Jr. et al. Feb 2006 B1
7058600 Combar et al. Jun 2006 B1
7058789 Henderson et al. Jun 2006 B2
7120697 Aiken, Jr. et al. Oct 2006 B2
7188181 Squier et al. Mar 2007 B1
7225249 Barry et al. May 2007 B1
7430611 Aiken, Jr. et al. Sep 2008 B2
7463648 Eppstein et al. Dec 2008 B1
7509369 Tormasov Mar 2009 B1
7586871 Hamilton Sep 2009 B2
7703102 Eppstein et al. Apr 2010 B1
7792113 Foschiano et al. Sep 2010 B1
7948952 Hurtta et al. May 2011 B2
7970934 Patel Jun 2011 B1
7991859 Miller et al. Aug 2011 B1
8019870 Eppstein et al. Sep 2011 B1
8032634 Eppstein et al. Oct 2011 B1
8130826 Smith Mar 2012 B2
8179809 Eppstein et al. May 2012 B1
8191106 Choyi et al. May 2012 B2
8224971 Miller et al. Jul 2012 B1
8234650 Eppstein et al. Jul 2012 B1
8239445 Gage et al. Aug 2012 B1
8255644 Sonnier et al. Aug 2012 B2
8296434 Miller et al. Oct 2012 B1
8312507 Chen et al. Nov 2012 B2
8543644 Gage et al. Sep 2013 B2
8584199 Chen et al. Nov 2013 B1
8595791 Chen et al. Nov 2013 B1
8694993 Dotan Apr 2014 B1
8813180 Chen et al. Aug 2014 B1
8826372 Chen et al. Sep 2014 B1
8885463 Medved et al. Nov 2014 B1
8965955 Agarwal Feb 2015 B2
9118618 Davis Aug 2015 B2
9118620 Davis Aug 2015 B1
9219751 Chen et al. Dec 2015 B1
9253152 Chen et al. Feb 2016 B1
9270705 Chen et al. Feb 2016 B1
9338225 Jalan et al. May 2016 B2
9350744 Chen et al. May 2016 B2
9356910 Chen et al. May 2016 B2
9497201 Chen et al. Nov 2016 B2
9544364 Jalan et al. Jan 2017 B2
20010015812 Sugaya Aug 2001 A1
20020010783 Primak et al. Jan 2002 A1
20020091831 Johnson Jul 2002 A1
20020124089 Aiken, Jr. et al. Sep 2002 A1
20020133491 Sim et al. Sep 2002 A1
20020141448 Matsunaga Oct 2002 A1
20020143953 Aiken Oct 2002 A1
20020143954 Aiken, Jr. et al. Oct 2002 A1
20020166080 Attanasio et al. Nov 2002 A1
20020178265 Aiken, Jr. et al. Nov 2002 A1
20020178268 Aiken, Jr. et al. Nov 2002 A1
20020191575 Kalavade et al. Dec 2002 A1
20020194335 Maynard Dec 2002 A1
20020199000 Banerjee Dec 2002 A1
20030023711 Parmar et al. Jan 2003 A1
20030023873 Ben-Itzhak Jan 2003 A1
20030031180 Datta et al. Feb 2003 A1
20030035420 Niu Feb 2003 A1
20030061402 Yadav Mar 2003 A1
20030079146 Burstein Apr 2003 A1
20030081624 Aggarwal et al. May 2003 A1
20030108052 Inoue Jun 2003 A1
20030131245 Linderman Jul 2003 A1
20030152078 Henderson et al. Aug 2003 A1
20030202536 Foster et al. Oct 2003 A1
20040001497 Sharma Jan 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
20040184442 Jones et al. Sep 2004 A1
20040210623 Hydrie et al. Oct 2004 A1
20040210663 Phillips Oct 2004 A1
20040250059 Ramelson Dec 2004 A1
20040253956 Collins Dec 2004 A1
20050009520 Herrero et al. Jan 2005 A1
20050021949 Izawa et al. Jan 2005 A1
20050125276 Rusu Jun 2005 A1
20050141506 Aiken, Jr. et al. Jun 2005 A1
20050249225 Singhal Nov 2005 A1
20050259586 Hafid et al. Nov 2005 A1
20060036733 Fujimoto et al. Feb 2006 A1
20060064478 Sirkin 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
20060190997 Mahajani et al. Aug 2006 A1
20060209789 Gupta et al. Sep 2006 A1
20060230129 Swami et al. Oct 2006 A1
20060271823 Smith Nov 2006 A1
20070086382 Narayanan et al. Apr 2007 A1
20070094396 Takano et al. Apr 2007 A1
20070118881 Mitchell et al. May 2007 A1
20070156919 Potti et al. Jul 2007 A1
20070165622 O'Rourke Jul 2007 A1
20070255847 Smith Nov 2007 A1
20070259673 Willars et al. Nov 2007 A1
20070274285 Werber et al. Nov 2007 A1
20070286077 Wu Dec 2007 A1
20070288247 Mackay Dec 2007 A1
20070294209 Strub et al. Dec 2007 A1
20080109870 Sherlock et al. May 2008 A1
20080134332 Keohane et al. Jun 2008 A1
20080162679 Maher et al. Jul 2008 A1
20080263209 Pisharody et al. Oct 2008 A1
20080271130 Ramamoorthy Oct 2008 A1
20080320151 McCanne et al. Dec 2008 A1
20090037361 Prathaban et al. Feb 2009 A1
20090106830 Maher Apr 2009 A1
20090141634 Rothstein et al. Jun 2009 A1
20090213858 Dolganow et al. Aug 2009 A1
20090262741 Jungck et al. Oct 2009 A1
20090271472 Scheifler et al. Oct 2009 A1
20090313379 Rydnell et al. Dec 2009 A1
20100131654 Malakapalli May 2010 A1
20100162378 Jayawardena et al. Jun 2010 A1
20100188975 Raleigh Jul 2010 A1
20100235880 Chen et al. Sep 2010 A1
20100312740 Clemm et al. Dec 2010 A1
20110013525 Breslau et al. Jan 2011 A1
20110064083 Borkenhagen et al. Mar 2011 A1
20110099403 Miyata et al. Apr 2011 A1
20110110294 Valluri et al. May 2011 A1
20110153721 Agarwal Jun 2011 A1
20110153834 Bharrat Jun 2011 A1
20110185073 Jagadeeswaran et al. Jul 2011 A1
20110276695 Maldaner Nov 2011 A1
20110292939 Subramaian et al. Dec 2011 A1
20120023231 Ueno Jan 2012 A1
20120066371 Patel Mar 2012 A1
20120084460 McGinnity et al. Apr 2012 A1
20120117571 Davis May 2012 A1
20120144014 Natham et al. Jun 2012 A1
20120151353 Joanny Jun 2012 A1
20120155495 Clee et al. Jun 2012 A1
20120173759 Agarwal Jul 2012 A1
20120203825 Choudhary Aug 2012 A1
20120239792 Banerjee et al. Sep 2012 A1
20120240185 Kapoor et al. Sep 2012 A1
20130007225 Gage et al. Jan 2013 A1
20130074177 Varadhan et al. Mar 2013 A1
20130083725 Mallya et al. Apr 2013 A1
20130089099 Pollock et al. Apr 2013 A1
20130091273 Ly et al. Apr 2013 A1
20130148500 Sonoda et al. Jun 2013 A1
20130166731 Yamanaka et al. Jun 2013 A1
20130191548 Boddukuri et al. Jul 2013 A1
20130262702 Davis Oct 2013 A1
20130282791 Kruglick Oct 2013 A1
20130311686 Fetterman et al. Nov 2013 A1
20140047115 Lipscomb et al. Feb 2014 A1
20140164617 Jalan et al. Jun 2014 A1
20140258465 Li Sep 2014 A1
20140258536 Chiong Sep 2014 A1
20140269728 Jalan et al. Sep 2014 A1
20140330982 Jalan et al. Nov 2014 A1
20140334485 Jain et al. Nov 2014 A1
20150085650 Cui et al. Mar 2015 A1
20150215436 Kancherla Jul 2015 A1
20150281087 Jalan et al. Oct 2015 A1
20150350383 Davis Dec 2015 A1
20150381465 Narayanan et al. Dec 2015 A1
20160036778 Chen et al. Feb 2016 A1
20160050233 Chen et al. Feb 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
20160173579 Jalan et al. Jun 2016 A1
20160261642 Chen et al. Sep 2016 A1
20170041350 Chen et al. Feb 2017 A1
Foreign Referenced Citations (20)
Number Date Country
1725702 Jan 2006 CN
101094225 Dec 2007 CN
101567818 Oct 2009 CN
102104548 Jun 2011 CN
102918801 Feb 2013 CN
103365654 Oct 2013 CN
102918801 May 2016 CN
0648038 Apr 1995 EP
1770915 Apr 2007 EP
1885096 Feb 2008 EP
2577910 Apr 2013 EP
1183569 Dec 2013 HK
1188498 May 2014 HK
2001298449 Oct 2001 JP
2013528330 Jul 2013 JP
5946189 Jul 2016 JP
WO2011149796 Dec 2011 WO
WO2014088741 Jun 2014 WO
WO2014144837 Sep 2014 WO
WO2014179753 Nov 2014 WO
Non-Patent Literature Citations (23)
Entry
Cardellini, et al., “Dynamic Load Balancing on Web-Server Systems”, IEEE Internet Computing, 1999, vol. 3(3), pp. 28-29.
Samar, V., “Single Sign-On Using Cookies for Web Applications,” IEEE 8th International Workshop, 1999, pp. 158-163.
“Allot Announces the General Availability of its Directory Services-Based NetPolicy™ Manager,” Allot communications, Tel Aviv, Israel, Feb. 28, 2000, 2 pages.
“Allot Communications Announces Business-Aware Network Policy Manager,” Allot Communications, Sophia Antipolis, France, Sep. 20, 1999, 2 pages.
“Allot Communications Announces Directory Services Based Network Policy Manager,” Allot Communications, Los Gatos, California, Apr. 5, 1999, 2 pages.
“Allot Communications Announces the Netenforcer Family of IP Traffic Management Products: Fault-Tolerant, Scaleable, Policy-Based Bandwidth Management, QOS, SLA Solutions,” Allot Communications, Burlingame, California, Dec. 13, 1999, 2 pages.
“Allot Communications Launches NetEnforcer with NetWizard, the Fastest Way to Implement Accurate and Reliable Network QoS Policies,” Allot Communications, Burlingame, California, Jan. 25, 2001, 2 pages.
“Allot Introduces Turnkey Next Generation IP Service and Creation Solution—the Virtual Bandwidth Manager,” Allot communications, Atlanta, Georgia, SUPERCOMM 2000, Booth #8458, Jun. 5, 2000, 2 pages.
“Data Communications Awards Allot Communications ‘Hot Product’ in Internetworking/IP Tools Category,” Allot Communications, Los Gatos, California, Jan. 18, 1999, 2 pages.
“Policy-Based Network Architecture,” Allot Communications, 2001, 12 pages.
Dahlin, A. et al, “Eddie A Robust and Scalable Internet Server,” Ericsson Telecom AB, Stockholm, Sweden, pp. 1-7 (May 1998).
Aron, Mohit et al., “Efficient Support for P-HTTP in Cluster-Based Web Servers,” Proceedings of 1999 Annual Usenix Technical Conference, Monterey, California, Jun. 1999, 14 pages.
Aron, Mohit et al., “Scalable Content-aware Request Distribution in Cluster-based Network Servers,” Proceedings of the 2000 Annual Usenix Technical Conference, San Diego, California, Jun. 2000, 15 pages.
Aron, Mohit, “Scalable Content-aware Request Distribution in Cluster-based Network Servers,” Department of Computer Science, Rice University [Online, retreived on Mar. 13, 2001], Retreived from the Internet: <URL:http://softlib.rice.edu/softlib/scalableRD.html>, 8 pages.
“ACEdirector™: 8-Port 10/100 Mbps Ethernet Switch,” Alteon WebSystems, San Jose, California (1999), 2 pages.
“Enhancing Web User Experience with Global Server Load Balancing,” Alteon WebSystems, San Jose, California, Jun. 1999, 8 pages.
“The Next Step in Server Load Balancing,” Alteon WebSystems, San Jose, California, Nov. 1999, 16 pages.
“1.3.1.2.5 Virtual IP Addressing (VIPA),” excerpt from “IP Configuration” [online], IBM Corporation, 1998 [retreived on Sep. 8, 1999], retreived from the Internet: <URL:http://w3.enterlib.ibm.com:80/cgi-bin/bookmgr/books/F1AF7001/1.3.1.2>, 4 pages.
“1.3.20 DEVICE and LINK Statement—Virtual Devices (VIPA),” excerpt from “IP Configuration” [online], IBM Corporation, 1998 [retrieved on Sep. 8, 1999], retrieved from the Internet: <URL:http://w3.enterlib.ibm.com:80/cgi-bin/bookmgr/books/F1AF7001/1.3.2>, 3 pages.
“1.3.23 HOME Statement,” excerpt from “IP Configuration” [online], IBM Corporation, 1998 [retrieved on Sep. 8, 1999], retrieved from the Internet: <URL:http://w3.enterlib.ibm.com:80/cgi-bin/bookmgr/books/F1AF7001/1.3.2>, 6 pages.
Devine, Mac, “TCP/IP Application Availability and Workload Balancing in the Parallel Sysplex,” SHARE Technical Conference, Aug. 22-27, 1999, 17 pages.
Pai, Vivek S. et al., “Locality-Aware Request Distribution in Cluster-based Network Servers,” Proceedings of the 8th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS VIII), San Jose, CA, Oct. 1998, 12 pages.
Apostolopoulos, G. et al., “Design, Implementation and Performance of a Content-Based Switch,” INFOCOM 2000, Nineteenth Annual Joint Conference of the IEEE Computer and Communication Societies, IEEE, Mar. 2000, pp. 1117-1126, vol. 3.
Related Publications (1)
Number Date Country
20170111441 A1 Apr 2017 US
Continuations (2)
Number Date Country
Parent 15048290 Feb 2016 US
Child 15394669 US
Parent 13706363 Dec 2012 US
Child 15048290 US