一种虚拟机数据流管理方法和系统与流程

文档序号:12376588阅读:271来源:国知局
一种虚拟机数据流管理方法和系统与流程

本发明涉及计算机技术领域,尤其涉及一种虚拟机数据流管理方法和系统。



背景技术:

服务器虚拟化技术,使CPU、内存、磁盘、I/O(input/output,输入输出端口)等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,让计算机系统对业务的变化更具适应力。目前虚拟化技术中,虚拟子机与主机之间的网络通信采用PV驱动(Para-Virtualization Driver,半虚拟化驱动)的半虚拟化方案,即:在主机侧安装后端驱动,而在虚拟子机侧安装前端驱动,通过前后端驱动的交互来实现虚拟子机的网络通信,所有发送到虚拟子机或由虚拟子机发送的数据包都会通过主机侧的后端驱动,这样就可以在主机侧对虚拟子机的网络通信进行包过滤、QoS(Quality of Service,服务质量)等管理。但是,同时由于所有虚拟子机的数据包都会经由主机侧的后端驱动处理,即由主机侧的后端驱动进行软路由,导致主机侧的CPU处理负担非常大,使用千兆网卡时,网络吞吐量,CPU的消耗还可以接受。在使用万兆网卡时,容易主机侧的CPU性能瓶颈并且对其使用寿命产生影响,无法充分利用网卡的处理能力。



技术实现要素:

本发明实施例所要解决的技术问题在于,提供一种虚拟机数据流管理方法和系统,可提高虚拟机的网络通信性能。

为了解决上述技术问题,本发明实施例提供了一种虚拟机数据流管理方法,所述方法包括:

主机通过SR-IOV网卡的指定网口接收通信对端发送的IP数据包,所述IP数据包中的目标MAC地址和目标IP地址分别是所述主机的指定网口的MAC地址和目标虚拟子机的IP地址;

所述主机根据所述目标IP地址将所述IP数据包转发至目标虚拟子机在相同SR-IOV网卡中的虚拟连接功能。

相应地,本发明实施例还提供了一种虚拟机数据流管理方法,所述方法包括:

目标虚拟子机通过SR-IOV网卡的虚拟连接功能发送IP数据包,所述IP数据包中的目标MAC地址和目标IP地址分别是所述目标虚拟子机对应的主机在相同SR-IOV网卡中的指定网口的MAC地址和通信对端的IP地址;

所述主机在通过所述SR-IOV网卡中的指定网口接收到所述IP数据包后根据所述目标IP地址将所述IP数据包转发至所述通信对端。

相应地,本发明实施例还提供了一种虚拟机数据流管理系统,包括主机和至少一个虚拟子机,其中:

所述主机,用于通过SR-IOV网卡的指定网口接收通信对端发送的IP数据包,所述IP数据包中的目标MAC地址和目标IP地址分别是所述主机的指定网口的MAC地址和目标虚拟子机的IP地址;

所述主机,还用于根据所述目标IP地址将所述IP数据包转发至目标虚拟子机在相同SR-IOV网卡中的虚拟连接功能。

相应地,本发明实施例还提供了一种虚拟机数据流管理系统,包括主机和至少一个虚拟子机,其中:

所述虚拟子机,用于通过SR-IOV网卡的虚拟连接功能发送IP数据包,所述IP数据包中的目标MAC地址和目标IP地址分别是所述目标虚拟子机对应的主机在相同SR-IOV网卡中的指定网口的MAC地址和通信对端的IP地址;

所述主机,用于在通过所述SR-IOV网卡中的指定网口接收到所述IP数据包后根据所述目标IP地址将所述IP数据包转发至所述通信对端。

本发明实施例中通过在流经虚拟子机的IP数据包中配置虚拟子机对应主机的指定网口的MAC地址,使得目标虚拟子机的网络数据可以经由主机指定网口,从而可以实现对目标虚拟子机的网络数据进行包过滤、QoS管理,同时由于数据不再需要经过主机侧的后端驱动处理,避免产生主机侧的CPU性能瓶颈或对其使用寿命产生影响,充分实现利用网卡的处理能力。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述 中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例中的一种虚拟机数据流管理方法的流程示意图;

图2是本发明另一实施例中的虚拟机数据流管理方法的流程示意图;

图3是本发明实施例中的SR-IOV技术网卡通信架构的示意图;

图4是本发明另一实施例中的虚拟机数据流管理方法的流程示意图;

图5是本发明另一实施例中的虚拟机数据流管理方法的流程示意图;

图6是本发明实施例中的一种虚拟机数据流管理系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明实施例中的一种虚拟机数据流管理方法的流程示意图,如图所示本实施例中的虚拟机数据流管理方法流程可以包括:

S101,主机通过SR-IOV网卡的指定网口接收通信对端发送的IP数据包,所述IP数据包中的目标MAC地址和目标IP地址分别是所述主机的指定网口的MAC地址和目标虚拟子机的IP地址。

所述主机的指定网口为本实施例中的目标虚拟子机的虚拟连接功能(下文也称VF,Virtual Function)所属的物理连接功能(下文也称PF,Physical Funtion),或与所述目标虚拟子机的虚拟连接功能VF属于同一物理连接功能PF的另一虚拟连接功能VF。本发明实施例中通信对端在向同属于一SR-IOV网卡的虚拟子机发送IP数据包时,IP数据包中的目标MAC地址是该虚拟子机对应的主机的指定网口的MAC地址,这样主机侧可以通过SR-IOV网卡的指定网口接收到通信对端发送的IP数据包。所述通信对端为外部网络设备,即除了主机外的其他网络设备。

S102,所述主机根据所述目标IP地址将所述IP数据包转发至目标虚拟子机在相同SR-IOV网卡中的虚拟连接功能。

具体实现中,本发明实施例中的虚拟机数据流管理方法基于支持SR-IOV (Single-Root I/O Virtualization,单根I/O虚拟化)技术的网卡中的L2(Layer 2,即数据链路层)交换逻辑,SR-IOV技术网卡通信架构可以如图3所示,在本实施例中的流程执行之前,可以通过图3中主机的网卡的物理连接功能(下文也称PF,Physical Funtion)为目标虚拟子机生成并分配虚拟连接功能(下文也称VF,Virtual Function),同时分配该VF的IP和虚拟MAC地址,分配得到的VF直通目标虚拟子机。本发明实施例中的主机会管理各个虚拟子机的VF与其IP之间的映射关系,在接收到外部发来的IP数据包时,可以根据其携带的目标IP地址将所述IP数据包转发至对应的目标虚拟子机在相同SR-IOV网卡中的虚拟连接功能,目标虚拟子机从而接收到该IP数据包。

从而,主机通过指定网口接收到通信对端发送的IP数据后可以对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据转发至目标虚拟子机的VF,从而实现了在主机侧可以对发往目标虚拟子机的网络数据进行包过滤、QoS管理。

进而在可选实施例中,为了让通信对端在向目标虚拟子机发送IP数据包时将目标MAC地址设为该虚拟子机对应的主机的指定网口的MAC地址,本发明实施例中可以通过执行以下流程110)和120)实现这一目的:

110),获取通信对端发送的针对所述目标虚拟子机的ARP请求消息,所述ARP请求消息中的目标IP地址为所述目标虚拟子机的IP地址。

具体的,当检测到物理网卡从外部接收到的ARP请求中的目标IP地址(如ARP请求消息中的arp_tpa,target protocol address)为所述目标虚拟子机的IP地址时,即确认获取到通信对端发送的针对目标虚拟子机的ARP请求消息,执行120)。

执行步骤110)和120)的可以为本发明实施例中的虚拟机通信配置模块,所述虚拟机通信配置模块可以实现在目标虚拟子机中,也可以实现在主机中。若所述虚拟机通信配置模块实现在所述目标虚拟子机中,目标虚拟子机接收到针对目标虚拟子机的ARP请求消息时即所述虚拟机通信配置模块接收到针对目标虚拟子机的ARP请求消息;若实现在所述目标虚拟子机对应的主机中,由于ARP请求消息是广播的,主机侧实际也会接收到该ARP请求,只是一般情况下主机侧会因为该ARP请求消息中的目标IP地址不是主机侧的IP地址则丢弃掉,主机侧的虚拟机通信配置模块可以通过检测到物理网卡从外部接收到的ARP请求 中的目标IP地址是否为所述目标虚拟子机的IP地址,若是,即确认获取到通信对端发送的针对目标虚拟子机的ARP请求消息。

120),根据所述ARP请求消息向所述通信对端发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址均为所述主机指定网口的MAC地址,以使所述通信对端根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机对应的主机的指定网口。

具体的,现有技术中所述目标虚拟子机在接收到所述ARP请求消息时,会向所述通信对端发送对应的ARP响应消息,该ARP响应消息中的发送者IP地址(如ARP响应消息中的arp_spa,sender protocol address)为目标虚拟子机预先被分配得到的VF的IP地址,发送者MAC地址(如ARP响应消息中的arp_sha字段,sender hardware address)和以太网源地址(ARP响应消息中的ether_shost字段)为目标虚拟子机预先被分配得到的VF的虚拟MAC地址,这样所述通信对端就会根据该ARP响应消息中的发送者IP地址以及发送者MAC地址(或以太网源地址)向所述目标虚拟子机发送IP数据包,由于该架构下的VF直通目标虚拟子机,这样会产生主机侧无法对发送至虚拟子机的IP数据包进行包过滤、QoS(Quality of Service,服务质量)等管理的问题。

