[netconf] Rob Wilton's review of draft-ietf-netconf-privcand-09
"Rob Wilton (rwilton)" <rwilton@cisco.com> Tue, 21 July 2026 09:48 UTC
Return-Path: <rwilton@cisco.com>
X-Original-To: netconf@mail2.ietf.org
Delivered-To: netconf@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 1F2F511B36465; Tue, 21 Jul 2026 02:48:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1784627306; bh=xP6h1KBcSO6qYE2xB8NODBf9Xauoa2e8E7oJqz+HckA=; h=From:To:Subject:Date; b=MHjNLdOqL3IeFdsZhurqsGJxlG0pR4JFaxbwvSbydElQecNSy0rPNfHpr5/gPBh72 ZPG6GlS+PFGcUFWh09ZHn5xhNzXpVmtvyGn/GpnUYb7iihtnb4XxsYJXhSww4xAvKw 8k2xGRArj47LAhbwjEdEEwLsNMiBkfmpzUpL4MJU=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -11.885
X-Spam-Level:
X-Spam-Status: No, score=-11.885 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_NONE=0.001, T_SPF_HELO_PERMERROR=0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=cisco.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eWRS9jd414iT; Tue, 21 Jul 2026 02:48:24 -0700 (PDT)
Received: from rcdn-iport-3.cisco.com (rcdn-iport-3.cisco.com [173.37.86.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 8ACA211B36455; Tue, 21 Jul 2026 02:48:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.com; i=@cisco.com; l=70629; q=dns/txt; s=iport01; t=1784627304; x=1785836904; h=from:to:subject:date:message-id:mime-version; bh=zp2oFDF8/wJiF92UHQJamce/JC1A4wKBWe+xTvsD43g=; b=JXwAExWxQWeV+QWU1oXthoBfrk1ve7Ta1fpDY7gnAmpz0ZPq20lDqsqq iBFRC0oQhEz+QSyHvtqcv9xWzIxNEv3OGE67RA6WHJ4sC+4B64XTTLSGC uJZV4wOvJrL2B3OriAu9n3i7haHHEwob7xg77I0N+Z9wDR5j08kfeTqHh 4C1eqITMMdLDlDpV3bFmMkbQ6Uq3Tk+nW97zKMU73aFLt30OYZ5reL40U /hqvHQyn+SlZ2L7ybSALDSYovYA0jdz9++GeRGw4Jan+8GpaEmpvNwxCw Lr1tu29k08S0IaFRrkC8BfISFKN9dKjkmjFFHUQ0YB8aAh+Z/oFNsQ9Vk g==;
X-CSE-ConnectionGUID: gyWC8EhkSAmJ2ny3WKN9dQ==
X-CSE-MsgGUID: 6vtC4OfeRaW9DPh4XAQwUg==
X-IPAS-Result: A0BlYgDxPl9q/5L/Ja1agS6CaDEqKYEKWkdJAwUBiBoDhSuGWIIhgRaWbYE8hHOBag8BAQENAkQNBAEBhQUCjVcCJjgTAQIEAwIDAQEBAQEBAQEBAQELAQEFAQEBAgEHBYEOE4YVBTUNhnMIDWQBQAE+JwQBGhMHgmGCHVcDAQIOBrMBAYE9AooqeIEBM4EB4DEGFIE5iFwBKoE1AYQWATuEQScbgUlEgRVCgWdKg1cCAoFEAhqEE4IwBIINFXoSg26BYYMeMIhogUQiAyYzLAFVExcLBwWBMzMDIAovLQIULw8EFjIdcAwnEiwXNFgbBwWBHX8vgQKEbiMfAzl/gS91SnctahIXgSaCFIE6Ak4DC209FCMGDhkDBIE1BYxkSRkjgUgFJhktBgEBBQgREA4WEAQNBwQVAh4EAhcJAQ6BHg0KIA8nAwsvA5JXERyPPEejMAqEHYwhglmGCI0PF4QEjRSYLj9nmQgjgjaLMZNGgiKFJgIEAgQFAhABAQaBfyWBRgwHcBU7gmhSGQ+Fa4hCFoEUAQKHXMkneQIBAQEOKgIHAgcOAwuRai1vYAEB
IronPort-PHdr: A9a23:X9uBYhTCYx8ge+mq09wtepLxudpso47LVj580XJvo6hFfqLm+IztI wmGo/5sl1TOG47c7qEMh+nXtvX4UHcbqdaasX8EeYBRTRJNl8gMngIhDcLEQU32JfLndWo7S exJVURu+DewNk09JQ==
IronPort-Data: A9a23:x+U0+q7AVNdvyQECT/AsKwxRtGPGchMFZxGqfqrLsTDasY5as4F+v mAdUGqOM/6CZGqkctpxO9nn9kpTsJTVmtJqGgNlryAzZn8b8sCt6fZ1gavT04J+CuWZESqLO u1HMoGowPgcFyGa/lH2dOC98RGQ7InQLpLkEunIJyttcgFtTSYlmHpLlvUw6mJSqYDR7zil5 5Wo/qUzBHf/g2Qqaj1OsvrawP9SlK2aVA0w7wRWic9j5Dcyp1FNZLoDKKe4KWfPQ4U8NoaSW +bZwbilyXjS9hErB8nNuu6TnpoiG+O60aCm0xK6aoD66vRwjnVaPpUTaJLwXXxqZwChxLid/ jniWauYEm/FNoWU8AgUvoIx/ytWZcWq85efSZSzXFD6I0DuKxPRL/tS4E4eMpwn0bZaAWJ13 Pk6cjYcNS+gobO6+efuIgVsrpxLwMjDJogTvDRkiDreF/tjGcGFSKTR7tge1zA17ixMNa+BP IxCNnw1MUmGOkERUrsUIMpWcOOAnGb+dyFfrnqepLE85C7YywkZPL3FbYOOJIPSHJkM9qqej jzY40+lJR8XDtWgmBa98i6cr9bQoCyuDer+E5X9rJaGmma7wGEPAxoQWx6wofC4kFWWWt9DJ QoT4CVGha4/6EesSNfVXhCkrjiDpBF0ZjZLO/cx5AfIzu/f5ByUQzBVCDVAc9ch8sQxQFTGy 2O0oj8gPhQ22JW9QnOG/bDSpjS3URX550dbDcPYZWPpO+Xenbw=
IronPort-HdrOrdr: A9a23:j7uvy6GjCSfVS9EwpLqF4pLXdLJyesId70hD6qkvc203TiXIra CTdaogtCMc0AxhJU3I+ertBEDyewKhyXcV2/haAV7MZnichILFFvAH0WKA+UysJ8SdzJ8m6U 4IScEXY7OAbykesS+Q2njfLz9U+qj+zEnev5am854Cd3AMV4hQqy1CJkKwFEpwSANaBZw/Oq a9y6N8zQaISDA8VOj+ImMKcdTiirTw+a7OUForFhQn4A6BgXeS7qLmEx+X5xEaUzle67Yv+2 rInmXCl+meWveApSP05iv21dB7idHhwtxMCIinkc4OMAjhjQ6uecBIR6CClCpdmpDg1H8a1P 335zswNcV67H3cOkuvpwH25gXm2DEyr1f/1F6jh2f5q8CRfkN6NyMBv/MYTvLq0TtjgDhO6t MP44tfjesSMfr0plW/2zEPbWAsqqP7mwtlrQdZtQ0hbWJXUs4ukWVYxjIbLL4wWATn9YsgDO 5iSOvY5PpQbBemSkqxhBg3/DRpNU5DRStvhSM5y5So+ikTk3Zjw0QCwssD2n8G6ZImUpFBo/ /JK6Jyidh1P4YrhI9GdZA8qPGMexrwaAOJNHjXLUXsFakBNX6Io5nr4K8t7OXvfJAT1pM9lJ nITVsd7AcJCgnTINzL2IcO/gHGQW27UziowsZC54Jhsrm5QLbwKyWMRF0njsPlqfQCBc/QXe q1JfttcrfeBHqrHZwM0xz1WpFUJ3VbWMoJuswjU1bLuc7PIp2CjJ2uTB8SHsuZLd8JYBKMPp JYZkmCGOxQqkSwHmT1iBLNW3XrYCXEjONN+YDhjpsu9LQ=
X-Talos-CUID: 9a23:iGqgEG+naewcoe2N+bmVv0EFJet1X33e917VARW+GD1Wa5vERWbFrQ==
X-Talos-MUID: 9a23:1uKNGAuj1wMir7pBOs2n2i9+H5tP7amUAX9cva0G5/mtDDNNNGLI
X-IronPort-Anti-Spam-Filtered: true
Received: from rcdn-l-core-09.cisco.com ([173.37.255.146]) by rcdn-iport-3.cisco.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Jul 2026 09:48:23 +0000
Received: from rcdn-opgw-1.cisco.com (rcdn-opgw-1.cisco.com [72.163.7.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by rcdn-l-core-09.cisco.com (Postfix) with ESMTPS id 514A218000480; Tue, 21 Jul 2026 09:48:23 +0000 (GMT)
X-CSE-ConnectionGUID: vHL3xARLQZ2R74VZukvh7A==
X-CSE-MsgGUID: /P/gWgbBSm2bNLn08Ey0lA==
Authentication-Results: rcdn-opgw-1.cisco.com; dkim=pass (signature verified) header.i=@cisco.com
X-IronPort-AV: E=Sophos;i="6.25,176,1779148800"; d="scan'208,217";a="65339610"
Received: from mail-westus2azon11012062.outbound.protection.outlook.com (HELO MW6PR02CU001.outbound.protection.outlook.com) ([52.101.48.62]) by rcdn-opgw-1.cisco.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Jul 2026 09:48:22 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bMD9qiQYDu8/Pc4D4V83a4qhZwMGqL89q/ItBu4s1IR5b1etHuXBo5vccGvHRLoinLDUGEAoDodcqO2x3rEyW34E6vLvHmmnn+dWkigG2vA0NoWfruTvoGZdtQjekIrZwvf335yCrefiWLUgrtovroL2sIWotaGpFG4jovEM6qnLFDLC13v73vpJoEOVP5YT2hqvl4SKCLoHU/gwtFFHziwedTNlTYfXFxjBnhuGE4AeVOOSYDoTwJoYUM6TgYucTJgNOubm307+un6Diga52J2n5aqgFd4lSRHbcYmG8UQpvgx96qMN7t1fspwbF/8anU4kdhYDIl/cBw9j8cGvlA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=zp2oFDF8/wJiF92UHQJamce/JC1A4wKBWe+xTvsD43g=; b=GOYgo0HIjaf/H0CZpnB9gAfxDXVKls6R234thxHl1GzUKebm9KWa82n+1EMaUj4J5EDW6Cq/dpotilCZBi+6ISbIHei6TGZcGarSC07lvOdaRSI6F/LR/H7k8507HuCnHC7zB9Z9XkcK9vytu17lZFhlKogoG588O9GSKBSIO4IE6Y7VrPRRs0PJb2+LD0/C0KIg6hMzZ15GySLbL7qq3rFLY1kU03dgpmz1rXfIFUP+8uVE1JhelAYtsY/kpeYhmpyh95RnulxPKJKz3uxaT+l9ryCLQ+z6dBWDvncg3P3viQ+5EARx9NEvre7xzNAyG6XtoVN9ynUa2umtlC86sg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cisco.com; dmarc=pass action=none header.from=cisco.com; dkim=pass header.d=cisco.com; arc=none
Received: from DM4PR11MB5469.namprd11.prod.outlook.com (2603:10b6:5:399::13) by IA3PR11MB9064.namprd11.prod.outlook.com (2603:10b6:208:57f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.18; Tue, 21 Jul 2026 09:48:19 +0000
Received: from DM4PR11MB5469.namprd11.prod.outlook.com ([fe80::fcab:25ed:a265:2683]) by DM4PR11MB5469.namprd11.prod.outlook.com ([fe80::fcab:25ed:a265:2683%3]) with mapi id 15.21.0223.017; Tue, 21 Jul 2026 09:48:19 +0000
From: "Rob Wilton (rwilton)" <rwilton@cisco.com>
To: "James Cumming (Nokia)" <james.cumming@nokia.com>, "Robert Wills (rowills)" <rowills@cisco.com>, NETCONF WG <netconf@ietf.org>, "netconf-chairs@ietf.org" <netconf-chairs@ietf.org>
Thread-Topic: Rob Wilton's review of draft-ietf-netconf-privcand-09
Thread-Index: AQHdGOJEms9hfuLtrEOi5k2Ji/u03g==
Date: Tue, 21 Jul 2026 09:48:19 +0000
Message-ID: <DM4PR11MB54697427AE814577E2697BCCB5C22@DM4PR11MB5469.namprd11.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-reactions: allow
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DM4PR11MB5469:EE_|IA3PR11MB9064:EE_
x-ms-office365-filtering-correlation-id: 156acdd1-26f5-4347-044a-08dee70d3227
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|23010399003|376014|1800799024|38070700021|13003099007|6133799003|18092099006|18002099003|56012099006|11063799006|5023799004|10067099003|8096899003|3023799007;
x-microsoft-antispam-message-info: kgtnibxU8XUr8ErZcSRkkGm8mTcjFz3Sw0TCczgfJn91FMG2TILK4p/Ov34pxV6LKdSTM7pDaLTFp1UwOBOuBuSZ2EUOiOeBdT0AyMgNSzztd7wg9QcwmFmLxoznZqATp1LOK0AD8m8MmJhl5gJ5kqAoE8XzIQfXN+rmBwyyJwM1uGpbu1HXaibI3CDCwdQVW94jdwONTvumKz43GqZ5xRh6Bb3N9bm+s6GsaSvRJ6ThnzHksrEtsxs7loCkgiJiDig6VihoaCwSlR/uAEhQ5VLZvDxO42Tfi0rYsUYZfeGdDujJQRkh/SYLDWNc92c2gtseerAm3Vh4lZwSYM2yPy3R57kJP/zIsf6oxXmNl1geymjzDo8crjC8v3wAPUPcrcqkqVI2IdEJFmD7z9f10H82hW7QdrbUy1pjuKtWmy0I5jMywu/NpTRnpplo1RxNb7JvT1AADKVHoXAckWI6+ZI2Sm47DadCOWH9sgToSlNfbzvkENs5thq+oFMRzxJxokiyuz6ah1un+NUrm8B4xl21IrTaBowzGLgcOT3YLTAAJmCmDlwSpHgl3+vi28cY08ZviWD3EP0UIRVgc84Y3G2/31MkP6ss3BkEqk05F7AfCKDbjrIdGYzvrP+AxSkzml+cvChF9lHB62fAm2HwcvQTojMj22KYav6zU9tbwqN+jYusI9FAcKcJaTc9XSU8+JYY5jA83yrziw4EitEIquJig7CTPDdaCel9N0ZCucI=
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5469.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(1800799024)(38070700021)(13003099007)(6133799003)(18092099006)(18002099003)(56012099006)(11063799006)(5023799004)(10067099003)(8096899003)(3023799007);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: iPaRx9RnIjlmqX6rgDH7Cx5LFQWooVEgEi/pPc+XTXKdK2t6pTGtbumFzlkleOZoWddcNY4TaXdOQ1UU3YThtTSo1U44mCkR6s7xXrhElsLba43OzPZKGkvPlqudsy7E7drGX2PxYl6s572u8NjSPy5HkVt6+0WGdYRkIDAE8JEwB/Et+WdYpN6N1noIjh0pRd1ikx/JxldEYeMQZfshPe9R0UCzhiPoFzdlFjkpZq8qnXujzNhMafMwpTVPAAARYXEqWTos7CEwLHHXqu2iUCyHNHurpmht9phAkbBrdi3ybL8Iy28fjcgUM9Wt4YYq1IkKLgDJu22uYPeYOs/barz7Dj6LV2gsa6Kh7zzBZQhN/qB9pniNokcWge7oFJ19SSHOQNIrg+DG3HNfsPsMiGMi6PstuwZPM3TScHFyDfaAgHqjRLsdJOMrW92FobW+WJcCPUZHH7Ncnfd1I9TmhZbt2yhP5s2Yd+Ck+Wmbml28sExzfZOlYhnCxLtUpaxsDBkSFWmkaDwJeFRyas8PCjzcGuJNZ54dv9vf8wRwN9f1Zz+Z4QxQMNPp/jv7WzMjO4/4d5COX4rnM2dIVIBs95daqUTXqjjFkX1SdE8sQyUmEu1aUVSG1PlNaC84+m2u7ZFlOBNUFFx7m3wGtm+WHcuR0yh3qfoQrnYET1fZGvATRrOxJeFWvlguvXEmtGHnJogr19RG+NAO8+vq8IP4M+lhKGmTOxGvHs0CzJsCRINzYIOeJ+h943+epy0+DTIELWlSMGTmuOlrW1eG7rp5JpmNgWnPb62/gAO928WHad2KtCvfjAPhsKJs14UrISfueWsJneCHygwmoTcQSoyjEkdDfJyu2DBKZjKLDzAn2AsEKMNaSSBzJ7n9QKx48e16RgCH63u9X3lNrGnczglgQUvRDtE4kP68uooaTP8vODQX4bdiKYauFzg0uykmVdiI4ibhkiQzV4WfmySj3LckumPEDweZqWVwMyydRiBrmYdoq0GTX456Rd29qP8qH1jr8vhRjsgMp8HdaAVero2t5I7LKvt14CZCRqCyO9LYNw0nsWSlvJiVezbCa4zwBPQwIgenCoBLOH17Vm+Y5zjUqKb4zj2amT+4VEQ8W5KX4KljmbMJCePuDqLLZyYakJnxIwI9AOpv4Ty/Ivp6usmGd+nPgfELXP76uTibJhOYQmKw+FZXB/tT73whpZ+9/sNnHkCJYQJt+Ke/sd+PG+MMH++l3/c8M/EYFca8l6NfA7BstVmQyAnsKQctRlXgZKvQA9lPGXyrunjAnAE7lRyH9N3dh4Zzycv3qJqviFLYlOuAUx1sOtDw/zA92m2iXwao9DiFKqs0hMcIVN/NY7s9dUt5/tq1VW+dPiHELWrid0yUoRwcsRX4375owm3GlcOwkLcWR9DjEoqAN6soC40TcmgD3fUmKmsT8I6RD/PeVBiTjQUIJAiVw+IMzj5DJVgLDDDwNeEarlA6YRddAPRug/VLHt4kzFT8TKd1jpDATurme3ghl7+gK+D9itnApqMbOif9JTv9/D45tey0usrOZga04vOu0jJel3KhFLaJRrf2QPi69c1j2qHID9JVNy8tsI+YVcA3Brb8je81SqOHDwyCUZKZRE4FsDa2kfPd2rAq9RVvdLhtecKBNXshmOJYXIRylGukZdC5xdMq60tVjAUpkyVYwNQc7ZqvpdylgPVlsrJ98JVyAnbxh8oENgRPSOiawG8raddPVKUuRjpr6A==
Content-Type: multipart/alternative; boundary="_000_DM4PR11MB54697427AE814577E2697BCCB5C22DM4PR11MB5469namp_"
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked: TAZV1pz7QeZAMtSQjow1BhXVC3T7wzH3MC3kwDbOiEH9tn4GO4jUzWvra9/zpvRp8/OMOy7oYoOtjQrkFSx0qxplYfvok/hi8KdLCr+ogIU2pFzOsLfm9yQoydiH0G7eVbBsq7nFrkRs5Gpac7zBKEQT557BMxC2SzwVgCTofHubw9aMuArTmiQpXp+YxJLRTQCLU4H6GGhS1jbS1/KRn232/DcsCfc2sPurqOiWIcI5uwoQsMq/92JGYI0ARBiDE+1sJc3QWYEfLSGyMG9Xpp6J2HCmpCTlZ+no1IIo5x5eWjeJVyy4AZvczJlpTTR7zLr32qauOgLuDgJ3ngsW7g==
X-OriginatorOrg: cisco.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5469.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 156acdd1-26f5-4347-044a-08dee70d3227
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Jul 2026 09:48:19.4742 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Ph6s5C5EB+nZloBPFAzP4VYyQgFFvBPR0wxzfWGVz4Asp/lTGZQSawsgPw3todXAwwhCySbLLcZtf00hzM+vmw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR11MB9064
X-Outbound-Client-TLS: ANONYMOUS;rcdn-opgw-1.cisco.com [72.163.7.162];TLSv1.3;TLS_AES_256_GCM_SHA384;256
X-Outbound-SMTP-Client: 72.163.7.162, rcdn-opgw-1.cisco.com
X-Outbound-Node: rcdn-l-core-09.cisco.com
X-MailFrom: rwilton@cisco.com
X-Mailman-Rule-Hits: implicit-dest
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-netconf.ietf.org-0; nonmember-moderation; administrivia; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
Message-ID-Hash: EDUQSD7JEN5QQ3HSRDXYV57VRTGVMSGS
X-Message-ID-Hash: EDUQSD7JEN5QQ3HSRDXYV57VRTGVMSGS
X-Mailman-Approved-At: Tue, 21 Jul 2026 02:57:09 -0700
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [netconf] Rob Wilton's review of draft-ietf-netconf-privcand-09
List-Id: NETCONF WG list <netconf.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/2S3UUmuoTYA-8bq73RnBB6zIQB8>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Owner: <mailto:netconf-owner@ietf.org>
List-Post: <mailto:netconf@ietf.org>
List-Subscribe: <mailto:netconf-join@ietf.org>
List-Unsubscribe: <mailto:netconf-leave@ietf.org>
Hi James, Rob, WG, Sorry that I didn't get a chance to review the changes to the private-candidate draft sooner. Because of the length of time, I just did a clean review of the latest version of the document (draft-ietf-netconf-privcand-09) without looking at the comments that I raised previously. I believe that this document still is not ready and I have flagged quite a few comments below, some of which I think are the same as I raised previously. Quite a few of the ones below are editorial, but some others are more technical in nature and I think that they need more clarity and discussion to reach consensus so that they can be closed. 1. I still find the doc flow to be out of order around the introduction where the private candidate datastore is defined before it is used. I.e., too much text is 2.3 before the Introduction in section 3. I would propose that you keep the first sentence of section 2.3, with a forward reference to section 3.1. Move the rest of section 2.3 to 3.1. Sec 3.4: This rebase is conceptually described as replacing the candidate configuration datastore with the current running configuration datastore at that point in time and replaying the configuration changes from the candidate configuration datastore against it, identifying any conflicts as this process progresses. 2. Does this have to replay a list of commits in private-candidate (i.e., like a git branch rebase operation), or it is allowed to just apply the resultant combined diff from the last update/branch point? I think that this might need to be more carefully worded since different implementations (e.g., GitHub rebase like operation or GitHub merge like operation) may end up with different behaviour and semantics. Or possibly, they end up being the same. I've not thought deeply about it ;-) Sec 3.4. A server may choose to automatically issue an update when any client updates the running configuration datastore. Triggering an update in this manner must be specifically chosen and signalled by a server using an optional parameter to the :private-candidate NETCONF capability (see Section 3.5<https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#how_to_signal_privcand>) 3. The document has to more clearly indicate that servers work in two modes, e.g., manual user initiated update operations, or automatic server initiated update operations. The server indicates which mode it is running in through the NETCONF capability exchange. Note, I also think that it would be useful to indicate this in the Capabilities YANG model as well. Sec 3.5.1. If a server chooses to execute an update operation automatically when any client (not just the local client) performs an update to the running configuration datastore it must advertise this behaviour using the following optional parameter to the capability: trigger=all-updates. 4. This could be clearer. I would suggest writing the full capability with the optional parameter, or perhaps you have an example that illustrates this that could be referenced. Sec 3.5.2. In order for the use of private candidates to be established using this approach both the NETCONF server and the NETCONF client MUST advertise this capability. 5. There is no capability exchange to force the client to acknowledge that the server is running in auto-update mode. I think that the client should also have to explicit acknowledge this since it changes the API contract between the client and server. Sec 3.5.3. RESTCONF does not provide a mechanism for the client to advertise a capability. Therefore when a RESTCONF server advertises the :private-candidate capability, all client requests will use a private candidate when the client references the "{+restconf}/data" resource described in Section 3.3.1<https://rfc-editor.org/rfc/rfc8040#section-3.3.1> of [RFC8040<https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#RFC8040>] All edits are made to the client's private candidate, and the private candidate is automatically committed. This ensures backwards compatibility with RESTCONF clients that are not aware of private candidates, because those clients will expect their changes to be committed immediately. 6. I don't think that this section is sufficiently clear about whether it is using automatic update mode, or the RESTCONF client must use explicit <update> operations. Am I right in thinking that it must effectively operate in auto-update mode to not break existing clients? Also, do you need to consider what the update conflict semantics will be, because if you fail the operation due to a merge conflict that would that not also break existing RESTCONF clients? 7. Sec 3.6. I suggest putting a '|','*' or other symbol on the branch line to indicate where the edits have occurred (i.e., above the ^ symbols). If the key was explained then you could then use these to show edits in other examples. Sect 3.6. As described earlier, the client MUST be aware of changes to its private candidate configuration that are different from the running configuration datastore so it can be assured that it is only committing its own modifications. 8. Does this statement hold true for the auto-update case? Either way, I don't think that this should use RFC 2119 language (e.g., "must be made aware"). Sec 3.6. Each private candidate is treated as a separate branch and changes made to the running configuration are not placed into a private candidate datastore except in one of the following situations: * The client requests that the private candidate be refreshed using a new <update> operation * <commit> is issued from the private candidate (which MUST automatically issue an <update> operation for that private candidate immediately prior to committing the configuration) * An implementation chooses to perform an <update> operation after a change to the running configuration by any other client. 9. I would suggest changing this to a numbered list. The third sentence should be reworded to something like: "The server runs in auto-update mode and so it performs an automatic <update> operation after any change to the running configuration has been committed by any other clients." Sec 3.6. To provide visibility into the differences between the private candidate configuration datastore a <compare><https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#RFC9144> [RFC9144<https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#RFC9144>] operation MAY be performed against: ... 10. I would move this text about the compare operation into a 3.6.1 sub-section to keep it a bit more distinct. Sec 3,.7. When this happens a conflict occurs for each node modified in the running configuration that is also modified in the private candidate configuration. A node is considered modified if: * There is a change of any value * ... 11. So, for clarity, I want to check that my reading of the text is what you mean: If a leaf started with value 10, and a private candidate changed it to 20, and it was changed to 20 in running (from another commit) then when attempting to commit the configuration in private-candidate to write the same value as is already in the running datastore this would be regarded as a conflict and an update would need to be performed? I would have thought that many clients might regard that as a null merge and not a conflict. you would regard this as a conflict? Sec 3.7. A server MAY choose to add extra checks in addition to the list above. 12. It is unclear to me what these extra checks might be, or why a server may add them. Can you give examples of what these additional checks might look like. Sec 3.7.2 The mechanism by which a server marks a node as "in conflict" is outside the scope of this draft. 13. I think that this sentence can just be deleted since it is talking about internal implementation details which normally would always be out of scope. Sec 3.7.2 The client MUST be given the opportunity to re-evaluate its intent based on the new information. 14. As per above, I don't think that this is a MUST and I think that this statement conflicts with automatic update and resolution since In that scenario the client is not informed about the conflict. Sec 3.7.2 A <commit> operation (that MUST trigger an automatic <update> operation immediately before) MUST fail irrespective of any system-wide default resolution-mode. It MUST inform the client of the conflict and SHOULD detail the location of the conflict(s). 15. The nuances of this statement when a server is running in auto-update mode are very subtle and it needs to be spelled out more clearly, since if a server is running in auto-update mode this basically doesn't happen because the update will already have previously been performed when the other commit occurred and hence this would always be a no-op. Sec 3.7.2 The location of the conflict(s) should be reported as a list of xpaths and values. 16. This appears to be underspecified to me. What is the error type, tag, etc. I think that this draft definitely needs an example of a error conflict being returned. Sec 3.7.3 When a conflict is detected in any client-triggered activity, the client MUST be informed. 17. How is the client informed. Is this as an error in whatever operation is being performed, or via another unspecified mechanism. I think that more clarity is required here please. Sec 3.7.3 Conflict resolution<https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#name-conflict-resolution> 18. Is it ever possible for automatic conflict resolution (in whichever direction) to result in an invalid configuration? E.g., there a dependency between two leaves and one is modified and the other is not? How is this handled? Would this just end up being a config error at commit time (or if the validate command was run on the private candidate datastore)? Sec 3.7.3.3 Revert-on-conflict This resolution method MUST be the default resolution method as it provides for the highest level of visibility and control to ensure operational stability. 19. This MUST statement doesn't make sense for a server that performed automatic conflict resolution. I don't think that you should have this constraint. Possibly the default-conflict mode should be advertised during the capabilities exchange so that the client knows what it is. Sec 3.7.3.3 Revert-on-conflict This resolution method MUST be supported by a server. 20. This doesn't make sense for servers operating in an automatic update mode, or makes it harder to use. Another solution here could be to allow or force the default update mode for the session to be expressed and determined during NETCONF capability exchange, although a RESTCONF solution would also be needed. I think that part of the issue here is that you mix the description of the resolution with the assumption that the resolution is performed manually rather than automatically. Section 3.7.3 A conflict is detected, the update fails with an <rpc-error> and no merges/overwrite operations happen. 21. I think that it would be helpful to give the example of what the returned rpc-error may look like. Section 3.7.4. System resolution mode and advertisement of this mode<https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#name-system-resolution-mode-and-> 22. This sort of resolves some of concerns about issue 19 and 20, but makes the document internally inconsistent. These inconsistencies need to be resolved, which would be helped by making the distinction between the manual updates and automatically updates more clear in the various sections. E.g., a cleaned split between (i) this is the semantics, (ii) this is how it works with manual updates, (iii) this is how it works with automatic updates. I also think that there is needs to be a single section that covers all of the capabilities exchange/options rather it is being split through the document. 3.8.1.1. <https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#section-3.8.1.1> <update><https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#name-update> The <update> operation MUST be implicitly triggered by a specific NETCONF session issuing a <commit> operation when using private candidates. This implicit <update> operation always has a resolution mode of revert-on-conflict. The actual order of operations in the server MUST be to issue the implicit <update> operation first and then the <commit> operation. 23. Same issue/comment as per 15 applies here. I also think that it is better to try and only have the RFC 2119 MUST text in one place when referring to the same thing. 8.3.2.1.1 Nothing in this document alters the behaviour of the <confirmed>, <persist> or <persist-id> parameters and these MUST work when using the a private candidate configuration if the :confirmed-commit capability is advertised. 24. I would reword since you are changing the behaviour of these RPCs to work with private-candidate datastores, so their behaviour is being changed. Also, if nothing is changed, then I'm not sure why you need or want those next 3 paragraphs, can't you just rely on the definition in the other RFCs? 3.8.2.5. <https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#section-3.8.2.5> <get-data><https://www.ietf.org/archive/id/draft-ietf-netconf-privcand-09.html#name-get-data> Performing a <get-data> operation with the candidate configuration datastore as the datastore, the configuration from the private candidate will be returned. If no private candidate configuration has been created, one will be created at this point. 25. I would expand the text in section 3.2., to also cover this as an example because it may be non-obvious. 26. IANA section, I think that this is incomplete on what needs to be specified for modules. I would check other recent RFCs and follow one of those as an example. Sec A.1, A.2, YANG Modules 27. (i) I think that you should delete the private-candidate feature. Advertising the module is sufficient. (ii) Reformat descriptions to use 69 characters width. (iii) Add a note to RFC editor to replace reference to the draft with the RFC on publication. (iv) Delete duplicate revision statements, just keep the latest. (v) I would also suggest adding YANG Semver statements (e.g., 0.1.0), and ask RFC editor to update them to 1.0.0 on publication. 28. Is the comparison the creation point actually needed? I suspect that we would never support that option and would probably prefer that it is removed. 29. The last-update operation ties to the update or commit RPCs, but I think that it is whenever the update occurs, even if not by an RPC, e.g., due to an auto-update. Kind regards, Rob
- [netconf] Rob Wilton's review of draft-ietf-netco… Rob Wilton (rwilton)