public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: "Lukas Sichert" <l.sichert@proxmox.com>
To: "Gabriel Goller" <g.goller@proxmox.com>, <pve-devel@lists.proxmox.com>
Subject: Re: [PATCH network] sdn: vxlan: always set local tunnel IP
Date: Mon, 20 Jul 2026 18:51:49 +0200	[thread overview]
Message-ID: <DK3JYKQU39AH.34WYQGIZ0DIZR@proxmox.com> (raw)
In-Reply-To: <20260702143349.252142-1-g.goller@proxmox.com>

On 2026-07-02 16:33, Gabriel Goller <g.goller@proxmox.com> wrote:

> Frr 10.6 changed the evpn advertise-all-vni handling and no longer
> falls back to the BGP router-id to derive the local vtep address for
> vxlan interfaces without an explicit local tunnel IP.
>
> This breaks setups where an evpn controller is used together with a
> vxlan zone to get plain L2VNIs. In that setup, the vxlan zone creates
> the linux vxlan devices, while the evpn controller advertises them
> via frr's advertise-all-vni. Without a local vxlan tunnel IP on the
> interface, frr 10.6 cannot reliably determine the local vtep address and
> the VNI is not advertised/handled correctly.
>
> Explicitly emit the ifupdown2 `vxlan-local-tunnelip` stanza for vxlan
> zones, using the local peer/fabric underlay address that is already
> determined while generating the zone configuration. Fail generation if
> no local tunnel IP can be determined, since generating such an interface
> would result in a broken evpn/vxlan setup with current frr.
>
> evpn zones already emit `vxlan-local-tunnelip` for their vxlan devices
> when the local vtep address is known.
>
> Fixes: #7766.
> Signed-off-by: Gabriel Goller <g.goller@proxmox.com>

I tested the FRR backport [1] together with the PVE SDN patch.

The custom datapath tests used two nodes:

  pve1-cluster: vmbr0 with 172.16.0.100/24 and 172.16.0.200/24,
                ctestvx VNI 4243 with 10.0.44.1/24
  pve2-cluster: vmbr0 with 172.16.0.101/24,
                ctestvx VNI 4243 with 10.0.44.2/24

1. No patch applied

With the affected FRR package and the generated VXLAN interface not having
an explicit `vxlan-local-tunnelip`, the kernel VXLAN interface existed:

  vxlan id 10600 srcport 0 0 dstport 4789

but FRR did not detect/advertise the L2 VNI:

  Number of L2 VNIs: 0

In the custom no-local VXLAN setup, traffic sent to both tested local
underlay addresses was decapsulated successfully. When the route towards
the remote underlay selected `src 172.16.0.200`, outgoing VXLAN packets
also used `172.16.0.200` as outer source.

2. Only the PVE SDN patch applied

After applying the PVE SDN patch and regenerating the SDN configuration,
the generated VXLAN interface contained an explicit local tunnel IP:

  vxlan-local-tunnelip 172.16.0.100

After reloading the network configuration, the kernel VXLAN interface also
had the corresponding local address:

  vxlan id 10600 local 172.16.0.100 srcport 0 0 dstport 4789

After restarting FRR, the VNI was detected and advertised again with
`172.16.0.100` as local VTEP address:

  Number of L2 VNIs: 1
  * 10600 L2 172.16.0.100:2 65010:10600 65010:10600 default

Compared to the no-local custom setup, receiving traffic sent to either
tested local underlay address still worked. The difference was the outgoing
source address: with `local 172.16.0.100` configured on the VXLAN device,
outgoing VXLAN packets used `172.16.0.100` as outer source even when the
route lookup selected `src 172.16.0.200`.

In the custom test this resulted in asymmetric outer VXLAN traffic: the
echo request from the node with the explicit local tunnel IP used
`172.16.0.100` as outer source, while the remote node sent the echo reply
back to `172.16.0.200`, because its FDB entry pointed there. The overlay
ping still succeeded.

3. PVE SDN patch and FRR backport applied

With both patches applied, the generated VXLAN interface still contained
the explicit `vxlan-local-tunnelip`, and FRR continued to detect and
advertise the VNI with `172.16.0.100` as local VTEP address:

  vxlan id 10600 local 172.16.0.100 srcport 0 0 dstport 4789
  Number of L2 VNIs: 1
  * 10600 L2 172.16.0.100:2 65010:10600 65010:10600 default

The custom two-node setup showed the same datapath behavior as in case 2
when an explicit local tunnel IP was configured: traffic sent to both
tested local underlay addresses was decapsulated successfully. For outgoing
traffic, the configured VXLAN local tunnel IP was used as outer source,
even when the route lookup selected a different `src` address. The replies
were sent to the address configured in the remote FDB entry and were also
decapsulated successfully.

[1] https://lore.proxmox.com/all/20260714111858.232230-1-g.goller@proxmox.com/





      parent reply	other threads:[~2026-07-20 16:51 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-02 14:33 [PATCH network] sdn: vxlan: always set local tunnel IP Gabriel Goller
2026-07-02 14:37 ` Gabriel Goller
2026-07-08  9:06   ` Gabriel Goller
2026-07-08  9:35 ` Gabriel Goller
2026-07-14 10:44 ` Lukas Sichert
2026-07-14 11:47   ` Gabriel Goller
2026-07-20 16:51 ` Lukas Sichert [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DK3JYKQU39AH.34WYQGIZ0DIZR@proxmox.com \
    --to=l.sichert@proxmox.com \
    --cc=g.goller@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal