public inbox for pve-devel@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 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