# Kea 1.9.10, July 30th 2021, Release Notes Welcome to Kea 1.9.10, the eleventh 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. As the 2.0.0 release approaches, we are adding fewer and less significant new features. Instead, there are more bug fixes, documentation edits, and small improvements that are expected from stable software. The most notable changes introduced in this version are: 1. **Client Classes in Config Backend**. The Config Backend provides an ability to store many configuration aspects in a database and is a popular feature. Earlier Kea versions had a limitation that the client classes couldn't be stored there. This ability has now been implemented. A number of new commands (`remote-class4-set`, `remote-class4-get`, `remote-class4-get-all`, `remote-class4-del`, `remote-class6-set`, `remote-class6-get`, `remote-class6-get-all`, `remote-class6-del`) are now available in the `cb_cmds` premium hook [#1928, #1167, #1965, #1972, #1977]. 2. **Shorter server tags in Config Backend**. Earlier Kea versions provided capability to identify servers using 256 characters long tags. Unfortunately, some users reported that it didn't work on UTF-8 databases (as each char takes 4 bytes there, which in turn exceeds the maximum length of 768 bytes of allowed indexing fields). The schema has been shortened to 64 characters, which should be more than enough to identify servers. If you are upgrading existing deployment, the regular `kea-admin db-upgrade` will implement this change for you. New deployments don't need to do anything special, as the new database schema will be initialized to 64 characters [#1976]. 3. **Sysrepo 1.4**. Kea provides optional support for YANG modules accessible via NETCONF protocol. Earlier versions used outdated Sysrepo 0.x for this capability. That external dependency has been updated to Sysrepo 1.4, which is a substantial architectural change, compared to now obsolete 0.x. The compilation with Sysrepo has been simplified with `--with-sysrepo` and `--with-libyang` switches available in the configure script. However, due to external dependencies (both sysrepo and its libyang library have to be compiled with C++ bindings enabled) remains to be non-trivial [#1077, #1991, #1626, #1844, #1556, #1987]. 4. **GSS-TSIG**. Development continues on the ability to integrate Kea with Kerberos and Active Directory (AD), popular services in Windows environments. The premium hook library has gotten several new capabilities, but is not functional yet. The configuration parsers have been implemented [#1950], there is `nsupdate` tool available that is mostly compatible with BIND 9 original, but uses Kea framework instead [#1935]. The query id (qid) field in DNS messages is now better randomized [#1957]. Hammer is now able to build Kea with Kerberos [#1885]. 5. **Bison 3.3 support**. Kea now uses grammar syntax introduced in Bison 3.3, which is over 2.5 years old now. The side effect is that older bison versions are no longer supported. This dependency is disabled by default, so should not affect any users. Bison is only used when parsers are regenerated (`--enable-generate-parser` in configure script), which is an activity that typically only developers do [#453]. 6. **Multi-threading improvements**. The critical section is now thread safe and can be called from http client or http listener processing threads. This fixes a rare problem that could occur on HA pair with multi-threading enabled and substantial traffic [#1964]. 7. **CI improvements**. Our internal CI processes continue to be improved. The code coverage is now calculated for every commit [#1896], our build scripts havebetter handling of missing git tool, which makes it easier to detect why new systems can't run tests [#1692], better parallel build (`make distcheck` can finally take advantage of parallel build, dramatically reducing test cycle from over 5h to between 80 and 20 minutes) and test execution [#1642], Hammer now has a better Postgres timezone setting capability [#1953]. ## Incompatible Changes 1. **Shorter server tags in Config Backend** - See above for the change overview. If tags longer than 64 bytes are used, the migration script (`kea-admin db-upgrade`) will print an error and will abort the schema update procedure. If you are using tags longer than 64 characters, please update your configuration so tags are 64 characters or shorter [#1976]. 2. **Sysrepo 1.4** - See above for the change overview. Sysrepo project underwent substantial architectural change between now obsolete 0.x and 1.4 version. As such, it's not feasible to maintain both old and new Sysrepo versions. Note that the recently published Sysrepo 2.0 cannot be used as it does not provide C++ bindings yet. You may want to read the Section 21.9.6 "Migrating YANG data from sysrepo v0.x to v1.x" [#1077, #1991, #1626, #1844, #1556, #1987]. 3. **Bison 3.3** - Some systems, such as CentOS 7, still provide only older bison 3.0. Parsers should not be regenerated on those systems, unless never bison version is installed. This should not affect any normal users, as parsers are typically regenerated only when new parameters are added during development of new features [#453]. ## Known Issues For details on known issues, visit: https://gitlab.isc.org/isc-projects/kea/-/wikis/known-issues-list And for the list of issues marked as bugs: https://gitlab.isc.org/isc-projects/kea/issues?label_name%5B%5D=bug ## 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 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 minor version number. The current stable release is 1.8.2. The older stable version of 1.6.3 is also available. 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 minor version number: for example, 1.9.0 is a development release. Subsequent releases on the same minor release branch get numbered with 1.9.1, 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 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 (now deprecated) database instead. Host reservations can be stored in a configuration file, or in a MySQL, PostgreSQL, or Cassandra (now deprecated) 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 (ARM). 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 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 at: 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 on 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 since the previous release of 1.9.9: ### In the core package ``` 1927. [build] razvan Library version numbers bumped for Kea 1.9.10 development version. (Gitlab #1984) 1926. [func]* marcin Server tags in the MySQL database are now represented as strings with a maximum length of 64 characters. Previously, the server tags could be up to 256 characters long, and it could cause database migrations to fail on the systems with UTF-8 encoding configured for MySQL. Shorter server tags avoid hitting the limitation on the maximum length of an indexed table column. (Gitlab #1976) 1925. [build] fdupont Updated parsers to bison 3.3 or later. (Gitlab #453) 1924. [bug] razvan The MultiThreadingCriticalSection is now thread-safe and can be called from http client or http listener processing threads. (Gitlab #1964) 1923. [func] andrei Integrate with Sysrepo v1.x branch. Building with support for Sysrepo now requires the latest v1.x versions: sysrepo v1.4.140 + libyang v1.0.240. Support for legacy Sysrepo versions v0.x has been dropped. (Gitlab #1077) 1922. [func] marcin Added support for storing client classes in the MySQL config backend. (Gitlab #1920, #1928, #1965, #1972, #1977) 1921. [func] fdupont The D2 d2_srv_configured hook point used DROP status to notify the D2 server that an error has occured and the configuration is rejected. The error message is passed to the D2 server through the new 'error' hook parameter. (Gitlab #1950) ``` ### In the premium package ``` 125. [func] marcin Implemented client class management commands for the config backend. (Gitlab #1965) ``` Thank you again to everyone who assisted us in making this release possible. We look forward to receiving your feedback.