summaryrefslogtreecommitdiff
path: root/nest/rt-table.c
AgeCommit message (Collapse)Author
2023-04-22Protocols and tables now use the birdloop pools as primaryMaria Matejka
2023-04-22Resource pool closing has its dedicated functionMaria Matejka
2023-04-17IO: added a specific loop pickup group for BFD; to be done better in futureMaria Matejka
2023-04-04More efficient IO loop event execution to avoid long loopsMaria Matejka
If there are lots of loops in a single thread and only some of the loops are actually active, the other loops are now kept aside and not checked until they actually get some timers, events or active sockets. This should help with extreme loads like 100k tables and protocols. Also ping and loop pickup mechanism was allowing subtle race conditions. Now properly handling collisions between loop ping and pickup.
2023-04-04Resource dumps also write out block addressesMaria Matejka
2023-04-04Route feed marks only the relevant pending exports as doneMaria Matejka
2023-04-04Propagated const through route feed routinesMaria Matejka
2023-04-04Allowing to restart a route refresh.Maria Matejka
Repeated pipe refeed should not end route refresh as the prune routine may start pruning otherwise valid routes. The same applies for BGP repeated route refresh.
2023-04-04Fixed default table configurationMaria Matejka
When changing default table behavior, I missed that it enabled to configure multiple master4 and master6 tables. Now BIRD recognizes it and fails properly.
2023-04-04Fixed bad filter re-evaluation with import table if filtered->acceptedMaria Matejka
The import table feed wasn't resetting the table-specific route values like REF_FILTERED and thus made the route look like filtered even though it should have been re-evaluated as accepted.
2023-04-04Fixed stopping of import request with no imports in idle tableMaria Matejka
2023-04-04Moved table hostcache updater to table service routines to not bother the ↵Maria Matejka
mainloop
2023-04-04Reducing initial channel bitmap sizes to help extreme casesMaria Matejka
2023-04-04Flowspec links must have the destination table service loop lockedMaria Matejka
2023-01-23Merge commit '6d1ae197d189d50e60279796441c6e74272ddc54' into thread-nextMaria Matejka
2023-01-20Fixed various build problems on FreeBSD and/or CLangMaria Matejka
2023-01-19Table prune routine doesn't walk over lists unless needed.Maria Matejka
If no channel is flushing, table prune doesn't walk over routes in nets and also doesn't walk over importing channel lists. This helps to alleviate the memory caching burdens a lot.
2023-01-01Nest: Fix several issues with pflagsOndrej Zajicek
There were some confusion about validity and usage of pflags, which caused incorrect usage after some flags from (now removed) protocol- specific area were moved to pflags. We state that pflags: - Are secondary data used by protocol-specific hooks - Can be changed on an existing route (in contrast to copy-on-write for primary data) - Are irrelevant for propagation (not propagated when changed) - Are specific to a routing table (not propagated by pipe) The patch did these fixes: - Do not compare pflags in rte_same(), as they may keep cached values like BGP_REF_STALE, causing spurious propagation. - Initialize pflags to zero in rte_get_temp(), avoid initialization in protocol code, fixing at least two forgotten initializations (krt and one case in babel). - Improve documentation about pflags
2022-12-06Nest: Avoid spurious announcements triggered by filtered routesOndrej Zajicek
When filtered routes (enabled by 'import keep filtered' option) are updated, they trigger announcements by rte_announce(). For regular channels (e.g. type RA_OPTIMAL or RA_ANY) such announcement is just ignored, but in case of RA_ACCEPTED (BGP peer with 'secondary' option) it just reannounces the old (and still valid) best route. The patch ensures that such no-change is ignored even for these channels.
2022-11-07Merge commit '8f79e6b9' into thread-nextMaria Matejka
2022-10-12Removed an accidentally merged debug call introduced in ↵Maria Matejka
5395880908fdb264b5b78ccc455dced49eb29915
2022-10-12Merge commit '53958809' into thread-nextMaria Matejka
2022-10-12Merge commit '4ba991f1' into thread-nextMaria Matejka
2022-10-12TES_HUNGRY doesn't inhibit export cleanup any moreMaria Matejka
2022-10-12More thorough logging of route update corner casesMaria Matejka
2022-10-12Fixed export hook stopping in some corner cases.Maria Matejka
Notably, it's in a corked state and also when refeed is pending.
2022-10-10BGP: Add option 'next hop prefer global'Ondrej Zajicek
Add BGP channel option 'next hop prefer global' that modifies BGP recursive next hop resolution to use global next hop IPv6 address instead of link-local next hop IPv6 address for immediate next hop of received routes.
2022-09-26Higher export settle times when route refresh is running.Maria Matejka
This helps the route refresh procedures to finish or at least do more work before the exporters jump in and steal all the CPU time for themselves.
2022-09-23More verbose logging of table auxiliary export statesMaria Matejka
2022-09-23Fixed possible race condition in hostcache trie matching code not triggering HCUMaria Matejka
2022-09-21Fixed the export settle timer to be actually a settle timerMaria Matejka
2022-09-20Route export may get corked on refeed startupMaria Matejka
2022-09-18Fix for table hostcache corking and shutdown race conditionsMaria Matejka
2022-09-18Table: Re-scheduling prune event when another prune loop is pendingMaria Matejka
2022-09-18Export event doesn't have to be postponed before requeuing as an export-stop ↵Maria Matejka
event
2022-09-18Converted simple table events to loop flagsMaria Matejka
2022-09-18Routing tables have their own service loops.Maria Matejka
2022-09-09Table export announcer needs both an event and a timer to do export bundling ↵Maria Matejka
the right way
2022-09-08Table access is now locked.Maria Matejka
2022-09-08Table feed refactoring to allow for locking and unlockingMaria Matejka
2022-09-08Table long-locking debug codeMaria Matejka
2022-09-08Next hop updater has its own eventMaria Matejka
2022-09-07Next hop refactoring to allow for table lockingMaria Matejka
2022-09-06Better profylaction recursive route loopsMaria Matejka
In some specific configurations, it was possible to send BIRD into an infinite loop of recursive next hop resolution. This was caused by route priority inversion. To prevent priority inversions affecting other next hops, we simply refuse to resolve any next hop if the best route for the matching prefix is recursive or any other route with the same preference is recursive. Next hop resolution doesn't change route priority, therefore it is perfectly OK to resolve BGP next hops e.g. by an OSPF route, yet if the same (or covering) prefix is also announced by iBGP, by retraction of the OSPF route we would get a possible priority inversion.
2022-09-05Next hop update triggered at the very end of hostcache updateMaria Matejka
2022-09-05Exporter routine refactoring to allow for nicer table lockingMaria Matejka
2022-09-01Added an indirection to the export announcement routineMaria Matejka
There are performance reasons for this, mostly that we don't want to ping the table service routine with every import.
2022-09-01ROA subscriptions are also converted to export requests.Maria Matejka
By this, the requesting channels do the timers in their own loops, avoiding unnecessary synchronization when the central timer went off. This is of course less effective for now, yet it allows to easily implement selective reloads in future.
2022-09-01Flowspec revalidate notification converted to an export hookMaria Matejka
Instead of synchronous notifications, we use the asynchronous export framework to notify flowspec src route updates. This allows us to invoke flowspec revalidation without locking collisions.
2022-09-01Hostcache update notification converted to an export hookMaria Matejka
Instead of synchronous notifications, we use the asynchronous export framework to notify also hostcache updates. This allows us to do the hostcache update and the subsequent next hop update notification without locking collisions.