osinstom / P4-OvS

Bringing the power of P4 to OvS!
Apache License 2.0
73 stars 15 forks source link
bpf ovs p4 p4runtime xdp

GitHub release

P4-OvS - Bringing the power of P4 to OvS!

The original Open vSwitch README is available at README-original.rst.

Introduction

This repository implements the P4-capable Open vSwitch with the P4Runtime interface.

In order to fill the gap in the P4 ecosystem (lack of efficient P4 software switch) the ambition of this project is to build a high-performance P4 software switch based on Open vSwitch. I believe that P4 needs the same, what Open vSwitch was for OpenFlow.

The P4-OvS is built on top of the following technologies:

Please, check changelog for details on what has been implemented so far.

Note! The current version of P4-OVS is still a research project and it almost certainly contains serious bugs or code quirks.

Getting started

To play with P4-OVS on your own follow Getting started guide.

The current version of the project allows to:

Please, refer to the usage guide to learn how to use ovs-p4ctl tool.

Contributing

The idea behind this project is to get feedback from the community and gather volunteers (developers, users, architects, etc.) willing to help with further development of this project.

All kinds of contributions are more than welcome! You can start from:

You can also reach me out on Twitter or via email to discuss the project!

Note! I am currently looking for someone, who is willing to start developing the XDP datapath in parallel. Please, reach me out if you want to contribute the XDP datapath!

Project status

P4-OvS already implements the most important features of the P4 switch. You can run & test it! However, some P4 features (e.g. counters, registers) are not implemented yet.

Roadmap

The project's goal is to develop this PoC into a high-performance P4 software switch. There is a long list of exciting features to be implemented on the Roadmap page.