Segment Routing

Flex-Algo in OcNOS: Fundamentals of Customized Path Selection

Traditional IS-IS routing uses a single shortest-path algorithm (SPF) based on link metric. Every packet follows the same path to every destination — regardless of whether that path is optimal for latency-sensitive 5G traffic, high-bandwidth video streaming, or isolated management traffic. Segment Routing Flexible Algorithm (Flex-Algo) solves this by allowing operators to define multiple custom routing algorithms that coexist in the same network.

What is Flex-Algo?

Flex-Algo is an extension of IS-IS Segment Routing that enables operators to define additional SPF computations — each using a different optimization metric and/or link affinity constraints. Each algorithm gets its own Flex-Algo ID (128–255), its own set of prefix SIDs, and its own forwarding entries. Traffic is steered into the appropriate algorithm by placing the correct Flex-Algo SID in the segment stack.

Algorithm ID Type Optimization Typical Use Case
0 Standard SPF Minimum IGP metric Default best-path routing
128 Flex-Algo Minimum delay 5G fronthaul, real-time gaming
129 Flex-Algo Minimum TE metric High-bandwidth bulk traffic
130 Flex-Algo Exclude red links Traffic isolation, regulatory compliance

How Flex-Algo Works in IS-IS

PE1 Algo 0 SID: 16001 Algo 128: 17001 Algo 129: 18001 PE2 Algo 0 SID: 16002 Algo 128: 17002 Algo 129: 18002 P-North delay: 2ms | TE: 100 P-NorthEast delay: 1ms | TE: 100 P-South delay: 8ms | TE: 10 P-SouthEast delay: 6ms | TE: 10 Algo 128: min-delay (5G, RT apps) Algo 129: min-TE-metric (bulk BW)
Flex-Algo in action: two algorithms operate simultaneously over the same physical network. Algorithm 128 (delay-optimized) takes the northern path with 2ms + 1ms delay. Algorithm 129 (TE-metric-optimized) takes the southern path with lower TE cost for high-bandwidth traffic. Each node holds separate SIDs for each algorithm.

Configuring Flex-Algo in OcNOS

! OcNOS -- Define Flex-Algo algorithms in IS-IS (on all routers)
!
router isis CORE
  net 49.0001.0000.0000.0001.00
  is-type level-2-only
  segment-routing mpls
  !
  ! Algorithm 128: minimize link delay (for latency-sensitive traffic)
  flex-algo 128
    metric-type delay              ! Use link delay as optimization metric
    advertise-definition           ! Flood definition to all IS-IS routers
    priority 128                   ! Higher priority wins if conflict
  !
  ! Algorithm 129: minimize TE metric (for high-bandwidth traffic)
  flex-algo 129
    metric-type te-metric          ! Use TE metric (configured per-link)
    advertise-definition
    priority 128
  !
  ! Algorithm 130: exclude "red" links (traffic isolation)
  flex-algo 130
    metric-type igp                ! Use standard IGP metric
    affinity exclude-any RED       ! Exclude any link with RED affinity
    advertise-definition
    priority 128
  !
  address-family ipv4 unicast
    segment-routing mpls
  exit-address-family
! OcNOS -- Assign per-algorithm SIDs to loopback (all routers)
!
interface lo
  ip address 10.0.0.1/32
  ip router isis CORE
  !
  ! Default algorithm (algo 0): standard SID
  isis segment-routing prefix-sid index 1           ! Label: SRGB_base + 1
  !
  ! Algorithm 128: separate SID for delay-optimized topology
  isis segment-routing prefix-sid algorithm 128 index 1001
  ! Label: SRGB_base + 1001 (e.g., 16000 + 1001 = 17001)
  !
  ! Algorithm 129: separate SID for TE-metric topology
  isis segment-routing prefix-sid algorithm 129 index 2001
  ! Label: SRGB_base + 2001 (e.g., 16000 + 2001 = 18001)
! OcNOS -- Configure per-link delay and TE metrics
!
interface eth-0-1
  ip router isis CORE
  isis metric 10                   ! Standard IGP metric
  !
  ! Link delay for Flex-Algo 128
  isis metric delay 2000           ! 2ms delay (in microseconds: 2000us)
  !
  ! TE metric for Flex-Algo 129
  isis metric te-metric 10         ! Low TE metric = preferred for bulk BW
!
interface eth-0-2
  ip router isis CORE
  isis metric 10
  isis metric delay 8000           ! 8ms delay -- less preferred for Algo 128
  isis metric te-metric 100        ! High TE metric -- less preferred for Algo 129
!
! Set link affinity for Flex-Algo 130 isolation:
interface eth-0-3
  isis affinity RED                ! This link excluded by Algo 130

Steering Traffic with Flex-Algo SIDs

! OcNOS -- Use Flex-Algo SIDs in SR-TE policy for traffic steering
!
segment-routing
  traffic-eng
    policy LATENCY-5G
      color 128 end-point 10.0.0.5     ! Steer toward PE5 via Algo 128
      candidate-paths
        preference 100
          dynamic                       ! PCE computes using Algo 128 SIDs
            metric type delay
          !
        !
      !
    !
    policy BULK-DATA
      color 129 end-point 10.0.0.5
      candidate-paths
        preference 100
          dynamic
            metric type te
          !
        !
      !
    !
  !
!
! Verify Flex-Algo topology is correct:
show isis flex-algo
show isis database detail | include Flex-Algo
show isis segment-routing prefix-sids

IP Infusion Engineering Team

Share