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

Cathy Almond cathya at isc.org
Wed Dec 16 15:18:44 UTC 2020

Internet Systems Consortium is pleased to announce the release of Kea 1.9.3.

As a reminder:  Internet Systems Consortium uses an alternating branch
scheme for our releases.  Branches that have an odd number in the digit
after the first "." (for example:  Kea 1.7, Kea 1.9) are experimental
development branches, while branches that are even-numbered are intended
for stable production use (for example: Kea 1.6, Kea 1.8.)

The purpose of the development branch (1.9) is to provide frequent
snapshot releases for those who wish to track the development of new
features whilst keeping this new development work separate from the
stable branch (1.8) that is recommended for production use.

You can read more about specific changes in the release notes below.

Cathy Almond
ISC Support

                                 -  -  -

# Kea 1.9.3, December 16th 2020, Release Notes

Welcome to Kea 1.9.3, the fourth monthly release of the 1.9 development
branch. As with any other development release, use this with caution:
development releases are not recommended for production use.

This release improves testing capabilities and includes bug fixes. There
are no new features. The most notable changes introduced in this version

1. **More robust shell and unit tests**. Existing shell tests are now
more robust, detect more problems, and report no false positives. This
is not something an average user would notice or care about, but it
gives the developers a more reliable tool to detect problems and check
their proposed changes on many systems quickly. #163, #164, #1574 Unit
tests also went through substantial clean-up and saw improvements.
#1250, #1251, #356 Additional unit tests for multi-threading have been
implemented. #991

2. **Whitespace in passwords**. Earlier Kea versions could not
accommodate database passwords that contained white spaces. This issue
is now corrected. #692

3. **Bugfix in config backend inheritance**. This version improves
inheritance in the config backend, in particular with regards to
`interface-id`. #652, #1058

4. **Bugfix in reservation-get-by-hostname command**. The code that
handles `reservation-get-by-hostname` without subnet-id has been
improved. #1412

5. **Bugfix in vendor-specific option**. `vendor-specific-options` are
attached only once, even if the `always-send` flag is set. #1449

6. **Bugfix in issues reported by TSAN**. Warnings reported by the
Thread Sanitizer (TSAN) were addressed. #1535

7. **Several missing files are now distributed**. Several files of lower
importance (such as the small Kea logo or a template for generating the
YANG revisions list) are restored in the tarballs. #1567

8. **Consistent class-cmds return syntax**. Commands provided by the
class-cmds hook library used a different syntax than usual when handling
error responses. The syntax of the responses is now consistent,
regardless of whether command execution is successful. #432

9. **perfdhcp improvements**. `perfdhcp` allows custom options to be
sent using the `-o` command-line switch. Previously, this did not work
well with the PRL or ORO options, as perfdhcp sent two copies of the
options. This is now fixed. If additional content for those options is
specified, it is added to existing option instances. #1508

10. **Better database reconnect logic**. Previously, when kea-dhcp4 or
kea-dhcpv6 servers lost connectivity to any of their backends (lease,
host, or CB), the reconnect logic attempted to reconnect to all of them,
regardless of whether there was a connection failure. Now only the
affected connections are re-established, which is more efficient. This
change also fixed an issue with connection recovery when multi-threading
is enabled. #1375

11. **Bugfix in inheritance**. The inheritance of the triple
`min-valid-lifetime`, `valid-lifetime`, and `max-valid-lifetime`
parameters from the global scope, and for preferred-lifetime, has been
fixed. We added a sanity check to refuse incorrect settings, e.g. the
lifetime not being within the min and max values. #1456

12. **TTL in DNS update now conforms to RFC 4702**. `kea-dhcp4` and
`kea-dhcp6` now calculate the DDNS TTL value based on RFC 4702, Section
5, which suggests that the TTL value be 1/3 of the lease's valid
lifetime with a minimum value of 10 minutes. Prior to this change, the
servers set the TTL equal to the lease's valid lifetime. #936

## Incompatible changes

This release introduces one small incompatible change.

1. Earlier Kea versions retrieved some configurations set at the subnet
level, when queried for shared network configurations. This ambiguity
has been fixed; now the class-cmds responses have the same syntax as
other commands, regardless of the command execution's success or
failure. #1058

## Known Issues

See https://gitlab.isc.org/isc-projects/kea/-/wikis/known-issues-list
for details.

## 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 releases are 1.8.0, with an old stable
version of 1.6.3. If we discover important bugs that require fixing, we
may release additional maintenance versions on the 1.8 branch, but that
will be determined on a case-by-case basis. The next major stable
version will be 2.0.0.

Development releases can be easily identified by an odd major version
number: for example, 1.9.0 is a development release. We will continue
our development work with 1.9.1, then 1.9.2, 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

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


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:


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
available at:


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). We would also 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

## Changes

The following summarizes changes and important upgrade notes since the
previous release (1.9.2).

1847.	[bug]		andrei
	Harden shell scripts and fix some of the resulted test failures.
	* #!/bin/sh for all scripts
	* set -eu in all scripts
	* shellcheck all scripts, and fix all shellcheck warnings
	* and more...
	(Gitlab #1574)

1846.	[build]		razvan
	Library version numbers bumped for Kea 1.9.3 development
	(Gitlab #1605)

1845.	[func]		marcin
	Kea configuration now allows for using database passwords
	which include whitespace.
	(Gitlab #692)

1844.	[bug]		marcin
	Corrected a bug in Kea Control Agent error responses when a
	malformed command was sent. In some cases a map with an error
	response was returned instead of a list.
	(Gitlab #432)

1843.	[func]		andrei
	Allow perfdhcp to request options via option 55 PRL. perfdhcp
	adds option 55 with a few requested options by default so in
	order to allow `perfdhcp -o 55,abcd` special logic to merge all
	the buffers of option 55 was implemented. Works with multiple
	`-o` arguments.
	(Gitlab #1508)

1842.	[func]		razvan
	Fixed the db connection reconnect implementation to honor
	each connection backend configuration. The most important
	improvement is that only the affected manager will be
	recreated when a connection is lost. Previously, even
	managers which were not affected had to be recreated on
	any connection loss. Also fixed an issue with recovery
	when multi-threading is enabled.
	(Gitlab #1375)

1841.	[bug]		marcin
	Corrected issues with inheritance of the DHCPv6 interface-id
	parameter. When interface-id is set at shared network level
	but not at the subnet level this setting is properly propagated
	to the config backend and reported when responding to the
	config-get command. Prior to this change, if the interface-id
	was set for a shared network, it was always returned for the
	subnets belonging to this shared network, even when subnet
	specific value was not specified.
	(Gitlab #652)

1840.	[bug]		fdupont
	Fixed the inheritance of the triple min-valid-lifetime,
	valid-lifetime and max-valid-lifetime parameters from
	the global scope, and fixed it for preferred-lifetime too.
	Added a sanity check refusing incorrect settings, e.g.
	the lifetime not being between min and max values.
	(Gitlab #1456)

1839.	[bug]		tmark
	kea-dhcp4 and kea-dhcp6 now calculate the DDNS TTL value
	based on RFC 4702, Section 5 which suggests that the
	TTL value be 1/3 of the lease's valid life time with a
	minimum value of 10 minutes. Prior to this the servers
	set the TTL to equal to the lease's valid life time.
	(Gitlab #936)

1838.	[bug]		fdupont
	The DHCPv6 sent multiple instances of an option or a
	sub-option when it seems to be requested more than once
	directly by the client or using the always-send flag.
	(Gitlab #1449)

1837.	[doc]		cstrotm
	Several Kea ARM corrections.
	(Gitlab #1514)

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 mailing list