Page tree

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

Skip to end of metadata
Go to start of metadata

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

Compare with Current View Page History

« Previous Version 9 Next »

Work in progress

The content of this page is still work in progress


P4 is a domain-specific language designed to allow programming of protocol-independent packet processors. Behavioral Model v2 (BMv2) is the reference P4 software switch. Initial support for this type of device has been included into ONOS 1.6 (Goldeneye) with the goal of providing a common groundwork to support programmable data planes in the next versions of ONOS.

This document will guide you through the necessary steps to program a network of BMv2 devices using ONOS. This document assumes you are already familiar with ONOS, P4 and BMv2. In other words, we assume you are already able to run ONOS locally, you can write a P4 program and you already know how to build and run BMv2.





BMv2 integration in ONOS


BMv2 device context

  • What's a BMv2 Configuration?
  • What's a BMv2 Interpreter?
    • 1-to-1 criterion mapping
    • Treatment interpretation

"Default" context

  • Applied at the first connection of the device to ONOS, before triggering the device connection
  • Provide minimum set of features to allow basic services to work (LLDP discovery, ARP proxy, Host tracking, Reactive forwarding)
  • Link to default.jsondefault.p4 and default interpreter implementation

Non-standard match and actions

  • Extension selector and treatments
  • Code sample with extension selector and treatment builder

Developers guide (WIP)

ONOS+P4 development environment Mininet script

  • Command samples to run a network of bmv2 devices connected to ONOS

BMv2 Device Context Service API

  • Prototype API for device configuration management, to be promoted to core APIs in the future
  • How to set a context for a given device?
    • Configuration swap enforcement
  • Why do I need to register the interpreter's class loader?

Known issues (WIP)

  • ...

Future work (WIP)

ONOS-3969 - Getting issue details... STATUS

  • No labels