High availability network address translation

By maintaining a consistent NAT table and TCP state between active and standby nodes, low-latency NAT failover is achieved in cloud computing environments, solving the problem of network session interruption in existing technologies and ensuring seamless transfer of network sessions and high system availability.

CN115918047BActive Publication Date: 2026-02-27ALKUS GMBH
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202180050656.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-08-21
Filing Date
2021-08-18
Publication Date
2026-02-27
Estimated Expiration
2041-08-18

AI Technical Summary

Technical Problem

In cloud computing environments, existing technologies struggle to achieve low-latency failover during Network Address Translation (NAT), leading to interruptions in TCP and application sessions and data loss.

Method used

By maintaining a consistent NAT table and TCP state between active and standby nodes, and utilizing dynamic IP address mapping and VPN connections, NAT failover is achieved, ensuring seamless transfer of network sessions.

Benefits of technology

It enables seamless switching of network sessions in the event of node failure, avoiding interruption of TCP and application sessions, reducing data loss, and improving system high availability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115918047B_ABST
    Figure CN115918047B_ABST
Patent Text Reader

Abstract

A computing environment, such as a cloud computing environment, can include nodes that perform NAT for multiple workloads. An active node performs NAT for a workload, including maintaining a NAT table. The active node can create a sub-interface for the workload and act as a DHCP server. The NAT table and sub-interface can be recreated on a standby node. Upon detection of a failure, a routing table is updated to direct the workload to connect to the standby node, and traffic can continue to be handled by the standby node without interruption to the network or application session.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND

[0001] In many cases, it is advantageous to have a public address used by an entity be different from a private address used by the entity. The public address can be used as the source and destination address for packets sent and received over an external network. The private address can be used as the source and destination address for packets sent and received over an internal network. The translation between the public and private addresses, known as network address translation (NAT), can be performed by a network element, such as a router, switch, network gateway, or other computing device.

[0002] Network address translation is particularly useful for applications executing in a cloud computing environment, as the network environment in which the applications execute is virtualized. Applications executing on premise equipment can also benefit from address translation. BRIEF DESCRIPTION OF DRAWINGS

[0003] In order that the advantages of the application will be readily understood, a more particular description of the application briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the application and are not therefore to be considered to be limiting of its scope, the application will be described and explained with additional specificity and detail by reference to the accompanying drawings, in which:

[0004] Figure 1 is a schematic block diagram of a network environment for implementing low-latency NAT according to embodiments of the application;

[0005] Figure 2 is a schematic block diagram illustrating performing NAT failover between active and standby nodes according to embodiments of the application;

[0006] Figure 3 is a flowchart of a method of performing NAT failover between active and standby nodes according to embodiments of the application;

[0007] Figure 4 is a schematic block diagram of components of an alternative method of implementing NAT failover between active and standby nodes according to embodiments of the application;

[0008] Figure 5 is a flowchart of an alternative method of performing NAT failover between active and standby nodes according to embodiments of the application;

[0009] Figure 6 is a flowchart of another alternative method of performing NAT failover between active and standby nodes performing NAT according to embodiments of the application; and

[0010] Figure 7 is a schematic block diagram of a computer system suitable for implementing the method according to embodiments of the present application. DETAILED DESCRIPTION

[0011] It is readily understood that the components of the application, as generally described and illustrated in the Figures herein, can be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the application, as represented in the Figures, is not intended to limit the scope of the application, as claimed, but is merely representative of certain examples of embodiments of the application. The described embodiments of the application will be best understood by reference to the drawings, wherein like parts are designated with like numerals throughout.

[0012] Embodiments of the present application can be implemented as a device, a method or a computer program product. Accordingly, the present application can take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or combinations of software and hardware aspects that can all generally be referred to herein as a "module", or "system". Furthermore, the present application can take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium.

[0013] Any combination of one or more computer-usable or computer-readable media can be utilized. For example, a computer-readable medium can include one or more of a portable computer diskette, a hard disk, a random access memory (RAM) device, a read-only memory (ROM) device, an erasable programmable read-only memory (EPROM or flash memory) device, a portable compact disc read-only memory (CDROM), an optical storage device, and a magnetic storage device. In selected embodiments, a computer- readable medium can include any non-transitory medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.

