all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH docs/network 0/3] SDN VXLAN IPv6 underlay support
@ 2026-01-16 11:08 Hannes Laimer
  2026-01-16 11:08 ` [pve-devel] [PATCH pve-network 1/2] sdn: vxlan: make local underlay selection work for IPv6 peers Hannes Laimer
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Hannes Laimer @ 2026-01-16 11:08 UTC (permalink / raw)
  To: pve-devel

Adds support for VXLAN zones with an IPv6 uderlay. We don't support dual
stack underlays. So we expect the peers list to be single-family, for
fabrics we prefer IPv6 if the fabrics has both.

pve-network:

Hannes Laimer (2):
  sdn: vxlan: make local underlay selection work for IPv6 peers
  sdn: vxlan: enforce single address family in peers list

 src/PVE/Network/SDN/Zones/Plugin.pm           | 72 +++++++++++++++++--
 src/PVE/Network/SDN/Zones/VxlanPlugin.pm      | 42 +++++++++--
 .../vxlan/fabric_ipv4/expected_sdn_interfaces | 26 +++++++
 src/test/zones/vxlan/fabric_ipv4/interfaces   |  5 ++
 src/test/zones/vxlan/fabric_ipv4/sdn_config   | 50 +++++++++++++
 .../vxlan/fabric_ipv6/expected_sdn_interfaces | 32 +++++++++
 src/test/zones/vxlan/fabric_ipv6/interfaces   |  5 ++
 src/test/zones/vxlan/fabric_ipv6/sdn_config   | 54 ++++++++++++++
 .../zones/vxlan/ipv6/expected_sdn_interfaces  | 15 ++++
 src/test/zones/vxlan/ipv6/interfaces          |  7 ++
 src/test/zones/vxlan/ipv6/sdn_config          | 17 +++++
 11 files changed, 314 insertions(+), 11 deletions(-)
 create mode 100644 src/test/zones/vxlan/fabric_ipv4/expected_sdn_interfaces
 create mode 100644 src/test/zones/vxlan/fabric_ipv4/interfaces
 create mode 100644 src/test/zones/vxlan/fabric_ipv4/sdn_config
 create mode 100644 src/test/zones/vxlan/fabric_ipv6/expected_sdn_interfaces
 create mode 100644 src/test/zones/vxlan/fabric_ipv6/interfaces
 create mode 100644 src/test/zones/vxlan/fabric_ipv6/sdn_config
 create mode 100644 src/test/zones/vxlan/ipv6/expected_sdn_interfaces
 create mode 100644 src/test/zones/vxlan/ipv6/interfaces
 create mode 100644 src/test/zones/vxlan/ipv6/sdn_config


pve-docs:

Hannes Laimer (1):
  sdn: vxlan: add short section about underlay address family

 vxlan-and-evpn.adoc | 8 ++++++++
 1 file changed, 8 insertions(+)


Summary over all repositories:
  12 files changed, 322 insertions(+), 11 deletions(-)

-- 
Generated by git-murpp 0.8.1


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


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

* [pve-devel] [PATCH pve-network 1/2] sdn: vxlan: make local underlay selection work for IPv6 peers
  2026-01-16 11:08 [pve-devel] [PATCH docs/network 0/3] SDN VXLAN IPv6 underlay support Hannes Laimer
@ 2026-01-16 11:08 ` Hannes Laimer
  2026-01-16 11:08 ` [pve-devel] [PATCH pve-network 2/2] sdn: vxlan: enforce single address family in peers list Hannes Laimer
  2026-01-16 11:08 ` [pve-devel] [PATCH pve-docs 1/1] sdn: vxlan: add short section about underlay address family Hannes Laimer
  2 siblings, 0 replies; 4+ messages in thread
From: Hannes Laimer @ 2026-01-16 11:08 UTC (permalink / raw)
  To: pve-devel

