多操作系统中网卡之间的切换方法和系统转让专利

申请号 : CN201410137125.9

文献号 : CN104978174B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陆钢邬小龙高云伟詹剑锋

申请人 : 华为技术有限公司中国科学院计算技术研究所

摘要 :

本发明的实施例公开了一种多操作系统中源网卡与目标网卡的切换方法和系统。该方法包括:所述多操作系统中负载操作系统的双模式网卡驱动根据所述多操作系统中管理操作系统发送的网卡切换信号将所述目标网卡进行初始化,使所述目标网卡能够使用所述源网卡占用的共享缓冲区;所述目标网卡初始化完成后,所述双模式网卡驱动根据所接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动。该系统包括:双模式网卡驱动,用于根据所述多操作系统中管理操作系统发送的网卡切换信号将所述目标网卡进行初始化,使所述目标网卡能够使用所述源网卡当前占用的共享缓冲区,并在初始化完成后根据所述接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动;共享缓冲区,用于对所述目标网卡和所述源网卡所传输数据进行缓冲。本发明的实施例能够有效的实现在多操作系统中源网卡向目的网卡稳定高效地切换。

权利要求 :

1.一种多操作系统中源网卡与目标网卡的切换方法,其特征在于,包括:所述多操作系统中负载操作系统的双模式网卡驱动根据所述多操作系统中管理操作系统发送的网卡切换信号将所述目标网卡进行初始化,使所述目标网卡能够使用所述源网卡占用的共享缓冲区;

所述目标网卡初始化完成后,所述双模式网卡驱动根据所接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动。

2.根据权利要求1所述的方法,当该方法用于物理网卡和虚拟网卡间的切换时,其特征在于,所述双模式网卡驱动根据所述多操作系统中管理操作系统发送的网卡切换信号将所述目标网卡初始化,包括:所述双模式网卡驱动对所述网卡切换信号进行解析,确定所述源网卡的类型和所述目标网卡的类型;

当确定所述源网卡的类型为物理网卡且所述目标网卡的类型为虚拟网卡时,所述双模式网卡驱动将所述虚拟网卡初始化,使所述虚拟网卡能够使用所述物理网卡当前占用的共享缓冲区;

当确定所述源网卡的类型为虚拟网卡且所述目标网卡的类型为物理网卡时,所述双模式网卡驱动将所述物理网卡初始化,使所述物理网卡能够使用所述虚拟网卡当前占用的共享缓冲区。

3.根据权利要求2所述的方法,其特征在于,所述双模式网卡驱动将所述虚拟网卡初始化,包括:所述双模式网卡驱动向所述管理操作系统发送创建虚拟网卡驱动后端信号;

待虚拟网卡驱动后端创建完毕后,所述双模式网卡驱动向所述虚拟网卡驱动后端发送共享缓冲区的地址信息,使所述虚拟网卡驱动后端能够根据所述地址信息调用物理网卡所占用的共享缓冲区。

4.根据权利要求2所述的方法,其特征在于,所述双模式网卡驱动将所述物理网卡初始化,包括:双模式网卡驱动根据所述共享缓冲区的地址信息设置待切换物理网卡的直接内存访问控制器,使待切换物理网卡的直接内存访问控制器能够调用虚拟网卡所占用的共享缓冲区。

5.根据权利要求2至4任一项所述的方法,其特征在于,所述双模式网卡驱动根据所接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动,包括:当确定所述源网卡的类型为物理网卡且所述目标网卡的类型为虚拟网卡时,所述双模式网卡驱动关闭物理网卡驱动并开启虚拟网卡驱动前端和后端的运行;

当确定所述源网卡的类型为虚拟网卡且所述目标网卡的类型为物理网卡时,双模式网卡驱动关闭虚拟网卡驱动并开启物理网卡驱动。

6.一种应用于多操作系统中源网卡与目标网卡的切换系统,其特征在于,包括:双模式网卡驱动,用于根据所述多操作系统中管理操作系统发送的网卡切换信号将所述目标网卡进行初始化,使所述目标网卡能够使用所述源网卡当前占用的共享缓冲区,并在初始化完成后根据接收的所述网卡切换信号停止源网卡驱动并启动目标网卡驱动;

共享缓冲区,用于对所述目标网卡和所述源网卡所传输数据进行缓冲。

7.根据权利要求6所述的系统,当该系统仅适用于物理网卡和虚拟网卡间的切换时,其特征在于,所述双模式网卡驱动,包括:解析模块,用于对所述网卡切换信号进行解析,确定所述源网卡的类型信息和所述目标网卡的类型;

初始化模块,用于:

当所述解析模块确定所述源网卡的类型为物理网卡且所述目标网卡的类型为虚拟网卡时,将所述虚拟网卡进行初始化,使所述虚拟网卡能够使用所述物理网卡当前占用的共享缓冲区;

当所述解析模块确定所述源网卡的类型为虚拟网卡且所述目标网卡的类型为物理网卡时,将物理网卡初始化,使所述物理网卡能够使用所述虚拟网卡当前占用的共享缓冲区。

8.根据权利要求7所述的系统,其特征在于,所述初始化模块,包括:虚拟网卡初始化模块,用于向所述管理操作系统创建的虚拟网卡驱动后端发送共享缓冲区的地址信息,使所述虚拟网卡驱动后端能够根据所述地址信息调用物理网卡所占用的共享缓冲区;

物理网卡初始化模块,用于根据所述共享缓冲区的地址信息设置待切换物理网卡的直接内存访问控制器,使待切换物理网卡的直接内存访问控制器能够调用虚拟网卡所占用的共享缓冲区。

9.根据权利要求7或8所述的系统,其特征在于,所述双模式网卡驱动中还包括:执行模块,用于:

当所述解析模块确定所述源网卡的类型为物理网卡且所述目标网卡的类型为虚拟网卡且所述初始化模块完成初始化后,关闭物理网卡驱动并启动虚拟网卡驱动前端和后端;

当所述解析模块确定所述源网卡的类型为虚拟网卡且所述目标网卡的类型为物理网卡且所述初始化模块完成初始化后,关闭虚拟网卡驱动前端和后端并开启物理网卡驱动。

说明书 :

多操作系统中网卡之间的切换方法和系统

技术领域

[0001] 本发明的实施例涉及计算机操作系统领域,尤其涉及一种多操作系统中网卡之间的切换方法和系统。

