【重识云原生】第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现

5 virtio的半硬件卸载方案

        Virtio作为一种半虚拟化的解决方案,其性能一直不如设备的pass-through,即将物理设备(通常是网卡的VF)直接分配给虚拟机,其优点在于数据平面是在虚拟机与硬件之间直通的,几乎不需要主机的干预。而virtio的发展,虽然带来了性能的提升,可终究无法达到pass-through的I/O性能,始终需要主机(主要是软件交换机)的干预。vDPA(vhost Data Path Acceleration)即是让virtio数据平面不需主机干预的解决方案。该框架由Redhat提出,实现了virtio数据平面的硬件卸载。控制平面仍然采用原来的控制平面协议,当控制信息被传递到硬件中,硬件完成数据平面的配置之后,数据通信过程由硬件设备(智能网卡)完成,虚拟机与网卡之间直通。中断信息也由网卡直接发送至虚拟机不需要主机的干预。这种方式,控制面比较复杂,硬件难以实现。

        在硬件vDPA架构中,通过OVS转发的流量首包依然由主机上的OVS转发平面处理,对应数据流的后续报文由硬件网卡直接转发。

        从下图中可以看到virtio的控制平面仍需要vDPA driver进行传递,也就是说QEMU,或者虚拟机仍然使用原先的控制平面协议作为接口,而这些控制信息被传递到硬件中,硬件会通过这些信息配置好数据平面。而数据平面上,经过配置后的数据平面可以在虚拟机和网卡之间直通。

        鉴于现在后端的数据处理其实完全在硬件中,原先的前后端通知方式也可以几乎完全规避主机的干预,以中断为例,原先中断必须由主机处理,主机通过软件交换机得知中断的目的地之后,将虚拟中断注入到虚拟机中,而在vDPA中,网卡可以直接将中断发送到虚拟机中。总体来看,vDPA的数据平面与SR-IOV设备直通的数据平面非常接近,并且在性能数据上也能达到后者的水准。更重要的是vDPA框架保有virtio这套标准的接口,使云服务提供商在不改变virtio接口的前提下,得到更高的性能。

        需要注意的是,vDPA框架中利用到的硬件必须至少支持virtio ring的标准,否则可想而知,硬件是无法与前端进行正确通信的。另外,原先软件交换机提供的交换功能,也转而在硬件中实现。

        为了解决高性能SRIOV网络的热迁移问题,出现了很多做法和尝试,尚未形成统一的标准。在Redhat提出硬件vDPA架构之前,Mellanox实现了软件vDPA(即VF Relay)。理论上讲,Mellanox的软件vDPA并不能算是vDPA,其实就是将数据在用户空间的virtio队列和VF的接收队列做了一次数据Relay。Redhat提出的硬件vDPA架构,目前在DPDK和内核程序中均有实现,基本是未来的标准架构。Qemu支持两种方式的vDPA,一种是vhost-user,配合DPDK中的vDPA运行,DPDK再调用厂商用户态vDPA驱动;另一种方式是vhost-vdpa,通过ioctl调用到内核通用vDPA模块,通用vDPA模块再调用厂商硬件专有的vDPA驱动。

        1) 软件vDPA: 软件vDPA也叫VF relay,由于需要软件把VF上接收的数据通过virtio转发给虚拟机(VM),如Mellanox在OVS-DPDK实现了这个relay,OVS流表由硬件卸载加速,性能上与SR-IOV VF直通(passthrough)方式比略有降低,不过实现了虚拟机(VM)的热迁移特性。

        2) 硬件vDPA: 硬件vDPA实际上是借助virtio硬件加速,以实现更高性能的通信。由于控制面复杂,所以用硬件难以实现。厂商自己开发驱动,对接到用户空间DPDK的vDPA和内核vDPA架构上,可以实现硬件vDPA。目前Mellanox mlx5和Intel IFC对应的vDPA适配程序都已经合入到DPDK和kernel社区源码。

        在硬件vDPA场景下,通过OVS转发的流量首包依然由主机上的OVS转发平面处理,对应数据流的后续报文由硬件网卡直接转发。

        后来在Bluefield-2上,由于集成了ARM核,所以NVIDIA在与UCloud的合作中,将OVS的控制面也完全卸载到网卡到ARM核上,这样主机上就可以将OVS完全卸载到网卡上。

 参考链接

dpdk对虚拟化的支持调研 - allcloud - 博客园

