数据包处理方法、装置、计算机设备和存储介质与流程

文档序号:14717679发布日期:2018-06-16 01:54阅读:172来源:国知局
数据包处理方法、装置、计算机设备和存储介质与流程

本申请涉及计算机技术领域,特别是涉及一种数据包处理方法、装置、计算机设备和存储介质。



背景技术:

随着虚拟网络技术的发展,出现了软件定义网络(Software Defined Network,SDN)技术,SDN是网络虚拟化的一种实现方式,能够实现对网络流量的灵活控制。目前,SDN网络系统中各个节点通常是利用物理节点接入,为了节约资源,会使用虚拟机来代替物理节点。

然而,在Linux系统中构建SDN网络时,Linux原生的网桥仅支持转发一个虚拟子网的数据包,不支持对处于不同虚拟子网的用户虚拟机的数据包进行转发,这就需要为每个用户虚拟机配置对应的虚拟子网端口,以接收、发送相应的数据包。显然,若在SDN网络系统中属于不同虚拟子网的用户虚拟机的超过一定数量时,为每个用户虚拟机配置相应虚拟子网端口的这种方式不仅十分浪费资源,还十分复杂。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够简化用户虚拟机对应的虚拟子网配置的数据包处理方法、装置、计算机设备和存储介质。

一种数据包处理方法,所述方法包括:

通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包;所述第一用户虚拟机与所述第二用户虚拟机分别部署在不同的宿主机,且所述第一用户虚拟机与所述第二用户虚拟机对应相同的虚拟子网标识;

创建与所述第一用户虚拟机对应的第一虚拟交换机,通过第一虚拟交换机的第一端口接收所述上行数据包;所述第一端口与所述第一用户虚拟机一一对应;

通过所述第一虚拟交换机,将与所述第一端口对应的虚拟子网标识添加到所述上行数据包中,得到更新的上行数据包,并发送所述更新的上行数据包;

配置与第一虚拟交换机连接的第二虚拟交换机,通过第二虚拟交换机的第二端口接收所述更新的上行数据包;所述第二端口对应的虚拟子网标识范围包括所述虚拟子网标识;所述第一用户虚拟机、所述第一虚拟交换机和所述第二虚拟交换机部署在相同的宿主机;

通过所述第一用户虚拟机所在宿主机的物理网卡,将更新的上行数据包转发至物理交换机;所述更新的上行数据包,用于指示所述物理交换机按照所述虚拟子网标识,将更新的上行数据包转发至所述第二用户虚拟机所在的宿主机。

上述数据包处理方法、装置、计算机设备和存储介质,在通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包之后,就通过配置好的第一虚拟交换机的第一端口接收该上行数据包,并通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包,然后通过第二虚拟交换机的第二端口接收更新的上行数据包,最后通过第一用户虚拟机所在宿主机的物理网卡,将汇集到第二虚拟交换机的更新的上行数据包转发至物理交换机,由于第二端口对应的虚拟子网标识范围包括第一端口对应的虚拟子网标识,因此完全不需要为第一用户虚拟机来配置对应虚拟子网对应的端口,简化了用户虚拟机内部的网络配置,尤其在用户虚拟机数量达到一定数量时,可以节约资源。

一种数据包处理装置,所述装置包括:

上行数据包发送模块,用于通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包;所述第一用户虚拟机与所述第二用户虚拟机分别部署在不同的宿主机,且所述第一用户虚拟机与所述第二用户虚拟机对应相同的虚拟子网标识;

上行数据包接收模块,用于创建与所述第一用户虚拟机对应的第一虚拟交换机,通过第一虚拟交换机的第一端口接收所述上行数据包;所述第一端口与所述第一用户虚拟机一一对应;

上行数据包更新模块,用于通过所述第一虚拟交换机,将与所述第一端口对应的虚拟子网标识添加到所述上行数据包中,得到更新的上行数据包,并发送所述更新的上行数据包;

更新的上行数据包接收模块,用于配置与第一虚拟交换机连接的第二虚拟交换机,通过第二虚拟交换机的第二端口接收所述更新的上行数据包;所述第二端口对应的虚拟子网标识范围包括所述虚拟子网标识;所述第一用户虚拟机、所述第一虚拟交换机和所述第二虚拟交换机部署在相同的宿主机;

更新的上行数据包发送模块,用于通过所述第一用户虚拟机所在宿主机的物理网卡,将更新的上行数据包转发至物理交换机;所述更新的上行数据包,用于指示所述物理交换机按照所述虚拟子网标识,将更新的上行数据包转发至所述第二用户虚拟机所在的宿主机。

一种数据包处理方法,所述方法包括:

通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包;所述下行数据包由第二用户虚拟机发起;所述第一用户虚拟机与所述第二用户虚拟机分别部署在不同的宿主机,且所述第一用户虚拟机与所述第二用户虚拟机对应相同的虚拟子网标识;

