[j-nsp] BGP output queue priorities between RIBs/NLRIs

Rob Foehl rwf at loonybin.net
Mon Jul 27 23:05:44 EDT 2020


Anyone know the secret to getting BGP output queue priorities working 
across multiple NLRIs?

Had trouble with EVPN routes getting stuck behind full refreshes of the v4 
RIB, often for minutes at a time, which causes havoc with the default DF 
election hold timer of 3 seconds.  Bumping those timers up to tens of 
minutes solves this, but... poorly.

The documentation[1] says:

"In the default configuration, that is, when no output-queue-priority 
configuration or policy that overrides priority exists, the routing 
protocol process (rpd) enqueues BGP routes into the output queue per 
routing information base (RIB). [...] While processing output queues, the 
BGP update code flushes the output queue for the current RIB before moving 
on to the next RIB that has a non-empty output queue."

I've tried about a dozen combinations of options, and cannot get any other 
result with inet/evpn routes in the same session -- inet.0 routes always 
arrive ahead of *.evpn.0.  Am I missing something[2], or is that text not 
quite accurate?

-Rob


[1] https://www.juniper.net/documentation/en_US/junos/topics/topic-map/bgp-route-prioritization.html

[2] Highlight reel of failed attempts, all on 19.2R2 thus far:

- "show bgp output-scheduler" is empty without top-level "protocols bgp
   output-queue-priority" config, regardless of anything else

- Top-level "protocols bgp family evpn signaling" priority config -- and
   nothing else within that stanza -- broke every v6 session on the box,
   even with family inet6 explicitly configured under those groups

- Per-group family evpn priority config would show up under "show bgp
   group output-queues" and similar, but adding family inet would cause the
   NLRI evpn priority output to disappear

- Policy-level adjustments to any of the above had no effect between NLRIs

- "show bgp neighbor output-queue" output always looks like this:

   Peer: x.x.x.x+179 AS 20021 Local: y.y.y.y+52199 AS n
     Output Queue[1]: 0            (inet.0, inet-unicast)

   Peer: x.x.x.x+179 AS 20021 Local: y.y.y.y+52199 AS n
     Output Queue[2]: 0            (bgp.evpn.0, evpn)

   ...which seems to fit the default per-RIB behavior as described.



More information about the juniper-nsp mailing list