一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

建立VXLAN隧道的方法、报文转发的方法及装置与流程

2022-05-18 08:47:13 来源:中国专利 TAG:

建立vxlan隧道的方法、报文转发的方法及装置
技术领域
1.本技术涉及云网络
技术领域
,尤其涉及一种建立虚拟扩展局域网隧道的方法、虚拟扩展局域网报文转发的方法及装置。
背景技术
:2.现有技术中采用计算数据结构(plainolddata,pod)、natpod和虚拟网关pod三个节点创建虚拟扩展局域网(virtualextensiblelocalareanetwork,vxlan)隧道,基于创建的隧道,对应的在计算pod、natpod和虚拟网关pod上的虚拟交换机(openvswitch,ovs)网桥创建vxlan子接口,并由ovs流表实现vxlan报文的转发处理。3.但是随着集群规模不断变大,在ovs网桥上需要创建的vxlan子接口数量将不断的增加,相应的ovs上的转发流表数量也会不断的增加。假设在10万台计算服务器规模下,根据目前生产环境下服务器数量估算标准,若采用上述vxlan隧道创建方法,且维持10万台计算机服务器规模的openstack云计算管理平台集群前提下,计算pod、natpod和虚拟网关pod均需要创建10万多的vxlan子接口数量,因此构建vxlan隧道所需vxlan子接口数量过多。技术实现要素:4.本技术实施例提供一种建立虚拟扩展局域网隧道的方法、虚拟扩展局域网报文转发的方法及装置,从而可以解决现有技术中构建vxlan隧道所需vxlan子接口数量过多的问题。5.第一方面,本技术一实施例提供了一种建立虚拟扩展局域网隧道的方法,虚拟扩展局域网架构中包括:计算数据结构、nat数据结构和虚拟网关数据结构,所述计算数据结构包括:计算节点和第二层网关计算节点,所述nat数据结构包括:nat节点和第二层网关nat节点;所述虚拟网关数据结构包括:虚拟网关节点,所述方法包括:6.基于所述计算节点、所述第二层网关计算节点、所述nat节点、所述第二层网关nat节点和所述虚拟网关节点构建虚拟扩展局域网隧道。7.可选的,所述计算数据结构和所述nat数据结构的数量均为至少一个,所述基于所述计算节点、所述第二层网关计算节点、所述nat节点、所述第二层网关nat节点和所述虚拟网关节点构建虚拟扩展局域网隧道,包括:8.基于所述计算数据结构中的任意一个所述计算节点与所述计算数据结构中除所述计算节点之外的其他计算节点构建第一虚拟扩展局域网隧道;9.基于所述计算数据结构中的任意一个所述计算节点与所述计算数据结构中的所述第二层网关计算节点构建第二虚拟扩展局域网隧道;10.基于所述nat数据结构中的任意一个所述nat节点与所述nat数据结构中除所述nat节点之外的其他nat节点构建第三虚拟扩展局域网隧道;11.基于所述nat数据结构中的任意一个所述nat节点与所述nat数据结构中的所述第二层网关nat节点构建第四虚拟扩展局域网隧道;12.基于所述nat数据结构中的任意一个所述nat节点与每个所述计算数据结构中的所述第二层网关计算节点构建第五虚拟扩展局域网隧道;13.基于所述虚拟网关节点与每个所述计算数据结构中的所述第二层网关计算节点构建第六虚拟扩展局域网隧道;14.基于所述虚拟网关节点与每个所述nat数据结构中的所述第二层网关nat节点构建第七虚拟扩展局域网隧道;15.基于所述计算数据结构中的所述第二层网关计算节点与除所述计算数据结构之外的计算数据结构中的第二层网关计算节点构建第八虚拟扩展局域网隧道;16.基于所述nat数据结构中的所述第二层网关nat节点与所述虚拟网关节点构建第九虚拟扩展局域网隧道。17.可选的,所述第二层网关计算节点上配置有第一虚拟交换机进程;所述基于所述计算数据结构中的任意一个所述计算节点与所述计算数据结构中的所述第二层网关计算节点构建第二虚拟扩展局域网隧道,包括:18.接收第一资源,并利用所述第一虚拟交换机进程监听所述第一资源;所述第一资源为第二层网关资源;19.若所述第一资源中包括创建信息,则利用所述第一虚拟交换机进程从所述计算节点中获取到的信息和所述第一资源创建所述第二虚拟扩展局域网隧道。20.可选的,所述第二层网关nat节点上配置有第二虚拟交换机进程;所述基于所述nat数据结构中的任意一个所述nat节点与每个所述计算数据结构中的所述第二层网关计算节点构建第五虚拟扩展局域网隧道,包括:21.接收第二资源,并利用所述第二虚拟交换机进程监听所述第二资源;所述第二资源为第二层网关资源;22.若所述第二资源中包括创建信息,则利用所述第二虚拟交换机进程从所述nat节点中获取到的信息和所述第二资源创建所述第五虚拟扩展局域网隧道。23.可选的,所述第二层网关nat节点上配置有第二虚拟交换机进程;所述基于所述nat数据结构中的所述第二层网关nat节点与所述虚拟网关节点构建第九虚拟扩展局域网隧道,包括:24.接收第三资源,并利用所述第二虚拟交换机进程监听所述第三资源;所述第三资源为除第二层网关资源之外指定的资源;25.若所述第三资源中包括创建信息,则利用所述第二虚拟交换机进程从所述虚拟网关节点中获取到的信息和所述第三资源创建所述第九虚拟扩展局域网隧道。26.可选的,所述第二层网关nat节点上配置有第二虚拟交换机进程;所述基于所述nat数据结构中的任意一个所述nat节点与所述nat数据结构中的所述第二层网关nat节点构建第四虚拟扩展局域网隧道,包括:27.接收第四资源,并利用所述第二虚拟交换机进程监听所述第四资源;所述第四资源为第二层网关资源;28.若所述第四资源中包括创建信息,则利用所述第二虚拟交换机进程从所述nat节点中获取到的信息和所述第四资源创建所述第四虚拟扩展局域网隧道。29.第二方面,本技术一实施例提供了一种虚拟扩展局域网报文转发的方法,虚拟扩展局域网架构包括如第一方面中任一所述建立虚拟扩展局域网隧道的方法构建的虚拟扩展局域网隧道,所述第二层网关计算节点上还配置有多个第二层网关计算进程,所述第二层网关nat节点上还配置有多个第二层网关nat进程,所述方法包括:30.接收每个所述第二层网关计算进程和每个所述第二层网关nat进程分别发送的第二层网关节点状态;31.根据每个所述第二层网关节点状态更新所述虚拟扩展局域网隧道和所述计算节点、所述第二层网关计算节点、所述nat节点、所述第二层网关nat节点和所述虚拟网关节点分别对应的流表;32.利用更新后的所述虚拟扩展局域网隧道和更新后的所述计算节点、所述第二层网关计算节点、所述nat节点、所述第二层网关nat节点和所述虚拟网关节点分别对应的流表对虚拟扩展局域网报文进行转发。33.可选的,所述方法还包括:34.在对所述虚拟扩展局域网报文转发完成后,向发送转发所述虚拟扩展局域网报文的终端发送转发完成指令时,采用的第二层网关节点与所述终端发送转发所述虚拟扩展局域网报文采用的第二层网关节点相同。35.第三方面,本技术一实施例提供了一种虚拟扩展局域网报文转发的装置,虚拟扩展局域网架构包括如第一方面中任一所述建立虚拟扩展局域网隧道的方法构建的虚拟扩展局域网隧道,所述第二层网关计算节点上还配置有多个第二层网关计算进程,所述第二层网关nat节点上还配置有多个第二层网关nat进程,所述装置包括:36.接收模块,用于接收每个所述第二层网关计算进程和每个所述第二层网关nat进程分别发送的第二层网关节点状态;37.更新模块,用于根据每个所述第二层网关节点状态更新所述虚拟扩展局域网隧道和所述计算节点、所述第二层网关计算节点、所述nat节点、所述第二层网关nat节点和所述虚拟网关节点分别对应的流表;38.转发模块,用于利用更新后的所述虚拟扩展局域网隧道和更新后的所述计算节点、所述第二层网关计算节点、所述nat节点、所述第二层网关nat节点和所述虚拟网关节点分别对应的流表对虚拟扩展局域网报文进行转发。39.可选的,所述装置还包括:40.在对所述虚拟扩展局域网报文转发完成后,向发送转发所述虚拟扩展局域网报文的终端发送转发完成指令时,采用的第二层网关节点与所述终端发送转发所述虚拟扩展局域网报文采用的第二层网关节点相同。41.第四方面,本技术一实施例还提供了一种电子设备,包括:42.处理器;43.用于存储所述处理器可执行指令的存储器;44.其中,所述处理器被配置为执行所述指令,以实现如本技术第一方面或第二方面中提供的任一方法。45.第五方面,本技术一实施例还提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本技术第一方面或第二方面中提供的任一方法。46.第六方面,本技术一实施例提供了一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现如本技术第一方面或第二方面中提供的任一方法。47.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明48.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。49.图1a为本技术实施例提供的从一个计算pod角度按照表3描述的多种情况创建vxlan隧道的示意图;50.图1b为本技术实施例提供的从一个natpod角度按照表3描述的多种情况创建vxlan隧道的示意图;51.图1c为本技术实施例提供的从虚拟网关pod角度按照表3描述的多种情况创建vxlan隧道的示意图;52.图2为本技术一实施例提供的管理pod对计算pod、natpod和虚拟网关pod进行l2gw资源分配的示意图;53.图3为本技术一实施例提供的管理pod对计算pod、natpod和虚拟网关pod进行evtp资源分配的示意图;54.图4为本技术一实施例提供的l2gw计算节点和l2gwnat节点故障检测和自动切换的流程示意图;55.图5为本技术一实施例提供的增加的l2gw计算节点和l2gwnat节点对计算节点、nat节点和虚拟网关节点进行负载分担的流程示意图;56.图6为本技术一实施例提供的l2gw计算节点集群或者l2gwnat节点集群之间负载分担的流程示意图;57.图7为本技术一实施例提供的请求报文和回应报文源进源出示意图;58.图8为本技术一实施例提供的arp报文广播泛洪的示意图;59.图9为本技术一实施例提供的l2gw节点与l2gw节点之间的vxlan口和计算节点、nat节点和虚拟网关节点之间的vxlan口自学习示意图;60.图10为本技术一实施例提供的计算节点和nat节点在br-tun网桥上的流表改进示意图;61.图11为本技术一实施例提供的虚拟网关节点在br-south网桥上的流表改进示意图;62.图12为本技术一实施例提供的l2gw节点在br-l2gw网桥上的流表改进示意图;63.图13为本技术一实施例提供的虚拟扩展局域网报文转发的装置结构示意图;64.图14为本技术一实施例提供的电子设备示意图。具体实施方式65.为了使本领域普通人员更好地理解本技术的技术方案,下面将结合附图,对本技术实施例中的技术方案进行清楚、完整地描述。66.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应所述理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。67.现有技术中采用计算数据结构(plainolddata,pod)、natpod和虚拟网关pod三个节点创建虚拟扩展局域网(virtualextensiblelocalareanetwork,vxlan)隧道,基于创建的隧道,对应的在计算pod、natpod和虚拟网关pod上的虚拟交换机(openvswitch,ovs)网桥创建vxlan子接口,并由ovs流表实现vxlan报文的转发处理。68.但是随着集群规模不断变大,在ovs网桥上需要创建的vxlan子接口数量将不断的增加,相应的ovs上的转发流表数量也会不断的增加。假设在10万台计算服务器规模下,根据目前生产环境下服务器数量估算标准,若采用上述vxlan隧道创建方法,且维持10万台计算机服务器规模的openstack云计算管理平台集群前提下,计算pod、natpod和虚拟网关pod均需要创建10万多的vxlan子接口数量,如表1所示,因此构建vxlan隧道所需vxlan子接口数量过多。69.表1protocol,ip)地址、租户vxlanid等。在管理pod对资源进行分配后,会及时通知到计算pod、natpod和虚拟网关pod节点中,从而确保计算pod、natpod和虚拟网关pod中的资源不会出现冲突。管理pod的数量可以是一个,在此仅是举例说明,本技术不做具体数量的限定。77.另外,vxlan架构中还包括存储pod,主要是可以为vm存储资源,存储pod的数量可以是多个,并且多个计算pod也可以共用一个存储pod。78.根据上述描述,在vxlan架构中将物理服务器划分了不同的节点,具体信息也可以如表2所示。(其中网络pod即为虚拟网关pod)79.表2[0080][0081]在介绍了vxlan架构中的不同节点之后,本技术是基于计算节点、l2gw计算节点、nat节点、l2gwnat节点和虚拟网关节点构建虚拟扩展局域网隧道。[0082]具体的,如表3所示,基于计算数据结构中的任意一个计算节点与计算数据结构中除计算节点之外的其他计算节点构建第一虚拟扩展局域网隧道;基于计算数据结构中的任意一个计算节点与计算数据结构中的第二层网关计算节点构建第二虚拟扩展局域网隧道;基于nat数据结构中的任意一个nat节点与nat数据结构中除nat节点之外的其他nat节点构建第三虚拟扩展局域网隧道;基于nat数据结构中的任意一个nat节点与nat数据结构中的第二层网关nat节点构建第四虚拟扩展局域网隧道;基于nat数据结构中的任意一个nat节点与每个计算数据结构中的第二层网关计算节点构建第五虚拟扩展局域网隧道;基于虚拟网关节点与每个计算数据结构中的第二层网关计算节点构建第六虚拟扩展局域网隧道;基于虚拟网关节点与每个nat数据结构中的第二层网关nat节点构建第七虚拟扩展局域网隧道;基于计算数据结构中的第二层网关计算节点与除计算数据结构之外的计算数据结构中的第二层网关计算节点构建第八虚拟扩展局域网隧道;基于nat数据结构中的第二层网关nat节点与虚拟网关节点构建第九虚拟扩展局域网隧道。[0083]表3[0084][0085]示例性的,如图1a、图1b、图1c所示,分别是从一个计算pod、一个natpod和虚拟网关pod角度按照表3描述的多种情况创建vxlan隧道的示意图,其中natpod中的网络节点集群即为上述的nat节点集群,网络pod即为虚拟网关pod。同样的相对于现有技术中针对10万台计算服务器规模来说,根据本技术上述建立vxlan隧道的方式,计算pod、natpod和虚拟网关pod所需要创建的vxlan子接口数量如表4所示,需要创建的vxlan子接口数量大幅度减少。[0086]表4[0087][0088]在介绍了基于计算节点、l2gw计算节点、nat节点、l2gwnat节点和虚拟网关节点构建的vxlan隧道,接下来介绍下具体的构建vxlan隧道的过程:[0089]如图2所示,示出了管理pod对计算pod、natpod和虚拟网关pod(即图2中的网络pod)进行l2gw资源分配的示意图。管理pod中配置有全局第二层网关资源(centrall2gwplugin),计算pod中的第二层网关计算节点上配置有本地第二层网关资源(locall2gwplugin)、第二层网关进程(l2gwagent)、第一虚拟交换机进程(ovsagent),natpod中的第二层网关nat节点上配置有本地第二层网关资源(locall2gwplugin)、第二层网关进程(l2gwagent)、第二虚拟交换机进程(ovsagent),虚拟网关pod(即图2中的网络pod)上配置有虚拟网关进程(vgwagent)。[0090]针对计算节点来说,根据表3的描述,该节点包括两类vxlan隧道,其中与本pod内其他计算节点之间的第一vxlan隧道的建立根据现有技术即可实现,本技术在此不再赘述。与本pod内l2gw计算节点之间的第二vxlan隧道建立过程为:如图2所示,管理pod负责l2gw资源的分配,并在资源分配过程中及时同步到计算pod上。计算pod在接收到第一资源后,利用第一虚拟交换机进程监听第一资源,若确定第一资源为第二层网关资源,即第一资源为本pod的l2gw资源,通知第一虚拟交换机进程(ovsagent),利用第一虚拟交换机进程(ovsagent)从计算节点中获取到的信息、以及从管理pod的neutronserverdb中拉取一份计算节点的全量信息创建/删除第二虚拟扩展局域网隧道。[0091]针对nat节点来说,根据表3的描述,该节点包括三类vxlan隧道,其中与本pod内其他nat节点之间的第三vxlan隧道的建立根据现有技术即可实现,本技术在此不再赘述。与本pod内l2gwnat节点之间的第四vxlan隧道建立过程以及与每个计算pod的l2gw计算节点之间的第五vxlan隧道建立过程均为:如图2所示,管理pod负责l2gw资源的分配,并在资源分配过程中及时同步到natpod上。natpod在接收到第二资源或者第四资源后,利用第二虚拟交换机进程监听第二资源或者第四资源,若确定第二资源或者第四资源为第二层网关资源,即第二资源或者第四资源为本pod的l2gw资源,通知第二虚拟交换机进程(ovsagent),利用第二虚拟交换机进程(ovsagent)从nat节点中获取到的信息、以及从管理pod的neutronserverdb中拉取一份nat节点的全量信息创建/删除第四虚拟扩展局域网隧道或者第五虚拟扩展局域网隧道。[0092]针对虚拟网关节点来说,根据表3的描述,该节点包括两类vxlan隧道,与每个natpod的l2gwnat节点之间的第六vxlan隧道建立过程以及与每个计算pod的l2gw计算节点之间的第七vxlan隧道建立过程均为:如图2所示,管理pod负责l2gw资源的分配,并在资源分配过程中及时同步到虚拟网关pod上。虚拟网关pod在接收到资源后,通知vgwagent,利用vgwagent创建/删除第六虚拟扩展局域网隧道或者第七虚拟扩展局域网隧道。[0093]针对l2gw计算节点来说,根据表3的描述,该节点包括三类vxlan隧道,其中,与本pod内计算节点之间的第十vxlan隧道建立过程以及与其他计算pod的l2gw计算节点之间的第八vxlan隧道建立过程均为:如图2所示,管理pod负责l2gw资源的分配,并在资源分配过程中及时同步到计算pod上。计算pod在接收到资源后,利用第一虚拟交换机进程监听资源,若确定资源为本pod的l2gw资源,通知第一虚拟交换机进程(ovsagent),利用第一虚拟交换机进程(ovsagent)从计算节点中获取到的信息、以及从管理pod的neutronserverdb中拉取一份计算节点的全量信息创建/删除第十虚拟扩展局域网隧道或者第八虚拟扩展局域网隧道。[0094]这里,与每个natpod的nat节点和虚拟网关pod的虚拟网关节点之间的第十一vxlan隧道建立过程为:如图3所示,管理pod配置有全局evtp资源(即为除l2gw资源之外指定的额外vtepip资源),管理pod负责evtp资源的分配,并在资源分配过程中及时同步到计算pod上。计算pod在接收到资源后,通知虚拟交换机进程(ovsagent),利用虚拟交换机进程(ovsagent)创建/删除第十一虚拟扩展局域网隧道。[0095]针对l2gwnat节点来说,根据表3的描述,该节点包括两类vxlan隧道,其中,与本pod内nat节点之间的第十二vxlan隧道建立过程为:如图2所示,管理pod负责l2gw资源的分配,并在资源分配过程中及时同步到natpod上。natpod在接收到资源后,利用第二虚拟交换机进程监听资源,若确定资源为本pod的l2gw资源,通知第二虚拟交换机进程(ovsagent),利用第二虚拟交换机进程(ovsagent)从nat节点中获取到的信息、以及从管理pod的neutronserverdb中拉取一份nat节点的全量信息创建/删除第十二虚拟扩展局域网隧道。[0096]这里,与虚拟网关pod的虚拟网关节点之间的第九vxlan隧道建立过程为:如图3所示,管理pod配置有全局evtp资源(即为除l2gw资源之外指定的额外vtepip资源),管理pod负责evtp资源的分配,并在资源分配过程中及时同步到natpod上。natpod在接收到第三资源后,通知虚拟交换机进程(ovsagent),利用虚拟交换机进程(ovsagent)创建/删除第九虚拟扩展局域网隧道。[0097]二、vxlan报文的转发[0098]在利用计算节点、nat节点和虚拟网关节点中增加了l2gw计算节点和l2gwnat节点后建立的vxlan隧道进行报文转发之前,先介绍下l2gw计算节点和l2gwnat节点。[0099]l2gw计算节点和l2gwnat节点均包含两个数据模型,一是l2gwgroup,二是l2gwmember。其中,l2gwgroup代表一个l2gw资源组,一个l2gwgroup可以包含多个l2gwmember,l2gwgroup可以包含的信息有:(1)所在节点的id-身份标识;(2)region_name-所属pod对应的地区名称,计算pod、natpod收到l2gw资源后,可以通过比对这个字段值来判断此l2gw资源是否属于本地;(3)运行模式mode-主要包括两种,即全局global模式和局部local模式,由于计算pod上的l2gw计算节点需要和除自身计算pod之外其他的计算pod上的l2gw计算节点建立vxlan隧道,因此计算pod上的l2gw计算节点为global模式,并且由于natpod上的l2gwnat节点不需要和除自身natpod之外其他的natpod上的l2gwnat节点建立vxlan隧道,因此natpod上的l2gwnat节点为local模式。[0100]l2gwmember可以代表一个l2gw节点,l2gwmember包含的信息可以有:(1)group_id-l2gw节点所属的l2gwgroupid;(2)vtep_ip-l2gw节点用于vxlan报文封装的underlayip;(3)status-l2gw节点的状态,有active和down两种状态;(4)enabled-l2gw节点的使能状态,包括true和false两个值,false表示l2gw节点处于禁用状态,处于禁用状态的l2gw节点不参与报文转发,也不感知状态的切换。[0101]在增加了l2gw计算节点和l2gwnat节点之后,进行报文转发时新增加的两个节点均可以实时进行节点的故障检测和自动切换。如图4所示,示出了l2gw计算节点和l2gwnat节点故障检测和自动切换的流程示意图。包括以下步骤:[0102]a1,计算pod和natpod上都会部署neutronl2gwagent以及neutronl2gwplugin。neutronl2gwagent会周期地向neutronl2gwplugin上报节点的状态,neutronl2gwplugin在db记录每个neutronl2gwagent的状态信息。[0103]a2,在管理pod上xjob进程会周期地调用接口查询计算pod、natpod上的l2gw计算节点的状态和l2gwnat节点的状态。[0104]a3,当xjob进程发现有异常的l2gw计算节点的状态或者异常的l2gwnat节点的状态时,首先在管理pod上保存该异常状态,接着以异步的方式向计算pod、natpod以及虚拟网关pod通告异常的l2gw计算节点或者异常的l2gwnat节点。计算pod、natpod以及虚拟网关pod进一步通知各自对应的agent,同时更新已经建立完成的vxlan隧道,并更新相关的流表。[0105]如图5所示,示出了增加的l2gw计算节点和l2gwnat节点对计算节点、nat节点和虚拟网关节点进行负载分担的流程示意图。l2gw计算节点集群和l2gwnat节点集群中均包含多个l2gw节点,同时参与报文的转发。计算节点、nat节点和虚拟网关节点采用openflowmultipath流表实现对l2gw计算节点集群和l2gwnat节点集群的负载分担引流。当l2gw计算节点集群和l2gwnat节点集群中出现l2gw节点故障时,根据上述步骤a1-a3进行更新引流流表,避免经过故障节点。[0106]如图6所示,示出了l2gw计算节点集群或者l2gwnat节点集群之间负载分担的流程示意图。将l2gw计算节点集群或者l2gwnat节点集群任一集群定义为l2gw集群时,针对指定l2gw节点继续转发给下一个l2gw集群时(计算pod或者natpod内部之间),在该指定l2gw节点上采用openflowmultipath流表实现对下一个l2gw集群的负载分担引流。当l2gw集群中出现l2gw节点故障时,根据上述步骤a1-a3进行更新引流流表,避免经过故障节点。[0107]另外,如图7所示,请求报文和回应报文所经过的l2gw节点是一致的,即源进源出。在源端、目标端以及l2gw节点,在向下一个l2gw集群引流时都采用openflowmultipath流表,即:[0108]multipath(symmetric_l3l4 udp,1024,modulo_n,《l2gwmember成员数量》,0,nxm_nx_reg1[])[0109]这里,mutipath机制会根据报文的五元组(即源ip、目的ip、协议号、源端口号、目的端口号)进行hash值的计算,然后根据hash值/《l2gw节点数》=链路索引值。[0110]为了实现源进源出,一个l2gw集群中包含多个l2gw节点,按其vtep_ip,从小到大排序,则有:链路索引值为0代表最小vtep_ip的l2gw节点,链路索引值为1代表次小vtep_ip的l2gw节点,以此类推。请求报文中,提取五元组,计算hash值,选择的l2gw链路为:源端-》l2gw1.1-》l2gw2.2-》目标端;响应报文,提取五元组,计算hash值(和请求报文相同),选择的l2gw链路为:目标端-》l2gw2.2-》l2gw1.1-》源端。[0111]本技术中针对报文转发采用源进源出,能够充分利用l2gw节点自学习到的单播流表,减少不必要的广播泛洪,同时也方便运维管理。[0112]在保证报文转发采用源进源出的l2gw节点之后,接下来介绍下报文转发过程中l2gw节点的自学习机制,如图8所示,示出了地址解析协议(addressresolutionprotocol,arp)报文广播泛洪的示意图。[0113]对于arp报文来说,采用所有l2gw节点通过广播泛洪进行转发arp报文,能够让所有l2gw节点都学习到源端的单播vxlan流表,让后续交互的业务报文可以有效地避免不必要的二次广播泛洪。避免业务报文计算出的multipathhash值不同于arp报文计算出的multipathhash值,从而导致业务报文经过的l2gw节点和arp报文经过的l2gw节点不同。并且natpod上的nat网关为主备模式,当主备发生切换时,新的主备会对外发送免费arp报文,其目的是希望其他节点能够快速地学习到新的主备所在的vxlan。这里采用广播泛洪机制转发arp报文,就可以让所有的l2gw节点快速学习到新的主备所在的vxlan,最大程度减少主备切换过程的断流时间,故此本技术采用广播泛洪的机制进行报文的转发。[0114]如图9所示,示出了l2gw节点与l2gw节点之间的vxlan口和计算节点、nat节点和虚拟网关节点之间的vxlan口自学习示意图。无论是计算节点、nat节点、虚拟网关节点还是l2gw计算节点集群或者l2gwnat节点集群中的l2gw节点,其转发流表的设计都涉及自学习的机制。通常这些节点都存在两类vxlan口,即:一类是与计算节点、nat节点和虚拟网关节点之间的vxlan口;另外一类是与l2gw节点之间的vxlan口。[0115]自学习机制一般是匹配从vxlan口进入的报文,识别《内部vlan,目的mac》和《vni,vxlan口》的映射关系,从而自动生成单播的vxlan流表,以便后续业务报文直接匹配单播vxlan流表进行单播转发,减少广播泛洪。但是针对”与l2gw节点之间的vxlan口”情况来说,如果继续采用上述通用的做法,自学习流表生成后,后续业务报文将不会再多个l2gw节点之间做流量负载分担,也即失去了l2gw集群的作用。因此,从与l2gw节点之间的vxlan口进入的报文,将识别《内部vlan,目的mac》和《vni,l2gwgroupid》的映射关系,生成对应的单播vxlan流表。后续业务流匹配时,转到对应的l2gwmultipathtable继续做流量负载分担,因此充分利用l2gw集群的能力。[0116]在介绍了l2gw节点自学习机制之后,接下来介绍跨pod的vxlan报文转发过程。跨pod的vxlan报文转发主要依靠ovs流表进行转发,转发报文经过的节点不同,采用的流表也不同。因此对计算节点、nat节点、虚拟网关节点、l2gw计算节点和l2gwnat节点所采用的流表分别进行介绍。[0117](1)计算节点和nat节点对应的流表[0118]如图10所示,计算节点和nat节点都涉及br-tun网桥上的流表改进,改进部分为图10中虚线框中内容:[0119](i)增加l2gw转发流表:如图10所示的table=l2gwgroupid 100以及table=100。在这两部分中主要实现一个l2gwgroup里多个l2gwmember之间的流量负载分担(采用openflowmultipath)。但对于arp报文而言,此类报文不需要进行流量负载的分担,而是需要采用广播泛洪的机制发给所有的l2gwmember。[0120](ii)广播泛洪:现有技术中原有br-tun的table=22为广播泛洪表,匹配这个表的流量会往所有的vxlan口送出。本技术在引入l2gw后,广播泛洪列表里增加转向l2gwmultipathtable的动作,且允许多个。[0121](iii)自学习相关:现有技术中原有table=10为自学习流表,目的是能够学习到(内部vlanid,目的mac)和(vni,vxlan口)的一一映射关系。本技术在引入l2gw后,增加了table=19,从l2gwmembervxlan口进入的流量,自学习到table=19,接着对table=2改进时,匹配单播报文,先转向table=19处理(将l2gwgroupid寄存到reg2),再转向table=20处理。table=20增加匹配reg2=l2gwgroupid,转向l2gwmultipathtable,即:无论是广播还是单播报文都统一送给l2gwmultipathtable做流量负载分担(除arp报文外)。[0122](2)虚拟网关节点对应的流表[0123]如图11所示,虚拟网关节点涉及br-south网桥上的流表改进,改进部分为图11中虚线框中内容:[0124](i)增加l2gw转发流表:如图11所示的table=groupid 100以及table=100。这部分的设计思想和前面所述的br-tun上的改造点一样,这里就不再赘述。[0125](ii)自学习相关:针对从l2gwmembervxlan口进入的流量,自学习到table=1,而从计算节点、nat节点、虚拟网关节点之间的vxlan口进入的流量则自学习到table=2。在table=1上将groupid寄存在reg2。在table=2上匹配reg2为groupid、匹配一些特殊的目的mac,都转向对应的l2gwmultipathtable。[0126](iii)广播泛洪相关:现有技术中原有table=22为广播泛洪表,匹配这个表的流量会往所有的vxlan口送出。本技术在引入l2gw之后,广播泛洪列表里增加转向l2gwmultipathtable的动作,且允许多个。[0127](3)l2gw计算节点和l2gwnat节点中的l2gw节点对应的流表[0128]如图12所示,l2gw节点涉及br-l2gw网桥上的流表改进,由于l2gw计算节点和l2gwnat节点均是本技术相对于现有技术新添加的节点,因此按照表5具体执行报文的转发。[0129]表5[0130][0131][0132]本技术中通过l2gw节点故障的检测和自动切换,能够自动检测l2gw节点的故障,当出现故障能够实现自动切换。针对l2gw负载分担,一个l2gw集群允许部署多个l2gw节点,能够在多个l2gw节点之间做流量负载分担,同时参与报文转发。当出现转发性能不足时,可灵活横向扩容,支撑更大的转发吞吐量。另外本技术方案具有高效的自学习机制:首先特殊对待arp报文,采用广播泛洪的机制转发,可以使所有的l2gw节点通过arp报文充分自学习,避免后续业务报文走不同的l2gw节点,造成不必要的广播泛洪;同时能够快速学习nat网关的主备切换情况,最大程度减少主备切换断流时间;其次能够有效地区分l2gwvxlan口和其他的vxlan口,针对l2gwvxlan口自学习到目的mac和l2gwgroup之间的关系,使之后续报文转发匹配vxlan单播流表,引向l2gwmultipathtable实现单播流量依然负载分担,充分利用l2gw的转发资源。同时本技术可以保证流量的源进源出,通过请求报文经过某个l2gw节点后,其回应的报文依然从相同的l2gw节点回去,可以充分利用自学习到的vxlan单播流表,避免回应报文二次广播泛洪。[0133]因此本技术在l2gw节点上设计了可以高效自学习、源进源出、负载调度、故障自动切换机制的vxlan报文转发方法。本技术在引入l2gw节点之后,采用的vxlan隧道建立机制可以大幅度地减少所需vxlan子接口的数量,那么vxlan报文广播泛洪的范围也随之大幅度变小;本技术采用的vxlan报文转发方法为计算节点、nat节点以及虚拟网关节点大幅度地减少流表数量的同时,其报文转发方式更为高效、灵活、可靠,可以有效地支撑openstack大规模集群下的vxlan组网。本技术采用的方法相当于扩展现有技术中的路由隧道层级。[0134]在介绍了本技术示例性实施方式的建立虚拟扩展局域网隧道的方法、虚拟扩展局域网报文转发的方法之后,接下来,介绍根据本技术的另一示例性实施方式的虚拟扩展局域网报文转发的装置。其中,虚拟扩展局域网架构包括前述的建立虚拟扩展局域网隧道的方法构建的虚拟扩展局域网隧道,所述第二层网关计算节点上还配置有多个第二层网关计算进程,所述第二层网关nat节点上还配置有多个第二层网关nat进程,如图13所示,所述装置1300包括:[0135]接收模块1301,用于接收每个所述第二层网关计算进程和每个所述第二层网关nat进程分别发送的第二层网关节点状态;[0136]更新模块1302,用于根据每个所述第二层网关节点状态更新所述虚拟扩展局域网隧道和所述计算节点、所述第二层网关计算节点、所述nat节点、所述第二层网关nat节点和所述虚拟网关节点分别对应的流表;[0137]转发模块1303,用于利用更新后的所述虚拟扩展局域网隧道和更新后的所述计算节点、所述第二层网关计算节点、所述nat节点、所述第二层网关nat节点和所述虚拟网关节点分别对应的流表对虚拟扩展局域网报文进行转发。[0138]可选的,所述装置1300还包括:[0139]在对所述虚拟扩展局域网报文转发完成后,向发送转发所述虚拟扩展局域网报文的终端发送转发完成指令时,采用的第二层网关节点与所述终端发送转发所述虚拟扩展局域网报文采用的第二层网关节点相同。[0140]在介绍了本技术示例性实施方式的建立虚拟扩展局域网隧道的方法、虚拟扩展局域网报文转发的方法及装置之后,接下来,介绍根据本技术的另一示例性实施方式的电子设备。[0141]所属
技术领域
的技术人员能够理解,本技术的各个方面可以实现为系统、方法或程序产品。因此,本技术的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。[0142]在一些可能的实施方式中,根据本技术的电子设备可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本技术各种示例性实施方式的虚拟扩展局域网报文转发的方法中的步骤。例如,处理器可以执行如虚拟扩展局域网报文转发的方法中的步骤。[0143]下面参照图14来描述根据本技术的这种实施方式的电子设备120。图14显示的电子设备120仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。[0144]如图14所示,电子设备120以通用电子设备的形式表现。电子设备120的组件可以包括但不限于:上述至少一个处理器121、上述至少一个存储器122、连接不同系统组件(包括存储器122和处理器121)的总线123。[0145]总线123表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。[0146]存储器122可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)1221和/或高速缓存存储器1222,还可以进一步包括只读存储器(rom)1223。[0147]存储器122还可以包括具有一组(至少一个)程序模块1224的程序/实用工具1225,这样的程序模块1224包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。[0148]电子设备120也可以与一个或多个外部设备124(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备120交互的设备通信,和/或与使得该电子设备120能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口125进行。并且,电子设备120还可以通过网络适配器126与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器126通过总线123与用于电子设备120的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备120使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。[0149]在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器122,上述指令可由处理器121执行以完成上述方法。可选地,计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。[0150]在示例性实施例中,还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器121执行时实现如本技术提供的虚拟扩展局域网报文转发的方法的任一方法。[0151]在示例性实施例中,本技术提供的一种虚拟扩展局域网报文转发的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本技术各种示例性实施方式的一种虚拟扩展局域网报文转发的方法中的步骤。[0152]程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。[0153]本技术的实施方式的用于虚拟扩展局域网报文转发的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在电子设备上运行。然而,本技术的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。[0154]可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。[0155]可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、rf等等,或者上述的任意合适的组合。[0156]可以以一种或多种程序设计语言的任意组合来编写用于执行本技术操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务端上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。[0157]应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。[0158]此外,尽管在附图中以特定顺序描述了本技术方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。[0159]本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0160]本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程电子设备的处理器以产生一个机器,使得通过计算机或其他可编程电子设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0161]这些计算机程序指令也可存储在能引导计算机或其他可编程电子设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0162]这些计算机程序指令也可装载到计算机或其他可编程电子设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0163]尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。[0164]显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献