Versions Compared

Key

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

...

HTTP GET: http://serverIp/metron/server_stats

A server with 2 Intel CPU cores and 1 , 16 GB of DDR4 DRAM, and a single-port Mellanox 100 GbE NIC might provide the following response:

{
     "busyCpus":2,
     "freeCpus":0,
     "cpus":
     [
         {
             "id":0,
             "load":0,
             "queue":0,
             "busy":true,
             “throughput”:
             {
                 “average”: 5000,
                 “unit”: “mbps
             },
             “latency”:
             {
                 “min”: 5000,
                 “median”: 6000,
                 “max”: 7000,
                 “unit”: “ns”
             }
         },
         {
             "id":1,
             "load":0,
             "queue":1,
             "busy":true,
             “throughput”:
             {
                 “average”: 4000,
                 “unit”: “mbps
             },
             “latency”:
             {
                 “min”: 5500,
                 “median”: 6100,
                 “max”: 7400,
                 “unit”: “ns”
             }
        },
    ], 
    "nicsmemory":
       {
  {
            "nameunit": "fd0kBytes",
            "indexused":0 8388608,
            "rxCountfree":"1000" 8388608,
            "total": 16777216
},
    "nics":
    [
        {
            "name":"fd0",
            "id":0,
            "rxCount":"1000",
            "rxBytes":"rxBytes":"64000",
            "rxDropped":"0",
            "rxErrors":"0",
            "txCount":"1000",
            "txBytes":"64000",
            "txErrors":"0"
        },
    ]
}

...

                    "nicName": "fd0",
                    "cpus":
                    [
                        {
                            "cpuIdid":0,
                            "cpuRulesrules":
                            [
                                {
                                    "ruleIdid": 54043196136729470,
                                    "ruleContentcontent":"ingress pattern eth type is 2048 / src is 192.168.100.7 dst is 192.168.1.7 / udp src is 53 / end actions queue index 0 / count / end"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

Note that the ruleContent "content" field contains a rule (with unique ID 54043196136729470) that follows the DPDK Flow API, as the NIC on this server is bound to a DPDK driver.

...

This queue is associated with CPU core 0, as indicated by the cpuId field"id" field in the "cpus" attribute.

NIC Rule Monitoring

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

...

            {
"method":"flow"
},
"nics":
[
{
"nicName":"fd0",
"cpus":
[
{
"cpuIdid":0,
"cpuRulesrules":
[
{
"ruleIdid":54043196136729470,
                                    "ruleContentcontent":"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"
}
]
}
]
}
]
}
]

...

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

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

To delete multiple rules at once, you should append a comma-separated rule IDs as follows:

HTTP DELETE: http://serverIp/metron/rules_delete/54043196136729470,54043196136729471

...

Once a server device is registered with ONOS (through the server device driver), the device view of the ONOS UI will visualize this deviceof the ONOS UI will visualize this device.

Note that the server device driver currently supports only the legacy ONOS GUI. There is a plan to support GUI2 soon.

An example is shown in the Figure below.:


The server device driver will soon provide a User Interface (UI) which will visualize important statistics of commodity servers managed by this driver.

The statistics include per-core CPU utilization, main memory, and optionally throughput and latency. Throughput and latency are optional at the device side, the driver's UI will show zero-initialized values if these statistics are not advertised by the devices.

To access the server device driver's UI click on the Menu button (top left corner on the ONOS UI), then select one of the tabs "Servers-CPU", "Servers-Memory", "Servers-Throughput", or "Servers-Latency" at the bottom of the list in Section "Network" .as shown in the figure below:

Image Added


The figure below visualizes the CPU utilization of an example commodity server (with device ID rest:192.16.125.166:80) with 16 CPU cores. In this example figure, CPU cores 0-12 exhibit some load, as shown in the y-axis (load ranges from 0 to 100%).

The figure below visualizes the main memory utilization of an example commodity server (with device ID rest:192.16.125.168:80).

Image Added



Research Behind the Server Device Driver

...

Metron realizes NFV service chains at the speed of the underlying hardware.

Metron's control plane is implemeted as an ONOS app, which uses the server device driver to manage chained packet processing pipelines (also known as chained network functions or service chains) running on commodity servers.

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

...