Work in progress
The content of this page is still work in progress
P4 is a programming language designed to allow programming of protocol-independent packet processors. Behavioral Model v2 (BMv2) is the reference P4 software switch. Support for this type of device is being integrated into ONOS with the goal of extending current network programming abstractions and providing a common groundwork to support programmable data planes in the next versions of ONOS.
BMv2 device context
- What's a BMv2 Configuration?
- What's a BMv2 Interpreter?
- 1-to-1 criterion mapping
- Treatment interpretation
- 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.json, default.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
- ONOS fork of BMv2
- Sample P4 programs
bmv2.py 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)