[Kea-announce] Kea 1.7.10, a development release of Kea, is now available

Michael McNally 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:

   https://www.isc.org/downloads/#Kea


Michael McNally
ISC Support

-----------------------

# 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
(#1311).

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
(#1196).

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
link](https://gitlab.isc.org/isc-projects/kea/-/blob/master/code_of_condu
ct.md).

## 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
their findings.

For more details on the plan, see ISC's Software Support Policy at
https://kb.isc.org/docs/aa-00896.

## 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
NETCONF protocol.

This text references issue numbers. For more details, visit the Kea
GitLab page at https://gitlab.isc.org/isc-projects/kea/issues.

## License
This version of Kea is released under the Mozilla Public License,
version 2.0.

   https://www.mozilla.org/en-US/MPL/2.0

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).

## Download
Pre-built ISC packages for current versions of the most popular Linux
operating systems are available at:

   https://cloudsmith.io/~isc/repos/

The Kea source and PGP signature for this release may be downloaded from:

   https://www.isc.org/download

The signature was generated with the ISC code signing key which is
available at:

   https://www.isc.org/pgpkey

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
https://gitlab.isc.org/isc-projects/kea/wikis/known-issues-list.

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
everything worked.

## Support
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
https://gitlab.isc.org/isc-projects/kea/issues.

## Changes
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
	and kea-dhcp6.
	(Gitlab #1285)

1779.	[build]		tmark
	Library version numbers bumped for release.
	(Gitlab #1346)

1778.	[func]*		fdupont
	Changed the order of subnets to follow ascending subnet identifier.
	(Gitlab #1265)

1777.	[doc]		fdupont
	Added in the Developer's Guide an example about how to cross
	compile Kea for a Raspberry Pi.
	(Gitlab #1221)

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.
	(Gitlab #507,#1166)

1775.	[doc]		vicky
	A Code of Conduct has been added.
	(Gitlab #1143)

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.
	(Gitlab #544)

1773.	[perf]		fdupont
	Kea statistics now uses standard c++11 chrono library instead
	of POSIX time library from boost.
	(Gitlab #1174)

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.
	(Gitlab #1311)

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.
	(Gitlab #1196)

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.
	(Gitlab #771)

1768.	[func]*		fdupont
	Removed the support of the Logging toplevel entry. Now loggers must
	be defined in each server toplevel entry.
	(Gitlab #916)

1767.	[bug]		fdupont
	Fixed unit tests failing on systems where an interface is named	eth0.
	(Gitlab #1043)

1766.	[func]		fdupont
	Optimized the interface manager code and removed the 16 bit limit
	to interface indexes.
	(Gitlab #553)

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.
	(Gitlab #1247)

1764.	[doc]		fdupont
	Added thread safety consideration sections to library documentations
	in the developer guide.
	(Gitlab #996,#1264)

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.
	(Gitlab #1282)
```

Thank you again to everyone who assisted us in making this release
possible.

We look forward to receiving your feedback.


More information about the Kea-announce mailing list