[0014] Computer program code for carrying out operations of the present application can be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++, or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages, and descriptive or declarative languages such as HTML, XML, JSON, and the like. The program code can execute entirely on a computer system, entirely on a separate hardware unit, partly on a remote computer disposed at a distance from the computer, or entirely on a remote computer or server. In the latter scenario, the remote computer can be connected to the computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection can be made to an external computer (for example, through the Internet using an Internet Service Provider).

[0015] The computer program instructions can also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0016] These computer program instructions can also be stored in a non-transitory computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instructions which implement the function / act specified in the flowchart and / or block diagram block or blocks.

[0017] The computer program instructions can also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0018] Figure 1 An example of a network environment 100 that can perform low-latency network address translation (NAT) is shown. The network environment 100 can include a plurality of virtual private clouds (VPCs) 102 executing on a cloud computing platform 104. The cloud computing platform 104 can be any cloud computing platform known in the art, such as AMAZON WEB SERVICES (AWS), MICROSOFT AZURE, GOOGLE CLOUD, or other cloud computing platform. As known in the art, the cloud computing platform 104 provides virtualized computing and storage resources that can be accessed by customers over a network 106. The VPCs 102 can be used as logically isolated portions of the cloud computing platform 104, with networks including Internet Protocol (IP) addresses, subnets, routing tables, network gateways, and other network elements isolated from other portions of the cloud computing platform, and thus not requiring global uniqueness.

[0019] Each VPC 102 can execute one or more nodes 108, 110, 112. The nodes 108, 110, 112 can each be an application program, such as a virtual machine, a container, or other execution environment executing within the VPC 102. Each node 108, 110, 112 can function as a network element and provide a gateway between the VPC 102 and other VPCs 102 as well as a gateway to an external network 106 connected to the cloud computing platform 104.

[0020] In the illustrated embodiment, one or more nodes are hub nodes 108 connected to the external network 106, through which other spoke nodes 110, 112 can send and receive traffic relative to the external network 106. In the illustrated embodiment, the hub nodes 108 are in a different VPC than the spoke nodes 110, 112. In some embodiments, the spoke nodes 110, 112 each have a virtual private network (VPN) session established with the hub nodes 108. For example, the VPN session can be according to a Layer 2 Tunneling Protocol (L2TP).

[0021] Each VPC 102 can further execute one or more workloads 114. Each workload 114 can communicate with workloads of other VPCs 102 as well as with the external network 106 through nodes 110, 112 in the VPC hosting the workload 114. Thus, each workload 114 can have a network connection, such as a virtualized local area network (VLAN) connection, with nodes 110, 112 of the VPC. Each workload 114 can be an application program, a daemon, a network service, an operating system, a container, or any computational process capable of being executed by a computer.

[0022] In the illustrated embodiment, one node 110 can be an active node of one or more workloads 114, while another node 112 is a backup or standby node 112 of the node 110. The active node 110 and the standby node 112 can be located within the same VPC 102, such that a workload can connect to either of the nodes 110, 112 through an internal virtual network of the VPC 102.

[0023] As discussed herein, the active node 110 can maintain a network session with a component external to the VPC 102 and possibly external to the cloud computing platform 104. The network session can be a Transmission Control Protocol (TCP) session with a TCP server 116 connected to the external network 106. The network session can additionally or alternatively be an application session established between an external application connected to the TCP server 116 and the workload 114.

[0024] The methods described herein enable workloads 114 to maintain sessions even if an active node 110 fails. In some cases, a failure of a TCP session can result in a large timeout period before the parties to the session perform a handshake to reestablish the session. Likewise, an application session can have a large timeout period before the application attempts to reestablish a new application session. The process of reestablishing a new application session is time consuming and can result in loss of data. Thus, the ability to handle failures of nodes 110, 112 without interrupting network sessions is highly beneficial.

[0025] Referring to Figure 2 An active node 110 can maintain various data structures that describe the state of network interfaces managed by the active node 110. This can include a NAT table 200a that includes a mapping between a private IP address (within the VPC 102) and a public IP address (an address used outside the VPC 102) for each workload 114. The allocation of one or both of the public IP address and the private IP address can be dynamic such that the workloads take up and release allocations as communication requirements dictate.

