US20100162036A1 - Self-Monitoring Cluster of Network Security Devices - Google Patents
Self-Monitoring Cluster of Network Security Devices Download PDFInfo
- Publication number
- US20100162036A1 US20100162036A1 US12/643,548 US64354809A US2010162036A1 US 20100162036 A1 US20100162036 A1 US 20100162036A1 US 64354809 A US64354809 A US 64354809A US 2010162036 A1 US2010162036 A1 US 2010162036A1
- Authority
- US
- United States
- Prior art keywords
- cluster
- master
- computing device
- devices
- run
- 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.)
- Abandoned
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 24
- 230000036541 health Effects 0.000 claims abstract description 82
- 238000000034 method Methods 0.000 claims description 125
- 238000004891 communication Methods 0.000 claims description 94
- 238000012545 processing Methods 0.000 claims description 76
- 238000003860 storage Methods 0.000 claims description 43
- 238000012986 modification Methods 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 6
- 230000004931 aggregating effect Effects 0.000 claims 1
- 238000005111 flow chemistry technique Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 37
- 230000007704 transition Effects 0.000 description 27
- 238000007726 management method Methods 0.000 description 22
- 230000008520 organization Effects 0.000 description 19
- 230000003068 static effect Effects 0.000 description 19
- 230000001360 synchronised effect Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 15
- 238000005304 joining Methods 0.000 description 11
- 238000001914 filtration Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 7
- 238000012795 verification Methods 0.000 description 7
- 230000002441 reversible effect Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 5
- 230000000737 periodic effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 239000000654 additive Substances 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 3
- 230000002155 anti-virotic effect Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- CKRLIWFOVCLXTP-UHFFFAOYSA-N 4-phenyl-1-propyl-3,6-dihydro-2h-pyridine Chemical compound C1N(CCC)CCC(C=2C=CC=CC=2)=C1 CKRLIWFOVCLXTP-UHFFFAOYSA-N 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 208000011580 syndromic disease Diseases 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0659—Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/181—Eliminating the failing redundant component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0866—Checking the configuration
- H04L41/0869—Validating the configuration within one network element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0894—Policy-based network configuration management
-
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/182—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2035—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
-
- 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/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0209—Architectural arrangements, e.g. perimeter networks or demilitarized zones
- H04L63/0218—Distributed architectures, e.g. distributed firewalls
Definitions
- This disclosure relates to network services and, in particular, to formation of a cluster comprising two or more computing devices configured to provide network services.
- FIG. 1 is a block diagram of one embodiment of a cluster
- FIG. 2A is a state diagram depicting a method for adding a device to a cluster
- FIG. 2B is a flow diagram of one embodiment of a method for adding a device to a cluster
- FIG. 3A depicts the relationships and/or transitions between cluster device operational modes
- FIG. 3B depicts data flow between cluster devices
- FIG. 3C is a flow diagram of one embodiment of a method for monitoring cluster devices
- FIG. 3D is a flow diagram of one embodiment of a method for performing a cluster failover operation
- FIG. 4 is a block diagram of one embodiment of a cluster device
- FIG. 5 is a flow diagram depicting one embodiment of a method for assigning a flow to a cluster device
- FIG. 6A is a block diagram depicting one example of related flow assignment, in which related forward and reverse flows are assigned to the same cluster device;
- FIG. 6B is a block diagram depicting another example of related flow assignment, in which related flows are assigned to the same cluster device
- FIG. 6C is a block diagram depicting an example of security flow assignment, in which flows associated with the same tunnel are assigned to the same cluster device;
- FIG. 6D is a block diagram depicting another example of security flow assignment, in which flows associated with the same inbound or outbound security association are assigned to the same cluster device, whereas the inbound and/or outbound tunnel flows may be assigned to different cluster devices;
- FIG. 6E is a block diagram depicting another example of security flow assignment, in which flows related to the same security association (inbound and outbound) are assigned to the same device;
- FIG. 6F is a block diagram depicting another example of related flow assignment, in which the flows related to a tunnel switch are assigned to the same device;
- FIG. 7 is a block diagram illustrating one embodiment of a cluster comprising a shared Internet Key Exchange module
- FIG. 8 is a block diagram illustrating one embodiment of a cluster comprising distributed Internet Key Exchange modules
- FIG. 9A is a block diagram depicting an example of flow assignment in a cluster comprising a shared Internet Key Exchange module
- FIG. 9B is a block diagram depicting an example of flow assignment in a cluster comprising distributed Internet Key Exchange modules
- FIG. 10 is a flow diagram of another embodiment of a method for assigning network flows to cluster devices.
- a clustered computing system or “cluster” may refer to two or more computing devices configured to cooperatively perform a task.
- a cluster may be formed of a plurality of computing devices of the same type (e.g., a homogeneous cluster).
- a cluster may comprise computing devices of different types and/or configurations (e.g., a heterogeneous cluster).
- a cluster may be configured to provide network communications and security services including, but not limited to: providing firewall services, acting as a forward and/or reverse proxy, virtual private networking (VPN), packet filtering, anti-virus services, Internet Provider Security (IPS), tunneling, Spam blocking, Web blocking, and the like.
- VPN virtual private networking
- IPS Internet Provider Security
- a cluster may be configured to operate in a “load balancing” or “high throughput” mode.
- “load sharing” or “high throughput” may refer to an operational mode of a cluster in which one or more of the computing devices in the cluster are configured to work together to implement one or more tasks or services. For example, a highly complex computational task may be split up into a plurality of different parts, each of which may be performed by a different computing device in the cluster. Alternatively, or in addition, a set of tasks may be distributed to a plurality of different computing devices in the cluster (e.g., each of a plurality of different VPN connections may be serviced by different members of the cluster). Since the load represented by the task(s) or service(s) may be shared among the computing devices in the cluster, the cluster may be capable of performing certain task(s) and/or providing certain service(s) more efficiently than a single computing device.
- One or more of the computing devices in a cluster may be configured to operate in “high availability mode.” In high availability mode, one or more of the computing devices in the cluster may be in “active” or “primary” mode, while other computing devices in the cluster are in “standby” or “secondary” mode.
- the devices in active mode may be configured to perform the task(s) and/or provide the service(s) implemented by the cluster.
- the devices may have a “static” and “working” role.
- the static role may be the role of the device as defined in the device-specific cluster configuration thereof, defined by a license (or lack thereof) of the device, defined by a cluster configuration, or the like.
- the working role may be the current operating state or role of the device as necessitated by the operating conditions of the cluster.
- a device may have a static role of “active” or “primary,” meaning that the device has its own license and may actively process and pass network traffic.
- a member having a static role of “standby” or “secondary” may not have a license and may not actively process and/or pass network traffic, but operate as a backup to the other cluster device (e.g., when an active device fails over, a standby device may be activated to take its place).
- the working role of the cluster devices may include devices that are “active,” and “standby.” Active devices include the primary devices (that are currently running), and any secondary devices that have been activated to process and/or pass network traffic in place of failed over primary members. Accordingly, a cluster device operating in standby mode may not perform the task(s) and/or provide the service(s) implemented by the cluster. A cluster device operating in standby mode may become “activated” responsive to a failure of one or more of the active computing devices. When activated, the device may implement the task(s) and/or service(s) that were formerly provided by the failed over device, which may prevent an interruption of cluster services (e.g., allow the cluster to provide “high availability” services).
- cluster services e.g., allow the cluster to provide “high availability” services.
- one of the computing devices in a cluster may operate as a “cluster master.”
- the cluster master may manage the configuration of the cluster, assign processing tasks to the cluster members (e.g., assign network flows to cluster devices), maintain cluster state information (e.g., flow assignment table, security information, etc.), manage shared resources (e.g., outbound traffic addresses, Destination Network Address Translation (DNAT) tables, etc.), synchronize global, run-time synchronization data with a backup master, manage device failover, and the like.
- cluster state information e.g., flow assignment table, security information, etc.
- manage shared resources e.g., outbound traffic addresses, Destination Network Address Translation (DNAT) tables, etc.
- Another one of the computing devices in the cluster may operate as a “backup master,” which may be configured to backup the data used by the cluster master. Accordingly, when the cluster master fails over (due to a device failure, upgrade, maintenance, or the like), the backup master may replace the cluster master with minimal service disruption (e.g., may transition into the role of cluster master). When the backup master is promoted to cluster master, another one of the cluster members may be selected as a new backup master.
- the cluster master may be configured to synchronize global, run-time synchronization data with the backup master.
- the global, run-time synchronization data may include the data needed by the backup master to begin operating as the cluster master (e.g., cluster configuration, cluster state, and the like).
- FIG. 1 is a block diagram of one example of a system comprising a cluster of communicatively coupled computing devices.
- the cluster 110 of FIG. 1 may be configured to provide the network communications and security services described above (e.g., firewall, packet filtering, VPN, and so on).
- the cluster 110 comprises three computing devices 112 , 114 , and 116 .
- the disclosure is not limited in this regard, and the cluster 110 could be configured to include any number of computing devices.
- the cluster 110 is configured to communicatively couple an organization 130 to a network 140 .
- the network 140 may comprise a set of interconnected networks that implement one or more standard communications protocols (e.g., the Internet Protocol Suite, TCP/IP, or the like).
- the network 130 may comprise a collection of network infrastructures including, but not limited to: Ethernet networks, wireless networks, Public Switched Telephone networks (PSTN), Home networks, Wi-Fi networks, and the like.
- the cluster 110 may include a network interface 120 to communicatively couple the cluster 110 (and the organization 130 ) with the network 140 .
- the cluster interface 120 may be shared among the computing devices 112 , 114 , and 116 , in the cluster 110 . Accordingly, the cluster 110 may appear as a single device to the network 130 .
- an additional communications interface 122 (organization interface 122 ) may be provided for communication with the organization 130 .
- the network interface 120 and organization interface 122 may be implemented using respective traffic switches (or different ports of the same traffic switch), or using other network devices (e.g., hubs, routers, switches, or the like).
- network traffic between the organization 130 and the network 140 may pass through the cluster 110 , which may, therefore, provide network security services to the organization, including, but not limited to: firewall, packet filtering, Spam filtering, Web filtering, and so on.
- the cluster 110 may provide for secure access to services within the organization 130 by entities within the network 140 (e.g., provide VPN services).
- a VPN may allow an entity 142 communicatively coupled to the network 140 using a computing device 143 (e.g., personal computer, laptop computer, notebook computer, or the like), to access a mail server 134 and/or file server 136 within the organization 130 .
- the computing devices 112 , 114 , and 116 in the cluster 110 may also be communicatively coupled to one another.
- the devices 112 , 114 , and 116 may each be communicatively coupled using respective, dedicated cluster interface ports 111 A, 111 B, and 111 C.
- the cluster interface ports 111 A, 111 B, and 111 C may be concentrated in cluster network interface 124 , which may be comprise one or more routers, switches, concentrators, hubs, or the like.
- the devices 112 , 114 , and 116 may communicate cluster-specific information (discussed below) using the cluster interface port 111 A, 111 B, and 111 C (via the cluster interface 124 ).
- the devices 112 , 114 , and 116 may be configured to implement a cluster-specific protocol on the cluster interface ports 111 A, 111 B, and 111 C.
- the cluster-specific protocol may provide for fast and reliable communication of cluster-specific data, including, but not limited to: cluster state information, service information, device health information, failover, synchronization data, and the like.
- the cluster-specific protocol may be implemented within the data-link layer (of the eight layer Open System Interconnection Reference Model (“OSI model”)), as opposed to the application layer (or another, higher layer), to allow the cluster interface port to continue to operate regardless of faults in the application layer of the device 112 , 114 , and/or 116 .
- OSI model Open System Interconnection Reference Model
- the cluster 110 may be formed by designating one of the computing devices 112 , 114 , or 116 to act as a cluster master.
- computing device 112 may be selected as the cluster master (e.g., by personnel or the organization, IT staff, or the like).
- Designing a cluster master may comprise providing the computing device 112 with a cluster configuration, which may define the tasks and/or services to be provided by the cluster 110 .
- a cluster configuration may determine the security services to be provided by the cluster 110 (e.g., packet filtering, VPN, etc.), define the security policy to be implemented by the cluster 110 , and so on.
- Configuring the cluster master may further comprise setting a “cluster enabled” flag on the designated computing device 112 , setting a cluster identifier (e.g., cluster name), designating one or more ports for cluster communication (e.g., cluster interface port 111 A), and so on.
- a cluster identifier e.g., cluster name
- designating one or more ports for cluster communication e.g., cluster interface port 111 A
- the cluster 110 may be created (a cluster 110 comprising a single computing device 111 ), and the computing device 112 may begin acting as a cluster master.
- Additional computing devices may be added to the cluster 110 by connecting the device(s) to the cluster interface 124 , the network interface 120 and/or the organization interface 122 .
- the cluster master 112 (and/or other devices added to the cluster), may be configured to detect the connection of a new computing device to the cluster 110 (e.g., to the cluster interface 124 , network interface 120 , and/or the organization interface 122 ).
- the computing devices in the cluster 110 e.g., the cluster master computing device 112
- the discovery messages may comprise broadcast-type messages configured to be received by any computing device ( 114 and/or 116 ) communicatively coupled to the cluster interface 124 (or other interface 120 and/or 122 ).
- the new computing device 114 may receive a device-specific configuration from one of the other devices in the cluster 110 .
- the device-specific configuration may configure the new computing device 114 to operate in “cluster” mode, configure the cluster interface port of the device (port 111 B, discussed below), assign a role to the device (e.g., active, standby, or the like), and so on.
- the new device 114 may join the cluster (e.g., begin communicating via the cluster interface port 111 B), and receive a cluster configuration from another cluster device.
- the cluster configuration may include a definition of the services provided by the cluster 110 (e.g., VPN, firewall, packet filtering, etc.), define a security policy implemented by the cluster 110 , define cluster capabilities (e.g., maximum number of simultaneous connections, etc.), and the like.
- the new device 114 may receive and implement the device-specific configuration (and cluster configuration).
- the cluster master (or other cluster device 112 , 114 , and/or 116 ) may verify that the device has successfully implemented the device-specific configuration (including the cluster configuration). After the verification, the new computing device may be joined to the cluster.
- Joining the cluster 110 may comprise establishing and/or joining a secure cluster communications channel, which may comprise providing the new device with a shared key, performing a key exchange protocol, or the like.
- the secure connection may be established on the cluster interface port of the device (e.g., port 111 A, 111 B, or 111 C).
- the secure cluster connection may be used to synchronize cluster configuration data, flow, run-time synchronization data, global, run-time synchronization data, security services data, time, device monitoring information (e.g., device status messages, health scores, etc), provide access to shared resources (e.g., address pools, port pools, and so on), provide access to shared services (e.g., a shared Internet Key Exchange (IKE) module), and the like.
- device monitoring information e.g., device status messages, health scores, etc
- shared resources e.g., address pools, port pools, and so on
- shared services e.g., a shared Internet Key Exchange (IKE) module
- a cluster 110 may include “active” members operating in “high throughput” mode as well as “standby” member operating in “high availability mode.”
- a cluster configuration may specify that the cluster 110 is to include a particular number of active cluster members (e.g., N active members), with any additional members to operate in standby mode.
- a cluster configuration may specify N active members and Y standby cluster members, specify a certain proportion of active to standby cluster members, or the like. As new members are added to the cluster (according to the discovery processes above), the cluster master (or another cluster device) may determine whether the cluster should be configured to operate in active or standby mode.
- the device If the device is to operate in active mode, it may be made available to perform task(s) and/or provide service(s) as directed by the cluster master (according to a load balancing scheme defined by the cluster configuration). If the device is to operate in standby mode, it may not take on active task(s) and/or provide service(s) until another device fails or stops responding.
- FIG. 2A is a state diagram 200 depicting the addition of a new device to a cluster.
- the state diagram 200 may be implemented as a method, comprising a plurality of steps (e.g., method 201 discussed below in conjunction with FIG. 2B ).
- a device When in state 210 , a device may be communicatively connected to a network (e.g., connected to the interfaces 120 , 122 , and/or 124 of FIG. 1 ).
- the new device may be unconfigured (in a default or safe configuration) and, as such, may not yet have joined the cluster (e.g., not configured to communicate with other cluster devices, receive processing tasks, etc.).
- the device In state 210 , the device may be discoverable by other devices in the cluster.
- Causing a device to enter state 210 may include physically connecting a communications port of the device to a network device (e.g., switch, router, concentrator, or the like), enabling one or more network switch ports or interfaces (e.g., interfaces of network devices 120 , 122 , and/or 124 ), enabling one or more communications interfaces of the device, modifying a network configuration and/or topology to communicatively couple the device to other cluster devices, or the like.
- a network device e.g., switch, router, concentrator, or the like
- network switch ports or interfaces e.g., interfaces of network devices 120 , 122 , and/or 124
- enabling one or more communications interfaces of the device modifying a network configuration and/or topology to communicatively couple the device to other cluster devices, or the like.
- the device may be actively or passively discovered by another device.
- other cluster devices may be configured to transmit discovery messages within a cluster network (e.g., the cluster master may periodically transmit broadcast messages to a cluster interface, such as the interface 124 of FIG. 1 ).
- the discovery messages may include a request for the device to provide device identifying information, such as a device serial number, version, capabilities, licensing information, and the like.
- the cluster device(s) may use the information to determine whether the device is eligible to join the cluster (e.g., is compatible with the other devices in the cluster and/or licensed to operate in a clustered environment). If the device is not compatible with the cluster and/or not licensed for clustered operation, the device may transition to a non-member state 280 . In the non-member state 280 , the device may not participate as a primary (active) and/or secondary (standby) member of the cluster. In addition, the other cluster devices may be configured to exclude the device from secure cluster communications, assignment of cluster processing tasks, and the like.
- a cluster “join” procedure may be initiated.
- the join procedure may transition the device into a join state 220 .
- Transitioning to the join state 220 may comprise the cluster device(s) (e.g., the cluster master or other device) transmitting a device specific cluster configuration to the device.
- the device-specific configuration may be loaded and implemented by the device. Loading and implementing the device-specific configuration causes the device to “join” the cluster and transition to state 220 .
- the device When in state 220 , the device may be prepared to join the cluster as an active or standby cluster member.
- the preparation in state 220 may include a cluster device (e.g., cluster master) validating the device-specific configuration, verifying a license of the device, synchronizing cluster configuration and/or run-time data with the device, and the like.
- cluster device e.g., cluster master
- the device may be returned to state 210 , where the device may be re-discovered and have new device-specific configuration data transmitted thereto (e.g., by the cluster master).
- the synchronization performed in state 220 may include transmitting run-time, global cluster configuration data to the device (e.g., from other cluster device and/or the cluster master).
- the run-time, global cluster configuration data may include data used by the devices in the cluster to process and/or pass network traffic and may include, but is not limited to: flow table information (discussed below), security information (e.g., phase one security association (P1SA), phase two security association (P2SA), session keys, etc.), assigned IP for mobile VPN (MOVPN), user session information, a list of devices in the clusters (along with the static and/or working roles thereof), cluster device status information (e.g., device health, etc.), cluster election information (discussed below), and the like.
- flow table information discussed below
- security information e.g., phase one security association (P1SA), phase two security association (P2SA), session keys, etc.
- MOVPN assigned IP for mobile VPN
- user session information e.g., a list of devices in the
- the cluster configuration data (synchronized from the cluster master) may be used by the cluster device to process network traffic and/or service network requests when the device is operating in active mode.
- synchronization may include establishing a secure cluster communications channel on a particular communication interface (e.g., on a dedicated cluster interface port, such as ports 111 A- 111 C depicted in FIG. 1 ).
- the cluster synchronization channel may be configured to provide for high-performance data synchronization that is resistant to application-layer failures (e.g., implemented at a low layer of the OSI model). If the synchronization cannot be performed (e.g., the device fails to receive the cluster configuration data, the synchronization channel cannot be established, or the like), the device may transition to the non-member state 280 .
- the license verification performed in state 220 may include determining whether licensing information of the device is valid (e.g., using a cryptographic technique, such as verifying a digital signature, hash value, or the like). If the device does not have a license and/or has licensing information that cannot be validated, the device may be configured to operate in “standby” mode (e.g., have a static role of “secondary” or standby). When in standby mode, the device may not actively perform cluster processing tasks (e.g., handle network flows). If the device has a license and/or the licensed capabilities of the cluster allow for additional active members, the device may be eligible to be an active member of the cluster (e.g., have a static role of “primary” or active).
- a cryptographic technique such as verifying a digital signature, hash value, or the like.
- the license verification in state 220 may further include determining the licensed capabilities of the cluster.
- the licensed capabilities of the cluster may be determined by combining the cluster device licenses. The combination may be made in a number of different ways.
- the licenses may be combined in a “least common capabilities” fashion, in which the features supported by the cluster may be determined by the “minimum” set of features provided in each of the device licenses. For example, if the license of a first primary member of the cluster provides for features A, B, and C and the license of a second primary member provides for only features A and B, the cluster comprising the first and second members may only support features A and B.
- the licenses may be combined in an “OR”-type operation (or other logical combination) in which the capabilities of the devices are added together (e.g., a cluster comprising a first device licensed to provide features A and B and a second device licensed to provide features B and C may be capable of providing features A, B, and C).
- certain licensing features e.g., VPN
- a static role of the device may be determined. As discussed above, if the device does not have its own license, the device may be assigned to operate in a secondary or standby role, meaning that the device may not act as an active cluster device (e.g., a device capable of accepting tasks from the cluster master), until failover occurs. In addition, if the device does have a license, but that license does not give the device the same capabilities implemented by the cluster and/or the cluster configuration already has its allotted number of primary members (e.g., as determined by the cluster configuration), the device be given a secondary or standby static role.
- the device may be configured to operate in a primary or active role (e.g., as an active part of the cluster).
- the device may transition to state 230 , where it may act as a cluster member. If the device is configured as a primary or active cluster device, the device may begin accepting processing tasks from the cluster master (e.g., handling network flows, etc.). If the device is configured as a secondary or standby device, the device may wait until failover operation occurs before it begins accepting tasks from the cluster master.
- the cluster master e.g., handling network flows, etc.
- the device may wait until failover operation occurs before it begins accepting tasks from the cluster master.
- the device may leave the cluster member state 230 by being deactivated (e.g., by the cluster master, a human operator, or the like), being deactivated for an upgrade operation, by being reset, by being failed over, or the like. If the device is deactivated, it may enter the non-member state 280 . If the device is reset, it may enter the discoverable state 210 , at which point the device may rejoin the cluster as described above.
- the device When the device is in the non-member state 280 (due to a failure to join the cluster from state 220 , being deactivated from the active member state 230 , or the like), the device may not operate as a primary or secondary cluster device. Accordingly, the device may not actively communicate with other cluster devices, may not accept tasks from the cluster master, and/or enter an active state if/when other cluster device(s) are failed over.
- the device When in the active member state 230 , the device may be configured to operate in one of a plurality of operational roles including, but not limited to: cluster master, backup master, and active.
- the cluster master may be configured to manage the cluster, which may include, but is not limited to: maintaining a list of the devices in the cluster (e.g., a list of active and standby devices), assigning processing tasks to the active devices, maintaining global, run-time synchronization data, managing shared resources, assigning tasks to active cluster members (e.g., perform a load balancing function), handling network flows, monitoring cluster health, managing device failover (e.g., providing for activation of standby cluster members in response to a failure of one or more of the active devices), and the like.
- maintaining a list of the devices in the cluster e.g., a list of active and standby devices
- assigning processing tasks to the active devices maintaining global, run-time synchronization data
- managing shared resources assigning tasks to active cluster members (e.g., perform a
- the global, run-time synchronization data may include a flow assignment data structure comprising a mapping between the network flows handled by the cluster and the cluster device assigned thereto, flow, run-time synchronization data for each of the flows (e.g., session information, such as cache data, session keys, security data, and the like), shared resource data (e.g., address pools, port pools, hostout data, and the like), and so on.
- session information such as cache data, session keys, security data, and the like
- shared resource data e.g., address pools, port pools, hostout data, and the like
- the device When operating as a backup master device, the device may be configured to receive global, run-time synchronization data from the cluster master (e.g., maintain the same set of data as the cluster master). Accordingly, the backup master may quickly take over the role of the cluster master if needed (e.g., if the cluster master fails, has its health score fall below a threshold, or the like).
- An active cluster device may be configured to handle network flows assigned thereto by the cluster master.
- an active cluster device may monitor the health of other cluster members (e.g., the cluster master).
- the cluster master and/or backup master may be configured to operate as active cluster devices (e.g., may process network flows, monitor other cluster devices, and the like).
- the active cluster devices may be configured to transmit flow, run-time synchronization data to the cluster master.
- the flow, run-time synchronization data may include data pertaining to each of the network flow(s) handled by the device.
- the flow, run-time synchronization data may be used in a failover operation to allow another device to handle the flow with minimal service disruption.
- the cluster formation process described above may include selection of a cluster master.
- the cluster master may be the first device added to the cluster (e.g., the first device configured to operate in clustered mode).
- a cluster master may be periodically selected by a human operator (e.g., via a configuration interface) and/or by the devices in the cluster (e.g., in response to the cluster master failing, the cluster master's health score (discussed below) falling below a threshold, after a predetermined time threshold, or the like).
- FIG. 2B is a flow diagram of a method 201 for adding a device (network security device) to a cluster.
- the method 201 may be implemented on a computing device comprising a processor and memory using one or more computer-readable and/or computer-executable instructions.
- the instructions comprising the method 201 may be embodied as one or more distinct software modules, which may be stored on a computer-readable storage medium, such as a hard disc, optical storage media, memory, or the like.
- one or more steps of the method 201 may be tied to particular machine components, such as computer-readable storage media, communications interfaces, processing modules, or the like.
- the method 201 may be initialized, which may comprise loading one or more computer-readable instructions from one or more computer-readable storage media, accessing and/or initializing one or more communications interfaces, and the like.
- the method 201 may discover a device.
- Discovering the device may comprise detecting a communications interface of the new device.
- the new device be communicatively coupled to network interface used by the cluster (e.g., network interface 120 , 122 , and/or 124 of FIG. 1 ), one or more communications interfaces of the device may be activated, a configuration of the device may be set such that the device is capable of communication with other cluster devices or the like.
- Discovering the device at step 221 may comprise active discovery and/or passive discovery.
- Active discovery may comprise the method 201 transmitting network traffic (e.g., broadcast packets, or the like), which may be received (and responded to) by the device.
- the discovery messages may be transmitted automatically and/or periodically.
- the method 201 may transmit discovery messages only if instructed to do so (e.g., via a configuration interface, an SNMP message, or the like).
- Passive discovery may comprise the method 201 monitoring network traffic (e.g., for ARP requests, DHCP requests, or the like), accessing router ARP tables, or the like to discover the device without actively transmitting network traffic thereto.
- the eligibility of the device to join the cluster may be determined. In some embodiments, determining the eligibility of the device to join the cluster may be based upon device-identifying information, such as an indicator of the version or revision of the device (e.g., software version, firmware version, hardware revision, etc.), the capabilities of the device (e.g., hardware capabilities, such as processor speed, memory, and the like, software installed, etc.), device licensing information, and so on.
- the cluster may be configured to only accept certain devices (or device versions) that have certain processing capabilities (e.g., processing speed, memory capacity, communications interface capabilities, such as a gigabit Ethernet interface, or the like).
- Step 231 may comprise the method 201 interrogating the device to determine certain device properties (e.g., hardware configuration, software version, firmware version, etc). If the device is not eligible to join the cluster (does not meet the software or hardware requirements for cluster membership), the flow may continue at step 281 ; otherwise, the method 201 may continue to step 236 .
- certain device properties e.g., hardware configuration, software version, firmware version, etc.
- a device-specific configuration may be transmitted to the device, and device implementation thereof may be validated.
- the transmission of the device-specific configuration at step 236 may comprise selecting device-specific configuration data from a plurality of different device-specific configurations, each of which may be adapted to particular device hardware and/or software configuration or version. The selection may be based upon the device-identifying information obtained at step 231 .
- Step 236 may further comprise verifying that the device has implemented the device-specific configuration. Verification may comprise the device transmitting a confirmation message to the method 201 , the method 201 interrogating the device (e.g., for a hash value or other indicator of the device-specific configuration), or the like.
- step 236 If the device-specific configuration is verified at step 236 , the flow may continue to step 241 . Otherwise, the flow may return to step 236 where the eligibility of the device to join the cluster may be re-determined and/or the device-specific configuration may be re-transmitted. Alternatively, or after a predetermined number of device-specific configuration verification failures, the flow may continue to step 281 .
- a cluster configuration may verified.
- the cluster configuration may be included with the device-specific configuration.
- the cluster configuration may be transmitted separately (e.g., transmitted at step 241 ).
- the cluster configuration may include a security policy implemented by the cluster, identifiers of the devices in the cluster, cluster communication configuration (e.g., cluster port assignment(s), interface port assignment(s), and the like), and the like.
- Step 241 may further comprise verifying that the device has implemented the cluster configuration.
- the verification of step 241 may comprise the device transmitting a confirmation message to the method 201 , the method 201 actively interrogating the device, or the like. If the cluster configuration is verified, the flow may continue to step 251 ; otherwise, the flow may return to step 241 , where the cluster configuration may be re-transmitted to the device and re-verified by the method 201 . Alternatively, or after a threshold number of cluster configuration verification failures, the flow may continue to step 281 .
- a static role of the device may be determined. Determining a static role of the device may comprise accessing a license of the device, evaluating the device-identifying information about the device, and so on. Accordingly, assignment of the device role in the cluster may be determined and transmitted with the device-specific configuration at step 236 . Alternatively, the role assignment may be made in a separate step 251 as depicted in FIG. 2B .
- the device may be assigned a static role of “secondary” or “standby.” When in the secondary or standby role, the device may not be assigned cluster processing tasks (e.g., handle network flows). If the device is licensed and/or a maximum number of active devices defined in a cluster license has not been met, the device may be assigned a static role of “primary” or “active.” When in the primary or active role, the device may be available to perform cluster processing tasks (e.g., handle network flows). Assigning a role to the device may further comprise electing the device to act as a cluster master or backup master as described above. For example, if the device is the first device in the cluster, the device may be automatically selected as the cluster master. Similarly, if the cluster does not yet have a backup master, the device may be given the role of backup master.
- step 251 may further comprise determining the licensed capabilities of the cluster. If the device has its own license, the license may be transmitted to the device implementing the method 201 . The license may be combined with the licenses of the other devices in the cluster (if any).
- the licensed capabilities of the cluster may define the capabilities thereof, which may include, but are not limited to: the number of active connections supported by the cluster, the throughput of the cluster, the services provided by the cluster (e.g., VPN, SSL, etc.), the number of active devices in the cluster, and so on.
- the licenses may be combined by determining the least common capabilities therebetween (e.g., if a first license allows 500 concurrent connections, and a second license allows 700 concurrent connections, the cluster may be licensed to the lower number of concurrent connections, or 500 concurrent connections).
- the combination may be additive or according to the maximum capabilities of the licenses.
- Different licensed features may be combined in different ways (e.g., certain capabilities may be determined according to least common capability, while others may be additive, and so on).
- the device may join the cluster in its assigned role (the static role determined at step 251 ). If the device has been assigned an active role within the cluster, joining the cluster at step 261 may comprise configuring the other members of the cluster to communicate with the device (e.g., using a secure, cluster communications protocol), configuring the cluster master to assign processing tasks to the device (e.g., assign network flows to the device), and so on. Accordingly, joining the cluster may comprise the cluster master (or other cluster device) provide a shared key to the device to allow the device to securely communicate with other cluster devices. Alternatively, or in addition, joining may comprise performing a key exchange operation with one or more cluster devices to establish shared keys therewith.
- joining the cluster at step 261 may comprise initializing cluster master data structure, such as a flow assignment data structure, global, run-time synchronization data structure, shared resource data structure, and the like.
- the device may be configured to receive and assign network flows to cluster devices as described herein.
- the device may be configured to synchronize global, run-time synchronization data with a backup master device (if any).
- joining the cluster at step 261 may further comprise configuring the cluster master to synchronize global, run-time synchronization data with the device, which may include, but is not limited to: a flow assignment data structure, flow, run-time synchronization data (data associated with each of the assigned flows), shared resource data, and the like.
- joining the cluster at step 261 may comprise operating in standby mode (e.g., passively synchronizing with the cluster master) until device failover occurs, at which point the device may transition to an active role as described above.
- joining the cluster as a standby device may comprise establishing a secure communications channel with the device, configuring the other cluster devices to use the device as a failover candidate (e.g., make the device available in the event of a failure of one of the other cluster devices), synchronizing cluster configuration and run-time data with the device, and the like.
- the device may be set as a non-member.
- Setting a device as a non-member may comprise configuring the device to operate in its default or “safe” configuration.
- other cluster devices may be configured to exclude the device from secure cluster communications, from eligibility for assignment of cluster processing tasks, from eligibility for use as a failover device, and the like. Accordingly, the device may not implement the cluster configuration, communicate with other cluster devices (e.g., have access to the secure, cluster communications channel), and so on.
- the device When reverted to the default or safe configuration, the device may be discoverable by other cluster members and, as such, may attempt to join the cluster at a later time (e.g., be discovered at step 211 ).
- the flow may terminate until another device becomes discoverable, cluster join requirements are modified (making non-member devices eligible to join the cluster), or the like.
- FIG. 3A is a diagram 300 depicting the relationships and/or transitions between cluster device operation modes, such as cluster master, backup master, and active operational modes.
- the device When a device is joined to a cluster, the device may begin operating in a default operational mode 310 .
- the default operational mode 310 of the device may be the cluster master operational mode 320 . If the device joins a cluster that already has a cluster master, but not backup master, the default operational mode 310 of the device may transition to be the backup master 330 . If the cluster already includes devices operating as cluster master 320 and backup master 330 , the default operational mode 310 of the device may transition to one of the active 340 or standby 350 modes.
- a device may operate as an active cluster device 340 if the cluster can include additional active (worker) devices (e.g., according to the licensed capabilities of the cluster 300 ).
- the number of active cluster devices may be defined by a cluster configuration and/or licensing information (e.g., the configuration and/or license may specify that the cluster may include five active cluster devices).
- the number of active cluster devices allowed in the cluster may or may not include the cluster master 320 and/or backup master 330 . If the cluster may accept additional active cluster devices, the device may transition from the default mode 310 to the active mode 340 , in which the device may accept tasks from the cluster master 320 .
- the device may transition to the standby mode 350 .
- a device in standby mode 350 may not actively perform processing tasks assigned by the cluster master, but may actively synchronize cluster configuration data. Accordingly, when the device transitions from standby mode 350 to active mode 340 (e.g., due to a change in cluster configuration, licensing, device failure, etc.), the device may be ready to begin performing tasks assigned thereto without first synchronizing cluster configuration data. Other changes in the cluster configuration may require that one or more active devices 340 transition back to standby mode 350 . The transition may include the devices continuing to synchronize cluster configuration data, but not accepting processing tasks (network flows) from the cluster master 320 .
- a device may be demoted from cluster master 320 for a number of different reasons including, but not limited to: device failure (hardware, software, communications interface, or the like), device health score falling below a threshold, configuration message from a human operator, automatic demotion (e.g., as a result of a failure detected within the device by the cluster master device or another monitoring device), or the like.
- Failover may comprise promoting another device to operate as the cluster master 340 .
- the cluster includes a backup master device 330
- the backup master device 330 may be elected as the new cluster master 320 . Promoting the backup master 330 to the master 320 may include configuring the other devices in the cluster (e.g., the active devices 340 and/or demoted cluster master 320 ) to use the backup master device 330 as the new cluster master).
- the backup master 330 may be synchronized to the cluster master 320 (may have been receiving updates to the global, run-time synchronization data from the cluster master 32 , such as flow assignment data, shared resource, data, session data, security data, and the like), the transition to the new cluster master 320 may be performed without incurring downtime and/or interrupting the services provided by the cluster.
- the backup master 330 may only be elected to the cluster master 320 operational mode if it satisfies some election criterion, which may relate to a minimum health score of the device, device hardware capabilities, processing load, or the like. If the backup master 330 does not satisfy these criteria, and another cluster device does, another device other than the backup master 330 may be elected to operate as the cluster master 320 .
- the election may comprise the backup master transmitting the global, run-time synchronization data maintained thereby to the new device. The performance penalty suffered by transmitting the global, run-time synchronization data to the new cluster master may be mitigated by the fact that a device better suited to act as the cluster master is put into place (e.g., reducing the chance of another failure in the short term).
- the backup master 330 may act as the cluster master 320 for a “transition period,” until the global, run-time synchronization data is transmitted to the more suitable device, after which the more suitable device may transition to cluster master 320 , and the backup master may resume its former role.
- Transitioning the backup master 330 to operate as the cluster master 320 may include electing another device in the cluster to operate as the backup master 330 . If another device is available to act as a backup master 330 , the device may be configured to transition to the backup master 330 .
- the transition of a cluster device to backup master 330 may comprise transmitting the global, run-time synchronization data to the new backup master 330 (from the former backup master 330 or the failed over cluster master 320 ).
- electing a new backup master 330 may comprise determining which, if any, cluster devices 340 or 350 are eligible to operate in the backup master operational mode 330 (e.g., based upon health score, processing load, device capabilities, such as processor speed, storage space, number and/or type of available communications interfaces, and the like). If more than one cluster devices are eligible for promotion to backup master 330 , the election may comprise selecting the device with the higher health score, lower IP address, lower port number, or the like.
- a new cluster master 320 may be selected from the active cluster devices 340 .
- the election may operate as described above (e.g., based on device capabilities, health score, load, port number, or the like).
- a new backup master 330 may be elected as described above.
- FIG. 3B depicts data flow 301 between cluster devices.
- run-time synchronization data for load sharing and/or failover transparency may be synchronized between cluster devices.
- the cluster master 320 may be configured to synchronize cluster configuration (e.g., cluster configuration updates), flow, run-time synchronization data, shared source data, and the like to the cluster devices (e.g., the backup master 330 , active device(s) 340 , and/or standby device(s) 350 ).
- the cluster master 320 may receive configuration updates (e.g., from a human operator via a configuration interface, from a policy server, or the like).
- the configuration updates may include modifications to the cluster policy.
- the cluster master 320 may synchronize updates to the cluster policy to the cluster devices 330 , 340 , and/or 350 . Synchronizing the cluster policy may include modifying an operational mode of one or more cluster devices (e.g., transitioning devices operating in standby 350 to active mode 340 , or the like).
- the cluster master 320 may be configured synchronize the global, run-time synchronization data with the backup master 330 .
- the global, run-time synchronization data may include data needed for cluster master failover transparency, such as flow assignment information (e.g., flow assignment data structure), flow, run-time synchronization data, shared resource information (e.g., address pools, port pools, and so on), shared services information (e.g., security keys, security associations, etc.), and the like.
- the backup master 330 may be configured to transmit an acknowledgement message to the cluster master 320 responsive to receiving global, run-time synchronization data therefrom.
- the acknowledgement may be used by the cluster master 320 to verify that the global, run-time synchronization data was received. If the cluster master 320 does not receive an acknowledgement from the backup master 330 within a threshold period of time, the global, run-time synchronization data may be retransmitted to the backup master, and/or a new backup master 330 may be elected as described above (a backup master failover operation may be performed).
- the global, run-time synchronization data, cluster configuration, and other cluster state information (e.g., key negotiation requests, etc.) distributed via the device cluster interface ports (e.g., ports 111 A- 111 C of FIG. 1 ).
- the cluster master 320 may be configured to distribute network traffic and/or flow processing tasks to the devices, including the active devices 340 , the cluster master 320 itself, and/or the backup master 330 (the cluster master 320 and the backup master 330 may be used as “active” cluster devices for the purposes of flow processing).
- the cluster master 320 may maintain a data structure indicating which tasks have been assigned to which cluster members (a flow assignment data structure described below).
- the flow assignment data structure may include an enumeration of the network flows (e.g., network connections, VPN connection, etc), being serviced by the cluster and identify which device is servicing which flow.
- the cluster master may, therefore, monitor which devices are heavily loaded and which are less loaded and make task assignment decisions accordingly.
- the cluster configuration may define one or more flow assignment rules, which may specify which devices are eligible to handle which flows (e.g., based upon existing flow assignments, security group information, session state, efficiency considerations, or the like).
- the data sent between the cluster devices may be transmitted using a secure communications channel.
- data may be encrypted and/or digitally signed.
- inter-cluster communications may be implemented on a cluster interface port (port 111 A- 111 C of FIG. 1 ).
- the cluster interface ports may implement a high-performance protocol that is resistant to application-layer failures.
- a high-performance, low-level communications protocol is described below.
- the active cluster devices 340 and/or backup master 330 may be configured to transmit flow, run-time synchronization data to the cluster master 320 .
- the flow, run-time synchronization data may include data relating to the flow(s) handled by the respective device(s). Accordingly, the flow run-time synchronization data may include all the data needed to transition a flow from one cluster device to another cluster device in the event of a failover operation.
- the flow, run-time synchronization data may include flow session data, security information (e.g., security association sequence information number, shared keys, etc.), flow termination, addition and/or removal of rules on a data channel, flow port assignments, flow cache, and the like.
- the cluster master 320 may aggregate the flow, run-time synchronization information received from the cluster devices into a global, run-time synchronization data structure, which may be synchronized with the backup master 330 .
- the flows may be transitioned to one or more other cluster devices.
- the flow run-time synchronization data corresponding to each of the transitioned flows may allow the replacement cluster device to resume processing the flows with minimal interruption of service.
- the cluster master 320 may synchronize the global, run-time synchronization data (including the flow, run-time synchronization data of each of the flows), to the backup master 330 to provide protection in the event of a failover operation of the cluster master 320 (e.g., in the event that the cluster master 320 goes down, to be replaced by the backup master 330 or some other cluster device).
- the global, run-time synchronization data may include other types of synchronization data, such as synchronization data pertaining to shared resources managed by the cluster master 320 , shared services provided by the cluster master 320 , cluster configuration data, and the like.
- the cluster master 320 may manage IP security (IPSec) data across the cluster.
- the cluster master 320 may implement an Internet Key Exchange (IKE) module, which may provide shared IKE services to the other devices in the cluster (one example of such a configuration is described below in conjunction with FIG. 9A ).
- IKE Internet Key Exchange
- the cluster master 320 may provide call backs for use by the other cluster devices in the negotiation of security associations (e.g., phase 1 security associations, phase 2 security associations, etc.), perform dead peer detection, terminate IPSec flows, and the like.
- security associations e.g., phase 1 security associations, phase 2 security associations, etc.
- the global, run-time synchronization data synchronized from the cluster master 320 to the backup master 330 may include the IKE module data to provide for IKE module failover.
- the cluster master may manage the shared resources of the cluster. Shared resource information may be maintained within the global, run-time synchronization data structure discussed above (e.g., along with the flow assignment data structure, run-time flow synchronization data, and other cluster synchronization data managed by the cluster master).
- the shared resources managed by the cluster master may include, but are not limited to: shared address pools, port pools, hostout traffic configuration, and the like.
- the cluster master may act as a Dynamic Host Configuration Protocol (DHCP) server to dynamically assign IP addresses to DHCP and/or to MOVPN clients (e.g., IPSec, SSL, PPTP, and the like).
- the cluster master 320 may maintain an address pool data structure indicating which addresses have been assigned to which clients.
- the address pool data structure may be included in the global, run-time synchronization data that is synchronized from the cluster master 320 to the backup master 330 .
- the cluster master may also manage a port pool for DNAT.
- DNAT When DNAT is used, the source IP address of a network flow may be replaced with a fixed IP address, while a source port thereof is replaced with a port number obtained from a managed port pool.
- the assigned port number may be reserved for use by the corresponding flow (e.g., the port may not be used for other network traffic, such as other network flows, while port is in use by the assigned flow).
- the cluster master may maintain a port pool comprising a data structure indicating which ports have been assigned to which flows.
- the port pool information may be included in the global, run-time synchronization data synchronized from the cluster master 320 to the backup master 330 .
- the cluster master 320 may manage hostout traffic, which may include network traffic that is initiated by cluster devices (individual cluster members 320 , 330 , 340 , and/or 350 ).
- the hostout traffic may be used for various purposes including, but not limited to: sending data to a quarantine server (e.g., in virus scanning, spam filtering, or the like), sending logging information to a log server, sending Simple Network Management Protocol (SNMP) traps to an SNMP manager, and the like.
- the hostout traffic may use the shared cluster address (the cluster IP address) as the source of the traffic. Since the cluster address is shared, each cluster device that initiates hostout communications may be assigned a different port, to prevent port conflicts between devices.
- the cluster master 320 may maintain a hostout data structure indicating which hostout ports have been assigned to which cluster devices.
- the hostout data structure may be included in the global, run-time synchronization data that the cluster master 320 synchronizes with the backup master 330 .
- the cluster master 320 may also manage shared resources associated with network flows. For example, certain network flows may require the use of particular ports. For example, when an FTP session receives a “port” command or passive response the cluster device handling the flow may be required to request of port number for the FTP session from the cluster master 320 .
- the cluster master 320 may use the port pool (or other data structure) to determine which ports are available for use by the flow and/or to prevent a port conflict between network flows being handled on different cluster devices.
- the cluster master 320 may use the port pool (discussed above), or another data structure, to prevent port conflicts.
- the data structure may include in the global, run-time synchronization data, which may be synchronized to the backup master 330 by the cluster master 320 .
- the global, run-time synchronization data described herein could include any type of data and/or data structure known in the art.
- synchronization data transmitted to the cluster master 320 from the cluster devices 330 , 340 , and/or 350 e.g., flow, run-time synchronization data
- the cluster devices may be configured to monitor the operational status of one another. Responsive to the monitoring, the cluster device(s) may take one of several possible actions including, but not limited to: replacing the cluster master 320 with another cluster device, replacing the backup master 330 with another device, failing over a device (e.g., replacing the device with another cluster device), or the like.
- the cluster devices may implement a monitoring function in various different ways.
- each of the cluster devices may generate and transmit periodic status messages.
- the status messages may be transmitted using a shared cluster interface (e.g., interface ports 111 A-C of FIG. 1 ).
- the status messages may provide an indication that the cluster device is operational and capable of accepting tasks from the cluster master 320 .
- the status messages may be used to communicate device performance and/or operational metrics, which may be used to calculate or derive a “health score”, of the device.
- a device health score may refer to data (e.g., embodied as one or more alpha numeric values, formatted data, or the like), which be indicative of the operational status of a cluster device.
- a health score may include, but is not limited to, providing indications of the status of one or more application layer modules implemented on the device; providing indications of the performance of the cluster device; providing indications of the status of the communications interfaces of the device; and the like.
- a device health score may include application-layer information, such as performance metrics of various device application-layer modules (e.g., traffic processing modules, etc.), the number of packets processed by the application per unit time, application throughput, may provide a record of application-layer faults and/or application-layer exceptions, provide application resource usage metrics (e.g., memory usage, processor usage, etc.), and the like.
- the application-layer information in the health score may be provided on a per-application basis and/or as an aggregate of all application-layer modules.
- Other health score metrics may quantify the overall performance of the cluster device, such as network throughput, overall processing load, system resource status, and the like. Health score metrics indicate the status of the communications interfaces of a cluster device.
- the health score may indicate which (if any) communications interfaces are down (e.g., interface link status), provide interface-specific signal-to-noise ratio(s), provide indications of interface collision(s), provide indications of communication interface load, and the like.
- certain components of the health score may be more heavily weighted than others.
- the weighting may allow an administrator to configure the health score to emphasize certain aspects of device performance and/or health. For example, if a certain application or function is considered to be particular important to an organization, the administrator may configure the heath score to give added weight to device metrics relating to the application and/or function.
- the health score of a device may include a failover request.
- the device may be due for maintenance (e.g., a software or hardware updates). Responsive to the maintenance requirement, the device may transmit a status message comprising a health score (or other data), indicating that the device is to be taken down.
- the device may transmit a status message comprising a request for failover.
- the status messages of the cluster devices may be used to determine which cluster devices should be selected to perform particular processing tasks, elect cluster devices to perform different roles within the cluster (e.g., cluster master 20 , backup master 330 , worker 340 , etc.), provide a quantitative gauge of the performance of the cluster device, provide an indication of the stability of the device, provide an operational status of the device (e.g., indicate which services or tasks the device is capable of performing), provide an indication as to whether the device is likely to fail within a particular time frame, and so on.
- elect cluster devices to perform different roles within the cluster e.g., cluster master 20 , backup master 330 , worker 340 , etc.
- provide a quantitative gauge of the performance of the cluster device e.g., provide an indication of the stability of the device, provide an operational status of the device (e.g., indicate which services or tasks the device is capable of performing), provide an indication as to whether the device is likely to fail within a particular time frame, and so on.
- a health score (or data from which a health score may be derived) may be included in the periodic status messages transmitted from a cluster device to the other cluster members (e.g., via the cluster interface port 111 A-C of FIG. 1 ).
- the status messages (and/or the health score data therein) may be used to monitor the cluster devices, which may comprise: performing failover operations, assigning processing tasks (network flows) to various cluster devices, electing devices to act as the cluster master 320 and/or backup master 330 , and so on.
- the health score of a device may be used to detect device instability which, may be indicative that the device is about to fail and/or is not operating properly. If the health score indicates that a device is about to fail, other cluster devices may implement a preemptive failover operation to failover the device before it crashes. A preemptive failover may provide for a more efficient transition to a replacement device, which may minimize interruption to the services provided by the cluster. Similarly, the health score of a cluster master 320 or backup master 330 may be used to invoke a preemptive failover to replacement cluster master 320 and/or backup master 330 devices.
- the selection of a replacement cluster master 320 and/or backup master 330 may be predicated upon, inter alia, the respective health scores of the available cluster devices (e.g., a cluster device having a low health score may be excluded from election as the cluster master 320 or backup master 330 ).
- Failover of an active cluster device may occur responsive to one or more failover conditions including, but not limited to: loss of communication with the device (e.g., based upon device link status), communications interface failures (e.g., failures in one or more non-cluster communications interfaces), device crash (e.g., non responsive despite the existence of a communications link), heath score below a threshold, in response to a configuration command (e.g., a command to bring down the device to perform device maintenance, device upgrades, or the like), and so on.
- a configuration command e.g., a command to bring down the device to perform device maintenance, device upgrades, or the like
- the other devices in the cluster may implement a failover operation to replace the failed over device with another device.
- the nature of a failover operation may vary according to the operational role of the failed device.
- a cluster master failover may comprise selecting a new cluster master 320 from the other cluster devices.
- the selection of the new cluster may be made by the remaining cluster members as a whole to ensure that only one device is configured to act as the cluster master 320 at any one time.
- the selection of a replacement cluster master 320 may be based on the current role of each of the remaining cluster devices. For example, if the cluster includes a backup master 330 , the backup master 330 device may transition to be the new cluster master 320 (since it is already synchronized with the cluster master). If there is no backup master 330 , or the backup master device also satisfies failover conditions (has failed or is on the verge of failing), a worker 340 or standby 350 device may be selected.
- the selection may be based upon device health score, processing load, IP address, connection speed, random selection, or the like. If the backup master 330 is operable (but not suitable as the cluster master 320 ), the backup master 330 may be configured to synchronize the global, run-time synchronization data to the replacement cluster master before being failed over itself.
- a suitable replacement may be selected as described above.
- the failover to a replacement backup master 330 may comprise synchronizing the global, run-time synchronization to the new device from the cluster master 320 and/or backup master 330 , if possible.
- the device to the failed over may be actively performing cluster processing tasks (e.g., handling network flows).
- a failover operation may comprise transitioning network flows assigned to the failed device to one or more available cluster devices. Transitioning a network from a first device (failed device) to a second replacement device may comprise transmitting to the second replacement device any flow, run-time synchronization data pertaining to the flow.
- the flow, run-time synchronization data may be transmitted to the second replacement device by the cluster master 320 or backup master 330 , both of which may maintain synchronized global, run-time synchronization data structures comprising the flow, run-time synchronization data pertaining to the flows.
- the transition may further comprise the cluster master 320 configuring the second replacement to handle the transitioned network flows, updating the flow assignment data structure within the global, run-time synchronization data, and (if operating in “direct-forward” mode) configuring an inbound network interface to forward network traffic associated with the flow to the second replacement device.
- FIG. 3C is a flow diagram of one embodiment of a method 302 for monitoring a cluster using devices within the cluster.
- the method 301 may be implemented on a computing device that has joined a cluster as a cluster master, backup master, active member, and/or standby member.
- the cluster device implementing the method 302 may comprise a processor and memory.
- the method 302 may be embodied on the cluster device as one or more computer-readable and/or computer-executable instructions, which may be embodied as one or more distinct software modules stored on a computer-readable storage medium of the cluster device (e.g., hard disc, optical storage media, memory, or the like).
- one or more steps of the method 302 may be tied to particular device components, such as computer-readable storage media, communications interfaces, processors, or the like.
- the method 302 may be initialized, which may comprise loading one or more computer-readable instructions from one or more computer-readable storage media, accessing and/or initializing one or more communications interfaces, and the like.
- a health score may comprise information relating to the application layer of the device, device performance, device communications interface status, and the like.
- step 321 may comprise calculating one or more alpha numeric health score values (e.g., a set of alpha numeric values, each relating to a different device health category).
- step 321 may comprise acquiring data from which a health score of the device may be derived (e.g., raw performance statistics, operational parameters, logging information, and the like).
- a status message may be transmitted to other devices in the cluster.
- the status message may comprise the data acquired at step 321 (e.g., the health score and/or the data used to derive the health score).
- the status message may be transmitted via a dedicated cluster communications interface port, such as the cluster interfaces 111 A- 111 C of FIG. 1 .
- the status message may be directed to a dedicated cluster network interface, such as the cluster interface 124 of FIG. 1 , which may comprise a switch, hub, concentrator, or other network communications device.
- the status message may be communicated using a cluster-specific communications protocol, which may provide for efficient communications that are resistant to application-layer failures.
- the cluster-specific communications protocol may be implemented below the application layer (e.g., in the data link layer or the like).
- the method 302 may be configured to generate and transmit status messages (e.g., perform steps 321 and 331 ) at regular intervals. Accordingly, other devices monitoring the device implementing the method 302 may detect a failure in the device using the status messages transmitted thereby and/or if no status messages from the device are received within a threshold time period.
- the method 302 may receive status messages from other devices in the cluster (e.g., via the dedicated cluster communications interface, cluster network interface, or the like).
- the status messages may include respective device health scores (or information from which respective device health scores may be determined), each corresponding to a respective cluster device.
- the status messages may further include information describing the current configuration of the device (e.g., cluster configuration, security policy, software version, firmware version, etc.).
- the method 302 may determine whether any of the devices in the cluster are to be failed over.
- a device may be failed over when one or more failover conditions are satisfied.
- the method 351 may implement any number of different failover conditions, some of which may be based upon the health score of the device, and other which may be related to lower-level monitoring functions (e.g., link-level monitoring, connectivity, and the like).
- the failover conditions at step 351 may include, but are not limited to: the health score of the device falling below a threshold; the health score of the device being maintained below a threshold for a threshold time period; run-away device resource consumption as indicated by the health score (e.g., runaway processor load, memory usage, or the like); poor application-layer performance (e.g., if the health score indicates that one or more applications deemed to be critical (IPSec, VPN, anti-virus, etc.) are not performing adequately; device hardware failures (e.g., bad memory, disc, or the like); communications interface failures or performance degradation (e.g., low network throughput, high SNR ration, etc.); failure to receive status messages for a threshold time period; device link status; hardware or software configuration change; or the like.
- IPSec runaway processor load, memory usage, or the like
- poor application-layer performance e.g., if the health score indicates that one or more applications deemed to be critical (IPSec, VPN, anti-virus, etc
- the flow may continue at step 361 ; otherwise, the method 302 may terminate at step 371 and/or continue as more status messages are received and/or when an updated status message is to be transmitted.
- a failover operation for the one or more devices identified at step 351 may be performed as described above.
- An example of a method for failing over a cluster device is described below in conjunction with FIG. 3D .
- the method 302 may terminate at step 371 and/or may continue as more status messages are received from other cluster devices and/or when a periodic status message is to be transmitted from the device.
- FIG. 3D is a flow diagram of one embodiment of a method 303 for failing over a cluster device.
- the method 303 may be implemented on and/or in conjunction with a cluster device comprising a processor, memory, communications interfaces, and the like.
- the method 303 may be implemented on the cluster device using one or more computer-readable instructions embodied as discrete software modules stored on a computer-readable medium.
- the method 303 may be initialized, which may comprise loading one or more instructions from a computer-readable medium, initializing communications interfaces, and the like.
- a device to be failed over may be identified.
- the identification of step 314 may be implemented by a method, such as method 302 described above in conjunction with FIG. 3C .
- the identification may be received from the device to be failed over (e.g., as an explicit failover request), received from an external source, such as a configuration interface or other management device (e.g., an SNMP message, user request, or the like), or the like.
- one or more available cluster devices to replace the failed device may be selected. The selection may be based upon health score of the other devices, the availability of standby devices, or the like. If the failed over device is operating as the cluster master, the selection of step 332 may give preference to a backup master (if available) as discussed above. If the backup master is selected to replace the cluster master, step 332 may further comprise selecting a replacement for the backup master.
- the one or more devices selected at step 332 may be prepared to handle the tasks of the failed over device.
- Preparing a device to handle a processing task may comprise transferring flow, run-time synchronization data to the device.
- the flow, run-time synchronization data may comprise flow session information, such as IPSec data (e.g., P1SA, P2SA, shared keys, etc), flow cache, flow port shared resource allocations (e.g., DNAT ports, etc.), and the like.
- the flow, run-time synchronization data may be transferred from the cluster master and/or backup master.
- the data may be transferred to the replacement devices directly from the failed over device (before it is brought down and/or removed from the cluster).
- the preparation of step 342 may further comprise synchronizing the global, run-time synchronization data maintained by the cluster master to the replacement cluster master device. If the replacement cluster master device was formerly operating as the backup master, the global, run-time synchronization data may already have been synchronized. If not, the synchronization may take place between the backup master (if available) and the replacement cluster master or between the replacement device and the cluster master itself (if possible). If the backup master was selected to replace the cluster master at step 332 , the preparation of step 342 may further comprise preparing a replacement for the backup master. Preparing a replacement for the backup master may comprise synchronizing the global, run-time synchronization data to the replacement backup master device.
- the cluster and the one or more replacement devices may be configured to perform the tasks of the failed over device.
- the configuration of step 352 may comprise updating a task assignment data structure to indicate which devices are handling the tasks formerly assigned to the failed over device. For example, a flow assignment data structure (discussed below) may be updated to indicate that the flows that were formerly being handled by the failed over device are not being handled by one or more replacement devices. If the cluster is operating in direct-forward mode, the configuration of step 352 may further comprise configuring an inbound network interface (e.g., interface 120 of FIG. 1 ) to forward traffic pertaining to the transferred flows to the corresponding replacement devices.
- an inbound network interface e.g., interface 120 of FIG. 1
- the configuration of step 352 may comprise the replacement cluster master taking over management of shared cluster resources (e.g., address pools, port pools, etc), performing task assignment (e.g., assigning network flows to various cluster devices), maintaining global, run-time synchronization data, managing shared services (e.g., shared security services, such as IKE, and the like), and so on.
- Step 352 may, therefore, comprise configuring the other devices in the cluster to use the replacement device as the cluster master. Accordingly, the devices may be configured to transmit flow, run-time synchronization data to the new cluster master, request shared resources from the new cluster master, access shared services from the new cluster master, and so on.
- the method 303 may terminate until another failover operation is to be performed.
- a cluster failure may be accompanied by a cluster partition, in which a first set of one or more cluster devices are cut off from communication with a second set of cluster devices.
- the election of a cluster master may be configured to prevent “cluster partitioning,” in which each set of communicatively coupled cluster partitions elects its own cluster master (resulting in two concurrently running cluster masters 320 ).
- the cluster devices may detect a cluster partition (e.g., split syndrome in which some cluster devices cannot communicate with other cluster devices). The detection may comprise using a specially configured Ethernet frame to probe the multi-segment condition. If a multi-segment condition is detected, an active segment may be selected.
- the active segment may be the segment comprising the largest number of computing devices, the segment comprising the cluster master and/or backup master, or the like.
- the device may be synchronized thereto.
- the cluster master in the active segment may rejoin the device to the cluster as described above.
- the devices in the cluster 301 may synchronize cluster information using a dedicated cluster interface port, such as the cluster interface ports 111 A- 111 C of FIG. 1 (e.g., each device may dedicate a communications interface to cluster communications, which may be concentrated at a switch or other network element).
- the cluster interface port may implement a specialized protocol configured to provide for high-speed, robust device-to-device communications.
- the protocol may operate at a low level to provide for cluster communication despite failures in the application layer of the device. For instance, the protocol may be implemented with the OSI data layer.
- the cluster 110 may be configured to provide network security services with load balancing and/or high availability.
- Load balancing may be implemented by assigning flows (comprising network processing tasks) to cluster members as evenly as possible, while high availability may be implemented by reassigning flows to surviving cluster members (or standby cluster members) when a cluster device fails.
- the cluster 110 may implement a “flooding” technique, in which each arriving packet (received via the interface 120 ) may be forwarded to each of the cluster devices 112 , 114 , and 116 .
- Each cluster device 112 , 114 , and 116 may examine the packet header and decide whether to handle the packet (e.g., based upon whether the device has been assigned to manage the flow associated with the packet). If so, the device may process the packet according to a policy implemented by the cluster 110 ; otherwise, the device may drop (ignore) the packet. If the packet is not associated with any known flow (e.g., a new inbound request, etc.), the cluster master may identify the flow as “new” and assign it to an active cluster device 112 , 114 , 116 .
- the cluster master device may send an address resolution protocol (ARP) reply to the interface 120 with a multicast Media Access Control (MAC) address.
- ARP address resolution protocol
- MAC Media Access Control
- a generic multiple registration protocol may be used to prevent flooding network traffic to ports not used by the cluster 110 .
- Certain network elements e.g., routers may require an ARP entry for the cluster master 110 to be manually inserted.
- the interface master may send an ARP reply with an unknown unicast MAC address, which may cause the interface 120 to route inbound traffic to all of the devices ( 112 , 114 , and 116 ) in the cluster 110 .
- some interface devices 120 may rate-limit traffic associated with unknown destination MAC addresses.
- the interface 120 may include a dump hub. The dump hub may flood inbound network traffic to the devices ( 112 , 114 , and 116 ) in the cluster 110 .
- network traffic sent out by the cluster devices 112 , 114 , and/or 116 may loop back within the cluster 110 (e.g., traffic transmitted by device 112 may loop back to the devices 114 and 116 , and so on).
- the cluster 110 may be configured to operate in a “direct-forwarding” mode.
- Direct forwarding may be implemented using an interface 120 configured to route inbound network traffic to a particular device 112 , 114 , or 116 within the cluster 110 .
- the cluster master e.g., device 112
- the cluster master may register a virtual MAC address with the interface 120 (e.g., respond to an ARP request (virtual IP) from the interface 120 with a virtual MAC address). Therefore, unicast traffic will be routed to the cluster master 112 only (and not to the other devices 114 and 116 in the cluster 110 ).
- Multicast and/or broadcast traffic may be filtered by the devices (e.g., 114 and 116 ) that are not configured to act as the cluster master 112 .
- a flow When a flow is assigned to a particular device 112 , 114 , or 116 in the cluster 110 , it may transmit a direct forward request to the interface 120 .
- the direct forward request may specify the types of traffic that are to be forwarded to the device (e.g., in a traffic specification) and provide the MAC address of the device ( 112 , 114 , or 116 ) to which the traffic is to be forwarded.
- the interface 120 may identify traffic associated with the flow and forward the traffic directly to the device (as opposed to flooding each device 112 , 114 , and 116 therewith). If no flow is associated with the incoming traffic, the traffic may be forwarded to the cluster master, which may assign to flow to a cluster device 112 , 114 , 116 .
- FIG. 4 is a block diagram of one embodiment of a cluster device, such as 112 , 114 , and/or 116 .
- the cluster device 400 may be implemented as and/or in conjunction with a computing-device 410 comprising a processor 412 , memory storage 414 , and computer-readable storage media 416 .
- the processor 412 may comprise one or more general purpose processors (e.g., Intel® Pentium® processor(s), Advanced Micro Devices Athlon® processor(s), or the like), one or more special purpose processors, one or more application specific integrated circuits (ASICs), or the like.
- the memory 412 may comprise volatile and/or non-volatile memory.
- the computer-readable storage media 416 may comprise one or more hard discs, optical storage media, Flash storage media, and the like.
- the device 400 may include a communications interface 450 , which may communicatively couple the device to one or more networks, such as the network 140 of FIG. 1 , the Internet, a WAN, a LAN, a local-cluster network, or the like.
- the communications interface 450 may comprise wired and/or wireless communications interfaces, such as Ethernet interfaces, fiber-optic interfaces, IEEE 802.11 interfaces, and the like.
- One or more of the communications interfaces 452 may be communicatively coupled to a communications network 440 , which may comprise a WAN and/or the Internet.
- the communication interface(s) 120 A may be communicatively coupled to the communications network via a cluster interface 420 .
- One or more communications interfaces 454 may be communicatively coupled to an internal network 430 (e.g., LAN, local network, home network, or the like), such as the organization network 130 of FIG. 1 .
- the communications interface(s) 454 may be communicatively coupled to the internal network 430 via a communications interface 122 , which may comprise a switch, router, or other network element.
- One or more communications interfaces 456 may be communicatively coupled to a local cluster network, which may provide for communications with other cluster devices (not shown), such as the devices 112 , 114 , and 116 in the cluster 110 of FIG. 1 . Accordingly, the communications interfaces 456 may be communicatively coupled to a switch, hub, router, or other concentrator device 424 .
- the device 410 may include one or more processing modules 460 , 462 , 464 and 466 , which may be operable on the processor 412 and/or implemented (in whole or in part) using one or more special purpose processing elements (e.g., special purpose processors, ASICs, or the like). Portions of the modules 460 , 462 , 464 , and/or 466 may be implemented on the processor 412 using one or more computer-readable instructions stored on the computer-readable storage media 416 .
- modules 460 , 462 , 464 and 466 may be operable on the processor 412 and/or implemented (in whole or in part) using one or more special purpose processing elements (e.g., special purpose processors, ASICs, or the like). Portions of the modules 460 , 462 , 464 , and/or 466 may be implemented on the processor 412 using one or more computer-readable instructions stored on the computer-readable storage media 416 .
- a flow assignment module 460 may be configured to assign network flows to the devices in the cluster (e.g., using a method, such as method 500 described below). For example, when operating as a cluster master, the device 410 may receive inbound network traffic from the interface 420 . The traffic may be routed to the flow assignment module 450 , which may identify a flow associated therewith.
- the traffic processing module 462 may process network traffic according to a security policy and a local, flow assignment data structure 463 .
- the security policy enforced by the traffic processing module 462 may be defined in the cluster policy data structure 470 , and may specify, inter alia, how various types of network traffic and/or network flows are to be processed (e.g., allowed or not allowed, filtered, routed, and so on).
- a security policy may determine which types of network traffic may be passed from an external network (e.g., coupled to interface 420 ) to an internal, organization network (e.g., coupled to interface 422 ), and vice versa, may define network filtering tasks, define firewall rules, and so on.
- the network security policy defined in the cluster policy data structure 470 may define a role-based, user-based, or other type of network security policies.
- the cluster configuration 470 may reference and/or provide a link to a network authentication or authorization server (not shown), which may be used to provide user- and role-based security services.
- the traffic processing module 462 may be communicatively coupled to one or more external servers (not shown), from which security policy information may be obtained. Alternatively, or in addition, such security policy information may be cached within the cluster configuration 470 and/or updated by the device acting as the cluster master.
- the traffic processing module 462 may maintain a local, flow assignment data structure 463 identifying the network flows that have been assigned thereto.
- the identifying may comprise information to allow the traffic processing module 462 to associate network traffic with an assigned flow (e.g., based upon source address, destination address, protocol, port, security information, and so on).
- the data structure 463 may identify only the flows that have been assigned to the particular device 410 .
- the traffic processing module 462 may update the local, flow assignment data structure 463 .
- the data structure 463 may also be used to manage local, run-time synchronization data associated with the flows assigned to the device 410 .
- the cluster configuration data 470 may also include information identifying each of the devices within the cluster, identifying the static roles of each of the cluster devices (e.g., active, standby, etc.), indicate a current state of each of the cluster devices (e.g., active, standby, failed, etc.), provide cluster licensing information, and so on.
- the device 410 when the device 410 is operating as the cluster master, the device 410 may be configured to synchronize the cluster configuration data 470 to the other cluster devices. Therefore, the cluster master (device 410 ) may act as the “source” of cluster configuration data for the other cluster devices.
- the cluster master may be configured to synchronize the changes to the other cluster devices (e.g., cause the other cluster devices to update their respective cluster configuration data structures 470 ).
- the device 410 When operating as the cluster master, the device 410 may be responsible for managing the workload of the cluster. Accordingly, the cluster master (device 410 ) may be configured to assign processing tasks, such as handling network flows, to various active cluster members. The cluster master device 410 may maintain a flow assignment data structure 472 , which may provide a mapping between the network flows being handled by the cluster, and the cluster devices assigned thereto.
- the flow assignment module 460 may assign the flow to a cluster device. Assigning a flow to a cluster device may comprise selecting a cluster device according to a set of flow assignment rules and/or other criteria (e.g., device health, device availability, etc.) After selecting a cluster device to handle a particular flow, the flow assignment module 460 may update the flow assignment data structure 472 accordingly.
- the cluster master may also configure the selected cluster device to begin processing the flow (e.g., transmit a message via a cluster communication interface 456 to configure the selected device to begin processing the network flow).
- the flow assignment module 460 (or the device assigned to handle the flow) may configure the interface 420 to route traffic associated with the flow directly to the device assigned thereto.
- the cluster devices that are actively processing network flows may be configured to transmit flow, run-time synchronization data to the cluster master.
- the cluster master (device 410 ) may aggregate the flow, run-time synchronization data into data structure 474 comprising all of the flow, run-time synchronization of all the cluster devices.
- the flow, run-time synchronization data may include information needed to handle the corresponding network flow (e.g., session information, state information, security keys, sequence number, etc.).
- the flow, run-time synchronization data may be transmitted to the device 410 via the cluster communication interface(s) 456 or another interface 452 or 454 .
- the device 410 When acting as a cluster master, the device 410 may be configured to maintain the flow, run-time synchronization data to provide for flow failover between cluster devices.
- the flows assigned thereto may be transitioned to another replacement cluster device.
- the flow, run-time synchronization data corresponding to the transitioning flows may be transmitted to the replacement device, allowing the device to resume handling the flow with minimal disruption.
- the device 410 may manage shared cluster resources, such as address pools, port pools, and the like.
- the cluster master (device 410 ) may also provide shared services, such as a shared IKE module.
- the shared IKE module may provide callbacks to other cluster devices to negotiate security associations (P1SA, P2SA, and so on), shared keys, and the like.
- Information relating to the shared resources and/or shared services provided by the device 410 may be maintained in a shared resource data structure 476 .
- the cluster configuration data structure 470 , flow assignment data structure 472 , flow, run-time synchronization data structure 474 , shared resource data structure 476 , and any other data needed for cluster master failover, may be maintained in a global, run-time synchronization data structure 480 .
- the device 410 may synchronize the global, run-time synchronization data structure 480 with other cluster devices (e.g., the backup master device). Synchronizing the data structure 480 may provide for replacement of the cluster master by another cluster device (e.g., the backup master device (not shown)), in the event of a failover.
- the device 410 when the device 410 is operating as a backup master, the device 410 may be configured to receive the global, run-time synchronization data structure 480 (comprising cluster configuration 470 , the flow assignment data structure 472 , the flow, run-time synchronization data 474 , the shared resource data structure 476 , and any other relevant data) from the cluster master.
- the global, run-time synchronization data structure 480 comprising cluster configuration 470 , the flow assignment data structure 472 , the flow, run-time synchronization data 474 , the shared resource data structure 476 , and any other relevant data
- the cluster master (device 410 ) may be configured to synchronize the cluster configuration data structure 470 to the other cluster devices.
- the traffic processing module 462 may use the cluster configuration data structure 470 to process network flows in accordance with the security policy defined therein.
- cluster devices other than the cluster master and backup master may not actively use the flow assignment module 460 and/or may not maintain the flow assignment data structure 472 , flow, run-time synchronization data structure 474 , and/or shared resource data structure 480 , since these structures are not needed for flow processing.
- the modules ( 460 , 464 , and 466 ) and data structures ( 472 , 474 , and 476 ) may exist in skeleton form to provide for an efficient transition to a cluster master and/or backup master role within the cluster when needed.
- a monitoring and failover module 464 may be used to monitor cluster devices as described above in conjunction with FIGS. 3C and 3D .
- Each cluster device 464 whether operating in the cluster master, backup master, active, or standby role, may implement the monitoring and failover module 464 .
- the monitoring and failover module 464 may be configured to generate and transmit status messages from the device 410 , which, as discussed above, may comprise a health score of the device.
- the module 464 may also be configured to receive status messages from other cluster devices. Information relating to the health score of the device 410 , as well as status information relating to other cluster devices may be maintained in a monitoring and failover data structure 478 .
- the device 410 When operating as the cluster master, the device 410 may be configured to provide for device failover within the cluster. For example, when a device handling a particular set of flows fails, the processing tasks assigned thereto may be transitioned to other cluster devices.
- the monitoring and failover module 464 may be configured to determine when a failover operation is needed (according to failover criteria, and as discussed above in conjunction with FIG. 3C ). When a device for failover has been identified, the monitoring and failover module 464 , along with the flow assignment module 460 , may assign the tasks of the failed over device to one or more replacement devices (as described above in conjunction with FIG. 3D ).
- the flows may be transitioned to existing, active cluster devices and/or to standby cluster devices that have been activated responsive to the failure. When the new device(s) are selected, the flow, run-time synchronization data 474 associated therewith may be sent to the corresponding replacement devices, which may use the data to resume handling the flows.
- failover may additionally include selecting a new device to act as the backup master (e.g., based upon device health score, address, or the like) as described above.
- the cluster master may be configured to synchronize the global, run-time synchronization data structure 480 to the new backup master device.
- a new cluster master may be selected as described above (e.g., as the backup master, based upon health score, or the like).
- the global, run-time synchronization data structure 480 may be populated from the backup master and/or failed over cluster master (if available).
- the device 410 may comprise a cluster management module 466 , which may be used to synchronize the cluster configuration data structure 470 to other cluster devices (not shown), join new devices to the cluster (as described above in conjunction with FIG. 2B ), determine and maintain the licensed capabilities of the cluster, and so on.
- a cluster management module 466 may be used to synchronize the cluster configuration data structure 470 to other cluster devices (not shown), join new devices to the cluster (as described above in conjunction with FIG. 2B ), determine and maintain the licensed capabilities of the cluster, and so on.
- Discovery may comprise a cluster device (e.g., the cluster master device 410 ) transmitting one or more discovery messages (e.g., broadcast, multicast, or other message types) on one or more of its communications interfaces 450 .
- the discovery messages may be sent automatically (e.g., periodically, until a device is discovered).
- the periodic status messages transmitted by the monitoring and failover module 464 may be configured to also serve as discovery messages.
- the discovery messages may only be transmitted upon receiving a discovery command (or other command).
- the configuration command may be received via one or more of the communications interfaces 450 and/or a configuration interface 467 (discussed below).
- the device 410 may discover a new computing device passively (e.g., by monitoring traffic on the interface 420 , 422 , and/or 424 , by inspecting routing and/or ARP information, or the like).
- the cluster manager module 466 of the cluster master device 410 may be configured to initiate a cluster join procedure to add the new device to the cluster as described above in conjunction with FIGS. 2A and 2B .
- the cluster management module 466 may be configured to access device-identifying information of the new computing device (e.g., by interrogation, passive monitoring, or other means). Using the device-identifying information, the cluster management module 466 may determine whether the discovered computing device is eligible to join the cluster (e.g., based upon hardware, software, firmware, licensing, or other information about the device).
- the cluster management module 466 may determine a device-specific configuration for the new device, and transmit the device-specific configuration thereto.
- the device-specific configuration may include the cluster configuration data 470 , including identifiers of the cluster devices, cluster addressing information, and the like.
- the device-specific configuration may also include a role assignment specifying the static role of the new computing device in the cluster, provide device-specific addressing and port assignment information, provide one or more device-specific shared keys for secure cluster communications, and so on.
- the cluster management module 466 may verify that the new computing device implemented the device-specific configuration (e.g., by a confirmation message, active interrogation, network inspection, or the like). If the new computing device fails to implement the device-specific and/or cluster configuration, the new computing device may be excluded from the cluster.
- the device may be joined to the cluster (e.g., added to the cluster configuration data 470 , which is synchronized with other cluster devices).
- Joining may comprise providing the new computing device with a shared key (or performing a key exchange protocol) to allow the device to securely communicate with other cluster devices.
- the new computing device may then begin performing its assigned role (e.g., be assigned cluster processing tasks, receive cluster synchronization data, and the like).
- the cluster management module 466 of a device 410 operating as the cluster master may also be configured to determine the licensed capabilities of the cluster.
- Information defining the licensed capabilities of the cluster may be included in the cluster configuration data structure 470 , which is synchronized to, and implemented by, the other cluster devices.
- the licensed capabilities of the cluster may be defined in a single cluster license.
- the licensed capabilities of the cluster may be determined by combining the licenses of two or more cluster devices. As discussed above, the combination may be made in a number of different ways, including, but not limited to: a “least capabilities” combination, an additive combination, a logical OR combination, a selective combination (e.g., different combination types of for different licensed features), or the like.
- the cluster management module 466 may use the licensing information to assign static roles to cluster members (as devices are joined to the cluster, as the cluster configuration changes, and so on). For example, devices that do not have their own license may be assigned a static role of “secondary” or standby. Devices that are appropriately licensed may be eligible to be assigned a static role of “primary” or active.
- the licensed capabilities of the cluster (defined in a single cluster license, or by combining two or more cluster device licenses) may determine cluster configuration. For instance, if the licensed capabilities of the cluster provide for five active devices, new computing devices may be added to the active role (up to five) regardless of their individual licenses. However, once five active devices are in the cluster, additional devices may be assigned to standby, even if the devices have individual cluster licenses.
- the cluster management module 466 may provide a configuration interface 467 , which may comprise a network accessible user interface, an Application Programming Interface (API), an SNMP client, a telnet server, a serial communications interface, a parallel port interface, or the like. Accordingly, in some embodiments, the configuration interface 467 may comprise and/or utilize one or more of the communications interfaces 450 (e.g., the communication interfaces 454 communicatively coupled to an internal, or organization network). Alternatively, or in addition, the configuration interface 467 may comprise one or more human-machine-interaction (HMI) components (not shown), such as a display, keyboard, mouse, or other input/output devices.
- HMI human-machine-interaction
- the configuration interface 467 may allow a human operator, policy manager, or other configurator to interrogate and/or change the configuration of the cluster.
- the configuration interface 467 may be capable of displaying and/or modifying the configuration of the cluster as a whole. Accordingly, the configuration interface 467 may be capable of displaying the configuration of all of the computing devices in the cluster, including the health score and other performance indicators thereof, may be capable of setting configuration parameters of all of the computing devices in the cluster, and so on.
- the configuration interface 467 may implement a “single-device” paradigm, in which the cluster is viewed and managed as a single device. Accordingly, configuration changes made to one cluster device (the cluster master device 410 ), may be transparently synchronized to other cluster devices (by the cluster management module 466 ). However, per-device configuration changes may be accessible by interrogating individual cluster devices (e.g., to apply device-specific licensing parameters, view device-specific information, such as health score and the like, and so on).
- the cluster management module 466 (along with the configuration interface 467 ) may provide for efficient cluster updating and maintenance. For example, a command to upgrade or modify the cluster configuration may be received via the configuration interface 467 . The upgrade or modification may require that the devices in the cluster be taken down (e.g., may include a change to device software, firmware, and/or hardware). Responsive to such a request, the cluster management module 466 may implement a cluster upgrade operation in which cluster devices are taken down in an orderly fashion such that the services provided by the cluster are not significantly impacted.
- the cluster management module 466 may be configured to upgrade or modify cluster standby devices first. If the cluster includes two or more standby devices, the upgrade or modification of may be done such that one or more of the standby devices is available during the upgrade. For example, if there are three standby devices A, B, and C, the cluster management module 466 may configure device A to be upgraded first, while keeping the B and C devices up and then, after the A device is running again, upgrade device B while devices A and C are kept up, and so on.
- the cluster management module 466 may then perform a similar upgrade process on the active cluster devices; the cluster management module 466 may be configured to upgrade the active cluster devices sequentially, taking down only one (or some other subset) of the active devices at a time. As each active device is upgraded or modified, it may be failed over to another active device and/or to a standby device if available.
- the cluster management module 466 may then be configured to perform the modification to the cluster backup master device.
- the backup master may be failed over to another cluster device before being modified (in a failover operation as described above).
- a replacement backup master may continue operating as the backup master even after the former backup master has been modified.
- the selection of the backup master may be made according to a selection criteria as discussed above (e.g., based upon health score, resources, hardware capabilities, or the like).
- the cluster management module 466 may be configured to modify the cluster master device itself. Modifying the cluster master device may comprise failing over the cluster master to another cluster device (e.g., the replacement backup master or another cluster device). After completing the cluster master failover operation (e.g., and selecting a new cluster master), the device 410 may be upgraded and rejoined to the cluster. The device 410 may resume acting as the cluster master (e.g., by failing over the temporary cluster master selected above) and/or may resume operation in another role within the cluster (e.g., as a backup master, active, or standby cluster device).
- FIG. 5 is a flow diagram of one embodiment of a method for assigning processing tasks, such as network flow processing, in a cluster, such as the cluster 110 of FIG. 1 .
- the method 500 may be implemented on a computing device, such as the device 410 of FIG. 4 .
- the method 500 may be implemented using one or more computer-readable and/or computer-executable instructions.
- the instructions comprising the method 500 may be implemented as one or more distinct software modules, which may be stored on a computer-readable storage medium, such as a hard disc, optical storage media, memory, or the like.
- one or more steps of the method 500 may be tied to particular machine components, such as computer-readable storage media, communications interfaces, processing modules, or the like.
- the method 500 may start and/or be initialized. Initializing the method 500 may comprise loading one or more computer-readable instructions from one or more computer-readable storage media, accessing and/or initializing one or more communications interfaces, and the like.
- network traffic may be received.
- the network traffic may have been received via a network interface (e.g., interface 120 and/or 122 of FIG. 1 ), such as a hub, switch, router, concentrator or the like.
- a network interface e.g., interface 120 and/or 122 of FIG. 1
- the traffic may be received by all of the devices in the cluster.
- the traffic may be received only by the cluster master device (or the device configured to handle the flow).
- the cluster master may determine whether the network traffic is associated with a known flow (e.g., a flow that is being handled by one of the devices in the cluster).
- Step 530 may comprise looking up the flow in a flow assignment data structure, such as a table, index, or the like.
- the flow assignment data structure may provide a mapping between network flows and the cluster devices assigned thereto.
- a flow may be identified based upon a source address thereof (IP address, MAC address, or the like), flow protocol, flow port, flow security information, or the like.
- the cluster device assigned to the flow may be identified according to a cluster-specific identifier, MAC address, cluster address (e.g., address of a cluster interface port of the device), IP address, or the like.
- the flow assignment data structure may further comprise flow, run-time synchronization data pertaining to the flow, which may include, but is not limited to: flow security association data (P1SA, P2SA), shared key data, user-session data, flow cache, and the like.
- flow security association data P1SA, P2SA
- shared key data shared key data
- user-session data shared key data
- flow cache shared key cache
- the flow assignment data structure may include a reference (link, pointer, or the like) to the flow, run-time synchronization data associated therewith.
- the method 500 may continue at step 540 ; otherwise, if a device is already actively handling the flow, the method 500 may continue at step 535 .
- the traffic may be ignored by the method 500 . Accordingly, the method 500 may terminate at step 560 and/or may continue at step 520 when additional network traffic is received.
- the method 500 may select a cluster device to handle the flow. Selecting a cluster device may comprise identifying which devices in the cluster are eligible to handle the flow (e.g., are active, based upon flow assignment rules discussed below, and so on), evaluating a load and/or health of the devices in the cluster, and the like.
- the cluster master and/or master backup devices may be available to handle network traffic flows. Alternatively, the cluster master and/or backup master may be dedicated to managing the state of the cluster and not processing network traffic flows. Eligibility of a cluster device to handle a particular flow may be based upon one or more flow assignment rules (discussed below).
- the flow assignment rules may determine eligibility based upon whether another cluster device has already been assigned a network flow that is related to the new network flow, shares security information with the new network flow, or the like. If two or more cluster devices are eligible to handle the new network flow, the selection of step 540 may comprise evaluating a selection criteria to select one of the two or more devices. The selection criteria may be based upon device health score, processing load, random (e.g., round robin), or some other metric.
- the flow assignment data structure may be updated to reflect the assignment.
- the cluster interface may be configured to forward the flow traffic directly to the device assigned to handle the flow (e.g., using a direct forward request or other configuration message).
- the flow may terminate and/or may continue at step 520 when additional network traffic is received.
- assigning a flow to a device may comprise determining whether which devices are eligible to handle the flow and/or evaluating one or more flow assignment rules.
- a device may be eligible to handle a flow if the health score of the device indicates that handling the flow would not cause the device to become unstable, perform poorly, adversely affect quality of service (QoS) for other flows handled thereon, or the like.
- QoS quality of service
- a flow assignment rule may determine which devices are eligible to handle a particular flow based upon other flow assignments. For example, a flow assignment rule may specify that all flows that use the same tunnel go through the same cluster device. Consolidating flows in this manner may provide for protection against anti-replay attacks and facilitate dead peer detection (DPD).
- DPD dead peer detection
- FIG. 6A is a block diagram illustrating one example of related flow assignment in which related forward and reverse flows are assigned to the same cluster device.
- forward and reverse flows 681 and 682 are established between a computing device 633 within an organization 630 and a computing device 646 in the network 640 .
- the cluster master device (device 612 ) may implement a flow assignment rule that assigns related forward and reverse flows to the same cluster device. Accordingly, in the FIG. 6A example, both of the flows 681 and 682 may be assigned to device 2 614 . Alternatively, the flows 681 and 682 could be assigned to another device 612 , 614 , or 616 .
- the flow assignment rule may prevent the flows 681 and 682 from being assigned to different devices (e.g., flow 681 being assigned to device 614 and flow 682 being assigned to device 616 , and so on).
- FIG. 6B is a block diagram depicting another example of related flow assignment in which related flows are assigned to the same cluster device.
- the related flows 681 , 682 , 683 , and 684 depicted in FIG. 6B may be related to one another (e.g., may be the data and control channels of a file transfer protocol (FTP) connection, may be related to the same voice over IP connection (VOIP), or the like).
- a flow assignment rule may specify that all of the related flows are to be assigned to the same cluster device.
- related flows 681 , 682 , 683 , and 684 may be established between a computing device 633 in the organization network 630 and an external computing device 646 .
- all of the flows 681 , 682 , 683 , and 684 may all be assigned to the same device (device 2 614 ). Alternatively, the flows 681 , 682 , 683 , and 684 may all be assigned to another device ( 612 , 616 , or 618 ).
- the flow assignment rule may prevent the flows 681 , 682 , 683 , and/or 684 from being split up between different devices in the cluster (e.g., prevent flows 681 and 682 from being assigned to device 2 614 and flows 683 and 684 being assigned to device 3 616 , and so on).
- FIG. 6C is a block diagram depicting an example of security flow assignment, in which flows associated with the same tunnel are assigned to the same cluster device.
- a tunnel 680 e.g., an SSH tunnel, or the like
- the tunnel 680 may comprise one or more flows 681 , 682 , 683 , and 684 .
- the flow assignment rule may specify that all of the flows 681 , 682 , 683 , and 684 of the tunnel 680 are assigned to the same cluster device (device 2 614 ). Accordingly, the flow assignment rule may prevent the tunnel 680 flows 681 , 682 , 683 , and 684 from being split up between the devices 612 , 614 , 616 , and/or 618 .
- FIG. 6D is a block diagram illustrating another example of security flow assignment in which flows associated with the same inbound or outbound security association are assigned to the same cluster device, whereas the inbound and/or outbound tunnel flows may be assigned to different cluster devices.
- flows 681 and 682 use the same outbound SA 680 and flows 687 and 688 use the same inbound security association.
- the flow assignment rule may specify that the flows 681 and 682 are assigned to the same device (device 2 614 ), and the flows 687 and 688 are assigned to the same device (device 3 616 ).
- the flow assignment rule illustrated in FIG. 6D may prevent the flows 681 and 682 from being assigned to different cluster devices and/or prevent the flows 687 and 688 from being assigned to different cluster devices.
- a flow assignment rule may specify that all of the inbound and outbound flows associated with a particular security association be assigned to the same device.
- FIG. 6E shows an example of this type of flow assignment. As shown in FIG. 6E , the flows 681 , 682 , 687 and 688 are all assigned to the same device (device 3 616 ). The flow assignment illustrated in FIG. 6E may prevent the flows 681 , 682 , 687 and/or 688 from being split up across different cluster devices.
- a cluster according to the teachings of this disclosure may be configured to provide tunnel switching (e.g., provide for communication between two or more remote peers).
- the cluster master device may implement a flow assignment rule configured to specify that the flows associated with the tunnel switch connection be handled by the same cluster device.
- a restriction rule of this type may reduce cluster communication traffic (e.g., prevent tunnel switch data from being transferred between cluster devices).
- FIG. 6F is a block diagram that illustrates another example of a related flow assignment in which the flows associated with the same tunnel switch are assigned to the same device.
- remote peer devices 646 and 647 establish a tunnel switch with the cluster 610 .
- the flows 681 and 682 may be associated with the remote peer 646 , and the flows 687 and 688 may be associated with the remote peer 647 .
- the flows 681 , 682 , 683 , and 684 may be used to implement a tunnel switch between the remove peers 646 and 647 (e.g., provide for peer-to-peer communication therebetween).
- the cluster master device 612 may identify the flows 681 , 682 , 687 , and 688 as forming a tunnel switch (e.g., based upon addressing, protocol, and other information associated therewith) and may implement a flow assignment rule configured to assign the flows 681 , 682 , 687 , and 688 to the same cluster device (e.g., device 2 614 ).
- all of the flows comprising the tunnel switch may be assigned to device 2 614 .
- the flow assignment rule may prevent the flows from being spread to other devices (e.g., prevent flows 681 and 682 from being handled by a first device (device 2 614 ), while flows 687 and 688 are handled by a second device (device 3 616 )).
- a single cluster device may be configured to establish an IPSec tunnel using an IPSec module, which may be implemented as a kernel module of the device (e.g., in a kernel module of the traffic processing module 462 of FIG. 4 ).
- the IPSec module may be communicatively coupled to an IKE module, which may be used to perform key exchange operations used to setup an IPSec session and/or tunnel.
- the IKE module may be implemented as a user space process (e.g., a user space process of the traffic processing module 462 ).
- the IKE module may be configured to create Phase II Security Associations (P2SA) for use by the IPSec kernel module.
- P2SA Phase II Security Associations
- the IPSec module while handling traffic on the IPSec tunnel managed thereby, may periodically request key updates from the IKE module (for a rekey operation), for dead peer detection, as well as termination of a IPSec session or tunnel.
- FIG. 7 is a block diagram of one example of a cluster 710 comprising a single IKE.
- the cluster 710 includes a single IKE 749 to which each of the IPSec modules 747 A, 747 B, 747 C, and 747 D of the cluster devices 712 , 714 , 716 , and 718 are linked (e.g., via respective cluster interface ports (not shown) communicatively coupled to a network device, such as a router, switch, concentrator, or the like).
- a network device such as a router, switch, concentrator, or the like.
- Only the IKE 749 of the cluster master (device 712 ) may be active.
- the other devices 714 , 716 , and/or 718 may include an IKE module (not shown), which may be activated in the event the device is elected to operate as the cluster master.
- the IKE 749 of the cluster master 712 may perform IKE key exchanges with peer computing devices (not shown).
- the IKE 749 may perform all IKE operations for the other cluster devices 714 , 716 , and 718 including, but not limited to: P1SA negotiations, P2SA negotiations, rekey operations, dead peer detection, and the like.
- the IKE 749 may generate P2SAs as needed by the cluster devices 714 , 716 , and/or 718 (e.g., in order to establish an IPSec tunnel between the deice 714 , 716 , and/or 718 and an external peer).
- the cluster master 712 may transmit the PS2A thereto.
- the cluster device may then handle the IPSec flow accordingly (e.g., using the P2SA generated by the IKE 749 ).
- the cluster master 712 may implement a flow assignment rule, in which all flows that use a particular P2SA are assigned to a particular cluster device.
- the cluster master may be configured to assign the new flow to the cluster device 714 (the device that holds the particular P2SA).
- the PS2A and other IPSec information relevant to the reassigned flows may be transferred from the cluster master device 712 to the second device (device 716 ).
- subsequent flows that use the transferred P2SA may be assigned to the second device.
- each of the IPSec modules 748 B, 748 C, and 748 D may be communicatively coupled to the IKE 749 .
- the IPSec modules 748 B, 748 C, and 748 D may perform callbacks to the IKE 749 in order to maintain P2SA sequence number information, perform rekey operations, perform DPD (e.g., DPD hello operations), and the like.
- the communication link between the IPSec modules 748 B, 748 C, and 748 D may be implemented using respective cluster interface ports of the devices 714 , 716 , and 718 , which may provide for fast and efficient communications.
- the cluster master 712 may be capable of performing more granular load balancing (all of the devices in the cluster 710 use the same IKE 749 and, as such, the devices 712 , 714 , 716 , and 718 may “appear” to external peers as a single device for the purposes of IPSec).
- IPSec tunnels such as VPN tunnels or the like
- IPSec security protocols such as DPD, rekey, and the like may be implemented across all of the devices in the cluster 710 .
- FIG. 8 is a block diagram depicting a distributed IKE approach.
- each of the devices 812 , 814 , 816 , and 818 in the cluster 810 may implement its own IKE module 851 A, 851 B, 851 C, and 851 D.
- Each IPSec modules 847 A- 847 D communicates with its respective IKE 851 A- 851 D. Accordingly, IKE information need not be transmitted between cluster devices. As shown in FIG.
- the IPSec modules 847 A- 847 D are not communicatively coupled to one another; however, the devices themselves ( 812 , 814 , 816 , and 818 ) may be communicatively coupled for other reasons (e.g., the synchronize cluster configuration data, flow, run-time synchronization, global run-time synchronization data, and the like).
- each cluster device 812 , 814 , 816 , and 818 implements its own IKE 851 A- 851 D, the devices may not appear to external peers as a “single device” as in the FIG. 7 example. Therefore, the cluster master 812 may implement a flow assignment rule specifying that all IPSec flows of a particular peer be assigned to the same cluster device 812 , 814 , 816 , and/or 818 .
- FIG. 9A is a block diagram 900 depicting an example of flow assignment in a cluster comprising a shared IKE module (e.g., the cluster 710 of FIG. 7 ).
- a remote peer 933 establishes IPSec flows 981 , 982 , 983 , and 984 with the cluster 910 . Since the IPSec modules 947 A- 947 D of the cluster devices 912 , 914 , 916 , and 918 use a common IKE 749 (of the cluster master device 912 ), the cluster 910 may appear to be a single device to the remote peer 933 for the purposes of IPSec (e.g., sequence number, rekey, DPD, etc.).
- IPSec e.g., sequence number, rekey, DPD, etc.
- the cluster master device 912 may assign flows of the peer 933 to different cluster devices.
- the flows 981 and 982 (which may share a common P2SA) may be handled by the cluster device 914
- the flows 983 and 984 (which may share a different, common P2SA) may be handled by the cluster device 916 .
- FIG. 9B is a block diagram 901 depicting an example of flow assignment in a cluster comprising distributed IKE modules (e.g., the cluster 810 of FIG. 8 ).
- a remote peer 933 establishes IPSec flows 981 , 982 , 983 , and 984 with the cluster 911 .
- the cluster 911 is configured to implement distributed IKEs and, as such, each of the cluster devices 912 , 914 , 916 , and 918 implements its own IKE 951 A- 951 D. Accordingly, the cluster devices may not appear as a single device to the peer 933 for the purposes of IPSec.
- the cluster master 912 may implement a flow assignment restriction rule specifying that all IPSec flows from the peer be handled by the same cluster device. As shown in FIG. 9B , all of the IPSec flows 981 , 982 , 983 , and 984 are handled by the cluster device 914 . According to the flow assignment restriction, the IPSec flows of the peer 933 may not be spread across the cluster devices (e.g., if the device 914 is handling flows 981 and 982 , the device 916 may not handle flows 983 and/or 984 ).
- a cluster according to the teachings of this disclosure may be configured to provide multiple wide area network VPN configurations.
- Each WAN may have a respective local and remote gateway pairings that may be failed over to one another.
- the local/remote gateway pairs may be defined in an IKE policy (which may be part of a cluster configuration, security policy, or the like).
- a flow assignment rule may be implemented to assign all flows associated with a particular IKE policy to the same cluster device (e.g., each cluster device may be responsible for a different, respective IKE group policy).
- the cluster master (or other device) may implement a plurality of shared IKE modules, one IKE per IKE group policy. Referring to FIG. 7 , the cluster master device 712 may implement multiple IKE modules 749 ; one for each IKE group policy.
- the IPSec modules 747 A- 747 D of the cluster devices 712 , 714 , 716 , and 718 may be configured to synchronize IKE data with each of the respective IKE modules, on a per-flow basis (e.g., may select the IKE associated with the IKE group policy of a particular flow).
- FIG. 10 is a flow diagram of another embodiment of a method for assigning flows to cluster devices.
- the method 1000 may be implemented on a computing device, such as the device 410 of FIG. 4 .
- the method 1000 may be implemented using one or more computer-readable and/or computer-executable instructions.
- the instructions comprising the method 1000 may be implemented as one or more distinct software modules, which may be stored on a computer-readable storage medium, such as a hard disc, optical storage media, memory, or the like.
- one or more steps of the method 1000 may be tied to particular machine components, such as computer-readable storage media, communications interfaces, processing modules, or the like.
- the method 1000 may start and/or be initialized. Initializing the method 1000 may comprise loading one or more computer-readable instructions from one or more computer-readable storage media, accessing and/or initializing one or more communications interfaces, and the like.
- network traffic may be received.
- the network traffic may have been received via a network interface (e.g., interface 120 and/or 122 of FIG. 1 ), such as a hub, switch, router, concentrator, or the like.
- a network interface e.g., interface 120 and/or 122 of FIG. 1
- the inbound traffic may be received by all of the devices in the cluster.
- the traffic may be received only by the cluster master device (or the device currently assigned to handle the flow).
- the cluster master may determine whether the network traffic is associated with a known flow (e.g., a flow that is being handled by one of the devices in the cluster).
- Step 1030 may comprise looking up the flow in a flow assignment data structure, such as a table, index, or the like.
- the flow assignment data structure may provide a mapping between network flows and the cluster devices assigned thereto.
- a flow may be identified based upon a source address thereof (IP address, MAC address, or the like), flow protocol, flow port, flow security information, or the like.
- the cluster device assigned to the flow may be identified according to a cluster-specific identifier, MAC address, cluster address (e.g., address of a cluster interface port of the device), IP address, or the like.
- the flow assignment data structure may further comprise flow, run-time synchronization data pertaining to the flow, which may include, but is not limited to: flow security association data (P1SA, P2SA), shared key data, user-session data, flow cache, and the like.
- flow security association data P1SA, P2SA
- shared key data shared key data
- user-session data shared key data
- flow cache shared key data
- the flow assignment data structure may include a reference (link, pointer, or the like) to the flow, run-time synchronization data associated therewith.
- the method 1000 may continue at step 1040 ; otherwise, if a device is already actively handling the flow, the method 1000 may continue at step 1035 .
- the method 1000 may terminate at step 1070 and/or may continue at step 1020 when additional network traffic is received.
- one or more device(s) that are available to handle the flow may be identified.
- the devices may be identified according to a set of one or more flow assignment rules.
- the flow assignment rules applied at step 1043 may include, but are not limited to: related flow assignment rules, and security flow assignment rules.
- Related flow assignment rules may specify that flows that are related to one another be assigned to the same cluster device.
- the assignment of related flows to the same device may provide for more efficient flow processing, provide for better firewall management (e.g., pin-hole logic for inbound flow processing), and so on.
- a related flow assignment rule may specify that all the flows associated with a tunnel switch connection (discussed above) be assigned to the same device. The assignment may prevent tunnel switch traffic from being transmitted between cluster devices, which may improve the performance of the tunnel switch (and the cluster generally).
- related flow assignment rules include, but are not limited to: rules to assign forward and reverse flows to the same cluster device (which may provide for improved TCP reset protection), rules to assign related flows to the same device (e.g., flows associated with the same FTP, VOIP, or similar connection), and the like.
- rules to assign forward and reverse flows to the same cluster device which may provide for improved TCP reset protection
- rules to assign related flows to the same device e.g., flows associated with the same FTP, VOIP, or similar connection
- the data and control flows of the same FTP connection may be assigned to the same device, which may provide for more efficient and secure network traffic and flow processing (e.g., protocol inspection logic that opens the data channel pin-hole may be more efficient and secure when implemented on the device that is also processing the FTP connection control channel flows).
- Security flow assignment rules may perform flow assignment based upon flow security properties. For example, a security flow assignment rule may cause flows that use the same secure tunnel (e.g., SSH or the like) to be assigned to the same cluster device. As discussed above, the assignment may allow for PS2A sequence number synchronism between flows to prevent replay attacks and/or to provide for DPD. In another example, a security flow assignment rule may specify that flows using a common security association (inbound and/or outbound security association) be assigned to the same device. In embodiments implementing a single IKE, security flow assignment rules may allow for load balancing on a per-tunnel basis (e.g., allow flows from the same peer, but using different secure tunnels, to be handled by different cluster devices). In other embodiments, in which each device implements its own IKE, a security flow assignment rule may specify that all secure flows associated with a particular peer be assigned to the same cluster device.
- a security flow assignment rule may specify that all secure flows associated with a particular peer be assigned to the same cluster
- the method 1000 may continue to step 1047 .
- step 1047 if (according to the flow assignment rules applied at step 1043 ) only a single device is available to handle the new flow, the method 1000 may continue at step 1060 ; otherwise, the method 1000 may continue at step 1050 .
- one of the two or more available cluster devices identified at step 1043 may be selected to handle the flow. As discussed above, the selection may be based upon a selection criteria, such as device health score, processing load, random selection, round robin, or the like. After selection of the device to handle the new flow, the method 1000 may continue at step 1060 .
- the new flow may be assigned to the identified cluster device.
- Assigning the flow may include, but is not limited to: configuring the identified cluster device to handle network traffic associated with the flow (e.g., via a configuration message transmitted thereto via a cluster communications port or the like), updating a flow assignment data structure to reflect the flow assignment, configuring a network element to direct-forward network traffic related to the flow to the identified device, and the like.
- the method 1000 may end until additional inbound network traffic is received.
- Embodiments may include various steps, which may be embodied in machine-executable instructions to be executed by a general-purpose or special-purpose computer (or other electronic device). Alternatively, the steps may be performed by hardware components that include specific logic for performing the steps, or by a combination of hardware, software, and/or firmware.
- Embodiments may also be provided as a computer program product including a computer-readable medium having stored instructions thereon that may be used to program a computer (or other electronic device) to perform processes described herein.
- the computer-readable medium may include, but is not limited to: hard drives, floppy diskettes, optical disks, CD-ROMs, DVD-ROMs, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, solid-state memory devices, or other types of media/machine-readable medium suitable for storing electronic instructions.
- a software module or component may include any type of computer instruction or computer executable code located within a memory device and/or computer-readable storage medium.
- a software module may, for instance, comprise one or more physical or logical blocks of computer instructions, which may be organized as a routine, program, object, component, data structure, etc., that perform one or more tasks or implements particular abstract data types.
- a particular software module may comprise disparate instructions stored in different locations of a memory device, which together implement the described functionality of the module.
- a module may comprise a single instruction or many instructions, and may be distributed over several different code segments, among different programs, and across several memory devices.
- Some embodiments may be practiced in a distributed computing environment where tasks are performed by a remote processing device linked through a communications network.
- software modules may be located in local and/or remote memory storage devices.
- data being tied or rendered together in a database record may be resident in the same memory device, or across several memory devices, and may be linked together in fields of a record in a database across a network.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Environmental & Geological Engineering (AREA)
- Hardware Redundancy (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
A computing device may be joined to a cluster by discovering the device, determining whether the device is eligible to join the cluster, configuring the device, and assigning the device a cluster role. A device may be assigned to act as a cluster master, backup master, active device, standby device, or another role. The cluster master may be configured to assign tasks, such as network flow processing to the cluster devices. The cluster master and backup master may maintain global, run-time synchronization data pertaining to each of the network flows, shared resources, cluster configuration, and the like. The devices within the cluster may monitor one another. Monitoring may include transmitting status messages comprising indicators of device health to the other devices in the cluster. In the event a device satisfies failover conditions, a failover operation to replace the device with another standby device, may be performed.
Description
- This application claims priority to U.S. Provisional Application No. 61/139,078, filed Dec. 19, 2008, and entitled, “Clustered Architecture for Network Security Devices,” which is hereby incorporated by reference in its entirety.
- This disclosure relates to network services and, in particular, to formation of a cluster comprising two or more computing devices configured to provide network services.
- Additional aspects and advantages will be apparent from the following detailed description of preferred embodiments, which proceeds with reference to the accompanying drawings.
-
FIG. 1 is a block diagram of one embodiment of a cluster; -
FIG. 2A is a state diagram depicting a method for adding a device to a cluster; -
FIG. 2B is a flow diagram of one embodiment of a method for adding a device to a cluster; -
FIG. 3A depicts the relationships and/or transitions between cluster device operational modes; -
FIG. 3B depicts data flow between cluster devices; -
FIG. 3C is a flow diagram of one embodiment of a method for monitoring cluster devices; -
FIG. 3D is a flow diagram of one embodiment of a method for performing a cluster failover operation; -
FIG. 4 is a block diagram of one embodiment of a cluster device; -
FIG. 5 is a flow diagram depicting one embodiment of a method for assigning a flow to a cluster device; -
FIG. 6A is a block diagram depicting one example of related flow assignment, in which related forward and reverse flows are assigned to the same cluster device; -
FIG. 6B is a block diagram depicting another example of related flow assignment, in which related flows are assigned to the same cluster device; -
FIG. 6C is a block diagram depicting an example of security flow assignment, in which flows associated with the same tunnel are assigned to the same cluster device; -
FIG. 6D is a block diagram depicting another example of security flow assignment, in which flows associated with the same inbound or outbound security association are assigned to the same cluster device, whereas the inbound and/or outbound tunnel flows may be assigned to different cluster devices; -
FIG. 6E is a block diagram depicting another example of security flow assignment, in which flows related to the same security association (inbound and outbound) are assigned to the same device; -
FIG. 6F is a block diagram depicting another example of related flow assignment, in which the flows related to a tunnel switch are assigned to the same device; -
FIG. 7 is a block diagram illustrating one embodiment of a cluster comprising a shared Internet Key Exchange module; -
FIG. 8 is a block diagram illustrating one embodiment of a cluster comprising distributed Internet Key Exchange modules; -
FIG. 9A is a block diagram depicting an example of flow assignment in a cluster comprising a shared Internet Key Exchange module; -
FIG. 9B is a block diagram depicting an example of flow assignment in a cluster comprising distributed Internet Key Exchange modules; -
FIG. 10 is a flow diagram of another embodiment of a method for assigning network flows to cluster devices. - As used herein, a clustered computing system or “cluster” may refer to two or more computing devices configured to cooperatively perform a task. In some embodiments, a cluster may be formed of a plurality of computing devices of the same type (e.g., a homogeneous cluster). Alternatively, a cluster may comprise computing devices of different types and/or configurations (e.g., a heterogeneous cluster).
- A cluster may be configured to provide network communications and security services including, but not limited to: providing firewall services, acting as a forward and/or reverse proxy, virtual private networking (VPN), packet filtering, anti-virus services, Internet Provider Security (IPS), tunneling, Spam blocking, Web blocking, and the like.
- A cluster may be configured to operate in a “load balancing” or “high throughput” mode. As used herein, “load sharing” or “high throughput” may refer to an operational mode of a cluster in which one or more of the computing devices in the cluster are configured to work together to implement one or more tasks or services. For example, a highly complex computational task may be split up into a plurality of different parts, each of which may be performed by a different computing device in the cluster. Alternatively, or in addition, a set of tasks may be distributed to a plurality of different computing devices in the cluster (e.g., each of a plurality of different VPN connections may be serviced by different members of the cluster). Since the load represented by the task(s) or service(s) may be shared among the computing devices in the cluster, the cluster may be capable of performing certain task(s) and/or providing certain service(s) more efficiently than a single computing device.
- One or more of the computing devices in a cluster may be configured to operate in “high availability mode.” In high availability mode, one or more of the computing devices in the cluster may be in “active” or “primary” mode, while other computing devices in the cluster are in “standby” or “secondary” mode. The devices in active mode may be configured to perform the task(s) and/or provide the service(s) implemented by the cluster. The devices may have a “static” and “working” role. The static role may be the role of the device as defined in the device-specific cluster configuration thereof, defined by a license (or lack thereof) of the device, defined by a cluster configuration, or the like. The working role may be the current operating state or role of the device as necessitated by the operating conditions of the cluster. A device may have a static role of “active” or “primary,” meaning that the device has its own license and may actively process and pass network traffic. A member having a static role of “standby” or “secondary” may not have a license and may not actively process and/or pass network traffic, but operate as a backup to the other cluster device (e.g., when an active device fails over, a standby device may be activated to take its place).
- The working role of the cluster devices may include devices that are “active,” and “standby.” Active devices include the primary devices (that are currently running), and any secondary devices that have been activated to process and/or pass network traffic in place of failed over primary members. Accordingly, a cluster device operating in standby mode may not perform the task(s) and/or provide the service(s) implemented by the cluster. A cluster device operating in standby mode may become “activated” responsive to a failure of one or more of the active computing devices. When activated, the device may implement the task(s) and/or service(s) that were formerly provided by the failed over device, which may prevent an interruption of cluster services (e.g., allow the cluster to provide “high availability” services).
- In some embodiments, one of the computing devices in a cluster may operate as a “cluster master.” The cluster master may manage the configuration of the cluster, assign processing tasks to the cluster members (e.g., assign network flows to cluster devices), maintain cluster state information (e.g., flow assignment table, security information, etc.), manage shared resources (e.g., outbound traffic addresses, Destination Network Address Translation (DNAT) tables, etc.), synchronize global, run-time synchronization data with a backup master, manage device failover, and the like.
- Another one of the computing devices in the cluster may operate as a “backup master,” which may be configured to backup the data used by the cluster master. Accordingly, when the cluster master fails over (due to a device failure, upgrade, maintenance, or the like), the backup master may replace the cluster master with minimal service disruption (e.g., may transition into the role of cluster master). When the backup master is promoted to cluster master, another one of the cluster members may be selected as a new backup master. The cluster master may be configured to synchronize global, run-time synchronization data with the backup master. The global, run-time synchronization data may include the data needed by the backup master to begin operating as the cluster master (e.g., cluster configuration, cluster state, and the like).
-
FIG. 1 is a block diagram of one example of a system comprising a cluster of communicatively coupled computing devices. The cluster 110 ofFIG. 1 may be configured to provide the network communications and security services described above (e.g., firewall, packet filtering, VPN, and so on). - In the
FIG. 1 example, the cluster 110 comprises threecomputing devices - The cluster 110 is configured to communicatively couple an
organization 130 to anetwork 140. Thenetwork 140 may comprise a set of interconnected networks that implement one or more standard communications protocols (e.g., the Internet Protocol Suite, TCP/IP, or the like). Accordingly, thenetwork 130 may comprise a collection of network infrastructures including, but not limited to: Ethernet networks, wireless networks, Public Switched Telephone networks (PSTN), Home networks, Wi-Fi networks, and the like. - The cluster 110 may include a
network interface 120 to communicatively couple the cluster 110 (and the organization 130) with thenetwork 140. Thecluster interface 120 may be shared among thecomputing devices network 130. In some embodiments, an additional communications interface 122 (organization interface 122) may be provided for communication with theorganization 130. Thenetwork interface 120 andorganization interface 122 may be implemented using respective traffic switches (or different ports of the same traffic switch), or using other network devices (e.g., hubs, routers, switches, or the like). Accordingly, network traffic between theorganization 130 and thenetwork 140 may pass through the cluster 110, which may, therefore, provide network security services to the organization, including, but not limited to: firewall, packet filtering, Spam filtering, Web filtering, and so on. In addition, the cluster 110 may provide for secure access to services within theorganization 130 by entities within the network 140 (e.g., provide VPN services). For example, a VPN may allow anentity 142 communicatively coupled to thenetwork 140 using a computing device 143 (e.g., personal computer, laptop computer, notebook computer, or the like), to access amail server 134 and/orfile server 136 within theorganization 130. - The
computing devices devices cluster interface ports 111A, 111B, and 111C. Thecluster interface ports 111A, 111B, and 111C may be concentrated incluster network interface 124, which may be comprise one or more routers, switches, concentrators, hubs, or the like. - The
devices cluster interface port 111A, 111B, and 111C (via the cluster interface 124). In some embodiments, thedevices cluster interface ports 111A, 111 B, and 111C. The cluster-specific protocol may provide for fast and reliable communication of cluster-specific data, including, but not limited to: cluster state information, service information, device health information, failover, synchronization data, and the like. In some embodiments, the cluster-specific protocol may be implemented within the data-link layer (of the eight layer Open System Interconnection Reference Model (“OSI model”)), as opposed to the application layer (or another, higher layer), to allow the cluster interface port to continue to operate regardless of faults in the application layer of thedevice - The cluster 110 may be formed by designating one of the
computing devices FIG. 1 example,computing device 112 may be selected as the cluster master (e.g., by personnel or the organization, IT staff, or the like). Designing a cluster master may comprise providing thecomputing device 112 with a cluster configuration, which may define the tasks and/or services to be provided by the cluster 110. For example, a cluster configuration may determine the security services to be provided by the cluster 110 (e.g., packet filtering, VPN, etc.), define the security policy to be implemented by the cluster 110, and so on. Configuring the cluster master may further comprise setting a “cluster enabled” flag on the designatedcomputing device 112, setting a cluster identifier (e.g., cluster name), designating one or more ports for cluster communication (e.g., cluster interface port 111A), and so on. When thecomputing device 112 is so configured, the cluster 110 may be created (a cluster 110 comprising a single computing device 111), and thecomputing device 112 may begin acting as a cluster master. - Additional computing devices (e.g.,
devices 114 and 116) may be added to the cluster 110 by connecting the device(s) to thecluster interface 124, thenetwork interface 120 and/or theorganization interface 122. The cluster master 112 (and/or other devices added to the cluster), may be configured to detect the connection of a new computing device to the cluster 110 (e.g., to thecluster interface 124,network interface 120, and/or the organization interface 122). In some embodiments, the computing devices in the cluster 110 (e.g., the cluster master computing device 112) may transmit periodic discovery messages via their respective cluster interface ports (e.g., cluster interface port 111A of the computing device 112). The discovery messages may comprise broadcast-type messages configured to be received by any computing device (114 and/or 116) communicatively coupled to the cluster interface 124 (orother interface 120 and/or 122). - Once discovered, the
new computing device 114 may receive a device-specific configuration from one of the other devices in the cluster 110. The device-specific configuration may configure thenew computing device 114 to operate in “cluster” mode, configure the cluster interface port of the device (port 111B, discussed below), assign a role to the device (e.g., active, standby, or the like), and so on. - After receiving the device-specific cluster configuration, the
new device 114 may join the cluster (e.g., begin communicating via the cluster interface port 111B), and receive a cluster configuration from another cluster device. The cluster configuration may include a definition of the services provided by the cluster 110 (e.g., VPN, firewall, packet filtering, etc.), define a security policy implemented by the cluster 110, define cluster capabilities (e.g., maximum number of simultaneous connections, etc.), and the like. Thenew device 114 may receive and implement the device-specific configuration (and cluster configuration). - The cluster master (or
other cluster device port 111A, 111B, or 111C). The secure cluster connection may be used to synchronize cluster configuration data, flow, run-time synchronization data, global, run-time synchronization data, security services data, time, device monitoring information (e.g., device status messages, health scores, etc), provide access to shared resources (e.g., address pools, port pools, and so on), provide access to shared services (e.g., a shared Internet Key Exchange (IKE) module), and the like. - As discussed above, a cluster 110 may include “active” members operating in “high throughput” mode as well as “standby” member operating in “high availability mode.” A cluster configuration may specify that the cluster 110 is to include a particular number of active cluster members (e.g., N active members), with any additional members to operate in standby mode. In another embodiment, a cluster configuration may specify N active members and Y standby cluster members, specify a certain proportion of active to standby cluster members, or the like. As new members are added to the cluster (according to the discovery processes above), the cluster master (or another cluster device) may determine whether the cluster should be configured to operate in active or standby mode.
- If the device is to operate in active mode, it may be made available to perform task(s) and/or provide service(s) as directed by the cluster master (according to a load balancing scheme defined by the cluster configuration). If the device is to operate in standby mode, it may not take on active task(s) and/or provide service(s) until another device fails or stops responding.
-
FIG. 2A is a state diagram 200 depicting the addition of a new device to a cluster. The state diagram 200 may be implemented as a method, comprising a plurality of steps (e.g.,method 201 discussed below in conjunction withFIG. 2B ). - When in
state 210, a device may be communicatively connected to a network (e.g., connected to theinterfaces FIG. 1 ). The new device may be unconfigured (in a default or safe configuration) and, as such, may not yet have joined the cluster (e.g., not configured to communicate with other cluster devices, receive processing tasks, etc.). Instate 210, the device may be discoverable by other devices in the cluster. Causing a device to enterstate 210 may include physically connecting a communications port of the device to a network device (e.g., switch, router, concentrator, or the like), enabling one or more network switch ports or interfaces (e.g., interfaces ofnetwork devices - In
state 210, the device may be actively or passively discovered by another device. In some embodiments, other cluster devices may be configured to transmit discovery messages within a cluster network (e.g., the cluster master may periodically transmit broadcast messages to a cluster interface, such as theinterface 124 ofFIG. 1 ). The discovery messages may include a request for the device to provide device identifying information, such as a device serial number, version, capabilities, licensing information, and the like. - The cluster device(s) may use the information to determine whether the device is eligible to join the cluster (e.g., is compatible with the other devices in the cluster and/or licensed to operate in a clustered environment). If the device is not compatible with the cluster and/or not licensed for clustered operation, the device may transition to a
non-member state 280. In thenon-member state 280, the device may not participate as a primary (active) and/or secondary (standby) member of the cluster. In addition, the other cluster devices may be configured to exclude the device from secure cluster communications, assignment of cluster processing tasks, and the like. - If the device is compatible with other cluster devices and/or is otherwise eligible to join the cluster, a cluster “join” procedure may be initiated. The join procedure may transition the device into a
join state 220. Transitioning to thejoin state 220 may comprise the cluster device(s) (e.g., the cluster master or other device) transmitting a device specific cluster configuration to the device. The device-specific configuration may be loaded and implemented by the device. Loading and implementing the device-specific configuration causes the device to “join” the cluster and transition tostate 220. - When in
state 220, the device may be prepared to join the cluster as an active or standby cluster member. The preparation instate 220 may include a cluster device (e.g., cluster master) validating the device-specific configuration, verifying a license of the device, synchronizing cluster configuration and/or run-time data with the device, and the like. - In
state 220, if the cluster configuration is not validated (e.g., if the cluster configuration loaded on the device differs from the cluster configuration implemented by the cluster master), the device may be returned tostate 210, where the device may be re-discovered and have new device-specific configuration data transmitted thereto (e.g., by the cluster master). - The synchronization performed in
state 220 may include transmitting run-time, global cluster configuration data to the device (e.g., from other cluster device and/or the cluster master). The run-time, global cluster configuration data may include data used by the devices in the cluster to process and/or pass network traffic and may include, but is not limited to: flow table information (discussed below), security information (e.g., phase one security association (P1SA), phase two security association (P2SA), session keys, etc.), assigned IP for mobile VPN (MOVPN), user session information, a list of devices in the clusters (along with the static and/or working roles thereof), cluster device status information (e.g., device health, etc.), cluster election information (discussed below), and the like. - The cluster configuration data (synchronized from the cluster master) may be used by the cluster device to process network traffic and/or service network requests when the device is operating in active mode. In some embodiments, synchronization may include establishing a secure cluster communications channel on a particular communication interface (e.g., on a dedicated cluster interface port, such as ports 111A-111C depicted in
FIG. 1 ). As will be discussed below, the cluster synchronization channel may be configured to provide for high-performance data synchronization that is resistant to application-layer failures (e.g., implemented at a low layer of the OSI model). If the synchronization cannot be performed (e.g., the device fails to receive the cluster configuration data, the synchronization channel cannot be established, or the like), the device may transition to thenon-member state 280. - The license verification performed in
state 220 may include determining whether licensing information of the device is valid (e.g., using a cryptographic technique, such as verifying a digital signature, hash value, or the like). If the device does not have a license and/or has licensing information that cannot be validated, the device may be configured to operate in “standby” mode (e.g., have a static role of “secondary” or standby). When in standby mode, the device may not actively perform cluster processing tasks (e.g., handle network flows). If the device has a license and/or the licensed capabilities of the cluster allow for additional active members, the device may be eligible to be an active member of the cluster (e.g., have a static role of “primary” or active). - The license verification in
state 220 may further include determining the licensed capabilities of the cluster. In some embodiments, the licensed capabilities of the cluster may be determined by combining the cluster device licenses. The combination may be made in a number of different ways. In some embodiments, the licenses may be combined in a “least common capabilities” fashion, in which the features supported by the cluster may be determined by the “minimum” set of features provided in each of the device licenses. For example, if the license of a first primary member of the cluster provides for features A, B, and C and the license of a second primary member provides for only features A and B, the cluster comprising the first and second members may only support features A and B. In some embodiments, the licenses may be combined in an “OR”-type operation (or other logical combination) in which the capabilities of the devices are added together (e.g., a cluster comprising a first device licensed to provide features A and B and a second device licensed to provide features B and C may be capable of providing features A, B, and C). Alternatively, or in addition, certain licensing features (e.g., VPN) may require that each device has an enabling license, while others may not (e.g., operate in an “OR” fashion). - At
step 220, a static role of the device may be determined. As discussed above, if the device does not have its own license, the device may be assigned to operate in a secondary or standby role, meaning that the device may not act as an active cluster device (e.g., a device capable of accepting tasks from the cluster master), until failover occurs. In addition, if the device does have a license, but that license does not give the device the same capabilities implemented by the cluster and/or the cluster configuration already has its allotted number of primary members (e.g., as determined by the cluster configuration), the device be given a secondary or standby static role. - If the device has sufficient licensing privileges and/or other cluster devices have failed over (been removed from the cluster due to a device failure or the like), the device may be configured to operate in a primary or active role (e.g., as an active part of the cluster).
- After verifying the device license, synchronizing cluster configuration data, and the like, the device may transition to state 230, where it may act as a cluster member. If the device is configured as a primary or active cluster device, the device may begin accepting processing tasks from the cluster master (e.g., handling network flows, etc.). If the device is configured as a secondary or standby device, the device may wait until failover operation occurs before it begins accepting tasks from the cluster master.
- The device may leave the cluster member state 230 by being deactivated (e.g., by the cluster master, a human operator, or the like), being deactivated for an upgrade operation, by being reset, by being failed over, or the like. If the device is deactivated, it may enter the
non-member state 280. If the device is reset, it may enter thediscoverable state 210, at which point the device may rejoin the cluster as described above. - When the device is in the non-member state 280 (due to a failure to join the cluster from
state 220, being deactivated from the active member state 230, or the like), the device may not operate as a primary or secondary cluster device. Accordingly, the device may not actively communicate with other cluster devices, may not accept tasks from the cluster master, and/or enter an active state if/when other cluster device(s) are failed over. - When in the active member state 230, the device may be configured to operate in one of a plurality of operational roles including, but not limited to: cluster master, backup master, and active. The cluster master may be configured to manage the cluster, which may include, but is not limited to: maintaining a list of the devices in the cluster (e.g., a list of active and standby devices), assigning processing tasks to the active devices, maintaining global, run-time synchronization data, managing shared resources, assigning tasks to active cluster members (e.g., perform a load balancing function), handling network flows, monitoring cluster health, managing device failover (e.g., providing for activation of standby cluster members in response to a failure of one or more of the active devices), and the like. The global, run-time synchronization data may include a flow assignment data structure comprising a mapping between the network flows handled by the cluster and the cluster device assigned thereto, flow, run-time synchronization data for each of the flows (e.g., session information, such as cache data, session keys, security data, and the like), shared resource data (e.g., address pools, port pools, hostout data, and the like), and so on.
- When operating as a backup master device, the device may be configured to receive global, run-time synchronization data from the cluster master (e.g., maintain the same set of data as the cluster master). Accordingly, the backup master may quickly take over the role of the cluster master if needed (e.g., if the cluster master fails, has its health score fall below a threshold, or the like).
- An active cluster device may be configured to handle network flows assigned thereto by the cluster master. In addition, an active cluster device may monitor the health of other cluster members (e.g., the cluster master). The cluster master and/or backup master may be configured to operate as active cluster devices (e.g., may process network flows, monitor other cluster devices, and the like). The active cluster devices may be configured to transmit flow, run-time synchronization data to the cluster master. The flow, run-time synchronization data may include data pertaining to each of the network flow(s) handled by the device. The flow, run-time synchronization data may be used in a failover operation to allow another device to handle the flow with minimal service disruption.
- The cluster formation process described above may include selection of a cluster master. In some embodiments, the cluster master may be the first device added to the cluster (e.g., the first device configured to operate in clustered mode). Alternatively, or in addition, a cluster master may be periodically selected by a human operator (e.g., via a configuration interface) and/or by the devices in the cluster (e.g., in response to the cluster master failing, the cluster master's health score (discussed below) falling below a threshold, after a predetermined time threshold, or the like).
-
FIG. 2B is a flow diagram of amethod 201 for adding a device (network security device) to a cluster. Themethod 201 may be implemented on a computing device comprising a processor and memory using one or more computer-readable and/or computer-executable instructions. The instructions comprising themethod 201 may be embodied as one or more distinct software modules, which may be stored on a computer-readable storage medium, such as a hard disc, optical storage media, memory, or the like. In some embodiments, one or more steps of themethod 201 may be tied to particular machine components, such as computer-readable storage media, communications interfaces, processing modules, or the like. - At step 211, the
method 201 may be initialized, which may comprise loading one or more computer-readable instructions from one or more computer-readable storage media, accessing and/or initializing one or more communications interfaces, and the like. - At
step 221, themethod 201 may discover a device. Discovering the device may comprise detecting a communications interface of the new device. For example, the new device be communicatively coupled to network interface used by the cluster (e.g.,network interface FIG. 1 ), one or more communications interfaces of the device may be activated, a configuration of the device may be set such that the device is capable of communication with other cluster devices or the like. Discovering the device atstep 221 may comprise active discovery and/or passive discovery. Active discovery may comprise themethod 201 transmitting network traffic (e.g., broadcast packets, or the like), which may be received (and responded to) by the device. The discovery messages may be transmitted automatically and/or periodically. Alternatively, themethod 201 may transmit discovery messages only if instructed to do so (e.g., via a configuration interface, an SNMP message, or the like). Passive discovery may comprise themethod 201 monitoring network traffic (e.g., for ARP requests, DHCP requests, or the like), accessing router ARP tables, or the like to discover the device without actively transmitting network traffic thereto. - At
step 231, the eligibility of the device to join the cluster may be determined. In some embodiments, determining the eligibility of the device to join the cluster may be based upon device-identifying information, such as an indicator of the version or revision of the device (e.g., software version, firmware version, hardware revision, etc.), the capabilities of the device (e.g., hardware capabilities, such as processor speed, memory, and the like, software installed, etc.), device licensing information, and so on. For example, the cluster may be configured to only accept certain devices (or device versions) that have certain processing capabilities (e.g., processing speed, memory capacity, communications interface capabilities, such as a gigabit Ethernet interface, or the like). Step 231 may comprise themethod 201 interrogating the device to determine certain device properties (e.g., hardware configuration, software version, firmware version, etc). If the device is not eligible to join the cluster (does not meet the software or hardware requirements for cluster membership), the flow may continue at step 281; otherwise, themethod 201 may continue to step 236. - At
step 236, a device-specific configuration may be transmitted to the device, and device implementation thereof may be validated. The transmission of the device-specific configuration atstep 236 may comprise selecting device-specific configuration data from a plurality of different device-specific configurations, each of which may be adapted to particular device hardware and/or software configuration or version. The selection may be based upon the device-identifying information obtained atstep 231. Step 236 may further comprise verifying that the device has implemented the device-specific configuration. Verification may comprise the device transmitting a confirmation message to themethod 201, themethod 201 interrogating the device (e.g., for a hash value or other indicator of the device-specific configuration), or the like. If the device-specific configuration is verified atstep 236, the flow may continue to step 241. Otherwise, the flow may return to step 236 where the eligibility of the device to join the cluster may be re-determined and/or the device-specific configuration may be re-transmitted. Alternatively, or after a predetermined number of device-specific configuration verification failures, the flow may continue to step 281. - At step 241, a cluster configuration may verified. In some embodiments, the cluster configuration may be included with the device-specific configuration. Alternatively, the cluster configuration may be transmitted separately (e.g., transmitted at step 241). As discussed above, the cluster configuration may include a security policy implemented by the cluster, identifiers of the devices in the cluster, cluster communication configuration (e.g., cluster port assignment(s), interface port assignment(s), and the like), and the like.
- Step 241 may further comprise verifying that the device has implemented the cluster configuration. The verification of step 241 may comprise the device transmitting a confirmation message to the
method 201, themethod 201 actively interrogating the device, or the like. If the cluster configuration is verified, the flow may continue to step 251; otherwise, the flow may return to step 241, where the cluster configuration may be re-transmitted to the device and re-verified by themethod 201. Alternatively, or after a threshold number of cluster configuration verification failures, the flow may continue to step 281. - At
step 251, a static role of the device may be determined. Determining a static role of the device may comprise accessing a license of the device, evaluating the device-identifying information about the device, and so on. Accordingly, assignment of the device role in the cluster may be determined and transmitted with the device-specific configuration atstep 236. Alternatively, the role assignment may be made in aseparate step 251 as depicted inFIG. 2B . - At
step 251, if the device is not licensed, or a license of the cluster defines a maximum number of active devices, which has already been met, the device may be assigned a static role of “secondary” or “standby.” When in the secondary or standby role, the device may not be assigned cluster processing tasks (e.g., handle network flows). If the device is licensed and/or a maximum number of active devices defined in a cluster license has not been met, the device may be assigned a static role of “primary” or “active.” When in the primary or active role, the device may be available to perform cluster processing tasks (e.g., handle network flows). Assigning a role to the device may further comprise electing the device to act as a cluster master or backup master as described above. For example, if the device is the first device in the cluster, the device may be automatically selected as the cluster master. Similarly, if the cluster does not yet have a backup master, the device may be given the role of backup master. - In some embodiments,
step 251 may further comprise determining the licensed capabilities of the cluster. If the device has its own license, the license may be transmitted to the device implementing themethod 201. The license may be combined with the licenses of the other devices in the cluster (if any). The licensed capabilities of the cluster may define the capabilities thereof, which may include, but are not limited to: the number of active connections supported by the cluster, the throughput of the cluster, the services provided by the cluster (e.g., VPN, SSL, etc.), the number of active devices in the cluster, and so on. In some embodiments, the licenses may be combined by determining the least common capabilities therebetween (e.g., if a first license allows 500 concurrent connections, and a second license allows 700 concurrent connections, the cluster may be licensed to the lower number of concurrent connections, or 500 concurrent connections). Alternatively, the combination may be additive or according to the maximum capabilities of the licenses. Different licensed features may be combined in different ways (e.g., certain capabilities may be determined according to least common capability, while others may be additive, and so on). - At
step 261, the device may join the cluster in its assigned role (the static role determined at step 251). If the device has been assigned an active role within the cluster, joining the cluster atstep 261 may comprise configuring the other members of the cluster to communicate with the device (e.g., using a secure, cluster communications protocol), configuring the cluster master to assign processing tasks to the device (e.g., assign network flows to the device), and so on. Accordingly, joining the cluster may comprise the cluster master (or other cluster device) provide a shared key to the device to allow the device to securely communicate with other cluster devices. Alternatively, or in addition, joining may comprise performing a key exchange operation with one or more cluster devices to establish shared keys therewith. - If the device has been selected to operate as the cluster master, joining the cluster at
step 261 may comprise initializing cluster master data structure, such as a flow assignment data structure, global, run-time synchronization data structure, shared resource data structure, and the like. The device may be configured to receive and assign network flows to cluster devices as described herein. In addition, the device may be configured to synchronize global, run-time synchronization data with a backup master device (if any). If the device is configured to operate as the backup master of the cluster, joining the cluster atstep 261 may further comprise configuring the cluster master to synchronize global, run-time synchronization data with the device, which may include, but is not limited to: a flow assignment data structure, flow, run-time synchronization data (data associated with each of the assigned flows), shared resource data, and the like. - If the device has been assigned a standby role within the cluster, joining the cluster at
step 261 may comprise operating in standby mode (e.g., passively synchronizing with the cluster master) until device failover occurs, at which point the device may transition to an active role as described above. Accordingly, joining the cluster as a standby device may comprise establishing a secure communications channel with the device, configuring the other cluster devices to use the device as a failover candidate (e.g., make the device available in the event of a failure of one of the other cluster devices), synchronizing cluster configuration and run-time data with the device, and the like. - At step 281, if the device is ineligible or unable to join the cluster, the device may be set as a non-member. Setting a device as a non-member may comprise configuring the device to operate in its default or “safe” configuration. In addition, other cluster devices may be configured to exclude the device from secure cluster communications, from eligibility for assignment of cluster processing tasks, from eligibility for use as a failover device, and the like. Accordingly, the device may not implement the cluster configuration, communicate with other cluster devices (e.g., have access to the secure, cluster communications channel), and so on. When reverted to the default or safe configuration, the device may be discoverable by other cluster members and, as such, may attempt to join the cluster at a later time (e.g., be discovered at step 211).
- At
step 291, the flow may terminate until another device becomes discoverable, cluster join requirements are modified (making non-member devices eligible to join the cluster), or the like. -
FIG. 3A is a diagram 300 depicting the relationships and/or transitions between cluster device operation modes, such as cluster master, backup master, and active operational modes. - When a device is joined to a cluster, the device may begin operating in a default
operational mode 310. As discussed above, if the device is the first device to join the cluster, the defaultoperational mode 310 of the device may be the cluster master operational mode 320. If the device joins a cluster that already has a cluster master, but not backup master, the defaultoperational mode 310 of the device may transition to be thebackup master 330. If the cluster already includes devices operating as cluster master 320 andbackup master 330, the defaultoperational mode 310 of the device may transition to one of the active 340 orstandby 350 modes. - A device may operate as an
active cluster device 340 if the cluster can include additional active (worker) devices (e.g., according to the licensed capabilities of the cluster 300). The number of active cluster devices may be defined by a cluster configuration and/or licensing information (e.g., the configuration and/or license may specify that the cluster may include five active cluster devices). The number of active cluster devices allowed in the cluster may or may not include the cluster master 320 and/orbackup master 330. If the cluster may accept additional active cluster devices, the device may transition from thedefault mode 310 to theactive mode 340, in which the device may accept tasks from the cluster master 320. If the cluster already includes the maximum number ofactive cluster devices 340 and/or if the configuration data specifies that a certain proportion of the devices in the cluster be allocated to high-availability (standby mode 350), the device may transition to thestandby mode 350. As discussed above, a device instandby mode 350 may not actively perform processing tasks assigned by the cluster master, but may actively synchronize cluster configuration data. Accordingly, when the device transitions fromstandby mode 350 to active mode 340 (e.g., due to a change in cluster configuration, licensing, device failure, etc.), the device may be ready to begin performing tasks assigned thereto without first synchronizing cluster configuration data. Other changes in the cluster configuration may require that one or moreactive devices 340 transition back tostandby mode 350. The transition may include the devices continuing to synchronize cluster configuration data, but not accepting processing tasks (network flows) from the cluster master 320. - If the device operating as the cluster master 320 is demoted, another device may become (or be “elected” as) the cluster master 320. A device may be demoted from cluster master 320 for a number of different reasons including, but not limited to: device failure (hardware, software, communications interface, or the like), device health score falling below a threshold, configuration message from a human operator, automatic demotion (e.g., as a result of a failure detected within the device by the cluster master device or another monitoring device), or the like.
- When the cluster master 320 is demoted, a failover operation may occur. Failover may comprise promoting another device to operate as the
cluster master 340. If the cluster includes abackup master device 330, thebackup master device 330 may be elected as the new cluster master 320. Promoting thebackup master 330 to the master 320 may include configuring the other devices in the cluster (e.g., theactive devices 340 and/or demoted cluster master 320) to use thebackup master device 330 as the new cluster master). Since thebackup master 330 may be synchronized to the cluster master 320 (may have been receiving updates to the global, run-time synchronization data from the cluster master 32, such as flow assignment data, shared resource, data, session data, security data, and the like), the transition to the new cluster master 320 may be performed without incurring downtime and/or interrupting the services provided by the cluster. - In some embodiments, the
backup master 330 may only be elected to the cluster master 320 operational mode if it satisfies some election criterion, which may relate to a minimum health score of the device, device hardware capabilities, processing load, or the like. If thebackup master 330 does not satisfy these criteria, and another cluster device does, another device other than thebackup master 330 may be elected to operate as the cluster master 320. The election may comprise the backup master transmitting the global, run-time synchronization data maintained thereby to the new device. The performance penalty suffered by transmitting the global, run-time synchronization data to the new cluster master may be mitigated by the fact that a device better suited to act as the cluster master is put into place (e.g., reducing the chance of another failure in the short term). Alternatively, or in addition, if thebackup master 330 is deemed to be unsuitable to act as the cluster master (and other cluster device is selected instead), thebackup master 330 may act as the cluster master 320 for a “transition period,” until the global, run-time synchronization data is transmitted to the more suitable device, after which the more suitable device may transition to cluster master 320, and the backup master may resume its former role. - Transitioning the
backup master 330 to operate as the cluster master 320 may include electing another device in the cluster to operate as thebackup master 330. If another device is available to act as abackup master 330, the device may be configured to transition to thebackup master 330. The transition of a cluster device tobackup master 330 may comprise transmitting the global, run-time synchronization data to the new backup master 330 (from theformer backup master 330 or the failed over cluster master 320). In some embodiments, electing anew backup master 330 may comprise determining which, if any,cluster devices backup master 330, the election may comprise selecting the device with the higher health score, lower IP address, lower port number, or the like. - If no
backup master 330 is available to replace the demoted cluster master 320, a new cluster master 320 may be selected from theactive cluster devices 340. The election may operate as described above (e.g., based on device capabilities, health score, load, port number, or the like). Following the election of the new cluster master 320, anew backup master 330 may be elected as described above. -
FIG. 3B depictsdata flow 301 between cluster devices. As discussed above, run-time synchronization data for load sharing and/or failover transparency may be synchronized between cluster devices. In some embodiments, the cluster master 320 may be configured to synchronize cluster configuration (e.g., cluster configuration updates), flow, run-time synchronization data, shared source data, and the like to the cluster devices (e.g., thebackup master 330, active device(s) 340, and/or standby device(s) 350). As shown inFIG. 3B , the cluster master 320 may receive configuration updates (e.g., from a human operator via a configuration interface, from a policy server, or the like). The configuration updates may include modifications to the cluster policy. The cluster master 320 may synchronize updates to the cluster policy to thecluster devices standby 350 toactive mode 340, or the like). - The cluster master 320 may be configured synchronize the global, run-time synchronization data with the
backup master 330. As discussed above, the global, run-time synchronization data may include data needed for cluster master failover transparency, such as flow assignment information (e.g., flow assignment data structure), flow, run-time synchronization data, shared resource information (e.g., address pools, port pools, and so on), shared services information (e.g., security keys, security associations, etc.), and the like. - In some embodiments, the
backup master 330 may be configured to transmit an acknowledgement message to the cluster master 320 responsive to receiving global, run-time synchronization data therefrom. The acknowledgement may be used by the cluster master 320 to verify that the global, run-time synchronization data was received. If the cluster master 320 does not receive an acknowledgement from thebackup master 330 within a threshold period of time, the global, run-time synchronization data may be retransmitted to the backup master, and/or anew backup master 330 may be elected as described above (a backup master failover operation may be performed). The global, run-time synchronization data, cluster configuration, and other cluster state information (e.g., key negotiation requests, etc.) distributed via the device cluster interface ports (e.g., ports 111A-111C ofFIG. 1 ). - The cluster master 320 may be configured to distribute network traffic and/or flow processing tasks to the devices, including the
active devices 340, the cluster master 320 itself, and/or the backup master 330 (the cluster master 320 and thebackup master 330 may be used as “active” cluster devices for the purposes of flow processing). The cluster master 320 may maintain a data structure indicating which tasks have been assigned to which cluster members (a flow assignment data structure described below). The flow assignment data structure may include an enumeration of the network flows (e.g., network connections, VPN connection, etc), being serviced by the cluster and identify which device is servicing which flow. The cluster master may, therefore, monitor which devices are heavily loaded and which are less loaded and make task assignment decisions accordingly. As will be discussed below, the cluster configuration may define one or more flow assignment rules, which may specify which devices are eligible to handle which flows (e.g., based upon existing flow assignments, security group information, session state, efficiency considerations, or the like). - The data sent between the cluster devices (e.g., cluster configuration data, cluster state synchronization data, etc.) may be transmitted using a secure communications channel. In some embodiments, data may be encrypted and/or digitally signed. As discussed above, inter-cluster communications may be implemented on a cluster interface port (port 111A-111C of
FIG. 1 ). The cluster interface ports may implement a high-performance protocol that is resistant to application-layer failures. One example of a high-performance, low-level communications protocol is described below. - The
active cluster devices 340 and/orbackup master 330 may be configured to transmit flow, run-time synchronization data to the cluster master 320. The flow, run-time synchronization data may include data relating to the flow(s) handled by the respective device(s). Accordingly, the flow run-time synchronization data may include all the data needed to transition a flow from one cluster device to another cluster device in the event of a failover operation. The flow, run-time synchronization data may include flow session data, security information (e.g., security association sequence information number, shared keys, etc.), flow termination, addition and/or removal of rules on a data channel, flow port assignments, flow cache, and the like. - The cluster master 320 may aggregate the flow, run-time synchronization information received from the cluster devices into a global, run-time synchronization data structure, which may be synchronized with the
backup master 330. As will be discussed below, when a device handling a particular set of flows is failed over, the flows may be transitioned to one or more other cluster devices. The flow run-time synchronization data corresponding to each of the transitioned flows may allow the replacement cluster device to resume processing the flows with minimal interruption of service. In addition, the cluster master 320 may synchronize the global, run-time synchronization data (including the flow, run-time synchronization data of each of the flows), to thebackup master 330 to provide protection in the event of a failover operation of the cluster master 320 (e.g., in the event that the cluster master 320 goes down, to be replaced by thebackup master 330 or some other cluster device). - The global, run-time synchronization data may include other types of synchronization data, such as synchronization data pertaining to shared resources managed by the cluster master 320, shared services provided by the cluster master 320, cluster configuration data, and the like. For instance, in some embodiments, the cluster master 320 may manage IP security (IPSec) data across the cluster. Accordingly, the cluster master 320 may implement an Internet Key Exchange (IKE) module, which may provide shared IKE services to the other devices in the cluster (one example of such a configuration is described below in conjunction with
FIG. 9A ). When the cluster master 320 is configured to provide a shared IKE, the cluster master 320 may provide call backs for use by the other cluster devices in the negotiation of security associations (e.g.,phase 1 security associations,phase 2 security associations, etc.), perform dead peer detection, terminate IPSec flows, and the like. The global, run-time synchronization data synchronized from the cluster master 320 to thebackup master 330 may include the IKE module data to provide for IKE module failover. - The cluster master may manage the shared resources of the cluster. Shared resource information may be maintained within the global, run-time synchronization data structure discussed above (e.g., along with the flow assignment data structure, run-time flow synchronization data, and other cluster synchronization data managed by the cluster master). The shared resources managed by the cluster master may include, but are not limited to: shared address pools, port pools, hostout traffic configuration, and the like. In some embodiments, the cluster master may act as a Dynamic Host Configuration Protocol (DHCP) server to dynamically assign IP addresses to DHCP and/or to MOVPN clients (e.g., IPSec, SSL, PPTP, and the like). The cluster master 320 may maintain an address pool data structure indicating which addresses have been assigned to which clients. The address pool data structure may be included in the global, run-time synchronization data that is synchronized from the cluster master 320 to the
backup master 330. - The cluster master may also manage a port pool for DNAT. When DNAT is used, the source IP address of a network flow may be replaced with a fixed IP address, while a source port thereof is replaced with a port number obtained from a managed port pool. The assigned port number may be reserved for use by the corresponding flow (e.g., the port may not be used for other network traffic, such as other network flows, while port is in use by the assigned flow). Hence, the cluster master may maintain a port pool comprising a data structure indicating which ports have been assigned to which flows. The port pool information may be included in the global, run-time synchronization data synchronized from the cluster master 320 to the
backup master 330. - The cluster master 320 may manage hostout traffic, which may include network traffic that is initiated by cluster devices (
individual cluster members backup master 330. - The cluster master 320 may also manage shared resources associated with network flows. For example, certain network flows may require the use of particular ports. For example, when an FTP session receives a “port” command or passive response the cluster device handling the flow may be required to request of port number for the FTP session from the cluster master 320. The cluster master 320 may use the port pool (or other data structure) to determine which ports are available for use by the flow and/or to prevent a port conflict between network flows being handled on different cluster devices. The cluster master 320 may use the port pool (discussed above), or another data structure, to prevent port conflicts. The data structure may include in the global, run-time synchronization data, which may be synchronized to the
backup master 330 by the cluster master 320. - Although the disclosure provides various examples of global, run-time synchronization data that may be synchronized within the cluster of
FIG. 3B , the disclosure is not limited in this regard. The global, run-time synchronization data described herein could include any type of data and/or data structure known in the art. Similarly, synchronization data transmitted to the cluster master 320 from thecluster devices - In some embodiments, the cluster devices (e.g., the cluster master 320,
backup master 330,worker devices 340, and/or standby devices 350) may be configured to monitor the operational status of one another. Responsive to the monitoring, the cluster device(s) may take one of several possible actions including, but not limited to: replacing the cluster master 320 with another cluster device, replacing thebackup master 330 with another device, failing over a device (e.g., replacing the device with another cluster device), or the like. - The cluster devices may implement a monitoring function in various different ways. In one example, each of the cluster devices may generate and transmit periodic status messages. The status messages may be transmitted using a shared cluster interface (e.g., interface ports 111A-C of
FIG. 1 ). The status messages may provide an indication that the cluster device is operational and capable of accepting tasks from the cluster master 320. - In some embodiments, the status messages may be used to communicate device performance and/or operational metrics, which may be used to calculate or derive a “health score”, of the device. As used herein, a device health score may refer to data (e.g., embodied as one or more alpha numeric values, formatted data, or the like), which be indicative of the operational status of a cluster device. Accordingly, a health score may include, but is not limited to, providing indications of the status of one or more application layer modules implemented on the device; providing indications of the performance of the cluster device; providing indications of the status of the communications interfaces of the device; and the like.
- For example, a device health score may include application-layer information, such as performance metrics of various device application-layer modules (e.g., traffic processing modules, etc.), the number of packets processed by the application per unit time, application throughput, may provide a record of application-layer faults and/or application-layer exceptions, provide application resource usage metrics (e.g., memory usage, processor usage, etc.), and the like. The application-layer information in the health score may be provided on a per-application basis and/or as an aggregate of all application-layer modules. Other health score metrics may quantify the overall performance of the cluster device, such as network throughput, overall processing load, system resource status, and the like. Health score metrics indicate the status of the communications interfaces of a cluster device. For example, the health score may indicate which (if any) communications interfaces are down (e.g., interface link status), provide interface-specific signal-to-noise ratio(s), provide indications of interface collision(s), provide indications of communication interface load, and the like.
- In some embodiments, certain components of the health score may be more heavily weighted than others. The weighting may allow an administrator to configure the health score to emphasize certain aspects of device performance and/or health. For example, if a certain application or function is considered to be particular important to an organization, the administrator may configure the heath score to give added weight to device metrics relating to the application and/or function.
- In some embodiments, the health score of a device may include a failover request. For example, the device may be due for maintenance (e.g., a software or hardware updates). Responsive to the maintenance requirement, the device may transmit a status message comprising a health score (or other data), indicating that the device is to be taken down. Similarly, when the device determines that it is no longer providing acceptable levels or service (e.g., due to application-layer failures, such as VPN failure, anti-virus failure, or the like), the device may transmit a status message comprising a request for failover.
- The status messages of the cluster devices may be used to determine which cluster devices should be selected to perform particular processing tasks, elect cluster devices to perform different roles within the cluster (e.g., cluster master 20,
backup master 330,worker 340, etc.), provide a quantitative gauge of the performance of the cluster device, provide an indication of the stability of the device, provide an operational status of the device (e.g., indicate which services or tasks the device is capable of performing), provide an indication as to whether the device is likely to fail within a particular time frame, and so on. - As discussed above, in some embodiments, a health score (or data from which a health score may be derived) may be included in the periodic status messages transmitted from a cluster device to the other cluster members (e.g., via the cluster interface port 111A-C of
FIG. 1 ). The status messages (and/or the health score data therein) may be used to monitor the cluster devices, which may comprise: performing failover operations, assigning processing tasks (network flows) to various cluster devices, electing devices to act as the cluster master 320 and/orbackup master 330, and so on. - For example, in some embodiments, the health score of a device may be used to detect device instability which, may be indicative that the device is about to fail and/or is not operating properly. If the health score indicates that a device is about to fail, other cluster devices may implement a preemptive failover operation to failover the device before it crashes. A preemptive failover may provide for a more efficient transition to a replacement device, which may minimize interruption to the services provided by the cluster. Similarly, the health score of a cluster master 320 or
backup master 330 may be used to invoke a preemptive failover to replacement cluster master 320 and/orbackup master 330 devices. - The selection of a replacement cluster master 320 and/or
backup master 330 may be predicated upon, inter alia, the respective health scores of the available cluster devices (e.g., a cluster device having a low health score may be excluded from election as the cluster master 320 or backup master 330). - Failover of an active cluster device (e.g., the cluster master 320,
backup master 330, or worker 340) may occur responsive to one or more failover conditions including, but not limited to: loss of communication with the device (e.g., based upon device link status), communications interface failures (e.g., failures in one or more non-cluster communications interfaces), device crash (e.g., non responsive despite the existence of a communications link), heath score below a threshold, in response to a configuration command (e.g., a command to bring down the device to perform device maintenance, device upgrades, or the like), and so on. - Upon detecting failover conditions in a particular cluster device, the other devices in the cluster may implement a failover operation to replace the failed over device with another device. The nature of a failover operation may vary according to the operational role of the failed device.
- For example, a cluster master failover may comprise selecting a new cluster master 320 from the other cluster devices. The selection of the new cluster may be made by the remaining cluster members as a whole to ensure that only one device is configured to act as the cluster master 320 at any one time. The selection of a replacement cluster master 320 may be based on the current role of each of the remaining cluster devices. For example, if the cluster includes a
backup master 330, thebackup master 330 device may transition to be the new cluster master 320 (since it is already synchronized with the cluster master). If there is nobackup master 330, or the backup master device also satisfies failover conditions (has failed or is on the verge of failing), aworker 340 orstandby 350 device may be selected. The selection may be based upon device health score, processing load, IP address, connection speed, random selection, or the like. If thebackup master 330 is operable (but not suitable as the cluster master 320), thebackup master 330 may be configured to synchronize the global, run-time synchronization data to the replacement cluster master before being failed over itself. - If the device to be failed over is the
backup master 330, a suitable replacement may be selected as described above. The failover to areplacement backup master 330 may comprise synchronizing the global, run-time synchronization to the new device from the cluster master 320 and/orbackup master 330, if possible. - The device to the failed over may be actively performing cluster processing tasks (e.g., handling network flows). A failover operation may comprise transitioning network flows assigned to the failed device to one or more available cluster devices. Transitioning a network from a first device (failed device) to a second replacement device may comprise transmitting to the second replacement device any flow, run-time synchronization data pertaining to the flow. The flow, run-time synchronization data may be transmitted to the second replacement device by the cluster master 320 or
backup master 330, both of which may maintain synchronized global, run-time synchronization data structures comprising the flow, run-time synchronization data pertaining to the flows. The transition may further comprise the cluster master 320 configuring the second replacement to handle the transitioned network flows, updating the flow assignment data structure within the global, run-time synchronization data, and (if operating in “direct-forward” mode) configuring an inbound network interface to forward network traffic associated with the flow to the second replacement device. -
FIG. 3C is a flow diagram of one embodiment of amethod 302 for monitoring a cluster using devices within the cluster. Themethod 301 may be implemented on a computing device that has joined a cluster as a cluster master, backup master, active member, and/or standby member. The cluster device implementing themethod 302 may comprise a processor and memory. Themethod 302 may be embodied on the cluster device as one or more computer-readable and/or computer-executable instructions, which may be embodied as one or more distinct software modules stored on a computer-readable storage medium of the cluster device (e.g., hard disc, optical storage media, memory, or the like). In some embodiments, one or more steps of themethod 302 may be tied to particular device components, such as computer-readable storage media, communications interfaces, processors, or the like. - At
step 311, themethod 302 may be initialized, which may comprise loading one or more computer-readable instructions from one or more computer-readable storage media, accessing and/or initializing one or more communications interfaces, and the like. - At
step 321, data indicative of a health score of the device implementing themethod 302 may acquired. As discussed above, a health score may comprise information relating to the application layer of the device, device performance, device communications interface status, and the like. In some embodiments,step 321 may comprise calculating one or more alpha numeric health score values (e.g., a set of alpha numeric values, each relating to a different device health category). Alternatively, or in addition,step 321 may comprise acquiring data from which a health score of the device may be derived (e.g., raw performance statistics, operational parameters, logging information, and the like). - At step 331, a status message may be transmitted to other devices in the cluster. The status message may comprise the data acquired at step 321 (e.g., the health score and/or the data used to derive the health score). In some embodiments, the status message may be transmitted via a dedicated cluster communications interface port, such as the cluster interfaces 111A-111C of
FIG. 1 . Alternatively, or in addition, the status message may be directed to a dedicated cluster network interface, such as thecluster interface 124 ofFIG. 1 , which may comprise a switch, hub, concentrator, or other network communications device. - In some embodiments, the status message may be communicated using a cluster-specific communications protocol, which may provide for efficient communications that are resistant to application-layer failures. The cluster-specific communications protocol may be implemented below the application layer (e.g., in the data link layer or the like). The
method 302 may be configured to generate and transmit status messages (e.g., performsteps 321 and 331) at regular intervals. Accordingly, other devices monitoring the device implementing themethod 302 may detect a failure in the device using the status messages transmitted thereby and/or if no status messages from the device are received within a threshold time period. - At step 341, the
method 302 may receive status messages from other devices in the cluster (e.g., via the dedicated cluster communications interface, cluster network interface, or the like). The status messages may include respective device health scores (or information from which respective device health scores may be determined), each corresponding to a respective cluster device. In some embodiments, the status messages may further include information describing the current configuration of the device (e.g., cluster configuration, security policy, software version, firmware version, etc.). - At
step 351, themethod 302 may determine whether any of the devices in the cluster are to be failed over. A device may be failed over when one or more failover conditions are satisfied. Themethod 351 may implement any number of different failover conditions, some of which may be based upon the health score of the device, and other which may be related to lower-level monitoring functions (e.g., link-level monitoring, connectivity, and the like). The failover conditions atstep 351 may include, but are not limited to: the health score of the device falling below a threshold; the health score of the device being maintained below a threshold for a threshold time period; run-away device resource consumption as indicated by the health score (e.g., runaway processor load, memory usage, or the like); poor application-layer performance (e.g., if the health score indicates that one or more applications deemed to be critical (IPSec, VPN, anti-virus, etc.) are not performing adequately; device hardware failures (e.g., bad memory, disc, or the like); communications interface failures or performance degradation (e.g., low network throughput, high SNR ration, etc.); failure to receive status messages for a threshold time period; device link status; hardware or software configuration change; or the like. - If at
step 351, one or more cluster devices are to be failed over, the flow may continue atstep 361; otherwise, themethod 302 may terminate atstep 371 and/or continue as more status messages are received and/or when an updated status message is to be transmitted. - At
step 361, a failover operation for the one or more devices identified atstep 351 may be performed as described above. An example of a method for failing over a cluster device is described below in conjunction withFIG. 3D . After failing over the device, themethod 302 may terminate atstep 371 and/or may continue as more status messages are received from other cluster devices and/or when a periodic status message is to be transmitted from the device. -
FIG. 3D is a flow diagram of one embodiment of amethod 303 for failing over a cluster device. Like themethod 302 described above, themethod 303 may be implemented on and/or in conjunction with a cluster device comprising a processor, memory, communications interfaces, and the like. Themethod 303 may be implemented on the cluster device using one or more computer-readable instructions embodied as discrete software modules stored on a computer-readable medium. - At
step 312, themethod 303 may be initialized, which may comprise loading one or more instructions from a computer-readable medium, initializing communications interfaces, and the like. - At
step 322, a device to be failed over may be identified. The identification of step 314 may be implemented by a method, such asmethod 302 described above in conjunction withFIG. 3C . Alternatively, the identification may be received from the device to be failed over (e.g., as an explicit failover request), received from an external source, such as a configuration interface or other management device (e.g., an SNMP message, user request, or the like), or the like. - At
step 332, one or more available cluster devices to replace the failed device may be selected. The selection may be based upon health score of the other devices, the availability of standby devices, or the like. If the failed over device is operating as the cluster master, the selection ofstep 332 may give preference to a backup master (if available) as discussed above. If the backup master is selected to replace the cluster master,step 332 may further comprise selecting a replacement for the backup master. - At
step 342, the one or more devices selected atstep 332 may be prepared to handle the tasks of the failed over device. Preparing a device to handle a processing task may comprise transferring flow, run-time synchronization data to the device. For network flow processing, the flow, run-time synchronization data may comprise flow session information, such as IPSec data (e.g., P1SA, P2SA, shared keys, etc), flow cache, flow port shared resource allocations (e.g., DNAT ports, etc.), and the like. The flow, run-time synchronization data may be transferred from the cluster master and/or backup master. If neither the cluster master nor backup master is available and/or has the flow, run-time synchronization data, and one or more communications interfaces of the device to be failed over are active, the data may be transferred to the replacement devices directly from the failed over device (before it is brought down and/or removed from the cluster). - If at
step 342, the device to be failed over is the cluster master, the preparation ofstep 342 may further comprise synchronizing the global, run-time synchronization data maintained by the cluster master to the replacement cluster master device. If the replacement cluster master device was formerly operating as the backup master, the global, run-time synchronization data may already have been synchronized. If not, the synchronization may take place between the backup master (if available) and the replacement cluster master or between the replacement device and the cluster master itself (if possible). If the backup master was selected to replace the cluster master atstep 332, the preparation ofstep 342 may further comprise preparing a replacement for the backup master. Preparing a replacement for the backup master may comprise synchronizing the global, run-time synchronization data to the replacement backup master device. - At
step 352, the cluster and the one or more replacement devices may be configured to perform the tasks of the failed over device. The configuration ofstep 352 may comprise updating a task assignment data structure to indicate which devices are handling the tasks formerly assigned to the failed over device. For example, a flow assignment data structure (discussed below) may be updated to indicate that the flows that were formerly being handled by the failed over device are not being handled by one or more replacement devices. If the cluster is operating in direct-forward mode, the configuration ofstep 352 may further comprise configuring an inbound network interface (e.g.,interface 120 ofFIG. 1 ) to forward traffic pertaining to the transferred flows to the corresponding replacement devices. - If the failed over device was the cluster master, the configuration of
step 352 may comprise the replacement cluster master taking over management of shared cluster resources (e.g., address pools, port pools, etc), performing task assignment (e.g., assigning network flows to various cluster devices), maintaining global, run-time synchronization data, managing shared services (e.g., shared security services, such as IKE, and the like), and so on. Step 352 may, therefore, comprise configuring the other devices in the cluster to use the replacement device as the cluster master. Accordingly, the devices may be configured to transmit flow, run-time synchronization data to the new cluster master, request shared resources from the new cluster master, access shared services from the new cluster master, and so on. - At step 362, the
method 303 may terminate until another failover operation is to be performed. - In some cases, a cluster failure may be accompanied by a cluster partition, in which a first set of one or more cluster devices are cut off from communication with a second set of cluster devices. The election of a cluster master may be configured to prevent “cluster partitioning,” in which each set of communicatively coupled cluster partitions elects its own cluster master (resulting in two concurrently running cluster masters 320). The cluster devices may detect a cluster partition (e.g., split syndrome in which some cluster devices cannot communicate with other cluster devices). The detection may comprise using a specially configured Ethernet frame to probe the multi-segment condition. If a multi-segment condition is detected, an active segment may be selected. The active segment may be the segment comprising the largest number of computing devices, the segment comprising the cluster master and/or backup master, or the like. When a device on an inactive segment reconnects to an “active segment” device, the device may be synchronized thereto. For example, the cluster master in the active segment may rejoin the device to the cluster as described above.
- Referring back to
FIG. 3B , the devices in the cluster 301 (cluster master 320,backup master 330, worker device(s) 340, and/or standby device(s) 350) may synchronize cluster information using a dedicated cluster interface port, such as the cluster interface ports 111A-111C ofFIG. 1 (e.g., each device may dedicate a communications interface to cluster communications, which may be concentrated at a switch or other network element). In some embodiments, the cluster interface port may implement a specialized protocol configured to provide for high-speed, robust device-to-device communications. The protocol may operate at a low level to provide for cluster communication despite failures in the application layer of the device. For instance, the protocol may be implemented with the OSI data layer. - Referring back to
FIG. 1 , the cluster 110 may be configured to provide network security services with load balancing and/or high availability. Load balancing may be implemented by assigning flows (comprising network processing tasks) to cluster members as evenly as possible, while high availability may be implemented by reassigning flows to surviving cluster members (or standby cluster members) when a cluster device fails. - In some embodiments, the cluster 110 may implement a “flooding” technique, in which each arriving packet (received via the interface 120) may be forwarded to each of the
cluster devices cluster device active cluster device - To operate in the flooding mode described above, the cluster master device (device 112) may send an address resolution protocol (ARP) reply to the
interface 120 with a multicast Media Access Control (MAC) address. A generic multiple registration protocol (GMRP) may be used to prevent flooding network traffic to ports not used by the cluster 110. Certain network elements (e.g., routers) may require an ARP entry for the cluster master 110 to be manually inserted. - Alternatively, the interface master may send an ARP reply with an unknown unicast MAC address, which may cause the
interface 120 to route inbound traffic to all of the devices (112, 114, and 116) in the cluster 110. However, someinterface devices 120 may rate-limit traffic associated with unknown destination MAC addresses. In another example, theinterface 120 may include a dump hub. The dump hub may flood inbound network traffic to the devices (112, 114, and 116) in the cluster 110. However, network traffic sent out by thecluster devices device 112 may loop back to thedevices - In an alternative embodiment, the cluster 110 may be configured to operate in a “direct-forwarding” mode. Direct forwarding may be implemented using an
interface 120 configured to route inbound network traffic to aparticular device interface 120 with a virtual MAC address). Therefore, unicast traffic will be routed to thecluster master 112 only (and not to theother devices cluster master 112. When a flow is assigned to aparticular device interface 120. The direct forward request may specify the types of traffic that are to be forwarded to the device (e.g., in a traffic specification) and provide the MAC address of the device (112, 114, or 116) to which the traffic is to be forwarded. Using the information in the direct forward request, theinterface 120 may identify traffic associated with the flow and forward the traffic directly to the device (as opposed to flooding eachdevice cluster device -
FIG. 4 is a block diagram of one embodiment of a cluster device, such as 112, 114, and/or 116. Thecluster device 400 may be implemented as and/or in conjunction with a computing-device 410 comprising aprocessor 412,memory storage 414, and computer-readable storage media 416. Theprocessor 412 may comprise one or more general purpose processors (e.g., Intel® Pentium® processor(s), Advanced Micro Devices Athlon® processor(s), or the like), one or more special purpose processors, one or more application specific integrated circuits (ASICs), or the like. Thememory 412 may comprise volatile and/or non-volatile memory. The computer-readable storage media 416 may comprise one or more hard discs, optical storage media, Flash storage media, and the like. - The
device 400 may include acommunications interface 450, which may communicatively couple the device to one or more networks, such as thenetwork 140 ofFIG. 1 , the Internet, a WAN, a LAN, a local-cluster network, or the like. Thecommunications interface 450 may comprise wired and/or wireless communications interfaces, such as Ethernet interfaces, fiber-optic interfaces, IEEE 802.11 interfaces, and the like. One or more of the communications interfaces 452 may be communicatively coupled to a communications network 440, which may comprise a WAN and/or the Internet. In some embodiments, the communication interface(s) 120A may be communicatively coupled to the communications network via acluster interface 420. - One or
more communications interfaces 454 may be communicatively coupled to an internal network 430 (e.g., LAN, local network, home network, or the like), such as theorganization network 130 ofFIG. 1 . The communications interface(s) 454 may be communicatively coupled to theinternal network 430 via acommunications interface 122, which may comprise a switch, router, or other network element. - One or
more communications interfaces 456 may be communicatively coupled to a local cluster network, which may provide for communications with other cluster devices (not shown), such as thedevices FIG. 1 . Accordingly, the communications interfaces 456 may be communicatively coupled to a switch, hub, router, orother concentrator device 424. - The
device 410 may include one ormore processing modules processor 412 and/or implemented (in whole or in part) using one or more special purpose processing elements (e.g., special purpose processors, ASICs, or the like). Portions of themodules processor 412 using one or more computer-readable instructions stored on the computer-readable storage media 416. - A
flow assignment module 460 may be configured to assign network flows to the devices in the cluster (e.g., using a method, such asmethod 500 described below). For example, when operating as a cluster master, thedevice 410 may receive inbound network traffic from theinterface 420. The traffic may be routed to theflow assignment module 450, which may identify a flow associated therewith. - The
traffic processing module 462 may process network traffic according to a security policy and a local, flowassignment data structure 463. The security policy enforced by thetraffic processing module 462 may be defined in the clusterpolicy data structure 470, and may specify, inter alia, how various types of network traffic and/or network flows are to be processed (e.g., allowed or not allowed, filtered, routed, and so on). For example, a security policy may determine which types of network traffic may be passed from an external network (e.g., coupled to interface 420) to an internal, organization network (e.g., coupled to interface 422), and vice versa, may define network filtering tasks, define firewall rules, and so on. - In some embodiments, the network security policy defined in the cluster
policy data structure 470 may define a role-based, user-based, or other type of network security policies. For example, thecluster configuration 470 may reference and/or provide a link to a network authentication or authorization server (not shown), which may be used to provide user- and role-based security services. Accordingly, in some embodiments, thetraffic processing module 462 may be communicatively coupled to one or more external servers (not shown), from which security policy information may be obtained. Alternatively, or in addition, such security policy information may be cached within thecluster configuration 470 and/or updated by the device acting as the cluster master. - The
traffic processing module 462 may maintain a local, flowassignment data structure 463 identifying the network flows that have been assigned thereto. The identifying may comprise information to allow thetraffic processing module 462 to associate network traffic with an assigned flow (e.g., based upon source address, destination address, protocol, port, security information, and so on). Unlike the flowassignment data structure 472 maintained by a cluster master that provides information regarding all the network flows handled throughout a cluster, thedata structure 463 may identify only the flows that have been assigned to theparticular device 410. When the cluster master assigns a flow to thedevice 410, thetraffic processing module 462 may update the local, flowassignment data structure 463. Thedata structure 463 may also be used to manage local, run-time synchronization data associated with the flows assigned to thedevice 410. - The
cluster configuration data 470 may also include information identifying each of the devices within the cluster, identifying the static roles of each of the cluster devices (e.g., active, standby, etc.), indicate a current state of each of the cluster devices (e.g., active, standby, failed, etc.), provide cluster licensing information, and so on. As will be discussed below, when thedevice 410 is operating as the cluster master, thedevice 410 may be configured to synchronize thecluster configuration data 470 to the other cluster devices. Therefore, the cluster master (device 410) may act as the “source” of cluster configuration data for the other cluster devices. When changes to the cluster configuration are made (e.g., via a configuration interface, policy server, or the like), the cluster master (device 410) may be configured to synchronize the changes to the other cluster devices (e.g., cause the other cluster devices to update their respective cluster configuration data structures 470). - When operating as the cluster master, the
device 410 may be responsible for managing the workload of the cluster. Accordingly, the cluster master (device 410) may be configured to assign processing tasks, such as handling network flows, to various active cluster members. Thecluster master device 410 may maintain a flowassignment data structure 472, which may provide a mapping between the network flows being handled by the cluster, and the cluster devices assigned thereto. - When the cluster master (device 410) receives network traffic that is not associated with a known flow and/or is associated with a flow that is not being actively handled by a cluster device (according to the flow assignment data structure 472), the
flow assignment module 460 may assign the flow to a cluster device. Assigning a flow to a cluster device may comprise selecting a cluster device according to a set of flow assignment rules and/or other criteria (e.g., device health, device availability, etc.) After selecting a cluster device to handle a particular flow, theflow assignment module 460 may update the flowassignment data structure 472 accordingly. The cluster master may also configure the selected cluster device to begin processing the flow (e.g., transmit a message via acluster communication interface 456 to configure the selected device to begin processing the network flow). In addition, when the cluster is operating in direct-forward mode, the flow assignment module 460 (or the device assigned to handle the flow) may configure theinterface 420 to route traffic associated with the flow directly to the device assigned thereto. - The cluster devices that are actively processing network flows may be configured to transmit flow, run-time synchronization data to the cluster master. The cluster master (device 410) may aggregate the flow, run-time synchronization data into
data structure 474 comprising all of the flow, run-time synchronization of all the cluster devices. The flow, run-time synchronization data may include information needed to handle the corresponding network flow (e.g., session information, state information, security keys, sequence number, etc.). The flow, run-time synchronization data may be transmitted to thedevice 410 via the cluster communication interface(s) 456 or anotherinterface device 410 may be configured to maintain the flow, run-time synchronization data to provide for flow failover between cluster devices. As discussed above, when a cluster device fails, the flows assigned thereto may be transitioned to another replacement cluster device. In the transition, the flow, run-time synchronization data corresponding to the transitioning flows may be transmitted to the replacement device, allowing the device to resume handling the flow with minimal disruption. - As discussed above, when a
cluster device 410 is acting as a cluster master, thedevice 410 may manage shared cluster resources, such as address pools, port pools, and the like. The cluster master (device 410) may also provide shared services, such as a shared IKE module. The shared IKE module may provide callbacks to other cluster devices to negotiate security associations (P1SA, P2SA, and so on), shared keys, and the like. Information relating to the shared resources and/or shared services provided by thedevice 410 may be maintained in a sharedresource data structure 476. - The cluster
configuration data structure 470, flowassignment data structure 472, flow, run-timesynchronization data structure 474, sharedresource data structure 476, and any other data needed for cluster master failover, may be maintained in a global, run-time synchronization data structure 480. When operating as a cluster master, thedevice 410 may synchronize the global, run-time synchronization data structure 480 with other cluster devices (e.g., the backup master device). Synchronizing the data structure 480 may provide for replacement of the cluster master by another cluster device (e.g., the backup master device (not shown)), in the event of a failover. - Accordingly, when the
device 410 is operating as a backup master, thedevice 410 may be configured to receive the global, run-time synchronization data structure 480 (comprisingcluster configuration 470, the flowassignment data structure 472, the flow, run-time synchronization data 474, the sharedresource data structure 476, and any other relevant data) from the cluster master. - The cluster master (device 410) may be configured to synchronize the cluster
configuration data structure 470 to the other cluster devices. Thetraffic processing module 462 may use the clusterconfiguration data structure 470 to process network flows in accordance with the security policy defined therein. However, cluster devices other than the cluster master and backup master may not actively use theflow assignment module 460 and/or may not maintain the flowassignment data structure 472, flow, run-timesynchronization data structure 474, and/or shared resource data structure 480, since these structures are not needed for flow processing. In some embodiments, however, the modules (460, 464, and 466) and data structures (472, 474, and 476) may exist in skeleton form to provide for an efficient transition to a cluster master and/or backup master role within the cluster when needed. - A monitoring and
failover module 464 may be used to monitor cluster devices as described above in conjunction withFIGS. 3C and 3D . Eachcluster device 464, whether operating in the cluster master, backup master, active, or standby role, may implement the monitoring andfailover module 464. The monitoring andfailover module 464 may be configured to generate and transmit status messages from thedevice 410, which, as discussed above, may comprise a health score of the device. Themodule 464 may also be configured to receive status messages from other cluster devices. Information relating to the health score of thedevice 410, as well as status information relating to other cluster devices may be maintained in a monitoring andfailover data structure 478. - When operating as the cluster master, the
device 410 may be configured to provide for device failover within the cluster. For example, when a device handling a particular set of flows fails, the processing tasks assigned thereto may be transitioned to other cluster devices. The monitoring andfailover module 464 may be configured to determine when a failover operation is needed (according to failover criteria, and as discussed above in conjunction withFIG. 3C ). When a device for failover has been identified, the monitoring andfailover module 464, along with theflow assignment module 460, may assign the tasks of the failed over device to one or more replacement devices (as described above in conjunction withFIG. 3D ). The flows may be transitioned to existing, active cluster devices and/or to standby cluster devices that have been activated responsive to the failure. When the new device(s) are selected, the flow, run-time synchronization data 474 associated therewith may be sent to the corresponding replacement devices, which may use the data to resume handling the flows. - If the device being failed over is operating as the backup master, failover may additionally include selecting a new device to act as the backup master (e.g., based upon device health score, address, or the like) as described above. After the backup master is selected, the cluster master may be configured to synchronize the global, run-time synchronization data structure 480 to the new backup master device.
- If the device being failed over is operating as the cluster master, a new cluster master may be selected as described above (e.g., as the backup master, based upon health score, or the like). The global, run-time synchronization data structure 480 may be populated from the backup master and/or failed over cluster master (if available).
- When operating as cluster master, the
device 410 may comprise acluster management module 466, which may be used to synchronize the clusterconfiguration data structure 470 to other cluster devices (not shown), join new devices to the cluster (as described above in conjunction withFIG. 2B ), determine and maintain the licensed capabilities of the cluster, and so on. - As discussed above, when a new computing device (not shown) is communicatively coupled to a
cluster network interface failover module 464 may be configured to also serve as discovery messages. Alternatively, the discovery messages may only be transmitted upon receiving a discovery command (or other command). The configuration command may be received via one or more of the communications interfaces 450 and/or a configuration interface 467 (discussed below). In some embodiments, thedevice 410 may discover a new computing device passively (e.g., by monitoring traffic on theinterface - When a new computing device is discovered, the
cluster manager module 466 of thecluster master device 410 may be configured to initiate a cluster join procedure to add the new device to the cluster as described above in conjunction withFIGS. 2A and 2B . Thecluster management module 466 may be configured to access device-identifying information of the new computing device (e.g., by interrogation, passive monitoring, or other means). Using the device-identifying information, thecluster management module 466 may determine whether the discovered computing device is eligible to join the cluster (e.g., based upon hardware, software, firmware, licensing, or other information about the device). If the computing device is eligible to join the cluster (e.g., is compatible with the other devices in the cluster, is licensed for cluster operation, and so on), thecluster management module 466 may determine a device-specific configuration for the new device, and transmit the device-specific configuration thereto. The device-specific configuration may include thecluster configuration data 470, including identifiers of the cluster devices, cluster addressing information, and the like. The device-specific configuration may also include a role assignment specifying the static role of the new computing device in the cluster, provide device-specific addressing and port assignment information, provide one or more device-specific shared keys for secure cluster communications, and so on. After the transmission, thecluster management module 466 may verify that the new computing device implemented the device-specific configuration (e.g., by a confirmation message, active interrogation, network inspection, or the like). If the new computing device fails to implement the device-specific and/or cluster configuration, the new computing device may be excluded from the cluster. - When the
cluster management module 466 verifies successful implementation of the device-specific and/or cluster configuration, the device may be joined to the cluster (e.g., added to thecluster configuration data 470, which is synchronized with other cluster devices). Joining may comprise providing the new computing device with a shared key (or performing a key exchange protocol) to allow the device to securely communicate with other cluster devices. Upon joining the cluster, the new computing device may then begin performing its assigned role (e.g., be assigned cluster processing tasks, receive cluster synchronization data, and the like). - The
cluster management module 466 of adevice 410 operating as the cluster master may also be configured to determine the licensed capabilities of the cluster. Information defining the licensed capabilities of the cluster may be included in the clusterconfiguration data structure 470, which is synchronized to, and implemented by, the other cluster devices. In some embodiments, the licensed capabilities of the cluster may be defined in a single cluster license. Alternatively, the licensed capabilities of the cluster may be determined by combining the licenses of two or more cluster devices. As discussed above, the combination may be made in a number of different ways, including, but not limited to: a “least capabilities” combination, an additive combination, a logical OR combination, a selective combination (e.g., different combination types of for different licensed features), or the like. - The
cluster management module 466 may use the licensing information to assign static roles to cluster members (as devices are joined to the cluster, as the cluster configuration changes, and so on). For example, devices that do not have their own license may be assigned a static role of “secondary” or standby. Devices that are appropriately licensed may be eligible to be assigned a static role of “primary” or active. In some embodiments, the licensed capabilities of the cluster (defined in a single cluster license, or by combining two or more cluster device licenses) may determine cluster configuration. For instance, if the licensed capabilities of the cluster provide for five active devices, new computing devices may be added to the active role (up to five) regardless of their individual licenses. However, once five active devices are in the cluster, additional devices may be assigned to standby, even if the devices have individual cluster licenses. - In some embodiments, the
cluster management module 466 may provide aconfiguration interface 467, which may comprise a network accessible user interface, an Application Programming Interface (API), an SNMP client, a telnet server, a serial communications interface, a parallel port interface, or the like. Accordingly, in some embodiments, theconfiguration interface 467 may comprise and/or utilize one or more of the communications interfaces 450 (e.g., the communication interfaces 454 communicatively coupled to an internal, or organization network). Alternatively, or in addition, theconfiguration interface 467 may comprise one or more human-machine-interaction (HMI) components (not shown), such as a display, keyboard, mouse, or other input/output devices. - The
configuration interface 467 may allow a human operator, policy manager, or other configurator to interrogate and/or change the configuration of the cluster. When thedevice 410 is operating as a cluster master, theconfiguration interface 467 may be capable of displaying and/or modifying the configuration of the cluster as a whole. Accordingly, theconfiguration interface 467 may be capable of displaying the configuration of all of the computing devices in the cluster, including the health score and other performance indicators thereof, may be capable of setting configuration parameters of all of the computing devices in the cluster, and so on. - In some embodiments, the
configuration interface 467 may implement a “single-device” paradigm, in which the cluster is viewed and managed as a single device. Accordingly, configuration changes made to one cluster device (the cluster master device 410), may be transparently synchronized to other cluster devices (by the cluster management module 466). However, per-device configuration changes may be accessible by interrogating individual cluster devices (e.g., to apply device-specific licensing parameters, view device-specific information, such as health score and the like, and so on). - The cluster management module 466 (along with the configuration interface 467) may provide for efficient cluster updating and maintenance. For example, a command to upgrade or modify the cluster configuration may be received via the
configuration interface 467. The upgrade or modification may require that the devices in the cluster be taken down (e.g., may include a change to device software, firmware, and/or hardware). Responsive to such a request, thecluster management module 466 may implement a cluster upgrade operation in which cluster devices are taken down in an orderly fashion such that the services provided by the cluster are not significantly impacted. - In one example, the
cluster management module 466 may be configured to upgrade or modify cluster standby devices first. If the cluster includes two or more standby devices, the upgrade or modification of may be done such that one or more of the standby devices is available during the upgrade. For example, if there are three standby devices A, B, and C, thecluster management module 466 may configure device A to be upgraded first, while keeping the B and C devices up and then, after the A device is running again, upgrade device B while devices A and C are kept up, and so on. - The
cluster management module 466 may then perform a similar upgrade process on the active cluster devices; thecluster management module 466 may be configured to upgrade the active cluster devices sequentially, taking down only one (or some other subset) of the active devices at a time. As each active device is upgraded or modified, it may be failed over to another active device and/or to a standby device if available. - The
cluster management module 466 may then be configured to perform the modification to the cluster backup master device. The backup master may be failed over to another cluster device before being modified (in a failover operation as described above). A replacement backup master may continue operating as the backup master even after the former backup master has been modified. The selection of the backup master may be made according to a selection criteria as discussed above (e.g., based upon health score, resources, hardware capabilities, or the like). - After modifying the backup master, the
cluster management module 466 may be configured to modify the cluster master device itself. Modifying the cluster master device may comprise failing over the cluster master to another cluster device (e.g., the replacement backup master or another cluster device). After completing the cluster master failover operation (e.g., and selecting a new cluster master), thedevice 410 may be upgraded and rejoined to the cluster. Thedevice 410 may resume acting as the cluster master (e.g., by failing over the temporary cluster master selected above) and/or may resume operation in another role within the cluster (e.g., as a backup master, active, or standby cluster device). -
FIG. 5 is a flow diagram of one embodiment of a method for assigning processing tasks, such as network flow processing, in a cluster, such as the cluster 110 ofFIG. 1 . Themethod 500 may be implemented on a computing device, such as thedevice 410 ofFIG. 4 . Themethod 500 may be implemented using one or more computer-readable and/or computer-executable instructions. The instructions comprising themethod 500 may be implemented as one or more distinct software modules, which may be stored on a computer-readable storage medium, such as a hard disc, optical storage media, memory, or the like. In some embodiments, one or more steps of themethod 500 may be tied to particular machine components, such as computer-readable storage media, communications interfaces, processing modules, or the like. - At
step 510, themethod 500 may start and/or be initialized. Initializing themethod 500 may comprise loading one or more computer-readable instructions from one or more computer-readable storage media, accessing and/or initializing one or more communications interfaces, and the like. - At
step 520, network traffic may be received. The network traffic may have been received via a network interface (e.g.,interface 120 and/or 122 ofFIG. 1 ), such as a hub, switch, router, concentrator or the like. If the cluster ofmethod 500 is operating in “flooding” mode, the traffic may be received by all of the devices in the cluster. If the cluster is operating in “direct forwarding” mode, the traffic may be received only by the cluster master device (or the device configured to handle the flow). - At
step 530, the cluster master may determine whether the network traffic is associated with a known flow (e.g., a flow that is being handled by one of the devices in the cluster). Step 530 may comprise looking up the flow in a flow assignment data structure, such as a table, index, or the like. The flow assignment data structure may provide a mapping between network flows and the cluster devices assigned thereto. In the data structure, a flow may be identified based upon a source address thereof (IP address, MAC address, or the like), flow protocol, flow port, flow security information, or the like. The cluster device assigned to the flow may be identified according to a cluster-specific identifier, MAC address, cluster address (e.g., address of a cluster interface port of the device), IP address, or the like. In some embodiments, the flow assignment data structure may further comprise flow, run-time synchronization data pertaining to the flow, which may include, but is not limited to: flow security association data (P1SA, P2SA), shared key data, user-session data, flow cache, and the like. - Alternatively, or in addition, the flow assignment data structure may include a reference (link, pointer, or the like) to the flow, run-time synchronization data associated therewith.
- If at
step 530, themethod 500 determines that there is no device assigned to handle the flow (e.g., there is no entry for the flow in the flow assignment data structure, the device identifier associated with the flow entry has not been set, the device that was handling the flow has been failed over, or the like), themethod 500 may continue atstep 540; otherwise, if a device is already actively handling the flow, themethod 500 may continue atstep 535. - At
step 535, since the network traffic is associated with a flow that has already been assigned to a device in the cluster that is actively handling the flow (e.g., has not failed), the traffic may be ignored by themethod 500. Accordingly, themethod 500 may terminate atstep 560 and/or may continue atstep 520 when additional network traffic is received. - At
step 540, themethod 500 may select a cluster device to handle the flow. Selecting a cluster device may comprise identifying which devices in the cluster are eligible to handle the flow (e.g., are active, based upon flow assignment rules discussed below, and so on), evaluating a load and/or health of the devices in the cluster, and the like. In some embodiments, the cluster master and/or master backup devices may be available to handle network traffic flows. Alternatively, the cluster master and/or backup master may be dedicated to managing the state of the cluster and not processing network traffic flows. Eligibility of a cluster device to handle a particular flow may be based upon one or more flow assignment rules (discussed below). The flow assignment rules may determine eligibility based upon whether another cluster device has already been assigned a network flow that is related to the new network flow, shares security information with the new network flow, or the like. If two or more cluster devices are eligible to handle the new network flow, the selection ofstep 540 may comprise evaluating a selection criteria to select one of the two or more devices. The selection criteria may be based upon device health score, processing load, random (e.g., round robin), or some other metric. - At
step 550, the flow assignment data structure may be updated to reflect the assignment. Atstep 550, if the cluster is operating in direct forward mode, the cluster interface may be configured to forward the flow traffic directly to the device assigned to handle the flow (e.g., using a direct forward request or other configuration message). - At
step 560, the flow may terminate and/or may continue atstep 520 when additional network traffic is received. - As discussed above, assigning a flow to a device may comprise determining whether which devices are eligible to handle the flow and/or evaluating one or more flow assignment rules. A device may be eligible to handle a flow if the health score of the device indicates that handling the flow would not cause the device to become unstable, perform poorly, adversely affect quality of service (QoS) for other flows handled thereon, or the like. Similarly, a flow assignment rule may determine which devices are eligible to handle a particular flow based upon other flow assignments. For example, a flow assignment rule may specify that all flows that use the same tunnel go through the same cluster device. Consolidating flows in this manner may provide for protection against anti-replay attacks and facilitate dead peer detection (DPD).
-
FIG. 6A is a block diagram illustrating one example of related flow assignment in which related forward and reverse flows are assigned to the same cluster device. In theFIG. 6A example, forward and reverseflows computing device 633 within anorganization 630 and acomputing device 646 in thenetwork 640. The cluster master device (device 612) may implement a flow assignment rule that assigns related forward and reverse flows to the same cluster device. Accordingly, in theFIG. 6A example, both of theflows device 2 614. Alternatively, theflows device flows device 614 and flow 682 being assigned todevice 616, and so on). -
FIG. 6B is a block diagram depicting another example of related flow assignment in which related flows are assigned to the same cluster device. The related flows 681, 682, 683, and 684 depicted inFIG. 6B may be related to one another (e.g., may be the data and control channels of a file transfer protocol (FTP) connection, may be related to the same voice over IP connection (VOIP), or the like). A flow assignment rule may specify that all of the related flows are to be assigned to the same cluster device. As shown inFIG. 6B , relatedflows computing device 633 in theorganization network 630 and anexternal computing device 646. According to the flow assignment rule, all of theflows device 2 614). Alternatively, theflows flows flows device 2 614 and flows 683 and 684 being assigned todevice 3 616, and so on). -
FIG. 6C is a block diagram depicting an example of security flow assignment, in which flows associated with the same tunnel are assigned to the same cluster device. In theFIG. 6C example, a tunnel 680 (e.g., an SSH tunnel, or the like) may be established between acomputing device 633 in theorganization network 630 and acomputing device 646 in thenetwork 640. Thetunnel 680 may comprise one ormore flows flows tunnel 680 are assigned to the same cluster device (device 2 614). Accordingly, the flow assignment rule may prevent thetunnel 680 flows 681, 682, 683, and 684 from being split up between thedevices -
FIG. 6D is a block diagram illustrating another example of security flow assignment in which flows associated with the same inbound or outbound security association are assigned to the same cluster device, whereas the inbound and/or outbound tunnel flows may be assigned to different cluster devices. As shown inFIG. 6D , flows 681 and 682 use the sameoutbound SA 680 and flows 687 and 688 use the same inbound security association. Accordingly, the flow assignment rule may specify that theflows device 2 614), and theflows device 3 616). The flow assignment rule illustrated inFIG. 6D may prevent theflows flows - Alternatively, a flow assignment rule may specify that all of the inbound and outbound flows associated with a particular security association be assigned to the same device.
FIG. 6E shows an example of this type of flow assignment. As shown inFIG. 6E , theflows device 3 616). The flow assignment illustrated inFIG. 6E may prevent theflows - A cluster according to the teachings of this disclosure may be configured to provide tunnel switching (e.g., provide for communication between two or more remote peers). When used for tunnel switching, the cluster master device may implement a flow assignment rule configured to specify that the flows associated with the tunnel switch connection be handled by the same cluster device. A restriction rule of this type may reduce cluster communication traffic (e.g., prevent tunnel switch data from being transferred between cluster devices).
FIG. 6F is a block diagram that illustrates another example of a related flow assignment in which the flows associated with the same tunnel switch are assigned to the same device. In theFIG. 6F example,remote peer devices flows remote peer 646, and theflows remote peer 647. Theflows cluster master device 612 may identify theflows flows device 2 614). Accordingly, all of the flows comprising the tunnel switch (681, 682, 687, and 688) may be assigned todevice 2 614. The flow assignment rule may prevent the flows from being spread to other devices (e.g., preventflows device 2 614), whileflows device 3 616)). - Additional flow assignment rules may be imposed when dealing with IP security tunnels (IP Sec). A single cluster device may be configured to establish an IPSec tunnel using an IPSec module, which may be implemented as a kernel module of the device (e.g., in a kernel module of the
traffic processing module 462 ofFIG. 4 ). The IPSec module may be communicatively coupled to an IKE module, which may be used to perform key exchange operations used to setup an IPSec session and/or tunnel. In some embodiments, the IKE module may be implemented as a user space process (e.g., a user space process of the traffic processing module 462). For example, the IKE module may be configured to create Phase II Security Associations (P2SA) for use by the IPSec kernel module. The IPSec module, while handling traffic on the IPSec tunnel managed thereby, may periodically request key updates from the IKE module (for a rekey operation), for dead peer detection, as well as termination of a IPSec session or tunnel. -
FIG. 7 is a block diagram of one example of a cluster 710 comprising a single IKE. The cluster 710 includes asingle IKE 749 to which each of theIPSec modules cluster devices 712, 714, 716, and 718 are linked (e.g., via respective cluster interface ports (not shown) communicatively coupled to a network device, such as a router, switch, concentrator, or the like). Only theIKE 749 of the cluster master (device 712) may be active. The other devices 714, 716, and/or 718 may include an IKE module (not shown), which may be activated in the event the device is elected to operate as the cluster master. Accordingly, only theIKE 749 of thecluster master 712 may perform IKE key exchanges with peer computing devices (not shown). TheIKE 749 may perform all IKE operations for the other cluster devices 714, 716, and 718 including, but not limited to: P1SA negotiations, P2SA negotiations, rekey operations, dead peer detection, and the like. - The
IKE 749 may generate P2SAs as needed by the cluster devices 714, 716, and/or 718 (e.g., in order to establish an IPSec tunnel between the deice 714, 716, and/or 718 and an external peer). After generating a P2SA for a cluster device (e.g., device 714), thecluster master 712 may transmit the PS2A thereto. The cluster device may then handle the IPSec flow accordingly (e.g., using the P2SA generated by the IKE 749). In some embodiments, thecluster master 712 may implement a flow assignment rule, in which all flows that use a particular P2SA are assigned to a particular cluster device. For example, if theIKE 749 generates a particular P2SA for the cluster device 714, and the P2SA is subsequently used in another flow, the cluster master may be configured to assign the new flow to the cluster device 714 (the device that holds the particular P2SA). Similarly, when a flow is reassigned from a first cluster device (e.g., device 714) to a second cluster device (e.g., device 716), the PS2A and other IPSec information relevant to the reassigned flows may be transferred from thecluster master device 712 to the second device (device 716). Following the reassignment, subsequent flows that use the transferred P2SA may be assigned to the second device. - As shown in
FIG. 7 , each of the IPSec modules 748B, 748C, and 748D may be communicatively coupled to theIKE 749. As such, the IPSec modules 748B, 748C, and 748D may perform callbacks to theIKE 749 in order to maintain P2SA sequence number information, perform rekey operations, perform DPD (e.g., DPD hello operations), and the like. The communication link between the IPSec modules 748B, 748C, and 748D may be implemented using respective cluster interface ports of the devices 714, 716, and 718, which may provide for fast and efficient communications. - Since the
IKE 749 maintains IPSec data for all of the devices in the cluster 710, thecluster master 712 may be capable of performing more granular load balancing (all of the devices in the cluster 710 use thesame IKE 749 and, as such, thedevices 712, 714, 716, and 718 may “appear” to external peers as a single device for the purposes of IPSec). For example, IPSec tunnels (such as VPN tunnels or the like) may be assigned to different devices within the cluster 710. Therefore, although flows that use the same P1SA and/or P2SA information may be restricted to be handled by the same cluster device, other flows using different key security association information may be spread across the cluster 710 (e.g., the cluster device 714 may handle a first set of VPN connections, while the cluster device 716 handles a second set of VPN connections, and so on), including flows associated with the same peer. Moreover, IPSec security protocols, such as DPD, rekey, and the like may be implemented across all of the devices in the cluster 710. -
FIG. 8 is a block diagram depicting a distributed IKE approach. In theFIG. 8 example, each of thedevices 812, 814, 816, and 818 in the cluster 810 may implement itsown IKE module IPSec modules 847A-847D communicates with itsrespective IKE 851A-851D. Accordingly, IKE information need not be transmitted between cluster devices. As shown inFIG. 8 , theIPSec modules 847A-847D are not communicatively coupled to one another; however, the devices themselves (812, 814, 816, and 818) may be communicatively coupled for other reasons (e.g., the synchronize cluster configuration data, flow, run-time synchronization, global run-time synchronization data, and the like). - Since each
cluster device 812, 814, 816, and 818 implements itsown IKE 851A-851 D, the devices may not appear to external peers as a “single device” as in theFIG. 7 example. Therefore, thecluster master 812 may implement a flow assignment rule specifying that all IPSec flows of a particular peer be assigned to thesame cluster device 812, 814, 816, and/or 818. -
FIG. 9A is a block diagram 900 depicting an example of flow assignment in a cluster comprising a shared IKE module (e.g., the cluster 710 ofFIG. 7 ). In theFIG. 9A example, aremote peer 933 establishes IPSec flows 981, 982, 983, and 984 with the cluster 910. Since theIPSec modules 947A-947D of thecluster devices 912, 914, 916, and 918 use a common IKE 749 (of the cluster master device 912), the cluster 910 may appear to be a single device to theremote peer 933 for the purposes of IPSec (e.g., sequence number, rekey, DPD, etc.). Therefore, thecluster master device 912 may assign flows of thepeer 933 to different cluster devices. Theflows 981 and 982 (which may share a common P2SA) may be handled by the cluster device 914, and theflows 983 and 984 (which may share a different, common P2SA) may be handled by the cluster device 916. -
FIG. 9B is a block diagram 901 depicting an example of flow assignment in a cluster comprising distributed IKE modules (e.g., the cluster 810 ofFIG. 8 ). As inFIG. 9A , aremote peer 933 establishes IPSec flows 981, 982, 983, and 984 with the cluster 911. The cluster 911 is configured to implement distributed IKEs and, as such, each of thecluster devices 912, 914, 916, and 918 implements itsown IKE 951A-951D. Accordingly, the cluster devices may not appear as a single device to thepeer 933 for the purposes of IPSec. Accordingly, thecluster master 912 may implement a flow assignment restriction rule specifying that all IPSec flows from the peer be handled by the same cluster device. As shown inFIG. 9B , all of the IPSec flows 981, 982, 983, and 984 are handled by the cluster device 914. According to the flow assignment restriction, the IPSec flows of thepeer 933 may not be spread across the cluster devices (e.g., if the device 914 is handling flows 981 and 982, the device 916 may not handleflows 983 and/or 984). - A cluster according to the teachings of this disclosure may be configured to provide multiple wide area network VPN configurations. Each WAN may have a respective local and remote gateway pairings that may be failed over to one another. The local/remote gateway pairs may be defined in an IKE policy (which may be part of a cluster configuration, security policy, or the like). A flow assignment rule may be implemented to assign all flows associated with a particular IKE policy to the same cluster device (e.g., each cluster device may be responsible for a different, respective IKE group policy). Alternatively, the cluster master (or other device) may implement a plurality of shared IKE modules, one IKE per IKE group policy. Referring to
FIG. 7 , thecluster master device 712 may implementmultiple IKE modules 749; one for each IKE group policy. TheIPSec modules 747A-747D of thecluster devices 712, 714, 716, and 718 may be configured to synchronize IKE data with each of the respective IKE modules, on a per-flow basis (e.g., may select the IKE associated with the IKE group policy of a particular flow). -
FIG. 10 is a flow diagram of another embodiment of a method for assigning flows to cluster devices. Themethod 1000 may be implemented on a computing device, such as thedevice 410 ofFIG. 4 . Themethod 1000 may be implemented using one or more computer-readable and/or computer-executable instructions. The instructions comprising themethod 1000 may be implemented as one or more distinct software modules, which may be stored on a computer-readable storage medium, such as a hard disc, optical storage media, memory, or the like. In some embodiments, one or more steps of themethod 1000 may be tied to particular machine components, such as computer-readable storage media, communications interfaces, processing modules, or the like. - At step 1010, the
method 1000 may start and/or be initialized. Initializing themethod 1000 may comprise loading one or more computer-readable instructions from one or more computer-readable storage media, accessing and/or initializing one or more communications interfaces, and the like. - At
step 1020, network traffic may be received. The network traffic may have been received via a network interface (e.g.,interface 120 and/or 122 ofFIG. 1 ), such as a hub, switch, router, concentrator, or the like. If the cluster ofmethod 1000 is operating in “flooding” mode, the inbound traffic may be received by all of the devices in the cluster. If the cluster is operating in “direct forwarding” mode, the traffic may be received only by the cluster master device (or the device currently assigned to handle the flow). - At
step 1030, the cluster master may determine whether the network traffic is associated with a known flow (e.g., a flow that is being handled by one of the devices in the cluster).Step 1030 may comprise looking up the flow in a flow assignment data structure, such as a table, index, or the like. The flow assignment data structure may provide a mapping between network flows and the cluster devices assigned thereto. In the data structure, a flow may be identified based upon a source address thereof (IP address, MAC address, or the like), flow protocol, flow port, flow security information, or the like. The cluster device assigned to the flow may be identified according to a cluster-specific identifier, MAC address, cluster address (e.g., address of a cluster interface port of the device), IP address, or the like. In some embodiments, the flow assignment data structure may further comprise flow, run-time synchronization data pertaining to the flow, which may include, but is not limited to: flow security association data (P1SA, P2SA), shared key data, user-session data, flow cache, and the like. Alternatively, or in addition, the flow assignment data structure may include a reference (link, pointer, or the like) to the flow, run-time synchronization data associated therewith. - If at
step 1030, themethod 1000 determines that there is no device assigned to handle the flow (e.g., there is no entry for the flow in the flow assignment data structure, the device identifier associated with the flow entry has not been set, the device that was handling the flow has been failed over, or the like), themethod 1000 may continue at step 1040; otherwise, if a device is already actively handling the flow, themethod 1000 may continue atstep 1035. - At
step 1035, since the network traffic is associated with a flow that has already been assigned to cluster device that is actively handling the flow (e.g., has not failed), the traffic may be ignored by themethod 1000. Accordingly, themethod 1000 may terminate atstep 1070 and/or may continue atstep 1020 when additional network traffic is received. - At
step 1043, one or more device(s) that are available to handle the flow may be identified. The devices may be identified according to a set of one or more flow assignment rules. The flow assignment rules applied atstep 1043 may include, but are not limited to: related flow assignment rules, and security flow assignment rules. - Related flow assignment rules may specify that flows that are related to one another be assigned to the same cluster device. The assignment of related flows to the same device may provide for more efficient flow processing, provide for better firewall management (e.g., pin-hole logic for inbound flow processing), and so on. For example, a related flow assignment rule may specify that all the flows associated with a tunnel switch connection (discussed above) be assigned to the same device. The assignment may prevent tunnel switch traffic from being transmitted between cluster devices, which may improve the performance of the tunnel switch (and the cluster generally). Other examples of related flow assignment rules include, but are not limited to: rules to assign forward and reverse flows to the same cluster device (which may provide for improved TCP reset protection), rules to assign related flows to the same device (e.g., flows associated with the same FTP, VOIP, or similar connection), and the like. For example, the data and control flows of the same FTP connection may be assigned to the same device, which may provide for more efficient and secure network traffic and flow processing (e.g., protocol inspection logic that opens the data channel pin-hole may be more efficient and secure when implemented on the device that is also processing the FTP connection control channel flows).
- Security flow assignment rules may perform flow assignment based upon flow security properties. For example, a security flow assignment rule may cause flows that use the same secure tunnel (e.g., SSH or the like) to be assigned to the same cluster device. As discussed above, the assignment may allow for PS2A sequence number synchronism between flows to prevent replay attacks and/or to provide for DPD. In another example, a security flow assignment rule may specify that flows using a common security association (inbound and/or outbound security association) be assigned to the same device. In embodiments implementing a single IKE, security flow assignment rules may allow for load balancing on a per-tunnel basis (e.g., allow flows from the same peer, but using different secure tunnels, to be handled by different cluster devices). In other embodiments, in which each device implements its own IKE, a security flow assignment rule may specify that all secure flows associated with a particular peer be assigned to the same cluster device.
- After applying the flow assignment rules, the
method 1000 may continue to step 1047. Atstep 1047, if (according to the flow assignment rules applied at step 1043) only a single device is available to handle the new flow, themethod 1000 may continue at step 1060; otherwise, themethod 1000 may continue atstep 1050. - At
step 1050, one of the two or more available cluster devices identified atstep 1043 may be selected to handle the flow. As discussed above, the selection may be based upon a selection criteria, such as device health score, processing load, random selection, round robin, or the like. After selection of the device to handle the new flow, themethod 1000 may continue at step 1060. - At step 1060, the new flow may be assigned to the identified cluster device. Assigning the flow may include, but is not limited to: configuring the identified cluster device to handle network traffic associated with the flow (e.g., via a configuration message transmitted thereto via a cluster communications port or the like), updating a flow assignment data structure to reflect the flow assignment, configuring a network element to direct-forward network traffic related to the flow to the identified device, and the like.
- At
step 1070, themethod 1000 may end until additional inbound network traffic is received. - The above description provides numerous specific details for a thorough understanding of the embodiments described herein. However, those of skill in the art will recognize that one or more of the specific details may be omitted, or other methods, components, or materials may be used. In some cases, operations are not shown or described in detail.
- Furthermore, the described features, operations, or characteristics may be combined in any suitable manner in one or more embodiments. It will also be readily understood that the order of the steps or actions of the methods described in connection with the embodiments disclosed may be changed as would be apparent to those skilled in the art. Thus, any order in the drawings or Detailed Description is for illustrative purposes only and is not meant to imply a required order, unless specified to require an order.
- Embodiments may include various steps, which may be embodied in machine-executable instructions to be executed by a general-purpose or special-purpose computer (or other electronic device). Alternatively, the steps may be performed by hardware components that include specific logic for performing the steps, or by a combination of hardware, software, and/or firmware.
- Embodiments may also be provided as a computer program product including a computer-readable medium having stored instructions thereon that may be used to program a computer (or other electronic device) to perform processes described herein. The computer-readable medium may include, but is not limited to: hard drives, floppy diskettes, optical disks, CD-ROMs, DVD-ROMs, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, solid-state memory devices, or other types of media/machine-readable medium suitable for storing electronic instructions.
- As used herein, a software module or component may include any type of computer instruction or computer executable code located within a memory device and/or computer-readable storage medium. A software module may, for instance, comprise one or more physical or logical blocks of computer instructions, which may be organized as a routine, program, object, component, data structure, etc., that perform one or more tasks or implements particular abstract data types.
- In certain embodiments, a particular software module may comprise disparate instructions stored in different locations of a memory device, which together implement the described functionality of the module. Indeed, a module may comprise a single instruction or many instructions, and may be distributed over several different code segments, among different programs, and across several memory devices. Some embodiments may be practiced in a distributed computing environment where tasks are performed by a remote processing device linked through a communications network. In a distributed computing environment, software modules may be located in local and/or remote memory storage devices. In addition, data being tied or rendered together in a database record may be resident in the same memory device, or across several memory devices, and may be linked together in fields of a record in a database across a network.
- It will be understood by those having skill in the art that many changes may be made to the details of the above-described embodiments without departing from the underlying principles of the disclosure.
Claims (31)
1. A computer-readable storage medium comprising computer-readable instructions configured to cause a computing device to perform a method for monitoring a cluster comprising a plurality of communicatively coupled computing devices, the method comprising:
within each of the cluster computing devices:
calculating a health score of a computing device, the health score comprising an indication of the operational status of the computing device,
transmitting a status message receivable by the other computing devices in the cluster, the status message comprising the health score, and
receiving status messages from other computing devices in the cluster, each status message comprising a computing device health score; and
a subset of the plurality of computing devices identifying one of the plurality of computing devices to remove from the cluster in a failover operation based upon the status messages.
2. The computer-readable storage medium of claim 1 , wherein the cluster comprises a computing device configured to operate as a cluster master and a computing device configured to operate as a backup master, wherein the cluster master computing device is configured to maintain a global, run-time synchronization data structure comprising run-time synchronization data associated with processing tasks assigned to the plurality of computing devices in the cluster, and wherein the cluster master is configured to synchronize the global, run-time synchronization data structure to the backup master computing device, the method further comprising:
transitioning the backup master to operate as the cluster master when the cluster master is identified to be removed from the cluster; and
selecting another one of the plurality of computing devices in the cluster to act as the backup master.
3. The computer-readable storage medium of claim 1 , the method further comprising,
within a subset of the computing devices in the cluster:
maintaining run-time synchronization data associated with each of a plurality of tasks implemented by a computing device, and
transmitting the run-time synchronization data to a cluster master computing device.
4. The computer-readable storage medium of claim 1 , the method further comprising:
selecting a replacement computing device from the plurality of computing devices in the cluster to perform a processing task assigned to the identified computing device; and
transitioning the processing task to the replacement computing device.
5. The computer-readable storage medium of claim 4 , wherein the selection of the replacement computing device is made using the status messages.
6. The computer-readable storage medium of claim 4 , wherein the processing task is associated with run-time synchronization data, the method further comprising transferring the associated run-time synchronization data to the replacement computing device.
7. The computer-readable storage medium of claim 4 , the method further comprising:
maintaining a task assignment data structure comprising mappings between cluster processing tasks and respective cluster computing devices assigned thereto; and
updating the task assignment data structure to map the processing task to the replacement computing device.
8. The computer-readable storage medium of claim 7 , the method further comprising maintaining a global, run-time synchronization data structure comprising run-time synchronization data associated with processing tasks implemented by the plurality of computing devices in the cluster.
9. The computer-readable storage medium of claim 8 , wherein the cluster comprises a computing device configured to operate as a backup master, the method further comprising synchronizing the global, run-time synchronization data structure to the backup master computing device.
10. The computer-readable storage medium of claim 4 , wherein the replacement computing device is configured to operate in standby mode in which the replacement computing device is not available to perform cluster processing tasks, the method further comprising configuring the replacement computing device to operate in active mode in which the selected computing device is available to perform cluster processing tasks.
11. The computer-readable storage medium of claim 10 , the method further comprising licensing the replacement computing device to operate in active mode.
12. The computer-readable storage medium of claim 1 , wherein the identification of the computing device to remove from the cluster is based upon a health score thereof.
13. The computer-readable storage medium of claim 12 , wherein a computing device is identified to be removed from the cluster when a health score thereof is less than a threshold.
14. The computer-readable storage medium of claim 12 , wherein a computing device is identified to be removed from the cluster when a health score thereof is maintained less than a threshold for a threshold time period.
15. The computer-readable storage medium of claim 12 , wherein a computing device is identified to be removed from the cluster when a status message from the computing device is not received within a threshold time period.
16. The computer-readable storage medium of claim 1 , wherein the health score comprises an indicator of application-layer performance of a corresponding computing device.
17. The computer-readable storage medium of claim 1 , wherein the health score comprises an indicator of resource usage of the corresponding computing device.
18. The computer-readable storage medium of claim 1 , wherein the health score comprises indications of application-layer performance, communications interface performance, and device resource status.
19. The computer-readable storage medium of claim 1 , the method further comprising:
generating a health score indicating that the computing device should be removed from the cluster responsive to detecting a fault in an application module of a computing device; and
transmitting a status message comprising the generated health score.
20. The computer-readable storage medium of claim 1 , the method further comprising:
generating a health score indicating that the computing device should be removed from the cluster responsive to receiving a failover command at a computing device; and
transmitting a status message comprising the generated health score.
21. A system comprising:
a cluster communications interface; and
a cluster comprising a plurality of communications devices communicatively coupled to the communications interface, each of the plurality of computing devices comprising a cluster monitoring and failover module configured to calculate a health score of a computing device, the health score based upon application-layer performance characteristics of the computing device, to transmit a status message on the cluster communications interface, to receive status messages from other cluster computing devices on the cluster communications interface, and to identify a computing device to be removed from the cluster based using the status messages.
22. The system of claim 21 , wherein one of the plurality of the cluster computing devices is configured to operate as a cluster master and is configured to maintain a global, run-time synchronization data structure comprising run-time synchronization data associated with processing tasks assigned to the cluster computing devices.
23. The system of claim 22 , wherein a subset of the cluster computing devices are configured to transmit run-time synchronization data associated with processing tasks associated thereto to the cluster master computing device.
24. The system of claim 23 , wherein the cluster master computing device is configured to receive run-time synchronization data from the cluster computing devices and to aggregate the run-time synchronization data in the global, run-time synchronization data structure.
25. The system of claim 22 , wherein the cluster master is configured to select a replacement computing device to perform a processing task assigned to the identified computing device, the processing task being associated with run-time synchronization data, and wherein the cluster master computing device is configured to access the associated run-time synchronization data in the global, run-time synchronization data structure and to provide the associated run-time synchronization data to the replacement computing device.
26. The system of claim 25 , wherein the cluster master is configured to maintain a processing task assignment data structure comprising mappings between processing tasks and the cluster computing devices assigned thereto, and wherein the cluster master is configured to update the processing task assignment data structure to indicate that the processing task is assigned to the replacement device.
27. The system of claim 22 , wherein one of the plurality of cluster computing devices, other than the cluster master computing device, is configured to operate as a backup master, and wherein the cluster master computing device is configured to synchronize the global, run-time synchronization data structure to the backup master computing device.
28. A method for monitoring a cluster comprising a plurality of communicatively coupled computing devices, the method comprising:
within each of the cluster computing devices:
calculating a health score of a cluster computing device, the health score comprising a status indicator of one or more applications running on the computing device,
transmitting a status message to a subset of the plurality of cluster computing devices, the transmitted status message comprising the health score, and
receiving status messages from other cluster computing devices, each status message comprising a respective health score, and
a subset of the plurality of computing devices identifying one of the cluster computing devices to be removed from the cluster in a failover operation based upon the status messages, the failover operation comprising:
selecting a replacement cluster computing device to perform a processing task assigned to the identified computing device,
transitioning the processing task to the replacement computing device by providing the replacement cluster computing device with run-time synchronization data associated with the processing task, and
updating a processing task assignment data structure to indicate that the processing task is assigned to the replacement computing device.
29. The method of claim 28 , wherein one of the cluster computing devices is a cluster master, and another one of the cluster computing devices is a backup master, the method further comprising:
the cluster master aggregating run-time synchronization data associated with processing tasks assigned to the cluster computing devices in a global, run-time synchronization data structure;
the cluster master synchronizing the global, run-time synchronization data structure to the backup master; and
the backup master replacing the cluster master when the cluster master is removed from the cluster.
30. A method for managing a cluster comprising a plurality of communicatively coupled computing devices by a cluster master, the method comprising:
receiving a command to modify a configuration of each of the cluster computing devices, wherein the modification of a cluster computing device comprises temporarily removing the computing device from the cluster;
for each of the cluster computing devices:
selecting another cluster computing device to implement one or more processing tasks of the cluster computing device,
transitioning the one or more processing tasks to the selected cluster computing device,
modifying the cluster computing device, and
preventing modification of the selected cluster computing device during modification of the cluster computing device.
31. The method of claim 30 , wherein the cluster comprises a backup master, the method further comprising:
selecting another one of the cluster computing devices to replace the backup master;
replacing the backup master with the selected cluster computing device;
modifying the backup master; and
preventing modification of the selected computing device during the modification of the backup master.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/643,548 US20100162036A1 (en) | 2008-12-19 | 2009-12-21 | Self-Monitoring Cluster of Network Security Devices |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13907808P | 2008-12-19 | 2008-12-19 | |
US12/643,548 US20100162036A1 (en) | 2008-12-19 | 2009-12-21 | Self-Monitoring Cluster of Network Security Devices |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100162036A1 true US20100162036A1 (en) | 2010-06-24 |
Family
ID=42267865
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/643,378 Active 2030-05-28 US8316113B2 (en) | 2008-12-19 | 2009-12-21 | Cluster architecture and configuration for network security devices |
US12/643,663 Active 2030-09-24 US8392496B2 (en) | 2008-12-19 | 2009-12-21 | Cluster architecture for network security processing |
US12/643,548 Abandoned US20100162036A1 (en) | 2008-12-19 | 2009-12-21 | Self-Monitoring Cluster of Network Security Devices |
US13/682,259 Abandoned US20130173766A1 (en) | 2008-12-19 | 2012-11-20 | Cluster architecture and configuration for network security devices |
US13/784,476 Active 2030-04-18 US9203865B2 (en) | 2008-12-19 | 2013-03-04 | Cluster architecture for network security processing |
US14/956,188 Abandoned US20160164764A1 (en) | 2008-12-19 | 2015-12-01 | Cluster architecture for network security processing |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/643,378 Active 2030-05-28 US8316113B2 (en) | 2008-12-19 | 2009-12-21 | Cluster architecture and configuration for network security devices |
US12/643,663 Active 2030-09-24 US8392496B2 (en) | 2008-12-19 | 2009-12-21 | Cluster architecture for network security processing |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/682,259 Abandoned US20130173766A1 (en) | 2008-12-19 | 2012-11-20 | Cluster architecture and configuration for network security devices |
US13/784,476 Active 2030-04-18 US9203865B2 (en) | 2008-12-19 | 2013-03-04 | Cluster architecture for network security processing |
US14/956,188 Abandoned US20160164764A1 (en) | 2008-12-19 | 2015-12-01 | Cluster architecture for network security processing |
Country Status (2)
Country | Link |
---|---|
US (6) | US8316113B2 (en) |
WO (3) | WO2010071882A2 (en) |
Cited By (180)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100169446A1 (en) * | 2008-12-19 | 2010-07-01 | Watchguard Technologies, Inc. | Cluster Architecture and Configuration for Network Security Devices |
US20110090896A1 (en) * | 2009-10-15 | 2011-04-21 | Bob Bradley | Methods for synchronizing data in a network |
US20110093536A1 (en) * | 2009-10-15 | 2011-04-21 | Qualcomm Incorporated | Group owner selection with crossing requests |
US20110119487A1 (en) * | 2009-11-13 | 2011-05-19 | Velocite Systems, LLC | System and method for encryption rekeying |
US20110145422A1 (en) * | 2009-12-16 | 2011-06-16 | Duisenberg Kenneth C | Management processors cooperating to control partition resources |
US20110179342A1 (en) * | 2010-01-18 | 2011-07-21 | Ls Industrial Systems Co., Ltd. | Communication error monitoring system of power device based on ethernet and method thereof |
US20110239050A1 (en) * | 2010-03-23 | 2011-09-29 | Computer Associates Think, Inc. | System and Method of Collecting and Reporting Exceptions Associated with Information Technology Services |
US20120101968A1 (en) * | 2010-10-22 | 2012-04-26 | International Business Machines Corporation | Server consolidation system |
WO2012058370A1 (en) * | 2010-10-29 | 2012-05-03 | Lockheed Martin Corporation | Physical layer photonic protocol switch |
US20120179770A1 (en) * | 2011-01-11 | 2012-07-12 | A10 Networks, Inc. | Virtual application delivery chassis system |
US20120191826A1 (en) * | 2011-01-26 | 2012-07-26 | Rony Gotesdyner | Device-Health-Based Dynamic Configuration of Network Management Systems Suited for Network Operations |
US20120209937A1 (en) * | 2010-12-14 | 2012-08-16 | International Business Machines Corporation | Method for operating a node cluster system in a network and node cluster system |
US20120317621A1 (en) * | 2011-06-09 | 2012-12-13 | Canon Kabushiki Kaisha | Cloud system, license management method for cloud service |
US20120331334A1 (en) * | 2010-03-31 | 2012-12-27 | Fujitsu Limited | Multi-cluster system and information processing system |
US20130029716A1 (en) * | 2010-04-12 | 2013-01-31 | Lg Electronics Inc. | Apparatus and method for performing group-based m2m communication |
US20130067093A1 (en) * | 2010-03-16 | 2013-03-14 | Optimi Corporation | Determining Essential Resources in a Wireless Network |
US20130191340A1 (en) * | 2012-01-24 | 2013-07-25 | Cisco Technology, Inc.,a corporation of California | In Service Version Modification of a High-Availability System |
US20130346548A1 (en) * | 2012-06-26 | 2013-12-26 | International Business Machines Corporation | Management of mobile devices leveraging location based cooperation |
US20140006502A1 (en) * | 2012-07-02 | 2014-01-02 | Ebay, Inc. | System and Method for Clustering of Mobile Devices and Applications |
EP2731300A1 (en) * | 2011-07-21 | 2014-05-14 | Huawei Technologies Co., Ltd. | Interface register method and device for network device to join cluster system |
US20140149784A1 (en) * | 2012-10-09 | 2014-05-29 | Dh2I Company | Instance Level Server Application Monitoring, Load Balancing, and Resource Allocation |
US20140237047A1 (en) * | 2013-02-19 | 2014-08-21 | Allied Telesis, Inc. | Automated command and discovery process for network communications |
US20140273916A1 (en) * | 2013-03-15 | 2014-09-18 | E.F. Johnson Company | Distributed simulcast architecture |
GB2512546A (en) * | 2012-02-02 | 2014-10-01 | Ibm | Distributed fabric management protocol |
US20140304402A1 (en) * | 2013-04-06 | 2014-10-09 | Citrix Systems, Inc. | Systems and methods for cluster statistics aggregation |
EP2797256A1 (en) * | 2013-04-25 | 2014-10-29 | Compal Broadband Networks Inc. | Method for repairing an access device failure |
US20150006633A1 (en) * | 2013-06-28 | 2015-01-01 | Apple Inc. | Operating a cluster of peer-to-peer devices |
US20150049632A1 (en) * | 2013-08-15 | 2015-02-19 | Nicira, Inc. | Hitless Upgrade for Network Control Applications |
US8964601B2 (en) | 2011-10-07 | 2015-02-24 | International Business Machines Corporation | Network switching domains with a virtualized control plane |
WO2014207759A3 (en) * | 2013-06-20 | 2015-03-26 | Tata Consultancy Services Limited | System and method for distributed computation using heterogeneous computing nodes |
US9054989B2 (en) | 2012-03-07 | 2015-06-09 | International Business Machines Corporation | Management of a distributed fabric system |
US9059911B2 (en) | 2012-03-07 | 2015-06-16 | International Business Machines Corporation | Diagnostics in a distributed fabric system |
US9065727B1 (en) * | 2012-08-31 | 2015-06-23 | Google Inc. | Device identifier similarity models derived from online event signals |
US20150237121A1 (en) * | 2014-02-20 | 2015-08-20 | Rovio Entertainment Ltd. | Stateful service with partial replication |
US20150242501A1 (en) * | 2014-02-21 | 2015-08-27 | Streetlights LLC | Social network address book |
US20150264127A1 (en) * | 2014-03-14 | 2015-09-17 | International Business Machines Corporation | Managing fabric priorities across heterogeneous server platforms |
US20150269043A1 (en) * | 2014-03-20 | 2015-09-24 | Netapp Inc. | Storage device health status synchronization |
US20150271014A1 (en) * | 2014-03-21 | 2015-09-24 | Onyx Ccs | Automatic configuration of new components by infrastructure management software |
US9154577B2 (en) | 2011-06-06 | 2015-10-06 | A10 Networks, Inc. | Sychronization of configuration file of virtual application distribution chassis |
US20150294119A1 (en) * | 2014-04-10 | 2015-10-15 | International Business Machines Corporation | Booting a multi-node computer system from a primary node dynamically selected based on security setting criteria |
US9225597B2 (en) | 2014-03-14 | 2015-12-29 | Nicira, Inc. | Managed gateways peering with external router to attract ingress packets |
US20160012525A1 (en) * | 2014-07-14 | 2016-01-14 | Alibaba Group Holding Limited | Method and system for managing residual value in distributed processing of transactions |
US20160036722A1 (en) * | 2010-05-07 | 2016-02-04 | Ziften Technologies, Inc. | Monitoring computer process resource usage |
US9288104B2 (en) | 2011-10-25 | 2016-03-15 | Nicira, Inc. | Chassis controllers for converting universal flows |
US20160078116A1 (en) * | 2012-12-28 | 2016-03-17 | International Business Machines Corporation | Providing high availability in an active/active appliance cluster |
US9300593B2 (en) | 2011-10-25 | 2016-03-29 | Nicira, Inc. | Scheduling distribution of logical forwarding plane data |
US9306843B2 (en) | 2012-04-18 | 2016-04-05 | Nicira, Inc. | Using transactions to compute and propagate network forwarding state |
US9391928B2 (en) | 2010-07-06 | 2016-07-12 | Nicira, Inc. | Method and apparatus for interacting with a network information base in a distributed network control system with multiple controller instances |
US9405488B1 (en) * | 2013-06-21 | 2016-08-02 | Emc Corporation | System and method for storage management |
US20160239350A1 (en) * | 2015-02-12 | 2016-08-18 | Netapp, Inc. | Load balancing and fault tolerant service in a distributed data system |
US9424152B1 (en) * | 2012-10-17 | 2016-08-23 | Veritas Technologies Llc | Techniques for managing a disaster recovery failover policy |
US9432252B2 (en) | 2013-07-08 | 2016-08-30 | Nicira, Inc. | Unified replication mechanism for fault-tolerance of state |
US9451012B1 (en) * | 2011-08-30 | 2016-09-20 | CSC Holdings, LLC | Heterogeneous cloud processing utilizing consumer devices |
US9503371B2 (en) | 2013-09-04 | 2016-11-22 | Nicira, Inc. | High availability L3 gateways for logical networks |
US9516475B2 (en) | 2007-07-19 | 2016-12-06 | E.F. Johnson Technologies, Inc. | Method and system for peer-to-peer communication among sites |
US9525647B2 (en) | 2010-07-06 | 2016-12-20 | Nicira, Inc. | Network control apparatus and method for creating and modifying logical switching elements |
US20170019869A1 (en) * | 2014-02-05 | 2017-01-19 | Lg Electronics Inc. | Method and device for transreceiving signals through nan terminal in wireless communication system |
US9552248B2 (en) * | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9559870B2 (en) | 2013-07-08 | 2017-01-31 | Nicira, Inc. | Managing forwarding of logical network traffic between physical domains |
US9577845B2 (en) | 2013-09-04 | 2017-02-21 | Nicira, Inc. | Multiple active L3 gateways for logical networks |
US20170061163A1 (en) * | 2015-08-28 | 2017-03-02 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Maintaining cryptoprocessor types in a multinode environment |
US9590901B2 (en) | 2014-03-14 | 2017-03-07 | Nicira, Inc. | Route advertisement by managed gateways |
US9602422B2 (en) | 2014-05-05 | 2017-03-21 | Nicira, Inc. | Implementing fixed points in network state updates using generation numbers |
US9647883B2 (en) | 2014-03-21 | 2017-05-09 | Nicria, Inc. | Multiple levels of logical routers |
US20170155575A1 (en) * | 2015-07-16 | 2017-06-01 | Telefonaktiebolaget L M Ericsson (Publ) | Restoration method for an mpls ring network |
US20170171304A1 (en) * | 2015-12-09 | 2017-06-15 | Le Holdings (Beijing) Co., Ltd. | Service updating method and system for server cluster |
US20170195426A1 (en) * | 2015-12-31 | 2017-07-06 | Ricoh Company, Ltd. | Maintaining session across plural providing devices |
US9763260B2 (en) | 2014-11-06 | 2017-09-12 | E.F. Johnson Company | System and method for dynamic channel allocaton |
US9800460B2 (en) | 2014-08-01 | 2017-10-24 | E.F. Johnson Company | Interoperability gateway for land mobile radio system |
US20170315886A1 (en) * | 2010-12-13 | 2017-11-02 | Amazon Technologies, Inc. | Locality based quorum eligibility |
US9887960B2 (en) | 2013-08-14 | 2018-02-06 | Nicira, Inc. | Providing services for logical networks |
US20180077230A1 (en) * | 2016-09-14 | 2018-03-15 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for switching between servers in server cluster |
US9923760B2 (en) | 2015-04-06 | 2018-03-20 | Nicira, Inc. | Reduction of churn in a network control system |
US20180091362A1 (en) * | 2016-08-26 | 2018-03-29 | International Business Machines Corporation | Network-enabled devices |
US9942787B1 (en) | 2016-03-22 | 2018-04-10 | Amazon Technologies, Inc. | Virtual private network connection quality analysis |
US9952885B2 (en) | 2013-08-14 | 2018-04-24 | Nicira, Inc. | Generation of configuration files for a DHCP module executing within a virtualized container |
US9961130B2 (en) | 2014-04-24 | 2018-05-01 | A10 Networks, Inc. | Distributed high availability processing methods for service sessions |
US9984036B2 (en) * | 2013-02-26 | 2018-05-29 | Nec Corporation | Communication system, control apparatus, communication method, and program |
US20180189498A1 (en) * | 2016-12-29 | 2018-07-05 | Paypal, Inc. | Device monitoring policy |
US10021177B1 (en) * | 2011-02-16 | 2018-07-10 | Masque Publishing, Inc. | Peer-to-peer communications |
US10033602B1 (en) | 2015-09-29 | 2018-07-24 | Amazon Technologies, Inc. | Network health management using metrics from encapsulation protocol endpoints |
US10038628B2 (en) | 2015-04-04 | 2018-07-31 | Nicira, Inc. | Route server mode for dynamic routing between logical and physical networks |
US10044581B1 (en) | 2015-09-29 | 2018-08-07 | Amazon Technologies, Inc. | Network traffic tracking using encapsulation protocol |
US10057157B2 (en) | 2015-08-31 | 2018-08-21 | Nicira, Inc. | Automatically advertising NAT routes between logical routers |
US10063458B2 (en) | 2013-10-13 | 2018-08-28 | Nicira, Inc. | Asymmetric connection with external networks |
US20180248805A1 (en) * | 2014-04-24 | 2018-08-30 | A10 Networks, Inc. | Eliminating data traffic redirection in scalable clusters |
US10069689B1 (en) * | 2015-12-18 | 2018-09-04 | Amazon Technologies, Inc. | Cache based on dynamic device clustering |
US10079779B2 (en) | 2015-01-30 | 2018-09-18 | Nicira, Inc. | Implementing logical router uplinks |
US10089127B2 (en) | 2011-11-15 | 2018-10-02 | Nicira, Inc. | Control plane interface for logical middlebox services |
US10091161B2 (en) | 2016-04-30 | 2018-10-02 | Nicira, Inc. | Assignment of router ID for logical routers |
US20180288049A1 (en) * | 2017-03-28 | 2018-10-04 | Amazon Technologies, Inc. | Data access interface for clustered devices |
US20180287801A1 (en) * | 2017-03-28 | 2018-10-04 | Amazon Technologies, Inc. | Efficient device provision |
US10095535B2 (en) | 2015-10-31 | 2018-10-09 | Nicira, Inc. | Static route types for logical routers |
US10103939B2 (en) | 2010-07-06 | 2018-10-16 | Nicira, Inc. | Network control apparatus and method for populating logical datapath sets |
US10110684B1 (en) * | 2013-08-15 | 2018-10-23 | Avi Networks | Transparent network service migration across service devices |
US10110431B2 (en) | 2014-03-14 | 2018-10-23 | Nicira, Inc. | Logical router processing by network controller |
US10117111B2 (en) | 2010-10-21 | 2018-10-30 | E.F. Johnson Company | System and method for simulating a land mobile radio system |
US10122626B2 (en) | 2015-08-27 | 2018-11-06 | Nicira, Inc. | Self-managed overlay networks |
US10129142B2 (en) | 2015-08-11 | 2018-11-13 | Nicira, Inc. | Route configuration for logical router |
CN108874640A (en) * | 2018-05-07 | 2018-11-23 | 北京京东尚科信息技术有限公司 | A kind of appraisal procedure and device of clustering performance |
US10146395B2 (en) * | 2014-05-06 | 2018-12-04 | T-Mobile Usa, Inc. | Quality of experience diagnosis and analysis in wireless communications |
US10153918B2 (en) | 2015-08-27 | 2018-12-11 | Nicira, Inc. | Joining an application cluster |
US10153973B2 (en) | 2016-06-29 | 2018-12-11 | Nicira, Inc. | Installation of routing tables for logical router in route server mode |
US10177994B2 (en) | 2014-08-13 | 2019-01-08 | Microsoft Technology Licensing, Llc | Fault tolerant federation of computing clusters |
CN109314694A (en) * | 2016-07-01 | 2019-02-05 | 英特尔公司 | Group management in reconfigurable machine-to-machine systems |
US10204122B2 (en) | 2015-09-30 | 2019-02-12 | Nicira, Inc. | Implementing an interface between tuple and message-driven control entities |
US10212071B2 (en) | 2016-12-21 | 2019-02-19 | Nicira, Inc. | Bypassing a load balancer in a return path of network traffic |
US10237123B2 (en) | 2016-12-21 | 2019-03-19 | Nicira, Inc. | Dynamic recovery from a split-brain failure in edge nodes |
US10243820B2 (en) | 2016-09-28 | 2019-03-26 | Amazon Technologies, Inc. | Filtering network health information based on customer impact |
US10243963B1 (en) * | 2015-12-18 | 2019-03-26 | Symantec Corporation | Systems and methods for generating device-specific security policies for applications |
US10249013B2 (en) | 2015-02-03 | 2019-04-02 | Alibaba Group Holding Limited | Method and system for wireless payment of public transport fare |
US10248954B2 (en) | 2014-08-14 | 2019-04-02 | Alibaba Group Holding Limited | Method and system for verifying user identity using card features |
WO2019072296A2 (en) | 2018-12-13 | 2019-04-18 | Alibaba Group Holding Limited | Performing a change of primary node in a distributed system |
US10275813B2 (en) | 2014-07-08 | 2019-04-30 | Alibaba Group Holding Limited | Method and system for providing a transaction platform for pre-owned merchandise |
US10275326B1 (en) * | 2014-10-31 | 2019-04-30 | Amazon Technologies, Inc. | Distributed computing system failure detection |
US10296636B2 (en) | 2015-10-09 | 2019-05-21 | Alibaba Group Holding Limited | Efficient navigation category management |
US20190173840A1 (en) * | 2017-12-01 | 2019-06-06 | Kohl's Department Stores, Inc. | Cloud services management system and method |
CN109873801A (en) * | 2018-12-12 | 2019-06-11 | 阿里巴巴集团控股有限公司 | The method and device of trusted channel is established between user and trust computing cluster |
US10318288B2 (en) | 2016-01-13 | 2019-06-11 | A10 Networks, Inc. | System and method to process a chain of network applications |
US10325088B2 (en) | 2014-07-03 | 2019-06-18 | Alibaba Group Holding Limited | Method and system for information authentication |
US10333849B2 (en) | 2016-04-28 | 2019-06-25 | Nicira, Inc. | Automatic configuration of logical routers on edge nodes |
US10341236B2 (en) | 2016-09-30 | 2019-07-02 | Nicira, Inc. | Anycast edge service gateways |
US10362059B2 (en) * | 2014-09-24 | 2019-07-23 | Oracle International Corporation | Proxy servers within computer subnetworks |
US10362095B2 (en) * | 2016-11-04 | 2019-07-23 | Airwatch Llc | Distributed network diagnostics of enterprise devices utilizing device management |
US20190238399A1 (en) * | 2018-01-31 | 2019-08-01 | Hewlett Packard Enterprise Development Lp | Identification of a soft failure at a member |
US20190253455A1 (en) * | 2018-02-09 | 2019-08-15 | Vmware, Inc. | Policy strength of managed devices |
US10454758B2 (en) | 2016-08-31 | 2019-10-22 | Nicira, Inc. | Edge node cluster network redundancy and fast convergence using an underlay anycast VTEP IP |
US10454754B1 (en) * | 2016-12-16 | 2019-10-22 | Amazon Technologies, Inc. | Hybrid cluster recovery techniques |
US10462011B2 (en) | 2015-08-27 | 2019-10-29 | Nicira, Inc. | Accessible application cluster topology |
US10469311B2 (en) | 2017-07-13 | 2019-11-05 | Cisco Technology, Inc. | Handling network failures in networks with redundant servers |
US10484515B2 (en) | 2016-04-29 | 2019-11-19 | Nicira, Inc. | Implementing logical metadata proxy servers in logical networks |
US20200019478A1 (en) * | 2018-07-11 | 2020-01-16 | Hitachi, Ltd. | Storage system and configuration information control method |
US10541876B2 (en) * | 2017-02-14 | 2020-01-21 | Nicira, Inc. | Inter-connecting logical control planes for state data exchange |
US10547376B2 (en) * | 2004-09-24 | 2020-01-28 | Simple Works, Inc | System and method for communicating over an 802.15.4 network |
US10560320B2 (en) | 2016-06-29 | 2020-02-11 | Nicira, Inc. | Ranking of gateways in cluster |
US10579973B2 (en) | 2015-01-19 | 2020-03-03 | Alibaba Group Holding Limited | System for efficient processing of transaction requests related to an account in a database |
US20200084088A1 (en) * | 2018-09-10 | 2020-03-12 | Oracle International Corporation | Determining The Health Of Other Nodes In A Same Cluster Based On Physical Link Information |
US10616045B2 (en) | 2016-12-22 | 2020-04-07 | Nicira, Inc. | Migration of centralized routing components of logical router |
US10621055B2 (en) * | 2017-03-28 | 2020-04-14 | Amazon Technologies, Inc. | Adaptive data recovery for clustered data devices |
US10623285B1 (en) * | 2014-05-09 | 2020-04-14 | Amazon Technologies, Inc. | Multi-mode health monitoring service |
US10680877B2 (en) * | 2016-03-08 | 2020-06-09 | Beijing Jingdong Shangke Information Technology Co., Ltd. | Information transmission, sending, and acquisition method and device |
US10742746B2 (en) | 2016-12-21 | 2020-08-11 | Nicira, Inc. | Bypassing a load balancer in a return path of network traffic |
US10755345B2 (en) | 2014-12-03 | 2020-08-25 | Alibaba Group Holding Limited | System and method for secure account transfer |
US10769021B1 (en) * | 2010-12-31 | 2020-09-08 | EMC IP Holding Company LLC | Cache protection through cache |
US10797998B2 (en) | 2018-12-05 | 2020-10-06 | Vmware, Inc. | Route server for distributed routers using hierarchical routing protocol |
US10824414B2 (en) | 2014-09-26 | 2020-11-03 | Oracle International Corporation | Drift management of images |
US10841273B2 (en) | 2016-04-29 | 2020-11-17 | Nicira, Inc. | Implementing logical DHCP servers in logical networks |
US10862777B2 (en) | 2016-09-28 | 2020-12-08 | Amazon Technologies, Inc. | Visualization of network health information |
US10896261B2 (en) | 2018-11-29 | 2021-01-19 | Battelle Energy Alliance, Llc | Systems and methods for control system security |
US10911263B2 (en) | 2016-09-28 | 2021-02-02 | Amazon Technologies, Inc. | Programmatic interfaces for network health information |
US10931560B2 (en) | 2018-11-23 | 2021-02-23 | Vmware, Inc. | Using route type to determine routing protocol behavior |
US10938788B2 (en) | 2018-12-12 | 2021-03-02 | Vmware, Inc. | Static routes for policy-based VPN |
US20210075712A1 (en) * | 2018-05-21 | 2021-03-11 | Promptlink Communications, Inc. | Systems and techniques for assessing a customer premises equipment device |
US10956843B2 (en) | 2017-11-07 | 2021-03-23 | International Business Machines Corporation | Determining optimal device refresh cycles and device repairs through cognitive analysis of unstructured data and device health scores |
US11019167B2 (en) | 2016-04-29 | 2021-05-25 | Nicira, Inc. | Management of update queues for network controller |
US11044174B2 (en) * | 2019-08-26 | 2021-06-22 | Citrix Systems, Inc. | Systems and methods for disabling services in a cluster |
US11057478B2 (en) * | 2019-05-23 | 2021-07-06 | Fortinet, Inc. | Hybrid cluster architecture for reverse proxies |
US11063915B1 (en) * | 2017-03-24 | 2021-07-13 | Amazon Technologies, Inc. | Cluster of network-attachable storage devices with cluster manifest |
US11095480B2 (en) | 2019-08-30 | 2021-08-17 | Vmware, Inc. | Traffic optimization using distributed edge services |
US11128522B2 (en) * | 2019-06-28 | 2021-09-21 | Advanced New Technologies Co., Ltd. | Changing a master node in a blockchain system |
US11197075B1 (en) | 2018-12-27 | 2021-12-07 | Equinix, Inc. | Clock synchronization in a heterogeneous system |
US11196741B2 (en) * | 2018-12-29 | 2021-12-07 | Advanced New Technologies Co., Ltd. | Method and apparatus for establishing trusted computing cluster |
JP2021536642A (en) * | 2018-09-12 | 2021-12-27 | 華為技術有限公司Huawei Technologies Co., Ltd. | Data processing methods and devices, and computing nodes |
EP3805923A4 (en) * | 2018-05-29 | 2022-03-02 | Hitachi, Ltd. | INFORMATION PROCESSING SYSTEM, INFORMATION PROCESSING DEVICE AND METHOD FOR CONTROLLING THE INFORMATION PROCESSING SYSTEM |
US20220070061A1 (en) * | 2015-04-10 | 2022-03-03 | Bluecat Networks, Inc. | Methods and systems for dhcp policy management |
US11283697B1 (en) | 2015-03-24 | 2022-03-22 | Vmware, Inc. | Scalable real time metrics management |
US11290524B2 (en) | 2014-08-13 | 2022-03-29 | Microsoft Technology Licensing, Llc | Scalable fault resilient communications within distributed clusters |
US11297090B2 (en) * | 2019-09-11 | 2022-04-05 | International Business Machines Corporation | Security evaluation for computing workload relocation |
US11343134B1 (en) * | 2020-11-05 | 2022-05-24 | Dell Products L.P. | System and method for mitigating analytics loads between hardware devices |
US11374814B2 (en) * | 2019-08-01 | 2022-06-28 | Hewlett Packard Enterprise Development Lp | Network device configuration update using rank and health |
US11451413B2 (en) | 2020-07-28 | 2022-09-20 | Vmware, Inc. | Method for advertising availability of distributed gateway service and machines at host computer |
US11538039B2 (en) | 2018-02-12 | 2022-12-27 | Advanced New Technologies Co., Ltd. | Method and system for facilitating risk control of an online financial platform |
US20230040556A1 (en) * | 2015-06-05 | 2023-02-09 | Cisco Technology, Inc. | System and method for network policy simulation |
US11606294B2 (en) | 2020-07-16 | 2023-03-14 | Vmware, Inc. | Host computer configured to facilitate distributed SNAT service |
US11611613B2 (en) | 2020-07-24 | 2023-03-21 | Vmware, Inc. | Policy-based forwarding to a load balancer of a load balancing cluster |
US11616755B2 (en) | 2020-07-16 | 2023-03-28 | Vmware, Inc. | Facilitating distributed SNAT service |
US11641319B2 (en) | 2016-09-28 | 2023-05-02 | Amazon Technologies, Inc. | Network health data aggregation service |
US11816714B2 (en) | 2018-03-19 | 2023-11-14 | Advanced New Technologies Co., Ltd. | Service verification method and apparatus |
US11902050B2 (en) | 2020-07-28 | 2024-02-13 | VMware LLC | Method for providing distributed gateway service at host computer |
US12159305B2 (en) | 2018-03-07 | 2024-12-03 | Advanced New Technologies Co., Ltd. | Content-recommendation method and apparatus, electronic device, and system |
Families Citing this family (201)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140201017A1 (en) | 2008-06-19 | 2014-07-17 | Servicemesh, Inc. | Systems and methods for providing repeated use of computing resources |
US9069599B2 (en) * | 2008-06-19 | 2015-06-30 | Servicemesh, Inc. | System and method for a cloud computing abstraction layer with security zone facilities |
US8577999B2 (en) * | 2009-01-30 | 2013-11-05 | Nokia Corporation | Method for WLAN network and device role activation |
US8665886B2 (en) | 2009-03-26 | 2014-03-04 | Brocade Communications Systems, Inc. | Redundant host connection in a routed network |
US8396960B2 (en) * | 2009-05-08 | 2013-03-12 | Canon Kabushiki Kaisha | Efficient network utilization using multiple physical interfaces |
CN101562543B (en) | 2009-05-25 | 2013-07-31 | 阿里巴巴集团控股有限公司 | Cache data processing method and processing system and device thereof |
US20110035807A1 (en) * | 2009-08-05 | 2011-02-10 | Motorola, Inc. | Devices and Methods of Clustered Displays |
US8850067B2 (en) * | 2009-10-22 | 2014-09-30 | Verizon Patent And Licensing Inc. | Internet protocol (IP) address pool management and allocation |
JP5418233B2 (en) * | 2010-01-04 | 2014-02-19 | 富士通株式会社 | Configuration information verification apparatus, configuration information verification method, and configuration information verification program |
US20110213825A1 (en) * | 2010-02-26 | 2011-09-01 | Rovi Technologies Corporation | Dynamically configurable clusters of apparatuses |
US8369335B2 (en) | 2010-03-24 | 2013-02-05 | Brocade Communications Systems, Inc. | Method and system for extending routing domain to non-routing end stations |
US9769016B2 (en) | 2010-06-07 | 2017-09-19 | Brocade Communications Systems, Inc. | Advanced link tracking for virtual cluster switching |
US9231890B2 (en) | 2010-06-08 | 2016-01-05 | Brocade Communications Systems, Inc. | Traffic management for virtual cluster switching |
US9001824B2 (en) | 2010-05-18 | 2015-04-07 | Brocade Communication Systems, Inc. | Fabric formation for virtual cluster switching |
US8989186B2 (en) | 2010-06-08 | 2015-03-24 | Brocade Communication Systems, Inc. | Virtual port grouping for virtual cluster switching |
US9270486B2 (en) | 2010-06-07 | 2016-02-23 | Brocade Communications Systems, Inc. | Name services for virtual cluster switching |
US9461840B2 (en) | 2010-06-02 | 2016-10-04 | Brocade Communications Systems, Inc. | Port profile management for virtual cluster switching |
US8867552B2 (en) | 2010-05-03 | 2014-10-21 | Brocade Communications Systems, Inc. | Virtual cluster switching |
US9716672B2 (en) | 2010-05-28 | 2017-07-25 | Brocade Communications Systems, Inc. | Distributed configuration management for virtual cluster switching |
US8988237B2 (en) | 2010-05-27 | 2015-03-24 | University Of Southern California | System and method for failure prediction for artificial lift systems |
US8988236B2 (en) | 2010-05-27 | 2015-03-24 | University Of Southern California | System and method for failure prediction for rod pump artificial lift systems |
US8885488B2 (en) | 2010-06-02 | 2014-11-11 | Brocade Communication Systems, Inc. | Reachability detection in trill networks |
US9608833B2 (en) | 2010-06-08 | 2017-03-28 | Brocade Communications Systems, Inc. | Supporting multiple multicast trees in trill networks |
US8446914B2 (en) | 2010-06-08 | 2013-05-21 | Brocade Communications Systems, Inc. | Method and system for link aggregation across multiple switches |
US9628293B2 (en) | 2010-06-08 | 2017-04-18 | Brocade Communications Systems, Inc. | Network layer multicasting in trill networks |
US9806906B2 (en) | 2010-06-08 | 2017-10-31 | Brocade Communications Systems, Inc. | Flooding packets on a per-virtual-network basis |
US9246703B2 (en) | 2010-06-08 | 2016-01-26 | Brocade Communications Systems, Inc. | Remote port mirroring |
US9807031B2 (en) | 2010-07-16 | 2017-10-31 | Brocade Communications Systems, Inc. | System and method for network configuration |
US20120030343A1 (en) * | 2010-07-29 | 2012-02-02 | Apple Inc. | Dynamic migration within a network storage system |
US8458786B1 (en) * | 2010-08-13 | 2013-06-04 | Zscaler, Inc. | Automated dynamic tunnel management |
US8660057B2 (en) * | 2010-08-26 | 2014-02-25 | Golba, Llc | Method and system for distributed communication |
US20120099591A1 (en) * | 2010-10-26 | 2012-04-26 | Dell Products, Lp | System and Method for Scalable Flow Aware Network Architecture for Openflow Based Network Virtualization |
US10341274B2 (en) | 2010-12-12 | 2019-07-02 | Pecan Technologies Inc. | Systems methods and computer-readable storage media for messaging and presence modification |
WO2012080930A2 (en) * | 2010-12-12 | 2012-06-21 | Ben Volach | Systems and methods for messaging and presence modifcation |
EP2630836B1 (en) | 2011-02-12 | 2017-03-08 | Pecan Technologies, Inc. | System for messaging and presence modifcation |
US8812586B1 (en) * | 2011-02-15 | 2014-08-19 | Google Inc. | Correlating status information generated in a computer network |
US8549533B2 (en) * | 2011-03-18 | 2013-10-01 | Telefonaktiebolaget L M Ericsson (Publ) | Ranking service units to provide and protect highly available services using N+M redundancy models |
US9270572B2 (en) | 2011-05-02 | 2016-02-23 | Brocade Communications Systems Inc. | Layer-3 support in TRILL networks |
CN102821118B (en) * | 2011-06-10 | 2017-11-28 | 中兴通讯股份有限公司 | The method and system of service backup in a kind of network for possessing heterogeneous nodes |
US9280517B2 (en) * | 2011-06-23 | 2016-03-08 | University Of Southern California | System and method for failure detection for artificial lift systems |
US9542566B2 (en) | 2011-06-24 | 2017-01-10 | Alibaba.Com Limited | Develop and deploy software in multiple environments |
US9401861B2 (en) | 2011-06-28 | 2016-07-26 | Brocade Communications Systems, Inc. | Scalable MAC address distribution in an Ethernet fabric switch |
US8879549B2 (en) | 2011-06-28 | 2014-11-04 | Brocade Communications Systems, Inc. | Clearing forwarding entries dynamically and ensuring consistency of tables across ethernet fabric switch |
US8948056B2 (en) | 2011-06-28 | 2015-02-03 | Brocade Communication Systems, Inc. | Spanning-tree based loop detection for an ethernet fabric switch |
US9407533B2 (en) | 2011-06-28 | 2016-08-02 | Brocade Communications Systems, Inc. | Multicast in a trill network |
US9007958B2 (en) | 2011-06-29 | 2015-04-14 | Brocade Communication Systems, Inc. | External loop detection for an ethernet fabric switch |
US8885641B2 (en) | 2011-06-30 | 2014-11-11 | Brocade Communication Systems, Inc. | Efficient trill forwarding |
CN102857536B (en) * | 2011-07-01 | 2017-11-24 | 中兴通讯股份有限公司 | The method and system of data backup and migration are realized in peer-to-peer network |
US9736085B2 (en) | 2011-08-29 | 2017-08-15 | Brocade Communications Systems, Inc. | End-to end lossless Ethernet in Ethernet fabric |
US9014023B2 (en) | 2011-09-15 | 2015-04-21 | International Business Machines Corporation | Mobile network services in a mobile data network |
US8898728B2 (en) * | 2011-09-23 | 2014-11-25 | Oracle International Corporation | System and method of real-time change propagation and activation using a distributed object cache |
US9350733B2 (en) * | 2011-11-07 | 2016-05-24 | International Business Machines Corporation | Emergency server access for offline users |
US9699117B2 (en) | 2011-11-08 | 2017-07-04 | Brocade Communications Systems, Inc. | Integrated fibre channel support in an ethernet fabric switch |
US9450870B2 (en) | 2011-11-10 | 2016-09-20 | Brocade Communications Systems, Inc. | System and method for flow management in software-defined networks |
US8971192B2 (en) | 2011-11-16 | 2015-03-03 | International Business Machines Corporation | Data breakout at the edge of a mobile data network |
US8769615B2 (en) | 2011-12-19 | 2014-07-01 | International Business Machines Corporation | Key storage and retrieval in a breakout component at the edge of a mobile data network |
US9273544B2 (en) * | 2011-12-29 | 2016-03-01 | Chevron U.S.A. Inc. | System, method, and program for monitoring and hierarchial displaying of data related to artificial lift systems |
US8843441B1 (en) | 2012-01-17 | 2014-09-23 | Amazon Technologies, Inc. | System and method for maintaining a master replica for reads and writes in a data store |
US9116862B1 (en) * | 2012-01-17 | 2015-08-25 | Amazon Technologies, Inc. | System and method for data replication using a single master failover protocol |
US8995272B2 (en) | 2012-01-26 | 2015-03-31 | Brocade Communication Systems, Inc. | Link aggregation in software-defined networks |
US9009302B2 (en) * | 2012-02-21 | 2015-04-14 | Cisco Technology, Inc. | Dynamic group creation and traffic flow registration under a group in a group key infrastructure |
US9742693B2 (en) | 2012-02-27 | 2017-08-22 | Brocade Communications Systems, Inc. | Dynamic service insertion in a fabric switch |
US9154416B2 (en) | 2012-03-22 | 2015-10-06 | Brocade Communications Systems, Inc. | Overlay tunnel in a fabric switch |
US9021577B2 (en) * | 2012-03-30 | 2015-04-28 | Futurewei Technologies, Inc. | Enhancing IPSEC performance and security against eavesdropping |
US8923149B2 (en) * | 2012-04-09 | 2014-12-30 | Futurewei Technologies, Inc. | L3 gateway for VXLAN |
US9438642B2 (en) * | 2012-05-01 | 2016-09-06 | Google Technology Holdings LLC | Methods for coordinating communications between a plurality of communication devices of a user |
US9374301B2 (en) | 2012-05-18 | 2016-06-21 | Brocade Communications Systems, Inc. | Network feedback in software-defined networks |
US10277464B2 (en) | 2012-05-22 | 2019-04-30 | Arris Enterprises Llc | Client auto-configuration in a multi-switch link aggregation |
EP2853066B1 (en) | 2012-05-23 | 2017-02-22 | Brocade Communications Systems, Inc. | Layer-3 overlay gateways |
US9729493B1 (en) | 2012-06-25 | 2017-08-08 | Vmware, Inc. | Communicating messages over a social network to members of a virtualization infrastructure |
US9111241B2 (en) * | 2012-06-25 | 2015-08-18 | Vmware, Inc. | Creation of a social network of members of a virtualization infrastructure |
US9923859B1 (en) | 2013-06-25 | 2018-03-20 | Vmware, Inc. | Creating a group of members based on monitoring a social network |
US9929998B1 (en) | 2012-08-24 | 2018-03-27 | Vmware, Inc. | Tagged messages to facilitate administration of a virtualization infrastructure |
US8862882B2 (en) * | 2012-06-29 | 2014-10-14 | Intel Corporation | Systems and methods for authenticating devices by adding secure features to Wi-Fi tags |
WO2014027331A2 (en) * | 2012-08-15 | 2014-02-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Comparing redundancy models for determination of an availability management framework (amf) configuration and runtime assignment of a high availability system |
US9602430B2 (en) | 2012-08-21 | 2017-03-21 | Brocade Communications Systems, Inc. | Global VLANs for fabric switches |
US20140075170A1 (en) * | 2012-09-12 | 2014-03-13 | International Business Machines Corporation | Automated firmware voting to enable multi-enclosure federated systems |
US9560108B2 (en) | 2012-09-13 | 2017-01-31 | Google Technology Holdings LLC | Providing a mobile access point |
US20140095925A1 (en) * | 2012-10-01 | 2014-04-03 | Jason Wilson | Client for controlling automatic failover from a primary to a standby server |
US9158528B2 (en) * | 2012-10-02 | 2015-10-13 | Oracle International Corporation | Forcibly completing upgrade of distributed software in presence of failures |
US8849871B2 (en) * | 2012-10-04 | 2014-09-30 | Oracle International Corporation | Efficient pushdown of joins in a heterogeneous database system involving a large-scale low-power cluster |
CN104823412B (en) * | 2012-10-10 | 2018-09-04 | 诺基亚通信公司 | Peer-to-peer brings back to life the method and device of detection |
US9542177B1 (en) * | 2012-10-30 | 2017-01-10 | Amazon Technologies, Inc. | Peer configuration analysis and enforcement |
EP2911346B1 (en) * | 2012-11-13 | 2017-07-05 | Huawei Technologies Co., Ltd. | Method and network device for establishing virtual cluster |
US9401872B2 (en) | 2012-11-16 | 2016-07-26 | Brocade Communications Systems, Inc. | Virtual link aggregations across multiple fabric switches |
CN103839009B (en) * | 2012-11-20 | 2019-01-29 | 腾讯科技(深圳)有限公司 | A kind of endpoint detection methods and device |
US20150304372A1 (en) * | 2012-11-29 | 2015-10-22 | Dolby Laboratories Licensing Corporaton | Systems for Providing Services in a Voice Conferencing Environment |
RU2543316C2 (en) | 2012-12-25 | 2015-02-27 | Закрытое акционерное общество "Лаборатория Касперского" | System and method of fail-safe execution of scheduled tasks in distributed media |
US9548926B2 (en) | 2013-01-11 | 2017-01-17 | Brocade Communications Systems, Inc. | Multicast traffic load balancing over virtual link aggregation |
US9413691B2 (en) | 2013-01-11 | 2016-08-09 | Brocade Communications Systems, Inc. | MAC address synchronization in a fabric switch |
US9350680B2 (en) | 2013-01-11 | 2016-05-24 | Brocade Communications Systems, Inc. | Protection switching over a virtual link aggregation |
US9565113B2 (en) | 2013-01-15 | 2017-02-07 | Brocade Communications Systems, Inc. | Adaptive link aggregation and virtual link aggregation |
US9565099B2 (en) | 2013-03-01 | 2017-02-07 | Brocade Communications Systems, Inc. | Spanning tree in fabric switches |
US9027098B2 (en) | 2013-03-14 | 2015-05-05 | Genband Us Llc | Systems, methods, and computer program products for recording service status of applications |
WO2014145750A1 (en) | 2013-03-15 | 2014-09-18 | Brocade Communications Systems, Inc. | Scalable gateways for a fabric switch |
WO2014196715A1 (en) * | 2013-06-03 | 2014-12-11 | 엘지전자 주식회사 | Method for managing wireless resource and apparatus therefor |
US9565028B2 (en) | 2013-06-10 | 2017-02-07 | Brocade Communications Systems, Inc. | Ingress switch multicast distribution in a fabric switch |
US9699001B2 (en) | 2013-06-10 | 2017-07-04 | Brocade Communications Systems, Inc. | Scalable and segregated network virtualization |
CN103336756B (en) * | 2013-07-19 | 2016-01-27 | 中国人民解放军信息工程大学 | A kind of generating apparatus of data computational node |
US9806949B2 (en) | 2013-09-06 | 2017-10-31 | Brocade Communications Systems, Inc. | Transparent interconnection of Ethernet fabric switches |
US9912612B2 (en) | 2013-10-28 | 2018-03-06 | Brocade Communications Systems LLC | Extended ethernet fabric switches |
WO2015105502A1 (en) * | 2014-01-10 | 2015-07-16 | Hewlett Packard Development Company, L.P. | Call home cluster |
WO2015116147A2 (en) * | 2014-01-31 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Communicating between a cluster and a node external to the cluster |
US20150304343A1 (en) | 2014-04-18 | 2015-10-22 | Intuit Inc. | Method and system for providing self-monitoring, self-reporting, and self-repairing virtual assets in a cloud computing environment |
US9548873B2 (en) | 2014-02-10 | 2017-01-17 | Brocade Communications Systems, Inc. | Virtual extensible LAN tunnel keepalives |
US10757133B2 (en) | 2014-02-21 | 2020-08-25 | Intuit Inc. | Method and system for creating and deploying virtual assets |
US9866581B2 (en) | 2014-06-30 | 2018-01-09 | Intuit Inc. | Method and system for secure delivery of information to computing environments |
US10581758B2 (en) | 2014-03-19 | 2020-03-03 | Avago Technologies International Sales Pte. Limited | Distributed hot standby links for vLAG |
US10476698B2 (en) | 2014-03-20 | 2019-11-12 | Avago Technologies International Sales Pte. Limited | Redundent virtual link aggregation group |
US11294700B2 (en) | 2014-04-18 | 2022-04-05 | Intuit Inc. | Method and system for enabling self-monitoring virtual assets to correlate external events with characteristic patterns associated with the virtual assets |
US10063473B2 (en) | 2014-04-30 | 2018-08-28 | Brocade Communications Systems LLC | Method and system for facilitating switch virtualization in a network of interconnected switches |
US9800471B2 (en) | 2014-05-13 | 2017-10-24 | Brocade Communications Systems, Inc. | Network extension groups of global VLANs in a fabric switch |
US10616108B2 (en) | 2014-07-29 | 2020-04-07 | Avago Technologies International Sales Pte. Limited | Scalable MAC address virtualization |
US9473481B2 (en) * | 2014-07-31 | 2016-10-18 | Intuit Inc. | Method and system for providing a virtual asset perimeter |
US9544219B2 (en) | 2014-07-31 | 2017-01-10 | Brocade Communications Systems, Inc. | Global VLAN services |
US10102082B2 (en) | 2014-07-31 | 2018-10-16 | Intuit Inc. | Method and system for providing automated self-healing virtual assets |
US9807007B2 (en) | 2014-08-11 | 2017-10-31 | Brocade Communications Systems, Inc. | Progressive MAC address learning |
US9935829B1 (en) * | 2014-09-24 | 2018-04-03 | Amazon Technologies, Inc. | Scalable packet processing service |
US9524173B2 (en) | 2014-10-09 | 2016-12-20 | Brocade Communications Systems, Inc. | Fast reboot for a switch |
US9699029B2 (en) | 2014-10-10 | 2017-07-04 | Brocade Communications Systems, Inc. | Distributed configuration management in a switch group |
US10044617B2 (en) * | 2014-11-14 | 2018-08-07 | Nicira, Inc. | Stateful services on stateless clustered edge |
US11533255B2 (en) | 2014-11-14 | 2022-12-20 | Nicira, Inc. | Stateful services on stateless clustered edge |
US9866473B2 (en) | 2014-11-14 | 2018-01-09 | Nicira, Inc. | Stateful services on stateless clustered edge |
US9876714B2 (en) | 2014-11-14 | 2018-01-23 | Nicira, Inc. | Stateful services on stateless clustered edge |
FR3029384B1 (en) * | 2014-11-27 | 2018-01-26 | Traxens | METHOD OF AFFILIATION TO A CLUSTER OF ELECTRONIC DEVICES COMMUNICATING VIA A WIRELESS NETWORK, ELECTRONIC DEVICE USING SAID METHOD AND SYSTEM THEREOF |
US9626255B2 (en) | 2014-12-31 | 2017-04-18 | Brocade Communications Systems, Inc. | Online restoration of a switch snapshot |
US9628407B2 (en) | 2014-12-31 | 2017-04-18 | Brocade Communications Systems, Inc. | Multiple software versions in a switch group |
US9942097B2 (en) | 2015-01-05 | 2018-04-10 | Brocade Communications Systems LLC | Power management in a network of interconnected switches |
US10003552B2 (en) | 2015-01-05 | 2018-06-19 | Brocade Communications Systems, Llc. | Distributed bidirectional forwarding detection protocol (D-BFD) for cluster of interconnected switches |
US9800549B2 (en) * | 2015-02-11 | 2017-10-24 | Cisco Technology, Inc. | Hierarchical clustering in a geographically dispersed network environment |
US10038592B2 (en) | 2015-03-17 | 2018-07-31 | Brocade Communications Systems LLC | Identifier assignment to a new switch in a switch group |
US9807005B2 (en) | 2015-03-17 | 2017-10-31 | Brocade Communications Systems, Inc. | Multi-fabric manager |
FR3034280B1 (en) * | 2015-03-25 | 2017-03-24 | Traxens | METHOD FOR COMMUNICATING IN A DYNAMIC DEPTH CLUSTER OF COMMUNICATING ELECTRONIC DEVICES, ELECTRONIC DEVICE USING SAID METHOD AND SYSTEM THEREOF |
US10579406B2 (en) | 2015-04-08 | 2020-03-03 | Avago Technologies International Sales Pte. Limited | Dynamic orchestration of overlay tunnels |
US9760459B2 (en) | 2015-06-10 | 2017-09-12 | International Business Machines Corporation | Synchronization policies among nodes |
TWI561028B (en) * | 2015-06-12 | 2016-12-01 | Synology Inc | Method for managing a storage system, and associated apparatus |
US10439929B2 (en) | 2015-07-31 | 2019-10-08 | Avago Technologies International Sales Pte. Limited | Graceful recovery of a multicast-enabled switch |
US10171303B2 (en) | 2015-09-16 | 2019-01-01 | Avago Technologies International Sales Pte. Limited | IP-based interconnection of switches with a logical chassis |
CN105187262A (en) * | 2015-10-27 | 2015-12-23 | 上海斐讯数据通信技术有限公司 | Router upgrading method and system |
CN105897827A (en) * | 2015-11-27 | 2016-08-24 | 乐视云计算有限公司 | Server node, local area network server cluster and realizing method thereof |
US9912614B2 (en) | 2015-12-07 | 2018-03-06 | Brocade Communications Systems LLC | Interconnection of switches based on hierarchical overlay tunneling |
US10496049B2 (en) * | 2015-12-16 | 2019-12-03 | Futurewei Technologies, Inc. | Communication between distributed information brokers within a data and energy storage internet architecture |
CN105721203B (en) * | 2016-01-26 | 2018-12-25 | 北京小米移动软件有限公司 | Upgrade processing method and device |
US10404727B2 (en) * | 2016-03-25 | 2019-09-03 | Cisco Technology, Inc. | Self organizing learning topologies |
US9660879B1 (en) * | 2016-07-25 | 2017-05-23 | Extrahop Networks, Inc. | Flow deduplication across a cluster of network monitoring devices |
US10339025B1 (en) | 2016-08-25 | 2019-07-02 | EMC IP Holding Company LLC | Status monitoring system and method |
US10146650B1 (en) * | 2016-08-26 | 2018-12-04 | EMC IP Holding Company LLC | Status monitoring system and method |
US10338988B1 (en) | 2016-08-25 | 2019-07-02 | EMC IP Holding Company LLC | Status monitoring system and method |
US10409703B1 (en) | 2016-08-25 | 2019-09-10 | EMC IP Holding Company LLC | Status monitoring system and method |
US10237090B2 (en) | 2016-10-28 | 2019-03-19 | Avago Technologies International Sales Pte. Limited | Rule-based network identifier mapping |
US10476673B2 (en) | 2017-03-22 | 2019-11-12 | Extrahop Networks, Inc. | Managing session secrets for continuous packet capture systems |
CN106972962A (en) * | 2017-03-22 | 2017-07-21 | 北京匡恩网络科技有限责任公司 | Collocation method, the apparatus and system of high-availability cluster |
US10951584B2 (en) | 2017-07-31 | 2021-03-16 | Nicira, Inc. | Methods for active-active stateful network service cluster |
US11296984B2 (en) | 2017-07-31 | 2022-04-05 | Nicira, Inc. | Use of hypervisor for active-active stateful network service cluster |
US11570092B2 (en) | 2017-07-31 | 2023-01-31 | Nicira, Inc. | Methods for active-active stateful network service cluster |
US9967292B1 (en) | 2017-10-25 | 2018-05-08 | Extrahop Networks, Inc. | Inline secret sharing |
CN107817951B (en) * | 2017-10-31 | 2021-03-23 | 新华三技术有限公司 | Method and device for realizing Ceph cluster fusion |
US10862862B2 (en) * | 2017-11-30 | 2020-12-08 | AVAST Software s.r.o. | Identifying devices on a remote network |
US10389574B1 (en) | 2018-02-07 | 2019-08-20 | Extrahop Networks, Inc. | Ranking alerts based on network monitoring |
US10038611B1 (en) | 2018-02-08 | 2018-07-31 | Extrahop Networks, Inc. | Personalization of alerts based on network monitoring |
US10270794B1 (en) | 2018-02-09 | 2019-04-23 | Extrahop Networks, Inc. | Detection of denial of service attacks |
US11153122B2 (en) | 2018-02-19 | 2021-10-19 | Nicira, Inc. | Providing stateful services deployed in redundant gateways connected to asymmetric network |
US11140020B1 (en) | 2018-03-01 | 2021-10-05 | Amazon Technologies, Inc. | Availability-enhancing gateways for network traffic in virtualized computing environments |
US10411978B1 (en) | 2018-08-09 | 2019-09-10 | Extrahop Networks, Inc. | Correlating causes and effects associated with network activity |
US10594718B1 (en) | 2018-08-21 | 2020-03-17 | Extrahop Networks, Inc. | Managing incident response operations based on monitored network activity |
RU2694584C1 (en) * | 2018-10-25 | 2019-07-16 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Method of processing a tcp protocol in a cluster of a network computing system |
EP3892034A4 (en) | 2018-12-06 | 2021-12-29 | Visa International Service Association | Proximity device network |
US10984154B2 (en) * | 2018-12-27 | 2021-04-20 | Utopus Insights, Inc. | System and method for evaluating models for predictive failure of renewable energy assets |
US11102074B2 (en) | 2019-01-11 | 2021-08-24 | Cisco Technology, Inc. | Software defined access fabric without subnet restriction to a virtual network |
US11288148B2 (en) | 2019-03-27 | 2022-03-29 | Nutanix, Inc. | Global entity distribution |
US11368298B2 (en) * | 2019-05-16 | 2022-06-21 | Cisco Technology, Inc. | Decentralized internet protocol security key negotiation |
US10965702B2 (en) | 2019-05-28 | 2021-03-30 | Extrahop Networks, Inc. | Detecting injection attacks using passive network monitoring |
US11165814B2 (en) | 2019-07-29 | 2021-11-02 | Extrahop Networks, Inc. | Modifying triage information based on network monitoring |
US10742530B1 (en) | 2019-08-05 | 2020-08-11 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US11388072B2 (en) | 2019-08-05 | 2022-07-12 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US10742677B1 (en) | 2019-09-04 | 2020-08-11 | Extrahop Networks, Inc. | Automatic determination of user roles and asset types based on network monitoring |
US11677768B2 (en) * | 2019-10-22 | 2023-06-13 | Honeywell International Inc. | Apparatuses, methods, and computer program products for automatic improved network architecture generation |
US11108636B2 (en) * | 2019-10-23 | 2021-08-31 | Cisco Technology, Inc. | Integrity verification for managing network configurations |
US11899757B2 (en) * | 2019-12-02 | 2024-02-13 | Cox Automotive, Inc. | Systems and methods for temporary digital content sharing |
US11165823B2 (en) | 2019-12-17 | 2021-11-02 | Extrahop Networks, Inc. | Automated preemptive polymorphic deception |
US11979283B2 (en) * | 2020-01-07 | 2024-05-07 | Rvckus IP Holdings LLC | Stacking-port configuration using zero-touch provisioning |
US11985043B2 (en) | 2020-04-07 | 2024-05-14 | Arbor Networks, Inc. | Automated classification of network devices to protection groups |
US11870672B2 (en) * | 2020-04-16 | 2024-01-09 | Ivanti, Inc. | Self-election processes in managed subnets implementing modified swim protocols |
US11544289B2 (en) * | 2020-06-02 | 2023-01-03 | Sap Se | Interface custom resource definition for stateful service management of clusters |
US20220103582A1 (en) * | 2020-07-31 | 2022-03-31 | Patrick Kidney | System and method for cybersecurity |
US11463466B2 (en) | 2020-09-23 | 2022-10-04 | Extrahop Networks, Inc. | Monitoring encrypted network traffic |
EP4218212A4 (en) | 2020-09-23 | 2024-10-16 | ExtraHop Networks, Inc. | ENCRYPTED NETWORK TRAFFIC MONITORING |
US11902089B2 (en) * | 2020-12-18 | 2024-02-13 | Dell Products L.P. | Automated networking device replacement system |
US12225027B2 (en) | 2021-03-29 | 2025-02-11 | Armis Security Ltd. | System and method for detection of abnormal device traffic behavior |
CN113114800B (en) * | 2021-04-29 | 2022-05-24 | 新华三信息安全技术有限公司 | Resource processing method and device |
CN113347038B (en) * | 2021-06-08 | 2022-11-22 | 上海天旦网络科技发展有限公司 | Circulation mutual-backup high-availability system for bypass flow processing |
US11349861B1 (en) | 2021-06-18 | 2022-05-31 | Extrahop Networks, Inc. | Identifying network entities based on beaconing activity |
US12223369B2 (en) * | 2021-07-08 | 2025-02-11 | Dell Products L.P. | Message oriented middleware cluster synchronization |
US11296967B1 (en) | 2021-09-23 | 2022-04-05 | Extrahop Networks, Inc. | Combining passive network analysis and active probing |
US11799761B2 (en) | 2022-01-07 | 2023-10-24 | Vmware, Inc. | Scaling edge services with minimal disruption |
US11656926B1 (en) | 2022-01-26 | 2023-05-23 | Bank Of America Corporation | Systems and methods for automatically applying configuration changes to computing clusters |
US11962564B2 (en) | 2022-02-15 | 2024-04-16 | VMware LLC | Anycast address for network address translation at edge |
CN114826676B (en) * | 2022-03-30 | 2022-11-25 | 深圳市天盈隆科技有限公司 | Network security data sharing and control method and system |
US11843606B2 (en) | 2022-03-30 | 2023-12-12 | Extrahop Networks, Inc. | Detecting abnormal data access based on data similarity |
WO2023230993A1 (en) * | 2022-06-02 | 2023-12-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for standby member and active member in cluster |
WO2024167499A1 (en) * | 2023-02-10 | 2024-08-15 | Hitachi Vantara Llc | Automated preemptive ranked failover |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5704032A (en) * | 1996-04-30 | 1997-12-30 | International Business Machines Corporation | Method for group leader recovery in a distributed computing environment |
US5790788A (en) * | 1996-07-23 | 1998-08-04 | International Business Machines Corporation | Managing group events by a name server for a group of processors in a distributed computing environment |
US5805785A (en) * | 1996-02-27 | 1998-09-08 | International Business Machines Corporation | Method for monitoring and recovery of subsystems in a distributed/clustered system |
US20030158936A1 (en) * | 2002-02-15 | 2003-08-21 | International Business Machines Corporation | Method for controlling group membership in a distributed multinode data processing system to assure mutually symmetric liveness status indications |
US6629266B1 (en) * | 1999-11-17 | 2003-09-30 | International Business Machines Corporation | Method and system for transparent symptom-based selective software rejuvenation |
US20030217134A1 (en) * | 2002-05-20 | 2003-11-20 | International Business Machines Corporation | Rule-based method and system for managing heterogenous computer clusters |
US6735200B1 (en) * | 2000-03-21 | 2004-05-11 | International Business Machines Corporation | Method and apparatus for monitoring the availability of nodes in a communications network |
US6873987B1 (en) * | 2000-05-31 | 2005-03-29 | International Business Machines Corporation | Method, system and program products for recovering from failures within a shared nothing distributed computing environment |
US20050071473A1 (en) * | 2003-09-30 | 2005-03-31 | Rosenstock Harold N. | Method and apparatus for limiting standby subnet managers |
US6894975B1 (en) * | 2000-01-15 | 2005-05-17 | Andrzej Partyka | Synchronization and access of the nodes in a communications network |
US20050138462A1 (en) * | 2003-12-23 | 2005-06-23 | Nokia, Inc. | System and method for managing protocol network failures in a cluster system |
US6978398B2 (en) * | 2001-08-15 | 2005-12-20 | International Business Machines Corporation | Method and system for proactively reducing the outage time of a computer system |
US20060048017A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Techniques for health monitoring and control of application servers |
US20060090095A1 (en) * | 1999-03-26 | 2006-04-27 | Microsoft Corporation | Consistent cluster operational data in a server cluster using a quorum of replicas |
US20070088972A1 (en) * | 2002-02-22 | 2007-04-19 | Bea Systems, Inc. | Automatic monitoring method for managed server health |
US20070094449A1 (en) * | 2005-10-26 | 2007-04-26 | International Business Machines Corporation | System, method and program for managing storage |
US20070121667A1 (en) * | 2005-11-30 | 2007-05-31 | International Business Machines Corporation | Method for improving cluster bring-up in a distributed topology liveness system |
US20070180287A1 (en) * | 2006-01-31 | 2007-08-02 | Dell Products L. P. | System and method for managing node resets in a cluster |
US7370223B2 (en) * | 2000-09-08 | 2008-05-06 | Goahead Software, Inc. | System and method for managing clusters containing multiple nodes |
US20080209423A1 (en) * | 2007-02-27 | 2008-08-28 | Fujitsu Limited | Job management device, cluster system, and computer-readable medium storing job management program |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5963746A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
US6308148B1 (en) | 1996-05-28 | 2001-10-23 | Cisco Technology, Inc. | Network flow data export |
US6725250B1 (en) * | 1996-11-29 | 2004-04-20 | Ellis, Iii Frampton E. | Global network computers |
US6266335B1 (en) | 1997-12-19 | 2001-07-24 | Cyberiq Systems | Cross-platform server clustering using a network flow switch |
US7055173B1 (en) * | 1997-12-19 | 2006-05-30 | Avaya Technology Corp. | Firewall pooling in a network flowswitch |
US6665304B2 (en) | 1998-12-31 | 2003-12-16 | Hewlett-Packard Development Company, L.P. | Method and apparatus for providing an integrated cluster alias address |
US6678827B1 (en) * | 1999-05-06 | 2004-01-13 | Watchguard Technologies, Inc. | Managing multiple network security devices from a manager device |
JP2000339186A (en) * | 1999-05-31 | 2000-12-08 | Nec Software Chubu Ltd | Automatic reconnection method for cluster system monitoring terminal and its system |
US6636520B1 (en) * | 1999-12-21 | 2003-10-21 | Intel Corporation | Method for establishing IPSEC tunnels |
US6880089B1 (en) * | 2000-03-31 | 2005-04-12 | Avaya Technology Corp. | Firewall clustering for multiple network servers |
US7185076B1 (en) * | 2000-05-31 | 2007-02-27 | International Business Machines Corporation | Method, system and program products for managing a clustered computing environment |
US20030046394A1 (en) * | 2000-11-03 | 2003-03-06 | Steve Goddard | System and method for an application space server cluster |
US7082200B2 (en) * | 2001-09-06 | 2006-07-25 | Microsoft Corporation | Establishing secure peer networking in trust webs on open networks using shared secret device key |
US7152185B2 (en) * | 2002-02-22 | 2006-12-19 | Bea Systems, Inc. | Method for event triggered monitoring of managed server health |
WO2004059538A2 (en) * | 2002-12-16 | 2004-07-15 | Questerra Llc | Method, system and program for network design, analysis, and optimization |
US7814218B1 (en) * | 2002-10-17 | 2010-10-12 | Astute Networks, Inc. | Multi-protocol and multi-format stateful processing |
CN1266882C (en) * | 2002-12-04 | 2006-07-26 | 华为技术有限公司 | A management method of network device |
US7653810B2 (en) * | 2003-08-15 | 2010-01-26 | Venafi, Inc. | Method to automate the renewal of digital certificates |
JP4855655B2 (en) * | 2004-06-15 | 2012-01-18 | 株式会社ソニー・コンピュータエンタテインメント | Processing management apparatus, computer system, distributed processing method, and computer program |
US20060053216A1 (en) * | 2004-09-07 | 2006-03-09 | Metamachinix, Inc. | Clustered computer system with centralized administration |
US20060085668A1 (en) | 2004-10-15 | 2006-04-20 | Emc Corporation | Method and apparatus for configuring, monitoring and/or managing resource groups |
US9418040B2 (en) * | 2005-07-07 | 2016-08-16 | Sciencelogic, Inc. | Dynamically deployable self configuring distributed network management system |
US8370416B2 (en) * | 2006-04-26 | 2013-02-05 | Hewlett-Packard Development Company, L.P. | Compatibility enforcement in clustered computing systems |
US8130747B2 (en) * | 2007-08-06 | 2012-03-06 | Blue Coat Systems, Inc. | System and method of traffic inspection and stateful connection forwarding among geographically dispersed network appliances organized as clusters |
US7751329B2 (en) * | 2007-10-03 | 2010-07-06 | Avaya Inc. | Providing an abstraction layer in a cluster switch that includes plural switches |
US20090198797A1 (en) * | 2008-02-05 | 2009-08-06 | Microsoft Corporation | Network device provisioning using documents |
US8316113B2 (en) * | 2008-12-19 | 2012-11-20 | Watchguard Technologies, Inc. | Cluster architecture and configuration for network security devices |
-
2009
- 2009-12-21 US US12/643,378 patent/US8316113B2/en active Active
- 2009-12-21 WO PCT/US2009/068994 patent/WO2010071882A2/en active Application Filing
- 2009-12-21 US US12/643,663 patent/US8392496B2/en active Active
- 2009-12-21 US US12/643,548 patent/US20100162036A1/en not_active Abandoned
- 2009-12-21 WO PCT/US2009/069015 patent/WO2010071888A2/en active Application Filing
- 2009-12-21 WO PCT/US2009/069002 patent/WO2010071884A2/en active Application Filing
-
2012
- 2012-11-20 US US13/682,259 patent/US20130173766A1/en not_active Abandoned
-
2013
- 2013-03-04 US US13/784,476 patent/US9203865B2/en active Active
-
2015
- 2015-12-01 US US14/956,188 patent/US20160164764A1/en not_active Abandoned
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805785A (en) * | 1996-02-27 | 1998-09-08 | International Business Machines Corporation | Method for monitoring and recovery of subsystems in a distributed/clustered system |
US5704032A (en) * | 1996-04-30 | 1997-12-30 | International Business Machines Corporation | Method for group leader recovery in a distributed computing environment |
US5790788A (en) * | 1996-07-23 | 1998-08-04 | International Business Machines Corporation | Managing group events by a name server for a group of processors in a distributed computing environment |
US20060090095A1 (en) * | 1999-03-26 | 2006-04-27 | Microsoft Corporation | Consistent cluster operational data in a server cluster using a quorum of replicas |
US6629266B1 (en) * | 1999-11-17 | 2003-09-30 | International Business Machines Corporation | Method and system for transparent symptom-based selective software rejuvenation |
US6894975B1 (en) * | 2000-01-15 | 2005-05-17 | Andrzej Partyka | Synchronization and access of the nodes in a communications network |
US6735200B1 (en) * | 2000-03-21 | 2004-05-11 | International Business Machines Corporation | Method and apparatus for monitoring the availability of nodes in a communications network |
US6873987B1 (en) * | 2000-05-31 | 2005-03-29 | International Business Machines Corporation | Method, system and program products for recovering from failures within a shared nothing distributed computing environment |
US7370223B2 (en) * | 2000-09-08 | 2008-05-06 | Goahead Software, Inc. | System and method for managing clusters containing multiple nodes |
US6978398B2 (en) * | 2001-08-15 | 2005-12-20 | International Business Machines Corporation | Method and system for proactively reducing the outage time of a computer system |
US20030158936A1 (en) * | 2002-02-15 | 2003-08-21 | International Business Machines Corporation | Method for controlling group membership in a distributed multinode data processing system to assure mutually symmetric liveness status indications |
US20070088972A1 (en) * | 2002-02-22 | 2007-04-19 | Bea Systems, Inc. | Automatic monitoring method for managed server health |
US20030217134A1 (en) * | 2002-05-20 | 2003-11-20 | International Business Machines Corporation | Rule-based method and system for managing heterogenous computer clusters |
US20050071473A1 (en) * | 2003-09-30 | 2005-03-31 | Rosenstock Harold N. | Method and apparatus for limiting standby subnet managers |
US20050138462A1 (en) * | 2003-12-23 | 2005-06-23 | Nokia, Inc. | System and method for managing protocol network failures in a cluster system |
US20060048017A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Techniques for health monitoring and control of application servers |
US20070094449A1 (en) * | 2005-10-26 | 2007-04-26 | International Business Machines Corporation | System, method and program for managing storage |
US20070121667A1 (en) * | 2005-11-30 | 2007-05-31 | International Business Machines Corporation | Method for improving cluster bring-up in a distributed topology liveness system |
US20070180287A1 (en) * | 2006-01-31 | 2007-08-02 | Dell Products L. P. | System and method for managing node resets in a cluster |
US20080209423A1 (en) * | 2007-02-27 | 2008-08-28 | Fujitsu Limited | Job management device, cluster system, and computer-readable medium storing job management program |
Cited By (386)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10547376B2 (en) * | 2004-09-24 | 2020-01-28 | Simple Works, Inc | System and method for communicating over an 802.15.4 network |
US10715248B2 (en) * | 2004-09-24 | 2020-07-14 | Simple Works, Inc. | System and method for communicating over an 802.15.4 network |
US9516475B2 (en) | 2007-07-19 | 2016-12-06 | E.F. Johnson Technologies, Inc. | Method and system for peer-to-peer communication among sites |
US20130173766A1 (en) * | 2008-12-19 | 2013-07-04 | Watchguard Technologies, Inc. | Cluster architecture and configuration for network security devices |
US8316113B2 (en) * | 2008-12-19 | 2012-11-20 | Watchguard Technologies, Inc. | Cluster architecture and configuration for network security devices |
US20100169446A1 (en) * | 2008-12-19 | 2010-07-01 | Watchguard Technologies, Inc. | Cluster Architecture and Configuration for Network Security Devices |
US9456356B2 (en) * | 2009-10-15 | 2016-09-27 | Apple Inc. | Methods for synchronizing data in a network |
US20110093536A1 (en) * | 2009-10-15 | 2011-04-21 | Qualcomm Incorporated | Group owner selection with crossing requests |
US8700780B2 (en) * | 2009-10-15 | 2014-04-15 | Qualcomm Incorporated | Group owner selection with crossing requests |
US20110090896A1 (en) * | 2009-10-15 | 2011-04-21 | Bob Bradley | Methods for synchronizing data in a network |
US20110119487A1 (en) * | 2009-11-13 | 2011-05-19 | Velocite Systems, LLC | System and method for encryption rekeying |
US8239539B2 (en) * | 2009-12-16 | 2012-08-07 | Hewlett-Packard Development Company, L.P. | Management processors cooperating to control partition resources |
US20110145422A1 (en) * | 2009-12-16 | 2011-06-16 | Duisenberg Kenneth C | Management processors cooperating to control partition resources |
US20110179342A1 (en) * | 2010-01-18 | 2011-07-21 | Ls Industrial Systems Co., Ltd. | Communication error monitoring system of power device based on ethernet and method thereof |
US20130067093A1 (en) * | 2010-03-16 | 2013-03-14 | Optimi Corporation | Determining Essential Resources in a Wireless Network |
US8516295B2 (en) * | 2010-03-23 | 2013-08-20 | Ca, Inc. | System and method of collecting and reporting exceptions associated with information technology services |
US20110239050A1 (en) * | 2010-03-23 | 2011-09-29 | Computer Associates Think, Inc. | System and Method of Collecting and Reporting Exceptions Associated with Information Technology Services |
US20120331334A1 (en) * | 2010-03-31 | 2012-12-27 | Fujitsu Limited | Multi-cluster system and information processing system |
US20130029716A1 (en) * | 2010-04-12 | 2013-01-31 | Lg Electronics Inc. | Apparatus and method for performing group-based m2m communication |
US20160036722A1 (en) * | 2010-05-07 | 2016-02-04 | Ziften Technologies, Inc. | Monitoring computer process resource usage |
US10003547B2 (en) * | 2010-05-07 | 2018-06-19 | Ziften Technologies, Inc. | Monitoring computer process resource usage |
US9525647B2 (en) | 2010-07-06 | 2016-12-20 | Nicira, Inc. | Network control apparatus and method for creating and modifying logical switching elements |
US10103939B2 (en) | 2010-07-06 | 2018-10-16 | Nicira, Inc. | Network control apparatus and method for populating logical datapath sets |
US11509564B2 (en) | 2010-07-06 | 2022-11-22 | Nicira, Inc. | Method and apparatus for replicating network information base in a distributed network control system with multiple controller instances |
US11677588B2 (en) | 2010-07-06 | 2023-06-13 | Nicira, Inc. | Network control apparatus and method for creating and modifying logical switching elements |
US11979280B2 (en) | 2010-07-06 | 2024-05-07 | Nicira, Inc. | Network control apparatus and method for populating logical datapath sets |
US12028215B2 (en) | 2010-07-06 | 2024-07-02 | Nicira, Inc. | Distributed network control system with one master controller per logical datapath set |
US11876679B2 (en) | 2010-07-06 | 2024-01-16 | Nicira, Inc. | Method and apparatus for interacting with a network information base in a distributed network control system with multiple controller instances |
US10326660B2 (en) | 2010-07-06 | 2019-06-18 | Nicira, Inc. | Network virtualization apparatus and method |
US10320585B2 (en) | 2010-07-06 | 2019-06-11 | Nicira, Inc. | Network control apparatus and method for creating and modifying logical switching elements |
US9391928B2 (en) | 2010-07-06 | 2016-07-12 | Nicira, Inc. | Method and apparatus for interacting with a network information base in a distributed network control system with multiple controller instances |
US11223531B2 (en) | 2010-07-06 | 2022-01-11 | Nicira, Inc. | Method and apparatus for interacting with a network information base in a distributed network control system with multiple controller instances |
US11539591B2 (en) | 2010-07-06 | 2022-12-27 | Nicira, Inc. | Distributed network control system with one master controller per logical datapath set |
US10117111B2 (en) | 2010-10-21 | 2018-10-30 | E.F. Johnson Company | System and method for simulating a land mobile radio system |
US10548025B2 (en) | 2010-10-21 | 2020-01-28 | E.F. Johnson Company | System and method for simulating a land mobile radio system |
US10797953B2 (en) * | 2010-10-22 | 2020-10-06 | International Business Machines Corporation | Server consolidation system |
US20120101968A1 (en) * | 2010-10-22 | 2012-04-26 | International Business Machines Corporation | Server consolidation system |
WO2012058370A1 (en) * | 2010-10-29 | 2012-05-03 | Lockheed Martin Corporation | Physical layer photonic protocol switch |
US20170315886A1 (en) * | 2010-12-13 | 2017-11-02 | Amazon Technologies, Inc. | Locality based quorum eligibility |
US11442824B2 (en) * | 2010-12-13 | 2022-09-13 | Amazon Technologies, Inc. | Locality based quorum eligibility |
US11075980B2 (en) * | 2010-12-14 | 2021-07-27 | International Business Machines Corporation | Method for operating a node cluster system in a network and node cluster system |
US20120209937A1 (en) * | 2010-12-14 | 2012-08-16 | International Business Machines Corporation | Method for operating a node cluster system in a network and node cluster system |
US10769021B1 (en) * | 2010-12-31 | 2020-09-08 | EMC IP Holding Company LLC | Cache protection through cache |
US8849938B2 (en) * | 2011-01-11 | 2014-09-30 | A10 Networks, Inc. | Virtual application delivery chassis system |
US20120179770A1 (en) * | 2011-01-11 | 2012-07-12 | A10 Networks, Inc. | Virtual application delivery chassis system |
US20170013051A1 (en) * | 2011-01-11 | 2017-01-12 | A10 Networks, Inc. | Virtual Application Delivery Chassis System |
US10530847B2 (en) * | 2011-01-11 | 2020-01-07 | A10 Networks, Inc. | Virtual application delivery chassis system |
US8266235B2 (en) * | 2011-01-11 | 2012-09-11 | A10 Networks, Inc. | Virtual application delivery chassis system |
US9477563B2 (en) | 2011-01-11 | 2016-10-25 | A10 Networks, Inc. | Virtual application delivery chassis system |
US9838472B2 (en) * | 2011-01-11 | 2017-12-05 | A10 Networks, Inc. | Virtual application delivery chassis system |
US20180054478A1 (en) * | 2011-01-11 | 2018-02-22 | A10 Networks, Inc. | Virtual application delivery chassis system |
EP2663919A4 (en) * | 2011-01-11 | 2016-07-27 | A10 Networks Inc | SYSTEM FOR A CHASSIS FOR THE EDITION OF VIRTUAL APPLICATIONS |
US20120191826A1 (en) * | 2011-01-26 | 2012-07-26 | Rony Gotesdyner | Device-Health-Based Dynamic Configuration of Network Management Systems Suited for Network Operations |
US8997000B2 (en) | 2011-01-26 | 2015-03-31 | Cisco Technology, Inc. | Integrated view of network management data |
US8769349B2 (en) | 2011-01-26 | 2014-07-01 | Cisco Technology, Inc. | Managing network devices based on predictions of events |
US9225554B2 (en) * | 2011-01-26 | 2015-12-29 | Cisco Technology, Inc. | Device-health-based dynamic configuration of network management systems suited for network operations |
US10021177B1 (en) * | 2011-02-16 | 2018-07-10 | Masque Publishing, Inc. | Peer-to-peer communications |
US9596134B2 (en) | 2011-06-06 | 2017-03-14 | A10 Networks, Inc. | Synchronization of configuration file of virtual application distribution chassis |
US9154577B2 (en) | 2011-06-06 | 2015-10-06 | A10 Networks, Inc. | Sychronization of configuration file of virtual application distribution chassis |
US9912538B2 (en) | 2011-06-06 | 2018-03-06 | A10 Networks, Inc. | Synchronization of configuration file of virtual application distribution chassis |
US10298457B2 (en) | 2011-06-06 | 2019-05-21 | A10 Networks, Inc. | Synchronization of configuration file of virtual application distribution chassis |
US20120317621A1 (en) * | 2011-06-09 | 2012-12-13 | Canon Kabushiki Kaisha | Cloud system, license management method for cloud service |
US8763145B2 (en) * | 2011-06-09 | 2014-06-24 | Canon Kabushiki Kaisha | Cloud system, license management method for cloud service |
US20140136677A1 (en) * | 2011-07-21 | 2014-05-15 | Huawei Technologies Co., Ltd. | Method and device of interface registration for a network device to join in a cluster system |
EP2731300A4 (en) * | 2011-07-21 | 2014-10-08 | Huawei Tech Co Ltd | Interface register method and device for network device to join cluster system |
EP2731300A1 (en) * | 2011-07-21 | 2014-05-14 | Huawei Technologies Co., Ltd. | Interface register method and device for network device to join cluster system |
US9577871B2 (en) * | 2011-07-21 | 2017-02-21 | Huawei Technologies Co., Ltd. | Method and device of interface registration for a network device to join in a cluster system |
US9451012B1 (en) * | 2011-08-30 | 2016-09-20 | CSC Holdings, LLC | Heterogeneous cloud processing utilizing consumer devices |
US10547667B1 (en) | 2011-08-30 | 2020-01-28 | CSC Holdings, LLC | Heterogeneous cloud processing utilizing consumer devices |
US8964601B2 (en) | 2011-10-07 | 2015-02-24 | International Business Machines Corporation | Network switching domains with a virtualized control plane |
US11669488B2 (en) | 2011-10-25 | 2023-06-06 | Nicira, Inc. | Chassis controller |
US9319338B2 (en) | 2011-10-25 | 2016-04-19 | Nicira, Inc. | Tunnel creation |
US9319337B2 (en) | 2011-10-25 | 2016-04-19 | Nicira, Inc. | Universal physical control plane |
US9602421B2 (en) | 2011-10-25 | 2017-03-21 | Nicira, Inc. | Nesting transaction updates to minimize communication |
US10505856B2 (en) | 2011-10-25 | 2019-12-10 | Nicira, Inc. | Chassis controller |
US9288104B2 (en) | 2011-10-25 | 2016-03-15 | Nicira, Inc. | Chassis controllers for converting universal flows |
US9954793B2 (en) | 2011-10-25 | 2018-04-24 | Nicira, Inc. | Chassis controller |
US9319336B2 (en) | 2011-10-25 | 2016-04-19 | Nicira, Inc. | Scheduling distribution of logical control plane data |
US12111787B2 (en) | 2011-10-25 | 2024-10-08 | Nicira, Inc. | Chassis controller |
US9306864B2 (en) | 2011-10-25 | 2016-04-05 | Nicira, Inc. | Scheduling distribution of physical control plane data |
US9300593B2 (en) | 2011-10-25 | 2016-03-29 | Nicira, Inc. | Scheduling distribution of logical forwarding plane data |
US10922124B2 (en) | 2011-11-15 | 2021-02-16 | Nicira, Inc. | Network control system for configuring middleboxes |
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 |
US10089127B2 (en) | 2011-11-15 | 2018-10-02 | 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 |
US11740923B2 (en) | 2011-11-15 | 2023-08-29 | Nicira, Inc. | Architecture of networks with middleboxes |
US10235199B2 (en) | 2011-11-15 | 2019-03-19 | Nicira, Inc. | Migrating middlebox state for distributed middleboxes |
US10191763B2 (en) | 2011-11-15 | 2019-01-29 | Nicira, Inc. | Architecture of networks with middleboxes |
US11372671B2 (en) | 2011-11-15 | 2022-06-28 | Nicira, Inc. | Architecture of networks with middleboxes |
US10514941B2 (en) | 2011-11-15 | 2019-12-24 | Nicira, Inc. | Load balancing and destination network address translation middleboxes |
US10884780B2 (en) | 2011-11-15 | 2021-01-05 | Nicira, Inc. | Architecture of networks with middleboxes |
US10977067B2 (en) | 2011-11-15 | 2021-04-13 | Nicira, Inc. | Control plane interface for logical middlebox services |
US12141599B2 (en) | 2011-11-15 | 2024-11-12 | Nicira, Inc. | Architecture of networks with middleboxes |
US12093719B2 (en) | 2011-11-15 | 2024-09-17 | Nicira, Inc. | Network control system for configuring middleboxes |
US9020894B2 (en) * | 2012-01-24 | 2015-04-28 | Cisco Technology, Inc. | Service version modification of a high-availability system |
US20130191340A1 (en) * | 2012-01-24 | 2013-07-25 | Cisco Technology, Inc.,a corporation of California | In Service Version Modification of a High-Availability System |
US9088477B2 (en) | 2012-02-02 | 2015-07-21 | International Business Machines Corporation | Distributed fabric management protocol |
GB2512546B (en) * | 2012-02-02 | 2014-11-19 | Ibm | Distributed fabric management protocol |
DE112013000506B4 (en) | 2012-02-02 | 2018-10-25 | International Business Machines Corporation | Management protocol for distributed structures |
GB2512546A (en) * | 2012-02-02 | 2014-10-01 | Ibm | Distributed fabric management protocol |
US9071508B2 (en) | 2012-02-02 | 2015-06-30 | International Business Machines Corporation | Distributed fabric management protocol |
US9077651B2 (en) | 2012-03-07 | 2015-07-07 | International Business Machines Corporation | Management of a distributed fabric system |
US9054989B2 (en) | 2012-03-07 | 2015-06-09 | International Business Machines Corporation | Management of a distributed fabric system |
US9077624B2 (en) | 2012-03-07 | 2015-07-07 | International Business Machines Corporation | Diagnostics in a distributed fabric system |
US9059911B2 (en) | 2012-03-07 | 2015-06-16 | International Business Machines Corporation | Diagnostics in a distributed fabric system |
US9843476B2 (en) | 2012-04-18 | 2017-12-12 | Nicira, Inc. | Using transactions to minimize churn in a distributed network control system |
US10135676B2 (en) | 2012-04-18 | 2018-11-20 | Nicira, Inc. | Using transactions to minimize churn in a distributed network control system |
US9331937B2 (en) | 2012-04-18 | 2016-05-03 | Nicira, Inc. | Exchange of network state information between forwarding elements |
US9306843B2 (en) | 2012-04-18 | 2016-04-05 | Nicira, Inc. | Using transactions to compute and propagate network forwarding state |
US10033579B2 (en) | 2012-04-18 | 2018-07-24 | Nicira, Inc. | Using transactions to compute and propagate network forwarding state |
US9485786B2 (en) * | 2012-06-26 | 2016-11-01 | International Business Machines Corporation | Management of mobile devices leveraging location based cooperation |
US20130346548A1 (en) * | 2012-06-26 | 2013-12-26 | International Business Machines Corporation | Management of mobile devices leveraging location based cooperation |
US20150006674A1 (en) * | 2012-06-26 | 2015-01-01 | International Business Machines Corporatin | Management of Mobile Devices Leveraging Location Based Cooperation |
US9480086B2 (en) * | 2012-06-26 | 2016-10-25 | International Business Machines Corporation | Management of mobile devices leveraging location based cooperation |
US20140006502A1 (en) * | 2012-07-02 | 2014-01-02 | Ebay, Inc. | System and Method for Clustering of Mobile Devices and Applications |
US10061620B2 (en) * | 2012-07-02 | 2018-08-28 | Paypal, Inc. | System and method for clustering of mobile devices and applications |
US9065727B1 (en) * | 2012-08-31 | 2015-06-23 | Google Inc. | Device identifier similarity models derived from online event signals |
US20140149784A1 (en) * | 2012-10-09 | 2014-05-29 | Dh2I Company | Instance Level Server Application Monitoring, Load Balancing, and Resource Allocation |
US9323628B2 (en) * | 2012-10-09 | 2016-04-26 | Dh2I Company | Instance level server application monitoring, load balancing, and resource allocation |
US9424152B1 (en) * | 2012-10-17 | 2016-08-23 | Veritas Technologies Llc | Techniques for managing a disaster recovery failover policy |
US20160078116A1 (en) * | 2012-12-28 | 2016-03-17 | International Business Machines Corporation | Providing high availability in an active/active appliance cluster |
US9659075B2 (en) * | 2012-12-28 | 2017-05-23 | International Business Machines Corporation | Providing high availability in an active/active appliance cluster |
US9860128B2 (en) * | 2013-02-19 | 2018-01-02 | Allied Telesis Holdings Kabushiki Kaisha | Automated command and discovery process for network communications |
US20140237047A1 (en) * | 2013-02-19 | 2014-08-21 | Allied Telesis, Inc. | Automated command and discovery process for network communications |
US9984036B2 (en) * | 2013-02-26 | 2018-05-29 | Nec Corporation | Communication system, control apparatus, communication method, and program |
US11496212B2 (en) | 2013-03-15 | 2022-11-08 | E.F. Johnson Company | Distributed simulcast architecture |
US20190372662A1 (en) * | 2013-03-15 | 2019-12-05 | E.F. Johnson Company | Distributed simulcast architecture |
US11936466B2 (en) | 2013-03-15 | 2024-03-19 | E.F. Johnson Company | Distributed land mobile radio architectures |
US20140273916A1 (en) * | 2013-03-15 | 2014-09-18 | E.F. Johnson Company | Distributed simulcast architecture |
US10880000B2 (en) * | 2013-03-15 | 2020-12-29 | E.F. Johnson Company | Distributed simulcast architecture |
US9774386B2 (en) * | 2013-03-15 | 2017-09-26 | E.F. Johnson Company | Distributed simulcast architecture |
US10461846B2 (en) * | 2013-03-15 | 2019-10-29 | E.F. Johnson Company | Distributed simulcast architecture |
US10148544B2 (en) * | 2013-04-06 | 2018-12-04 | Citrix Systems, Inc. | Systems and methods for cluster statistics aggregation |
US20140304402A1 (en) * | 2013-04-06 | 2014-10-09 | Citrix Systems, Inc. | Systems and methods for cluster statistics aggregation |
EP2797256A1 (en) * | 2013-04-25 | 2014-10-29 | Compal Broadband Networks Inc. | Method for repairing an access device failure |
WO2014207759A3 (en) * | 2013-06-20 | 2015-03-26 | Tata Consultancy Services Limited | System and method for distributed computation using heterogeneous computing nodes |
US9405488B1 (en) * | 2013-06-21 | 2016-08-02 | Emc Corporation | System and method for storage management |
US20150006633A1 (en) * | 2013-06-28 | 2015-01-01 | Apple Inc. | Operating a cluster of peer-to-peer devices |
US10003642B2 (en) * | 2013-06-28 | 2018-06-19 | Apple Inc. | Operating a cluster of peer-to-peer devices |
US10218564B2 (en) | 2013-07-08 | 2019-02-26 | Nicira, Inc. | Unified replication mechanism for fault-tolerance of state |
US9571304B2 (en) | 2013-07-08 | 2017-02-14 | Nicira, Inc. | Reconciliation of network state across physical domains |
US9602312B2 (en) | 2013-07-08 | 2017-03-21 | Nicira, Inc. | Storing network state at a network controller |
US10069676B2 (en) | 2013-07-08 | 2018-09-04 | Nicira, Inc. | Storing network state at a network controller |
US10868710B2 (en) | 2013-07-08 | 2020-12-15 | Nicira, Inc. | Managing forwarding of logical network traffic between physical domains |
US9667447B2 (en) | 2013-07-08 | 2017-05-30 | Nicira, Inc. | Managing context identifier assignment across multiple physical domains |
US9559870B2 (en) | 2013-07-08 | 2017-01-31 | Nicira, Inc. | Managing forwarding of logical network traffic between physical domains |
US9432252B2 (en) | 2013-07-08 | 2016-08-30 | Nicira, Inc. | Unified replication mechanism for fault-tolerance of state |
US11012292B2 (en) | 2013-07-08 | 2021-05-18 | Nicira, Inc. | Unified replication mechanism for fault-tolerance of state |
US9887960B2 (en) | 2013-08-14 | 2018-02-06 | Nicira, Inc. | Providing services for logical networks |
US11695730B2 (en) | 2013-08-14 | 2023-07-04 | Nicira, Inc. | Providing services for logical networks |
US10764238B2 (en) | 2013-08-14 | 2020-09-01 | Nicira, Inc. | Providing services for logical networks |
US9952885B2 (en) | 2013-08-14 | 2018-04-24 | Nicira, Inc. | Generation of configuration files for a DHCP module executing within a virtualized container |
US10110684B1 (en) * | 2013-08-15 | 2018-10-23 | Avi Networks | Transparent network service migration across service devices |
US11689631B2 (en) | 2013-08-15 | 2023-06-27 | Vmware, Inc. | Transparent network service migration across service devices |
US10623254B2 (en) | 2013-08-15 | 2020-04-14 | Nicira, Inc. | Hitless upgrade for network control applications |
US20150049632A1 (en) * | 2013-08-15 | 2015-02-19 | Nicira, Inc. | Hitless Upgrade for Network Control Applications |
US9973382B2 (en) * | 2013-08-15 | 2018-05-15 | Nicira, Inc. | Hitless upgrade for network control applications |
US10868875B2 (en) | 2013-08-15 | 2020-12-15 | Vmware, Inc. | Transparent network service migration across service devices |
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 |
US9503371B2 (en) | 2013-09-04 | 2016-11-22 | Nicira, Inc. | High availability L3 gateways for logical networks |
US10003534B2 (en) | 2013-09-04 | 2018-06-19 | Nicira, Inc. | Multiple active L3 gateways for logical networks |
US10693763B2 (en) | 2013-10-13 | 2020-06-23 | Nicira, Inc. | Asymmetric connection with external networks |
US10063458B2 (en) | 2013-10-13 | 2018-08-28 | Nicira, Inc. | Asymmetric connection with external networks |
US20170019869A1 (en) * | 2014-02-05 | 2017-01-19 | Lg Electronics Inc. | Method and device for transreceiving signals through nan terminal in wireless communication system |
US10142950B2 (en) * | 2014-02-05 | 2018-11-27 | Lg Electronics Inc. | Method and device for transreceiving signals through NAN terminal in wireless communication system |
US10455041B2 (en) * | 2014-02-20 | 2019-10-22 | Rovio Entertainment | Stateful service with partial replication |
US20150237121A1 (en) * | 2014-02-20 | 2015-08-20 | Rovio Entertainment Ltd. | Stateful service with partial replication |
US20150242501A1 (en) * | 2014-02-21 | 2015-08-27 | Streetlights LLC | Social network address book |
US9590901B2 (en) | 2014-03-14 | 2017-03-07 | Nicira, Inc. | Route advertisement by managed gateways |
US10164881B2 (en) | 2014-03-14 | 2018-12-25 | Nicira, Inc. | Route advertisement by managed gateways |
US11025543B2 (en) | 2014-03-14 | 2021-06-01 | Nicira, Inc. | Route advertisement by managed gateways |
US20150264127A1 (en) * | 2014-03-14 | 2015-09-17 | International Business Machines Corporation | Managing fabric priorities across heterogeneous server platforms |
US10567283B2 (en) | 2014-03-14 | 2020-02-18 | Nicira, Inc. | Route advertisement by managed gateways |
US10110431B2 (en) | 2014-03-14 | 2018-10-23 | Nicira, Inc. | Logical router processing by network controller |
US12047286B2 (en) | 2014-03-14 | 2024-07-23 | Nicira, Inc. | Route advertisement by managed gateways |
US9225597B2 (en) | 2014-03-14 | 2015-12-29 | Nicira, Inc. | Managed gateways peering with external router to attract ingress packets |
US9660878B2 (en) * | 2014-03-14 | 2017-05-23 | International Business Machines Corporation | Managing fabric priorities across heterogeneous server platforms |
US10289506B2 (en) | 2014-03-20 | 2019-05-14 | Netapp Inc. | Storage device health status synchronization |
US20150269043A1 (en) * | 2014-03-20 | 2015-09-24 | Netapp Inc. | Storage device health status synchronization |
US9348715B2 (en) * | 2014-03-20 | 2016-05-24 | Netapp Inc. | Storage device health status synchronization |
US10853210B2 (en) | 2014-03-20 | 2020-12-01 | Netapp Inc. | Storage device health status synchronization |
US9647883B2 (en) | 2014-03-21 | 2017-05-09 | Nicria, Inc. | Multiple levels of logical routers |
US10411955B2 (en) | 2014-03-21 | 2019-09-10 | Nicira, Inc. | Multiple levels of logical routers |
US11252024B2 (en) | 2014-03-21 | 2022-02-15 | Nicira, Inc. | Multiple levels of logical routers |
US20150271014A1 (en) * | 2014-03-21 | 2015-09-24 | Onyx Ccs | Automatic configuration of new components by infrastructure management software |
US20150294119A1 (en) * | 2014-04-10 | 2015-10-15 | International Business Machines Corporation | Booting a multi-node computer system from a primary node dynamically selected based on security setting criteria |
US20180248805A1 (en) * | 2014-04-24 | 2018-08-30 | A10 Networks, Inc. | Eliminating data traffic redirection in scalable clusters |
US9961130B2 (en) | 2014-04-24 | 2018-05-01 | A10 Networks, Inc. | Distributed high availability processing methods for service sessions |
US10742559B2 (en) * | 2014-04-24 | 2020-08-11 | A10 Networks, Inc. | Eliminating data traffic redirection in scalable clusters |
US10091120B2 (en) | 2014-05-05 | 2018-10-02 | Nicira, Inc. | Secondary input queues for maintaining a consistent network state |
US10164894B2 (en) | 2014-05-05 | 2018-12-25 | Nicira, Inc. | Buffered subscriber tables for maintaining a consistent network state |
US9602422B2 (en) | 2014-05-05 | 2017-03-21 | Nicira, Inc. | Implementing fixed points in network state updates using generation numbers |
US10146395B2 (en) * | 2014-05-06 | 2018-12-04 | T-Mobile Usa, Inc. | Quality of experience diagnosis and analysis in wireless communications |
US11722390B2 (en) | 2014-05-09 | 2023-08-08 | Amazon Technologies, Inc. | Establishing secured connections between premises outside a provider network |
US10623285B1 (en) * | 2014-05-09 | 2020-04-14 | Amazon Technologies, Inc. | Multi-mode health monitoring service |
US10325088B2 (en) | 2014-07-03 | 2019-06-18 | Alibaba Group Holding Limited | Method and system for information authentication |
US10275813B2 (en) | 2014-07-08 | 2019-04-30 | Alibaba Group Holding Limited | Method and system for providing a transaction platform for pre-owned merchandise |
US20160012525A1 (en) * | 2014-07-14 | 2016-01-14 | Alibaba Group Holding Limited | Method and system for managing residual value in distributed processing of transactions |
US10749737B2 (en) | 2014-08-01 | 2020-08-18 | E.F. Johnson Company | Interoperability gateway for land mobile radio system |
US9800460B2 (en) | 2014-08-01 | 2017-10-24 | E.F. Johnson Company | Interoperability gateway for land mobile radio system |
US10212026B2 (en) | 2014-08-01 | 2019-02-19 | E.F. Johnson Company | Interoperability gateway for land mobile radio system |
US10177994B2 (en) | 2014-08-13 | 2019-01-08 | Microsoft Technology Licensing, Llc | Fault tolerant federation of computing clusters |
US11290524B2 (en) | 2014-08-13 | 2022-03-29 | Microsoft Technology Licensing, Llc | Scalable fault resilient communications within distributed clusters |
US10248954B2 (en) | 2014-08-14 | 2019-04-02 | Alibaba Group Holding Limited | Method and system for verifying user identity using card features |
US10362059B2 (en) * | 2014-09-24 | 2019-07-23 | Oracle International Corporation | Proxy servers within computer subnetworks |
US10824414B2 (en) | 2014-09-26 | 2020-11-03 | Oracle International Corporation | Drift management of images |
US10275326B1 (en) * | 2014-10-31 | 2019-04-30 | Amazon Technologies, Inc. | Distributed computing system failure detection |
US10004082B2 (en) | 2014-11-06 | 2018-06-19 | E.F. Johnson Company | System and method for dynamic channel allocation |
US10791566B2 (en) | 2014-11-06 | 2020-09-29 | E.F. Johnson Company | System and method for dynamic channel allocation |
US9763260B2 (en) | 2014-11-06 | 2017-09-12 | E.F. Johnson Company | System and method for dynamic channel allocaton |
US10755345B2 (en) | 2014-12-03 | 2020-08-25 | Alibaba Group Holding Limited | System and method for secure account transfer |
US11061786B1 (en) | 2014-12-11 | 2021-07-13 | Pure Storage, Inc. | Cloud-based disaster recovery of a storage system |
US11775392B2 (en) | 2014-12-11 | 2023-10-03 | Pure Storage, Inc. | Indirect replication of a dataset |
US10235065B1 (en) * | 2014-12-11 | 2019-03-19 | Pure Storage, Inc. | Datasheet replication in a cloud computing environment |
US9552248B2 (en) * | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US10579973B2 (en) | 2015-01-19 | 2020-03-03 | Alibaba Group Holding Limited | System for efficient processing of transaction requests related to an account in a database |
US10079779B2 (en) | 2015-01-30 | 2018-09-18 | Nicira, Inc. | Implementing logical router uplinks |
US10129180B2 (en) | 2015-01-30 | 2018-11-13 | Nicira, Inc. | Transit logical switch within logical router |
US11283731B2 (en) | 2015-01-30 | 2022-03-22 | Nicira, Inc. | Logical router with multiple routing components |
US10700996B2 (en) | 2015-01-30 | 2020-06-30 | Nicira, Inc | Logical router with multiple routing components |
US11799800B2 (en) | 2015-01-30 | 2023-10-24 | Nicira, Inc. | Logical router with multiple routing components |
US10249013B2 (en) | 2015-02-03 | 2019-04-02 | Alibaba Group Holding Limited | Method and system for wireless payment of public transport fare |
US10521276B2 (en) | 2015-02-12 | 2019-12-31 | Netapp Inc. | Load balancing and fault tolerant service in a distributed data system |
US9785480B2 (en) * | 2015-02-12 | 2017-10-10 | Netapp, Inc. | Load balancing and fault tolerant service in a distributed data system |
US11681566B2 (en) | 2015-02-12 | 2023-06-20 | Netapp, Inc. | Load balancing and fault tolerant service in a distributed data system |
US20160239350A1 (en) * | 2015-02-12 | 2016-08-18 | Netapp, Inc. | Load balancing and fault tolerant service in a distributed data system |
US11080100B2 (en) | 2015-02-12 | 2021-08-03 | Netapp, Inc. | Load balancing and fault tolerant service in a distributed data system |
US11283697B1 (en) | 2015-03-24 | 2022-03-22 | Vmware, Inc. | Scalable real time metrics management |
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 |
US12058041B2 (en) | 2015-04-04 | 2024-08-06 | 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 |
US9923760B2 (en) | 2015-04-06 | 2018-03-20 | Nicira, Inc. | Reduction of churn in a network control system |
US9967134B2 (en) | 2015-04-06 | 2018-05-08 | Nicira, Inc. | Reduction of network churn based on differences in input state |
US20220070061A1 (en) * | 2015-04-10 | 2022-03-03 | Bluecat Networks, Inc. | Methods and systems for dhcp policy management |
US12212476B2 (en) * | 2015-06-05 | 2025-01-28 | Cisco Technology, Inc. | System and method for network policy simulation |
US20230040556A1 (en) * | 2015-06-05 | 2023-02-09 | Cisco Technology, Inc. | System and method for network policy simulation |
US10110475B2 (en) * | 2015-07-16 | 2018-10-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Restoration method for an MPLS ring network |
US20170155575A1 (en) * | 2015-07-16 | 2017-06-01 | Telefonaktiebolaget L M Ericsson (Publ) | Restoration method for an mpls ring network |
US10805212B2 (en) | 2015-08-11 | 2020-10-13 | Nicira, Inc. | Static route configuration for logical router |
US10230629B2 (en) | 2015-08-11 | 2019-03-12 | Nicira, Inc. | Static route configuration for logical router |
US10129142B2 (en) | 2015-08-11 | 2018-11-13 | Nicira, Inc. | Route configuration for logical router |
US11533256B2 (en) | 2015-08-11 | 2022-12-20 | Nicira, Inc. | Static route configuration for logical router |
US10122626B2 (en) | 2015-08-27 | 2018-11-06 | Nicira, Inc. | Self-managed overlay networks |
US10153918B2 (en) | 2015-08-27 | 2018-12-11 | Nicira, Inc. | Joining an application cluster |
US11206188B2 (en) | 2015-08-27 | 2021-12-21 | Nicira, Inc. | Accessible application cluster topology |
US10462011B2 (en) | 2015-08-27 | 2019-10-29 | Nicira, Inc. | Accessible application cluster topology |
US20170061163A1 (en) * | 2015-08-28 | 2017-03-02 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Maintaining cryptoprocessor types in a multinode environment |
US9916476B2 (en) * | 2015-08-28 | 2018-03-13 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Maintaining cryptoprocessor types in a multinode environment |
US11425021B2 (en) | 2015-08-31 | 2022-08-23 | Nicira, Inc. | Authorization for advertised routes among logical routers |
US10057157B2 (en) | 2015-08-31 | 2018-08-21 | Nicira, Inc. | Automatically advertising NAT routes between logical routers |
US10601700B2 (en) | 2015-08-31 | 2020-03-24 | Nicira, Inc. | Authorization for advertised routes among logical routers |
US10075363B2 (en) | 2015-08-31 | 2018-09-11 | Nicira, Inc. | Authorization for advertised routes among logical routers |
US10044581B1 (en) | 2015-09-29 | 2018-08-07 | Amazon Technologies, Inc. | Network traffic tracking using encapsulation protocol |
US10917322B2 (en) | 2015-09-29 | 2021-02-09 | Amazon Technologies, Inc. | Network traffic tracking using encapsulation protocol |
US10033602B1 (en) | 2015-09-29 | 2018-07-24 | Amazon Technologies, Inc. | Network health management using metrics from encapsulation protocol endpoints |
US11288249B2 (en) | 2015-09-30 | 2022-03-29 | Nicira, Inc. | Implementing an interface between tuple and message-driven control entities |
US10204122B2 (en) | 2015-09-30 | 2019-02-12 | Nicira, Inc. | Implementing an interface between tuple and message-driven control entities |
US10296636B2 (en) | 2015-10-09 | 2019-05-21 | Alibaba Group Holding Limited | Efficient navigation category management |
US10795716B2 (en) | 2015-10-31 | 2020-10-06 | Nicira, Inc. | Static route types for logical routers |
US10095535B2 (en) | 2015-10-31 | 2018-10-09 | Nicira, Inc. | Static route types for logical routers |
US11593145B2 (en) | 2015-10-31 | 2023-02-28 | Nicira, Inc. | Static route types for logical routers |
US20170171304A1 (en) * | 2015-12-09 | 2017-06-15 | Le Holdings (Beijing) Co., Ltd. | Service updating method and system for server cluster |
US10069689B1 (en) * | 2015-12-18 | 2018-09-04 | Amazon Technologies, Inc. | Cache based on dynamic device clustering |
US20180375739A1 (en) * | 2015-12-18 | 2018-12-27 | Amazon Technologies, Inc. | Cache based on dynamic device clustering |
US10616069B2 (en) * | 2015-12-18 | 2020-04-07 | Amazon Technologies, Inc. | Cache based on dynamic device clustering |
US10243963B1 (en) * | 2015-12-18 | 2019-03-26 | Symantec Corporation | Systems and methods for generating device-specific security policies for applications |
US20170195426A1 (en) * | 2015-12-31 | 2017-07-06 | Ricoh Company, Ltd. | Maintaining session across plural providing devices |
US10318288B2 (en) | 2016-01-13 | 2019-06-11 | A10 Networks, Inc. | System and method to process a chain of network applications |
US10680877B2 (en) * | 2016-03-08 | 2020-06-09 | Beijing Jingdong Shangke Information Technology Co., Ltd. | Information transmission, sending, and acquisition method and device |
US9942787B1 (en) | 2016-03-22 | 2018-04-10 | Amazon Technologies, Inc. | Virtual private network connection quality analysis |
US10333849B2 (en) | 2016-04-28 | 2019-06-25 | 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 |
US10805220B2 (en) | 2016-04-28 | 2020-10-13 | Nicira, Inc. | Automatic configuration of logical routers on edge nodes |
US11601521B2 (en) | 2016-04-29 | 2023-03-07 | Nicira, Inc. | Management of update queues for network controller |
US11019167B2 (en) | 2016-04-29 | 2021-05-25 | Nicira, Inc. | Management of update queues for network controller |
US10484515B2 (en) | 2016-04-29 | 2019-11-19 | Nicira, Inc. | Implementing logical metadata proxy servers in logical networks |
US10841273B2 (en) | 2016-04-29 | 2020-11-17 | Nicira, Inc. | Implementing logical DHCP servers in logical networks |
US11855959B2 (en) | 2016-04-29 | 2023-12-26 | Nicira, Inc. | Implementing logical DHCP servers in logical networks |
US10091161B2 (en) | 2016-04-30 | 2018-10-02 | Nicira, Inc. | Assignment of router ID for logical routers |
US11418445B2 (en) | 2016-06-29 | 2022-08-16 | Nicira, Inc. | Installation of routing tables for logical router in route server mode |
US12058045B2 (en) | 2016-06-29 | 2024-08-06 | Nicira, Inc. | Installation of routing tables for logical router in route server mode |
US10560320B2 (en) | 2016-06-29 | 2020-02-11 | Nicira, Inc. | Ranking of gateways in cluster |
US10153973B2 (en) | 2016-06-29 | 2018-12-11 | Nicira, Inc. | Installation of routing tables for logical router in route server mode |
US10749801B2 (en) | 2016-06-29 | 2020-08-18 | Nicira, Inc. | Installation of routing tables for logical router in route server mode |
US11019490B2 (en) * | 2016-07-01 | 2021-05-25 | Intel Corporation | Group management in reconfigurable machine-to-machine systems |
CN109314694A (en) * | 2016-07-01 | 2019-02-05 | 英特尔公司 | Group management in reconfigurable machine-to-machine systems |
US10277456B2 (en) * | 2016-08-26 | 2019-04-30 | International Business Machines Corporation | Network-enabled devices |
US20180091362A1 (en) * | 2016-08-26 | 2018-03-29 | International Business Machines Corporation | Network-enabled devices |
US10680878B2 (en) * | 2016-08-26 | 2020-06-09 | International Business Machines Corporation | Network-enabled devices |
US11539574B2 (en) | 2016-08-31 | 2022-12-27 | Nicira, Inc. | Edge node cluster network redundancy and fast convergence using an underlay anycast VTEP IP |
US10454758B2 (en) | 2016-08-31 | 2019-10-22 | Nicira, Inc. | Edge node cluster network redundancy and fast convergence using an underlay anycast VTEP IP |
US10491671B2 (en) * | 2016-09-14 | 2019-11-26 | Beijing Baidu Netcom Science and Technology Co., Ltd | Method and apparatus for switching between servers in server cluster |
US20180077230A1 (en) * | 2016-09-14 | 2018-03-15 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for switching between servers in server cluster |
US10243820B2 (en) | 2016-09-28 | 2019-03-26 | Amazon Technologies, Inc. | Filtering network health information based on customer impact |
US10911263B2 (en) | 2016-09-28 | 2021-02-02 | Amazon Technologies, Inc. | Programmatic interfaces for network health information |
US10862777B2 (en) | 2016-09-28 | 2020-12-08 | Amazon Technologies, Inc. | Visualization of network health information |
US12068938B2 (en) | 2016-09-28 | 2024-08-20 | Amazon Technologies, Inc. | Network health data aggregation service |
US11641319B2 (en) | 2016-09-28 | 2023-05-02 | Amazon Technologies, Inc. | Network health data aggregation service |
US10341236B2 (en) | 2016-09-30 | 2019-07-02 | Nicira, Inc. | Anycast edge service gateways |
US10911360B2 (en) | 2016-09-30 | 2021-02-02 | Nicira, Inc. | Anycast edge service gateways |
US10362095B2 (en) * | 2016-11-04 | 2019-07-23 | Airwatch Llc | Distributed network diagnostics of enterprise devices utilizing device management |
US10931740B2 (en) * | 2016-11-04 | 2021-02-23 | Airwatch Llc | Distributed network diagnostics of enterprise devices utilizing device management |
US11516072B2 (en) * | 2016-12-16 | 2022-11-29 | Amazon Technologies, Inc. | Hybrid cluster recovery techniques |
US10454754B1 (en) * | 2016-12-16 | 2019-10-22 | Amazon Technologies, Inc. | Hybrid cluster recovery techniques |
US10645204B2 (en) | 2016-12-21 | 2020-05-05 | Nicira, Inc | Dynamic recovery from a split-brain failure in edge nodes |
US11665242B2 (en) | 2016-12-21 | 2023-05-30 | Nicira, Inc. | Bypassing a load balancer in a return path of network traffic |
US10742746B2 (en) | 2016-12-21 | 2020-08-11 | Nicira, Inc. | Bypassing a load balancer in a return path of network traffic |
US10212071B2 (en) | 2016-12-21 | 2019-02-19 | Nicira, Inc. | Bypassing a load balancer in a return path of network traffic |
US10237123B2 (en) | 2016-12-21 | 2019-03-19 | 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 |
US20180189498A1 (en) * | 2016-12-29 | 2018-07-05 | Paypal, Inc. | Device monitoring policy |
US10223536B2 (en) * | 2016-12-29 | 2019-03-05 | Paypal, Inc. | Device monitoring policy |
US10541876B2 (en) * | 2017-02-14 | 2020-01-21 | Nicira, Inc. | Inter-connecting logical control planes for state data exchange |
US10911315B2 (en) | 2017-02-14 | 2021-02-02 | Nicira, Inc. | Inter-connecting local control planes for state data exchange |
US11063915B1 (en) * | 2017-03-24 | 2021-07-13 | Amazon Technologies, Inc. | Cluster of network-attachable storage devices with cluster manifest |
US20180287801A1 (en) * | 2017-03-28 | 2018-10-04 | Amazon Technologies, Inc. | Efficient device provision |
US20180288049A1 (en) * | 2017-03-28 | 2018-10-04 | Amazon Technologies, Inc. | Data access interface for clustered devices |
US10621055B2 (en) * | 2017-03-28 | 2020-04-14 | Amazon Technologies, Inc. | Adaptive data recovery for clustered data devices |
US10530752B2 (en) * | 2017-03-28 | 2020-01-07 | Amazon Technologies, Inc. | Efficient device provision |
US11356445B2 (en) * | 2017-03-28 | 2022-06-07 | Amazon Technologies, Inc. | Data access interface for clustered devices |
US10917289B2 (en) | 2017-07-13 | 2021-02-09 | Cisco Technology, Inc. | Handling network failures in networks with redundant servers |
US10469311B2 (en) | 2017-07-13 | 2019-11-05 | Cisco Technology, Inc. | Handling network failures in networks with redundant servers |
US10956843B2 (en) | 2017-11-07 | 2021-03-23 | International Business Machines Corporation | Determining optimal device refresh cycles and device repairs through cognitive analysis of unstructured data and device health scores |
US20190173840A1 (en) * | 2017-12-01 | 2019-06-06 | Kohl's Department Stores, Inc. | Cloud services management system and method |
US10938787B2 (en) * | 2017-12-01 | 2021-03-02 | Kohl's, Inc. | Cloud services management system and method |
US20190238399A1 (en) * | 2018-01-31 | 2019-08-01 | Hewlett Packard Enterprise Development Lp | Identification of a soft failure at a member |
US11102060B2 (en) * | 2018-01-31 | 2021-08-24 | Hewlett Packard Enterprise Development Lp | Identification of a soft failure at a member |
US20190253455A1 (en) * | 2018-02-09 | 2019-08-15 | Vmware, Inc. | Policy strength of managed devices |
US10931716B2 (en) * | 2018-02-09 | 2021-02-23 | Vmware, Inc. | Policy strength of managed devices |
US11538039B2 (en) | 2018-02-12 | 2022-12-27 | Advanced New Technologies Co., Ltd. | Method and system for facilitating risk control of an online financial platform |
US12159305B2 (en) | 2018-03-07 | 2024-12-03 | Advanced New Technologies Co., Ltd. | Content-recommendation method and apparatus, electronic device, and system |
US11816714B2 (en) | 2018-03-19 | 2023-11-14 | Advanced New Technologies Co., Ltd. | Service verification method and apparatus |
CN108874640A (en) * | 2018-05-07 | 2018-11-23 | 北京京东尚科信息技术有限公司 | A kind of appraisal procedure and device of clustering performance |
US20210075712A1 (en) * | 2018-05-21 | 2021-03-11 | Promptlink Communications, Inc. | Systems and techniques for assessing a customer premises equipment device |
US12028235B2 (en) | 2018-05-21 | 2024-07-02 | Promptlink Communications, Inc. | Systems and techniques for assessing a customer premises equipment device |
US11595290B2 (en) * | 2018-05-21 | 2023-02-28 | Promptlink Communications, Inc. | Systems and techniques for assessing a customer premises equipment device |
EP3805923A4 (en) * | 2018-05-29 | 2022-03-02 | Hitachi, Ltd. | INFORMATION PROCESSING SYSTEM, INFORMATION PROCESSING DEVICE AND METHOD FOR CONTROLLING THE INFORMATION PROCESSING SYSTEM |
US10884881B2 (en) * | 2018-07-11 | 2021-01-05 | Hitachi, Ltd. | Scale-out storage system and configuration information control method for implementing high-availability, high-speed failover |
US20200019478A1 (en) * | 2018-07-11 | 2020-01-16 | Hitachi, Ltd. | Storage system and configuration information control method |
US20200084088A1 (en) * | 2018-09-10 | 2020-03-12 | Oracle International Corporation | Determining The Health Of Other Nodes In A Same Cluster Based On Physical Link Information |
US10868709B2 (en) * | 2018-09-10 | 2020-12-15 | Oracle International Corporation | Determining the health of other nodes in a same cluster based on physical link information |
US11463303B2 (en) | 2018-09-10 | 2022-10-04 | Oracle International Corporation | Determining the health of other nodes in a same cluster based on physical link information |
US11558253B2 (en) * | 2018-09-12 | 2023-01-17 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and computing node for updating container images |
JP2021536642A (en) * | 2018-09-12 | 2021-12-27 | 華為技術有限公司Huawei Technologies Co., Ltd. | Data processing methods and devices, and computing nodes |
JP7192103B2 (en) | 2018-09-12 | 2022-12-19 | 華為技術有限公司 | DATA PROCESSING METHOD AND APPARATUS, AND COMPUTING NODE |
US10931560B2 (en) | 2018-11-23 | 2021-02-23 | Vmware, Inc. | Using route type to determine routing protocol behavior |
US12189778B2 (en) | 2018-11-29 | 2025-01-07 | Battelle Energy Alliance, Llc | Systems and methods for control system security |
US10896261B2 (en) | 2018-11-29 | 2021-01-19 | Battelle Energy Alliance, Llc | Systems and methods for control system security |
US10797998B2 (en) | 2018-12-05 | 2020-10-06 | Vmware, Inc. | Route server for distributed routers using hierarchical routing protocol |
US11728978B2 (en) * | 2018-12-12 | 2023-08-15 | Advanced New Technologies Co., Ltd. | Method and apparatus for establishing trusted channel between user and trusted computing cluster |
US11121865B2 (en) * | 2018-12-12 | 2021-09-14 | Advanced New Technologies Co., Ltd. | Method and apparatus for establishing trusted channel between user and trusted computing cluster |
US20220021520A1 (en) * | 2018-12-12 | 2022-01-20 | Advanced New Technologies Co., Ltd. | Method and apparatus for establishing trusted channel between user and trusted computing cluster |
US10938788B2 (en) | 2018-12-12 | 2021-03-02 | Vmware, Inc. | Static routes for policy-based VPN |
CN109873801A (en) * | 2018-12-12 | 2019-06-11 | 阿里巴巴集团控股有限公司 | The method and device of trusted channel is established between user and trust computing cluster |
KR102134549B1 (en) | 2018-12-13 | 2020-07-27 | 알리바바 그룹 홀딩 리미티드 | Change of primary node in distributed system |
KR20200074912A (en) * | 2018-12-13 | 2020-06-25 | 알리바바 그룹 홀딩 리미티드 | Change of primary node in distributed system |
US10791107B2 (en) | 2018-12-13 | 2020-09-29 | Alibaba Group Holding Limited | Performing a change of primary node in a distributed system |
WO2019072296A2 (en) | 2018-12-13 | 2019-04-18 | Alibaba Group Holding Limited | Performing a change of primary node in a distributed system |
TWI705690B (en) * | 2018-12-13 | 2020-09-21 | 香港商阿里巴巴集團服務有限公司 | System for changing master node in distributed network |
EP3566397A4 (en) * | 2018-12-13 | 2020-03-04 | Alibaba Group Holding Limited | IMPLEMENTING A PRIMARY NODE CHANGE IN A DISTRIBUTED SYSTEM |
US10630672B2 (en) | 2018-12-13 | 2020-04-21 | Alibaba Group Holding Limited | Performing a change of primary node in a distributed system |
US11252068B1 (en) * | 2018-12-27 | 2022-02-15 | Equinix, Inc. | Clock synchronization in a heterogeneous system |
US11252065B1 (en) | 2018-12-27 | 2022-02-15 | Equinix, Inc. | Clock synchronization in a heterogeneous system |
US11197075B1 (en) | 2018-12-27 | 2021-12-07 | Equinix, Inc. | Clock synchronization in a heterogeneous system |
US20220078187A1 (en) * | 2018-12-29 | 2022-03-10 | Advanced New Technologies Co., Ltd. | Method and apparatus for establishing trusted computing cluster |
US11792190B2 (en) * | 2018-12-29 | 2023-10-17 | Advanced New Technologies Co., Ltd. | Method and apparatus for establishing trusted computing cluster |
US11196741B2 (en) * | 2018-12-29 | 2021-12-07 | Advanced New Technologies Co., Ltd. | Method and apparatus for establishing trusted computing cluster |
US11057478B2 (en) * | 2019-05-23 | 2021-07-06 | Fortinet, Inc. | Hybrid cluster architecture for reverse proxies |
US11128522B2 (en) * | 2019-06-28 | 2021-09-21 | Advanced New Technologies Co., Ltd. | Changing a master node in a blockchain system |
US11374814B2 (en) * | 2019-08-01 | 2022-06-28 | Hewlett Packard Enterprise Development Lp | Network device configuration update using rank and health |
US11044174B2 (en) * | 2019-08-26 | 2021-06-22 | Citrix Systems, Inc. | Systems and methods for disabling services in a cluster |
US11159343B2 (en) | 2019-08-30 | 2021-10-26 | Vmware, Inc. | Configuring traffic optimization using distributed edge services |
US11095480B2 (en) | 2019-08-30 | 2021-08-17 | Vmware, Inc. | Traffic optimization using distributed edge services |
US11297090B2 (en) * | 2019-09-11 | 2022-04-05 | International Business Machines Corporation | Security evaluation for computing workload relocation |
US11606294B2 (en) | 2020-07-16 | 2023-03-14 | Vmware, Inc. | Host computer configured to facilitate distributed SNAT service |
US11616755B2 (en) | 2020-07-16 | 2023-03-28 | Vmware, Inc. | Facilitating distributed SNAT service |
US12250194B2 (en) | 2020-07-16 | 2025-03-11 | VMware LLC | Facilitating distributed SNAT service |
US11611613B2 (en) | 2020-07-24 | 2023-03-21 | Vmware, Inc. | Policy-based forwarding to a load balancer of a load balancing cluster |
US12166816B2 (en) | 2020-07-24 | 2024-12-10 | VMware LLC | Policy-based forwarding to a load balancer of a load balancing cluster |
US11451413B2 (en) | 2020-07-28 | 2022-09-20 | Vmware, Inc. | Method for advertising availability of distributed gateway service and machines at host computer |
US11902050B2 (en) | 2020-07-28 | 2024-02-13 | VMware LLC | Method for providing distributed gateway service at host computer |
US11343134B1 (en) * | 2020-11-05 | 2022-05-24 | Dell Products L.P. | System and method for mitigating analytics loads between hardware devices |
Also Published As
Publication number | Publication date |
---|---|
US8316113B2 (en) | 2012-11-20 |
WO2010071882A2 (en) | 2010-06-24 |
US20100162383A1 (en) | 2010-06-24 |
US8392496B2 (en) | 2013-03-05 |
US9203865B2 (en) | 2015-12-01 |
WO2010071884A2 (en) | 2010-06-24 |
WO2010071884A3 (en) | 2010-09-30 |
US20100169446A1 (en) | 2010-07-01 |
WO2010071888A3 (en) | 2010-10-07 |
US20130191881A1 (en) | 2013-07-25 |
WO2010071888A2 (en) | 2010-06-24 |
WO2010071882A3 (en) | 2010-10-14 |
US20160164764A1 (en) | 2016-06-09 |
US20130173766A1 (en) | 2013-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9203865B2 (en) | Cluster architecture for network security processing | |
US20220294701A1 (en) | Method and system of connecting to a multipath hub in a cluster | |
US10257265B2 (en) | Redundancy network protocol system | |
CN114726786B (en) | Route advertisement for managed gateways | |
CN108293001B (en) | A software-defined data center and a deployment method for a service cluster therein | |
US9930018B2 (en) | System and method for providing source ID spoof protection in an infiniband (IB) network | |
US9455898B2 (en) | System and method for facilitating protection against run-away subnet manager instances in a middleware machine environment | |
US9935848B2 (en) | System and method for supporting subnet manager (SM) level robust handling of unkown management key in an infiniband (IB) network | |
US9391959B2 (en) | Automated control plane for limited user destruction | |
US20140105031A1 (en) | Feature peer network representations and scalable feature peer network management | |
CN106487556A (en) | The dispositions method of business function SF and device | |
US11831677B2 (en) | DHCP-communications monitoring by a network controller in software defined network environments | |
US12015521B2 (en) | Using an application programming interface (API) gateway to manage communications in a distributed system | |
CN114448790A (en) | An adaptive configuration system, method, network device and storage medium | |
US11133960B2 (en) | Systems and methods for configuring virtual networks | |
KR20170040089A (en) | METHOD FOR AUTONOMIC NETWORKING OF IoT(INTERNET OF THINGS) DEVICES AT INFRASTRUCTURE-LESS ENVIRONMENT | |
Wolinsky et al. | On the design and implementation of structured P2P VPNs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: WATCHGUARD TECHNOLOGIES, INC.,WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LINDEN, THOMAS;HUANG, JAMES;HSU, JEFF;AND OTHERS;SIGNING DATES FROM 20090511 TO 20091012;REEL/FRAME:023684/0064 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: WATCHGUARD TECHNOLOGIES, INC., WASHINGTON Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF MONTREAL, AS ADMINISTRATIVE AGENT;REEL/FRAME:035995/0466 Effective date: 20150629 |