Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

This tutorial describes how ONOS manages resources, such as Central Processing Units (CPUs) and Network Interface Cards (NICs), on commodity servers.

Contributors

Georgios P. Katsikas <georgios.katsikas@ri.se>, <katsikas.gp@gmail.com>

Tom Barbette <tom.barbette@uliege.be>

Table of Contents

Table of Contents
exclude(Contributors|Table of Contents)

Controller Side

The ONOS control plane is extended with the server device driver, which is part of the ONOS drivers sub-system.

...

The extensions of RestServerSBDevice are related to the CPU and NIC resources present in commodity servers (but potentially not present in other REST-based devices).

Server Side

At the server side we need a process that is able to communicate with the server device driver using a REST-based channel (i.e., HTTP messages).

A complete implementation of the data plane side of a server device can be found here.

Communication Protocol

In this section we present the communication protocol between the server device driver (control plane) and a commodity server (data plane).

Server Device Registration

First, each server must "register" with the controller using the onos-netcfg script as follows:

...

If your server has different hardware characteristics (e.g., an AMD processor instead of an Intel processor), then you should extend the file server-drivers.xml accordingly.

Server Device Discovery

Upon a successful registration of your server device, the server device driver issues resource discovery commands to the server in order to discover:

...

In the example above the server advertised Flow Director as a candidate mode for packet dispatching.

Server Device Monitoring

Once a server's resources are properly discovered by the server device driver, periodic CPU and NIC monitoring of these resources takes place.

...

{
    "busyCpus":0,
    "freeCpus":2,
    "cpus":
    [
        {
            "id":0,
            "load":0,
            "busy":false
        },
        {
            "id":1,
            "load":0,
            "busy":false
        }
    ],
    "nics":
    [
        {
            "name":"fd0",
            "index":0,
            "rxCount":"0",
            "rxBytes":"0",
            "rxDropped":"0",
            "rxErrors":"0",
            "txCount":"0",
            "txBytes":"0",
            "txErrors":"0"
        }
    ]
}

NIC Rule Installation

A server with NICs in mode "flow" allows the server device driver to manage its rules.

...

This queue is associated with CPU core 0, as indicated by the cpuId field.

NIC Rule Monitoring

The server device driver also performs periodic NIC rule monitoring, for those NICs in mode "flow".

...

                                    "ruleContent":"ingress pattern eth type is 2048 / ipv4 src is 192.168.100.7 dst is 192.168.1.7 / udp src is 53 / end actions queue index 0 / end"
}
]
}
]
}
]
}
]

}

NIC Rule Deletion

To delete the above rule (once it has successfully been installed) with unique ID 54043196136729470, the server device driver needs to hist the following path:

HTTP DELETE: http://serverIp/metron/rules/54043196136729470

Server Driver User Interface

Server driver will soon provide a User Interface (UI) which will visualize the CPU utilization of commodity servers managed by this driver.

...

Screen shots of this UI will soon follow.

Research Behind the Server Device Driver

The server device driver was implemented as part of the Metron research project, which was published at the 15th USENIX Symposium on Networked Systems Design and Implementation (NSDI ’18).

...