0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-09-16 18:35:19 +00:00
Commit Graph

5093 Commits

Author SHA1 Message Date
Maria Matejka
d3b4b36af5 This also hits the cork, maybe this refactoring is too brutal at once 2024-06-15 22:55:19 +02:00
Maria Matejka
6223c4066c TMP: lockfree usecount and spinhash use callbacks 2024-06-15 20:42:09 +02:00
Maria Matejka
83045e9a1f Configuration obstacles made a separate, explicit structure
With this, one can walk the obstacle list in a debugger and
easier see which specific object is holding the reference.
2024-06-14 23:16:07 +02:00
Maria Matejka
61dcbb1d83 Global runtime values separated from config 2024-06-14 23:16:07 +02:00
Maria Matejka
73ad0e2dcb CLI: Show symbols, route and mpls explicitly passes the actual config to the show function 2024-06-14 23:16:07 +02:00
Maria Matejka
c4fbc5592d Filter global values are not used directly from config 2024-06-14 23:16:07 +02:00
Maria Matejka
397eee5a00 Config: Removed obsolete force_restart option when commiting 2024-06-14 23:16:07 +02:00
Maria Matejka
ea996d8403 CLI keeps its active config pointer explicitly 2024-06-14 23:16:07 +02:00
Maria Matejka
f5fd70c54a Callback: bundling event with its target 2024-06-14 23:16:07 +02:00
Maria Matejka
4ac55615e4 BGP and HCU uncorking is processed in the right loop
closes #86

The uncork events are running from mainloop so these should just
dispatch the right event to the right loop. Doing anything long there
is bad for performance and latency as the uncork list may be huge.
2024-06-12 22:40:17 +02:00
Maria Matejka
3ed192edc3 Table: RCU synchronization moved to lfjour
the sync is actually needed when the pages get freed, not precisely
after every item cleanup, as the data technically stays intact until the
deferred free's are called.
2024-06-12 18:07:40 +02:00
Maria Matejka
bd05dd7304 Netindex cleanup calls synchronize_rcu() by batches 2024-06-12 14:48:33 +02:00
Maria Matejka
95d8329043 Table: fixed export_all flush when export_best is idle 2024-06-12 14:48:33 +02:00
Maria Matejka
0e42398304 Removed unnecessary recursion from rt_export_get() 2024-06-12 14:48:33 +02:00
Maria Matejka
76a1998ff5 Netindex rehash debug 2024-06-12 14:48:33 +02:00
Maria Matejka
9991fbbe0b TMP: table best-all cleanup debug 2024-06-12 14:48:33 +02:00
Maria Matejka
ea4aef2a14 Memory allocator tweaking
TODO: make this configurable
2024-06-12 14:48:33 +02:00
Maria Matejka
951d0422fa Attributes: fix collision on free-lookup
Freeing the eattrs is tricky as somebody else may find them
via RTA-unlocked lookup inbetween.
2024-06-12 14:48:33 +02:00
Maria Matejka
5c8179d63a Time accounting must be done by coarse timers
on some ARM, the precise timers are too slow to be actually useful
2024-06-12 14:48:33 +02:00
Maria Matejka
4d01ca3e8f Every table has its own netindex now
It's obnoxiously slow to walk over sparse tables.
2024-06-12 14:48:33 +02:00
Maria Matejka
d8c0faaec9 Netindex cleanup now doesn't need to unlock to synchronize RCU 2024-06-12 14:48:33 +02:00
Maria Matejka
a146abc8fd Revert (partial) "Route attributes now use the common lockfree usecount"
This partially reverts commit d617801c31.

The common lockfree doesn't work well for high-volume structures like
eattr cache because it expects the structure to be cleaned up by a
sweeper routine ... which is very ineffective for >1M records.

OTOH, we need the deferred ea_free in all cases ... so keeping that.
2024-06-12 14:48:33 +02:00
Maria Matejka
8e240fc44f Table best feed collision fix 2024-06-12 14:48:33 +02:00
Maria Matejka
47e493f228 Dropped net_resolve_index from feeder fast path 2024-06-12 14:48:33 +02:00
Maria Matejka
ab1697d7a0 Next hop update is split by time, not by number of routes 2024-06-12 14:48:33 +02:00
Maria Matejka
2e882d4a7d IO Loop: process socket reads only after timers and events are done 2024-06-12 14:48:33 +02:00
Maria Matejka
f45c519039 BGP: splitting TX by time, not number of messages sent 2024-06-12 14:48:33 +02:00
Maria Matejka
0827797e6e Table: pruning is deferred by task time, not by item count 2024-06-12 14:48:33 +02:00
Maria Matejka
464d483af4 Channel: postpone the export event when stopping 2024-06-12 14:48:33 +02:00
Maria Matejka
50d7287741 IO Threads: scheduler debug shows info on next loop to run 2024-06-12 14:48:33 +02:00
Maria Matejka
1180f25123 Threads: smoothening loop pickup and less aggressive dropping 2024-06-12 14:48:33 +02:00
Maria Matejka
8ad9c946e1 IO loop picker fixed
Now if the thread finds out that it actually isn't busy,
it unsets the business status and picks something up right away.
2024-06-12 14:48:33 +02:00
Maria Matejka
4bca3b9f86 Task-in-limit checker hacked for mainloop 2024-06-12 14:48:33 +02:00
Maria Matejka
d7cf378003 Table: too fast export validity check replaced with just a retry 2024-06-12 14:48:33 +02:00
Maria Matejka
661193cf98 Thread IO: a little bit faster RX repeat 2024-06-12 14:48:33 +02:00
Maria Matejka
f516d7cfe9 Netindex: fix absurd hash parameters 2024-06-12 14:48:33 +02:00
Maria Matejka
6d79433a44 Converted ea cache to spinhash 2024-06-12 14:48:33 +02:00
Maria Matejka
fece55b810 Netindex: converted to spinlocked hash 2024-06-12 14:48:33 +02:00
Maria Matejka
1032bf2543 Hash: Added a spinlocked variant
The spinlocked hash has a main rw spinlock for the data blocks
and then a rw spinlock for each hash chain. Rehashing is asynchronous,
running from an event, and it happens chain-wise, never blocking more
than one chain at a time.
2024-06-12 14:48:33 +02:00
Maria Matejka
d4733b28d9 Dropping netindex fragile manipulation
Now the netindex doesn't expose its internals and can be converted
to the spinlocked implementation much easier.
2024-06-12 09:23:50 +02:00
Maria Matejka
b15eb4b546 roa_check() uses the auxiliary table 2024-06-12 09:23:50 +02:00
Maria Matejka
499d5e6fb3 ROA tables have now an auxiliary table
There is an IP table for every ROA table, holding special records
combining all known ROAs for every top-prefix.

The ROA digestor is now an IP digestor, running over the auxiliary
table.
2024-06-12 09:23:50 +02:00
Maria Matejka
602595fe10 Attributes: cleanup
Dropping EAF_TYPE__MAX and adding a check for forgotten
ea class registration
2024-06-12 09:23:50 +02:00
Maria Matejka
bf961ba405 Threads shouldn't drop stopping loops 2024-06-12 09:23:50 +02:00
Maria Matejka
0fb9177374 Loop scheduler tracing options configurable 2024-06-12 09:23:50 +02:00
Maria Matejka
67e9a37291 Fixed nanoseconds in IO loop time limiter 2024-06-12 09:23:50 +02:00
Maria Matejka
45cd4bbe9c Fixed deferred route freeing crash
The sending channel may be already gone when rte_free_deferred()
is finally called so we have to log about route freeing in the
synchronous call instead.
2024-06-12 09:23:50 +02:00
Maria Matejka
b548ffe197 Fixed non-exporting protocol reload crash 2024-06-12 09:23:50 +02:00
Maria Matejka
9e88fc5b6b Netindex: allow u32 -> netindex without locking 2024-06-12 09:23:50 +02:00
Maria Matejka
dbe246a4bd Proto: fix reimporter crash on shutdown
Channel transition to CS_STOP forgot to postpone the reimporter event,
thus reimport could theoretically run too late and cause trouble.
2024-06-12 09:23:50 +02:00