Cluster Architecture and Configuration for Network Security Devices
Claim Score by NHIP
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.

Term
3.7 yearsto projected expiry
Projected expiry 28 May 2030, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
31 claims: 3 independent, 28 dependent
- 1Broadest claimClaim Score 73, broad(NHIP)A computer-readable storage medium comprising instructions configured to cause a computing device to perform a method for adding a computing device to a cluster, the method comprising:discovering the computing device on a communication network;transmitting a device-specific configuration to the computing device comprising cluster configuration data and a role assignment;verifying that the computing device has implemented the device-specific configuration;and including the computing device in a secure cluster communications channel when implementation of the device-specific configuration by the computing device is verified.
- 17A system comprising:a cluster comprising a plurality of computing devices;a cluster network interface, communicatively coupling the plurality of computing devices in the cluster;and a cluster management module implemented on one of the cluster computing devices, the cluster management module configured to, upon discovering a new computing device, determine a role of the new computing device in the cluster, transmit a device-specific configuration to the new computing device comprising a cluster configuration and the determined role, and to join the new computing device to a secure cluster communications channel when implementation of the device-specific configuration by the new computing device is verified.
- 26A method for adding a computing device to a cluster comprising a plurality of computing devices, each of the computing devices comprising a processor, memory, and communications interface communicatively coupled to a cluster network, the method comprising:discovering a new computing device on the cluster network;receiving device-identifying information pertaining to the new computing device via the cluster network;generating a device-specific configuration for the new computing device using the device-identifying information;transmitting the device-specific configuration to the new computing device via the cluster network;and verifying implementation of the device-specific configuration by the new computing device;and establishing a shared key with the new computing device for secure cluster communications when implementation of the device-specific configuration is verified.
Independent claims3
220 paragraphs in 4 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS
p-0002This 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.
TECHNICAL FIELD
p-0003This disclosure relates to network services and, in particular, to formation of a cluster comprising two or more computing devices configured to provide network services.
BRIEF DESCRIPTION OF THE DRAWINGS
p-0004Additional aspects and advantages will be apparent from the following detailed description of preferred embodiments, which proceeds with reference to the accompanying drawings.
p-0005<figref idrefs="DRAWINGS">FIG. 1</figref> is a block diagram of one embodiment of a cluster;
p-0006<figref idrefs="DRAWINGS">FIG. 2A</figref> is a state diagram depicting a method for adding a device to a cluster;
p-0007<figref idrefs="DRAWINGS">FIG. 2B</figref> is a flow diagram of one embodiment of a method for adding a device to a cluster;
p-0008<figref idrefs="DRAWINGS">FIG. 3A</figref> depicts the relationships and/or transitions between cluster device operational modes;
p-0009<figref idrefs="DRAWINGS">FIG. 3B</figref> depicts data flow between cluster devices;
p-0010<figref idrefs="DRAWINGS">FIG. 3C</figref> is a flow diagram of one embodiment of a method for monitoring cluster devices;
p-0011<figref idrefs="DRAWINGS">FIG. 3D</figref> is a flow diagram of one embodiment of a method for performing a cluster failover operation;
p-0012<figref idrefs="DRAWINGS">FIG. 4</figref> is a block diagram of one embodiment of a cluster device;
p-0013<figref idrefs="DRAWINGS">FIG. 5</figref> is a flow diagram depicting one embodiment of a method for assigning a flow to a cluster device;
p-0014<figref idrefs="DRAWINGS">FIG. 6A</figref> 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;
p-0015<figref idrefs="DRAWINGS">FIG. 6B</figref> is a block diagram depicting another example of related flow assignment, in which related flows are assigned to the same cluster device;
p-0016<figref idrefs="DRAWINGS">FIG. 6C</figref> 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;
p-0017<figref idrefs="DRAWINGS">FIG. 6D</figref> 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;
p-0018<figref idrefs="DRAWINGS">FIG. 6E</figref> 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;
p-0019<figref idrefs="DRAWINGS">FIG. 6F</figref> 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;
p-0020<figref idrefs="DRAWINGS">FIG. 7</figref> is a block diagram illustrating one embodiment of a cluster comprising a shared Internet Key Exchange module;
p-0021<figref idrefs="DRAWINGS">FIG. 8</figref> is a block diagram illustrating one embodiment of a cluster comprising distributed Internet Key Exchange modules;
p-0022<figref idrefs="DRAWINGS">FIG. 9A</figref> is a block diagram depicting an example of flow assignment in a cluster comprising a shared Internet Key Exchange module;
p-0023<figref idrefs="DRAWINGS">FIG. 9B</figref> is a block diagram depicting an example of flow assignment in a cluster comprising distributed Internet Key Exchange modules;
p-0024<figref idrefs="DRAWINGS">FIG. 10</figref> is a flow diagram of another embodiment of a method for assigning network flows to cluster devices.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
p-0025As 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).
p-0026A 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.
p-0027A 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.
p-0028One 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).
p-0029The 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).
p-0030In 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.
p-0031Another 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).
p-0032<figref idrefs="DRAWINGS">FIG. 1</figref> is a block diagram of one example of a system comprising a cluster of communicatively coupled computing devices. The cluster <b>110</b> of <figref idrefs="DRAWINGS">FIG. 1</figref> may be configured to provide the network communications and security services described above (e.g., firewall, packet filtering, VPN, and so on).
p-0033In the <figref idrefs="DRAWINGS">FIG. 1</figref> example, the cluster <b>110</b> comprises three computing devices <b>112</b>, <b>114</b>, and <b>116</b>. However, the disclosure is not limited in this regard, and the cluster <b>110</b> could be configured to include any number of computing devices.
p-0034The cluster <b>110</b> is configured to communicatively couple an organization <b>130</b> to a network <b>140</b>. The network <b>140</b> 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, the network <b>130</b> 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.
p-0035The cluster <b>110</b> may include a network interface <b>120</b> to communicatively couple the cluster <b>110</b> (and the organization <b>130</b>) with the network <b>140</b>. The cluster interface <b>120</b> may be shared among the computing devices <b>112</b>, <b>114</b>, and <b>116</b>, in the cluster <b>110</b>. Accordingly, the cluster <b>110</b> may appear as a single device to the network <b>130</b>. In some embodiments, an additional communications interface <b>122</b> (organization interface <b>122</b>) may be provided for communication with the organization <b>130</b>. The network interface <b>120</b> and organization interface <b>122</b> 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 the organization <b>130</b> and the network <b>140</b> may pass through the cluster <b>110</b>, 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 <b>110</b> may provide for secure access to services within the organization <b>130</b> by entities within the network <b>140</b> (e.g., provide VPN services). For example, a VPN may allow an entity <b>142</b> communicatively coupled to the network <b>140</b> using a computing device <b>143</b> (e.g., personal computer, laptop computer, notebook computer, or the like), to access a mail server <b>134</b> and/or file server <b>136</b> within the organization <b>130</b>.
p-0036The computing devices <b>112</b>, <b>114</b>, and <b>116</b> in the cluster <b>110</b> may also be communicatively coupled to one another. In some embodiments, the devices <b>112</b>, <b>114</b>, and <b>116</b> may each be communicatively coupled using respective, dedicated cluster interface ports <b>111</b>A, <b>111</b>B, and <b>111</b>C. The cluster interface ports <b>111</b>A, <b>111</b>B, and <b>111</b>C may be concentrated in cluster network interface <b>124</b>, which may be comprise one or more routers, switches, concentrators, hubs, or the like.
p-0037The devices <b>112</b>, <b>114</b>, and <b>116</b> may communicate cluster-specific information (discussed below) using the cluster interface port <b>111</b>A, <b>111</b>B, and <b>111</b>C (via the cluster interface <b>124</b>). In some embodiments, the devices <b>112</b>, <b>114</b>, and <b>116</b> may be configured to implement a cluster-specific protocol on the cluster interface ports <b>111</b>A, <b>111</b>B, and <b>111</b>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. 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 the device <b>112</b>, <b>114</b>, and/or <b>116</b>.
p-0038The cluster <b>110</b> may be formed by designating one of the computing devices <b>112</b>, <b>114</b>, or <b>116</b> to act as a cluster master. In the <figref idrefs="DRAWINGS">FIG. 1</figref> example, computing device <b>112</b> 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 <b>112</b> with a cluster configuration, which may define the tasks and/or services to be provided by the cluster <b>110</b>. For example, a cluster configuration may determine the security services to be provided by the cluster <b>110</b> (e.g., packet filtering, VPN, etc.), define the security policy to be implemented by the cluster <b>110</b>, and so on. Configuring the cluster master may further comprise setting a “cluster enabled” flag on the designated computing device <b>112</b>, setting a cluster identifier (e.g., cluster name), designating one or more ports for cluster communication (e.g., cluster interface port <b>111</b>A), and so on. When the computing device <b>112</b> is so configured, the cluster <b>110</b> may be created (a cluster <b>110</b> comprising a single computing device <b>111</b>), and the computing device <b>112</b> may begin acting as a cluster master.
p-0039Additional computing devices (e.g., devices <b>114</b> and <b>116</b>) may be added to the cluster <b>110</b> by connecting the device(s) to the cluster interface <b>124</b>, the network interface <b>120</b> and/or the organization interface <b>122</b>. The cluster master <b>112</b> (and/or other devices added to the cluster), may be configured to detect the connection of a new computing device to the cluster <b>110</b> (e.g., to the cluster interface <b>124</b>, network interface <b>120</b>, and/or the organization interface <b>122</b>). In some embodiments, the computing devices in the cluster <b>110</b> (e.g., the cluster master computing device <b>112</b>) may transmit periodic discovery messages via their respective cluster interface ports (e.g., cluster interface port <b>111</b>A of the computing device <b>112</b>). The discovery messages may comprise broadcast-type messages configured to be received by any computing device (<b>114</b> and/or <b>116</b>) communicatively coupled to the cluster interface <b>124</b> (or other interface <b>120</b> and/or <b>122</b>).
p-0040Once discovered, the new computing device <b>114</b> may receive a device-specific configuration from one of the other devices in the cluster <b>110</b>. The device-specific configuration may configure the new computing device <b>114</b> to operate in “cluster” mode, configure the cluster interface port of the device (port <b>111</b>B, discussed below), assign a role to the device (e.g., active, standby, or the like), and so on.
p-0041After receiving the device-specific cluster configuration, the new device <b>114</b> may join the cluster (e.g., begin communicating via the cluster interface port <b>111</b>B), and receive a cluster configuration from another cluster device. The cluster configuration may include a definition of the services provided by the cluster <b>110</b> (e.g., VPN, firewall, packet filtering, etc.), define a security policy implemented by the cluster <b>110</b>, define cluster capabilities (e.g., maximum number of simultaneous connections, etc.), and the like. The new device <b>114</b> may receive and implement the device-specific configuration (and cluster configuration).
p-0042The cluster master (or other cluster device <b>112</b>, <b>114</b>, and/or <b>116</b>) 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 <b>110</b> 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 <b>111</b>A, <b>111</b>B, or <b>111</b>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.
p-0043As discussed above, a cluster <b>110</b> 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 <b>110</b> 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.
p-0044If 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.
p-0045<figref idrefs="DRAWINGS">FIG. 2A</figref> is a state diagram <b>200</b> depicting the addition of a new device to a cluster. The state diagram <b>200</b> may be implemented as a method, comprising a plurality of steps (e.g., method <b>201</b> discussed below in conjunction with <figref idrefs="DRAWINGS">FIG. 2B</figref>).
p-0046When in state <b>210</b>, a device may be communicatively connected to a network (e.g., connected to the interfaces <b>120</b>, <b>122</b>, and/or <b>124</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>). 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.). In state <b>210</b>, the device may be discoverable by other devices in the cluster. Causing a device to enter state <b>210</b> 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 <b>120</b>, <b>122</b>, and/or <b>124</b>), 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.
p-0047In state <b>210</b>, 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 the interface <b>124</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>). 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.
p-0048The 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 <b>280</b>. In the non-member state <b>280</b>, 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.
p-0049If 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 <b>220</b>. Transitioning to the join state <b>220</b> 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 <b>220</b>.
p-0050When in state <b>220</b>, the device may be prepared to join the cluster as an active or standby cluster member. The preparation in state <b>220</b> 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.
p-0051In state <b>220</b>, 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 to state <b>210</b>, where the device may be re-discovered and have new device-specific configuration data transmitted thereto (e.g., by the cluster master).
p-0052The synchronization performed in state <b>220</b> 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.
p-0053The 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 <b>111</b>A-<b>111</b>C depicted in <figref idrefs="DRAWINGS">FIG. 1</figref>). 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 the non-member state <b>280</b>.
p-0054The license verification performed in state <b>220</b> 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).
p-0055The license verification in state <b>220</b> 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).
p-0056At step <b>220</b>, 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.
p-0057If 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).
p-0058After verifying the device license, synchronizing cluster configuration data, and the like, the device may transition to state <b>230</b>, 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.
p-0059The device may leave the cluster member state <b>230</b> 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 <b>280</b>. If the device is reset, it may enter the discoverable state <b>210</b>, at which point the device may rejoin the cluster as described above.
p-0060When the device is in the non-member state <b>280</b> (due to a failure to join the cluster from state <b>220</b>, being deactivated from the active member state <b>230</b>, 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.
p-0061When in the active member state <b>230</b>, 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.
p-0062When 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).
p-0063An 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.
p-0064The 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).
p-0065<figref idrefs="DRAWINGS">FIG. 2B</figref> is a flow diagram of a method <b>201</b> for adding a device (network security device) to a cluster. The method <b>201</b> 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 <b>201</b> 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 the method <b>201</b> may be tied to particular machine components, such as computer-readable storage media, communications interfaces, processing modules, or the like.
p-0066At step <b>211</b>, the method <b>201</b> 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.
p-0067At step <b>221</b>, the method <b>201</b> 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 <b>120</b>, <b>122</b>, and/or <b>124</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>), 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 <b>221</b> may comprise active discovery and/or passive discovery. Active discovery may comprise the method <b>201</b> 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, the method <b>201</b> 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 <b>201</b> 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.
p-0068At step <b>231</b>, 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 <b>231</b> may comprise the method <b>201</b> 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 <b>281</b>; otherwise, the method <b>201</b> may continue to step <b>236</b>.
p-0069At step <b>236</b>, 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 <b>236</b> 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 <b>231</b>. Step <b>236</b> 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 <b>201</b>, the method <b>201</b> 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 at step <b>236</b>, the flow may continue to step <b>241</b>. Otherwise, the flow may return to step <b>236</b> 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 <b>281</b>.
p-0070At step <b>241</b>, 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 <b>241</b>). 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.
p-0071Step <b>241</b> may further comprise verifying that the device has implemented the cluster configuration. The verification of step <b>241</b> may comprise the device transmitting a confirmation message to the method <b>201</b>, the method <b>201</b> actively interrogating the device, or the like. If the cluster configuration is verified, the flow may continue to step <b>251</b>; otherwise, the flow may return to step <b>241</b>, where the cluster configuration may be re-transmitted to the device and re-verified by the method <b>201</b>. Alternatively, or after a threshold number of cluster configuration verification failures, the flow may continue to step <b>281</b>.
p-0072At step <b>251</b>, 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 <b>236</b>. Alternatively, the role assignment may be made in a separate step <b>251</b> as depicted in <figref idrefs="DRAWINGS">FIG. 2B</figref>.
p-0073At step <b>251</b>, 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.
p-0074In some embodiments, step <b>251</b> 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 <b>201</b>. 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 <b>500</b> 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).
p-0075At step <b>261</b>, the device may join the cluster in its assigned role (the static role determined at step <b>251</b>). If the device has been assigned an active role within the cluster, joining the cluster at step <b>261</b> 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.
p-0076If the device has been selected to operate as the cluster master, joining the cluster at step <b>261</b> 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 at step <b>261</b> 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.
p-0077If the device has been assigned a standby role within the cluster, joining the cluster at step <b>261</b> 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.
p-0078At step <b>281</b>, 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 <b>211</b>).
p-0079At step <b>291</b>, 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.
p-0080<figref idrefs="DRAWINGS">FIG. 3A</figref> is a diagram <b>300</b> depicting the relationships and/or transitions between cluster device operation modes, such as cluster master, backup master, and active operational modes.
p-0081When a device is joined to a cluster, the device may begin operating in a default operational mode <b>310</b>. As discussed above, if the device is the first device to join the cluster, the default operational mode <b>310</b> of the device may be the cluster master operational mode <b>320</b>. If the device joins a cluster that already has a cluster master, but not backup master, the default operational mode <b>310</b> of the device may transition to be the backup master <b>330</b>. If the cluster already includes devices operating as cluster master <b>320</b> and backup master <b>330</b>, the default operational mode <b>310</b> of the device may transition to one of the active <b>340</b> or standby <b>350</b> modes.
p-0082A device may operate as an active cluster device <b>340</b> if the cluster can include additional active (worker) devices (e.g., according to the licensed capabilities of the cluster <b>300</b>). 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 <b>320</b> and/or backup master <b>330</b>. If the cluster may accept additional active cluster devices, the device may transition from the default mode <b>310</b> to the active mode <b>340</b>, in which the device may accept tasks from the cluster master <b>320</b>. If the cluster already includes the maximum number of active cluster devices <b>340</b> and/or if the configuration data specifies that a certain proportion of the devices in the cluster be allocated to high-availability (standby mode <b>350</b>), the device may transition to the standby mode <b>350</b>. As discussed above, a device in standby mode <b>350</b> 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 <b>350</b> to active mode <b>340</b> (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 <b>340</b> transition back to standby mode <b>350</b>. The transition may include the devices continuing to synchronize cluster configuration data, but not accepting processing tasks (network flows) from the cluster master <b>320</b>.
p-0083If the device operating as the cluster master <b>320</b> is demoted, another device may become (or be “elected” as) the cluster master <b>320</b>. A device may be demoted from cluster master <b>320</b> 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.
p-0084When the cluster master <b>320</b> is demoted, a failover operation may occur. Failover may comprise promoting another device to operate as the cluster master <b>340</b>. If the cluster includes a backup master device <b>330</b>, the backup master device <b>330</b> may be elected as the new cluster master <b>320</b>. Promoting the backup master <b>330</b> to the master <b>320</b> may include configuring the other devices in the cluster (e.g., the active devices <b>340</b> and/or demoted cluster master <b>320</b>) to use the backup master device <b>330</b> as the new cluster master). Since the backup master <b>330</b> may be synchronized to the cluster master <b>320</b> (may have been receiving updates to the global, run-time synchronization data from the cluster master <b>32</b>, such as flow assignment data, shared resource, data, session data, security data, and the like), the transition to the new cluster master <b>320</b> may be performed without incurring downtime and/or interrupting the services provided by the cluster.
p-0085In some embodiments, the backup master <b>330</b> may only be elected to the cluster master <b>320</b> 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 <b>330</b> does not satisfy these criteria, and another cluster device does, another device other than the backup master <b>330</b> may be elected to operate as the cluster master <b>320</b>. 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 the backup master <b>330</b> is deemed to be unsuitable to act as the cluster master (and other cluster device is selected instead), the backup master <b>330</b> may act as the cluster master <b>320</b> 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 <b>320</b>, and the backup master may resume its former role.
p-0086Transitioning the backup master <b>330</b> to operate as the cluster master <b>320</b> may include electing another device in the cluster to operate as the backup master <b>330</b>. If another device is available to act as a backup master <b>330</b>, the device may be configured to transition to the backup master <b>330</b>. The transition of a cluster device to backup master <b>330</b> may comprise transmitting the global, run-time synchronization data to the new backup master <b>330</b> (from the former backup master <b>330</b> or the failed over cluster master <b>320</b>). In some embodiments, electing a new backup master <b>330</b> may comprise determining which, if any, cluster devices <b>340</b> or <b>350</b> are eligible to operate in the backup master operational mode <b>330</b> (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 <b>330</b>, the election may comprise selecting the device with the higher health score, lower IP address, lower port number, or the like.
p-0087If no backup master <b>330</b> is available to replace the demoted cluster master <b>320</b>, a new cluster master <b>320</b> may be selected from the active cluster devices <b>340</b>. 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 <b>320</b>, a new backup master <b>330</b> may be elected as described above.
p-0088<figref idrefs="DRAWINGS">FIG. 3B</figref> depicts data flow <b>301</b> 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 <b>320</b> 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 <b>330</b>, active device(s) <b>340</b>, and/or standby device(s) <b>350</b>). As shown in <figref idrefs="DRAWINGS">FIG. 3B</figref>, the cluster master <b>320</b> 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 <b>320</b> may synchronize updates to the cluster policy to the cluster devices <b>330</b>, <b>340</b>, and/or <b>350</b>. Synchronizing the cluster policy may include modifying an operational mode of one or more cluster devices (e.g., transitioning devices operating in standby <b>350</b> to active mode <b>340</b>, or the like).
p-0089The cluster master <b>320</b> may be configured synchronize the global, run-time synchronization data with the backup master <b>330</b>. 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.
p-0090In some embodiments, the backup master <b>330</b> may be configured to transmit an acknowledgement message to the cluster master <b>320</b> responsive to receiving global, run-time synchronization data therefrom. The acknowledgement may be used by the cluster master <b>320</b> to verify that the global, run-time synchronization data was received. If the cluster master <b>320</b> does not receive an acknowledgement from the backup master <b>330</b> 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 <b>330</b> 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 <b>111</b>A-<b>111</b>C of <figref idrefs="DRAWINGS">FIG. 1</figref>).
p-0091The cluster master <b>320</b> may be configured to distribute network traffic and/or flow processing tasks to the devices, including the active devices <b>340</b>, the cluster master <b>320</b> itself, and/or the backup master <b>330</b> (the cluster master <b>320</b> and the backup master <b>330</b> may be used as “active” cluster devices for the purposes of flow processing). The cluster master <b>320</b> 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).
p-0092The 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 <b>111</b>A-<b>111</b>C of <figref idrefs="DRAWINGS">FIG. 1</figref>). 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.
p-0093The active cluster devices <b>340</b> and/or backup master <b>330</b> may be configured to transmit flow, run-time synchronization data to the cluster master <b>320</b>. 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.
p-0094The cluster master <b>320</b> 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 <b>330</b>. 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 <b>320</b> may synchronize the global, run-time synchronization data (including the flow, run-time synchronization data of each of the flows), to the backup master <b>330</b> to provide protection in the event of a failover operation of the cluster master <b>320</b> (e.g., in the event that the cluster master <b>320</b> goes down, to be replaced by the backup master <b>330</b> or some other cluster device).
p-0095The 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 <b>320</b>, shared services provided by the cluster master <b>320</b>, cluster configuration data, and the like. For instance, in some embodiments, the cluster master <b>320</b> may manage IP security (IPSec) data across the cluster. Accordingly, the cluster master <b>320</b> 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 <figref idrefs="DRAWINGS">FIG. 9A</figref>). When the cluster master <b>320</b> is configured to provide a shared IKE, the cluster master <b>320</b> 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 <b>320</b> to the backup master <b>330</b> may include the IKE module data to provide for IKE module failover.
p-0096The 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 <b>320</b> 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 <b>320</b> to the backup master <b>330</b>.
p-0097The 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 <b>320</b> to the backup master <b>330</b>.
p-0098The cluster master <b>320</b> may manage hostout traffic, which may include network traffic that is initiated by cluster devices (individual cluster members <b>320</b>, <b>330</b>, <b>340</b>, and/or <b>350</b>). 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 <b>320</b> 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 <b>320</b> synchronizes with the backup master <b>330</b>.
p-0099The cluster master <b>320</b> 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 <b>320</b>. The cluster master <b>320</b> 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 <b>320</b> 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 <b>330</b> by the cluster master <b>320</b>.
p-0100Although the disclosure provides various examples of global, run-time synchronization data that may be synchronized within the cluster of <figref idrefs="DRAWINGS">FIG. 3B</figref>, 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 <b>320</b> from the cluster devices <b>330</b>, <b>340</b>, and/or <b>350</b> (e.g., flow, run-time synchronization data) could include any data and/or data structure known in the art.
p-0101In some embodiments, the cluster devices (e.g., the cluster master <b>320</b>, backup master <b>330</b>, worker devices <b>340</b>, and/or standby devices <b>350</b>) 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 <b>320</b> with another cluster device, replacing the backup master <b>330</b> with another device, failing over a device (e.g., replacing the device with another cluster device), or the like.
p-0102The 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 <b>111</b>A-C of <figref idrefs="DRAWINGS">FIG. 1</figref>). The status messages may provide an indication that the cluster device is operational and capable of accepting tasks from the cluster master <b>320</b>.
p-0103In 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.
p-0104For 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.
p-0105In 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.
p-0106In 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.
p-0107The 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 <b>20</b>, backup master <b>330</b>, worker <b>340</b>, 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.
p-0108As 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 <b>111</b>A-C of <figref idrefs="DRAWINGS">FIG. 1</figref>). 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 <b>320</b> and/or backup master <b>330</b>, and so on.
p-0109For 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 <b>320</b> or backup master <b>330</b> may be used to invoke a preemptive failover to replacement cluster master <b>320</b> and/or backup master <b>330</b> devices.
p-0110The selection of a replacement cluster master <b>320</b> and/or backup master <b>330</b> 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 <b>320</b> or backup master <b>330</b>).
p-0111Failover of an active cluster device (e.g., the cluster master <b>320</b>, backup master <b>330</b>, or worker <b>340</b>) 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.
p-0112Upon 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.
p-0113For example, a cluster master failover may comprise selecting a new cluster master <b>320</b> 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 <b>320</b> at any one time. The selection of a replacement cluster master <b>320</b> may be based on the current role of each of the remaining cluster devices. For example, if the cluster includes a backup master <b>330</b>, the backup master <b>330</b> device may transition to be the new cluster master <b>320</b> (since it is already synchronized with the cluster master). If there is no backup master <b>330</b>, or the backup master device also satisfies failover conditions (has failed or is on the verge of failing), a worker <b>340</b> or standby <b>350</b> 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 <b>330</b> is operable (but not suitable as the cluster master <b>320</b>), the backup master <b>330</b> may be configured to synchronize the global, run-time synchronization data to the replacement cluster master before being failed over itself.
p-0114If the device to be failed over is the backup master <b>330</b>, a suitable replacement may be selected as described above. The failover to a replacement backup master <b>330</b> may comprise synchronizing the global, run-time synchronization to the new device from the cluster master <b>320</b> and/or backup master <b>330</b>, if possible.
p-0115The 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 <b>320</b> or backup master <b>330</b>, 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 <b>320</b> 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.
p-0116<figref idrefs="DRAWINGS">FIG. 3C</figref> is a flow diagram of one embodiment of a method <b>302</b> for monitoring a cluster using devices within the cluster. The method <b>301</b> 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 <b>302</b> may comprise a processor and memory. The method <b>302</b> 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 the method <b>302</b> may be tied to particular device components, such as computer-readable storage media, communications interfaces, processors, or the like.
p-0117At step <b>311</b>, the method <b>302</b> 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.
p-0118At step <b>321</b>, data indicative of a health score of the device implementing the method <b>302</b> 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 <b>321</b> 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 <b>321</b> 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).
p-0119At step <b>331</b>, a status message may be transmitted to other devices in the cluster. The status message may comprise the data acquired at step <b>321</b> (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 <b>111</b>A-<b>111</b>C of <figref idrefs="DRAWINGS">FIG. 1</figref>. Alternatively, or in addition, the status message may be directed to a dedicated cluster network interface, such as the cluster interface <b>124</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>, which may comprise a switch, hub, concentrator, or other network communications device.
p-0120In 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 <b>302</b> may be configured to generate and transmit status messages (e.g., perform steps <b>321</b> and <b>331</b>) at regular intervals. Accordingly, other devices monitoring the device implementing the method <b>302</b> 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.
p-0121At step <b>341</b>, the method <b>302</b> 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.).
p-0122At step <b>351</b>, the method <b>302</b> 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 <b>351</b> 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 <b>351</b> 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.
p-0123If at step <b>351</b>, one or more cluster devices are to be failed over, the flow may continue at step <b>361</b>; otherwise, the method <b>302</b> may terminate at step <b>371</b> and/or continue as more status messages are received and/or when an updated status message is to be transmitted.
p-0124At step <b>361</b>, a failover operation for the one or more devices identified at step <b>351</b> may be performed as described above. An example of a method for failing over a cluster device is described below in conjunction with <figref idrefs="DRAWINGS">FIG. 3D</figref>. After failing over the device, the method <b>302</b> may terminate at step <b>371</b> 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.
p-0125<figref idrefs="DRAWINGS">FIG. 3D</figref> is a flow diagram of one embodiment of a method <b>303</b> for failing over a cluster device. Like the method <b>302</b> described above, the method <b>303</b> may be implemented on and/or in conjunction with a cluster device comprising a processor, memory, communications interfaces, and the like. The method <b>303</b> 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.
p-0126At step <b>312</b>, the method <b>303</b> may be initialized, which may comprise loading one or more instructions from a computer-readable medium, initializing communications interfaces, and the like.
p-0127At step <b>322</b>, a device to be failed over may be identified. The identification of step <b>314</b> may be implemented by a method, such as method <b>302</b> described above in conjunction with <figref idrefs="DRAWINGS">FIG. 3C</figref>. 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.
p-0128At step <b>332</b>, 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 <b>332</b> may give preference to a backup master (if available) as discussed above. If the backup master is selected to replace the cluster master, step <b>332</b> may further comprise selecting a replacement for the backup master.
p-0129At step <b>342</b>, the one or more devices selected at step <b>332</b> 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).
p-0130If at step <b>342</b>, the device to be failed over is the cluster master, the preparation of step <b>342</b> 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 <b>332</b>, the preparation of step <b>342</b> 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.
p-0131At step <b>352</b>, 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 <b>352</b> 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 <b>352</b> may further comprise configuring an inbound network interface (e.g., interface <b>120</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>) to forward traffic pertaining to the transferred flows to the corresponding replacement devices.
p-0132If the failed over device was the cluster master, the configuration of step <b>352</b> 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 <b>352</b> 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.
p-0133At step <b>362</b>, the method <b>303</b> may terminate until another failover operation is to be performed.
p-0134In 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 <b>320</b>). 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.
p-0135Referring back to <figref idrefs="DRAWINGS">FIG. 3B</figref>, the devices in the cluster <b>301</b> (cluster master <b>320</b>, backup master <b>330</b>, worker device(s) <b>340</b>, and/or standby device(s) <b>350</b>) may synchronize cluster information using a dedicated cluster interface port, such as the cluster interface ports <b>111</b>A-<b>111</b>C of <figref idrefs="DRAWINGS">FIG. 1</figref> (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.
p-0136Referring back to <figref idrefs="DRAWINGS">FIG. 1</figref>, the cluster <b>110</b> 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.
p-0137In some embodiments, the cluster <b>110</b> may implement a “flooding” technique, in which each arriving packet (received via the interface <b>120</b>) may be forwarded to each of the cluster devices <b>112</b>, <b>114</b>, and <b>116</b>. Each cluster device <b>112</b>, <b>114</b>, and <b>116</b> 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 <b>110</b>; 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 <b>112</b>, <b>114</b>, <b>116</b>.
p-0138To operate in the flooding mode described above, the cluster master device (device <b>112</b>) may send an address resolution protocol (ARP) reply to the interface <b>120</b> 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 <b>110</b>. Certain network elements (e.g., routers) may require an ARP entry for the cluster master <b>110</b> to be manually inserted.
p-0139Alternatively, the interface master may send an ARP reply with an unknown unicast MAC address, which may cause the interface <b>120</b> to route inbound traffic to all of the devices (<b>112</b>, <b>114</b>, and <b>116</b>) in the cluster <b>110</b>. However, some interface devices <b>120</b> may rate-limit traffic associated with unknown destination MAC addresses. In another example, the interface <b>120</b> may include a dump hub. The dump hub may flood inbound network traffic to the devices (<b>112</b>, <b>114</b>, and <b>116</b>) in the cluster <b>110</b>. However, network traffic sent out by the cluster devices <b>112</b>, <b>114</b>, and/or <b>116</b> may loop back within the cluster <b>110</b> (e.g., traffic transmitted by device <b>112</b> may loop back to the devices <b>114</b> and <b>116</b>, and so on).
p-0140In an alternative embodiment, the cluster <b>110</b> may be configured to operate in a “direct-forwarding” mode. Direct forwarding may be implemented using an interface <b>120</b> configured to route inbound network traffic to a particular device <b>112</b>, <b>114</b>, or <b>116</b> within the cluster <b>110</b>. In a direct forwarding scheme, the cluster master (e.g., device <b>112</b>) may register a virtual MAC address with the interface <b>120</b> (e.g., respond to an ARP request (virtual IP) from the interface <b>120</b> with a virtual MAC address). Therefore, unicast traffic will be routed to the cluster master <b>112</b> only (and not to the other devices <b>114</b> and <b>116</b> in the cluster <b>110</b>). Multicast and/or broadcast traffic may be filtered by the devices (e.g., <b>114</b> and <b>116</b>) that are not configured to act as the cluster master <b>112</b>. When a flow is assigned to a particular device <b>112</b>, <b>114</b>, or <b>116</b> in the cluster <b>110</b>, it may transmit a direct forward request to the interface <b>120</b>. 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 (<b>112</b>, <b>114</b>, or <b>116</b>) to which the traffic is to be forwarded. Using the information in the direct forward request, the interface <b>120</b> may identify traffic associated with the flow and forward the traffic directly to the device (as opposed to flooding each device <b>112</b>, <b>114</b>, and <b>116</b> 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 <b>112</b>, <b>114</b>, <b>116</b>.
p-0141<figref idrefs="DRAWINGS">FIG. 4</figref> is a block diagram of one embodiment of a cluster device, such as <b>112</b>, <b>114</b>, and/or <b>116</b>. The cluster device <b>400</b> may be implemented as and/or in conjunction with a computing-device <b>410</b> comprising a processor <b>412</b>, memory storage <b>414</b>, and computer-readable storage media <b>416</b>. The processor <b>412</b> 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 <b>412</b> may comprise volatile and/or non-volatile memory. The computer-readable storage media <b>416</b> may comprise one or more hard discs, optical storage media, Flash storage media, and the like.
p-0142The device <b>400</b> may include a communications interface <b>450</b>, which may communicatively couple the device to one or more networks, such as the network <b>140</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>, the Internet, a WAN, a LAN, a local-cluster network, or the like. The communications interface <b>450</b> 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 <b>452</b> may be communicatively coupled to a communications network <b>440</b>, which may comprise a WAN and/or the Internet. In some embodiments, the communication interface(s) <b>120</b>A may be communicatively coupled to the communications network via a cluster interface <b>420</b>.
p-0143One or more communications interfaces <b>454</b> may be communicatively coupled to an internal network <b>430</b> (e.g., LAN, local network, home network, or the like), such as the organization network <b>130</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>. The communications interface(s) <b>454</b> may be communicatively coupled to the internal network <b>430</b> via a communications interface <b>122</b>, which may comprise a switch, router, or other network element.
p-0144One or more communications interfaces <b>456</b> may be communicatively coupled to a local cluster network, which may provide for communications with other cluster devices (not shown), such as the devices <b>112</b>, <b>114</b>, and <b>116</b> in the cluster <b>110</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>. Accordingly, the communications interfaces <b>456</b> may be communicatively coupled to a switch, hub, router, or other concentrator device <b>424</b>.
p-0145The device <b>410</b> may include one or more processing modules <b>460</b>, <b>462</b>, <b>464</b> and <b>466</b>, which may be operable on the processor <b>412</b> 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 <b>460</b>, <b>462</b>, <b>464</b>, and/or <b>466</b> may be implemented on the processor <b>412</b> using one or more computer-readable instructions stored on the computer-readable storage media <b>416</b>.
p-0146A flow assignment module <b>460</b> may be configured to assign network flows to the devices in the cluster (e.g., using a method, such as method <b>500</b> described below). For example, when operating as a cluster master, the device <b>410</b> may receive inbound network traffic from the interface <b>420</b>. The traffic may be routed to the flow assignment module <b>450</b>, which may identify a flow associated therewith.
p-0147The traffic processing module <b>462</b> may process network traffic according to a security policy and a local, flow assignment data structure <b>463</b>. The security policy enforced by the traffic processing module <b>462</b> may be defined in the cluster policy data structure <b>470</b>, 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 <b>420</b>) to an internal, organization network (e.g., coupled to interface <b>422</b>), and vice versa, may define network filtering tasks, define firewall rules, and so on.
p-0148In some embodiments, the network security policy defined in the cluster policy data structure <b>470</b> may define a role-based, user-based, or other type of network security policies. For example, the cluster configuration <b>470</b> 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, the traffic processing module <b>462</b> 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 <b>470</b> and/or updated by the device acting as the cluster master.
p-0149The traffic processing module <b>462</b> may maintain a local, flow assignment data structure <b>463</b> identifying the network flows that have been assigned thereto. The identifying may comprise information to allow the traffic processing module <b>462</b> 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 flow assignment data structure <b>472</b> maintained by a cluster master that provides information regarding all the network flows handled throughout a cluster, the data structure <b>463</b> may identify only the flows that have been assigned to the particular device <b>410</b>. When the cluster master assigns a flow to the device <b>410</b>, the traffic processing module <b>462</b> may update the local, flow assignment data structure <b>463</b>. The data structure <b>463</b> may also be used to manage local, run-time synchronization data associated with the flows assigned to the device <b>410</b>.
p-0150The cluster configuration data <b>470</b> 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 the device <b>410</b> is operating as the cluster master, the device <b>410</b> may be configured to synchronize the cluster configuration data <b>470</b> to the other cluster devices. Therefore, the cluster master (device <b>410</b>) 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 <b>410</b>) 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 <b>470</b>).
p-0151When operating as the cluster master, the device <b>410</b> may be responsible for managing the workload of the cluster. Accordingly, the cluster master (device <b>410</b>) may be configured to assign processing tasks, such as handling network flows, to various active cluster members. The cluster master device <b>410</b> may maintain a flow assignment data structure <b>472</b>, which may provide a mapping between the network flows being handled by the cluster, and the cluster devices assigned thereto.
p-0152When the cluster master (device <b>410</b>) 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 <b>472</b>), the flow assignment module <b>460</b> 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 <b>460</b> may update the flow assignment data structure <b>472</b> 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 <b>456</b> 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 <b>460</b> (or the device assigned to handle the flow) may configure the interface <b>420</b> to route traffic associated with the flow directly to the device assigned thereto.
p-0153The 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 <b>410</b>) may aggregate the flow, run-time synchronization data into data structure <b>474</b> 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 <b>410</b> via the cluster communication interface(s) <b>456</b> or another interface <b>452</b> or <b>454</b>. When acting as a cluster master, the device <b>410</b> 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.
p-0154As discussed above, when a cluster device <b>410</b> is acting as a cluster master, the device <b>410</b> may manage shared cluster resources, such as address pools, port pools, and the like. The cluster master (device <b>410</b>) 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 <b>410</b> may be maintained in a shared resource data structure <b>476</b>.
p-0155The cluster configuration data structure <b>470</b>, flow assignment data structure <b>472</b>, flow, run-time synchronization data structure <b>474</b>, shared resource data structure <b>476</b>, and any other data needed for cluster master failover, may be maintained in a global, run-time synchronization data structure <b>480</b>. When operating as a cluster master, the device <b>410</b> may synchronize the global, run-time synchronization data structure <b>480</b> with other cluster devices (e.g., the backup master device). Synchronizing the data structure <b>480</b> 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.
p-0156Accordingly, when the device <b>410</b> is operating as a backup master, the device <b>410</b> may be configured to receive the global, run-time synchronization data structure <b>480</b> (comprising cluster configuration <b>470</b>, the flow assignment data structure <b>472</b>, the flow, run-time synchronization data <b>474</b>, the shared resource data structure <b>476</b>, and any other relevant data) from the cluster master.
p-0157The cluster master (device <b>410</b>) may be configured to synchronize the cluster configuration data structure <b>470</b> to the other cluster devices. The traffic processing module <b>462</b> may use the cluster configuration data structure <b>470</b> 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 the flow assignment module <b>460</b> and/or may not maintain the flow assignment data structure <b>472</b>, flow, run-time synchronization data structure <b>474</b>, and/or shared resource data structure <b>480</b>, since these structures are not needed for flow processing. In some embodiments, however, the modules (<b>460</b>, <b>464</b>, and <b>466</b>) and data structures (<b>472</b>, <b>474</b>, and <b>476</b>) 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.
p-0158A monitoring and failover module <b>464</b> may be used to monitor cluster devices as described above in conjunction with <figref idrefs="DRAWINGS">FIGS. 3C and 3D</figref>. Each cluster device <b>464</b>, whether operating in the cluster master, backup master, active, or standby role, may implement the monitoring and failover module <b>464</b>. The monitoring and failover module <b>464</b> may be configured to generate and transmit status messages from the device <b>410</b>, which, as discussed above, may comprise a health score of the device. The module <b>464</b> may also be configured to receive status messages from other cluster devices. Information relating to the health score of the device <b>410</b>, as well as status information relating to other cluster devices may be maintained in a monitoring and failover data structure <b>478</b>.
p-0159When operating as the cluster master, the device <b>410</b> 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 <b>464</b> may be configured to determine when a failover operation is needed (according to failover criteria, and as discussed above in conjunction with <figref idrefs="DRAWINGS">FIG. 3C</figref>). When a device for failover has been identified, the monitoring and failover module <b>464</b>, along with the flow assignment module <b>460</b>, may assign the tasks of the failed over device to one or more replacement devices (as described above in conjunction with <figref idrefs="DRAWINGS">FIG. 3D</figref>). 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 <b>474</b> associated therewith may be sent to the corresponding replacement devices, which may use the data to resume handling the flows.
p-0160If 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 <b>480</b> to the new backup master device.
p-0161If 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 <b>480</b> may be populated from the backup master and/or failed over cluster master (if available).
p-0162When operating as cluster master, the device <b>410</b> may comprise a cluster management module <b>466</b>, which may be used to synchronize the cluster configuration data structure <b>470</b> to other cluster devices (not shown), join new devices to the cluster (as described above in conjunction with <figref idrefs="DRAWINGS">FIG. 2B</figref>), determine and maintain the licensed capabilities of the cluster, and so on.
p-0163As discussed above, when a new computing device (not shown) is communicatively coupled to a cluster network interface <b>420</b>, <b>422</b>, and/or <b>424</b>, the device may be discovered by other cluster devices. Discovery may comprise a cluster device (e.g., the cluster master device <b>410</b>) transmitting one or more discovery messages (e.g., broadcast, multicast, or other message types) on one or more of its communications interfaces <b>450</b>. The discovery messages may be sent automatically (e.g., periodically, until a device is discovered). In some embodiments, the periodic status messages transmitted by the monitoring and failover module <b>464</b> 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 <b>450</b> and/or a configuration interface <b>467</b> (discussed below). In some embodiments, the device <b>410</b> may discover a new computing device passively (e.g., by monitoring traffic on the interface <b>420</b>, <b>422</b>, and/or <b>424</b>, by inspecting routing and/or ARP information, or the like).
p-0164When a new computing device is discovered, the cluster manager module <b>466</b> of the cluster master device <b>410</b> may be configured to initiate a cluster join procedure to add the new device to the cluster as described above in conjunction with <figref idrefs="DRAWINGS">FIGS. 2A and 2B</figref>. The cluster management module <b>466</b> 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 <b>466</b> 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), the cluster management module <b>466</b> 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 <b>470</b>, 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, the cluster management module <b>466</b> 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.
p-0165When the cluster management module <b>466</b> verifies successful implementation of the device-specific and/or cluster configuration, the device may be joined to the cluster (e.g., added to the cluster configuration data <b>470</b>, 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).
p-0166The cluster management module <b>466</b> of a device <b>410</b> 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 <b>470</b>, 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.
p-0167The cluster management module <b>466</b> 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.
p-0168In some embodiments, the cluster management module <b>466</b> may provide a configuration interface <b>467</b>, 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 <b>467</b> may comprise and/or utilize one or more of the communications interfaces <b>450</b> (e.g., the communication interfaces <b>454</b> communicatively coupled to an internal, or organization network). Alternatively, or in addition, the configuration interface <b>467</b> may comprise one or more human-machine-interaction (HMI) components (not shown), such as a display, keyboard, mouse, or other input/output devices.
p-0169The configuration interface <b>467</b> may allow a human operator, policy manager, or other configurator to interrogate and/or change the configuration of the cluster. When the device <b>410</b> is operating as a cluster master, the configuration interface <b>467</b> may be capable of displaying and/or modifying the configuration of the cluster as a whole. Accordingly, the configuration interface <b>467</b> 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.
p-0170In some embodiments, the configuration interface <b>467</b> 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 <b>410</b>), may be transparently synchronized to other cluster devices (by the cluster management module <b>466</b>). 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).
p-0171The cluster management module <b>466</b> (along with the configuration interface <b>467</b>) 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 <b>467</b>. 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 <b>466</b> 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.
p-0172In one example, the cluster management module <b>466</b> 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 <b>466</b> 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.
p-0173The cluster management module <b>466</b> may then perform a similar upgrade process on the active cluster devices; the cluster management module <b>466</b> 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.
p-0174The cluster management module <b>466</b> 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).
p-0175After modifying the backup master, the cluster management module <b>466</b> 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 <b>410</b> may be upgraded and rejoined to the cluster. The device <b>410</b> 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).
p-0176<figref idrefs="DRAWINGS">FIG. 5</figref> 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 <b>110</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>. The method <b>500</b> may be implemented on a computing device, such as the device <b>410</b> of <figref idrefs="DRAWINGS">FIG. 4</figref>. The method <b>500</b> may be implemented using one or more computer-readable and/or computer-executable instructions. The instructions comprising the method <b>500</b> 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 the method <b>500</b> may be tied to particular machine components, such as computer-readable storage media, communications interfaces, processing modules, or the like.
p-0177At step <b>510</b>, the method <b>500</b> may start and/or be initialized. Initializing the method <b>500</b> 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.
p-0178At step <b>520</b>, network traffic may be received. The network traffic may have been received via a network interface (e.g., interface <b>120</b> and/or <b>122</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>), such as a hub, switch, router, concentrator or the like. If the cluster of method <b>500</b> 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).
p-0179At step <b>530</b>, 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 <b>530</b> 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.
p-0180If at step <b>530</b>, the method <b>500</b> 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), the method <b>500</b> may continue at step <b>540</b>; otherwise, if a device is already actively handling the flow, the method <b>500</b> may continue at step <b>535</b>.
p-0181At step <b>535</b>, 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 the method <b>500</b>. Accordingly, the method <b>500</b> may terminate at step <b>560</b> and/or may continue at step <b>520</b> when additional network traffic is received.
p-0182At step <b>540</b>, the method <b>500</b> 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 of step <b>540</b> 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.
p-0183At step <b>550</b>, the flow assignment data structure may be updated to reflect the assignment. At step <b>550</b>, 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).
p-0184At step <b>560</b>, the flow may terminate and/or may continue at step <b>520</b> when additional network traffic is received.
p-0185As 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).
p-0186<figref idrefs="DRAWINGS">FIG. 6A</figref> 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 the <figref idrefs="DRAWINGS">FIG. 6A</figref> example, forward and reverse flows <b>681</b> and <b>682</b> are established between a computing device <b>633</b> within an organization <b>630</b> and a computing device <b>646</b> in the network <b>640</b>. The cluster master device (device <b>612</b>) may implement a flow assignment rule that assigns related forward and reverse flows to the same cluster device. Accordingly, in the <figref idrefs="DRAWINGS">FIG. 6A</figref> example, both of the flows <b>681</b> and <b>682</b> may be assigned to device <b>2</b><b>614</b>. Alternatively, the flows <b>681</b> and <b>682</b> could be assigned to another device <b>612</b>, <b>614</b>, or <b>616</b>. The flow assignment rule may prevent the flows <b>681</b> and <b>682</b> from being assigned to different devices (e.g., flow <b>681</b> being assigned to device <b>614</b> and flow <b>682</b> being assigned to device <b>616</b>, and so on).
p-0187<figref idrefs="DRAWINGS">FIG. 6B</figref> 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 <b>681</b>, <b>682</b>, <b>683</b>, and <b>684</b> depicted in <figref idrefs="DRAWINGS">FIG. 6B</figref> 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 in <figref idrefs="DRAWINGS">FIG. 6B</figref>, related flows <b>681</b>, <b>682</b>, <b>683</b>, and <b>684</b> may be established between a computing device <b>633</b> in the organization network <b>630</b> and an external computing device <b>646</b>. According to the flow assignment rule, all of the flows <b>681</b>, <b>682</b>, <b>683</b>, and <b>684</b> may all be assigned to the same device (device <b>2</b><b>614</b>). Alternatively, the flows <b>681</b>, <b>682</b>, <b>683</b>, and <b>684</b> may all be assigned to another device (<b>612</b>, <b>616</b>, or <b>618</b>). The flow assignment rule may prevent the flows <b>681</b>, <b>682</b>, <b>683</b>, and/or <b>684</b> from being split up between different devices in the cluster (e.g., prevent flows <b>681</b> and <b>682</b> from being assigned to device <b>2</b><b>614</b> and flows <b>683</b> and <b>684</b> being assigned to device <b>3</b><b>616</b>, and so on).
p-0188<figref idrefs="DRAWINGS">FIG. 6C</figref> 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 the <figref idrefs="DRAWINGS">FIG. 6C</figref> example, a tunnel <b>680</b> (e.g., an SSH tunnel, or the like) may be established between a computing device <b>633</b> in the organization network <b>630</b> and a computing device <b>646</b> in the network <b>640</b>. The tunnel <b>680</b> may comprise one or more flows <b>681</b>, <b>682</b>, <b>683</b>, and <b>684</b>. The flow assignment rule may specify that all of the flows <b>681</b>, <b>682</b>, <b>683</b>, and <b>684</b> of the tunnel <b>680</b> are assigned to the same cluster device (device <b>2</b><b>614</b>). Accordingly, the flow assignment rule may prevent the tunnel <b>680</b> flows <b>681</b>, <b>682</b>, <b>683</b>, and <b>684</b> from being split up between the devices <b>612</b>, <b>614</b>, <b>616</b>, and/or <b>618</b>.
p-0189<figref idrefs="DRAWINGS">FIG. 6D</figref> 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 in <figref idrefs="DRAWINGS">FIG. 6D</figref>, flows <b>681</b> and <b>682</b> use the same outbound SA <b>680</b> and flows <b>687</b> and <b>688</b> use the same inbound security association. Accordingly, the flow assignment rule may specify that the flows <b>681</b> and <b>682</b> are assigned to the same device (device <b>2</b><b>614</b>), and the flows <b>687</b> and <b>688</b> are assigned to the same device (device <b>3</b><b>616</b>). The flow assignment rule illustrated in <figref idrefs="DRAWINGS">FIG. 6D</figref> may prevent the flows <b>681</b> and <b>682</b> from being assigned to different cluster devices and/or prevent the flows <b>687</b> and <b>688</b> from being assigned to different cluster devices.
p-0190Alternatively, 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. <figref idrefs="DRAWINGS">FIG. 6E</figref> shows an example of this type of flow assignment. As shown in <figref idrefs="DRAWINGS">FIG. 6E</figref>, the flows <b>681</b>, <b>682</b>, <b>687</b> and <b>688</b> are all assigned to the same device (device <b>3</b><b>616</b>). The flow assignment illustrated in <figref idrefs="DRAWINGS">FIG. 6E</figref> may prevent the flows <b>681</b>, <b>682</b>, <b>687</b> and/or <b>688</b> from being split up across different cluster devices.
p-0191A 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). <figref idrefs="DRAWINGS">FIG. 6F</figref> 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 the <figref idrefs="DRAWINGS">FIG. 6F</figref> example, remote peer devices <b>646</b> and <b>647</b> establish a tunnel switch with the cluster <b>610</b>. The flows <b>681</b> and <b>682</b> may be associated with the remote peer <b>646</b>, and the flows <b>687</b> and <b>688</b> may be associated with the remote peer <b>647</b>. The flows <b>681</b>, <b>682</b>, <b>683</b>, and <b>684</b> may be used to implement a tunnel switch between the remove peers <b>646</b> and <b>647</b> (e.g., provide for peer-to-peer communication therebetween). The cluster master device <b>612</b> may identify the flows <b>681</b>, <b>682</b>, <b>687</b>, and <b>688</b> 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 <b>681</b>, <b>682</b>, <b>687</b>, and <b>688</b> to the same cluster device (e.g., device <b>2</b><b>614</b>). Accordingly, all of the flows comprising the tunnel switch (<b>681</b>, <b>682</b>, <b>687</b>, and <b>688</b>) may be assigned to device <b>2</b><b>614</b>. The flow assignment rule may prevent the flows from being spread to other devices (e.g., prevent flows <b>681</b> and <b>682</b> from being handled by a first device (device <b>2</b><b>614</b>), while flows <b>687</b> and <b>688</b> are handled by a second device (device <b>3</b><b>616</b>)).
p-0192Additional 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 <b>462</b> of <figref idrefs="DRAWINGS">FIG. 4</figref>). 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 <b>462</b>). 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.
p-0193<figref idrefs="DRAWINGS">FIG. 7</figref> is a block diagram of one example of a cluster <b>710</b> comprising a single IKE. The cluster <b>710</b> includes a single IKE <b>749</b> to which each of the IPSec modules <b>747</b>A, <b>747</b>B, <b>747</b>C, and <b>747</b>D of the cluster devices <b>712</b>, <b>714</b>, <b>716</b>, and <b>718</b> 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 the IKE <b>749</b> of the cluster master (device <b>712</b>) may be active. The other devices <b>714</b>, <b>716</b>, and/or <b>718</b> 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 the IKE <b>749</b> of the cluster master <b>712</b> may perform IKE key exchanges with peer computing devices (not shown). The IKE <b>749</b> may perform all IKE operations for the other cluster devices <b>714</b>, <b>716</b>, and <b>718</b> including, but not limited to: P1SA negotiations, P2SA negotiations, rekey operations, dead peer detection, and the like.
p-0194The IKE <b>749</b> may generate P2SAs as needed by the cluster devices <b>714</b>, <b>716</b>, and/or <b>718</b> (e.g., in order to establish an IPSec tunnel between the device <b>714</b>, <b>716</b>, and/or <b>718</b> and an external peer). After generating a P2SA for a cluster device (e.g., device <b>714</b>), the cluster master <b>712</b> may transmit the PS2A thereto. The cluster device may then handle the IPSec flow accordingly (e.g., using the P2SA generated by the IKE <b>749</b>). In some embodiments, the cluster master <b>712</b> 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 the IKE <b>749</b> generates a particular P2SA for the cluster device <b>714</b>, and the P2SA is subsequently used in another flow, the cluster master may be configured to assign the new flow to the cluster device <b>714</b> (the device that holds the particular P2SA). Similarly, when a flow is reassigned from a first cluster device (e.g., device <b>714</b>) to a second cluster device (e.g., device <b>716</b>), the PS2A and other IPSec information relevant to the reassigned flows may be transferred from the cluster master device <b>712</b> to the second device (device <b>716</b>). Following the reassignment, subsequent flows that use the transferred P2SA may be assigned to the second device.
p-0195As shown in <figref idrefs="DRAWINGS">FIG. 7</figref>, each of the IPSec modules <b>748</b>B, <b>748</b>C, and <b>748</b>D may be communicatively coupled to the IKE <b>749</b>. As such, the IPSec modules <b>748</b>B, <b>748</b>C, and <b>748</b>D may perform callbacks to the IKE <b>749</b> 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 <b>748</b>B, <b>748</b>C, and <b>748</b>D may be implemented using respective cluster interface ports of the devices <b>714</b>, <b>716</b>, and <b>718</b>, which may provide for fast and efficient communications.
p-0196Since the IKE <b>749</b> maintains IPSec data for all of the devices in the cluster <b>710</b>, the cluster master <b>712</b> may be capable of performing more granular load balancing (all of the devices in the cluster <b>710</b> use the same IKE <b>749</b> and, as such, the devices <b>712</b>, <b>714</b>, <b>716</b>, and <b>718</b> 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 <b>710</b>. 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 <b>710</b> (e.g., the cluster device <b>714</b> may handle a first set of VPN connections, while the cluster device <b>716</b> 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 <b>710</b>.
p-0197<figref idrefs="DRAWINGS">FIG. 8</figref> is a block diagram depicting a distributed IKE approach. In the <figref idrefs="DRAWINGS">FIG. 8</figref> example, each of the devices <b>812</b>, <b>814</b>, <b>816</b>, and <b>818</b> in the cluster <b>810</b> may implement its own IKE module <b>851</b>A, <b>851</b>B, <b>851</b>C, and <b>851</b>D. Each IPSec modules <b>847</b>A-<b>847</b>D communicates with its respective IKE <b>851</b>A-<b>851</b>D. Accordingly, IKE information need not be transmitted between cluster devices. As shown in <figref idrefs="DRAWINGS">FIG. 8</figref>, the IPSec modules <b>847</b>A-<b>847</b>D are not communicatively coupled to one another; however, the devices themselves (<b>812</b>, <b>814</b>, <b>816</b>, and <b>818</b>) 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).
p-0198Since each cluster device <b>812</b>, <b>814</b>, <b>816</b>, and <b>818</b> implements its own IKE <b>851</b>A-<b>851</b>D, the devices may not appear to external peers as a “single device” as in the <figref idrefs="DRAWINGS">FIG. 7</figref> example. Therefore, the cluster master <b>812</b> may implement a flow assignment rule specifying that all IPSec flows of a particular peer be assigned to the same cluster device <b>812</b>, <b>814</b>, <b>816</b>, and/or <b>818</b>.
p-0199<figref idrefs="DRAWINGS">FIG. 9A</figref> is a block diagram <b>900</b> depicting an example of flow assignment in a cluster comprising a shared IKE module (e.g., the cluster <b>710</b> of <figref idrefs="DRAWINGS">FIG. 7</figref>). In the <figref idrefs="DRAWINGS">FIG. 9A</figref> example, a remote peer <b>933</b> establishes IPSec flows <b>981</b>, <b>982</b>, <b>983</b>, and <b>984</b> with the cluster <b>910</b>. Since the IPSec modules <b>947</b>A-<b>947</b>D of the cluster devices <b>912</b>, <b>914</b>, <b>916</b>, and <b>918</b> use a common IKE <b>749</b> (of the cluster master device <b>912</b>), the cluster <b>910</b> may appear to be a single device to the remote peer <b>933</b> for the purposes of IPSec (e.g., sequence number, rekey, DPD, etc.). Therefore, the cluster master device <b>912</b> may assign flows of the peer <b>933</b> to different cluster devices. The flows <b>981</b> and <b>982</b> (which may share a common P2SA) may be handled by the cluster device <b>914</b>, and the flows <b>983</b> and <b>984</b> (which may share a different, common P2SA) may be handled by the cluster device <b>916</b>.
p-0200<figref idrefs="DRAWINGS">FIG. 9B</figref> is a block diagram <b>901</b> depicting an example of flow assignment in a cluster comprising distributed IKE modules (e.g., the cluster <b>810</b> of <figref idrefs="DRAWINGS">FIG. 8</figref>). As in <figref idrefs="DRAWINGS">FIG. 9A</figref>, a remote peer <b>933</b> establishes IPSec flows <b>981</b>, <b>982</b>, <b>983</b>, and <b>984</b> with the cluster <b>911</b>. The cluster <b>911</b> is configured to implement distributed IKEs and, as such, each of the cluster devices <b>912</b>, <b>914</b>, <b>916</b>, and <b>918</b> implements its own IKE <b>951</b>A-<b>951</b>D. Accordingly, the cluster devices may not appear as a single device to the peer <b>933</b> for the purposes of IPSec. Accordingly, the cluster master <b>912</b> 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 <figref idrefs="DRAWINGS">FIG. 9B</figref>, all of the IPSec flows <b>981</b>, <b>982</b>, <b>983</b>, and <b>984</b> are handled by the cluster device <b>914</b>. According to the flow assignment restriction, the IPSec flows of the peer <b>933</b> may not be spread across the cluster devices (e.g., if the device <b>914</b> is handling flows <b>981</b> and <b>982</b>, the device <b>916</b> may not handle flows <b>983</b> and/or <b>984</b>).
p-0201A 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 <figref idrefs="DRAWINGS">FIG. 7</figref>, the cluster master device <b>712</b> may implement multiple IKE modules <b>749</b>; one for each IKE group policy. The IPSec modules <b>747</b>A-<b>747</b>D of the cluster devices <b>712</b>, <b>714</b>, <b>716</b>, and <b>718</b> 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).
p-0202<figref idrefs="DRAWINGS">FIG. 10</figref> is a flow diagram of another embodiment of a method for assigning flows to cluster devices. The method <b>1000</b> may be implemented on a computing device, such as the device <b>410</b> of <figref idrefs="DRAWINGS">FIG. 4</figref>. The method <b>1000</b> may be implemented using one or more computer-readable and/or computer-executable instructions. The instructions comprising the method <b>1000</b> 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 the method <b>1000</b> may be tied to particular machine components, such as computer-readable storage media, communications interfaces, processing modules, or the like.
p-0203At step <b>1010</b>, the method <b>1000</b> may start and/or be initialized. Initializing the method <b>1000</b> 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.
p-0204At step <b>1020</b>, network traffic may be received. The network traffic may have been received via a network interface (e.g., interface <b>120</b> and/or <b>122</b> of <figref idrefs="DRAWINGS">FIG. 1</figref>), such as a hub, switch, router, concentrator, or the like. If the cluster of method <b>1000</b> 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).
p-0205At step <b>1030</b>, 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 <b>1030</b> 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.
p-0206If at step <b>1030</b>, the method <b>1000</b> 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), the method <b>1000</b> may continue at step <b>1040</b>; otherwise, if a device is already actively handling the flow, the method <b>1000</b> may continue at step <b>1035</b>.
p-0207At step <b>1035</b>, 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 the method <b>1000</b>. Accordingly, the method <b>1000</b> may terminate at step <b>1070</b> and/or may continue at step <b>1020</b> when additional network traffic is received.
p-0208At step <b>1043</b>, 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 <b>1043</b> may include, but are not limited to: related flow assignment rules, and security flow assignment rules.
p-0209Related 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).
p-0210Security 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.
p-0211After applying the flow assignment rules, the method <b>1000</b> may continue to step <b>1047</b>. At step <b>1047</b>, if (according to the flow assignment rules applied at step <b>1043</b>) only a single device is available to handle the new flow, the method <b>1000</b> may continue at step <b>1060</b>; otherwise, the method <b>1000</b> may continue at step <b>1050</b>.
p-0212At step <b>1050</b>, one of the two or more available cluster devices identified at step <b>1043</b> 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 <b>1000</b> may continue at step <b>1060</b>.
p-0213At step <b>1060</b>, 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.
p-0214At step <b>1070</b>, the method <b>1000</b> may end until additional inbound network traffic is received.
p-0215The 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.
p-0216Furthermore, 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.
p-0217Embodiments 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.
p-0218Embodiments 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.
p-0219As 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.
p-0220In 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.
p-0221It 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.
Contents4
19 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2012240129A1 | Cited by | United States of America | Pre-grant |
| US9516475B2 | Cited by | United States of America | Applicant |
| US9124654B2 | Cited by | United States of America | Search report |
| CN108292122A | Cited by | China | Search report |
| US9280517B2 | Cited by | United States of America | Search report |
| US10313956B2 | Cited by | United States of America | Search report |
| US2012101968A1 | Cited by | United States of America | Search report |
| US2021211351A1 | Cited by | United States of America | Search report |
| US8923155B2 | Cited by | United States of America | Applicant |
| US9542177B1 | Cited by | United States of America | Search report |
| US10338988B1 | Cited by | United States of America | Applicant |
| US9021577B2 | Cited by | United States of America | Search report |
| US9800460B2 | Cited by | United States of America | Applicant |
| US2012030343A1 | Cited by | United States of America | Pre-grant |
| WO2014196715A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2012101968A1 | Cited by | United States of America | Pre-grant |
| US12288012B2 | Cited by | United States of America | Search report |
| US8850067B2 | Cited by | United States of America | Search report |
| US2019372662A1 | Cited by | United States of America | Search report |
| US8923149B2 | Cited by | United States of America | Search report |
| US9763260B2 | Cited by | United States of America | Applicant |
| US2013263249A1 | Cited by | United States of America | Pre-grant |
| US9774386B2 | Cited by | United States of America | Search report |
| US10797953B2 | Cited by | United States of America | Search report |
| US10146650B1 | Cited by | United States of America | Search report |
| US2021216682A1 | Cited by | United States of America | Search report |
| WO2012080930A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11734474B2 | Cited by | United States of America | Search report |
| US2020210537A1 | Cited by | United States of America | Search report |
| US2014273916A1 | Cited by | United States of America | Pre-grant |
| US9930125B2 | Cited by | United States of America | Applicant |
| US9020894B2 | Cited by | United States of America | Search report |
| CN103081441A | Cited by | China | Search report |
| US10880000B2 | Cited by | United States of America | Search report |
| US9560108B2 | Cited by | United States of America | Applicant |
| WO2019108892A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US8988237B2 | Cited by | United States of America | Applicant |
| US12316437B2 | Cited by | United States of America | Applicant |
| US2011099293A1 | Cited by | United States of America | Pre-grant |
| US2017273005A1 | Cited by | United States of America | Pre-grant |
| US8577999B2 | Cited by | United States of America | Search report |
| US10496049B2 | Cited by | United States of America | Search report |
| US11979283B2 | Cited by | United States of America | Search report |
| US8862882B2 | Cited by | United States of America | Search report |
| US9077624B2 | Cited by | United States of America | Applicant |
| US11496212B2 | Cited by | United States of America | Applicant |
| CN105721203A | Cited by | China | Search report |
| US10548025B2 | Cited by | United States of America | Applicant |
| US9054989B2 | Cited by | United States of America | Applicant |
| US2017176955A1 | Cited by | United States of America | Search report |
| US2013201873A1 | Cited by | United States of America | Pre-grant |
| US10298675B2 | Cited by | United States of America | Applicant |
| US10339025B1 | Cited by | United States of America | Applicant |
| US9059911B2 | Cited by | United States of America | Applicant |
| US9438642B2 | Cited by | United States of America | Search report |
| US8988236B2 | Cited by | United States of America | Applicant |
| US10117111B2 | Cited by | United States of America | Applicant |
| US9077651B2 | Cited by | United States of America | Applicant |
| US2011213825A1 | Cited by | United States of America | Pre-grant |
| CN105187262A | Cited by | China | Search report |
| US8964601B2 | Cited by | United States of America | Applicant |
| KR101476936B1 | Cited by | Republic of Korea | Examiner |
| US2014053158A1 | Cited by | United States of America | Pre-grant |
| CN112020862A | Cited by | China | Search report |
| US2013297704A1 | Cited by | United States of America | Pre-grant |
| US10547376B2 | Cited by | United States of America | Search report |
| US2015249599A1 | Cited by | United States of America | Search report |
| CN104247367A | Cited by | China | Search report |
| US9894593B2 | Cited by | United States of America | Search report |
| US11936466B2 | Cited by | United States of America | Applicant |
| US9059911B2 | Cited by | United States of America | Applicant |
| US10212026B2 | Cited by | United States of America | Applicant |
| US10984154B2 | Cited by | United States of America | Search report |
| US2013080117A1 | Cited by | United States of America | Pre-grant |
| US9059911B2 | Cited by | United States of America | Applicant |
| US10715248B2 | Cited by | United States of America | Search report |
| US9157308B2 | Cited by | United States of America | Search report |
| US10791566B2 | Cited by | United States of America | Applicant |
| US2010198952A1 | Cited by | United States of America | Pre-grant |
| US10462048B2 | Cited by | United States of America | Search report |
| US10409703B1 | Cited by | United States of America | Applicant |
| US2015249599A1 | Cited by | United States of America | Pre-grant |
| CN103336756A | Cited by | China | Search report |
| US9883523B2 | Cited by | United States of America | Applicant |
| US2023342521A1 | Cited by | United States of America | Search report |
| US2013201875A1 | Cited by | United States of America | Pre-grant |
| US2013173505A1 | Cited by | United States of America | Pre-grant |
| US10749737B2 | Cited by | United States of America | Applicant |
| US9450899B2 | Cited by | United States of America | Applicant |
| US2014006785A1 | Cited by | United States of America | Pre-grant |
| US2011119487A1 | Cited by | United States of America | Pre-grant |
| US10461846B2 | Cited by | United States of America | Search report |
| US9088477B2 | Cited by | United States of America | Search report |
| US10004082B2 | Cited by | United States of America | Applicant |
| US8549533B2 | Cited by | United States of America | Search report |
| US2016019051A1 | Cited by | United States of America | Pre-grant |
| US2025085965A1 | Cited by | United States of America | Search report |
| US9104466B2 | Cited by | United States of America | Search report |
| US2013191340A1 | Cited by | United States of America | Pre-grant |
| US10019250B2 | Cited by | United States of America | Search report |
15 members in 2 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 13907808 | United States of America | P | |
| 13907808 | United States of America | P | |
| 64337809 | United States of America | A | |
| 61139078 | – | – | – |
| US20080139078P | – | – | – |
| US20090643378 | – | – | – |
Members15
| Document | Office | Kind | |
|---|---|---|---|
| US2010162036A1 | United States of America | A1 | |
| US2010162383A1 | United States of America | A1 | |
| WO2010071882A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2010071884A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2010071888A2 | World Intellectual Property Organization (WIPO) | A2 | |
| US2010169446A1 | United States of America | A1 | |
| WO2010071884A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2010071888A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2010071882A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US8316113B2 | United States of America | B2 | |
| US8392496B2 | United States of America | B2 | |
| US2013173766A1 | United States of America | A1 | |
| US2013191881A1 | United States of America | A1 | |
| US9203865B2 | United States of America | B2 | |
| US2016164764A1 | United States of America | A1 |
55 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail O.P. Petition DecisionMOPPT | MOPPT | |
| Mail-Petition Decision - GrantedMPTGR | MPTGR | |
| Petition Decision - GrantedPTGR | PTGR | |
| O.P. Petition DecisionOPPT | OPPT | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Petition EnteredPET. | PET. | |
| Payment of Maintenance Fee under 1.28(c)M1559 | M1559 | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Payment of Maintenance Fee, 8th Yr, Small EntityM2552 | M2552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Interview Summary - Examiner InitiatedEXIE | EXIE | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Sent to Classification ContractorPGPC | PGPC | |
| Filing Receipt - UpdatedFLRCPT.U | FLRCPT.U | |
| Application Is Now CompleteCOMP | COMP | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
18 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee payment procedurePETITION RELATED TO MAINTENANCE FEES GRANTED (ORIGINAL EVENT CODE: PTGR); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Fee payment procedureENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Maintenance fee paymentPAYMENT OF MAINTENANCE FEE UNDER 1.28(C) (ORIGINAL EVENT CODE: M1559); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20100169446
- Publication, DOCDB
- 2010169446
- Publication, EPODOC
- US2010169446
- Application
- 12643378
- Application, DOCDB
- 64337809
- Application, EPODOC
- US20090643378
Titles
- English
- Cluster Architecture and Configuration for Network Security Devices
Patent term adjustment
- A delay
- +249 daysthe office missed an examination deadline
- Applicant delay
- −91 days
- Net adjustment
- 158 days
Classification
- CPC, 17
- H04L41/0659
- G06F11/181
- G06F11/182
- G06F11/2028
- G06F11/203
- G06F11/2035
- H04L41/0869
- H04L41/0893
- H04L43/0817
- H04L63/0218
- G06F15/177
- H04L63/20
- H04L41/0894
- H04L43/0876
- H04L63/029
- H04L67/1095
- H04L67/142
- IPC, 3
- G06F15 177
- G06F15 16
- G06F15 173
- USPC, 3
- 709206000
- 709222000
- 709224000