背景技术

[0002] 随着硬件的计算能力和存储能力的逐年提高,在现有的计算机操作系统领域兴起了利用多内核多操作系统调用系统的硬件资源技术,该技术能够更好的保证操作系统高效利用硬件资源。这种多内核多操作系统经常出现在SMP(Symmetric Multi-Processing,对称多处理)和众核(Many Core)平台中。
[0003] 在多内核多操作系统中,可以通过对多个物理网卡的绑定并向外提供统一的IP地址,实现多物理网卡共用,提高了吞吐量和网络可使用率。同时,对于单个操作系统内核,可以同时在其内部设置物理网卡和虚拟网卡,当一个失效时,另一个接管,提高信息传输的稳定性。
[0004] 为了实现这样的技术效果,这一设计的关键技术就是操作系统需要根据操作系统对数据处理的不同的需求实现在单个操作系统中物理网卡和虚拟网卡的动态切换。
[0005] 现有技术提出了分离网卡驱动的模式:物理网卡驱动和虚拟网卡驱动分别使用不同的数据结构,全局变量和收发函数定义不同的网卡驱动和物理内存缓冲区。当操作系统通过其管理的物理网卡接收或发送数据时,数据通过物理内存缓冲区和物理网卡的直接内存访问控制寄存器(Direct Memory Access,简称“DMA寄存器”)在物理网卡驱动的控制下进行数据传输;当操作系统通过其管理的虚拟网卡接收或发送数据时,数据通过虚拟内存缓冲区和物理网卡的直接内存访问DMA寄存器在虚拟网卡驱动前后端的控制下进行数据传输。
[0006] 目前,这种技术方案虽然可以保证操作系统在物理网卡模式和虚拟网卡模式时数据的传输,但是在物理网卡和虚拟网卡的切换中,现有技术存在一定的缺陷。首先,在物理网卡与虚拟网卡的切换过程中,网卡驱动要重新建立和目标网卡的连接,之前源网卡连接会失效而造成数据丢失。其次,切换后的目标网卡需要预热和额外的资源配置工作,会造成信息传输的暂时性中断。现有技术的这两个缺点会直接影响到网卡切换的速度和效率,影响技术方案的实现效果。

发明内容

[0007] 本发明的实施例的实施例提供了一种多操作系统中网卡之间的切换方法和系统,能够有效的实现源网卡向目的网卡高速高效的切换。
[0008] 本发明的一方面提供了一种多操作系统中源网卡与目标网卡的切换方法,该方法包括:所述多操作系统中负载操作系统的双模式网卡驱动根据所述多操作系统中管理操作系统发送的网卡切换信号将所述目标网卡进行初始化,使所述目标网卡能够使用所述源网卡占用的共享缓冲区;所述目标网卡初始化完成后,所述双模式网卡驱动根据所接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动。
[0009] 本发明进一步揭示了,当该方法用于物理网卡和虚拟网卡间的切换时,所述双模式网卡驱动根据所述多操作系统中管理操作系统发送的网卡切换信号将所述目标网卡初始化,包括:所述双模式网卡驱动对所述网卡切换信号进行解析,确定所述源网卡的类型和所述目标网卡的类型;当确定所述源网卡的类型为物理网卡且所述目标网卡的类型为虚拟网卡时,所述双模式网卡驱动将所述虚拟网卡初始化,使所述虚拟网卡能够使用所述物理网卡当前占用的共享缓冲区;当确定所述源网卡的类型为虚拟网卡且所述目标网卡的类型为物理网卡时,所述双模式网卡驱动将所述物理网卡初始化,使所述物理网卡能够使用所述虚拟网卡当前占用的共享缓冲区。
[0010] 本发明进一步揭示了,所述双模式网卡驱动将所述虚拟网卡初始化,包括:所述双模式网卡驱动向所述管理操作系统发送创建虚拟网卡驱动后端信号;待虚拟网卡驱动后端创建完毕后,所述双模式网卡驱动向所述虚拟网卡驱动后端发送共享缓冲区的地址信息,使所述虚拟网卡驱动后端能够根据所述地址信息调用物理网卡所占用的共享缓冲区。
[0011] 本发明进一步揭示了,所述双模式网卡驱动将所述物理网卡初始化,包括:双模式网卡驱动根据所述共享缓冲区的地址信息设置待切换物理网卡的直接内存访问控制器,使待切换物理网卡的直接内存访问控制器能够调用虚拟网卡所占用的共享缓冲区。
[0012] 本发明进一步揭示了,当该方法用于物理网卡和虚拟网卡间的切换时,所述双模式网卡驱动根据所接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动,包括:当确定所述源网卡的类型为物理网卡且所述目标网卡的类型为虚拟网卡时,所述双模式网卡驱动关闭物理网卡驱动并开启虚拟网卡驱动前端和后端的运行;当确定所述源网卡的类型为虚拟网卡且所述目标网卡的类型为物理网卡时,双模式网卡驱动关闭虚拟网卡驱动并开启物理网卡驱动。
[0013] 本发明的另一方面提供了一种应用于多操作系统中源网卡与目标网卡的切换系统,该系统包括:双模式网卡驱动,用于根据所述多操作系统中管理操作系统发送的网卡切换信号将所述目标网卡进行初始化,使所述目标网卡能够使用所述源网卡当前占用的共享缓冲区,并在初始化完成后根据所述接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动;共享缓冲区,用于对所述目标网卡和所述源网卡所传输数据进行缓冲。
[0014] 本发明进一步揭示了,当该系统仅适用于物理网卡和虚拟网卡间的切换时,其特征在于,所述双模式网卡驱动,包括:解析模块,用于对所述网卡切换信号进行解析,确定所述源网卡的类型信息和所述目标网卡的类型。初始化模块,用于:当所述解析模块确定所述源网卡的类型为物理网卡且所述目标网卡的类型为虚拟网卡时,将所述虚拟网卡进行初始化,使所述虚拟网卡能够使用所述物理网卡当前占用的共享缓冲区;当所述解析模块确定所述源网卡的类型为虚拟网卡且所述目标网卡的类型为物理网卡时,将物理网卡初始化,使所述物理网卡能够使用所述虚拟网卡当前占用的共享缓冲区。
[0015] 本发明进一步揭示了,所述初始化模块,包括:虚拟网卡初始化模块,用于向所述管理操作系统创建的虚拟网卡驱动后端发送共享缓冲区的地址信息,使所述虚拟网卡驱动后端能够根据所述地址信息调用物理网卡所占用的共享缓冲区;物理网卡初始化模块,用于根据所述共享缓冲区的地址信息设置待切换物理网卡的直接内存访问控制器,使待切换物理网卡的直接内存访问控制器能够调用虚拟网卡所占用的共享缓冲区。
[0016] 本发明进一步揭示了,所述双模式网卡驱动中还包括:执行模块,用于:当所述解析模块确定所述源网卡的类型为物理网卡且所述目标网卡的类型为虚拟网卡且所述初始化模块完成初始化后,关闭物理网卡驱动并启动虚拟网卡驱动前端和后端;当所述解析模块确定所述源网卡的类型为虚拟网卡且所述目标网卡的类型为物理网卡且所述初始化模块完成初始化后,关闭虚拟网卡驱动前端和后端并开启物理网卡驱动。
[0017] 基于上述技术方案,本发明实施例的多操作系统中源网卡与目标网卡的切换方法和系统,通过向通过在网卡切换执行前,双模式网卡驱动根据网卡切换信号将所述目标网卡进行初始化,使所述目标网卡能够使用所述源网卡的共享缓冲区,从而能够有效地实现源网卡向目的网卡稳定高效的切换。

