Packet processing,
at line rate.
FastClick extends the Click Modular Router with batching, native multi-queue DPDK I/O and a flow subsystem. Build data planes by wiring small elements together.
Batching
Elements exchange lists of packets instead of single packets, amortising per-packet costs across the whole graph.
Learn more →High-speed I/O
Native multi-queue DPDK and Netmap, with RSS and thread vectors. No need to duplicate elements per core.
Learn more →Flows
MiddleClick adds per-flow state on top of packets for NAT, load balancing, DPI and TCP reordering.
Learn more →Quick start
Install DPDK and dependencies with ./deps.sh, then build with DPDK support:
./configure CFLAGS="-O3" CXXFLAGS="-std=c++11 -O3" \
--enable-dpdk --enable-intel-cpu --disable-dynamic-linking \
--enable-bound-port-transfer --enable-flow \
--disable-task-stats --disable-cpu-load
make
Then describe a pipeline in the Click language and run it:
FromDPDKDevice(0) -> Counter -> ToDPDKDevice(1);
Next: the tutorial, high-speed I/O setup, Docker, and how FastClick differs from Click.
Citing
If you use FastClick in academic work, please cite our ANCS 2015 paper. Cite RSS++, PacketMill or MiddleClick too when you build on them (details).
@inproceedings{barbette2015fast,
title = {Fast userspace packet processing},
author = {Barbette, Tom and Soldani, Cyril and Mathy, Laurent},
booktitle = {ANCS},
pages = {5--16},
year = {2015},
doi = {10.1109/ANCS.2015.7110116}
}
Questions? Use the issue tracker or Discussions.