{"id":33013418,"url":"https://github.com/pfq/PFQ","last_synced_at":"2025-11-18T11:03:00.612Z","repository":{"id":1672796,"uuid":"2399734","full_name":"pfq/PFQ","owner":"pfq","description":"Functional Network Framework for Multi-Core Architectures","archived":false,"fork":false,"pushed_at":"2019-05-02T12:47:26.000Z","size":25566,"stargazers_count":523,"open_issues_count":0,"forks_count":71,"subscribers_count":50,"default_branch":"master","last_synced_at":"2024-06-21T20:06:03.880Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pfq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-09-16T14:26:51.000Z","updated_at":"2024-04-10T15:09:11.000Z","dependencies_parsed_at":"2022-09-07T03:21:28.835Z","dependency_job_id":null,"html_url":"https://github.com/pfq/PFQ","commit_stats":null,"previous_names":[],"tags_count":146,"template":false,"template_full_name":null,"purl":"pkg:github/pfq/PFQ","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfq%2FPFQ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfq%2FPFQ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfq%2FPFQ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfq%2FPFQ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pfq","download_url":"https://codeload.github.com/pfq/PFQ/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfq%2FPFQ/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285051560,"owners_count":27106642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-18T02:00:05.759Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-13T17:00:33.178Z","updated_at":"2025-11-18T11:03:00.606Z","avatar_url":"https://github.com/pfq.png","language":"C","readme":"PFQ v6.2 \n========\n\n[![Stability](https://img.shields.io/badge/stability-experimental-red.svg)](http://github.com/badges/stability-badges)\n[![Gitter](https://badges.gitter.im/PFQ/pfq.svg)](https://gitter.im/PFQ/pfq?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\nIntroduction\n------------\n\nPFQ is a functional framework designed for the Linux operating system built for efficient \npackets capture/transmission (10G, 40G and beyond), in-kernel functional processing, \nkernel-bypass and packets steering across groups of sockets/end-points.\n\nIt is highly optimized for multi-core architecture, as well as for network devices \nequipped with multiple hardware queues. Compliant with any NIC, it provides a script \nthat generates accelerated network device drivers starting from the source code.\n\nPFQ enables the development of high-performance network applications, and it is shipped \nwith a custom version of libpcap that accelerate and parallelize legacy applications. \nBesides, a pure functional language designed for early stages in-kernel packet processing \nis included: pfq-lang.\n\nPfq-Lang is inspired by Haskell and is intended to define applications that run on top \nof network device drivers. Through pfq-lang it is possible to build efficient bridges, \nport mirrors, simple firewalls, network balancers and so forth.\n\nThe framework includes the source code of the PFQ kernel module, user-space libraries \nfor C, C++11-14, Haskell language, an accelerated pcap library, an implementation of \npfq-lang as eDSL for C++/Haskell, an experimental pfq-lang compiler and a set of diagnostic tools.\n\n\nFeatures\n--------\n\n* Data-path with full lock-free architecture.\n* Preallocated pools of socket buffers.\n* Compliant with a plethora of network devices drivers.\n* Rx and Tx line-rate on 10-Gbit links (14,8 Mpps), tested with Intel ixgbe _vanilla_ drivers.\n* Transparent support of kernel threads for asynchronous packets transmission.\n* Transmission with active timestamping.\n* Groups of sockets which enable concurrent monitoring of multiple multi-threaded applications.\n* Per-group packet steering through randomized hashing or deterministic classification.\n* Per-group Berkeley and VLAN filters.\n* User-space libraries for C, C++11-14 and Haskell language.\n* Functional engine for in-kernel packet processing with **pfq-lang**.\n* pfq-lang eDLS for C++11-14 and Haskell language.\n* **pfq-lang** compiler used to parse and compile pfq-lang programs.\n* Accelerated pcap library for legacy applications (line-speed tested with [captop][2]).\n* I/O user\u003c-\u003ekernel memory-mapped communications allocated on top of HugePages.\n* **pfqd** daemon used to configure and parallelize (pcap) legacy applications.\n* **pfq-omatic** script that automatically accelerates vanilla drivers.\n\n\nPublications\n------------\n\n* _\"PFQ: a Novel Engine for Multi-Gigabit Packet Capturing With Multi-Core Commodity Hardware\"_: Best-Paper-Award at [PAM2012](https://link.springer.com/chapter/10.1007/978-3-642-28537-0_7), paper avaiable from [here](https://pdfs.semanticscholar.org/d0a9/086aff225ed5a0ff0855216faee4072973e8.pdf)\n* _\"A Purely Functional Approach to Packet Processing\"_: ANCS 2014 Conference (October 2014, Marina del Rey) \n* _\"Network Traffic Processing with PFQ\"_: JSAC-SI-MT/IEEE journal Special Issue on Measuring and Troubleshooting the Internet (March 2016) \n* _\"Enabling Packet Fan--Out in the libpcap Library for Parallel Traffic Processing\"_: Network Traffic Measurement and Analysis Conference (TMA 2017)\n* _\"A Pipeline Functional Language for Stateful Packet Processing\"_: IEEE International Workshop on NEtwork Accelerated FunctIOns (NEAF-IO '17)\n* _\"The Acceleration of OfSoftSwitch\"_: IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN '17) \n\nInvited talks\n-------------\n\n* _\"Functional Network Programming\"_ at Tyrrhenian International Workshop on Digital Communication - (Sep. 2016)\n* _\"Software Accelerations for Network Applications\"_ at NetV IRISA / Technicolor Workshop on Network Virtualization (Feb. 2017)\n\nLicenses\n--------\n\nThe PFQ kernel module is distributed with GPL license. User-space libraries and tools, instead, are distributed with a dual license scheme, \nso they are available either as GPL or with a Commercial License. For more information contact the author.\n\nAuthor\n------\n\nNicola Bonelli \u003cnicola@pfq.io\u003e  \n\n\nContributors (in chronological order)\n-------------------------------------\n\nAndrea Di Pietro \u003candrea.dipietro@for.unipi.it\u003e  \n\nLoris Gazzarrini \u003cloris.gazzarrini@iet.unipi.it\u003e  \n\nGregorio Procissi \u003cg.procissi@iet.unipi.it\u003e\n\nGiacomo Volpi \u003cvolpi.gia@gmail.com\u003e\n\nLuca Abeni \u003cabeni@dit.unitn.it\u003e\n\nTolysz \u003ctolysz@gmail.com\u003e\n\nLSB \u003cleebutterman@gmail.com\u003e\n\nAndrey Korolyov \u003candrey@xdel.ru\u003e\n\nMrClick \u003cvalerio.click@gmx.com\u003e\n\nPaul Emmerich \u003cemmericp@net.in.tum.de\u003e\n\nBach Le \u003cbach@bullno1.com\u003e\n\nMarian Jancar \u003cjancar.marian@gmail.com\u003e\n\nnizq \u003cni.zhiqiang@gmail.com\u003e\n\nGiuseppe Sucameli \u003cbrush.tyler@gmail.com\u003e\n\nSergio Borghese \u003cs.borghese@netresults.it\u003e\n\nFabio Del Vigna \u003cfabio.delvigna@larthia.com\u003e\n\n\nHomePages\n---------\n\nPFQ home-page is [www.pfq.io][1]\n\n\n[1]: http://www.pfq.io\n[2]: https://github.com/awgn/captop\n","funding_links":[],"categories":["Network"],"sub_categories":["Fast Packet Processing"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfq%2FPFQ","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpfq%2FPFQ","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfq%2FPFQ/lists"}