用于网络地址转换的系统和方法与流程

文档序号:17851835发布日期:2019-06-11 22:16阅读:318来源:国知局
用于网络地址转换的系统和方法与流程

本申请要求于2016年8月1日提交的美国申请号15/225,368的优先权权益,所述美国申请特此通过引用整体并入。

本文公开的主题总体上涉及用于管理网络结构上的网络地址转换的方法、系统和程序。



背景技术:

网络地址转换(nat)是一种用于管理互联网协议(ip)第4版地址的短缺的机制。nat使专用网络上的装置能够利用专用ip地址,并且当这些装置需要与专用网络外部的其它装置通信时,随着网络数据包通过路由器从专用网络行进到公共网络时,路由器将专用ip地址转换为公共ip地址。

然而,集中式装置(例如,路由器)上的nat操作可能对装置上的资源利用造成负担并引起网络性能问题。此外,所述装置可能成为网络流量的瓶颈,并且所述装置上的故障对于网络的性能可能是灾难性的。

正是在这种背景下出现了实施例。

附图说明

附图中的各个附图仅示出了本公开的示例实施例,并且不能被视为限制其范围。

图1示出了根据一些示例实施例的网络地址转换(nat)的操作。

图2是示出了根据示例实施例的多供应商网络架构的框图。

图3示出了根据示例实施例的托管虚拟机的服务器的图解表示。

图4是根据一些示例实施例的说明性基于机架的系统的简图,所述系统实施具有可以由控制器服务器控制以执行nat的交换机的网络。

图5是根据示例实施例的网络的框图。

图6示出了根据一些示例实施例的数据表,所述数据表由nat控制器用于管理nat操作的分配。

图7是根据一些示例实施例的具有执行数据包转发操作的模块的交换机的简图。

图8示出了根据一些示例实施例的nat负载平衡操作。

图9示出了根据一些示例实施例的虚拟交换机到新虚拟机的分配。

图10示出了根据一些示例实施例的当交换机变得不可用时用于执行nat的交换机的重新分配。

图11是根据一些示例实施例的用于将虚拟交换机分配给虚拟机的方法的流程图。

图12是根据一些示例实施例的用于在交换机变得不可用之后进行灾难恢复的方法的流程图。

图13是根据一些示例实施例的用于将nat操作分发到网络上的多个网络装置的方法的流程图。

图14是根据示例实施例的控制器服务器和控制器客户端的框图。

图15是示出根据示例实施例的网络的框图。

图16是示出根据一些示例实施例的可以安装在机器上的软件架构的实例的框图。

图17示出了根据示例实施例的呈计算机系统形式的机器的图形表示,可以在机器内执行指令集以使机器执行本文所讨论的方法中任何一种或多种。

具体实施方式

提出了用于将网络地址转换(nat)操作分发到网络上的多个网络装置的实例方法、系统和计算机程序。示例仅代表可能的变化。除非另有明确说明,否则部件和功能是任选的并且可以组合或细分,并且操作可以按顺序变化或者组合或细分。在以下描述中,出于解释的目的,阐述了许多具体细节以提供对示例实施例的透彻理解。然而,对本领域技术人员而言将明显的是,本主题可以在没有这些具体细节的情况下进行实践。

在一些实施方式中,网络管理员必须配置多个网络装置以执行nat,以便在整个网络中分发nat操作以更好地进行资源管理。多个网络装置被称为nat池。

在一些示例实施例中,控制器服务器管理多个网络装置的网络结构配置,并且控制器服务器指定哪些装置为哪些主机(例如,物理装置或虚拟机)执行nat,而无需网络管理员进行明确配置,虽然网络管理员进行部分配置也是可能的。控制器服务器在nat池中的所有装置上执行负载平衡,以优化网络性能,例如,通过减少与nat数据包相关联的链接流量。在一个示例实施例中,nat装置到主机的分配不仅基于nat池中的装置上的负载,而且基于主机和nat装置的位置。

本文中呈现的示例实施例包含以分布式方式执行浮动ipnat和端口地址转换(pat)nat(下面参考图1提供细节)的交换机。例如,在服务器上执行的虚拟交换机可以链接到在同一服务器上执行的用于执行nat的虚拟交换机。此外,示例实施例示出当交换机由于故障或计划的系统停机时间变得不可用时如何自动重新分配与nat相关的流量。

一个总体方面包含一种方法,所述方法包含用于由控制网络结构的控制器识别网络结构中的多个交换机的操作。在一个示例实施例中,网络管理员配置网络上的哪些交换机被定义用于执行nat,并且网络上可能存在不执行nat的其它交换机。每个交换机具有用于nat的模块,其中每个交换机被配置成转发在交换机处接收的数据包。控制器识别具有至少一个内部ip地址的一个或多个主机。对于一个或多个主机中的每一个,控制器从多个交换机中选择交换机中的一个以为主机执行nat。此外,所述控制器配置所述网络结构以使所选择的交换机为所述主机执行所述nat,以使所述主机能够与外部网络通信。

一个总体方面包含一种机器可读存储介质,其包括当由机器执行时使所述机器执行操作的指令,所述操作包含:由控制网络结构的控制器识别所述网络结构中的多个交换机,每个交换机具有用于nat的模块,其中每个交换机被配置成转发在所述交换机处接收的数据包。控制器识别具有至少一个内部ip地址的一个或多个主机。对于一个或多个主机中的每一个,控制器从多个交换机中选择交换机中的一个以为主机执行nat。此外,所述控制器配置所述网络结构以使所选择的交换机为所述主机执行所述nat,以使所述主机能够与外部网络通信。

一个总体方面包括一种控制器,其包含网络接口、包含指令的存储器以及一个或多个计算机处理器。当由所述一个或多个计算机处理器执行时,所述指令使所述一个或多个计算机处理器执行操作,包含:识别网络结构中的多个交换机,每个交换机具有用于nat的模块,其中每个交换机被配置成转发在所述交换机处接收的数据包。控制器识别具有至少一个内部ip地址的一个或多个主机。对于一个或多个主机中的每一个,控制器从多个交换机中选择交换机中的一个以为主机执行nat。此外,所述控制器配置所述网络结构以使所选择的交换机为所述主机执行所述nat,以使所述主机能够与外部网络通信。

于2013年12月27日提交的题为“用于执行网络服务插入的系统和方法(systemsandmethodsforperformingnetworkserviceinsertion)”的美国专利申请号14/142,283中提供了关于网络交换机(包含虚拟交换机和虚拟路由器)的细节,所述申请通过引用以其全文结合在此。

图1示出了根据一些示例实施例的网络地址转换(nat)的操作。nat是通过在数据包在跨路由器102传输时修改ip数据报数据包报头中的网络地址信息来将一个互联网协议(ip)地址空间重新映射到另一个ip地址空间中的方法。在一些实现方式中,利用浮动ip表110和端口地址转换(pat)表112在路由器102中执行nat,以将内部ip地址映射到外部ip地址或外部ip地址和端口。通常,内部网络由单个实体管理,并且内部ip地址是在内部网络边界内使用的ip地址。由于内部ip地址在内部网络内有效,因此许多实体可以重复使用内部ip地址,而无需使用外部ip地址。外部ip地址是在内部网络外部用于路由数据包的ip地址。例如,外部ip地址是可以用于在互联网中路由数据包的有效ip地址。

当数据包到达路由器102时,路由器102改变数据包上的源ip地址以模拟数据包源自路由器102。在反向通信路径中,使用存储在浮动ip表110和pat表112中的状态将响应映射回初始内部ip地址。

例如,内部网络中的web浏览器可以浏览外部网络(例如,互联网)中的网站,但是外部网络中的web浏览器不能浏览内部网络内托管的网站。但是,某些nat装置允许网络管理员配置转换表条目以供永久使用,这一功能被称为浮动ip或静态nat,这允许源自外部网络的流量到达内部网络中的指定主机。

nat有两种类型:浮动ip和pat。浮动ip提供一个内部ip地址到一个外部ip地址的一对一转换。浮动ip也被称为基本nat或一对一nat。pat允许内部网络上的多个装置映射到单个外部ip地址,并且每个装置被映射到不同的端口号。在使用pat时,路由器在内部全局ip地址上维护唯一的源端口号,以在转换之间进行区分。

在图1所示的实例中,路由器102正在执行浮动ipnat和patnat。有四个客户端104到107通过路由器102发送数据包(例如,发送到外部网络上的服务器108)。它们的相应地址是10.0.0.1、10.0.0.2、10.0.0.3和10.0.0.4。在此示例场景中,客户端104使用浮动ip地址,并且ip地址10.0.0.1被映射到外部地址123.1.2.2。客户端105到107正在使用patnat,并且客户端105到107共享外部ip地址123.1.2.3,但是客户端105到107被映射到相应端口1000、1001和1002。

路由器102包含浮动ip表110和pat表112。浮动ip表110存储一个内部ip地址(例如,10.0.0.1)与一个外部ip地址(例如,123.1.2.2)的一对一映射。pat表112将一个内部ip地址映射到外部ip地址加端口的对应组合。在一个示例实施例中,通过改变pat表112中的端口,大量虚拟机可以共享相同的外部ip地址。

图2是示出了根据示例实施例的多供应商网络架构的框图。网络架构由提供集中式控制的网络200示出。网络200包含计算设备212,如控制器服务器218;一个或多个交换机;以及一个或多个终端主机(eh)215。有两种类型的交换机:物理交换机214和虚拟交换机206。如下面参考图3更详细地描述的,物理交换机214是硬件计算装置,并且虚拟交换机206是在如服务器204等计算装置内的软件中实施的交换机。如本文所使用的,除非另有说明,否则通用术语“交换机”用于描述物理交换机和虚拟交换机的功能。

控制器服务器218经由网络链路216通信地耦合到物理交换机214和虚拟交换机206中的控制单元226,以实施网络配置并执行其它类型的集中式控制。注意,网络链路216可以包含通过中间网络装置(包含可以在相同本地网络或其它网络202中的其它交换机)的直接连接或网络连接。这些交换机(也被称为数据包转发系统、网络交换机或数据包处理系统)包含用于将交换机通信地耦合到其它交换机或耦合到控制器服务器218或耦合到其它网络202的输入-输出端口。交换机进一步包含用于将交换机通信地耦合到终端主机215(例如,eh1、eh2、eh3等)的附加输入-输出端口。终端主机215经由交换机214和206彼此通信或与连接到网络200的其它计算装置通信。

如网络200、互联网以及耦合到互联网的本地和区域网络等多供应商网络依赖于基于数据包的交换机。这些交换机可以基于嵌入的地址信息转发数据包。数据包源和目的地可以包含终端主机215(例如,eh1、eh2、eh3等)和虚拟机(例如,虚拟机(vm)208)。终端主机215的实例是个人计算机、服务器和其它计算装置,如使用有线或无线技术访问网络的便携式电子装置。

多供应商网络中的网络交换机(例如,物理交换机214)的能力范围从相对较小的以太网交换机和无线接入点到包含多个线卡、冗余电源和管理程序能力的大型基于机架的系统。网络包含来自多个供应商的设备并不罕见。来自不同供应商的网络交换机可以互连以形成数据包转发网络,但是由于不同操作系统与控制协议之间的不兼容性,网络可能难以以集中方式管理。

可以通过将公共跨平台控制单元226(在此也被称为控制器客户端或控制模块)结合到每个交换机中来克服这些潜在的不兼容性。如控制器服务器218等集中式跨平台控制器可以通过相应网络链路216与控制单元226中的每一个交互。跨平台控制器服务器218和控制单元226的使用允许集中管理潜在的不同网络设备。

在典型的网络环境中,一个或多个控制器服务器与一个或多个交换机介接以管理网络流量。例如,活动控制器服务器可以在备用控制器服务器就位时管理网络流量,以防活动控制器服务器变得不可操作。用于管理多个网络装置的适当基础设施在此被称为控制平面。

图3示出了根据示例实施例的托管虚拟机的服务器204的图解表示。服务器204包含软件302和硬件328。软件302包含操作系统(os)304和虚拟机监视器(vmm)310(也被称为管理程序),所述vmm是创建和运行虚拟机208(也被称为客机)的一种计算机软件(如图3所示)。在其它示例实施例中,vmm310可以是运行虚拟机208的软件、固件和硬件的任何组合。

vmm310将客户操作系统306呈现给虚拟机208作为虚拟操作平台,并且vmm310管理客户操作系统306的执行。vmm310向虚拟机208呈现虚拟硬件308平台,并且任何物理硬件部件可以被虚拟化以向虚拟机208提供虚拟硬件308。例如,如图3所示,虚拟硬件308包含一个或多个虚拟网络接口卡(vnic)312,所述vnic使网络接口卡(nic)虚拟化。vnic312可以逻辑地耦合到虚拟交换机206或耦合到nic324,所述虚拟交换机或所述nic是硬件328的一部分。各种操作系统的多个实例可以共享虚拟硬件308。

虚拟交换机206使能够转发数据包的交换机虚拟化。在一些示例实施例中,虚拟交换机206在iso网络模型的第2层或第3层转发数据包。虚拟交换机206可以包含控制单元226,所述控制单元与控制器服务器218介接以管理网络结构。下面参考图5到图10提供了关于虚拟交换机206和控制单元226的操作的更多细节。

硬件328包含硬件部件,如cpu314、微处理器316、输入/输出(i/o)装置318、存储器320、磁盘存储器322和可以连接到一个或多个网络326的nic324。下面提供了关于服务器204平台的更多细节,在图16中提供了针对软件平台的更多细节,并且在图17中提供了针对硬件平台的更多细节。

图4是根据一些示例实施例的说明性基于机架的系统的简图,所述系统实施具有可以由控制器服务器控制以执行nat的交换机的网络400。使用基于机架的系统实施网络400。网络机架410和412包含架顶式交换机e1到e4、终端主机eh1到eh6、虚拟交换机e5到e6、控制器服务器418和备用控制器420。网络机架410和412耦合到核心交换机402和404。

边缘交换机e1、e2、e3和e4用作架顶式交换机,所述架顶式交换机经由网络路径耦合到对应网络机架的终端主机。例如,架顶式交换机e3连接到网络机架412的末端主机(例如,终端主机eh3、eh4和eh6)。每个架顶式交换机用作对应网络机架的终端主机与其它网络装置如网络400的其它部分或其它网络202之间的接口。到达或来自网络机架410的终端主机的网络流量可以遍历网络机架410的架顶式交换机中的至少一个(例如,架顶式交换机e1和e2)。类似地,网络机架412的网络流量可以遍历交换机e3和e4中的至少一个。

如果需要,可以使用网络机架410和412的计算设备来实施交换机。交换机e5可以使用如网络机架410的线卡等计算设备来实施,或者交换机e5可以实现为虚拟交换机。虚拟交换机e5有时可以被称为管理程序交换机。虚拟交换机可以使用专用电路系统或使用离散计算设备上(例如,线卡上)的软件来实施。然而,在一些示例实施例中,这种虚拟交换机通过插入到计算设备的专用物理端口中的电缆耦合到网络的其余部分,在所述计算设备上实施虚拟交换机。

虚拟交换机e5可以与终端主机如终端主机eh5和控制器服务器418介接。换句话说,共享计算设备可以用于实施交换机e5、终端主机eh5和控制器服务器418。如果需要,可以在共享计算设备上的软件中实施虚拟机。

此外,控制器服务器418可以在网络机架410中实施(例如,使用线卡的资源或网络机架410的其它计算设备)。控制器服务器418可以通过向交换机发送控制数据包和从交换机接收控制平面数据包来与架顶式交换机和核心交换机通信。在这种场景下,网络400的一个或多个交换机可以形成图2的网络链路216的一部分。

控制器服务器418可以被配置成在底层物理网络拓扑上实施虚拟路由器和虚拟交换机的逻辑网络拓扑。逻辑网络拓扑可以提供如改进的网络配置效率、灵活性和能力等益处。备用控制器420托管在网络机架412中,并且如果控制器服务器418变得不可用,则备用控制器420可以接管网络管理功能。

图5是根据示例实施例的网络200的框图。根据示例实施例,网络200提供集中式控制并且包含一个或多个控制器服务器218和物理交换机214。控制器服务器218可以在独立计算机上、在计算机集群上、在分布在多个位置之间的一组计算机上、在嵌入网络交换机内的硬件上、或在其它合适的计算设备212上实施。控制器服务器218可以在单个计算机上作为单个进程运行,或者可以分布在多个主机上以实现冗余。分布式布置的使用可以帮助向网络200提供针对意外网络分区的弹性(例如,两个校园之间的网络链路被中断的情况)。

