Re: [AVTCORE] John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT)

Stephan Wenger <stewe@stewe.org> Wed, 13 December 2023 18:41 UTC

Return-Path: <stewe@stewe.org>
X-Original-To: avt@ietfa.amsl.com
Delivered-To: avt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 574EAC14F5E4; Wed, 13 Dec 2023 10:41:44 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.908
X-Spam-Level:
X-Spam-Status: No, score=-6.908 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=steweorg.onmicrosoft.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EPIPLKaDNEDQ; Wed, 13 Dec 2023 10:41:39 -0800 (PST)
Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2112.outbound.protection.outlook.com [40.107.102.112]) (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 6CF3CC14F602; Wed, 13 Dec 2023 10:41:39 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IVyYt787waHVc7rPV3GGciWmveXSkviYA7JXmBvyBHpV2Um1z9OPsCnXmrmIXBCBIyo+206rXxqs2p1eT4KNPObTFGXqPi3+IuwC/KxKYJYatzbkHbf0F3K3M3c5y1F1BQVGUVn2NLIhyEWPsTXO23InLnVxCgm5E4gnmD7vckSg0BpKfm1Q4vVycW4QiR/BzNd8qy5sUv78Re52Dj2Cks9wp2LUwB5ZoACFdG6Imsh6AIvZLVzMt0Oo+5ve7hEWlo7qTE9VrGqH/ossVdMKkAQE07gVd1Syeu7qB7rMNloQuD3dgY7GDW8wRjsYXqvHPpwSQF5Iz8fKDdIYHSLoHg==
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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GYgIoeEFa11ZdlZsGZSSZ831AdZ+PpPxkNhq6KLEwtA=; b=CWFQmH5DuzILXFq53nakj7rWeW2uzu7gGQWlvk9fdphw4ePRgB7YVkwzL8tAGY1yqGumqX8saPGLYMLjJCpaSMK7lFznlHqbIfK3Q8/IoWT9Moe008wIYosANKcW3WR7CiFSqzhv+uqbqeWjtMR0iUDZYkZgLlCfWc5MMGsgwxQYUsNvctIochukQmkd9NR9SaHkYgckAruzs3MrQ8ZU8fLXFfsr0d9o0H+H/o3nhpajkoJ73bTfzhqx3eg3Q7i1VeyaobEiGuZX/k7o25bci4bT6STzlg9EvU2JyY2JtCdg0xatY3dGMSos5mqdvIrbH5LIlQFpmQZNIED39dx6DQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=stewe.org; dmarc=pass action=none header.from=stewe.org; dkim=pass header.d=stewe.org; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=steweorg.onmicrosoft.com; s=selector2-steweorg-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GYgIoeEFa11ZdlZsGZSSZ831AdZ+PpPxkNhq6KLEwtA=; b=IfeaB8/X6O9AdmAnHjQDi4OunHURX3pyULihGJm0fwjbsVRyNFxE16682I+OGTXYpkUUozkL3hlY9e8WXDDIuLohY5Bw/D6xeMSYHWXI3IOHQ7zmIkdz+WamIEAULmTg2Z9nZkxlyvfQ6C9AeZfbvBK+39fNjfUVxSAWF8I+Evw=
Received: from PH0PR17MB4908.namprd17.prod.outlook.com (2603:10b6:510:d6::23) by SJ0PR17MB4893.namprd17.prod.outlook.com (2603:10b6:a03:3bc::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26; Wed, 13 Dec 2023 18:41:36 +0000
Received: from PH0PR17MB4908.namprd17.prod.outlook.com ([fe80::b12:ea4:48af:1a6d]) by PH0PR17MB4908.namprd17.prod.outlook.com ([fe80::b12:ea4:48af:1a6d%7]) with mapi id 15.20.7091.022; Wed, 13 Dec 2023 18:41:35 +0000
From: Stephan Wenger <stewe@stewe.org>
To: John Scudder <jgs@juniper.net>
CC: The IESG <iesg@ietf.org>, "draft-ietf-avtcore-rtp-evc@ietf.org" <draft-ietf-avtcore-rtp-evc@ietf.org>, "avtcore-chairs@ietf.org" <avtcore-chairs@ietf.org>, "avt@ietf.org" <avt@ietf.org>, "bernard.aboba@gmail.com" <bernard.aboba@gmail.com>
Thread-Topic: John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT)
Thread-Index: AQHaLcB5Am+hPyfOvEWdzOgGMtzwpLCnVUCxgAAplICAAAfeQQ==
Date: Wed, 13 Dec 2023 18:41:35 +0000
Message-ID: <PH0PR17MB4908A62EC5DF74897A14A5DCAE8DA@PH0PR17MB4908.namprd17.prod.outlook.com>
References: <170247075996.35227.14350240644730583614@ietfa.amsl.com> <PH0PR17MB49088E41E59F40DE4D1F4FE4AE8DA@PH0PR17MB4908.namprd17.prod.outlook.com> <627FCDC4-1650-4B15-9885-64CE8AF2EAAA@juniper.net>
In-Reply-To: <627FCDC4-1650-4B15-9885-64CE8AF2EAAA@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=stewe.org;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PH0PR17MB4908:EE_|SJ0PR17MB4893:EE_
x-ms-office365-filtering-correlation-id: 7a811b7f-5f91-4842-3bcd-08dbfc0b2299
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: e5E3606Suhl5lscJ60Fw1nO9+7zlbYXgelToReMc+KgwjakI1MsJrMIZ4Eu65NAS7UVl249r6UE5Dw2FssvujCGfkgb48eTtSnZ/nti5nAJRMYZZAOgypBCxknZc2EP7wOKwCLOR2rRNw2LnkMCpJoqf4W2yngrdC5gRsbW6UZvp2RLRBJYwy/zFzlVoKzy0zn+Gu2x9GTaR/p8ev5T2GBH0zISaToWKy2n7Flas2pT0EaX1Bh1Q4tXqpqZNHqCXX/sDM9r2yu0DlY17tSjXzEQ84cWaAyWJM1MRM25girNmeNk/oZf86o2nRtF4HiHOz5orb6B1vg+Kn7jI1eA9IAF7RtlDsG4nxUHMpMs3A1j+0QWZOJEADuc+iMklDcrlcsvcLVwZTDKAQLb3Ax31MmOAb2/1csbaxtoC4lMzuKwQ4RRR9Ku48oKsDDfxJWVcbJmk3Jm+mHuEKCrjP0BV5YA3r9Jkw37yrjaGYLOiL8yXWVd6wsJu4rq0vUI+AL2mQIS6dD1RO5IQrZDHW4DYWjMUkvsFSs+5SCxIk+TNWVOHdZmPWzorf4bhWpv2ryQlLq+iTym+tnWO/Vu+/DAYiDkNpzbvzjqQ9qg71QEwIJXsRv830P5g1LzSZmD+PNw9
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR17MB4908.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(376002)(136003)(346002)(396003)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(83380400001)(9686003)(6506007)(7696005)(53546011)(38100700002)(122000001)(8936002)(5660300002)(4326008)(26005)(9326002)(8676002)(52536014)(41300700001)(2906002)(71200400001)(478600001)(64756008)(54906003)(316002)(6916009)(66556008)(66946007)(66446008)(76116006)(66476007)(33656002)(86362001)(55016003)(38070700009)(66899024); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: KW3qgte7Evc0vUTOnir/Vgs4ryCqnMUo5OGcDrqpBmctVb2hB9eg4N3Alb1UVM2sK9iz6QY0NLXZwecG1lYXDnkgZf+W8WWKyf9Ja74tixY22KS2tC0Wz7Vw+jDEpdx6aUTjArvQMi7GPwoRHBrvZ0AYJPGfmLNdSZLNHUS0VoppuxaexgMLp5gveSpCGN0kTBRN9H8Wxbf2j/pf3IcA0MqUjbbHgpSp6n1luxhUD0xEjffOlMdZTifpcmb6+zOzrXigJZ/of0bzJfujZgPt+jssZBF2XGk5XNHs1dgo7FAQSoYxy+nL8ePlgrbGAxhGeM+EreuPeEJ9BHD4wo+LVgZko+Z+NmPy0dp9++n1s+NgdhsepeFd8+skdAbg2Z1iXQPZdwmga9gbUHHyj0QOv6QsSCnXXmoBAHnLGQfWDnxv/DK9KehbVw7fOa7/yba9Mxii0S9jNpPMM5vIzMFcTNzrYSRONETyzGAtkUsccKkzC6e3omKGbRdTu7Vy/VvG9SMBPvxF8cB6UxxYwLbXglUUt+i1DR8vZIuvCvpG/LC7bCDSV1OQqc6FIWwIwD4F8TpJ4dKyDVAdEf7OAynD4jAxo5oTuP3oxdCQkgOtzxgTNIDZ93brpBONoELJ8PaTWrsqTqZKZZL3X0RkgAJygGFBrfsoS91/aMzh+VTEv2DCB+bPorZrkZQW3pSrWVjSGMuvLKU7Ff8PEIvyWtuD+zy5M060j30qXXFcDeA1RuQ88a6MUZqeLoo7WIGCVqK+DF7S46MfETU43vUp8v+pSa+jKMk1BgUatHeC5CQL0LpcqHHHw+HYaq8ieNpuwheYa81rwEokH47lQPSzWR4RJ7hWfBQLLyFtiDY/q3/c3c3lePo8kmL0+gil11BjXQ45dMP1BHfaagRx3kfoKea0qw0y35lPwPTyty2Ut193WAtnfz4poRikoRfm+sPavB8I8tToPgUo1MtlRBj9ygevcVh5vESiaBNGRB7ufhPXrfObVlpif0VNPQyVQLJ1TZGI3fxX6AOgJ+irzyjrt+EyxUxhCPK36NOfw51TCHMKqP/VC0q+bay/RGy19TWcZYDFevGunFw4KKeHMg+4C8JTLIwWFcNL3YsRUemVl341Bc4yyI+di3ujwHrnheOGuS/xdJLUOKVLlqE/JfASJ/EJQ+EkgGe+Io2ru5Ljafkaw3HHIXNDnNhdHBqEgq51ahAVO06Hb1U+eSdbHLRwfYCkD1moFcQqGlqJtdY2Mv4r0w5AWIFYXi4zALHe4u7D50zZktdipjWxGqsY7Ti2ut2RcMVeCoTexlZHFa/VleOa/5Se17ghZF28jsdJrPyUxHPE1jD0HiT8zvnkgyVJkcO9TJE/2rjuCkpaUKUUxLepQJx2Ynb6j5wG2/XM+Fe/mDbnISP7kWRdR2YWAV+iscDYN9Dz4hvZ2YXwHfK2//X37nS+PAHZe3ItAq7vdlevQKRsjuDI9g3bfevWZ3rGKGARMNN+EAFwcUIEMDRklWywtFdhuX1160ND7qbigz6b/OnDlPsrZiQqwOEL3Pje8NryZ5UI6xia4N/foV47YxNSjaSvgJBo1c2XPiXBG6RuU7jR
Content-Type: multipart/alternative; boundary="_000_PH0PR17MB4908A62EC5DF74897A14A5DCAE8DAPH0PR17MB4908namp_"
MIME-Version: 1.0
X-OriginatorOrg: stewe.org
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PH0PR17MB4908.namprd17.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7a811b7f-5f91-4842-3bcd-08dbfc0b2299
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Dec 2023 18:41:35.7940 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 865fc51c-5fae-4322-98ef-0121a85df0b6
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 2O27IliTUClIwiduQMiFWKzxUW2RFRxGMSLwXNnuMAFcYL4DUIP0udLgyov3aHwr
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR17MB4893
Archived-At: <https://mailarchive.ietf.org/arch/msg/avt/4sU9mvgxHdHP_knk7G6Ca_MXEFo>
Subject: Re: [AVTCORE] John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT)
X-BeenThere: avt@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Audio/Video Transport Core Maintenance <avt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/avt>, <mailto:avt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/avt/>
List-Post: <mailto:avt@ietf.org>
List-Help: <mailto:avt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/avt>, <mailto:avt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Dec 2023 18:41:44 -0000

