FastClick - A faster version the Click Modular Router featuring batching, advanced multi-processing and improved Netmap and DPDK support (ANCS'15). Check the metron branch for Metron specificities (NSDI'18).
Clone or download
Permalink
Failed to load latest commit information.
apps Clicky: compile with C++11. Aug 1, 2016
bsdmodule Handler: Rename the flags, and get rid of Handler::DEPRECATED. Mar 11, 2015
conf Set default values for sample config files Nov 16, 2018
doc Add link to code in documentation, and support for batching Oct 3, 2018
drivers Add polling patch for e1000-7.6.15.5 driver. Feb 28, 2010
elements Fix CPUSwitch thread informations Nov 15, 2018
etc Repair click-devirtualize and click-makepackage Sep 3, 2018
exopc More modern configury and directory rearrangement. Dec 3, 2014
include Packet pool : check for DPDK size Nov 16, 2018
lib dpdk: Pool warning shows a number hint Nov 16, 2018
linuxmodule proclikefs: remove unused symbol Jul 16, 2017
m4 Replaced Intel DPDK with DPDK Feb 3, 2018
minios More modern configury and directory rearrangement. Dec 3, 2014
ns Ignore ns build files Jul 21, 2016
share/click Repair click-devirtualize and click-makepackage Sep 3, 2018
test Use Click parser and fix test Sep 27, 2018
tools Repair click-devirtualize and click-makepackage Sep 3, 2018
userlevel Fixes for DPDK 18.11 Nov 16, 2018
.gitignore Ignore vim history Oct 3, 2018
.gitlab-ci.yml Do not execute DPDK test on travis Mar 9, 2018
.travis.yml Travis : enable tunneling Oct 17, 2018
AUTHORS Minor authors updates Sep 28, 2011
DISTFILES Update DISTFILES for libdivide.h. Dec 20, 2016
FAQ New mailing list. Jul 29, 2014
INSTALL.md Forgotten replacements for Intel DPDK Feb 3, 2018
LICENSE Markdown for top-level documentation. Feb 17, 2017
Makefile.in Some root-requiring tests work when `sudo -n` works. Oct 15, 2015
NEWS Prepare for 2.1 release. Jan 17, 2013
NODIST Add more files to the distribution. Jul 17, 2011
README.md Reference wiki and push to the wiki dev info Sep 14, 2018
README.original.md Merge remote-tracking branch 'kohler_click/master' Feb 23, 2017
aclocal.m4 update makefile boilerplate, including using the true aclocal May 12, 2006
click-buildtool.in Repair click-devirtualize and click-makepackage Sep 3, 2018
click-compile.in Repair click-devirtualize and click-makepackage Sep 3, 2018
click-mkelemmap Add link to code in documentation, and support for batching Oct 3, 2018
click.spec We no longer need $infodir. Nov 9, 2011
config-bsdmodule.h.in Enabled assertions support for bsdmodule. Jul 12, 2011
config-linuxmodule.h.in fixincludes: Don't change it to atomic_and_value. Jul 18, 2016
config-minios.h.in minios: Compile with HAVE_PORTABLE_LLRPC May 27, 2014
config-ns.h.in Timestamp closure. Aug 25, 2008
config-userlevel.h.in Use aligned allocation if supported Apr 11, 2018
config.guess Yet newer config.sub and config.guess. Sep 21, 2011
config.h.in lib/packet: add force-expensive configure option Nov 13, 2018
config.mk.in Build process: Support building packages with DESTDIR. Nov 9, 2011
config.sub Yet newer config.sub and config.guess. Sep 21, 2011
configure lib/packet: add force-expensive configure option Nov 13, 2018
configure.in lib/packet: add force-expensive configure option Nov 13, 2018
install-sh update makefile boilerplate, including using the true aclocal May 12, 2006
installch.in README updates; add install-only-if-changed support, even when instal… May 19, 2006
missing update makefile boilerplate, including using the true aclocal May 12, 2006
mkinstalldirs update makefile boilerplate, including using the true aclocal May 12, 2006
pathvars.h.in Minios nits. Jun 3, 2014

README.md

FastClick

This is an extended version of the Click Modular Router featuring an improved Netmap support and a new DPDK support. It was the result of our ANCS paper available at http://hdl.handle.net/2268/181954, but received multiple contributions and improvements since then.

The Wiki provides documentation about the elements and how to use some FastClick features such as batching.

Contribution

FastClick also aims at keeping a more up-to-date fork and welcomes contributions from anyone.

Regular contributors will be given direct access to the repository. The general rule of thumb to accept a pull request is to involve two different entities. I.e. someone for company A make a PR and someone from another company/research unit merges it.

Examples

See conf/fastclick/README.md The wiki provides more information about the I/O frameworks you should use for high speed, such as DPDK and Netmap, and how to configure them.

Differences with the ANCS paper

For simplicity, we reference all input element as "FromDevice" and output element as "ToDevice". However in practice our I/O elements are FromNetmapDevice/ToNetmapDevice and FromDPDKDevice/ToDPDKDevice. They both inherit from QueueDevice, which is a generic abstract element to implement a device which supports multiple queues (or in a more generic way I/O through multiple different threads).

Thread vector and bit vector designate the same thing.

The --enable-dpdk-packet flag allows to use the metadata of the DPDK packets and use the click Packet class only as a wrapper, as such the Click buffer and the Click pool is completly unused. However we did not spoke of that feature in the paper as this doesn't improve performance. DPDK metadata is written in the beginning of the packet buffer. And writing the huge Click annotation space (~164 bytes) leads to more cache miss than with the Click pool where a few Click Packet descriptors are re-used to "link" to differents DPDK buffers using the pool recycling mechanism. Even when reducing the annotation to a minimal size (dpdk metadata + next + prev + transport header + ...) this still force us to fetch a new cacheline.

Getting help

Use the github issue tracker (https://github.com/tbarbette/fastclick/issues) or contact barbette at kth.se if you encounter any problem.

Please do not ask FastClick-related problems on the vanilla Click mailing list. If you are sure that your problem is Click related, post it on vanilla Click's issue tracker (https://github.com/kohler/click/issues).

The original Click readme is available in the README.original file.