掌桥专利:专业的专利平台
掌桥专利
首页

在多AP部署中对锚定网络地址转换(NAT)流接入点(AP)进行选择

文献发布时间:2023-06-19 19:20:08


在多AP部署中对锚定网络地址转换(NAT)流接入点(AP)进行选择

背景技术

网络地址转换(NAT)涉及通过在分组正在通过业务路由设备传送时修改该分组的IP报头中的网络地址信息,来将一个互联网协议(IP)地址空间映射到另一个地址空间。大多数网络地址转换器将多个专用主机映射到一个公开的IP地址。在典型配置中,局域网使用各种可用的指定专用IP地址子网之一。该网络中的路由器具有该地址空间的专用地址。路由器还通过通常由互联网服务提供商所指派的公共地址而被连接到互联网。当网络业务从局域网传递到互联网时,每个分组中的源地址即时从专用地址被转换为路由器的公共地址。路由器跟踪与每个活动连接有关的基本数据。当接收到回复分组时,路由器使用在出站阶段期间存储的连接跟踪数据来确定内部网络上的回复分组所要转发至的专用地址。

附图说明

根据一个或多个不同方面,参考以下附图详细描述了本公开。提供附图仅用于说明目的并且仅描绘典型或示例方面。

图1A示意性地描绘了根据所公开技术的示例方面的通过锚定NAT流AP的更新后的活动NAT流,其中响应于客户端设备漫游到新AP而选择该锚定NAT流AP。

图1B示意性地描绘了根据所公开技术的示例方面的通过相应锚定NAT流AP的多个同时的更新后的NAT流,其中响应于客户端设备漫游到多个不同AP而选择相应锚定NAT流AP。

图1C示意性地描绘了根据所公开技术的示例方面当客户端设备漫游到其最初关联的AP时返回到原始NAT流。

图2是根据所公开技术的示例方面的用于响应于客户端设备漫游到新AP而选择针对客户端设备的锚定NAT流AP、并更新对应的活动NAT流的说明性方法的流程图。

图3是根据所公开技术的示例方面的用于响应于接收到NAT流迁移消息而更新NAT流下行链路会话信息的说明性方法的流程图。

图4是根据所公开技术的示例方面的用于基于更新后的NAT流通过锚定NAT流AP而对分组进行路由的说明性方法的流程图。

图5是可以被用来实现所公开技术的示例方面的各种特征的示例计算组件。

附图不是详尽的并且不将本公开限制为所公开的精确形式。

具体实施方式

本文公开的技术涉及用于以确保客户端设备可以在无线接入点(AP)之间无缝漫游的方式来处理NAT流迁移的方法/技术。还公开了被配置为实现这种方法的网络设备和协议、以及存储用于实现这种方法的可执行指令的计算机可读介质。如本文中所使用的,无缝漫游可以指的是客户端设备从一个AP漫游到另一个AP,而不会导致客户端设备与诸如互联网上的资源之类的其他网络资源之间的现有活动网络连接的终止或降级。

在典型的多AP微型分支部署中,AP可以被配置为对从客户端设备接收的、并以互联网资源(诸如web服务器)为目的地的分组执行NAT处理。更特别地,AP可以通过修改来自客户端设备的分组的IP报头的源地址字段以将客户端设备的IP地址替换为AP的IP地址,来对来自客户端设备的分组进行“源网络地址转换”(source NAT,源NAT)。在一些情况下,客户端设备的IP地址可能是互联网资源无法辨识的专用IP地址。因此,由AP执行的源网络地址转换可以包括:将客户端设备的专用IP地址转换为AP的公共IP地址,其中与客户端的专用IP地址相比,该公共IP地址可以被互联网资源辨识和标识。在对分组进行源网络地址转换之后,AP可以将分组转发到下一跳,下一跳可能是边缘路由器,或者可能是位于AP和边缘路由器之间的交换机。

在一些情况下,例如,边缘路由器可以通过在将分组路由到其预期的互联网目的地之前将AP的IP地址替换为边缘路由器的IP地址,来执行附加的网络地址转换并对所接收分组进行源网络地址转换。在边缘路由器执行附加的网络地址转换的那些场景中,AP的IP地址可能不是互联网上可辨识的公共IP地址,但是可能是边缘路由器可辨识的“面向互联网”的IP地址。也就是说,AP的IP地址可能是局域网部署上的专用IP地址,但是可能与客户端设备的专用IP地址不同,因为它可能是边缘路由器(其可能位于局域网部署之外)可辨识的“面向互联网”的IP地址。

由AP执行的NAT处理还可以包括对从网络资源(例如,互联网资源)接收、并以客户端设备为目的地的分组进行“目的地网络地址转换”(目的地natting)。从网络资源接收的分组可以在分组的IP报头的目的地地址字段中包括接收AP的IP地址。AP可以通过修改目的地地址字段以将AP的IP地址替换为作为分组的最终预期目的地的客户端设备的IP地址,来对此类分组进行“目的地网络地址转换”。

寻求访问网络资源(例如,互联网资源)的客户端设备可以建立与网络资源的传输控制协议(TCP)/互联网协议(IP)连接。AP然后可以为客户端设备和网络资源之间新建立的活动会话生成对应的NAT流。例如通过TCP/IP连接,NAT流可以在活动会话期间使得在客户端设备和网络资源之间被交换的分组相关联。可以为NAT流生成NAT流会话信息。NAT流会话信息可以包括如下信息,该信息指示在将分组路由到互联网之前应该如何对上行链路分组进行源网络地址转换,以及在将分组路由到目的地客户端设备之前应该如何对下行链路分组进行目的地网络地址转换。

也就是说,NAT流会话信息可以指示哪个AP的IP地址应该被包括在分组的IP报头的源地址字段中,以及哪个客户端设备IP地址应该被包括在IP报头的目的地地址字段中。AP可以利用该NAT流会话信息来对在上行链路方向上、从客户端设备接收到的分组进行源网络地址转换,对在下行链路方向上、接收到的响应分组进行目的地网络地址转换。

