OpenStack SR-IOV

本文主要介绍SR-IOV及实践openstack的SR-IOV功能的过程。

sriov功能介绍

SR-IOV 使一个单一的功能单元(比如,一个以太网端口)能看起来像多个独立的物理设备,即支持SR-IOV 功能的物理设备能被配置为多个功能单元。

SR-IOV 两种功能(function):

  • 物理功能(Physical Functions,PF):这是完整的带有 SR-IOV 能力的PCIe 设备。PF 能像普通 PCI 设备那样被发现、管理和配置。
  • 虚拟功能(Virtual Functions,VF):简单的 PCIe 功能,它只能处理I/O。每个 VF 都是从 PF 中分离出来的。每个物理硬件都有一个 VF 数目的限制。一个 PF,能被虚拟成多个 VF 用于分配给多个虚拟机。

Hypervisor 能将一个或者多个 VF 分配给一个虚机。在某一时刻,一个 VF 只能被分配给一个虚机。一个虚机可以拥有多个 VF。在虚机的操作系统看来,一个 VF 网卡看起来和一个普通网卡没有区别。SR-IOV 驱动是在内核中实现的。

网卡 SR-IOV 的例子:

光纤卡 SR-IOV 的例子:

OpenStack实践SR-IOV

系统运行环境:

系统:Centos 6.6,  Intel 82576

openstack版本: Juno

配置计算节点物理主机:

开启 VT-d                #BIOS配置

开启IOMMU功能     #在文件中添加 /boot/grub.conf  intel_iommu=on

创建VF设备             #modprobe  igb max_vfs=8   或 echo 8 > /sys/class/net/ethx/device/sriov_numb

配置Openstack(Juno):

Controller Node:

1.配置sriov mechanism driver

编辑 /etc/neutron/plugins/ml2/ml2_conf.ini

2.配置支持SR-IOV网卡类型

查看系统网卡类型      lspci -nn | grep Eth

编辑 /etc/neutron/plugins/ml2/ml2_conf_sriov.ini

3.修改 neutron-server 脚本 /etc/init.d/neutron-server

4.重启neutron-server 服务.

Compute Node:

1.配置计算节点 PCI Device  重启 openstack-nova-compute 服务

编辑 /etc/nova/nova.conf

2.配置计算节点 neutron-sriov-agent

编辑 /etc/neutron/plugins/ml2/ml2_conf_sriov.ini

3.启动neutron-sriov-agent 服务

虚机使用SR-IOV网卡的步骤:

1.创建sriov类型的Port

# neutron port-create ${net-id} --binding:vnic-type direct

2.创建虚机

#  nova boot --flavor  ${flavor_name} --image  ${image_id} --nic port-id=${port_id}    ${vm_name}

实践总结

   Openstack(Juno)使用SRIOV特性存在以下局限:

  1. 不支持迁移
  2. 不支持卡的热插入虚机
  3. 不支持虚机的Qos .
  4. 不支持安全组
  5. 仅支持Vlan

虚机使用sriov类型的网卡时,1.创建sriov类型的Port .  2.将sriov类型的Port分配给虚机.

1) 暂时不支持迁移,

冷迁移:

https://bugs.launchpad.net/nova/+bug/1400784
                      https://bugs.launchpad.net/nova/+bug/1512880

热迁移:虚机直接使用物理设备造成不能实时迁移和保存,https://blueprints.launchpad.net/nova/+spec/sriov-live-migration

后续跟进macvtap,Liberty支持macvtap https://blueprints.launchpad.net/nova/+spec/libvirt-macvtap-vif

2) sriov类型虚拟网卡只能新建时加入目标虚机。在创建虚机时,nova会关联Instance和sriov类型port(保存到数据库)

和配置binding profile信息,interface_attach则会不能配置bind profile导致port绑定失败。

3) 不支持虚机的Qos,最终支持虚机Qos。  openstack对Qos有两种支持方式 :1.基于

Qos-Service ,Agent(OVS,sriov),该部分功能代码还在master分支.   2. 基于虚机的Quota(Libvirt ,TC).

4) 系统环境(centos6.6 + intel 82576)不支持管理员手动配置vf的状态,计算节点不需要启动neutron-server-agent服务.

5) 创建vnic-type为macvtap类型的sriov的port,计算节点libvirt会产生设置ethx(vf对应的eth) MAC的错误.

6)  在创建虚机时可以指定Net,不能指定被创建Port的vnic-type。 建议后期将Port抽象成虚拟网

卡的概念,用户直接管理虚机网卡类型。后续通过扩展,提供方便的sriov类型网卡使用方式。

需要处理的问题:无ovs-agent服务的计算节点(仅支持sriov类型的port),可能会被选中来vnic-type为normal的虚拟网卡,这样

会导致虚机启动失败,建议计算节点有开启neutron-openvswitch-agent,创建非sriov类型的网卡。

*使用SRIOV Feather 怎么物理网卡的的HA ?

SRIOV直接从物理网卡分配VF,VF的状态与PF的状态保持一直,物理网卡或网卡直连的交换机down都会引起VF不能正常通信,应该怎么处理这个问题呢?

在OVS的场景下bonding多块网卡保证网卡HA。在SRIOV的场景下直接bonding物理网卡,并不能网卡HA的问题,因为VF状态与物理网卡保持一致,VF直接通过物理网卡处理packet。

