专栏首页虚拟化笔记openstack网络设计-(三)ovs offload

openstack网络设计-(三)ovs offload

惠伟:openstack网络设计-(一)试探​zhuanlan.zhihu.com

惠伟:openstack网络设计-(二)underlay网络​zhuanlan.zhihu.com

offload就是ovs转发时用硬件的功能,少耗费host的cpu,这就要求虚拟机和硬件之间能直接交互报文,报文就不用经过host的cpu,ovs只负责给硬件下发转发规则。

硬件资源是有限的,ovs不可能事先把所有转发规则下给硬件,这就要求有一种触发机制,一个报文来了触发ovs给硬件下转发规则,后续报文由硬件转发不再经过ovs,

既然报文是虚拟机和硬件之间直接交互,现在要求硬件把搞不定的报文上送给ovs,这需求一个上送通道,mellanox有个vf representor就是干这事的,vf representor类似于vf,

绑定在ovs桥上,在ovs看来就是一个port,硬件把报文内存,中断触发vf representor,ovs相当于收报文,然后处理。

不想让硬件把报文上送ovs,就要求硬件能搞定尽量多的功能,如openflow查找,qos功能,connection-track功能,vxlan encap/decap功能,nat等。如果硬件搞不定所有功能就只能是partial offload,那些功能offload了哪些功能没有offload,硬件和软件得同步,就拿linux checksum offload来说,skb搞出几个成员专门用来记录信息,如果partial offload,skb/mbuf又得搞出多少成员同步硬件和软件的信息,搞来搞去还不如不offload算了。

硬件是pcie卡,虚拟机和硬件之间通过DMA功能交互报文,vf DMA到虚拟机内存中,vf representor DMA到物理机内存。

sr-iov

图中绿色的是vf,黄色的是vf representor,红色的是pf。

虚拟机和硬件之间能直接交互报文首先想到的就是sr-iov加passthrough功能。

sr-iov功能要求虚拟机中安装厂商要求的driver,其次不支持热迁移,要热迁移虚拟机中driver更负责,不能用于生产环境。

ovs调用tc_flow,tc_flow再调用厂商driver下转发规则。

kernel

sr-iov功能要求虚拟机中安装厂商的driver,假设虚拟机中继续用virtio driver,backend用vhost-net, guest和host之间通过virtio descriptor共享内存,

内存vhost_net模块把virtio descriptor交给ovs模块,ovs模拟再把virtio descriptor转换成mellanox vf能识别的descriptor,太复杂。

vhost-net不可能直接操作vf,必须交给ovs模块,ovs再操作vf,两个模块,内核开发难度太大,没看到mellanox的参数代码。

ovs调用tc_flow,tc_flow再调用厂商driver下转发规则。

dpdk

原生dpdk方案,ovs-dpdk和qemu之间vhost-user通信,guest和ovs-dpdk之间通过virtio descriptor共享内存,数据到了ovs-dpdk,ovs-dpdk软件处理然后从一个硬件网卡出去。

基于这种方案做offload最自然,ovs-dpdk收到报文不再查转发规则做操作,而是把virtio descriptor转换成厂商vf的descriptor,然后就交给硬件,硬件查转发规则做转发。

这种方案ofed包中ovs实现了dpdkvdpa类型的接口,对应着一个vf和一个vf representor。

ovs-dpdk调用rte_flow,rte_flow再调用厂商pmd driver下转发规则。

总结

如果基于mellanox CX5做offload就只能用ovs-dpdk了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • openstack网络设计-(一)试探

    openstack的api只能扩展并且向前兼容,不能影响已经开发的云管和监控等业务。

    惠伟
  • OpenStack Neutron之层次化端口绑定

    作者简介:肖宏辉,毕业于中科院研究生院,思科认证网络互连专家(CCIE),8年的工作经验,其中6年云计算开发经验,关注网络,OpenStack,SDN,NFV等...

    SDNLAB
  • SDN实战团分享(三):Docker网络使用体验

    我今天和大家分享一下Docker的网络,主要是基于我的使用体验和对这里面的一些技术的理解,也顺便听取一下大家的建议。我是做培训的,大多数时候和理论的东西打交道,...

    SDNLAB
  • virtio+ovs转发原理和性能分析

    传统数据中心中硬件服务器上运行linux,linux用硬件网卡收发包,硬件网卡有broadcom的有mellanox的有intel的等各式各样的,硬件网卡连接到...

    惠伟
  • 干货 | 云计算时代携程的网络架构变迁

    赵亚楠,携程云平台资深架构师。2016 年加入携程云计算部门,先后从事 OpenStack、SDN、容器网络(Mesos、K8S)、容器镜像存储、分布式存储等产...

    携程技术
  • 紫金山沈洋:基于可编程交换机和智能网卡的四层负载均衡器

    在2020网络数据平面峰会上,来自紫金山实验室未来网络中心的研究员——沈洋给我们带来了《基于可编程交换机和智能网卡的四层负载均衡器》的主题演讲。

    SDNLAB
  • SDNLAB技术分享(八):Neutron的基本原理与代码实现

    一、Openstack网络基础 下面对Openstack和Neutron的介绍,要从几个关键词入手。 1. 三代网络 在网络这一口,OpenStack经历了由n...

    SDNLAB
  • Ryu和OpenStack集成

    OpenStack作为当前和可预见时间内最为热门的云计算技术(没有之一),业已获得广泛的企业市场应用和众多IT巨头的支持,更是以近日(7月17日)一位最具重量级...

    SDNLAB
  • OpenStack Neutron之OpenStack网络基础

    OpenStack在这几年风生水起。随着核心模块稳定性的提高,OpenStack已经有了很多大规模商用的案例,所有与云相关的,无论是商用软件还是开源平台都在积极...

    SDNLAB

扫码关注云+社区

领取腾讯云代金券