Re: [rtcweb] Future requirement: RTC-Web apps must work through interface switching

Randell Jesup <randell-ietf@jesup.org> Mon, 03 October 2011 13:30 UTC

Return-Path: <randell-ietf@jesup.org>
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 7B68B21F8B3C for <rtcweb@ietfa.amsl.com>; Mon, 3 Oct 2011 06:30:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.569
X-Spam-Level:
X-Spam-Status: No, score=-2.569 tagged_above=-999 required=5 tests=[AWL=0.030, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XmqDztbCkui1 for <rtcweb@ietfa.amsl.com>; Mon, 3 Oct 2011 06:30:33 -0700 (PDT)
Received: from r2-chicago.webserversystems.com (r2-chicago.webserversystems.com [173.236.101.58]) by ietfa.amsl.com (Postfix) with ESMTP id 6519721F8B39 for <rtcweb@ietf.org>; Mon, 3 Oct 2011 06:30:33 -0700 (PDT)
Received: from pool-173-49-141-165.phlapa.fios.verizon.net ([173.49.141.165] helo=[192.168.1.12]) by r2-chicago.webserversystems.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from <randell-ietf@jesup.org>) id 1RAieF-00047M-2r for rtcweb@ietf.org; Mon, 03 Oct 2011 08:33:35 -0500
Message-ID: <4E89B8C2.3010608@jesup.org>
Date: Mon, 03 Oct 2011 09:29:38 -0400
From: Randell Jesup <randell-ietf@jesup.org>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0.1) Gecko/20110830 Thunderbird/6.0.1
MIME-Version: 1.0
To: rtcweb@ietf.org
References: <E44893DD4E290745BB608EB23FDDB7620D3782@008-AM1MPN1-043.mgdnok.nokia.com>
In-Reply-To: <E44893DD4E290745BB608EB23FDDB7620D3782@008-AM1MPN1-043.mgdnok.nokia.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: quoted-printable
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - r2-chicago.webserversystems.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - jesup.org
X-Source:
X-Source-Args:
X-Source-Dir:
Subject: Re: [rtcweb] Future requirement: RTC-Web apps must work through interface switching
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: Mon, 03 Oct 2011 13:30:37 -0000

On 10/3/2011 7:58 AM, Markus.Isomaki@nokia.com wrote:
> Hi all,
>
> There is one important requirement, which may not be critical today, but will most likely be in the future.
>
> We can assume RTC-Web to be supported in devices like tablets, pads or smartphones, that people carry around. We can also assume that when such devices are carried around, their point of attachement to the Internet will change, even so that the type of access network will change, typically between something like HSPA/LTE and Wi-Fi. Today this will always mean a change of IP address as well. In the future we may have technologies such as (Proxy)Mobile IP in use that will provide IP address preservation, but we can't really count on that.

If memory serves (and I haven't checked) interface switching is within 
scope from what was discussed at prior IETF meetings, though I don't 
know if it's in any of the current use cases (I think not).  We have not 
discussed any of the specifics of it, however, and should do so, as well 
as decide if it's in-scope for "1.0".  There's certainly a case for it, 
even without mobile devices (switching Wi-Fi hotspots with a laptop, or 
DHCP-caused IP changes).

>
> How does this relate to RTC-Web? Interface switching usually happens at the discretion of the OS or some kind of connection manager. The browser or the web application environment has no control over it. At best it, or the JS application running within, can get some kind of signal of such event happening. For TCP-based client-server things (HTTP, Websocket) it is possible to react to this by re-establishing the lost TCP connections and state on top of them. This is indeed what many (native) apps are able to do today. There can be some smarter ways in the pipeline as well, such as multipath TCP, which would make the process of "transitioning" a TCP connection from one interface/IP to another potentially transparent to the application. But with peer-to-peer and interactive real-time, things get more complicated. It may of course be that the switching happens due to a sudden loss of coverage and is so slow, that voice or video calls are broken anyway. However, in many cases the
>   old interface can be up while the new one is being established, and in principle the total loss of connectivity can be avoided. In such scenarios it would be realistically possible to update the ongoing real-time sessions to a new IP address and port, if there were some kind of end-to-end or server-assisted mechanism for it. Even a cut of 1-2 seconds would not be as bad as a total loss of the session.
>
> What does this mean in terms of requirements?
> - The first-order requirement is that the browser and/or the JS app, whoever needs to act, has to be able to get events of interface switching in the same way as native apps can. If it were only the browser who was required to get them, we could set standards aside, and declare that the browser does this as any other app. But if it is the JS app that needs to do something, then we may need something new as a JS API. I have no clue at the moment if the JS apps can learn about this kind of events. And this is clearly not a RTC-Web specific requirement, but a generic one. I do know that browsers or HTTP libraries can re-send requests etc. based on IP address change, but I don't know what a JS Websocket client can do, if anything.
> - The second requirement is that the media related APIs and transport protocols (RTP) have to be flexible enough, that they can at least be extended to work so that they do not assume that the session is forever bound to a certain IP address/port in either end. How this affects the system depends on what is actually standardized, for instance if the SDP offer/answer model is included or not. But on the generic level it could be something like this:
> 	- If the browser/JS app receives signaling/offer from its peer that peer's RTP/UDP IP address/port has changed, it has to be able to set these through the media API and re-run STUN checks or whatever is required at that point. This has to be work so that the media session can be otherwise continued, after the process is completed.

Effectively, in SIP/SDP terms, it needs to do a re-INVITE with a new c= 
address (and new port).  The added complication is that the signalling 
channel will be affected as well, so the application needs to 
re-establish the signalling channel *then* re-establish the 
peerconnection and "re-INVITE" to re-establish the media streams.

Note that any "custom" signalling someone designs will need to include 
this ability!   (Something they may not realize and may not handle 
properly...)  But that's a different thread/argument.  ;-)

> 	- If the browser/JS app receives an event that its own IP address/port has changed (or is about to change), it has to be able to re-initialize the RTP/UDP accordingly, re-establish its "signaling connection and state" with its webserver, notify the peer about the change, and re-run STUN checks etc. as needed.
>
> This sounds quite complicated so it may be that we don't want to add this as a Day 1 requirement for RTC-Web. But I believe we should try to design the APIs and protocols in such a way that this kind of thing can be added later on. There could be other ways too, like MPRTP (http://datatracker.ietf.org/doc/draft-singh-avtcore-mprtp/), we could look at.
>
> I suppose the less we standardize about the signaling and offer/answer, the easier it might be to support these kinds of things as add-on. But whatever we standardize, please keep the interface and IP address change in mind. The outcome could be that we declare that transport (MPTCP, MPRTP) has to deal with it, but eventually I think this will have to work one way or the other.
>


-- 
Randell Jesup
randell-ietf@jesup.org