@@ -33,14 +33,15 @@ upstream on how to best include this use case.
33
33
34
34
## Mapping Leaf/Spine to Neutron Networks
35
35
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.
39
40
40
41
### VNIs
41
42
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 .
44
45
45
46
<!-- markdownlint-capture -->
46
47
<!-- markdownlint-disable MD046 -->
@@ -53,7 +54,7 @@ created of type VXLAN with the name of the fabric.
53
54
the VXLAN type to have a `physical_network` value like VLAN networks.
54
55
<!-- markdownlint-restore -->
55
56
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.
57
58
58
59
### VLANs
59
60
@@ -63,17 +64,23 @@ the name of the rack they serve could be used.
63
64
64
65
### Connecting a Server to a Network
65
66
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
77
84
use it.
78
85
79
86
For more technical details on this operation see the Bind Port section.
@@ -95,7 +102,7 @@ handled.
95
102
96
103
## A View from the Neutron API/CLI
97
104
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:
99
106
100
107
``` bash
101
108
openstack network create milantest
@@ -181,7 +188,7 @@ openstack network segment show 5ab3339d-ae44-4f45-9293-7b41a83bf473
181
188
+------------------+--------------------------------------+
182
189
```
183
190
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
185
192
connectivity to this server.
186
193
187
194
``` bash
@@ -381,7 +388,7 @@ While `bind_port()` is a distinct method inside of an ML2 mechanism, there is
381
388
no direct call for this via the Neutron API. This method is triggered by
382
389
Neutron based on certain data provided to port creation and update API calls.
383
390
384
- ` bind_port() ` will be triggered in the following situation :
391
+ ` bind_port() ` will be triggered in the following situations :
385
392
386
393
- the port has a binding host
387
394
- 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.
397
404
[ neutron-l2-adjacency ] : < https://specs.openstack.org/openstack/neutron-specs/specs/newton/routed-networks.html >
398
405
[ networking-generic-switch ] : < https://docs.openstack.org/networking-generic-switch/latest/ >
399
406
[ 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