openvmm icon indicating copy to clipboard operation
openvmm copied to clipboard

net_consomme: Add support for ipv6

Open damanm24 opened this issue 1 month ago • 5 comments

This PR adds the ability for the net_consomme backend to process IPv6 traffic generated by a guest VM. Without this change, guest VM's would only reporting having an IPv4 address and a link-local IPv6 address assigned to the machine (see the image below). However, with the addition of a minimal DHCPv6 server and handling of the Neighbor Discovery Protocol (NDP) (an extension of ICMPv6 analogous to ARP for IPv4), guest VM's are able to generate their own global unicast IPv6 addresses with SLAAC (Stateless Address Autoconfiguration).

Before: image

After: image

Proper handling of TCP and UDP traffic over IPv6 was validated by spinning up a netcat server on a host machine that a guest VM would connect to by using the host machines global unicast IPv6 address.

Along with adding IPv6 support, this PR also introduces some changes to remove types that were defined in the net_consomme crate and replace them with types that already exist in various dependencies.

damanm24 avatar Nov 12 '25 01:11 damanm24

⚠️ Unsafe Code Detected

This PR modifies files containing unsafe Rust code. Extra scrutiny is required during review.

For more on why we check whole files, instead of just diffs, check out the Rustonomicon

github-actions[bot] avatar Nov 12 '25 01:11 github-actions[bot]

Before this change goes in, I will update the validate_mana_nic function (in the vmm_tests) to ensure the device with a self-assigned IPv6 address.

damanm24 avatar Nov 12 '25 01:11 damanm24

This is really cool.

jstarks avatar Nov 12 '25 16:11 jstarks