[0026] For example, the hub node 108 can operate as a dynamic host configuration protocol (DHCP) server. The active node 110 can operate as a dynamic NAT server. Thus, a public IP address leased to the active node 110 by the DHCP server can be dynamically mapped by the active node 110 to a private IP address of a workload 114. The active node 110 can map the public IP address to different workloads 114, for example when a first workload completes a send or a predetermined time period expires. The public IP allocations made by the hub node 108 can be stored in the NAT table 200a of the active node 110 for each allocation of a public IP address such that the public IP address is mapped to the private IP address of the workload 114 to which the active node 110 allocated the public IP address when performing dynamic NAT on behalf of the workload 114.

[0027] In some embodiments, a private IP address can be assigned to a sub-interface of a VPN session that connects active node 110 to hub node 108. For example, hub node 108 can create a sub-interface for a workload 114 that includes the MAC (Media Access Control) address of the workload. This sub-interface can further be assigned one or both of a public IP address and a private IP address assigned to the workload 114. For each sub-interface created on active node 110, hub node 108 can create another sub-interface on the VPN connection between standby node 112 and hub node 108 with the same MAC address and the same public IP address and private IP address. In some embodiments, a sub-interface with the same MAC address is created on standby node 112, and then an attempt is made to obtain one or both of a public IP address and a private IP address for the interface. Hub node 108 will then assign the same public IP address and private IP address for the sub-interface from active node 110 according to DHCP, as the MAC address of standby node 112 is the same as the interface on active node 110.

[0028] Active node 110 will update routing table 204 so that the default route for workload 114 will point to the network interface of active node 110. Routing table 204 can likewise reference active node 110 as the network gateway for VPC 102.

[0029] Active node 110 can also maintain TCP state 202a. TCP state 202a can maintain the state of TCP connections for the public IP address of workload 114. As is known in the art, a TCP connection can implement a state machine that changes according to the interactions between the components connected by the TCP connection. Thus, TCP state 202a can be a state machine for each TCP connection of each workload 114.

[0030] Standby node 112 can maintain its own copy of NAT table 200a and TCP state 202b. Active node 110 can communicate changes to TCP state 202a to standby node 112 as they occur, and standby node 112 can update TCP state 202b with these updates. In some embodiments, the communication of updates to TCP state is performed by active node 110 and sent through hub node 108. In other cases, the updates are performed through direct communication between nodes 110, 112.

[0031] In addition to sharing updates to the NAT tables 200a and TCP state 202a, the nodes 110, 112 can also communicate with each other to facilitate failure detection of the active node 110. This communication can be performed using the same connection used to share updates to the NAT tables 200a and TCP state 202a, and can be either a direct connection within the VPC 102 or by way of the hub node 108. This communication can include "still alive" messages sent from the active node 110 to the standby node 112 at predetermined time intervals (e.g., 100 ms to 2 seconds). Thus, the standby node 112 can detect a failure of the active node 110 in response to failing to receive a still alive message within a threshold period of time from the last received still alive message. In other embodiments, the standby node 112 periodically sends (e.g., every 100 ms to 2 seconds) a query to the active node 110 and detects a failure of the active node 110 in response to failing to receive a response to the query within a threshold period of time from the sending of the query.

[0032] Referring to Figure 3 Still referring to Figure 2 The active node 110 and standby node 112 can implement the illustrated method 300. The method 300 can include maintaining 302 consistency between the NAT tables 200a, 200b and between the TCP state 202a, 202b. As described above, this can include sending updates from the active node 110 to the standby node 112 as the NAT tables 200a and TCP state 202a are changed. These updates can be sent directly or by way of the hub node 108. The updates can include adding and deleting corresponding entries in the NAT tables 200b as entries are created and deleted in the NAT tables 200a. The updates can also include creating and deleting state machines for TCP connections as TCP connections are created and ended on the active node 110. Step 302 can further include creating and deleting sub-interfaces of the workloads 114 on the standby node 112 as corresponding sub-interfaces are created and deleted on the active node.