方案参见:https://communities.intel.com/thread/54061?start=0&tstart=0

Openstack 网卡bonding 参见:https://blueprints.launchpad.net/nova/+spec/libvirt-sriov-nic-bonding

参考文档:

    http://www.openstack.cn/?p=2118

    http://www.ovirt.org/Feature/SR-IOV

    http://www.cnblogs.com/sammyliu/p/4548194.html

    http://docs.openstack.org/networking-guide/adv_config_sriov.html

时间: 2024-10-13 15:08:26

OpenStack SR-IOV的相关文章

OpenStack 企业私有云的若干需求(7):电信行业解决方案 NFV

自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云(Hybrid cloud)支持 主流硬件支持.云快速交付 和 SLA 保证 大规模扩展性支持 私有云外围环境支持(包括支持CDN .商业SDN控制器.防火墙和VPN/专线等) 向上扩展性(PaaS 和 SaaS 等支撑) 企业数据中心IT环境支持(包括裸金属/Bare metal.F5 .GPU.跨云网络连通.租户计费.备份等支持) 行业解决方案 (电信

万兆电口网卡性能分析

FM-ELX540BT2-T2?是一款PCI-E双口万兆双电口网卡,采用英特尔原装X540芯片,FM-ELX540BT2-T2是飞迈瑞克的一款新的电口万兆网卡,这也标志着万兆以太网进入更广阔的服务器市场.? 万兆电口网卡突出优势:? 1.万兆电口网卡提供iSCSI.FCoE.虚拟化和灵活的端口分区: 万兆电口网卡通过超过10倍的每一项性能的增加,有10个GbE有令人兴奋的新使用模型,包括统一的网络(iSCSI,FCoE和LAN),虚拟化(VMDq和sr?-?iov),以及现在灵活的端口分区(FP

CentOS7下利用cobbler搭建openstack本地源

前面提到了使用cobbler进行自动化部署系统,下面我们介绍下如何利用cobbler快速搭建openstack本地源(这里我以我的测试环境中的openstack的Mitaka版本为例). 操作步骤如下: 1.添加openstack源: [[email protected] ~]# cobbler repo add --name=openstack-mitaka --mirror=http://mirrors.163.com/centos/7.3.1611/cloud/x86_64/opensta

OpenStack组件系列?Keystone搭建

一:版本信息 官网:http://docs.openstack.org/newton/install-guide-rdo/keystone.html 二:部署keystone 官网文档:http://docs.openstack.org/newton/install-guide-rdo/ 查看系统信息: [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) [[email prote

OpenStack各组件介绍

OpenStack是一个开源的云计算管理平台项目,由几个组件组合起来完成具体的工作. 先列出其中的3个核心项目: 1. 控制台 服务名:Dashboard 项目名:Horizon 功能:web方式管理云平台,就像你登录aliyun账号一样所见和操作,建立主机,分配带宽,加云盘 2.计算 服务名:Compute 项目名:Nova 功能:负责响应虚拟机的创建请求.调度.销毁 3.网络 服务名:Networking 项目名:Neutron 功能:实现SDN(软件定义网络),提供一整套API,用户可以通

58 Openstack基础、openstack之glance、openstack之keystone

03 openstack之keystone 配置环境 Controller CentOS release 6.7 controller eth0:仅主机 192.168.28.121 eth1:桥接 192.168.1.121 node2 192.168.1.122 CentOS release 6.7 compute1 eth0:仅主机,eth1:VMnet2 不会直接与外部网络通信 node3 192.168.1.123 CentOS release 6.7 networking eth0:

云计算之openstack基础服务之一keystone服务最佳实践

1.openstack简介 Openstack是一个项目,该项目支持所有类型的云环境的一个开源云计算平台,该项目的目的是为了实现简单,大规模可扩展性,以及丰富功能集,来自世界各地的云计算专家项目作出贡献.Openstack提供了一个基础架构即服务(Iaas)并通过各种配套服务的解决方案,每个服务提供一个应用编程接口来完成整个openstack的结合. 架构图如下: 相关服务介绍: 服务名称 项目名称 描述 Dashboard Horizon 基于openstackAPI接口使用Django开发的

【N版】openstack——走进云计算(一)

[N版]openstack--走进云计算 一.云计算 云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问,进入可配置的计算资源共享池(资源包括:网络.服务器.存储.应用软件.服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互. 1.1云计算的特点和优势 1)云计算是一种使用模式 2)云计算必须通过网络访问 3)弹性计算,按需付费 1.2在云计算之前的模式或技术 1)IDC托管 2)IDC租用 3)虚拟主机(卖空间的) 4)VPS:虚拟专用

【N版】openstack——认证服务keystone(三)

[N版]openstack--认证服务keystone 一.keystone介绍 1.1keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理. 用户认证:用户权限与用户行为跟踪 服务目录:提供一个服务目录,包括所有服务项与相关API的端点 主要涉及如下概念: User:  

【N版】openstack——镜像服务glance(四)

[N版]openstack--镜像服务glance 一.openstack之glance镜像服务 1.1glance介绍 glance主要是由三部分组成 glance-api:接收云系统镜像的创建,删除,读取请求,类似nova-api,通过其他模块(glance-registry及image store)来完成诸如镜像的查找.获取.上传.删除等操作,api监听端口9292. glance-registry:云系统的镜像注册服务,用于与mysql数据库交互,存储或获取镜像的元数据(metadata