[发明专利]虚拟机监控器高效网络通信的实现方法有效
申请号: | 200910080995.6 | 申请日: | 2009-03-31 |
公开(公告)号: | CN101557420A | 公开(公告)日: | 2009-10-14 |
发明(设计)人: | 祝明发;李胜召;马博;肖利民;郝沁汾 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L12/46;H04L12/26;G06F9/455 |
代理公司: | 北京慧泉知识产权代理有限公司 | 代理人: | 王顺荣;唐爱华 |
地址: | 100191北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种虚拟机监控器高效网络通信的实现方法,由两个部分组成:1.在虚拟机监控器中实现一个独立的Bridge模块,该模块将直接从主机网卡获取的数据包通过用户态通信机制以广播或者多播的形式发往虚拟机或虚拟机组,并将接收到的虚拟机或虚拟机组的数据包发送到主机网卡的发送队列中,提高虚拟机监控器与虚拟机之间的网络通信速度。2.避免虚拟机监控器与虚拟机的频繁切换。每隔固定时间,虚拟机退出到虚拟机监控器中轮询数据包接收队列,将所有数据包一起处理,减少虚拟机与主机的切换次数,进一步提高虚拟机监控器与虚拟机之间的网络通信的效率。该方法直接从主机网卡获取数据包,提高虚拟机监控器网络通信的速度,具有很好的实用价值。 | ||
搜索关键词: | 虚拟机 监控器 高效 网络 通信 实现 方法 | ||
【主权项】:
1、一种虚拟机监控器高效网络通信的实现方法,其特征在于:它是由以下两个部分组成:(1)、实现一个独立的Bridge模块,在这个模块中使用用户态通信机制维持虚拟机与主机和外界的通信,并实现虚拟机多播组,每一个虚拟机属于一个多播组,利用数据包的多播机制将数据包同时发送给多个虚拟机,提高在多虚拟机环境下数据包传输的效率,从而替代虚拟网桥、虚拟字符设备和虚拟网络设备,其具体步骤如下:步骤1:当Bridge模块装载进内核时,创建用户态通信套接字,并注册处理数据包的函数,当有数据包到Bridge模块时,由该函数将数据包发送至虚拟机;如果虚拟机启动时启用了网络设备,则在虚拟机监控器初始化网络设备时,初始化一个数据处理线程用来维持网络通信;在这个线程中分别初始化一个数据包接收和发送队列,之后在这个线程中利用用户态通信机制向Bridge模块注册一个虚拟机网络设备,封装一个Netlink数据包向内核发送,在其中包含虚拟机的进程描述符和要加入的广播组,在虚拟机监控器中解析这个数据包,得到并保存虚拟机的进程描述符,并将其加入相应的广播组中;步骤2:在主机网卡的驱动程序中定义一个钩子函数,当Bridge模块装载进内核时,通过对该钩子函数的赋值,从而建立与主机网卡驱动的联系,当主机网卡收到数据包后触发主机网卡的驱动程序,在主机网卡的驱动程序中判断该钩子函数是否赋值,如果已经赋值,则通过该钩子函数将数据包的信息反馈给Bridge模块,Bridge模块根据数据包的信息决定是否发送到一个虚拟机或是一个广播组;步骤3:在虚拟机监控器中,利用Bridge模块将数据包发送到数据处理线程,读取数据包,解析之后将该数据包拷贝到虚拟机网卡的内存空间;之后通过虚拟机网卡置位,虚拟机执行I/O指令导致虚拟机退出到虚拟机监控器中,在虚拟机监控器中将中断注入到虚拟机的中断描述符表中,模拟I/O指令的执行,恢复虚拟机运行,完成数据包的接收;步骤4:当虚拟机发送数据包时,虚拟机执行I/O指令,将数据包放到网卡的内存区域,导致虚拟机退出到虚拟机监控器中;在虚拟机监控器中得到I/O指令的内容及操作的端口信息,之后将通过指令模拟的方式执行数据包的拷贝,从虚拟机的网卡空间拷贝到通信线程的数据包发送队列,通过用户态通信机制发送出去;(2)、利用轮询机制减少虚拟机与主机的切换次数,轮询到来的网络I/O事件,进一步提高虚拟机监控器与虚拟机之间的的网络通信效率,其具体步骤如下:步骤(1):将数据包拷贝到虚拟机的网卡空间后,更新中断,使得虚拟机退出到虚拟机监控器中,在虚拟机监控器中解析导致退出的指令,得到该I/O指令的内容及操作的端口,激活数据处理函数;步骤(2):在数据处理函数中,首先在虚拟机控制结构VMCS中的I/O位图中清除该I/O端口的允许位,关闭对该端口的操作引起的虚拟机退出,查看数据包接收队列,判断其中数据包的个数是否超过p个,如果不是则读取所有的数据包,如果是则读取p个数据包,进入下述步骤(3)处理读到的数据包;步骤(3):将p个数据包拷贝至虚拟机的网卡空间后,向虚拟机的中断描述符表中注入中断,之后重新进入虚拟机,虚拟机重新运行后,会发现虚拟机网卡有数据到来,从而触发虚拟机的网卡驱动程序,从而完成虚拟机的网络数据包的接收;步骤(4):每隔一定时间重复步骤(2)和步骤(3),轮询是否有数据包到虚拟机的网卡空间并处理。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200910080995.6/,转载请声明来源钻瓜专利网。
- 上一篇:磁控溅射设备和薄膜的制造方法
- 下一篇:自动生物培养和分送系统