Hi Kent, Gert,

Balazs pointed out, and I agree, that the text about transaction/not transactional can equally apply to both synchronous and asynchronous configuration operations.

So rather than reproducing this text twice, once for each configuration definition, I propose keeping the transactional text out of the definition for synchronous/asynchronous configuration operations and instead include it as a sub-bullet for the section 3 requirements. I'll send my proposed text for the section 3 requirements on that separate email thread.

Hence, I propose that we revert to this text for synchronous configuration operation:

    Synchronous configuration operation - A configuration request to update
the running configuration of a server that is applied synchronously with
    respect to the client request.  The server MUST fully attempt to apply
    the configuration change to all impacted components in the server,
updating both the server's intended and applied configuration (see terms), before replying to the client. The reply to the client indicates whether there
    are any errors in the request or errors from applying the configuration
    change.

I agree with the existing proposed text for asynchronous configuration operation and also support the proposal to drop the definition of synchronous/asynchronous configuration servers if they are not being used.

Thanks,
Rob


On 15/10/2015 18:03, Kent Watsen wrote:
These terms were edited on today's call, resulting in the following text:

Synchronous configuration operation - A configuration request to update the running configuration of a server that is applied synchronously with respect to the client request. The server MUST fully attempt to apply
    the configuration change to all impacted components in the server,
updating both the server's intended and applied configuration (see terms),
    before replying to the client.  This may be transactional or non-
    transactional (need terms!).  The transactionality of the operation
    may be a server property or specified on as a property.
    The reply to the client indicates whether there
are any errors in the request or errors from applying the configuration
    change.
Asynchronous configuration operation - A configuration request to update
    the running configuration of a server that is applied asynchronously
with respect to the client request. The server MUST update its intended
    configuration (see term) before replying to the client indicating
    whether the request will be processed.  This reply to the client only
    indicates whether there are any errors in the  original request.  The
    server's applied configuration state (see term) is updated after the
configuration change has been fully effected to all impacted components in the server. Once applied, there MUST be a mechanism for the client to
    determine when the request has completed processing and whether the
    intended config is now fully effective or there are any errors from
    applying the configuration change, which could be from an asynchronous
    notification or via a client operation.

Synchronous configuration server - a configuration server that processes
    all configuration operations as synchronous configuration operations.
Asynchronous configuration server - a configuration server that processes
    all configuration operations as asynchronous configuration operations.


We have consensus on the above, but are hoping for some word-smithing before committing it to the draft. Anybody want to take a crack at it?

BTW, do we still need to define the last two terms anymore? - they're not used elsewhere in the draft...

Kent



From: Gert Grammel <ggram...@juniper.net <mailto:ggram...@juniper.net>>
Date: Thursday, October 15, 2015 at 10:35 AM
To: Robert Wilton <rwil...@cisco.com <mailto:rwil...@cisco.com>>, Kent Watsen <kwat...@juniper.net <mailto:kwat...@juniper.net>>, "netmod@ietf.org <mailto:netmod@ietf.org>" <netmod@ietf.org <mailto:netmod@ietf.org>> Subject: Re: [netmod] opstate-reqs #6: clarify impact of synchronous vs asynchronous (esp. wrt intended and applied)

Rob,

From a client perspective a server has three states:

 1. intended != applied
 2. Funny-state
 3. Intended == applied

Irrespective of synchronous or asynchronous processing in the server, the third state MUST be reported to the client. Else (from a client perspective) the server stays in funny-state forever.


Gert


From: Robert Wilton <rwil...@cisco.com <mailto:rwil...@cisco.com>>
Date: Thursday 15 October 2015 15:59
To: Gert Grammel <ggram...@juniper.net <mailto:ggram...@juniper.net>>, Kent Watsen <kwat...@juniper.net <mailto:kwat...@juniper.net>>, "netmod@ietf.org <mailto:netmod@ietf.org>" <netmod@ietf.org <mailto:netmod@ietf.org>> Subject: Re: [netmod] opstate-reqs #6: clarify impact of synchronous vs asynchronous (esp. wrt intended and applied)

Hi Gert, Kent,

