Click is a new software architecture for building flexible and configurable
routers. A Click router is assembled from packet processing modules called
elements. Individual elements implement simple router functions like packe
t classification, queuing, scheduling, and interfacing with network devices
. A router configuration is a directed graph with elements at the vertices;
packets flow along the edges of the graph. Several features make individua
l elements more powerful and complex configurations easier to write, includ
ing pull connections, which model packet flow driven by transmitting hardwa
re devices, and flow-based router context, which helps an element locate ot
her interesting elements. Click configurations are modular and easy to exte
nd. A standards-compliant Click IP router has 16 elements on its forwarding
path; some of its elements are also useful in Ethernet switches and IP tun
neling configurations. Extending the IP router to support dropping policies
, fairness among flows, or Differentiated Services simply requires adding a
couple of elements at the right place. On conventional PC hardware, the Cl
ick IP router achieves a maximum loss-free forwarding rate of 333,000 64-by
te packets per second, demonstrating that Click's modular and flexible arch
itecture is compatible with good performance.