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 manager/network/proxmox{-ve-rs,-perl-rs} 0/6] sdn: add BGP fabric
Date: Wed, 15 Apr 2026 13:13:46 +0200	[thread overview]
Message-ID: <62557db4-bad7-49f9-be01-4f13faec93cd@proxmox.com> (raw)
In-Reply-To: <20260327151031.149360-1-h.laimer@proxmox.com>

superseded-by:
https://lore.proxmox.com/pve-devel/20260415111134.124720-1-h.laimer@proxmox.com/

On 2026-03-27 16:10, Hannes Laimer wrote:
> This patch series adds BGP as a third fabric protocol alongside OpenFabric
> and OSPF. It targets eBGP unnumbered underlays where each node has a unique
> ASN and peers over physical interfaces without IP assignment on fabric links.
> 
> ## eBGP underlay
> 
> Each node gets its own ASN (e.g. 65001, 65002, 65003) and peers with its
> neighbors using 'remote-as external' on unnumbered interfaces. The fabric
> peer-group is named after the fabric ID and uses BFD when enabled.
> 
> ## EVPN overlay
> 
> When the EVPN controller references a BGP fabric, the overlay sessions run
> as eBGP too. The node's fabric ASN becomes the 'router bgp' process ASN.
> Since every node has a different ASN, auto-derived route targets would differ
> per node, so the EVPN controller ASN is used via 'autort as' to produce
> uniform RTs. This relies on a patch we ship with our frr, upstream
> reference: [1]. Two additional flags are enabled:
> 'bestpath as-path multipath-relax' for ECMP across different ASNs, and
> 'disable-ebgp-connected-route-check' for loopback-based VTEP peers.
> 
> An iBGP overlay using 'local-as' was considered but rejected due to a
> limitation in how FRR handles hop limits. See the EVPN commit message for
> details.
> 
> ## Single BGP process
> 
> Unlike OSPF and OpenFabric which have their own FRR protocol blocks, BGP
> fabric config must coexist with the EVPN BGP config in one 'router bgp'
> instance. The fabric generates its own BgpRouter and merges it into the
> existing one via merge_fabric(), appending neighbor groups and address
> families without overwriting the EVPN settings.
> 
> 
> Thanks a lot @Stefan for the base of this series!
> 
> 
> [1] https://github.com/FRRouting/frr/issues/17945
> 
> 
> 
> proxmox-ve-rs:
> 
> Hannes Laimer (1):
>   sdn: fabric: add BGP protocol support
> 
>  proxmox-frr/src/ser/bgp.rs                    |  66 +++++
>  proxmox-frr/src/ser/mod.rs                    |   1 +
>  proxmox-ve-config/src/sdn/fabric/frr.rs       | 258 ++++++++++++++++-
>  proxmox-ve-config/src/sdn/fabric/mod.rs       | 100 +++++++
>  .../src/sdn/fabric/section_config/fabric.rs   |  22 ++
>  .../src/sdn/fabric/section_config/mod.rs      |  19 ++
>  .../src/sdn/fabric/section_config/node.rs     |  21 ++
>  .../sdn/fabric/section_config/protocol/bgp.rs | 266 ++++++++++++++++++
>  .../sdn/fabric/section_config/protocol/mod.rs |   1 +
>  .../tests/fabric/cfg/bgp_default/fabrics.cfg  |  17 ++
>  .../fabric/cfg/bgp_ipv6_only/fabrics.cfg      |  17 ++
>  proxmox-ve-config/tests/fabric/main.rs        |  58 ++++
>  .../snapshots/fabric__bgp_default_pve.snap    |  28 ++
>  .../snapshots/fabric__bgp_default_pve1.snap   |  27 ++
>  .../snapshots/fabric__bgp_ipv6_only_pve.snap  |  29 ++
>  .../snapshots/fabric__bgp_ipv6_only_pve1.snap |  28 ++
>  16 files changed, 955 insertions(+), 3 deletions(-)
>  create mode 100644 proxmox-ve-config/src/sdn/fabric/section_config/protocol/bgp.rs
>  create mode 100644 proxmox-ve-config/tests/fabric/cfg/bgp_default/fabrics.cfg
>  create mode 100644 proxmox-ve-config/tests/fabric/cfg/bgp_ipv6_only/fabrics.cfg
>  create mode 100644 proxmox-ve-config/tests/fabric/snapshots/fabric__bgp_default_pve.snap
>  create mode 100644 proxmox-ve-config/tests/fabric/snapshots/fabric__bgp_default_pve1.snap
>  create mode 100644 proxmox-ve-config/tests/fabric/snapshots/fabric__bgp_ipv6_only_pve.snap
>  create mode 100644 proxmox-ve-config/tests/fabric/snapshots/fabric__bgp_ipv6_only_pve1.snap
> 
> 
> proxmox-perl-rs:
> 
> Hannes Laimer (2):
>   sdn: fabrics: add BGP config generation
>   sdn: fabrics: add BGP status endpoints
> 
>  pve-rs/src/bindings/sdn/fabrics.rs | 100 +++++++++++++++++++++++++++
>  pve-rs/src/sdn/status.rs           | 105 ++++++++++++++++++++++++++++-
>  2 files changed, 203 insertions(+), 2 deletions(-)
> 
> 
> pve-network:
> 
> Hannes Laimer (2):
>   sdn: fabrics: register bgp as a fabric protocol type
>   sdn: evpn: support eBGP EVPN over BGP fabric underlay
> 
>  src/PVE/Network/SDN/Controllers/EvpnPlugin.pm | 40 ++++++++-
>  src/PVE/Network/SDN/Fabrics.pm                | 18 +++-
>  .../bgp_fabric/expected_controller_config     | 73 ++++++++++++++++
>  .../evpn/bgp_fabric/expected_sdn_interfaces   | 56 ++++++++++++
>  src/test/zones/evpn/bgp_fabric/interfaces     |  6 ++
>  src/test/zones/evpn/bgp_fabric/sdn_config     | 85 +++++++++++++++++++
>  6 files changed, 275 insertions(+), 3 deletions(-)
>  create mode 100644 src/test/zones/evpn/bgp_fabric/expected_controller_config
>  create mode 100644 src/test/zones/evpn/bgp_fabric/expected_sdn_interfaces
>  create mode 100644 src/test/zones/evpn/bgp_fabric/interfaces
>  create mode 100644 src/test/zones/evpn/bgp_fabric/sdn_config
> 
> 
> pve-manager:
> 
> Hannes Laimer (1):
>   ui: sdn: add BGP fabric support
> 
>  www/manager6/Makefile                         |  3 ++
>  www/manager6/sdn/FabricsView.js               | 12 +++++
>  www/manager6/sdn/fabrics/NodeEdit.js          |  1 +
>  www/manager6/sdn/fabrics/bgp/FabricEdit.js    | 52 +++++++++++++++++++
>  .../sdn/fabrics/bgp/InterfacePanel.js         | 15 ++++++
>  www/manager6/sdn/fabrics/bgp/NodeEdit.js      | 32 ++++++++++++
>  6 files changed, 115 insertions(+)
>  create mode 100644 www/manager6/sdn/fabrics/bgp/FabricEdit.js
>  create mode 100644 www/manager6/sdn/fabrics/bgp/InterfacePanel.js
>  create mode 100644 www/manager6/sdn/fabrics/bgp/NodeEdit.js
> 
> 
> Summary over all repositories:
>   30 files changed, 1548 insertions(+), 8 deletions(-)
> 





      parent reply	other threads:[~2026-04-15 11:14 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-27 15:10 Hannes Laimer
2026-03-27 15:10 ` [PATCH proxmox-ve-rs 1/1] sdn: fabric: add BGP protocol support Hannes Laimer
2026-03-27 15:10 ` [PATCH proxmox-perl-rs 1/2] sdn: fabrics: add BGP config generation Hannes Laimer
2026-03-27 15:10 ` [PATCH proxmox-perl-rs 2/2] sdn: fabrics: add BGP status endpoints Hannes Laimer
2026-03-27 15:10 ` [PATCH pve-network 1/2] sdn: fabrics: register bgp as a fabric protocol type Hannes Laimer
2026-03-27 15:10 ` [PATCH pve-network 2/2] sdn: evpn: support eBGP EVPN over BGP fabric underlay Hannes Laimer
2026-03-27 15:10 ` [PATCH pve-manager 1/1] ui: sdn: add BGP fabric support Hannes Laimer
2026-04-15 11:13 ` 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=62557db4-bad7-49f9-be01-4f13faec93cd@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