Hi John,

Oh my.  Now a routing AD invests time in making detailed text proposals towards something as exotic as an RTP payload format.  Much appreciated!

I think your language is fine, and we will go with it in the revised draft but let us first run against a few EVC experts, to make sure we get it right this time.  Then checking with avtcore.  I hope we can avoid another round of last calls for that, but that’s obviously not up to me.

I’ll report back to you and the IESG only if there’s an issue with your text.

Thanks for the sign-off on MUST vs. must; we will implement this in an updated draft.

Stephan


From: John Scudder <jgs@juniper.net>
Date: Wednesday, December 13, 2023 at 09:52
To: Stephan Wenger <stewe@stewe.org>
Cc: The IESG <iesg@ietf.org>, draft-ietf-avtcore-rtp-evc@ietf.org <draft-ietf-avtcore-rtp-evc@ietf.org>, avtcore-chairs@ietf.org <avtcore-chairs@ietf.org>, avt@ietf.org <avt@ietf.org>, bernard.aboba@gmail.com <bernard.aboba@gmail.com>
Subject: Re: John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT)
Hi Stephan,

Thanks for your detailed reply. Two followups below. I have edited out the rest for brevity, anything I have not commented on, is agreed.


On Dec 13, 2023, at 12:15 PM, Stephan Wenger <stewe@stewe.org<mailto:stewe@stewe.org>> wrote:



