docs: rework naming conventions with structured hostname format (Phase 0 - #31)
Format: <SITE>-<ZONE>-<ROLE>-<ID> (e.g., PA-DC-LEAF-01) - Site prefix registry (2 chars: PA, LY, MA...) - Zone codes: DC, DR, LAB, CO - Interface descriptions reference full hostnames - MLAG domain-id now unique per pair - IPAM identifiers aligned with new naming - BGP session descriptions standardized
This commit is contained in:
@@ -36,11 +36,11 @@ Spines use a simple sequential mapping: one Ethernet port per leaf.
|
|||||||
|
|
||||||
| Port | Role | Connected to |
|
| Port | Role | Connected to |
|
||||||
|------|------|-------------|
|
|------|------|-------------|
|
||||||
| Ethernet1 | Underlay downlink | leaf1 |
|
| Ethernet1 | Underlay downlink | Leaf 01 |
|
||||||
| Ethernet2 | Underlay downlink | leaf2 |
|
| Ethernet2 | Underlay downlink | Leaf 02 |
|
||||||
| Ethernet3 | Underlay downlink | leaf3 |
|
| Ethernet3 | Underlay downlink | Leaf 03 |
|
||||||
| ... | ... | ... |
|
| ... | ... | ... |
|
||||||
| Ethernet{N} | Underlay downlink | leaf{N} |
|
| Ethernet{N} | Underlay downlink | Leaf {N} |
|
||||||
|
|
||||||
All spine downlinks are:
|
All spine downlinks are:
|
||||||
- **Routed** (`no switchport`)
|
- **Routed** (`no switchport`)
|
||||||
@@ -62,7 +62,7 @@ Leaf port allocation follows a fixed layout. Ports are divided into 3 zones:
|
|||||||
|
|
||||||
### 3.1 Host-facing ports (Ethernet1-9)
|
### 3.1 Host-facing ports (Ethernet1-9)
|
||||||
- Each physical port is a member of a Port-Channel
|
- Each physical port is a member of a Port-Channel
|
||||||
- Port-Channel number = MLAG ID = host index (e.g., host1 → Po1, MLAG 1)
|
- Port-Channel number = MLAG ID = host index (e.g., host 01 → Po1, MLAG 1)
|
||||||
- Mode: `switchport mode trunk`
|
- Mode: `switchport mode trunk`
|
||||||
- VLANs: only the VLANs needed by the host
|
- VLANs: only the VLANs needed by the host
|
||||||
- LACP fallback enabled (timeout 5, individual)
|
- LACP fallback enabled (timeout 5, individual)
|
||||||
@@ -74,47 +74,133 @@ Leaf port allocation follows a fixed layout. Ports are divided into 3 zones:
|
|||||||
- Carries MLAG control traffic + VLANs 4090, 4091
|
- Carries MLAG control traffic + VLANs 4090, 4091
|
||||||
|
|
||||||
### 3.3 Spine uplinks (Ethernet11-12)
|
### 3.3 Spine uplinks (Ethernet11-12)
|
||||||
- Ethernet11 → spine1, Ethernet12 → spine2
|
- Ethernet11 → spine 01, Ethernet12 → spine 02
|
||||||
- Fixed mapping, never changes regardless of fabric size
|
- Fixed mapping, never changes regardless of fabric size
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. Naming conventions
|
## 4. Naming conventions
|
||||||
|
|
||||||
### 4.1 Devices
|
### 4.1 Device hostname format
|
||||||
|
|
||||||
| Role | Pattern | Examples |
|
All device hostnames follow the pattern:
|
||||||
|------|---------|---------|
|
|
||||||
| Spine | `spine{N}` | spine1, spine2 |
|
|
||||||
| Leaf | `leaf{N}` | leaf1, leaf2, ..., leaf8 |
|
|
||||||
| Host | `host{N}` | host1, host2, host3, host4 |
|
|
||||||
|
|
||||||
- Leafs are numbered sequentially: odd = primary, even = secondary within a pair
|
```
|
||||||
- Pair 1: leaf1 (primary), leaf2 (secondary)
|
<SITE>-<ZONE>-<ROLE>-<ID>
|
||||||
- Pair 2: leaf3 (primary), leaf4 (secondary)
|
```
|
||||||
- Pair N: leaf{2N-1} (primary), leaf{2N} (secondary)
|
|
||||||
|
|
||||||
### 4.2 MLAG domain
|
| Field | Length | Description | Values |
|
||||||
- Domain ID: `leafs` (same for all pairs — Arista uses this as an identifier within the MLAG)
|
|-------|--------|-------------|--------|
|
||||||
- Peer-link: Port-Channel999
|
| `SITE` | 2 chars | City / location code (uppercase) | PA (Paris), LY (Lyon), MA (Marseille), LO (London)... |
|
||||||
- Peer-link VLAN: 4090
|
| `ZONE` | 2-3 chars | Network area (uppercase) | DC (Datacenter), DR (Disaster Recovery), LAB (Lab), CO (Colocation) |
|
||||||
- iBGP peering VLAN: 4091
|
| `ROLE` | 4-5 chars | Device function (uppercase) | SPINE, LEAF, HOST |
|
||||||
|
| `ID` | 2 digits | Sequential number (zero-padded) | 01, 02, ..., 99 |
|
||||||
|
|
||||||
### 4.3 Fabric
|
**Examples for Paris datacenter:**
|
||||||
- Pattern: `{site}-{function}` (e.g., `dc1-evpn`, `paris-evpn`)
|
|
||||||
|
|
||||||
### 4.4 IPAM identifiers (for resource pool idempotence)
|
| Device | Hostname |
|
||||||
|
|--------|----------|
|
||||||
|
| Spine 1 | `PA-DC-SPINE-01` |
|
||||||
|
| Spine 2 | `PA-DC-SPINE-02` |
|
||||||
|
| Leaf 1 (pair 1, primary) | `PA-DC-LEAF-01` |
|
||||||
|
| Leaf 2 (pair 1, secondary) | `PA-DC-LEAF-02` |
|
||||||
|
| Leaf 3 (pair 2, primary) | `PA-DC-LEAF-03` |
|
||||||
|
| Leaf 4 (pair 2, secondary) | `PA-DC-LEAF-04` |
|
||||||
|
| Host 1 | `PA-DC-HOST-01` |
|
||||||
|
|
||||||
|
**Examples for Lyon disaster recovery:**
|
||||||
|
|
||||||
|
| Device | Hostname |
|
||||||
|
|--------|----------|
|
||||||
|
| Spine 1 | `LY-DR-SPINE-01` |
|
||||||
|
| Leaf 1 | `LY-DR-LEAF-01` |
|
||||||
|
|
||||||
|
### 4.2 Leaf pairing rule
|
||||||
|
|
||||||
|
Leafs are numbered sequentially. **Odd = primary, even = secondary** within a pair:
|
||||||
|
|
||||||
|
| Pair | Primary | Secondary | VTEP |
|
||||||
|
|------|---------|-----------|------|
|
||||||
|
| 1 | `{SITE}-{ZONE}-LEAF-01` | `{SITE}-{ZONE}-LEAF-02` | VTEP 1 |
|
||||||
|
| 2 | `{SITE}-{ZONE}-LEAF-03` | `{SITE}-{ZONE}-LEAF-04` | VTEP 2 |
|
||||||
|
| 3 | `{SITE}-{ZONE}-LEAF-05` | `{SITE}-{ZONE}-LEAF-06` | VTEP 3 |
|
||||||
|
| 4 | `{SITE}-{ZONE}-LEAF-07` | `{SITE}-{ZONE}-LEAF-08` | VTEP 4 |
|
||||||
|
|
||||||
|
### 4.3 Fabric name
|
||||||
|
|
||||||
|
The fabric is identified by `{SITE}-{ZONE}` (lowercase in Infrahub objects):
|
||||||
|
|
||||||
|
| Infrahub object | Name | Example |
|
||||||
|
|----------------|------|---------|
|
||||||
|
| `InfraFabric` | `{site}-{zone}` | `pa-dc` |
|
||||||
|
| `LocationSite` | `{site}-{zone}` | `pa-dc` |
|
||||||
|
|
||||||
|
### 4.4 Interface descriptions
|
||||||
|
|
||||||
|
Interface descriptions reference the **full hostname** of the remote device:
|
||||||
|
|
||||||
|
| Interface | Description format | Example (on PA-DC-LEAF-01) |
|
||||||
|
|-----------|-------------------|----------------------------|
|
||||||
|
| Spine uplink Eth11 | `to {REMOTE_HOSTNAME}` | `to PA-DC-SPINE-01` |
|
||||||
|
| Spine uplink Eth12 | `to {REMOTE_HOSTNAME}` | `to PA-DC-SPINE-02` |
|
||||||
|
| MLAG peer-link Eth10 | `mlag peer link` | `mlag peer link` |
|
||||||
|
| Host-facing Eth1 | `to {HOST_HOSTNAME}` | `to PA-DC-HOST-01` |
|
||||||
|
| Loopback0 | `Router-ID` | `Router-ID` |
|
||||||
|
| Loopback1 | `VTEP` | `VTEP` |
|
||||||
|
|
||||||
|
On spines:
|
||||||
|
|
||||||
|
| Interface | Description format | Example (on PA-DC-SPINE-01) |
|
||||||
|
|-----------|-------------------|----------------------------|
|
||||||
|
| Downlink Eth1 | `to {REMOTE_HOSTNAME}` | `to PA-DC-LEAF-01` |
|
||||||
|
| Loopback0 | `Router-ID` | `Router-ID` |
|
||||||
|
|
||||||
|
### 4.5 MLAG domain
|
||||||
|
|
||||||
|
| Parameter | Value | Notes |
|
||||||
|
|-----------|-------|-------|
|
||||||
|
| Domain ID | `{site}-{zone}-pair{NN}` | e.g., `pa-dc-pair01` — unique per MLAG pair |
|
||||||
|
| Peer-link | Port-Channel999 | Fixed |
|
||||||
|
| Peer-link VLAN | 4090 | Fixed |
|
||||||
|
| iBGP peering VLAN | 4091 | Fixed |
|
||||||
|
|
||||||
|
### 4.6 BGP descriptions
|
||||||
|
|
||||||
|
| Session type | Description format | Example |
|
||||||
|
|-------------|-------------------|---------|
|
||||||
|
| eBGP underlay | `underlay to {REMOTE_HOSTNAME}` | `underlay to PA-DC-SPINE-01` |
|
||||||
|
| iBGP MLAG peer | `ibgp to {REMOTE_HOSTNAME}` | `ibgp to PA-DC-LEAF-02` |
|
||||||
|
| EVPN overlay | `evpn to {REMOTE_HOSTNAME}` | `evpn to PA-DC-SPINE-01` |
|
||||||
|
|
||||||
|
### 4.7 IPAM identifiers (for resource pool idempotence)
|
||||||
|
|
||||||
|
All identifiers use **lowercase**, with the fabric name `{site}-{zone}`:
|
||||||
|
|
||||||
| Object | Identifier pattern | Example |
|
| Object | Identifier pattern | Example |
|
||||||
|--------|-------------------|---------|
|
|--------|-------------------|---------|
|
||||||
| Site infra prefix | `site-{site}-infra` | `site-dc1-infra` |
|
| Site infra prefix | `site-{site}-{zone}-infra` | `site-pa-dc-infra` |
|
||||||
| Site services prefix | `site-{site}-services` | `site-dc1-services` |
|
| Site services prefix | `site-{site}-{zone}-services` | `site-pa-dc-services` |
|
||||||
| Device loopback0 IP | `lo0-{fabric}-{device}` | `lo0-evpnlab-leaf1` |
|
| Device loopback0 IP | `lo0-{site}-{zone}-{role}-{id}` | `lo0-pa-dc-leaf-01` |
|
||||||
| Device loopback1 IP | `lo1-{fabric}-vtep{pair}` | `lo1-evpnlab-vtep1` |
|
| Device loopback1 IP | `lo1-{site}-{zone}-vtep{NN}` | `lo1-pa-dc-vtep01` |
|
||||||
| Underlay P2P /31 | `p2p-{fabric}-{spine}-{leaf}` | `p2p-evpnlab-spine1-leaf1` |
|
| Underlay P2P /31 | `p2p-{site}-{zone}-spine{NN}-leaf{NN}` | `p2p-pa-dc-spine01-leaf01` |
|
||||||
| MLAG peer /31 | `mlag-peer-{fabric}-pair{N}` | `mlag-peer-evpnlab-pair1` |
|
| MLAG peer /31 | `mlag-peer-{site}-{zone}-pair{NN}` | `mlag-peer-pa-dc-pair01` |
|
||||||
| MLAG iBGP /31 | `mlag-ibgp-{fabric}-pair{N}` | `mlag-ibgp-evpnlab-pair1` |
|
| MLAG iBGP /31 | `mlag-ibgp-{site}-{zone}-pair{NN}` | `mlag-ibgp-pa-dc-pair01` |
|
||||||
| Leaf ASN | `asn-{fabric}-pair{N}` | `asn-evpnlab-pair1` |
|
| Leaf ASN | `asn-{site}-{zone}-pair{NN}` | `asn-pa-dc-pair01` |
|
||||||
|
|
||||||
|
### 4.8 Site prefix registry
|
||||||
|
|
||||||
|
To avoid conflicts, site prefixes must be registered:
|
||||||
|
|
||||||
|
| Prefix | City | Country |
|
||||||
|
|--------|------|---------|
|
||||||
|
| PA | Paris | FR |
|
||||||
|
| LY | Lyon | FR |
|
||||||
|
| MA | Marseille | FR |
|
||||||
|
| LO | London | UK |
|
||||||
|
| FR | Frankfurt | DE |
|
||||||
|
| AM | Amsterdam | NL |
|
||||||
|
|
||||||
|
> This registry is maintained as a reference. The `SITE` code is stored on the `LocationSite` object in Infrahub.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -169,7 +255,7 @@ Each site receives:
|
|||||||
### 6.2 Leaf ASN
|
### 6.2 Leaf ASN
|
||||||
- **One ASN per MLAG pair** (iBGP within pair, eBGP to spines)
|
- **One ASN per MLAG pair** (iBGP within pair, eBGP to spines)
|
||||||
- Allocated from a `CoreNumberPool` (range: 65001–65099)
|
- Allocated from a `CoreNumberPool` (range: 65001–65099)
|
||||||
- Deterministic via identifier: `asn-{fabric}-pair{N}`
|
- Deterministic via identifier: `asn-{site}-{zone}-pair{NN}`
|
||||||
|
|
||||||
### 6.3 BGP configuration standards
|
### 6.3 BGP configuration standards
|
||||||
|
|
||||||
@@ -215,7 +301,7 @@ Spine underlay neighbors are configured individually (no peer-group) since each
|
|||||||
|
|
||||||
| Parameter | Value |
|
| Parameter | Value |
|
||||||
|-----------|-------|
|
|-----------|-------|
|
||||||
| Domain ID | `leafs` |
|
| Domain ID | `{site}-{zone}-pair{NN}` (e.g., `pa-dc-pair01`) |
|
||||||
| Peer-link interface | Port-Channel999 |
|
| Peer-link interface | Port-Channel999 |
|
||||||
| Peer-link VLAN | 4090 (IP: /31 from MLAG peer pool) |
|
| Peer-link VLAN | 4090 (IP: /31 from MLAG peer pool) |
|
||||||
| iBGP VLAN | 4091 (IP: /31 from MLAG iBGP pool, MTU 9214) |
|
| iBGP VLAN | 4091 (IP: /31 from MLAG iBGP pool, MTU 9214) |
|
||||||
@@ -225,8 +311,8 @@ Spine underlay neighbors are configured individually (no peer-group) since each
|
|||||||
| Virtual MAC | `c001.cafe.babe` (fabric-wide anycast gateway) |
|
| Virtual MAC | `c001.cafe.babe` (fabric-wide anycast gateway) |
|
||||||
|
|
||||||
### 7.1 Primary/secondary assignment
|
### 7.1 Primary/secondary assignment
|
||||||
- **Odd-numbered leaf** (leaf1, leaf3, leaf5, leaf7): lower IP on MLAG VLANs (e.g., x.x.x.254/31)
|
- **Odd-numbered leaf** (LEAF-01, LEAF-03, LEAF-05, LEAF-07): lower IP on MLAG VLANs (e.g., x.x.x.0/31)
|
||||||
- **Even-numbered leaf** (leaf2, leaf4, leaf6, leaf8): higher IP (e.g., x.x.x.255/31)
|
- **Even-numbered leaf** (LEAF-02, LEAF-04, LEAF-06, LEAF-08): higher IP (e.g., x.x.x.1/31)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user