一种VXLAN报文发送方法、VTEP及VXLAN系统
技术领域
本发明涉及通信技术领域,尤其涉及一种VXLAN报文发送方法、VTEP及VXLAN系统。
背景技术
目前虚拟扩展局域网络(英文全称:Virtual Extensible LocalArea Network,简称:VXLAN)隧道端点(英文全称:VXLAN Tunnel End Point,简称:VTEP)间的连接采取的是VTEP中的CPU通过软件发送报文与各个邻居VTEP建立通信连接,采用的方式为点对点发送,给每个邻居VTEP依次发送,依次建立连接。
示例性的,可以参照图1所示的VTEP间通信的示意图,图1中VXLAN系统中包括源VTEP以及目标VTEP(VTEPA、VTEPB以及VTEPC)。以图1为例,现有方案中,源VTEP的CPU向VTEPA、VTEPB以及VTEPC发送报文前,存在需要用各个目标VTEP对应的隧道信息封装报文的过程。由图1可知,源VTEP的CPU分别向三个目标VTEP发送报文的过程如下:源VTEP的CPU首先需要用目标VTEP对应的隧道信息封装原始协议报文,通过DMA控制器(英文全称:DirectMemory Access,中文全称:直接内存存取)将封装后的VXLAN报文发送至交换芯片中,然后该交换芯片将封装后的VXLAN报文发送至对应的目标VTEP。对于图1中的三个远端VTEP来说,源VTEP的CPU需要封装3次,得到3份封装后的VXLAN报文,DMA控制器也需要执行3次将封装后的VXLAN报文发送到交换芯片中,然后该交换芯片也需要执行3次才能将封装后的报文分别发送至VTEPA、VTEPB以及VTEPC。
基于上述的内容,当一源VTEP向N个目标VTEP发送报文时,该源VTEP的CPU需要经过N次的封装过程,DMA控制器需要执行N次发送封装报文到交换芯片,这样使得CPU发送报文的效率不高,当VXLAN下的VTEP数目增加时,该源VTEP的CPU消耗会随着VTEP数目增加,一旦VTEP数目急剧增加,将会导致该源VTEP的CPU负担过重而导致报文的发送效率降低。
发明内容
本发明的实施例提供一种VXLAN报文发送方法、VTEP及VXLAN系统,解决现有技术中由于VTEP数目增加所导致报文的发送效率降低的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明实施例的第一方面,提供一种VXLAN报文发送方法,应用于VXLAN隧道端点VTEP中,所述方法包括:
处理器在交换芯片中创建组播组,并向所述组播组中添加组播组成员,其中,所述组播组成员为对应各个目标VTEP的VXLAN隧道信息;
处理器向所述交换芯片发送需要发向所述各个目标VTEP的协议报文;
交换芯片根据所述组播组成员的个数复制所述协议报文,并分别用各个VXLAN隧道信息对各所述协议报文进行封装,以得到对应各个目标VTEP的VXLAN报文,将各所述VXLAN报文发送至对应的目标VTEP。
本发明实施例的第二方面,提供一种VTEP,所述VTEP包括:处理器和交换芯片,其中:
所述处理器,用于在所述交换芯片中创建组播组,并向所述组播组中添加组播组成员,其中,所述组播组成员为对应各个目标VTEP的VXLAN隧道信息;
所述处理器,还用于向所述交换芯片发送需要发向所述各个目标VTEP的协议报文;
所述交换芯片,用于根据所述组播组成员的个数复制所述协议报文,并分别用各个VXLAN隧道信息对各所述协议报文进行封装,以得到对应各个目标VTEP的VXLAN报文,将各所述VXLAN报文发送至对应的目标VTEP。
本发明实施例的第三方面,提供一种VXLAN系统,其特征在于,包括源VTEP,所述源VTEP为第二方面所述的VTEP,以及与所述源VTEP建立VXLAN隧道的至少一个目标VTEP;
所述目标VTEP用于接收所述源VTEP发送的VXLAN报文。
本发明实施例提供的VXLAN报文发送方法、VTEP及VXLAN系统,具体为:处理器在交换芯片中创建组播组,并向组播组中添加组播组成员,其中,组播组成员为对应各个目标VTEP的VXLAN隧道信息;处理器向交换芯片发送需要发向各个目标VTEP的协议报文;交换芯片根据组播组成员的个数复制协议报文,并分别用各个VXLAN隧道信息对各协议报文进行封装,以得到对应各个目标VTEP的VXLAN报文,将各VXLAN报文发送至对应的目标VTEP。
相比于现有技术,本方案中由于在交换芯片中创建组播组,能够在该组播组中添加各个目标VTEP的VXLAN隧道信息,使得CPU在一次的发包过程中,通过交换芯片的封装过程能够得到发向各个目标VTEP的VXLAN报文,且将该VXLAN报文通过相应的VXLAN隧道发送至相应的目标VTEP,从而提高了发包效率。随着目标VTEP数目的增多,通过本方案CPU仅仅需要执行一次协议报文的发送,通过该交换芯片能够同时进行各个VXLAN隧道信息的封装,从而降低CPU的负担,使得报文的发送效率提高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的VTEP间通信的示意图;
图2为本发明实施例提供的一种VTEP的结构示意图;
图3为本发明实施例基于图2提供的VTEP间通信的示意图;
图4为本发明实施例提供的一种VXLAN报文发送方法的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种虚拟扩展局域网络(英文全称:Virtual ExtensibleLocal Area Network,简称:VXLAN)隧道端点(英文全称:VXLAN Tunnel End Point,简称:VTEP),如图2所示,该VTEP包括:处理器11和交换芯片12,其中:
处理器11用于在交换芯片中创建组播组,并向组播组中添加组播组成员。
处理器11还用于向交换芯片12发送需要发向各个目标VTEP的协议报文。
其中,上述的组播成员为对应各个目标VTEP的VXLAN隧道信息。该VXLAN隧道为VTEP作为源VTEP的情况下,与目的VTEP之间建立的隧道,该源VTEP和目的VTEP属于同一VXLAN。
示例性的,上述的协议报文是处理器虚拟出来的,存放在内存中,通过DMA的方式去内存中取协议报文,然后将该协议报文发送至交换芯片中。
可选的,上述的向组播组中添加组播组成员的个数为至少一个。
优选的,上述的VXLAN隧道的信息包括目的MAC地址、源MAC地址、隧道目的IP地址、隧道源IP地址以及VXLAN标识。可选的,该VXLAN隧道信息还包括UDP以及VXLAN头部等信息。
如图3所示,给出了VTEP间通信的示意图,其中:将CPU和交换芯片所组成的VTEP(以下记为VTEPD)作为源VTEP,将VTEPA、VTEPB以及VTEPC作为目的VTEP,VXLAN隧道为VTEPD分别与VTEPA、VTEPB以及VTEPC之间建立的隧道,该图3中的VTEPD、VTEPA、VTEPB以及VTEPC属于同一VXLAN。
基于上述的图3,上述的VXLAN隧道的信息包括VXLAN隧道A、VXLAN隧道B以及VXLAN隧道C的信息,其中:VXLAN隧道A的信息包括:VTEPA的MAC地址、VTEPA的IP地址、VTEPD的MAC地址、VTEPD的IP地址以及VTEPD的物理端口标识;VXLAN隧道B的信息包括:VTEPB的MAC地址、VTEPB的IP地址、VTEPD的MAC地址、VTEPD的IP地址以及VTEPD的物理端口标识;VXLAN隧道C的信息包括:VTEPC的MAC地址、VTEPC的IP地址、VTEPD的MAC地址、VTEPD的IP地址以及VTEPD的物理端口标识。
交换芯片12用于根据组播组成员的个数复制协议报文,并分别用各个VXLAN隧道信息对各协议报文进行封装,以得到对应各个目标VTEP的VXLAN报文,将各VXLAN报文发送至对应的目标VTEP。
其中,上述的交换芯片具有可编程性,是一种可编程的芯片。
示例性的,仍以图3为例,交换芯片先将协议报文复制成3份;然后,分别用VXLAN隧道A、VXLAN隧道B以及VXLAN隧道C的信息对该3份报文封装,得到对应VTEPA的VXLAN报文、对应VTEPB的VXLAN报文以及对应VTEPC的VXLAN报文;最后,交换芯片将对应VTEPA的VXLAN报文发送至VTEPA,将对应VTEPB的VXLAN报文发送至VTEPB,对应VTEPC的VXLAN报文发送至VTEPC。
优选的,上述的交换芯片12在分别用各个VXLAN隧道信息对各协议报文进行封装时,具体用于:
分别将各VXLAN隧道信息作为报文的头部,添加至各协议报文中。
示例性的,上述的封装后的VXLAN报文包括报文头部和协议报文两部分,该报文格式参见下面的表1:
表1
其中,报文头部中的外层MAC中包括目的MAC地址以及源MAC地址;外层IP中包括目的IP地址以及源IP地址;外层UDP使用端口4798,但通常情况下也可以修改;VXLAN头部中包括VXLAN标识位和VNI标识位(英文全称:VXLAN Network Identifier),其中:VXLAN标识位为8bits的值,I标记位(从左到右第5个bit)必须设置为1,其余7个R标记位置0。VNI标识位为24bits的值,用来标识VXLAN覆盖网络的编号。
上述的协议报文中的内层地址可以是单播地址或组播地址。
可选的,上述的处理器11还用于:
在交换芯片中创建组播组,并向组播组中添加组播组成员之前,控制交换芯片建立与各个目标VTEP间的VXLAN隧道。
本发明实施例提供的VXLAN隧道端点VTEP,具体为:处理器在交换芯片中创建组播组,并向组播组中添加组播组成员,其中,组播组成员为对应各个目标VTEP的VXLAN隧道信息;处理器向交换芯片发送需要发向各个目标VTEP的协议报文;交换芯片根据组播组成员的个数复制协议报文,并分别用各个VXLAN隧道信息对各协议报文进行封装,以得到对应各个目标VTEP的VXLAN报文,将各VXLAN报文发送至对应的目标VTEP。
相比于现有技术,本方案中由于在交换芯片中创建组播组,能够在该组播组中添加各个目标VTEP的VXLAN隧道信息,使得在CPU在一次的发包过程中,通过交换芯片的封装过程能够得到发向各个目标VTEP的VXLAN报文,且将该VXLAN报文通过相应的VXLAN隧道发送至相应的目标VTEP,从而提高了发包效率。随着目标VTEP数目的增多,通过本方案CPU仅仅需要执行一次协议报文的发送,通过该交换芯片能够同时进行各个VXLAN隧道信息的封装,从而降低CPU的负担,使得报文的发送效率提高。
下面将基于图2对应的VTEP的实施例中的相关描述对本发明实施例提供的一种VXLAN报文发送方法进行介绍。以下实施例中与上述实施例相关的技术术语、概念等的说明可以参照上述的实施例,这里不再赘述。
本发明实施例提供一种VXLAN报文发送方法,应用于上述的VXLAN隧道端点VTEP,如图4所示,该方法包括:
201、处理器在交换芯片中创建组播组,并向组播组中添加组播组成员。
其中,上述的组播成员为组播组成员为对应各个目标VTEP的VXLAN隧道信息,VXLAN隧道为VTEP作为源VTEP的情况下,与目的VTEP之间建立的隧道,源VTEP和目的VTEP属于同一VXLAN。
可选的,上述的向组播组中添加组播组成员的个数为至少一个。
202、处理器向交换芯片发送需要发向各个目标VTEP的协议报文。
示例性的,上述的协议报文是处理器虚拟出来的,存放在内存,通过DMA的方式去内存中取原始报文,然后将该协议报文发送至交换芯片中。
示例性的,上述的VXLAN隧道的信息包括目的MAC地址、源MAC地址隧道目的IP地址、隧道源IP地址以及VXLAN标识。可选的,该VXLAN隧道的信息还包括UDP以及VXLAN头部等信息。
203、交换芯片根据组播组成员的个数复制协议报文,并分别用各VXLAN隧道信息对各协议报文进行封装,以得到对应各个目标VTEP的VXLAN报文,将各VXLAN报文发送至目标VTEP。
优选的,上述的步骤203中交换芯片在分别用各个VXLAN隧道信息对各协议报文进行封装时,具体包括:
202a、交换芯片分别将各VXLAN隧道信息作为报文的头部,添加至各协议报文中。
其中,上述的交换芯片具有可编程性,是一种可编程的芯片。
示例性的,上述的封装后的VXLAN报文包括报文头部和协议报文两部分,该报文格式参见下面的表1:
表1
其中,报文头部中的外层MAC中包括目的MAC地址以及源MAC地址;外层IP中包括目的IP地址以及源IP地址;外层UDP使用端口4798,但通常情况下也可以修改;VXLAN头部中包括VXLAN标识位和VNI标识位(英文全称:VXLAN Network Identifier),其中:VXLAN标识位为8bits的值,I标记位(从左到右第5个bit)必须设置为1,其余7个R标记位置0。VNI标识位为24bits的值,用来标识VXLAN覆盖网络的编号。
上述的原始报文中的内层地址可以是单播地址或组播地址。
可选的,在交换芯片中创建组播组,并向组播组中添加组播组成员之前,该方法还包括以下内容:
201a、处理器控制交换芯片建立与各个目标VTEP间的VXLAN隧道。
本发明实施例提供的VXLAN报文发送方法,具体为:处理器在交换芯片中创建组播组,并向组播组中添加组播组成员,其中,组播组成员为对应各个目标VTEP的VXLAN隧道信息;处理器向交换芯片发送需要发向各个目标VTEP的协议报文;交换芯片根据组播组成员的个数复制协议报文,并分别用各个VXLAN隧道信息对各协议报文进行封装,以得到对应各个目标VTEP的VXLAN报文,将各VXLAN报文发送至对应的目标VTEP。
相比于现有技术,本方案中由于在交换芯片中创建组播组,能够在该组播组中添加各个目标VTEP的VXLAN隧道信息,使得在CPU在一次的发包过程中,通过交换芯片的封装过程能够得到发向各个目标VTEP的VXLAN报文,且将该VXLAN报文通过相应的VXLAN隧道发送至相应的目标VTEP,从而提高了发包效率。随着目标VTEP数目的增多,通过本方案CPU仅仅需要执行一次原始报文的发送,通过该交换芯片能够同时进行各个VXLAN隧道信息的封装,从而降低CPU的负担,使得报文的发送效率提高。
本发明实施例提供一种VXLAN系统,该VXLAN系统包括源VTEP,该源VTEP为上文所述的VTEP,以及与源VTEP建立VXLAN隧道的至少一个目标VTEP。其中:
目标VTEP用于接收源VTEP发送的VXLAN报文。
相比于现有技术,本方案中由于源VTEP包括交换芯片和处理器,通过在源VTEP中的交换芯片中创建组播组,能够在该组播组中添加各个目标VTEP的VXLAN隧道信息,使得在CPU在一次的发包过程中,通过源VTEP中交换芯片的封装过程能够得到发向各个目标VTEP的VXLAN报文,且将该VXLAN报文通过相应的VXLAN隧道发送至相应的目标VTEP,从而提高了发包效率。随着目标VTEP数目的增多,通过本方案CPU仅仅需要执行一次协议报文的发送,通过该交换芯片能够同时进行各个VXLAN隧道信息的封装,从而降低CPU的负担,使得报文的发送效率提高。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的交换芯片和处理器,可以通过其它的方式实现。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。