Age | Commit message (Collapse) | Author | |
---|---|---|---|
2022-07-13 | Fixed bug in repeated show route command | Maria Matejka | |
Introduced by 13ef5e53dd4a98c80261139b4c9ce4b1074cac40, the CLI was not properly cleaned up when the command finished, causing BIRD to not parse any other command after "show route". | |||
2022-07-12 | Merge commit 'f18968f5' into thread-next | Maria Matejka | |
2022-07-12 | Removing the rte_modify API | Maria Matejka | |
For BGP LLGR purposes, there was an API allowing a protocol to directly modify their stale routes in table before flushing them. This API was called by the table prune routine which violates the future locking requirements. Instead of this, BGP now requests a special route export and reimports these routes into the table, allowing for asynchronous execution without locking the table on export. | |||
2022-07-12 | Route refresh in tables uses a stale counter. | Maria Matejka | |
Until now, we were marking routes as REF_STALE and REF_DISCARD to cleanup old routes after route refresh. This needed a synchronous route table walk at both beginning and the end of route refresh routine, marking the routes by the flags. We avoid these walks by using a stale counter. Every route contains: u8 stale_cycle; Every import hook contains: u8 stale_set; u8 stale_valid; u8 stale_pruned; u8 stale_pruning; In base_state, stale_set == stale_valid == stale_pruned == stale_pruning and all routes' stale_cycle also have the same value. The route refresh looks like follows: + ----------- + --------- + ----------- + ------------- + ------------ + | | stale_set | stale_valid | stale_pruning | stale_pruned | | Base | x | x | x | x | | Begin | x+1 | x | x | x | ... now routes are being inserted with stale_cycle == (x+1) | End | x+1 | x+1 | x | x | ... now table pruning routine is scheduled | Prune begin | x+1 | x+1 | x+1 | x | ... now routes with stale_cycle not between stale_set and stale_valid are deleted | Prune end | x+1 | x+1 | x+1 | x+1 | + ----------- + --------- + ----------- + ------------- + ------------ + The pruning routine is asynchronous and may have high latency in high-load environments. Therefore, multiple route refresh requests may happen before the pruning routine starts, leading to this situation: | Prune begin | x+k | x+k | x -> x+k | x | ... or even | Prune begin | x+k+1 | x+k | x -> x+k | x | ... if the prune event starts while another route refresh is running. In such a case, the pruning routine still deletes routes not fitting between stale_set and and stale_valid, effectively pruning the remnants of all unpruned route refreshes from before: | Prune end | x+k | x+k | x+k | x+k | In extremely rare cases, there may happen too many route refreshes before any route prune routine finishes. If the difference between stale_valid and stale_pruned becomes more than 128 when requesting for another route refresh, the routine walks the table synchronously and resets all the stale values to a base state, while logging a warning. | |||
2022-07-11 | There are now no internal tables at all. | Maria Matejka | |
2022-07-11 | Export tables merged with BGP prefix hash | Maria Matejka | |
Until now, if export table was enabled, Nest was storing exactly the route before rt_notify() was called on it. This was quite sloppy and spooky and it also wasn't reflecting the changes BGP does before sending. And as BGP is storing the routes to be sent anyway, we are simply keeping the already-sent routes in there to better rule out unneeded reexports. Some of the route attributes (IGP metric, preference) make no sense in BGP, therefore these will be probably replaced by something sensible. Also the nexthop shown in the short output is the BGP nexthop. | |||
2022-07-11 | Do not try to check flowspec validity for piped routes | Maria Matejka | |
2022-07-11 | Fixed bad import table attributes freeing | Maria Matejka | |
2022-07-11 | Attribute lists split to storage headers and data to save BGP memory | Maria Matejka | |
2022-07-11 | Show route uses the export request also for one-net queries | Maria Matejka | |
2022-06-27 | Moved nexthop + hostentry display to other eattrs | Maria Matejka | |
2022-06-27 | Route attribute display now normalizes ea_lists. | Maria Matejka | |
This is needed to display every attribute only once with overlay attribute lists recently introduced. | |||
2022-06-27 | Fixed new route comparison | Maria Matejka | |
2022-06-27 | Fixed displaying BGP and RIP attributes after recent reworks | Maria Matejka | |
2022-06-27 | Fixed minor bugs in handling some route attributes | Maria Matejka | |
2022-06-27 | Fixed undefined attribute handling | Maria Matejka | |
2022-06-27 | The show-route CLI command now uses the route export API | Maria Matejka | |
In the multithreaded environment, it is not supposed that anybody traverses the routing table as the CLI show-route was doing. Now the routing table traversal is gone and CLI won't hold the table locked while computing filters. | |||
2022-06-24 | Allowed optimized exporting of a subprefix tree | Maria Matejka | |
Added an option for export filter to allow for prefiltering based on the prefix. Routes outside the given prefix are completely ignored. Config is simple: export in <net> <filter>; | |||
2022-06-24 | Table export generalized to allow for exporting from non-tables | Maria Matejka | |
2022-06-20 | Import tables are stored as an attribute layer inside the main tables. | Maria Matejka | |
The separate import tables were too memory-greedy, there is no need for them being stored as full-sized tables. | |||
2022-06-17 | Route attribute storage keeps the previous layers | Maria Matejka | |
2022-06-16 | Showing the nexthop resolution target in import tables | Maria Matejka | |
2022-06-08 | Merge commit '938742decc6e1d6d3a0375dd012b75172e747bbc' into haugesund | Maria Matejka | |
2022-06-08 | Merge commit '950775f6fa3d569a9d7cd05e33538d35e895d688' into haugesund | Maria Matejka | |
There were quite a lot of conflicts in flowspec validation code which ultimately led to some code being a bit rewritten, not only adapted from this or that branch, yet it is still in a limit of a merge. | |||
2022-06-07 | Fixing FlowSpec validation for v3 internal API | Maria Matejka | |
Validation is called internally from route table at the same place where nexthop resolution is done. Also accounting for rte->sender semantics change (not a channel but the import hook instead). | |||
2022-05-31 | Merge commit '4fe9881d625f10e44109a649e369a413bd98de71' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit 'f15f2fcee7eeb5a100bd204a0e67018e25953420' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit 'f2e725a76882ba6b75c3ce4fb3c760bd83462410' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '1c30b689ddd032ef8000fb7836348a48ba3184ff' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '702c04fbef222e802ca4dfac645dc75ede522db6' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '337c04c45e1472d6d9b531a3c55f1f2d30ebf308' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit 'd8661a4397e4576ac404661b192dd99d928e7890' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '17f91f9e6e70f7e3f29502e854823c0d48571eaa' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '165156beeb2926472bbceca3c103aacc3f81a8cc' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '1d309c4ce6e95b68c64a8f007f6dd2f1830a5707' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit 'f2f3163f6c3fba7f9ef03640d7b2f6323873d2cc' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit 'de86040b2cf4ec9bfbb64f0e208a19d4d7e51adc' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '3fb70b26faca6788aa0bdf1d558414f9f777c6cd' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit 'ef6a903e6f44b467f9606018446095521ad01ef1' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '0e1e632f70b74cf111f08175ab3634db2f962579' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '0d0f6554a5c233bf2bf830ae319191c4b1808d49' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '80272d4b64a38ee6f04a1c4e8566cac3a2293176' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit 'cd9550b24487ac7327b0234fd825f4214fdf7b16' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '652be92a21f5575e5f74f6abe98eb4200b86776c' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '98fd158e28d89f10ee7a41b4f6a14fbd0021ef35' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit 'd39ef961d1dde230c55fcc931b53f44cb34a1e63' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit '4a23ede2b056a41456790cc20a0c3d92a7137693' into haugesund | Maria Matejka | |
2022-05-30 | Merge commit 'ebd807c0b8eb0b7a3dc3371cd4c87ae886c00885' into haugesund | Maria Matejka | |
2022-05-30 | Merge remote-tracking branch 'origin/master' into haugesund-to-2.0 | Maria Matejka | |
2022-05-30 | Merge commit '3a6eda995ecfcebff3130d86ee3baeab12a41335' into haugesund | Maria Matejka | |