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

Michael McNally mcnally at isc.org
Wed Jan 29 19:04:54 UTC 2020


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

Kea releases are divided into two branch sequences:

1)  A current stable branch (currently 1.6.x) which receives only important
    bug fixes and is otherwise feature-stable, and

2)  An experimental development branch (currently 1.7.x) where new features
    are added and made available for testing during development, before eventually
    being included in the next stable release branch.

Kea 1.7.4 is the latest release in the experimental development branch.

Server operators who are currently testing the 1.7 experimental branch
are advised to upgrade to 1.7.4 if they are using the Config Backend feature,
as Gitlab issue #1093 corrects a potential pitfall for operators using
this feature.  An updated release of the Kea 1.6 stable branch containing
a back-ported version of this fix will be available in February.

Michael McNally
ISC Support

-----------------------

# Kea 1.7.4, January 29th 2020, Release Notes

Welcome to Kea 1.7.4, a monthly development release of Kea. This release
is the next step towards having fully multi-threaded DHCP servers, which
will eventually become available as 1.8.0. This is a development
release. Use with caution! Development releases are not recommended for
production use.

Changes introduced in this version:

1. **Manipulate HA status**. By popular demand we have implemented a
mechanism that allows changing the HA state of partners. Three new
commands have been implemented: ha-maintenance-start (which puts one of
the server in the partner-in-maintenance state and causes this server to
take over the entire DHCP traffic directed to the HA service),
ha-maintenance-stop (which reverts back to normal operation), and
ha-maintenance-notify (which is an internal command used by servers to
notify each other about ongoing maintenance). For more details, see a
new section `Controlled Shutdown and Maintenance of DHCP servers` in the
Kea ARM. (#1024)

2. **Config Backend support for new DDNS parameters**. Kea 1.7.1 added
an ability to specify many DDNS parameters on a per-subnet and
per-shared network basis. This greatly improved the flexibility of DHCP
and DNS interactions. Unfortunately, that capability was not available
for the Config Backend. This limitation is now removed and users can
store and tweak the DDNS parameters in the MySQL database. (#946)

3. **BOOTP fixed**. An experimental BOOTP support introduced in Kea
1.7.3 had a serious flaw that made it nearly impossible to use. This has
been fixed now. ISC has limited access to BOOTP clients, but the
software implementation we were able to use is operating correctly. The
BOOTP support is still considered experimental. Please share your
experience with it if you can. (#1064)

4. **Performance improvements in DDNS processing**. The code implemented
in Kea 1.7.1 added more flexibility regarding DDNS parameters. However,
that flexibility needed extra evaluations to be conducted and thus
decreased performance a bit, even for cases that didn't use DDNS. This
change has now been refactored to have much smaller impact. (#981)

5. **Subnet options are not being loaded from the CB for all subnets**.
We were able to identify a somewhat tricky bug in the Config Backend
processing. If the options were added to the Config Backend in a
specific order, some of the subnets would not retrieve the associated
options properly. This problem has now been fixed. (#1093)

6. **Multi-threading**. Our work on enabling multi-threading in Kea has
made substantial progress this month. We added thread sanitizer support
and started building Kea with unit-tests running with thread sanitizer
enabled. There are still some outstanding issues, but we expect to fix
them soon. Several more libraries have been made thread-safe: libdhcp++,
memfile backend, and MySQL host manager got a thread-safe connection
pool. (#880, #889, #894, #1073)

7. **Subnet and shared network default values and inheritance**. The
code that handles default parameters and parameters inheritance, such as
applying global values to subnet level, has been updated slightly.
Although unlikely, there is a small possibility this may affect
boot-file-name, client-class, interface, match-client-id, authoritative,
next-server, reservation-mode, and server-hostname values in Subnet4
and	client-class, interface, interface-id, rapid-commit, and	
reservation-mode in Subnet6. Please report any odd behavior that you
notice. (#724)

8. **Improvements in Option 43 processing**. Kea code for handling
option 43 and its suboptions has been improved, in particular with
regards to suboptions 0 and 255. This fixes a compatibility problem with
Cisco Meraki routers, but may also improve interoperability with other
devices that use option 43. (#950)

9. **Fix in the --with-gtest option**. The configure script is now able
to detect the libgtest.a properly. Thank you to Niclas Rozenvik for
reporting the issue and proposing a fix! (#1080)

## Changes to Release Model
The Kea project has been in development for several years now, and it
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,
including some new powerful, but difficult-to-implement, features. As a
result, we decided to change the release cycle. Starting from 1.6.0,
there are two series of releases: stable and development.

Stable releases are what you would expect: stable, released
infrequently, without new features or significant changes, very
well-tested. Those can be identified by the middle version number being
even. The current stable release is 1.6.1. If we discover important bugs
that require fixing, we may release 1.6.2, 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.

Our team continues development of new features. In particular, we're
tackling the difficult problem of being able to use all available CPU
cores simultaneously. The multi-threading implementation is a complex
task and it is unknown how long it will take before the solution is
stable and ready for a production environment. At the same time, we
continue to receive a stream of requests for small features and bug
fixes. We don't want to force users to wait half a year or more for the
fixes and features that are already done. Therefore, we have decided to
start issuing development releases on a monthly basis. Those are
slightly less well-tested and may have features that are not complete.
It is possible that one of the next releases will provide a
configuration knob to specify the number of threads in multi-threading,
but the actual code won't be extended yet to spawn those threads.

The development releases can be easily identified by the middle version
number being odd: for example, 1.7.4 is a development release. In
February 2020 we will release 1.7.5, 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/v1/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 fully 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 hook 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 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.3).

```
1714.	[build]		razvan
	Bumped up library version numbers for Kea 1.7.4 release.
	(Gitlab #1101)

1713.	[bug]*		tmark
	Code added under #35 to permit scoping of DDNS behavioral parameters
	was refactored to improve performance.
	(Gitlab #981)

1712.	[bug]		tmark
	Corrected an issue in the MySQL CB hook library which could
	cause subnet and shared-network options, properly added to
	the CB database, to be discarded when fetched from the backend.
	(Gitlab #1093)

1711.	[func]		razvan
	Prepared MySqlHostMgr to be used with multi-threading by using a
	connection pool with thread context.
	(Gitlab #1073)

1710.	[bug]		fdupont
	The code that handles default parameters and parameters
	inheritance, such as applying global values to subnet level,
	has been updated slightly. Although unlikely, there is small
	possibility this may affect boot-file-name, client-class,
	interface, match-client-id, authoritative, next-server,
	reservation-mode, and server-hostname values in Subnet4 and
	client-class, interface, interface-id, rapid-commit, and
	reservation-mode in Subnet6.
	(Gitlab #724)

1709.	[func]		fdupont
	MySQL Configuration Backend now allows for storing DDNS related
	configuration in the database.
	(Gitlab #946)

1708.	[doc]		tomek
	Clarified the relationship between comments and user context.
	(Gitlab #1079)

1707.	[func]		marcin
	High Availability hooks library supports controlled maintenance
	of the servers. The new ha-maintenance-start command puts one
	of the servers in the partner-in-maintenance state and causes
	this server to take over the entire DHCP traffic directed to the
	HA service. The second server in the in-maintenance state can be
	safely shutdown for the maintenance. This new mechanism solves
	the problem present in earlier versions of Kea when the
	administrator had to rely on the failover mechanism to promote
	one of the servers to handle the DHCP traffic while the other
	server was down.
	(Gitlab #1024)

1706.	[bug]		fdupont
	Fixed BOOTP hook. It now properly handles BOOTP packets and sends
	valid responses.
	(Gitlab #1064)

1705.	[bug]		fdupont
	Modified option 43 parsing to interpret sub-option codes 0 and 255
	as PAD and END when no sub-option with these codes are defined.
	This adds control of illegal but common use of these reserved
	code points in option 43.
	(Gitlab #950)

1704.	[func]		fdupont
	Prepared memfile lease manager to be used with multi-threading.
	(Gitlab #894)

1703.	[bug]		niclas rozenvik
	A fix in the --with-gtest option. It is now able to detect the
	libgtest.a. Thank you to Niclas Rozenvik for reporting the issue
	and proposing a fix!
	(Gitlab #1080)

1702.	[func]		razvan
	Update and delete operations on database back-ends use lease old
	expire value (internal storage) to detect concurrent actions on
	the same lease.
	(Gitlab #1040)

1701.	[func]		razvan
	Initialize all option definitions at program startup instead of
	using lazy initialization to make access thread safe and lock-less.
	(Gitlab #889)

1700.	[func]		godfryd
	Enabled checking Kea merge request in GitLab CI by Danger tool
	(see https://danger.systems/guides/dangerfile.html).
	(Gitlab #672)
```

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