OVS DPDK--virtqueue(十七)
虚拟队列(Virtqueue)是连接guest操作系统中virtio前端驱动和宿主机vhostuser后端驱动的实际数据链路。网络设备有 2 个 virtqueue,一个用于发送数据包,一个用于接收数据包。
每个虚拟队列主要由三部分组成:
- 描述符数组(descriptor table)用于存储一些关联的描述符,每个描述符都是一个对 buffer 的描述,包含一个address/length 的配对。
- 可用的 ring(available ring)用于 guest 端表示那些描述符链当前是可用的。
- 使用过的 ring(used ring)用于表示 Host 端表示那些描述符已经使用。
描述符列表指向实际要传输的数据,两个环表指向描述符列表,标记前端和后端驱动对描述符列表中的描述符处理进度。
当virtqueue用于发送报文时,前端驱动将待发送报文加入avail ring等待后端的处理,后端处理完后,会将其放入used ring,并由前端将其释放desc中,最后通过try_fill_recv重新装入avail ring中; 当virtqueue用于接收报文时,前端将空白物理块加入avail ring中,提供给后端用来接收报文,后端接收完报文会放入used ring。
整个收包流程如下:
- 前端填充好desc(addr/len),并更新vring->avail(ring[0])
- 后端读取avail ring索引,拿到desc(if ring[0]=2,then desctable[2] 记录的就是一个逻辑buffer的首个物理块的信息),填充buffer数据;将buffer索引存在desc,将desc索引存放在used ring中
- 前端读取used ring索引,找到desc,获取buffer数据
原文链接:https://www.pianshen.com/article/3940460016/
OVS DPDK--virtqueue(十七)相关推荐
- OVS DPDK vhost-user详解(十三)
vhost user协议的控制和数据通道 所有的控制信息通过UNIX套接口(控制通道)交互.包括为进行直接内存访问而交换的内存映射信息,以及当数据填入virtio队列后需要出发的kick事件和中断信息 ...
- OVS DPDK与QEMU之间如何通过vhost user协议通信 vhost user协议的控制和数据通道
netdev_dpdk_vhost_construct定义在文件openvswitch-2.9.2/lib/netdev-dpdk.c1058 static int 1059 netdev_dpdk_ ...
- OVS DPDK vs OVS Deep Dive(十六)
背景 OvS(Open vSwitch)是云计算平台的重要连接组件,为虚拟机提供网络连,被各大云平台,基础设施供应商广泛使用,比如OpenStack, OpenNebula.vSwitch–Virtu ...
- OVS+DPDK Datapath 包分类技术
本文主体内容译于[DPDK社区文档],但并没有逐字翻译,在原文的基础上进行了一些调整,增加了对TSS分类器的详细阐述. 1. 概览 本文描述了OVS+DPDK中的包分类器(datapath class ...
- OVS DPDK vhost-user详解(十二)
在软件实现的网络I/O半虚拟化中,vhost-user在性能.灵活性和兼容性等方面达到了近乎完美的权衡.虽然它的提出已经过了四年多,也已经有了越来越多的新特性加入,但是万变不离其宗,那么今天就从整个v ...
- OVS DPDK vhost-user详解(十一)
这篇文章是对vhost-user / virtio-pmd架构的深入技术研究,该架构针对基于DPDK的高性能用户空间网络,面向所有有兴趣了解这些基本细节的架构师和开发人员. 介绍 本文将在读者熟悉vh ...
- OVS DPDK vhost-user搭建全过程(四十四)
系统:ubuntu14.04.1 系统:centos7 内核:4.4.0 qemu : >=2.7 Install DPDK 1. Download DPDK cd /usr/src/ wget ...
- ovs+dpdk场景下的tx checksum offload
一.checksum: tcp checksum包括三部分: 1).伪头部校验和: 伪头部包括: 源ip .宿ip. 协议号.tcp 长度,主要用于校验是正确的目的机器接收到数据包 2).tcp ...
- 使用DPDK优化VirtIO和OVS网络
2019独角兽企业重金招聘Python工程师标准>>> 准备测试环境 一共有2个节点,配置基本相同.节点A用于运行虚拟机,节点B用于测试性能. 查看系统信息 发行版版本: $ cat ...
最新文章
- Python 学习笔记 - 字典
- Keil 5出现Error: L6218E: Undefined symbol解决方法
- 活动结束|金融圈第19期分享:数据系统如何防范金融非统性风险?
- SQL SERVER提供了大量的WINDOWS和SQLSERVER专用的排序规则
- 2009最后一天,为了期盼而祝福
- Leet Code OJ 28. Implement strStr() [Difficulty: Easy]
- android开启服务器配置,Android基于XMPP开发(一)【openfire服务器配置】
- office professional 2010 key
- a good website to test OTP
- WCDMA,CDMA2000,TD_SCDMA
- sql between 效率高吗_整个SQL语句的执行效率都靠它了...
- 32个参数累加_「机械设计教程」滚珠丝杠选型过程中考虑的9个参数
- VC++ MFC 经典教程 – 基础篇
- CSS font-family 各字体一览表
- 解决Win10系统使用暴风激活导致的劫持浏览器主页问题
- 什么是IT行业? IT行业都有哪些职位?
- pycharm 用鼠标滑轮控制代码放大缩小的设置
- 递归实现二叉树的前序遍历
- Cortex-M处理器指令集详解
- 股票 - - 常用指标【中】
热门文章
- 自学python推荐书籍2019-2019年Python入门书籍推荐
- python编程从入门到精通pdf-跟老齐学Python:从入门到精通 完整版PDF[7MB]
- python小程序-【Python精华】100个Python练手小程序
- python计算每月工资-[Python] 2018新税法下工资计算
- 学python买什么电脑-程序员,买了台破Apple电脑,用来学Python
- python编程案例教程书籍-清华大学出版社-图书详情-《Python开发案例教程》
- python入门到精通需要学多久-python学习从入门到精通要多久
- python3项目-把项目从Python2.x移植到Python3.x的经验总结
- Linux上整体迁移Anaconda环境,所有的库包、虚拟环境均可用,同时让所有的用户访问
- windows的.bat批处理文件运行Python脚本程序