Implementing Software Virtual Routers on Multi-core PCs using Click

Mon, 01/11/2010 - 17:14 by Dr. Mickaël Hoerdt • Categories:
Mickael Hoerdt (Université Catholique de Louvain) et al.
Presentation date: 
November 24, 2009
Ghent, Belgium
SyClick Symposium on Click Modular Router

Multi-core CPUs, along with recent advances in memory and buses,
render commodity hardware a strong candidate for software router
virtualization. We would like to share the experience of a 3-year
research project on the design and implementation of a platform
for high-performance and flexible virtual routers on multi-core
general purpose PCs.

The Click software suite is a core component of our platform and has
been extensively used to prototype the data plane of our virtual
router platform. In particular, we exploited Click to analyse the bottlenecks of our
architecture and experiment with the design of virtualized data planes. We will
present the basic building blocks of our platform data
plane which provides high levels of flexibility, isolation and
performance. We implemented those blocks using the Click framework.

The basis of our virtual router platform is a single forwarder domain
that consolidates independent Click configurations in a single CPU
kernel context. Having a separate context per virtual router (in a
process or a separate virtual domain for example) provides good
isolation but very low performance. By avoiding a costly context
switch per packet on our virtual router platform, the forwarder domain
can theoretically forward as many packets per seconds as a single
software router running on the same hardware.
The first building block of our platform is the merging process
necessary to consolidate the various Click virtual router
configurations in the forwarder domain. We act at the syntactic level
of the configurations to produce a single manageable Click
configuration that will be ultimately be loaded in the forwarder
domain. We will describe the forwarder domain Click infrastructure and
how we support the addition and the deletion of programmable virtual
forwarding planes inside the same Click configuration. Our
infrastructure provides a local view of the data plane to each virtual
router. Each virtual router can still access their own Click
file system and install their own Click configuration, whilst reading
and writing handlers isolated from the other virtual routers
running on the platform.

The second building block of our platform is the co-scheduling of
several virtual data planes across multi-core hardware. In previous
work we have shown that in order to keep the performance as high as
possible on a multi-core architecture, a well designed router should
process the packets all the way through the same cache hierarchy. By
using Click, we describe how to allocate CPU cores to the various parts
of the forwarder domain configuration and still keep all the packets
in the same cache hierarchy. We achieve this design independently of
the lookup decision and the number of virtual data planes running

The third building block of our platform is the connection between the
various control planes running on the platform and the forwarder
domain. The control plane processes of the virtual routers are running
in a different context (such as the user space) and need a way to
communicate with the external world without having a global view of
the platform. We describe how to connect virtual interfaces running in
the control plane with physical interfaces running in the forwarder
domain with Click, as well as how to handle broadcast messages across
the forwarder domain and the virtual routers instances.

Vrouter project page :

Video of the presentation :

Click_symposium_November_2009.pdf533.86 KB