[rtcweb] Review of draft-ietf-rtcweb-fec

"Mo Zanaty (mzanaty)" <mzanaty@cisco.com> Sat, 08 April 2017 02:17 UTC

Return-Path: <mzanaty@cisco.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 372E61286CA for <rtcweb@ietfa.amsl.com>; Fri, 7 Apr 2017 19:17:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.022
X-Spam-Level:
X-Spam-Status: No, score=-14.022 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.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 bugQwFQLT--z for <rtcweb@ietfa.amsl.com>; Fri, 7 Apr 2017 19:17:47 -0700 (PDT)
Received: from alln-iport-4.cisco.com (alln-iport-4.cisco.com [173.37.142.91]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E7637127201 for <rtcweb@ietf.org>; Fri, 7 Apr 2017 19:17:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=13474; q=dns/txt; s=iport; t=1491617866; x=1492827466; h=from:to:cc:subject:date:message-id:mime-version; bh=ns09Ex5dhjqln7dACh5ygXO0+LkLineLmXtp94R2dx0=; b=K+K5Ts3tSFcAJxiTDeaalThjOPGeCCZfm2pQhR7URPnHBGZzMo4I9QSJ 4L3Zj5tHF5md4t8goqnbXEeGWOxwpXktvWjcGsiDaeEk+mkffRArNwtMq 3ycWPi9mkWs4yBy/YTI2mggM5UMjg83xgsHDOuA7eaMaevZtaxBGssdcC o=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CyAgD8R+hY/51dJa1dGgEBAQECAQEBAQgBAQEBgm5lgXODX4oToWeFNIIPhiKDYD8YAQIBAQEBAQEBayiFIBwEA1ISARY1LQgnBA6KFKsTDIFrOoppAQEBAQEFAQEBAQEBAQEghk6EcIddgl4FnHgBgVSIVogtkUCTfgEfOIEFWxVBhluJIYENAQEB
X-IronPort-AV: E=Sophos;i="5.37,169,1488844800"; d="scan'208,217";a="408211693"
Received: from rcdn-core-6.cisco.com ([173.37.93.157]) by alln-iport-4.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Apr 2017 02:17:39 +0000
Received: from XCH-RCD-004.cisco.com (xch-rcd-004.cisco.com [173.37.102.14]) by rcdn-core-6.cisco.com (8.14.5/8.14.5) with ESMTP id v382Hdja030618 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Sat, 8 Apr 2017 02:17:39 GMT
Received: from xch-aln-005.cisco.com (173.36.7.15) by XCH-RCD-004.cisco.com (173.37.102.14) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Fri, 7 Apr 2017 21:17:38 -0500
Received: from xch-aln-005.cisco.com ([173.36.7.15]) by XCH-ALN-005.cisco.com ([173.36.7.15]) with mapi id 15.00.1210.000; Fri, 7 Apr 2017 21:17:38 -0500
From: "Mo Zanaty (mzanaty)" <mzanaty@cisco.com>
To: Justin Uberti <juberti@google.com>
CC: "rtcweb@ietf.org" <rtcweb@ietf.org>
Thread-Topic: Review of draft-ietf-rtcweb-fec
Thread-Index: AQHSsA5Le2haafRL0kehEE009v/ocQ==
Date: Sat, 08 Apr 2017 02:17:38 +0000
Message-ID: <D50DC080.6C653%mzanaty@cisco.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/14.7.2.170228
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.82.245.124]
Content-Type: multipart/alternative; boundary="_000_D50DC0806C653mzanatyciscocom_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/rtcweb/YfMEgboYvtMtp2n7qiziBjbY8pE>
Subject: [rtcweb] Review of draft-ietf-rtcweb-fec
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.22
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: <https://mailarchive.ietf.org/arch/browse/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: Sat, 08 Apr 2017 02:17:49 -0000

Here is my review of draft-ietf-rtcweb-fec-04.

4.1. Recommended Mechanism (for audio FEC), first paragraph says:

OLD:
"When using the Opus codec, use of the built-in Opus FEC mechanism is
RECOMMENDED. This provides reasonable protection of the audio stream
against typical losses, with modest overhead. Note that as indicated
above the built-in Opus FEC only provides single-frame redundancy; if
multi-packet protection is needed, the built-in FEC should be
combined with [RFC2198] redundancy to protect the N-2th, N-3rd, etc.
packets."

