Edit the file $FWDIR/boot/modules/fwkern.conf, adding the line:
fwha_use_arp_packet_queue=1
Note: If the file does not exist, create it.
~expert mode~
cd $FWDIR/boot/modules
vi fwkern.conf
fwha_gratuitous_arp_timeout = 10
esc
:w
:q
How to validate the Gratuitous Arp
[Expert@myvpn-fwa:0]# fw ctl get int fwha_gratuitous_arp_timeout
fwha_gratuitous_arp_timeout = 600
[Expert@myvpn-fwa:0]#
How to enable ClusterXL Virtual MAC (VMAC) mode
Solution ID | sk50840 |
Product | ClusterXL, VSX |
Version | R71, R75, R76, R77, R77.10, R77.20, R77.30 |
OS | SecurePlatform 2.6, Gaia |
Platform / Model | All |
Date Created | 21-Jul-2010 |
Last Modified | 23-Jun-2016 |
Solution
Table of Contents:
Reports from the field show that some switches do not integrate the information from G-ARP packets fast enough into their ARP cache table. This leads to problems, where the switches still send the traffic to the physical MAC address of the old Active member / Pivot member that failed. As a result, there is a traffic outage on the network until the switches update their ARP cache table.
In some other cases, when there is a large number of Static NAT entries on a ClusterXL member, upon failover, the ClusterXL mechanism sends many G-ARP packets. Reports from the field show that in some cases, the number of G-ARP packets is more than different switches can handle, and some traffic is lost. In some other cases, different network components (VoIP phones) categorically ignore the G-ARP packets.
This Solution introduces a new variation of the High Availability New mode / Load Sharing Unicast mode for the cluster product: Cluster Virtual MAC (VMAC), which is available starting in R71.
When you configure a cluster to use VMAC with ClusterXL High Availability New mode, or Load Sharing Unicast mode, all cluster members associate the same Virtual MAC address with Virtual IP address.
Traffic originating from Active / Pivot cluster member is sent out in the following way:
In case switches/routers on the network still do not integrate the information from G-ARP packets fast enough into their ARP cache table, configure static MAC entry to associate Virtual MAC address and ports, which are connected to cluster members (refer to any ClusterXL Administration Guide (R71, R75, R75.20, R75.40, R75.40VS, R76, R77) - chapter 'High Availability and Load Sharing in ClusterXL' - 'Hardware Requirements, Compatibility and Cisco Example' - Table 4-2, Table 4-3, Table 4-4, Table 4-5).
Use of Virtual MAC is different from the use of Shared MAC in HA Legacy mode. VMAC that is advertised by the cluster members (via Gratuitous ARP Requests) keeps the real MAC address of each member and adds another Virtual MAC address on top of it. In HA Legacy mode, the Shared MAC address that is advertised replaces the real MAC address.
It is necessary to keep the real MAC address of each member, because connectivity to the member itself is required (with the real IP address of the member).
-
Overview
-
VMAC support
-
Configuring VMAC mode
-
In SmartDashboard (preferred method)
-
On Cluster Members
-
-
VMAC value
-
Versions R76 and above
-
Versions prior to R76
-
-
Verifying VMAC mode
-
Related Solutions
(1) Overview
Upon fail-over in ClusterXL that is configured in High Availability New mode / Load Sharing Unicast mode (Note: any VSX cluster works in High Availability mode), a new Active member / new Pivot member will send a series of Gratuitous ARP Requests (G-ARP packets) for its Virtual IP addresses with the Physical MAC address of the new Active member / new Pivot member on each cluster subnet (and then the new Active member / new Pivot member sends such G-ARP packet every 'N' seconds - the timeout is controlled by the value (in HTUs) of the global kernel parameter 'fwha_gratuitous_arp_timeout').Reports from the field show that some switches do not integrate the information from G-ARP packets fast enough into their ARP cache table. This leads to problems, where the switches still send the traffic to the physical MAC address of the old Active member / Pivot member that failed. As a result, there is a traffic outage on the network until the switches update their ARP cache table.
In some other cases, when there is a large number of Static NAT entries on a ClusterXL member, upon failover, the ClusterXL mechanism sends many G-ARP packets. Reports from the field show that in some cases, the number of G-ARP packets is more than different switches can handle, and some traffic is lost. In some other cases, different network components (VoIP phones) categorically ignore the G-ARP packets.
This Solution introduces a new variation of the High Availability New mode / Load Sharing Unicast mode for the cluster product: Cluster Virtual MAC (VMAC), which is available starting in R71.
When you configure a cluster to use VMAC with ClusterXL High Availability New mode, or Load Sharing Unicast mode, all cluster members associate the same Virtual MAC address with Virtual IP address.
Traffic originating from Active / Pivot cluster member is sent out in the following way:
- Layer 2 Source (MAC) address - physical MAC address of corresponding member's interface.
- Layer 3 Source (IP) address - Virtual IP address that was configured for corresponding cluster interfaces.
- Layer 2 Source (MAC) address - physical MAC address of corresponding host's interface.
- Layer 2 Destination (MAC) address - Virtual MAC address created for corresponding cluster interfaces.
- Layer 3 Source (IP) address - IP address of corresponding host's interface.
- Layer 3 Destination (IP) address - Virtual IP address that was configured for corresponding cluster interfaces.
In case switches/routers on the network still do not integrate the information from G-ARP packets fast enough into their ARP cache table, configure static MAC entry to associate Virtual MAC address and ports, which are connected to cluster members (refer to any ClusterXL Administration Guide (R71, R75, R75.20, R75.40, R75.40VS, R76, R77) - chapter 'High Availability and Load Sharing in ClusterXL' - 'Hardware Requirements, Compatibility and Cisco Example' - Table 4-2, Table 4-3, Table 4-4, Table 4-5).
Use of Virtual MAC is different from the use of Shared MAC in HA Legacy mode. VMAC that is advertised by the cluster members (via Gratuitous ARP Requests) keeps the real MAC address of each member and adds another Virtual MAC address on top of it. In HA Legacy mode, the Shared MAC address that is advertised replaces the real MAC address.
It is necessary to keep the real MAC address of each member, because connectivity to the member itself is required (with the real IP address of the member).
(2) VMAC support
Operating Systems | The VMAC mode is supported only on SecurePlatform OS and on Gaia OS. |
ClusterXL | The VMAC mode is supported in ClusterXL only in High Availability New mode, and in Load Sharing Unicast mode. |
VSX cluster | The VMAC mode is supported in VSX cluster - both in High Availability (default mode), and in Virtual System Load Sharing (VSLS) mode (Note: any VSX cluster works in High Availability mode). |
VMAC configuration method | VMAC mode can be configured:
|
Virtual MAC address | The 'ifconfig' command does not show the VMAC addresses (use 'cphaprob -a if' command instead). |
(3) Configuring VMAC mode
Configure the VMAC mode in one of the following two ways:-
In SmartDashboard (preferred method)
Note: This method is available only for versions R76 and above, on Gaia OS (not including VSX).
- SmartDashboard - cluster object - 'Properties' - 'ClusterXL and VRRP' section:
- under 'Select the cluster mode and configuration' - select 'High Availability' - select 'ClusterXL'
- under 'Advanced Settings' - check the box 'Use Virtual MAC' - click 'OK'
- under 'Select the cluster mode and configuration' - select 'High Availability' - select 'ClusterXL'
- Save the changes: 'File' menu - 'Save'.
- Install the security policy onto this cluster object.
- SmartDashboard - cluster object - 'Properties' - 'ClusterXL and VRRP' section:
-
On Cluster Members
- To enable VMAC mode, set the value of global kernel parameter 'fwha_vmac_global_param_enabled' to 1 (default value is 0).
- To disable VMAC mode, set the value of global kernel parameter 'fwha_vmac_global_param_enabled' to 0.
- To set the VMAC mode value on-the-fly,
run this command on all cluster members:
[Expert@HostName]# fw ctl set int fwha_vmac_global_param_enabled VALUE - To set the VMAC mode value permanently:
refer to sk26202 (Changing the kernel global parameters on all platforms)
In order to get the current value of global kernel parameter 'fwha_vmac_global_param_enabled', run the this command on a cluster member:
[Expert@HostName]# fw ctl get int fwha_vmac_global_param_enabled
- To enable VMAC mode, set the value of global kernel parameter 'fwha_vmac_global_param_enabled' to 1 (default value is 0).
(4) VMAC value
-
Versions R76 and above
All cluster interfaces are configured with the same VMAC address using the following format (having different VMAC addresses for each cluster interface is not necessary - typically a modern switch uses a different CAM table for each VLAN, so it is possible to have the same MAC address on the same switch in different VLANs; in addition, having the same VMAC for each cluster interface makes it easier to understand, which cluster is sending the packet without a need to know each interface address):
Total 48 bits (from left-to-right):
- Left 24 bits - 00:1C:7F - unique constant value.
- Next 7 bits - 0000000.
- Next 9 bits - Virtual System ID. In case of non-VSX Security Gateway - 000000000.
- Next 8 bits - value of the global kernel parameter 'fwha_mac_magic' (default hex value is 'FE') - needed to prevent collisions between different clusters on the same segment - refer to sk25977 (Connecting multiple clusters to the same network segment (same VLAN, same switch).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 00 1C 7F 0000000 VSID value of 'fwha_mac_magic' - Left 24 bits - 00:1C:7F - unique constant value.
-
Versions prior to R76
Specific range of VMAC addresses was assigned for VMAC mode:
00:1C:7F:00:00:00 -> 00:1C:7F:1F:FF:FF
Total 48 bits (from left-to-right):
- Left 24 bits - 00:1C:7F - unique constant value.
- Next 3 bits - are 000.
- Next 13 bits - sequence number - interfaces on different members that belong to the same VIP, share the same sequence number.
- Next 8 bits - value of the global kernel parameter 'fwha_mac_magic' (default hex value is 'FE') - needed to prevent collisions between different clusters on the same segment - refer to sk25977 (Connecting multiple clusters to the same network segment (same VLAN, same switch).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 00 1C 7F 000 sequence number value of 'fwha_mac_magic' - Left 24 bits - 00:1C:7F - unique constant value.
(5) Verifying VMAC mode
- Run the 'cphaprob -a if' command on all cluster members:
Notes:- On SecurePlatform OS, this command has to be run in Expert shell.
- On Gaia OS, this command can be run in either shell (Clish, or Bash).
- Each cluster interface will display its VMAC address, if VMAC mode is configured.
- Example for versions prior to R76:
[Expert@HostName]# cphaprob -a if Required interfaces: 3 Required secured interfaces: 1 eth0 UP non sync(non secured), multicast eth2 UP non sync(non secured), multicast eth1 UP sync(secured), multicast Virtual cluster interfaces: 2 eth0 192.168.204.20 VMAC address: 00:1C:7F:00:D0:FE eth2 20.20.20.20 VMAC address: 00:1C:7F:00:D1:FE
- Example for versions R76 and above (non-VSX):
[Expert@HostName]# cphaprob -a if Required interfaces: 3 Required secured interfaces: 1 eth0 UP non sync(non secured), multicast eth2 UP non sync(non secured), multicast eth1 UP sync(secured), multicast Virtual cluster interfaces: 2 eth0 192.168.204.20 VMAC address: 00:1C:7F:00:00:FE eth2 20.20.20.20 VMAC address: 00:1C:7F:00:00:FE
- Run the following debug commands on all cluster members (in Expert shell):
[Expert@HostName]# fw ctl zdebug -m cluster + conf > /var/log/data.txt &
[Expert@HostName]# cphaconf debug_data
[Expert@HostName]# fg
press CTRL+C
The /var/log/data.txt file contains useful cluster information.
The 'VMAC mode' section in that file should look similar to the examples below (refer to 'VMAC value' section above):
- Example for versions prior to R76:
.............................. ;[cpu_0];[fw_0];---- VMAC mode: ---- ; ;[cpu_0];[fw_0];VMAC: vmac mode is enabled; ;[cpu_0];[fw_0];VMAC: the vmac of each interface:; ;[cpu_0];[fw_0];Interface: 0) eth0, vmac: 00:1C:7F:00:D0:FE; ;[cpu_0];[fw_0];Interface: 1) eth2, vmac: 00:1C:7F:00:D1:FE; ;[cpu_0];[fw_0];VMAC: priomisc mode interfaces (by the VMAC mechanism) are:; ;[cpu_0];[fw_0];Interface: 0) eth0, vmac_index=0xd0; ;[cpu_0];[fw_0];Interface: 1) eth2, vmac_index=0xd1; ;[cpu_0];[fw_0];------------------------ ..............................
- Example for versions R76 and above (non-VSX):
.............................. ;[cpu_0];[fw_0];---- VMAC mode: ---- ; ;[cpu_0];[fw_0];VMAC: vmac mode is enabled; ;[cpu_0];[fw_0];VMAC: the vmac of each interface:; ;[cpu_0];[fw_0];Interface: 0) eth0, vmac: 00:1C:7F:00:00:FE; ;[cpu_0];[fw_0];Interface: 1) eth2, vmac: 00:1C:7F:00:00:FE; ;[cpu_0];[fw_0];------------------------ ..............................
- Example for versions prior to R76:
- Make sure that the ARP tables of the hosts connected to these cluster members now contain the VMAC value.
Use the relevant command for the Operating System on the hosts (e.g., Linux : # arp -an ; Windows: # arp -a) - Capture traffic that arrived at the ClusterXL gateway and make sure it is destined (check the 'Destination MAC Address' field) to the cluster VMAC according to the incoming VIP.