IPv6 peers couldn't be matched to local underlay addresses, so nodes
would not skip their own peer IP. We need this for VXLAN IPv6 support.

Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
---
 src/PVE/Network/SDN/Zones/Plugin.pm           | 72 +++++++++++++++++--
 .../zones/vxlan/ipv6/expected_sdn_interfaces  | 15 ++++
 src/test/zones/vxlan/ipv6/interfaces          |  7 ++
 src/test/zones/vxlan/ipv6/sdn_config          | 17 +++++
 4 files changed, 104 insertions(+), 7 deletions(-)
 create mode 100644 src/test/zones/vxlan/ipv6/expected_sdn_interfaces
 create mode 100644 src/test/zones/vxlan/ipv6/interfaces
 create mode 100644 src/test/zones/vxlan/ipv6/sdn_config

diff --git a/src/PVE/Network/SDN/Zones/Plugin.pm b/src/PVE/Network/SDN/Zones/Plugin.pm
index 826ebdf..bfa96f7 100644
--- a/src/PVE/Network/SDN/Zones/Plugin.pm
+++ b/src/PVE/Network/SDN/Zones/Plugin.pm
@@ -4,6 +4,7 @@ use strict;
 use warnings;
 
 use PVE::Tools qw(run_command);
+use Net::IP qw(ip_is_ipv6);
 use PVE::IPRoute2;
 use PVE::JSONSchema;
 use PVE::Cluster;
