GithubHelp home page GithubHelp logo

calletang / p4-ovs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from osinstom/p4-ovs

0.0 0.0 0.0 76.37 MB

Bringing the power of P4 to OvS!

License: Apache License 2.0

Shell 1.42% Makefile 0.71% Ruby 0.01% M4 0.90% Python 6.16% C 88.30% PowerShell 0.04% Batchfile 0.01% Objective-C 0.01% C++ 0.61% Roff 1.80% Dockerfile 0.01% JavaScript 0.05%

p4-ovs's Introduction

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:

  • Open vSwitch as a packet processing framework
  • uBPF (userspace BPF) as the re-configurable packet processing engine
  • p4c-ubpf as the compiler enabling translation of P4 programs to BPF-compatible C code

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:

  • create a single P4 bridge and provide a P4 program as configuration parameter or using P4Runtime and SetForwardingPipelineConfig RPC.
  • add ports to the bridge
  • receive traffic from these ports and handle it in the P4 (uBPF) datapath.
  • control P4 tables via ovs-p4ctl tool

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:

  • Check out the Design proposal. This project follows a documentation-driven approach. Your feedback is more than welcome! Feel free to throw your ideas in!
  • Join the discussion to discuss the current design, propose a new feature or discuss the future of the project.
  • If you see some inconsistency in the documentation or you want to propose/implement a new feature please Open an issue.

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.

p4-ovs's People

Contributors

blp avatar justinpettit avatar ejj avatar jrajahalme avatar jessegross avatar shettyg avatar joestringer avatar pshelar avatar shorman-netronome avatar igsilya avatar azhou-nicira avatar yew011 avatar ddiproietto avatar russellb avatar yamt avatar williamtu avatar hzhou8 avatar nithinrajub avatar darball1 avatar fleitner avatar stephenfin avatar apconole avatar yihungwei avatar gvrose8192 avatar numansiddique avatar drizzt avatar yifsun avatar svinturis avatar xpu22 avatar osinstom avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.