all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Hannes Laimer <h.laimer@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: superseded: [PATCH pve-network] sdn: evpn: support eBGP VTEPs over BGP fabric underlays
Date: Wed, 13 May 2026 20:43:35 +0200	[thread overview]
Message-ID: <176777cf-52fd-4628-afca-1abc4fecaece@proxmox.com> (raw)
In-Reply-To: <20260512155024.311919-1-h.laimer@proxmox.com>

superseded:
https://lore.proxmox.com/pve-devel/20260513184213.506775-1-h.laimer@proxmox.com/T/#t

On 2026-05-12 17:49, Hannes Laimer wrote:
> When the EVPN underlay is a BGP fabric, every node already has a unique
> per-node ASN for eBGP unnumbered peering. Reuse that ASN for the EVPN
> overlay too when the user picks bgp-mode=external, so VTEP sessions
> naturally form as eBGP between different ASNs without needing a separate
> overlay-ASN scheme. The existing local-as plumbing handles the resulting
> mismatch with the router's main ASN.
> 
> The EVPN controller's own ASN is still used for autoderived route-target
> values, keeping route-targets consistent across the fabric even though
> each VTEP advertises under its own per-node ASN.
> 
> Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
> ---
> this should have been part of [1], but since I forgot to include it,
> sending it as a follow-up. For this+the main bgp-fabric series
> pre-built packages are available on sani. should make testing a little
> easier :P
> 
> [1] https://lore.proxmox.com/pve-devel/20260512141305.199664-1-h.laimer@proxmox.com/T/#t
> 
>  src/PVE/Network/SDN/Controllers/EvpnPlugin.pm | 26 +++++++++++++++++--
>  1 file changed, 24 insertions(+), 2 deletions(-)
> 
> diff --git a/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm b/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm
> index 3264cf5..4c7fb46 100644
> --- a/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm
> +++ b/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm
> @@ -114,6 +114,7 @@ sub generate_frr_config {
>      my $ifaceip = undef;
>      my $routerid = undef;
>      my $bgp_mode = $plugin_config->{'bgp-mode'} // 'legacy';
> +    my $use_per_node_asn = 0;
>  
>      my $bgp_controller = find_bgp_controller($local_node, $controller_cfg);
>      my $isis_controller = find_isis_controller($local_node, $controller_cfg);
> @@ -152,6 +153,21 @@ sub generate_frr_config {
>          $ifaceip = $current_node->{ip};
>          $routerid = $current_node->{ip};
>  
> +        if ($fabric->{protocol} eq 'bgp' && $bgp_mode eq 'external') {
> +            if (!$current_node->{asn}) {
> +                log_warn(
> +                    "Node $local_node has no ASN in BGP fabric $fabric->{id};"
> +                    . " cannot configure eBGP VTEPs for EVPN controller"
> +                    . " $plugin_config->{id}"
> +                );
> +                return;
> +            }
> +            $asn = int($current_node->{asn});
> +            $ebgp = 1;
> +            $autortas = $plugin_config->{asn};
> +            $use_per_node_asn = 1;
> +        }
> +
>      } elsif ($plugin_config->{'peers'}) {
>          @peers = PVE::Tools::split_list($plugin_config->{'peers'});
>  
> @@ -211,8 +227,14 @@ sub generate_frr_config {
>      if ($bgp_mode eq 'legacy') {
>          $neighbor_group->{ebgp_multihop} = 10 if $ebgp && $loopback;
>      } elsif ($bgp_mode eq 'external') {
> -        $neighbor_group->{ebgp_multihop} = int($plugin_config->{'ebgp-multihop'})
> -            if $ebgp && $plugin_config->{'ebgp-multihop'};
> +        if ($ebgp && $plugin_config->{'ebgp-multihop'}) {
> +            $neighbor_group->{ebgp_multihop} = int($plugin_config->{'ebgp-multihop'});
> +        } elsif ($use_per_node_asn) {
> +            # eBGP VTEPs over a BGP fabric reach each peer via the per-node
> +            # fabric loopback. The peers are not directly connected, so the
> +            # session needs multihop to form.
> +            $neighbor_group->{ebgp_multihop} = 10;
> +        }
>      }
>  
>      if ($asn != int($bgp_router->{asn})) {





      reply	other threads:[~2026-05-13 18:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-12 15:50 [PATCH pve-network] sdn: evpn: support eBGP VTEPs over BGP fabric underlays Hannes Laimer
2026-05-13 18:43 ` Hannes Laimer [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=176777cf-52fd-4628-afca-1abc4fecaece@proxmox.com \
    --to=h.laimer@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 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