Skip to content

Split/6 rvnic - #232

Open
Lethe10137 wants to merge 16 commits into
split/5-generic-envfrom
split/6-rvnic
Open

Lethe10137 wants to merge 16 commits into
split/5-generic-envfrom
split/6-rvnic

Conversation

@Lethe10137

Copy link
Copy Markdown
Member

Adds rvnic, a virtual NIC backend that replaces veth pairs with a kernel module that exchanges packets with Rattan through shared-memory rings.

  • rvnic/kernel: the rattan_vnic kernel module (with a Vagrantfile for testing). Builds on kernels both before and after hrtimer_init was replaced by hrtimer_setup (6.13–6.15).
    - rvnic/librvnic: Rust bindings for the device, UMEM and rings, plus forwarding examples.
    - rattan-env/src/env/rvnic: RvnicEnv and the AF_RVNIC driver (feature rvnic). It allocates IPs under a file lock, recycles tokens in batches with a timeout, copies headers back, and logs drop statistics on exit (feature drop-stat).
    - src/main-rv.rs: the rattan-rv binary (required-features = ["rvnic"]).
    - Per-thread CPU affinity for working threads: cores come from the config's cpu list or RATTAN_CPU, and the thread count can be overridden by RATTAN_WORKING_THREADS.
    - scripts/install.sh: install rattan-rv, keep MAC addresses of rattan* devices under systemd-networkd, and make NetworkManager ignore Rattan interfaces.
    - The last commit removes the unused busy-polling sender that was added earlier in this PR.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant