No description
Find a file
Jan De Landtsheer 2ffcb364d7
Some checks failed
CI / Check & Lint (push) Failing after 4s
CI / Unit Tests (push) Failing after 3s
CI / Integration Tests (push) Failing after 3s
CI / Run Examples (push) Failing after 4s
Update CLAUDE.md with OpenFlow controller and Nicira docs
- Add new examples: dual_bridge_vlan, mac_learning, mac_translation,
  vlan_mac_nat, ndp_controller
- Update rovs-openflow description (no longer "in progress")
- Add OpenFlow Controller Development section with VConn examples
- Add Nicira Extensions section documenting NxRegLoad, NxMove, NxLearn
- Add OpenFlow Protocol Notes section
2026-02-04 23:45:16 +01:00
.github/workflows Add documentation, unit tests, integration tests, and CI pipeline 2026-01-12 15:12:20 +01:00
docs Update roadmap with ARP proxy and NxMove/NxRegLoad completion 2026-01-15 23:39:40 +01:00
rovs-client Add OpenFlow controller support with NDP proxy example 2026-02-04 23:18:16 +01:00
rovs-jsonrpc Fix IDL sync and JSON-RPC compatibility issues 2026-01-12 19:59:13 +01:00
rovs-openflow Fix test names and add NDP proxy integration test 2026-02-04 23:27:56 +01:00
rovs-ovsdb Fix test bridge names to fit Linux interface limit 2026-02-04 23:23:12 +01:00
rovs-transport Add documentation, unit tests, integration tests, and CI pipeline 2026-01-12 15:12:20 +01:00
rovs-types Add documentation, unit tests, integration tests, and CI pipeline 2026-01-12 15:12:20 +01:00
scripts Implement OpenFlow wire encoding phases 6-8 2026-01-15 18:08:10 +01:00
.gitignore Add .gitignore for Rust build artifacts and IDE files 2026-01-12 18:16:18 +01:00
Cargo.lock Initial rovs implementation with OVSDB client and documentation 2026-01-12 12:09:36 +01:00
Cargo.toml Initial rovs implementation with OVSDB client and documentation 2026-01-12 12:09:36 +01:00
CLAUDE.md Update CLAUDE.md with OpenFlow controller and Nicira docs 2026-02-04 23:45:16 +01:00
Containerfile Implement OpenFlow wire encoding phases 6-8 2026-01-15 18:08:10 +01:00

rovs Documentation

Rust Open vSwitch library - a Rust replacement for Python OVS bindings.

CI

Documentation Index

Document Description
api-reference.md Complete API documentation with function signatures
ovsdb-implementation.md OVSDB architecture and implementation details
openflow-planning.md OpenFlow implementation plan for next session
p4-programming-overview.md P4 network programming background

Quick Start

Testing OVSDB

# Start user-space OVSDB server
mkdir -p /tmp/ovs-test
ovsdb-tool create /tmp/ovs-test/conf.db /usr/share/openvswitch/vswitch.ovsschema
ovsdb-server /tmp/ovs-test/conf.db \
    --remote=punix:/tmp/ovs-test/db.sock \
    --unixctl=/tmp/ovs-test/ovsdb.ctl \
    --pidfile=/tmp/ovs-test/ovsdb.pid \
    --detach
ovs-vsctl --db=unix:/tmp/ovs-test/db.sock init

# Run example
cargo run --example ovsdb_transaction

Example Code

use rovs_ovsdb::{Client, Transaction};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut client = Client::connect("unix:/tmp/ovs-test/db.sock").await?;

    // Create a bridge
    let mut txn = Transaction::new("Open_vSwitch");
    txn.create_bridge("br0");
    txn.add_internal_port("br0", "vport0");

    client.commit(&mut txn).await?;
    Ok(())
}

Running Tests

# Unit tests (no external dependencies)
cargo test --lib --all

# Integration tests (requires OVSDB server)
OVSDB_ADDR=unix:/tmp/ovs-test/db.sock cargo test -- --ignored

Examples

Examples are located in rovs-client/examples/:

Example Description
ovsdb_transaction Basic bridge/port creation and patch ports
ovsdb_monitor Real-time database monitoring
list_bridges High-level client API usage
add_flow OpenFlow flow programming

Run examples with:

OVSDB_ADDR=unix:/tmp/ovs-test/db.sock cargo run --example <name>

Crate Structure

rovs/
├── rovs-transport/     # Network transport (Unix, TCP, TLS)
├── rovs-jsonrpc/       # JSON-RPC 1.0 protocol
├── rovs-ovsdb/         # OVSDB client and IDL
├── rovs-openflow/      # OpenFlow protocol (in progress)
├── rovs-types/         # Shared types
├── rovs-client/        # High-level client (examples)
└── docs/               # Documentation

Implementation Status

Feature Status
Transport (Unix/TCP/TLS) Complete
JSON-RPC connection Complete
OVSDB schema fetch Complete
OVSDB monitoring Complete
OVSDB transactions Complete
High-level topology ops Complete
OpenFlow protocol Planned
OpenFlow controller Planned

Next Steps (OpenFlow)

See openflow-planning.md for the detailed implementation plan.

Priority:

  1. OpenFlow message encoding/decoding
  2. Connection handshake (Hello, Features)
  3. Flow mod operations
  4. Packet In/Out handling
  5. Controller framework