navbarPDF
Strip_TechNotes

How NAT Works

Document ID: 6450


/images/flash.gifThis document contains Flash animation


Contents

Introduction
Prerequisites
      Requirements
      Components Used
      Conventions
Behind the Mask
Dynamic NAT and Overloading Examples
      Flash Animation: Dynamic NAT
Security and Administration
Multi-Homing
Related Information

Introduction

If you are reading this, you are most likely connected to the Internet and there's a very good chance that you are using Network Address Translation (NAT) right now!

The Internet has grown larger than anyone ever imagined it could be. Although the exact size is unknown, the current estimate is that there are about 100 million hosts and over 350 million users actively on the Internet. That is more than the entire population of the United States! In fact, the rate of growth has been such that the Internet is effectively doubling in size each year.

So what does the size of the Internet have to do with NAT? Everything! For a computer to communicate with other computers and Web servers on the Internet, it must have an IP address. An IP address (IP stands for Internet Protocol) is a unique 32-bit number that identifies the location of your computer on a network. Basically it works just like your street address: a way to find out exactly where you are and deliver information to you.

When IP addressing first came out, everyone thought that there were plenty of addresses to cover any need. Theoretically, you could have 4,294,967,296 unique addresses (232). The actual number of available addresses is smaller (somewhere between 3.2 and 3.3 billion) because of the way that the addresses are separated into Classes and the need to set aside some of the addresses for multicasting, testing or other specific uses.

With the explosion of the Internet and the increase in home networks and business networks, the number of available IP addresses is simply not enough. The obvious solution is to redesign the address format to allow for more possible addresses. This is being developed (IPv6) but will take several years to implement because it requires modification of the entire infrastructure of the Internet.

The NAT router translates traffic coming into and leaving the private network:

nat-router.jpg

This is where NAT (RFC 1631 leavingcisco.com) comes to the rescue. Basically, Network Address Translation allows a single device, such as a router, to act as agent between the Internet (or "public network") and a local (or "private") network. This means that only a single unique IP address is required to represent an entire group of computers to anything outside their network.

The shortage of IP addresses is only one reason to use NAT. Two other good reasons are:

You will learn more about how NAT can benefit you, but first, let us take a closer look at NAT and what it can do…

Prerequisites

Requirements

Readers of this document should be knowledgeable of the following:

Components Used

This document is not restricted to specific software and hardware versions.

Conventions

Refer to Cisco Technical Tips Conventions for more information on document conventions.

Behind the Mask

NAT is like the receptionist in a large office. Let's say you have left instructions with the receptionist not to forward any calls to you unless you request it. Later on, you call a potential client and leave a message for them to call you back. You tell the receptionist that you are expecting a call from this client and to put them through.

The client calls the main number to your office, which is the only number the client knows. When the client tells the receptionist who they are looking for, the receptionist checks a lookup table that matches up the person's name and extension. The receptionist knows that you requested this call, therefore the receptionist forwards the caller to your extension.

Developed by Cisco, Network Address Translation is used by a device (firewall, router or computer) that sits between an internal network and the rest of the world. NAT has many forms and can work in several ways:

The internal network is usually a LAN (Local Area Network), commonly referred to as the stub domain. A stub domain is a LAN that uses IP addresses internally. Most of the network traffic in a stub domain is local, it doesn't travel off the internal network. A stub domain can include both registered and unregistered IP addresses. Of course, any computers that use unregistered IP addresses must use Network Address Translation to communicate with the rest of the world.

NAT can be configured in various ways. In the example below the NAT router is configured to translate unregistered IP addresses (inside local addresses) that reside on the private (inside) network to registered IP addresses. This happens whenever a device on the inside with an unregistered address needs to communicate with the public (outside) network.

For more information on the order in which transactions are processed using NAT, refer to NAT Order of Operation.

NAT overloading utilizes a feature of the TCP/IP protocol stack, multiplexing, that allows a computer to maintain several concurrent connections with a remote computer(s) using different TCP or UDP ports. An IP packet has a header that contains the following information:

The addresses specify the two machines at each end while the port numbers ensure that the connection between the two computers has a unique identifier. The combination of these four numbers defines a single TCP/IP connection. Each port number uses 16 bits, which means that there are a possible 65,536 (216) values. Realistically, since different manufacturers map the ports in slightly different ways, you can expect to have about 4,000 ports available.

Dynamic NAT and Overloading Examples

Flash Animation: Dynamic NAT

Here is how dynamic NAT works:

Go to the /images/flash.gif Dynamic NAT Flash animation and click on one of the green buttons to send a successful packet either to or from the stub domain. Click on one of the red buttons to send a packet that is dropped by the router because of an invalid address.

Here's how overloading works:

Look at the following table to see how the computers on a stub domain might appear to any external networks:

Source Computer

Source Computer's IP Address

Source Computer's Port

NAT Router's IP Address

NAT Router's Assigned Port Number

A

192.168.32.10

400

215.37.32.203

1

B

192.168.32.13

50

215.37.32.203

2

C

192.168.32.15

3750

215.37.32.203

3

D

192.168.32.18

206

215.37.32.203

4

As you can see, the NAT router stores the IP address and port number of each computer in the address translation table. It then replaces the IP address with its own registered IP address and the port number corresponding to the location of the entry for that packet's source computer in the table. So any external network sees the NAT Router's IP address and the port number assigned by the router as the source computer information on each packet.

You can still have some computers on the stub domain that use dedicated IP addresses. You can create an access list of IP addresses that tells the router which computers on the network require NAT. All other IP addresses will pass through untranslated.

The number of simultaneous translations that a router will support is determined mainly by the amount of DRAM (Dynamic Random Access Memory) it has. But since a typical entry in the address translation table only takes about 160 bytes, a router with 4 MB of DRAM could theoretically process 26,214 simultaneous translations! Which is more than enough for most applications.

IANA has actually set aside specific ranges of IP addresses for use as non-routable internal network addresses. These addresses are considered unregistered, ( for more information check out RFC 1918: Address Allocation for Private Internets leavingcisco.com which defines these address ranges) which means that no company or agency can claim ownership of them and use them on public computers. Routers do not forward packets to unregistered addresses since those networks are meant for private use and are not supposed to be advertised to outside world. What this means is that a packet from a computer with an unregistered address could reach a registered destination computer, but the reply would be discarded by the first router it came to.

There is a range for each of the three classes of IP addresses used for networking.

Although each range is in a different class, there is no requirement that you use any particular range for your internal network. It is good practice though because it greatly diminishes the chance of an IP address conflict.

Security and Administration

Implementing dynamic NAT automatically creates a firewall between your internal network and outside networks or the Internet. Dynamic NAT allows only connections that originate inside the stub domain. Essentially, this means that a computer on an external network cannot connect to your computer unless your computer has initiated the contact. So you can browse the Internet and connect to a site, even download a file. But somebody else can't simply latch onto your IP address and use it to connect to a port on your computer.

Static NAT, also called inbound mapping, allows connections initiated by external devices to computers on the stub domain to take place in specific circumstances. For instance, you may wish to map an inside global address to a specific inside local address that is assigned to your Web server.

Static NAT (inbound mapping) allows a computer on the stub domain to maintain a specific address when communicating with devices outside the network:

nat-static.jpg

Some NAT routers provide for extensive filtering and traffic logging. Filtering allows your company to control what type of sites employees visit on the Web, preventing them from viewing questionable material. You can use traffic logging to create a log file of what sites are visited and generate various reports from it.

Network Address Translation is sometimes confused with proxy servers but there are definite differences. NAT is transparent to the source and destination computers. Neither one realizes that it is dealing with a third device. But a proxy server is not transparent. The source computer knows that it is making a request to the proxy server and must be configured to do so. The destination computer thinks that the proxy server IS the source computer and deals with it directly. Also, proxy servers usually work at Layer 4 (Transport) of the OSI Reference Model or higher, while NAT is a Layer 3 (Network) protocol. Working at a higher layer makes proxy servers slower than NAT devices in most cases.

NAT operates at the Network layer (Layer 3) of the OSI Reference Model which makes sense, because this is the layer at which routers work:

nat-osi.jpg

A real benefit of NAT is apparent in network administration. For example, you can move your Web server or FTP server to another host computer without having to worry about broken links. Simply change the inbound mapping with the new inside local address at the router to reflect the new host. You can also make changes to your internal network easily since the only external IP address either belongs to the router or comes from a pool of global addresses.

NAT and DHCP are a natural fit, you can choose a range of unregistered IP addresses for your stub domain and have the DHCP server dole them out as necessary. It also makes it much easier to scale up your network as your needs grow. You don't have to request more IP addresses from IANA. You can just increase the range of available IP addresses configured in DHCP and immediately have room for additional computers on your network.

Multi-Homing

As businesses rely more and more on the Internet, having multiple points of connection to the Internet is fast becoming an integral part of their network strategy. Multiple connections, known as multi-homing, reduces the chance of a potentially catastrophic shutdown if one of the connections should fail.

In addition to maintaining a reliable connection, multi-homing allows a company to perform load-balancing by lowering the number of computers connecting to the Internet through any single connection. Distributing the load through multiple connections optimizes the performance and can significantly decrease wait times.

Multi-homed networks are often connected to several different ISPs (Internet Service Providers). Each ISP assigns an IP address (or range of IP addresses) to the company. Routers use BGP (Border Gateway Protocol), a part of the TCP/IP protocol suite, to route between networks using different protocols. In a multi-homed network, the router utilizes IBGP (Internal Border Gateway Protocol) on the stub domain side and EBGP (External Border Gateway Protocol) to communicate with other routers. When using NAT with multi-homing, the NAT router is configured with multiple pools of inside global addresses allocated by different ISPs. The same inside local address should be mapped to more than one inside global address from the configured pools, depending on the provider through which the traffic gets routed to the destination. This is known as NAT by destination. Refer to NAT - Ability to Use Route Maps with Static Translations for more information.

Multi-homing really makes a difference if one of the connections to an ISP fails. As soon as the router assigned to connect to that ISP determines that the connection is down, it will reroute all data through one of the other routers.

NAT can be used to facilitate scalable routing for mulit-homed multi-provider connectivity.


Related Information


Toolbar


Updated: Jan 24, 2006Document ID: 6450