Re: [rtcweb] Relaxing SDP O/A (was RE: Agenda requests for Atlanta meeting)

worley@ariadne.com (Dale R. Worley) Fri, 19 October 2012 17:16 UTC

Return-Path: <worley@shell01.TheWorld.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 06F5621F884B for <rtcweb@ietfa.amsl.com>; Fri, 19 Oct 2012 10:16:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.926
X-Spam-Level:
X-Spam-Status: No, score=-2.926 tagged_above=-999 required=5 tests=[AWL=0.054, BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1, RCVD_IN_SORBS_WEB=0.619]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id f21aaUcQcofJ for <rtcweb@ietfa.amsl.com>; Fri, 19 Oct 2012 10:16:11 -0700 (PDT)
Received: from TheWorld.com (pcls2.std.com [192.74.137.142]) by ietfa.amsl.com (Postfix) with ESMTP id E321721F87AA for <rtcweb@ietf.org>; Fri, 19 Oct 2012 10:16:10 -0700 (PDT)
Received: from shell.TheWorld.com (svani@shell01.theworld.com [192.74.137.71]) by TheWorld.com (8.14.5/8.14.5) with ESMTP id q9JHFAmD016490 for <rtcweb@ietf.org>; Fri, 19 Oct 2012 13:15:12 -0400
Received: from shell01.TheWorld.com (localhost.theworld.com [127.0.0.1]) by shell.TheWorld.com (8.13.6/8.12.8) with ESMTP id q9JHFAbi4544354 for <rtcweb@ietf.org>; Fri, 19 Oct 2012 13:15:10 -0400 (EDT)
Received: (from worley@localhost) by shell01.TheWorld.com (8.13.6/8.13.6/Submit) id q9JHF95I4900050; Fri, 19 Oct 2012 13:15:09 -0400 (EDT)
Date: Fri, 19 Oct 2012 13:15:09 -0400
Message-Id: <201210191715.q9JHF95I4900050@shell01.TheWorld.com>
From: worley@ariadne.com
Sender: worley@ariadne.com
To: rtcweb@ietf.org
In-reply-to: <5080F509.5020102@ericsson.com> (stefan.lk.hakansson@ericsson.com)
Subject: Re: [rtcweb] Relaxing SDP O/A (was RE: Agenda requests for Atlanta meeting)
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 19 Oct 2012 17:16:12 -0000

[re-sent with the correct From address]

> From: Stefan Hakansson LK <stefan.lk.hakansson@ericsson.com>
> 
> One discussion I think we've not had yet is the granularity the API 
> could report "can't use this SDP blob" on. Say that a new offer (in on 
> ongoing sessions) was received indicating the addition of two audio and 
> two video tracks (from Alice to Bob). What if Bob's browser could decode 
> both audio tracks but has resources to handle only one of the video 
> tracks, should it be able to tell so (perhaps with the result that two 
> audio and one video track was added)? Or should the update of the 
> session just fail?

Within the use case of a WebRTC server/SIP gateway, whenever the
WebRTC client requests an update of SDP, the SIP far end UA can reject
the update.  (In regard to current practice, most of the time a UA
will accept the part of the SDP that it can and make the rest
inactive, but some transcoding SIP B2BUAs will fix a codec early in
the dialog and refuse any SDP changes after that.  In addition, some
UAs do not support UPDATE at all.)

The SIP gateway needs to be able to report this failure to the WebRTC
client API in a usable way, and the reporting has to be asynchronous
to the SDP update request.  By the rules of SIP, the session state
reverts to the previous session state, but it would be a reasonable
architecture if the gateway was required to execute additional WebRTC
actions to achieve that effect.  (However, the WebRTC client must be
forbidden from rejecting those actions!)

In theory, the reestablishment of the previous SDP state could require
renegotiating ICE (and SRTP keys?), but in practice, that would
require excessive overhead, I think.

Ideally, this does not require the code in the JSEP application to
know specifically that the remote end is a SIP gateway, because we
don't want the WebRTC client applications to have to be specially
coded to support SIP gateways (or any other particular type of WebRTC
server).

Given that these things need to be supported, it is easy for the SIP
gateway to interwork with a WebRTC architecture that allows SDP
updates in states where the SIP signaling does not:  If the SIP
gateway receives a WebRTC SDP update in a state where an update is not
permitted in SIP, it can instead send an update rejection to the
WebRTC client.  This allows the WebRTC offer/answer structure to be
more flexible than the SIP offer/answer structure without hindering
interworking (other than that sometimes WebRTC SDP updates fail).

Dale