[0033] The method 300 can include monitoring 304, by the standby node 112, the status of the active node 110. This can include monitoring for still alive messages sent by the active node 110. This can additionally or alternatively include monitoring for responses to queries sent by the standby node 112.

[0034] The method 300 can include detecting 306, by the standby node 112, a failure of the active node 110. As described above, this can include failing to receive a still alive message within a threshold period of time from a previous still alive message or failing to receive a response to a query within a threshold period of time from the sending of the query.

[0035] If a failure is detected 306, the method 300 can include updating 308 the routing table 204 to replace the reference to the active node 110 with a reference to the standby node 112. In particular, this can include referencing the standby node 112, e.g., the private IP address of the standby node 112, as the default gateway for the VPC 102.

[0036] The standby node 112, which is now the active node for the VPC 102, will then process 310 traffic received from the workloads 114 and from the external network 106 according to the copy of the NAT table 200b and TCP state 202b. In particular, the standby node 112 can perform the functions attributed herein to the active node 110 when operating as a network gateway, including performing NAT, managing TCP state machines, and any other functions attributed herein to the active node 110.

[0037] Note that there can be some dropped packets during the transition from the active node 110 to the standby node 112. However, the TCP protocol provides for retransmission of dropped packets. Thus, the TCP sessions remain intact and do not need to be reestablished. Likewise, any application sessions can continue to operate uninterrupted because the same sub-interfaces are available for each workload 114 on the standby node 112. There is also no interruption because the NAT table 200b remains unchanged so that applications configured to communicate with the public IP address of the workload do not need to obtain a new address and establish new application and TCP sessions. In some embodiments, after the standby node 112 becomes the active node, it can also function as a NAT server for the workloads of the VPC 102.

[0038] As noted above, a sub-interface for the VPN connection between the node 110, 112 and the hub node 108 can be created for each workload 114, such that for each sub-interface created on the VPN connection between the active node 110 and the hub node 108, a corresponding sub-interface is created on the VPN connection between the standby node 112 and the hub node 108 with the same public IP address and private IP address and MAC address. Thus, the step 310 can include, for each workload 114, sending traffic (e.g., TCP packets) through the sub-interface of the standby node 112 with the same public IP address and private IP address and MAC address as the sub-interface of the active node 110 previously used by each workload. Thus, the delay caused by creating a new sub-interface is avoided in the event of a failure.

[0039] As a result of the standby node 112 becoming the new default gateway and as a result of the MAC address and private IP address of the workloads 114 remaining unchanged, a change in the routing of the workloads 114 traffic can occur: traffic received by the standby node 112 referencing the MAC address or private IP address of the workloads 114 will be routed through the appropriate sub-interface associated with that MAC address and private IP address.

[0040] In some embodiments, if the active node 110 resumes operation after a failure, the active node 110 can operate as a standby node, i.e., as described above with respect to the standby node 112, receiving the NAT table 200b, TCP state 202b, and / or duplication information for the duplicated sub-interfaces on its VPN connection with the hub node 108. Once this information is current with respect to the standby node 112, the active node 110 can again become active, and the standby node 112 will again act as a standby node.

[0041] Figures 1 to 3 Embodiments are shown as being implemented in the cloud computing platform 104. This approach can also be implemented by any computing node, including a front end device connected such that it can operate as a hub node with respect to the spoke nodes as described above.

[0042] Figure 4 A configuration is shown in which the active node 110 and the standby node 112 are not connected by the hub node 108. The nodes 110, 112 can be executed within the VPC 102 or on separate computing devices of the front end network. In the illustrated configuration, the active node 110 and the standby node 112 are assigned a static pool of IP addresses, and the active node 110 acts as a DHCP server for the workloads 114 and as a NAT server.

[0043] In the illustrated embodiments, each node 110, 112 includes a control plane 400 that can implement logic for performing the respective node 110, 112 functionality as an active node 110 and a standby node 112, respectively, as described herein. The control plane can act as a DHCP and NAT server with respect to the workloads 114 connected to the external network 106 through the active node 110 as long as the node 110, 112 is active.

[0044] Each node 110, 112 can include or access a database 402. The databases 402 can be synchronized such that the database 402 of the standby node 112 is updated to be the same as the database 402 of the active node 110. For example, the databases 402 can be REDIS databases configured to be synchronized with each other.

