PFQ

PFQ is a functional networking framework designed for the Linux operating system that allows efficient packets capture/transmission (10G and beyond), in-kernel functional processing and packets steering across sockets/end-points.
PFQ logo

PFQ v6.2


Introduction

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


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.
  • 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 eDSL for C++11-14 and Haskell language.
  • Accelerated pcap library for legacy applications.

Publications

  • "PFQ: a Novel Engine for Multi-Gigabit Packet Capturing With Multi-Core Commodity Hardware" (Best-Paper-Award at PAM2012).
  • "A Purely Functional Approach to Packet Processing" (ANCS 2014 Conference).
  • "Network Traffic Processing with PFQ" (JSAC-SI-MT/IEEE journal Special Issue on Measuring and Troubleshooting the Internet).

Licenses

The PFQ kernel module is distributed with GPL license. User-space libraries and tools are distributed with a dual license scheme, so they are available either as GPL or with a Commercial License.


Author

Nicola Bonelli


Contributors

Andrea Di Pietro Loris Gazzarrini Gregorio Procissi Giacomo Volpi Luca Abeni Tolysz LSB Andrey Korolyov MrClick Paul Emmerich Bach Le Marian Jancar nizq Giuseppe Sucameli Sergio Borghese Fabio Del Vigna





> Visit PFQ Website <