Re: [rtcweb] Real-time text

Adam Roach <adam@nostrum.com> Tue, 17 December 2013 14:58 UTC

Return-Path: <adam@nostrum.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 783DB1AE274 for <rtcweb@ietfa.amsl.com>; Tue, 17 Dec 2013 06:58:25 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.035
X-Spam-Level:
X-Spam-Status: No, score=-1.035 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_MISMATCH_COM=0.553, HOST_MISMATCH_NET=0.311, HTML_MESSAGE=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 ScqaDGQI4xJF for <rtcweb@ietfa.amsl.com>; Tue, 17 Dec 2013 06:58:23 -0800 (PST)
Received: from shaman.nostrum.com (nostrum-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:267::2]) by ietfa.amsl.com (Postfix) with ESMTP id E75861AE272 for <rtcweb@ietf.org>; Tue, 17 Dec 2013 06:58:19 -0800 (PST)
Received: from orochi-2.roach.at (99-152-145-110.lightspeed.dllstx.sbcglobal.net [99.152.145.110]) (authenticated bits=0) by shaman.nostrum.com (8.14.3/8.14.3) with ESMTP id rBHEwHuw055877 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Tue, 17 Dec 2013 08:58:18 -0600 (CST) (envelope-from adam@nostrum.com)
Message-ID: <52B06684.3080103@nostrum.com>
Date: Tue, 17 Dec 2013 08:58:12 -0600
From: Adam Roach <adam@nostrum.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Thunderbird/24.1.1
MIME-Version: 1.0
To: Gunnar Hellstrom <gunnar.hellstrom@omnitor.se>, rtcweb@ietf.org
References: <50B87606.5030802@ericsson.com> <50BB22EB.1030803@ericsson.com> <A146C647-C0CB-413C-B7D1-B84FE2FF5041@standardstrack.com> <C5E08FE080ACFD4DAE31E4BDBF944EB113276B4A@xmb-aln-x02.cisco.com> <BLU405-EAS354CC2E5F543EC4B6DD57F393400@phx.gbl> <50BCFCFE.3080104@nostrum.com> <52B0245E.5000003@omnitor.se>
In-Reply-To: <52B0245E.5000003@omnitor.se>
Content-Type: multipart/alternative; boundary="------------080604080504010000070101"
Received-SPF: pass (shaman.nostrum.com: 99.152.145.110 is authenticated by a trusted mechanism)
Subject: Re: [rtcweb] Real-time text
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
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: Tue, 17 Dec 2013 14:58:25 -0000

Unfortunately, I have other obligations that would keep me from doing 
something as rigorous as you describe below at the moment.

However, I'll point out that something like this -- which doesn't even 
go peer-to-peer -- already satisfies all of your requirements except for 
#3 and #6: https://etherpad.mozilla.org/TexVGQxmQJ

I think you can envision how porting a system like this to use 
unreliable datachannels rather than reliable websockets would make it 
trivially possible to address those two requirements, right?

/a

On 12/17/13 04:15, Gunnar Hellstrom wrote:
> I am picking up an old thread about how to do real-time text (RTT) in 
> the WebRTC environment.
> On 2012-12-03 20:26, Adam Roach wrote:
>> We can do RTT right now with data channels. I can hack together a 
>> ridiculously simple example on top of Firefox Nightly build if you 
>> want to see it.
> Yes, I want to accept that offer, thanks.
>
> It would also be good to have a common specification on how to do it.
>
> Here is a set of requirements:
>
>  1. Text shall be delivered in order.
>  2. The presentation protocol elements shall be conveyed to the receiver.
>  3. Transmission problems shall not cause long blocking of
>     transmission for retries, but rather mark the loss and transmit
>     next text sample.
>  4. If there are transmission problems, retries shall continue up to a
>     defined maximum time (e.g. 3 seconds). If unsuccessful, the
>     transmitter should be notified, and the receiver shall be notified
>     at least at next successful transmission to the receiver.
>  5. Duplications shall not appear.
>  6. Gaps appearing because of bad transmission shall be marked in the
>     received text. When T.140 is used, that is done by the UTF-8
>     character "replacement character".
>  7. The source of the transmission shall be conveyed so that it can be
>     displayed together with received text.
>  8. The transmission contents are short time-sampled strings of UTF-8
>     coded characters consisting of text and presentation control
>     codes. (e.g. according to ITU-T T.140)
>  9. The method shall not cause overhead of more than 10 kbit/s (rather
>     much less) when transmitting every 300 ms.
> 10. Transmission shall be performed in time samples of 300 - 700 ms
>     each. 300 ms is preferred if overhead is acceptable.
> 11. It shall be possible to use the transmission for multiparty calls,
>     where text from different sources shall be displayed separate,
>     e.g. as in a multiparty text chat but with real-time display. This
>     can be achieved in three ways:
>
> a.Each transmission has information about the source in a structured way.
>
> b.Each source sets up its own data channel. The source is identified 
> when the channel is set up.
>
> c.Source information is embedded in the text.
>
> I have tried to map these requirements to the rtcweb data channel with 
> the following conclusions:
>
> *RTCDataChannel use for real-time text transmission*
>
> The WebRTC data channel offers suitable types of reliable or 
> partially-reliable channels where retransmissions can be maximised to 
> a time or a number.
>
> The RTCDataChannel type most suited for these requirements seem to be 
> the ordered type with a MaxReTransmit Time=3000, and Protocol= T140 ( 
> T140 needs to be registered with IANA, before that is completed, the 
> experimental versions need to set Label = T140. )
>
> But it is not clear if it provides information about transmission 
> failures to the transmitter or the receiver.
>
> If no error info about loss is provided, then a sequence number needs 
> to be provided with each transmission and an identification of gaps on 
> reception.
>
> The connections can become closed in case of transmission problems. It 
> should then be opened again. In such a procedure, it cannot be known 
> if text was lost or transmitted in the shift between the current and 
> previous channel instance. Therefore it seems that text samples should 
> have sequence numbers, and the receiving application need to check 
> arrived text samples for duplication and loss. In case of duplication, 
> the duplicate shall be discarded. In case of loss, the UTF-8 
> replacement character shall be inserted in the received string.
>
> The transmitter samples the text source for text and transmits every 
> 300 ms, when there is text to transmit.
> The receiver checks received text for duplication and gaps and 
> displays text according to T.140 presentation.
>
>
>
> Do you agree in these conclusions?
>
> /Gunnar
>