@@ -29,9 +29,143 @@ ubuntu@docs:~$ hhfab vlab gen
292921:27:16 INF >>> mclagServers=2 eslagServers=2 unbundledServers=1 bundledServers=1
303021:27:16 INF Generated wiring file name=vlab.generated.yaml
3131```
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+
32165You can jump [ to the instructions] ( #build-the-installer-and-start-vlab ) to start VLAB, or see the next section for customizing the topology.
33166
34167### Collapsed Core
168+
35169If 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 ` :
36170
37171``` console
@@ -42,7 +176,75 @@ ubuntu@docs:~$ hhfab vlab gen
4217611:39:02 INF >>> orphanLeafsCount=0 vpcLoopbacks=2
4317711:39:02 INF >>> mclagServers=2 eslagServers=2 unbundledServers=1 bundledServers=1
4417811:39:02 INF Generated wiring file name=vlab.generated.yaml
179+ ```
45180
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
46248```
47249
48250### Custom Spine Leaf
0 commit comments