# Kea 2.7.0 Release Notes, June 26th, 2024 Welcome to Kea 2.7.0, the first monthly release of the 2.7 development series. As with any other development release, use this with caution: development releases are not recommended for production use. Kea is a DHCP implementation developed by Internet Systems Consortium (ISC) that features DHCPv4 and DHCPv6 servers with DNS update and a REST API; optional database support (MySQL and PostgreSQL); optional RADIUS, Kerberos, YANG/NETCONF, and GSS-TSIG support; and much more. Kea provides extensive management capabilities, including but not limited to: TLS support, Role-Based Access Control, run-time configuration monitoring and updates via a REST API, host reservations, and client classification. The text below references issue numbers. For more details, visit the Kea GitLab page at https://gitlab.isc.org/isc-projects/kea/-/issues. For details about Docker issues, visit the page at https://gitlab.isc.org/isc-projects/kea-docker/-/issues/. For details about packaging, visit the page at https://gitlab.isc.org/isc-projects/kea-packaging/-/issues/. The following bug fixes and features have been implemented since the previous release, version 2.6.0: 1. **High Availability update**: The High Availability hook now supports lease affinity for released leases: when a lease is released but left in the database for a possible re-allocation, this information is propagated to the partner server. Previously, a released lease was always deleted on the partner, causing the lease and the client to lose their association in the partner's lease database. This change introduces a new "released" lease state, which appears for the released leases in the lease database and in the lease updates exchanged between the HA partners. This is a backward incompatible change for HA partners that have not been upgraded to the latest Kea version; they will reject lease updates for the released leases holding the new state value [#3246]. 2. **Regular expressions**: It is now possible to use regular expressions used by Kea for classification, flex-id, and other purposes. The new token is called `match` [#3170]. 3. **PerfMon commands**. The Performance Monitoring Hook has been expanded with two new commands: `perfmon-control`, which can be used to enable or disable monitoring and reporting at runtime, and `perfmon-get-all-durations`, which fetches a snapshot of raw performance data and presents it to the user [#3328]. 4. **Host Commands updates**: The subnet-id parameter is now optional when adding new reservations without addresses, adding a global reservation. Many other cases give more meaningful error messages if the subnet-id is omitted [#2878]. 5. **Statistics**: A new global statistic, `queue-mgr-queue-full`, has been added to kea-dhcp-ddns. It tracks the number of times the queue for DNS update requests (NCRs) has reached maximum capacity [#2611]. 6. **Run Script hook**: New options are available to be used in the Run Script hook: v6 relay options 18 (interface-id), 37 (remote-id), and 38 (subscriber-id) [#3035]. 7. **Usability**: Kea now prints options with binary data in a human-readable form whenever possible [#2844]. 8. **Build improvements**: A compilation failure was fixed for the pgsql_cb hook that manifested itself with boost 1.85 running on macOS. Other systems may also have been affected [#3436]. 9. **Documentation**: A section in the Kea ARM was expanded to show how the Run Script hook can be used to get all IPv6 leases, e.g., to configure routing [#2914]. 10. **Bug fixes**: A crash in kea-netconf was fixed that was caused by an unlikely scenario: overwriting the config from one module with another in the same edit-config [#3435]. We fixed several instances of undefined behavior code [#3323]. The `reservation-update` command now checks whether all the addresses are in the range of the subnet used [#3452]. Kea LFC now correctly inherits the environment values [#3450]. The Prefix lease is removed when its reservation is deleted [#3375]. Kea no longer tries to update a lease with a generated FQDN if the address is not available to be leased [#3356]. 11. **Tests**: Frequent CfgIface unit test failures on Ubuntu 22.04 were fixed [#3366]. The CI now enforces pylint and pycodestyle on all Python scripts in the Kea repository [#3287]. ## Incompatible Changes Kea 2.7.0 High Availability mode is not compatible with older Kea versions. ## Other A new repository named kea-dev on Cloudsmith contains all packages for the 2.7.X release series and will contain all future development releases. ## License This version of Kea is released under the Mozilla Public License, version 2.0. https://www.mozilla.org/en-US/MPL/2.0 Some Kea hook libraries are provided under the MPL 2.0; others are licensed with the [Kea Hooks Basic Commercial End User License](https://www.isc.org/kea-premium-license/). The source for each hook library includes the applicable license. ## Download Pre-built ISC packages for current versions of the most popular Linux operating systems are available at: https://cloudsmith.io/~isc/repos/ Pre-built Docker images, as well as Docker files, are available. For details, see: https://gitlab.isc.org/isc-projects/kea-docker 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 or at https://kea.readthedocs.io/en/latest/index.html in HTML, PDF, or EPUB formats. ISC maintains a public open source code tree, wiki, issue tracking system, milestone planner, and 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 maintenance is funded with support subscriptions. For more information on ISC's Kea 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 upgrades since the 2.6.0 release. 2258. [build] razvan The library version numbers have been bumped up for the Kea 2.7.0 development release. (Gitlab #3459) 2257. [func] andrei Exceptions thrown from Sysrepo while processing a NETCONF config change or while sending notifications are now caught and logged. The configuration is not applied in that case, but at least kea-netconf recovers instead of crashing. These scenarios are corner cases that are likely not found in production and that trigger bugs in upstream code. (Gitlab #3435) 2256. [func] marcin High Availability hook now supports lease affinity for the released leases. When a lease is released but left in the database for a possible re-allocation this information is propagated to the partner server. Previously, a released lease was always deleted in the partner, causing a loss of the association between the lease and the client in the partner's lease database. This change introduces a new "released" lease state which appears for the released leases in the lease database and in the lease updates exchanged between the HA partners. It is a backward incompatible change for the HA partners that haven't been upgraded to the latest Kea version. They will reject the lease updates for the released leases holding the new state value. (Gitlab #3246) 2255. [bug] razvan The environment is now inherited by kea-lfc when started by the Kea DHCP server. (Gitlab #3450) 2254. [func] tmark Added two API commands to Perfmon hook library: "perfmon-control" which can be used to enable or disable monitoring and reporting at runtime; and "perfmon-get-all-durations" which fetches a snapshot of raw performance data. (Gitlab #3328) 2253. [func] fdupont Added the predicate token "match" which evaluates regular expression matching to classification expression. (Gitlab #3170) 2252. [bug] fdupont Corrected an issue in kea-dhcp6 which caused reserved prefixes to not be removed when their host reservation was deleted by ip address. (Gitlab #3375) 2251. [func] tmark A new global statistic, "queue-mgr-queue-full", has been added to kea-dhcp-ddns. It tracks the number of times then receive queue for DNS update requests (NCRs) has reached maxium capacity. (Gitlab #2611) 2250. [func] razvan Kea now pretty prints options with binary data whenever possible. (Gitlab #2844) 2249. [func] razvan Made v6 relay options 18 (interface-id), 37 (remote-id) and 38 (subscriber-id) available to the run script hook library. (Gitlab #3035) 2248. [bug] tmark Fixed a corner-case issue in kea-dhcp6 that was causing it to attempt to update a lease for an address with a generated FQDN even though the address was not available to be leased. (Gitlab #3356) And for Kea premium: 201. [bug] fdupont Reserved addresses in "reservation-update" command are now required to be in the range of the subnet prefix. (Gitlab #3452) 200. [func] fdupont Commands of the host_cmds hook library which require a "subnet-id" parameter now add a hint to the error message when called without this parameter. For "reservation-add" of an empty (i.e. no reserved address or prefix) host reservation, the global (subnet-id 0) is assumed if the "subnet-id" parameter is not specified. (Gitlab #2878) Thank you again to everyone who assisted us in making this release possible. We look forward to receiving your feedback.