vyos-1x icon indicating copy to clipboard operation
vyos-1x copied to clipboard

T6750: Add initial Segment Routing Traffic Engineering

Open Cheeze-It opened this issue 4 months ago • 8 comments

Change Summary

Types of changes

  • [ ] Bug fix (non-breaking change which fixes an issue)
  • [x] New feature (non-breaking change which adds functionality)
  • [ ] Code style update (formatting, renaming)
  • [ ] Refactoring (no functional changes)
  • [ ] Migration from an old Vyatta component to vyos-1x, please link to related PR inside obsoleted component
  • [ ] Other (please describe):

Related Task(s)

https://vyos.dev/T6750

Related PR(s)

None to my knowledge.

Component(s) name

mpls, segment routing, pathd

Proposed changes

The changes that I am adding here are adding the segment routing traffic engineering config options within FRR. They are however very experimental as there are seemingly some problems with using them. But this will add initial support for those configs in FRR.

How to test

Adding segment routing database import:

vyos@vyos# set protocols segment-routing traffic-engineering database-import-protocol isis
[edit]
vyos@vyos# compare
[protocols]
+ segment-routing {
+     traffic-engineering {
+         database-import-protocol {
+             isis
+         }
+     }
+ }

[edit]
vyos@vyos# commit
[edit]
vyos@vyos# exit
Warning: configuration changes have not been saved.
exit
vyos@vyos:~$ vtysh -c "show run"
Building configuration...

Current configuration:
!
frr version 9.1.2
frr defaults traditional
hostname vyos
log syslog
log facility local7
service integrated-vtysh-config
!
ip route 0.0.0.0/0 10.0.0.65
!
segment-routing
 traffic-eng
  mpls-te on
  mpls-te import isis
 exit
exit
!
rpki
exit
!
end
Adding a segment list here:

[edit]
vyos@vyos# set protocols segment-routing traffic-engineering segment-list testing-segment-list index value 0 mpls label 1000
[edit]
vyos@vyos# set protocols segment-routing traffic-engineering segment-list testing-segment-list index value 0 nai adjacency ipv4 source-identifier 192.168.0.1
[edit]
vyos@vyos# set protocols segment-routing traffic-engineering segment-list testing-segment-list index value 0 nai adjacency ipv4 destination-identifier 192.168.0.2
[edit]
vyos@vyos#
[edit]
vyos@vyos# compare
[protocols segment-routing traffic-engineering]
+ segment-list testing-segment-list {
+     index {
+         value 0 {
+             mpls {
+                 label "1000"
+             }
+             nai {
+                 adjacency {
+                     ipv4 {
+                         destination-identifier "192.168.0.2"
+                         source-identifier "192.168.0.1"
+                     }
+                 }
+             }
+         }
+     }
+ }

[edit]
vyos@vyos# commit
[edit]
vyos@vyos# exit
Warning: configuration changes have not been saved.
exit
vyos@vyos:~$ vtysh -c "show run"
Building configuration...

Current configuration:
!
frr version 9.1.2
frr defaults traditional
hostname vyos
log syslog
log facility local7
service integrated-vtysh-config
!
ip route 0.0.0.0/0 10.0.0.65
!
segment-routing
 traffic-eng
  mpls-te on
  mpls-te import isis
  segment-list testing-segment-list
   index 0 mpls label 1000 nai adjacency 192.168.0.1 192.168.0.2
  exit
 exit
exit
!
rpki
exit
!
end

Smoketest result

vyos@vyos:~$
vyos@vyos:~$ /usr/libexec/vyos/tests/smoke/cli/test_protocols_segment-routing.py
test_segment_routing_01_srv6 (__main__.TestProtocolsSegmentRouting.test_segment_routing_01_srv6) ... ok
test_segment_routing_02_srv6_sysctl (__main__.TestProtocolsSegmentRouting.test_segment_routing_02_srv6_sysctl) ... ok
test_segment_routing_03_srte_database (__main__.TestProtocolsSegmentRouting.test_segment_routing_03_srte_database) ... ok
test_segment_routing_04_mpls_label (__main__.TestProtocolsSegmentRouting.test_segment_routing_04_mpls_label) ... ok
test_segment_routing_05_mpls_label_and_adjacency (__main__.TestProtocolsSegmentRouting.test_segment_routing_05_mpls_label_and_adjacency) ... ok
test_segment_routing_06_mpls_label_and_prefix (__main__.TestProtocolsSegmentRouting.test_segment_routing_06_mpls_label_and_prefix) ... ok

----------------------------------------------------------------------
Ran 6 tests in 26.516s

Checklist:

  • [x] I have read the CONTRIBUTING document
  • [x] I have linked this PR to one or more Phabricator Task(s)
  • [x] I have run the components SMOKETESTS if applicable
  • [x] My commit headlines contain a valid Task id
  • [x] My change requires a change to the documentation
  • [ ] I have updated the documentation accordingly

I have not updated documentation yet but will do if PR is merged.

Cheeze-It avatar Oct 19 '24 19:10 Cheeze-It