I think that notifying the client is one possible way that an asynchronous request could be completed, but not necessarily the only way. E.g. if the information as to whether a particular intended leave had been successfully applied was available (e.g. as per github issue #2).

So, I wonder whether we shouldn't weaken the last sentence, changing MUST to COULD, or perhaps reword it.:

E.g. replacing:

Once applied, the client MUST be notified whether the intended config is now fully effective or there are any errors from applying the configuration change.

Perhaps with:

Once applied, the client COULD be notified whether the intended config is now fully effective or there are any errors from applying the configuration change.

Or:

Once applied, there MUST be a mechanism available for the client to be able to determine whether the intended config is now fully effective or whether there are any errors from applying the configuration change.

Thanks,
Rob


On 15/10/2015 12:17, Gert Grammel wrote:
Kent, Rob,

Comparing the cases, the definition of the asynchronous case doesn’t look complete. The way it stands for the synchronous operation, the client knows that it's intended config was good AND it has been effected to the server. In the Asynchronous case, the client only knows that the intended config was good – and that’s not enough.

So the proposal is to refine the asynchronous case definition as follows:

Asynchronous configuration operation - A configuration request to update the running configuration of a server that is applied asynchronously with respect to the client request. The server MUST update its intended configuration (see term) before replying to the client indicating whether the request will be processed. The reply to the client only indicates whether there are any errors in the original request. The server's applied configuration state (see term) is updated after the configuration change has been applied to all impacted components in the server. Once applied, the client MUST be notified whether the intended config is now fully effective or there are any errors from applying the configuration change.

In addition I would suggest to require a verify operation which a client can request from the server to obtain above information on an on-demand basis. Would that somehow go in the opstate-reqs #3 then?

Best

Gert




From: netmod <netmod-boun...@ietf.org> on behalf of Kent Watsen <kwat...@juniper.net <mailto:kwat...@juniper.net>>
Date: Thursday 15 October 2015 00:11
To: Robert Wilton <rwil...@cisco.com>, "netmod@ietf.org <mailto:netmod@ietf.org>" <netmod@ietf.org <mailto:netmod@ietf.org>> Subject: Re: [netmod] opstate-reqs #6: clarify impact of synchronous vs asynchronous (esp. wrt intended and applied)

Hi Robert,

One comment, it seems that the asynchronous configuration operation should have one more sentence at its end saying that an asynchronous notification
must be used to report any errors produced from when applying the
configuration.

What do you think?

Kent  // as a contributor



On 10/14/15, 10:59 AM, "Robert Wilton" <rwil...@cisco.com> wrote:

    Hi All,

    Are there any more comments on the following proposed
    descriptions, or
    are these descriptions sufficiently clear to update the requirements
    draft and resolve issue #6?

    Synchronous configuration operation - A configuration request to
    update
    the running configuration of a server that is applied
    synchronously with
    respect to the client request.  The server MUST fully effect the
    configuration change to all impacted components in the server,
    updating
    both the server's intended and applied configuration (see terms),
    before
    replying to the client.  The reply to the client indicates
    whether there
    are any errors in the request or errors from applying the
    configuration
    change.

    Asynchronous configuration operation - A configuration request to
    update
    the running configuration of a server that is applied asynchronously
    with respect to the client request.  The server MUST update its
    intended
    configuration (see term) before replying to the client indicating
    whether the request will be processed.  The server's applied
    configuration state (see term) is updated after the configuration
    change
    has been fully effected to all impacted components in the
    server.  The
    reply to the client only indicates whether there are any errors
    in the
    original request.

    Synchronous configuration server - a configuration server that
    processes
    all configuration operations as synchronous configuration operations.

    Asynchronous configuration server - a configuration server that
    processes
    all configuration operations as asynchronous configuration
    operations.

    Thanks,
    Rob


    On 13/10/2015 09:48, Juergen Schoenwaelder wrote:

        On Tue, Oct 06, 2015 at 09:42:37PM +0100, Robert Wilton wrote:

            Hi Juergen,

            On 06/10/2015 17:16, Juergen Schoenwaelder wrote:

                On Tue, Oct 06, 2015 at 02:59:29PM +0100, Robert
                Wilton wrote:

                    Hi Kent,

                    Feeding in the various input, I think that this
                    is the best
                    refinement
                    that I've come up with:

                    Synchronous configuration operation - A
                    configuration request to
                    update
                    the running configuration of a server that is
                    applied synchronously
                    with
                    respect to the client request.  The server SHOULD
                    ensure that the
                    request is valid, and MUST fully effect the
                    configuration change to
                    all
                    impacted components in the server, updating both
                    the server's
                    intended
                    and applied configuration (see terms), before
                    replying to the client.
                    The reply to the client indicates whether there
                    are any errors in the
                    request or errors from applying the configuration
                    change.

                What does "SHOULD ensure that the request is valid"
                mean? RFC 6020
                says:

                     When datastore processing is complete, the final
                contents MUST
                obey
                     all validation constraints.  This validation
                processing is
                performed
                     at differing times according to the
                datastore.  If the datastore
                is
                     <running/> or <startup/>, these constraints MUST
                be enforced at
                the
                     end of the <edit-config> or <copy-config>
                operation.  If the
                     datastore is <candidate/>, the constraint
                enforcement is delayed
                     until a <commit> or <validate> operation.

                Are we talking about datastore validation or
                validation of a request?
                If the former, are we watering down a MUST to a SHOULD?

            Really it is datastore validation, particularly for an
            async request
            where the intended config nodes are updated before
            replying. I'm not
            intentionally trying to water down a MUST to a SHOULD,
            but Kent had
            concerns that my previous description using "semantically
            validate"
            would exclude an ephemeral datastore, so I was trying to
            water down the
            description and also describe the behaviour in a way that
            isn't
            specific
            to either RESTCONF/NETCONF or datastores.

            Perhaps, the start of sentence could simply be changed to:

            The server MUST fully effect the configuration change to all
            impacted components in the server ...

            And equivalently for the asynchronous case below:

            The server MUST update the server's intended
            configuration ...

        Works for me. Sometimes less is more.

                And I would not be surprised if we also need this
                sooner or later:

                    Mixed configuration server - a configuration
                server that processes
                    some configuration operations as synchronous
                configuration
                    operations and some configuration operations as
                asynchronous
                    configuration operations.

            Yes, I would expect that clients may want to define the
            expected
            behaviour, potentially on a per request basis.

        I doubt that servers will offer clients to choose; I am more
        with Andy
        that in real systems, depending on the data model, certain
        parts of a
        data model may be synchronous while others may be asynchronous.

                    Any further comments?

                    Based on the feedback from Andy and others, it
                    seems that the
                    prevailing
                    view is that existing NETCONF and RESTCONF should
                    be regarded as
                    being
                    asynchronous in their behaviour in that the
                    config nodes in the
                    running
                    datastore only represent the intended
                    configuration and not the
                    applied
                    configuration.

                Depends on the definition of applied configuration -
                where is the
                latest
                version of it?

            The last proposed text for intended/applied is as below:

                    intended configuration - this data represents the
            configuration
                    state that the network operator intends the
            system to be in, and
            that
                    has been accepted by the system as valid
            configuration.  This
            data is
                    colloquially referred to as the 'configuration'
            of the system.

                   applied configuration - this data represents the
            configuration
                    state that the network element is actually in,
            i.e., the
                    configuration state which is currently being
            being used by
            system
                    components (e.g., control plane daemons,
            operating system
                    kernels, line cards).

        Well, sometimes the config goes to a control plane daemon and
        then to
        the OS kernel and finally to the line cards. This definition
        leaves
        some room what an applied configuration is (which is IMHO
        needed if
        you want to have something implementable) and hence a NC
        server can
        either be considered synchronous or asynchronous.

              From Thursday's interim meeting, Rob Shakir clarified
            that the desired
            intention is that applied configuration should mean that the
            configuration is fully applied everywhere.  I don't know
            if that means
            that the definition of applied configuration should be
            strengthened, or
            if it is sufficient?

        As said before, an OS kernel usually does not track where
        resource
        parameters were coming from. (An interface has a set of IP
        addresses
        and the kernel usually does not know which addresses were
        coming from
        a configuration daemon, a dhcp daemon, a tunneling daemon, a
        command
        line utility, ...) The same may be true for line card. So in
        order to
        implement a very tight definition, one has to either 'guess'
        which
        'subset' of operational state can be related 'somehow' to the
        intended
        config and then report the result of the guess work as
        applied config
        or one would have to to change daemons/kernels/linecards to
        have a
        tracking number or something like that.

        Anyway, as long as a regular NC/RC server does not have to
        pay a price
        for this applied config idea, I have no real problem with
        this since I
        am sure the market will sort this out.

        /js


    _______________________________________________
    netmod mailing list
    netmod@ietf.org <mailto:netmod@ietf.org>
    https://www.ietf.org/mailman/listinfo/netmod


_______________________________________________
netmod mailing list
netmod@ietf.org <mailto:netmod@ietf.org>
https://www.ietf.org/mailman/listinfo/netmod



_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to