xen的网络设备机制-I/O环

note:此文描述了xen半虚拟化网卡vif机制,梳理作用。

Xen的块设备驱动使用了XEN IO环的机制的。

xen hyprevisor的作用就是说在虚拟机和IO设备之间提供一层保护层,所以对于数据传输机制就是要在数据在系统之间移动的同时带来比较小的开销。两个主要的数据传输机制影响I/O数据传输。一个是资源管理,另外一个数数据传输。Xen使用了最小化开销的两种机制:IO描述符环和事件通道,授权表机制。

对于网络设备是这样的,Xen给虚拟机提供了虚拟网桥,每一个Domain都有一个或者多个虚拟接口VIFs逻辑上连接到了虚拟网桥,一个VIF看起来就像是一个物理网络接口卡NIC一样,但是有两个buffer描述符环,一个是接收的,另外一个是发送的。这两个方向都有各自的rule形式,如果满足的话,相应的动作就会实施(就相当于物理网卡可能会执行的过滤功能那样)。

发送过程

虚拟机操作系统直接把一个buffer 描述符(是对应的(vif driver的)TX buffer?的buffer描述符)放到发送环中(描述符的请求producer)。XEN复制这个描述符并且保证安全性,然后复制数据包的头部进行一些过滤规则(请求 consumer )。(数据包的payload并不复杂,因为我们使用共享内存机制)

这就相当于xen接管了物理网卡部分,但是同时让这个虚拟机的内存buffer和物理网卡buffer是共享的内存,于是减小了开销。

接收过程

当包从虚拟网桥到来的时候,guest OS会使用一个没有用的页面去来交换到来的包,这避免了在XEN和guest OS之间复制包的开销,虽然这需要guest OS的接收buffers在网络接口处排队。当包接收到后,XEN会很快的去查询rules,来决定相应的vif,并且用接收环上的page frame的packet buffer来交换这个数据包。

"if no frame is available,the packet is dropped。" 所以在接收的过程中很可能会丢包,这也就是说如果接收环满了,那么就丢包了。

注意,这个讲的和netmap和vale对比,原理有相似之处,但是vale工作在网桥层面,而IO环工作在网卡和网卡驱动层(XEN的)。

参考文献:

xen and the art of virtualization

p.s.有空再补充

时间: 2024-08-01 04:53:21

xen的网络设备机制-I/O环的相关文章

Node.js知识点整理之----基础知识----事件处理机制及事件环机制

在event模块中,定义了EventEmitter类,所有触发事件的对象都是继承了这个类的子类的实例对象. addListener(event,listener) 对指定事件绑定事件处理函数 on(event,listener) 对指定事件绑定事件处理函数(addListener方法的别名) var http = require('http'); var server = http.createServer(); server.on('request',function(req,res){ co

事件处理机制及事件环机制

1 /* 2 * 当需要对指定事件绑定事件处理函数时,可以使用EventEmitter类的on方法或addListener方法.这两个方法的区别仅在于方法名而已,内部实现的同样的处理. 3 * 4 * EventEmitter类的各种方法: 5 * addListener():对指定事件绑定事件处理函数 6 * on():addListener方法的别名 7 * once():对指定事件只执行一次的事件处理函数 8 * removeListener():对指定事件解除事件处理函数 9 * rem

基于Xen实现一种domain0和domainU的应用层数据交互高效机制

项目里有一个需求,domain0的应用层需要定时给domainU(hvm windows)的应用层传递一块数据,原来的方案是在domainU的应用层架设一个http服务器,监听在某个端口,然后需要塞数据时,domain0的应用程序连接该端口,并通过http send发送数据.发送完会等待domainU 的应用程序返回一个标记. 无意间看到这篇论文<全虚拟化HVM和半虚拟化PV虚拟平台通信机制分析>,里边介绍hvm情况下domainU与Doamin0用户层的数据交互机制,根据文章介绍,尝试设计一

深入浅出高可靠性技术

一. 高可靠性技术概述 · 可靠性:Availability,可靠性=MTBF/ (MTBF+MTTR): ○ MTBF(Mean Time Between Failure:平均无故障时间):衡量稳定程度 ○ MTTR(Mean Time to Repair:故障平均修复时间):衡量故障响应修复速度 · 高可靠性的应用: ○ 网络高可靠性主要是指当设备或网络出现故障时,网络提供服务的不间断性. 1.可靠性达到5 个9 以上: 2.可靠性99.999%意味着每年故障时间不超过5 分钟: 3.可靠性

第一节:Node.js简介

1.什么是Node.js? Node.js是一个用于开发各种Web服务器的开发工具,仔Node.js服务器中,运行的高性能V8 JavaScript脚本语言,该语言是一种可以运行仔服务器端的JavaScript脚本语言.它为了提高性能,采用了以下两种机制:非阻塞型I/O和事件环,由于采用了非阻塞型I/O,所以在执行了访问数据库的代码后将立即转而执行其后的代码,把数据库返回结果的处理代码放在回掉函数中执行,从而提高了程序的执行效率,在Node.js中,在一个时刻只能执行一个事件回掉函数,但是在执行

三、Node.js中基础知识

1.控制台console对象的方法: 1) console.log(); //显示一行字符串 2) console.info(); //与1)完全相同 3) console.error(); //标准错误输出流的输出 4) console.warn(); //与3)完全相同 5) console.dir(); //查看一个对象中的内容并将其信息输出到控制台 6) console.time(); //标记开始时间 7) console.timeEnd(); //标记结束时间 8) console.

第三章 nodejs基础知识(上)

本章主要介绍一些nodejs的基础知识: 1. 什么是nodejs中的控制台,如何向控制台进行标准输出流与标准错误输出流的输出: 2. 什么是nodejs中的全局作用域,在nodejs中预先提供了哪些全局函数以及全局变量: 3. 什么是nodejs中的事件处理机制以及事件环进制,如何在nodejs中为各种事件指定事件触发以及事件取消时执行的回调函数: 4. 如何使用nodejs 中的调试器进行应用程序的调试: 3.1 nodejs中的控制台 在nodejs中,使用console对象代表控制台.在

Node.js权威指南 (3) - Node.js基础知识

3.1 Node.js中的控制台 / 19 3.1.1 console.log方法 / 19 3.1.2 console.error方法 / 20 3.1.3 console.dir方法 / 21 3.1.4 console.time方法与console.timeEnd方法 / 22 3.1.5 console.trace方法 / 22 3.1.6 console.assert方法 / 233.2 Node.js中的全局作用域及全局函数 / 23 3.2.1 Node.js中的全局作用域 / 2

NodeJS基础(一)

一.Node.js简介 1.1 简介 V8引擎本身就是用于Chrome浏览器的JS解释部分,但是Ryan Dahl这哥们,鬼才般的,把这个V8搬到了服务器上,用于做服务器的软件. Node.js是一个专注于实现高性能Web服务器优化的专家,几经探索,几经挫折后,遇到V8而诞生的项目. Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触角伸到了服务器端,可以与PHP.JSP.Python.Ruby平起平坐. 但Node似乎有点不同: ● Node.js