[j-nsp] BGP output queue priorities between RIBs/NLRIs
Rob Foehl
rwf at loonybin.net
Wed Jul 29 06:38:02 EDT 2020
On Tue, 28 Jul 2020, Jeffrey Haas wrote:
>> - "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.
Right, that's what I took away from the docs... No luck in any case,
starting from the "simplest" of just adding this:
set protocols bgp group X family evpn signaling output-queue-priority expedited
That'll produce this in "show bgp group output-queues" for that group:
NLRI evpn:
OutQ: expedited RRQ: priority 1 WDQ: priority 1
...but that's it, and no change in behavior. Same config for family inet
in the same group would show NLRI inet: output, and no more evpn if both
were configured. Still no change.
> Can you clarify what you mean "broke every v6 session"?
For that one, it shut down every session on the box that didn't explicitly
have family inet / family evpn configured at the group/neighbor level,
refused all the incoming family inet sessions with NLRI mismatch (trying
to send evpn only), and made no attempt to reestablish any of the family
inet6 sessions.
> 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.
In that specific case, yes; maybe I didn't wait long enough, but this was
only an experiment to see whether setting something under global family
evpn would do anything different -- and had about the expected result,
given the way inheritance works. (This was the least surprising result
out of everything I tried. I have logs, if you want 'em.)
> 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.
Eventually, yes -- same for certain classes of inet routes -- but for now
I'd have been happy with "just shove everything EVPN into the expedited
queue". I couldn't get them ahead of inet, and it was a many-minute wait
for anything else to arrive, so pretty easy to observe...
-Rob
>> - 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