[0045] The active node 110 can create a NAT table, such as a Secure NAT (SNAT) table, that maps private addresses to MAC addresses of workloads 114 and maps private addresses assigned to workloads 114 to public addresses assigned to the workloads 114. The SNAT mappings can also be recorded in a kernel IP table of the computing device (real or virtual) that executes the active node 110. As noted above, a static pool 408 of IP addresses can be managed by the active node 110 such that after a first workload assigned a public IP address and / or a private IP address completes a task or a lease on the public IP address and / or the private IP address expires, the public IP address and / or the private IP address is returned to the pool 408 and subsequently assigned to a second workload 114.

[0046] The nodes 110, 112 can further include a forwarding information base (FIB) 406 or other data structure that defines routes for the nodes 110, 112 to forward data packets received by the nodes 110, 112. In particular, the FIB 406 can define what output port to output a data packet received on a particular input port. Thus, the FIB 406 can be configured to route data packets addressed to external IP addresses to the external network 106 and to route received data packets addressed to public IP addresses to private IP addresses of workloads 114 to which the public IP addresses are assigned in the SNAT table 404.

[0047] The SNAT table 404, the FIB 406, and other information such as TCP state information of the active node 110 can be written to a database 402 of the active node 110. This database 402 can then be synchronized with a database 402 of the standby node 112. The standby node 112 can then populate the SNAT table 404 and the FIB 406 from the database 402 in preparation for a failure of the active node 110.

[0048] When a particular node 110, 112 is the active node, incoming input traffic 410 is received, translated according to the SNAT table, and then output to an egress as defined in the FIB 406 or to a kernel of the computing device (real or virtual) that executes the node 110, 112 as output traffic 412.

[0049] Referring to Figure 5 , the illustrated method 500 can be performed with the system shown in Figure 4 . The method 500 can be performed by the active node 110 except where actions are attributed to the standby node 112.

[0050] The method 500 can include assigning 502 an IP address to each workload 114 from a pool of static IPs. This can be performed according to DHCP or other IP configuration protocol. Step 502 can further include making an entry in the SNAT table 404. The method 500 further includes writing 504 the entry to the SNAT table 404 in the synchronization database 402. Thus, the data in the database 402 will be replicated to the database 402 in the standby node 112.

[0051] For each workload 114 assigned an IP address at step 502, the active node can further create 506 a sub-interface for the workload 114 that is assigned a static IP (e.g., a static public IP address) and references the MAC address of the workload 114. Thus, traffic to and from the workload 114 can be routed by the active node 110 through the sub-interface. A corresponding sub-interface can also be created on the standby node 112 that references the public IP address assigned to the workload 114 and the MAC address of the workload 114. A private IP address for the workload 114 can also be associated with the sub-interfaces on the nodes 110, 112.

[0052] The inverse of steps 504 and 506 are also performed: as a workload 114 relinquishes a private IP address and / or a public IP address, the corresponding entry in the SNAT table 404 can be deleted and the sub-interface for the workload 114 can likewise be deleted. The corresponding SNAT table entry and sub-interface on the standby node 112 can likewise be deleted to maintain consistency. These updates can be communicated by way of updating the database 402 of the active node 110, thereby updating the database 402 of the standby node 112 to indicate the deleted information.

[0053] The method 500 can further include monitoring 508 the status of the active node 110 and detecting 510 a failure of the active node 110. This can be performed with periodic keep-alive messages or queries as described above with respect to steps 304 and 306 of method 300.

[0054] When a failure is detected 510, traffic can be routed 512 to the standby node 112 instead of the active node 110. Changing the routing can be accomplished by changing the routing tables 204 in the VPC 102 that includes the nodes 110, 112. Changing the routing can include configuring the workloads 114 to utilize the standby node 112 as a default gateway.

[0055] The standby node 112 can then process traffic according to the SNAT table 404, sub-interfaces, FIB 406, TCP state, or other data received from the active node 110 prior to the failure. In particular, the standby node 112 can perform the functions attributed herein to the active node 110 when operating as a network gateway, including performing NAT, managing TCP state machines, routing according to the FIB 406, and any other functions attributed herein to the active node 110.

