一种虚拟网络内的数据转发方法及系统与流程

文档序号:13141979阅读:399来源:国知局
一种虚拟网络内的数据转发方法及系统与流程

本发明属于计算机网络领域,尤其涉及一种虚拟网络内的数据转发方法及系统。



背景技术:

目前云数据中心通常采用overlaynetwork技术对虚拟网络的数据流量进行传输,对于跨子网的东西向流量(泛指在虚拟网络内部通信流量),其是通过虚拟路由器(vrouter)进行转发,此外,虚拟路由器还承担南北向流量(泛指虚拟网络与公共网络的交互流量)转发工作。

图1是一个典型的虚拟网络的示意图,如图1所示,虚线是逻辑上的虚拟网络,实线是物理上的承载网络,网络包括多个虚拟机vm1~vm4,各虚拟机间均与同一虚拟路由器vrouter虚拟连接。云数据中心在物理网络上使用vxlan协议承载虚拟网络的数据流量。vxlan通过对虚拟流量数据报文做udp封包、解包实现跨域通信,每次封包、解包操作对通信效率及宿主机cpu性能都有一定的影响。图2为vm1到vm4的数据发送的流程图,如图2所示:

a.在vm1宿主机上,首先vm1发出的数据报文目的mac是vrouter的mac,目的ip是vm4的ip。sdn控制器根据目的mac下发对应流表,将流量指向vrouter宿主机。然后宿主机将数据报文做vxlan封包,通过物理承载网络发送至vrouter宿主机。

b.vrouter宿主机收到数据报文后,首先vxlan解包,然后根据数据报文的目的ip判断是否是本地ip,发现需要三层转发,那么修改目的的mac为vm4的mac。然后vrouter宿主机将数据报文做vxlan封包,通过物理承载网络将数据发送至vm4宿主机。

c.vm4宿主机收到数据报文后,vxlan解包,接着vm4收到数据报文。需要注意的是,此时vm4收到的数据报文的源mac是vrouter的mac。

然而,东西向流量属于虚拟网络内部流量,一般来说流量会很大,这些流量都集中到vrouter宿主机上,容易引起vrouter宿主机上网络资源竞争。此时网络资源竞争影响包括vrouter东西向、南北向流量,而且影响其他vrouter的流量效率。另外,跨子网东西向流量需要多次进行vxlan封包、解包,vrouter的三层转发,消耗宿主机的cpu性能,影响通信效率。



技术实现要素:

(一)要解决的技术问题

本发明的目的在于提供一种虚拟网络内的数据转发方法及系统,在虚拟网络内进行跨子网数据转发时,能够不经过虚拟路由器的转发,使得数据报文直接在虚拟机之间进行收发,提高东西向流量效率,降低虚拟路由器宿主机上的网络资源竞争。

(二)技术方案

本发明提供一种虚拟网络内的数据转发方法,虚拟网络包括多个虚拟机,各虚拟机间均与同一虚拟路由器虚拟连接,多个虚拟机包括第一虚拟机和第二虚拟机,方法包括:

s1,获取由第一虚拟机发送的数据报文;

s2,判断所述数据报文是否需要跨子网发送,如果是,则对该数据报文进行修改,并进入步骤s3,否则,直接进入步骤s3;

s3,令第一虚拟机将该数据报文发送至第二虚拟机。

进一步,第一虚拟机发送的数据报文包括源mac地址、目的mac地址和目的ip地址,其中,源mac地址等于第一虚拟机的mac地址,目的mac地址等于所述虚拟路由器的mac地址,目的ip地址等于第二虚拟机的ip地址;步骤s2中,对该数据报文进行修改,包括:

修改目的mac地址为第二虚拟机的mac地址,修改源mac地址为虚拟路由器的mac地址。

进一步,步骤s2中,对所述数据报文进行修改时:

判断是否存在与所述数据报文中的mac地址和目的ip地址所匹配的流表,如果存在,则根据该流表对所述该数据报文进行修改;

如果不存在,则根据所述数据报文中的mac地址和目的ip地址创建与其匹配的流表,并根据该流表对所述该数据报文进行修改。

进一步,步骤s2中,根据网络拓扑及数据报文中的目的mac地址和目的ip地址,判断所述数据报文是否需要跨子网发送。

进一步,步骤s3包括:

当第一虚拟机和第二虚拟机处于同一台宿主机上时,直接通过本地转发,使得第一虚拟机将该数据报文发送至所述第二虚拟机;

