Have questions? Stuck? Please check our FAQ for some common questions and answers.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Overview

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

This tutorial is currently under construction.

Contributors

Georgios P. Katsikas <katsikas.gp@gmail.com>

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 server device driver exploits ONOS's REST-based Southbound Controller (i.e., RestSBController) to register server devices as REST-based devices.

As such, every commodity server registered to ONOS (through the server device driver) is represented as a RestServerSBDevice, which extends ONOS's RestSBDevice.

The extensions of RestServerSBDevice are related to the CPU and NIC resources present in commodity servers (but 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).

Server Device Registration

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

onos-netcfg <ONOS-IP> device-description.json

An example JSON file "device-description.json" is provided below:

{

   "devices": {

       "rest:192.168.1.1:80": {

           "rest": {

               "username": "server",

               "password": "",

               "ip": "192.168.1.1",

               "port": 80,

               "protocol": "http",

               "url": "",

               "testUrl": "",

               "manufacturer": "GenuineIntel",

               "hwVersion": "Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz",

               "swVersion": "Click 2.1"

           },

           "basic": {

               "driver": "restServer"

           }

       }

   }

}


Note that manufacturer, hwVersion, swVersion, and driver fields are sensitive pieces of information related to the server device driver.

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.

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

  • the ports (i.e., NICs) available on this server as well as their statistics,
  • the CPUs available on this server as well as their statistics,
  • any flow entries installed on this server.


The resource discovery command issued by the device driver hits the following resource path on the server:

HTTP GET: http://serverIp/metron/resources

A server with 2 Intel CPU cores and 2 Mellanox NICs might provide the following responce:

{

"id":"metron:nfv:000001",
"serial":"4Y6JZ42",
"manufacturer":"GenuineIntel",
"hwVersion":"Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz",
"swVersion":"Click 2.1",
"cpus":
[
{
"id":0,
"vendor":"GenuineIntel",
"frequency":3200
},
{
"id":1,
"vendor":"GenuineIntel",
"frequency":3200
}
],
"nics":
[
{
"id":"fd0",
"vendor":"Unknown",
"driver":"net_mlx5",
"speed":"100000",
"status":"1",
"portType":"fiber",
"hwAddr":"50:6B:4B:43:88:CA",
"rxFilter":["flow"]
}
]
}


Note that the unit of frequency field in each CPU is in MHz, while the unit of the speed field in each NIC is in Mbps.

To indicate that a NIC is active, one must set the status field to 1.

Also, each server must advertize a list of ways with which its NICs can be programmed.

This is done by filling out a list of strings in the rxFilter field of each NIC.

Currently, the server device driver supports 4 programmability modes as follows:

  • flow: Refers to the Flow Director component of modern NICs
  • mac: Refers to the Medium Access Control (MAC)-based Virtual Machine Device queues (VMDq) component of modern NICs
  • vlan: Refers to the Virtual Local Area (VLAN) identifier (ID)-based Virtual Machine Device queues (VMDq) component of modern NICs
  • rss: Refers to the Receive-Side Scaling (RSS) component of modern NICs

Metron's data plane extends FastClick, which in turn uses DPDK as a high performance network I/O subsystem.

  • No labels