Re: Gen-art LC review: draft-mm-netconf-time-capability-05

Andy Bierman <andy@yumaworks.com> Thu, 06 August 2015 16:42 UTC

Return-Path: <andy@yumaworks.com>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 32EC21B30C2 for <ietf@ietfa.amsl.com>; Thu, 6 Aug 2015 09:42:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level:
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=unavailable
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 HUbWDI816Y8t for <ietf@ietfa.amsl.com>; Thu, 6 Aug 2015 09:42:35 -0700 (PDT)
Received: from mail-lb0-f182.google.com (mail-lb0-f182.google.com [209.85.217.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 901781B30C7 for <ietf@ietf.org>; Thu, 6 Aug 2015 09:42:28 -0700 (PDT)
Received: by lbbyj8 with SMTP id yj8so46235019lbb.0 for <ietf@ietf.org>; Thu, 06 Aug 2015 09:42:27 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=ItuEhy5visM2Qi3tHRnI0U8OXKl4eojCFz0r9WOanZM=; b=LUGCcZEiYNe/egYZZhQkLlF2KfJh7byZsd+pXA6SG8pn9NhkzpZUS5JIB9hCTKQvYO m81wS0M8T6tZ9Cs1LdiD+s6DmHcUE3PTnz84QTua8Ho0Aza1hZIfc6EkCn43c4acZJNA gqjwckxp84gCGzrtc7OuisFUai5Dlj9BKSS+fkJpwhmE5h/llSHY3Grn/fwX3v1SJvP9 LqK8UbdRRiHDfzoHZWIF9g+oep4AXv8TPxphQr+Qmhdkt1VUc9aQGKF1VSAVg4h0OgL+ soEn5HoNbPRGq6HETH5bp4nMDissVYKJ+QqvU6Tb1Pe4ViDYmlKGLVj1Jo0UOxCyPjho PBAw==
X-Gm-Message-State: ALoCoQkLd62BqlSIC76yXzNxkiKQkWc2uQuBFizUY70KlW8nAW613f6kSd9zhmjDeQ0OA6bPzEs5
MIME-Version: 1.0
X-Received: by 10.152.88.106 with SMTP id bf10mr3195802lab.82.1438879347010; Thu, 06 Aug 2015 09:42:27 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Thu, 6 Aug 2015 09:42:26 -0700 (PDT)
In-Reply-To: <b59d1f963bd6482193d97ec9b7d75dea@IL-EXCH01.marvell.com>
References: <60322a704b1e4d1cbc85f6a3b6a33b8e@IL-EXCH01.marvell.com> <55BFEDC8.6040800@nostrum.com> <03c295837c984138bb30bd9aacf21999@IL-EXCH01.marvell.com> <55C0FDD7.1050203@nostrum.com> <a788b8d09b104d9a9f48a8486fbdb33c@IL-EXCH01.marvell.com> <CABCOCHSBs2qXqxb=VCNPVHg6KOARK7oaUE=MyFv2hWU66=3NMw@mail.gmail.com> <b59d1f963bd6482193d97ec9b7d75dea@IL-EXCH01.marvell.com>
Date: Thu, 06 Aug 2015 09:42:26 -0700
Message-ID: <CABCOCHQVMcHA7mH6U_V+NDxwYuL5DPGPdO196UjZSiOSQ84rEw@mail.gmail.com>
Subject: Re: Gen-art LC review: draft-mm-netconf-time-capability-05
From: Andy Bierman <andy@yumaworks.com>
To: Tal Mizrahi <talmi@marvell.com>
Content-Type: multipart/alternative; boundary="001a11c2640e5a8c85051ca734e8"
Archived-At: <http://mailarchive.ietf.org/arch/msg/ietf/mKkgy4ldpXST_St6EkNlRy-km40>
Cc: General Area Review Team <gen-art@ietf.org>, "draft-mm-netconf-time-capability.all@ietf.org" <draft-mm-netconf-time-capability.all@ietf.org>, "ietf@ietf.org" <ietf@ietf.org>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Aug 2015 16:42:37 -0000

On Wed, Aug 5, 2015 at 10:46 PM, Tal Mizrahi <talmi@marvell.com> wrote:

> Hi Andy,
>
> We appreciate the detailed review.
>
> >The draft adds the invoke-at-time capability to a small set
> >of NETCONF operations (via augment-stmt).
> >The mechanism cannot be used for any other operations.
> >It appears this is the entire list of operations supported:
>
> >   - get-config
> >   - get
> >   - copy-config
> >   - edit-config
> >   - delete-config
> >   - lock
> >   - unlock
> >   - close-session
> >   - kill-session
> >   - commit
>
> >Why was this subset of all operations selected?
>
> This list contains most of the RPCs defined in RFC6241, with the exception
> of three RPCs: cancel-commit, validate, and discard-changes. It did not
> make sense to us to support the <scheduled-time> element for these RPCs.
> The intended status of this document is experimental. For experimental
> purposes, it appears that this list of RPCs is sufficient. However, if you
> feel that there is an RPC that needs to be added to the list please let us
> know.
>
>
IMO, the only operation that has a reasonable use-case is <get>



> >I cannot find any text in the draft that says what happens
> >if the client session terminates for any reason.
>
> (*) Agreed. We will add text that says that when a session terminates, the
> server cancels all scheduled RPCs that were received in that session.
>
> >There are
> >commands that support the 'execution-time' parameter
> >like <lock> that explicitly require a session to be maintained.
> >Not sure a delayed <close-session> even makes sense.
>
> Agreed. We will remove the <close-session> RPC from the YANG module.
>
> >If the session is gone when the scheduled operation is about
> >to be executed, does the server cancel it or attempt it?
> >Without a session, the server cannot send an <rpc-reply>,
> >so it should not attempt the command.
>
> Agreed. See the response to (*) above.
>
> >What if commands are scheduled at the same time?
> >Is the server expected to serialize these commands or
> >invoke them in parallel?  Note that operations within
> >a single session MUST be invoked in order, but this only
> >seems to apply to the original <rpc> to schedule the delayed
> >operation.
>
> Good point. Scheduled RPCs should be processed serially, as is currently
> defined in RFC 6241. If two or more scheduled RPCs have the same
> <scheduled-time> the server can process them in an arbitrary order.
> We will add text that clarifies this in the draft.
>
>
> >I think this draft is severely constrained by RFC 6241, sec. 4.5.
>
> >4.5.  Pipelining
>
> >   NETCONF <rpc> requests MUST be processed serially by the managed
> >   device.  Additional <rpc> requests MAY be sent before previous ones
> >   have been completed.  The managed device MUST send responses only in
> >   the order the requests were received.
>
> Yes, the PURPOSE of the :time capability is to allow RPCs to be executed
> according to their scheduled time, and not according to their reception
> order.
> I suggest that we add some text that clarifies that replies to scheduled
> RPCs are sent in the order of their schedule, while replies of unscheduled
> RPCs (as defined in RFC 6241) are sent by the reception order of the
> corresponding RPCs.
>
>

NETCONF capabilities are not allowed to undo requirements of
other capabilities.  In order to undo the requirements of sec. 4.5,
the server cannot advertise NETCONF base 1.0 or 1.1, and also
advertise the 'time' capability.



> >There are no existing NETCONF servers that will start processing rpc(N+1)
> >while rpc(N) is in progress for a session.  It might violate the MUST
> >in sec. 4.5.
>
> Indeed, that is the behavior of *existing* servers, but this does not
> impose an interoperability problem with the :time capability. As all
> capability-based extension, interoperability with *existing* servers is
> guaranteed by the capability exchange: a server that does not support the
> :time capability will continue to send RPC replies according to their
> arrival order. A server that supports the :time capability will perform
> (and reply to) scheduled RPCs according to their schedule, and unscheduled
> RPCs according to their reception order.
>
>
IMO you need a new revision of the protocol that removes the pipelining
requirements in order to pursue this solution.



> The :time capability must be:
> 1. Interoperable with existing servers by means of the capability exchange
> (we believe this is currently satisfied).
> 2. Well defined.
> To guarantee (2), I suggest that in the capability definition (section 4)
> we will clarify how the :time capability affects the order of RPC replies
> of scheduled RPCs.
>
> >A different NETCONF session is required for each scheduled operation.
> >Only 1 scheduled operation can be pending on each session.
> >A different session is also required to receive the
> <netconf-scheduled-message>
> >since the session sending the scheduled operation is busy waiting for the
> ><rpc-reply>.  The <cancel-schedule> RPC also must be on another session,
> >for the same reason.
>
> If I understand correctly, you are suggesting a workaround that allows the
> :time capability without violating the reply-in-reception-order
> requirement. Right?
>
>
No, I think RFC 6241 is quite clear how it will handle new <rpc> requests on
the same session as an operation already in progress.  It will buffer the
requests and process them in the order received.

Other solutions such as multiple <rpc-reply> for a single request are
designed to work within the existing NETCONF protocol rules.
IMO that solution approach would be better for this problem.
(i.e. get rid of the notification and return <ok/> to the schedule request.
Then send another <rpc-reply> when the executed task is invoked
or cancelled.)


Thanks,
> Tal.
>


Andy