继续昨天的思路,今天先google了类似的实现domain0和domainU之间数据传输的方案
用“xen inter domain memory sharing”做关键字搜索,找到了这个问题的若干论文和方案,如下:
xenloop
定位于两个domainU之间数据传输,domainU应用层依然使用socket接口,但正常的路径是走到虚拟网卡->虚拟网卡驱动->网桥等等做交互,xenloop 的方式是通过 netfilter hook 的方式插入一个模块到内核,然后在内核协议栈的ip层截获数据,直接将数据拷贝到映射好的共享内存,由xenloop协议做数据交互。架构图如下:
XenLoop A Transparent High Performance Inter-VM Network Loopback pdf
XENFS
Shared Memory Based Communication Between Collocated Virtual Machines pdf
这篇论文系统探讨了基于shared memory 的vm间数据交互方案,对比了包括 xenloop 在内的多种已经实现的方案,该文最后提出自己的基于nfs的交互方案。
内存映射方案里,做在协议栈里的,可以获得很好的透明性和扩展性,对原有代码影响很小。做在block层的,透明性差,但性能更好。xenfs 试图共有这两个方面。
IO hook
V4V
v4v linux driver v4v 驱动只实现了linux版本
critrix v4v windows 驱动
vchan
libvchan 已经合并入xen代码,但文档还没完成,基本思路也是替换普通协议栈流程
代码: xen4.2.3/tools/libvchan
基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 2,布布扣,bubuko.com
基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 2
原文:http://www.cnblogs.com/jiayy/p/3817812.html