10.10. NFV 的自定义网络接口示例
以下示例演示了如何使用模板在 OpenShift (RHOSO)环境上为 NFV 自定义 NFV 的网络接口。
10.10.1. 示例模板 - 非分区的 NIC 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
此模板示例在没有分区的 NIC 上配置 RHOSO 网络。
apiVersion: v1
data:
25-igmp.conf: |
[ovs]
igmp_snooping_enable = True
kind: ConfigMap
metadata:
name: neutron-igmp
namespace: openstack
---
apiVersion: v1
data:
25-cpu-pinning-nova.conf: |
[DEFAULT]
reserved_host_memory_mb = 4096
[compute]
cpu_shared_set = "0,20,1,21"
cpu_dedicated_set = "8-19,28-39"
[neutron]
physnets = dpdkdata1
[neutron_physnet_dpdkdata1]
numa_nodes = 1
[libvirt]
cpu_power_management=false
kind: ConfigMap
metadata:
name: ovs-dpdk-sriov-cpu-pinning-nova
namespace: openstack
---
apiVersion: v1
data:
03-sriov-nova.conf: |
[pci]
device_spec = {"address": "0000:05:00.2", "physical_network":"sriov-1", "trusted":"true"}
device_spec = {"address": "0000:05:00.3", "physical_network":"sriov-2", "trusted":"true"}
device_spec = {"address": "0000:07:00.0", "physical_network":"sriov-3", "trusted":"true"}
device_spec = {"address": "0000:07:00.1", "physical_network":"sriov-4", "trusted":"true"}
kind: ConfigMap
metadata:
name: sriov-nova
namespace: openstack
---
apiVersion: v1
data:
NodeRootPassword: cmVkaGF0Cg==
kind: Secret
metadata:
name: baremetalset-password-secret
namespace: openstack
type: Opaque
---
apiVersion: v1
data:
authorized_keys: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFBVFdweE5LNlNYTEo0dnh2Y0F4N0t4c3FLenI0a3pEalRpT0dQa3pyZWZnTjdVcmo2RUZPUXlBRWk5cXNnYkRVYXp0MktpdzJqc3djbG5TYW1zUDE0V2x3RkN2a1NuU1o4cTZwWGJTbGpNa3Z1R3FiVXZoSTVxTVlMTDNlRWpyU21nNDlWcTBWZkdFQmxIWUx6TGFncVBlN1FKR0NCMGlWTVk5b3N0TFdPM1NKbXVuZz09IGNpZm13X3JlcHJvZHVjZXJfa2V5Cg==
ssh-privatekey: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFyQUFBQUJObFkyUnpZUwoxemFHRXlMVzVwYzNSd05USXhBQUFBQ0c1cGMzUndOVEl4QUFBQWhRUUFFMXFjVFN1a2x5eWVMOGIzQU1leXNiS2lzNitKCk13NDA0amhqNU02M240RGUxSzQraEJUa01nQkl2YXJJR3cxR3M3ZGlvc05vN01ISlowbXByRDllRnBjQlFyNUVwMG1mS3UKcVYyMHBZekpMN2hxbTFMNFNPYWpHQ3k5M2hJNjBwb09QVmF0Rlh4aEFaUjJDOHkyb0tqM3UwQ1JnZ2RJbFRHUGFMTFMxagp0MGlacnA0QUFBRVl0cGNtdHJhWEpyWUFBQUFUWldOa2MyRXRjMmhoTWkxdWFYTjBjRFV5TVFBQUFBaHVhWE4wY0RVeU1RCkFBQUlVRUFCTmFuRTBycEpjc25pL0c5d0RIc3JHeW9yT3ZpVE1PTk9JNFkrVE90NStBM3RTdVBvUVU1RElBU0wycXlCc04KUnJPM1lxTERhT3pCeVdkSnFhdy9YaGFYQVVLK1JLZEpueXJxbGR0S1dNeVMrNGFwdFMrRWptb3hnc3ZkNFNPdEthRGoxVwpyUlY4WVFHVWRndk10cUNvOTd0QWtZSUhTSlV4ajJpeTB0WTdkSW1hNmVBQUFBUWdHTWZobWFSblZFcnhjZ2Z6aVRpdzFnClBjYXBBV21TMHh5dDNyclhoSnExd0pRMys3ZFp0Y3l0alg5VVVuNnh0NlE1M0JTT1ZvaWR2L2pZK2krYytNVVhUZ0FBQUIKUmphV1p0ZDE5eVpYQnliMlIxWTJWeVgydGxlUUVDQXdRRkJnPT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg==
ssh-publickey: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFBVFdweE5LNlNYTEo0dnh2Y0F4N0t4c3FLenI0a3pEalRpT0dQa3pyZWZnTjdVcmo2RUZPUXlBRWk5cXNnYkRVYXp0MktpdzJqc3djbG5TYW1zUDE0V2x3RkN2a1NuU1o4cTZwWGJTbGpNa3Z1R3FiVXZoSTVxTVlMTDNlRWpyU21nNDlWcTBWZkdFQmxIWUx6TGFncVBlN1FKR0NCMGlWTVk5b3N0TFdPM1NKbXVuZz09IGNpZm13X3JlcHJvZHVjZXJfa2V5Cg==
kind: Secret
metadata:
name: dataplane-ansible-ssh-private-key-secret
namespace: openstack
type: Opaque
---
apiVersion: v1
data:
LibvirtPassword: MTIzNDU2Nzg=
kind: Secret
metadata:
name: libvirt-secret
namespace: openstack
type: Opaque
---
apiVersion: v1
data:
ssh-privatekey: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFyQUFBQUJObFkyUnpZUwoxemFHRXlMVzVwYzNSd05USXhBQUFBQ0c1cGMzUndOVEl4QUFBQWhRUUFwWTlSRzV5a2pLR3p2c295dWlDZm1zakEwZkFYCmkvS0hQT3R3Zm9NZjRQZXpRSFFNOHFJZ0pGc0svaVlwNVJIWmNVQlcwVVBCNnBpazQ1L3k0QVF4bmVBQWRrN0JQbTc0dG8KSkxoVjY2U3pzV2pHR1NFdzVXVFBwVUVpaXdQMlNiL1l4dXloNWlLbUJyTE5SRWpYTEJvbjJJZWRBbEJMaC9FaGpkdFZjUwo5ZzczQ0tvQUFBRVFoeS9PODRjdnp2TUFBQUFUWldOa2MyRXRjMmhoTWkxdWFYTjBjRFV5TVFBQUFBaHVhWE4wY0RVeU1RCkFBQUlVRUFLV1BVUnVjcEl5aHM3N0tNcm9nbjVySXdOSHdGNHZ5aHp6cmNINkRIK0QzczBCMERQS2lJQ1JiQ3Y0bUtlVVIKMlhGQVZ0RkR3ZXFZcE9PZjh1QUVNWjNnQUhaT3dUNXUrTGFDUzRWZXVrczdGb3hoa2hNT1ZrejZWQklvc0Q5a20vMk1icwpvZVlpcGdheXpVUkkxeXdhSjlpSG5RSlFTNGZ4SVkzYlZYRXZZTzl3aXFBQUFBUWdEQ0lEdHFqZ0JNam8rbG1rRnhzV3NvCkxKOGxBSWF0a0ZTdDkxcGJHWWIrVFRnS0NSOGhqbXdjalNoRzFlNlRaZWZNTkc5TklzVlRYYjNjTkYvaThJTHV1UUFBQUEKNXViM1poSUcxcFozSmhkR2x2YmdFQ0F3UT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg==
ssh-publickey: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFDbGoxRWJuS1NNb2JPK3lqSzZJSitheU1EUjhCZUw4b2M4NjNCK2d4L2c5N05BZEF6eW9pQWtXd3IrSmlubEVkbHhRRmJSUThIcW1LVGpuL0xnQkRHZDRBQjJUc0UrYnZpMmdrdUZYcnBMT3hhTVlaSVREbFpNK2xRU0tMQS9aSnY5akc3S0htSXFZR3NzMUVTTmNzR2lmWWg1MENVRXVIOFNHTjIxVnhMMkR2Y0lxZz09IG5vdmEgbWlncmF0aW9uCg==
kind: Secret
metadata:
name: nova-migration-ssh-key
namespace: openstack
type: kubernetes.io/ssh-auth
---
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneNodeSet
metadata:
name: openstack-edpm
namespace: openstack
spec:
baremetalSetTemplate:
bmhLabelSelector:
app: openstack
cloudUserName: cloud-admin
ctlplaneInterface: enp130s0f0
passwordSecret:
name: baremetalset-password-secret
namespace: openstack
provisioningInterface: enp5s0
env:
- name: ANSIBLE_FORCE_COLOR
value: "True"
networkAttachments:
- ctlplane
nodeTemplate:
ansible:
ansiblePort: 22
ansibleUser: cloud-admin
ansibleVars:
dns_search_domains: []
rhc_release: 9.4
rhc_repositories:
- {name: "*", state: disabled}
- {name: "rhel-9-for-x86_64-baseos-eus-rpms", state: enabled}
- {name: "rhel-9-for-x86_64-appstream-eus-rpms", state: enabled}
- {name: "rhel-9-for-x86_64-highavailability-eus-rpms", state: enabled}
- {name: "fast-datapath-for-rhel-9-x86_64-rpms", state: enabled}
- {name: "rhoso-18.0-for-rhel-9-x86_64-rpms", state: enabled}
- {name: "rhceph-7-tools-for-rhel-9-x86_64-rpms", state: enabled}
edpm_fips_mode: check
edpm_kernel_args: default_hugepagesz=1GB hugepagesz=1G hugepages=64 iommu=pt
intel_iommu=on tsx=off isolcpus=2-19,22-39
edpm_network_config_hide_sensitive_logs: false
edpm_network_config_os_net_config_mappings:
edpm-compute-0:
dmiString: system-product-name
id: PowerEdge R730
nic1: eno1
nic2: eno2
nic3: enp130s0f0
nic4: enp130s0f1
nic5: enp130s0f2
nic6: enp130s0f3
nic7: enp5s0f0
nic8: enp5s0f1
nic9: enp5s0f2
nic10: enp5s0f3
nic11: enp7s0f0np0
nic12: enp7s0f1np1
edpm-compute-1:
dmiString: system-product-name
id: PowerEdge R730
nic1: eno1
nic2: eno2
nic3: enp130s0f0
nic4: enp130s0f1
nic5: enp130s0f2
nic6: enp130s0f3
nic7: enp5s0f0
nic8: enp5s0f1
nic9: enp5s0f2
nic10: enp5s0f3
nic11: enp7s0f0np0
nic12: enp7s0f1np1
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: interface
name: nic1
use_dhcp: false
- type: interface
name: nic2
use_dhcp: false
- type: linux_bond
name: bond_api
use_dhcp: false
bonding_options: "mode=active-backup"
dns_servers: {{ ctlplane_dns_nameservers }}
members:
- type: interface
name: nic3
primary: true
addresses:
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
routes:
- default: true
next_hop: {{ ctlplane_gateway_ip }}
- type: vlan
vlan_id: {{ lookup(vars, networks_lower[internalapi] ~ _vlan_id) }}
device: bond_api
addresses:
- ip_netmask: {{ lookup(vars, networks_lower[internalapi] ~ _ip) }}/{{ lookup(vars, networks_lower[internalapi] ~ _cidr) }}
- type: vlan
vlan_id: {{ lookup(vars, networks_lower[storage] ~ _vlan_id) }}
device: bond_api
addresses:
- ip_netmask: {{ lookup(vars, networks_lower[storage] ~ _ip) }}/{{ lookup(vars, networks_lower[storage] ~ _cidr) }}
- type: ovs_user_bridge
name: br-link0
use_dhcp: false
ovs_extra: "set port br-link0 tag={{ lookup(vars, networks_lower[tenant] ~ _vlan_id) }}"
addresses:
- ip_netmask: {{ lookup(vars, networks_lower[tenant] ~ _ip) }}/{{ lookup(vars, networks_lower[tenant] ~ _cidr) }}
mtu: {{ lookup(vars, networks_lower[tenant] ~ _mtu) }}
members:
- type: ovs_dpdk_bond
name: dpdkbond0
mtu: 9000
rx_queue: 2
ovs_extra: "set port dpdkbond0 bond_mode=balance-slb"
members:
- type: ovs_dpdk_port
name: dpdk0
members:
- type: interface
name: nic7
- type: ovs_dpdk_port
name: dpdk1
members:
- type: interface
name: nic8
- type: ovs_user_bridge
name: br-dpdk0
mtu: 9000
use_dhcp: false
members:
- type: ovs_dpdk_bond
name: dpdkbond1
mtu: 9000
rx_queue: 3
ovs_options: "bond_mode=balance-tcp lacp=active other_config:lacp-time=fast other-config:lacp-fallback-ab=true other_config:lb-output-action=true"
members:
- type: ovs_dpdk_port
name: dpdk2
members:
- type: interface
name: nic5
- type: ovs_dpdk_port
name: dpdk3
members:
- type: interface
name: nic6
- type: ovs_user_bridge
name: br-dpdk1
mtu: 9000
use_dhcp: false
members:
- type: ovs_dpdk_port
name: dpdk4
mtu: 9000
rx_queue: 3
members:
- type: interface
name: nic4
- type: sriov_pf
name: nic9
numvfs: 10
mtu: 9000
use_dhcp: false
promisc: true
- type: sriov_pf
name: nic10
numvfs: 10
mtu: 9000
use_dhcp: false
promisc: true
- type: sriov_pf
name: nic11
numvfs: 5
mtu: 9000
use_dhcp: false
promisc: true
- type: sriov_pf
name: nic12
numvfs: 5
mtu: 9000
use_dhcp: false
promisc: true
edpm_neutron_sriov_agent_SRIOV_NIC_physical_device_mappings: sriov-1:enp5s0f2,sriov-2:enp5s0f3,sriov-3:enp7s0f0np0,sriov-4:enp7s0f1np1
edpm_nodes_validation_validate_controllers_icmp: false
edpm_nodes_validation_validate_gateway_icmp: false
edpm_nova_libvirt_qemu_group: hugetlbfs
edpm_ovn_bridge_mappings:
- dpdkmgmt:br-link0
- dpdkdata0:br-dpdk0
- dpdkdata1:br-dpdk1
edpm_ovs_dpdk_memory_channels: "4"
edpm_ovs_dpdk_pmd_auto_lb: "true"
edpm_ovs_dpdk_pmd_core_list: 2,3,4,5,6,7,22,23,24,25,26,27
edpm_ovs_dpdk_pmd_improvement_threshold: "25"
edpm_ovs_dpdk_pmd_load_threshold: "70"
edpm_ovs_dpdk_pmd_rebal_interval: "2"
edpm_ovs_dpdk_socket_memory: 4096,4096
edpm_ovs_dpdk_vhost_postcopy_support: "true"
edpm_selinux_mode: enforcing
edpm_sshd_allowed_ranges:
- 192.168.122.0/24
edpm_sshd_configure_firewall: true
edpm_tuned_isolated_cores: 2-19,22-39
edpm_tuned_profile: cpu-partitioning-powersave
enable_debug: false
gather_facts: false
neutron_physical_bridge_name: br-access
neutron_public_interface_name: nic1
service_net_map:
nova_api_network: internalapi
nova_libvirt_network: internalapi
timesync_ntp_servers:
- hostname: clock.redhat.com
ansibleSSHPrivateKeySecret: dataplane-ansible-ssh-private-key-secret
managementNetwork: ctlplane
networks:
- defaultRoute: true
name: ctlplane
subnetName: subnet1
- name: internalapi
subnetName: subnet1
- name: storage
subnetName: subnet1
- name: tenant
subnetName: subnet1
nodes:
edpm-compute-0:
hostName: compute-0
edpm-compute-1:
hostName: compute-1
preProvisioned: false
services:
- redhat
- bootstrap
- download-cache
- reboot-os
- configure-ovs-dpdk
- configure-network
- validate-network
- install-os
- configure-os
- ssh-known-hosts
- run-os
- install-certs
- ovn
- neutron-ovn-igmp
- neutron-metadata
- neutron-sriov
- libvirt
- nova-custom-ovsdpdksriov
- telemetry
---
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneService
metadata:
name: neutron-ovn-igmp
namespace: openstack
spec:
caCerts: combined-ca-bundle
dataSources:
- configMapRef:
name: neutron-igmp
- secretRef:
name: neutron-ovn-agent-neutron-config
edpmServiceType: neutron-ovn
label: neutron-ovn-igmp
playbook: osp.edpm.neutron_ovn
tlsCerts:
default:
contents:
- dnsnames
- ips
issuer: osp-rootca-issuer-ovn
keyUsages:
- digital signature
- key encipherment
- client auth
networks:
- ctlplane
---
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneService
metadata:
name: nova-custom-ovsdpdksriov
namespace: openstack
spec:
caCerts: combined-ca-bundle
dataSources:
- configMapRef:
name: ovs-dpdk-sriov-cpu-pinning-nova
- configMapRef:
name: sriov-nova
- secretRef:
name: nova-cell1-compute-config
- secretRef:
name: nova-migration-ssh-key
edpmServiceType: nova
label: nova-custom-ovsdpdksriov
playbook: osp.edpm.nova
tlsCerts:
default:
contents:
- dnsnames
- ips
issuer: osp-rootca-issuer-internal
networks:
- ctlplane
- 1 2
edpm-compute-n:定义edpm_network_config_os_net_config_mappings变量来映射实际的 NIC。您可以通过为每个计算节点上指定 MAC 地址或设备名称到 RHOSOos-net-config工具使用的 NIC ID (通常为 'nic'n )来识别每个 NIC。- 3
linux_bond: 为隔离的网络创建一个 control-plane Linux 绑定。在本例中,使用nic3和nic4上的模式 active-backup 创建 Linux 绑定。- 4 5
类型:vlan:将 VLAN 分配给 Linux 绑定。在本例中,internalapi和存储网络的 VLAN ID 分配给bond-api。- 6
ovs_user_bridge:设置具有 OVS-DPDK 端口的网桥。在本例中,使用 DPDK 绑定创建了一个 OVS 用户桥接,该绑定有两个 DPDK 端口,对应于租户网络的nic7和nic8。使用 GENEVE 隧道。- 7 9 11
sriov_pf:创建 SR-IOV VF。在本例中,一个sriov_pf的接口类型被配置为主机可以使用的物理功能。- 8 10 12
numVfs:仅设置所需的 VF 数量。
10.10.2. 示例模板 - 分区 NIC 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
此模板示例在被分区的 NIC 上配置 RHOSO 网络。本例仅显示 NIC 分区的自定义资源(CR)定义的一部分。
edpm_network_config_os_net_config_mappings:
dellr750:
dmiString: system-product-name
id: PowerEdge R750
nic1: eno8303
nic2: ens1f0
nic3: ens1f1
nic4: ens1f2
nic5: ens1f3
nic6: ens2f0np0
nic7: ens2f1np1
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: interface
name: nic1
use_dhcp: false
- type: interface
name: nic2
use_dhcp: false
addresses:
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
routes:
- default: true
next_hop: {{ ctlplane_gateway_ip }}
- type: sriov_pf
name: nic3
mtu: 9000
numvfs: 5
use_dhcp: false
defroute: false
nm_controlled: true
hotplug: true
- type: sriov_pf
name: nic4
mtu: 9000
numvfs: 5
use_dhcp: false
defroute: false
nm_controlled: true
hotplug: true
- type: linux_bond
name: bond_api
use_dhcp: false
bonding_options: "mode=active-backup"
dns_servers: {{ ctlplane_dns_nameservers }}
members:
- type: sriov_vf
device: nic3
vfid: 0
vlan_id: {{ lookup(vars, networks_lower[internalapi] ~ _vlan_id) }}
- type: sriov_vf
device: nic4
vfid: 0
vlan_id: {{ lookup(vars, networks_lower[internalapi] ~ _vlan_id) }}
addresses:
- ip_netmask: {{ lookup(vars, networks_lower[internalapi] ~ _ip) }}/{{ lookup(vars, networks_lower[internalapi] ~ _cidr) }}
- type: linux_bond
name: storage_bond
use_dhcp: false
bonding_options: "mode=active-backup"
dns_servers: {{ ctlplane_dns_nameservers }}
members:
- type: sriov_vf
device: nic3
vfid: 1
vlan_id: {{ lookup(vars, networks_lower[storage] ~ _vlan_id) }}
- type: sriov_vf
device: nic4
vfid: 1
vlan_id: {{ lookup(vars, networks_lower[storage] ~ _vlan_id) }}
addresses:
- ip_netmask: {{ lookup(vars, networks_lower[storage] ~ _ip) }}/{{ lookup(vars, networks_lower[storage] ~ _cidr) }}
- type: linux_bond
name: mgmtst_bond
use_dhcp: false
bonding_options: "mode=active-backup"
dns_servers: {{ ctlplane_dns_nameservers }}
members:
- type: sriov_vf
device: nic3
vfid: 2
vlan_id: {{ lookup(vars, networks_lower[storagemgmt] ~ _vlan_id) }}
- type: sriov_vf
device: nic4
vfid: 2
vlan_id: {{ lookup(vars, networks_lower[storagemgmt] ~ _vlan_id) }}
addresses:
- ip_netmask: {{ lookup(vars, networks_lower[storagemgmt] ~ _ip) }}/{{ lookup(vars, networks_lower[storagemgmt] ~ _cidr) }}
- type: ovs_user_bridge
name: br-link0
use_dhcp: false
mtu: 9000
ovs_extra: "set port br-link0 tag={{ lookup(vars, networks_lower[tenant] ~ _vlan_id) }}"
addresses:
- ip_netmask: {{ lookup(vars, networks_lower[tenant] ~ _ip) }}/{{ lookup(vars, networks_lower[tenant] ~ _cidr) }}
members:
- type: ovs_dpdk_bond
name: dpdkbond0
mtu: 9000
rx_queue: 1
members:
- type: ovs_dpdk_port
name: dpdk0
members:
- type: sriov_vf
device: nic3
vfid: 3
- type: ovs_dpdk_port
name: dpdk1
members:
- type: sriov_vf
device: nic4
vfid: 3
- type: ovs_user_bridge
name: br-dpdk0
use_dhcp: false
mtu: 9000
rx_queue: 1
members:
- type: ovs_dpdk_port
name: dpdk2
members:
- type: interface
name: nic5
- type: sriov_pf
name: nic6
mtu: 9000
numvfs: 5
use_dhcp: false
defroute: false
- type: sriov_pf
name: nic7
mtu: 9000
numvfs: 5
use_dhcp: false
defroute: false