Hi John,

Excellent review.  Thanks.  Please see my responses inline.  I apologize for the wordcount, but I think that such a thoughtful review requires quite a bit of context and explanation.

Would you please sign off on the resolution of the MUST RFC 2119 codeword in section 6?  While you have not raised it to DISCUSS level, I have mentally done so for myself :-)


Done.



Thanks,
Stephan

From: John Scudder via Datatracker <noreply@ietf.org<mailto:noreply@ietf.org>>
Date: Wednesday, December 13, 2023 at 04:32
To: The IESG <iesg@ietf.org<mailto:iesg@ietf.org>>
Cc: draft-ietf-avtcore-rtp-evc@ietf.org<mailto:draft-ietf-avtcore-rtp-evc@ietf.org> <draft-ietf-avtcore-rtp-evc@ietf.org<mailto:draft-ietf-avtcore-rtp-evc@ietf.org>>, avtcore-chairs@ietf.org<mailto:avtcore-chairs@ietf.org> <avtcore-chairs@ietf.org<mailto:avtcore-chairs@ietf.org>>, avt@ietf.org<mailto:avt@ietf.org> <avt@ietf.org<mailto:avt@ietf.org>>, bernard.aboba@gmail.com<mailto:bernard.aboba@gmail.com> <bernard.aboba@gmail.com<mailto:bernard.aboba@gmail.com>>, bernard.aboba@gmail.com<mailto:bernard.aboba@gmail.com> <bernard.aboba@gmail.com<mailto:bernard.aboba@gmail.com>>
Subject: John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT)
[…]


## COMMENTs

### Section 1.1.4, Type field description appears to be wrong

As best I can tell from my skim of [EVC], the type field, although six bits,
can only represent values from 0 to 62, not the more obvious 0 to 63, and uses
an oddball encoding, viz

   NalUnitType = nal_unit_type_plus1 − 1

[…]
Thanks for this!  We will investigate further and if there were a bug, we will correct it.  That will require some thinking.  If there were indeed a bug, the same bug is likely present in a number of RFCs specifying payload formats of the H.26x series, so this is a comparatively big deal for us!
As you were curious for the reasoning of the numbering range: the syntax element nal_unit_type_plus1 (lower case, with underscores) represents bits on the wire, and has a value range of 1..63.  The value 0 is reserved to prevent start code emulation.  Historically (pre 2003), video codec bitstreams used 15 or 23 or more consecutive zero bits followed by a 1 bit to indicate the start of a coded picture.  In H.264 (ca. 2003), the startcode was placed to the start of each NAL unit.  The NAL unit header is one of the few syntax elements that are outside of the start code emulation prevention mechanism of section 7.4.2.1., for reasons I could explain, but that would take a lot of letters.  We had to make sure that in the 16 bit NAL unit header there are at least one nonzero bit, and that was solved by disallowing 0 for nal_unit_type_plus1.  Once that value is parsed, the logic of the standard is such that the value of nal_unit_type_plus1 minus 1 is assigned to a variable NalUnitType (identified by capitalization and no underscores), and only that variable is used throughout the rest of the EVC spec.  The value rage of that variable is 0..62 inclusive.