从而,本发明实施例中的虚拟机通信配置模块通过向所述通信对端发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址为所述目标虚拟子机对应的主机指定网口的MAC地址,即将原本应该应答的ARP响应消息中的目标虚拟子机的VF对应的MAC地址替换成主机指定网口的MAC地址,以使所述通信对端在接收到所述ARP响应消息后,可以根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机对应的主机指定网口,后续可以由所述目标虚拟子机对应的主机通过指定网口接收到通信对端发送的IP数据后对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据转发至目标虚拟子机的VF,从而实现了在主机侧可以对发往目标虚拟子机的网络数据进行包过滤、QoS管理。

需要指出的是,上述通过APR响应方式让通信对端将目标虚拟子机的IP数据包发向对应主机的指定网口,仅是本发明可选实施例,在其他可选实施例中,也可以采用其他方式,例如通信对端侧手动配置IP数据包的目标MAC地址为对应主机的指定网口,或通过在网络中传播虚拟子机的IP与其对应主机指 定网口的MAC地址的映射关系的方式,让通信对端得知目标虚拟子机对应主机指定网口的MAC地址,均可以实现该目的。

进而由于本发明实施例中的主机指定网口中转虚拟子机的IP数据包是通过配置MAC地址实现的,不再需要经过主机侧的后端驱动处理,避免产生主机侧的CPU性能瓶颈或对其使用寿命产生影响,充分实现利用网卡的处理能力。

图2是本发明另一实施例中的虚拟机数据流管理方法的流程示意图,如图所示本实施例中的虚拟机数据流管理方法流程可以包括:

S201,目标虚拟子机通过SR-IOV网卡的虚拟连接功能发送IP数据包,所述IP数据包中的目标MAC地址和目标IP地址分别是所述目标虚拟子机对应的主机在相同SR-IOV网卡中的指定网口的MAC地址和通信对端的IP地址。

具体的,本实施例中的目标虚拟子机与前文实施例中类似,预先被分配得到VF的IP和虚拟MAC地址,分配得到的VF直通目标虚拟子机,目标虚拟子机通过该VF向外发送网络数据。所述主机的指定网口为本实施例中的目标虚拟子机的VF所属的PF或与所述目标虚拟子机的VF属于同一PF的另一VF。目标虚拟子机向外发送IP数据包时,所述IP数据包的目标IP地址为目标通信对端的IP地址,目标MAC地址为所述目标虚拟子机对应的主机在相同SR-IOV网卡中的指定网口的MAC地址,这样主机侧可以通过SR-IOV网卡的指定网口接收到目标虚拟子机向外发送的IP数据包。

S202,所述主机在通过所述SR-IOV网卡中的指定网口接收到所述IP数据包后根据所述目标IP地址将所述IP数据包转发至所述通信对端。

从而,主机通过指定网口接收到目标虚拟子机通过VF发送的IP数据后可以对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据转发至通信对端,从而实现了在主机侧可以对目标虚拟子机向外发送的网络数据进行包过滤、QoS管理。

进而在可选实施例中,为了让目标虚拟子机向外发送IP数据包时将目标MAC地址设为该虚拟子机对应的主机的指定网口的MAC地址,本发明实施例中还可以通过执行以下步骤210)和220)实现这一目的:

210)检测到目标虚拟子机发送ARP请求消息。

具体的,本实施例中的目标虚拟子机与前文实施例中类似,预先被分配得 到VF的IP和虚拟MAC地址,分配得到的VF直通目标虚拟子机,目标虚拟子机通过该VF向外发送的网络数据。目标虚拟子机向外发送所述ARP请求消息时,所述ARP请求消息的发送者IP地址(如ARP请求消息中的arp_spa,sender protocol address)和发送者MAC地址(如ARP请求消息中的arp_sha,sender hardware address)为目标虚拟子机预先被分配得到的VF的IP地址和虚拟MAC地址,目标IP地址(如ARP请求消息中的arp_tpa,target protocol address)为目标通信对端的IP地址。可以根据ARP请求中的发送者IP地址和/或发送者MAC地址确认第二所述ARP请求消息是目标虚拟子机发送的。

执行步骤210)和220)的可以为本发明实施例中的虚拟机通信配置模块,所述虚拟机通信配置模块可以实现在目标虚拟子机中,也可以实现在主机中。若所述虚拟机通信配置模块实现在所述目标虚拟子机中,目标虚拟子机在需要外发送ARP请求消息,即ARP请求消息时,虚拟机通信配置模块可以获知;若所述虚拟机通信配置模块实现在所述目标虚拟子机对应的主机中,由于ARP请求消息是广播的,主机侧实际会首先接收到该ARP请求,只是一般情况下主机侧会因为该ARP请求消息中的目标IP地址不是主机侧的IP地址则丢弃掉,主机侧的虚拟机通信配置模块可以通过检测接收到的ARP请求中的发送者IP地址和/或发送者MAC地址是否为所述目标虚拟子机的IP地址和/或MAC地址,若是,即确认获取到目标虚拟子机发送的ARP请求消息。