当第一虚拟机和第二虚拟机不处于同一台宿主机上时,由第一虚拟机所在的宿主机将该数据报文通过物理承载网络发送给第二虚拟机所在的宿主机,使得第一虚拟机将该数据报文发送至所述第二虚拟机。

本发明还提供一种虚拟网络内的数据转发系统,所述虚拟网络包括多个虚拟机,各虚拟机间均与一虚拟路由器虚拟连接,所述多个虚拟机包括第一虚拟机和第二虚拟机,系统包括:

报文获取模块,用于获取由第一虚拟机发送的数据报文;

判断模块;用于判断数据报文是否需要跨子网发送,若是,则对数据报文进行修改;

控制模块,用于令第一虚拟机将该数据报文发送至所述第二虚拟机。

进一步,第一虚拟机发送的数据报文包括源mac地址、目的mac地址和目的ip地址,其中,源mac地址等于第一虚拟机的mac地址,目的mac地址等于所述虚拟路由器的mac地址,目的ip地址等于第二虚拟机的ip地址;所述判断模块对该数据报文进行修改,包括:

修改目的mac地址为第二虚拟机的mac地址,修改源mac地址为虚拟路由器的mac地址。

进一步,判断模块对所述数据报文进行修改时:

判断是否存在与所述数据报文中的mac地址和目的ip地址所匹配的流表,如果存在,则根据该流表对所述该数据报文进行修改;

如果不存在,则根据所述数据报文中的mac地址和目的ip地址创建与其匹配的流表,并根据该流表对所述该数据报文进行修改。

进一步,判断模块根据网络拓扑及数据报文中的目的mac地址和目的ip地址,判断所述数据报文是否需要跨子网发送。

进一步,控制模块执行:

当第一虚拟机和第二虚拟机处于同一台宿主机上时,直接通过本地转发,使得第一虚拟机将该数据报文发送至所述第二虚拟机;

当第一虚拟机和第二虚拟机不处于同一台宿主机上时,由第一虚拟机所在的宿主机将该数据报文通过物理承载网络发送给第二虚拟机所在的宿主机,使得第一虚拟机将该数据报文发送至所述第二虚拟机。

(三)有益效果

通过本发明,当进行虚拟网络内跨子网的数据转发时,将数据报文进行地址修改后,通过物理承载网络直接将该数据报文发送给相应的虚拟机,避免采用虚拟路由器进行数据报文转发,减轻虚拟路由器的流量负担,降低虚拟路由器所在的宿主机的网络资源竞争的可能性。另外,由于无需通过虚拟路由器进行数据报文转发,从而减少了一次vxlan封包、解包过程,数据报文在宿主机与宿主机之间直接传递,极大的提高了东西向跨子网流量的通信效率。最后,虚拟路由器只需关心南北向流量的转发工作,便于集群对虚拟路由器的管理和维护。

附图说明

图1是现有技术中虚拟网络的结构示意图。

图2是现有技术中虚拟网络内的数据转发的流程图。

图3是本发明提供的虚拟网络内的数据转发方法的流程图。

图4是本发明提供的虚拟网络内的数据转发系统的结构示意图。

具体实施方式

根据结合附图对本发明示例性实施例的以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。

在本发明中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。

在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。

本发明提供一种虚拟网络内的数据转发方法及系统,方法在进行虚拟网络内跨子网的数据转发时,获取由第一虚拟机发送的数据报文,判断数据报文是否需要跨子网发送,如果是,则对该数据报文进行mac地址和ip地址修改,然后令第一虚拟机直接将修改后的数据报文发送至第二虚拟机。通过本发明的方案,能够不经过虚拟路由器的转发,使得数据报文直接在虚拟机之间进行收发,降低虚拟路由器宿主机上的网络资源竞争。

根据本发明的虚拟网络内的数据转发方法,虚拟网络包括多个虚拟机,各虚拟机间均与同一虚拟路由器虚拟连接,多个虚拟机包括第一虚拟机和第二虚拟机,方法包括:

s1,获取由第一虚拟机发送的数据报文。针对tcp/ip层的数据报文,其包括源mac地址、目的mac地址和目的ip地址,在该数据报文转发的每一跳中,该数据报文的源mac地址是这一跳发送端的mac地址,目的mac地址是这一跳的接收端(或转发端)的mac地址,目的ip地址则是本数据报文最终需要发送到的ip地址。因此,第一虚拟机发送的数据报文中,源mac地址等于第一虚拟机的mac地址,目的mac地址等于所述虚拟路由器的mac地址,目的ip地址等于第二虚拟机的ip地址。