按照所述下行数据包中的虚拟子网标识,通过所述第二虚拟交换机的第二端口,将所述下行数据包发送至第一虚拟交换机;所述第二端口对应的虚拟子网标识范围包括所述虚拟子网标识;所述第一用户虚拟机、所述第一虚拟交换机和所述第二虚拟交换机部署在相同的宿主机;

通过所述第一虚拟交换机从所述下行数据包中剔除所述虚拟子网标识;

通过所述第一虚拟交换机的、与所述第一用户虚拟机一一对应的第一端口,将已剔除所述虚拟子网标识的下行数据包发送至所述第一用户虚拟机。

上述数据包处理方法、装置、计算机设备和计算机可读存储介质,通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包,并按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机,然后通过第一虚拟交换机从下行数据包中剔除虚拟子网标识,就可以将已剔除虚拟子网标识的下行数据包通过第一虚拟交换机的、与第一用户虚拟机一一对应的第一端口发送至第一用户虚拟机,由于最后到达第一用户虚拟机的数据包没有虚拟子网标识,就不需要为第一用户虚拟机来配置对应虚拟子网以在第一用户虚拟机内部来读取对应的虚拟子网标识,简化了用户虚拟机内部的网络配置。

一种数据包处理装置,所述装置包括:

下行数据包接收模块,用于通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包;所述下行数据包由第二用户虚拟机发起;所述第一用户虚拟机与所述第二用户虚拟机分别部署在不同的宿主机,且所述第一用户虚拟机与所述第二用户虚拟机对应相同的虚拟子网标识。

下行数据包第一发送模块,用于按照所述下行数据包中的虚拟子网标识,通过所述第二虚拟交换机的第二端口,将所述下行数据包发送至第一虚拟交换机;所述第二端口对应的虚拟子网标识范围包括所述虚拟子网标识;所述第一用户虚拟机、所述第一虚拟交换机和所述第二虚拟交换机部署在相同的宿主机。

剔除模块,用于通过所述第一虚拟交换机从所述下行数据包中剔除所述虚拟子网标识。

下行数据包第二发送模块,用于通过所述第一虚拟交换机的、与所述第一用户虚拟机一一对应的第一端口,将已剔除所述虚拟子网标识的下行数据包发送至所述第一用户虚拟机。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据包处理方法。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据包处理方法。

附图说明

图1为一个实施例中数据包处理方法的应用场景图;

图2为一个实施例中数据包处理方法的流程示意图;

图3为另一个实施例中数据包处理方法的流程示意图;

图4为一个具体的实施例中数据包处理方法的流程示意图;

图5为一个具体的实施例中对第一用户虚拟机向第二用户虚拟机发送的数据包处理的框架示意图;

图6为一个实施例中数据包处理装置的结构框图;

图7为另一个实施例中数据包处理装置的结构框图;

图8为一个实施例中数据包处理装置的结构框图;

图9为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的数据包处理方法,可以应用于如图1所示的应用环境中。其中,第一用户虚拟机102与第一虚拟交换机104建立连接;第一虚拟交换机104与第二虚拟交换机106建立连接;第一用户虚拟机102、第一虚拟交换机104和第二虚拟交换机106部署在第一宿主机100上;第一宿主机100通过网络与物理交换机200连接,以将数据包发送至第二用户虚拟机302所在的第二宿主机300;第一用户虚拟机102与第二用户虚拟机302属于同一个虚拟子网(Virtual Local Area Network,VLAN)。第一宿主机100和第二宿主机300可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种数据包处理方法,以该方法应用于图1中的第一宿主机100为例进行说明,包括以下步骤:

S202,通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包;第一用户虚拟机与第二用户虚拟机分别部署在不同的宿主机,且第一用户虚拟机与第二用户虚拟机对应相同的虚拟子网标识。

其中,上行数据包是通过用户虚拟机所在的宿主机向网络发送的数据包。第一用户虚拟机和第二用户虚拟机分别为在不同的宿主机上创建的用于为用户提供计算资源和服务资源的虚拟机。第一用户虚拟机和第二用户虚拟机被配置为属于同一虚拟子网、且部署在不同的宿主机上。

具体地,在宿主机上创建了第一用户虚拟机之后,为第一用户虚拟机配置对应的虚拟网卡,并配置该虚拟网卡所支持的虚拟子网,通过第一用户的虚拟网卡发出针对第二用户虚拟机的上行数据包。

S204,创建与第一用户虚拟机对应的第一虚拟交换机,通过第一虚拟交换机的第一端口接收上行数据包;第一端口与第一用户虚拟机一一对应。

其中,第一虚拟交换机用于对所支持的虚拟子网内部的数据包进行转发。比如,第一虚拟交换机所支持的虚拟子网范围为VLAN1000~VLAN2000,那么第一虚拟交换机就能对接收到的该虚拟子网范围内的数据包进行转发。

