Re: [rtcweb] Real-time text

<BeckW@telekom.de> Tue, 17 December 2013 13:39 UTC

Return-Path: <BeckW@telekom.de>
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 182331AE17B for <rtcweb@ietfa.amsl.com>; Tue, 17 Dec 2013 05:39:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.787
X-Spam-Level:
X-Spam-Status: No, score=-2.787 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RP_MATCHES_RCVD=-0.538] autolearn=ham
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 Qkv-Vq2SL46S for <rtcweb@ietfa.amsl.com>; Tue, 17 Dec 2013 05:39:17 -0800 (PST)
Received: from tcmail23.telekom.de (tcmail23.telekom.de [80.149.113.243]) by ietfa.amsl.com (Postfix) with ESMTP id B0BCE1AE178 for <rtcweb@ietf.org>; Tue, 17 Dec 2013 05:39:16 -0800 (PST)
Received: from he113657.emea1.cds.t-internal.com ([10.134.99.17]) by tcmail21.telekom.de with ESMTP/TLS/AES128-SHA; 17 Dec 2013 14:39:14 +0100
Received: from HE111644.EMEA1.CDS.T-INTERNAL.COM ([10.134.93.13]) by HE113657.emea1.cds.t-internal.com ([::1]) with mapi; Tue, 17 Dec 2013 14:39:13 +0100
From: BeckW@telekom.de
To: gunnar.hellstrom@omnitor.se, rtcweb@ietf.org
Date: Tue, 17 Dec 2013 14:39:13 +0100
Thread-Topic: [rtcweb] Real-time text
Thread-Index: Ac77EQqrJkSKALFpT62GOBa7GIZpsAAGNwjA
Message-ID: <AAE428925197FE46A5F94ED6643478FEAD23D18B0B@HE111644.EMEA1.CDS.T-INTERNAL.COM>
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>
Accept-Language: de-DE
Content-Language: de-DE
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: de-DE
Content-Type: multipart/alternative; boundary="_000_AAE428925197FE46A5F94ED6643478FEAD23D18B0BHE111644EMEA1_"
MIME-Version: 1.0
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 13:39:21 -0000

If you want to connect an existing T.140 system, you need to build a gateway. Even if the browsers supported RfC 4103, you would still need a gateway in most cases, as few SIP/H.248 RTP endpoints support DTLS / SRTP and bundling.
You can easily define your own protocol between that data channel / T.140 gateway and the browser. Both sides are under your control. You can use an unreliable data channel and define a packet format that includes sequence and ack numbers so you can detect missing or re-ordered packets.  This will require a minor effort in Javascript, but gives you a lot of freedom. If you are not tied to T.140 (eg if you communicate between browsers), you could even transmit handwriting in real-time. I wish we had the same flexibility for video..

Wolfgang Beck



Von: rtcweb [mailto:rtcweb-bounces@ietf.org] Im Auftrag von Gunnar Hellstrom
Gesendet: Dienstag, 17. Dezember 2013 11:16
An: Adam Roach; rtcweb@ietf.org
Betreff: [rtcweb] Real-time text

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