应当了解,在“上行链路方向”上发送/路由的分组(在本文中也被称为“上行链路分组”)是从下游网络设备(例如,终端用户客户端设备)发送到上游网络设备(例如,AP、交换机、路由器等)的分组。上行链路分组在其被路由到其最终网络目的地(例如,互联网资源)时可能会在多个上游网络设备之间跳跃。例如,客户端设备可以将上行链路分组发送到与其相关联的AP。例如,AP然后可以将所接收分组发送到网络路由器(可能经由交换机),并且网络路由器可以将分组路由到互联网。相反,在“下行链路方向”上发送/路由的分组(在本文中也被称为“下行链路分组”)是从上游网络设备(例如路由器、交换机、AP等)发送到下游网络设备(例如,客户端设备)的分组。下行链路分组可以类似地在到达其预期目的地(例如,最终用户客户端设备)之前在多个下游网络设备之间跳跃。例如,网络路由器可以从互联网接收下行链路分组、并将分组路由到AP(可能经由交换机)。然后,AP可以将分组路由到其预期目的地,诸如客户端设备。

网络地址转换在某些场景中会出现各种技术问题。如所指出,从客户端设备接收到以互联网为目的地的上行链路分组的AP,利用其IP地址对分组进行源网络地址转换,并将经源网络地址转换的分组转发到互联网。在客户端设备和互联网资源之间通过活动TCP/IP连接交换的分组可以通过对应的NAT流相关联。特别地,在客户端设备与给定AP相关联之后,客户端可以与期望的网络资源(例如,互联网服务器)建立TCP/IP连接,并发送以该网络资源目的地为目的地的上行链路分组。然后,AP可以创建对应的NAT流,该NAT流使得通过已建立的网络连接而交换的分组相关联。客户端设备随后可能出于各种原因漫游到另一个AP。例如,客户端设备可以是诸如智能电话之类的移动客户端。当智能电话的用户在包括AP部署的物理空间中移动时,移动设备可能会检测到来自与其当前关联的AP不同的AP的更强信号强度,在这种情况下,它可能会与这个新的AP关联。作为另一个非限制性示例,如果当前AP上的负载超过阈值,则当前AP可以将客户端设备切换到相邻AP。应当了解,客户端设备也可以出于其他原因而在部署中的AP之间漫游。

假设客户端设备已经漫游到新的AP,与客户端设备相关联的活动NAT流可以从先前的AP被迁移到新的AP。这会导致技术问题,因为从与被迁移的活动NAT流相关联的客户端设备发送的后续分组将从客户端已经漫游到的新AP传出,而不是从生成该NAT流的先前AP传出。更具体地说,在新AP处从漫游客户端设备接收到的分组将利用新AP的IP地址,而不是先前AP的IP地址来进行源网络地址转换。当在边缘路由器处最终接收到分组时,边缘路由器可以执行NAT流查找以确定与所接收分组匹配的NAT流。NAT流可以通过NAT流参数集合来标识。该NAT流参数集合可以被表示为5元组,包括源IP地址、源端口号、目的地IP地址、目的地端口号和协议类型。如果包含在分组的IP报头中的信息和/或包含在分组的TCP报头中的信息例如与特定NAT流的5元组标识符匹配,则可以确定该分组与特定NAT流相匹配。

再次参考上面的示例,当边缘路由器对从客户端设备现在已经漫游到的新AP接收到的分组执行NAT流查找时——其是利用新AP的IP地址而经历了源网络地址转换的分组——查找可能无法检索到匹配的NAT流。特别地,由于分组的IP报头中的源IP地址是新AP的IP地址,而不是创建该NAT流的先前AP的IP地址,所以分组报头信息将不匹配五元组标识符NAT流。特别地,虽然其他NAT流参数可能匹配,但是分组报头中的源IP地址将不匹配任何活动NAT流的5元组中的源IP地址。这可能会引起NAT流中断,进而可能导致对应的TCP/IP连接被终止。例如,如果用户在连接到第一AP时发起互联网协议语音(VoIP)呼叫,但是然后在VoIP呼叫仍处于活动时漫游到第二AP,则由于分组不是利用第一AP的IP地址而被源网络地址转换的而是利用第二AP的IP地址而被源网络地址转换的,所以呼叫可能会中断。特别地,与呼叫相关联的NAT流需要源地址字段中的第一AP的IP地址,并且如果缺少它则可能引起NAT流中断且呼叫终止。

当客户端从一个AP漫游到另一个AP时,用于解决与在AP之间迁移NAT流相关联的上述技术问题的现有技术涉及使用指挥AP来创建NAT流。在这种技术下,当客户端发送以互联网为目的地的分组时,会在指挥AP上创建对应的NAT流。如果客户端与成员AP相关联,或者如果客户端从指挥AP漫游到成员AP,那么成员AP将与该NAT流相匹配的任何分组转发到指挥AP,然后指挥AP在将该分组路由到互联网之前利用其IP地址对分组进行源网络地址转换。虽然这种现有方法可以解决导致连接终止/降级的NAT流迁移问题,但是它仍然存在许多技术缺陷。

这种方法的一个缺点是它不可扩展。例如,如果有数千个客户端设备连接到群体中的AP,并且为每个客户端建立了数百或数千个NAT流,则指挥AP过载的可能性会急剧增加。这种基于指挥AP的方法的另一个缺点是,所有NAT流都是由指挥AP专门创建的,如果指挥AP发生故障——如早先所指出的,随着网络规模的扩大,这种情况变得越来越可能——那么所有活动的NAT流都将中断,导致对应的TCP/IP连接的终止/降级。

所公开的技术为在客户端漫游期间的NAT流中断的上述技术问题提供了一种技术解决方案——一种消除了与上述现有的基于AP指挥的NAT流创建技术相关联的缺陷的解决方案。特别地,根据所公开技术的各个方面,首次在其上创建NAT流的AP在NAT流的生命周期期间(即,只要对应的TCP/IP连接处于活动状态)被指定为该NAT流的锚定NAT流AP。更具体地说,对于部署中为客户端创建NAT会话的任何AP,并且在客户端然后在NAT流仍处于活动时漫游到另一个AP的情况下,创建NAT流的该AP充当针对该NAT流的锚定NAT流AP。然后,根据所公开技术的各方面,当客户端已经所漫游到的非锚定AP接收到与NAT流相匹配的分组时,该非锚定AP将分组转发到针对该NAT流的锚定NAT流AP。

