Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposing a new approach to state and configuration #63

Open
adammontville opened this issue Dec 10, 2017 · 5 comments
Open

Proposing a new approach to state and configuration #63

adammontville opened this issue Dec 10, 2017 · 5 comments

Comments

@adammontville
Copy link
Contributor

I believe we have poor definitions for configuration and state.

We define configuration as non-volatile endpoint attributes and state as volatile endpoint attributes. This feels dissatisfying. I would propose that we take an approach indicating that endpoint state embodies endpoint attributes (they may as well be synonymous), and that state may be volatile or non-volatile. Then, configuration is sometimes used interchangeably with state or attributes.

@adammontville adammontville added bug and removed bug labels Dec 10, 2017
@henkbirkholz
Copy link
Member

A comparison in a nutshell: Configuration is static and modified via the management plane. State is non-static result of interacting functions (and corresponding components) via the the control plane. A distributed automated system cannot function without a working control plane (as it cannot create state via interaction of components/functions), a system can survive for quite a while without a working management plane (configuration cannot be changed and components/functions cannot be monitored though).

I.e. no - state is not configuration. I would recommend to never refer to configuration as non-volatile state. Configuration of multiple system entities begets state. Please note, in my personal opinion the sometimes colloquially used term "endpoint state" combines two of the most misleading words used in the SACM WG into an even more misleading term.

I'd rather adopt the rather exotic and still emerging terminology - and therefore moving target - from I-D.ietf-netmod-revised-datastores: intended, dynamic, system, learned and default configuration. In this realm of definitions (which significantly diverges from 4949 at some points) "origin" is the taxonomic parent of these terms (origin being a specific subset of the term data provenance wrt "how did this value came to be") and learned configuration would be the semantically closest to state as currently defined in SACM wrt to YANG.

I am opposed to change the core semantics of the current definition, but in strong favor of improving it. In consequence, I propose to word-smith the current text instead of trying to introduce a third realm of definitions, where "state" is the taxonomic parent of every other term. In general, I think it is vital to state (sry for the pun) that configuration is imperative guidance.

@strazzie123
Copy link
Collaborator

strazzie123 commented Dec 14, 2017 via email

@henkbirkholz
Copy link
Member

Okay, lets delve into the finer nuances of this.

tl;dr the definitions of configuration and state require some work. Jarrett already indicated that at the mic, if I remember correctly. Functions are essential to the architecture.

I admit to simplifying the topic at hand. I still disagree with the notion of the control plane dieing, if the management plane dies. It continuous to function, but probably not with the intend it is supposed to function, if environmental requirements change (as you are unable to influence behavior of the control plane anymore). It might not act in a way you require it to do anymore, but it does not die. It "just" not acts according to updated requirements imposed to it by management plane updates and therefore it will not be compliant to current imperative guidance. It is "just" deprived of imperative guidance updates.

I.e., it will not be in compliance with current imperative guidance anymore, but it does not "die" and the SACM domain should be aware of that state (see, I still agree with you :-) )

And yes, the definition most certainly requires some love, I agree with that, too.

I also agree with the notion that control plane behavior should not be tied to "endpoints" but "functions". Alas, the term function has been pruned currently and as a result "endpoint" is the next level in the taxonomy of terms it can be tied to in the current version of the draft. Essentially, control plane behavior is of course steered by control plane functions (located on SACM components that are endpoints), but I agree it is not the endpoints that are in charge of orchestrating control plane behavior, the corresponding functional blocks located on SACM components are. In consequence, no - we really do not want to expose all the endpoints in this scope. That is the reason why there was the definition of functions that just got removed, in the first place.

@adammontville
Copy link
Contributor Author

Then the proposal would be to bring back SACM Function and clean up state/configuration, possibly by adopting some terminology from I-D.ietf-netmod-revised-datastores: intended, dynamic, system, learned and default configuration. ??

@henkbirkholz
Copy link
Member

This might be partially resolved via issue #31 soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants