Re: [Stox] Stox-media: Should XEP-176 translations have Require: ice?

Jonathan Lennox <jonathan@vidyo.com> Wed, 26 March 2014 15:50 UTC

Return-Path: <jonathan@vidyo.com>
X-Original-To: stox@ietfa.amsl.com
Delivered-To: stox@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6D4EC1A02D8 for <stox@ietfa.amsl.com>; Wed, 26 Mar 2014 08:50:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.13
X-Spam-Level:
X-Spam-Status: No, score=-1.13 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_SORBS_WEB=0.77, SPF_PASS=-0.001] autolearn=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 ctRXTNkcniV4 for <stox@ietfa.amsl.com>; Wed, 26 Mar 2014 08:50:23 -0700 (PDT)
Received: from server209.appriver.com (server209e.appriver.com [8.31.233.120]) by ietfa.amsl.com (Postfix) with ESMTP id B90501A018F for <stox@ietf.org>; Wed, 26 Mar 2014 08:50:22 -0700 (PDT)
X-Note-AR-ScanTimeLocal: 3/26/2014 11:50:19 AM
X-Policy: GLOBAL - vidyo.com
X-Policy: GLOBAL - vidyo.com
X-Policy: GLOBAL - vidyo.com
X-Policy: GLOBAL - vidyo.com
X-Primary: jonathan@vidyo.com
X-Note: This Email was scanned by AppRiver SecureTide
X-Virus-Scan: V-
X-Note-SnifferID: 0
X-Note: TCH-CT/SI:0-310/SG:5 3/26/2014 11:50:02 AM
X-GBUdb-Analysis: 0, 162.209.16.213, Ugly c=0.938978 p=-0.982565 Source White
X-Signature-Violations: 0-0-0-21904-c
X-Note-419: 15.6005 ms. Fail:1 Chk:1342 of 1342 total
X-Note: SCH-CT/SI:1-1342/SG:1 3/26/2014 11:50:12 AM
X-Note: Spam Tests Failed:
X-Country-Path: ->UNITED STATES->LOCAL
X-Note-Sending-IP: 162.209.16.213
X-Note-Reverse-DNS: mail2.vidyo.com
X-Note-Return-Path: jonathan@vidyo.com
X-Note: User Rule Hits:
X-Note: Global Rule Hits: G327 G328 G329 G330 G334 G335 G445
X-Note: Encrypt Rule Hits:
X-Note: Mail Class: VALID
X-Note: Headers Injected
Received: from [162.209.16.213] (HELO mail.vidyo.com) by server209.appriver.com (CommuniGate Pro SMTP 6.0.8) with ESMTPS id 83345406; Wed, 26 Mar 2014 11:50:18 -0400
Received: from 492133-EXCH2.vidyo.com ([fe80::50:56ff:fe85:6b62]) by 492132-EXCH1.vidyo.com ([fe80::50:56ff:fe85:4f77%13]) with mapi id 14.03.0146.000; Wed, 26 Mar 2014 10:50:17 -0500
From: Jonathan Lennox <jonathan@vidyo.com>
To: Peter Saint-Andre <stpeter@stpeter.im>
Thread-Topic: [Stox] Stox-media: Should XEP-176 translations have Require: ice?
Thread-Index: AQHPDWCXO0GcUwCdhEOXXqfhFzsiY5rqFr0AgAgyOQCAAFmKAIAAOFCAgAAHbICAAEVzgIABJ4sA
Date: Wed, 26 Mar 2014 15:50:16 +0000
Message-ID: <E7E5D371-5B96-4D60-8C72-BF7DCA477465@vidyo.com>
References: <26E25338-948C-43FA-A0AE-880BD1CB49B0@vidyo.com> <532A645A.3080605@stpeter.im> <F3A5A36B-978D-4B50-8E24-A4D4AA77D370@ag-projects.com> <E95AAC63-26BF-48A9-A2D5-BEBB88B92567@vidyo.com> <5331BED1.3070202@jitsi.org> <CF55AE22-BC8C-41D2-ACDF-F36CB845A356@vidyo.com> <5331FF4D.8010900@stpeter.im>
In-Reply-To: <5331FF4D.8010900@stpeter.im>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [160.79.219.114]
Content-Type: multipart/alternative; boundary="_000_E7E5D3715B964D608C72BF7DCA477465vidyocom_"
MIME-Version: 1.0
Archived-At: http://mailarchive.ietf.org/arch/msg/stox/VxLKq6JavE0HSk51CVpIfrkUkKU
Cc: "stox@ietf.org" <stox@ietf.org>, Emil Ivov <emcho@jitsi.org>, Saúl Ibarra Corretgé <saul@ag-projects.com>
Subject: Re: [Stox] Stox-media: Should XEP-176 translations have Require: ice?
X-BeenThere: stox@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: SIP-TO-XMPP Working Group discussion list <stox.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/stox>, <mailto:stox-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/stox/>
List-Post: <mailto:stox@ietf.org>
List-Help: <mailto:stox-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/stox>, <mailto:stox-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 26 Mar 2014 15:50:25 -0000