特别地,被漫游的AP可以查阅NAT流上行链路会话信息,以将锚定NAT流AP标识为用于匹配的分组的下一跳。在接收后,锚定NAT流AP利用它自己的IP地址对分组进行源网络地址转换,并将分组路由到互联网。与NAT流相匹配的下行链路分组以类似的方式通过锚定NAT流AP进行路由。特别地,当锚定NAT流AP接收到与该NAT流相匹配的下行链路分组时,该锚定NAT流AP可以利用客户端设备的IP地址对该分组进行目的地网络地址转换(即,在分组的IP报头的目的地地址字段中,将其IP地址替换为客户端的IP地址),然后基于与NAT流相关联的NAT流下行链路会话信息将分组路由到被漫游的AP。更特别地,NAT流下行链路会话信息可以向锚定NAT流AP指示:被漫游的AP是与NAT流相匹配的下行链路分组的下一跳。应当了解,如果例如客户端在多个AP之间漫游并且在每个AP上为客户端创建至少一个NAT流,则多AP部署可以包括与给定客户端设备相关联的多个锚定NAT流AP。

所公开技术的多个方面解决了在客户端漫游期间的NAT流中断的技术问题。特别地,因为在其上首次创建NAT流的AP在NAT流的整个生命周期内充当针对该NAT流的锚定NAT流AP,因此消除了由于客户端漫游而导致NAT流中断的可能性。更特别地,根据所公开技术的示例方面,假设客户端已经从在其上创建活动NAT流的第一AP漫游到第二AP,在第二AP处接收到的与活动NAT流相匹配的上行链路分组被路由到第一AP,因为第一AP充当针对该NAT流的锚定NAT流AP。这在本文中可以被称为更新后的NAT流,由此与NAT流相匹配的分组通过用作针对该NAT流的锚定NAT流AP的第一AP而被路由。

在从第二AP接收到分组后,在朝向互联网路由分组之前,第一AP利用其IP地址对分组进行源网络地址转换。以这种方式,与活动NAT流相匹配的分组始终利用创建该NAT流的AP(即锚定NAT流AP)的预期IP地址进行源网络地址转换,而与哪个AP从客户端接收分组无关。如此,尽管客户端可能漫游到与在其上最初创建NAT流的AP不同的AP,但是仍然确保了NAT流的稳定性。此外,与NAT流相匹配的分组将被路由到针对该NAT流的锚定NAT流AP,并且利用锚定NAT流AP的IP地址进行源网络地址转换,而与客户端可能漫游到多少其他AP无关。例如,在上面介绍的示例中,如果客户端从第二AP漫游到第三AP,则与在第一AP处创建的NAT流相匹配的分组现在将从第三AP路由到第一AP,该第一AP继续充当针对该NAT流的锚定NAT流AP。

除了解决了在客户端漫游期间的NAT流中断的技术问题之外,所公开技术的各方面还消除了由上述现有技术——基于AP指挥的方法在客户端漫游期间被采用来处理NAT流迁移所引入的技术问题。如所指出的,根据所公开技术的各方面,部署中的在部署之后创建NAT的任何AP流充当针对该NAT流的锚定NAT流AP。如此,根据所公开技术的各方面,NAT流被分布在部署中的AP上,而不是在单个指挥AP处被集中创建和路由。因为任何给定的AP都可以创建NAT流,然后充当针对该NAT流的锚定NAT流AP,因此用于对与该NAT流相匹配的分组进行源网络地址转换的责任就落在锚定AP上,而与哪个AP可能已经从客户端设备接收分组无关,与创建NAT流、对与该NAT流相匹配的分组进行源网络地址转换、以及路由经源网络地址转换后的分组相关联的负载并不完全落在单个指挥AP上,而是分布在充当锚定NAT流AP的各个AP之中。

以这种方式,例如,随着网络规模和所创建的客户端设备和对应的NAT流的数量增加到数千,单个AP在充当锚定NAT流AP时过载的可能性显著地减少,因为NAT流和所关联的锚定NAT流AP职责必然将分布在部署中的各个AP上,而不是集中在单个AP上。此外,根据所公开技术的各方面,如果任何给定的锚定NAT流AP发生故障,则只有被锚定到该AP的那些NAT流会中断,而剩余的NAT流将保持稳定,因为它们被锚定到仍然可操作的AP。这与单个指挥AP方法形成鲜明对比,在单个指挥AP方法中,负责创建所有NAT流和对所有分组进行源网络地址转换的指挥AP发生故障会引起群体中的所有NAT流中断。

图1A示意性地描绘了响应于客户端设备漫游到新AP而标识锚定NAT流AP(anchorNAT flow AP)以及更新对应的NAT流以通过锚定NAT流AP来路由与NAT流相匹配的分组。图1A描绘了包括三个AP的示例AP部署——第一AP 102(1)、第二AP 102(2)和第三AP 102(3)。在一些方面,AP 102可以形成分离-隧道微型分支部署的一部分,根据该部署,分组可以经由例如虚拟专用连接(VPN)隧道在内部进行路由,或者被路由到诸如互联网上的外部资源。微型分支AP部署可以包含AP集群(“群体”),最多可达某个阈值数量的AP(例如,32或64个AP),而这些AP又可以服务最多达到某个阈值数量的客户端设备(例如,500个客户端)。应当了解,这仅仅是示例类型的部署,并且所公开技术的各方面可以在多种类型的多AP部署中被实现。还应了解,实际部署中的AP数量可能比所描绘的要多得多。