具体地,通过创建第一用户虚拟机对应的虚拟交换机,并配置第一虚拟交换机的第一端口与第一用户虚拟机的虚拟网卡对应,通过第一虚拟交换机的第一端口来接收第一用户虚拟机发送的上行数据包,并通过该第一端口接管第一用户虚拟机的上、下行数据包。可通过执行ovs-vsctl add-br ovs-switch命令创建与第一用户虚拟机对应的虚拟交换机。

在一个实施例中,通过为第一虚拟交换机配置与各个用户虚拟机对应的端口,各个端口与各个用户虚拟机的虚拟网卡一一对应,这样就可以通过第一虚拟交换机接管与各个用户虚拟机相关的数据包。

S206,通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包,并发送更新的上行数据包。

其中,虚拟子网标识用于唯一反映数据包所对应的虚拟子网的信息。具有相同的虚拟子网标识的数据包可以在同一个虚拟子网内传送,而具有不同的虚拟子网标识的数据包通常需要经过虚拟机交换机来实现传送。

具体地,通过第一用户虚拟机发送的上行数据包并不携带子网标识,在第一虚拟交换机通过第一端口接收到第一用户虚拟机通过对应的虚拟网卡发送的上行数据包之后,由于第一端口与第一用户虚拟机的虚拟网卡一一对应,就可以将与该第一端口对应的虚拟子网标识添加至上行数据包中,得到更新的上行数据包,然后将更新的上行数据包发送至第二虚拟交换机。

S208,配置与第一虚拟交换机连接的第二虚拟交换机,通过第二虚拟交换机的第二端口接收更新的上行数据包;第二端口对应的虚拟子网标识范围包括虚拟子网标识;第一用户虚拟机、第一虚拟交换机和第二虚拟交换机部署在相同的宿主机。

其中,第二虚拟交换机用于对第一虚拟交换机之间传送的数据包进行转发。第二虚拟交换机的第二端口所支持的虚拟子网范围为若干个第一虚拟交换机所支持的虚拟子网范围的合并范围。

具体地,通过配置第二虚拟交换机的第二端口所支持的虚拟子网范围,该范围包括添加的虚拟子网标识对应的虚拟子网。在第一虚拟机添加了虚拟子网标识的上行数据包之后,第一虚拟交换机检查到该数据包可以被继续下发,就发送至第二虚拟交换机,第二虚拟交换机就可以通过第二端口接收到更新的上行数据包。

可以理解,宿主机上的所有用户虚拟机发送的上行数据包都可以汇集至第二虚拟交换机,由第二虚拟交换机转发至物理网卡或转发至第二虚拟交换机对应的其它端口。

比如,第一虚拟交换机的出端口支持的虚拟子网范围为:

VLAN1000-VLAN2000,那么第二虚拟交换机上的就有支持接收第一虚拟交换机从第一虚拟交换机的出端口发送的上行数据包的端口。

S210,通过第一用户虚拟机所在宿主机的物理网卡,将更新的上行数据包转发至物理交换机;更新的上行数据包,用于指示物理交换机按照虚拟子网标识,将更新的上行数据包转发至第二用户虚拟机所在的宿主机。

具体地,在第二虚拟交换机接收到添加了虚拟子网标识的更新的上行数据包之后,检查到该上行数据包可以继续被下发,就通过宿主机的物理网卡将更新的上行数据包发送出去,由物理交换机接收之后,按照更新的上行数据包中的虚拟子网标识,将其转发至第二用户虚拟机所在的宿主机。

在一个实施例中,可通过执行brctl addif br1A指令把第一用户虚拟机所在的宿主机的物理网卡A添加到第二虚拟交换机中,以使第二用户虚拟机将接收到的更新的上行数据包发送通过宿主机的物理网卡转发至网络。

上述数据包处理方法中,在通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包之后,就通过配置好的第一虚拟交换机的第一端口接收上行数据包,并通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包,然后通过第二虚拟交换机的第二端口接收更新的上行数据包,最后通过第一用户虚拟机所在宿主机的物理网卡,将汇集到第二虚拟交换机的更新的上行数据包转发至物理交换机,由于第二端口对应的虚拟子网标识范围包括虚拟子网标识,因此完全不需要为第一用户虚拟机来配置对应虚拟子网对应的端口,简化了用户虚拟机内部的网络配置,尤其在用户虚拟机数量达到一定数量时,可以节约资源。

在一个实施例中,发送更新的上行数据包的步骤具体包括:通过第一虚拟交换机查询相应的第一网络配置文件;按照第一网络配置文件,查询第一虚拟交换机的各端口各自对应的虚拟子网标识;当查询到与第一端口对应相同虚拟子网标识的端口时,通过查询到的端口发送更新的上行数据包。

