Description

Customer upgraded an srx340 from 21.4 -> 22.4 -> 23.4. In Version 23.4 Routes with qualified-next-hop will not be installed. Routes with next-hop will be installed.

 

 

Symptoms

Customer is trying to leak the qualified-next-hop to RI and when checking the route table, does not see the route.

the same configuration works on version 21.4 Junos but not on 23.4 Junos

 

Routing-table output of 23.4 code:

 [email protected]> show route table vr_transit.inet.0
 
 vr_transit.inet.0: 14 destinations, 14 routes (14 active, 0 holddown, 0 hidden)
 + = Active Route, - = Last Active, * = Both
 
 x.x.x.x/30    *[Direct/0] 1w0d 06:22:31
                     >  via lt-0/0/0.253
 x.x.x.x/32    *[Local/0] 1w0d 06:22:31
                        Local via lt-0/0/0.253
 x.x.x.x/24     *[Static/5] 1w0d 06:22:31
                     >  to y.y.y.y via lt-0/0/0.253
 x.x.x.x/24    *[Static/5] 1w0d 06:22:31
                     >  to y.y.y.y via lt-0/0/0.253
 x.x.x.x/25    *[Static/5] 1w0d 06:22:31
                     >  to y.y.y.y via lt-0/0/0.253
 x.x.x.x/27   *[Static/5] 1w0d 06:22:31
                     >  to y.y.y.y via lt-0/0/0.253
 x.x.x.x/27   *[Static/5] 1w0d 06:22:31
                     >  to y.y.y.y via lt-0/0/0.253
 x.x.x.x/27    *[Static/5] 1w0d 06:22:31
                     >  to y.y.y.y via lt-0/0/0.253
 x.x.x.x/27    *[Static/5] 1w0d 06:22:31
                     >  to y.y.y.y via lt-0/0/0.253

 

Route-table of 21.4 Junos with default route

 

[email protected]# run show route table vr_transit.inet.0

vr_transit.inet.0: 15 destinations, 16 routes (15 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[Static/100] 1w1d 12:41:30
                    >  via gr-0/0/0.8000
                       via gr-0/0/0.8001
                    [Static/200] 1w1d 12:41:30
                    >  via gr-0/0/0.9000
                       via gr-0/0/0.9001

 

Solution

This issue is due to change in behavior in Junos in the newer codes above 23.4

 

 [email protected]# show routing-options rib-groups

 import-vr_isp0-to-transit {

   import-rib [ vr_isp0.inet.0 abc.inet.0 ];

   import-policy import_isp;

 }

 import-vr_isp1-to-transit {

   import-rib [ vr_isp1.inet.0 abc.inet.0 ];

   import-policy import_isp;

 }

 

 These 2 rib-groups are applied for interface-routes leaking from vr_isp0.inet.0 and vr_isp1.inet.0 into abc .inet.0

 set groups abc routing-instances vr_isp0 routing-options interface-routes rib-group inet import-vr_isp0-to-transit

 set groups abc routing-instances vr_isp1 routing-options interface-routes rib-group inet import-vr_isp1-to-transit

 

 But the import-policy import_isp is not configured to leak gr interface routes.

 

 [email protected]# show policy import_isp

 Policy import_isp1

   Term unnamed:

     from

       route filter:

         x.x.x.x/30 orlonger

         x.x.x.x/30 orlonger

         x.x.x.x/30 orlonger

         x.x.x.x/30 orlonger

     then accept

 

 

 Because of this the gr interface routes are not leaked into abc.inet.0 table.

 As these gr interfaces are not leaked into abc instance and therefore the static route in gr_transit instance over the gr interfaces can not be installed in abc .inet.0 table.

 

 set routing-instances abc routing-options static route 0.0.0.0/0 qualified-next-hop gr-0/0/0.8000 preference 100

 set routing-instances abc routing-options static route 0.0.0.0/0 qualified-next-hop gr-0/0/0.9000 preference 200

 set routing-instances abc routing-options static route 0.0.0.0/0 qualified-next-hop gr-0/0/0.8001 preference 100

 set routing-instances abc routing-options static route 0.0.0.0/0 qualified-next-hop gr-0/0/0.9001 preference 200

 

 For static route to be added in an instances RIB it is required that the next-hops interface should either belong to the instance or it is leaked from another instance.

 This check was not correctly implemented prior to 23.4 and therefore the static route was allowed in abc.inet.0 table even with incorrect import-policy and without the gr interface routes present in abc table.

 

 

 After correcting the import-policy to allow gr interfaces to be allowed in abc table as below:

 

 [email protected]# show policy import_isp

 Policy import_isp

   Term 1:

     from proto [ Direct Local ]

     interface [ gr-0/0/0.8000 gr-0/0/0.9000 gr-0/0/0.8001 gr-0/0/0.9001 ]

     then accept

   Term 2:

     from

       route filter:

         x.x.x.x/30 orlonger

         x.x.x.x/30 orlonger

         x.x.x.x/30 orlonger

         x.x.x.x/30 orlonger

     then accept

   Term 3:

     then reject

 

 

 The interface routes are leaked in abc table and with that the static route also gets added in RIB.

 

 [email protected]> show route table abc.inet.0

 abc.inet.0: 19 destinations, 20 routes (19 active, 0 holddown, 0 hidden)

 + = Active Route, - = Last Active, * = Both

 

 0.0.0.0/0     *[Static/100] 00:05:50

           > via gr-0/0/0.8000

            via gr-0/0/0.8001

           [Static/200] 00:05:50

           > via gr-0/0/0.9000

            via gr-0/0/0.9001

Modification History

2025-03-31 : Article Created

2025-03-31 : Article edited and Published

2025-03-31 : Updated Title and Published

2025-07-07 : Updated Internal PR