Maria Matejka
a4a7e09478
Revert "BGP: Export uses common attribute cache"
...
This reverts commit d01a7c2bda
.
It seems that the performance penalty in global ea cache is actually
very high so returning back to local attribute caches in every BGP.
2024-06-26 11:30:48 +02:00
Maria Matejka
a9534186f1
Fixed fast subsequent reconfigurations bug
2024-06-26 11:30:41 +02:00
Maria Matejka
7d455d64ca
Remove spinlock debug structures in production build
2024-06-26 11:30:41 +02:00
Maria Matejka
5b7fd453d4
BGP: show proto info crash fix if BGP is down
2024-06-26 11:30:41 +02:00
Maria Matejka
9f7874a5c9
BGP: using closer pointer for netindex hash than all the way to the table
2024-06-26 11:30:41 +02:00
Maria Matejka
8e67cba528
Linpool: allocation split to fast and slow
2024-06-26 11:30:41 +02:00
Maria Matejka
3d45539455
ROA aggregator uses its own rte source instead of recycling
2024-06-26 11:29:43 +02:00
Maria Matejka
6f981969bb
RCU read lock optimization
2024-06-26 11:29:43 +02:00
Maria Matejka
d23db54da0
ROA: Switching off digestor splitting
2024-06-26 11:29:43 +02:00
Maria Matejka
4998ca5554
Route attribute usecount doesn't need to synchronize on unlock
2024-06-26 11:29:43 +02:00
Maria Matejka
2c4b368176
RPKI socket read is prioritized over other sockets
2024-06-26 11:29:43 +02:00
Maria Matejka
f9b46a1ba1
Refeed done hooks are called in the same order as the requests came in
2024-06-26 11:29:43 +02:00
Maria Matejka
0b6e752bd9
Conflating multiple partial ROA reload requests together
2024-06-26 11:29:43 +02:00
Maria Matejka
bd44a13ce5
Spinhash main lock removed
...
Spinhash now uses RCU instead to guard cur-new exchanges to avoid
excessive synchronization and cache misses on the main spinlock.
2024-06-26 11:29:12 +02:00
Maria Matejka
282066ee29
Moved the cork thresholds massively up
...
This allows for more efficient import and export bundling, including
best route export and next hop resolution.
2024-06-26 11:29:12 +02:00
Maria Matejka
9be90c0f84
Fixed a race condition in rcu-domain blocking
2024-06-19 12:36:55 +02:00
Maria Matejka
67875e76d9
Safer cleanup of table auxiliary routines
2024-06-19 12:36:55 +02:00
Maria Matejka
dda37842dc
No page flush before polling
...
The maximum amount of locally kept pages is 128 so we can just
well keep the half-meg of RAM allocated and prepared for future use.
2024-06-18 11:02:51 +02:00
Maria Matejka
a1405a5bc7
Prefilter runs before generating feeds
2024-06-16 21:36:45 +02:00
Maria Matejka
d6233b4de0
Table cork now uses callbacks and direct flush to uncork
2024-06-15 23:31:44 +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