blob: 278a50e60c8d78d990808f3559ec202e448dfa66 [file] [log] [blame]
Zack Williams794532a2021-03-18 17:38:36 -07001..
2 SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
3 SPDX-License-Identifier: Apache-2.0
4
5Site Planning
6=============
7
Zack Williams5d2d6782021-08-26 13:08:44 -07008Planning an edge site generally happens in three phases:
9
101. A BoM of equipment is defined, then purchased.
11
122. The equipment is delivered and inventoried. This usually is done by the edge
13 site, and involves collecting information like the serial numbers, MAC
14 addresses and other details about the specific pieces of equipment being
15 installed.
16
173. ONF Staff enters this information into Netbox, which is used to generate
18 configuration for the edge site and document the configuration.
19
20This document describes the 3rd phase, and exists primarily as a reference for
21ONF Staff.
22
Zack Williams794532a2021-03-18 17:38:36 -070023Site Design in Netbox
24---------------------
25
Zack Williams2dfb6242021-08-24 09:19:00 -070026The Aether project uses Netbox as source of truth, and the automation script
27uses the Netbox API to create input files for Ansible Playbooks which are used
28to configure each site.
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080029
Zack Williams794532a2021-03-18 17:38:36 -070030Once the hardware has been ordered, the installation can be planned. The
31following information needs to be added to `NetBox
32<https://netbox.readthedocs.io/en/stable>`_ to describe each edge site:
33
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080034.. note::
35 The **bold** words represent the models in Netbox.
36
371. Add a **Site** for the edge (if one doesn't already exist), which has the
38 physical location and contact information for the Aether Edge.
Zack Williams794532a2021-03-18 17:38:36 -070039
402. Add equipment Racks to the Site (if they don't already exist).
41
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800423. Add a **Tenant** for the edge (who owns/manages it), assigned to the ``Pronto``
Zack Williams794532a2021-03-18 17:38:36 -070043 or ``Aether`` Tenant Group.
44
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800454. Add a **VRF** (Routing Table) for the edge site. This is usually just the name
Zack Williams794532a2021-03-18 17:38:36 -070046 of the site. Make sure that ``Enforce unique space`` is checked, so that IP
47 addresses within the VRF are forced to be unique, and that the Tenant Group
48 and Tenant are set.
49
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800505. Add a **VLAN Group** to the edge site, which groups the site's VLANs and
Zack Williams794532a2021-03-18 17:38:36 -070051 requires that they have a unique VLAN number.
52
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800536. Add **VLANs** for the edge site. These VLAN objects should be assigned a VLAN
54 Group, a Site, and a Tenant.
Zack Williams794532a2021-03-18 17:38:36 -070055
56 There can be multiple of the same VLAN in NetBox (VLANs are layer 2, and
57 local to the site), but not within the VLAN group.
58
59 The minimal list of VLANs:
60
61 * ADMIN 1
62 * UPLINK 10
63 * MGMT 800
64 * FAB 801
65
66 If you have multiple deployments at a site using the same management server,
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080067 add additional VLANs incremented by 10 for the MGMT/FAB - for example, you
68 can create the VLANs for development server as follows:
Zack Williams794532a2021-03-18 17:38:36 -070069
70 * DEVMGMT 810
71 * DEVFAB 801
72
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800737. Add IP **Prefixes** for the site. This should have the Tenant and VRF assigned.
Zack Williams794532a2021-03-18 17:38:36 -070074
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080075 All IP prefixes of Aether Edge will fit into a ``/22`` sized block.
Zack Williams794532a2021-03-18 17:38:36 -070076
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080077 The Prefix description field is used to create DNS names for IP addresses in the Prefix.
78 The DNS A records for each IP address start with the name of the Device, and end with
79 the Prefix description.
Zack Williams794532a2021-03-18 17:38:36 -070080
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080081 For example, if we have a management server named ``mgmtserver`` in **Prefix**
82 ``prod1.menlo.aetherproject.net``, and the management server's DNS name will be
83 ``mgmtserver.prod1.menlo.aetherproject.net``.
Zack Williams794532a2021-03-18 17:38:36 -070084
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080085 Here is an example using the ``10.0.0.0/22`` block. Let's name our deployment
86 as "prod1", and name our site as "menlo". Then we define 4 **Prefixes**
87 with different purposes.
88
89.. note::
90 NOTE: You should replace the **prod1** and **menlo** to your deployment name and
91 site name.
92..
93
94 * ADMIN Prefix - ``10.0.0.0/25`` (for Lights-out management)
Zack Williams794532a2021-03-18 17:38:36 -070095
96 * Has the Server BMC/LOM and Management Switch
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080097 * Assign with the ADMIN 1 VLAN
98 * Set the description to ``admin.prod1.menlo.aetherproject.net`` (or
Zack Williams794532a2021-03-18 17:38:36 -070099 ``prontoproject.net``).
100
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800101 * MGMT Prefix - ``10.0.0.128/25`` (for infrastructure control plane)
Zack Williams794532a2021-03-18 17:38:36 -0700102
103 * Has the Server Management plane, Fabric Switch Management/BMC
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800104 * Assign with MGMT 800 VLAN
105 * Set the description to ``prod1.menlo.aetherproject.net`` (or
Zack Williams794532a2021-03-18 17:38:36 -0700106 ``prontoproject.net``).
107
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800108 * FABRIC1 Prefix - ``10.0.1.0/25``
Zack Williams794532a2021-03-18 17:38:36 -0700109
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800110 * Compute Nodes' qsfp0 port which connects to Fabric switches,
111 and other devices (eNB, ...) connect to the Fabric switches.
112 * Assign with FAB 801 VLAN
113 * Set the description to ``fab1.prod1.menlo.aetherproject.net`` (or
114 ``prontoproject.net``).
115
116 * FABRIC2 Prefix - ``10.0.1.128/25``
117
118 * Compute Nodes' qsfp1 port which connects to Fabric switches
Zack Williams794532a2021-03-18 17:38:36 -0700119 * Assign FAB 801 VLAN
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800120 * Set the description to ``fab2.prod1.menlo.aetherproject.net`` (or
Zack Williams794532a2021-03-18 17:38:36 -0700121 ``prontoproject.net``).
122
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800123 And we will have an additional parent prefix includes 2 FABRIC Prefix.
Zack Williams794532a2021-03-18 17:38:36 -0700124
125 * ``10.0.1.0/24``
126
127 * This is used to configure the correct routes, DNS, and TFTP servers
128 provided by DHCP to the equipment that is connected to the fabric
129 leaf switch that the management server (which provides those
130 services) is not connected to.
131
132 Additionally, these edge prefixes are used for Kubernetes but don't need to
133 be created in NetBox:
134
135 * ``10.0.2.0/24``
136
137 * Kubernetes Pod IP's
138
139 * ``10.0.3.0/24``
140
141 * Kubernetes Cluster IP's
142
Wei-Yu Chenf6c06422021-08-11 11:43:10 +08001438. Add **Devices** to the site, for each piece of equipment. These are named with a
Zack Williams794532a2021-03-18 17:38:36 -0700144 scheme similar to the DNS names used for the pod, given in this format::
145
146 <devname>.<deployment>.<site>
147
148 Examples::
149
150 mgmtserver1.ops1.tucson
151 node1.stage1.menlo
152
153 Note that these names are transformed into DNS names using the Prefixes, and
154 may have additional components - ``admin`` or ``fabric`` may be added after
155 the ``<devname>`` for devices on those networks.
156
157 Set the following fields when creating a device:
158
159 * Site
160 * Tenant
161 * Rack & Rack Position
162 * Serial number
163
164 If a specific Device Type doesn't exist for the device, it must be created,
165 which is detailed in the NetBox documentation, or ask the OPs team for help.
166
167 See `Rackmount of Equipment`_ below for guidance on how equipment should be
168 mounted in the Rack.
169
Wei-Yu Chenf6c06422021-08-11 11:43:10 +08001709. Add **Service** to the management server:
Zack Williams794532a2021-03-18 17:38:36 -0700171
172 * name: ``dns``
173 protocol: UDP
174 port: 53
175
176 * name: ``tftp``
177 protocol: UDP
178 port: 69
179
180 These are used by the DHCP and DNS config to know which servers offer
181 DNS or TFTP service.
182
18310. Set the MAC address for the physical interfaces on the device.
184
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800185 You may also need to add physical network interfaces if they aren't already
Zack Williams794532a2021-03-18 17:38:36 -0700186 created by the Device Type. An example would be if additional add-in
187 network cards were installed.
188
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080018911. Add any virtual interfaces to the **Devices**. When creating a virtual
190 interface, it should have it's ``label`` field set to the name of the
191 physical interface that it is assigned
Zack Williams794532a2021-03-18 17:38:36 -0700192
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800193 These are needed for two cases of the Pronto deployment:
Zack Williams794532a2021-03-18 17:38:36 -0700194
195 1. On the Management Server, there should bet (at least) two VLAN
196 interfaces created attached to the ``eno2`` network port, which
197 are used to provide connectivity to the management plane and fabric.
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800198 These interfaces should be named ``<name of vlan><vlan ID>``, so the
199 MGMT 800 VLAN would become a virtual interface named ``mgmt800``, with
200 the label ``eno2``.
Zack Williams794532a2021-03-18 17:38:36 -0700201
202 2. On the Fabric switches, the ``eth0`` port is shared between the OpenBMC
203 interface and the ONIE/ONL installation. Add a ``bmc`` virtual
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800204 interface with a label of ``eth0`` on each fabric switch, and have the
205 ``OOB Management`` checkbox checked.
Zack Williams794532a2021-03-18 17:38:36 -0700206
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080020712. Create **IP addresses** for the physical and virtual interfaces. These should
Zack Williams794532a2021-03-18 17:38:36 -0700208 have the Tenant and VRF set.
209
210 The Management Server should always have the first IP address in each
211 range, and they should be incremental, in this order. Examples are given as
212 if there was a single instance of each device - adding additional devices
213 would increment the later IP addresses.
214
215 * Management Server
216
217 * ``eno1`` - site provided public IP address, or blank if DHCP
218 provided
219
220 * ``eno2`` - 10.0.0.1/25 (first of ADMIN) - set as primary IP
221 * ``bmc`` - 10.0.0.2/25 (next of ADMIN)
222 * ``mgmt800`` - 10.0.0.129/25 (first of MGMT)
223 * ``fab801`` - 10.0.1.1/25 (first of FAB)
224
225 * Management Switch
226
227 * ``gbe1`` - 10.0.0.3/25 (next of ADMIN) - set as primary IP
228
229 * Fabric Switch
230
231 * ``eth0`` - 10.0.0.130/25 (next of MGMT), set as primary IP
232 * ``bmc`` - 10.0.0.131/25
233
234 * Compute Server
235
236 * ``eth0`` - 10.0.0.132/25 (next of MGMT), set as primary IP
237 * ``bmc`` - 10.0.0.4/25 (next of ADMIN)
238 * ``qsfp0`` - 10.0.1.2/25 (next of FAB)
239 * ``qsfp1`` - 10.0.1.3/25
240
241 * Other Fabric devices (eNB, etc.)
242
243 * ``eth0`` or other primary interface - 10.0.1.4/25 (next of FAB)
244
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080024513. Add **IP address** to the **Prefix** to represent reserved DHCP ranges.
246 We use a single IP address which ``Status`` is set to ``DHCP`` to stand
247 for the DHCP range, the DHCP server will consume the entire range of IP
248 address in the CIDR mask (includes first and last IP addresses).
Zack Williams794532a2021-03-18 17:38:36 -0700249
Wei-Yu Chenf6c06422021-08-11 11:43:10 +0800250 For example, IP ``10.0.0.32/27`` with ``DHCP`` status in Prefix
251 ``10.0.0.0/25``, the IP will be a DHCP block, and allocate IP address from
252 ``10.0.0.32`` to ``10.0.0.63``.
Zack Williams794532a2021-03-18 17:38:36 -0700253
Wei-Yu Chenf6c06422021-08-11 11:43:10 +080025414. Add **IP address** to the **Prefix** to represent route IP reservations for
255 both Fabric prefixes. These are IP addresses used by ONOS to route traffic
256 to the other leaf, and have the following attributes:
Zack Williams794532a2021-03-18 17:38:36 -0700257
258 - Have the last usable address in range (in the ``/25`` fabric examples
259 above, these would be ``10.0.1.126/25`` and ``10.0.1.254/25``)
260
261 - Have a ``Status`` of ``Reserved``, and the VRF, Tenant Group, and Tenant
262 set.
263
264 - The Description must start with the word ``router``, such as: ``router
265 for leaf1 Fabric``
266
267 - A custom field named ``RFC3442 Routes`` is set to the CIDR IP address of
268 the opposite leaf - if the leaf's prefix is ``10.0.1.0/25`` and the
269 router IP is ``10.0.1.126/25`` then ``RFC3442 Routes`` should be set to
270 ``10.0.1.128\25`` (and the reverse - on ``10.0.1.254/25`` the ``RFC3442
271 Routes`` would be set to be ``10.0.1.0/25``). This creates an `RFC3442
272 Classless Static Route Option <https://tools.ietf.org/html/rfc3442>`_
273 for the subnet in DHCP.
274
27515. Add Cables between physical interfaces on the devices
276
277 The topology needs to match the logical diagram presented in the
Zack Williams589ac232021-08-19 08:52:18 -0700278 :ref:`Production Environments <edge_deployment/overview:Production
279 Environments>`. Note that many of the management interfaces need to be
280 located either on the MGMT or ADMIN VLANs, and the management switch is
Zack Williams794532a2021-03-18 17:38:36 -0700281 used to provide that separation.
282
283Rackmount of Equipment
284----------------------
285
Zack Williams2dfb6242021-08-24 09:19:00 -0700286Most of the switch and server equipment used for Aether is available in the 19"
287rackmount form factor, but care needs to be taken in mounting this equipment to
288ensure proper airflow. Please follow these guidelines:
Zack Williams794532a2021-03-18 17:38:36 -0700289
290- The EdgeCore Wedge Switches have a front-to-back (aka "port-to-power") fan
291 configuration, so hot air exhaust is out the back of the switch near the
292 power inlets, away from the 32 QSFP network ports on the front of the switch.
293
Zack Williams589ac232021-08-19 08:52:18 -0700294- The full-depth servers (such as the 1U and 2U Supermicro servers used in
295 Pronto) also have front-to-back airflow but have most of their ports on the
296 rear of the device.
Zack Williams794532a2021-03-18 17:38:36 -0700297
298- Airflow through the rack should be in one direction to avoid heat being
299 pulled from one device into another. This means that to connect the QSFP
300 network ports from the servers to the switches, cabling should be routed
301 through the rack from front (switch) to back (server). Empty rack spaces
302 should be reserved for this purpose.
303
Zack Williams589ac232021-08-19 08:52:18 -0700304- The short-depth management switches and management servers should be mounted
305 on the rear of the rack. They don't generate an appreciable amount of heat,
306 so the airflow direction isn't a significant factor in racking them.
Zack Williams794532a2021-03-18 17:38:36 -0700307
308Inventory
309---------
310
311Once equipment arrives, any device needs to be recorded in inventory if it:
312
3131. Connects to the network (has a MAC address)
3142. Has a serial number
3153. Isn't a subcomponent (disk, add-in card, linecard, etc.) of a larger device.
316
317The following information should be recorded for every device:
318
319- Manufacturer
320- Model
321- Serial Number
322- MAC address (for the primary and any management/BMC/IPMI interfaces)
323
324This information should be be added to the corresponding Devices within the ONF
325NetBox instance. The accuracy of this information is very important as it is
326used in bootstrapping the compute systems, which is currently done by Serial
327Number, as reported to iPXE by SMBIOS.
328
329Once inventory has been completed, let the Infra team know, and the pxeboot
330configuration will be generated to have the OS preseed files corresponding to the
331new servers based on their serial numbers.