设为首页 收藏本站
查看: 2078|回复: 0

[经验分享] OpenStack SR-IOV

[复制链接]

尚未签到

发表于 2017-12-4 18:17:29 | 显示全部楼层 |阅读模式
本文主要介绍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 的例子:
DSC0000.png

  光纤卡 SR-IOV 的例子:
DSC0001.png

OpenStack实践SR-IOV
系统运行环境:
  系统:Centos 6.6,  Intel 82576
  openstack版本: Juno
配置计算节点物理主机:
  开启 VT-d                #BIOS配置
  开启IOMMU功能     #在文件中添加 /boot/grub.conf  intel_iommu=on
DSC0002.png

  创建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
DSC0003.png

  2.配置支持SR-IOV网卡类型
  查看系统网卡类型      lspci -nn | grep Eth
DSC0004.png

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

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

  4.重启neutron-server 服务.
           
Compute Node:
  1.配置计算节点 PCI Device  重启 openstack-nova-compute 服务
  编辑 /etc/nova/nova.conf
DSC0007.png

  2.配置计算节点 neutron-sriov-agent
  编辑 /etc/neutron/plugins/ml2/ml2_conf_sriov.ini
DSC0008.png

  3.启动neutron-sriov-agent 服务
DSC0009.png

虚机使用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特性存在以下局限:

  • 不支持迁移
  • 不支持卡的热插入虚机
  • 不支持虚机的Qos .
  • 不支持安全组
  • 仅支持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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-420551-1-1.html 上篇帖子: 在CentOS7上部署OpenStack 步骤详解 下篇帖子: openstack 网络更改版
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表