US20120155266A1 - Synchronizing state among load balancer components - Google Patents
Synchronizing state among load balancer components Download PDFInfo
- Publication number
- US20120155266A1 US20120155266A1 US12/972,340 US97234010A US2012155266A1 US 20120155266 A1 US20120155266 A1 US 20120155266A1 US 97234010 A US97234010 A US 97234010A US 2012155266 A1 US2012155266 A1 US 2012155266A1
- Authority
- US
- United States
- Prior art keywords
- load balancer
- data flow
- owner
- act
- mux
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000013507 mapping Methods 0.000 claims description 31
- 230000007704 transition Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 19
- 241001522296 Erithacus rubecula Species 0.000 claims description 2
- 238000005192 partition Methods 0.000 claims 3
- 230000000737 periodic effect Effects 0.000 claims 1
- 230000008859 change Effects 0.000 abstract description 4
- 238000004590 computer program Methods 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- RZVAJINKPMORJF-UHFFFAOYSA-N Acetaminophen Chemical compound CC(=O)NC1=CC=C(O)C=C1 RZVAJINKPMORJF-UHFFFAOYSA-N 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/22—Alternate routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/11—Identifying congestion
Definitions
- Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing environments.
- tasks e.g., word processing, scheduling, accounting, etc.
- distributed load balancers are often used to share processing load across a number of computer systems.
- a plurality of load balancers can be used to receive external communication directed to a plurality of processing endpoints.
- Each load balancer has some mechanism to insure that all external communication from the same origin is directed to the same processing endpoint.
- load balancers For load balancers to make accurate decisions on where to direct external communication (e.g., to which processing endpoint), load balancers share state with one another. For example, a decision made at one load balancer for communication for specified origin can be synchronized across other load balancers. Based on the synchronized state, any load balancer can then make an accurate decision with respect to sending communication from the specified origin to the same processing endpoint.
- a load balancer receives a packet from a router.
- the packet contains source electronic address information identifying a source on the wide area network and destination electronic address information including a virtual electronic address.
- the load balancer uses an algorithm to generate a data flow identifier for the existing data flow from the source electronic address information and the destination electronic address information.
- the load balancer determines that the packet is for an existing data flow.
- the load balancer determines that the load balancer lacks sufficient information to identify a destination host, from among a plurality of destination hosts, that corresponds to the existing data flow. This includes the load balancer not having cached state that maps the existing data flow to one of the destination hosts in the plurality of destination hosts.
- the load balancer In response to the determination, the load balancer identifies an owner load balancer that is designated as the owner of the existing data flow. Also in response to the determination, the load balancer sends a request for data flow state information to the owner load balancer. The load balancer receives state information from the owner load balancer. The state information identifies the destination host that corresponds to the existing data flow. The load balancer caches the received state information.
- the load balancer On subsequent packets in this data flow, the load balancer sends a message back to the owner load balancer to indicate the continuation of the data flow.
- This continuation message needs only be sent once per idle timeout interval.
- the idle timeout interval determines how long a data flow retains its mapping to the same destination host even in absence of any packets.
- the load balancer determines that the received packet is for an existing data flow.
- the load balancer determines that the load balancer is not the owner of the existing data flow.
- the load balancer determines that the load balancer has cached state for the existing data flow.
- the cached state maps the existing data flow to one of the destination hosts in the plurality of destination hosts.
- the load balancer sends the received packet to the destination host mapped to the existing data flow.
- the load balancer determines whether it needs to send data flow continuation message to the owner load balancer.
- the load balancer sends the cached state to the owner load balancer.
- FIG. 1 illustrates an example computer architecture that facilitates synchronizing state among load balancer components.
- FIG. 2 illustrates a flow chart of an example method for sharing state between load balancers.
- FIG. 3 illustrates a flow chart of an example method for sharing state between load balancers.
- FIGS. 4A and 4B illustrate an example computer architecture for sharing state between muxes.
- FIGS. 5A and 5B illustrate an example computer architecture for sharing state between muxes.
- FIGS. 6A , 6 B, 6 C, and 6 D illustrate an example computer architecture for maintaining data flow to destination host mappings.
- FIGS. 7A and 7B illustrate an example computer architecture for maintaining data flow to owner mux mappings.
- a load balancer receives a packet from a router.
- the packet contains source electronic address information identifying a source on the wide area network and destination electronic address information including a virtual electronic address.
- the load balancer uses an algorithm to generate a data flow identifier for the existing data flow from the source electronic address information and the destination electronic address information.
- the load balancer determines that the packet is for an existing data flow.
- the load balancer determines that the load balancer lacks sufficient information to identify a destination host, from among a plurality of destination hosts, that corresponds to the existing data flow. This includes the load balancer not having cached state that maps the existing data flow to one of the destination hosts in the plurality of destination hosts.
- the load balancer In response to the determination, the load balancer identifies an owner load balancer that is designated as the owner of the existing data flow. Also in response to the determination, the load balancer sends a request for data flow state information to the owner load balancer. The load balancer receives state information from the owner load balancer. The state information identifies the destination host that corresponds to the existing data flow. The load balancer caches the received state information.
- the load balancer On subsequent packets in this data flow, the load balancer sends a message back to the owner load balancer to indicate the continuation of the data flow.
- This continuation message needs only be sent once per idle timeout interval.
- the idle timeout interval determines how long a data flow retains its mapping to the same destination host even in absence of any packets.
- the load balancer determines that the received packet is for an existing data flow.
- the load balancer determines that the load balancer is not the owner of the existing data flow.
- the load balancer determines that the load balancer has cached state for the existing data flow.
- the cached state maps the existing data flow to one of the destination hosts in the plurality of destination hosts.
- the load balancer sends the received packet to the destination host mapped to the existing data flow.
- the load balancer determines whether it needs to send data flow continuation message to the owner load balancer.
- the load balancer sends the cached state to the owner load balancer.
- Embodiments of the present invention may comprise or utilize a special purpose or general-purpose computer including computer hardware, such as, for example, one or more processors and system memory, as discussed in greater detail below.
- Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures.
- Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system.
- Computer-readable media that store computer-executable instructions are physical storage media.
- Computer-readable media that carry computer-executable instructions are transmission media.
- embodiments of the invention can comprise at least two distinctly different kinds of computer-readable media: computer storage media (devices) and transmission media.
- Computer storage media includes RAM, ROM, EEPROM, CD-ROM, DVD, or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer.
- a “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules and/or other electronic devices.
- a network or another communications connection can include a network and/or data links which can be used to carry or desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
- program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to computer storage media (devices) (or vice versa).
- computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a “NIC”), and then eventually transferred to computer system RAM and/or to less volatile computer storage media (devices) at a computer system.
- a network interface module e.g., a “NIC”
- NIC network interface module
- computer storage media (devices) can be included in computer system components that also (or even primarily) utilize transmission media.
- Computer-executable instructions comprise, for example, instructions and data which, when executed at a processor, cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions.
- the computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code.
- the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, routers, switches, and the like.
- the invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks.
- program modules may be located in both local and remote memory storage devices.
- FIG. 1 illustrates an example computer architecture 100 that facilitates synchronizing state among load balancer components.
- computer architecture 100 includes router 102 , load balancing manager 103 , multiplexers (“muxes”) 106 , and destination hosts 107 .
- Each of the depicted computer systems is connected to one another over (or is part of) a network, such as, for example, a Local Area Network (“LAN”) and/or a Wide Area Network (“WAN”).
- Router 102 is further connected to network 101 .
- Network 101 can be a further WAN, such as, for example, the Internet.
- each of the depicted components can create message related data and exchange message related data (e.g., Internet Protocol (“IP”) datagrams and other higher layer protocols that utilize IP datagrams, such as, Transmission Control Protocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple Mail Transfer Protocol (“SMTP”), etc.) over the described networks.
- IP Internet Protocol
- TCP Transmission Control Protocol
- HTTP Hypertext Transfer Protocol
- SMTP Simple Mail Transfer Protocol
- router 102 interfaces between network 101 and other components of computer architecture 101 to appropriately route packets between network 101 and the other components of computer architecture 100 .
- Router 102 can be configured to receive messages from network 101 and forward those messages to appropriate components of computer architecture 100 .
- router 102 can be configured to forward IP traffic for Virtual Internet Protocol Addresses (“VIPs”) to IP addresses of the physical interfaces at muxes 106 .
- VIPs Virtual Internet Protocol Addresses
- Router 102 can support Equal Cost Multi-Path (“ECMP”) routing to virtually any number (e.g., 4, 8, 16, etc.) of IP addresses.
- a plurality of muxes 106 can be configured as active muxes. In other embodiments, (e.g., when ECMP is not supported), one mux can be configured as an active mux and zero or more other muxes configured as stand-by muxes.
- a Domain Name Services (“DNS”) round robin approach is used.
- VIPs are assigned to and shared between a plurality of muxes 106 .
- DNS Domain Name Services
- a Domain Name Services (“DNS”) name is registered to resolve the one or more VIPs. If a mux 106 fails, the VIPs it owns are failed over to other muxes 106 .
- a VIP is configured on the network interface card for each mux.
- One of the muxes e.g., a master node
- ARP Address Resolution Protocol
- router 102 can send any packets for the VIP to the master node.
- the master node can then perform Layer 2 forwarding based on current state and/or load balancer rules. Use of a “master node” can mitigate flooding and is much cheaper than Layer 3 forwarding.
- muxes 106 include a plurality of muxes including muxes 106 A, 106 B, and 106 C.
- Destination hosts 107 include a plurality destination hosts includes destination hosts 107 A, 107 B, and 107 D.
- each mux 106 is configured to receive a packet, identify the appropriate destination host for the packet, and forward the packet to the appropriate destination host.
- an appropriate destination host 107 for a packet is identified from one or more of: the contents of the packet, cached state at a receiving mux, cached state at other muxes, whether the packet is for an existing data flow or a new data flow, and the configuration of destination hosts 107 .
- Each mux includes an ID generator, an owner detector, and a state manager.
- muxes 106 A, 106 B, and 106 C include ID generators 141 A, 141 B, 141 C, owner detectors 142 A, 142 B, and 142 C, and state managers 143 A, 143 B, and 143 C respectively.
- Each ID generator is configured to generate a data flow ID for a packet based on the contents of the packet.
- a 5-tuple of source IP:port, VIP:port, IP protocol
- a subset of this 5-tuple may be used.
- a new data flow ID can be mapped to a destination host 107 identified, for example, by (Destination Host IP:port).
- a corresponding state manager can cache state mapping a data flow ID and (Destination Host IP:port).
- the mux can refer to the cached state to identify the appropriate destination host 107 for each of the further packets.
- each mux can send state to and/or request state from an owner mux for each data flow ID. For example, when a mux identifies an appropriate destination host for a data flow ID, the mux can (in addition to also caching) forward the appropriate destination host to the owner mux for the data flow ID. On the other hand, when a mux lacks sufficient information to identify an appropriate destination host for a data flow ID, the mux can query the owner mux to obtain the appropriate destination host.
- the mux when a mux lacks sufficient information to identify the appropriate destination host for a packet corresponding to a data flow ID, the mux sends the packet to the owner mux for the data flow ID. In response to receiving the packet, the owner mux determines the appropriate destination host for the data flow ID. Also, the owner mux sends cached state (either generated at the owner mux or received from further other muxes) mapping the data flow ID to the appropriate destination host to the mux.
- the mux when a mux lacks sufficient information to identify the appropriate destination host for a data flow ID, the mux sends an express request for cached state to the owner mux for the data flow ID.
- the owner mux In response to receiving the express request, the owner mux sends cached state (either generated at the owner mux or received from further other muxes) mapping the data flow ID to the appropriate destination host to the mux. The mux then sends the packet to the appropriate destination host.
- load balancing manager 103 is configured to monitor the arrangement of destination hosts 107 for transitions (e.g., when a new destination host is being added).
- Destination array generator 104 can, from time to time, formulate (e.g., using a hashing function) an array that maps data flow IDs to destination hosts.
- Load balancing manger 103 can maintain two versions of the array, a current version of the array (e.g., new array 109 ) and the immediate previous version of the array (e.g., old array 108 ).
- the positions within the array can correspond to data flow IDs.
- array position 1 can correspond to data flow ID 1 , etc.
- the destination host 107 B is the appropriate destination host for data flow ID 1 .
- Load balancing manager 103 can communicate the two versions of the array to muxes 106 .
- mappings in the current and immediate previous versions of the array match.
- a mux 106 can refer to the mappings to determine where to send a packet for a specified data flow ID (even when the mux lacks cached state).
- mappings in the current and immediate previous versions of the array differ.
- the data flow ID space can be spread across more destination hosts 107 to reduce the load on individual destination hosts 107 .
- difference 111 indicates that a portion of the data flow ID space previously corresponding to destination host 107 D (e.g., data flow ID 3 ) now corresponds to destination host 107 C.
- muxes 106 can refer to cached state (either locally or queried from an owner mux) when the arrangement of destination hosts 107 is in transition.
- FIG. 2 illustrates a flow chart of an example method 200 for sharing state between load balancers. Method 200 will be described with respect to the components and data of computer architecture 100 .
- Method 200 includes an act of the load balancer receiving a packet from the router, the packet containing source electronic address information identifying a source on the wide area network and destination electronic address information including the virtual electronic address (act 201 ).
- mux 106 A can receive packet 121 from router 102 .
- Packet 121 contains source (e.g., IP) address 122 identifying a source on network 101 .
- Packet 121 also contains destination address 123 .
- Destination address 123 can be a Virtual IP address used to contact destination hosts 107 .
- Method 200 includes an act of the load balancer determining that the packet is for an existing data flow (act 202 ).
- mux 106 can determine that packet 121 is for an existing data flow.
- the first packet in a data flow e.g., a SYN packet for Transmission Control Protocol, TCP, packets
- TCP Transmission Control Protocol
- Other packets in the data flow e.g., non-SYN packets for TCP
- a mux can infer that the packet is for an existing data flow.
- Mux 106 A can determine that packet 121 does not contain a first packet indicator. As such, much 106 A infers that packet 121 is for an existing data flow.
- Method 200 includes an act of the load balancer using an algorithm to generate a data flow identifier for the existing data flow from the source electronic address information and the destination electronic address information (act 203 ).
- ID generator can use a hash function to hash source address 122 and destination address 123 into flow ID 144 .
- Flow ID 144 can represent an index position, for example, of new array 109 .
- Flow ID 144 can represent the 4 th position in new array 109 .
- a hash algorithm is used to hash a source IP address and VIP into a data flow identifier.
- Method 200 includes an act of load balancer determining that the load balancer lacks sufficient information to identify the destination host, from among the plurality of destination hosts, that corresponds to the existing data flow (act 204 ). For example, mux 106 A can determine that mux 106 A lacks sufficient information to identify the appropriate destination host, from among destination hosts 107 , that corresponds to flow ID 144 .
- Act 204 can include an act of the load balancer determining that the load balancer does not have any cached state mapping the existing data flow to one of the destination hosts in the plurality of destination hosts (act 205 ).
- state manager 143 A can determine that mux 106 A does not have any cached state mapping flow ID 144 to one of destination hosts 107 .
- State manager 143 A can refer to state 146 A (cached state) to check for a destination host mapping for flow ID 144 .
- Act 204 can include an act of the load balancer detecting that the arrangement of the plurality of destination hosts is in a transition.
- mux 106 A can detect a transition in the arrangement of destination hosts 107 .
- Destination host 107 C can be added to destination hosts 107 during the lifetime of one or more existing data flows (e.g., flow ID 144 ).
- Destination array generator 104 can detect the change.
- destination array generator 104 can generate new array 109 .
- Mux 106 A can refer to old array 108 and new array 109 .
- mux 106 A detects the transition. That is, a portion of the data flow ID space is now allocated to destination host 107 C.
- Method 200 includes in response to the determination that the load balancer lacks sufficient information to identify the destination host that corresponds to the existing data flow, an act of the load balancer identifying an owner load balancer that is designated as the owner of the existing data flow, the owner load balancer selected from among the one or more other load balancers (act 206 ).
- mux 106 A can identify mux 106 B as the owner of flow ID 144 .
- Owner detector 142 A can receive flow ID 144 as input and output the IP address for mux 106 B as the owner of flow ID 144 .
- mux 106 A uses a second hashing algorithm to hash source address 122 and destination address 123 into a second hash value.
- the second hash value represents an index position in an owner array (e.g., depicted in FIGS. 7A and 7B ).
- the owner array maps data flows to corresponding owner muxes that maintain state for mapped data flows when a transition is detected.
- mux 106 A can refer to a index position for flow ID 144 in an owner array to identify mux 106 B as the owner of flow ID 144 .
- Load balancing manager 103 can monitor muxes 106 and adjust primary owner arrays and backup owner arrays for data flows as muxes are added and/or removed from muxes 106 .
- Load balancing manager 103 can distribute ownership for data flows to (the extent possible) balance primary and backup ownership across muxes 106 .
- Method 200 also includes in response to the determination that the load balancer lacks sufficient information to identify the destination host that corresponds to the existing data flow, an act of the load balancer sending a request for data flow state information to the owner load balancer (act 207 ).
- an act of the load balancer sending a request for data flow state information to the owner load balancer (act 207 ).
- mux 106 A can send packet 121 to mux 106 B.
- mux 106 A can retain packet 121 and send an express request for data flow state information for flow ID 144 to mux 106 B.
- Mux 106 B can receive packet 121 from mux 106 A. Upon receiving packet 121 , ID generator 141 B can generate flow ID 144 from source address 122 and destination address 123 . Owner detector 142 B can then determine that mux 106 B is the owner for flow ID 144 . State manager 142 B can refer to state 146 B to access state 126 . State 126 can map flow ID 144 to destination host 107 B. If no state is found, mux 106 B can generate new state 126 using the current destination array. Mux 106 B can send packet 121 to destination host 107 B. Mux 106 B can return state 126 to mux 106 A. Mux 106 B can also send state 126 to backup owner corresponding to this flow.
- mux 106 B can receive an express request for data flow state information for flow ID 144 from mux 106 A.
- Owner detector 142 B can determine that mux 106 B is the owner for flow ID 144 .
- State manager 142 B can refer to state 146 B to access state 126 .
- Mux 106 B can return state 126 to mux 106 A.
- Method 200 includes an act of the load balancer receiving state information from the owner load balancer, the state information identifying the destination host that corresponds to the existing data flow (act 208 ).
- mux 106 A can receive state 126 from mux 106 B.
- Method 200 includes an act of the load balancer caching the received state information (act 209 ).
- mux 106 A can cache state 126 in state 146 A.
- mux 106 A can then send packet 121 to destination host 107 B.
- mux 106 A can identify destination host 107 B as the appropriate destination host for the subsequent packets. For example, mux 106 A can receive packet 132 . Packet 132 contains source address 122 and destination address 123 . ID generator 141 B can determine that packet 132 corresponds to flow ID 144 . State manager 143 B can refer to state 146 A to identify that destination host 107 B is the appropriate destination host for flow ID 144 . Mux 106 A can then send packet 132 to destination host 107 B.
- mux 106 C can receive packet 131 .
- Packet 131 contains source address 122 and destination address 123 .
- ID generator 141 C can determine that packet 132 corresponds to flow ID 144 .
- State manager 143 C can refer to state 146 C to identify that destination host 107 B is the appropriate destination host for flow ID 144 .
- Mux 106 C can then send packet 131 to destination host 107 B.
- muxes with state for existing data flows that have a different destination host in the old and new destination array can send the state to an owner mux for the data flows.
- the addition of destination host 107 C causes a transition in destination hosts 107 .
- mux 106 C can have state for one or more existing data flows for which other muxes, such as, for example, mux 106 A and/or mux 106 B are owners.
- mux 106 can send state for existing data flows that have a different destination host in the old and new destination array to the appropriate owner mux.
- mux 106 C can send state for flow ID 144 to mux 106 C (not shown).
- appropriate owner muxes can receive state from other muxes.
- mux 106 A can receive state for flow ID 144 from mux 106 C (not shown).
- FIG. 3 illustrates a flow chart of an example method 300 for sharing state between load balancers. Method 300 will be described with respect to the components and data of computer architecture 100 .
- Method 300 includes an act of the load balancer receiving a packet from another load balancer included in the one or more other load balancers, the packet containing source electronic address information identifying a source on the wide area network and destination electronic address information including the virtual electronic address (act 301 ).
- mux 106 B can receive packet 121 from mux 106 A.
- Method 300 includes an act of the load balancer determining that the received packet is for an existing data flow (act 302 ).
- id generator 144 can determine that packet 121 corresponds to flow ID 144 .
- Method 300 includes an act of the load balancer determining that the load balancer is the owner of the existing data flow (act 302 ).
- owner detector 142 B can determine that mux 106 B is the owner of flow ID 144 .
- Method 300 includes an act of the load balancer determining that the load balancer has cached state for the existing data flow, the cached state mapping the existing data flow to one of the destination hosts in the plurality of destination hosts (act 304 ).
- state manager 142 B can refer to state 146 B to access state 126 .
- State 126 can indicate that flow ID 144 corresponds to destination host 107 B.
- state manager 142 B can generate state 126 .
- Method 300 includes an act of the load balancer sending the received packet to the destination host mapped to the existing data flow (act 305 ).
- mux 106 B can send packet 121 to destination host 107 B.
- Method 300 includes an act of load balancer sending the cached state to the other load balancer (act 306 ).
- mux 106 B can return state 126 to mux 106 A.
- mux 106 B can receive an express request from mux 106 A for state mapping flow ID 144 to an appropriate destination host 107 .
- state manager 142 B can refer to state 146 B to access state 126 .
- State 126 can indicate that flow ID 144 corresponds to destination host 107 B.
- Mux 106 B can return state 126 to mux 106 A.
- Mux 106 A can then send packet 121 to destination host 107 B based on the mapping in state 126 .
- FIGS. 4A and 4B illustrate example computer architecture 400 for sharing state between muxes.
- computer architecture 400 includes muxes 401 A and 401 B and destination hosts 402 A, 402 B, and 402 C.
- mux 401 B receives packet 421 .
- Mux 401 B determines it lacks sufficient information to identify an appropriate destination host.
- mux 401 B sends packet 421 to mux 401 A (an owner mux).
- Mux 401 A receives packet 421 from mux 401 B.
- Mux 401 A identifies and returns state 426 to mux 401 B.
- State 426 maps a data flow for packet 421 to destination host 402 B.
- Mux 401 A also forwards packet 421 to destination host 402 B. Subsequently, mux 401 B receives packets 422 and 423 for the same data flow as packet 421 . Based on state 426 , mux 401 B sends packets 422 and 423 to destination host 402 B.
- mux 401 A receives packet 431 .
- Mux 401 B determines it lacks sufficient information to identify an appropriate destination host.
- mux 401 B sends packet 431 to mux 401 A (an owner mux).
- Mux 401 A receives packet 431 from mux 401 B.
- Mux 401 A identifies and returns state 436 to mux 401 B.
- State 436 maps a data flow for packet 431 to destination host 402 B.
- Mux 401 A sends packet 431 to destination host 402 B.
- mux 401 B receives packet 432 for the same data flow as packet 431 . Since mux 401 B has not yet received state 436 , mux 401 B determines it lacks sufficient information to identify an appropriate destination host. In response, mux 401 B also sends packet 432 to mux 401 A. Mux 401 A receives packet 432 from mux 401 B. Mux 401 A determines that is has already sent state 436 to mux 401 B. Mux 401 A sends packet 432 to destination host 402 B. Subsequently, mux 401 B receives packet 433 for the same data flow as packet 431 . Based on state 436 , mux 401 B sends packets 433 to destination host 402 B. Accordingly, embodiments of the invention can compensate for delays in the exchange of state between muxes.
- FIGS. 5A and 5B illustrate example computer architecture 500 for sharing state between muxes.
- computer architecture 500 includes muxes 501 A, 501 B, and 501 C and destination hosts 502 A, 502 B, and 502 C.
- Mux 501 A is the primary owner for an existing data flow including packets 521 and 522 (packets 521 and 522 are non-SYN packets).
- Mux 501 C is a backup owner for the data flow including packets 521 and 522 .
- Mux 501 A receives packet 521 .
- Mux 501 A determines that it is the owner of the existing data flow and that it lacks sufficient information to identify an appropriate destination host (i.e., mux 501 A lacks cached state for the existing data flow).
- mux 501 A refers to the current destination array (e.g., new array 109 ) to identify the destination host 502 A as the appropriate destination host.
- Mux 501 A also begins to track state 526 for the existing data flow.
- mux 501 A sends state 526 to mux 501 C.
- Mux 501 C receives state 526 from mux 501 A and caches state 526 .
- State 526 maps the existing data flow to destination host 502 A. Accordingly, if mux 501 A fails, mux 501 C can take over in providing state 526 to other muxes.
- Mux 501 A is the primary owner for an existing data flow including packets 531 and 532 (packets 531 and 532 are non-SYN packets).
- Mux 501 C is a backup owner for the data flow including packets 531 and 532 .
- Mux 501 B receives packets 531 and 532 .
- Mux 501 B has sufficient information to determine that destination host 502 A is the appropriate destination host for the existing data flow (i.e., it is either a new flow or the mux has cached information about the flow).
- Mux 501 B also determines that mux 501 A is the primary owner of the existing data flow.
- mux 501 B detects a transition and sends state 536 to mux 501 A.
- Mux 501 A receives state 536 from mux 501 B.
- State 536 maps the existing data flow to destination host 502 A.
- mux 501 A can send batch state updates to other backup owners. For example, mux 501 A can send state 537 to mux 501 C. Mux 501 C can receive state 537 from mux 501 A. State 537 can be a batch of state updates (including state 536 ) for active flows being tracked by mux 501 A.
- FIGS. 6A , 6 B, 6 C, and 6 D illustrate example computer architecture 600 for maintaining data flow to destination host mappings.
- FIG. 6A depicts an arrangement of destination host A 601 , destination host B 602 , and destination host C 603 in a steady state. Accordingly, old array 608 and new array 609 match one another. In a steady state, muxes can refer to an array to determine an appropriate destination host for a data flow.
- FIG. 6B depicts an arrangement of destination host A 601 , destination host B 602 , and destination host C 603 , wherein destination host C 603 is removed.
- Removal of a destination host can be essentially instantaneous. As such, removal of a destination host does not necessary indicate a transition in the arrangement of destination hosts.
- muxes can still refer to an array to determine an appropriate destination host for a data flow.
- FIG. 6C depicts an arrangement of destination host A 601 , destination host B 602 , destination host C 603 , and destination host D 604 , wherein destination host C 603 is replaced with destination host D 604 .
- Replacement of a destination host can also be essentially instantaneous. As such, replacement of a destination host does not necessary indicate a transition in the arrangement of destination hosts. Thus, upon replacement of a destination host, muxes can still refer to an array to determine an appropriate destination host for a data flow.
- FIG. 6D depicts an arrangement of destination host A 601 , destination host B 602 , destination host C 603 , and destination host D 604 , wherein destination host D 603 is added.
- Addition of a destination host can include a transition period and thus a transition in the arrangement of destination hosts.
- mappings in old array 608 and new array 609 can differ (since some data flows are re-allocated to destination host D 604 to balance out workload).
- muxes can track and exchange data flow state.
- the arrangement of destination hosts returns to a steady state and old array 608 and new array 609 match again.
- FIGS. 7A and 7B illustrate example computer architecture 700 for maintaining data flow to owner mux mappings.
- FIG. 7A depicts mux A 701 , mux B 702 , mux C 703 , and mux D 704 .
- Primary owner array 708 maps data flows to primary owner muxes.
- Backup owner array 709 maps data flows to backup owners muxes.
- the index position in an array can correspond to data flow ID.
- the primary owner for data flow ID 6 is mux B 702 .
- a backup owner for data flow ID 6 is mux C 703 .
- an owner detector e.g., 142 A, 142 B, 142 C, etc. uses a data flow ID as an index position into an array and sends state updates to the mux identified at the index position.
- FIG. 7B depicts a failure of mux C 703 .
- primary ownership for index positions (data flow IDs) 9 - 12 and backup ownership for index positions (data flow IDs) 5 - 8 are reallocated to remaining muxes.
- embodiments of the invention include load balancers using a consistent hashing algorithm to decide how new connections should be load balanced.
- Use of consistent hashing algorithm permits load balancers to minimize the amount of state that needs to be exchanged.
- Only flow states that cannot be determined using the hash and destination array need to be synchronized.
- Load balancers keep flow state information (destination address for a given flow) about incoming packets. When it is needed, i.e. such as, for example, when a change in destination host configuration is detected, selected state information is shared across load balancers in a deterministic way, which enables the authoritative (e.g., is the owner) load balancer to chose the correct destination host for a given flow.
- Each load balancer can reach the authoritative load balancer to learn about a flow that cannot be determined locally.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
Abstract
Description
- Not Applicable.
- Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing environments.
- In distributed computing systems, distributed load balancers are often used to share processing load across a number of computer systems. For example, a plurality of load balancers can be used to receive external communication directed to a plurality of processing endpoints. Each load balancer has some mechanism to insure that all external communication from the same origin is directed to the same processing endpoint.
- For load balancers to make accurate decisions on where to direct external communication (e.g., to which processing endpoint), load balancers share state with one another. For example, a decision made at one load balancer for communication for specified origin can be synchronized across other load balancers. Based on the synchronized state, any load balancer can then make an accurate decision with respect to sending communication from the specified origin to the same processing endpoint.
- Unfortunately, to maintain synchronized state among a plurality of load balancers, significant quantities of data often need to be exchanged between the plurality of load balancers. As a result, synchronizing state among load balancers becomes a bottleneck and limits the scalability of load balancers.
- The present invention extends to methods, systems, and computer program products for synchronizing state among load balancer components. In some embodiments, a load balancer receives a packet from a router. The packet contains source electronic address information identifying a source on the wide area network and destination electronic address information including a virtual electronic address. The load balancer uses an algorithm to generate a data flow identifier for the existing data flow from the source electronic address information and the destination electronic address information. The load balancer determines that the packet is for an existing data flow.
- The load balancer determines that the load balancer lacks sufficient information to identify a destination host, from among a plurality of destination hosts, that corresponds to the existing data flow. This includes the load balancer not having cached state that maps the existing data flow to one of the destination hosts in the plurality of destination hosts.
- In response to the determination, the load balancer identifies an owner load balancer that is designated as the owner of the existing data flow. Also in response to the determination, the load balancer sends a request for data flow state information to the owner load balancer. The load balancer receives state information from the owner load balancer. The state information identifies the destination host that corresponds to the existing data flow. The load balancer caches the received state information.
- On subsequent packets in this data flow, the load balancer sends a message back to the owner load balancer to indicate the continuation of the data flow. This continuation message needs only be sent once per idle timeout interval. The idle timeout interval determines how long a data flow retains its mapping to the same destination host even in absence of any packets.
- The load balancer determines that the received packet is for an existing data flow. The load balancer determines that the load balancer is not the owner of the existing data flow. The load balancer determines that the load balancer has cached state for the existing data flow. The cached state maps the existing data flow to one of the destination hosts in the plurality of destination hosts. The load balancer sends the received packet to the destination host mapped to the existing data flow. The load balancer determines whether it needs to send data flow continuation message to the owner load balancer. The load balancer sends the cached state to the owner load balancer.
- This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
- Additional features and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the invention. The features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.
- In order to describe the manner in which the above-recited and other advantages and features of the invention can be obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
-
FIG. 1 illustrates an example computer architecture that facilitates synchronizing state among load balancer components. -
FIG. 2 illustrates a flow chart of an example method for sharing state between load balancers. -
FIG. 3 illustrates a flow chart of an example method for sharing state between load balancers. -
FIGS. 4A and 4B illustrate an example computer architecture for sharing state between muxes. -
FIGS. 5A and 5B illustrate an example computer architecture for sharing state between muxes. -
FIGS. 6A , 6B, 6C, and 6D illustrate an example computer architecture for maintaining data flow to destination host mappings. -
FIGS. 7A and 7B illustrate an example computer architecture for maintaining data flow to owner mux mappings. - The present invention extends to methods, systems, and computer program products for synchronizing state among load balancer components. In some embodiments, a load balancer receives a packet from a router. The packet contains source electronic address information identifying a source on the wide area network and destination electronic address information including a virtual electronic address. The load balancer uses an algorithm to generate a data flow identifier for the existing data flow from the source electronic address information and the destination electronic address information. The load balancer determines that the packet is for an existing data flow.
- The load balancer determines that the load balancer lacks sufficient information to identify a destination host, from among a plurality of destination hosts, that corresponds to the existing data flow. This includes the load balancer not having cached state that maps the existing data flow to one of the destination hosts in the plurality of destination hosts.
- In response to the determination, the load balancer identifies an owner load balancer that is designated as the owner of the existing data flow. Also in response to the determination, the load balancer sends a request for data flow state information to the owner load balancer. The load balancer receives state information from the owner load balancer. The state information identifies the destination host that corresponds to the existing data flow. The load balancer caches the received state information.
- On subsequent packets in this data flow, the load balancer sends a message back to the owner load balancer to indicate the continuation of the data flow. This continuation message needs only be sent once per idle timeout interval. The idle timeout interval determines how long a data flow retains its mapping to the same destination host even in absence of any packets.
- The load balancer determines that the received packet is for an existing data flow. The load balancer determines that the load balancer is not the owner of the existing data flow. The load balancer determines that the load balancer has cached state for the existing data flow. The cached state maps the existing data flow to one of the destination hosts in the plurality of destination hosts. The load balancer sends the received packet to the destination host mapped to the existing data flow. The load balancer determines whether it needs to send data flow continuation message to the owner load balancer. The load balancer sends the cached state to the owner load balancer.
- Embodiments of the present invention may comprise or utilize a special purpose or general-purpose computer including computer hardware, such as, for example, one or more processors and system memory, as discussed in greater detail below. Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system. Computer-readable media that store computer-executable instructions are physical storage media. Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example, and not limitation, embodiments of the invention can comprise at least two distinctly different kinds of computer-readable media: computer storage media (devices) and transmission media.
- Computer storage media (devices) includes RAM, ROM, EEPROM, CD-ROM, DVD, or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer.
- A “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules and/or other electronic devices. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a transmission medium. Transmissions media can include a network and/or data links which can be used to carry or desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
- Further, upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to computer storage media (devices) (or vice versa). For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a “NIC”), and then eventually transferred to computer system RAM and/or to less volatile computer storage media (devices) at a computer system. Thus, it should be understood that computer storage media (devices) can be included in computer system components that also (or even primarily) utilize transmission media.
- Computer-executable instructions comprise, for example, instructions and data which, when executed at a processor, cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims.
- Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, routers, switches, and the like. The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices.
-
FIG. 1 illustrates anexample computer architecture 100 that facilitates synchronizing state among load balancer components. Referring toFIG. 1 ,computer architecture 100 includesrouter 102,load balancing manager 103, multiplexers (“muxes”) 106, and destination hosts 107. Each of the depicted computer systems is connected to one another over (or is part of) a network, such as, for example, a Local Area Network (“LAN”) and/or a Wide Area Network (“WAN”).Router 102 is further connected tonetwork 101.Network 101 can be a further WAN, such as, for example, the Internet. Accordingly, each of the depicted components as well as any other connected computer systems and their components, can create message related data and exchange message related data (e.g., Internet Protocol (“IP”) datagrams and other higher layer protocols that utilize IP datagrams, such as, Transmission Control Protocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple Mail Transfer Protocol (“SMTP”), etc.) over the described networks. - Generally,
router 102 interfaces betweennetwork 101 and other components ofcomputer architecture 101 to appropriately route packets betweennetwork 101 and the other components ofcomputer architecture 100.Router 102 can be configured to receive messages fromnetwork 101 and forward those messages to appropriate components ofcomputer architecture 100. For example,router 102 can be configured to forward IP traffic for Virtual Internet Protocol Addresses (“VIPs”) to IP addresses of the physical interfaces atmuxes 106.Router 102 can support Equal Cost Multi-Path (“ECMP”) routing to virtually any number (e.g., 4, 8, 16, etc.) of IP addresses. Accordingly, a plurality ofmuxes 106 can be configured as active muxes. In other embodiments, (e.g., when ECMP is not supported), one mux can be configured as an active mux and zero or more other muxes configured as stand-by muxes. - In further embodiments, a Domain Name Services (“DNS”) round robin approach is used. One or more VIPs are assigned to and shared between a plurality of
muxes 106. A Domain Name Services (“DNS”) name is registered to resolve the one or more VIPs. If amux 106 fails, the VIPs it owns are failed over toother muxes 106. - In additional embodiments, a VIP is configured on the network interface card for each mux. One of the muxes (e.g., a master node) is set to respond to Address Resolution Protocol (“ARP”) requests for the VIP. Thus,
router 102 can send any packets for the VIP to the master node. The master node can then performLayer 2 forwarding based on current state and/or load balancer rules. Use of a “master node” can mitigate flooding and is much cheaper thanLayer 3 forwarding. - As depicted,
muxes 106 include a plurality ofmuxes including muxes mux 106 is configured to receive a packet, identify the appropriate destination host for the packet, and forward the packet to the appropriate destination host. In some embodiments, anappropriate destination host 107 for a packet is identified from one or more of: the contents of the packet, cached state at a receiving mux, cached state at other muxes, whether the packet is for an existing data flow or a new data flow, and the configuration of destination hosts 107. - Each mux includes an ID generator, an owner detector, and a state manager. For example, muxes 106A, 106B, and 106C include
ID generators owner detectors state managers destination host 107 identified, for example, by (Destination Host IP:port). A corresponding state manager can cache state mapping a data flow ID and (Destination Host IP:port). Thus, when further packets having the same flow ID are received, the mux can refer to the cached state to identify theappropriate destination host 107 for each of the further packets. - In some embodiments, different portions of a data flow ID space are “owned” by different muxes. An owner detector at each mux is configured to determine the owner mux for a data flow ID. Then owner detector can receive a data flow ID as input and return the IP address for the owner mux as output. Thus, each mux can send state to and/or request state from an owner mux for each data flow ID. For example, when a mux identifies an appropriate destination host for a data flow ID, the mux can (in addition to also caching) forward the appropriate destination host to the owner mux for the data flow ID. On the other hand, when a mux lacks sufficient information to identify an appropriate destination host for a data flow ID, the mux can query the owner mux to obtain the appropriate destination host.
- In some embodiments, when a mux lacks sufficient information to identify the appropriate destination host for a packet corresponding to a data flow ID, the mux sends the packet to the owner mux for the data flow ID. In response to receiving the packet, the owner mux determines the appropriate destination host for the data flow ID. Also, the owner mux sends cached state (either generated at the owner mux or received from further other muxes) mapping the data flow ID to the appropriate destination host to the mux.
- In other embodiments, when a mux lacks sufficient information to identify the appropriate destination host for a data flow ID, the mux sends an express request for cached state to the owner mux for the data flow ID. In response to receiving the express request, the owner mux sends cached state (either generated at the owner mux or received from further other muxes) mapping the data flow ID to the appropriate destination host to the mux. The mux then sends the packet to the appropriate destination host.
- Generally,
load balancing manager 103 is configured to monitor the arrangement of destination hosts 107 for transitions (e.g., when a new destination host is being added).Destination array generator 104 can, from time to time, formulate (e.g., using a hashing function) an array that maps data flow IDs to destination hosts.Load balancing manger 103 can maintain two versions of the array, a current version of the array (e.g., new array 109) and the immediate previous version of the array (e.g., old array 108). The positions within the array can correspond to data flow IDs. For example,array position 1 can correspond todata flow ID 1, etc. Thus, as indicated inarrays destination host 107B is the appropriate destination host fordata flow ID 1. -
Load balancing manager 103 can communicate the two versions of the array to muxes 106. When the arrangement of destination hosts 107 is in a steady state, mappings in the current and immediate previous versions of the array match. As such, in steady state, amux 106 can refer to the mappings to determine where to send a packet for a specified data flow ID (even when the mux lacks cached state). - On the other hand, when the arrangement of destination hosts 107 is in transition (e.g., when a
new destination host 107 is being added), mappings in the current and immediate previous versions of the array differ. For example, when anew destination host 107 is added, the data flow ID space can be spread across more destination hosts 107 to reduce the load on individual destination hosts 107. For example,difference 111 indicates that a portion of the data flow ID space previously corresponding todestination host 107D (e.g., data flow ID 3) now corresponds todestination host 107C. To increase the likelihood of packets for existing data flows continuing to the same destination host, muxes 106 can refer to cached state (either locally or queried from an owner mux) when the arrangement of destination hosts 107 is in transition. -
FIG. 2 illustrates a flow chart of anexample method 200 for sharing state between load balancers.Method 200 will be described with respect to the components and data ofcomputer architecture 100. -
Method 200 includes an act of the load balancer receiving a packet from the router, the packet containing source electronic address information identifying a source on the wide area network and destination electronic address information including the virtual electronic address (act 201). For example,mux 106A can receivepacket 121 fromrouter 102.Packet 121 contains source (e.g., IP)address 122 identifying a source onnetwork 101.Packet 121 also containsdestination address 123.Destination address 123 can be a Virtual IP address used to contact destination hosts 107. -
Method 200 includes an act of the load balancer determining that the packet is for an existing data flow (act 202). For example,mux 106 can determine thatpacket 121 is for an existing data flow. The first packet in a data flow (e.g., a SYN packet for Transmission Control Protocol, TCP, packets) can contain a first packet indicator. Other packets in the data flow (e.g., non-SYN packets for TCP) do not contain the first packet indicator. Thus, when a packet does not contain a first packet indicator, a mux can infer that the packet is for an existing data flow.Mux 106A can determine thatpacket 121 does not contain a first packet indicator. As such, much 106A infers thatpacket 121 is for an existing data flow. -
Method 200 includes an act of the load balancer using an algorithm to generate a data flow identifier for the existing data flow from the source electronic address information and the destination electronic address information (act 203). For example, ID generator can use a hash function to hashsource address 122 anddestination address 123 intoflow ID 144.Flow ID 144 can represent an index position, for example, ofnew array 109. For example,Flow ID 144 can represent the 4th position innew array 109. In some embodiments, a hash algorithm is used to hash a source IP address and VIP into a data flow identifier. -
Method 200 includes an act of load balancer determining that the load balancer lacks sufficient information to identify the destination host, from among the plurality of destination hosts, that corresponds to the existing data flow (act 204). For example,mux 106A can determine thatmux 106A lacks sufficient information to identify the appropriate destination host, from among destination hosts 107, that corresponds to flowID 144. - Act 204 can include an act of the load balancer determining that the load balancer does not have any cached state mapping the existing data flow to one of the destination hosts in the plurality of destination hosts (act 205). For example,
state manager 143A can determine thatmux 106A does not have any cached statemapping flow ID 144 to one of destination hosts 107.State manager 143A can refer tostate 146A (cached state) to check for a destination host mapping forflow ID 144. - Act 204 can include an act of the load balancer detecting that the arrangement of the plurality of destination hosts is in a transition. For example,
mux 106A can detect a transition in the arrangement of destination hosts 107.Destination host 107C can be added to destination hosts 107 during the lifetime of one or more existing data flows (e.g., flow ID 144).Destination array generator 104 can detect the change. In response,destination array generator 104 can generatenew array 109.Mux 106A can refer toold array 108 andnew array 109. As depicted at least bydifference 111,mux 106A detects the transition. That is, a portion of the data flow ID space is now allocated todestination host 107C. -
Method 200 includes in response to the determination that the load balancer lacks sufficient information to identify the destination host that corresponds to the existing data flow, an act of the load balancer identifying an owner load balancer that is designated as the owner of the existing data flow, the owner load balancer selected from among the one or more other load balancers (act 206). For example,mux 106A can identifymux 106B as the owner offlow ID 144.Owner detector 142A can receiveflow ID 144 as input and output the IP address formux 106B as the owner offlow ID 144. - In some embodiments,
mux 106A uses a second hashing algorithm to hashsource address 122 anddestination address 123 into a second hash value. The second hash value represents an index position in an owner array (e.g., depicted inFIGS. 7A and 7B ). The owner array maps data flows to corresponding owner muxes that maintain state for mapped data flows when a transition is detected. Thus,mux 106A can refer to a index position forflow ID 144 in an owner array to identifymux 106B as the owner offlow ID 144. -
Load balancing manager 103 can monitormuxes 106 and adjust primary owner arrays and backup owner arrays for data flows as muxes are added and/or removed frommuxes 106.Load balancing manager 103 can distribute ownership for data flows to (the extent possible) balance primary and backup ownership acrossmuxes 106. -
Method 200 also includes in response to the determination that the load balancer lacks sufficient information to identify the destination host that corresponds to the existing data flow, an act of the load balancer sending a request for data flow state information to the owner load balancer (act 207). For example,mux 106A can sendpacket 121 to mux 106B. Alternately,mux 106A can retainpacket 121 and send an express request for data flow state information forflow ID 144 to mux 106B. -
Mux 106B can receivepacket 121 frommux 106A. Upon receivingpacket 121,ID generator 141B can generateflow ID 144 fromsource address 122 anddestination address 123.Owner detector 142B can then determine thatmux 106B is the owner forflow ID 144.State manager 142B can refer tostate 146B to accessstate 126.State 126 can map flowID 144 todestination host 107B. If no state is found,mux 106B can generatenew state 126 using the current destination array.Mux 106B can sendpacket 121 todestination host 107B.Mux 106B can returnstate 126 to mux 106A.Mux 106B can also sendstate 126 to backup owner corresponding to this flow. - Alternately,
mux 106B can receive an express request for data flow state information forflow ID 144 frommux 106A.Owner detector 142B can determine thatmux 106B is the owner forflow ID 144.State manager 142B can refer tostate 146B to accessstate 126.Mux 106B can returnstate 126 to mux 106A. -
Method 200 includes an act of the load balancer receiving state information from the owner load balancer, the state information identifying the destination host that corresponds to the existing data flow (act 208). For example,mux 106A can receivestate 126 frommux 106B.Method 200 includes an act of the load balancer caching the received state information (act 209). For example,mux 106A cancache state 126 instate 146A. When mux 106A receivesstate 126 in response to an express request,mux 106A can then sendpacket 121 todestination host 107B. - Further, when subsequent packets for
flow ID 144 are received (even ifmux 106B sendspacket 121 todestination host 107B),mux 106A can identifydestination host 107B as the appropriate destination host for the subsequent packets. For example,mux 106A can receivepacket 132.Packet 132 containssource address 122 anddestination address 123.ID generator 141B can determine thatpacket 132 corresponds to flowID 144.State manager 143B can refer tostate 146A to identify thatdestination host 107B is the appropriate destination host forflow ID 144.Mux 106A can then sendpacket 132 todestination host 107B. - Other muxes can also receive packets for
flow ID 144. If these other muxes have cached state for flow ID 144 (either self generated or queried from another mux) they can send packets ontodestination host 107B. For example,mux 106C can receivepacket 131.Packet 131 containssource address 122 anddestination address 123.ID generator 141C can determine thatpacket 132 corresponds to flowID 144.State manager 143C can refer tostate 146C to identify thatdestination host 107B is the appropriate destination host forflow ID 144.Mux 106C can then sendpacket 131 todestination host 107B. - Further, when an arrangement of destination host is in a transition, muxes with state for existing data flows that have a different destination host in the old and new destination array can send the state to an owner mux for the data flows. For example, it may be that the addition of
destination host 107C causes a transition in destination hosts 107. Upon detecting thetransition mux 106C can have state for one or more existing data flows for which other muxes, such as, for example,mux 106A and/ormux 106B are owners. In response to detecting the transition,mux 106 can send state for existing data flows that have a different destination host in the old and new destination array to the appropriate owner mux. For example,mux 106C can send state forflow ID 144 to mux 106C (not shown). During a transition, appropriate owner muxes can receive state from other muxes. For example,mux 106A can receive state forflow ID 144 frommux 106C (not shown). -
FIG. 3 illustrates a flow chart of anexample method 300 for sharing state between load balancers.Method 300 will be described with respect to the components and data ofcomputer architecture 100. -
Method 300 includes an act of the load balancer receiving a packet from another load balancer included in the one or more other load balancers, the packet containing source electronic address information identifying a source on the wide area network and destination electronic address information including the virtual electronic address (act 301). For example,mux 106B can receivepacket 121 frommux 106A.Method 300 includes an act of the load balancer determining that the received packet is for an existing data flow (act 302). For example,id generator 144 can determine thatpacket 121 corresponds to flow ID144.Method 300 includes an act of the load balancer determining that the load balancer is the owner of the existing data flow (act 302). For example,owner detector 142B can determine thatmux 106B is the owner offlow ID 144. -
Method 300 includes an act of the load balancer determining that the load balancer has cached state for the existing data flow, the cached state mapping the existing data flow to one of the destination hosts in the plurality of destination hosts (act 304). For example,state manager 142B can refer tostate 146B to accessstate 126.State 126 can indicate thatflow ID 144 corresponds todestination host 107B. Alternately,state manager 142B can generatestate 126. -
Method 300 includes an act of the load balancer sending the received packet to the destination host mapped to the existing data flow (act 305). For example,mux 106B can sendpacket 121 todestination host 107B.Method 300 includes an act of load balancer sending the cached state to the other load balancer (act 306). For example,mux 106B can returnstate 126 to mux 106A. - Alternately,
mux 106B can receive an express request frommux 106A for statemapping flow ID 144 to anappropriate destination host 107. In response,state manager 142B can refer tostate 146B to accessstate 126.State 126 can indicate thatflow ID 144 corresponds todestination host 107B.Mux 106B can returnstate 126 to mux 106A.Mux 106A can then sendpacket 121 todestination host 107B based on the mapping instate 126. -
FIGS. 4A and 4B illustrateexample computer architecture 400 for sharing state between muxes. As depicted,computer architecture 400 includesmuxes FIG. 4A ,mux 401B receivespacket 421.Mux 401B determines it lacks sufficient information to identify an appropriate destination host. In response,mux 401B sendspacket 421 to mux 401A (an owner mux).Mux 401A receivespacket 421 frommux 401B.Mux 401A identifies and returnsstate 426 to mux 401B.State 426 maps a data flow forpacket 421 todestination host 402B.Mux 401A also forwardspacket 421 todestination host 402B. Subsequently,mux 401B receivespackets packet 421. Based onstate 426,mux 401B sendspackets destination host 402B. - In
FIG. 4B ,mux 401A receivespacket 431.Mux 401B determines it lacks sufficient information to identify an appropriate destination host. In response,mux 401B sendspacket 431 to mux 401A (an owner mux).Mux 401A receivespacket 431 frommux 401B.Mux 401A identifies and returnsstate 436 to mux 401B.State 436 maps a data flow forpacket 431 todestination host 402B.Mux 401A sendspacket 431 todestination host 402B. - However, prior to receiving
state 436,mux 401B receivespacket 432 for the same data flow aspacket 431. Sincemux 401B has not yet receivedstate 436,mux 401B determines it lacks sufficient information to identify an appropriate destination host. In response,mux 401B also sendspacket 432 to mux 401A.Mux 401A receivespacket 432 frommux 401B.Mux 401A determines that is has already sentstate 436 to mux 401B.Mux 401A sendspacket 432 todestination host 402B. Subsequently,mux 401B receivespacket 433 for the same data flow aspacket 431. Based onstate 436,mux 401B sendspackets 433 todestination host 402B. Accordingly, embodiments of the invention can compensate for delays in the exchange of state between muxes. -
FIGS. 5A and 5B illustrateexample computer architecture 500 for sharing state between muxes. As depicted,computer architecture 500 includesmuxes - In
FIG. 5A ,Mux 501A is the primary owner for an existing dataflow including packets 521 and 522 (packets Mux 501C is a backup owner for the dataflow including packets -
Mux 501A receivespacket 521.Mux 501A determines that it is the owner of the existing data flow and that it lacks sufficient information to identify an appropriate destination host (i.e.,mux 501A lacks cached state for the existing data flow). In response,mux 501A refers to the current destination array (e.g., new array 109) to identify thedestination host 502A as the appropriate destination host.Mux 501A also begins to trackstate 526 for the existing data flow. Upon a subsequent transition and determination that state 526 is different from the new array,mux 501A sendsstate 526 to mux 501C.Mux 501C receivesstate 526 frommux 501A and caches state 526.State 526 maps the existing data flow todestination host 502A. Accordingly, ifmux 501A fails,mux 501C can take over in providingstate 526 to other muxes. - In
FIG. 5B ,Mux 501A is the primary owner for an existing dataflow including packets 531 and 532 (packets Mux 501C is a backup owner for the dataflow including packets -
Mux 501B receivespackets Mux 501B has sufficient information to determine thatdestination host 502A is the appropriate destination host for the existing data flow (i.e., it is either a new flow or the mux has cached information about the flow).Mux 501B also determines thatmux 501A is the primary owner of the existing data flow. Upon a change in the destination array,mux 501B detects a transition and sendsstate 536 to mux 501A.Mux 501A receivesstate 536 frommux 501B.State 536 maps the existing data flow todestination host 502A. - If more packets belonging to the same flow keep arriving at
Mux 501B, it keeps sending a batch update 538 (that includesstate 536 and other states for whichMux 501A is the owner) to theowner mux 501A from time to time so that the owner mux always has the current information about all the flows it is the owner of. - From time to time,
mux 501A can send batch state updates to other backup owners. For example,mux 501A can sendstate 537 to mux 501C.Mux 501C can receivestate 537 frommux 501A.State 537 can be a batch of state updates (including state 536) for active flows being tracked bymux 501A. -
FIGS. 6A , 6B, 6C, and 6D illustrateexample computer architecture 600 for maintaining data flow to destination host mappings.FIG. 6A depicts an arrangement ofdestination host A 601,destination host B 602, anddestination host C 603 in a steady state. Accordingly,old array 608 andnew array 609 match one another. In a steady state, muxes can refer to an array to determine an appropriate destination host for a data flow. -
FIG. 6B depicts an arrangement ofdestination host A 601,destination host B 602, anddestination host C 603, whereindestination host C 603 is removed. Removal of a destination host can be essentially instantaneous. As such, removal of a destination host does not necessary indicate a transition in the arrangement of destination hosts. Thus, upon removal of a destination host, muxes can still refer to an array to determine an appropriate destination host for a data flow. -
FIG. 6C depicts an arrangement ofdestination host A 601,destination host B 602,destination host C 603, anddestination host D 604, whereindestination host C 603 is replaced withdestination host D 604. Replacement of a destination host can also be essentially instantaneous. As such, replacement of a destination host does not necessary indicate a transition in the arrangement of destination hosts. Thus, upon replacement of a destination host, muxes can still refer to an array to determine an appropriate destination host for a data flow. -
FIG. 6D depicts an arrangement ofdestination host A 601,destination host B 602,destination host C 603, anddestination host D 604, whereindestination host D 603 is added. Addition of a destination host can include a transition period and thus a transition in the arrangement of destination hosts. During the transition period, mappings inold array 608 andnew array 609 can differ (since some data flows are re-allocated todestination host D 604 to balance out workload). When different mappings are detected, muxes can track and exchange data flow state. When all the owner muxes have enough information to make decisions about the flows they own, the arrangement of destination hosts returns to a steady state andold array 608 andnew array 609 match again. -
FIGS. 7A and 7B illustrateexample computer architecture 700 for maintaining data flow to owner mux mappings.FIG. 7A depictsmux A 701,mux B 702,mux C 703, andmux D 704.Primary owner array 708 maps data flows to primary owner muxes.Backup owner array 709 maps data flows to backup owners muxes. The index position in an array can correspond to data flow ID. For example, the primary owner fordata flow ID 6 ismux B 702. Similarly, a backup owner fordata flow ID 6 ismux C 703. In some embodiments, an owner detector (e.g., 142A, 142B, 142C, etc.) uses a data flow ID as an index position into an array and sends state updates to the mux identified at the index position. - When a mux fails, primary and backup ownership responsibilities for the mux are re-allocated.
FIG. 7B depicts a failure ofmux C 703. In response to the failure, primary ownership for index positions (data flow IDs) 9-12 and backup ownership for index positions (data flow IDs) 5-8 are reallocated to remaining muxes. - Accordingly, embodiments of the invention include load balancers using a consistent hashing algorithm to decide how new connections should be load balanced. Use of consistent hashing algorithm permits load balancers to minimize the amount of state that needs to be exchanged. In particular, only flow states that cannot be determined using the hash and destination array need to be synchronized. Load balancers keep flow state information (destination address for a given flow) about incoming packets. When it is needed, i.e. such as, for example, when a change in destination host configuration is detected, selected state information is shared across load balancers in a deterministic way, which enables the authoritative (e.g., is the owner) load balancer to chose the correct destination host for a given flow. Each load balancer can reach the authoritative load balancer to learn about a flow that cannot be determined locally.
- The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Claims (20)
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/972,340 US8755283B2 (en) | 2010-12-17 | 2010-12-17 | Synchronizing state among load balancer components |
EP11849192.7A EP2652924B1 (en) | 2010-12-17 | 2011-12-16 | Synchronizing state among load balancer components |
PCT/US2011/065659 WO2012083264A2 (en) | 2010-12-17 | 2011-12-16 | Synchronizing state among load balancer components |
CN201110444322.1A CN102857438B (en) | 2010-12-17 | 2011-12-16 | The state of synchronized loading balancer inter-module |
JP2013544852A JP5889914B2 (en) | 2010-12-17 | 2011-12-16 | State synchronization between load balancer components |
US14/198,465 US20140185446A1 (en) | 2010-12-17 | 2014-03-05 | Synchronizing state among load balancer components |
US14/546,729 US9438520B2 (en) | 2010-12-17 | 2014-11-18 | Synchronizing state among load balancer components |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/972,340 US8755283B2 (en) | 2010-12-17 | 2010-12-17 | Synchronizing state among load balancer components |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/198,465 Continuation US20140185446A1 (en) | 2010-12-17 | 2014-03-05 | Synchronizing state among load balancer components |
Publications (2)
Publication Number | Publication Date |
---|---|
US20120155266A1 true US20120155266A1 (en) | 2012-06-21 |
US8755283B2 US8755283B2 (en) | 2014-06-17 |
Family
ID=46234270
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/972,340 Active 2031-09-19 US8755283B2 (en) | 2010-12-17 | 2010-12-17 | Synchronizing state among load balancer components |
US14/198,465 Abandoned US20140185446A1 (en) | 2010-12-17 | 2014-03-05 | Synchronizing state among load balancer components |
US14/546,729 Active 2031-04-23 US9438520B2 (en) | 2010-12-17 | 2014-11-18 | Synchronizing state among load balancer components |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/198,465 Abandoned US20140185446A1 (en) | 2010-12-17 | 2014-03-05 | Synchronizing state among load balancer components |
US14/546,729 Active 2031-04-23 US9438520B2 (en) | 2010-12-17 | 2014-11-18 | Synchronizing state among load balancer components |
Country Status (5)
Country | Link |
---|---|
US (3) | US8755283B2 (en) |
EP (1) | EP2652924B1 (en) |
JP (1) | JP5889914B2 (en) |
CN (1) | CN102857438B (en) |
WO (1) | WO2012083264A2 (en) |
Cited By (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130013668A1 (en) * | 2011-07-04 | 2013-01-10 | Fujitsu Limited | Information processing apparatus, server selecting method and recording medium |
US20130132533A1 (en) * | 2011-11-15 | 2013-05-23 | Nicira, Inc. | Control plane interface for logical middlebox services |
US8805990B2 (en) * | 2012-07-12 | 2014-08-12 | Microsoft Corporation | Load balancing for single-address tenants |
WO2015080825A1 (en) * | 2013-11-27 | 2015-06-04 | Avi Networks | Method and system for distributed load balancing |
US9294408B1 (en) * | 2012-07-02 | 2016-03-22 | Amazon Technologies, Inc. | One-to-many stateless load balancing |
EP2987305A4 (en) * | 2013-04-16 | 2016-09-28 | Amazon Tech Inc | MULTI-PATH ROUTING IN A DISTRIBUTED LOAD BALANCING DEVICE |
EP3038306A4 (en) * | 2013-08-22 | 2016-10-05 | Zte Corp | Load balancing method and system |
US9553809B2 (en) | 2013-04-16 | 2017-01-24 | Amazon Technologies, Inc. | Asymmetric packet flow in a distributed load balancer |
US9559961B1 (en) | 2013-04-16 | 2017-01-31 | Amazon Technologies, Inc. | Message bus for testing distributed load balancers |
US9577845B2 (en) | 2013-09-04 | 2017-02-21 | Nicira, Inc. | Multiple active L3 gateways for logical networks |
US9667739B2 (en) | 2011-02-07 | 2017-05-30 | Microsoft Technology Licensing, Llc | Proxy-based cache content distribution and affinity |
US9667711B2 (en) | 2014-03-26 | 2017-05-30 | International Business Machines Corporation | Load balancing of distributed services |
US9774537B2 (en) | 2014-09-30 | 2017-09-26 | Nicira, Inc. | Dynamically adjusting load balancing |
US9826033B2 (en) | 2012-10-16 | 2017-11-21 | Microsoft Technology Licensing, Llc | Load balancer bypass |
US9843520B1 (en) * | 2013-08-15 | 2017-12-12 | Avi Networks | Transparent network-services elastic scale-out |
US9871712B1 (en) | 2013-04-16 | 2018-01-16 | Amazon Technologies, Inc. | Health checking in a distributed load balancer |
US9917727B2 (en) * | 2014-06-03 | 2018-03-13 | Nicira, Inc. | Consistent hashing for network traffic dispatching |
CN107979646A (en) * | 2017-12-07 | 2018-05-01 | 郑州云海信息技术有限公司 | A kind of PaaS platform load-balancing method based on consistent hashing strategy |
US20180139122A1 (en) * | 2016-11-17 | 2018-05-17 | Nicira, Inc. | Enablement of multi-path routing in virtual edge systems |
US9998530B2 (en) | 2013-10-15 | 2018-06-12 | Nicira, Inc. | Distributed global load-balancing system for software-defined data centers |
US10038628B2 (en) | 2015-04-04 | 2018-07-31 | Nicira, Inc. | Route server mode for dynamic routing between logical and physical networks |
US10069903B2 (en) | 2013-04-16 | 2018-09-04 | Amazon Technologies, Inc. | Distributed load balancer |
US10091161B2 (en) | 2016-04-30 | 2018-10-02 | Nicira, Inc. | Assignment of router ID for logical routers |
US10129077B2 (en) | 2014-09-30 | 2018-11-13 | Nicira, Inc. | Configuring and operating a XaaS model in a datacenter |
US10135914B2 (en) | 2013-04-16 | 2018-11-20 | Amazon Technologies, Inc. | Connection publishing in a distributed load balancer |
US10164881B2 (en) | 2014-03-14 | 2018-12-25 | Nicira, Inc. | Route advertisement by managed gateways |
US10237123B2 (en) | 2016-12-21 | 2019-03-19 | Nicira, Inc. | Dynamic recovery from a split-brain failure in edge nodes |
US10333849B2 (en) | 2016-04-28 | 2019-06-25 | Nicira, Inc. | Automatic configuration of logical routers on edge nodes |
US10511658B1 (en) * | 2014-06-13 | 2019-12-17 | Amazon Technologies, Inc. | Computing resource transition notification and pending state |
US10560320B2 (en) | 2016-06-29 | 2020-02-11 | Nicira, Inc. | Ranking of gateways in cluster |
US10594743B2 (en) | 2015-04-03 | 2020-03-17 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
US10616045B2 (en) | 2016-12-22 | 2020-04-07 | Nicira, Inc. | Migration of centralized routing components of logical router |
US10637914B2 (en) | 2013-03-15 | 2020-04-28 | Vmware, Inc. | Distributed network services |
US10659252B2 (en) | 2018-01-26 | 2020-05-19 | Nicira, Inc | Specifying and utilizing paths through a network |
US10693782B2 (en) | 2013-05-09 | 2020-06-23 | Nicira, Inc. | Method and system for service switching using service tags |
US10728174B2 (en) | 2018-03-27 | 2020-07-28 | Nicira, Inc. | Incorporating layer 2 service between two interfaces of gateway device |
US10771318B1 (en) | 2018-10-24 | 2020-09-08 | Vmware, Inc | High availability on a distributed networking platform |
US10797966B2 (en) | 2017-10-29 | 2020-10-06 | Nicira, Inc. | Service operation chaining |
US10797910B2 (en) | 2018-01-26 | 2020-10-06 | Nicira, Inc. | Specifying and utilizing paths through a network |
US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US10812576B1 (en) | 2019-05-31 | 2020-10-20 | Microsoft Technology Licensing, Llc | Hardware load balancer gateway on commodity switch hardware |
US10868875B2 (en) | 2013-08-15 | 2020-12-15 | Vmware, Inc. | Transparent network service migration across service devices |
US10929171B2 (en) | 2019-02-22 | 2021-02-23 | Vmware, Inc. | Distributed forwarding for performing service chain operations |
US10938668B1 (en) * | 2016-09-30 | 2021-03-02 | Amazon Technologies, Inc. | Safe deployment using versioned hash rings |
US10944673B2 (en) | 2018-09-02 | 2021-03-09 | Vmware, Inc. | Redirection of data messages at logical network gateway |
US10999060B2 (en) | 2018-10-26 | 2021-05-04 | Advanced New Technologies Co., Ltd. | Data processing method and apparatus |
US11012420B2 (en) | 2017-11-15 | 2021-05-18 | Nicira, Inc. | Third-party service chaining using packet encapsulation in a flow-based forwarding element |
US11140218B2 (en) | 2019-10-30 | 2021-10-05 | Vmware, Inc. | Distributed service chain across multiple clouds |
US11153406B2 (en) | 2020-01-20 | 2021-10-19 | Vmware, Inc. | Method of network performance visualization of service function chains |
US11212356B2 (en) | 2020-04-06 | 2021-12-28 | Vmware, Inc. | Providing services at the edge of a network using selected virtual tunnel interfaces |
US11223494B2 (en) | 2020-01-13 | 2022-01-11 | Vmware, Inc. | Service insertion for multicast traffic at boundary |
US11258760B1 (en) | 2018-06-22 | 2022-02-22 | Vmware, Inc. | Stateful distributed web application firewall |
US11283717B2 (en) | 2019-10-30 | 2022-03-22 | Vmware, Inc. | Distributed fault tolerant service chain |
US11283697B1 (en) | 2015-03-24 | 2022-03-22 | Vmware, Inc. | Scalable real time metrics management |
CN114928615A (en) * | 2022-05-19 | 2022-08-19 | 网宿科技股份有限公司 | Load balancing method, device, equipment and readable storage medium |
US11595250B2 (en) | 2018-09-02 | 2023-02-28 | Vmware, Inc. | Service insertion at logical network gateway |
US11611625B2 (en) | 2020-12-15 | 2023-03-21 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11659061B2 (en) | 2020-01-20 | 2023-05-23 | Vmware, Inc. | Method of adjusting service function chains to improve network performance |
US11722367B2 (en) | 2014-09-30 | 2023-08-08 | Nicira, Inc. | Method and apparatus for providing a service with a plurality of service nodes |
US11734043B2 (en) | 2020-12-15 | 2023-08-22 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11799761B2 (en) | 2022-01-07 | 2023-10-24 | Vmware, Inc. | Scaling edge services with minimal disruption |
US11888747B2 (en) | 2022-01-12 | 2024-01-30 | VMware LLC | Probabilistic filters for use in network forwarding and services |
US12081437B2 (en) | 2022-01-12 | 2024-09-03 | VMware LLC | Probabilistic filters for use in network forwarding and services |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7675854B2 (en) | 2006-02-21 | 2010-03-09 | A10 Networks, Inc. | System and method for an adaptive TCP SYN cookie with time validation |
US9960967B2 (en) | 2009-10-21 | 2018-05-01 | A10 Networks, Inc. | Determining an application delivery server based on geo-location information |
US9215275B2 (en) | 2010-09-30 | 2015-12-15 | A10 Networks, Inc. | System and method to balance servers based on server load status |
US9609052B2 (en) | 2010-12-02 | 2017-03-28 | A10 Networks, Inc. | Distributing application traffic to servers based on dynamic service response time |
US8897154B2 (en) | 2011-10-24 | 2014-11-25 | A10 Networks, Inc. | Combining stateless and stateful server load balancing |
US9094364B2 (en) | 2011-12-23 | 2015-07-28 | A10 Networks, Inc. | Methods to manage services over a service gateway |
US10044582B2 (en) | 2012-01-28 | 2018-08-07 | A10 Networks, Inc. | Generating secure name records |
JP2015534769A (en) * | 2012-09-25 | 2015-12-03 | エイ10 ネットワークス インコーポレイテッドA10 Networks, Inc. | Load balancing in data networks |
US10002141B2 (en) | 2012-09-25 | 2018-06-19 | A10 Networks, Inc. | Distributed database in software driven networks |
US9843484B2 (en) | 2012-09-25 | 2017-12-12 | A10 Networks, Inc. | Graceful scaling in software driven networks |
US10021174B2 (en) | 2012-09-25 | 2018-07-10 | A10 Networks, Inc. | Distributing service sessions |
US9531846B2 (en) | 2013-01-23 | 2016-12-27 | A10 Networks, Inc. | Reducing buffer usage for TCP proxy session based on delayed acknowledgement |
US9900252B2 (en) | 2013-03-08 | 2018-02-20 | A10 Networks, Inc. | Application delivery controller and global server load balancer |
WO2014144837A1 (en) | 2013-03-15 | 2014-09-18 | A10 Networks, Inc. | Processing data packets using a policy based network path |
WO2014179753A2 (en) | 2013-05-03 | 2014-11-06 | A10 Networks, Inc. | Facilitating secure network traffic by an application delivery controller |
US9942152B2 (en) | 2014-03-25 | 2018-04-10 | A10 Networks, Inc. | Forwarding data packets using a service-based forwarding policy |
US9942162B2 (en) | 2014-03-31 | 2018-04-10 | A10 Networks, Inc. | Active application response delay time |
US9560124B2 (en) * | 2014-05-13 | 2017-01-31 | Google Inc. | Method and system for load balancing anycast data traffic |
US9906422B2 (en) | 2014-05-16 | 2018-02-27 | A10 Networks, Inc. | Distributed system to determine a server's health |
US9992229B2 (en) | 2014-06-03 | 2018-06-05 | A10 Networks, Inc. | Programming a data network device using user defined scripts with licenses |
US10129122B2 (en) | 2014-06-03 | 2018-11-13 | A10 Networks, Inc. | User defined objects for network devices |
US9986061B2 (en) | 2014-06-03 | 2018-05-29 | A10 Networks, Inc. | Programming a data network device using user defined scripts |
US20170353888A1 (en) * | 2014-12-18 | 2017-12-07 | Nokia Solutions And Networks Oy | Network Load Balancer |
US9800653B2 (en) | 2015-03-06 | 2017-10-24 | Microsoft Technology Licensing, Llc | Measuring responsiveness of a load balancing system |
US10581976B2 (en) | 2015-08-12 | 2020-03-03 | A10 Networks, Inc. | Transmission control of protocol state exchange for dynamic stateful service insertion |
US10243791B2 (en) | 2015-08-13 | 2019-03-26 | A10 Networks, Inc. | Automated adjustment of subscriber policies |
US10541909B2 (en) | 2017-06-23 | 2020-01-21 | International Business Machines Corporation | Distributed affinity tracking for network connections |
US10616321B2 (en) | 2017-12-22 | 2020-04-07 | At&T Intellectual Property I, L.P. | Distributed stateful load balancer |
US10673764B2 (en) | 2018-05-22 | 2020-06-02 | International Business Machines Corporation | Distributed affinity tracking for network connections |
US11429452B2 (en) | 2020-04-16 | 2022-08-30 | Paypal, Inc. | Method for distributing keys using two auxiliary hashing functions |
CN114221907B (en) * | 2021-12-06 | 2023-09-01 | 北京百度网讯科技有限公司 | Network hash configuration method, device, electronic equipment and storage medium |
CN115297191B (en) * | 2022-09-30 | 2022-12-16 | 成都云智北斗科技有限公司 | Multi-data-stream server |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5371852A (en) * | 1992-10-14 | 1994-12-06 | International Business Machines Corporation | Method and apparatus for making a cluster of computers appear as a single host on a network |
US20020040402A1 (en) * | 2000-09-28 | 2002-04-04 | International Business Machines Corporation | System and method for implementing a clustered load balancer |
US20030005080A1 (en) * | 2001-06-28 | 2003-01-02 | Watkins James S. | Systems and methods for accessing data |
US20040117794A1 (en) * | 2002-12-17 | 2004-06-17 | Ashish Kundu | Method, system and framework for task scheduling |
US20050261985A1 (en) * | 1999-05-11 | 2005-11-24 | Miller Andrew K | Load balancing technique implemented in a data network device utilizing a data cache |
US20070055789A1 (en) * | 2005-09-08 | 2007-03-08 | Benoit Claise | Method and apparatus for managing routing of data elements |
US20070124476A1 (en) * | 2003-06-27 | 2007-05-31 | Oesterreicher Richard T | System and method for digital media server load balancing |
US7590736B2 (en) * | 2003-06-30 | 2009-09-15 | Microsoft Corporation | Flexible network load balancing |
US20110235508A1 (en) * | 2010-03-26 | 2011-09-29 | Deepak Goel | Systems and methods for link load balancing on a multi-core device |
US20140029430A1 (en) * | 2002-10-30 | 2014-01-30 | Citrix Systems, Inc. | Wavefront detection and disambiguation of acknowledgments |
Family Cites Families (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5793763A (en) | 1995-11-03 | 1998-08-11 | Cisco Technology, Inc. | Security system for network address translation systems |
US5774660A (en) | 1996-08-05 | 1998-06-30 | Resonate, Inc. | World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network |
US6351775B1 (en) | 1997-05-30 | 2002-02-26 | International Business Machines Corporation | Loading balancing across servers in a computer network |
US6128279A (en) | 1997-10-06 | 2000-10-03 | Web Balance, Inc. | System for balancing loads among network servers |
US6070191A (en) | 1997-10-17 | 2000-05-30 | Lucent Technologies Inc. | Data distribution techniques for load-balanced fault-tolerant web access |
US6993027B1 (en) * | 1999-03-17 | 2006-01-31 | Broadcom Corporation | Method for sending a switch indicator to avoid out-of-ordering of frames in a network switch |
US7299294B1 (en) | 1999-11-10 | 2007-11-20 | Emc Corporation | Distributed traffic controller for network data |
US6704278B1 (en) * | 1999-07-02 | 2004-03-09 | Cisco Technology, Inc. | Stateful failover of service managers |
US6970913B1 (en) | 1999-07-02 | 2005-11-29 | Cisco Technology, Inc. | Load balancing using distributed forwarding agents with application based feedback for different virtual machines |
US20010034752A1 (en) * | 2000-01-26 | 2001-10-25 | Prompt2U Inc. | Method and system for symmetrically distributed adaptive matching of partners of mutual interest in a computer network |
US20020032755A1 (en) | 2000-09-13 | 2002-03-14 | Marc Abrahams | Registration system and method using a back end server |
US6970939B2 (en) | 2000-10-26 | 2005-11-29 | Intel Corporation | Method and apparatus for large payload distribution in a network |
US8112545B1 (en) | 2000-12-19 | 2012-02-07 | Rockstar Bidco, LP | Distributed network address translation control |
US6549997B2 (en) | 2001-03-16 | 2003-04-15 | Fujitsu Limited | Dynamic variable page size translation of addresses |
US20020161887A1 (en) | 2001-04-27 | 2002-10-31 | Foster Michael S. | Method and system for performing security via de-registration in a communications network |
US20030033463A1 (en) * | 2001-08-10 | 2003-02-13 | Garnett Paul J. | Computer system storage |
EP1315349B1 (en) | 2001-11-21 | 2008-03-19 | Sun Microsystems, Inc. | A method for integrating with load balancers in a client and server system |
JP2003163689A (en) * | 2001-11-28 | 2003-06-06 | Hitachi Ltd | Network cooperative information processing system and method for moving access between multiple load balancers |
US7289525B2 (en) * | 2002-02-21 | 2007-10-30 | Intel Corporation | Inverse multiplexing of managed traffic flows over a multi-star network |
US7512702B1 (en) | 2002-03-19 | 2009-03-31 | Cisco Technology, Inc. | Method and apparatus providing highly scalable server load balancing |
US6856991B1 (en) | 2002-03-19 | 2005-02-15 | Cisco Technology, Inc. | Method and apparatus for routing data to a load balanced server using MPLS packet labels |
US20030225859A1 (en) * | 2002-05-31 | 2003-12-04 | Sun Microsystems, Inc. | Request mapping for load balancing |
US7020706B2 (en) | 2002-06-17 | 2006-03-28 | Bmc Software, Inc. | Method and system for automatically updating multiple servers |
US7280557B1 (en) | 2002-06-28 | 2007-10-09 | Cisco Technology, Inc. | Mechanisms for providing stateful NAT support in redundant and asymetric routing environments |
US7561587B2 (en) | 2002-09-26 | 2009-07-14 | Yhc Corporation | Method and system for providing layer-4 switching technologies |
US20080008202A1 (en) * | 2002-10-31 | 2008-01-10 | Terrell William C | Router with routing processors and methods for virtualization |
US7890633B2 (en) | 2003-02-13 | 2011-02-15 | Oracle America, Inc. | System and method of extending virtual address resolution for mapping networks |
US7606929B2 (en) | 2003-06-30 | 2009-10-20 | Microsoft Corporation | Network load balancing with connection manipulation |
US7636917B2 (en) * | 2003-06-30 | 2009-12-22 | Microsoft Corporation | Network load balancing with host status information |
US7567504B2 (en) | 2003-06-30 | 2009-07-28 | Microsoft Corporation | Network load balancing with traffic routing |
US7613822B2 (en) | 2003-06-30 | 2009-11-03 | Microsoft Corporation | Network load balancing with session information |
US9584360B2 (en) | 2003-09-29 | 2017-02-28 | Foundry Networks, Llc | Global server load balancing support for private VIP addresses |
US20050097185A1 (en) | 2003-10-07 | 2005-05-05 | Simon Gibson | Localization link system |
US8572249B2 (en) | 2003-12-10 | 2013-10-29 | Aventail Llc | Network appliance for balancing load and platform services |
US20050188055A1 (en) | 2003-12-31 | 2005-08-25 | Saletore Vikram A. | Distributed and dynamic content replication for server cluster acceleration |
US8689319B2 (en) | 2004-04-19 | 2014-04-01 | Sollitionary, Inc. | Network security system |
US20060064478A1 (en) * | 2004-05-03 | 2006-03-23 | Level 3 Communications, Inc. | Geo-locating load balancing |
US7813263B2 (en) * | 2004-06-30 | 2010-10-12 | Conexant Systems, Inc. | Method and apparatus providing rapid end-to-end failover in a packet switched communications network |
US20060294584A1 (en) | 2005-06-22 | 2006-12-28 | Netdevices, Inc. | Auto-Configuration of Network Services Required to Support Operation of Dependent Network Services |
DE602004027516D1 (en) | 2004-12-03 | 2010-07-15 | St Microelectronics Srl | A method for managing virtual machines in a physical processing machine, a corresponding processor system and computer program product therefor |
US7334076B2 (en) | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
US7693050B2 (en) * | 2005-04-14 | 2010-04-06 | Microsoft Corporation | Stateless, affinity-preserving load balancing |
US8554758B1 (en) | 2005-12-29 | 2013-10-08 | Amazon Technologies, Inc. | Method and apparatus for monitoring and maintaining health in a searchable data service |
US7694011B2 (en) | 2006-01-17 | 2010-04-06 | Cisco Technology, Inc. | Techniques for load balancing over a cluster of subscriber-aware application servers |
US8274989B1 (en) | 2006-03-31 | 2012-09-25 | Rockstar Bidco, LP | Point-to-multipoint (P2MP) resilience for GMPLS control of ethernet |
AU2008216698B2 (en) * | 2007-02-12 | 2011-06-23 | Mushroom Networks Inc. | Access line bonding and splitting methods and apparatus |
US20080201540A1 (en) | 2007-02-16 | 2008-08-21 | Ravi Sahita | Preservation of integrity of data across a storage hierarchy |
US7768907B2 (en) | 2007-04-23 | 2010-08-03 | International Business Machines Corporation | System and method for improved Ethernet load balancing |
US8561061B2 (en) | 2007-05-14 | 2013-10-15 | Vmware, Inc. | Adaptive dynamic selection and application of multiple virtualization techniques |
US8128279B2 (en) | 2008-07-16 | 2012-03-06 | GM Global Technology Operations LLC | Cloud point monitoring systems for determining a cloud point temperature of diesel fuel |
US8180896B2 (en) | 2008-08-06 | 2012-05-15 | Edgecast Networks, Inc. | Global load balancing on a content delivery network |
US20100036903A1 (en) | 2008-08-11 | 2010-02-11 | Microsoft Corporation | Distributed load balancer |
JP2010061283A (en) | 2008-09-02 | 2010-03-18 | Fujitsu Ltd | Load balancer setting program, load balancer setting method and load balancer setting apparatus |
US8433749B2 (en) | 2009-04-15 | 2013-04-30 | Accenture Global Services Limited | Method and system for client-side scaling of web server farm architectures in a cloud data center |
US8416692B2 (en) | 2009-05-28 | 2013-04-09 | Microsoft Corporation | Load balancing across layer-2 domains |
US8533317B2 (en) * | 2009-06-22 | 2013-09-10 | Citrix Systems, Inc. | Systems and methods for monitor distribution in a multi-core system |
US8737407B2 (en) * | 2009-06-22 | 2014-05-27 | Citrix Systems, Inc. | Systems and methods for distributed hash table in multi-core system |
JP5338555B2 (en) * | 2009-08-11 | 2013-11-13 | 富士通株式会社 | Load distribution apparatus, load distribution method, and load distribution program |
US8645508B1 (en) | 2010-03-03 | 2014-02-04 | Amazon Technologies, Inc. | Managing external communications for provided computer networks |
US8266204B2 (en) | 2010-03-15 | 2012-09-11 | Microsoft Corporation | Direct addressability and direct server return |
US8619584B2 (en) * | 2010-04-30 | 2013-12-31 | Cisco Technology, Inc. | Load balancing over DCE multipath ECMP links for HPC and FCoE |
US8533337B2 (en) | 2010-05-06 | 2013-09-10 | Citrix Systems, Inc. | Continuous upgrading of computers in a load balanced environment |
US8547835B2 (en) | 2010-10-21 | 2013-10-01 | Telefonaktiebolaget L M Ericsson (Publ) | Controlling IP flows to bypass a packet data network gateway using multi-path transmission control protocol connections |
US9191327B2 (en) | 2011-02-10 | 2015-11-17 | Varmour Networks, Inc. | Distributed service processing of network gateways using virtual machines |
US8676980B2 (en) | 2011-03-22 | 2014-03-18 | Cisco Technology, Inc. | Distributed load balancer in a virtual machine environment |
US20120303809A1 (en) | 2011-05-25 | 2012-11-29 | Microsoft Corporation | Offloading load balancing packet modification |
JP5870192B2 (en) | 2011-08-17 | 2016-02-24 | ニシラ, インコーポレイテッド | Logical L3 routing |
US20130159487A1 (en) | 2011-12-14 | 2013-06-20 | Microsoft Corporation | Migration of Virtual IP Addresses in a Failover Cluster |
US9083709B2 (en) | 2012-05-11 | 2015-07-14 | Cisco Technology, Inc. | Virtual internet protocol migration and load balancing |
US20140006681A1 (en) | 2012-06-29 | 2014-01-02 | Broadcom Corporation | Memory management in a virtualization environment |
US8805990B2 (en) | 2012-07-12 | 2014-08-12 | Microsoft Corporation | Load balancing for single-address tenants |
-
2010
- 2010-12-17 US US12/972,340 patent/US8755283B2/en active Active
-
2011
- 2011-12-16 WO PCT/US2011/065659 patent/WO2012083264A2/en unknown
- 2011-12-16 EP EP11849192.7A patent/EP2652924B1/en active Active
- 2011-12-16 CN CN201110444322.1A patent/CN102857438B/en active Active
- 2011-12-16 JP JP2013544852A patent/JP5889914B2/en active Active
-
2014
- 2014-03-05 US US14/198,465 patent/US20140185446A1/en not_active Abandoned
- 2014-11-18 US US14/546,729 patent/US9438520B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5371852A (en) * | 1992-10-14 | 1994-12-06 | International Business Machines Corporation | Method and apparatus for making a cluster of computers appear as a single host on a network |
US20050261985A1 (en) * | 1999-05-11 | 2005-11-24 | Miller Andrew K | Load balancing technique implemented in a data network device utilizing a data cache |
US20020040402A1 (en) * | 2000-09-28 | 2002-04-04 | International Business Machines Corporation | System and method for implementing a clustered load balancer |
US20030005080A1 (en) * | 2001-06-28 | 2003-01-02 | Watkins James S. | Systems and methods for accessing data |
US20140029430A1 (en) * | 2002-10-30 | 2014-01-30 | Citrix Systems, Inc. | Wavefront detection and disambiguation of acknowledgments |
US20040117794A1 (en) * | 2002-12-17 | 2004-06-17 | Ashish Kundu | Method, system and framework for task scheduling |
US20070124476A1 (en) * | 2003-06-27 | 2007-05-31 | Oesterreicher Richard T | System and method for digital media server load balancing |
US7590736B2 (en) * | 2003-06-30 | 2009-09-15 | Microsoft Corporation | Flexible network load balancing |
US20070055789A1 (en) * | 2005-09-08 | 2007-03-08 | Benoit Claise | Method and apparatus for managing routing of data elements |
US20110235508A1 (en) * | 2010-03-26 | 2011-09-29 | Deepak Goel | Systems and methods for link load balancing on a multi-core device |
Cited By (171)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9667739B2 (en) | 2011-02-07 | 2017-05-30 | Microsoft Technology Licensing, Llc | Proxy-based cache content distribution and affinity |
US20130013668A1 (en) * | 2011-07-04 | 2013-01-10 | Fujitsu Limited | Information processing apparatus, server selecting method and recording medium |
US8694580B2 (en) * | 2011-07-04 | 2014-04-08 | Fujitsu Limited | Information processing apparatus, server selecting method and recording medium |
US11593148B2 (en) | 2011-11-15 | 2023-02-28 | Nicira, Inc. | Network control system for configuring middleboxes |
US10310886B2 (en) | 2011-11-15 | 2019-06-04 | Nicira, Inc. | Network control system for configuring middleboxes |
US12093719B2 (en) | 2011-11-15 | 2024-09-17 | Nicira, Inc. | Network control system for configuring middleboxes |
US9172603B2 (en) | 2011-11-15 | 2015-10-27 | Nicira, Inc. | WAN optimizer for logical networks |
US9195491B2 (en) | 2011-11-15 | 2015-11-24 | Nicira, Inc. | Migrating middlebox state for distributed middleboxes |
US11372671B2 (en) | 2011-11-15 | 2022-06-28 | Nicira, Inc. | Architecture of networks with middleboxes |
US9306909B2 (en) | 2011-11-15 | 2016-04-05 | Nicira, Inc. | Connection identifier assignment and source network address translation |
US10514941B2 (en) | 2011-11-15 | 2019-12-24 | Nicira, Inc. | Load balancing and destination network address translation middleboxes |
US12141599B2 (en) | 2011-11-15 | 2024-11-12 | Nicira, Inc. | Architecture of networks with middleboxes |
US10191763B2 (en) | 2011-11-15 | 2019-01-29 | Nicira, Inc. | Architecture of networks with middleboxes |
US9552219B2 (en) | 2011-11-15 | 2017-01-24 | Nicira, Inc. | Migrating middlebox state for distributed middleboxes |
US11740923B2 (en) | 2011-11-15 | 2023-08-29 | Nicira, Inc. | Architecture of networks with middleboxes |
US10977067B2 (en) | 2011-11-15 | 2021-04-13 | Nicira, Inc. | Control plane interface for logical middlebox services |
US9558027B2 (en) | 2011-11-15 | 2017-01-31 | Nicira, Inc. | Network control system for configuring middleboxes |
US10884780B2 (en) | 2011-11-15 | 2021-01-05 | Nicira, Inc. | Architecture of networks with middleboxes |
US10922124B2 (en) | 2011-11-15 | 2021-02-16 | Nicira, Inc. | Network control system for configuring middleboxes |
US10089127B2 (en) * | 2011-11-15 | 2018-10-02 | Nicira, Inc. | Control plane interface for logical middlebox services |
US10235199B2 (en) | 2011-11-15 | 2019-03-19 | Nicira, Inc. | Migrating middlebox state for distributed middleboxes |
US9697030B2 (en) | 2011-11-15 | 2017-07-04 | Nicira, Inc. | Connection identifier assignment and source network address translation |
US9697033B2 (en) | 2011-11-15 | 2017-07-04 | Nicira, Inc. | Architecture of networks with middleboxes |
US20130132533A1 (en) * | 2011-11-15 | 2013-05-23 | Nicira, Inc. | Control plane interface for logical middlebox services |
US10949248B2 (en) | 2011-11-15 | 2021-03-16 | Nicira, Inc. | Load balancing and destination network address translation middleboxes |
US9294408B1 (en) * | 2012-07-02 | 2016-03-22 | Amazon Technologies, Inc. | One-to-many stateless load balancing |
US9092271B2 (en) | 2012-07-12 | 2015-07-28 | Microsoft Technology Licensing, Llc | Load balancing for single-address tenants |
US8805990B2 (en) * | 2012-07-12 | 2014-08-12 | Microsoft Corporation | Load balancing for single-address tenants |
US9826033B2 (en) | 2012-10-16 | 2017-11-21 | Microsoft Technology Licensing, Llc | Load balancer bypass |
US11115466B2 (en) | 2013-03-15 | 2021-09-07 | Vmware, Inc. | Distributed network services |
US10637914B2 (en) | 2013-03-15 | 2020-04-28 | Vmware, Inc. | Distributed network services |
US11736560B2 (en) | 2013-03-15 | 2023-08-22 | Vmware, Inc. | Distributed network services |
US9559961B1 (en) | 2013-04-16 | 2017-01-31 | Amazon Technologies, Inc. | Message bus for testing distributed load balancers |
EP2987305A4 (en) * | 2013-04-16 | 2016-09-28 | Amazon Tech Inc | MULTI-PATH ROUTING IN A DISTRIBUTED LOAD BALANCING DEVICE |
US11843657B2 (en) | 2013-04-16 | 2023-12-12 | Amazon Technologies, Inc. | Distributed load balancer |
US10069903B2 (en) | 2013-04-16 | 2018-09-04 | Amazon Technologies, Inc. | Distributed load balancer |
US10038626B2 (en) | 2013-04-16 | 2018-07-31 | Amazon Technologies, Inc. | Multipath routing in a distributed load balancer |
US10999184B2 (en) | 2013-04-16 | 2021-05-04 | Amazon Technologies, Inc. | Health checking in a distributed load balancer |
US9553809B2 (en) | 2013-04-16 | 2017-01-24 | Amazon Technologies, Inc. | Asymmetric packet flow in a distributed load balancer |
US10135914B2 (en) | 2013-04-16 | 2018-11-20 | Amazon Technologies, Inc. | Connection publishing in a distributed load balancer |
US9871712B1 (en) | 2013-04-16 | 2018-01-16 | Amazon Technologies, Inc. | Health checking in a distributed load balancer |
US10693782B2 (en) | 2013-05-09 | 2020-06-23 | Nicira, Inc. | Method and system for service switching using service tags |
US11805056B2 (en) | 2013-05-09 | 2023-10-31 | Nicira, Inc. | Method and system for service switching using service tags |
US11438267B2 (en) | 2013-05-09 | 2022-09-06 | Nicira, Inc. | Method and system for service switching using service tags |
US9843520B1 (en) * | 2013-08-15 | 2017-12-12 | Avi Networks | Transparent network-services elastic scale-out |
US10225194B2 (en) * | 2013-08-15 | 2019-03-05 | Avi Networks | Transparent network-services elastic scale-out |
US11689631B2 (en) | 2013-08-15 | 2023-06-27 | Vmware, Inc. | Transparent network service migration across service devices |
US10868875B2 (en) | 2013-08-15 | 2020-12-15 | Vmware, Inc. | Transparent network service migration across service devices |
EP3038306A4 (en) * | 2013-08-22 | 2016-10-05 | Zte Corp | Load balancing method and system |
US10389634B2 (en) | 2013-09-04 | 2019-08-20 | Nicira, Inc. | Multiple active L3 gateways for logical networks |
US9577845B2 (en) | 2013-09-04 | 2017-02-21 | Nicira, Inc. | Multiple active L3 gateways for logical networks |
US10506033B2 (en) | 2013-10-15 | 2019-12-10 | Nicira, Inc. | Distributed global load-balancing system for software-defined data centers |
US9998530B2 (en) | 2013-10-15 | 2018-06-12 | Nicira, Inc. | Distributed global load-balancing system for software-defined data centers |
WO2015080825A1 (en) * | 2013-11-27 | 2015-06-04 | Avi Networks | Method and system for distributed load balancing |
US20170031725A1 (en) * | 2013-11-27 | 2017-02-02 | Avi Networks | Method and system for distributed load balancing |
US10089153B2 (en) * | 2013-11-27 | 2018-10-02 | Avi Networks | Synchronizing load balancing state information |
US9407692B2 (en) | 2013-11-27 | 2016-08-02 | Avi Networks | Method and system for distributed load balancing |
US11025543B2 (en) | 2014-03-14 | 2021-06-01 | Nicira, Inc. | Route advertisement by managed gateways |
US10164881B2 (en) | 2014-03-14 | 2018-12-25 | Nicira, Inc. | Route advertisement by managed gateways |
US10567283B2 (en) | 2014-03-14 | 2020-02-18 | Nicira, Inc. | Route advertisement by managed gateways |
US12047286B2 (en) | 2014-03-14 | 2024-07-23 | Nicira, Inc. | Route advertisement by managed gateways |
US9667711B2 (en) | 2014-03-26 | 2017-05-30 | International Business Machines Corporation | Load balancing of distributed services |
US9774665B2 (en) | 2014-03-26 | 2017-09-26 | International Business Machines Corporation | Load balancing of distributed services |
US10129332B2 (en) | 2014-03-26 | 2018-11-13 | International Business Machines Corporation | Load balancing of distributed services |
US10044797B2 (en) | 2014-03-26 | 2018-08-07 | International Business Machines Corporation | Load balancing of distributed services |
US10715383B2 (en) | 2014-06-03 | 2020-07-14 | Nicira, Inc. | Consistent hashing for network traffic dispatching |
US11044150B2 (en) | 2014-06-03 | 2021-06-22 | Nicira, Inc. | Consistent hashing for network traffic dispatching |
US20210314221A1 (en) * | 2014-06-03 | 2021-10-07 | Nicira, Inc. | Consistent hashing for network traffic dispatching |
US9917727B2 (en) * | 2014-06-03 | 2018-03-13 | Nicira, Inc. | Consistent hashing for network traffic dispatching |
US10298450B2 (en) | 2014-06-03 | 2019-05-21 | Nicira, Inc. | Consistent hashing for network traffic dispatching |
US11765025B2 (en) * | 2014-06-03 | 2023-09-19 | Nicira, Inc. | Consistent hashing for network traffic dispatching |
US10511658B1 (en) * | 2014-06-13 | 2019-12-17 | Amazon Technologies, Inc. | Computing resource transition notification and pending state |
US11075842B2 (en) | 2014-09-30 | 2021-07-27 | Nicira, Inc. | Inline load balancing |
US11496606B2 (en) | 2014-09-30 | 2022-11-08 | Nicira, Inc. | Sticky service sessions in a datacenter |
US11296930B2 (en) | 2014-09-30 | 2022-04-05 | Nicira, Inc. | Tunnel-enabled elastic service model |
US11722367B2 (en) | 2014-09-30 | 2023-08-08 | Nicira, Inc. | Method and apparatus for providing a service with a plurality of service nodes |
US10341233B2 (en) | 2014-09-30 | 2019-07-02 | Nicira, Inc. | Dynamically adjusting a data compute node group |
US10129077B2 (en) | 2014-09-30 | 2018-11-13 | Nicira, Inc. | Configuring and operating a XaaS model in a datacenter |
US10135737B2 (en) | 2014-09-30 | 2018-11-20 | Nicira, Inc. | Distributed load balancing systems |
US10225137B2 (en) | 2014-09-30 | 2019-03-05 | Nicira, Inc. | Service node selection by an inline service switch |
US10516568B2 (en) | 2014-09-30 | 2019-12-24 | Nicira, Inc. | Controller driven reconfiguration of a multi-layered application or service model |
US10320679B2 (en) | 2014-09-30 | 2019-06-11 | Nicira, Inc. | Inline load balancing |
US12068961B2 (en) | 2014-09-30 | 2024-08-20 | Nicira, Inc. | Inline load balancing |
US10257095B2 (en) | 2014-09-30 | 2019-04-09 | Nicira, Inc. | Dynamically adjusting load balancing |
US9774537B2 (en) | 2014-09-30 | 2017-09-26 | Nicira, Inc. | Dynamically adjusting load balancing |
US11283697B1 (en) | 2015-03-24 | 2022-03-22 | Vmware, Inc. | Scalable real time metrics management |
US11405431B2 (en) | 2015-04-03 | 2022-08-02 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
US10594743B2 (en) | 2015-04-03 | 2020-03-17 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
US10609091B2 (en) | 2015-04-03 | 2020-03-31 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
US10652143B2 (en) | 2015-04-04 | 2020-05-12 | Nicira, Inc | Route server mode for dynamic routing between logical and physical networks |
US11601362B2 (en) | 2015-04-04 | 2023-03-07 | Nicira, Inc. | Route server mode for dynamic routing between logical and physical networks |
US10038628B2 (en) | 2015-04-04 | 2018-07-31 | Nicira, Inc. | Route server mode for dynamic routing between logical and physical networks |
US12058041B2 (en) | 2015-04-04 | 2024-08-06 | Nicira, Inc. | Route server mode for dynamic routing between logical and physical networks |
US10805220B2 (en) | 2016-04-28 | 2020-10-13 | Nicira, Inc. | Automatic configuration of logical routers on edge nodes |
US11502958B2 (en) | 2016-04-28 | 2022-11-15 | Nicira, Inc. | Automatic configuration of logical routers on edge nodes |
US10333849B2 (en) | 2016-04-28 | 2019-06-25 | Nicira, Inc. | Automatic configuration of logical routers on edge nodes |
US10091161B2 (en) | 2016-04-30 | 2018-10-02 | Nicira, Inc. | Assignment of router ID for logical routers |
US10560320B2 (en) | 2016-06-29 | 2020-02-11 | Nicira, Inc. | Ranking of gateways in cluster |
US10938668B1 (en) * | 2016-09-30 | 2021-03-02 | Amazon Technologies, Inc. | Safe deployment using versioned hash rings |
US10700960B2 (en) * | 2016-11-17 | 2020-06-30 | Nicira, Inc. | Enablement of multi-path routing in virtual edge systems |
US11296978B2 (en) * | 2016-11-17 | 2022-04-05 | Nicira, Inc. | Enablement of multi-path routing in virtual edge systems |
US20180139122A1 (en) * | 2016-11-17 | 2018-05-17 | Nicira, Inc. | Enablement of multi-path routing in virtual edge systems |
US10237123B2 (en) | 2016-12-21 | 2019-03-19 | Nicira, Inc. | Dynamic recovery from a split-brain failure in edge nodes |
US10645204B2 (en) | 2016-12-21 | 2020-05-05 | Nicira, Inc | Dynamic recovery from a split-brain failure in edge nodes |
US11115262B2 (en) | 2016-12-22 | 2021-09-07 | Nicira, Inc. | Migration of centralized routing components of logical router |
US10616045B2 (en) | 2016-12-22 | 2020-04-07 | Nicira, Inc. | Migration of centralized routing components of logical router |
US10805181B2 (en) | 2017-10-29 | 2020-10-13 | Nicira, Inc. | Service operation chaining |
US10797966B2 (en) | 2017-10-29 | 2020-10-06 | Nicira, Inc. | Service operation chaining |
US11750476B2 (en) | 2017-10-29 | 2023-09-05 | Nicira, Inc. | Service operation chaining |
US11012420B2 (en) | 2017-11-15 | 2021-05-18 | Nicira, Inc. | Third-party service chaining using packet encapsulation in a flow-based forwarding element |
CN107979646A (en) * | 2017-12-07 | 2018-05-01 | 郑州云海信息技术有限公司 | A kind of PaaS platform load-balancing method based on consistent hashing strategy |
US11265187B2 (en) | 2018-01-26 | 2022-03-01 | Nicira, Inc. | Specifying and utilizing paths through a network |
US10797910B2 (en) | 2018-01-26 | 2020-10-06 | Nicira, Inc. | Specifying and utilizing paths through a network |
US10659252B2 (en) | 2018-01-26 | 2020-05-19 | Nicira, Inc | Specifying and utilizing paths through a network |
US11038782B2 (en) | 2018-03-27 | 2021-06-15 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US10728174B2 (en) | 2018-03-27 | 2020-07-28 | Nicira, Inc. | Incorporating layer 2 service between two interfaces of gateway device |
US11805036B2 (en) | 2018-03-27 | 2023-10-31 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US11258760B1 (en) | 2018-06-22 | 2022-02-22 | Vmware, Inc. | Stateful distributed web application firewall |
US12177067B2 (en) | 2018-09-02 | 2024-12-24 | VMware LLC | Service insertion at logical network gateway |
US11595250B2 (en) | 2018-09-02 | 2023-02-28 | Vmware, Inc. | Service insertion at logical network gateway |
US10944673B2 (en) | 2018-09-02 | 2021-03-09 | Vmware, Inc. | Redirection of data messages at logical network gateway |
US10771318B1 (en) | 2018-10-24 | 2020-09-08 | Vmware, Inc | High availability on a distributed networking platform |
US11206173B2 (en) | 2018-10-24 | 2021-12-21 | Vmware, Inc. | High availability on a distributed networking platform |
US10999060B2 (en) | 2018-10-26 | 2021-05-04 | Advanced New Technologies Co., Ltd. | Data processing method and apparatus |
US11626972B2 (en) | 2018-10-26 | 2023-04-11 | Advanced New Technologies Co., Ltd. | Data processing method and apparatus |
US11288088B2 (en) | 2019-02-22 | 2022-03-29 | Vmware, Inc. | Service control plane messaging in service data plane |
US11194610B2 (en) | 2019-02-22 | 2021-12-07 | Vmware, Inc. | Service rule processing and path selection at the source |
US11360796B2 (en) | 2019-02-22 | 2022-06-14 | Vmware, Inc. | Distributed forwarding for performing service chain operations |
US11397604B2 (en) | 2019-02-22 | 2022-07-26 | Vmware, Inc. | Service path selection in load balanced manner |
US10949244B2 (en) | 2019-02-22 | 2021-03-16 | Vmware, Inc. | Specifying and distributing service chains |
US12254340B2 (en) | 2019-02-22 | 2025-03-18 | VMware LLC | Providing services with guest VM mobility |
US11119804B2 (en) | 2019-02-22 | 2021-09-14 | Vmware, Inc. | Segregated service and forwarding planes |
US11086654B2 (en) | 2019-02-22 | 2021-08-10 | Vmware, Inc. | Providing services by using multiple service planes |
US11467861B2 (en) | 2019-02-22 | 2022-10-11 | Vmware, Inc. | Configuring distributed forwarding for performing service chain operations |
US10929171B2 (en) | 2019-02-22 | 2021-02-23 | Vmware, Inc. | Distributed forwarding for performing service chain operations |
US11036538B2 (en) | 2019-02-22 | 2021-06-15 | Vmware, Inc. | Providing services with service VM mobility |
US11003482B2 (en) | 2019-02-22 | 2021-05-11 | Vmware, Inc. | Service proxy operations |
US11042397B2 (en) | 2019-02-22 | 2021-06-22 | Vmware, Inc. | Providing services with guest VM mobility |
US11354148B2 (en) | 2019-02-22 | 2022-06-07 | Vmware, Inc. | Using service data plane for service control plane messaging |
US11321113B2 (en) | 2019-02-22 | 2022-05-03 | Vmware, Inc. | Creating and distributing service chain descriptions |
US11604666B2 (en) | 2019-02-22 | 2023-03-14 | Vmware, Inc. | Service path generation in load balanced manner |
US11249784B2 (en) | 2019-02-22 | 2022-02-15 | Vmware, Inc. | Specifying service chains |
US11609781B2 (en) | 2019-02-22 | 2023-03-21 | Vmware, Inc. | Providing services with guest VM mobility |
US11301281B2 (en) | 2019-02-22 | 2022-04-12 | Vmware, Inc. | Service control plane messaging in service data plane |
US11074097B2 (en) | 2019-02-22 | 2021-07-27 | Vmware, Inc. | Specifying service chains |
US11294703B2 (en) | 2019-02-22 | 2022-04-05 | Vmware, Inc. | Providing services by using service insertion and service transport layers |
WO2020242652A1 (en) * | 2019-05-31 | 2020-12-03 | Microsoft Technology Licensing, Llc | Hardware load balancer gateway on commodity switch hardware |
CN114616811A (en) * | 2019-05-31 | 2022-06-10 | 微软技术许可有限责任公司 | Hardware Load Balancer Gateway on Commodity Switch Hardware |
US10812576B1 (en) | 2019-05-31 | 2020-10-20 | Microsoft Technology Licensing, Llc | Hardware load balancer gateway on commodity switch hardware |
US12132780B2 (en) | 2019-10-30 | 2024-10-29 | VMware LLC | Distributed service chain across multiple clouds |
US11283717B2 (en) | 2019-10-30 | 2022-03-22 | Vmware, Inc. | Distributed fault tolerant service chain |
US11722559B2 (en) | 2019-10-30 | 2023-08-08 | Vmware, Inc. | Distributed service chain across multiple clouds |
US11140218B2 (en) | 2019-10-30 | 2021-10-05 | Vmware, Inc. | Distributed service chain across multiple clouds |
US12231252B2 (en) | 2020-01-13 | 2025-02-18 | VMware LLC | Service insertion for multicast traffic at boundary |
US11223494B2 (en) | 2020-01-13 | 2022-01-11 | Vmware, Inc. | Service insertion for multicast traffic at boundary |
US11153406B2 (en) | 2020-01-20 | 2021-10-19 | Vmware, Inc. | Method of network performance visualization of service function chains |
US11659061B2 (en) | 2020-01-20 | 2023-05-23 | Vmware, Inc. | Method of adjusting service function chains to improve network performance |
US11743172B2 (en) | 2020-04-06 | 2023-08-29 | Vmware, Inc. | Using multiple transport mechanisms to provide services at the edge of a network |
US11528219B2 (en) | 2020-04-06 | 2022-12-13 | Vmware, Inc. | Using applied-to field to identify connection-tracking records for different interfaces |
US11438257B2 (en) | 2020-04-06 | 2022-09-06 | Vmware, Inc. | Generating forward and reverse direction connection-tracking records for service paths at a network edge |
US11212356B2 (en) | 2020-04-06 | 2021-12-28 | Vmware, Inc. | Providing services at the edge of a network using selected virtual tunnel interfaces |
US11792112B2 (en) | 2020-04-06 | 2023-10-17 | Vmware, Inc. | Using service planes to perform services at the edge of a network |
US11277331B2 (en) | 2020-04-06 | 2022-03-15 | Vmware, Inc. | Updating connection-tracking records at a network edge using flow programming |
US11368387B2 (en) | 2020-04-06 | 2022-06-21 | Vmware, Inc. | Using router as service node through logical service plane |
US11734043B2 (en) | 2020-12-15 | 2023-08-22 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11611625B2 (en) | 2020-12-15 | 2023-03-21 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11799761B2 (en) | 2022-01-07 | 2023-10-24 | Vmware, Inc. | Scaling edge services with minimal disruption |
US12081437B2 (en) | 2022-01-12 | 2024-09-03 | VMware LLC | Probabilistic filters for use in network forwarding and services |
US11888747B2 (en) | 2022-01-12 | 2024-01-30 | VMware LLC | Probabilistic filters for use in network forwarding and services |
CN114928615A (en) * | 2022-05-19 | 2022-08-19 | 网宿科技股份有限公司 | Load balancing method, device, equipment and readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
WO2012083264A2 (en) | 2012-06-21 |
US20150063115A1 (en) | 2015-03-05 |
US9438520B2 (en) | 2016-09-06 |
JP2014504484A (en) | 2014-02-20 |
US20140185446A1 (en) | 2014-07-03 |
WO2012083264A3 (en) | 2012-10-26 |
CN102857438A (en) | 2013-01-02 |
EP2652924A2 (en) | 2013-10-23 |
EP2652924B1 (en) | 2020-04-01 |
CN102857438B (en) | 2015-12-02 |
US8755283B2 (en) | 2014-06-17 |
EP2652924A4 (en) | 2017-10-18 |
JP5889914B2 (en) | 2016-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9438520B2 (en) | Synchronizing state among load balancer components | |
US11843657B2 (en) | Distributed load balancer | |
US10999184B2 (en) | Health checking in a distributed load balancer | |
US10135914B2 (en) | Connection publishing in a distributed load balancer | |
US9432245B1 (en) | Distributed load balancer node architecture | |
US8626949B2 (en) | Intelligent network address lookup service | |
US9553809B2 (en) | Asymmetric packet flow in a distributed load balancer | |
US6963917B1 (en) | Methods, systems and computer program products for policy based distribution of workload to subsets of potential servers | |
US9559961B1 (en) | Message bus for testing distributed load balancers | |
US6397260B1 (en) | Automatic load sharing for network routers | |
US7930427B2 (en) | Client-side load balancing | |
US7908337B2 (en) | System and method for using network layer uniform resource locator routing to locate the closest server carrying specific content | |
US9871712B1 (en) | Health checking in a distributed load balancer | |
CN113826363A (en) | Consistent routing advertisements between redundant controllers in a global network access point | |
US20120303809A1 (en) | Offloading load balancing packet modification | |
EP3977707B1 (en) | Hardware load balancer gateway on commodity switch hardware | |
JPH11224219A (en) | Decentralized cache control method, decentralization controller, decentralizzed cache system, and storage medium stored with decentralized cache control program | |
US11665090B1 (en) | Using fast-path nodes of packet processing services as intermediaries for workload migration workflows | |
US20040003099A1 (en) | Bi-directional affinity within a load-balancing multi-node network interface | |
Gasparyan et al. | L-SCN: Layered SCN architecture with supernodes and Bloom filters | |
EP1277327B1 (en) | System and method for using network layer uniform resource locator routing to locate the closest server carrying specific content | |
CN117955982A (en) | Method and device for accessing services inside a container cluster from outside the cluster | |
WO2001084803A2 (en) | System and method for resolving network layer anycast addresses to network layer unicast addresses |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PATEL, PARVEEN;IVANOV, VOLODYMYR;ZIKOS, MARIOS;AND OTHERS;SIGNING DATES FROM 20110111 TO 20110119;REEL/FRAME:025658/0815 |
|
FEPP | Fee payment procedure |
Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034544/0001 Effective date: 20141014 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |