12 comments

[ 1.1 ms ] story [ 34.8 ms ] thread
Where does it explain what Click is? No explanation on the front page, and first FAQ is "Is Click experimental software?"
Click is a C++ framework for constructing routers and IP middleboxes out of modular components, somewhat like a modular synthesizer for packets.

It's a pretty great codebase.

How specific is it to routing network traffic? Can it be used for more general data processing?
It's specific to processing IP packets, but not to routing. It has a really elegant interface for handling packet events.
I used click in production. It was a great piece of software. It allowed us to do packet processing and routing in the linux kernel with high level C++ code. It also had a great "standard library" for packet routing primitives.
Cool! Are you at liberty to share any more details? Was it for an ISP or similar? I would be interested to hear more :)
We ran it on access points, switches, and a firewalls. We found it was pretty good to a certain extent, but was hard to scale with multiple cores.
I discovered this when I read about ClickOS [0], a unikernel that builds on the Click modular router. Check this out: "ClickOS virtual machines are small (5MB), boot quickly (about 30 milliseconds), add little delay (45 microseconds) and over one hundred of them can be concurrently run while saturating a 10Gb pipe on a commodity server"

[0] https://www.usenix.org/system/files/conference/nsdi14/nsdi14...

Looked at this a few years back, but never started using it.