Guide for network engineers

How to test firewall failover without an outage

A standby firewall that has not carried traffic since commissioning is an assumption. This guide turns it into a measured result: check the pair, move the active role under control, measure what users would feel, and move it back.

11-minute read · Free Word template

What a failover test proves, and what it does not

A controlled failover, where you tell the active unit to step down, proves that the standby can take the active role, that configuration and session state were synchronized, and that the network around the pair follows the move: switch ports, VLANs, routing neighbors and VPN peers. It is the test that finds a standby that stopped synchronizing, a VLAN missing from the standby’s switch port, a routing adjacency that takes too long to form again, or a software or content mismatch between the two units.

It does not prove failure detection. A unit told to step down does not exercise link monitoring, path monitoring or heartbeat timers. Test those separately, by taking down a monitored interface or path in a lab or a later window, once the controlled failover passes.

Treat the test as a change: an approved maintenance window, a written plan, a rollback path and named people. A test designed to cause no outage can still cause one if the standby is not ready. Finding that out is the point of the test.

Prerequisites

  • An approved maintenance window and a change record, with application owners told what they might see.
  • Console or out-of-band access to both units. If the failover goes wrong, in-band management may go with it.
  • A configuration backup of both units taken the same day.
  • Matching software on both units and, on platforms with content updates (application, threat and antivirus signatures), matching content versions.
  • Known preemption behavior. With preemption enabled, the preferred unit takes the active role back when it returns: a second transition you must plan and measure. Without it, the pair stays on the other unit until you move it.
  • Probes running before you start: one probe per second, with timestamps, across every path that matters (inside to outside, through NAT, through each VPN tunnel, to key applications). On Linux, ping -D -O ADDRESS prints a timestamp on every line and reports each missed reply.
  • At least one long-lived TCP session through the pair, such as an SSH session running a continuous command, to show whether established sessions survive.
  • Success criteria agreed in advance, for example: “no established TCP session lost, no more than 3 consecutive probes lost on any path, every BGP neighbor established again within 60 seconds.”
  • Synchronized clocks (NTP) on both units and on the probe hosts, so the timestamps line up.

Pre-checks: HA state, configuration sync, session sync, link and path monitoring

Run these on both units and stop if any fails. A failed pre-check makes the test Blocked, and the finding alone is worth the window.

  1. HA state. One unit active and the other in a ready standby state (passive, Standby Ready or secondary, depending on the platform), with no unexplained transitions in the recent HA history.
  2. Configuration sync. The pair reports its configuration as synchronized, or its checksums match.
  3. Session sync. The state-synchronization link is up and its counters rise between two reads; where the platform shows it, the standby’s session count is in line with the active unit’s.
  4. Link and path monitoring. Every monitored interface and path target is up and reachable from both units. A monitored interface that is down on the standby can make it ineligible, and the failover will either not happen or bounce back.
  5. The network around the pair. The switch ports facing the standby carry the same VLANs as those facing the active unit, and every routing neighbor and VPN peer that must form again after the move is known and watched.

The controlled failover and the fallback

  1. Announce the start on the bridge or channel and note the time. Start the probes and the long-lived session.
  2. Capture the pre-state on both units: HA status, session counts, routing neighbors, VPN tunnels.
  3. Trigger the failover on the active unit with the platform command in the tables below. This is state-changing: run it only in the approved maintenance window, with the rollback decision owner on the call.
  4. Watch both units change state, and watch the probes. Note the time of the first lost probe and of the first successful probe after the last loss, per path.
  5. Hold on the new active unit for an agreed soak time, 15 to 30 minutes, and run the application checks while it carries real traffic: user access, NAT, VPN, authentication, logging to your collector, management access.
  6. Fall back. Return the original unit to service and move the active role back, through preemption or with a second controlled failover. Measure the fallback exactly as you measured the failover; it can behave differently.
  7. Run the post-checks on both units and record the results.

Write the abort rule before the test, for example: “if any critical application check fails and has not recovered 2 minutes after the failover, move the active role back immediately.” Name who makes that call. If the fallback also fails, the next step in the plan is console access to both units and the escalation path, not improvisation.

What to measure

  • Convergence time: from the moment you triggered the failover to the first successful probe after the last lost one, per path. Report the slowest path, not the average.
  • Dropped probes: lost probes per path. At one probe per second, the count is roughly the seconds of loss.
  • Session loss: whether the long-lived TCP sessions survived, and the active session count on the new active unit compared with the count before. Stateful failover is designed to keep established TCP sessions; applications that reconnect on their own can hide losses, so check their logs too.
  • Routing convergence: when each BGP or OSPF neighbor of the pair was established again, from the neighbor’s view as well as the firewall’s.
  • VPN recovery: whether tunnels stayed up or had to negotiate again, and how long that took.
  • The same numbers for the fallback, recorded separately.

Put the numbers next to the success criteria. A failover and fallback that met every criterion is Verified. One that worked with a gap, such as a tunnel that took 4 minutes to return, is Degraded, with an owner for the fix.

