all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH docs/manager/network/proxmox{-perl-rs,-ve-rs} v4 0/9] add IPv6 RA / SLAAC support to EVPN zones
@ 2026-10-29 14:43 Hannes Laimer
  2026-10-29 14:44 ` [PATCH proxmox-perl-rs v4 1/9] pve-rs: sdn: add IPv6 RA builder binding Hannes Laimer
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: Hannes Laimer @ 2026-10-29 14:43 UTC (permalink / raw)
  To: pve-devel

This series adds IPv6 Router Advertisement / SLAAC support to EVPN zones.

RA settings sit on the vnet (`vnets.cfg`), per-prefix overrides on the subnet
(`subnets.cfg`). Defaults are chosen so that most IPv6 subnets work without
explicit per-prefix configuration.

It also sets `accept_untracked_na=2` on every EVPN vnet bridge that has
an IPv6 subnet, to keep first-packet IPv6 return traffic reliable in the
distributed anycast-gateway topology. The commit contains more details.

v4:
 - rebased onto current master
 - docs rewritten
 - corrected router lifetime default placeholder
 - reorder commits

v3, thanks @Lukas S!:
 - validation no longer rejects valid IPv6 subnets: non-/64 prefixes and IPv6
   subnets using SNAT are accepted and editable again
 - improve FRR config generation so a single malformed subnet or a non-member
   node can no longer break it, and so configured prefix lifetimes are no
   longer silently dropped
 - cleaner EVPN gating and better per-prefix defaults, so most IPv6 subnets
   work without explicit configuration
 - cleanup UI, only persists meaningful settings
 - some smaller fixups


proxmox-perl-rs:

Hannes Laimer (1):
  pve-rs: sdn: add IPv6 RA builder binding

 pve-rs/Makefile                    |  1 +
 pve-rs/src/bindings/sdn/ipv6_ra.rs | 40 ++++++++++++++++++++++++++++++
 pve-rs/src/bindings/sdn/mod.rs     |  1 +
 3 files changed, 42 insertions(+)
 create mode 100644 pve-rs/src/bindings/sdn/ipv6_ra.rs


proxmox-ve-rs:

Hannes Laimer (2):
  frr: add IPv6 router advertisement support
  ve-config: sdn: add IPv6 router advertisement settings

 .../templates/frr.conf.jinja                  |   1 +
 .../templates/nd_interfaces.jinja             |  28 +++
 proxmox-frr/src/ser/mod.rs                    |   6 +
 proxmox-frr/src/ser/nd.rs                     |  56 ++++++
 proxmox-frr/src/ser/serializer.rs             |   6 +-
 proxmox-ve-config/src/sdn/config.rs           | 146 +++++++++++++++-
 proxmox-ve-config/src/sdn/mod.rs              |   1 +
 proxmox-ve-config/src/sdn/nd.rs               | 131 ++++++++++++++
 proxmox-ve-config/tests/nd/main.rs            | 164 ++++++++++++++++++
 .../nd__explicit_lifetimes_are_preserved.snap |   9 +
 .../nd__mixed_subnets_under_one_vnet.snap     |  14 ++
 .../snapshots/nd__no_autoconfig_prefix.snap   |   9 +
 ...sh64_prefix_defaults_to_no_autoconfig.snap |   9 +
 .../nd__off_link_emits_off_link_modifier.snap |   9 +
 ...__preferred_lifetime_clamped_to_valid.snap |   9 +
 ...vel_optional_knobs_are_passed_through.snap |  12 ++
 .../nd__slaac_with_default_lifetimes.snap     |   9 +
 17 files changed, 611 insertions(+), 8 deletions(-)
 create mode 100644 proxmox-frr-templates/templates/nd_interfaces.jinja
 create mode 100644 proxmox-frr/src/ser/nd.rs
 create mode 100644 proxmox-ve-config/src/sdn/nd.rs
 create mode 100644 proxmox-ve-config/tests/nd/main.rs
 create mode 100644 proxmox-ve-config/tests/nd/snapshots/nd__explicit_lifetimes_are_preserved.snap
 create mode 100644 proxmox-ve-config/tests/nd/snapshots/nd__mixed_subnets_under_one_vnet.snap
 create mode 100644 proxmox-ve-config/tests/nd/snapshots/nd__no_autoconfig_prefix.snap
 create mode 100644 proxmox-ve-config/tests/nd/snapshots/nd__non_slash64_prefix_defaults_to_no_autoconfig.snap
 create mode 100644 proxmox-ve-config/tests/nd/snapshots/nd__off_link_emits_off_link_modifier.snap
 create mode 100644 proxmox-ve-config/tests/nd/snapshots/nd__preferred_lifetime_clamped_to_valid.snap
 create mode 100644 proxmox-ve-config/tests/nd/snapshots/nd__ra_level_optional_knobs_are_passed_through.snap
 create mode 100644 proxmox-ve-config/tests/nd/snapshots/nd__slaac_with_default_lifetimes.snap


pve-manager:

Hannes Laimer (1):
  ui: sdn: add IPv6 RA / SLAAC support

 www/manager6/form/SDNVnetSelector.js |   2 +-
 www/manager6/sdn/SubnetEdit.js       | 130 ++++++++++++++++-
 www/manager6/sdn/SubnetView.js       |   7 +-
 www/manager6/sdn/VnetEdit.js         | 202 ++++++++++++++++++++++++++-
 www/manager6/sdn/VnetView.js         |   6 +-
 5 files changed, 339 insertions(+), 8 deletions(-)


pve-network:

Hannes Laimer (4):
  sdn: evpn: derive IP version from CIDR for gateway-less subnets
  sdn: evpn: accept untracked IPv6 neighbor advertisements
  sdn: evpn: add IPv6 RA / SLAAC support
  api: vnets: include the zone type in the vnet list

 src/PVE/API2/Network/SDN/Vnets.pm             | 62 ++++++++++++++
 src/PVE/Network/SDN.pm                        |  1 +
 src/PVE/Network/SDN/Controllers.pm            | 21 ++++-
 src/PVE/Network/SDN/Controllers/EvpnPlugin.pm | 22 ++++-
 src/PVE/Network/SDN/Controllers/Plugin.pm     |  2 +-
 src/PVE/Network/SDN/SubnetPlugin.pm           | 64 ++++++++++++++
 src/PVE/Network/SDN/VnetPlugin.pm             | 85 +++++++++++++++++++
 src/PVE/Network/SDN/Zones/EvpnPlugin.pm       | 14 ++-
 src/PVE/Network/SDN/Zones/Plugin.pm           |  6 ++
 .../expected_sdn_interfaces                   |  1 +
 .../exitnode_snat/expected_sdn_interfaces     |  1 +
 .../exitnodenullroute/expected_sdn_interfaces |  1 +
 .../evpn/ipv4ipv6/expected_sdn_interfaces     |  1 +
 .../ipv4ipv6nogateway/expected_sdn_interfaces |  1 +
 .../zones/evpn/ipv6/expected_sdn_interfaces   |  1 +
 .../evpn/ipv6underlay/expected_sdn_interfaces |  1 +
 .../evpn/slaac/expected_controller_config     | 53 ++++++++++++
 .../zones/evpn/slaac/expected_sdn_interfaces  | 44 ++++++++++
 src/test/zones/evpn/slaac/interfaces          |  7 ++
 src/test/zones/evpn/slaac/sdn_config          | 41 +++++++++
 20 files changed, 423 insertions(+), 6 deletions(-)
 create mode 100644 src/test/zones/evpn/slaac/expected_controller_config
 create mode 100644 src/test/zones/evpn/slaac/expected_sdn_interfaces
 create mode 100644 src/test/zones/evpn/slaac/interfaces
 create mode 100644 src/test/zones/evpn/slaac/sdn_config


pve-docs:

Hannes Laimer (1):
  sdn: add IPv6 RA / SLAAC section

 pvesdn.adoc | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)


Summary over all repositories:
  46 files changed, 1486 insertions(+), 22 deletions(-)

-- 
Generated by murpp 0.12.0




^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2026-10-29 15:43 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-29 14:43 [PATCH docs/manager/network/proxmox{-perl-rs,-ve-rs} v4 0/9] add IPv6 RA / SLAAC support to EVPN zones Hannes Laimer
2026-10-29 14:44 ` [PATCH proxmox-perl-rs v4 1/9] pve-rs: sdn: add IPv6 RA builder binding Hannes Laimer
2026-10-29 14:44 ` [PATCH proxmox-ve-rs v4 2/9] frr: add IPv6 router advertisement support Hannes Laimer
2026-10-29 14:44 ` [PATCH proxmox-ve-rs v4 3/9] ve-config: sdn: add IPv6 router advertisement settings Hannes Laimer
2026-10-29 14:44 ` [PATCH pve-manager v4 4/9] ui: sdn: add IPv6 RA / SLAAC support Hannes Laimer
2026-10-29 14:44 ` [PATCH pve-network v4 5/9] sdn: evpn: derive IP version from CIDR for gateway-less subnets Hannes Laimer
2026-10-29 14:44 ` [PATCH pve-network v4 6/9] sdn: evpn: accept untracked IPv6 neighbor advertisements Hannes Laimer
2026-10-29 14:44 ` [PATCH pve-network v4 7/9] sdn: evpn: add IPv6 RA / SLAAC support Hannes Laimer
2026-10-29 14:44 ` [PATCH pve-network v4 8/9] api: vnets: include the zone type in the vnet list Hannes Laimer
2026-10-29 14:44 ` [PATCH pve-docs v4 9/9] sdn: add IPv6 RA / SLAAC section Hannes Laimer
2026-10-29 15:42 ` superseded: [PATCH docs/manager/network/proxmox{-perl-rs,-ve-rs} v4 0/9] add IPv6 RA / SLAAC support to EVPN zones Hannes Laimer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal