Skip to content

Commit c8e54ad

Browse files
authored
Merge pull request #913 from rackerlabs/more-net-docs
docs: updated the network design based on reviews
2 parents 4d5da19 + a08205b commit c8e54ad

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

docs/design-guide/neutron-networking.md

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,15 @@ upstream on how to best include this use case.
3333

3434
## Mapping Leaf/Spine to Neutron Networks
3535

36-
The Leaf/Spine network is implemented as a VNI that exists on the fabric with
37-
endpoints on each of the leaves that need connectivity being mapped to a VLAN
38-
to provide connectivity to physical assets connected to that leaf.
36+
In a Leaf/Spine fabric, VXLAN VNIs are used to create virtual network segments
37+
that run over the IP underlay. On the leaf switches, traditional VLANs connected
38+
to physical assets are typically mapped to specific VNIs to provide connectivity
39+
across the fabric.
3940

4041
### VNIs
4142

42-
To provide available VNIs a [network segment range][neutron-network-segment-range] is
43-
created of type VXLAN with the name of the fabric.
43+
An available pool of VNIs is defined by creating a VXLAN [network segment range][neutron-network-segment-range]
44+
with the same name as the fabric on which the VNIs will reside.
4445

4546
<!-- markdownlint-capture -->
4647
<!-- markdownlint-disable MD046 -->
@@ -53,7 +54,7 @@ created of type VXLAN with the name of the fabric.
5354
the VXLAN type to have a `physical_network` value like VLAN networks.
5455
<!-- markdownlint-restore -->
5556

56-
Provider networks and self-service networks are allocated VNIs from this range.
57+
Provider networks and self-serviced tenant networks are allocated VNIs from this range.
5758

5859
### VLANs
5960

@@ -63,17 +64,23 @@ the name of the rack they serve could be used.
6364

6465
### Connecting a Server to a Network
6566

66-
When a server needs to have a connection to a network, it's `local_link_connection`
67-
information is looked up. The `physical_network` is then used to attempt to map
68-
the port to how it connects on the network. This is documented in Ironic's
69-
Networking Guide as [VIF Attachment][ironic-vif-attachment].
70-
71-
If that VNI is not already mapped to a VLAN on the leaf pair where the server
72-
is connected then there will not be a `physical_network` match. In this case
73-
we will not have a VLAN segment but only a VXLAN, so we will allocate a new VLAN
74-
in the correct leaf pair and attach it as a segment to the VXLAN network. The
75-
mechanism is responsible for then ensuring this configuration is pushed out. The
76-
code then re-attempts this operation and this time finds a match and is able to
67+
When a server needs to establish a connection to a network, Ironic takes all
68+
the baremetal ports assigned to that server and compares each
69+
baremetal port's `local_link_connection` and `physical_network` attributes to
70+
the desired network to determine the correct port to use.
71+
This process is documented is documented in Ironic's
72+
Networking Guide as [VIF Attachment][ironic-vif-attachment]. Changes to this
73+
process are coming in a forthcoming Ironic spec for [dynamic port attachment][ironic-spec-dpa].
74+
75+
If the VNI that is associated with the VXLAN network is not already mapped to
76+
a VLAN on the leaf pair where the server is being connected
77+
then there will not be a `physical_network` match to a segment in the network and
78+
one of the baremetal port's of the server. In this case
79+
we will not have a VLAN segment, so we will allocate a new VLAN
80+
in the correct leaf pair by utilizing the `physical_network` of one of the
81+
baremetal ports to create a VLAN segment and attach it to the VXLAN network. The
82+
mechanism is then responsible for then ensuring the switch configuration is applied.
83+
The code then re-attempts this operation and this time finds a match and is able to
7784
use it.
7885

7986
For more technical details on this operation see the Bind Port section.
@@ -95,7 +102,7 @@ handled.
95102

96103
## A View from the Neutron API/CLI
97104

98-
First we'll create a self-service network with the following:
105+
First we'll create a self-serviced tenant network with the following:
99106

100107
```bash
101108
openstack network create milantest
@@ -181,7 +188,7 @@ openstack network segment show 5ab3339d-ae44-4f45-9293-7b41a83bf473
181188
+------------------+--------------------------------------+
182189
```
183190

184-
Now we can look at the ports and confirm that indeed this segment exists to provide
191+
Now we can check the ports to confirm that this segment exists to provide
185192
connectivity to this server.
186193

187194
```bash
@@ -381,7 +388,7 @@ While `bind_port()` is a distinct method inside of an ML2 mechanism, there is
381388
no direct call for this via the Neutron API. This method is triggered by
382389
Neutron based on certain data provided to port creation and update API calls.
383390

384-
`bind_port()` will be triggered in the following situation:
391+
`bind_port()` will be triggered in the following situations:
385392

386393
- the port has a binding host
387394
- the port is either unbound or has previously failed to bind
@@ -397,3 +404,4 @@ Neutron based on certain data provided to port creation and update API calls.
397404
[neutron-l2-adjacency]: <https://specs.openstack.org/openstack/neutron-specs/specs/newton/routed-networks.html>
398405
[networking-generic-switch]: <https://docs.openstack.org/networking-generic-switch/latest/>
399406
[ironic-vif-attachment]: <https://docs.openstack.org/ironic/latest/admin/networking.html#vif-attachment-flow>
407+
[ironic-spec-dpa]: <https://review.opendev.org/c/openstack/ironic-specs/+/945642>

0 commit comments

Comments
 (0)