IP Library Granted Patent US 10,382,392
Granted Patent B2
US 10,382,392 · App. 15/225,368 · Granted Aug 13, 2019

Systems and methods for network address translation

Inventors: Sudeep Modi (Milpitas, CA); Richard Lane (Mountain View, CA); Ning Song (Milpitas, CA); Mei Yang (Fremont, CA); Gregor Maier (Alameda, CA); Srinivasan Ramasubramanian (Sunnyvale, CA)
Assignee: Big Switch Networks, Inc.
H04L61/256H04L29/08234H04L45/122H04L47/125H04L49/70H04L61/2514H04L61/2532H04L67/1021H04L67/1029H04L67/1034H04L67/1036H04L2012/568
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,382,392
App. No.
15/225,368
Granted
Aug 13, 2019
Kind
B2
Abstract

Methods, systems, and computer programs are presented for distributing network address translation (NAT) operations to a plurality of network devices on a network. One method includes an operation for identifying, by a controller that controls a network fabric, a plurality of switches in the network fabric, each switch having a module for NAT and being configured to forward packets received at the switch. The controller identifies hosts having at least one internal Internet Protocol (IP) address, and for each of the hosts, the controller selects one of the switches from the plurality of switches for performing the NAT for the host. Further, the controller configures the network fabric to cause the selected switch to perform the NAT for the host to enable the host to communicate with an external network. In case of switch failure, the system reallocates NAT loads to other switches for high availability.

Claims (61)

1. A method comprising:

identifying, by a controller that controls a network fabric, a plurality of switches in the network fabric, each switch having a module for network address translation (NAT), each switch being configured for forwarding packets received at the switch;

identifying one or more hosts having at least one internal Internet Protocol (IP) address, and for each of the one or more hosts:

selecting one of the switches from the plurality of switches for performing the NAT for the host, and

configuring, by the controller, the network fabric to cause the selected switch to perform the NAT for the host to enable the host to communicate with an external network;

detecting a new virtual machine connected to the network fabric; and

selecting one of the switches from the plurality of switches for performing the NAT for the new virtual machine, the selecting being based, at least, on a load on each switch for performing the NAT and a distance from the new virtual machine to each of the switches.

2. The method as recited in claim 1 ,

wherein the distance is measured as a number of network hops between the new virtual machine and the switch; and

further comprising configuring, by the controller, the network fabric to cause the selected switch to perform the NAT for the new virtual machine.

3. The method as recited in claim 1 , further comprising:

detecting that a first switch, that is performing the NAT for one or more hosts, is offline;

determining for which hosts the first switch is configured to perform the NAT; and

migrating each of the determined hosts to another switch for performing the NAT.

4. The method as recited in claim 1 , wherein the selecting of one of the switches from the plurality of switches is further based on a distance from the switch to the host.

5. The method as recited in claim 1 , further comprising:

tracking a load on each switch for performing the NAT;

detecting a switch that is overloaded; and

moving, in response to the detecting, one or more hosts from the switch that is overloaded to other switches for performing the NAT on the corresponding hosts.

6. The method as recited in claim 1 , wherein the controller comprises a switch table stored in memory, the switch table comprising switch information comprising a switch identifier, a NAT load on the switch, and a location of the switch.

7. The method as recited in claim 1 , wherein the controller comprises a host table stored in memory, the host table comprising host information comprising a host identifier, a flag indicating if the host is a device or a virtual machine, an identification of the switch performing the NAT for the host, and a location of the host.

8. The method as recited in claim 1 , wherein each switch comprises a control unit program that is in communication with the controller.

9. The method as recited in claim 1 , wherein, when a host is connected to a network device inoperable to perform the NAT, traffic from the host is routed to one of the switches for performing the NAT for the host.

10. The method as recited in claim 1 , wherein the module for NAT performs floating IP NAT and port address translation (PAT) NAT.

11. A non-transitory machine-readable storage medium comprising instructions that, when executed by a machine, cause the machine to perform operations comprising:

identifying, by a controller that controls a network fabric, a plurality of switches in the network fabric, each switch having a module for network address translation (NAT), each switch being configured for forwarding packets received at the switch;

identifying one or more hosts having at least one internal Internet Protocol (IP) address, and for each of the one or more hosts:

selecting one of the switches from the plurality of switches for performing the NAT for the host, and

configuring, by the controller, the network fabric to cause the selected switch to perform the NAT for the host to enable the host to communicate with an external network;

