The Distributed SW ROuter Project (DROP) aims to enable a novel distributed paradigm for the control and the management of flexible IP-router platforms based on commodity HW and the Linux operating system. In rough words, DROP allows building extensible and flexible multi-chassis routers on top of server HW platforms and the Linux operating system.

DROP is partially based on the IETF ForCES architecture, and allows building logical network nodes through the aggregation of multiple devices (i.e., SRs) that host “standard” Linux SW objects devoted to packet forwarding (i.e., the Linux kernel) or to control operations (e.g., Quagga, Xorp, etc.).

As suggested by the IETF ForCES directives, DROP provides an architectural solution that is able to orchestrate such objects. In more detail, it was specifically designed in order:

  • to meet the features of Linux network system interfaces and applications,
  • to hide the complexity of distributed network nodes in an autonomic way,
  • to offer a single control and management interface to system administrators.

From a physical point of view, the DROP architecture is composed of three main building blocks:

  • a number of devices (or “elements”) running the SW for performing operations at the data- and/or control-plane;
  • a number of network interfaces toward “external public” networks (i.e., toward other network devices);
  • an “internal private” network that is used to exchange data-path traffic and inter-element signaling messages.

DROP is specifically conceived for aggregating and coordinating all these building blocks in a single logical IP node that is able to directly manage all the public interfaces towards other external devices.

The internal private network could be realized by means of different layer 2 and 2.5 technologies, such as Ethernet (currently supported), Infiniband, MPLS and OpenFlow (whose support is currently under progress). The basic idea consists of enabling a selected set of devices at the edge to this internal network cloud to coordinately work like a single logical node with a sole configuration and management interface, without exposing the presence of the internal network and the complexity of the distributed architecture.




DROP is released under the GNU-GPL license.


Getting DROP


There are two ways to accede the Drop source code:

1) web browsing

You can browse it via the web or you can checkout the code from our public Subversion repository. The URL to browse the code is

You will run into a security issue warning since the used certificate has been issued by our organization, that is not recognized by browsers as trusted certification authority. If you're using Internet Explorer, you can simply click on the "Continue to this website (not recommended)." link on the page. You will be warned by the browser every time you will access the website. If you're using Firefox, you can click on the "I Understand the Risks" link on the page and then click on the "Add Exception..." button. A dialog window will pop up. In this dialog, click on the "Confirm Security Exception" button. If you check "Permanently store this exception" on the dialog, the browser will not warn you anymore. If you're using Chrome, you can simply click on the "Proceed anyway" button on the page. You will be warned by the browser every time you will access the website.

Next you will be prompted for username and password, you can use "guest" as username and leave the password blank.

2) svn checkout

To checkout the code from the Subversion repository simply use the following command (if you are using a GUI client, configure it appropriately):

[foo@tux]# svn co drop

You will be prompted for username and password, you can use "guest" as username and leave the password blank. The command will create in your current path a directory named drop with the source code.


Installing DROP

In the main directory there are all the files needed to build the two main applications composing DROP:

  • the "ce" application that has to be ran on Control Elements (CE) - i.e., the PCs that are devoted to perform control operations
  • and the "fe" application needed by Forwarding Elements (FE) - i.e., the PCs that perform data-path operations.

The first step for installing DROP is to run the "" script in order to create the directory structure for the SW objects.

Then, to compile the applications use the command "make ce" and "make fe", respectively. Obviously, if you have heterogeneus HW platforms (e.g., 32- and 64-bit systems), please compile the applications in the system where it has to run.

Congratulations: now you have the DROP applications! The next step is to configure DROP before launching it.


Configuring DROP

The main directory contains three configuration files: ce.conf, fe.conf and ce.leases. These files are needed to set some parameters useful for the correct working of the ce and fe applications.

The file ce.leases contains the association between IP addresses and indexes of the various FE. This is needed to assure that every FE will join the DROP router with the same identifier.

ce.conf lists a set of IP addresses and ports needed, for example, from bgp, ospf, openflow protocols, together with IP address and port used from the application itself and other parameters like the duration (in seconds) of the heartbeat interval and timeout.

fe.conf contains basically the same information of ce.conf, used from the FE instead.


If you have configured the system, now you are ready to launch DROP by typing on each PCs ./ce (for the control elements) or ./fe (for the forwading elements).


Using DROP


The ce and fe applications use a list of commands, that are available when the applications are launched.

The list of available commands is available typing the command "help".


The commands are:

  • help, ?
  • status, s
  • fe [show] | [<id> [show]]
  • iface [show] | [<index> [show]] | [<name> [show]] | [fe <id> [show]]
  • address [show] | [<index> [show]] | [<name> [show]] | [fe <id> [show]]
  • route [show] | [<index> [show]] | [<name> [show]] | [fe <id> [show]]
  • [add <route params>] | [del <route params>]
  • CpuInfo [show]
  • bgp [show] | [packet]
  • of [show] | [<index> [show]] | [<index> update port stats] | [<index> add flow] | [<index> del flow <flow_index>] | [<index> update flow stats] | [<index> mod port <port_index>] | [<index> port stats <port_index> [show]] | [<index> port status [show]] | [<index> flow stats [show]]
  • quit, q or exit


[ ] means optional; <> means defined elsewhere


id: identifier of an FE

index: aggregated index of an interface

name: aggregated name (local name:FE id) of an interface

route params:

<dest> via <gateway>

<dest> dev <name>

dest: <ip>/<prefix>

gateway: <ip>

ip: ip address

prefix: prefix len in bits


Who is online

We have 33 guests and no members online

Visitor Map

Locations of visitors to this page