220),根据所述ARP请求消息向所述目标虚拟子机发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址为目标虚拟子机对应的主机指定网口的MAC地址,以使所述目标虚拟子机根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机对应的主机指定网口。

具体的,现有技术中所述目标虚拟子机在发送所述ARP请求消息后,接收到通信对端返回的ARP响应消息中携带的发送者MAC地址或以太网源地址是该通信对端的MAC地址,然后可以根据该通信对端的MAC地址向其发送IP数据,由于SR-IOV技术网卡通信架构下的VF直通物理网卡的Vport,即目标虚拟子机通过VF发送的IP数据通过Vport直接可以向外发送,这样会产生主机侧无法对目标虚拟子机向外发送的IP数据包进行包过滤、QoS(Quality of Service,服务质量)等管理的问题。

从而,本发明实施例中的虚拟机通信配置模块通过向目标虚拟子机发送 ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址为目标虚拟子机对应的主机指定网口的MAC地址,即伪造一个ARP响应消息,将原本目标虚拟子机发送的ARP请求消息中的目标IP地址对应的通信对端的实际MAC地址替换成主机指定网口的MAC地址,以使目标虚拟子机在接收到所述ARP响应消息后,可以根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机对应的主机指定网口,从而可以由所述目标虚拟子机对应的主机通过指定网口接收到目标虚拟子机后续发送的IP数据后对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据向外发送至通信对端,从而实现了在主机侧可以对目标虚拟子机向外发送的网络数据进行包过滤、QoS管理。

需要指出的是,上述通过APR响应方式让目标虚拟子机将向外发送的IP数据包发向对应主机的指定网口,仅是本发明可选实施例,在其他可选实施例中,也可以采用其他方式,例如目标虚拟子机在驱动配置中配置IP数据包的目标MAC地址为对应主机的指定网口,同样可以实现该目的。

进而由于本发明实施例中的主机指定网口中转虚拟子机的IP数据包是通过配置MAC地址实现的,不再需要经过主机侧的后端驱动处理,避免产生主机侧的CPU性能瓶颈或对其使用寿命产生影响,充分实现利用网卡的处理能力。

图4是本发明另一实施例中的虚拟机数据流管理方法的流程示意图,本实施例重点介绍虚拟机通信配置模块如何通过配置MAC地址以实现由主机指定网口对经过目标虚拟子机的网络数据进行中转,本实施例中的虚拟机通信配置模块实现在目标虚拟子机内部,如图所示本实施例中的虚拟机数据流管理方法流程包括:

S401,主机通过SR-IOV网卡的物理连接功能PF为目标虚拟子机分配虚拟连接功能VF,同时分配该VF的IP和虚拟MAC地址,分配得到的VF直通目标虚拟子机。

S402,虚拟机通信配置模块获取通信对端发送的针对目标虚拟子机的ARP请求消息。

本实施例中的虚拟机通信配置模块实现在目标虚拟子机内部,目标虚拟子机接收到针对目标虚拟子机的ARP请求消息时即所述虚拟机通信配置模块接收到针对目标虚拟子机的ARP请求消息。

S403,虚拟机通信配置模块根据所述ARP请求消息向所述通信对端发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址为所述目标虚拟子机对应的主机指定网口的MAC地址。

即将原本应该应答的ARP响应消息中的目标虚拟子机的VF对应的MAC地址替换成主机指定网口的MAC地址,以使所述通信对端在接收到所述ARP响应消息后,可以根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机对应的主机指定网口。后续可以由所述目标虚拟子机对应的主机通过指定网口接收到通信对端发送的IP数据后对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据转发至目标虚拟子机的VF,从而实现了在主机侧可以对发往目标虚拟子机的网络数据进行包过滤、QoS管理。

所述目标虚拟子机对应的主机指定网口为所述目标虚拟子机的虚拟连接功能VF所属的物理连接功能PF,或与所述目标虚拟子机的虚拟连接功能VF属于同一物理连接功能PF的另一虚拟连接功能VF。

S404,检测到所述目标虚拟子机发送ARP请求消息。

本实施例中的虚拟机通信配置模块实现在目标虚拟子机内部,可以检测目标虚拟子机的VF根据操作系统的指令需要发送ARP请求消息。

S405,丢弃所述ARP请求消息。

即虚拟机通信配置模块拦截并阻止目标虚拟子机向外发送ARP请求消息。

S406,根据所述ARP请求消息向所述目标虚拟子机发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址为目标虚拟子机对应的主机指定网口的MAC地址。

即虚拟机通信配置模块通过伪造一个ARP响应消息,将原本目标虚拟子机发送的ARP请求消息中的目标IP地址对应的通信对端的实际MAC地址替换成主机指定网口的MAC地址,以使目标虚拟子机在接收到所述ARP响应消息后,可以根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机对应的主机指定网口,并由所述目标虚拟子机对应的主机通过指定网口接收到目标虚拟子机后续发送的IP数据后对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据向外发送至通信对端,从而实现了在主机侧可以对目标虚拟子机向外发送的网络数据进行包过滤、QoS管理。所述目标虚拟子机对应的主机指定网口为所述目标虚拟子机的虚拟连接功能VF所属的物理连接功能PF,或与 所述目标虚拟子机的虚拟连接功能VF属于同一物理连接功能PF的另一虚拟连接功能VF。

S407,检测到所述目标虚拟子机迁移完成后,获取迁移后主机指定网口的MAC地址。

具体实现中,在SR-IOV技术网卡通信架构下的目标虚拟子机热迁移过程中,需要热拔掉虚拟子机使用的VF对应的网卡,然后在虚拟子机迁移完成后,通过SR-IOV技术网卡通信架构下VF之间以及VF和所属PF之间的通信机制,虚拟机通信配置模块可以获取到目标虚拟子机热迁移后所对应的主机指定网口的MAC地址,以便后续在执行S401-403以及S404-406时,可以实现对从外部发往目标虚拟子机的网络数据,以及对目标虚拟子机向外发送的网络数据进行包过滤、QoS管理。

图5是本发明另一实施例中的虚拟机数据流管理方法的流程示意图,本实施例重点介绍虚拟机通信配置模块如何通过配置MAC地址以实现由主机指定网口对经过目标虚拟子机的网络数据进行中转,本实施例中的虚拟机通信配置模块实现在目标虚拟子机对应主机侧,如图所示本实施例中的虚拟机数据流管理方法流程包括:

S501,主机通过SR-IOV网卡的物理连接功能PF为目标虚拟子机分配虚拟连接功能VF,同时分配该VF的IP和虚拟MAC地址,分配得到的VF直通目标虚拟子机。

S502,虚拟机通信配置模块获取通信对端发送的针对目标虚拟子机的ARP请求消息。

本实施例中的虚拟机通信配置模块实现在所述目标虚拟子机对应的主机中,由于ARP请求消息是广播的,主机侧实际也会接收到该ARP请求,只是一般情况下主机侧会因为该ARP请求消息中的目标IP地址不是主机侧的IP地址则丢弃掉,本发明实施例中主机侧的虚拟机通信配置模块可以通过检测到物理网卡从外部接收到的ARP请求中的目标IP地址是否为所述目标虚拟子机的IP地址,若是,即确认获取到通信对端发送的针对目标虚拟子机的ARP请求消息。

S503,虚拟机通信配置模块根据所述ARP请求消息向所述通信对端发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址为指 定网口的MAC地址。

本实施例中,约定目标虚拟子机不对外部发送的ARP请求消息进行响应,由虚拟机通信配置模块向外部的通信对端发送ARP响应消息,并且将原本应该应答的ARP响应消息中的目标虚拟子机的VF对应的MAC地址替换成主机指定网口的MAC地址,以使所述通信对端在接收到所述ARP响应消息后,可以根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机对应的主机指定网口,并在可选实施例中可以由所述目标虚拟子机对应的主机通过指定网口接收到通信对端发送的IP数据后对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据转发至目标虚拟子机的VF,从而实现了在主机侧可以对发往目标虚拟子机的网络数据进行包过滤、QoS管理。所述目标虚拟子机对应的主机指定网口为所述目标虚拟子机的虚拟连接功能VF所属的物理连接功能PF,或与所述目标虚拟子机的虚拟连接功能VF属于同一物理连接功能PF的另一虚拟连接功能VF。

S504,确定接收到的ARP请求消息中的发送者IP地址为所述目标虚拟子机的IP地址。

本实施例中虚拟机通信配置模块实现在目标虚拟子机对应的主机侧,由于ARP请求消息是广播的,主机侧实际会首先接收到该ARP请求,只是一般情况下主机侧会因为该ARP请求消息中的目标IP地址不是主机侧的IP地址则丢弃掉,本发明实施例中主机侧的虚拟机通信配置模块可以通过检测接收到的ARP请求中的发送者IP地址和/或发送者MAC地址是否为所述目标虚拟子机的IP地址和/或MAC地址,若是,即确认获取到目标虚拟子机发送的ARP请求消息。

S505,根据所述ARP请求消息向所述目标虚拟子机发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址为指定网口的MAC地址,以使所述目标虚拟子机根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机对应的主机指定网口。

