一种分布式网络的通信方法、系统和控制节点的制作方法

文档序号:10515395阅读:359来源:国知局
一种分布式网络的通信方法、系统和控制节点的制作方法
【专利摘要】本发明公开了一种分布式网络的通信方法、系统以及控制节点,方法应用于控制节点中,所述方法包括:接收云平台中的第一租户发送的添加外部网关的请求;基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点;其中,所述代表节点为所述第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介;由此可见,本发明使得南北向流量中源地址转换的流量不再经过网络节点,而是经过计算节点,解决了网络节点拥塞的问题,提高了整个网络的性能。
【专利说明】
一种分布式网络的通信方法、系统和控制节点
技术领域
[0001]本发明涉及云计算技术领域,更具体的说是涉及一种分布式网络的通信方法、系统和控制节点。
【背景技术】
[0002]Openstack是一个开源的云平台管理项目,能够提供可扩展的灵活的云平台管理。由于Openstack中具有很多租户,因此为了保证每一租户的安全性,在Openstack的云数据中心中,不同租户之间需要隔离,也就是说,不同租户之间不能相互访问。而在同一租户下,Opens tack中的网络流量可以包括东西向流量、南北向流量以及DHCP流量。
[0003]目前,在Openstack的legacy的网络模型中,无论东西向流量还是南北向流量都需要经过网络节点,因此,很容易造成网络节点的拥塞。为了解决该问题,Openstack提出了分布式虚拟路由(Distributed Virtual Router,DVR)网络模型,在DVR网络模型中,东西向流量以及南北向流量中目的地址转换(Destinat1n Network Address Translat1n,DNAT)的流量,不再经过网络节点,而是经过用于提供二层网络的计算节点。
[0004]但是,发明人通过研究发现,在DVR网络模型中,南北向流量中源地址转换(SourceNetwork Address Translat1n,SNAT)的流量仍需要经过同一网络节点,因此,当经过网络节点的SNAT流量较多时,仍会造成网络节点的拥塞,从而降低整个网络的性能。

【发明内容】

