feat: update IP address plan and management IPs for Arista L5 Dual DC

This commit is contained in:
2025-11-10 11:48:32 +00:00
parent 0b5a0a2032
commit eb3ba8f647
3 changed files with 429 additions and 36 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
.DS_Store
containerlab/cEOS64-lab-4.35.0F.tar.xz
containerlab/clab-arista-l5-dual-dc

392
README.md Normal file
View File

@@ -0,0 +1,392 @@
# Complete IP Address Plan - Arista L5 Dual DC
## 🎯 Design Philosophy
**Avoiding 192.168.x.x to prevent conflicts with LAN subnet (192.168.1.0/24)**
We'll use **RFC 1918 private address space** strategically:
- **Management**: `10.255.0.0/24` (out-of-band)
- **DC1 Underlay**: `10.1.x.x/16` range
- **DC2 Underlay**: `10.2.x.x/16` range
- **DCI**: `10.253.x.x` range
- **Host/Tenant Networks**: `172.16.x.x/16` range
---
## 📊 IP Address Summary Table
| Network Purpose | Subnet | Size | Usage |
|----------------|--------|------|-------|
| Management (OOB) | 10.255.0.0/24 | 254 hosts | ContainerLab mgmt |
| DC1 Loopback0 | 10.1.0.0/24 | 254 hosts | Router IDs |
| DC1 Loopback1 | 10.1.1.0/24 | 254 hosts | VTEP addresses |
| DC1 P2P Links | 10.1.10.0/24 | 127 /31s | Spine-Leaf links |
| DC1 MLAG Peer | 10.1.255.0/30 | Per pair | MLAG peer links |
| DC2 Loopback0 | 10.2.0.0/24 | 254 hosts | Router IDs |
| DC2 Loopback1 | 10.2.1.0/24 | 254 hosts | VTEP addresses |
| DC2 P2P Links | 10.2.10.0/24 | 127 /31s | Spine-Leaf links |
| DC2 MLAG Peer | 10.2.255.0/30 | Per pair | MLAG peer links |
| DCI Loopback | 10.253.0.1/32 | 1 host | DCI router ID |
| DCI P2P Links | 10.253.254.0/24 | 127 /31s | Border-DCI links |
| Tenant VLANs | 172.16.x.0/24 | Per VLAN | Host networks |
---
## 🔌 Management Network (Out-of-Band)
**Subnet**: `10.255.0.0/24`
### DC1 Management IPs
```
Device | Management IP | Purpose
--------------------|----------------|------------------
spine1-DC1 | 10.255.0.11 | SSH/API access
spine2-DC1 | 10.255.0.12 | SSH/API access
spine3-DC1 | 10.255.0.13 | SSH/API access
leaf1-DC1 | 10.255.0.21 | SSH/API access
leaf2-DC1 | 10.255.0.22 | SSH/API access
leaf3-DC1 | 10.255.0.23 | SSH/API access
leaf4-DC1 | 10.255.0.24 | SSH/API access
borderleaf1-DC1 | 10.255.0.31 | SSH/API access
borderleaf2-DC1 | 10.255.0.32 | SSH/API access
```
### DC2 Management IPs
```
Device | Management IP | Purpose
--------------------|----------------|------------------
spine1-DC2 | 10.255.0.41 | SSH/API access
spine2-DC2 | 10.255.0.42 | SSH/API access
spine3-DC2 | 10.255.0.43 | SSH/API access
leaf1-DC2 | 10.255.0.51 | SSH/API access
leaf2-DC2 | 10.255.0.52 | SSH/API access
leaf3-DC2 | 10.255.0.53 | SSH/API access
leaf4-DC2 | 10.255.0.54 | SSH/API access
borderleaf1-DC2 | 10.255.0.61 | SSH/API access
borderleaf2-DC2 | 10.255.0.62 | SSH/API access
```
### DCI Management IP
```
Device | Management IP | Purpose
--------------------|----------------|------------------
DCI | 10.255.0.100 | SSH/API access
```
### Host Management IPs
```
Device | Management IP | Purpose
--------------------|----------------|------------------
host1-DC1 | 10.255.0.201 | SSH access
host2-DC1 | 10.255.0.202 | SSH access
host1-DC2 | 10.255.0.211 | SSH access
host2-DC2 | 10.255.0.212 | SSH access
```
---
## 🏢 DC1 - Data Center 1 IP Plan
### Loopback0 Addresses (Router IDs)
**Subnet**: `10.1.0.0/24`
```
Device | Loopback0 | Mask | Router ID
--------------------|----------------|------|----------
spine1-DC1 | 10.1.0.11 | /32 | 10.1.0.11
spine2-DC1 | 10.1.0.12 | /32 | 10.1.0.12
spine3-DC1 | 10.1.0.13 | /32 | 10.1.0.13
leaf1-DC1 | 10.1.0.21 | /32 | 10.1.0.21
leaf2-DC1 | 10.1.0.22 | /32 | 10.1.0.22
leaf3-DC1 | 10.1.0.23 | /32 | 10.1.0.23
leaf4-DC1 | 10.1.0.24 | /32 | 10.1.0.24
borderleaf1-DC1 | 10.1.0.31 | /32 | 10.1.0.31
borderleaf2-DC1 | 10.1.0.32 | /32 | 10.1.0.32
```
### Loopback1 Addresses (VTEP)
**Subnet**: `10.1.1.0/24`
```
Device | Loopback1 | Mask | Notes
--------------------|----------------|------|------------------------
leaf1-DC1 | 10.1.1.21 | /32 | Shared with leaf2
leaf2-DC1 | 10.1.1.21 | /32 | Shared with leaf1 (MLAG)
leaf3-DC1 | 10.1.1.23 | /32 | Shared with leaf4
leaf4-DC1 | 10.1.1.23 | /32 | Shared with leaf3 (MLAG)
borderleaf1-DC1 | 10.1.1.31 | /32 | Shared with borderleaf2
borderleaf2-DC1 | 10.1.1.31 | /32 | Shared with borderleaf1 (MLAG)
```
**Note**: Spines don't need Loopback1 (not VTEPs)
### Point-to-Point Links (Spine-Leaf)
**Subnet**: `10.1.10.0/24` (using /31 subnets)
#### Spine1-DC1 Links
```
Link | Leaf Side | Spine Side | Subnet
----------------------------------|--------------|--------------|--------
leaf1-DC1:eth3 - spine1-DC1:eth2 | 10.1.10.0 | 10.1.10.1 | /31
leaf2-DC1:eth3 - spine1-DC1:eth3 | 10.1.10.2 | 10.1.10.3 | /31
leaf3-DC1:eth3 - spine1-DC1:eth4 | 10.1.10.4 | 10.1.10.5 | /31
leaf4-DC1:eth3 - spine1-DC1:eth5 | 10.1.10.6 | 10.1.10.7 | /31
border1-DC1:eth3 - spine1-DC1:eth6| 10.1.10.8 | 10.1.10.9 | /31
border2-DC1:eth3 - spine1-DC1:eth7| 10.1.10.10 | 10.1.10.11 | /31
```
#### Spine2-DC1 Links
```
Link | Leaf Side | Spine Side | Subnet
----------------------------------|--------------|--------------|--------
leaf1-DC1:eth4 - spine2-DC1:eth2 | 10.1.10.12 | 10.1.10.13 | /31
leaf2-DC1:eth4 - spine2-DC1:eth3 | 10.1.10.14 | 10.1.10.15 | /31
leaf3-DC1:eth4 - spine2-DC1:eth4 | 10.1.10.16 | 10.1.10.17 | /31
leaf4-DC1:eth4 - spine2-DC1:eth5 | 10.1.10.18 | 10.1.10.19 | /31
border1-DC1:eth4 - spine2-DC1:eth6| 10.1.10.20 | 10.1.10.21 | /31
border2-DC1:eth4 - spine2-DC1:eth7| 10.1.10.22 | 10.1.10.23 | /31
```
#### Spine3-DC1 Links
```
Link | Leaf Side | Spine Side | Subnet
----------------------------------|--------------|--------------|--------
leaf1-DC1:eth5 - spine3-DC1:eth2 | 10.1.10.24 | 10.1.10.25 | /31
leaf2-DC1:eth5 - spine3-DC1:eth3 | 10.1.10.26 | 10.1.10.27 | /31
leaf3-DC1:eth5 - spine3-DC1:eth4 | 10.1.10.28 | 10.1.10.29 | /31
leaf4-DC1:eth5 - spine3-DC1:eth5 | 10.1.10.30 | 10.1.10.31 | /31
border1-DC1:eth5 - spine3-DC1:eth6| 10.1.10.32 | 10.1.10.33 | /31
border2-DC1:eth5 - spine3-DC1:eth7| 10.1.10.34 | 10.1.10.35 | /31
```
### MLAG Peer Links (VLAN 4094)
**Subnet**: `10.1.255.0/24` (using /30 subnets)
```
MLAG Pair | Device | VLAN 4094 IP | Subnet
--------------------|-----------------|--------------|--------
Leaf Pair 1 | leaf1-DC1 | 10.1.255.1 | /30
| leaf2-DC1 | 10.1.255.2 | /30
Leaf Pair 2 | leaf3-DC1 | 10.1.255.5 | /30
| leaf4-DC1 | 10.1.255.6 | /30
Border Leaf Pair | borderleaf1-DC1 | 10.1.255.9 | /30
| borderleaf2-DC1 | 10.1.255.10 | /30
```
---
## 🏢 DC2 - Data Center 2 IP Plan
### Loopback0 Addresses (Router IDs)
**Subnet**: `10.2.0.0/24`
```
Device | Loopback0 | Mask | Router ID
--------------------|----------------|------|----------
spine1-DC2 | 10.2.0.11 | /32 | 10.2.0.11
spine2-DC2 | 10.2.0.12 | /32 | 10.2.0.12
spine3-DC2 | 10.2.0.13 | /32 | 10.2.0.13
leaf1-DC2 | 10.2.0.21 | /32 | 10.2.0.21
leaf2-DC2 | 10.2.0.22 | /32 | 10.2.0.22
leaf3-DC2 | 10.2.0.23 | /32 | 10.2.0.23
leaf4-DC2 | 10.2.0.24 | /32 | 10.2.0.24
borderleaf1-DC2 | 10.2.0.31 | /32 | 10.2.0.31
borderleaf2-DC2 | 10.2.0.32 | /32 | 10.2.0.32
```
### Loopback1 Addresses (VTEP)
**Subnet**: `10.2.1.0/24`
```
Device | Loopback1 | Mask | Notes
--------------------|----------------|------|------------------------
leaf1-DC2 | 10.2.1.21 | /32 | Shared with leaf2
leaf2-DC2 | 10.2.1.21 | /32 | Shared with leaf1 (MLAG)
leaf3-DC2 | 10.2.1.23 | /32 | Shared with leaf4
leaf4-DC2 | 10.2.1.23 | /32 | Shared with leaf3 (MLAG)
borderleaf1-DC2 | 10.2.1.31 | /32 | Shared with borderleaf2
borderleaf2-DC2 | 10.2.1.31 | /32 | Shared with borderleaf1 (MLAG)
```
### Point-to-Point Links (Spine-Leaf)
**Subnet**: `10.2.10.0/24` (using /31 subnets)
**Same pattern as DC1**, but using `10.2.10.x` range:
- Spine1 links: 10.2.10.0 - 10.2.10.11
- Spine2 links: 10.2.10.12 - 10.2.10.23
- Spine3 links: 10.2.10.24 - 10.2.10.35
### MLAG Peer Links (VLAN 4094)
**Subnet**: `10.2.255.0/24` (using /30 subnets)
```
MLAG Pair | Device | VLAN 4094 IP | Subnet
--------------------|-----------------|--------------|--------
Leaf Pair 1 | leaf1-DC2 | 10.2.255.1 | /30
| leaf2-DC2 | 10.2.255.2 | /30
Leaf Pair 2 | leaf3-DC2 | 10.2.255.5 | /30
| leaf4-DC2 | 10.2.255.6 | /30
Border Leaf Pair | borderleaf1-DC2 | 10.2.255.9 | /30
| borderleaf2-DC2 | 10.2.255.10 | /30
```
---
## 🌐 DCI (Data Center Interconnect) IP Plan
### DCI Loopback
```
Device | Loopback0 | Mask | Router ID
--------------------|----------------|------|----------
DCI | 10.253.0.1 | /32 | 10.253.0.1
```
### DCI Point-to-Point Links
**Subnet**: `10.253.254.0/24` (using /31 subnets)
```
Link | Borderleaf Side | DCI Side | Subnet
------------------------------------|-----------------|--------------|--------
borderleaf1-DC1:eth12 - DCI:eth1 | 10.253.254.0 | 10.253.254.1 | /31
borderleaf2-DC1:eth12 - DCI:eth2 | 10.253.254.2 | 10.253.254.3 | /31
borderleaf1-DC2:eth12 - DCI:eth3 | 10.253.254.4 | 10.253.254.5 | /31
borderleaf2-DC2:eth12 - DCI:eth4 | 10.253.254.6 | 10.253.254.7 | /31
```
---
## 🖥️ Tenant/Host Networks
### VLAN Allocation
**Subnet**: `172.16.x.0/24` (one /24 per VLAN)
```
VLAN ID | VLAN Name | Subnet | Gateway | Purpose
--------|--------------|-----------------|--------------|------------------
100 | TENANT-A | 172.16.100.0/24 | 172.16.100.1 | Tenant A workloads
200 | TENANT-B | 172.16.200.0/24 | 172.16.200.1 | Tenant B workloads
300 | DMZ | 172.16.300.0/24 | 172.16.300.1 | DMZ services
4094 | MLAG-PEER | (see above) | N/A | MLAG peer link
```
### Host IP Assignments
```
Host Device | VLAN | IP Address | Gateway | Bond Interface
---------------|------|-----------------|--------------|---------------
host1-DC1 | 100 | 172.16.100.10/24| 172.16.100.1 | bond0
host2-DC1 | 200 | 172.16.200.10/24| 172.16.200.1 | bond0
host1-DC2 | 100 | 172.16.100.20/24| 172.16.100.1 | bond0
host2-DC2 | 200 | 172.16.200.20/24| 172.16.200.1 | bond0
```
---
## 📋 BGP ASN Allocation
### DC1 ASNs
```
Device Type | Devices | ASN
--------------------|------------------------------|--------
Spines | spine1-3 DC1 | 65100
Leaf Pair 1 | leaf1-DC1, leaf2-DC1 | 65101
Leaf Pair 2 | leaf3-DC1, leaf4-DC1 | 65102
Border Leaf Pair | borderleaf1-2 DC1 | 65103
```
### DC2 ASNs
```
Device Type | Devices | ASN
--------------------|------------------------------|--------
Spines | spine1-3 DC2 | 65200
Leaf Pair 1 | leaf1-DC2, leaf2-DC2 | 65201
Leaf Pair 2 | leaf3-DC2, leaf4-DC2 | 65202
Border Leaf Pair | borderleaf1-2 DC2 | 65203
```
### DCI ASN
```
Device | ASN | Purpose
--------------------|-------|--------------------------------
DCI | 65000 | Neutral AS for inter-DC routing
```
---
## 🔍 IP Address Validation
### No Conflicts With Your LAN ✅
```
Your LAN: 192.168.1.0/24
Our Plan: 10.x.x.x and 172.16.x.x
Conflict Risk: NONE ✅
```
### Subnets Summary
```
Purpose | Subnet Range | Total IPs
---------------------|-------------------|----------
Management | 10.255.0.0/24 | 254
DC1 Infrastructure | 10.1.0.0/16 | 65,534
DC2 Infrastructure | 10.2.0.0/16 | 65,534
DCI | 10.253.0.0/16 | 65,534
Tenant Networks | 172.16.0.0/16 | 65,534
```
---
## 🚀 Quick Reference Commands
### Test Management Connectivity
```bash
# DC1 Spines
ping 10.255.0.11
ping 10.255.0.12
ping 10.255.0.13
# DC1 Leafs
ping 10.255.0.21
ping 10.255.0.22
# DCI
ping 10.255.0.50
```
### SSH Access
```bash
# Access spine1-DC1
ssh admin@10.255.0.11
# Access leaf1-DC1
ssh admin@10.255.0.21
# Access DCI
ssh admin@10.255.0.50
```
### Verify Underlay from any leaf
```bash
# Check loopback reachability (should reach all loopbacks)
ping 10.1.0.11 source 10.1.0.21
# Check BGP neighbors
show ip bgp summary
# Verify ECMP paths
show ip route 10.1.1.23
```
---
## 💡 Design Highlights
1. **Clean Separation**: Each DC has its own /16 (10.1.x.x and 10.2.x.x)
2. **Consistent Numbering**: Same pattern in both DCs
3. **Easy Troubleshooting**: IP tells you the location/role
- `.0.x` = Loopback0 (router-id)
- `.1.x` = Loopback1 (VTEP)
- `.10.x` = P2P links
- `.255.x` = MLAG peer links
4. **Scalable**: Room for growth in each range
5. **No LAN Conflicts**: Completely avoids 192.168.x.x space
This addressing plan is production-ready and automation-friendly! 🎯

