Re: [Netconf] LC on subscribed-notifications-10

Kent Watsen <kwatsen@juniper.net> Thu, 28 June 2018 15:19 UTC

Return-Path: <kwatsen@juniper.net>
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 54D21130DD5 for <netconf@ietfa.amsl.com>; Thu, 28 Jun 2018 08:19:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.71
X-Spam-Level:
X-Spam-Status: No, score=-0.71 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=1.989, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=juniper.net
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 B2GpmyE1-Wsy for <netconf@ietfa.amsl.com>; Thu, 28 Jun 2018 08:19:07 -0700 (PDT)
Received: from mx0b-00273201.pphosted.com (mx0b-00273201.pphosted.com [67.231.152.164]) (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 71515130DDE for <netconf@ietf.org>; Thu, 28 Jun 2018 08:19:06 -0700 (PDT)
Received: from pps.filterd (m0108162.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w5SFDhw0006041; Thu, 28 Jun 2018 08:19:03 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=PPS1017; bh=Kj2RjjgAUWPsLAcke1aTnOkqbsNOUW+v2G0dTtWeaLo=; b=G4GRPglybjiPIvVmfUj1UneXr9ADFti/6Hi15SYhGI18A9zBjCFbIn+sHh6IL+KhLxRW jz0PUK5YyiTKa0EN1oGMksZcdjTd+dsbVL8IsZSvEKWj0sEVM0Agpf32hJweaMAB5DZN 1toHdnghvLQS4t3GbhjBUD5/4x8mMdqUmMz3+auhpxy7Iysyn7iwWZG623jMqyyArFcg 9e4/CQL9Sb4SHzNpGSr9oPTGaZqZAnSaGYVWdQsgFHlojl3D68Sj2GBTkJZckqJhm9Wg o+5VXppB40fj9xpXeslphthawg+uNpjDmRCxY0Za51pTyeBcGOMplcvTaE9ydvLrJssX bg==
Received: from nam02-cy1-obe.outbound.protection.outlook.com (mail-cys01nam02lp0054.outbound.protection.outlook.com [207.46.163.54]) by mx0b-00273201.pphosted.com with ESMTP id 2jw18ng3ky-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 28 Jun 2018 08:19:03 -0700
Received: from BYAPR05MB4230.namprd05.prod.outlook.com (52.135.200.153) by BYAPR05MB4165.namprd05.prod.outlook.com (52.135.200.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.19; Thu, 28 Jun 2018 15:19:01 +0000
Received: from BYAPR05MB4230.namprd05.prod.outlook.com ([fe80::959d:9fbe:90e4:3cc]) by BYAPR05MB4230.namprd05.prod.outlook.com ([fe80::959d:9fbe:90e4:3cc%4]) with mapi id 15.20.0906.018; Thu, 28 Jun 2018 15:19:01 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "Eric Voit (evoit)" <evoit@cisco.com>
CC: "netconf@ietf.org" <netconf@ietf.org>, Alexander Clemm <ludwig@clemm.org>
Thread-Topic: [Netconf] LC on subscribed-notifications-10
Thread-Index: AQHTvAAnlMdwSaUGiEGsguuFvEIgr6PTNMYAgAKRSACAHsEbAIAEpeaAgAxV1oCAAIbkgIAIxKuAgAHWLYCAAWPcgIABfIqAgBLPcYCAAfAGAIAHv+mAgAFNpYCADOOSAIABWNGAgArMEgCAAKtggIASeyqAgAHUMQCADcgmAIAA1tCAgAPW54CAAFbTgIAECbMA
Date: Thu, 28 Jun 2018 15:19:01 +0000
Message-ID: <4146A91F-42E3-4C81-A414-C27920CA30C0@juniper.net>
References: <17B884BF-0BB8-4B7C-BFBB-0AAFBEA857F6@juniper.net> <aedeb7390d0b4faa9f2bf12c2fe45cd2@XCH-RTP-013.cisco.com> <040a01d3be9f$09700490$1c500db0$@clemm.org> <2089023D-DA09-48E9-8F37-8FE459DC4F49@juniper.net> <dfc78f2b1062498388824b1f6dd97ff6@XCH-RTP-013.cisco.com> <1EC2E732-C524-4552-A3AD-27507239F763@juniper.net> <2b788c22f7ee4af889813b805348d69a@XCH-RTP-013.cisco.com> <9E7F3A66-98B9-4528-882C-43AAD19F0AEC@juniper.net> <96615f0331cd455182901ddf3e6ece23@XCH-RTP-013.cisco.com> <7F8F2AF4-28A5-4016-B727-10CAF6A093AF@juniper.net> <87fbe3cb907a473f816295c4545bd7fa@XCH-RTP-013.cisco.com> <CEE5B81C-31AE-40C6-B2F0-23D93C644D85@juniper.net> <fd172bddff134db6aeda49b7e8bfd3e9@XCH-RTP-013.cisco.com> <B112DC20-D6FC-44BA-AACE-0E641D49C5C3@juniper.net> <3b4744f4e2144ee18b9bfd5225360bf4@XCH-RTP-013.cisco.com> <01486F5E-CEE3-4BDD-9CD2-CA2754981000@juniper.net> <e414fe96c38f4aeba97dd56592748a23@XCH-RTP-013.cisco.com> <49943A03-D229-4084-9947-3065CE58A672@juniper.net> <a18cacd026e046b0a0c08f7a3fc969d2@XCH-RTP-013.cisco.com> <470391DD-9A9E-47EC-9CEC-E8E6BABE3DDF@juniper.net> <b94935c9fbbb4ced8b7393ea42457471@XCH-RTP-013.cisco.com> <38DB151D-81C9-49E4-B6A3-73D083298C53@juniper.net> <fd74cc7419894fec87f5af3e7dc688bd@XCH-RTP-013.cisco.com> <230D4B7A-42E6-4A9E-909B-BE91EE5D2FF3@juniper.net> <bc1b705b88f04d368334b78fbe91b7dd@XCH-RTP-013.cisco.com>
In-Reply-To: <bc1b705b88f04d368334b78fbe91b7dd@XCH-RTP-013.cisco.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/f.20.0.170309
x-originating-ip: [66.129.241.10]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BYAPR05MB4165; 7:kMbDr3fFb3ZTR3ytUMgb3Mq/7lZJsSRWESbrrEXBTWWkjAuLpJ7qbt+9NHPxibOohCeuyQpPRCppajQvsmcVnBoRbRazuV/Yom4d8rQh1KxosdK8eg3jVAQ5YVIgwT47fEQGFOmmr+80DYVqJgCFfQ+RWmkDWtFslIER2l85eLhDtT8j6i8HLw+3mfsPNqHb7lvcWW04nzrxHRzb35iS0uhJll3mCb/v5JCnqDJDg8jw4ZpYD7m1liTxS2NT+4vN
x-ms-exchange-antispam-srfa-diagnostics: SOS;
x-ms-office365-filtering-correlation-id: 70b6440e-42df-4d8f-624b-08d5dd0a7a83
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:BYAPR05MB4165;
x-ms-traffictypediagnostic: BYAPR05MB4165:
x-microsoft-antispam-prvs: <BYAPR05MB4165C8E2785EC6A38240EDD0A54F0@BYAPR05MB4165.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(28532068793085)(278428928389397)(192374486261705)(114627819485645)(95692535739014)(21748063052155)(10436049006162);
x-ms-exchange-senderadcheck: 1
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:BYAPR05MB4165; BCL:0; PCL:0; RULEID:; SRVR:BYAPR05MB4165;
x-forefront-prvs: 0717E25089
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(979002)(39860400002)(366004)(396003)(376002)(136003)(346002)(189003)(199004)(53936002)(36756003)(58126008)(316002)(6306002)(8676002)(68736007)(561944003)(6486002)(106356001)(54906003)(6116002)(229853002)(4326008)(54896002)(8936002)(82746002)(3846002)(33656002)(81166006)(6512007)(6916009)(93886005)(5660300001)(7736002)(81156014)(105586002)(6246003)(76176011)(7110500001)(97736004)(478600001)(86362001)(26005)(6506007)(2900100001)(2906002)(5250100002)(14454004)(66066001)(99286004)(15650500001)(446003)(236005)(6436002)(25786009)(966005)(606006)(14444005)(486006)(102836004)(476003)(83716003)(186003)(256004)(2420400007)(11346002)(2616005)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:BYAPR05MB4165; H:BYAPR05MB4230.namprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: juniper.net does not designate permitted sender hosts)
x-microsoft-antispam-message-info: Wd6ZfoUPmNc6aUkh2G28kMnCUKaxROBXokcoUSW3/olFkFNWpqu+2nGREJgnx5AvM23xb2iSO9J6K9aQt7Qjs+eFhxfO3yi60akMtgqwfwJfc9OA3FkXTt+kdYXKnfuhIeJAEaJnmWflOV3IrqJ+5xBKmRqKHi0Z+KzZLi3rgup1/2N7xifMBhoN+KFBBli9RzrupnGRp02DVipiw+W9xwbT7RWvBEpEhvzRbhN04WKme5JXjHOj51zT/9R3aqf40YGuG5i0u3VbNFuBg56ZLASJpTw2NSo03SQfrewYo0SnIe8YLF8WGgvCfLgQjSR1hKCXyZSUfv2TCX1HzxurPdRMcYslNc2Qm1JbsF2d9d4=
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_4146A91F42E34C81A414C27920CA30C0junipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-Network-Message-Id: 70b6440e-42df-4d8f-624b-08d5dd0a7a83
X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jun 2018 15:19:01.7155 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR05MB4165
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-06-28_07:, , signatures=0
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1806210000 definitions=main-1806280173
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/Z76Ffo9Rk1JOOg3VSh7i7MAhCkI>
Subject: Re: [Netconf] LC on subscribed-notifications-10
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.26
Precedence: list
List-Id: Network Configuration WG mailing 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: Thu, 28 Jun 2018 15:19:19 -0000

Please look for <Kent12> below.



 <Kent6> okay, I think I got it this time.  Having a *configurable* replay-start-time is so confusing.  Is it really worth having?



<Eric7>   Yes it is worth having.

(a) In many environments, reboot is very infrequent.  Without configurable start time, an operator setting up a configured subscription would not have the ability to designate what to send.  It could only send the full log (at whatever size).

(b) on-publisher security or troubleshooting diagnostics might identify a breach or some event where streaming recent historical event records is a MUST.  As a result, it might want to stream a subset of event records off a box going back in time to potential events which might have been evidence or contributing factors.



<Kent7> Let me come at this another way.  Assume we drop all support for *configurable* replay-start-time.  As such, configured subscriptions always start with the next-generated event (no replay at all).   This covers most use-cases, right?   For those receivers that really wanted the older logs, can't they just do a dynamic subscription to collect them, same as we've been discussing above?



<Eric8> Some reasons this might not always be practical:

(a) IoT devices just might want to passively listen to event streams of Telemetry.  (I.e., this would force configured receivers to support dynamic subscriptions.)

(b) This forces complexity onto applications which only ever need to track what has happened since boot.  (E.g., per above, continuous Integrity Measurement Architecture (IMA) boot log streaming and evaluation.)

(c) Publisher access permissions for who can use the establish-subscription RPC might have to be expanded to include lots of configured receivers.  This might open up a vector to control plane DDoS.  Right now the access permissions would just have to allow the receiver read access to the event records.

(d) A publisher may choose to firewall classes of receivers (or locations of receivers) into a listen-only mode without the ability to establish subscriptions.



<Kent8> This response seems to address the "can't they just do a dynamic subscription" aspect of my comment, but doesn't really address the "why is it important" (I paraphrase) part.  My contention is that the concept of a *configurable* replay-start-time seems confusing and of low value.   I acknowledge that there is some value, but it seems like the value is limited to a one-time start-up optimization that can be alternatively addressed by a dynamic subscription to fetch earlier events (assuming it's allowed, per your points b-d).   Additionally, FWIW, I've never seen such a feature implemented before, and logging mechanisms have been around for decades, so this makes me think that this is something that probably isn't worth having.



<Eric9> As you point out, the why "can't they just do a dynamic subscription" is covered, and we shouldn’t always assume away (b)-(d) as they can matter in some scenarios.  So if we want to support the use case of streaming log entries made after boot, but before the transport session is available, the only alternative I see is to have a configured replay-flag rather than a configuring a start-time.  Are you ok with a flag instead?  Or do you have an alternative suggestion?



<Kent9> see below.



In terms of using this configured replay capability, Cisco’s Integrity Verification application

https://www.cisco.com/c/dam/en/us/td/docs/cloud-systems-management/application-policy-infrastructure-controller-enterprise-module/1-5-x/integrity_verification/user-guide/Cisco_Integrity_Verification_Application_APIC-EM_User_Guide_1_5_0_x.pdf<https://urldefense.proofpoint.com/v2/url?u=https-3A__www.cisco.com_c_dam_en_us_td_docs_cloud-2Dsystems-2Dmanagement_application-2Dpolicy-2Dinfrastructure-2Dcontroller-2Denterprise-2Dmodule_1-2D5-2Dx_integrity-5Fverification_user-2Dguide_Cisco-5FIntegrity-5FVerification-5FApplication-5FAPIC-2DEM-5FUser-5FGuide-5F1-5F5-5F0-5Fx.pdf&d=DwMGaQ&c=HAkYuh63rsuhr6Scbfh0UjBXeMK-ndb3voDTXcWzoCI&r=9zkP0xnJUvZGJ9EPoOH7Yhqn2gsBYaGTvjISlaJdcZo&m=YLzifR1978kb_hHj64ZtYbrlHE2fJaofeSKu9OAFQXg&s=Vc8m5WAJJE8YkQIpZuxlnVTgAtVKQZ-n0dyoRKX3Eao&e=>

does do a shell access event log fetch of the full log after boot, and then just does incremental fetch the deltas of the log (based on log line numbers).  This application is interested in configured subscriptions subsequent to boot for this purpose.  So such incremental streaming of portions of syslog after boot seems like a typical/common need to me.



<Kent9> it might be typical/common desire, but it's still once in the lifetime of the configured subscription.  It seems like, if the device supports dynamic subscriptions, after receiving subscription-started, the client could a) pause the configured subscription, b) use a dynamic subscript to fetch the missing logs, and then c) resume the flow of logs from the configured subscriptions.



<Eric10> Your proposal still precludes (b)-(d) above.   In addition for your step a), there is no RPC or action which allows the event records from a configured (or dynamic) subscription to be paused.  The solution also adds complexity into the client to recognize that early events might be missing, to issue an establish-subscription, and then to tie the results of the independent subscriptions together.



