
Состоялся выпуск новой редакции пакета маршрутизации OpenBGPD 9.0. Решение развивается разработчиками проекта OpenBSD и адаптировано для использования в системах FreeBSD и Linux, включая поддержку Alpine, Debian, Fedora, RHEL/CentOS, Ubuntu). Исходный код проекта написан на C и опубликован на GitHub под лицензией ISC License.
Для обеспечения переносимости в OpenBGPD использованы элементы кодовой базы из проектов OpenNTPD, OpenSSH и LibreSSL. Сообщается, что проект OpenBGPD поддерживает большую часть спецификаций BGP 4 и соответствует требованиям RFC8212. Основная цель решения — это главным образом обеспечить поддержку наиболее востребованных и распространённых функций.
По данным OpenNET, разработка OpenBGPD ведётся при поддержке регионального интернет‑регистратора RIPE NCC. Этот регистратор заинтересован в доведении функциональности OpenBGPD до пригодности к использованию на серверах для маршрутизации в точках межоператорского обмена трафиком (IXP) и в создании полноценной альтернативы пакету BIRD. Для примера, из открытых альтернатив с реализацией протокола BGP можно отметить проекты FRRouting, GoBGP, ExaBGP и Bio‑Routing.
В проекте OpenBGPD основное внимание уделяется обеспечению максимально��о уровня безопасности и надёжности. Для защиты в OpenBGPD применяется жёсткая проверка корректности всех параметров, средства для контроля соблюдения границ буферов, разделение привилегий и ограничение доступа к системным вызовам. Из достоинств в реализации OpenBGPD отмечается удобный синтаксис языка определения конфигурации, высокая производительность и эффективность работы с памятью. Например, OpenBGPD может работать с таблицами маршрутизации, включающими сотни тысяч записей.
Ключевые изменения и доработки в OpenBGPD 9.0:
переписана реализация таблиц Adj‑RIB‑Out (Adjacency Routing Information Base Out), хранящих маршруты для анонсирования соседним маршрутизаторам. Реализованные при переработке оптимизации позволили заметно снизить потребление памяти и повысить производительность, например, на крупных серверах обмена трафиком (IXP, Internet Exchange Point) потребление памяти снизилось более чем на 50%;
модернизирована обработка UPDATE‑сообщений, которая разделена на две фазы — вначале осуществляется обновление таблиц Adj‑RIB‑In, Loc‑RIB и FIB, после чего отдельно обрабатываются все таблицы Adj‑RIB‑Out. Новый метод позволил снизить задержки, так как большую часть времени занимает обновление таблиц Adj‑RIB‑Out;
задействована новая масштабируемая реализация хэш‑таблиц, позволившая повысить производительность за счёт более эффективного попадания данных в кэш;
добавлены новые метрики для отслеживания времени, потраченного на выполнение различных этапов цикла обработки событий в движке маршрутизации.
