@@ -29,9 +29,143 @@ ubuntu@docs:~$ hhfab vlab gen
29
29
21:27:16 INF >>> mclagServers=2 eslagServers=2 unbundledServers=1 bundledServers=1
30
30
21:27:16 INF Generated wiring file name=vlab.generated.yaml
31
31
```
32
+
33
+ The default spine-leaf topology with 2 spines, 2 MCLAG leaves, and 1 non-MCLAG leaf:
34
+
35
+ ``` mermaid
36
+ graph TD
37
+
38
+ %% Style definitions
39
+ classDef spine fill:#F8CECC,stroke:#B85450,stroke-width:1px,color:#000
40
+ classDef leaf fill:#DAE8FC,stroke:#6C8EBF,stroke-width:1px,color:#000
41
+ classDef server fill:#D5E8D4,stroke:#82B366,stroke-width:1px,color:#000
42
+ classDef mclag fill:#F0F8FF,stroke:#6C8EBF,stroke-width:1px,color:#000
43
+ classDef eslag fill:#FFF8E8,stroke:#CC9900,stroke-width:1px,color:#000
44
+ classDef hidden fill:none,stroke:none
45
+ classDef legendBox fill:white,stroke:#999,stroke-width:1px,color:#000
46
+
47
+ %% Network diagram
48
+ subgraph Spines[ ]
49
+ direction LR
50
+ subgraph Spine_01_Group [ ]
51
+ direction TB
52
+ Spine_01["spine-01<br>spine"]
53
+ end
54
+ subgraph Spine_02_Group [ ]
55
+ direction TB
56
+ Spine_02["spine-02<br>spine"]
57
+ end
58
+ end
59
+
60
+ subgraph Leaves[ ]
61
+ direction LR
62
+ subgraph MCLAG [MCLAG]
63
+ direction LR
64
+ Leaf_01["leaf-01<br>server-leaf"]
65
+ Leaf_02["leaf-02<br>server-leaf"]
66
+ end
67
+
68
+ subgraph ESLAG [ESLAG]
69
+ direction LR
70
+ Leaf_03["leaf-03<br>server-leaf"]
71
+ Leaf_04["leaf-04<br>server-leaf"]
72
+ end
73
+
74
+ Leaf_05["leaf-05<br>server-leaf"]
75
+ end
76
+
77
+ subgraph Servers[ ]
78
+ direction TB
79
+ Server_03["server-03"]
80
+ Server_01["server-01"]
81
+ Server_02["server-02"]
82
+ Server_04["server-04"]
83
+ Server_07["server-07"]
84
+ Server_05["server-05"]
85
+ Server_06["server-06"]
86
+ Server_08["server-08"]
87
+ Server_09["server-09"]
88
+ Server_10["server-10"]
89
+ end
90
+
91
+ %% Connections
92
+
93
+ %% Spine_01 -> Leaves
94
+ Spine_01 ---|"E1/8↔E1/1<br>E1/9↔E1/2"| Leaf_01
95
+ Spine_01 ---|"E1/10↔E1/4<br>E1/9↔E1/3"| Leaf_02
96
+ Spine_01 ---|"E1/4↔E1/5<br>E1/5↔E1/6"| Leaf_03
97
+ Spine_01 ---|"E1/4↔E1/9<br>E1/5↔E1/10"| Leaf_05
98
+ Spine_01 ---|"E1/5↔E1/7<br>E1/6↔E1/8"| Leaf_04
99
+
100
+ %% Spine_02 -> Leaves
101
+ Spine_02 ---|"E1/11↔E1/3<br>E1/12↔E1/4"| Leaf_02
102
+ Spine_02 ---|"E1/7↔E1/7<br>E1/8↔E1/8"| Leaf_04
103
+ Spine_02 ---|"E1/11↔E1/2<br>E1/10↔E1/1"| Leaf_01
104
+ Spine_02 ---|"E1/6↔E1/5<br>E1/7↔E1/6"| Leaf_03
105
+ Spine_02 ---|"E1/7↔E1/10<br>E1/6↔E1/9"| Leaf_05
106
+
107
+ %% Leaves -> Servers
108
+ Leaf_01 ---|"enp2s1↔E1/6"| Server_02
109
+ Leaf_01 ---|"enp2s1↔E1/7"| Server_03
110
+ Leaf_01 ---|"enp2s1↔E1/5"| Server_01
111
+
112
+ Leaf_02 ---|"enp2s2↔E1/5"| Server_01
113
+ Leaf_02 ---|"enp2s2↔E1/6"| Server_02
114
+ Leaf_02 ---|"enp2s1↔E1/7<br>enp2s2↔E1/8"| Server_04
115
+
116
+ Leaf_03 ---|"enp2s1↔E1/1"| Server_05
117
+ Leaf_03 ---|"enp2s1↔E1/2"| Server_06
118
+ Leaf_03 ---|"enp2s1↔E1/3"| Server_07
119
+
120
+ Leaf_04 ---|"enp2s2↔E1/2"| Server_06
121
+ Leaf_04 ---|"enp2s1↔E1/3<br>enp2s2↔E1/4"| Server_08
122
+ Leaf_04 ---|"enp2s2↔E1/1"| Server_05
123
+
124
+ Leaf_05 ---|"enp2s1↔E1/1"| Server_09
125
+ Leaf_05 ---|"enp2s1↔E1/2<br>enp2s2↔E1/3"| Server_10
126
+
127
+ subgraph Legend["Network Connection Types"]
128
+ direction LR
129
+
130
+ %% Create invisible nodes for the start and end of each line
131
+ L1(( )) --- |"Fabric Links"| L2(( ))
132
+ L3(( )) --- |"MCLAG Server Links"| L4(( ))
133
+ L5(( )) --- |"Bundled Server Links"| L6(( ))
134
+ L7(( )) --- |"Unbundled Server Links"| L8(( ))
135
+ L9(( )) --- |"ESLAG Server Links"| L10(( ))
136
+ end
137
+
138
+ class Spine_01,Spine_02 spine
139
+ class Leaf_01,Leaf_02,Leaf_03,Leaf_04,Leaf_05 leaf
140
+ class Server_03,Server_01,Server_02,Server_04,Server_07,Server_05,Server_06,Server_08,Server_09,Server_10 server
141
+ class MCLAG mclag
142
+ class ESLAG eslag
143
+ class L1,L2,L3,L4,L5,L6,L7,L8,L9,L10 hidden
144
+ class Legend legendBox
145
+ linkStyle default stroke:#666,stroke-width:2px
146
+ linkStyle 0,1,2,3,4,5,6,7,8,9 stroke:#CC3333,stroke-width:4px
147
+ linkStyle 10,12,13,14 stroke:#99CCFF,stroke-width:4px,stroke-dasharray:5 5
148
+ linkStyle 15,20,23 stroke:#66CC66,stroke-width:4px
149
+ linkStyle 16,17,19,21 stroke:#CC9900,stroke-width:4px,stroke-dasharray:5 5
150
+ linkStyle 11,18,22 stroke:#999999,stroke-width:2px
151
+ linkStyle 24 stroke:#B85450,stroke-width:2px
152
+ linkStyle 25 stroke:#6C8EBF,stroke-width:2px,stroke-dasharray:5 5
153
+ linkStyle 26 stroke:#82B366,stroke-width:2px
154
+ linkStyle 27 stroke:#000000,stroke-width:2px
155
+ linkStyle 28 stroke:#CC9900,stroke-width:2px,stroke-dasharray:5 5
156
+
157
+ %% Make subgraph containers invisible
158
+ style Spines fill:none,stroke:none
159
+ style Leaves fill:none,stroke:none
160
+ style Servers fill:none,stroke:none
161
+ style Spine_01_Group fill:none,stroke:none
162
+ style Spine_02_Group fill:none,stroke:none
163
+ ```
164
+
32
165
You can jump [ to the instructions] ( #build-the-installer-and-start-vlab ) to start VLAB, or see the next section for customizing the topology.
33
166
34
167
### Collapsed Core
168
+
35
169
If a Collapsed Core topology is desired, after the ` hhfab init --dev ` step, edit the resulting ` fab.yaml ` file and change the ` mode: spine-leaf ` to ` mode: collapsed-core ` :
36
170
37
171
``` console
@@ -42,7 +176,75 @@ ubuntu@docs:~$ hhfab vlab gen
42
176
11:39:02 INF >>> orphanLeafsCount=0 vpcLoopbacks=2
43
177
11:39:02 INF >>> mclagServers=2 eslagServers=2 unbundledServers=1 bundledServers=1
44
178
11:39:02 INF Generated wiring file name=vlab.generated.yaml
179
+ ```
45
180
181
+ The collapsed core topology with 2 MCLAG leaves:
182
+
183
+ ``` mermaid
184
+ graph TD
185
+
186
+ %% Style definitions
187
+ classDef leaf fill:#DAE8FC,stroke:#6C8EBF,stroke-width:1px,color:#000
188
+ classDef server fill:#D5E8D4,stroke:#82B366,stroke-width:1px,color:#000
189
+ classDef mclag fill:#F0F8FF,stroke:#6C8EBF,stroke-width:1px,color:#000
190
+ classDef hidden fill:none,stroke:none
191
+ classDef legendBox fill:white,stroke:#999,stroke-width:1px,color:#000
192
+
193
+ %% Network diagram
194
+ subgraph Leaves[ ]
195
+ direction LR
196
+ subgraph MCLAG [MCLAG]
197
+ direction LR
198
+ Leaf_01["leaf-01<br>server-leaf"]
199
+ Leaf_02["leaf-02<br>server-leaf"]
200
+ end
201
+
202
+ end
203
+
204
+ subgraph Servers[ ]
205
+ direction TB
206
+ Server_03["server-03"]
207
+ Server_01["server-01"]
208
+ Server_02["server-02"]
209
+ Server_04["server-04"]
210
+ end
211
+
212
+ %% Connections
213
+
214
+ %% Leaves -> Servers
215
+ Leaf_01 ---|"enp2s1↔E1/6"| Server_02
216
+ Leaf_01 ---|"enp2s1↔E1/7"| Server_03
217
+ Leaf_01 ---|"enp2s1↔E1/5"| Server_01
218
+
219
+ Leaf_02 ---|"enp2s2↔E1/6"| Server_02
220
+ Leaf_02 ---|"enp2s1↔E1/7<br>enp2s2↔E1/8"| Server_04
221
+ Leaf_02 ---|"enp2s2↔E1/5"| Server_01
222
+
223
+ subgraph Legend["Network Connection Types"]
224
+ direction LR
225
+
226
+ %% Create invisible nodes for the start and end of each line
227
+ L3(( )) --- |"MCLAG Server Links"| L4(( ))
228
+ L5(( )) --- |"Bundled Server Links"| L6(( ))
229
+ L7(( )) --- |"Unbundled Server Links"| L8(( ))
230
+ end
231
+
232
+ class Leaf_01,Leaf_02 leaf
233
+ class Server_03,Server_01,Server_02,Server_04 server
234
+ class MCLAG mclag
235
+ class L3,L4,L5,L6,L7,L8 hidden
236
+ class Legend legendBox
237
+ linkStyle default stroke:#666,stroke-width:2px
238
+ linkStyle 0,2,3 stroke:#99CCFF,stroke-width:4px,stroke-dasharray:5 5
239
+ linkStyle 4 stroke:#66CC66,stroke-width:4px
240
+ linkStyle 1 stroke:#999999,stroke-width:2px
241
+ linkStyle 5 stroke:#6C8EBF,stroke-width:2px,stroke-dasharray:5 5
242
+ linkStyle 6 stroke:#82B366,stroke-width:2px
243
+ linkStyle 7 stroke:#000000,stroke-width:2px
244
+
245
+ %% Make subgraph containers invisible
246
+ style Leaves fill:none,stroke:none
247
+ style Servers fill:none,stroke:none
46
248
```
47
249
48
250
### Custom Spine Leaf
0 commit comments