虚拟机监控器高效网络通信的实现方法技术

技术编号:3844531 阅读:400 留言:0更新日期:2012-04-11 18:40
一种虚拟机监控器高效网络通信的实现方法,由两个部分组成:1.在虚拟机监控器中实现一个独立的Bridge模块,该模块将直接从主机网卡获取的数据包通过用户态通信机制以广播或者多播的形式发往虚拟机或虚拟机组,并将接收到的虚拟机或虚拟机组的数据包发送到主机网卡的发送队列中,提高虚拟机监控器与虚拟机之间的网络通信速度。2.避免虚拟机监控器与虚拟机的频繁切换。每隔固定时间,虚拟机退出到虚拟机监控器中轮询数据包接收队列,将所有数据包一起处理,减少虚拟机与主机的切换次数,进一步提高虚拟机监控器与虚拟机之间的网络通信的效率。该方法直接从主机网卡获取数据包,提高虚拟机监控器网络通信的速度,具有很好的实用价值。

【技术实现步骤摘要】

【技术保护点】
一种虚拟机监控器高效网络通信的实现方法,其特征在于:它是由以下两个部分组成: (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事件,进一步提高虚拟机监控器与虚拟机之间的...

【技术特征摘要】

【专利技术属性】
技术研发人员:祝明发李胜召马博肖利民郝沁汾
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利