<Kent10> pausing can be implemented by the receiver not reading any more from the TCP socket, or something else.



<Eric11> There is no mechanism for a receiver to pause a single subscription without pausing other subscriptions on the TCP session (as subscriptions typically would share a common TCP.)



<Kent11> Different "receivers" of different configured subscriptions pointing to the same underlying netconf or restconf call-home connection?



<Eric12> Yes



<Kent12> Ack.  So, *if* we were to do this, the client would either have to pause all the subscriptions, or do a dynamic fetch in parallel.  Hmmm, given that we're talking about the *configured* replay-start-time, which kicks in after a reboot, all the subscriptions would be restarted simultaneously (right?), so maybe this isn't a big issue?









How is it any more complex for the client/receiver than the following in the SN draft already?



   When a receiver of a configured subscription gets a new

   "subscription-started" message for a known subscription where it is

   already consuming events, the receiver SHOULD retrieve any event

   records generated since the last event record was received.  This can

   be accomplish by establishing a separate dynamic replay subscription

   with the same filtering criteria with the publisher", assuming the

   publisher supports the "replay" feature.



<Eric11> It is the same general process.  But it turns the SHOULD into a MUST for applications which need to know the events since boot.  It also doesn’t deliver the events in order to the application, delaying application event analysis.



<Kent11> here's another question that might be good to raise to the WG level.   Please be sure to capture my general concern and also the availability of this workaround.  Thanks.



<Eric12>  You are welcome to take the question to the WG level.  I have no desire to waste people’s time with such an obvious question:

- The current solution does not add the extra complexity described above for configured subscription replay.

- The current solution supports deployment scenarios (b)-(d) above.

- The current solution has far less implementation complexity and error reconciliation states for the client.



<Kent12> No Eric, you are the Editor.  We can take this to Montreal if you prefer.   We need more opinions to break the standoff, and I don't think folks are watching this thread.  Please try to present the tradeoffs in a fair manner.   BTW, a==b and c==d, AFAICT.  a/b seems true and c/d also seems true, but 1) it is already a SHOULD for the receiver to do a dynamic fetch for already started subscriptions (see quoted paragraph above), so having another SHOULD for newly started configured subscription doesn't threaten of a-d any more than already, 2) it seems really weird to have persistent configuration that only gets used once in the lifetime of a configured subscription, 3) it is good to remove frivolous features, and 4) the current text in draft is confusing about replay-start-time.   #4 is what started this fork in the thread, but rather than fix the text, I'm thinking it might be better to remove the feature.





Kent  // contributor