-
Notifications
You must be signed in to change notification settings - Fork 656
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
Refactor physical ethernet vs. aggregate interface characteristics #1183
Conversation
* (M) release/models/interfaces/openconfig-if-ethernet.yang - Split/restrict physical vs. aggregate ethernet config/state
This looks good to me and also removes the other leaves that aren't really valid for the aggregated interface. Thanks! |
/gcbrun |
No major YANG version changes in commit 1880fdf |
Adding a backwards compatibility note. As currently proposed, a client / management system must know the type of interface in order to access the speed of the interface. (ie: physical vs. logical). Would it be better to have a new "speed" leaf which is uint32 in Mbps that is generic across physical and logical interfaces? This could be introduced as a non-breaking change and would be easier to consume. How important is it to use an identity for the speed of a physical port? |
The identity (or enum) approach is helpful for a finite set of values especially when configuring between an choice. Having this as a unbound But it would represent a single leaf at a common location no matter the type however some interface types may not have a notion of "speed" still For reference from
This patch set also differentiates more than just "speed" and more about physical vs. logical |
The lag-speed under /interfaces/interface/aggregation/state |
I would say no, it will not be better. First, the current ethernet interface speed is RW (can be configured). In some cases the speed is auto-derived, but that's not necessarily true. And the config have to be restricted to the IEEE defined ethernet speeds (one way or another). Secondly, is there a real use case for the consumption of interface speeds by a controller that is not aware of what type of interface it uses? And to add to that, that controller cannot subscribe to two sets of leaves and has to consume it from the single one? That feels like a bit of a stretch. Last but not least, I would disagree with the notion of The current leaves are well defined and been present in the models for almost 10 years, and there are a significant number of implementations. Introducing a new leaf that is going to replace the two old ones is actually will be non-backward compatible for all these implementations (client software will have to be updated first and support the consumption of two sets of leaves, until all NOS systems are fully migrated to the new model; and make a decision which one to consume based on a specific NOS version/capabilities advertisement). Are we making it easier to consume? In my opinion, the answer is no (and we are not solving a real issue anyway) |
Reviewed in Sep 24, 2024 OC Operators meeting: It seems the model already has the leaves we need
This PR introduces a change to limit port-speed to only be present when interface type is iana-if-type:ethernetCsmacd lag-speed is already conditional on ianaift:ieee8023adLag So in concept this PR looks good. The CI check with pyang detected some issue, probably related to naming changes in the yang groupings. Can you fix @earies ? Apologies for any confusion on my earlier naive comment about adding a leaf as we already have the leaf I was thinking about (lag-speed). |
This check actually appears to open a can of worms on the design and integration of wifi related modules (something I have not really paid attention to the progressions over the years) The wifi modules make heavy reuse of other published models - for this case
This then means that the The wifi modules appear to implement a controller/service viewpoint vs. a network-element viewpoint exacerbating the issue (as intents then differ) with grouping reuse and imposing restrictions into used model-sets. Due to the design and colocation of the wifi modules with what are mostly router/switch feature set device modules, it appears we have a design consideration we need to discuss further as I cannot see any elegant way out of this atm. cc: @mike-albano |
For this particular change, perhaps a simple description update would be sufficient? |
Sadly that is the likely fastest/easiest option here but this represents a bigger issue. Raised #1193 for further discussion |
/gcbrun |
/gcbrun |
Setting last call for comments on Oct 22, 2024 |
I'm good with the description update for now but this needs to be resolved in #1193 |
/gcbrun |
/gcbrun |
@earies can you provide a tree rendering? I am not seeing any breaking change now? If that is true, can you revise the model version to a non-breaking change? |
Addressed in latest commit and update to the initial PR description |
/gcbrun |
Change Scope
Per #1181 it was pointed out that
the reuse of all ethernet characteristics for both physical and aggregate
interfaces does not provide guidance or restrictions of what and how to
populate/certain leafs depending on the interface type.
This PR divides up groupings into physical and common data nodes gating what is
supported based on the interface
type
.Validated instance-data below per the new restrictions:
Failure cases
If an aggregate interface contains
port-speed
The correct leaf node to report is rather
aggregation/state/lag-speed
If an aggregate interface contains
negotiated-port-speed
... and similar for physical interface characteristics under a logical interface of non
ethernetCsmacd
typePlatform Implementations
Bug fix & enforced restrictions
Edit: 2024-10-07
Due to reuse of this model within wifi related models,
when
restrictions are severely restricted at this time. This PR has been refactored to segment out groupings and update description statements to describe the behavior until otherwise resolved.Edit: 2024-10-31
Updated tree view (w/ groupings) per comment #1183 (comment)