T6750: sr-te: Adding initial Segment Routing Traffic Engineering portion of FRR#4994
T6750: sr-te: Adding initial Segment Routing Traffic Engineering portion of FRR#4994Cheeze-It wants to merge 21 commits intovyos:currentfrom
Conversation
|
I have read the CLA Document and I hereby sign the CLA 2 out of 3 committers have signed the CLA. |
|
❌ |
|
Added PR with FRR patch: vyos/vyos-build#1120 |
|
I have read the CLA Document and I hereby sign the CLA. |
|
Minor syntax suggestion: I think |
I would have loved to have done it like that. Initially when I implemented this I did it literally exactly as you suggested, but it failed on me. Trying to do segment-list as a tag node and index as a tag node right after each other failed. That's why I had to add "value" in there. I wasn't happy with it either. |
sever-sever
left a comment
There was a problem hiding this comment.
There are conflicts
<<<<<<< current
{% if traffic_engineering is vyos_defined %}
segment-routing
traffic-eng
mpls-te on
{% if traffic_engineering.database_import_protocol is vyos_defined %}
{% for protocol, protocol_config in traffic_engineering.database_import_protocol.items() %}
mpls-te import {{ protocol }}
{% endfor %}
{% endif %}
{% if traffic_engineering.segment_list is vyos_defined %}
{% for segment_list, segment_list_config in traffic_engineering.segment_list.items() %}
segment-list {{ segment_list }}
{% if segment_list_config.index.value.items() is vyos_defined %}
{% for index, index_config in segment_list_config.index.value.items() %}
{% if index_config.mpls.label is vyos_defined %}
index {{ index }} mpls label {{ index_config.mpls.label }}
{% endif %}
{% if index_config.nai is vyos_defined %}
{% if index_config.nai.adjacency is vyos_defined %}
{% for address_family, address_family_options in index_config.nai.adjacency.items() %}
index {{ index }} nai adjacency {{ address_family_options.source_identifier }} {{ address_family_options.destination_identifier }}
{% endfor %}
{% endif %}
{% if index_config.nai.prefix is vyos_defined %}
{% for address_family, address_family_options in index_config.nai.prefix.items() %}
{% for prefix, prefix_options in address_family_options.prefix_identifier.items() %}
index {{ index }} nai prefix {{ prefix }} {{ 'algorithm 0' if prefix_options.algorithm.spf is vyos_defined }} {{ 'algorithm 1' if prefix_options.algorithm.strict_spf is vyos_defined }}
{% endfor %}
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% if srv6.locator is vyos_defined %}
=======
{% if srv6 is vyos_defined %}
>>>>>>> current
segment-routing
srv6
{% if srv6.encapsulation is vyos_defined %}
encapsulation
{% if srv6.encapsulation.source_address is vyos_defined %}
source-address {{ srv6.encapsulation.source_address }}
{% endif %}
exit
{% endif %}
{% if srv6.locator is vyos_defined %}
locators
{% for locator, locator_config in srv6.locator.items() %}
locator {{ locator }}
{% if locator_config.prefix is vyos_defined %}
prefix {{ locator_config.prefix }} block-len {{ locator_config.block_len }} node-len {{ locator_config.node_len }} func-bits {{ locator_config.func_bits }}
{% endif %}
{% if locator_config.behavior_usid is vyos_defined %}
behavior usid
{% endif %}
{% if locator_config.format is vyos_defined %}
format {{ locator_config.format }}
{% endif %}
exit
!
{% endfor %}
exit
{% endif %}
!
exit
!
exit
!
{% endif %}
Co-authored-by: Christian Breunig <christian@breunig.cc>
Co-authored-by: Christian Breunig <christian@breunig.cc>
Co-authored-by: Christian Breunig <christian@breunig.cc>
Co-authored-by: Christian Breunig <christian@breunig.cc>
|
@sever-sever, I believe I have fixed the conflict on the jinja2 profile :) |
…ion of FRR Squashing changes into one.
Co-authored-by: Christian Breunig <christian@breunig.cc>
Co-authored-by: Christian Breunig <christian@breunig.cc>
Co-authored-by: Christian Breunig <christian@breunig.cc>
Co-authored-by: Christian Breunig <christian@breunig.cc>
Co-authored-by: Christian Breunig <christian@breunig.cc>
Co-authored-by: Christian Breunig <christian@breunig.cc>
This has been fixed. I came to the same idea without seeing you comment ;) |
Oh he was absolutely correct. I initially tried to do this back like a year ago but the schema didn't allow me then. Thankfully we've made that change in the schema and now we can :) |
|
CI integration ❌ failed! Details
|
Change summary
This is the initial implementation for Segment Routing Traffic Engineering that FRR has
implemented. It is not complete, there's more to add. But this is the start to it.
This has the the configuration commands, the smoketests implemented for the way
that this feature works within FRR.
Types of changes
Related Task(s)
https://vyos.dev/T6750
Related PR(s)
FRRouting/frr#18910 <--- Opened Issue for FRR fix
FRRouting/frr#20638 <--- Opened PR fix from https://github.com/hedrok
How to test / Smoketest result
Here's how to add and delete the initial configuration:
Here's the smoketests:
Checklist: