MiddleClick brought in (Fast)Click the ability to understand flows and sessions on top of packets. MiddleClick allows each elements to require some "session space", such as an Object for every different 4-tuple. A unique element will then collect the space needed accross parallel path, compute a minimal session space and pre-allocate enough bytes for every elements along the path. It will also use a new context definition to minimize traffic class classification along paths, and enable implicit classification, removing the need to add Classifier everywhere. MiddleClick also brought in the ability to modify TCP stream on the flight using this new context system. Check the paper for more details.
Compile MiddleClick with:
./configure --enable-multithread --disable-linuxmodule --enable-intel-cpu --enable-user-multithread --verbose CFLAGS="-g -O3" CXXFLAGS="-g -std=gnu++11 -O3" --disable-dynamic-linking --enable-poll --enable-bound-port-transfer --enable-dpdk --enable-batch --with-netmap=no --enable-zerocopy --disable-dpdk-pool --disable-dpdk-packet --enable-user-timestamp --enable-flow --enable-ctx
Only the last 2 options are specific to MiddleClick, to enable the flow subsystem and the context subsystem. As MiddleClick use some timers, the --enable-user-timestamp option is a good idea too.
You may find sample configurations in conf/middleclick/. Please check the README.md file for description of the sample configurations.
Use the FastClick GitHub issues preferably but do not hesitate to contact [email protected] for more information if needed.