Thanks for the detailed explanation! I rely on you to make any changes you deem necessary, but the essence of what I identified as a possible problem is that the draft as it stands says "This field specifies the NAL unit type”, but as you explain above, the nal_unit_type_plus1 bits on the wire are different from the NalUnitType, and therefore also different from the “NAL unit type”; the mapping from “this field” to “the NAL unit type” is not the identity function as the text implies. Probably the fix is something like,

OLD:
      nal_unit_type_plus1.  This field specifies the NAL unit type as in
      Table 4 of [EVC].  If the value of this field is less than and
      equal to 23, the NAL unit is a VCL NAL unit.  Otherwise, the NAL
      unit is a non-VCL NAL unit.  For a reference of all currently
      defined NAL unit types and their semantics, please refer to
      Section 7.4.2.2 in [EVC].

NEW:
      nal_unit_type_plus1.  This field allows the NAL Unit Type to be
      computed. The NAL Unit Type is equal to the value found in this
      field, minus 1, in other words,

         NalUnitType = nal_unit_type_plus1 − 1

      The NAL unit type is detailed in
      Table 4 of [EVC].  If the value of NalUnitType is less than or
      equal to 23, the NAL unit is a VCL NAL unit.  Otherwise, the NAL
      unit is a non-VCL NAL unit.  For a reference of all currently
      defined NAL unit types and their semantics, please refer to
      Section 7.4.2.2 in [EVC]. Note that nal_unit_type_plus1
      MUST NOT be zero.

Optionally, you could add something like "also note that as a consequence of this encoding, the possible values of NAL unit type are in the range of 0 to 62." But perhaps given the other verbiage, this is unnecessary.

This is just an illustrative example, I don't expect you to adopt my wording, although if you want to you're certainly welcome.

[…]

### Section 6

“All normal RTP mechanisms related to buffer management apply. In particular,
duplicated or outdated RTP packets (as indicated by the RTP sequence number and
the RTP timestamp) are removed. To determine the exact time for decoding,
factors such as a possible intentional delay to allow for proper inter-stream
synchronization, MUST be factored in.”

Normally I expect that a MUST will be more specifically prescriptive without
requiring the implementor to exercise imagination or creativity. The one here
seems to be of the form “implementations MUST do the right thing” which seems
not that helpful to the implementor. It’s not wrong as far as it goes, but the
RFC 2119 keyword seems out of place.
Another tricky one here.  Thanks for your diligence!
The language you are reciting above has been around verbatim (plus/minus capitalization of the word “MUST”; see below) since RFC 3984, ca. 2005.  In RFC 3984, the depacketization section was labelled as informative and hence sloppiness in drafting was to be expected 😊  RFC 7798 (HEVC payload, 2016) inherited the language.  The section there was normative, but “must” was not capitalized while the “convention” section 2 said that only capitalized MUSTs indicate a normative behavior.  Insofar, in RCC 7798, that lower-case “must” was to be interpreted as plain language.  I vaguely recall discussion in the working group at the time along the lines of your argument, and the outcome speaks for itself.  It was not a drafting mistake.  Fast forward to 2021 and the VVC payload, RFC 9328.  Here, we capitalized the MUST, and no comments were received from the WG or during IETF last call, nor from the IESG.  I don’t recall a conscious decision in this direction, and, after your comment, do consider it a drafting mistake.
Based on your comment, I think RFC3984 and RFC7798 were doing the right thing in not stating an in practice not actionable “MUST” requirement.  The minimum change would be to change the “MUST” to a “must”, arriving at plain language.  Would that address your comment?  If so, I will also submit an erratum against RFC 9328 requesting the same change.

That would be just fine. Thanks for the careful analysis.

Regards,

—John