# 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 
are:

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

## 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
	version.
	(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 
possible. 

We look forward to receiving your feedback.