在一些方面,部署中的AP 102(1)-102(3)(在本文中一般被称为AP 102)可以是向客户端设备提供网络连接性的无线接入点。尽管为简单起见描绘了单个客户端设备110,但是应当了解,多个客户端设备可以同时与每个AP 102相关联。客户端设备110在图1A的左侧上被示例性地描绘为与AP 102(1)相关联。在一些方面,AP 102(1)-102(3)可以形成专用网络内的AP群体的一部分。如此,当客户端设备110与给定的AP 102(例如,AP 102(1))相关联时,该AP 102可以向客户端设备110提供到诸如互联网之类的公共广域网(WAN)108的连接性。

例如,假设AP 102是无线AP,当客户端设备110与AP 102(1)相关联时,它经由RF信号来与AP 102(1)无线地交换数据。客户端设备110可以在上行链路方向上向AP 102(1)发送分组并且在下行链路方向上从AP 102(1)接收分组。特别地,AP 102(1)可以将在上行链路方向上从客户端设备110接收的分组转发到WAN路由器106。WAN路由器106可以是将由AP102形成的专用网络与更广泛的WAN(该更广泛的WAN可以是互联网)进行连接的边缘路由器108。在一些方面,AP 102连接到网络交换机104(例如,L2交换机),网络交换机104继而又连接到WAN路由器106。例如,AP 102可以经由有线以太网连接而连接到交换机104。除了将从客户端设备110接收到的上行链路分组朝向WAN 108路由之外,AP 102(1)还可以将它(经由WAN路由器106)从WAN 108接收到的下行链路分组路由到客户端设备110。

如前所述,在客户端设备110与AP 102(1)相关联之后,客户端设备110可以与WAN108中的特定资源(例如,web服务器)建立新的TCP/IP连接。客户端设备110然后可以向AP102(1)发送以该WAN资源为目的地的分组。AP 102(1)继而可以创建对应于新活动会话的新NAT流112A。作为创建NAT流112A的一部分,AP 102(1)可以生成并存储NAT流会话信息,该NAT流会话信息包括NAT流上行链路会话信息和NAT流下行链路会话信息。NAT流上行链路会话信息可以指示用于与NAT流112A相匹配的任何上行链路分组的下一跳。例如,对于从客户端设备110接收到的与NAT流112A相匹配的分组,来自AP 102(1)的下一跳可以是WAN路由器106。NAT流上行链路会话信息还可以指示:从客户端设备110接收到的、与NAT流112A相匹配的上行链路分组将利用AP 102(1)的IP地址来进行源网络地址转换(to be sourcenatted)。类似地,NAT流下行链路会话信息可以指示用于与NAT流112A相匹配的任何下行链路分组的下一跳。对于在下行链路方向上从例如WAN路由器106接收的分组,来自AP 102(1)的下一跳可以是客户端设备110。NAT流下行链路会话信息还可以指示:与NAT流112A相匹配的下行链路分组将利用客户端设备110的IP地址来进行目的地网络地址转换(to bedestination natted)。

在示例场景中,客户端设备110可以从AP 102(1)漫游到群体中的另一个AP,诸如AP 102(2),如图1A的右侧上所示。如下文参考图2的说明性方法200所描述的,在客户端设备110从AP 102(1)漫游到AP 102(2)之后,AP 102(1)处的活动NAT流可以从AP 102(1)被迁移到AP 102(2),并且可以发起一个过程,以将AP 102(1)标识为它为客户端设备110所创建的NAT流的锚定NAT流AP,并且针对那些NAT流建立通过AP 102(1)而路由的更新后的NAT流,其中AP 102(1)被标识为针对那些NAT流的锚定NAT流AP。图2记载了在图1A-图1C的示例实现中分别对应于AP 102(1)和AP 102(2)的第一AP和第二AP。

现在在图1A中所描绘的示例网络的上下文中参考图2,在框202处,AP 102(2)可以接收和接受来自客户端设备110的关联请求。如所指出的,客户端设备110先前与AP 102(1)相关联,但现在已经漫游到AP 102(2)。例如,如果随着客户端设备110物理地移动通过部署空间,在客户端设备110处观察到的针对AP 102(2)的信号强度变得更强,而观察到的针对AP 102(1)的信号强度变得更弱,那么客户端设备110可能已经漫游到AP 102(2)。

在框204处,AP 102(2)可以从AP 102(1)接收迁移的活动会话。更特别地,AP 102(2)可以从AP 102(1)接收指示客户端设备110和各种网络资源之间的活动NAT流会话的网络会话信息。例如,网络会话信息可以包括用于每个活动NAT流的5元组的NAT流参数(5-tuple of NAT flow parameters)。网络会话信息还可以包括NAT流上行链路会话信息和NAT流下行链路会话信息,其分别指示用于在上行链路方向路由分组的下一跳和用于在下行链路方向上路由分组的下一跳。

在框206处,AP 102(2)可以根据接收到的网络会话信息来确定:AP 102(1)是锚定NAT流AP,其创建了当客户端设备110从AP 102(1)漫游到AP 102(2)时从AP 102(1)迁移到AP 102(2)的活动NAT流会话集合中的特定NAT流(例如,NAT流112A)。特别地,如果AP 102(1)的IP地址是NAT流112A的5元组标识符中的源地址,则AP 102(2)可以确定AP 102(1)是针对NAT流112A的锚定NAT流AP。在其他示例方面,可以提供附加的NAT流参数、标志等来为每个NAT流指定锚定AP。应当了解,AP 102(1)也可以是针对一个或多个其他NAT流的锚定NAT流AP,并且在客户端设备110漫游到AP 102(2)之后更新NAT流112A以使它通过锚定AP102(1)而路由的本文公开同样适用于任何附加的(多个)NAT流,其中AP 102(1)是针对这些任何附加的NAT流的锚定AP。

