Re: [rtcweb] Review of draft-ietf-rtcweb-fec
Justin Uberti <juberti@google.com> Fri, 14 April 2017 22:45 UTC
Return-Path: <juberti@google.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 1DC2B129B05 for <rtcweb@ietfa.amsl.com>; Fri, 14 Apr 2017 15:45:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 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_LOW=-0.7, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 oVbOcETB8yML for <rtcweb@ietfa.amsl.com>; Fri, 14 Apr 2017 15:45:53 -0700 (PDT)
Received: from mail-it0-x235.google.com (mail-it0-x235.google.com [IPv6:2607:f8b0:4001:c0b::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9686C129A9D for <rtcweb@ietf.org>; Fri, 14 Apr 2017 15:45:53 -0700 (PDT)
Received: by mail-it0-x235.google.com with SMTP id 70so1887411ita.0 for <rtcweb@ietf.org>; Fri, 14 Apr 2017 15:45:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=8qUhDpx/2c6wCXBJawnCM5Y7vCu60Wbnd8QJGxM+xR8=; b=XdhNh37aEGsrxzxMvZx0soFziQJRvX0dYBkChIl+p0Fr5wcAw04tPo1TnhGL70Jfi2 Sk/0whSZBDpDLLjrZJ7fRQusH+5SXrQGyiFb12fikE0l61jj/xEubFyeh8Bw++NiC6Qj S3qchBiE+UT2Z/jHOieX2i6tI9TlHggtEjGlFHjG71fHDUsXDgsMkN/0/Z2SutURiyjh aJhX+3J5HsC5oFGX9I3L85x62il+WQq/dfUHXEgsJdXCmWnfzVyQLW0kxaVpzvCBbtRE JQr/v28OZO8Uod07huboDFP2qfWG+lY06/37dqTC/s6as9/S/38fXArsVSTMNlAs4ViY XzWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=8qUhDpx/2c6wCXBJawnCM5Y7vCu60Wbnd8QJGxM+xR8=; b=XHDz0yVNx4i5kSf8GY+XeA81jgVi3dgZN8OJB1cBiFTI9fr/S93YNR6F4zat6o/qx2 m701Ucah8m4woelmUgGanoECRhqtnXaoy/DS54RbvxCW45xBXSl+bSfi2k/vfSwJxD9O 81STfxBZdCU/NtvJMg4fK2tgFHpJLmjmvuyoVsZBpOeKPYTJMtXNsjm1ai0v8AyoOwI+ zJbF4fDGHneAmzae9K0Hn+qGeMucDx0yoYzi11ALhZkhYFTOktDzCYiQol5QfKOf4ALb kW0CowKE0CjDOtZypyN2+uIBJK0BL3wu+74LijOEjEopTzFNI4qIEkDy8qnJsFGSNFRg sPEA==
X-Gm-Message-State: AN3rC/4ozR58MY078uIyj3EpTdQa8Dj1dWOoL53G5kqN/GCCi7KnvBdP mbhkgeoffhk77gRyTDGUU0SfScGiS0VL
X-Received: by 10.36.173.91 with SMTP id a27mr941179itj.60.1492209952734; Fri, 14 Apr 2017 15:45:52 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.107.138.143 with HTTP; Fri, 14 Apr 2017 15:45:32 -0700 (PDT)
In-Reply-To: <D50DC080.6C653%mzanaty@cisco.com>
References: <D50DC080.6C653%mzanaty@cisco.com>
From: Justin Uberti <juberti@google.com>
Date: Fri, 14 Apr 2017 15:45:32 -0700
Message-ID: <CAOJ7v-1wm-gRgsP+sA=W1GvRu6KrHYx=jjNQ+U=-T6w3x4yYgA@mail.gmail.com>
To: "Mo Zanaty (mzanaty)" <mzanaty@cisco.com>
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Content-Type: multipart/alternative; boundary="94eb2c1fd0b42a40d0054d2834fd"
Archived-At: <https://mailarchive.ietf.org/arch/msg/rtcweb/2TD8zciJfei6iceS0uQXoxZmFb4>
Subject: Re: [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: Fri, 14 Apr 2017 22:45:58 -0000
Thanks for this detailed review. On Fri, Apr 7, 2017 at 7:17 PM, Mo Zanaty (mzanaty) <mzanaty@cisco.com> wrote: > 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."* > This isn't quite as bad as full PCMU frames, because Opus frames will typically be smaller, but I agree it is inconsistent. https://github.com/juberti/draughts/issues/38 > > 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"..." > > The intent here was that all clients should support receipt of 2198, even if they don't support sending a redundant encoding (which is only, as you say, RECOMMENDED). IOW, "red" would be a MTI format. > 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..." > Similarly here - for WebRTC, the intent was to mandate support for receiving and using Opus FEC. > 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."* > OK. https://github.com/juberti/draughts/issues/40 > > 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.* > > It's still not clear how this should work. Which m= lines would carry FEC info for which other m= lines? If we are going to support this, I think we need to detail in this document how it should work, and it may have downstream ramifications on JSEP. > 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..." > > https://github.com/juberti/draughts/issues/41 > 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."* > https://github.com/juberti/draughts/issues/42 > > 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. > I think WebRTC implementations is best, since these are guidelines for WebRTC implementors, not application implementors. https://github.com/juberti/draughts/issues/43
- [rtcweb] Review of draft-ietf-rtcweb-fec Mo Zanaty (mzanaty)
- Re: [rtcweb] Review of draft-ietf-rtcweb-fec Justin Uberti
- Re: [rtcweb] Review of draft-ietf-rtcweb-fec Mo Zanaty (mzanaty)
- Re: [rtcweb] Review of draft-ietf-rtcweb-fec Justin Uberti
- Re: [rtcweb] Review of draft-ietf-rtcweb-fec Justin Uberti
- Re: [rtcweb] Review of draft-ietf-rtcweb-fec Mo Zanaty (mzanaty)