在分布式控制器布置中,控制器节点可以使用控制器内协议来交换信息。例如,如果新的终端主机连接到网络硬件(例如,交换机),所述网络硬件连接到第一控制器节点,则第一控制器节点可以通过使用控制器内协议来使用控制平面来通知其它控制器节点存在新的终端主机。如果需要,交换机或其它网络部件可以连接到多个控制器节点。布置在本文中有时被描述为示例实施例,在所述布置中,单个控制器服务器用于控制相关联的交换机的网络。

控制器服务器218可以收集关于网络200的拓扑的信息。例如,控制器服务器218可以通过网络200发送链路层发现协议(lldp)探测数据包来发现网络200的拓扑。控制器服务器218可以使用关于网络拓扑的信息和关于网络设备的能力的信息来确定流过网络200的数据包的适当路径。一旦识别出适当的路径,控制器服务器218就可以将对应的设置数据发送到网络200中的硬件,以确保数据包根据需要流过网络200。

nat控制器502管理分布在网络200中的多个网络装置(例如,物理交换机214或网络路由器)上的nat操作。nat控制器502识别网络200中需要nat以与其它主机通信的主机,并且nat控制器502确定哪些装置将为不同主机执行nat。

通过分配nat操作,通过在可能最佳的交换机(或可能最佳的交换机之一)处进行nat来提高网络性能。如果必须将所有nat请求发送到同一网络装置,则还通过减少将必要的网络流量来提高网络性能。例如,nat控制器502可以基于网络的负载和可用带宽来确定在何处执行nat。

此外,在一些示例实施例中,网络管理员能够配置在何处执行nat(例如,在哪些交换机中),因此网络管理员使用用于nat负载的定制配置以便改善网络性能。代替使一个单个装置执行nat,网络管理员能够在多个网络装置处配置nat操作,以便以网络级别、组级别或单个主机级别配置nat。

在一些示例实施例中,网络管理员为一个或多个交换机输入期望的nat负载,并且nat控制器管理交换机上的nat负载以将nat负载保持在由网络管理员配置的nat负载之下。在网络管理员未输入nat负载配置的交换机中,nat控制器将基于交换机的容量和位置分配nat负载。

在某些网络环境中,当进行网络升级时,网络管理员必须手动配置所有新路由器和交换机,以便将nat操作重定向到期望的服务点。然而,本文呈现的示例实施例描述了如何在不具有网络管理员输入的配置的情况下透明地配置网络,以便在网络上的多个交换机处有效地执行nat操作。

控制器服务器218可以用于实施网络配置规则520。网络配置规则520可以指定哪些服务(例如,nat)可用于各种网络实体。作为实例,网络配置规则520可以指定网络200中的哪些用户(或用户类型)可以访问特定服务器。作为另一个实例,网络配置规则520可以包含标识有待对所识别的网络流量执行的网络流量和服务的服务插入策略。网络配置规则520可以例如在计算设备212处的数据库中维护。

相应物理交换机214(或虚拟交换机)处的控制器服务器218和控制器客户端530可以使用网络协议栈来通过网络路径516进行通信。每个物理交换机214可以具有输入-输出端口534(有时被称为网络交换机接口)。电缆可以用于将设备连接到输入-输出端口534。

数据包处理电路532可以用于在输入-输出端口534之间转发数据包,并且可以用于对接入数据包执行其它合适的动作。在一些示例实施例中,数据包处理电路系统532可以使用如专用高速交换机电路等一个或多个集成电路来实施,并且可以用作硬件数据路径。如果需要,在控制单元226上运行的数据包处理软件526可以用于实施软件数据路径。

控制单元226可以包含用于存储和运行控制软件的处理和存储器电路(例如,一个或多个微处理器、存储芯片和其它控制电路系统)。例如,控制单元226可以存储和运行软件如数据包处理软件526,可以存储流表528,并且可以用于支持控制器客户端530的操作。

控制器客户端530和控制器服务器218可以符合网络交换机协议,如openflow协议(参见,例如,openflow交换机规范版本1.0.0或1.3.1或openflow协议的其它版本)。控制器客户端530中的一个或多个客户端还可以符合其它协议(例如,简单网络管理协议)。使用openflow协议或其它合适的协议,控制器服务器218可以向控制器客户端530提供确定物理交换机214如何处理来自输入-输出端口534的接入数据包的数据。

在一个合适的布置中,来自控制器服务器218的流表数据可以存储在流表528中,所述流表可以用于配置物理交换机214(例如,数据包处理电路系统532和/或数据包处理软件526的功能)。

可以向控制器客户端提供任何期望的数据包转发系统(例如,物理交换机、虚拟交换机),所述控制器客户端与控制器服务器通信并由所述控制器服务器控制。例如,物理交换机214可以使用运行控制软件并且省略数据包处理电路系统532的通用处理平台来实施。作为另一个实例,物理交换机214可以使用耦合到一个或多个高速交换集成电路(“交换机ic”)的控制电路系统来实施。作为又另一个实例,物理交换机214可以被实施为基于机架的系统中的线卡,所述系统具有多个线卡,每个线卡具有其自己的数据包处理电路系统。如果需要,控制器服务器218可以在基于机架的系统中的一个或多个线卡上实施,在另一个基于机架的系统中,或者在耦合到网络200的其它计算设备上实施。

图6示出了根据一些示例实施例的数据表,所述数据表由nat控制器502用于管理nat操作的分配。nat控制器502管理网络结构上的nat操作,所述操作包含从nat池中选择哪个网络装置将为网络结构上的主机中的每一个执行nat操作。数据中心可以具有多个租户,其中每个租户是区段的逻辑数据包(例如,一个或多个vlan),并且每个租户可以具有其自己的nat配置,使得nat控制器502必须管理所有租户的nat操作。

在一些示例实施例中,nat控制器502包含nat分配逻辑602、交换机表604和主机表606。交换机表604包含关于网络交换机、物理交换机和虚拟交换机的信息。在一个示例实施例中,交换机表604包含以下字段中的一个或多个:唯一标识交换机的交换机标识符(例如,sw1);交换机类型(例如,物理交换机或虚拟交换机);交换机模型(例如,制造商的型号);nat负载,其是被配置成具有由交换机执行的nat的主机数;最大推荐负载,其是给定交换机上的最大推荐nat负载(因为交换机可能具有更多或更少的容量,因此最大推荐负载提供了交换机容量的指示,以便更好地分配资源);以及位置,其是交换机的物理位置的指示(例如,b5.f2.r17,其意味着建筑物5、楼层2和机架17)。

主机表606包含关于网络上的主机的信息。在一个示例实施例中,主机表606包含以下中的一个或多个:主机标识符(例如,h1);主机类型(例如,物理主机或虚拟机);如果类型是虚拟机,则执行虚拟机的服务器(例如,主机h1);nat交换机,其被配置成为这个主机(例如,交换机sw1)执行nat;位置(其可以是主机的位置,或者对于虚拟机,可以是执行虚拟机的主机的位置);以及网络利用率,其是指示主机的网络活动级别的参数并且用于确定哪些主机将生成更多nat请求。

在一些示例实施例中,可以使用简单算法如轮询来将主机映射到nat服务(例如,执行nat操作的交换机)。在其它示例实施例中,nat控制器502基于以下中的一个或多个将nat交换机分配给主机:每个交换机上的nat负载nl、从主机到交换机的网络距离nd、每个交换机上的资源利用率ru(例如,处理器利用率、交换机结构利用率、存储器利用率)、每个交换机上的资源容量c、以及交换机和与每个主机相关联的计算装置之间的物理距离pd。在一个示例实施例中,为了确定应该为主机分配哪个交换机执行nat操作,根据以下等式计算每个可能交换机的分数:

si=αnl+βnd+γru+δc+εpd

其中α、β、γ、δ和ε是系统根据相应变量对网络性能的影响可调整的参数。在计算候选交换机的分数之后,选择具有最低分数的交换机来为主机执行nat。

网络距离(有时简称为“距离”)是交换机与主机之间接近度的指示符。在一个示例实施例中,网络距离被测量为主机(例如,虚拟机)与交换机之间的网络跳数,但是其它实施例可以使用其它距离指示符。例如,在与虚拟机相同的主机上执行的虚拟交换机将被给予比在其它主机上执行的其它虚拟交换机更高的优先级,或者在与虚拟机相同的机架内的主机上执行的虚拟交换机将被给予比在其它机架内的主机上执行的其它虚拟交换机更高的优先级。

