Introduced release of the portable edition of the routing package OpenBGPD 9.0, developed by the developers of the OpenBSD project and adapted for use on FreeBSD and Linux (support for Alpine, Debian, Fedora, RHEL/CentOS, Ubuntu is declared). To ensure portability, parts of the code from the OpenNTPD, OpenSSH and LibreSSL projects were used. The project supports most of the BGP 4 specifications and complies with the requirements of RFC8212, but does not try to embrace the vast and provides mainly support for the most popular and common functions.
OpenBGPD development is carried out with the support of the regional Internet registrar RIPE NCC, which is interested in bringing the functionality of OpenBGPD to usability on servers for routing at interoperator traffic exchange points (IXPs) and in creating a full-fledged alternative package BIRD (open alternatives implementing the BGP protocol include the FRRouting, GoBGP, ExaBGP and Bio-Routing).
The project focuses on ensuring the highest level of security and reliability. For protection, strict verification of the correctness of all parameters, means for monitoring compliance with buffer boundaries, separation of privileges, and restriction of access to system calls are used. The advantages also include the convenient syntax of the configuration definition language, high performance and memory efficiency (for example, OpenBGPD can work with routing tables containing hundreds of thousands of entries).
Key changes in the new version:
- The table implementation has been rewritten Adj-RIB-Out (Adjacency Routing Information Base Out), which stores routes for advertising to neighboring routers. The optimizations implemented during the reprocessing made it possible to significantly reduce memory consumption and increase performance, for example, on large traffic exchange servers (IXP, Internet Exchange Point), memory consumption was reduced by more than 50%.
- The processing of UPDATE messages has been modernized, which is divided into two phases – first, the Adj-RIB-In, Loc-RIB and FIB tables are updated, after which all Adj-RIB-Out tables are processed separately. The new method reduces latency, since most of the time is spent updating the Adj-RIB-Out tables.
- A new scalable hash table implementation has been used, which improves performance by getting data into the cache more efficiently.
- Added new metrics to track the time spent executing various stages of the event loop in the routing engine.