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:
Increases throughput of elephant connections when Threat Prevention Software Blades are enabled (the Security Gateway takes less time to inspect elephant connections).
Automatically detects and dynamically allocates the CPU cores between main tasks on a Security Gateway.
Improves response time from the CoreXL FWK processes while they inspect elephant connections (the idle time of the corresponding CPU cores increases).
| 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
- Check Point Appliance models with at least 8 CPU logical cores.
For the list of supported models, see sk178070.
Firewall in User Mode (USFW). See sk167052.
Enable the CoreXL Dynamic Balancing (see Dynamic Balancing of CoreXL Instances):
dynamic_split –o enable |
Configure SecureXL to work in Kernel Mode (KPPAK) (see Configuring SecureXL).
Enable the applicable Software Blades from one of these categories:
NGFW
NGTP
NGTP with HTTPS Inspection
NGTX
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: |
- Processing incoming traffic from the network interfaces
- Securely accelerating authorized packets (when SecureXL is running)
- Distributing non-accelerated packets among FW instances
| CoreXL_FW_RESERVED | A logical sibling of a CoreXL Firewall instance (FW worker) that handles a heavy connection.
When a logical CPU core is utilized at a high level because it handles heavy connections, its logical sibling can be stopped to decrease its utilization of resources from the physical CPU core.
Chain of events:
1. CoreXL assigns a CoreXL Firewall instance to inspect an elephant connection.
2. This CoreXL Firewall instance runs on a logical CPU core of a physical CPU.
3. To improve the internal performance of the physical CPU, the CoreXL Dynamic Balancing feature can stop the CoreXL Firewall instances on the sibling logical CPU cores of the original logical CPU core. | | PPE | Parallel Processing Engine architecture.
This is the HyperFlow dynamic infrastructure that allocates CPU cores as required to increase the throughput of Elephant connections.
This is the thread that polls the interface queues and retrieves packets.
Also known as Dual Mode Dispatcher (DMD). | | PPE_MGR | Parallel Processing Engine Manager. Receives packet payload and dispatches jobs to PPE. Works on a complete physical CPU core (if there are 32 or more CPU cores). | | PPE_MGR_RESERVED | A sibling of PPE_MGR. Because PPE_MGR works on a complete physical CPU core (if there are 32 or more CPU cores), it is not possible to use other logical CPU cores on that physical CPU core. The logical siblings have the status "PPE_MGR_RESERVED" | | PPE_WT | Parallel Processing Engine Worker Thread. Receives packet handling jobs from the Parallel Processing Engine Manager. Dispatches jobs to Worker Threads (WTs.) Works on a complete physical CPU core (if there are 32 or more CPU cores). | | DPDK | Data Plane Development Kit. | | PMD | Poll Mode Driver. | | WT | Worker Thread.
The thread that executes the packet handling logic.
In plural: WTs |
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: |
Status of connection pipelining: <Status>
-Flow mode: <Mode>
-Status of PPE_MGR and PPE_WT: <Status>| |sync| Configures the synchronous flow mode. In this mode, CoreXL Firewall instances do not send jobs to the PPE. | |wake_up| Wakes up the Job Dispatcher (PPE) and Working Threads (WTs) from sleep.
The PPE gets CPU cores available for allocation. |
Monitoring in CPView
You can monitor how the HyperFlow performs on the Security Gateway.
Go to CPU > Advanced
If the tab Hyperflow appears, it means HyperFlow is enabled
Go to CPU > Advanced > Hyperflow > Overview
Examine the field PPE_MGR state
Go to CPU > Overview > Host
Examine the last section CPU (pay attention to the column Idle)
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>... |
- In CPView, go to CPU > Top-Connections > Instances
- (for example, Instances0-5) > Instance (for example, Instance5) - 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> |
- Go to Advanced > HyperFlow > Overview > PPE_0
- Click the applicable tab
- 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 |
- Go to Advanced > HyperFlow > Firewall-messages
- 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) |
Go to Advanced > HyperFlow > Jobs > PPE
Examine these sections:
- Sent to firewall (count)
- Average execution time (Cycles)
Go to Advanced > HyperFlow > Comm > PPE
Examine these sections:
- Enqueue
- Dequeue
Go to Advanced > HyperFlow > WT
Examine these rows:
- Number of WTs
- Worker ID State
Limitations
- Firewall in Kernel Mode (KFW) is not supported.
- Open Servers and Virtual Machines are not supported.
- Cloud platforms are not supported.
- HyperFlow is not supported when the Security Gateway / Cluster is configured to work as an HTTP/HTTPS Proxy.
- When an elephant connection triggers the HyperFlow, the outputs of the "
top" and "ps" commands may show that the HyperFlow user space processes consume some CPU cores at 99-100%.
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.
- When the HyperFlow feature is enabled, the speed of an elephant flow may not increase in these cases:
- This is a complex connection that requires special parsers – FTP, SCP, VoIP
- This connection undergoes the Content Awareness or a Data Loss Prevention policy
- This connection has dynamic content and goes through the Pattern Matcher 1st tier
- Strict Hold is enabled (the
$FWDIR/conf/malware_configfile on the Security Gateway contains "strict_hold_enable=1") - This connection is HTTPS and the HTTPS Inspection is disabled
- When you enable only the Firewall Software Blade in the Security Gateway object, the HyperFlow feature does not improve the performance.
Troubleshooting
- Log files (the main file is rotated every 10 megabytes):
$FWDIR/log/connection_pipelining.elg$FWDIR/log/dmd.elg$FWDIR/log/dmd_controller.elg$FWDIR/log/dsd.elg
- Internal configuration files (you must not edit these files):
$FWDIR/conf/connection_pipelining.conf$FWDIR/conf/connection_pipelining_params.conf
For additional information, see sk178070.