[Kea-announce] Kea 1.9.10, a new development release of Kea, is now available

Michael McNally mcnally at isc.org
Mon Aug 2 20:01:52 UTC 2021


Internet Systems Consortium is pleased to announce the release of Kea 1.9.10.

Releases in the Kea 1.9.x sequence are part of the Kea 1.9 development branch,
where new features are provided for testing and evaluation before the branch
is designated stable and recommended for production use.

The current stable branch of Kea is Kea 1.8 and its most recent release is 1.8.2

The latest releases from each branch are available via the ISC downloads page:

   https://www.isc.org/download

______________________________________________________________________

# Kea 1.9.10, August 2nd 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.


More information about the Kea-announce mailing list