在一个示例实施例中,执行交换机选择的目的是对nat进行负载平衡,以便在nat池内均匀地分配nat负载。在另一示例实施例中,交换机选择基于交换机处的可用的nat资源,并且例如,当配置用于nat的新虚拟交换机时,将选择具有最多可用资源的交换机。

在另一示例实施例中,交换机选择基于从交换机到主机或虚拟机的网络距离;例如,可以为任何给定主机选择nat池中最近的交换机。如果为远程操作选择远离(例如,若干网络跳跃)虚拟机的交换机,则当数据包需要nat时,虚拟机的流量将必须一直传送到交换机。这增加了网络流量并降低了结构上的可用网络带宽。但是,如果将网络距离用作从nat池中选择交换机的因素,则将通过在靠近主机或虚拟机的交换机处执行nat来减少网络上的流量。

在一个示例实施例中,如果nat控制器502正在配置驻留在某个机架中的新虚拟机,则nat控制器502检查交换机表604以查看是否存在与虚拟机位于同一机架中的交换机,并且如果在同一机架中找到一个或多个交换机,则将同一机架中的交换机分配给新虚拟机以执行nat。在另一个示例实施例中,nat控制器502检查是否存在与新虚拟机在同一主机中实施的虚拟交换机,并且如果在同一主机中存在一个或多个虚拟交换机,则nat控制器502选择主机中具有最低nat负载的虚拟交换机。

在一个示例实施例中,一旦nat分配逻辑602确定将执行nat的位置,网络配置规则520就被配置成传播到不同的网络交换机,以便实施分布式nat服务。

在一些示例实施例中,nat控制器502可以通过允许多于一个交换机对源自给定主机的数据包执行nat来配置交换机中的nat冗余。例如,一旦任何交换机从虚拟机接收到数据包,nat控制器502就可以配置两个交换机以对来自虚拟机的数据包执行nat。冗余可以通过尽快对数据包执行nat来节省网络资源,而不必将数据包转发到另一个交换机进行nat。

此外,在一些示例实施例中,一个或多个交换机可以被配置成对到达需要nat的交换机的任何数据包执行nat。例如,高容量交换机可以被配置成对到达交换机的任何数据包执行nat,因为预期交换机不是可能减慢网络速度的资源瓶颈。

在一些示例实施例中,如果主机被附接到执行nat的交换机,并且要对那个主机执行浮动ipnat,则不需要将流量重定向到单独的装置。在这种情况下,浮动ipnat由装置本身执行。如果主机被附接到不能执行nat的装置或者如果需要pat,则需要转换的流量可以重定向到指定的nat装置。这是由控制器服务器实现的,实施控制器服务器自动对结构进行编程以将流量重定向到nat装置。

图7是根据一些示例实施例的具有执行数据包转发操作的模块的交换机的简图。图7是虚拟交换机206的说明性框图,但是相同的部件可以用于物理交换机中。虚拟交换机206可以包含端口如端口p1到p6、虚拟交换机识别模块732、l2(第2层)转发模块734、虚拟路由器识别模块736、l3(第3层)转发模块738、nat模块740和控制单元226。模块可以使用相应专用电路系统来实施、可以使用共享的专用电路系统来实施、或者可以使用处理电路系统上的软件来实施。

注意,示例性实施例中描述的物理交换机和虚拟交换机可以执行第2层数据包交换和第3层数据包交换(例如,路由),尽管一些交换机可以执行第2层数据包交换或第3层数据包交换之一。

在确定如何处理网络数据包时,可以由模块中的一个或多个处理在交换机端口p1到p6之一处接收的网络数据包。模块可以以任何期望的顺序或并行地处理网络数据包。由每个模块执行的操作可以由控制器控制。

如上面参考图1所描述的,nat模块740通过修改通过虚拟交换机206传送的数据包上的ip地址来执行nat。nat模块740与虚拟路由器识别模块736和l3转发模块738交互,以在需要时对通过虚拟交换机206路由的数据包执行nat。另外,nat模块740与控制单元226交互,所述控制单元与图2的控制器服务器218交互,以实施到主机的交换机的分布式全局nat分配。在一些示例实施例中,nat模块740可以对数据包执行nat,即使所述交换机未被配置成为那个特定数据包执行nat,但是nat是路由所述数据包所必需的。这使网络结构能够执行nat,即使用于nat操作的交换机或主机的配置可能不完整。

虚拟交换机识别模块732可以基于与网络数据包相关联的网络属性(例如,接入端口、如以太网等源地址信息或ip源地址等)来确定网络数据包被分配给哪个虚拟交换机。虚拟交换机识别模块732可以向l2转发模块734提供标识虚拟交换机的信息。l2转发模块734可以基于由虚拟交换机识别模块732提供的虚拟交换机信息来执行网络转发(例如,在开放系统互连(osi)模型的第2层处的转发决策)。例如,l2转发模块734可以基于虚拟交换机信息和如从网络数据包检索的目的地媒体访问控制(mac)地址等附加数据包信息来确定网络数据包应该被转发到哪个交换机端口。

在目的地端主机和与源端主机不同的虚拟交换机相关联的场景中,可以使用虚拟路由器识别模块736和l3转发模块738。例如,可以使用l3转发模块738处理由交换机e3(参见图4)从终端主机eh3接收的去往终端主机eh1的网络数据包,因为终端主机eh3被分配给虚拟交换机vsw1,而终端主机eh1被分配给虚拟交换机vsw2。换句话说,与终端主机eh3相关联的接口if1的ip域不同于与终端主机eh1相关联的接口if2的ip域。在这些场景中,可以执行ip层(例如,osi模型的级别3)处的网络路由。

虚拟路由器识别模块736可以识别应该使用哪个虚拟路由器来处理网络数据包。虚拟路由器识别模块736可以使用网络数据包的网络属性连同从交换机的其它模块接收的信息。例如,虚拟路由器识别模块736可以使用从l2转发模块734接收的识别的虚拟交换机信息连同从网络数据包检索的ip地址信息来确定哪个虚拟路由器处理网络数据包。

交换机的模块可以共同实施交换机的流表。例如,可以使用虚拟交换机识别模块732和l2转发模块734来实施在第2层报头字段上操作的流表条目。作为另一个实例,可以使用虚拟路由器识别模块736和l3转发模块738来实施在第3层报头字段上操作的流表条目。作为又另一个实例,可以使用虚拟交换机识别模块732、l2转发模块734、虚拟路由器识别模块736、l3转发模块738和nat模块740来实施在第2层和第3层报头字段两者上操作的流表条目。

图7的实例仅仅是说明性的,其中模块732、734、736、738、740和226分开实施。如果需要,可以使用共享电路系统合并和实施任何两个或更多个模块的功能。模块可以被实施为软件交换机中的软件模块或者可以使用专用电路系统实施。每个虚拟交换机206可以能够执行网络转发和网络路由两者,这有助于允许控制器服务器实施分布式虚拟交换机和虚拟路由器。

图8示出了根据一些示例实施例的nat负载平衡操作。图8示出了当第一虚拟交换机具有高nat负载时nat操作从第一虚拟交换机到第二虚拟交换机的迁移。在图8的示例性实施例中,虚拟交换机206a被配置成为虚拟机(vm)208b执行nat,并且虚拟交换机206b被配置成为vm208a执行nat。控制器服务器218已检测到虚拟交换机206a具有高nat负载(例如,针对55个主机或虚拟机执行nat),并且控制器服务器218已确定降低虚拟交换机206a中的负载。

为了减少虚拟交换机206a上的负载,控制器服务器218已经确定将vm208b的nat操作从虚拟交换机206a移动到虚拟交换机206b。控制器服务器218通过控制平面将更新的配置传播到网络结构中的所有交换机,或者至少传播到虚拟交换机206a和206b。在改变之后,vm208b的nat将由虚拟交换机206b执行,并且虚拟交换机206a上的nat负载将减少一(例如,在图8的实施例中从55减少到54)并且虚拟交换机206b中增加一(例如,从5增加到6)。

图9示出了根据一些示例实施例的虚拟交换机到新虚拟机的分配。当创建新vm208c时,控制器服务器218为新vm208c分配用于nat的交换机。在图9的示例实施例中,控制器服务器218将虚拟交换机206b分配给vm208c。在通过改变更新控制平面之后,虚拟交换机206b中的nat负载增加一(例如,从6增加到7)。