在方法200的框208处,AP 102(2)生成NAT流上行链路会话信息,该NAT流上行链路会话信息将AP 102(1)标识为用于从客户端设备110接收到的、与NAT流112A相匹配的分组的下一跳。然后,在框210处,基于NAT流上行链路会话信息,该NAT流上行链路会话信息将AP102(1)标识为用于从客户端设备110接收到的、与NAT流112A/112B相匹配的上行链路分组的下一跳,AP 102(2)在本地建立NAT流112A作为更新后的NAT流112B。NAT流112B可以与NAT流112A共享相同的5元组标识符,并且可以被视为相同的NAT流,但是关于其关联的NAT流上行链路会话信息可能不同,在NAT流112B的情况下,该NAT流上行链路会话信息可以将AP102(1)指定为用于在AP 102(2)处接收的、匹配的上行链路分组的下一跳。该修改的NAT流上行链路会话信息导致上行链路分组通过AP 102(1)而被路由,而不是直接被路由到WAN路由器106,这是当客户端设备110在漫游到AP 102(2)之前与AP 102(1)相关联时,在图1A的左侧上描绘的场景中的情况。在AP 102(2)处安装NAT流112A作为NAT流112B,其中所有匹配的分组都通过锚定NAT流AP 102(1)进行路由,确保了在将所有匹配的上行链路分组路由到WAN路由器106之前,AP 102(1)能够利用其IP地址对所有匹配的上行链路分组进行源网络地址转换。这继而又确保了WAN路由器106将分组与正确的5元组NAT流标识符相匹配,并且保持NAT流112B和对应的TCP/IP连接的稳定性。

如所指出,AP 102(2)知道:基于在AP 102(2)处所存储的针对NAT流112B的关联的NAT流上行链路会话信息,来将从客户端设备110接收到的、与NAT流112B相匹配的分组路由到AP 102(1)。特别地,上行链路会话信息指示AP 102(1)是用于在AP 102(2)处接收到的、与NAT流112B相匹配的上行链路分组的下一跳。AP 102(1)同样需要知道:将与NAT流112B相匹配的下行链路分组路由到AP 102(2),而不是直接路由到客户端设备110,因为客户端110现在与AP 102(2)相关联。通过更新存储在AP 102(1)处的NAT流下行链路会话信息,该信息被传达到AP 102(1)。图3描绘了用于更新存储在第一AP(即,客户端设备在漫游之前与之相关联的AP)处的NAT流下行链路会话信息的说明性方法的流程图。图3中引用的第一AP和第二AP与图2中所引用的相同,并且如早先所指出的,分别对应于图1A-图1C的示例实现中的AP 102(1)和AP 102(2)。

现在在图1A中描绘的示例网络的上下文中参考图3,在方法300的框302处,AP 102(1)接收由AP 102(2)发送的NAT流迁移消息。特别地,作为当客户端设备110从AP 102(1)漫游到AP 102(2)时发生的会话迁移的一部分,AP 102(2)可以标识如下的每个AP,该每个AP作为在从AP 102(1)接收的网络会话信息中标识的至少一个活动NAT流的锚定NAT流AP。然后AP 102(2)可以将NAT流迁移消息单播到所标识的每个锚定NAT流AP。由给定AP接收到的NAT流迁移消息可以指示如下的每个活动NAT流(例如,通过其对应的5元组),针对该每个活动NAT流,给定AP是针对其的锚定NAT流AP(其创建了NAT流)。在该示例中,为了便于解释,假设AP 102(1)是被标识的唯一锚定NAT流AP,并且因此是向其发送NAT流迁移消息的唯一AP。为了便于解释,进一步假设NAT流112A是如下的唯一NAT流,针对该唯一NAT流,AP 102(1)是针对其的锚定NAT流AP。然而,应当了解,任何数量的其他AP可以被标识为针对任何数量的其他活动NAT流的锚定NAT流AP。还应当了解,AP 102(1)可以是针对除了NAT流112A之外的(多个)NAT流的锚定NAT流AP。

在方法300的框304处,AP 102(1)可以确定从AP 102(2)接收的NAT流迁移消息包括标识NAT流112A的信息,例如,NAT流112A的5元组标识符。例如,AP 102(1)可以将NAT流112A辨识为它通过将它自己的IP地址定位在5元组标识符的源地址字段中而创建的流。在所公开技术的其他示例方面,附加的NAT流参数、标志等可以将AP 102(1)指定为针对NAT流112A的锚定NAT流AP。

然后,在方法300的框306处,AP 102(1)可以更新在本地存储的针对NAT流112A的NAT流下行链路会话信息,以将下一跳从客户端设备110的IP地址改变为AP 102(2)的IP地址。基于该修改的NAT流下行链路会话信息,AP 102(1)可以将与NAT流112A相匹配的下行链路分组路由到AP 102(2),而不是客户端设备110。应当了解,AP 102(1)仍然可以以NAT为目的地将下行链路分组与客户端地址110的IP地址相匹配,即使它现在将那些分组路由到AP102(2),而不是直接路由到客户端设备110。图3的说明性方法还包括框308和310处的可选操作,其稍后将在本公开中参考图1C对其进行更详细的描述。

图4是根据所公开技术的示例方面的用于基于更新后的NAT流通过锚定NAT流AP而对分组进行路由的说明性方法400的流程图。方法400将在下文中在图1A中所描绘的更新后的NAT流112B的上下文中进行描述。图4中引用的第一AP和第二AP与图2和图3中所引用的相同,并且如早先所指出的,分别对应于图1A-图1C的示例实现中的AP 102(1)和AP 102(2)。

现在结合图1A来参考图4,在方法400的框402处,AP 102(2)可以从客户端设备110接收上行链路分组。在框404处,AP 102(2)可以确定所接收分组与NAT流112B相匹配。AP102(2)可以通过将所接收分组的IP报头和/或TCP报头中的信息与和NAT流112B相关联的NAT流参数集合进行比较,来确定所接收分组与NAT流112B相匹配。特别地,AP 102(2)可以通过确定包括在所接收分组的IP报头中的源IP地址、目的地IP地址和网络协议类型以及包括在所接收分组的TCP报头中的源端口号和目的地端口号与NAT流112B的对应NAT流参数相匹配,来确定所接收分组与NAT流112B相匹配。在一些方面,所接收分组的IP报头可以包括客户端设备110的IP地址,因为该分组还没有进行源网络地址转换。客户端设备110的IP地址可能与包括在NAT流112B的5元组标识符中的源IP地址NAT流参数不匹配,但是所接收分组仍然可以基于一个或多个其他NAT流参数与所接收分组的IP和TCP报头中的对应字段之间的匹配,来与NAT流112B相匹配。在所公开技术的替代方面,存储在AP 102(2)处的NAT流112B的5元组标识符可以包括客户端设备的IP地址作为源IP地址,而存储在WAN路由器106处的5元组标识符例如可以包括AP 102(1)的IP地址作为源地址。此外,如先前所指出,NAT流112A和NAT 112B可以对应于相同的TCP/IP连接并且可以由相同的5元组标识符来标识。

