Опубликован DHCP-сервер Kea 1.5, развиваемый консорциумом ISC
Консорциум ISC представил релиз DHCP-сервера Kea 1.5.0, идущего на смену классическому ISC DHCP. Исходные тексты проекта распространяются под лицензией Mozilla Public License (MPL) 2.0, вместо ранее применяемой для ISC DHCP лицензии ISC License.
DHCP-сервер Kea основан на технологиях BIND 10 и построен с использованием модульной архитектуры, подразумевающей разбиение функциональности на разные процессы-обработчики. Продукт включает в себя полнофункциональную реализацию сервера с поддержкой протоколов 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 присвоений в секунду.
Новые улучшения в Kea 1.5:
- Добавлена поддержка централизованного управления конфигурацией DHCP-серверов. Реализация базируется на использовании протокола управления конфигурацией NETCONF (RFC-6241) и стрктурированной модели данных YANG (Yet Another Next Generation, RFC-6020). NETCONF предоставляет основанный на XML RPC для для установки, изменения и удаления блоков конфигурации, а YANG структурирует информацию о состоянии устройства и используемой конфигурации (можно рассматривать YANG как продолжение развития SNMP MIB).
В состав Kea включены готовые модели YANG для DHCPv4 и DHCPv6, отражающие типовые элементы конфигурации DHCP-серверов, которые можно использовать в системах централизованного управления, совместно с другим сетевым оборудованием, включая коммутаторы и маршрутизаторы Juniper, Huawei и Cisco. Для хранения БД с конфигурацией Kea задействован движок Sysrepo, оптимизированный для модели данных YANG и предоставляющий дополнительные инструменты для управления настройками (например, можно использовать шаблоны для быстрого развертывания серверов с типовыми настройками).
Для Kea подготовлен специальный фоновый процесс kea-netconf, который при запуске читает начальную конфигурацию из Sysrepo, а затем отслеживает все изменения и на лету отражает их во внутренней конфигурации Kea (если настройки изменены локально, например, при помощи утилиты sysrepocfg, изменения по аналогии переносятся в БД Sysrepo). Для удаленного управления DHCP-сервером предлагается использовать реализацию сервера и клиента NETCONF от проекта Netopeer2; - Добавлена поддержка глобального резервирования хостов. Ранее резервирование хостов могло осуществляться только в привязке к определенным подсетям, что, например, при необходимости привязки к клиенту определенных параметров DHCP требовало создания отдельных настроек резервирования для каждой сети, в которой разрешено работать клиенту. Сейчас для подобных клиентов можно обойтись одной глобальной настройкой;
- Добавлены средства контроля перегрузки (congestion control). В прошлых версиях все поступающие запросы обрабатывались в порядке их поступления, что в случае перегрузки приводило к заметным задержкам и инициированию повторной отправки запросов, что при водило к забиванию очереди устаревшими запросами и блокированию приема новых запросов из-за переполнения очереди. Для противодействия данному эффекту в Kea 1.5 в дополнение к линейной очереди реализован кольцевой буфер, в случае переполнения которого новые запросы вытесняют самые старые. Кольцевой буфер пока предложен в качестве опции и требует явного включения в настройках;
- Улучшены возможности для создания отказоустойчивых конфигураций (High Availability). Реализован новый механизм для синхронизации базы привязок IP-адресов к клиентам, передающий изменения небольшими блоками, вместо полного обновления сведений о всех привязках, что существенно ускоряет синхронизацию больших подсетей;
- Предложен концептуальный прототип бэкенда для хранения конфигурации, который будет доведен до рабочего состояния в следующем выпуске Kea 1.6. Новый тип бэкенда позволит использовать СУБД в качестве источника для получения информации о настройках для DHCP-сервера;
- Добавлена поддержка флага для определения является ли сервер DHCPv4 авторитетным (authoritative) или вторичным, что позволяет организовать совместную работу двух серверов на одном линке;
- В бэкендах для хранения привязок (lease) появилась возможность хранения дополнительного контекста пользователя (user context), который может включать произвольные данные в формате JSON;
- Добавлена новая библиотека Class_cmds, предназначенная для отображения, добавления, обновления и удаления классов клиентов, определенных для DHCPv4 и DHCPv6;
- Инфраструктура разработки, подготовки документации и отслеживания ошибок переведена на платформу Gitlab (ранее использовалась платформа Trac).