[0056] For embodiments of the system 100, Figures 1 to 3 the standby node 112 has already configured the SNAT table 404, FIB 406, and some or all of the sub-interfaces of the workloads 114 prior to the failure, and thus can route traffic to and from the workloads 114 without interrupting higher-layer network sessions, such as TCP sessions and application sessions.

[0057] For embodiments of the system 100, Figures 1 to 3 the standby node 112 can operate as an active node, i.e., processing traffic according to the SNAT table 404, FIB, and / or sub-interfaces received from the active node 110. Figure 4 and Figure 5 the methods can be implemented in the cloud computing platform 104 or in front-end devices, such that each node 110, 112 is executed on a different computing device. The workloads 114 can be executed on the same front-end devices as the nodes 110, 112 or on different front-end devices.

[0058] For embodiments of the system 100, Figures 1 to 3 if the active node 110 resumes operation after the failure, the active node 110 can operate as a standby node, i.e., receiving duplicate information for the SNAT table 404, FIB, and / or sub-interfaces from the standby node 112. Once this information is current with respect to the standby node 112, and the corresponding sub-interfaces are created on the active node 110, the active node 110 can again become active, and the standby node 112 will again operate as a standby node.

[0059] Figure 6 A method 600 is shown that can be used to perform failover between the active node 110 and the standby node 112 without a synchronized database 402 in each node 110, 112.

[0060] In method 600, the active node 110 and the standby node 112 establish a connection 602 between them. In the illustrated embodiment, this is a User Datagram Protocol (UDP) connection. The active node 110 then notifies the standby node 112 604 via this connection. This notification may include information sufficient to cause the standby node 112 to recreate the sub-interface of the workload 114 created on the active node 110. The notification may include information such as a private IP address, a public IP address mapped to a public IP address in the SNAT table, and the MAC address of the workload 114. Therefore, the standby node 112 will create a sub-interface with the private IP address, public IP address, and MAC address indicated in the notification.

[0061] The notification may also include, for example, notifications that an interface has been deleted or an SNAT table entry has been deleted due to the workload completing a network session or otherwise relinquishing a private IP address and / or a public IP address. Therefore, standby node 112 will delete the interface referenced in the notification and / or update the SNAT table to delete the entry referenced in the notification.

[0062] The method 600 may further include monitoring the status of the active node 110 (606) and detecting failures of the active node 110 (608). This can be performed using periodic still-alive messages or queries, as described above with respect to steps 304 and 306 of method 300.

[0063] When failure 608 is detected, traffic can be routed from 610 to standby node 112 instead of the active node. This route change can be achieved by modifying routing table 204 in VPC 102, which includes nodes 110 and 112. The route change may include configuring workload 114 to utilize standby node 112 as the default gateway.

[0064] Then, the standby node 112 can process the 612 traffic based on the SNAT table 404, FIB 406, TCP state, and / or sub-interface received from the active node 110. In particular, the standby node 112 can perform the functions attributed herein to the active node 110 when operating as a network gateway, including performing NAT, managing the TCP state machine, routing according to FIB 406, and any other functions attributed herein to the active node 110.

[0065] As for Figures 1 to 3 Implementation examples, Figure 6 The method can be implemented in the cloud computing platform 104 or the front-end device, so that each node 110, 112 executes on a different computing device. The workload 114 can be executed on the same front-end device as the nodes 110, 112 or on a different front-end device.

[0066] As forFigures 1 to 3 In embodiments of the above, if the active node 110 recovers operation after a failure, the active node 110 can operate as a standby node, i.e. receive the replicated information of the SNAT table 404, FIB and / or sub-interfaces from the standby node 112. Once this information is current with respect to the standby node 112, and the corresponding sub-interfaces are created on the active node 110, the active node 110 can again become active, and the standby node 112 will again operate as a standby node.

[0067] Figure 7 is a block diagram illustrating an example computing device 700 that can be used to implement the systems and methods disclosed herein. In particular, the nodes 108, 110, 112 according to any of the embodiments described above can have some or all of the attributes of the computing device 700. Likewise, a cloud computing platform can be composed of devices having some or all of the attributes of the computing device 709.

