Age | Commit message (Collapse) | Author | |
---|---|---|---|
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 | |
2022-05-15 | BGP: Improve tx performance during feed/flush | Ondrej Zajicek | |
The prefix hash table in BGP used the same hash function as the rtable. When a batch of routes are exported during feed/flush to the BGP, they all have similar hash values, so they are all crowded in a few slots in the BGP prefix table (which is much smaller - around the size of the batch - and uses higher bits from hash values), making it much slower due to excessive collisions. Use a different hash function to avoid this. Also, increase the batch size to fill 4k BGP packets and increase minimum BGP bucket and prefix hash sizes to avoid back and forth resizing during flushes. This leads to order of magnitude faster flushes (on my test data). | |||
2022-05-04 | FIB is a data structure generic enough to be in lib | Maria Matejka | |
2022-05-04 | Unified attribute and filter types | Maria Matejka | |
This commit removes the EAF_TYPE_* namespace completely and also for route attributes, filter-based types T_* are used. This simplifies fetching and setting route attributes from filters. Also, there is now union bval which serves as an universal value holder instead of private unions held separately by eattr and filter code. | |||
2022-05-04 | Implicit ROA check converted to explicit filter instruction sequence | Maria Matejka | |
2022-05-04 | Special attribute types for enums | Maria Matejka | |
2022-05-04 | Dropping EAF_VAR_LENGTH as the attribute data is either embedded or adata | Maria Matejka | |
2022-05-04 | Filter: Bitfield eattrs reading / writing moved to filter code | Maria Matejka | |
Before this change, fetch-update-write and bitmasking was hardcoded in attribute access code cased by the attribute type. Several filter instructions are used to do it instead. As this is certainly going to be a little bit slower than before, the switch block in attribute access code should be completely removed in near future, helping with both performance and code cleanliness. The user interface should have stayed intact. | |||
2022-04-13 | RIP: fixed the EA_RIP_FROM attribute | Maria Matejka | |
The interface pointer was improperly converted to u32 and back. Fixing this by explicitly allocating an adata structure for it. It's not so memory efficient, we'll optimize this later. | |||
2022-04-06 | Protocols have their own explicit init routines | Maria Matejka | |
2022-04-06 | Slab allocator can free the blocks without knowing the parent structure | Maria Matejka | |
2022-04-06 | All linpools use pages to allocate regular blocks | Maria Matejka | |
2022-04-06 | Unsetting route attributes without messing with type system | Maria Matejka | |
2022-04-06 | Eattr flags (originated and fresh) get their own struct fields | Maria Matejka | |
2022-04-06 | Minor fix: f_val literals should always have named struct fields | Maria Matejka | |
2022-03-15 | Printf variant with a result allocated inside a pool / linpool | Maria Matejka | |
2022-03-09 | Merge commit 'f81702b7' into haugesund | Maria Matejka | |
2022-03-09 | Merge commit '0767a0c2' into haugesund | Maria Matejka | |
Conflicts: nest/rt-table.c | |||
2022-03-09 | Merge commit '8f3942a9' into haugesund | Maria Matejka | |
Conflicts: nest/rt-table.c | |||
2022-03-09 | Merge commit '56c8f2f0' into haugesund | Maria Matejka | |
Conflicts: nest/route.h nest/rt-table.c | |||
2022-03-09 | Merge commit '575da88f' into haugesund | Maria Matejka | |
Conflicts: nest/rt-table.c | |||
2022-03-09 | Merge commit '1b9189d5' into haugesund | Maria Matejka | |
2022-03-09 | Route validity check converted to generic macro dispatch | Maria Matejka | |
2022-03-09 | Merge commit '60880b539b8886f76961125d89a265c6e1112b7a' into haugesund | Maria Matejka | |
2022-03-09 | BGP Flowspec validation: Removed in-route optimization for multithreading ↵ | Maria Matejka | |
compatibility | |||
2022-03-09 | Merge commit 'e42eedb9' into haugesund | Maria Matejka | |
2022-03-09 | Merge commit '5cff1d5f' into haugesund | Maria Matejka | |
Conflicts: proto/bgp/attrs.c proto/pipe/pipe.c | |||
2022-03-09 | Merge commit 'd5a32563' into haugesund | Maria Matejka | |
2022-03-09 | Fixed resource initialization in unit tests | Maria Matejka | |
2022-03-09 | Single-threaded version of sark-branch memory page management | Maria Matejka | |
2022-03-02 | Replaced custom linpools in tests for the common tmp_linpool | Maria Matejka | |
2022-02-06 | Merge branch 'oz-trie-table' | Ondrej Zajicek (work) | |
2022-02-06 | Nest: Implement locking of prefix tries during walks | Ondrej Zajicek (work) | |
The prune loop may may rebuild the prefix trie and therefore invalidate walk state for asynchronous walks (used in 'show route in' cmd). Fix it by adding locking that keeps the old trie in memory until current walks are done. In future this could be improved by rebuilding trie walk states (by lookup for last found prefix) after the prefix trie rebuild. | |||
2022-02-06 | Nest: Implement prefix trie pruning | Ondrej Zajicek (work) | |
When rtable is pruned and network fib nodes are removed, we also need to prune prefix trie. Unfortunately, rebuilding prefix trie takes long time (got about 400 ms for 1M networks), so must not be atomic, we have to rebuild a new trie while current one is still active. That may require some considerable amount of temporary memory, so we do that only if we expect significant trie size reduction. | |||
2022-02-06 | BGP: Implement flowspec validation procedure | Ondrej Zajicek (work) | |
Implement flowspec validation procedure as described in RFC 8955 sec. 6 and RFC 9117. The Validation procedure enforces that only routers in the forwarding path for a network can originate flowspec rules for that network. The patch adds new mechanism for tracking inter-table dependencies, which is necessary as the flowspec validation depends on IP routes, and flowspec rules must be revalidated when best IP routes change. The validation procedure is disabled by default and requires that relevant IP table uses trie, as it uses interval queries for subnets. | |||
2022-02-06 | Nest: Add routing table configuration blocks | Ondrej Zajicek (work) | |
Allow to specify sorted flag, trie fla, and min/max settle time. Also do not enable trie by default, it must be explicitly enabled. | |||
2022-02-06 | Nest: Add convenience functions to check rtable net type | Ondrej Zajicek (work) | |
2022-02-06 | Nest: Avoid unnecessary net_format() in 'show route' command | Ondrej Zajicek (work) | |
When output of 'show route' command was generated, the net_format() was called for each network prematurely, even if the result was not needed. Fix the code to call net_format() only when needed. This makes queries that process many networks but show only few (e.g. 'show route where ..', or 'show route count') much faster (like 5x - 10x faster). | |||
2022-02-06 | Nest: Add trie iteration code to 'show route' | Ondrej Zajicek (work) | |
Add trie iteration code to rt_show_cont() CLI hook and use it to accelerate 'show route in <addr>' commands using interval queries. | |||
2022-02-06 | Nest: Implement 'show route in <addr>' command | Ondrej Zajicek (work) | |
Implement 'show route in <addr>' command, which shows all routes in networks that are subnets of given network. Currently limited to IP network types. |