在方法400的框406处,在确定所接收分组与NAT流112B相匹配时,AP 102(2)可以基于与NAT流112B相关联的NAT流上行链路会话信息将所接收分组路由到AP 102(1)。更特别地,NAT流上行链路会话信息可以将AP 102(1)标识为用于与NAT流112B相匹配的所接收分组的下一跳,并且AP 102(2)可以相应地将分组路由到AP 102(1)。在接收到分组后,AP102(1)可以将分组辨识为与它所创建的NAT流相匹配,并且可以通过在分组的IP报头的源地址字段中将客户端设备110的IP地址替换为AP 102(1)的IP地址,继续对分组进行源网络地址转换。AP 102(1)然后可以将分组转发到WAN路由器106。如先前所指出,WAN路由器106可以在将分组发送到其预期的互联网目的地之前可选地对分组执行另一网络地址转换。

在接收到分组后,目的地资源可以发送响应分组。可以通过AP102(1)路由响应分组。在接收到响应分组后,AP 102(1)可以确定该响应分组与NAT流112B相匹配、并且可以基于如下的NAT流下行链路会话信息而将响应分组路由到AP 102(2),该NAT流下行链路会话信息将AP 102(2)标识为用于转发匹配的下行链路分组的下一跳。在将响应分组路由到AP102(2)之前,AP 102(1)可以利用客户端设备110的IP地址对响应分组进行目的地网络地址转换。AP 102(2)可以在框408处接收响应分组,并在方法400的框410处继续将分组转发到客户端设备110。

如图1A中所示,在一些方面,客户端设备110——其已经漫游到AP 102(2)并且现在与AP 102(2)相关联——可以将分组发送到AP 102(2),该分组预期是针对如下的网络资源(例如,互联网目的地)的:该网络资源不同于与NAT流112B相匹配的分组的预期目的地。特别地,客户端设备110可以与WAN 108中的另一个资源建立新的TCP/IP连接,并且可以向AP 102(2)发送预期针对该网络目的地的分组。在这种场景中,AP 102(2)可以为新建立的、涉及客户端设备110的活动会话建立新的NAT流114A。在AP 102(2)处建立NAT流114A可以包括:生成关联的NAT流上行链路会话信息,其例如将WAN路由器106标识为用于与NAT流114A匹配的上行链路分组的下一跳;并且生成关联的NAT流下行链路会话信息,其将客户端设备110标识为用于与NAT流114A匹配的下行链路分组的下一跳。此外,因为AP 102(2)创建了NAT流114A,所以AP 102(2)在将分组路由到WAN路由器106之前利用AP 102(2)的IP地址对与NAT流114A匹配的上行链路分组进行源网络地址转换,并且利用客户端设备110的IP地址对与NAT流114A匹配的下行链路分组进行目的地网络地址转换。

图1B描绘了在其中客户端设备110现在已经从AP 102(2)漫游到另一个AP(即,AP102(3))的场景。类似于当客户端设备110从AP 102(1)漫游到AP 102(2)时,所有活动会话都从AP 102(2)迁移到AP 102(3)。作为迁移活动会话的一部分,AP 102(2)可以向AP 102(3)发送会话信息,该信息标识与客户端设备110相关联的所有活动NAT流。AP 102(3)可以在活动NAT流之中标识NAT流112B和114A,并且可以进一步确定:AP 102(1)是针对NAT流112B的锚定NAT流AP,并且AP 102(2)是针对NAT流114A的锚定NAT流AP。然后AP 102(3)可以继续在AP 102(3)处将NAT流112B和114A分别建立为NAT流112C和114B。建立NAT流112C可以包括:生成对应的NAT流上行链路会话信息,该信息将AP 102(1)标识为用于从客户端设备110接收到的与NAT流112C相匹配的上行链路分组的、来自AP 102(3)的下一跳。类似地,建立NAT流114B可以包括:生成对应的NAT流上行链路会话信息,该信息将AP 102(2)标识为用于从客户端设备110接收到的与NAT流114B匹配的上行链路分组的、来自AP 102(3)的下一跳。

AP 102(3)然后可以向如下的每个AP发送NAT流迁移消息,该每个AP被标识为针对在迁移的会话信息中发现的至少一个活动的NAT流的锚定NAT流AP。在此示例中,AP 102(3)向AP 102(1)传输包括NAT流112A/112C的5元组标识符的NAT流迁移消息,并向AP 102(2)传输包括NAT流114A/114B的5元组标识符的NAT流迁移消息。在接收到NAT流迁移消息后,AP102(1)可以更新针对NAT流112A/112C的NAT流下行链路会话信息,以将下一跳设置为AP102(3)。类似地,在接收到其NAT流迁移消息后,AP 102(2)可以更新针对NAT流114A/114B的NAT流下行链路会话信息,以将下一跳设置为AP 102(3)。

基于NAT流112C和存储在AP 102(3)处的关联的NAT流上行链路会话信息,在AP102(3)处从客户端设备110接收到的、与NAT流112C相匹配的上行链路分组跳跃到AP 102(1),该AP 102(1)然后利用AP 102(1)的IP地址对分组进行源网络地址转换。然后,该分组跳跃到WAN路由器106,然后跳跃到WAN 108(例如,互联网)。相反,与NAT流112C相匹配的下行链路分组从WAN路由器106跳跃到AP 102(1),该AP 102(1)利用客户端设备110的IP地址对分组进行目的地网络地址转换。然后下行链路分组跳跃到AP 102(3),它将分组转发到客户端设备110。

