# Kea 1.7.9, June 24th 2020, Release Notes Welcome to Kea 1.7.9, a monthly development release of Kea. 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. **High Availability and Multi-Threading**. Several remaining issues when using HA in multi-threading mode have been resolved: HA service handling commands are now thread-safe (#1277); several potential problems reported by thread sanitizer have been addressed (#1239); liblog, a logging subsystem used by Kea, is now thread-safe (#1266); a decline, which causes a dropped packet in an updateLease race, now issues a more useful warning (#1232); and parking lots are now thread-safe. (#1255) There is one known problem that may manifest iself during HA + MT, but it affects only shutdown procedure. For details, see the Known Issues section below. 2. **Leasequery for DHCPv6**. The LeaseQuery hook library, introduced in the last release, has been extended to DHCPv6. Kea now fully supports leasequery for both DHCPv4 and DHCPv6. The leasequery mechanism allows relay agents and other entities to query for details regarding assigned IP addresses and DUID bindings. #1235 3. **Negative statistics**. A longstanding problem of statistics sometimes becoming negative has been fixed. Another aspect of the underlying issue that under certain circumstances Kea would produce an error complaining about the getNextRow failure on MySQL. Our belief is that both problems are now fixed. Please report if you still experience negative counters after upgrading to 1.7.9 #1196, #944. 4. **Packages improvements**. Package descriptions are now updated. In particular, it is clearer that the common package contains hooks libraries. (#1209) Also, a problem with starting Kea on Debian 9 has been solved. #1261 5. **Legacy comment to user context conversion has been removed**. Historically, Kea had the ability to add `comments` to various configuration structures (which could store only a single line of text); later, it was extended to support `user-context`, which is much more flexible and can store arbitrary metadata. Kea used to convert `comments` entries in `user-context` into legacy plain `comments`. This backwards compatibility measure is now removed. #1100 6. **Parsers update**. The parsers (part of the code that handles configuration files and parts of commands) has been refactored. This should be transparent to users. However, there is a small chance that this introduced different behavior in some corner cases of configurations handling #1245. 7. **The Forensic Logging hook is now multi-threading compatible**. We have addressed all known MT-related issues in forensic logging. The library should work with MT enabled. #1203 8. **Bugfixes**. A change in an earlier Kea version introduced a bug that caused Kea to emit an error message every time a command was processed. The harmless but annoying error is now fixed. (#1234) Kea no longer incorrectly logs address lease renew as prefix renew (#1276); the build system now better handles situations when log4cplus is installed in a non-standard location (#1273); config-backend-pull has been fixed (#1189); and a problem with Hammer not detecting packages correctly has been fixed (#1262). ## 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 still processes 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 being reproducible very rarely 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.2, with a major version of 1.6, and minor version 2. If we discover important bugs that require fixing, we may release 1.6.3, 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.8). ``` 1762. [bug] fdupont Fixed the control command execution: either it was deferred by DHCP packet processing or a spurious error message was logged. (Gitlab #1234) 1761. [bug] fdupont Found and fixed a possible source of incorrect statistics cached in MySQL and PostgreSQL lease databases which in some cases made servers fail to start. (Gitlab #944,#1196) 1760. [bug] razvan Fixed log message on DHCPv6 IA_NA lease renew. (Gitlab #1276) 1759. [bug]* fdupont Fixed the way configuration global entries are parsed in DHCPv4 and DHCPv6 servers. We expect that the change will not be visible for sane configurations. (Gitlab #1245) 1758. [func]* fdupont Earlier Kea versions converted "comment" entries to "user-context" scope in the configuration when using config-get. This backwards compatibility has now been removed. This may affect users who use config-get or config-write commands and use comments in their configurations. (Gitlab #1100) 1757. [bug] fdupont config-backend-pull commands were fixed to be applied to the current configuration (Gitlab #1189) 1756. [bug] fdupont Made the parking lot API generic thread safe. (Gitlab #1255) 1755. [func]* fdupont Implemented various race avoidance mechanisms in the multi-threaded packet processing: only one query from the same client is processed, subsequent queries from the same client are dropped at the exception of the most recent which will be processed after. When picking a free address or prefix from a pool the resource is considered as not free for other threads. This is used by the lease commands hooks library to avoid conflicts with a minimal overhead. Finally individual lease reclamation is exclusive of multi-threaded packet processing. (Gitlab #1147) ``` Thank you again to everyone who assisted us in making this release possible. We look forward to receiving your feedback.