@@ -278,14 +279,54 @@ sub del_bridge_fdb {
 
 #helper
 
+sub _normalize_ip {
+    my ($ip) = @_;
+
+    return undef if !defined($ip);
+    $ip =~ s!/.*$!!;
+    return $ip;
+}
+
+sub _get_iface_addresses {
+    my ($iface_cfg) = @_;
+
+    return () if !$iface_cfg;
+
+    my @addrs;
+    for my $key (qw(address address6)) {
+        my $val = $iface_cfg->{$key};
+        next if !defined($val);
+        if (ref($val) eq 'ARRAY') {
+            push @addrs, @$val;
+        } else {
+            push @addrs, $val;
+        }
+    }
+
+    return @addrs;
+}
+
+sub _address_matches_family {
+    my ($address, $family) = @_;
+
+    my $ip = _normalize_ip($address);
+    return 0 if !defined($ip);
+
+    return ip_is_ipv6($ip) ? $family == 6 : $family == 4;
+}
+
 sub get_local_route_ip {
     my ($targetip) = @_;
 
     my $ip = undef;
     my $interface = undef;
 
+    my @cmd = ('/sbin/ip');
+    push @cmd, '-6' if ip_is_ipv6($targetip);
+    push @cmd, 'route', 'get', $targetip;
+
     run_command(
-        ['/sbin/ip', 'route', 'get', $targetip],
+        \@cmd,
         outfunc => sub {
             if ($_[0] =~ m/src ($PVE::Tools::IPRE)/) {
                 $ip = $1;
@@ -307,16 +348,33 @@ sub find_local_ip_interface_peers {
 
     #if iface is defined, return ip if exist (if not,try to find it on other ifaces)
     if ($iface) {
-        my $ip = $ifaces->{$iface}->{address};
-        return ($ip, $iface) if $ip;
+        my @iface_addrs = _get_iface_addresses($ifaces->{$iface});
+        if (!@{$peers} && @iface_addrs) {
+            my $ip = _normalize_ip($iface_addrs[0]);
+            return ($ip, $iface) if $ip;
+        }
+        foreach my $address (@{$peers}) {
+            my $family = ip_is_ipv6($address) ? 6 : 4;
+            foreach my $iface_addr (@iface_addrs) {
+                next if !_address_matches_family($iface_addr, $family);
+                my $ip = _normalize_ip($iface_addr);
+                return ($ip, $iface) if $ip;
+            }
+        }
     }
 
     #is a local ip member of peers list ?
     foreach my $address (@{$peers}) {
-        while (my $interface = each %$ifaces) {
-            my $ip = $ifaces->{$interface}->{address};
-            if ($ip && $ip eq $address) {
-                return ($ip, $interface);
+        my $family = ip_is_ipv6($address) ? 6 : 4;
+        my $peer_ip = _normalize_ip($address);
+        next if !defined($peer_ip);
+        foreach my $interface (keys %$ifaces) {
+            foreach my $iface_addr (_get_iface_addresses($ifaces->{$interface})) {
+                next if !_address_matches_family($iface_addr, $family);
+                my $ip = _normalize_ip($iface_addr);
+                if ($ip && $ip eq $peer_ip) {
+                    return ($ip, $interface);
+                }
             }
         }
     }
diff --git a/src/test/zones/vxlan/ipv6/expected_sdn_interfaces b/src/test/zones/vxlan/ipv6/expected_sdn_interfaces
new file mode 100644
index 0000000..032ab99
--- /dev/null
+++ b/src/test/zones/vxlan/ipv6/expected_sdn_interfaces
@@ -0,0 +1,15 @@
+#version:1
+
+auto myvnet
+iface myvnet
+	bridge_ports vxlan_myvnet
+	bridge_stp off
+	bridge_fd 0
+	mtu 1450
+
+auto vxlan_myvnet
+iface vxlan_myvnet
+	vxlan-id 100
+	vxlan_remoteip 2a08:2200:100:1::11
+	vxlan_remoteip 2a08:2200:100:1::12
+	mtu 1450
diff --git a/src/test/zones/vxlan/ipv6/interfaces b/src/test/zones/vxlan/ipv6/interfaces
new file mode 100644
index 0000000..602179b
--- /dev/null
+++ b/src/test/zones/vxlan/ipv6/interfaces
@@ -0,0 +1,7 @@
+auto vmbr0
+iface vmbr0 inet static
+	address 2a08:2200:100:1::10/64
+	gateway 2a08:2200:100:1::1
+        bridge-ports eth0
+        bridge-stp off
+        bridge-fd 0
diff --git a/src/test/zones/vxlan/ipv6/sdn_config b/src/test/zones/vxlan/ipv6/sdn_config
new file mode 100644
index 0000000..484be23
--- /dev/null
+++ b/src/test/zones/vxlan/ipv6/sdn_config
@@ -0,0 +1,17 @@
+{
+  version => 1,
+  vnets   => {
+               ids => {
+                        myvnet => { tag => 100, type => "vnet", zone => "myzone" },
+                      },
+             },
+  zones   => {
+               ids => {
+                        myzone => {
+                                    ipam => "pve",
+                                    type => "vxlan",
+                                    peers => "2a08:2200:100:1::10,2a08:2200:100:1::11,2a08:2200:100:1::12",
+                                  },
+                      },
+             },
+}
-- 
2.47.3



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


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

* [pve-devel] [PATCH pve-network 2/2] sdn: vxlan: enforce single address family in peers list
  2026-01-16 11:08 [pve-devel] [PATCH docs/network 0/3] SDN VXLAN IPv6 underlay support Hannes Laimer
  2026-01-16 11:08 ` [pve-devel] [PATCH pve-network 1/2] sdn: vxlan: make local underlay selection work for IPv6 peers Hannes Laimer
@ 2026-01-16 11:08 ` Hannes Laimer
  2026-01-16 11:08 ` [pve-devel] [PATCH pve-docs 1/1] sdn: vxlan: add short section about underlay address family Hannes Laimer
  2 siblings, 0 replies; 4+ messages in thread
From: Hannes Laimer @ 2026-01-16 11:08 UTC (permalink / raw)
  To: pve-devel

We want the underlay to either be IPv4 or IPv6. A dual-stack underlay
adds ambiguity and extra complexity in source selection and validation
without a real use-case.

This includes tests for fabrics, we prefer IPv6 if the fabric offers
both.

Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
---
 src/PVE/Network/SDN/Zones/VxlanPlugin.pm      | 42 +++++++++++++--
 .../vxlan/fabric_ipv4/expected_sdn_interfaces | 26 +++++++++
 src/test/zones/vxlan/fabric_ipv4/interfaces   |  5 ++
 src/test/zones/vxlan/fabric_ipv4/sdn_config   | 50 +++++++++++++++++
 .../vxlan/fabric_ipv6/expected_sdn_interfaces | 32 +++++++++++
 src/test/zones/vxlan/fabric_ipv6/interfaces   |  5 ++
 src/test/zones/vxlan/fabric_ipv6/sdn_config   | 54 +++++++++++++++++++
 7 files changed, 210 insertions(+), 4 deletions(-)
 create mode 100644 src/test/zones/vxlan/fabric_ipv4/expected_sdn_interfaces
 create mode 100644 src/test/zones/vxlan/fabric_ipv4/interfaces
 create mode 100644 src/test/zones/vxlan/fabric_ipv4/sdn_config
 create mode 100644 src/test/zones/vxlan/fabric_ipv6/expected_sdn_interfaces
 create mode 100644 src/test/zones/vxlan/fabric_ipv6/interfaces
 create mode 100644 src/test/zones/vxlan/fabric_ipv6/sdn_config

diff --git a/src/PVE/Network/SDN/Zones/VxlanPlugin.pm b/src/PVE/Network/SDN/Zones/VxlanPlugin.pm
index 1db610f..ac006b5 100644
--- a/src/PVE/Network/SDN/Zones/VxlanPlugin.pm
+++ b/src/PVE/Network/SDN/Zones/VxlanPlugin.pm
@@ -4,6 +4,7 @@ use strict;
 use warnings;
 use PVE::Network::SDN::Zones::Plugin;
 use PVE::Tools qw($IPV4RE);
+use Net::IP qw(ip_is_ipv6);
 use PVE::INotify;
 use PVE::Network::SDN::Controllers::EvpnPlugin;
 use PVE::Exception qw(raise raise_param_exc);
@@ -104,15 +105,35 @@ sub generate_sdn_config {
         my $current_node = eval { $config->get_node($plugin_config->{fabric}, $local_node) };
         die "could not configure VXLAN zone $plugin_config->{id}: $@" if $@;
 
+        my $all_v6 = 1;
+        my $all_v4 = 1;
+        for my $node (values %$nodes) {
+            $all_v6 = 0 if !$node->{ip6};
+            $all_v4 = 0 if !$node->{ip};
+        }
+
+        # the following checks are not strictly necesarry cause we we shouldn't
+        # even get here if there are nodes on the fabric that don't have an
+        # address on any of the prefixes defined for the fabric
+        my $addr_key;
+        if ($all_v6) {
+            $addr_key = 'ip6';
+        } elsif ($all_v4) {
+            $addr_key = 'ip';
+        } else {
+            die
+                "Fabric $fabric->{id} has no consistent address family for all nodes (need all v6 or all v4)";
+        }
+
         die
-            "Node $local_node requires an IP in the fabric $fabric->{id} to configure the VXLAN zone $plugin_config->{id}"
-            if !$current_node->{ip};
+            "Node $local_node requires a $addr_key address in fabric $fabric->{id} to configure VXLAN zone $plugin_config->{id}"
+            if !$current_node->{$addr_key};
 
         for my $node (values %$nodes) {
-            push @peers, $node->{ip} if $node->{ip};
+            push @peers, $node->{$addr_key} if $node->{$addr_key};
         }
 
-        $ifaceip = $current_node->{ip};
+        $ifaceip = $current_node->{$addr_key};
     } else {
         die "neither peers nor fabric configured for VXLAN zone $plugin_config->{id}";
     }
@@ -163,6 +184,19 @@ sub on_update_hook {
             fabric => "must have exactly one of peers / fabric defined",
         });
     }
+
+    if ($zone->{peers}) {
+        my @peers = PVE::Tools::split_list($zone->{peers});
+        my $family;
+
+        foreach my $peer (@peers) {
+            my $peer_family = ip_is_ipv6($peer) ? 6 : 4;
+            if (defined($family) && $family != $peer_family) {
+                raise_param_exc({ peers => "must contain only IPv4 or only IPv6 addresses" });
+            }
+            $family = $peer_family;
+        }
+    }
 }
 
 sub vnet_update_hook {
diff --git a/src/test/zones/vxlan/fabric_ipv4/expected_sdn_interfaces b/src/test/zones/vxlan/fabric_ipv4/expected_sdn_interfaces
new file mode 100644
index 0000000..3423104
--- /dev/null
+++ b/src/test/zones/vxlan/fabric_ipv4/expected_sdn_interfaces
@@ -0,0 +1,26 @@
+#version:1
+
+auto myvnet
+iface myvnet
+	bridge_ports vxlan_myvnet
+	bridge_stp off
+	bridge_fd 0
+	mtu 1450
+
+auto vxlan_myvnet
+iface vxlan_myvnet
+	vxlan-id 100
+	vxlan_remoteip 172.20.3.2
+	vxlan_remoteip 172.20.3.3
+	mtu 1450
+
+auto dummy_test
+iface dummy_test inet static
+	address 172.20.3.1/32
+	link-type dummy
+	ip-forward 1
+
+auto ens18
+iface ens18 inet static
+	address 172.20.3.1/32
+	ip-forward 1
diff --git a/src/test/zones/vxlan/fabric_ipv4/interfaces b/src/test/zones/vxlan/fabric_ipv4/interfaces
new file mode 100644
index 0000000..68b6a88
--- /dev/null
+++ b/src/test/zones/vxlan/fabric_ipv4/interfaces
@@ -0,0 +1,5 @@
+auto vmbr0
+iface vmbr0 inet manual
+        bridge-ports eth0
+        bridge-stp off
+        bridge-fd 0
diff --git a/src/test/zones/vxlan/fabric_ipv4/sdn_config b/src/test/zones/vxlan/fabric_ipv4/sdn_config
new file mode 100644
index 0000000..eaaf3a9
--- /dev/null
+++ b/src/test/zones/vxlan/fabric_ipv4/sdn_config
@@ -0,0 +1,50 @@
+{
+  version => 1,
+  vnets   => {
+               ids => {
+                        myvnet => { tag => 100, type => "vnet", zone => "myzone" },
+                      },
+             },
+  zones   => {
+               ids => {
+                        myzone => {
+                                    ipam => "pve",
+                                    type => "vxlan",
+                                    fabric => "test",
+                                  },
+                      },
+             },
+  fabrics => {
+               ids => {
+                        test => {
+                                  type => 'openfabric_fabric',
+                                  id => 'test',
+                                  ip_prefix => '172.20.3.0/24',
+                                },
+                        test_localhost => {
+                                       id => 'test_localhost',
+                                       type => 'openfabric_node',
+                                       interfaces => [
+                                         'name=ens18',
+                                       ],
+                                       ip => '172.20.3.1',
+                                     },
+                        test_node2 => {
+                                   id => 'test_node2',
+                                   type => 'openfabric_node',
+                                   interfaces => [
+                                     'name=ens18',
+                                   ],
+                                   ip => '172.20.3.2',
+                                 },
+                        test_node3 => {
+                                   id => 'test_node3',
+                                   type => 'openfabric_node',
+                                   interfaces => [
+                                     'name=ens18',
+                                   ],
+                                   ip => '172.20.3.3',
+                                 },
+                      },
+             },
+}
diff --git a/src/test/zones/vxlan/fabric_ipv6/expected_sdn_interfaces b/src/test/zones/vxlan/fabric_ipv6/expected_sdn_interfaces
new file mode 100644
index 0000000..7351fc9
--- /dev/null
+++ b/src/test/zones/vxlan/fabric_ipv6/expected_sdn_interfaces
@@ -0,0 +1,32 @@
+#version:1
+
+auto myvnet
+iface myvnet
+	bridge_ports vxlan_myvnet
+	bridge_stp off
+	bridge_fd 0
+	mtu 1450
+
+auto vxlan_myvnet
+iface vxlan_myvnet
+	vxlan-id 100
+	vxlan_remoteip fd00::2
+	vxlan_remoteip fd00::3
+	mtu 1450
+
+auto dummy_test
+iface dummy_test inet static
+	address 172.20.3.1/32
+	link-type dummy
+	ip-forward 1
+
+auto dummy_test
+iface dummy_test inet6 static
+	address fd00::1/128
+	link-type dummy
+	ip-forward 1
+
+auto ens18
+iface ens18 inet static
+	address 172.20.3.1/32
+	ip-forward 1
diff --git a/src/test/zones/vxlan/fabric_ipv6/interfaces b/src/test/zones/vxlan/fabric_ipv6/interfaces
new file mode 100644
index 0000000..68b6a88
--- /dev/null
+++ b/src/test/zones/vxlan/fabric_ipv6/interfaces
@@ -0,0 +1,5 @@
+auto vmbr0
+iface vmbr0 inet manual
+        bridge-ports eth0
+        bridge-stp off
+        bridge-fd 0
diff --git a/src/test/zones/vxlan/fabric_ipv6/sdn_config b/src/test/zones/vxlan/fabric_ipv6/sdn_config
new file mode 100644
index 0000000..f463a88
--- /dev/null
+++ b/src/test/zones/vxlan/fabric_ipv6/sdn_config
@@ -0,0 +1,54 @@
+{
+  version => 1,
+  vnets   => {
+               ids => {
+                        myvnet => { tag => 100, type => "vnet", zone => "myzone" },
+                      },
+             },
+  zones   => {
+               ids => {
+                        myzone => {
+                                    ipam => "pve",
+                                    type => "vxlan",
+                                    fabric => "test",
+                                  },
+                      },
+             },
+  fabrics => {
+               ids => {
+                        test => {
+                                  type => 'openfabric_fabric',
+                                  id => 'test',
+                                  ip_prefix => '172.20.3.0/24',
+                                  ip6_prefix => 'fd00::/64',
+                                },
+                        test_localhost => {
+                                       id => 'test_localhost',
+                                       type => 'openfabric_node',
+                                       interfaces => [
+                                         'name=ens18',
+                                       ],
+                                       ip => '172.20.3.1',
+                                       ip6 => 'fd00::1',
+                                     },
+                        test_node2 => {
+                                   id => 'test_node2',
+                                   type => 'openfabric_node',
+                                   interfaces => [
+                                     'name=ens18',
+                                   ],
+                                   ip => '172.20.3.2',
+                                   ip6 => 'fd00::2',
+                                 },
+                        test_node3 => {
+                                   id => 'test_node3',
+                                   type => 'openfabric_node',
+                                   interfaces => [
+                                     'name=ens18',
+                                   ],
+                                   ip => '172.20.3.3',
+                                   ip6 => 'fd00::3',
+                                 },
+                      },
+             },
+}
-- 
2.47.3



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


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

* [pve-devel] [PATCH pve-docs 1/1] sdn: vxlan: add short section about underlay address family
  2026-01-16 11:08 [pve-devel] [PATCH docs/network 0/3] SDN VXLAN IPv6 underlay support Hannes Laimer
  2026-01-16 11:08 ` [pve-devel] [PATCH pve-network 1/2] sdn: vxlan: make local underlay selection work for IPv6 peers Hannes Laimer
  2026-01-16 11:08 ` [pve-devel] [PATCH pve-network 2/2] sdn: vxlan: enforce single address family in peers list Hannes Laimer
@ 2026-01-16 11:08 ` Hannes Laimer
  2 siblings, 0 replies; 4+ messages in thread
From: Hannes Laimer @ 2026-01-16 11:08 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
---
 vxlan-and-evpn.adoc | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/vxlan-and-evpn.adoc b/vxlan-and-evpn.adoc
index 12bcea9..4349ba9 100644
--- a/vxlan-and-evpn.adoc
+++ b/vxlan-and-evpn.adoc
@@ -19,6 +19,14 @@ Each overlay network is known as a VXLAN Segment and identified by a unique
 VXLAN encapsulation add 50bytes overhead, so you need to increase mtu on your host
 physical interfaces to 1550 at minimum. (or decrease mtu inside your vms to 1450)
 
+Underlay address family
+^^^^^^^^^^^^^^^^^^^^^^^
+
+VXLAN underlays are configured either IPv4-only or IPv6-only. Dual-stack
+underlays are not supported; the peer list must be a single address family.
+When using a fabric that provides both IPv4 and IPv6 node addresses, IPv6 is
+preferred.
+
 For BUM traffic (broadcast / unknown unicast traffic, multicast),
 we have 3 different VXLAN setup modes : multicast, unicast, bgp-evpn
 
-- 
2.47.3



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


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

end of thread, other threads:[~2026-01-16 11:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-01-16 11:08 [pve-devel] [PATCH docs/network 0/3] SDN VXLAN IPv6 underlay support Hannes Laimer
2026-01-16 11:08 ` [pve-devel] [PATCH pve-network 1/2] sdn: vxlan: make local underlay selection work for IPv6 peers Hannes Laimer
2026-01-16 11:08 ` [pve-devel] [PATCH pve-network 2/2] sdn: vxlan: enforce single address family in peers list Hannes Laimer
2026-01-16 11:08 ` [pve-devel] [PATCH pve-docs 1/1] sdn: vxlan: add short section about underlay address family 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