以类似的方式,基于NAT流114B和存储在AP 102(3)处的关联的NAT流上行链路会话信息,在AP 102(3)处从客户端设备110接收到的、与NAT流114B匹配的上行链路分组跳跃到AP 102(2),该AP 102(2)然后利用AP 102(2)的IP地址对分组进行源网络地址转换。然后,该分组跳跃到WAN路由器106,然后跳跃到WAN 108(例如,互联网)。相反,与NAT流114B匹配的下行链路分组从WAN路由器106跳跃到AP 102(2),该AP 102(2)利用客户端设备110的IP地址对分组进行目的地网络地址转换。然后下行链路分组跳跃到AP 102(3),它将分组转发到客户端设备110。

现在假设客户端设备110从AP 102(3)漫游回到AP 102(1),如图1C中所描绘的。再次结合图1C来参考图3,在方法300的框308处,AP 102(1)可以接受来自客户端设备110的关联请求。AP 102(3)可以将活动会话迁移到AP 102(1),并且AP 102(1)可以将其自身标识为针对活动NAT流112C(其再次被表示为NAT流112A)的锚定NAT流AP。然后,AP 102(1)可以在方法300的框310处更新与NAT流112A相关联的NAT流下行链路会话信息,以使下一跳指向现在与AP 102(1)直接相关联的客户端设备110,而不是之前当客户端设备110与AP 102(3)相关联的情况下的AP 102(3)。然而,AP 102(1)将AP 102(2)标识为针对NAT流114B的锚定NAT流AP,并继续将NAT流114B建立为NAT流114C,并生成对应的NAT流上行链路会话信息,该信息将AP 102(2)标识为用于从客户端设备110接收到的、与NAT流114B/114C匹配的上行链路分组的下一跳。

然后,AP 102(1)可以将NAT流迁移消息单播到如下的每个AP,该每个AP被标识为针对在迁移的会话信息中发现的至少一个活动NAT流的锚定NAT流AP。在此示例中,假设在AP 102(3)处未创建任何NAT流,则AP 102(1)仅向AP 102(2)发送NAT流迁移消息,该消息包括NAT流114B/114C的5元组标识符。在接收到NAT流迁移消息后,AP 102(2)可以更新针对NAT流114B/114C的NAT流下行链路会话信息以将下一跳设置为AP 102(1)。

基于NAT流112A和存储在AP 102(1)处的关联的NAT流上行链路会话信息,AP 102(1)利用AP 102(1)的IP地址对从客户端设备110接收到的、与NAT流112A相匹配的分组进行源网络地址转换,然后将分组路由到WAN路由器106和WAN 108。相反,与NAT流112A相匹配的下行链路分组从WAN路由器106跳跃到AP 102(1),该AP 102(1)利用客户端设备110的IP地址对分组进行目的地网络地址转换。然后,下行链路分组跳跃到客户端设备110。因此,与NAT流114A匹配的分组的分组路由在图1C的场景中与在其在图1A的场景中是相同的。

相反,基于NAT流114C和在AP 102(1)处存储的关联的NAT流上行链路会话信息,在AP 102(1)处从客户端设备110接收到的、与NAT流114C匹配的上行链路分组跳跃到AP 102(2),该AP 102(2)然后利用AP 102(2)的IP地址对分组进行源网络地址转换。然后,该分组跳跃到WAN路由器106,然后跳跃到WAN 108(例如,互联网)。相反,与NAT流114C匹配的下行链路分组从WAN路由器106跳跃到AP 102(2),该AP 102(2)利用客户端设备110的IP地址对分组进行目的地网络地址转换。然后下行链路分组跳跃到AP 102(1),它将分组转发到客户端设备110。

应当了解,方法200、300和/或400可以响应于由一个或多个处理器执行存储在机器可读存储介质中的对应的机器可执行指令集来执行。例如,机器可执行指令可以被存储在多AP部署内的AP的机器可读存储介质上。在一些方面,所存储的指令可以被模块化成一个或多个计算引擎/程序模块。每个这样的计算引擎可以包括机器可读/机器可执行指令的集合,这些指令在由硬件处理器执行时使硬件处理器执行对应的任务/处理。在一些方面,响应于形成特定计算引擎的指令集的执行而执行的任务集可以是用于实现特定类型/范围的处理的专用/定制任务集。前述引擎/程序模块可以以硬件、软件和/或固件的任何组合来实现。在一些方面,这些引擎可以是在定制的计算机器内实现的定制的计算机可执行逻辑,诸如定制的现场可编程门阵列(FPGA)或专用集成电路(ASIC)。

图5描绘了在其中可以实现本文描述的各个方面的示例计算机系统500的框图。计算机系统500包括用于传递信息的总线502或其他通信机制、与总线502耦合以用于处理信息的一个或多个硬件处理器504。硬件处理器504例如可以是一个或多个通用微处理器。

计算机系统500还包括主存储器506,诸如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备,其耦合到总线502,以用于存储要由处理器504执行的指令和信息。主存储器506还可以被用于在将由处理器504执行的指令执行期间存储临时变量或其他中间信息。这样的指令在被存储在处理器504可访问的存储介质中时,将计算机系统500渲染为专用机器,该专用机器被定制以执行指令中所指定的操作。

计算机系统500还包括只读存储器(ROM)508或耦合到总线502的其他静态存储设备,用于存储用于处理器504的静态信息和指令。诸如磁盘、光盘、或USB拇指驱动器(闪存驱动器)等之类的存储设备510被提供并耦合到总线502以用于存储信息和指令。

一般而言,如本文中所使用的,词语“组件”、“引擎”、“系统”、“数据库”、“数据存储库”等可以指的是体现在硬件或固件中的逻辑,或者指的是以诸如例如Java、C或C++之类的编程语言编写的、可能具有入口和出口点的软件指令的集合。软件组件可以被编译并链接到可执行程序中、安装在动态链接库中、或者可以用诸如例如BASIC、Perl或Python之类的解释性编程语言来编写。应当了解,软件组件可以从其他组件或从它们自身调用、和/或可以响应于检测到的事件或中断而被调用。被配置用于在计算设备上执行的软件组件可以被提供在计算机可读介质上,诸如压缩盘、数字视频盘、闪存驱动器、磁盘或任何其他有形介质,或者被提供作为数字下载(并且可能最初以压缩或可安装格式来存储,其在执行之前需要安装、解压缩或解密)。这样的软件代码可以部分或全部被存储在执行计算设备的存储器器件上,以用于由计算设备执行。软件指令可以被嵌入在诸如EPROM来自的固件中。还将了解,硬件组件可以由诸如门和触发器之类的已连接逻辑单元组成,和/或可以由诸如可编程门阵列或处理器之类的可编程单元组成。