View File

@@ -2,7 +2,7 @@ name: arista-l5-dual-dc
mgmt:
network: arista-mgmt
ipv4-subnet: 192.168.0.0/24
ipv4-subnet: 10.255.0.0/24
topology:
kinds:
@@ -15,17 +15,17 @@ topology:
# ==========================================
spine1-DC1:
kind: arista_ceos
mgmt-ipv4: 192.168.0.11
mgmt-ipv4: 10.255.0.11
# startup-config: configs/spine1-DC1.cfg
spine2-DC1:
kind: arista_ceos
mgmt-ipv4: 192.168.0.12
mgmt-ipv4: 10.255.0.12
# startup-config: configs/spine2-DC1.cfg
spine3-DC1:
kind: arista_ceos
mgmt-ipv4: 192.168.0.13
mgmt-ipv4: 10.255.0.13
# startup-config: configs/spine3-DC1.cfg
# ==========================================
@@ -33,22 +33,22 @@ topology:
# ==========================================
leaf1-DC1:
kind: arista_ceos
mgmt-ipv4: 192.168.0.21
mgmt-ipv4: 10.255.0.21
# startup-config: configs/leaf1-DC1.cfg
leaf2-DC1:
kind: arista_ceos
mgmt-ipv4: 192.168.0.22
mgmt-ipv4: 10.255.0.22
# startup-config: configs/leaf2-DC1.cfg
leaf3-DC1:
kind: arista_ceos
mgmt-ipv4: 192.168.0.23
mgmt-ipv4: 10.255.0.23
# startup-config: configs/leaf3-DC1.cfg
leaf4-DC1:
kind: arista_ceos
mgmt-ipv4: 192.168.0.24
mgmt-ipv4: 10.255.0.24
# startup-config: configs/leaf4-DC1.cfg
# ==========================================
@@ -56,12 +56,12 @@ topology:
# ==========================================
borderleaf1-DC1:
kind: arista_ceos
mgmt-ipv4: 192.168.0.31
mgmt-ipv4: 10.255.0.31
# startup-config: configs/borderleaf1-DC1.cfg
borderleaf2-DC1:
kind: arista_ceos
mgmt-ipv4: 192.168.0.32
mgmt-ipv4: 10.255.0.32
# startup-config: configs/borderleaf2-DC1.cfg
# ==========================================
@@ -69,17 +69,17 @@ topology:
# ==========================================
spine1-DC2:
kind: arista_ceos
mgmt-ipv4: 192.168.0.111
mgmt-ipv4: 10.255.0.41
# startup-config: configs/spine1-DC2.cfg
spine2-DC2:
kind: arista_ceos
mgmt-ipv4: 192.168.0.112
mgmt-ipv4: 10.255.0.42
# startup-config: configs/spine2-DC2.cfg
spine3-DC2:
kind: arista_ceos
mgmt-ipv4: 192.168.0.113
mgmt-ipv4: 10.255.0.43
# startup-config: configs/spine3-DC2.cfg
# ==========================================
@@ -87,22 +87,22 @@ topology:
# ==========================================
leaf1-DC2:
kind: arista_ceos
mgmt-ipv4: 192.168.0.121
mgmt-ipv4: 10.255.0.51
# startup-config: configs/leaf1-DC2.cfg
leaf2-DC2:
kind: arista_ceos
mgmt-ipv4: 192.168.0.122
mgmt-ipv4: 10.255.0.52
# startup-config: configs/leaf2-DC2.cfg
leaf3-DC2:
kind: arista_ceos
mgmt-ipv4: 192.168.0.123
mgmt-ipv4: 10.255.0.53
# startup-config: configs/leaf3-DC2.cfg
leaf4-DC2:
kind: arista_ceos
mgmt-ipv4: 192.168.0.124
mgmt-ipv4: 10.255.0.54
# startup-config: configs/leaf4-DC2.cfg
# ==========================================
@@ -110,12 +110,12 @@ topology:
# ==========================================
borderleaf1-DC2:
kind: arista_ceos
mgmt-ipv4: 192.168.0.131
mgmt-ipv4: 10.255.0.61
# startup-config: configs/borderleaf1-DC2.cfg
borderleaf2-DC2:
kind: arista_ceos
mgmt-ipv4: 192.168.0.132
mgmt-ipv4: 10.255.0.62
# startup-config: configs/borderleaf2-DC2.cfg
# ==========================================
@@ -123,7 +123,7 @@ topology:
# ==========================================
DCI:
kind: arista_ceos
mgmt-ipv4: 192.168.0.50
mgmt-ipv4: 10.255.0.100
# startup-config: configs/DCI.cfg
# ==========================================
@@ -132,7 +132,7 @@ topology:
# ==========================================
host1-DC1:
kind: linux
mgmt-ipv4: 192.168.0.51
mgmt-ipv4: 10.255.0.201
image: alpine:latest
exec:
- ip link add bond0 type bond mode 802.3ad
@@ -146,7 +146,7 @@ topology:
host2-DC1:
kind: linux
mgmt-ipv4: 192.168.0.52
mgmt-ipv4: 10.255.0.202
image: alpine:latest
exec:
- ip link add bond0 type bond mode 802.3ad
@@ -160,7 +160,7 @@ topology:
host1-DC2:
kind: linux
mgmt-ipv4: 192.168.0.151
mgmt-ipv4: 10.255.0.211
image: alpine:latest
exec:
- ip link add bond0 type bond mode 802.3ad
@@ -174,7 +174,7 @@ topology:
host2-DC2:
kind: linux
mgmt-ipv4: 192.168.0.152
mgmt-ipv4: 10.255.0.212
image: alpine:latest
exec:
- ip link add bond0 type bond mode 802.3ad