dpdk课程学习之练习笔记六(虚拟化理解vhost和virtio)

  • Post author:
  • Post category:其他


学习,简单了解dpdk的一些基础知识,这里主要学习虚拟化相关基础知识。(个人课堂笔记,理性参考)



1:硬件支持 多队列网卡



1.1:多队列网卡:

===》网卡内部有多个队列,与CPU进行绑定,通过PCI总线进行数据分发。

===》1:数据先进行hash

===》2:根据hash后的结果,放入对应的队列中。

===》3:多队列网卡中的数据会触发中断,由PCI和CPU进行处理。



1.2:多队列网卡的发送与接收:

===>1:多队列网卡中数据的接收,需要知道网卡中有数据,通过

硬件中断

的方式,硬件中断在数据量小的时候可以满足。

=======》使用

NAPI

对单纯的硬件中断进行优化,有中断触发,数据就一直读, 因此rte_eth_rc_burst读出来得到数据是多个数组(多个队列即多个NAPI)。

===》2:多队列网卡数据的发送:send()和实际网卡的发送时两个步骤。

=======》通过队列,把send()接口和网卡发送进行拆分,对应的QDisc就是队列,可以是多个队列。

=======》多个QDIsc队列设计方案:FIFO,可以四元组检索对应放数据。 (可以设置)

多队列网卡队列可以与CPU进行绑定,使专门的CPU处理专门的队列。



1.3:dpdk与多队列网卡

配置:rte_eth_dev_configure() ===》对网卡进行配置

启动: rte_eth_rx_queue_setup() ===> 对RX队列的配置

​ rte_eth_tx_queue_setup() ===> 对TX队列的配置

接收: rte_eth_rx_burst()

发送:rte_eth_tx_burst()



2:虚拟化



2.1:主要从三个方面了解虚拟化:

1:CPU虚拟化

2:内存虚拟化

3:IO虚拟化(磁盘的虚拟化,网卡的虚拟化)



2.2:CPU虚拟化(共享)

CPU完全虚拟化: vmware虚拟工具创建的虚拟机

CPU的硬件辅助虚拟化:一个物理硬件(vsphere)上多个虚拟机,需要硬件指令的支持。

CPU的半虚拟化:docker虚拟机(使用的宿主机的CPU)

==>vt-x (主要针对CPU和内存的虚拟化)与vx-d (针对外设(DMA,网卡,IO)的虚拟化),对应南桥和北桥的概念。



2.3:内存虚拟化

这里涉及到的概念如图:

在这里插入图片描述

参考网址:

一文看懂影子页表和扩展页表 – 51CTO.COM



2.3.1:影子页表技术:(维护页表)

虚拟机虚拟地址 《=


》 物理机虚拟地址《


》物理机物理地址

虚拟机的页表和物理机页表建立关联,访问虚拟机页表,通过关联找到物理机页表,然后找到实际物理地址。



2.3.2:EPT(扩展页表):(物理地址偏移)

虚拟机物理地址和宿主机物理地址有一个偏移量,直接通过虚拟机物理地址+偏移可以找到实际物理地址。

dpdk只是使用内存,这里的内存方案与dpdk无关。



2.4:I/O虚拟化

例如:虚拟机需要联网,网卡是如何使用的。

===》虚拟机可以直接使用网卡(透传),也可以虚拟机网卡数据转为物理机网卡数据,用网卡发送。

===》桥接和net模式只是逻辑上的差异,与I/O虚拟化无关。

===》虚拟机可以用vmxnet3虚拟出多队列网卡。

1:I/O半虚拟化 :不通过虚拟网卡,直接发给网卡数据取。(CS模型)

2:I/O全虚拟化: 虚拟出一个网卡,网卡数据发给物理机网卡进行发送。(性能不高)

3:I/O透传: 如插入一个硬件设备,虚拟机直接能识别,透传。

vmware的磁盘虚拟化:全虚拟化

vmware的网络:更偏向于透传。

这里区分i/o:磁盘i/o, 网络i/o, 其他外设鼠标键盘等i/o



3:dpdk的虚拟化



3.1:virtio 虚拟交换机,半虚拟化技术

对于不同的io,制定统一标准 virtio,针对外设,针对io。

读和写,宿主机和虚拟机之间设备的读和写,使用中间队列(可以是环设计)进行交互。



3.2:vhost 加速包处理

vhost: 适配针对的是所有的操作系统虚拟机。

DPDK vhost支持vhost-cuse(用户态字符设备)和vhost-user(用户态socket服务)两种消息机制,它负责为客户机中的virtio-net创建、管理和销毁vhost设备。

如图:该图来自网络:

Vhost-user详解 – 简书 (jianshu.com)


在这里插入图片描述

相关demo源码和课程:

C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 (qq.com)



版权声明:本文为yun6853992原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。