Re: [v6ops] Happy Eyeballs and SIP

"Olle E. Johansson" <oej@edvina.net> Tue, 08 March 2011 06:57 UTC

Return-Path: <oej@edvina.net>
X-Original-To: v6ops@core3.amsl.com
Delivered-To: v6ops@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 620843A68C2 for <v6ops@core3.amsl.com>; Mon, 7 Mar 2011 22:57:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.129
X-Spam-Level:
X-Spam-Status: No, score=-2.129 tagged_above=-999 required=5 tests=[AWL=0.120, BAYES_00=-2.599, HELO_EQ_SE=0.35]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UASW4xQAQ3AJ for <v6ops@core3.amsl.com>; Mon, 7 Mar 2011 22:57:37 -0800 (PST)
Received: from ns.webway.se (ns.webway.se [87.96.134.125]) by core3.amsl.com (Postfix) with ESMTP id 5A3473A6832 for <v6ops@ietf.org>; Mon, 7 Mar 2011 22:57:28 -0800 (PST)
Received: from [192.168.40.12] (unknown [192.168.40.12]) by ns.webway.se (Postfix) with ESMTP id 427012845D; Tue, 8 Mar 2011 07:58:31 +0100 (CET)
Mime-Version: 1.0 (Apple Message framework v1082)
Content-Type: text/plain; charset="us-ascii"
From: "Olle E. Johansson" <oej@edvina.net>
In-Reply-To: <168101cbdd21$c137a5e0$43a6f1a0$@com>
Date: Tue, 08 Mar 2011 07:58:30 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <DC5B7D5C-633D-45E1-9F0D-16F13A682259@edvina.net>
References: <83928D99-9809-4BF9-A710-28366AF46BBB@edvina.net> <117401cbdcdd$8c9ccac0$a5d66040$@com> <2E7989D3-B865-4D5A-ACE9-A74567BAD065@edvina.net> <168101cbdd21$c137a5e0$43a6f1a0$@com>
To: Dan Wing <dwing@cisco.com>
X-Mailer: Apple Mail (2.1082)
Cc: v6ops@ietf.org
Subject: Re: [v6ops] Happy Eyeballs and SIP
X-BeenThere: v6ops@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: v6ops discussion list <v6ops.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/v6ops>, <mailto:v6ops-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/v6ops>
List-Post: <mailto:v6ops@ietf.org>
List-Help: <mailto:v6ops-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/v6ops>, <mailto:v6ops-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Mar 2011 06:57:49 -0000

8 mar 2011 kl. 00.45 skrev Dan Wing:

>> -----Original Message-----
>> From: Olle E. Johansson [mailto:oej@edvina.net]
>> Sent: Monday, March 07, 2011 12:06 PM
>> To: Dan Wing
>> Cc: v6ops@ietf.org
>> Subject: Re: [v6ops] Happy Eyeballs and SIP
>> 
>> 
>> 7 mar 2011 kl. 16.37 skrev Dan Wing:
>> 
>>>> -----Original Message-----
>>>> From: v6ops-bounces@ietf.org [mailto:v6ops-bounces@ietf.org] On
>> Behalf
>>>> Of Olle E. Johansson
>>>> Sent: Monday, March 07, 2011 1:40 AM
>>>> To: v6ops@ietf.org
>>>> Subject: [v6ops] Happy Eyeballs and SIP
>>>> 
>>>> Hi!
>>>> 
>>>> Has anyone considered the issues covered in the happy-eyeballs draft
>>>> for SIP?
>>>> 
>>>> A 19 or 32 second time out when placing a call is not a good user
>>>> experience... I think this applies to SIP over TCP, and possibly
>> also
>>>> needs to be handled for UDP.
>>>> I don't see this handled in the draft for IPv6 transition in the
>>>> Session Initiation Protocol (soon-to-be RFC 6157)
>>>> 
>>>> Seems like the scope of the happy eyeballs draft is HTTP, so the
>>>> question is if this should be expanded or if we need other drafts
>> for
>>>> other protocols.
>>> 
>>> ICE (RFC5245) resolves the problem perfectly, and is the plan-of-
>> record for
>>> how to support the transition to IPv6 for SIP
>>> (draft-ietf-sipping-v6-transition).  ICE does connectivity checks, so
>> it
>>> figures out if IPv4 or IPv6 (or UDP, or TCP) is working between two
>> peers,
>>> and uses that path.  ICE can be performed while the phone is ringing,
>> so
>>> does not delay call set up.  ICE was one of the inspirations for
>> Happy
>>> Eyeballs.
>>> 
>>> There is resistance to ICE because of (a) its complexity and (b) a
>>> perception that "IPv6 works fine on my network", which has fostered
>> the
>>> creation of several other solutions, including an idea we nicknamed
>> "Happy
>>> Eardrums", draft-wing-dispatch-v6-migration, which we have since
>> abandoned.
>>> ICE does more, and it does a better job.
>> 
>> Thanks for the feedback.
>> 
>> Please tell me how Ice solves the issue of a phone calling a SIP domain
>> with both A and AAAA records for the first selected host.
>> The proxy or the UA will try to contact first over one connection, time
>> out after T1*64 and then maybe retry.
>> 
>> As far as I know ICE handles media, but not the signalling. But I may
>> be misunderstanding something.
> 
> You're right, ICE is just about media.  I didn't realize you were asking
> about SIP signaling -- most folks don't worry themselves with the SIP
> signaling.
> 
> Yes, we need to do Happy Eyeballs for the SIP signaling.  I have 
> engaged our internal XMPP experts for doing Happy Eyeballs with
> XMPP, which wants to avoid the delay to connect to your instant
> messaging server when you join a new network (e.g., open the 
> laptop).
> 
> I have text which we plan to incorporate into -01 which discusses
> how to do Happy Eyeballs with an SRV service, such as XMPP.  This
> would apply equally to SIP, which also uses SRV (RFC3263).
> 
> Current outline is this:
> 
>    For the purposes of this section, "client" is defined as the
>    entity initiating the connection.
> 
>    For protocols which support DNS SRV[xxxx], the client
>    performs the IN SRV query (e.g. IN SRV
>    _xmpp-client._tcp.example.com) as normal.  The client MUST
>    perform the following steps:
> 
>    1. Sort all SRV records according to priority (lowest
>       priority first)
>    2. Process all of the SRV targets of the same priority with a
>       weight greater than 0:
>    2.1. Perform A/AAAA queries for each SRV target in parallel,
>         as described in [SECTION x.1.]
>    2.2. Connect to the IPv4/IPv6 addresses
>    2.3. If at least one connection succeeds, stop processing
>         SRV records
>    3. If there is no connection, process all of the SRV targets
>       of the same priority with a weight of 0, as per steps 2.1
>       through 2.3 above
>    4. Repeat steps 2.1 through 2.3 for the next priority,
>       until a connection is established or all SRV records
>       have been exhausted
>    5. If there is still no connection, fallback to using
>       the domain (e.g. example.com), following steps 2.1
>       through 2.3 above
> 
>    It is RECOMMENDED, but not required, for the client to
>    cache the winning connection's address information and
>    reuse it on subsequent connections. If a significant
>    network event occurs (e.g. network interface is
>    activated/deactivated, IP address changes), the client MUST
>    forget the cached address information and perform all of
>    the steps from above. The definition of "significant
>    network event" is intentionally vague.
> 
> I believe that's the sort of thing you're looking for?
> 

That's good stuff, Dan. I will look through it and come back after I cleared my thoughts. I've been discussing using SRV for showing my preference of address family, which impacts also single stack clients. Your algorithm seems to work there too. The question in that case is that some UAs fail the connection attempt if they can't find records matching their address family for the top priority SRV records - they do not proceed to the next level.

In SIP we also have UDP, which is a different issue that requires a solution.

If I transmit two UDP messages - one over IPv4 and one over IPv6, hopefully the other side gets both and sees one as a simple retransmit.
The UA will get one or two answers and stick with the one that responded first and just forget the other one. I don't see an issue with this
behaviour from the server side - do you?

Regards,
/O