Консорциум ISC представил (https://www.isc.org/blogs/kea-1-5/) релиз DHCP-сервера Kea 1.5.0 (http://kea.isc.org), идущего на смену классическому ISC DHCP. Исходные тексты проекта распространяются (https://github.com/isc-projects/kea) под лицензией Mozilla Public License (MPL) 2.0 (https://www.opennet.dev/opennews/art.shtml?num=32726), вместо ранее применяемой для ISC DHCP лицензии ISC License. DHCP-сервер Kea основан на технологиях BIND 10 и построен (https://www.opennet.dev/opennews/art.shtml?num=36235) с использованием модульной архитектуры, подразумевающей разбиение функциональности на разные процессы-обработчики. Продукт включает в себя полнофункциональную реализацию сервера с поддержкой протоколов DHCPv4 и DHCPv6, способную заменить собой ISC DHCP. В Kea встроены средства динамического обновления DNS-зон (Dynamic DNS), поддерживаются механизмы обнаружения серверов, назначения адресов, обновления и переподключения, обслуживания информационных запросов, резервирования адресов для хостов и PXE-загрузки. В реализации DHCPv6 дополнительно предусмотрена возможность делегирования префиксов. Для взаимодействия с внешними приложениями предоставляется специальный API. Возможно обновление конфигурации на лету без перезапуска сервера.
Информация о выделенных адресах и параметрах клиентов может храниться в разных типах хранилищ - в настоящее время предоставляются бэкенды для хранения в файлах CSV, СУБД MySQL, Apache Cassandra и PostgreSQL. Параметры резервирования хостов могут быть заданы в файле конфигурации в формате JSON или в виде таблицы в MySQL. В состав входит инструмент perfdhcp для измерения производительности сервера DHCP и компоненты для сбора статистики. Kea демонстрирует неплохую производительность, например, при использовании бэкеда MySQL сервер может выполнить 1000 присвоений адресов в секунду (около 4000 пакетов в секунду), а при использовании бэкенда memfile производительность достигает 7500 присвоений в секунду.
Ключевые улучшения (https://ftp.isc.org/isc/kea/1.5.0/Kea150ReleaseNotes.txt) в Kea 1.5:
- Добавлена поддержка централизованного управления конфигурацией DHCP-серверов.
Реализация базируется на использовании протокола управления конфигурацией NETCONF (https://en.wikipedia.org/wiki/NETCONF) (RFC-6241 (https://tools.ietf.org/html/rfc6241)) и стрктурированной модели данных YANG (Yet Another Next Generation, RFC-6020 (https://tools.ietf.org/html/rfc6020)). NETCONF предоставляет основанный на XML RPC для установки, изменения и удаления блоков конфигурации, а YANG (https://en.wikipedia.org/wiki/YANG) структурирует информацию о состоянии устройства и используемой конфигурации (можно рассматривать YANG как продолжение развития SNMP MIB).
В состав Kea включены готовые модели YANG (https://gitlab.isc.org/isc-projects/kea/tree/master/src/shar...) для DHCPv4 и DHCPv6, отражающие типовые элементы конфигурации DHCP-серверов, которые можно использовать в системах централизованного управления, совместно с другим сетевым оборудованием, включая коммутаторы и маршрутизаторы Juniper, Huawei и Cisco. Для хранения БД с конфигурацией Kea задействован движок Sysrepo (https://github.com/sysrepo/sysrepo), оптимизированный для модели данных YANG и предоставляющий дополнительные инструменты для управления настройками (например, можно использовать шаблоны для быстрого развёртывания серверов с типовыми настройками).
Для Kea подготовлен специальный фоновый процесс kea-netconf, который при запуске читает начальную конфигурацию из Sysrepo, а затем отслеживает все изменения и на лету отражает их во внутренней конфигурации Kea (если настройки изменены локально, например, при помощи утилиты sysrepocfg, изменения по аналогии переносятся в БД Sysrepo). Для удалённого управления DHCP-сервером предлагается использовать реализацию сервера и клиента NETCONF от проекта Netopeer2 (https://github.com/CESNET/Netopeer2);
- Добавлена поддержка глобального резервирования хостов. Ранее резервирование хостов могло осуществляться только в привязке к определённым подсетям, что, например, при необходимости привязки к клиенту определённых параметров DHCP требовало создания отдельных настроек резервирования для каждой сети, в которой разрешено работать клиенту. Сейчас для подобных клиентов можно обойтись одной глобальной настройкой;
- Добавлены (https://gitlab.isc.org/isc-projects/kea/wikis/designs/conges...) средства контроля перегрузки (congestion control). В прошлых версиях все поступающие запросы обрабатывались в порядке их поступления в очереди ограниченного размера. В случае перегрузки возникали заметные задержки, которые приводили к инициированию повторной отправки запросов, забиванию очереди устаревшими запросами и блокированию приёма новых запросов. Для противодействия данному эффекту в Kea 1.5 в дополнение к линейной очереди реализован кольцевой буфер, в случае переполнения которого новые запросы не отбрасываютяся, а вытесняют самые старые. Кольцевой буфер пока предложен в качестве опции и требует явного включения в настройках;
- Улучшены возможности для создания отказоустойчивых конфигураций (High Availability). Реализован новый механизм для синхронизации базы привязок IP-адресов к клиентам, передающий изменения небольшими блоками, вместо полного обновления сведений о всех привязках, что существенно ускоряет синхронизацию больших подсетей;
- Предложен (https://gitlab.isc.org/isc-projects/kea/wikis/designs/config...) концептуальный прототип бэкенда для хранения конфигурации, который будет доведён до рабочего состояния в следующем выпуске Kea 1.6. Новый тип бэкенда позволит использовать СУБД в качестве источника для получения информации о настройках для DHCP-сервера;
- Добавлена поддержка флага для определения является ли сервер DHCPv4 авторитетным (authoritative) или вторичным, что позволяет организовать совместную работу двух серверов на одном линке;
- В бэкендах для хранения привязок (lease) появилась возможность хранения дополнительного контекста пользователя (user context), который может включать произвольные данные в формате JSON;
- Добавлена новая библиотека Class_cmds, предназначенная для отображения, добавления, обновления и удаления классов клиентов, определённых для DHCPv4 и DHCPv6;
- Инфраструктура разработки, подготовки документации и отслеживания ошибок переведена на платформу Gitlab (https://gitlab.isc.org/isc-projects/kea) (ранее использовалась (https://oldkea.isc.org) платформа Trac).
URL: https://www.isc.org/blogs/kea-1-5/
Новость: https://www.opennet.dev/opennews/art.shtml?num=49791