Re: [MMUSIC] Open source SIP/WebRTC real-time text integration

Christer Holmberg <christer.holmberg@ericsson.com> Wed, 18 December 2019 13:58 UTC

Return-Path: <christer.holmberg@ericsson.com>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 588E012004C for <mmusic@ietfa.amsl.com>; Wed, 18 Dec 2019 05:58:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.002
X-Spam-Level:
X-Spam-Status: No, score=-2.002 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=ericsson.com
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 71z1mmMOwaY1 for <mmusic@ietfa.amsl.com>; Wed, 18 Dec 2019 05:58:12 -0800 (PST)
Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on0619.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::619]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6F05E120164 for <mmusic@ietf.org>; Wed, 18 Dec 2019 05:58:08 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hsE3J229IPhRQUi/3T865wW0Rn8KMlA2ftJzxiyeGDufgC77YVs/KqLjs/+v+iQhHd3TXtZeCVlMU2ICz5J0u2hdAUUubodncqMxHcBrpd3giaSxkpS/+zoGLsF4l7Cvzj67+VKA8aIGpgimix9PXKoUiVuGtfWhr86C22lq8lpWlYe6P4MXJFg/MeyF/cfbPmnyvMwpTRNFbuTRHERgl1HN2uXuXer9/CuHLSrnQLNq/FzpdA1djxA9Q7gKNmZ1ixTCHL+pmVfn7VvnmUW0vhJxRTvtCDG790CCyW5yGeWEscczCCo97ggbjdkU+lVCPQmv4P+Jq+0Ds06LBTIzvQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DCmkRdkogo6V/eftvr9qV2MI0Xi/9Z/iu1Hs4ljdBGE=; b=kqEDotAw9FkwZvyTQ9dYdnIqCJRw1ELhOAlR29w9rdW77ZSUKlriuQ+Wr98H6tn7c0lSZLdin13GzyB9M0B/WIyKxhzjMRMAl0ClAI18MbxoX2Up3vorZqW7GHWvag3tYi2s4eDf2oIWQ0paQsmSl34M4rrQBHEdzgujg1SBeJsWlXLlLK2JL76yLFvRN5YZ4D9nx/Fo4sIFdqGd6lrLVMDCVHdA5OD9O1+ikFXBk6HDUpmAPlG8weAHwWrxu8GPEydvFcqAwyfKgDFze/OuUkRXpSIVr6ybpk1b3W+v0BIUMrqiZ/pe44/nOH2o8EobAaXi17z8BVdOzPlW9xJwlQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DCmkRdkogo6V/eftvr9qV2MI0Xi/9Z/iu1Hs4ljdBGE=; b=SvZjpP+u8JbgWEHvM16qgXbSBDKYHVeZTAF+m5po9sUizlatU+QPyHVKX4gu0Vjxklsi+v7MNBrZXBh0ujqi7mFFbPPyRPXhKUKVdA0yWjPsC1iSFVxDepwqleQkxVEtQyvomv6oiCQFWCJmvlg5FzlZ6TdBiWmxcxZfmk8G2xI=
Received: from DB6PR0701MB2421.eurprd07.prod.outlook.com (10.168.73.16) by DB6PR0701MB2901.eurprd07.prod.outlook.com (10.168.83.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.11; Wed, 18 Dec 2019 13:58:06 +0000
Received: from DB6PR0701MB2421.eurprd07.prod.outlook.com ([fe80::39bd:a590:dcd9:201e]) by DB6PR0701MB2421.eurprd07.prod.outlook.com ([fe80::39bd:a590:dcd9:201e%10]) with mapi id 15.20.2559.012; Wed, 18 Dec 2019 13:58:06 +0000
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: Lorenzo Miniero <lorenzo@meetecho.com>, "mmusic@ietf.org" <mmusic@ietf.org>
Thread-Topic: [MMUSIC] Open source SIP/WebRTC real-time text integration
Thread-Index: AQHVtZMMZSSpRqWEGUi1cJqJjySxP6fADLeA
Date: Wed, 18 Dec 2019 13:58:06 +0000
Message-ID: <14EEE460-EA5C-436F-B987-003106DB01FA@ericsson.com>
References: <20191218120451.7dd7093b@lminiero>
In-Reply-To: <20191218120451.7dd7093b@lminiero>
Accept-Language: en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/10.1e.0.191013
authentication-results: spf=none (sender IP is ) smtp.mailfrom=christer.holmberg@ericsson.com;
x-originating-ip: [89.166.49.243]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 950f1c4b-fedb-4b59-9fc0-08d783c24ea2
x-ms-traffictypediagnostic: DB6PR0701MB2901:
x-microsoft-antispam-prvs: <DB6PR0701MB2901C50D7EB769FA6B69CF6593530@DB6PR0701MB2901.eurprd07.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0255DF69B9
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(366004)(136003)(396003)(39860400002)(376002)(346002)(189003)(199004)(53754006)(51444003)(66476007)(66446008)(64756008)(66556008)(66946007)(36756003)(6512007)(8676002)(5660300002)(316002)(86362001)(6506007)(2616005)(44832011)(6486002)(2906002)(33656002)(478600001)(66574012)(81156014)(110136005)(186003)(26005)(81166006)(91956017)(966005)(76116006)(71200400001)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0701MB2901; H:DB6PR0701MB2421.eurprd07.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: Xv3Scmp/F39k8tOXfFoCvB9cD6GqZVqjVko2tUimfM26i3PiCTTaFakZs8YXd8xmhhp/B2zPz7STVBOUOaaMI7n/p9uFe2MklIexaaTAI8C+Q18ij167YCnSbv48oVGYtAssGsMQAzIVjIOpFnbu1+6sg6DZQhhiQ6NF/b/LKyTlQjWrzVD7BYAc3ucq0tLBE4dGdcRF4ItclWd97AwS8uJPCUQbeAV+rvsR/32SaqrfO+fpuWNwngKPeBHVCjNvfJFQx1Qpb9dh8ohimKxcDO81bX0KHbE+zpUh6it82C1MGaIyZ6eQtpEZNQbZaLWUXXGXd3apwwm2qzHNZYpMrrQVNxBeQJi6bsQZUH4Yp1/Gh78L+q309bMEjlYvImVqDARzk39wTtKQyh0KlslC+bmsxrlvCajoEz9pQTiAVKC8kONS8AjxRfdzLcMcVu7O7tpwZRhM2/o3t7K8l1QcFIpRYd9SuqLCXFtkYOQOEAGNew1JaaPGVd8uU0ReymFum+IhgGOuBsvdCwbFuASy2XPFEPikTnxIRdRxGq2JXf2iA5DYv5Ljt6hd0Ej+lHYl
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="utf-8"
Content-ID: <1F566BF76B18EE4BAFA6386CB0834FA9@eurprd07.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: ericsson.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 950f1c4b-fedb-4b59-9fc0-08d783c24ea2
X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Dec 2019 13:58:06.1349 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: GzhKr281AEK+VdpjM5UP0mQP347BVKQa30rGI8GAcDKBqS7GqDf+4pmCrV1BZtVPEnx8HEFU6bIwpip7j/iqQc8iKr8rzWY0iKhbDsHJRp4=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0701MB2901
Archived-At: <https://mailarchive.ietf.org/arch/msg/mmusic/UBVZxNsfGVuQKW821hOTUIz75Ts>
Subject: Re: [MMUSIC] Open source SIP/WebRTC real-time text integration
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <mmusic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mmusic>, <mailto:mmusic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/mmusic/>
List-Post: <mailto:mmusic@ietf.org>
List-Help: <mailto:mmusic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mmusic>, <mailto:mmusic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Dec 2019 13:58:15 -0000

Hi Lorenzo,

It's super nice to hear that you are implementing RTT over data channel! Feel free to keep us up to data as the work progress.

As far as browsers rejecting non-supported attributes is concerned, I think that is an issue that should be raised in W3C. As a temporary solution, could the JS app simply not remove them before passing the SDP to the browser?

Regards,

Christer



On 18/12/2019, 13.05, "mmusic on behalf of Lorenzo Miniero" <mmusic-bounces@ietf.org on behalf of lorenzo@meetecho.com> wrote:

    Hi all,
    
    as I anticipated in another post, I've recently started working with
    real-time text: mostly for fun (I've always been intrigued by the
    protocol), but also because I wanted to get it working with WebRTC,
    especially in light of its importance for the upcoming NG emergency
    services. Considering Christer's recent efforts on standardizing how to
    use RTT on WebRTC, I thought I'd share this here, so that it can
    hopefully provide a testing framework: it is not complete, and doesn't
    adhere 100% to the specification yet (more on that in a minute), but I
    think it might be helpful as a running code reference anyway.
    
    Specifically, I've integrated support for real-time text in our open
    source Janus WebRTC server. Janus is a modular component, and one of
    the plugins implements a SIP gateway: this is where I implemented
    support for T.140 and red. The way it works is "straightforward":
    
    	1. Any time we get an incoming SIP call on the SIP side with an
    	m=text m-line, we translate that to an m=application, so that
    	we can negotiate data channels on the WebRTC side.
    
    	2. At the same time, if the WebRTC peer negotiates an
    	m=application line, we turn that into an m=text section to
    	negotiate real-time text on the SIP side.
    
    	3. Then, if we receive T.140 packets from SIP, we relay them
    	via data channels using binary data (we use an Uint8Array in
    	the web application); if we receive RED packets, we parse it in
    	order to get the T.140 blocks we need, and relay those via data
    	channels (since the draft explains redundancy is not needed,
    	thanks to SCTP).
    
    	4. When we get T.140 blocks via data channels (which again the
    	web application sends as an Uint8Array), we either send them as
    	they are in RTP packets (if RED was not negotiated), or we
    	create a RED RTP packet with redundant info on previously sent
    	packets (if RED was negotiated instead).
    
    This is the effort in a nutshell, and from my simple tests it seems to
    be working as expected so far. You can find a more comprehensive
    description of the whole effort in this blog post:
    
    https://protect2.fireeye.com/v1/url?k=c2a19457-9e284e10-c2a1d4cc-0cc47ad93c18-c1355b6e18f62d8a&q=1&e=78bf43a6-cc22-44d8-bbaf-2cb644177cfa&u=https%3A%2F%2Fwww.meetecho.com%2Fblog%2Frealtime-text-sip-and-webrtc%2F
    
    The Janus branch supporting real-time text, instead, is here:
    
    https://protect2.fireeye.com/v1/url?k=ce273934-92aee373-ce2779af-0cc47ad93c18-c8ae4c94a2ec0095&q=1&e=78bf43a6-cc22-44d8-bbaf-2cb644177cfa&u=https%3A%2F%2Fgithub.com%2Fmeetecho%2Fjanus-gateway%2Fpull%2F1898
    
    As explained in the blog post, the effort is not complete, and there
    are some things that are either missing, or need to be improved, namely:
    
    	1. We're not using the dcmap and dcsa attributes on the WebRTC
    	side yet: the reason is that browsers don't support them, at
    	the moment, and so putting them there may result in the SDP
    	being rejected and the session broken. This means that,
    	currently, we use a default label for exchanging T.140 blocks
    	with the server.
    
    	2. While we support RED, we're not using the redundant info for
    	packets we receive yet, and we're not properly handling packet
    	loss or out of order packets yet either. This is something we
    	plan to work on in the future, as I was more interested in
    	getting the specification in general to work first.
    
    	3. On the client side in WebRTC, we're not doing any buffering,
    	meaning we send every character as soon as we type it, which is
    	clearly suboptimal. Again, something we plan to fix later on,
    	either in the web application (buffer there), or on the server
    	side (buffer incoming T.140 blocks there, before crafting RTP
    	packets).
    
    I hope this will be considered useful, and I'm looking forward to keep
    on working on this as the specifications moves forward. If you have any
    questions or doubts, please don't hesitate to ask; besides, I'll be in
    Vancouver for the next IETF, so in case you want to talk about it in
    person there, see a demo, or make some interoperability tests, I'll be
    glad to do that as well.
    
    Thanks,
    Lorenzo
    
    -- 
    I'm getting older but, unlike whisky, I'm not getting any better
    https://twitter.com/elminiero
    
    _______________________________________________
    mmusic mailing list
    mmusic@ietf.org
    https://www.ietf.org/mailman/listinfo/mmusic