[0068] The computing device 700 can be used to execute various programs, such as those discussed herein. The computing device 700 can operate as a server, a client, or any other computing entity. The computing device can perform various monitoring functions as discussed herein, and can execute one or more applications, which can be the applications described herein. The computing device can be a computer, a notebook computer, a server computer, a handheld computer, a tablet computer, etc.

[0069] The computing device 700 includes one or more processors 702, one or more memory devices 704, one or more interfaces 706, one or more mass storage devices 708, one or more input / output (I / O) devices 710, and a display device 730, all of which are coupled to a bus 712. The processor 702 includes one or more processors or controllers that execute instructions stored in the memory device 704 and / or the mass storage device 708. The processor 702 can also include various types of computer-readable media, such as cache memory.

[0070] The memory device 704 includes various computer-readable media, such as volatile memory (e.g., random access memory (RAM) 714) and / or non-volatile memory (e.g., read-only memory (ROM) 716). The memory device 704 can also include rewritable ROM, such as flash memory.

[0071] The mass storage device 708 includes various computer-readable media, such as magnetic tapes, magnetic disks, optical disks, solid state memory (e.g., Flash memory), and so forth. As Figure 7As shown, a particular mass storage device is a hard disk drive 724. Various drives can also be included in the mass storage 708 to enable reading from and / or writing to various computer- readable media. The mass storage 708 includes removable media 726 and / or non-removable media.

[0072] The I / O devices 710 include various devices that allow input and output of data and / or other information to and from the computing device 700. Exemplary I / O devices 710 include a cursor control device, a keyboard, a keypad, a microphone, a display or other display device, a speaker, a printer, a network interface card, a modem, a camera, a CCD or other image capture device, etc.

[0073] The display device 730 includes any type of device capable of displaying information to one or more users of the computing device 700. Examples of display devices 730 include a monitor, a display terminal, a video projection device, etc.

[0074] The interfaces 706 include various interfaces that allow the computing device 700 to interact with other systems, devices, or computing environments. Exemplary interfaces 706 include any number of different network interfaces 720, such as interfaces to local area networks (LAN), wide area networks (WAN), the Internet, and the like. Other interfaces include a user interface 718 and a peripheral device interface 722. The interfaces 706 can also include one or more user interface elements 718. The interfaces 706 can also include one or more peripheral interfaces, such as interfaces for printers, pointing devices (mice, trackpads, etc.), keyboards, etc.

[0075] The bus 712 allows the processor 702, the memory device 704, the interfaces 706, the mass storage device 708, and the I / O devices 710 to communicate with one another, and with other devices or components coupled to the bus 712. The bus 712 represents one or more of several types of bus structures, such as a system bus, a PCI bus, an IEEE 1394 bus, a USB bus, etc.

[0076] For purposes of illustration, programs and other executable program components are shown herein as discrete blocks, although it is understood that such programs and components can reside at various times in different storage components of the computing device 700, and are executed by processor 702. Alternatively, the systems and procedures described herein can be implemented in hardware, or a combination of hardware, software, and / or firmware. For example, one or more application specific integrated circuits (ASICs) can be programmed to carry out one or more systems and procedures described herein.

Claims

1. A method for performing network address translation failover, comprising: providing a plurality of workloads, the workloads running in a computing environment, the computing environment comprising a plurality of computing devices, each of the plurality of computing devices comprising a processing device and a memory device; providing a first node running in the computing environment, the first node programmed to act as a first gateway between the computing environment and an external network by performing NAT, the computing environment causing the plurality of workloads to communicate with the external network through the first node; providing a second node running in the computing environment, the second node programmed to act as a second gateway between the computing environment and the external network by performing NAT; configuring the second node to mirror a NAT state of the first node; detecting, by the second node, a failure of the first node; creating a first interface to the plurality of workloads on the first node and a second interface to the plurality of workloads on the second node, the second interface being identical to the first interface; and in response to detecting the failure of the first node, performing the following by the second node: configuring the computing environment to cause the plurality of workloads to communicate with the external network through the second node using the second interface, the second interface being created prior to the failure of the first node; and performing NAT according to the NAT state of the first node, wherein the first interface has a media access code address, MAC address, of the associated plurality of workloads and the second interface has the MAC address of the associated plurality of workloads. the computing environment defines a routing table; and 2. The method of claim 1, wherein, configuring the computing environment to cause the plurality of workloads to be programmed to communicate with the external network through the second node comprises replacing references to the first node in the routing table with references to the second node. the NAT state is a NAT table comprising mappings between private internet protocol, private IP, addresses of the plurality of workloads and public IP addresses of the plurality of workloads.

