Tenant Fabric: Project Plan #
The network tenants run on, from its architecture to DNS publication, one of three plans for the tenant platform with Tenant Lifecycle and Tenant Platform Services.
Roadmap item: Tenant Fabric
Legend: β Complete | π In Progress | β³ Planned
Design tenant network architecture β #
How tenant traffic is isolated, routed, and addressed.
- Decided: the fabric model β an EVPN overlay owned by the tenant compute domain, self-contained per hypervisor, single-member now and expandable to a cluster ( ADR-0001).
- Decided: the numbering scheme β the site
/16split so tenant overlays live at10.20.128.0/18and fabric loopbacks at10.20.255.0/24, with every tenant identifier derived from a single allocated index ( ADR-0002). - Deferred β DNS: how tenant records are authored and published into the substrate zone is still undecided, and is tracked as its own thread below rather than holding this milestone open. Proxmox’s SDN DNS integration targets a PowerDNS API; the core router runs Unbound, so it does not fit as-is.
Build the tenant fabric (Phase 1) π #
Stand up the single-member fabric on dv02hyp002p02.
No longer gated β dv02hyp002p02 runs PVE 9 and serves /cluster/sdn/fabrics, so the underlay is
defined as code rather than as hand-maintained node state.
- β
Substrate transport:
tenant_transit(VLAN 50) andtenant_underlay(VLAN 51) in inventory;tenant_1/2/3removed. The tenant hypervisor’s switch port is a trunk carrying both plus management. - β
Hypervisor attachment: the bridge is VLAN-aware and the transit and underlay sub-interfaces
are up, driven from inventory by the
proxmox_node_networkrole. - β
EVPN SDN as code: fabric, VTEP identity and controller applied on dv02hyp002p02 from
deevnet-tenant-fabric. - β Hypervisor default route moved onto transit, so the data plane stops riding the management segment.
- β Tenant egress through the perimeter: transit forwarding and a default route inside each tenant VRF, both code-managed ( ADR-0003). Proxmox’s own exit-node behavior would have routed tenants around the perimeter onto the management segment.
- β
Core router confined to the perimeter (NAT, tenantβmanagement policy). Audited 2026-11-12: its
only tenant interface is the transit network, the underlay has no address on it, its one tenant
route is the overlay
/18via the exit node thatopnsense_routesapplies, and the only rules naming the overlay are the three declared in inventory (operator access, ADR-0018; tenant developer SSH, ADR-0028). No interface, route, DHCP scope or DNS entry per tenant remains. - β³ Test network isolation between two tenants’ workloads, in both directions, including the path out through a tenant’s default route to the core router and back. Network isolation is the requirement here; tenants share a hypervisor, and need no hardware of their own.
Tenant DNS publication β #
How a tenant authors its own records and publishes them into the substrate zone so
service.tenant.site.deevnet.net resolves.
- Decided: RFC 2136 updates with a per-zone TSIG key, into substrate-run PowerDNS, reached through the core router’s forward ( ADR-0004).
- Proven end to end with
tdemo( first tenant), and since CHG-0010 issued through the Deevnet API. - Workloads resolve through the tenant-transit resolver, not the authoritative server ( CHG-0011).
Future outlook: Phase 2 β tenant cluster #
Not scheduled, not counted. Reached by adding members to the Phase 1 fabric, not rebuilding it β same SDN objects re-applied at cluster scope, underlay peers formed, a QDevice for quorum. Trajectory detail is in ADR-0001. The management hypervisor (dv02hyp001p01) follows a separate path and does not join the tenant fabric.