DPDK系列之十二:基于virtio、vhost和OVS-DPDK的容器数据通道_cloudvtech的博客-CSDN博客_dpdk容器化

DPDK系列之六:qemu-kvm网络后端的加速技术_cloudvtech的博客-CSDN博客_kvm加速

DPDK系列之十五:Virtio技术分析之一,virtio基础架构_cloudvtech的博客-CSDN博客_virtio

从dpdk1811看virtio1.1 的实现—packed ring-lvyilong316-ChinaUnix博客

Qemu模拟IO和半虚拟化Virtio的区别以及I/O半虚拟化驱动介绍_weixin_34051201的博客-CSDN博客

virtio-net - 网络半虚拟化 - 知乎

DPU和CPU互联的接口之争:Virtio还是SR-IOV? - 极术社区 - 连接开发者与智能计算生态

virtio简介(一)—— 框架分析 - Edver - 博客园

KVM之Virtio介绍 (十五) - 程序员大本营

虚拟化之Virtio-Net基础篇-51CTO.COM

KVM 虚拟化详解 - 知乎

Linux Kernel Vhost 架构 - 于杨 - 博客园

virtio,vhost 和vhost-user - allcloud - 博客园

Virtio网络的演化之路 - 云+社区 - 腾讯云

详解vhost-user协议及其在OVS DPDK、QEMU和virtio-net驱动中的实现_redwingz的博客-CSDN博客_vhost协议

  

 《重识云原生系列》专题索引: 

  1. 第一章——不谋全局不足以谋一域
  2. 第二章计算第1节——计算虚拟化技术总述
  3. 第三章云存储第1节——分布式云存储总述
  4. 第四章云网络第一节——云网络技术发展简述
  5. 第四章云网络4.2节——相关基础知识准备
  6. 第四章云网络4.3节——重要网络协议
  7. 第四章云网络4.3.1节——路由技术简述
  8. 第四章云网络4.3.2节——VLAN技术
  9. 第四章云网络4.3.3节——RIP协议
  10. 第四章云网络4.3.4节——OSPF协议
  11. 第四章云网络4.3.5节——EIGRP协议
  12. 第四章云网络4.3.6节——IS-IS协议
  13. 第四章云网络4.3.7节——BGP协议
  14. 第四章云网络4.3.7.2节——BGP协议概述
  15. 第四章云网络4.3.7.3节——BGP协议实现原理
  16. 第四章云网络4.3.7.4节——高级特性
  17. 第四章云网络4.3.7.5节——实操
  18. 第四章云网络4.3.7.6节——MP-BGP协议
  19. 第四章云网络4.3.8节——策略路由
  20. 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术
  21. 第四章云网络4.3.10节——VXLAN技术
  22. 第四章云网络4.3.10.2节——VXLAN Overlay网络方案设计
  23. 第四章云网络4.3.10.3节——VXLAN隧道机制
  24. 第四章云网络4.3.10.4节——VXLAN报文转发过程
  25. 第四章云网络4.3.10.5节——VXlan组网架构
  26. 第四章云网络4.3.10.6节——VXLAN应用部署方案
  27. 第四章云网络4.4节——Spine-Leaf网络架构
  28. 第四章云网络4.5节——大二层网络
  29. 第四章云网络4.6节——Underlay 和 Overlay概念
  30. 第四章云网络4.7.1节——网络虚拟化与卸载加速技术的演进简述
  31. 第四章云网络4.7.2节——virtio网络半虚拟化简介
  32. 第四章云网络4.7.3节——Vhost-net方案
  33. 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
  34. 第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
  35. 第四章云网络4.7.6节——virtio-blk存储虚拟化方案
  36. 第四章云网络4.7.8节——SR-IOV方案
  37. 第四章云网络4.7.9节——NFV
  38. 第四章云网络4.8.1节——SDN总述
  39. 第四章云网络4.8.2.1节——OpenFlow概述
  40. 第四章云网络4.8.2.2节——OpenFlow协议详解
  41. 第四章云网络4.8.2.3节——OpenFlow运行机制
  42. 第四章云网络4.8.3.1节——Open vSwitch简介
  43. 第四章云网络4.8.3.2节——Open vSwitch工作原理详解
  44. 第四章云网络4.8.4节——OpenStack与SDN的集成
  45. 第四章云网络4.8.5节——OpenDayLight
  46. 第四章云网络4.8.6节——Dragonflow

本文由[mdnice](https://mdnice.com/?platform=6)多平台发布
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容