PFQ – Functional Network Framework For Multi-Core Architectures

PFQ - Functional Network Framework For Multi-Core Architectures

PFQ is a purposeful framework designed for the Linux working system constructed for environment friendly packets seize/transmission (10G, 40G and past), in-kernel purposeful processing, kernel-bypass and packets steering throughout teams of sockets/finish-factors.

It is extremely optimized for multi-core structure, in addition to for community units geared up with a number of {hardware} queues. Compliant with any NIC, it offers a script that generates accelerated community machine drivers ranging from the supply code.

PFQ permits the event of excessive-efficiency community functions, and it’s shipped with a customized model of libpcap that speed up and parallelize legacy functions. Besides, a pure purposeful language designed for early levels in-kernel packet processing is included: pfq-lang.

Pfq-Lang is impressed by Haskell and is meant to outline functions that run on prime of community machine drivers. Through pfq-lang it’s doable to construct environment friendly bridges, port mirrors, easy firewalls, community balancers and so forth.

The framework consists of the supply code of the PFQ kernel module, consumer-area 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 instruments.



  • “PFQ: a Novel Engine for Multi-Gigabit Packet Capturing With Multi-Core Commodity Hardware”: Best-Paper-Award at PAM2012, paper avaiable from here
  • “A Purely Functional Approach to Packet Processing”: ANCS 2014 Conference (October 2014, Marina del Rey)
  • “Network Traffic Processing with PFQ”: JSAC-SI-MT/IEEE journal Special Issue on Measuring and Troubleshooting the Internet (March 2016)
  • “Enabling Packet Fan–Out in the libpcap Library for Parallel Traffic Processing”: Network Traffic Measurement and Analysis Conference (TMA 2017)
  • “A Pipeline Functional Language for Stateful Packet Processing”: IEEE International Workshop on NEtwork Accelerated FunctIOns (NEAF-IO ’17)
  • “The Acceleration of OfSoftSwitch”: IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN ’17)

Invited talks

  • “Functional Network Programming” at Tyrrhenian International Workshop on Digital Communication – (Sep. 2016)
  • “Software Accelerations for Network Applications” at NetV IRISA / Technicolor Workshop on Network Virtualization (Feb. 2017)

Nicola Bonelli [email protected]

Contributors (in chronological order)
Andrea Di Pietro [email protected]
Loris Gazzarrini [email protected]
Gregorio Procissi [email protected]
Giacomo Volpi [email protected]
Luca Abeni [email protected]
Tolysz [email protected]
LSB [email protected]
Andrey Korolyov [email protected]
MrClick [email protected]
Paul Emmerich [email protected]
Bach Le [email protected]
Marian Jancar [email protected]
nizq [email protected]
Giuseppe Sucameli [email protected]
Sergio Borghese [email protected]
Fabio Del Vigna [email protected]

PFQ residence-web page is


Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.