-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtopology.clab.yml
More file actions
190 lines (171 loc) · 6.48 KB
/
Copy pathtopology.clab.yml
File metadata and controls
190 lines (171 loc) · 6.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# =============================================================================
# Lab: EVPN & VXLAN — "El nuevo idioma del peering moderno"
# Evento: LACNIC 45 / FTL
# Autor: Ariel Weher (Ayuda.LA)
#
# Topología IXP-style sobre FRR 10.2.1
#
# +-----------+ +-----------+
# | spine1 | | spine2 |
# | AS 65001 | | AS 65002 |
# +-----+-----+ +-----+-----+
# / | \ / | \
# / | \ / | \
# +-------------+ | +----------+ | +-------------+
# | | | | |
# +----+-----+ +----+-----+ +----+---+--+
# | leaf1 | | leaf2 | | leaf3 |
# | AS 65011 | | AS 65012 | | AS 65013 |
# +----+-----+ +----+-----+ +----+-----+
# | | \ / |
# | | \ / |
# +----+----+ +----+-+ \-+---+-/ ++--------+
# | client- | |client-| |client-| | client- |
# | A | | B | | C | | D |
# | AS 64601| |AS64602| |AS64603| | AS 64604|
# +---------+ +-------+ +-------+ +---------+
# (ESI-LAG MH)
#
# VNIs:
# L2VNI 10100 -> VLAN Peering (clientes A, B, C, D)
# L2VNI 10200 -> Mgmt interna del IXP (multi-tenant demo)
# L3VNI 5000 -> VRF tenant-A (anycast GW + Type-5)
# L3VNI 5001 -> VRF tenant-B (aislado de tenant-A)
# =============================================================================
name: evpn-ixp-lab
mgmt:
network: clab-mgmt
ipv4-subnet: 172.30.30.0/24
topology:
kinds:
linux:
image: quay.io/frrouting/frr:10.2.1
nodes:
# -----------------------------------------------------------------
# SPINES (route reflectors EVPN)
# -----------------------------------------------------------------
spine1:
kind: linux
binds:
- configs/spine1/daemons:/etc/frr/daemons
- configs/spine1/frr.conf:/etc/frr/frr.conf
- configs/spine1/vtysh.conf:/etc/frr/vtysh.conf
exec:
- ip link set lo up
- ip addr add 10.0.0.1/32 dev lo
- /usr/lib/frr/frrinit.sh start
spine2:
kind: linux
binds:
- configs/spine2/daemons:/etc/frr/daemons
- configs/spine2/frr.conf:/etc/frr/frr.conf
- configs/spine2/vtysh.conf:/etc/frr/vtysh.conf
exec:
- ip link set lo up
- ip addr add 10.0.0.2/32 dev lo
- /usr/lib/frr/frrinit.sh start
# -----------------------------------------------------------------
# LEAFS (PEs del IXP, hacen VTEP)
# -----------------------------------------------------------------
leaf1:
kind: linux
binds:
- configs/leaf1/daemons:/etc/frr/daemons
- configs/leaf1/frr.conf:/etc/frr/frr.conf
- configs/leaf1/vtysh.conf:/etc/frr/vtysh.conf
- configs/leaf1/init.sh:/init.sh
exec:
- bash /init.sh
leaf2:
kind: linux
binds:
- configs/leaf2/daemons:/etc/frr/daemons
- configs/leaf2/frr.conf:/etc/frr/frr.conf
- configs/leaf2/vtysh.conf:/etc/frr/vtysh.conf
- configs/leaf2/init.sh:/init.sh
exec:
- bash /init.sh
leaf3:
kind: linux
binds:
- configs/leaf3/daemons:/etc/frr/daemons
- configs/leaf3/frr.conf:/etc/frr/frr.conf
- configs/leaf3/vtysh.conf:/etc/frr/vtysh.conf
- configs/leaf3/init.sh:/init.sh
exec:
- bash /init.sh
# -----------------------------------------------------------------
# CLIENTES IXP (cada uno con su ASN, peerean sobre el fabric)
# Usamos FRR también en los clientes para hacer eBGP real.
# -----------------------------------------------------------------
client-a:
kind: linux
binds:
- configs/client-a/daemons:/etc/frr/daemons
- configs/client-a/frr.conf:/etc/frr/frr.conf
- configs/client-a/vtysh.conf:/etc/frr/vtysh.conf
- configs/client-a/init.sh:/init.sh
exec:
- bash /init.sh
client-b:
kind: linux
binds:
- configs/client-b/daemons:/etc/frr/daemons
- configs/client-b/frr.conf:/etc/frr/frr.conf
- configs/client-b/vtysh.conf:/etc/frr/vtysh.conf
- configs/client-b/init.sh:/init.sh
exec:
- bash /init.sh
# Multi-homed (ESI-LAG) a leaf2 + leaf3
client-c:
kind: linux
binds:
- configs/client-c/daemons:/etc/frr/daemons
- configs/client-c/frr.conf:/etc/frr/frr.conf
- configs/client-c/vtysh.conf:/etc/frr/vtysh.conf
- configs/client-c/init.sh:/init.sh
exec:
- bash /init.sh
client-d:
kind: linux
binds:
- configs/client-d/daemons:/etc/frr/daemons
- configs/client-d/frr.conf:/etc/frr/frr.conf
- configs/client-d/vtysh.conf:/etc/frr/vtysh.conf
- configs/client-d/init.sh:/init.sh
exec:
- bash /init.sh
# E-Line dedicado (VNI 10300) punto a punto entre dos sedes de un mismo cliente
client-e:
kind: linux
binds:
- configs/client-e/init.sh:/init.sh
exec:
- bash /init.sh
client-f:
kind: linux
binds:
- configs/client-f/init.sh:/init.sh
exec:
- bash /init.sh
# ---------------------------------------------------------------------
# CABLEADO
# ---------------------------------------------------------------------
links:
# Spine <-> Leaf (underlay)
- endpoints: ["spine1:eth1", "leaf1:eth1"]
- endpoints: ["spine1:eth2", "leaf2:eth1"]
- endpoints: ["spine1:eth3", "leaf3:eth1"]
- endpoints: ["spine2:eth1", "leaf1:eth2"]
- endpoints: ["spine2:eth2", "leaf2:eth2"]
- endpoints: ["spine2:eth3", "leaf3:eth2"]
# Clientes -> Leafs (access)
- endpoints: ["client-a:eth1", "leaf1:eth3"] # single-homed
- endpoints: ["client-b:eth1", "leaf2:eth3"] # single-homed
# client-c multi-homed (ESI-LAG all-active) a leaf2 y leaf3
- endpoints: ["client-c:eth1", "leaf2:eth4"]
- endpoints: ["client-c:eth2", "leaf3:eth3"]
- endpoints: ["client-d:eth1", "leaf3:eth4"] # single-homed, VRF tenant-B
# E-Line: client-e y client-f en VNI 10300 dedicado (servicio L2 punto a punto)
- endpoints: ["client-e:eth1", "leaf1:eth5"]
- endpoints: ["client-f:eth1", "leaf2:eth5"]