基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 2
继续昨天的思路,今天先google了类似的实现domain0和domainU之间数据传输的方案
[Xen-devel] XenStore as a data transfer path? 这篇帖子讨论了xenstore作为domain0和domainU传递自定义数据的可行性,在Xen架构里,xenstore用于domain0和多个domainU之间传递控制数据,根据Xenstore的文档,不适合用于传输过大的数据,它的设计目标是对domain0的应用层有非常好的可视性和可操作性(tdb格式数据库),同时方便多个vm传输控制数据。
[Xen-devel] Dom0-DomU communication 这篇帖子讨论了同样的话题,基本结论是多个vm间数据传输:小块数据如控制信息类用xenstore,大块数据如文件用http/nfs等网络,或者基于memory map的机制,如grant table机制。
用“xen inter domain memory sharing”做关键字搜索,找到了这个问题的若干论文和方案,如下:
xenloop
定位于两个domainU之间数据传输,domainU应用层依然使用socket接口,但正常的路径是走到虚拟网卡->虚拟网卡驱动->网桥等等做交互,xenloop 的方式是通过 netfilter hook 的方式插入一个模块到内核,然后在内核协议栈的ip层截获数据,直接将数据拷贝到映射好的共享内存,由xenloop协议做数据交互。架构图如下:
XenLoop A Transparent High PerformanceInter-VM Network Loopback pdf
XENFS
Shared Memory Based Communication Between Collocated Virtual Machines pdf
这篇论文系统探讨了基于shared memory 的vm间数据交互方案,对比了包括 xenloop 在内的多种已经实现的方案,该文最后提出自己的基于nfs的交互方案。
内存映射方案里,做在协议栈里的,可以获得很好的透明性和扩展性,对原有代码影响很小。做在block层的,透明性差,但性能更好。xenfs 试图共有这两个方面。
IO hook
Linux kernel 3.0 release kernel 3.0 提出了在虚拟机环境下,出于性能和可维护性等考虑,传统io路径需要通过hook简化路径,并提出在xen里的一些实现。这篇文章有助于理解在xen环境下IO路径的设计
V4V
v4v linux driver v4v 驱动只实现了linux版本
critrix v4v windows 驱动
vchan
libvchan 已经合并入xen代码,但文档还没完成,基本思路也是替换普通协议栈流程
代码: xen4.2.3/tools/libvchan
Documentation on lib(xen)vchan
基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 2的更多相关文章
- 基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 3
继续 上一篇 的研究,结合 xen4.2.3 的代码分析,发现 xen4.2.3 的应用层工具库 tools 包含一个工具叫 libvchan ,其头文件描述如下: * This is a libra ...
- 基于Xen实现一种domain0和domainU的应用层数据交互高效机制
项目里有一个需求,domain0的应用层需要定时给domainU(hvm windows)的应用层传递一块数据,原来的方案是在domainU的应用层架设一个http服务器,监听在某个端口,然后需要塞数 ...
- html5-websocket实现基于远程方法调用的数据交互
html5-websocket实现基于远程方法调用的数据交互 一般在传统网页中注册用户信息都是通过post或ajax提交到页面处理,到了HTML5后我们有另一种方法就是通过websocket进行数 ...
- 【腾讯Bugly干货分享】基于RxJava的一种MVP实现
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57bfef673c1174283d60bac0 Dev Club 是一个交流移动 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式
在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交,方便页面和服务器后端进行数据的交互处理.本文主要介绍利用Jquery处理数据交互的几种方式,包括 ...
- Android上掌纹识别第一步:基于OpenCV的6种肤色分割 源码和效果图
Android上掌纹识别第一步:基于OpenCV的6种肤色分割 源码和效果图 分类: OpenCV图像处理2013-02-21 21:35 6459人阅读 评论(8) 收藏 举报 原文链接 ht ...
- Spring WebFlux, 它是一种异步的, 非阻塞的, 支持背压(Back pressure)机制的Web 开发WebFlux 支持两种编程风(姿)格(势) 使用@Controller这种基于注解
概述 什么是 Spring WebFlux, 它是一种异步的, 非阻塞的, 支持背压(Back pressure)机制的Web 开发框架. 要深入了解 Spring WebFlux, 首先要了知道 R ...
- 基于Redis的三种分布式爬虫策略
前言: 爬虫是偏IO型的任务,分布式爬虫的实现难度比分布式计算和分布式存储简单得多. 个人以为分布式爬虫需要考虑的点主要有以下几个: 爬虫任务的统一调度 爬虫任务的统一去重 存储问题 速度问题 足够“ ...
- (转)基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式
http://www.cnblogs.com/wuhuacong/p/4085682.html 在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交, ...
随机推荐
- 【linux】CPU,内存对网站的影响
如果读写非常多,建议内存大点 如果涉及到的计算非常多,那就升级CPU
- javascript 计算倒计时
function timeDown(second) { var month = '', day = '', hour = '', minute = ''; if (second >= 86400 ...
- 深入解析AJAX的原理
AJAX:Asynchronous JavaScript And Xml(异步的JS和XML) 同步:客户端发起请求>服务端的处理和响应>客户端重新载入页面(循环) 异步:客户端实时请求& ...
- Flask初学者:配置文件
如果设置项比较少的话可以使用“app.config['param_name']=value”的形式直接使用,如果需要设置的参数比较多的话,可以单独新建一个配置文件用来存放配置信息,配置文件中的参数需大 ...
- 笔记-数据库-redis
笔记-数据库-redis 1. redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 stri ...
- 【java】实体类中 Set<对象> 按照对象的某个字段对set排序
Java利用hibernate进行一对多查询时,把另一张表作为一个属性存进这张表的字段中,返回的类型是set类型,要对返回的set类型进行排序 user表 package onlyfun.caterp ...
- 配置Wampserver和安装thinksns
一.先安装Wampserver(去官网下载) 二.安装好后单击wampserver图标,Apache->Service->测试80端口,如果显示: i 端口被iis占用 控制面板-> ...
- DiyCode开源项目 BaseActivity 分析
1.首先将这个项目的BaseActivity源码拷贝过来. /* * Copyright 2017 GcsSloop * * Licensed under the Apache License, Ve ...
- Sicily 8843 Ranking and Friendship
http://soj.me/8843 题意:几个人想做好朋友,朋友之间相差位置小于等于k,且长度相同分析:排序,将长度相同的放在一起.若长度相同,第i个人能放进去的条件是位置相差下雨等于k. ...
- Unity属性——AddComponentMenu
字面理解:添加 组件选项菜单 分析:可能是添加一个脚本或者组件到一个物体上 验证: 新建一个脚本:AttributeTest 提示:添加一个组件菜单属性,允许你放一个脚本在Compoent菜单下,来代 ...