detecting a new virtual machine connected to the network fabric; and

selecting one of the switches from the plurality of switches for performing the NAT for the new virtual machine, the selecting being based, at least, on a load on each switch for performing the NAT and a distance from the new virtual machine to each of the switches.

12. The machine-readable storage medium as recited in claim 11 , wherein

the distance is measured as a number of network hops between the new virtual machine and the switch; and wherein the machine further performs operations comprising:

configuring, by the controller, the network fabric to cause the selected switch to perform the NAT for the new virtual machine.

13. The machine-readable storage medium as recited in claim 11 , wherein the machine further performs operations comprising:

detecting that a first switch, that is performing the NAT for one or more hosts, is offline;

determining for which hosts the first switch is configured to perform the NAT; and

migrating each of the determined hosts to another switch for performing the NAT.

14. The machine-readable storage medium as recited in claim 11 , wherein the selecting of one of the switches from the plurality of switches is further based on a distance from the switch to the host.

15. The machine-readable storage medium as recited in claim 11 , wherein the machine further performs operations comprising:

tracking a load on each switch for performing the NAT;

detecting a switch that is overloaded; and

moving, in response to the detecting, one or more hosts from the switch that is overloaded to other switches for performing the NAT on the corresponding hosts.

16. A controller comprising:

a network interface;

a memory comprising instructions; and

one or more computer processors, wherein the instructions, when executed by the one or more computer processors, cause the one or more computer processors to perform operations comprising:

identifying a plurality of switches in a network fabric, each switch having a module for network address translation (NAT), each switch being configured for forwarding packets received at the switch;

identifying one or more hosts having at least one internal Internet Protocol (IP) address, and for each of the one or more hosts:

selecting one of the switches from the plurality of switches for performing the NAT for the host, and

configuring the network fabric to cause the selected switch to perform the NAT for the host to enable the host to communicate with an external network;

detecting a new virtual machine connected to the network fabric; and

selecting one of the switches from the plurality of switches for performing the NAT for the new virtual machine, the selecting being based on a load on each switch for performing the NAT and a distance from the new virtual machine to each of the switches.

17. The controller as recited in claim 16 , wherein the memory comprises a switch table, the switch table comprising switch information comprising a switch identifier, a NAT load on the switch, and a location of the switch.

18. The controller as recited in claim 16 , wherein the memory comprises a host table, the host table comprising host information comprising a host identifier, a flag indicating if the host is a device or a virtual machine, an identification of the switch performing the NAT for the host, and a location of the host.

19. The controller as recited in claim 16 ,

wherein the distance is measured as a number of network hops between the new virtual machine and the switch; and wherein the instructions further cause the one or more processors to perform operations comprising configuring, by the controller, the network fabric to cause the selected switch to perform the NAT for the virtual machine.

20. The controller as recited in claim 16 , wherein the instructions further cause the one or more processors to perform operations comprising:

detecting that a first switch, that is performing the NAT for one or more hosts, is offline;

determining for which hosts the first switch is configured to perform the NAT; and

migrating each of the determined hosts to another switch for performing the NAT.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2021
From: BIG SWITCH NETWORKS LLC
To: ARISTA NETWORKS, INC.
Reel/Frame 057459/0103 →
CHANGE OF NAME Recorded Jul 6, 2020
From: BIG SWITCH NETWORKS, INC.
To: BIG SWITCH NETWORKS LLC
Reel/Frame 053128/0449 →
RELEASE OF SECURITY INTEREST Recorded Mar 24, 2020
From: SILVER LAKE WATERMAN FUND II, L.P.
To: BIG SWITCH NETWORKS, INC.; BIG SWITCH NETWORKS GC, INC.
Reel/Frame 052218/0557 →
SECURITY INTEREST Recorded Dec 20, 2018
From: BIG SWITCH NETWORKS, INC.; BIG SWITCH NETWORKS GC, INC.
To: SILVER LAKE WATERMAN FUND II, L.P., AS AGENT
Reel/Frame 049146/0615 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2016
From: MODI, SUDEEP; LANE, RICHARD; SONG, NING; YANG, MEI; MAIER, GREGOR; RAMASUBRAMANIAN, SRINIVASAN
To: BIG SWITCH NETWORKS, INC
Reel/Frame 040603/0366 →
Continuity (1)
Related Publication 20180034769A1 · Feb 1, 2018
Cited By (1)
US 12,327,128