openconfig / gsii

gRPC State Injection Interface
1 stars 0 forks source link

gSII backwards compatability #4

Open nleiva opened 2 months ago

nleiva commented 2 months ago

Thank you for presenting this proposal during the network operators’ call. The increased flexibility and speed this API offers are certainly appealing. What migration path do you envision for existing systems and operators?

It appears this change would not be backward compatible. Could you confirm this?

If we assume a network operator is tracking the active state of an interface via state/enabled. With the introduction of dynamic/enabled, would operators need to compute the definitive state of an interface by applying logic on multiple fields? This could make existing monitoring systems obsolete, increasing the cost of adoption. I think requirement [R4] aims to address the relationship between dynamic and applied states. Could you elaborate on how this will be implemented to minimize confusion and maintain clarity in state reporting?

Thanks,

robshakir commented 1 month ago

Thanks for the review Nicolas.

I'm not quite sure why this would be backwards-incompatible.

The only case in which I think that there's some consideration needed is if there are systems that are implemented that apply a loop to say "if the value of state/enabled does not match the value of config/enabled then take some action" -- since in these cases the system would not know about volatile/enabled and hence try and override the volatile state. I'm not aware of such systems -- because there are multiple reasons that we could end up in a situation of state/enabled and config/enabled not matching. Particularly: some precondition is not met (linecard is not inserted); the device is slow to converge the configuration (commit+application is still in progress) etc.

The above logic is reflected in the motivation doc.