Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/another-s347/rusty-p4

p4 controller in Rust
https://github.com/another-s347/rusty-p4

p4language p4runtime rust rust-lang sdn sdn-controller

Last synced: about 1 month ago
JSON representation

p4 controller in Rust

Awesome Lists containing this project

README

        

# Work in Progress

I hope I can finish this.

# Rusty P4 [![Build (Linux)](https://github.com/another-s347/rusty-p4/actions/workflows/build_linux.yml/badge.svg?branch=new_app&event=push)](https://github.com/another-s347/rusty-p4/actions/workflows/build_linux.yml) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![dev doc](https://img.shields.io/badge/-dev%20doc-ff69b4)](https://another-s347.github.io/docs/rusty_p4/rusty_p4/)
A Work-in-progress composable and lightweight library for writing [P4Runtime](https://p4.org/specs/) controller in Rust. The goal is to bring powerful & expressive tools into the world of P4 and SDN so that developers can test their ideas faster.

It's trying to provide multi-level APIs for writing controllers with different complexity (see Examples below). Some design come from the tutorials of P4 and [ONOS](https://onosproject.org/).

## Repo structure

- rusty-p4-core. The core of rusty-p4, providing the basic building blocks like App trait, Service trait, P4 runtime, Pipeconf, flow and some other things.
- rusty-p4-packet. Provides methods to parse packets.
- rusty-p4-northbound. Provides impls for northbound server.
- rusty-p4-app. Provides some simple application implementation.

## Getting Started

Current version hasn't been published, so to use it, add
```
rusty-p4 = { git="https://github.com/another-s347/rusty-p4" }
```
to your Cargo.toml.

## Built With

* [tonic](https://github.com/hyperium/tonic) - gRPC for Rust.
* [PI](https://github.com/p4lang/PI) - P4Runtime
* [tokio](https://tokio.rs) - The asynchronous run-time for the Rust programming language.