---
title: OpenStack支持机密虚拟机使能vhost_user加速
description: "OpenStack使能机密虚拟机支持OVS+DPDK只需占用不超过3GB的内存大页，目前机密虚拟机仅支持1GB大页内存，大页内存未绑定NUMA节点，不支持混合部署virtCCA机密虚拟机和普通虚拟机。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/tee/cVMcont/kunpengtee_16_0062.html
sourcePath: /source/zh/kunpengcctrustzone/tee/cVMcont/kunpengtee_16_0062.html
indexId: 09157c60c97858d521658b33d4d2fa63218480c62eddb35a572b05094f352bfd65
---
# OpenStack支持机密虚拟机使能vhost_user加速

OpenStack使能机密虚拟机支持OVS+DPDK只需占用不超过3GB的内存大页，目前机密虚拟机仅支持1GB大页内存，大页内存未绑定NUMA节点，不支持混合部署virtCCA机密虚拟机和普通虚拟机。

1. 参考启用DPDK-OVS网络加速准备环境。
  - 其中执行ife_topology.sh时需指定OpenStack的对外网卡br-ex，命令如下：

```
sh ife_topology.sh clean
ife_topology.sh normalBDFbr-ex
```


    clean/normal：ife_topology.sh脚本clean方法用于清理ovs网桥配置，normal方法用于配置OVS+DPDK。 BDF：指定DPDK使用的网卡BDF号。 br-ex：OpenStack使用的外部网桥名称。

  - libvirt启动的虚拟机在配置好网卡直通的网络后，同网段IP地址网络连通性正常，证明基础环境部署完成。
    首次部署环境可参考启用DPDK-OVS网络加速，重启计算节点后，原DPDK接管的网卡会重新由内核管理，因此需重新使用DPDK接管网卡，重启后需执行以下命令，其中${BDF}为对应网卡的BDF号。dpdk-socket-mem根据NUMA节点数量修改。

```
modprobe uio_pci_generic
dpdk-devbind.py -b uio_pci_generic --force ${BDF}
dpdk-devbind.py -s
service openvswitch restart
ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true other_config:dpdk-socket-mem="4096,4096,4096,4096" other_config:dpdk-lcore-mask="0x1F" other_config:pmd-cpu-mask="0x1E" other_config:dpdk-pmd-driver=/lib64/librte_pmd_hinic.so other_config:vhost-iommu-support=true
service openvswitch restart
systemctl restart neutron-openvswitch-agent.service
```


2. 修改openstack-nova配置文件。

  a. 打开配置文件。

```
vim /etc/nova/nova.conf
```


  b. 按“i”进入编辑模式，参考如下内容修改配置文件。

```
[DEFAULT]
reserved_huge_pages=node:0,
size
:1GB,
count
:
4
reserved_huge_pages=node:1,
size
:1GB,
count
:
4
reserved_huge_pages=node:2,
size
:1GB,
count
:
4
reserved_huge_pages=node:3,
size
:1GB,
count
:
4
```


  c. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”保存退出文件。
  d. 重启计算节点openstack-nova-compute服务。

```
systemctl restart openstack-nova-compute
```


    需使用cat /sys/devices/system/node/node*/meminfo|grep HugePages命令查看NUMA节点数量和每个NUMA节点总大页HugePages_Total和可使用大页HugePages_Free的数量，HugePages_Total-HugePages_Free的值填到上述count处。 通常情况DPDK会占用16×1GB内存大页。

3. 修改neutron-openvswitch-agent配置文件。

  a. 打开配置文件。

```
vim /etc/neutron/plugins/ml2/openvswitch_agent.ini
```


  b. 按“i”进入编辑模式，参考如下内容修改配置文件。

```
[ovs]
datapath_type = netdev
vhostuser_socket_dir = /var/run/openvswitch
```


  c. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”键保存退出文件。
  d. 重启neutron-openvswitch-agent服务。

```
systemctl restart neutron-openvswitch-agent
```


4. 创建vhost_user相关flavor。

```
openstack flavor create dpdk-cca-flavor --vcpus
--ram 8192 --disk
\
--property hw:mem_page_size=1GB \
--property trait:HW_CPU_AARCH64_HISI_VIRTCCA=required \
--property hw:mem_secure=true \
--property sw:qemu_cmdline="tmm-guest,id=tmm0,num-pmu-counters=1"
```


5. 创建vhost_user机密虚拟机。

```
openstack server create --image openEuler-image --flavor dpdk-cca-flavor --network public-networkdpdk-vm
```


6. 验证机密虚拟机通过OpenStack使能vhost_user。
  网卡添加网络配置后，虚拟机和IP地址同网段的另一台服务器可互相连接，网卡可用。
