ATRG ClusterXL R6x R7x R8x (09-June-2020)
ATRG ClusterXL R6x R7x R8x (09-June-2020)
Advanced Technical
Reference Guide
9 June 2020
Classification: [Protected]
For additional technical information, visit the Check Point Support Center.
Revision History
Date Description
09 June 2020 Updated requirements for latency (≤100 msec) and packet loss (≤5%)
21 Feb 2019 Corrected a typo in the cphaprob mmagic command examples
25 Feb 2018 Updated section (1-4-B) Requirements for number of cluster members:
1) Changed from
"Up to 8 cluster members are supported in ClusterXL",
which is a theoretical limit
To
"Up to 5 cluster members are supported in ClusterXL",
which is a practical limit
2) Added:
"Up to 13 cluster members are supported in VSLS"
11 June 2017 Added links to the relevant R80.10 documents
Added CCP versions for R80.10
Added CCP versions for R76SP.50
Added a note that in Gaia R80.10, the 5th byte of the Source MAC
address (MAC magic) in all types of CCP packets is assigned
automatically
Added new cluster kernel debug flags in R80.10: arp, mmagic, trap
Added new command in R80.10: cphaprob mmagic
Added new flag in R80.10: cphaprob -m if
01 Feb 2017 Updated and corrected CCP OpCode information
Improved design of tables
18 Jan 2017 Added the number of supported cluster members in VRRP on Gaia
21 Aug 2016 Replaced "Crossbeam" with "X-Series"
Updated explanation about multiple Sync networks
Added a note that Solaris OS is not supported since R70
10 July 2016 Added section (3-11-C) "ARP Forwarding"
22 June 2016 Improved explanation about configuration of synchronization network
16 May 2016 Improved Table of Contents
Added CCP versions for R76SP.40
03 Feb 2016 Improved calculation of Destination MAC address for CCP packets when
there is no VIP configured on the involved interface
14 Jan 2016 Updated the definition of 3rd party cluster to include VRRP on Gaia
27 Dec 2015 Added additional related solution
24 Nov 2015 Added a note about Cluster Under Load (CUL) mechanism
15 Nov 2015 Added CCP versions for R76SP.10_VSLS and R76SP.30
14 Nov 2015 Clarified the explanation about pingable host
Added the explanation that CCP packets are not encrypted
Gateways and VPN connections are business critical devices. The failure of a Security
Gateway or VPN connection can result in the loss of active connections and access to
critical data. The gateway between the organization and the world must remain open under
all circumstances.
ClusterXL uses unique physical IP addresses and MAC addresses for the cluster
members, and Virtual IP addresses to represent the cluster itself on the attached networks.
Virtual IP addresses do not belong to an actual machine interface (except in High
Availability Legacy (Traditional) mode).
ClusterXL provides an infrastructure that ensures that data is not lost due to a failure, by
ensuring that each cluster member is aware of connections passing through the other
members. Passing information about connections and other Security Gateway states
between the cluster members is known as State Synchronization.
Security Gateway Clusters can also be built using OPSEC certified High Availability and
Load Sharing products. OPSEC certified clustering products use the same State
Synchronization infrastructure as ClusterXL. Refer to http://www.checkpoint.com/opsec/.
Note: This applies to ClusterXL in Security Gateway mode only. For more on VSX
mode, see the VSX Administration Guide (VSX NGX, VSX NGX Scalability Pack, VSX
NGX R65, VSX NGX R67, VSX NGX R68, R75.40VS, R76, R77.X, R80.10).
Different vendors give different meanings to terms that relate to clusters, High
Availability and Load Sharing (Load Balancing).
Check Point uses the following definitions and terms (the order of definitions and terms
listed below is dictated by education reasons):
ClusterXL - Cluster of Check Point Security Gateways that work together in a redundant
configuration. These Check Point Security Gateways are installed on Gaia /
SecurePlatform / X-Series / Solaris (R6X and lower) / Windows OS.
Up to 8 cluster members are supported in ClusterXL.
Up to 5 cluster members are supported 3rd party cluster (IPSO / X-Series).
Up to 2 cluster members are supported in VRRP cluster on Gaia OS (sk105170).
Notes:
In ClusterXL Load Sharing mode, configuring more than 4 members significantly
decreases cluster performance due to amount of Delta Sync
In X-Series chassis, configuring more than 4 members (APMs) significantly
decreases cluster performance due to amount of Delta Sync.
In X-Series DBHA configuration, the above requirement applies to a single chassis
(Check Point code is not aware of DBHA).
3rd party cluster - Cluster of Check Point Security Gateways that work together in a
redundant configuration. These Check Point Security Gateways are installed on X-Series
XOS, or IPSO OS.
Notes:
VRRP Cluster on Gaia OS is also considered a 3rd party cluster.
Cluster Mode - configuration of cluster members to work in either High Availability / VRRP
(one cluster member processes all the traffic), or Load Sharing (all traffic is processed in
parallel by all cluster members).
Failover / Fail-over - Transferring of a control over traffic (packet filtering) from a cluster
member that suffered a failure to another cluster member (based on internal cluster
algorithms).
Failback / Fallback - Recovery of a cluster member that suffered from a failure. The state
of a recovered cluster member is changed from 'Down' to either 'Active', or 'Standby'
(depending on Cluster Mode).
Cluster topology - set of interfaces on all members of a cluster and their settings (Network
Objective, IP address/Net Mask, Topology, Anti-Spoofing, etc.).
Network Objective - defines how the cluster will configure and monitor an interface -
Cluster, Sync, Cluster+Sync, Monitored Private, Non-Monitored Private.
Configured in SmartDashboard - cluster object - 'Topology' pane - 'Network Objective'.
Sync (a.k.a. Secured, Trusted) interface - An interface that was configured as a part of
cluster topology for State Synchronization: SmartDashboard - cluster object - 'Topology'
pane - 'Network Objective' column - set to 'Sync' or 'Cluster+Sync'.
Up to three Sync interfaces can be configured per cluster.
Private interface - An interface that was configured as not to be a part of cluster topology:
SmartDashboard - cluster object - 'Topology' pane - 'Network Objective' column - set to
'Private'.
This interface will not be monitored by cluster, and failure on this interface will not cause
any changes in member's state. Applies only to 3rd party clusters.
Full Sync - Complete synchronization of relevant kernel tables by a cluster member that
tries to join the cluster against the working cluster member(s). This process is meant to
fetch a “snapshot” of the relevant kernel tables of already Active cluster member(s).
Full Sync is performed during initialization of Check Point software (during boot process,
the first time the member runs policy installation, during 'cpstart'). Until the Full Sync
process is complete successfully, this member remains in 'Down' state because until it is
fully synchronized with other cluster members, it can not function as a cluster member.
Meanwhile the Delta Sync packets continue to arrive and are stored in kernel memory
until Full Sync completes.
The whole Full Sync process is performed by FWD daemons on TCP port 256 and is
always done over.
The information is sent by FWD daemons in chunks while making sure they confirm
getting the information before sending the next chunk.
Delta Sync - Synchronization of kernel tables between all working cluster members -
exchange of CCP packets that carry pieces of information about different connections and
operations that should be performed on these connections in relevant kernel tables.
This Delta Sync process is performed directly by Check Point kernel.
While performing Full Sync, the Delta Sync updates are not processed and saved in
kernel memory. After Full Sync is complete, the Delta Sync packets stored during the Full
Sync phase are applied by order of arrival.
Delta Sync retransmission - It is possible that Delta Sync packets will be lost or corrupted
during the Delta Sync operations. In such cases, it is required to make sure the Delta Sync
packet is re-sent. The cluster member request the sending member to retransmit the
lost/corrupted Delta Sync packet.
Each Delta Sync packet has a sequence number.
The sending member has a queue of sent Delta Sync packets.
Each cluster member has a queue of packets sent from each of the peer cluster
members.
If, for any reason, a Delta Sync packet was not received by a cluster member, it can ask
for a retransmission of this packet from the sending member.
The Delta Sync retransmission mechanism is somewhat similar to a TCP Window and
TCP retransmission mechanism.
When a member requests retransmission of Delta Sync packet, which no longer exists
on the sending member, the member prints a console messages that the sync is not
complete.
Blocking mode - Cluster Mode, where cluster member does not forward any traffic (e.g.,
caused by a failure).
Non-blocking mode - Cluster Mode, where cluster member keeps forwarding all traffic.
High Availability (a.k.a. Active/Standby) mode - Cluster Mode, where only one cluster
member ('Active' member) processes all the traffic, while other cluster members ('Standby'
members) are ready to be promoted to 'Active' state if 'Active' member fails.
In High Availability New Mode, the cluster Virtual IP address (that represents the cluster
on that network) is associated:
with physical MAC Address of 'Active' member
with virtual MAC Address (refer to sk50840 (How to enable ClusterXL Virtual MAC
(VMAC) mode))
In High Availability Legacy (Traditional) Mode, there are no Virtual IP addresses - the
cluster members share identical IP and MAC addresses, so that the Active cluster member
receives from a hub or switch all the packets that were sent to the cluster IP address.
Load Sharing (a.k.a. Active/Active, Load Balancing) mode - Cluster Mode, where all
traffic is processed by all cluster members in parallel.
Load Sharing Multicast mode - Load Sharing Cluster Mode, where all traffic is processed
by all cluster members in parallel - each member is assigned the equal load of [ 100% /
number_of_members ].
The cluster Virtual IP address (that represents the cluster on that network) is associated
with Multicast MAC Address 01:00:5E:X:Y:Z (which is generated based on last 3 bytes
of cluster Virtual IP address on that network).
A ClusterXL decision algorithm (Decision Function) on all cluster members decides
which cluster member should process the given packet.
Full High Availability (a.k.a. Full HA) mode - Special Cluster Mode (supported only on
Check Point appliances running Gaia OS or SecurePlatform OS) where each cluster
member also runs as a Security Management Server. This provides redundancy both
between Security Gateways (only High Availability is supported) and between Security
Management Servers (only High Availability is supported). Refer to sk101539 (ClusterXL
Load Sharing mode limitations and important notes) and sk39345 (Management High
Availability restrictions).
Decision Function - Special cluster algorithm applied by each cluster member on the
incoming traffic in order to decide, which member should process the given packet - each
cluster members maintains a table of hash values generated based on connections tuple
(source and destination IP addresses/Ports, and Protocol number).
In order to see the decision process, run kernel debug of 'cluster' module with flag
'df' (also recommended to enable the flag 'select').
Sticky Decision Function (SDF) - Special cluster algorithm in Load Sharing mode that
allows the user to control based on which parameters should the Decision Function be
applied to the incoming connections:
IPs, Ports, SPIs
IPs, Ports
IPs
Selection - The packet selection mechanism is one of the central and most important
components in the ClusterXL product and State Synchronization infrastructure for 3rd party
clustering solutions. Its main purpose is to correctly decide (select) what has to be done to
the incoming and outgoing traffic on the cluster machine.
In order to see the selection process, run kernel debug of 'cluster' module with flag
'select' (also recommended to enable the flag 'df').
In ClusterXL - the packet is selected by cluster member(s) depending on the cluster
mode:
o In HA modes - by Active member
o In LS Unicast mode - by Pivot member
o In LS Multicast mode - by all members.
Then the member applies the Decision Function (and SDF).
In 3rd party / OPSec cluster - the 3rd party software selects the packet, and Check
Point code just inspects it (and performs State Synchronization).
Initializing - State of a cluster member during initialization of Check Point software (this
state can be seen only in cluster debug). An initial and transient state of the cluster member
- the ClusterXL product is already running, but not all ClusterXL Critical Devices are
initialized yet and FireWall product is not ready yet.
Ready - State of a cluster member during after initialization and before promotion to the
next required state - Active/Standby/Master/Backup (depending on Cluster Mode).
A member in this state does not process any traffic passing through cluster. A member
might be stuck in this state due to several reasons - refer to sk42096 (Cluster member is
stuck in 'Ready' state).
Active attention - In ClusterXL - state of the 'Active' cluster member that suffers from a
failure (and failover is not possible because there are no other available members, e.g.,
while Standby member of an HA cluster reboots).
Standby - State of a cluster member that is ready to be promoted to 'Active' state (if Active
member fails) in ClusterXL configured in High Availability mode.
Master - State of a cluster member that processes all traffic in ClusterXL configured in
VRRP mode.
Backup - State of a cluster member that is ready to be promoted to 'Master' state (if Master
member fails) in ClusterXL configured in VRRP mode.
Dead - State reported by a cluster member when it goes out of the cluster (due to
'cphastop' command (which is a part of 'cpstop'), or reboot).
Dying - State of a cluster member as assumed by peer members if it did not report its state
for 0.7 sec.
ClusterXL is inactive, or the machine is down - Such state is reported by the given
member regarding the peer member after the peer member notifies (via CCP) that it goes
out of the cluster (due to 'cphastop' command (which is a part of 'cpstop'), or reboot).
Critical Device (a.k.a. Problem Notification, Pnote) - Special software device on each
cluster member through which the critical aspects for cluster operation are monitored.
When the critical monitored component on a cluster member fails to report its state on
time, or when its state is reported as problematic, the state of that member is immediately
changed to 'Down'
The complete list of the configured critical devices (pnotes) is printed by the 'cphaprob
-ia list' command.
Restrictions:
Total number of critical devices (pnotes) on cluster member is limited to 16.
Name of any critical device (pnote) on cluster member is limited to 16 characters.
Additional critical devices (pnotes) can be registered by using the following syntax:
cphaprob -d Device_Name -t TimeOut_in_Sec -s State [-p]
register
Important Note: For R76 and above, refer to sk92878 (User Space process monitoring
mechanism in R76 ClusterXL).
Note: On Security Gateway in VSX mode, global pnotes can be registered only from the
context of VS0.
Any critical device (pnote) can be unregistered by using the following syntax:
cphaprob -d Device_Name [-p] unregister
Note: On Security Gateway in VSX mode, global pnotes can be unregistered only
from the context of VS0.
Subscribers - User Space processes that are made aware of the current state of the
ClusterXL state machine and other clustering configuration parameters. List of such
subscribers can be obtained by running the cphaconf debug_data command.
Sticky connection - A connection is called 'sticky' if all packets are handled by a single
cluster member (in High Availability mode, all packets reach the 'Active' machine, so all
connections are sticky).
Non-sticky connection - A connection is called 'non-sticky' if the reply packet returns via a
different cluster member than the original packet (e.g., if network administrator has
configured asymmetric routing; in Load Sharing mode, all cluster members are 'Active', and
in Static NAT and encrypted connections, the Source and Destination IP addresses
change, therefore, Static NAT and encrypted connections through a Load Sharing cluster
may be non-sticky).
Flush and ACK (a.k.a. FnA, F&A) - Cluster member forces the Delta Sync packet about
the incoming packet and waiting for acknowledgements from all other Active members and
only then allows the incoming packet to pass through.
In some scenarios, it is required that some information, written into the kernel tables, will
be Sync-ed promptly, or else a race condition can occur. The race condition may occur if a
packet that caused a certain change in kernel tables left cluster Member_A toward its
destination and then the return packet tries to go through cluster Member_B.
In general, this kind of situation is called asymmetric routing. What may happen in this
scenario is that the return packet arrives at cluster Member_B before the changes induced
by this packet were Sync-ed to this Member_B.
Example of such a case is when a SYN packet goes through cluster Member_A,
causing multiple changes in the kernel tables and then leaves to a server. The SYN-ACK
packet from a server arrives at cluster Member_B, but the connection itself was not Sync-
ed yet. In this condition, the cluster Member_B will drop the packet as an Out-of-State
Packet Selection - Distinguishing between different kinds of packets coming from the
network, and selecting, which member should handle a specific packet (Decision Function
mechanism):
CCP packet from another member of this cluster
CCP packet from another cluster or from a cluster member with another version
(usually older version of CCP)
Packet is destined directly to this member
Packet is destined to another member of this cluster
Packet is intended to pass through this cluster member
ARP packets
CPHA - General term that stands for Check Point High Availability (historic fact: the first
release of ClusterXL supported only High Availability) that is used only for internal
references (e.g., inside kernel debug) to designate ClusterXL infrastructure.
Probing - If a cluster member fails to receive status for another member (does not receive
CCP packets from that member) on a given segment, cluster member will probe that
segment in an attempt to illicit a response.
The purpose of such probes is to detect the nature of possible interface failures, and to
determine which module has the problem.
The outcome of this probe will determine what action is taken next (change the state of
an interface, or of a cluster member).
Refer to Cluster Control Protocol (CCP) section.
IP tracking - Collecting and saving of Source IP addresses and Source MAC addresses
from incoming IP packets during the probing.
This information is saved in IP tracking tables according to IP tracking policy:
host_ip_addrs_all, id 8125
host_ip_addrs, id 8177
IP tracking is a useful for members within a cluster to determine whether the network
connectivity of the member is acceptable.
Pingable host - Some host (i.e., some IP address) that cluster members can ping during
probing mechanism. Pinging hosts in an interface's subnet is one of the health checks that
ClusterXL mechanism performs. This pingable host will allow the cluster members to
determine with more precision what has failed (which interface on which member).
On Sync network, usually, there are no hosts. In such case, if switch supports this, an
IP address should be assigned on the switch (e.g., in the relevant VLAN).
The IP address of such pingable host should be assigned per this formula:
IP_of_pingable_host = IP_of_physical_interface_on_member + ~10
Assigning the IP address to pingable host that is higher than the IP addresses of
physical interfaces on the cluster members will give some time to cluster members to
perform the default health checks.
Example:
IP address of physical interface on a given subnet on Member_A is 10.20.30.41
IP address of physical interface on a given subnet on Member_B is 10.20.30.42
IP address of pingable host should be at least 10.20.30.50
Flapping - Consequent changes in the state of either cluster interfaces (cluster interface
flapping), or cluster members (cluster member flapping). Such consequent changes in the
state are seen in SmartView Tracker (if in SmartDashboard in cluster object, the cluster
administrator set 'Track changes in the status of cluster members' to 'Log').
VMAC - Virtual MAC address (available since R71). When this feature is enabled on cluster
members, all cluster members in High Availability New mode / Load Sharing Unicast mode
(Note: any VSX cluster works in High Availability mode) associate the same Virtual MAC
address with Virtual IP address.
This allows avoiding issues when Gratuitous ARP packets sent by cluster during failover
are not integrated into ARP cache table on switches surrounding the cluster.
Refer to sk50840 (How to enable ClusterXL Virtual MAC (VMAC) mode).
HTU - Stands for "HA Time Unit". All internal time in ClusterXL is measured in HTUs (the
times in cluster debug also appear in HTUs).
Formula in the code:
1 HTU = 10 x fwha_timer_base_res = 10 x 10 milliseconds = 100 ms
In addition, in order to avoid unexpected fail-overs due to issues with CCP packets on
cluster interfaces, it is strongly recommended to pair only identical physical interfaces as
cluster interfaces - even when connecting the cluster members via a switch:
Intel 82598EB on Member_A with Intel 82598EB on Member_B
Broadcom NeXtreme on Member_A with Broadcom NeXtreme on Member_B
ClusterXL is supported only between identical operating systems (all cluster members
must be installed on the same operating system) and between identical Check Point
software versions (all cluster members must be installed with identical Check Point
software, including OS build and hotfixes).
All ClusterXL modes are supported on all operating systems (except High Availability
Legacy (Traditional) mode).
All Check Point software components must be identical on all cluster members.
Meaning that identical Software Blades and features must be enabled on all cluster
members:
SecureXL status - SecureXL on all members has to be either enabled, or disabled
Number of CoreXL FW instances - number of instances on all members must be
identical
Advanced Dynamic Routing - on all members has to be either enabled, or disabled
Otherwise, traffic might not be processed as expected and/or state of cluster members
might change expectedly. In addition, Full Sync will fail.
Cluster interfaces can be connected only via Layer 2 networking devices - hubs and
switches. Connecting cluster interfaces via Layer 3 networking devices (routers) is not
supported.
Cluster networks must meet the requirements for latency (less than 100 milliseconds)
and packet loss (less than 5%).
Note: Latency cannot be measured correctly by a simple tool as Ping or Traceroute -
more sophisticated tools are required that measure electrical signals on the wire.
(1-4-E-i) High Availability New mode and Load Sharing Unicast Mode
When running the CCP in Multicast mode (default), the Layer 2 Destination MAC
address of CCP packets is a Multicast MAC address 01:00:5E:X:X:X.
Load Sharing Multicast Mode, the cluster Virtual IP address (that represents the cluster
on that network) is associated with Multicast MAC Address 01:00:5E:X:Y:Z, which is
generated based on the last 3 bytes of cluster Virtual IP address.
Refer to Mode comparison table.
When working in Load Sharing Multicast mode, the router must support sending unicast
IP packets with multicast MAC addresses. This is required so that all cluster members will
receive the data packets.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Example Configuration of a Cisco Catalyst Routing
Switch.
To use ClusterXL, each Security Gateway in the cluster configuration must have a
regular Security Gateway license and the Security Management Server must have a
license for each cluster defined. There are separate licenses for cluster High Availability
mode and for cluster Load Sharing mode.
It does not matter how many Security Gateways are included in the cluster. If the proper
licenses are not installed, the policy installation operation will fail.
For assistance with licenses, contact Check Point Customer Account Services
(http://www.checkpoint.com/form/contact_account.html, AccountServices@checkpoint.com,
+1-972-444-6600 ext 5).
(2-1) Introduction
A failure of a firewall results in an immediate loss of active connections in and out of the
organization. A failure of a firewall results in an immediate loss of active connections in and
out of the organization. Many of these connections, such as financial transactions, may be
mission critical, and losing them will result in the loss of critical data.
ClusterXL supplies an infrastructure that ensures that no data is lost in case of a failure,
by making sure each cluster member is aware of the connections going through the other
members. Passing information about connections (stored in various Check Point kernel
tabled) and other Security Gateway states between the cluster members is called State
Synchronization.
Every IP-based service (including ICMP, TCP and UDP) recognized by the Security
Gateway is synchronized (unless configured otherwise in SmartDashboard).
State Synchronization uses the following two synchronization modes (since NG with
Application Intelligence):
Full Sync is performed during initialization of Check Point software (during boot
process, the first time the member runs policy installation, during 'cpstart'). Until the
Full Sync process is complete successfully, this member remains in 'Down' state
because until it is fully synchronized with other cluster members, it can not function as a
cluster member.
Meanwhile the Delta Sync packets continue to arrive and are stored in kernel
memory until Full Sync completes.
o The member that tries to join the cluster starts to serve as Full Sync Client.
$FWDIR/log/fwd.elg log file shows:
fwsync: Connected to Sync Server
Decimal_IP_Address_of_Peer_Member. Starting full sync
fwsync: Full sync connection finished successfully
fwsync: End Sync Connection successfully
o A member chosen for Full Sync starts to serve as Full Sync Server.
$FWDIR/log/fwd.elg log file shows:
fwd_syncn_handler: got new full sync connection request from peer
Hex_IP_Address_of_Peer_Member
The information is sent by FWD daemons in chunks while making sure they confirm
getting the information before sending the next chunk.
Delta Sync - Synchronization of kernel tables between all working cluster members
- exchange of CCP packets that carry pieces of information about different
connections and operations that should be performed on these connections in
relevant kernel tables.
While performing Full Sync, the Delta Sync updates are not processed and saved in
kernel memory. After Full Sync is complete, the Delta Sync packets stored during the
Full Sync phase are applied by order of arrival.
(2-3) Restrictions
2. State synchronization is supported only between cluster members that meet the
following requirements:
identical operating systems
identical Check Point software components
latency on synchronization network is less than 100 milliseconds and packet loss
is less than 5%
Note: There is no requirement for throughput of Sync interface to be identical to /
larger than throughput of traffic interfaces.
A set of interfaces on cluster members that were configured as interfaces, over which
State Synchronization information will be passed (as Delta Sync packets) comprise the
Synchronization Network.
Important Notes:
1. In R70 and above, the use of more than one Synchronization Network for
redundancy is not supported because the CPU load will increase significantly due to
duplicate tasks performed by all configured Synchronization Networks.
If a redundancy of Synchronization Networks is required, Check Point recommends
using Link Aggregation - configure several physical interfaces as a Bond interface,
and then configure single dedicated Synchronization Network over this single Bond
interface.
Refer to Link Aggregation (Bonding) section.
Refer to sk92804 (Sync Redundancy in ClusterXL).
2. State Synchronization information (payload of Delta Sync packets) is not encrypted.
It is up to cluster administrator to make sure that the Sync network is secured and
isolated.
Adding the 'Sync' objective to the interfaces that pass the production traffic will create
additional load on that interface, on the CPU and will make the troubleshooting much more
difficult.
If 'Sync' Network Objective was configured on any VLAN tags other than the lowest tag,
then cluster members will reject such configuration, and the output of 'cphaprob -a if'
command will explicitly show that no synchronization interfaces were configured.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'Synchronizing Connection Information Across
the Cluster' - Configuring State Synchronization - Configuring a Service Not to Synchronize.
By default, all connections are synchronized (i.e., for each processed connection, a
Delta Sync packet is created, sent by the member that processed this connection, received
and processed by peer members).
If the amount of traffic is high, the amount of Delta Sync packets will cause noticeable
load on the CPU. This load will increase significantly, if more than one Synchronization
Network is configured.
3. ClusterXL Modes
Up to 8 cluster members are supported in ClusterXL.
Up to 5 cluster members are supported 3rd party cluster (IPSO / X-Series).
Up to 2 cluster members are supported in VRRP cluster on Gaia OS (sk105170).
Notes:
In ClusterXL Load Sharing mode, configuring more than 4 members significantly
decreases cluster performance due to amount of Delta Sync
In X-Series chassis, configuring more than 4 members (APMs) significantly
decreases cluster performance due to amount of Delta Sync.
In X-Series DBHA configuration, the above requirement applies to a single chassis
(Check Point code is not aware of DBHA).
Explanation: Cluster performance is decreased due to the high load on CPU that is
caused by the amount of Delta Sync packets, which increases significantly with the number
of cluster members (the whole cluster might suffocate, depending on the production traffic,
of course).
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'High Availability and Load Sharing in ClusterXL'
- ClusterXL Modes - Mode Comparison Table:
Notes:
A. Open SmartDashboard
B. Open cluster object
C. Go to 'Topology' pane - click on 'Edit...'
D. Select the relevant VIP interface - click on 'Edit...'
E. On 'General' tab, click on 'Advanced...'
F. If you need to change this address, then
select 'User defined:' and enter new Multicast MAC address
G. Click 'OK' in all windows to apply the changes
H. Save the changes: go to 'File' menu - click on 'Save'
I. Install policy
Example:
VIP = 192.50.204.20
Final MAC = 01:00:5E:("50"hex):("204"hex):("20"hex) =
= 01:00:5E:32:CC:14
Example:
VIP = 192.168.204.20
Final MAC = 01:00:5E:("168-128"hex):("204"hex):("20"hex) =
= 01:00:5E:28:CC:14
Refer to sk25977 (Connecting multiple clusters to the same network segment (same
VLAN, same switch) - section about the "Destination MAC address" of the Cluster
Control Protocol.
This diagram can be used as example of cluster topology for these modes:
o High Availability New mode
o Full High Availability mode
o Load Sharing Multicast mode
o Load Sharing Unicast mode
Note: The example diagram for High Availability Legacy (Traditional) mode appears in
the corresponding section.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'High Availability and Load Sharing in ClusterXL'
- ClusterXL Modes - High Availability Mode.
The High Availability New mode provides basic High Availability capabilities in a cluster
environment. The cluster provides Firewall services even when it encounters a problem,
which on a StandAlone module would have resulted in a complete loss of connectivity.
When combined with Check Point's State Synchronization, ClusterXL in High Availability
New mode can maintain connections through failover events, in a user-transparent manner,
allowing a flawless connectivity experience.
ClusterXL High Availability New mode designates one of the cluster members as the
Active machine, while the rest of the members are kept in a Standby mode.
High Availability New mode uses unique, real IP addresses for the cluster members
interfaces. The cluster Virtual IP addresses are associated with the physical network
interfaces of the Active machine (by matching the Virtual IP address with the unique MAC
address of the appropriate physical interface).
The cluster members physical IP addresses do not have to be routable on the Internet.
Only the cluster Virtual IP addresses must be routable.
All traffic directed at the cluster is actually routed (and filtered) by the Active member -
assigned traffic load is 100%. The role of each cluster member is chosen according to its
priority, with the Active member being the one with the highest priority (and lowest Member
ID).
If State Synchronization is applied, any open connections are recognized by the new
Active machine, and are handled according to their last known state.
Upon the recovery of a member with a higher priority, the role of the Active machine
may or may not be switched back to that member, depending on the cluster configuration.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20) - Chapter
'UTM-1 Clustering'.
Full High Availability (a.k.a. Full HA) mode is a special Cluster Mode that is supported
only on Check Point appliances running Gaia OS or SecurePlatform OS, where each
cluster member also runs as a Security Management Server.
This mode provides redundancy both between Security Gateways (only High Availability
is supported - assigned traffic load is 100%) and between Security Management Servers
(only High Availability is supported and there is no failover between the Security
Management server components).
Notes:
Unlike between the Security Gateway components, there is no failover between the
Security Management server components. If the Primary Security Management
Server goes down, the Secondary Security Management Server does not take over.
However, the database on the Secondary Security Management Server is fully
synchronized with the database on the Primary Security Management Server, so no
data is lost.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Appendix A 'High Availability Legacy Mode'.
In High Availability Legacy mode, the cluster members share identical IP and MAC
addresses, so that the Active cluster member receives from a hub or switch all the packets
that were sent to the cluster IP address - assigned traffic load is 100%. A shared interface
is an interface with MAC addresses and IP addresses that are identical to those of another
interface on the peer members.
The Security Management Server must not be connected to these shared interfaces - in
other words, the synchronization network of the cluster, or to a dedicated management
network.
Configuration instructions:
1. On Cluster Members
A. Disconnect the members from any switches / hubs
B. Install the same version of Check Point Security Gateway
C. Enable cluster membership
D. Configure identical IP addresses for shared interfaces
E. Do NOT reboot the machines
F. Connect the members through switch / hub - connect each network (internal,
external, Synchronization, DMZ, etc.) to a separate VLAN, switch or hub
G. Reboot the machines - for MAC Address configuration to take place
Example:
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'High Availability and Load Sharing in ClusterXL'
- ClusterXL Modes - Load Sharing Multicast Mode.
ClusterXL in Load Sharing Multicast mode distributes traffic within a cluster of Security
Gateways, so that the total throughput of multiple machines is increased.
In Load Sharing configurations, all functioning machines in the cluster are Active, and
handle network traffic (Active/Active operation) - assigned traffic load is 100% equally
divided by the number of active members.
If there is a failure in one of the machines, its connections are redistributed amongst the
remaining operational machines in the cluster.
Load Sharing Multicast mode uses unique, real IP addresses for the cluster members
interfaces. The cluster Virtual IP addresses are associated with the Multicast MAC address
(created based on the Virtual IP addresses).
The cluster members physical IP addresses do not have to be routable on the Internet.
Only the cluster Virtual IP addresses must be routable.
ClusterXL uses the Ethernet Multicast mechanism to associate the cluster Virtual IP
addresses with all cluster members. By binding these Virtual IP addresses to Multicast
MAC addresses, it ensures that all packets sent to the cluster, acting as a gateway, will
reach all members in the cluster.
Distribution of the traffic between cluster members is performed by applying a Decision
Function to each packet - each member decides whether it should or should not process
the packets.
This decision is the core of the Load Sharing mechanism: it has to assure that at least
one member will process each packet (so that traffic is not blocked), and that no two
members will handle the same packets (so that traffic is not duplicated).
If it is required that specific connections are always processed by particular member,
then additional decision algorithm can be enabled - Sticky Decision Function.
Refer to sk101539 (ClusterXL Load Sharing mode limitations and important notes).
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'High Availability and Load Sharing in ClusterXL'
- ClusterXL Modes - Load Sharing Unicast Mode.
The Load Sharing Unicast mode was developed in order to meet the needs of
customers, who use legacy routers that do not support the use of a multicast MAC address
for a unicast IP address (refer to Requirements for switches and routers section).
Customers, who work in such environment require a Load Sharing solution, but do not wish
or cannot afford to replace their existing hardware.
Historical fact: This mode was introduced in NG FP4.
One of the cluster members - machine with highest priority, called the Pivot, is the only
machine that communicates with the router. In this scheme, the router has to know and
deal with a single unicast MAC address only - the Pivot’s MAC address. The Pivot
communicates with the router "on behalf" of the cluster, thus, enabling the usage of a
unicast traffic.
The Pivot is responsible for forwarding and distributing the traffic throughout the cluster,
while implementing both load sharing and redundancy solutions.
Load Sharing Unicast mode uses unique, real IP addresses for the cluster members
interfaces. The cluster Virtual IP addresses are associated with the physical network
interfaces of the Pivot machine (by matching the Virtual IP address with the unique MAC
address of the appropriate physical interface).
Note that non-Pivot members are still considered as “Active”, since they perform routing
and Firewall tasks on their share of the traffic (although they do not perform decisions).
(3-8) VRRP
Refer to Gaia Administration Guide (R75.40, R75.40VS, R76, R77.X, R80.10) - Chapter
'High Availability'.
Virtual Router Redundancy Protocol (VRRP, RFC 3768) provides dynamic failover of IP
addresses from one router (Master) to another router (one of the Backup routers) in the
event of failure. VRRP allows you to provide alternate router paths for end hosts.
Each VRRP cluster, known as a Virtual Router, has a unique identifier, known as the
VRID (Virtual Router Identifier). A Virtual Router can have one or more virtual IP addresses
(VIP) to which other network nodes connect as a final destination or the next hop in a route.
Important Note: You cannot have a standalone deployment (Security Gateway and
Security Management server on the same computer) in a Gaia VRRP cluster.
(3-9) Bridge
ClusterXL in Bridge Mode is supported only in R75.40VS / R76 / R77 and above.
Refer to sk101371 (Bridge Mode on Gaia OS and SecurePlatform OS).
Cluster administrator should learn about Sticky Decision Function, which enables
certain services to operate in a Load Sharing deployment. For example, it is required for
L2TP traffic, or when the cluster is a participant in a Site-to-Site VPN tunnel with a 3rd party
peer.
IPs, Ports, SPIs (default) - provides the best sharing distribution, and is
recommended for use.
It is the least "sticky" sharing configuration.
Clarification:
A connection will stick to a cluster member based on IP addresses and based on
Ports.
Example:
Connection from IP_1:Port_1 to IP_2:Port_2 will stick to Member_A. Connection
from IP_1:Port_2 to IP_2:Port_2 might stick to Member_B.
IPs, Ports - should be used only if problems arise when distributing IPSec packets
to a few machines although they have the same source and destination IP
addresses.
IPs - should be used only if problems arise when distributing IPSec packets or
different port packets to a few machines although they have the same source and
destination IP addresses.
It is the most "sticky" sharing configuration.
In other words, it increases the probability that a certain connection will pass through
a single cluster member on both inbound and outbound directions.
Clarification:
A connection will "stick" to a cluster member based only on IP addresses.
Example:
All connections from IP_1 (from any port) to IP_2 (to any port) will stick to the same
Member_A.
Warning:
Since all connections between the given IP addresses will stick to the same
member, the CPU load on that member might increase significantly, which in turn
will negate the whole purpose of Load Sharing cluster mode.
Note:
Sticky Decision Function is enabled automatically, if Mobile Access Software Blade is
enabled on the cluster.
For more details, refer to ClusterXL Administration Guide (R70, R70.1, R71, R75,
R75.20, R75.40, R75.40VS, R76, R77.X, R80.10) - Chapter 'Sticky Connections'.
Refer to sk101539 (ClusterXL Load Sharing mode limitations and important notes).
Example:
A connection was initiated on the 'Standby' member in High Availability cluster. The
reply packets to such connection will be accepted by 'Active' member, and must be
forwarded to 'Standby' member.
Description:
The sending cluster member forwards the packet at the end of the Inbound processing.
On the target cluster member, the processing of the forwarded packet will continue from
the chain at which it has stopped on the source cluster member, or the packet will be
entered directly into the TCP/IP stack (if the packet has already passed through all
Inbound chains).
Debugging:
In order to see how a packet is forwarded between cluster members, debug the
'cluster' module with 'forward' flag (in addition, these flags are recommended:
'select', 'if', 'mac'):
[Expert@GW_HostName]# fw ctl debug -m cluster + forward select if mac
Technical details:
Packet Forwarding is performed in the following way (so that the target cluster member
can understand that this packet is intended to him):
Description:
Since the processed packet may be already decrypted, it must be sent over the
secured interfaces.
On the receiving side, the machine will not pass this packet to the FireWall (the
packet will not perform the inspection again), but instead the packet is passed
directly to the IP stack of the operating system.
In ClusterXL:
1st 2nd 3rd 4th 5th 6th
00 00 00 00 fwha_mac_forward_magic ID_of_Target_Member
Notes:
fwha_mac_forward_magic - name of the kernel parameter that controls
the value of 5th byte in forwarded packets (default value in R77.30 and lower
is 0xFD hex / 253 dec)
Refer to sk25977 (Connecting multiple clusters to the same network segment
(same VLAN, same switch)
Refer to sk95150 (When the Synchronization interfaces of three and more
ClusterXL members are connected to the same switch, port flapping occurs
on the switch)
o Layer 2 Destination MAC address of the packet is changed to the MAC address
of the Sync interface on peer member.
o Layer 3 Source IP address is the IP address of the host that sent the original
packet.
o The packet is dropped on the member that forwarded the packet (log is
generated only if forwarding fails).
Debug:
o In order to see the forwarding process, run the debug of 'cluster' module with
'forward' flag and of 'fw' module with 'drop' flag on Active member:
fwha_forward_msg_wrapper(if_number direction position
Target_Member_ID): forwarding
FW-1: fwha_forward_send_msg: Forwarding packet to id Target_Member_ID
fwha_forw_flush_callback: Forwarded successfully. Dropping chain
fw_log_drop: Packet proto= ... dropped by fwhaforw.c:LINE Reason:
unknown;
Example:
Packet flow:
1. The TCP SYN packet is sent by Standby over the External (eth0) with:
o Source MAC address 00:0C:29:72:56:47 (Standby ext eth0)
o Destination MAC address 00:50:56:c0:00:01 (Host)
o Source IP address 192.168.204.12 (Standby ext eth0)
o Destination IP address 192.168.204.1 (Host)
2. The SYN ACK packet is sent by Host over the External (eth0) with:
o Source MAC address 00:50:56:c0:00:01 (Host)
o Destination MAC address 00:0C:29:DB:26:47 (Active)
o Source IP address 192.168.204.1 (Host)
o Destination IP address 192.168.204.20 (cluster Virtual IP)
Refer to sk95150 (When the Synchronization interfaces of three and more ClusterXL
members are connected to the same switch, port flapping occurs on the switch).
When the Sticky Decision Function (SDF) is used, refer to sk95150 (When the
Synchronization interfaces of three and more ClusterXL members are connected to
the same switch, port flapping occurs on the switch).
In order to see the arrival of forwarded packet, run the debug of 'cluster' module
with 'select' flag on receiving member:
o If the local member should process this packet, the following is printed:
FW-1: fwha_select_ip_packet: Packet IN SourceIP_in_Hex->DestIP_in_Hex
FW-1: fwha_local_member_should_procces_mc: local member should process
packet
FW-1: fwha_select_ip_packet: Packet was filtered by member Member_ID
o If the local member should not process this packet, the following is printed:
FW-1: fwha_select_ip_packet: Packet IN SourceIP_in_Hex->DestIP_in_Hex
FW-1: fwha_local_member_should_procces_mc: local member should not process
packet
FW-1: fwha_select_ip_packet: Packet was dropped by member Member_ID
In Load Sharing Unicast mode, the connection is forwarded over the same
interface, on which it was received - not over Synchronization Network.
o Layer 2 Source MAC address of the packet is inverted and combined in a special
way with values of these kernel parameters: fwha_mac_magic and
fwha_mac_forward_magic.
Notes:
fwha_mac_magic - controls the value of 5th byte in Source MAC address of
CCP packets (default value in R77.30 and lower is 0xFE hex / 254 dec; starting
in Gaia R80.10, the value is assigned automatically)
fwha_mac_forward_magic - controls the value of 5th byte in Source MAC
address of forwarded packets (default value in R77.30 and lower is 0xFD hex /
253 dec; starting in Gaia R80.10, the value is assigned automatically)
Refer to sk25977 (Connecting multiple clusters to the same network segment
(same VLAN, same switch)
o Layer 2 Destination MAC address of the packet is changed to the MAC address
of the non-Pivot cluster member on the same subnet.
o Layer 3 Source IP address is the IP address of the host that sent the original
packet.
o The packet is dropped on the member that forwarded the packet (log is
generated only if forwarding fails).
o In order to see the forwarding process, run the debug of 'cluster' module with
flags 'pivot' and flag 'select' on Pivot member:
FW-1: fwha_pivot_selection_from_packet: packet forwarded ok to machine
Target_Member_ID
fwhamultik_handle_ip_packet: Dropping packet since it is not my packet,
packet was forwarded (LS pivot)
o In order to see the arrival of forwarded packet, run the debug of 'cluster'
module with 'select' flag on non-Pivot member:
fwha_select_ip_packet: The inverted back source MAC address will be XX-
XX-XX-XX-XX-XX
Example:
Traffic flow: Pivot cluster member receives a TCP connection from Host and
forwards it to the non-Pivot cluster member.
Packet flow:
1. Pivot cluster member performs bit-wise 'NOT' on the 4 last octets (from the left)
of the Source MAC address of the packet.
4. Pivot cluster member replaces the 3rd octet (from the left) of the 'NOT'-ed
Source MAC address from Step 1 with the result from Step 3.
5. Therefore, in our example, the final inverted Source MAC address during the
packet forward will be:
00:50:55:3F:FF:FE.
6. Pivot cluster member forwards the packet through the original interface (eth0)
towards the non-Pivot cluster member with:
o Source MAC address 00:50:55:3F:FF:FE (final inverted MAC of Host)
o Destination MAC address 00:0C:29:72:56:47 (non-Pivot eth0)
o Source IP address 192.168.204.1 (Host)
o Destination IP address 192.168.204.12 (non-Pivot eth0)
7. The non-Pivot cluster member performs the reversed inversion in order to extract
the original Source MAC address of the Host (to use it later as the Destination
MAC address in the packets).
Note: The only information that can be seen in kernel debug is the original Source
MAC address of the packet after the non-Pivot cluster member performs the
reversed inversion.
In order to see the original Source MAC address, debug the 'cluster' module with
'select' flag on the non-Pivot cluster member:
[Expert@GW_HostName]# fw ctl debug -m cluster + select
Example:
A connection was initiated that requires inspection by Check Point Active Streaming
(CPAS) - e.g., SMTP Security Server.
Description:
Chain forwarding enables one cluster member to pass a chain (a packet filtered by a
FireWall module, along with data attached to the packet by the different handling
routines) to another cluster member.
Thus, the second member can resume the handling process at the same point the first
member has ceased.
Starting in NGX R60, chain forwarding is also used for Dynamic Routing.
Debugging:
In order to see how a chain is forwarded between cluster members, debug the 'fw'
module with 'chainfwd' flag (in addition, these flags are recommended: chain',
'conn', 'packet'):
[Expert@GW_HostName]# fw ctl debug -m fw + chainfwd chain conn packet
Technical details:
In CPAS case, packet forwarding cannot be used because in order to use packet
forwarding, the chain must finish passing through all the chain modules. But since all
the information that CPAS holds on this connection is located only on the other
member, the chain cannot be processed by CPAS, and therefore should be forwarded
to the member that handled this connection originally.
CPAS information is not forwarded between members because of the size of
information that will need to be synchronized and will cause performance issues.
The Forwarding Layer will receive a packed chain on the source cluster member, and
will transmit it to the target cluster member. Any table updates, which are the result of a
transmitted chain, will be applied to the target member before the chain is delivered for
processing on that machine.
Packet Forwarding is performed in the following way (so that the target cluster member
can understand that this packet is intended to him):
In case, the target member is down, but its Sync interface is still up, the chain will be
forwarded to it and handled by it.
In case, the Sync interface is down, the chain will be dropped by the source
member.
Note:
Why not forwarding the packet and starting it at the beginning of the chain? Because in
that case, the original packet needs to be kept (before the changes that made to it by
the chain modules) and the entire table changes that were made need to be undone,
because they will be on the target member again. It appears that such implementation is
more complicated.
In order to improve cluster stability, the clocks on all cluster members must be
synchronized. Although cluster members are able to deal with difference within 1 hour
(VPN has much stricter limit of several minutes), it is strongly recommended to use NTP on
cluster members.
Important Note: Configuring cluster for the first time with a single member is not
supported - it will not be possible to install policy for the first time onto cluster object that
contains only a single member.
If an administrator plans to install the cluster of several members, but currently has only
one machine, then there are only these two options:
2. Configure the existing machine as a single gateway and suffer from traffic outage in
the future when adding 2nd member:
A. Prepare the switches
B. Connect only the existing machine
C. Configure object of singe Security Gateway
D. Initialize the SIC with existing machine
E. Install the policy
F. When the 2nd desired machine is available to be installed as 2nd member:
a) Install the 2nd machine
b) Configure object of singe Security Gateway for 2nd machine
c) Initialize the SIC with new machine
G. Create a cluster object
H. Add existing security gateway objects as members
I. Get topology from all members
J. Configure cluster interfaces
K. Install policy onto cluster object
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'Configuring ClusterXL' - Configuring Cluster
Objects & Members.
Important Note: Configuring cluster for the first time with a single member is not
supported. Refer to Preparing Cluster Members section.
Use the cluster object Topology page to configure the topology for the cluster object
and its members.
Pay attention to the names of the members' interfaces - they must match the names of
the interfaces are assigned by the operating system, subject to the guidelines provided in
sk30154 ($FWDIR/log/fwd.elg shows repeatedly - 'fwarp_initialize_myself: unable to find
mac address of interface IF_NAME').
Hosts and networking devices should forward all traffic to cluster Virtual IP address on
their subnet and not to physical IP addresses of cluster members.
Refer to Requirements for switches and routers section and to Configuring Cluster
Addresses on Different Subnets section.
Example:
In the topology depicted below, on the Host, the Default Gateway has to be configured
with IP address 192.168.204.20:
The ClusterXL Control Protocol (CCP) uses multicast by default, because it is more
efficient than broadcast.
If the connecting switch cannot forward multicast traffic, it is possible, though less
efficient, for the switch to use broadcast to forward traffic.
Refer to CCP modes section and to Requirements for switches and routers section.
Starting in R76, ClusterXL supports IPv6. All IPv6 status information is synchronized
and the IPv6 clustering mechanism is activated during failover.
ClusterXL performs both state synchronization and clustering for IPv6 as with IPv4. For
this to work, in SmartDashboard, you must define IPv6 addresses for all cluster interfaces.
In case of IPv4, during cluster failover, cluster sends Gratuitous ARP Request packets
to update an ARP cache of hosts/routers connected to the cluster interfaces, by advertising
the new MAC address for the cluster Virtual IPv4 addresses.
In case of IPv6, during cluster failover, cluster uses Neighbor Discovery Protocol (NDP)
and sends Neighbor Advertisement messages to update the neighbor cache of
hosts/routers connected to the cluster interfaces, by advertising the new MAC address for
the cluster Virtual IPv6 addresses. In addition, ClusterXL will reply to any Neighbor
Solicitation with a target address equal to the Cluster Virtual IPv6 address.
To enable IPv6 functionality for an interface, define an IPv6 address for the applicable
interface on the cluster and on each member. All interfaces configured with an IPv6
address must also have a corresponding IPv4 address. If an interface does not require
IPv6, only the IPv4 definition address is necessary.
Note: You must configure synchronization interfaces with an IPv4 address only. This is
because the synchronization mechanism works using IPv4 only. All IPv6 information
and states are synchronized using this interface.
In an IPv6 environment, the 'cphaprob -a if' command shows both the cluster
Virtual IPv4 addresses and cluster Virtual IPv6 addresses.
For more information, refer to ClusterXL Administration Guide (R70, R70.1, R71, R75,
R75.20, R75.40, R75.40VS, R76, R77.X, R80.10) - Chapter 'ClusterXL Advanced
Configuration' - Defining Disconnected Interfaces.
Disconnected interfaces are cluster member interfaces that are not monitored by the
ClusterXL mechanism.
Important Notes:
Unused interfaces must be defined as 'Disconnected' in order to avoid cluster
flapping.
Never define sync interface as 'Disconnected'.
This configuration applies only to physical interfaces.
Starting from Gaia R75.47, R77.20, the $FWDIR/conf/discntd.if file is not needed
anymore. Any interface, which is not part of cluster topology, will be counted as
disconnected.
o UNIX OS:
A. Create the $FWDIR/conf/discntd.if file (if does not exist yet)
B. Add the name of each relevant physical interface on a separate line
C. Save the changes in the file
D. Restart ClusterXL with 'cphastop;cphastart' commands
o Windows OS:
A. Open Windows Registry editor (Start - Run... - regedit)
B. Go to
HKEY_LOCAL_MACHINES\System\CurrentControlSet\Services\CPH
A\
C. Add a new key:
Value Name: DisconnectedInterfaces
Data Type: REG_MULTI_SZ
D. Check the names of the interfaces as assigned by the system (Start - run... -
cmd):
fw getfs
E. Add the name of each relevant physical interface using the following format:
\device\System_Interface_Name
F. Restart ClusterXL with 'cphastop;cphastart' commands
Refer to Performance Pack Administration Guide (R70, R71, R75, R75.20, R75.40,
R75.40VS).
Refer to Performance Tuning Administration Guide (R76, R77.X, R80.10) - Chapter
'Performance Pack'
(4-9) CoreXL
Refer to Firewall Administration Guide (R70, R71, R75, R75.20, R75.40, R75.40VS -
Chapter 'CoreXL Administration'; R76, R77.X - Chapter 'Maximizing Network Performance'
- CoreXL).
Refer to Performance Tuning Administration Guide (R76, R77.X, R80.10) - Chapter
'CoreXL Administration'
(4-10) VPN
For more information, refer to ClusterXL Administration Guide (R70, R70.1, R71, R75,
R75.20, R75.40, R75.40VS, R76, R77.X, R80.10) - Chapter 'ClusterXL Advanced
Configuration' - Working with VPNs and Clusters.
(4-11) NAT
When a packet leaves cluster member, the source IP address in the outgoing packet, is
the physical IP address of the cluster member interface.
The source IP address is changed using NAT to that of the Virtual IP address of the
cluster on that subnet.
This address translation is called "Cluster Hide".
The packet sent to the cluster Virtual IP address is accepted by one of the cluster
members. The destination IP address in the incoming packet is changed using NAT to that
of the physical IP address of the cluster member interface on that subnet.
This address translation is called "Cluster Fold".
For OPSec certified clustering products, this corresponds to the default setting (in
SmartDashboard) in the 3rd Party Configuration page of the cluster object, of Forward
Cluster's incoming traffic to Cluster Members' IP addresses being checked.
For more information, refer to ClusterXL Administration Guide (R70, R70.1, R71, R75,
R75.20, R75.40, R75.40VS, R76, R77.X, R80.10) - Chapter 'ClusterXL Advanced
Configuration' - Working with NAT and Clusters.
For OPSec certified clustering products, refer to vendor's documentation.
(4-12) VLAN
When defining VLAN tags on an interface, cluster IP addresses can be defined only on
the VLAN interfaces (the tagged interfaces).
Defining a cluster IP address on a physical interface that has VLANs is not supported.
This physical interface has to be defined with the Network Objective Monitored Private.
Refer to ClusterXL Administration Guide (R65, R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'ClusterXL Advanced Configuration' - Link
Aggregation and Clusters.
(4-13-A) Overview
Link Aggregation, NIC Teaming, Bonding of interfaces, Bond interface - all refer to the
same redundancy technology of physical Network Interface Cards (NICs) - a virtual
interface, defined on the OS, similar to a physical interface - where the physical bonded
interfaces are set to act as a single interface, using the same MAC address and the same
IP address.
Each physical interface in a Bond is called a slave of that bond. Enslaved interfaces do
not function independently of the bond.
The interface bonding supplies High Availability in case of interface failure and, in Load
Sharing mode, can significantly increase total throughput.
In this scenario:
GW-1 is a single gateway, or a cluster
member
S-1 and S-2 are switches
eth0 and eth1 are bonded slave
interfaces
eth0 is the Active slave interface
eth1 is the Standby slave interface
bond0 is the name of the bond
(4-13-C) Configuration
High Availability (Active/Backup) mode (supported since R65) - only one interface
at a time is active.
Upon interface failure, the bond fails over to another interface.
Different slave interfaces of the bond can be connected to different switches, to
benefit from high availability of switches in addition to high availability of interfaces
(refer to Fully Meshed Redundancy via Interface Bonding section above).
Load Sharing (Active/Active) mode (supported since R70.1 / VSX R67) - all
interfaces are active, for different connections.
Connections are balanced between interfaces according to Layer 3 and Layer 4, and
follow either the IEEE 802.3ad standard, or XOR.
Load Sharing mode has the advantage of increasing throughput, but requires
connecting all the interfaces of the bond to one switch (which must support LACP).
Link Aggregation provides high availability of NICs. If one fails, the other can function in
its place. This functionality is provided by Link Aggregation in both High Availability mode
and Load Sharing mode.
High Availability mode of Link Aggregation, when deployed together with ClusterXL,
enables a higher level of reliability through granular redundancy in the network topology.
This granular redundancy is achieved with a Fully Meshed Topology, which effectively
provides independent backups for both NICs and switches.
In the case of switch or Security Gateway failure, a High Availability cluster solution
provides system redundancy.
Figure below depicts a redundant system without Link Aggregation (two synchronized
Security Gateways - cluster members) deployed in a simple redundant topology:
In this scenario:
GW-1 and GW-2 are cluster members
S-1 and S-2 are switches
C-1 and C-2 are interconnecting
networks
Link Aggregation provides high availability of NICs. If one fails, the other can function in
its place. This functionality is in Bond High Availability mode and in Bond Load Sharing
mode.
The Link Aggregation High Availability mode, when deployed with ClusterXL, enables a
higher level of reliability by providing granular redundancy in the network. This granular
redundancy is achieved by using a fully meshed topology, which provides for independent
backups for both NICs and switches.
A fully meshed topology further enhances the redundancy in the system by providing a
backup to both the interface and the switch, essentially backing up the cable. Each cluster
member has two external interfaces, one connected to each switch.
Figure below depicts this implementation, where both cluster members are connected to
both external switches:
In this scenario:
GW-1 and GW-2 are Security Gateway
cluster members in New High
Availability
mode
S-1 and S-2 are switches
C-1, C-2, C-3 and C-4 are networks
Note: The bond failover operation requires network interface cards that support the
Media-Independent Interface (MII) standard.
Failover can occur because of a failure in the physical link state, or a failure in the
receiving/sending of CCP packets. Either of these failures will trigger a failover: either
within the bond interface, or between cluster members (depending on the circumstances)
1. The active slave interface detects a link state of down, and notifies the bond
interface.
2. The bond initiates an internal bond failover to the standby slave interface.
Note: Since this is a failover within the bond, the status of the other cluster
member is not considered.
3. If this slave interface should detect a link failure, and the initial slave interface is
still down, ClusterXL initiates a failover to the other cluster member, as long as
the state of the other cluster member is not Down.
Description:
Sets the failover mode.
Values:
o 0 = (default) automatically perform internal bond failover to the other slave
interface.
o 1 = perform ClusterXL failover to the other cluster member (as long as the state
of the other cluster member is not Down), unless the command 'cphaconf
enable_bond_failover' was run, in which case, the next failover will be
internal bond failover to the other slave interface (refer to command's description
below).
Notes:
o With both values, the next bond failover occurs in 2 minutes.
o The current value of this kernel parameter can be checked with 'fw ctl get
int fwha_manual_bond_failover' command.
o The value of this kernel parameter can be set:
either on-the-fly with 'fw ctl set int fwha_manual_bond_failover
VALUE' command (this change does not survive reboot)
or by adding this parameter with desired value into the
$FWDIR/boot/modules/fwkern.conf file (per sk26202)
Description:
Sets what happens during a ClusterXL failover after a bond has already failed
over internally. This command works only if the value of the
'fwha_manual_bond_failover' kernel parameter is currently set to 1 (one).
After a failover occurs within a bond, the next time a failure is detected on a slave
interface, ClusterXL automatically fails over to the other cluster member.
An administrator can prevent this from occurring by first correcting the error on
slave interface that caused the failover, and then resetting the system to failover
internally.
The 'cphaconf enable_bond_failover BondName' command directs the
system to failover within the bond the next time a failure is detected on a slave
interface.
Notes:
o When successful, there is no immediate output from this command; however the
words 'can failover' appear in the output of the 'cphaprob -a if'
command (in the corresponding line for this bond interface).
o This command should be run each time the system is reconfigured - after
verifying that all slave interfaces are active.
o Refer to 'cphaconf' command section.
In Bond Load Sharing mode, Link Aggregation supplies load sharing, in addition to High
Bond Availability. All slave interfaces are active, and connections are balanced between the
bond's slave interfaces, similar to the way ClusterXL balances connections between cluster
members.
In Bond Load Sharing mode, each connection is assigned to a specific slave interface.
For the individual connection, only one slave interface is active. On failure of that interface,
the bond does failover of the connection to one of the other interfaces, which adds the
failed interface's connection to the connections it is already handling.
Connections are balanced between slave interfaces according to Layer 3 and Layer 4,
and follow one of these standards:
802.3ad - includes LACP and is the recommended mode, but some switches may
not support this mode.
XOR.
In Bond Load Sharing mode, all the interfaces of a bond must be connected to the same
switch. The switch itself must support and be configured for Link Aggregation, by the same
standard (802.3ad or XOR) as the bond interface on Check Point Security Gateway.
A bond in Load Sharing mode is considered to be Down when less than a critical
minimal number of slave interfaces remain up.
When not explicitly defined, the critical minimum number of interfaces in a bond of n
slave interfaces is n-1.
Note: Failure of a second slave interface will cause the entire bond to be considered
down, even if the bond contains more than two slave interfaces.
If a smaller number of interfaces will be able to handle the expected traffic, you can
increase redundancy by explicitly defining the number of critical interfaces.
To explicitly define the number of critical interfaces, create and edit the
cpha_bond_ls_config.conf file:
[Expert@HostName]# cd $FWDIR/conf/
[Expert@HostName]# touch cpha_bond_ls_config.conf
[Expert@HostName]# chown admin:bin cpha_bond_ls_config.conf
[Expert@HostName]# chmod -v u=rwx,g=rwx cpha_bond_ls_config.conf
[Expert@HostName]# vi cpha_bond_ls_config.conf
Each line of the file should contain the Bond Name and the number of critical interfaces
(separated by a space of horizontal tab) that must remain up:
BondName number_of_critical_interfaces_that_must_be_up
Example:
If bond0 has 7 interfaces, and bond1 has 6 interfaces, then file contents could be:
bond0 5
bond1 3
Explanation:
bond0 would be considered Down when 3 of its 7 interfaces have failed
bond1 would be considered Down when 4 of its 6 interfaces have failed
Notes:
MILS is enabled by default since R75.47 (fwha_monitor_if_link_state=1).
MILS is supported only on SecurePlatform / Gaia OS.
MILS is supported only for physical interfaces.
MILS feature considers the link state of a Bond interface as up if it has at least one
slave with link up.
Enabling Interface Link State Monitoring significantly shortens the time it takes
ClusterXL to detect an interface failure (from milliseconds to microseconds).
By monitoring the link state (i.e., the electrical state) of an interface, ClusterXL is
immediately alerted to connectivity issues concerning a certain network interface, such as a
disconnected cable, or an electrical failure (real or simulated) on a switch.
Interface Link State Monitoring requires a NIC driver that supports link state detection.
The device driver reports the link state as either connected or disconnected.
Monitoring the interface link state is particularly useful during cluster probing when none
of the hosts answer on the connected subnet (refer to the definition of 'probing' and of
'pingable host' in Clustering Definitions and Terms section).
When MILS is enabled, ClusterXL immediately detects when an interface goes down.
When MILS is disabled, ClusterXL determines whether an interface is malfunctioning
based on expiration of internal timeouts.
Cluster IPs are Virtual IP addresses given to ClusterXL objects, which differ from the
unique physical IP addresses of the individual cluster member. These addresses enable
the cluster to be seen as a single gateway, thus allowing it to serve as a router in a network
that is unaware of the cluster's internal structure and status.
Cluster IP addresses can reside on subnets other than those of the members. The
advantage of this is that it:
Enables a multi-machine cluster to replace a single-machine gateway in a pre-
configured network, without the need to allocate new addresses to the cluster
members.
Makes it possible to use only one routable address for the ClusterXL Gateway
Cluster.
Refer to this solution:
sk32073 (Configuring Cluster Addresses on Different Subnets).
There are two major steps required in order for ClusterXL to function correctly with
cluster IPs on different subnets:
1. The first step is to create static routes on each cluster member, which determine
the interface connected to the cluster's network (the subnet, to which the cluster IP
belongs). Unless these entries are created, the OS cannot route packets to the
cluster's network. No additional configuration is required for the cluster members. It
is, however, important to note that the unique IP addresses given to the members
must share common subnets on each "side" of the cluster (meaning, each interface
on each machine must have an interface on every other machine using the same
subnet).
Note:
Configuring the static route is not needed in these cases:
2. The second step relates to the configuration of the cluster topology. Here, the
cluster IP addresses are determined, and associated with the interfaces of the
cluster members (each member must have an interface responding to each cluster
IP address). Normally, cluster IP addresses are associated with an interface based
on a common subnet. In this case, these subnets are not the same. It must be
explicitly specified, which member subnet is associated with the cluster IP address.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'ClusterXL Advanced Configuration' - Moving
from a Single Gateway to a ClusterXL Cluster.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'ClusterXL Advanced Configuration' - Adding
Another Member to an Existing Cluster.
4. According to the existing standards, when Host_B needs to send data to Host_A,
an ARP Request for the MAC address of Host_A will be sent
by Host_B to Network_B.
Since Host_A is located on another network, and the Security Gateway acts as a
router, this ARP Request (sent to Broadcast address on Layer2) will not be
forwarded by the Security Gateway from Network_B to Network_A.
As a result, Host_B will not discover the MAC address of Host_A, and will not be
able to send the data to Host_A.
The Security Gateway will pretend to be the Host in question. The Security Gateway
will accept the ARP Requests and the Security Gateway will send its own MAC
Address in ARP Reply. Then, when the data is received from the External
network, the Security Gateway will forward the data to the relevant host on the
Internal network.
If you have a ClusterXL Gateway cluster, connect each cluster member to each ISP
using two physical interfaces.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'ClusterXL Advanced Configuration' -
Configuring ISP Redundancy on a Cluster.
Refer to FireWall Administration Guide (R70, R71, R75, R75.20, R75.40, R75.40VS) -
Chapter 'ISP Redundancy'.
When configuring the routing protocols on each cluster member, each member is
defined identically, and uses the cluster VIP addresses (not the members' physical IP
addresses). Meaning, that Router ID should be set to cluster Virtual IP on each member.
Note: When configuring OSPF restart, you must define the restart type as signaled or
graceful. For Cisco devices, use type signaled.
The standard enforcement for a 3-way handshake that initiates a TCP connection
provides adequate security by guaranteeing one-directional stickiness. This means that it
ensures that the SYN-ACK will always arrive after the SYN. However, it does not guarantee
that the ACK will always arrive after the SYNACK, or that the first data packet will arrive
after the ACK. If you wish to have stricter policy that denies all out-of-state packets, you
can configure the synchronization mechanism so that all the TCP connection initiation
packets arrive in the right sequence (SYN, SYN-ACK, ACK, followed by the data). The
price for this extra security is a considerable delay in connection establishment.
To enable enhanced enforcement, use the GuiDBedit Tool to change the value of global
attribute sync_tcp_handshake_mode from minimal_sync (default value) to
complete_sync:
1. Close all SmartConsole windows (SmartDashboard, SmartView Tracker, etc.).
2. Connect to Security Management Server with GuiDBedit Tool.
3. In the left upper pane, go to 'Table' - 'Network Objects' - 'network_objects'.
4. In the right upper pane, select the relevant Cluster object (Class Name -
gateway_cluster).
5. Press CTRL+F (or go to 'Search' menu - 'Find') - paste
sync_tcp_handshake_mode - click on 'Find Next'.
6. In the lower pane, right-click on the sync_tcp_handshake_mode - 'Edit...' -
choose "complete_sync" - click on 'OK'.
7. Save the changes: go to 'File' menu - 'Save All'.
8. Close the GuiDBedit Tool.
9. Connect to Security Management Server with SmartDashboard.
10. Install the policy onto the Cluster object.
1. Minimal sync
3-way handshake is not enforced. This mode offers the best connectivity for users
who are willing to compromise on security is this case.
2. Complete sync
All 3-way handshake packets are Synced-and-ACKed, and 3-way handshake is
enforced. This mode slows down connection establishment considerably. It may be
used when there is no way to know where the next packet will go, e.g. in 3d party
clusters.
3. Smart sync
In most cases, we can assume that if SYN and SYN-ACK were encountered by the
same cluster member, then the connection is “sticky”.
ClusterXL uses one additional flag in Connections Table record that says, “If this
member encounters a 3-way handshake packet, it should sync all other cluster
members”.
When a SYN packet arrives, the member that encountered it, records the connection
and turns off its flag. All other members are synched, and by using a post-sync-
handler, their flag is turned on (in their Connections Tables).
If the same member encounters the SYN-ACK packet, the connection is sticky, thus
other cluster members are not informed.
Otherwise, the relevant member will inform all other member (since its flag is turned
on).
The original member (that encountered the SYN) will now turn on its flag, thus all
members will have their flag on.
In this case, the third packet of the 3-way handshake will also be synced.
If for some reason, our previous assumption is not true (i.e., one cluster member
encountered both SYN and SYN-ACK packets, and other members encountered the
third ACK), then the “third” ACK will be dropped by the other cluster members, and
we rely on the periodic sync and TCP retransmission scheme to complete the 3-way
handshake.
This mode is a good solution for Load Sharing users that want to enforce 3-way
handshake verification with the minimal performance cost. It is also recommended
for High Availability New mode.
When all Critical Devices (Pnotes) report their states as 'ok', the machine will try to
change its state to 'Active', depending on the cluster configuration (HA mode / LS
mode) and states of the peer members.
Among several properly functioning cluster members working in HA mode, the
machine will become an 'Active' depending on the configuration:
o In 'Active Up' configuration ('Maintain current active Cluster Member') - a first
cluster member (on a time base), which reaches the 'Ready' state, will become
'Active'.
o In 'Primary Up' configuration ('Switch to higher priority Cluster Member') -
machine with highest priority will become 'Active'.
When on all cluster members, some Critical Device report their state as 'problem',
one of the member will become 'Active' and will get into derived state 'Active
attention', symbolizing that it has a failure. The choice regarding what machine will
become an 'Active' is a random and does not depend on the machines priorities /
numbers and type of Critical Devices that report their state as 'problem'.
When the policy is installed onto a cluster member, the fwd daemon calls the
"cphastart" command in order to start the clustering mechanism.
The "cphastart" command is responsible to read the $FWDIR/conf/objects.C file
in order to get all required information from the cluster object, and cluster members'
objects.
Once done, the "cphastart" command calls the "cphaconf" command with all the
relevant parameters.
The "cphaconf" command performs 2 main actions:
Moves the configuration parameters to the Check Point kernel (in the kernel, the
parameters are not enforced right away - instead, the new configuration parameters
are buffered, and a process called "policy negotiation" starts)
Notifies the cphastart daemon about the new loaded policy
The "cphaconf" command sends a signal to the cphamcset daemon to reload the
information from the objects. If the cphamcset daemon is not yet started, it will be started.
Check Point kernel has a mechanism, which ensures that all cluster members enforce
the same security policy and the same ClusterXL parameters at any given time.
Since the policy installation does not take place simultaneously on all cluster members
(actually the policy commit is sequential), there may be some time difference between the
installations on all the members.
In order to overcome this problem, the policy negotiation is divided into two phases:
All members must acknowledge the new policy arrival.
Then, all members must acknowledge moving into the new policy.
During Phase I, a machine that got new policy sends CCP packets declaring that it got a
new policy with a certain Policy ID.
The following line appears in cluster debug with 'conf' flag:
CPHA: Phase I: Looking for machines in policy update mode...
The other machines also send this CCP packet as soon as they get the new policy. All
the machines wait to receive the confirmation packet from all the other machines, signalling
that the new policy arrived to all cluster members.
Now, Phase II takes place, when the CPHA timer is stopped completely in order to
avoid sending packets with the old parameters, and the new policy parameters are
enforced.
The following line appears in cluster debug with 'conf' flag:
CPHA: Phase II: Looking for machines ready to update policy...
After having done that, each machine sends another packet indicating it completed the
policy change phase.
When all the machines completed the policy change phase, the HA timer is started and
all the machines are updated with the new configuration.
Each one of these steps is backed up with a HA timer, which reverts the process, if not
all the Active machines confirmed the new stage after a certain time (refer to
'fwha_policy_update_timeout_factor' kernel parameter).
In this case, the old parameters are restored.
Debugging:
In order to see the policy installation, debug the 'cluster' module with 'conf' flag (in
addition, these flags are recommended: 'stat', 'pnote', 'if', 'mac'):
[Expert@GW_HostName]# fw ctl debug -m cluster + conf stat pnote if mac
In ClusterXL:
Initialization -
built-in Devices
report OK
LS mode, or
Initializing Ready no other active
machines
heard
Periodic check
of Devices OK
HA mode, and
Interface
other machine
Active Check
is Active
reports OK
All non-
problematic
machines
confirmed the
Active state
Down Standby Active
There are no
members that
send lower
version of CCP
Note: Only 'Down' and 'Active' states are available, since they reflect the status of the
State Synchronization (which is the only active mechanism).
Full Sync
successful
Down Active
State Sync
failure
Each time the cluster member receives a CCP packet with OpCode 1
(FWHAP_MY_STATE), the decision mechanism is invoked and is required to re-evaluate the
state of the current machine:
If any Critical Device (Pnote) reports its state as 'problem', the state of the current
machine is changed:
Critical Device
failure
Active/Standby Down
Critical Devices
OK
(5-6) State transitions due to the 'Interface Active Check' Critical Device
(Pnote)
The state of the interface in Check Point kernel (as seen in the debug of 'cluster'
module with flag 'if') is changed in the following way (assuming default values of
relevant kernel parameters):
From UP to ASSUMED UP - after total of 0.6 sec and 1.2 sec of not receiving/sending
CCP packets
From ASSUMED UP to UNKNOWN - after total of 2.2 sec of not receiving/sending CCP
packets
As a result of any state transition, the state machine performs correspondent actions
depending on the old and a new state. All actions can be divided into several groups
according to the ClusterXL components and other FW-1 features integrated with ClusterXL:
2. Pivot selection refresh - when working in the Load Sharing Unicast mode, the
transition to/from the Active state will invoke the Pivot selection mechanism and, if
needed, the recalculation of the Pivot packet selection table, which will redistribute the
traffic among the cluster members according to the new state.
3. Automatic proxy ARP refresh - when automatic Proxy ARP feature enabled, the
new Active cluster member in High Availability New mode and Load Sharing Unicast
mode, will issue Gratuitous ARP Requests according to the contents of FW-1 kernel
"arp_table". For each entry in it that table, an ARP Request will be sent containing a
Proxied IP address and the local MAC address.
5. Synchronization buffer flush - when the machine stops processing the FW-1
gateway traffic (which usually happens when it is moving from the Active state to any
other state) the synchronization buffer, which might hold any Delta Sync data
regarding the connections processed so far, is flushed. This is done in order to update
the rest of cluster members that obviously, will handle the connections belong to the
machine changing its state.
The Cluster Control Protocol (CCP) is a proprietary Check Point protocol that runs on
UDP port 8116 (packets are not encrypted).
Refer to Cluster Control Protocol Reference document (this document applies to all
cluster versions since NG FP3).
CCP is located between the Check Point kernel and the network interface (therefore, only
TCPdump/Snoop utilities should be used for capturing this traffic).
Historical fact: The first release of Check Point ClusterXL supported only High Availability
Mode. The CCP at that time was called High Availability Protocol - HAP.
The ordinal numbers of letters in the alphabet are: H(8) + A(1) + P(16) = "8116".
CCP runs only on cluster and sync interfaces (refer to ClusterXL definitions and terms
section).
State Synchronization - cluster members exchange Delta Sync packets about the
processed connections to keep the relevant kernel tables synchronized on all cluster
members.
Note: Each Delta Packet contains many pieces of information about different
connections. The payload of these Delta Sync packets is not encrypted, but it is not
human-readable (i.e., sniffing this traffic will not allow anyone to understand the
contents of these packets). The only way to understand what was transferred in these
packets is to run the relevant cluster debug on all cluster members (fw ctl debug
-m fw + sync).
It is up to the cluster administrator to make sure the Sync network is secured and
isolated.
Health checks - cluster members exchange reports and query each other about their
own states and the states of their cluster interfaces:
o Health-status Reports
o Cluster-member Probing
o State-change Commands
o Querying for Cluster Membership
Notes:
o These CCP packets are not encrypted.
o This applies only to ClusterXL - Check Point cluster running on Gaia OS /
SecurePlatform OS / X-Series COS / Windows OS / Solaris OS (R6X and lower).
o In 3rd Party clusters (e.g., Check Point cluster running on X-Series XOS / IPSO
OS), the 3rd Party software is responsible for health checks.
The outcome of this probe will determine what action is taken next (change the
state of an interface, or of a cluster member).
Cluster member sends a CCP packet 'FWHAP_IF_PROB_REQ'.
Cluster member sends series of ARP Requests in the loop for all IP addresses
on this subnet.
If hosts on this subnet send ARP Replies to cluster member, then cluster
member sends series of ICMP Requests (one such host is enough).
If hosts on this subnet send ICMP Replies to cluster member (one such host is
enough), then the local interface on this member is considered to work correctly,
and the missing CCP packets from peer member are considered as a failure on
peer member.
As a result, the peer member might be declared as failed ('Down'), which in
turn might cause a fail-over in the cluster.
Example:
Cluster member FW1 is not able to send/receive CCP packets to/from the
other member FW2 on the interface eth1, this member FW1 will need to
determine where the problem occurs - on the local interface eth1 or on the
other member - and perform a fail-over (if needed)
There are 2 possible reasons why this member FW1 will not able to
send/received CCP packets from the other member FW2:
o Cluster mechanism on the other member FW2 does not work anymore -
nobody can send CCP packets to this member FW1 and receive CCP
packets from this member FW1.
o Local interface eth1 on this member FW1 does not work anymore -
there is not traffic at all.
If there are hosts with such IP addresses on the subnet, they will send an
ARP Reply to the cluster member (one such host is enough).
Cluster member starts sending ICMP Requests to the IP addresses that
answered the ARP Requests.
If the hosts send an ICMP Reply to the cluster member (one such host is
enough), then the cluster member FW1 will know that it can send usual traffic
through this interface eth1 and the problem with CCP packets must be
happening on the other member FW2.
If this cluster member FW1 is not able to determine where the problem is,
this interface eth1 will be declared as Failed (and by design, a fail-over will
occur).
o Querying for Cluster Membership - When a cluster member comes online, it will
send a series of CCP query/response messages, to gain knowledge of cluster
membership (which members are located on these subnets).
CCP is located between the Check Point kernel and the network interface. Therefore,
there is no need to add a rule to the Security Policy Rule Base that accepts CCP packets.
It is not possible to drop CCP packets based on Security Policy Rule Base (even if such
rule is created, the CCP packets will still be processed by Check Point kernel).
Refer to sk44177 (SmartView Tracker repeatedly shows drops with "Source and
destination addresses are equal").
To capture the CCP packets, use only TCPdump/Snoop utilities (do not use Check Point
FW Monitor).
In order for the ClusterXL to be as robust as possible, it is designed to send CCP packets
and expects to receive CCP packets on time - based on internal CCP timers.
If CCP packets are not sent/received on time (as expected based on internal CCP
timers), the internal ClusterXL algorithms will suspect that there is a problem with the state of
the involved interface(s) and/or with the state of the cluster member(s). Eventually, a
problematic interface, or the whole member might be declared as failed.
For example, if Member_B does not receive CCP packets from Member_A on interface
eth3, then Member_B might declare its interface eth3 as 'Down', or even declare itself as
'Down'. This, in turn, might lead to a fail-over between cluster members.
The operation of CCP is based on the following two separate internal timers:
Sync timer
Purpose:
Performs sync-related actions every fixed interval. By default, the sync timer interval is
100ms. The base time unit is 100ms (or 1 tick), which is therefore the minimal value. This
time interval is controlled via global kernel parameter.
Parameter values:
Integers from 1 (default) to 232-1
Notes:
o Increasing this value increases the time interval between Delta Sync actions. For
example, if the timer is doubled to 200 ms (fwha_timer_sync_res=2), then the
time interval between Delta Sync actions also doubles to 200 ms.
o Refer to sk41471 (ClusterXL - State Synchronization time interval and
'fwha_timer_sync_res' kernel parameter).
CPHA timer
Purpose:
Performs cluster-related actions every fixed interval. By default, the CPHA timer interval
is 100ms. The base time unit is 100 ms (or 1 tick), which is also the minimum value. This
time interval is controlled via global kernel parameter.
Parameter values:
Integers from 1 (default) to 232-1
Notes:
If the cluster members are geographically separated from each other (e.g., located in
different cities), set the CPHA timer to be around 10 times the round-trip time (RTT) of
the synchronization network.
Increasing this value increases the time it takes to detect a failover. For example, if
detecting interface failure takes 0.3 seconds, and the timer is doubled to 200 ms
(fwha_timer_cpha_res=2), then the time needed to detect an interface failure also
doubles - to 0.6 seconds.
Refer to sk43872 (ClusterXL - CCP packets and fwha_timer_cpha_res parameter).
In VSX cluster:
VSX NGX / VSX NGX R65 / VSX NGX R67 / VSX NGX R68:
o The only possible mode of CCP is Broadcast.
R75.40VS / R76 and above:
o CCP mode over Sync Network is Broadcast for all Virtual Systems.
o CCP mode over non-Sync Networks is Multicast.
In VSLS configuration, when instances of Virtual Systems are not running on all
cluster members (e.g., only 2 VSs were configured on a VSX cluster that has 4 cluster
members), the Delta Sync packets generated by a Virtual System, are sent in Unicast
only to those members that run the instance of same the Virtual System.
Refer to sk36644 (The Mode of Cluster Control Protocol (CCP) in VSX cluster).
Note: The CCP mode is not set on Virtual Switches because they do not send CCP
packets.
It is possible to change the CCP mode on-the-fly. Refer to sk20576 (How to set
ClusterXL Control Protocol (CCP) in Broadcast / Multicast mode in ClusterXL):
Procedure:
Notes:
o The CCP mode will appear at the end of the line.
o In VSX R68 and lower, the mode is not displayed (only Broadcast is supported).
Required interfaces: 4
Required secured interfaces: 1
In ClusterXL (including VSX), the Synchronization Network (CCP packets that carry Delta
Sync information) is supported only on the lowest VLAN tag of a VLAN interface. For
example, if three VLANs with tags 10, 20 and 30 were configured on interface eth1, then
only interface eth1.10 may be used for State Synchronization.
It is possible to customize the default monitoring of VLAN tags in the following way:
* Note: In VSX cluster, in order to disable the default monitoring behaviour, set the value of
the relevant kernel parameter to 0 (zero):
Pre-R75.40VS versions: fwha_monitor_all_vlans
R75.40VS / R76 and above: fwha_monitor_all_vlan
Refer to sk35462 (Abnormal behavior of cluster members during failover when 'Monitor all
VLAN' feature is enabled).
Starting in R80.10, output of the cphaprob -a -m if command also prints the VLAN
monitoring scheme.
The protocol is sub-divided into several types. Packets of different types are used to send
machine status reports, query interfaces of other machines, and perform safe update of their
internal state (policy). A special type of message is used to perform State
Synchronization between cluster members, i.e., notify cluster members of connections
handled by each other.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IP IP
Eth Type
0 Layer 2 Destination MAC address Layer 2 Source MAC address Ver Hdr
(0x0800)
(4) Len
IP
IP IP Flags + IP Layer 3 Layer 3
Total Pro
16 datagram Fragment TTL header Source Destin.
Length to
ID Offset checksum IP address IP addr
(11)
Layer 3
Layer 4 Layer 4
Destin. Total UDP
32 Source Destin. CCP Header and Data
IP addr Length checksum
Port Port
(cont.)
48 CCP Header and Data (cont.)
64 CCP Header and Data (cont.)
Important Note: It is not possible to control the CCP packets by security policy rule base
(neither by security rules, nor by NAT rules) because CCP is located between the Check
Point kernel and the network interface.
o Layer 2
Refer to sk25977 (Connecting multiple clusters to the same network segment (same
VLAN, same switch).
In ClusterXL:
Value Notes
01:00:5e:YY:ZZ:WW when VIP address is configured on these interfaces
when CCP is set to run in multicast mode
when sent over non-secured (non-sync) interfaces
YY:ZZ:WW = concatenation of 3 last octets of VIP
Example:
If VIP = 192.50.204.20, then Final MAC =
01:00:5E:("50"hex):("204"hex):("20"hex) =
01:00:5E:32:CC:14
Example:
If VIP = 192.168.204.20, then Final MAC =
01:00:5E:("168-128"hex):("204"hex):("20"hex) =
01:00:5E:28:CC:14
01:00:5e:YY:ZZ:WW when there is no VIP configured on this interface
when CCP is set to run in multicast mode
when sent over non-secured (non-sync) interfaces
YY = the 2nd octet (from the left) of the final
calculated IP address after adding 250 to the
interface's network address
ZZ = the 3rd octet (from the left) of the final calculated
IP address after adding 250 to the interface's network
address
WW = the 4th octet (from the left) of the final
calculated IP address after adding 250 to the
interface's network address
Example #1
A. The interface's IP address and subnet mask are:
192.168.40.100 / 24
B. The interface's network address is:
192.168.40.100 AND 255.255.255.0 =
192.168.40.0
C. The final calculated IP address is:
192.168.40.0 + 250 =
11000000.10101000.00101000.01100000 +
00000000.00000000.00000000.11111010 =
11000000.10101000.00101000.11111010 =
192.168.40.250
D. The converted octets are:
"168" dec = "A8" hex
"40" dec = "28" hex
"250" dec = "FA" hex
E. Hence, the Final MAC:
01:00:5E:("168"hex):("40"hex):("250"hex) =
01:00:5E:A8:28:FA
Example #2
A. The interface's IP address and subnet mask are:
192.168.40.100 / 29
B. The interface's network address is:
192.168.40.100 AND 255.255.255.248 =
192.168.40.96
C. The final calculated IP address is:
192.168.40.96 + 250 =
11000000.10101000.00101000.01100000 +
00000000.00000000.00000000.11111010 =
00000000.00000000.00101001.01011010 =
192.168.41.90
D. The converted octets are:
"168" dec = "A8" hex
"41" dec = "29" hex
"90" dec = "5A" hex
E. Hence, the Final MAC:
01:00:5E:("168"hex):("41"hex):("90"hex) =
01:00:5E:A8:29:5A
FF:FF:FF:FF:FF:FF when CCP is set to run in broadcast mode
when sent over secured (sync) interfaces
Note: The same Source MAC address is used for all the VSs on the same member.
In ClusterXL (on Gaia R77.30 and above) and in VSX mode (R77.30 and above)
before installing the policy for the first time:
1st 2nd 3rd 4th 5th 6th
00 00 00 00 Value derived from 21
Cluster_Global_ID
Notes:
Cluster_Global_ID - controls the value of 5th byte in Source MAC address of
CCP packets.
Default values are:
o 0xFE hex / 254 dec - ClusterXL Gateway mode on Gaia OS R77.30
o 0xFE hex / 254 dec - ClusterXL VSX mode on Gaia OS R77.30
o Starting in Gaia R80.10, the value is assigned automatically
In ClusterXL (R77.20 and lower) and in VSX mode (R75.40VS / R76 / R77 / R77.10 /
R77.20) before installing the policy for the first time:
1st 2nd 3rd 4th 5th 6th
00 00 00 00 fwha_mac_magic 21
Notes:
fwha_mac_magic - name of the kernel parameter that controls the value of 5th
byte in Source MAC address of CCP packets.
Default values are:
o 0xFE hex / 254 dec - ClusterXL Gateway mode on R77.20 and lower
o 0xFE hex / 254 dec - ClusterXL VSX mode on R75.40VS / R76 and above
o 0xF6 hex / 246 dec - VSX Cluster from VSX NGX up to VSX R68
Notes:
Cluster_Global_ID - controls the value of 5th byte in Source MAC address of
CCP packets.
Default values are:
o 0xFE hex / 254 dec - ClusterXL Gateway mode on Gaia OS R77.30
o 0xFE hex / 254 dec - ClusterXL VSX mode on Gaia OS R77.30
o Starting in Gaia R80.10, the value is assigned automatically
fwha_mac_magic - controls the value of 5th byte in Source MAC address of CCP
packets.
Default values are:
o 0xFE hex / 254 dec - ClusterXL Gateway mode on R77.20 and lower
o 0xFE hex / 254 dec - ClusterXL VSX mode on R75.40VS / R76 and above
o 0xF6 hex / 246 dec - VSX Cluster from VSX NGX up to VSX R68
o Starting in Gaia R80.10, the value is assigned automatically
XXXXXXXX - is either 00000000, or 8 least significant (right-most) bits of VSID -
controlled by setting the kernel parameter fwha_add_vsid_to_ccp_mac=1
Layer 4 (UDP)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IP IP
Eth Type
0 Layer 2 Destination MAC address Layer 2 Source MAC address Ver Hdr
(0x0800)
(4) Len
IP
IP IP Flags + IP Layer 3 Layer 3
Total Pro
16 datagram Fragment TTL header Source Destin.
Length to
ID Offset checksum IP address IP addr
(11)
Layer 3
Layer 4 Layer 4 Magic
Destin. Total UDP CCP Cluster
32 Source Destin. Number
IP addr Length checksum Version Number
Port Port (0x1A90)
(cont.)
Total
Source Destin.
CCP Source IF Random num. of
48 Machine Machine Policy ID Filler
OpCode Number ID CoreXL
ID ID
FW inst.
CoreXL
VSX
64 instance CCP Data
VSID
ID
Magic Number (Bytes 42 - 43) - Identifies the CCP protocol with the constant number 1A90
hex / 6800 dec.
CCP Version (Bytes 44 - 45) - An integer number that is assigned in each Check Point
version. All member of the same cluster must have identical CCP version (i.e., identical
Check Point software).
When a cluster member receives CCP packets with CCP Version lower than his, it goes
into 'Ready' state (by design). Refer to sk42096 (Cluster member is stuck in 'Ready' state).
The CCP version on 32-bit system in Gateway mode equals the value of kernel
parameter fwha_version:
CCP 32-bit GW = fwha_version
The CCP version on 64-bit system in Gateway mode is greater by 1 than CCP version
on 32-bit system in Gateway mode:
CCP 64-bit GW = CCP 32-bit GW + 1 = fwha_version + 1
The CCP version on system in VSX mode 32-bit is greater by 2 than CCP version on
32-bit system in Gateway mode:
CCP VSX = CCP 32-bit GW + 2 = fwha_version + 2
The CCP version on system in VSX mode 64-bit is greater by 3 than CCP version on
32-bit system in Gateway mode:
CCP VSX = CCP 32-bit GW + 3 = fwha_version + 3
Cluster Number (Bytes 46 - 47) - This number identifies the cluster, on which this datagram
is communicated. The cluster number is set by Security Management Server.
CCP OpCode (Bytes 48 - 49) - This code identifies the type of CCP packet. Each CCP
OpCode implies a different structure of the packet’s Data section (see below).
Refer to this document (the structure of CCP Data has not changed):
NGX R60 Advanced Technical Reference Guide (ATRG) - Chapter 11 ClusterXL -
Debugging CPHA Issues - General Analysis Matrix for CPHA Packets
Source IF Number (Bytes 50 - 51) - The ID of the network interface that originated this CCP
packet.
These IDs are assigned by Check Point kernel during attachment to the interfaces.
Refer to the output of the 'fw ctl iflist' command on each cluster member (Note:
these outputs show the local configuration on the cluster member, and therefore do not have
to be identical on all cluster members).
Random ID (Bytes 52 - 53) - Each cluster member is assigned a random ID upon boot. This
field states the random ID of the machine that originated this CCP packet.
Source Machine ID (Bytes 54 - 55) - The ID of the machine that originated the packet based
on the internal cluster numbering (starts from zero). Each cluster member is given a number,
which identifies it within the cluster - refer to the output of 'cphaprob state' command.
These numbers are assigned based on the priority of cluster members as configured in
SmartDashboard - cluster object - 'ClusterXL Members' pane (the higher the member is
located in this list, the higher its priority and the lower its ID).
Policy ID (Bytes 58 - 59) - Each policy installed on cluster member is identified by a unique
ID. This enables different cluster members to verify they are working under the same policy.
Policy ID can be seen only during cluster debug (fw ctl debug -m cluster + conf).
Note: To handle a situation, where one member has already enforced the new policy ID,
and sends Delta Sync packets to member, who has not yet done so, we regard packets
that contain the previous policy ID as legal, for a short period after the end of the policy
negotiations.
Filler (Bytes 60 - 61) - Originally, this field was used to align the CCP header, and it was
always set to 0.
As of NG FP3, this field is also used to indicate the status of the source machine in
Service Mode only. Possible values for this field are 1 for 'Active' and 0 for 'Down'.
Starting in NG FP4, the Filler has 2 fields in Service Mode:
The first byte (nibble) contains the member status (as in NG FP3):
o If it contains 1, then in 'Sync only' mode, the member is ready to accept a Full
Sync from other cluster members. Otherwise, it can not act as a Full Sync server.
This can happen if Full Sync has failed, or if there is no policy yet.
The second byte (nibble) contains the pnote status.
o If it contains 0, then all pnotes report their status as 'OK'.
o Otherwise, it will contain 1.
Note: The 'Filler' field is relevant only in cluster running on IPSO OS, in which a member
state is updated also by the statuses of pnotes. In other 3rd party solutions, the pnote
status is passed on the network, but is being disregarded by Check Point code.
Total num. of CoreXL FW inst. (Bytes 62 - 63) - Total number of loaded CoreXL FW
instances. This field exists since R70.
CoreXL instance ID (Bytes 64 - 65) - The ID of the CoreXL FW instance, to which this CCP
packet belongs (sent from/to). This field exists since R70.
VSX VSID (Bytes 66 - 67) - ID of the Virtual System, to which this CCP packet belongs (sent
from/to). In non-VSX, always contains 0.
This field exists in R75.40VS, R76, R77 and above.
FWHAP_MY_STATE Data
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IP IP
Eth Type
0 Layer 2 Destination MAC address Layer 2 Source MAC address Ver Hdr
(0x0800)
(4) Len
IP
IP IP Flags + IP Layer 3 Layer 3
Total Pro
16 datagram Fragment TTL header Source Destin.
Length to
ID Offset checksum IP address IP addr
(11)
Layer 3
Layer 4 Layer 4 Magic
Destin. Total UDP CCP Cluster
32 Source Destin. Number
IP addr Length checksum Version Number
Port Port (0x1A90)
(cont.)
Total
Source Destin.
CCP Source IF Random num. of
48 Machine Machine Policy ID Filler
OpCode Number ID CoreXL
ID ID
FW inst.
Number State State
CoreXL
VSX of Report
64 instance HA Mode Problem of of ... ...
VSID Reported Code
ID ID 0 ID 1
IDs
As. As. LPT LPT
In Out
IFR IF
In
IF
Out of of ... ...
IF IF ID 0 ID 1
The byte IFR (Interface Report) is calculated using the following formula:
IFR = 70 + <Number of Reported IDs>
Report Code (Bytes 70 - 71) - Flags indicating whether this packet contains a machine state
report, an interface state report, or both. The flags specified below can be combined together
using bitwise OR to form the field value:
HA Mode (Bytes 72 - 73) - Contains the mode of the machine that sent this datagram.
State of ID x (Bytes 76+x) - Reports the state of the machine whose internal ID is “x”.
In IF (Byte IFR) - Number of interfaces currently up, in the inbound direction on the source
machine.
As. In IF (Byte IFR+1) - Number of interfaces currently assumed to be up, in the inbound
direction on the source Machine. (Bytes 70+2x - 70+2x+1)
As. Out IF (Byte IFR+3) - Number of interfaces currently assumed to be up, in the outbound
direction on the source machine.
LPT of ID x (Byte IFR+4+x) - Reports the time, in HA time units (10 HA time units ~ 1
second), elapsed since the last CCP packet was received from machine with ID “x”.
Note: HA time units are mostly used by Check Point RnD.
FWHAP_QUERY_STATE Data
These packets are used by a cluster member to ask another member for its status. This
is used when source member stopped receiving CCP packets from another member for
some time (0.2 seconds) and may want to inquire the other member to see if it is "alive".
FWHAP_IF_PROBE_REQ Data
An interface probing is a mechanism, which allows a machine to verify that its interfaces
are up and are able to receive and transmit data.
These packets are used to verify the status of each interface.
This is done to detect connectivity problems of the interfaces.
Refer to Clustering Definitions and Terms section.
Interface Number (Bytes 62 - 63) - FireWall-1 serial interface number of the queried
interface. Refer to the output of 'fw ctl iflist' command.
FWHAP_IF_PROBE_RPLY Data
An interface probing is a mechanism, which allows a machine to verify that its interfaces
are up and are able to receive and transmit data.
This packet is a reply to FWHAP_IF_PROBE_REQ packet.
These packets are used to verify the status of each interface.
This is done to detect connectivity problems of the interfaces.
Note: The transmit state of an interface (as monitored by 'Interface Active Check' pnote)
is refreshed once a FWHAP_IF_PROBE_RPLY packet is received in acknowledge to
FWHAP_IF_PROBE_REQ packet.
Interface Number (Bytes 62 - 63) - FireWall-1 serial interface number of the queried
interface. Refer to the output of 'fw ctl iflist' command.
FWHAP_IFCONF_REQ Data
These packets are used in order to learn the following information about peer cluster
members:
o Interfaces
o IP addresses
o MAC addresses
These packets are sent occasionally to verify the IP addresses are still the same.
Note: The 'FWHAP_IFCONF_REQ' packet is always sent with Layer 2 Destination MAC
address of subnet Broadcast FF:FF:FF:FF:FF:FF. Refer to sk44410 (CCP packets are
sent in Broadcast although CCP mode is set to Multicast).
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IP IP
Eth Type
0 Layer 2 Destination MAC address Layer 2 Source MAC address Ver Hdr
(0x0800)
(4) Len
IP
IP IP Flags + IP Layer 3 Layer 3
Total Pro
16 datagram Fragment TTL header Source Destin.
Length to
ID Offset checksum IP address IP addr
(11)
Layer 3
Layer 4 Layer 4 Magic
Destin. Total UDP CCP Cluster
32 Source Destin. Number
IP addr Length checksum Version Number
Port Port (0x1A90)
(cont.)
Total
Source Destin.
CCP Source IF Random num. of
48 Machine Machine Policy ID Filler
OpCode Number ID CoreXL
ID ID
FW inst.
CoreXL Number of Trusted
VSX
64 instance Reported Ethernet Address interface
VSID
ID IPs ?
80 IP addr 1 IP addr 2 IP addr 3 ...
Number of Reported IPs (Bytes 68 - 69) - Number of IP addresses associated with this
interface.
Ethernet Address (Bytes 70 - 75) - The real Ethernet address of the interface (as opposed
to the phony address, see “External Header”).
Trusted interface (Bytes 76 - 77) - Boolean value: 1 if this interface is trusted (secured), 0
otherwise.
IP addr X (Bytes 78+4x - 78+4x+3) - IP address number X associated with the reporting
interface (ClusterXL uses only the first configured IP address).
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IP IP
Eth Type
0 Layer 2 Destination MAC address Layer 2 Source MAC address Ver Hdr
(0x0800)
(4) Len
IP
IP IP Flags + IP Layer 3 Layer 3
Total Pro
16 datagram Fragment TTL header Source Destin.
Length to
ID Offset checksum IP address IP addr
(11)
Layer 3
Layer 4 Layer 4 Magic
Destin. Total UDP CCP Cluster
32 Source Destin. Number
IP addr Length checksum Version Number
Port Port (0x1A90)
(cont.)
Total
Source Destin.
CCP Source IF Random num. of
48 Machine Machine Policy ID Filler
OpCode Number ID CoreXL
ID ID
FW inst.
CoreXL Policy
VSX
64 instance Update New Policy ID
VSID
ID State
Policy Update State (Bytes 68 - 71) - The members that originated this packet, notifies the
other members whether or not it needs to change its own configuration, due to the new
policy. The message is also used to notify all cluster members that the originator is ready to
apply the changes.
New Policy ID (Bytes 72 - 75) - Specifies the ID of the new policy, which the source member
is trying to enforce. All cluster members should agree on this value before the policy can be
updated.
FWHAP_SYNC Data
This packet type defines a sub-protocol of CCP, used to maintain the State
Synchronization between cluster members. This is done by sending updates about the
FireWall kernel tables wrapped in the CCP packet data.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IP IP
Eth Type
0 Layer 2 Destination MAC address Layer 2 Source MAC address Ver Hdr
(0x0800)
(4) Len
IP
IP IP Flags + IP Layer 3 Layer 3
Total Pro
16 datagram Fragment TTL header Source Destin.
Length to
ID Offset checksum IP address IP addr
(11)
Layer 3
Layer 4 Layer 4 Magic
Destin. Total UDP CCP Cluster
32 Source Destin. Number
IP addr Length checksum Version Number
Port Port (0x1A90)
(cont.)
Total
Source Destin.
CCP Source IF Random num. of
48 Machine Machine Policy ID Filler
OpCode Number ID CoreXL
ID ID
FW inst.
Sync OP
CoreXL
Flags
VSX Sequence
64 instance Sync OP Specific Data
VSID Number
ID
Sequence Number (Bytes 68 - 70) - Uniquely identifies the packet, in case a retransmission
is needed.
Flags (Byte 71, Upper Nibble) - A bit-wise combination of the following values:
The best and simplest way to start cluster troubleshooting, is to check the cluster logs
(pre-requisite for such logs is to set 'Track changes in the status of cluster
members' to 'Log' in SmartDashboard - cluster object - ClusterXL - Tracking).
Refer to Configuring cluster object in SmartDashboard section.
In SmartView Tracker:
1. Open the FireWall log that contains the data from the time of the cluster problem.
2. Go to the 'Date' column
A. Right-click on the 'Date' column header
B. Click on 'Edit Filter...'
C. Select the relevant date
D. Click on OK button
3. Go to the 'Time' column
A. Right-click on the 'Time' column header
B. Click on 'Edit Filter...'
C. Select the relevant time
D. Click on OK button
4. Go to the 'Information' column
A. Right-click on the 'Information' column header
B. Click on 'Edit Filter...'
C. Select 'Specific'
D. In 'Field' - select 'Contains'
E. In 'Text' - type cluster_info
F. Click on OK button
5. Analyze the cluster logs
6. Go to 'File' menu - click on 'Export...'
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'Monitoring and Troubleshooting Gateway
Clusters' - Monitoring Cluster Status Using SmartConsole Clients - SmartView Tracker.
SmartView Monitor displays a snapshot of all ClusterXL cluster members, enabling real
time monitoring and alerting. For each cluster member, state change and critical device
problem notifications are displayed.
The SmartView Monitor GUI client communicates with the cluster member via the Check
Point Application Monitoring (AMON) Infrastructure.
The AMON client (SmartView Monitor GUI) sends a request for some specific OID
(SNMP Get) to the AMON server on the cluster member. The AMON server queries the
Check Point kernel (in the same way as the "cphaprob" commands) in order to retrieve the
requested information.
The information is then formatted into MIB (SNMP Response) and sent back to the
AMON client for display.
Notes:
SmartView Monitor uses a separate Check Point infrastructure to control ClusterXL
(special internal command is sent from SmartView Monitor to Security Management
Server that manages this cluster, which sends another internal command to perform
the requested operation on ClusterXL).
Complicated debug is required in order to see this communication (FWM and CPD
daemons on Management Server, and CPD daemon on cluster member).
Cluster administrator should use command line on each cluster member to control
ClusterXL (cpstart/cpstop ; cphastart/cphastop).
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'Monitoring and Troubleshooting Gateway
Clusters' - Monitoring Cluster Status Using SmartConsole Clients - SmartView Monitor.
Refer to SmartView Monitor Administration Guide (R70, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X) - Chapter 'Monitoring Gateway Status' - Configuring Gateway Views
- Start/Stop Cluster Member.
If clocks on cluster members are out of sync, then the SIC communication between the
members and the VPN will fail.
Refer to Cluster Control Protocol (CCP) section and to ClusterXL Requirements for
Hardware and Software section.
(7-5) SecureXL
(7-6) CoreXL
(7-7) VPN
(7-8) NAT
The following command allows to work with the NAT table (fwx_alloc, ID 8187):
[Expert@Member]# fw tab -t fwx_alloc [flags]
For more information on the 'fw tab' command, refer to Command Line Interface
Reference Guide - Chapter 'Security Management Server and Firewall Commands' - fw - fw
tab.
Refer to ClusterXL Administration Guide (R65, R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'ClusterXL Advanced Configuration' - Link
Aggregation and Clusters - Troubleshooting Bonded Interfaces.
1. Run the command 'cphaconf show_bond -a', and note the state of the bond
interfaces.
2. Run the command 'cphaconf show_bond BondName', and note which interfaces
are active inside the bond interface.
Pay attention to the link status on physical slave interfaces and to the bond
parameters, compare these to the configuration on the switch(es).
On the corresponding line for the bond interface, the words 'can failover' must
appear.
In order to improve the performance, SIM Affinity should be configured to run in Static
mode via 'sim affinity -s' command.
Any change in the physical of software configuration of an existing cluster might cause a
failover.
Therefore, in order to avoid traffic outage and to have the ability to troubleshoot, all such
changes must be carried out during a maintenance window.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'ClusterXL Advanced Configuration' - Adding
Another Member to an Existing Cluster.
If some changes must be performed in "real time" (e.g., installation of a hotfix), then
follow these suggestions:
Policy installation on cluster triggers re-configuration of each cluster member. Part of this
re-configuration is negotiation of the state of each member.
The policy installation process is transparent for the traffic. Policy installation, in certain
cases, may cause a cluster member to initiate a failover.
Cluster administrator can control the installation of policy on cluster with the help of
several kernel parameters (each parameter is described below):
fwha_freeze_state_machine_timeout
fwha_policy_update_timeout_factor
fwha_conf_immediate
fwha_cul_policy_freeze_timeout_millisec
fwha_cul_policy_freeze_event_timeout_millisec
Refer to sk92723 (Cluster flapping prevention).
Explanation:
o This kernel parameter is related to what Check Point calls the "state machine",
which is responsible for determining the state of each machine in the cluster, i.e.,
whether the machine is Active/Standby/Down. When the state of the machine is
changed, failover takes place. During policy installation, there are cases, in which,
the state is changed, and consequently an unwanted failover may occur.
o This parameter sets the number of seconds, during which the state of each cluster
member will be "frozen" starting from the moment the policy installation starts on
the member, and until the count-down reaches zero.
Values:
o This parameter sets a timeout value, and its units are seconds.
o In versions prior to R75.40VS, the default value is 0 seconds ("freeze" mechanism
is disabled).
o Starting in R75.40VS, the default value is set to 30 seconds.
o Upper limit is 232-1.
Notes:
o This kernel parameter is known as "freeze" mechanism.
o When the value of this kernel parameter is set to some value, and Cluster Member
priorities were changed, then during policy installation, the cluster configuration on
members will not be updated correctly even though output of 'cphaprob state'
command shows that the Member IDs and their state have changed. Refer to
sk66064 (Change of Cluster Member priority when the kernel parameter
'fwha_freeze_state_machine_timeout' is enabled may cause network outage).
o On VSX cluster members, the "freeze" mechanism applies only to cluster member
itself (Virtual System 0). It does not apply to any other Virtual Systems.
o In R75.40VS / R76 and above in VSX mode, Virtual System 0 will monitor/perform
state change lock even when other Virtual Systems get the policy.
o When the value of this kernel parameter is set to some value, the following
messages will appear in /var/log/messages file during policy installation:
;FW-1: fwha_state_freeze: FREEZING state machine at CURRENT_STATE
(time=HTU,caller=fwha_set_conf);
;FW-1: fwha_state_freeze: ENABLING state machine at CURRENT_STATE
(time=HTU,caller=policy change - finished changes (fwha_start));
The following messages in /var/log/messages file are normal during the boot of the
machine:
;FW-1: fwha_state_freeze: FREEZING state machine at FAILURE
(time=HTU,caller=fwha_set_conf);
Explanation:
o When policy is installed on a cluster, the cluster members undertake a negotiation
process to make sure all of them have received the same policy before they
actually apply it. This negotiation process has a timeout mechanism, which makes
sure a cluster member does not wait indefinitely for responses from other cluster
members, which is useful in cases when another cluster member goes down when
policy is being installed (for example).
o In configurations, in which policy installation takes a long time (usually caused by a
policy with a large number of rules), a cluster with more than two machines, and
slow machines, this timeout mechanism may expire prematurely.
o It is possible to tune the timeout by setting the desired value for this kernel
parameter.
Formula:
Policy change timeout for members to synchronize policy installation state before
proceeding:
[20 x (number of members in cluster) x
fwha_policy_update_timeout_factor]
Values:
o This kernel parameter is a multiplier, therefore it has no units.
o The default value is 1.
o Do not set this parameter to a value larger than 3.
Notes:
o The default value of 1 should be sufficient for most configurations.
o For configurations, where the situation described above occurs, setting this
parameter to 2 should be sufficient.
o Do not set this parameter to a value larger than 3.
Explanation:
o When the value is set to 0, the cluster member will not change its state to the next
required state until it negotiates with other cluster members.
o When the value is set to 1, the cluster members skip policy installation negotiation
and install new cluster configuration immediately.
Values:
o This kernel parameter is an on-off switch, therefore it has no units.
o Accepted values are 0 and 1.
o The default value is 0.
Refer to Installation and Upgrade Guide (R60, R61, R62, R65, R70, R71, R75,
R75.20, R75.40).
Explanation:
This parameter controls the time, during which a member should wait for an event
(e.g., pnote problem, CCP of Active member are not received) to occur during policy
installation (starting from the local policy installation).
Values:
o This parameter sets a timeout value, and its units are milliseconds.
o The default value is 0.
o Recommended value is 30000.
o Upper limit is 232-1.
Explanation:
This parameter controls the time, during which a member should freeze its state upon
event (e.g., pnote problem, CCP of Active member are not received) during policy
installation.
Values:
o This parameter sets a timeout value, and its units are milliseconds.
o The default value is 0.
o Recommended value is 15000.
o Upper limit is 232-1.
Notes:
o If the Active member fails during policy installation, a network outage might occur
of maximal duration depending on the value assigned to this kernel parameter.
Cluster member may fail to start correctly while the cluster is under severe load.
The starting member will attempt to perform a Full Sync with the existing active
member(s) and may in the process use up all its resources and available memory.
Procedure:
To overcome this problem, define the maximum amount of memory that the member may
use when starting up for synchronizing its connections with the active member. By default,
this amount is not limited. Estimate the amount of memory required as follows:
Example:
If the cluster holds 10 000 connections, and the connection rate is 1000 connections per
second, then cluster administrator will need 69 MB for Full Sync.
Instructions:
Define the maximal limit for memory allocation to Full Sync by setting the value of the
global kernel parameter fw_sync_max_saved_buf_mem to the required number of
megabytes. Refer to sk26202 (Changing the kernel global parameters for Check Point
Security Gateway).
Impact:
If memory allocation reaches this limit during Full Sync, then further allocations are
forbidden, and relevant messages are printed into /var/log/messages file:
FW-1: fwlddist_save: WARNING: this member will not be fully synchronized !
FW-1: fwlddist_save: current delta sync memory during full sync has reached the
maximim of N MB
FW-1: fwlddist_save: it is possible to set a different limit by changing
fw_sync_max_saved_buf_mem value
While performing Full Sync, the Delta Sync updates are not processed and saved.
Cluster member may fail to complete Full Sync while the cluster is under severe load.
It is possible that the rate of Delta Sync updates during the Full Sync process exceeds
the rate of the Full Sync packets. The FWD daemon on the Full Sync client member will not
Meanwhile, the Delta Sync packets are stored and occupy an ever-increasing amount of
memory in the kernel until memory allocation fails.
Procedure:
To overcome this problem, define the maximal limit for memory allocated to save the
Delta Sync packets during Full Sync. By default, this amount is not limited.
Instructions:
Define the maximal limit for memory allocated to save the Delta Sync packets during Full
Sync by setting the value of the global kernel parameter fw_sync_max_saved_buf_mem to
the required per cent of the memory allocated by Check Point kernel (controlled by be kernel
parameter fw_salloc_total_alloc) from the overall allowed memory (controlled by be
kernel parameter fw_salloc_total_alloc_limit).
Impact:
After a certain amount of Delta Sync packets is received, no more Delta Sync packets
are accepted, so additional sync updates received during Full Sync are discarded, and
relevant messages are printed into /var/log/messages file:
FW-1: fwlddist_save: WARNING: this member will not be fully synchronized !
FW-1: fwlddist_save: reached the memory threshold.
FW-1: fwlddist_save: Current = X MB, allowed = Y MB, threshold = N%
A consequence of this is that connections that were not transferred during full sync will
not survive failover.
After Full Sync is complete, the Delta Sync packets stored during the Full Sync phase are
applied by order of arrival.
Once this Delta Sync buffer is full, and every Sync timer interval, the Delta Sync buffer is
sent to all cluster members over the Synchronization Network. The receiving member will
duplicate those actions into its kernel tables.
State Synchronization mechanism creates Delta Sync packets for incoming connections.
These Delta Sync packets are placed in the Sync Sending Queue.
Obviously, this queue has a limited size, which might create a bottleneck - member would
not be able to place the new Delta Sync packets in the Sync Sending Queue - there might
not be enough space in this queue. Either because the number of incoming connection is too
high, or because the Delta Sync packets are not sent in timely manner (due to CPU load,
some problems on the Sync interfaces / Sync network).
(7-18) Traffic
(7-19) Flapping
Refer to ClusterXL definitions and terms section and to Cluster Control Protocol (CCP)
section.
If CCP packets are not received/sent within the expected timeouts, then eventually either
the problematic interface(s), or the whole member will be declared as failed. This in turn (by
design) will lead to the change in state of either the problematic interface(s), or the whole
member to 'Down'.
Depending on the configuration and the nature of the issue, the state might randomly
change between 'Up'/'Active' and 'Down'. Such random change in state is called "flapping"
(of either an interface, or a member).
Flapping, in its turn might cause an interruption in the production traffic that passes
through the cluster.
Cluster Under Load (CUL) mechanism (R75.40VS, R76, R77 and above) involves a
number of kernel parameters that allow cluster members to automatically monitor the CPU
utilization and prevent flapping according to the values of these kernel parameters - as
described in sk92723 (Cluster flapping prevention):
fwha_cul_mechanism_enable
fwha_cul_member_cpu_load_limit
fwha_cul_member_long_timeout
fwha_cul_cluster_short_timeout
fwha_cul_cluster_log_delay_millisec
fwha_cul_policy_freeze_timeout_millisec
fwha_cul_policy_freeze_event_timeout_millisec
Description:
Prints internal Security Gateway Statistics.
Output is divided into several sections.
Cluster-related section is called "Sync".
It is always located at the bottom of the output.
Syntax:
[Expert@Member]# fw ctl pstat
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'Monitoring and Troubleshooting Gateway
Clusters' - Monitoring Synchronization (fw ctl pstat).
Example:
Sync:
Version: new
Status: Able to Send/Receive sync packets
Sync packets sent:
total : 466729198, retransmitted : 1305, retrans reqs : 89, acks : 809
Sync packets received:
total : 77283541, were queued : 6715, dropped by net : 6079
retrans reqs : 37462, received 175 acks
retrans reqs for illegal seq : 0
dropped updates as a result of sync overload: 0
Delta Sync memory usage: currently using XX KB mem
Callback statistics: handled 138 cb, average delay : 2, max delay : 34
Number of Pending packets currently held: 1
Packets released due to timeout: 18
Sync:
Version: new
Status:
Unable to send sync packets
Unable to receive sync packets
Sync: The problem is described in the output itself
Version: new
(requires cluster debugging).
Status:
Able to send sync packets
Saving incoming sync packets
Sync:
Version: new
Status:
Unable to send sync packets
Saving incoming sync packets
Sync: The problem is described in the output itself
Version: new
(requires cluster debugging).
Status:
Able to send sync packets
Able to receive sync packets
Sync:
Version: new
Status:
Unable to send sync packets
Able to receive sync packets
Sync packets sent: TOTAL number of sync packets is non-
total : 466729198, retransmitted :
1305, retrans reqs : 89, acks : 809
zero and increasing.
RETRANS REQS may increase under
load.
Delta Sync memory usage: currently This statistic only appears for a non-zero
using XX KB mem
value. It requires memory only while Full
Sync is occurring. At other times, Delta Sync
requires no memory.
Callback statistics: handled 138 cb, This statistic only appears for a non-zero
average delay : 2, max delay : 34
value.
AVERAGE DELAY should be ~1-5 packets,
otherwise indicates an overload of sync
traffic.
Number of Pending packets currently This statistic only appears for a non-zero
held: 1
value.
Packets released due to timeout: 18 This statistic only appears for a non-zero
value. If the number is large (more than 100
pending packets), and the "Number of
Pending packets currently held" is small in
the output of 'cphaprob syncstat'
command, then you should take action to
reduce the number of pending packets.
To tackle this problem, see "Reducing the
Number of Pending Packets" in ClusterXL
Administration Guide.
Description:
Use the 'cphaprob' command to verify that the cluster and the cluster members are
working properly, and to define critical devices.
Syntax:
[Expert@Member]# cphaprob [flags]
Note: The commands below are listed in the order to their importance / relevance.
cphaprob state
Description:
Prints the summary with the following information:
o Cluster Mode
o Member ID of each known member
o Assigned traffic load for each known member
o State of each known member
Syntax:
[Expert@Member]# cphaprob state
Example:
1 10.10.10.31 0% Standby
2 (local) 10.10.10.32 100% Active
[Expert@FW2-Member:0]#
Description:
Prints the summary of Critical Devices (Pnotes) with the following information:
o Device name
o Device timeout (how frequently the periodic reports are expected)
o Device state
o Time since last periodic report
Syntax:
[Expert@Member]# cphaprob [-l][-ia][-e] list
Commands:
cphaprob list
cphaprob -i list
* Issue 'cphaprob -l list' to Prints the list of all the "Built-in Devices"
show full list of pnotes and the "Registered Devices"
cphaprob -e list
Built-in Devices:
Registered Devices:
[Expert@FW2-Member:0]#
Description:
Prints the summary of cluster interfaces with the following information:
o Number of required cluster interfaces - including the Sync interfaces (the maximal
number of good cluster interfaces seen since the last reboot)
o Number of required secured (trusted) interfaces (the maximal number of good
sync interfaces seen since the last reboot)
o Names of monitored cluster interfaces (refer to CCP and VLAN interfaces)
o State of cluster interfaces (based on arrival/transmission of CCP packets)
o CCP mode on cluster interfaces
o Number of cluster Virtual IP addresses
o Virtual IP addresses
o Virtual MAC addresses (if VMAC mode is enabled per sk50840)
o VLAN monitoring scheme
Syntax:
[Expert@Member]# cphaprob [-a][-m] if
Flag Description
-a Prints Virtual IP addresses and
their corresponding interfaces.
-m Starting in R80.10, prints the
VLAN monitoring scheme
Example:
[Expert@FW2-Member:0]# cphaprob -a if
Required interfaces: 3
Required secured interfaces: 1
[Expert@FW2-Member:0]#
cphaprob mmagic
Description:
Starting in Gaia R80.10, prints the summary information about the MAC magic:
o Configuration mode
o Configuration phase
o Value of MAC magic
o Value of MAC forward magic
Syntax:
[Expert@Member]# cphaprob mmagic
MAC magic: 1
MAC forward magic: 254
[Expert@FW2-Member:0]#
[Expert@FW2-Member:0]#
Description:
Prints internal cluster statistics about the operation of the State Synchronization.
Can be used on ClusterXL and 3rd party / OPSec clusters.
Syntax:
[Expert@Member]# cphaprob [-reset] syncstat
Flag Description
-reset Resets the statistics in kernel that was
collected since boot, or last reset.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'Monitoring and Troubleshooting Gateway
Clusters' - Troubleshooting Synchronization.
Example:
Local Updates:
Total generated updates ....................... 9180670
Recv Retransmission requests................... 1073
Recv Duplicate Retrans request................. 2564
Blocking Events................................ 0
Blocked packets................................ 0
Max length of sending queue.................... 4598
Avg length of sending queue.................... 0
Hold Pkts events............................... 1
Unhold Pkt events.............................. 1
Not held due to no members..................... 16
Max held duration (sync ticks)................. 0
Avg held duration (sync ticks)................. 11
Timers:
Sync tick (ms)................................. 100
CPHA tick (ms)................................. 100
Queues:
Sending queue size............................. 512
Receiving queue size........................... 256
Description:
Registers a Critical Device (Pnote) with specified parameters.
Syntax:
[Expert@Member]# cphaprob -d <device> -t <timeout_in_sec> -s
<ok|init|problem> [-p] [-g] register
Flags Description
-d device Specifies the name of the Pnote (refer to
ClusterXL definitions and terms section).
-t timeout_in_sec Specifies how frequently the periodic reports are
expected.
If no periodic reports should be expected, then
enter 0 (zero).
-s <ok|init|problem> Specifies the initial state with which
the Pnote will be registered.
-p (Optional) Specifies that this Pnote
must be registered permanently (this
configuration will be saved in the
$FWDIR/conf/cphaprob.conf file).
-g (Optional) Specifies that this Pnote
must be registered globally (applies to
R75.40VS and above in VSX mode).
Description:
Registers a Critical Device (Pnote) with specified parameters.
Syntax:
[Expert@Member]# cphaprob -d <device> [-p] [-g] unregister
Flags Description
-d device Specifies the name of the Pnote (refer to
ClusterXL definitions and terms section).
-p (Optional) Specifies that this Pnote
must be unregistered permanently (this
configuration will be removed from the
$FWDIR/conf/cphaprob.conf file).
-g (Optional) Specifies that this Pnote
must be unregistered globally (applies to
R75.40VS and above in VSX mode).
Description:
Reports a specified state for Critical Device (Pnote).
Syntax:
[Expert@Member]# cphaprob -d <device> -s <ok|init|problem> [-g] report
Flags Description
-d device Specifies the name of the Pnote (refer to
ClusterXL definitions and terms section).
-s <ok|init|problem> Specifies the state, which
will be reported for the Pnote .
-g (Optional) Specifies that this Pnote
state must be reported globally
(applies to R75.40VS and above in VSX mode).
Description:
Registers Critical Devices (Pnotes) with specified parameters from a file.
Syntax:
[Expert@Member]# cphaprob -f <file> [-g] register
Flags Description
-f file Specifies the file that contains the list of Pnotes
and their parameters.
For file syntax, refer to the
$FWDIR/conf/cphaprob.conf file.
-g (Optional) Specifies that this Pnote
must be registered globally (applies to
R75.40VS and above in VSX mode).
Description:
Unregisters all Critical Devices (Pnotes).
Syntax:
[Expert@Member]# cphaprob -a [-g] unregister
Flags Description
-a Specifies that all Pnotes must be unregistered.
-g (Optional) Specifies that all Pnotes must be
unregistered globally (applies to
R75.40VS and above in VSX mode).
cphaprob igmp
Description:
Prints IGMP membership status.
Syntax:
[Expert@Member]# cphaprob igmp
Example:
[Expert@FW2-Member:0]#
Description:
Prints the serialization statistics about the operations performed in kernel tables
based on Delta Sync - creating a new connection, updating an existing connection,
deleting an existing connection, etc.
Can be used on ClusterXL and 3rd party / OPSec clusters.
Syntax:
[Expert@Member]# cphaprob [-reset] ldstat
Flag Description
-reset Resets the statistics in kernel that was
collected since boot, or last reset.
Example:
[Expert@FW2-Member:0]#
cphaprob fcustat
Description:
Prints the Full Connectivity Upgrade (FCU) statistics on the member that is being
upgraded in Full Connectivity mode.
Note: FCU is not supported since R75 (refer to sk107042).
Example:
[Expert@FW2-Member:0]#
Description:
Prints the Cluster tables.
Syntax:
[Expert@Member]# cphaprob tablestat
Example:
[Expert@FW2-Member:0]# cphaprob tablestat
(Local)
1 1 192.168.204.32
1 2 10.10.10.32
1 3 20.20.20.32
------------------------------------------
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'Monitoring and Troubleshooting Gateway
Clusters' - ClusterXL Configuration Commands - The cphastart and cphastop Commands.
cphastart
o Running cphastop on a cluster member stops the cluster member from passing
traffic.
o State Synchronization also stops.
o It is still possible to open connections directly to the cluster member.
o In High Availability Legacy mode, running cphastop may cause the entire cluster
to stop functioning.
Important Note: This command should NOT normally be used, since configuration is
controlled by the Management Server. Use it only if specifically instructed to by Check Point
Support. Exception: when working with Bond interfaces.
Refer to ClusterXL Administration Guide (R70, R70.1, R71, R75, R75.20, R75.40,
R75.40VS, R76, R77.X, R80.10) - Chapter 'Monitoring and Troubleshooting Gateway
Clusters' - ClusterXL Configuration Commands - The cphaconf command.
Note: The commands below are listed in the order to their importance / relevance.
Important Note:
Use the following table only to analyze the output of 'cphastart -d' command.
Description:
Loads cluster configuration with relevant options into kernel.
Flags Description
-D Prints debug information about
the execution of 'cphaconf' command
-c <size> Sets cluster size
(number of members in the cluster)
-i <ID> Sets member ID of the local machine
(count is starts from 1
-n <ID> Sets cluster ID
-p <policy_id> Sets Policy ID explicitly
cphaconf stop
Description:
Removes the cluster configuration from kernel.
Background:
The 'cphastop' command is actually a shell script wrapper that runs this command.
Description:
Sets the CCP mode - broadcast / multicast (default mode).
Notes:
o Refer to CCP modes section.
o Explicit configuration will be added into:
Unix OS: $FWDIR/boot/ha_boot.conf file
Windows OS: Windows Registry -
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CPHA\
CCP_mode
Description:
Shows the current bond configuration
o -a = displays a summary table for all bond interfaces
o bond_name = displays a summary table for specific bond and its slaves
Description:
Starts internal failover between slave interfaces of given bond interface (Bond in High
Availability mode only).
Description:
Sets what happens during a failover after a bond has already failed over internally.
Note:
It works only if the value of kernel parameter 'fwha_manual_bond_failover' is
currently set to 1 (one).
cphaconf debug_data
Description:
Prints the current cluster configuration as loaded in the kernel on this machine.
Note:
Works only during the following cluster debug:
In 1st shell:
[Expert@Member_HostName]# fw ctl debug 0
[Expert@Member_HostName]# fw ctl debug -buf 32000
[Expert@Member_HostName]# fw ctl debug -m cluster + conf
[Expert@Member_HostName]# fw ctl kdebug -T -f > /var/log/debug.txt
In 2nd shell:
[Expert@Member_HostName]# cphaconf debug_data
Review /var/log/debug.txt
Example:
Configuration:
[Expert@FW1-Member:0]# cphaprob state
[Expert@FW1-Member:0]#
[Expert@FW1-Member:0]# cphaprob -a if
Required interfaces: 3
Required secured interfaces: 1
[Expert@FW1-Member:0]#
Debug output:
;[cpu_1];[fw4_0];================================================;
;[cpu_1];[fw4_0];===== ClusterXL debug information ===;
;[cpu_1];[fw4_0];================================================
;
;[cpu_1];[fw4_0];---- Sync ----
;
;[cpu_1];[fw4_0];fwlddist_state is (1a): Receiving, Not Saving, Sending;
;[cpu_1];[fw4_0];fwlddist_dobcast is: 1;
;[cpu_1];[fw4_0];fw_has_nondefault_filter is: 1;
;[cpu_1];[fw4_0];fw_syncn_is_configured is: 1;
;[cpu_1];[fw4_0];fwlddist_policy_in_ready_state is: 1;
;[cpu_1];[fw4_0];---- VMAC mode: ----
;
;[cpu_1];[fw4_0];VMAC: vmac mode is enabled;
;[cpu_1];[fw4_0];VMAC: the vmac of each interface:;
;[cpu_1];[fw4_0];Interface: 1) eth0, vmac: 00:1C:7F:00:00:FE;
;[cpu_1];[fw4_0];Interface: 3) eth2, vmac: 00:1C:7F:00:00:FE;
;[cpu_1];[fw4_0];VMAC: priomisc mode interfaces (by the VMAC mechanism) are:;
;[cpu_1];[fw4_0];Interface: 1) eth0, vmac_index=0x0;
;[cpu_1];[fw4_0];Interface: 3) eth2, vmac_index=0x0;
;[cpu_1];[fw4_0];------------------------
;
;[cpu_1];[fw4_0];================================================;
;[cpu_1];[fw4_0];===== ClusterXL debug end ===;
;[cpu_1];[fw4_0];================================================
;
;[cpu_1];[fw4_1];================================================;
;[cpu_1];[fw4_1];===== ClusterXL debug information ===;
;[cpu_1];[fw4_1];================================================
;
;[cpu_1];[fw4_1];------------------------
;[cpu_1];[fw4_1];===== Cluster instance information ===;
;[cpu_1];[fw4_1];------------------------
;
;[cpu_1];[fw4_1];---- Selection table ----
;
;[cpu_1];[fw4_1];Effective selection table size: 2
;
;[cpu_1];[fw4_1];0: 0;
;[cpu_1];[fw4_1];1: 0;
;[cpu_1];[fw4_1];------------------------
;
;[cpu_1];[fw4_1];---- Multicast table ----
;
;[cpu_1];[fw4_1];lo: Address: 1.0.0.127;
;[cpu_1];[fw4_1];Cluster/default multicast IP: 0.0.0.0, MAC address:
00:00:00:00:00:00;
;[cpu_1];[fw4_1];eth0: Address: 31.204.168.192;
;[cpu_1];[fw4_1];Cluster/default multicast IP: 33.204.168.192, MAC address:
01:00:5E:28:CC:21;
;[cpu_1];[fw4_1];eth1: Address: 31.10.10.10;
;[cpu_1];[fw4_1];Cluster/default multicast IP: 250.10.10.10, MAC address:
01:00:5E:0A:0A:FA;
;[cpu_1];[fw4_1];eth2: Address: 31.20.20.20;
;[cpu_1];[fw4_1];Cluster/default multicast IP: 33.20.20.20, MAC address:
01:00:5E:14:14:21;
;[cpu_1];[fw4_1];------------------------
;
;[cpu_1];[fw4_1];---- Status subscribers ----
;
;[cpu_1];[fw4_1];Subscriber: 0 pid 23079 sig 12 desc pepd;
;[cpu_1];[fw4_1];Subscriber: 1 pid 23078 sig 12 desc pdpd;
;[cpu_1];[fw4_1];Subscriber: 2 pid 25236 sig 3 desc routed instance 0;
;[cpu_1];[fw4_1];Subscriber: 3 pid 25270 sig 12 desc ted;
;[cpu_1];[fw4_1];Subscriber: 4 pid 4533 sig 12 desc cvpnd;
;[cpu_1];[fw4_1];------------------------
;
;[cpu_1];[fw4_1];===== Cluster instance information end ===;
;[cpu_1];[fw4_1];------------------------
;
;[cpu_1];[fw4_1];---- Interfaces info: ----
;
;[cpu_1];[fw4_1];0) if: lo, flags: 0x800;
;[cpu_1];[fw4_1];1) if: eth0, flags: 0x10000800;
;[cpu_1];[fw4_1];2) if: eth1, flags: 0x10000808;
;[cpu_1];[fw4_1];3) if: eth2, flags: 0x10000800;
;[cpu_1];[fw4_1];------------------------
;
;[cpu_1];[fw4_1];================================================;
;[cpu_1];[fw4_1];===== ClusterXL debug end ===;
;[cpu_1];[fw4_1];================================================
Description:
Adds the specified trusted (secured) interfaces explicitly into the current cluster
configuration in kernel.
cphaconf sync
Description:
Sets sync configuration in kernel (in HA New mode).
cphaconf stop_all_vs
Description:
Stops clustering on each Virtual System (relevant only for VSX systems).
Description:
Enables (on; default setting) / Disables (off) the Forwarding Layer (controls the
forwarding of traffic between cluster members).
cphaconf clear-secured
Description:
Clears the list of secured (trusted) interfaces in kernel.
cphaconf clear-disconnected
Description:
Clears the list of disconnected interfaces in kernel.
cphaconf clear_subs
Description:
Clears the list of subscribers.
Note:
List of such subscribers can be obtained by running the cphaconf debug_data
command.
cphaconf mc_reload
Description:
Updates the multicast configuration by reloading the 'cphamcset' daemon (if this is
HA New mode and CCP is set to run in Multicast mode). The current configuration is
kept.
cphaconf uninstall_macs
Description:
Calls the $FWDIR/bin/cpha_restore_macs script to remove the cluster MAC
address configuration (and restore a previous MAC configuration if it was saved on
Linux-based OS to the ifcfg-ethX file).
Description:
Only on IPSO OS: Sets Multicast MAC addresses on relevant interfaces.
cphaconf init
Description:
Initializes cluster configuration.
cphaconf fini
Description:
Finalizes cluster configuration.
Description:
Enables (on) / Disables (off) ClusterXL kernel debug module (fw ctl debug -m
cluster).
Description:
Produces relevant information for the installed products.
Syntax:
[Expert@HostName]# cpstat [-d] [-s SIC_Name] [-p port] [-o
polling_interval [-c count] [-e period]] [-f flavour]
application_flag
Flags:
'cpstat' flags Description
-d Prints some debug information about the
execution of 'cpstat' command
-s <SIC_Name> Sets the SIC name of the AMON server
-p <port> Sets the port number of the AMON server
(default port is 18192)
-o <polling_interval> Sets polling interval (in seconds) - how
frequently to produce the output (default is 0,
i.e., the results are shown only once)
-c <count> Sets how many times in total to produce the
output (default is 0, i.e., the results are shown
repeatedly)
-e <period> Sets the interval, over which "statistical" OIDs
are computed (ignored for regular OIDSs)
In our case, we are interested in the information only about the ClusterXL product:
[Expert@HostName]# cpstat -f default ha
[Expert@HostName]# cpstat -f all ha
Refer to sk93201 (Output of 'cpstat -f all ha' command on Gaia OS does not populate the
'Cluster IPs table' and the 'Sync table').
The 'cpstat -f all ha' command on Gaia OS and on 3rd party / OPSec clusters
works in the following way:
1. The 'cpstat -f all ha' command calls the
$FWDIR/bin/cxl_create_partner_topology_file shell script.
2. The $FWDIR/bin/cxl_create_partner_topology_file shell script collects the
relevant information and saves in the
$FWDIR/tmp/cxl_partner_topology_config.txt file.
3. 'cpstat -f all ha' uses the information in
$FWDIR/tmp/cxl_partner_topology_config.txt file and populates the
'Cluster IPs table' and the 'Sync table'.
Examples:
Sync table
--------------------------------
|Name|IP |Netmask |
--------------------------------
|eth1|10.10.10.78|255.255.255.0|
--------------------------------
This shell script registers a pnote (called 'admin_down') and gracefully changes the state
of the given cluster member to 'Down' (by reporting the state of that pnote as 'problem'), or
gracefully reverts the state of the given cluster member to 'Up' (by reporting the state of that
pnote as 'ok').
This shell script pings a list of predefined IP addresses and changes the state of the
given cluster member to 'Down' or 'Up' based on the replies to these pings.
Note: Cluster member will go down even if one ping is not answered.
This shell script monitors a list of predefined processes and changes the state of the
given cluster member to 'Down' or 'Up' based on whether these processes are running or not.
In order to see how the Security Gateway processes the traffic, and how the internal
components are working, a debug of Check Point kernel should be run on this Security
Gateway (depending on the issue, it might also be required to run a debug of the relevant
user space daemon - e.g., in case of VPN - vpnd, in case of Full Sync - fwd).
Some debugs print so much information, that the load on CPU might increase to 100%
and render the Security Gateway unresponsive.
Note: It is always recommended to run the kernel debug during a scheduled maintenance
window in order to minimize the impact on production traffic and on users.
(8-1-A) Syntax
To display all kernel debugging modules and all their flags that this machine supports:
[Expert@GW_HostName]# fw ctl debug -m
To display all kernel debugging modules and their flags that were turned on:
[Expert@GW_HostName]# fw ctl debug
To display all debugging flags that were turned on for this kernel debugging module:
[Expert@GW_HostName]# fw ctl debug -m MODULE
Notes:
Some debug flags are enabled by default (error, warning) in various kernel
debugging modules, so that some generic messages are printed into Operating
System log (Linux-based OS: /var/log/messages; Windows OS: Event
Viewer).
This command should be issued before starting any kernel debug.
This command must be issued to stop the kernel debug.
Note:
This unsets all debug flags, which means that none of the relevant messages will be
printed. Default debug flags should be enabled.
Notes:
Default size of the debugging buffer is 50 KB
Maximal size of the debugging buffer is 32768 KB
Unless the size of the debugging buffer is increased from default 50 KB, the
debug will not be redirected to a file (debug messages will be printed into
Operating System log)
Debug messages are collected in this buffer, and a user space process
($FWDIR/bin/fw) collects them and prints into the output file.
To print debug messages into the output file (start the kernel debug):
[Expert@GW_HostName]# fw ctl kdebug -T -f > /var/log/debug.txt
Note:
If you need to use this command in shell scripts, then add an ampersand at the end to
run the command in the background (fw ctl kdebug -T -f > /var/log/debug.txt
&).
Note:
If you started the kernel debug via shell script, then you should just set the default
kernel debug options.
Note: Any other message means that there was a problem allocating the buffer,
and you should not continue until that issue is resolved (e.g., "Failed to allocate
kernel debugging buffer").
Note: Pay close attention to the name of the kernel debug module.
Notes:
Pay close attention to the size of the kernel debugging buffer.
Pay close attention to the name of the kernel debugging module.
The order of the flags in this output does not matter - just all the flags you set
have to be here.
6. Stop the kernel debug and set default kernel debug options:
Press CTRL+C
[Expert@GW_HostName]# fw ctl debug 0
8. Collect the debug output files (from kernel debug and traffic captures) and all other
related files (OS logs, CPinfo files, daemons' logs, SmartView Tracker logs, etc).
To debug Check Point ClusterXL software, the following kernel debugging settings are
used:
Before starting the kernel debug itself, pay attention to the following global kernel
parameters relevant to relevant to cluster issues (after debug, set the default values):
Disable this kernel parameter to disable the limit on the debug messages time window
(default - 60 ; zero - disables the limit):
[Expert@Member_HostName]# fw ctl set int fw_kdprintf_limit_time 0
Disable this kernel parameter to disable the limit on the amount of debug messages
(default - 30 ; zero - disables the limit) that are printed within specified time
(fw_kdprintf_limit_time):
[Expert@Member_HostName]# fw ctl set int fw_kdprintf_limit 0
Set this kernel parameter to print additional IO information and the contents of the
packets in HEX format when 'select' flag is enabled in 'cluster' module:
[Expert@Member_HostName]# fw ctl set int fwha_dprint_io 1
Set this kernel parameter to print additional information about cluster interfaces when
'if' flag is enabled in 'cluster' module (very helpful for Check Point RnD):
[Expert@Member_HostName]# fw ctl set int fwha_dprint_all_net_check 1
Set this kernel parameter to print the dump of each packet when 'packet' flag is
enabled in 'fw' module (very helpful for Check Point RnD):
Some kernel parameters can be set on-the-fly with 'fw ctl set int PARAMETER
VALUE' command (e.g., fwha_mac_magic).
Note: This change does not survive reboot.
Some kernel parameters can be set only during boot of the machine (any parameter
that controls memory allocation, sizes of memory buffers).
Refer to the solutions that contain most relevant cluster-related kernel parameters:
sk92723 (Cluster flapping prevention)
sk25977 (Connecting multiple clusters to the same network segment (same VLAN,
same switch)
sk23695 ('FW-1: State synchronization is in risk. Please examine your
synchronization network to avoid further problems!' appears in /var/log/messages file)
sk43984 (Interface flapping when cluster interfaces are connected through several
switches)
sk31655 (State of Standby cluster member in High Availability cluster is constantly
changing between 'Standby' and 'Down')
sk31336 (Using Monitor Interface Link State feature to improve ClusterXL interface-
failure-detection ability)
sk62863 (ClusterXL - cluster debug shows interface flapping due to the missing CCP
packets)
sk63163 (Failover does not occur in ClusterXL HA Primary Up mode after changing
cluster member priorities and installing the policy)
sk41827 (Synchronization network in the cluster is flooded with Sync Retransmit
packets)
sk43896 (Blocking New Connections Under Load in ClusterXL)
sk82080 (/var/log/messages are filled with 'kernel: FW-1:
fwldbcast_update_block_new_conns: sync in risk: did not receive ack for the last 410
packets')