s2,判断数据报文是否需要跨子网发送,如果是,则对该数据报文进行修改,并进入步骤s3,否则,直接进入步骤s3。在判断数据报文是否需要跨子网发送时,可以根据虚拟网络的网络拓扑、数据报文中的目的mac地址和目的ip地址,判断数据报文是否需要跨子网发送。另外,对该数据报文进行修改包括:修改目的mac地址为第二虚拟机的mac地址,修改源mac地址为虚拟路由器的mac地址。这样,在将数据报文发送至第二虚拟机后,第二虚拟机发现该报文的源mac地址为虚拟路由器的mac地址,故认为该报文是由虚拟路由器转发而来,故正常接收。否则,如果不修改报文,数据报文发送至第二虚拟机后,第二虚拟机发现该报文的源mac地址有误,导致其无法正常返回。

s3,令第一虚拟机将该数据报文发送至第二虚拟机。需要说明的是,在虚拟网络中,各个虚拟机及虚拟路由器可以存在于相同的宿主机上,也可以分布在不同的宿主机上。当第一虚拟机和第二虚拟机处于同一台宿主机上时(例如,图1中vm1和vm2),直接通过本地转发,使得第一虚拟机将该数据报文发送至第二虚拟机,当第一虚拟机和第二虚拟机不处于同一台宿主机上时(例如,图1中vm1和vm4),由第一虚拟机所在的宿主机将该数据报文通过物理承载网络发送给第二虚拟机所在的宿主机,使得第一虚拟机将该数据报文发送至所述第二虚拟机。这样,由第一虚拟机发出的数据报文并不是经由虚拟路由器转发,而是本地修改报文后从物理承载网络直接发送的方式,将该数据报文发送至第二虚拟机。

根据本发明的一种实施方式,本方法可集成与现有的sdn控制器中实现,当发生东西向流量时,判断虚拟交换机中是否存在与数据报文中的mac地址和目的ip地址所匹配的流表,如果存在,则根据该流表对该数据报文进行修改;如果不存在,sdn控制器根据数据报文中的mac地址和目的ip地址创建与其匹配的流表,并下发至虚拟交换机中,虚拟交换机根据该流表对该数据报文进行修改。需要说明的是,流表创建后存储于虚拟交换机中,以便后续报文转发时使用。

图3是本发明提供的虚拟网络内的数据转发方法的流程图,其亦是基于图1所示的虚拟网络架构。如图3所示,虚拟机vm1发送数据报文到虚拟机vm4的过程,包括:

s000,虚拟交换机判断宿主机是否有匹配流表,如果没有,虚拟交换机上报报文至sdn控制器,并进入步骤s100,否则进入步骤s200。

s100,sdn控制器获取虚拟交换机上报的报文,即vml发送的数据报文,此时,该数据报文的目的mac地址是vrouter的mac地址,目的ip是vm4的ip地址。sdn控制器根据目的mac、目的ip和网络拓扑判断是东西向跨子网通信,下发修改报文流表至虚拟交换机。

s200,虚拟交换机根据流表修改目的mac为vm4的mac,修改源mac为vrouter的mac,同时将流量指向vm4宿主机。宿主机将数据报文做vxlan封包,通过物理承载网络发送至vm4宿主机。

s300,vm4的宿主机收到数据报文后,进行vxlan解包,发现目的mac是vm4,源mac为vrouter的mac,及判定该数据报文正常,所以vm4正常接收。

图4是本发明提供的虚拟网络内的数据转发系统的结构示意图,如图4所示,系统100包括:

报文获取模块101,用于获取由第一虚拟机发送的数据报文。针对tcp/ip层的数据报文,其包括源mac地址、目的mac地址和目的ip地址,在该数据报文转发的每一跳中,该数据报文的源mac地址是这一跳发送端的mac地址,目的mac地址是这一跳的接收端(或转发端)的mac地址,目的ip地址则是本数据报文最终需要发送到的ip地址。因此,第一虚拟机发送的数据报文中,源mac地址等于第一虚拟机的mac地址,目的mac地址等于虚拟路由器的mac地址,目的ip地址等于第二虚拟机的ip地址。