[0005]有鉴于此,本发明提供一种分布式网络的通信方法、系统和控制节点,以解决现有技术中会造成网络节点的拥塞,降低整个网络的性能的技术问题。
[0006]为实现上述目的,本发明提供如下技术方案:
[0007]—种分布式网络的通信方法,应用于控制节点中,所述方法包括:
[0008]接收云平台中的第一租户发送的添加外部网关的请求;
[0009]基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点;
[0010]其中,所述代表节点为所述第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介。
[0011]优选的,所述在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点,包括:
[0012]确定属于所述第一租户的绑定有源地址转换模块的路由模块;
[0013]检测所述源地址转换模块是否绑定有L3代理器;
[0014]若否,则在所述第一租户的计算节点中确定满足第一预设条件的L3代理器,并绑定所述源地址转换模块和所述满足第一预设条件的L3代理器;
[0015]向绑定有所述源地址转换模块的L3代理器发送绑定通知消息,以使得所述L3代理器在其所属计算节点上建立所述源地址转换模块的命名空间;
[0016]其中,建立有所述源地址转换模块的命名空间的计算节点为所述第一租户的代表节点。
[0017]优选的,所述检测所述源地址转换模块是否绑定有L3代理器之后,还包括:
[0018]若是,则确定绑定有所述源地址转换模式的L3代理器所属计算节点为所述第一租户的代表节点。
[0019]优选的,所述在所述第一租户的计算节点中确定满足第一预设条件的L3代理器,包括:
[0020]在所述第一租户的计算节点中确定能够提供SNAT服务的L3代理器为满足所述第一预设条件的L3代理器。
[0021 ]优选的,当满足第一预设条件的L3代理器具有至少两个时,所述在所述第一租户的计算节点中确定满足第一预设条件的L3代理器之后,还包括:
[0022]获取所述第一租户的第一类虚拟机在每一第一计算节点上的数量;其中,所述第一类虚拟机为所述路由模块下的虚拟机,所述第一计算节点为具有满足第一预设条件的L3代理器的节点;
[0023]确定具有所述第一类虚拟机最多的第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器。
[0024]优选的,所述获取所述第一租户的第一类虚拟机在每一计算节点上的数量之后,还包括:
[0025]当具有所述第一类虚拟机最多的第一计算节点为至少两个时,随机选取其中一个第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器。
[0026]—种分布式网络的通信方法,应用于第一计算节点中,所述第一计算节点为控制节点在接收到云平台中的第一租户发送的添加外部网关的请求时,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取的作为所述第一租户的代表节点的计算节占.V ,
[0027]所述方法包括:
[0028]当所述第一计算节点中的第一交换机接收到位于所述第一计算节点内的虚拟机发送给外部网络的流量时,判断所述虚拟机是否为所述第一租户的虚拟机,生成判断结果;
[0029]基于所述判断结果控制所述虚拟机与所述外部网络的通信。
[0030]优选的,所述基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括:
[0031]当所述判断结果表征所述虚拟机为所述第一租户的虚拟机时,所述第一计算节点中的第一交换机将所述虚拟机发送给外部网络的流量发送至所述第一计算节点中的所述第一租户的第一路由模块;
[0032]所述第一路由模块对所述流量进行路由;
[0033]所述第一交换机将路由后的流量发送至所述第一计算节点中的所述第一租户的第一源地址转换模块;
[0034]所述第一源地址转换模块将所述流量的源IP地址转换为所述第一租户的公网IP地址;
[0035]所述第一交换机将具有公网IP地址的流量发送到所述外部网络。
[0036]优选的,所述基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括:
[0037]当所述判断结果表征所述虚拟机为第二租户的虚拟机时,第一计算节点中的第一交换机将所述虚拟机发送给外部网络的流量发送至第一计算节点中的所述第二租户的第二路由模块;
[0038]所述第二路由模块对所述流量进行路由;
[0039]所述第一交换机将路由后的流量发送至第二计算节点,以使得所述第二计算节点将所述流量发送到所述外部网络;
[0040]其中,所述第二计算节点为所述第二租户的代表节点。
[0041]—种分布式网络的通信方法,应用于第一计算节点中,其中,所述第一计算节点为控制节点在接收到云平台中的第一租户发送的添加外部网关的请求时,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取的作为所述第一租户的代表节点的计算节点;
[0042]所述方法包括:
[0043]当所述第一计算节点中的第一交换机接收到外部网络返回给所述第一租户的虚拟机的流量时,判断所述虚拟机是否位于所述第一计算节点中,生成判断结果;
[0044]基于所述判断结果控制所述虚拟机与所述外部网络的通信。
[0045]优选的,所述基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括:
[0046]当所述判断结果表征所述虚拟机位于所述第一计算节点中,所述第一交换机将所述流量发送给第一计算节点中所述第一租户的第一源地址转换模块;
[0047]所述第一源地址转换模块将所述流量的目的地址转换为所述虚拟机的地址;
[0048]所述第一交换机将具有所述虚拟机的地址的流量转发至所述第一计算节点中所述第一租户的第一路由模块;
[0049]所述第一路由模块将所述流量进行路由;
[0050]所述第一交换机将路由后的流量发送至所述虚拟机。
[0051]优选的,所述基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括:
[0052]当所述判断结果表征所述虚拟机位于第二计算节点中,所述第一交换机将所述流量发送到所述第一计算节点中的所述第一租户的第一源地址转换模块;
[0053]所述第一源地址转换模块将所述流量的目的地址转换为所述虚拟机的地址;
[0054]所述第一交换机将具有所述虚拟机的地址的流量转发到所述第一计算节点中的第一租户的第一路由模块;
[0055]所述第一路由模块对所述流量进行路由;
[0056]所述第一交换机将路由后的流量发送到第二计算节点,以由所述第二计算节点将所述流量发送给位于第二计算节点中的第一租户的所述虚拟机。
[0057]一种分布式网络的通信方法,应用于第一计算节点中,其中,所述第一计算节点为控制节点在接收到云平台中的第一租户发送的添加外部网关的请求时,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取的作为所述第一租户的代表节点的计算节点;
[0058]所述方法包括:
[0059]当所述第一计算节点中的第一交换机接收到第二计算节点转发的流量时,判断所述流量的类型,生成判断结果;
[0060]基于判断结果控制虚拟机与外部网络之间的通信。
[0061]优选的,基于判断结果控制虚拟机与外部网络之间的通信,包括:
[0062]当所述判断结果表征所述流量为所述第一租户的虚拟机发送给外部网络的流量时,所述第一交换机将所述流量发送给第一租户的第一路由模块;
[0063]所述第一路由模块将所述流量进行路由;
[0064]所述第一交换机将路由后的流量发送给所述第一租户的第一源地址转换模块;
[0065]所述第一源地址转换模块将所述流量的源IP地址转换为第一租户的公网IP地址;
[0066]所述第一交换机将带有公网IP地址的流量发送给外部网络。
[0067]优选的,基于判断结果控制虚拟机与外部网络之间的通信,包括:
[0068]当所述判断结果表征所述流量为外部网络发送给第二租户的虚拟机的流量时,所述第一交换机将所述流量发送给所述第一计算节点中第二租户的第二路由模块;
[0069]第二路由模块对所述流量进行路由;
[0070]所述第一交换机将路由后的流量发送给所述第一计算节点中的所述虚拟机。
[0071]—种分布式网络的通信系统,包括:
[0072]控制节点,所述控制节点用于在接收到云平台中的第一租户发送的添加外部网关的请求,基于所述添加外部网关的请求,所述在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点;
[0073]第一计算节点,所述第一计算节点为所述第一租户的代表节点,用于在所述第一租户的虚拟机访问外部网络时,作为所述虚拟机与外部网络进行通信的媒介。
[0074]优选的,访问外部网络的所述第一租户的虚拟机位于所述第一计算节点中;
[0075]所述第一计算节点包括第一交换机、所述第一租户的第一路由模块、与所述第一路由模块建立绑定关系的所述第一租户的第一 SNAT模块以及与所述第一 SNAT模块建立绑定关系的L3代理器;其中:
[0076]所述第一交换机用于将所述虚拟机发送给外部网络的流量发送到所述第一路由模块,并将所述第一路由模块路由的流量发送到所述第一 SNAT模块;
[0077]所述第一SNAT模块用于将所述流量的源IP地址转换为所述第一租户的公网IP地址;
[0078]所述第一交换机还用于将具有公网IP地址的流量发送到所述外部网络。
[0079]优选的,访问外部网络的所述第一租户的虚拟机位于所述第一计算节点中;
[0080]所述计算节点包括第一交换机、所述第一租户的第一路由模块、与所述第一路由模块建立绑定关系的所述第一租户的第一 SNAT模块以及与所述第一 SNAT模块建立绑定关系的L3代理器;其中:
[0081]所述第一交换机用于将外部网络返回给所述虚拟机的流量发送给所述第一SNAT丰旲块;
[0082]所述第一SNAT模块用于将所述网络流量的目的地址转换为所述虚拟机的地址,并发送给所述第一交换机;
[0083]所述第一交换机还用于将具有所述虚拟机的地址的流量转发到所述第一路由模块,并将所述第一路由模块路由后的流量发送到所述虚拟机。
[0084]—种分布式网络的通信系统,包括:
[0085]控制节点,所述控制节点用于在接收到云平台中的第一租户发送的添加外部网关的请求,基于所述添加外部网关的请求,为所述第一租户选取至少一个计算节点为所述第一租户的代表节点;
[0086]第一计算节点,所述第一计算节点为所述第一租户的代表节点,用于在所述第一租户的虚拟机访问外部网络时,作为所述虚拟机与外部网络进行通信的媒介;
[0087]第二计算节点,所述第二计算节点上具有访问外部网络的所述第一租户的虚拟机。
[0088]优选的,访问外部网络的所述第一租户的虚拟机位于第二计算节点中;
[0089]所述第一计算节点,包括第一交换机、所述第一租户的第一路由模块、与所述第一路由模块建立绑定关系的所述第一租户的第一 SNAT模块以及与所述第一 SNAT模块建立绑定关系的L3代理器;
[0090]所述第二计算节点包括第二交换机,所述第一租户的第二路由模块;
[0091]所述第二交换机用于将所述虚拟机发送给外部网络的流量发送到所述第二路由模块,并将所述第二路由模块路由的流量发送至所述第一计算节点上;
[0092]所述第一交换机用于将所述流量发送到所述第一路由模块,并将所述第一路由模块路由的流量发送到所述第一 SNAT模块;
[0093]所述第一SNAT模块用于将所述流量的源IP地址转换为所述第一租户的公网IP地址;
[0094]所述第一交换机还用于将具有公网IP地址的网络流量发送到所述外部网络。
[0095]优选的,访问外部网络的所述第一租户的虚拟机位于第二计算节点中;所述第一计算节点,包括第一交换机、所述第一租户的第一路由模块、与所述第一路由模块建立绑定关系的所述第一租户的第一 SNAT模块以及与所述第一 SNAT模块建立绑定关系的L3代理器;
[0096]所述第二计算节点包括第二交换机,所述第一租户的第二路由模块;
[0097]所述第一交换机用于将外部网络返回给所述虚拟机的流量发送到所述第一SNAT丰旲块;
[0098]所述第一SNAT模块用于将所述流量的目的地址转换为所述虚拟机的地址,并发送给所述第一交换机;
[0099]所述第一交换机还用于将具有所述虚拟机地址的流量转发到所述第一路由模块,并将所述第一路由模块路由后的流量发送到所述第二计算节点;
[0100]所述第二交换机用于将所述流量发送给所述第二路由模块,并将所述第二路由模块路由后的流量发送到所述虚拟机。
[0101]—种控制节点,包括:
[0102]第一接收单元,用于接收云平台中的第一租户发送的添加外部网关的请求;
[0103]第一选取单元,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点;
[0104]其中,所述代表节点为所述第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介。
[0105]优选的,所述第一选取单元包括:
[0106]第一确定模块,用于基于所述添加外部网关的请求,确定属于所述第一租户的绑定有源地址转换模块的路由模块;
[0107]第一检测模块,用于检测所述源地址转换模块是否绑定有L3代理器;
[0108]第一绑定模块,用于在所述源地址转换模块未绑定有L3代理器时,在所述第一租户的计算节点中确定满足第一预设条件的L3代理器,并绑定所述SNAT模块和所述满足第一预设条件的L3代理器;
[0109]第一发送模块,用于向绑定有源地址转换模块的L3代理器发送绑定通知消息,以使得所述L3代理器在其所属计算节点上建立所述源地址转换模块的命名空间;
[0110]其中,建立有所述源地址转换模块的命名空间的计算节点为所述第一租户的代表节点。
[0111]优选的,所述第一选取单元还包括:
[0112]第二确定模块,用于在所述源地址转换模块绑定有L3代理器时,确定绑定有所述源地址转换模式的L3代理器所属计算节点为所述第一租户的代表节点。
[0113]优选的,所述第一绑定模块具体用于在所述源地址转换模块未绑定有L3代理器时,在所述第一租户的计算节点中确定能够提供SNAT服务的L3代理器为满足所述第一预设条件的L3代理器,并绑定所述源地址转换模块和所述满足第一预设条件的L3代理器。
[0114]优选的,当满足第一预设条件的L3代理器具有至少两个时,所述第一绑定模块在所述第一租户的计算节点中确定满足第一预设条件的L3代理器之后,还用于获取所述第一租户的第一类虚拟机在每一第一计算节点上的数量,确定具有所述第一类虚拟机最多的第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器;其中,所述第一类虚拟机为所述路由模块下的虚拟机,所述第一计算节点为具有满足第一预设条件的L3代理器的节点。
[0115]优选的,所述第一绑定模块在获取所述第一租户的第一类虚拟机在每一计算节点上的数量之后,还用于当具有所述第一类虚拟机最多的第一计算节点为至少两个时,随机选取其中一个第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器。
[0116]经由上述的技术方案可知,与现有技术相比,本发明实施例公开了一种分布式网络的通信方法,该方法应用于控制节点中,具体的,接收云平台中的第一租户发送的添加外部网关的请求,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点;由此可见,本发明为第一租户选取计算节点作为第一租户的代表节点,该代表节点为第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介,使得南北向流量中源地址转换的流量不再经过网络节点,而是经过计算节点,解决了网络节点拥塞的问题,提高了整个网络的性能。
【附图说明】
[0117]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0118]图1为本发明实施例一公开的一种分布式网络的通信方法的流程示意图;
[0119]图2为本发明实施例二公开的一种分布式网络的通信方法的流程示意图;
[0120]图3为本发明实施例三公开的一种分布式网络的通信方法的流程示意图;
[0121]图4为本发明公开的第一计算节点和第二计算节点的结构示意图;
[0122]图5为本发明实施例四公开的一种分布式通信方法的流程示意图;
[0123]图6为本发明实施例五公开的一种分布式通信方法的流程示意图;
[0124]图7为本发明实施例六公开的一种分布式通信方法的流程示意图;
[0125]图8为本发明实施例七公开的一种分布式的通信系统的结构示意图;
[0126]图9为本发明实施例七公开的第一计算节点的结构示意图;
[0127]图10为本发明实施例八公开的一种分布式网络的通信系统的结构示意图;
[0128]图11为本发明实施例八公开的第一计算节点和第二计算节点的具体结果示意图;
[0129]图12为本发明实施例九公开的一种控制节点的结构示意图;
[0130]图13为本发明实施例十公开的一种第一选取单元的结构示意图。
【具体实施方式】
[0131]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0132]本发明实施例一公开了一种分布式网络的通信方法,该方法应用于控制节点中,如图1所示,该方法包括以下步骤:
[0133]步骤101:接收云平台中的第一租户发送的添加外部网关的请求;
[0134]本发明中的云平台可以指代为开源式云平台,具体可以为0penstack,0penstack为一个开源的云平台管理项目,能够提供可扩展的灵活的云平台管理。
[0135]云平台中一般具有很多租户,租户可以请求云平台提供虚拟机访问外部网络的通信媒介,即向控制节点发送添加外部网络的请求。
[0136]具体的,第一租户向控制节点发送添加外部网关的请求的方式本发明不做限定,如可以通过horizon、nova命名或自定义脚本的方式,向控制节点发送添加外部网关的请求。
[0137]步骤102:基于所述添加外部网关的请求,在第一租户所属的计算节点中选取至少一个计算节点作为第一租户的代表节点。
[0138]其中,代表节点为第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介。
[0139]需说明的是,在云平台中,一个租户具有多个虚拟机,而不同的虚拟机可以分布在不同的计算节点上,分布有第一租户的虚拟机的计算节点为第一租户的计算节点,一个租户可以具有多个计算节点。而由于一个计算节点上可以分布有不同租户的虚拟机,因此,同一计算节点可以作为不同租户的计算节点,当然一个计算节点上也可以仅分布有同一租户的虚拟机。
[0140]控制节点接收到第一租户发送的添加外部网关的请求后,会在第一租户所属的计算节点中选取至少一个计算节点作为第一租户的代表节点,而具体如何选取会在本发明的其他实施例中详细介绍。
[0141]强调的是,现有技术中源地址转换SNAT的流量都经过网络节点,网络节点为提供三层网络虚拟路由以及DHCP(Dynamic Host Configurat1n Protocol,动态主机配置协议服务器)服务的节点。而本发明中SANT的流量经过计算节点,完全区别于现有技术。其中,SNAT的流量为虚拟机访问外部网络时与外部网络进行通信的流量,包括虚拟机访问外部网络的流量以及外部网络返回给虚拟机的流量。
[0142]由此可见,在本实施例中,控制节点为第一租户选取计算节点作为第一租户的代表节点,该代表节点为第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介,使得南北向流量中的源地址转换的流量不再经过网络节点,而是经过计算节点,解决了网络节点拥塞的问题,提高了整个网络的性能。
[0143]本发明实施例二公开了一种分布式网络的通信方法,以详细介绍控制节点为第一租户选取代表节点的过程,具体的,如图2所示,在第一租户所属的计算节点中选取至少一个计算节点作为第一租户的代表节点,包括以下步骤:
[0144]步骤201:确定属于所述第一租户的绑定有源地址转换模块的路由模块;
[0145]其中,源地址转换模块简称SNAT模块,一个租户具有至少一个路由模块,在数据库中查找第一租户的绑定有SANT模块的路由模块。需说明的是,数据库中存储有第一租户的模块数据信息,因此,可以确定出属于第一租户的绑定有SNAT模块的路由模块。只有路由模块绑定有SNAT模块才能为第一租户选取计算节点作为代表节点。
[0146]在本发明中,第一租户可以预先建立路由模块和源地址转换模块的绑定关系。
[0147]步骤202:检测所述SNAT模块是否绑定有L3代理器;若否,进入步骤203,若是,进入步骤205;
[0148]具体的,可以在数据库中检测SANT模块是否绑定有L3代理器,如果绑定有L3代理器,那么所绑定的L3代理器所位于的计算节点说明已被选取为该第一租户的代表节点。而如果没有绑定有L3代理器,则需要选取L3代理器从而进行绑定动作。
[0149]步骤203:在所述第一租户的计算节点中确定满足第一预设条件的L3代理器,并绑定所述SNAT模块和所述满足第一预设条件的L3代理器;
[0150]具体的,所述在所述第一租户的计算节点中确定满足第一预设条件的L3代理器,包括:
[0151]在所述第一租户的计算节点中确定能够提供SNAT服务的L3代理器为满足所述第一预设条件的L3代理器。
[0152]其中,L3代理器简称L3agent,位于计算节点上,分为两种类型,一种类型的属性为dvr属性,另一种类型的属性为dvr_Snat属性。具有dvr属性的L3代理器能够提供路由服务以及目的地址转换DNAT服务,具有dvr_Snat属性的L3代理器能够提供路由服务、DNAT服务以及SNAT服务。因此,具有dvr属性的L3代理器的计算节点不允许作为租户的代表节点,而具有dvr_snat属性的L3代理器的计算节点允许作为租户的代表节点。在本发明中,需要在第一租户的计算节点中确定能够提供SNAT服务的L3代理器为满足预设条件的L3代理器。
[0153]步骤204:向绑定有所述源地址转换模块的L3代理器发送绑定通知消息,以使得所述L3代理器在其所属计算节点上建立所述SNAT模块的命名空间;
[0154]当建立了SANT模块和L3代理器的绑定关系后,由于该绑定关系是在数据库中建立的,因此需要向相应的L3代理器发送绑定通知消息,L3代理器在接收到该绑定通知消息后,会在其所属的计算节点上创建SNAT模块的命名空间name space。其中,建立有所述SNAR模块的命名空间的计算节点为第一租户的代表节点。
[0155]需说明的是,在本发明中,第一租户中绑定有SNAT模块的路由模块可能有多个,那么,需要检测每一SNAT模块是否绑定有L3代理器,为没有绑定有L3代理器的SNAT模块绑定L3代理器,相应的,第一租户则有多个代表节点。也就是说,第一租户的代表节点的个数与属于第一租户的绑定有SNAT的路由模块的个数一致。
[0156]步骤205:确定绑定有所述SNAT模块的L3代理器所属计算节点为所述第一租户的代表节点。
[0157]由此可见,本实施例描述了控制节点为第一租户选取代表节点的过程,该代表节点为第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介,使得南北向流量中的源地址转换的流量不再经过网络节点,而是经过计算节点,解决了网络节点拥塞的问题,提高了整个网络的性能。
[0158]本发明实施例三公开了一种分布式网络的通信方法,如图3所示,该方法包括以下步骤:
[0159]步骤301:接收云平台中的第一租户发送的添加外部网关的请求;
[0160]步骤302:确定属于所述第一租户的绑定有源地址转换模块的路由模块;
[0161 ]步骤303:检测所述源地址转换模块是否绑定有L3代理器,若否,进入步骤304,若是,进入步骤310;
[0162]步骤304:在所述第一租户的计算节点中确定满足第一预设条件的L3代理器;
[0163]步骤305:获取满足第一预设条件的L3代理器的个数,判断个数是否大于等于两个,若是,进入步骤306;若否,进入步骤308 ;
[0164]如果满足第一预设条件的L3的代理器大于等于两个,那么则需要确定出一个用于与源地址转换模块建立绑定关系的L3代理器;而如果满足第一预设条件的L3的代理器只有一个,那么直接建立其与源地址转换模块的绑定关系即可。
[0165]步骤306:获取所述第一租户的第一类虚拟机在每一第一计算节点上的数量;
[0166]其中,第一类虚拟机为所述路由模块下的虚拟机,第一计算节点为具有满足第一预设条件的L3代理器的节点。
[0167]具体的,第一租户的绑定有源地址转换模块的路由模块下具有的虚拟机在本发明称之为第一类虚拟机,第一类虚拟机可以分布在不同的计算节点上,具有满足第一预设条件的L3代理器的节点称之为第一计算节点。
[0168]为了便于理解,以一实例进行说明,假设具有满足第一预设条件的L3代理器的第一计算节点有三个,分别为第一计算节点A、第一计算节点B以及第一计算节点C;而第一租户的绑定有源地址转换模块的路由模块下具有的虚拟机的个数为40个,即第一类虚拟机的个数为40个,分布在第一计算节点A上的第一类虚拟机的个数为20个,分布在第一计算节点B上的第一类虚拟机的个数为10个,分布在第一计算节点C上的第一类虚拟机的个数为10个,那么通过获取第一租户的第一类虚拟机在每一第一计算节点上的数量,则能够确定出在第一计算节点上分布第一类虚拟机的个数。
[0169]步骤307:确定具有所述第一类虚拟机最多的第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器;
[0170]当具有第一类虚拟机最多的第一计算节点仅有一个时,那么,直接确定该第一计算节点上的L3代理器为能够确定与源地址转换模块绑定的L3代理器。在步骤306下描述的实例中,能够确定第一计算节点A上具有的第一类虚拟机最多,因此,第一计算节点A上的L3代理器为能够与源地址转换模块绑定的L3代理器。
[0171]而当具有所述第一类虚拟机最多的第一计算节点为至少两个时,则随机选取其中一个第一计算节点上的L3代理器为能够与源地址转换模块绑定的L3代理器。
[0172]可理解的是,具有第一类虚拟机最多的第一计算节点上的虚拟机与外部网络进行访问的几率相对于其他计算节点较大,因此,为了能够进一步提高网络通信性能,将该第一计算节点上的L3代理器作为能够与源地址转换模块绑定的L3代理器,从而能够将该第一计算节点作为第一租户的代表节点。
[0173]本实施例描述了当满足第一预设条件的L3代理器具有至少两个时如何选取与源地址转换模块绑定的L3代理器的一种实现方式。但是,需说明的是,本发明并不局限于此,在另一实施例中,作为从满足第一预设条件的L3代理器中确定能够与源地址转换模块绑定的另一种实现方式,可以随机选取一个满足第一预设条件的L3代理器为能够与源地址转换模块绑定的L3代理器。
[0174]步骤308:绑定所述源地址转换模块和所述满足第一预设条件的L3代理器;
[0175]当获取满足第一预设条件的L3代理器的个数仅为一个时,则直接建立源地址转换模块与满足第一预设条件的L3代理器的绑定关系即可。而当满足第一预设条件的L3代理器有至少两个时,则将建立源地址转换模块与选取出的L3代理器的绑定关系。
[0176]步骤309:向绑定有源地址转换模块的L3代理器发送绑定通知消息,以使得所述L3代理器在其所属计算节点上建立源地址转换模块的命名空间;
[0177]其中,建立有源地址转换模块的命名空间的计算节点为第一租户的代表节点。
[0178]步骤310:确定绑定有所述源地址转换模式的L3代理器所属计算节点为所述第一租户的代表节点。
[0179]由此可见,本实施例描述了控制节点为第一租户选取代表节点的过程,该代表节点为第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介,使得南北向流量中的源地址转换的流量不再经过网络节点,而是经过计算节点,解决了网络节点拥塞的问题,提尚了整个网络的性能。
[0180]当选取了第一租户的代表节点后,该代表节点能够作为虚拟机访问外部网络时,与外部网络通信的媒介。需说明的是,虚拟机访问外部网络具有两种状态,一种状态为发送状态,即虚拟机向外部网络发送信息的状态;另一种状态为接收状态,即外部网络向虚拟机返回信息的状态。对应的,源地址转换的流量也包括两种,一种为虚拟机发送给外部网络的流量,另一种为外部网络返回给虚拟机的流量。
[0181]第一租户的代表节点作为虚拟机与外部网络的通信媒介,相应的,代表节点能够用于传输第一租户的虚拟机与外部网络之间的流量。
[0182]在本发明中,第一租户的代表节点中可以设置有第一租户的虚拟机,还可以设置有非第一租户的虚拟机,本发明称之为第二租户的虚拟机。相应的,访问外部网络的第一租户的虚拟机可能为设置在第一租户的代表节点中的虚拟机,当然也可能未设在第一租户的代表节点中,而仅是设置在普通的计算节点中。
[0183]针对上述的可能几种情况,本发明以第一租户的代表节点,即第一计算节点为主体,分为三大类情况进行说明。
[0184]为了便于理解,本发明结合一实例进行描述,参见图4,示出了两个计算节点的结构示意图,需说明的是,图4的计算节点仅示出了与本发明相关的模块,但不代表计算节点仅包括图4示出的这几种模块。
[0185]计算节点I为租户Tl的代表节点,计算节点2为租户T2的代表节点,虚拟机VTl、VT2以及VT6为租户Tl的虚拟机,虚拟机VT3、VT4以及VT5为租户T2的虚拟机。
[0186]计算节点I上具有交换机OVSl,租户Tl的源地址转换模块SNATfor Tl,租户Tl的路由模块DVR for Tl,租户T2的路由模块DVR for T2,L3代理器L3agent。
[0187]计算节点2上具有交换机0VS2,租户T2的源地址转换模块SNATfor T2,租户T2的路由模块DVR for T2,租户Tl的路由模块DVR for Tl,L3代理器L3agent。
[0188]需说明的是,由于计算节点I为租户Tl的代表节点,因此,计算节点I中,SNATforTl与DVR for Tl具有绑定关系,SNAT for Tl与L3agent具有绑定关系。由于计算节点2为租户T2的代表节点,因此,计算节点2中,SNAT for T2与DVR for T2具有绑定关系,SNAT forT2与L3agent具有绑定关系。
[0189]—、本发明描述的第一大类情况对应于第一计算节点内的虚拟机访问外部网络的发送状态,这种情况下,访问外部网络的虚拟机可能为第一租户的虚拟机,当然也可能不是第一租户的虚拟机,即为第二租户的虚拟机。
[0190]具体的,本发明实施例四公开了一种分布式通信方法,该方法应用于第一计算节点中,第一计算节点为控制节点在接收到云平台中的第一租户发送的添加外部网关的请求时,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取的作为所述第一租户的代表节点的计算节点。
[0191]需说明的是,控制节点为第一租户选取代表节点的具体实现可参考以上各实施例,此处不再详细赘述。
[0192]如图5所示,该方法包括以下步骤:
[0193]步骤501:当所述第一计算节点中的第一交换机接收到位于所述第一计算节点内的虚拟机发送给外部网络的流量时,判断所述虚拟机是否为所述第一租户的虚拟机,生成判断结果;
[0194]当位于第一计算节点内的虚拟机处于访问外部网络的发送状态时,第一计算节点的第一交换机会接收到位于虚拟机发送给外部网络的流量,那么,需判断该虚拟机是否为第一租户的虚拟机。
[0195]步骤502:基于所述判断结果控制所述虚拟机与所述外部网络的通信。
[0196]作为种判断结果,该虚拟机为第一租户的虚拟机;作为另一种判断结果,该虚拟机不是第一租户的虚拟机。具体的,以下分为详细描述:
[0197](— )基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括:
[0198](I)当判断结果表征所述虚拟机为所述第一租户的虚拟机时,所述第一计算节点中的第一交换机将所述虚拟机发送给外部网络的流量发送至所述第一计算节点中的所述第一租户的第一路由模块;
[0199](2)所述第一路由模块对所述流量进行路由;
[0200](3)所述第一交换机将路由后的流量发送至所述第一计算节点中的所述第一租户的第一源地址转换模块;
[0201](4)所述第一源地址转换模块将所述流量的源IP地址转换为所述第一租户的公网IP地址;
[0202](5)所述第一交换机将具有公网IP地址的流量发送到所述外部网络。
[0203]具体的,结合图4进行说明,假设位于计算节点I中的虚拟机VMl处于访问外部网络的发送状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VTl为租户Tl的虚拟机。这种情况下,计算节点I的交换机OVSl将虚拟机VTl发送给外部网络的流量发送至计算节点I中的租户Tl的路由模块DVR for Tl,路由模块DVR for Tl对接收到的流量进行路由,交换机OVSl将路由后的流量发送至计算节点I中的租户Tl的源地址转换模块SNAT for Tl,源地址转换模块SNAT for Tl将流量的源IP地址转换为租户Tl的公网IP地址,交换机OVSl将具有公网IP地址的流量发送到外部网络。
[0204](二)基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括:
[0205](I)当所述判断结果表征所述虚拟机为第二租户的虚拟机时,第一计算节点中的第一交换机将所述虚拟机发送给外部网络的流量发送至第一计算节点中的所述第二租户的第二路由模块;
[0206](2)所述第二路由模块对所述流量进行路由;
[0207](3)所述第一交换机将路由后的流量发送至第二计算节点,以使得所述第二计算节点将所述流量发送到所述外部网络;
[0208]其中,所述第二计算节点为所述第二租户的代表节点。
[0209]具体的,结合图4进行说明,假设位于计算节点I中的虚拟机VM3处于访问外部网络的发送状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VT3为租户T2的虚拟机,计算节点2为租户T2的代表节点。这种情况下,计算节点I需要将租户T2的虚拟机VM3发送给外部网络的流量发送给租户T2的代表节点即计算节点2,由计算节点2将流量发送给外部网络。
[0210]具体的,计算节点I的交换机OVSl将虚拟机VT3访问外部网络的流量发送至计算节点I中的租户T2的路由模块DVR for T2,路由模块DVR for T2对接收到的流量进行路由,计算节点I的交换机OVSl将路由后的流量发送至计算节点2,以使得计算节点2将流量发送到外部网络。
[0211]二、本发明描述的第二大类情况对应于虚拟机访问外部网络的接收状态,这种情况下,外部网络会向虚拟机的代表节点返回信息,那么,在第一租户的代表节点,即第一计算节点接收到的外部网络访问虚拟机的流量的情况下,该虚拟机一定是第一租户的虚拟机,但是该虚拟机可能位于第一计算节点中,也可能并未位于第一计算节点中。
[0212]具体的,本发明实施例五公开了一种分布式通信方法,该方法应用于第一计算节点中,第一计算节点为控制节点在接收到云平台中的第一租户发送的添加外部网关的请求时,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取的作为所述第一租户的代表节点的计算节点。
[0213]需说明的是,控制节点为第一租户选取代表节点的具体实现可参考以上各实施例,此处不再详细赘述。
[0214]如图6所示,该方法包括以下步骤:
[0215]步骤601:当所述第一计算节点中的第一交换机接收到外部网络返回给所述第一租户的虚拟机的流量时,判断所述虚拟机是否位于所述第一计算节点中,生成判断结果;
[0216]第一租户的虚拟机处于访问外部网络的接收状态时,第一计算节点的第一交换机会接收到外部网络返回给第一租户的虚拟机的流量,需判断该虚拟机是否位于第一计算节点中。
[0217]步骤602:基于所述判断结果控制所述虚拟机与所述外部网络的通信。
[0218]作为种判断结果,该虚拟机位于第一租户的代表节点中;作为另一种判断结果,该虚拟机并未位于第一租户的代表节点中。具体的,以下分为详细描述:
[0219](— )基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括:
[0220](I)当所述判断结果表征所述虚拟机位于所述第一计算节点中,所述第一交换机将所述流量发送给第一计算节点中所述第一租户的第一源地址转换模块;
[0221 ] (2)所述第一源地址转换模块将所述流量的目的地址转换为所述虚拟机的地址;
[0222](3)所述第一交换机将具有所述虚拟机的地址的流量转发至所述第一计算节点中所述第一租户的第一路由模块;
[0223](4)所述第一路由模块将所述流量进行路由;
[0224](5)所述第一交换机将路由后的流量发送至所述虚拟机。
[0225]具体的,结合图4进行说明,假设虚拟机VMl处于访问外部网络的接收状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VTl为租户Tl的虚拟机且位于计算节点I中。这种情况下,计算节点I的交换机OVSl将外部网络返回给租户Tl的虚拟机VMl的流量发送给计算节点I中租户Tl的源地址转换模块SNAT for Tl,源地址转换模块SNAT for Tl将所述流量的目的地址转换为虚拟机VMl的地址,交换机OVSl将具有所虚拟机VMl的地址的流量转发至计算节点I中租户Tl的路由模块DVR for Tl,路由模块DVR for Tl将所述流量进行路由,交换机OVSl将路由后的流量发送至虚拟机VMl。
[0226](二)基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括:
[0227](I)当所述判断结果表征所述虚拟机位于第二计算节点中,所述第一交换机将所述流量发送到所述第一计算节点中的所述第一租户的第一源地址转换模块;
[0228](2)所述第一源地址转换模块将所述流量的目的地址转换为所述虚拟机的地址;
[0229](3)所述第一交换机将具有所述虚拟机的地址的流量转发到所述第一计算节点中的第一租户的第一路由模块;
[0230](4)所述第一路由模块对所述流量进行路由;
[0231](5)所述第一交换机将路由后的流量发送到第二计算节点,以由所述第二计算节点将所述流量发送给位于第二计算节点中的第一租户的所述虚拟机。
[0232]具体的,结合图4进行说明,假设虚拟机VM6处于访问外部网络的接收状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VT6为租户Tl的虚拟机且位于计算节点2中。这种情况下,计算节点I需要将外部网络返回给租户Tl的虚拟机VM6的流量发送给计算节点2,由计算节点2将流量返回给虚拟机VM6。
[0233]具体的,计算节点I的交换机OVSl将流量发送到计算节点I中的租户Tl的源地址转换模块SNAT for Tl,源地址转换模块SNAT for Tl将所述流量的目的地址转换为虚拟机VM6的地址,交换机OVSI将具有虚拟机VM6的地址的流量转发到计算节点I中的租户TI的路由模块DVR for Tl,路由模块DVR for Tl对流量进行路由,交换机OVSl将路由后的流量发送到计算节点2,以由计算节点2将所述流量发送给位于虚拟机VM6。
[0234]三、本发明描述的第三大类情况对应于第一租户的代表节点,即第一计算节点接收到其他计算节点转发的流量。
[0235]具体的,本发明实施例六公开了一种分布式通信方法,该方法应用于第一计算节点中,第一计算节点为控制节点在接收到云平台中的第一租户发送的添加外部网关的请求时,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取的作为所述第一租户的代表节点的计算节点。
[0236]需说明的是,控制节点为第一租户选取代表节点的具体实现可参考以上各实施例,此处不再详细赘述。
[0237]如图7所示,该方法包括以下步骤:
[0238]步骤701:当第一计算节点中的第一交换机接收到第二计算节点转发的流量时,判断所述流量的类型,生成判断结果;
[0239]步骤702:基于判断结果控制虚拟机与外部网络之间的通信。
[0240]第一计算节点接收到的第二计算节点转发的流量,一种判断结果为该流量为虚拟机发送给外部网络的流量且该虚拟机为第一租户的虚拟机,但是该虚拟机并未位于第一租户的代表节点中,而是位于第二计算节点中;另一种判断结果为该流量为外部网络返回给虚拟机的流量,该虚拟机不是第一租户的虚拟机,但是位于第一租户的代表节点中。具体的,以下分为详细描述:
[0241](— )基于判断结果控制虚拟机与外部网络之间的通信,包括:
[0242](I)当所述判断结果表征所述流量为所述第一租户的虚拟机发送给外部网络的流量时,所述第一交换机将所述流量发送给第一租户的第一路由模块;
[0243](2)所述第一路由模块将所述流量进行路由;
[0244](3)所述第一交换机将路由后的流量发送给所述第一租户的第一源地址转换模块;
[0245](4)所述第一源地址转换模块将所述流量的源IP地址转换为第一租户的公网IP地址;
[0246](5)所述第一交换机将带有公网IP地址的流量发送给外部网络。
[0247]具体的,结合图4进行说明,假设虚拟机VM6处于访问外部网络的发送状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VT6为租户Tl的虚拟机且位于计算节点2中。这种情况下,当计算节点2中交换机0VS2接收到虚拟机VM6发送给外部网络的流量时,交换机0VS2将该流量发送至租户Tl的路由模块DVR for Tl,路由模块DVR forTI对接收的流量进行路由,交换机0VS2将路由后的流量通过本地网络发送给计算节点I ο具体的,计算节点I的交换机OVSl将所述流量发送给计算节点I中的租户Tl的路由模块DVRfor Tl,路由模块DVR for Tl将所述流量进行路由,交换机OVSl将路由后的流量发送给租户Tl的源地址转换模块SNAT for Tl,源地址转换模块SNAT for Tl将所述流量的源IP地址转换为租户Tl的公网IP地址,交换机OVSl将带有公网IP地址的流量发送给外部网络。
[0248](二)基于判断结果控制虚拟机与外部网络之间的通信,包括:
[0249](I)当所述判断结果表征所述流量为外部网络发送给第二租户的虚拟机的流量时,所述第一交换机将所述流量发送给所述第一计算节点中第二租户的第二路由模块;
[0250](2)第二路由模块对所述流量进行路由;
[0251](3)所述第一交换机将路由后的流量发送给所述第一计算节点中的所述虚拟机。
[0252]具体的,结合图4进行说明,假设虚拟机VM3处于访问外部网络的接收状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VM3为租户T2的虚拟机且位于计算节点I中,计算节点2为租户T2的代表节点。这种情况下,当计算节点2中交换机0VS2接收到外部网络返回给虚拟机VM3的流量时,交换机0VS2将该流量发送至租户T2的源地址转换模块SNAT for T2,源地址转换模块SNAT for T2将所述流量的目的地址转换为虚拟机VM3的地址,交换机0V2将具有虚拟机VM3的地址的流量发送给租户T2的路由模块DVRfor T2,路由模块DVR for T2对接收到的流量进行路由,交换机0VS2将路由的流量通过本地网络发送给计算节点I。具体的,计算节点I的交换机OVSl将所述流量发送给所述计算节点I中租户T2的路由模块DVR for T2,路由模块DVR for T2对所述流量进行路由,交换机OVSl将路由后的流量发送给所述计算节点I中的虚拟机VM3。
[0253]本发明实施例七还公开了一种分布式网络的通信系统,如图8所示,该分布式网络的通信系统包括控制节点100、第一计算节点200。具体的,
[0254]控制节点100用于在接收到云平台中的第一租户发送的添加外部网关的请求,基于所述添加外部网关的请求,所述在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点;
[0255]第一计算节点200为第一租户的代表节点,用于在第一租户的虚拟机访问外部网络时,作为所述虚拟机与外部网络进行通信的媒介。
[0256]在本实施例中,访问外部网络的第一租户的虚拟机位于第一计算节点。而第一租户的虚拟机访问外部网络时,该虚拟机具有两种状态,一种为访问外部网络的发送状态,另一种为访问外部网络的接收状态。
[0257]作为第一租户的虚拟机访问外部网络的发送状态,如图9所示,第一计算节点包括:第一交换机200A、所述第一租户的第一路由模块200B、与所述第一路由模块200B建立绑定关系的所述第一租户的第一 SNAT模块200C、与所述第一 SNAT模块200C建立绑定关系的L3代理器200D。
[0258]其中:
[0259]第一交换机200A用于将第一租户的虚拟机发送给外部网络的流量发送到第一路由模块200B;
[0260]第一路由模块200B用于对接收的流量进行路由;
[0261]第一交换机200A用于将所述第一路由模块200B路由的流量发送到所述第一SNAT模块200C;
[0262]所述第一SNAT模块200C用于将所述流量的源IP地址转换为所述第一租户的公网IP地址;
[0263]所述第一交换机200B还用于将具有公网IP地址的流量发送到所述外部网络。
[0264]具体的,结合图4进行说明,假设虚拟机VMl处于访问外部网络的发送状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VTl为租户Tl的虚拟机。这种情况下,计算节点I的交换机OVSl将虚拟机VTl发送给外部网络的流量发送至计算节点I中的租户Tl的路由模块DVR for Tl,路由模块DVR for Tl对接收到的流量进行路由,交换机OVSl将路由后的流量发送至计算节点I中的租户Tl的源地址转换模块SNAT for Tl,源地址转换模块SNAT for Tl将流量的源IP地址转换为租户Tl的公网IP地址,交换机OVSl将具有公网IP地址的流量发送到外部网络。
[0265]作为第一租户的虚拟机访问外部网络的接收状态,仍可参考图9,第一计算节点包括:第一交换机200A、所述第一租户的第一路由模块200B、与所述第一路由模块建立绑定关系的所述第一租户的第一 SNAT模块200C、与所述第一 SNAT模块建立绑定关系的L3代理器200Do
[0266]其中:
[0267]第一交换机200A用于将外部网络返回给所述虚拟机的流量发送给所述第一SNAT模块200C;
[0268]第一SNAT模块200C用于将所述网络流量的目的地址转换为所述虚拟机的地址,并发送给所述第一交换机200A ;
[0269]第一交换机200A还用于将具有所述虚拟机的地址的流量转发到所述第一路由模块200B,并将所述第一路由模块200B路由后的流量发送到所述虚拟机。
[0270]具体的,结合图4进行说明,假设虚拟机VMl处于访问外部网络的接收状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VTl为租户Tl的虚拟机且位于计算节点I中。这种情况下,计算节点I的交换机OVSl将外部网络返回给租户Tl的虚拟机VMl的流量发送给计算节点I中租户Tl的源地址转换模块SNAT for Tl,源地址转换模块SNAT for Tl将所述流量的目的地址转换为虚拟机VMl的地址,交换机OVSl将具有所虚拟机VMl的地址的流量转发至计算节点I中租户Tl的路由模块DVR for Tl,路由模块DVR for Tl将所述流量进行路由,交换机OVSl将路由后的流量发送至虚拟机VMl。
[0271]本发明实施例八还公开了一种分布式网络的通信系统,如图10所示,该分布式网络的通信系统包括控制节点100、第一计算节点200以及第二计算节点300;具体的:
[0272]控制节点100用于在接收到云平台中的第一租户发送的添加外部网关的请求,基于所述添加外部网关的请求,为所述第一租户选取至少一个计算节点为所述第一租户的代表节点;
[0273]第一计算节点200为所述第一租户的代表节点,用于在所述第一租户的虚拟机访问外部网络时,作为所述虚拟机与外部网络进行通信的媒介。
[0274]所述第二计算节点300上具有访问外部网络的所述第一租户的虚拟机。
[0275]在本实施例中,访问外部网络的第一租户的虚拟机位于第二计算节点。而第一租户的虚拟机访问外部网络时,该虚拟机具有两种状态,一种为访问外部网络的发送状态,另一种为访问外部网络的接收状态。
[0276]作为第一租户的虚拟机访问外部网络的发送状态,如图11所示,第一计算节点200包括第一交换机200A、第一租户的第一路由模块200B、与第一路由模块200B建立绑定关系的第一租户的第一 SNAT模块200C、与第一 SNAT模块200C建立绑定关系的L3代理器200D。
[0277]第二计算节点300包括第二交换机300A、第一租户的第二路由模块300B。
[0278]其中:
[0279]第二交换机300A用于将所述虚拟机发送给外部网络的流量发送到第二路由模块300B,并将第二路由模块300B路由的流量发送至第一计算节点200上;
[0280]第一交换机200A用于将所述流量发送到第一路由模块200B,并将第一路由模块200B路由的流量发送到第一 SNAT模块200C;
[0281]第一SNAT模块200C用于将所述流量的源IP地址转换为所述第一租户的公网IP地址;
[0282]第一交换机200A还用于将具有公网IP地址的网络流量发送到所述外部网络。
[0283]具体的,结合图4进行说明,假设虚拟机VM6处于访问外部网络的发送状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VT6为租户Tl的虚拟机且位于计算节点2中。这种情况下,计算节点2中交换机0VS2将虚拟机VM6发送给外部网络的流量发送至租户Tl的路由模块DVR for Tl,路由模块DVR for Tl对接收的流量进行路由,交换机0VS2将路由后的流量通过本地网络发送给计算节点I。计算节点I的交换机OVSI将所述流量发送给计算节点I中的租户Tl的路由模块DVR for Tl,路由模块DVR for Tl将所述流量进行路由,交换机OVSl将路由后的流量发送给租户Tl的源地址转换模块SNAT for Tl,源地址转换模块SNAT for Tl将所述流量的源IP地址转换为租户Tl的公网IP地址,交换机OVSl将带有公网IP地址的流量发送给外部网络。
[0284]作为第一租户的虚拟机访问外部网络的接收状态,仍可参考图11所示,第一计算节点200包括第一交换机200A、第一租户的第一路由模块200B、与第一路由模块200B建立绑定关系的第一租户的第一 SNAT模块200C、与第一 SNAT模块200C建立绑定关系的L3代理器200Do
[0285]第二计算节点300包括第二交换机300A,第一租户的第二路由模块300B。
[0286]其中:
[0287]第一交换机200A用于将外部网络返回给所述虚拟机的流量发送到第一SNAT模块200C;
[0288]第一SNAT模块200C用于将所述流量的目的地址转换为所述虚拟机的地址,并发送给所述第一交换机200A ;
[0289]第一交换机200A还用于将具有所述虚拟机地址的流量转发到所述第一路由模块200B,并将所述第一路由模块200B路由后的流量发送到所述第二计算节点300;
[0290]第二交换机300A用于将所述流量发送给第二路由模块300B,并将第二路由模块300B路由后的流量发送到所述虚拟机。
[0291]具体的,结合图4进行说明,假设虚拟机VM6处于访问外部网络的接收状态,通过前面描述的内容可以确定,计算节点I为租户Tl的代表节点,虚拟机VT6为租户Tl的虚拟机且位于计算节点2中。
[0292]这种情况下,当计算节点I中交换机OVSl将外部网络返回给虚拟机VM6的流量发送至租户Tl的源地址转换模块SNAT for Tl,源地址转换模块SNAT for Tl将所述流量的目的地址转换为虚拟机VM6的地址,交换机OVI将具有虚拟机VM6的地址的流量发送给租户TI的路由模块DVR for Tl,路由模块DVR for Tl对接收到的流量进行路由,交换机OVSl将路由的流量通过本地网络发送给计算节点2。计算节点2的交换机0VS2将所述流量发送给所述计算节点I中租户Tl的路由模块DVR for Tl,路由模块DVR for Tl对所述流量进行路由,交换机0VS2将路由后的流量发送给所述计算节点2中的虚拟机VM6。
[0293]与本发明的实施例一至三对应的,本发明实施例九公开了一种控制节点,如图12所示,该控制节点包括:第一接收单元1201、第一选取单元1202。其中:
[0294]第一接收单元1201,用于接收云平台中的第一租户发送的添加外部网关的请求;
[0295]第一选取单元1202,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点;
[0296]其中,所述代表节点为所述第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介。
[0297]由此可见,在本实施例中,控制节点为第一租户选取计算节点作为第一租户的代表节点,该代表节点为第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介,使得南北向流量中的源地址转换的流量不再经过网络节点,而是经过计算节点,解决了网络节点拥塞的问题,提高了整个网络的性能。
[0298]本发明实施例十公开了一种控制节点,本实施例主要描述第一选取单元的具体实现方式,如图13所示,第一选取单元1302包括:第一确定模块1302A、第一检测模块1302B、第一绑定模块1302C、第一发送模块1302D。
[0299]其中:
[0300]第一确定模块1302A,用于基于所述添加外部网关的请求,确定属于所述第一租户的绑定有源地址转换模块的路由模块;
[0301]第一检测模块1302B,用于检测所述源地址转换模块是否绑定有L3代理器;
[0302]第一绑定模块1302C,用于在所述源地址转换模块未绑定有L3代理器时,在所述第一租户的计算节点中确定满足第一预设条件的L3代理器,并绑定所述SNAT模块和所述满足第一预设条件的L3代理器;
[0303]在一个实施例中,第一绑定模块具体用于在源地址转换模块未绑定有L3代理器时,在第一租户的计算节点中确定能够提供SNAT服务的L3代理器为满足所述第一预设条件的L3代理器,并绑定所述源地址转换模块和所述满足第一预设条件的L3代理器。
[0304]在另一实施例中,当满足第一预设条件的L3代理器具有至少两个时,第一绑定模块在所述第一租户的计算节点中确定满足第一预设条件的L3代理器之后,还用于获取所述第一租户的第一类虚拟机在每一第一计算节点上的数量,确定具有所述第一类虚拟机最多的第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器。
[0305]其中,所述第一类虚拟机为所述路由模块下的虚拟机,所述第一计算节点为具有满足第一预设条件的L3代理器的节点。
[0306]在又一实施例中,第一绑定模块在获取所述第一租户的第一类虚拟机在每一计算节点上的数量之后,还用于当具有所述第一类虚拟机最多的第一计算节点为至少两个时,随机选取其中一个第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器。
[0307]第一发送模块1302D,用于向绑定有源地址转换模块的L3代理器发送绑定通知消息,以使得所述L3代理器在其所属计算节点上建立所述源地址转换模块的命名空间;
[0308]其中,建立有所述源地址转换模块的命名空间的计算节点为所述第一租户的代表节点。
[0309]其中,第一选取单元1302还包括第二确定模块1302E,用于在所述源地址转换模块绑定有L3代理器时,确定绑定有所述源地址转换模式的L3代理器所属计算节点为所述第一租户的代表节点。
[0310]由此可见,本实施例描述了控制节点为第一租户选取代表节点的过程,该代表节点为第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介,使得南北向流量中的源地址转换的流量不再经过网络节点,而是经过计算节点,解决了网络节点拥塞的问题,提高了整个网络的性能。
[0311]需说明的是,关于控制节点的其他技术内容可参见上述实施例一至实施例三,此处不再详细赘述。
[0312]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0313]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种分布式网络的通信方法,其特征在于,应用于控制节点中,所述方法包括: 接收云平台中的第一租户发送的添加外部网关的请求; 基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点; 其中,所述代表节点为所述第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介。2.根据权利要求1所述的方法,其特征在于,所述在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点,包括: 确定属于所述第一租户的绑定有源地址转换模块的路由模块; 检测所述源地址转换模块是否绑定有L3代理器; 若否,则在所述第一租户的计算节点中确定满足第一预设条件的L3代理器,并绑定所述源地址转换模块和所述满足第一预设条件的L3代理器; 向绑定有所述源地址转换模块的L3代理器发送绑定通知消息,以使得所述L3代理器在其所属计算节点上建立所述源地址转换模块的命名空间; 其中,建立有所述源地址转换模块的命名空间的计算节点为所述第一租户的代表节点。3.根据权利要求2所述的方法,其特征在于,所述检测所述源地址转换模块是否绑定有L3代理器之后,还包括: 若是,则确定绑定有所述源地址转换模式的L3代理器所属计算节点为所述第一租户的代表节点。4.根据权利要求2所述的方法,其特征在于,所述在所述第一租户的计算节点中确定满足第一预设条件的L3代理器,包括: 在所述第一租户的计算节点中确定能够提供SNAT服务的L3代理器为满足所述第一预设条件的L3代理器。5.根据权利要求2所述的方法,其特征在于,当满足第一预设条件的L3代理器具有至少两个时,所述在所述第一租户的计算节点中确定满足第一预设条件的L3代理器之后,还包括: 获取所述第一租户的第一类虚拟机在每一第一计算节点上的数量;其中,所述第一类虚拟机为所述路由模块下的虚拟机,所述第一计算节点为具有满足第一预设条件的L3代理器的节点; 确定具有所述第一类虚拟机最多的第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器。6.根据权利要求5所述的方法,其特征在于,所述获取所述第一租户的第一类虚拟机在每一计算节点上的数量之后,还包括: 当具有所述第一类虚拟机最多的第一计算节点为至少两个时,随机选取其中一个第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器。7.—种分布式网络的通信方法,其特征在于,应用于第一计算节点中,所述第一计算节点为控制节点在接收到云平台中的第一租户发送的添加外部网关的请求时,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取的作为所述第一租户的代表节点的计算节点; 所述方法包括: 当所述第一计算节点中的第一交换机接收到位于所述第一计算节点内的虚拟机发送给外部网络的流量时,判断所述虚拟机是否为所述第一租户的虚拟机,生成判断结果; 基于所述判断结果控制所述虚拟机与所述外部网络的通信。8.根据权利要求7所述的方法,其特征在于,所述基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括: 当所述判断结果表征所述虚拟机为所述第一租户的虚拟机时,所述第一计算节点中的第一交换机将所述虚拟机发送给外部网络的流量发送至所述第一计算节点中的所述第一租户的第一路由模块; 所述第一路由模块对所述流量进行路由; 所述第一交换机将路由后的流量发送至所述第一计算节点中的所述第一租户的第一源地址转换模块; 所述第一源地址转换模块将所述流量的源IP地址转换为所述第一租户的公网IP地址; 所述第一交换机将具有公网IP地址的流量发送到所述外部网络。9.根据权利要求7所述的方法,其特征在于,所述基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括: 当所述判断结果表征所述虚拟机为第二租户的虚拟机时,第一计算节点中的第一交换机将所述虚拟机发送给外部网络的流量发送至第一计算节点中的所述第二租户的第二路由模块; 所述第二路由模块对所述流量进行路由; 所述第一交换机将路由后的流量发送至第二计算节点,以使得所述第二计算节点将所述流量发送到所述外部网络; 其中,所述第二计算节点为所述第二租户的代表节点。10.—种分布式网络的通信方法,其特征在于,应用于第一计算节点中,其中,所述第一计算节点为控制节点在接收到云平台中的第一租户发送的添加外部网关的请求时,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取的作为所述第一租户的代表节点的计算节点; 所述方法包括: 当所述第一计算节点中的第一交换机接收到外部网络返回给所述第一租户的虚拟机的流量时,判断所述虚拟机是否位于所述第一计算节点中,生成判断结果; 基于所述判断结果控制所述虚拟机与所述外部网络的通信。11.根据权利要求10所述的方法,其特征在于,所述基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括: 当所述判断结果表征所述虚拟机位于所述第一计算节点中,所述第一交换机将所述流量发送给第一计算节点中所述第一租户的第一源地址转换模块; 所述第一源地址转换模块将所述流量的目的地址转换为所述虚拟机的地址; 所述第一交换机将具有所述虚拟机的地址的流量转发至所述第一计算节点中所述第一租户的第一路由模块; 所述第一路由模块将所述流量进行路由; 所述第一交换机将路由后的流量发送至所述虚拟机。12.根据权利要求10所述的方法,其特征在于,所述基于所述判断结果控制所述虚拟机与所述外部网络的通信,包括: 当所述判断结果表征所述虚拟机位于第二计算节点中,所述第一交换机将所述流量发送到所述第一计算节点中的所述第一租户的第一源地址转换模块; 所述第一源地址转换模块将所述流量的目的地址转换为所述虚拟机的地址; 所述第一交换机将具有所述虚拟机的地址的流量转发到所述第一计算节点中的第一租户的第一路由模块; 所述第一路由模块对所述流量进行路由; 所述第一交换机将路由后的流量发送到第二计算节点,以由所述第二计算节点将所述流量发送给位于第二计算节点中的第一租户的所述虚拟机。13.—种分布式网络的通信方法,其特征在于,应用于第一计算节点中,其中,所述第一计算节点为控制节点在接收到云平台中的第一租户发送的添加外部网关的请求时,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取的作为所述第一租户的代表节点的计算节点; 所述方法包括: 当所述第一计算节点中的第一交换机接收到第二计算节点转发的流量时,判断所述流量的类型,生成判断结果; 基于判断结果控制虚拟机与外部网络之间的通信。14.根据权利要求13所述的方法,其特征在于,基于判断结果控制虚拟机与外部网络之间的通信,包括: 当所述判断结果表征所述流量为所述第一租户的虚拟机发送给外部网络的流量时,所述第一交换机将所述流量发送给第一租户的第一路由模块; 所述第一路由模块将所述流量进行路由; 所述第一交换机将路由后的流量发送给所述第一租户的第一源地址转换模块; 所述第一源地址转换模块将所述流量的源IP地址转换为第一租户的公网IP地址; 所述第一交换机将带有公网IP地址的流量发送给外部网络。15.根据权利要求13所述的方法,其特征在于,基于判断结果控制虚拟机与外部网络之间的通信,包括: 当所述判断结果表征所述流量为外部网络发送给第二租户的虚拟机的流量时,所述第一交换机将所述流量发送给所述第一计算节点中第二租户的第二路由模块; 第二路由模块对所述流量进行路由; 所述第一交换机将路由后的流量发送给所述第一计算节点中的所述虚拟机。16.一种分布式网络的通信系统,其特征在于,包括: 控制节点,所述控制节点用于在接收到云平台中的第一租户发送的添加外部网关的请求,基于所述添加外部网关的请求,所述在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点; 第一计算节点,所述第一计算节点为所述第一租户的代表节点,用于在所述第一租户的虚拟机访问外部网络时,作为所述虚拟机与外部网络进行通信的媒介。17.根据权利要求16所述的通信系统,其特征在于,访问外部网络的所述第一租户的虚拟机位于所述第一计算节点中; 所述第一计算节点包括第一交换机、所述第一租户的第一路由模块、与所述第一路由模块建立绑定关系的所述第一租户的第一 SNAT模块以及与所述第一 SNAT模块建立绑定关系的L3代理器;其中: 所述第一交换机用于将所述虚拟机发送给外部网络的流量发送到所述第一路由模块,并将所述第一路由模块路由的流量发送到所述第一 SNAT模块; 所述第一 SNAT模块用于将所述流量的源IP地址转换为所述第一租户的公网IP地址; 所述第一交换机还用于将具有公网IP地址的流量发送到所述外部网络。18.根据权利要求16所述的方法,其特征在于,访问外部网络的所述第一租户的虚拟机位于所述第一计算节点中; 所述计算节点包括第一交换机、所述第一租户的第一路由模块、与所述第一路由模块建立绑定关系的所述第一租户的第一 SNAT模块以及与所述第一 SNAT模块建立绑定关系的L3代理器;其中: 所述第一交换机用于将外部网络返回给所述虚拟机的流量发送给所述第一 SNAT模块;所述第一SNAT模块用于将所述网络流量的目的地址转换为所述虚拟机的地址,并发送给所述第一交换机; 所述第一交换机还用于将具有所述虚拟机的地址的流量转发到所述第一路由模块,并将所述第一路由模块路由后的流量发送到所述虚拟机。19.一种分布式网络的通信系统,其特征在于,包括: 控制节点,所述控制节点用于在接收到云平台中的第一租户发送的添加外部网关的请求,基于所述添加外部网关的请求,为所述第一租户选取至少一个计算节点为所述第一租户的代表节点; 第一计算节点,所述第一计算节点为所述第一租户的代表节点,用于在所述第一租户的虚拟机访问外部网络时,作为所述虚拟机与外部网络进行通信的媒介; 第二计算节点,所述第二计算节点上具有访问外部网络的所述第一租户的虚拟机。20.根据权利要求19所述的通信系统,其特征在于,访问外部网络的所述第一租户的虚拟机位于第二计算节点中; 所述第一计算节点,包括第一交换机、所述第一租户的第一路由模块、与所述第一路由模块建立绑定关系的所述第一租户的第一 SNAT模块以及与所述第一 SNAT模块建立绑定关系的L3代理器; 所述第二计算节点包括第二交换机,所述第一租户的第二路由模块; 所述第二交换机用于将所述虚拟机发送给外部网络的流量发送到所述第二路由模块,并将所述第二路由模块路由的流量发送至所述第一计算节点上; 所述第一交换机用于将所述流量发送到所述第一路由模块,并将所述第一路由模块路由的流量发送到所述第一 SNAT模块; 所述第一 SNAT模块用于将所述流量的源IP地址转换为所述第一租户的公网IP地址; 所述第一交换机还用于将具有公网IP地址的网络流量发送到所述外部网络。21.根据权利要求19所述的通信系统,其特征在于,访问外部网络的所述第一租户的虚拟机位于第二计算节点中;所述第一计算节点,包括第一交换机、所述第一租户的第一路由模块、与所述第一路由模块建立绑定关系的所述第一租户的第一 SNAT模块以及与所述第一SNAT模块建立绑定关系的L3代理器; 所述第二计算节点包括第二交换机,所述第一租户的第二路由模块; 所述第一交换机用于将外部网络返回给所述虚拟机的流量发送到所述第一 SNAT模块;所述第一SNAT模块用于将所述流量的目的地址转换为所述虚拟机的地址,并发送给所述第一交换机; 所述第一交换机还用于将具有所述虚拟机地址的流量转发到所述第一路由模块,并将所述第一路由模块路由后的流量发送到所述第二计算节点; 所述第二交换机用于将所述流量发送给所述第二路由模块,并将所述第二路由模块路由后的流量发送到所述虚拟机。22.一种控制节点,其特征在于,包括: 第一接收单元,用于接收云平台中的第一租户发送的添加外部网关的请求; 第一选取单元,基于所述添加外部网关的请求,在所述第一租户所属的计算节点中选取至少一个计算节点作为所述第一租户的代表节点; 其中,所述代表节点为所述第一租户的虚拟机访问外部网络时,与外部网络进行通信的媒介。23.根据权利要求22所述的控制节点,其特征在于,所述第一选取单元包括: 第一确定模块,用于基于所述添加外部网关的请求,确定属于所述第一租户的绑定有源地址转换模块的路由模块; 第一检测模块,用于检测所述源地址转换模块是否绑定有L3代理器; 第一绑定模块,用于在所述源地址转换模块未绑定有L3代理器时,在所述第一租户的计算节点中确定满足第一预设条件的L3代理器,并绑定所述SNAT模块和所述满足第一预设条件的L3代理器; 第一发送模块,用于向绑定有源地址转换模块的L3代理器发送绑定通知消息,以使得所述L3代理器在其所属计算节点上建立所述源地址转换模块的命名空间; 其中,建立有所述源地址转换模块的命名空间的计算节点为所述第一租户的代表节点。24.根据权利要求23所述的控制节点,其特征在于,所述第一选取单元还包括: 第二确定模块,用于在所述源地址转换模块绑定有L3代理器时,确定绑定有所述源地址转换模式的L3代理器所属计算节点为所述第一租户的代表节点。25.根据权利要求23所述的控制节点,其特征在于,所述第一绑定模块具体用于在所述源地址转换模块未绑定有L3代理器时,在所述第一租户的计算节点中确定能够提供SNAT月艮务的L3代理器为满足所述第一预设条件的L3代理器,并绑定所述源地址转换模块和所述满足第一预设条件的L3代理器。26.根据权利要求23所述的控制节点,其特征在于,当满足第一预设条件的L3代理器具有至少两个时,所述第一绑定模块在所述第一租户的计算节点中确定满足第一预设条件的L3代理器之后,还用于获取所述第一租户的第一类虚拟机在每一第一计算节点上的数量,确定具有所述第一类虚拟机最多的第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器;其中,所述第一类虚拟机为所述路由模块下的虚拟机,所述第一计算节点为具有满足第一预设条件的L3代理器的节点。27.根据权利要求26所述的控制节点,其特征在于,所述第一绑定模块在获取所述第一租户的第一类虚拟机在每一计算节点上的数量之后,还用于当具有所述第一类虚拟机最多的第一计算节点为至少两个时,随机选取其中一个第一计算节点上的L3代理器为能够与所述源地址转换模块绑定的L3代理器。
【文档编号】H04L12/801GK105871740SQ201610481852
【公开日】2016年8月17日
【申请日】2016年6月27日
【发明人】王龙江
【申请人】联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1