Re: [MMUSIC] Finding a max length of "a=mid" attribute

Harald Alvestrand <harald@alvestrand.no> Mon, 08 March 2021 07:18 UTC

Return-Path: <harald@alvestrand.no>
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 DD1B63A26D0 for <mmusic@ietfa.amsl.com>; Sun, 7 Mar 2021 23:18:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 LOhpBzMxmkrr for <mmusic@ietfa.amsl.com>; Sun, 7 Mar 2021 23:18:26 -0800 (PST)
Received: from mork.alvestrand.no (mork.alvestrand.no [IPv6:2001:700:1:2::117]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 877D53A26CF for <mmusic@ietf.org>; Sun, 7 Mar 2021 23:18:26 -0800 (PST)
Received: from [192.168.3.157] (unknown [78.156.11.215]) by mork.alvestrand.no (Postfix) with ESMTPSA id 1140E7C6128 for <mmusic@ietf.org>; Mon, 8 Mar 2021 08:18:22 +0100 (CET)
To: mmusic@ietf.org
References: <463c848c-d171-7184-d65b-9ea95438d442@alum.mit.edu> <CANKS34fmzw3TNJVJhkUQvWv+EM2SCuEZcp7JgyZbN-p7iqMxfg@mail.gmail.com> <bfd34ef4-d081-c1e9-9985-da1e1b794c58@alvestrand.no> <CA+ag07budQbg1qKa+rR939sQ2CP2aAmnd8jDL93e1_B=QuonQA@mail.gmail.com> <CAOJ7v-2n2UsV58KzVMG-M9fNW1w-HTOtp5=8z0ZD6FazTOJUDg@mail.gmail.com> <6754fb36-2efe-4e8e-8b8b-5b43cb8db2d3@www.fastmail.com> <16C4A933-22D1-4427-9C5B-0A52611D3FB5@mozilla.com> <ab24ee24-9f40-5e92-e72f-a454eeecdd26@alum.mit.edu> <CA+ag07by9PhjazSvNEsOG4scga=W6to1sc91WYF0e6BbLjqopg@mail.gmail.com> <CAOJ7v-2vp4c2y8HrOHkTLdoP7rSEuQemBQGAwDT7HObjre0dOg@mail.gmail.com>
From: Harald Alvestrand <harald@alvestrand.no>
Message-ID: <a671dcfd-f0c1-2e59-c606-28bf595e155e@alvestrand.no>
Date: Mon, 08 Mar 2021 08:18:21 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1
MIME-Version: 1.0
In-Reply-To: <CAOJ7v-2vp4c2y8HrOHkTLdoP7rSEuQemBQGAwDT7HObjre0dOg@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------116EA7ADC4D9FD75A87A2909"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/mmusic/OELoCPZdwaddMjItmu9LUeykKY0>
Subject: Re: [MMUSIC] Finding a max length of "a=mid" attribute
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: Mon, 08 Mar 2021 07:18:30 -0000

Please note - we *know* that no 17-byte MID is being used with WebRTC in 
Chrome today, because there is code that causes a disruptive failure 
when a MID or RID longer than 16 bytes occurs in the SDP.

WebRTC's BUNDLE is, however, not the only user of the grouping 
framework, so this doesn't guarantee that there isn't such an usage in 
some other place - but this can't be checked by Chrome counters.

The choices available to me as an implementor (short term) are:

A - Return an error on set*Description that attempts to set a MID > 16 
bytes (my preference, needs to be a standard change)

B - Silently ignore attempts to set MIDs > 16 bytes (less disruptive 
than current behavior)

C - Do B, but add a comment to the code saying "TODO() - implement 
support for 256 byte MIDs (low priority bug)"

D - Leave the current behavior

I do agree that new restrictions should be preceded with counters 
(except where there is a security issue) - but this isn't a new 
restriction, it's trying to document an existing one.

On 3/4/21 10:26 PM, Justin Uberti wrote:
> I would argue that even without an enforced limit, things are 
> already breaking out there silently as packets exceed some link MTU. 
> So having a deterministic failure seems like
> an improvement.
>
> That said, I agree it would be prudent to add some counter to Chrome 
> first to ensure enforcing a 16 limit would be safe, and this should be 
> performed for all SDP-defined values carried in RTP header extensions.
>
> On Thu, Mar 4, 2021 at 9:15 AM Sergio Garcia Murillo 
> <sergio.garcia.murillo@gmail.com 
> <mailto:sergio.garcia.murillo@gmail.com>> wrote:
>
>     A limit of 16bytes is more than enough (1 or 2 bytes is the max
>     you should use).
>
>     However IMHO implementations should be ready to receive up to the
>     maximum of the 2 header bytes header extensions (there is always
>     crazy people out there).
>
>     Is there any similar limit for RID values?
>
>     Best regards
>     Sergio
>
>
>
>     El jue., 4 mar. 2021 18:07, Paul Kyzivat <pkyzivat@alum.mit.edu
>     <mailto:pkyzivat@alum.mit.edu>> escribió:
>
>         On 3/4/21 12:40 AM, Nils Ohlmeier wrote:
>         > When Firefox started putting its original MID values of
>         ‘mid0’, ‘mid1’ etc into the RTP header extension we received
>         several complaints about wasting bytes on the wire. Because of
>         that we switched to ‘0’, ‘1’, … to save bytes. So it seems
>         everyone is interested in using as little bytes as possible
>         for this.
>         >
>         > In other words: I believe 16 bytes should be enough.
>
>         I don't see any conceptual problem with imposing a limit. But
>         when
>         imposing a limit retroactively there is the potential for
>         breaking some
>         existing implementations in the wild. I think that is
>         unlikely, but hard
>         to verify.
>
>                 Thanks,
>                 Paul
>
>         > Best
>         >    Nils
>         >
>         >> On 3Mar, 2021, at 14:43, Martin Thomson <mt@lowentropy.net
>         <mailto:mt@lowentropy.net>> wrote:
>         >>
>         >> What Justin said.
>         >>
>         >> Does anyone *need* more than 16 bytes?
>         >>
>         >> On Thu, Mar 4, 2021, at 08:55, Justin Uberti wrote:
>         >>> We have limits on a lot of values for exactly this reason
>         - UDP packets
>         >>> have a finite length, and therefore when it comes to RTP
>         packetization,
>         >>> overly long values make things screech to halt.
>         >>>
>         >>> So I think defining such a limit would be a good idea, but
>         I think
>         >>> you'd have to reject it rather than ignore it to get
>         deterministic
>         >>> behavior (which seems like another upside to me).
>         >>>
>         >>> On Wed, Mar 3, 2021 at 1:43 PM Sergio Garcia Murillo
>         >>> <sergio.garcia.murillo@gmail.com
>         <mailto:sergio.garcia.murillo@gmail.com>> wrote:
>         >>>> If length is >16, shouldn't the 2 byte header extension
>         be used instead? that would allow mid values up to 256 bytes.
>         >>>>
>         >>>> Best regards
>         >>>> Sergio
>         >>>>
>         >>>>
>         >>>> El mié., 3 mar. 2021 22:40, Harald Alvestrand
>         <harald@alvestrand.no <mailto:harald@alvestrand.no>> escribió:
>         >>>>>
>         >>>>> On 3/3/21 4:06 PM, Nils Ohlmeier wrote:
>         >>>>>>> Am 3/3/21 um 06:31 schrieb Paul Kyzivat
>         <pkyzivat@alum.mit.edu <mailto:pkyzivat@alum.mit.edu>>:
>         >>>>>>>
>         >>>>>>> On 3/3/21 3:51 AM, Harald Alvestrand wrote:
>         >>>>>>>> I'm searching for the source of a max length limit on
>         the "a=mid" attribute.
>         >>>>>>>> I couldn't find it in RFC 5888 (grouping framework)
>         or RFC 8843 (BUNDLE).
>         >>>>>>>> Does anyone remember where it's supposed to be?
>         >>>>>>>> (I have code that will insist that it should be 16
>         bytes or less, but I'm trying to verify that this is the
>         correct limit.)
>         >>>>>>> Its defined as a token (from RFC4566/8866). And that is:
>         >>>>>>>
>         >>>>>>>   token = 1*(token-char)
>         >>>>>>>
>         >>>>>>> There is no upper limit on the length. You can't
>         impose a limit for implementation convenience. But practically
>         speaking it is limited by the length of the message body that
>         contains it, so you could code using an offset+length into the
>         message buffer.
>         >>>>>> While the SDP side might be able to handle really long
>         MID values I
>         >>>>>> doubt the RTP header extension allow or support that.
>         Maybe your 16
>         >>>>>> byte length limitation comes from the RTP side?
>         >>>>>
>         >>>>> I found that it is impossible to encode an 1-byte RTP
>         header extension
>         >>>>> longer than 16 bytes (the length is a 4-bit field with a
>         bias value of
>         >>>>> 1). So in practice, it's an RTP restriction.
>         >>>>>
>         >>>>> I think Postel once advised that one should always have
>         length limits -
>         >>>>> "if you don't have a length limit, you just have an
>         implementation
>         >>>>> defined limit, and that's worse".
>         >>>>>
>         >>>>> So the next question (now that we've settled that the
>         standards don't
>         >>>>> impose one) is: Should the standards specify a limit?
>         >>>>>
>         >>>>> And the third question: if asked to handle a BUNDLEd
>         connection where
>         >>>>> the MID is > 16 bytes, is it reasonable to just ignore
>         the over-long MID
>         >>>>> value?
>         >>>>>
>         >>>>>
>         >>>>>
>         >>>>>
>         >>>>>>
>         >>>>>> Best
>         >>>>>>    Nils
>         >>>>>>
>         >>>>>> _______________________________________________
>         >>>>>> mmusic mailing list
>         >>>>>> mmusic@ietf.org <mailto:mmusic@ietf.org>
>         >>>>>> https://www.ietf.org/mailman/listinfo/mmusic
>         <https://www.ietf.org/mailman/listinfo/mmusic>
>         >>>>>
>         >>>>> _______________________________________________
>         >>>>> mmusic mailing list
>         >>>>> mmusic@ietf.org <mailto:mmusic@ietf.org>
>         >>>>> https://www.ietf.org/mailman/listinfo/mmusic
>         <https://www.ietf.org/mailman/listinfo/mmusic>
>         >>>> _______________________________________________
>         >>>> mmusic mailing list
>         >>>> mmusic@ietf.org <mailto:mmusic@ietf.org>
>         >>>> https://www.ietf.org/mailman/listinfo/mmusic
>         <https://www.ietf.org/mailman/listinfo/mmusic>
>         >>> _______________________________________________
>         >>> mmusic mailing list
>         >>> mmusic@ietf.org <mailto:mmusic@ietf.org>
>         >>> https://www.ietf.org/mailman/listinfo/mmusic
>         <https://www.ietf.org/mailman/listinfo/mmusic>
>         >>>
>         >>
>         >> _______________________________________________
>         >> mmusic mailing list
>         >> mmusic@ietf.org <mailto:mmusic@ietf.org>
>         >> https://www.ietf.org/mailman/listinfo/mmusic
>         <https://www.ietf.org/mailman/listinfo/mmusic>
>         >
>         > _______________________________________________
>         > mmusic mailing list
>         > mmusic@ietf.org <mailto:mmusic@ietf.org>
>         > https://www.ietf.org/mailman/listinfo/mmusic
>         <https://www.ietf.org/mailman/listinfo/mmusic>
>         >
>
>         _______________________________________________
>         mmusic mailing list
>         mmusic@ietf.org <mailto:mmusic@ietf.org>
>         https://www.ietf.org/mailman/listinfo/mmusic
>         <https://www.ietf.org/mailman/listinfo/mmusic>
>
>     _______________________________________________
>     mmusic mailing list
>     mmusic@ietf.org <mailto:mmusic@ietf.org>
>     https://www.ietf.org/mailman/listinfo/mmusic
>     <https://www.ietf.org/mailman/listinfo/mmusic>
>
>
> _______________________________________________
> mmusic mailing list
> mmusic@ietf.org
> https://www.ietf.org/mailman/listinfo/mmusic