Post-checks and the record

  • Both units in the roles you intended to end with, with configuration and session sync healthy again.
  • No monitored interface or path left failed, and no new alarms or log errors on either unit.
  • Routing tables, VPN tunnels and session counts back in line with the pre-test capture.
  • Any manual-failover flag cleared (a Juniper (opens in a new tab) SRX chassis cluster keeps one until you reset it).
  • The record in the change ticket: timestamps, probes lost per path, convergence times, sessions that survived, issues found and the verdict (Verified, Degraded, Rolled back, Inconclusive or Blocked).

Palo Alto Networks PAN-OS HA

In an active/passive pair, suspending the active firewall hands the active role to the passive one. request high-availability state functional returns the suspended firewall to service. It comes back passive, unless preemption is enabled on both firewalls and it has the higher priority; then it takes the active role back. On PAN-OS, the lower device priority value is preferred.

The routing command below applies to the legacy routing engine; with the Advanced Routing Engine enabled, use the routing commands for your release.

Palo Alto Networks PAN-OS HA
CheckCommandWhat good looks like
HA state (both firewalls)show high-availability stateOne firewall active and the other passive; running configuration synchronized; neither suspended nor non-functional
Full HA statusshow high-availability allPeer connected; HA1 and HA2 links up; build and content compatibility shown as matching
Session synchronizationshow high-availability state-synchronizationSynchronization counters rise between two reads; error counters do not
Link monitoringshow high-availability link-monitoringEvery monitored link up on both firewalls
Path monitoringshow high-availability path-monitoringEvery monitored destination reachable from both firewalls
Release and content versionsshow system infoSame PAN-OS and content versions on both firewalls
Sessionsshow session infoActive session count noted before the test and in line after the move
Drop countersshow counter global filter delta yes severity dropNo drop reason keeps rising after the moment of the move
BGP (legacy routing engine)show routing protocol bgp summaryPeers established again on the new active firewall
IPsec tunnelsshow vpn ipsec-saSecurity associations present for every tunnel in scope
Push configuration to the peer: STATE-CHANGING, approved maintenance window onlyrequest high-availability sync-to-remote running-configUse only when the pre-check shows configuration out of sync and you have confirmed which firewall holds the correct configuration
Force failover: STATE-CHANGING, approved maintenance window onlyrequest high-availability state suspendRun on the active firewall; the peer becomes active and this firewall shows suspended
Return to service: STATE-CHANGING, approved maintenance window onlyrequest high-availability state functionalRun on the suspended firewall; it returns as passive, or takes the active role back if preemption is enabled on both and it has priority

Syntax varies by platform and software version; test in a lab first.

Cisco Secure Firewall ASA failover

Active/standby failover on the ASA does not preempt: after a failover, the new active unit stays active until you move the role back. The standby unit reaches Standby Ready only after it has synchronized the configuration from the active unit, so a unit stuck in an earlier state is itself a finding. failover exec mate, followed by a show command, runs that command on the peer, so you can read both units from one session.

Cisco Secure Firewall ASA
CheckCommandWhat good looks like
Failover status and stateful linkshow failoverFailover On; this host Active and the other host Standby Ready; failover and stateful links up; monitored interfaces Normal on both; logical update error counters (xerr, rerr) not rising
State and last failure reasonshow failover stateBoth units in the expected state; no recent unexplained failure reason
Failover historyshow failover historyNo unexplained transitions since the last planned event
Monitored interfacesshow monitor-interfaceEvery monitored interface Normal on both units
Failover configurationshow running-config failoverFailover and state links and polling settings as documented
Connections on the active unitshow conn countCount noted before the test and in line after the move
Connections on the standby unitfailover exec mate show conn countReplicated count in line with the active unit
Dropped packetsshow asp dropNo drop reason keeps rising after the moment of the move
Routingshow routeRoutes for key prefixes as in the pre-test capture on the new active unit
Remote access and site-to-site VPNshow vpn-sessiondb summarySession counts in line with the pre-test capture
Force failover: STATE-CHANGING, approved maintenance window onlyno failover activeRun on the active unit; the standby unit becomes active
Take the active role: STATE-CHANGING, approved maintenance window onlyfailover activeRun on the standby unit to make it active; run it on the original unit to fall back

Syntax varies by platform and software version; test in a lab first.

Juniper SRX chassis cluster

Test the data-plane redundancy groups (1 and above) first. Redundancy group 0 holds the two Routing Engines, so failing it over moves the control plane as well; plan it as a separate step. A manual failover sets the new primary’s priority for that group to 255 and keeps it there until you reset it, and Juniper (opens in a new tab) requires request chassis cluster failover reset before another manual failover. After the reset, a group with preempt enabled can move back to the higher-priority node on its own.

