[发明专利]内核态虚拟网络设备的建立方法、及其包发送和接收方法有效
申请号: | 201110424401.6 | 申请日: | 2011-12-16 |
公开(公告)号: | CN102497434A | 公开(公告)日: | 2012-06-13 |
发明(设计)人: | 林思明;周洲仪;程学旗;张冬;李金明;王元卓;梁英 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L29/12;G06F9/455 |
代理公司: | 北京泛华伟业知识产权代理有限公司 11280 | 代理人: | 王勇 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内核 虚拟 网络设备 建立 方法 及其 发送 接收 | ||
技术领域
本发明涉及计算机操作系统及计算机网络领域,尤其涉及一种内核态虚拟网络设备的建立方法、及其包发送和接收方法。
背景技术
虚拟化技术可分为基于指令翻译的纯软件虚拟化技术和硬件辅助虚拟化技术。基于指令翻译的纯软件虚拟化技术虽然模拟的目标处理器种类繁多,但是在运行速度方面存在瓶颈;而硬件辅助虚拟化技术可使被模拟系统非I/O指令运行速度接近真实系统。
目前,硬件辅助虚拟化技术(如Xen,KVM等)对大多数虚拟I/O设备的模拟实现在用户态。实验表明,这种实现方式给系统带来了不可忽略的额外开销,如内核态/用户态数据拷贝,用户态/内核态处理器状态切换,系统进程调度等。为了使仿真节点能更逼真地贴近真实环境,必须尽可能地消除这些不必要的开销。
采用VT-d及VT-c等硬件辅助I/O虚拟化技术在某些情况下可回避I/O虚拟化性能问题,然而硬件辅助I/O虚拟化技术不能满足网络仿真对可扩展性和可操控性的要求(例如,采用VT-d技术的虚拟机的虚拟网卡的类型是固定的、而且虚拟网卡的数目是受限的)。
所以,本领域需要同时解决上述两个问题的技术,即同时解决硬件辅助虚拟化技术(如Xen,KVM等)对大多数虚拟I/O设备的模拟实现在用户态导致的额外开销大、VT-d及VT-c等硬件辅助I/O虚拟化技术的可扩展性和可操作性差的问题。
发明内容
本发明要解决的技术问题是提供一种内核态虚拟网络设备的建立方法、及其包发送和接收方法,既避免了不必要的内核态/用户态切换开销和内核态/用户态数据拷贝开销,又具有较高的可扩展性和可操作性。
根据本发明的一个方面,提供一种内核态虚拟网络设备的建立方法,包括:步骤1、虚拟机监控机扫描虚拟机用户态调用参数,对于参数中给出的每个虚拟网络设备,保存该虚拟网络设备的基本配置;步骤2、位于用户态的虚拟机监控机在初始化虚拟机上下文时,初始化虚拟机上下文内核态锁;和步骤3、来宾机的虚拟网络设备初始化过程中,在映射该设备的I/O端口或I/O内存映射地址时,根据所述虚拟网络设备基本配置,向内核注册虚拟网络设备结构。
可选的,步骤1中,所述基础配置包括:虚拟网卡类型、虚拟网卡MAC地址和虚拟网卡对应的虚拟DHCP信息中的一个或多个;
所述虚拟网卡对应的虚拟DHCP信息包括:主机IP、虚拟DHCP服务器IP、DNS IP和网关IP中的一个或多个。
可选的,步骤3中,虚拟网络设备结构除包含所述基本配置外,还包含该设备的I/O端口或I/O内存映射地址。
可选的,步骤3后还包括:步骤4、宿主机内核加载时,为无锁化零拷贝接收环和无锁化零拷贝发送环开辟内存区域;步骤5、宿主机内核加载时,针对无锁化零拷贝接收环、发送环的每个页,对相应的各级页表项的USER位进行置位操作,从而用户态网络包调度程序能够访问所述无锁化零拷贝接收环、发送环;步骤6、用户态网络包调度程序启动时,通过一个系统调用获取以上无锁化零拷贝接收环和无锁化零拷贝发送环的起始地址,而标识无锁化零拷贝接收环和无锁化零拷贝发送环的头结构根据起始地址和偏离量计算。
可选的,每个无锁化零拷贝接收/发送环为环结构,包含一个头指针和一个尾指针;当系统中的进程要往无锁化环中追加网络包时,先检查无锁环是否已满,判断条件为:头指针==(尾指针+环长度+1)%环长度;如果已满则丢弃该包,否则按照尾指针的指示将网络包的内容和接口标识作为环的一项添入环中,并且计算新的尾指针:尾指针=(尾指针+1)%环长度;当系统中的进程要从环中读取网络包时,先检查环是否为空,判断条件为:头指针==尾指针;如果为空,则放弃读取操作,否则按照头指针的指示将网络包的内容和接口标识从环中读出,并计算新的头指针:头指针=(头指针+1)%环长度。
根据本发明另一个方面,提供一种基于内核态虚拟网络设备的网络包接收方法,包括:步骤1、当网络包从外接物理网卡经过网桥设备进入TAP设备后,内核将该包和该包的进入接口合并成一个数据段填充入与此物理网卡对应的接收环;步骤2、网络包调度程序直接从接收环获取网络包的内容和其进入接口标识,并按预定的调度算法进行处理;步骤3、网络包调度程序将待发送的网络包和目的接口合并成一个数据段填充到发送环;和步骤4、位于内核的发送处理线程读取发送环,并将网络包按照发送接口标识送达目的地。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110424401.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:具交错驱动机制的光源系统
- 下一篇:木质素改性无压网球内胆