From e644e3dda9b2cfc5a521c68ec4f4dba6fbf29abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harald=20Jens=C3=A5s?= Date: Tue, 4 Sep 2018 01:08:28 +0200 Subject: [PATCH] Add MTU to neutron networks and nic-config templates Neutron has support[1] to set the guaranteed MTU for networks and network segments so that this is exposed to plug-ins. In interest of supporting the use of plug-ins to configure network devices in the future this change adds MTU property on neutron networks. The new (optional) property 'mtu' in the network defenitions in 'network_data.yaml' is used to control the MTU settings. By default the mtu is '1500'. We already configure the MTU on the ctlplane neutron networks, this adds the MTU to composable networks. Also update the nic-config sample templates to include mtu settings. A heat value resource is added to nic-config templates to get the required minimum viable MTU value for bridges, bonds and member interfaces to ensure the MTU is large enough to allow the largest configured MTU to traverse the path. Closes-Bug: #1790537 Change-Id: I11e38f82eb9040f77412fe8ad200fcc48031e2f8 --- .../net-config-multinode-os-net-config.yaml | 42 ++++++++++ ci/common/net-config-multinode.yaml | 42 ++++++++++ ci/common/net-config-simple-bridge.yaml | 42 ++++++++++ .../nic-configs/ceph-storage.yaml | 42 ++++++++++ .../nic-configs/cinder-storage.yaml | 42 ++++++++++ .../nic-configs/compute.yaml | 42 ++++++++++ .../nic-configs/controller.yaml | 42 ++++++++++ .../nic-configs/swift-storage.yaml | 42 ++++++++++ .../nic-configs/ceph-storage.yaml | 42 ++++++++++ .../nic-configs/cinder-storage.yaml | 42 ++++++++++ .../multiple-nics/nic-configs/compute.yaml | 42 ++++++++++ .../multiple-nics/nic-configs/controller.yaml | 42 ++++++++++ .../nic-configs/swift-storage.yaml | 42 ++++++++++ .../public-bond/nic-configs/ceph-storage.yaml | 42 ++++++++++ .../nic-configs/cinder-storage.yaml | 42 ++++++++++ .../public-bond/nic-configs/compute.yaml | 42 ++++++++++ .../public-bond/nic-configs/controller.yaml | 42 ++++++++++ .../nic-configs/swift-storage.yaml | 42 ++++++++++ net-config-bond.j2.yaml | 12 +++ net-config-bridge.j2.yaml | 12 +++ net-config-linux-bridge.j2.yaml | 12 +++ net-config-noop.j2.yaml | 12 +++ net-config-standalone.j2.yaml | 12 +++ ...g-static-bridge-with-external-dhcp.j2.yaml | 12 +++ net-config-static-bridge.j2.yaml | 12 +++ net-config-static.j2.yaml | 12 +++ net-config-undercloud.j2.yaml | 12 +++ .../2-linux-bonds-vlans/role.role.j2.yaml | 67 +++++++++++++++- .../controller-no-external.j2.yaml | 12 +++ .../bond-with-vlans/controller-v6.j2.yaml | 52 +++++++++++++ .../config/bond-with-vlans/role.role.j2.yaml | 76 +++++++++++++++---- .../config/multiple-nics/compute-dvr.j2.yaml | 28 +++++++ .../multiple-nics/controller-v6.j2.yaml | 30 ++++++++ .../config/multiple-nics/role.role.j2.yaml | 56 +++++++++----- .../controller-v6.j2.yaml | 46 +++++++++++ .../role.role.j2.yaml | 52 +++++++++++-- .../controller-no-external.j2.yaml | 12 +++ .../single-nic-vlans/controller-v6.j2.yaml | 46 +++++++++++ .../config/single-nic-vlans/role.role.j2.yaml | 46 +++++++++-- network/network.j2 | 11 ++- network/ports/noop.yaml | 10 +++ network/ports/port.j2 | 4 + network/ports/port_from_pool.j2 | 3 + network_data.yaml | 9 +++ network_data_ganesha.yaml | 10 +++ network_data_routed.yaml | 13 ++++ puppet/role.role.j2.yaml | 2 + ...emplates-mtu-setting-a76fe47cfc97b36f.yaml | 58 ++++++++++++++ 48 files changed, 1461 insertions(+), 46 deletions(-) create mode 100644 releasenotes/notes/network-templates-mtu-setting-a76fe47cfc97b36f.yaml diff --git a/ci/common/net-config-multinode-os-net-config.yaml b/ci/common/net-config-multinode-os-net-config.yaml index beb12f2c5c..6bbc0c6c4b 100644 --- a/ci/common/net-config-multinode-os-net-config.yaml +++ b/ci/common/net-config-multinode-os-net-config.yaml @@ -28,6 +28,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number ExternalIpSubnet: default: '' description: IP address/subnet on the external network @@ -40,6 +46,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number InternalApiIpSubnet: default: '' description: IP address/subnet on the internal_api network @@ -52,6 +64,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -64,6 +82,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -76,6 +100,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number StorageNFSIpSubnet: default: '' description: IP address/subnet on the storage_nfs network @@ -100,6 +130,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: default: '' description: IP address/subnet on the management network @@ -112,6 +148,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number OvSBridgeMtu: default: 1300 description: The mtu of the OvS bridge diff --git a/ci/common/net-config-multinode.yaml b/ci/common/net-config-multinode.yaml index a23a52c47f..ffc882b33d 100644 --- a/ci/common/net-config-multinode.yaml +++ b/ci/common/net-config-multinode.yaml @@ -28,6 +28,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number ExternalIpSubnet: default: '' description: IP address/subnet on the external network @@ -40,6 +46,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number InternalApiIpSubnet: default: '' description: IP address/subnet on the internal_api network @@ -52,6 +64,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -64,6 +82,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -76,6 +100,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number StorageNFSIpSubnet: default: '' description: IP address/subnet on the storage_nfs network @@ -92,6 +122,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: default: '' description: IP address/subnet on the management network @@ -104,6 +140,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/common/net-config-simple-bridge.yaml b/ci/common/net-config-simple-bridge.yaml index 52bf8c1c58..4541800ac4 100644 --- a/ci/common/net-config-simple-bridge.yaml +++ b/ci/common/net-config-simple-bridge.yaml @@ -25,6 +25,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number ExternalIpSubnet: default: '' description: IP address/subnet on the external network @@ -37,6 +43,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number InternalApiIpSubnet: default: '' description: IP address/subnet on the internal_api network @@ -49,6 +61,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -61,6 +79,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -73,6 +97,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number StorageNFSIpSubnet: default: '' description: IP address/subnet on the storage_nfs network @@ -89,6 +119,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: default: '' description: IP address/subnet on the management network @@ -101,6 +137,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics-ipv6/nic-configs/ceph-storage.yaml b/ci/environments/network/multiple-nics-ipv6/nic-configs/ceph-storage.yaml index bad7fbc704..70496d5dc5 100644 --- a/ci/environments/network/multiple-nics-ipv6/nic-configs/ceph-storage.yaml +++ b/ci/environments/network/multiple-nics-ipv6/nic-configs/ceph-storage.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics-ipv6/nic-configs/cinder-storage.yaml b/ci/environments/network/multiple-nics-ipv6/nic-configs/cinder-storage.yaml index 0b01f3dabf..c70281340b 100644 --- a/ci/environments/network/multiple-nics-ipv6/nic-configs/cinder-storage.yaml +++ b/ci/environments/network/multiple-nics-ipv6/nic-configs/cinder-storage.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics-ipv6/nic-configs/compute.yaml b/ci/environments/network/multiple-nics-ipv6/nic-configs/compute.yaml index afb583de19..302ed8b2ab 100644 --- a/ci/environments/network/multiple-nics-ipv6/nic-configs/compute.yaml +++ b/ci/environments/network/multiple-nics-ipv6/nic-configs/compute.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics-ipv6/nic-configs/controller.yaml b/ci/environments/network/multiple-nics-ipv6/nic-configs/controller.yaml index b4e8d99ac6..102a3fbbac 100644 --- a/ci/environments/network/multiple-nics-ipv6/nic-configs/controller.yaml +++ b/ci/environments/network/multiple-nics-ipv6/nic-configs/controller.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics-ipv6/nic-configs/swift-storage.yaml b/ci/environments/network/multiple-nics-ipv6/nic-configs/swift-storage.yaml index 0b01f3dabf..c70281340b 100644 --- a/ci/environments/network/multiple-nics-ipv6/nic-configs/swift-storage.yaml +++ b/ci/environments/network/multiple-nics-ipv6/nic-configs/swift-storage.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics/nic-configs/ceph-storage.yaml b/ci/environments/network/multiple-nics/nic-configs/ceph-storage.yaml index d55b661161..c45e2110a8 100644 --- a/ci/environments/network/multiple-nics/nic-configs/ceph-storage.yaml +++ b/ci/environments/network/multiple-nics/nic-configs/ceph-storage.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics/nic-configs/cinder-storage.yaml b/ci/environments/network/multiple-nics/nic-configs/cinder-storage.yaml index 9087fe07b5..f4a784b05a 100644 --- a/ci/environments/network/multiple-nics/nic-configs/cinder-storage.yaml +++ b/ci/environments/network/multiple-nics/nic-configs/cinder-storage.yaml @@ -17,6 +17,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number InternalApiIpSubnet: default: '' description: IP address/subnet on the internal_api network @@ -29,6 +35,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +53,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +71,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +89,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +107,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics/nic-configs/compute.yaml b/ci/environments/network/multiple-nics/nic-configs/compute.yaml index 33416505fe..9a31c0c256 100644 --- a/ci/environments/network/multiple-nics/nic-configs/compute.yaml +++ b/ci/environments/network/multiple-nics/nic-configs/compute.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics/nic-configs/controller.yaml b/ci/environments/network/multiple-nics/nic-configs/controller.yaml index aee95bd289..fea412cb2d 100644 --- a/ci/environments/network/multiple-nics/nic-configs/controller.yaml +++ b/ci/environments/network/multiple-nics/nic-configs/controller.yaml @@ -17,6 +17,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number InternalApiIpSubnet: default: '' description: IP address/subnet on the internal_api network @@ -29,6 +35,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +53,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +71,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +89,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +107,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/multiple-nics/nic-configs/swift-storage.yaml b/ci/environments/network/multiple-nics/nic-configs/swift-storage.yaml index 9087fe07b5..7064a1d630 100644 --- a/ci/environments/network/multiple-nics/nic-configs/swift-storage.yaml +++ b/ci/environments/network/multiple-nics/nic-configs/swift-storage.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/public-bond/nic-configs/ceph-storage.yaml b/ci/environments/network/public-bond/nic-configs/ceph-storage.yaml index 6681302414..36cabf21ff 100644 --- a/ci/environments/network/public-bond/nic-configs/ceph-storage.yaml +++ b/ci/environments/network/public-bond/nic-configs/ceph-storage.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/public-bond/nic-configs/cinder-storage.yaml b/ci/environments/network/public-bond/nic-configs/cinder-storage.yaml index 740109a4b0..5da86dad0b 100644 --- a/ci/environments/network/public-bond/nic-configs/cinder-storage.yaml +++ b/ci/environments/network/public-bond/nic-configs/cinder-storage.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/public-bond/nic-configs/compute.yaml b/ci/environments/network/public-bond/nic-configs/compute.yaml index 999285dbf7..49ad2945c4 100644 --- a/ci/environments/network/public-bond/nic-configs/compute.yaml +++ b/ci/environments/network/public-bond/nic-configs/compute.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/public-bond/nic-configs/controller.yaml b/ci/environments/network/public-bond/nic-configs/controller.yaml index 83b48ad86e..4b8a943180 100644 --- a/ci/environments/network/public-bond/nic-configs/controller.yaml +++ b/ci/environments/network/public-bond/nic-configs/controller.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/ci/environments/network/public-bond/nic-configs/swift-storage.yaml b/ci/environments/network/public-bond/nic-configs/swift-storage.yaml index 740109a4b0..5da86dad0b 100644 --- a/ci/environments/network/public-bond/nic-configs/swift-storage.yaml +++ b/ci/environments/network/public-bond/nic-configs/swift-storage.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number StorageIpSubnet: default: '' description: IP address/subnet on the storage network @@ -41,6 +47,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage_mgmt network @@ -53,6 +65,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number TenantIpSubnet: default: '' description: IP address/subnet on the tenant network @@ -65,6 +83,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network @@ -77,6 +101,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number BondInterfaceOvsOptions: default: 'bond_mode=active-backup' description: The ovs_options string for the bond interface. Set things like @@ -110,6 +140,12 @@ parameters: default: '10.0.0.1' description: default route for the external network type: string + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: number ControlPlaneSubnetCidr: default: '' description: > @@ -129,6 +165,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/net-config-bond.j2.yaml b/net-config-bond.j2.yaml index d1866c1864..4f19f34955 100644 --- a/net-config-bond.j2.yaml +++ b/net-config-bond.j2.yaml @@ -35,6 +35,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > @@ -52,6 +58,12 @@ parameters: default: '' description: IP address/subnet on the {{network.name_lower}} network type: string + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- endfor %} resources: OsNetConfigImpl: diff --git a/net-config-bridge.j2.yaml b/net-config-bridge.j2.yaml index 85eec2d210..0fba3a530f 100644 --- a/net-config-bridge.j2.yaml +++ b/net-config-bridge.j2.yaml @@ -25,6 +25,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > @@ -50,6 +56,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- endfor %} resources: OsNetConfigImpl: diff --git a/net-config-linux-bridge.j2.yaml b/net-config-linux-bridge.j2.yaml index 5fc15fa363..8765f344e5 100644 --- a/net-config-linux-bridge.j2.yaml +++ b/net-config-linux-bridge.j2.yaml @@ -19,6 +19,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- endfor %} ControlPlaneDefaultRoute: description: The default route of the control plane network. (The parameter @@ -39,6 +45,12 @@ parameters: The subnet CIDR of the control plane network. (The parameter is automatically resolved from the ctlplane subnet's cidr attribute.) type: string + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/net-config-noop.j2.yaml b/net-config-noop.j2.yaml index 5417761135..dbc1a94a5f 100644 --- a/net-config-noop.j2.yaml +++ b/net-config-noop.j2.yaml @@ -28,6 +28,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > @@ -53,6 +59,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- endfor %} resources: diff --git a/net-config-standalone.j2.yaml b/net-config-standalone.j2.yaml index 69c9224db4..1479bd9224 100644 --- a/net-config-standalone.j2.yaml +++ b/net-config-standalone.j2.yaml @@ -20,6 +20,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- endfor %} ControlPlaneSubnetCidr: default: '' @@ -40,6 +46,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: # Here for compatability, not used. + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/net-config-static-bridge-with-external-dhcp.j2.yaml b/net-config-static-bridge-with-external-dhcp.j2.yaml index 2752f2c72c..606666fca4 100644 --- a/net-config-static-bridge-with-external-dhcp.j2.yaml +++ b/net-config-static-bridge-with-external-dhcp.j2.yaml @@ -20,6 +20,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- endfor %} ControlPlaneSubnetCidr: default: '' @@ -40,6 +46,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/net-config-static-bridge.j2.yaml b/net-config-static-bridge.j2.yaml index 363a790abd..9f80a1566f 100644 --- a/net-config-static-bridge.j2.yaml +++ b/net-config-static-bridge.j2.yaml @@ -20,6 +20,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- endfor %} ControlPlaneSubnetCidr: default: '' @@ -40,6 +46,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/net-config-static.j2.yaml b/net-config-static.j2.yaml index 46037415ba..b519bede28 100644 --- a/net-config-static.j2.yaml +++ b/net-config-static.j2.yaml @@ -19,6 +19,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- endfor %} ControlPlaneSubnetCidr: default: '' @@ -39,6 +45,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/net-config-undercloud.j2.yaml b/net-config-undercloud.j2.yaml index e106dfb5ad..71e68eb0ea 100644 --- a/net-config-undercloud.j2.yaml +++ b/net-config-undercloud.j2.yaml @@ -20,6 +20,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- endfor %} ControlPlaneSubnetCidr: default: '' @@ -40,6 +46,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number DnsServers: # Override this via parameter_defaults default: [] description: > diff --git a/network/config/2-linux-bonds-vlans/role.role.j2.yaml b/network/config/2-linux-bonds-vlans/role.role.j2.yaml index ebd34b8472..3356dc2a57 100644 --- a/network/config/2-linux-bonds-vlans/role.role.j2.yaml +++ b/network/config/2-linux-bonds-vlans/role.role.j2.yaml @@ -26,7 +26,13 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json -{%- for network in networks %} + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number +{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} {{network.name}}IpSubnet: default: '' @@ -36,6 +42,12 @@ parameters: default: {{network.vlan}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' @@ -84,6 +96,41 @@ parameters: resources: + + MinViableMtuBondApi: + # This resource resolves the minimum viable MTU for interfaces, bonds and + # bridges that carry multiple VLANs. Each VLAN may have different MTU. The + # bridge, bond or interface must have an MTU to allow the VLAN with the + # largest MTU. + type: OS::Heat::Value + properties: + type: number + value: + yaql: + expression: $.data.max() + data: + - {get_param: ControlPlaneMtu} +{%- for network in networks if network.enabled|default(true) and network.name in role.networks and not network.name.startswith('Tenant') %} + - {get_param: {{network.name}}Mtu} +{%- endfor %} + + MinViableMtuBondData: + # This resource resolves the minimum viable MTU for interfaces, bonds and + # bridges that carry multiple VLANs. Each VLAN may have different MTU. The + # bridge, bond or interface must have an MTU to allow the VLAN with the + # largest MTU. + type: OS::Heat::Value + properties: + type: number + value: + yaql: + expression: $.data.max() + data: + - {get_param: ControlPlaneMtu} +{%- for network in networks if network.name.startswith('Tenant') and network.enabled|default(true) and network.name in role.networks %} + - {get_param: {{network.name}}Mtu} +{%- endfor %} + OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: @@ -97,6 +144,8 @@ resources: network_config: - type: interface name: nic1 + mtu: + get_param: ControlPlaneMtu use_dhcp: false addresses: - ip_netmask: @@ -117,6 +166,8 @@ resources: {%- endif %} - type: linux_bond name: bond_api + mtu: + get_attr: [MinViableMtuBondApi, value] use_dhcp: false bonding_options: get_param: BondInterfaceOvsOptions @@ -125,12 +176,18 @@ resources: members: - type: interface name: nic2 + mtu: + get_attr: [MinViableMtuBondApi, value] primary: true - type: interface name: nic3 + mtu: + get_attr: [MinViableMtuBondApi, value] {%- for network in networks if network.enabled|default(true) and network.name in role.networks and not network.name.startswith('Tenant') %} - type: vlan device: bond_api + mtu: + get_param: {{network.name}}Mtu vlan_id: get_param: {{network.name}}NetworkVlanID addresses: @@ -153,17 +210,25 @@ resources: members: - type: linux_bond name: bond-data + mtu: + get_attr: [MinViableMtuBondData, value] bonding_options: get_param: BondInterfaceOvsOptions members: - type: interface name: nic4 + mtu: + get_attr: [MinViableMtuBondData, value] primary: true - type: interface name: nic5 + mtu: + get_attr: [MinViableMtuBondData, value] {%- for network in networks if network.name.startswith('Tenant') and network.name in role.networks and network.enabled|default(true) %} - type: vlan device: bond-data + mtu: + get_param: {{network.name}}Mtu vlan_id: get_param: {{network.name}}NetworkVlanID addresses: diff --git a/network/config/bond-with-vlans/controller-no-external.j2.yaml b/network/config/bond-with-vlans/controller-no-external.j2.yaml index 6b81706232..993dbd1e56 100644 --- a/network/config/bond-with-vlans/controller-no-external.j2.yaml +++ b/network/config/bond-with-vlans/controller-no-external.j2.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks %} {{network.name}}IpSubnet: default: '' @@ -38,6 +44,12 @@ parameters: default: {{network.vlan}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' diff --git a/network/config/bond-with-vlans/controller-v6.j2.yaml b/network/config/bond-with-vlans/controller-v6.j2.yaml index 39c347c347..6963886ce7 100644 --- a/network/config/bond-with-vlans/controller-v6.j2.yaml +++ b/network/config/bond-with-vlans/controller-v6.j2.yaml @@ -27,6 +27,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks %} {{network.name}}IpSubnet: default: '' @@ -36,6 +42,12 @@ parameters: default: {{network.vlan}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' @@ -75,6 +87,24 @@ parameters: for OVS bonds or like mode=4 for Linux bonds using this option.' type: string resources: + + MinViableMtu: + # This resource resolves the minimum viable MTU for interfaces, bonds and + # bridges that carry multiple VLANs. Each VLAN may have different MTU. The + # bridge, bond or interface must have an MTU to allow the VLAN with the + # largest MTU. + type: OS::Heat::Value + properties: + type: number + value: + yaql: + expression: $.data.max() + data: + - {get_param: ControlPlaneMtu} +{%- for network in networks if network.enabled|default(true) %} + - {get_param: {{network.name}}Mtu} +{%- endfor %} + OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: @@ -88,6 +118,8 @@ resources: network_config: - type: interface name: nic1 + mtu: + get_param: ControlPlaneMtu use_dhcp: false addresses: - ip_netmask: @@ -106,20 +138,30 @@ resources: get_param: ControlPlaneDefaultRoute - type: ovs_bridge name: bridge_name + mtu: + get_attr: [MinViableMtu, value] dns_servers: get_param: DnsServers members: - type: ovs_bond name: bond1 + mtu: + get_attr: [MinViableMtu, value] ovs_options: get_param: BondInterfaceOvsOptions members: - type: interface name: nic2 + mtu: + get_attr: [MinViableMtu, value] primary: true - type: interface name: nic3 + mtu: + get_attr: [MinViableMtu, value] - type: vlan + mtu: + get_attr: [ExternalMtu, value] vlan_id: get_param: ExternalNetworkVlanID addresses: @@ -132,6 +174,8 @@ resources: next_hop: get_param: ExternalInterfaceDefaultRoute - type: vlan + mtu: + get_attr: [InternalApiMtu, value] vlan_id: get_param: InternalApiNetworkVlanID addresses: @@ -140,6 +184,8 @@ resources: routes: get_param: InternalApiInterfaceRoutes - type: vlan + mtu: + get_attr: [StorageMtu, value] vlan_id: get_param: StorageNetworkVlanID addresses: @@ -148,6 +194,8 @@ resources: routes: get_param: StorageInterfaceRoutes - type: vlan + mtu: + get_attr: [StorageMgmtMtu, value] vlan_id: get_param: StorageMgmtNetworkVlanID addresses: @@ -156,6 +204,8 @@ resources: routes: get_param: StorageMgmtInterfaceRoutes - type: vlan + mtu: + get_attr: [TenantMtu, value] vlan_id: get_param: TenantNetworkVlanID addresses: @@ -168,6 +218,8 @@ resources: # out the default route on the External interface. This will # make the External API unreachable from remote subnets. #- type: vlan + # mtu: + # get_attr: [ManagementMtu, value] # vlan_id: # get_param: ManagementNetworkVlanID # addresses: diff --git a/network/config/bond-with-vlans/role.role.j2.yaml b/network/config/bond-with-vlans/role.role.j2.yaml index abb7472dba..7d55720482 100644 --- a/network/config/bond-with-vlans/role.role.j2.yaml +++ b/network/config/bond-with-vlans/role.role.j2.yaml @@ -25,6 +25,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks if network.enabled|default(true) and network.name in role.networks %} {{network.name}}IpSubnet: default: '' @@ -34,17 +40,23 @@ parameters: default: {{network.vlan}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number +{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' description: default route for the {{network.name_lower}} network type: string -{%- elif network.gateway_ip|default(false) %} +{%- elif network.gateway_ip|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ip}}' description: default route for the {{network.name_lower}} network type: string -{%- endif %} +{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -79,6 +91,24 @@ parameters: type: number {%- endif %} resources: + + MinViableMtu: + # This resource resolves the minimum viable MTU for interfaces, bonds and + # bridges that carry multiple VLANs. Each VLAN may have different MTU. The + # bridge, bond or interface must have an MTU to allow the VLAN with the + # largest MTU. + type: OS::Heat::Value + properties: + type: number + value: + yaql: + expression: $.data.max() + data: + - {get_param: ControlPlaneMtu} +{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} + - {get_param: {{network.name}}Mtu} +{%- endfor %} + OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: @@ -92,6 +122,8 @@ resources: network_config: - type: interface name: nic1 + mtu: + get_param: ControlPlaneMtu use_dhcp: false addresses: - ip_netmask: @@ -112,26 +144,34 @@ resources: {%- endif %} {%- if not role.name.startswith('ComputeOvsDpdk') %} - type: ovs_bridge -{%- if role.name.startswith('CephStorage') or role.name.startswith('ObjectStorage') or role.name.startswith('BlockStorage') %} +{%- if role.name.startswith('CephStorage') or role.name.startswith('ObjectStorage') or role.name.startswith('BlockStorage') %} name: br-bond -{%- else %} +{%- else %} name: bridge_name -{%- endif %} +{%- endif %} dns_servers: get_param: DnsServers members: - type: ovs_bond name: bond1 + mtu: + get_attr: [MinViableMtu, value] ovs_options: get_param: BondInterfaceOvsOptions members: - type: interface name: nic2 + mtu: + get_attr: [MinViableMtu, value] primary: true - type: interface name: nic3 -{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} + mtu: + get_attr: [MinViableMtu, value] +{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} - type: vlan + mtu: + get_param: {{network.name}}Mtu vlan_id: get_param: {{network.name}}NetworkVlanID addresses: @@ -140,16 +180,18 @@ resources: routes: list_concat_unique: - get_param: {{network.name}}InterfaceRoutes -{%- if network.name in role.default_route_networks %} +{%- if network.name in role.default_route_networks %} - - default: true next_hop: get_param: {{network.name}}InterfaceDefaultRoute -{%- endif %} -{%- endfor %} +{%- endif %} +{%- endfor %} {%- else %} # Linux bond for non-DPDK traffic required when using DPDK - type: linux_bond name: bond_api + mtu: + get_attr: [MinViableMtu, value] bonding_options: get_param: BondInterfaceOvsOptions use_dhcp: false @@ -158,12 +200,18 @@ resources: members: - type: interface name: nic2 + mtu: + get_attr: [MinViableMtu, value] primary: true - type: interface name: nic3 -{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} + mtu: + get_attr: [MinViableMtu, value] +{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} - type: vlan device: bond_api + mtu: + get_param: {{network.name}}Mtu vlan_id: get_param: {{network.name}}NetworkVlanID addresses: @@ -172,12 +220,12 @@ resources: routes: list_concat_unique: - get_param: {{network.name}}InterfaceRoutes -{%- if network.name in role.default_route_networks %} +{%- if network.name in role.default_route_networks %} - - default: true next_hop: get_param: {{network.name}}InterfaceDefaultRoute -{%- endif %} -{%- endfor %} +{%- endif %} +{%- endfor %} # Used as a provider network with external DHCP - type: ovs_user_bridge name: br-dpdk0 diff --git a/network/config/multiple-nics/compute-dvr.j2.yaml b/network/config/multiple-nics/compute-dvr.j2.yaml index 15d32fdc12..4c7341b87f 100644 --- a/network/config/multiple-nics/compute-dvr.j2.yaml +++ b/network/config/multiple-nics/compute-dvr.j2.yaml @@ -27,6 +27,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks %} {{network.name}}IpSubnet: default: '' @@ -36,6 +42,12 @@ parameters: default: {{network.vlan|default("")}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' @@ -82,6 +94,8 @@ resources: network_config: - type: interface name: nic1 + mtu: + get_param: ControlPlaneMtu use_dhcp: false dns_servers: get_param: DnsServers @@ -102,6 +116,8 @@ resources: get_param: ControlPlaneDefaultRoute - type: interface name: nic2 + mtu: + get_param: StorageMtu use_dhcp: false addresses: - ip_netmask: @@ -110,6 +126,8 @@ resources: get_param: StorageInterfaceRoutes - type: interface name: nic4 + mtu: + get_param: InternalApiMtu use_dhcp: false addresses: - ip_netmask: @@ -118,6 +136,8 @@ resources: get_param: InternalApiInterfaceRoutes - type: ovs_bridge name: br-tenant + mtu: + get_param: TenantMtu use_dhcp: false addresses: - ip_netmask: @@ -127,23 +147,31 @@ resources: members: - type: interface name: nic5 + mtu: + get_param: TenantMtu use_dhcp: false primary: true # External bridge for DVR (no IP address required) - type: ovs_bridge name: bridge_name + mtu: + get_param: ExternalMtu dns_servers: get_param: DnsServers use_dhcp: false members: - type: interface name: nic6 + mtu: + get_param: ExternalMtu primary: true # Uncomment when including environments/network-management.yaml # If setting default route on the Management interface, comment # out the default route on the Control Plane. #- type: interface # name: nic7 + # mtu: + # get_param: ManagementMtu # use_dhcp: false # addresses: # - ip_netmask: diff --git a/network/config/multiple-nics/controller-v6.j2.yaml b/network/config/multiple-nics/controller-v6.j2.yaml index ab04bf6403..45e62b82fb 100644 --- a/network/config/multiple-nics/controller-v6.j2.yaml +++ b/network/config/multiple-nics/controller-v6.j2.yaml @@ -26,6 +26,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks %} {{network.name}}IpSubnet: default: '' @@ -35,6 +41,12 @@ parameters: default: {{network.vlan|default("")}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' @@ -81,6 +93,8 @@ resources: network_config: - type: interface name: nic1 + mtu: + get_param: ControlPlaneMtu use_dhcp: false dns_servers: get_param: DnsServers @@ -102,6 +116,8 @@ resources: get_param: ControlPlaneDefaultRoute - type: interface name: nic2 + mtu: + get_param: StorageMtu use_dhcp: false addresses: - ip_netmask: @@ -110,6 +126,8 @@ resources: get_param: StorageInterfaceRoutes - type: interface name: nic3 + mtu: + get_param: StorageMgmtMtu use_dhcp: false addresses: - ip_netmask: @@ -118,6 +136,8 @@ resources: get_param: StorageMgmtInterfaceRoutes - type: interface name: nic4 + mtu: + get_param: InternalApiMtu use_dhcp: false addresses: - ip_netmask: @@ -126,6 +146,8 @@ resources: get_param: InternalApiInterfaceRoutes - type: ovs_bridge name: br-tenant + mtu: + get_param: TenantMtu use_dhcp: false addresses: - ip_netmask: @@ -135,10 +157,14 @@ resources: members: - type: interface name: nic5 + mtu: + get_param: TenantMtu use_dhcp: false primary: true - type: ovs_bridge name: bridge_name + mtu: + get_param: ExternalMtu dns_servers: get_param: DnsServers use_dhcp: false @@ -153,6 +179,8 @@ resources: get_param: ExternalInterfaceDefaultRoute members: - type: interface + mtu: + get_param: ExternalMtu name: nic6 primary: true # Uncomment when including environments/network-management.yaml @@ -161,6 +189,8 @@ resources: # make the External API unreachable from remote subnets. #- type: interface # name: nic7 + # mtu: + # get_param: ManagementMtu # use_dhcp: false # addresses: # - ip_netmask: diff --git a/network/config/multiple-nics/role.role.j2.yaml b/network/config/multiple-nics/role.role.j2.yaml index 76aacc17fb..bad30162bc 100644 --- a/network/config/multiple-nics/role.role.j2.yaml +++ b/network/config/multiple-nics/role.role.j2.yaml @@ -25,6 +25,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks if network.enabled|default(true) and network.name in role.networks %} {{network.name}}IpSubnet: default: '' @@ -34,17 +40,23 @@ parameters: default: {{network.vlan|default("")}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number +{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' description: default route for the {{network.name_lower}} network type: string -{%- elif network.gateway_ip|default(false) %} +{%- elif network.gateway_ip|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ip}}' description: default route for the {{network.name_lower}} network type: string -{%- endif %} +{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -86,6 +98,8 @@ resources: network_config: - type: interface name: nic1 + mtu: + get_param: ControlPlaneMtu use_dhcp: false dns_servers: get_param: DnsServers @@ -108,10 +122,12 @@ resources: {%- endif %} {%- set nics_used = [1] %} {%- for network in networks if network.enabled|default(true) and network.name not in role.networks_skip_config|default([]) %} -{%- if network.name not in ["External", "Tenant"] %} -{%- if network.name in role.networks %} +{%- if network.name not in ["External", "Tenant"] %} +{%- if network.name in role.networks %} - type: interface name: nic{{loop.index + 1}} + mtu: + get_param: {{network.name}}Mtu use_dhcp: false addresses: - ip_netmask: @@ -119,39 +135,45 @@ resources: routes: list_concat_unique: - get_param: {{network.name}}InterfaceRoutes -{%- if network.name in role.default_route_networks %} +{%- if network.name in role.default_route_networks %} - - default: true next_hop: get_param: {{network.name}}InterfaceDefaultRoute -{%- endif %} -{%- endif %} -{%- elif network.name in role.networks or role.name == 'Networker' or role.name == 'ComputeDVR' %} +{%- endif %} +{%- endif %} +{%- elif network.name in role.networks or role.name == 'Networker' or role.name == 'ComputeDVR' %} - type: ovs_bridge -{%- if network.name == "External" %} +{%- if network.name == "External" %} name: bridge_name -{%- else %} +{%- else %} name: br-{{network.name_lower}} -{%- endif %} +{%- endif %} + mtu: + get_param: {{network.name}}Mtu + dns_servers: + get_param: DnsServers use_dhcp: false -{%- if network.name in role.networks %} +{%- if network.name in role.networks %} addresses: - ip_netmask: get_param: {{network.name}}IpSubnet routes: list_concat_unique: - get_param: {{network.name}}InterfaceRoutes -{%- if network.name in role.default_route_networks %} +{%- if network.name in role.default_route_networks %} - - default: true next_hop: get_param: {{network.name}}InterfaceDefaultRoute -{%- endif %} -{%- endif %} +{%- endif %} +{%- endif %} members: - type: interface name: nic{{loop.index + 1}} + mtu: + get_param: {{network.name}}Mtu use_dhcp: false primary: true -{%- endif %} +{%- endif %} {#- This hack gets around Jinja scope limitations to update nics_used within loop. #} {%- set _ = nics_used.append(loop.index) %} {%- endfor %} diff --git a/network/config/single-nic-linux-bridge-vlans/controller-v6.j2.yaml b/network/config/single-nic-linux-bridge-vlans/controller-v6.j2.yaml index 1562b82eaa..0c1f120c86 100644 --- a/network/config/single-nic-linux-bridge-vlans/controller-v6.j2.yaml +++ b/network/config/single-nic-linux-bridge-vlans/controller-v6.j2.yaml @@ -26,6 +26,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks %} {{network.name}}IpSubnet: default: '' @@ -35,6 +41,12 @@ parameters: default: {{network.vlan}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' @@ -68,6 +80,24 @@ parameters: is automatically resolved from the ctlplane subnet's host_routes attribute.) type: string resources: + + MinViableMtu: + # This resource resolves the minimum viable MTU for interfaces, bonds and + # bridges that carry multiple VLANs. Each VLAN may have different MTU. The + # bridge, bond or interface must have an MTU to allow the VLAN with the + # largest MTU. + type: OS::Heat::Value + properties: + type: number + value: + yaql: + expression: $.data.max() + data: + - {get_param: ControlPlaneMtu} +{%- for network in networks if network.enabled|default(true) %} + - {get_param: {{network.name}}Mtu} +{%- endfor %} + OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: @@ -81,6 +111,8 @@ resources: network_config: - type: linux_bridge name: bridge_name + mtu: + get_attr: [MinViableMtu, value] use_dhcp: false dns_servers: get_param: DnsServers @@ -102,8 +134,12 @@ resources: members: - type: interface name: interface_name + mtu: + get_attr: [MinViableMtu, value] primary: true - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: ExternalNetworkVlanID device: bridge_name @@ -117,6 +153,8 @@ resources: next_hop: get_param: ExternalInterfaceDefaultRoute - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: InternalApiNetworkVlanID device: bridge_name @@ -126,6 +164,8 @@ resources: routes: get_param: InternalApiInterfaceRoutes - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: StorageNetworkVlanID device: bridge_name @@ -135,6 +175,8 @@ resources: routes: get_param: StorageInterfaceRoutes - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: StorageMgmtNetworkVlanID device: bridge_name @@ -144,6 +186,8 @@ resources: routes: get_param: StorageMgmtInterfaceRoutes - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: TenantNetworkVlanID device: bridge_name @@ -157,6 +201,8 @@ resources: # out the default route on the External interface. This will # make the External API unreachable from remote subnets. #- type: vlan + # mtu: + # get_attr: [MinViableMtu, value] # vlan_id: # get_param: ManagementNetworkVlanID # device: bridge_name diff --git a/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml b/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml index 2222abac26..14b1d8f26c 100644 --- a/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml +++ b/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml @@ -25,6 +25,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks if network.enabled|default(true) and network.name in role.networks %} {{network.name}}IpSubnet: default: '' @@ -34,17 +40,23 @@ parameters: default: {{network.vlan}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number +{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' description: default route for the {{network.name_lower}} network type: string -{%- elif network.gateway_ip|default(false) %} +{%- elif network.gateway_ip|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ip}}' description: default route for the {{network.name_lower}} network type: string -{%- endif %} +{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -67,6 +79,24 @@ parameters: is automatically resolved from the ctlplane subnet's host_routes attribute.) type: string resources: + + MinViableMtu: + # This resource resolves the minimum viable MTU for interfaces, bonds and + # bridges that carry multiple VLANs. Each VLAN may have different MTU. The + # bridge, bond or interface must have an MTU to allow the VLAN with the + # largest MTU. + type: OS::Heat::Value + properties: + type: number + value: + yaql: + expression: $.data.max() + data: + - {get_param: ControlPlaneMtu} +{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} + - {get_param: {{network.name}}Mtu} +{%- endfor %} + OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: @@ -84,6 +114,8 @@ resources: {%- else %} name: bridge_name {%- endif %} + mtu: + get_attr: [MinViableMtu, value] use_dhcp: false dns_servers: get_param: DnsServers @@ -107,28 +139,32 @@ resources: members: - type: interface name: interface_name + mtu: + get_attr: [MinViableMtu, value] primary: true {%- for network in networks if network.enabled|default(true) and network.name in role.networks and network.name not in role.networks_skip_config|default([]) %} - type: vlan + mtu: + get_param: {{network.name}}Mtu vlan_id: get_param: {{network.name}}NetworkVlanID -{%- if role.name.startswith('CephStorage') or role.name.startswith('ObjectStorage') or role.name.startswith('BlockStorage') %} +{%- if role.name.startswith('CephStorage') or role.name.startswith('ObjectStorage') or role.name.startswith('BlockStorage') %} device: br-storage -{%- else %} +{%- else %} device: bridge_name -{%- endif %} +{%- endif %} addresses: - ip_netmask: get_param: {{network.name}}IpSubnet routes: list_concat_unique: - get_param: {{network.name}}InterfaceRoutes -{%- if network.name in role.default_route_networks %} +{%- if network.name in role.default_route_networks %} - - default: true next_hop: get_param: {{network.name}}InterfaceDefaultRoute -{%- endif %} +{%- endif %} {%- endfor %} outputs: OS::stack_id: diff --git a/network/config/single-nic-vlans/controller-no-external.j2.yaml b/network/config/single-nic-vlans/controller-no-external.j2.yaml index 96a642921c..f0d5acd453 100644 --- a/network/config/single-nic-vlans/controller-no-external.j2.yaml +++ b/network/config/single-nic-vlans/controller-no-external.j2.yaml @@ -29,6 +29,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks %} {{network.name}}IpSubnet: default: '' @@ -38,6 +44,12 @@ parameters: default: {{network.vlan}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' diff --git a/network/config/single-nic-vlans/controller-v6.j2.yaml b/network/config/single-nic-vlans/controller-v6.j2.yaml index 5125a72bce..c852705315 100644 --- a/network/config/single-nic-vlans/controller-v6.j2.yaml +++ b/network/config/single-nic-vlans/controller-v6.j2.yaml @@ -26,6 +26,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks %} {{network.name}}IpSubnet: default: '' @@ -35,6 +41,12 @@ parameters: default: {{network.vlan}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number {%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' @@ -68,6 +80,24 @@ parameters: is automatically resolved from the ctlplane subnet's host_routes attribute.) type: string resources: + + MinViableMtu: + # This resource resolves the minimum viable MTU for interfaces, bonds and + # bridges that carry multiple VLANs. Each VLAN may have different MTU. The + # bridge, bond or interface must have an MTU to allow the VLAN with the + # largest MTU. + type: OS::Heat::Value + properties: + type: number + value: + yaql: + expression: $.data.max() + data: + - {get_param: ControlPlaneMtu} +{%- for network in networks if network.enabled|default(true) %} + - {get_param: {{network.name}}Mtu} +{%- endfor %} + OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: @@ -81,6 +111,8 @@ resources: network_config: - type: ovs_bridge name: bridge_name + mtu: + get_attr: [MinViableMtu, value] use_dhcp: false dns_servers: get_param: DnsServers @@ -102,8 +134,12 @@ resources: members: - type: interface name: nic1 + mtu: + get_attr: [MinViableMtu, value] primary: true - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: ExternalNetworkVlanID addresses: @@ -116,6 +152,8 @@ resources: next_hop: get_param: ExternalInterfaceDefaultRoute - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: InternalApiNetworkVlanID addresses: @@ -124,6 +162,8 @@ resources: routes: get_param: InternalApiInterfaceRoutes - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: StorageNetworkVlanID addresses: @@ -132,6 +172,8 @@ resources: routes: get_param: StorageInterfaceRoutes - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: StorageMgmtNetworkVlanID addresses: @@ -140,6 +182,8 @@ resources: routes: get_param: StorageMgmtInterfaceRoutes - type: vlan + mtu: + get_attr: [MinViableMtu, value] vlan_id: get_param: TenantNetworkVlanID addresses: @@ -152,6 +196,8 @@ resources: # out the default route on the External interface. This will # make the External API unreachable from remote subnets. #- type: vlan + # mtu: + # get_attr: [MinViableMtu, value] # vlan_id: # get_param: ManagementNetworkVlanID # addresses: diff --git a/network/config/single-nic-vlans/role.role.j2.yaml b/network/config/single-nic-vlans/role.role.j2.yaml index 739952e982..d7fb2e3c19 100644 --- a/network/config/single-nic-vlans/role.role.j2.yaml +++ b/network/config/single-nic-vlans/role.role.j2.yaml @@ -25,6 +25,12 @@ parameters: Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number {% for network in networks if network.enabled|default(true) and network.name in role.networks %} {{network.name}}IpSubnet: default: '' @@ -34,17 +40,23 @@ parameters: default: {{network.vlan}} description: Vlan ID for the {{network.name_lower}} network traffic. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} + {{network.name}}Mtu: + default: {{network.mtu}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number +{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ipv6}}' description: default route for the {{network.name_lower}} network type: string -{%- elif network.gateway_ip|default(false) %} +{%- elif network.gateway_ip|default(false) %} {{network.name}}InterfaceDefaultRoute: default: '{{network.gateway_ip}}' description: default route for the {{network.name_lower}} network type: string -{%- endif %} +{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -67,6 +79,24 @@ parameters: is automatically resolved from the ctlplane subnet's host_routes attribute.) type: string resources: + + MinViableMtu: + # This resource resolves the minimum viable MTU for interfaces, bonds and + # bridges that carry multiple VLANs. Each VLAN may have different MTU. The + # bridge, bond or interface must have an MTU to allow the VLAN with the + # largest MTU. + type: OS::Heat::Value + properties: + type: number + value: + yaql: + expression: $.data.max() + data: + - {get_param: ControlPlaneMtu} +{%- for network in networks if network.enabled|default(true) and network.name in role.networks %} + - {get_param: {{network.name}}Mtu} +{%- endfor %} + OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: @@ -84,6 +114,8 @@ resources: {%- else %} name: bridge_name {%- endif %} + mtu: + get_attr: [MinViableMtu, value] use_dhcp: false dns_servers: get_param: DnsServers @@ -107,10 +139,14 @@ resources: members: - type: interface name: nic1 + mtu: + get_attr: [MinViableMtu, value] # force the MAC address of the bridge to this interface primary: true {%- for network in networks if network.enabled|default(true) and network.name in role.networks %} - type: vlan + mtu: + get_param: {{network.name}}Mtu vlan_id: get_param: {{network.name}}NetworkVlanID addresses: @@ -119,11 +155,11 @@ resources: routes: list_concat_unique: - get_param: {{network.name}}InterfaceRoutes -{%- if network.name in role.default_route_networks %} +{%- if network.name in role.default_route_networks %} - - default: true next_hop: get_param: {{network.name}}InterfaceDefaultRoute -{%- endif %} +{%- endif %} {%- endfor %} outputs: OS::stack_id: diff --git a/network/network.j2 b/network/network.j2 index 16c46c5671..b1655dccd0 100644 --- a/network/network.j2 +++ b/network/network.j2 @@ -79,6 +79,12 @@ parameters: Routes are added to the host_routes property on the subnet in neutron when the network and subnet is created. type: json + {{network.name}}Mtu: + default: {{network.mtu|default('1500')}} + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + {{network.name}} network. + type: number resources: {{network.name}}Network: @@ -87,7 +93,10 @@ resources: admin_state_up: {get_param: {{network.name}}NetAdminStateUp} name: {get_param: {{network.name}}NetName} shared: {get_param: {{network.name}}NetShared} - value_specs: {get_param: {{network.name}}NetValueSpecs} + value_specs: + map_merge: + - {get_param: {{network.name}}NetValueSpecs} + - {'mtu': {get_param: {{network.name}}Mtu}} {{network.name}}Subnet: type: OS::Neutron::Subnet diff --git a/network/ports/noop.yaml b/network/ports/noop.yaml index 740a8cf736..7b4ee2ebe5 100644 --- a/network/ports/noop.yaml +++ b/network/ports/noop.yaml @@ -19,6 +19,12 @@ parameters: description: The name of the undercloud Neutron control plane subnet default: ctlplane-subnet type: string + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number PortName: description: Name of the port default: '' @@ -66,3 +72,7 @@ outputs: host_routes: # Here for compatibility description: Host routes of the ports subnet value: [] + mtu: + description: The maximum transmission unit (MTU) + value: + get_param: ControlPlaneMtu diff --git a/network/ports/port.j2 b/network/ports/port.j2 index a60d944e2a..19ac0d9271 100644 --- a/network/ports/port.j2 +++ b/network/ports/port.j2 @@ -101,3 +101,7 @@ outputs: description: Host routes of the ports subnet value: get_attr: [{{network.name}}Port, subnets, 0, host_routes] + mtu: + description: The maximum transmission unit (MTU) + value: + get_attr: [{{network.name}}Port, network, mtu] diff --git a/network/ports/port_from_pool.j2 b/network/ports/port_from_pool.j2 index 588315b834..cdcd554a1a 100644 --- a/network/ports/port_from_pool.j2 +++ b/network/ports/port_from_pool.j2 @@ -81,4 +81,7 @@ outputs: host_routes: description: Host routes of the ports subnet value: {{network.routes|default([])}} + mtu: + description: The maximum transmission unit (MTU) + value: {{network.mtu|default('1500')}} diff --git a/network_data.yaml b/network_data.yaml index 7777e1d81e..9f315b49df 100644 --- a/network_data.yaml +++ b/network_data.yaml @@ -29,6 +29,9 @@ # set some default IPv6 addresses. # compat_name: for existing stack you may need to override the default # transformation for the resource's name. +# mtu: Set the maximum transmission unit (MTU) that is guaranteed to pass +# through the data path of the segments in the network. +# (optional, defaults to 1500) # # Example: # - name Example @@ -62,6 +65,7 @@ allocation_pools: [{'start': '172.16.1.4', 'end': '172.16.1.250'}] ipv6_subnet: 'fd00:fd00:fd00:3000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3000::10', 'end': 'fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe'}] + mtu: 1500 - name: StorageMgmt name_lower: storage_mgmt vip: true @@ -70,6 +74,7 @@ allocation_pools: [{'start': '172.16.3.4', 'end': '172.16.3.250'}] ipv6_subnet: 'fd00:fd00:fd00:4000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:4000::10', 'end': 'fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe'}] + mtu: 1500 - name: InternalApi name_lower: internal_api vip: true @@ -78,6 +83,7 @@ allocation_pools: [{'start': '172.16.2.4', 'end': '172.16.2.250'}] ipv6_subnet: 'fd00:fd00:fd00:2000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}] + mtu: 1500 - name: Tenant vip: false # Tenant network does not use VIPs name_lower: tenant @@ -87,6 +93,7 @@ # Note that tenant tunneling is only compatible with IPv4 addressing at this time. ipv6_subnet: 'fd00:fd00:fd00:5000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}] + mtu: 1500 - name: External vip: true name_lower: external @@ -97,6 +104,7 @@ ipv6_subnet: '2001:db8:fd00:1000::/64' ipv6_allocation_pools: [{'start': '2001:db8:fd00:1000::10', 'end': '2001:db8:fd00:1000:ffff:ffff:ffff:fffe'}] gateway_ipv6: '2001:db8:fd00:1000::1' + mtu: 1500 - name: Management # Management network is enabled by default for backwards-compatibility, but # is not included in any roles by default. Add to role definitions to use. @@ -110,3 +118,4 @@ gateway_ipv6: 'fd00:fd00:fd00:6000::1' ipv6_subnet: 'fd00:fd00:fd00:6000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:6000::10', 'end': 'fd00:fd00:fd00:6000:ffff:ffff:ffff:fffe'}] + mtu: 1500 diff --git a/network_data_ganesha.yaml b/network_data_ganesha.yaml index ced25c2df0..850fb56507 100644 --- a/network_data_ganesha.yaml +++ b/network_data_ganesha.yaml @@ -26,6 +26,9 @@ # set some default IPv6 addresses. # compat_name: for existing stack you may need to override the default # transformation for the resource's name. +# mtu: Set the maximum transmission unit (MTU) that is guaranteed to pass +# through the data path of the segments in the network. +# (optional, defaults to 1500) # # Example: # - name Example @@ -59,6 +62,7 @@ allocation_pools: [{'start': '172.16.1.4', 'end': '172.16.1.250'}] ipv6_subnet: 'fd00:fd00:fd00:3000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3000::10', 'end': 'fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe'}] + mtu: 1500 - name: StorageMgmt name_lower: storage_mgmt vip: true @@ -67,6 +71,7 @@ allocation_pools: [{'start': '172.16.3.4', 'end': '172.16.3.250'}] ipv6_subnet: 'fd00:fd00:fd00:4000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:4000::10', 'end': 'fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe'}] + mtu: 1500 - name: InternalApi name_lower: internal_api vip: true @@ -75,6 +80,7 @@ allocation_pools: [{'start': '172.16.2.4', 'end': '172.16.2.250'}] ipv6_subnet: 'fd00:fd00:fd00:2000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}] + mtu: 1500 - name: Tenant vip: false # Tenant network does not use VIPs name_lower: tenant @@ -84,6 +90,7 @@ # Note that tenant tunneling is only compatible with IPv4 addressing at this time. ipv6_subnet: 'fd00:fd00:fd00:5000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}] + mtu: 1500 - name: External vip: true name_lower: external @@ -94,6 +101,7 @@ ipv6_subnet: '2001:db8:fd00:1000::/64' ipv6_allocation_pools: [{'start': '2001:db8:fd00:1000::10', 'end': '2001:db8:fd00:1000:ffff:ffff:ffff:fffe'}] gateway_ipv6: '2001:db8:fd00:1000::1' + mtu: 1500 - name: Management # Management network is enabled by default for backwards-compatibility, but # is not included in any roles by default. Add to role definitions to use. @@ -107,6 +115,7 @@ gateway_ipv6: 'fd00:fd00:fd00:6000::1' ipv6_subnet: 'fd00:fd00:fd00:6000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:6000::10', 'end': 'fd00:fd00:fd00:6000:ffff:ffff:ffff:fffe'}] + mtu: 1500 - name: StorageNFS enabled: true vip: true @@ -116,3 +125,4 @@ allocation_pools: [{'start': '172.16.4.4', 'end': '172.16.4.250'}] ipv6_subnet: 'fd00:fd00:fd00:7000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::10', 'end': 'fd00:fd00:fd00:7000:ffff:ffff:ffff:fffe'}] + mtu: 1500 \ No newline at end of file diff --git a/network_data_routed.yaml b/network_data_routed.yaml index c8d2222202..e699653e6a 100644 --- a/network_data_routed.yaml +++ b/network_data_routed.yaml @@ -40,6 +40,9 @@ # set some default IPv6 addresses. # compat_name: for existing stack you may need to override the default # transformation for the resource's name. +# mtu: Set the maximum transmission unit (MTU) that is guaranteed to pass +# through the data path of the segments in the network. +# (optional, defaults to 1500) # # Example: # A single 10.0.0.0/16 route works for up to 255 /24 networks # - name Example1 @@ -83,6 +86,7 @@ ipv6_subnet: 'fd00:fd00:fd00:3000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3000::10', 'end': 'fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe'}] routes_ipv6: [{'destination':'fd00:fd00:fd00:3004::/64', 'nexthop':'fd00:fd00:fd00:3000::1'}] + mtu: 1500 - name: StorageLeaf2 vip: false vlan: 31 @@ -94,6 +98,7 @@ ipv6_subnet: 'fd00:fd00:fd00:3004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3004::10', 'end': 'fd00:fd00:fd00:3004:ffff:ffff:ffff:fffe'}] routes_ipv6: [{'destination':'fd00:fd00:fd00:3000::/64', 'nexthop':'fd00:fd00:fd00:3004::1'}] + mtu: 1500 - name: StorageMgmt name_lower: storage_mgmt vip: true @@ -105,6 +110,7 @@ ipv6_subnet: 'fd00:fd00:fd00:4000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:4000::10', 'end': 'fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe'}] routes_ipv6: [{'destination':'fd00:fd00:fd00:4004::/64', 'nexthop':'fd00:fd00:fd00:4000::1'}] + mtu: 1500 - name: StorageMgmtLeaf2 name_lower: storage_mgmt2 vip: false @@ -116,6 +122,7 @@ ipv6_subnet: 'fd00:fd00:fd00:4004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:4004::10', 'end': 'fd00:fd00:fd00:4004:ffff:ffff:ffff:fffe'}] routes_ipv6: [{'destination':'fd00:fd00:fd00:4000::/64', 'nexthop':'fd00:fd00:fd00:4004::1'}] + mtu: 1500 - name: InternalApi name_lower: internal_api vip: true @@ -127,6 +134,7 @@ ipv6_subnet: 'fd00:fd00:fd00:2000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}] routes_ipv6: [{'destination':'fd00:fd00:fd00:2004::/64', 'nexthop':'fd00:fd00:fd00:2000::1'}] + mtu: 1500 - name: InternalApiLeaf2 name_lower: internal_api2 vip: false @@ -138,6 +146,7 @@ ipv6_subnet: 'fd00:fd00:fd00:2004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2004::10', 'end': 'fd00:fd00:fd00:2004:ffff:ffff:ffff:fffe'}] routes_ipv6: [{'destination':'fd00:fd00:fd00:2000::/64', 'nexthop':'fd00:fd00:fd00:2004::1'}] + mtu: 1500 - name: Tenant vip: false # Tenant networks do not use VIPs name_lower: tenant @@ -150,6 +159,7 @@ ipv6_subnet: 'fd00:fd00:fd00:5000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}] routes_ipv6: [{'destination':'fd00:fd00:fd00:5004::/64', 'nexthop':'fd00:fd00:fd00:5000::1'}] + mtu: 1500 - name: TenantLeaf2 vip: false # Tenant networks do not use VIPs name_lower: tenant2 @@ -162,6 +172,7 @@ ipv6_subnet: 'fd00:fd00:fd00:5004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5004::10', 'end': 'fd00:fd00:fd00:5004:ffff:ffff:ffff:fffe'}] routes_ipv6: [{'destination':'fd00:fd00:fd00:5000::/64', 'nexthop':'fd00:fd00:fd00:5004::1'}] + mtu: 1500 - name: External vip: true name_lower: external @@ -172,6 +183,7 @@ ipv6_subnet: '2001:db8:fd00:1000::/64' ipv6_allocation_pools: [{'start': '2001:db8:fd00:1000::10', 'end': '2001:db8:fd00:1000:ffff:ffff:ffff:fffe'}] gateway_ipv6: '2001:db8:fd00:1000::1' + mtu: 1500 - name: Management # Management network is enabled by default for backwards-compatibility, but # is not included in any roles by default. Add to role definitions to use. @@ -185,3 +197,4 @@ ipv6_subnet: 'fd00:fd00:fd00:6000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:6000::10', 'end': 'fd00:fd00:fd00:6000:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:6000::1' + mtu: 1500 diff --git a/puppet/role.role.j2.yaml b/puppet/role.role.j2.yaml index d9302f710e..1b224673dc 100644 --- a/puppet/role.role.j2.yaml +++ b/puppet/role.role.j2.yaml @@ -509,6 +509,7 @@ resources: - ctlplane_static_routes_set - {get_param: ControlPlaneStaticRoutes} - {get_attr: [{{server_resource_name}}, addresses, ctlplane, 0, subnets, 0, host_routes]} + ControlPlaneMtu: {get_attr: [{{server_resource_name}}, addresses, ctlplane, 0, network, mtu]} EC2MetadataIp: if: - ec2metadaip_set @@ -532,6 +533,7 @@ resources: - {{network.name_lower}}_interface_routes_set - {get_param: {{network.name}}InterfaceRoutes} - {get_attr: [{{network.name}}Port, host_routes]} + {{network.name}}Mtu: {get_attr: [{{network.name}}Port, mtu]} {%- endif %} {%- endfor %} diff --git a/releasenotes/notes/network-templates-mtu-setting-a76fe47cfc97b36f.yaml b/releasenotes/notes/network-templates-mtu-setting-a76fe47cfc97b36f.yaml new file mode 100644 index 0000000000..37425d9bf9 --- /dev/null +++ b/releasenotes/notes/network-templates-mtu-setting-a76fe47cfc97b36f.yaml @@ -0,0 +1,58 @@ +--- +features: + - | + The network data for composible networks have been extended to enable + configuration of the maximum transmission unit (MTU) that is guaranteed to + pass through the data path of the segments in the network. The MTU property + is set on the neutron networks in the undercloud. The MTU information + is used in the nic-config templates so that overcloud node networking is + configured with the correct MTU settings. +upgrade: + - | + Prior to upgrading any custom nic-config templates must have the MTU + associated parameters introduced in this release added. As an example the + following must be added to all nic-config templates when network isolation + is used:: + + ControlPlaneMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the network. + (The parameter is automatically resolved from the ctlplane network's mtu attribute.) + type: number + StorageMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Storage network. + type: number + StorageMgmtMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + StorageMgmt network. + type: number + InternalApiMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + InternalApi network. + type: number + TenantMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Tenant network. + type: number + ExternalMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + External network. + type: numbe + ManagementMtu: + default: 1500 + description: The maximum transmission unit (MTU) size(in bytes) that is + guaranteed to pass through the data path of the segments in the + Management network. + type: number