如上文所讨论的,在一个示例实施例中,为新虚拟机选择具有最低nat负载的虚拟交换机。在一些示例实施例中,与交换机的接近度是用于为新虚拟机选择交换机的决定性因素。在一些实施例中,考虑nat负载和接近度的组合来选择交换机。例如,使虚拟交换机驻留在与虚拟机相同的主机上可能是最高优先级因素,但也可能考虑其它因素。

在一些示例实施例中,为网络管理员提供配置实用程序以配置网络设置。提供用户界面以设置网络参数,包含为主机分配交换机以进行nat。当然,网络管理员可以设置一些nat操作,而无需为所有主机完全配置nat。在这种情况下,控制器服务器218自动分配网络管理员没有具体配置的nat交换机。

在一些示例实施例中,当添加新的物理或虚拟交换机时,控制器服务器218重新分配nat操作的分配,以便更好地在网络结构上分配nat负载。在又其它示例实施例中,当网络上的负载达到预定阈值时,创建新的虚拟交换机。例如,如果所有虚拟交换机具有高于50的nat负载,则控制器服务器218产生新的虚拟交换机以将nat负载保持在50以下。

图10示出了根据一些示例实施例的当交换机变得不可用时用于执行nat的交换机的重新分配。当交换机变得不可用时,nat负载由控制器服务器218跨nat池中的装置自动重新分配。这包含使用不可用的交换机将主机重新分配给其它交换机以进行nat。

控制器服务器218监视网络上的交换机的状态,并且如果控制器服务器218检测到交换机(例如,虚拟交换机206b)变得不可用,则控制器服务器218通过将正在使用不可用交换机的主机重新分配给其它交换机来重新配置所述结构以进行nat。这样,装置故障或计划停机时间不会影响网络结构执行nat的能力。

在一些示例实施例中,通过使用共享数据库或集中控制器服务器218将不可用nat装置上的状态与新nat装置同步,避免了正在使用不可用nat装置的现有流的网络流量中断。例如,使用网络结构的控制平面来共享共享数据库。

在一个示例实施例中,控制器服务器218将nat流的状态保持在网络上的交换机处,并且如果一个交换机发生故障,则所述状态与网络上的其它交换机共享。在另一个示例实施例中,网络结构中的交换机在它们之间以及与控制器服务器218共享状态,因此当交换机变得不可用时,其它交换机能够快速接管nat操作而不中断现有流。

在图10的示例性实施例中,控制器服务器218检测到虚拟交换机206b已变得不可用。如图9所示,虚拟交换机206b正在为vm208a、208b、208c和208d等执行nat,并且nat负载为7。响应于虚拟交换机206b的不可用,控制器服务器218为vm重新分配nat。在这种情况下,vm208c、208b和208d被重新分配给虚拟交换机206a加三个其它装置(未示出),并且虚拟机208a被重新分配给物理交换机214a。结果,调整了交换机上nat负载的计数。

图11是根据一些示例实施例的用于将虚拟交换机分配给虚拟机的方法1100的流程图。在操作1102,控制器服务器218检测到已在主机中的一个中创建了新虚拟机。从操作1102开始,所述方法前进到操作1104,其中控制器服务器218确定可以与新虚拟机通信的虚拟交换机上的nat负载。在其它示例实施例中,物理交换机和虚拟交换机被考虑用于虚拟机上的nat负载。

在操作1106,控制器服务器218确定与从新虚拟机到虚拟交换机的距离相关的距离因数,所述虚拟交换机是用于为新虚拟机执行nat的候选(例如,从新vm到虚拟交换机的网络跳数)。

从操作1106开始,所述方法前进到操作1108,其中控制器服务器218基于虚拟交换机上的nat负载和距离因数选择虚拟交换机之一以为新虚拟机执行nat。在操作1110,重新配置网络结构,使得所选择的虚拟交换机为新虚拟机执行nat操作。

图12是根据一些示例实施例的用于在交换机变得不可用之后进行灾难恢复的方法1200的流程图。在操作1202中,控制器服务器218检测到第一虚拟交换机变得不可用(例如,参见上面参考图10描述的示例实施例)。例如,因为第一个虚拟交换机崩溃或者因为第一个虚拟交换机因维护而关闭,第一个虚拟交换机可能变得不可用。从操作1202开始,所述方法前进到操作1204,其中控制器服务器218识别由不可用交换机为nat操作服务的虚拟机(或任何其它主机)。

在操作1206中,控制器服务器218选择要迁移的第一个或下一个虚拟机。在操作1208中,基于虚拟交换机上的负载和从虚拟交换机到所选虚拟机的距离因数为需要迁移的虚拟机选择新的虚拟交换机。

从操作1208开始,所述方法前进到操作1210,其中网络结构(例如,物理和虚拟交换机)被配置成使得所选择的新虚拟交换机被配置成为所选择的虚拟机执行nat。在一些示例实施例中,配置网络结构包含通过控制平面将控制消息发送到由控制器服务器218控制的交换机中的一个或多个。

从操作1210开始,所述方法前进到操作1212,其中进行检查以确定是否需要将更多虚拟机迁移到新交换机。如果存在需要迁移的更多虚拟机,则所述方法返回到操作1206,并且如果不再有需要迁移的虚拟机,则所述方法前进到操作1214。在操作1214中,虚拟机的nat迁移结束。

图13是根据一些示例实施例的用于将nat操作分发到网络上的多个网络装置的方法1300的流程图。在操作1302中,控制网络结构的控制器识别网络结构中的多个交换机,每个交换机具有用于nat的模块,并且每个交换机包括用于转发在交换机处接收的数据包的硬件。

从操作1302开始,所述方法前进到操作1304,其中识别具有至少一个内部ip地址的一个或多个主机。对于在操作1304中识别的一个或多个主机中的每一个,所述方法执行操作1306和1308。

操作1306用于选择用于为主机执行nat的交换机之一。此外,在操作1308中,控制器配置网络结构以使所选择的交换机为主机执行nat以使主机能够与外部网络通信。

在一个示例实施例中,方法1300进一步包含:检测连接到所述网络结构的新虚拟机;从所述多个交换机中选择所述交换机中的一个以为所述新虚拟机执行所述nat,所述选择基于用于执行所述nat的每个交换机上的负载以及从所述新虚拟机到所述交换机中的每一个的距离,其中所述距离被测量为所述新虚拟机与所述交换机之间的网络跳数;以及由所述控制器配置所述网络结构以使所述所选择的交换机为所述新虚拟机执行所述nat。

在另一方面,方法1300进一步包括:检测正在为一个或多个主机执行所述nat的第一交换机处于脱机状态;确定所述第一交换机被配置成为哪个主机执行所述nat;以及将所确定的主机中的每一个迁移到另一个交换机以执行所述nat。

在一个示例实施例中,从所述多个交换机中选择所述交换机中的一个进一步基于从所述交换机到所述主机的距离。在另一示例实施例中,方法1300进一步包括:跟踪每个交换机上的负载以执行nat;检测过载的交换机;以及响应于所述检测,将一个或多个主机从所述过载的交换机移动到其它交换机以对于对应主机执行所述nat。

在一个示例实施例中,所述控制器包括存储在存储器中的交换机表,包括交换机信息的所述交换机表包括:交换机标识符;所述交换机上的nat负载;以及所述交换机的位置。在另一个示例实施例中,所述控制器包括存储在存储器中的主机表,包括主机信息的所述主机表包括:主机标识符;指示所述主机是装置还是虚拟机的标记;为所述主机执行所述nat的交换机的标识;以及所述主机的位置。

在另一方面,每个交换机包含与控制器通信的控制单元程序。在另一个示例实施例中,当主机连接到不可操作以执行所述nat的网络装置时,来自所述主机的流量被路由到所述交换机中的一个以为所述主机执行所述nat。在一些示例实施例中,用于nat的模块执行浮动ipnat和patnat。

图14是根据实施例的控制器服务器218和控制单元226的框图。控制器服务器218和控制单元226可以使用网络协议栈如网络协议栈158和网络协议栈160通过网络路径516进行通信。网络协议栈158和160可以是例如linux(tm)tcp/ip栈或vxworks(tm)操作系统中的tcp/ip栈(作为实例)。网络路径516可以是例如物理交换机214与外部设备之间的连接,或者可以是基于机架的系统中的骨干路径。

