A functional network framework for Linux enabling high-performance packet capture, transmission, and in-kernel processing optimized for multi-core systems.
PFQ is a functional network framework for Linux that enables high-performance packet capture, transmission, and in-kernel processing at multi-gigabit speeds. It solves the challenge of efficient network traffic handling on multi-core systems by providing lock-free architectures, kernel-bypass techniques, and a functional language for early-stage packet processing.
Network engineers, researchers, and developers building high-performance network applications, monitoring tools, or custom packet processors on Linux, especially those working with 10G/40G+ links and multi-core hardware.
Developers choose PFQ for its unique combination of functional programming in the kernel (via pfq-lang), lock-free multi-core optimization, and compatibility with existing NIC drivers, allowing acceleration of both new and legacy applications without hardware modifications.
Functional Network Framework for Multi-Core Architectures
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Full lock-free architecture achieves Rx/Tx line-rate on 10-Gbit links (14.8 Mpps) with Intel ixgbe drivers, ensuring efficient multi-core concurrency.
Works with a plethora of network device drivers and includes pfq-omatic script to accelerate vanilla drivers, adapting to diverse hardware setups.
pfq-lang, a Haskell-inspired language, enables building bridges, mirrors, and firewalls directly in the kernel for predictable packet handling.
Custom libpcap library accelerates existing pcap-based applications to line-speed, as tested with tools like captop.
Highly optimized for multi-core architectures with per-group packet steering and filtering, supporting concurrent monitoring and processing.
Project is marked as experimental, indicating potential instability and unsuitability for production deployments with frequent changes.
Requires installing a kernel module, which involves complex setup, root privileges, and compatibility challenges with different Linux kernels.
pfq-lang is Haskell-inspired, adding significant overhead for developers unfamiliar with functional programming paradigms.
Smaller community compared to alternatives like DPDK, with reliance on Gitter chat for support and dual licensing that may restrict commercial use.