附图说明

[0018] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019] 图1是对一个典型的多内核多操作系统进行描述的示意性框图。
[0020] 图2是根据本发明实施例的多操作系统中源网卡与目标网卡的切换系统的示意性框图。
[0021] 图3是当相互切换的网卡为物理网卡和虚拟网卡时,双模式网卡驱动的示意性框图。
[0022] 图4是双模式网卡驱动中的初始化模块的解析模块和初始化模块示意性框图。
[0023] 图5是双模式网卡驱动中初始化模块的执行模块示意性框图。
[0024] 图6示出了根据本发明实施例的多操作系统中源网卡与目标网卡的切换方法的示意性流程图。
[0025] 图7示出了双模式网卡驱动根据网卡切换信号将目标网卡初始化的方法的示意性流程图。
[0026] 图8示出了双模式网卡驱动将虚拟网卡初始化的方法的示意性流程图。
[0027] 图9示出了双模式网卡驱动将物理网卡初始化的方法的示意性流程图。
[0028] 图10是当相互切换的网卡为物理网卡和虚拟网卡时,双模式网卡驱动根据所接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动的方法的示意性流程图。

具体实施方式

[0029] 在本方案的描述中,会涉及到一些计算机操作系统领域,特别是多操作系统领域和虚拟化领域的专业术语和技术,这些术语和技术虽然是本领域现有技术,但为了说明书读者的阅读之便,特在此对其中重要概念作一简述。
[0030] 首先,本发明的实施例所涉及的虚拟网卡驱动的前端和后端是在虚拟化领域中的技术概念。虚拟网卡驱动的前端其功能为模拟物理网卡的输入和输出,在本发明的实施例中虚拟网卡驱动的前端为负载操作系统提供类似于物理网卡驱动的服务。虚拟网卡驱动后端其功能为处理和分配虚拟网卡驱动前端传输的数据,在本发明的实施例的实施例中,虚拟网卡驱动后端与管理操作系统的网桥相连,从而保证前端所传输的数据最终通过网桥进行输入和输出。
[0031] 其次,本发明的实施例所涉及的这种多操作系统通常实现在SMP(Symmetric Multi-Processing,对称多处理)和众核(Many Core)平台中。通常情况下,这种多操作系统由一个管理操作系统和至少一个负载操作系统构成。下面将结合图1对一个典型的多操作系统进行描述的示意性框图。如图1所示,多内核多操作系统由一个管理操作系统100,负载操作系统200,物理缓冲区模块300和物理网卡模块400构成。
[0032] 管理操作系统100是对所管理的软件和硬件设备资源的分配、回收、虚拟化和协调等功能的通用操作系统。在运行的过程中,它是在系统硬件上第一个启动的操作系统。
[0033] 负载操作系统200是基于管理操作系统100上创建的定制的轻量级操作系统。负载操作系统在本发明实例中功能是根据管理操作系统发出管理控制信号对物理缓冲区模块300和物理网卡模块400进行管理和控制。在多内核多操作系统平台中,负载操作系统一般至少有一个。在本实例中,负载操作系统有N个。
[0034] 物理缓冲区模块300对网卡传输数据的缓冲。该模块向上连接负载操作系统200网卡驱动向下连接网卡模块400。
[0035] 网卡模块400所示为多内核多操作系统所管理的网卡的集合。在本发明实例中,网卡模块可以为多个物理网卡集合,也可以为多个虚拟网卡和物理网卡的集合。
[0036] 应注意,虚拟网卡与物理网卡间切换较物理网卡间的切换更为复杂,本领域技术人员在理解了虚拟网卡和物理网卡的切换后,在不做出创造性劳动的前提下,同样可以获得物理网卡间切换的方法和系统。因此,在本发明实例中,将重点介绍物理网卡与虚拟网卡间切换的系统和方法。
[0037] 应理解,多内核多操作系统在处理网络数据的优势是该系统可以根据网络数据量的大小灵活调整网卡模块400中工作网卡的数量和模式。当待处理网络数据量超过当前工作网卡的处理能力时,负载操作系统可以调用更多的闲置物理网卡进行高性能的网络传输和处理;当待处理网络数据量小于工作网卡的处理能力时,为了节约系统资源,负载操作系统释放物理网卡而通过虚拟网卡的方式传输数据。
[0038] 为了满足以上所述需求,对于单个负载操作系统而言,就必须具备高速高效地进行网卡切换的能力。但如背景技术介绍,现在的技术方案由于存在待调用网卡预热问题和数据丢失问题,导致目前的方案切换速度慢和切换效率低。本发明的实施例方案正是基于这样的技术背景和现实需求而提出的。
[0039] 以上是对网卡驱动前后端和多内核多操作系统这两个重要概念的介绍,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。在本实例中,仅示例管理操作系统管理控制第一负载操作系统进行网卡切换的系统和方法,应理解管理操作系统可以以类似的方式控制管理其他负载操作系统进行类似的网卡切换。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0040] 图2示出了根据本发明实施例的多操作系统中源网卡与目标网卡的切换系统的示意性框图,该系统包括:
[0041] 管理操作系统100,该系统包含一个管理操作系统资源管理模块110;
[0042] 管理操作系统资源管理模块110,该模块与负载操作系统的资源管理模块相连,用于接收和发送管理操作系统100与负载操作系统200间的信号。在本附图中,展示了管理操作系统资源管理模块100与第一负载操作系统资源管理模块212的连接状态;
[0043] 第一负载操作系统210,该系统包含了负载操作系统资源管理模块212和双模式网卡驱动211;
[0044] 负载操作系统资源管理模块212,该模块分别与管理操作系统资源管理模块110和双模式网卡驱动211相连,用于接收和发送这他们的输入和输出信号;
[0045] 双模式网卡驱动210,用于根据管理操作系统发送的网卡切换信号将图中的目标网卡420进行初始化,使目标网卡420能够使用图中源网卡当前用的共享缓冲区120。并在初始化完成后停止源网卡驱动并启动目标网卡驱动;
[0046] 物理缓冲区模块300,该模块包含多个共享缓冲区,用于对负载操作系统与网卡间传输数据的缓冲。在本附图中,展示了第一负载操作系统210所分配和管理的共享缓冲区120;
[0047] 共享缓冲区120,用于对目标网卡420和源网卡410所传输数据进行缓冲。应注意,该共享缓冲区120,并不是同时对目标网卡420和源网卡410所传输数据进行缓冲。具体而言,在双模式网卡驱动110初始化开始前,共享缓冲区120与源网卡410相连,对源网卡410所传输数据进行缓冲;该初始化完成后,共享缓冲区120仍与源网卡410相连,对源网卡410所传输数据进行缓冲。目标网卡420在初始化完成后与共享缓冲区120仅建立初始化的连接,并没有对共享缓冲区120执行读写;在初始化完成后且双模式网卡驱动211停止源网卡驱动并启动目标网卡驱动后,源网卡410停止对共享缓冲区120读写同时目标网卡420开启对共享缓冲区120读写。
[0048] 以上是对图1中各组成模块功能和连接关系的介绍,下面将结合源网卡410到目标网卡420的切换过程对双模式网卡驱动211和共享缓冲区120做进一步详细介绍。
[0049] 应理解,双模式网卡驱动211在接收到网卡切换信号后并不立即进行源网卡410向目标网卡420的切换,而是在保证源网卡410继续工作的同时对目标网卡420进行初始化。这样一方面用来保证目标网卡420在启动前进行必要的预热,另一方面用来配置目标网卡420参数,保证目标网卡420在启动后能直接使用源网卡410对应的物理内存缓冲区,即本发明的实施例所示的共享缓冲区120。当这种初始化(即目标网卡预热和目标网卡参数配置)完成后,双模式网卡驱动211就可以在停掉源网卡410的同时立即开启目标网卡420的运行。可见,这个双模式网卡驱动211和共享缓冲区120的设计可以有效的保证源网卡向目标网卡切换前必要的初始化过程,从而提高网卡间切换的速度和效率。
[0050] 还应理解,共享缓冲区120是多操作系统所管理的一段物理内存缓冲区,这段缓冲区在切换前后能被源网卡410和目标网卡420分别调用,使双模式网卡驱动211能在切换前后读取到同一段内存数据,以使所传输数据不因网卡切换而丢失。要达到所述功能效果,可以通过双模式网卡驱动211在切换前后使用同一全局变量的方式来实现。例如,当共享缓冲区的接收和发送数据结构采用两个环形链表形式,那么,双模式网卡驱动211需要在切换前后均使用如下8个全局变量:
[0051] static unit8_t rx_buf[RX_BUF_SIZE+1500];
[0052] static unit8_t tx_buf[4][TX_BUF_SIZE]_attribute_((aligned(4)));
[0053] static unit32_t_cur_tx;
[0054] static unit32_t_cur_rx;
[0055] static unit32_t tx_start;
[0056] static unit32_t tx_end;
[0057] static unit32_t rx_start;
[0058] static unit32_t rx_end。
[0059] 其中,static unit8_t rx_buf[RX_BUF_SIZE+1500]和static unit8_t tx_buf[4][TX_BUF_SIZE]_attribute_((aligned(4)))用于分别表示接收缓冲区和发送缓冲区在共享缓冲区120内的实际物理地址。static unit32_t_cur_tx和static unit32_t_cur_rx是指向接收和发送环形队列的当前读取位置的指针,随着数据读取而动态移动,用于表示接收缓冲区和发送缓冲区数据读取的位置。static unit32_t tx_start、static unit32_t tx_end、static unit32_t rx_start和static unit32_t rx_end分别表示接收和发送缓冲区的起始地址和结束地址。以上8个全局变量可以表示出在环形链表形式下共享缓冲区120的数据结构。在网卡切换中,将这8个全局变量从源网卡驱动传递给目标网卡驱动,目标网卡驱动就可以利用这些变量实现对源网卡物理内存的寻址和调用。应理解,共享缓冲区数据结构的实现方式有多种,对数据的起始地址、结束地址和当前位置的定义方式也有多种,在实现中保证双模式网卡驱动211使用相同全局变量对共享缓冲区数据结构进行描述即可。
[0060] 在图2所示实施例中,目标网卡和源网卡可以分别为物理网卡或虚拟网卡,也可以均为物理网卡或均为虚拟网卡。在现实应用中,物理网卡和虚拟网卡相互切换的场景多需求大,因此,下面将在目标网卡和源网卡分别为物理网卡或虚拟网卡的情况下,对双模式网卡驱动211的组成和连接方式进行进一步的说明。
[0061] 如图3所示,当相互切换的网卡为物理网卡和虚拟网卡时,双模式网卡驱动211包括:
[0062] 解析模块2111,用于对接收的网卡切换信号进行解析,确定源网卡的类型信息和目标网卡的类型。
[0063] 初始化模块2112,用于:
[0064] 当所述解析模块2111确定所述源网卡的类型为物理网卡401且所述目标网卡的类型为虚拟网卡402时,将虚拟网卡402进行初始化;
[0065] 当所述解析模块2111确定所述源网卡的类型为虚拟网卡402且所述目标网卡的类型为物理网卡401时,将物理网卡401初始化。
[0066] 应理解,解析模块2111接收来自负载操作系统资源管理模块212的网卡切换信号,并通过解析模块的逻辑函数进行判断:如果切换信息为物理网卡401切换为虚拟网卡402,则该模块向初始化模块2112发出对虚拟网卡402进行初始化的信号;如果切换信号为虚拟网卡402切换为物理网卡401,则该模块向初始化模块2112发出对物理网卡401进行初始化的信号。还应理解,解析模块2111可以接收来自于负载操作系统资源管理模块212发送的切换信号,也可以接收来自于管理操作系统资源管理模块110发送的切换信号。
[0067] 举例,管理操作系统的资源管理模块110向负载操作系统发送切换信号的方法可以通过现有的智能外围接口(Intelligent Peripheral Interface,简称“IPI”)实现,也可以通过其他操作系统间的通讯策略完成。在解析模块2111接收到切换信息后,解析模块2111可以通过逻辑判断函数实现对切换信息的判断,如使用C语言中的if()函数,网卡切换模式可以采用整型变量int mode表示:int mode=1表示虚拟网卡向物理网卡的切换;int mode=0表示物理网卡向虚拟网卡的切换。当if()语句判断所接收的信号为int mode=1时,则解析模块2111通知初始化模块2112对虚拟网卡402初始化;当if()语句判断所接收的信号为int mode=0时,则解析模块2111通知初始化模块2112对物理网卡401初始化。
[0068] 还应理解,初始化模块2112,根据物理网卡401和虚拟网卡402的切换顺序不同,分别实现对虚拟网卡402的初始化和物理网卡401的初始化。这种初始化的构成方式有多种,下面将结合图3和图4对本发明实例的实现方式进行说明。
[0069] 如图4所示,图3中的初始化模块2112包括:
[0070] 虚拟网卡初始化模块21121,用于向管理操作系统100创建的虚拟网卡驱动后端130发送共享缓冲区120的地址信息,使所述虚拟网卡驱动后端130能够根据所述地址信息调用物理网卡401所占用的共享缓冲区120;
[0071] 物理网卡初始化模块21122,用于根据所述共享缓冲区120的地址信息设置待切换物理网卡401的DMA控制器,使待切换物理网卡401的DMA控制器能够调用虚拟网卡402所占用的共享缓冲区120。
[0072] 下面将结合图3和图4对虚拟网卡初始化模块21121工作方式和连接方式进行详细说明。
[0073] 首先,虚拟网卡初始化模块21121,通过负载操作系统资源管理模块212向管理操作系统资源管理模块110询问管理操作系统100是否完成虚拟网卡驱动后端130的创建工作。虚拟化驱动后端130的创建过程为:管理操作系统100在决定进行物理网卡401向虚拟网卡402切换后,在其内部设置虚拟网卡驱动后端130,并使其与管理操作系统的网桥120相连。
[0074] 其次,如果管理操作系统资源管理模块110向虚拟网卡初始化模块21121反馈虚拟网卡驱动后端130创建完成,虚拟网卡初始化模块21121向虚拟网卡驱动后端130发送共享缓冲区的地址。应注意,虚拟网卡初始化模块21121和虚拟网卡驱动后端130的连接方式是:虚拟网卡初始化模块21121与负载操作系统资源管理模块212之间通过内部通信机制连接;
管理操作系统资源管理模块110与虚拟网卡驱动后端130之间也通过内部通信机制连接;管理操作系统资源管理模块110和负载操作系统资源管理模块212可以通过现有的IPI技术实现。总之,在本发明实例中,模块间通信方式均是现有技术,在本实例中不再作详细的规定和说明。
[0075] 最后,虚拟网卡驱动后端130在接收到共享缓冲区120的地址信息后,将映射共享缓冲区120的页表,以便虚拟网卡402在启动后能使处理器直接通过虚拟网卡驱动后端130调用和读取物理网卡401所占用的共享缓冲区120信息。
[0076] 举例,虚拟网卡初始化模块21121向虚拟网卡驱动后端130发送共享缓冲区的地址,根据共享缓冲区的数据结构不同,所传输的地址变量也不同。。例如,当共享缓冲区120的接收和发送数据结构采用两个环形链表形式,那么共享缓冲区的地址可以用8个全局变量来表示。所述这8个全局变量已经在上文图2对共享缓冲区120的描述中进行了具体介绍,此处不再赘述。虚拟网卡驱动后端130在接收到这些地址信息后,可以通过内存映射函数如Win32环境下的CreateFileMapping函数,将地址信息映射到对应的物理内存地址上。这样,虚拟网卡在正式启动后,处理器就可以直接通过虚拟网卡驱动后端130调用和读取到物理网卡所占用的共享缓冲区信息。
[0077] 总之,本发明的实施例通过建立虚拟网卡的后端并映射共享缓冲区的地址使虚拟网卡在启动后能够直接读取共享缓冲区内的信息,从而保证了共享内存的数据不会因为物理网卡到虚拟网卡的切换而丢失。
[0078] 应注意,虚拟网卡驱动后端130映射共享缓冲区120的页表完成后,所述双模式网卡驱动110中的初始化模块220就结束了虚拟网卡初始化过程。应注意,虚拟网卡驱动后端130仅映射共享缓冲区页表而不应打开虚拟网卡驱动后端130的运行,以免管理操作系统的虚拟网卡驱动后端130和负载操作系统的物理网卡401同时对共享缓冲区120进行读取而造成共享缓冲区120内部数据的混乱。
[0079] 同样,下面将结合图3和图4对物理网卡初始化模块21122工作方式和连接方式进行详细说明。
[0080] 首先,物理网卡初始化模块21122向管理操作系统资源管理模块110询问待切换物理网卡401的配置信息,如物理网卡的媒体访问控制地址(MAC地址),接口参数等配置信息。
[0081] 其次,在接收到物理网卡401的配置信息后,物理网卡初始化模块21122在其内部启动与物理网卡配置信息相匹配的物理网卡初始化函数。应注意,与通常的物理网卡驱动启动物理网卡方式不同,该物理网卡初始化函数不是操作系统根据配置信息创建的,而是物理网卡初始化模块21122在本身已有的物理网卡初始化函数中根据物理网卡配置信息匹配选择的。
[0082] 最后,该初始化函数设置物理网卡中的DMA寄存器器,使该寄存器能够调用虚拟网卡402所占用的共享缓冲区120。具体而言,在这一步骤中,物理网卡初始化函数通过虚拟网卡驱动前端获得正在传输数据的共享缓冲区120地址。该地址根据共享缓冲区120的数据结构不同而不同,例如当共享缓冲区120的接收和发送数据结构采用两个环形链表形式,那么共享缓冲区的地址可以用8个全局变量来表示。所述这8个全局变量已经在上文图2对共享缓冲区120的描述中进行了具体介绍,此处不再赘述。物理网卡初始化函数在接收到这些地址信息后,设置DMA控制器的寄存器指向共享缓冲区的内存起始地址,之后再设置其它一些必要的工作参数。这样,物理卡在正式启动后,处理器就可以直接通过物理网卡驱动调用和读取到虚拟网卡所占用的共享缓冲区信息。
[0083] 总之,本发明的实施例通过物理网卡初始化模块21122选择相应的物理网卡初始化函数,并利用该函数建立物理网卡与共享内存的直接调用关系,使物理网卡401在启动后能够直接读取共享缓冲区120内的信息,保证了共享内存的数据不会因为虚拟网卡到物理网卡的切换而丢失。
[0084] 应注意,物理网卡的DMA寄存器指向双模式网卡使用的收发缓冲区的物理地址后,物理网卡初始化模块21122对物理网卡的初始化过程完毕。应注意,物理网卡的DMA寄存器指向共享缓冲区120的物理地址即可,而不应打开物理网卡驱动的运行,以免该物理网卡401和负载操作系统正在运行的虚拟网卡402同时对共享缓冲区120进行读取而造成共享缓冲区120内部数据的混乱。
[0085] 在解析模块210和初始化模块220完成对切换信号的解析和对源网卡和目标网卡的初始化后,源网卡继续工作的同时目标网卡已经指向了源网卡对应的物理内存缓冲区。如进一步实现源网卡到目标网卡的完整切换,则需要在双模式网卡驱动的初始化模块220完成工作后,停止源网卡驱动并启动目标网卡驱动。这种双模式网卡驱动停止源网卡驱动并启动目标网卡驱动的方式有多种,下面将结合图5对双模式网卡驱动110停止源网卡驱动并启动目标网卡驱动的实现进行说明。
[0086] 如图5所示,双模式网卡驱动211还包括:
[0087] 执行模块2113,用于:
[0088] 当所述解析模块210确定源网卡410的类型为物理网卡401且所述目标网卡420的类型为虚拟网卡402且所述初始化模块2112完成初始化后,关闭物理网卡驱动并启动虚拟网卡驱动前端和后端130;
[0089] 当所述解析模块210确定所述源网卡的类型为虚拟网卡402且所述目标网卡的类型为物理网卡401且所述初始化模块110完成初始化后,关闭虚拟网卡驱动前端和后端130并开启物理网卡驱动。
[0090] 应理解,解析模块2111在接收到初始化模块所发出的初始化完成信息后,执行模块2113将根据物理网卡和虚拟网卡切换顺序的不同而调用不同的执行函数以关闭源网卡并开启目标网卡。
[0091] 具体而言,所述执行模块一般包括控制函数和接收发操作函数组成。控制函数可以采用mod函数,该函数接收来自于初始化模块2112发送的整形变量int mode。在物理网卡切换为虚拟网卡的情况下,mod函数在接收到整形变量int mode后,停止虚拟网卡接收和发送操作函数(如shared_memory_rx,shared_memory_rx)并调用物理网卡接收和发送操作函数(如pnet_rx,pnet_tx);在虚拟网卡切换为物理网卡的情况下,mod函数停止物理网卡接收和发送操作函数(如pnet_rx,pnet_tx)并调用虚拟网卡接收和发送操作函数(如shared_memory_rx,shared_memory_rx)。双模式网卡执行模块2113利用mod函数对操作函数进行调用,控制相应物理网卡驱动和虚拟网卡驱动的开启和关闭。应注意,在虚拟网卡接收和发送操作函数控制虚拟网卡驱动中,该函数不仅要控制负载操作系统中虚拟网卡驱动前端的开启和关闭,同时该函数要将切换信号传递给管理操作系统控制的虚拟网卡驱动后端130,以便后端开启或关闭其自身操作函数。在执行模块2113开启和关闭相应网卡驱动后,整个源网卡向目标网卡的切换过程就执行完毕。其中,当源网卡和目标网卡分别为物理网卡401和虚拟网卡402时,在切换完成后,物理网卡401停止对共享缓冲区120的读写;虚拟网驱动前后端开启对共享缓冲区120的读写。反之,当源网卡和目标网卡分别为虚拟网卡402和物理网卡401时,在切换完成后,虚拟网前后端停止对共享缓冲区120的读写;物理网卡开启对共享缓冲区120的读写。
[0092] 上文中结合图2至图5,从系统的角度介绍了多操作系统中源网卡与目标网卡的切换系统,下面将结合图6至图9,从切换方法入手介绍多操作系统中源网卡与目标网卡的切换方法。
[0093] 图6示出了根据本发明实施例的多操作系统中源网卡与目标网卡的切换方法的示意性流程图,该方法包括:
[0094] S610,多操作系统中负载操作系统200的双模式网卡驱动211根据多操作系统中管理操作系统100发送的网卡切换信号将目标网卡420进行初始化,使目标网卡420能够使用源网卡410占用的共享缓冲区120;
[0095] S620,目标网卡420初始化完成后,双模式网卡驱动211根据所接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动。
[0096] 为了有效的提高目标网卡和源网卡相互切换的效率,避免切换过程中网卡所传输数据丢失,负载操作系统的双模式网卡驱动211在接收到切换信号后,在保持源网卡正常工作的同时,对目标网卡进行初始化,使所述目标网卡420能够使用所述源网卡410的共享缓冲区120。待目标网卡420初始化完成后,双模式网卡驱动211再停止源网卡410的工作并打开目标网卡420。这个初始化的过程可以有效的保证源网卡410在传输数据前进行必要的预热准备,提高切换效率;同时保证目标网卡和源网卡使用同一共享缓冲区,避免了网卡传输数据在网卡切换过程中的丢失。
[0097] 应理解,在本发明实施例中,目标网卡和源网卡可以分别为物理网卡或虚拟网卡,也可以均为物理网卡或均为虚拟网卡。
[0098] 在S610中,双模式网卡驱动211根据所述多操作系统中管理操作系统发送的网卡切换信号将所述目标网卡420初始化的方法有多种。在对S610进一步实现中,本发明实施例将以目标网卡和虚拟网卡分别为物理网卡或虚拟网卡的情况下进行说明。下面将结合图7对双模式网卡驱动211初始化目标网卡的过程进行详细描述。
[0099] 图7示出了双模式网卡驱动211根据网卡切换信号将目标网卡初始化的方法的示意性流程图。如图7所示,该方法包括:
[0100] S710双模式网卡驱动211对网卡切换信号进行解析,确定源网卡的类型和目标网卡的类型;
[0101] S720当确定源网卡的类型为物理网卡且目标网卡的类型为虚拟网卡时,双模式网卡驱动将虚拟网卡402初始化,使虚拟网卡402能够使用物理网卡401当前占用的共享缓冲区120;
[0102] S730当确定源网卡的类型为虚拟网卡且目标网卡的类型为物理网卡时,双模式网卡驱动将物理网卡401初始化,使物理网卡401能够使用虚拟网卡402当前占用的共享缓冲区120。
[0103] 应理解,在S710中,所述双模式网卡驱动211接收来自于管理操作系统资源管理模块110通过IPI通信策略发送的切换信号。该切换信号一般分为两种:物理网卡向虚拟网卡的切换和虚拟网卡向物理网卡的切换。可选地,所述双模式网卡驱动211接收来自于管理操作系统资源管理模块110通过操作系统IPI通信策略发送的切换信号,也可以接收来自于负载操作系统资源管理模块212发送的切换信号。在解析模块2111接收到切换信息后,解析模块2111可以通过逻辑判断函数实现对切换信息的判断,如使用C语言中的if()函数,网卡切换模式可以采用整型变量int mode表示:int mode=1表示虚拟网卡向物理网卡的切换,int mode=0表示物理网卡向虚拟网卡的切换。当if()语句判断所接收的信号为int mode=1时,则调用对虚拟网卡的初始化模块;当if()语句判断所接收的信号为int mode=0时,则调用对物理网卡的初始化模块。
[0104] 应理解,在S720中,当S710确定所述源网卡的类型为物理网卡且所述目标网卡的类型为虚拟网卡时,双模式网卡驱动将所述虚拟网卡402初始化,使所述虚拟网卡能够使用物理网卡402当前占用的共享缓冲区;在S730中,当S710确定所述源网卡的类型为虚拟网卡且目标网卡的类型为物理网卡时,双模式网卡驱动将物理网卡402初始化,使物理网卡402能够使用虚拟网卡401当前占用的共享缓冲区。S720和S730对虚拟网卡402和物理网卡401的初始化过程依据图8和图9具体说明。
[0105] 图8示出了,在S720中,双模式网卡驱动211将虚拟网卡402初始化的方法的示意性流程图。如图8所示,该方法包括:
[0106] S721双模式网卡驱动211向管理操作系统确认虚拟网卡驱动后端130创建完成;
[0107] S722待虚拟网卡驱动后端130创建完毕后,双模式网卡驱动向虚拟网卡驱动后端130发送共享缓冲区120的地址信息,使所述虚拟网卡驱动后端130能够根据所述地址信息调用物理网卡401所占用的共享缓冲区120。
[0108] 其具体过程如下,首先,虚拟网卡初始化模块21121,通过负载操作系统资源管理模块212向管理操作系统资源管理模块110询问确认管理操作系统100是否完成虚拟网卡驱动后端130的创建工作。虚拟化驱动后端130的创建过程为:管理操作系统100在决定进行物理网卡401向虚拟网卡402切换后,在其内部设置虚拟网卡驱动后端130,并使其与管理操作系统的网桥120相连。
[0109] 其次,如果管理操作系统资源管理模块110向虚拟网卡初始化模块21121反馈虚拟网卡驱动后端130创建完成,虚拟网卡初始化模块21121向虚拟网卡驱动后端130发送共享缓冲区120的地址。
[0110] 最后,虚拟网卡驱动后端130在接收到共享缓冲区120的地址信息后,将映射共享缓冲区120的页表,以便虚拟网卡402在启动后能使处理器直接通过虚拟网卡驱动后端130调用和读取物理网卡所占用的共享缓冲区120信息。
[0111] 举例,虚拟网卡初始化模块21121向虚拟网卡驱动后端130发送共享缓冲区的地址,根据共享缓冲区的数据结构不同,所传输的地址变量也不同。。例如,当共享缓冲区的接收和发送数据结构采用两个环形链表形式,那么共享缓冲区的地址可以用8个全局变量来表示。所述这8个全局变量已经在上文图2对共享缓冲区120的描述中进行了具体介绍,此处不再赘述。虚拟网卡驱动后端130在接收到这些地址信息后,可以通过内存映射函数如Win32环境下的CreateFileMapping函数,将地址信息映射到对应的物理内存地址上。这样,虚拟网卡402在正式启动后,处理器就可以直接通过虚拟网卡驱动后端130调用和读取到物理网卡所占用的共享缓冲区120信息。
[0112] 总之,本发明的实施例通过建立虚拟网卡的后端并映射共享缓冲区的地址使虚拟网卡在后期启动后能够直接读取共享缓冲区内的信息,从而保证了共享内存的数据不会因为物理网卡到虚拟网卡的切换而丢失。
[0113] 应注意,虚拟网卡驱动后端130映射共享缓冲区页表完成后,双模式网卡驱动就完成了S720以及图8所描述的对虚拟网卡初始化过程。应注意,虚拟网卡驱动后端130仅映射共享缓冲区页表而不应打开后端网卡的运行,以免管理操作系统的虚拟网卡驱动后端130和负载操作系统的物理网卡同时对共享缓冲区120进行读取而造成共享缓冲区120内部数据的混乱。
[0114] 图9示出了,在S730中,双模式网卡驱动211将物理网卡401初始化的方法的示意性流程图。如图9所示,该方法包括:
[0115] S731双模式网卡驱动211向管理操作系统资源管理模块110询问待切换物理网卡401的配置信息;
[0116] S732在接收到物理网卡401的配置信息后,双模式网卡驱动211在其内部启动与物理网卡配置信息相匹配的物理网卡初始化函数;
[0117] S733该初始化函数根据所述共享缓冲区的地址信息设置物理网卡中的DMA寄存器器,使该寄存器能够调用虚拟网卡所占用的共享缓冲区120。
[0118] 总之,双模式网卡驱动根据所述共享缓冲区的地址信息设置待切换物理网卡的DMA控制器,使待切换物理网卡的直接内存访问控制器能够调用虚拟网卡所占用的共享缓冲区。通过以上三个步骤就完成了双模式网卡驱动对物理网卡的初始化。
[0119] 以上三个步骤其具体过程如下,
[0120] 首先,物理网卡初始化模块21122向管理操作系统资源管理模块110询问待切换物理网卡401的配置信息,如物理网卡的媒体访问控制地址(MAC地址),接口参数等配置信息。
[0121] 其次,在接收到物理网卡401的配置信息后,物理网卡初始化模块21122在其内部启动与物理网卡配置信息相匹配的物理网卡初始化函数。应注意,与通常的物理网卡驱动启动物理网卡方式不同,该物理网卡初始化函数不是操作系统根据配置信息创建的,而是物理网卡初始化模块21122在本身已有的物理网卡初始化函数中根据物理网卡配置信息匹配选择的。
[0122] 最后,该初始化函数设置物理网卡401中的DMA控制器的寄存器器,使该寄存器能够调用虚拟网卡402所占用的共享缓冲区120。具体而言,在这一步骤中,物理网卡初始化函数通过虚拟网卡驱动前端获得正在传输数据的共享缓冲区地址。该地址根据共享缓冲区的数据结构不同而不同,例如当共享缓冲区的接收和发送数据结构采用两个环形链表形式,那么共享缓冲区的地址可以用8个全局变量来表示。所述这8个全局变量已经在上文图2对共享缓冲区120的描述中进行了具体介绍,此处不再赘述。物理网卡初始化函数在接收到这些地址信息后,设置DMA控制器的寄存器指向共享缓冲区的内存起始地址,之后再设置其它一些必要的工作参数。这样,物理卡在正式启动后,处理器就可以直接通过物理网卡驱动调用和读取到虚拟网卡所占用的共享缓冲区120信息。
[0123] 总之,本发明的实施例通过物理网卡初始化模块21122选择相应的物理网卡初始化函数,并利用该函数建立物理网卡与共享内存的直接调用关系,使物理网卡在启动后能够直接读取共享缓冲区内的信息,保证了共享内存的数据不会因为虚拟网卡到物理网卡的切换而丢失。
[0124] 应注意,物理网卡的DMA寄存器指向双模式网卡使用的收发缓冲区的物理地址后,物理网卡初始化模块21122对物理网卡401的初始化过程完毕。应注意,物理网卡的DMA寄存器指向共享缓冲区的物理地址即可,而不应打开物理网卡驱动的运行,以免该物理网卡和负载操作系统正在运行的虚拟网卡同时对共享缓冲区120进行读取而造成共享缓冲区120内部数据的混乱。
[0125] 在双模式网卡驱动根据网卡切换信号将所述目标网卡初始化的完成后后,使源网卡继续工作的同时目标网卡已经指向了源网卡对应的物理内存缓冲区。如进一步实现源网卡到目标网卡的完整切换,则需要在双模式网卡驱动的初始化模块完成工作后,停止源网卡驱动并启动目标网卡驱动。
[0126] 这种双模式网卡驱动停止源网卡驱动并启动目标网卡驱动的方法在上述图7、图8或图9所描述的方法完成后均可以进行,本实例将结合在图7基础上绘制的图10对双模式网卡驱动停止源网卡驱动并启动目标网卡驱动的方法进行详细说明。
[0127] 如图10所示,当源网卡和目标网卡为物理网卡401或虚拟网卡402时,双模式网卡驱动根据所接收的网卡切换信号停止源网卡驱动并启动目标网卡驱动的方法,包括:
[0128] S1010当确定源网卡的类型为物理网卡401且目标网卡的类型为虚拟网卡402时,双模式网卡驱动关闭物理网卡驱动并开启虚拟网卡驱动前端和后端130的运行;
[0129] S1020当确定源网卡的类型为虚拟网卡402且目标网卡的类型为物理网卡401时,双模式网卡驱动关闭虚拟网卡驱动并开启物理网卡驱动。
[0130] 应理解,双模式网卡驱动完成对虚拟网卡或物理网卡初始化过程后,双模式网卡驱动将执行停止源网卡驱动并开启目标网卡驱动的步骤。
[0131] 具体而言,在执行停止源网卡驱动并开启目标网卡驱动的过程中。双模式网卡驱动的执行模块2113将分别调用其控制函数和接收发函数进行执行。控制函数可以采用mod函数,该函数接收来自于初始化模块发送的整形变量int mode。在物理网卡切换为虚拟网卡的情况下,mod函数在接收到整形变量int mode后,停止虚拟网卡接收和发送操作函数(如shared_memory_rx,shared_memory_rx)并调用物理网卡接收和发送操作函数(如pnet_rx,pnet_tx);在虚拟网卡切换为物理网卡的情况下,mod函数停止物理网卡接收和发送操作函数(如pnet_rx,pnet_tx)并调用虚拟网卡接收和发送操作函数(如shared_memory_rx,shared_memory_rx)。双模式网卡执行模块2113利用mod函数对操作函数进行调用,控制相应物理网卡驱动和虚拟网卡驱动的开启和关闭。应注意,在虚拟网卡接收和发送操作函数控制虚拟网卡驱动中,该函数不仅要控制负载操作系统中虚拟网卡驱动前端的开启和关闭,同时该函数要将切换信号传递给管理操作系统控制的虚拟网卡驱动后端130,以便后端开启或关闭其自身操作函数。
[0132] 总之,在执行模块开启和关闭相应网卡驱动后,整个源网卡向目标网卡的切换过程就执行完毕。其中,当源网卡和目标网卡分别为物理网卡和虚拟网卡时,在切换完成后,物理网卡停止对共享缓冲区的读写;虚拟网前后端开启对共享缓冲区的读写。反之,当源网卡和目标网卡分别为虚拟网卡和物理网卡时,在切换完成后,虚拟网前后端停止对共享缓冲区的读写;物理网卡开启对共享缓冲区的读写。
[0133] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0134] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0135] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0136] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0137] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。