控制协议栈156用作网络协议栈158与控制软件154之间的接口。控制协议栈162用作网络协议栈160与控制软件164之间的接口。在操作期间,当控制器服务器218与控制单元226通信时,控制协议栈156和162生成并解析控制协议消息(例如,用于在结构交换机处配置nat操作的控制消息)。通过使用图2中所示类型的布置,在控制器服务器218与控制单元226之间的网络路径516上形成网络连接。控制器服务器218和控制单元226可以使用传输控制协议(tcp)或用户数据报协议(udp)通过互联网协议(ip)网络连接进行通信。当通过网络连接在控制器服务器218与控制单元226之间通信时可以使用的控制协议的实例包含简单网络管理协议(snmp)和openflow协议栈。

图15是示出根据实施例的网络100的框图。根据示例实施例,网络100用于举例说明多供应商网络的配置。网络100包含可以由控制器服务器218控制的交换机206和214。控制器服务器218可以是单个装置,或者是跨多个计算装置实施的分布式控制器。根据示例实施例,网络100可以包含物理交换机sw1214和虚拟交换机sw2206。控制器服务器218可以经由网络路径516耦合到网络100的交换机214和206,并且使用网络路径516控制交换机214和206。交换机214和206可以包含耦合到终端主机或其它交换机的交换机端口(物理或虚拟)。在图15的实例中,终端主机eh1和eh3耦合到物理交换机sw1214的相应端口p1和p3,终端主机eh2215和eh4耦合到虚拟交换机sw2206的相应端口p1和p2,并且交换机sw1214和sw2206经由交换机sw1214的端口p2和交换机sw2206的端口p3耦合。

控制器服务器218可以包含控制网络中的交换机的操作的一个或多个应用模块192。例如,第一应用模块192可以将交换机组织成由交换机上的终端主机组或端口组形成的虚拟交换机。第一应用模块192可以控制网络100的底层交换机sw1214和sw2206在虚拟交换机级别强制执行网络策略和数据包转发(例如,可以为虚拟交换机而不是底层交换机定义网络策略)。作为另一个实例,第二应用模块192可以处理网络监视功能,如分析网络流量以生成网络流量报告。应用模块192可以生成并向交换机建模接口194提供期望的网络配置(例如,用于网络100的全部或部分)。交换机建模接口194可以使用交换机模型198来实施期望的网络配置,并且可以向应用模块192指示实施是成功还是已经失败。在又另一个实例中,第三应用模块192(未示出)可以是图5中所示的nat控制器502。

应用模块192可以在控制器服务器218处实施为通用硬件上的软件、或者实施为专用计算设备、或者实施为专用硬件。例如,应用模块192可以实施为共享计算设备上的软件模块。作为另一个实例,应用模块192可以在分布式控制器布置中的不同计算设备上实施。

应用模块192可以基于在应用模块192处维护的或由控制器服务器218的其它模块维护的网络拓扑信息来控制交换机。但是,网络中可能有数百、数千或更多交换机。应用模块192可能难以确保发送到网络交换机的控制消息被交换机成功接收或执行。另外,多个应用模块192可以在控制器服务器218处实施并且可能彼此冲突。考虑到交换机未能实施从控制器服务器218接收的流表条目的情况,交换机的状态可能与预期状态不匹配,并且由控制器服务器218提供的后续流表条目可能产生不期望的网络配置。

控制器服务器218可以配备有交换机建模接口194,所述交换机建模接口处理与交换机的通信和交换机状态的维护。交换机建模接口194可以帮助确保应用模块192与网络的交换机同步。交换机建模接口194可以用于实施代表网络100中的每个交换机的交换机模型198。例如,交换机模型msw1可以表示交换机sw1214,而交换机模型msw2可以表示交换机sw2206。交换机模型msw1和msw2可以维护关于相应交换机sw1214和sw2206的当前状态的信息。例如,交换机模型msw1可以维护识别在交换机sw1214处实施的转发规则或策略的信息,而交换机模型msw2可以识别交换机sw2206的状态。

交换机模型198可以由控制模块196控制。控制模块196可以控制交换机模型198并在满足来自应用模块192的网络控制请求时向网络100的交换机发出控制消息。交换机模型198可以被实施为数据构造,如一组表。

图16是示出代表性软件架构1602的框图1600,所述代表性软件架构可以与本文所描述的各种硬件架构结合使用。图16仅是软件架构1602的非限制性实例,并且应当理解,可以实施许多其它架构以促进本文描述的功能。软件架构1602可以在硬件如图17的机器1700上执行,所述机器包含处理器1704、存储器/存储装置1706和i/o部件1718等。示出了代表性硬件层1650,并且其可以表示例如图17的机器1700。代表性硬件层1650包括具有相关联的可执行指令1654的一个或多个处理单元1652。可执行指令1654表示软件架构1602的可执行指令,包含图1到图15的方法、模块等的实现方式。硬件层1650还包含也具有可执行指令1654的存储器和/或存储模块1656。硬件层1650还可以包括其它硬件1658,所述其它硬件表示硬件层1650的任何其它硬件,如作为机器1700的一部分示出的其它硬件。

在图16的实例架构中,软件架构1602可以被概念化为层的堆叠,其中每个层提供特定功能。例如,软件架构1602可以包含层,如操作系统1620、库1616、框架/中间件1614、应用1612、以及呈现层1610。在操作上,层内的应用程序1612和/或其它部件可以通过软件栈调用应用编程接口(api)调用1604,并且响应于api调用1604接收如消息1608示出的响应、返回值等。所示的层本质上是代表性的,并且并非所有软件架构都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件层1614,而其它人可能提供这种层。其它软件架构可以包含附加或不同的层。

操作系统1620可以管理硬件资源并提供公共服务。操作系统1620可以包含例如内核1618、服务1622和启动器1624。内核1618可以充当硬件与其它软件层之间的抽象层。例如,内核1618可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务1622可以为其它软件层提供其它公共服务。启动器1624可以负责控制或与底层硬件介接。例如,驱动器1624可以包含显示驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动器、音频驱动器、电源管理驱动器等,这取决于硬件配置。

库1616可以提供可以由应用程序1612和/或其它部件和/或层使用的公共基础设施。库1616通常提供允许其它软件模块以比与底层操作系统1620功能(例如,内核1618、服务1622和/或驱动器1624)直接介接的方式执行任务的功能。库1616可以包含系统库1642(例如,c标准库),所述系统库可以提供功能,如存储器分配功能、字符串操纵功能、数学功能等。另外,库1616可以包含api库1644,如媒体库(例如,用于支持各种媒体格式如mpeg4、h.264、mp3、aac、amr、jpg、png的呈现和操纵的库)、图形库(例如,可以用于在显示器上呈现2d和3d图形内容的opengl框架)、数据库库(例如,可以提供各种关系数据库功能的sqlite)、web库(例如,可以提供web浏览功能的webkit)等等。库1616还可以包含各种其它库1646,以向应用程序1612和其它软件部件/模块提供许多其它api。

框架1614(有时也被称为中间件)可以提供可以由应用程序1612和/或其它软件部件/模块使用的更高级别的公共基础设施。例如,框架1614可以提供各种图形用户界面(gui)功能、高级资源管理、高级位置服务等。框架1614可以提供可以由应用程序1612和/或其它软件部件/模块使用的广谱的其它api,其中一些可以特定于特定操作系统或平台。

应用程序1612包含内置应用1636和/或第三方应用1638。代表性内置应用1636的实例可以包含但不限于:联系人应用、浏览器应用、书阅读器应用、位置应用、媒体应用、消息应用和/或游戏应用。第三方应用1638可以包含内置应用1636中的任一个以及各种其它应用。在特定实例中,第三方应用1638(例如,由除了特定平台供应商以外的实体使用androidtm或iostm软件开发工具包(sdk)开发的应用)可以是在移动操作系统上运行的移动软件,如iostm、androidtmphone或其它移动操作系统。在此实例中,第三方应用1638可以调用由如操作系统1620等移动操作系统提供的api调用1604,以促进本文所描述的功能。

应用程序1612可以利用内置操作系统功能(例如,内核1618、服务1622和/或驱动器1624)、库(例如,系统库1642、api库1644和其它库1646)或框架/中间件1614来创建用户界面以与系统用户进行交互。可替代地或另外地,在一些系统中,与用户的交互可以通过呈现层如呈现层1610发生。在这些系统中,应用/模块“逻辑”可以与和用户交互的应用/模块的方面分离。

