Re: [sipcore] Happy Eyeballs for SIP

worley@ariadne.com (Dale R. Worley) Tue, 13 December 2016 17:22 UTC

Return-Path: <worley@alum.mit.edu>
X-Original-To: sipcore@ietfa.amsl.com
Delivered-To: sipcore@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0F99E12958A for <sipcore@ietfa.amsl.com>; Tue, 13 Dec 2016 09:22:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.934
X-Spam-Level:
X-Spam-Status: No, score=-1.934 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FxYXqE2KrpmK for <sipcore@ietfa.amsl.com>; Tue, 13 Dec 2016 09:22:19 -0800 (PST)
Received: from resqmta-ch2-03v.sys.comcast.net (resqmta-ch2-03v.sys.comcast.net [IPv6:2001:558:fe21:29:69:252:207:35]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 67EFF129446 for <sipcore@ietf.org>; Tue, 13 Dec 2016 09:22:19 -0800 (PST)
Received: from resomta-ch2-05v.sys.comcast.net ([69.252.207.101]) by resqmta-ch2-03v.sys.comcast.net with SMTP id GqlgcBJ94MppVGqmQcfYk7; Tue, 13 Dec 2016 17:22:18 +0000
Received: from hobgoblin.ariadne.com ([24.60.114.4]) by resomta-ch2-05v.sys.comcast.net with SMTP id GqmPcu2X3HGXvGqmQcpxv4; Tue, 13 Dec 2016 17:22:18 +0000
Received: from hobgoblin.ariadne.com (hobgoblin.ariadne.com [127.0.0.1]) by hobgoblin.ariadne.com (8.14.7/8.14.7) with ESMTP id uBDHLBXN020240; Tue, 13 Dec 2016 12:21:11 -0500
Received: (from worley@localhost) by hobgoblin.ariadne.com (8.14.7/8.14.7/Submit) id uBDHLB4b020237; Tue, 13 Dec 2016 12:21:11 -0500
X-Authentication-Warning: hobgoblin.ariadne.com: worley set sender to worley@alum.mit.edu using -f
From: worley@ariadne.com
To: "Asveren, Tolga" <tasveren@sonusnet.com>
In-Reply-To: <SN2PR03MB2350C0711DE8F0B8C6EC44DBB29B0@SN2PR03MB2350.namprd03.prod.outlook.com> (tasveren@sonusnet.com)
Sender: worley@ariadne.com
Date: Tue, 13 Dec 2016 12:21:11 -0500
Message-ID: <87shprvj7c.fsf@hobgoblin.ariadne.com>
X-CMAE-Envelope: MS4wfPXWYkWDyqfcJQhWVbFT9u/Xdgbm7NyD6LArP2I2PV7+P0AwRNGIJ1HHZ9OAUR919w2QDCwbKcg2UDXKfDPhQ8Z83Q8QYasIDlQFUt3Y4LSR2FmuiBXk 2qK8bnWKNcbRqDupADqbcToH1dcRiYf6PeIprheenjapx9qrdHSXDoHygM3uhks3WV61q+btyJD7nNy4OspnP/rwvXVsgiaGxNE=
Archived-At: <https://mailarchive.ietf.org/arch/msg/sipcore/Lpb3bT55_aq0bOWqlW1FmfnWquo>
Cc: sipcore@ietf.org
Subject: Re: [sipcore] Happy Eyeballs for SIP
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sipcore/>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 13 Dec 2016 17:22:21 -0000

"Asveren, Tolga" <tasveren@sonusnet.com> writes:
>> From: sipcore [mailto:sipcore-bounces@ietf.org] On Behalf Of Dale R. Worley
>> Sent: Monday, December 12, 2016 7:15 PM
>> To: sipcore@ietf.org
>> Subject: [sipcore] Happy Eyeballs for SIP
>> 
>> This is the start of getting the Happy Eyeballs for SIP work going in the
>> working group.
>> 
>> The authors (Olle Johansson, Gonzalo Salgueiro, Dale Worley) are
>> working with the following strategy (at this time):  The first
>> tranche is the case where (1) alternative addresses are provided by A
>> and AAAA records based on one host name, i.e., we are not considering
>> multiple SRV records, and (2) all of the targets use
>> connection-oriented protocols.
>
> i- Why only A/AAAA records? What about cases where a different SRV
> record is used for each supported address family? AFAIU this type of
> configuration is already mentioned in RFC7984. 

Indeed, that configuration is mentioned in 7984, and was inserted into
7984 because it is such a common configuration.  However, we decided to
not handle SRV in this tranche because a comprehensive approach to SRV
is complicated and nobody has yet proposed a solution that promises to
meet the desiderata, viz.:

- achieve the Happy Eyeballs effect, that is, traffic will be very
  rarely delayed by unreachability of one or more of the targets

- achieve the specified effect of SRV, that is, among the set of targets
  which are reachable, over the long run, the traffic will be
  distributed among them according to the specified priorities and
  weights in the SRV records

> RFC3263 is a bit vague regarding what needs to be done if there are
> multiple SRV records:
>    "If no NAPTR records are found, the client constructs SRV queries for
>    those transport protocols it supports, and does a query for each."
> Does this mean "for all transports for the selected -according to
> priority/weight- SRV Record" or "for all transport/SRV Record pairs".

Well, since the priorities/weights are extracted from the SRV records,
the priorities/weights cannot affect how the SRV records are queried
for.  My interpretation is "for each transport that the client supports
and that is permitted by the URI scheme and the 'transport' option of
the URI (if any), the client constructs an SRV query for the URI scheme,
the transport and the target domain name".  Of course, if there are
multiple SRV records for a scheme/transport/domain name combination, the
single query will return all of them.  Thus, a query for
sip/TCP/example.com would return the two SRV records you quoted:

> I tend to think the former but RFC7984 seems to differ:
> "For example, consider a server with DNS name example.com, with TCP
>    transport specified.  The relevant SRV records for example.com are:
>
>       _sip._tcp.example.com.  300 IN SRV 10 1 5060 sip-1.example.com.
>       _sip._tcp.example.com.  300 IN SRV 20 1 5060 sip-2.example.com.

Once all the SRV records are obtained, the priority/weight processing is
applied to them.

Although it is not specified in RFC 2782 (SRV records), the standard
practice seems to be that all of the SRV records obtained for all of the
protocols are considered as a single set for priority/weight processing,
which generates an ordered list of the target domain names of the SRV
records.  (Of course, in this example, that is not relevant, since both
of the SRV records are for TCP, and so are obtained by one SRV query,
while the UDP SRV query obtains no records.)

>    The processing of [RFC2782] results in this ordered list of target
>    domain names:
>
>       sip-1.example.com
>       sip-2.example.com"

> Then it lists all addresses for both of the SRV Records. Granted, it
> mentions that addresses are not interleaved but nonetheless it assumes
> that a query is performed for both of the SRV Records.

Actually, one query was done, for _sip._tcp.example.com, and it returned
both records.

> I am not sure
> what the right interpretation should be here but it is not
> well-defined to say the least. To me, it seems like RFC7984 should be
> updating RFC3263 normatively in this aspect as well -to promote the
> RFC7984 defined behavior-. And IMHO it would be up to the
> Happy-Eyeballs draft to define how addresses from multiple SRV Records
> should be used. Cases, where a dual-stack entity does not know whether
> IPv4/IPv6 is preferred and multiple SRV records are used for different
> address families on different servers should be covered as well.

Can you give an example where the procedures of RFC 2782 aren't
sufficient to resolve this problem?

> ii- Why only for connection-oriented protocols? I think the generic
> problem happy-eyeballs addresses and what is targeted with
> draft-worley-sip-he-connection-01 are different. The former can be a
> building block for the latter but that shouldn't mean that it should
> be restricted by it IMHO. Is there any technical reason why
> happy-eyeballs is not applicable -by itself- for SIP over UDP?

The *concept* of Happy Eyeballs can, should, and will be applied to UDP,
but the *details* are going to be considerably different from the
details for TCP.  For the first tranche, we are attempting to stay near
what has been done for HTTP, so we are limiting the scope to
connection-oriented protocols.

Dale