Description

The article introduces an expected commit check failed behavior while providing conflicted prefix segment identifier (SID) and node SID to prefixes by configuring policies.

Symptoms

The same behavior can be seen in both junos and junos-evo , no matter the policies are applied or not .

 

user@Router# set policy-options policy-statement test1 term 1 from route-filter 192.168.0.1/32 exact 
user@Router# set policy-options policy-statement test1 term 1 then prefix-segment index 1000 
user@Router# set policy-options policy-statement test1 term 1 then prefix-segment node-segment 
user@Router# set policy-options policy-statement test1 term 1 then accept 

user@Router# set policy-options policy-statement test2 term 1 from route-filter 192.168.0.1/32 exact 
user@Router# set policy-options policy-statement test2 term 1 then prefix-segment index 2000 
user@Router# set policy-options policy-statement test2 term 1 then prefix-segment node-segment 
user@Router# set policy-options policy-statement test2 term 1 then accept 

user@Router# commit 
error: RPD policy: Prefix 192.168.0.1/32 has a segment 1000 algo 0 via policy conflicting with segment 2000 algo 0
error: configuration check-out failed
error: commit cleanup failed for EVO

 

Solution

Most policy options are gracious in resolving other kinds of conflicts. But for prefix segment conflicts, the draft draft-ietf-spring-conflict-resolution-05.txt was explicit in that conflicts should be prevented at the source. 
 

3.8.  Minimizing the occurence of conflicts
 
   Conflicts in SID advertisements are always the result of a
   misconfiguration.  Conflicts may occur either in the set of
   advertisements originated by a single node or between advertisements
   originated by different nodes.
 
   Conflicts which occur within the set of advertisements (PFX and SRMS)
   originated by a single node SHOULD be prevented by configuration
   validation on the originating node.

Modification History

2024-01-22 : Article Created