Phase 0: Analyse et Design — cadrage, contraintes, décisions #31
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent: #30
Objectif
Fixer les contraintes, le scope du fabric generator, et le modèle IPAM hiérarchique avant de coder.
Décisions à prendre
1. Modèle de switch Arista pour le lab
Containerlab utilise
ceos. Fixer unInfraDeviceModelavec un nombre de ports déterminant les limites.2. Contraintes de fabric
3. Modèle IPAM hiérarchique (supernets → site → fabric → allocation)
L'idée est de partir de supernets globaux qui se subdivisent automatiquement lorsqu'on crée un site, puis une fabric.
Niveau 0 — Supernets globaux
Blocs de départ définis une seule fois, à la racine :
10.0.0.0/8172.16.0.0/12Niveau 1 — Allocation par site
À la création d'un site (ex:
paris), un générateur ou un processus alloue depuis les supernets :/1610.0.0.0/8/16172.16.0.0/12Niveau 2 — Allocation par fabric
À la création d'une fabric dans un site, on découpe le
/16infra du site :/24/32viaCoreIPAddressPool/24/32viaCoreIPAddressPool/24/31viaCoreIPPrefixPool/24/31viaCoreIPPrefixPool/24/31viaCoreIPPrefixPoolNiveau 3 — Allocation par service (L2/L3 VXLAN)
Depuis le pool services du site :
/24ou custom/24ou customImplications architecturales
SiteGenerator— déclenché quand un site est ajouté au groupe cible → alloue les préfixes site depuis les supernetsFabricGenerator— déclenché quand une fabric est ajoutée → crée devices, interfaces, IPs depuis les pools du siteidentifierdéterministe pour l'idempotence (ex:site-paris-infra,fabric-evpnlab-loopback0-leaf1)Questions ouvertes
/8découpé en rôles, ou deux supernets distincts (infra vs services) ?SiteGeneratorest-il nécessaire, ou les pools site peuvent être créés via objets YAML ?/16suffit-il ?NumberPoolpour les VNIs en plus des ASN ?4. Scope du générateur
5. ASN
CoreNumberPoolpour les ASN leaf (ex:65001-65099)spine_asn)Livrables
identifierpour l'idempotenceStandardisation document created
The fabric standardization draft has been committed to
feat/fabric-generator:→
docs/fabric-standardization.mdCovers
Also committed:
docs/diagrams/ipam_hierarchy_model.svgProgress update — decisions & open questions
Standardization document updated
docs/fabric-standardization.mdhas been reworked onfeat/fabric-generator. Key changes:10.0.0.0/8infra,172.16.0.0/12services). All intermediate allocations delegated to Infrahub resource manager — no hardcoded prefix sizes.maximum-pathsnow{N_spines × 2} ecmp 64. Addedbgp log-neighbor-changes. RD/RT for L3 VXLAN usesL3_VNI(not arbitrary index).Questions resolved
10.0.0.0/8(infra) +172.16.0.0/12(services)100000 + vlan_id(deterministic, derived from VLAN ID)200001Remaining open question
Generator scope: what does each generator create exactly?
This is the last structural decision before implementation. Proposed split to discuss:
LocationSiteadded to target group10.0.0.0/8), site services prefix (from172.16.0.0/12), IPAM pools for the siteInfraFabricadded to target groupServices (VLANs, VRFs, EVPN instances) remain declarative / separate from both generators.
Updated livrables checklist
docs/fabric-standardization.md)Generator scope — final decision
Three generators, each with a clear trigger and responsibility:
LocationSiteadded to target group10.0.0.0/8), site services prefix (from172.16.0.0/12), IPAM pools for the siteInfraFabricadded to target group100000 + vlan_id) + VLAN-to-VNI mapping + IP from services pool. L3: VRF + VNI (sequential from200001) + L3VNI mapping + IP from services poolKey boundaries
CoreNumberPoolfor VNIs; the generator computes them directly (L2: deterministic from VLAN ID, L3: sequential)VNI logic (in ServiceGenerator, no NumberPool)
100000 + vlan_id200001All open questions from this issue are now resolved. ✅
Final livrables checklist
docs/fabric-standardization.md)