HyperFlow

HyperFlow

Overview

Elephant flows are large (in total number of bytes) continuous connections that the TCP or UDP establishes.

For example, a download of a large file (such as a Linux ISO file) over the HTTP, HTTPS, FTP, or NFS protocol.

These large continuous connections consume the network capacity significantly in comparison to other types of data sessions.

Without the HyperFlow feature, a Security Gateway uses only one CPU core (one CoreXLFirewall instance) to inspect one elephant connection. In addition, traffic throughput decreases gradually as the CPU utilization increases on the Security Gateway.

The HyperFlow feature on Security Gateways R81.20 and higher handles such elephant connections on more than one CPU core in parallel.

The HyperFlow feature breaks the whole inspection task into smaller tasks and dispatches these smaller tasks to the available CPU cores:

The tasks without the HyperFlow The tasks with the HyperFlow
1. Packet retrieval

2. Inbound Streaming

3. Protocol parsers

4. Context Management Interface / Infrastructure (CMI)

5. Pattern Match (PM) and Hash (MD5, SHA)

6. Software Blade logic

7. Outbound Streaming

8. Routing

9. Packet transmission
1. Inbound processing in CoreXLFirewall:
1. Packet retrieval

2. Inbound Streaming

3. Protocol parsers

4. Context Management Interface / Infrastructure (CMI)
2. Internal PPE processing (on many CPU cores):
1. Pattern Match (PM) and Hash (MD5, SHA)

2. Packet transmission
3. Outbound processing in CoreXLFirewall:
1. Software Blade logic

2. Outbound Streaming

3. Routing

As a result, the HyperFlow feature:

Important:
- By default, the HyperFlow feature is enabled on Check Point Appliances that meet the requirements.

- By design, the HyperFlow feature works only in the User Space Firewall (USFW).

- By design, the HyperFlow feature engages only when needed, and when the total CPU load allows it.

The total throughput has priority over elephant connections.
Notes:
- By design, a manual allocation of CPU cores is not necessary. Therefore, it is not possible.

You can configure thresholds to control when HyperFlow is active or passive.

- By default, HyperFlow works in the standby mode.

HyperFlow is triggered (becomes active) when a heavy connection is detected.

HyperFlow becomes passive when the heavy connection is closed.

For additional information, see sk178070.

Requirements

  1. Check Point Appliance models with at least 8 CPU logical cores.

For the list of supported models, see sk178070.

  1. Firewall in User Mode (USFW). See sk167052.

  2. Enable the CoreXL Dynamic Balancing (see Dynamic Balancing of CoreXL Instances):

dynamic_split –o enable
  1. Configure SecureXL to work in Kernel Mode (KPPAK) (see Configuring SecureXL).

  2. Enable the applicable Software Blades from one of these categories:

Glossary

Term Description
CoreXL_FW A CoreXL Firewall instance that handles the traffic concurrently.
Each CoreXL Firewall instance is independent and replicated multiple times (see CoreXL).
CoreXL_SND A CoreXL Secure Network Distributor (SND) responsible for:

Syntax

connection_pipelining
advanced
allow_accelerated_pipeline
async
default
prevent_accelerated_pipeline
sleep
sync
wake_up
on
off
heaviest_conn
pipelined
status

Parameters

Parameter Description
No Parameters Shows the built-in help.
connection_pipelining Must enter this command only on Security Gateways other than Scalable Platforms.
g_connection_pipelining Must enter this command only on Scalable Platforms.
advanced Shows the advanced options.
allow_accelerated_pipeline Allows new connections to be opened as accelerated pipeline connections - the Security Gateway uses the new asynchronous parsers for connections.
This is the default.
async Configures the asynchronous flow mode (this is the default).
In this mode, CoreXL Firewall instances send jobs to the PPE.
default Restores default settings
heaviest_conn Shows the statistics for the heaviest connection with the maximum duration (number of packets and bytes).
off Disables the feature.
on Enables the feature.
This is the default (on Check Point Appliances that meet the requirements).
pipelined Shows the accelerated elephant connections in the pipeline.
prevent_accelerated_pipeline Prevents new connections from being opened as accelerated pipeline connections.
In this mode, the Security Gateway uses the legacy parsers for connections.
sleep Configures the Job Dispatcher (PPE) and Working Threads (WTs) to sleep.
status Shows the status and configuration of the feature.
The output shows these lines with the applicable values:

Monitoring in CPView

You can monitor how the HyperFlow performs on the Security Gateway.

  1. Go to CPU > Advanced

  2. If the tab Hyperflow appears, it means HyperFlow is enabled

  3. Go to CPU > Advanced > Hyperflow > Overview

  4. Examine the field PPE_MGR state

  5. Go to CPU > Overview > Host

  6. Examine the last section CPU (pay attention to the column Idle)

  7. On the Security Gateway, examine the elephant connections in the past 24 hours and which CoreXL Firewall instance inspects them (see the "[fw_<Number>]" in the beginning of each line):

fw ctl multik print_heavy_conn

Example:

;[fw_5]: Conn: 192.168.10.20:60478 -> 172.30.40.50:80 IPP: 6; Instance load: 63%; Connection instance load: 99%; ...<truncated>...
  1. In CPView, go to CPU > Top-Connections > Instances- (for example, Instances0-5) > Instance (for example, Instance5)
  2. In the last section Top Connections, examine the columns "% out of CPU" and "% out of WT CPU"

Example (this is only the applicable part of the output):

<br>Top Connections<br> <br>Connection Protocol % out of CPU % out of WT CPU<br>192.168.10.20:60478 -> 172.30.40.50:80 TCP:http 70.81% 48.97%<br>
  1. Go to Advanced > HyperFlow > Overview > PPE_0
  2. Click the applicable tab
  3. Examine these sections:
Section Gauge Description
PPE overview PPE state Shows the state of the feature - Active or Asleep
Pipeline status Free The number of free slots in the pipeline (maximum is 320)
Active Slots that PPE is currently using
Job pending Slots whose execution depends on another job
Slot pending Jobs whose execution depends on an available slot in the pipeline
Overload indicators No pipeline entry PPE_MGR had no free slots in the pipeline
WT slot unavailable The WTs have no available slots
  1. Go to Advanced > HyperFlow > Firewall-messages
  2. Examine these sections:
Section Gauge Description
Sessions and data New session Number of new opened sessions
Update session Number of updated session (for example, because of policy installation)
End session Number of sessions that ended
Current session Number of currently opened sessions
Data Number of received data buffers
Errors Various internal PPE errors
Messages received in a single read loop (Histogram) In each loop, the PPE_MGR can read up to 32 items from the receiving queue.
This section shows a histogram of the times the PPE_MGR read items from the queue and how many were "waiting" in the queue (up to 32)
  1. Go to Advanced > HyperFlow > Jobs > PPE

  2. Examine these sections:

    • Sent to firewall (count)
    • Average execution time (Cycles)
  3. Go to Advanced > HyperFlow > Comm > PPE

  4. Examine these sections:

    • Enqueue
    • Dequeue
  5. Go to Advanced > HyperFlow > WT

  6. Examine these rows:

    • Number of WTs
    • Worker ID State

Limitations

This happens because HyperFlow is constantly polling its queues to handle the incoming jobs. After the elephant connection closes, the output of these commands shows that the user space "us" consumption goes back to regular levels because HyperFlow stops processing the jobs.

To see the actual load on the CPU, use CPView (CPU > Overview > Host), SNMP, or SmartConsole.

This does not trigger inspection bypass because of a high CPU load.

Troubleshooting

For additional information, see sk178070.