[Kea-announce] Kea 1.7.10, a development release of Kea, is now available
mcnally at isc.org
Thu Jul 30 19:15:53 UTC 2020
Internet Systems Consortium is pleased to announce the release of Kea 1.7.10.
Kea releases are divided into two branch sequences:
1) A current stable branch (currently 1.6.x) which receives only important
bug fixes and is otherwise feature-stable, and
2) An experimental development branch (currently 1.7.x) where new features
are added and made available for testing during development, before eventually
being included in the next stable release branch.
Kea 1.7.10 is the latest release in the experimental development branch.
Kea users who are using the 1.6.x current-stable release branch should look
forward to a release next week in that branch. Kea 1.6.3 will contain bug
fixes and feature improvements for the stable branch, including support for
API calls required to use ISC's Stork monitoring tool with the production-
recommended branch of Kea.
The most recent release versions of each branch of Kea can always be found on
the Internet Systems Consortium website's downloads page:
# Kea 1.7.10, July 29th 2020, Release Notes
Welcome to Kea 1.7.10, a monthly development release of Kea and possibly
the last development release before the upcoming stable version 1.8.0.
As with any other development release, use this with caution.
Development releases are not recommended for production use.
The most significant changes introduced in this version are:
1. **Packages with Kea Migration Assistant (Keama)**. Keama is a tool
that assists migration from ISC DHCP to Kea by using an ISC DHCP config
file to generate a JSON config file in a format accepted by Kea. The
configuration syntax and some core architectural designs are different,
so the conversion does not cover 100% of cases, but at least it gives
users a running start. Previously, to get the tool, a manual compilation
was necessary, but now it is available as an RPM or DEB package (#1081).
2. **Removed obsolete configuration of top-level logging and other
daemons**. Very early Kea versions assumed that configuration for all
daemons (DHCPv4, DHCPv6, DDNS, CA) were to be stored in the same file,
sharing a top-level logging entry. This was convenient in the early
days, but it was fundamentally incompatible when commands such as
`config-set` and `config-write` were introduced, as one daemon would
overwrite other daemons' configurations. This was deprecated a long time
ago, and since 1.6.0, Kea produced warnings when an old configuration
was detected. This backward compatibility is now removed and Kea now
prints an error if old configurations are detected (#916).
3. **Improved performance of subnet selection**. One of the crucial
steps of packet processing in Kea is subnet selection, as Kea needs to
determine which subnet to use to allocate leases. Prior to this change,
Kea walked through subnets in the order configured, which was fine for a
smaller number of subnets, but for large deployments that counted
subnets in thousands this was inefficient. The data structure is now a
multi-index container, which should help with large deployments. The
side effect is that subnets are now evaluated in the order of their
subnet-id. This generally should not affect any users, except in cases
where people relied on the earlier evaluation order (as specified in the
config file) (#553, #1265).
4. **Multithreading tuning**. Two new sections have been added in the
ARM regarding DHCPv4 and DHCPv6 performance tuning for multithreading.
We also added a link to our performance report that is updated weekly
(#1285). Our Developer's Guide has been updated as well (#996, #1264).
5. **Better recovery after failed config**. Kea's configuration process
is complex and can fail in various ways. Depending on the type of
failure (e.g. syntax error, removal of a dynamic network interface,
database connection failure, etc.), Kea may not be able to recover to
its working state. Several improvements have been made: Kea now handles
the interface misconfiguration better (#1330); when recovery is not
possible, Kea clearly reports a critical message that it is unable to
provide service; and message documentation now has a better explanation
of the available steps needed to recover the service (#1166, #507).
6. **DNS support for lease4-del and lease6-del commands**. Kea
previously provided `lease4-del` and `lease6-del` commands. However,
when removing leases, there was no way to instruct Kea to clean up the
corresponding DNS entries. It is now possible (#544).
7. **Cross-compilation for Raspberry Pi**. We are working on a solution
to be able to efficiently run Kea on Pis. This is a long process, but
we're getting there, step by step. In this release we improved the
makefiles and added a section in the Developer's Guide regarding
cross-compilation (#1221). We also updated the parameters to the
`./configure` script to better support cross-compilation (#1223).
8. **Better handling for a large number of interfaces**. Believe it or
not, there are users who need more than 64k interfaces in their system.
Kea previously failed on interfaces with ifindex greater than 65535. It
does not anymore (#1302).
9. **LFC process now runs with lower priority**. One user was concerned
with high CPU utilization when Lease File Cleanup was running. The LFC
process is now being started with lower priority, meaning the OS will
deprioritize it. The amount of work needed has not changed, but the load
should be spread over a longer period of time, making it less noticeable
10. **Negative statistics and getNextRow failed in MySQL** The
underlying problem causing some statistics to become negative has been
fixed in the 1.7.9 release. However, there was no good way to fix the
already-broken statistic after migration to 1.7.9. The `kea-admin` tool
now provides the `stats-recount` command to correct the statistics
11. **Moved to standard chrono library in C++11**. Previously Kea used
the POSIX time library from boost. The code now uses the standard chrono
library from C++11. In addition to the benefit of using a standard
library, there's a small related performance improvement as the standard
lib does fewer conversions (#1174).
12. **Assorted bugfixes and improvements** GNU make-specific features
were removed, which should improve compatibility with FreeBSD and
possibly other BSD clones (#1248). We fixed a bug in leasequery that
could cause some unit-tests to fail (#1344), and fixed a compilation
problem with the musl library that affected Apline 3.10 builds (#1337).
We fixed a test problem in the stats library that caused the tests to
fail if run in a specific order (#1293). The config backend has better
time granularity; previously, it could have missed configuration updates
if multiple updates were done during the same second (#1247). And we
improved the hook libraries unloading routine that previously could have
caused a crash on shutdown in some rare cases (#1282, #1279).
13. **Code of conduct**. Kea now has a code of conduct adapted from the
Django project. Please see the `code_of_conduct.md` file or use [this
## Known Issues
Our internal testing is aware of only one outstanding issue, somewhat
related to MT and HA: in some specific circumstances (notably, when Kea
has received a packet and is still processing it before sending a
response while the application is being shut down), the application may
fail during shutdown. The underlying problem is related to improper
hooks library de-initialization and has existed for a long time; it is
not strictly related to MT. The issue is very rarely reproducible in our
tests. However, due to the parallel nature of MT, the likelihood of
triggering the problem, especially under heavy load, is greater. Details
are in ticket #1279. This problem is expected to be fixed before the
next stable (1.8.0) version is released.
## Release Model
The Kea project has a significant production deployment base with users
who are looking for stability, rather than a constant stream of new
"bleeding-edge" features. At the same time, we want to continue
developing the software and add some new powerful, but
difficult-to-implement, features. To meet both of these requirements we
have both Stable and Development branches.
Stable releases are what you would expect: stable, released
infrequently, without new features or significant changes, very
well-tested. These can be identified by an even-numbered major version
number. The current stable release is 1.6.3, with a major version of
1.6, and minor version 2. If we discover important bugs that require
fixing, we may release 1.6.4, but that will be determined on a
case-by-case basis. The next major stable version will be 1.8.0,
followed by 2.0.0 in the future.
Development releases can be easily identified by an odd major version
number: for example, 1.7.9 is a development release. In July 2020 we are
releasing 1.7.10, the next development version. Once 1.8.0 is out, we
will continue our development work with 1.9.0, then 1.9.1, and so on.
Our goal is to make the development release available on the last
Wednesday of each month. There may be exceptions (such as during
holidays), but that's the general plan.
We encourage users to test the development releases and report back
For more details on the plan, see ISC's Software Support Policy at
## Kea overview
Kea is a DHCP implementation developed by Internet Systems Consortium,
Inc. that features fully functional DHCPv4 and DHCPv6 servers, a dynamic
DNS update daemon, a Control Agent (CA) that provides a REST API to
control the DHCP and DNS update servers, an example shell client to
connect to the CA, a daemon that is able to retrieve YANG configuration
and updates from Sysrepo, and a DHCP performance-measurement tool. Both
DHCP servers support server discovery, address assignment, renewal,
rebinding, release, decline, information request, DNS updates, client
classification, and host reservations. The DHCPv6 server also supports
prefix delegation. Lease information is stored in a CSV file by default;
it can optionally be stored in a MySQL, PostgreSQL, or Cassandra
database instead. Host reservations can be stored in a configuration
file, or in a MySQL, PostgreSQL, or Cassandra database. They can also be
retrieved from a RADIUS server, although this functionality is somewhat
limited. Kea DHCPv4 and DHCPv6 daemons provide support for YANG models,
which are stored in a Sysrepo datastore and can be configured via the
This text references issue numbers. For more details, visit the Kea
GitLab page at https://gitlab.isc.org/isc-projects/kea/issues.
This version of Kea is released under the Mozilla Public License,
The premium and subscriber-only hooks libraries are provided in source
code form, under the terms of an End User License Agreement (you will
get the source code that you can modify freely, but you are not
permitted to redistribute it).
Pre-built ISC packages for current versions of the most popular Linux
operating systems are available at:
The Kea source and PGP signature for this release may be downloaded from:
The signature was generated with the ISC code signing key which is
ISC provides detailed documentation, including installation instructions
and usage tutorials, in the Kea Administrator Reference Manual.
Documentation is included with the installation, at
https://kea.readthedocs.io/en/latest/, or via
https://kb.isc.org/docs/kea-administrator-reference-manual in HTML,
plain text, or PDF formats. ISC maintains a public open source code
tree, a wiki, an issue tracking system, milestone planning, and a
roadmap at https://gitlab.isc.org/isc-projects/kea.
Limitations and known issues with this release can be found at
We ask users of this software to please let us know how it worked for
you and what operating system you tested on. Feel free to share your
feedback on the Kea Users mailing list
(https://lists.isc.org/mailman/listinfo/kea-users). Also we would like
to hear whether the documentation is adequate and accurate. Please open
tickets in the Kea GitLab project for bugs, documentation omissions and
errors, and enhancement requests. We want to hear from you even if
Professional support for Kea is available from ISC. We encourage all
professional users to consider this option; Kea development and
maintenance are funded with support subscriptions. For more information
on ISC's Kea and DHCP software support see https://www.isc.org/support/.
Free best-effort support is provided by our user community via a mailing
list. Information on all public email lists is available at
https://www.isc.org/community/mailing-list. If you have any comments or
questions about working with Kea, please share them to the Kea Users
List (https://lists.isc.org/mailman/listinfo/kea-users). Bugs and
feature requests may be submitted via GitLab at
The following summarizes changes and important upgrade notes since the
previous release (1.7.9).
1780. [doc] wlodek
Added a section to Kea ARM about tuning performance for kea-dhcp4
1779. [build] tmark
Library version numbers bumped for release.
1778. [func]* fdupont
Changed the order of subnets to follow ascending subnet identifier.
1777. [doc] fdupont
Added in the Developer's Guide an example about how to cross
compile Kea for a Raspberry Pi.
1776. [func] fdupont
DHCP servers now log a fatal error message when a reconfiguration
attempt left a no longer working server. Documentation was
updated tp propose remedy actions.
1775. [doc] vicky
A Code of Conduct has been added.
1774. [func] tmark
leaseX-del commands now support a new parameter, update-ddns,
which instructs the server to remove DNS entries for a
lease after it has been deleted.
1773. [perf] fdupont
Kea statistics now uses standard c++11 chrono library instead
of POSIX time library from boost.
1772. [perf] fdupont
Set kea-lfc process priority to lower than default.
This change should alleviate CPU utilization spikes caused
by LFC process observed on some systems.
1771. [func] fdupont
Added a stats-recount command to kea-admin tool, which recounts
cached statistics in MySQL and PostgreSQL lease databases.
1770. [func] fdupont
Added kea-admin lease-stat-recount command which recounts cached
statistics in MySQL and PostgreSQL lease databases.
1769. [build] fdupont
Added detection of the musl libc which implements dlclose() as
a no-operation: this behavior breaks Kea expectations for
hook library unloading.
1768. [func]* fdupont
Removed the support of the Logging toplevel entry. Now loggers must
be defined in each server toplevel entry.
1767. [bug] fdupont
Fixed unit tests failing on systems where an interface is named eth0.
1766. [func] fdupont
Optimized the interface manager code and removed the 16 bit limit
to interface indexes.
1765. [bug] fdupont
Corrected a bug in MySQL Config Backend which occasionally caused
the DHCP servers to overlook some configuration changes. This
issue could occur when the server fetched configuration changes
within one second after they they were applied in the database.
1764. [doc] fdupont
Added thread safety consideration sections to library documentations
in the developer guide.
1763. [bug] fdupont
Changed the way hook libraries are unloaded. Now unload is done
in two phases: the first phase calls unload() entry points and
removes callouts, the second phase unmaps hook library memory
spaces. This should lead to fewer problems including fewer crashes
at exit time. On the other hand, incorrect libraries can stay
in memory until exit and prevent any (re)load.
Thank you again to everyone who assisted us in making this release
We look forward to receiving your feedback.
More information about the Kea-announce