[c-nsp] ACE & load-balancing of DNS / ALG / inspection
Phil Mayers
p.mayers at imperial.ac.uk
Mon Jun 22 11:32:35 EDT 2009
Phil Mayers wrote:
> All,
>
> We've recently deployed config on our ACE (blades in 6500s) to provide
> resilient DNS.
>
> However, the ACE seems to be doing some kind of DNS inspection, and is
> (incorrectly I think) closing the SLB session the instant a DNS answer
> comes back. This causes problems with clients that make 2 lookups very
> quickly, from the same source port.
>
> i.e. I am seeing:
>
> client sport=5000 dport=53 query id=2346 hostname A
> client sport=5000 dport=53 query id=4646 hostname AAAA
> server dport=5000 sport=53 reply id=2346 A=192.168.x.y
>
> ...and that's it. The 2nd reply is dropped. If the client makes the
> queries "slowly" they work fine:
Just a follow-on.
The specific issue seems to be that the ACE *requires* at least one UDP
reply packet from the server before fully "opening" the UDP session.
Monitoring at the "rserver" end shows for the above:
client sport=5000 dport=53 query id=2346 hostname A
server dport=5000 sport=53 reply id=2346 A=192.168.x.y
i.e. the 2nd *request* is dropped.
Once that 1st reply is sent, you can send as many queries as you want:
client sport=5000 dport=53 query id=2346 hostname A
server dport=5000 sport=53 reply id=2346 A=192.168.x.y
client sport=5000 dport=53 query id=2346 hostname1 A
client sport=5000 dport=53 query id=2346 hostname1 A
client sport=5000 dport=53 query id=2346 hostname1 A
client sport=5000 dport=53 query id=2346 hostname1 A
server dport=5000 sport=53 reply id=2346 A=192.168.x.y
>
> client sport=5000 dport=53 query id=2346 hostname A
> server dport=5000 sport=53 reply id=2346 A=192.168.x.y
> client sport=5000 dport=53 query id=4646 hostname AAAA
> server dport=5000 sport=53 reply id=4646 AAAA=...
>
> Our old DNS servers (via static anycast routes) and a different service
> (via eBGP multipath anycast) don't exhibit the problem, so I'm certain
> it's the ACE.
>
> FYI, this causes problems with the glibc changes present in 2.10 &
> Fedora 11 - the glibc always tries two queries in quick succession for A
> and AAAA records, and the timeouts can destroy kerberos/ldap logins...
>
> I'm aware of the "inspect" commands, but they're off by default and I
> can't "no inspect"; it tells me it's already turned off.
>
> Does anyone know if and how I can persuade the ACE to stop being so
> "clever" and just treat the DNS as "plain old UDP"?
>
> version info is:
>
> Software
> loader: Version 12.2[120]
> system: Version A2(1.1) [build 3.0(0)A2(1.1)
> adbuild_00:25:02-2008/06/05_/auto/adbu-rel3/rel_a2_1_1_throttle/REL_3_0_0_A2_1_1]
> system image file: [LCP] disk0:c6ace-t1k9-mz.A2_1_1.bin
> installed license: ACE-08G-LIC ACE-SEC-LIC-K9
>
> ...and the config we're using is:
>
>
> serverfarm host RECURSIVE-DNS
> transparent
> predictor leastconns
> probe TCP_53
> rserver xxx 53
> inservice
> rserver yyy 53
> inservice
> rserver www 53
> inservice
> rserver zzz 53
> inservice
>
> class-map match-any VIP_SPONCON-DNS
> 2 match virtual-address 192.168.a.b udp eq domain
> 3 match virtual-address 192.168.a.b tcp eq domain
>
> policy-map type loadbalance first-match SLB_RECURSIVE-DNS
> class class-default
> serverfarm RECURSIVE-DNS
>
> policy-map multi-match VIPS_VLANxx
> !.. various config, then
> class VIP_SPONCON-DNS
> loadbalance vip inservice
> loadbalance policy SLB_RECURSIVE-DNS
> loadbalance vip icmp-reply
> loadbalance vip advertise
>
More information about the cisco-nsp
mailing list