其中,第一网络配置文件是存储了与第一虚拟交换机对应的网络配置的文件。第一网络配置文件中存储了第一虚拟交换机上各端口所对应的虚拟子网标识。

具体地,在通过第一虚拟交换机对应的第一端口接收到第一用户虚拟机发送的上行数据包之后,为上行数据包添加第一端口对应的虚拟子网标识,查询相应的第一网络配置文件,查询到各个端口各自对应的虚拟子网标识,通过查询到的与第一端口对应相同虚拟子网标识的端口时,就通过查询到的该端口发送更新的上行数据包。

比如,第一虚拟交换机查询到有A、B、C、D四个端口对应了与第一端口对应的虚拟子网标识,其中D端口还可以是支持一个虚拟子网范围的端口,该范围包含该虚拟子网标识,那么第一虚拟交换机就可以将更新的上行数据包转发至这个四个端口。

在一个实施例中,第一虚拟交换机在转发更新的上行数据包时,并不会将该数据包转发至第一虚拟交换机的第一端口。

在一个实施例中,第一用户虚拟机所在的宿主机至少有两个物理网卡。其中一个物理网卡用于对接收的上下行数据包进行转发,另一个物理网卡用于接收推送的网络配置文件,网络配置文件用于修改虚拟交换机和用户虚拟机对应的网络配置。第一虚拟交换机就可以通过用于接收推送的网络配置文件的物理网卡来接收对应的网络配置文件。

在本实施例中,第一虚拟交换机通过查询各个端口对应的虚拟子网标识,按照查询到与第一端口对应的虚拟子网标识对应的端口转发更新的上行数据包,以实现将第一用户虚拟机发送的上行数据包下发至第二虚拟交换机。

在一个实施例中,通过第二虚拟交换机的第二端口接收更新的上行数据包,具体包括:查询第二虚拟交换机的各端口各自对应的虚拟子网标识范围;确定更新的上行数据包中的虚拟子网标识所在的虚拟子网标识范围;通过确定的虚拟子网标识范围所对应的第二端口,接收更新的上行数据包。

其中,第二虚拟交换机的各端口都对应了一个虚拟子网标识范围。比如,第二虚拟交换机的端口tap0用于接收OpenStack环境中的计算节点中所有用户虚拟机发送的上行数据包,该计算节点对应的虚拟子网标识范围是VLAN100~VLAN200;第二虚拟交换机的端口tap1用于接收OpenStack环境中的控制节点中所有虚拟控制器发送的上行数据包,该控制节点对应的虚拟子网标识范围是VLAN300~VLAN500。

具体地,通过为第二虚拟交换机的各个端口配置对应的虚拟子网标识范围,在第一虚拟交换机发送了更新的上行数据包之后,就查询第二虚拟交换机的各个端口各自第一的虚拟子网标识范围,确定更新的上行数据包中添加的虚拟子网标识所在的虚拟子网标识范围,查找到确定的虚拟子网标识范围对应的第二端口,就可以通过第二端口来接收到该数据包。

在一个实施例中,第二虚拟交换机的各个端口在接收到各个更新的上行数据包之后,按照接收的顺序将更新的上行数据包转发出去。比如,对于同一个端口先接收到的更新的数据包就先转发;对于不同端口同时接收到的更新的数据包按照各个端口预设优先级进行转发。

在本实施例中,通过查询第二虚拟交换机的各端口对应的虚拟子网标识范围,并确定更新的上行数据包中虚拟子网标识所在的虚拟子网标识范围,就可以确定第二虚拟交换机上用于接收更新的上行数据包的端口,对应了一个虚拟子网标识范围的端口能够实现属于同一个虚拟子网、且部署在不同宿主机的用户虚拟机之间的通信。

如图3所示,在一个实施例中,数据包处理方法还包括以下步骤:

S302,通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包;下行数据包由第二用户虚拟机发起。

其中,下行数据包是由网络发送至第一用户虚拟机所在的宿主机的数据包。针对第一用户虚拟机的下行数据包是携带了第一用户虚拟机所对应的虚拟子网标识的数据包。具体地,通过将第一用户虚拟机所在的宿主机的物理网卡添加第二虚拟交换机,以使到达宿主机的物理网卡的数据包可以由第二虚拟交换机接收,并转发至第一虚拟交换机。

S304,按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机。

其中,下行数据包对应的虚拟子网标识属于第二虚拟交换机的第二端口所对应的虚拟子网标识范围。具体地,第二虚拟交换机在接收到携带有虚拟子网标识的下行数据包之后,从下行数据包中提取出对应的虚拟子网标识,按照提取的虚拟子网标识从第二端口将下行数据包转发至第一虚拟交换机。

S306,通过第一虚拟交换机从下行数据包中剔除虚拟子网标识。

