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

学习,简单了解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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值