-
Notifications
You must be signed in to change notification settings - Fork 652
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
Flex-algo model for IGP #550
Conversation
…l associate flex-algo sid to a prefix
Compatibility Report for commit b710383: |
…d state and in turn it was used in config and state containers causing lint errors
…e to "Openconfig working group" that is used in other places. Change the description to fad advertisement to something meaningful instead of a question
Somehow the goyang/ygot is failing and it does not seem to be because of this PR. I have no idea how to make it pass! Sample failure log:
|
@vivek-ilangovan you should be able to correct the issue by merging your PR with the latest copy of the master branch. Note there are some conflicts to be resolved |
…l associate flex-algo sid to a prefix
…d state and in turn it was used in config and state containers causing lint errors
…e to "Openconfig working group" that is used in other places. Change the description to fad advertisement to something meaningful instead of a question
…cremented the openconfig-network-instance.yang's version and the former is a submodule of the latter
F0620 11:25:43.365961 7379 generator.go:374] ERROR Generating GoStruct Code: key flex-algo-name had a leafref key (/openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/segment-routing/config/fad-bindings/fad-binding/flex-algo-name) in dir algorithm that did not exist ([ network-instances network-instance flex-algorithms algorithm name]), key flex-algo-name had a leafref key (/openconfig-network-instance/network-instances/network-instance/protocols/protocol/isis/global/segment-routing/state/fad-bindings/fad-binding/flex-algo-name) in dir algorithm that did not exist ([ network-instances network-instance flex-algorithms algorithm name]) Use a string for now
…igp-top fad-bindings itself should have config and status for the key to be present and it will not be good to have fad config and status inside sr-igp-config
Hi, Proxying some comments on this model from an internal expert (and author of RFC 9350):
Do the YANG tree structures at the top of this review still represent the proposed configuration? Thanks, |
Last call for additional comments, to be merged on May 28th. |
- Added new global and interface specific attributes for flex-algo and detach it from TE attributes
Hi @rgwilton Thanks for the comments
Makes sense. I have created a new flex-algo-global-attributes and flex-algo-interface-attributes and referring to that in the flex-algo definition. The attributes are mostly copied from the mpls container
Arista EOS supports assigning different flex-algo to different levels. So I would like to retain it. Other vendors can probably set the level as level-1-2 in case they do not have that support?
I thought of initially supporting the SR-MPLS flex-algo segment for now. Is it ok to add the support for srv6 flex-algo and ip flex-algo later?
I have updated now with the suggested comments. Thanks, |
description | ||
"list of references to named shared risk link groups that the | ||
interface belongs to."; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you need delay metric as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is true. Few implementation allow for dynamic computation of min-delay and few allows a static configuration. I am going to skip this for now and add it in next iteration if that is ok?
…lex-algo has become optional module
…flex-algo module is optional
…iner to avoid the error: "List interface has a duplicate name when the parent container flex-algo-interface-attributes is removed."
@dplore just wanted to check with you if this is in a state to be accepted |
We will discuss at OC Operators meeting on July 11, 2023 |
Thanks for discussing about this PR! |
Thanks for making the flex algo ID the key, this seems appropriate. Are there any well known / rfc defined flexalgo ID’s? I didn't see any at the IANA registry but I am not sure I am looking in the right place. |
/gcbrun |
I do not think so there are any standard/defined flex-algo ids. AFAIK all ids in the valid range 128-255 are user definable |
/gcbrun |
@vivek-ilangovan can you please rebase your fork with the master branch? This should fix the CI checks. See #917 for example. I can merge #917 instead and refer to this PR but the history would be cleaner if you can rebase this PR. |
@dplore I probably did what you asked. Can you check if this looks ok? |
Thank you very much for the contribution @vivek-ilangovan and reviewers @gvandeve, @rgwilton, @ppsenak and @s19nal. This was a big effort! |
Support for IGP Flexible algorithms RFC9350
The change proposes model for following
Flex-algorithm is keyed by a name. Attributes of flex-algorithms can be defined under /network-instances/network-instance/flex-algorithms
Once the flex-algo attributes are defined, the IGPs can participate/advertise them by using the flex-algo-name. For example in case of IS-IS the path in the model will be /network-instances/network-instance/protocols/protocol/isis/global/segment-routing/config/fad-bindings
IGPs can advertise prefix-segments with an associated flex-algo by using the flex-algo-name. flex-algo-prefix-sids container is added for associating prefix with a flex-algo segment. Currently only isis uses this container and the path is /network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/flex-algo-prefix-sids
This matches the config model used in eos: https://eos.arista.com/eos-4-27-0f/is-is-flexible-algorithm/
We can configure flex algo definition under router traffic-engineering. This will translate to the path /network-instances/network-instance/flex-algorithms in the yang model
The IS-IS can make use of this definition to either advertise it or it can just participate in the algorithm. This translates to the /network-instances/network-instance/protocols/protocol/isis/global/segment-routing/config/fad-bindings
IS-IS can advertise prefix-segments associated with a particular flex algorithm. In EOS, this can be configured under interface mode. This translates to this yang path: /network-instances/network-instance/protocols/protocol/isis/interfaces/interface/levels/level/afi-safi/af/segment-routing/flex-algo-prefix-sids
Other vendors configuration model looks similar:
Cisco: https://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/asr9k-r6-6/segment-routing/configuration/guide/b-segment-routing-cg-asr9000-66x/b-segment-routing-cg-asr9000-66x_chapter_01111.html
Junos: https://www.juniper.net/documentation/us/en/software/junos/is-is/topics/topic-map/infocus-isis-flex-algo-sr.html
Nokia: https://infocenter.nokia.com/public/7750SR217R1A/index.jsp?topic=%2Fcom.nokia.Segment_Routing_and_PCE_User_Guide_21.7.R1%2Fconfiguring_flexible_algorithms.html