# Kea 1.9.2, November 25th 2020, Release Notes Welcome to Kea 1.9.2, the third 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 development release tackles an assortment of feature improvements and bug fixes. The most significant changes introduced in this version are: 1. **Global and subnet reservations**. Earlier Kea versions had a single configuration parameter called `reservation-mode` that governed whether host reservations were global (out-of-pool) or subnet-level (in pool), and it was not possible to use different reservation types at the same time. However, in some deployments there is a need to use several types at the same time. As a result, the `reservation-mode` parameter is now deprecated and replaced by three separate boolean parameters: `reservations-global`, `reservations-in-subnet`, and `reservations-out-of-pool`, each of which can be controlled independently. This gives users more flexibility in their configuration. Caution is recommended as enabling more lookups has performance implications. The older parameters will still work in this version, with a warning, but will be removed after Kea 2.0. #1405, #1550 2. **Fix for the `lease4-update` command in multi-threaded DHCPv4**. A bug has been discovered in the `lease4-update` command when the DHCPv4 server is running in multi-threaded mode. This command is used in HA scenarios. The bug caused the server to fail to update the lease properly, while reporting incorrectly that the update was successful. This has now been fixed. A patch for 1.8.0 and 1.8.1 is attached to https://gitlab.isc.org/isc-projects/kea/-/issues/1542; the maintenance release of 1.8.2 that will include this fix is expected in December 2020. #1542 3. **Authentication hook points**. New `auth` and `response` hook points have been implemented in the Control Agent (CA). It is now possible to develop a hook that processes incoming HTTP requests and performs access control and audit logging on them. This is a preparation step for a new hook library that will provide Access Control (RBAC). #1421 4. **Documentation updates**. Peter (#1536) and Suzanne (#1539) made many edits to the Kea ARM. The Developer's guide has been corrected in several places (#1516), and some examples in the ARM have been corrected (#1457). There are also new KnowledgeBase (https://kb.isc.org/) articles on accessing the Cloudsmith repository (#1476) and comparing Host Reservations in Kea to the analogous mechanism in ISC DHCP. #1355 5. **Test improvements**. `perfdhcp` can now control the "secs" field in DHCPv4 and the "elapsed time" option in DHCPv6. Both are used to simulate clients not getting timely responses from the server, which is essential for triggering an HA failure (#1332). A number of test issues were fixed as reported by running unit-tests with reshuffle mode turned on. #1442 6. **Build improvements**. The messages printed when dependencies are missing have been reworded to make it clearer which libraries are needed (#1492). The config.h header file is now included in all .cc files, to ensure that the global parameters are really applied in all parts of the code. #1453 ## 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.1). ``` Kea 1.9.2 (development) released on Nov 25, 2020 1836. [build] razvan Library version numbers bumped for Kea 1.9.2 development version. (Gitlab #1555) 1835. [doc] peterd Several Kea ARM corrections. (Gitlab #1536) 1834. [func] fdupont Added two new callouts (hook points) in the control agent. The "auth" callout is executed after the basic authentication (if configured) and the command processing. The "response" callout is executed after the command processing and before the HTTP response is returned. (Gitlab #1421) 1833. [doc] sgoldlust Many documentation corrections. (Gitlab #1539) 1832. [func] tomek, wlodek Perfdhcp extended with functionality to gradually increase elapsed time in solicit and secs field in offer. (Gitlab #1332) 1831. [bug] razvan Fixed the DHCPv6 server implementation of the reservations-out-of-pool flag to match the DHCPv4 one. When the flag is true: * the server assumes that all reserved address do not belong to the dynamic pool. * the server will not assign reserved addresses that are inside the dynamic pool to the respective clients. * addresses matching the respective reservations from inside the dynamic pools (if any) can be dynamically assigned to any client. (Gitlab #1550) 1830. [func] fdupont, razvan Added new configuration options reservations-global, reservations-in-subnet and reservations-out-of-pool to replace the old reservation-mode parameter. The new flags can be configured independently, adding support for new configuration scenarios when global and in subnet reservations are both active. (Gitlab #1405) 1829. [bug] fdupont, razvan Fixed a bug in the hasAddressReservation function which was causing the search for reservations to end as soon as no global reservation was found when configuring a subnet or shared network with global reservations enabled. (Gitlab #1405) 1828. [bug] andrei Fix trivial logic error in handling the "lease4-update" command manifesting itself on v4 if multi-threading is enabled. Notable affected environment is a HA with the "send-lease-updates" configuration setting explicitly set to true. Prior to this fix, lease updates would not go through to other HA nodes, even though some log lines would say they would. A simple workaround prior to this fix is to disable multi-threading. (Gitlab #1542) 1827. [build] andrei Add `tools/add-config-h.sh` script that can add `#include ` lines to non-generated source files that are missing it. (Gitlab #1453) ``` Thank you again to everyone who assisted us in making this release possible. We look forward to receiving your feedback.