SR-IOV¶
本页的目的是描述如何在 Kuryr-libnetwork 中启用 SR-IOV 功能。本页旨在作为配置 OpenStack Networking 和 Kuryr-libnetwork 以创建 SR-IOV 端口并将其用于容器的指南。
基础知识¶
自 Juno 版本以来,PCI-SIG 单根 I/O 虚拟化和共享 (SR-IOV) 功能在 OpenStack 中可用。SR-IOV 规范定义了一种标准化机制来虚拟化 PCIe 设备。该机制可以将单个 PCIe 以太网控制器虚拟化为多个 PCIe 设备。每个设备都可以直接分配给实例,绕过虚拟交换机层。因此,用户能够实现低延迟和接近线路速率的性能。
本文档中使用了以下术语
术语 |
定义 |
|---|---|
PF |
物理功能。支持 SR-IOV 的物理以太网控制器。 |
VF |
虚拟功能。从物理以太网控制器创建的虚拟 PCIe 设备。 |
使用 SR-IOV 接口¶
为了启用 SR-IOV,需要执行以下步骤
创建虚拟功能 (计算节点)
配置 neutron-server (控制器节点)
启用 neutron sriov-agent (计算节点)
配置 kuryr-libnetwork (计算节点)
创建虚拟功能 (计算节点)¶
请遵循 网络指南 中的 ‘创建虚拟功能’ 部分。
配置 neutron-server (控制器节点)¶
请遵循 网络指南 中的 ‘配置 neutron-server’ 部分。
启用 neutron sriov-agent (计算节点)¶
请遵循 网络指南 中的 ‘启用 neutron sriov-agent’ 部分。
配置 kuryr-libnetwork (计算节点)¶
在运行
kuryr-libnetwork服务的每个计算节点上,编辑 kuryr-libnetwork 配置文件 (例如 /etc/kuryr/kuryr.conf)。在[DEFAULT]下,将kuryr_libnetwork.port_driver.drivers.sriov添加到enabled_port_drivers中,并在[binding]下,将kuryr.lib.binding.drivers.hw_veb添加到enabled_drivers中。[DEFAULT] enabled_port_drivers = kuryr_libnetwork.port_driver.drivers.veth, kuryr_libnetwork.port_driver.drivers.sriov [binding] enabled_drivers = kuryr.lib.binding.drivers.veth, kuryr.lib.binding.drivers.hw_veb
重启
kuryr-libnetwork服务。
使用 SR-IOV 端口启动容器¶
配置完成后,您可以使用 SR-IOV 端口启动容器。
获取要在其中创建 SR-IOV 端口的网络
id$ net_id=`neutron net-show net04 | grep "\ id\ " | awk '{ print $4 }'`
通过指定 neutron 网络的名称来创建 kuryr 网络。将
10.10.0.0/24和10.10.0.1替换为要在其中创建 SR-IOV 端口的子网的 CIDR 和网关$ docker network create -d kuryr --ipam-driver=kuryr --subnet=10.10.0.0/24 --gateway=10.10.0.1 \ -o neutron.net.uuid=$net_id kuryr_net
创建 SR-IOV 端口。这里使用
vnic_type=direct,但其他选项包括normal、direct-physical和macvtap。binding-profile由 Neutron SR-IOV 驱动程序使用 [1]。将physnet2、1137:0047和0000:0a:00.1替换为 VF 设备的正确值$ neutron port-create $net_id --name sriov_port --binding:vnic_type direct \ --binding-profile '{"physical_network": "physnet2", "pci_vendor_info": "1137:0047", "pci_slot": "0000:0a:00.1"}'
创建容器。指定在步骤二中创建的 SR-IOV 端口的 IP 地址
$ docker run -it --net=kuryr_net --ip=10.0.0.5 ubuntu
参考¶
[1] https://specs.openstack.org/openstack/neutron-specs/specs/2025.2/ml2-sriov-nic-switch.html