1. Introduction

Kea is the next generation of DHCP software developed by ISC. It supports both DHCPv4 and DHCPv6 protocols along with their extensions, e.g. prefix delegation and dynamic updates to DNS.

This guide covers Kea version 1.9.9.

For information about supported platforms see Supported platforms.

1.1. Supported platforms

In general, this version of Kea will build and run on any POSIX-compliant system with a C++ compiler (with C++11 support), the Botan cryptographic library, the log4cplus logging library and the Boost system library.

The Kea build has been checked with GCC g++ 4.8.5 and some later versions, and Clang 800.0.38 and some later versions.

ISC regularly tests Kea on many operating systems and architectures, but lacks the resources to test all of them. Consequently, ISC is only able to offer support on a “best effort” basis for some.

1.1.1. Regularly tested platforms

Kea is officially supported on Alpine, CentOS, Fedora, Ubuntu, Debian, and FreeBSD systems. Kea-1.9.9 builds have been tested on:

  • Alpine - 3.12, 3.13
  • CentOS — 7, 8
  • Debian — 9, 10
  • Fedora — 33
  • FreeBSD — 12.1, 13.0
  • Ubuntu — 18.04, 20.04, 20.10, 21.04

There are currently no plans to port Kea to Windows systems.

1.1.2. Best effort

The following are platforms on which Kea is known to build and run. ISC makes every effort to fix bugs on these platforms, but may be unable to do so quickly due to lack of hardware, less familiarity on the part of engineering staff, and other constraints.

  • Alpine — 3.11
  • FreeBSD - 11.4
  • macOS — 10.13, 10.14

1.1.3. Community maintained

These systems may not all have the required dependencies for building Kea easily available, although it will be possible in many cases to compile those directly from source. The community and interested parties may wish to help with maintenance, and we welcome patch contributions, although we cannot guarantee that we will accept them. All contributions will be assessed against the risk of adverse effect on officially supported platforms.

Platforms past their respective EOL dates, such as:

  • Alpine — 3.10 (1 May 2021)
  • CentOS — 6 (30 November 2020)
  • Fedora — 31, 32
  • Ubuntu — 14.04, 18.10, 19.04, 19.10
  • Debian — 8 (30 June 2020)
  • FreeBSD — 10 (31 October 2018)

1.1.4. Unsupported platforms

These are platforms on which Kea 1.7+ is known not to build or run:

  • Windows (all versions)
  • Windows Server (all versions)
  • Any platform with OpenSSL 1.0.1 or earlier, which does not also have Botan as an alternative
  • Any platform with log4cplus version 1.0.2 or earlier.

1.2. Required Software at Run-Time

Running Kea uses various extra software packages which may not be provided in the default installation of some operating systems, nor in the standard package collections. You may need to install this required software separately. (For the build requirements, also see Build Requirements.)

  • Kea supports two cryptographic libraries: Botan and OpenSSL. Only one of them is required to be installed during compilation. Kea uses the Botan library for C++ (https://botan.randombit.net/), version 2.0 or later. Note that support for Botan versions earlier than 2.0 was removed in Kea 1.7.0 and later. As an alternative to Botan, Kea can use the OpenSSL cryptographic library (https://www.openssl.org/), version 1.0.2 or later.
  • Kea uses the log4cplus C++ logging library (https://sourceforge.net/p/log4cplus/wiki/Home/). It requires log4cplus version 1.0.3 or later.
  • Kea requires the Boost system library (https://www.boost.org/). Building with the header-only version of Boost is no longer recommended.

Some optional features of Kea have additional dependencies.

  • To store lease information in a MySQL database, Kea requires MySQL headers and libraries. This is an optional dependency; Kea can be built without MySQL support.
  • To store lease information in a PostgreSQL database, Kea requires PostgreSQL headers and libraries. This is an optional dependency; Kea can be built without PostgreSQL support.
  • To store lease information in a Cassandra database (CQL), Kea requires Cassandra headers and libraries. This is an optional dependency; Kea can be built without Cassandra support.
  • Integration with RADIUS is provided in Kea via the hooks library available to our paid support customers. Use of this library requires the FreeRadius-client library to be present on the system where Kea is running. This is an optional dependency; Kea can be built without RADIUS support.
  • Kea provides a NETCONF interface with the kea-netconf agent. This Kea module is built optionally and requires Sysrepo software when used. Building Kea with NETCONF support requires many dependencies to be installed, which are described in more detail in Installing NETCONF.

1.3. Kea Software

Kea is modular. Part of this modularity is accomplished using multiple cooperating processes which, together, provide the server functionality. The following software is included with Kea:

  • keactrl — This tool starts, stops, reconfigures, and reports status for the Kea servers.
  • kea-dhcp4 — The DHCPv4 server process. This process responds to DHCPv4 queries from clients.
  • kea-dhcp6 — The DHCPv6 server process. This process responds to DHCPv6 queries from clients.
  • kea-dhcp-ddns — The DHCP Dynamic DNS process. This process acts as an intermediary between the DHCP servers and DNS servers. It receives name update requests from the DHCP servers and sends DNS update messages to the DNS servers.
  • kea-admin — A useful tool for database backend maintenance (creating a new database, checking versions, upgrading, etc.).
  • kea-lfc — This process removes redundant information from the files used to provide persistent storage for the memfile database backend. While it can be run standalone, it is normally run as and when required by the Kea DHCP servers.
  • kea-ctrl-agent — Kea Control Agent (CA) is a daemon that exposes a RESTful control interface for managing Kea servers.
  • kea-netconf - kea-netconf is an agent that provides a YANG/NETCONF interface for the Kea environment.
  • kea-shell — This simple text client uses the REST interface to connect to the Kea Control Agent.
  • perfdhcp — A DHCP benchmarking tool which simulates multiple clients to test both DHCPv4 and DHCPv6 server performance.

The tools and modules are covered in full detail in this guide. In addition, manual pages are also provided in the default installation.

Kea also provides C++ libraries and programmer interfaces for DHCP. These include detailed developer documentation and code examples.