本申请涉及数据通信技术领域,尤其涉及一种组播方法及vtep设备。
背景技术:
虚拟可扩展局域网(virtualextensiblelocalareanetwork,简称vxlan)是一种网络虚拟化技术,用于提供更多的2层网段,以满足大型云计算的需求。目前,vxlan对于广播、未知单播和组播(broadcast,unknownunicast,multicast,简称bum)报文的转发方法相同。具体的,vxlan网络中的vxlan隧道终结端点(vxlantunnelendpoint,简称vtep)根据动态学习到的bum成员或者静态配置的bum成员列表,建立bum复制表。在某一个vtep接收到bum流量之后,该vtep根据bum复制表,将bum流量发送至vxlan网络中的其他vtep。
但是,在组播场景中,对于特定的组播组,vxlan网络中一般只有部分vtep需要接收组播流量,而不是所有的vtep都需要接收组播流量。因此,上述组播方法会导致组播流量在vxlan网络中泛洪,造成网络带宽的浪费。
技术实现要素:
本申请提供一种组播方法,用于解决组播流量在vxlan网络中出现泛洪的问题。
为到达上述目的,本申请采用如下方案:
第一方面,提供一种组播方法,该方法包括:本端vtep接收远端vtep发送的第一vxlan报文;其中,所述第一vxlan报文包括:所述远端vtep的地址,目标虚拟扩展局域网网络标识vni、目标虚拟局域网vlan标识,以及组播加入报文;所述组播加入报文包含目标组播组的地址;所述本端vtep根据第一vxlan报文,创建目标组播转发表,并将所述远端vtep的地址加入到所述目标组播转发表的复制表中;其中,所述目标组播转发表对应的关键字包括:目标vni,目标vlan标识,以及目标组播组地址;所述目标组播转发表用于使所述本端vtep将所述目标组播组的组播报文转发到所述远端vtep。
基于上述技术方案,本端vtep根据远端vtep发送的第一vxlan报文,生成目标组播转发表,并将远端vtep的地址加入到目标组播转发表的复制表中。其中,目标组播转发表用于使所述本端vtep将所述目标组播组的组播报文转发到所述远端vtep。这样一来,本端vtep不会将目标组播组的组播报文发送给其他无关的vtep(也即目标组播转发表的复制表中未记录的vtep),从而避免组播流量在vxlan网络中洪泛,进而避免网络带宽被浪费。
第二方面,提供一种vtep,包括:接收模块,用于接收远端vtep发送的第一虚拟可扩展局域网vxlan报文;其中,所述第一vxlan报文包括:所述远端vtep的地址,目标虚拟扩展局域网网络标识vni、目标虚拟局域网vlan标识,以及组播加入报文;所述组播加入报文包含目标组播组的地址。处理模块,用于根据第一vxlan报文,创建目标组播转发表,并将所述远端vtep的地址加入到所述目标组播转发表的复制表中;其中,所述目标组播转发表对应的关键字包括:目标vni,目标vlan标识,以及目标组播组地址;所述目标组播转发表用于使所述本端vtep将所述目标组播组的组播报文转发到所述远端vtep。
第三方面,提供一种计算机设备,所述计算机设备包括:处理器、收发器和存储器。其中,存储器存储有一个或多个程序,一个或多个程序包括计算机可执行指令,当该计算机设备运行时,处理器执行该存储器存储的计算机可执行指令,以使该计算机设备执行第一方面及其各种可选的实现方式中的任意之一所述的组播方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当计算机设备执行该指令时,该计算机设备执行第一方面及其各种可选的实现方式中的任意之一所述的组播方法。
第五方面,提供一种包含指令的计算机程序产品,当计算机设备运行该计算机程序产品时,计算机设备执行第一方面及其各种可选的实现方式中的任意之一所述的组播方法。
其中,第二方面至第五方面中任一种设计方式所带来的技术效果可参见第一方面的相关描述,在此不再赘述。
附图说明
图1为本申请实施例提供的一种vxlan网络的架构示意图;
图2为本申请实施例提供的一种组播方法的流程图;
图3为本申请实施例提供的另一种组播方法的流程图;
图4为本申请实施例提供的另一种组播方法的流程图;
图5为本申请实施例提供的一种vtep设备的结构示意图;
图6为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
如图1所示,为本申请实施例提供的一种vxlan网络的架构示意图。vxlan网络包括多个vtep,例如vtep1、vtep2、vtep3和vtep4。
vtep是指vxlan网络中用于建立vxlan隧道的端点设备,用于在vxlan网络中发送和接收vxlan报文。一个vtep可以接入多个vxlan网络,也可以连接多台处于不同或相同vxlan网络的服务器。需要说明的是,在vtep接入多个vxlan网络的情况下,vtep的不同接口可以对应不同的vxlan网络,也可以对应相同的vxlan网络。
上述服务器是指物理服务器或者虚拟机(virtualmachine,简称vm)。vm指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。一个物理服务器采用虚拟化技术,可以虚拟出多个vm。
同一vxlan网络的vtep之间建立有vxlan隧道。vtep之间可以通过vxlan隧道来传输vxlan报文。例如,在图1中,vtep1分别与vtep2、vtep3和vtep4建立vxlan隧道。虽然图1中未示出,实际上,vtep2、vtep3和vtep4三者之间也会互相建立vxlan隧道。
下面结合图1所示的vxlan网络架构,对本申请实施例提供的技术方案进行介绍。
如图2所示,为本申请实施例提供的一种组播方法,该方法包括以下步骤:
s101、本端vtep接收远端vtep发送的第一vxlan报文。
其中,所示第一vxlan报文包含:所述远端vtep的地址、目标vni、目标vlan标识以及组播加入报文。所述组播加入报文用于请求加入目标组播组。所述组播加入报文携带目标组播组地址。
远端vtep的地址为远端vtep的网际互联协议(internetprotocol,简称ip)地址。目标vni为接收到组播加入报文的远端vtep的接口对应的vni。目标vlan标识为组播加入报文携带的vlan标识。所述组播加入报文为互联网组管理协议(internetgroupmanagementprotocol,简称igmp)报文。
一种可选的实现方式中,远端vtep接收与其连接的服务器发送的组播加入报文。之后,远端vtep将该组播加入报文封装为第一vxlan报文。最后,远端vtep以头端复制的方式将第一vxlan报文分别发送给目标vni对应的bum复制表中的所有vtep。所述目标vni对应的bum复制表中的所有vtep包括本端vtep。
需要说明的是,目标vni对应的bum复制表用于记录目标vni对应的vxlan网络中每一个vtep的地址。目标vni对应的bum复制表通过静态配置生成,或者动态学习生成。
在本申请实施例中,远端vtep可以运行igmp代理,以便于控制igmp报文的转发,从而减少向其他vtep发送的igmp报文的数量。
s102、本端vtep根据所述第一vxlan报文,创建目标组播转发表,并将所述远端vtep的地址加入到所述目标组播转发表的复制表中。
其中,所述目标组播转发表对应的关键字包括:目标vni、目标vlan标识以及目标组播组地址。所述目标组播转发表用于使本端vtep将所述目标组播组的组播报文转发到所述远端vtep。
在本申请实施例中,组播转发表中的复制表可以采用与bum复制表相同的构建技术。这样一来,对组播转发表中的复制表的添加、删除、修改等操作可以参考现有技术中对bum复制的相同操作。并且,本端vtep可以统一管理bum复制表和组播转发表中的复制表。
可选的,若多个组播转发表包含的复制表相同,多个组播转发表可以复用同一个复制表。也即本端vtep不必为多个组播转发表,分别创建多个对应的复制表。
一种可选的实现方式,在接收到第一vxlan报文之后,本端vtep将第一vxlan报文解封装,以获取所述远端vtep的地址、目标vni、目标vlan标识以及组播加入报文。本端vtep中的互联网组管理协议窥探(internetgroupmanagementprotocolsnooping,简称igmpsnooping)模块根据目标vni、目标vlan标识以及目标组播组地址,创建目标组播转发表;并且,本端vtep还将所述远端vtep的地址加入到目标组播转发表的复制表中。
可以理解的是,在目标组播转发表以及复制表均已存在的情况下,本端vtep可以直接将所述远端vtep的地址添加至目标组播转发表的复制表中。
可选的,在接收到第一vxlan报文之后,本端vtep先存储第一vxlan报文;之后,在接收到目标组播组的组播报文之后,本端vtep再根据第一vxlan报文,创建目标组播转发表。这样一来,可以解决目标组播转发表在创建之后被闲置,导致的本端vtep的内存资源被浪费的问题。
基于上述技术方案,本端vtep根据远端vtep发送的第一vxlan报文,生成目标组播转发表,并将远端vtep的地址加入到目标组播转发表的复制表中。其中,目标组播转发表用于使所述本端vtep将所述目标组播组的组播报文转发到所述远端vtep。这样一来,本端vtep不会将目标组播组的组播报文发送给其他无关的vtep(也即目标组播转发表的复制表中未记录的vtep),从而避免组播流量在vxlan网络中洪泛,进而避免网络带宽被浪费。
基于图2所示的方案的基础上,如图3所示,为本申请实施例还提供另一种组播方法,该方法包括以下步骤:
s201、本端vtep接收组播报文。
一种可选的实现方式,本端vtep接收与其连接的服务器下发的组播报文。
s202、本端vtep检测组播报文对应的关键字是否匹配组播转发表对应的关键字。
其中,组播报文对应的关键字包括vni、vlan标识以及组播组地址。需要说明的是,组播报文对应的vni即为接收到该组播报文的本端vtep的接口对应的vni。组播报文对应的vlan标识即为该组播报文携带的vlan标识。组播报文对应的组播组地址即为该组播报文携带的组播组地址。
在本申请实施例中,组播报文对应的关键字匹配组播转发表对应的关键字是指,组播报文对应的vni与组播转发表对应的目标vni相同,组播报文对应的vlan标识与组播转发表对应的目标vlan标识相同,以及组播报文对应的组播组地址与组播转发表对应的目标组播组地址相同。
可以理解的是,若组播报文对应的vni与组播转发表对应的目标vni不相同,或者组播报文对应的vlan标识与组播转发表对应的目标vlan标识不相同,或者组播报文对应的组播组地址与组播转发表对应的目标组播组地址不相同,则组播报文对应的关键字不匹配组播转发表对应的关键字。
在本申请实施例中,若组播报文对应的关键字匹配目标组播转发表对应的关键字,则本端vtep执行下述步骤s203。若组播报文对应的关键字与本端vtep预先存储的任一组播转发表对应的关键字均不匹配,则本端vtep执行下述步骤s204或者s205。
s203、若组播报文对应的关键字匹配目标组播转发表对应的关键字,则本端vtep根据目标组播转发表的复制表,将所述组播报文转发给所述远端vtep。
一种可选的实现方式,本端vtep将所述组播报文封装为第三vxlan报文;之后,本端vtep根据目标组播转发表的复制表中记录的所述远端vtep的地址,将所述第三vxlan报文发送给所述远端vtep。
s204、若组播报文对应的关键字与本端vtep预先存储的任一组播转发表对应的关键字均不匹配,则本端vtep将所述组播报文转发给目标bum复制表中的所有vtep。
其中,所述目标bum复制表为所述组播报文对应的vni对应的bum复制表。
一种可选的实现方式中,本端vtep将所述组播报文封装为第三vxlan报文;之后,本端vtep根据目标bum复制表,以头端复制的方式将所述第三vxlan报文分别发送给目标bum复制表中的每一个vtep。
s205、若组播报文对应的关键字与本端vtep预先存储的任一组播转发表对应的关键字均不匹配,则本端vtep丢弃所述组播报文。
一种可选的实现方式,若所述组播报文对应的关键字与本端vtep预先存储的任一组播转发表对应的关键字均不匹配,则本端vtep以所述组播报文对应的关键字,生成所述组播报文对应的组播转发表,所述组播报文对应的组播转发表不包含复制表。这样,由于所述组播报文对应的组播转发表不包含复制表,本端vtep丢弃所述组播报文。
基于上述技术方案,本端vtep在接收到组播报文后,根据组播报文的关键字查找匹配的组播转发表。若本端vtep能够查找到匹配的组播转发表,则按照匹配的组播转发表包含的组播复制表,转发该组播报文,以避免组播报文在vxlan网络中出现泛洪的问题。否则,本端vtep则按照bum复制表,转发所述组播报文;或者,本端vtep丢弃所述组播报文。
基于图2所示的方案的基础上,如图4所示,为本申请实施例提供的另一种组播方法,该方法包括以下步骤:
s301、本端vtep接收远端vtep发送的第二vxlan报文。
其中,所述第二vxlan报文包含组播退出报文,所述组播退出报文用于请求退出目标组播组。所述组播退出报文为igmp报文。
一种可选的实现方式,所述远端vxlan报文接收到与之连接的服务器发送的组播退出报文;之后,所述远端vtep将所述组播退出报文封装为第二vxlan报文;最后,所述远端vtep以头端复制的方式将第二vxlan报文发送给目标vni对应的bum复制表中的每一个vtep(也即本端vtep)。
s302、本端vtep将所述远端vtep的地址从目标组播转发表的复制表中删除。
可选的,若目标组播转发表的复制表不包含任一vtep的地址,则本端vtep删除目标组播转发表的复制表;进一步的,本端vtep删除所述目标组播转发表。
基于上述技术方案,本端vtep在接收到远端vtep发送的第二vxlan报文之后,将所述远端vtep的地址从目标组播转发表的复制表中删除。这样,本端vtep不会将目标组播组的组播报文转发给退出目标组播组的远端vtep。
下面结合图1所示的vxlan网络以及具体场景来对图2、图3以及图4所示的组播方法进行介绍。
假设在当前vxlan网络中,vtep1的地址为(1.1.1.1),vtep2的地址为(2.2.2.2),vtep3的地址为(3.3.3.3),vtep4的地址为(4.4.4.4)。vtep1分别与其他vtep建立静态vxaln隧道,vni为100,vtep1与vtep2之间的静态vxlan隧道为tunnel2(2.2.2.2),vtep1与vtep3之间的静态vxlan隧道为tunnel3(3.3.3.3),vtep1与vtep4之间的静态vxlan隧道为tunnel4(4.4.4.4)。vtep1基于静态vxlan隧道建立bum复制表1,bum隧道类型为头端复制,出口为(2.2.2.2,3.3.3.3,4.4.4.4)。相似的,其他vtep也会建立静态vxlan隧道,并建立相应的bum复制表,此处不再赘述。
当vtep1的用户侧端口接收到igmp报文1,该igmp报文1用于请求加入目标组播组,该目标组播组的地址为(224.1.1.1),则vtep1将该igmp报文1封装为vxlan报文1,并根据bum复制表1,将该vxlan报文1发送给vtep2、vtep3、vtep4。
vtep2的vxlan模块解析来自于vtep1的vxlan报文1。在获取到igmp报文1和vxlan信息(vni100,vlan1000,vtepip1.1.1.1)之后,vtep2的vxlan模块将该igmp报文1和vxlan信息转发给vtep2的igmpsnooping模块。igmpsnooping模块以关键字(vni100,vlan1000,vtepip1.1.1.1),创建组播转发表1。并且,igmpsnooping模块向bum复制表管理模块申请组播转发表1的复制表1,该组播转发表1的复制表1的出口为(1.1.1.1)。
vtep3和vtep4接收到vxlan报文1之后的操作可参考上述vtep2的操作,在此不再赘述。
若vtep2接收到组播组地址为(224.1.1.1)的组播报文,vtep2根据该组播报文对应的关键字,查找组播转发表,命中组播转发表1,因此,vtep2根据组播转发表1的复制表1,将该组播报文发送给vtep1。
若vtep1的用户侧端口接收到igmp报文2,该igmp报文用于请求退出目标组播组,则vtep1将igmp报文2和vxlan信息(vni100,vlan1000,vtepip1.1.1.1)封装为vxlan报文2;然后,vtep1根据bum复制表1,将vxlan报文2发送给vtep2、vtep3和vtep4。
vtep2的vxlan模块接收到vxlan报文2之后,对vxlan报文2进行解封装,获取igmp报文2以及vxlan信息。之后,vtep2的vxlan模块将igmp2以及vxlan信息发送给vtep2的igmpsnooping模块。igmpsnooping模块将(1.1.1.1)从组播转发表1的复制表1中删除。假设组播转发表1的复制表1在删除出口(1.1.1.1)之后,组播转发表1的复制表1不包含其他出口。在这种情况下,igmpsnooping模块删除组播转发表1的复制表1,以及删除组播转发表1。
vtep3和vtep4接收到vxlan报文2之后的操作可参考上述vtep2的操作,在此不再赘述。
本申请实施例可以根据上述方法示例对vtep设备进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图5所示,为本申请实施例提供的一种vtep设备,包括:接收模块401、处理模块402以及发送模块403。
接收模块401,用于接收远端vtep发送的第一虚拟可扩展局域网vxlan报文;其中,所述第一vxlan报文包括:所述远端vtep的地址,目标虚拟扩展局域网网络标识vni、目标虚拟局域网vlan标识,以及组播加入报文;所述组播加入报文包含目标组播组的地址。
处理模块402,用于根据第一vxlan报文,创建目标组播转发表,并将所述远端vtep的地址加入到所述目标组播转发表的复制表中;其中,所述目标组播转发表对应的关键字包括:目标vni,目标vlan标识,以及目标组播组地址;所述目标组播转发表用于使所述本端vtep将所述目标组播组的组播报文转发到所述远端vtep。
一种可能的设计中,所述接收模块401,还用于接收组播报文。所述发送模块403,用于若组播报文对应的关键字匹配所述目标组播转发表对应的关键字,根据所述目标组播转发表的复制表,将所述组播报文转发给所述远端vtep。
一种可能的设计中,所述接收模块401,还用于接收组播报文。所述发送模块403,用于若组播报文对应的关键字与本端vtep预先存储的任一组播转发表对应的关键字均不匹配,将所述组播报文转发给预先配置的目标广播、未知单播和组播bum复制表中的所有vtep,所述目标bum复制表为所述组播报文对应的vni对应的bum复制表。
一种可能的设计中,所述接收模块401,还用于接收组播报文。所述发送模块403,用于若所述组播报文对应的关键字与本端vtep中的任一组播转发表对应的关键字均不匹配,丢弃所述组播报文。
一种可能的设计中,所述接收模块401,还用于接收所述远端vtep发送的第二vxlan报文,所述第二vxlan报文包含组播退出报文,所述组播退出报文用于请求退出目标组播组。所述处理模块402,还用于将所述远端vtep的地址从所述目标组播转发表的复制表中删除。
在采用集成的单元的情况下,图6示出了上述实施例中所涉及的计算机设备一种可能的结构示意图。所述计算机设备包括:处理单元501和通信接口502。所述处理单元501用于执行上述处理模块402执行的步骤,和/或用于执行本文所描述的技术的其它过程。所述通信接口502用于执行上述接收模块301和发送模块303执行的步骤,和/或用于执行本文所描述的技术的其他过程。所述通信接口502还用于支持计算机设备与其他设备的通信。所述计算机设备还可以包括存储单元503和总线504。其中,存储单元503用于存储计算机设备的程序代码和数据。
其中,上述处理单元501可以是计算机设备中的处理器或控制器,该处理器或控制器可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器或控制器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合等。
通信接口502可以是计算机设备中的收发器、收发电路或系统接口等。
存储单元503可以是计算机设备中的存储器等,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。
总线504可以是扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。总线504可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本说明书中的各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序加载到计算机上被计算机执行时,使计算机执行上述组播方法。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦式可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、光纤、便携式紧凑磁盘只读存储器(compactdiscread-onlymemory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。