3. The method of claim 1, wherein, the first interface is a sub-interface connected to a first virtual private network, VPN, connection and the second interface is a sub-interface connected to a second VPN connection.

4. The method of claim 1, wherein, the first node is connected to a hub node through a first VPN connection, the hub node providing connectivity between the first node and the external network; and 5. The method of claim 4, wherein, the second node is connected to the hub node through the second VPN connection, the hub node providing connectivity between the second node and the external network. the computing environment is a cloud computing environment and the first and second nodes run within a virtual private cloud, VPC, in the cloud computing environment.

6. The method of claim 5, wherein, 7. The method of claim 6, further comprising: maintaining a protocol state machine for the plurality of workloads on the first node; copying the protocol state machine to the second node; and ​ ​ In response to detecting the failure of the first node, performing, by the second node: continuing, by the second node, to route traffic for the plurality of workloads in accordance with the protocol state machines.

8. The method of claim 7, wherein, Each of the protocol state machines is a Transmission Control Protocol state machine, i.e., a TCP state machine.

9. The method of claim 8, further comprising configuring the computing environment such that the plurality of workloads communicate with the external network through the second node without invoking the plurality of workloads to create new TCP sessions.

10. The method of claim 1, further comprising configuring the computing environment such that the plurality of workloads communicate with the external network through the second node without invoking the plurality of workloads to create new application sessions.

11. The method of claim 1, further comprising: maintaining, by the first node, a first database comprising the NAT state; maintaining, by the second node, a second database; and synchronizing, by the first node and the second node, the first database with the second database.

12. A method for performing Network Address Translation failover, i.e., NAT failover, comprising: running a plurality of workloads in a computing environment; running a first node in the computing environment, the first node connected to the plurality of workloads and managing network communications between the plurality of workloads and an external network external to the computing environment; generating, by the first node, a first network interface for the plurality of workloads to use for communicating with the external network; generating, by a second node running in the computing environment, a second network interface, the second network interface used by the plurality of workloads and having the same private address, public address, and Media Access Code address, i.e., MAC address, as the first network interface; detecting, by the second node, a failure of the first node, the second network interface created prior to the failure of the first node; and in response to detecting the failure of the first node, performing, by the second node: configuring the computing environment such that the plurality of workloads communicate with the external network through the second network interface and the second node.

13. The method of claim 12, further comprising: performing, by the first node, NAT using a first NAT table that maps private addresses of the plurality of workloads used within the computing environment to public addresses used in the external network; maintaining, by the second node, a second NAT table that is the same as the first NAT table; and in response to detecting the failure of the first node, performing, by the second node, NAT using the second NAT table. the first network interface is a sub-interface of a first Virtual Private Network connection, i.e., VPN connection, to a hub node that connects the first node to the external network; and the second network interface is a sub-interface of a second VPN connection to a hub node that connects the second node to the external network. ​ 14. The method of claim 12, wherein, ​ ​ 15. The method of claim 14, further comprising: managing, by the hub node, network address translation (NAT) by creating a first NAT table on the first node that maps private addresses of the plurality of workloads used within the computing environment to public addresses used in the external network; and creating, by the hub node, a second NAT table on the second node that is identical to the first NAT table.

16. The method of claim 12, wherein, The computing environment is a cloud computing platform.

17. The method of claim 16, wherein, The first node and the second node run within a virtual private cloud (VPC) within the cloud computing platform.

18. The method of claim 16, wherein, The first node and the second node run on different computing devices that are coupled to the same local network. The first node and the second node run on different computing devices that are coupled to the same local network.

Citation Information

Patent Citations

  • High availability and failover

    US20160210209A1

  • Systems and methods for network address translation

    US20180034769A1