计算机系统500可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文描述的技术,其与计算机系统相结合使计算机系统500成为专用机器或将其编程为专用机器。根据一个方面,响应于(多个)处理器504执行包括在主存储器506中的一个或多个指令的一个或多个序列,本文的技术由计算机系统500来执行。此类指令可以从诸如存储设备510之类的另一存储介质被读取到主存储器506中。包含在主存储器506中的指令序列的执行使(多个)处理器504执行本文描述的处理步骤。例如,用于实现方法200、300或400中的一种或多种的指令可以从存储设备510和/或ROM 508加载到主存储器506中,以供(多个)处理器504执行以执行所述方法的操作。在替代方面,硬连线电路可以代替软件指令或与软件指令结合使用。

如本文中所使用的,术语“非暂时性介质”和诸如机器可读存储介质之类的类似术语是指存储使机器以特定方式操作的数据和/或指令的任何介质。这种非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备510。易失性介质包括动态存储器,诸如主存储器506。非暂时性介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒带及其联网版本。

非暂时性介质与传输介质不同但可以与传输介质结合使用。传输介质参与在非暂时性介质之间的信息传送。例如,传输介质包括同轴电缆、铜线和光纤,包括构成总线502的导线。传输介质还可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。

计算机系统500还包括耦合到总线502的网络接口512。网络接口512提供耦合到连接到一个或多个局域网的一个或多个网络链路的双向数据通信。例如,网络接口512可以是综合服务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器或用于提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,网络接口512可以是局域网(LAN)卡,以提供到兼容LAN(或与WAN通信的WAN组件)的数据通信连接。无线链路也可以被实现。在任何这样的实现中,网络接口512发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。

网络链路通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路可以通过局域网提供到主机或互联网服务提供商(ISP)运营的数据设备的连接。ISP进而通过现在通常称为“互联网”的全局分组数据通信网络,来提供数据通信服务。局域网和互联网都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号和网络链路上的信号以及通过网络接口512的信号都是传输介质的示例形式,其携带去往和来自计算机系统500的数字数据。

计算机系统500可以通过(多个)网络、网络链路和网络接口512来发送消息和接收数据,包括程序代码。在互联网示例中,服务器可以通过互联网、ISP、局域网和网络接口512来传输应用程序的请求代码。接收到的代码可以在其被接收到时由处理器504执行、和/或被存储在存储设备510或其他非易失性存储中以供以后执行。

前述部分中描述的过程、方法和算法中的每一个都可以被体现在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码组件中,并由其完全或部分自动化。一个或多个计算机系统或计算机处理器也可操作以支持“云计算”环境中的相关操作的执行或操作为“软件即服务”(SaaS)。过程和算法可以部分或全部在专用电路中实现。上述各种特征和过程可以彼此独立地使用,或者可以以各种方式进行组合。不同的组合和子组合旨在落入本公开的范围内,并且在一些实现中可以省略某些方法或过程框。本文描述的方法和过程也不限于任何特定的顺序,并且与其相关的框或状态可以以其他适当的顺序来执行,或者可以并行执行,或者以某种其他方式来执行。框或状态可以被添加到所公开的示例方面中或从所公开的示例方面中移除。某些操作或过程的性能可以被分布在计算机系统或计算机处理器之间,其中计算机系统或计算机处理器既可以驻留在单个机器内、也可以被部署在数个机器上。

如本文中所使用的,可以利用任何形式的硬件、软件或其组合来实现电路。例如,可以实现一个或多个处理器、控制器、ASIC、PLA、PAL、CPLD、FPGA、逻辑组件、软件例程或其他机制来组成电路。在实现中,本文描述的各种电路可以被实现为分立电路,或者所描述的功能和特征可以在一个或多个电路之间部分或全部共享。即使各种特征或功能性元件可以作为单独的电路而单独地描述或要求保护,但是这些特征和功能性也可以在一个或多个公共电路之间共享,并且此类描述不应要求或暗示需要单独的电路来实现这些特征或功能性。在电路全部或部分使用软件实现的情况下,这样的软件可以被实现为与能够执行关于其描述的功能性的计算或处理系统(诸如计算机系统500)一起操作。

如本文中所使用的,术语“或”可以被解释为包括的意义或排他的意义。此外,单数形式的资源、操作或结构的描述不应被解读为排除复数形式。除非另有明确说明,或者在所使用的上下文中以其他方式理解,否则条件语言,尤其诸如“能够”、“可以”、“可”或“可能”,通常旨在传达某些方面包括、而其他方面不包括某些特征、元素和/或步骤。

除非另有明确说明,否则本文档中使用的术语和短语及其变体应被解释为开放式而非限制性的。诸如“常规的”、“传统的”、“正常的”、“标准的”、“已知的”等形容词以及具有类似含义的术语不应被解释为将所描述的项限制在给定的时间段或至给定时间可用的项,而是应被解读为涵盖现在或将来任何时候可能可用或已知的常规的、传统的、正常的或标准的技术。在一些情形中,诸如“一个或多个”、“至少”、“但不限于”或其他类似短语的宽泛词和短语的存在不应被解读为意味着在可能没有这样的宽泛词的情形中意图或需要更窄的情况。此外,第一事物/条件“基于”第二事物/条件的任何描述应被解释为第一事物/条件“至少部分地”基于第二事物/条件。

相关技术
  • 在接入点(AP)中使用的方法和接入点(AP)
  • 接入点AP和基于AP和接入点控制器AC架构的系统
技术分类

06120115869969