On Mar 25, 2014, at 6:12 PM, Peter Saint-Andre <stpeter@stpeter.im<mailto:stpeter@stpeter.im>> wrote:

On 3/25/14, 12:03 PM, Jonathan Lennox wrote:

On Mar 25, 2014, at 1:37 PM, Emil Ivov <emcho@jitsi.org<mailto:emcho@jitsi.org>> wrote:

On 25.03.14, 15:15, Jonathan Lennox wrote:

On Mar 25, 2014, at 4:55 AM, Saúl Ibarra Corretgé
<saul@ag-projects.com<mailto:saul@ag-projects.com>> wrote:


It occurred to me that SIP has a way of saying "do ICE, or
fail the call": putting a "Require: ice" SIP option tag
(from RFC 5768) in the SIP INVITE.

Should we recommend this?  It clearly has the right
semantics, and will prevent interop failure when a non-ICE
SIP endpoint answers a XEP-176 Jingle call.

Theoretically that makes sense.

Agreed. Maybe a gateway could do ICE on behalf of the non-ICE
capable endpoint, so can we say this is implementation specific
and thus add a MAY to it?

Right, of course.  I was talking about how you’d want to handle a
signaling-only gateway.

There's also "XEP-0177: Jingle Raw UDP Transport Method" which is
basically equivalent to ICE-less SIP.

That said, I don't mind mandating ICE at all.

Right, but there’s no way for a Jingle client to offer a choice
between XEP-176 and XEP-177, whereas RFC 5245 requires that both ICE
and fallback non-ICE be supported.

Well, an XMPP initiator would not offer the ice-udp transport method if the responder didn't advertise support via XMPP service discovery (i.e., only advertised support for raw-udp). So, in general, fallback shouldn't really be necessary. However, we have defined a protocol flow for it just in case:

http://xmpp.org/extensions/xep-0176.html#fallback

The problem with that flow is the statement "Based on capabilities information, the gateway knows that the SIP endpoint does not support ICE”.  Unfortunately, SIP doesn’t really have any workable way of providing capabilities information, which is why RFC 5245 (and so much of the rest of SIP) is single-exchange fallback.

An alternative flow is possible, where you only send the transport-replace on the Jingle side if the SIP answer indicates no ICE support, and then send a SIP re-INVITE with the addresses in the transport-accept.  It’ll result a fairly substantial post-answer delay before the media will get through, though.

Here’s a sketch:


Romeo                    Gateway                    Juliet
  |                         |                         |
  |   session-initiate      |                         |
  |   (audio definition)    |                         |
  |------------------------>|                         |
  |   ack                   |                         |
  |<------------------------|   SIP INVITE (ICE)      |
  |                         |------------------------>|
  |   transport-replace     |   200 OK (Raw UDP)      |
  |   (Raw UDP)             |<------------------------|
  |<------------------------|                         |
  |   ack                   |                         |
  |------------------------>|                         |
  |   transport-accept      |                         |
  |------------------------>|                         |
  |   ack                   |                         |
  |<------------------------|   SIP INVITE (Raw UDP)  |
  |                         |------------------------>|
  |                         |   200 OK (Raw UDP)      |
  |   session-accept        |<------------------------|
  |<------------------------|                         |
  |   ack                   |                         |
  |------------------------>|                         |
  |                    MEDIA SESSION                  |
  |<=================================================>|
  |                         |                         |



This flow also relies on the SIP side not changing its local IP address and port in response to a re-INVITE with a changed address, or the XMPP side not changing its in response to a transport-replace maintaining raw UDP; otherwise, the gateway can get into an infinite re-INVITE/transport-replace loop.