[netconf] draft-ietf-netconf-transaction-id-00 review

"James Cumming (Nokia)" <james.cumming@nokia.com> Mon, 27 March 2023 07:12 UTC

Return-Path: <james.cumming@nokia.com>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A5BA5C151B16 for <netconf@ietfa.amsl.com>; Mon, 27 Mar 2023 00:12:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.094
X-Spam-Level:
X-Spam-Status: No, score=-2.094 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=nokia.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 TpD5iyzwrsYN for <netconf@ietfa.amsl.com>; Mon, 27 Mar 2023 00:12:41 -0700 (PDT)
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on20728.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eaa::728]) (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 75134C151B12 for <netconf@ietf.org>; Mon, 27 Mar 2023 00:12:41 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RzUKN3KHjoZaJ9FJuaNqJ4OXu6Lk48houJN1O2MSQfFDXXDsznFAd0kX0EhiR0IGEnvDv7jy1nsIjHfzL1YkbDuy/KTpq80v2PJJZ3c6WwLNVilqOdCip6SUpgz2aSVpYiFHDgqPqIH5ydn68dZJdoHZwFG2bLns/kr/8+7QgUfqXX/ol0YhLN+R9UFbTw4JMFP4BkRzq0QzJucMQC9HaZWDPrZPnMXa7o4ib2L+PzctZmkygcGS07wXv7Pw0HQmY504DZFdO25LTs0YChqllStAsCgSvHIzKrimSQ1Td4mfmjkk4YfVSxKMMw6bgqOuTByCLJZigspWEhYvn4JsNA==
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=wQxF+2Ts4+ExNOEyfIi4fEioPBkYVvp0UpwV7E1qBGE=; b=NgtDDt1d26vciOCKXBA7CVNcbFyFxkh30qiwzYXe/KgbhHJ0h2EUVdNBZKirUeDX977OsYWt9o4E67gM4VwB4b1l/xXm6xsvADkDM6oh05BAhZgw+3pFi3SKm60N2mvjlNxRlkSZf3m+iPacxeyK/6+vrG39sZdhjK4GF0pT3kqppzmYLZT43ZgRIQPyIhbUezc9POoIND957hY6wVggcOdY0prk6XkZufYFfUX84uQ+E9LIDlVRFFddG8AkEYpej0WMoWZGPkWbqXX2yeJxm2eygvU3H+ES+aSpQzN3oP/eWUbsgL6w/Vh2GdQg3aVOlJH/+dR7XdPy8oc/3YZZog==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nokia.com; dmarc=pass action=none header.from=nokia.com; dkim=pass header.d=nokia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wQxF+2Ts4+ExNOEyfIi4fEioPBkYVvp0UpwV7E1qBGE=; b=jwQQIlhl3Lnu4EJxu4ZlsErqPK8kWpM8geOycwim0LPJFVPxTikTZHQ9BKKY2qh8dCb6Dr/M5x5/ISdqaEgU1QJTQh0cMP2N1hRj5gddJAXl/w1+U60JFO78tUN+iessc7aXOTb6DCYAEKSg0EzFQKDScOKRy4pMOuFVz++P6lQr05fPaA1wxJjPfD36RfGnMaIzUQPKz449rLJfBLuS8W30o+h0RkOWS0W3UQ/YaqYUSvuGMLw1VsoepV+3L4cZvhqQ5G0WBn7DPTS0yrf7xL54uYiqjs8oV4EDC6D8DPziWTtquG95dW3UfewuyqENmfBF1+Fv0INi2t/3+n5VLg==
Received: from SA1PR08MB7215.namprd08.prod.outlook.com (2603:10b6:806:1a9::17) by CO6PR08MB7737.namprd08.prod.outlook.com (2603:10b6:303:140::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.41; Mon, 27 Mar 2023 07:12:36 +0000
Received: from SA1PR08MB7215.namprd08.prod.outlook.com ([fe80::25ae:e0fd:3849:f965]) by SA1PR08MB7215.namprd08.prod.outlook.com ([fe80::25ae:e0fd:3849:f965%6]) with mapi id 15.20.6222.030; Mon, 27 Mar 2023 07:12:36 +0000
From: "James Cumming (Nokia)" <james.cumming@nokia.com>
To: "netconf@ietf.org" <netconf@ietf.org>
Thread-Topic: draft-ietf-netconf-transaction-id-00 review
Thread-Index: AQHZYCtw+tsIx/irPUuR2euUrhc6oQ==
Date: Mon, 27 Mar 2023 07:11:57 +0000
Message-ID: <SA1PR08MB7215DE6EE0A5B445608C1A61FF8A9@SA1PR08MB7215.namprd08.prod.outlook.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nokia.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SA1PR08MB7215:EE_|CO6PR08MB7737:EE_
x-ms-office365-filtering-correlation-id: 365e2245-7834-488e-ba71-08db2e92a456
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: vFcEVLjALXYTfk4qt3oJqdl1wq3evnIBlhZJGXjwr9F8nlskZ5tIoyng52qEqmYPsyjpG+TsQSl93934onB4I1+RseW5Bo1LDT8rWb6Bz/VQdZO/4Y4MT5E2ltEPdagQbKCvU7qFxVPd7fn/mgbiwlp/G6JyTSihKL9e0uU0TUDW4YARFsUz4Tdwp8JaLnJJCzn08ig8DcU+2nTVOO2JXG3R6Gz3yqdpt6Sin6Gazv2Nc5ANw3WxMDgh6cs0VgN3seycJFd1J8+kAB/p3ZsijXaZnMMS48Oo1qVM8mPk1wagWHgwoaFV2N1MKTyRHiXC98UoXVHOEYZwYzE6Bhs0iO/iEerx5TN0s74TT5pNU3aIN05ZHbwBDK0KjJr1okMR8lddRwDylEXMQhU7/GMrO4IKr2KIEOO7gsNuMVoxN4TV7S2tG9BMT3jerku1Znr8uKxEa6ez4lxb+UmUclGoZHKmhZ3As5+/2z9gkBykungSs9ozZIdFjJM4hD3HdlNgmV1Uhgn7Q62ZbM9J55q2LbIfau4NxtZjwOg9unUl+CZltkibtX2LXED7wdpsxbNxXf/wj1kWm5famV3QW9ljTelGMtgN0ME5ywCGqoc/6jK1VVkedry3A+jQjCdrBQgr
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR08MB7215.namprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(346002)(136003)(376002)(39850400004)(396003)(366004)(451199021)(83380400001)(86362001)(2906002)(26005)(6506007)(9686003)(33656002)(316002)(6666004)(71200400001)(91956017)(478600001)(7696005)(66446008)(122000001)(66556008)(38070700005)(55016003)(186003)(38100700002)(6916009)(8676002)(64756008)(5660300002)(66476007)(41300700001)(66946007)(76116006)(8936002)(52536014)(82960400001)(9326002); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: Pp3RI7+UiSZ2b902FSdSmwEzbDHl0mIfVgOW3nQm6hjQD+qmPJCxQOQ45iBGRCLGqkxRChxneDypaI+jxpcYstT1Iqj4c9+y9Ie5QzInKwuMthRVXdNjDj8DqUG2n/fO/o0CGeemmK2Nx7k5MuxbehlofBtOD0hlE/FA2bsNnBU75tpMaIud+QYLi0XakSUPZaL7nUGd51eMMUet2cnDNMxATqnrbWxH6d6M7flswtUvlKhE/FdobFOK09I4hz0PMcWKIFccVGLHHPkcqw4lXosEKcBUFPB0jgZoa9brGx0QY3nxpcMmslXlKpkc/uwVFormt5CudwaMUK5OettuHdnU4xuJ8gG3xi1t7Ure+IGjnYLKRvX79k0FWjcJtfKW4qXXoF7OXlYJ9UPP3wwWtOllcUwxkOj4j2a/OKxFX+RKUnJBxzBimD6EVDp3yExRwXRsuJ72ekllGsdHyl0LZaOtfG0id1Q/fiPpx+mUAPjcLWrMSoVx+nSP/7J69UXPMvbCAbUCp21WY3MJ+30kl6IIMxn3nJwisiDCw8dQo8fIFElfs4Ib0+4of54CxLIud8JqbA1mXN/BLl/C0x0s96Pr0wva1by2QOcf17NRpJm78Zr5Cuq4i0KDMfvyCPpAvXNNwKlv+bbsbwMahFO3BTna7Qgndnr8m4GSCASd2OCOuLZvnz+8MqShKo2wrcmESFhipJAu8+yS/e/FPX1x48hDz8ELbR+6SX/R5nbI6o/siE68l+siiitXr2V3dHbDMtBJJhPphU0csGRWp/LYr3yDcHcoNLkmKI6NGh9kN7UZXHfQnY1fLYOXkvu3N+u8liq/082+vk/XUccVEhnMFN22vDJCgfHznvjUvKx31ApQKwBe6p9nMTp28MXIcpgRJ0uyFLbeb+QJ3W+kAdrYiWYa8/FHMG9gp8dYZ1fmR8iRyN1cVlCB7DkLmnOVu6qnoYvw7u943V2MEJa7eHTep6c0gtJOKeN0VNfmp+HsEaB5oa0/+pqQUv2xixjwMXVb7wJMNzIkq7bM9OCqcr4EK2W6iqQplsPOV8F5VusqWfhZSOH9Cka8MkEc42DqLH/My1V+SEwzCtPx4VvnIJ3l45FRTkXvThXoVlxT79ihBxNyjrzmYl8omtm5ZS36fO1sLJx8RbU/UE7tqv2wHvuZ1TIYgr7GbX2eIp5n6vZG64Sb4GJC6BZ4WO1VKbg1fWISYQ31HwIhlDV2AJ+lz0bOO+NCUNiNsTxKAdnZTS+IZbqt21l5wxejduIpeW6K7rPg6Mp7dYJh+SNKyUcB7iTb5C9nhb3zTG4fRSLDayPOTQA3tfOROU+f9Sn25lYa6vp3TVYnjqwTGJRBubXv9BJVss+LECg/7MJ39B8kvOiml/NhnulRO6goBC1axtm9xvPiYQj3ij3Gyo703Ans2Anzw+hDmsl7bEcMdvUUF8xGphhiiGZ4/xcsvlLbXv5BBXbNRlWnKNX2SKBExpasqGEpiAaXfEa+BZm01v82NsJgK1kCG7bJAaYUepaVFKaSubN74sVIxdFasK0Xb36g45i7zcjCq6hGYq3pLHyXy2V9uKUrqxp943Tbhpd/s6+9lr8U
Content-Type: multipart/alternative; boundary="_000_SA1PR08MB7215DE6EE0A5B445608C1A61FF8A9SA1PR08MB7215namp_"
MIME-Version: 1.0
X-OriginatorOrg: nokia.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SA1PR08MB7215.namprd08.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 365e2245-7834-488e-ba71-08db2e92a456
X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Mar 2023 07:12:36.0008 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5d471751-9675-428d-917b-70f44f9630b0
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: XDnOM7OQE5ukziPrhYQL9SpYhL1FWah00YiHj1ma9zcoMcllmq78f3Sox5wdJBv16beexx9cegUvtbL37MCb8Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR08MB7737
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/RFKKP6s5wi6PaWvg_0MzpZeXAtE>
Subject: [netconf] draft-ietf-netconf-transaction-id-00 review
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: NETCONF WG list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf/>
List-Post: <mailto:netconf@ietf.org>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 27 Mar 2023 07:12:45 -0000

Hi Jan,

Sorry for the delay but I know I promised you a proper review of the transaction ID draft.

Thanks for the hard work on this one, I think it’s very useful.  The draft is well written and generally clear.

As a general comment I would like to see some more inline XML NETCONF operation requests and responses to illustrate some of the points inline.  I know there are a number of examples at the end and there are some diagram examples but sometimes seeing (short) actual request and response messages is useful to help understand the specific point being discussed.

It might also be useful to review RFC7951 for the proposed JSON encoding for any tools doing conversion as well (this might be as simple as saying these are treated the same way as metadata annotations).

I don’t particularly like the “!” etag option.  Have you considered the allocation of etags immediately, even in a candidate?  This would allow for txid operations (conditional) to happen on a candidate configuration as well.  These would be allocated on an edit-config/edit-data operation (and returned to the user) and could be overwritten with new ones on commit (and returned to the user) (comments below detail where this is referenced in the document currently).  I believe the NETCONF spec might need to be updated if the OK message is to be extended to allow additional information to be returned on a success message.  This approach might also lend itself quite well to RESTCONF if txid is going to be applied there as well (although I know that already has an etag and I’m not clear on the interactions between these two solutions – but perhaps that’s alright).

Some specific comments/observations below:


Introduction:


  *   The introduction doesn’t explicitly state that this draft will not discuss state (config false) data and it probably should.  I know this is a question that came up when I was discussing it with colleagues.  You can derive this from the spirit and content of the draft (particularly the last paragraph in section 3.2) but an explicit statement up-front might be beneficial.

Section 3 - NETCONF Txid Extension:


  *   The compare operation (RFC9144) isn’t mentioned here.  Do you have a view on how/if TxID should be used with this?

Section 3.2 – General TxID principles


  *   ‘Each server MUST maintain a txid metadata value for each configuration datastore’ but it is unclear where/how this is envisaged being stored.  The top-level element might be one place but really this is just another versioned node.  The entire datastore may a txid value added to the NMDA datastore itself but then this would need to be returned outside of any <config> item returned from a NETCONF operation.  Perhaps a section of entire datastore txid might be useful describing where it is stored and how it is interacted with.

Section 3.3 – Initial configuration retrieval


  *   You mention this ‘The exact encoding varies by mechanism, but all txid mechanisms would have a special "txid-request" txid value (e.g. "?") which is guaranteed to never be used as a normal txid value.’ In the second paragraph.  I believe you are intending to detail that sending the get-config/get-data request without a txid would return the configuration with no txid values, sending it with a txid of ‘?’ would return all of them and sending a specific txid would return those nodes with that txid?  Is this is the intention perhaps this section could include some updated wording and some examples of each.  If this is not the intention, perhaps just omitting the txid value in the request would return all txid values on a server that supports txid.  Receiving this data won’t hurt if you choose not to use it (other than the additional characters being streamed).
  *   In the note at the end you mention the proposed options for the format of a txid.  This might be useful in its own section, particularly the details about the values not being contiguous increasing numbers.  We should also cover attempts for txid collision avoidance.  You do have something more about this in section 4.1 but perhaps splitting this out and referencing it from both places might be good?


Section 3.4 – Subsequent configuration retrieval


  *   This section is probably the least clear in the document for me.  Could you provide some examples (XML inline for each bullet point) to explain the behaviour and the expected results.
  *   The second bullet seems to imply that the match is an inverse match.  i.e. getting with a specific txid would return things that do not match that txid.  Is that the intent?
  *   How does subtree filtering get involved here.  It seems some of this limiting config output based on specific txids may sit in the subtree filtering rather than the main operation.

Section 3.5 – Configuration retrieval from the candidate datastore


  *   We should add some wording here about how this might work with private candidates here.  In these there is a high likelihood that the data in the private candidate does not match the running (or global candidate for that matter).  I think this should be somewhat straight forward though, txid requests on a (any type of) candidate datastore would return data from the candidate datastore only.  It is possible that the txid value could change in a candidate through transactions not made by that session (global candidate or continuous rebase mode private candidates) but as long as this work targeting a (any type of) candidate returns data only from that candidate I don’t believe this creates any sort of issues.

Section 3.6 – Conditional transactions


  *   Typo in paragraph 3 (confiuguration)
  *   Paragraph 4.  I like the idea to return the new txid with the edit-config response.  I think this should be standard (mandated) behaviour for devices supporting txid.  You did mention a client could request this behaviour (but didn’t detail how) but I think if you just made this the default you wouldn’t need to.  This will also address the use of the “!” etag mentioned later.

Section 3.7 Transactions toward the candidate datastore


  *   I believe this section is equally valid for any type of candidate datastore (incl. privates) – perhaps we just rename the section slightly to “Transactions towards any type of candidate datastore”?
  *   I am not particularly keen on the “!” and its use (see the section top of this email), this is also only briefly covered in this section as a comment to a picture.  Perhaps a reference to where this is discussed in the document would be useful in this comment.

Section 3.9 – Other NETCONF operations


  *   Commit – You mentioned in section 3.6 that the client could request returning the new txid on commit.  Did you have in mind that this behaviour request would be made in the commit operation, if so we should probably mention that here.  I don’t think we should (see my comment in 3.6) but if you think this is the approach, you’d like to take maybe here is the right place in the document.

Section 4 – Txid mechanisms


  *   I am not a fan of the current statement in the last paragraph: “If a client uses more than one txid mechanism, such as both etag and last-modified in a particular message to a server, or particular commit, the result is undefined.”.  I think if this is going to be defined as a txid mechanism then we must define what happens when we use both.  Given that the txid etag approach is mandatory and the txid last-modified is optional, this feels a little like the last-modified should be written as an informational annotation rather than an actual txid mechanism.

Section 4.3.1 – Candidate datastore


  *   Typo in the second bullet “candidata"
  *   Second bullet – This means that when you submit a number of changes to the candidate they are assigned the etag “!” until <commit> when they are assigned their new values.  I believe the solution at the top of this email might be simpler and more flexible.

Section 7.2 – Unchanged configuration


  *   Typo in first line: ‘confiuration’


Thanks again for the work.

James