判断模块102,用于判断数据报文是否需要跨子网发送,如果是,则对该数据报文进行修改,并进入步骤s3,否则,直接进入步骤s3。在判断数据报文是否需要跨子网发送时,可以根据虚拟网络的网络拓扑、数据报文中的目的mac地址和目的ip地址,判断数据报文是否需要跨子网发送。另外,对该数据报文进行修改包括:修改目的mac地址为第二虚拟机的mac地址,修改源mac地址为虚拟路由器的mac地址。这样,在将数据报文发送至第二虚拟机后,第二虚拟机发现该报文的源mac地址为虚拟路由器的mac地址,故认为该报文是由虚拟路由器转发而来,故正常接收。否则,如果不修改报文,数据报文发送至第二虚拟机后,第二虚拟机发现该报文的源mac地址有误,导致其无法正常返回。

控制模块103,用于令第一虚拟机将该数据报文发送至第二虚拟机。需要说明的是,在虚拟网络中,各个虚拟机及虚拟路由器可以存在于相同的宿主机上,也可以分布在不同的宿主机上。当第一虚拟机和第二虚拟机处于同一台宿主机上时(例如,图1中vm1和vm2),直接通过本地转发,使得第一虚拟机将该数据报文发送至第二虚拟机,当第一虚拟机和第二虚拟机不处于同一台宿主机上时(例如,图1中vm1和vm4),由第一虚拟机所在的宿主机将该数据报文通过物理承载网络发送给第二虚拟机所在的宿主机,使得第一虚拟机将该数据报文发送至所述第二虚拟机。这样,由第一虚拟机发出的数据报文并不是经由虚拟路由器转发,而是本地修改报文后从物理承载网络直接发送的方式,将该数据报文发送至第二虚拟机。

综上所述,本发明当进行虚拟网络内跨子网的数据转发时,将数据报文进行地址修改后,通过物理承载网络直接将该数据报文发送给相应的虚拟机,避免采用虚拟路由器进行数据报文转发,减轻虚拟路由器的流量负担,降低虚拟路由器所在的宿主机的网络资源竞争的可能性。另外,由于无需通过虚拟路由器进行数据报文转发,从而减少了一次vxlan封包、解包过程,数据报文在宿主机与宿主机之间直接传递,极大的提高了东西向跨子网流量的通信效率。最后,虚拟路由器只需关心南北向流量的转发工作,便于集群对虚拟路由器的管理和维护。

根据本发明各实施例的上述方法、模块和/或系统可以通过有计算能力的电子设备执行包含计算机指令的软件来实现。所述有计算能力的电子设备可以是通用处理器、数字信号处理器、专用处理器、可重新配置处理器等,但不限于此。执行这样的指令使得电子设备被配置为执行根据本发明的上述各项操作。上述各设备和/或部件可以在一个电子设备中实现,也可以在不同电子设备中实现。这些软件可以存储在计算机可读存储介质中。计算机可读存储介质存储一个或多个程序(软件模块),所述一个或多个程序包括指令,当电子设备中的一个或多个处理器执行所述指令时,所述指令使得电子设备执行本发明的方法。

这些软件可以存储为易失性存储器或非易失性存储装置的形式(比如类似rom等存储设备),不论是可擦除的还是可重写的,或者存储为存储器的形式(例如ram、存储器芯片、设备或集成电路),或者被存储在光可读介质或磁可读介质上(比如,cd、dvd、磁盘或磁带等等)。应该意识到,存储设备和存储介质是适于存储一个或多个程序的机器可读存储装置的实施例,所述一个程序或多个程序包括指令,当所述指令被执行时,实现本发明的实施例。实施例提供程序和存储这种程序的机器可读存储装置,所述程序包括用于实现本发明的任何一项权利要求所述的装置或方法的代码。此外,可以经由任何介质(比如,经由有线连接或无线连接携带的通信信号)来电传递这些程序,多个实施例适当地包括这些程序。

根据本发明各实施例的方法、模块和/或系统还可以使用例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic)或可以以用于对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。在以这些方式实现时,所使用的的软件、硬件和/或固件被编程或设计为执行根据本发明的相应上述方法、步骤和/或功能。本领域技术人员可以根据实际需要来适当地将这些系统和模块中的一个或多个,或其中的一部分或多个部分使用不同的上述实现方式来实现。这些实现方式均落入本发明的保护范围。

尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

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