背景技术
目前,业界的数据中心往往不是在一个地方,而是存在于多个地方的数据中心通过二层互联起来。这时,数据中心内部的服务器间是通过二层交换,而公网的访问一般都是通过三层来访问的。
由于数据中心是已经互联组成的二层网络,在传统技术上往往是通过VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)等协议协商或者配置某一个数据中心的交换机为三层网关,其他的数据中心的三层流量都从该数据中心的网关出去,同样公网的访问流量也是通过该数据中心的网关进来再转发到对应的数据中心。
图1是现有数据中心的一种典型组网示意图。在该组网下,数据中心A的核心交换机和数据中心B的核心交换机间建立VRRP连接,通过VRRP连接来选择数据中心A的核心交换机或者B的核心交换机为VRRP的Master设备(主设备),将Master设备的VRRP接口作为整个数据中心的三层网关。
当Master设备为数据中心A的核心交换机时,数据中心B下面的服务器ServerA和ServerB(也可称为终端)等进行三层转发以及与公网进行三层互通时,都需要通过数据中心间的接口到数据中心A上绕一圈。例如,ServerA访问公网时的具体访问路径见图1中的曲线箭头。可见,图1所示组网下,终端与公网之间的流量可能需要跨越昂贵的传输链路进行跨区域传输,这给原本就带宽不大的数据中心互联端口增加了压力。
为解决现有数据中心三层流量跨区域传输的问题,本申请的发明人在另一件专利申请中提出了一种实现本地三层终结的技术方案,其主要思想是:在多区域的各网关之间组建VRRP组、同一VRRP组内的各网关使用相同的虚拟MAC地址和虚拟IP地址作为网关地址的场景下,本地网关使能三层终结功能,本地终端就近从本地网关上行,在本地进行三层终结,只有本地网关上行故障时才跨越二层链路从远端网关上行。
由于在实际组网时,网关的功能可能置于交换设备中实现,也可能置于独立存在的网关设备中实现,并且,交换设备之间可能采取环形组网的方式直接相连,也可能采取星形组网的方式通过互联设备相连,因此,本申请发明人提出的上述技术方案中将部署VRRP协议、且实现网关功能的设备统称为网关。将上述技术方案应用到图1所示组网,核心交换机作为所述独立的网关设备,部署VRRP协议作为网关,并实施上述技术方案,实现本地优先三层终结。
按照现有技术,图1所示数据中心A和数据中心B中的核心交换机向外发布相同的路由地址,通过对数据中心A的核心交换机所发布的路由地址设置较高的优先级,使得来自公网的报文由数据中心A的核心交换机转发给下游的终端,从而保证由终端发向公网的报文与公网发向相应终端的报文的转发路径一致。
然而,实施本地优先三层终结方案后,两个数据中心中的核心交换机作为各自所属数据中心的本地三层网关,数据中心A的上行三层流量就近从数据中心A的核心交换机三层终结并发送到公网,数据中心B的上行三层流量就近从数据中心B的核心交换机三层终结并发送到公网,若核心交换机采用普通路由交换设备,按照上述现有技术,这两个数据中心的核心交换机向外发布相同的路由地址,这些路由将可能形成等价路由,使得从公网发向终端的报文可能在这两个数据中心随机选择路径,极可能导致三层流量上下行路径不一致,并且流量下行路径不确定,也不利于流量监控、管理以及防攻击。
除图1所示组网外,现有技术中还有一种典型的组网如图2所示。在图2所示组网下,两个数据中心中的汇聚交换机作为所述交换设备实施本申请发明人提出的上述技术方案,作为各自所属数据中心的本地三层网关,对本数据中心的上行三层流量进行本地优先三层终结。在图2所示组网下,同样存在三层流量上下行路径不一致的问题,以及由于流量下行路径不确定,所导致的不利于流量监控、管理以及防攻击的问题。
发明内容
本申请提供了一种NAT转换方法及设备,以在多区域互连且本地网关对本地终端的流量优先三层终结的场景下,使各区域的三层流量保持上下行路径一致。
本申请提供的一种NAT转换方法,应用于多区域互连且本地网关对本地终端的流量优先三层终结的场景,该方法包括:
互连的各个区域中的网关部署NAT功能,分别向公网发布不同网段的IP地址作为各自的路由地址;
对本地终端发往公网的报文,将所述报文的源IP地址修改为对应的路由地址,再将所述报文发送到公网。
该方法可以进一步包括:
互连的各个区域中的网关部署双向NAT功能;
对于来自公网的目的地址为本网关的路由地址的报文,将所述报文的目的IP地址修改为对应的本地终端的IP地址,并将所述报文的源IP地址修改为预先设置的IP地址,再将所述报文向本区域内部转发。
该方法可以进一步包括:各网关针对不同的业务类型分别向公网发布不同的虚拟服务器地址;
所述将所述报文的源IP地址修改为对应的路由地址包括:根据该源IP地址所对应的本地终端所提供的业务类型,将该源IP地址修改为对应的虚拟服务器地址。
较佳地,可以在交换设备中实现所述网关的功能,或者也可以在独立存在的网关设备中实现所述网关的功能。
当在交换设备中实现所述网关的功能时,各区域的交换设备之间采取环形组网的方式直接相连,或者采取星形组网的方式通过互联设备相连;
当在独立存在的网关设备中实现所述网关的功能时,各区域的网关设备分别连接本区域的交换设备,并通过所述交换设备实现二层互通。
本申请提供的一种NAT设备,应用于多区域互连且本地网关对本地终端的流量优先三层终结的场景,其中,互连的各个区域中的网关分别向公网发布不同网段的IP地址作为各自的路由地址;该NAT设备包括:存储模块和NAT转换模块,其中:
存储模块用于存储本区域的网关对公网发布的路由地址;
NAT转换模块用于将本地终端发往公网的报文的源IP地址修改为存储模块所存储的本区域的网关对公网发布的路由地址。
所述存储模块可以进一步用于存储预先设置的IP地址;
所述NAT转换模块进一步用于将来自公网的目的地址为本区域的网关的路由地址的报文的目的IP地址修改为对应的本地终端的IP地址,并将所述报文的源IP地址修改为所述存储模块所存储的IP地址。
所述存储模块可以进一步用于存储本区域的网关针对不同的业务类型分别向公网发布的不同的虚拟服务器地址;
对于本地终端发往公网的报文,所述NAT转换模块进一步用于根据该报文的源IP地址所对应的本地终端所提供的业务类型,按照存储模块所存储的虚拟服务器地址,将该报文的源IP地址修改为对应的虚拟服务器地址。
较佳地,所述NAT设备可以为交换设备,或者也可以为网关设备。
当所述NAT设备为交换设备时,采取环形组网的方式与其他区域中的交换设备直接相连,或者采取星形组网的方式通过互联设备与其他区域中的交换设备相连;
当所述NAT设备为网关设备时,连接本区域的交换设备,并通过所述交换设备实现二层互通。
由上述技术方案可见,本申请提供的NAT转换方法及设备,通过在互联的各个区域中的网关部署NAT功能,并分别向公网发布不同网段的IP地址作为各自的路由地址,并且,对本地终端发往公网的报文的源IP地址进行NAT地址转换,修改为对应的路由地址再发送到公网,使得来自公网的报文能够根据不同网段的IP地址路由到对应的网关,从而使由终端发向公网的报文与公网发向相应终端的报文的转发路径一致,解决了现有多区域互连且本地网关对本地终端的流量优先三层终结场景下,三层流量上下行路径不一致的问题。
在上述技术方案的基础上,通过在互联的各个区域中的网关部署双向NAT功能,还能够解决虚拟机迁移后,流量在数据中心间三层互访的问题。
并且,通过部署不同的设备作为NAT设备,可以获得进一步的有益效果。例如,如果部署firewall设备作为NAT设备,可以针对外部访问流量进行安全控制和防攻击;如果部署loadbalance设备作为NAT设备,既可实现一定的安全控制功能,也可以实现同一个虚拟服务器地址映射内部服务器群,实现服务器或虚拟机资源的动态调整、迁移和资源配置。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。
为解决现有多区域互连且本地网关对本地终端的流量优先三层终结场景下三层流量上下行路径不一致的问题,本申请提出一种NAT转换方法及设备,互连的各个区域中的网关部署NAT功能,分别向公网发布不同网段的IP地址作为各自的路由地址,在将来自终端的报文向公网转发时,将报文的源IP地址修改为对应的路由地址,再发送到公网。如此,使得来自公网的报文能够根据不同网段的IP地址路由到对应的网关,从而使由终端发向公网的报文与公网发向相应终端的报文的转发路径一致,以解决现有多区域互连且本地网关对本地终端的流量优先三层终结场景下,三层流量上下行路径不一致的问题。
下面对本申请所述“不同网段的IP地址”进行简要说明。通常,网关不会向公网发布精确的IP地址作为路由地址,而是以带掩码的形式发布。例如,以长度为32位的IP地址为例:
10.1.1.0/24表示一个掩码为24位的网段地址,对该网段地址只区分前24位,后8位可以是任意取值,也就是说,只要前24位相同,则认为是同一网段地址;类似的,10.1.0.0/16表示一个掩码为16位的网段地址,只要前16位相同,则认为是同一网段地址。
如前所述,在实际组网时,网关的功能可能置于交换设备中实现,也可能置于独立存在的网关设备中实现,并且,交换设备之间可能采取环形组网的方式直接相连,也可能采取星形组网的方式通过互联设备相连,例如:图1和图2示出的是两种典型的组网方式。无论网关以哪种形式存在,将本申请上述技术方案应用于网关,即可解决相应组网方式下的三层流量上下行路径不一致的问题。
在本申请上述技术方案的基础上,同一区域对不同类型的业务可以向公网发布不同的IP地址,下面以图3为例进行说明。
图3为本申请在数据中心一种典型组网下根据业务类型进行NAT转换的示意图。图3所示举例中,各数据中心的核心交换机部署NAT功能(以下称为NAT设备),并提供网关的功能,在数据中心B,对于web业务,设置虚拟服务器地址ip_web;对于ftp业务,设置虚拟服务器地址ip_ftp。数据中心B中的ServerA1和ServerA2共同对外提供web业务,数据中心B的NAT设备上对外提供的web虚拟服务器的IP地址均为ip_web,且该IP地址向WAN进行路由发布,也就是说,ServerA1和ServerA2向外发送的报文的IP地址将被NAT设备修改为ip_web;数据中心B中的ServerB1和SeverB2共同对外提供ftp业务,数据中心B的NAT设备上对外提供的ftp虚拟服务器的IP地址均为ip_ftp,且该IP地址向WAN进行路由发布,也就是说,ServerB1和ServerB2向外发送的报文的IP地址将被NAT设备修改为ip_ftp。
在本申请上述技术方案的基础上,还可以在网关部署双向NAT功能,以解决虚拟机迁移后,流量在数据中心间三层互访的问题。下面结合图4进行详细说明。
图4中:RT1和RT2分别为数据中心1和数据中心2中的路由设备;
NAT1和NAT2分别为数据中心1和数据中心2中的网关,具备双向NAT功能;namc1和nmac2分别为NAT1和NAT2的实MAC地址,vmac1和vmac2分别为NAT1和NAT2的虚拟MAC地址;
SW1和SW2分别为数据中心1和数据中心2中的交换设备;
ServerA~D是两个数据中心下的终端。
假设ServerD原本处于数据中心1,发生虚拟机迁移之后,迁移到数据中心2。
在ServerD从数据中心1迁移到数据中心2之前,其上行三层流量由SW1发送给NAT1进行本地三层终结,由于NAT1部署了双向NAT功能,NAT1在向公网转发ServerD的报文时,将把该报文的源IP地址修改为NAT1对公网发布的IP地址,以下称为虚拟服务器地址1;当NAT1接收到来自公网的目的地址为虚拟服务器地址1的报文时,除了查找相关的映射表将报文的目的地址修改为对应的终端的地址之外,由于部署了双向NAT功能,NAT1还将把该报文的源IP地址由公网地址改为一个预先配置的IP地址(假设为10.3.1.100),这样,在ServerD向Internet返回报文时,该报文的目的IP地址将为10.3.1.100,无论ServerD是否发生迁移,都能够保证该报文经由NAT1返回给Internet。
下面对图4所示示例中ServerD从数据中心1迁移到数据中心2之后的上行流量和下行流量的转发过程进行详细说明。
A、Internet(即公网)下行流量转发:
Internet查找公网路由,将报文发送到图4所示NAT1的虚拟服务器地址1,NAT1首先对报文进行地址转换(假设将报文的源IP地址由公网地址改为10.3.1.100,目的IP地址由虚拟服务器地址1改为ServerD的IP地址)。然后,NAT1以实MAC地址namc1和实IP地址10.1.1.1发送ARP请求报文,寻找ServerD,并学习到ServerD的MAC地址,然后将报文的源MAC地址改为NAT1的实MAC地址nmac1,发送给SW1,SW1将报文二层转发给SW2,SW2收到报文后发送给ServerD。
B、Internet上行流量转发:
当ServerD向公网发送报文时,发现目的地址10.3.1.100不是本网段的,寻找网关vrrp 10.1.1.254,并学习到NAT2的虚拟MAC地址vmac2,随后,ServerD发出的报文经SW2二层转发发送给NAT2,NAT2查找数据中心内路由,将报文的源MAC地址改为NAT2的实MAC地址,并将报文发送给下一跳NAT1,NAT1将报文的源IP地址改为NAT1的虚拟服务器地址1,然后返回给Internet。
如此,通过在网关部署双向NAT功能,解决了虚拟机迁移后,流量在数据中心间三层互访的问题。
图4所示组网下,NAT2上去往10.3.1.X网段的路由如何确定可有多种方案,例如:静态路由、动态路由、策略路由等均可考虑。最简单的,NAT2可以配置静态路由,即,对目的地址为10.3.1.X网段的报文,将其下一跳设置为NAT1的实IP地址。
对应于上述方法,本申请还提供了一种如图5所示的NAT设备,该设备可应用于多区域互连且本地网关对本地终端的流量优先三层终结的场景,其中,互连的各个区域中的网关分别向公网发布不同网段的IP地址作为各自的路由地址;该NAT设备包括:存储模块510和NAT转换模块520,其中:
存储模块510用于存储本区域的网关对公网发布的路由地址;
NAT转换模块520用于将本地终端发往公网的报文的源IP地址修改为存储模块510所存储的本区域的网关对公网发布的路由地址。
如果相应的网关部署了双向NAT功能,那么,图5所示NAT设备中的存储模块510可以进一步用于存储预先设置的IP地址;
所述NAT转换模块520可以进一步用于将来自公网的目的地址为本区域的网关的路由地址的报文的目的IP地址修改为对应的本地终端的IP地址,并将所述报文的源IP地址修改为所述存储模块510所存储的IP地址。
较佳地,图5所示NAT设备中的存储模块510可以进一步用于存储本区域的网关针对不同的业务类型分别向公网发布的不同的虚拟服务器地址;
这种情况下,对于本地终端发往公网的报文,所述NAT转换模块520可以进一步用于根据该报文的源IP地址所对应的本地终端所提供的业务类型,按照存储模块所存储的虚拟服务器地址,将该报文的源IP地址修改为对应的虚拟服务器地址。
较佳地,所述NAT设备可以为交换设备,或者也可以为网关设备。
当所述NAT设备为交换设备时,采取环形组网的方式与其他区域中的交换设备直接相连,或者采取星形组网的方式通过互联设备与其他区域中的交换设备相连;
当所述NAT设备为网关设备时,连接本区域的交换设备,并通过所述交换设备实现二层互通。
本申请中,可以由firewall或者loadbalance设备提供NAT地址转换的功能,其与网关之间的连接关系既可以是串接,也可以是旁挂或者插卡。除了能够解决现有多区域互连且本地网关对本地终端的流量优先三层终结的场景下,三层流量上下行路径不一致的问题之外,本申请通过部署不同的设备作为NAT设备,还能获得以下有益效果:
如果部署firewall设备作为NAT设备,可以针对外部访问流量进行安全控制和防攻击;
如果部署loadbalance设备作为NAT设备,既可实现一定的安全控制功能,也可以实现同一个虚拟服务器地址映射内部服务器群,实现服务器或虚拟机资源的动态调整、迁移和资源配置。
下面通过两个较佳实施例对本申请技术方案进行进一步详细说明。
实施例一:
本实施例基于图1所示组网,主要在以下两个方面进行改进:
一方面,数据中心A和数据中心B的核心交换机作为独立的网关设备,部署VRRP协议作为网关,对本数据中心内的上行三层流量进行优先三层终结,从而实现了VRRP网关多活,并对服务器与外网之间的流量实现了优先本地三层终结,避免了服务器与外网之间的流量跨越中间链路进行传输。
另一方面,数据中心A和数据中心B的核心交换机还部署NAT功能,并分别向公网发布不同网段的IP地址作为各自的路由地址,同时,对本数据中心内的服务器地址部署IP地址转换,即:在将来自服务器的报文向公网转发时,将报文的源IP地址修改为对应的路由地址,再发送到公网,如此,使得来自公网的报文能够根据不同网段的IP地址路由到对应的网关,从而使由服务器发向公网的报文与公网发向相应服务器的报文的转发路径一致,解决了多区域互连且本地网关对本区域的流量优先三层终结场景下,三层流量上下行路径不一致的问题。
由于核心交换机在网络架构中位于三层,因此,本实施例实际上是三层交换机互联且作网关,并且由三层交换机实现NAT功能。
实施例二:
本实施例基于图2所示组网,主要在以下两个方面进行改进:
一方面,数据中心A和数据中心B的汇聚交换机提供网关功能,部署VRRP协议作为网关,对本数据中心内的上行三层流量进行优先三层终结,从而实现了VRRP网关多活,并对服务器与外网之间的流量实现了优先本地三层终结,避免了服务器与外网之间的流量跨越中间链路进行传输。
另一方面,数据中心A和数据中心B的汇聚交换机还部署NAT功能,并分别向公网发布不同网段的IP地址作为各自的路由地址,同时,对本数据中心内的服务器地址部署IP地址转换,即:在将来自服务器的报文向公网转发时,将报文的源IP地址修改为对应的路由地址,再发送到公网,如此,使得来自公网的报文能够根据不同网段的IP地址路由到对应的网关,从而使由服务器发向公网的报文与公网发向相应服务器的报文的转发路径一致,解决了多区域互连且本地网关对本区域的流量优先三层终结场景下,三层流量上下行路径不一致的问题。由于汇聚交换机在网络架构中位于二层,因此,本实施例实际上是二层交换机互联且作网关,并且由二层交换机实现NAT功能。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。