public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH manager/network/proxmox{-ve-rs,-perl-rs} 0/6] sdn: add BGP fabric
@ 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
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Hannes Laimer @ 2026-03-27 15:10 UTC (permalink / raw)
  To: pve-devel

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(-)

-- 
Generated by murpp 0.9.0




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

end of thread, other threads:[~2026-03-27 15:11 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-03-27 15:10 [PATCH manager/network/proxmox{-ve-rs,-perl-rs} 0/6] sdn: add BGP fabric 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

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