由于从第一用户虚拟机发出的上行数据包是没有虚拟子网标识的,同样地,要达到第一用户虚拟机的端口的下行数据包也不携带虚拟子网标识,因此在下行数据包到达第一用户虚拟机的端口之前需要剔除数据包中的虚拟子网标识。这样就不需要为用户虚拟机配置如何识别虚拟子网的标识,也不需要在用户虚拟机内部判断是否要接收或转发下行数据包,使得用户虚拟机内网络配置明显简化。

具体地,第一虚拟交换机接收到下行数据包之后,从下行数据包中提取对应的虚拟子网标识,从下行数据包中剔除该虚拟子网标识。

S308,通过第一虚拟交换机的第一端口,将已剔除虚拟子网标识的下行数据包发送至第一用户虚拟机。

具体地,第一虚拟交换机在识别了下行数据包对应的虚拟子网标识后,查询第一虚拟交换机的各端口对应的虚拟子网标识,确定与下行数据包对应的虚拟子网标识相同的第一端口,将已剔除虚拟子网标识的下行数据包通过第一端口发送至第一用户虚拟机。

在本实施例中,通过第一虚拟交换机在接收到第二虚拟交换机上报的下行数据包之后,剔除下行数据包中的虚拟子网标识,这样使得到达第一用户虚拟机的下行数据包已经不携带虚拟子网标识。

在一个实施例中,按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机的步骤具体包括:查询第二虚拟交换机的各端口各自对应的虚拟子网标识范围;确定下行数据包中的虚拟子网标识所在的虚拟子网标识范围;通过确定的虚拟子网标识范围所对应的第二端口,将下行数据包发送至第一虚拟交换机。

其中,由于第二虚拟交换机各端口都被配置为对应了一个虚拟子网标识范围,需要通过包含下行数据包中的虚拟子网标识的端口将下行数据包转发至第一虚拟交换机。

具体地,在第二虚拟交换机接收到下行数据包之后,查询第二虚拟交换机各端口各自对应的虚拟子网标识范围,确定下行数据包对应的虚拟子网标识所在的虚拟子网标识范围对应的第二端口,通过该第二端口将下行数据包发送至第一虚拟交换机。

在一个实施例中,若仅查询到第二虚拟交换机接收下行数据包的端口对应的虚拟子网标识范围包括下行数据包的虚拟子网标识,则对下行数据包作丢弃处理。

在上述实施例中,第二虚拟交换机在接收到下行数据包后,通过查询第二虚拟交换机对应的虚拟子网标识范围,确定下行数据包中的虚拟子网标识所在的虚拟子网标识范围,就可以通过该虚拟子网标识范围对应的第二端口将下行数据包转发至第一虚拟交换机。

在一个实施例中,第一端口为ACCESS类型的端口;第二端口为TRUNK类型的端口;第一用户虚拟机和第二用户虚拟机运行在OpenStack中的计算节点上。

其中,ACCESS(访问连接)类型的端口仅对应一个VLAN。比如,与第一用户虚拟机的虚拟网卡对应的第一虚拟交换机的第一端口为ACCESS类型的端口。TRUNK(汇聚连接)类型的端口对应多个VLAN,即对应了一个虚拟子网标识范围,可以接收和发送多个VLAN的数据包。比如,第二虚拟交换机的第二端口为TRUNK类型的端口。第一用户虚拟机和第二用户虚拟机是运行在OpenStack中的计算节点上的虚拟交换机。该计算节点上可以运行有多个属于多个VLAN的用户虚拟机。第一虚拟交换机和第二虚拟交换机可以是OpenStack环境中的OVS交换机。

在一个实施例中,第一用户虚拟机所在的宿主机上有多个计算节点,每个计算节点对应了不同的虚拟子网标识范围,虚拟子网标识范围是计算节点中各个用户虚拟机对应的虚拟子网标识的合并范围。

如图4所示,在一个具体的实施例中数据包处理方法的流程示意图。该数据包处理方法具体包括如下步骤:

S401,通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包。

S402,创建与第一用户虚拟机对应的第一虚拟交换机,通过第一虚拟交换机的第一端口接收上行数据包。

S403,通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包。

S404,通过第一虚拟交换机查询相应的第一网络配置文件。

S405,通过第一虚拟交换机,按照第一网络配置文件,查询第一虚拟交换机的各端口各自对应的虚拟子网标识。

S406,当通过第一虚拟交换机查询到与第一端口对应相同虚拟子网标识的端口时,通过查询到的端口发送更新的上行数据包。

S407,配置与第一虚拟交换机连接的第二虚拟交换机,通过第二虚拟交换机查询第二虚拟交换机的各端口各自对应的虚拟子网标识范围。

S408,通过第二虚拟交换机确定更新的上行数据包中的虚拟子网标识所在的虚拟子网标识范围。

