Die portable Version des Routing-Pakets OpenBGPD 9.1 wird vorgestellt, die von den Entwicklern des OpenBSD-Projekts entwickelt und für FreeBSD sowie Linux angepasst wurde (Unterstützung für Alpine, Debian, Fedora, RHEL/CentOS, Ubuntu ist angegeben). Für die Portabilität wurden Teile des Codes aus den Projekten OpenNTPD, OpenSSH und LibreSSL verwendet. Das Projekt unterstützt den Großteil der BGP 4-Spezifikationen und erfüllt die Anforderungen von RFC8212, konzentriert sich jedoch hauptsächlich auf die Unterstützung der gefragtesten und am weitesten verbreiteten Funktionen.
Die Entwicklung von OpenBGPD erfolgt mit Unterstützung des regionalen Internet-Registrars RIPE NCC, der daran interessiert ist, die Funktionalität von OpenBGPD für die Nutzung auf Servern für das Routing an Internet Exchange Points (IXP) und zur Schaffung einer vollwertigen Alternative zum BIRD-Paket (unter den offenen Alternativen mit einer Implementierung des BGP-Protokolls sind Projekte wie FRRouting, GoBGP, ExaBGP und Bio-Routing zu erwähnen).
Im Projekt liegt der Schwerpunkt auf der Gewährleistung eines maximalen Sicherheits- und Zuverlässigkeitsniveaus. Für den Schutz kommt eine strenge Validierung aller Parameter zur Anwendung, einschließlich der Überwachung der Einhaltung von Puffergrenzen, der Trennung von Berechtigungen und der Einschränkung des Zugriffs auf Systemaufrufe. Zu den Vorteilen zählt auch die benutzerfreundliche Syntax der Konfigurationssprache sowie die hohe Leistung und Effizienz im Umgang mit Speicher (zum Beispiel kann OpenBGPD mit Routing-Tabellen arbeiten, die Hunderttausende von Einträgen enthalten).
Wesentliche Änderungen in der neuen Version:
- Die Leistung des ausgehenden Filtermechanismus (outbound filter) wurde verbessert. Die Filterregeln werden nun in einem Array gespeichert, und sich wiederholende Filter bei verschiedenen Peers werden dedupliziert.
- Im Route Decision Engine (RDE) wurde die Leistung der Verarbeitung von Tabellen mit Filtern (filter_sets) verbessert – um die Effizienz der Zwischenspeicherung zu erhöhen, wurden die Filter in ein lineares Array von Objekten verschoben. Auf Servern mit einer großen Anzahl an Routen haben die mit den Filtern verbundenen Optimierungen die Dauer der anfänglichen Synchronisierung um mehr als 25 % verkürzt.
- Die Protokollierung von Parsing-Attributfehlern, die zur Sitzungsbildung führen, wurde verbessert.
- Im Befehl ‚show rib memory‘ wurden zusätzliche Metriken zur Bewertung des Speicherverbrauchs hinzugefügt.
Quelle: opennet.ru
