《一种基于设备模拟的数据卡虚拟化实现方法.pdf》由会员分享,可在线阅读,更多相关《一种基于设备模拟的数据卡虚拟化实现方法.pdf(11页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103645936 A (43)申请公布日 2014.03.19 CN 103645936 A (21)申请号 201310696743.2 (22)申请日 2013.12.18 G06F 9/455(2006.01) (71)申请人 四川卫士通信息安全平台技术有限 公司 地址 610000 四川省成都市高新区云华路 333 号 2 幢 (72)发明人 王亚栋 黄臻 刘颖 (74)专利代理机构 成都金英专利代理事务所 51218 代理人 袁英 (54) 发明名称 一种基于设备模拟的数据卡虚拟化实现方法 (57) 摘要 本发明公开了一种基于设备模拟的数据卡虚 拟化实现方。
2、法, 它包括一个设备初始化步骤和一 个 I/O 口读写处理步骤, 所述的设备初始化步骤 包括 : 分配模拟设备资源配置对象 ; 将虚拟子数 据卡信息注册到虚拟机子模块 ; 根据初始化指定 的数据卡类型生成相应的设备节点名 ; 对 I/O 口 读写操作处理函数进行注册 ; 虚拟子数据卡的 I/ O口读写范围的申请 ; 结束初始化设置。 本发明不 需要对硬件进行专门设计、 可在虚拟子模块中提 供虚拟的子数据卡、 各子数据卡之间相互独立, 互 不干扰、 且具备迁移功能。 (51)Int.Cl. 权利要求书 2 页 说明书 4 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申。
3、请 权利要求书2页 说明书4页 附图4页 (10)申请公布号 CN 103645936 A CN 103645936 A 1/2 页 2 1. 一种基于设备模拟的数据卡虚拟化实现方法, 其特征在于 : 它包括一个设备初始化 步骤和一个 I/O 口读写处理步骤, 所述的设备初始化步骤包括以下步骤 : S101 : 分配模拟设备资源配置对象 ; S102 : 将虚拟子数据卡信息注册到虚拟机子模块 ; S103 : 根据初始化指定的数据卡类型生成相应的设备节点名 ; S104 : 对 I/O 口读写操作处理函数进行注册 ; S105 : 虚拟子数据卡的 I/O 口读写范围的申请 ; S106 : 结。
4、束初始化设置 ; 所述的 I/O 口读写处理步骤包括 I/O 口读处理步骤和 I/O 口写处理步骤, 所述的 I/O 口读处理步骤包括以下步骤 : S2011 : 获取 I/O 口读操作指令, 对 I/O 口所读取的数据进行判断 ; S2012 : 判断 I/O 口读取的数据是否为 DMA 传输地址寄存器数据, 若为 DMA 传输地址寄 存器数据, 则执行步骤 S2013, 否则执行步骤 S2014 ; S2013 : 读取 DMA 传输地址寄存器内的数据, 并返回 DMA 传输地址寄存器内的数据处理 值, 完成 I/O 口数据读取处理 ; S2014 : 判断 I/O 口读取的数据是否为控制。
5、状态寄存器数据, 若为控制状态寄存器数 据, 则执行步骤 S2015, 否则执行步骤 S2016 ; S2015 : 读取控制状态寄存器内的数据, 返回控制状态寄存器内的数据处理值, 完成 I/ O 口数据读取处理 ; S2016 : 返回 0, 完成 I/O 口数据读取处理 ; 所述的 I/O 口写处理步骤包括以下步骤 : S2021 : 获取 I/O 口写操作指令, 对 I/O 口所读取的数据进行判断 ; S2022 : 判断 I/O 口所读取的数据是否为 DMA 地址标志寄存器数据, 若为 DMA 地址标志 寄存器数据, 则执行步骤 S2023, 否则跳转至步骤 S2026 ; S202。
6、3 : 将读取到的 DMA 地址标志寄存器内的数据传输至真实数据卡设备 ; S2024 : 读取真实数据卡设备中的数据, 作为返回值写入虚拟机子模块中的 DMA 地址寄 存器内 ; S2025 : 完成 I/O 口写处理步骤 ; S2026 : 判断 I/O 口所读取的数据是否为 DMA 传输地址寄存器数据, 若为 DMA 传输地址 寄存器数据, 则执行步骤 S2027, 否则执行步骤 S2028 ; S2027 : 将读取到的数据写入指定的 DMA 传输地址寄存器, 完成 I/O 口写处理 ; S2028 : 判断 I/O 口所读取到的数据是否为控制状态寄存器数据, 若为控制状态寄存器 数据。
7、, 则执行步骤 S2029, 否则执行步骤 S2030 ; S2029 : 将控制状态寄存器中的指定位和虚拟子数据卡的中断标志清零, 完成 I/O 口写 处理 ; S2030 : 不响应操作, 完成 I/O 口写处理。 2. 根据权利要求 1 所述的一种基于设备模拟的数据卡虚拟化实现方法, 其特征在于 : 它还包括一个设备迁入步骤和设备迁出步骤 , 所述的设备迁入步骤包括以下步骤 : S3011 : 读取数据, 将 DMA 地址寄存器和控制状态寄存器中的数据进行恢复 ; 权 利 要 求 书 CN 103645936 A 2 2/2 页 3 S3012 : 读取数据, 恢复虚拟子系统相关的通信会。
8、话上下文环境 ; S3013 : 完成设备迁入 ; 所述的设备迁出步骤包括以下步骤 : S3021 : 保存 DMA 地址寄存器和控制状态寄存器中的数据信息 ; S3022 : 获取虚拟子系统相关的通信会话的上下文环境, 并保存 ; S3023 : 完成设备迁出。 权 利 要 求 书 CN 103645936 A 3 1/4 页 4 一种基于设备模拟的数据卡虚拟化实现方法 技术领域 0001 本发明涉及一种基于设备模拟的数据卡虚拟化实现方法。 背景技术 0002 虚拟化, 是指计算元件在虚拟的基础上而不是真实的基础上运行, 是一个为了简 化管理, 优化资源的解决方案, 通过虚拟话技术可以扩大硬。
9、件的容量, 简化软件的重新配置 过程, 允许一个平台同时运行多个操作系统, 并且应用程序都可以在相互独立的空间内运 行而互不影响, 从而显著提高计算机的工作效率。 0003 在计算机虚拟化中, 虚拟机管理器 (VMM)模拟底层硬件, 为虚拟机子系统 (Guest OS)提供访问虚拟设备的接口。VMM 基本可以分为两种工作模式 : 完全虚拟化 (Fullvirtualization) 和半虚拟化 (Paravirtualization) 。在完全虚拟化中, 物理设备在 虚拟机子系统之间共享使用, 子系统的 I/O 访问被 VMM 捕获, 由设备模型来进行模拟。完全 虚拟化技术中, VMM 提供了。
10、对子系统 I/O 操作的捕获支持。对于 I/O 内存映射, VMM 一般通 过页面失效的方式进行捕获 ; 然后, 这些 I/O 操作通过设备模拟模型模块进行解析处理 ; 最 后, 设备模拟模型模块通过本地设备驱动操作真实的硬件设备。现有的设备虚拟化一般需 要硬件专门支持, 这将使数据卡的设计复杂 ; 硬件虚拟化能提供的虚拟数据卡数目受硬件 资源限制。 发明内容 0004 本发明的目的在于克服现有技术的不足, 提供一种不需要对硬件进行专门设计、 可在虚拟子模块中提供虚拟的子数据卡、 各子数据卡之间相互独立, 互不干扰、 且具备迁移 功能的基于设备模拟的数据卡虚拟化实现方法。 0005 本发明的目。
11、的是通过以下技术方案来实现的 : 一种基于设备模拟的数据卡虚拟化 实现方法, 它包括一个设备初始化步骤和一个 I/O 口读写处理步骤, 所述的设备初始化步 骤包括以下步骤 : S101 : 分配模拟设备资源配置对象 ; S102 : 将虚拟子数据卡信息注册到虚拟机子模块 ; S103 : 根据初始化指定的数据卡类型生成相应的设备节点名 ; S104 : 对 I/O 口读写操作处理函数进行注册 ; S105 : 虚拟子数据卡的 I/O 口读写范围的申请 ; S106 : 结束初始化设置 ; 所述的 I/O 口读写处理步骤包括 I/O 口读处理步骤和 I/O 口写处理步骤, 所述的 I/O 口读处。
12、理步骤包括以下步骤 : S2011 : 获取 I/O 口读操作指令, 对 I/O 口所读取的数据进行判断 ; S2012 : 判断 I/O 口读取的数据是否为 DMA 传输地址寄存器数据, 若为 DMA 传输地址寄 存器数据, 则执行步骤 S2013, 否则执行步骤 S2014 ; 说 明 书 CN 103645936 A 4 2/4 页 5 S2013 : 读取 DMA 传输地址寄存器内的数据, 并返回 DMA 传输地址寄存器内的数据处理 值, 完成 I/O 口数据读取处理 ; S2014 : 判断 I/O 口读取的数据是否为控制状态寄存器数据, 若为控制状态寄存器数 据, 则执行步骤 S2。
13、015, 否则执行步骤 S2016 ; S2015 : 读取控制状态寄存器内的数据, 返回控制状态寄存器内的数据处理值, 完成 I/ O 口数据读取处理 ; S2016 : 返回 0, 完成 I/O 口数据读取处理 ; 所述的 I/O 口写处理步骤包括以下步骤 : S2021 : 获取 I/O 口写操作指令, 对 I/O 口所读取的数据进行判断 ; S2022 : 判断 I/O 口所读取的数据是否为 DMA 地址标志寄存器数据, 若为 DMA 地址标志 寄存器数据, 则执行步骤 S2023, 否则跳转至步骤 S2026 ; S2023 : 将读取到的 DMA 地址标志寄存器内的数据传输至真实数。
14、据卡设备 ; S2024 : 读取真实数据卡设备中的数据, 作为返回值写入虚拟机子模块中的 DMA 地址寄 存器内 ; S2025 : 完成 I/O 口写处理步骤 ; S2026 : 判断 I/O 口所读取的数据是否为 DMA 传输地址寄存器数据, 若为 DMA 传输地址 寄存器数据, 则执行步骤 S2027, 否则执行步骤 S2028 ; S2027 : 将读取到的数据写入指定的 DMA 传输地址寄存器, 完成 I/O 口写处理 ; S2028 : 判断 I/O 口所读取到的数据是否为控制状态寄存器数据, 若为控制状态寄存器 数据, 则执行步骤 S2029, 否则执行步骤 S2030 ; S。
15、2029 : 将控制状态寄存器中的指定位和虚拟子数据卡的中断标志清零, 完成 I/O 口写 处理 ; S2030 : 不响应操作, 完成 I/O 口写处理。 0006 所述的一种基于设备模拟的数据卡虚拟化实现方法, 它还包括一个设备迁入步骤 和设备迁出步骤 , 所述的设备迁入步骤包括以下步骤 : S3011 : 读取数据, 将 DMA 地址寄存器和控制状态寄存器中的数据进行恢复 ; S3012 : 读取数据, 恢复虚拟子系统相关的通信会话上下文环境 ; S3013 : 完成设备迁入 ; 所述的设备迁出步骤包括以下步骤 : S3021 : 保存 DMA 地址寄存器和控制状态寄存器中的数据信息 ;。
16、 S3022 : 获取虚拟子系统相关的通信会话的上下文环境, 并保存 ; S3023 : 完成设备迁出。 0007 本发明的有益效果是 : 不需要对进行专门设计, 从而提高了数据卡虚拟化的使用 范围 ; 能够设置多个子数据卡, 且各子数据卡之间相互独立, 互补干扰 ; 且具有设备迁移功 能。 附图说明 0008 图 1 为本发明的系统概略框图 ; 图 2 为本发明的设备初始化流程图 ; 说 明 书 CN 103645936 A 5 3/4 页 6 图 3 为本发明的 I/O 口读处理流程图 ; 图 4 为本发明的 I/O 口写处理流程图 ; 图 5 为本发明的设备迁入流程图 ; 图 6 为本发。
17、明的设备迁出流程图。 具体实施方式 0009 下面结合附图进一步详细描述本发明的技术方案, 但本发明的保护范围不局限于 以下所述。 0010 本发明的系统概略框图如图 1 所示, 它包括虚拟机子模块、 数据卡虚拟化模块、 数 据卡驱动模块和数据卡设备, 数据卡虚拟化模块包括设备模拟模型单元、 资源管理单元和 迁移管理单元, 设备模拟模型单元分别与资源管理单元、 数据卡驱动模块和虚拟机子模块 相连, 资源管理单元和迁移管理单元相连 ; 所述的数字卡设备包括迁移支持模块, 迁移支持 模块和迁移管理单元相连, 迁移管理单元还和数据卡驱动模块相连。 0011 在图 1 中, 设备模拟模型单元用于产生虚。
18、拟子数据卡的对象实例, 并初始化其配 置空间参数, 然后将对象实例注册到虚拟机子模块的PCI总线 (类似于插入PCI加密卡的动 作) , 最后将 I/O 读写的处理方法注册到 VMM ; 资源管理单元用于保存虚拟子加密卡的设备 信息、 控制状态寄存器以及传输地址 ; 数据卡驱动模块用于处理其它寄存器的访问, 并将处 理结果传送至数据卡设备 ; 迁移管理单元用于响应VMM的迁移命令, 它在迁出/迁入过程中 将访问资源管理单元, 以及通过数据卡驱动模块访问数据卡设备的迁移支持功能 ; 迁移支 持模块用于响应迁移管理单元的迁移命令, 导入 / 导出数据卡设备中虚拟子数据卡所涉及 的通信会话的上下文环。
19、境。 0012 所述的控制状态寄存器用于模拟虚拟子数据卡的中断控制状态, 它以二进制位表 示中断来源, 由设备模拟模型单元根据设备响应进行置位, 并由虚拟子模块通过 I/O 请求 清零 ; 所述的传输地址用于保存虚拟子数据卡的虚拟子模块系统中分配得到 DMA 传输地 址, 其值由虚拟子模块通过I/O请求写入, 设备模拟模型单元通过DMA传输地址与虚拟子系 统进行数据交互 ; 所述的通信会话的上下文环境包括通信会话的登录状态、 通信会话使用 的数据资源, 如 : 工作模式、 密钥等。 0013 如图2、 3、 4、 5和6所示, 一种基于设备模拟的数据卡虚拟化实现方法, 它包括一个 设备初始化步。
20、骤和一个 I/O 口读写处理步骤, 所述的设备初始化步骤包括以下步骤 : S101 : 分配模拟设备资源配置对象 ; S102 : 将虚拟子数据卡信息注册到虚拟机子模块 ; S103 : 根据初始化指定的数据卡类型生成相应的设备节点名 ; S104 : 对 I/O 口读写操作处理函数进行注册 ; S105 : 虚拟子数据卡的 I/O 口读写范围的申请 ; S106 : 结束初始化设置 ; 所述的 I/O 口读写处理步骤包括 I/O 口读处理步骤和 I/O 口写处理步骤, 所述的 I/O 口读处理步骤包括以下步骤 : S2011 : 获取 I/O 口读操作指令, 对 I/O 口所读取的数据进行判。
21、断 ; S2012 : 判断 I/O 口读取的数据是否为 DMA 传输地址寄存器数据, 若为 DMA 传输地址寄 说 明 书 CN 103645936 A 6 4/4 页 7 存器数据, 则执行步骤 S2013, 否则执行步骤 S2014 ; S2013 : 读取 DMA 传输地址寄存器内的数据, 并返回 DMA 传输地址寄存器内的数据处理 值, 完成 I/O 口数据读取处理 ; S2014 : 判断 I/O 口读取的数据是否为控制状态寄存器数据, 若为控制状态寄存器数 据, 则执行步骤 S2015, 否则执行步骤 S2016 ; S2015 : 读取控制状态寄存器内的数据, 返回控制状态寄存。
22、器内的数据处理值, 完成 I/ O 口数据读取处理 ; S2016 : 返回 0, 完成 I/O 口数据读取处理 ; 所述的 I/O 口写处理步骤包括以下步骤 : S2021 : 获取 I/O 口写操作指令, 对 I/O 口所读取的数据进行判断 ; S2022 : 判断 I/O 口所读取的数据是否为 DMA 地址标志寄存器数据, 若为 DMA 地址标志 寄存器数据, 则执行步骤 S2023, 否则跳转至步骤 S2026 ; S2023 : 将读取到的 DMA 地址标志寄存器内的数据传输至真实数据卡设备 ; S2024 : 读取真实数据卡设备中的数据, 作为返回值写入虚拟机子模块中的 DMA 地。
23、址寄 存器内 ; S2025 : 完成 I/O 口写处理步骤 ; S2026 : 判断 I/O 口所读取的数据是否为 DMA 传输地址寄存器数据, 若为 DMA 传输地址 寄存器数据, 则执行步骤 S2027, 否则执行步骤 S2028 ; S2027 : 将读取到的数据写入指定的 DMA 传输地址寄存器, 完成 I/O 口写处理 ; S2028 : 判断 I/O 口所读取到的数据是否为控制状态寄存器数据, 若为控制状态寄存器 数据, 则执行步骤 S2029, 否则执行步骤 S2030 ; S2029 : 将控制状态寄存器中的指定位和虚拟子数据卡的中断标志清零, 完成 I/O 口写 处理 ; 。
24、S2030 : 不响应操作, 完成 I/O 口写处理。 0014 所述的一种基于设备模拟的数据卡虚拟化实现方法, 它还包括一个设备迁入步骤 和设备迁出步骤 , 所述的设备迁入步骤包括以下步骤 : S3011 : 读取数据, 将 DMA 地址寄存器和控制状态寄存器中的数据进行恢复 ; S3012 : 读取数据, 恢复虚拟子系统相关的通信会话上下文环境 ; S3013 : 完成设备迁入 ; 所述的设备迁出步骤包括以下步骤 : S3021 : 保存 DMA 地址寄存器和控制状态寄存器中的数据信息 ; S3022 : 获取虚拟子系统相关的通信会话的上下文环境, 并保存 ; S3023 : 完成设备迁出。 0015 该方法可以使数据卡设备在虚拟机子模块中呈现出至少一个虚拟子数据卡, 供虚 拟机子模块使用。 说 明 书 CN 103645936 A 7 1/4 页 8 图 1 说 明 书 附 图 CN 103645936 A 8 2/4 页 9 图 2 说 明 书 附 图 CN 103645936 A 9 3/4 页 10 图 3 说 明 书 附 图 CN 103645936 A 10 4/4 页 11 图 4 图 5 图 6 说 明 书 附 图 CN 103645936 A 11 。