Network Address Translation (NATApp)
Project type: Main
This plugin provides network address translation service to ODL. It installs flow rules in OpenFlow switches with the respective NAT rules.
NATApp consists of various types of NAT implementations, including static NAT, dynamic NAT, and Network Address Port Translation (NAPT) or PAT. The users of this plugin can select the type of NAT implementation and subsequently feed in the floating and private IP addresses.
NAT functionality is one of the basic features available in any enterprise network. Through this, local IP addresses can be translated into global IP addresses and vice versa for Internet connectivity. This is traditionally done by the perimeter router of the firewall in the enterprise network, which is connected to the service provider. In the SDN scenario, this functionality has to be hosted (in the router) as an application on the SDN controller.
NATApp in ODL supports the following NAT scenarios:
- One-to-one NAT (static NAT)
- One-to-many NAT (dynamic NAT)
- NAPT or Port Address Translation (PAT)
- Full cone NAT
- (Address)-restricted-cone NAT
- Port-restricted cone NAT
- NAT loopback (Hair pining)
- Stateful and stateless NAT64 for Address Family Translation (AFT) with IPv6 to IPv4 conversion
The following diagram illustrates how an SDN controller running a NAT application can inject NAT policies to an OpenFlow capable router. (Remember that there are OpenFlow extensions that define any alternation in a packet. NAT is one of the use cases that tells the router how to alter and modify a packet before sending it out.)
The following image illustrates how the NAT plugin communicates with applications and network elements: