MPLS/VPN with NAT-PE

From IPFlow Netflow Collector

MPLS/VPN with NAT-PE Example

This is a simple example of MPLS/VPN configuration with NAT-PE for Internet access on Cisco routers (using Dynamips and GNS3).

Author: Christophe Fillot - 07-Nov-2007


Table of contents

Topology

Image:NAT_PE_topo.png


IOS configurations

  • P (http://www.ipflow.utc.fr/configs/NAT_PE/P.cfg)
  • PE1 (http://www.ipflow.utc.fr/configs/NAT_PE/PE1.cfg)
  • PE2 (http://www.ipflow.utc.fr/configs/NAT_PE/PE2.cfg)
  • PE-NAT (http://www.ipflow.utc.fr/configs/NAT_PE/PE-NAT.cfg)
  • Internet (http://www.ipflow.utc.fr/configs/NAT_PE/Internet.cfg)


Dynamips/Dynagen/GNS3 configuration

You can use this configuration file (http://www.ipflow.utc.fr/configs/NAT_PE/nat_pe.net) directly with Dynagen or GNS3. Change the working directory and Cisco IOS image path to match your needs.


Description

PE-NAT provides Internet access (represented by a single router) with NAT for 3 VPNs. P, PE1, PE2 have a classical MPLS/VPN configuration.


Configuration

"ip nat inside" is configured on the mpls core interface:

PE-NAT#sh run int fa 0/0
interface FastEthernet0/0
 description To P
 ip address 10.0.0.2 255.255.255.252
 ip nat inside
 ip virtual-reassembly
 duplex half
 mpls ip
end


"ip nat outside" is configured on the "Internet" interface:

PE-NAT#sh run int fa 1/0
interface FastEthernet1/0
 description To Internet
 ip address 123.0.0.1 255.255.255.252
 ip nat outside
 ip virtual-reassembly
 duplex half
end


Configuration for VRF "VPN1":

ip route vrf VPN1 0.0.0.0 0.0.0.0 FastEthernet1/0 123.0.0.2 global
ip nat pool VPN1_POOL 123.1.0.0 123.1.0.255 prefix-length 24
ip nat inside source list 1 pool VPN1_POOL vrf VPN1 overload
access-list 1 permit 100.10.0.0 0.0.255.255

The default route is required to send packets through the Internet interface, even if it is not in VRF.

The default route is propagated to the other PE with "default-information originate" in BGP:

router bgp 65000
[...]
 address-family ipv4 vrf VPN1
  redistribute connected
  redistribute static
  default-information originate
  no synchronization
 exit-address-family
[...]
!


Verifying operation

200.0.0.1 is a Loopback address configured on "Internet" router to simulate a server on Internet.

PE2#ping vrf VPN1 200.0.0.1 repeat 10          

Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 200.0.0.1, timeout is 2 seconds:
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 8/24/64 ms
PE2#ping vrf VPN2 200.0.0.1 repeat 10

Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 200.0.0.1, timeout is 2 seconds:
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 12/28/56 ms
PE2#ping vrf VPN3 200.0.0.1 repeat 10

Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 200.0.0.1, timeout is 2 seconds:
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 8/34/64 ms


You can examine the translations entries:

PE-NAT#sh ip nat trans
Pro Inside global      Inside local       Outside local      Outside global
icmp 123.1.0.1:84      100.10.0.2:84      200.0.0.1:84       200.0.0.1:84
icmp 123.2.0.1:85      100.20.0.2:85      200.0.0.1:85       200.0.0.1:85
icmp 123.3.0.1:86      100.30.0.2:86      200.0.0.1:86       200.0.0.1:86


You can also display only the entries specific to a given VRF:

PE-NAT#sh ip nat trans vrf VPN1
Pro Inside global      Inside local       Outside local      Outside global
icmp 123.1.0.1:84      100.10.0.2:84      200.0.0.1:84       200.0.0.1:84