S409,通过确定的虚拟子网标识范围所对应的第二端口,接收更新的上行数据包。

S410,通过第一用户虚拟机所在宿主机的物理网卡,将更新的上行数据包转发至物理交换机。

S411,通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包。

S412,按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机。

S413,通过第一虚拟交换机从下行数据包中剔除虚拟子网标识。

S414,通过第一虚拟交换机的第一端口,将已剔除虚拟子网标识的下行数据包发送至第一用户虚拟机。

上述数据包处理方法,在通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包之后,就通过配置好的第一虚拟交换机的第一端口接收上行数据包,并通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包,然后通过第二虚拟交换机的第二端口接收更新的上行数据包,最后通过第一用户虚拟机所在宿主机的物理网卡,将汇集到第二虚拟交换机的更新的上行数据包转发至物理交换机,由于第二端口对应的虚拟子网标识范围包括虚拟子网标识,因此完全不需要为第一用户虚拟机来配置对应虚拟子网对应的端口,简化了用户虚拟机内部的网络配置,尤其在用户虚拟机数量达到一定数量时,可以节约资源。

在一个实施例中,提供了一种数据包处理方法,以该方法应用于图1中的第二宿主机300为例进行说明,包括以下步骤:通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包;下行数据包由第二用户虚拟机发起;第一用户虚拟机与第二用户虚拟机分别部署在不同的宿主机,且第一用户虚拟机与第二用户虚拟机对应相同的虚拟子网标识;按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机;第二端口对应的虚拟子网标识范围包括虚拟子网标识;第一用户虚拟机、第一虚拟交换机和第二虚拟交换机部署在相同的宿主机;通过第一虚拟交换机从下行数据包中剔除虚拟子网标识;通过第一虚拟交换机的、与第一用户虚拟机一一对应的第一端口,将已剔除虚拟子网标识的下行数据包发送至第一用户虚拟机。

在本实施例中,数据包处理方法,通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包,并按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机,然后通过第一虚拟交换机从下行数据包中剔除虚拟子网标识,就可以将已剔除虚拟子网标识的下行数据包通过第一虚拟交换机的、与第一用户虚拟机一一对应的第一端口发送至第一用户虚拟机,由于最后到达第一用户虚拟机的数据包没有虚拟子网标识,就不需要为第一用户虚拟机来配置对应虚拟子网以在第一用户虚拟机内部来读取对应的虚拟子网标识,简化了用户虚拟机内部的网络配置。

如图5所示,为一个实施例中,对第一用户虚拟机发送的针对第二用户虚拟机的数据包进行处理的示意图。第一用户虚拟机102和第二用户虚拟机302所对应的虚拟子网标识为VLAN1000,具体地,第一用户虚拟机102通虚拟网卡102a将数据包发送至第一虚拟交换机104,由于第一虚拟交换机104上的端口104a对应的虚拟子网标识被配置为与第一用户虚拟机102对应的虚拟子网相同,因此,第一虚拟交换机104通过端口104a接收该数据包;在第一虚拟交换机104接收到该数据包之后,检查到该数据包由端口104a接收,就为数据包添加与端口104a对应的虚拟子网标识VLAN1000,第一虚拟交换机104检查到端口104b所对应的虚拟子网标识范围包括VLAN1000,就通过端口104b转发至第二虚拟交换机106;由于第二虚拟交换机106的端口106a对应的虚拟子网标识被配置为包括104b对应的虚拟子网标识范围,就可以通过106a接收到添加了虚拟子网标识的数据包,第一宿主机100的物理网卡100a被添加到了第二虚拟交换机106上,因此第二虚拟交换机就可以将数据包转发给第一宿主机100对应的物理网卡100a。可以理解,第一虚拟交换机104和第二虚拟交换机106可以实现对不同的虚拟子网标识的数据流进行汇聚和转发。

从图中还可以看出,第一宿主机100上可以配置有多个计算节点,每个计算节点对应了不同的虚拟子网标识范围,最后都汇聚到第一宿主机100的第二虚拟机交换机106上。

数据包通过第一宿主机100的物理网卡100a转发到物理交换机200上,然后有物理交换机通过网络转发至第二宿主机300,第二宿主机300对应的第二虚拟交换机306在接收到携带有虚拟子网标识的数据包之后,查找包含该虚拟子网标识的虚拟子网标识范围对应的端口306a,从端口306a将数据包转发至第二宿主机300对应的第一虚拟交换机304,由第一虚拟交换机304识别数据包携带的虚拟子网标识VLAN1000并从数据包中剔除该虚拟子网标识,由于第一虚拟交换机304对应的端口304a被配置为对应了虚拟子网标识VLAN1000,因此就可以通过该端口将剔除了虚拟子网标识的数据包发送至用户虚拟机302,就完成了数据包的整个处理过程。

应该理解的是,虽然图2-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图6所示,提供了一种数据包处理装置600,包括:上行数据包发送模块602、上行数据包接收模块604、上行数据包更新模块606、更新的上行数据包接收模块608和更新的上行数据包发送模块610,其中:

上行数据包发送模块602,用于通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包;第一用户虚拟机与第二用户虚拟机分别部署在不同的宿主机,且第一用户虚拟机与第二用户虚拟机对应相同的虚拟子网标识;

上行数据包接收模块604,用于创建与第一用户虚拟机对应的第一虚拟交换机,通过第一虚拟交换机的第一端口接收上行数据包;第一端口与第一用户虚拟机一一对应;

上行数据包更新模块606,用于通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包,并发送更新的上行数据包;

更新的上行数据包接收模块608,用于配置与第一虚拟交换机连接的第二虚拟交换机,通过第二虚拟交换机的第二端口接收更新的上行数据包;第二端口对应的虚拟子网标识范围包括虚拟子网标识;第一用户虚拟机、第一虚拟交换机和第二虚拟交换机部署在相同的宿主机;

更新的上行数据包发送模块610,用于通过第一用户虚拟机所在宿主机的物理网卡,将更新的上行数据包转发至物理交换机;更新的上行数据包,用于指示物理交换机按照虚拟子网标识,将更新的上行数据包转发至第二用户虚拟机所在的宿主机。

在一个实施例中,如图7所示,数据包处理装置600还包括:

下行数据包接收模块702,用于通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包;下行数据包由第二用户虚拟机发起;

下行数据包转发模块704,用于按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机;

虚拟子网标识剔除模块706,用于通过第一虚拟交换机从下行数据包中剔除虚拟子网标识;

更新的下行数据包发送模块708,用于通过第一虚拟交换机的第一端口,将已剔除虚拟子网标识的下行数据包发送至第一用户虚拟机。

在一个实施例中,下行数据包转发模块704还用于查询第二虚拟交换机的各端口各自对应的虚拟子网标识范围;确定下行数据包中的虚拟子网标识所在的虚拟子网标识范围;通过确定的虚拟子网标识范围所对应的第二端口,将下行数据包发送至第一虚拟交换机。

在一个实施例中,第一端口为ACCESS类型的端口;第二端口为TRUNK类型的端口;第一用户虚拟机和第二用户虚拟机运行在OpenStack中的计算节点上。

上述数据包处理装置600,在通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包之后,就通过配置好的第一虚拟交换机的第一端口接收上行数据包,并通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包,然后通过第二虚拟交换机的第二端口接收更新的上行数据包,最后通过第一用户虚拟机所在宿主机的物理网卡,将汇集到第二虚拟交换机的更新的上行数据包转发至物理交换机,由于第二端口对应的虚拟子网标识范围包括虚拟子网标识,因此完全不需要为第一用户虚拟机来配置对应虚拟子网对应的端口,简化了用户虚拟机内部的网络配置,尤其在用户虚拟机数量达到一定数量时,可以节约资源。

在一个实施例中,如图8所示,提供了一种数据包处理装置800,包括:下行数据包接收模块802、下行数据包第一发送模块804、剔除模块806和下行数据包第二发送模块808,其中:

下行数据包接收模块802,用于通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包;下行数据包由第二用户虚拟机发起;第一用户虚拟机与第二用户虚拟机分别部署在不同的宿主机,且第一用户虚拟机与第二用户虚拟机对应相同的虚拟子网标识。

下行数据包第一发送模块804,用于按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机;第二端口对应的虚拟子网标识范围包括虚拟子网标识;第一用户虚拟机、第一虚拟交换机和第二虚拟交换机部署在相同的宿主机。

剔除模块806,用于通过第一虚拟交换机从下行数据包中剔除虚拟子网标识。

下行数据包第二发送模块808,用于通过第一虚拟交换机的、与第一用户虚拟机一一对应的第一端口,将已剔除虚拟子网标识的下行数据包发送至第一用户虚拟机。

上述数据包处理装置800,通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包,并按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机,然后通过第一虚拟交换机从下行数据包中剔除虚拟子网标识,就可以将已剔除虚拟子网标识的下行数据包通过第一虚拟交换机的、与第一用户虚拟机一一对应的第一端口发送至第一用户虚拟机,由于最后到达第一用户虚拟机的数据包没有虚拟子网标识,就不需要为第一用户虚拟机来配置对应虚拟子网以在第一用户虚拟机内部来读取对应的虚拟子网标识,简化了用户虚拟机内部的网络配置。

关于数据包处理装置的具体限定可以参见上文中对于数据包处理方法的限定,在此不再赘述。上述数据包处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是第一宿主机100或第二宿主机300,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的宿主机通过网络连接通信。该计算机程序被处理器执行时以实现一种数据包处理方法。