The last sentence about multi-packet protection should not be recommended due to overhead. Packing multiple full-size Opus frames, each with their own built-in prior-frame FEC, into RED packets is akin to packing multiple PCMU frames into RED packets. The latter is discouraged 3 paragraphs later:

"When using constant-bitrate codecs, e.g. PCMU, use of [RFC2198]
redundant encoding MAY be used, but note that this will result in a
potentially significant bitrate increase, and that suddenly
increasing bitrate to deal with losses from congestion may actually
make things worse."

These same warnings would apply to multi-packet Opus RED. Therefore I suggest rewording the first paragraph as follows.

NEW:
"When using the Opus codec, use of the built-in Opus FEC mechanism is
RECOMMENDED. This provides reasonable protection of the audio stream
against typical losses, with modest overhead. Note that as indicated
above the built-in Opus FEC only provides single-frame redundancy; if
multi-packet protection is needed, the built-in FEC MAY be
combined with [RFC2198] redundancy to protect prior packet pairs,
but note this will result in significant bitrate increase which may
aggravate congestion losses."

4.2. Negotiating Support, first sentence says:

OLD:
"Support for redundant encoding MUST be indicated by offering "red"..."

This may be misinterpreted as mandating that WebRTC endpoints MUST offer "red", rather than merely indicating that if they choose to support redundant encoding (which is only RECOMMENDED for VBR codecs without internal FEC in the prior section), then it MUST be indicated by offering "red". I suggest rewording this as:

NEW:
"If redundant encoding is supported, it MUST be indicated by offering "red"..."

Same comment for Opus in the following paragraph:

OLD:
"For Opus, a receiver MUST indicate that it is prepared to use
incoming FEC data with the "useinbandfec=1" parameter..."

NEW:
"For Opus, a receiver that it is prepared to use incoming FEC data
MUST include the "useinbandfec=1" parameter..."

5.1. Recommended Mechanism (for video FEC) says:

OLD:
"For video content, use of a separate FEC stream with the RTP payload
format described in [I-D.ietf-payload-flexible-fec-scheme] is
RECOMMENDED. The receiver can demultiplex the incoming FEC stream by
SSRC and correlate it with the primary stream via the SSRC field
present in the FEC header."

Flex FEC moved the SSRC binding from the FEC header to the CSRC list. Only the retransmission format still has the SSRC field in the FEC header. Reword as:

NEW:
"For video content, use of a separate FEC stream with the "flexfec" RTP payload
format described in [I-D.ietf-payload-flexible-fec-scheme] is
RECOMMENDED. The receiver can demultiplex the incoming FEC stream by
SSRC and correlate it with the primary stream(s) via the CSRC(s)
in the RTP header of the FEC repair packet, or via the SSRC field
in the FEC header for retransmissions."

The next paragraph suggests multiple source streams is a problem.

OLD:
"Support for protecting multiple primary streams with a single FEC
stream is complicated by WebRTC's 1-m-line-per-stream policy, which
does not allow for a m-line dedicated specifically to FEC."

But Flex FEC already supports this with SSRC(s) of primary stream(s) as CSRC(s) of the FEC stream, so strike the above OLD paragraph.

8. Adaptive Use of FEC, first paragraph says:

OLD:
"...methods like RTX [RFC4588], which only transmits redundant data when..."

Flex FEC also supports retransmissions, so reword as:

NEW:
"...methods like RTX [RFC4588] or the "flexfec" retransmission format,
which only transmits redundant data when..."

Same comment in the next paragraph.

OLD:
"Given this, WebRTC implementations SHOULD consider using RTX instead..."

NEW:
"Given this, WebRTC implementations SHOULD consider using RTX or
the "flexfec" retransmission format instead..."

9. Security Considerations

Add a final paragraph on the order of FEC and SRTP operations.

NEW:
"SRTP [RFC3711] defines the default order of FEC and SRTP as FEC followed by SRTP at the sender, and SRTP followed by FEC at the receiver. DTLS-SRTP [RFC5764] uses this same default order for all SRTP Protection Profiles."

Editorial:

Abstract and Introduction should use WebRTC "endpoint" as defined in -overview.
Abstract: "... FEC ... used by WebRTC applications" -> WebRTC endpoints
Introduction: "... FEC ... for WebRTC client implementations" -> WebRTC endpoints
Or you could be very generic and just say WebRTC implementations everywhere.

Mo