← Back to team overview

openstack team mailing list archive

Quantum floating IP SNAT not working

 

Hi,

I have a classic "Provider Network, private networks" as follows :
 - internal network 10.0.0.0/24
- external network 192.168.10.0/24 gw 192.168.1.252 (I know, I have to add a manual route on both gw and network node)
 - br-ex is having 192.168.10.254

I have a floating IP 192.168.10.2 NAT'd to 10.0.0.4 and my external router IP address is 192.168.10.1

For some reason, on br-ex, I see traffic from 10.0.0.4 to 192.168.1.154 (my own computer) with tcpdump : 19:55:58.938524 00:13:8f:51:96:9d > bc:ae:c5:d6:9d:60, ethertype IPv4 (0x0800), length 98: 10.0.0.4 > 192.168.1.154: ICMP echo request, id 62465, seq 1189, length 64

I should at least see a second ICMP request from 192.168.10.2 to 192.168.1.154 (with same seq. number) if L3 agent would work correctly.
DNAT is working correctly : I can ping from 192.168.1.154 to 192.168.10.2.
As a consequence, I can't access Internet from my VMs, but I can reach them thru SSH.

Do you have any idea for the root cause ?
As said, the problem is bounded to a SNAT issue with Quantum L3 agent, as DNAT is working perfectly.

Please find below my iproute2 status, my route configuration, plus iptables -t nat.
sylvain@folsom02:~$ route -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref Use Iface
0.0.0.0         192.168.1.252   0.0.0.0         UG    0 0        0 br-ex
0.0.0.0         172.16.0.2      0.0.0.0         UG    0 0        0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tap2ed3cd8a-03 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 qr-f76e4668-fa
169.254.0.0     0.0.0.0         255.255.0.0     U     1000 0        0 eth0
172.16.0.0      0.0.0.0         255.255.240.0   U     0 0        0 eth0
192.168.1.252   0.0.0.0         255.255.255.255 UH    0 0        0 br-ex
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 qg-f2397006-20
192.168.10.0    0.0.0.0         255.255.255.0   U     0 0        0 br-ex

sylvain@folsom02:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:13:8f:51:96:9d brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:e0:7d:b5:df:ae brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.2/20 brd 172.16.15.255 scope global eth0
    inet6 fe80::2e0:7dff:feb5:dfae/64 scope link
       valid_lft forever preferred_lft forever
6: br-ex: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 00:13:8f:51:96:9d brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.254/24 scope global br-ex
11: br-int: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    link/ether ca:0d:5d:80:15:49 brd ff:ff:ff:ff:ff:ff
12: qr-f76e4668-fa: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether fa:16:3e:4a:82:b6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 brd 10.0.0.255 scope global qr-f76e4668-fa
    inet6 fe80::f816:3eff:fe4a:82b6/64 scope link
       valid_lft forever preferred_lft forever
13: qg-f2397006-20: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether fa:16:3e:e1:95:20 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.1/24 brd 192.168.10.255 scope global qg-f2397006-20
    inet 192.168.10.2/32 brd 192.168.10.2 scope global qg-f2397006-20
    inet6 fe80::f816:3eff:fee1:9520/64 scope link
       valid_lft forever preferred_lft forever
14: tap2ed3cd8a-03: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether fa:16:3e:8f:3c:92 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.2/24 brd 10.0.0.255 scope global tap2ed3cd8a-03
    inet6 fe80::f816:3eff:fe8f:3c92/64 scope link
       valid_lft forever preferred_lft forever
15: br-tun: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    link/ether 4e:46:e7:ec:52:49 brd ff:ff:ff:ff:ff:ff

sylvain@folsom02:~$ sudo iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
quantum-l3-agent-PREROUTING  all  --  0.0.0.0/0 0.0.0.0/0

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
quantum-l3-agent-OUTPUT  all  --  0.0.0.0/0 0.0.0.0/0

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
quantum-l3-agent-POSTROUTING  all  --  0.0.0.0/0 0.0.0.0/0
quantum-postrouting-bottom  all  --  0.0.0.0/0 0.0.0.0/0

Chain quantum-l3-agent-OUTPUT (1 references)
target     prot opt source               destination
DNAT       all  --  0.0.0.0/0            192.168.10.2 to:10.0.0.4

Chain quantum-l3-agent-POSTROUTING (1 references)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ! ctstate DNAT
ACCEPT     all  --  10.0.0.0/24          172.16.0.1

Chain quantum-l3-agent-PREROUTING (1 references)
target     prot opt source               destination
DNAT tcp -- 0.0.0.0/0 169.254.169.254 tcp dpt:80 to:172.16.0.1:8775
DNAT       all  --  0.0.0.0/0            192.168.10.2 to:10.0.0.4

Chain quantum-l3-agent-float-snat (1 references)
target     prot opt source               destination
SNAT       all  --  10.0.0.4             0.0.0.0/0 to:192.168.10.2

Chain quantum-l3-agent-snat (1 references)
target     prot opt source               destination
quantum-l3-agent-float-snat  all  --  0.0.0.0/0 0.0.0.0/0
SNAT       all  --  10.0.0.0/24          0.0.0.0/0 to:192.168.10.1

Chain quantum-postrouting-bottom (1 references)
target     prot opt source               destination
quantum-l3-agent-snat  all  --  0.0.0.0/0            0.0.0.0/0


Thanks for your help,
-Sylvain


Follow ups