本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包;第一用户虚拟机与第二用户虚拟机分别部署在不同的宿主机,且第一用户虚拟机与第二用户虚拟机对应相同的虚拟子网标识;创建与第一用户虚拟机对应的第一虚拟交换机,通过第一虚拟交换机的第一端口接收上行数据包;第一端口与第一用户虚拟机一一对应;通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包,并发送更新的上行数据包;配置与第一虚拟交换机连接的第二虚拟交换机,通过第二虚拟交换机的第二端口接收更新的上行数据包;第二端口对应的虚拟子网标识范围包括虚拟子网标识;第一用户虚拟机、第一虚拟交换机和第二虚拟交换机部署在相同的宿主机;通过第一用户虚拟机所在宿主机的物理网卡,将更新的上行数据包转发至物理交换机;更新的上行数据包,用于指示物理交换机按照虚拟子网标识,将更新的上行数据包转发至第二用户虚拟机所在的宿主机。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包;第一用户虚拟机与第二用户虚拟机分别部署在不同的宿主机,且第一用户虚拟机与第二用户虚拟机对应相同的虚拟子网标识;创建与第一用户虚拟机对应的第一虚拟交换机,通过第一虚拟交换机的第一端口接收上行数据包;第一端口与第一用户虚拟机一一对应;通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包,并发送更新的上行数据包;配置与第一虚拟交换机连接的第二虚拟交换机,通过第二虚拟交换机的第二端口接收更新的上行数据包;第二端口对应的虚拟子网标识范围包括虚拟子网标识;第一用户虚拟机、第一虚拟交换机和第二虚拟交换机部署在相同的宿主机;通过第一用户虚拟机所在宿主机的物理网卡,将更新的上行数据包转发至物理交换机;更新的上行数据包,用于指示物理交换机按照虚拟子网标识,将更新的上行数据包转发至第二用户虚拟机所在的宿主机。

上述计算机设备和计算机可读存储介质,在通过第一用户虚拟机发出针对第二用户虚拟机的上行数据包之后,就通过配置好的第一虚拟交换机的第一端口接收上行数据包,并通过第一虚拟交换机,将与第一端口对应的虚拟子网标识添加到上行数据包中,得到更新的上行数据包,然后通过第二虚拟交换机的第二端口接收更新的上行数据包,最后通过第一用户虚拟机所在宿主机的物理网卡,将汇集到第二虚拟交换机的更新的上行数据包转发至物理交换机,由于第二端口对应的虚拟子网标识范围包括虚拟子网标识,因此完全不需要为第一用户虚拟机来配置对应虚拟子网对应的端口,简化了用户虚拟机内部的网络配置,尤其在用户虚拟机数量达到一定数量时,可以节约资源。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包;下行数据包由第二用户虚拟机发起;第一用户虚拟机与第二用户虚拟机分别部署在不同的宿主机,且第一用户虚拟机与第二用户虚拟机对应相同的虚拟子网标识;按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机;第二端口对应的虚拟子网标识范围包括虚拟子网标识;第一用户虚拟机、第一虚拟交换机和第二虚拟交换机部署在相同的宿主机;通过第一虚拟交换机从下行数据包中剔除虚拟子网标识;通过第一虚拟交换机的、与第一用户虚拟机一一对应的第一端口,将已剔除虚拟子网标识的下行数据包发送至第一用户虚拟机。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包;下行数据包由第二用户虚拟机发起;第一用户虚拟机与第二用户虚拟机分别部署在不同的宿主机,且第一用户虚拟机与第二用户虚拟机对应相同的虚拟子网标识;按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机;第二端口对应的虚拟子网标识范围包括虚拟子网标识;第一用户虚拟机、第一虚拟交换机和第二虚拟交换机部署在相同的宿主机;通过第一虚拟交换机从下行数据包中剔除虚拟子网标识;通过第一虚拟交换机的、与第一用户虚拟机一一对应的第一端口,将已剔除虚拟子网标识的下行数据包发送至第一用户虚拟机。

上述计算机设备和计算机可读存储介质,通过第二虚拟交换机接收物理交换机转发的针对第一用户虚拟机的下行数据包,并按照下行数据包中的虚拟子网标识,通过第二虚拟交换机的第二端口,将下行数据包发送至第一虚拟交换机,然后通过第一虚拟交换机从下行数据包中剔除虚拟子网标识,就可以将已剔除虚拟子网标识的下行数据包通过第一虚拟交换机的、与第一用户虚拟机一一对应的第一端口发送至第一用户虚拟机,由于最后到达第一用户虚拟机的数据包没有虚拟子网标识,就不需要为第一用户虚拟机来配置对应虚拟子网以在第一用户虚拟机内部来读取对应的虚拟子网标识,简化了用户虚拟机内部的网络配置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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