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

Bernard Aboba <bernard.aboba@gmail.com> Wed, 06 April 2016 22:27 UTC

Return-Path: <bernard.aboba@gmail.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 95EA112D101 for <rtcweb@ietfa.amsl.com>; Wed, 6 Apr 2016 15:27:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 U-_iqYwt7CWt for <rtcweb@ietfa.amsl.com>; Wed, 6 Apr 2016 15:27:00 -0700 (PDT)
Received: from mail-vk0-x22f.google.com (mail-vk0-x22f.google.com [IPv6:2607:f8b0:400c:c05::22f]) (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 1456A12D0A3 for <rtcweb@ietf.org>; Wed, 6 Apr 2016 15:27:00 -0700 (PDT)
Received: by mail-vk0-x22f.google.com with SMTP id e6so76998345vkh.2 for <rtcweb@ietf.org>; Wed, 06 Apr 2016 15:27:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=A+S0UaI1BcAI0mKErH0GUF1EpJLxJbAxSjKVIyLkMF0=; b=EhEU/RSZ4fFAtVzRNgUq3xDBV7duAMyLAhuFHqj79bJCTDmNzMjUOsBsMj/fT0SZjP GqGbLbR1fHkSzbQxQsuKjicAtD6tUrr3HgrETC7k9Q9sEzTH6XZJQxuW9IjkSWr6hVbR NQnbKga8ODjxMu7vo3LSB8l77S4zv2QGljmJHBvkMeCpgmOBnuERWJ4gELAxEURq4jer qm4RfarPS5lWFcERdGahWr2V3tB7upz9b9KNJ10D3zEJ3tOtTJR5U6TWA9dO3ron9dpq ds7JvbYZ0Xh/Hj8A3jBTcjOHBbCJdjc1AS7SjRWJhxH/VzSjbjmLixrDl7syUY+qrq+P PWsQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=A+S0UaI1BcAI0mKErH0GUF1EpJLxJbAxSjKVIyLkMF0=; b=Oo6AEOCu0uT31+jWSrCvdgqhXAR3VEF2gOrAmJIkuq4p6eJ22wbph/0DuJ6Ojg2Lyf KazN/+BBBRy7aERARZTrtXwXHkMmdmdBAXqLRUTF/2JD3J+mhzeqycEuDaLWQ+9dF5W8 kgMNd3AjpH7HHxHy90ZNP19FU/wBBHvu/5yaLDqu3fRDXCh3xcIChLQ9s9tWU6aSfJSk /64nhT4naL0N0aMSEexS+2wjPQ7MUig9a5X7nPCOYZ75EbMieEln70k9mik7MaOgrcmu XzpRIJbbCi58AgE+rJ23vI5JB7080RaElK/F0Z+dVEPIpXhgq/HSsduEd5XMVwK9exdN cJNQ==
X-Gm-Message-State: AD7BkJLL38QVVH4sd9ERh5Qb7KERhBm79I54mzTm+z3ActAz7mYqPh60Cscf90gyIYnlron6AD4A9LNKVXRJEQ==
X-Received: by 10.31.147.82 with SMTP id v79mr3490668vkd.58.1459981619128; Wed, 06 Apr 2016 15:26:59 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.176.4.40 with HTTP; Wed, 6 Apr 2016 15:26:39 -0700 (PDT)
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Wed, 06 Apr 2016 15:26:39 -0700
Message-ID: <CAOW+2dtJ0Rh_h0J69nFE=n981svVmB3od6ggfs5-PxKnJM+9pA@mail.gmail.com>
To: "rtcweb@ietf.org" <rtcweb@ietf.org>
Content-Type: multipart/alternative; boundary="001a1141dca2c96fe4052fd87563"
Archived-At: <http://mailarchive.ietf.org/arch/msg/rtcweb/YXz2PzhKE5Ht53z428CJ9Y9135c>
Subject: [rtcweb] Review of draft-ietf-rtcweb-fec-03
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.17
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: Wed, 06 Apr 2016 22:27:02 -0000

Section 3.3

   Note that this mechanism can only carry redundancy information for the
   immediately preceding packet; as such the decoder cannot fully
   recover multiple consecutive lost packets.


[BA] In our experience, this has turned out to be a significant problem

on wireless networks where burst loss is common.


Section 4.1


   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 <https://tools.ietf.org/html/rfc2198>]
redundancy to protect the N-2th, N-3rd, etc.
   packets.


   Because of the lower packet rate of audio encodings, usually a single
   packet per frame, use of a separate FEC stream comes with a higher
   overhead than other mechanisms, and therefore is NOT RECOMMENDED.


[BA] In our implementation, we have found that using external FEC

supporting burst loss resilience provides audio quality superior

to RFC 2198 redundancy with less overhead, iff the level of

protection can be dynamically adjusted (e.g. it is only used if

needed). Since that is recommended in Section 8, NOT RECOMMENDED

seems too harsh. Maybe optional?


Section 5.1


   For video content, use of a separate FEC stream with the RTP payload
   format described in [I-D.ietf-payload-flexible-fec-scheme
<https://tools.ietf.org/html/draft-ietf-rtcweb-fec-03#ref-I-D.ietf-payload-flexible-fec-scheme>]
is
   RECOMMENDED.


[BA] The above RECOMMENDED seems to be contradicted by a MUST in

Section 7.


Section 7


 To support the functionality recommended above, implementations MUST
   support the relevant mechanisms for their supported audio codecs, as
   described in Section 4
<https://tools.ietf.org/html/draft-ietf-rtcweb-fec-03#section-4>, and
the general FEC mechanism described in
   [I-D.ietf-payload-flexible-fec-scheme
<https://tools.ietf.org/html/draft-ietf-rtcweb-fec-03#ref-I-D.ietf-payload-flexible-fec-scheme>].

   Implementations MAY support additional FEC mechanisms if desired,
   e.g.  [RFC5109 <https://tools.ietf.org/html/rfc5109>].


[BA] The above paragraph seems to indicate that flex fec is a MUST,
rather than merely RECOMMENDED. Personally, I think a MUST for
flex fec is too much, and that since existing implementations support
ulpfec, this should be upgraded to RECOMMENDED.

RECOMMENDED seems more suitable for flexible fec since we don't have much

implementation experience yet.  My recommendation would be to wait to

publish the flex fec document until we had some implementation

experience, since if the flex fec goes to RFC before that we could

have some surprises (including late IPR declarations) that might lead

us to regret publishing early.


Section 8


   Given this, WebRTC
   implementations SHOULD only transmit the amount of FEC needed to
   protect against the observed packet loss (which can be determined,
   e.g., by monitoring transmit packet loss data from RTCP Receiver
   Reports [RFC3550 <https://tools.ietf.org/html/rfc3550>]), or the
application indicates it is willing to pay
   a quality penalty to proactively avoid losses.


[BA] Very much in agreement with this - particularly since RTX can
be a quite viable robustness mechanism, particularly when combined
with temporal scalability. Where RTX is not sufficient (e.g. RTT
is too high), it might be worth mentioning selective FEC protection
(e.g. of the base layer only). Since VP8, VP9 and future video
codecs can all benefit from this, it's not that esoteric.