[c-nsp] NAT "gaps" - packets not getting translated

Ronan Mullally ronan at iol.ie
Mon Aug 9 11:15:18 EDT 2010


I've been struggling to get my head around this for the past few days
(trying to figure it out on a live box doesn't help).  I suspect I'm
missing something subtle (hopefully not obvious!).

I've got a setup like this:


         <---- VRF 1 ---->
   enduser - router --- router ---+
                                  |     A      B
                                  +-----+ 2811 +------ Internet
                                  +-----+
                                  |     A
   enduser - router --- router ---+
         <---- VRF n ---->

Packets at points A are typically 10.x.y.z, and can (but don't yet)
overlap in different VRFs.

These packets are NATed by the 2811 and have addresses of the form A.B.C.x
at point B.  Each VRF has a single IP address dedicated to it (so VRF 1
would be A.B.C.1, VRF 2 A.B.C.2, etc).

I have the following config on interfaces at A and B:

(A)
interface Port-channel1.1107
 description VRF 2
 mtu 1600
 encapsulation dot1Q 1107
 ip vrf forwarding VRF 2
 ip address 10.35.255.195 255.255.255.240
 ip mtu 1500
 ip nat inside
 ip virtual-reassembly
 standby 2 ip 10.35.255.193
 standby 2 follow vpn-vip
 standby 2 name vrf2-default
 crypto map CPE-vrf2 redundancy vrf2-default
end

(B)
interface Port-channel1.1011
 description Onwards Internet access via Sonicwall
 mtu 1600
 encapsulation dot1Q 1011
 ip address x.x.x.83 255.255.255.248
 ip mtu 1500
 ip nat outside
 ip virtual-reassembly
 standby delay minimum 30 reload 60
 standby 1 ip x.x.x.81
 standby 1 follow vpn-vip
 standby 1 authentication md5 xxxxxxxxxxxxxxxxx
 standby 1 name public-nat

The loopback interface on the 2811 for each VRF looks like:

interface Loopback1107
 description VRF 2 PWAN
 ip vrf forwarding VRF2
 ip address 10.35.255.252 255.255.255.255
 ip nat inside
 ip virtual-reassembly

I'm running BGP within each VRF to distribute routes.

I have the NAT mapping configured with:

 ip nat pool vrf1 A.B.C.1 A.B.C.1 netmask 255.255.255.128
 ip nat pool vrf2 A.B.C.2 A.B.C.2 netmask 255.255.255.128
 ip nat inside source list vrf1 pool vrf1 mapping-id 10 vrf VRF1 overload
 ip nat inside source list vrf2 pool vrf2 mapping-id 10 vrf VRF2 overload

(I've tried route-maps instead of source lists but it's made no
difference)

Most traffic works fine, however I'm seeing a steady stream of leaked
packets with internal source addresses, often ICMP traffic from loopback
interfaces on routers downstream within the various VRFs:

 10.0.0.49.1822 > x.x.x.x.21: S 1651477420:1651477420(0) win 65535 <mss 1360,nop,nop,sackOK>
 10.0.0.4 > x.x.x.x.49: ICMP time exceeded in-transit, length 36
 10.0.0.49.1822 > x.x.x.x.21: . ack 3704911765 win 65535

 (I can reproduce this at will using FTP connections)

 16:05:00.338256 IP 10.35.255.0.49154 > x.x.x.130.53: 55382+ A? <hostname>. (35)
 16:05:01.273139 IP 10.35.255.10.49154 > x.x.x.130.53: 19873+ A? <hostname>. (37)
 16:05:02.415973 IP 10.35.255.201 > x.x.x.130: ICMP time exceeded in-transit, length 36
 16:05:02.946458 IP 10.35.255.201 > x.x.x.130: ICMP time exceeded in-transit, length 36
 16:05:16.299198 IP 10.35.255.12.49154 > x.x.x.53: 19709+ A? <hostname>. (40)
 16:05:17.038419 IP 10.35.255.10.49154 > x.x.x.53: 35638+ A? <hostname>. (37)
 16:05:17.295820 IP 10.35.255.12.49154 > x.x.x.53: 19709+ A? <hostname>. (40)

 (it also happens regularly, but not always for DNS lookups)

After several days of head scratching I'm at a loss.  Does anybody have
any ideas?


-Ronan


More information about the cisco-nsp mailing list