PFQ : Functional Network Framework for Multi-Core Architectures

PFQ is a functional framework designed for the Linux operating system built for efficient packets capture/transmission (10G, 40G and beyond), in-kernel functional processing, kernel-bypass and packets steering across groups of sockets/end-points.

It is highly optimized for multi-core architecture, as well as for network devices equipped with multiple hardware queues.

Compliant with any NIC, it provides a script that generates accelerated network device drivers starting from the source code.

PFQ enables the development of high-performance network applications, and it is shipped with a custom version of libpcap that accelerate and parallelize legacy applications.

Besides, a pure functional language designed for early stages in-kernel packet processing is included: pfq-lang.

Pfq-Lang is inspired by Haskell and is intended to define applications that run on top of network device drivers. Through pfq-lang it is possible to build efficient bridges, port mirrors, simple firewalls, network balancers and so forth.

The framework includes the source code of the PFQ kernel module, user-space libraries for C, C++11-14, Haskell language, an accelerated pcap library, an implementation of pfq-lang as eDSL for C++/Haskell, an experimental pfq-lang compiler and a set of diagnostic tools.

Also Read – Vuls : Vulnerability Scanner for Linux/FreeBSD, Agentless, Written in Go

Features

  • Data-path with full lock-free architecture.
  • Preallocated pools of socket buffers.
  • Compliant with a plethora of network devices drivers.
  • Rx and Tx line-rate on 10-Gbit links (14,8 Mpps), tested with Intel ixgbe vanilla drivers.
  • Transparent support of kernel threads for asynchronous packets transmission.
  • Transmission with active timestamping.
  • Groups of sockets which enable concurrent monitoring of multiple multi-threaded applications.
  • Per-group packet steering through randomized hashing or deterministic classification.
  • Per-group Berkeley and VLAN filters.
  • User-space libraries for C, C++11-14 and Haskell language.
  • Functional engine for in-kernel packet processing with pfq-lang.
  • pfq-lang eDLS for C++11-14 and Haskell language.
  • pfq-lang compiler used to parse and compile pfq-lang programs.
  • Accelerated pcap library for legacy applications (line-speed tested with captop).
  • I/O user<->kernel memory-mapped communications allocated on top of HugePages.
  • pfqd daemon used to configure and parallelize (pcap) legacy applications.
  • pfq-omatic script that automatically accelerates vanilla drivers.

Credit : Nicola Bonelli

R K

Recent Posts

Kali Linux 2024.4 Released, What’s New?

Kali Linux 2024.4, the final release of 2024, brings a wide range of updates and…

20 hours ago

Lifetime-Amsi-EtwPatch : Disabling PowerShell’s AMSI And ETW Protections

This Go program applies a lifetime patch to PowerShell to disable ETW (Event Tracing for…

20 hours ago

GPOHunter – Active Directory Group Policy Security Analyzer

GPOHunter is a comprehensive tool designed to analyze and identify security misconfigurations in Active Directory…

3 days ago

2024 MITRE ATT&CK Evaluation Results – Cynet Became a Leader With 100% Detection & Protection

Across small-to-medium enterprises (SMEs) and managed service providers (MSPs), the top priority for cybersecurity leaders…

5 days ago

SecHub : Streamlining Security Across Software Development Lifecycles

The free and open-source security platform SecHub, provides a central API to test software with…

1 week ago

Hawker : The Comprehensive OSINT Toolkit For Cybersecurity Professionals

Don't worry if there are any bugs in the tool, we will try to fix…

1 week ago