The release of the portable edition of the OpenBGPD routing package 9.0 has been announced, developed by the OpenBSD project team and adapted for use on FreeBSD and Linux (support for Alpine, Debian, Fedora, RHEL/CentOS, Ubuntu has been stated). To ensure portability, code parts from the OpenNTPD, OpenSSH, and LibreSSL projects have been utilized. The project supports most specifications of BGP 4 and complies with RFC8212 requirements, but does not aim to be all-encompassing and mainly provides support for the most demanded and widely used functions.
The development of OpenBGPD is supported by the regional internet registrar RIPE NCC, which is interested in enhancing the functionality of OpenBGPD for use in servers traffic routing at Internet Exchange Points (IXP) and in creating a full-fledged alternative to the BIRD package (among the open alternatives implementing the BGP protocol, projects such as FRRouting, GoBGP, ExaBGP, and Bio-Routing can be noted).
The project focuses on achieving the highest level of security and reliability. To protect against failures, rigorous correctness checks of all parameters are employed, along with mechanisms for buffer boundary control, privilege separation, and restriction of access to system calls. Among the advantages, a user-friendly syntax for the configuration definition language is also noted, high performance and efficient memory usage (for example, OpenBGPD can handle routing tables that include hundreds of thousands of entries).
Key changes in the new version:
- The implementation of Adj-RIB-Out (Adjacency Routing Information Base Out) tables, which store routes for announcing to neighboring routers, has been rewritten. The optimizations implemented during the redesign have significantly reduced memory consumption and improved performance; for instance, on large traffic exchange servers (IXP, Internet Exchange Point), memory usage has decreased by more than 50%.
- The processing of UPDATE messages has been modernized and divided into two phases — initially, the Adj-RIB-In, Loc-RIB, and FIB tables are updated, after which all Adj-RIB-Out tables are processed separately. The new method has reduced latency, as the update of the Adj-RIB-Out tables takes the majority of the processing time.
- A new scalable implementation of hash tables has been adopted, improving performance through more efficient data caching.
- New metrics have been added to track the time spent on various stages of the event processing cycle in the routing engine.
Source: opennet.ru
