summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-02-07Blogpost about performance + data.Maria Matejka
2022-02-04Dropping (end-of-life) Debian 8 automated testsMaria Matejka
2022-02-04Build test default timeout raised to allow for tests on slow virtual machinesMaria Matejka
2022-02-04Tamed harmless i368 warningsMaria Matejka
2022-02-04Compilation fixes for CLangMaria Matejka
2022-02-04Merge commit 'a9646efd40569f3a1d749bc1bd13219876b33a00' into sark-bgp-rebasedMaria Matejka
2022-02-04Merge commit 'bcb25084d31fdb90fcf1666f10e73fe0f863afc0' into sark-bgp-rebasedMaria Matejka
2022-02-04Merge commit '75aceadaf746f8ed0acce0424f89903283dacf16' into sark-bgp-rebasedMaria Matejka
2022-02-04Merge commit '00410fd6c17697a5919cb32a44f7117dd3a0834a' into sark-bgp-rebasedMaria Matejka
2022-02-04Thread performance: Moved graph key to left top corner where it fits betterMaria Matejka
2022-02-04Thread documentation: Final version of chapter 3Maria Matejka
2022-02-03Thread documentation: Rewritten chapter 3 on loops and locks once againMaria Matejka
2022-02-03Protocol limit restart/down must be callable from protocol contextMaria Matejka
2022-02-03BFD: direct notifications to protocol loopsMaria Matejka
2022-02-03Neighbor prune fixupMaria Matejka
2022-02-03IO loop duration fixupMaria Matejka
2022-02-03BGP now runs in its own threadMaria Matejka
2022-02-03BGP: Static global linpools replaced by private linpoolsMaria Matejka
2022-02-03Socket cork fixesMaria Matejka
2022-02-03Asynchronous neighbor notifications fixesMaria Matejka
2022-02-03Explicitly storing and checking loop information in socketsMaria Matejka
2022-02-03Neighbors: Locking and asynchronous notificationsMaria Matejka
2022-02-03Global interface list renamed to not clash with local listsMaria Matejka
2022-02-03Interfaces and neighbor notifications do properly enter protocol loopsMaria Matejka
2022-02-03Page cleanup routines updated to allow nested birdloopsMaria Matejka
2022-02-03Route table fast prune fixupMaria Matejka
2022-02-03Babel: fixed interface pool removalMaria Matejka
2022-02-03Dropping a nonsensical assert which broke BabelMaria Matejka
2022-02-03Removing periodic wakeup of mainloop in debug version to search for ↵Maria Matejka
notification issues
2022-02-03Performance data of sark vs. v2.0.8 with a chart generatorMaria Matejka
2022-01-17.gitlab-ci.yml: minor changes inside the .yml file.Matous Holinka
+ ubuntu:21.10 added into the pipeline, - ubuntu:20.10 removed from the pipeline, + misc/docker/ubuntu-21.10-amd64/Dockerfile added, - misc/docker/ubuntu-20.10-amd64/Dockerfile removed.
2022-01-17Netlink: Add option to specify netlink socket receive buffer sizeOndrej Zajicek (work)
Add option 'netlink rx buffer' to specify netlink socket receive buffer size. Uses SO_RCVBUFFORCE, so it can override rmem_max limit. Thanks to Trisha Biswas and Michal for the original patches.
2022-01-15Netlink: Add another workaround for older kernel headersOndrej Zajicek (work)
Unfortunately, SOL_NETLINK is both recently added and arch-dependent, so we cannot just define it.
2022-01-14Netlink: Add workaround for older kernel headersOndrej Zajicek (work)
2022-01-14Netlink: Enable strict checking for KRT dumpsOndrej Zajicek (work)
Add strict checking for netlink KRT dumps to avoid PMTU cache records from FNHE table dump along with KRT. Linux Kernel added FNHE table dump to the netlink API in patch: https://patchwork.ozlabs.org/project/netdev/patch/8d3b68cd37fb5fddc470904cdd6793fcf480c6c1.1561131177.git.sbrivio@redhat.com/ Therefore, since Linux 5.3 these route cache entries are dumped together with regular routes during periodic KRT scans, which in some cases may be huge amount of useless data. This can be avoided by using strict checking for netlink dumps: https://lore.kernel.org/netdev/20181008031644.15989-1-dsahern@kernel.org/ The patch mitigates the risk of receiving unknown and potentially large number of FNHE records that would block BIRD I/O in each sync. There is a known issue caused by the GRE tunnels on Linux that seems to be creating one FNHE record for each destination IP address that is routed through the tunnel, even when the PMTU equals to GRE interface MTU. Thanks to Tomas Hlavacek for the original patch.
2022-01-14Netlink: Explicitly skip received cloned routesOndrej Zajicek (work)
Kernel uses cloned routes to keep route cache entries, but reports them together with regular routes. They were skipped implicitly as they do not have rtm_protocol filled. Add explicit check for cloned flag and skip such routes explicitly. Also, improve debug logs of skipped routes.
2022-01-09BGP: Add option 'free bind'Ondrej Zajicek (work)
The BGP 'free bind' option applies the IP_FREEBIND/IPV6_FREEBIND socket option for the BGP listening socket. Thanks to Alexander Zubkov for the idea.
2022-01-08IO: Support nonlocal bind in socket interfaceAlexander Zubkov
Add option to socket interface for nonlocal binding, i.e. binding to an IP address that is not present on interfaces. This behaviour is enabled when SKF_FREEBIND socket flag is set. For Linux systems, it is implemented by IP_FREEBIND socket flag. Minor changes done by commiter.
2022-01-05Test: Activate some remaining build testsOndrej Zajicek (work)
2022-01-05Netlink: Do not ignore dead routes from BIRDOndrej Zajicek (work)
Currently, BIRD ignores dead routes to consider them absent. But it also ignores its own routes and thus it can not correctly manage such routes in some cases. This patch makes an exception for routes with proto bird when ignoring dead routes, so they can be properly updated or removed. Thanks to Alexander Zubkov for the original patch.
2022-01-05Netlink: Improve multipath parsing errorsOndrej Zajicek (work)
Function nl_parse_multipath() should handle errors internally.
2022-01-05Conf: Fix parsing full-length IPv6 addressesOndrej Zajicek (work)
Lexer expression for bytestring was too loose, accepting also full-length IPv6 addresses. It should be restricted such that colon is used between every byte or never. Fix the regex and also add some test cases for it. Thanks to Alexander Zubkov for the bugreport
2022-01-05gitlab-ci.yml: failing gitlab runner fixed.Matous
'registry.labs.nic.cz' -> 'registry.nic.cz' changed
2021-12-28Doc: Document min/max operators for listsAlexander Zubkov
2021-12-28Filter: Add operators to find minimum and maximum element of setsAlexander Zubkov
Add operators .min and .max to find minumum or maximum element in sets of types: clist, eclist, lclist. Example usage: bgp_community.min bgp_ext_community.max filter(bgp_large_community, [(as1, as2, *)]).min Signed-off-by: Alexander Zubkov <green@qrator.net>
2021-12-28Doc: Document community components access operatorsAlexander Zubkov
2021-12-28Filter: Add operators to pick community componentsAlexander Zubkov
Add operators that can be used to pick components from pair (standard community) or lc (large community) types. For example: (10, 20).asn --> 10 (10, 20).data --> 20 (10, 20, 30).asn --> 10 (10, 20, 30).data1 --> 20 (10, 20, 30).data2 --> 30 Signed-off-by: Alexander Zubkov <green@qrator.net>
2021-12-27BSD: Assume onlink flag on ifaces with only host addressesOndrej Zajicek (work)
The BSD kernel does not support the onlink flag and BIRD does not use direct routes for next hop validation, instead depends on interface address ranges. We would like to handle PtMP cases with only host addresses configured, like: ifconfig wg0 192.168.0.10/32 route add 192.168.0.4 -iface wg0 route add 192.168.0.8 -iface wg0 To accept BIRD routes with onlink next-hop, like: route 192.168.42.0/24 via 192.168.0.4%wg0 onlink BIRD would dismiss the route when receiving from the kernel, as the next-hop 192.168.0.4 is not part of any interface subnet and onlink flag is not kept by the BSD kernel. The commit fixes this by assuming that for routes received from the kernel, any next-hop is onlink on ifaces with only host addresses. Thanks to Stefan Haller for the original patch.
2021-12-22Thread documentation: Chapter 4 on memory managementMaria Matejka
2021-12-18RPKI: Add contextual out-of-bound checks in RTR Prefix PDU handlerJob Snijders
RFC 6810 and RFC 8210 specify that the "Max Length" value MUST NOT be less than the Prefix Length element (underflow). On the other side, overflow of the Max Length element also is possible, it being an 8-bit unsigned integer allows for values larger than 32 or 128. This also implicitly ensures there is no overflow of "Length" value. When a PDU is received where the Max Length field is corrputed, the RTR client (BIRD) should immediately terminate the session, flush all data learned from that cache, and log an error for the operator. Minor changes done by commiter.