即虚拟机通信配置模块拦截并阻止目标虚拟子机向外发送ARP请求消息,并伪造一个ARP响应消息,该ARP响应消息中的发送者MAC地址或以太网源地址由原本目标虚拟子机发送的ARP请求消息中的目标IP地址对应的通信对端的实际MAC地址替换成主机指定网口的MAC地址,以使目标虚拟子机在接收到所述ARP响应消息后,可以根据所述ARP响应消息将IP数据包发送至所述 目标虚拟子机对应的主机指定网口,并在可选实施例中可以由所述目标虚拟子机对应的主机通过指定网口接收到目标虚拟子机后续发送的IP数据后对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据向外发送至通信对端,从而实现了在主机侧可以对目标虚拟子机向外发送的网络数据进行包过滤、QoS管理。

S506,检测到目标虚拟子机迁移完成后,获取迁移后目标虚拟子机的虚拟功能网口的MAC地址。

具体实现中,在SR-IOV技术网卡通信架构下的目标虚拟子机热迁移过程中,需要热拔掉虚拟子机使用的VF对应的网卡,然后在虚拟子机迁移完成后,通过SR-IOV技术网卡通信架构下VF之间以及VF和所属PF之间的通信机制,虚拟机通信配置模块可以获取到目标虚拟子机热迁移后分配得到的VF的MAC地址,以便后续在执行S501-503以及S504-505时,可以实现对从外部发往目标虚拟子机的网络数据,以及对目标虚拟子机向外发送的网络数据进行包过滤、QoS管理。

图6是本发明实施例中的一种虚拟机数据流管理系统的结构示意图,如图所示本发明实施例中的虚拟机数据流管理系统可以包括主机610和目标虚拟子机620,其中:

所述主机610,用于通过SR-IOV网卡的指定网口接收通信对端发送的IP数据包,所述IP数据包中的目标MAC地址和目标IP地址分别是所述主机610的指定网口的MAC地址和目标虚拟子机620的IP地址。

具体实现中,本发明实施例中的虚拟机数据流管理系统基于支持SR-IOV(Single-Root I/O Virtualization,单根I/O虚拟化)技术的网卡中的L2(Layer 2,即数据链路层)交换逻辑,SR-IOV技术网卡通信架构可以如图3所示,可以通过图3中主机610的网卡的PF为目标虚拟子机620生成并分配VF,同时分配该VF的IP和虚拟MAC地址,分配得到的VF直通目标虚拟子机。所述主机610的指定网口为本实施例中的目标虚拟子机620的VF所属的PF,或与所述目标虚拟子机620的VF属于同一PF的另一VF。本发明实施例中通信对端在向同属于一SR-IOV网卡的目标虚拟子机620发送IP数据包时,IP数据包中的目标MAC地址是该目标虚拟子机620对应的主机610的指定网口的MAC地址, 这样主机610可以通过SR-IOV网卡的指定网口接收到通信对端发送的IP数据包。所述通信对端为外部网络设备,即除了主机610外的其他网络设备。

所述主机,还用于根据所述目标IP地址将所述IP数据包转发至目标虚拟子机在相同SR-IOV网卡中的虚拟连接功能。

本发明实施例中的主机会管理各个虚拟子机的VF与其IP之间的映射关系,在接收到外部发来的IP数据包时,可以根据其携带的目标IP地址将所述IP数据包转发至对应的目标虚拟子机在相同SR-IOV网卡中的虚拟连接功能,目标虚拟子机从而接收到该IP数据包。

从而,主机通过指定网口接收到通信对端发送的IP数据后可以对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据转发至目标虚拟子机的VF,从而实现了在主机侧可以对发往目标虚拟子机的网络数据进行包过滤、QoS管理。

进而在可选实施例中,为了让通信对端在向目标虚拟子机620发送IP数据包时将目标MAC地址设为目标虚拟子机620对应的主机610的指定网口的MAC地址,本发明的虚拟机数据流管理系统还可以包括:

虚拟机通信配置模块630,用于获取通信对端发送的针对所述目标虚拟子机620的ARP请求消息,所述ARP请求消息中的目标IP地址为所述目标虚拟子机620的IP地址;根据所述ARP请求消息向所述通信对端发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址均为所述主机610指定网口的MAC地址,以使所述通信对端根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机620对应的主机610的指定网口。

具体实现中,所述虚拟机通信配置模块630可以实现在目标虚拟子机620中,也可以实现在主机610中。若所述虚拟机通信配置模块630实现在所述目标虚拟子机620中,目标虚拟子机620接收到针对目标虚拟子机的ARP请求消息时即所述虚拟机通信配置模块630接收到针对目标虚拟子机的ARP请求消息;若实现在所述目标虚拟子机620对应的主机610中,由于ARP请求消息是广播的,主机侧实际也会接收到该ARP请求,只是一般情况下主机610会因为该ARP请求消息中的目标IP地址不是主机侧的IP地址则丢弃掉,主机610中的虚拟机通信配置模块630可以通过检测到物理网卡从外部接收到的ARP请求中的目标IP地址是否为所述目标虚拟子机620的IP地址,若是,即确认获取到 通信对端发送的针对目标虚拟子机620的ARP请求消息。