Juniper SRX (chassis cluster)
CheckCommandWhat good looks like
Cluster statusshow chassis cluster statusFor each redundancy group, one node primary and the other secondary, priorities as configured, no manual flag and no monitoring failures
Cluster links and interfacesshow chassis cluster interfacesControl and fabric links up; redundant Ethernet (reth) interfaces up
Heartbeats and session syncshow chassis cluster statisticsControl-link heartbeats and fabric probes rising on both nodes; session RTOs sent and received rising
Cluster configurationshow configuration chassis clusterRedundancy groups, priorities, preempt and interface monitoring as documented
Software on both nodesshow versionSame Junos (opens in a new tab) release on node0 and node1
Sessionsshow security flow session summarySession counts per node noted before the test and in line after the move
Routingshow bgp summaryPeers established again after the move
IPsec tunnelsshow security ipsec security-associationsSecurity associations present for every tunnel in scope
Force failover of redundancy group 1: STATE-CHANGING, approved maintenance window onlyrequest chassis cluster failover redundancy-group 1 node 1Node 1 becomes primary for redundancy group 1
Clear the manual failover: STATE-CHANGING, approved maintenance window onlyrequest chassis cluster failover reset redundancy-group 1Manual flag cleared; required before the next manual failover; with preempt enabled, the group can move back to the higher-priority node
Fall back: STATE-CHANGING, approved maintenance window onlyrequest chassis cluster failover redundancy-group 1 node 0Node 0 primary again for redundancy group 1; then clear the manual failover with the reset command

Syntax varies by platform and software version; test in a lab first.

Fortinet FortiGate HA (FortiOS)

The checks below confirm the cluster’s state and synchronization. How you move the primary role depends on the FortiOS release and the HA settings. With override disabled, which is the default, FortiOS weighs HA uptime before priority when it chooses the primary, so raising a priority alone may not move the role; with override enabled, priority is weighed before uptime. FortiOS 6.4 and later also document a forced failover for testing: follow Fortinet (opens in a new tab)’s article “Force HA failover for testing and demonstrations” for your release, and treat it as state-changing.

Fortinet FortiGate (FortiOS)
CheckCommandWhat good looks like
Cluster statusget system ha statusHA health OK; both members listed with the expected primary; configuration status in-sync
Configuration checksumsdiagnose sys ha checksum clusterChecksums identical on every member, for global and for each VDOM
HA settingsshow system haMode, group, heartbeat interfaces, session pickup, monitored interfaces, override and priority as documented
Firmware on each memberget system statusSame FortiOS version on every member
Sessionsdiagnose sys session statSession count noted on the primary before the test and in line after the move

Syntax varies by platform and software version; test in a lab first.

Checklist

Failover test checklist

Get the template

Failover test plan

A Word test plan for one HA pair: scope and success criteria, prerequisites, pre-checks on both units, failover and fallback steps with state-changing steps marked, a measurement sheet, post-checks, the verdict and sign-off.

Word template (.docx) · free

  • One email with a personal download link, valid for 72 hours.
  • No attachments, no drip campaign; we may follow up once, by a person.
  • Your details are sent securely and never placed in the page URL.

With or without REAP

How REAP helps

REAP’s network posture and risk analysis checks active/standby sync on the HA pairs it can read, alongside running/startup drift and contextual CVE (opens in a new tab) exposure, with each finding tied to its evidence; in a pilot, these findings arrive in the week-3 Findings Report. Backup-path capacity and continuous failover-readiness proof are In development; backup-path capacity is delivered as a pilot finding where interface telemetry is available. REAP is read-only by default, so the failover test itself stays with your team.

CapabilityStatus
Network posture & risk analysis: active/standby sync, running/startup drift, contextual CVE (opens in a new tab) exposureAvailable
Backup-path capacity and continuous failover-readiness proofIn development

Status labels as on the product status page, September 2026 release.

Questions

Straight answers

Is suspending the active unit the same as a real failure?

No. It tests the handover: synchronization, the new active unit and the network around the pair. It does not test detection, because nothing failed. Link and power failures exercise link monitoring, path monitoring and heartbeat timers; test those separately, in a lab or a later window.

How much loss is acceptable during a failover?

Agree it with the application owners before the test and write it into the plan. Stateful failover is designed to keep established TCP sessions; new sessions and some UDP traffic can see a short gap. The number that matters is the one you measure against the criteria you agreed.

How often should we test failover?

After every software upgrade of the pair, after any change to HA settings or monitored interfaces, and on a schedule your risk owner agrees and writes down. A pair that has not been tested since commissioning should be tested first.

Should preemption be on or off?

Both are defensible. Preemption returns the active role to the preferred unit automatically, which is tidy but adds a transition nobody scheduled. Without preemption, the pair stays where the last failover left it until someone moves it. Know which one you have, test the behavior you have, and write it down.

Can we skip the maintenance window if the failover is designed to be hitless?

No. The test exists because the standby might not be ready, and if it is not, the failover causes the outage the pair was bought to prevent. Run it in an approved window.

Bring us your last P1.

Keep the root cause to yourself; in a 30-minute session we walk through how REAP would have investigated it, evidence first. The replay on your own network happens inside the proof of value.