Session failover (session-pickup)
Session failover means that after a failover, communication sessions resume on the new primary FortiGate-6000 with minimal or no interruption. Two categories of sessions need to be resumed after a failover:
- Sessions passing through the cluster
- Sessions terminated by the cluster
If sessions pickup is enabled, during cluster operation the primary FortiGate-6000 informs the backup FortiGate-6000 of changes to the primary FortiGate-6000 connection and state tables for TCP and UDP sessions passing through the cluster, keeping the backup FortiGate-6000 up-to-date with the traffic currently being processed by the cluster.
After a failover, the new primary FortiGate-6000 recognizes open sessions that were being handled by the cluster. The sessions continue to be processed by the new primary FortiGate-6000 and are handled according to their last known state.
|Session-pickup has some limitations. For example, the FGCP does not support session failover for sessions being scanned by proxy-based security profiles. Session failover is supported for sessions being scanned by flow-based security profiles; however, flow-based sessions that fail over are not inspected after they fail over.|
Sessions terminated by the cluster include management sessions (such as HTTPS connections to the FortiGate GUI or SSH connection to the CLI as well as SNMP and logging, and so on). Also included in this category are IPsec and SSL VPN sessions terminated by the cluster and explicit proxy sessions. In general, whether or not session-pickup is enabled, these sessions do not failover and have to be restarted.
Enabling session pickup for TCP SCTP and connectionless sessions
To enable session synchronization for TCP and SCTP sessions, enter:
config system ha
set session-pickup enable
Turning on session synchronization for TCP and SCTP sessions by enabling
session-pickup also turns on session synchronization for connectionless sessions, such as ICMP and UDP, by enabling
session-pickup-connectionless. You can now choose to reduce processing overhead by not synchronizing connectionless sessions if you don't need to. If you want to synchronize connectionless sessions you can enable
session-pickup is enabled, sessions in the primary FortiGate-6000 TCP and connectionless session tables are synchronized to the backup FortiGate-6000. As soon as a new session is added to the primary FortiGate-6000 session table, that session is synchronized to the backup FortiGate-6000. This synchronization happens as quickly as possible to keep the session tables synchronized.
If the primary FortiGate-6000 fails, the new primary FortiGate-6000 uses its synchronized session tables to resume all TCP and connectionless sessions that were being processed by the former primary FortiGate-6000 with only minimal interruption. Under ideal conditions, all sessions should be resumed. This is not guaranteed though and under less than ideal conditions some sessions may need to be restarted.
If session pickup is disabled
If you disable session pickup, the FortiGate-6000 HA cluster does not keep track of sessions and after a failover, active sessions have to be restarted or resumed. Most session can be resumed as a normal result of how TCP and UDP resumes communication after any routine network interruption.
|The session-pickup setting does not affect session failover for sessions terminated by the cluster.|
If you do not require session failover protection, leaving session pickup disabled may reduce CPU usage and reduce HA heartbeat network bandwidth usage. Also, if your FortiGate-6000 HA cluster is mainly being used for traffic that is not synchronized (for example, for proxy-based security profile processing) enabling session pickup is not recommended since most sessions will not be failed over anyway.
Reducing the number of sessions that are synchronized
If session pickup is enabled, as soon as new sessions are added to the primary unit session table they are synchronized to the other cluster units. Enable the session-pickup-delay CLI option to reduce the number of TCP sessions that are synchronized by synchronizing TCP sessions only if they remain active for more than 30 seconds. Enabling this option could greatly reduce the number of sessions that are synchronized if a cluster typically processes very many short duration sessions, which is typical of most HTTP traffic for example.
Use the following command to enable a 30 second session pickup delay:
config system ha
set session-pickup-delay enable
Enabling session pickup delay means that if a failover occurs more sessions may not be resumed after a failover. In most cases short duration sessions can be restarted with only a minor traffic interruption. However, if you notice too many sessions not resuming after a failover you might want to disable this setting.
session-pickup-delay option applies to TCP sessions only and does not apply to connectionless and SCTP sessions.