Home

Awesome

PFQ v6.2

Stability Gitter

Introduction

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.

Features

Publications

Invited talks

Licenses

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

Author

Nicola Bonelli nicola@pfq.io

Contributors (in chronological order)

Andrea Di Pietro andrea.dipietro@for.unipi.it

Loris Gazzarrini loris.gazzarrini@iet.unipi.it

Gregorio Procissi g.procissi@iet.unipi.it

Giacomo Volpi volpi.gia@gmail.com

Luca Abeni abeni@dit.unitn.it

Tolysz tolysz@gmail.com

LSB leebutterman@gmail.com

Andrey Korolyov andrey@xdel.ru

MrClick valerio.click@gmx.com

Paul Emmerich emmericp@net.in.tum.de

Bach Le bach@bullno1.com

Marian Jancar jancar.marian@gmail.com

nizq ni.zhiqiang@gmail.com

Giuseppe Sucameli brush.tyler@gmail.com

Sergio Borghese s.borghese@netresults.it

Fabio Del Vigna fabio.delvigna@larthia.com

HomePages

PFQ home-page is www.pfq.io