Subject: Re: [v6ops] rfc8305 and apple iOS

From: Yannis Nikolopoulos <[email-masked]>
Date: Mon, 1 Mar 2021 18:10:26 +0200

Hello David,

In our case, the request for the AAAA is sent first, followed by the 
request for the A record and the AAAA response is received first, 
followed by the A response.  There is no reordering and "resolution 
Delay" does not really apply. Still, the client (Safari) waits for both 
the AAAA and the A responses before attempting a connection.

Yannis

On 3/1/21 2:48 AM, David Schinazi wrote:
> Hi Yannis,
>
> Safari uses Apple's Network.framework under the covers, which fully 
> supports RFC 8305.
> Note that it also supports the "Resolution Delay" as described in 
> Section 3, so if the A
> record is received before the AAAA record, Safari will wait up to 50ms 
> for the AAAA record
> before sending its first SYN.
>
> David
>
> On Sat, Feb 27, 2021 at 10:00 AM Ted Lemon <[email-masked] 
> <mailto:[email-masked]>> wrote:
>
>     Okay, that’s the information I was looking for. I don’t know the
>     answer. My point was that how a particular application behaves
>     isn’t really embedded in the operating system. It would be
>     interesting to see if the different APIs all behave the same.
>
>>     On Feb 27, 2021, at 12:42, Yannis Nikolopoulos <[email-masked]
>>     <mailto:[email-masked]>> wrote:
>>
>>      Hi,
>>
>>     I'm not sure, but the setup is an iphone 11 connected (via USB)
>>     to a macbook laptop, where tcpdump traces are taken from the
>>     iphone's 4g radio (attached to the laptop as a remote virtual
>>     interface). So, the client is Safari 14 and I'm guessing the web
>>     api is used
>>
>>     On 27/2/21 7:23 PM, Ted Lemon wrote:
>>>     Do you know which api the client uses?
>>>
>>>>     On Feb 27, 2021, at 12:17, Yannis Nikolopoulos
>>>>     <[email-masked]> <mailto:[email-masked]> wrote:
>>>>
>>>>      Hello,
>>>>
>>>>     It's been a while, but I was under the impression that Apple's
>>>>     iOS honors rfc8305, section 3:
>>>>
>>>>     "When a client has both IPv4 and IPv6 connectivity and is trying to
>>>>         establish a connection with a named host, it needs to send out both
>>>>         AAAA and A DNS queries.  Both queries SHOULD be made as soon after
>>>>         one another as possible, with the AAAA query made first and
>>>>         immediately followed by the A query.
>>>>
>>>>         Implementations SHOULD NOT wait for both families of answers to
>>>>         return before attempting connection establishment"
>>>>
>>>>     I was running some tests on an iphone 11 w/ safari and realized that the client waits for both DNS replies before sending the
>>>>     first SYN packet (got several captures). Has anybody got any insights on this?
>>>>
>>>>     Yannis
>>>>     _______________________________________________
>>>>     v6ops mailing list
>>>>     [email-masked] <mailto:[email-masked]>
>>>>     https://www.ietf.org/mailman/listinfo/v6ops
>>>>     <https://www.ietf.org/mailman/listinfo/v6ops>
>>
>     _______________________________________________
>     v6ops mailing list
>     [email-masked] <mailto:[email-masked]>
>     https://www.ietf.org/mailman/listinfo/v6ops
>     <https://www.ietf.org/mailman/listinfo/v6ops>
>

-- 
Yannis Nikolopoulos		OTE S.A
e-mail: [email-masked]	IP Network Planning & Engineering
tel: +302106116293
----------------------------------------------------------------------------

---

From: David Schinazi <[email-masked]>
Date: Tue, 2 Mar 2021 19:55:38 -0800

Hi Yannis,

That's surprising. Can I ask you to file a bug at <
https://bugreport.apple.com/> and attach the pcap there?

Thanks,
David

On Mon, Mar 1, 2021 at 8:10 AM Yannis Nikolopoulos <[email-masked]> wrote:

> request for the A record and the AAAA response is received first, followed
> by the A response.  There is no reordering and "resolution Delay" does not
> really apply. Still, the client (Safari) waits for both the AAAA and the A
> responses before attempting a connection.
>
> Yannis
>
> Note that it also supports the "Resolution Delay" as described in Section
> 3, so if the A
> record is received before the AAAA record, Safari will wait up to 50ms for
> the AAAA record
> On Sat, Feb 27, 2021 at 10:00 AM Ted Lemon <[email-masked]> wrote:
>
>> Okay, that’s the information I was looking for. I don’t know the answer.
>> My point was that how a particular application behaves isn’t really
>> embedded in the operating system. It would be interesting to see if the
>> different APIs all behave the same.
>>
>> On Feb 27, 2021, at 12:42, Yannis Nikolopoulos <[email-masked]> wrote:
>>
>>  Hi,
>>
>> I'm not sure, but the setup is an iphone 11 connected (via USB) to a
>> macbook laptop, where tcpdump traces are taken from the iphone's 4g radio
>> (attached to the laptop as a remote virtual interface). So, the client is
>> Safari 14 and I'm guessing the web api is used
>>
>> On Feb 27, 2021, at 12:17, Yannis Nikolopoulos <[email-masked]>
>> <[email-masked]> wrote:
>>
>>  Hello,
>>
>> It's been a while, but I was under the impression that Apple's iOS honors
>> rfc8305, section 3:
>>
>> [email-masked]
>> [email-masked]

---

From: Tommy Pauly <[email-masked]>
Date: Wed, 03 Mar 2021 06:07:30 -0800

Yannis, is this on iOS 14? If so, this may indeed be expected if the query is also sending out an HTTPS record query (to get service information for QUIC, TLS ECH, etc). When we send out three queries, not just two, we apply the same resolution delay logic as part of a larger happy eyeballs race.

Thanks,
Tommy

> On Mar 2, 2021, at 7:56 PM, David Schinazi <[email-masked]> wrote:
> 
> 
> Hi Yannis,
> 
> That's surprising. Can I ask you to file a bug at <https://bugreport.apple.com/> and attach the pcap there?
> 
> Thanks,
> David
> 
>> In our case, the request for the AAAA is sent first, followed by the request for the A record and the AAAA response is received first, followed by the A response.  There is no reordering and "resolution Delay" does not really apply. Still, the client (Safari) waits for both the AAAA and the A responses before attempting a connection.
>> 
>> Yannis
>> 
>>> Safari uses Apple's Network.framework under the covers, which fully supports RFC 8305.
>>> Note that it also supports the "Resolution Delay" as described in Section 3, so if the A
>>> record is received before the AAAA record, Safari will wait up to 50ms for the AAAA record
>>>> Okay, that’s the information I was looking for. I don’t know the answer. My point was that how a particular application behaves isn’t really embedded in the operating system. It would be interesting to see if the different APIs all behave the same. 
>>>> 
>>>>> I'm not sure, but the setup is an iphone 11 connected (via USB) to a macbook laptop, where tcpdump traces are taken from the iphone's 4g radio (attached to the laptop as a remote virtual interface). So, the client is Safari 14 and I'm guessing the web api is used
>>>>> 
>>>>>>> On Feb 27, 2021, at 12:17, Yannis Nikolopoulos <[email-masked]> wrote:
>>>>>>> 
>>>>>>>  Hello,
>>>>>>> 
>>>>>>> It's been a while, but I was under the impression that Apple's iOS honors rfc8305, section 3:
>>>>>>>