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