Hello,

I would like to extend my list of base problems to 3:

  1. Non-backward compatible (NBC) changes should be allowed in some limited cases
  2. It should be possible to determine two module versions' compatibility without a line-by-line comparison
  3. It should be possible to indicate that a part of a schema is deprecated, but is still present, implemented and usable

3) Is needed because we need to be able to warn the consumers of a YANG module (YAM) that some part will be going away, while at the same time we need to promise them  that it is still usable. We need a firm contract not a maybe about this.

regards Balazs


On 2017-11-15 00:51, Balazs Lengyel wrote:

Hello,

First of all Ericsson very strongly supports this draft. This is a problem we definitely have, and for which we had to create our own internal solution. So we would love to see an IETF solution!

General)

The document does not mention some other problems with the current versioning. These stem from

  • we should allow non-backward compatible (NBC) changes in some limited cases
  • it should be possible to determine two module versions' compatibility without a line-by-line comparison

Whenever a client OSS implements some higher level logic for a network function, something that can not be implemented in a purely model driven way, it is always dependent on a specific version of the Yang Module (YAM). If the client finds that the module has been updated on the network node, it has to decide if it tries to handle it as it did the previous version of the model or if it just stops to avoid problems. To make this decision the client needs to know if the module was updated in a backward compatible way or not. This is not addressed with the current versioning.

While having PYANG based checks for backward compatibility is a very good idea, a  comparison based check will never be a complete check. It is quite possible to change just the behavior of an rpc/action/etc.  without changing the YANG definition.  This will only show up as a change of the description statement that can not be analyzed by PYANG.

When upgrading a network node we might introduce non-backward compatible (NBC) changes. Today we need to introduce a new module for this. That means during the upgrade process the node must convert stored configuration instance data from ietf-routing to ietf-routing-2 format. Instead of solving this data transformation/transfer problem just for a few NBC data nodes, we will have to do it for the full model. This is complicated. In many cases the transformation of a few NBC leafs can be handled by good defaults or with a small script. Transferring the full data set is more complicated. If we allow NBC updates in some cases this problem is avoided.

If we update the module from ietf-routing to ietf-routing-2 ? Do we keep the prefix?  In one sense it should be kept as it is the same module "logically"; we also might have stored data including the prefix (identityrefs, instance-identifiers). On the other hand having multiple modules with the same prefix is a problem. The only good solution is to allow incompatible updates in some cases.

CH 1)

You write
"The YANG data modeling language [RFC7950] specifies strict rules for updating..."
and again
"When the same YANG module name is kept, the new YANG module  revision must always be updated in a backward-compatible way."

I strongly disagree. While we have strict rules about even small modifications to existing schema, but you are allowed to deprecate/obsolete big parts of the model, thereby possibly deleting complete subtrees from the schema. That is anything but strict backward compatibility.
I find this aspect of YANG inconsistent to the level that it would need an errata.

So practically the current rules allow backward incompatible changes that can only be detected by a line by line comparison of the yang modules. In a system with semantic versioning, you could determine backward compatibility just by reading the version numbers.

CH 2.3)
As we need to create a new Yang Module (YAM) even for the smallest incompatible modification, this increases the number of modules.

CH 2.5)  We already have vendor modules depending on ietf-routing

CH3.1)

I propose that the semantic version should be a mandatory substatement of the YANG revision statement. It should be updated every time, and it would be good to see the older semantic versions as well.

I would propose to have 3 separate statements for x,y,z. I don't like structured strings. It would be much easier to compare simple integers.

I can if needed provide some more detailed rules for x,y,z e.g. if x is stepped y and z MUST be set to 0.

IMHO YANG package definition should be a separate issue, left out of this document. Andy has already provided some very good ideas about this topic.

I also think the current definition of deprecated and obsolete in YANG 1.1 is near useless, as all it says that both deprecated and obsolete items may or may not be there. We need something better. 

regards Balazs

-- 
Balazs Lengyel                       Ericsson Hungary Ltd.
Senior Specialist
Mobile: +36-70-330-7909              email: [email protected] 

-- 
Balazs Lengyel                       Ericsson Hungary Ltd.
Senior Specialist
Mobile: +36-70-330-7909              email: [email protected] 


_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to