Maria Matejka
ea9f64e0ec
BGP: pending TX prefixes link netindex instead of copying net_addr
...
This helps with memory consumption, allows for removal of multiple
slab/mblock ifs and prepares for easier feeds.
2024-06-24 09:42:03 +02:00
Maria Matejka
1eed19cadb
BGP: refactored pending TX back into channel
2024-06-24 09:42:03 +02:00
Maria Matejka
5cbebfc940
Real almost-lockless feeds and more pull-like exports
...
Introducing a new omnipotent internal API to just pass route updates
from whatever point wherever we want.
From now on, all the exports should be processed by RT_WALK_EXPORTS
macro, and you can also issue a separate feed-only request to just get a
feed and finish.
The exporters can now also stop and the readers must expect that to
happen and recover. Main tables don't stop, though.
2024-06-24 09:42:03 +02:00
Maria Matejka
1d0e47e74b
BGP: explicitly sending route refresh from CLI
2024-06-24 09:42:03 +02:00
Maria Matejka
402a574050
Protocol filter reload is now done by 'reload filters'
...
This prepares for the separate 'reload bgp' command triggering BGP Route Refresh
2024-06-24 09:42:03 +02:00
Maria Matejka
2357fc7d95
Static: Fixed undefined nexthop padding problems
2024-06-24 09:42:03 +02:00
Maria Matejka
b6e70f5ecf
Netindex: fixed resolving net by index
2024-06-24 09:42:03 +02:00
Maria Matejka
2537e7f924
RIP partial reload never worked properly, running full reload always
2024-06-24 09:42:03 +02:00
Maria Matejka
b9db1d70fe
Dropping obsolete protocol Perf
...
We have now better methods how to measure overall performance
and this obsolete protocol has basically rotten away. If anybody
needs its features, feel free to revive it in future.
2024-06-24 09:42:03 +02:00
Maria Matejka
23c861f95e
OSPF partial reload never worked properly, running full reload always
2024-06-24 09:42:03 +02:00
Maria Matejka
89c92abb7a
Simplified temporary resources
...
Also TMP_SAVED now uses the CLEANUP hook to allow for breaks and returns
2024-06-24 09:42:03 +02:00
Maria Matejka
39f69064ec
SKIP_BACK_DECLARE: easier embedded-to-parent typecasting
2024-06-24 09:42:03 +02:00
Maria Matejka
66e98f69f8
Lockless feed of a single net
2024-06-24 09:42:03 +02:00
Maria Matejka
21c1df625a
Using ea_lookup_tmp() for temporarily keeping attribute references
...
To avoid needs for keeping local temporary references for attributes,
now one can use ea_lookup_tmp() to ensure that the attributes are
valid and stored until the task ends. After that, the attributes are
automatically unref'd and also deallocated if needed.
2024-06-24 09:42:03 +02:00
Maria Matejka
bff3b7eb2c
Refactored the deferring framework into a separate structure
2024-06-24 09:42:03 +02:00
Maria Matejka
e39a76d6f6
Avoiding RCU synchronization deadlock when locking in critical section
...
Explicitly marking domains eligible for RCU synchronization. It's then
forbidden to lock these domains in RCU critical section to avoid
possible deadlock.
2024-06-24 09:42:03 +02:00
Maria Matejka
2ca9e6fdeb
RCU Unwinder refactored from route table to a separate structure
2024-06-24 09:42:03 +02:00
Maria Matejka
020c34136f
Table feeds are now lockless
...
This commit makes the route chains in the tables atomic. This allows not
only standard exports but also feeds and bulk exports to be processed
without ever locking the table.
Design note: the overall data structures are quite brittle. We're using
RCU read-locks to keep track about readers, and we're indicating ongoing
work on the data structures by prepending a REF_OBSOLETE sentinel node
to make every reader go waiting.
All the operations are intended to stay inside nest/rt-table.c and it
may be even best to further refactor the code to hide the routing table
internal structure inside there. Nobody shall definitely write any
routines manipulating live routes in tables from outside.
2024-06-24 09:42:03 +02:00
Maria Matejka
629e29febf
Fixed flush condition when stale cycle valid/set indicators wrap around
2024-06-24 09:42:03 +02:00
Maria Matejka
074384d6ba
Kernel: replaced synchronous prune by a refeed
2024-06-24 09:42:03 +02:00
Maria Matejka
37e8cffc0a
Lockless hostentry resolution
...
Now the hostentry doesn't need to lock table, instead it tracks the
hostentry version and retries if the hostentry changed while updating.
2024-06-24 09:42:03 +02:00
Maria Matejka
c872b8f826
Cached route attributes now have explicitly marked layers
...
Also the rta_* functions renamed to ea_* functions
2024-06-24 09:42:03 +02:00
Maria Matejka
ba3b8607fb
Netindex: Dropping tmp handle mechanism in favor of deferred lfuc_unlock
2024-06-24 09:42:03 +02:00
Maria Matejka
a66be7641e
Fixed all implicit seq_cst warnings caused by the previous commit
2024-06-24 09:42:03 +02:00
Maria Matejka
51795c3e05
Enabling warnings for implicit seq_cst in atomic access
2024-06-24 09:42:03 +02:00
Maria Matejka
72ecc1d99d
Doc: short migration info for BIRD 2 -> 3
2024-06-24 09:42:03 +02:00
Maria Matejka
53e3bf9063
Fixed announcement inconsistency between feeds and regular exports
2024-06-24 09:42:03 +02:00
Maria Matejka
51ebbda95c
Fixed best route announcements after NHU
...
When more routes in one net changed at once, the best route
announcements were inconsistent which confused exporters.
2024-06-24 09:42:03 +02:00
Maria Matejka
35ff820a3b
Route flag REF_OBSOLETE
...
Marking routes obsolete when being removed from table, just to be sure.
2024-06-24 09:42:03 +02:00
Maria Matejka
929df85f1e
Removed the obsolete birdloop flagger
...
This was useful when events were locking. As now sending events is lockless,
we can drop this obsolete routine for good.
2024-06-24 09:42:03 +02:00
Maria Matejka
feb16991ee
Simplified table deletion (one less step)
2024-06-24 09:42:03 +02:00
Maria Matejka
7c4db11b9f
Hostentry usecount converted to lfuc
2024-06-24 09:42:03 +02:00
Maria Matejka
a3b125e223
Lockfree usecount: deferring unlocks to the metaloop
...
This allows us for easy temporary locks without additional burden of explicit cleanup.
2024-06-24 09:42:03 +02:00
Maria Matejka
08f67979ce
Route table export journal converted to the generic structure
2024-06-24 09:42:03 +02:00
Maria Matejka
3787c0f7a5
Lock free journal refactored into a separate data structure
2024-06-24 09:42:03 +02:00
Maria Matejka
cb6e7123c4
Replacing the NHU table loop flag with a proper event
2024-06-24 09:42:03 +02:00
Maria Matejka
90127cb2d2
Flowspec links don't peruse the all-hooks list for lookup
2024-06-24 09:42:03 +02:00
Maria Matejka
22f58ac316
Refactoring: back-merged export data structures
...
Table-specific structures inheriting commons are too crazy.
2024-06-24 09:42:03 +02:00
Maria Matejka
dea78a5c51
Export table dump temporarily switched off
2024-06-24 09:42:03 +02:00
Maria Matejka
561116f6fb
Added and explicit target table to the ROA subscription object
2024-06-24 09:42:03 +02:00
Maria Matejka
35fe916155
Refactoring of struct rt_pending_export
...
Now it stores const rte * instead of struct rte_storage * to allow for
different storage backends.
2024-06-24 09:42:03 +02:00
Maria Matejka
c8fad656c2
Missing definition of RTAX_FASTOPEN_NO_COOKIE shouldn't kill the whole build
2024-06-24 09:42:03 +02:00
Maria Matejka
95748b6c55
Static: Unlock IGP tables on cleanup to avoid problems with hostentry unlocking
2024-06-24 09:42:03 +02:00
Maria Matejka
eeaeaa1557
Loop run waits until pingers finish
...
This ensures that if somebody passes an event to a loop which
has just started executing, then the event gets picked up. Otherwise
there is a race condition causing stray events pending in queue
but without the ping (because the run actually finishes too fast
to pickup the later events).
2024-06-24 09:42:03 +02:00
Maria Matejka
d1103b8e77
IO Loop: provide information about current loop and task time limit
2024-06-24 09:42:03 +02:00
Maria Matejka
3549a98578
Allowing to send events to the metaloop's priority list
2024-06-24 09:42:03 +02:00
Maria Matejka
f5a93eef7d
Net: explicit generic-to-specific typecast with checking
2024-06-24 09:42:03 +02:00
Maria Matejka
4874a30422
Bitops: bitflip function
...
to flip order of bits in 32b numbers
2024-06-24 09:42:03 +02:00
Maria Matejka
ff35d2b4f8
Locking: forcefully unwinding locks to a previously stored state
2024-06-24 09:42:03 +02:00
Maria Matejka
6af2a7e606
Typed list: macro for list length
2024-06-24 09:42:03 +02:00