一些软件架构利用虚拟机。在图16的实例中,这由虚拟机1606示出。虚拟机创建软件环境,其中应用/模块可以像在硬件机器(如例如图17的机器1700)上执行一样执行。虚拟机1606由主机操作系统(例如,图16中的操作系统1620)托管,并且通常但不总是具有虚拟机监视器1660,所述虚拟机监视器管理虚拟机1606的操作以及与主机操作系统(例如,操作系统1620)的接口。软件架构在虚拟机1606内执行,如操作系统1634、库1632、框架/中间件1630、应用程序1628和/或呈现层1626。在虚拟机1606内执行的这些软件架构层可以与先前描述的对应层相同或可以是不同的。

图17是示出根据一些示例实施例的机器1700的部件的框图,所述机器能够从机器可读介质(例如,机器可读存储介质)中读取指令和执行本文所讨论的方法中的任何一种或多种。具体地,图17示出了呈实例计算机系统形式的机器1700的图形表示,可以在所述计算机系统内执行用于使机器1700执行本文所讨论的方法中的任何一种或多种的指令1710(例如,软件、程序、应用程序、小应用程序、app或其它可执行代码)。例如,指令1710可以使机器1700执行图11到图13的流程图。另外地或可替代地,指令1710可以实施图2到图5、图7到图10和图14到图15的计算设备212(托管控制器服务器218)、物理交换机214和虚拟交换机206等等。指令1710将通用的、未编程的机器1700变换成特定机器1700,所述特定机器被编程为以所描述的方式执行所描述和示出的功能。

在替代性实施例中,机器1700作为独立装置操作或者可以耦合(例如,联网)到其它机器。在联网部署中,机器1700可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力操作,或者作为对等(或分布式)网络环境中的对等机器操作。机器1700可以包括但不限于交换机、控制器服务器、服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动装置、可穿戴装置(例如,智能手表)、智能家居装置(例如,智能设施)、其它智能装置、网络设施、网络路由器、网络交换机、网络桥接器或能够顺序地或以其它方式执行指定待由机器1700采取的动作的指令1710。此外,虽然仅示出了单个机器1700,但是术语“机器”还应被视为包含机器1700的集合,所述机器单独地或共同地执行指令1710以执行本文所讨论的方法中的任何一种或多种。

机器1700可以包含处理器1704、存储器/存储装置1706和i/o部件1718,其可以被配置成如经由总线1702彼此通信。在示例实施例中,处理器1704(例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、另一个处理器或其任何合适的组合)可以包含例如可以执行指令1710的处理器1708和处理器1712。术语“处理器”旨在包含多核处理器,所述多核处理器可以包括可以同时执行指令的两个或更多个独立处理器(有时被称为“核”)。尽管图17示出了多个处理器1704,但是机器1700可以包含具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器、或其任何组合。

存储器/存储装置1706可以包含存储器1714,如主存储器、或其它存储器存储装置以及存储单元1716,两者都可如经由总线1702访问处理器1704。存储单元1716和存储器1714存储体现本文描述的方法或功能中的任何一个或多个的指令1710。在其由机器1700执行期间,指令1710还可以完全或部分地驻留在存储器1714内、存储单元1716内、处理器1704中的至少一个内(例如,处理器的高速缓存存储器内)、或其任何合适的组合。因此,存储器1714、存储单元1716和处理器1704的存储器是机器可读介质的实例。

如本文所使用的,“机器可读介质”表示能够临时或永久地存储指令和数据的装置,并且可以包含但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪存、光学介质、磁介质、高速缓冲存储器、其它类型的存储装置(例如,可擦除可编程只读存储器(eeprom))和/或其任何合适的组合。术语“机器可读存储介质”应被视为包含能够存储指令1710的单个介质或多个介质(例如,集中式或分布式数据库或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应被视为包含能够存储由机器(例如,机器1700)执行的指令(例如,指令1710)的任何介质或多个介质的组合,使得当由机器的一个或多个处理器(例如,处理器1704)执行时,指令使机器执行本文描述的方法中的任何一种或多种。因此,“机器可读存储介质”是指单个存储器件或装置以及包含多个存储器件或装置的“基于云的”存储系统或存储网络。术语“机器可读存储介质”不包括信号本身。术语机器可读介质包含机器可读存储介质和传输介质或载波信号。

i/o部件1718可以包含各种各样的部件以接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量等。包含在特定机器中的特定i/o部件1718将取决于机器的类型。例如,如移动电话等便携式机器将可能包含触摸输入装置或其它这种输入机构,而无头服务器机器将可能不包含这种触摸输入装置。应当理解,i/o部件1718可以包含图17中未示出的许多其它部件。i/o部件1718根据功能数据包仅仅是为了简化以下讨论,并且数据包决不是限制性的。在各种示例实施例中,i/o部件1718可以包含输出部件1726和输入部件1728。输出部件1726可以包含可视部件(例如,显示器,如等离子显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt))、声学部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其它信号发生器等。输入部件1728可以包含字母数字输入部件(例如,键盘、配置成接收字母数字输入的触摸屏、光学键盘或其它字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其它指向仪器)、触觉输入部件(例如,物理按钮、提供触摸位置和/或力或触摸手势的触摸屏、或其它触觉输入部件)、音频输入部件(例如,麦克风)等。

