diff options
author | Alexandru Avadanii <Alexandru.Avadanii@enea.com> | 2018-11-08 19:06:46 +0100 |
---|---|---|
committer | Alexandru Avadanii <Alexandru.Avadanii@enea.com> | 2019-01-10 15:22:59 +0100 |
commit | 6eaeafea81f30ee66f2c187596815a0166f1132b (patch) | |
tree | ab296858aac68b09b2a905486aa072dc8c304e0c /mcp/reclass/classes/cluster/mcp-common-noha | |
parent | 920d7ef405e9fed9af7b0576b94f6d19fe265c81 (diff) |
[noha] Bring in FDIO (VPP+DPDK) scenario
- cmp, gtw: bump RAM allocation to accomodate hugepages/VPP;
for now we overcommit, gtw01 resources can probably be lowered;
- submodule: add salt-formula-neutron so we can locally patch it;
- repo:
* FD.IO repos for VPP packages;
* networking-vpp PPA for python-networking-vpp Neutron driver;
- use vpp-router for L3, disable neutron-l3-agent;
- baremetal_init: apply repo config before network (otherwise UCA
repo is missing when trying to install DPDK on baremetal nodes);
- arm64: iommu.passthrough=1 is required on ThunderX for VPP on
newer kernels;
Design quirks:
- vpp service runs as 'neutron' user, which does not exist at the
time VPP is installed and initially started, hence the need to
restart it before starting the vpp-agent service;
- gtw01 node has DPDK, yet to configure it via IDF we use the
compute-specific OVS-targeted parameters like
`compute_ovs_dpdk_socket_mem`, which is a bit misleading;
- vpp-agent requires ml2_conf.ini on ALL compute AND network nodes
to parse per-node physnet-to-real interface names;
- vpp process is bound to core '1' (not parameterized via IDF);
Change-Id: I659f7dbebcab7b154e7b1fb829cd7159b4372ec8
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
(cherry picked from commit 455b46a6be4bca145c047ed6957727c119285796)
Diffstat (limited to 'mcp/reclass/classes/cluster/mcp-common-noha')
-rw-r--r-- | mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 | 14 | ||||
-rw-r--r-- | mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 | 30 |
2 files changed, 39 insertions, 5 deletions
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 index 1f45ddf35..e1de5206d 100644 --- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 +++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 @@ -11,7 +11,7 @@ {#- Filter-out NIC duplicates by constructing a dict (used NICs only) #} {%- set nics = { nm.cmp001.nic_mgmt: True, nm.cmp001.nic_private: True } %} {%- set vlans = { nm.vlan_mgmt: nm.cmp001.nic_mgmt } %} -{%- if '-ovs-' not in conf.MCP_DEPLOY_SCENARIO %} +{%- if '-ovs-' not in conf.MCP_DEPLOY_SCENARIO and '-fdio-' not in conf.MCP_DEPLOY_SCENARIO %} {%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %} {%- do vlans.update({ vlan_private_start: nm.cmp001.nic_private }) %} {%- endif %} @@ -29,8 +29,20 @@ parameters: {%- endif %} linux: network: +{%- if '-fdio-' not in conf.MCP_DEPLOY_SCENARIO %} ovs_nowait: true bridge: openvswitch +{%- else %} + dpdk: + enabled: true + driver: "${_param:compute_dpdk_driver}" + vpp: + enabled: true + # Reuse ovs-dpdk socket mem configuration from IDF + dpdk_socket_mem: ${_param:compute_ovs_dpdk_socket_mem} + main_core: ${linux:system:kernel:isolcpu} + gid: 'neutron' +{%- endif %} interface: pxe_admin_int: enabled: true diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 index bd62ae990..d2003d235 100644 --- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 +++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 @@ -11,14 +11,34 @@ {#- Filter-out NIC duplicates by constructing a dict (used NICs only) #} {%- set nics = { nm.ctl01.nic_mgmt: True, nm.ctl01.nic_private: True } %} {%- set vlans = { nm.vlan_mgmt: nm.ctl01.nic_mgmt } %} -{%- if '-ovs-' not in conf.MCP_DEPLOY_SCENARIO %} +{%- if '-fdio-' in conf.MCP_DEPLOY_SCENARIO %} +{%- do nics.update({ nm.ctl01.nic_public: True }) %} +{%- do vlans.update({ nm.vlan_public: nm.ctl01.nic_public }) %} +{%- elif '-ovs-' not in conf.MCP_DEPLOY_SCENARIO %} {%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %} {%- do vlans.update({ vlan_private_start: nm.ctl01.nic_private }) %} {%- endif %} parameters: linux: network: +{%- if '-fdio-' not in conf.MCP_DEPLOY_SCENARIO %} +{%- set floating_br_type = 'ovs_bridge' %} bridge: openvswitch +{%- else %} +{%- set floating_br_type = 'bridge' %} + vpp: + enabled: true + # Reuse ovs-dpdk socket mem configuration from IDF + dpdk_socket_mem: ${_param:compute_ovs_dpdk_socket_mem} + main_core: ${linux:system:kernel:isolcpu} + gid: 'neutron' + commands: | + create tap host-if-name vpp_ext_tap host-bridge br-floating rx-ring-size 1024 tx-ring-size 1024 + set interface state ${_param:external_vpp_tap} up + dpdk: + enabled: true + driver: "${_param:compute_dpdk_driver}" +{%- endif %} interface: pxe_admin_int: enabled: true @@ -39,6 +59,7 @@ parameters: {{ ma.linux_network_interfaces_vlan(vlans) }} +{%- if '-fdio-' not in conf.MCP_DEPLOY_SCENARIO %} ovs_port_{{ nm.ctl01.nic_public }}: enabled: true name: {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }} @@ -48,16 +69,17 @@ parameters: type: ovs_port ovs_bridge: br-floating bridge: br-floating +{%- endif %} br-floating: enabled: true - type: ovs_bridge + type: {{ floating_br_type }} proto: static address: ${_param:external_address} netmask: ${_param:opnfv_net_public_mask} - use_interfaces: - - {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }} gateway: ${_param:opnfv_net_public_gw} name_servers: {{ nm.dns_public }} + use_interfaces: + - {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }} noifupdown: true br-mgmt: enabled: true |