现有技术中所述目标虚拟子机620在接收到所述ARP请求消息时,会向所述通信对端发送对应的ARP响应消息,该ARP响应消息中的发送者IP地址(如ARP响应消息中的arp_spa,sender protocol address)为目标虚拟子机620预先被分配得到的VF的IP地址,发送者MAC地址(如ARP响应消息中的arp_sha字段,sender hardware address)和以太网源地址(ARP响应消息中的ether_shost字段)为目标虚拟子机620预先被分配得到的VF的虚拟MAC地址,这样所述通信对端就会根据该ARP响应消息中的发送者IP地址以及发送者MAC地址(或以太网源地址)向所述目标虚拟子机620发送IP数据包,由于该架构下的VF直通目标虚拟子机620,这样会产生主机610侧无法对发送至虚拟子机的IP数据包进行包过滤、QoS(Quality of Service,服务质量)等管理的问题。

从而,本发明实施例中的虚拟机通信配置模块630通过向所述通信对端发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址为所述目标虚拟子机620对应的主机610指定网口的MAC地址,即将原本应该应答的ARP响应消息中的目标虚拟子机620的VF对应的MAC地址替换成主机610指定网口的MAC地址,以使所述通信对端在接收到所述ARP响应消息后,可以根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机620对应的主机610指定网口,后续可以由所述目标虚拟子机620对应的主机610通过指定网口接收到通信对端发送的IP数据后对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据转发至目标虚拟子机620的VF,从而实现了在主机610侧可以对发往目标虚拟子机620的网络数据进行包过滤、QoS管理。

需要指出的是,上述虚拟机通信配置模块630通过APR响应方式让通信对端将目标虚拟子机的IP数据包发向对应主机的指定网口,仅是本发明可选实施例,在其他可选实施例中,也可以采用其他方式,例如通信对端侧手动配置IP数据包的目标MAC地址为对应主机的指定网口,或通过在网络中传播虚拟子机的IP与其对应主机指定网口的MAC地址的映射关系的方式,让通信对端得知目标虚拟子机对应主机指定网口的MAC地址,均可以实现该目的。

进而由于本发明实施例中的主机指定网口中转虚拟子机的IP数据包是通过配置MAC地址实现的,不再需要经过主机侧的后端驱动处理,避免产生主机侧的CPU性能瓶颈或对其使用寿命产生影响,充分实现利用网卡的处理能力。

在本发明另一实施例中,虚拟机数据流管理系统同样如图6所示可以包括主机610和目标虚拟子机620,其中:

所述目标虚拟子机620,用于通过SR-IOV网卡的虚拟连接功能发送IP数据包,所述IP数据包中的目标MAC地址和目标IP地址分别是所述目标虚拟子机620对应的主机610在相同SR-IOV网卡中的指定网口的MAC地址和通信对端的IP地址;

具体实现中,本发明实施例中的虚拟机数据流管理系统基于支持SR-IOV技术的网卡中的L2(Layer 2,即数据链路层)交换逻辑,SR-IOV技术网卡通信架构可以如图3所示,可以通过图3中主机610的网卡的PF为目标虚拟子机620生成并分配VF,同时分配该VF的IP和虚拟MAC地址,分配得到的VF直通目标虚拟子机620。所述主机610的指定网口为本实施例中的目标虚拟子机620的VF所属的PF,或与所述目标虚拟子机620的VF属于同一PF的另一VF。目标虚拟子机620向外发送IP数据包时,所述IP数据包的目标IP地址为目标通信对端的IP地址,目标MAC地址为所述目标虚拟子机620对应的主机610在相同SR-IOV网卡中的指定网口的MAC地址,这样主机610侧可以通过SR-IOV网卡的指定网口接收到目标虚拟子机620向外发送的IP数据包。

所述主机610,用于在通过所述SR-IOV网卡中的指定网口接收到所述IP数据包后根据所述目标IP地址将所述IP数据包转发至所述通信对端。

从而,主机610通过指定网口接收到目标虚拟子机620通过VF发送的IP数据后可以对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据转发至通信对端,从而实现了在主机610侧可以对目标虚拟子机620向外发送的网络数据进行包过滤、QoS管理。

进而在可选实施例中,为了让目标虚拟子机620向外发送IP数据包时将目标MAC地址设为该虚拟子机对应的主机610的指定网口的MAC地址,本发明的虚拟机数据流管理系统还可以包括:

虚拟机通信配置模块630,用于检测到目标虚拟子机620发送ARP请求消息;根据所述ARP请求消息向所述目标虚拟子机620发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址为目标虚拟子机620对应的主机610指定网口的MAC地址,以使所述目标虚拟子机620根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机620对应的主机610指定网口。

具体的,本实施例中的目标虚拟子机620预先被分配得到VF的IP和虚拟MAC地址,目标虚拟子机620通过该VF向外发送的网络数据。目标虚拟子机620向外发送所述ARP请求消息时,所述ARP请求消息的发送者IP地址(如ARP请求消息中的arp_spa,sender protocol address)和发送者MAC地址(如ARP请求消息中的arp_sha,sender hardware address)为目标虚拟子机620预先被分配得到的VF的IP地址和虚拟MAC地址,目标IP地址(如ARP请求消息中的arp_tpa,target protocol address)为目标通信对端的IP地址。虚拟机通信配置模块630可以根据ARP请求中的发送者IP地址和/或发送者MAC地址确认第二所述ARP请求消息是目标虚拟子机620发送的。

所述虚拟机通信配置模块630可以实现在目标虚拟子机620中,也可以实现在主机610中。若所述虚拟机通信配置模块630实现在所述目标虚拟子机620中,目标虚拟子机620在需要外发送ARP请求消息,即ARP请求消息时,虚拟机通信配置模块630可以获知,进而虚拟机通信配置模块630可以丢弃该ARP请求消息,即虚拟机通信配置模块630拦截并阻止目标虚拟子机向外发送ARP请求消息;若所述虚拟机通信配置模块630实现在所述目标虚拟子机620对应的主机610中,由于ARP请求消息是广播的,主机610侧实际会首先接收到该ARP请求,只是一般情况下主机610侧会因为该ARP请求消息中的目标IP地址不是主机610侧的IP地址则丢弃掉,主机610侧的虚拟机通信配置模块630可以通过检测接收到的ARP请求中的发送者IP地址和/或发送者MAC地址是否为所述目标虚拟子机620的IP地址和/或MAC地址,若是,即确认获取到目标虚拟子机620发送的ARP请求消息。

现有技术中所述目标虚拟子机620在发送所述ARP请求消息后,接收到通信对端返回的ARP响应消息中携带的发送者MAC地址或以太网源地址是该通信对端的MAC地址,然后可以根据该通信对端的MAC地址向其发送IP数据,由于SR-IOV技术网卡通信架构下的VF直通物理网卡的Vport,即目标虚拟子机620通过VF发送的IP数据通过Vport直接可以向外发送,这样会产生主机610侧无法对目标虚拟子机620向外发送的IP数据包进行包过滤、QoS(Quality of Service,服务质量)等管理的问题。

从而,本发明实施例中的虚拟机通信配置模块630通过向目标虚拟子机620发送ARP响应消息,所述ARP响应消息中的发送者MAC地址或以太网源地址 为目标虚拟子机620对应的主机610指定网口的MAC地址,即伪造一个ARP响应消息,将原本目标虚拟子机620发送的ARP请求消息中的目标IP地址对应的通信对端的实际MAC地址替换成主机610指定网口的MAC地址,以使目标虚拟子机620在接收到所述ARP响应消息后,可以根据所述ARP响应消息将IP数据包发送至所述目标虚拟子机620对应的主机610指定网口,从而可以由所述目标虚拟子机620对应的主机610通过指定网口接收到目标虚拟子机620后续发送的IP数据后对其进行包过滤、QoS管理后,再将经过包过滤、QoS管理的网络数据向外发送至通信对端,从而实现了在主机610侧可以对目标虚拟子机620向外发送的网络数据进行包过滤、QoS管理。

需要指出的是,上述通过APR响应方式让目标虚拟子机620将向外发送的IP数据包发向对应主机610的指定网口,仅是本发明可选实施例,在其他可选实施例中,也可以采用其他方式,例如目标虚拟子机620在驱动配置中配置IP数据包的目标MAC地址为对应主机610的指定网口,同样可以实现该目的。

进而由于本发明实施例中的主机610指定网口中转虚拟子机的IP数据包是通过配置MAC地址实现的,不再需要经过主机610侧的后端驱动处理,避免产生主机610侧的CPU性能瓶颈或对其使用寿命产生影响,充分实现利用网卡的处理能力。

本发明实施例通过在流经虚拟子机的IP数据包中配置虚拟子机对应主机的指定网口的MAC地址,使得目标虚拟子机的网络数据可以经由主机指定网口,从而可以实现对目标虚拟子机的网络数据进行包过滤、QoS管理,同时由于数据不再需要经过主机侧的后端驱动处理,避免产生主机侧的CPU性能瓶颈或对其使用寿命产生影响,充分实现利用网卡的处理能力。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1