[j-nsp] BGP output queue priorities between RIBs/NLRIs
Jeffrey Haas
jhaas at juniper.net
Tue Jul 28 09:45:49 EDT 2020
See below:
> On Jul 27, 2020, at 11:05 PM, Rob Foehl <rwf at loonybin.net> wrote:
>
> [External Email. Be cautious of content]
>
>
> 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
If you're simply trying to prioritize evpn differently than inet unicast, simply having a separate priority for that address family should have been sufficient.
Can you clarify what you mean "broke every v6 session"?
I think what you're running into is one of the generally gross things about the address-family stanza and the inheritance model global => group => neighbor. If you specify ANY address-family configuration at a given scope level, it doesn't treat it as inheriting the less specific scopes; it overrides it.
FWIW, the use case of "prioritize a family different" is one of the things this was intended to address. Once you have a working config you may find that you want to do policy driven config and use the route-type policy to prioritize the DF related routes in its own queue. That way you're not dealing with the swarm of ARP related routes.
-- Jeff
>
> - 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.
>
> _______________________________________________
> juniper-nsp mailing list juniper-nsp at puck.nether.net
> https://urldefense.com/v3/__https://puck.nether.net/mailman/listinfo/juniper-nsp__;!!NEt6yMaO-gk!Xqncm4WhWcDxEBmq2G8Oj_x0PGbBfFynQ62E2OyAj00qIuijy3p3IqwTnSifXP8$
More information about the juniper-nsp
mailing list