Subject: [v6ops] question about initial connections to DNS servers in draft-ietf-v6ops-happy-eyeballs-05

From: Tassos Chatzithomaoglou <[email-masked]>
Date: Tue, 22 Nov 2011 14:01:52 +0200

I'm looking at draft-ietf-v6ops-happy-eyeballs-05 and the following diagrams:

            DNS Server                  Client                  Server
                |                          |                       |
          1.    |<--www.example.com A?-----|                       |
          2.    |<--www.example.com AAAA?--|                       |
          3.    |---192.0.2.1------------->|                       |
          4.    |---2001:db8::1----------->|                       |
          5.    |                          |                       |
          6.    |                          |==TCP SYN, IPv6===>X   |
          7.    |                          |--TCP SYN, IPv4------->|
          8.    |                          |<-TCP SYN+ACK, IPv4----|
          9.    |                          |--TCP ACK, IPv4------->|
         10.    |                          |==TCP SYN, IPv6===>X   |

                Figure 2: Happy Eyeballs flow 1, IPv6 broken

            DNS Server                  Client                  Server
                |                          |                       |
          1.    |<--www.example.com A?-----|                       |
          2.    |<--www.example.com AAAA?--|                       |
          3.    |---192.0.2.1------------->|                       |
          4.    |---2001:db8::1----------->|                       |
          5.    |                          |                       |
          6.    |                          |==TCP SYN, IPv6=======>|
          7.    |                          |--TCP SYN, IPv4------->|
          8.    |                          |<=TCP SYN+ACK, IPv6====|
          9.    |                          |<-TCP SYN+ACK, IPv4----|
         10.    |                          |==TCP ACK, IPv6=======>|
         11.    |                          |--TCP ACK, IPv4------->|
         12.    |                          |--TCP RST, IPv4------->|

                Figure 3: Happy Eyeballs flow 2, IPv6 working

Although steps after 6 are described inside the text, i couldn't get a clear indication about steps 1-4 and most notably about 1-2.
I had a quick look at RFC4472, RFC3484 and draft-ietf-6man-rfc3484-revise-05, but i'm still a little bit confused.

If IPv6 is preferred over IPv4, do we assume the A query (over IPv6 transport) will happen before the AAAA query (over IPv6 transport)?
Do we also assume that the client will have IPv6 connectivity to the IPv6 DNS server?

What i'm actually asking for are details about the steps before HE kicks in dual-stack hosts, when both IPv4/IPv6 DNS servers are available to the client.
Is it like below?

A query to IPv6 DNS server
AAAA query to IPv6 DNS server
A query to IPv4 DNS server
AAAA query to IPv4 DNS server

Do these or some of these happen in parallel, or is the IPv4 DNS server asked only if the IPv6 DNS server doesn't respond?

-- 
Tassos

---

From: Philip Homburg <[email-masked]>
Date: Tue, 22 Nov 2011 18:18:59 +0100

In your letter dated Tue, 22 Nov 2011 14:01:52 +0200 you wrote:
>Although steps after 6 are described inside the text, i couldn't get a clear i
>ndication about steps 1-4 and most notably about 1-2.
>If IPv6 is preferred over IPv4, do we assume the A query (over IPv6 transport)
> will happen before the AAAA query (over IPv6 transport)?
>What i'm actually asking for are details about the steps before HE kicks in du
>al-stack hosts, when both IPv4/IPv6 DNS servers are available to the client.
>Is it like below?
>
>Do these or some of these happen in parallel, or is the IPv4 DNS server asked 
>only if the IPv6 DNS server doesn't respond?

DNS is not the problem Happy Eyeballs tries to solve. As you are obviously
aware of, DNS queries and DNS transport are independent. This means that if
you configure a broken DNS resolver, then typically you will find out quickly
because things stop working or become slow. This is to a very large extent 
independent of whether any AAAA records exist or not. There are stories
about home routers mangling AAAA records, but it is either not common or
it otherwise does not cause major problems.

So we can safely assume that any user who has IPv6 enabled has a working 
DNS setup that can handle AAAA queries. What we don't know is whether the
IPv6 connection actually works. And that is where Happy Eyeballs comes in.

---

From: Tassos Chatzithomaoglou <[email-masked]>
Date: Tue, 22 Nov 2011 21:32:44 +0200

Philip, i was actually trying to find out what happens before HE kicks in (that's for an 
implementation we are trying in-home).
This isn't necessarily related to the draft, although i would like to know why in the 
diagrams the A query goes before the AAAA query.
Anyway, thanks for the clarification about the assumption of a working DNS server.

--
Tassos

---

From: Simon Perreault <[email-masked]>
Date: Tue, 22 Nov 2011 14:43:12 -0500

Tassos Chatzithomaoglou wrote, on 11/22/2011 02:32 PM:
> i would like to know why
> in the diagrams the A query goes before the AAAA query.

It doesn't really matter which one goes first. The intention is for them to go
out simultaneously. Since perfect simultaneity is impossible, one of them has to
go first.

Simon
-- 
DTN made easy, lean, and smart --> http://postellation.viagenie.ca
NAT64/DNS64 open-source        --> http://ecdysis.viagenie.ca
STUN/TURN server               --> http://numb.viagenie.ca