Skip to content
Snippets Groups Projects
  1. Jul 24, 2022
    • Ondřej Zajíček's avatar
      KRT: Scan routing tables separetely on linux to avoid congestion · 534d0a4b
      Ondřej Zajíček authored
      Remove compile-time sysdep option CONFIG_ALL_TABLES_AT_ONCE, replace it
      with runtime ability to run either separate table scans or shared scan.
      
      On Linux, use separate table scans by default when the netlink socket
      option NETLINK_GET_STRICT_CHK is available, but retreat to shared scan
      when it fails.
      
      Running separate table scans has advantages where some routing tables are
      managed independently, e.g. when multiple routing daemons are running on
      the same machine, as kernel routing table modification performance is
      significantly reduced when the table is modified while it is being
      scanned.
      
      Thanks Daniel Gröber for the original patch and Toke Høiland-Jørgensen
      for suggestions.
      534d0a4b
  2. Jul 12, 2022
  3. Jul 11, 2022
    • Eugene Bogomazov's avatar
      BGP: Implement BGP roles · c73b5d2d
      Eugene Bogomazov authored and Ondřej Zajíček's avatar Ondřej Zajíček committed
      Implement BGP roles as described in RFC 9234. It is  a mechanism for
      route leak prevention and automatic route filtering based on common BGP
      topology relationships. It defines role capability (controlled by 'local
      role' option) and OTC route attribute, which is used for automatic route
      filtering and leak detection.
      
      Minor changes done by commiter.
      c73b5d2d
  4. Jun 27, 2022
  5. Jun 16, 2022
  6. Jun 07, 2022
  7. Jun 05, 2022
    • Ondřej Zajíček's avatar
      Babel: Do not try to remove multicast seqno request objects from neighbour list · ad686c55
      Ondřej Zajíček authored
      The Babel seqno request code keeps track of which seqno requests are
      outstanding for a neighbour by putting them onto a per-neighbour list. When
      reusing a seqno request, it will try to remove this node, but if the seqno
      request in question was a multicast request with no neighbour attached this
      will result in a crash because it tries to remove a list node that wasn't
      added to any list.
      
      Fix this by making the list remove conditional. Also fix neighbor removal
      which were changing seqno requests to multicast ones instead of removing
      them.
      
      Fixes: ebd5751c ("Babel: Seqno requests are properly decoupled from
      neighbors when the underlying interface disappears").
      
      Based on the patch from Toke Høiland-Jørgensen <toke@toke.dk>,
      bug reported by Stefan Haller <stefan.haller@stha.de>, thanks.
      ad686c55
  8. Jun 04, 2022
    • Ondřej Zajíček's avatar
    • Ondřej Zajíček's avatar
      Nest: Improve GC strategy for rtables · a8a3d95b
      Ondřej Zajíček authored
      Use timer (configurable as 'gc period') to schedule routing table
      GC/pruning to ensure that prune is done on time but not too often.
      
      Randomize GC timers to avoid concentration of GC events from different
      tables in one loop cycle.
      
      Fix a bug that caused minimum inter-GC interval be 5 us instead of 5 s.
      
      Make default 'gc period' adaptive based on number of routing tables,
      from 10 s for small setups to 600 s for large ones.
      
      In marge multi-table RS setup, the patch improved time of flushing
      a downed peer from 20-30 min to <2 min and removed 40s latencies.
      a8a3d95b
  9. May 27, 2022
  10. May 21, 2022
  11. May 19, 2022
  12. May 15, 2022
    • Ondřej Zajíček's avatar
      BGP: Improve tx performance during feed/flush · ba2a0760
      Ondřej Zajíček authored
      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).
      ba2a0760
  13. Apr 22, 2022
  14. Apr 13, 2022
    • Maria Matejka's avatar
      Fixed a munmap abort bug · 9eec503b
      Maria Matejka authored
      When BIRD was munmapping too many pages, it sometimes aborted, saying
      that munmap failed with "Not enough memory" as the address space was
      getting more and more fragmented.
      
      There is a workaround in place, simply keeping that page for future use,
      yet it has never been compiled in because I somehow forgot to include
      errno.h. And because I also thought that somebody may have ENOMEM not
      defined (why?!), there was a check which quietly omitted that
      workaround.
      
      Anyway, ENOMEM is POSIX. It's an utter nonsense to check for its
      existence. If it doesn't exist, something is broken.
      9eec503b
  15. Apr 07, 2022
    • Ondřej Zajíček's avatar
      BFD: Add 'strict bind' option · 692055e3
      Ondřej Zajíček authored
      Add BFD protocol option 'strict bind' to use separate listening socket
      for each BFD interface bound to its address instead of using shared
      listening sockets.
      692055e3
  16. Mar 16, 2022
  17. Mar 11, 2022
  18. Mar 02, 2022
  19. Feb 27, 2022
  20. Feb 20, 2022
Loading