前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >openstack网络设计-(三)ovs offload

openstack网络设计-(三)ovs offload

作者头像
惠伟
发布2021-02-24 11:29:14
2.3K0
发布2021-02-24 11:29:14
举报
文章被收录于专栏:虚拟化笔记虚拟化笔记

惠伟: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了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sr-iov
  • kernel
  • dpdk
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档