在另外的示例实施例中,i/o部件1718可以包含大量的其它部件中的生物测定部件1730、运动分量1734、环境组分1736、或位置分量1738。例如,生物识别部件1730可以包含用于检测表达(例如,手部表情、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1734可以包含加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件1736可以包含例如照明传感器部件(例如,光度计)、温度传感器部件(例如,一个或多个检测环境温度的温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,一个或多个检测背景噪声的麦克风)、接近传感器部件(例如,检测附近物体的红外传感器)、气体传感器(例如,用于检测危险气体的浓度以确保安全或测量气氛中污染物的气体检测传感器)、或可以提供与周围物理环境相对应的指示、测量或信号的其它部件。定位部件1738可以包含位置传感器部件(例如,全球定位系统(gps)接收器部件)、高度传感器部件(例如,高度计或检测空气压力的气压计,可以从所述空气压力推导出高度)、朝向传感器部件(例如,磁力计)等。

通信可以使用各种技术实施。i/o部件1718可以包含通信部件1740,所述通信部件可操作以分别经由耦合1724和耦合1722将机器1700耦合到网络1732或装置1720。例如,通信部件1740可以包含网络接口部件或与网络1732介接的其它合适的装置。在其它实例中,通信部件1740可以包含有线通信部件、无线通信部件、蜂窝通信部件、近场通信(nfc)部件、部件(例如,低功耗)、wi-fi部件以及通过其它方式提供通信的其它通信部件。装置1720可以是另一种机器或各种外围装置中的任一种(例如,经由usb耦合的外围装置)。

此外,通信部件1740可以检测标识符或包含可操作以检测标识符的部件。例如,通信部件1740可以包含射频识别(rfid)标签读取器部件、nfc智能标签检测部件、光学读取器部件(例如,用于检测一维条形码的光学传感器,如通用产品代码(upc)条代码、多维条形码,如快速响应(qr)代码、aztec代码、数据矩阵、dataglyph、maxicode、pdf417,ultracode、uccrss-2d条形码和其它光学代码)、或声学检测部件(例如,用于识别标记音频信号的麦克风)。另外,可以经由通信部件1740导出各种信息,如经由互联网协议(ip)地理位置的位置、经由信号三角测量的位置、经由检测可以指示特定位置的nfc信标信号的位置等等。

在各种示例实施例中,网络1732的一个或多个部分可以是自组织网络、内联网、外联网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线广域网(wwan)、城域网(man)、互联网、互联网的一部分、公共交换电话网(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络、或两个或更多个这种网络的组合。例如,网络1732或网络1732的一部分可以包含无线或蜂窝网络,并且耦合1724可以是码分多址(cdma)连接、全球移动通信系统(gsm)连接或其它类型的蜂窝或无线耦合。在此实例中,耦合1724可以实施各种类型的数据传输技术中的任何一种,如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用数据包无线服务(gprs)技术、增强gsm演进(edge)技术、包含3g的第三代合作伙伴计划(3gpp)的数据速率、第四代无线(4g)网络、通用移动电信系统(umts)、高速数据包接入(hspa)、全球微波接入互操作性(wimax)、长期演进(lte)标准、由各种标准制定组织、其它远程协议或其它数据传输技术定义的其它标准。

可以经由网络接口装置(例如,包含在通信部件1740中的网络接口部件)使用传输介质并且利用许多众所周知的传输协议中的任何一个(例如,超文本传输协议(http))通过网络1732来发送或接收指令1710。类似地,指令1710可以使用传输介质经由耦合1722(例如,对等耦合)发送或接收到装置1720。术语“传输介质”应被视为包含能够存储、编码或携带指令1710以供机器1700执行的任何无形介质,并且包含数字或模拟通信信号或用于促进这种软件的通信的其它无形介质。传输介质是机器可读介质的实施例。

以下带编号的实例是实施例。

1.一种方法,其包括:

由控制网络结构的控制器识别所述网络结构中的多个交换机,每个交换机具有用于网络地址转换(nat)的模块,每个交换机被配置成转发在所述交换机处接收的数据包;

识别具有至少一个内部互联网协议(ip)地址的一个或多个主机;以及

对于所述一个或多个主机中的每一个:

从所述多个交换机中选择所述交换机中的一个以为所述主机执行所述nat;以及

由所述控制器配置所述网络结构以使所选择的交换机为所述主机执行所述nat,以使所述主机能够与外部网络通信。

2.根据实例1所述的方法,其进一步包括:

检测连接到所述网络结构的新虚拟机;

从所述多个交换机中选择所述交换机中的一个以为所述新虚拟机执行所述nat,所述选择至少基于用于执行所述nat的每个交换机上的负载以及从所述新虚拟机到所述交换机中的每一个的距离,其中所述距离被测量为所述新虚拟机与所述交换机之间的网络跳数;以及

由所述控制器配置所述网络结构以使所述所选择的交换机为所述新虚拟机执行所述nat。

3.根据实例1或实例2所述的方法,其进一步包括:

检测正在为一个或多个主机执行所述nat的第一交换机处于脱机状态;

确定所述第一交换机被配置成为哪些主机执行所述nat;以及

将所确定的主机中的每一个迁移到另一个交换机以执行所述nat。

4.根据实例1到3中任一项所述的方法,其中所述从所述多个交换机中选择所述交换机中的一个进一步基于从所述交换机到所述主机的距离。

5.根据实例1到4中任一项所述的方法,其进一步包括:

跟踪用于执行所述nat的每个交换机上的负载;

检测过载的交换机;以及

响应于所述检测,将一个或多个主机从所述过载的交换机移动到其它交换机以对于对应主机执行所述nat。

6.根据实例1到5中任一项所述的方法,其中所述控制器包括存储在存储器中的交换机表,包括交换机信息的所述交换机表包括交换机标识符、所述交换机上的nat负载和所述交换机的位置。

7.根据实例1到6中任一项所述的方法,其中所述控制器包括存储在存储器中的主机表,包括主机信息的所述主机表包括主机标识符、指示所述主机是装置还是虚拟机的标记、为所述主机执行所述nat的交换机的标识、以及所述主机的位置。

8.根据实例1到7中任一项所述的方法,其中每个交换机包括与所述控制器通信的控制单元程序。

9.根据实例1到8中任一项所述的方法,其中当主机连接到不可操作以执行所述nat的网络装置时,来自所述主机的流量被路由到所述交换机中的一个以为所述主机执行所述nat。

10.根据实例1到9中任一项所述的方法,其中所述用于nat的模块执行浮动ipnat和端口地址转换(pat)nat。

11.一种机器可读存储介质,其包括当由机器执行时使所述机器执行操作的指令,所述操作包括:

由控制网络结构的控制器识别所述网络结构中的多个交换机,每个交换机具有用于网络地址转换(nat)的模块,每个交换机被配置成转发在所述交换机处接收的数据包;

识别具有至少一个内部互联网协议(ip)地址的一个或多个主机;以及

对于所述一个或多个主机中的每一个:

从所述多个交换机中选择所述交换机中的一个以为所述主机执行所述nat;以及

由所述控制器配置所述网络结构以使所选择的交换机为所述主机执行所述nat,以使所述主机能够与外部网络通信。

12.根据实例11所述的机器可读存储介质,其中所述机器进一步执行操作,所述操作包括:

检测连接到所述网络结构的新虚拟机;

从所述多个交换机中选择所述交换机中的一个以为所述新虚拟机执行所述nat,所述选择至少基于用于执行所述nat的每个交换机上的负载以及从所述新虚拟机到所述交换机中的每一个的距离,其中所述距离被测量为所述新虚拟机与所述交换机之间的网络跳数;以及

由所述控制器配置所述网络结构以使所述所选择的交换机为所述新虚拟机执行所述nat。

13.根据实例11或实例12所述的机器可读存储介质,其中所述机器进一步执行操作,所述操作包括:

检测正在为一个或多个主机执行所述nat的第一交换机处于脱机状态;

确定所述第一交换机被配置成为哪些主机执行所述nat;以及

将所确定的主机中的每一个迁移到另一个交换机以执行所述nat。

14.根据实例11到13中任一项所述的机器可读存储介质,其中所述从所述多个交换机中选择所述交换机中的一个进一步基于从所述交换机到所述主机的距离。

15.根据实例11到14中任一项所述的机器可读存储介质,其中所述机器进一步执行操作,所述操作包括:

跟踪用于执行所述nat的每个交换机上的负载;

检测过载的交换机;以及

响应于所述检测,将一个或多个主机从所述过载的交换机移动到其它交换机以对于对应主机执行所述nat。

16.一种控制器,其包括:

网络接口;

包括指令的存储器;和

一个或多个计算机处理器,其中当由所述一个或多个计算机处理器执行时,所述指令使所述一个或多个计算机处理器执行操作,所述操作包括:

识别所述网络结构中的多个交换机,每个交换机具有用于网络地址转换(nat)的模块,每个交换机被配置成转发在所述交换机处接收的数据包;

识别具有至少一个内部互联网协议(ip)地址的一个或多个主机;以及

对于所述一个或多个主机中的每一个:

从所述多个交换机中选择所述交换机中的一个以为所述主机执行所述nat;以及

配置所述网络结构以使所选择的交换机为所述主机执行所述nat,以使所述主机能够与外部网络通信。

17.根据实例16所述的控制器,其中所述存储器包括交换机表,包括交换机信息的所述交换机表包括交换机标识符、所述交换机上的nat负载和所述交换机的位置。

18.根据实例16或实例17所述的控制器,其中所述存储器包括主机表,包括主机信息的所述主机表包括主机标识符、指示所述主机是装置还是虚拟机的标记、为所述主机执行所述nat的交换机的标识、以及所述主机的位置。

19.根据实例16到18中任一项所述的控制器,其中所述指令进一步使所述一个或多个处理器执行操作,所述操作包括:

检测连接到所述网络结构的新虚拟机;

从所述多个交换机中选择所述交换机中的一个以为所述新虚拟机执行所述nat,所述选择基于用于执行所述nat的每个交换机上的负载以及从所述新虚拟机到所述交换机中的每一个的距离,其中所述距离被测量为所述新虚拟机与所述交换机之间的网络跳数;以及

由所述控制器配置所述网络结构以使所述所选择的交换机为所述虚拟机执行所述nat。

20.根据实例16到19中任一项所述的控制器,其中所述指令进一步使所述一个或多个处理器执行操作,所述操作包括:

检测正在为一个或多个主机执行所述nat的第一交换机处于脱机状态;

确定所述第一交换机被配置成为哪些主机执行所述nat;以及

将所确定的主机中的每一个迁移到另一个交换机以执行所述nat。

21.一种承载指令的机器可读介质,当由机器执行时,所述指令使所述机器执行根据实例1到10中任一项所述的方法。

贯穿本说明书,多个实例可以实施被描述为单个实例的部件、操作或结构。尽管一种或多种方法的单独操作被示出并描述为独立的操作,但是可以同时执行单独操作中的一个或多个,并且不需要以所示的顺序执行操作。在示例配置中作为独立部件呈现的结构和功能可以被实施为组合结构或部件。类似地,呈现为单个部件的结构和功能可以被实施为独立的部件。这些和其它变化、修改、添加和改进都落入本文主题的范围内。

以足够的细节描述本文所示的实施例,以使本领域技术人员能够实践所公开的教导。可以使用其它实施例并从中导出其它实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替代和改变。因此,具体实施方式不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求连同此类权利要求所赋予的等同物的全部范围来限定。

如本文所用,术语“或”可以以包含性或排他性的含义来解释。此外,可以为在此描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中示出了特定操作。设想了其它功能分配,并且其可以落入本公开的各种实施例的范围内。通常,在示例配置中作为单独资源呈现的结构和功能可以被实施为组合结构或资源。类似地,作为单个资源呈现的结构和功能可以被实施为单独的资源。这些和其它变化、修改、添加和改进落入如由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应被视为说明性的而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1