一种提供网络地址转换NAT服务的方法及控制器与流程

文档序号:18161242发布日期:2019-07-13 09:20阅读:178来源:国知局
一种提供网络地址转换NAT服务的方法及控制器与流程
本申请涉及通信
技术领域
,尤其涉及一种提供网络地址转换nat服务的方法和控制器。
背景技术
:由于实际网络中公网地址资源有限,网关设备通常使用nat(networkaddresstranslation,网络地址转换)功能来实现内网对internet的访问,nat是将ip数据报文头中的ip地址转换为另一个ip地址的过程,即nat将数据中的私网地址转换为公网地址,以实现私有网络访问公共网络,且nat通过使用少量的公网地址表示较多的私网地址,从而可减缓可用地址空间的枯竭。业界通常使用nat网关实例的方式提供nat服务,这种实例可以采用虚拟机的方式部署,也可以用物理机集群的方式进行部署,不论哪种方式,都需要将流量分发到nat网关实例处,对nat网关本身的性能要求较高,一旦流量超过了设计的性能上限,nat网关很容易成为瓶颈点。技术实现要素:本申请实施例提供了一种提供网络地址转换nat服务的方法和控制器,通过控制器将nat服务分散到各个计算节点上,各个计算节点通过流表的方式提供nat服务,从而提高了nat服务的效率,同时也消除了nat网关的瓶颈点。第一方面,本申请实施例提供了一种提供网络地址转换nat服务的方法,该方法包括:控制器与多个宿主服务器建立通信;所述控制器为第一宿主服务器生成流表,所述第一宿主服务器为与所述控制器建立通信的所述多个宿主服务器中的任意一个宿主服务器,所述流表包括多个表项,所述多个表项中每个表项记录了一条nat转发规则;所述控制器将所述流表发送给所述第一宿主服务器,所述流表用于所述第一宿主服务器为所述第一宿主服务器上的云主机提供nat服务。本申请实施例通过控制器将nat服务分散到各个计算节点上,各个计算节点通过流表的方式提供nat服务,从而提高了nat服务的效率,同时也消除了nat网关的瓶颈点。结合第一方面,在第一方面的第一种可能的实施方式中,所述控制器将所述流表发送给所述第一宿主服务器之后,还包括:所述控制器接收所述第一宿主服务器发送的报文;所述控制器根据所述报文确定包含所述报文的nat转发规则的表项;所述控制器将所述包含所述报文的nat转发规则的表项发送给所述第一宿主服务器,所述包含所述报文的nat转发规则的表项用于所述第一宿主服务器对所述报文执行nat操作。采用本申请实施例,当宿主服务器为自身承载的云主机发送的报文根据流表匹配表项失败时,控制器可以为该报文生成或从现有的流表中选择其对应的表项并将该表项发送宿主服务器,从而使得宿主服务器可以成功地为该报文提供nat服务。结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述控制器接收所述第一宿主服务器发送的报文,包括:所述控制器接收所述第一宿主服务器在为报文匹配表项失败后发送的所述报文。结合第一方面、第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述控制器为第一宿主服务器生成流表之前,还包括:所述控制器接收所述第一宿主服务器发送的nat服务请求指令,所述请求指令用于请求所述控制器为所述第一宿主服务器生成所述流表。本实施例通过请求指令请求控制器为宿主服务器生成流表,可以使得控制器的资源优化并及时对宿主服务器的nat服务请求作出相应,进一步提高了nat服务的处理效率。结合第一方面,在第一方面的第四种可能的实施方式中,所述nat转发规则包括私网信息与公网信息之间的转换规则,其中,所述私网信息包括私网的互联网协议ip地址和私网端口信息,所述公网信息包括公网的ip地址和公网端口信息,所述私网为所述第一宿主服务器上的云主机所属的专用网络。本申请实施例提供了一种提供网络地址转换nat服务的方法和控制器,通过控制器将nat服务分散到各个计算节点上,各个计算节点通过流表的方式提供nat服务,从而提高了nat服务的效率,同时也消除了nat网关的瓶颈点。第二方面,本申请实施例提供了一种控制器,该控制器包括:配置单元,用于与多个宿主服务器建立通信;生成单元,用于为第一宿主服务器生成流表,所述第一宿主服务器为与所述控制器建立通信的所述多个宿主服务器中的任意一个宿主服务器,所述流表包括多个表项,所述多个表项中每个表项记录了一条nat转发规则;第一发送单元,用于将所述流表发送给所述第一宿主服务器,所述流表用于所述第一宿主服务器为所述第一宿主服务器上的云主机提供nat服务。本申请实施例提供了一种提供网络地址转换nat服务的方法和控制器,通过控制器将nat服务分散到各个计算节点上,各个计算节点通过流表的方式提供nat服务,从而提高了nat服务的效率,同时也消除了nat网关的瓶颈点。结合第二方面,在第二方面的第一种可能的实施方式中,所述控制器还包括第一接收单元、确定单元和第二发送单元;其中:所述第一接收单元,用于在所述第一发送单元将所述流表发送给所述第一宿主服务器之后接收所述第一宿主服务器发送的报文;所述确定单元,用于根据所述报文确定包含所述报文的nat转发规则的表项;所述第二发送单元,用于将所述包含所述报文的nat转发规则的表项发送给所述第一宿主服务器,所述包含所述报文的nat转发规则的表项用于所述第一宿主服务器对所述报文执行nat操作。采用本申请实施例,当宿主服务器为自身承载的云主机发送的报文根据流表匹配表项失败时,控制器可以为该报文生成或从现有的流表中选择其对应的表项并将该表项发送宿主服务器,从而使得宿主服务器可以成功地为该报文提供nat服务。结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述接收单元,用于接收所述第一宿主服务器发送的报文,具体为:用于接收所述第一宿主服务器在为报文匹配表项失败后发送的所述报文。结合第二方面、第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式,在第二方面的第三种可能的实施方式中,所述控制器还包括:第二接收单元,用于在所述生成单元为第一宿主服务器生成流表之前,接收所述第一宿主服务器发送的nat服务请求指令,所述请求指令用于请求所述控制器为所述第一宿主服务器生成所述流表。本实施例通过请求指令请求控制器为宿主服务器生成流表,可以使得控制器的资源优化并及时对宿主服务器的nat服务请求作出相应,进一步提高了nat服务的处理效率。结合第二方面,在第二方面的第四种可能的实施方式中,所述nat转发规则包括私网信息与公网信息之间的转换规则,其中,所述私网信息包括私网的互联网协议ip地址和私网端口信息,所述公网信息包括公网的ip地址和公网端口信息,所述私网为所述第一宿主服务器上的云主机所属的专用网络。第三方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面所述的方法。第四方面,本申请实施例提供了一种服务器,包括处理器、通信接口和计算机可读存储介质,所述处理器、通信接口和计算机可读存储介质相互连接,其中,所述计算机可读存储介质用于存储应用程序代码,所述处理器被配置用于调用所述应用程序代码,执行上述第一方面所述的方法。综上所述,本申请实施例通过控制器将nat服务分散到各个计算节点上,各个计算节点通过流表的方式提供nat服务,从而提高了nat服务的效率,同时也消除了nat网关的瓶颈点。附图说明下面将对本申请实施例中所需要使用的附图作介绍。图1为本申请实施例提供的一种提供nat服务的方法的系统架构示意图;图2为本申请实施例提供的一种提供nat服务的方法的流程示意图;图3为本申请实施例提供的宿主服务器为其承载的云主机发送的报文提供nat服务的示意图;图4为本申请实施例提供的一种控制器的结构示意图;图5为本申请实施例提供的一种服务器的结构示意图。具体实施方式本申请提供了一种提供网络地址转换nat服务的方法和控制器,通过控制器将nat服务分散到各个计算节点上,各个计算节点通过流表的方式提供nat服务,从而提高了nat服务的效率,同时也消除了nat网关的瓶颈点。本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。为了使本领域技术人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。以下分别进行详细说明。为了更好的理解本申请实施例提供的一种提供网络地址转换nat服务的方法和控制器,下面先对本申请实施例适用的一种提供网络地址转换nat服务的方法的系统构架进行描述。参阅图1,图1是本方案实施例提供的一种提供网络地址转换nat服务的方法的系统架构示意图。如图1所示,系统架构可以包括一个控制器101、一个或多个宿主服务器102以及一个或多个云主机103。控制器101可以和宿主服务器102互相通信,各个宿主服务器102承载着一个或多个云主机103,宿主服务器102和自身承载的云主机103可以互相通信。需要说明的是,本申请提供的一种提供网络地址转换nat服务的方法的系统构架不限于图1所示系统架构。基于图1给出的一种提供网络地址转换nat服务的方法的系统架构,下面提供一种提供网络地址转换nat服务的方法,一种提供网络地址转换nat服务的方法的流程图如图2所示,可以包括以下步骤:步骤s201:控制器与多个宿主服务器建立通信。具体地,该控制器上可以配置该多个宿主服务器的网络地址(可以是互联网中的地址,也可以是局域网中的地址,或者其他同于通信的地址),从而识别来自该多个宿主服务器的数据包,以及针对性地向该多个宿主服务器发送数据包;相应的,该多个宿主服务器上也都可以配置该控制器的网络地址,从而识别来自该控制器的数据包,以及针对性地向该控制器器发送数据包。另外,该控制器与该多个宿主服务器之间可以通过有线,或者无线的方式进行数据传输。s202、控制器为第一宿主服务器生成流表。具体的,所述第一宿主服务器为与所述控制器建立通信的多个宿主服务器中的任意一个宿主服务器,所述流表包括多个表项,所述多个表项中每个表项记录了一条nat转发规则。在具体实施方式中,当所述第一宿主服务器与所述控制器第一次建立通信时或者在所述第一宿主服务器发送nat服务请求指令给控制器时,所述控制器为该第一宿主服务器生成对应的流表。该流表中包含多个表项,每个表项都记录了一条nat转发规则。在其中一种可能的实施方案中,上述nat转发规则可以包括私网信息与公网信息之间的转换规则,其中,所述私网信息包括私网的互联网协议ip地址和私网的端口信息,所述公网信息包括公网的ip地址和公网的端口信息,所述私网为所述第一宿主服务器上的云主机所属的专用网络。具体的nat转发规则示例可以参考表1,表1给出了nat转发规则包含的信息的示例,主要是私网访问公网的地址和端口映射表。私网ip地址为10.0.0.2,对应的端口号为1723的云主机访问公网,需要将该云主机的私网ip地址和端口号替换为公网ip地址和公网的端口号,根据表1,可以将云主机的私网ip地址为10.0.0.2替换为131.107.0.1,端口号1723替换为4000,替换完成后云主机使用新的ip地址和端口号131.107.0.1/4000即可访问公网。表1私网访问公网的地址和端口映射表-私网ip地址私网端口号公网ip地址公网端口号第一表项10.0.0.21723131.107.0.14000第二表项10.0.0.31723131.107.0.14001第三表项10.0.0.41724131.107.0.14002在其中一种可能的实施方式中,所述控制器为第一宿主服务器生成流表之前,还包括:所述控制器接收所述第一宿主服务器发送的nat服务请求指令,所述请求指令用于请求所述控制器为所述第一宿主服务器生成所述流表。具体的,当第一宿主服务器上的云主机需要访问公网,向该第一宿主服务器发送报文,则第一宿主服务器根据报文信息向控制器发送nat服务请求指令,这个请求指令用于请求控制器为所述第一宿主服务器生成流表,控制器接收到请求指令后,根据请求指令为第一宿主服务器生成对应的流表,然后将该流表发送给第一宿主服务器。本实施例通过请求指令请求控制器为宿主服务器生成流表,可以使得控制器的资源优化并及时对宿主服务器的nat服务请求作出相应,进一步提高了nat服务的处理效率。s203、所述控制器将所述流表发送给所述第一宿主服务器。具体的,所述流表用于所述第一宿主服务器为所述第一宿主服务器上的云主机提供nat服务。在具体的实施方式中,所述控制器为所述第一宿主服务器生成对应的流表后,将该流表发送给第一宿主服务器。s204、第一宿主服务器接收所述流表。在具体的实施方式中,第一宿主服务器接收所述控制器发送的流表后,将该流表存储在本地存储器中。当第一宿主服务器上的云主机需要访问公网,向该第一宿主服务器发送报文,则第一宿主服务器调用存储在本地的流表,根据该流表为报文匹配流表项,匹配到流表项之后根据流表项将报文的私网ip地址和私网端口号替换为公网ip地址和公网端口号,然后将替换了ip地址和端口的报文转发到公网中。为了便于理解,图3给出了宿主服务器为其承载的云主机发送的报文提供nat服务的示意图。假设云主机要访问目的ip地址和端口号分别为202.99.160.2和80的公网服务器,该云主机的私网ip地址和端口号分别为10.0.0.2和1723,该云主机使用私网ip地址不能访问外网的服务器,因而需要将其私网ip地址替换为外网的ip地址,为了外网反馈信息时能准确反馈到对应的云主机上也需要添加上对应的端口信息。所以图3中云主机将携带了私网ip地址和端口号以及目的ip地址和端口号的报文发送到宿主服务器,宿主服务器根据流表为该报文匹配流表项,具体表项可以参考表1,匹配到流表项后根据流表项将报文的私网ip地址和端口号替换为131.107.0.1/4000,目的ip地址和端口号不变,这样报文的源ip地址和源端口号属于公网的ip地址和端口号,从而使得云主机可以访问目的ip地址和端口号分别为202.99.160.2和80的公网服务器。在其中一种可能的实施方式中,所述控制器将所述流表发送给所述第一宿主服务器之后,还包括:所述控制器接收所述第一宿主服务器发送的报文;所述控制器根据所述报文确定包含所述报文的nat转发规则的表项;所述控制器将所述包含所述报文的nat转发规则的表项发送给所述第一宿主服务器。具体的,在所述第一宿主服务器根据上述流表为所述报文匹配流表项失败的情况下,所述第一宿主服务器将该报文发送给控制器,控制器接收该报文,根据该报文为其生成对应的流表项,同样的,该表项包含了所述报文的nat转发规则,用于所述第一宿主服务器对所述报文执行nat操作,然后控制器将其流表项发送给第一宿主服务器,第一宿主服务器接收该流表项之后根据该流表项为所述报文替换ip地址和端口号,然后将报文转发到公网中。采用本申请实施例,当宿主服务器为自身承载的云主机发送的报文根据流表匹配表项失败时,控制器可以为该报文生成或从现有的流表中选择其对应的表项并将该表项发送宿主服务器,从而使得宿主服务器可以成功地为该报文提供nat服务。或者,在另一种可能的情况下,控制器接收所述第一宿主服务器因匹配表项失败而发送的报文后,控制器从该控制器维护的流表中为所述报文匹配流表项,确定了流表项之后,将该流表项发送给第一宿主服务器,第一宿主服务器同样地接收该流表项,根据该流表项为所述报文替换ip地址和端口号,然后将报文转发到公网中。或者,在另一种可能的实施方式中,控制器接收所述第一宿主服务器因匹配表项失败而发送的报文后,为所述报文匹配表项失败,所述控制器将为所述报文匹配表项失败的信息返回给第一宿主服务器,第一宿主服务器将所述报文丢弃。在其中一种可能的实施方式中,在所述第一宿主服务器根据上述流表为所述报文匹配流表项失败的情况下,直接将报文丢弃。综上所述,该方法通过控制器将nat服务分散到各个计算节点上,各个计算节点通过流表的方式提供nat服务,从而提高了nat服务的效率,同时也消除了nat网关的瓶颈点。为了便于更好地实施本申请的上述方案,本申请实施例还对应提供了一种控制器,下面结合附图来进行详细说明:图4所示为一种控制器400的结构示意图,所述控制器400可以是图1所述一种提供网络地址转换nat服务的方法的系统构架中的控制器101,所述控制器400包括:配置单元401、生成单元402和第一发送单元403,其中:配置单元401,用于与多个宿主服务器建立通信;生成单元402,用于为第一宿主服务器生成流表,所述第一宿主服务器为与所述控制器建立通信的所述多个宿主服务器中的任意一个宿主服务器,所述流表包括多个表项,所述多个表项中每个表项记录了一条nat转发规则;第一发送单元403,用于将所述流表发送给所述第一宿主服务器,所述流表用于所述第一宿主服务器为所述第一宿主服务器上的云主机提供nat服务。在其中一种实施方式中,控制器400还包括第一接收单元、确定单元和第二发送单元,其中:所述第一接收单元,用于在所述第一发送单元将所述流表发送给所述第一宿主服务器之后接收所述第一宿主服务器发送的报文;所述确定单元,用于根据所述报文确定包含所述报文的nat转发规则的表项;所述第二发送单元,用于将所述包含所述报文的nat转发规则的表项发送给所述第一宿主服务器,所述包含所述报文的nat转发规则的表项用于所述第一宿主服务器对所述报文执行nat操作。在其中一种实施方式中,所述接收单元用于接收所述第一宿主服务器发送的报文,具体为:用于接收所述第一宿主服务器在为报文匹配表项失败后发送的所述报文。在其中一种实施方式中,控制器400还包括:第二接收单元,用于在所述生成单元为第一宿主服务器生成流表之前,接收所述第一宿主服务器发送的nat服务请求指令,所述请求指令用于请求所述控制器为所述第一宿主服务器生成所述流表。在其中一种实施方式中,所述nat转发规则包括私网信息与公网信息之间的转换规则,其中,所述私网信息包括私网的互联网协议ip地址和私网端口信息,所述公网信息包括公网的ip地址和公网端口信息,所述私网为所述第一宿主服务器上的云主机所属的专用网络。图4所示的服务器400中各个单元的具体实现及有益效果可以对应参照图2所示的方法实施例中的相应描述,此处不再赘述。请参见图5,图5是本申请实施例提供的一种服务器500,该服务器500包括处理器501、存储器502(即计算机可读存储介质)和通信接口503,所述处理器501、存储器502和通信接口503通过总线504相互连接。存储器502包括但不限于是随机存储记忆体(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、或便携式只读存储器(compactdiscread-onlymemory,cd-rom),该存储器502用于相关指令及数据的存储。通信接口503用于接收和发送数据。处理器501可以是一个或多个中央处理器(centralprocessingunit,cpu),在处理器501是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。该服务器500中的处理器501用于读取所述存储器502中存储的程序代码,执行以下操作:处理器501与多个宿主服务器建立通信;处理器501为第一宿主服务器生成流表,所述第一宿主服务器为与所述控制器建立通信的所述多个宿主服务器中的任意一个宿主服务器,所述流表包括多个表项,所述多个表项中每个表项记录了一条nat转发规则;处理器501通过通信接口503将所述流表发送给所述第一宿主服务器,所述流表用于所述第一宿主服务器为所述第一宿主服务器上的云主机提供nat服务。在其中一种实施方式中,处理器501通过通信接口503将所述流表发送给所述第一宿主服务器之后,还包括:处理器501通过通信接口503接收所述第一宿主服务器发送的报文;处理器501根据所述报文确定包含所述报文的nat转发规则的表项;处理器501通过通信接口503将所述包含所述报文的nat转发规则的表项发送给所述第一宿主服务器,所述包含所述报文的nat转发规则的表项用于所述第一宿主服务器对所述报文执行nat操作。在其中一种实施方式中,处理器501通过通信接口503接收所述第一宿主服务器发送的报文,具体为:处理器501通过通信接口503接收所述第一宿主服务器在为报文匹配表项失败后发送的所述报文。在其中一种实施方式中,处理器501为第一宿主服务器生成流表之前,还包括:处理器501通过通信接口503接收所述第一宿主服务器发送的nat服务请求指令,所述请求指令用于请求所述控制器为所述第一宿主服务器生成所述流表。在其中一种实施方式中,所述nat转发规则包括私网信息与公网信息之间的转换规则,其中,所述私网信息包括私网的互联网协议ip地址和私网端口信息,所述公网信息包括公网的ip地址和公网端口信息,所述私网为所述第一宿主服务器上的云主机所属的专用网络。需要说明的是,上述各个操作的实现还可以对应参照图2所示的方法实施例的相应描述。在图5所描述的服务器500通过控制器将nat服务分散到各个计算节点上,各个计算节点通过流表的方式提供nat服务,从而提高了nat服务的效率,同时也消除了nat网关的瓶颈点。本申请实施例还提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,当所述程序指令被处理器执行时,图2所示的方法流程得以实现。综上所述,本申请实施例提供了一种提供网络地址转换nat服务的方法和控制器,通过控制器将nat服务分散到各个计算节点上,各个计算节点通过流表的方式提供nat服务,从而提高了nat服务的效率,同时也消除了nat网关的瓶颈点。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1