基于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

xenloop 官网地址和代码链接

XENFS

Shared Memory Based Communication Between Collocated Virtual Machines pdf

xenfs.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版本

这篇文章提到了v4v

critrix v4v windows 驱动

v4v 和 vchan 的对比介绍

vchan

libvchan 已经合并入xen代码,但文档还没完成,基本思路也是替换普通协议栈流程

代码: xen4.2.3/tools/libvchan

introducing-vchan

Documentation on lib(xen)vchan

xen-devel-libvchan-00

xen-devel-libvchan-01

windows guest 使用libvchan的讨论

基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 2,布布扣,bubuko.com

时间: 2024-10-25 20:30:35

基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 2的相关文章

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

继续 上一篇 的研究,结合 xen4.2.3 的代码分析,发现 xen4.2.3 的应用层工具库 tools 包含一个工具叫 libvchan ,其头文件描述如下: * This is a library for inter-domain communication. A standard Xen ring 34 * buffer is used, with a datagram-based interface built on top. The grant 35 * reference and

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

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

基于Redis的三种分布式爬虫策略

前言: 爬虫是偏IO型的任务,分布式爬虫的实现难度比分布式计算和分布式存储简单得多. 个人以为分布式爬虫需要考虑的点主要有以下几个: 爬虫任务的统一调度 爬虫任务的统一去重 存储问题 速度问题 足够"健壮"的情况下实现起来越简单/方便越好 最好支持"断点续爬"功能 Python分布式爬虫比较常用的应该是scrapy框架加上Redis内存数据库,中间的调度任务等用scrapy-redis模块实现. 此处简单介绍一下基于Redis的三种分布式策略,其实它们之间还是很相似

基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式

在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交,方便页面和服务器后端进行数据的交互处理.本文主要介绍利用Jquery处理数据交互的几种方式,包括获取数据并显示,插入新数据到服务器,更新数据,删除数据等操作. 1.利用Jquery获取数据并显示 为了顺利获取数据,我们需要保持页面端调用和服务器端保持一致,并相应的把数据转换或者封装为对象实体进行处理. 下面我们以一个简单的全国省份.全国城市.全国城市行政区的案例进行Demo代码的介绍.   总

基于MVC+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式

在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交,方便页面和服务器后端进行数据的交互处理.本文主要介绍利用Jquery处理数据交互的几种方式,包括获取数据并显示,插入新数据到服务器,更新数据,删除数据等操作. 1.利用Jquery获取数据并显示 为了顺利获取数据,我们需要保持页面端调用和服务器端保持一致,并相应的把数据转换或者封装为对象实体进行处理. 下面我们以一个简单的全国省份.全国城市.全国城市行政区的案例进行Demo代码的介绍.   总

《机器学习实战》基于信息论的三种决策树算法(ID3,C4.5,CART)

============================================================================================ <机器学习实战>系列博客是博主阅读<机器学习实战>这本书的笔记,包含对其中算法的理解和算法的Python代码实现 另外博主这里有机器学习实战这本书的所有算法源代码和算法所用到的源文件,有需要的留言 如需转载请注明出处,谢谢 ======================================

Android与服务器端数据交互(基于SOAP协议整合android+webservice)

此文出自:http://www.cnblogs.com/zhangdongzi/archive/2011/04/19/2020688.html 上一节中我们通过http协议,采用HttpClient向服务器端action请求数据.当然调用服务器端方法获取数据并不止这一种.WebService也可以为我们提供所需数据, 那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起. 我们在PC机器java客

转:使用基于Http的消息代替WebService的数据交互

http://blog.csdn.net/cyq1984/article/details/38041671 系统间交互的工作,随着信息化建设的发展,以及业界对SOA的认识及其带来的低TOC(总体拥有成本)等优势,越来越受到信息化水平较高的用户的重视. 这里先抛开SOA这样的架构规划,单纯就系统间整合的协议进行讨论. 系统间的交互或者成为整合(互联互通),早在信息化系统诞生的时候,就已经出现,只是并不明显,或者由于早期开发平台.开发语言等的单一性,这种需求并没有非常大的爆发出来. 随着信息化建设的

android客户端和网站数据交互的实现(基于Http协议获取数据方法)

android客户端一般不直接访问网站数据库,而是像浏览器一样发送get或者post请求,然后网站返回客户端能理解的数据格式,客户端解析这些数据,显示在界面上,常用的数据格式是xml和json. 可以理解客户端其实是一个你自己定义标记语言的浏览器,一般浏览器能解析的是html+css的数据,而android客户端能解析的是xml和json(或者都不是而是你自己定义的火星格式),服务端为了能满足客户端输出这种数据格式的需求,不得不专门针对客户端开发不同于浏览器访问的接口. 开发一个网站的客户端你需