rovs
Rust Open vSwitch library - a complete Rust replacement for Python OVS bindings.
Provides async, type-safe APIs for OVSDB and OpenFlow protocols with Nicira extension support.
Crate Structure
rovs-transport → Network layer (Unix/TCP/TLS)
rovs-jsonrpc → JSON-RPC 1.0 (brace-depth parsing)
rovs-ovsdb → OVSDB client, IDL, transactions
rovs-openflow → OpenFlow 1.3 + Nicira extensions
rovs-types → Shared types (Atom, MacAddr)
rovs-client → High-level API
rovs-ext → Flow templates, topology builders, controller framework
Quick Start
OVSDB Transaction
use ;
let mut client = connect.await?;
let mut txn = new;
txn.create_bridge;
txn.add_internal_port;
client.commit.await?;
OpenFlow with Nicira Extensions
use ;
let mut conn = connect.await?;
let flow = add
.table.priority
.match_fields
.actions;
conn.send_flow_sync.await?;
NAT Gateway
use ;
use Ipv4Addr;
let snat = new;
snat.install.await?;
Features
| Feature | Status |
|---|---|
| Transport (Unix/TCP/TLS) | Complete |
| JSON-RPC connection | Complete |
| OVSDB client & IDL | Complete |
| OpenFlow 1.3 protocol | Complete |
| Nicira extensions (NxLearn, ct, NAT) | Complete |
| Controller framework | Complete |
| Flow templates (SNAT, DNAT, MAC NAT, ARP/NDP proxy) | Complete |
| Topology builders | Complete |
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.